Merge "Use domain env variables as defaults"
diff --git a/functional/test_os_wait_condition.py b/functional/test_os_wait_condition.py
new file mode 100644
index 0000000..5eb3294
--- /dev/null
+++ b/functional/test_os_wait_condition.py
@@ -0,0 +1,106 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+from heat_integrationtests.functional import functional_base
+
+
+class OSWaitCondition(functional_base.FunctionalTestsBase):
+
+ template = '''
+heat_template_version: 2013-05-23
+parameters:
+ flavor:
+ type: string
+ image:
+ type: string
+ network:
+ type: string
+ timeout:
+ type: number
+ default: 60
+resources:
+ instance1:
+ type: OS::Nova::Server
+ properties:
+ flavor: {get_param: flavor}
+ image: {get_param: image}
+ networks:
+ - network: {get_param: network}
+ user_data_format: RAW
+ user_data:
+ str_replace:
+ template: '#!/bin/sh
+
+ wc_notify --data-binary ''{"status": "SUCCESS"}''
+
+ # signals with reason
+
+ wc_notify --data-binary ''{"status": "SUCCESS", "reason":
+ "signal2"}''
+
+ # signals with data
+
+ wc_notify --data-binary ''{"status": "SUCCESS", "reason":
+ "signal3", "data": "data3"}''
+
+ wc_notify --data-binary ''{"status": "SUCCESS", "reason":
+ "signal4", "data": "data4"}''
+
+ # check signals with the same number
+
+ wc_notify --data-binary ''{"status": "SUCCESS", "id": "5"}''
+
+ wc_notify --data-binary ''{"status": "SUCCESS", "id": "5"}''
+
+ # loop for 25 signals without reasons and data
+
+ for i in `seq 1 25`; do wc_notify --data-binary ''{"status":
+ "SUCCESS"}'' & done
+
+ wait
+ '
+ params:
+ wc_notify:
+ get_attr: [wait_handle, curl_cli]
+
+ wait_condition:
+ type: OS::Heat::WaitCondition
+ depends_on: instance1
+ properties:
+ count: 30
+ handle: {get_resource: wait_handle}
+ timeout: {get_param: timeout}
+
+ wait_handle:
+ type: OS::Heat::WaitConditionHandle
+
+outputs:
+ curl_cli:
+ value:
+ get_attr: [wait_handle, curl_cli]
+ wc_data:
+ value:
+ get_attr: [wait_condition, data]
+'''
+
+ def setUp(self):
+ super(OSWaitCondition, self).setUp()
+ if not self.conf.minimal_image_ref:
+ raise self.skipException("No minimal image configured to test")
+ if not self.conf.minimal_instance_type:
+ raise self.skipException("No minimal flavor configured to test")
+
+ def test_create_stack_with_multi_signal_waitcondition(self):
+ params = {'flavor': self.conf.minimal_instance_type,
+ 'image': self.conf.minimal_image_ref,
+ 'network': self.conf.fixed_network_name}
+ self.stack_create(template=self.template, parameters=params)
diff --git a/functional/test_remote_stack.py b/functional/test_remote_stack.py
index 96306ac..b82958c 100644
--- a/functional/test_remote_stack.py
+++ b/functional/test_remote_stack.py
@@ -45,6 +45,9 @@
def setUp(self):
super(RemoteStackTest, self).setUp()
+ # replacing the template region with the one from the config
+ self.template = self.template.replace('RegionOne',
+ self.conf.region)
def test_remote_stack_alone(self):
stack_id = self.stack_create(template=self.remote_template)
@@ -78,7 +81,7 @@
self.assertEqual(remote_resources, self.list_resources(remote_id))
def test_stack_create_bad_region(self):
- tmpl_bad_region = self.template.replace('RegionOne', 'DARKHOLE')
+ tmpl_bad_region = self.template.replace(self.conf.region, 'DARKHOLE')
files = {'remote_stack.yaml': self.remote_template}
kwargs = {
'template': tmpl_bad_region,
@@ -98,8 +101,9 @@
ex = self.assertRaises(exc.HTTPBadRequest, self.stack_create, **kwargs)
error_msg = ('ERROR: Failed validating stack template using Heat '
- 'endpoint at region "RegionOne" due to '
- '"ERROR: The template section is invalid: resource"')
+ 'endpoint at region "%s" due to '
+ '"ERROR: The template section is '
+ 'invalid: resource"') % self.conf.region
self.assertEqual(error_msg, six.text_type(ex))
def test_stack_update(self):
diff --git a/functional/test_template_resource.py b/functional/test_template_resource.py
index 9a3e833..ebfd73e 100644
--- a/functional/test_template_resource.py
+++ b/functional/test_template_resource.py
@@ -935,3 +935,69 @@
stack_identifier,
self.main_template_update,
files={'resource.yaml': self.nested_templ_update})
+
+
+class TemplateResourceRemovedParamTest(functional_base.FunctionalTestsBase):
+
+ main_template = '''
+heat_template_version: 2013-05-23
+parameters:
+ value1:
+ type: string
+ default: foo
+resources:
+ my_resource:
+ type: resource.yaml
+ properties:
+ value1: {get_param: value1}
+'''
+ nested_templ = '''
+heat_template_version: 2013-05-23
+parameters:
+ value1:
+ type: string
+ default: foo
+resources:
+ test:
+ type: OS::Heat::TestResource
+ properties:
+ value: {get_param: value1}
+'''
+ main_template_update = '''
+heat_template_version: 2013-05-23
+resources:
+ my_resource:
+ type: resource.yaml
+'''
+ nested_templ_update = '''
+heat_template_version: 2013-05-23
+parameters:
+ value1:
+ type: string
+ default: foo
+ value2:
+ type: string
+ default: bar
+resources:
+ test:
+ type: OS::Heat::TestResource
+ properties:
+ value:
+ str_replace:
+ template: VAL1-VAL2
+ params:
+ VAL1: {get_param: value1}
+ VAL2: {get_param: value2}
+'''
+
+ def test_update(self):
+ stack_identifier = self.stack_create(
+ template=self.main_template,
+ environment={'parameters': {'value1': 'spam'}},
+ files={'resource.yaml': self.nested_templ})
+
+ self.update_stack(
+ stack_identifier,
+ self.main_template_update,
+ environment={'parameter_defaults': {'value2': 'egg'}},
+ files={'resource.yaml': self.nested_templ_update}, existing=True)
diff --git a/functional/test_templates.py b/functional/test_templates.py
index dfc9c4f..82a1af4 100644
--- a/functional/test_templates.py
+++ b/functional/test_templates.py
@@ -54,7 +54,7 @@
supported_template_versions = ["2013-05-23", "2014-10-16",
"2015-04-30", "2015-10-15",
"2012-12-12", "2010-09-09",
- "2016-04-08"]
+ "2016-04-08", "2016-10-14"]
for template in template_versions:
self.assertIn(template.version.split(".")[1],
supported_template_versions)