# under the License.
"""
-OSM package API handling
+OSM package API handling
"""
-import json
-import pycurl
-from io import BytesIO
import tarfile
-import re
+import re
import yaml
-import time
from osmclient.common.exceptions import ClientException
from osmclient.common.exceptions import NotFound
from osmclient.common import utils
class Package(object):
- def __init__(self,http=None,upload_http=None,client=None):
- self._client=client
- self._http=http
- self._upload_http=upload_http
+ def __init__(self, http=None, upload_http=None, client=None):
+ self._client = client
+ self._http = http
+ self._upload_http = upload_http
- def _wait_for_package(self,pkg_type):
+ def _wait_for_package(self, pkg_type):
if 'vnfd' in pkg_type['type']:
- get_method=self._client.vnfd.get
+ get_method = self._client.vnfd.get
elif 'nsd' in pkg_type['type']:
- get_method=self._client.nsd.get
+ get_method = self._client.nsd.get
else:
raise ClientException("no valid package type found")
# helper method to check if pkg exists
- def check_exists( func ):
+ def check_exists(func):
try:
func()
except NotFound:
return False
return True
- return utils.wait_for_value(lambda: check_exists(lambda: get_method(pkg_type['name'])))
+ return utils.wait_for_value(lambda:
+ check_exists(lambda:
+ get_method(pkg_type['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:
+ if (re.match('.*.yaml', member.name) and
+ len(member.name.split('/')) == 2):
yamlfile = member.name
break
if yamlfile is None:
return None
- dict=yaml.load(tar.extractfile(yamlfile))
- result={}
- for k1,v1 in dict.items():
+ dict = yaml.load(tar.extractfile(yamlfile))
+ result = {}
+ for k1, v1 in dict.items():
if not k1.endswith('-catalog'):
continue
- for k2,v2 in v1.items():
+ for k2, v2 in v1.items():
if not k2.endswith('nsd') and not k2.endswith('vnfd'):
continue
result['type'] = 'vnfd'
for entry in v2:
- for k3,v3 in entry.items():
+ for k3, v3 in entry.items():
if k3 == 'name' or k3.endswith(':name'):
result['name'] = v3
return result
tar.close()
return None
- def wait_for_upload(self,filename):
+ def wait_for_upload(self, filename):
"""wait(block) for an upload to succeed.
-
The filename passed is assumed to be a descriptor tarball.
"""
- pkg_type=self.get_descriptor_type_from_pkg(filename)
+ pkg_type = self.get_descriptor_type_from_pkg(filename)
if pkg_type is None:
raise ClientException("Cannot determine package type")
if not self._wait_for_package(pkg_type):
- raise ClientException("package {} failed to upload".format(filename))
+ raise ClientException("package {} failed to upload"
+ .format(filename))
- def upload(self,filename):
- resp=self._upload_http.post_cmd(formfile=('package',filename))
+ def upload(self, filename):
+ resp = self._upload_http.post_cmd(formfile=('package', filename))
if not resp or 'transaction_id' not in resp:
raise ClientException("failed to upload package")