2 * ============LICENSE_START=======================================================
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
21 package org.openecomp.sdc.generator;
23 import org.openecomp.sdc.generator.aai.model.*;
24 import org.openecomp.sdc.generator.aai.model.Service;
25 import org.openecomp.sdc.generator.aai.tosca.GroupDefinition;
26 import org.openecomp.sdc.generator.aai.tosca.NodeTemplate;
27 import org.openecomp.sdc.generator.aai.tosca.ToscaTemplate;
28 import org.openecomp.sdc.generator.aai.xml.*;
29 import org.openecomp.sdc.generator.aai.xml.Model;
30 import org.openecomp.sdc.generator.data.*;
31 import org.junit.Assert;
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;
40 import java.util.Properties;
41 import java.util.regex.Matcher;
42 import java.util.regex.Pattern;
44 import static org.openecomp.sdc.generator.SampleJUnitTest.additionalParams;
46 @SuppressWarnings("Duplicates")
47 public class ArtifactGenerationServiceTest {
49 static Map<String, String> resourcesVersion = new HashMap<>();
50 public static Properties properties = new Properties();
52 @SuppressWarnings("Since15")
53 public static void validateName(List<Artifact> artifactList) {
54 for(Artifact artifact : artifactList){
55 String xml = new String(Base64.getDecoder().decode(artifact.getPayload()));
56 Model model = getUnmarshalledArtifactModel(xml);
57 String xmlName = "AAI-"+ model.getModelVers().getModelVer().get(0).getModelName()
60 ()+"-"+model.getModelVers().getModelVer().get(0)
61 .getModelVersion()+".xml";
63 Assert.assertEquals(true,artifact.getName().equals(xmlName));
68 public static void checkArtifactName(String name){
69 Assert.assertEquals(true,name.length()<=255);
72 public static void checkArtifactLabel(String label){
73 Pattern pattern = Pattern.compile("[a-zA-Z0-9-+\\s]+");
74 Matcher matcher = pattern.matcher(label);
75 Assert.assertEquals(true,matcher.matches());
78 public static void checkArtifactDescription(String description){
79 Pattern pattern = Pattern.compile("[a-zA-Z\\s\\t\\n]+");
80 Matcher matcher = pattern.matcher(description);
81 Assert.assertEquals(true,matcher.matches());
82 Assert.assertEquals(true,description.length()<=256);
86 public static void testResourceTosca(Iterator<ToscaTemplate> itr, Map<String, Model>
89 ToscaTemplate toscaTemplate = itr.next();
90 String resourceVersion= resourcesVersion.get(toscaTemplate.getMetadata().get("UUID"));
91 toscaTemplate.getMetadata().put("version", resourceVersion);
92 if("VF".equals(toscaTemplate.getMetadata().get("type")) && !("Allotted Resource".equals
93 (toscaTemplate.getMetadata().get("category"))) ){
94 testVfTosca(outputArtifactMap, toscaTemplate);
95 } else if("VF".equals(toscaTemplate.getMetadata().get("type")) && ("Allotted Resource".equals
96 (toscaTemplate.getMetadata().get("category"))) ){
97 testAllottedResourceTosca(outputArtifactMap, toscaTemplate);
98 } else if("VL".equals(toscaTemplate.getMetadata().get("type"))){
99 testL3NetworkResourceTosca(outputArtifactMap, toscaTemplate);
104 public static void testVfTosca(Map<String, Model> outputArtifactMap , ToscaTemplate resourceTosca) {
106 //ToscaTemplate resourceTosca = getResourceTosca(toscas);
107 //resourceTosca.getTopology_template().getGroups().
108 if (resourceTosca != null) {
109 Resource resource = new Resource();
110 resource.populateModelIdentificationInformation(resourceTosca.getMetadata());
111 String resourceNameVersionId = resource.getModelNameVersionId();
112 Model resourceAAIModel =
113 getAAIModelByNameVersionId(resourceNameVersionId, outputArtifactMap);
114 if (resourceAAIModel != null) {
115 validateResourceModelMetadata(resource, resourceAAIModel);
116 //Validate Resource instance base widget
118 ModelVer modelVersion = resourceAAIModel.getModelVers().getModelVer().get(0);
120 List<ModelElement> matchedVFBaseWidgetElements =
121 getModelElementbyRelationshipValue(modelVersion.getModelElements(),
122 Widget.getWidget(Widget.Type.VF).getId());
123 validateMatchedModelElementsInService(matchedVFBaseWidgetElements,
124 Widget.getWidget(Widget.Type.VF).getName());
126 validateWidgetIds(matchedVFBaseWidgetElements, Widget.getWidget(Widget.Type.VF).getName(),
127 Widget.getWidget(Widget.Type.VF).getWidgetId());
129 ModelElements baseResourceWidgetModelElements =
130 matchedVFBaseWidgetElements.get(0).getModelElements();
131 if (resourceTosca.getTopology_template() != null) {
132 Map<String, String> groupIdTypeStore = getGroupsTypeStore(resourceTosca);
134 if (baseResourceWidgetModelElements.getModelElement().size() !=
135 groupIdTypeStore.size()) {
136 org.testng.Assert.fail("Missing VFModule in VF model.xml");
139 for (String key : groupIdTypeStore.keySet()) {
141 List<ModelElement> matchedResourceElements =
142 getModelElementbyRelationshipValue(baseResourceWidgetModelElements, key);
143 validateMatchedModelElementsInService(matchedResourceElements,
144 Widget.getWidget(Widget.Type.VFMODULE).getName());
145 Model resourceAAIVFModel = getAAIModelByNameVersionId(key, outputArtifactMap);
146 Map<String, String> vfModuleModelMetadata =
147 getVFModuleMetadataTosca(resourceTosca, key);
148 Map<String, Object> vfModuleMembers = getVFModuleMembersTosca(resourceTosca, key);
150 validateVFModelMetadata(vfModuleModelMetadata, resourceAAIVFModel);
153 ModelVer modelVfVersion = resourceAAIVFModel.getModelVers().getModelVer().get(0);
155 List<ModelElement> matchedVFModuleBaseWidgetElements =
156 getModelElementbyRelationshipValue(modelVfVersion.getModelElements(),
157 Widget.getWidget(Widget.Type.VFMODULE).getId());
158 validateMatchedModelElementsInService(matchedVFModuleBaseWidgetElements,
159 Widget.getWidget(Widget.Type.VFMODULE).getName());
160 validateWidgetIds(matchedVFModuleBaseWidgetElements, Widget.getWidget(Widget.Type.VFMODULE)
161 .getName(), Widget.getWidget(Widget.Type.VFMODULE).getWidgetId());
163 ModelElements baseResourceVFModuleWidgetModelElements =
164 matchedVFModuleBaseWidgetElements.get(0).getModelElements();
165 if (vfModuleMembers.containsKey("l3-network")) {
167 List<ModelElement> matchedL3NetworkElements =
168 getModelElementbyRelationshipValue(baseResourceVFModuleWidgetModelElements,
169 Widget.getWidget(Widget.Type.L3_NET).getId());
170 validateMatchedModelElementsInService(matchedL3NetworkElements,
171 Widget.getWidget(Widget.Type.L3_NET).getName());
172 validateWidgetIds(matchedL3NetworkElements, Widget.getWidget(Widget.Type.L3_NET)
173 .getName(), Widget.getWidget(Widget.Type.L3_NET).getWidgetId());
175 if (vfModuleMembers.containsKey("vserver")) {
177 List<ModelElement> matchedVserverElements =
178 getModelElementbyRelationshipValue(baseResourceVFModuleWidgetModelElements,
179 Widget.getWidget(Widget.Type.VSERVER).getId());
180 validateMatchedModelElementsInService(matchedVserverElements,
181 Widget.getWidget(Widget.Type.VSERVER).getName());
182 ModelElements vserverWidgetModelElements =
183 matchedVserverElements.get(0).getModelElements();
185 validateWidgetIds(matchedVserverElements, Widget.getWidget(Widget.Type.VSERVER)
186 .getName(), Widget.getWidget(Widget.Type.VSERVER).getWidgetId());
189 //Validate vserver->vfc
190 List<ModelElement> matchedVfcElements =
191 getModelElementbyRelationshipValue(vserverWidgetModelElements,
192 Widget.getWidget(Widget.Type.VFC).getId());
193 validateMatchedModelElementsInService(matchedVfcElements,
194 Widget.getWidget(Widget.Type.VFC).getName());
195 validateWidgetIds(matchedVfcElements, Widget.getWidget(Widget.Type.VFC).getName(),
196 Widget.getWidget(Widget.Type.VFC).getWidgetId());
198 //Validate vserver->Image
199 List<ModelElement> matchedImageElements =
200 getModelElementbyRelationshipValue(vserverWidgetModelElements,
201 Widget.getWidget(Widget.Type.IMAGE).getId());
202 validateMatchedModelElementsInService(matchedImageElements,
203 Widget.getWidget(Widget.Type.IMAGE).getName());
204 validateWidgetIds(matchedImageElements, Widget.getWidget(Widget.Type.IMAGE)
205 .getName(), Widget.getWidget(Widget.Type.IMAGE).getWidgetId());
208 //Validate vserver->Flavor
209 List<ModelElement> matchedFlavorElements =
210 getModelElementbyRelationshipValue(vserverWidgetModelElements,
211 Widget.getWidget(Widget.Type.FLAVOR).getId());
212 validateMatchedModelElementsInService(matchedFlavorElements,
213 Widget.getWidget(Widget.Type.FLAVOR).getName());
214 validateWidgetIds(matchedFlavorElements, Widget.getWidget(Widget.Type.FLAVOR).getName(),
215 Widget.getWidget(Widget.Type.FLAVOR).getWidgetId());
217 //Validate vserver->Tenant
218 List<ModelElement> matchedTenantElements =
219 getModelElementbyRelationshipValue(vserverWidgetModelElements,
220 Widget.getWidget(Widget.Type.TENANT).getId());
221 validateMatchedModelElementsInService(matchedTenantElements,
222 Widget.getWidget(Widget.Type.TENANT).getName());
223 validateWidgetIds(matchedTenantElements, Widget.getWidget(Widget.Type.TENANT).getName(),
224 Widget.getWidget(Widget.Type.TENANT).getWidgetId());
226 //Validate vserver->l-interface
227 if (vfModuleMembers.containsKey("l-interface")) {
228 List<ModelElement> matchedLinterfaceElements =
229 getModelElementbyRelationshipValue(vserverWidgetModelElements,
230 Widget.getWidget(Widget.Type.LINT).getId());
231 validateMatchedModelElementsInService(matchedLinterfaceElements,
232 Widget.getWidget(Widget.Type.LINT).getName());
233 validateWidgetIds(matchedLinterfaceElements, Widget.getWidget(Widget.Type.LINT).getName(),
234 Widget.getWidget(Widget.Type.LINT).getWidgetId());
236 //Validate vserver->volume
237 if (vfModuleMembers.containsKey("volume")) {
238 List<ModelElement> matchedVolumeElements =
239 getModelElementbyRelationshipValue(vserverWidgetModelElements,
240 Widget.getWidget(Widget.Type.VOLUME).getId());
241 validateMatchedModelElementsInService(matchedVolumeElements,
242 Widget.getWidget(Widget.Type.VOLUME).getName());
243 validateWidgetIds(matchedVolumeElements, Widget.getWidget(Widget.Type.VOLUME).getName(),
244 Widget.getWidget(Widget.Type.VOLUME).getWidgetId());
250 System.out.println("Resource mapping not found for " + resourceNameVersionId);
254 } catch (IllegalArgumentException e) {
255 org.testng.Assert.fail(e.getMessage()); //Can come while populating metadata
260 public static void testAllottedResourceTosca(Map<String, Model> outputArtifactMap , ToscaTemplate
263 if (resourceTosca != null) {
264 Resource resource = new Resource();
265 resource.populateModelIdentificationInformation(resourceTosca.getMetadata());
266 String resourceNameVersionId = resource.getModelNameVersionId();
267 Model resourceAAIModel =
268 getAAIModelByNameVersionId(resourceNameVersionId, outputArtifactMap);
269 if (resourceAAIModel != null) {
270 validateResourceModelMetadata(resource, resourceAAIModel);
271 //Validate Resource instance base widget
273 ModelVer modelVersion = resourceAAIModel.getModelVers().getModelVer().get(0);
275 List<ModelElement> matchedVFBaseWidgetElements =
276 getModelElementbyRelationshipValue(modelVersion.getModelElements(),
277 Widget.getWidget(Widget.Type.ALLOTTED_RESOURCE).getId());
278 validateMatchedModelElementsInService(matchedVFBaseWidgetElements,
279 Widget.getWidget(Widget.Type.ALLOTTED_RESOURCE).getName());
281 validateWidgetIds(matchedVFBaseWidgetElements, Widget.getWidget(Widget.Type.ALLOTTED_RESOURCE).getName(),
282 Widget.getWidget(Widget.Type.ALLOTTED_RESOURCE).getWidgetId());
284 validateWidgetIds(matchedVFBaseWidgetElements, Widget.getWidget(Widget.Type.ALLOTTED_RESOURCE).getName(),
285 Widget.getWidget(Widget.Type.ALLOTTED_RESOURCE).getWidgetId());
287 Map<String, Object> providingServiceDetails = getProvidingServiceDetails(resourceTosca);
289 ModelElements containedModelElements = modelVersion.getModelElements().getModelElement().
290 get(0).getModelElements();
292 org.testng.Assert.assertEquals(containedModelElements.getModelElement().get(0).getRelationshipList()
293 .getRelationship().get(0).getRelationshipData().get(0).getRelationshipValue(),
294 providingServiceDetails.get("providing_service_uuid"));
296 org.testng.Assert.assertEquals(containedModelElements.getModelElement().get(0).getRelationshipList()
297 .getRelationship().get(0).getRelationshipData().get(1).getRelationshipValue(),
298 providingServiceDetails.get("providing_service_invariant_uuid"));
301 if("Allotted Resource".equals(resourceTosca.getMetadata().get("category")) &&
302 "Tunnel XConnect".equals(resourceTosca.getMetadata().get("subcategory"))) {
304 List<ModelElement> matchedTunnelXConnectWidgetElements =
305 getModelElementbyRelationshipValue(containedModelElements,
306 Widget.getWidget(Widget.Type.TUNNEL_XCONNECT).getId());
307 validateMatchedModelElementsInService(matchedTunnelXConnectWidgetElements,
308 Widget.getWidget(Widget.Type.TUNNEL_XCONNECT).getName());
310 validateWidgetIds(matchedTunnelXConnectWidgetElements, Widget.getWidget(Widget.Type.TUNNEL_XCONNECT).getName(),
311 Widget.getWidget(Widget.Type.TUNNEL_XCONNECT).getWidgetId());
315 System.out.println("Resource mapping not found for " + resourceNameVersionId);
319 }catch (IllegalArgumentException e) {
320 org.testng.Assert.fail(e.getMessage()); //Can come while populating metadata
325 public static Map<String, Object> getProvidingServiceDetails(ToscaTemplate resourceTemplate) {
326 Set<String> keys = resourceTemplate.getTopology_template().getNode_templates().keySet();
328 Map<String, Object> nodeProperties =null;
329 for(String key : keys) {
330 NodeTemplate node = resourceTemplate.getTopology_template().getNode_templates().get(key);
331 if(node.getType().contains("org.openecomp.resource.vfc") &&
332 node.getMetadata().get("category").equals("Allotted Resource")) {
333 nodeProperties = node.getProperties();
337 return nodeProperties;
340 public static void testL3NetworkResourceTosca(Map<String, Model> outputArtifactMap , ToscaTemplate
343 if (resourceTosca != null) {
344 Resource resource = new Resource();
345 resource.populateModelIdentificationInformation(resourceTosca.getMetadata());
346 String resourceNameVersionId = resource.getModelNameVersionId();
347 Model resourceAAIModel =
348 getAAIModelByNameVersionId(resourceNameVersionId, outputArtifactMap);
349 if (resourceAAIModel != null) {
350 validateResourceModelMetadata(resource, resourceAAIModel);
351 //Validate Resource instance base widget
353 ModelVer modelVersion = resourceAAIModel.getModelVers().getModelVer().get(0);
355 List<ModelElement> matchedVFBaseWidgetElements =
356 getModelElementbyRelationshipValue(modelVersion.getModelElements(),
357 Widget.getWidget(Widget.Type.L3_NET).getId());
358 validateMatchedModelElementsInService(matchedVFBaseWidgetElements,
359 Widget.getWidget(Widget.Type.L3_NET).getName());
361 validateWidgetIds(matchedVFBaseWidgetElements, Widget.getWidget(Widget.Type.L3_NET).getName(),
362 Widget.getWidget(Widget.Type.L3_NET).getWidgetId());
365 System.out.println("Resource mapping not found for " + resourceNameVersionId);
369 }catch (IllegalArgumentException e) {
370 org.testng.Assert.fail(e.getMessage()); //Can come while populating metadata
375 public static void testServiceTosca(Map<String, Model> outputArtifactMap,List<ToscaTemplate>
378 ToscaTemplate serviceTosca = getServiceTosca(toscas);
379 if (serviceTosca == null) {
380 org.testng.Assert.fail("Service Tosca not found");
382 serviceTosca.getMetadata().put("version", additionalParams.get(AdditionalParams
383 .ServiceVersion.getName()));
384 Service service = new Service();
385 service.populateModelIdentificationInformation(serviceTosca.getMetadata());
386 String serviceNameVersionId = service.getModelNameVersionId();
387 Model serviceAAIModel = getAAIModelByNameVersionId(serviceNameVersionId, outputArtifactMap);
388 validateServiceModelMetadata(service, serviceAAIModel);
389 //Validate Service instance base widget
390 ModelVer modelVersion = serviceAAIModel.getModelVers().getModelVer().get(0);
392 List<ModelElement> matchedServiceBaseWidgetElements =
393 getModelElementbyRelationshipValue( modelVersion.getModelElements(),
394 Widget.getWidget(Widget.Type.SERVICE).getId());
395 validateMatchedModelElementsInService(matchedServiceBaseWidgetElements,
396 Widget.getWidget(Widget.Type.SERVICE).getName());
398 validateWidgetIds(matchedServiceBaseWidgetElements, Widget.getWidget(Widget.Type.SERVICE).getName(),
399 Widget.getWidget(Widget.Type.SERVICE).getWidgetId());
401 ModelElements baseServiceWidgetModelElements =
402 matchedServiceBaseWidgetElements.get(0).getModelElements();
405 Map<String, String> nodeTemplateIdTypeStore = getNodeTemplateTypeStore(serviceTosca);
406 if (nodeTemplateIdTypeStore != null) {
407 for (String key : nodeTemplateIdTypeStore.keySet()) {
408 if (nodeTemplateIdTypeStore.get(key).contains("org.openecomp.resource.vf")) {
409 List<ModelElement> matchedResourceElements =
410 getModelElementbyRelationshipValue(baseServiceWidgetModelElements, key);
411 if (nodeTemplateIdTypeStore.get(key).contains("org.openecomp.resource.vf.allottedResource")){
412 validateMatchedModelElementsInService(matchedResourceElements,
413 Widget.getWidget(Widget.Type.ALLOTTED_RESOURCE).getName());
415 validateMatchedModelElementsInService(matchedResourceElements,
416 Widget.getWidget(Widget.Type.VF).getName());
419 //Validate uuid and invariantuuid are populated in model-ver.model-version-id and model.model-invariant-id
420 org.testng.Assert.assertEquals(matchedResourceElements.get(0).getRelationshipList()
421 .getRelationship().get(0)
422 .getRelationshipData().get(0).getRelationshipValue(),key);
424 org.testng.Assert.assertEquals(matchedResourceElements.get(0).getRelationshipList().getRelationship().get(0)
425 .getRelationshipData().get(1).getRelationshipValue(), nodeTemplateIdTypeStore
426 .get(key+"-INV_UID"));
427 } else if(nodeTemplateIdTypeStore.get(key).contains("org.openecomp.resource.vl")){
428 //validate l3-network in service tosca
429 List<ModelElement> matchedResourceElements =
430 getModelElementbyRelationshipValue(baseServiceWidgetModelElements, key);
431 validateMatchedModelElementsInService(matchedResourceElements,
432 Widget.getWidget(Widget.Type.L3_NET).getName());
433 //Validate uuid and invariantuuid are populated in model-ver.model-version-id and model.model-invariant-id
434 org.testng.Assert.assertEquals(matchedResourceElements.get(0).getRelationshipList()
435 .getRelationship().get(0)
436 .getRelationshipData().get(0).getRelationshipValue(),key);
438 org.testng.Assert.assertEquals(matchedResourceElements.get(0).getRelationshipList().getRelationship().get(0)
439 .getRelationshipData().get(1).getRelationshipValue(), nodeTemplateIdTypeStore
440 .get(key+"-INV_UID"));
445 System.out.println();
448 } catch (IllegalArgumentException e) {
449 org.testng.Assert.fail(e.getMessage()); //Can come while populating metadata
453 private static void validateWidgetIds(List<ModelElement> matchedServiceBaseWidgetElements,
454 String widgetName, String widgetInvUuId) {
455 org.testng.Assert.assertEquals(matchedServiceBaseWidgetElements.get(0).getRelationshipList().getRelationship().get(0)
456 .getRelationshipData().get(0).getRelationshipValue(), properties.getProperty(ArtifactType.AAI.name()
457 + ".model-version-id."+ widgetName));
459 org.testng.Assert.assertEquals(matchedServiceBaseWidgetElements.get(0).getRelationshipList().getRelationship().get(0)
460 .getRelationshipData().get(1).getRelationshipValue(), widgetInvUuId);
465 private static void validateMatchedModelElementsInService(List<ModelElement> matchedModelElements, String modelType) {
466 if (matchedModelElements.isEmpty()) {
467 Assert.fail(modelType + " not present ");
469 if (matchedModelElements.size() > 1) {
470 Assert.fail("More than one " + modelType + " present ");
474 private static Map<String, String> getNodeTemplateTypeStore(ToscaTemplate toscaTemplate) {
475 if (toscaTemplate.getTopology_template() != null) {
476 Map<String, NodeTemplate> nodeTemplateMap =
477 toscaTemplate.getTopology_template().getNode_templates();
478 Map<String, String> nodeTemplateIdTypeStore = new LinkedHashMap<>();
479 if (nodeTemplateMap != null) {
480 for (Map.Entry<String, NodeTemplate> e : nodeTemplateMap.entrySet()) {
481 String uuid = e.getValue().getMetadata().get("resourceUUID");
482 if (GeneratorUtil.isEmpty(uuid)) {
483 uuid = e.getValue().getMetadata().get("UUID");
484 if (GeneratorUtil.isEmpty(uuid)) {
485 Assert.fail("UUID Not found");
488 if(e.getValue().getType().contains("org.openecomp.resource.vf.")&& (e.getValue()
489 .getMetadata().get("category").equals("Allotted Resource")))
491 e.getValue().setType("org.openecomp.resource.vf.allottedResource");
493 nodeTemplateIdTypeStore.put(uuid, e.getValue().getType());
494 resourcesVersion.put(uuid,e.getValue().getMetadata().get
496 //Populate invraintUuId for V9
497 String invUuId = e.getValue().getMetadata().get("invariantUUID");
498 nodeTemplateIdTypeStore.put(uuid+"-INV_UID" , invUuId);
501 return nodeTemplateIdTypeStore;
508 private static Map<String, String> getGroupsTypeStore(ToscaTemplate toscaTemplate) {
509 if(toscaTemplate.getTopology_template() !=null) {
510 Map<String, GroupDefinition> groupDefinitionMap = toscaTemplate.getTopology_template().getGroups();
511 Map<String, String> groupDefinitionIdTypeStore = new LinkedHashMap<>();
512 if (groupDefinitionMap != null) {
513 for (Map.Entry<String, GroupDefinition> e : groupDefinitionMap.entrySet()) {
514 if (e.getValue().getType().contains("org.openecomp.groups.VfModule")) {
515 String uuid = e.getValue().getMetadata().get("vfModuleModelUUID");
516 if (GeneratorUtil.isEmpty(uuid)) {
517 uuid = e.getValue().getMetadata().get("UUID");
518 if (GeneratorUtil.isEmpty(uuid))
519 Assert.fail("UUID Not found");
521 groupDefinitionIdTypeStore.put(uuid, e.getValue().getType());
525 return groupDefinitionIdTypeStore;
532 private static void validateServiceModelMetadata(Service serviceToscaModel, Model generatedAAIModel) {
533 Assert.assertEquals(serviceToscaModel.getModelNameVersionId(), generatedAAIModel
534 .getModelVers().getModelVer().get(0).getModelVersionId());
535 Assert.assertEquals(serviceToscaModel.getModelId(), generatedAAIModel.getModelInvariantId());
536 Assert.assertEquals(serviceToscaModel.getModelName(), generatedAAIModel.getModelVers()
537 .getModelVer().get(0).getModelName());
538 Assert.assertEquals(serviceToscaModel.getModelVersion(), generatedAAIModel.getModelVers()
539 .getModelVer().get(0).getModelVersion());
540 Assert.assertEquals(serviceToscaModel.getModelDescription(), generatedAAIModel.getModelVers()
541 .getModelVer().get(0).getModelDescription());
544 private static void validateResourceModelMetadata(Resource resouerceToscaModel, Model generatedAAIModel) {
545 Assert.assertEquals(resouerceToscaModel.getModelNameVersionId(), generatedAAIModel
546 .getModelVers().getModelVer().get(0).getModelVersionId());
547 Assert.assertEquals(resouerceToscaModel.getModelId(), generatedAAIModel.getModelInvariantId());
548 Assert.assertEquals(resouerceToscaModel.getModelName(), generatedAAIModel.getModelVers()
549 .getModelVer().get(0).getModelName());
550 Assert.assertEquals(resouerceToscaModel.getModelVersion(), generatedAAIModel.getModelVers()
551 .getModelVer().get(0).getModelVersion());
552 Assert.assertEquals(resouerceToscaModel.getModelDescription(), generatedAAIModel.getModelVers()
553 .getModelVer().get(0).getModelDescription());
556 private static void validateVFModelMetadata(Map<String, String> vfModuleModelMetadata, Model generatedAAIModel) {
557 Assert.assertEquals(vfModuleModelMetadata.get("vfModuleModelUUID"), generatedAAIModel
558 .getModelVers().getModelVer().get(0).getModelVersionId());
559 Assert.assertEquals(vfModuleModelMetadata.get("vfModuleModelInvariantUUID"), generatedAAIModel.getModelInvariantId());
560 Assert.assertEquals(vfModuleModelMetadata.get("vfModuleModelName"), generatedAAIModel.getModelVers()
561 .getModelVer().get(0).getModelName());
562 Assert.assertEquals(vfModuleModelMetadata.get("vfModuleModelVersion"), generatedAAIModel.getModelVers()
563 .getModelVer().get(0).getModelVersion());
564 Assert.assertEquals(vfModuleModelMetadata.get("vf_module_description"), generatedAAIModel.getModelVers()
565 .getModelVer().get(0).getModelDescription());
569 private static Model getAAIModelByNameVersionId(String nameVersionId,
570 Map<String, Model> outputArtifactMap) {
571 return outputArtifactMap.get(nameVersionId);
574 private static List<ModelElement> getModelElementbyRelationshipValue(ModelElements modelElements,
575 String relationshipValue) {
576 List<ModelElement> matchedModelElements = new ArrayList<>();
577 if (modelElements != null) {
578 List<ModelElement> modelElementList = modelElements.getModelElement();
579 for (ModelElement element : modelElementList) {
580 List<Relationship> relationshipList = element.getRelationshipList().getRelationship();
581 for (Relationship r : relationshipList) {
582 List<RelationshipData> relationshipDataList = r.getRelationshipData();
583 for (RelationshipData relationshipData : relationshipDataList) {
584 if (relationshipData.getRelationshipValue().equals(relationshipValue))
585 matchedModelElements.add(element);
590 return matchedModelElements;
593 public static void populateAAIGeneratedModelStore(Map<String, Model> outputArtifactMap,List<Artifact> resultData) {
594 for (Artifact outputArtifact : resultData) {
595 if (outputArtifact.getType().equals(ArtifactType.MODEL_INVENTORY_PROFILE.name())) {
596 byte[] decodedPayload = GeneratorUtil.decoder(outputArtifact.getPayload());
597 Model aaiModel = getUnmarshalledArtifactModel(new String(decodedPayload));
598 outputArtifactMap.put(aaiModel.getModelVers().getModelVer().get(0).getModelVersionId(), aaiModel);
603 private static Model getUnmarshalledArtifactModel(String aaiModel) {
604 JAXBContext jaxbContext;
606 jaxbContext = JAXBContext.newInstance(Model.class);
607 Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
609 try (InputStream aaiModelStream = new ByteArrayInputStream(aaiModel.getBytes())) {
610 return (Model) unmarshaller.unmarshal(aaiModelStream);
611 } catch (IOException ignored) { /* ignore */ }
613 } catch (JAXBException e) {
620 * Identify the service tosca artifact from the list of translated tosca inputs
622 * @param input List of translated {@link ToscaTemplate tosca} object models
623 * @return Identified service {@link ToscaTemplate tosca}
625 private static ToscaTemplate getServiceTosca(List<ToscaTemplate> input) {
626 Iterator<ToscaTemplate> iter = input.iterator();
627 while (iter.hasNext()) {
628 ToscaTemplate tosca = iter.next();
629 if (tosca.isService()) {
638 private static ToscaTemplate getResourceTosca(List<ToscaTemplate> input) {
639 Iterator<ToscaTemplate> iter = input.iterator();
640 while (iter.hasNext()) {
641 ToscaTemplate tosca = iter.next();
642 if (!tosca.isService()) {
651 private static Map<String, String> getVFModuleMetadataTosca(ToscaTemplate toscaTemplate, String vfModuleModelUUID) {
652 Map<String, GroupDefinition> groupDefinitionMap = toscaTemplate.getTopology_template().getGroups();
653 Map<String, String> vfModuleModelMetadata = new LinkedHashMap<>();
654 for (Map.Entry<String, GroupDefinition> e : groupDefinitionMap.entrySet()) {
655 if (e.getValue().getType().contains("org.openecomp.groups.VfModule")) {
656 String uuid = e.getValue().getMetadata().get("vfModuleModelUUID");
657 if (uuid == vfModuleModelUUID) {
658 vfModuleModelMetadata = e.getValue().getMetadata();
659 vfModuleModelMetadata.put("vf_module_description", (String) e.getValue().getProperties().get("vf_module_description"));
663 return vfModuleModelMetadata;
666 private static Map<String, Object> getVFModuleMembersTosca(ToscaTemplate toscaTemplate, String vfModuleModelUUID) {
667 Map<String, GroupDefinition> groupDefinitionMap = toscaTemplate.getTopology_template().getGroups();
668 Map<String, NodeTemplate> nodeTemplateMaps = toscaTemplate.getTopology_template().getNode_templates();
669 Map<String, Object> vfModuleMembers = new LinkedHashMap<>();
670 List<String> vfModuleModelMetadata = new ArrayList<>();
671 for (Map.Entry<String, GroupDefinition> e : groupDefinitionMap.entrySet()) {
672 if (e.getValue().getType().contains("org.openecomp.groups.VfModule")) {
673 String uuid = e.getValue().getMetadata().get("vfModuleModelUUID");
674 if (uuid == vfModuleModelUUID) {
675 vfModuleModelMetadata = e.getValue().getMembers();
676 Iterator itr = vfModuleModelMetadata.iterator();
677 while (itr.hasNext()) {
678 Object obj= itr.next();
679 NodeTemplate nodeTemplate = nodeTemplateMaps.get(obj);
680 String nodetype = null;
681 if (nodeTemplate != null)
682 nodetype = nodeTemplate.getType();
683 if (nodetype != null) {
684 String widgetType = membersType(nodetype);
685 if (widgetType != null)
686 vfModuleMembers.put(widgetType, obj);
694 return vfModuleMembers;
698 private static String membersType(String toscaType) {
699 String modelToBeReturned = null;
700 while (toscaType != null && toscaType.lastIndexOf(".") != -1 && modelToBeReturned == null) {
704 case "org.openecomp.resource.vfc":
705 modelToBeReturned = "vserver";
707 case "org.openecomp.resource.cp":
708 case "org.openecomp.cp":
709 modelToBeReturned = "l-interface";
711 case "org.openecomp.resource.vl":
712 modelToBeReturned = "l3-network";
714 case "org.openecomp.resource.vf":
715 modelToBeReturned = "generic-vnf";
717 case "org.openecomp.groups.VfModule":
718 modelToBeReturned = "vf-module";
720 case "org.openecomp.resource.vfc.nodes.heat.cinder":
721 modelToBeReturned = "volume";
724 modelToBeReturned = null;
728 toscaType = toscaType.substring(0, toscaType.lastIndexOf("."));
730 return modelToBeReturned;