use of org.onap.sdc.tosca.parser.api.ISdcCsarHelper in project so by onap.
the class ToscaResourceInstaller method getServiceInput.
private String getServiceInput(ToscaResourceStructure toscaResourceStructure) {
String serviceInput = null;
List<Object> serviceInputList;
ISdcCsarHelper sdcCsarHelper = toscaResourceStructure.getSdcCsarHelper();
List<Input> serviceInputs = sdcCsarHelper.getServiceInputs();
if (!serviceInputs.isEmpty()) {
serviceInputList = new ArrayList<>();
List<Input> filterList;
filterList = serviceInputs.stream().filter(input -> !SKIP_POST_INST_CONF.equals(input.getName()) && !CDS_MODEL_NAME.equalsIgnoreCase(input.getName()) && !CDS_MODEL_VERSION.equalsIgnoreCase(input.getName()) && !CONTROLLER_ACTOR.equalsIgnoreCase(input.getName())).collect(Collectors.toList());
filterList.forEach(input -> {
Map<String, Object> serviceInputMap = new HashMap<>();
serviceInputMap.put("name", input.getName());
serviceInputMap.put("type", input.getType());
serviceInputMap.put("default", input.getDefault() == null ? "" : input.getDefault());
serviceInputMap.put("required", input.isRequired());
serviceInputList.add(serviceInputMap);
});
ObjectMapper objectMapper = new ObjectMapper();
try {
serviceInput = objectMapper.writeValueAsString(serviceInputList);
serviceInput = serviceInput.replace("\"", "\\\"");
} catch (JsonProcessingException e) {
logger.error("service input could not be deserialized for service uuid: " + sdcCsarHelper.getServiceMetadata().getValue(SdcPropertyNames.PROPERTY_NAME_UUID));
}
} else {
logger.debug("serviceInput is null");
}
return serviceInput;
}
use of org.onap.sdc.tosca.parser.api.ISdcCsarHelper in project so by onap.
the class ToscaResourceInstaller method getServiceProperties.
private String getServiceProperties(ToscaResourceStructure toscaResourceStruct) {
String propertiesJson = null;
ObjectMapper objectMapper = new ObjectMapper();
ISdcCsarHelper helper = toscaResourceStruct.getSdcCsarHelper();
String typeName = helper.getServiceSubstitutionMappingsTypeName();
Optional<NodeTemplate> nodeTemplate = helper.getServiceNodeTemplates().stream().findAny();
if (nodeTemplate.isPresent()) {
String serviceUUID = nodeTemplate.get().getMetaData().getValue(SdcPropertyNames.PROPERTY_NAME_UUID);
LinkedHashMap<String, Object> customDef = nodeTemplate.get().getCustomDef();
List<Object> serviceProperties = getPropertiesFromCustomDef(customDef, typeName);
try {
propertiesJson = objectMapper.writeValueAsString(serviceProperties);
propertiesJson = propertiesJson.replace("\"", "\\\"");
} catch (JsonProcessingException e) {
logger.error("serviceProperties could not be deserialized for service uuid: " + serviceUUID);
} catch (Exception ex) {
logger.error("service properties parsing failed. service uuid:" + serviceUUID);
}
} else {
logger.debug("ServiceNodeTemplates is null");
}
return propertiesJson;
}
use of org.onap.sdc.tosca.parser.api.ISdcCsarHelper in project so by onap.
the class ToscaResourceInstaller method processPnfResources.
/**
* This is used to process the PNF specific resource, including resource and resource_customization.
* {@link IEntityDetails} based API is used to retrieve information. Please check {@link ISdcCsarHelper} for
* details.
*/
protected void processPnfResources(ToscaResourceStructure toscaResourceStruct, Service service, PnfResourceStructure resourceStructure) throws Exception {
logger.info("Processing PNF resource: {}", resourceStructure.getResourceInstance().getResourceUUID());
ISdcCsarHelper sdcCsarHelper = toscaResourceStruct.getSdcCsarHelper();
EntityQuery entityQuery = EntityQuery.newBuilder(SdcTypes.PNF).build();
TopologyTemplateQuery topologyTemplateQuery = TopologyTemplateQuery.newBuilder(SdcTypes.SERVICE).build();
List<IEntityDetails> entityDetailsList = sdcCsarHelper.getEntity(entityQuery, topologyTemplateQuery, false);
for (IEntityDetails entityDetails : entityDetailsList) {
Metadata metadata = entityDetails.getMetadata();
String customizationUUID = metadata.getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID);
String modelUuid = metadata.getValue(SdcPropertyNames.PROPERTY_NAME_UUID);
String notifCustomizationUUID = resourceStructure.getResourceInstance().getResourceCustomizationUUID();
if (customizationUUID != null && customizationUUID.equals(notifCustomizationUUID)) {
logger.info("Resource customization UUID: {} is the same as notified resource customizationUUID: {}", customizationUUID, notifCustomizationUUID);
if (checkExistingPnfResourceCutomization(customizationUUID)) {
logger.info("Resource customization UUID: {} already deployed", customizationUUID);
} else {
PnfResource pnfResource = findExistingPnfResource(service, modelUuid);
if (pnfResource == null) {
pnfResource = createPnfResource(entityDetails);
}
PnfResourceCustomization pnfResourceCustomization = createPnfResourceCustomization(entityDetails, pnfResource);
pnfResource.getPnfResourceCustomizations().add(pnfResourceCustomization);
toscaResourceStruct.setPnfResourceCustomization(pnfResourceCustomization);
service.getPnfCustomizations().add(pnfResourceCustomization);
}
} else {
logger.warn("Resource customization UUID: {} is NOT the same as notified resource customizationUUID: {}", customizationUUID, notifCustomizationUUID);
}
}
}
use of org.onap.sdc.tosca.parser.api.ISdcCsarHelper in project so by onap.
the class ToscaResourceInstaller method processResourceSequence.
// This method retrieve resource sequence from csar file
void processResourceSequence(ToscaResourceStructure toscaResourceStructure, Service service) {
List<String> resouceSequence = new ArrayList<>();
List<IEntityDetails> resultList = new ArrayList<>();
ISdcCsarHelper iSdcCsarHelper = toscaResourceStructure.getSdcCsarHelper();
List<IEntityDetails> vfEntityList = getEntityDetails(toscaResourceStructure, EntityQuery.newBuilder(EntityTemplateType.NODE_TEMPLATE), TopologyTemplateQuery.newBuilder(SdcTypes.SERVICE), false);
List<IEntityDetails> entities = new ArrayList<>();
entities.addAll(vfEntityList);
for (IEntityDetails entityDetails : vfEntityList) {
List<RequirementAssignment> requirements = entityDetails.getRequirements();
if (requirements == null || requirements.isEmpty()) {
resultList.add(entityDetails);
entities.remove(entityDetails);
}
}
resultList = getRequirementList(resultList, entities, iSdcCsarHelper);
for (IEntityDetails entity : resultList) {
String templateName = entity.getMetadata().getValue("name");
if (!resouceSequence.contains(templateName)) {
resouceSequence.add(templateName);
}
}
String resourceSeqStr = resouceSequence.stream().collect(Collectors.joining(","));
service.setResourceOrder(resourceSeqStr);
logger.debug(" resourceSeq for service uuid {}: {}", service.getModelUUID(), resourceSeqStr);
}
use of org.onap.sdc.tosca.parser.api.ISdcCsarHelper in project so by onap.
the class ToscaResourceInstallerTest method prepareToscaResourceStructure.
private ToscaResourceStructure prepareToscaResourceStructure(boolean prepareVFModuleStructures, ToscaResourceInstaller toscaInstaller) throws ArtifactInstallerException {
Metadata metadata = mock(Metadata.class);
IResourceInstance resourceInstance = mock(ResourceInstance.class);
NodeTemplate nodeTemplate = mock(NodeTemplate.class);
ISdcCsarHelper csarHelper = mock(SdcCsarHelperImpl.class);
IArtifactInfo inputCsar = mock(IArtifactInfo.class);
String artifactUuid = "0122c05e-e13a-4c63-b5d2-475ccf23aa74";
String checkSum = "MGUzNjJjMzk3OTBkYzExYzQ0MDg2ZDc2M2E3ZjZiZmY=";
doReturn(checkSum).when(inputCsar).getArtifactChecksum();
doReturn(artifactUuid).when(inputCsar).getArtifactUUID();
doReturn("1.0").when(inputCsar).getArtifactVersion();
doReturn("TestCsarWithGroupAndVFModule").when(inputCsar).getArtifactName();
doReturn("Test Csar data with Group and VF module inputs").when(inputCsar).getArtifactDescription();
doReturn("http://localhost/dummy/url/test.csar").when(inputCsar).getArtifactURL();
ToscaResourceStructure toscaResourceStructObj = new ToscaResourceStructure();
toscaResourceStructObj.setToscaArtifact(inputCsar);
ToscaCsarRepository toscaCsarRepo = spy(ToscaCsarRepository.class);
ToscaCsar toscaCsar = mock(ToscaCsar.class);
Optional<ToscaCsar> returnValue = Optional.of(toscaCsar);
doReturn(artifactUuid).when(toscaCsar).getArtifactUUID();
doReturn(checkSum).when(toscaCsar).getArtifactChecksum();
doReturn(returnValue).when(toscaCsarRepo).findById(artifactUuid);
ReflectionTestUtils.setField(toscaInstaller, "toscaCsarRepo", toscaCsarRepo);
NotificationDataImpl notificationData = new NotificationDataImpl();
notificationData.setDistributionID("testStatusSuccessfulTosca");
notificationData.setServiceVersion("1234567");
notificationData.setServiceUUID("serviceUUID1");
notificationData.setWorkloadContext("workloadContext1");
String serviceType = "test-type1";
String serviceRole = "test-role1";
String category = "Network L3+";
String description = "Customer Orderable service description";
String name = "Customer_Orderable_Service";
String uuid = "72db5868-4575-4804-b546-0b0d3c3b5ac6";
String invariantUUID = "6f30bbe3-4590-4185-a7e0-4f9610926c6f";
String namingPolicy = "naming Policy1";
String ecompGeneratedNaming = "true";
String environmentContext = "General_Revenue-Bearing1";
String resourceCustomizationUUID = "0177ba22-5547-4e4e-bcf8-178f7f71de3a";
doReturn(serviceType).when(metadata).getValue("serviceType");
doReturn(serviceRole).when(metadata).getValue("serviceRole");
doReturn(category).when(metadata).getValue(SdcPropertyNames.PROPERTY_NAME_CATEGORY);
doReturn(description).when(metadata).getValue(SdcPropertyNames.PROPERTY_NAME_DESCRIPTION);
doReturn("1.0").when(metadata).getValue(SdcPropertyNames.PROPERTY_NAME_VERSION);
doReturn(name).when(metadata).getValue(SdcPropertyNames.PROPERTY_NAME_NAME);
doReturn(uuid).when(metadata).getValue(SdcPropertyNames.PROPERTY_NAME_UUID);
doReturn(environmentContext).when(metadata).getValue(metadata.getValue("environmentContext"));
doReturn(invariantUUID).when(metadata).getValue(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID);
doReturn(namingPolicy).when(metadata).getValue("namingPolicy");
doReturn(ecompGeneratedNaming).when(metadata).getValue("ecompGeneratedNaming");
doReturn(resourceCustomizationUUID).when(metadata).getValue("vfModuleModelCustomizationUUID");
ServiceRepository serviceRepo = spy(ServiceRepository.class);
VnfResourceRepository vnfRepo = spy(VnfResourceRepository.class);
doReturn(null).when(vnfRepo).findResourceByModelUUID(uuid);
VFModuleRepository vfModuleRepo = spy(VFModuleRepository.class);
InstanceGroupRepository instanceGroupRepo = spy(InstanceGroupRepository.class);
WorkflowResource workflowResource = spy(WorkflowResource.class);
ReflectionTestUtils.setField(toscaInstaller, "serviceRepo", serviceRepo);
ReflectionTestUtils.setField(toscaInstaller, "vnfRepo", vnfRepo);
ReflectionTestUtils.setField(toscaInstaller, "vfModuleRepo", vfModuleRepo);
ReflectionTestUtils.setField(toscaInstaller, "instanceGroupRepo", instanceGroupRepo);
ReflectionTestUtils.setField(toscaInstaller, "workflowResource", workflowResource);
// doReturn(csarHelper).when(toscaResourceStructure).getSdcCsarHelper();
toscaResourceStructObj.setSdcCsarHelper(csarHelper);
doReturn(resourceCustomizationUUID).when(metadata).getValue(SdcPropertyNames.PROPERTY_NAME_CUSTOMIZATIONUUID);
doReturn(uuid).when(metadata).getValue(SdcPropertyNames.PROPERTY_NAME_VFMODULEMODELUUID);
// vnfc instance group list
List<Group> vnfcInstanceGroupList = new ArrayList<>();
Group vnfcG1 = mock(Group.class);
Map<String, Object> metaProperties = new HashMap<>();
metaProperties.put(SdcPropertyNames.PROPERTY_NAME_UUID, "vnfc_group1_uuid");
metaProperties.put(SdcPropertyNames.PROPERTY_NAME_NAME, "vnfc_group1_uuid");
metaProperties.put(SdcPropertyNames.PROPERTY_NAME_INVARIANTUUID, "vnfc_group1_invariantid");
metaProperties.put(SdcPropertyNames.PROPERTY_NAME_VERSION, "1.0");
Metadata vnfcmetadata = new Metadata(metaProperties);
doReturn(vnfcmetadata).when(vnfcG1).getMetadata();
ArrayList<NodeTemplate> memberList = new ArrayList();
doReturn(memberList).when(vnfcG1).getMemberNodes();
vnfcInstanceGroupList.add(vnfcG1);
SubstitutionMappings submappings = mock(SubstitutionMappings.class);
doReturn(new ArrayList<Input>()).when(submappings).getInputs();
doReturn(submappings).when(nodeTemplate).getSubMappingToscaTemplate();
doReturn(notificationData).when(vfResourceStruct).getNotification();
doReturn(resourceInstance).when(vfResourceStruct).getResourceInstance();
if (prepareVFModuleStructures) {
// VfModule list
List<Group> vfModuleGroups = new ArrayList<>();
Group g1 = mock(Group.class);
doReturn(metadata).when(g1).getMetadata();
vfModuleGroups.add(g1);
doReturn(metadata).when(nodeTemplate).getMetaData();
List<NodeTemplate> nodeList = new ArrayList<>();
nodeList.add(nodeTemplate);
IVfModuleData moduleMetadata = mock(IVfModuleData.class);
doReturn(name).when(moduleMetadata).getVfModuleModelName();
doReturn(invariantUUID).when(moduleMetadata).getVfModuleModelInvariantUUID();
doReturn(Collections.<String>emptyList()).when(moduleMetadata).getArtifacts();
doReturn(resourceCustomizationUUID).when(moduleMetadata).getVfModuleModelCustomizationUUID();
doReturn(uuid).when(moduleMetadata).getVfModuleModelUUID();
doReturn("1.0").when(moduleMetadata).getVfModuleModelVersion();
VfModuleStructure moduleStructure = new VfModuleStructure(vfResourceStruct, moduleMetadata);
List<VfModuleStructure> moduleStructures = new ArrayList<>();
moduleStructures.add(moduleStructure);
doReturn(moduleStructures).when(vfResourceStruct).getVfModuleStructure();
}
toscaResourceStructObj.setServiceMetadata(metadata);
doReturn("resourceInstanceName1").when(resourceInstance).getResourceInstanceName();
doReturn(resourceCustomizationUUID).when(resourceInstance).getResourceCustomizationUUID();
doReturn("resourceName1").when(resourceInstance).getResourceName();
Service service = toscaInstaller.createService(toscaResourceStructObj, vfResourceStruct);
assertNotNull(service);
service.setModelVersion("1.0");
doReturn(service).when(serviceRepo).save(service);
WatchdogComponentDistributionStatusRepository watchdogCDStatusRepository = spy(WatchdogComponentDistributionStatusRepository.class);
ReflectionTestUtils.setField(toscaInstaller, "watchdogCDStatusRepository", watchdogCDStatusRepository);
doReturn(null).when(watchdogCDStatusRepository).save(any(WatchdogComponentDistributionStatus.class));
VnfcInstanceGroupCustomizationRepository vnfcInstanceGroupCustomizationRepo = spy(VnfcInstanceGroupCustomizationRepository.class);
ReflectionTestUtils.setField(toscaInstaller, "vnfcInstanceGroupCustomizationRepo", vnfcInstanceGroupCustomizationRepo);
doReturn(null).when(vnfcInstanceGroupCustomizationRepo).save(any(VnfcInstanceGroupCustomization.class));
return toscaResourceStructObj;
}
Aggregations