summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--heat/engine/parameters.py4
-rw-r--r--heat/engine/resources/template_resource.py2
-rw-r--r--heat/tests/test_parameters.py13
-rw-r--r--requirements.txt4
-rw-r--r--test-requirements.txt2
5 files changed, 18 insertions, 7 deletions
diff --git a/heat/engine/parameters.py b/heat/engine/parameters.py
index c20d82444..944a57c8d 100644
--- a/heat/engine/parameters.py
+++ b/heat/engine/parameters.py
@@ -15,9 +15,11 @@
import collections
import itertools
import json
+import six
from heat.engine import constraints as constr
from heat.common import exception
+from heat.openstack.common import strutils
PARAMETER_KEYS = (
@@ -251,7 +253,7 @@ class Parameter(object):
if self.hidden():
return '******'
else:
- return str(value)
+ return strutils.safe_encode(six.text_type(value))
class NumberParam(Parameter):
diff --git a/heat/engine/resources/template_resource.py b/heat/engine/resources/template_resource.py
index e10500000..7bf27c1ce 100644
--- a/heat/engine/resources/template_resource.py
+++ b/heat/engine/resources/template_resource.py
@@ -59,7 +59,7 @@ class TemplateResource(stack_resource.StackResource):
self._parsed_nested = None
self.stack = stack
self.validation_exception = None
- self.update_allowed_keys = ('Properties',)
+ self.update_allowed_keys = ('Properties', 'Metadata')
tri = stack.env.get_resource_info(
json_snippet['Type'],
diff --git a/heat/tests/test_parameters.py b/heat/tests/test_parameters.py
index d91343dc2..8413fd4e0 100644
--- a/heat/tests/test_parameters.py
+++ b/heat/tests/test_parameters.py
@@ -164,6 +164,11 @@ class ParameterTest(testtools.TestCase):
p = self.new_parameter('p', schema, 'bar')
self.assertEqual('bar', p.value())
+ def test_string_value_unicode(self):
+ schema = {'Type': 'String'}
+ p = self.new_parameter('p', schema, u'test\u2665')
+ self.assertEqual(u'test\u2665', p.value())
+
def test_string_value_list_bad(self):
schema = {'Type': 'String',
'ConstraintDescription': 'wibble',
@@ -375,13 +380,17 @@ class ParametersTest(testtools.TestCase):
def test_map_str(self):
template = {'Parameters': {'Foo': {'Type': 'String'},
- 'Bar': {'Type': 'Number'}}}
+ 'Bar': {'Type': 'Number'},
+ 'Uni': {'Type': 'String'}}}
stack_name = 'test_params'
params = self.new_parameters(stack_name, template,
- {'Foo': 'foo', 'Bar': '42'})
+ {'Foo': 'foo',
+ 'Bar': '42',
+ 'Uni': u'test\u2665'})
expected = {'Foo': 'foo',
'Bar': '42',
+ 'Uni': 'test\xe2\x99\xa5',
'AWS::Region': 'ap-southeast-1',
'AWS::StackId':
'arn:openstack:heat:::stacks/{0}/{1}'.format(
diff --git a/requirements.txt b/requirements.txt
index 4b6298d53..1adc1365b 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -13,8 +13,8 @@ sqlalchemy-migrate>=0.8.2,!=0.8.4
python-novaclient>=2.17.0
PasteDeploy>=1.5.0
requests>=1.1
-Routes>=1.12.3
-SQLAlchemy>=0.7.8,<=0.9.99
+Routes>=1.12.3,!=2.0
+SQLAlchemy>=0.7.8,!=0.9.5,<=0.9.99
WebOb>=1.2.3
python-heatclient>=0.2.3
python-keystoneclient>=0.7.0
diff --git a/test-requirements.txt b/test-requirements.txt
index f8aab6837..1faa43fce 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -9,6 +9,6 @@ testtools>=0.9.34
testrepository>=0.0.18
testscenarios>=0.4
python-glanceclient>=0.9.0
-sphinx>=1.1.2,<1.2
+sphinx>=1.1.2,<1.1.999
oslosphinx
lockfile>=0.8