]> git.apps.os.sepia.ceph.com Git - teuthology.git/commitdiff
Drop null values in placeholders 363/head
authorZack Cerza <zack.cerza@inktank.com>
Tue, 18 Nov 2014 23:19:11 +0000 (16:19 -0700)
committerZack Cerza <zack.cerza@inktank.com>
Wed, 19 Nov 2014 17:34:22 +0000 (10:34 -0700)
Signed-off-by: Zack Cerza <zack@redhat.com>
teuthology/suite.py
teuthology/test/test_suite.py

index 49f350c91467f0701d428cebc09232d1ec43ae9c..d4f0e9b2b26b6cc88904574707695900cb194a64 100644 (file)
@@ -626,7 +626,9 @@ class Placeholder(object):
 
 def substitute_placeholders(input_dict, values_dict):
     """
-    Replace any Placeholder instances with values named in values_dict.
+    Replace any Placeholder instances with values named in values_dict. In the
+    case of None values, the key is omitted from the result.
+
     Searches through nested dicts.
 
     :param input_dict:  A dict which may contain one or more Placeholder
@@ -639,10 +641,13 @@ def substitute_placeholders(input_dict, values_dict):
     input_dict = copy.deepcopy(input_dict)
 
     def _substitute(input_dict, values_dict):
-        for (key, value) in input_dict.iteritems():
+        for key, value in input_dict.items():
             if isinstance(value, dict):
                 _substitute(value, values_dict)
             elif isinstance(value, Placeholder):
+                if values_dict[value.name] is None:
+                    del input_dict[key]
+                    continue
                 # If there is a Placeholder without a corresponding entry in
                 # values_dict, we will hit a KeyError - we want this.
                 input_dict[key] = values_dict[value.name]
index f7306d058e0711399ceff8272c63bb6c3b75d03d..b267628ec2d51eec12d0bf2786d47bdccfe5b0f9 100644 (file)
@@ -52,3 +52,17 @@ class TestSuiteOffline(object):
         assert isinstance(
             suite.dict_templ['overrides']['admin_socket']['branch'],
             suite.Placeholder)
+
+    def test_null_placeholders_dropped(self):
+        input_dict = dict(
+            suite='suite',
+            suite_branch='suite_branch',
+            ceph_branch='ceph_branch',
+            ceph_hash='ceph_hash',
+            teuthology_branch='teuthology_branch',
+            machine_type='machine_type',
+            distro=None,
+        )
+        output_dict = suite.substitute_placeholders(suite.dict_templ,
+                                                    input_dict)
+        assert 'os_type' not in output_dict