aboutsummaryrefslogtreecommitdiffstats
path: root/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/GroupOperation.java
diff options
context:
space:
mode:
Diffstat (limited to 'catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/GroupOperation.java')
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/GroupOperation.java1565
1 files changed, 5 insertions, 1560 deletions
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/GroupOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/GroupOperation.java
index 52bcae36db..02c5194da3 100644
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/GroupOperation.java
+++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/GroupOperation.java
@@ -71,10 +71,6 @@ import fj.data.Either;
@Component("group-operation")
public class GroupOperation extends AbstractOperation implements IGroupOperation {
- private static String ADDING_GROUP = "AddingGroup";
- private static String DELETING_GROUP = "DeletingGroup";
- private static String DELETING_ALL_GROUPS = "DeletingAllGroups";
- private static String ASSOCIATING_GROUP_TO_COMP_INST = "AssociatingGroupToComponentInstance";
private static Logger log = LoggerFactory.getLogger(GroupOperation.class.getName());
@@ -87,597 +83,18 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation
@javax.annotation.Resource
private ApplicationDataTypeCache dataTypeCache;
- @javax.annotation.Resource
- protected ResourceOperation resourceOperation;
-
- @Override
- public Either<GroupData, TitanOperationStatus> addGroupToGraph(NodeTypeEnum nodeTypeEnum, String componentId, GroupDefinition groupDefinition) {
-
- String groupTypeUid = groupDefinition.getTypeUid();
-
- if (groupTypeUid == null) {
- BeEcompErrorManager.getInstance().logInternalFlowError(ADDING_GROUP, "Group type id is empty", ErrorSeverity.ERROR);
- return Either.right(TitanOperationStatus.INVALID_ID);
- }
-
- ComponentMetadataData metaData = null;
- if (nodeTypeEnum == NodeTypeEnum.Resource) {
- metaData = new ResourceMetadataData();
- } else {
- metaData = new ServiceMetadataData();
- }
- metaData.getMetadataDataDefinition().setUniqueId(componentId);
-
- groupDefinition.setUniqueId(UniqueIdBuilder.buildGroupUniqueId(componentId, groupDefinition.getName()));
-
- int propertiesSize = groupDefinition.getProperties() == null ? 0 : groupDefinition.getProperties().size();
- groupDefinition.setPropertyValueCounter(propertiesSize);
-
- GroupData groupData = new GroupData(groupDefinition);
-
- TitanOperationStatus status = null;
- // Adding group data node to graph
- log.debug("Before adding group to graph {}", groupData.toString());
- Either<GroupData, TitanOperationStatus> createNodeResult = titanGenericDao.createNode(groupData, GroupData.class);
- log.debug("After adding group to graph {}", groupData.toString());
- if (createNodeResult.isRight()) {
- status = createNodeResult.right().value();
- log.error("Failed to add group {} to graph. status is {}", groupDefinition.getName(), status);
- return Either.right(status);
- }
-
- // Associate group to group type
- log.debug("Going to associate group {} to its groupType {}", groupDefinition.getName(), groupDefinition.getType());
- Either<GraphRelation, TitanOperationStatus> associateGroupTypeRes = associateGroupToGroupType(groupData, groupTypeUid);
- log.debug("After associating group {} to its groupType {}. status is {}", groupDefinition.getName(), groupDefinition.getType(), associateGroupTypeRes);
- if (associateGroupTypeRes.isRight()) {
- status = associateGroupTypeRes.right().value();
- String description = "Failed to associate group " + groupDefinition.getName() + " to its groupType " + groupDefinition.getType() + " in graph.";
- BeEcompErrorManager.getInstance().logInternalFlowError(ADDING_GROUP, description, ErrorSeverity.ERROR);
- return Either.right(status);
- }
-
- // Associate group to component RESOURCE/SERVICE/PRODUCT
- Either<GraphRelation, TitanOperationStatus> associateComponentRes = associateGroupToComponent(groupData, nodeTypeEnum, componentId);
- if (associateComponentRes.isRight()) {
- status = associateComponentRes.right().value();
- String description = "Failed to associate group " + groupDefinition.getName() + " to " + nodeTypeEnum.getName() + " " + componentId + ". status is " + status;
- BeEcompErrorManager.getInstance().logInternalFlowError(ADDING_GROUP, description, ErrorSeverity.ERROR);
- return Either.right(status);
- }
-
- Either<GroupTypeDefinition, TitanOperationStatus> groupTypeRes = groupTypeOperation.getGroupTypeByUid(groupDefinition.getTypeUid());
- if (groupTypeRes.isRight()) {
- TitanOperationStatus operationStatus = groupTypeRes.right().value();
- log.debug("Failed to find group type {}", groupDefinition.getTypeUid());
- if (operationStatus == TitanOperationStatus.NOT_FOUND) {
- return Either.right(TitanOperationStatus.INVALID_ID);
- }
- }
- GroupTypeDefinition groupTypeDefinition = groupTypeRes.left().value();
- // 1. find properties from group type
- List<PropertyDefinition> groupTypeProperties = groupTypeDefinition.getProperties();
-
- // 2. check the properties exists in the group type.
- // 3. add parent unique id to the properties
- // 4. add node per group property which the group point to it and it
- // points to the parent unique id
-
- // Adding properties to group
- List<GroupProperty> properties = groupDefinition.convertToGroupProperties();
-
- if (properties != null && false == properties.isEmpty()) {
-
- if (groupTypeProperties == null || true == groupTypeProperties.isEmpty()) {
- BeEcompErrorManager.getInstance().logInvalidInputError(ADDING_GROUP, "group type does not have properties", ErrorSeverity.INFO);
- return Either.right(TitanOperationStatus.MATCH_NOT_FOUND);
- }
-
- Map<String, PropertyDefinition> groupTypePropertiesMap = groupTypeProperties.stream().collect(Collectors.toMap(p -> p.getName(), p -> p));
-
- Either<PropertyValueData, TitanOperationStatus> addPropertyResult = null;
- int i = 1;
- for (GroupProperty prop : properties) {
- addPropertyResult = addPropertyToGroup(groupData, prop, groupTypePropertiesMap.get(prop.getName()), i);
- if (addPropertyResult.isRight()) {
- status = addPropertyResult.right().value();
- String description = "Failed to associate group " + groupData.getUniqueId() + " to property " + prop.getName() + " in graph. Status is " + status;
- BeEcompErrorManager.getInstance().logInternalFlowError(ADDING_GROUP, description, ErrorSeverity.ERROR);
- return Either.right(status);
- }
- i++;
- }
- }
-
- // Associate artifacts to group
- List<String> artifacts = groupDefinition.getArtifacts();
-
- Either<GroupDefinition, TitanOperationStatus> associateArtifactsToGroupOnGraph = associateArtifactsToGroupOnGraph(groupData.getGroupDataDefinition().getUniqueId(), artifacts);
- if (associateArtifactsToGroupOnGraph.isRight() && associateArtifactsToGroupOnGraph.right().value() != TitanOperationStatus.OK) {
- return Either.right(status);
- }
- /*
- * Either<GraphRelation, TitanOperationStatus> addArtifactsRefResult = null; if (artifacts != null) { for (String artifactId : artifacts) { Either<ArtifactData, TitanOperationStatus> findArtifactRes = titanGenericDao .getNode(UniqueIdBuilder
- * .getKeyByNodeType(NodeTypeEnum.ArtifactRef), artifactId, ArtifactData.class); if (findArtifactRes.isRight()) { status = findArtifactRes.right().value(); if (status == TitanOperationStatus.NOT_FOUND) { status =
- * TitanOperationStatus.INVALID_ID; } String description = "Failed to associate group " + groupData.getUniqueId() + " to artifact " + artifactId + " in graph. Status is " + status; BeEcompErrorManager.getInstance().logInternalFlowError(
- * ADDING_GROUP, description, ErrorSeverity.ERROR); return Either.right(status); }
- *
- * Map<String, Object> props = new HashMap<String, Object>(); props.put(GraphPropertiesDictionary.NAME.getProperty(), findArtifactRes.left().value().getLabel());
- *
- * addArtifactsRefResult = titanGenericDao.createRelation( groupData, findArtifactRes.left().value(), GraphEdgeLabels.GROUP_ARTIFACT_REF, props);
- *
- * if (addArtifactsRefResult.isRight()) { status = addArtifactsRefResult.right().value(); String description = "Failed to associate group " + groupData.getUniqueId() + " to artifact " + artifactId + " in graph. Status is " + status;
- * BeEcompErrorManager.getInstance().logInternalFlowError( ADDING_GROUP, description, ErrorSeverity.ERROR); return Either.right(status); } } }
- */
-
- // Associate group to members
- // map of componentInstances <name: uniqueId>
- Map<String, String> members = groupDefinition.getMembers();
-
- if (members != null && false == members.isEmpty()) {
- Either<GraphRelation, TitanOperationStatus> addMembersRefResult = null;
- for (Entry<String, String> member : members.entrySet()) {
- if (member.getValue() == null || member.getValue().isEmpty()) {
- continue;
- }
- Either<ComponentInstanceData, TitanOperationStatus> findComponentInstanceRes = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), member.getValue(), ComponentInstanceData.class);
- if (findComponentInstanceRes.isRight()) {
- status = findComponentInstanceRes.right().value();
- if (status == TitanOperationStatus.NOT_FOUND) {
- status = TitanOperationStatus.INVALID_ID;
- }
- String description = "Failed to find to find member of group " + member.getValue() + " in graph. Status is " + status;
- BeEcompErrorManager.getInstance().logInternalFlowError(ADDING_GROUP, description, ErrorSeverity.ERROR);
- return Either.right(status);
- }
- Map<String, Object> props = new HashMap<String, Object>();
- props.put(GraphPropertiesDictionary.NAME.getProperty(), member.getKey());
- addMembersRefResult = titanGenericDao.createRelation(groupData, findComponentInstanceRes.left().value(), GraphEdgeLabels.GROUP_MEMBER, props);
-
- if (addMembersRefResult.isRight()) {
- status = addMembersRefResult.right().value();
- String description = "Failed to associate group " + groupData.getUniqueId() + " to component instance " + member.getValue() + " in graph. Status is " + status;
- BeEcompErrorManager.getInstance().logInternalFlowError(ADDING_GROUP, description, ErrorSeverity.ERROR);
- return Either.right(status);
- }
- }
- }
-
- return Either.left(groupData);
- }
-
- private Either<PropertyDefinition, TitanOperationStatus> getPropertyDefFromGroupType(GroupProperty groupProperty) {
- Either<PropertyDefinition, TitanOperationStatus> ret;
- Either<GroupTypeDefinition, TitanOperationStatus> groupTypeRes = groupTypeOperation
- .getGroupTypeByUid(groupProperty.getParentUniqueId());
- if (groupTypeRes.isRight()) {
- TitanOperationStatus operationStatus = groupTypeRes.right().value();
- log.debug("Failed to find group type {}", groupProperty.getParentUniqueId());
- if (operationStatus == TitanOperationStatus.NOT_FOUND) {
- ret = Either.right(TitanOperationStatus.INVALID_ID);
- } else {
- ret = Either.right(operationStatus);
- }
- } else {
- GroupTypeDefinition groupTypeDefinition = groupTypeRes.left().value();
- List<PropertyDefinition> groupTypeProperties = groupTypeDefinition.getProperties();
-
- Map<String, PropertyDefinition> groupTypePropertiesMap = groupTypeProperties.stream()
- .collect(Collectors.toMap(p -> p.getName(), p -> p));
- if (groupTypeProperties == null || true == groupTypeProperties.isEmpty()) {
- BeEcompErrorManager.getInstance().logInvalidInputError(ADDING_GROUP,
- "group type does not have properties", ErrorSeverity.INFO);
- ret = Either.right(TitanOperationStatus.MATCH_NOT_FOUND);
- } else {
- PropertyDefinition propertyDefinition = groupTypePropertiesMap.get(groupProperty.getName());
- ret = Either.left(propertyDefinition);
- }
- }
- return ret;
- }
-
- /**
- * Updates GroupProperty Value
- * @param componentId TODO
- * @param groupId TODO
- * @param groupProperties
- * @param inTransaction TODO
- *
- * @return
- */
- public Either<List<GroupProperty>, StorageOperationStatus> updateGroupProperties(String componentId,
- String groupId, List<GroupProperty> groupProperties, boolean inTransaction) {
-
- Wrapper<Long> lastUpdateTimeWrapper = new Wrapper<>();
- TitanOperationStatus titanStatus = TitanOperationStatus.OK;
- Either<List<GroupProperty>, StorageOperationStatus> result = null;
- //Get Group Data
- final GroupData groupData;
- Either<GroupData, TitanOperationStatus> eitherGroupData = titanGenericDao
- .getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Group), groupId, GroupData.class);
- if( eitherGroupData.isRight() ){
- log.debug("Error: Could not fetch group with groupId = {}", groupId);
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(eitherGroupData.right().value()));
- }
- else{
- groupData = eitherGroupData.left().value();
- }
-
- try {
- Optional<TitanOperationStatus> optionalError =
- //Stream of group properties to be updated
- groupProperties.stream().
- //updating each property and mapping to the TitanOperationStatus
- map(e -> updateGroupProperty(e, groupData, lastUpdateTimeWrapper)).
- //filtering in errors if there are such
- filter( e -> e != TitanOperationStatus.OK).
- //collect
- findFirst();
- if( optionalError.isPresent() ){
- titanStatus = optionalError.get();
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(titanStatus));
- }
- else{
- result = updateLastModificationTimeOnVf(componentId, groupId, groupProperties, lastUpdateTimeWrapper);
- }
-
- }
- finally {
- handleTransactionCommitRollback(inTransaction, result);
- }
-
- return result;
- }
-
- private Either<List<GroupProperty>, StorageOperationStatus> updateLastModificationTimeOnVf(String componentId,
- String groupId, List<GroupProperty> groupProperties, Wrapper<Long> lastUpdateTimeWrapper) {
- Either<List<GroupProperty>, StorageOperationStatus> result;
- Either<Resource, StorageOperationStatus> eitherResource = resourceOperation.getResource(componentId);
- if( eitherResource.isRight() ){
- result = Either.right(eitherResource.right().value());
- }
- else{
- Either<ComponentMetadataData, StorageOperationStatus> eitherLastUpdateDateUpdatedOnResource = resourceOperation
- .updateComponentLastUpdateDateOnGraph(eitherResource.left().value(), NodeTypeEnum.Resource,
- lastUpdateTimeWrapper.getInnerElement(), true);
- if (eitherLastUpdateDateUpdatedOnResource.isLeft()) {
-
- groupProperties =
- //Group Stream From VF
- eitherResource.left().value().getGroups().stream().
- //Filter in Only the relevant group
- filter( e -> e.getUniqueId().equals(groupId)).
- //Get it
- findAny().get().
- //Get Group Properties from it
- convertToGroupProperties();
-
- result = Either.left(groupProperties);
- }
- else{
- result = Either.right(eitherLastUpdateDateUpdatedOnResource.right().value());
- }
- }
- return result;
- }
-
-
- private TitanOperationStatus updateGroupProperty(GroupProperty groupProperty, GroupData groupData,
- Wrapper<Long> lastUpdateTimeWrapper) {
- TitanOperationStatus titanStatus = TitanOperationStatus.OK;
- // PropertyValueData node does not exist
- if (StringUtils.isEmpty(groupProperty.getValueUniqueUid())) {
- // create new node
- if (!StringUtils.isEmpty(groupProperty.getValue())) {
- // Value does not exit and was not updated as well. no need
- // to do anything
- } else {
- titanStatus = addGroupPropertyToGraph(groupProperty, groupData, lastUpdateTimeWrapper);
-
- }
- }
-
- else {
- titanStatus = updateGroupPropertyInGraph(groupProperty, lastUpdateTimeWrapper);
- }
- return titanStatus;
- }
-
- private TitanOperationStatus updateGroupPropertyInGraph(GroupProperty groupProperty,
- Wrapper<Long> lastUpdateTimeWrapper) {
- TitanOperationStatus titanStatus;
- Either<PropertyValueData, TitanOperationStatus> eitherGroupPropertyValue = titanGenericDao.getNode(
- UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.PropertyValue), groupProperty.getValueUniqueUid(),
- PropertyValueData.class);
- if (eitherGroupPropertyValue.isRight()) {
-
- titanStatus = eitherGroupPropertyValue.right().value();
-
- } else {
- PropertyValueData groupPropertyValue = eitherGroupPropertyValue.left().value();
- // Actual Update only if value changed
- if (!StringUtils.equals(groupPropertyValue.getValue(), groupProperty.getValue())) {
- long modificationTime = lastUpdateTimeWrapper.isEmpty() ? System.currentTimeMillis()
- : lastUpdateTimeWrapper.getInnerElement();
- groupPropertyValue.setValue(groupProperty.getValue());
- groupPropertyValue.setModificationTime(modificationTime);
- Either<PropertyValueData, TitanOperationStatus> eitherUpdateNode = titanGenericDao
- .updateNode(groupPropertyValue, PropertyValueData.class);
- if( eitherUpdateNode.isLeft() ){
- titanStatus = TitanOperationStatus.OK;
- lastUpdateTimeWrapper.setInnerElement(modificationTime);
- }
- else{
- titanStatus = eitherUpdateNode.right().value();
- }
-
- } else {
- titanStatus = TitanOperationStatus.OK;
- }
- }
- return titanStatus;
- }
-
- private TitanOperationStatus addGroupPropertyToGraph(GroupProperty groupProperty, GroupData groupData,
- Wrapper<Long> lastUpdateTimeWrapper) {
- PropertyDefinition propertyDefinition = null;
- TitanOperationStatus ret = TitanOperationStatus.OK;
- if (ret == TitanOperationStatus.OK) {
- Either<PropertyDefinition, TitanOperationStatus> eitherPropertyDefFromGroupType = getPropertyDefFromGroupType(
- groupProperty);
- if (eitherPropertyDefFromGroupType.isRight()) {
- log.debug("Error: Could not fetch group property from group Type with groupTypeId = {}",
- groupProperty.getParentUniqueId());
- ret = eitherPropertyDefFromGroupType.right().value();
- } else {
- propertyDefinition = eitherPropertyDefFromGroupType.left().value();
- }
- }
- if (ret == TitanOperationStatus.OK){
- final int groupPropCounter = groupData.getGroupDataDefinition().getPropertyValueCounter() + NumberUtils.INTEGER_ONE;
- Either<PropertyValueData, TitanOperationStatus> eitherAddPropertyToGroup = addPropertyToGroup(groupData,
- groupProperty, propertyDefinition, groupPropCounter);
-
- if( eitherAddPropertyToGroup.isLeft() ){
- ret = TitanOperationStatus.OK;
- if( lastUpdateTimeWrapper.isEmpty() ){
- lastUpdateTimeWrapper.setInnerElement(eitherAddPropertyToGroup.left().value().getCreationTime());
- }
- }
- else{
- ret = eitherAddPropertyToGroup.right().value();
- }
- if( ret == TitanOperationStatus.OK){
- groupData.getGroupDataDefinition().setPropertyValueCounter(groupPropCounter);
- Either<GroupData, TitanOperationStatus> updateNode = titanGenericDao .updateNode(groupData, GroupData.class);
- if( updateNode.isRight() ){
- ret = updateNode.right().value();
- }
- }
-
- }
- return ret;
- }
-
- public Either<PropertyValueData, TitanOperationStatus> addPropertyToGroup(GroupData groupData,
- GroupProperty groupProperty, PropertyDefinition prop, Integer index) {
-
- if (prop == null) {
- return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT);
- }
-
- String propertyId = prop.getUniqueId();
- Either<PropertyData, TitanOperationStatus> findPropertyDefRes = titanGenericDao
- .getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Property), propertyId, PropertyData.class);
-
- if (findPropertyDefRes.isRight()) {
- TitanOperationStatus status = findPropertyDefRes.right().value();
- if (status == TitanOperationStatus.NOT_FOUND) {
- status = TitanOperationStatus.INVALID_ID;
- }
- return Either.right(status);
- }
-
- PropertyData propertyData = findPropertyDefRes.left().value();
-
- PropertyDataDefinition propDataDef = propertyData.getPropertyDataDefinition();
- String propertyType = propDataDef.getType();
- String value = groupProperty.getValue();
-
- Either<String, TitanOperationStatus> checkInnerType = propertyOperation.checkInnerType(propDataDef);
- if (checkInnerType.isRight()) {
- TitanOperationStatus status = checkInnerType.right().value();
- return Either.right(status);
- }
-
- String innerType = checkInnerType.left().value();
-
- Either<Map<String, DataTypeDefinition>, TitanOperationStatus> allDataTypes = dataTypeCache.getAll();
- if (allDataTypes.isRight()) {
- TitanOperationStatus status = allDataTypes.right().value();
- BeEcompErrorManager.getInstance().logInternalFlowError("AddPropertyToGroup", "Failed to add property to group. Status is " + status, ErrorSeverity.ERROR);
- return Either.right(status);
-
- }
-
- log.debug("Before validateAndUpdatePropertyValue");
- Either<Object, Boolean> isValid = propertyOperation.validateAndUpdatePropertyValue(propertyType, value, innerType, allDataTypes.left().value());
- log.debug("After validateAndUpdatePropertyValue. isValid = {}", isValid);
-
- String newValue = value;
- if (isValid.isRight()) {
- Boolean res = isValid.right().value();
- if (res == false) {
- return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT);
- }
- } else {
- Object object = isValid.left().value();
- if (object != null) {
- newValue = object.toString();
- }
- }
-
- String uniqueId = UniqueIdBuilder.buildGroupPropertyValueUid((String) groupData.getUniqueId(), index);
- PropertyValueData propertyValueData = new PropertyValueData();
- propertyValueData.setUniqueId(uniqueId);
- propertyValueData.setValue(newValue);
-
- log.debug("Before adding property value to graph {}", propertyValueData);
- Either<PropertyValueData, TitanOperationStatus> createNodeResult = titanGenericDao.createNode(propertyValueData, PropertyValueData.class);
- log.debug("After adding property value to graph {}", propertyValueData);
-
- if (createNodeResult.isRight()) {
- TitanOperationStatus operationStatus = createNodeResult.right().value();
- return Either.right(operationStatus);
- }
-
- Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(propertyValueData, propertyData, GraphEdgeLabels.PROPERTY_IMPL, null);
-
- if (createRelResult.isRight()) {
- TitanOperationStatus operationStatus = createRelResult.right().value();
- String description = "Failed to associate property value " + uniqueId + " to property " + propertyId + " in graph. status is " + operationStatus;
- BeEcompErrorManager.getInstance().logInternalFlowError(ADDING_GROUP, description, ErrorSeverity.ERROR);
- return Either.right(operationStatus);
- }
-
- createRelResult = titanGenericDao.createRelation(groupData, propertyValueData, GraphEdgeLabels.PROPERTY_VALUE, null);
-
- if (createRelResult.isRight()) {
- TitanOperationStatus operationStatus = createNodeResult.right().value();
- String description = "Failed to associate group " + groupData.getGroupDataDefinition().getName() + " to property value " + uniqueId + " in graph. Status is " + operationStatus;
- BeEcompErrorManager.getInstance().logInternalFlowError(ADDING_GROUP, description, ErrorSeverity.ERROR);
- return Either.right(operationStatus);
- }
-
- return Either.left(createNodeResult.left().value());
- }
-
- private Either<GraphRelation, TitanOperationStatus> associateGroupToComponent(GroupData groupData, NodeTypeEnum nodeTypeEnum, String componentId) {
- UniqueIdData componentIdData = new UniqueIdData(nodeTypeEnum, componentId);
-
- log.debug("Before associating component {} to group {}", componentId, groupData);
- Map<String, Object> props = new HashMap<String, Object>();
- props.put(GraphPropertiesDictionary.NAME.getProperty(), groupData.getGroupDataDefinition().getName());
- Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(componentIdData, groupData, GraphEdgeLabels.GROUP, props);
- log.debug("After associating component {} to group {}. status is {}", componentId, groupData, createRelResult);
- if (createRelResult.isRight()) {
- TitanOperationStatus operationStatus = createRelResult.right().value();
- log.debug("Failed to associate component {} to group {} in graph. Status is {}", componentId, groupData, operationStatus);
- return Either.right(operationStatus);
- }
-
- return Either.left(createRelResult.left().value());
- }
-
- private Either<GraphRelation, TitanOperationStatus> associateGroupToGroupType(GroupData groupData, String groupTypeUid) {
-
- UniqueIdData groupTypeIdData = new UniqueIdData(NodeTypeEnum.GroupType, groupTypeUid);
-
- log.debug("Before associating {} to group type {} (uid = {})", groupData, groupData.getGroupDataDefinition().getType(), groupTypeUid);
- Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(groupData, groupTypeIdData, GraphEdgeLabels.TYPE_OF, null);
- log.debug("After associating {} to group type {} (uid = {}). Result is {}", groupData, groupData.getGroupDataDefinition().getType(), groupTypeUid, createRelResult);
- if (createRelResult.isRight()) {
- TitanOperationStatus operationStatus = createRelResult.right().value();
- return Either.right(operationStatus);
- }
- return createRelResult;
- }
-
- @Override
- public Either<GroupDefinition, StorageOperationStatus> addGroup(NodeTypeEnum nodeTypeEnum, String componentId, GroupDefinition groupDefinition) {
- return addGroup(nodeTypeEnum, componentId, groupDefinition, false);
- }
-
- @Override
- public Either<GroupDefinition, StorageOperationStatus> addGroup(NodeTypeEnum nodeTypeEnum, String componentId, GroupDefinition groupDefinition, boolean inTransaction) {
-
- Either<GroupDefinition, StorageOperationStatus> result = null;
- try {
- Either<GroupData, TitanOperationStatus> addGroupRes = addGroupToGraph(nodeTypeEnum, componentId, groupDefinition);
- if (addGroupRes.isRight()) {
- TitanOperationStatus status = addGroupRes.right().value();
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- } else {
-
- GroupData groupData = addGroupRes.left().value();
- String groupUid = groupData.getGroupDataDefinition().getUniqueId();
- result = this.getGroup(groupUid, true);
-
- }
-
- return result;
-
- } finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- log.debug("Going to execute rollback on graph. Failed to add group {} to {}", groupDefinition.getName(), nodeTypeEnum.toString());
- titanGenericDao.rollback();
- } else {
- log.debug("Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
- }
-
private GroupDefinition convertGroupDataToGroupDefinition(GroupData groupData) {
GroupDefinition newGroupDefinition = new GroupDefinition(groupData.getGroupDataDefinition());
return newGroupDefinition;
}
- public Either<GroupDefinition, StorageOperationStatus> getGroup(String uniqueId) {
- return getGroup(uniqueId, false);
- }
-
- @Override
- public Either<GroupDefinition, StorageOperationStatus> getGroup(String uniqueId, boolean inTransaction) {
-
- Either<GroupDefinition, StorageOperationStatus> result = null;
-
- try {
-
- Either<GroupDefinition, TitanOperationStatus> groupFromGraph = this.getGroupFromGraph(uniqueId);
-
- if (groupFromGraph.isRight()) {
- TitanOperationStatus status = groupFromGraph.right().value();
- log.debug("Failed to retrieve group {} from graph. Status is {}", uniqueId, status);
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- } else {
- GroupDefinition groupDefinition = groupFromGraph.left().value();
- result = Either.left(groupDefinition);
- }
-
- return result;
-
- } finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- log.debug("Going to execute rollback on graph.");
- BeEcompErrorManager.getInstance().logBeExecuteRollbackError("Rollback on graph");
- titanGenericDao.rollback();
- } else {
- log.debug("Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
-
- }
-
- @Override
- public Either<GroupDefinition, TitanOperationStatus> getGroupFromGraph(String uniqueId) {
-
- return getGroupFromGraph(uniqueId, false, false, false);
-
- }
-
/**
* get members of group
*
* @param groupUniqueId
* @return
*/
- protected Either<Map<String, String>, TitanOperationStatus> getGroupMembers(String groupUniqueId) {
+ private Either<Map<String, String>, TitanOperationStatus> getGroupMembers(String groupUniqueId) {
Either<Map<String, String>, TitanOperationStatus> result = null;
@@ -711,7 +128,7 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation
return result;
}
- public Either<GroupTypeDefinition, TitanOperationStatus> getGroupTypeOfGroup(String groupUniqueId) {
+ private Either<GroupTypeDefinition, TitanOperationStatus> getGroupTypeOfGroup(String groupUniqueId) {
Either<ImmutablePair<GroupTypeData, GraphEdge>, TitanOperationStatus> groupTypeRes = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Group), groupUniqueId, GraphEdgeLabels.TYPE_OF, NodeTypeEnum.GroupType,
GroupTypeData.class);
@@ -726,9 +143,7 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation
GroupTypeData groupTypeData = groupTypeRes.left().value().getKey();
- Either<GroupTypeDefinition, TitanOperationStatus> groupTypeByUid = groupTypeOperation.getGroupTypeByUid(groupTypeData.getGroupTypeDataDefinition().getUniqueId());
-
- return groupTypeByUid;
+ return groupTypeOperation.getGroupTypeByUid(groupTypeData.getGroupTypeDataDefinition().getUniqueId());
}
@@ -740,7 +155,7 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation
* @param groupUid
* @return
*/
- public Either<List<GroupProperty>, TitanOperationStatus> getGroupProperties(String groupUid) {
+ private Either<List<GroupProperty>, TitanOperationStatus> getGroupProperties(String groupUid) {
List<GroupProperty> groupPropertiesList = new ArrayList<>();
@@ -824,466 +239,6 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation
return Either.left(groupPropertiesList);
}
- public Either<List<GroupDefinition>, TitanOperationStatus> getAllGroupsFromGraph(String componentId, NodeTypeEnum componentTypeEnum) {
-
- return getAllGroupsFromGraph(componentId, componentTypeEnum, false, false, false);
-
- }
-
- @Override
- public Either<List<GroupDefinition>, StorageOperationStatus> getAllGroups(String componentId, NodeTypeEnum compTypeEnum, boolean inTransaction) {
-
- Either<List<GroupDefinition>, StorageOperationStatus> result = null;
-
- try {
-
- Either<List<GroupDefinition>, TitanOperationStatus> allGroups = this.getAllGroupsFromGraph(componentId, compTypeEnum);
-
- if (allGroups.isRight()) {
- TitanOperationStatus status = allGroups.right().value();
- log.debug("Failed to retrieve all groups of component {} from graph. Status is {}", componentId, status);
- if (status == TitanOperationStatus.NOT_FOUND) {
- status = TitanOperationStatus.OK;
- }
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- } else {
- List<GroupDefinition> groupsDefinition = allGroups.left().value();
- result = Either.left(groupsDefinition);
- }
-
- return result;
-
- } finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- log.debug("Going to execute rollback on graph.");
- BeEcompErrorManager.getInstance().logBeExecuteRollbackError("Rollback on graph");
- titanGenericDao.rollback();
- } else {
- log.debug("Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
-
- }
-
- @Override
- public Either<List<GroupDefinition>, StorageOperationStatus> getAllGroups(String componentId, NodeTypeEnum compTypeEnum) {
- return getAllGroups(componentId, compTypeEnum, false);
- }
-
- public Either<GroupData, TitanOperationStatus> deleteGroupFromGraph(String groupUniqueId) {
-
- Either<GroupDefinition, TitanOperationStatus> groupFromGraph = this.getGroupFromGraph(groupUniqueId);
- if (groupFromGraph.isRight()) {
- TitanOperationStatus status = groupFromGraph.right().value();
- log.debug("Cannot find group {} on graph. Status is {}", groupUniqueId, status);
- return Either.right(status);
- }
-
- GroupDefinition groupDefinition = groupFromGraph.left().value();
- // 1. delete all properties values nodes
- List<GroupProperty> properties = groupDefinition.convertToGroupProperties();
- if (properties != null) {
- for (GroupProperty groupProperty : properties) {
- String propValueUniqueId = groupProperty.getValueUniqueUid();
-
- if (propValueUniqueId != null) {
- UniqueIdData uniqueIdData = new UniqueIdData(NodeTypeEnum.PropertyValue, propValueUniqueId);
- Either<PropertyValueData, TitanOperationStatus> deleteNode = titanGenericDao.deleteNode(uniqueIdData, PropertyValueData.class);
- if (deleteNode.isRight()) {
- TitanOperationStatus status = groupFromGraph.right().value();
- log.debug("Failed to delete property {} under group {} {} on graph. Status is {}", propValueUniqueId, groupDefinition.getName(), groupUniqueId, status.name());
- BeEcompErrorManager.getInstance().logBeFailedDeleteNodeError(DELETING_GROUP, propValueUniqueId, status.name());
- return Either.right(status);
- } else {
- log.trace("Property {} was deleted from group {}" ,propValueUniqueId, groupDefinition.getName());
- }
- }
- }
- }
-
- // 2. delete the group node
- UniqueIdData uniqueIdData = new UniqueIdData(NodeTypeEnum.Group, groupUniqueId);
- Either<GroupData, TitanOperationStatus> deleteNode = titanGenericDao.deleteNode(uniqueIdData, GroupData.class);
- if (deleteNode.isRight()) {
- TitanOperationStatus status = groupFromGraph.right().value();
- log.debug("Failed to delete group {} with uid {} on graph. Status is {}", groupDefinition.getName(), groupUniqueId, status.name());
- BeEcompErrorManager.getInstance().logBeFailedDeleteNodeError(DELETING_GROUP, groupUniqueId, status.name());
- return Either.right(status);
- } else {
- log.trace("Group {} was deleted from group", groupUniqueId);
- }
-
- GroupData groupData = deleteNode.left().value();
- return Either.left(groupData);
- }
-
- public Either<GroupDefinition, StorageOperationStatus> deleteGroup(String groupUniqueId) {
- return deleteGroup(groupUniqueId, false);
- }
-
- public Either<GroupDefinition, StorageOperationStatus> deleteGroup(String groupUniqueId, boolean inTransaction) {
-
- Either<GroupDefinition, StorageOperationStatus> result = null;
-
- try {
-
- Either<GroupData, TitanOperationStatus> deleteGroup = this.deleteGroupFromGraph(groupUniqueId);
-
- if (deleteGroup.isRight()) {
- TitanOperationStatus status = deleteGroup.right().value();
- log.debug("Failed to delete group {} from graph. Status is ", groupUniqueId, status.name());
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- } else {
- GroupData groupData = deleteGroup.left().value();
- GroupDefinition groupDefinition = convertGroupDataToGroupDefinition(groupData);
- result = Either.left(groupDefinition);
- }
-
- return result;
-
- } finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- log.debug("Going to execute rollback on graph.");
- BeEcompErrorManager.getInstance().logBeExecuteRollbackError("Rollback on graph");
- titanGenericDao.rollback();
- } else {
- log.debug("Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
-
- }
-
- @Override
- public Either<List<GroupDefinition>, TitanOperationStatus> deleteAllGroupsFromGraph(String componentId, NodeTypeEnum componentTypeEnum) {
-
- Either<List<ImmutablePair<GroupData, GraphEdge>>, TitanOperationStatus> childrenNodes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(componentTypeEnum), componentId, GraphEdgeLabels.GROUP, NodeTypeEnum.Group,
- GroupData.class);
-
- if (childrenNodes.isRight()) {
- TitanOperationStatus status = childrenNodes.right().value();
- if (status != TitanOperationStatus.NOT_FOUND) {
- BeEcompErrorManager.getInstance().logBeFailedFindAllNodesError(DELETING_ALL_GROUPS, NodeTypeEnum.Group.name(), componentId, status.name());
- }
- return Either.right(status);
- }
-
- List<GroupDefinition> result = new ArrayList<>();
-
- List<ImmutablePair<GroupData, GraphEdge>> list = childrenNodes.left().value();
- if (list != null) {
- for (ImmutablePair<GroupData, GraphEdge> pair : list) {
- String uniqueId = pair.left.getGroupDataDefinition().getUniqueId();
- Either<GroupData, TitanOperationStatus> deleteGroupFromGraph = deleteGroupFromGraph(uniqueId);
- if (deleteGroupFromGraph.isRight()) {
- TitanOperationStatus status = deleteGroupFromGraph.right().value();
- BeEcompErrorManager.getInstance().logBeFailedDeleteNodeError(DELETING_ALL_GROUPS, uniqueId, status.name());
- return Either.right(status);
- }
- GroupData groupData = deleteGroupFromGraph.left().value();
- GroupDefinition groupDefinition = convertGroupDataToGroupDefinition(groupData);
- result.add(groupDefinition);
- }
- }
-
- return Either.left(result);
- }
-
- @Override
- public Either<List<GroupDefinition>, StorageOperationStatus> deleteAllGroups(String componentId, NodeTypeEnum compTypeEnum, boolean inTransaction) {
-
- Either<List<GroupDefinition>, StorageOperationStatus> result = null;
-
- try {
-
- Either<List<GroupDefinition>, TitanOperationStatus> allGroups = this.deleteAllGroupsFromGraph(componentId, compTypeEnum);
-
- if (allGroups.isRight()) {
- TitanOperationStatus status = allGroups.right().value();
- log.debug("Failed to delete all groups of component {} from graph. Status is {}", componentId, status);
- if (status == TitanOperationStatus.NOT_FOUND) {
- status = TitanOperationStatus.OK;
- }
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- } else {
- List<GroupDefinition> groupsDefinition = allGroups.left().value();
- result = Either.left(groupsDefinition);
- }
-
- return result;
-
- } finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- log.debug("Going to execute rollback on graph.");
- BeEcompErrorManager.getInstance().logBeExecuteRollbackError("Rollback on graph");
- titanGenericDao.rollback();
- } else {
- log.debug("Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
-
- }
-
- @Override
- public Either<List<GroupDefinition>, StorageOperationStatus> deleteAllGroups(String componentId, NodeTypeEnum compTypeEnum) {
- return deleteAllGroups(componentId, compTypeEnum, false);
- }
-
- public Either<List<GroupDefinition>, StorageOperationStatus> prepareGroupsForCloning(org.openecomp.sdc.be.model.Component origResource, ImmutablePair<List<ComponentInstance>, Map<String, String>> cloneInstances) {
-
- List<GroupDefinition> groupsToCreate = new ArrayList<>();
- Either<List<GroupDefinition>, StorageOperationStatus> result = Either.left(groupsToCreate);
-
- List<GroupDefinition> groups = origResource.getGroups();
-
- if (groups != null) {
- // keep typeUid
- // keep artifacts uids
- // remove properties without valueUniqueId
- for (GroupDefinition groupDefinition : groups) {
-
- GroupDefinition gdToCreate = new GroupDefinition(groupDefinition);
- gdToCreate.setUniqueId(null);
- gdToCreate.setMembers(null);
-
- List<GroupProperty> properties = groupDefinition.convertToGroupProperties();
- if (properties != null) {
- // Take properties which was updated in the
- // group(getValueUniqueUid != null),
- // Then set null instead of the value(prepare for the
- // creation).
- List<GroupProperty> propertiesToUpdate = properties.stream().filter(p -> p.getValueUniqueUid() != null).map(p -> {
- p.setValueUniqueUid(null);
- return p;
- }).collect(Collectors.toList());
-
- gdToCreate.convertFromGroupProperties(propertiesToUpdate);
-
- }
-
- Map<String, String> members = groupDefinition.getMembers();
- if (cloneInstances != null) {
- List<ComponentInstance> createdInstances = cloneInstances.left;
- Map<String, String> oldCompUidToNew = cloneInstances.right;
- if (members != null && createdInstances != null) {
-
- Map<String, String> compInstIdToName = createdInstances.stream().collect(Collectors.toMap(p -> p.getUniqueId(), p -> p.getName()));
-
- Map<String, String> membersToCreate = new HashMap<>();
-
- for (String oldCompInstId : members.values()) {
- String newCompInstUid = oldCompUidToNew.get(oldCompInstId);
- if (newCompInstUid == null) {
- result = Either.right(StorageOperationStatus.MATCH_NOT_FOUND);
- return result;
- }
- String newCompInstName = compInstIdToName.get(newCompInstUid);
- membersToCreate.put(newCompInstName, newCompInstUid);
- }
-
- gdToCreate.setMembers(membersToCreate);
- }
- }
-
- log.debug("The group definition for creation is {}", gdToCreate);
-
- groupsToCreate.add(gdToCreate);
- }
-
- }
-
- return result;
- }
-
- @Override
- public Either<List<GroupDefinition>, StorageOperationStatus> addGroups(NodeTypeEnum nodeTypeEnum, String componentId, List<GroupDefinition> groups, boolean inTransaction) {
-
- List<GroupDefinition> createdGroups = new ArrayList<>();
-
- Either<List<GroupDefinition>, StorageOperationStatus> result = null;
-
- try {
-
- if (groups != null) {
- for (GroupDefinition groupDefinition : groups) {
- Either<GroupDefinition, StorageOperationStatus> addGroup = this.addGroup(nodeTypeEnum, componentId, groupDefinition, true);
- if (addGroup.isRight()) {
- StorageOperationStatus status = addGroup.right().value();
- result = Either.right(status);
- return result;
- }
-
- createdGroups.add(addGroup.left().value());
- }
- }
-
- result = Either.left(createdGroups);
- return result;
-
- } finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- log.debug("Going to execute rollback on graph.");
- BeEcompErrorManager.getInstance().logBeExecuteRollbackError("Rollback on graph");
- titanGenericDao.rollback();
- } else {
- log.debug("Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
- }
-
- @Override
- public Either<List<String>, TitanOperationStatus> getAssociatedGroupsToComponentInstanceFromGraph(String componentInstanceId) {
-
- List<String> groups = new ArrayList<>();
- Either<List<String>, TitanOperationStatus> result = Either.left(groups);
-
- Either<List<ImmutablePair<GroupData, GraphEdge>>, TitanOperationStatus> parentNodes = titanGenericDao.getParentNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), componentInstanceId, GraphEdgeLabels.GROUP_MEMBER,
- NodeTypeEnum.Group, GroupData.class);
-
- if (parentNodes.isRight()) {
- TitanOperationStatus status = parentNodes.right().value();
- if (status != TitanOperationStatus.NOT_FOUND) {
- BeEcompErrorManager.getInstance().logBeFailedFindParentError("FetchGroupMembers", componentInstanceId, status.name());
- }
- return Either.right(status);
- }
-
- List<ImmutablePair<GroupData, GraphEdge>> fetchedGroups = parentNodes.left().value();
- if (fetchedGroups != null) {
- List<String> list = fetchedGroups.stream().map(p -> p.left.getGroupDataDefinition().getUniqueId()).collect(Collectors.toList());
- groups.addAll(list);
- }
-
- return result;
-
- }
-
- @Override
- public Either<List<String>, StorageOperationStatus> getAssociatedGroupsToComponentInstance(String componentInstanceId, boolean inTransaction) {
-
- Either<List<String>, StorageOperationStatus> result = null;
-
- try {
-
- Either<List<String>, TitanOperationStatus> groups = this.getAssociatedGroupsToComponentInstanceFromGraph(componentInstanceId);
-
- if (groups.isRight()) {
- TitanOperationStatus status = groups.right().value();
- if (status == TitanOperationStatus.NOT_FOUND) {
- status = TitanOperationStatus.OK;
- }
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
-
- List<String> list = groups.left().value();
-
- return Either.left(list);
-
- } finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- log.debug("Going to execute rollback on graph.");
- BeEcompErrorManager.getInstance().logBeExecuteRollbackError("Rollback on graph");
- titanGenericDao.rollback();
- } else {
- log.debug("Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
-
- }
-
- @Override
- public Either<List<String>, StorageOperationStatus> getAssociatedGroupsToComponentInstance(String componentInstanceId) {
- return getAssociatedGroupsToComponentInstance(componentInstanceId, false);
- }
-
- @Override
- public Either<List<GraphRelation>, TitanOperationStatus> associateGroupsToComponentInstanceOnGraph(List<String> groups, String componentInstanceId, String compInstName) {
-
- List<GraphRelation> relations = new ArrayList<>();
- Either<List<GraphRelation>, TitanOperationStatus> result = Either.left(relations);
-
- if (groups != null && false == groups.isEmpty()) {
-
- UniqueIdData compInstData = new UniqueIdData(NodeTypeEnum.ResourceInstance, componentInstanceId);
-
- for (String groupId : groups) {
- UniqueIdData groupData = new UniqueIdData(NodeTypeEnum.Group, groupId);
-
- Map<String, Object> props = new HashMap<String, Object>();
- props.put(GraphPropertiesDictionary.NAME.getProperty(), compInstName);
- Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(groupData, compInstData, GraphEdgeLabels.GROUP_MEMBER, props);
- if (createRelation.isRight()) {
- TitanOperationStatus status = createRelation.right().value();
- String description = "Failed to associate group " + groupData.getUniqueId() + " to component instance " + compInstName + " in graph. Status is " + status;
- BeEcompErrorManager.getInstance().logInternalFlowError(ASSOCIATING_GROUP_TO_COMP_INST, description, ErrorSeverity.ERROR);
- result = Either.right(status);
- break;
- }
- GraphRelation graphRelation = createRelation.left().value();
- relations.add(graphRelation);
- }
- } else {
- result = Either.right(TitanOperationStatus.OK);
- }
-
- return result;
- }
-
- public StorageOperationStatus associateGroupsToComponentInstance(List<String> groups, String componentInstanceId, String compInstName) {
-
- return associateGroupsToComponentInstance(groups, componentInstanceId, compInstName, false);
- }
-
- @Override
- public StorageOperationStatus associateGroupsToComponentInstance(List<String> groups, String componentInstanceId, String compInstName, boolean inTransaction) {
-
- StorageOperationStatus result = null;
-
- try {
- Either<List<GraphRelation>, TitanOperationStatus> either = this.associateGroupsToComponentInstanceOnGraph(groups, componentInstanceId, compInstName);
-
- if (either.isRight()) {
- TitanOperationStatus status = either.right().value();
- if (status == TitanOperationStatus.NOT_FOUND) {
- status = TitanOperationStatus.OK;
- }
- result = DaoStatusConverter.convertTitanStatusToStorageStatus(status);
- return result;
- }
-
- result = StorageOperationStatus.OK;
- return result;
-
- } finally {
- if (false == inTransaction) {
- if (result == null || result != StorageOperationStatus.OK) {
- log.debug("Going to execute rollback on graph.");
- BeEcompErrorManager.getInstance().logBeExecuteRollbackError("Rollback on graph");
- titanGenericDao.rollback();
- } else {
- log.debug("Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
-
- }
-
@Override
public Either<List<GraphRelation>, TitanOperationStatus> dissociateAllGroupsFromArtifactOnGraph(String componentId, NodeTypeEnum componentTypeEnum, String artifactId) {
@@ -1479,49 +434,7 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation
return Either.left(groups);
}
- @Override
- public StorageOperationStatus dissociateAllGroupsFromArtifact(String componentId, NodeTypeEnum componentTypeEnum, String artifactId, boolean inTransaction) {
-
- StorageOperationStatus result = null;
-
- try {
- Either<List<GraphRelation>, TitanOperationStatus> either = this.dissociateAllGroupsFromArtifactOnGraph(componentId, componentTypeEnum, artifactId);
-
- if (either.isRight()) {
- TitanOperationStatus status = either.right().value();
- if (status == TitanOperationStatus.NOT_FOUND) {
- status = TitanOperationStatus.OK;
- }
- result = DaoStatusConverter.convertTitanStatusToStorageStatus(status);
- return result;
- }
-
- result = StorageOperationStatus.OK;
- return result;
-
- } finally {
- if (false == inTransaction) {
- if (result == null || result != StorageOperationStatus.OK) {
- log.debug("Going to execute rollback on graph.");
- BeEcompErrorManager.getInstance().logBeExecuteRollbackError("Rollback on graph");
- titanGenericDao.rollback();
- } else {
- log.debug("Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
-
- }
-
- @Override
- public StorageOperationStatus dissociateAllGroupsFromArtifact(String componentId, NodeTypeEnum componentTypeEnum, String artifactId) {
-
- return dissociateAllGroupsFromArtifact(componentId, componentTypeEnum, artifactId, false);
- }
-
- @Override
- public TitanOperationStatus dissociateAndAssociateGroupsFromArtifactOnGraph(String componentId, NodeTypeEnum componentTypeEnum, String oldArtifactId, ArtifactData newArtifact) {
+ private TitanOperationStatus dissociateAndAssociateGroupsFromArtifactOnGraph(String componentId, NodeTypeEnum componentTypeEnum, String oldArtifactId, ArtifactData newArtifact) {
Either<List<GroupDefinition>, TitanOperationStatus> allGroupsFromGraph = getAllGroupsFromGraph(componentId, componentTypeEnum, true, true, false);
if (allGroupsFromGraph.isRight()) {
@@ -1602,12 +515,6 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation
}
}
}
-
- }
-
- @Override
- public StorageOperationStatus dissociateAndAssociateGroupsFromArtifact(String componentId, NodeTypeEnum componentTypeEnum, String oldArtifactId, ArtifactData newArtifact) {
- return dissociateAndAssociateGroupsFromArtifact(componentId, componentTypeEnum, oldArtifactId, newArtifact, false);
}
private Either<List<ImmutablePair<String, String>>, TitanOperationStatus> getGroupArtifactsPairs(String groupUniqueId) {
@@ -1645,468 +552,6 @@ public class GroupOperation extends AbstractOperation implements IGroupOperation
}
- public Either<List<GroupDefinition>, TitanOperationStatus> updateGroupVersionOnGraph(List<String> groupsUniqueId) {
-
- if (groupsUniqueId != null) {
-
- List<GroupDefinition> groups = new ArrayList<>();
- for (String groupUid : groupsUniqueId) {
- Either<GroupDefinition, TitanOperationStatus> either = updateGroupVersionOnGraph(groupUid);
- if (either.isRight()) {
- log.debug("Failed to update version of group {}", groupUid);
- return Either.right(either.right().value());
- }
- groups.add(either.left().value());
- }
- return Either.left(groups);
- }
-
- return Either.right(TitanOperationStatus.OK);
-
- }
-
- /**
- * update the group version of a given group. It also creates a new UUID.
- *
- * @param groupUniqueId
- * @return
- */
- public Either<GroupDefinition, TitanOperationStatus> updateGroupVersionOnGraph(String groupUniqueId) {
-
- Either<GroupDefinition, TitanOperationStatus> groupFromGraph = this.getGroupFromGraph(groupUniqueId, false, false, false);
-
- if (groupFromGraph.isRight()) {
- TitanOperationStatus status = groupFromGraph.right().value();
- return Either.right(status);
- } else {
- GroupDefinition groupDefinition = groupFromGraph.left().value();
- String version = groupDefinition.getVersion();
- String newVersion = increaseMajorVersion(version);
- Integer pvCounter = groupDefinition.getPropertyValueCounter();
-
- GroupData groupData = new GroupData();
- groupData.getGroupDataDefinition().setUniqueId(groupUniqueId);
- groupData.getGroupDataDefinition().setVersion(newVersion);
- groupData.getGroupDataDefinition().setPropertyValueCounter(pvCounter);
-
- String groupUUID = UniqueIdBuilder.generateUUID();
- groupData.getGroupDataDefinition().setGroupUUID(groupUUID);
-
- Either<GroupData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(groupData, GroupData.class);
- if (updateNode.isRight()) {
- return Either.right(updateNode.right().value());
- } else {
- groupFromGraph = this.getGroupFromGraph(groupUniqueId, false, false, false);
- return groupFromGraph;
- }
-
- }
- }
-
-
-
- /**
- * The version of the group is an integer. In order to support BC, we might get a version in a float format.
- *
- * @param version
- * @return
- */
- private String increaseMajorVersion(String version) {
-
- String[] versionParts = version.split(LifecycleOperation.VERSION_DELIMETER_REGEXP);
- Integer majorVersion = Integer.parseInt(versionParts[0]);
-
- majorVersion++;
-
- return String.valueOf(majorVersion);
-
- }
-
- public Either<GroupDefinition, TitanOperationStatus> associateArtifactsToGroupOnGraph(String groupId, List<String> artifactsId) {
-
- if (artifactsId == null || artifactsId.isEmpty()) {
- return Either.right(TitanOperationStatus.OK);
- }
-
- for (String artifactId : artifactsId) {
- Either<ArtifactData, TitanOperationStatus> findArtifactRes = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ArtifactRef), artifactId, ArtifactData.class);
- if (findArtifactRes.isRight()) {
- TitanOperationStatus status = findArtifactRes.right().value();
- if (status == TitanOperationStatus.NOT_FOUND) {
- status = TitanOperationStatus.INVALID_ID;
- }
- String description = "Failed to associate group " + groupId + " to artifact " + artifactId + " in graph. Status is " + status;
- BeEcompErrorManager.getInstance().logInternalFlowError(ADDING_GROUP, description, ErrorSeverity.ERROR);
- return Either.right(status);
- }
-
- Map<String, Object> props = new HashMap<String, Object>();
- props.put(GraphPropertiesDictionary.NAME.getProperty(), findArtifactRes.left().value().getLabel());
-
- GraphNode groupData = new UniqueIdData(NodeTypeEnum.Group, groupId);
- Either<GraphRelation, TitanOperationStatus> addArtifactsRefResult = titanGenericDao.createRelation(groupData, findArtifactRes.left().value(), GraphEdgeLabels.GROUP_ARTIFACT_REF, props);
-
- if (addArtifactsRefResult.isRight()) {
- TitanOperationStatus status = addArtifactsRefResult.right().value();
- String description = "Failed to associate group " + groupData.getUniqueId() + " to artifact " + artifactId + " in graph. Status is " + status;
- BeEcompErrorManager.getInstance().logInternalFlowError(ADDING_GROUP, description, ErrorSeverity.ERROR);
- return Either.right(status);
- }
- }
-
- Either<GroupDefinition, TitanOperationStatus> groupFromGraph = this.getGroupFromGraph(groupId, true, true, false);
-
- return groupFromGraph;
- }
-
- public Either<GroupDefinition, TitanOperationStatus> associateMembersToGroupOnGraph(String groupId, Map<String, String> members) {
-
- if (members != null && false == members.isEmpty()) {
- Either<GraphRelation, TitanOperationStatus> addMembersRefResult = null;
- for (Entry<String, String> member : members.entrySet()) {
- Either<ComponentInstanceData, TitanOperationStatus> findComponentInstanceRes = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), member.getValue(), ComponentInstanceData.class);
- if (findComponentInstanceRes.isRight()) {
-
- TitanOperationStatus status = findComponentInstanceRes.right().value();
- if (status == TitanOperationStatus.NOT_FOUND) {
- status = TitanOperationStatus.INVALID_ID;
- }
- String description = "Failed to find to find component instance group " + member.getValue() + " in graph. Status is " + status;
- BeEcompErrorManager.getInstance().logInternalFlowError(ADDING_GROUP, description, ErrorSeverity.ERROR);
- return Either.right(status);
- }
- Map<String, Object> props = new HashMap<String, Object>();
- props.put(GraphPropertiesDictionary.NAME.getProperty(), member.getKey());
- GraphNode groupData = new UniqueIdData(NodeTypeEnum.Group, groupId);
- addMembersRefResult = titanGenericDao.createRelation(groupData, findComponentInstanceRes.left().value(), GraphEdgeLabels.GROUP_MEMBER, props);
- if (addMembersRefResult.isRight()) {
- TitanOperationStatus status = addMembersRefResult.right().value();
- String description = "Failed to associate group " + groupData.getUniqueId() + " to component instance " + member.getValue() + " in graph. Status is " + status;
- BeEcompErrorManager.getInstance().logInternalFlowError(ADDING_GROUP, description, ErrorSeverity.ERROR);
- return Either.right(status);
- }
- }
- }
-
- Either<GroupDefinition, TitanOperationStatus> groupFromGraph = this.getGroupFromGraph(groupId, true, false, true);
-
- return groupFromGraph;
- }
-
- public Either<GroupDefinition, TitanOperationStatus> dissociateArtifactsFromGroupOnGraph(String groupId, List<String> artifactsId) {
-
- if (artifactsId == null || artifactsId.isEmpty()) {
- return Either.right(TitanOperationStatus.OK);
- }
-
- UniqueIdData groupData = new UniqueIdData(NodeTypeEnum.Group, groupId);
- for (String artifactId : artifactsId) {
-
- UniqueIdData artifactData = new UniqueIdData(NodeTypeEnum.Group, artifactId);
- Either<GraphRelation, TitanOperationStatus> deleteRelation = titanGenericDao.deleteRelation(groupData, artifactData, GraphEdgeLabels.GROUP_ARTIFACT_REF);
- log.trace("After dissociate group {} from artifact {}" ,groupId, artifactId);
-
- if (deleteRelation.isRight()) {
- TitanOperationStatus status = deleteRelation.right().value();
- if (status == TitanOperationStatus.NOT_FOUND) {
- status = TitanOperationStatus.INVALID_ID;
- }
- String description = "Failed to diassociate group " + groupId + " from artifact " + artifactId + " in graph. Status is " + status;
- BeEcompErrorManager.getInstance().logInternalFlowError(ADDING_GROUP, description, ErrorSeverity.ERROR);
- return Either.right(status);
- }
-
- }
-
- Either<GroupDefinition, TitanOperationStatus> groupFromGraph = this.getGroupFromGraph(groupId, true, true, false);
-
- return groupFromGraph;
-
- }
-
- public Either<GroupDefinition, TitanOperationStatus> dissociateMembersFromGroupOnGraph(String groupId, Map<String, String> members) {
-
- if (members == null || members.isEmpty()) {
- return Either.right(TitanOperationStatus.OK);
- }
-
- UniqueIdData groupData = new UniqueIdData(NodeTypeEnum.Group, groupId);
- for (Entry<String, String> member : members.entrySet()) {
-
- UniqueIdData artifactData = new UniqueIdData(NodeTypeEnum.Group, member.getValue());
- Either<GraphRelation, TitanOperationStatus> deleteRelation = titanGenericDao.deleteRelation(groupData, artifactData, GraphEdgeLabels.GROUP_MEMBER);
- log.trace("After dissociate group {} from members {}" ,groupId, member.getValue());
-
- if (deleteRelation.isRight()) {
- TitanOperationStatus status = deleteRelation.right().value();
- if (status == TitanOperationStatus.NOT_FOUND) {
- status = TitanOperationStatus.INVALID_ID;
- }
- String description = "Failed to diassociate group " + groupId + " from member " + member.getValue() + " in graph. Status is " + status;
- BeEcompErrorManager.getInstance().logInternalFlowError(ADDING_GROUP, description, ErrorSeverity.ERROR);
- return Either.right(status);
- }
-
- }
-
- Either<GroupDefinition, TitanOperationStatus> groupFromGraph = this.getGroupFromGraph(groupId, true, true, false);
-
- return groupFromGraph;
-
- }
-
- /**
- * dissociate artifacts from a group. It do not delete the artifacts !!!
- *
- * @param groupId
- * @param artifactsId
- * @param inTransaction
- * @return
- */
- public Either<GroupDefinition, StorageOperationStatus> dissociateArtifactsFromGroup(String groupId, List<String> artifactsId, boolean inTransaction) {
-
- Either<GroupDefinition, StorageOperationStatus> result = null;
-
- try {
- Either<GroupDefinition, TitanOperationStatus> titanRes = this.dissociateArtifactsFromGroupOnGraph(groupId, artifactsId);
-
- if (titanRes.isRight()) {
- StorageOperationStatus storageOperationStatus = DaoStatusConverter.convertTitanStatusToStorageStatus(titanRes.right().value());
- result = Either.right(storageOperationStatus);
- return result;
- }
-
- result = Either.left(titanRes.left().value());
- return result;
-
- } finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- log.debug("Going to execute rollback on graph.");
- BeEcompErrorManager.getInstance().logBeExecuteRollbackError("Rollback on graph");
- titanGenericDao.rollback();
- } else {
- log.debug("Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
-
- }
-
- public Either<GroupDefinition, StorageOperationStatus> dissociateMembersFromGroup(String groupId, Map<String, String> members, boolean inTransaction) {
-
- Either<GroupDefinition, StorageOperationStatus> result = null;
-
- try {
- Either<GroupDefinition, TitanOperationStatus> titanRes = this.dissociateMembersFromGroupOnGraph(groupId, members);
-
- if (titanRes.isRight()) {
- StorageOperationStatus storageOperationStatus = DaoStatusConverter.convertTitanStatusToStorageStatus(titanRes.right().value());
- result = Either.right(storageOperationStatus);
- return result;
- }
-
- result = Either.left(titanRes.left().value());
- return result;
-
- } finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- log.debug("Going to execute rollback on graph.");
- BeEcompErrorManager.getInstance().logBeExecuteRollbackError("Rollback on graph");
- titanGenericDao.rollback();
- } else {
- log.debug("Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
-
- }
-
- /**
- * Associate artifacts to a given group
- *
- * @param groupId
- * @param artifactsId
- * @param inTransaction
- * @return
- */
- public Either<GroupDefinition, StorageOperationStatus> associateArtifactsToGroup(String groupId, List<String> artifactsId, boolean inTransaction) {
-
- Either<GroupDefinition, StorageOperationStatus> result = null;
-
- try {
-
- Either<GroupDefinition, TitanOperationStatus> titanRes = this.associateArtifactsToGroupOnGraph(groupId, artifactsId);
-
- if (titanRes.isRight()) {
- StorageOperationStatus status = DaoStatusConverter.convertTitanStatusToStorageStatus(titanRes.right().value());
- result = Either.right(status);
- }
-
- result = Either.left(titanRes.left().value());
- return result;
-
- } finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- log.debug("Going to execute rollback on graph.");
- BeEcompErrorManager.getInstance().logBeExecuteRollbackError("Rollback on graph");
- titanGenericDao.rollback();
- } else {
- log.debug("Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
-
- }
-
- /**
- * Associate artifacts to a given group
- *
- * @param groupId
- * @param artifactsId
- * @param inTransaction
- * @return
- */
- public Either<GroupDefinition, StorageOperationStatus> associateMembersToGroup(String groupId, Map<String, String> members, boolean inTransaction) {
-
- Either<GroupDefinition, StorageOperationStatus> result = null;
-
- try {
-
- Either<GroupDefinition, TitanOperationStatus> titanRes = this.associateMembersToGroupOnGraph(groupId, members);
-
- if (titanRes.isRight()) {
- StorageOperationStatus status = DaoStatusConverter.convertTitanStatusToStorageStatus(titanRes.right().value());
- result = Either.right(status);
- return result;
- }
-
- result = Either.left(titanRes.left().value());
- return result;
-
- } finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- log.debug("Going to execute rollback on graph.");
- BeEcompErrorManager.getInstance().logBeExecuteRollbackError("Rollback on graph");
- titanGenericDao.rollback();
- } else {
- log.debug("Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
-
- }
-
- public Either<List<GroupDefinition>, StorageOperationStatus> updateGroupVersion(List<String> groupsId, boolean inTransaction) {
-
- Either<List<GroupDefinition>, StorageOperationStatus> result = null;
-
- try {
- Either<List<GroupDefinition>, TitanOperationStatus> updateGroupVersionOnGraph = this.updateGroupVersionOnGraph(groupsId);
-
- if (updateGroupVersionOnGraph.isRight()) {
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(updateGroupVersionOnGraph.right().value()));
- return result;
- }
-
- result = Either.left(updateGroupVersionOnGraph.left().value());
- return result;
-
- } finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- log.debug("Going to execute rollback on graph.");
- BeEcompErrorManager.getInstance().logBeExecuteRollbackError("Rollback on graph");
- titanGenericDao.rollback();
- } else {
- log.debug("Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
-
- }
- /**
- * This method updates group name
- * @param groupToUpdateFromUniqueId
- * @param newName
- * @param inTransaction
- * @return
- */
- public Either<GroupDefinition, StorageOperationStatus> updateGroupName(String groupToUpdateFromUniqueId,
- String newName, boolean inTransaction) {
- Either<GroupDefinition, StorageOperationStatus> result = null;
-
- try {
- //Update Name
- Either<GroupDefinition, TitanOperationStatus> updateGroupNameOnGraph = updateGroupNameOnGraph(
- groupToUpdateFromUniqueId, newName);
-
- if (updateGroupNameOnGraph.isRight()) {
- result = Either.right(
- DaoStatusConverter.convertTitanStatusToStorageStatus(updateGroupNameOnGraph.right().value()));
- }
- else{
- result = Either.left(updateGroupNameOnGraph.left().value());
- }
- return result;
-
- } finally {
- handleTransactionCommitRollback(inTransaction, result);
- }
- }
- @Override
- public Either<GroupDefinition, StorageOperationStatus> updateGroupName(String groupToUpdateFromUniqueId,
- String newName, GroupDefinition groupToUpdateTo, boolean inTransaction) {
- Either<GroupDefinition, StorageOperationStatus> result = null;
-
- try {
- //Update Name
- result = updateGroupName(groupToUpdateFromUniqueId, newName, true);
- return result;
-
- } finally {
- handleTransactionCommitRollback(inTransaction, result);
- }
- }
-
- private Either<GroupDefinition, TitanOperationStatus> updateGroupNameOnGraph(String uniqueId, String newName) {
-
- Either<GroupDefinition, TitanOperationStatus> groupFromGraph = this.getGroupFromGraph(uniqueId, false, false, false);
-
- if (groupFromGraph.isRight()) {
- TitanOperationStatus status = groupFromGraph.right().value();
- return Either.right(status);
- } else {
- GroupDefinition groupDefinition = groupFromGraph.left().value();
- String version = groupDefinition.getVersion();
- String newVersion = increaseMajorVersion(version);
- Integer pvCounter = groupDefinition.getPropertyValueCounter();
-
- GroupData groupData = new GroupData();
- groupData.getGroupDataDefinition().setUniqueId(uniqueId);
- groupData.getGroupDataDefinition().setVersion(newVersion);
- groupData.getGroupDataDefinition().setName(newName);
- groupData.getGroupDataDefinition().setPropertyValueCounter(pvCounter);
-
- Either<GroupData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(groupData, GroupData.class);
- if (updateNode.isRight()) {
- return Either.right(updateNode.right().value());
- } else {
- groupFromGraph = this.getGroupFromGraph(uniqueId, false, false, false);
- return groupFromGraph;
- }
- }
- }
-
-
@Override
public StorageOperationStatus validateAndUpdatePropertyValue(GroupProperty property) {