| import * as _ from 'lodash' |
| |
| export class Utils { |
| |
| static getMaxFirstLevel(properties, flags: { [key: string]: boolean }) : number | null{ |
| return this.getMaxInstancesAllowed(properties, 'max_instances', flags) |
| } |
| |
| static getMaxVfModule(properties, flags: { [key: string]: boolean }) : number | null{ |
| return this.getMaxInstancesAllowed(properties, 'maxCountInstances', flags) |
| } |
| |
| static getMaxInstancesAllowed(properties, filedName: string, flags: { [key: string]: boolean }) : number | null{ |
| if (!_.isNil(properties) && !_.isNil(properties[filedName])) { |
| return properties[filedName]; |
| } |
| return (flags && !!flags['FLAG_2002_UNLIMITED_MAX']) ? null : 1; |
| } |
| |
| public static clampNumber = (number, min, max) => { |
| return Math.max(min, Math.min(number, max)); |
| }; |
| |
| public static hasContents(object: Object): boolean { |
| if (object === undefined || object === null || object === "") { |
| return false; |
| } |
| return true; |
| }; |
| |
| public static convertModel(serviceModel) { |
| |
| let isNewFlow:boolean = false; |
| |
| for (let networkCustomizationName in serviceModel.networks) { |
| let networkModel = serviceModel.networks[networkCustomizationName]; |
| if ( networkModel.customizationUuid != null ) { |
| isNewFlow = true; |
| break; |
| } |
| } |
| if ( !isNewFlow ) { |
| for (let vnfCustomizationName in serviceModel.vnfs) { |
| let vnfModel = serviceModel.vnfs[vnfCustomizationName]; |
| if ( vnfModel.customizationUuid != null ) { |
| isNewFlow = true; |
| break; |
| } |
| } |
| } |
| if ( isNewFlow ) { |
| return (Utils.convertNewModel (serviceModel) ); |
| } |
| else { |
| return (Utils.convertOldModel (serviceModel) ); |
| } |
| }; |
| |
| private static convertNewModel (serviceModel ) { |
| let completeResources = new Array(); |
| let resource = {}; |
| let convertedAsdcModel = { |
| "service": serviceModel.service, |
| "networks": {}, |
| "vnfs": {}, |
| "pnfs": serviceModel.pnfs, |
| "serviceProxies": serviceModel.serviceProxies, |
| "completeDisplayInputs": {}, |
| "isNewFlow": true |
| }; |
| |
| for(let key in serviceModel.service.inputs) { |
| if(_.includes(["instance_node_target", "naming_policy", "vf_instance_name"], key)) { |
| delete convertedAsdcModel.service.inputs[key]; |
| } |
| } |
| |
| for (let networkCustomizationName in serviceModel.networks) { |
| let networkModel = serviceModel.networks[networkCustomizationName]; |
| |
| convertedAsdcModel.networks[networkModel.customizationUuid] = { |
| "uuid": networkModel.uuid, |
| "invariantUuid": networkModel.invariantUuid, |
| "version": networkModel.version, |
| "name": networkModel.name, |
| "modelCustomizationName": networkModel.modelCustomizationName, |
| "customizationUuid": networkModel.customizationUuid, |
| "inputs": "", |
| "description": networkModel.description, |
| "commands": {}, |
| "displayInputs": {} |
| }; |
| |
| resource = { |
| "name": networkModel.modelCustomizationName, |
| "description": networkModel.description |
| }; |
| |
| completeResources.push (resource); |
| |
| } |
| |
| _.forEach(serviceModel.configurations, function(element) { |
| element.isConfig = true; |
| }); |
| _.forEach(serviceModel.pnfs, function(element, key) { |
| element.isPnf= true; |
| element.modelCustomizationName= key; |
| }); |
| let mergedVnfs = Object.assign(serviceModel.vnfs, serviceModel.configurations, serviceModel.pnfs); |
| |
| for (let vnfCustomizationName in mergedVnfs) { |
| let vnfModel = mergedVnfs[vnfCustomizationName]; |
| let vnfCustomizationUuid = vnfModel.customizationUuid; |
| convertedAsdcModel.vnfs[vnfModel.customizationUuid] = { |
| "uuid": vnfModel.uuid, |
| "invariantUuid": vnfModel.invariantUuid, |
| "version": vnfModel.version, |
| "name": vnfModel.name, |
| "modelCustomizationName": vnfModel.modelCustomizationName, |
| "customizationUuid": vnfModel.customizationUuid, |
| "inputs": "", |
| "description": vnfModel.description, |
| "vfModules": {}, |
| "volumeGroups": {}, |
| "commands": {}, |
| "displayInputs": {}, |
| "properties": {}, |
| "nfRole": "", |
| "nfType": "", |
| "sourceNodes": vnfModel.sourceNodes, |
| "collectorNodes": vnfModel.collectorNodes, |
| "isConfigurationByPolicy": vnfModel.configurationByPolicy ? vnfModel.configurationByPolicy : false, |
| "isConfig": vnfModel.isConfig ? vnfModel.isConfig : false, |
| "isPnf": vnfModel.isPnf ? vnfModel.isPnf : false |
| }; |
| |
| resource = { |
| "name": vnfModel.modelCustomizationName, |
| "description": vnfModel.description |
| }; |
| completeResources.push (resource); |
| |
| if (vnfModel.commands != null) { |
| /* |
| * commands: { |
| * internal_net_param_ntu: { |
| * command: get_input, |
| * displaName: internal_net_param_ntu, |
| * inputName: vccfd1_internal_net_param_ntu // pointer to input key |
| * } |
| * If the input name (ptr) is one of instance_node_target, naming_policy or vf_instance_name |
| * then ignore it |
| * |
| */ |
| |
| convertedAsdcModel.vnfs[vnfCustomizationUuid].properties=vnfModel.properties; |
| // |
| let vnf_type = ""; |
| let vnf_role = ""; |
| let vnf_function = ""; |
| let vnf_code = ""; |
| if ( !( _.isEmpty(vnfModel.properties) ) ) { |
| if (this.hasContents (vnfModel.properties.nf_type) ) { |
| vnf_type = vnfModel.properties.nf_type; |
| } |
| if (this.hasContents (vnfModel.properties.nf_role) ) { |
| vnf_role = vnfModel.properties.nf_role; |
| } |
| if (this.hasContents (vnfModel.properties.nf_function) ) { |
| vnf_function = vnfModel.properties.nf_function; |
| } |
| if (this.hasContents (vnfModel.properties.nf_naming_code) ) { |
| vnf_code = vnfModel.properties.nf_naming_code; |
| } |
| } |
| convertedAsdcModel.vnfs[vnfCustomizationUuid]["nfType"] = vnf_type; |
| convertedAsdcModel.vnfs[vnfCustomizationUuid]["nfRole"] = vnf_role; |
| convertedAsdcModel.vnfs[vnfCustomizationUuid]["nfFunction"] = vnf_function; |
| convertedAsdcModel.vnfs[vnfCustomizationUuid]["nfCode"] = vnf_code; |
| // |
| for (let vfModuleCustomizationName in serviceModel.vnfs[vnfCustomizationName].vfModules) { |
| let vfModuleModel = serviceModel.vnfs[vnfCustomizationName].vfModules[vfModuleCustomizationName]; |
| convertedAsdcModel.vnfs[vnfCustomizationUuid].vfModules[vfModuleModel.customizationUuid] = vfModuleModel; |
| } |
| |
| for (let volumeGroupCustomizationName in serviceModel.vnfs[vnfCustomizationName].volumeGroups) { |
| let volumeGroupModel = serviceModel.vnfs[vnfCustomizationName].volumeGroups[volumeGroupCustomizationName]; |
| convertedAsdcModel.vnfs[vnfCustomizationUuid].volumeGroups[volumeGroupModel.customizationUuid] = volumeGroupModel; |
| } |
| } |
| } |
| |
| return (convertedAsdcModel); |
| }; |
| |
| public static isALaCarte(instantiationType) { |
| return instantiationType !== 'Macro'; |
| } |
| |
| private static convertOldModel(serviceModel ) { |
| let resource = {}; |
| let convertedAsdcModel = { |
| "service": serviceModel.service, |
| "networks": {}, |
| "vnfs": {}, |
| "pnfs": serviceModel.pnfs, |
| "serviceProxies": serviceModel.serviceProxies, |
| "completeDisplayInputs": {}, |
| "isNewFlow": false |
| }; |
| let completeResources = new Array(); |
| for (let networkCustomizationName in serviceModel.networks) { |
| let networkModel = serviceModel.networks[networkCustomizationName]; |
| convertedAsdcModel.networks[networkModel.invariantUuid] = {}; |
| convertedAsdcModel.networks[networkModel.uuid] = { |
| "uuid": networkModel.uuid, |
| "invariantUuid": networkModel.invariantUuid, |
| "version": networkModel.version, |
| "name": networkModel.name, |
| "modelCustomizationName": networkModel.modelCustomizationName, |
| "customizationUuid": networkModel.customizationUuid, |
| "inputs": "", |
| "description": networkModel.description, |
| "commands": {}, |
| "displayInputs": {} |
| }; |
| resource = { |
| "name": networkModel.modelCustomizationName, |
| "description": networkModel.description |
| }; |
| completeResources.push (resource); |
| } |
| |
| _.forEach(serviceModel.configurations, function(element) { |
| element.isConfig = true; |
| }); |
| _.forEach(serviceModel.pnfs, function(element, key) { |
| element.isPnf= true; |
| element.modelCustomizationName= key; |
| }); |
| let mergedVnfs = Object.assign(serviceModel.vnfs, serviceModel.configurations, serviceModel.pnfs); |
| |
| for (let vnfCustomizationName in mergedVnfs) { |
| let vnfModel = mergedVnfs[vnfCustomizationName]; |
| convertedAsdcModel.vnfs[vnfModel.uuid] = { |
| "uuid": vnfModel.uuid, |
| "invariantUuid": vnfModel.invariantUuid, |
| "version": vnfModel.version, |
| "name": vnfModel.name, |
| "modelCustomizationName": vnfModel.modelCustomizationName, |
| "customizationUuid": vnfModel.customizationUuid, |
| "inputs": "", |
| "description": vnfModel.description, |
| "vfModules": {}, |
| "volumeGroups": {}, |
| "commands": {}, |
| "displayInputs": {}, |
| "sourceNodes": vnfModel.sourceNodes, |
| "collectorNodes": vnfModel.collectorNodes, |
| "isConfigurationByPolicy": vnfModel.configurationByPolicy ? vnfModel.configurationByPolicy : false, |
| "isConfig": vnfModel.isConfig ? vnfModel.isConfig : false, |
| "isPnf": vnfModel.isPnf ? vnfModel.isPnf : false |
| }; |
| resource = { |
| "name": vnfModel.modelCustomizationName, |
| "description": vnfModel.description |
| }; |
| completeResources.push (resource); |
| |
| for (let vfModuleCustomizationName in serviceModel.vnfs[vnfCustomizationName].vfModules) { |
| let vfModuleModel = serviceModel.vnfs[vnfCustomizationName].vfModules[vfModuleCustomizationName]; |
| convertedAsdcModel.vnfs[vnfModel.uuid].vfModules[vfModuleModel.uuid] = vfModuleModel; |
| } |
| |
| for (let volumeGroupCustomizationName in serviceModel.vnfs[vnfCustomizationName].volumeGroups) { |
| let volumeGroupModel = serviceModel.vnfs[vnfCustomizationName].volumeGroups[volumeGroupCustomizationName]; |
| convertedAsdcModel.vnfs[vnfModel.uuid].volumeGroups[volumeGroupModel.uuid] = volumeGroupModel; |
| } |
| } |
| |
| let completeDisplayInputs = {}; |
| |
| return (convertedAsdcModel); |
| }; |
| } |