def refresh(self, system_id, consumer_key, token_key, token_secret):
"""RefreshRackControllerInfo()
Implementation of
:py:class:`~provisioningserver.rpc.cluster.RefreshRackControllerInfo`.
"""
def _refresh():
with ClusterConfiguration.open() as config:
return deferToThread(
refresh, system_id, consumer_key, token_key,
token_secret, config.maas_url)
lock = NamedLock('refresh')
try:
lock.acquire()
except lock.NotAvailable:
# Refresh is already running, don't do anything
raise exceptions.RefreshAlreadyInProgress()
else:
# Start gathering node results (lshw, lsblk, etc) but don't wait.
maybeDeferred(_refresh).addBoth(callOut, lock.release).addErrback(
log.err, 'Failed to refresh the rack controller.')
return deferToThread(get_sys_info)
评论列表
文章目录