Skip to content
Snippets Groups Projects
Commit be92f747 authored by Lluis Gifre Renom's avatar Lluis Gifre Renom
Browse files

Pre-merge code cleanup

parent 7fc4cd83
No related branches found
No related tags found
2 merge requests!294Release TeraFlowSDN 4.0,!284Resolve: "(CNIT) Multi-Granular Optical Nodes and Optical Transpoders management"
...@@ -128,21 +128,16 @@ class DescriptorLoader: ...@@ -128,21 +128,16 @@ class DescriptorLoader:
self.__num_workers = num_workers self.__num_workers = num_workers
self.__dummy_mode = self.__descriptors.get('dummy_mode' , False) self.__dummy_mode = self.__descriptors.get('dummy_mode' , False)
self.__contexts = self.__descriptors.get('contexts' , []) self.__contexts = self.__descriptors.get('contexts' , [])
self.__topologies = self.__descriptors.get('topologies' , []) self.__topologies = self.__descriptors.get('topologies' , [])
self.__devices = self.__descriptors.get('devices' , []) self.__devices = self.__descriptors.get('devices' , [])
self.__links = self.__descriptors.get('links' , []) self.__links = self.__descriptors.get('links' , [])
self.__services = self.__descriptors.get('services' , []) self.__services = self.__descriptors.get('services' , [])
self.__slices = self.__descriptors.get('slices' , []) self.__slices = self.__descriptors.get('slices' , [])
self.__ietf_slices = self.__descriptors.get('ietf-network-slice-service:network-slice-services', {}) self.__ietf_slices = self.__descriptors.get('ietf-network-slice-service:network-slice-services', {})
self.__connections = self.__descriptors.get('connections', []) self.__connections = self.__descriptors.get('connections', [])
self.__optical_links = self.__descriptors.get('optical_links',[])
#--------------- Experimental Optical Link --------------
self.__optical_links = self.__descriptors.get("optical_links",[])
if len(self.__ietf_slices) > 0: if len(self.__ietf_slices) > 0:
for slice_service in self.__ietf_slices["slice-service"]: for slice_service in self.__ietf_slices["slice-service"]:
...@@ -292,7 +287,6 @@ class DescriptorLoader: ...@@ -292,7 +287,6 @@ class DescriptorLoader:
@property @property
def num_connections(self) -> int: return len(self.__connections) def num_connections(self) -> int: return len(self.__connections)
#------------- Experimental ---------------
@property @property
def optical_links(self) -> List[Dict]: return self.__optical_links def optical_links(self) -> List[Dict]: return self.__optical_links
...@@ -358,19 +352,17 @@ class DescriptorLoader: ...@@ -358,19 +352,17 @@ class DescriptorLoader:
self.__svc_cli.connect() self.__svc_cli.connect()
self.__slc_cli.connect() self.__slc_cli.connect()
self._process_descr('context', 'add', self.__ctx_cli.SetContext, Context, self.__contexts_add ) self._process_descr('context', 'add', self.__ctx_cli.SetContext, Context, self.__contexts_add )
self._process_descr('topology', 'add', self.__ctx_cli.SetTopology, Topology, self.__topologies_add) self._process_descr('topology', 'add', self.__ctx_cli.SetTopology, Topology, self.__topologies_add)
self._process_descr('controller', 'add', self.__dev_cli.AddDevice, Device, controllers_add ) self._process_descr('controller', 'add', self.__dev_cli.AddDevice, Device, controllers_add )
self._process_descr('device', 'add', self.__dev_cli.AddDevice, Device, network_devices_add ) self._process_descr('device', 'add', self.__dev_cli.AddDevice, Device, network_devices_add )
self._process_descr('device', 'config', self.__dev_cli.ConfigureDevice, Device, self.__devices_config) self._process_descr('device', 'config', self.__dev_cli.ConfigureDevice, Device, self.__devices_config)
self._process_descr('link', 'add', self.__ctx_cli.SetLink, Link, self.__links ) self._process_descr('link', 'add', self.__ctx_cli.SetLink, Link, self.__links )
self._process_descr('service', 'add', self.__svc_cli.CreateService, Service, self.__services_add ) self._process_descr('service', 'add', self.__svc_cli.CreateService, Service, self.__services_add )
self._process_descr('service', 'update', self.__svc_cli.UpdateService, Service, self.__services ) self._process_descr('service', 'update', self.__svc_cli.UpdateService, Service, self.__services )
self._process_descr('slice', 'add', self.__slc_cli.CreateSlice, Slice, self.__slices_add ) self._process_descr('slice', 'add', self.__slc_cli.CreateSlice, Slice, self.__slices_add )
self._process_descr('slice', 'update', self.__slc_cli.UpdateSlice, Slice, self.__slices ) self._process_descr('slice', 'update', self.__slc_cli.UpdateSlice, Slice, self.__slices )
self._process_descr('link', 'add', self.__ctx_cli.SetOpticalLink, OpticalLink, self.__optical_links )
#----------------------------------- Experimental ---------------------------------------
self._process_descr('link', 'add', self.__ctx_cli.SetOpticalLink, OpticalLink, self.__optical_links)
# By default the Context component automatically assigns devices and links to topologies based on their # By default the Context component automatically assigns devices and links to topologies based on their
# endpoints, and assigns topologies, services, and slices to contexts based on their identifiers. # endpoints, and assigns topologies, services, and slices to contexts based on their identifiers.
......
# Copyright 2022-2024 ETSI OSG/SDG TeraFlowSDN (TFS) (https://tfs.etsi.org/)
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import copy
def convert_to_dict (single_val:int)->dict: def convert_to_dict(single_val:int)->dict:
slot= dict() slot= dict()
bin_num = bin(single_val) bin_num = bin(single_val)
sliced_num=bin_num[2:] sliced_num=bin_num[2:]
for i in range(len(sliced_num)): for i in range(len(sliced_num)):
slot[str(i+1)]=int(sliced_num[i]) slot[str(i+1)]=int(sliced_num[i])
return slot return slot
def order_list (lst:list[tuple])->list: def correct_slot(dic: dict) -> dict:
_dict = copy.deepcopy(dic)
if (len(lst)<=1): keys_list = list(_dict.keys())
return lst if len(keys_list) < 20:
else : num_keys = [int(i) for i in keys_list]
pivot,bit_val =lst[0] if num_keys[-1] != 20:
lst_smaller = [] missed_keys = []
lst_greater = [] diff = 20 - len(num_keys)
for element in lst[1:]: #print(f"diff {diff}")
key,val=element
if (key <= pivot):
lst_smaller.append(element)
else :
lst_greater.append(element)
return order_list(lst_smaller) + [(pivot,bit_val)] + order_list(lst_greater)
def list_to_dict (lst:list[tuple[int,int]])->dict:
dct = dict()
for ele in lst :
key,value = ele
dct[str(key)]=value
return dct
def order_dict (dct:dict)->dict:
lst = list()
for key,value in sorted(dct.items()):
lst.append((int(key),value))
ordered_lst= order_list(lst)
if (len(ordered_lst)>0):
return list_to_dict (ordered_lst)
def order_dict_v1 (dct:dict)->dict:
lst = list()
for key,value in dct.items():
lst.append((int(key),value))
ordered_lst= order_list(lst)
if (len(ordered_lst)>0):
return list_to_dict (ordered_lst)
def correct_slot (dic:dict):
ordered_dict= order_dict_v1(dic)
keys_list = list(ordered_dict.keys())
if (len(keys_list) < 20):
num_keys= []
for i in keys_list:
num_keys.append(int(i))
if num_keys[-1] != 20 :
missed_keys=[]
diff= 20 - len(num_keys)
print(f"diff {diff}")
for i in range(diff+1): for i in range(diff+1):
missed_keys.append(num_keys[-1]+i) missed_keys.append(num_keys[-1]+i)
print(f"missed_keys {missed_keys}") #print(f"missed_keys {missed_keys}")
for key in missed_keys : for key in missed_keys :
ordered_dict[key]=1 _dict[key]=1
print(f"result {ordered_dict}") #print(f"result {_dict}")
return order_dict_v1(ordered_dict) return _dict
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment