blob: 3db77073869c864493f93d8a7d753cf6acc78395 [file] [log] [blame]
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);
};
}