Fix SRIOV count fetching 09/40409/1
authorNate Potter <nathaniel.potteR@intel.com>
Fri, 30 Mar 2018 11:11:52 +0000 (04:11 -0700)
committerNate Potter <nathaniel.potteR@intel.com>
Fri, 30 Mar 2018 11:13:15 +0000 (04:13 -0700)
Update the logic for SRIOV HPA fetching to get a count
value from the true or false that is provided.

Change-Id: I314a491a3b33bcfb445a85df8213203a436e03d1
Signed-off-by: Nathaniel Potter <nathaniel.potter@intel.com>
Issue-ID: MULTICLOUD-208

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

index e603e4e..d5be81d 100644 (file)
@@ -56,7 +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",
+        "aggregate_instance_extra_spec:sriov-device-intel-1832-9475": "true",
         "hw:mem_page_size": "1GB"
     }
 }
index 3a9c5ac..cc97e04 100644 (file)
@@ -205,16 +205,22 @@ class Registry(newton_registration.Registry):
             capabilities.append(capability)
 
         # SRIOV Devices
-        sriov_devices = [spec for spec in extra_specs if spec.startswith("aggregate_instance_extra_spec:sriov-device")]
+        sriov_devices = [spec for spec in extra_specs if spec.startswith("aggregate_instance_extra_spec:sriov")]
         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]
+            # device will be in the form aggregate_instance_extra_specs:sriov-device-<NAME>=<true/false>,
+            # NAME is expected to be in the form <NAME>-<VENDOR_ID>-<DEVICE_ID>
+            enabled = extra_specs[device]
+            count = 1 if enabled == "true" else 0
+            vendor_id = device.split(":")[1].split("-")[3]
+            device_id = device.split(":")[1].split("-")[4]
 
             attributes = [
+                {
+                    'hpa-attribute-key': 'pciCount',
+                    'hpa-attribute-value': '{{\"value\":\"{0}\"}}'.format(count)
+                },
                 {
                     'hpa-attribute-key': 'pciVendorId',
                     'hpa-attribute-value': '{{\"value\":\"{0}\"}}'.format(vendor_id)