update for change to etsicatalog
[modeling/etsicatalog.git] / catalog / pub / utils / toscaparser / vnfdparser / vnfd_sol_251.py
@@ -12,7 +12,6 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-import functools
 import logging
 import os
 import base64
@@ -90,6 +89,23 @@ class VnfdSOL251():
                 vl['vl_id'] = node['name']
                 vl['description'] = node['description']
                 vl['properties'] = node['properties']
+                vlp = vl['properties']
+                nodep = node['properties']
+                vlp['connectivity_type']['layer_protocol'] = nodep['connectivity_type']['layer_protocols'][0]
+                vlp['vl_profile']['max_bit_rate_requirements'] = nodep['vl_profile']['max_bitrate_requirements']
+                vlp['vl_profile']['min_bit_rate_requirements'] = nodep['vl_profile']['min_bitrate_requirements']
+                if 'virtual_link_protocol_data' in nodep['vl_profile']:
+                    protocol_data = nodep['vl_profile']['virtual_link_protocol_data'][0]
+                    vlp['vl_profile']['associated_layer_protocol'] = protocol_data['associated_layer_protocol']
+                    if 'l3_protocol_data' in protocol_data:
+                        l3 = protocol_data['l3_protocol_data']
+                        vlp['vl_profile']['networkName'] = l3.get("name", "")
+                        vlp['vl_profile']['cidr'] = l3.get("cidr", "")
+                        vlp['vl_profile']['dhcpEnabled'] = l3.get("dhcp_enabled", "")
+                        vlp['vl_profile']['ip_version'] = l3.get("ip_version", "")
+                    if 'l2_protocol_data' in protocol_data:
+                        l2 = protocol_data['l2_protocol_data']
+                        vlp['vl_profile']['physicalNetwork'] = l2.get("physical_network", "")
                 vls.append(vl)
         return vls
 
@@ -101,7 +117,22 @@ class VnfdSOL251():
                 cp['cp_id'] = node['name']
                 cp['cpd_id'] = node['name']
                 cp['description'] = node['description']
-                cp['properties'] = node['properties']
+                cp['properties'] = {}
+                nodep = node['properties']
+                cp['properties']['trunk_mode'] = nodep.get("trunk_mode", "")
+                cp['properties']['layer_protocol'] = nodep.get("layer_protocols", "")
+                if 'vnic_type' in nodep:
+                    cp['properties']['vnic_type'] = nodep.get("vnic_type", "normal")
+                if 'virtual_network_interface_requirements' in nodep:
+                    cp['properties']['virtual_network_interface_requirements'] = nodep.get("virtual_network_interface_requirements", "")
+                if "protocol" in nodep:
+                    node_protocol = nodep['protocol'][0]
+                    cp['properties']['protocol_data'] = nodep['protocol']
+                    cp_protocol = cp['properties']['protocol_data'][0]
+                    cp_protocol['asscociated_layer_protocol'] = node_protocol['associated_layer_protocol']
+                    if "address_data" in node_protocol:
+                        cp_protocol['address_data'] = node_protocol['address_data'][0]
+
                 cp['vl_id'] = self._get_node_vl_id(node)
                 cp['vdu_id'] = self._get_node_vdu_id(node)
                 vls = self._buil_cp_vls(node)
@@ -134,6 +165,9 @@ class VnfdSOL251():
                 if 'description' in node:
                     ret['description'] = node['description']
                 ret['properties'] = node['properties']
+                if 'boot_data' in node['properties']:
+                    ret['properties']['user_data'] = node['properties']['boot_data']
+                    del ret['properties']['boot_data']
                 if 'inject_files' in node['properties']:
                     inject_files = node['properties']['inject_files']
                 if inject_files is not None:
@@ -150,12 +184,14 @@ class VnfdSOL251():
                             source_data = f.read()
                             source_data_base64 = base64.b64encode(source_data)
                             inject_files["source_data_base64"] = source_data_base64.decode()
-                virtual_storages = self.model.getRequirementByName(node, 'virtual_storage')
-                ret['virtual_storages'] = list(map(functools.partial(self._trans_virtual_storage), virtual_storages))
                 ret['dependencies'] = [self.model.get_requirement_node_name(x) for x in self.model.getNodeDependencys(node)]
                 virtual_compute = self.model.getCapabilityByName(node, 'virtual_compute')
                 if virtual_compute is not None and 'properties' in virtual_compute:
-                    ret['virtual_compute'] = virtual_compute['properties']
+                    vc = {}
+                    vc['virtual_cpu'] = virtual_compute['properties']['virtual_cpu']
+                    vc['virtual_memory'] = virtual_compute['properties']['virtual_memory']
+                    vc['virtual_storages'] = virtual_compute['properties'].get("virtual_local_storage", {})
+                    ret['virtual_compute'] = vc
                 ret['vls'] = self._get_linked_vl_ids(node, nodeTemplates)
                 ret['cps'] = self._get_virtal_binding_cp_ids(node, nodeTemplates)
                 ret['artifacts'] = self.model.build_artifacts(node)