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:
return True
except catch_exception:
pass
- time.sleep(1)
+ time.sleep(5)
try:
return func() == result
except catch_exception:
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 list(dict.items()):
- if not k1.endswith('-catalog'):
- continue
- for k2, v2 in list(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 list(entry.items()):
- # strip off preceeding chars before :
- key_name = k3.split(':').pop()
-
- result[key_name] = v3
tar.close()
return result
-