Bug 106 - Cannot instantiate Network services with VNFs having SR-IOV interfaces
[osm/SO.git] / models / openmano / python / rift / openmano / rift2openmano.py
index 2772f8f..e216e9a 100755 (executable)
@@ -398,8 +398,8 @@ def rift2openmano_vnfd(rift_vnfd):
             }
 
         # Add the specific VDU connection points
-        for int_cp_ref in vld.internal_connection_point_ref:
-            vdu, int_if = find_vdu_and_int_if_by_cp_ref(int_cp_ref)
+        for int_cp in vld.internal_connection_point:
+            vdu, int_if = find_vdu_and_int_if_by_cp_ref(int_cp.id_ref)
             connection["elements"].append({
                 "VNFC": vdu.name,
                 "local_iface_name": int_if.name,
@@ -427,8 +427,11 @@ def rift2openmano_vnfd(rift_vnfd):
             vnfc["image name"] = vdu.image
             if vdu.has_field("image_checksum"):
                 vnfc["image checksum"] = vdu.image_checksum
-
-        if vdu.guest_epa.has_field("numa_node_policy"):
+        dedicated_int = False
+        for intf in list(vdu.internal_interface) + list(vdu.external_interface):
+            if intf.virtual_interface.type_yang in ["SR_IOV", "PCI_PASSTHROUGH"]:
+                dedicated_int = True
+        if vdu.guest_epa.has_field("numa_node_policy") or dedicated_int:
             vnfc["numas"] = [{
                            "memory": max(int(vdu.vm_flavor.memory_mb/1024), 1),
                            "interfaces":[],
@@ -475,7 +478,7 @@ def rift2openmano_vnfd(rift_vnfd):
             if vdu.host_epa.has_field("om_cpu_feature"):
                 vnfc["processor"]["features"] = []
                 for feature in vdu.host_epa.om_cpu_feature:
-                    vnfc["processor"]["features"].append(feature)
+                    vnfc["processor"]["features"].append(feature.feature)
 
 
         vnf["VNFC"].append(vnfc)
@@ -494,9 +497,9 @@ def rift2openmano_vnfd(rift_vnfd):
             elif int_if.virtual_interface.type_yang in ["OM_MGMT"]:
                 vnfc["bridge-ifaces"].append(intf)
 
-            elif int_if.virtual_interface.type_yang == "SR-IOV":
+            elif int_if.virtual_interface.type_yang == "SR_IOV":
                 intf["bandwidth"] = "10 Gbps"
-                intf["dedicated"] = "yes:sriov"
+                intf["dedicated"] = "no"
                 vnfc["numas"][0]["interfaces"].append(intf)
 
             elif int_if.virtual_interface.type_yang == "PCI_PASSTHROUGH":