ActivitySpec - Correcting logger messages
[sdc.git] / common / onap-sdc-artifact-generator-lib / onap-sdc-artifact-generator-test / src / main / java / org / onap / sdc / generator / ArtifactGenerationServiceTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.sdc.generator;
22
23 import org.onap.sdc.generator.aai.model.*;
24 import org.onap.sdc.generator.aai.model.Service;
25 import org.onap.sdc.generator.aai.tosca.GroupDefinition;
26 import org.onap.sdc.generator.aai.tosca.NodeTemplate;
27 import org.onap.sdc.generator.aai.tosca.ToscaTemplate;
28 import org.onap.sdc.generator.aai.xml.*;
29 import org.onap.sdc.generator.aai.xml.Model;
30 import org.onap.sdc.generator.data.*;
31 import org.junit.Assert;
32
33 import javax.xml.bind.JAXBContext;
34 import javax.xml.bind.JAXBException;
35 import javax.xml.bind.Unmarshaller;
36 import java.io.ByteArrayInputStream;
37 import java.io.IOException;
38 import java.io.InputStream;
39 import java.util.*;
40 import java.util.Properties;
41 import java.util.regex.Matcher;
42 import java.util.regex.Pattern;
43
44 @SuppressWarnings("Duplicates")
45 public class ArtifactGenerationServiceTest {
46
47     public static final String RESOURCE_MAPPING_NOT_FOUND = "Resource mapping not found for ";
48     public static final String INV_UID = "-INV_UID";
49     public static final String VF_MODULE_NAMESPACE = "org.openecomp.groups.VfModule";
50     public static final String VF_MODULE_DESCRIPTION = "vf_module_description";
51     public static final String CATEGORY = "category";
52     static Map<String, String> resourcesVersion = new HashMap<>();
53     public static Properties properties = new Properties();
54
55     @SuppressWarnings("Since15")
56     public static void validateName(List<Artifact> artifactList) throws JAXBException {
57         for(Artifact artifact : artifactList){
58             String xml = new String(Base64.getDecoder().decode(artifact.getPayload()));
59             Model model = getUnmarshalledArtifactModel(xml);
60             String xmlName = "AAI-"+ model.getModelVers().getModelVer().get(0).getModelName()
61                 +"-"+model
62                 .getModelType
63                 ()+"-"+model.getModelVers().getModelVer().get(0)
64                 .getModelVersion()+".xml";
65
66             Assert.assertEquals(true,artifact.getName().equals(xmlName));
67
68         }
69     }
70
71     public static void checkArtifactName(String name){
72         Assert.assertEquals(true,name.length()<=255);
73     }
74
75     public static void checkArtifactLabel(String label){
76         Pattern pattern = Pattern.compile("[a-zA-Z0-9-+\\s]+");
77         Matcher matcher = pattern.matcher(label);
78         Assert.assertEquals(true,matcher.matches());
79     }
80
81     public static void checkArtifactDescription(String description){
82         Pattern pattern = Pattern.compile("[a-zA-Z\\s\\t\\n]+");
83         Matcher matcher = pattern.matcher(description);
84         Assert.assertEquals(true,matcher.matches());
85         Assert.assertEquals(true,description.length()<=256);
86
87     }
88
89     public static void testResourceTosca(Iterator<ToscaTemplate> itr, Map<String, Model>
90         outputArtifactMap) {
91         while(itr.hasNext()){
92             ToscaTemplate toscaTemplate = itr.next();
93             String resourceVersion= resourcesVersion.get(toscaTemplate.getMetadata().get("UUID"));
94             toscaTemplate.getMetadata().put("version", resourceVersion);
95             if("VF".equals(toscaTemplate.getMetadata().get("type")) && !("Allotted Resource".equals
96                 (toscaTemplate.getMetadata().get(CATEGORY))) ){
97                 testVfTosca(outputArtifactMap, toscaTemplate);
98             } else if("VF".equals(toscaTemplate.getMetadata().get("type")) && ("Allotted Resource".equals
99                 (toscaTemplate.getMetadata().get(CATEGORY))) ){
100                 testAllottedResourceTosca(outputArtifactMap, toscaTemplate);
101             } else if("VL".equals(toscaTemplate.getMetadata().get("type"))){
102                 testL3NetworkResourceTosca(outputArtifactMap, toscaTemplate);
103             }
104         }
105     }
106
107     public static void testVfTosca(Map<String, Model> outputArtifactMap , ToscaTemplate resourceTosca) {
108
109         if (resourceTosca != null) {
110             Resource resource = new Resource();
111             resource.populateModelIdentificationInformation(resourceTosca.getMetadata());
112             String resourceNameVersionId = resource.getModelNameVersionId();
113             Model resourceAAIModel =
114                 getAAIModelByNameVersionId(resourceNameVersionId, outputArtifactMap);
115             if (resourceAAIModel != null) {
116                 validateResourceModelMetadata(resource, resourceAAIModel);
117                 //Validate Resource instance base widget
118
119                 ModelVer modelVersion = resourceAAIModel.getModelVers().getModelVer().get(0);
120
121                 List<ModelElement> matchedVFBaseWidgetElements =
122                     getModelElementbyRelationshipValue(modelVersion.getModelElements(),
123                         Widget.getWidget(Widget.Type.VF).getId());
124                 validateMatchedModelElementsInService(matchedVFBaseWidgetElements,
125                     Widget.getWidget(Widget.Type.VF).getName());
126
127                 validateWidgetIds(matchedVFBaseWidgetElements, Widget.getWidget(Widget.Type.VF).getName(),
128                     Widget.getWidget(Widget.Type.VF).getWidgetId());
129
130                 ModelElements baseResourceWidgetModelElements =
131                     matchedVFBaseWidgetElements.get(0).getModelElements();
132                 if (resourceTosca.getTopology_template() != null) {
133                     Map<String, String> groupIdTypeStore = getGroupsTypeStore(resourceTosca);
134
135                     if (baseResourceWidgetModelElements.getModelElement().size() !=
136                         groupIdTypeStore.size()) {
137                         org.testng.Assert.fail("Missing VFModule in VF model.xml");
138                     }
139
140                     for (String key : groupIdTypeStore.keySet()) {
141
142                         List<ModelElement> matchedResourceElements =
143                             getModelElementbyRelationshipValue(baseResourceWidgetModelElements, key);
144                         validateMatchedModelElementsInService(matchedResourceElements,
145                             Widget.getWidget(Widget.Type.VFMODULE).getName());
146                         Model resourceAAIVFModel = getAAIModelByNameVersionId(key, outputArtifactMap);
147                         Map<String, String> vfModuleModelMetadata =
148                             getVFModuleMetadataTosca(resourceTosca, key);
149                         Map<String, Object> vfModuleMembers = getVFModuleMembersTosca(resourceTosca, key);
150
151                         validateVFModelMetadata(vfModuleModelMetadata, resourceAAIVFModel);
152
153
154                         ModelVer modelVfVersion = resourceAAIVFModel.getModelVers().getModelVer().get(0);
155
156                         List<ModelElement> matchedVFModuleBaseWidgetElements =
157                             getModelElementbyRelationshipValue(modelVfVersion.getModelElements(),
158                                 Widget.getWidget(Widget.Type.VFMODULE).getId());
159                         validateMatchedModelElementsInService(matchedVFModuleBaseWidgetElements,
160                             Widget.getWidget(Widget.Type.VFMODULE).getName());
161                         validateWidgetIds(matchedVFModuleBaseWidgetElements, Widget.getWidget(Widget.Type.VFMODULE)
162                             .getName(), Widget.getWidget(Widget.Type.VFMODULE).getWidgetId());
163
164                         ModelElements baseResourceVFModuleWidgetModelElements =
165                             matchedVFModuleBaseWidgetElements.get(0).getModelElements();
166                         if (vfModuleMembers.containsKey("l3-network")) {
167                             //Validate l3
168                             List<ModelElement> matchedL3NetworkElements =
169                                 getModelElementbyRelationshipValue(baseResourceVFModuleWidgetModelElements,
170                                     Widget.getWidget(Widget.Type.L3_NET).getId());
171                             validateMatchedModelElementsInService(matchedL3NetworkElements,
172                                 Widget.getWidget(Widget.Type.L3_NET).getName());
173                             validateWidgetIds(matchedL3NetworkElements, Widget.getWidget(Widget.Type.L3_NET)
174                                 .getName(), Widget.getWidget(Widget.Type.L3_NET).getWidgetId());
175                         }
176                         if (vfModuleMembers.containsKey("vserver")) {
177                             //Validate vserver
178                             List<ModelElement> matchedVserverElements =
179                                 getModelElementbyRelationshipValue(baseResourceVFModuleWidgetModelElements,
180                                     Widget.getWidget(Widget.Type.VSERVER).getId());
181                             validateMatchedModelElementsInService(matchedVserverElements,
182                                 Widget.getWidget(Widget.Type.VSERVER).getName());
183                             ModelElements vserverWidgetModelElements =
184                                 matchedVserverElements.get(0).getModelElements();
185
186                             validateWidgetIds(matchedVserverElements, Widget.getWidget(Widget.Type.VSERVER)
187                                 .getName(), Widget.getWidget(Widget.Type.VSERVER).getWidgetId());
188
189
190                             //Validate vserver->vfc
191                             List<ModelElement> matchedVfcElements =
192                                 getModelElementbyRelationshipValue(vserverWidgetModelElements,
193                                     Widget.getWidget(Widget.Type.VFC).getId());
194                             validateMatchedModelElementsInService(matchedVfcElements,
195                                 Widget.getWidget(Widget.Type.VFC).getName());
196                             validateWidgetIds(matchedVfcElements, Widget.getWidget(Widget.Type.VFC).getName(),
197                                 Widget.getWidget(Widget.Type.VFC).getWidgetId());
198
199                             //Validate vserver->Image
200                             List<ModelElement> matchedImageElements =
201                                 getModelElementbyRelationshipValue(vserverWidgetModelElements,
202                                     Widget.getWidget(Widget.Type.IMAGE).getId());
203                             validateMatchedModelElementsInService(matchedImageElements,
204                                 Widget.getWidget(Widget.Type.IMAGE).getName());
205                             validateWidgetIds(matchedImageElements, Widget.getWidget(Widget.Type.IMAGE)
206                                 .getName(), Widget.getWidget(Widget.Type.IMAGE).getWidgetId());
207
208
209                             //Validate vserver->Flavor
210                             List<ModelElement> matchedFlavorElements =
211                                 getModelElementbyRelationshipValue(vserverWidgetModelElements,
212                                     Widget.getWidget(Widget.Type.FLAVOR).getId());
213                             validateMatchedModelElementsInService(matchedFlavorElements,
214                                 Widget.getWidget(Widget.Type.FLAVOR).getName());
215                             validateWidgetIds(matchedFlavorElements, Widget.getWidget(Widget.Type.FLAVOR).getName(),
216                                 Widget.getWidget(Widget.Type.FLAVOR).getWidgetId());
217
218                             //Validate vserver->Tenant
219                             List<ModelElement> matchedTenantElements =
220                                 getModelElementbyRelationshipValue(vserverWidgetModelElements,
221                                     Widget.getWidget(Widget.Type.TENANT).getId());
222                             validateMatchedModelElementsInService(matchedTenantElements,
223                                 Widget.getWidget(Widget.Type.TENANT).getName());
224                             validateWidgetIds(matchedTenantElements, Widget.getWidget(Widget.Type.TENANT).getName(),
225                                 Widget.getWidget(Widget.Type.TENANT).getWidgetId());
226
227                             //Validate vserver->l-interface
228                             if (vfModuleMembers.containsKey("l-interface")) {
229                                 List<ModelElement> matchedLinterfaceElements =
230                                     getModelElementbyRelationshipValue(vserverWidgetModelElements,
231                                         Widget.getWidget(Widget.Type.LINT).getId());
232                                 validateMatchedModelElementsInService(matchedLinterfaceElements,
233                                     Widget.getWidget(Widget.Type.LINT).getName());
234                                 validateWidgetIds(matchedLinterfaceElements, Widget.getWidget(Widget.Type.LINT).getName(),
235                                     Widget.getWidget(Widget.Type.LINT).getWidgetId());
236                             }
237                             //Validate vserver->volume
238                             if (vfModuleMembers.containsKey("volume")) {
239                                 List<ModelElement> matchedVolumeElements =
240                                     getModelElementbyRelationshipValue(vserverWidgetModelElements,
241                                         Widget.getWidget(Widget.Type.VOLUME).getId());
242                                 validateMatchedModelElementsInService(matchedVolumeElements,
243                                     Widget.getWidget(Widget.Type.VOLUME).getName());
244                                 validateWidgetIds(matchedVolumeElements, Widget.getWidget(Widget.Type.VOLUME).getName(),
245                                     Widget.getWidget(Widget.Type.VOLUME).getWidgetId());
246                             }
247                         }
248                     }
249                 }
250             } else {
251                 System.out.println(RESOURCE_MAPPING_NOT_FOUND + resourceNameVersionId);
252             }
253         }
254     }
255
256     public static void testAllottedResourceTosca(Map<String, Model> outputArtifactMap , ToscaTemplate
257         resourceTosca) {
258
259         if (resourceTosca != null) {
260             Resource resource = new Resource();
261             resource.populateModelIdentificationInformation(resourceTosca.getMetadata());
262             String resourceNameVersionId = resource.getModelNameVersionId();
263             Model resourceAAIModel =
264                 getAAIModelByNameVersionId(resourceNameVersionId, outputArtifactMap);
265             if (resourceAAIModel != null) {
266                 validateResourceModelMetadata(resource, resourceAAIModel);
267                 //Validate Resource instance base widget
268
269                 ModelVer modelVersion = resourceAAIModel.getModelVers().getModelVer().get(0);
270
271                 List<ModelElement> matchedVFBaseWidgetElements =
272                     getModelElementbyRelationshipValue(modelVersion.getModelElements(),
273                         Widget.getWidget(Widget.Type.ALLOTTED_RESOURCE).getId());
274                 validateMatchedModelElementsInService(matchedVFBaseWidgetElements,
275                     Widget.getWidget(Widget.Type.ALLOTTED_RESOURCE).getName());
276
277                 validateWidgetIds(matchedVFBaseWidgetElements, Widget.getWidget(Widget.Type.ALLOTTED_RESOURCE).getName(),
278                     Widget.getWidget(Widget.Type.ALLOTTED_RESOURCE).getWidgetId());
279
280                 validateWidgetIds(matchedVFBaseWidgetElements, Widget.getWidget(Widget.Type.ALLOTTED_RESOURCE).getName(),
281                     Widget.getWidget(Widget.Type.ALLOTTED_RESOURCE).getWidgetId());
282
283                 Map<String, Object> providingServiceDetails = getProvidingServiceDetails(resourceTosca);
284
285                 ModelElements containedModelElements = modelVersion.getModelElements().getModelElement().
286                     get(0).getModelElements();
287
288                 org.testng.Assert.assertEquals(containedModelElements.getModelElement().get(0).getRelationshipList()
289                      .getRelationship().get(0).getRelationshipData().get(0).getRelationshipValue(),
290                         providingServiceDetails.get("providing_service_uuid"));
291
292                 org.testng.Assert.assertEquals(containedModelElements.getModelElement().get(0).getRelationshipList()
293                     .getRelationship().get(0).getRelationshipData().get(1).getRelationshipValue(),
294                         providingServiceDetails.get("providing_service_invariant_uuid"));
295
296
297                 if("Allotted Resource".equals(resourceTosca.getMetadata().get(CATEGORY)) &&
298                     "Tunnel XConnect".equals(resourceTosca.getMetadata().get("subcategory"))) {
299
300                     List<ModelElement> matchedTunnelXConnectWidgetElements =
301                         getModelElementbyRelationshipValue(containedModelElements,
302                             Widget.getWidget(Widget.Type.TUNNEL_XCONNECT).getId());
303                     validateMatchedModelElementsInService(matchedTunnelXConnectWidgetElements,
304                         Widget.getWidget(Widget.Type.TUNNEL_XCONNECT).getName());
305
306                     validateWidgetIds(matchedTunnelXConnectWidgetElements, Widget.getWidget(Widget.Type.TUNNEL_XCONNECT).getName(),
307                         Widget.getWidget(Widget.Type.TUNNEL_XCONNECT).getWidgetId());
308                 }
309
310             }else {
311                 System.out.println(RESOURCE_MAPPING_NOT_FOUND + resourceNameVersionId);
312             }
313         }
314     }
315
316     public static Map<String, Object> getProvidingServiceDetails(ToscaTemplate resourceTemplate) {
317         Set<String> keys = resourceTemplate.getTopology_template().getNode_templates().keySet();
318
319         Map<String, Object> nodeProperties =null;
320         for(String key : keys) {
321             NodeTemplate node = resourceTemplate.getTopology_template().getNode_templates().get(key);
322             if(node.getType().contains("org.openecomp.resource.vfc") &&
323                 node.getMetadata().get(CATEGORY).equals("Allotted Resource")) {
324                 nodeProperties = node.getProperties();
325             }
326         }
327
328         return nodeProperties;
329     }
330
331     public static void testL3NetworkResourceTosca(Map<String, Model> outputArtifactMap , ToscaTemplate
332         resourceTosca) {
333
334         if (resourceTosca != null) {
335             Resource resource = new Resource();
336             resource.populateModelIdentificationInformation(resourceTosca.getMetadata());
337             String resourceNameVersionId = resource.getModelNameVersionId();
338             Model resourceAAIModel =
339                 getAAIModelByNameVersionId(resourceNameVersionId, outputArtifactMap);
340             if (resourceAAIModel != null) {
341                 validateResourceModelMetadata(resource, resourceAAIModel);
342                 //Validate Resource instance base widget
343
344                 ModelVer modelVersion = resourceAAIModel.getModelVers().getModelVer().get(0);
345
346                 List<ModelElement> matchedVFBaseWidgetElements =
347                     getModelElementbyRelationshipValue(modelVersion.getModelElements(),
348                         Widget.getWidget(Widget.Type.L3_NET).getId());
349                 validateMatchedModelElementsInService(matchedVFBaseWidgetElements,
350                     Widget.getWidget(Widget.Type.L3_NET).getName());
351
352                 validateWidgetIds(matchedVFBaseWidgetElements, Widget.getWidget(Widget.Type.L3_NET).getName(),
353                     Widget.getWidget(Widget.Type.L3_NET).getWidgetId());
354
355             }else {
356                 System.out.println(RESOURCE_MAPPING_NOT_FOUND + resourceNameVersionId);
357             }
358         }
359     }
360
361     public static void testServiceTosca(Map<String, Model> outputArtifactMap,List<ToscaTemplate>
362         toscas) {
363
364         ToscaTemplate serviceTosca = getServiceTosca(toscas);
365         if (serviceTosca == null) {
366             org.testng.Assert.fail("Service Tosca not found");
367         }
368         serviceTosca.getMetadata().put("version", SampleJUnitTest.additionalParams.get(
369             AdditionalParams
370             .ServiceVersion.getName()));
371         Service service = new Service();
372         service.populateModelIdentificationInformation(serviceTosca.getMetadata());
373         String serviceNameVersionId = service.getModelNameVersionId();
374         Model serviceAAIModel = getAAIModelByNameVersionId(serviceNameVersionId, outputArtifactMap);
375         validateServiceModelMetadata(service, serviceAAIModel);
376         //Validate Service instance base widget
377         ModelVer modelVersion =  serviceAAIModel.getModelVers().getModelVer().get(0);
378
379         List<ModelElement> matchedServiceBaseWidgetElements =
380             getModelElementbyRelationshipValue( modelVersion.getModelElements(),
381                 Widget.getWidget(Widget.Type.SERVICE).getId());
382         validateMatchedModelElementsInService(matchedServiceBaseWidgetElements,
383             Widget.getWidget(Widget.Type.SERVICE).getName());
384
385         validateWidgetIds(matchedServiceBaseWidgetElements, Widget.getWidget(Widget.Type.SERVICE).getName(),
386             Widget.getWidget(Widget.Type.SERVICE).getWidgetId());
387
388         ModelElements baseServiceWidgetModelElements =
389             matchedServiceBaseWidgetElements.get(0).getModelElements();
390
391
392         Map<String, String> nodeTemplateIdTypeStore = getNodeTemplateTypeStore(serviceTosca);
393         if (nodeTemplateIdTypeStore != null) {
394             for (Map.Entry<String, String> entry : nodeTemplateIdTypeStore.entrySet()) {
395                 if (entry.getValue().contains("org.openecomp.resource.vf")) {
396                     List<ModelElement> matchedResourceElements =
397                         getModelElementbyRelationshipValue(baseServiceWidgetModelElements, entry.getKey());
398                     if (entry.getValue().contains("org.openecomp.resource.vf.allottedResource")){
399                         validateMatchedModelElementsInService(matchedResourceElements,
400                             Widget.getWidget(Widget.Type.ALLOTTED_RESOURCE).getName());
401                     }else {
402                         validateMatchedModelElementsInService(matchedResourceElements,
403                             Widget.getWidget(Widget.Type.VF).getName());
404                     }
405
406                     //Validate uuid and invariantuuid are populated in model-ver.model-version-id and model.model-invariant-id
407                     org.testng.Assert.assertEquals(matchedResourceElements.get(0).getRelationshipList()
408                         .getRelationship().get(0)
409                         .getRelationshipData().get(0).getRelationshipValue(),entry.getKey());
410
411                     org.testng.Assert.assertEquals(matchedResourceElements.get(0).getRelationshipList().getRelationship().get(0)
412                         .getRelationshipData().get(1).getRelationshipValue(), nodeTemplateIdTypeStore
413                         .get(entry.getKey()+ INV_UID));
414                 } else if(entry.getValue().contains("org.openecomp.resource.vl")){
415                     //validate l3-network in service tosca
416                     List<ModelElement> matchedResourceElements =
417                         getModelElementbyRelationshipValue(baseServiceWidgetModelElements, entry.getKey());
418                     validateMatchedModelElementsInService(matchedResourceElements,
419                         Widget.getWidget(Widget.Type.L3_NET).getName());
420                     //Validate uuid and invariantuuid are populated in model-ver.model-version-id and model.model-invariant-id
421                     org.testng.Assert.assertEquals(matchedResourceElements.get(0).getRelationshipList()
422                         .getRelationship().get(0)
423                         .getRelationshipData().get(0).getRelationshipValue(),entry.getKey());
424
425                     org.testng.Assert.assertEquals(matchedResourceElements.get(0).getRelationshipList().getRelationship().get(0)
426                         .getRelationshipData().get(1).getRelationshipValue(), nodeTemplateIdTypeStore
427                         .get(entry.getKey() + INV_UID));
428                 }
429             }
430         }
431     }
432
433     private static void validateWidgetIds(List<ModelElement> matchedServiceBaseWidgetElements,
434                                           String widgetName, String widgetInvUuId) {
435         org.testng.Assert.assertEquals(matchedServiceBaseWidgetElements.get(0).getRelationshipList().getRelationship().get(0)
436             .getRelationshipData().get(0).getRelationshipValue(), properties.getProperty(
437             ArtifactType.AAI.name()
438             + ".model-version-id."+ widgetName));
439
440         org.testng.Assert.assertEquals(matchedServiceBaseWidgetElements.get(0).getRelationshipList().getRelationship().get(0)
441             .getRelationshipData().get(1).getRelationshipValue(), widgetInvUuId);
442     }
443
444
445
446     private static void validateMatchedModelElementsInService(List<ModelElement> matchedModelElements, String modelType) {
447         if (matchedModelElements.isEmpty()) {
448             Assert.fail(modelType + " not present ");
449         }
450         if (matchedModelElements.size() > 1) {
451             Assert.fail("More than one " + modelType + " present ");
452         }
453     }
454
455     private static Map<String, String> getNodeTemplateTypeStore(ToscaTemplate toscaTemplate) {
456         if (toscaTemplate.getTopology_template() != null) {
457             Map<String, NodeTemplate> nodeTemplateMap =
458                 toscaTemplate.getTopology_template().getNode_templates();
459             Map<String, String> nodeTemplateIdTypeStore = new LinkedHashMap<>();
460             if (nodeTemplateMap != null) {
461                 for (Map.Entry<String, NodeTemplate> e : nodeTemplateMap.entrySet()) {
462                     String uuid = e.getValue().getMetadata().get("resourceUUID");
463                     if (GeneratorUtil.isEmpty(uuid)) {
464                         uuid = e.getValue().getMetadata().get("UUID");
465                         if (GeneratorUtil.isEmpty(uuid)) {
466                             Assert.fail("UUID Not found");
467                         }
468                     }
469                     if(e.getValue().getType().contains("org.openecomp.resource.vf.")&& (e.getValue()
470                         .getMetadata().get(CATEGORY).equals("Allotted Resource")))
471                     {
472                         e.getValue().setType("org.openecomp.resource.vf.allottedResource");
473                     }
474                     nodeTemplateIdTypeStore.put(uuid, e.getValue().getType());
475                     resourcesVersion.put(uuid,e.getValue().getMetadata().get
476                         ("version"));
477                     //Populate invraintUuId for V9
478                     String invUuId = e.getValue().getMetadata().get("invariantUUID");
479                     nodeTemplateIdTypeStore.put(uuid + INV_UID , invUuId);
480                 }
481             }
482             return nodeTemplateIdTypeStore;
483         } else {
484             return null;
485         }
486     }
487
488
489     private static Map<String, String> getGroupsTypeStore(ToscaTemplate toscaTemplate) {
490         if(toscaTemplate.getTopology_template() !=null) {
491             Map<String, GroupDefinition> groupDefinitionMap = toscaTemplate.getTopology_template().getGroups();
492             Map<String, String> groupDefinitionIdTypeStore = new LinkedHashMap<>();
493             if (groupDefinitionMap != null) {
494                 for (Map.Entry<String, GroupDefinition> e : groupDefinitionMap.entrySet()) {
495                     if (e.getValue().getType().contains(VF_MODULE_NAMESPACE)) {
496                         String uuid = e.getValue().getMetadata().get("vfModuleModelUUID");
497                         if (GeneratorUtil.isEmpty(uuid)) {
498                             uuid = e.getValue().getMetadata().get("UUID");
499                             if (GeneratorUtil.isEmpty(uuid))
500                                 Assert.fail("UUID Not found");
501                         }
502                         groupDefinitionIdTypeStore.put(uuid, e.getValue().getType());
503                     }
504                 }
505             }
506             return groupDefinitionIdTypeStore;
507         }
508         else {
509             return null;
510         }
511     }
512
513     private static void validateServiceModelMetadata(Service serviceToscaModel, Model generatedAAIModel) {
514         Assert.assertEquals(serviceToscaModel.getModelNameVersionId(), generatedAAIModel
515             .getModelVers().getModelVer().get(0).getModelVersionId());
516         Assert.assertEquals(serviceToscaModel.getModelId(), generatedAAIModel.getModelInvariantId());
517         Assert.assertEquals(serviceToscaModel.getModelName(), generatedAAIModel.getModelVers()
518             .getModelVer().get(0).getModelName());
519         Assert.assertEquals(serviceToscaModel.getModelVersion(), generatedAAIModel.getModelVers()
520             .getModelVer().get(0).getModelVersion());
521         Assert.assertEquals(serviceToscaModel.getModelDescription(), generatedAAIModel.getModelVers()
522             .getModelVer().get(0).getModelDescription());
523     }
524
525     private static void validateResourceModelMetadata(Resource resouerceToscaModel, Model generatedAAIModel) {
526         Assert.assertEquals(resouerceToscaModel.getModelNameVersionId(), generatedAAIModel
527             .getModelVers().getModelVer().get(0).getModelVersionId());
528         Assert.assertEquals(resouerceToscaModel.getModelId(), generatedAAIModel.getModelInvariantId());
529         Assert.assertEquals(resouerceToscaModel.getModelName(), generatedAAIModel.getModelVers()
530             .getModelVer().get(0).getModelName());
531         Assert.assertEquals(resouerceToscaModel.getModelVersion(), generatedAAIModel.getModelVers()
532             .getModelVer().get(0).getModelVersion());
533         Assert.assertEquals(resouerceToscaModel.getModelDescription(), generatedAAIModel.getModelVers()
534             .getModelVer().get(0).getModelDescription());
535     }
536
537     private static void validateVFModelMetadata(Map<String, String> vfModuleModelMetadata, Model generatedAAIModel) {
538         Assert.assertEquals(vfModuleModelMetadata.get("vfModuleModelUUID"),  generatedAAIModel
539             .getModelVers().getModelVer().get(0).getModelVersionId());
540         Assert.assertEquals(vfModuleModelMetadata.get("vfModuleModelInvariantUUID"), generatedAAIModel.getModelInvariantId());
541         Assert.assertEquals(vfModuleModelMetadata.get("vfModuleModelName"), generatedAAIModel.getModelVers()
542             .getModelVer().get(0).getModelName());
543         Assert.assertEquals(vfModuleModelMetadata.get("vfModuleModelVersion"), generatedAAIModel.getModelVers()
544             .getModelVer().get(0).getModelVersion());
545         Assert.assertEquals(vfModuleModelMetadata.get(VF_MODULE_DESCRIPTION), generatedAAIModel.getModelVers()
546             .getModelVer().get(0).getModelDescription());
547
548     }
549
550     private static Model getAAIModelByNameVersionId(String nameVersionId,
551                                                     Map<String, Model> outputArtifactMap) {
552         return outputArtifactMap.get(nameVersionId);
553     }
554
555     private static List<ModelElement> getModelElementbyRelationshipValue(ModelElements modelElements,
556                                                                          String relationshipValue) {
557         List<ModelElement> matchedModelElements = new ArrayList<>();
558         if (modelElements != null) {
559             List<ModelElement> modelElementList = modelElements.getModelElement();
560             for (ModelElement element : modelElementList) {
561                 List<Relationship> relationshipList = element.getRelationshipList().getRelationship();
562                 for (Relationship r : relationshipList) {
563                     List<RelationshipData> relationshipDataList = r.getRelationshipData();
564                     for (RelationshipData relationshipData : relationshipDataList) {
565                         if (relationshipData.getRelationshipValue().equals(relationshipValue))
566                             matchedModelElements.add(element);
567                     }
568                 }
569             }
570         }
571         return matchedModelElements;
572     }
573
574     public static void populateAAIGeneratedModelStore(Map<String, Model> outputArtifactMap,List<Artifact> resultData) throws JAXBException {
575         for (Artifact outputArtifact : resultData) {
576             if (outputArtifact.getType().equals(ArtifactType.MODEL_INVENTORY_PROFILE.name())) {
577                 byte[] decodedPayload = GeneratorUtil.decoder(outputArtifact.getPayload());
578                 Model aaiModel = getUnmarshalledArtifactModel(new String(decodedPayload));
579                 outputArtifactMap.put(aaiModel.getModelVers().getModelVer().get(0).getModelVersionId(), aaiModel);
580             }
581         }
582     }
583
584     private static Model getUnmarshalledArtifactModel(String aaiModel) throws JAXBException {
585         JAXBContext jaxbContext;
586
587         jaxbContext = JAXBContext.newInstance(Model.class);
588         Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
589
590         try (InputStream aaiModelStream = new ByteArrayInputStream(aaiModel.getBytes())) {
591             return (Model) unmarshaller.unmarshal(aaiModelStream);
592         } catch (IOException ignored) { /* ignore */ }
593         throw new RuntimeException("could not resolve artifact model");
594     }
595
596     /**
597      * Identify the service tosca artifact from the list of translated tosca inputs
598      *
599      * @param input List of translated {@link ToscaTemplate tosca} object models
600      * @return Identified service {@link ToscaTemplate tosca}
601      */
602     private static ToscaTemplate getServiceTosca(List<ToscaTemplate> input) {
603         Iterator<ToscaTemplate> iter = input.iterator();
604         while (iter.hasNext()) {
605             ToscaTemplate tosca = iter.next();
606             if (tosca.isService()) {
607                 iter.remove();
608                 return tosca;
609             }
610         }
611         return null;
612     }
613
614
615     private static Map<String, String> getVFModuleMetadataTosca(ToscaTemplate toscaTemplate, String vfModuleModelUUID) {
616         Map<String, GroupDefinition> groupDefinitionMap = toscaTemplate.getTopology_template().getGroups();
617         Map<String, String> vfModuleModelMetadata = new LinkedHashMap<>();
618         for (Map.Entry<String, GroupDefinition> e : groupDefinitionMap.entrySet()) {
619             if (e.getValue().getType().contains(VF_MODULE_NAMESPACE)) {
620                 String uuid = e.getValue().getMetadata().get("vfModuleModelUUID");
621                 if (uuid == vfModuleModelUUID) {
622                     vfModuleModelMetadata = e.getValue().getMetadata();
623                     vfModuleModelMetadata.put(VF_MODULE_DESCRIPTION, (String) e.getValue().getProperties().get(VF_MODULE_DESCRIPTION));
624                 }
625             }
626         }
627         return vfModuleModelMetadata;
628     }
629
630     private static Map<String, Object> getVFModuleMembersTosca(ToscaTemplate toscaTemplate, String vfModuleModelUUID) {
631         Map<String, GroupDefinition> groupDefinitionMap = toscaTemplate.getTopology_template().getGroups();
632         Map<String, NodeTemplate> nodeTemplateMaps = toscaTemplate.getTopology_template().getNode_templates();
633         Map<String, Object> vfModuleMembers = new LinkedHashMap<>();
634         List<String> vfModuleModelMetadata;
635         for (Map.Entry<String, GroupDefinition> e : groupDefinitionMap.entrySet()) {
636             if (e.getValue().getType().contains(VF_MODULE_NAMESPACE)) {
637                 String uuid = e.getValue().getMetadata().get("vfModuleModelUUID");
638                 if (uuid == vfModuleModelUUID) {
639                     vfModuleModelMetadata = e.getValue().getMembers();
640                     Iterator itr = vfModuleModelMetadata.iterator();
641                     while (itr.hasNext()) {
642                         Object obj= itr.next();
643                         NodeTemplate nodeTemplate = nodeTemplateMaps.get(obj);
644                         String nodetype = null;
645                         if (nodeTemplate != null)
646                             nodetype = nodeTemplate.getType();
647                         if (nodetype != null) {
648                             String widgetType = membersType(nodetype);
649                             if (widgetType != null)
650                                 vfModuleMembers.put(widgetType, obj);
651                         }
652                     }
653
654                 }
655             }
656         }
657
658         return vfModuleMembers;
659     }
660
661
662     private static String membersType(String toscaType) {
663         String modelToBeReturned = null;
664         while (toscaType != null && toscaType.lastIndexOf('.') != -1 && modelToBeReturned == null) {
665
666             switch (toscaType) {
667
668                 case "org.openecomp.resource.vfc":
669                     modelToBeReturned = "vserver";
670                     break;
671                 case "org.openecomp.resource.cp":
672                 case "org.openecomp.cp":
673                     modelToBeReturned = "l-interface";
674                     break;
675                 case "org.openecomp.resource.vl":
676                     modelToBeReturned = "l3-network";
677                     break;
678                 case "org.openecomp.resource.vf":
679                     modelToBeReturned = "generic-vnf";
680                     break;
681                 case VF_MODULE_NAMESPACE:
682                     modelToBeReturned = "vf-module";
683                     break;
684                 case "org.openecomp.resource.vfc.nodes.heat.cinder":
685                     modelToBeReturned = "volume";
686                     break;
687                 default:
688                     modelToBeReturned = null;
689                     break;
690             }
691
692             toscaType = toscaType.substring(0, toscaType.lastIndexOf("."));
693         }
694         return modelToBeReturned;
695     }
696 }