diff options
Diffstat (limited to 'openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src')
3 files changed, 183 insertions, 6 deletions
diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/OrchestrationTemplateCandidateManagerFactoryImpl.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/OrchestrationTemplateCandidateManagerFactoryImpl.java index 65aab2d9f4..77d496f0c8 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/OrchestrationTemplateCandidateManagerFactoryImpl.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/OrchestrationTemplateCandidateManagerFactoryImpl.java @@ -26,7 +26,11 @@ import org.openecomp.sdc.activitylog.dao.ActivityLogDaoFactory; import org.openecomp.sdc.healing.factory.HealingManagerFactory; import org.openecomp.sdc.vendorsoftwareproduct.OrchestrationTemplateCandidateManager; import org.openecomp.sdc.vendorsoftwareproduct.OrchestrationTemplateCandidateManagerFactory; +import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentDaoFactory; +import org.openecomp.sdc.vendorsoftwareproduct.dao.MibDaoFactory; +import org.openecomp.sdc.vendorsoftwareproduct.dao.NicDaoFactory; import org.openecomp.sdc.vendorsoftwareproduct.dao.OrchestrationTemplateDaoFactory; +import org.openecomp.sdc.vendorsoftwareproduct.dao.ProcessDaoFactory; import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductDaoFactory; import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDaoFactory; import org.openecomp.sdc.vendorsoftwareproduct.factory.CandidateServiceFactory; @@ -45,6 +49,10 @@ public class OrchestrationTemplateCandidateManagerFactoryImpl extends CompositionDataExtractorFactory.getInstance().createInterface(), ServiceModelDaoFactory.getInstance().createInterface(), CompositionEntityDataManagerFactory.getInstance().createInterface(), + NicDaoFactory.getInstance().createInterface(), + ComponentDaoFactory.getInstance().createInterface(), + MibDaoFactory.getInstance().createInterface(), + ProcessDaoFactory.getInstance().createInterface(), ActivityLogManagerFactory.getInstance().createInterface()); diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/OrchestrationTemplateCandidateManagerImpl.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/OrchestrationTemplateCandidateManagerImpl.java index 9373bfb3a6..99a438f3a8 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/OrchestrationTemplateCandidateManagerImpl.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/OrchestrationTemplateCandidateManagerImpl.java @@ -19,11 +19,15 @@ */ package org.openecomp.sdc.vendorsoftwareproduct.impl; - +import static org.openecomp.sdc.vendorsoftwareproduct.VendorSoftwareProductConstants.GENERAL_COMPONENT_ID; +import static org.openecomp.sdc.vendorsoftwareproduct.VendorSoftwareProductConstants.UniqueValues + .PROCESS_NAME; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; +import org.apache.xalan.xslt.Process; import org.openecomp.core.model.dao.ServiceModelDao; import org.openecomp.core.model.types.ServiceElement; +import org.openecomp.core.util.UniqueValueUtil; import org.openecomp.core.utilities.file.FileContentHandler; import org.openecomp.core.utilities.file.FileUtils; import org.openecomp.core.utilities.json.JsonUtil; @@ -51,10 +55,16 @@ import org.openecomp.sdc.tosca.datatypes.ToscaServiceModel; import org.openecomp.sdc.translator.services.heattotosca.HeatToToscaUtil; import org.openecomp.sdc.validation.util.ValidationManagerUtil; import org.openecomp.sdc.vendorsoftwareproduct.OrchestrationTemplateCandidateManager; +import org.openecomp.sdc.vendorsoftwareproduct.dao.ComponentDao; +import org.openecomp.sdc.vendorsoftwareproduct.dao.MibDao; +import org.openecomp.sdc.vendorsoftwareproduct.dao.NicDao; import org.openecomp.sdc.vendorsoftwareproduct.dao.OrchestrationTemplateDao; +import org.openecomp.sdc.vendorsoftwareproduct.dao.ProcessDao; import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductDao; import org.openecomp.sdc.vendorsoftwareproduct.dao.VendorSoftwareProductInfoDao; +import org.openecomp.sdc.vendorsoftwareproduct.dao.type.MibEntity; import org.openecomp.sdc.vendorsoftwareproduct.dao.type.OrchestrationTemplateCandidateData; +import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ProcessEntity; import org.openecomp.sdc.vendorsoftwareproduct.dao.type.UploadData; import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspDetails; import org.openecomp.sdc.vendorsoftwareproduct.errors.OrchestrationTemplateNotFoundErrorBuilder; @@ -69,7 +79,8 @@ import org.openecomp.sdc.vendorsoftwareproduct.types.candidateheat.FilesDataStru import org.openecomp.sdc.vendorsoftwareproduct.utils.VendorSoftwareProductUtils; import org.openecomp.sdc.versioning.dao.types.Version; import org.openecomp.sdcrests.activitylog.types.ActivityType; - +import org.openecomp.sdc.vendorsoftwareproduct.dao.type.ComponentEntity; +import org.openecomp.sdc.vendorsoftwareproduct.dao.type.NicEntity; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; @@ -78,6 +89,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.Collection; public class OrchestrationTemplateCandidateManagerImpl implements OrchestrationTemplateCandidateManager { @@ -93,7 +105,11 @@ public class OrchestrationTemplateCandidateManagerImpl private CompositionDataExtractor compositionDataExtractor; private ServiceModelDao<ToscaServiceModel, ServiceElement> serviceModelDao; private CompositionEntityDataManager compositionEntityDataManager; + private NicDao nicDao; + private ComponentDao componentDao; + private MibDao mibDao; private ActivityLogManager activityLogManager; + private ProcessDao processDao; public OrchestrationTemplateCandidateManagerImpl( VendorSoftwareProductDao vendorSoftwareProductDao, VendorSoftwareProductInfoDao @@ -103,6 +119,10 @@ public class OrchestrationTemplateCandidateManagerImpl CompositionDataExtractor compositionDataExtractor, ServiceModelDao<ToscaServiceModel, ServiceElement> serviceModelDao, CompositionEntityDataManager compositionEntityDataManager, + NicDao nicDao, + ComponentDao componentDao, + MibDao mibDao, + ProcessDao processDao, ActivityLogManager activityLogManager) { this.vendorSoftwareProductDao = vendorSoftwareProductDao; this.vspInfoDao = vspInfoDao; @@ -112,6 +132,10 @@ public class OrchestrationTemplateCandidateManagerImpl this.compositionDataExtractor = compositionDataExtractor; this.serviceModelDao = serviceModelDao; this.compositionEntityDataManager = compositionEntityDataManager; + this.nicDao = nicDao; + this.componentDao = componentDao; + this.mibDao = mibDao; + this.processDao = processDao; this.activityLogManager = activityLogManager; } @@ -220,6 +244,15 @@ public class OrchestrationTemplateCandidateManagerImpl if (!zipByteArrayInputStream.isPresent()) { return response; } + Map<String,String> componentsQustanniare = new HashMap<>(); + Map<String, Map<String, String>> componentNicsQustanniare = new HashMap<>(); + Map<String, Collection<MibEntity>> componentMIBList = new HashMap<>(); + Map<String, Collection<ProcessEntity>> processes = new HashMap<>(); + Map<String, ProcessEntity> processArtifact = new HashMap<>(); + + backupComponentsQuestionnaireBeforeDelete(vspId, version, componentsQustanniare, + componentNicsQustanniare, componentMIBList, processes, processArtifact); + deleteUploadDataAndContent(vspId, version); saveHotData(vspId, version, zipByteArrayInputStream.get(), fileContentMap, tree); @@ -230,6 +263,8 @@ public class OrchestrationTemplateCandidateManagerImpl serviceModelDao.storeServiceModel(vspId, version, toscaServiceModel); compositionEntityDataManager.saveCompositionData(vspId, version, compositionDataExtractor.extractServiceCompositionData(toscaServiceModel)); + retainComponentQuestionnaireData(vspId, version, componentsQustanniare, + componentNicsQustanniare, componentMIBList, processes, processArtifact); } uploadFileResponse.addStructureErrors(uploadErrors); @@ -330,6 +365,133 @@ public class OrchestrationTemplateCandidateManagerImpl .ofNullable(candidateService.getOrchestrationTemplateCandidate(vspId, version)); } + private void retainComponentQuestionnaireData(String vspId, Version activeVersion, + Map<String, String> componentsQustanniare, + Map<String, Map<String, String>> componentNicsQustanniare, + Map<String, Collection<MibEntity>> componentMIBList, + Map<String,Collection<ProcessEntity>> processes, + Map<String, ProcessEntity> processArtifact) { + //VSP processes + restoreProcess(vspId, activeVersion, GENERAL_COMPONENT_ID, GENERAL_COMPONENT_ID, processes, + processArtifact); + Collection<ComponentEntity> + components = vendorSoftwareProductDao.listComponents(vspId, activeVersion); + components.forEach(componentEntity -> { + String componentName = componentEntity.getComponentCompositionData().getName(); + if( componentsQustanniare.containsKey(componentName) ){ + componentDao.updateQuestionnaireData(vspId, activeVersion, + componentEntity.getId(),componentsQustanniare.get(componentEntity.getComponentCompositionData() + .getName())); + if( componentNicsQustanniare.containsKey(componentName) ){ + Map<String, String> nicsQustanniare=componentNicsQustanniare.get(componentName); + Collection<NicEntity> + nics=nicDao.list(new NicEntity(vspId, activeVersion, componentEntity.getId(), null)); + nics.forEach(nicEntity -> { + if(nicsQustanniare.containsKey(nicEntity.getNicCompositionData().getName())){ + nicDao.updateQuestionnaireData(vspId, activeVersion,componentEntity.getId + (),nicEntity.getId(),nicsQustanniare.get(nicEntity.getNicCompositionData().getName())); + } + }); + } + //MIB + if(componentMIBList.containsKey(componentName)) { + Collection<MibEntity> mibList = componentMIBList.get(componentName); + mibList.forEach(mib -> { + mib.setComponentId(componentEntity.getId()); + mibDao.create(mib); + }); + } + //VFC processes + restoreProcess(vspId, activeVersion, componentEntity.getId(), componentName, processes, + processArtifact); + } + }); + } + + private void backupComponentsQuestionnaireBeforeDelete(String vspId, Version activeVersion, + Map<String, String> componentsQustanniare, + Map<String, Map<String, String>> + componentNicsQustanniare, + Map<String, Collection<MibEntity>> + componentMIBList, + Map<String, Collection<ProcessEntity>> componentProcesses, + Map<String, ProcessEntity> processArtifact) { + //backup VSP processes + backupProcess(vspId, activeVersion, GENERAL_COMPONENT_ID, GENERAL_COMPONENT_ID, + componentProcesses,processArtifact); + Collection<ComponentEntity> componentsCompositionAndQuestionnaire= vendorSoftwareProductDao + .listComponentsCompositionAndQuestionnaire(vspId, + activeVersion); + componentsCompositionAndQuestionnaire.forEach(componentEntity ->{ + String componentName=componentEntity.getComponentCompositionData().getName(); + componentsQustanniare.put(componentName,componentEntity + .getQuestionnaireData()); + Collection<NicEntity> + nics=nicDao.list(new NicEntity(vspId, activeVersion,componentEntity.getId(),null)); + //backup mib + Collection<MibEntity> componentMIB = mibDao.listArtifacts(new + MibEntity(vspId, activeVersion, componentEntity.getId(), null)); + if(CollectionUtils.isNotEmpty(componentMIB)){ + componentMIBList.put(componentName,componentMIB); + } + + //backup component processes + backupProcess(vspId, activeVersion, componentEntity.getId(), componentName, + componentProcesses,processArtifact); + if(CollectionUtils.isNotEmpty(nics)) { + Map<String, String> nicsQustanniare = new HashMap<>(); + nics.forEach(nicEntity -> { + NicEntity nic = nicDao.get(new NicEntity(vspId, activeVersion, componentEntity.getId(), + nicEntity.getId())); + NicEntity nicQuestionnaire = nicDao.getQuestionnaireData(vspId,activeVersion, + componentEntity.getId(),nicEntity.getId()); + + nicsQustanniare + .put(nicEntity.getNicCompositionData().getName(), nicQuestionnaire.getQuestionnaireData()); + }); + componentNicsQustanniare.put(componentName, nicsQustanniare); + } + }); + } + + private void backupProcess(String vspId, Version activeVersion, String componentId, + String componentName, Map<String, + Collection<ProcessEntity>> processes, + Map<String,ProcessEntity> processArtifact){ + Collection<ProcessEntity> processList = vendorSoftwareProductDao.listProcesses(vspId, + activeVersion, componentId); + if(!processList.isEmpty()){ + processes.put(componentName,processList); + processList.forEach(process -> { + //ProcessArtifactEntity artifact = vendorSoftwareProductDao.getProcessArtifact(vspId, + // activeVersion, componentId, process.getId()); + ProcessEntity artifact = processDao.get(new ProcessEntity(vspId,activeVersion,componentId,process.getId())); + if(artifact.getArtifact()!=null) { + processArtifact.put(process.getId(), artifact); + } + }); + } + } + + private void restoreProcess(String vspId, Version activeVersion, String componentId, + String componentName, Map<String, Collection<ProcessEntity>> processes, + Map<String, ProcessEntity> processArtifact){ + if(processes.containsKey(componentName)) { + Collection<ProcessEntity> processList = processes.get(componentName); + processList.forEach(process -> { + //Reatin VFC process + if (!GENERAL_COMPONENT_ID.equals(componentId) && processArtifact.containsKey(process.getId + ())) { + ProcessEntity artifact = processArtifact.get(process.getId()); + artifact.setComponentId(componentId); + UniqueValueUtil.createUniqueValue(PROCESS_NAME, vspId, activeVersion.toString(), + componentId, process.getName()); + vendorSoftwareProductDao.createProcess(artifact); + } + }); + } + } + private HeatStructureTree createAndValidateHeatTree(OrchestrationTemplateActionResponse response, FileContentHandler fileContentMap) { VendorSoftwareProductUtils.addFileNamesToUploadFileResponse(fileContentMap, response); diff --git a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/VendorSoftwareProductManagerImpl.java b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/VendorSoftwareProductManagerImpl.java index 0d2023f387..2d1b62cd40 100644 --- a/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/VendorSoftwareProductManagerImpl.java +++ b/openecomp-be/backend/openecomp-sdc-vendor-software-product-manager/src/main/java/org/openecomp/sdc/vendorsoftwareproduct/impl/VendorSoftwareProductManagerImpl.java @@ -472,10 +472,17 @@ public class VendorSoftwareProductManagerImpl implements VendorSoftwareProductMa if (user.equals(versionInfo.getLockingUser())) { version.setStatus(VersionStatus.Locked); } - VspDetails vsp = vspInfoDao.get(new VspDetails(entry.getKey(), version)); - if (vsp != null && !vsp.getId().equals(VALIDATION_VSP_ID)) { - vsp.setValidationDataStructure(null); - vsps.add(new VersionedVendorSoftwareProductInfo(vsp, versionInfo)); + try { + VspDetails vsp = vspInfoDao.get(new VspDetails(entry.getKey(), version)); + if (vsp != null && !vsp.getId().equals(VALIDATION_VSP_ID)) { + vsp.setValidationDataStructure(null); + vsps.add(new VersionedVendorSoftwareProductInfo(vsp, versionInfo)); + } + }catch(RuntimeException rte){ + logger.error("Error trying to retrieve vsp["+entry.getKey()+"] version["+version.toString + ()+"] " + + "message:"+rte + .getMessage()); } } |