@@ -120,9 +120,6 @@ def __update_shared_nic_labels_and_capacities(self, *, available_component: Comp
120
120
raise BrokerException (error_code = ExceptionErrorCode .INSUFFICIENT_RESOURCES ,
121
121
msg = f"{ message } " )
122
122
123
- # Assign the first PCI Id from the list of available PCI slots
124
- requested_component .label_allocations = Labels (bdf = delegated_label .bdf [0 ], numa = delegated_label .numa [0 ])
125
-
126
123
# Find the VLAN from the BQM Component
127
124
if available_component .network_service_info is None or \
128
125
len (available_component .network_service_info .network_services ) != 1 :
@@ -145,14 +142,25 @@ def __update_shared_nic_labels_and_capacities(self, *, available_component: Comp
145
142
146
143
delegation_id , ifs_delegated_labels = self .get_delegations (lab_cap_delegations = ifs .get_label_delegations ())
147
144
148
- # Determine the index which points to the same PCI id as assigned above
149
- # This index points to the other relevant information such as MAC Address,
150
- # VLAN tag for that PCI device
151
- i = 0
152
- for pci_id in ifs_delegated_labels .bdf :
153
- if pci_id == delegated_label .bdf [0 ]:
154
- break
155
- i += 1
145
+ assigned_bdf = delegated_label .bdf [0 ]
146
+ assigned_numa = delegated_label .numa [0 ]
147
+
148
+ # Check if the requested component's VLAN exists in the delegated labels
149
+ if requested_component .labels and requested_component .labels .vlan and \
150
+ requested_component .labels .vlan in ifs_delegated_labels .vlan :
151
+ vlan_index = ifs_delegated_labels .vlan .index (requested_component .labels .vlan )
152
+ bdf_for_requested_vlan = ifs_delegated_labels .bdf [vlan_index ]
153
+
154
+ if bdf_for_requested_vlan in delegated_label .bdf :
155
+ bdf_index = delegated_label .bdf .index (bdf_for_requested_vlan )
156
+ assigned_bdf = bdf_for_requested_vlan
157
+ assigned_numa = delegated_label .numa [bdf_index ]
158
+
159
+ # Assign the first PCI Id from the list of available PCI slots
160
+ requested_component .label_allocations = Labels (bdf = assigned_bdf , numa = assigned_numa )
161
+
162
+ # Find index of assigned BDF in the interface delegated labels
163
+ assigned_index = ifs_delegated_labels .bdf .index (assigned_bdf )
156
164
157
165
# Updated the Requested component with VLAN, BDF, MAC
158
166
req_ns_name = next (iter (requested_component .network_service_info .network_services ))
@@ -162,11 +170,12 @@ def __update_shared_nic_labels_and_capacities(self, *, available_component: Comp
162
170
163
171
# Do not copy VLAN for OpenStack-vNIC
164
172
if requested_component .get_model () == Constants .OPENSTACK_VNIC_MODEL :
165
- lab = Labels (bdf = ifs_delegated_labels .bdf [i ], mac = ifs_delegated_labels .mac [i ],
166
- local_name = ifs_delegated_labels .local_name [i ])
173
+ lab = Labels (bdf = ifs_delegated_labels .bdf [assigned_index ], mac = ifs_delegated_labels .mac [assigned_index ],
174
+ local_name = ifs_delegated_labels .local_name [assigned_index ])
167
175
else :
168
- lab = Labels (bdf = ifs_delegated_labels .bdf [i ], mac = ifs_delegated_labels .mac [i ],
169
- vlan = ifs_delegated_labels .vlan [i ], local_name = ifs_delegated_labels .local_name [i ])
176
+ lab = Labels (bdf = ifs_delegated_labels .bdf [assigned_index ], mac = ifs_delegated_labels .mac [assigned_index ],
177
+ vlan = ifs_delegated_labels .vlan [assigned_index ],
178
+ local_name = ifs_delegated_labels .local_name [assigned_index ])
170
179
171
180
# For the Layer 2 copying the IP address to the label allocations
172
181
# This is to be used by AM Handler to configure Network Interface
0 commit comments