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.InputStream;
39 import java.util.Properties;
40 import java.util.regex.Matcher;
41 import java.util.regex.Pattern;
43 import static org.openecomp.sdc.generator.SampleJUnitTest.additionalParams;
45 @SuppressWarnings("Duplicates")
46 public class ArtifactGenerationServiceTest {
48 static Map<String, String> resourcesVersion = new HashMap<>();
49 public static Properties properties = new Properties();
51 @SuppressWarnings("Since15")
52 public static void validateName(List<Artifact> artifactList) {
53 for(Artifact artifact : artifactList){
54 String xml = new String(Base64.getDecoder().decode(artifact.getPayload()));
55 Model model = getUnmarshalledArtifactModel(xml);
56 String xmlName = "AAI-"+ model.getModelVers().getModelVer().get(0).getModelName()
59 ()+"-"+model.getModelVers().getModelVer().get(0)
60 .getModelVersion()+".xml";
62 Assert.assertEquals(true,artifact.getName().equals(xmlName));
67 public static void checkArtifactName(String name){
68 Assert.assertEquals(true,name.length()<=255);
71 public static void checkArtifactLabel(String label){
72 Pattern pattern = Pattern.compile("[a-zA-Z0-9-+\\s]+");
73 Matcher matcher = pattern.matcher(label);
74 Assert.assertEquals(true,matcher.matches());
77 public static void checkArtifactDescription(String description){
78 Pattern pattern = Pattern.compile("[a-zA-Z\\s\\t\\n]+");
79 Matcher matcher = pattern.matcher(description);
80 Assert.assertEquals(true,matcher.matches());
81 Assert.assertEquals(true,description.length()<=256);
85 public static void testResourceTosca(Iterator<ToscaTemplate> itr, Map<String, Model>
88 ToscaTemplate toscaTemplate = itr.next();
89 String resourceVersion= resourcesVersion.get(toscaTemplate.getMetadata().get("UUID"));
90 toscaTemplate.getMetadata().put("version", resourceVersion);
91 if("VF".equals(toscaTemplate.getMetadata().get("type")) && !("Allotted Resource".equals
92 (toscaTemplate.getMetadata().get("category"))) ){
93 testVfTosca(outputArtifactMap, toscaTemplate);
94 } else if("VF".equals(toscaTemplate.getMetadata().get("type")) && ("Allotted Resource".equals
95 (toscaTemplate.getMetadata().get("category"))) ){
96 testAllottedResourceTosca(outputArtifactMap, toscaTemplate);
97 } else if("VL".equals(toscaTemplate.getMetadata().get("type"))){
98 testL3NetworkResourceTosca(outputArtifactMap, toscaTemplate);
103 public static void testVfTosca(Map<String, Model> outputArtifactMap , ToscaTemplate resourceTosca) {
105 //ToscaTemplate resourceTosca = getResourceTosca(toscas);
106 //resourceTosca.getTopology_template().getGroups().
107 if (resourceTosca != null) {
108 Resource resource = new Resource();
109 resource.populateModelIdentificationInformation(resourceTosca.getMetadata());
110 String resourceNameVersionId = resource.getModelNameVersionId();
111 Model resourceAAIModel =
112 getAAIModelByNameVersionId(resourceNameVersionId, outputArtifactMap);
113 if (resourceAAIModel != null) {
114 validateResourceModelMetadata(resource, resourceAAIModel);
115 //Validate Resource instance base widget
117 ModelVer modelVersion = resourceAAIModel.getModelVers().getModelVer().get(0);
119 List<ModelElement> matchedVFBaseWidgetElements =
120 getModelElementbyRelationshipValue(modelVersion.getModelElements(),
121 Widget.getWidget(Widget.Type.VF).getId());
122 validateMatchedModelElementsInService(matchedVFBaseWidgetElements,
123 Widget.getWidget(Widget.Type.VF).getName());
125 validateWidgetIds(matchedVFBaseWidgetElements, Widget.getWidget(Widget.Type.VF).getName(),
126 Widget.getWidget(Widget.Type.VF).getWidgetId());
128 ModelElements baseResourceWidgetModelElements =
129 matchedVFBaseWidgetElements.get(0).getModelElements();
130 if (resourceTosca.getTopology_template() != null) {
131 Map<String, String> groupIdTypeStore = getGroupsTypeStore(resourceTosca);
133 if (baseResourceWidgetModelElements.getModelElement().size() !=
134 groupIdTypeStore.size()) {
135 org.testng.Assert.fail("Missing VFModule in VF model.xml");
138 for (String key : groupIdTypeStore.keySet()) {
140 List<ModelElement> matchedResourceElements =
141 getModelElementbyRelationshipValue(baseResourceWidgetModelElements, key);
142 validateMatchedModelElementsInService(matchedResourceElements,
143 Widget.getWidget(Widget.Type.VFMODULE).getName());
144 Model resourceAAIVFModel = getAAIModelByNameVersionId(key, outputArtifactMap);
145 Map<String, String> vfModuleModelMetadata =
146 getVFModuleMetadataTosca(resourceTosca, key);
147 Map<String, Object> vfModuleMembers = getVFModuleMembersTosca(resourceTosca, key);
149 validateVFModelMetadata(vfModuleModelMetadata, resourceAAIVFModel);
152 ModelVer modelVfVersion = resourceAAIVFModel.getModelVers().getModelVer().get(0);
154 List<ModelElement> matchedVFModuleBaseWidgetElements =
155 getModelElementbyRelationshipValue(modelVfVersion.getModelElements(),
156 Widget.getWidget(Widget.Type.VFMODULE).getId());
157 validateMatchedModelElementsInService(matchedVFModuleBaseWidgetElements,
158 Widget.getWidget(Widget.Type.VFMODULE).getName());
159 validateWidgetIds(matchedVFModuleBaseWidgetElements, Widget.getWidget(Widget.Type.VFMODULE)
160 .getName(), Widget.getWidget(Widget.Type.VFMODULE).getWidgetId());
162 ModelElements baseResourceVFModuleWidgetModelElements =
163 matchedVFModuleBaseWidgetElements.get(0).getModelElements();
164 if (vfModuleMembers.containsKey("l3-network")) {
166 List<ModelElement> matchedL3NetworkElements =
167 getModelElementbyRelationshipValue(baseResourceVFModuleWidgetModelElements,
168 Widget.getWidget(Widget.Type.L3_NET).getId());
169 validateMatchedModelElementsInService(matchedL3NetworkElements,
170 Widget.getWidget(Widget.Type.L3_NET).getName());
171 validateWidgetIds(matchedL3NetworkElements, Widget.getWidget(Widget.Type.L3_NET)
172 .getName(), Widget.getWidget(Widget.Type.L3_NET).getWidgetId());
174 if (vfModuleMembers.containsKey("vserver")) {
176 List<ModelElement> matchedVserverElements =
177 getModelElementbyRelationshipValue(baseResourceVFModuleWidgetModelElements,
178 Widget.getWidget(Widget.Type.VSERVER).getId());
179 validateMatchedModelElementsInService(matchedVserverElements,
180 Widget.getWidget(Widget.Type.VSERVER).getName());
181 ModelElements vserverWidgetModelElements =
182 matchedVserverElements.get(0).getModelElements();
184 validateWidgetIds(matchedVserverElements, Widget.getWidget(Widget.Type.VSERVER)
185 .getName(), Widget.getWidget(Widget.Type.VSERVER).getWidgetId());
188 //Validate vserver->vfc
189 List<ModelElement> matchedVfcElements =
190 getModelElementbyRelationshipValue(vserverWidgetModelElements,
191 Widget.getWidget(Widget.Type.VFC).getId());
192 validateMatchedModelElementsInService(matchedVfcElements,
193 Widget.getWidget(Widget.Type.VFC).getName());
194 validateWidgetIds(matchedVfcElements, Widget.getWidget(Widget.Type.VFC).getName(),
195 Widget.getWidget(Widget.Type.VFC).getWidgetId());
197 //Validate vserver->Image
198 List<ModelElement> matchedImageElements =
199 getModelElementbyRelationshipValue(vserverWidgetModelElements,
200 Widget.getWidget(Widget.Type.IMAGE).getId());
201 validateMatchedModelElementsInService(matchedImageElements,
202 Widget.getWidget(Widget.Type.IMAGE).getName());
203 validateWidgetIds(matchedImageElements, Widget.getWidget(Widget.Type.IMAGE)
204 .getName(), Widget.getWidget(Widget.Type.IMAGE).getWidgetId());
207 //Validate vserver->Flavor
208 List<ModelElement> matchedFlavorElements =
209 getModelElementbyRelationshipValue(vserverWidgetModelElements,
210 Widget.getWidget(Widget.Type.FLAVOR).getId());
211 validateMatchedModelElementsInService(matchedFlavorElements,
212 Widget.getWidget(Widget.Type.FLAVOR).getName());
213 validateWidgetIds(matchedFlavorElements, Widget.getWidget(Widget.Type.FLAVOR).getName(),
214 Widget.getWidget(Widget.Type.FLAVOR).getWidgetId());
216 //Validate vserver->Tenant
217 List<ModelElement> matchedTenantElements =
218 getModelElementbyRelationshipValue(vserverWidgetModelElements,
219 Widget.getWidget(Widget.Type.TENANT).getId());
220 validateMatchedModelElementsInService(matchedTenantElements,
221 Widget.getWidget(Widget.Type.TENANT).getName());
222 validateWidgetIds(matchedTenantElements, Widget.getWidget(Widget.Type.TENANT).getName(),
223 Widget.getWidget(Widget.Type.TENANT).getWidgetId());
225 //Validate vserver->l-interface
226 if (vfModuleMembers.containsKey("l-interface")) {
227 List<ModelElement> matchedLinterfaceElements =
228 getModelElementbyRelationshipValue(vserverWidgetModelElements,
229 Widget.getWidget(Widget.Type.LINT).getId());
230 validateMatchedModelElementsInService(matchedLinterfaceElements,
231 Widget.getWidget(Widget.Type.LINT).getName());
232 validateWidgetIds(matchedLinterfaceElements, Widget.getWidget(Widget.Type.LINT).getName(),
233 Widget.getWidget(Widget.Type.LINT).getWidgetId());
235 //Validate vserver->volume
236 if (vfModuleMembers.containsKey("volume")) {
237 List<ModelElement> matchedVolumeElements =
238 getModelElementbyRelationshipValue(vserverWidgetModelElements,
239 Widget.getWidget(Widget.Type.VOLUME).getId());
240 validateMatchedModelElementsInService(matchedVolumeElements,
241 Widget.getWidget(Widget.Type.VOLUME).getName());
242 validateWidgetIds(matchedVolumeElements, Widget.getWidget(Widget.Type.VOLUME).getName(),
243 Widget.getWidget(Widget.Type.VOLUME).getWidgetId());
249 System.out.println("Resource mapping not found for " + resourceNameVersionId);
253 } catch (IllegalArgumentException e) {
254 org.testng.Assert.fail(e.getMessage()); //Can come while populating metadata
259 public static void testAllottedResourceTosca(Map<String, Model> outputArtifactMap , ToscaTemplate
262 if (resourceTosca != null) {
263 Resource resource = new Resource();
264 resource.populateModelIdentificationInformation(resourceTosca.getMetadata());
265 String resourceNameVersionId = resource.getModelNameVersionId();
266 Model resourceAAIModel =
267 getAAIModelByNameVersionId(resourceNameVersionId, outputArtifactMap);
268 if (resourceAAIModel != null) {
269 validateResourceModelMetadata(resource, resourceAAIModel);
270 //Validate Resource instance base widget
272 ModelVer modelVersion = resourceAAIModel.getModelVers().getModelVer().get(0);
274 List<ModelElement> matchedVFBaseWidgetElements =
275 getModelElementbyRelationshipValue(modelVersion.getModelElements(),
276 Widget.getWidget(Widget.Type.ALLOTTED_RESOURCE).getId());
277 validateMatchedModelElementsInService(matchedVFBaseWidgetElements,
278 Widget.getWidget(Widget.Type.ALLOTTED_RESOURCE).getName());
280 validateWidgetIds(matchedVFBaseWidgetElements, Widget.getWidget(Widget.Type.ALLOTTED_RESOURCE).getName(),
281 Widget.getWidget(Widget.Type.ALLOTTED_RESOURCE).getWidgetId());
283 validateWidgetIds(matchedVFBaseWidgetElements, Widget.getWidget(Widget.Type.ALLOTTED_RESOURCE).getName(),
284 Widget.getWidget(Widget.Type.ALLOTTED_RESOURCE).getWidgetId());
286 Map<String, Object> providingServiceDetails = getProvidingServiceDetails(resourceTosca);
288 ModelElements containedModelElements = modelVersion.getModelElements().getModelElement().
289 get(0).getModelElements();
291 org.testng.Assert.assertEquals(containedModelElements.getModelElement().get(0).getRelationshipList()
292 .getRelationship().get(0).getRelationshipData().get(0).getRelationshipValue(),
293 providingServiceDetails.get("providing_service_uuid"));
295 org.testng.Assert.assertEquals(containedModelElements.getModelElement().get(0).getRelationshipList()
296 .getRelationship().get(0).getRelationshipData().get(1).getRelationshipValue(),
297 providingServiceDetails.get("providing_service_invariant_uuid"));
300 if("Allotted Resource".equals(resourceTosca.getMetadata().get("category")) &&
301 "Tunnel XConnect".equals(resourceTosca.getMetadata().get("subcategory"))) {
303 List<ModelElement> matchedTunnelXConnectWidgetElements =
304 getModelElementbyRelationshipValue(containedModelElements,
305 Widget.getWidget(Widget.Type.TUNNEL_XCONNECT).getId());
306 validateMatchedModelElementsInService(matchedTunnelXConnectWidgetElements,
307 Widget.getWidget(Widget.Type.TUNNEL_XCONNECT).getName());
309 validateWidgetIds(matchedTunnelXConnectWidgetElements, Widget.getWidget(Widget.Type.TUNNEL_XCONNECT).getName(),
310 Widget.getWidget(Widget.Type.TUNNEL_XCONNECT).getWidgetId());
314 System.out.println("Resource mapping not found for " + resourceNameVersionId);
318 }catch (IllegalArgumentException e) {
319 org.testng.Assert.fail(e.getMessage()); //Can come while populating metadata
324 public static Map<String, Object> getProvidingServiceDetails(ToscaTemplate resourceTemplate) {
325 Set<String> keys = resourceTemplate.getTopology_template().getNode_templates().keySet();
327 Map<String, Object> nodeProperties =null;
328 for(String key : keys) {
329 NodeTemplate node = resourceTemplate.getTopology_template().getNode_templates().get(key);
330 if(node.getType().contains("org.openecomp.resource.vfc") &&
331 node.getMetadata().get("category").equals("Allotted Resource")) {
332 nodeProperties = node.getProperties();
336 return nodeProperties;
339 public static void testL3NetworkResourceTosca(Map<String, Model> outputArtifactMap , ToscaTemplate
342 if (resourceTosca != null) {
343 Resource resource = new Resource();
344 resource.populateModelIdentificationInformation(resourceTosca.getMetadata());
345 String resourceNameVersionId = resource.getModelNameVersionId();
346 Model resourceAAIModel =
347 getAAIModelByNameVersionId(resourceNameVersionId, outputArtifactMap);
348 if (resourceAAIModel != null) {
349 validateResourceModelMetadata(resource, resourceAAIModel);
350 //Validate Resource instance base widget
352 ModelVer modelVersion = resourceAAIModel.getModelVers().getModelVer().get(0);
354 List<ModelElement> matchedVFBaseWidgetElements =
355 getModelElementbyRelationshipValue(modelVersion.getModelElements(),
356 Widget.getWidget(Widget.Type.L3_NET).getId());
357 validateMatchedModelElementsInService(matchedVFBaseWidgetElements,
358 Widget.getWidget(Widget.Type.L3_NET).getName());
360 validateWidgetIds(matchedVFBaseWidgetElements, Widget.getWidget(Widget.Type.L3_NET).getName(),
361 Widget.getWidget(Widget.Type.L3_NET).getWidgetId());
364 System.out.println("Resource mapping not found for " + resourceNameVersionId);
368 }catch (IllegalArgumentException e) {
369 org.testng.Assert.fail(e.getMessage()); //Can come while populating metadata
374 public static void testServiceTosca(Map<String, Model> outputArtifactMap,List<ToscaTemplate>
377 ToscaTemplate serviceTosca = getServiceTosca(toscas);
378 if (serviceTosca == null) {
379 org.testng.Assert.fail("Service Tosca not found");
381 serviceTosca.getMetadata().put("version", additionalParams.get(AdditionalParams
382 .ServiceVersion.getName()));
383 Service service = new Service();
384 service.populateModelIdentificationInformation(serviceTosca.getMetadata());
385 String serviceNameVersionId = service.getModelNameVersionId();
386 Model serviceAAIModel = getAAIModelByNameVersionId(serviceNameVersionId, outputArtifactMap);
387 validateServiceModelMetadata(service, serviceAAIModel);
388 //Validate Service instance base widget
389 ModelVer modelVersion = serviceAAIModel.getModelVers().getModelVer().get(0);
391 List<ModelElement> matchedServiceBaseWidgetElements =
392 getModelElementbyRelationshipValue( modelVersion.getModelElements(),
393 Widget.getWidget(Widget.Type.SERVICE).getId());
394 validateMatchedModelElementsInService(matchedServiceBaseWidgetElements,
395 Widget.getWidget(Widget.Type.SERVICE).getName());
397 validateWidgetIds(matchedServiceBaseWidgetElements, Widget.getWidget(Widget.Type.SERVICE).getName(),
398 Widget.getWidget(Widget.Type.SERVICE).getWidgetId());
400 ModelElements baseServiceWidgetModelElements =
401 matchedServiceBaseWidgetElements.get(0).getModelElements();
404 Map<String, String> nodeTemplateIdTypeStore = getNodeTemplateTypeStore(serviceTosca);
405 if (nodeTemplateIdTypeStore != null) {
406 for (String key : nodeTemplateIdTypeStore.keySet()) {
407 if (nodeTemplateIdTypeStore.get(key).contains("org.openecomp.resource.vf")) {
408 List<ModelElement> matchedResourceElements =
409 getModelElementbyRelationshipValue(baseServiceWidgetModelElements, key);
410 if (nodeTemplateIdTypeStore.get(key).contains("org.openecomp.resource.vf.allottedResource")){
411 validateMatchedModelElementsInService(matchedResourceElements,
412 Widget.getWidget(Widget.Type.ALLOTTED_RESOURCE).getName());
414 validateMatchedModelElementsInService(matchedResourceElements,
415 Widget.getWidget(Widget.Type.VF).getName());
418 //Validate uuid and invariantuuid are populated in model-ver.model-version-id and model.model-invariant-id
419 org.testng.Assert.assertEquals(matchedResourceElements.get(0).getRelationshipList()
420 .getRelationship().get(0)
421 .getRelationshipData().get(0).getRelationshipValue(),key);
423 org.testng.Assert.assertEquals(matchedResourceElements.get(0).getRelationshipList().getRelationship().get(0)
424 .getRelationshipData().get(1).getRelationshipValue(), nodeTemplateIdTypeStore
425 .get(key+"-INV_UID"));
426 } else if(nodeTemplateIdTypeStore.get(key).contains("org.openecomp.resource.vl")){
427 //validate l3-network in service tosca
428 List<ModelElement> matchedResourceElements =
429 getModelElementbyRelationshipValue(baseServiceWidgetModelElements, key);
430 validateMatchedModelElementsInService(matchedResourceElements,
431 Widget.getWidget(Widget.Type.L3_NET).getName());
432 //Validate uuid and invariantuuid are populated in model-ver.model-version-id and model.model-invariant-id
433 org.testng.Assert.assertEquals(matchedResourceElements.get(0).getRelationshipList()
434 .getRelationship().get(0)
435 .getRelationshipData().get(0).getRelationshipValue(),key);
437 org.testng.Assert.assertEquals(matchedResourceElements.get(0).getRelationshipList().getRelationship().get(0)
438 .getRelationshipData().get(1).getRelationshipValue(), nodeTemplateIdTypeStore
439 .get(key+"-INV_UID"));
444 System.out.println();
447 } catch (IllegalArgumentException e) {
448 org.testng.Assert.fail(e.getMessage()); //Can come while populating metadata
452 private static void validateWidgetIds(List<ModelElement> matchedServiceBaseWidgetElements,
453 String widgetName, String widgetInvUuId) {
454 org.testng.Assert.assertEquals(matchedServiceBaseWidgetElements.get(0).getRelationshipList().getRelationship().get(0)
455 .getRelationshipData().get(0).getRelationshipValue(), properties.getProperty(ArtifactType.AAI.name()
456 + ".model-version-id."+ widgetName));
458 org.testng.Assert.assertEquals(matchedServiceBaseWidgetElements.get(0).getRelationshipList().getRelationship().get(0)
459 .getRelationshipData().get(1).getRelationshipValue(), widgetInvUuId);
464 private static void validateMatchedModelElementsInService(List<ModelElement> matchedModelElements, String modelType) {
465 if (matchedModelElements.isEmpty()) {
466 Assert.fail(modelType + " not present ");
468 if (matchedModelElements.size() > 1) {
469 Assert.fail("More than one " + modelType + " present ");
473 private static Map<String, String> getNodeTemplateTypeStore(ToscaTemplate toscaTemplate) {
474 if (toscaTemplate.getTopology_template() != null) {
475 Map<String, NodeTemplate> nodeTemplateMap =
476 toscaTemplate.getTopology_template().getNode_templates();
477 Map<String, String> nodeTemplateIdTypeStore = new LinkedHashMap<>();
478 if (nodeTemplateMap != null) {
479 for (Map.Entry<String, NodeTemplate> e : nodeTemplateMap.entrySet()) {
480 String uuid = e.getValue().getMetadata().get("resourceUUID");
481 if (GeneratorUtil.isEmpty(uuid)) {
482 uuid = e.getValue().getMetadata().get("UUID");
483 if (GeneratorUtil.isEmpty(uuid)) {
484 Assert.fail("UUID Not found");
487 if(e.getValue().getType().contains("org.openecomp.resource.vf.")&& (e.getValue()
488 .getMetadata().get("category").equals("Allotted Resource")))
490 e.getValue().setType("org.openecomp.resource.vf.allottedResource");
492 nodeTemplateIdTypeStore.put(uuid, e.getValue().getType());
493 resourcesVersion.put(uuid,e.getValue().getMetadata().get
495 //Populate invraintUuId for V9
496 String invUuId = e.getValue().getMetadata().get("invariantUUID");
497 nodeTemplateIdTypeStore.put(uuid+"-INV_UID" , invUuId);
500 return nodeTemplateIdTypeStore;
507 private static Map<String, String> getGroupsTypeStore(ToscaTemplate toscaTemplate) {
508 if(toscaTemplate.getTopology_template() !=null) {
509 Map<String, GroupDefinition> groupDefinitionMap = toscaTemplate.getTopology_template().getGroups();
510 Map<String, String> groupDefinitionIdTypeStore = new LinkedHashMap<>();
511 if (groupDefinitionMap != null) {
512 for (Map.Entry<String, GroupDefinition> e : groupDefinitionMap.entrySet()) {
513 if (e.getValue().getType().contains("org.openecomp.groups.VfModule")) {
514 String uuid = e.getValue().getMetadata().get("vfModuleModelUUID");
515 if (GeneratorUtil.isEmpty(uuid)) {
516 uuid = e.getValue().getMetadata().get("UUID");
517 if (GeneratorUtil.isEmpty(uuid))
518 Assert.fail("UUID Not found");
520 groupDefinitionIdTypeStore.put(uuid, e.getValue().getType());
524 return groupDefinitionIdTypeStore;
531 private static void validateServiceModelMetadata(Service serviceToscaModel, Model generatedAAIModel) {
532 Assert.assertEquals(serviceToscaModel.getModelNameVersionId(), generatedAAIModel
533 .getModelVers().getModelVer().get(0).getModelVersionId());
534 Assert.assertEquals(serviceToscaModel.getModelId(), generatedAAIModel.getModelInvariantId());
535 Assert.assertEquals(serviceToscaModel.getModelName(), generatedAAIModel.getModelVers()
536 .getModelVer().get(0).getModelName());
537 Assert.assertEquals(serviceToscaModel.getModelVersion(), generatedAAIModel.getModelVers()
538 .getModelVer().get(0).getModelVersion());
539 Assert.assertEquals(serviceToscaModel.getModelDescription(), generatedAAIModel.getModelVers()
540 .getModelVer().get(0).getModelDescription());
543 private static void validateResourceModelMetadata(Resource resouerceToscaModel, Model generatedAAIModel) {
544 Assert.assertEquals(resouerceToscaModel.getModelNameVersionId(), generatedAAIModel
545 .getModelVers().getModelVer().get(0).getModelVersionId());
546 Assert.assertEquals(resouerceToscaModel.getModelId(), generatedAAIModel.getModelInvariantId());
547 Assert.assertEquals(resouerceToscaModel.getModelName(), generatedAAIModel.getModelVers()
548 .getModelVer().get(0).getModelName());
549 Assert.assertEquals(resouerceToscaModel.getModelVersion(), generatedAAIModel.getModelVers()
550 .getModelVer().get(0).getModelVersion());
551 Assert.assertEquals(resouerceToscaModel.getModelDescription(), generatedAAIModel.getModelVers()
552 .getModelVer().get(0).getModelDescription());
555 private static void validateVFModelMetadata(Map<String, String> vfModuleModelMetadata, Model generatedAAIModel) {
556 Assert.assertEquals(vfModuleModelMetadata.get("vfModuleModelUUID"), generatedAAIModel
557 .getModelVers().getModelVer().get(0).getModelVersionId());
558 Assert.assertEquals(vfModuleModelMetadata.get("vfModuleModelInvariantUUID"), generatedAAIModel.getModelInvariantId());
559 Assert.assertEquals(vfModuleModelMetadata.get("vfModuleModelName"), generatedAAIModel.getModelVers()
560 .getModelVer().get(0).getModelName());
561 Assert.assertEquals(vfModuleModelMetadata.get("vfModuleModelVersion"), generatedAAIModel.getModelVers()
562 .getModelVer().get(0).getModelVersion());
563 Assert.assertEquals(vfModuleModelMetadata.get("vf_module_description"), generatedAAIModel.getModelVers()
564 .getModelVer().get(0).getModelDescription());
568 private static Model getAAIModelByNameVersionId(String nameVersionId,
569 Map<String, Model> outputArtifactMap) {
570 return outputArtifactMap.get(nameVersionId);
573 private static List<ModelElement> getModelElementbyRelationshipValue(ModelElements modelElements,
574 String relationshipValue) {
575 List<ModelElement> matchedModelElements = new ArrayList<>();
576 if (modelElements != null) {
577 List<ModelElement> modelElementList = modelElements.getModelElement();
578 for (ModelElement element : modelElementList) {
579 List<Relationship> relationshipList = element.getRelationshipList().getRelationship();
580 for (Relationship r : relationshipList) {
581 List<RelationshipData> relationshipDataList = r.getRelationshipData();
582 for (RelationshipData relationshipData : relationshipDataList) {
583 if (relationshipData.getRelationshipValue().equals(relationshipValue))
584 matchedModelElements.add(element);
589 return matchedModelElements;
592 public static void populateAAIGeneratedModelStore(Map<String, Model> outputArtifactMap,List<Artifact> resultData) {
593 for (Artifact outputArtifact : resultData) {
594 if (outputArtifact.getType().equals(ArtifactType.MODEL_INVENTORY_PROFILE.name())) {
595 byte[] decodedPayload = GeneratorUtil.decoder(outputArtifact.getPayload());
596 Model aaiModel = getUnmarshalledArtifactModel(new String(decodedPayload));
597 outputArtifactMap.put(aaiModel.getModelVers().getModelVer().get(0).getModelVersionId(), aaiModel);
602 private static Model getUnmarshalledArtifactModel(String aaiModel) {
603 JAXBContext jaxbContext;
605 jaxbContext = JAXBContext.newInstance(Model.class);
606 Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
607 InputStream aaiModelStream = new ByteArrayInputStream(aaiModel.getBytes());
608 return (Model) unmarshaller.unmarshal(aaiModelStream);
609 } catch (JAXBException e) {
616 * Identify the service tosca artifact from the list of translated tosca inputs
618 * @param input List of translated {@link ToscaTemplate tosca} object models
619 * @return Identified service {@link ToscaTemplate tosca}
621 private static ToscaTemplate getServiceTosca(List<ToscaTemplate> input) {
622 Iterator<ToscaTemplate> iter = input.iterator();
623 while (iter.hasNext()) {
624 ToscaTemplate tosca = iter.next();
625 if (tosca.isService()) {
634 private static ToscaTemplate getResourceTosca(List<ToscaTemplate> input) {
635 Iterator<ToscaTemplate> iter = input.iterator();
636 while (iter.hasNext()) {
637 ToscaTemplate tosca = iter.next();
638 if (!tosca.isService()) {
647 private static Map<String, String> getVFModuleMetadataTosca(ToscaTemplate toscaTemplate, String vfModuleModelUUID) {
648 Map<String, GroupDefinition> groupDefinitionMap = toscaTemplate.getTopology_template().getGroups();
649 Map<String, String> vfModuleModelMetadata = new LinkedHashMap<>();
650 for (Map.Entry<String, GroupDefinition> e : groupDefinitionMap.entrySet()) {
651 if (e.getValue().getType().contains("org.openecomp.groups.VfModule")) {
652 String uuid = e.getValue().getMetadata().get("vfModuleModelUUID");
653 if (uuid == vfModuleModelUUID) {
654 vfModuleModelMetadata = e.getValue().getMetadata();
655 vfModuleModelMetadata.put("vf_module_description", (String) e.getValue().getProperties().get("vf_module_description"));
659 return vfModuleModelMetadata;
662 private static Map<String, Object> getVFModuleMembersTosca(ToscaTemplate toscaTemplate, String vfModuleModelUUID) {
663 Map<String, GroupDefinition> groupDefinitionMap = toscaTemplate.getTopology_template().getGroups();
664 Map<String, NodeTemplate> nodeTemplateMaps = toscaTemplate.getTopology_template().getNode_templates();
665 Map<String, Object> vfModuleMembers = new LinkedHashMap<>();
666 List<String> vfModuleModelMetadata = new ArrayList<>();
667 for (Map.Entry<String, GroupDefinition> e : groupDefinitionMap.entrySet()) {
668 if (e.getValue().getType().contains("org.openecomp.groups.VfModule")) {
669 String uuid = e.getValue().getMetadata().get("vfModuleModelUUID");
670 if (uuid == vfModuleModelUUID) {
671 vfModuleModelMetadata = e.getValue().getMembers();
672 Iterator itr = vfModuleModelMetadata.iterator();
673 while (itr.hasNext()) {
674 Object obj= itr.next();
675 NodeTemplate nodeTemplate = nodeTemplateMaps.get(obj);
676 String nodetype = null;
677 if (nodeTemplate != null)
678 nodetype = nodeTemplate.getType();
679 if (nodetype != null) {
680 String widgetType = membersType(nodetype);
681 if (widgetType != null)
682 vfModuleMembers.put(widgetType, obj);
690 return vfModuleMembers;
694 private static String membersType(String toscaType) {
695 String modelToBeReturned = null;
696 while (toscaType != null && toscaType.lastIndexOf(".") != -1 && modelToBeReturned == null) {
700 case "org.openecomp.resource.vfc":
701 modelToBeReturned = "vserver";
703 case "org.openecomp.resource.cp":
704 case "org.openecomp.cp":
705 modelToBeReturned = "l-interface";
707 case "org.openecomp.resource.vl":
708 modelToBeReturned = "l3-network";
710 case "org.openecomp.resource.vf":
711 modelToBeReturned = "generic-vnf";
713 case "org.openecomp.groups.VfModule":
714 modelToBeReturned = "vf-module";
716 case "org.openecomp.resource.vfc.nodes.heat.cinder":
717 modelToBeReturned = "volume";
720 modelToBeReturned = null;
724 toscaType = toscaType.substring(0, toscaType.lastIndexOf("."));
726 return modelToBeReturned;