]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
For Fn::Join, replace None items with an empty string.
authorSteve Baker <sbaker@redhat.com>
Tue, 4 Jun 2013 05:25:42 +0000 (17:25 +1200)
committerSteve Baker <sbaker@redhat.com>
Tue, 4 Jun 2013 05:38:58 +0000 (17:38 +1200)
Currently, attempts to join lists with None items results in an error.

This change is required for the next attempt to fix bug: #1184794

Change-Id: Ib599eeb21b7325ff797768100f1556a424a8bde9

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

index 3bd77f314d6c6b6ab43f1360db3d2d362a4d39c1..bee3931a35263966621dc15b66fc669f94846cab 100644 (file)
@@ -217,7 +217,14 @@ class Template(collections.Mapping):
 
             if not isinstance(strings, (list, tuple)):
                 raise TypeError('Arguments to "Fn::Join" not fully resolved')
-            return delim.join(strings)
+
+            def empty_for_none(v):
+                if v is None:
+                    return ''
+                else:
+                    return v
+
+            return delim.join(empty_for_none(value) for value in strings)
 
         return _resolve(lambda k, v: k == 'Fn::Join', handle_join, s)
 
index 5baa4c0f277068fd9f513f700c5005088464eb39..55db0d0cd163497874bed992a6f20e8e4e0b276c 100644 (file)
@@ -79,6 +79,10 @@ class ParserTest(HeatTestCase):
         raw = {'Fn::Join': [' ', ['foo', 'bar', 'baz']]}
         self.assertEqual(join(raw), 'foo bar baz')
 
+    def test_join_none(self):
+        raw = {'Fn::Join': [' ', ['foo', None, 'baz']]}
+        self.assertEqual(join(raw), 'foo  baz')
+
     def test_join_list(self):
         raw = [{'Fn::Join': [' ', ['foo', 'bar', 'baz']]}, 'blarg', 'wibble']
         parsed = join(raw)