def test_tasks(self): wb = parser.get_workbook(self.doc) self.assertEqual(len(wb.tasks), 6) attach_volumes = wb.tasks.get("attach-volumes") self.assertEqual(attach_volumes.get_action_namespace(), "MyRest") t_parameters = {"image_id": 1234, "flavor_id": 2} create_vm_nova = wb.tasks.get("create-vm-nova") self.assertEqual(create_vm_nova.parameters, t_parameters) attach_requires = {"create-vms": ''} self.assertEqual(attach_volumes.requires, attach_requires) subsequent = wb.tasks.get("test_subsequent") subseq_success = subsequent.get_on_success() subseq_error = subsequent.get_on_error() subseq_finish = subsequent.get_on_finish() self.assertEqual(subseq_success, {"attach-volumes": ''}) self.assertEqual(subseq_error, {"backup-vms": "$.status != 'OK'", "attach-volumes": ''}) self.assertEqual(subseq_finish, {"create-vms": ''})
def test_tasks(self): self.workbook = parser.get_workbook(self.doc) self.assertEqual(len(self.workbook.tasks), 6) attach_volumes = self.workbook.tasks.get("attach-volumes") self.assertEqual(attach_volumes.get_action_namespace(), "MyRest") t_parameters = {"image_id": 1234, "flavor_id": 2} create_vm_nova = self.workbook.tasks.get("create-vm-nova") self.assertEqual(create_vm_nova.parameters, t_parameters) attach_requires = {"create-vms": ''} self.assertEqual(attach_volumes.requires, attach_requires) subsequent = self.workbook.tasks.get("test_subsequent") subseq_success = subsequent.get_on_success() subseq_error = subsequent.get_on_error() subseq_finish = subsequent.get_on_finish() self.assertEqual(subseq_success, {"attach-volumes": ''}) self.assertEqual(subseq_error, { "backup-vms": "$.status != 'OK'", "attach-volumes": '' }) self.assertEqual(subseq_finish, {"create-vms": ''})
def test_services(self): self.workbook = parser.get_workbook(self.doc) services = self.workbook.services self.assertEqual(len(services), 2) nova_service = services.get("Nova") self.assertEqual(nova_service.type, a_t.REST_API) self.assertIn("baseUrl", nova_service.parameters)
def create_associated_triggers(db_workbook): if not db_workbook['definition']: return workbook = parser.get_workbook(db_workbook['definition']) triggers = workbook.get_triggers() # Prepare all triggers data in advance to make db transaction shorter. db_triggers = [] for e in triggers: pattern = e['parameters']['cron-pattern'] next_time = _get_next_execution_time(pattern, datetime.now()) db_triggers.append({ "name": e['name'], "pattern": pattern, "next_execution_time": next_time, "workbook_name": db_workbook['name'] }) db_api.start_tx() try: for e in db_triggers: db_api.trigger_create(e) db_api.commit_tx() finally: db_api.end_tx()
def test_load_dsl(self): self.workbook = parser.get_workbook(self.doc) self.assertEqual(self.workbook.workflow.tasks.items, self.workbook.tasks.items) self.assertEqual( self.workbook.tasks.get("create-vms").name, "create-vms") self.assertEqual(4, len(self.workbook.namespaces.get("MyRest").actions))
def test_load_dsl(self): self.workbook = parser.get_workbook(self.doc) self.assertEqual(self.workbook.workflow.tasks.items, self.workbook.tasks.items) self.assertEqual(self.workbook.tasks.get("create-vms").name, "create-vms") self.assertEqual(4, len(self.workbook.namespaces.get("MyRest").actions))
def test_namespaces(self): wb = parser.get_workbook(self.doc) self.assertEqual(len(wb.namespaces), 2) nova_namespace = wb.namespaces.get("Nova") self.assertEqual(1, len(nova_namespace.actions))
def test_load_dsl(self): self.workbook = parser.get_workbook(self.doc) self.assertEqual(self.workbook.workflow.tasks.items, self.workbook.tasks.items) self.assertEqual(self.workbook.tasks.get("create-vms").name, "create-vms") self.assertEqual(self.workbook.services.get("MyRest").type, "MISTRAL_REST_API")
def test_resolve_adhoc_action_name(self): workbook = parser.get_workbook( base.get_resource('control_flow/one_sync_task.yaml')) action_name = 'MyActions.concat' action = a_f.resolve_adhoc_action_name(workbook, action_name) self.assertEqual('std.echo', action)
def test_namespaces(self): self.workbook = parser.get_workbook(self.doc) namespaces = self.workbook.namespaces self.assertEqual(len(namespaces), 2) nova_namespace = namespaces.get("Nova") self.assertEqual(1, len(nova_namespace.actions))
def test_namespaces(self): self.workbook = parser.get_workbook(self.doc) namespaces = self.workbook.namespaces self.assertEqual(len(namespaces), 2) nova_namespace = namespaces.get("Nova") self.assertEqual(1, len(nova_namespace.actions))
def test_convert_adhoc_action_result(self): workbook = parser.get_workbook( base.get_resource('control_flow/one_sync_task.yaml')) action_name = 'MyActions.concat' result = {'output': 'Stormin Stanley'} parameters = a_f.convert_adhoc_action_result(workbook, action_name, result) self.assertEqual({'string': 'Stormin Stanley'}, parameters)
def scheduler_triggers(self, ctx): LOG.debug('Processing next Scheduler triggers.') for trigger in sched.get_next_triggers(): wb = db_api.workbook_get(trigger['workbook_name']) context.set_ctx(trusts.create_context(wb)) try: task = parser.get_workbook( wb['definition']).get_trigger_task_name(trigger['name']) self.engine.start_workflow_execution(wb['name'], task) finally: sched.set_next_execution_time(trigger) context.set_ctx(None)
def test_convert_adhoc_action_params(self): workbook = parser.get_workbook( base.get_resource('control_flow/one_sync_task.yaml')) action_name = 'MyActions.concat' params = { 'left': 'Stormin', 'right': 'Stanley' } parameters = a_f.convert_adhoc_action_params(workbook, action_name, params) self.assertEqual({'output': 'Stormin Stanley'}, parameters)
def scheduler_triggers(self, ctx): LOG.debug('Processing next Scheduler triggers.') for trigger in sched.get_next_triggers(): wb = db_api.workbook_get(trigger['workbook_name']) context.set_ctx(trusts.create_context(wb)) try: task = parser.get_workbook( wb['definition']).get_trigger_task_name(trigger['name']) self.engine.start_workflow_execution(wb['name'], task) finally: sched.set_next_execution_time(trigger) context.set_ctx(None)
def test_actions(self): self.workbook = parser.get_workbook(self.doc) actions = self.workbook.namespaces.get("MyRest").actions self.assertEqual(len(actions), 4) create_vm = actions.get("create-vm") base_params = create_vm.base_parameters self.assertEqual('std.mistral_http', create_vm.clazz) self.assertIn('method', base_params) self.assertIn('headers', base_params) self.assertEqual('$.auth_token', base_params['headers']['X-Auth-Token']) self.assertEqual('application/json', base_params['headers']['Content-Type'])
def test_actions(self): self.workbook = parser.get_workbook(self.doc) actions = self.workbook.namespaces.get("MyRest").actions self.assertEqual(len(actions), 4) create_vm = actions.get("create-vm") base_params = create_vm.base_parameters self.assertEqual('std.mistral_http', create_vm.clazz) self.assertIn('method', base_params) self.assertIn('headers', base_params) self.assertEqual('$.auth_token', base_params['headers']['X-Auth-Token']) self.assertEqual('application/json', base_params['headers']['Content-Type'])
def test_actions(self): self.workbook = parser.get_workbook(self.doc) actions = self.workbook.services.get("MyRest").actions self.assertEqual(len(actions), 4) create_vm = actions.get("create-vm") self.assertIn('method', create_vm.parameters)
def test_workbook_without_namespaces(self): parser.get_workbook(SIMPLE_WORKBOOK)
def test_triggers(self): self.workbook = parser.get_workbook(self.doc) self.assertEqual(len(self.workbook.get_triggers()), 1)
def setUp(self): super(WorkflowTest, self).setUp() self.parser = parser.get_workbook(base.get_resource("test_rest.yaml"))
def test_triggers(self): self.workbook = parser.get_workbook(self.doc) triggers = self.workbook.get_triggers() self.assertEqual(len(triggers), 1)
def _get_workbook(cls, workbook_name): wb = db_api.workbook_get(workbook_name) return parser.get_workbook(wb["definition"])
def test_triggers(self): wb = parser.get_workbook(self.doc) self.assertEqual(len(wb.get_triggers()), 1)
def _get_workbook(cls, workbook_name): wb = db_api.workbook_get(workbook_name) return parser.get_workbook(wb["definition"])
def setUp(self): super(WorkflowTest, self).setUp() self.parser = parser.get_workbook(base.get_resource("test_rest.yaml"))