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 public static final String RESOURCE_MAPPING_NOT_FOUND = "Resource mapping not found for ";
50 public static final String INV_UID = "-INV_UID";
51 public static final String VF_MODULE_NAMESPACE = "org.openecomp.groups.VfModule";
52 public static final String VF_MODULE_DESCRIPTION = "vf_module_description";
53 public static final String CATEGORY = "category";
54 static Map<String, String> resourcesVersion = new HashMap<>();
55 public static Properties properties = new Properties();
57 @SuppressWarnings("Since15")
58 public static void validateName(List<Artifact> artifactList) throws JAXBException {
59 for(Artifact artifact : artifactList){
60 String xml = new String(Base64.getDecoder().decode(artifact.getPayload()));
61 Model model = getUnmarshalledArtifactModel(xml);
62 String xmlName = "AAI-"+ model.getModelVers().getModelVer().get(0).getModelName()
65 ()+"-"+model.getModelVers().getModelVer().get(0)
66 .getModelVersion()+".xml";
68 Assert.assertEquals(true,artifact.getName().equals(xmlName));
73 public static void checkArtifactName(String name){
74 Assert.assertEquals(true,name.length()<=255);
77 public static void checkArtifactLabel(String label){
78 Pattern pattern = Pattern.compile("[a-zA-Z0-9-+\\s]+");
79 Matcher matcher = pattern.matcher(label);
80 Assert.assertEquals(true,matcher.matches());
83 public static void checkArtifactDescription(String description){
84 Pattern pattern = Pattern.compile("[a-zA-Z\\s\\t\\n]+");
85 Matcher matcher = pattern.matcher(description);
86 Assert.assertEquals(true,matcher.matches());
87 Assert.assertEquals(true,description.length()<=256);
91 public static void testResourceTosca(Iterator<ToscaTemplate> itr, Map<String, Model>
94 ToscaTemplate toscaTemplate = itr.next();
95 String resourceVersion= resourcesVersion.get(toscaTemplate.getMetadata().get("UUID"));
96 toscaTemplate.getMetadata().put("version", resourceVersion);
97 if("VF".equals(toscaTemplate.getMetadata().get("type")) && !("Allotted Resource".equals
98 (toscaTemplate.getMetadata().get(CATEGORY))) ){
99 testVfTosca(outputArtifactMap, toscaTemplate);
100 } else if("VF".equals(toscaTemplate.getMetadata().get("type")) && ("Allotted Resource".equals
101 (toscaTemplate.getMetadata().get(CATEGORY))) ){
102 testAllottedResourceTosca(outputArtifactMap, toscaTemplate);
103 } else if("VL".equals(toscaTemplate.getMetadata().get("type"))){
104 testL3NetworkResourceTosca(outputArtifactMap, toscaTemplate);
109 public static void testVfTosca(Map<String, Model> outputArtifactMap , ToscaTemplate resourceTosca) {
111 if (resourceTosca != null) {
112 Resource resource = new Resource();
113 resource.populateModelIdentificationInformation(resourceTosca.getMetadata());
114 String resourceNameVersionId = resource.getModelNameVersionId();
115 Model resourceAAIModel =
116 getAAIModelByNameVersionId(resourceNameVersionId, outputArtifactMap);
117 if (resourceAAIModel != null) {
118 validateResourceModelMetadata(resource, resourceAAIModel);
119 //Validate Resource instance base widget
121 ModelVer modelVersion = resourceAAIModel.getModelVers().getModelVer().get(0);
123 List<ModelElement> matchedVFBaseWidgetElements =
124 getModelElementbyRelationshipValue(modelVersion.getModelElements(),
125 Widget.getWidget(Widget.Type.VF).getId());
126 validateMatchedModelElementsInService(matchedVFBaseWidgetElements,
127 Widget.getWidget(Widget.Type.VF).getName());
129 validateWidgetIds(matchedVFBaseWidgetElements, Widget.getWidget(Widget.Type.VF).getName(),
130 Widget.getWidget(Widget.Type.VF).getWidgetId());
132 ModelElements baseResourceWidgetModelElements =
133 matchedVFBaseWidgetElements.get(0).getModelElements();
134 if (resourceTosca.getTopology_template() != null) {
135 Map<String, String> groupIdTypeStore = getGroupsTypeStore(resourceTosca);
137 if (baseResourceWidgetModelElements.getModelElement().size() !=
138 groupIdTypeStore.size()) {
139 org.testng.Assert.fail("Missing VFModule in VF model.xml");
142 for (String key : groupIdTypeStore.keySet()) {
144 List<ModelElement> matchedResourceElements =
145 getModelElementbyRelationshipValue(baseResourceWidgetModelElements, key);
146 validateMatchedModelElementsInService(matchedResourceElements,
147 Widget.getWidget(Widget.Type.VFMODULE).getName());
148 Model resourceAAIVFModel = getAAIModelByNameVersionId(key, outputArtifactMap);
149 Map<String, String> vfModuleModelMetadata =
150 getVFModuleMetadataTosca(resourceTosca, key);
151 Map<String, Object> vfModuleMembers = getVFModuleMembersTosca(resourceTosca, key);
153 validateVFModelMetadata(vfModuleModelMetadata, resourceAAIVFModel);
156 ModelVer modelVfVersion = resourceAAIVFModel.getModelVers().getModelVer().get(0);
158 List<ModelElement> matchedVFModuleBaseWidgetElements =
159 getModelElementbyRelationshipValue(modelVfVersion.getModelElements(),
160 Widget.getWidget(Widget.Type.VFMODULE).getId());
161 validateMatchedModelElementsInService(matchedVFModuleBaseWidgetElements,
162 Widget.getWidget(Widget.Type.VFMODULE).getName());
163 validateWidgetIds(matchedVFModuleBaseWidgetElements, Widget.getWidget(Widget.Type.VFMODULE)
164 .getName(), Widget.getWidget(Widget.Type.VFMODULE).getWidgetId());
166 ModelElements baseResourceVFModuleWidgetModelElements =
167 matchedVFModuleBaseWidgetElements.get(0).getModelElements();
168 if (vfModuleMembers.containsKey("l3-network")) {
170 List<ModelElement> matchedL3NetworkElements =
171 getModelElementbyRelationshipValue(baseResourceVFModuleWidgetModelElements,
172 Widget.getWidget(Widget.Type.L3_NET).getId());
173 validateMatchedModelElementsInService(matchedL3NetworkElements,
174 Widget.getWidget(Widget.Type.L3_NET).getName());
175 validateWidgetIds(matchedL3NetworkElements, Widget.getWidget(Widget.Type.L3_NET)
176 .getName(), Widget.getWidget(Widget.Type.L3_NET).getWidgetId());
178 if (vfModuleMembers.containsKey("vserver")) {
180 List<ModelElement> matchedVserverElements =
181 getModelElementbyRelationshipValue(baseResourceVFModuleWidgetModelElements,
182 Widget.getWidget(Widget.Type.VSERVER).getId());
183 validateMatchedModelElementsInService(matchedVserverElements,
184 Widget.getWidget(Widget.Type.VSERVER).getName());
185 ModelElements vserverWidgetModelElements =
186 matchedVserverElements.get(0).getModelElements();
188 validateWidgetIds(matchedVserverElements, Widget.getWidget(Widget.Type.VSERVER)
189 .getName(), Widget.getWidget(Widget.Type.VSERVER).getWidgetId());
192 //Validate vserver->vfc
193 List<ModelElement> matchedVfcElements =
194 getModelElementbyRelationshipValue(vserverWidgetModelElements,
195 Widget.getWidget(Widget.Type.VFC).getId());
196 validateMatchedModelElementsInService(matchedVfcElements,
197 Widget.getWidget(Widget.Type.VFC).getName());
198 validateWidgetIds(matchedVfcElements, Widget.getWidget(Widget.Type.VFC).getName(),
199 Widget.getWidget(Widget.Type.VFC).getWidgetId());
201 //Validate vserver->Image
202 List<ModelElement> matchedImageElements =
203 getModelElementbyRelationshipValue(vserverWidgetModelElements,
204 Widget.getWidget(Widget.Type.IMAGE).getId());
205 validateMatchedModelElementsInService(matchedImageElements,
206 Widget.getWidget(Widget.Type.IMAGE).getName());
207 validateWidgetIds(matchedImageElements, Widget.getWidget(Widget.Type.IMAGE)
208 .getName(), Widget.getWidget(Widget.Type.IMAGE).getWidgetId());
211 //Validate vserver->Flavor
212 List<ModelElement> matchedFlavorElements =
213 getModelElementbyRelationshipValue(vserverWidgetModelElements,
214 Widget.getWidget(Widget.Type.FLAVOR).getId());
215 validateMatchedModelElementsInService(matchedFlavorElements,
216 Widget.getWidget(Widget.Type.FLAVOR).getName());
217 validateWidgetIds(matchedFlavorElements, Widget.getWidget(Widget.Type.FLAVOR).getName(),
218 Widget.getWidget(Widget.Type.FLAVOR).getWidgetId());
220 //Validate vserver->Tenant
221 List<ModelElement> matchedTenantElements =
222 getModelElementbyRelationshipValue(vserverWidgetModelElements,
223 Widget.getWidget(Widget.Type.TENANT).getId());
224 validateMatchedModelElementsInService(matchedTenantElements,
225 Widget.getWidget(Widget.Type.TENANT).getName());
226 validateWidgetIds(matchedTenantElements, Widget.getWidget(Widget.Type.TENANT).getName(),
227 Widget.getWidget(Widget.Type.TENANT).getWidgetId());
229 //Validate vserver->l-interface
230 if (vfModuleMembers.containsKey("l-interface")) {
231 List<ModelElement> matchedLinterfaceElements =
232 getModelElementbyRelationshipValue(vserverWidgetModelElements,
233 Widget.getWidget(Widget.Type.LINT).getId());
234 validateMatchedModelElementsInService(matchedLinterfaceElements,
235 Widget.getWidget(Widget.Type.LINT).getName());
236 validateWidgetIds(matchedLinterfaceElements, Widget.getWidget(Widget.Type.LINT).getName(),
237 Widget.getWidget(Widget.Type.LINT).getWidgetId());
239 //Validate vserver->volume
240 if (vfModuleMembers.containsKey("volume")) {
241 List<ModelElement> matchedVolumeElements =
242 getModelElementbyRelationshipValue(vserverWidgetModelElements,
243 Widget.getWidget(Widget.Type.VOLUME).getId());
244 validateMatchedModelElementsInService(matchedVolumeElements,
245 Widget.getWidget(Widget.Type.VOLUME).getName());
246 validateWidgetIds(matchedVolumeElements, Widget.getWidget(Widget.Type.VOLUME).getName(),
247 Widget.getWidget(Widget.Type.VOLUME).getWidgetId());
253 System.out.println(RESOURCE_MAPPING_NOT_FOUND + resourceNameVersionId);
258 public static void testAllottedResourceTosca(Map<String, Model> outputArtifactMap , ToscaTemplate
261 if (resourceTosca != null) {
262 Resource resource = new Resource();
263 resource.populateModelIdentificationInformation(resourceTosca.getMetadata());
264 String resourceNameVersionId = resource.getModelNameVersionId();
265 Model resourceAAIModel =
266 getAAIModelByNameVersionId(resourceNameVersionId, outputArtifactMap);
267 if (resourceAAIModel != null) {
268 validateResourceModelMetadata(resource, resourceAAIModel);
269 //Validate Resource instance base widget
271 ModelVer modelVersion = resourceAAIModel.getModelVers().getModelVer().get(0);
273 List<ModelElement> matchedVFBaseWidgetElements =
274 getModelElementbyRelationshipValue(modelVersion.getModelElements(),
275 Widget.getWidget(Widget.Type.ALLOTTED_RESOURCE).getId());
276 validateMatchedModelElementsInService(matchedVFBaseWidgetElements,
277 Widget.getWidget(Widget.Type.ALLOTTED_RESOURCE).getName());
279 validateWidgetIds(matchedVFBaseWidgetElements, Widget.getWidget(Widget.Type.ALLOTTED_RESOURCE).getName(),
280 Widget.getWidget(Widget.Type.ALLOTTED_RESOURCE).getWidgetId());
282 validateWidgetIds(matchedVFBaseWidgetElements, Widget.getWidget(Widget.Type.ALLOTTED_RESOURCE).getName(),
283 Widget.getWidget(Widget.Type.ALLOTTED_RESOURCE).getWidgetId());
285 Map<String, Object> providingServiceDetails = getProvidingServiceDetails(resourceTosca);
287 ModelElements containedModelElements = modelVersion.getModelElements().getModelElement().
288 get(0).getModelElements();
290 org.testng.Assert.assertEquals(containedModelElements.getModelElement().get(0).getRelationshipList()
291 .getRelationship().get(0).getRelationshipData().get(0).getRelationshipValue(),
292 providingServiceDetails.get("providing_service_uuid"));
294 org.testng.Assert.assertEquals(containedModelElements.getModelElement().get(0).getRelationshipList()
295 .getRelationship().get(0).getRelationshipData().get(1).getRelationshipValue(),
296 providingServiceDetails.get("providing_service_invariant_uuid"));
299 if("Allotted Resource".equals(resourceTosca.getMetadata().get(CATEGORY)) &&
300 "Tunnel XConnect".equals(resourceTosca.getMetadata().get("subcategory"))) {
302 List<ModelElement> matchedTunnelXConnectWidgetElements =
303 getModelElementbyRelationshipValue(containedModelElements,
304 Widget.getWidget(Widget.Type.TUNNEL_XCONNECT).getId());
305 validateMatchedModelElementsInService(matchedTunnelXConnectWidgetElements,
306 Widget.getWidget(Widget.Type.TUNNEL_XCONNECT).getName());
308 validateWidgetIds(matchedTunnelXConnectWidgetElements, Widget.getWidget(Widget.Type.TUNNEL_XCONNECT).getName(),
309 Widget.getWidget(Widget.Type.TUNNEL_XCONNECT).getWidgetId());
313 System.out.println(RESOURCE_MAPPING_NOT_FOUND + resourceNameVersionId);
318 public static Map<String, Object> getProvidingServiceDetails(ToscaTemplate resourceTemplate) {
319 Set<String> keys = resourceTemplate.getTopology_template().getNode_templates().keySet();
321 Map<String, Object> nodeProperties =null;
322 for(String key : keys) {
323 NodeTemplate node = resourceTemplate.getTopology_template().getNode_templates().get(key);
324 if(node.getType().contains("org.openecomp.resource.vfc") &&
325 node.getMetadata().get(CATEGORY).equals("Allotted Resource")) {
326 nodeProperties = node.getProperties();
330 return nodeProperties;
333 public static void testL3NetworkResourceTosca(Map<String, Model> outputArtifactMap , ToscaTemplate
336 if (resourceTosca != null) {
337 Resource resource = new Resource();
338 resource.populateModelIdentificationInformation(resourceTosca.getMetadata());
339 String resourceNameVersionId = resource.getModelNameVersionId();
340 Model resourceAAIModel =
341 getAAIModelByNameVersionId(resourceNameVersionId, outputArtifactMap);
342 if (resourceAAIModel != null) {
343 validateResourceModelMetadata(resource, resourceAAIModel);
344 //Validate Resource instance base widget
346 ModelVer modelVersion = resourceAAIModel.getModelVers().getModelVer().get(0);
348 List<ModelElement> matchedVFBaseWidgetElements =
349 getModelElementbyRelationshipValue(modelVersion.getModelElements(),
350 Widget.getWidget(Widget.Type.L3_NET).getId());
351 validateMatchedModelElementsInService(matchedVFBaseWidgetElements,
352 Widget.getWidget(Widget.Type.L3_NET).getName());
354 validateWidgetIds(matchedVFBaseWidgetElements, Widget.getWidget(Widget.Type.L3_NET).getName(),
355 Widget.getWidget(Widget.Type.L3_NET).getWidgetId());
358 System.out.println(RESOURCE_MAPPING_NOT_FOUND + resourceNameVersionId);
363 public static void testServiceTosca(Map<String, Model> outputArtifactMap,List<ToscaTemplate>
366 ToscaTemplate serviceTosca = getServiceTosca(toscas);
367 if (serviceTosca == null) {
368 org.testng.Assert.fail("Service Tosca not found");
370 serviceTosca.getMetadata().put("version", additionalParams.get(AdditionalParams
371 .ServiceVersion.getName()));
372 Service service = new Service();
373 service.populateModelIdentificationInformation(serviceTosca.getMetadata());
374 String serviceNameVersionId = service.getModelNameVersionId();
375 Model serviceAAIModel = getAAIModelByNameVersionId(serviceNameVersionId, outputArtifactMap);
376 validateServiceModelMetadata(service, serviceAAIModel);
377 //Validate Service instance base widget
378 ModelVer modelVersion = serviceAAIModel.getModelVers().getModelVer().get(0);
380 List<ModelElement> matchedServiceBaseWidgetElements =
381 getModelElementbyRelationshipValue( modelVersion.getModelElements(),
382 Widget.getWidget(Widget.Type.SERVICE).getId());
383 validateMatchedModelElementsInService(matchedServiceBaseWidgetElements,
384 Widget.getWidget(Widget.Type.SERVICE).getName());
386 validateWidgetIds(matchedServiceBaseWidgetElements, Widget.getWidget(Widget.Type.SERVICE).getName(),
387 Widget.getWidget(Widget.Type.SERVICE).getWidgetId());
389 ModelElements baseServiceWidgetModelElements =
390 matchedServiceBaseWidgetElements.get(0).getModelElements();
393 Map<String, String> nodeTemplateIdTypeStore = getNodeTemplateTypeStore(serviceTosca);
394 if (nodeTemplateIdTypeStore != null) {
395 for (Map.Entry<String, String> entry : nodeTemplateIdTypeStore.entrySet()) {
396 if (entry.getValue().contains("org.openecomp.resource.vf")) {
397 List<ModelElement> matchedResourceElements =
398 getModelElementbyRelationshipValue(baseServiceWidgetModelElements, entry.getKey());
399 if (entry.getValue().contains("org.openecomp.resource.vf.allottedResource")){
400 validateMatchedModelElementsInService(matchedResourceElements,
401 Widget.getWidget(Widget.Type.ALLOTTED_RESOURCE).getName());
403 validateMatchedModelElementsInService(matchedResourceElements,
404 Widget.getWidget(Widget.Type.VF).getName());
407 //Validate uuid and invariantuuid are populated in model-ver.model-version-id and model.model-invariant-id
408 org.testng.Assert.assertEquals(matchedResourceElements.get(0).getRelationshipList()
409 .getRelationship().get(0)
410 .getRelationshipData().get(0).getRelationshipValue(),entry.getKey());
412 org.testng.Assert.assertEquals(matchedResourceElements.get(0).getRelationshipList().getRelationship().get(0)
413 .getRelationshipData().get(1).getRelationshipValue(), nodeTemplateIdTypeStore
414 .get(entry.getKey()+ INV_UID));
415 } else if(entry.getValue().contains("org.openecomp.resource.vl")){
416 //validate l3-network in service tosca
417 List<ModelElement> matchedResourceElements =
418 getModelElementbyRelationshipValue(baseServiceWidgetModelElements, entry.getKey());
419 validateMatchedModelElementsInService(matchedResourceElements,
420 Widget.getWidget(Widget.Type.L3_NET).getName());
421 //Validate uuid and invariantuuid are populated in model-ver.model-version-id and model.model-invariant-id
422 org.testng.Assert.assertEquals(matchedResourceElements.get(0).getRelationshipList()
423 .getRelationship().get(0)
424 .getRelationshipData().get(0).getRelationshipValue(),entry.getKey());
426 org.testng.Assert.assertEquals(matchedResourceElements.get(0).getRelationshipList().getRelationship().get(0)
427 .getRelationshipData().get(1).getRelationshipValue(), nodeTemplateIdTypeStore
428 .get(entry.getKey() + INV_UID));
434 private static void validateWidgetIds(List<ModelElement> matchedServiceBaseWidgetElements,
435 String widgetName, String widgetInvUuId) {
436 org.testng.Assert.assertEquals(matchedServiceBaseWidgetElements.get(0).getRelationshipList().getRelationship().get(0)
437 .getRelationshipData().get(0).getRelationshipValue(), properties.getProperty(ArtifactType.AAI.name()
438 + ".model-version-id."+ widgetName));
440 org.testng.Assert.assertEquals(matchedServiceBaseWidgetElements.get(0).getRelationshipList().getRelationship().get(0)
441 .getRelationshipData().get(1).getRelationshipValue(), widgetInvUuId);
446 private static void validateMatchedModelElementsInService(List<ModelElement> matchedModelElements, String modelType) {
447 if (matchedModelElements.isEmpty()) {
448 Assert.fail(modelType + " not present ");
450 if (matchedModelElements.size() > 1) {
451 Assert.fail("More than one " + modelType + " present ");
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");
469 if(e.getValue().getType().contains("org.openecomp.resource.vf.")&& (e.getValue()
470 .getMetadata().get(CATEGORY).equals("Allotted Resource")))
472 e.getValue().setType("org.openecomp.resource.vf.allottedResource");
474 nodeTemplateIdTypeStore.put(uuid, e.getValue().getType());
475 resourcesVersion.put(uuid,e.getValue().getMetadata().get
477 //Populate invraintUuId for V9
478 String invUuId = e.getValue().getMetadata().get("invariantUUID");
479 nodeTemplateIdTypeStore.put(uuid + INV_UID , invUuId);
482 return nodeTemplateIdTypeStore;
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");
502 groupDefinitionIdTypeStore.put(uuid, e.getValue().getType());
506 return groupDefinitionIdTypeStore;
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());
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());
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());
550 private static Model getAAIModelByNameVersionId(String nameVersionId,
551 Map<String, Model> outputArtifactMap) {
552 return outputArtifactMap.get(nameVersionId);
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);
571 return matchedModelElements;
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);
584 private static Model getUnmarshalledArtifactModel(String aaiModel) throws JAXBException {
585 JAXBContext jaxbContext;
587 jaxbContext = JAXBContext.newInstance(Model.class);
588 Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
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");
597 * Identify the service tosca artifact from the list of translated tosca inputs
599 * @param input List of translated {@link ToscaTemplate tosca} object models
600 * @return Identified service {@link ToscaTemplate tosca}
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()) {
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));
627 return vfModuleModelMetadata;
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);
658 return vfModuleMembers;
662 private static String membersType(String toscaType) {
663 String modelToBeReturned = null;
664 while (toscaType != null && toscaType.lastIndexOf('.') != -1 && modelToBeReturned == null) {
668 case "org.openecomp.resource.vfc":
669 modelToBeReturned = "vserver";
671 case "org.openecomp.resource.cp":
672 case "org.openecomp.cp":
673 modelToBeReturned = "l-interface";
675 case "org.openecomp.resource.vl":
676 modelToBeReturned = "l3-network";
678 case "org.openecomp.resource.vf":
679 modelToBeReturned = "generic-vnf";
681 case VF_MODULE_NAMESPACE:
682 modelToBeReturned = "vf-module";
684 case "org.openecomp.resource.vfc.nodes.heat.cinder":
685 modelToBeReturned = "volume";
688 modelToBeReturned = null;
692 toscaType = toscaType.substring(0, toscaType.lastIndexOf("."));
694 return modelToBeReturned;