Loading src/webui/service/main/DescriptorTools.py +12 −2 Original line number Diff line number Diff line Loading @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. import copy from typing import Dict, List, Optional, Tuple import copy, json from typing import Dict, List, Optional, Tuple, Union def get_descriptors_add_contexts(contexts : List[Dict]) -> List[Dict]: contexts_add = copy.deepcopy(contexts) Loading Loading @@ -49,6 +49,16 @@ def get_descriptors_add_slices(slices : List[Dict]) -> List[Dict]: slices_add.append(slice_copy) return slices_add TypeResourceValue = Union[str, int, bool, float, dict, list] def format_custom_config_rules(config_rules : List[Dict]) -> List[Dict]: for config_rule in config_rules: if 'custom' not in config_rule: continue custom_resource_value : TypeResourceValue = config_rule['custom']['resource_value'] if isinstance(custom_resource_value, (dict, list)): custom_resource_value = json.dumps(custom_resource_value, sort_keys=True, indent=0) config_rule['custom']['resource_value'] = custom_resource_value return config_rules def split_devices_by_rules(devices : List[Dict]) -> Tuple[List[Dict], List[Dict]]: devices_add = [] devices_config = [] Loading src/webui/service/main/routes.py +18 −1 Original line number Diff line number Diff line Loading @@ -21,7 +21,7 @@ from device.client.DeviceClient import DeviceClient from service.client.ServiceClient import ServiceClient from slice.client.SliceClient import SliceClient from webui.service.main.DescriptorTools import ( get_descriptors_add_contexts, get_descriptors_add_services, get_descriptors_add_slices, format_custom_config_rules, get_descriptors_add_contexts, get_descriptors_add_services, get_descriptors_add_slices, get_descriptors_add_topologies, split_devices_by_rules) from webui.service.main.forms import ContextForm, DescriptorForm Loading Loading @@ -84,6 +84,23 @@ def process_descriptors(descriptors): slices = descriptors.get('slices' , []) connections = descriptors.get('connections', []) # Format CustomConfigRules in Devices, Services and Slices provided in JSON format for device in devices: config_rules = device.get('device_config', {}).get('config_rules', []) config_rules = format_custom_config_rules(config_rules) device['device_config']['config_rules'] = config_rules for service in services: config_rules = service.get('service_config', {}).get('config_rules', []) config_rules = format_custom_config_rules(config_rules) service['service_config']['config_rules'] = config_rules for slice in slices: config_rules = slice.get('slice_config', {}).get('config_rules', []) config_rules = format_custom_config_rules(config_rules) slice['slice_config']['config_rules'] = config_rules # Context and Topology require to create the entity first, and add devices, links, services, slices, etc. in a # second stage. contexts_add = get_descriptors_add_contexts(contexts) Loading Loading
src/webui/service/main/DescriptorTools.py +12 −2 Original line number Diff line number Diff line Loading @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. import copy from typing import Dict, List, Optional, Tuple import copy, json from typing import Dict, List, Optional, Tuple, Union def get_descriptors_add_contexts(contexts : List[Dict]) -> List[Dict]: contexts_add = copy.deepcopy(contexts) Loading Loading @@ -49,6 +49,16 @@ def get_descriptors_add_slices(slices : List[Dict]) -> List[Dict]: slices_add.append(slice_copy) return slices_add TypeResourceValue = Union[str, int, bool, float, dict, list] def format_custom_config_rules(config_rules : List[Dict]) -> List[Dict]: for config_rule in config_rules: if 'custom' not in config_rule: continue custom_resource_value : TypeResourceValue = config_rule['custom']['resource_value'] if isinstance(custom_resource_value, (dict, list)): custom_resource_value = json.dumps(custom_resource_value, sort_keys=True, indent=0) config_rule['custom']['resource_value'] = custom_resource_value return config_rules def split_devices_by_rules(devices : List[Dict]) -> Tuple[List[Dict], List[Dict]]: devices_add = [] devices_config = [] Loading
src/webui/service/main/routes.py +18 −1 Original line number Diff line number Diff line Loading @@ -21,7 +21,7 @@ from device.client.DeviceClient import DeviceClient from service.client.ServiceClient import ServiceClient from slice.client.SliceClient import SliceClient from webui.service.main.DescriptorTools import ( get_descriptors_add_contexts, get_descriptors_add_services, get_descriptors_add_slices, format_custom_config_rules, get_descriptors_add_contexts, get_descriptors_add_services, get_descriptors_add_slices, get_descriptors_add_topologies, split_devices_by_rules) from webui.service.main.forms import ContextForm, DescriptorForm Loading Loading @@ -84,6 +84,23 @@ def process_descriptors(descriptors): slices = descriptors.get('slices' , []) connections = descriptors.get('connections', []) # Format CustomConfigRules in Devices, Services and Slices provided in JSON format for device in devices: config_rules = device.get('device_config', {}).get('config_rules', []) config_rules = format_custom_config_rules(config_rules) device['device_config']['config_rules'] = config_rules for service in services: config_rules = service.get('service_config', {}).get('config_rules', []) config_rules = format_custom_config_rules(config_rules) service['service_config']['config_rules'] = config_rules for slice in slices: config_rules = slice.get('slice_config', {}).get('config_rules', []) config_rules = format_custom_config_rules(config_rules) slice['slice_config']['config_rules'] = config_rules # Context and Topology require to create the entity first, and add devices, links, services, slices, etc. in a # second stage. contexts_add = get_descriptors_add_contexts(contexts) Loading