diff options
Diffstat (limited to 'catalog-be/src/main/java/org/openecomp/sdc/be/components/lifecycle/LifeCycleTransition.java')
-rw-r--r-- | catalog-be/src/main/java/org/openecomp/sdc/be/components/lifecycle/LifeCycleTransition.java | 75 |
1 files changed, 44 insertions, 31 deletions
diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/lifecycle/LifeCycleTransition.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/lifecycle/LifeCycleTransition.java index 49d94dc80b..0d0e06fe6d 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/lifecycle/LifeCycleTransition.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/lifecycle/LifeCycleTransition.java @@ -24,44 +24,53 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import org.openecomp.sdc.be.components.impl.ArtifactsBusinessLogic; import org.openecomp.sdc.be.components.impl.ComponentBusinessLogic; import org.openecomp.sdc.be.components.lifecycle.LifecycleChangeInfoWithAction.LifecycleChanceActionEnum; import org.openecomp.sdc.be.config.ConfigurationManager; import org.openecomp.sdc.be.dao.api.ActionStatus; +import org.openecomp.sdc.be.dao.jsongraph.TitanDao; +import org.openecomp.sdc.be.datatypes.components.ResourceMetadataDataDefinition; import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum; -import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum; +import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum; import org.openecomp.sdc.be.impl.ComponentsUtils; import org.openecomp.sdc.be.model.Component; import org.openecomp.sdc.be.model.LifeCycleTransitionEnum; import org.openecomp.sdc.be.model.LifecycleStateEnum; import org.openecomp.sdc.be.model.User; +import org.openecomp.sdc.be.model.jsontitan.operations.ToscaElementLifecycleOperation; +import org.openecomp.sdc.be.model.jsontitan.operations.ToscaOperationFacade; import org.openecomp.sdc.be.model.operations.api.ILifecycleOperation; import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus; import org.openecomp.sdc.be.resources.data.auditing.AuditingActionEnum; import org.openecomp.sdc.be.user.Role; import org.openecomp.sdc.exception.ResponseFormat; +import org.springframework.beans.factory.annotation.Autowired; import fj.data.Either; public abstract class LifeCycleTransition { protected ConfigurationManager configurationManager; - protected ILifecycleOperation lifeCycleOperation; + @Autowired + protected ToscaElementLifecycleOperation lifeCycleOperation; + @Autowired + protected TitanDao titanDao; protected ComponentsUtils componentUtils; protected Map<ComponentTypeEnum, List<Role>> authorizedRoles; + protected Map<ResourceTypeEnum, List<Role>> resourceAuthorizedRoles; + + ToscaOperationFacade toscaOperationFacade; - protected LifeCycleTransition(ComponentsUtils componentUtils, ILifecycleOperation lifecycleOperation) { + protected LifeCycleTransition(ComponentsUtils componentUtils, ToscaElementLifecycleOperation lifecycleOperation2, ToscaOperationFacade toscaOperationFacade, TitanDao titanDao) { - // configurationManager = (ConfigurationManager) - // context.getAttribute(Constants.CONFIGURATION_MANAGER_ATTR); - // lifeCycleOperation = LifecycleOperation.getInstance(); this.configurationManager = ConfigurationManager.getConfigurationManager(); - this.lifeCycleOperation = lifecycleOperation; + this.lifeCycleOperation = lifecycleOperation2; this.componentUtils = componentUtils; this.authorizedRoles = new HashMap<>(); - + this.resourceAuthorizedRoles = new HashMap<>(); + this.toscaOperationFacade = toscaOperationFacade; + this.titanDao = titanDao; } public abstract LifeCycleTransitionEnum getName(); @@ -76,11 +85,11 @@ public abstract class LifeCycleTransition { this.configurationManager = configurationManager; } - public ILifecycleOperation getLifeCycleOperation() { + public ToscaElementLifecycleOperation getLifeCycleOperation() { return lifeCycleOperation; } - public void setLifeCycleOperation(ILifecycleOperation lifeCycleOperation) { + public void setLifeCycleOperation(ToscaElementLifecycleOperation lifeCycleOperation) { this.lifeCycleOperation = lifeCycleOperation; } @@ -91,14 +100,14 @@ public abstract class LifeCycleTransition { public void addAuthorizedRoles(ComponentTypeEnum componentType, List<Role> authorizedRoles) { this.authorizedRoles.put(componentType, authorizedRoles); } + + public List<Role> getResourceAuthorizedRoles(ResourceTypeEnum resourceType) { + return resourceAuthorizedRoles.get(resourceType); + } - // - // public Either<? extends Component, ResponseFormat> - // changeState(ComponentTypeEnum componentType, Component component, - // ComponentBusinessLogic componentBl, User modifier, User owner){ - // return changeState(componentType, component, componentBl, modifier, - // owner, false); - // } + public void addResouceAuthorizedRoles(ResourceTypeEnum resourceType, List<Role> authorizedRoles) { + this.resourceAuthorizedRoles.put(resourceType, authorizedRoles); + } public abstract Either<? extends Component, ResponseFormat> changeState(ComponentTypeEnum componentType, Component component, ComponentBusinessLogic componentBl, User modifier, User owner, boolean needLock, boolean inTransaction); @@ -122,8 +131,7 @@ public abstract class LifeCycleTransition { protected Either<User, ResponseFormat> getComponentOwner(Component component, ComponentTypeEnum componentType, boolean inTransaction) { - NodeTypeEnum nodeType = componentType.getNodeType(); - Either<User, StorageOperationStatus> resourceOwnerResult = getLifeCycleOperation().getComponentOwner(component.getUniqueId(), nodeType, inTransaction); + Either<User, StorageOperationStatus> resourceOwnerResult = getLifeCycleOperation().getToscaElementOwner(component.getUniqueId()); if (resourceOwnerResult.isRight()) { ResponseFormat responseFormat = componentUtils.getResponseFormatByComponent(componentUtils.convertFromStorageResponse(resourceOwnerResult.right().value()), component, componentType); return Either.right(responseFormat); @@ -131,21 +139,13 @@ public abstract class LifeCycleTransition { return Either.left(resourceOwnerResult.left().value()); } - /** - * isUserValidForRequest - * - * @param modifier - * @param action - * TODO - * @return - */ - protected Either<Boolean, ResponseFormat> userRoleValidation(User modifier, ComponentTypeEnum componentType, LifecycleChangeInfoWithAction lifecycleChangeInfo) { + protected Either<Boolean, ResponseFormat> userRoleValidation(User modifier,Component component, ComponentTypeEnum componentType, LifecycleChangeInfoWithAction lifecycleChangeInfo) { // validate user - if (getAuthorizedRoles(componentType).contains(Role.valueOf(modifier.getRole()))) { + //first check the user for the component and then for the resource + if (getAuthorizedRoles(componentType).contains(Role.valueOf(modifier.getRole())) || userResourceRoleValidation(component,componentType,modifier)) { return Either.left(true); } - // this is only when creating vfc/cp when import vf from csar - when we // create resources from node type, we create need to change the state // to certified @@ -156,5 +156,18 @@ public abstract class LifeCycleTransition { ResponseFormat responseFormat = componentUtils.getResponseFormat(ActionStatus.RESTRICTED_OPERATION); return Either.right(responseFormat); } + + protected boolean userResourceRoleValidation(Component component, ComponentTypeEnum componentType, User modifier) { + if (componentType.equals(ComponentTypeEnum.RESOURCE)){ + ResourceTypeEnum resourceType = ((ResourceMetadataDataDefinition)component.getComponentMetadataDefinition().getMetadataDataDefinition()).getResourceType(); + if (getResourceAuthorizedRoles(resourceType)!=null && getResourceAuthorizedRoles(resourceType).contains(Role.valueOf(modifier.getRole()))) { + return true; + } + } else { + return false; + } + + return false; + } } |