diff --git a/src/common/tools/descriptor/Loader.py b/src/common/tools/descriptor/Loader.py index ca93ef5f456bb4f8f0fd24638e53fa60c15d99c2..958536f26c3c63468f1af4a6d14130b6e12fd08f 100644 --- a/src/common/tools/descriptor/Loader.py +++ b/src/common/tools/descriptor/Loader.py @@ -128,21 +128,16 @@ class DescriptorLoader: self.__num_workers = num_workers - self.__dummy_mode = self.__descriptors.get('dummy_mode' , False) - self.__contexts = self.__descriptors.get('contexts' , []) - self.__topologies = self.__descriptors.get('topologies' , []) - self.__devices = self.__descriptors.get('devices' , []) - self.__links = self.__descriptors.get('links' , []) - self.__services = self.__descriptors.get('services' , []) - self.__slices = self.__descriptors.get('slices' , []) - self.__ietf_slices = self.__descriptors.get('ietf-network-slice-service:network-slice-services', {}) - self.__connections = self.__descriptors.get('connections', []) - - #--------------- Experimental Optical Link -------------- - - self.__optical_links = self.__descriptors.get("optical_links",[]) - - + self.__dummy_mode = self.__descriptors.get('dummy_mode' , False) + self.__contexts = self.__descriptors.get('contexts' , []) + self.__topologies = self.__descriptors.get('topologies' , []) + self.__devices = self.__descriptors.get('devices' , []) + self.__links = self.__descriptors.get('links' , []) + self.__services = self.__descriptors.get('services' , []) + self.__slices = self.__descriptors.get('slices' , []) + self.__ietf_slices = self.__descriptors.get('ietf-network-slice-service:network-slice-services', {}) + self.__connections = self.__descriptors.get('connections', []) + self.__optical_links = self.__descriptors.get('optical_links',[]) if len(self.__ietf_slices) > 0: for slice_service in self.__ietf_slices["slice-service"]: @@ -292,7 +287,6 @@ class DescriptorLoader: @property def num_connections(self) -> int: return len(self.__connections) - #------------- Experimental --------------- @property def optical_links(self) -> List[Dict]: return self.__optical_links @@ -358,19 +352,17 @@ class DescriptorLoader: self.__svc_cli.connect() self.__slc_cli.connect() - 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('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', 'config', self.__dev_cli.ConfigureDevice, Device, self.__devices_config) - 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', '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', 'update', self.__slc_cli.UpdateSlice, Slice, self.__slices ) - - #----------------------------------- Experimental --------------------------------------- - self._process_descr('link', 'add', self.__ctx_cli.SetOpticalLink, OpticalLink, self.__optical_links) + 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('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', 'config', self.__dev_cli.ConfigureDevice, Device, self.__devices_config) + 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', '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', 'update', self.__slc_cli.UpdateSlice, Slice, self.__slices ) + 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 # endpoints, and assigns topologies, services, and slices to contexts based on their identifiers. diff --git a/src/common/tools/object_factory/OpticalLink.py b/src/common/tools/object_factory/OpticalLink.py index d4d7a330ce67fa2690efe3a0d285a226e3e6e7c3..765cfac22d2aa6a168e01e41df393cc2b693a32f 100644 --- a/src/common/tools/object_factory/OpticalLink.py +++ b/src/common/tools/object_factory/OpticalLink.py @@ -1,75 +1,40 @@ +# 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() bin_num = bin(single_val) sliced_num=bin_num[2:] for i in range(len(sliced_num)): slot[str(i+1)]=int(sliced_num[i]) - return slot - + return slot -def order_list (lst:list[tuple])->list: - - if (len(lst)<=1): - return lst - else : - pivot,bit_val =lst[0] - lst_smaller = [] - lst_greater = [] - for element in lst[1:]: - 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}") +def correct_slot(dic: dict) -> dict: + _dict = copy.deepcopy(dic) + keys_list = list(_dict.keys()) + if len(keys_list) < 20: + num_keys = [int(i) for i in keys_list] + if num_keys[-1] != 20: + missed_keys = [] + diff = 20 - len(num_keys) + #print(f"diff {diff}") for i in range(diff+1): missed_keys.append(num_keys[-1]+i) - print(f"missed_keys {missed_keys}") + #print(f"missed_keys {missed_keys}") for key in missed_keys : - ordered_dict[key]=1 - print(f"result {ordered_dict}") - return order_dict_v1(ordered_dict) - \ No newline at end of file + _dict[key]=1 + #print(f"result {_dict}") + return _dict