4141from fim .slivers .instance_catalog import InstanceCatalog
4242from fim .slivers .network_node import NodeSliver , NodeType
4343from fim .slivers .network_service import NetworkServiceSliver
44- from fim .slivers .topology_diff import WhatsModifiedFlag
44+ from fim .slivers .topology_diff import WhatsModifiedFlag , TopologyDiff
4545from fim .user import ServiceType , ExperimentTopology , InterfaceType
4646
4747from fabric_cf .actor .core .common .constants import ErrorCodes , Constants
@@ -333,7 +333,7 @@ def __build_ns_sliver_reservation(self, *, slice_graph: ABCASMPropertyGraph, nod
333333 if sliver .labels is None :
334334 sliver .labels = Labels ()
335335 sliver .labels = Labels .update (sliver .labels ,
336- local_name = f"{ self .slice_obj .get_slice_name ()} - { ifs . peer_labels . account_id } " )
336+ local_name = f"{ self .slice_obj .get_slice_name ()} " )
337337
338338 # Generate reservation for the sliver
339339 reservation = self .reservation_converter .generate_reservation (sliver = sliver ,
@@ -460,7 +460,7 @@ def __build_network_node_reservations(self, *, slice_graph: ABCASMPropertyGraph)
460460 sliver_to_res_mapping [nn_id ] = reservation .get_reservation_id ()
461461 return reservations , sliver_to_res_mapping
462462
463- def modify (self , * , new_slice_graph : ABCASMPropertyGraph ) -> List [LeaseReservationAvro ]:
463+ def modify (self , * , new_slice_graph : ABCASMPropertyGraph ) -> Tuple [ TopologyDiff , List [LeaseReservationAvro ] ]:
464464 """
465465 Modify an existing slice
466466 :param new_slice_graph New Slice Graph
@@ -478,8 +478,8 @@ def modify(self, *, new_slice_graph: ABCASMPropertyGraph) -> List[LeaseReservati
478478 ns_peered_reservations = []
479479 ns_mapping = {}
480480
481- if topology_diff is None :
482- return reservations
481+ if not topology_diff :
482+ return topology_diff , reservations
483483
484484 node_res_mapping = {}
485485
@@ -624,7 +624,7 @@ def modify(self, *, new_slice_graph: ABCASMPropertyGraph) -> List[LeaseReservati
624624 for x in modified_reservations :
625625 self .computed_reservations .append (x )
626626
627- return self .computed_reservations
627+ return topology_diff , self .computed_reservations
628628
629629 def __check_modify_on_fabnetv4ext (self , * , rid : str , req_sliver : NetworkServiceSliver ) -> NetworkServiceSliver :
630630 if req_sliver .get_type () != ServiceType .FABNetv4Ext :
@@ -704,21 +704,47 @@ def __check_modify_on_fabnetv4ext(self, *, rid: str, req_sliver: NetworkServiceS
704704
705705 return req_sliver
706706
707- def update_topology (self , * , topology : ExperimentTopology ):
708- for x in self .computed_reservations :
709- sliver = x .get_sliver ()
710- node_name = sliver .get_name ()
711- if isinstance (sliver , NodeSliver ) and node_name in topology .nodes :
712- node = topology .nodes [node_name ]
713- node .set_properties (labels = sliver .labels ,
714- label_allocations = sliver .label_allocations ,
715- capacity_allocations = sliver .capacity_allocations ,
716- reservation_info = sliver .reservation_info ,
717- node_map = sliver .node_map ,
718- management_ip = sliver .management_ip ,
719- capacity_hints = sliver .capacity_hints ,
720- capacities = sliver .capacities )
707+ def update_topology (self , * , topology : ExperimentTopology = None ,
708+ asm_graph : ABCASMPropertyGraph = None ):
709+ if topology :
710+ for x in self .computed_reservations :
711+ sliver = x .get_sliver ()
712+ node_name = sliver .get_name ()
713+ if isinstance (sliver , NodeSliver ) and node_name in topology .nodes :
714+ node = topology .nodes [node_name ]
715+ node .set_properties (labels = sliver .labels ,
716+ label_allocations = sliver .label_allocations ,
717+ capacity_allocations = sliver .capacity_allocations ,
718+ reservation_info = sliver .reservation_info ,
719+ node_map = sliver .node_map ,
720+ management_ip = sliver .management_ip ,
721+ capacity_hints = sliver .capacity_hints ,
722+ capacities = sliver .capacities )
721723
722724 def has_sliver_updates_at_authority (self ):
723725 return len (self .computed_reservations ) or len (self .computed_remove_reservations ) or \
724726 len (self .computed_modify_reservations ) or len (self .computed_modify_properties_reservations )
727+
728+ def has_topology_diffs (self , * , topology_diff : TopologyDiff ) -> bool :
729+ """
730+ Check if there any updates in topology
731+ :param topology_diff: topology difference object
732+ """
733+ ret_val = False
734+ if not topology_diff :
735+ ret_val = False
736+
737+ if len (topology_diff .added .nodes ) or len (topology_diff .added .components ) or \
738+ len (topology_diff .added .services ) or len (topology_diff .added .interfaces ):
739+ ret_val = True
740+
741+ if len (topology_diff .removed .nodes ) or len (topology_diff .removed .components ) or \
742+ len (topology_diff .removed .services ) or len (topology_diff .removed .interfaces ):
743+ ret_val = True
744+
745+ if len (topology_diff .modified .nodes ) or len (topology_diff .modified .components ) or \
746+ len (topology_diff .modified .services ) or len (topology_diff .modified .interfaces ):
747+ ret_val = True
748+
749+ self .logger .debug (f"Topology diff found: { ret_val } " )
750+ return ret_val
0 commit comments