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)
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)
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)