コード例 #1
0
ファイル: base.py プロジェクト: tools-env/st2
    def _get_script_args(self, action_parameters):
        """
        :param action_parameters: Action parameters.
        :type action_parameters: ``dict``

        :return: (positional_args, named_args)
        :rtype: (``str``, ``dict``)
        """
        # Lazy import to speed up import of this module
        from st2common.util import action_db as action_utils

        # TODO: return list for positional args, command classes should escape it
        # and convert it to string

        is_script_run_as_cmd = self.runner_parameters.get(RUNNER_COMMAND, None)

        pos_args = ''
        named_args = {}

        if is_script_run_as_cmd:
            pos_args = self.runner_parameters.get(RUNNER_COMMAND, '')
            named_args = action_parameters
        else:
            pos_args, named_args = action_utils.get_args(
                action_parameters, self.action)

        return pos_args, named_args
コード例 #2
0
ファイル: base.py プロジェクト: StackStorm/st2
    def _get_script_args(self, action_parameters):
        """
        :param action_parameters: Action parameters.
        :type action_parameters: ``dict``

        :return: (positional_args, named_args)
        :rtype: (``str``, ``dict``)
        """
        # Lazy import to speed up import of this module
        from st2common.util import action_db as action_utils

        # TODO: return list for positional args, command classes should escape it
        # and convert it to string

        is_script_run_as_cmd = self.runner_parameters.get(RUNNER_COMMAND, None)

        pos_args = ''
        named_args = {}

        if is_script_run_as_cmd:
            pos_args = self.runner_parameters.get(RUNNER_COMMAND, '')
            named_args = action_parameters
        else:
            pos_args, named_args = action_utils.get_args(action_parameters, self.action)

        return pos_args, named_args
コード例 #3
0
 def test_get_args(self):
     params = {'actionstr': 'foo', 'actionint': 20, 'runnerint': 555}
     pos_args, named_args = action_db_utils.get_args(
         params, ActionDBUtilsTestCase.action_db)
     self.assertEqual(pos_args, '20 foo',
                      'Positional args not parsed correctly.')
     self.assertTrue('actionint' not in named_args)
     self.assertTrue('actionstr' not in named_args)
     self.assertEqual(named_args.get('runnerint'), 555)
コード例 #4
0
ファイル: fabricrunner.py プロジェクト: bjoernbessert/st2
 def _get_script_args(self, action_parameters):
     is_script_run_as_cmd = self.runner_parameters.get(RUNNER_COMMAND, None)
     pos_args = ''
     named_args = {}
     if is_script_run_as_cmd:
         pos_args = self.runner_parameters.get(RUNNER_COMMAND, '')
         named_args = action_parameters
     else:
         pos_args, named_args = action_utils.get_args(action_parameters, self.action)
     return pos_args, named_args
コード例 #5
0
ファイル: test_action_db_utils.py プロジェクト: ruslantum/st2
 def test_get_args(self):
     params = {
         'actionstr': 'foo',
         'actionint': 20,
         'runnerint': 555
     }
     pos_args, named_args = action_db_utils.get_args(params, ActionDBUtilsTestCase.action_db)
     self.assertEqual(pos_args, '20 foo', 'Positional args not parsed correctly.')
     self.assertTrue('actionint' not in named_args)
     self.assertTrue('actionstr' not in named_args)
     self.assertEqual(named_args.get('runnerint'), 555)
コード例 #6
0
ファイル: fabricrunner.py プロジェクト: gitter-badger/st2
 def _get_script_args(self, action_parameters):
     is_script_run_as_cmd = self.runner_parameters.get(RUNNER_COMMAND, None)
     pos_args = ''
     named_args = {}
     if is_script_run_as_cmd:
         pos_args = self.runner_parameters.get(RUNNER_COMMAND, '')
         named_args = action_parameters
     else:
         pos_args, named_args = action_utils.get_args(
             action_parameters, self.action)
     return pos_args, named_args
コード例 #7
0
ファイル: test_action_db_utils.py プロジェクト: zwunix/st2
    def test_get_args(self):
        params = {
            'actionstr': 'foo',
            'actionint': 20,
            'runnerint': 555
        }
        pos_args, named_args = action_db_utils.get_args(params, ActionDBUtilsTestCase.action_db)
        self.assertListEqual(pos_args, ['20', '', 'foo', '', '', '', ''],
                            'Positional args not parsed correctly.')
        self.assertTrue('actionint' not in named_args)
        self.assertTrue('actionstr' not in named_args)
        self.assertEqual(named_args.get('runnerint'), 555)

        # Test serialization for different positional argument types and values
        # Test all the values provided
        params = {
            'actionint': 1,
            'actionfloat': 1.5,
            'actionstr': 'string value',
            'actionbool': True,
            'actionlist': ['foo', 'bar', 'baz'],
            'actionobject': {'a': 1, 'b': '2'},
        }
        expected_pos_args = [
            '1',
            '1.5',
            'string value',
            '1',
            'foo,bar,baz',
            '{"a": 1, "b": "2"}',
            ''
        ]
        pos_args, _ = action_db_utils.get_args(params, ActionDBUtilsTestCase.action_db)
        self.assertListEqual(pos_args, expected_pos_args,
                             'Positional args not parsed / serialized correctly.')

        params = {
            'actionint': 1,
            'actionfloat': 1.5,
            'actionstr': 'string value',
            'actionbool': False,
            'actionlist': [],
            'actionobject': {'a': 1, 'b': '2'},
        }
        expected_pos_args = [
            '1',
            '1.5',
            'string value',
            '0',
            '',
            '{"a": 1, "b": "2"}',
            ''
        ]
        pos_args, _ = action_db_utils.get_args(params, ActionDBUtilsTestCase.action_db)
        self.assertListEqual(pos_args, expected_pos_args,
                             'Positional args not parsed / serialized correctly.')

        # Test none values
        params = {
            'actionint': None,
            'actionfloat': None,
            'actionstr': None,
            'actionbool': None,
            'actionlist': None,
            'actionobject': None,
        }
        expected_pos_args = [
            '',
            '',
            '',
            '',
            '',
            '',
            ''
        ]
        pos_args, _ = action_db_utils.get_args(params, ActionDBUtilsTestCase.action_db)
        self.assertListEqual(pos_args, expected_pos_args,
                             'Positional args not parsed / serialized correctly.')

        # Test unicode values
        params = {
            'actionstr': 'bar č š hello đ č p ž Ž a 💩😁',
            'actionint': 20,
            'runnerint': 555
        }
        expected_pos_args = [
            '20',
            '',
            u'bar č š hello đ č p ž Ž a 💩😁',
            '',
            '',
            '',
            ''
        ]
        pos_args, named_args = action_db_utils.get_args(params, ActionDBUtilsTestCase.action_db)
        self.assertListEqual(pos_args, expected_pos_args, 'Positional args not parsed correctly.')
        self.assertTrue('actionint' not in named_args)
        self.assertTrue('actionstr' not in named_args)
        self.assertEqual(named_args.get('runnerint'), 555)
コード例 #8
0
    def test_get_args(self):
        params = {"actionstr": "foo", "actionint": 20, "runnerint": 555}
        pos_args, named_args = action_db_utils.get_args(
            params, ActionDBUtilsTestCase.action_db)
        self.assertListEqual(
            pos_args,
            ["20", "", "foo", "", "", "", "", ""],
            "Positional args not parsed correctly.",
        )
        self.assertNotIn("actionint", named_args)
        self.assertNotIn("actionstr", named_args)
        self.assertEqual(named_args.get("runnerint"), 555)

        # Test serialization for different positional argument types and values
        # Test all the values provided
        params = {
            "actionint": 1,
            "actionfloat": 1.5,
            "actionstr": "string value",
            "actionbool": True,
            "actionarray": ["foo", "bar", "baz", "qux"],
            "actionlist": ["foo", "bar", "baz"],
            "actionobject": {
                "a": 1,
                "b": "2"
            },
        }
        expected_pos_args = [
            "1",
            "1.5",
            "string value",
            "1",
            "foo,bar,baz,qux",
            "foo,bar,baz",
            '{"a":1,"b":"2"}',
            "",
        ]
        pos_args, _ = action_db_utils.get_args(params,
                                               ActionDBUtilsTestCase.action_db)
        self.assertListEqual(
            pos_args,
            expected_pos_args,
            "Positional args not parsed / serialized correctly.",
        )

        params = {
            "actionint": 1,
            "actionfloat": 1.5,
            "actionstr": "string value",
            "actionbool": False,
            "actionarray": [],
            "actionlist": [],
            "actionobject": {
                "a": 1,
                "b": "2"
            },
        }
        expected_pos_args = [
            "1",
            "1.5",
            "string value",
            "0",
            "",
            "",
            '{"a":1,"b":"2"}',
            "",
        ]
        pos_args, _ = action_db_utils.get_args(params,
                                               ActionDBUtilsTestCase.action_db)
        self.assertListEqual(
            pos_args,
            expected_pos_args,
            "Positional args not parsed / serialized correctly.",
        )

        # Test none values
        params = {
            "actionint": None,
            "actionfloat": None,
            "actionstr": None,
            "actionbool": None,
            "actionarray": None,
            "actionlist": None,
            "actionobject": None,
        }
        expected_pos_args = ["", "", "", "", "", "", "", ""]
        pos_args, _ = action_db_utils.get_args(params,
                                               ActionDBUtilsTestCase.action_db)
        self.assertListEqual(
            pos_args,
            expected_pos_args,
            "Positional args not parsed / serialized correctly.",
        )

        # Test unicode values
        params = {
            "actionstr": "bar č š hello đ č p ž Ž a 💩😁",
            "actionint": 20,
            "runnerint": 555,
        }
        expected_pos_args = [
            "20",
            "",
            "bar č š hello đ č p ž Ž a 💩😁",
            "",
            "",
            "",
            "",
            "",
        ]
        pos_args, named_args = action_db_utils.get_args(
            params, ActionDBUtilsTestCase.action_db)
        self.assertListEqual(pos_args, expected_pos_args,
                             "Positional args not parsed correctly.")

        # Test arrays and lists with values of different types
        params = {
            "actionarray": [None, False, 1, 4.2e1, "1e3", "foo"],
            "actionlist": [None, False, 1, 73e-2, "1e2", "bar"],
        }
        expected_pos_args = [
            "",
            "",
            "",
            "",
            "None,False,1,42.0,1e3,foo",
            "None,False,1,0.73,1e2,bar",
            "",
            "",
        ]
        pos_args, _ = action_db_utils.get_args(params,
                                               ActionDBUtilsTestCase.action_db)
        self.assertListEqual(
            pos_args,
            expected_pos_args,
            "Positional args not parsed / serialized correctly.",
        )

        self.assertNotIn("actionint", named_args)
        self.assertNotIn("actionstr", named_args)
        self.assertEqual(named_args.get("runnerint"), 555)