Merge "Improve deploy state change logging"
This commit is contained in:
@@ -71,19 +71,22 @@ class DeployHostState(object):
|
||||
|
||||
def transform(self, target_state: DEPLOY_HOST_STATES):
|
||||
db_api = get_instance()
|
||||
cur_state = self.get_deploy_host_state()
|
||||
db_api.begin_update()
|
||||
try:
|
||||
if self.check_transition(target_state):
|
||||
db_api.update_deploy_host(self._hostname, target_state)
|
||||
LOG.info("Deploy host state for host %s updated to: %s" % (self._hostname, target_state.value))
|
||||
for callback in DeployHostState._callbacks:
|
||||
callback(self._hostname, target_state)
|
||||
msg = f"[deploy state] {self._hostname} from {cur_state.value} to {target_state.value}."
|
||||
LOG.info(msg)
|
||||
else:
|
||||
msg = "Host can not transform to %s from current state" % target_state.value
|
||||
msg = f"{self._hostname} can not transform from {cur_state.value} to {target_state.value}."
|
||||
raise InvalidOperation(msg)
|
||||
finally:
|
||||
db_api.end_update()
|
||||
|
||||
for callback in DeployHostState._callbacks:
|
||||
callback(self._hostname, target_state)
|
||||
|
||||
def deploy_started(self):
|
||||
state = self.get_deploy_host_state()
|
||||
if state in [DEPLOY_HOST_STATES.PENDING, DEPLOY_HOST_STATES.FAILED]:
|
||||
|
@@ -142,12 +142,10 @@ class DeployState(object):
|
||||
if target_state == cur_state and cur_state in deploy_reentrant_states:
|
||||
return True
|
||||
|
||||
# TODO(bqian) reverse lookup the operation that is not permitted, as feedback
|
||||
msg = f"Deploy state transform not permitted from {str(cur_state)} to {str(target_state)}"
|
||||
LOG.info(msg)
|
||||
return False
|
||||
|
||||
def transform(self, target_state: DEPLOY_STATES):
|
||||
cur_state = DeployState.get_deploy_state()
|
||||
db_api = get_instance()
|
||||
db_api.begin_update()
|
||||
try:
|
||||
@@ -155,14 +153,17 @@ class DeployState(object):
|
||||
# None means not existing or deleting
|
||||
if target_state is not None:
|
||||
db_api.update_deploy(state=target_state)
|
||||
LOG.info("Deploy state updated to: %s" % target_state.value)
|
||||
msg = f"[deploy state] from {cur_state.value} to {target_state.value}"
|
||||
LOG.info(msg)
|
||||
else:
|
||||
LOG.info("[deploy state] Deploy is deleted")
|
||||
else:
|
||||
# TODO(bqian) check the current state, and provide guidence on what is
|
||||
# the possible next operation
|
||||
if target_state is None:
|
||||
msg = "Deployment can not deleted in current state."
|
||||
msg = f"Can not delete deploy as it is {cur_state.value}."
|
||||
else:
|
||||
msg = "Host can not transform to %s from current state" % target_state.value
|
||||
msg = f"Can not transform deploy to {target_state.value} from {cur_state.value}"
|
||||
raise InvalidOperation(msg)
|
||||
finally:
|
||||
db_api.end_update()
|
||||
@@ -179,7 +180,7 @@ class DeployState(object):
|
||||
if isinstance(to_release, SWRelease):
|
||||
to_release = to_release.sw_release
|
||||
|
||||
msg = f"Start deploy {to_release}, current sw {from_release}"
|
||||
msg = f"[deploy state] deploy ({from_release} to {to_release}) started"
|
||||
LOG.info(msg)
|
||||
db_api_instance = get_instance()
|
||||
db_api_instance.create_deploy(from_release, to_release, feed_repo, commit_id, reboot_required)
|
||||
|
@@ -3468,6 +3468,7 @@ class PatchController(PatchService):
|
||||
msg_info += "Deploy deleted with success"
|
||||
self.db_api_instance.delete_deploy_host_all()
|
||||
self.db_api_instance.delete_deploy()
|
||||
LOG.info("Deploy is deleted")
|
||||
return dict(info=msg_info, warning=msg_warning, error=msg_error)
|
||||
|
||||
def _deploy_complete(self):
|
||||
@@ -3880,13 +3881,13 @@ class PatchController(PatchService):
|
||||
return dict(info=msg_info, warning=msg_warning, error=msg_error)
|
||||
|
||||
@require_deploy_state([DEPLOY_STATES.START_DONE, DEPLOY_STATES.HOST, DEPLOY_STATES.HOST_FAILED],
|
||||
"Current deployment ({state}) is not ready to deploy host")
|
||||
"Current deployment ({state.value}) is not ready to deploy host")
|
||||
def software_deploy_host_api(self, hostname, force, async_req=False):
|
||||
return self._deploy_host(hostname, force, async_req)
|
||||
|
||||
@require_deploy_state([DEPLOY_STATES.ACTIVATE_ROLLBACK_DONE,
|
||||
DEPLOY_STATES.HOST_ROLLBACK, DEPLOY_STATES.HOST_ROLLBACK_FAILED],
|
||||
"Current deployment ({state}) is not ready to rollback host")
|
||||
"Current deployment ({state.value}) is not ready to rollback host")
|
||||
def software_deploy_host_rollback_api(self, hostname, force, async_req=False):
|
||||
return self._deploy_host(hostname, force, async_req, rollback=True)
|
||||
|
||||
|
@@ -939,8 +939,7 @@ class PatchFile(object):
|
||||
|
||||
try:
|
||||
patch_sw_version = utils.get_major_release_version(
|
||||
thispatch.metadata[patch_id]["sw_version"]
|
||||
)
|
||||
thispatch.metadata[patch_id]["sw_version"])
|
||||
abs_ostree_tar_dir = package_dir[patch_sw_version]
|
||||
os.remove("%s/%s-software.tar" % (abs_ostree_tar_dir, patch_id))
|
||||
except Exception:
|
||||
|
Reference in New Issue
Block a user