]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
Return empty string when Fn::Select target is None.
authorSteve Baker <sbaker@redhat.com>
Sun, 9 Jun 2013 23:44:45 +0000 (11:44 +1200)
committerSteve Baker <sbaker@redhat.com>
Sun, 9 Jun 2013 23:44:45 +0000 (11:44 +1200)
This can happen when a resource is not in the required state
to resolve its FnGetAtt.

Change-Id: I4d104b3577fbd94b920ff172c00d60914d7acd45

heat/engine/template.py
heat/tests/test_parser.py

index 15c6ab78972e26e68f935aba7d9a4aafde04fa0f..77ca03f2f10f6a345b5fec0367d818f7d68824d3 100644 (file)
@@ -244,6 +244,8 @@ class Template(collections.Mapping):
                 return strings[index]
             if isinstance(strings, dict) and isinstance(index, basestring):
                 return strings[index]
+            if strings is None:
+                return ''
 
             raise TypeError('Arguments to "Fn::Select" not fully resolved')
 
index 66e9605ce5a95aa8e15806882db1a0f028975a95..d628d576f94eaad32d6865d0f89476033af408a8 100644 (file)
@@ -226,6 +226,10 @@ class TemplateTest(HeatTestCase):
         data = {"Fn::Select": ["red", {"red": "robin", "re": "foo"}]}
         self.assertEqual(parser.Template.resolve_select(data), "robin")
 
+    def test_select_from_none(self):
+        data = {"Fn::Select": ["red", None]}
+        self.assertEqual(parser.Template.resolve_select(data), "")
+
     def test_select_from_dict_not_str(self):
         data = {"Fn::Select": ["1", {"red": "robin", "re": "foo"}]}
         self.assertRaises(TypeError, parser.Template.resolve_select,