cb5e1a1c8279b52e9b5db51cd39c8894dc9f3b62
[vid.git] / vid-webpack-master / src / app / shared / utils / utils.ts
1 import * as _ from 'lodash'
2
3 export class Utils {
4
5   public static clampNumber = (number, min, max) => {
6     return Math.max(min, Math.min(number, max));
7   };
8
9   public static hasContents(object: Object): boolean {
10     if (object === undefined || object === null || object === "") {
11       return false;
12     }
13     return true;
14   };
15
16   public static convertModel(serviceModel) {
17
18     let isNewFlow:boolean = false;
19
20     for (let networkCustomizationName in serviceModel.networks) {
21       let networkModel = serviceModel.networks[networkCustomizationName];
22       if ( networkModel.customizationUuid != null ) {
23         isNewFlow = true;
24         break;
25       }
26     }
27     if ( !isNewFlow ) {
28       for (let vnfCustomizationName in serviceModel.vnfs) {
29         let vnfModel = serviceModel.vnfs[vnfCustomizationName];
30         if ( vnfModel.customizationUuid != null ) {
31           isNewFlow = true;
32           break;
33         }
34       }
35     }
36     if ( isNewFlow ) {
37       return (Utils.convertNewModel (serviceModel) );
38     }
39     else {
40       return (Utils.convertOldModel (serviceModel) );
41     }
42   };
43
44   private static convertNewModel (serviceModel ) {
45     let completeResources = new Array();
46     let resource = {};
47     let convertedAsdcModel = {
48       "service": serviceModel.service,
49       "networks": {},
50       "vnfs": {},
51       "pnfs": serviceModel.pnfs,
52       "serviceProxies": serviceModel.serviceProxies,
53       "completeDisplayInputs": {},
54       "isNewFlow": true
55     };
56
57     for(let key in serviceModel.service.inputs) {
58       if(_.includes(["instance_node_target", "naming_policy", "vf_instance_name"], key)) {
59         delete convertedAsdcModel.service.inputs[key];
60       }
61     }
62
63     for (let networkCustomizationName in serviceModel.networks) {
64       let networkModel = serviceModel.networks[networkCustomizationName];
65
66       convertedAsdcModel.networks[networkModel.customizationUuid] = {
67         "uuid": networkModel.uuid,
68         "invariantUuid": networkModel.invariantUuid,
69         "version": networkModel.version,
70         "name": networkModel.name,
71         "modelCustomizationName": networkModel.modelCustomizationName,
72         "customizationUuid": networkModel.customizationUuid,
73         "inputs": "",
74         "description": networkModel.description,
75         "commands": {},
76         "displayInputs": {}
77       };
78
79       resource = {
80         "name": networkModel.modelCustomizationName,
81         "description": networkModel.description
82       };
83
84       completeResources.push (resource);
85
86     }
87
88     _.forEach(serviceModel.configurations, function(element) {
89       element.isConfig = true;
90     });
91     _.forEach(serviceModel.pnfs, function(element, key) {
92       element.isPnf= true;
93       element.modelCustomizationName= key;
94     });
95     let mergedVnfs = Object.assign(serviceModel.vnfs, serviceModel.configurations, serviceModel.pnfs);
96
97     for (let vnfCustomizationName in mergedVnfs) {
98       let vnfModel = mergedVnfs[vnfCustomizationName];
99       let vnfCustomizationUuid = vnfModel.customizationUuid;
100       convertedAsdcModel.vnfs[vnfModel.customizationUuid] = {
101         "uuid": vnfModel.uuid,
102         "invariantUuid": vnfModel.invariantUuid,
103         "version": vnfModel.version,
104         "name": vnfModel.name,
105         "modelCustomizationName": vnfModel.modelCustomizationName,
106         "customizationUuid": vnfModel.customizationUuid,
107         "inputs": "",
108         "description": vnfModel.description,
109         "vfModules": {},
110         "volumeGroups": {},
111         "commands": {},
112         "displayInputs": {},
113         "properties": {},
114         "nfRole": "",
115         "nfType": "",
116         "sourceNodes": vnfModel.sourceNodes,
117         "collectorNodes": vnfModel.collectorNodes,
118         "isConfigurationByPolicy": vnfModel.configurationByPolicy ? vnfModel.configurationByPolicy : false,
119         "isConfig": vnfModel.isConfig ? vnfModel.isConfig : false,
120         "isPnf": vnfModel.isPnf ? vnfModel.isPnf : false
121       };
122
123       resource = {
124         "name": vnfModel.modelCustomizationName,
125         "description": vnfModel.description
126       };
127       completeResources.push (resource);
128
129       if (vnfModel.commands != null) {
130         /*
131                  * commands: {
132                  *  internal_net_param_ntu: {
133                  *              command: get_input,
134                  *              displaName: internal_net_param_ntu,
135                  *              inputName: vccfd1_internal_net_param_ntu // pointer to input key
136                  * }
137                  * If the input name (ptr) is one of instance_node_target,  naming_policy or vf_instance_name
138                  * then ignore it
139                  *
140                  */
141
142         convertedAsdcModel.vnfs[vnfCustomizationUuid].properties=vnfModel.properties;
143         //
144         let vnf_type = "";
145         let vnf_role = "";
146         let vnf_function = "";
147         let vnf_code = "";
148         if ( !( _.isEmpty(vnfModel.properties) ) ) {
149           if (this.hasContents (vnfModel.properties.nf_type) ) {
150             vnf_type = vnfModel.properties.nf_type;
151           }
152           if (this.hasContents (vnfModel.properties.nf_role) ) {
153             vnf_role = vnfModel.properties.nf_role;
154           }
155           if (this.hasContents (vnfModel.properties.nf_function) ) {
156             vnf_function = vnfModel.properties.nf_function;
157           }
158           if (this.hasContents (vnfModel.properties.nf_naming_code) ) {
159             vnf_code = vnfModel.properties.nf_naming_code;
160           }
161         }
162         convertedAsdcModel.vnfs[vnfCustomizationUuid]["nfType"] = vnf_type;
163         convertedAsdcModel.vnfs[vnfCustomizationUuid]["nfRole"] = vnf_role;
164         convertedAsdcModel.vnfs[vnfCustomizationUuid]["nfFunction"] = vnf_function;
165         convertedAsdcModel.vnfs[vnfCustomizationUuid]["nfCode"] = vnf_code;
166         //
167         for (let vfModuleCustomizationName in serviceModel.vnfs[vnfCustomizationName].vfModules) {
168           let vfModuleModel = serviceModel.vnfs[vnfCustomizationName].vfModules[vfModuleCustomizationName];
169           convertedAsdcModel.vnfs[vnfCustomizationUuid].vfModules[vfModuleModel.customizationUuid] = vfModuleModel;
170         }
171
172         for (let volumeGroupCustomizationName in serviceModel.vnfs[vnfCustomizationName].volumeGroups) {
173           let volumeGroupModel = serviceModel.vnfs[vnfCustomizationName].volumeGroups[volumeGroupCustomizationName];
174           convertedAsdcModel.vnfs[vnfCustomizationUuid].volumeGroups[volumeGroupModel.customizationUuid] = volumeGroupModel;
175         }
176       }
177     }
178
179     return (convertedAsdcModel);
180   };
181
182   public static isALaCarte(instantiationType) {
183     return instantiationType !== 'Macro';
184   }
185
186   private static convertOldModel(serviceModel ) {
187     let resource = {};
188     let convertedAsdcModel = {
189       "service": serviceModel.service,
190       "networks": {},
191       "vnfs": {},
192       "pnfs": serviceModel.pnfs,
193       "serviceProxies": serviceModel.serviceProxies,
194       "completeDisplayInputs": {},
195       "isNewFlow": false
196     };
197     let completeResources = new Array();
198     for (let networkCustomizationName in serviceModel.networks) {
199       let networkModel = serviceModel.networks[networkCustomizationName];
200       convertedAsdcModel.networks[networkModel.invariantUuid] = {};
201       convertedAsdcModel.networks[networkModel.uuid] = {
202         "uuid": networkModel.uuid,
203         "invariantUuid": networkModel.invariantUuid,
204         "version": networkModel.version,
205         "name": networkModel.name,
206         "modelCustomizationName": networkModel.modelCustomizationName,
207         "customizationUuid": networkModel.customizationUuid,
208         "inputs": "",
209         "description": networkModel.description,
210         "commands": {},
211         "displayInputs": {}
212       };
213       resource = {
214         "name": networkModel.modelCustomizationName,
215         "description": networkModel.description
216       };
217       completeResources.push (resource);
218     }
219
220     _.forEach(serviceModel.configurations, function(element) {
221       element.isConfig = true;
222     });
223     _.forEach(serviceModel.pnfs, function(element, key) {
224       element.isPnf= true;
225       element.modelCustomizationName= key;
226     });
227     let mergedVnfs = Object.assign(serviceModel.vnfs, serviceModel.configurations, serviceModel.pnfs);
228
229     for (let vnfCustomizationName in mergedVnfs) {
230       let vnfModel = mergedVnfs[vnfCustomizationName];
231       convertedAsdcModel.vnfs[vnfModel.uuid] = {
232         "uuid": vnfModel.uuid,
233         "invariantUuid": vnfModel.invariantUuid,
234         "version": vnfModel.version,
235         "name": vnfModel.name,
236         "modelCustomizationName": vnfModel.modelCustomizationName,
237         "customizationUuid": vnfModel.customizationUuid,
238         "inputs": "",
239         "description": vnfModel.description,
240         "vfModules": {},
241         "volumeGroups": {},
242         "commands": {},
243         "displayInputs": {},
244         "sourceNodes": vnfModel.sourceNodes,
245         "collectorNodes": vnfModel.collectorNodes,
246         "isConfigurationByPolicy": vnfModel.configurationByPolicy ? vnfModel.configurationByPolicy : false,
247         "isConfig": vnfModel.isConfig ? vnfModel.isConfig : false,
248         "isPnf": vnfModel.isPnf ? vnfModel.isPnf : false
249       };
250       resource = {
251         "name": vnfModel.modelCustomizationName,
252         "description": vnfModel.description
253       };
254       completeResources.push (resource);
255
256       for (let vfModuleCustomizationName in serviceModel.vnfs[vnfCustomizationName].vfModules) {
257         let vfModuleModel = serviceModel.vnfs[vnfCustomizationName].vfModules[vfModuleCustomizationName];
258         convertedAsdcModel.vnfs[vnfModel.uuid].vfModules[vfModuleModel.uuid] = vfModuleModel;
259       }
260
261       for (let volumeGroupCustomizationName in serviceModel.vnfs[vnfCustomizationName].volumeGroups) {
262         let volumeGroupModel = serviceModel.vnfs[vnfCustomizationName].volumeGroups[volumeGroupCustomizationName];
263         convertedAsdcModel.vnfs[vnfModel.uuid].volumeGroups[volumeGroupModel.uuid] = volumeGroupModel;
264       }
265     }
266
267     let completeDisplayInputs = {};
268
269     return (convertedAsdcModel);
270   };
271 }