X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=rwlaunchpad%2Fplugins%2Frwlaunchpadtasklet%2Frift%2Fpackage%2Fconvert.py;h=2e8e3b2330631dea828c682e5510862d0a6ce84f;hb=f49375710db1acf3cd74c8651d098b7a08e8d0b2;hp=7571c570e9000772942f02de265381e17b18b7f2;hpb=6f07e6f33f751ab4ffe624f6037f887b243bece2;p=osm%2FSO.git diff --git a/rwlaunchpad/plugins/rwlaunchpadtasklet/rift/package/convert.py b/rwlaunchpad/plugins/rwlaunchpadtasklet/rift/package/convert.py index 7571c570..2e8e3b23 100644 --- a/rwlaunchpad/plugins/rwlaunchpadtasklet/rift/package/convert.py +++ b/rwlaunchpad/plugins/rwlaunchpadtasklet/rift/package/convert.py @@ -16,8 +16,10 @@ # import json +import logging import os import tempfile +import yaml import gi gi.require_version('RwNsdYang', '1.0') @@ -31,6 +33,8 @@ from gi.repository import ( RwYang, ) +from rift.mano.utils.project import NS_PROJECT + class UnknownExtensionError(Exception): pass @@ -97,7 +101,7 @@ class ProtoMessageSerializer(object): @property def yang_class(self): - """ The Protobuf's GI class (e.g. RwVnfdYang.YangData_Vnfd_VnfdCatalog_Vnfd) """ + """ The Protobuf's GI class (e.g. RwVnfdYang.YangData_RwProject_Project_VnfdCatalog_Vnfd) """ return self._yang_pb_cls @property @@ -122,9 +126,16 @@ class ProtoMessageSerializer(object): return self.yang_class.from_json(self.model, decode(json), strict=False) def _from_yaml_file_hdl(self, file_hdl): - yaml = file_hdl.read() + yml = file_hdl.read() - return self.yang_class.from_yaml(self.model, decode(yaml), strict=False) + # Need to prefix project on to the descriptor and then + # convert to yang pb + # TODO: See if there is a better way to do this + desc = {NS_PROJECT: []} + desc[NS_PROJECT].append(yaml.load(decode(yml))) + # log = logging.getLogger('rw-mano-log') + # log.error("Desc from yaml: {}".format(desc)) + return self.yang_class.from_yaml(self.model, yaml.dump(desc), strict=False) def to_json_string(self, pb_msg): """ Serialize a protobuf message into JSON @@ -145,10 +156,15 @@ class ProtoMessageSerializer(object): try: json_str = pb_msg.to_json(self.model) + # Remove rw-project:project top level element + dic = json.loads(json_str) + jstr = json.dumps(dic[NS_PROJECT][0]) except Exception as e: raise SerializationError(e) - return json_str + log = logging.getLogger('rw-mano-log') + log.error("Desc to json: {}".format(jstr)) + return jstr def to_yaml_string(self, pb_msg): """ Serialize a protobuf message into YAML @@ -262,22 +278,22 @@ class ProtoMessageSerializer(object): class VnfdSerializer(ProtoMessageSerializer): """ Creates a serializer for the VNFD descriptor""" def __init__(self): - super().__init__(VnfdYang, VnfdYang.YangData_Vnfd_VnfdCatalog_Vnfd) + super().__init__(VnfdYang, VnfdYang.YangData_RwProject_Project_VnfdCatalog_Vnfd) class NsdSerializer(ProtoMessageSerializer): """ Creates a serializer for the NSD descriptor""" def __init__(self): - super().__init__(NsdYang, NsdYang.YangData_Nsd_NsdCatalog_Nsd) + super().__init__(NsdYang, NsdYang.YangData_RwProject_Project_NsdCatalog_Nsd) class RwVnfdSerializer(ProtoMessageSerializer): """ Creates a serializer for the VNFD descriptor""" def __init__(self): - super().__init__(RwVnfdYang, RwVnfdYang.YangData_Vnfd_VnfdCatalog_Vnfd) + super().__init__(RwVnfdYang, RwVnfdYang.YangData_RwProject_Project_VnfdCatalog_Vnfd) class RwNsdSerializer(ProtoMessageSerializer): """ Creates a serializer for the NSD descriptor""" def __init__(self): - super().__init__(RwNsdYang, RwNsdYang.YangData_Nsd_NsdCatalog_Nsd) + super().__init__(RwNsdYang, RwNsdYang.YangData_RwProject_Project_NsdCatalog_Nsd)