X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osmclient%2Fsol005%2Fvnfd.py;h=0a2b7727265f56f39e3093dc11ba652ad9ca0ae4;hb=45100df135425f2a314367210bca9056a5026d64;hp=4542d56c13d87a014fb6cfc84beba0d92a1da58c;hpb=95686bbc69ded243c346f94dceb0bee567572fb7;p=osm%2Fosmclient.git diff --git a/osmclient/sol005/vnfd.py b/osmclient/sol005/vnfd.py index 4542d56..0a2b772 100644 --- a/osmclient/sol005/vnfd.py +++ b/osmclient/sol005/vnfd.py @@ -30,6 +30,7 @@ import os.path from urllib.parse import quote import tarfile from osm_im.validation import Validation as validation_im +from zipfile import ZipFile class Vnfd(object): @@ -168,6 +169,8 @@ class Vnfd(object): headers["Content-Type"] = "text/plain" elif mime_type in ["application/gzip", "application/x-gzip"]: headers["Content-Type"] = "application/gzip" + elif mime_type in ["application/zip"]: + headers["Content-Type"] = "application/zip" else: raise ClientException( "Unexpected MIME type for file {}: MIME type {}".format( @@ -202,6 +205,38 @@ class Vnfd(object): with tar_object.extractfile(descriptor_list[0]) as df: descriptor_data = df.read() tar_object.close() + elif mime_type in ["application/zip"]: + package_zip = ZipFile(filename) + package_files = package_zip.infolist() + + descriptors = [] + if ( + "Definitions" in package_files + and "TOSCA-Metadata" in package_files + ): + descriptors = [ + definition + for definition in package_files + if "Definitions/" in definition + and ( + definition.endswith(".yaml") + or definition.endswith(".yml") + ) + ] + else: + descriptors = [ + definition + for definition in package_files + if definition.endswith(".yaml") + or definition.endswith(".yml") + ] + if len(descriptors) < 1: + raise ClientException( + "No descriptor found on this package, OSM was expecting at least 1" + ) + descriptor_data = package_zip.open(descriptors[0]) + package_zip.close() + if not descriptor_data: raise ClientException("Descriptor could not be read") desc_type, vnfd = validation_im().yaml_validation(descriptor_data) @@ -282,7 +317,8 @@ class Vnfd(object): ): special_override_string = ( "{}vdu.{}.int-cpd.{}.virtual-network-interface-" - "requirement.{}.virtual-interface.type=PARAVIRT;".format( + "requirement.{}.virtual-interface.type=" + "PARAVIRT;".format( special_override_string, vdu_number, cpd_number,