예제 #1
0
    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": ''})
예제 #2
0
    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": ''})
예제 #3
0
 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)
예제 #4
0
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()
예제 #5
0
 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))
예제 #6
0
 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))
예제 #7
0
    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))
예제 #8
0
 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")
예제 #9
0
    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)
예제 #10
0
    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))
예제 #11
0
    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))
예제 #12
0
    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)
예제 #13
0
    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)
예제 #14
0
    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)
예제 #15
0
    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)
예제 #16
0
    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'])
예제 #17
0
    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'])
예제 #18
0
 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)
예제 #19
0
 def test_workbook_without_namespaces(self):
     parser.get_workbook(SIMPLE_WORKBOOK)
예제 #20
0
    def test_triggers(self):
        self.workbook = parser.get_workbook(self.doc)

        self.assertEqual(len(self.workbook.get_triggers()), 1)
예제 #21
0
 def setUp(self):
     super(WorkflowTest, self).setUp()
     self.parser = parser.get_workbook(base.get_resource("test_rest.yaml"))
예제 #22
0
 def test_triggers(self):
     self.workbook = parser.get_workbook(self.doc)
     triggers = self.workbook.get_triggers()
     self.assertEqual(len(triggers), 1)
예제 #23
0
 def _get_workbook(cls, workbook_name):
     wb = db_api.workbook_get(workbook_name)
     return parser.get_workbook(wb["definition"])
예제 #24
0
    def test_triggers(self):
        wb = parser.get_workbook(self.doc)

        self.assertEqual(len(wb.get_triggers()), 1)
예제 #25
0
 def _get_workbook(cls, workbook_name):
     wb = db_api.workbook_get(workbook_name)
     return parser.get_workbook(wb["definition"])
예제 #26
0
 def setUp(self):
     super(WorkflowTest, self).setUp()
     self.parser = parser.get_workbook(base.get_resource("test_rest.yaml"))