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.onap.sdc.generator;
23 import org.junit.Assert;
24 import org.onap.sdc.generator.aai.model.*;
25 import org.onap.sdc.generator.aai.model.Service;
26 import org.onap.sdc.generator.aai.tosca.GroupDefinition;
27 import org.onap.sdc.generator.aai.tosca.NodeTemplate;
28 import org.onap.sdc.generator.aai.tosca.ToscaTemplate;
29 import org.onap.sdc.generator.aai.xml.*;
30 import org.onap.sdc.generator.aai.xml.Model;
31 import org.onap.sdc.generator.data.*;
32 import org.junit.Assert;
34 import javax.xml.bind.JAXBContext;
35 import javax.xml.bind.JAXBException;
36 import javax.xml.bind.Unmarshaller;
37 import java.io.ByteArrayInputStream;
38 import java.io.IOException;
39 import java.io.InputStream;
41 import java.util.Properties;
42 import java.util.regex.Matcher;
43 import java.util.regex.Pattern;
45 @SuppressWarnings("Duplicates")
46 public class ArtifactGenerationServiceTest {
48 public static final String RESOURCE_MAPPING_NOT_FOUND = "Resource mapping not found for ";
49 public static final String INV_UID = "-INV_UID";
50 public static final String VF_MODULE_NAMESPACE = "org.openecomp.groups.VfModule";
51 public static final String VF_MODULE_DESCRIPTION = "vf_module_description";
52 public static final String CATEGORY = "category";
53 static Map<String, String> resourcesVersion = new HashMap<>();
54 public static Properties properties = new Properties();
56 @SuppressWarnings("Since15")
57 public static void validateName(List<Artifact> artifactList) throws JAXBException {
58 for(Artifact artifact : artifactList){
59 String xml = new String(Base64.getDecoder().decode(artifact.getPayload()));
60 Model model = getUnmarshalledArtifactModel(xml);
61 String xmlName = "AAI-"+ model.getModelVers().getModelVer().get(0).getModelName()
64 ()+"-"+model.getModelVers().getModelVer().get(0)
65 .getModelVersion()+".xml";
67 Assert.assertEquals(true,artifact.getName().equals(xmlName));
72 public static void checkArtifactName(String name){
73 Assert.assertEquals(true,name.length()<=255);
76 public static void checkArtifactLabel(String label){
77 Pattern pattern = Pattern.compile("[a-zA-Z0-9-+\\s]+");
78 Matcher matcher = pattern.matcher(label);
79 Assert.assertEquals(true,matcher.matches());
82 public static void checkArtifactDescription(String description){
83 Pattern pattern = Pattern.compile("[a-zA-Z\\s\\t\\n]+");
84 Matcher matcher = pattern.matcher(description);
85 Assert.assertEquals(true,matcher.matches());
86 Assert.assertEquals(true,description.length()<=256);
90 public static void testResourceTosca(Iterator<ToscaTemplate> itr, Map<String, Model>
93 ToscaTemplate toscaTemplate = itr.next();
94 String resourceVersion= resourcesVersion.get(toscaTemplate.getMetadata().get("UUID"));
95 toscaTemplate.getMetadata().put("version", resourceVersion);
96 if("VF".equals(toscaTemplate.getMetadata().get("type")) && !("Allotted Resource".equals
97 (toscaTemplate.getMetadata().get(CATEGORY))) ){
98 testVfTosca(outputArtifactMap, toscaTemplate);
99 } else if("VF".equals(toscaTemplate.getMetadata().get("type")) && ("Allotted Resource".equals
100 (toscaTemplate.getMetadata().get(CATEGORY))) ){
101 testAllottedResourceTosca(outputArtifactMap, toscaTemplate);
102 } else if("VL".equals(toscaTemplate.getMetadata().get("type"))){
103 testL3NetworkResourceTosca(outputArtifactMap, toscaTemplate);
108 public static void testVfTosca(Map<String, Model> outputArtifactMap , ToscaTemplate resourceTosca) {
110 if (resourceTosca != null) {
111 Resource resource = new Resource();
112 resource.populateModelIdentificationInformation(resourceTosca.getMetadata());
113 String resourceNameVersionId = resource.getModelNameVersionId();
114 Model resourceAAIModel =
115 getAAIModelByNameVersionId(resourceNameVersionId, outputArtifactMap);
116 if (resourceAAIModel != null) {
117 validateResourceModelMetadata(resource, resourceAAIModel);
118 //Validate Resource instance base widget
120 ModelVer modelVersion = resourceAAIModel.getModelVers().getModelVer().get(0);
122 List<ModelElement> matchedVFBaseWidgetElements =
123 getModelElementbyRelationshipValue(modelVersion.getModelElements(),
124 Widget.getWidget(Widget.Type.VF).getId());
125 validateMatchedModelElementsInService(matchedVFBaseWidgetElements,
126 Widget.getWidget(Widget.Type.VF).getName());
128 validateWidgetIds(matchedVFBaseWidgetElements, Widget.getWidget(Widget.Type.VF).getName(),
129 Widget.getWidget(Widget.Type.VF).getWidgetId());
131 ModelElements baseResourceWidgetModelElements =
132 matchedVFBaseWidgetElements.get(0).getModelElements();
133 if (resourceTosca.getTopology_template() != null) {
134 Map<String, String> groupIdTypeStore = getGroupsTypeStore(resourceTosca);
136 if (baseResourceWidgetModelElements.getModelElement().size() !=
137 groupIdTypeStore.size()) {
138 Assert.fail("Missing VFModule in VF model.xml");
141 for (String key : groupIdTypeStore.keySet()) {
143 List<ModelElement> matchedResourceElements =
144 getModelElementbyRelationshipValue(baseResourceWidgetModelElements, key);
145 validateMatchedModelElementsInService(matchedResourceElements,
146 Widget.getWidget(Widget.Type.VFMODULE).getName());
147 Model resourceAAIVFModel = getAAIModelByNameVersionId(key, outputArtifactMap);
148 Map<String, String> vfModuleModelMetadata =
149 getVFModuleMetadataTosca(resourceTosca, key);
150 Map<String, Object> vfModuleMembers = getVFModuleMembersTosca(resourceTosca, key);
152 validateVFModelMetadata(vfModuleModelMetadata, resourceAAIVFModel);
155 ModelVer modelVfVersion = resourceAAIVFModel.getModelVers().getModelVer().get(0);
157 List<ModelElement> matchedVFModuleBaseWidgetElements =
158 getModelElementbyRelationshipValue(modelVfVersion.getModelElements(),
159 Widget.getWidget(Widget.Type.VFMODULE).getId());
160 validateMatchedModelElementsInService(matchedVFModuleBaseWidgetElements,
161 Widget.getWidget(Widget.Type.VFMODULE).getName());
162 validateWidgetIds(matchedVFModuleBaseWidgetElements, Widget.getWidget(Widget.Type.VFMODULE)
163 .getName(), Widget.getWidget(Widget.Type.VFMODULE).getWidgetId());
165 ModelElements baseResourceVFModuleWidgetModelElements =
166 matchedVFModuleBaseWidgetElements.get(0).getModelElements();
167 if (vfModuleMembers.containsKey("l3-network")) {
169 List<ModelElement> matchedL3NetworkElements =
170 getModelElementbyRelationshipValue(baseResourceVFModuleWidgetModelElements,
171 Widget.getWidget(Widget.Type.L3_NET).getId());
172 validateMatchedModelElementsInService(matchedL3NetworkElements,
173 Widget.getWidget(Widget.Type.L3_NET).getName());
174 validateWidgetIds(matchedL3NetworkElements, Widget.getWidget(Widget.Type.L3_NET)
175 .getName(), Widget.getWidget(Widget.Type.L3_NET).getWidgetId());
177 if (vfModuleMembers.containsKey("vserver")) {
179 List<ModelElement> matchedVserverElements =
180 getModelElementbyRelationshipValue(baseResourceVFModuleWidgetModelElements,
181 Widget.getWidget(Widget.Type.VSERVER).getId());
182 validateMatchedModelElementsInService(matchedVserverElements,
183 Widget.getWidget(Widget.Type.VSERVER).getName());
184 ModelElements vserverWidgetModelElements =
185 matchedVserverElements.get(0).getModelElements();
187 validateWidgetIds(matchedVserverElements, Widget.getWidget(Widget.Type.VSERVER)
188 .getName(), Widget.getWidget(Widget.Type.VSERVER).getWidgetId());
191 //Validate vserver->vfc
192 List<ModelElement> matchedVfcElements =
193 getModelElementbyRelationshipValue(vserverWidgetModelElements,
194 Widget.getWidget(Widget.Type.VFC).getId());
195 validateMatchedModelElementsInService(matchedVfcElements,
196 Widget.getWidget(Widget.Type.VFC).getName());
197 validateWidgetIds(matchedVfcElements, Widget.getWidget(Widget.Type.VFC).getName(),
198 Widget.getWidget(Widget.Type.VFC).getWidgetId());
200 //Validate vserver->Image
201 List<ModelElement> matchedImageElements =
202 getModelElementbyRelationshipValue(vserverWidgetModelElements,
203 Widget.getWidget(Widget.Type.IMAGE).getId());
204 validateMatchedModelElementsInService(matchedImageElements,
205 Widget.getWidget(Widget.Type.IMAGE).getName());
206 validateWidgetIds(matchedImageElements, Widget.getWidget(Widget.Type.IMAGE)
207 .getName(), Widget.getWidget(Widget.Type.IMAGE).getWidgetId());
210 //Validate vserver->Flavor
211 List<ModelElement> matchedFlavorElements =
212 getModelElementbyRelationshipValue(vserverWidgetModelElements,
213 Widget.getWidget(Widget.Type.FLAVOR).getId());
214 validateMatchedModelElementsInService(matchedFlavorElements,
215 Widget.getWidget(Widget.Type.FLAVOR).getName());
216 validateWidgetIds(matchedFlavorElements, Widget.getWidget(Widget.Type.FLAVOR).getName(),
217 Widget.getWidget(Widget.Type.FLAVOR).getWidgetId());
219 //Validate vserver->Tenant
220 List<ModelElement> matchedTenantElements =
221 getModelElementbyRelationshipValue(vserverWidgetModelElements,
222 Widget.getWidget(Widget.Type.TENANT).getId());
223 validateMatchedModelElementsInService(matchedTenantElements,
224 Widget.getWidget(Widget.Type.TENANT).getName());
225 validateWidgetIds(matchedTenantElements, Widget.getWidget(Widget.Type.TENANT).getName(),
226 Widget.getWidget(Widget.Type.TENANT).getWidgetId());
228 //Validate vserver->l-interface
229 if (vfModuleMembers.containsKey("l-interface")) {
230 List<ModelElement> matchedLinterfaceElements =
231 getModelElementbyRelationshipValue(vserverWidgetModelElements,
232 Widget.getWidget(Widget.Type.LINT).getId());
233 validateMatchedModelElementsInService(matchedLinterfaceElements,
234 Widget.getWidget(Widget.Type.LINT).getName());
235 validateWidgetIds(matchedLinterfaceElements, Widget.getWidget(Widget.Type.LINT).getName(),
236 Widget.getWidget(Widget.Type.LINT).getWidgetId());
238 //Validate vserver->volume
239 if (vfModuleMembers.containsKey("volume")) {
240 List<ModelElement> matchedVolumeElements =
241 getModelElementbyRelationshipValue(vserverWidgetModelElements,
242 Widget.getWidget(Widget.Type.VOLUME).getId());
243 validateMatchedModelElementsInService(matchedVolumeElements,
244 Widget.getWidget(Widget.Type.VOLUME).getName());
245 validateWidgetIds(matchedVolumeElements, Widget.getWidget(Widget.Type.VOLUME).getName(),
246 Widget.getWidget(Widget.Type.VOLUME).getWidgetId());
252 System.out.println(RESOURCE_MAPPING_NOT_FOUND + resourceNameVersionId);
257 public static void testAllottedResourceTosca(Map<String, Model> outputArtifactMap , ToscaTemplate
260 if (resourceTosca != null) {
261 Resource resource = new Resource();
262 resource.populateModelIdentificationInformation(resourceTosca.getMetadata());
263 String resourceNameVersionId = resource.getModelNameVersionId();
264 Model resourceAAIModel =
265 getAAIModelByNameVersionId(resourceNameVersionId, outputArtifactMap);
266 if (resourceAAIModel != null) {
267 validateResourceModelMetadata(resource, resourceAAIModel);
268 //Validate Resource instance base widget
270 ModelVer modelVersion = resourceAAIModel.getModelVers().getModelVer().get(0);
272 List<ModelElement> matchedVFBaseWidgetElements =
273 getModelElementbyRelationshipValue(modelVersion.getModelElements(),
274 Widget.getWidget(Widget.Type.ALLOTTED_RESOURCE).getId());
275 validateMatchedModelElementsInService(matchedVFBaseWidgetElements,
276 Widget.getWidget(Widget.Type.ALLOTTED_RESOURCE).getName());
278 validateWidgetIds(matchedVFBaseWidgetElements, Widget.getWidget(Widget.Type.ALLOTTED_RESOURCE).getName(),
279 Widget.getWidget(Widget.Type.ALLOTTED_RESOURCE).getWidgetId());
281 validateWidgetIds(matchedVFBaseWidgetElements, Widget.getWidget(Widget.Type.ALLOTTED_RESOURCE).getName(),
282 Widget.getWidget(Widget.Type.ALLOTTED_RESOURCE).getWidgetId());
284 Map<String, Object> providingServiceDetails = getProvidingServiceDetails(resourceTosca);
286 ModelElements containedModelElements = modelVersion.getModelElements().getModelElement().
287 get(0).getModelElements();
289 Assert.assertEquals(containedModelElements.getModelElement().get(0).getRelationshipList()
290 .getRelationship().get(0).getRelationshipData().get(0).getRelationshipValue(),
291 providingServiceDetails.get("providing_service_uuid"));
293 Assert.assertEquals(containedModelElements.getModelElement().get(0).getRelationshipList()
294 .getRelationship().get(0).getRelationshipData().get(1).getRelationshipValue(),
295 providingServiceDetails.get("providing_service_invariant_uuid"));
298 if("Allotted Resource".equals(resourceTosca.getMetadata().get(CATEGORY)) &&
299 "Tunnel XConnect".equals(resourceTosca.getMetadata().get("subcategory"))) {
301 List<ModelElement> matchedTunnelXConnectWidgetElements =
302 getModelElementbyRelationshipValue(containedModelElements,
303 Widget.getWidget(Widget.Type.TUNNEL_XCONNECT).getId());
304 validateMatchedModelElementsInService(matchedTunnelXConnectWidgetElements,
305 Widget.getWidget(Widget.Type.TUNNEL_XCONNECT).getName());
307 validateWidgetIds(matchedTunnelXConnectWidgetElements, Widget.getWidget(Widget.Type.TUNNEL_XCONNECT).getName(),
308 Widget.getWidget(Widget.Type.TUNNEL_XCONNECT).getWidgetId());
312 System.out.println(RESOURCE_MAPPING_NOT_FOUND + resourceNameVersionId);
317 public static Map<String, Object> getProvidingServiceDetails(ToscaTemplate resourceTemplate) {
318 Set<String> keys = resourceTemplate.getTopology_template().getNode_templates().keySet();
320 Map<String, Object> nodeProperties =null;
321 for(String key : keys) {
322 NodeTemplate node = resourceTemplate.getTopology_template().getNode_templates().get(key);
323 if(node.getType().contains("org.openecomp.resource.vfc") &&
324 node.getMetadata().get(CATEGORY).equals("Allotted Resource")) {
325 nodeProperties = node.getProperties();
329 return nodeProperties;
332 public static void testL3NetworkResourceTosca(Map<String, Model> outputArtifactMap , ToscaTemplate
335 if (resourceTosca != null) {
336 Resource resource = new Resource();
337 resource.populateModelIdentificationInformation(resourceTosca.getMetadata());
338 String resourceNameVersionId = resource.getModelNameVersionId();
339 Model resourceAAIModel =
340 getAAIModelByNameVersionId(resourceNameVersionId, outputArtifactMap);
341 if (resourceAAIModel != null) {
342 validateResourceModelMetadata(resource, resourceAAIModel);
343 //Validate Resource instance base widget
345 ModelVer modelVersion = resourceAAIModel.getModelVers().getModelVer().get(0);
347 List<ModelElement> matchedVFBaseWidgetElements =
348 getModelElementbyRelationshipValue(modelVersion.getModelElements(),
349 Widget.getWidget(Widget.Type.L3_NET).getId());
350 validateMatchedModelElementsInService(matchedVFBaseWidgetElements,
351 Widget.getWidget(Widget.Type.L3_NET).getName());
353 validateWidgetIds(matchedVFBaseWidgetElements, Widget.getWidget(Widget.Type.L3_NET).getName(),
354 Widget.getWidget(Widget.Type.L3_NET).getWidgetId());
357 System.out.println(RESOURCE_MAPPING_NOT_FOUND + resourceNameVersionId);
362 public static void testServiceTosca(Map<String, Model> outputArtifactMap,List<ToscaTemplate>
365 ToscaTemplate serviceTosca = getServiceTosca(toscas);
366 if (serviceTosca == null) {
367 Assert.fail("Service Tosca not found");
369 serviceTosca.getMetadata().put("version", SampleJUnitTest.additionalParams.get(
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 Assert.assertEquals(matchedResourceElements.get(0).getRelationshipList()
409 .getRelationship().get(0)
410 .getRelationshipData().get(0).getRelationshipValue(),entry.getKey());
412 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 Assert.assertEquals(matchedResourceElements.get(0).getRelationshipList()
423 .getRelationship().get(0)
424 .getRelationshipData().get(0).getRelationshipValue(),entry.getKey());
426 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 Assert.assertEquals(matchedServiceBaseWidgetElements.get(0).getRelationshipList().getRelationship().get(0)
437 .getRelationshipData().get(0).getRelationshipValue(), properties.getProperty(
438 ArtifactType.AAI.name()
439 + ".model-version-id."+ widgetName));
441 Assert.assertEquals(matchedServiceBaseWidgetElements.get(0).getRelationshipList().getRelationship().get(0)
442 .getRelationshipData().get(1).getRelationshipValue(), widgetInvUuId);
447 private static void validateMatchedModelElementsInService(List<ModelElement> matchedModelElements, String modelType) {
448 if (matchedModelElements.isEmpty()) {
449 Assert.fail(modelType + " not present ");
451 if (matchedModelElements.size() > 1) {
452 Assert.fail("More than one " + modelType + " present ");
456 private static Map<String, String> getNodeTemplateTypeStore(ToscaTemplate toscaTemplate) {
457 if (toscaTemplate.getTopology_template() != null) {
458 Map<String, NodeTemplate> nodeTemplateMap =
459 toscaTemplate.getTopology_template().getNode_templates();
460 Map<String, String> nodeTemplateIdTypeStore = new LinkedHashMap<>();
461 if (nodeTemplateMap != null) {
462 for (Map.Entry<String, NodeTemplate> e : nodeTemplateMap.entrySet()) {
463 String uuid = e.getValue().getMetadata().get("resourceUUID");
464 if (GeneratorUtil.isEmpty(uuid)) {
465 uuid = e.getValue().getMetadata().get("UUID");
466 if (GeneratorUtil.isEmpty(uuid)) {
467 Assert.fail("UUID Not found");
470 if(e.getValue().getType().contains("org.openecomp.resource.vf.")&& (e.getValue()
471 .getMetadata().get(CATEGORY).equals("Allotted Resource")))
473 e.getValue().setType("org.openecomp.resource.vf.allottedResource");
475 nodeTemplateIdTypeStore.put(uuid, e.getValue().getType());
476 resourcesVersion.put(uuid,e.getValue().getMetadata().get
478 //Populate invraintUuId for V9
479 String invUuId = e.getValue().getMetadata().get("invariantUUID");
480 nodeTemplateIdTypeStore.put(uuid + INV_UID , invUuId);
483 return nodeTemplateIdTypeStore;
490 private static Map<String, String> getGroupsTypeStore(ToscaTemplate toscaTemplate) {
491 if(toscaTemplate.getTopology_template() !=null) {
492 Map<String, GroupDefinition> groupDefinitionMap = toscaTemplate.getTopology_template().getGroups();
493 Map<String, String> groupDefinitionIdTypeStore = new LinkedHashMap<>();
494 if (groupDefinitionMap != null) {
495 for (Map.Entry<String, GroupDefinition> e : groupDefinitionMap.entrySet()) {
496 if (e.getValue().getType().contains(VF_MODULE_NAMESPACE)) {
497 String uuid = e.getValue().getMetadata().get("vfModuleModelUUID");
498 if (GeneratorUtil.isEmpty(uuid)) {
499 uuid = e.getValue().getMetadata().get("UUID");
500 if (GeneratorUtil.isEmpty(uuid))
501 Assert.fail("UUID Not found");
503 groupDefinitionIdTypeStore.put(uuid, e.getValue().getType());
507 return groupDefinitionIdTypeStore;
514 private static void validateServiceModelMetadata(Service serviceToscaModel, Model generatedAAIModel) {
515 Assert.assertEquals(serviceToscaModel.getModelNameVersionId(), generatedAAIModel
516 .getModelVers().getModelVer().get(0).getModelVersionId());
517 Assert.assertEquals(serviceToscaModel.getModelId(), generatedAAIModel.getModelInvariantId());
518 Assert.assertEquals(serviceToscaModel.getModelName(), generatedAAIModel.getModelVers()
519 .getModelVer().get(0).getModelName());
520 Assert.assertEquals(serviceToscaModel.getModelVersion(), generatedAAIModel.getModelVers()
521 .getModelVer().get(0).getModelVersion());
522 Assert.assertEquals(serviceToscaModel.getModelDescription(), generatedAAIModel.getModelVers()
523 .getModelVer().get(0).getModelDescription());
526 private static void validateResourceModelMetadata(Resource resouerceToscaModel, Model generatedAAIModel) {
527 Assert.assertEquals(resouerceToscaModel.getModelNameVersionId(), generatedAAIModel
528 .getModelVers().getModelVer().get(0).getModelVersionId());
529 Assert.assertEquals(resouerceToscaModel.getModelId(), generatedAAIModel.getModelInvariantId());
530 Assert.assertEquals(resouerceToscaModel.getModelName(), generatedAAIModel.getModelVers()
531 .getModelVer().get(0).getModelName());
532 Assert.assertEquals(resouerceToscaModel.getModelVersion(), generatedAAIModel.getModelVers()
533 .getModelVer().get(0).getModelVersion());
534 Assert.assertEquals(resouerceToscaModel.getModelDescription(), generatedAAIModel.getModelVers()
535 .getModelVer().get(0).getModelDescription());
538 private static void validateVFModelMetadata(Map<String, String> vfModuleModelMetadata, Model generatedAAIModel) {
539 Assert.assertEquals(vfModuleModelMetadata.get("vfModuleModelUUID"), generatedAAIModel
540 .getModelVers().getModelVer().get(0).getModelVersionId());
541 Assert.assertEquals(vfModuleModelMetadata.get("vfModuleModelInvariantUUID"), generatedAAIModel.getModelInvariantId());
542 Assert.assertEquals(vfModuleModelMetadata.get("vfModuleModelName"), generatedAAIModel.getModelVers()
543 .getModelVer().get(0).getModelName());
544 Assert.assertEquals(vfModuleModelMetadata.get("vfModuleModelVersion"), generatedAAIModel.getModelVers()
545 .getModelVer().get(0).getModelVersion());
546 Assert.assertEquals(vfModuleModelMetadata.get(VF_MODULE_DESCRIPTION), generatedAAIModel.getModelVers()
547 .getModelVer().get(0).getModelDescription());
551 private static Model getAAIModelByNameVersionId(String nameVersionId,
552 Map<String, Model> outputArtifactMap) {
553 return outputArtifactMap.get(nameVersionId);
556 private static List<ModelElement> getModelElementbyRelationshipValue(ModelElements modelElements,
557 String relationshipValue) {
558 List<ModelElement> matchedModelElements = new ArrayList<>();
559 if (modelElements != null) {
560 List<ModelElement> modelElementList = modelElements.getModelElement();
561 for (ModelElement element : modelElementList) {
562 List<Relationship> relationshipList = element.getRelationshipList().getRelationship();
563 for (Relationship r : relationshipList) {
564 List<RelationshipData> relationshipDataList = r.getRelationshipData();
565 for (RelationshipData relationshipData : relationshipDataList) {
566 if (relationshipData.getRelationshipValue().equals(relationshipValue))
567 matchedModelElements.add(element);
572 return matchedModelElements;
575 public static void populateAAIGeneratedModelStore(Map<String, Model> outputArtifactMap,List<Artifact> resultData) throws JAXBException {
576 for (Artifact outputArtifact : resultData) {
577 if (outputArtifact.getType().equals(ArtifactType.MODEL_INVENTORY_PROFILE.name())) {
578 byte[] decodedPayload = GeneratorUtil.decoder(outputArtifact.getPayload());
579 Model aaiModel = getUnmarshalledArtifactModel(new String(decodedPayload));
580 outputArtifactMap.put(aaiModel.getModelVers().getModelVer().get(0).getModelVersionId(), aaiModel);
585 private static Model getUnmarshalledArtifactModel(String aaiModel) throws JAXBException {
586 JAXBContext jaxbContext;
588 jaxbContext = JAXBContext.newInstance(Model.class);
589 Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
591 try (InputStream aaiModelStream = new ByteArrayInputStream(aaiModel.getBytes())) {
592 return (Model) unmarshaller.unmarshal(aaiModelStream);
593 } catch (IOException ignored) { /* ignore */ }
594 throw new RuntimeException("could not resolve artifact model");
598 * Identify the service tosca artifact from the list of translated tosca inputs
600 * @param input List of translated {@link ToscaTemplate tosca} object models
601 * @return Identified service {@link ToscaTemplate tosca}
603 private static ToscaTemplate getServiceTosca(List<ToscaTemplate> input) {
604 Iterator<ToscaTemplate> iter = input.iterator();
605 while (iter.hasNext()) {
606 ToscaTemplate tosca = iter.next();
607 if (tosca.isService()) {
616 private static Map<String, String> getVFModuleMetadataTosca(ToscaTemplate toscaTemplate, String vfModuleModelUUID) {
617 Map<String, GroupDefinition> groupDefinitionMap = toscaTemplate.getTopology_template().getGroups();
618 Map<String, String> vfModuleModelMetadata = new LinkedHashMap<>();
619 for (Map.Entry<String, GroupDefinition> e : groupDefinitionMap.entrySet()) {
620 if (e.getValue().getType().contains(VF_MODULE_NAMESPACE)) {
621 String uuid = e.getValue().getMetadata().get("vfModuleModelUUID");
622 if (uuid == vfModuleModelUUID) {
623 vfModuleModelMetadata = e.getValue().getMetadata();
624 vfModuleModelMetadata.put(VF_MODULE_DESCRIPTION, (String) e.getValue().getProperties().get(VF_MODULE_DESCRIPTION));
628 return vfModuleModelMetadata;
631 private static Map<String, Object> getVFModuleMembersTosca(ToscaTemplate toscaTemplate, String vfModuleModelUUID) {
632 Map<String, GroupDefinition> groupDefinitionMap = toscaTemplate.getTopology_template().getGroups();
633 Map<String, NodeTemplate> nodeTemplateMaps = toscaTemplate.getTopology_template().getNode_templates();
634 Map<String, Object> vfModuleMembers = new LinkedHashMap<>();
635 List<String> vfModuleModelMetadata;
636 for (Map.Entry<String, GroupDefinition> e : groupDefinitionMap.entrySet()) {
637 if (e.getValue().getType().contains(VF_MODULE_NAMESPACE)) {
638 String uuid = e.getValue().getMetadata().get("vfModuleModelUUID");
639 if (uuid == vfModuleModelUUID) {
640 vfModuleModelMetadata = e.getValue().getMembers();
641 Iterator itr = vfModuleModelMetadata.iterator();
642 while (itr.hasNext()) {
643 Object obj= itr.next();
644 NodeTemplate nodeTemplate = nodeTemplateMaps.get(obj);
645 String nodetype = null;
646 if (nodeTemplate != null)
647 nodetype = nodeTemplate.getType();
648 if (nodetype != null) {
649 String widgetType = membersType(nodetype);
650 if (widgetType != null)
651 vfModuleMembers.put(widgetType, obj);
659 return vfModuleMembers;
663 private static String membersType(String toscaType) {
664 String modelToBeReturned = null;
665 while (toscaType != null && toscaType.lastIndexOf('.') != -1 && modelToBeReturned == null) {
669 case "org.openecomp.resource.vfc":
670 modelToBeReturned = "vserver";
672 case "org.openecomp.resource.cp":
673 case "org.openecomp.cp":
674 modelToBeReturned = "l-interface";
676 case "org.openecomp.resource.vl":
677 modelToBeReturned = "l3-network";
679 case "org.openecomp.resource.vf":
680 modelToBeReturned = "generic-vnf";
682 case VF_MODULE_NAMESPACE:
683 modelToBeReturned = "vf-module";
685 case "org.openecomp.resource.vfc.nodes.heat.cinder":
686 modelToBeReturned = "volume";
689 modelToBeReturned = null;
693 toscaType = toscaType.substring(0, toscaType.lastIndexOf("."));
695 return modelToBeReturned;