Merges branch sol006 into master
[osm/osmclient.git] / osmclient / common / utils.py
index a3f4bc8..94bd72f 100644 (file)
@@ -21,6 +21,7 @@ import tarfile
 import re
 import yaml
 
+
 def wait_for_value(func, result=True, wait_time=10, catch_exception=None):
     maxtime = time.time() + wait_time
     while time.time() < maxtime:
@@ -29,7 +30,7 @@ def wait_for_value(func, result=True, wait_time=10, catch_exception=None):
                 return True
         except catch_exception:
             pass
-        time.sleep(1)
+        time.sleep(5)
     try:
         return func() == result
     except catch_exception:
@@ -53,38 +54,41 @@ def md5(fname):
 
 
 def get_key_val_from_pkg(descriptor_file):
-# method opens up a package and finds the name of the resulting
-# descriptor (vnfd or nsd name)
+    # method opens up a package and finds the name of the resulting
+    # descriptor (vnfd or nsd name)
     tar = tarfile.open(descriptor_file)
     yamlfile = None
     for member in tar.getmembers():
         if (re.match('.*.yaml', member.name) and
-           len(member.name.split('/')) == 2):
+                len(member.name.split('/')) == 2):
             yamlfile = member.name
             break
     if yamlfile is None:
         return None
 
-    dict = yaml.load(tar.extractfile(yamlfile))
+    dict = yaml.safe_load(tar.extractfile(yamlfile))
     result = {}
-    for k1, v1 in dict.items():
-        if not k1.endswith('-catalog'):
-            continue
-        for k2, v2 in v1.items():
-            if not k2.endswith('nsd') and not k2.endswith('vnfd'):
+    for k in dict:
+        if 'nsd' in k:
+            result['type'] = 'nsd'
+        else:
+            result['type'] = 'vnfd'
+    if 'type' not in result:
+        for k1, v1 in list(dict.items()):
+            if not k1.endswith('-catalog'):
                 continue
+            for k2, v2 in v1.items():
+                if not k2.endswith('nsd') and not k2.endswith('vnfd'):
+                    continue
+                if 'nsd' in k2:
+                    result['type'] = 'nsd'
+                else:
+                    result['type'] = 'vnfd'
+                for entry in v2:
+                    for k3, v3 in list(entry.items()):
+                        # strip off preceeding chars before :
+                        key_name = k3.split(':').pop()
+                        result[key_name] = v3
 
-            if 'nsd' in k2:
-                result['type'] = 'nsd'
-            else:
-                result['type'] = 'vnfd'
-
-            for entry in v2:
-                for k3, v3 in entry.items():
-                    # strip off preceeding chars before :
-                    key_name = k3.split(':').pop()
-
-                    result[key_name] = v3
     tar.close()
     return result
-