Fix validation error for parameter group
Fix bug introduced by change I2b1b096b314b52b2a51d09c47c46b902e6647c59 Change-Id: I9cda70f60c3c7651e433f9464ea5926d64659721 Closes-Bug: #1465110
This commit is contained in:
parent
5ed6f96858
commit
bb15fcc3be
|
@ -57,14 +57,14 @@ class ParameterGroups(object):
|
||||||
if parameters is None:
|
if parameters is None:
|
||||||
raise exception.StackValidationFailed(
|
raise exception.StackValidationFailed(
|
||||||
error=_('Parameter Groups error'),
|
error=_('Parameter Groups error'),
|
||||||
path=[PARAMETER_GROUPS, group.get('label')],
|
path=[PARAMETER_GROUPS, group.get('label', '')],
|
||||||
message=_('The %s must be provided for '
|
message=_('The %s must be provided for '
|
||||||
'each parameter group.') % PARAMETERS)
|
'each parameter group.') % PARAMETERS)
|
||||||
|
|
||||||
if not isinstance(parameters, list):
|
if not isinstance(parameters, list):
|
||||||
raise exception.StackValidationFailed(
|
raise exception.StackValidationFailed(
|
||||||
error=_('Parameter Groups error'),
|
error=_('Parameter Groups error'),
|
||||||
path=[PARAMETER_GROUPS, group.get('label')],
|
path=[PARAMETER_GROUPS, group.get('label', '')],
|
||||||
message=_('The %s of parameter group '
|
message=_('The %s of parameter group '
|
||||||
'should be a list.') % PARAMETERS)
|
'should be a list.') % PARAMETERS)
|
||||||
|
|
||||||
|
@ -73,7 +73,7 @@ class ParameterGroups(object):
|
||||||
if param in grouped_parameters:
|
if param in grouped_parameters:
|
||||||
raise exception.StackValidationFailed(
|
raise exception.StackValidationFailed(
|
||||||
error=_('Parameter Groups error'),
|
error=_('Parameter Groups error'),
|
||||||
path=[PARAMETER_GROUPS, group.get('label')],
|
path=[PARAMETER_GROUPS, group.get('label', '')],
|
||||||
message=_(
|
message=_(
|
||||||
'The %s parameter must be assigned to one '
|
'The %s parameter must be assigned to one '
|
||||||
'parameter group only.') % param)
|
'parameter group only.') % param)
|
||||||
|
@ -84,7 +84,7 @@ class ParameterGroups(object):
|
||||||
if param not in self.parameter_names:
|
if param not in self.parameter_names:
|
||||||
raise exception.StackValidationFailed(
|
raise exception.StackValidationFailed(
|
||||||
error=_('Parameter Groups error'),
|
error=_('Parameter Groups error'),
|
||||||
path=[PARAMETER_GROUPS, group.get('label')],
|
path=[PARAMETER_GROUPS, group.get('label', '')],
|
||||||
message=_(
|
message=_(
|
||||||
'The grouped parameter %s does not reference '
|
'The grouped parameter %s does not reference '
|
||||||
'a valid parameter.') % param)
|
'a valid parameter.') % param)
|
||||||
|
|
|
@ -773,6 +773,58 @@ resources:
|
||||||
type: OS::Nova::Server
|
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 = '''
|
test_template_allowed_integers = '''
|
||||||
heat_template_version: 2013-05-23
|
heat_template_version: 2013-05-23
|
||||||
|
|
||||||
|
@ -851,9 +903,9 @@ outputs:
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
|
||||||
class validateTest(common.HeatTestCase):
|
class ValidateTest(common.HeatTestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(validateTest, self).setUp()
|
super(ValidateTest, self).setUp()
|
||||||
resources.initialise()
|
resources.initialise()
|
||||||
self.fc = fakes_nova.FakeClient()
|
self.fc = fakes_nova.FakeClient()
|
||||||
self.gc = fakes_nova.FakeClient()
|
self.gc = fakes_nova.FakeClient()
|
||||||
|
@ -1413,6 +1465,19 @@ class validateTest(common.HeatTestCase):
|
||||||
'assigned to one parameter group only.'),
|
'assigned to one parameter group only.'),
|
||||||
six.text_type(exc))
|
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):
|
def test_validate_invalid_parameter_in_group(self):
|
||||||
t = template_format.parse(test_template_invalid_parameter_name)
|
t = template_format.parse(test_template_invalid_parameter_name)
|
||||||
template = hot_tmpl.HOTemplate20130523(t,
|
template = hot_tmpl.HOTemplate20130523(t,
|
||||||
|
@ -1431,6 +1496,20 @@ class validateTest(common.HeatTestCase):
|
||||||
'reference a valid parameter.'),
|
'reference a valid parameter.'),
|
||||||
six.text_type(exc))
|
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):
|
def test_validate_no_parameters_in_group(self):
|
||||||
t = template_format.parse(test_template_no_parameters)
|
t = template_format.parse(test_template_no_parameters)
|
||||||
template = hot_tmpl.HOTemplate20130523(t)
|
template = hot_tmpl.HOTemplate20130523(t)
|
||||||
|
@ -1465,6 +1544,17 @@ class validateTest(common.HeatTestCase):
|
||||||
'The parameters of parameter group should be '
|
'The parameters of parameter group should be '
|
||||||
'a list.'), six.text_type(exc))
|
'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):
|
def test_validate_allowed_values_integer(self):
|
||||||
t = template_format.parse(test_template_allowed_integers)
|
t = template_format.parse(test_template_allowed_integers)
|
||||||
template = tmpl.Template(t,
|
template = tmpl.Template(t,
|
||||||
|
|
Loading…
Reference in New Issue