diff --git a/heat/engine/resources/openstack/heat/software_config.py b/heat/engine/resources/openstack/heat/software_config.py index b75fcda0f..1164fa8a1 100644 --- a/heat/engine/resources/openstack/heat/software_config.py +++ b/heat/engine/resources/openstack/heat/software_config.py @@ -81,7 +81,7 @@ class SoftwareConfig(resource.Resource): _('Type of the value of the input.'), default='String', constraints=[constraints.AllowedValues(( - 'String', 'Number', 'CommaDelimitedList', 'Json'))] + 'String', 'Number', 'CommaDelimitedList', 'Json', 'Boolean'))] ), DEFAULT: properties.Schema( properties.Schema.STRING, @@ -104,7 +104,7 @@ class SoftwareConfig(resource.Resource): _('Type of the value of the output.'), default='String', constraints=[constraints.AllowedValues(( - 'String', 'Number', 'CommaDelimitedList', 'Json'))] + 'String', 'Number', 'CommaDelimitedList', 'Json', 'Boolean'))] ), ERROR_OUTPUT: properties.Schema( properties.Schema.BOOLEAN, diff --git a/heat/tests/engine/test_software_config.py b/heat/tests/engine/test_software_config.py index 93f98a979..bfbded57c 100644 --- a/heat/tests/engine/test_software_config.py +++ b/heat/tests/engine/test_software_config.py @@ -32,6 +32,41 @@ from heat.tests import common from heat.tests.engine import tools from heat.tests import utils +software_config_inputs = ''' +heat_template_version: 2013-05-23 +description: Validate software config input/output types + +resources: + + InputOutputTestConfig: + type: OS::Heat::SoftwareConfig + properties: + group: puppet + inputs: + - name: boolean_input + type: Boolean + - name: json_input + type: Json + - name: number_input + type: Number + - name: string_input + type: String + - name: comma_delimited_list_input + type: CommaDelimitedList + outputs: + - name: boolean_output + type: Boolean + - name: json_output + type: Json + - name: number_output + type: Number + - name: string_output + type: String + - name: comma_delimited_list_output + type: CommaDelimitedList + +''' + class SoftwareConfigServiceTest(common.HeatTestCase): @@ -108,6 +143,15 @@ class SoftwareConfigServiceTest(common.HeatTestCase): self.ctx, config_id) self.assertEqual(exception.NotFound, ex.exc_info[0]) + def test_boolean_inputs_valid(self): + stack_name = 'test_boolean_inputs_valid' + t = template_format.parse(software_config_inputs) + stack = utils.parse_stack(t, stack_name=stack_name) + try: + stack.validate() + except exception.StackValidationFailed as exc: + self.fail("Validation should have passed: %s" % six.text_type(exc)) + def _create_software_deployment(self, config_id=None, input_values=None, action='INIT', status='COMPLETE', status_reason='',