def _execute_and_cancel_execution(self, workflow_id, force=False, wait_for_termination=True, is_wait_for_asleep_node=True): dsl_path = resource('dsl/sleep_workflows.yaml') _id = uuid.uuid1() blueprint_id = 'blueprint_{0}'.format(_id) deployment_id = 'deployment_{0}'.format(_id) self.client.blueprints.upload(dsl_path, blueprint_id) self.client.deployments.create(blueprint_id, deployment_id) do_retries(verify_workers_installation_complete, 30, deployment_id=deployment_id) execution = self.client.deployments.execute( deployment_id, workflow_id) node_inst_id = self.client.node_instances.list(deployment_id)[0].id if is_wait_for_asleep_node: for retry in range(30): if self.client.node_instances.get( node_inst_id).state == 'asleep': break time.sleep(1) else: raise RuntimeError("Execution was expected to go" " into 'sleeping' status") execution = self.client.executions.cancel(execution.id, force) expected_status = Execution.FORCE_CANCELLING if force else \ Execution.CANCELLING self.assertEquals(expected_status, execution.status) if wait_for_termination: wait_for_execution_to_end(execution) execution = self.client.executions.get(execution.id) return execution
def test_cancel_execution_and_then_force_cancel(self): execution = self._execute_and_cancel_execution('sleep', False, False) # cancel didn't work (unsupported) - use force-cancel instead execution = self.client.executions.cancel(execution.id, True) self.assertEquals(Execution.FORCE_CANCELLING, execution.status) wait_for_execution_to_end(execution) execution = self.client.executions.get(execution.id) self._assert_execution_cancelled(execution)
def test_cancel_execution_and_then_force_cancel(self): execution = self._execute_and_cancel_execution( 'sleep', False, False) # cancel didn't work (unsupported) - use force-cancel instead execution = self.client.executions.cancel(execution.id, True) self.assertEquals(Execution.FORCE_CANCELLING, execution.status) wait_for_execution_to_end(execution) execution = self.client.executions.get(execution.id) self._assert_execution_cancelled(execution)
def test_execution_parameters(self): dsl_path = resource('dsl/workflow_parameters.yaml') _id = uuid.uuid1() blueprint_id = 'blueprint_{0}'.format(_id) deployment_id = 'deployment_{0}'.format(_id) self.client.blueprints.upload(dsl_path, blueprint_id) self.client.deployments.create(blueprint_id, deployment_id) do_retries(verify_deployment_environment_creation_complete, 30, deployment_id=deployment_id) execution_parameters = { 'operation': 'test_interface.operation', 'properties': { 'key': 'different-key', 'value': 'different-value' }, 'custom-parameter': "doesn't matter" } execution = self.client.executions.start( deployment_id, 'another_execute_operation', parameters=execution_parameters, allow_custom_parameters=True) wait_for_execution_to_end(execution) from plugins.testmockoperations.tasks import \ get_mock_operation_invocations invocations = send_task(get_mock_operation_invocations).get(timeout=10) self.assertEqual(1, len(invocations)) self.assertDictEqual(invocations[0], {'different-key': 'different-value'}) # checking for execution parameters - expecting there to be a merge # with overrides with workflow parameters. expected_params = { 'node_id': 'test_node', 'operation': 'test_interface.operation', 'properties': { 'key': 'different-key', 'value': 'different-value' }, 'custom-parameter': "doesn't matter" } self.assertEqual(expected_params, execution.parameters)
def test_workflow_parameters_pass_from_blueprint(self): dsl_path = resource('dsl/workflow_parameters.yaml') _id = uuid.uuid1() blueprint_id = 'blueprint_{0}'.format(_id) deployment_id = 'deployment_{0}'.format(_id) self.client.blueprints.upload(dsl_path, blueprint_id) self.client.deployments.create(blueprint_id, deployment_id) do_retries(verify_workers_installation_complete, 30, deployment_id=deployment_id) execution = self.client.deployments.execute(deployment_id, 'execute_operation') wait_for_execution_to_end(execution) from plugins.testmockoperations.tasks import \ get_mock_operation_invocations invocations = send_task(get_mock_operation_invocations).get(timeout=10) self.assertEqual(1, len(invocations)) self.assertDictEqual(invocations[0], {'test_key': 'test_value'})
def test_execution_parameters(self): dsl_path = resource('dsl/workflow_parameters.yaml') _id = uuid.uuid1() blueprint_id = 'blueprint_{0}'.format(_id) deployment_id = 'deployment_{0}'.format(_id) self.client.blueprints.upload(dsl_path, blueprint_id) self.client.deployments.create(blueprint_id, deployment_id) do_retries(verify_workers_installation_complete, 30, deployment_id=deployment_id) execution_parameters = { 'operation': 'test_interface.operation', 'properties': { 'key': 'different-key', 'value': 'different-value' }, 'custom-parameter': "doesn't matter" } execution = self.client.deployments.execute( deployment_id, 'another_execute_operation', parameters=execution_parameters, allow_custom_parameters=True) wait_for_execution_to_end(execution) from plugins.testmockoperations.tasks import \ get_mock_operation_invocations invocations = send_task(get_mock_operation_invocations).get(timeout=10) self.assertEqual(1, len(invocations)) self.assertDictEqual(invocations[0], {'different-key': 'different-value'}) # checking for execution parameters - expecting there to be a merge # with overrides with workflow parameters. expected_params = { 'node_id': 'test_node', 'operation': 'test_interface.operation', 'properties': { 'key': 'different-key', 'value': 'different-value' }, 'custom-parameter': "doesn't matter" } self.assertEqual(expected_params, execution.parameters)
def test_workflow_parameters_pass_from_blueprint(self): dsl_path = resource('dsl/workflow_parameters.yaml') _id = uuid.uuid1() blueprint_id = 'blueprint_{0}'.format(_id) deployment_id = 'deployment_{0}'.format(_id) self.client.blueprints.upload(dsl_path, blueprint_id) self.client.deployments.create(blueprint_id, deployment_id) do_retries(verify_deployment_environment_creation_complete, 30, deployment_id=deployment_id) execution = self.client.executions.start(deployment_id, 'execute_operation') wait_for_execution_to_end(execution) from plugins.testmockoperations.tasks import \ get_mock_operation_invocations invocations = send_task(get_mock_operation_invocations).get(timeout=10) self.assertEqual(1, len(invocations)) self.assertDictEqual(invocations[0], {'test_key': 'test_value'})
def _execute_and_cancel_execution(self, workflow_id, force=False, wait_for_termination=True, is_wait_for_asleep_node=True): dsl_path = resource('dsl/sleep_workflows.yaml') _id = uuid.uuid1() blueprint_id = 'blueprint_{0}'.format(_id) deployment_id = 'deployment_{0}'.format(_id) self.client.blueprints.upload(dsl_path, blueprint_id) self.client.deployments.create(blueprint_id, deployment_id) do_retries(verify_deployment_environment_creation_complete, 30, deployment_id=deployment_id) execution = self.client.executions.start(deployment_id, workflow_id) node_inst_id = self.client.node_instances.list(deployment_id)[0].id if is_wait_for_asleep_node: for retry in range(30): if self.client.node_instances.get( node_inst_id).state == 'asleep': break time.sleep(1) else: raise RuntimeError("Execution was expected to go" " into 'sleeping' status") execution = self.client.executions.cancel(execution.id, force) expected_status = Execution.FORCE_CANCELLING if force else \ Execution.CANCELLING self.assertEquals(expected_status, execution.status) if wait_for_termination: wait_for_execution_to_end(execution) execution = self.client.executions.get(execution.id) return execution
def _execute(self, workflow): execution = self.client.deployments.execute(DEPLOYMENT_ID, workflow) wait_for_execution_to_end(execution) time.sleep(3) # wait for execution status to update in elasticsearch
def _execute(self, workflow): execution = self.client.executions.start(DEPLOYMENT_ID, workflow) wait_for_execution_to_end(execution) time.sleep(3) # wait for execution status to update in elasticsearch