diff --git a/src/bin/shipyard_airflow/shipyard_airflow/common/deployment_group/deployment_group_manager.py b/src/bin/shipyard_airflow/shipyard_airflow/common/deployment_group/deployment_group_manager.py index 072d5608..498d005f 100644 --- a/src/bin/shipyard_airflow/shipyard_airflow/common/deployment_group/deployment_group_manager.py +++ b/src/bin/shipyard_airflow/shipyard_airflow/common/deployment_group/deployment_group_manager.py @@ -25,6 +25,7 @@ from .deployment_group import DeploymentGroup from .deployment_group import Stage from .errors import DeploymentGroupCycleError from .errors import DeploymentGroupStageError +from .errors import DeploymentGroupSuccessProcessingError from .errors import UnknownDeploymentGroupError from .errors import UnknownNodeError @@ -122,6 +123,12 @@ class DeploymentGroupManager: LOG.info("Group %s has met its success criteria and is " "now set to stage %s", group_name, stage) return True + # Any other cases are invalid. + raise DeploymentGroupSuccessProcessingError( + "Group {} has no failures, but is in an invalid state {}".format( + group_name, stage + ) + ) def report_group_summary(self): """Reports the status of all groups handled by this deployment""" diff --git a/src/bin/shipyard_airflow/shipyard_airflow/common/deployment_group/errors.py b/src/bin/shipyard_airflow/shipyard_airflow/common/deployment_group/errors.py index 4a3a65d7..1e6d3c27 100644 --- a/src/bin/shipyard_airflow/shipyard_airflow/common/deployment_group/errors.py +++ b/src/bin/shipyard_airflow/shipyard_airflow/common/deployment_group/errors.py @@ -56,6 +56,15 @@ class DeploymentGroupStageError(Exception): pass +class DeploymentGroupSuccessProcessingError(Exception): + """DeploymentGroupSuccessProcessingError + + Raised when success processing has been provided with an invalid scenario + to validate + """ + pass + + class UnknownDeploymentGroupError(Exception): """UnknownDeploymentGroupError diff --git a/src/bin/shipyard_airflow/shipyard_airflow/control/validators/validate_deployment_configuration.py b/src/bin/shipyard_airflow/shipyard_airflow/control/validators/validate_deployment_configuration.py index 5d394548..7ab286ef 100644 --- a/src/bin/shipyard_airflow/shipyard_airflow/control/validators/validate_deployment_configuration.py +++ b/src/bin/shipyard_airflow/shipyard_airflow/control/validators/validate_deployment_configuration.py @@ -48,7 +48,7 @@ class ValidateDeploymentConfiguration(DocumentValidator): error=False, level="Info", message=("A deployment strategy document was not specified in " - "the deployment configuration. Beacuse of this, the " + "the deployment configuration. Because of this, the " "strategy used will be all-at-once.") )) LOG.info("No deployment strategy document specified, " diff --git a/src/bin/shipyard_airflow/shipyard_airflow/plugins/drydock_base_operator.py b/src/bin/shipyard_airflow/shipyard_airflow/plugins/drydock_base_operator.py index 83556247..baf1d7d4 100644 --- a/src/bin/shipyard_airflow/shipyard_airflow/plugins/drydock_base_operator.py +++ b/src/bin/shipyard_airflow/shipyard_airflow/plugins/drydock_base_operator.py @@ -281,7 +281,6 @@ class DrydockBaseOperator(UcpBaseOperator): try: return self.drydock_client.get_task(task_id=task_id) except errors.ClientError as client_error: - # Dump logs from Drydock pods raise DrydockClientUseFailureException(client_error) def task_failure(self, _task_failure): diff --git a/src/bin/shipyard_airflow/shipyard_airflow/plugins/drydock_nodes.py b/src/bin/shipyard_airflow/shipyard_airflow/plugins/drydock_nodes.py index 4dab6610..03c1b9c8 100644 --- a/src/bin/shipyard_airflow/shipyard_airflow/plugins/drydock_nodes.py +++ b/src/bin/shipyard_airflow/shipyard_airflow/plugins/drydock_nodes.py @@ -189,7 +189,7 @@ class DrydockNodesOperator(DrydockBaseOperator): """Execute the Drydock task requested :param task_name: 'prepare_nodes', 'deploy_nodes' - ;param interval: The time between checking status on the task + :param interval: The time between checking status on the task :param timeout: The total time allowed for the task Wraps the query_task method in the base class, capturing