from osmclient.sol005.repo import Repo
from packaging import version as versioning
import requests
-import ruamel.yaml
+import yaml
class OSMRepo(Repo):
r = requests.get('{}/index.yaml'.format(repository.get('url')))
if r.status_code == 200:
- repo_list = ruamel.yaml.safe_load(r.text)
+ repo_list = yaml.safe_load(r.text)
vnf_packages = repo_list.get('{}_packages'.format(pkgtype))
for repo in vnf_packages:
versions = vnf_packages.get(repo)
raise ClientException('Package not found')
folder, descriptor = self.zip_extraction(pkg_name)
with open(descriptor) as pkg:
- pkg_descriptor = ruamel.yaml.safe_load(pkg)
+ pkg_descriptor = yaml.safe_load(pkg)
rmtree(folder, ignore_errors=False)
if ((pkgtype == 'vnf' and (pkg_descriptor.get('vnfd') or pkg_descriptor.get('vnfd:vnfd_catalog'))) or
(pkgtype == 'ns' and (pkg_descriptor.get('nsd') or pkg_descriptor.get('nsd:nsd_catalog')))):
hash_md5.update(chunk)
return hash_md5.hexdigest()
- def fields_building(self, descriptor_json, file, package_type):
+ def fields_building(self, descriptor_dict, file, package_type):
"""
From an artifact descriptor, obtain the fields required for indexing
- :param descriptor_json: artifact description
+ :param descriptor_dict: artifact description
:param file: artifact package
:param package_type: type of artifact (vnf or ns)
:return: fields
base_path = '/{}/'.format(package_type)
aux_dict = {}
if package_type == "vnf":
- if descriptor_json.get('vnfd-catalog', False):
- aux_dict = descriptor_json.get('vnfd-catalog', {}).get('vnfd', [{}])[0]
+ if descriptor_dict.get('vnfd-catalog', False):
+ aux_dict = descriptor_dict.get('vnfd-catalog', {}).get('vnfd', [{}])[0]
else:
- aux_dict = descriptor_json.get('vnfd:vnfd-catalog', {}).get('vnfd', [{}])[0]
+ aux_dict = descriptor_dict.get('vnfd:vnfd-catalog', {}).get('vnfd', [{}])[0]
images = []
for vdu in aux_dict.get('vdu', ()):
images.append(vdu.get('image'))
fields['images'] = images
if package_type == "ns":
- if descriptor_json.get('nsd-catalog', False):
- aux_dict = descriptor_json.get('nsd-catalog', {}).get('nsd', [{}])[0]
+ if descriptor_dict.get('nsd-catalog', False):
+ aux_dict = descriptor_dict.get('nsd-catalog', {}).get('nsd', [{}])[0]
else:
- aux_dict = descriptor_json.get('nsd:nsd-catalog', {}).get('nsd', [{}])[0]
+ aux_dict = descriptor_dict.get('nsd:nsd-catalog', {}).get('nsd', [{}])[0]
vnfs = []
with open(descriptor_file, 'r') as f:
descriptor_data = f.read()
validation = validation_im()
- desc_type, descriptor_data = validation.yaml_validation(descriptor_data)
- validation_im.pyangbind_validation(self, desc_type, descriptor_data)
- if 'vnf' in list(descriptor_data.keys())[0]:
+ desc_type, descriptor_dict = validation.yaml_validation(descriptor_data)
+ validation_im.pyangbind_validation(self, desc_type, descriptor_dict)
+ if 'vnf' in list(descriptor_dict.keys())[0]:
package_type = 'vnf'
else:
# raise ClientException("Not VNF package")
package_type = 'ns'
- self._logger.debug("Descriptor: {}".format(descriptor_data))
- fields = self.fields_building(descriptor_data, path, package_type)
+ self._logger.debug("Descriptor: {}".format(descriptor_dict))
+ fields = self.fields_building(descriptor_dict, path, package_type)
self._logger.debug("Descriptor sucessfully validated")
return {"detail": "{}D successfully validated".format(package_type.upper()),
"code": "OK"}, True, fields, package_type
mkdir(final_path)
copyfile(path,
final_path + '/' + fields.get('id') + "-" + fields.get('version') + '.tar.gz')
- ruamel.yaml.dump(fields, open(final_path + '/' + 'metadata.yaml', 'w'),
- Dumper=ruamel.yaml.RoundTripDumper)
- index = ruamel.yaml.load(open(destination + '/index.yaml'), Loader=ruamel.yaml.Loader)
+ yaml.safe_dump(fields, open(final_path + '/' + 'metadata.yaml', 'w'),
+ default_flow_style=False, width=80, indent=4)
+ index = yaml.safe_load(open(destination + '/index.yaml'))
index['{}_packages'.format(package_type)][fields.get('id')][fields.get('version')] = data_ind
if versioning.parse(index['{}_packages'.format(package_type)][fields.get('id')][
'latest']) < versioning.parse(fields.get('version')):
index['{}_packages'.format(package_type)][fields.get('id')]['latest'] = fields.get(
'version')
- ruamel.yaml.dump(index, open(destination + '/index.yaml', 'w'), Dumper=ruamel.yaml.RoundTripDumper)
+ yaml.safe_dump(index, open(destination + '/index.yaml', 'w'),
+ default_flow_style=False, width=80, indent=4)
self._logger.info('{} {} added in the repository'.format(package_type.upper(), str(path)))
else:
mkdir(destination + '/{}/'.format(package_type) + fields.get('id'))
mkdir(final_path)
copyfile(path,
final_path + '/' + fields.get('id') + "-" + fields.get('version') + '.tar.gz')
- ruamel.yaml.dump(fields, open(join(final_path, 'metadata.yaml'), 'w'), Dumper=ruamel.yaml.RoundTripDumper)
- index = ruamel.yaml.load(open(destination + '/index.yaml'), Loader=ruamel.yaml.Loader)
+ yaml.safe_dump(fields, open(join(final_path, 'metadata.yaml'), 'w'),
+ default_flow_style=False, width=80, indent=4)
+ index = yaml.safe_load(open(destination + '/index.yaml'))
index['{}_packages'.format(package_type)][fields.get('id')] = {fields.get('version'): data_ind}
index['{}_packages'.format(package_type)][fields.get('id')]['latest'] = fields.get('version')
- ruamel.yaml.dump(index, open(join(destination, 'index.yaml'), 'w'), Dumper=ruamel.yaml.RoundTripDumper)
+ yaml.safe_dump(index, open(join(destination, 'index.yaml'), 'w'),
+ default_flow_style=False, width=80, indent=4)
self._logger.info('{} {} added in the repository'.format(package_type.upper(), str(path)))
def current_datatime(self):
index_data = {'apiVersion': 'v1', 'generated': self.current_datatime(), 'vnf_packages': {},
'ns_packages': {}}
with open(join(destination, 'index.yaml'), 'w') as outfile:
- ruamel.yaml.dump(index_data, outfile, default_flow_style=False)
+ yaml.safe_dump(index_data, outfile, default_flow_style=False, width=80, indent=4)