1 # Copyright 2017 Sandvine
5 # Licensed under the Apache License, Version 2.0 (the "License"); you may
6 # not use this file except in compliance with the License. You may obtain
7 # a copy of the License at
9 # http://www.apache.org/licenses/LICENSE-2.0
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 # License for the specific language governing permissions and limitations
24 def wait_for_value(func
, result
=True, wait_time
=10, catch_exception
=None):
25 maxtime
= time
.time() + wait_time
26 while time
.time() < maxtime
:
30 except catch_exception
:
34 return func() == result
35 except catch_exception
:
39 def validate_uuid4(uuid_text
):
43 except (ValueError, TypeError):
48 hash_md5
= hashlib
.md5()
49 with
open(fname
, "rb") as f
:
50 for chunk
in iter(lambda: f
.read(4096), b
""):
51 hash_md5
.update(chunk
)
52 return hash_md5
.hexdigest()
55 def get_key_val_from_pkg(descriptor_file
):
56 # method opens up a package and finds the name of the resulting
57 # descriptor (vnfd or nsd name)
58 tar
= tarfile
.open(descriptor_file
)
60 for member
in tar
.getmembers():
61 if (re
.match('.*.yaml', member
.name
) and
62 len(member
.name
.split('/')) == 2):
63 yamlfile
= member
.name
68 dict = yaml
.load(tar
.extractfile(yamlfile
))
70 for k1
, v1
in dict.items():
71 if not k1
.endswith('-catalog'):
73 for k2
, v2
in v1
.items():
74 if not k2
.endswith('nsd') and not k2
.endswith('vnfd'):
78 result
['type'] = 'nsd'
80 result
['type'] = 'vnfd'
83 for k3
, v3
in entry
.items():
84 # strip off preceeding chars before :
85 key_name
= k3
.split(':').pop()