1 import * as _ from 'lodash'
5 static getMaxFirstLevel(properties, flags: { [key: string]: boolean }) : number | null{
6 if (flags && !!flags['FLAG_2002_UNLIMITED_MAX']) {
7 return !_.isNil(properties) && !_.isNil(properties.max_instances) ? properties.max_instances : null;
9 return properties.max_instances || 1;
13 public static clampNumber = (number, min, max) => {
14 return Math.max(min, Math.min(number, max));
17 public static hasContents(object: Object): boolean {
18 if (object === undefined || object === null || object === "") {
24 public static convertModel(serviceModel) {
26 let isNewFlow:boolean = false;
28 for (let networkCustomizationName in serviceModel.networks) {
29 let networkModel = serviceModel.networks[networkCustomizationName];
30 if ( networkModel.customizationUuid != null ) {
36 for (let vnfCustomizationName in serviceModel.vnfs) {
37 let vnfModel = serviceModel.vnfs[vnfCustomizationName];
38 if ( vnfModel.customizationUuid != null ) {
45 return (Utils.convertNewModel (serviceModel) );
48 return (Utils.convertOldModel (serviceModel) );
52 private static convertNewModel (serviceModel ) {
53 let completeResources = new Array();
55 let convertedAsdcModel = {
56 "service": serviceModel.service,
59 "pnfs": serviceModel.pnfs,
60 "serviceProxies": serviceModel.serviceProxies,
61 "completeDisplayInputs": {},
65 for(let key in serviceModel.service.inputs) {
66 if(_.includes(["instance_node_target", "naming_policy", "vf_instance_name"], key)) {
67 delete convertedAsdcModel.service.inputs[key];
71 for (let networkCustomizationName in serviceModel.networks) {
72 let networkModel = serviceModel.networks[networkCustomizationName];
74 convertedAsdcModel.networks[networkModel.customizationUuid] = {
75 "uuid": networkModel.uuid,
76 "invariantUuid": networkModel.invariantUuid,
77 "version": networkModel.version,
78 "name": networkModel.name,
79 "modelCustomizationName": networkModel.modelCustomizationName,
80 "customizationUuid": networkModel.customizationUuid,
82 "description": networkModel.description,
88 "name": networkModel.modelCustomizationName,
89 "description": networkModel.description
92 completeResources.push (resource);
96 _.forEach(serviceModel.configurations, function(element) {
97 element.isConfig = true;
99 _.forEach(serviceModel.pnfs, function(element, key) {
101 element.modelCustomizationName= key;
103 let mergedVnfs = Object.assign(serviceModel.vnfs, serviceModel.configurations, serviceModel.pnfs);
105 for (let vnfCustomizationName in mergedVnfs) {
106 let vnfModel = mergedVnfs[vnfCustomizationName];
107 let vnfCustomizationUuid = vnfModel.customizationUuid;
108 convertedAsdcModel.vnfs[vnfModel.customizationUuid] = {
109 "uuid": vnfModel.uuid,
110 "invariantUuid": vnfModel.invariantUuid,
111 "version": vnfModel.version,
112 "name": vnfModel.name,
113 "modelCustomizationName": vnfModel.modelCustomizationName,
114 "customizationUuid": vnfModel.customizationUuid,
116 "description": vnfModel.description,
124 "sourceNodes": vnfModel.sourceNodes,
125 "collectorNodes": vnfModel.collectorNodes,
126 "isConfigurationByPolicy": vnfModel.configurationByPolicy ? vnfModel.configurationByPolicy : false,
127 "isConfig": vnfModel.isConfig ? vnfModel.isConfig : false,
128 "isPnf": vnfModel.isPnf ? vnfModel.isPnf : false
132 "name": vnfModel.modelCustomizationName,
133 "description": vnfModel.description
135 completeResources.push (resource);
137 if (vnfModel.commands != null) {
140 * internal_net_param_ntu: {
141 * command: get_input,
142 * displaName: internal_net_param_ntu,
143 * inputName: vccfd1_internal_net_param_ntu // pointer to input key
145 * If the input name (ptr) is one of instance_node_target, naming_policy or vf_instance_name
150 convertedAsdcModel.vnfs[vnfCustomizationUuid].properties=vnfModel.properties;
154 let vnf_function = "";
156 if ( !( _.isEmpty(vnfModel.properties) ) ) {
157 if (this.hasContents (vnfModel.properties.nf_type) ) {
158 vnf_type = vnfModel.properties.nf_type;
160 if (this.hasContents (vnfModel.properties.nf_role) ) {
161 vnf_role = vnfModel.properties.nf_role;
163 if (this.hasContents (vnfModel.properties.nf_function) ) {
164 vnf_function = vnfModel.properties.nf_function;
166 if (this.hasContents (vnfModel.properties.nf_naming_code) ) {
167 vnf_code = vnfModel.properties.nf_naming_code;
170 convertedAsdcModel.vnfs[vnfCustomizationUuid]["nfType"] = vnf_type;
171 convertedAsdcModel.vnfs[vnfCustomizationUuid]["nfRole"] = vnf_role;
172 convertedAsdcModel.vnfs[vnfCustomizationUuid]["nfFunction"] = vnf_function;
173 convertedAsdcModel.vnfs[vnfCustomizationUuid]["nfCode"] = vnf_code;
175 for (let vfModuleCustomizationName in serviceModel.vnfs[vnfCustomizationName].vfModules) {
176 let vfModuleModel = serviceModel.vnfs[vnfCustomizationName].vfModules[vfModuleCustomizationName];
177 convertedAsdcModel.vnfs[vnfCustomizationUuid].vfModules[vfModuleModel.customizationUuid] = vfModuleModel;
180 for (let volumeGroupCustomizationName in serviceModel.vnfs[vnfCustomizationName].volumeGroups) {
181 let volumeGroupModel = serviceModel.vnfs[vnfCustomizationName].volumeGroups[volumeGroupCustomizationName];
182 convertedAsdcModel.vnfs[vnfCustomizationUuid].volumeGroups[volumeGroupModel.customizationUuid] = volumeGroupModel;
187 return (convertedAsdcModel);
190 public static isALaCarte(instantiationType) {
191 return instantiationType !== 'Macro';
194 private static convertOldModel(serviceModel ) {
196 let convertedAsdcModel = {
197 "service": serviceModel.service,
200 "pnfs": serviceModel.pnfs,
201 "serviceProxies": serviceModel.serviceProxies,
202 "completeDisplayInputs": {},
205 let completeResources = new Array();
206 for (let networkCustomizationName in serviceModel.networks) {
207 let networkModel = serviceModel.networks[networkCustomizationName];
208 convertedAsdcModel.networks[networkModel.invariantUuid] = {};
209 convertedAsdcModel.networks[networkModel.uuid] = {
210 "uuid": networkModel.uuid,
211 "invariantUuid": networkModel.invariantUuid,
212 "version": networkModel.version,
213 "name": networkModel.name,
214 "modelCustomizationName": networkModel.modelCustomizationName,
215 "customizationUuid": networkModel.customizationUuid,
217 "description": networkModel.description,
222 "name": networkModel.modelCustomizationName,
223 "description": networkModel.description
225 completeResources.push (resource);
228 _.forEach(serviceModel.configurations, function(element) {
229 element.isConfig = true;
231 _.forEach(serviceModel.pnfs, function(element, key) {
233 element.modelCustomizationName= key;
235 let mergedVnfs = Object.assign(serviceModel.vnfs, serviceModel.configurations, serviceModel.pnfs);
237 for (let vnfCustomizationName in mergedVnfs) {
238 let vnfModel = mergedVnfs[vnfCustomizationName];
239 convertedAsdcModel.vnfs[vnfModel.uuid] = {
240 "uuid": vnfModel.uuid,
241 "invariantUuid": vnfModel.invariantUuid,
242 "version": vnfModel.version,
243 "name": vnfModel.name,
244 "modelCustomizationName": vnfModel.modelCustomizationName,
245 "customizationUuid": vnfModel.customizationUuid,
247 "description": vnfModel.description,
252 "sourceNodes": vnfModel.sourceNodes,
253 "collectorNodes": vnfModel.collectorNodes,
254 "isConfigurationByPolicy": vnfModel.configurationByPolicy ? vnfModel.configurationByPolicy : false,
255 "isConfig": vnfModel.isConfig ? vnfModel.isConfig : false,
256 "isPnf": vnfModel.isPnf ? vnfModel.isPnf : false
259 "name": vnfModel.modelCustomizationName,
260 "description": vnfModel.description
262 completeResources.push (resource);
264 for (let vfModuleCustomizationName in serviceModel.vnfs[vnfCustomizationName].vfModules) {
265 let vfModuleModel = serviceModel.vnfs[vnfCustomizationName].vfModules[vfModuleCustomizationName];
266 convertedAsdcModel.vnfs[vnfModel.uuid].vfModules[vfModuleModel.uuid] = vfModuleModel;
269 for (let volumeGroupCustomizationName in serviceModel.vnfs[vnfCustomizationName].volumeGroups) {
270 let volumeGroupModel = serviceModel.vnfs[vnfCustomizationName].volumeGroups[volumeGroupCustomizationName];
271 convertedAsdcModel.vnfs[vnfModel.uuid].volumeGroups[volumeGroupModel.uuid] = volumeGroupModel;
275 let completeDisplayInputs = {};
277 return (convertedAsdcModel);