Adding unlimited max value to VNF, NETWORK
[vid.git] / vid-webpack-master / src / app / shared / utils / utils.ts
1 import * as _ from 'lodash'
2
3 export class Utils {
4
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;
8     } else {
9       return properties.max_instances || 1;
10     }
11   }
12
13   public static clampNumber = (number, min, max) => {
14     return Math.max(min, Math.min(number, max));
15   };
16
17   public static hasContents(object: Object): boolean {
18     if (object === undefined || object === null || object === "") {
19       return false;
20     }
21     return true;
22   };
23
24   public static convertModel(serviceModel) {
25
26     let isNewFlow:boolean = false;
27
28     for (let networkCustomizationName in serviceModel.networks) {
29       let networkModel = serviceModel.networks[networkCustomizationName];
30       if ( networkModel.customizationUuid != null ) {
31         isNewFlow = true;
32         break;
33       }
34     }
35     if ( !isNewFlow ) {
36       for (let vnfCustomizationName in serviceModel.vnfs) {
37         let vnfModel = serviceModel.vnfs[vnfCustomizationName];
38         if ( vnfModel.customizationUuid != null ) {
39           isNewFlow = true;
40           break;
41         }
42       }
43     }
44     if ( isNewFlow ) {
45       return (Utils.convertNewModel (serviceModel) );
46     }
47     else {
48       return (Utils.convertOldModel (serviceModel) );
49     }
50   };
51
52   private static convertNewModel (serviceModel ) {
53     let completeResources = new Array();
54     let resource = {};
55     let convertedAsdcModel = {
56       "service": serviceModel.service,
57       "networks": {},
58       "vnfs": {},
59       "pnfs": serviceModel.pnfs,
60       "serviceProxies": serviceModel.serviceProxies,
61       "completeDisplayInputs": {},
62       "isNewFlow": true
63     };
64
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];
68       }
69     }
70
71     for (let networkCustomizationName in serviceModel.networks) {
72       let networkModel = serviceModel.networks[networkCustomizationName];
73
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,
81         "inputs": "",
82         "description": networkModel.description,
83         "commands": {},
84         "displayInputs": {}
85       };
86
87       resource = {
88         "name": networkModel.modelCustomizationName,
89         "description": networkModel.description
90       };
91
92       completeResources.push (resource);
93
94     }
95
96     _.forEach(serviceModel.configurations, function(element) {
97       element.isConfig = true;
98     });
99     _.forEach(serviceModel.pnfs, function(element, key) {
100       element.isPnf= true;
101       element.modelCustomizationName= key;
102     });
103     let mergedVnfs = Object.assign(serviceModel.vnfs, serviceModel.configurations, serviceModel.pnfs);
104
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,
115         "inputs": "",
116         "description": vnfModel.description,
117         "vfModules": {},
118         "volumeGroups": {},
119         "commands": {},
120         "displayInputs": {},
121         "properties": {},
122         "nfRole": "",
123         "nfType": "",
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
129       };
130
131       resource = {
132         "name": vnfModel.modelCustomizationName,
133         "description": vnfModel.description
134       };
135       completeResources.push (resource);
136
137       if (vnfModel.commands != null) {
138         /*
139                  * commands: {
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
144                  * }
145                  * If the input name (ptr) is one of instance_node_target,  naming_policy or vf_instance_name
146                  * then ignore it
147                  *
148                  */
149
150         convertedAsdcModel.vnfs[vnfCustomizationUuid].properties=vnfModel.properties;
151         //
152         let vnf_type = "";
153         let vnf_role = "";
154         let vnf_function = "";
155         let vnf_code = "";
156         if ( !( _.isEmpty(vnfModel.properties) ) ) {
157           if (this.hasContents (vnfModel.properties.nf_type) ) {
158             vnf_type = vnfModel.properties.nf_type;
159           }
160           if (this.hasContents (vnfModel.properties.nf_role) ) {
161             vnf_role = vnfModel.properties.nf_role;
162           }
163           if (this.hasContents (vnfModel.properties.nf_function) ) {
164             vnf_function = vnfModel.properties.nf_function;
165           }
166           if (this.hasContents (vnfModel.properties.nf_naming_code) ) {
167             vnf_code = vnfModel.properties.nf_naming_code;
168           }
169         }
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;
174         //
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;
178         }
179
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;
183         }
184       }
185     }
186
187     return (convertedAsdcModel);
188   };
189
190   public static isALaCarte(instantiationType) {
191     return instantiationType !== 'Macro';
192   }
193
194   private static convertOldModel(serviceModel ) {
195     let resource = {};
196     let convertedAsdcModel = {
197       "service": serviceModel.service,
198       "networks": {},
199       "vnfs": {},
200       "pnfs": serviceModel.pnfs,
201       "serviceProxies": serviceModel.serviceProxies,
202       "completeDisplayInputs": {},
203       "isNewFlow": false
204     };
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,
216         "inputs": "",
217         "description": networkModel.description,
218         "commands": {},
219         "displayInputs": {}
220       };
221       resource = {
222         "name": networkModel.modelCustomizationName,
223         "description": networkModel.description
224       };
225       completeResources.push (resource);
226     }
227
228     _.forEach(serviceModel.configurations, function(element) {
229       element.isConfig = true;
230     });
231     _.forEach(serviceModel.pnfs, function(element, key) {
232       element.isPnf= true;
233       element.modelCustomizationName= key;
234     });
235     let mergedVnfs = Object.assign(serviceModel.vnfs, serviceModel.configurations, serviceModel.pnfs);
236
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,
246         "inputs": "",
247         "description": vnfModel.description,
248         "vfModules": {},
249         "volumeGroups": {},
250         "commands": {},
251         "displayInputs": {},
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
257       };
258       resource = {
259         "name": vnfModel.modelCustomizationName,
260         "description": vnfModel.description
261       };
262       completeResources.push (resource);
263
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;
267       }
268
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;
272       }
273     }
274
275     let completeDisplayInputs = {};
276
277     return (convertedAsdcModel);
278   };
279 }