Skip to content

Commit b3e5439

Browse files
authored
Merge pull request #336 from fabric-testbed/335-modify-issue-with-network-services
ns modify fix and better error messages
2 parents eb79910 + e711900 commit b3e5439

File tree

4 files changed

+17
-16
lines changed

4 files changed

+17
-16
lines changed

Dockerfile-auth

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
FROM python:3.9.0
22
MAINTAINER Komal Thareja<[email protected]>
33

4-
ARG HANDLERS_VER=1.5.1
4+
ARG HANDLERS_VER=1.5.2
55

66
RUN mkdir -p /usr/src/app
77
WORKDIR /usr/src/app

fabric_cf/actor/core/kernel/reservation_client.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -483,6 +483,9 @@ def prepare_ticket(self, extend: bool = False):
483483
if value1 == str(NodeType.Facility) or ifs.label_allocations is not None:
484484
continue
485485

486+
if value1 is None:
487+
self.fail(message=f"Node Map for the interface {ifs} not set {ifs.get_node_map()}")
488+
486489
result = value1.split(",")
487490
if Constants.PEERED in value1:
488491
if sliver.get_technology() == Constants.AL2S:

fabric_cf/actor/core/policy/network_service_control.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,10 @@ def __has_sliver_changed(current: NetworkServiceSliver, requested: NetworkServic
4949
if diff is None:
5050
return False
5151

52+
if diff.added.interfaces is not None or diff.removed.interfaces is not None or \
53+
diff.modified.interfaces is not None:
54+
return True
55+
5256
if diff.modified is not None and diff.modified.services is not None:
5357
for new_ns, flag in diff.modified.services:
5458
if not (flag & WhatsModifiedFlag.LABELS or flag & WhatsModifiedFlag.CAPACITIES):

fabric_cf/actor/fim/fim_helper.py

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -526,6 +526,7 @@ def get_site_interface_sliver(*, component: ComponentSliver or NodeSliver, local
526526
@param device_name device name
527527
@return Interface sliver
528528
"""
529+
result = None
529530
for ns in component.network_service_info.network_services.values():
530531
# Filter on region
531532
if region is not None:
@@ -540,21 +541,14 @@ def get_site_interface_sliver(*, component: ComponentSliver or NodeSliver, local
540541
if local_name is not None:
541542
result = list(filter(lambda x: (local_name in x.labels.local_name), result))
542543

543-
return random.choice(result)
544-
'''
545-
# Return specific interface where local name matches
546-
if local_name is not None:
547-
return next(x for x in ns.interface_info.interfaces.values() if local_name in x.get_name())
548-
else:
549-
# Return an interface chosen randomly
550-
if region is None:
551-
return random.choice(list(ns.interface_info.interfaces.values()))
552-
# Return an interface chosen randomly for a specific region
553-
else:
554-
result = list(filter(lambda x: (region in x.labels.region), ns.interface_info.interfaces.values()))
555-
return random.choice(result)
556-
'''
557-
return None
544+
if result is not None:
545+
break
546+
547+
if result is None or len(result) == 0:
548+
raise Exception(f"No interface found to service region {region}, device: {device_name} "
549+
f"local_name: {local_name} in component: {component}")
550+
551+
return random.choice(result)
558552

559553
@staticmethod
560554
def get_owners(*, bqm: ABCCBMPropertyGraph, node_id: str,

0 commit comments

Comments
 (0)