Esempio n. 1
0
def validate_input(definition, input, spec=None):
    input_param_names = copy.copy((input or {}).keys())
    missing_param_names = []

    spec_input = (spec.get_input() if spec else
                  utils.get_input_dict_from_input_string(definition.input))

    for p_name, p_value in six.iteritems(spec_input):
        if p_value is utils.NotDefined and p_name not in input_param_names:
            missing_param_names.append(p_name)
        if p_name in input_param_names:
            input_param_names.remove(p_name)

    if missing_param_names or input_param_names:
        msg = 'Invalid input [name=%s, class=%s'
        msg_props = [definition.name, spec.__class__.__name__]

        if missing_param_names:
            msg += ', missing=%s'
            msg_props.append(missing_param_names)

        if input_param_names:
            msg += ', unexpected=%s'
            msg_props.append(input_param_names)

        msg += ']'

        raise exc.InputException(msg % tuple(msg_props))
    else:
        utils.merge_dicts(input, spec_input, overwrite=False)
Esempio n. 2
0
def validate_input(definition, input, spec=None):
    input_param_names = copy.copy((input or {}).keys())
    missing_param_names = []

    spec_input = (spec.get_input() if spec else
                  utils.get_input_dict_from_input_string(definition.input))

    for p_name, p_value in six.iteritems(spec_input):
        if p_value is utils.NotDefined and p_name not in input_param_names:
            missing_param_names.append(p_name)
        if p_name in input_param_names:
            input_param_names.remove(p_name)

    if missing_param_names or input_param_names:
        msg = 'Invalid input [name=%s, class=%s'
        msg_props = [definition.name, spec.__class__.__name__]

        if missing_param_names:
            msg += ', missing=%s'
            msg_props.append(missing_param_names)

        if input_param_names:
            msg += ', unexpected=%s'
            msg_props.append(input_param_names)

        msg += ']'

        raise exc.InputException(
            msg % tuple(msg_props)
        )
    else:
        utils.merge_dicts(input, spec_input, overwrite=False)
Esempio n. 3
0
    def test_get_input_dict_from_input_string(self):
        input_string = 'param1, param2=2, param3="var3"'
        input_dict = utils.get_input_dict_from_input_string(input_string)

        self.assertIn('param1', input_dict)
        self.assertIn('param2', input_dict)
        self.assertIn('param3', input_dict)
        self.assertEqual(2, input_dict.get('param2'))
        self.assertEqual('var3', input_dict.get('param3'))
        self.assertIs(input_dict.get('param1'), utils.NotDefined)
Esempio n. 4
0
    def test_get_input_dict_from_input_string(self):
        input_string = 'param1, param2=2, param3="var3"'
        input_dict = utils.get_input_dict_from_input_string(input_string)

        self.assertIn('param1', input_dict)
        self.assertIn('param2', input_dict)
        self.assertIn('param3', input_dict)
        self.assertEqual(2, input_dict.get('param2'))
        self.assertEqual('var3', input_dict.get('param3'))
        self.assertIs(input_dict.get('param1'), utils.NotDefined)