| import json |
| import os.path |
| |
| |
| ''' |
| This metadata identifies the folders to be zipped and uploaded to SDC for model distribution for a given VNF |
| ''' |
| GLOBAL_SERVICE_FOLDER_MAPPING = {"vFW" : ['vFW'], \ |
| "vLB" : ['vLB'], \ |
| "vVG" : ['vVG'], \ |
| "vCPE" : ['vCPE/infra', 'vCPE/vbng', 'vCPE/vbrgemu', 'vCPE/vgmux', 'vCPE/vgw'], |
| "vFWCL" : ['vFWCL/vFWSNK', 'vFWCL/vPKG'], |
| "vFWNG" : ['vFW_NextGen/templates'], |
| "vCPEInfra" : ['vCPE/infra'], |
| "vCPEvBNG" : ['vCPE/vbng'], |
| "vCPEvBRGEMU" : ['vCPE/vbrgemu'], |
| "vCPEvGMUX" : ['vCPE/vgmux'], |
| "vCPEvGW" : ['vCPE/vgw'], |
| "vCPEResCust" : ['vCPE/vgw'], |
| } |
| |
| ''' |
| Map the service to the list of VNFs to be orchestrated |
| ''' |
| GLOBAL_SERVICE_VNF_MAPPING = { |
| "vFW" : ['vFW'], |
| "vLB" : ['vLB'], |
| "vVG" : ['vVG'], |
| "vCPE" : ['vCPE'], |
| "vFWCL" : ['vFWCLvFWSNK', 'vFWCLvPKG'], |
| "vFWNG" : ['vFWNG'], |
| "vCPEInfra" : ['vCPEInfra'], |
| "vCPEvBNG" : ['vCPEvBNG'], |
| "vCPEvBRGEMU" : ['vCPEvBRGEMU'], |
| "vCPEvGMUX" : ['vCPEvGMUX'], |
| "vCPEvGW" : ['vCPEvGW'], |
| "vCPERestCust" : ['vCPEvGW'], |
| } |
| |
| ''' |
| |
| Map the service to the list of Generic Neutron Networks to be orchestrated |
| |
| ''' |
| GLOBAL_SERVICE_GEN_NEUTRON_NETWORK_MAPPING = { |
| "vCPEInfra" : ['CPE_SIGNAL','CPE_PUBLIC'], |
| "vCPEvBNG" : ['BRG_BNG', 'BNG_MUX'], |
| "vCPEvGMUX" : ['MUX_GW'], |
| "vCPEvBRGEMU" :[], |
| "vCPEvGW" :[], |
| "vCPERestCust" :[], |
| "vFW" :[], |
| "vLB" :[], |
| "vVG" :[], |
| "vFWCL" :[], |
| "vFWNG" :[], |
| } |
| ''' |
| |
| Map the service to the list of Deployment Artifacts for Closed Loop Control |
| |
| ''' |
| GLOBAL_SERVICE_DEPLOYMENT_ARTIFACT_MAPPING = { |
| "vCPEInfra" : [], |
| "vCPEvBNG" : [], |
| "vCPEvGMUX" : [], |
| "vCPEvBRGEMU" :[], |
| "vCPEvGW" :[], |
| "vCPERestCust" :[], |
| "vFW" :[], |
| "vLB" :['tca_docker_k8s_v4.yaml'], |
| "vVG" :[], |
| "vFWCL" :[], |
| "vFWNG" :[], |
| } |
| ''' |
| |
| |
| |
| This metadata identifes the preloads that need to be done for a VNF as there may be more than one (vLB) |
| "template" maps to the parameters in the preload_paramenters.py |
| - GLOBAL_PRELOAD_PARAMETERS[<testcase>][<template>] - |
| i.e. GLOBAL_PRELOAD_PARAMETERS['Demo'][dnsscaling_preload.template'] |
| ''' |
| GLOBAL_SERVICE_TEMPLATE_MAPPING = { |
| "vFW" : [{"isBase" : "true", "template" : "vfw_preload.template", "vnf_index": "0", "name_pattern": "base_vfw"}], |
| "vLB" : [{"isBase" : "true", "template" : "vlb_preload.template", "vnf_index": "0", "name_pattern": "base_vlb"}, |
| {"isBase" : "false", "template" : "dnsscaling_preload.template", "vnf_index": "1", "name_pattern": "dnsscaling", "prefix" : "vDNS_"}], |
| "vVG" : [{"isBase" : "true", "template" : "vvg_preload.template", "vnf_index": "0", "name_pattern": "base_vvg"}], |
| "vCPE" : [{"isBase" : "true", "template" : "vcpe_preload.template", "vnf_index": "0", "name_pattern": "base_clearwater"}], |
| "vFWSNK" : [{"isBase" : "true", "template" : "vfwsnk_preload.template", "vnf_index": "0", "name_pattern": "base_vfw"}], |
| "vPKG" : [{"isBase" : "true", "template" : "vpkg_preload.template", "vnf_index": "0", "name_pattern": "base_vpkg"}], |
| "vFWCL" : [{"isBase" : "true", "template" : "vfwsnk_preload.template", "vnf_index": "0", "name_pattern": "base_vfw"}, |
| {"isBase" : "true", "template" : "vpkg_preload.template", "vnf_index": "1", "name_pattern": "base_vpkg"}], |
| "vFWCLvFWSNK" : [{"isBase" : "true", "template" : "vfwsnk_preload.template", "vnf_index": "0", "name_pattern": "base_vfw"}], |
| "vFWCLvPKG" : [{"isBase" : "true", "template" : "vpkg_preload.template", "vnf_index": "1" , "name_pattern": "base_vpkg"}], |
| "vCPEInfra" : [{"isBase" : "true", "template" : "vcpe_infra_preload.template", "vnf_index": "0", "name_pattern": "base_infra"}], |
| "vCPEvBNG" : [{"isBase" : "true", "template" : "vcpe_vbng_preload.template", "vnf_index": "0", "name_pattern": "base_vbng"}], |
| "vCPEvBRGEMU" : [{"isBase" : "true", "template" : "vcpe_vbrgemu_preload.template", "vnf_index": "0", "name_pattern": "base_vbrgemu"}], |
| "vCPEvGMUX" : [{"isBase" : "true", "template" : "vcpe_vgmux_preload.template", "vnf_index": "0", "name_pattern": "base_vgmux"}], |
| "vCPEvGW" : [{"isBase" : "true", "template" : "vcpe_vgw_preload.template", "vnf_index": "0", "name_pattern": "base_vgw"}], |
| "vCPEResCust" : [{"isBase" : "true", "template" : "vcpe_vgw_preload.template", "vnf_index": "0", "name_pattern": "base_vgw"}], |
| } |
| |
| ''' |
| Used by the Heatbridge Validate Query to A&AI to locate the vserver name |
| ''' |
| GLOBAL_VALIDATE_NAME_MAPPING = {"vFW" : 'vfw_name_0', |
| "vLB" : 'vlb_name_0', |
| "vVG" : '', |
| "vCPE" : 'vgw_name_0', |
| "vCPEvGW" : 'vgw_name_0', |
| "vCPEResCust" : 'vgw_name_0', |
| "vCPEvDNS" : 'vdns_name_0', |
| "vCPEvAAA" : 'vaaa_name_0', |
| "vCPEvWEB" : 'vweb_name_0', |
| "vCPEvDHCP" : 'vdhcp_name_0', |
| "vCPEvGMUX" : 'vgmux_name_0', |
| "vFWSNK" : 'vfw_name_0', |
| "vPKG" : 'vpg_name_0', |
| "vFWCLvFWSNK" : 'vfw_name_0', |
| "vFWCLvPKG" : 'vpg_name_0', |
| } |
| |
| |
| |
| # Create dictionaries for new MAPPING data to join to original MAPPING data |
| GLOBAL_SERVICE_FOLDER_MAPPING2 = {} |
| GLOBAL_SERVICE_VNF_MAPPING2 = {} |
| GLOBAL_SERVICE_GEN_NEUTRON_NETWORK_MAPPING2 = {} |
| GLOBAL_SERVICE_DEPLOYMENT_ARTIFACT_MAPPING2 = {} |
| GLOBAL_SERVICE_TEMPLATE_MAPPING2 = {} |
| GLOBAL_VALIDATE_NAME_MAPPING2 = {} |
| |
| |
| |
| folder=os.path.join('./demo/service_mapping') |
| subfolders = [d for d in os.listdir(folder) if os.path.isdir(os.path.join(folder, d))] |
| |
| for service in subfolders: |
| filepath=os.path.join('./demo/service_mapping', service, 'service_mapping.json') |
| with open(filepath, 'r') as f: |
| service_mappings = json.load(f) |
| for mapping in service_mappings: |
| if mapping == 'GLOBAL_SERVICE_FOLDER_MAPPING': |
| GLOBAL_SERVICE_FOLDER_MAPPING2[service]=service_mappings[mapping][service] |
| if mapping == 'GLOBAL_SERVICE_VNF_MAPPING': |
| GLOBAL_SERVICE_VNF_MAPPING2[service]=service_mappings[mapping][service] |
| if mapping == 'GLOBAL_SERVICE_GEN_NEUTRON_NETWORK_MAPPING': |
| GLOBAL_SERVICE_GEN_NEUTRON_NETWORK_MAPPING2[service]=service_mappings[mapping][service] |
| if mapping == 'GLOBAL_SERVICE_DEPLOYMENT_ARTIFACT_MAPPING': |
| GLOBAL_SERVICE_DEPLOYMENT_ARTIFACT_MAPPING2[service]=service_mappings[mapping][service] |
| if mapping == 'GLOBAL_SERVICE_TEMPLATE_MAPPING': |
| # service changes for complex vnf |
| #GLOBAL_SERVICE_TEMPLATE_MAPPING2[service]=service_mappings[mapping][service] |
| for vnftype in service_mappings[mapping]: |
| GLOBAL_SERVICE_TEMPLATE_MAPPING2[vnftype]=service_mappings[mapping][vnftype] |
| if mapping == 'GLOBAL_VALIDATE_NAME_MAPPING': |
| # service changes for complex vnf |
| #GLOBAL_VALIDATE_NAME_MAPPING2[service]=service_mappings[mapping][service] |
| for vnftype in service_mappings[mapping]: |
| GLOBAL_VALIDATE_NAME_MAPPING2[vnftype]=service_mappings[mapping][vnftype] |
| |
| # Merge dictionaries |
| GLOBAL_SERVICE_FOLDER_MAPPING = dict(GLOBAL_SERVICE_FOLDER_MAPPING.items() + GLOBAL_SERVICE_FOLDER_MAPPING2.items()) |
| GLOBAL_SERVICE_VNF_MAPPING = dict(GLOBAL_SERVICE_VNF_MAPPING.items() + GLOBAL_SERVICE_VNF_MAPPING2.items()) |
| GLOBAL_SERVICE_GEN_NEUTRON_NETWORK_MAPPING = dict(GLOBAL_SERVICE_GEN_NEUTRON_NETWORK_MAPPING.items() + GLOBAL_SERVICE_GEN_NEUTRON_NETWORK_MAPPING2.items()) |
| GLOBAL_SERVICE_DEPLOYMENT_ARTIFACT_MAPPING = dict(GLOBAL_SERVICE_DEPLOYMENT_ARTIFACT_MAPPING.items() + GLOBAL_SERVICE_DEPLOYMENT_ARTIFACT_MAPPING2.items()) |
| GLOBAL_SERVICE_TEMPLATE_MAPPING = dict(GLOBAL_SERVICE_TEMPLATE_MAPPING.items() + GLOBAL_SERVICE_TEMPLATE_MAPPING2.items()) |
| GLOBAL_VALIDATE_NAME_MAPPING = dict(GLOBAL_VALIDATE_NAME_MAPPING.items() + GLOBAL_VALIDATE_NAME_MAPPING2.items()) |