예제 #1
0
 def test_get_action_class(self):
     self.assertTrue(
         issubclass(a_m.get_action_class("std.echo"), std.EchoAction))
     self.assertTrue(
         issubclass(a_m.get_action_class("std.http"), std.HTTPAction))
     self.assertTrue(
         issubclass(a_m.get_action_class("std.mistral_http"),
                    std.MistralHTTPAction))
     self.assertTrue(
         issubclass(a_m.get_action_class("std.email"), std.SendEmailAction))
     self.assertTrue(
         issubclass(a_m.get_action_class("std.javascript"),
                    std.JavaScriptAction))
예제 #2
0
    def start_action(self,
                     action_name,
                     action_input,
                     description=None,
                     **params):
        with db_api.transaction():
            action_def = action_handler.resolve_definition(action_name)
            resolved_action_input = action_handler.get_action_input(
                action_name, action_input)
            action = a_m.get_action_class(
                action_def.name)(**resolved_action_input)

            # If we see action is asynchronous, then we enforce 'save_result'.
            if params.get('save_result') or not action.is_sync():
                action_ex = action_handler.create_action_execution(
                    action_def, resolved_action_input, description=description)

                action_handler.run_action(action_def, resolved_action_input,
                                          action_ex.id, params.get('target'))

                return action_ex.get_clone()
            else:
                output = action_handler.run_action(action_def,
                                                   resolved_action_input,
                                                   target=params.get('target'),
                                                   async=False)

                return db_models.ActionExecution(name=action_name,
                                                 description=description,
                                                 input=action_input,
                                                 output=output)
예제 #3
0
    def is_sync(self, input_dict):
        try:
            prepared_input_dict = self._prepare_input(input_dict)

            a = a_m.get_action_class(
                self.action_def.name)(**prepared_input_dict)

            return a.is_sync()
        except BaseException as e:
            raise exc.InputException(str(e))
예제 #4
0
 def test_get_action_class(self):
     self.assertTrue(
         issubclass(a_m.get_action_class("std.echo"), std.EchoAction)
     )
     self.assertTrue(
         issubclass(a_m.get_action_class("std.http"), std.HTTPAction)
     )
     self.assertTrue(
         issubclass(
             a_m.get_action_class("std.mistral_http"),
             std.MistralHTTPAction
         )
     )
     self.assertTrue(
         issubclass(a_m.get_action_class("std.email"), std.SendEmailAction)
     )
     self.assertTrue(
         issubclass(
             a_m.get_action_class("std.javascript"),
             std.JavaScriptAction
         )
     )
예제 #5
0
    def start_action(self, action_name, action_input,
                     description=None, **params):
        with db_api.transaction():
            action_def = action_handler.resolve_definition(action_name)
            resolved_action_input = action_handler.get_action_input(
                action_name,
                action_input
            )
            action = a_m.get_action_class(action_def.name)(
                **resolved_action_input
            )

            # If we see action is asynchronous, then we enforce 'save_result'.
            if params.get('save_result') or not action.is_sync():
                action_ex = action_handler.create_action_execution(
                    action_def,
                    resolved_action_input,
                    description=description
                )

                action_handler.run_action(
                    action_def,
                    resolved_action_input,
                    action_ex.id,
                    params.get('target')
                )

                return action_ex.get_clone()
            else:
                output = action_handler.run_action(
                    action_def,
                    resolved_action_input,
                    target=params.get('target'),
                    async=False
                )

                return db_models.ActionExecution(
                    name=action_name,
                    description=description,
                    input=action_input,
                    output=output
                )
예제 #6
0
    def is_sync(self, input_dict):
        input_dict = self._prepare_input(input_dict)

        a = a_m.get_action_class(self.action_def.name)(**input_dict)

        return a.is_sync()
예제 #7
0
    def is_sync(self, input_dict):
        input_dict = self._prepare_input(input_dict)

        a = a_m.get_action_class(self.action_def.name)(**input_dict)

        return a.is_sync()