Add SRIOV HPA fetching 05/39305/1
authorNate Potter <nathaniel.potteR@intel.com>
Tue, 27 Mar 2018 14:59:02 +0000 (07:59 -0700)
committerNate Potter <nathaniel.potteR@intel.com>
Tue, 27 Mar 2018 14:59:02 +0000 (07:59 -0700)
Change-Id: I9b9307278293da8e579aac8cf01f7cfb6b725d6b
Signed-off-by: Nathaniel Potter <nathaniel.potter@intel.com>
Issue-ID: MULTICLOUD-179

newton/newton/registration/tests/test_registration.py
newton/newton/registration/views/registration.py

index 0e9be29..e603e4e 100644 (file)
@@ -56,6 +56,7 @@ MOCK_GET_EXTRA_SPECS_RESPONSE = {
         "hw:numa_cpus.1": [0, 1],
         "hw:numa_mem.1": 2,
         "pci_passthrough:alias": "mycrypto-8086-0443:4",
+        "aggregate_instance_extra_spec:sriov-device-intel": "1832-9475",
         "hw:mem_page_size": "1GB"
     }
 }
index e446a3b..9ed811b 100644 (file)
@@ -194,12 +194,45 @@ class Registry(newton_registration.Registry):
                 {
                     'hpa-attribute-key': 'pciDeviceId',
                     'hpa-attribute-value': '{{\"value\":\"{0}\"}}'.format(device_id)
+                },
+                {
+                    'hpa-attribute-key': 'functionType',
+                    'hpa-attribute-value': 'PCI-PASSTHROUGH'
+                }
+            ]
+
+            capability['hpa-features-attributes'] = attributes
+            capabilities.append(capability)
+
+        # SRIOV Devices
+        sriov_devices = [spec for spec in extra_specs if spec.startswith("aggregate_instance_extra_spec:sriov-device")]
+        for device in sriov_devices:
+            capability = hpa_dict['pciePassthrough']['info']
+            capability['hpa-capability-id'] = str(uuid.uuid4())
+            # device will be in the form aggregate_instance_extra_specs:sriov-device-<name>="<Vendor ID>-<Device ID>",
+            device_info = extra_specs[device]
+            vendor_id = device_info.split("-")[0]
+            device_id = device_info.split("-")[1]
+
+            attributes = [
+                {
+                    'hpa-attribute-key': 'pciVendorId',
+                    'hpa-attribute-value': '{{\"value\":\"{0}\"}}'.format(vendor_id)
+                },
+                {
+                    'hpa-attribute-key': 'pciDeviceId',
+                    'hpa-attribute-value': '{{\"value\":\"{0}\"}}'.format(device_id)
+                },
+                {
+                    'hpa-attribute-key': 'functionType',
+                    'hpa-attribute-value': 'SRIOV'
                 }
             ]
 
             capability['hpa-features-attributes'] = attributes
             capabilities.append(capability)
 
+
         # OVS DPDK
         if cloud_extra_info:
             cloud_dpdk_info = cloud_extra_info.get('ovsDpdk')