Fix validation error for parameter group

Fix bug introduced by change
I2b1b096b314b52b2a51d09c47c46b902e6647c59

Change-Id: I9cda70f60c3c7651e433f9464ea5926d64659721
Closes-Bug: #1465110
This commit is contained in:
Rabi Mishra 2015-06-30 11:32:50 +05:30
parent 5ed6f96858
commit bb15fcc3be
2 changed files with 96 additions and 6 deletions

View File

@ -57,14 +57,14 @@ class ParameterGroups(object):
if parameters is None:
raise exception.StackValidationFailed(
error=_('Parameter Groups error'),
path=[PARAMETER_GROUPS, group.get('label')],
path=[PARAMETER_GROUPS, group.get('label', '')],
message=_('The %s must be provided for '
'each parameter group.') % PARAMETERS)
if not isinstance(parameters, list):
raise exception.StackValidationFailed(
error=_('Parameter Groups error'),
path=[PARAMETER_GROUPS, group.get('label')],
path=[PARAMETER_GROUPS, group.get('label', '')],
message=_('The %s of parameter group '
'should be a list.') % PARAMETERS)
@ -73,7 +73,7 @@ class ParameterGroups(object):
if param in grouped_parameters:
raise exception.StackValidationFailed(
error=_('Parameter Groups error'),
path=[PARAMETER_GROUPS, group.get('label')],
path=[PARAMETER_GROUPS, group.get('label', '')],
message=_(
'The %s parameter must be assigned to one '
'parameter group only.') % param)
@ -84,7 +84,7 @@ class ParameterGroups(object):
if param not in self.parameter_names:
raise exception.StackValidationFailed(
error=_('Parameter Groups error'),
path=[PARAMETER_GROUPS, group.get('label')],
path=[PARAMETER_GROUPS, group.get('label', '')],
message=_(
'The grouped parameter %s does not reference '
'a valid parameter.') % param)

View File

@ -773,6 +773,58 @@ resources:
type: OS::Nova::Server
'''
test_template_parameters_error_no_label = '''
heat_template_version: 2013-05-23
description: >
Hello world HOT template that just defines a single compute instance.
Contains just base features to verify base HOT support.
parameter_groups:
- parameters:
key_name: heat_key
resources:
server:
type: OS::Nova::Server
'''
test_template_parameters_duplicate_no_label = '''
heat_template_version: 2013-05-23
description: >
Hello world HOT template that just defines a single compute instance.
Contains just base features to verify base HOT support.
parameters:
key_name:
type: string
description: Name of an existing key pair to use for the instance
default: heat_key
parameter_groups:
- parameters:
- key_name
- parameters:
- key_name
resources:
server:
type: OS::Nova::Server
'''
test_template_invalid_parameter_no_label = '''
heat_template_version: 2013-05-23
description: >
Hello world HOT template that just defines a single compute instance.
Contains just base features to verify base HOT support.
parameter_groups:
- parameters:
- key_name
resources:
server:
type: OS::Nova::Server
'''
test_template_allowed_integers = '''
heat_template_version: 2013-05-23
@ -851,9 +903,9 @@ outputs:
'''
class validateTest(common.HeatTestCase):
class ValidateTest(common.HeatTestCase):
def setUp(self):
super(validateTest, self).setUp()
super(ValidateTest, self).setUp()
resources.initialise()
self.fc = fakes_nova.FakeClient()
self.gc = fakes_nova.FakeClient()
@ -1413,6 +1465,19 @@ class validateTest(common.HeatTestCase):
'assigned to one parameter group only.'),
six.text_type(exc))
def test_validate_duplicate_parameters_no_label(self):
t = template_format.parse(test_template_parameters_duplicate_no_label)
template = hot_tmpl.HOTemplate20130523(t)
stack = parser.Stack(self.ctx, 'test_stack', template)
exc = self.assertRaises(exception.StackValidationFailed,
stack.validate)
self.assertEqual(_('Parameter Groups error: '
'parameter_groups.: '
'The key_name parameter must be '
'assigned to one parameter group only.'),
six.text_type(exc))
def test_validate_invalid_parameter_in_group(self):
t = template_format.parse(test_template_invalid_parameter_name)
template = hot_tmpl.HOTemplate20130523(t,
@ -1431,6 +1496,20 @@ class validateTest(common.HeatTestCase):
'reference a valid parameter.'),
six.text_type(exc))
def test_validate_invalid_parameter_no_label(self):
t = template_format.parse(test_template_invalid_parameter_no_label)
template = hot_tmpl.HOTemplate20130523(t)
stack = parser.Stack(self.ctx, 'test_stack', template)
exc = self.assertRaises(exception.StackValidationFailed,
stack.validate)
self.assertEqual(_('Parameter Groups error: '
'parameter_groups.: The grouped '
'parameter key_name does not '
'reference a valid parameter.'),
six.text_type(exc))
def test_validate_no_parameters_in_group(self):
t = template_format.parse(test_template_no_parameters)
template = hot_tmpl.HOTemplate20130523(t)
@ -1465,6 +1544,17 @@ class validateTest(common.HeatTestCase):
'The parameters of parameter group should be '
'a list.'), six.text_type(exc))
def test_validate_parameters_error_no_label(self):
t = template_format.parse(test_template_parameters_error_no_label)
template = hot_tmpl.HOTemplate20130523(t)
stack = parser.Stack(self.ctx, 'test_stack', template)
exc = self.assertRaises(exception.StackValidationFailed,
stack.validate)
self.assertEqual(_('Parameter Groups error: parameter_groups.: '
'The parameters of parameter group should be '
'a list.'), six.text_type(exc))
def test_validate_allowed_values_integer(self):
t = template_format.parse(test_template_allowed_integers)
template = tmpl.Template(t,