Exemplo n.º 1
0
    def test_get_parameters_str_with_function_parameter(self):

        def test_func(foo, bar=None, test_func=time.sleep):
            pass

        parameters_str = i_u.get_arg_list_as_str(test_func)
        self.assertEqual("foo, bar=null", parameters_str)
Exemplo n.º 2
0
def register_action_class(name, cls, attributes=None, desc=None):
    action_manager.register_action_class(
        name,
        '%s.%s' % (cls.__module__, cls.__name__),
        attributes or {},
        input_str=i_utils.get_arg_list_as_str(cls.__init__)
    )
Exemplo n.º 3
0
    def create_actions(cls):
        mapping = get_mapping()
        method_dict = mapping[cls.action_namespace]

        action_classes = []

        for action_name, method_name in method_dict.items():
            clazz = cls.create_action_class(method_name)

            try:
                client_method = clazz.get_fake_client_method()
            except Exception as e:
                LOG.debug("Failed to get fake client method: %s" % e)
                client_method = None

            if client_method:
                arg_list = i_u.get_arg_list_as_str(client_method)
                description = i_u.get_docstring(client_method)
            else:
                arg_list = ''
                description = None

            action_classes.append(
                {
                    'class': clazz,
                    'name': "%s.%s" % (cls.action_namespace, action_name),
                    'description': description,
                    'arg_list': arg_list,
                }
            )

        return action_classes
Exemplo n.º 4
0
    def test_get_parameters_str_all_mandatory(self):
        clazz = commands.RunTask
        parameters_str = i_u.get_arg_list_as_str(clazz.__init__)

        self.assertEqual(
            'wf_ex, wf_spec, task_spec, ctx, triggered_by=null,'
            ' handles_error=false', parameters_str)
Exemplo n.º 5
0
def register_action_class(name, cls, attributes=None, desc=None):
    action_manager.register_action_class(
        name,
        '%s.%s' % (cls.__module__, cls.__name__),
        attributes or {},
        input_str=i_utils.get_arg_list_as_str(cls.__init__)
    )
Exemplo n.º 6
0
    def test_get_parameters_str_with_function_parameter(self):
        def test_func(foo, bar=None, test_func=time.sleep):
            pass

        parameters_str = i_u.get_arg_list_as_str(test_func)

        self.assertEqual("foo, bar=null", parameters_str)
Exemplo n.º 7
0
    def test_get_parameters_str_all_mandatory(self):
        clazz = commands.RunTask
        parameters_str = i_u.get_arg_list_as_str(clazz.__init__)

        self.assertEqual(
            'wf_ex, wf_spec, task_spec, ctx, triggered_by=null,'
            ' handles_error=false',
            parameters_str
        )
Exemplo n.º 8
0
    def test_get_parameters_str(self):
        action_class = std_actions.HTTPAction
        parameters_str = i_u.get_arg_list_as_str(action_class.__init__)

        http_action_params = ('url, method="GET", params=null, body=null, '
                              'headers=null, cookies=null, auth=null, '
                              'timeout=null, allow_redirects=null, '
                              'proxies=null, verify=null')

        self.assertEqual(http_action_params, parameters_str)
Exemplo n.º 9
0
    def test_get_parameters_str(self):
        action_class = std_actions.HTTPAction
        parameters_str = i_u.get_arg_list_as_str(action_class.__init__)

        http_action_params = (
            'url, method="GET", params=null, body=null, '
            'headers=null, cookies=null, auth=null, '
            'timeout=null, allow_redirects=null, '
            'proxies=null, verify=null'
        )

        self.assertEqual(http_action_params, parameters_str)
Exemplo n.º 10
0
    def test_get_parameters_str(self):
        action_class = std_actions.HTTPAction
        parameters_str = i_u.get_arg_list_as_str(action_class.__init__)

        http_action_params = (
            "url, method=GET, params=None, body=None, "
            "headers=None, cookies=None, auth=None, "
            "timeout=None, allow_redirects=None, "
            "proxies=None, verify=None"
        )

        self.assertEqual(http_action_params, parameters_str)
Exemplo n.º 11
0
    def _get_client_method(cls, client):
        method = getattr(cls, cls.client_method_name)

        # We can't use partial as it's not supported by getargspec
        @functools.wraps(method)
        def wrap(*args, **kwargs):
            return method(client, *args, **kwargs)

        arguments = inspect_utils.get_arg_list_as_str(method)
        # Remove client
        wrap.__arguments__ = arguments.split(', ', 1)[1]

        return wrap
Exemplo n.º 12
0
    def _get_client_method(cls, client):
        if cls.client_method_name != "secrets_store":
            return super(BarbicanAction, cls)._get_client_method(client)

        method = getattr(cls, cls.client_method_name)

        @functools.wraps(method)
        def wrap(*args, **kwargs):
            return method(client, *args, **kwargs)

        args = inspect_utils.get_arg_list_as_str(method)

        # Remove client.
        wrap.__arguments__ = args.split(', ', 1)[1]

        return wrap
Exemplo n.º 13
0
    def _get_client_method(cls, client):
        if cls.client_method_name != "secrets_store":
            return super(BarbicanAction, cls)._get_client_method(client)

        method = getattr(cls, cls.client_method_name)

        @functools.wraps(method)
        def wrap(*args, **kwargs):
            return method(client, *args, **kwargs)

        args = inspect_utils.get_arg_list_as_str(method)

        # Remove client.
        wrap.__arguments__ = args.split(', ', 1)[1]

        return wrap
Exemplo n.º 14
0
def _extract_actions_from_module(module):
    action_list = []
    for member in inspect.getmembers(module):
        if inspect.isclass(member[1]) and hasattr(
                member[1], '__export__') and hasattr(member[1], 'run'):
            action = {}
            cls = member[1]
            module_name = cls.__module__
            action['name'] = (ROOT_NAMESPACE +
                              module_name[module_name.index('.'):] + '.' +
                              utils.convert_to_snake_case(cls.__name__))
            action['action_class_str'] = cls.__module__ + '.' + cls.__name__
            action['attributes'] = i_utils.get_public_fields(cls)
            action['description'] = i_utils.get_docstring(cls)
            action['input_str'] = i_utils.get_arg_list_as_str(cls.__init__)
            action_list.append(action)
    return action_list
Exemplo n.º 15
0
def register_action_classes():
    mgr = extension.ExtensionManager(namespace='mistral.actions',
                                     invoke_on_load=False)
    for name in mgr.names():
        action_class_str = mgr[name].entry_point_target.replace(':', '.')
        action_class = mgr[name].plugin
        description = i_utils.get_docstring(action_class)
        input_str = i_utils.get_arg_list_as_str(action_class.__init__)

        attrs = i_utils.get_public_fields(mgr[name].plugin)

        register_action_class(name,
                              action_class_str,
                              attrs,
                              description=description,
                              input_str=input_str)

    _register_dynamic_action_classes()
Exemplo n.º 16
0
    def create_actions(cls):
        mapping = get_mapping()
        method_dict = mapping.get(cls.action_namespace, {})

        action_classes = []

        for action_name, method_name in method_dict.items():
            class_ = cls.create_action_class(method_name)

            try:
                client_method = class_.get_fake_client_method()
            except Exception:
                LOG.exception(
                    "Failed to create action: %s.%s",
                    cls.action_namespace, action_name
                )
                continue

            arg_list = i_u.get_arg_list_as_str(client_method)

            # Support specifying region for OpenStack actions.
            modules = CONF.openstack_actions.modules_support_region
            if cls.action_namespace in modules:
                arg_list = cls.prepare_action_inputs(
                    arg_list,
                    added=['action_region=""']
                )

            description = i_u.get_docstring(client_method)

            action_classes.append(
                {
                    'class': class_,
                    'name': "%s.%s" % (cls.action_namespace, action_name),
                    'description': description,
                    'arg_list': arg_list,
                }
            )

        return action_classes
Exemplo n.º 17
0
def register_action_classes():
    mgr = extension.ExtensionManager(
        namespace='mistral.actions',
        invoke_on_load=False
    )
    for name in mgr.names():
        action_class_str = mgr[name].entry_point_target.replace(':', '.')
        action_class = mgr[name].plugin
        description = i_utils.get_docstring(action_class)
        input_str = i_utils.get_arg_list_as_str(action_class.__init__)

        attrs = i_utils.get_public_fields(mgr[name].plugin)

        register_action_class(
            name,
            action_class_str,
            attrs,
            description=description,
            input_str=input_str
        )

    _register_dynamic_action_classes()
Exemplo n.º 18
0
    def create_actions(cls):
        mapping = get_mapping()
        method_dict = mapping.get(cls.action_namespace, {})

        action_classes = []

        for action_name, method_name in method_dict.items():
            class_ = cls.create_action_class(method_name)

            try:
                client_method = class_.get_fake_client_method()
            except Exception:
                LOG.exception("Failed to create action: %s.%s",
                              cls.action_namespace, action_name)
                continue

            arg_list = i_u.get_arg_list_as_str(client_method)

            # Support specifying region for OpenStack actions.
            modules = CONF.openstack_actions.modules_support_region
            if cls.action_namespace in modules:
                arg_list = cls.prepare_action_inputs(
                    arg_list, added=['action_region=""'])

            description = i_u.get_docstring(client_method)

            action_classes.append({
                'class':
                class_,
                'name':
                "%s.%s" % (cls.action_namespace, action_name),
                'description':
                description,
                'arg_list':
                arg_list,
            })

        return action_classes
Exemplo n.º 19
0
    def test_get_parameters_str_all_mandatory(self):
        action_class = std_actions.SSHAction
        parameters_str = i_u.get_arg_list_as_str(action_class.__init__)

        self.assertEqual("cmd, host, username, password", parameters_str)
Exemplo n.º 20
0
    def test_get_parameters_str_all_mandatory(self):
        action_class = std_actions.SSHAction
        parameters_str = i_u.get_arg_list_as_str(action_class.__init__)

        self.assertEqual("cmd, host, username, password", parameters_str)
Exemplo n.º 21
0
    def test_get_parameters_str_all_mandatory(self):
        clazz = commands.RunTask
        parameters_str = i_u.get_arg_list_as_str(clazz.__init__)

        self.assertEqual('wf_ex, wf_spec, task_spec, ctx', parameters_str)
Exemplo n.º 22
0
    def test_get_parameters_str_all_mandatory(self):
        clazz = commands.RunTask
        parameters_str = i_u.get_arg_list_as_str(clazz.__init__)

        self.assertEqual("wf_ex, task_spec, ctx", parameters_str)