فهرست منبع

Remove empty facts from nested dictionaries.

Andrew Butcher 9 سال پیش
والد
کامیت
7247fb26ad
1فایلهای تغییر یافته به همراه18 افزوده شده و 8 حذف شده
  1. 18 8
      roles/openshift_facts/library/openshift_facts.py

+ 18 - 8
roles/openshift_facts/library/openshift_facts.py

@@ -1837,14 +1837,7 @@ class OpenShiftFacts(object):
                         val = [x.strip() for x in val.split(',')]
                     new_local_facts['docker'][key] = list(set(val) - set(['']))
 
-        for facts in new_local_facts.values():
-            keys_to_delete = []
-            if isinstance(facts, dict):
-                for fact, value in facts.iteritems():
-                    if value == "" or value is None:
-                        keys_to_delete.append(fact)
-                for key in keys_to_delete:
-                    del facts[key]
+        new_local_facts = self.remove_empty_facts(new_local_facts)
 
         if new_local_facts != local_facts:
             self.validate_local_facts(new_local_facts)
@@ -1855,6 +1848,23 @@ class OpenShiftFacts(object):
         self.changed = changed
         return new_local_facts
 
+    def remove_empty_facts(self, facts=None):
+        """ Remove empty facts
+
+            Args:
+                facts (dict): facts to clean
+        """
+        facts_to_remove = []
+        for fact, value in facts.iteritems():
+            if isinstance(facts[fact], dict):
+                facts[fact] = self.remove_empty_facts(facts[fact])
+            else:
+                if value == "" or value is None:
+                    facts_to_remove.append(fact)
+        for fact in facts_to_remove:
+            del facts[fact]
+        return facts
+
     def validate_local_facts(self, facts=None):
         """ Validate local facts