Skip to content

Commit 12a1e26

Browse files
authored
Merge pull request #351 from fabric-testbed/350-changes-needed-for-new-al2s-am
Changes needed for AL2S-AM updates
2 parents 9550eaf + c2909c8 commit 12a1e26

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

fabric_cf/actor/core/policy/network_service_inventory.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
#
2525
# Author: Komal Thareja ([email protected])
2626
import ipaddress
27+
import random
2728
import traceback
2829
from ipaddress import IPv6Network, IPv4Network
2930
from typing import List, Tuple
@@ -53,7 +54,8 @@ def __extract_vlan_range(*, labels: Labels) -> List[int] or None:
5354
for v_r in labels.vlan_range:
5455
vlans = v_r.split("-")
5556
for x in list(range(int(vlans[0]), int(vlans[1]) + 1)):
56-
vlan_range.append(x)
57+
if x not in vlan_range:
58+
vlan_range.append(x)
5759
else:
5860
vlans = labels.vlan_range.split("-")
5961
vlan_range = list(range(int(vlans[0]), int(vlans[1]) + 1))
@@ -103,6 +105,9 @@ def __exclude_allocated_vlans(self, *, available_vlan_range: List[int], bqm_ifs:
103105
if allocated_vlan in available_vlan_range:
104106
available_vlan_range.remove(allocated_vlan)
105107

108+
if available_vlan_range is None or len(available_vlan_range) == 0:
109+
raise BrokerException(error_code=ExceptionErrorCode.INSUFFICIENT_RESOURCES,
110+
msg=f"No VLANs available!")
106111
return available_vlan_range
107112

108113
def allocate_ifs(self, *, requested_ns: NetworkServiceSliver, requested_ifs: InterfaceSliver,
@@ -158,6 +163,7 @@ def allocate_ifs(self, *, requested_ns: NetworkServiceSliver, requested_ifs: Int
158163
existing_reservations=existing_reservations)
159164

160165
if requested_vlan is None:
166+
#requested_ifs.labels.vlan = str(random.choice(vlan_range))
161167
requested_ifs.labels.vlan = str(vlan_range[0])
162168
return requested_ifs
163169

@@ -182,13 +188,15 @@ def allocate_ifs(self, *, requested_ns: NetworkServiceSliver, requested_ifs: Int
182188
existing_reservations=existing_reservations)
183189
if bqm_ifs.get_type() != InterfaceType.FacilityPort:
184190
# Allocate the first available VLAN
191+
#requested_ifs.labels.vlan = str(random.choice(vlan_range))
185192
requested_ifs.labels.vlan = str(vlan_range[0])
186-
requested_ifs.label_allocations = Labels(vlan=str(vlan_range[0]))
193+
requested_ifs.label_allocations = Labels(vlan=requested_ifs.labels.vlan)
187194
else:
188195
if requested_ifs.labels is None:
189196
return requested_ifs
190197

191198
if requested_ifs.labels.vlan is None:
199+
#requested_ifs.labels.vlan = str(random.choice(vlan_range))
192200
requested_ifs.labels.vlan = str(vlan_range[0])
193201

194202
if int(requested_ifs.labels.vlan) not in vlan_range:
@@ -272,6 +280,7 @@ def allocate_vnic(self, *, rid: ID, requested_ns: NetworkServiceSliver, owner_ns
272280

273281
if requested_ns.label_allocations is None:
274282
requested_ns.label_allocations = Labels()
283+
#requested_ns.label_allocations.vlan = str(random.choice(vlans_range))
275284
requested_ns.label_allocations.vlan = str(vlans_range[0])
276285
except Exception as e:
277286
self.logger.error(f"Error in allocate_vNIC: {e}")
@@ -442,6 +451,7 @@ def allocate_peered_ifs(self, *, owner_switch: NodeSliver,
442451
vlan_range = self.__extract_vlan_range(labels=bqm_interface.labels)
443452
available_vlans = self.__exclude_allocated_vlans(available_vlan_range=vlan_range, bqm_ifs=bqm_interface,
444453
existing_reservations=existing_reservations)
454+
#vlan = str(random.choice(available_vlans))
445455
vlan = str(available_vlans[0])
446456
ifs_labels = Labels.update(ifs_labels, vlan=vlan)
447457

fabric_cf/orchestrator/core/orchestrator_slice_wrapper.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,8 @@ def __build_ns_sliver_reservation(self, *, slice_graph: ABCASMPropertyGraph, nod
276276

277277
ifs.set_node_map(node_map=node_map)
278278
peer_ifs_labels = ifs_mapping.get_peer_ifs().get_labels()
279-
ifs.set_peer_labels(lab=peer_ifs_labels)
279+
if peer_ifs_labels is not None:
280+
ifs.set_peer_labels(lab=peer_ifs_labels)
280281
# Peer_ifs is AL2S in ASM
281282
if peer_ifs_labels is not None and peer_ifs_labels.ipv4_subnet is not None:
282283
interface = ipaddress.IPv4Interface(peer_ifs_labels.ipv4_subnet)

0 commit comments

Comments
 (0)