summaryrefslogtreecommitdiffstats
path: root/catalog-be/src/main/java/org/openecomp/sdc/be/components/lifecycle/CertificationChangeTransition.java
diff options
context:
space:
mode:
Diffstat (limited to 'catalog-be/src/main/java/org/openecomp/sdc/be/components/lifecycle/CertificationChangeTransition.java')
-rw-r--r--catalog-be/src/main/java/org/openecomp/sdc/be/components/lifecycle/CertificationChangeTransition.java154
1 files changed, 70 insertions, 84 deletions
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/lifecycle/CertificationChangeTransition.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/lifecycle/CertificationChangeTransition.java
index 7adc77f1b2..757c789d5c 100644
--- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/lifecycle/CertificationChangeTransition.java
+++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/lifecycle/CertificationChangeTransition.java
@@ -7,9 +7,9 @@
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -17,10 +17,13 @@
* limitations under the License.
* ============LICENSE_END=========================================================
*/
-
package org.openecomp.sdc.be.components.lifecycle;
import fj.data.Either;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
import org.openecomp.sdc.be.components.impl.ComponentBusinessLogic;
import org.openecomp.sdc.be.components.impl.ServiceBusinessLogic;
import org.openecomp.sdc.be.components.impl.exceptions.ByResponseFormatComponentException;
@@ -52,38 +55,31 @@ import org.openecomp.sdc.common.log.wrappers.Logger;
import org.openecomp.sdc.common.util.ValidationUtils;
import org.openecomp.sdc.exception.ResponseFormat;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-
public class CertificationChangeTransition extends LifeCycleTransition {
- private static final String ALLOTTED_CATEGORY = "Allotted Resource";
- private static final String DEPENDING_SRV_NAME = "depending_service_name";
- private static final String PROVIDING_SRV_NAME = "providing_service_name";
- private static final String PROVIDING_SRV_UUID = "providing_service_uuid";
- private static final String DEPENDING_SRV_UUID = "depending_service_uuid";
+ private static final String ALLOTTED_CATEGORY = "Allotted Resource";
+ private static final String DEPENDING_SRV_NAME = "depending_service_name";
+ private static final String PROVIDING_SRV_NAME = "providing_service_name";
+ private static final String PROVIDING_SRV_UUID = "providing_service_uuid";
+ private static final String DEPENDING_SRV_UUID = "depending_service_uuid";
private static final Logger log = Logger.getLogger(CertificationChangeTransition.class);
-
private LifecycleStateEnum nextState;
private LifeCycleTransitionEnum name;
private AuditingActionEnum auditingAction;
private NodeTemplateOperation nodeTemplateOperation;
private ServiceBusinessLogic serviceBusinessLogic;
- public CertificationChangeTransition(ServiceBusinessLogic serviceBusinessLogic, LifeCycleTransitionEnum name, ComponentsUtils componentUtils, ToscaElementLifecycleOperation lifecycleOperation, ToscaOperationFacade toscaOperationFacade, JanusGraphDao janusGraphDao) {
+ public CertificationChangeTransition(ServiceBusinessLogic serviceBusinessLogic, LifeCycleTransitionEnum name, ComponentsUtils componentUtils,
+ ToscaElementLifecycleOperation lifecycleOperation, ToscaOperationFacade toscaOperationFacade,
+ JanusGraphDao janusGraphDao) {
super(componentUtils, lifecycleOperation, toscaOperationFacade, janusGraphDao);
-
this.name = name;
this.serviceBusinessLogic = serviceBusinessLogic;
-
// authorized roles
- Role[] certificationChangeRoles = { Role.ADMIN, Role.DESIGNER };
- Role[] resourceRoles = { Role.ADMIN, Role.DESIGNER};
+ Role[] certificationChangeRoles = {Role.ADMIN, Role.DESIGNER};
+ Role[] resourceRoles = {Role.ADMIN, Role.DESIGNER};
addAuthorizedRoles(ComponentTypeEnum.RESOURCE, Arrays.asList(resourceRoles));
addAuthorizedRoles(ComponentTypeEnum.SERVICE, Arrays.asList(certificationChangeRoles));
-
this.auditingAction = AuditingActionEnum.CERTIFICATION_SUCCESS_RESOURCE;
this.nextState = LifecycleStateEnum.CERTIFIED;
}
@@ -109,57 +105,50 @@ public class CertificationChangeTransition extends LifeCycleTransition {
private ResponseFormat formatCertificationError(Component component, StorageOperationStatus response, ComponentTypeEnum componentType) {
BeEcompErrorManager.getInstance().logBeDaoSystemError("Change LifecycleState - Certify failed on graph");
log.debug("certification change failed on graph");
-
return componentUtils.getResponseFormatByComponent(componentUtils.convertFromStorageResponse(response), component, componentType);
}
@Override
- public Either<Boolean, ResponseFormat> validateBeforeTransition(Component component, ComponentTypeEnum componentType, User modifier, User owner, LifecycleStateEnum oldState, LifecycleChangeInfoWithAction lifecycleChangeInfo) {
+ public Either<Boolean, ResponseFormat> validateBeforeTransition(Component component, ComponentTypeEnum componentType, User modifier, User owner,
+ LifecycleStateEnum oldState, LifecycleChangeInfoWithAction lifecycleChangeInfo) {
String componentName = component.getComponentMetadataDefinition().getMetadataDataDefinition().getName();
log.info("validate before certification change. resource name={}, oldState={}, owner userId={}", componentName, oldState, owner.getUserId());
-
// validate user
- Either<Boolean, ResponseFormat> userValidationResponse = userRoleValidation(modifier,component, componentType, lifecycleChangeInfo);
+ Either<Boolean, ResponseFormat> userValidationResponse = userRoleValidation(modifier, component, componentType, lifecycleChangeInfo);
if (userValidationResponse.isRight()) {
log.debug("userRoleValidation failed");
return userValidationResponse;
}
-
if (oldState != LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT && oldState != LifecycleStateEnum.NOT_CERTIFIED_CHECKIN) {
log.debug("Valid states for certification are NOT_CERTIFIED_CHECKIN and NOT_CERTIFIED_CHECKOUT. {} is invalid state", oldState);
- ResponseFormat error = componentUtils.getResponseFormat(ActionStatus.ILLEGAL_COMPONENT_STATE, componentName, componentType.name().toLowerCase(), oldState.name());
+ ResponseFormat error = componentUtils
+ .getResponseFormat(ActionStatus.ILLEGAL_COMPONENT_STATE, componentName, componentType.name().toLowerCase(), oldState.name());
return Either.right(error);
}
return Either.left(true);
}
@Override
- public <T extends Component> Either<T, ResponseFormat> changeState(
- ComponentTypeEnum componentType,
- Component component,
- ComponentBusinessLogic componentBl, User modifier, User owner, boolean shouldLock, boolean inTransaction
- ) {
-
+ public <T extends Component> Either<T, ResponseFormat> changeState(ComponentTypeEnum componentType, Component component,
+ ComponentBusinessLogic componentBl, User modifier, User owner,
+ boolean shouldLock, boolean inTransaction) {
log.info("start performing certification change for resource {}", component.getUniqueId());
Either<T, ResponseFormat> result = null;
-
try {
handleValidationsAndArtifactsGenerationBeforeCertifying(componentType, component, componentBl, modifier, shouldLock, inTransaction);
- Either<ToscaElement, StorageOperationStatus> certificationChangeResult =
- lifeCycleOperation.certifyToscaElement(component.getUniqueId(), modifier.getUserId(), owner.getUserId());
-
+ Either<ToscaElement, StorageOperationStatus> certificationChangeResult = lifeCycleOperation
+ .certifyToscaElement(component.getUniqueId(), modifier.getUserId(), owner.getUserId());
if (certificationChangeResult.isRight()) {
ResponseFormat responseFormat = formatCertificationError(component, certificationChangeResult.right().value(), componentType);
result = Either.right(responseFormat);
return result;
}
-
ToscaElement certificationResult = certificationChangeResult.left().value();
T componentAfterCertification = ModelConverter.convertFromToscaElement(certificationResult);
- if ( result == null || result.isLeft() ){
+ if (result == null || result.isLeft()) {
//update edges for allotted resource
StorageOperationStatus status = handleConnectionsForAllotted(componentAfterCertification);
- if ( status != StorageOperationStatus.OK){
+ if (status != StorageOperationStatus.OK) {
ResponseFormat responseFormat = formatCertificationError(componentAfterCertification, status, componentType);
result = Either.right(responseFormat);
}
@@ -171,59 +160,55 @@ public class CertificationChangeTransition extends LifeCycleTransition {
} finally {
if (result == null || result.isRight()) {
BeEcompErrorManager.getInstance().logBeDaoSystemError("Change LifecycleState");
- if ( !inTransaction ) {
+ if (!inTransaction) {
log.debug("operation failed. do rollback");
janusGraphDao.rollback();
}
} else {
- if ( !inTransaction ) {
+ if (!inTransaction) {
log.debug("operation success. do commit");
janusGraphDao.commit();
}
}
}
-
}
private void updateCapReqPropertiesOwnerId(Component component) {
- if(component.isTopologyTemplate() && ToscaUtils.isNotComplexVfc(component)) {
+ if (component.isTopologyTemplate() && ToscaUtils.isNotComplexVfc(component)) {
toscaOperationFacade.updateCapReqPropertiesOwnerId(component.getUniqueId());
}
}
Either<Boolean, ResponseFormat> validateAllResourceInstanceCertified(Component component) {
Either<Boolean, ResponseFormat> eitherResult = Either.left(true);
-
- if (component.isVspArchived()){
- return Either.right(componentUtils.getResponseFormat(ActionStatus.ARCHIVED_ORIGINS_FOUND, component.getComponentType().name(), component.getName()));
+ if (component.isVspArchived()) {
+ return Either.right(
+ componentUtils.getResponseFormat(ActionStatus.ARCHIVED_ORIGINS_FOUND, component.getComponentType().name(), component.getName()));
}
-
List<ComponentInstance> resourceInstance = component.getComponentInstances();
if (resourceInstance != null) {
-
//Filter components instances with archived origins
- Optional<ComponentInstance> archivedRIOptional = resourceInstance.stream().filter(ComponentInstanceDataDefinition::isOriginArchived).findAny();
-
+ Optional<ComponentInstance> archivedRIOptional = resourceInstance.stream().filter(ComponentInstanceDataDefinition::isOriginArchived)
+ .findAny();
//RIs with archived origins found, return relevant error
- if (archivedRIOptional.isPresent()){
- return Either.right(componentUtils.getResponseFormat(ActionStatus.ARCHIVED_ORIGINS_FOUND, component.getComponentType().name(), component.getName()));
+ if (archivedRIOptional.isPresent()) {
+ return Either.right(
+ componentUtils.getResponseFormat(ActionStatus.ARCHIVED_ORIGINS_FOUND, component.getComponentType().name(), component.getName()));
}
-
//Continue with searching for non certified RIs
- Optional<ComponentInstance> nonCertifiedRIOptional = resourceInstance.stream().filter(p -> !ValidationUtils.validateCertifiedVersion(p.getComponentVersion())).findAny();
+ Optional<ComponentInstance> nonCertifiedRIOptional = resourceInstance.stream()
+ .filter(p -> !ValidationUtils.validateCertifiedVersion(p.getComponentVersion())).findAny();
// Uncertified Resource Found
if (nonCertifiedRIOptional.isPresent()) {
ComponentInstance nonCertifiedRI = nonCertifiedRIOptional.get();
ResponseFormat resFormat = getRelevantResponseFormatUncertifiedRI(nonCertifiedRI, component.getComponentType());
eitherResult = Either.right(resFormat);
}
-
}
return eitherResult;
}
private ResponseFormat getRelevantResponseFormatUncertifiedRI(ComponentInstance nonCertifiedRI, ComponentTypeEnum componentType) {
-
Either<Resource, StorageOperationStatus> eitherResource = toscaOperationFacade.getToscaElement(nonCertifiedRI.getComponentUid());
if (eitherResource.isRight()) {
return componentUtils.getResponseFormat(ActionStatus.GENERAL_ERROR);
@@ -231,7 +216,6 @@ public class CertificationChangeTransition extends LifeCycleTransition {
ActionStatus actionStatus;
Resource resource = eitherResource.left().value();
Either<Resource, StorageOperationStatus> status = toscaOperationFacade.findLastCertifiedToscaElementByUUID(resource);
-
if (ValidationUtils.validateMinorVersion(nonCertifiedRI.getComponentVersion())) {
if (status.isRight() || status.left().value() == null) {
actionStatus = ActionStatus.VALIDATED_RESOURCE_NOT_FOUND;
@@ -248,7 +232,9 @@ public class CertificationChangeTransition extends LifeCycleTransition {
return componentUtils.getResponseFormat(actionStatus, componentType == ComponentTypeEnum.RESOURCE ? "VF" : "service", resource.getName());
}
- private void handleValidationsAndArtifactsGenerationBeforeCertifying(ComponentTypeEnum componentType, Component component, ComponentBusinessLogic componentBl, User modifier, boolean shouldLock, boolean inTransaction) {
+ private void handleValidationsAndArtifactsGenerationBeforeCertifying(ComponentTypeEnum componentType, Component component,
+ ComponentBusinessLogic componentBl, User modifier, boolean shouldLock,
+ boolean inTransaction) {
if (component.isTopologyTemplate()) {
Either<Boolean, ResponseFormat> statusCert = validateAllResourceInstanceCertified(component);
if (statusCert.isRight()) {
@@ -256,37 +242,35 @@ public class CertificationChangeTransition extends LifeCycleTransition {
}
}
if (componentType == ComponentTypeEnum.SERVICE) {
-
- Either<Service, ResponseFormat> generateHeatEnvResult = serviceBusinessLogic.generateHeatEnvArtifacts((Service) component, modifier, shouldLock, inTransaction);
-
+ Either<Service, ResponseFormat> generateHeatEnvResult = serviceBusinessLogic
+ .generateHeatEnvArtifacts((Service) component, modifier, shouldLock, inTransaction);
if (generateHeatEnvResult.isRight()) {
throw new ByResponseFormatComponentException(generateHeatEnvResult.right().value());
}
- Either<Service, ResponseFormat> generateVfModuleResult = serviceBusinessLogic.generateVfModuleArtifacts(generateHeatEnvResult.left().value(), modifier, shouldLock, inTransaction);
+ Either<Service, ResponseFormat> generateVfModuleResult = serviceBusinessLogic
+ .generateVfModuleArtifacts(generateHeatEnvResult.left().value(), modifier, shouldLock, inTransaction);
if (generateVfModuleResult.isRight()) {
throw new ByResponseFormatComponentException(generateVfModuleResult.right().value());
}
component = generateVfModuleResult.left().value();
}
-
componentBl.populateToscaArtifacts(component, modifier, true, inTransaction, shouldLock);
}
-
private void updateCalculatedCapabilitiesRequirements(Component certifiedComponent) {
- if(certifiedComponent.getComponentType() == ComponentTypeEnum.SERVICE){
+ if (certifiedComponent.getComponentType() == ComponentTypeEnum.SERVICE) {
toscaOperationFacade.updateNamesOfCalculatedCapabilitiesRequirements(certifiedComponent.getUniqueId());
}
}
- private StorageOperationStatus handleConnectionsForAllotted(Component component){
+ private StorageOperationStatus handleConnectionsForAllotted(Component component) {
StorageOperationStatus status = StorageOperationStatus.OK;
- if (component.getComponentType() == ComponentTypeEnum.RESOURCE && component.isTopologyTemplate() ){
+ if (component.getComponentType() == ComponentTypeEnum.RESOURCE && component.isTopologyTemplate()) {
List<CategoryDefinition> categories = component.getCategories();
- Optional<CategoryDefinition> findFirst = categories.stream().filter(c->c.getName().equals(ALLOTTED_CATEGORY)).findFirst();
- if ( findFirst.isPresent() ){
+ Optional<CategoryDefinition> findFirst = categories.stream().filter(c -> c.getName().equals(ALLOTTED_CATEGORY)).findFirst();
+ if (findFirst.isPresent()) {
findInstanceByAllottedProperties(component);
- }else{
+ } else {
log.debug("Component isn't from allotted category.");
}
}
@@ -297,27 +281,29 @@ public class CertificationChangeTransition extends LifeCycleTransition {
log.debug("Component is from alloted category. Remove all previous ALLOTTED_OF connections for all instances");
nodeTemplateOperation.removeAllAllotedEdges(component.getUniqueId());
Map<String, List<ComponentInstanceProperty>> componentInstancesProperties = component.getComponentInstancesProperties();
- if ( componentInstancesProperties != null ){
- componentInstancesProperties.entrySet().forEach(e->{
+ if (componentInstancesProperties != null) {
+ componentInstancesProperties.entrySet().forEach(e -> {
List<ComponentInstanceProperty> props = e.getValue();
- Optional<ComponentInstanceProperty> findProp = props.stream().filter(p -> p.getName().equals(DEPENDING_SRV_NAME) || p.getName().equals(PROVIDING_SRV_NAME)).findFirst();
- if ( findProp.isPresent() ){
- log.debug("Find specific properties [{} or {}]on instance {} ", DEPENDING_SRV_NAME,PROVIDING_SRV_NAME, e.getKey() );
- handleAllotedInstance(component.getUniqueId(), e.getKey(), e.getValue() );
- }else{
- log.debug("Not defined specific properties [{} or {}]on instance {} ", DEPENDING_SRV_NAME,PROVIDING_SRV_NAME, e.getKey() );
+ Optional<ComponentInstanceProperty> findProp = props.stream()
+ .filter(p -> p.getName().equals(DEPENDING_SRV_NAME) || p.getName().equals(PROVIDING_SRV_NAME)).findFirst();
+ if (findProp.isPresent()) {
+ log.debug("Find specific properties [{} or {}]on instance {} ", DEPENDING_SRV_NAME, PROVIDING_SRV_NAME, e.getKey());
+ handleAllotedInstance(component.getUniqueId(), e.getKey(), e.getValue());
+ } else {
+ log.debug("Not defined specific properties [{} or {}]on instance {} ", DEPENDING_SRV_NAME, PROVIDING_SRV_NAME, e.getKey());
}
});
}
}
private StorageOperationStatus handleAllotedInstance(String componentId, String instanceId, List<ComponentInstanceProperty> props) {
- ComponentInstanceProperty serviceUUIDProp = props.stream().filter(p -> p.getName().equals(PROVIDING_SRV_UUID) || p.getName().equals(DEPENDING_SRV_UUID)).findFirst().get();
- if ( serviceUUIDProp.getValue() != null && !serviceUUIDProp.getValue().contains("get_input")){
- log.debug("Handle Allotted edge on instance {} for service UUID {} ", instanceId, serviceUUIDProp.getValue() );
- return nodeTemplateOperation.createAllottedOfEdge(componentId, instanceId, serviceUUIDProp.getValue());
- }else{
- log.debug("An incorrectly defined service UUID for Allotted instance {} . Skip instance", instanceId, serviceUUIDProp.getValue() );
+ ComponentInstanceProperty serviceUUIDProp = props.stream()
+ .filter(p -> p.getName().equals(PROVIDING_SRV_UUID) || p.getName().equals(DEPENDING_SRV_UUID)).findFirst().get();
+ if (serviceUUIDProp.getValue() != null && !serviceUUIDProp.getValue().contains("get_input")) {
+ log.debug("Handle Allotted edge on instance {} for service UUID {} ", instanceId, serviceUUIDProp.getValue());
+ return nodeTemplateOperation.createAllottedOfEdge(componentId, instanceId, serviceUUIDProp.getValue());
+ } else {
+ log.debug("An incorrectly defined service UUID for Allotted instance {} . Skip instance", instanceId, serviceUUIDProp.getValue());
return StorageOperationStatus.OK;
}
}