def refresh(self):
"""Refresh the region controller."""
# XXX ltrager 2016-05-25 - MAAS doesn't have an RPC method between
# region controllers. If this method refreshes a foreign region
# controller the foreign region controller will contain the running
# region's hardware and networking information.
if self.system_id != get_maas_id():
raise NotImplementedError(
'Can only refresh the running region controller')
try:
with NamedLock('refresh'):
token = yield deferToDatabase(self._get_token_for_controller)
yield deferToDatabase(self._signal_start_of_refresh)
sys_info = yield deferToThread(get_sys_info)
yield deferToDatabase(self._process_sys_info, sys_info)
yield deferToThread(
refresh, self.system_id, token.consumer.key, token.key,
token.secret)
except NamedLock.NotAvailable:
# Refresh already running.
pass
评论列表
文章目录