summaryrefslogtreecommitdiffstats
path: root/catalog-model/src/main/java/org
diff options
context:
space:
mode:
Diffstat (limited to 'catalog-model/src/main/java/org')
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/cache/jobs/Job.java1
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/jsontitan/operations/GroupsOperation.java25
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IArtifactOperation.java32
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IAttributeOperation.java71
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/ICapabilityInstanceOperation.java130
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/ICapabilityOperation.java32
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IComponentInstanceOperation.java152
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IComponentOperation.java50
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IGroupInstanceOperation.java44
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IGroupOperation.java61
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IInputsOperation.java41
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IInterfaceLifecycleOperation.java20
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/ILifecycleOperation.java56
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IProductOperation.java46
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IPropertyOperation.java29
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IRequirementOperation.java75
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IResourceOperation.java141
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IServiceOperation.java78
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IUserAdminOperation.java7
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/ToscaDefinitionPathCalculator.java32
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/AllOperationsUtil.java56
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ArtifactOperation.java572
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/AttributeOperation.java461
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/CapabilityInstanceOperation.java1170
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/CapabilityOperation.java1038
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/CapabilityTypeOperation.java3
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ComponentInstanceOperation.java5495
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ComponentOperation.java2964
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/GraphLockOperation.java2
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/GroupInstanceOperation.java848
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/GroupOperation.java1565
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/InputsOperation.java1199
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/InterfaceLifecycleOperation.java198
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/LifecycleOperation.java1077
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ProductOperation.java957
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/PropertyOperation.java27
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/RequirementOperation.java1419
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ResourceOperation.java3040
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ServiceOperation.java1289
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ToscaDefinitionPathCalculatorImpl.java47
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/UserAdminOperation.java107
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/migration/MigrationMalformedDataLogger.java67
-rw-r--r--catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/utils/ComponentValidationUtils.java6
43 files changed, 77 insertions, 24653 deletions
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/cache/jobs/Job.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/cache/jobs/Job.java
index c1fb2e0a7f..198325b6b5 100644
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/cache/jobs/Job.java
+++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/cache/jobs/Job.java
@@ -26,7 +26,6 @@ import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
import org.openecomp.sdc.be.model.Component;
import org.openecomp.sdc.be.model.cache.DaoInfo;
-import org.openecomp.sdc.be.model.operations.api.IComponentOperation;
import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
import org.openecomp.sdc.be.resources.data.ComponentMetadataData;
import org.slf4j.Logger;
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/jsontitan/operations/GroupsOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/jsontitan/operations/GroupsOperation.java
index 5f7502e7ce..f7e4245492 100644
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/jsontitan/operations/GroupsOperation.java
+++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/jsontitan/operations/GroupsOperation.java
@@ -20,13 +20,7 @@
package org.openecomp.sdc.be.model.jsontitan.operations;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.stream.Collectors;
-
-import org.apache.tinkerpop.shaded.minlog.Log;
+import fj.data.Either;
import org.openecomp.sdc.be.dao.jsongraph.GraphVertex;
import org.openecomp.sdc.be.dao.jsongraph.types.EdgeLabelEnum;
import org.openecomp.sdc.be.dao.jsongraph.types.JsonParseFlagEnum;
@@ -34,11 +28,9 @@ import org.openecomp.sdc.be.dao.jsongraph.types.VertexTypeEnum;
import org.openecomp.sdc.be.dao.titan.TitanOperationStatus;
import org.openecomp.sdc.be.datatypes.elements.GroupDataDefinition;
import org.openecomp.sdc.be.datatypes.elements.GroupInstanceDataDefinition;
-import org.openecomp.sdc.be.datatypes.elements.MapPropertiesDataDefinition;
import org.openecomp.sdc.be.datatypes.elements.PropertyDataDefinition;
import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
import org.openecomp.sdc.be.datatypes.enums.JsonPresentationFields;
-import org.openecomp.sdc.be.datatypes.tosca.ToscaDataDefinition;
import org.openecomp.sdc.be.model.Component;
import org.openecomp.sdc.be.model.GroupDefinition;
import org.openecomp.sdc.be.model.GroupInstance;
@@ -48,20 +40,17 @@ import org.openecomp.sdc.be.model.User;
import org.openecomp.sdc.be.model.jsontitan.utils.ModelConverter;
import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
import org.openecomp.sdc.be.model.operations.impl.DaoStatusConverter;
-import org.openecomp.sdc.be.model.operations.impl.LifecycleOperation;
import org.openecomp.sdc.be.model.operations.impl.UniqueIdBuilder;
-import org.openecomp.sdc.be.resources.data.GroupData;
-import org.openecomp.sdc.common.api.Constants;
import org.openecomp.sdc.common.jsongraph.util.CommonUtility;
import org.openecomp.sdc.common.jsongraph.util.CommonUtility.LogLevelEnum;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.carrotsearch.junitbenchmarks.annotation.LabelType;
-import com.thinkaurelius.titan.diskstorage.Entry;
-
-import fj.data.Either;
-import javassist.expr.NewArray;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.stream.Collectors;
@org.springframework.stereotype.Component("groups-operation")
public class GroupsOperation extends BaseOperation {
@@ -242,7 +231,7 @@ public class GroupsOperation extends BaseOperation {
*/
private String increaseMajorVersion(String version) {
- String[] versionParts = version.split(LifecycleOperation.VERSION_DELIMETER_REGEXP);
+ String[] versionParts = version.split(ToscaElementLifecycleOperation.VERSION_DELIMETER_REGEXP);
Integer majorVersion = Integer.parseInt(versionParts[0]);
majorVersion++;
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IArtifactOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IArtifactOperation.java
index 5e8a2eb0d5..3d689a4f93 100644
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IArtifactOperation.java
+++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IArtifactOperation.java
@@ -39,42 +39,10 @@ public interface IArtifactOperation {
public Either<ArtifactDefinition, StorageOperationStatus> updateArifactOnResource(ArtifactDefinition artifactInfo, String id, String artifactId, NodeTypeEnum type, boolean inTransaction);
- public Either<ArtifactDefinition, StorageOperationStatus> updateArifactDefinition(ArtifactDefinition artifactInfo, boolean inTransaction);
-
public Either<ArtifactDefinition, StorageOperationStatus> removeArifactFromResource(String id, String artifactId, NodeTypeEnum resource, boolean deleteMandatoryArtifact, boolean inTransaction);
public Either<Map<String, ArtifactDefinition>, StorageOperationStatus> getArtifacts(String parentId, NodeTypeEnum parentType, boolean inTransaction);
- public void setTitanGenericDao(TitanGenericDao titanGenericDao);
-
- public Either<ArtifactDefinition, StorageOperationStatus> getArtifactById(String id, boolean inTransaction);
-
- public Either<Map<String, ArtifactDefinition>, StorageOperationStatus> getArtifacts(String parentId, NodeTypeEnum parentType, boolean inTransaction, String groupType);
-
- Either<ArtifactDefinition, StorageOperationStatus> addHeatEnvArtifact(ArtifactDefinition artifactHeatEnv, ArtifactDefinition artifactHeat, String parentId, NodeTypeEnum parentType, boolean failIfExist);
-
- public void updateUUID(ArtifactDataDefinition artifactData, String oldChecksum, String oldVesrion);
-
- public Either<Integer, StorageOperationStatus> getParentsOfArtifact(String artifactId, NodeTypeEnum type);
-
- public Either<ArtifactDefinition, StorageOperationStatus> getHeatArtifactByHeatEnvId(String heatEnvId, boolean inTransaction);
-
- public Either<ArtifactData, StorageOperationStatus> updateToscaArtifactNameOnGraph(ArtifactDefinition artifactInfo, String artifactId, NodeTypeEnum type, String id);
-
-
public StorageOperationStatus addArifactToComponent(ArtifactDefinition artifactInfo, String parentId, NodeTypeEnum type, boolean failIfExist, TitanVertex parentVertex);
- public Either<ArtifactData, StorageOperationStatus> getLatestArtifactDataByArtifactUUID(String artifactUUID, boolean inTransaction);
-
- StorageOperationStatus addArifactToComponent(TitanVertex artifactInfo, TitanVertex parentVertex, String label);
-
- public Either<ArtifactData, TitanOperationStatus> removeArtifactOnGraph(String id, String artifactId, NodeTypeEnum type, boolean deleteMandatoryArtifact);
-
- public Either<ArtifactDefinition, StorageOperationStatus> updateHeatEnvPlaceholder(ArtifactDefinition artifactInfo, boolean inTransaction);
-
- public Either<ArtifactDefinition, StorageOperationStatus> updateHeatEnvArtifact( String id, ArtifactDefinition artifactEnvInfo, String oldArtifactId, String newArtifactId, NodeTypeEnum type, boolean inTransaction);
-
- public Either<ArtifactDefinition, StorageOperationStatus> getHeatEnvByGeneratedFromId(String generatedFromId);
-
-
}
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IAttributeOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IAttributeOperation.java
deleted file mode 100644
index c5fc70eb38..0000000000
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IAttributeOperation.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.openecomp.sdc.be.model.operations.api;
-
-import java.util.List;
-import java.util.Map;
-
-import org.openecomp.sdc.be.dao.titan.TitanOperationStatus;
-import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
-import org.openecomp.sdc.be.model.ComponentInstance;
-import org.openecomp.sdc.be.model.ComponentInstanceProperty;
-import org.openecomp.sdc.be.model.DataTypeDefinition;
-import org.openecomp.sdc.be.model.PropertyDefinition;
-import org.openecomp.sdc.be.resources.data.AttributeData;
-import org.openecomp.sdc.be.resources.data.AttributeValueData;
-
-import com.thinkaurelius.titan.core.TitanVertex;
-
-import fj.data.Either;
-
-public interface IAttributeOperation {
- Either<AttributeData, StorageOperationStatus> deleteAttribute(String attributeId);
-
- TitanOperationStatus addAttributesToGraph(TitanVertex metadataVertex, Map<String, PropertyDefinition> attributes, String resourceId, Map<String, DataTypeDefinition> dataTypes);
-
- Either<List<ComponentInstanceProperty>, TitanOperationStatus> getAllAttributesOfResourceInstance(ComponentInstance compInstance);
-
- TitanOperationStatus findAllResourceAttributesRecursively(String resourceId, List<PropertyDefinition> attributes);
-
- Either<Map<String, PropertyDefinition>, StorageOperationStatus> deleteAllAttributeAssociatedToNode(NodeTypeEnum nodeType, String uniqueId);
-
- TitanOperationStatus findNodeNonInheretedAttribues(String uniqueId, NodeTypeEnum nodeType, List<PropertyDefinition> attributes);
-
- Either<AttributeData, StorageOperationStatus> addAttribute(PropertyDefinition attributeDefinition, String resourceId);
-
- Either<AttributeData, TitanOperationStatus> addAttributeToGraph(PropertyDefinition attribute, String resourceId, Map<String, DataTypeDefinition> dataTypes);
-
- PropertyDefinition convertAttributeDataToAttributeDefinition(AttributeData attributeData, String attributeName, String resourceId);
-
- Either<AttributeData, StorageOperationStatus> updateAttribute(String attributeId, PropertyDefinition newAttDef, Map<String, DataTypeDefinition> dataTypes);
-
- /**
- * Builds ComponentInstanceAttribute from AttributeValueData
- *
- * @param attributeValueData
- * @param resourceInstanceAttribute
- * @return
- */
- ComponentInstanceProperty buildResourceInstanceAttribute(AttributeValueData attributeValueData, ComponentInstanceProperty resourceInstanceAttribute);
-
- TitanOperationStatus addAttributeToGraphByVertex(TitanVertex metadataVertex, PropertyDefinition attribute, String resourceId, Map<String, DataTypeDefinition> dataTypes);
-
-}
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/ICapabilityInstanceOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/ICapabilityInstanceOperation.java
deleted file mode 100644
index f8e8c80f12..0000000000
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/ICapabilityInstanceOperation.java
+++ /dev/null
@@ -1,130 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.openecomp.sdc.be.model.operations.api;
-
-import java.util.List;
-import java.util.Map;
-import org.apache.commons.lang3.tuple.ImmutablePair;
-import org.openecomp.sdc.be.dao.graph.datatype.GraphEdge;
-import org.openecomp.sdc.be.dao.titan.TitanOperationStatus;
-import org.openecomp.sdc.be.model.CapabilityDefinition;
-import org.openecomp.sdc.be.model.ComponentInstanceProperty;
-import org.openecomp.sdc.be.model.PropertyDefinition;
-import org.openecomp.sdc.be.resources.data.CapabilityInstData;
-import org.openecomp.sdc.be.resources.data.ComponentInstanceData;
-import org.openecomp.sdc.be.resources.data.PropertyValueData;
-
-import com.thinkaurelius.titan.core.TitanVertex;
-
-import fj.data.Either;
-
-/**
- * public interface ICapabilityInstanceOperation provides methods for CRUD operations for CapabilityInstance on component instance level
- *
- * @author ns019t
- *
- */
-public interface ICapabilityInstanceOperation {
- /**
- * create capability instance of capability with property values for resource instance
- *
- * @param resourceInstanceId
- * @param capabilityId
- * @param propertyValues
- * @param validateCapabilityInstExistance
- * @param capabilityName
- * @return
- */
- public Either<Map<CapabilityInstData, List<PropertyValueData>>, TitanOperationStatus> createCapabilityInstanceOfCapabilityWithPropertyValuesForResourceInstance(String resourceInstanceId, String capabilityId, String capabilityName,
- List<ComponentInstanceProperty> propertyValues, boolean validateCapabilityInstExistance);
-
- /**
- *
- * @param resourceInstanceVertex
- * @param capabilityId
- * @param capabilityName
- * @param propertyValues
- * @param validateCapabilityInstExistence
- * @return
- */
- public TitanOperationStatus createCapabilityInstanceOfCapabilityWithPropertyValuesForResourceInstance(TitanVertex resourceInstanceVertex, String resourceInstanceId, String capabilityId, String capabilityName,
- List<ComponentInstanceProperty> propertyValues, boolean validateCapabilityInstExistence);
-
- /**
- * validate capability instance uniqueness
- *
- * @param resourceInstanceId
- * @param capabilityId
- * @return
- */
- public Either<Boolean, TitanOperationStatus> validateCapabilityInstExistence(String resourceInstanceId, String capabilityId);
-
- /**
- * delete capability instance from resource instance
- *
- * @param resourceInstanceId
- * @param capabilityInstanceId
- * @return
- */
- public Either<CapabilityInstData, TitanOperationStatus> deleteCapabilityInstanceFromResourceInstance(String resourceInstanceId, String capabilityInstanceId);
-
- /**
- * get all capability instances for resource instance returns all Capability Instances related to Resource Instance as List<CapabilityInstData> or TitanOperationStatus if error occurs or if Resource Instance have no any related Capability
- * Instance
- *
- * @param resourceInstanceId
- * @return Either<List<CapabilityInstData>, TitanOperationStatus>
- */
- public Either<List<ImmutablePair<CapabilityInstData, GraphEdge>>, TitanOperationStatus> getAllCapabilityInstancesOfResourceInstance(String resourceInstanceId);
-
- /**
- * get capability instance of capability for resource instance
- *
- * @param resourceInstanceId
- * @param capabilityId
- * @return
- */
- public Either<CapabilityInstData, TitanOperationStatus> getCapabilityInstanceOfCapabilityOfResourceInstance(String resourceInstanceId, String capabilityId);
-
- /**
- * update capability property values
- *
- * @param resourceInstanceId
- * @param capabilityInstanceId
- * @param propertyValues
- * @param capabilityId
- * @return
- */
- public Either<List<PropertyValueData>, TitanOperationStatus> updateCapabilityPropertyValues(String resourceInstanceId, String capabilityId, List<ComponentInstanceProperty> propertyValues);
-
- /**
- * clone and associate capability instance with property values
- *
- * @param createdComponentInstance
- * @param capability
- * @param capabilityInstPair
- * @return
- */
- public Either<ImmutablePair<CapabilityInstData, List<PropertyValueData>>, TitanOperationStatus> cloneAssociateCapabilityInstanceWithPropertyValues(ComponentInstanceData createdComponentInstance, CapabilityDefinition capability,
- ImmutablePair<CapabilityInstData, GraphEdge> capabilityInstPair);
-
- Either<Boolean, TitanOperationStatus> validateCapabilityInstExistence(TitanVertex instanceVertex, String resourceInstanceId, String capabilityId);
-}
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/ICapabilityOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/ICapabilityOperation.java
index b3be2bd6ee..b90f31f731 100644
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/ICapabilityOperation.java
+++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/ICapabilityOperation.java
@@ -38,36 +38,8 @@ import fj.data.Either;
public interface ICapabilityOperation {
- public Either<CapabilityDefinition, StorageOperationStatus> addCapability(String resourceId, String capabilityName, CapabilityDefinition capabilityDefinition);
+ Either<Map<String, PropertyDefinition>, TitanOperationStatus> getAllCapabilityTypePropertiesFromAllDerivedFrom(String firstParentType);
- public Either<CapabilityDefinition, StorageOperationStatus> addCapability(String resourceId, String capabilityName, CapabilityDefinition capabilityDefinition, boolean inTransaction);
-
- /**
- * @param uniqueId
- * @return
- */
- public Either<CapabilityDefinition, StorageOperationStatus> getCapability(String uniqueId);
-
- public Either<CapabilityDefinition, StorageOperationStatus> getCapability(String uniqueId, boolean inTransaction);
-
- public Either<CapabilityDefinition, StorageOperationStatus> getCapability(String capabilityName, String resourceId);
-
- public Either<CapabilityDefinition, StorageOperationStatus> getCapability(String capabilityName, String resourceId, boolean inTransaction);
-
- public Either<List<ImmutablePair<CapabilityData, GraphEdge>>, TitanOperationStatus> getAllCapabilitiesPairs(String resourceId);
-
- public Either<Map<String, CapabilityDefinition>, StorageOperationStatus> deleteAllCapabilities(String resourceId, boolean inTransaction);
-
- public Either<CapabilityDefinition, TitanOperationStatus> getCapabilityByCapabilityData(CapabilityData capabilityData);
-
- public TitanOperationStatus getCapabilitySourcesList(String resourceId, List<String> derivedFromList);
-
- public Either<Map<String, PropertyData>, StorageOperationStatus> updatePropertiesOfCapability(String uniqueId, String capabilityType, List<PropertyDefinition> newProperties);
-
- public Either<Map<String, PropertyData>, StorageOperationStatus> updatePropertiesOfCapability(String uniqueId, String capabilityType, List<PropertyDefinition> newProperties, boolean inTransaction);
-
- StorageOperationStatus addCapability(TitanVertex metadataVertex, String resourceId, String capabilityName, CapabilityDefinition capabilityDefinition, boolean inTransaction);
-
- Either<CapabilityTypeData, TitanOperationStatus> getCapabilityTypeOfCapability(String uniqueId);
+ Either<List<PropertyDefinition>, TitanOperationStatus> validatePropertyUniqueness(Map<String, PropertyDefinition> propertiesOfCapabilityType, List<PropertyDefinition> properties);
}
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IComponentInstanceOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IComponentInstanceOperation.java
index f4cb13fa64..d1a1b6ac7b 100644
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IComponentInstanceOperation.java
+++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IComponentInstanceOperation.java
@@ -45,149 +45,8 @@ import fj.data.Either;
public interface IComponentInstanceOperation {
- /**
- * add resource instance to service
- *
- * @param containerComponentId
- * - component id
- * @param instanceNumber
- * - instance number of the component instance
- * @param componentInstance
- * @param inTransaction
- * @return
- */
- public Either<ComponentInstance, StorageOperationStatus> createComponentInstance(String containerComponentId, NodeTypeEnum containerNodeType, String instanceNumber, ComponentInstance componentInstance, NodeTypeEnum instNodeType,
- boolean inTransaction);
-
- /**
- * add resource instance to service with internal transaction
- *
- * @param containerComponentId
- * @param instanceNumber
- * @param componentInstance
- * @return
- */
- public Either<ComponentInstance, StorageOperationStatus> createComponentInstance(String containerComponentId, NodeTypeEnum containerNodeType, String instanceNumber, ComponentInstance componentInstance, NodeTypeEnum instNodeType);
-
- /**
- * delete resource instance from component
- *
- * @param containerComponentId
- * - containerComponent id
- * @param resourceInstUid
- * - resource instance uid
- * @param inTransaction
- * @return
- */
- public Either<ComponentInstance, StorageOperationStatus> deleteComponentInstance(NodeTypeEnum containerNodeType, String containerComponentId, String resourceInstUid, boolean inTransaction);
-
- public Either<ComponentInstance, StorageOperationStatus> deleteComponentInstance(NodeTypeEnum containerNodeType, String containerComponentId, String resourceInstUid);
-
- /**
- * associate 2 resource instances for a given requirement
- *
- * @param serviceId
- * @param fromResInstanceUid
- * @param toResInstanceUid
- * @param requirement
- * @param relationship
- * @param inTransaction
- * @return
- */
- // public Either<RequirementCapabilityRelDef, StorageOperationStatus>
- // associateResourceInstances(
- // String serviceId, NodeTypeEnum nodeType, String fromResInstanceUid,
- // String toResInstanceUid, String requirement, String relationship,
- // boolean inTransaction);
-
- // public Either<RequirementCapabilityRelDef, StorageOperationStatus>
- // associateResourceInstances(
- // String serviceId, NodeTypeEnum nodeType, String fromResInstanceUid,
- // String toResInstanceUid, String requirement, String relationship);
-
- public Either<RequirementCapabilityRelDef, StorageOperationStatus> associateResourceInstances(String serviceId, NodeTypeEnum nodeType, RequirementCapabilityRelDef relation, boolean inTransaction, boolean isClone);
-
- public Either<RequirementCapabilityRelDef, StorageOperationStatus> associateResourceInstances(String serviceId, NodeTypeEnum nodeType, RequirementCapabilityRelDef relation);
-
- /**
- *
- * dissociate the relation between 2 resource instances for a given requirement
- *
- * @param serviceId
- * @param fromResInstanceUid
- * @param toResInstanceUid
- * @param requirement
- * @param inTransaction
- * @return
- */
- public Either<RequirementCapabilityRelDef, StorageOperationStatus> dissociateResourceInstances(String serviceId, NodeTypeEnum nodeType, RequirementCapabilityRelDef requirementDef, boolean inTransaction);
-
- public Either<RequirementCapabilityRelDef, StorageOperationStatus> dissociateResourceInstances(String serviceId, NodeTypeEnum nodeType, RequirementCapabilityRelDef requirementDef);
-
- /**
- * update the properties of a given resource instance
- *
- * @param serviceId
- * @param resourceInstanceName
- * @param resourceInstance
- * @param inTransaction
- * @return
- */
- public Either<ComponentInstance, StorageOperationStatus> updateResourceInstance(String serviceId, NodeTypeEnum nodeType, String resourceInstanceName, ComponentInstance resourceInstance, boolean inTransaction);
-
- public Either<ComponentInstance, StorageOperationStatus> updateResourceInstance(String serviceId, NodeTypeEnum nodeType, String resourceInstanceName, ComponentInstance resourceInstance);
-
- /**
- * get all resource instances of a given service and the relations between the resource instances
- *
- * @param serviceId
- * @param inTransaction
- * @return
- */
- public Either<ImmutablePair<List<ComponentInstance>, List<RequirementCapabilityRelDef>>, StorageOperationStatus> getAllComponentInstances(String componentId, NodeTypeEnum containerNodeType, NodeTypeEnum compInstNodeType, boolean inTransaction);
-
- public Either<List<String>, StorageOperationStatus> getAllComponentInstancesNames(String componentId, NodeTypeEnum nodeType, boolean inTransaction);
-
- public Either<List<String>, StorageOperationStatus> getAllComponentInstancesNames(String componentId, NodeTypeEnum nodeType);
-
- /**
- * get all component instance properties and values from graph
- * @param resourceInstance
- * @return
- */
- public Either<List<ComponentInstanceProperty>, StorageOperationStatus> getComponentInstancesPropertiesAndValuesFromGraph(
- ComponentInstance resourceInstance);
-
- /**
- * get resource instance from id
- *
- * @param resourceId
- * @return resource instance of given id
- */
- public Either<ComponentInstance, StorageOperationStatus> getResourceInstanceById(String resourceId);
-
- public Either<List<ComponentInstance>, StorageOperationStatus> deleteAllComponentInstances(String serviceId, NodeTypeEnum nodeType, boolean inTransaction);
-
- public Either<List<ComponentInstance>, StorageOperationStatus> deleteAllComponentInstances(String serviceId, NodeTypeEnum nodeType);
-
public Either<Integer, StorageOperationStatus> increaseAndGetResourceInstanceSpecificCounter(String resourceInstanceId, GraphPropertiesDictionary counterType, boolean inTransaction);
- public String createComponentInstLogicalName(String instanceNumber, String componentInstanceName);
-
- public Either<Boolean, StorageOperationStatus> isComponentInstanceNameExist(String parentComponentId, NodeTypeEnum parentNodeType, String compInstId, String componentInstName);
-
- public Either<Boolean, StorageOperationStatus> validateParent(String parentId, String uniqId, boolean inTransaction);
-
- public Either<ComponentInstance, StorageOperationStatus> getFullComponentInstance(ComponentInstance componentInstance, NodeTypeEnum compInstNodeType);
-
- public Either<Boolean, StorageOperationStatus> isAvailableRequirement(ComponentInstance fromResInstance, RequirementAndRelationshipPair relationPair);
-
- public Either<Boolean, StorageOperationStatus> isAvailableCapabilty(ComponentInstance toResInstance, RequirementAndRelationshipPair relationPair);
-
- public Either<ComponentInstanceProperty, StorageOperationStatus> addPropertyValueToResourceInstance(ComponentInstanceProperty resourceInstanceProperty, String resourceInstanceId, Integer index, boolean inTransaction);
-
- public Either<ComponentInstanceProperty, StorageOperationStatus> addPropertyValueToResourceInstance(ComponentInstanceProperty resourceInstanceProperty, String resourceInstanceId, boolean isvalidate, Integer index, boolean inTransaction);
-
/**
* Adds Attribute to resource instance
*
@@ -197,8 +56,6 @@ public interface IComponentInstanceOperation {
**/
public Either<ComponentInstanceProperty, StorageOperationStatus> addAttributeValueToResourceInstance(ComponentInstanceProperty resourceInstanceAttribute, String resourceInstanceId, Integer index, boolean inTransaction);
- public Either<ComponentInstanceProperty, StorageOperationStatus> updatePropertyValueInResourceInstance(ComponentInstanceProperty resourceInstanceProperty, String resourceInstanceId, boolean inTransaction);
-
/**
* Updates Attribute on resource instance
*
@@ -209,13 +66,11 @@ public interface IComponentInstanceOperation {
*/
public Either<ComponentInstanceProperty, StorageOperationStatus> updateAttributeValueInResourceInstance(ComponentInstanceProperty attribute, String resourceInstanceId, boolean inTransaction);
- public Either<AttributeValueData, TitanOperationStatus> createOrUpdateAttributeOfResourceInstance(ComponentInstanceProperty attributeInstanceProperty, String resourceInstanceId);
public Either<ComponentInstanceInput, StorageOperationStatus> addInputValueToResourceInstance(ComponentInstanceInput input, String resourceInstanceId, Integer innerElement, boolean b);
public Either<ComponentInstanceInput, StorageOperationStatus> updateInputValueInResourceInstance(ComponentInstanceInput input, String resourceInstanceId, boolean b);
- public Either<Map<String, ArtifactDefinition>, StorageOperationStatus> fetchCIEnvArtifacts(String componentInstanceId);
public StorageOperationStatus updateCustomizationUUID(String componentInstanceId);
/**
@@ -228,11 +83,4 @@ public interface IComponentInstanceOperation {
*/
public Either<ComponentInstanceData, StorageOperationStatus> updateComponentInstanceModificationTimeAndCustomizationUuidOnGraph(ComponentInstance componentInstance, NodeTypeEnum componentInstanceType, Long modificationTime, boolean inTransaction);
- Either<List<ImmutablePair<CapabilityData, GraphEdge>>, TitanOperationStatus> getCapabilities(ComponentInstance compInstance, NodeTypeEnum nodeTypeEnum);
-
- Either<List<ImmutablePair<RequirementData, GraphEdge>>, TitanOperationStatus> getRequirements(ComponentInstance compInstance, NodeTypeEnum nodeTypeEnum);
-
- Either<List<ImmutablePair<CapabilityData, GraphEdge>>, TitanOperationStatus> getFulfilledCapabilities(ComponentInstance compInstance, NodeTypeEnum nodeTypeEnum);
-
- Either<List<ImmutablePair<RequirementData, GraphEdge>>, TitanOperationStatus> getFulfilledRequirements(ComponentInstance compInstance, NodeTypeEnum nodeTypeEnum);
}
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IComponentOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IComponentOperation.java
deleted file mode 100644
index 3eef59fa69..0000000000
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IComponentOperation.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.openecomp.sdc.be.model.operations.api;
-
-import java.util.List;
-import java.util.Map;
-
-import org.openecomp.sdc.be.dao.graph.datatype.GraphNode;
-import org.openecomp.sdc.be.datatypes.enums.FilterKeyEnum;
-import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
-import org.openecomp.sdc.be.model.ArtifactDefinition;
-import org.openecomp.sdc.be.model.Component;
-import org.openecomp.sdc.be.model.ComponentParametersView;
-
-import fj.data.Either;
-
-public interface IComponentOperation {
- public <T extends Component> Either<T, StorageOperationStatus> getComponent(String id, Class<T> clazz);
-
- public Either<List<ArtifactDefinition>, StorageOperationStatus> getComponentArtifactsForDelete(String parentId, NodeTypeEnum parentType, boolean inTransacton);
-
- public <T> Either<T, StorageOperationStatus> getLightComponent(String id, boolean inTransaction);
-
- public <T> Either<T, StorageOperationStatus> getComponent(String id, boolean inTransaction);
-
- public <T> Either<T, StorageOperationStatus> getComponent(String id, ComponentParametersView componentParametersView, boolean inTransaction);
-
- public <T> Either<List<T>, StorageOperationStatus> getFilteredComponents(Map<FilterKeyEnum, String> filters, boolean inTranscation);
-
- public <T extends GraphNode> Either<T, StorageOperationStatus> getComponentByLabelAndId(String uniqueId, NodeTypeEnum nodeType, Class<T> clazz);
-
-}
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IGroupInstanceOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IGroupInstanceOperation.java
index 8fd88f704f..b55eff6684 100644
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IGroupInstanceOperation.java
+++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IGroupInstanceOperation.java
@@ -45,57 +45,15 @@ import fj.data.Either;
public interface IGroupInstanceOperation {
- public Either<GroupInstance, StorageOperationStatus> createGroupInstance(String ComponentInstId, GroupInstance groupInstance, boolean isCreateLogicalName);
-
- public Either<GroupInstance, StorageOperationStatus> createGroupInstance(TitanVertex ciVertex, String componentInstId, GroupInstance groupInstance, boolean isCreateLogicalName);
-
- public Either<GroupInstance, StorageOperationStatus> deleteGroupInstanceInstance(NodeTypeEnum containerNodeType, String containerComponentId, String groupInstUid);
-
- public Either<GroupInstance, StorageOperationStatus> updateGroupInstance(String serviceId, NodeTypeEnum nodeType, String resourceInstanceName, ComponentInstance resourceInstance);
-
- public Either<List<GroupInstance>, StorageOperationStatus> getAllGroupInstances(String componentInstId, NodeTypeEnum compInstNodeType);
-
- public Either<GroupInstance, TitanOperationStatus> getGroupInstanceById(String groupResourceId);
- public TitanOperationStatus deleteAllGroupInstances(String componentInstId);
+ public Either<List<GroupInstance>, StorageOperationStatus> getAllGroupInstances(String componentInstId, NodeTypeEnum compInstNodeType);
public Either<Integer, StorageOperationStatus> increaseAndGetGroupInstancePropertyCounter(String groupInstanceId);
- public Either<Boolean, StorageOperationStatus> isGroupInstanceNameExist(String parentComponentId, NodeTypeEnum parentNodeType, String compInstId, String componentInstName);
-
- public Either<ComponentInstance, StorageOperationStatus> getFullGroupInstance(ComponentInstance componentInstance, NodeTypeEnum compInstNodeType);
-
public Either<ComponentInstanceProperty, StorageOperationStatus> addPropertyValueToGroupInstance(ComponentInstanceProperty resourceInstanceProperty, String resourceInstanceId, Integer index, boolean inTransaction);
- public Either<ComponentInstanceProperty, StorageOperationStatus> addPropertyValueToGroupInstance(ComponentInstanceProperty resourceInstanceProperty, String resourceInstanceId, boolean isvalidate, Integer index, boolean inTransaction);
-
public Either<ComponentInstanceProperty, StorageOperationStatus> updatePropertyValueInGroupInstance(ComponentInstanceProperty gropuInstanceProperty, String groupInstanceId, boolean inTransaction);
-
- public Either<Map<String, ArtifactDefinition>, StorageOperationStatus> fetchCIEnvArtifacts(String componentInstanceId);
-
- public StorageOperationStatus updateCustomizationUUID(String componentInstanceId);
-
- public String createGroupInstLogicalName(String instanceNumber, String groupInstanceName);
-
- public Either<GroupInstance, StorageOperationStatus> associateArtifactsToGroupInstance(String groupId, List<String> artifactsId);
StorageOperationStatus dissociateAndAssociateGroupsInstanceFromArtifact(String componentId, NodeTypeEnum componentTypeEnum, String oldArtifactId, ArtifactData newArtifact);
- StorageOperationStatus dissociateAndAssociateGroupsInstanceFromArtifactOnGraph(String componentId, NodeTypeEnum componentTypeEnum, String oldArtifactId, ArtifactData newArtifact);
- /**
- * updates group instance property values
- * @param value
- * @param newProperties
- * @return
- */
- public Either<GroupInstance, StorageOperationStatus> updateGroupInstancePropertyValues(GroupInstance value, List<GroupInstanceProperty> newProperties);
- /**
- * updates group instance property values
- * @param oldGroupInstance
- * @param newProperties
- * @param inTransaction
- * @return
- */
- public Either<GroupInstance, StorageOperationStatus> updateGroupInstancePropertyValues(GroupInstance oldGroupInstance, List<GroupInstanceProperty> newProperties, Boolean inTransaction);
-
}
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IGroupOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IGroupOperation.java
index 3295adfe56..6dbbfb6b6e 100644
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IGroupOperation.java
+++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IGroupOperation.java
@@ -34,72 +34,11 @@ import fj.data.Either;
public interface IGroupOperation {
- // add full group to component
- public Either<GroupData, TitanOperationStatus> addGroupToGraph(NodeTypeEnum nodeTypeEnum, String componentId, GroupDefinition groupDefinition);
-
- public Either<GroupDefinition, StorageOperationStatus> addGroup(NodeTypeEnum nodeTypeEnum, String componentId, GroupDefinition groupDefinition);
-
- public Either<GroupDefinition, StorageOperationStatus> addGroup(NodeTypeEnum nodeTypeEnum, String componentId, GroupDefinition groupDefinition, boolean inTransaction);
-
- public Either<List<GroupDefinition>, StorageOperationStatus> addGroups(NodeTypeEnum nodeTypeEnum, String componentId, List<GroupDefinition> groups, boolean inTransaction);
-
- // get group
- public Either<GroupDefinition, TitanOperationStatus> getGroupFromGraph(String uniqueId);
-
- public Either<GroupDefinition, StorageOperationStatus> getGroup(String uniqueId);
-
- public Either<GroupDefinition, StorageOperationStatus> getGroup(String uniqueId, boolean inTransaction);
-
- // get all groups under component
- public Either<List<GroupDefinition>, TitanOperationStatus> getAllGroupsFromGraph(String componentId, NodeTypeEnum componentTypeEnum);
-
- public Either<List<GroupDefinition>, StorageOperationStatus> getAllGroups(String componentId, NodeTypeEnum compTypeEnum, boolean inTransaction);
-
- public Either<List<GroupDefinition>, StorageOperationStatus> getAllGroups(String componentId, NodeTypeEnum compTypeEnum);
-
- // delete all groups under component
- public Either<List<GroupDefinition>, TitanOperationStatus> deleteAllGroupsFromGraph(String componentId, NodeTypeEnum compTypeEnum);
-
- public Either<List<GroupDefinition>, StorageOperationStatus> deleteAllGroups(String componentId, NodeTypeEnum compTypeEnum, boolean inTransaction);
-
- public Either<List<GroupDefinition>, StorageOperationStatus> deleteAllGroups(String componentId, NodeTypeEnum compTypeEnum);
-
- // Association
- public Either<List<String>, StorageOperationStatus> getAssociatedGroupsToComponentInstance(String componentInstanceId, boolean inTransaction);
-
- public Either<List<String>, StorageOperationStatus> getAssociatedGroupsToComponentInstance(String componentInstanceId);
-
- public Either<List<String>, TitanOperationStatus> getAssociatedGroupsToComponentInstanceFromGraph(String componentInstanceId);
-
- public StorageOperationStatus associateGroupsToComponentInstance(List<String> groups, String componentInstanceId, String compInstName, boolean inTransaction);
-
- public StorageOperationStatus associateGroupsToComponentInstance(List<String> groups, String componentInstanceId, String compInstName);
-
- public Either<List<GraphRelation>, TitanOperationStatus> associateGroupsToComponentInstanceOnGraph(List<String> groups, String componentInstanceId, String compInstName);
-
public Either<List<GraphRelation>, TitanOperationStatus> dissociateAllGroupsFromArtifactOnGraph(String componentId, NodeTypeEnum componentTypeEnum, String artifactId);
- public StorageOperationStatus dissociateAllGroupsFromArtifact(String componentId, NodeTypeEnum componentTypeEnum, String artifactId, boolean inTransaction);
-
- public StorageOperationStatus dissociateAllGroupsFromArtifact(String componentId, NodeTypeEnum componentTypeEnum, String artifactId);
-
- public TitanOperationStatus dissociateAndAssociateGroupsFromArtifactOnGraph(String componentId, NodeTypeEnum componentTypeEnum, String oldArtifactId, ArtifactData newArtifact);
-
public StorageOperationStatus dissociateAndAssociateGroupsFromArtifact(String componentId, NodeTypeEnum componentTypeEnum, String oldArtifactId, ArtifactData newArtifact, boolean inTransaction);
- public StorageOperationStatus dissociateAndAssociateGroupsFromArtifact(String componentId, NodeTypeEnum componentTypeEnum, String oldArtifactId, ArtifactData newArtifact);
-
public boolean isGroupExist(String groupName, boolean inTransaction);
- /**
- * Updates Group Metadata (name and properties)
- * @param groupToUpdateFromUniqueId
- * @param newName
- * @param groupToUpdateTo
- * @param inTransaction
- * @return
- */
- public Either<GroupDefinition, StorageOperationStatus> updateGroupName(String groupToUpdateFromUniqueId,
- String newName, GroupDefinition groupToUpdateTo, boolean inTransaction);
public StorageOperationStatus validateAndUpdatePropertyValue(GroupProperty property);
}
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IInputsOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IInputsOperation.java
index 8b44229df1..1cec537e3e 100644
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IInputsOperation.java
+++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IInputsOperation.java
@@ -20,50 +20,21 @@
package org.openecomp.sdc.be.model.operations.api;
-import java.util.List;
-import java.util.Map;
-
+import fj.data.Either;
+import org.apache.commons.lang3.tuple.ImmutablePair;
import org.openecomp.sdc.be.dao.titan.TitanOperationStatus;
import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
-import org.openecomp.sdc.be.model.ComponentInstInputsMap;
-import org.openecomp.sdc.be.model.ComponentInstance;
import org.openecomp.sdc.be.model.ComponentInstanceInput;
-import org.openecomp.sdc.be.model.DataTypeDefinition;
import org.openecomp.sdc.be.model.InputDefinition;
-import org.openecomp.sdc.be.resources.data.AttributeData;
+import org.openecomp.sdc.be.resources.data.InputValueData;
import org.openecomp.sdc.be.resources.data.InputsData;
-import com.thinkaurelius.titan.core.TitanVertex;
-
-import fj.data.Either;
+import java.util.List;
public interface IInputsOperation {
- Either<InputDefinition, StorageOperationStatus> deleteInput(String inputId);
-
- Either<List<InputDefinition>, TitanOperationStatus> addInputsToGraph(String componentId, NodeTypeEnum nodeType, Map<String, InputDefinition> inputs, Map<String, DataTypeDefinition> dataTypes);
-
- TitanOperationStatus findNodeNonInheretedInputs(String uniqueId, List<InputDefinition> inputs);
-
- Either<List<InputDefinition>, StorageOperationStatus> getInputsOfComponent(String compId, String fromName, int amount);
-
- Either<List<ComponentInstanceInput>, TitanOperationStatus> getAllInputsOfResourceInstance(ComponentInstance compInstance);
-
- Either<Map<String, InputDefinition>, StorageOperationStatus> deleteAllInputsAssociatedToNode(NodeTypeEnum nodeType, String uniqueId);
-
- // TitanOperationStatus findNodeNonInheretedAttribues(String uniqueId,
- // NodeTypeEnum nodeType, List<AttributeDefinition> attributes);
-
- Either<InputsData, StorageOperationStatus> addInput(String inputName, InputDefinition inputDefinition, String componentId, NodeTypeEnum nodeType);
-
- Either<InputsData, TitanOperationStatus> addInputToGraph(String propertyName, InputDefinition inputDefinition, String componentId, NodeTypeEnum nodeType);
-
- Either<AttributeData, StorageOperationStatus> updateInput(String inputId, InputDefinition newInDef, Map<String, DataTypeDefinition> dataTypes);
-
- TitanOperationStatus findAllResourceInputs(String uniqueId, List<InputDefinition> inputs);
-
- Either<InputDefinition, StorageOperationStatus> getInputById(String uniqueId, boolean skipProperties, boolean skipinputsValue);
+ ImmutablePair<TitanOperationStatus, String> findInputValue(String resourceInstanceId, String propertyId);
- TitanOperationStatus addInputsToGraph(TitanVertex metadata, String componentId, Map<String, InputDefinition> inputs, Map<String, DataTypeDefinition> dataTypes);
+ ComponentInstanceInput buildResourceInstanceInput(InputValueData propertyValueData, ComponentInstanceInput resourceInstanceInput);
}
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IInterfaceLifecycleOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IInterfaceLifecycleOperation.java
index e46460a502..c9a332f069 100644
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IInterfaceLifecycleOperation.java
+++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IInterfaceLifecycleOperation.java
@@ -35,43 +35,23 @@ public interface IInterfaceLifecycleOperation {
public Either<InterfaceDefinition, StorageOperationStatus> createInterfaceOnResource(InterfaceDefinition interf, String resourceId, String interfaceName, boolean failIfExist, boolean inTransaction);
- public StorageOperationStatus createInterfaceOnResource(InterfaceDefinition interf, String resourceId, String interfaceName, boolean failIfExist, boolean inTransaction, TitanVertex metadataVertex);
-
- public Either<InterfaceDefinition, StorageOperationStatus> addInterfaceToResource(InterfaceDefinition interf, String resourceId, String interfaceName);
-
public Either<InterfaceDefinition, StorageOperationStatus> addInterfaceToResource(InterfaceDefinition interf, String resourceId, String interfaceName, boolean inTransaction);
- // public Either<InterfaceDefinition, StorageOperationStatus>
- // getInterface(String interfaceId);
- //
- // public Either<InterfaceDefinition, StorageOperationStatus>
- // getInterface(String interfaceId, boolean inTransaction);
-
public Either<Operation, StorageOperationStatus> updateInterfaceOperation(String resourceId, String interfaceName, String operationName, Operation interf);
public Either<Operation, StorageOperationStatus> updateInterfaceOperation(String resourceId, String interfaceName, String operationName, Operation interf, boolean inTransaction);
- public Either<Operation, StorageOperationStatus> deleteInterfaceOperation(String resourceId, String interfaceName, String operationName);
-
public Either<Operation, StorageOperationStatus> deleteInterfaceOperation(String resourceId, String interfaceName, String operationName, boolean inTransaction);
public Either<Map<String, InterfaceDefinition>, StorageOperationStatus> getAllInterfacesOfResource(String resourceId, boolean recursively, boolean inTransaction);
public Either<Map<String, InterfaceDefinition>, StorageOperationStatus> getAllInterfacesOfResource(String resourceId, boolean recursively);
- public Either<InterfaceDefinition, StorageOperationStatus> deleteInterfaceOfResourceOnGraph(String resourceId, InterfaceDefinition interfaceDef, boolean inTransaction);
-
public Either<InterfaceDefinition, StorageOperationStatus> createInterfaceType(InterfaceDefinition interf);
public Either<InterfaceDefinition, StorageOperationStatus> createInterfaceType(InterfaceDefinition interf, boolean inTransaction);
public Either<InterfaceDefinition, StorageOperationStatus> getInterface(String interfaceId);
- public StorageOperationStatus associateInterfaceToNode(GraphNode node, InterfaceDefinition interfaceDefinition, TitanVertex metadataVertex);
-
- public Either<Operation, StorageOperationStatus> getSpecificOperation(String resourceId, String interfaceType, String operationName);
-
- public Either<InterfaceDefinition, StorageOperationStatus> dissociateInterfaceFromNode(GraphNode node, InterfaceDefinition interfaceDefinition);
-
public String getShortInterfaceName(InterfaceDataDefinition interfaceDefinition);
}
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/ILifecycleOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/ILifecycleOperation.java
deleted file mode 100644
index ab99f20d4c..0000000000
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/ILifecycleOperation.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.openecomp.sdc.be.model.operations.api;
-
-import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
-import org.openecomp.sdc.be.model.Component;
-import org.openecomp.sdc.be.model.LifecycleStateEnum;
-import org.openecomp.sdc.be.model.User;
-import org.openecomp.sdc.be.model.operations.impl.ComponentOperation;
-import org.openecomp.sdc.be.model.operations.impl.ResourceOperation;
-
-import fj.data.Either;
-
-public interface ILifecycleOperation {
-
- public ResourceOperation getResourceOperation();
-
- public Either<User, StorageOperationStatus> getComponentOwner(String resourceId, NodeTypeEnum nodeType, boolean inTransaction);
-
- public Either<? extends Component, StorageOperationStatus> checkinComponent(NodeTypeEnum nodeType, Component component, User modifier, User owner, boolean inTransaction);
-
- public Either<? extends Component, StorageOperationStatus> requestCertificationComponent(NodeTypeEnum nodeType, Component component, User modifier, User owner, boolean inTransaction);
-
- public Either<? extends Component, StorageOperationStatus> startComponentCertification(NodeTypeEnum nodeType, Component component, User modifier, User owner, boolean inTransaction);
-
- public Either<? extends Component, StorageOperationStatus> checkoutComponent(NodeTypeEnum nodeType, Component component, User modifier, User currentOwner, boolean inTransaction);
-
- public Either<? extends Component, StorageOperationStatus> certifyComponent(NodeTypeEnum nodeType, Component component, User modifier, User currentOwner, boolean inTransaction);
-
- public Either<? extends Component, StorageOperationStatus> cancelOrFailCertification(NodeTypeEnum nodeType, Component component, User modifier, User owner, LifecycleStateEnum nextState, boolean b);
-
- public Either<Boolean, StorageOperationStatus> deleteOldComponentVersions(NodeTypeEnum nodeType, String componentName, String uuid, boolean inTransaction);
-
- public Either<? extends Component, StorageOperationStatus> undoCheckout(NodeTypeEnum nodeType, Component resource, User modifier, User currentOwner, boolean inTransaction);
-
- public ComponentOperation getComponentOperation(NodeTypeEnum componentType);
-
-}
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IProductOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IProductOperation.java
deleted file mode 100644
index 76f95f3c2b..0000000000
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IProductOperation.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.openecomp.sdc.be.model.operations.api;
-
-import java.util.List;
-import java.util.Set;
-
-import org.openecomp.sdc.be.model.LifecycleStateEnum;
-import org.openecomp.sdc.be.model.Product;
-
-import fj.data.Either;
-
-public interface IProductOperation extends IComponentOperation {
- public Either<List<Product>, StorageOperationStatus> getProductCatalogData(boolean inTransaction);
-
- public Either<Product, StorageOperationStatus> createProduct(Product product);
-
- public Either<Product, StorageOperationStatus> createProduct(Product product, boolean inTransaction);
-
- public Either<Product, StorageOperationStatus> deleteProduct(String productId, boolean inTransaction);
-
- public Either<List<Product>, StorageOperationStatus> getFollowed(String userId, Set<LifecycleStateEnum> lifecycleStates, Set<LifecycleStateEnum> lastStateStates, boolean inTransaction);
-
- public void rollback();
-
- public void commit();
-
-}
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IPropertyOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IPropertyOperation.java
index f9f960fdbf..3dd49f1aee 100644
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IPropertyOperation.java
+++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IPropertyOperation.java
@@ -33,29 +33,6 @@ import fj.data.Either;
public interface IPropertyOperation {
/**
- * add property to resource
- *
- * @param propertyName
- * @param propertyDefinition
- * @param nodeType
- * @param id
- * @return
- *
- * public Either<PropertyDefinition, StorageOperationStatus> addPropertyToResource( String propertyName, PropertyDefinition propertyDefinition, NodeTypeEnum nodeType, String id);
- */
-
- /**
- * get property belongs to resource
- *
- * @param propertyName
- * - property name
- * @param resourceId
- * - resource unique id
- * @return
- */
- public Either<PropertyDefinition, StorageOperationStatus> getPropertyOfResource(String propertyName, String resourceId);
-
- /**
* Delete all properties of resource
*
* @param nodeType
@@ -76,8 +53,6 @@ public interface IPropertyOperation {
*/
public Either<DataTypeDefinition, StorageOperationStatus> addDataType(DataTypeDefinition dataTypeDefinition);
- public Either<DataTypeDefinition, StorageOperationStatus> addDataType(DataTypeDefinition dataTypeDefinition, boolean inTransaction);
-
/**
* @param name
* @return
@@ -86,14 +61,10 @@ public interface IPropertyOperation {
public Either<DataTypeDefinition, StorageOperationStatus> getDataTypeByName(String name, boolean inTransaction);
- public Either<DataTypeDefinition, StorageOperationStatus> getDataTypeByNameWithoutDerived(String name, boolean inTransaction);
-
public Either<DataTypeDefinition, StorageOperationStatus> getDataTypeByNameWithoutDerived(String name);
public StorageOperationStatus validateAndUpdateProperty(IComplexDefaultValue propertyDefinition, Map<String, DataTypeDefinition> dataTypes);
- public Either<DataTypeDefinition, StorageOperationStatus> updateDataType(DataTypeDefinition newDataTypeDefinition, DataTypeDefinition oldDataTypeDefinition, boolean inTransaction);
-
public Either<DataTypeDefinition, StorageOperationStatus> updateDataType(DataTypeDefinition newDataTypeDefinition, DataTypeDefinition oldDataTypeDefinition);
}
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IRequirementOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IRequirementOperation.java
deleted file mode 100644
index a2af44cf61..0000000000
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IRequirementOperation.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.openecomp.sdc.be.model.operations.api;
-
-import java.util.List;
-import java.util.Map;
-
-import org.openecomp.sdc.be.dao.titan.TitanOperationStatus;
-import org.openecomp.sdc.be.model.RequirementDefinition;
-import org.openecomp.sdc.be.model.RequirementImplDef;
-
-import com.thinkaurelius.titan.core.TitanVertex;
-
-import fj.data.Either;
-
-public interface IRequirementOperation {
-
- /**
- * add a requirement to resource
- *
- * @param reqName
- * @param reqDefinition
- * @param nodeType
- * @param uniqueId
- * @return
- */
- public Either<RequirementDefinition, StorageOperationStatus> addRequirementToResource(String reqName, RequirementDefinition reqDefinition, String resourceId);
-
- public Either<RequirementDefinition, StorageOperationStatus> addRequirementToResource(String reqName, RequirementDefinition reqDefinition, String resourceId, boolean inTransaction);
-
- public Either<RequirementDefinition, StorageOperationStatus> addRequirementImplToResource(String reqName, RequirementImplDef reqDefinition, String resourceId, String parentReqUniqueId);
-
- public Either<RequirementDefinition, StorageOperationStatus> addRequirementImplToResource(String reqName, RequirementImplDef reqDefinition, String resourceId, String parentReqUniqueId, boolean inTransaction);
-
- /**
- * get requirement of resource
- *
- * @param reqName
- * @param resourceId
- * @return
- */
- public Either<RequirementDefinition, StorageOperationStatus> getRequirementOfResource(String reqName, String resourceId);
-
- public Either<RequirementDefinition, StorageOperationStatus> getRequirementOfResource(String reqName, String resourceId, boolean inTransaction);
-
- public Either<Map<String, RequirementDefinition>, StorageOperationStatus> getAllResourceRequirements(String resourceId, boolean inTransaction);
-
- Either<Map<String, List<RequirementDefinition>>, StorageOperationStatus> getAllRequirementsOfResourceOnly(String resourceId, boolean inTransaction);
-
- public Either<Map<String, RequirementDefinition>, TitanOperationStatus> getResourceRequirements(String resourceId);
-
- public Either<Map<String, RequirementDefinition>, StorageOperationStatus> deleteAllRequirements(String resourceId, boolean inTransaction);
-
- public Either<RequirementDefinition, TitanOperationStatus> getRequirement(String uniqueId);
-
- StorageOperationStatus addRequirementToResource(TitanVertex metadataVertex, String reqName, RequirementDefinition reqDefinition, String resourceId, boolean inTransaction);
-}
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IResourceOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IResourceOperation.java
deleted file mode 100644
index 8d9994ba8a..0000000000
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IResourceOperation.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.openecomp.sdc.be.model.operations.api;
-
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.openecomp.sdc.be.dao.titan.TitanGenericDao;
-import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
-import org.openecomp.sdc.be.model.LifecycleStateEnum;
-import org.openecomp.sdc.be.model.Resource;
-
-import fj.data.Either;
-
-public interface IResourceOperation extends IComponentOperation {
-
- public TitanGenericDao getTitanGenericDao();
-
- // public StorageOperationStatus lockResource(Resource resource);
- //
- // public StorageOperationStatus unlockResource(Resource resource);
-
- public Either<Resource, StorageOperationStatus> createResource(Resource resource);
-
- public Either<Resource, StorageOperationStatus> createResource(Resource resource, boolean inTransaction);
-
- public Either<Resource, StorageOperationStatus> getResource(String resourceId);
-
- // public Either<Resource, StorageOperationStatus> getResource_tx(String
- // resourceId,boolean inTransaction);
-
- public Either<Resource, StorageOperationStatus> getResource(String resourceId, boolean inTransaction);
-
- /**
- * the method retrieves all the certified resources, the returned values are only abstract or only none abstract according to the supplied parameters.
- *
- * @param getAbstract
- * the value defines which resources to return only abstract or only none abstract
- * @return
- */
- public Either<List<Resource>, StorageOperationStatus> getAllCertifiedResources(boolean getAbstract);
-
- public Either<List<Resource>, StorageOperationStatus> getAllCertifiedResources(boolean getAbstract, Boolean isHighest);
-
- public Either<Boolean, StorageOperationStatus> validateResourceNameExists(String resourceName, ResourceTypeEnum resourceType);
-
- public Either<Resource, StorageOperationStatus> deleteResource(String resourceId);
-
- public Either<Resource, StorageOperationStatus> deleteResource(String resourceId, boolean inTransaction);
-
- public Either<Resource, StorageOperationStatus> updateResource(Resource resource);
-
- public Either<Resource, StorageOperationStatus> updateResource(Resource resource, boolean inTransaction);
-
- public Either<Integer, StorageOperationStatus> getNumberOfResourcesByName(String resourceName);
-
- // public Either<List<ArtifactDefinition>, StorageOperationStatus>
- // getResourceArtifactsForDelete(Resource resource);
-
- public Either<List<Resource>, StorageOperationStatus> getFollowed(String userId, Set<LifecycleStateEnum> lifecycleStates, Set<LifecycleStateEnum> lastStateStates, boolean inTransaction);
-
- public Either<Set<Resource>, StorageOperationStatus> getCatalogData(Map<String, Object> propertiesToMatch, boolean inTransaction);
-
- public Either<Resource, StorageOperationStatus> getLatestByName(String resourceName, boolean inTransaction);
-
- public Either<Resource, StorageOperationStatus> overrideResource(Resource resource, Resource resourceSaved, boolean inTransaction);
-
- public Either<List<Resource>, StorageOperationStatus> getTesterFollowed(String userId, Set<LifecycleStateEnum> lifecycleStates, boolean inTransaction);
-
- public Either<List<Resource>, StorageOperationStatus> getResourceListByUuid(String uuid, boolean inTransaction);
-
- public Either<List<Resource>, StorageOperationStatus> getLatestResourceByUuid(String uuid, boolean inTransaction);
-
- public Either<List<Resource>, StorageOperationStatus> getResourceListBySystemName(String systemName, boolean inTransaction);
-
- public Either<List<Resource>, StorageOperationStatus> getResourceCatalogData(boolean inTransaction);
-
- public Either<List<Resource>, StorageOperationStatus> getResourceCatalogDataVFLatestCertifiedAndNonCertified(boolean inTransaction);
-
- public Either<List<Resource>, StorageOperationStatus> getResourceByNameAndVersion(String name, String version, boolean inTransaction);
-
- public Either<List<Resource>, StorageOperationStatus> getResourceByNameAndVersion(String name, String version);
-
- public Either<Resource, StorageOperationStatus> getResourceBySystemNameAndVersion(String name, String version, Map<String, Object> additionalParams, boolean inTransaction);
-
- // public Either<List<Resource>, StorageOperationStatus>
- // getAllNotCheckoutResources(boolean getAbstract);
-
- // public Either<List<Resource>, StorageOperationStatus>
- // getAllNotCheckoutResources(boolean getAbstract, Boolean isHighest);
-
- public Either<List<String>, StorageOperationStatus> getAllResourcesMarkedForDeletion();
-
- public Either<Boolean, StorageOperationStatus> isResourceInUse(String resourceToDelete);
-
- public Either<Resource, StorageOperationStatus> getLatestByToscaResourceName(String toscaResourceName, boolean inTransaction);
-
- public Either<Boolean, StorageOperationStatus> validateToscaResourceNameExists(String templateName);
-
- public Either<Boolean, StorageOperationStatus> validateToscaResourceNameExtends(String templateNameCurrent, String templateNameExtends);
-
- /**
- *
- * @param resource the resource to look for its derived resources
- * @return all resources which derives from the given resource
- */
- Either<List<Resource>, StorageOperationStatus> getAllDerivedResources(Resource resource);
-
- /**
- *
- * @return all root resources (i.e all normatives with tosca name {@code Resource.ROOT_RESOURCE}
- */
- Either<List<Resource>, StorageOperationStatus> getRootResources();
-
- /**
- *
- * @return all resources with type VF
- */
- Either<List<Resource>, StorageOperationStatus> getVFResources();
-
-
-}
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IServiceOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IServiceOperation.java
deleted file mode 100644
index 51f21ce5b8..0000000000
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IServiceOperation.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.openecomp.sdc.be.model.operations.api;
-
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.openecomp.sdc.be.model.*;
-
-import fj.data.Either;
-
-public interface IServiceOperation extends IComponentOperation {
-
- public Either<Service, StorageOperationStatus> createService(Service service);
-
- public Either<Service, StorageOperationStatus> createService(Service service, boolean inTransaction);
-
- public Either<Service, StorageOperationStatus> getService(String uniqueId);
-
- public Either<Service, StorageOperationStatus> getService(String uniqueId, boolean inTransaction);
-
- public Either<Service, StorageOperationStatus> getService(String uniqueId, ComponentParametersView componentParametersView, boolean inTransaction);
-
- public Either<Service, StorageOperationStatus> deleteService(String uniqueId);
-
- public Either<Service, StorageOperationStatus> deleteService(String uniqueId, boolean inTransaction);
-
- public Either<Boolean, StorageOperationStatus> validateServiceNameExists(String serviceName);
-
- public Either<List<Service>, StorageOperationStatus> getFollowed(String userId, Set<LifecycleStateEnum> lifecycleStates, Set<LifecycleStateEnum> lastStateStates, boolean inTransaction);
-
- public Either<Service, StorageOperationStatus> updateService(Service service, boolean inTransaction);
-
- public Either<Set<Service>, StorageOperationStatus> getCatalogData(Map<String, Object> propertiesToMatch, boolean inTransaction);
-
- public Either<List<Service>, StorageOperationStatus> getTesterFollowed(String userId, Set<LifecycleStateEnum> lifecycleStates, boolean inTransaction);
-
- public Either<Set<Service>, StorageOperationStatus> getCertifiedServicesWithDistStatus(Map<String, Object> propertiesToMatch, Set<DistributionStatusEnum> distStatus, boolean inTransaction);
-
- public Either<Service, StorageOperationStatus> updateDestributionStatus(Service service, User user, DistributionStatusEnum distributionStatus);
-
- public Either<List<Service>, StorageOperationStatus> getServiceCatalogData(boolean inTransaction);
-
- public Either<List<Service>, StorageOperationStatus> getServiceCatalogDataLatestCertifiedAndNotCertified(boolean inTransaction);
-
- public Either<Service, StorageOperationStatus> getServiceByNameAndVersion(String name, String version, Map<String, Object> additionalParams, boolean inTransaction);
-
- public Either<Service, StorageOperationStatus> getServiceByNameAndVersion(String name, String version);
-
- public Either<Service, StorageOperationStatus> getServiceBySystemNameAndVersion(String name, String version, boolean inTransaction);
-
- public Either<List<Service>, StorageOperationStatus> getServiceListByUuid(String uuid, boolean inTransaction);
-
- public Either<List<Service>, StorageOperationStatus> getLatestServiceByUuid(String uuid, boolean inTransaction);
-
- public Either<List<Service>, StorageOperationStatus> getServiceListBySystemName(String systemName, boolean inTransaction);
-
- Either<List<Service> , StorageOperationStatus> getAll();
-}
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IUserAdminOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IUserAdminOperation.java
index 254432c682..3df954fc36 100644
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IUserAdminOperation.java
+++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/IUserAdminOperation.java
@@ -36,8 +36,6 @@ public interface IUserAdminOperation {
public Either<User, ActionStatus> getUserData(String id, boolean inTransaction);
- public Either<User, ActionStatus> getInactiveUserData(String id);
-
public Either<User, StorageOperationStatus> saveUserData(User user);
public Either<User, StorageOperationStatus> updateUserData(User user);
@@ -48,11 +46,6 @@ public interface IUserAdminOperation {
public Either<List<User>, ActionStatus> getAllUsersWithRole(String role, String status);
- Either<List<User>, ActionStatus> getAllUsers();
-
public Either<List<Edge>, StorageOperationStatus> getUserPendingTasksList(User user, Map<String, Object> properties);
- public Either<ImmutablePair<User, FunctionalMenuInfo>, ActionStatus> getUserDataWithFunctionalMenu(String userId);
-
- public Either<FunctionalMenuInfo, TitanOperationStatus> createOrUpdateFunctionalMenu(String userId, String newFunctionalMenu);
}
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/ToscaDefinitionPathCalculator.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/ToscaDefinitionPathCalculator.java
deleted file mode 100644
index 2a5893951a..0000000000
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/api/ToscaDefinitionPathCalculator.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.openecomp.sdc.be.model.operations.api;
-
-import org.openecomp.sdc.be.dao.graph.datatype.GraphEdge;
-import org.openecomp.sdc.be.model.ComponentInstance;
-
-import java.util.List;
-
-public interface ToscaDefinitionPathCalculator {
-
- List<String> calculateToscaDefinitionPath(ComponentInstance componentInstance, GraphEdge edge);
-
-}
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/AllOperationsUtil.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/AllOperationsUtil.java
deleted file mode 100644
index c005176238..0000000000
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/AllOperationsUtil.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.openecomp.sdc.be.model.operations.impl;
-
-import org.springframework.stereotype.Component;
-
-@Component("all-operations")
-public class AllOperationsUtil {
-
- @javax.annotation.Resource
- private PropertyOperation propertyOperation;
-
- @javax.annotation.Resource
- private RequirementOperation requirementOperation;
-
- @javax.annotation.Resource
- private CapabilityOperation capabilityOperation;
-
- @javax.annotation.Resource
- private ResourceOperation resourceOperation;
-
- public PropertyOperation getPropertyOperation() {
- return propertyOperation;
- }
-
- public RequirementOperation getRequirementOperation() {
- return requirementOperation;
- }
-
- public CapabilityOperation getCapabilityOperation() {
- return capabilityOperation;
- }
-
- public ResourceOperation getResourceOperation() {
- return resourceOperation;
- }
-
-}
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ArtifactOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ArtifactOperation.java
index 1e1c9267e6..d9fe1eea92 100644
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ArtifactOperation.java
+++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ArtifactOperation.java
@@ -131,24 +131,6 @@ public class ArtifactOperation implements IArtifactOperation {
}
@Override
- public StorageOperationStatus addArifactToComponent(TitanVertex artifactInfo, TitanVertex parentVertex, String label) {
-
- // save logical artifact ref name on edge as property
- Map<String, Object> properties = new HashMap<String, Object>();
- properties.put(GraphEdgePropertiesDictionary.NAME.getProperty(), label);
- String groupInfo = (String) titanGenericDao.getProperty(artifactInfo, GraphPropertiesDictionary.ARTIFACT_GROUP_TYPE.getProperty());
- if (groupInfo != null)
- properties.put(GraphEdgePropertiesDictionary.GROUP_TYPE.getProperty(), groupInfo);
- TitanOperationStatus relation = titanGenericDao.createEdge(parentVertex, artifactInfo, GraphEdgeLabels.ARTIFACT_REF, properties);
- if (!relation.equals(TitanOperationStatus.OK)) {
- log.debug("Failed to create relation in graph from id {} to new artifact {}", parentVertex, label);
- return DaoStatusConverter.convertTitanStatusToStorageStatus(relation);
- }
- return StorageOperationStatus.OK;
-
- }
-
- @Override
public StorageOperationStatus addArifactToComponent(ArtifactDefinition artifactInfo, String parentId, NodeTypeEnum type, boolean failIfExist, TitanVertex parentVertex) {
StorageOperationStatus status = addArtifactToGraph(artifactInfo, parentId, type, failIfExist, parentVertex);
@@ -345,156 +327,6 @@ public class ArtifactOperation implements IArtifactOperation {
}
@Override
- public Either<ArtifactDefinition, StorageOperationStatus> updateHeatEnvArtifact( String id, ArtifactDefinition artifactEnvInfo, String artifactId, String newArtifactId, NodeTypeEnum type, boolean inTransaction){
-
-
- Either<ArtifactData, StorageOperationStatus> status = dissociateAndAssociateHeatEnvArtifact(id, artifactEnvInfo, artifactId, newArtifactId, type, inTransaction);
-
-
- if (status.isRight()) {
- if (false == inTransaction) {
- titanGenericDao.rollback();
- }
- log.debug("Failed to update artifact {} of {} {}. status is {}", artifactId, type.getName(), id, status.right().value());
- BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeFailedUpdateNodeError, "Failed to update artifact " + artifactId + " of " + type.getName() + " " + id + ". status is" + status.right().value(), artifactId,
- String.valueOf(status.right().value()));
- BeEcompErrorManager.getInstance().logBeFailedUpdateNodeError("Update Artifact", artifactId, String.valueOf(status.right().value()));
- return Either.right(status.right().value());
- } else {
- if (false == inTransaction) {
- titanGenericDao.commit();
- }
- ArtifactData artifactData = status.left().value();
-
- ArtifactDefinition artifactDefResult = convertArtifactDataToArtifactDefinition(artifactData);
- log.debug("The returned ArtifactDefintion is {}", artifactDefResult);
- return Either.left(artifactDefResult);
- }
-
- }
-
- private Either<ArtifactData, StorageOperationStatus> dissociateAndAssociateHeatEnvArtifact(String id, ArtifactDefinition artifactEnvInfo, String artifactId, String newArtifactId, NodeTypeEnum type, boolean inTransaction) {
-
- ArtifactDefinition heatEnvArt = artifactEnvInfo;
- if(heatEnvArt == null ){
- Either<ArtifactDefinition, StorageOperationStatus> heatEnvEither = getHeatEnvByGeneratedFromId(artifactId);
- if (heatEnvEither.isRight()) {
- log.error("No heat env artifact node for id = {} ", artifactId);
- return Either.right(StorageOperationStatus.NOT_FOUND);
- }
- heatEnvArt = heatEnvEither.left().value();
- }
-
- Either<ArtifactData, StorageOperationStatus> status = updateArtifactOnGraph(heatEnvArt, heatEnvArt.getUniqueId(), type, id);
- if(status.isRight()){
- log.error("Failed to update heat env. status is {}", status.right().value());
- return status;
- }
-
- UniqueIdData generatedFromArtifactNode = new UniqueIdData(NodeTypeEnum.ArtifactRef, heatEnvArt.getUniqueId());
- UniqueIdData oldArtifactNode = new UniqueIdData(NodeTypeEnum.ArtifactRef, artifactId);
-
- Either<GraphRelation, TitanOperationStatus> deleteRelation = titanGenericDao.deleteRelation(generatedFromArtifactNode, oldArtifactNode, GraphEdgeLabels.GENERATED_FROM);
- if (deleteRelation.isRight()) {
- TitanOperationStatus titanStatus = deleteRelation.right().value();
- if (titanStatus == TitanOperationStatus.NOT_FOUND) {
- titanStatus = TitanOperationStatus.INVALID_ID;
- }
- Either.right(titanStatus);
- }
-
- UniqueIdData newArtifactNode = new UniqueIdData(NodeTypeEnum.ArtifactRef, newArtifactId);
-
- Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(generatedFromArtifactNode, newArtifactNode, GraphEdgeLabels.GENERATED_FROM, null);
- if (createRelation.isRight()) {
- log.error("Failed to create relation from heat_env {} to heat {}", newArtifactId, generatedFromArtifactNode);
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(createRelation.right().value()));
- }
- return status;
- }
-
- @Override
- public Either<ArtifactDefinition, StorageOperationStatus> updateArifactDefinition(ArtifactDefinition artifactInfo, boolean inTransaction) {
- Either<ArtifactData, TitanOperationStatus> status = updateArifactDataDefinition(artifactInfo);
-
- if (status.isRight()) {
- if (false == inTransaction) {
- titanGenericDao.rollback();
- }
- log.debug("Failed to update artifact {}", artifactInfo.getUniqueId());
- BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeFailedUpdateNodeError, "Failed to update artifact " + artifactInfo.getUniqueId() + ". status is" + status.right().value(), artifactInfo.getUniqueId(),
- String.valueOf(status.right().value()));
- BeEcompErrorManager.getInstance().logBeFailedUpdateNodeError("Update Artifact", artifactInfo.getUniqueId(), String.valueOf(status.right().value()));
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status.right().value()));
- } else {
- if (false == inTransaction) {
- titanGenericDao.commit();
- }
- ArtifactData artifactData = status.left().value();
-
- ArtifactDefinition artifactDefResult = convertArtifactDataToArtifactDefinition(artifactData);
- log.debug("The returned ArtifactDefintion is {}", artifactDefResult);
- return Either.left(artifactDefResult);
- }
- }
-
- @Override
- public Either<ArtifactDefinition, StorageOperationStatus> updateHeatEnvPlaceholder(ArtifactDefinition artifactInfo, boolean inTransaction) {
-
- updateVersionAndDate(artifactInfo, artifactInfo.getArtifactVersion());
-
- Either<ArtifactData, TitanOperationStatus> status = updateArifactDataDefinition(artifactInfo);
-
- if (status.isRight()) {
- if (false == inTransaction) {
- titanGenericDao.rollback();
- }
- log.debug("Failed to update artifact {}", artifactInfo.getUniqueId());
- BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeFailedUpdateNodeError, "Failed to update artifact " + artifactInfo.getUniqueId() + ". status is" + status.right().value(), artifactInfo.getUniqueId(),
- String.valueOf(status.right().value()));
- BeEcompErrorManager.getInstance().logBeFailedUpdateNodeError("Update Artifact", artifactInfo.getUniqueId(), String.valueOf(status.right().value()));
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status.right().value()));
- } else {
- if (false == inTransaction) {
- titanGenericDao.commit();
- }
- ArtifactData artifactData = status.left().value();
-
- ArtifactDefinition artifactDefResult = convertArtifactDataToArtifactDefinition(artifactData);
- log.debug("The returned ArtifactDefintion is {}" , artifactDefResult);
- return Either.left(artifactDefResult);
- }
- }
-
- @Override
- public Either<ArtifactDefinition, StorageOperationStatus> getHeatEnvByGeneratedFromId(String generatedFromId) {
- String heatEnvId = generatedFromId.concat("env");
- Either<ArtifactDefinition, StorageOperationStatus> heatEnvEither = getArtifactById(heatEnvId, true);
- if (heatEnvEither.isRight()) {
- log.error("No heat env artifact node for id = {} ", heatEnvId);
- return Either.right(StorageOperationStatus.NOT_FOUND);
- }
- return heatEnvEither;
- }
-
- private Either<ArtifactData, TitanOperationStatus> updateArifactDataDefinition(ArtifactDefinition artifactInfo) {
- Either<TitanGraph, TitanOperationStatus> graph = titanGenericDao.getGraph();
- if (graph.isRight()) {
- return Either.right(graph.right().value());
- }
-
- ArtifactData artifactData = new ArtifactData(artifactInfo);
-
- Either<ArtifactData, TitanOperationStatus> status = titanGenericDao.updateNode(artifactData, ArtifactData.class);
-
- if (status.isRight()) {
- return Either.right(status.right().value());
-
- }
- return Either.left(status.left().value());
- }
-
- @Override
public Either<ArtifactDefinition, StorageOperationStatus> removeArifactFromResource(String id, String artifactId, NodeTypeEnum type, boolean deleteMandatoryArtifact, boolean inTransaction) {
Either<ArtifactData, TitanOperationStatus> status = removeArtifactOnGraph(id, artifactId, type, deleteMandatoryArtifact);
@@ -519,10 +351,6 @@ public class ArtifactOperation implements IArtifactOperation {
}
}
- public Either<ArtifactData, StorageOperationStatus> updateToscaArtifactNameOnGraph(ArtifactDefinition artifactInfo, String artifactId, NodeTypeEnum type, String id) {
- return updateArtifactOnGraph(artifactInfo, artifactId, type, id);
- }
-
@SuppressWarnings("null")
private Either<ArtifactData, StorageOperationStatus> updateArtifactOnGraph(ArtifactDefinition artifactInfo, String artifactId, NodeTypeEnum type, String id) {
@@ -740,30 +568,7 @@ public class ArtifactOperation implements IArtifactOperation {
return Either.left(true);
}
- public Either<Integer, StorageOperationStatus> getParentsOfArtifact(String artifactId, NodeTypeEnum type) {
- Either<TitanGraph, TitanOperationStatus> graph = titanGenericDao.getGraph();
- if (graph.isRight()) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(graph.right().value()));
- }
- TitanGraph tGraph = graph.left().value();
- @SuppressWarnings("unchecked")
- Iterable<TitanVertex> verticesArtifact = tGraph.query().has(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ArtifactRef), artifactId).vertices();
- Iterator<TitanVertex> iterator = verticesArtifact.iterator();
- if (!iterator.hasNext()) {
- log.debug("No artifact node for id = {}", artifactId);
- return Either.right(StorageOperationStatus.NOT_FOUND);
- }
- Vertex artifactV = iterator.next();
- Iterator<Edge> iterEdge = artifactV.edges(Direction.IN, GraphEdgeLabels.ARTIFACT_REF.getProperty());
- int edgeCount = 0;
- while (iterEdge.hasNext()) {
- Edge edge = iterEdge.next();
- ++edgeCount;
- }
- return Either.left(edgeCount);
- }
-
- public Either<ArtifactData, TitanOperationStatus> removeArtifactOnGraph(String id, String artifactId, NodeTypeEnum type, boolean deleteMandatoryArtifact) {
+ private Either<ArtifactData, TitanOperationStatus> removeArtifactOnGraph(String id, String artifactId, NodeTypeEnum type, boolean deleteMandatoryArtifact) {
Either<TitanGraph, TitanOperationStatus> graph = titanGenericDao.getGraph();
if (graph.isRight()) {
return Either.right(graph.right().value());
@@ -928,288 +733,7 @@ public class ArtifactOperation implements IArtifactOperation {
}
- public Either<Map<String, TitanVertex>, StorageOperationStatus> getArtifactsVertecies(String parentId, NodeTypeEnum parentType, boolean inTransaction) {
- Either<Map<String, TitanVertex>, StorageOperationStatus> result = null;
- try {
- Either<TitanGraph, TitanOperationStatus> graph = titanGenericDao.getGraph();
- if (graph.isRight()) {
- log.debug("Failed to work with graph {}", graph.right().value());
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(graph.right().value()));
- }
- TitanGraph tGraph = graph.left().value();
- @SuppressWarnings("unchecked")
- Iterable<TitanVertex> vertices = tGraph.query().has(UniqueIdBuilder.getKeyByNodeType(parentType), parentId).vertices();
- if (vertices == null) {
- log.debug("No nodes for type {} for id = {}", parentType, parentId);
- result = Either.right(StorageOperationStatus.NOT_FOUND);
- return result;
- }
- Iterator<TitanVertex> iterator = vertices.iterator();
-
- Map<String, TitanVertex> artifactMap = new HashMap<String, TitanVertex>();
- while (iterator.hasNext()) {
- Vertex vertex = iterator.next();
- Iterator<Edge> iteratorEdge = vertex.edges(Direction.OUT, GraphEdgeLabels.ARTIFACT_REF.getProperty());
-
- if (iteratorEdge != null) {
-
- while (iteratorEdge.hasNext()) {
- Edge edge = iteratorEdge.next();
-
- TitanVertex artifactV = (TitanVertex) edge.inVertex();
- String label = (String) titanGenericDao.getProperty(artifactV, GraphPropertiesDictionary.ARTIFACT_LABEL.getProperty());
- artifactMap.put(label, artifactV);
- log.debug("Artifact was added to list {}", label);
- }
- }
- }
- result = Either.left(artifactMap);
- return result;
- } finally {
- if (inTransaction == false) {
- if (result == null || result.isRight()) {
- this.titanGenericDao.rollback();
- } else {
- this.titanGenericDao.commit();
- }
-
- }
- }
-
- }
-
- @Override
- public Either<ArtifactDefinition, StorageOperationStatus> getArtifactById(String id, boolean inTransaction) {
- Either<ArtifactDefinition, StorageOperationStatus> result = null;
- try {
- Either<ArtifactData, TitanOperationStatus> artifact = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ArtifactRef), id, ArtifactData.class);
- if (artifact.isRight()) {
- if (artifact.right().value().equals(TitanOperationStatus.NOT_FOUND)) {
- result = Either.right(StorageOperationStatus.ARTIFACT_NOT_FOUND);
- } else {
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(artifact.right().value()));
- }
- return result;
- }
- ArtifactData artifactData = artifact.left().value();
-
- ArtifactDefinition artifactDef = new ArtifactDefinition(artifactData.getArtifactDataDefinition());
- List<HeatParameterDefinition> heatParams = new ArrayList<HeatParameterDefinition>();
- StorageOperationStatus heatParametersStatus = heatParametersOperation.getHeatParametersOfNode(NodeTypeEnum.ArtifactRef, artifactDef.getUniqueId(), heatParams);
- if (!heatParametersStatus.equals(StorageOperationStatus.OK)) {
- log.debug("failed to get heat parameters for artifact {}", id);
- return Either.right(heatParametersStatus);
- }
- if (!heatParams.isEmpty()) {
- artifactDef.setListHeatParameters(heatParams);
- }
-
- Either<ImmutablePair<ArtifactData, GraphEdge>, TitanOperationStatus> generatedFromArtifact = titanGenericDao.getChild(artifactData.getUniqueIdKey(), (String) artifactData.getUniqueId(), GraphEdgeLabels.GENERATED_FROM,
- NodeTypeEnum.ArtifactRef, ArtifactData.class);
- if (generatedFromArtifact.isLeft()) {
- ImmutablePair<ArtifactData, GraphEdge> pair = generatedFromArtifact.left().value();
- String generatedFromId = (String) pair.left.getUniqueId();
- log.debug("artifact {} is generated from {}.", artifactData.getUniqueId(), generatedFromId);
- artifactDef.setGeneratedFromId(generatedFromId);
- Either<List<HeatParameterDefinition>, StorageOperationStatus> heatParamsForEnv = getHeatParamsForEnv(artifactDef);
- if (heatParamsForEnv.isRight()) {
- log.debug("failed to get heat parameters values for heat artifact {}", artifactDef.getUniqueId());
- return Either.right(heatParamsForEnv.right().value());
- } else {
- artifactDef.setListHeatParameters(heatParamsForEnv.left().value());
- }
- }
-
- result = Either.left(artifactDef);
- return result;
- } finally {
- if (inTransaction == false) {
- if (result == null || result.isRight()) {
- this.titanGenericDao.rollback();
- } else {
- this.titanGenericDao.commit();
- }
-
- }
- }
- }
-
- public Either<List<HeatParameterDefinition>, StorageOperationStatus> getHeatParamsForEnv(ArtifactDefinition heatEnvArtifact) {
-
- List<HeatParameterDefinition> heatParams = new ArrayList<HeatParameterDefinition>();
- StorageOperationStatus heatParametersStatus = heatParametersOperation.getHeatParametersOfNode(NodeTypeEnum.ArtifactRef, heatEnvArtifact.getGeneratedFromId(), heatParams);
- if (!heatParametersStatus.equals(StorageOperationStatus.OK)) {
- log.debug("failed to get heat parameters for node {}", heatEnvArtifact.getGeneratedFromId());
- return Either.right(heatParametersStatus);
- }
- if (!heatParams.isEmpty()) {
-
- Map<String, HeatParameterValueData> heatValuesMap = new HashMap<String, HeatParameterValueData>();
- Either<List<ImmutablePair<HeatParameterValueData, GraphEdge>>, TitanOperationStatus> heatEnvValuesWithEdges = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ArtifactRef), heatEnvArtifact.getUniqueId(),
- GraphEdgeLabels.PARAMETER_VALUE, NodeTypeEnum.HeatParameterValue, HeatParameterValueData.class);
-
- if (heatEnvValuesWithEdges.isRight() && !heatEnvValuesWithEdges.right().value().equals(TitanOperationStatus.NOT_FOUND)) {
- TitanOperationStatus status = heatEnvValuesWithEdges.right().value();
- if (!status.equals(TitanOperationStatus.NOT_FOUND)) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- }
- } else if (heatEnvValuesWithEdges.isLeft()) {
- for (ImmutablePair<HeatParameterValueData, GraphEdge> pair : heatEnvValuesWithEdges.left().value()) {
- HeatParameterValueData parameterValue = pair.left;
- Object heatParameterName = pair.right.getProperties().get(GraphEdgePropertiesDictionary.NAME.getProperty());
- heatValuesMap.put((String) heatParameterName, parameterValue);
- }
- }
-
- for (HeatParameterDefinition parameter : heatParams) {
- if (parameter.getCurrentValue() != null) {
- if ("number".equals(parameter.getType())) {
- parameter.setDefaultValue(new BigDecimal(parameter.getCurrentValue()).toPlainString());
- } else {
- parameter.setDefaultValue(parameter.getCurrentValue());
- }
- }
- HeatParameterValueData heatParameterValueData = heatValuesMap.get(parameter.getName());
- if (heatParameterValueData != null && heatParameterValueData.getValue() != null) {
- if ("number".equals(parameter.getType())) {
- parameter.setCurrentValue(new BigDecimal(heatParameterValueData.getValue()).toPlainString());
- } else {
- parameter.setCurrentValue(heatParameterValueData.getValue());
- }
- parameter.setUniqueId((String) heatParameterValueData.getUniqueId());
-
- }
- }
- }
-
- return Either.left(heatParams);
-
- }
-
- @Override
- public Either<Map<String, ArtifactDefinition>, StorageOperationStatus> getArtifacts(String parentId, NodeTypeEnum parentType, boolean inTransaction, String groupType) {
-
- Either<Map<String, ArtifactDefinition>, StorageOperationStatus> result = null;
- try {
- Either<TitanGraph, TitanOperationStatus> graph = titanGenericDao.getGraph();
- if (graph.isRight()) {
- log.debug("Failed to work with graph {}", graph.right().value());
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(graph.right().value()));
- }
- TitanGraph tGraph = graph.left().value();
- @SuppressWarnings("unchecked")
- Iterable<TitanVertex> vertices = tGraph.query().has(UniqueIdBuilder.getKeyByNodeType(parentType), parentId).vertices();
- if (vertices == null || vertices.iterator() == null || false == vertices.iterator().hasNext()) {
- log.debug("No nodes for type {} for id = {}", parentType, parentId);
- result = Either.right(StorageOperationStatus.NOT_FOUND);
- return result;
- }
-
- Iterator<TitanVertex> iterator = vertices.iterator();
- Vertex vertex = iterator.next();
-
- Map<String, Object> edgeProperties = null;
- if (groupType != null) {
- edgeProperties = new HashMap<>();
- edgeProperties.put(GraphEdgePropertiesDictionary.GROUP_TYPE.getProperty(), groupType);
- }
- Either<List<ImmutablePair<ArtifactData, GraphEdge>>, TitanOperationStatus> childrenByEdgeCriteria = titanGenericDao.getChildrenByEdgeCriteria(vertex, parentId, GraphEdgeLabels.ARTIFACT_REF, NodeTypeEnum.ArtifactRef, ArtifactData.class,
- edgeProperties);
-
- if (childrenByEdgeCriteria.isRight()) {
- TitanOperationStatus status = childrenByEdgeCriteria.right().value();
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
-
- List<ImmutablePair<ArtifactData, GraphEdge>> list = childrenByEdgeCriteria.left().value();
-
- Map<String, ArtifactDefinition> artifactsMap = new HashMap<>();
-
- for (ImmutablePair<ArtifactData, GraphEdge> pair : list) {
- ArtifactData artifactData = pair.getLeft();
- ArtifactDefinition artifactDefinition = new ArtifactDefinition(artifactData.getArtifactDataDefinition());
-
- List<HeatParameterDefinition> heatParams = new ArrayList<HeatParameterDefinition>();
- StorageOperationStatus heatParametersStatus = heatParametersOperation.getHeatParametersOfNode(NodeTypeEnum.ArtifactRef, artifactDefinition.getUniqueId(), heatParams);
- if (!heatParametersStatus.equals(StorageOperationStatus.OK)) {
- log.debug("failed to get heat parameters for node {} {}", parentType.getName(), parentId);
- return Either.right(heatParametersStatus);
- }
- if (!heatParams.isEmpty()) {
- artifactDefinition.setListHeatParameters(heatParams);
- }
-
- Either<ImmutablePair<ArtifactData, GraphEdge>, TitanOperationStatus> getResult = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ArtifactRef), artifactDefinition.getUniqueId(), GraphEdgeLabels.GENERATED_FROM,
- NodeTypeEnum.ArtifactRef, ArtifactData.class);
-
- if (getResult.isRight()) {
- TitanOperationStatus status = getResult.right().value();
- if (!status.equals(TitanOperationStatus.NOT_FOUND)) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- }
- } else {
- ImmutablePair<ArtifactData, GraphEdge> immutablePair = getResult.left().value();
- artifactDefinition.setGeneratedFromId((String) immutablePair.left.getUniqueId());
- }
-
- artifactsMap.put(artifactDefinition.getArtifactLabel(), artifactDefinition);
- log.debug("Artifact {} was added to list ", artifactData.getUniqueId());
- }
-
- result = Either.left(artifactsMap);
- return result;
-
- } finally {
- if (inTransaction == false) {
- if (result == null || result.isRight()) {
- this.titanGenericDao.rollback();
- } else {
- this.titanGenericDao.commit();
- }
-
- }
- }
- }
-
- @Override
- public Either<ArtifactDefinition, StorageOperationStatus> addHeatEnvArtifact(ArtifactDefinition artifactHeatEnv, ArtifactDefinition artifactHeat, String parentId, NodeTypeEnum parentType, boolean failIfExist) {
-
- Either<ArtifactDefinition, StorageOperationStatus> result = null;
- Either<ArtifactDefinition, StorageOperationStatus> heatArtifactOnGraph = addArifactToComponent(artifactHeatEnv, parentId, parentType, failIfExist, true);
- if (heatArtifactOnGraph.isRight()) {
- log.debug("failed to create heat env artifact on graph");
- result = heatArtifactOnGraph;
- return result;
- }
-
- ArtifactDefinition artifactDefinition = heatArtifactOnGraph.left().value();
- // add relation from heatEnv to heat
- UniqueIdData heatData = new UniqueIdData(NodeTypeEnum.ArtifactRef, artifactHeat.getUniqueId());
- UniqueIdData heatEnvData = new UniqueIdData(NodeTypeEnum.ArtifactRef, artifactDefinition.getUniqueId());
-
- Either<GraphRelation, TitanOperationStatus> relation = titanGenericDao.getRelation(heatEnvData, heatData, GraphEdgeLabels.GENERATED_FROM);
- if (relation.isRight()) {
- // TODO: add error in case of error
- TitanOperationStatus status = relation.right().value();
- if (status == TitanOperationStatus.NOT_FOUND) {
- Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(heatEnvData, heatData, GraphEdgeLabels.GENERATED_FROM, null);
- if (createRelation.isRight()) {
- status = createRelation.right().value();
- log.debug("failed to add relation from heat_env artifact to heat artifact. error: {}", status);
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
- }
- }
-
- artifactDefinition.setGeneratedFromId(artifactHeat.getUniqueId());
- log.trace("heat env artifact added successfuly to resource instance");
- result = Either.left(artifactDefinition);
- return result;
- }
-
- public void updateUUID(ArtifactDataDefinition artifactData, String oldChecksum, String oldVesrion) {
+ private void updateUUID(ArtifactDataDefinition artifactData, String oldChecksum, String oldVesrion) {
if (oldVesrion == null || oldVesrion.isEmpty())
oldVesrion = "0";
@@ -1240,96 +764,4 @@ public class ArtifactOperation implements IArtifactOperation {
artifactData.setArtifactVersion(String.valueOf(newVersion));
}
- @Override
- public Either<ArtifactDefinition, StorageOperationStatus> getHeatArtifactByHeatEnvId(String heatEnvId, boolean inTransaction) {
-
- Either<ArtifactDefinition, StorageOperationStatus> result = null;
- try {
- Either<TitanGraph, TitanOperationStatus> graph = titanGenericDao.getGraph();
- if (graph.isRight()) {
- log.debug("Failed to work with graph {}", graph.right().value());
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(graph.right().value()));
- }
- TitanGraph tGraph = graph.left().value();
- @SuppressWarnings("unchecked")
- Iterable<TitanVertex> vertices = tGraph.query().has(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ArtifactRef), heatEnvId).vertices();
- if (vertices == null || vertices.iterator() == null || false == vertices.iterator().hasNext()) {
- log.debug("No nodes for type {} for id = {}", NodeTypeEnum.ArtifactRef, heatEnvId);
- result = Either.right(StorageOperationStatus.INVALID_ID);
- return result;
- }
-
- Iterator<TitanVertex> iterator = vertices.iterator();
- Vertex vertex = iterator.next();
-
- Map<String, Object> edgeProperties = null;
- Either<List<ImmutablePair<ArtifactData, GraphEdge>>, TitanOperationStatus> childrenByEdgeCriteria = titanGenericDao.getChildrenByEdgeCriteria(vertex, heatEnvId, GraphEdgeLabels.GENERATED_FROM, NodeTypeEnum.ArtifactRef, ArtifactData.class,
- edgeProperties);
-
- if (childrenByEdgeCriteria.isRight()) {
- TitanOperationStatus status = childrenByEdgeCriteria.right().value();
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
-
- List<ImmutablePair<ArtifactData, GraphEdge>> list = childrenByEdgeCriteria.left().value();
-
- if (list == null || list.isEmpty() == true) {
- return Either.right(StorageOperationStatus.NOT_FOUND);
- }
-
- if (list.size() > 1) {
- return Either.right(StorageOperationStatus.INVALID_ID);
- }
-
- ImmutablePair<ArtifactData, GraphEdge> immutablePair = list.get(0);
-
- ArtifactDefinition artifactDefinition = new ArtifactDefinition(immutablePair.left.getArtifactDataDefinition());
-
- log.debug("The artifact {} was generated from artifact {}", heatEnvId, artifactDefinition);
-
- result = Either.left(artifactDefinition);
- return result;
-
- } finally {
- if (inTransaction == false) {
- if (result == null || result.isRight()) {
- this.titanGenericDao.rollback();
- } else {
- this.titanGenericDao.commit();
- }
-
- }
- }
- }
-
- @Override
- public Either<ArtifactData, StorageOperationStatus> getLatestArtifactDataByArtifactUUID(String artifactUUID, boolean inTransaction) {
- Either<ArtifactData, StorageOperationStatus> result = null;
- try {
- NodeTypeEnum nodeType = NodeTypeEnum.ArtifactRef;
- Map<String, Object> propertiesToMatch = new HashMap<>();
- propertiesToMatch.put(GraphPropertiesDictionary.ARTIFACT_UUID.getProperty(), artifactUUID);
- Either<List<ArtifactData>, TitanOperationStatus> getArtifactEither = titanGenericDao.getByCriteria(nodeType, propertiesToMatch, ArtifactData.class);
- if (getArtifactEither.isRight()) {
- log.debug("Couldn't fetch artifact data for artifact with uuid {}, error: {}", nodeType, getArtifactEither.right().value());
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(getArtifactEither.right().value()));
- } else {
- List<ArtifactData> artifacts = getArtifactEither.left().value();
- ArtifactData latestArtifact = artifacts.size() == 1 ? artifacts.get(0)
- : artifacts.stream().max((a1, a2) -> Double.compare(Double.parseDouble(a1.getArtifactDataDefinition().getArtifactVersion()), Double.parseDouble(a2.getArtifactDataDefinition().getArtifactVersion()))).get();
- result = Either.left(latestArtifact);
- }
- return result;
- } finally {
- if (!inTransaction) {
- if (result == null || result.isRight()) {
- this.titanGenericDao.rollback();
- } else {
- this.titanGenericDao.commit();
- }
- }
- }
- }
-
}
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/AttributeOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/AttributeOperation.java
deleted file mode 100644
index 279aab667c..0000000000
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/AttributeOperation.java
+++ /dev/null
@@ -1,461 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.openecomp.sdc.be.model.operations.impl;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
-import java.util.function.Consumer;
-import java.util.function.Supplier;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-import org.apache.commons.lang.StringUtils;
-import org.apache.commons.lang3.tuple.ImmutablePair;
-import org.openecomp.sdc.be.dao.graph.datatype.GraphEdge;
-import org.openecomp.sdc.be.dao.neo4j.GraphEdgeLabels;
-import org.openecomp.sdc.be.dao.titan.TitanOperationStatus;
-import org.openecomp.sdc.be.datatypes.elements.PropertyDataDefinition;
-import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
-import org.openecomp.sdc.be.model.ComponentInstance;
-import org.openecomp.sdc.be.model.ComponentInstanceProperty;
-import org.openecomp.sdc.be.model.DataTypeDefinition;
-import org.openecomp.sdc.be.model.PropertyDefinition;
-import org.openecomp.sdc.be.model.operations.api.IAttributeOperation;
-import org.openecomp.sdc.be.model.operations.api.IPropertyOperation;
-import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
-import org.openecomp.sdc.be.resources.data.AttributeData;
-import org.openecomp.sdc.be.resources.data.AttributeValueData;
-import org.openecomp.sdc.common.datastructure.Wrapper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import com.thinkaurelius.titan.core.TitanVertex;
-
-import fj.data.Either;
-
-/**
- * Class For Data Model Logic Relevant For Attributes
- *
- * @author mshitrit
- *
- */
-@Component("attribute-operation")
-public class AttributeOperation extends AbstractOperation implements IAttributeOperation {
- private static Logger log = LoggerFactory.getLogger(AttributeOperation.class.getName());
- @Autowired
- private IPropertyOperation propertyOperation;
-
- /**
- *
- * Add attribute to graph.
- *
- * 1. Add attribute node
- *
- * 2. Add edge between the former node to its parent(if exists)
- *
- * 3. Add property node and associate it to the node created at #1. (per property & if exists)
- *
- * @param attributeDefinition
- * @return
- */
- private Either<AttributeData, TitanOperationStatus> addAttributeToNodeType(PropertyDefinition attributeDefinition, NodeTypeEnum nodeType, String nodeUniqueId) {
- String attUniqueId = UniqueIdBuilder.buildAttributeUid(nodeUniqueId, attributeDefinition.getName());
- Supplier<AttributeData> dataBuilder = () -> buildAttributeData(attributeDefinition, attUniqueId);
- Supplier<String> defNameGenerator = () -> "Attribute : " + attributeDefinition.getName();
-
- return addDefinitionToNodeType(attributeDefinition, nodeType, nodeUniqueId, GraphEdgeLabels.ATTRIBUTE, dataBuilder, defNameGenerator);
-
- }
-
- private TitanOperationStatus addAttributeToNodeType(TitanVertex metadataVertex, PropertyDefinition attributeDefinition, NodeTypeEnum nodeType, String nodeUniqueId) {
- String attUniqueId = UniqueIdBuilder.buildAttributeUid(nodeUniqueId, attributeDefinition.getName());
- Supplier<AttributeData> dataBuilder = () -> buildAttributeData(attributeDefinition, attUniqueId);
- Supplier<String> defNameGenerator = () -> "Attribute : " + attributeDefinition.getName();
-
- return addDefinitionToNodeType(metadataVertex, attributeDefinition, nodeType, nodeUniqueId, GraphEdgeLabels.ATTRIBUTE, dataBuilder, defNameGenerator);
-
- }
-
- private AttributeData buildAttributeData(PropertyDefinition attributeDefinition, String attUniqueId) {
- attributeDefinition.setUniqueId(attUniqueId);
- return new AttributeData(attributeDefinition);
- }
-
- @Override
- public Either<AttributeData, StorageOperationStatus> deleteAttribute(String attributeId) {
- Either<AttributeData, TitanOperationStatus> either = deleteAttributeFromGraph(attributeId);
- if (either.isRight()) {
- StorageOperationStatus storageStatus = DaoStatusConverter.convertTitanStatusToStorageStatus(either.right().value());
- return Either.right(storageStatus);
- }
- return Either.left(either.left().value());
- }
-
- @Override
- public Either<Map<String, PropertyDefinition>, StorageOperationStatus> deleteAllAttributeAssociatedToNode(NodeTypeEnum nodeType, String uniqueId) {
- Wrapper<TitanOperationStatus> errorWrapper;
- List<PropertyDefinition> attributes = new ArrayList<>();
- TitanOperationStatus findAllResourceAttribues = findNodeNonInheretedAttribues(uniqueId, NodeTypeEnum.Resource, attributes);
- errorWrapper = (findAllResourceAttribues != TitanOperationStatus.OK) ? new Wrapper<>(findAllResourceAttribues) : new Wrapper<>();
-
- if (errorWrapper.isEmpty()) {
- for (PropertyDefinition attDef : attributes) {
- log.debug("Before deleting attribute from graph {}", attDef.getUniqueId());
- Either<AttributeData, TitanOperationStatus> deleteNode = titanGenericDao.deleteNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Attribute), attDef.getUniqueId(), AttributeData.class);
- if (deleteNode.isRight()) {
- errorWrapper.setInnerElement(deleteNode.right().value());
- break;
- }
- }
- }
-
- if (errorWrapper.isEmpty()) {
- Map<String, PropertyDefinition> attributesMap = attributes.stream().collect(Collectors.toMap(e -> e.getName(), e -> e));
- return Either.left(attributesMap);
- } else {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(errorWrapper.getInnerElement()));
- }
-
- }
-
- private Either<AttributeData, TitanOperationStatus> deleteAttributeFromGraph(String attributeId) {
- log.debug("Before deleting attribute from graph {}", attributeId);
- return titanGenericDao.deleteNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Attribute), attributeId, AttributeData.class);
- }
-
- @Override
- public TitanOperationStatus addAttributesToGraph(TitanVertex metadataVertex, Map<String, PropertyDefinition> attributes, String resourceId, Map<String, DataTypeDefinition> dataTypes) {
- TitanOperationStatus titanStatus = TitanOperationStatus.OK;
- for (PropertyDefinition attribute : attributes.values()) {
- TitanOperationStatus eitherAddAttribute = addAttributeToGraphByVertex(metadataVertex, attribute, resourceId, dataTypes);
- if (!eitherAddAttribute.equals(TitanOperationStatus.OK)) {
- titanStatus = eitherAddAttribute;
- break;
- }
- }
- return titanStatus;
- }
-
- @Override
- public Either<List<ComponentInstanceProperty>, TitanOperationStatus> getAllAttributesOfResourceInstance(ComponentInstance compInstance) {
-
- Either<List<ComponentInstanceProperty>, TitanOperationStatus> result;
-
- Either<List<ImmutablePair<AttributeValueData, GraphEdge>>, TitanOperationStatus> attributeImplNodes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), compInstance.getUniqueId(),
- GraphEdgeLabels.ATTRIBUTE_VALUE, NodeTypeEnum.AttributeValue, AttributeValueData.class);
-
- // Build From Resource
- if (attributeImplNodes.isRight() && attributeImplNodes.right().value() == TitanOperationStatus.NOT_FOUND) {
- result = getAttributesFromResource(compInstance);
- }
- // Build From Instance
- else if (attributeImplNodes.isLeft()) {
- List<ImmutablePair<AttributeValueData, GraphEdge>> attributesFromRI = attributeImplNodes.left().value();
- result = mergeAttributesResults(getAttributesFromResource(compInstance), convertToComponentInstanceAttribute(attributesFromRI));
- }
- // Error
- else {
- TitanOperationStatus status = attributeImplNodes.right().value();
- result = Either.right(status);
- }
-
- return result;
- }
-
- private Either<List<ComponentInstanceProperty>, TitanOperationStatus> mergeAttributesResults(Either<List<ComponentInstanceProperty>, TitanOperationStatus> eitherAttributesThatDoesNotExistOnRI,
- Either<List<ComponentInstanceProperty>, TitanOperationStatus> eitherAttributesThatExistOnRI) {
-
- Either<List<ComponentInstanceProperty>, TitanOperationStatus> result;
- if (eitherAttributesThatExistOnRI.isRight()) {
- result = Either.right(eitherAttributesThatExistOnRI.right().value());
- } else if (eitherAttributesThatDoesNotExistOnRI.isRight()) {
- result = Either.right(eitherAttributesThatDoesNotExistOnRI.right().value());
- } else {
- final List<ComponentInstanceProperty> attributesThatExistOnRI = eitherAttributesThatExistOnRI.left().value();
- final List<ComponentInstanceProperty> attributesThatDoesNotExistOnRI = eitherAttributesThatDoesNotExistOnRI.left().value();
- Set<String> attributesIdThatExistOnRI = attributesThatExistOnRI.stream().map(e -> e.getUniqueId()).collect(Collectors.toSet());
- // Attributes From The Resource Without attributes that also exist
- // on the instance
- Stream<ComponentInstanceProperty> filterAttributesThatDoesNotExistOnRI = attributesThatDoesNotExistOnRI.stream().filter(e -> !attributesIdThatExistOnRI.contains(e.getUniqueId()));
- // Add Fields From Resource Attributes
- fillAttributeInfoFromResource(attributesThatExistOnRI, attributesThatDoesNotExistOnRI);
- // Adding the Attributes on the instance for the full list
- List<ComponentInstanceProperty> mergedList = Stream.concat(filterAttributesThatDoesNotExistOnRI, attributesThatExistOnRI.stream()).collect(Collectors.toList());
- result = Either.left(mergedList);
- }
- return result;
- }
-
- private void fillAttributeInfoFromResource(List<ComponentInstanceProperty> attributesThatExistOnRI, List<ComponentInstanceProperty> attributesThatDoesNotExistOnRI) {
- attributesThatExistOnRI.stream()
- .forEach(e -> addAttributeInfo(e,
- // Finds the same attribute in the resource
- attributesThatDoesNotExistOnRI.stream().filter(e2 -> e2.getUniqueId().equals(e.getUniqueId())).findAny().get()));
-
- }
-
- private void addAttributeInfo(ComponentInstanceProperty attributeFromRI, ComponentInstanceProperty attributeFromResource) {
- attributeFromRI.setName(attributeFromResource.getName());
- attributeFromRI.setDescription(attributeFromResource.getDescription());
- attributeFromRI.setDefaultValue(attributeFromResource.getDefaultValue());
- attributeFromRI.setStatus(attributeFromResource.getStatus());
- attributeFromRI.setSchema(attributeFromResource.getSchema());
- if (StringUtils.isEmpty(attributeFromRI.getValue())) {
- attributeFromRI.setValue(attributeFromResource.getDefaultValue());
- }
- }
-
- private Either<List<ComponentInstanceProperty>, TitanOperationStatus> getAttributesFromResource(ComponentInstance compInstance) {
- Either<List<ComponentInstanceProperty>, TitanOperationStatus> result;
- List<PropertyDefinition> attributes = new ArrayList<>();
- // Attributes does not exist on Ri - fetch them from resource
- TitanOperationStatus findAllResourceAttribues = findAllResourceAttributesRecursively(compInstance.getComponentUid(), attributes);
- if (findAllResourceAttribues != TitanOperationStatus.OK) {
- result = Either.right(findAllResourceAttribues);
- } else {
- List<ComponentInstanceProperty> buildAttInstanceFromResource = attributes.stream().map(attDef -> new ComponentInstanceProperty(false, attDef, null)).collect(Collectors.toList());
-
- // Set Value to be default value in case it is empty
- Consumer<ComponentInstanceProperty> valueSetter = att -> {
- if (StringUtils.isEmpty(att.getValue())) {
- att.setValue(att.getDefaultValue());
- }
- };
- buildAttInstanceFromResource.stream().forEach(valueSetter);
-
- result = Either.left(buildAttInstanceFromResource);
- }
- return result;
- }
-
- private Either<List<ComponentInstanceProperty>, TitanOperationStatus> convertToComponentInstanceAttribute(List<ImmutablePair<AttributeValueData, GraphEdge>> list) {
- Either<List<ComponentInstanceProperty>, TitanOperationStatus> result = null;
- List<ComponentInstanceProperty> componentInstanceAttribute = new ArrayList<>();
- for (ImmutablePair<AttributeValueData, GraphEdge> attributeValue : list) {
- AttributeValueData attributeValueData = attributeValue.getLeft();
- String attributeValueUid = attributeValueData.getUniqueId();
-
- Either<ImmutablePair<AttributeData, GraphEdge>, TitanOperationStatus> attributeDefRes = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.AttributeValue), attributeValueUid, GraphEdgeLabels.ATTRIBUTE_IMPL,
- NodeTypeEnum.Attribute, AttributeData.class);
-
- if (attributeDefRes.isRight()) {
- TitanOperationStatus status = attributeDefRes.right().value();
- if (status == TitanOperationStatus.NOT_FOUND) {
- status = TitanOperationStatus.INVALID_ID;
- }
- result = Either.right(status);
- break;
- } else {
- ImmutablePair<AttributeData, GraphEdge> attributeDefPair = attributeDefRes.left().value();
- String attributeUniqueId = attributeDefPair.left.getUniqueId();
-
- ComponentInstanceProperty resourceInstanceAttribute = new ComponentInstanceProperty();
- // set attribute original unique id
- resourceInstanceAttribute.setUniqueId(attributeUniqueId);
- // set hidden
- resourceInstanceAttribute.setHidden(attributeValueData.isHidden());
- // set value
- resourceInstanceAttribute.setValue(attributeValueData.getValue());
- // set property value unique id
- resourceInstanceAttribute.setValueUniqueUid(attributeValueUid);
-
- resourceInstanceAttribute.setType(attributeValueData.getType());
-
- componentInstanceAttribute.add(resourceInstanceAttribute);
- }
-
- }
- if (result == null) {
- result = Either.left(componentInstanceAttribute);
- }
- return result;
- }
-
- /**
- * fetch all attributes under a given resource(includes its parents' resources)
- *
- * @param resourceId
- * @param attributes
- * @return
- */
- @Override
- public TitanOperationStatus findAllResourceAttributesRecursively(String resourceId, List<PropertyDefinition> attributes) {
- final NodeElementFetcher<PropertyDefinition> singleNodeFetcher = (resourceIdParam, attributesParam) -> findNodeNonInheretedAttribues(resourceIdParam, NodeTypeEnum.Resource, attributesParam);
- return findAllResourceElementsDefinitionRecursively(resourceId, attributes, singleNodeFetcher);
-
- }
-
- @Override
- public TitanOperationStatus findNodeNonInheretedAttribues(String uniqueId, NodeTypeEnum nodeType, List<PropertyDefinition> attributes) {
- Either<List<ImmutablePair<AttributeData, GraphEdge>>, TitanOperationStatus> childrenNodes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(nodeType), uniqueId, GraphEdgeLabels.ATTRIBUTE, NodeTypeEnum.Attribute,
- AttributeData.class);
-
- if (childrenNodes.isRight()) {
- TitanOperationStatus status = childrenNodes.right().value();
- if (status == TitanOperationStatus.NOT_FOUND) {
- status = TitanOperationStatus.OK;
- }
- return status;
- }
-
- List<ImmutablePair<AttributeData, GraphEdge>> values = childrenNodes.left().value();
- if (values != null) {
-
- for (ImmutablePair<AttributeData, GraphEdge> immutablePair : values) {
- AttributeData attData = immutablePair.getLeft();
- String attributeName = attData.getAttributeDataDefinition().getName();
-
- log.debug("Attribute {} is associated to node {}", attributeName, uniqueId);
- AttributeData attributeData = immutablePair.getKey();
- PropertyDefinition attributeDefinition = this.convertAttributeDataToAttributeDefinition(attributeData, attributeName, uniqueId);
-
- attributes.add(attributeDefinition);
-
- log.trace("findAttributesOfNode - property {} associated to node {}", attributeDefinition, uniqueId);
- }
-
- }
-
- return TitanOperationStatus.OK;
- }
-
- @Override
- public PropertyDefinition convertAttributeDataToAttributeDefinition(AttributeData attributeData, String attributeName, String resourceId) {
- log.debug("The object returned after create attribute is {}", attributeData);
- PropertyDefinition attributeDefResult = new PropertyDefinition(attributeData.getAttributeDataDefinition());
- attributeDefResult.setName(attributeName);
- attributeDefResult.setParentUniqueId(resourceId);
- return attributeDefResult;
- }
-
- @Override
- public Either<AttributeData, StorageOperationStatus> addAttribute(PropertyDefinition attributeDefinition, String resourceId) {
-
- Either<AttributeData, StorageOperationStatus> eitherResult;
- Either<Map<String, DataTypeDefinition>, TitanOperationStatus> allDataTypes = applicationDataTypeCache.getAll();
- if (allDataTypes.isRight()) {
- TitanOperationStatus status = allDataTypes.right().value();
- log.debug("Cannot find any data type. Status is {}.", status);
- eitherResult = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- } else {
- Either<AttributeData, TitanOperationStatus> either = addAttributeToGraph(attributeDefinition, resourceId, allDataTypes.left().value());
- if (either.isRight()) {
- StorageOperationStatus storageStatus = DaoStatusConverter.convertTitanStatusToStorageStatus(either.right().value());
- eitherResult = Either.right(storageStatus);
- } else {
- eitherResult = Either.left(either.left().value());
- }
- }
- return eitherResult;
- }
-
- @Override
- public Either<AttributeData, StorageOperationStatus> updateAttribute(String attributeId, PropertyDefinition newAttDef, Map<String, DataTypeDefinition> dataTypes) {
-
- StorageOperationStatus validateAndUpdateAttribute = propertyOperation.validateAndUpdateProperty(newAttDef, dataTypes);
- if (validateAndUpdateAttribute != StorageOperationStatus.OK) {
- return Either.right(validateAndUpdateAttribute);
- }
-
- Either<AttributeData, TitanOperationStatus> either = updateAttributeFromGraph(attributeId, newAttDef);
- if (either.isRight()) {
- StorageOperationStatus storageStatus = DaoStatusConverter.convertTitanStatusToStorageStatus(either.right().value());
- return Either.right(storageStatus);
- }
- return Either.left(either.left().value());
- }
-
- private Either<AttributeData, TitanOperationStatus> updateAttributeFromGraph(String attributeId, PropertyDefinition attributeDefenition) {
- log.debug("Before updating attribute on graph {}", attributeId);
-
- // get the original property data
- Either<AttributeData, TitanOperationStatus> eitherAttribute = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Attribute), attributeId, AttributeData.class);
- if (eitherAttribute.isRight()) {
- log.debug("Problem while get Attribute with id {}. Reason - {}", attributeId, eitherAttribute.right().value().name());
- return Either.right(eitherAttribute.right().value());
- }
- AttributeData orgAttributeData = eitherAttribute.left().value();
- PropertyDataDefinition orgAttributeDataDefinition = orgAttributeData.getAttributeDataDefinition();
-
- // create new property data to update
- AttributeData newAttributeData = new AttributeData();
- newAttributeData.setAttributeDataDefinition(attributeDefenition);
- PropertyDataDefinition newAttributeDataDefinition = newAttributeData.getAttributeDataDefinition();
-
- // update the original property data with new values
- if (!Objects.equals(orgAttributeDataDefinition.getDefaultValue(), newAttributeDataDefinition.getDefaultValue())) {
- orgAttributeDataDefinition.setDefaultValue(newAttributeDataDefinition.getDefaultValue());
- }
-
- if (!Objects.equals(orgAttributeDataDefinition.getDescription(), newAttributeDataDefinition.getDescription())) {
- orgAttributeDataDefinition.setDescription(newAttributeDataDefinition.getDescription());
- }
-
- if (!Objects.equals(orgAttributeDataDefinition.getType(), newAttributeDataDefinition.getType())) {
- orgAttributeDataDefinition.setType(newAttributeDataDefinition.getType());
- }
-
- orgAttributeDataDefinition.setSchema(newAttributeDataDefinition.getSchema());
-
- return titanGenericDao.updateNode(orgAttributeData, AttributeData.class);
- }
-
- @Override
- public ComponentInstanceProperty buildResourceInstanceAttribute(AttributeValueData attributeValueData, ComponentInstanceProperty resourceInstanceAttribute) {
-
- Boolean hidden = attributeValueData.isHidden();
- String uid = attributeValueData.getUniqueId();
- return new ComponentInstanceProperty(hidden, resourceInstanceAttribute, uid);
- }
-
- @Override
- public Either<AttributeData, TitanOperationStatus> addAttributeToGraph(PropertyDefinition attribute, String resourceId, Map<String, DataTypeDefinition> dataTypes) {
- Either<AttributeData, TitanOperationStatus> eitherResult;
- StorageOperationStatus validateAndUpdateAttribute = propertyOperation.validateAndUpdateProperty(attribute, dataTypes);
- if (validateAndUpdateAttribute != StorageOperationStatus.OK) {
- log.error("Attribute {} is invalid. Status is {}", attribute, validateAndUpdateAttribute);
- eitherResult = Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT);
- } else {
- eitherResult = addAttributeToNodeType(attribute, NodeTypeEnum.Resource, resourceId);
-
- }
- return eitherResult;
- }
-
- @Override
- public TitanOperationStatus addAttributeToGraphByVertex(TitanVertex metadataVertex, PropertyDefinition attribute, String resourceId, Map<String, DataTypeDefinition> dataTypes) {
- StorageOperationStatus validateAndUpdateAttribute = propertyOperation.validateAndUpdateProperty(attribute, dataTypes);
- TitanOperationStatus result;
- if (validateAndUpdateAttribute != StorageOperationStatus.OK) {
- log.error("Attribute {} is invalid. Status is {}", attribute, validateAndUpdateAttribute);
- result = TitanOperationStatus.ILLEGAL_ARGUMENT;
- } else {
- result = addAttributeToNodeType(metadataVertex, attribute, NodeTypeEnum.Resource, resourceId);
-
- }
- return result;
- }
-}
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/CapabilityInstanceOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/CapabilityInstanceOperation.java
deleted file mode 100644
index 818089feee..0000000000
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/CapabilityInstanceOperation.java
+++ /dev/null
@@ -1,1170 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.openecomp.sdc.be.model.operations.impl;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.function.Function;
-import java.util.stream.Collectors;
-
-import org.apache.commons.lang3.tuple.ImmutablePair;
-import org.apache.tinkerpop.gremlin.structure.Edge;
-import org.openecomp.sdc.be.dao.graph.datatype.GraphEdge;
-import org.openecomp.sdc.be.dao.graph.datatype.GraphRelation;
-import org.openecomp.sdc.be.dao.neo4j.GraphEdgeLabels;
-import org.openecomp.sdc.be.dao.neo4j.GraphPropertiesDictionary;
-import org.openecomp.sdc.be.dao.titan.TitanOperationStatus;
-import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
-import org.openecomp.sdc.be.model.CapabilityDefinition;
-import org.openecomp.sdc.be.model.ComponentInstanceProperty;
-import org.openecomp.sdc.be.model.DataTypeDefinition;
-import org.openecomp.sdc.be.model.PropertyDefinition;
-import org.openecomp.sdc.be.model.operations.api.ICapabilityInstanceOperation;
-import org.openecomp.sdc.be.resources.data.CapabilityData;
-import org.openecomp.sdc.be.resources.data.CapabilityInstData;
-import org.openecomp.sdc.be.resources.data.ComponentInstanceData;
-import org.openecomp.sdc.be.resources.data.PropertyData;
-import org.openecomp.sdc.be.resources.data.PropertyValueData;
-import org.openecomp.sdc.be.resources.data.UniqueIdData;
-import org.openecomp.sdc.common.datastructure.Wrapper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import com.thinkaurelius.titan.core.TitanVertex;
-
-import fj.data.Either;
-
-/**
- * public class CapabilityInstanceOperation provides methods for CRUD operations for CapabilityInstance on component instance level
- *
- * @author ns019t
- *
- */
-@Component("capability-instance-operation")
-public class CapabilityInstanceOperation extends AbstractOperation implements ICapabilityInstanceOperation {
-
- private static Logger log = LoggerFactory.getLogger(CapabilityOperation.class.getName());
-
- @Autowired
- private PropertyOperation propertyOperation;
-
- @Autowired
- private CapabilityOperation capabilityOperation;
-
- /**
- * create capability instance of capability with property values for resource instance
- *
- * @param resourceInstanceId
- * @param capabilityId
- * @param propertyValues
- * @param validateCapabilityInstExistence
- * @param capabilityName
- * @return
- */
- @Override
- public Either<Map<CapabilityInstData, List<PropertyValueData>>, TitanOperationStatus> createCapabilityInstanceOfCapabilityWithPropertyValuesForResourceInstance(String resourceInstanceId, String capabilityId, String capabilityName,
- List<ComponentInstanceProperty> propertyValues, boolean validateCapabilityInstExistence) {
- Wrapper<TitanOperationStatus> errorWrapper = new Wrapper<>();
- Wrapper<CapabilityData> overrideCapabilityDataWrapper = new Wrapper<>();
- Wrapper<CapabilityDefinition> overrideCapabilityDefinitionWrapper = new Wrapper<>();
- Either<CapabilityInstData, TitanOperationStatus> createCapabilityRes = null;
- CapabilityInstData createdCapabilityInstance = null;
-
- Wrapper<Map<String, PropertyDefinition>> defaultPropertiesWrapper = new Wrapper<>();
- Either<ImmutablePair<CapabilityData, GraphEdge>, TitanOperationStatus> getCapabilityRes = null;
- Either<CapabilityDefinition, TitanOperationStatus> getCapabilityDefinitionRes = null;
- Either<List<PropertyValueData>, TitanOperationStatus> addPropertyValuesRes = null;
- Wrapper<String> createdCapabilityInstanceIdWrapper = new Wrapper<>();
- if (validateCapabilityInstExistence) {
- validateCapabilityInstanceExistence(resourceInstanceId, capabilityId, errorWrapper);
- }
- if (errorWrapper.isEmpty()) {
- getCapabilityRes = getCapabilitiesOfResourceInstance(resourceInstanceId, capabilityId, capabilityName, errorWrapper);
- }
- if (errorWrapper.isEmpty()) {
- getCapabilityDefinitionRes = getCapabiityDefinition(resourceInstanceId, capabilityId, errorWrapper, overrideCapabilityDataWrapper, getCapabilityRes);
- }
- if (errorWrapper.isEmpty()) {
- createCapabilityRes = createCapabilityInstanceOnGraph(resourceInstanceId, capabilityId, errorWrapper, overrideCapabilityDataWrapper, overrideCapabilityDefinitionWrapper, getCapabilityDefinitionRes);
- }
- if (errorWrapper.isEmpty() && overrideCapabilityDefinitionWrapper.getInnerElement().getProperties() != null) {
- createdCapabilityInstance = validateCapabilityInstanceProperties(resourceInstanceId, propertyValues, errorWrapper, overrideCapabilityDefinitionWrapper, createCapabilityRes, defaultPropertiesWrapper, createdCapabilityInstanceIdWrapper);
- }
- if (errorWrapper.isEmpty()) {
- addPropertyValuesRes = addPropertyValueToCapabilityInstance(resourceInstanceId, propertyValues, errorWrapper, createCapabilityRes, defaultPropertiesWrapper, createdCapabilityInstanceIdWrapper);
- }
- Either<Map<CapabilityInstData, List<PropertyValueData>>, TitanOperationStatus> result;
- if (errorWrapper.isEmpty()) {
- Map<CapabilityInstData, List<PropertyValueData>> resultMap = new HashMap<>();
- resultMap.put(createdCapabilityInstance, addPropertyValuesRes.left().value());
- result = Either.left(resultMap);
- } else {
- result = Either.right(errorWrapper.getInnerElement());
- }
- return result;
- }
-
- @Override
- public TitanOperationStatus createCapabilityInstanceOfCapabilityWithPropertyValuesForResourceInstance(TitanVertex resourceInstanceVertex, String resourceInstanceId, String capabilityId, String capabilityName,
- List<ComponentInstanceProperty> propertyValues, boolean validateCapabilityInstExistence) {
- Wrapper<TitanOperationStatus> errorWrapper = new Wrapper<>();
- Wrapper<TitanVertex> overrideCapabilityDataWrapper = new Wrapper<>();
- Wrapper<CapabilityDefinition> overrideCapabilityDefinitionWrapper = new Wrapper<>();
- Either<TitanVertex, TitanOperationStatus> createCapabilityRes = null;
- TitanVertex createdCapabilityInstance = null;
-
- Wrapper<Map<String, PropertyDefinition>> defaultPropertiesWrapper = new Wrapper<>();
- Either<ImmutablePair<TitanVertex, Edge>, TitanOperationStatus> getCapabilityRes = null;
- Either<CapabilityDefinition, TitanOperationStatus> getCapabilityDefinitionRes = null;
- TitanOperationStatus addPropertyValuesRes = null;
- Wrapper<String> createdCapabilityInstanceIdWrapper = new Wrapper<>();
- if (validateCapabilityInstExistence) {
- validateCapabilityInstanceExistence(resourceInstanceVertex, resourceInstanceId, capabilityId, errorWrapper);
- }
- if (errorWrapper.isEmpty()) {
- getCapabilityRes = getCapabilitiesOfResourceInstance(resourceInstanceVertex, resourceInstanceId, capabilityId, capabilityName, errorWrapper);
- }
- if (errorWrapper.isEmpty()) {
- getCapabilityDefinitionRes = getCapabiityDefinitionByVertex(resourceInstanceId, capabilityId, errorWrapper, overrideCapabilityDataWrapper, getCapabilityRes);
- }
- if (errorWrapper.isEmpty()) {
- createCapabilityRes = createCapabilityInstanceOnGraphByVertex(resourceInstanceVertex, resourceInstanceId, capabilityId, errorWrapper, overrideCapabilityDataWrapper, overrideCapabilityDefinitionWrapper, getCapabilityDefinitionRes);
- }
- if (errorWrapper.isEmpty() && overrideCapabilityDefinitionWrapper.getInnerElement().getProperties() != null) {
- createdCapabilityInstance = validateCapabilityInstancePropertiesByVertex(resourceInstanceId, propertyValues, errorWrapper, overrideCapabilityDefinitionWrapper, createCapabilityRes.left().value(), defaultPropertiesWrapper,
- createdCapabilityInstanceIdWrapper);
- }
- if (errorWrapper.isEmpty()) {
- addPropertyValuesRes = addPropertyValueToCapabilityInstanceByVertex(resourceInstanceId, propertyValues, errorWrapper, createCapabilityRes, defaultPropertiesWrapper, createdCapabilityInstanceIdWrapper);
- }
-
- return addPropertyValuesRes;
- }
-
- private Either<List<PropertyValueData>, TitanOperationStatus> addPropertyValueToCapabilityInstance(String resourceInstanceId, List<ComponentInstanceProperty> propertyValues, Wrapper<TitanOperationStatus> errorWrapper,
- Either<CapabilityInstData, TitanOperationStatus> createCapabilityRes, Wrapper<Map<String, PropertyDefinition>> defaultPropertiesWrapper, Wrapper<String> createdCapabilityInstanceIdWrapper) {
- Either<List<PropertyValueData>, TitanOperationStatus> addPropertyValuesRes;
- log.debug("Before adding property values to capability instance {}.",createdCapabilityInstanceIdWrapper.getInnerElement());
- addPropertyValuesRes = addPropertyValuesToCapabilityInstance(createCapabilityRes.left().value(), propertyValues, defaultPropertiesWrapper.getInnerElement());
- if (addPropertyValuesRes.isRight()) {
- errorWrapper.setInnerElement(addPropertyValuesRes.right().value());
- log.debug("Failed to add properties to capability instance {} of resource instance {}. status is {}.", createdCapabilityInstanceIdWrapper.getInnerElement(), resourceInstanceId, errorWrapper.getInnerElement());
- }
- log.debug("After adding property values to capability instance {}. status is {}.", createdCapabilityInstanceIdWrapper.getInnerElement(), errorWrapper.getInnerElement());
- return addPropertyValuesRes;
- }
-
- private TitanOperationStatus addPropertyValueToCapabilityInstanceByVertex(String resourceInstanceId, List<ComponentInstanceProperty> propertyValues, Wrapper<TitanOperationStatus> errorWrapper,
- Either<TitanVertex, TitanOperationStatus> createCapabilityRes, Wrapper<Map<String, PropertyDefinition>> defaultPropertiesWrapper, Wrapper<String> createdCapabilityInstanceIdWrapper) {
- log.trace("Before adding property values to capability instance {}", createdCapabilityInstanceIdWrapper.getInnerElement());
- TitanOperationStatus addPropertyValuesRes = addPropertyValuesToCapabilityInstance(createCapabilityRes.left().value(), propertyValues, defaultPropertiesWrapper.getInnerElement());
- if (!addPropertyValuesRes.equals(TitanOperationStatus.OK)) {
- errorWrapper.setInnerElement(addPropertyValuesRes);
- log.debug("Failed to add properties to capability instance {} of resource instance {}. status is {}", createdCapabilityInstanceIdWrapper.getInnerElement(), resourceInstanceId, errorWrapper.getInnerElement());
- }
- log.trace("After adding property values to capability instance {}. status is {}", createdCapabilityInstanceIdWrapper.getInnerElement(), errorWrapper.getInnerElement());
- return addPropertyValuesRes;
- }
-
- private CapabilityInstData validateCapabilityInstanceProperties(String resourceInstanceId, List<ComponentInstanceProperty> propertyValues, Wrapper<TitanOperationStatus> errorWrapper,
- Wrapper<CapabilityDefinition> overrideCapabilityDefinitionWrapper, Either<CapabilityInstData, TitanOperationStatus> createCapabilityRes, Wrapper<Map<String, PropertyDefinition>> defaultPropertiesWrapper,
- Wrapper<String> createdCapabilityInstanceIdWrapper) {
- CapabilityInstData createdCapabilityInstance;
- createdCapabilityInstance = createCapabilityRes.left().value();
- createdCapabilityInstanceIdWrapper.setInnerElement(createdCapabilityInstance.getUniqueId());
- Map<String, PropertyDefinition> defaultProperties = overrideCapabilityDefinitionWrapper.getInnerElement().getProperties().stream().collect(Collectors.toMap(PropertyDefinition::getName, Function.identity()));
- defaultPropertiesWrapper.setInnerElement(defaultProperties);
- log.debug("Before validating property values of capability instance {}",createdCapabilityInstanceIdWrapper.getInnerElement());
- Either<Boolean, TitanOperationStatus> result = validateCapabilityInstanceProperties(defaultProperties, propertyValues);
- if (result.isRight()) {
- errorWrapper.setInnerElement(result.right().value());
- log.debug("Failed to add properties to capability instance {} of resource instance {}. status is {}.", createdCapabilityInstanceIdWrapper.getInnerElement(), resourceInstanceId, errorWrapper.getInnerElement());
- }
- log.debug("After validating property values of capability instance {}. status is {}", createdCapabilityInstanceIdWrapper.getInnerElement(), errorWrapper.getInnerElement());
- return createdCapabilityInstance;
- }
-
- private TitanVertex validateCapabilityInstancePropertiesByVertex(String resourceInstanceId, List<ComponentInstanceProperty> propertyValues, Wrapper<TitanOperationStatus> errorWrapper,
- Wrapper<CapabilityDefinition> overrideCapabilityDefinitionWrapper, TitanVertex createCapabilityRes, Wrapper<Map<String, PropertyDefinition>> defaultPropertiesWrapper, Wrapper<String> createdCapabilityInstanceIdWrapper) {
-
- String id = (String) titanGenericDao.getProperty(createCapabilityRes, GraphPropertiesDictionary.UNIQUE_ID.getProperty());
- createdCapabilityInstanceIdWrapper.setInnerElement(id);
- Map<String, PropertyDefinition> defaultProperties = overrideCapabilityDefinitionWrapper.getInnerElement().getProperties().stream().collect(Collectors.toMap(PropertyDefinition::getName, Function.identity()));
- defaultPropertiesWrapper.setInnerElement(defaultProperties);
- log.trace("Before validating property values of capability instance {}", createdCapabilityInstanceIdWrapper.getInnerElement());
- Either<Boolean, TitanOperationStatus> result = validateCapabilityInstanceProperties(defaultProperties, propertyValues);
- if (result.isRight()) {
- errorWrapper.setInnerElement(result.right().value());
- log.debug("Failed to add properties to capability instance {} of resource instance {}, status is {}", createdCapabilityInstanceIdWrapper.getInnerElement(), resourceInstanceId, errorWrapper.getInnerElement());
- }
- log.trace("After validating property values of capability instance {}, status is {}", createdCapabilityInstanceIdWrapper.getInnerElement(), errorWrapper.getInnerElement());
- return createCapabilityRes;
- }
-
- private Either<CapabilityInstData, TitanOperationStatus> createCapabilityInstanceOnGraph(String resourceInstanceId, String capabilityId, Wrapper<TitanOperationStatus> errorWrapper, Wrapper<CapabilityData> overrideCapabilityDataWrapper,
- Wrapper<CapabilityDefinition> overrideCapabilityDefinitionWrapper, Either<CapabilityDefinition, TitanOperationStatus> getCapabilityDefinitionRes) {
- Either<CapabilityInstData, TitanOperationStatus> createCapabilityRes;
- log.debug("Before creating capability instance of capability {} on graph.", capabilityId);
- overrideCapabilityDefinitionWrapper.setInnerElement(getCapabilityDefinitionRes.left().value());
- CapabilityInstData capabilityInstance = buildCapabilityInstanceData(resourceInstanceId, overrideCapabilityDefinitionWrapper.getInnerElement());
- createCapabilityRes = createCapabilityInstanceOnGraph(resourceInstanceId, overrideCapabilityDataWrapper.getInnerElement(), capabilityInstance);
- if (createCapabilityRes.isRight()) {
- errorWrapper.setInnerElement(createCapabilityRes.right().value());
- log.debug("Failed to create capability instance of capability {} of resource instance {}, status is {}", capabilityId, resourceInstanceId, errorWrapper.getInnerElement());
- }
- log.debug("After creating capability instance of capability {} on graph, status is {}", capabilityId, errorWrapper.getInnerElement());
- return createCapabilityRes;
- }
-
- private Either<TitanVertex, TitanOperationStatus> createCapabilityInstanceOnGraphByVertex(TitanVertex riVertex, String resourceInstanceId, String capabilityId, Wrapper<TitanOperationStatus> errorWrapper,
- Wrapper<TitanVertex> overrideCapabilityDataWrapper, Wrapper<CapabilityDefinition> overrideCapabilityDefinitionWrapper, Either<CapabilityDefinition, TitanOperationStatus> getCapabilityDefinitionRes) {
- Either<TitanVertex, TitanOperationStatus> createCapabilityRes;
- log.trace("Before creating capability instance of capability {} on graph", capabilityId);
- overrideCapabilityDefinitionWrapper.setInnerElement(getCapabilityDefinitionRes.left().value());
- CapabilityInstData capabilityInstance = buildCapabilityInstanceData(resourceInstanceId, overrideCapabilityDefinitionWrapper.getInnerElement());
- createCapabilityRes = createCapabilityInstanceOnGraph(riVertex, resourceInstanceId, overrideCapabilityDataWrapper.getInnerElement(), capabilityInstance);
- if (createCapabilityRes.isRight()) {
- errorWrapper.setInnerElement(createCapabilityRes.right().value());
- log.debug("Failed to create capability instance of capability {} of resource instance {}, status is {} ", capabilityId, resourceInstanceId, errorWrapper.getInnerElement());
- }
- log.debug("After creating capability instance of capability {} on graph, status is {}", capabilityId, errorWrapper.getInnerElement());
- return createCapabilityRes;
- }
-
- private Either<CapabilityDefinition, TitanOperationStatus> getCapabiityDefinition(String resourceInstanceId, String capabilityId, Wrapper<TitanOperationStatus> errorWrapper, Wrapper<CapabilityData> overrideCapabilityDataWrapper,
- Either<ImmutablePair<CapabilityData, GraphEdge>, TitanOperationStatus> getCapabilityRes) {
- Either<CapabilityDefinition, TitanOperationStatus> getCapabilityDefinitionRes;
- log.debug("Before getting capability definition {} for resource instance {}", capabilityId, resourceInstanceId);
- CapabilityData overrideCapabilityData = getCapabilityRes.left().value().getLeft();
- overrideCapabilityDataWrapper.setInnerElement(overrideCapabilityData);
- getCapabilityDefinitionRes = capabilityOperation.getCapabilityByCapabilityData(overrideCapabilityData);
- if (getCapabilityDefinitionRes.isRight()) {
- errorWrapper.setInnerElement(getCapabilityDefinitionRes.right().value());
- log.debug("Failed to retrieve capability {} of resource instance {}, status is {}", capabilityId, resourceInstanceId, errorWrapper.getInnerElement());
- }
- log.debug("After getting capability definition for {} for resource instance {}, status is {}", capabilityId, resourceInstanceId, errorWrapper.getInnerElement());
- return getCapabilityDefinitionRes;
- }
-
- private Either<CapabilityDefinition, TitanOperationStatus> getCapabiityDefinitionByVertex(String resourceInstanceId, String capabilityId, Wrapper<TitanOperationStatus> errorWrapper, Wrapper<TitanVertex> overrideCapabilityDataWrapper,
- Either<ImmutablePair<TitanVertex, Edge>, TitanOperationStatus> getCapabilityRes) {
- Either<CapabilityDefinition, TitanOperationStatus> getCapabilityDefinitionRes;
- log.trace("Before getting capability definition {} for resource instance {}", capabilityId, resourceInstanceId);
-
- TitanVertex overrideCapabilityData = getCapabilityRes.left().value().getLeft();
-
- overrideCapabilityDataWrapper.setInnerElement(overrideCapabilityData);
- getCapabilityDefinitionRes = capabilityOperation.getCapabilityByCapabilityData(overrideCapabilityData);
- if (getCapabilityDefinitionRes.isRight()) {
- errorWrapper.setInnerElement(getCapabilityDefinitionRes.right().value());
- log.debug("Failed to retrieve capability {} of resource instance {}, status is {}", capabilityId, resourceInstanceId, errorWrapper.getInnerElement());
- }
- log.debug("After getting capability definition for {} for resource instance {} status is {}", capabilityId, resourceInstanceId, errorWrapper.getInnerElement());
- return getCapabilityDefinitionRes;
- }
-
- private Either<ImmutablePair<CapabilityData, GraphEdge>, TitanOperationStatus> getCapabilitiesOfResourceInstance(String resourceInstanceId, String capabilityId, String capabilityName, Wrapper<TitanOperationStatus> errorWrapper) {
- Either<ImmutablePair<CapabilityData, GraphEdge>, TitanOperationStatus> getCapabilityRes;
- log.debug("Before getting capability {} for resource instance {}", capabilityId, resourceInstanceId);
- Map<String, Object> props = new HashMap<>();
- props.put(GraphPropertiesDictionary.NAME.getProperty(), capabilityName);
- getCapabilityRes = titanGenericDao.getChildByEdgeCriteria(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), resourceInstanceId, GraphEdgeLabels.CALCULATED_CAPABILITY, NodeTypeEnum.Capability, CapabilityData.class, props);
- if (getCapabilityRes.isRight()) {
- errorWrapper.setInnerElement(getCapabilityRes.right().value());
- log.debug("Failed to get capability {} of resource instance {}, status is {}", capabilityId, resourceInstanceId, errorWrapper.getInnerElement());
- }
- log.debug("After getting capability for {} for resource instance {}. status is {}", capabilityId, resourceInstanceId, errorWrapper.getInnerElement());
- return getCapabilityRes;
- }
-
- private Either<ImmutablePair<TitanVertex, Edge>, TitanOperationStatus> getCapabilitiesOfResourceInstance(TitanVertex instanceVertex, String resourceInstanceId, String capabilityId, String capabilityName,
- Wrapper<TitanOperationStatus> errorWrapper) {
- Either<ImmutablePair<TitanVertex, Edge>, TitanOperationStatus> getCapabilityRes;
- log.trace("Before getting capability {} {} {}", capabilityId, " for resource instance ", resourceInstanceId);
- Map<String, Object> props = new HashMap<>();
- props.put(GraphPropertiesDictionary.NAME.getProperty(), capabilityName);
- getCapabilityRes = titanGenericDao.getChildByEdgeCriteria(instanceVertex, GraphEdgeLabels.CALCULATED_CAPABILITY, props);
- if (getCapabilityRes.isRight()) {
- errorWrapper.setInnerElement(getCapabilityRes.right().value());
- log.debug("Failed to get capability {} of resource instance {}. status is {}", capabilityId, resourceInstanceId, errorWrapper.getInnerElement());
- }
- log.trace("After getting capability for {} for resource instance {}. status is {}", capabilityId, resourceInstanceId, errorWrapper.getInnerElement());
- return getCapabilityRes;
- }
-
- private void validateCapabilityInstanceExistence(String resourceInstanceId, String capabilityId, Wrapper<TitanOperationStatus> errorWrapper) {
- log.debug("Before validation of existence of capability instance of capability {} for resource instance {}", capabilityId, resourceInstanceId);
- boolean capabilityInstOfCapabilityAlreadyExists;
- Either<Boolean, TitanOperationStatus> validateCapabilityInstExistenceRes = validateCapabilityInstExistence(resourceInstanceId, capabilityId);
- if (validateCapabilityInstExistenceRes.isRight()) {
- errorWrapper.setInnerElement(validateCapabilityInstExistenceRes.right().value());
- log.debug("Failed to validate uniqueness of capability instance of capability {} of resource instance {}. status is {}", capabilityId, resourceInstanceId, errorWrapper.getInnerElement());
- } else {
- capabilityInstOfCapabilityAlreadyExists = validateCapabilityInstExistenceRes.left().value();
- if (capabilityInstOfCapabilityAlreadyExists) {
- errorWrapper.setInnerElement(TitanOperationStatus.ALREADY_EXIST);
- log.debug("Failed to create capability instance of capability {} of resource instance {}. status is {}", capabilityId, resourceInstanceId, errorWrapper.getInnerElement());
- }
- }
- log.debug("After validation of existence of capability instance of capability {} for resource instance {}. status is {}", capabilityId, resourceInstanceId, errorWrapper.getInnerElement());
- }
-
- private void validateCapabilityInstanceExistence(TitanVertex resourceInstanceVertex, String resourceInstanceId, String capabilityId, Wrapper<TitanOperationStatus> errorWrapper) {
- log.trace("Before validation of existence of capability instance of capability {} for resource instance {}", capabilityId, resourceInstanceId);
- boolean capabilityInstOfCapabilityAlreadyExists;
- Either<Boolean, TitanOperationStatus> validateCapabilityInstExistenceRes = validateCapabilityInstExistence(resourceInstanceId, capabilityId);
- if (validateCapabilityInstExistenceRes.isRight()) {
- errorWrapper.setInnerElement(validateCapabilityInstExistenceRes.right().value());
- log.debug("Failed to validate uniqueness of capability instance of capability {} of resource instance {}. status is {}", capabilityId, resourceInstanceId, errorWrapper.getInnerElement());
- } else {
- capabilityInstOfCapabilityAlreadyExists = validateCapabilityInstExistenceRes.left().value();
- if (capabilityInstOfCapabilityAlreadyExists) {
- errorWrapper.setInnerElement(TitanOperationStatus.ALREADY_EXIST);
- log.debug("Failed to create capability instance of capability {} of resource instance {}. status is {}", capabilityId, resourceInstanceId, errorWrapper.getInnerElement());
- }
- }
- log.debug("After validation of existence of capability instance of capability {} for resource instance {}. status is {}", capabilityId, resourceInstanceId, errorWrapper.getInnerElement());
- }
-
- private Either<List<PropertyValueData>, TitanOperationStatus> addPropertyValuesToCapabilityInstance(CapabilityInstData createdCapabilityInstance, List<ComponentInstanceProperty> propertyValues, Map<String, PropertyDefinition> defaultProperties) {
- TitanOperationStatus error = null;
- List<PropertyValueData> createdPropertyValues = new ArrayList<>();
- for (ComponentInstanceProperty property : propertyValues) {
- log.debug("Before adding property value {} to capability instance {}", property.getName(), createdCapabilityInstance.getUniqueId());
- PropertyValueData propertyData = buildPropertyValueData(property.getName(), property.getType(), property.getValue(), createdCapabilityInstance.getUniqueId());
- Either<PropertyValueData, TitanOperationStatus> addPropertyValueRes = addPropertyValueToCapabilityInstance(createdCapabilityInstance, propertyData, defaultProperties.get(property.getName()));
- if (addPropertyValueRes.isRight()) {
- error = addPropertyValueRes.right().value();
- log.debug("Failed to add property to capability instance {} of resource instance, status is {}", createdCapabilityInstance.getUniqueId(), error);
- break;
- } else {
- createdPropertyValues.add(addPropertyValueRes.left().value());
- }
- log.debug("After adding property value {} to capability instance {}. status is {}", property.getName(), createdCapabilityInstance.getUniqueId(), error);
- }
- if (error == null) {
- return Either.left(createdPropertyValues);
- }
- return Either.right(error);
- }
-
- private TitanOperationStatus addPropertyValuesToCapabilityInstance(TitanVertex createdCapabilityInstancevertex, List<ComponentInstanceProperty> propertyValues, Map<String, PropertyDefinition> defaultProperties) {
- TitanOperationStatus error = null;
- String id = (String) titanGenericDao.getProperty(createdCapabilityInstancevertex, GraphPropertiesDictionary.UNIQUE_ID.getProperty());
- for (ComponentInstanceProperty property : propertyValues) {
- log.trace("Before adding property value {} to capability instance {}", property.getName(), id);
- PropertyValueData propertyData = buildPropertyValueData(property.getName(), property.getType(), property.getValue(), id);
- TitanOperationStatus addPropertyValueRes = addPropertyValueToCapabilityInstance(createdCapabilityInstancevertex, propertyData, defaultProperties.get(property.getName()), id);
- if (!addPropertyValueRes.equals(TitanOperationStatus.OK)) {
- error = addPropertyValueRes;
- log.debug("Failed to add property to capability instance {} of resource instance. status is {}", id, error);
- break;
- }
- log.debug("After adding property value {} to capability instance {}. status is {}", property.getName(), id, error);
- }
- if (error == null) {
- return TitanOperationStatus.OK;
- }
- return error;
- }
-
- private PropertyValueData buildPropertyValueData(String propertyName, String propertyType, String propertyValue, String capabilityInstanceId) {
- PropertyValueData propertyData = new PropertyValueData();
- String uniqueId = UniqueIdBuilder.buildPropertyValueUniqueId(capabilityInstanceId, propertyName);
- Long creationTime = System.currentTimeMillis();
- propertyData.setUniqueId(uniqueId);
- propertyData.setValue(propertyValue);
- propertyData.setType(propertyType);
- propertyData.setCreationTime(creationTime);
- propertyData.setModificationTime(creationTime);
- return propertyData;
- }
-
- private Either<PropertyValueData, TitanOperationStatus> addPropertyValueToCapabilityInstance(CapabilityInstData createdCapabilityInstance, PropertyValueData propertyValue, PropertyDefinition propertyDefinition) {
- TitanOperationStatus error = null;
- Map<String, Object> props = null;
- Either<GraphRelation, TitanOperationStatus> createRelationRes;
- PropertyValueData createdValue = null;
- log.debug("Before creating property value node {} on graph", propertyValue.getUniqueId());
- Either<PropertyValueData, TitanOperationStatus> createValueRes = titanGenericDao.createNode(propertyValue, PropertyValueData.class);
- if (createValueRes.isRight()) {
- error = createValueRes.right().value();
- log.debug("Failed to create property value for capability instance {} of resource instance. status is {}", createdCapabilityInstance.getUniqueId(), error);
- }
- log.debug("After creating property value node {} on graph. status is {}", propertyValue.getUniqueId(), error);
- if (error == null) {
- log.debug("Before creating relation from property value node {} to capability instance {}", propertyValue.getUniqueId(), createdCapabilityInstance.getUniqueId());
- createdValue = createValueRes.left().value();
- props = new HashMap<>();
- props.put(GraphPropertiesDictionary.PROPERTY_NAME.name(), propertyDefinition.getName());
- props.put(GraphPropertiesDictionary.PROPERTY_ID.name(), propertyDefinition.getUniqueId());
- createRelationRes = titanGenericDao.createRelation(createdCapabilityInstance, createdValue, GraphEdgeLabels.PROPERTY_VALUE, props);
- if (createRelationRes.isRight()) {
- error = createRelationRes.right().value();
- log.debug("Failed to create relation from capability instance {} to property value {}. status is {}", createdCapabilityInstance.getUniqueId(), createdValue.getUniqueId(), error);
- }
- log.debug("After creating relation from property value node {} to capability instance {}. status is {}", propertyValue.getUniqueId(), createdCapabilityInstance.getUniqueId(), error);
- }
- if (error == null) {
- log.debug("Before creating relation from property value node {} to property {}", propertyValue.getUniqueId(), propertyDefinition.getUniqueId());
- createRelationRes = titanGenericDao.createRelation(propertyValue, new PropertyData(propertyDefinition, null), GraphEdgeLabels.PROPERTY_IMPL, props);
- if (createRelationRes.isRight()) {
- error = createRelationRes.right().value();
- log.debug("Failed to create relation from property value {} to property {}. status is {}", createdValue.getUniqueId(), propertyDefinition.getUniqueId(), error);
- }
- log.debug("After creating relation from property value node {} to property {}. status is {}", propertyValue.getUniqueId(), propertyDefinition.getUniqueId(), error);
- }
- if (error == null) {
- return Either.left(createdValue);
- }
- return Either.right(error);
- }
-
- private TitanOperationStatus addPropertyValueToCapabilityInstance(TitanVertex createdCapabilityInstanceVertex, PropertyValueData propertyValue, PropertyDefinition propertyDefinition, String id) {
- TitanOperationStatus error = null;
- Map<String, Object> props = null;
- TitanOperationStatus createRelationRes;
- log.trace("Before creating property value node {} on graph.", propertyValue.getUniqueId());
- Either<TitanVertex, TitanOperationStatus> createValueRes = titanGenericDao.createNode(propertyValue);
- if (createValueRes.isRight()) {
- error = createValueRes.right().value();
- log.debug("Failed to create property value for capability instance {} of resource instance. status is {}", id, error);
- }
- log.trace("After creating property value node {} on graph status is {}", propertyValue.getUniqueId(), error);
- TitanVertex createdPropVertex = null;
- String createdId = null;
- if (error == null) {
- log.trace("Before creating relation from property value node {} to capability instance {} ", propertyValue.getUniqueId() , id);
- props = new HashMap<>();
- props.put(GraphPropertiesDictionary.PROPERTY_NAME.name(), propertyDefinition.getName());
- props.put(GraphPropertiesDictionary.PROPERTY_ID.name(), propertyDefinition.getUniqueId());
- createdPropVertex = createValueRes.left().value();
- createRelationRes = titanGenericDao.createEdge(createdCapabilityInstanceVertex, createdPropVertex, GraphEdgeLabels.PROPERTY_VALUE, props);
- if (!createRelationRes.equals(TitanOperationStatus.OK)) {
- error = createRelationRes;
- createdId = (String) titanGenericDao.getProperty(createdPropVertex, GraphPropertiesDictionary.UNIQUE_ID.getProperty());
- log.debug("Failed to create relation from capability instance {} to property value {}. status is {}", id, createdId, error);
- }
- log.trace("After creating relation from property value node {} to capability instance {}. status is {}", propertyValue.getUniqueId(), id, error);
- }
- if (error == null) {
- log.trace("Before creating relation from property value node {} to property {}", propertyValue.getUniqueId(), propertyDefinition.getUniqueId());
- createRelationRes = titanGenericDao.createEdge(createdPropVertex, new PropertyData(propertyDefinition, null), GraphEdgeLabels.PROPERTY_IMPL, props);
- if (!createRelationRes.equals(TitanOperationStatus.OK)) {
- error = createRelationRes;
- log.debug("Failed to create relation from property value {} to property {}. status is {}", createdId, propertyDefinition.getUniqueId(), error);
- }
- log.debug("After creating relation from property value node {} to property {}. status is {}", propertyValue.getUniqueId(), propertyDefinition.getUniqueId(), error);
- }
- if (error == null) {
- return TitanOperationStatus.OK;
- }
- return error;
- }
-
- private Either<Boolean, TitanOperationStatus> validateCapabilityInstanceProperties(Map<String, PropertyDefinition> defaultProperties, List<ComponentInstanceProperty> propertyValues) {
- Either<Boolean, TitanOperationStatus> result = Either.left(true);
- for (ComponentInstanceProperty property : propertyValues) {
- result = validateUpdateCapabilityInstancePropertyValue(property, defaultProperties);
- if (result.isRight()) {
- break;
- }
- }
- return result;
- }
-
- private Either<Boolean, TitanOperationStatus> validateUpdateCapabilityInstancePropertyValue(ComponentInstanceProperty property, Map<String, PropertyDefinition> defaultProperties) {
- PropertyDefinition defaultProperty;
- String propertyName = property.getName();
- Either<Boolean, TitanOperationStatus> result = null;
- if (defaultProperties.containsKey(propertyName)) {
- defaultProperty = defaultProperties.get(propertyName);
- String propertyType = property.getType() == null || property.getType().isEmpty() ? defaultProperty.getType() : property.getType();
-
- String innerType = null;
- if (property.getSchema() != null && property.getSchema().getProperty() != null)
- innerType = property.getSchema().getProperty().getType();
- if (innerType == null && defaultProperty.getSchema() != null && defaultProperty.getSchema().getProperty() != null)
- innerType = defaultProperty.getSchema().getProperty().getType();
-
- if (defaultProperty.getType().equals(propertyType)) {
- String propertyValue = property.getValue();
- Either<Map<String, DataTypeDefinition>, TitanOperationStatus> allDataTypes = applicationDataTypeCache.getAll();
- if (allDataTypes.isRight()) {
- TitanOperationStatus status = allDataTypes.right().value();
- log.debug("Failed to update property value. status is {}", status);
- result = Either.right(status);
- }
- if (result == null) {
- Either<Object, Boolean> updatedPropertyValueRes = propertyOperation.validateAndUpdatePropertyValue(propertyType, propertyValue, innerType, allDataTypes.left().value());
- if (updatedPropertyValueRes.isLeft()) {
- if (updatedPropertyValueRes.left().value() != null)
- property.setDefaultValue(updatedPropertyValueRes.left().value().toString());
- result = Either.left(true);
- } else {
- result = Either.right(TitanOperationStatus.INVALID_PROPERTY);
- }
- }
- log.debug("The property with name {} has invalid type {} or invalid value {}.", propertyName, propertyType, propertyValue);
-
- } else {
- result = Either.right(TitanOperationStatus.PROPERTY_NAME_ALREADY_EXISTS);
- log.debug("The property with name {} and different type already exists.", propertyName);
- }
- } else {
- result = Either.right(TitanOperationStatus.NOT_FOUND);
- log.debug("Failed to find property with name {}.", propertyName);
- }
- return result;
- }
-
- /**
- * validate capability instance uniqueness
- *
- * @param resourceInstanceId
- * @param capabilityId
- * @return
- */
- @Override
- public Either<Boolean, TitanOperationStatus> validateCapabilityInstExistence(String resourceInstanceId, String capabilityId) {
- Either<Boolean, TitanOperationStatus> result = null;
- TitanOperationStatus error;
- Map<String, Object> props = new HashMap<>();
- props.put(GraphPropertiesDictionary.CAPABILITY_ID.getProperty(), capabilityId);
- Either<Edge, TitanOperationStatus> getCapabilityInstanceEdgeRes = titanGenericDao.getOutgoingEdgeByCriteria(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), resourceInstanceId, GraphEdgeLabels.CAPABILITY_INST, props);
- if (getCapabilityInstanceEdgeRes.isRight()) {
- error = getCapabilityInstanceEdgeRes.right().value();
- if (error.equals(TitanOperationStatus.NOT_FOUND)) {
- result = Either.left(false);
- } else {
- log.debug("Failed to get outgoing edge for resource instance {}. status is {}.", resourceInstanceId, error);
- result = Either.right(error);
- }
- }
- if (result == null) {
- result = Either.left(true);
- }
- return result;
- }
-
- @Override
- public Either<Boolean, TitanOperationStatus> validateCapabilityInstExistence(TitanVertex instanceVertex, String resourceInstanceId, String capabilityId) {
- Either<Boolean, TitanOperationStatus> result = null;
- TitanOperationStatus error;
- Map<String, Object> props = new HashMap<>();
- props.put(GraphPropertiesDictionary.CAPABILITY_ID.getProperty(), capabilityId);
- Either<Edge, TitanOperationStatus> getCapabilityInstanceEdgeRes = titanGenericDao.getOutgoingEdgeByCriteria(instanceVertex, GraphEdgeLabels.CAPABILITY_INST, props);
- if (getCapabilityInstanceEdgeRes.isRight()) {
- error = getCapabilityInstanceEdgeRes.right().value();
- if (error.equals(TitanOperationStatus.NOT_FOUND)) {
- result = Either.left(false);
- } else {
- log.debug("Failed to get outgoing edge for resource instance {} status is {}", resourceInstanceId, error);
- result = Either.right(error);
- }
- }
- if (result == null) {
- result = Either.left(true);
- }
- return result;
- }
-
- private Either<CapabilityInstData, TitanOperationStatus> createCapabilityInstanceOnGraph(String resourceInstanceId, CapabilityData overrideCapabilityData, CapabilityInstData capabilityInstance) {
- log.debug("Before creation of capability instance of capability {} for resource instance {}", overrideCapabilityData.getUniqueId(), resourceInstanceId);
-
- Either<GraphRelation, TitanOperationStatus> createRelationRes;
- CapabilityInstData createdCapabilityInstance = null;
- String capabilityInstanceId = null;
- TitanOperationStatus error = null;
- Either<CapabilityInstData, TitanOperationStatus> createCapabilityInstanceRes = titanGenericDao.createNode(capabilityInstance, CapabilityInstData.class);
- if (createCapabilityInstanceRes.isRight()) {
- error = createCapabilityInstanceRes.right().value();
- log.debug("Failed to create capability instance of capability {} for resource instance {}. status is {}.", overrideCapabilityData.getUniqueId(), resourceInstanceId, error);
- }
- log.debug("After creation of capability instance of capability {} for resource instance {}. status is {}.", overrideCapabilityData.getUniqueId(), resourceInstanceId, error);
- if (error == null) {
- createdCapabilityInstance = createCapabilityInstanceRes.left().value();
- capabilityInstanceId = createdCapabilityInstance.getUniqueId();
- Map<String, Object> props = new HashMap<>();
- props.put(GraphPropertiesDictionary.CAPABILITY_ID.getProperty(), overrideCapabilityData.getUniqueId());
- UniqueIdData resourceInstanceIdData = new UniqueIdData(NodeTypeEnum.ResourceInstance, resourceInstanceId);
- log.debug("Before associating resource instance {} to capability instance.", resourceInstanceId);
- createRelationRes = titanGenericDao.createRelation(resourceInstanceIdData, capabilityInstance, GraphEdgeLabels.CAPABILITY_INST, props);
- if (createRelationRes.isRight()) {
- error = createRelationRes.right().value();
- log.debug("Failed to assotiate resource instance {} to capability instance {}. status is {}", resourceInstanceId, capabilityInstanceId, error);
- }
- log.debug("After associating resource instance {} to capability instance {}. status is {}", resourceInstanceId, capabilityInstanceId, error);
- }
- if (error == null) {
- log.debug("Before associating capability instance {} to capability {}.", capabilityInstanceId, overrideCapabilityData.getUniqueId());
- Map<String, Object> props = new HashMap<>();
- props.put(GraphPropertiesDictionary.CAPABILITY_ID.getProperty(), overrideCapabilityData.getUniqueId());
- createRelationRes = titanGenericDao.createRelation(createdCapabilityInstance, overrideCapabilityData, GraphEdgeLabels.INSTANCE_OF, props);
- if (createRelationRes.isRight()) {
- error = createRelationRes.right().value();
- log.debug("Failed to associate capability instance {} to capability {}. status is {}", capabilityInstanceId, overrideCapabilityData.getUniqueId(), error);
- }
- log.debug("After associating capability instance {} to capability {}. status is {}.", capabilityInstanceId, overrideCapabilityData.getUniqueId(), error);
- }
- if (error == null) {
- return createCapabilityInstanceRes;
- }
- return Either.right(error);
- }
-
- private Either<TitanVertex, TitanOperationStatus> createCapabilityInstanceOnGraph(TitanVertex riVertex, String resourceInstanceId, TitanVertex overrideCapabilityDataVertex, CapabilityInstData capabilityInstance) {
- String overrideCapabilityDataId = (String) titanGenericDao.getProperty(overrideCapabilityDataVertex, GraphPropertiesDictionary.UNIQUE_ID.getProperty());
- log.trace("Before creation of capability instance of capability {} for resource instance {}", overrideCapabilityDataVertex, resourceInstanceId);
-
- TitanOperationStatus createRelationRes;
- TitanVertex createdCapabilityInstance = null;
- String capabilityInstanceId = null;
- TitanOperationStatus error = null;
- Either<TitanVertex, TitanOperationStatus> createCapabilityInstanceRes = titanGenericDao.createNode(capabilityInstance);
- if (createCapabilityInstanceRes.isRight()) {
- error = createCapabilityInstanceRes.right().value();
- log.debug("Failed to create capability instance of capability {} for resource instance {} status is {}", overrideCapabilityDataId, resourceInstanceId, error);
- }
- log.trace("After creation of capability instance of capability {} for resource instance {} status is {}", overrideCapabilityDataId, resourceInstanceId, error);
- if (error == null) {
- createdCapabilityInstance = createCapabilityInstanceRes.left().value();
- capabilityInstanceId = (String) titanGenericDao.getProperty(createdCapabilityInstance, GraphPropertiesDictionary.UNIQUE_ID.getProperty());
- Map<String, Object> props = new HashMap<>();
- props.put(GraphPropertiesDictionary.CAPABILITY_ID.getProperty(), overrideCapabilityDataId);
- log.debug("Before associating resource instance {} to capability instance.", resourceInstanceId);
-
- createRelationRes = titanGenericDao.createEdge(riVertex, capabilityInstance, GraphEdgeLabels.CAPABILITY_INST, props);
- if (!createRelationRes.equals(TitanOperationStatus.OK)) {
- error = createRelationRes;
- log.debug("Failed to assotiate resource instance {} to capability instance {} status is {}", resourceInstanceId, capabilityInstanceId, error);
- }
- if (log.isTraceEnabled()) {
- log.trace("After associating resource instance {} to capability instance {}. status is {}", resourceInstanceId, capabilityInstanceId, error);
- }
- }
- if (error == null) {
- log.trace("Before associating capability instance {} to capability {}", capabilityInstanceId, overrideCapabilityDataId);
- Map<String, Object> props = new HashMap<>();
- props.put(GraphPropertiesDictionary.CAPABILITY_ID.getProperty(), overrideCapabilityDataId);
- createRelationRes = titanGenericDao.createEdge(createdCapabilityInstance, overrideCapabilityDataVertex, GraphEdgeLabels.INSTANCE_OF, props);
- if (!createRelationRes.equals(TitanOperationStatus.OK)) {
- error = createRelationRes;
- log.debug("Failed to associate capability instance {} to capability {} status is {}", capabilityInstanceId, overrideCapabilityDataId, error);
- }
- log.debug("After associating capability instance {} to capability {}. status is {}", capabilityInstanceId, overrideCapabilityDataId, error);
- }
- if (error == null) {
- return createCapabilityInstanceRes;
- }
- return Either.right(error);
- }
-
- private CapabilityInstData buildCapabilityInstanceData(String resourceInstanceId, CapabilityDefinition capability) {
- CapabilityInstData capabilityInstance = new CapabilityInstData();
- Long creationTime = System.currentTimeMillis();
- String uniqueId = UniqueIdBuilder.buildCapabilityInstanceUid(resourceInstanceId, capability.getName());
-
- capabilityInstance.setCreationTime(creationTime);
- capabilityInstance.setModificationTime(creationTime);
- capabilityInstance.setUniqueId(uniqueId);
-
- return capabilityInstance;
- }
-
- /**
- * delete capability instance from resource instance
- *
- * @param resourceInstanceId
- * @param capabilityInstanceId
- * @return
- */
- @Override
- public Either<CapabilityInstData, TitanOperationStatus> deleteCapabilityInstanceFromResourceInstance(String resourceInstanceId, String capabilityInstanceId) {
- log.debug("Before deleting of capability instance {} from resource instance {}.", capabilityInstanceId, resourceInstanceId);
-
- Either<CapabilityInstData, TitanOperationStatus> deleteCapabilityInstRes = null;
- TitanOperationStatus error = null;
- Either<Boolean, TitanOperationStatus> deleteProperyValuesRes = deleteAllPropertyValuesOfCapabilityInstance(resourceInstanceId, capabilityInstanceId);
- if (deleteProperyValuesRes.isRight()) {
- error = deleteProperyValuesRes.right().value();
- log.debug("Failed to delete property values of capability instance {} for resource instance {}. status is {}", capabilityInstanceId, resourceInstanceId, error);
- }
- if (error == null) {
- deleteCapabilityInstRes = titanGenericDao.deleteNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.CapabilityInst), capabilityInstanceId, CapabilityInstData.class);
- if (deleteCapabilityInstRes.isRight()) {
- error = deleteCapabilityInstRes.right().value();
- log.debug("Failed to delete capability instance {} for resource instance {}. status is {}", capabilityInstanceId, resourceInstanceId, error);
- }
- }
- log.debug("After deleting of capability instance {} from resource instance {}. status is {}", capabilityInstanceId, resourceInstanceId, error);
- if (error == null) {
- return Either.left(deleteCapabilityInstRes.left().value());
- }
- return Either.right(error);
- }
-
- private Either<Boolean, TitanOperationStatus> deleteAllPropertyValuesOfCapabilityInstance(String resourceInstanceId, String capabilityInstanceId) {
- log.debug("Before deleting all property values of capability instance {} from resource instance {}", capabilityInstanceId, resourceInstanceId);
- TitanOperationStatus error = null;
- List<ImmutablePair<PropertyValueData, GraphEdge>> deletePropertiesPairs;
- Either<List<ImmutablePair<PropertyValueData, GraphEdge>>, TitanOperationStatus> getPropertyValuesRes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.CapabilityInst), capabilityInstanceId,
- GraphEdgeLabels.PROPERTY_VALUE, NodeTypeEnum.PropertyValue, PropertyValueData.class);
- if (getPropertyValuesRes.isRight()) {
- error = getPropertyValuesRes.right().value();
- log.debug("Failed to retrieve property values of capability instance {} for resource instance {}. status is {}", capabilityInstanceId, resourceInstanceId, error);
- }
- if (error == null) {
- deletePropertiesPairs = getPropertyValuesRes.left().value();
- for (ImmutablePair<PropertyValueData, GraphEdge> propertyPair : deletePropertiesPairs) {
- Either<PropertyValueData, TitanOperationStatus> deletePropertyRes = titanGenericDao.deleteNode(propertyPair.getLeft(), PropertyValueData.class);
- if (deletePropertyRes.isRight()) {
- error = deletePropertyRes.right().value();
- log.debug("Failed to delete property values of capability instance {} for resource instance {}. status is {}", capabilityInstanceId, resourceInstanceId, error);
- break;
- }
- }
- }
- log.debug("After deleting all property values of capability instance from resource instance {}. status is {}", capabilityInstanceId, resourceInstanceId, error);
- if (error == null) {
- return Either.left(true);
- }
- return Either.right(error);
- }
-
- /**
- * get all capability instances for resource instance returns all Capability Instances related to Resource Instance as List<CapabilityInstData> or TitanOperationStatus if error occurs or if Resource Instance have no any related Capability
- * Instance
- *
- * @param resourceInstanceId
- * @return Either<List<CapabilityInstData>, TitanOperationStatus>
- */
- @Override
- public Either<List<ImmutablePair<CapabilityInstData, GraphEdge>>, TitanOperationStatus> getAllCapabilityInstancesOfResourceInstance(String resourceInstanceId) {
- log.debug("Before deleting all capability instances of resource instance {}", resourceInstanceId);
- TitanOperationStatus error = null;
- Either<List<ImmutablePair<CapabilityInstData, GraphEdge>>, TitanOperationStatus> getCapabilityInstancesRes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), resourceInstanceId,
- GraphEdgeLabels.CAPABILITY_INST, NodeTypeEnum.CapabilityInst, CapabilityInstData.class);
- if (getCapabilityInstancesRes.isRight()) {
- error = getCapabilityInstancesRes.right().value();
- log.debug("Failed to retrieve capability Instances of resource instance {}. status is {}", resourceInstanceId, error);
- }
- log.debug("After deleting all capability instances of resource instance {}. status is {}", resourceInstanceId, error);
- if (error == null) {
- return getCapabilityInstancesRes;
- }
- return Either.right(error);
- }
-
- /**
- * get capability instance of capability for resource instance
- *
- * @param resourceInstanceId
- * @param capabilityId
- * @return
- */
- @Override
- public Either<CapabilityInstData, TitanOperationStatus> getCapabilityInstanceOfCapabilityOfResourceInstance(String resourceInstanceId, String capabilityId) {
- TitanOperationStatus error = null;
- Map<String, Object> props = new HashMap<>();
- props.put(GraphPropertiesDictionary.CAPABILITY_ID.getProperty(), capabilityId);
- Either<ImmutablePair<CapabilityInstData, GraphEdge>, TitanOperationStatus> getCapabilityInstanceRes = titanGenericDao.getChildByEdgeCriteria(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), resourceInstanceId,
- GraphEdgeLabels.CAPABILITY_INST, NodeTypeEnum.CapabilityInst, CapabilityInstData.class, props);
- if (getCapabilityInstanceRes.isRight()) {
- error = getCapabilityInstanceRes.right().value();
- log.debug("Failed to retrieve capability Instance of capability {} of resource instance {}. status is {}", capabilityId, resourceInstanceId, error);
- }
- if (error == null) {
- return Either.left(getCapabilityInstanceRes.left().value().getLeft());
- }
- return Either.right(error);
- }
-
- /**
- * update capability property values
- *
- * @param resourceInstanceId
- * @param propertyValues
- * @param capabilityId
- * @return
- */
- @Override
- public Either<List<PropertyValueData>, TitanOperationStatus> updateCapabilityPropertyValues(String resourceInstanceId, String capabilityId, List<ComponentInstanceProperty> propertyValues) {
- log.debug("Before updating property values of capability {} of resource instance {}.", capabilityId, resourceInstanceId);
- TitanOperationStatus error = null;
- Map<String, Object> props = new HashMap<>();
- CapabilityInstData capabilityInstance = null;
- String capabilityInstanceId = null;
- Either<Boolean, TitanOperationStatus> deleteProperyValuesRes;
-
- CapabilityData overrideCapabilityData;
- CapabilityDefinition overrideCapabilityDefinition;
- Map<String, PropertyDefinition> defaultProperties = null;
- Either<ImmutablePair<CapabilityData, GraphEdge>, TitanOperationStatus> getCapabilityDataRes = null;
- Either<List<PropertyValueData>, TitanOperationStatus> addPropertyValuesRes = null;
- Either<CapabilityDefinition, TitanOperationStatus> getCapabilityDefinitionRes = null;
-
- log.debug("Before getting all capability instances of resource instance {}.", resourceInstanceId);
- props.put(GraphPropertiesDictionary.CAPABILITY_ID.getProperty(), capabilityId);
- Either<ImmutablePair<CapabilityInstData, GraphEdge>, TitanOperationStatus> getCapabilityInstancesRes = titanGenericDao.getChildByEdgeCriteria(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), resourceInstanceId,
- GraphEdgeLabels.CAPABILITY_INST, NodeTypeEnum.CapabilityInst, CapabilityInstData.class, props);
- if (getCapabilityInstancesRes.isRight()) {
- error = getCapabilityInstancesRes.right().value();
- log.debug("Failed to retrieve capability Instances of capability {} of resource instance {}. status is {}", capabilityId, resourceInstanceId, error);
- }
- log.debug("After getting all capability instances of resource instance {}. status is {}.", resourceInstanceId, error);
- if (error == null) {
- log.debug("Before deleting all capability instances of resource instance {}.", resourceInstanceId);
- capabilityInstance = getCapabilityInstancesRes.left().value().getLeft();
- capabilityInstanceId = capabilityInstance.getUniqueId();
- deleteProperyValuesRes = deleteAllPropertyValuesOfCapabilityInstance(resourceInstanceId, capabilityInstanceId);
- if (deleteProperyValuesRes.isRight()) {
- error = deleteProperyValuesRes.right().value();
- log.debug("Failed to delete property values of capability instance {} for resource instance {}. status is {}", capabilityInstanceId, resourceInstanceId, error);
- }
- log.debug("After deleting all capability instances of resource instance {}. status is {}", resourceInstanceId, error);
- }
- if (error == null) {
- log.debug("Before getting capability {} of resource instance {}", capabilityId, resourceInstanceId);
- getCapabilityDataRes = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), resourceInstanceId, GraphEdgeLabels.CALCULATED_CAPABILITY, NodeTypeEnum.Capability, CapabilityData.class);
- if (getCapabilityDataRes.isRight()) {
- error = getCapabilityDataRes.right().value();
- log.debug("Failed to get capability {} of resource instance {}. status is {}", capabilityId, resourceInstanceId, error);
- }
- log.debug("After getting capability {} of resource instance {}. status is {}.", capabilityId, resourceInstanceId, error);
- }
- if (error == null) {
- log.debug("Before getting capability definition for capability {} of resource instance {}.", capabilityId, resourceInstanceId);
- overrideCapabilityData = getCapabilityDataRes.left().value().getLeft();
- getCapabilityDefinitionRes = capabilityOperation.getCapabilityByCapabilityData(overrideCapabilityData);
- if (getCapabilityDefinitionRes.isRight()) {
- error = getCapabilityDefinitionRes.right().value();
- log.debug("Failed to retrieve capability {} of resource instance {}. status is {}", capabilityId, resourceInstanceId, error);
- }
- log.debug("After getting capability definition for capability {} of resource instance {}. status is {}.", capabilityId, resourceInstanceId, error);
- }
- if (error == null) {
- log.debug("Before validating capability properties of capability instance {} of resource instance {}.", capabilityInstanceId, resourceInstanceId);
- overrideCapabilityDefinition = getCapabilityDefinitionRes.left().value();
- if (overrideCapabilityDefinition.getProperties() != null) {
- defaultProperties = overrideCapabilityDefinition.getProperties().stream().collect(Collectors.toMap(PropertyDefinition::getName, Function.identity()));
- }
- Either<Boolean, TitanOperationStatus> result = validateCapabilityInstanceProperties(defaultProperties, propertyValues);
- if (result.isRight()) {
- error = result.right().value();
- log.debug("Failed to add properties to capability instance {} of resource instance {}. status is {}", capabilityInstance.getUniqueId(), resourceInstanceId, error);
- }
- log.debug("After validating capability properties of capability instance {} of resource instance {}. status is {}.", capabilityInstanceId, resourceInstanceId, error);
- }
- if (error == null) {
- log.debug("Before adding property values to capability instance {} of resource instance {}.", capabilityInstanceId, resourceInstanceId);
- addPropertyValuesRes = addPropertyValuesToCapabilityInstance(capabilityInstance, propertyValues, defaultProperties);
- if (addPropertyValuesRes.isRight()) {
- error = addPropertyValuesRes.right().value();
- log.debug("Failed to add properties to capability instance {} of resource instance {}. status is {}", capabilityInstance.getUniqueId(), resourceInstanceId, error);
- }
- log.debug("Before adding property values to capability instance {} of resource instance {}.", capabilityInstanceId, resourceInstanceId);
- }
- log.debug("After updating property values of capability {} of resource instance {}. status is {}.", capabilityId, resourceInstanceId, error);
- if (error == null) {
- return addPropertyValuesRes;
- }
- return Either.right(error);
- }
-
- /**
- * clone and associate capability instance with property values
- *
- * @param createdComponentInstance
- * @param capability
- * @param capabilityInstPair
- * @return
- */
- @Override
- public Either<ImmutablePair<CapabilityInstData, List<PropertyValueData>>, TitanOperationStatus> cloneAssociateCapabilityInstanceWithPropertyValues(ComponentInstanceData createdComponentInstance, CapabilityDefinition capability,
- ImmutablePair<CapabilityInstData, GraphEdge> capabilityInstPair) {
-
- TitanOperationStatus error = null;
- String componentInstanceId = createdComponentInstance.getUniqueId();
- String capabilityInstanceId = capabilityInstPair.getLeft().getUniqueId();
-
- log.debug("Before cloning capability instance with property values of capability instance {} of resource instance {}.", capabilityInstanceId, componentInstanceId);
- List<ImmutablePair<PropertyValueData, GraphEdge>> propertyValuePairs;
- List<PropertyValueData> newPropertyValues = new ArrayList<>();
- CapabilityInstData cloneCapabilityInstance = null;
- Either<CapabilityInstData, TitanOperationStatus> cloneCapabilityInstanceNodeRes = null;
-
- log.debug("Before getting all property values of component instance {} of resource instance {}.", capabilityInstanceId, componentInstanceId);
- Either<List<ImmutablePair<PropertyValueData, GraphEdge>>, TitanOperationStatus> getPropertyValuesRes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.CapabilityInst), capabilityInstPair.getLeft().getUniqueId(),
- GraphEdgeLabels.PROPERTY_VALUE, NodeTypeEnum.PropertyValue, PropertyValueData.class);
- if (getPropertyValuesRes.isRight()) {
- error = getPropertyValuesRes.right().value();
- log.debug("Failed to retrieve property values of capability instance {} of component instance {}. status is {}", capabilityInstPair.getLeft().getUniqueId(), componentInstanceId, error);
- }
- log.debug("After getting all property values of component instance {} of resource instance {}. status is {}.", capabilityInstanceId, componentInstanceId, error);
- if (error == null) {
- CapabilityInstData cloneCapabilityInst = buildCapabilityInstanceData(componentInstanceId, capability);
- log.debug("Before creating capability instance node {} on graph.", cloneCapabilityInst.getUniqueId());
- cloneCapabilityInstanceNodeRes = titanGenericDao.createNode(cloneCapabilityInst, CapabilityInstData.class);
- if (cloneCapabilityInstanceNodeRes.isRight()) {
- error = cloneCapabilityInstanceNodeRes.right().value();
- log.debug("Failed to create capability instance of capability {} of component instance {}. status is {}", capability.getUniqueId(), componentInstanceId, error);
- }
- log.debug("After creating capability instance node {} on graph. status is {}.", cloneCapabilityInst.getUniqueId(), error);
- }
-
- if (error == null) {
- log.debug("Before creating relation from capability instance {} to capability {} on graph.", cloneCapabilityInstanceNodeRes.left().value().getUniqueId(), capability.getUniqueId());
- cloneCapabilityInstance = cloneCapabilityInstanceNodeRes.left().value();
- CapabilityData capabilityData = buildCapabilityData(capability);
- Map<String, Object> props = new HashMap<>();
- props.put(GraphPropertiesDictionary.CAPABILITY_ID.getProperty(), capabilityData.getUniqueId());
- Either<GraphRelation, TitanOperationStatus> createRelationRes = titanGenericDao.createRelation(cloneCapabilityInstance, capabilityData, GraphEdgeLabels.INSTANCE_OF, props);
- if (createRelationRes.isRight()) {
- error = createRelationRes.right().value();
- log.debug("Failed to associate capability instance {} to capability {}. status is {}", cloneCapabilityInstance.getUniqueId(), capability.getUniqueId(), error);
- }
- log.debug("After creating relation from capability instance {} to capability {} on graph. status is.", cloneCapabilityInstanceNodeRes.left().value().getUniqueId(), capability.getUniqueId(), error);
- }
-
- if (error == null) {
- log.debug("Before cloning property values of component instance {}.", capabilityInstanceId);
- propertyValuePairs = getPropertyValuesRes.left().value();
- for (ImmutablePair<PropertyValueData, GraphEdge> propertyValuePair : propertyValuePairs) {
- Either<PropertyValueData, TitanOperationStatus> clonePropertyValueRes = cloneAssociatePropertyValue(cloneCapabilityInstance, propertyValuePair);
- if (clonePropertyValueRes.isRight()) {
- error = clonePropertyValueRes.right().value();
- log.debug("Failed to clone property value {} of capability {} of component instance {}. status is {}", propertyValuePair.getLeft().getUniqueId(), capability.getUniqueId(), componentInstanceId, error);
- break;
- } else {
- newPropertyValues.add(clonePropertyValueRes.left().value());
- }
- }
- log.debug("After cloning property values of component instance {}. status is {}.", capabilityInstanceId, error);
- }
- log.debug("After cloning capability instance with property values of capability instance {} of resource instance {}. status is {}.", capabilityInstanceId, componentInstanceId, error);
- if (error == null) {
- return Either.left(new ImmutablePair<CapabilityInstData, List<PropertyValueData>>(cloneCapabilityInstance, newPropertyValues));
- }
- return Either.right(error);
- }
-
- public Either<TitanVertex, TitanOperationStatus> cloneAssociateCapabilityInstanceWithPropertyValues(TitanVertex componentInstanceVertex, CapabilityDefinition capability, ImmutablePair<CapabilityInstData, GraphEdge> capabilityInstPair) {
-
- TitanOperationStatus error = null;
- String componentInstanceId = (String) titanGenericDao.getProperty(componentInstanceVertex, GraphPropertiesDictionary.UNIQUE_ID.getProperty());
- String capabilityInstanceId = capabilityInstPair.getLeft().getUniqueId();
-
- if (log.isTraceEnabled()) {
- log.trace("Before cloning capability instance with property values of capability instance {} of resource instance {}", capabilityInstanceId, componentInstanceId);
- }
- List<ImmutablePair<TitanVertex, Edge>> propertyValuePairs;
- Either<TitanVertex, TitanOperationStatus> cloneCapabilityInstanceNodeRes = null;
-
- if (log.isTraceEnabled()) {
- log.trace("Before getting all property values of component instance {} of resource instance {}", capabilityInstanceId, componentInstanceId);
- }
- Either<List<ImmutablePair<TitanVertex, Edge>>, TitanOperationStatus> getPropertyValuesRes = titanGenericDao.getChildrenVertecies(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.CapabilityInst), capabilityInstPair.getLeft().getUniqueId(),
- GraphEdgeLabels.PROPERTY_VALUE);
- if (getPropertyValuesRes.isRight()) {
- error = getPropertyValuesRes.right().value();
- log.debug("Failed to retrieve property values of capability instance {} of component instance {}. status is {}", capabilityInstPair.getLeft().getUniqueId(), componentInstanceId, error);
- }
- if (log.isTraceEnabled()) {
- log.trace("After getting all property values of component instance {} of resource instance {}. status is {}", capabilityInstanceId, componentInstanceId, error);
- }
- if (error == null) {
- CapabilityInstData cloneCapabilityInst = buildCapabilityInstanceData(componentInstanceId, capability);
- log.trace("Before creating capability instance node {} on graph", cloneCapabilityInst.getUniqueId());
- cloneCapabilityInstanceNodeRes = titanGenericDao.createNode(cloneCapabilityInst);
- if (cloneCapabilityInstanceNodeRes.isRight()) {
- error = cloneCapabilityInstanceNodeRes.right().value();
- log.debug("Failed to create capability instance of capability {} of component instance {}. status is {}", capability.getUniqueId(), componentInstanceId, error);
- }
- if (log.isTraceEnabled()) {
- log.trace("After creating capability instance node {} on graph. status is {}", cloneCapabilityInst.getUniqueId(), error);
- }
- }
- CapabilityData capabilityData;
- TitanVertex cloneCapabilityInstance = null;
- if (error == null) {
- if (log.isTraceEnabled()) {
- log.trace("Before creating relation from capability instance {} to capability {} on graph", capability.getUniqueId(), capability.getUniqueId());
- }
- capabilityData = buildCapabilityData(capability);
- Map<String, Object> props = new HashMap<>();
- props.put(GraphPropertiesDictionary.CAPABILITY_ID.getProperty(), capabilityData.getUniqueId());
- cloneCapabilityInstance = cloneCapabilityInstanceNodeRes.left().value();
- TitanOperationStatus createRelationRes = titanGenericDao.createEdge(cloneCapabilityInstance, capabilityData, GraphEdgeLabels.INSTANCE_OF, props);
- if (!createRelationRes.equals(TitanOperationStatus.OK)) {
- error = createRelationRes;
- log.debug("Failed to associate capability instance {} to capability {}. status is {}", capabilityData.getUniqueId(), capability.getUniqueId(), createRelationRes);
- }
- log.trace("After creating relation from capability instance {} to capability {} on graph. status is {}", capabilityData.getUniqueId(), capability.getUniqueId(), error);
- }
-
- if (error == null) {
- log.trace("Before cloning property values of component instance {} ", capabilityInstanceId);
- propertyValuePairs = getPropertyValuesRes.left().value();
- for (ImmutablePair<TitanVertex, Edge> propertyValuePair : propertyValuePairs) {
- TitanOperationStatus clonePropertyValueRes = cloneAssociatePropertyValue(cloneCapabilityInstance, propertyValuePair);
- if (!clonePropertyValueRes.equals(TitanOperationStatus.OK)) {
- error = clonePropertyValueRes;
- log.debug("Failed to clone property value of capability {} of component instance {}. status is {}", capability.getUniqueId(), componentInstanceId, error);
- break;
- }
- }
- log.debug("After cloning property values of component instance {}. status is {}", capabilityInstanceId, error);
- }
- log.debug("After cloning capability instance with property values of capability instance {} of resource instance {}. status is {}.", capabilityInstanceId, componentInstanceId, error);
- if (error == null) {
- return Either.left(cloneCapabilityInstance);
- }
- return Either.right(error);
- }
-
- private CapabilityData buildCapabilityData(CapabilityDefinition capability) {
- CapabilityData capabilityData = new CapabilityData();
- capabilityData.setUniqueId(capability.getUniqueId());
- capabilityData.setDescription(capability.getDescription());
- capabilityData.setType(capability.getType());
- capabilityData.setMaxOccurrences(capability.getMaxOccurrences());
- capabilityData.setMinOccurrences(capability.getMinOccurrences());
- List<String> validSourceTypes = capability.getValidSourceTypes();
- if (validSourceTypes != null) {
- capabilityData.setValidSourceTypes(validSourceTypes);
- }
- return capabilityData;
- }
-
- private Either<PropertyValueData, TitanOperationStatus> cloneAssociatePropertyValue(CapabilityInstData cloneCapabilityInstance, ImmutablePair<PropertyValueData, GraphEdge> propertyValuePair) {
- TitanOperationStatus error = null;
- String propertyValueID = propertyValuePair.getLeft().getUniqueId();
- String capabilityInstanceId = cloneCapabilityInstance.getUniqueId();
- log.debug("Before cloning property values {} of component instance {}.", propertyValueID, capabilityInstanceId);
-
- Map<String, Object> props = propertyValuePair.getRight().getProperties();
- PropertyData propertyData = new PropertyData();
- String propertyId = (String) props.get(GraphPropertiesDictionary.PROPERTY_ID.name());
- propertyData.getPropertyDataDefinition().setUniqueId(propertyId);
-
- PropertyValueData propertyValue = buildPropertyValueData((String) props.get(GraphPropertiesDictionary.PROPERTY_NAME.name()), propertyValuePair.getLeft().getType(), propertyValuePair.getLeft().getValue(), capabilityInstanceId);
- PropertyValueData createdValue = null;
- Either<GraphRelation, TitanOperationStatus> createRelationRes;
-
- log.debug("Before creating property values node {} on graph.", propertyValue.getUniqueId());
- Either<PropertyValueData, TitanOperationStatus> createValueRes = titanGenericDao.createNode(propertyValue, PropertyValueData.class);
- if (createValueRes.isRight()) {
- error = createValueRes.right().value();
- log.debug("Failed to create property value for capability instance {} of resource instance. status is {}.", cloneCapabilityInstance.getUniqueId(), error);
- }
- log.debug("After creating property values node {} on graph. status is {}.", propertyValue.getUniqueId(), error);
- if (error == null) {
- createdValue = createValueRes.left().value();
- log.debug("Before creating relation from capability instance {} to property value {}.", capabilityInstanceId, createdValue.getUniqueId());
- createRelationRes = titanGenericDao.createRelation(cloneCapabilityInstance, createdValue, GraphEdgeLabels.PROPERTY_VALUE, props);
- if (createRelationRes.isRight()) {
- error = createRelationRes.right().value();
- log.debug("Failed to create relation from capability instance {} to property value {}. status is {}.", cloneCapabilityInstance.getUniqueId(), createdValue.getUniqueId(), error);
- }
- log.debug("After creating relation from capability instance {} to property value {}. status is {}.", capabilityInstanceId, createdValue.getUniqueId(), error);
- }
- if (error == null) {
- log.debug("Before creating relation from property value {} to property {}.", createdValue, propertyData.getUniqueId());
- createRelationRes = titanGenericDao.createRelation(createdValue, propertyData, GraphEdgeLabels.PROPERTY_IMPL, props);
- if (createRelationRes.isRight()) {
- error = createRelationRes.right().value();
- log.debug("Failed to create relation from property value {} to property {}. status is {}.", createdValue.getUniqueId(), propertyId, error);
- }
- log.debug("Before creating relation from property value {} to property {}. status is {}.", createdValue, propertyData.getUniqueId(), error);
- }
- log.debug("After cloning property values {} of component instance {}. status is {}.", propertyValueID, capabilityInstanceId, error);
- if (error == null) {
- return Either.left(createdValue);
- }
- return Either.right(error);
- }
-
- private TitanOperationStatus cloneAssociatePropertyValue(TitanVertex capabilityInstanceVertex, ImmutablePair<TitanVertex, Edge> propertyValuePair) {
- TitanOperationStatus error = null;
- TitanVertex propertyVertex = propertyValuePair.getLeft();
- String propertyValueID = (String) titanGenericDao.getProperty(propertyVertex, GraphPropertiesDictionary.UNIQUE_ID.getProperty());
- String capabilityInstanceId = (String) titanGenericDao.getProperty(capabilityInstanceVertex, GraphPropertiesDictionary.UNIQUE_ID.getProperty());
- if (log.isTraceEnabled()) {
- log.trace("Before cloning property values {} of component instance {}", propertyValueID, capabilityInstanceId);
- }
-
- Map<String, Object> props = titanGenericDao.getProperties(propertyValuePair.getRight());
- PropertyData propertyData = new PropertyData();
- String propertyId = (String) props.get(GraphPropertiesDictionary.PROPERTY_ID.name());
- propertyData.getPropertyDataDefinition().setUniqueId(propertyId);
-
- String propertyType = (String) titanGenericDao.getProperty(propertyVertex, GraphPropertiesDictionary.TYPE.getProperty());
- String propertyValueStr = (String) titanGenericDao.getProperty(propertyVertex, GraphPropertiesDictionary.VALUE.getProperty());
-
- PropertyValueData propertyValue = buildPropertyValueData((String) props.get(GraphPropertiesDictionary.PROPERTY_NAME.name()), propertyType, propertyValueStr, capabilityInstanceId);
- TitanVertex createdValue = null;
- TitanOperationStatus createRelationRes;
-
- log.trace("Before creating property values node {} on graph.", propertyValue.getUniqueId());
- Either<TitanVertex, TitanOperationStatus> createValueRes = titanGenericDao.createNode(propertyValue);
- String capabiltyInstId = (String) titanGenericDao.getProperty(capabilityInstanceVertex, GraphPropertiesDictionary.UNIQUE_ID.getProperty());
- if (createValueRes.isRight()) {
- error = createValueRes.right().value();
- log.debug("Failed to create property value for capability instance {} of resource instance. status is {}", capabiltyInstId, error);
- }
- if (log.isTraceEnabled()) {
- log.trace("After creating property values node {} on graph. status is {} ", propertyValue.getUniqueId(), error);
- }
- if (error == null) {
- createdValue = createValueRes.left().value();
- log.trace("Before creating relation from capability instance {} to property value {}", capabilityInstanceId, propertyValue.getUniqueId());
- createRelationRes = titanGenericDao.createEdge(capabilityInstanceVertex, createdValue, GraphEdgeLabels.PROPERTY_VALUE, props);
- if (!createRelationRes.equals(TitanOperationStatus.OK)) {
- error = createRelationRes;
- log.debug("Failed to create relation from capability instance {} to property value {}. status is {}", capabiltyInstId, propertyValue.getUniqueId(), error);
- }
- if (log.isTraceEnabled()) {
- log.trace("After creating relation from capability instance {} to property value {}. status is {} ", capabilityInstanceId, propertyValue.getUniqueId(), error);
- }
- }
- if (error == null) {
- log.trace("Before creating relation from property value {} to property {} ", createdValue, propertyData.getUniqueId());
- createRelationRes = titanGenericDao.createEdge(createdValue, propertyData, GraphEdgeLabels.PROPERTY_IMPL, props);
- if (!createRelationRes.equals(TitanOperationStatus.OK)) {
- error = createRelationRes;
- log.debug("Failed to create relation from property value {} to property {}. status is {}", propertyValue.getUniqueId(), propertyId, error);
- }
- if (log.isTraceEnabled()) {
- log.trace("Before creating relation from property value {} to property {}. status is {}", createdValue, propertyData.getUniqueId(), error);
- }
- }
- log.trace("After cloning property values {} of component instance {}. status is {}", propertyValueID, capabilityInstanceId, error);
- if (error == null) {
- return TitanOperationStatus.OK;
- }
- return error;
- }
-}
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/CapabilityOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/CapabilityOperation.java
index ad43c60b0f..a4be274781 100644
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/CapabilityOperation.java
+++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/CapabilityOperation.java
@@ -89,934 +89,8 @@ public class CapabilityOperation extends AbstractOperation implements ICapabilit
this.titanGenericDao = titanGenericDao;
}
- @Override
- public Either<CapabilityDefinition, StorageOperationStatus> addCapability(String resourceId, String capabilityName, CapabilityDefinition capabilityDefinition, boolean inTransaction) {
-
- Either<CapabilityDefinition, StorageOperationStatus> result = null;
-
- try {
-
- Either<CapabilityData, TitanOperationStatus> addCapStatus = addCapabilityToResource(resourceId, capabilityName, capabilityDefinition);
-
- if (addCapStatus.isRight()) {
- log.debug("Failed to add capability {} [{}] to Graph", capabilityName, capabilityDefinition);
- BeEcompErrorManager.getInstance().logBeFailedCreateNodeError("Add Capability", capabilityName, String.valueOf(addCapStatus.right().value()));
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(addCapStatus.right().value()));
- return result;
- } else {
- CapabilityData capabilityData = addCapStatus.left().value();
-
- String capabilityUid = capabilityData.getUniqueId();
- Either<CapabilityDefinition, StorageOperationStatus> capabilityRes = getCapability(capabilityUid, true);
- log.debug("After fetching capability {} with uid {}. status is {}" ,capabilityName, capabilityUid,capabilityRes);
-
- if (capabilityRes.isRight()) {
- StorageOperationStatus status = capabilityRes.right().value();
- log.debug("Failed to fetch capability {} with uid {}. status is {}", capabilityName, capabilityUid, status);
- result = Either.right(status);
- return result;
- }
-
- CapabilityDefinition value = capabilityRes.left().value();
- log.debug("The returned CapabilityDefinition is {}", value);
- result = Either.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();
- }
- }
- }
-
- }
-
- @Override
- public StorageOperationStatus addCapability(TitanVertex metadataVertex, String resourceId, String capabilityName, CapabilityDefinition capabilityDefinition, boolean inTransaction) {
-
- StorageOperationStatus result = StorageOperationStatus.OK;
- try {
-
- TitanOperationStatus addCapStatus = addCapabilityToResource(metadataVertex, resourceId, capabilityName, capabilityDefinition);
-
- if (!addCapStatus.equals(TitanOperationStatus.OK)) {
- log.debug("Failed to add capability {} [{}] to Graph", capabilityName, capabilityDefinition);
- BeEcompErrorManager.getInstance().logBeFailedCreateNodeError("Add Capability", capabilityName, String.valueOf(addCapStatus));
- result = DaoStatusConverter.convertTitanStatusToStorageStatus(addCapStatus);
- }
- } finally {
- if (false == inTransaction) {
- if (result == null || !result.equals(TitanOperationStatus.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();
- }
- }
- }
- return result;
- }
-
- private CapabilityDefinition convertCDataToCDefinition(CapabilityData capabilityData) {
-
- CapabilityDefinition capabilityDefinition = new CapabilityDefinition();
- capabilityDefinition.setType(capabilityData.getType());
-
- return capabilityDefinition;
- }
-
- @Override
- public Either<CapabilityDefinition, StorageOperationStatus> getCapability(String uniqueId) {
-
- return getCapability(uniqueId, false);
- }
-
- public Either<Map<String, CapabilityDefinition>, StorageOperationStatus> getAllCapabilitiesOfResource(String resourceId, boolean recursively, boolean inTransaction) {
-
- Map<String, CapabilityDefinition> capabilities = new HashMap<>();
- Either<Map<String, CapabilityDefinition>, StorageOperationStatus> result = null;
- Set<String> caseInsensitiveCapabilityNames = new HashSet<>();
-
- try {
- TitanOperationStatus status = getAllCapabilitiesRecusive(NodeTypeEnum.Resource, resourceId, recursively, capabilities, caseInsensitiveCapabilityNames, inTransaction);
- if (!status.equals(TitanOperationStatus.OK)) {
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
- result = Either.left(capabilities);
- 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 TitanOperationStatus getAllCapabilitiesRecusive(NodeTypeEnum nodeType, String resourceId, boolean recursively, Map<String, CapabilityDefinition> capabilities, Set<String> caseInsensitiveCapabilityNames, boolean inTransaction) {
-
- TitanOperationStatus findStatus;
-
- if (recursively) {
- findStatus = findAllCapabilitiesRecursively(resourceId, capabilities, caseInsensitiveCapabilityNames);
-
- } else {
- findStatus = getCapabilitisOfResourceOnly(resourceId, capabilities, caseInsensitiveCapabilityNames);
- }
- if (!findStatus.equals(TitanOperationStatus.OK)) {
- return findStatus;
- }
-
- List<String> derivedFromList = new ArrayList<>();
- TitanOperationStatus fillResourceDerivedListFromGraph = fillResourceDerivedListFromGraph(resourceId, derivedFromList);
- if (!fillResourceDerivedListFromGraph.equals(TitanOperationStatus.OK)) {
- log.debug("fail to find all valid sources of capability. status = {}", fillResourceDerivedListFromGraph.name());
- return fillResourceDerivedListFromGraph;
- }
- capabilities.forEach((name, capability) -> capability.setCapabilitySources(derivedFromList));
- return TitanOperationStatus.OK;
- }
-
- protected TitanOperationStatus findAllCapabilitiesRecursively(String resourceId, Map<String, CapabilityDefinition> capabilities, Set<String> caseInsensitiveCapabilityNames) {
-
- TitanOperationStatus resourceCapabilitiesStatus = getCapabilitisOfResourceOnly(resourceId, capabilities, caseInsensitiveCapabilityNames);
-
- if (!resourceCapabilitiesStatus.equals(TitanOperationStatus.OK)) {
- return resourceCapabilitiesStatus;
- }
-
- Either<ImmutablePair<ResourceMetadataData, GraphEdge>, TitanOperationStatus> parentNodes = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource), resourceId, GraphEdgeLabels.DERIVED_FROM, NodeTypeEnum.Resource,
- ResourceMetadataData.class);
-
- if (parentNodes.isRight()) {
- TitanOperationStatus parentNodesStatus = parentNodes.right().value();
- if (!parentNodesStatus.equals(TitanOperationStatus.NOT_FOUND)) {
- log.debug("Failed to find parent capabilities of resource {}. status is {}", resourceId, parentNodesStatus);
- BeEcompErrorManager.getInstance().logBeFailedFindParentError("Fetch parent capabilities", resourceId, String.valueOf(parentNodesStatus));
- return parentNodesStatus;
- }
- }
- if (parentNodes.isLeft()) {
- ImmutablePair<ResourceMetadataData, GraphEdge> parnetNodePair = parentNodes.left().value();
- String parentUniqueId = parnetNodePair.getKey().getMetadataDataDefinition().getUniqueId();
- TitanOperationStatus addParentIntStatus = findAllCapabilitiesRecursively(parentUniqueId, capabilities, caseInsensitiveCapabilityNames);
-
- if (addParentIntStatus != TitanOperationStatus.OK) {
- log.debug("Failed to fetch all capabilities of resource {}", parentUniqueId);
- return addParentIntStatus;
- }
- }
- return TitanOperationStatus.OK;
- }
-
- private TitanOperationStatus getCapabilitisOfResourceOnly(String resourceId, Map<String, CapabilityDefinition> capabilities, Set<String> caseInsensitiveCapabilityNames) {
- Either<List<ImmutablePair<CapabilityData, GraphEdge>>, TitanOperationStatus> allCapabilitiesRes = getAllCapabilitiesPairs(resourceId);
- if (allCapabilitiesRes.isRight()) {
- TitanOperationStatus status = allCapabilitiesRes.right().value();
- log.debug("After fetching all capabilities of resource {}. status is {}", resourceId, status);
- if (status.equals(TitanOperationStatus.NOT_FOUND)) {
- status = TitanOperationStatus.OK;
- }
- return status;
- }
-
- List<ImmutablePair<CapabilityData, GraphEdge>> capabilityPairs = allCapabilitiesRes.left().value();
-
- if (capabilityPairs != null) {
- for (ImmutablePair<CapabilityData, GraphEdge> capabilityPair : capabilityPairs) {
- CapabilityData capabilityData = capabilityPair.getKey();
- GraphEdge graphEdge = capabilityPair.getValue();
- Map<String, Object> edgeProps = graphEdge.getProperties();
- if (edgeProps != null) {
- String capabilityName = (String) edgeProps.get(GraphPropertiesDictionary.NAME.getProperty());
- if (capabilityName == null) {
- log.error("Capability name was not found for capability {}", capabilityData.getUniqueId());
- return TitanOperationStatus.INVALID_ELEMENT;
- }
- Either<CapabilityDefinition, TitanOperationStatus> capabilityDefRes = getCapabilityByCapabilityData(capabilityData);
- if (capabilityDefRes.isRight()) {
- TitanOperationStatus status = capabilityDefRes.right().value();
- return status;
- }
- CapabilityDefinition capabilityDefinition = capabilityDefRes.left().value();
- capabilityDefinition.setOwnerId(resourceId);
- log.debug("Before adding capability {} with definition {} to result.", capabilityName, capabilityDefinition);
- // US631462
- if (caseInsensitiveCapabilityNames.contains(capabilityName.toLowerCase())) {
- log.debug("The capability {} was already defined in derived resource (case insensitive). Ignore {} from resource {}", capabilityName, capabilityName, resourceId);
- } else {
- capabilities.put(capabilityName, capabilityDefinition);
- caseInsensitiveCapabilityNames.add(capabilityName.toLowerCase());
- }
- } else {
- log.debug("Capability name was not found for capability {}", capabilityData.getUniqueId());
- BeEcompErrorManager.getInstance().logBeFailedRetrieveNodeError("Fetch Capability", capabilityData.getUniqueId(), String.valueOf(TitanOperationStatus.INVALID_ELEMENT));
- return TitanOperationStatus.INVALID_ELEMENT;
- }
-
- }
- }
- return TitanOperationStatus.OK;
- }
-
- @Override
- public Either<CapabilityDefinition, StorageOperationStatus> getCapability(String uniqueId, boolean inTransaction) {
-
- Either<CapabilityDefinition, StorageOperationStatus> result = null;
-
- try {
- Either<CapabilityData, TitanOperationStatus> capabiltyRes = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Capability), uniqueId, CapabilityData.class);
- if (capabiltyRes.isRight()) {
- TitanOperationStatus status = capabiltyRes.right().value();
- log.debug("Failed to retrieve capability {} from graph. status is {}", uniqueId, status);
-
- BeEcompErrorManager.getInstance().logBeFailedRetrieveNodeError("Fetch Capability", uniqueId, String.valueOf(status));
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
- CapabilityData capabilityData = capabiltyRes.left().value();
- CapabilityDefinition capabilityDefinition = new CapabilityDefinition();
- capabilityDefinition.setDescription(capabilityData.getDescription());
- capabilityDefinition.setUniqueId(capabilityData.getUniqueId());
- capabilityDefinition.setValidSourceTypes(capabilityData.getValidSourceTypes());
- capabilityDefinition.setMinOccurrences(capabilityData.getMinOccurrences());
- capabilityDefinition.setMaxOccurrences(capabilityData.getMaxOccurrences());
-
- Either<CapabilityTypeData, TitanOperationStatus> capabilityTypeRes = getCapabilityTypeOfCapability(uniqueId);
- if (capabilityTypeRes.isRight()) {
- TitanOperationStatus status = capabilityTypeRes.right().value();
- log.debug("Failed to retrieve capability type of capability {}. status is {}", uniqueId, status);
- BeEcompErrorManager.getInstance().logBeFailedRetrieveNodeError("Fetch Capability", uniqueId, String.valueOf(status));
-
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
-
- CapabilityTypeData capabilityTypeData = capabilityTypeRes.left().value();
- capabilityDefinition.setType(capabilityTypeData.getCapabilityTypeDataDefinition().getType());
-
- Either<ImmutablePair<ResourceMetadataData, GraphEdge>, TitanOperationStatus> parentNode = titanGenericDao.getParentNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Capability), uniqueId, GraphEdgeLabels.CAPABILITY,
- NodeTypeEnum.Resource, ResourceMetadataData.class);
- if (parentNode.isRight()) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(parentNode.right().value()));
- } else {
- ImmutablePair<ResourceMetadataData, GraphEdge> pair = parentNode.left().value();
- capabilityDefinition.setOwnerId(pair.left.getMetadataDataDefinition().getUniqueId());
- List<String> derivedFromList = new ArrayList<>();
- TitanOperationStatus fillResourceDerivedListFromGraph = fillResourceDerivedListFromGraph(pair.left.getMetadataDataDefinition().getUniqueId(), derivedFromList);
- if (fillResourceDerivedListFromGraph.equals(TitanOperationStatus.OK)) {
- capabilityDefinition.setCapabilitySources(derivedFromList);
- }
- }
-
- Either<List<PropertyDefinition>, TitanOperationStatus> getPropertiesRes = getPropertiesOfCapability(uniqueId, capabilityTypeData.getCapabilityTypeDataDefinition().getType());
- if (getPropertiesRes.isRight() && !getPropertiesRes.right().value().equals(TitanOperationStatus.NOT_FOUND)) {
- TitanOperationStatus status = getPropertiesRes.right().value();
- log.debug("Failed to retrieve properties of capability {}. status is {}", uniqueId, status);
- BeEcompErrorManager.getInstance().logBeFailedRetrieveNodeError("Fetch Properties of Capability", uniqueId, String.valueOf(status));
-
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
- if (getPropertiesRes.isLeft()) {
- List<ComponentInstanceProperty> properties = new ArrayList<>();
- for (PropertyDefinition property : getPropertiesRes.left().value()) {
- properties.add(new ComponentInstanceProperty(property, null, null));
- }
- capabilityDefinition.setProperties(properties);
- }
- result = Either.left(capabilityDefinition);
-
- 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();
- }
- }
- }
-
- }
-
- private TitanOperationStatus fillResourceDerivedListFromGraph(String uniqueId, List<String> derivedFromList) {
-
- Either<ResourceMetadataData, TitanOperationStatus> resourceNode = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource), uniqueId, ResourceMetadataData.class);
-
- if (resourceNode.isRight()) {
- TitanOperationStatus parentNodesStatus = resourceNode.right().value();
- if (!parentNodesStatus.equals(TitanOperationStatus.NOT_FOUND)) {
- log.debug("Failed to find resource {} . status is {}", uniqueId, parentNodesStatus);
- return parentNodesStatus;
- }
- }
-
- derivedFromList.add(((ResourceMetadataDataDefinition) resourceNode.left().value().getMetadataDataDefinition()).getToscaResourceName());
- Either<List<ImmutablePair<ResourceMetadataData, GraphEdge>>, TitanOperationStatus> childrenNodes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource), uniqueId, GraphEdgeLabels.DERIVED_FROM,
- NodeTypeEnum.Resource, ResourceMetadataData.class);
-
- if (childrenNodes.isRight() && (childrenNodes.right().value() != TitanOperationStatus.NOT_FOUND)) {
- return childrenNodes.right().value();
- } else if (childrenNodes.isLeft()) {
-
- List<ImmutablePair<ResourceMetadataData, GraphEdge>> pairList = childrenNodes.left().value();
- for (ImmutablePair<ResourceMetadataData, GraphEdge> pair : pairList) {
- return fillResourceDerivedListFromGraph(pair.left.getMetadataDataDefinition().getUniqueId(), derivedFromList);
- }
- }
- return TitanOperationStatus.OK;
- }
-
- public Either<CapabilityDefinition, TitanOperationStatus> getCapabilityByCapabilityData(CapabilityData capabilityData) {
-
- Either<CapabilityDefinition, TitanOperationStatus> result;
-
- CapabilityDefinition capabilityDefinition = new CapabilityDefinition();
- capabilityDefinition.setDescription(capabilityData.getDescription());
- capabilityDefinition.setUniqueId(capabilityData.getUniqueId());
- capabilityDefinition.setValidSourceTypes(capabilityData.getValidSourceTypes());
- capabilityDefinition.setMinOccurrences(capabilityData.getMinOccurrences());
- capabilityDefinition.setMaxOccurrences(capabilityData.getMaxOccurrences());
-
- String capabilityUid = capabilityData.getUniqueId();
- Either<CapabilityTypeData, TitanOperationStatus> capabilityTypeRes = getCapabilityTypeOfCapability(capabilityUid);
- if (capabilityTypeRes.isRight()) {
- TitanOperationStatus status = capabilityTypeRes.right().value();
- log.debug("Failed to retrieve capability type of capability {} . status is {}", capabilityUid, status);
- BeEcompErrorManager.getInstance().logBeFailedRetrieveNodeError("Fetch Capability", capabilityUid, String.valueOf(status));
-
- return Either.right(status);
- }
-
- CapabilityTypeData capabilityTypeData = capabilityTypeRes.left().value();
- capabilityDefinition.setType(capabilityTypeData.getCapabilityTypeDataDefinition().getType());
-
- Either<List<PropertyDefinition>, TitanOperationStatus> capabilityPropertiesRes = getPropertiesOfCapability(capabilityUid, capabilityDefinition.getType());
- if (capabilityPropertiesRes.isRight() && !capabilityPropertiesRes.right().value().equals(TitanOperationStatus.NOT_FOUND)) {
- TitanOperationStatus status = capabilityPropertiesRes.right().value();
- log.debug("Failed to retrieve properties of capability {} . status is {}", capabilityUid, status);
- BeEcompErrorManager.getInstance().logBeFailedRetrieveNodeError("Fetch Capability", capabilityUid, String.valueOf(status));
-
- result = Either.right(status);
- return result;
- }
- if (capabilityPropertiesRes.isLeft()) {
- List<ComponentInstanceProperty> properties = new ArrayList<>();
- for (PropertyDefinition property : capabilityPropertiesRes.left().value()) {
- properties.add(new ComponentInstanceProperty(property, null, null));
- }
- capabilityDefinition.setProperties(properties);
- }
- result = Either.left(capabilityDefinition);
- return result;
- }
-
- public Either<CapabilityDefinition, TitanOperationStatus> getCapabilityByCapabilityData(TitanVertex capabilityDataVertex) {
-
- Either<CapabilityDefinition, TitanOperationStatus> result;
-
- CapabilityDefinition capabilityDefinition = new CapabilityDefinition();
- Map<String, Object> props = titanGenericDao.getProperties(capabilityDataVertex);
- CapabilityData capabilityData = GraphElementFactory.createElement((String) props.get(GraphPropertiesDictionary.LABEL.getProperty()), GraphElementTypeEnum.Node, props, CapabilityData.class);
- capabilityDefinition.setDescription(capabilityData.getDescription());
- capabilityDefinition.setUniqueId(capabilityData.getUniqueId());
- capabilityDefinition.setValidSourceTypes(capabilityData.getValidSourceTypes());
- capabilityDefinition.setMinOccurrences(capabilityData.getMinOccurrences());
- capabilityDefinition.setMaxOccurrences(capabilityData.getMaxOccurrences());
-
- String capabilityUid = capabilityData.getUniqueId();
- Either<CapabilityTypeData, TitanOperationStatus> capabilityTypeRes = getCapabilityTypeOfCapability(capabilityUid);
- if (capabilityTypeRes.isRight()) {
- TitanOperationStatus status = capabilityTypeRes.right().value();
- log.debug("Failed to retrieve capability type of capability {} . status is {}", capabilityUid, status);
- BeEcompErrorManager.getInstance().logBeFailedRetrieveNodeError("Fetch Capability", capabilityUid, String.valueOf(status));
-
- return Either.right(status);
- }
-
- CapabilityTypeData capabilityTypeData = capabilityTypeRes.left().value();
- capabilityDefinition.setType(capabilityTypeData.getCapabilityTypeDataDefinition().getType());
-
- Either<List<PropertyDefinition>, TitanOperationStatus> capabilityPropertiesRes = getPropertiesOfCapability(capabilityUid, capabilityDefinition.getType());
- if (capabilityPropertiesRes.isRight() && !capabilityPropertiesRes.right().value().equals(TitanOperationStatus.NOT_FOUND)) {
- TitanOperationStatus status = capabilityPropertiesRes.right().value();
- log.debug("Failed to retrieve properties of capability {} . status is {}", capabilityUid, status);
- BeEcompErrorManager.getInstance().logBeFailedRetrieveNodeError("Fetch Capability", capabilityUid, String.valueOf(status));
-
- result = Either.right(status);
- return result;
- }
- if (capabilityPropertiesRes.isLeft()) {
- List<ComponentInstanceProperty> properties = new ArrayList<>();
- for (PropertyDefinition property : capabilityPropertiesRes.left().value()) {
- properties.add(new ComponentInstanceProperty(property, null, null));
- }
- capabilityDefinition.setProperties(properties);
- }
- result = Either.left(capabilityDefinition);
- return result;
- }
-
- public Either<List<PropertyDefinition>, TitanOperationStatus> getPropertiesOfCapability(String capabilityUid, String capabilityType) {
- log.debug("Before getting properties of capability {} from graph " , capabilityUid);
-
- List<PropertyDefinition> properties;
- Either<List<PropertyDefinition>, TitanOperationStatus> result = null;
- Either<Map<String, PropertyDefinition>, TitanOperationStatus> getPropertiesOfCapabilityTypeRes = null;
- Either<List<ImmutablePair<PropertyData, GraphEdge>>, TitanOperationStatus> getPropertiesOfCapabilityRes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Capability), capabilityUid, GraphEdgeLabels.PROPERTY,
- NodeTypeEnum.Property, PropertyData.class);
- if (getPropertiesOfCapabilityRes.isRight() && !getPropertiesOfCapabilityRes.right().value().equals(TitanOperationStatus.NOT_FOUND)) {
- TitanOperationStatus status = getPropertiesOfCapabilityRes.right().value();
- log.debug("failed to get properties of capability with id {}. status={}", capabilityUid, status);
- result = Either.right(status);
- }
- if (result == null) {
- String capabilityTypeUid = UniqueIdBuilder.buildCapabilityTypeUid(capabilityType);
- getPropertiesOfCapabilityTypeRes = getAllCapabilityTypePropertiesFromAllDerivedFrom(capabilityTypeUid);
- if (getPropertiesOfCapabilityTypeRes.isRight() && !getPropertiesOfCapabilityTypeRes.right().value().equals(TitanOperationStatus.NOT_FOUND)) {
- TitanOperationStatus status = getPropertiesOfCapabilityTypeRes.right().value();
- log.error("Failed to retrieve properties for capability type {} from graph. status is {}", capabilityType, status);
- result = Either.right(status);
- }
- }
- if (result == null) {
- result = getPropertiesOfCapabilityTypeRes.isRight()
- ? (getPropertiesOfCapabilityRes.isRight() ? Either.right(TitanOperationStatus.NOT_FOUND)
- : Either.left(getPropertiesOfCapabilityRes.left().value().stream().map(p -> propertyOperation.convertPropertyDataToPropertyDefinition(p.getKey(), null, capabilityUid)).collect(Collectors.toList())))
- : (getPropertiesOfCapabilityRes.isRight() ? Either.left(getPropertiesOfCapabilityTypeRes.left().value().values().stream().collect(Collectors.toList())) : null);
- }
- if (result == null) {
- Map<String, PropertyDefinition> propertiesOfCapabilityType = getPropertiesOfCapabilityTypeRes.left().value();
- properties = getPropertiesOfCapabilityRes.left().value().stream()
- .map(p -> propertyOperation.convertPropertyDataToPropertyDefinition(p.getKey(), (String) p.getRight().getProperties().get(GraphPropertiesDictionary.NAME.getProperty()), capabilityUid)).collect(Collectors.toList());
- properties.stream().forEach(p -> propertiesOfCapabilityType.remove(p.getName()));
- properties.addAll(propertiesOfCapabilityType.values());
- result = Either.left(properties);
- }
- return result;
- }
-
- @Override
- public Either<CapabilityTypeData, TitanOperationStatus> getCapabilityTypeOfCapability(String uniqueId) {
-
- Either<ImmutablePair<CapabilityTypeData, GraphEdge>, TitanOperationStatus> capabilityTypeRes = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Capability), uniqueId, GraphEdgeLabels.TYPE_OF, NodeTypeEnum.CapabilityType,
- CapabilityTypeData.class);
-
- if (capabilityTypeRes.isRight()) {
- TitanOperationStatus status = capabilityTypeRes.right().value();//
- log.debug("Cannot find capability type associated with capability {}. status is {}", uniqueId, status);
- BeEcompErrorManager.getInstance().logBeFailedFindAssociationError("Fetch Capability type", NodeTypeEnum.CapabilityType.getName(), uniqueId, String.valueOf(status));
- return Either.right(capabilityTypeRes.right().value());
- }
-
- CapabilityTypeData capabilityTypeData = capabilityTypeRes.left().value().getKey();
-
- return Either.left(capabilityTypeData);
-
- }
-
- @Override
- public Either<CapabilityDefinition, StorageOperationStatus> getCapability(String capabilityName, String resourceId) {
- return getCapability(UniqueIdBuilder.buildCapabilityUid(resourceId, capabilityName));
- }
-
- @Override
- public Either<CapabilityDefinition, StorageOperationStatus> getCapability(String capabilityName, String resourceId, boolean inTransaction) {
- return getCapability(UniqueIdBuilder.buildCapabilityUid(resourceId, capabilityName), inTransaction);
- }
-
- @Override
- public Either<List<ImmutablePair<CapabilityData, GraphEdge>>, TitanOperationStatus> getAllCapabilitiesPairs(String resourceId) {
-
- Either<List<ImmutablePair<CapabilityData, GraphEdge>>, TitanOperationStatus> capabilitiesNodes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource), resourceId, GraphEdgeLabels.CAPABILITY,
- NodeTypeEnum.Capability, CapabilityData.class);
-
- log.debug("After looking for all capabilities under resource {}. status is {}" , resourceId , capabilitiesNodes);
- if (capabilitiesNodes.isRight()) {
- TitanOperationStatus status = capabilitiesNodes.right().value();
- return Either.right(status);
- }
-
- List<ImmutablePair<CapabilityData, GraphEdge>> capabilities = capabilitiesNodes.left().value();
- if (capabilities == null || true == capabilities.isEmpty()) {
- return Either.right(TitanOperationStatus.NOT_FOUND);
- }
-
- return Either.left(capabilitiesNodes.left().value());
- }
-
- private Either<CapabilityData, TitanOperationStatus> addCapabilityToResource(String resourceId, String capabilityName, CapabilityDefinition capabilityDefinition) {
-
- log.debug("Going to add capability {} [ {} ] to resource uid {}" , capabilityName, capabilityDefinition, resourceId);
-
- Either<CapabilityData, TitanOperationStatus> createCapRes = createCapability(resourceId, capabilityName, capabilityDefinition);
-
- log.debug("After creating capability node in graph. status is {}", createCapRes);
- if (createCapRes.isRight()) {
- TitanOperationStatus status = createCapRes.right().value();
- log.error("Failed to create capability data node in graph. status is {}", status);
- return Either.right(status);
- }
- CapabilityData capabilityData = createCapRes.left().value();
-
- String capabilityType = capabilityDefinition.getType();
-
- log.debug("Going to associate capability {} to its capabilityType {}", capabilityName, capabilityType);
-
- Either<GraphRelation, TitanOperationStatus> associateCapabilityTypeRes = associateCapabilityToCapabilityType(capabilityData, capabilityType);
- log.debug("After associating capability {} to its capabilityType {}. status is {}", capabilityName, capabilityType, associateCapabilityTypeRes);
- if (associateCapabilityTypeRes.isRight()) {
- TitanOperationStatus status = associateCapabilityTypeRes.right().value();
- log.error("Failed to associate capability {} to its capabilityType {} in graph. status is {} ", capabilityName, capabilityType, status);
-
- return Either.right(status);
- }
- List<ComponentInstanceProperty> ciProperties = capabilityDefinition.getProperties();
- if (ciProperties != null && !ciProperties.isEmpty()) {
- List<PropertyDefinition> properties = ciProperties.stream().map(prop -> new PropertyDefinition(prop)).collect(Collectors.toList());
- Either<Map<String, PropertyData>, TitanOperationStatus> addPropertiesRes = addPropertiesToCapability(capabilityData, capabilityType, properties);
- if (addPropertiesRes.isRight()) {
- TitanOperationStatus operationStatus = addPropertiesRes.right().value();
- return Either.right(operationStatus);
- }
- }
-
- Either<GraphRelation, TitanOperationStatus> associateResourceRes = associateResourceToCapability(resourceId, capabilityName, capabilityData);
- if (associateResourceRes.isRight()) {
- TitanOperationStatus status = associateResourceRes.right().value();
- log.error("Failed to associate resource {} to capability {}. status is {}", resourceId, capabilityData, status);
- return Either.right(status);
- }
-
- return Either.left(capabilityData);
-
- }
-
- private TitanOperationStatus addCapabilityToResource(TitanVertex metadataVertex, String resourceId, String capabilityName, CapabilityDefinition capabilityDefinition) {
-
- log.debug("Going to add capability {} [ {} ] to resource uid {}", capabilityName, capabilityDefinition, resourceId);
-
- Either<TitanVertex, TitanOperationStatus> createCapRes = createCapabilityVertex(resourceId, capabilityName, capabilityDefinition);
-
- log.debug("After creating capability node in graph. status is {}", createCapRes);
- if (createCapRes.isRight()) {
- TitanOperationStatus status = createCapRes.right().value();
- log.error("Failed to create capability data node in graph. status is {}", status);
- return status;
- }
- TitanVertex capabilityVertex = createCapRes.left().value();
-
- String capabilityType = capabilityDefinition.getType();
-
- log.debug("Going to associate capability {} to its capabilityType {}", capabilityName, capabilityType);
-
- TitanOperationStatus associateCapabilityTypeRes = associateCapabilityToCapabilityType(capabilityVertex, capabilityType);
- log.debug("After associating capability {} to its capabilityType {}. status is {}", capabilityName, capabilityType, associateCapabilityTypeRes);
- if (!associateCapabilityTypeRes.equals(TitanOperationStatus.OK)) {
- log.error("Failed to associate capability {} to its capabilityType {} in graph. status is {} ", capabilityName, capabilityType, associateCapabilityTypeRes);
- return associateCapabilityTypeRes;
- }
- List<ComponentInstanceProperty> ciProperties = capabilityDefinition.getProperties();
- if (ciProperties != null && !ciProperties.isEmpty()) {
- String capabiltyId = (String) titanGenericDao.getProperty(capabilityVertex, GraphPropertiesDictionary.UNIQUE_ID.getProperty());
- List<PropertyDefinition> properties = ciProperties.stream().map(prop -> new PropertyDefinition(prop)).collect(Collectors.toList());
- TitanOperationStatus addPropertiesRes = addPropertiesToCapability(capabilityVertex, capabilityType, properties, capabiltyId);
- if (!addPropertiesRes.equals(TitanOperationStatus.OK)) {
- return addPropertiesRes;
- }
- }
-
- TitanOperationStatus associateResourceRes = associateResourceToCapability(resourceId, capabilityName, capabilityVertex, metadataVertex);
- if (!associateResourceRes.equals(TitanOperationStatus.OK)) {
- log.error("Failed to associate resource{} to capability {}. status is {} ", resourceId, capabilityName, associateResourceRes);
- }
-
- return associateResourceRes;
-
- }
-
- private Either<GraphRelation, TitanOperationStatus> associateCapabilityToCapabilityType(CapabilityData capabilityData, String capabilityType) {
- UniqueIdData capabilityTypeIdData = new UniqueIdData(NodeTypeEnum.CapabilityType, UniqueIdBuilder.buildCapabilityTypeUid(capabilityType));
- log.debug("Before associating {} to capability type {}.", capabilityData, capabilityType);
- Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(capabilityData, capabilityTypeIdData, GraphEdgeLabels.TYPE_OF, null);
- log.debug("After associating {} to capability type {}. status is {}" , capabilityData, capabilityType, createRelResult);
- if (createRelResult.isRight()) {
- TitanOperationStatus operationStatus = createRelResult.right().value();
- log.error("Failed to associate capability {} to capability type {} in graph. status is {}", capabilityData, capabilityTypeIdData, operationStatus);
- return Either.right(operationStatus);
- }
- return Either.left(createRelResult.left().value());
-
- }
-
- private TitanOperationStatus associateCapabilityToCapabilityType(TitanVertex capabilityVertex, String capabilityType) {
-
- UniqueIdData capabilityTypeIdData = new UniqueIdData(NodeTypeEnum.CapabilityType, UniqueIdBuilder.buildCapabilityTypeUid(capabilityType));
-
- log.debug("Before associating {} to capability type {}.", capabilityVertex, capabilityType);
- TitanOperationStatus createRelResult = titanGenericDao.createEdge(capabilityVertex, capabilityTypeIdData, GraphEdgeLabels.TYPE_OF, null);
- log.trace("After associating {} to capability type {}. status is {}", capabilityVertex, capabilityType, createRelResult);
- if (!createRelResult.equals(TitanOperationStatus.OK)) {
- log.error("Failed to associate capability {} to capability type {} in graph. status is {}", capabilityVertex, capabilityTypeIdData, createRelResult);
- }
- return createRelResult;
- }
-
- private Either<GraphRelation, TitanOperationStatus> associateResourceToCapability(String resourceId, String capabilityName, CapabilityData capabilityData) {
-
- UniqueIdData resourceIdData = new UniqueIdData(NodeTypeEnum.Resource, resourceId);
-
- log.debug("Before associating resource {} to capability {}.", resourceId, capabilityData);
- Map<String, Object> props = new HashMap<>();
- props.put(GraphPropertiesDictionary.NAME.getProperty(), capabilityName);
- Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(resourceIdData, capabilityData, GraphEdgeLabels.CAPABILITY, props);
- log.debug("After associating resource {} to capability {}. status is {}" , resourceId, capabilityData, createRelResult);
- if (createRelResult.isRight()) {
- TitanOperationStatus operationStatus = createRelResult.right().value();
- log.error("Failed to associate resource {} to capability {} in graph. status is {}", resourceId, capabilityData, operationStatus);
- return Either.right(operationStatus);
- }
-
- return Either.left(createRelResult.left().value());
-
- }
-
- private TitanOperationStatus associateResourceToCapability(String resourceId, String capabilityName, TitanVertex capabilityVertex, TitanVertex resourceVertex) {
-
- log.debug("Before associating resource {} to capability {}.", resourceId, capabilityName);
- Map<String, Object> props = new HashMap<>();
- props.put(GraphPropertiesDictionary.NAME.getProperty(), capabilityName);
- TitanOperationStatus createRelResult = titanGenericDao.createEdge(resourceVertex, capabilityVertex, GraphEdgeLabels.CAPABILITY, props);
- log.debug("After associating resource {} to capability {}. status is {}", resourceId, capabilityName, createRelResult);
- if (!createRelResult.equals(TitanOperationStatus.OK)) {
- log.error("Failed to associate resource {} to capability {} in graph. status is {}", resourceId, capabilityName, createRelResult);
- }
-
- return createRelResult;
-
- }
-
- /**
- *
- * create capability node in the graph
- *
- * @param resourceId
- * @param capabilityName
- * @param capabilityDefinition
- * @return
- */
- private Either<CapabilityData, TitanOperationStatus> createCapability(String resourceId, String capabilityName, CapabilityDefinition capabilityDefinition) {
-
- CapabilityData capabilityData = new CapabilityData();
- String uid = UniqueIdBuilder.buildCapabilityUid(resourceId, capabilityName);
- capabilityData.setUniqueId(uid);
- Long creationTime = System.currentTimeMillis();
- capabilityData.setCreationTime(creationTime);
- capabilityData.setModificationTime(creationTime);
- capabilityData.setValidSourceTypes(capabilityDefinition.getValidSourceTypes());
- capabilityData.setMinOccurrences(capabilityDefinition.getMinOccurrences());
- capabilityData.setMaxOccurrences(capabilityDefinition.getMaxOccurrences());
- capabilityData.setDescription(capabilityDefinition.getDescription());
-
- Either<CapabilityData, TitanOperationStatus> createNode = titanGenericDao.createNode(capabilityData, CapabilityData.class);
-
- log.debug("After creating capability node in the graph. status is {}", createNode);
-
- return createNode;
- }
-
- private Either<TitanVertex, TitanOperationStatus> createCapabilityVertex(String resourceId, String capabilityName, CapabilityDefinition capabilityDefinition) {
-
- CapabilityData capabilityData = new CapabilityData();
- String uid = UniqueIdBuilder.buildCapabilityUid(resourceId, capabilityName);
- capabilityData.setUniqueId(uid);
- Long creationTime = System.currentTimeMillis();
- capabilityData.setCreationTime(creationTime);
- capabilityData.setModificationTime(creationTime);
- capabilityData.setValidSourceTypes(capabilityDefinition.getValidSourceTypes());
- capabilityData.setMinOccurrences(capabilityDefinition.getMinOccurrences());
- capabilityData.setMaxOccurrences(capabilityDefinition.getMaxOccurrences());
- capabilityData.setDescription(capabilityDefinition.getDescription());
-
- Either<TitanVertex, TitanOperationStatus> createNode = titanGenericDao.createNode(capabilityData);
-
- log.debug("After creating capability node in the graph. status is {}", createNode);
-
- return createNode;
- }
@Override
- public Either<CapabilityDefinition, StorageOperationStatus> addCapability(String resourceId, String capabilityName, CapabilityDefinition capabilityDefinition) {
-
- return addCapability(resourceId, capabilityName, capabilityDefinition, false);
-
- }
-
- public StorageOperationStatus deleteCapabilityFromGraph(String capabilityUid) {
-
- TitanOperationStatus resultStatus = null;
-
- Either<List<ImmutablePair<PropertyData, GraphEdge>>, TitanOperationStatus> deletePropertiesStatus = deletePropertiesOfCapability(capabilityUid);
-
- if (deletePropertiesStatus.isRight() && !deletePropertiesStatus.right().value().equals(TitanOperationStatus.NOT_FOUND)) {
- resultStatus = deletePropertiesStatus.right().value();
- }
- if (resultStatus == null) {
- log.debug("Before deleting capability from graph {}" , capabilityUid);
- Either<CapabilityData, TitanOperationStatus> deleteNodeStatus = titanGenericDao.deleteNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Capability), capabilityUid, CapabilityData.class);
- if (deleteNodeStatus.isRight()) {
- resultStatus = deleteNodeStatus.right().value();
- }
- }
- if (resultStatus != null) {
- log.debug("failed to delete capability with id {}. status={}", capabilityUid, resultStatus);
- BeEcompErrorManager.getInstance().logBeFailedDeleteNodeError("Delete capability", capabilityUid, String.valueOf(resultStatus));
- return DaoStatusConverter.convertTitanStatusToStorageStatus(resultStatus);
- }
- return StorageOperationStatus.OK;
- }
-
- public Either<Map<String, CapabilityDefinition>, StorageOperationStatus> deleteAllCapabilities(String resourceId, boolean inTransaction) {
-
- Either<Map<String, CapabilityDefinition>, StorageOperationStatus> result = null;
- try {
-
- Either<Map<String, CapabilityDefinition>, TitanOperationStatus> deleteAllRes = deleteAllCapabilitiesOfResource(resourceId);
- if (deleteAllRes.isRight()) {
- TitanOperationStatus status = deleteAllRes.right().value();
- if (status != TitanOperationStatus.NOT_FOUND) {
- log.debug("Failed to delete capabilities of resource {}. status is {}", resourceId, status);
- }
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
-
- Map<String, CapabilityDefinition> value = deleteAllRes.left().value();
- result = Either.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<Map<String, CapabilityDefinition>, StorageOperationStatus> deleteAllCapabilities(String resourceId) {
-
- return deleteAllCapabilities(resourceId, false);
-
- }
-
- private Either<Map<String, CapabilityDefinition>, TitanOperationStatus> deleteAllCapabilitiesOfResource(String resourceId) {
- TitanOperationStatus resultStatus = null;
- Map<String, CapabilityDefinition> capabilities = new HashMap<>();
- Set<String> caseInsensitiveCapabilityNames = new HashSet<>();
- TitanOperationStatus capabilitisRes = getCapabilitisOfResourceOnly(resourceId, capabilities, caseInsensitiveCapabilityNames);
- if (capabilitisRes != TitanOperationStatus.OK) {
- return Either.right(capabilitisRes);
- }
-
- if (capabilities.isEmpty()) {
- return Either.right(TitanOperationStatus.NOT_FOUND);
- }
-
- for (Entry<String, CapabilityDefinition> entry : capabilities.entrySet()) {
- CapabilityDefinition capabilityDefinition = entry.getValue();
- String capabilityUid = capabilityDefinition.getUniqueId();
-
- log.debug("Before deleting properties of capability {} from graph " , capabilityUid);
-
- Either<List<ImmutablePair<PropertyData, GraphEdge>>, TitanOperationStatus> deletePropertiesStatus = deletePropertiesOfCapability(capabilityUid);
- if (deletePropertiesStatus.isRight() && !deletePropertiesStatus.right().value().equals(TitanOperationStatus.NOT_FOUND)) {
- resultStatus = deletePropertiesStatus.right().value();
- }
- if (resultStatus == null) {
- Either<CapabilityData, TitanOperationStatus> deleteNodeRes = titanGenericDao.deleteNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Capability), capabilityUid, CapabilityData.class);
- if (deleteNodeRes.isRight()) {
- resultStatus = deleteNodeRes.right().value();
- }
- }
- if (resultStatus != null) {
- log.debug("Failed to delete capability {} of resource {}", capabilityUid, resourceId);
- BeEcompErrorManager.getInstance().logBeFailedDeleteNodeError("Delete capability", capabilityUid, String.valueOf(resultStatus));
- return Either.right(resultStatus);
- }
- }
-
- return Either.left(capabilities);
-
- }
-
- public Map<String, List<CapabilityDefinition>> convertCapabilityMap(Map<String, CapabilityDefinition> capabilityMap, String ownerId, String ownerName) {
-
- Map<String, List<CapabilityDefinition>> typeToRequirementMap = new HashMap<>();
- capabilityMap.forEach((capabilityName, capability) -> {
- capability.setName(capabilityName);
- if (typeToRequirementMap.containsKey(capability.getType())) {
- typeToRequirementMap.get(capability.getType()).add(capability);
- } else {
- List<CapabilityDefinition> list = new ArrayList<>();
- list.add(capability);
- typeToRequirementMap.put(capability.getType(), list);
- }
- });
- return typeToRequirementMap;
- }
-
- public TitanOperationStatus getCapabilitySourcesList(String resourceId, List<String> derivedFromList) {
- Map<String, Object> propertiesToMatch = new HashMap<>();
- propertiesToMatch.put(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource), resourceId);
- Either<List<ResourceMetadataData>, TitanOperationStatus> getResponse = titanGenericDao.getByCriteria(NodeTypeEnum.Resource, propertiesToMatch, ResourceMetadataData.class);
- if (getResponse.isRight()) {
- return getResponse.right().value();
- } else {
- String toscaResourceName = ((ResourceMetadataDataDefinition) getResponse.left().value().get(0).getMetadataDataDefinition()).getToscaResourceName();
- derivedFromList.add(toscaResourceName);
- }
-
- Either<List<ImmutablePair<ResourceMetadataData, GraphEdge>>, TitanOperationStatus> childrenNodes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource), resourceId, GraphEdgeLabels.DERIVED_FROM,
- NodeTypeEnum.Resource, ResourceMetadataData.class);
-
- while (childrenNodes.isLeft()) {
-
- List<ImmutablePair<ResourceMetadataData, GraphEdge>> pairList = childrenNodes.left().value();
- ResourceMetadataData left = pairList.get(0).left;
- derivedFromList.add(((ResourceMetadataDataDefinition) left.getMetadataDataDefinition()).getToscaResourceName());
- String id = left.getMetadataDataDefinition().getUniqueId();
- childrenNodes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource), id, GraphEdgeLabels.DERIVED_FROM, NodeTypeEnum.Resource, ResourceMetadataData.class);
- }
- return TitanOperationStatus.OK;
- }
-
- private Either<Map<String, PropertyData>, TitanOperationStatus> addPropertiesToCapability(CapabilityData capabilityData, String capabilityType, List<PropertyDefinition> properties) {
- String capabilityTypeUid = UniqueIdBuilder.buildCapabilityTypeUid(capabilityType);
- Either<Map<String, PropertyDefinition>, TitanOperationStatus> allPropertiesOfCapabilityTypeRes = getAllCapabilityTypePropertiesFromAllDerivedFrom(capabilityTypeUid);
- if (allPropertiesOfCapabilityTypeRes.isRight() && !allPropertiesOfCapabilityTypeRes.right().value().equals(TitanOperationStatus.NOT_FOUND)) {
- TitanOperationStatus operationStatus = allPropertiesOfCapabilityTypeRes.right().value();
- log.error("Failed to retrieve properties for capability type {} from graph. status is {}", capabilityType, operationStatus);
- return Either.right(operationStatus);
- }
-
- Map<String, PropertyDefinition> propertiesOfCapabilityType = null;
-
- if (allPropertiesOfCapabilityTypeRes.isLeft() && allPropertiesOfCapabilityTypeRes.left() != null && !allPropertiesOfCapabilityTypeRes.left().value().isEmpty()) {
-
- propertiesOfCapabilityType = allPropertiesOfCapabilityTypeRes.left().value();
- Either<List<PropertyDefinition>, TitanOperationStatus> validateAndReducePropertiesRes = validatePropertyUniqueness(propertiesOfCapabilityType, properties);
- if (validateAndReducePropertiesRes.isRight()) {
- TitanOperationStatus operationStatus = validateAndReducePropertiesRes.right().value();
- log.error("Failed to add properties to capability {} in graph. status is {}", capabilityData.getUniqueId(), operationStatus);
- return Either.right(operationStatus);
- }
- }
-
- Either<Map<String, PropertyData>, TitanOperationStatus> addPropertiesToCapabilityRes = propertyOperation.addPropertiesToElementType(capabilityData.getUniqueId(), NodeTypeEnum.Capability, properties);
- if (addPropertiesToCapabilityRes.isRight()) {
- TitanOperationStatus operationStatus = addPropertiesToCapabilityRes.right().value();
- log.error("Failed to add properties to capability {} in graph. status is {}", capabilityData.getUniqueId(), operationStatus);
- return Either.right(operationStatus);
- }
- return Either.left(addPropertiesToCapabilityRes.left().value());
- }
-
- private TitanOperationStatus addPropertiesToCapability(TitanVertex capabilityVertex, String capabilityType, List<PropertyDefinition> properties, String uniqueId) {
- String capabilityTypeUid = UniqueIdBuilder.buildCapabilityTypeUid(capabilityType);
- Either<Map<String, PropertyDefinition>, TitanOperationStatus> allPropertiesOfCapabilityTypeRes = getAllCapabilityTypePropertiesFromAllDerivedFrom(capabilityTypeUid);
- if (allPropertiesOfCapabilityTypeRes.isRight() && !allPropertiesOfCapabilityTypeRes.right().value().equals(TitanOperationStatus.NOT_FOUND)) {
- TitanOperationStatus operationStatus = allPropertiesOfCapabilityTypeRes.right().value();
- log.error("Failed to retrieve properties for capability type {} from graph. status is {}", capabilityType, operationStatus);
- return operationStatus;
- }
- Map<String, PropertyDefinition> propertiesOfCapabilityType = null;
-
- if (allPropertiesOfCapabilityTypeRes.isLeft() && allPropertiesOfCapabilityTypeRes.left() != null && !allPropertiesOfCapabilityTypeRes.left().value().isEmpty()) {
-
- propertiesOfCapabilityType = allPropertiesOfCapabilityTypeRes.left().value();
- Either<List<PropertyDefinition>, TitanOperationStatus> validateAndReducePropertiesRes = validatePropertyUniqueness(propertiesOfCapabilityType, properties);
- if (validateAndReducePropertiesRes.isRight()) {
- TitanOperationStatus operationStatus = validateAndReducePropertiesRes.right().value();
- log.error("Failed to add properties to capability {} in graph. status is {}", capabilityVertex, operationStatus);
- return operationStatus;
- }
- }
-
- String capabiltyId = (String) titanGenericDao.getProperty(capabilityVertex, GraphPropertiesDictionary.UNIQUE_ID.getProperty());
- TitanOperationStatus addPropertiesToCapabilityRes = propertyOperation.addPropertiesToElementType(capabilityVertex, capabiltyId, NodeTypeEnum.Capability, properties);
- if (!addPropertiesToCapabilityRes.equals(TitanOperationStatus.OK)) {
- log.error("Failed to add properties to capability {} in graph. status is {}", capabiltyId, addPropertiesToCapabilityRes);
- }
- return addPropertiesToCapabilityRes;
- }
-
public Either<List<PropertyDefinition>, TitanOperationStatus> validatePropertyUniqueness(Map<String, PropertyDefinition> propertiesOfCapabilityType, List<PropertyDefinition> properties) {
Either<List<PropertyDefinition>, TitanOperationStatus> result = Either.left(properties);
@@ -1043,119 +117,7 @@ public class CapabilityOperation extends AbstractOperation implements ICapabilit
return result;
}
- public StorageOperationStatus validateUpdateCapabilityProperty(PropertyDefinition property) {
- Either<Map<String, DataTypeDefinition>, TitanOperationStatus> allDataTypes = applicationDataTypeCache.getAll();
- if (allDataTypes.isRight()) {
- TitanOperationStatus status = allDataTypes.right().value();
- BeEcompErrorManager.getInstance().logInternalFlowError("UpdatePropertyValueOnComponentInstance", "Failed to update property value on instance. Status is " + status, ErrorSeverity.ERROR);
- return DaoStatusConverter.convertTitanStatusToStorageStatus(allDataTypes.right().value());
- }
- return propertyOperation.validateAndUpdateProperty(property, allDataTypes.left().value());
- }
-
- public StorageOperationStatus validateCapabilityProperties(List<PropertyDefinition> properties) {
- StorageOperationStatus result = StorageOperationStatus.OK;
- for (PropertyDefinition property : properties) {
- result = validateUpdateCapabilityProperty(property);
- if (!result.equals(StorageOperationStatus.OK))
- break;
- }
- return result;
- }
-
- public Either<List<ImmutablePair<PropertyData, GraphEdge>>, TitanOperationStatus> deletePropertiesOfCapability(String capabilityUid) {
- log.debug("Before deleting properties of capability {} from graph " , capabilityUid);
-
- Either<List<ImmutablePair<PropertyData, GraphEdge>>, TitanOperationStatus> deletePropertiesStatus = titanGenericDao.deleteChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Capability), capabilityUid, GraphEdgeLabels.PROPERTY,
- NodeTypeEnum.Property, PropertyData.class);
- if (deletePropertiesStatus.isRight()) {
- TitanOperationStatus status = deletePropertiesStatus.right().value();
- if (status != TitanOperationStatus.NOT_FOUND) {
- log.debug("failed to delete properties of capability with id {}. status={}", capabilityUid, status);
- } else {
- log.debug("The Capability with id {} have no Properties. status={}", capabilityUid, status);
- }
- return Either.right(status);
- }
- return Either.left(deletePropertiesStatus.left().value());
- }
-
- @Override
- public Either<Map<String, PropertyData>, StorageOperationStatus> updatePropertiesOfCapability(String uniqueId, String capabilityType, List<PropertyDefinition> newProperties) {
- return updatePropertiesOfCapability(uniqueId, capabilityType, newProperties, false);
- }
-
@Override
- public Either<Map<String, PropertyData>, StorageOperationStatus> updatePropertiesOfCapability(String uniqueId, String capabilityType, List<PropertyDefinition> newProperties, boolean inTransaction) {
-
- Either<Map<String, PropertyData>, StorageOperationStatus> result = null;
- try {
- Either<CapabilityData, TitanOperationStatus> capabiltyRes = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Capability), uniqueId, CapabilityData.class);
- if (capabiltyRes.isRight()) {
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(capabiltyRes.right().value()));
- }
- CapabilityData capabilityData = capabiltyRes.left().value();
- if (result == null) {
- StorageOperationStatus propertiesValidationRes = validateCapabilityProperties(newProperties);
- if (!propertiesValidationRes.equals(StorageOperationStatus.OK)) {
- result = Either.right(propertiesValidationRes);
- }
- }
- if (result == null) {
- Either<List<ImmutablePair<PropertyData, GraphEdge>>, TitanOperationStatus> deletePropertiesRes = deletePropertiesOfCapability(uniqueId);
- if (deletePropertiesRes.isRight() && !deletePropertiesRes.right().value().equals(TitanOperationStatus.NOT_FOUND)) {
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(deletePropertiesRes.right().value()));
- }
- }
- if (result == null) {
- Either<Map<String, PropertyData>, TitanOperationStatus> addPropertiesRes = addPropertiesToCapability(capabilityData, capabilityType, newProperties);
- if (addPropertiesRes.isRight()) {
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(addPropertiesRes.right().value()));
- } else {
- result = Either.left(addPropertiesRes.left().value());
- }
- }
- if (result.isRight()) {
- log.debug("Failed to update properties of capability {}. status is {}", uniqueId, result);
- }
- return result;
- } finally {
- if (!inTransaction) {
- if (result == null || result.isRight()) {
- log.debug("Going to execute rollback on graph.");
- titanGenericDao.rollback();
- } else {
- log.debug("Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
- }
-
- public Either<CapabilityData, TitanOperationStatus> getCapabilityRelatedToResourceInstance(String resourceInstanceId, String capabilityUid) {
- TitanOperationStatus error = null;
- CapabilityData capability = null;
- Either<List<ImmutablePair<CapabilityData, GraphEdge>>, TitanOperationStatus> getCapabilitiesRes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), resourceInstanceId,
- GraphEdgeLabels.CALCULATED_CAPABILITY, NodeTypeEnum.Capability, CapabilityData.class);
- if (getCapabilitiesRes.isRight()) {
- error = getCapabilitiesRes.right().value();
- log.debug("Failed to retrieve capabilities for resource instance {}. status is {}", resourceInstanceId, error);
- } else {
- List<ImmutablePair<CapabilityData, GraphEdge>> capabilityPairsList = getCapabilitiesRes.left().value();
- List<CapabilityData> capabilityPair = capabilityPairsList.stream().filter(pair -> pair.getLeft().getUniqueId().equals(capabilityUid)).map(pair -> pair.getLeft()).collect(Collectors.toList());
- if (capabilityPair.isEmpty()) {
- error = TitanOperationStatus.NOT_FOUND;
- log.debug("Failed to retrieve capability {} for resource instance {}. status is {}", capabilityUid, resourceInstanceId, error);
- } else {
- capability = capabilityPair.get(0);
- }
- }
- if (error == null) {
- return Either.left(capability);
- }
- return Either.right(error);
- }
-
public Either<Map<String, PropertyDefinition>, TitanOperationStatus> getAllCapabilityTypePropertiesFromAllDerivedFrom(String firstParentType) {
Map<String, PropertyDefinition> allProperies = new HashMap<>();
return getCapabilityTypePropertiesFromDerivedFromRecursively(firstParentType, allProperies);
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/CapabilityTypeOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/CapabilityTypeOperation.java
index ddd6017620..203135b31e 100644
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/CapabilityTypeOperation.java
+++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/CapabilityTypeOperation.java
@@ -37,6 +37,7 @@ import org.openecomp.sdc.be.dao.titan.TitanOperationStatus;
import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
import org.openecomp.sdc.be.model.CapabilityTypeDefinition;
import org.openecomp.sdc.be.model.PropertyDefinition;
+import org.openecomp.sdc.be.model.operations.api.ICapabilityOperation;
import org.openecomp.sdc.be.model.operations.api.ICapabilityTypeOperation;
import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
import org.openecomp.sdc.be.resources.data.CapabilityTypeData;
@@ -54,7 +55,7 @@ public class CapabilityTypeOperation extends AbstractOperation implements ICapab
@Autowired
private PropertyOperation propertyOperation;
@Autowired
- private CapabilityOperation capabilityOperation;
+ private ICapabilityOperation capabilityOperation;
public CapabilityTypeOperation() {
super();
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ComponentInstanceOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ComponentInstanceOperation.java
index cb9adeda3f..1ef64aed98 100644
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ComponentInstanceOperation.java
+++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ComponentInstanceOperation.java
@@ -20,30 +20,15 @@
package org.openecomp.sdc.be.model.operations.impl;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Optional;
-import java.util.Set;
-import java.util.UUID;
-import java.util.function.Function;
-import java.util.function.Supplier;
-import java.util.stream.Collectors;
-
+import com.thinkaurelius.titan.core.TitanGraph;
+import com.thinkaurelius.titan.core.TitanVertex;
+import fj.data.Either;
import org.apache.commons.lang3.tuple.ImmutablePair;
-import org.apache.tinkerpop.gremlin.structure.Direction;
-import org.apache.tinkerpop.gremlin.structure.Edge;
import org.apache.tinkerpop.gremlin.structure.Vertex;
import org.apache.tinkerpop.gremlin.structure.VertexProperty;
import org.openecomp.sdc.be.config.BeEcompErrorManager;
import org.openecomp.sdc.be.config.BeEcompErrorManager.ErrorSeverity;
-import org.openecomp.sdc.be.dao.graph.GraphElementFactory;
import org.openecomp.sdc.be.dao.graph.datatype.GraphEdge;
-import org.openecomp.sdc.be.dao.graph.datatype.GraphElementTypeEnum;
import org.openecomp.sdc.be.dao.graph.datatype.GraphNode;
import org.openecomp.sdc.be.dao.graph.datatype.GraphRelation;
import org.openecomp.sdc.be.dao.neo4j.GraphEdgeLabels;
@@ -51,74 +36,33 @@ import org.openecomp.sdc.be.dao.neo4j.GraphEdgePropertiesDictionary;
import org.openecomp.sdc.be.dao.neo4j.GraphPropertiesDictionary;
import org.openecomp.sdc.be.dao.titan.TitanGenericDao;
import org.openecomp.sdc.be.dao.titan.TitanOperationStatus;
-import org.openecomp.sdc.be.datatypes.elements.CapabilityDataDefinition;
-import org.openecomp.sdc.be.datatypes.elements.ComponentInstanceDataDefinition;
-import org.openecomp.sdc.be.datatypes.elements.GetInputValueDataDefinition;
import org.openecomp.sdc.be.datatypes.elements.PropertyDataDefinition;
-import org.openecomp.sdc.be.datatypes.elements.PropertyRule;
-import org.openecomp.sdc.be.datatypes.elements.RequirementDataDefinition;
import org.openecomp.sdc.be.datatypes.elements.SchemaDefinition;
-import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
-import org.openecomp.sdc.be.datatypes.enums.OriginTypeEnum;
-import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
-import org.openecomp.sdc.be.model.ArtifactDefinition;
-import org.openecomp.sdc.be.model.CapabilityDefinition;
-import org.openecomp.sdc.be.model.Component;
import org.openecomp.sdc.be.model.ComponentInstance;
import org.openecomp.sdc.be.model.ComponentInstanceInput;
import org.openecomp.sdc.be.model.ComponentInstanceProperty;
import org.openecomp.sdc.be.model.DataTypeDefinition;
-import org.openecomp.sdc.be.model.GroupDefinition;
-import org.openecomp.sdc.be.model.GroupInstance;
-import org.openecomp.sdc.be.model.HeatParameterDefinition;
import org.openecomp.sdc.be.model.IComponentInstanceConnectedElement;
-import org.openecomp.sdc.be.model.InputDefinition;
-import org.openecomp.sdc.be.model.LifecycleStateEnum;
-import org.openecomp.sdc.be.model.PropertyDefinition;
-import org.openecomp.sdc.be.model.RelationshipImpl;
-import org.openecomp.sdc.be.model.RequirementAndRelationshipPair;
-import org.openecomp.sdc.be.model.RequirementCapabilityRelDef;
-import org.openecomp.sdc.be.model.RequirementDefinition;
-import org.openecomp.sdc.be.model.Resource;
-import org.openecomp.sdc.be.model.User;
import org.openecomp.sdc.be.model.cache.ApplicationDataTypeCache;
-import org.openecomp.sdc.be.model.operations.api.IAttributeOperation;
import org.openecomp.sdc.be.model.operations.api.IComponentInstanceOperation;
+import org.openecomp.sdc.be.model.operations.api.IInputsOperation;
import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
import org.openecomp.sdc.be.model.tosca.ToscaPropertyType;
-import org.openecomp.sdc.be.resources.data.ArtifactData;
import org.openecomp.sdc.be.resources.data.AttributeData;
import org.openecomp.sdc.be.resources.data.AttributeValueData;
-import org.openecomp.sdc.be.resources.data.CapabilityData;
-import org.openecomp.sdc.be.resources.data.CapabilityInstData;
import org.openecomp.sdc.be.resources.data.ComponentInstanceData;
-import org.openecomp.sdc.be.resources.data.ComponentMetadataData;
import org.openecomp.sdc.be.resources.data.InputValueData;
import org.openecomp.sdc.be.resources.data.InputsData;
-import org.openecomp.sdc.be.resources.data.PropertyData;
-import org.openecomp.sdc.be.resources.data.PropertyValueData;
-import org.openecomp.sdc.be.resources.data.RelationshipInstData;
-import org.openecomp.sdc.be.resources.data.RelationshipTypeData;
-import org.openecomp.sdc.be.resources.data.RequirementData;
-import org.openecomp.sdc.be.resources.data.ResourceMetadataData;
-import org.openecomp.sdc.be.resources.data.UniqueIdData;
-import org.openecomp.sdc.be.resources.data.UserData;
-import org.openecomp.sdc.common.api.ArtifactGroupTypeEnum;
-import org.openecomp.sdc.common.api.ArtifactTypeEnum;
-import org.openecomp.sdc.common.config.EcompErrorName;
import org.openecomp.sdc.common.datastructure.Wrapper;
-import org.openecomp.sdc.common.util.ValidationUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
-import com.thinkaurelius.titan.core.TitanEdge;
-import com.thinkaurelius.titan.core.TitanGraph;
-import com.thinkaurelius.titan.core.TitanVertex;
-import com.thinkaurelius.titan.core.TitanVertexQuery;
-
-import fj.data.Either;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.UUID;
+import java.util.function.Supplier;
@org.springframework.stereotype.Component("component-instance-operation")
public class ComponentInstanceOperation extends AbstractOperation implements IComponentInstanceOperation {
@@ -130,44 +74,17 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo
private static Logger log = LoggerFactory.getLogger(ComponentInstanceOperation.class.getName());
@Autowired
- private ResourceOperation resourceOperation;
-
- @Autowired
- private ServiceOperation serviceOperation;
-
- @Autowired
- CapabilityOperation capabilityOperation;
-
- @Autowired
- private CapabilityInstanceOperation capabilityInstanceOperation;
-
- @Autowired
- private RequirementOperation requirementOperation;
-
- @Autowired
- private ArtifactOperation artifactOperation;
-
- @Autowired
TitanGenericDao titanGenericDao;
@Autowired
PropertyOperation propertyOperation;
@Autowired
- InputsOperation inputOperation;
-
- @Autowired
- private IAttributeOperation attributeOperation;
+ private IInputsOperation inputOperation;
@Autowired
private ApplicationDataTypeCache dataTypeCache;
- @Autowired
- protected GroupOperation groupOperation;
-
- @Autowired
- protected GroupInstanceOperation groupInstanceOperation;
-
/**
* FOR TEST ONLY
*
@@ -178,3344 +95,6 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo
}
@Override
- public Either<ComponentInstance, StorageOperationStatus> createComponentInstance(String parentComponentId, NodeTypeEnum nodeType, String instanceNumber, ComponentInstance componentInstance, NodeTypeEnum compInstNodeType, boolean inTransaction) {
-
- return createComponentInstance(parentComponentId, nodeType, instanceNumber, true, componentInstance, compInstNodeType, false, inTransaction);
-
- }
-
- private Either<ComponentInstance, StorageOperationStatus> createComponentInstance(String containerComponentId, NodeTypeEnum containerNodeType, String instanceNumber, boolean isCreateLocgicalName, ComponentInstance componentInstance,
- NodeTypeEnum compInstNodeType, boolean allowDeleted, boolean inTransaction) {
- Either<ComponentInstance, StorageOperationStatus> result = null;
-
- if (!ValidationUtils.validateStringNotEmpty(componentInstance.getCustomizationUUID())) {
- generateCustomizationUUID(componentInstance);
- }
- try {
-
- Either<ComponentInstance, TitanOperationStatus> addRes = addComponentInstanceToContainerComponent(containerComponentId, containerNodeType, instanceNumber, isCreateLocgicalName, componentInstance, compInstNodeType, allowDeleted);
- if (addRes.isRight()) {
- TitanOperationStatus status = addRes.right().value();
- log.error("Failed to add resource instance {} to service {}. status is {}", componentInstance, containerComponentId, status);
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
-
- ComponentInstance value = addRes.left().value();
- result = Either.left(value);
-
- return result;
-
- } finally {
- if (false == inTransaction) {
- commitOrRollback(result);
- }
- }
- }
-
- private Either<TitanVertex, StorageOperationStatus> createComponentInstance(String containerComponentId, NodeTypeEnum containerNodeType, String instanceNumber, boolean isCreateLocgicalName, ComponentInstance componentInstance,
- NodeTypeEnum compInstNodeType, boolean allowDeleted, boolean inTransaction, TitanVertex metadataVertex) {
- Either<TitanVertex, StorageOperationStatus> result = null;
-
- try {
-
- Either<TitanVertex, TitanOperationStatus> addRes = addComponentInstanceToContainerComponent(containerComponentId, containerNodeType, instanceNumber, isCreateLocgicalName, componentInstance, compInstNodeType, allowDeleted, metadataVertex);
- if (addRes.isRight()) {
- TitanOperationStatus status = addRes.right().value();
- log.error("Failed to add resource instance {} to service {}. status is {}", componentInstance, containerComponentId, status);
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
-
- TitanVertex value = addRes.left().value();
- result = Either.left(value);
-
- return result;
-
- } finally {
- if (false == inTransaction) {
- commitOrRollback(result);
- }
- }
- }
-
- @Override
- public Either<ComponentInstance, StorageOperationStatus> createComponentInstance(String containerComponentId, NodeTypeEnum containerNodeType, String instanceNumber, ComponentInstance componentInstance, NodeTypeEnum instNodeType) {
-
- return createComponentInstance(containerComponentId, containerNodeType, instanceNumber, componentInstance, instNodeType, false);
-
- }
-
- @Override
- public Either<ComponentInstance, StorageOperationStatus> deleteComponentInstance(NodeTypeEnum containerNodeType, String containerComponentId, String resourceInstUid, boolean inTransaction) {
-
- Either<ComponentInstance, StorageOperationStatus> result = null;
-
- try {
-
- Either<ComponentInstance, TitanOperationStatus> deleteRes = removeComponentInstanceFromComponent(containerNodeType, containerComponentId, resourceInstUid);
-
- if (deleteRes.isRight()) {
- TitanOperationStatus status = deleteRes.right().value();
- log.error("Failed to remove resource instance {} from component {}. status is {}", resourceInstUid, containerComponentId, status);
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
-
- ComponentInstance value = deleteRes.left().value();
- result = Either.left(value);
-
- return result;
-
- } finally {
- if (false == inTransaction) {
- commitOrRollback(result);
- }
- }
-
- }
-
- @Override
- public Either<ComponentInstance, StorageOperationStatus> deleteComponentInstance(NodeTypeEnum containerNodeType, String containerComponentId, String resourceInstUid) {
-
- return deleteComponentInstance(containerNodeType, containerComponentId, resourceInstUid, false);
- }
-
- private <T> void commitOrRollback(Either<T, StorageOperationStatus> result) {
- if (result == null || result.isRight()) {
- log.error("Going to execute rollback on graph.");
- titanGenericDao.rollback();
- } else {
- log.debug("Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
-
- @Override
- public Either<Boolean, StorageOperationStatus> validateParent(String parentId, String uniqId, boolean inTransaction) {
-
- Either<Boolean, StorageOperationStatus> result = null;
- Either<Boolean, TitanOperationStatus> updateRes = validateParentonGraph(parentId, uniqId, inTransaction);
-
- if (updateRes.isRight()) {
- TitanOperationStatus status = updateRes.right().value();
- log.error("Failed to find resource instance name {}. status is {}", uniqId, status);
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
-
- Boolean value = updateRes.left().value();
-
- result = Either.left(value);
-
- return result;
-
- }
-
- public Either<Boolean, TitanOperationStatus> validateParentonGraph(String parentId, String uniqId, boolean inTransaction) {
-
- Either<TitanGraph, TitanOperationStatus> graphRes = titanGenericDao.getGraph();
- if (graphRes.isRight()) {
- log.debug("Failed to retrieve graph. status is {}", graphRes);
- return Either.right(graphRes.right().value());
- }
- TitanGraph titanGraph = graphRes.left().value();
- try {
- Iterable<TitanVertex> vertices = titanGraph.query().has(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), uniqId).vertices();
- if (vertices == null || false == vertices.iterator().hasNext()) {
- return Either.right(TitanOperationStatus.INVALID_ID);
- }
-
- TitanVertex vertex = vertices.iterator().next();
-
- TitanVertexQuery query = vertex.query();
- query = query.labels(GraphEdgeLabels.RESOURCE_INST.getProperty()).direction(Direction.IN);
- Iterable<Vertex> verts = query.vertices();
- if (verts == null) {
- log.debug("No edges in graph for criteria");
- return Either.right(TitanOperationStatus.INVALID_ID);
- }
- Iterator<Vertex> vIter = verts.iterator();
- if (vIter.hasNext()) {
- Vertex vert = vIter.next();
- // vert.getProperty(GraphPropertiesDictionary.UNIQUE_ID.getProperty());
- String resInstName = vert.value(GraphPropertiesDictionary.UNIQUE_ID.getProperty());
- if (resInstName.equals(parentId))
- return Either.left(Boolean.TRUE);
- }
- return Either.left(Boolean.FALSE);
- } finally {
- if (false == inTransaction) {
- titanGraph.tx().commit();
- }
- }
- }
-
- public Either<ComponentInstance, TitanOperationStatus> addComponentInstanceToContainerComponent(String containerComponentId, NodeTypeEnum containerNodeType, String instanceNumber, boolean isCreateLogicaName, ComponentInstance componentInstance,
- NodeTypeEnum compInstNodeType, boolean allowDeleted) {
- log.debug("Going to create component instance {} in component {}", componentInstance, containerComponentId);
-
- Either<TitanVertex, TitanOperationStatus> metadataVertex = titanGenericDao.getVertexByProperty(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), containerComponentId);
- if (metadataVertex.isRight()) {
- TitanOperationStatus status = metadataVertex.right().value();
- if (status == TitanOperationStatus.NOT_FOUND) {
- status = TitanOperationStatus.INVALID_ID;
- }
- return Either.right(status);
- }
- Either<TitanVertex, TitanOperationStatus> addComponentInstanceToContainerComponent = addComponentInstanceToContainerComponent(containerComponentId, containerNodeType, instanceNumber, isCreateLogicaName, componentInstance, compInstNodeType,
- allowDeleted, metadataVertex.left().value());
-
- if (addComponentInstanceToContainerComponent.isRight()) {
- TitanOperationStatus status = addComponentInstanceToContainerComponent.right().value();
- if (status == TitanOperationStatus.NOT_FOUND) {
- status = TitanOperationStatus.INVALID_ID;
- }
- return Either.right(status);
- }
- TitanVertex ciVertex = addComponentInstanceToContainerComponent.left().value();
- Map<String, Object> properties = titanGenericDao.getProperties(ciVertex);
- ComponentInstanceData createdComponentInstance = GraphElementFactory.createElement(NodeTypeEnum.ResourceInstance.getName(), GraphElementTypeEnum.Node, properties, ComponentInstanceData.class);
-
- Either<ComponentInstance, TitanOperationStatus> createdResourceInstanceRes = createGroupInstancesOnComponentInstance(componentInstance, ciVertex, createdComponentInstance);
- return createdResourceInstanceRes;
- }
-
-
- public Either<ComponentInstance, TitanOperationStatus> createGroupInstancesOnComponentInstance(ComponentInstance componentInstance, TitanVertex ciVertex, ComponentInstanceData createdComponentInstance) {
- ComponentInstance createdResourceInstance = new ComponentInstance(createdComponentInstance.getComponentInstDataDefinition());
- createdResourceInstance.setGroupInstances(componentInstance.getGroupInstances());
- List<GroupInstance> groupInstancesList = new ArrayList<GroupInstance>();
- List<GroupDefinition> group = null;
- Either<List<GroupDefinition>, TitanOperationStatus> groupEither = groupOperation.getAllGroupsFromGraph(createdResourceInstance.getComponentUid(), NodeTypeEnum.Resource);
- if (groupEither.isRight() && groupEither.right().value() != TitanOperationStatus.OK && groupEither.right().value() != TitanOperationStatus.NOT_FOUND) {
- TitanOperationStatus status = groupEither.right().value();
- log.debug("Failed to associate group instances to component instance {}. Status is {}", componentInstance.getUniqueId(), status);
- return Either.right(status);
- } else {
- if (groupEither.isLeft()) {
- group = groupEither.left().value();
- if (group != null && !group.isEmpty()) {
- List<GroupDefinition> vfGroupsList = group.stream().filter(p -> p.getType().equals("org.openecomp.groups.VfModule")).collect(Collectors.toList());
- for (GroupDefinition groupDefinition : vfGroupsList) {
- Either<GroupInstance, StorageOperationStatus> status = createGroupInstance(ciVertex, groupDefinition, createdResourceInstance);
- if (status.isRight()) {
- log.debug("Failed to associate group instances to component instance {}. Status is {}", componentInstance.getUniqueId(), status);
-
- } else {
- GroupInstance groupInstance = status.left().value();
- groupInstancesList.add(groupInstance);
- }
-
- }
- createdResourceInstance.setGroupInstances(groupInstancesList);
- }
- }
-
- }
- return Either.left(createdResourceInstance);
- }
-
- public void generateCustomizationUUID(ComponentInstance componentInstance) {
- UUID uuid = UUID.randomUUID();
- componentInstance.setCustomizationUUID(uuid.toString());
- }
-
- /**
- *
- * @param containerComponentId
- * @param containerNodeType
- * @param instanceNumber
- * @param isCreateLogicaName
- * @param componentInstance
- * @param compInstNodeType
- * @param allowDeleted
- * @param metadataVertex
- * @return
- */
- public Either<TitanVertex, TitanOperationStatus> addComponentInstanceToContainerComponent(String containerComponentId, NodeTypeEnum containerNodeType, String instanceNumber, boolean isCreateLogicaName, ComponentInstance componentInstance,
- NodeTypeEnum compInstNodeType, boolean allowDeleted, TitanVertex metadataVertex) {
- TitanOperationStatus status;
- log.debug("Going to create component instance {} in component {}", componentInstance, containerComponentId);
- String instOriginComponentId = componentInstance.getComponentUid();
- String logicalName = componentInstance.getName();
- if (isCreateLogicaName)
- logicalName = createComponentInstLogicalName(instanceNumber, componentInstance.getName());
-
- ComponentInstanceData componentInstanceData = buildComponentInstanceData(componentInstance, containerComponentId, logicalName);
- Either<TitanVertex, TitanOperationStatus> originVertexEither = titanGenericDao.getVertexByProperty(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), instOriginComponentId);
- if (originVertexEither.isRight()) {
- log.debug("Failed to fetch vertex of origin resource for id {} error {}", instOriginComponentId, originVertexEither.right().value());
- return Either.right(originVertexEither.right().value());
- }
- TitanVertex originVertex = originVertexEither.left().value();
-
- Boolean isDeleted = (Boolean) titanGenericDao.getProperty(metadataVertex, GraphPropertiesDictionary.IS_DELETED.getProperty());
-
- if (!allowDeleted && (isDeleted != null) && (isDeleted == true)) {
- log.debug("Component {} is already deleted. Cannot add component instance", instOriginComponentId);
- return Either.right(TitanOperationStatus.INVALID_ID);
- }
- String originType = (String) titanGenericDao.getProperty(originVertex, GraphPropertiesDictionary.LABEL.getProperty());
- String resourceType = (String) titanGenericDao.getProperty(originVertex, GraphPropertiesDictionary.RESOURCE_TYPE.getProperty());
-
- log.trace("Before adding component instance to graph. componentInstanceData = {}", componentInstanceData);
-
- Either<TitanVertex, TitanOperationStatus> createCIResult = titanGenericDao.createNode(componentInstanceData);
-
- log.debug("After adding component instance to graph. status is = {}", createCIResult);
-
- if (createCIResult.isRight()) {
- status = createCIResult.right().value();
- BeEcompErrorManager.getInstance().logBeDaoSystemError("Add Component Instance");
- log.debug("Failed to create component instance node in graph. status is {}", status);
- return Either.right(status);
- }
- TitanVertex createdComponentInstanceVertex = createCIResult.left().value();
- TitanOperationStatus associateContainerRes = associateContainerCompToComponentInstance(metadataVertex, createdComponentInstanceVertex, logicalName);
-
- String componentInstanceUniqueId = componentInstanceData.getUniqueId();
- if (associateContainerRes != TitanOperationStatus.OK) {
- BeEcompErrorManager.getInstance().logBeDaoSystemError("Add Component Instance");
- log.debug("Failed to associate container component {} to component instance {}. Status is {}", containerComponentId, componentInstanceUniqueId, associateContainerRes);
- return Either.right(associateContainerRes);
- }
- String originId = (String) titanGenericDao.getProperty(createdComponentInstanceVertex, GraphPropertiesDictionary.TYPE.getProperty());
-
- TitanOperationStatus associateToInstOriginComponent = associateToInstOriginComponent(createdComponentInstanceVertex, originVertex, originId);
- if (associateToInstOriginComponent != TitanOperationStatus.OK) {
- BeEcompErrorManager.getInstance().logBeDaoSystemError("Add Component Instance");
- log.debug("Failed to associate component instance {} to its origin component {}. Status is {}", componentInstanceUniqueId, componentInstanceData.getComponentInstDataDefinition().getComponentUid(), associateToInstOriginComponent);
- return Either.right(associateToInstOriginComponent);
- }
-
- TitanOperationStatus associateCompInstToRequirements = associateCompInstToRequirements(createdComponentInstanceVertex, containerNodeType, compInstNodeType, originId);
- if (associateCompInstToRequirements != TitanOperationStatus.OK) {
- BeEcompErrorManager.getInstance().logBeDaoSystemError("Add Component Instance");
- log.debug("Failed to associate component instance {} to its origin requirements. Status is {}", componentInstanceUniqueId, associateCompInstToRequirements);
- return Either.right(associateCompInstToRequirements);
- }
- TitanOperationStatus associateCompInstToCapabilities = associateCompInstToCapabilities(createdComponentInstanceVertex, containerNodeType, compInstNodeType, originId);
- if (associateCompInstToCapabilities != TitanOperationStatus.OK) {
- BeEcompErrorManager.getInstance().logBeDaoSystemError("Add Component Instance");
- log.debug("Failed to associate component instance {} to its origin capabilities. Status is {}", componentInstanceUniqueId, associateCompInstToCapabilities);
- return Either.right(associateCompInstToCapabilities);
- }
- // Capability instance with property values implementation
- Either<List<ImmutablePair<TitanVertex, GraphEdge>>, TitanOperationStatus> cloneCapabilityInstancesRes = null;
- Either<List<GraphRelation>, TitanOperationStatus> associateComponentInstanceToCapabilityInstancesRes;
- status = null;
- if (!isCreateLogicaName) {
- // in case of cloning of component instance
- log.debug("Before cloning of capability instances of component instance {}.", componentInstance.getUniqueId());
- cloneCapabilityInstancesRes = cloneCapabilityInstancesOfResourceInstance(createdComponentInstanceVertex, componentInstance);
- if (cloneCapabilityInstancesRes.isRight() && !cloneCapabilityInstancesRes.right().value().equals(TitanOperationStatus.NOT_FOUND)) {
- status = cloneCapabilityInstancesRes.right().value();
- log.debug("Failed to clone capability instances of component instance {}. Status is {}", componentInstance.getUniqueId(), status);
- }
- log.trace("After cloning of capability instances of component instance {}. Status is {}", componentInstance.getUniqueId(), status);
- } else if (containerNodeType.equals(NodeTypeEnum.Resource) && componentInstance.getCapabilities() != null && !componentInstance.getCapabilities().isEmpty()) {
- // in case of creation from scar
- TitanOperationStatus addPropertiesRes = createCapabilityInstancesWithPropertyValues(createdComponentInstanceVertex, componentInstanceUniqueId, componentInstance.getCapabilities(), true);
- if (addPropertiesRes != TitanOperationStatus.OK) {
- status = addPropertiesRes;
- log.debug("Failed to create capability instances with property values for component instance {}. Status is {}", componentInstance.getUniqueId(), status);
- }
- }
- if (status == null && containerNodeType.equals(NodeTypeEnum.Service)) {
- Map<String, Object> properties = titanGenericDao.getProperties(createdComponentInstanceVertex);
- ComponentInstanceData createdComponentInstance = GraphElementFactory.createElement(NodeTypeEnum.ResourceInstance.getName(), GraphElementTypeEnum.Node, properties, ComponentInstanceData.class);
- if (cloneCapabilityInstancesRes == null || cloneCapabilityInstancesRes.isRight()) {
- // in case of creating of service
- log.trace("Before associating component instance {} to capability instances .", componentInstance.getUniqueId());
- associateComponentInstanceToCapabilityInstancesRes = associateComponentInstanceToCapabilityInstancesOfResourceInstance(componentInstance);
- if (associateComponentInstanceToCapabilityInstancesRes.isRight() && !associateComponentInstanceToCapabilityInstancesRes.right().value().equals(TitanOperationStatus.NOT_FOUND)) {
- status = associateComponentInstanceToCapabilityInstancesRes.right().value();
- log.debug("Failed to associate capability instances to component instance {}. Status is {}", componentInstance.getUniqueId(), status);
- }
- log.trace("After associating component instance {} to capability instances . Status is {}", componentInstance.getUniqueId(), status);
- } else {
- // in case of cloning of service
- log.trace("Before associating created component instance {} to cloned capability instances.", componentInstanceUniqueId);
- TitanOperationStatus associationStatus = associateCreatedComponentInstanceToClonedCapabilityInstances(createdComponentInstanceVertex, componentInstanceUniqueId, cloneCapabilityInstancesRes.left().value());
- if (associationStatus != TitanOperationStatus.OK && associationStatus != TitanOperationStatus.NOT_FOUND) {
- status = associationStatus;
- log.debug("Failed to associate capability instances to component instance {}. Status is {}", componentInstance.getUniqueId(), status);
- }
- log.trace("After associating created component instance {} to cloned capability instances. Status is {}", componentInstanceUniqueId, status);
- }
- }
-
- if (status == null) {
- // ComponentInstance createdResourceInstance = new
- // ComponentInstance(createdComponentInstance.getComponentInstDataDefinition());
- //
- // String icon = (String) titanGenericDao.getProperty(originVertex,
- // GraphPropertiesDictionary.ICON.getProperty());
- // createdResourceInstance.setIcon(icon);
- return Either.left(createdComponentInstanceVertex);
- }
- return Either.right(status);
- }
-
- private Either<Map<CapabilityInstData, List<PropertyValueData>>, TitanOperationStatus> createCapabilityInstancesWithPropertyValues(String resourceInstanceId, Map<String, List<CapabilityDefinition>> capabilities,
- boolean isNewlyCreatedResourceInstance) {
- TitanOperationStatus error;
- Map<CapabilityInstData, List<PropertyValueData>> result = new HashMap<>();
- for (Entry<String, List<CapabilityDefinition>> capailityEntry : capabilities.entrySet()) {
- CapabilityDefinition capability = capailityEntry.getValue().get(0);
- if (capability.getProperties() != null && !capability.getProperties().isEmpty()) {
- Either<Map<CapabilityInstData, List<PropertyValueData>>, TitanOperationStatus> addPropertiesRes = addCapabilityPropertyValuesToResourceInstance(resourceInstanceId, capability, isNewlyCreatedResourceInstance);
- if (addPropertiesRes.isRight()) {
- error = addPropertiesRes.right().value();
- log.debug("Failed to add property values to capabilities of component instance {}. Status is {}", resourceInstanceId, error);
- return Either.right(error);
- } else {
- result.putAll(addPropertiesRes.left().value());
- }
- }
- }
- return Either.left(result);
- }
-
- private TitanOperationStatus createCapabilityInstancesWithPropertyValues(TitanVertex resourceInstanceVertex, String resourceInstanceId, Map<String, List<CapabilityDefinition>> capabilities, boolean isNewlyCreatedResourceInstance) {
- TitanOperationStatus result = TitanOperationStatus.OK;
-
- for (Entry<String, List<CapabilityDefinition>> capailityEntry : capabilities.entrySet()) {
- CapabilityDefinition capability = capailityEntry.getValue().get(0);
- if (capability.getProperties() != null && !capability.getProperties().isEmpty()) {
- TitanOperationStatus addPropertiesRes = addCapabilityPropertyValuesToResourceInstance(resourceInstanceVertex, resourceInstanceId, capability, isNewlyCreatedResourceInstance);
- if (addPropertiesRes != TitanOperationStatus.OK) {
- result = addPropertiesRes;
- log.debug("Failed to add property values to capabilities of component instance {}. Status is {}", resourceInstanceId, result);
- return result;
- }
- }
- }
- return result;
- }
-
- private Either<List<GraphRelation>, TitanOperationStatus> associateCreatedComponentInstanceToClonedCapabilityInstances(String newComponentResourceId, List<ImmutablePair<CapabilityInstData, GraphEdge>> capabilityInstances) {
- TitanOperationStatus error = null;
- List<GraphRelation> relationsToCapabilityInstances = new ArrayList<>();
- UniqueIdData componentInstanceIdData = new UniqueIdData(NodeTypeEnum.ResourceInstance, newComponentResourceId);
- for (ImmutablePair<CapabilityInstData, GraphEdge> capInstPair : capabilityInstances) {
- Either<GraphRelation, TitanOperationStatus> associateComponentInstanceToCapabilityinstanceRes = titanGenericDao.createRelation(componentInstanceIdData, capInstPair.getLeft(), GraphEdgeLabels.CAPABILITY_INST,
- capInstPair.getRight().getProperties());
- if (associateComponentInstanceToCapabilityinstanceRes.isRight()) {
- error = associateComponentInstanceToCapabilityinstanceRes.right().value();
- log.debug("Failed to associate capability instance {} to resource instance {} status is {}.", capInstPair.getLeft().getUniqueId(), newComponentResourceId, error);
- break;
- } else {
- relationsToCapabilityInstances.add(associateComponentInstanceToCapabilityinstanceRes.left().value());
- }
- }
- if (error == null) {
- return Either.left(relationsToCapabilityInstances);
- }
- return Either.right(error);
- }
-
- private TitanOperationStatus associateCreatedComponentInstanceToClonedCapabilityInstances(TitanVertex riVertex, String newComponentResourceId, List<ImmutablePair<TitanVertex, GraphEdge>> capabilityInstances) {
- TitanOperationStatus error = null;
- for (ImmutablePair<TitanVertex, GraphEdge> capInstPair : capabilityInstances) {
- TitanOperationStatus associateComponentInstanceToCapabilityinstanceRes = titanGenericDao.createEdge(riVertex, capInstPair.getLeft(), GraphEdgeLabels.CAPABILITY_INST, capInstPair.getRight().getProperties());
- if (associateComponentInstanceToCapabilityinstanceRes != TitanOperationStatus.OK) {
- error = associateComponentInstanceToCapabilityinstanceRes;
- log.debug("Failed to associate capability instance {} to resource instance {} status is {} .", capInstPair.getLeft(), newComponentResourceId, error);
- break;
- }
- }
- if (error == null) {
- return TitanOperationStatus.OK;
- }
- return error;
- }
-
- private Either<List<GraphRelation>, TitanOperationStatus> associateComponentInstanceToCapabilityInstancesOfResourceInstance(ComponentInstance componentInstance) {
- TitanOperationStatus error = null;
- String resourceId = componentInstance.getComponentUid();
- String componentResourceId = componentInstance.getUniqueId();
- UniqueIdData componentInstanceIdData = new UniqueIdData(NodeTypeEnum.ResourceInstance, componentResourceId);
- List<ImmutablePair<ComponentInstanceData, GraphEdge>> resourceInstancesPair;
- List<ImmutablePair<CapabilityInstData, GraphEdge>> allCapabilityInstancesList = new ArrayList<>();
- List<GraphRelation> relationsToCapabilityInstances = new ArrayList<>();
- Either<List<ImmutablePair<ComponentInstanceData, GraphEdge>>, TitanOperationStatus> getAllResourceInstanceRes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource), resourceId,
- GraphEdgeLabels.RESOURCE_INST, NodeTypeEnum.ResourceInstance, ComponentInstanceData.class);
- if (getAllResourceInstanceRes.isRight() && !getAllResourceInstanceRes.right().value().equals(TitanOperationStatus.NOT_FOUND)) {
- error = getAllResourceInstanceRes.right().value();
- log.debug("Failed to retrieve resource instances from resource {} status is {}.", resourceId, error);
- }
- if (getAllResourceInstanceRes.isLeft()) {
- resourceInstancesPair = getAllResourceInstanceRes.left().value();
- ComponentInstanceData ri;
- for (ImmutablePair<ComponentInstanceData, GraphEdge> riPair : resourceInstancesPair) {
- ri = riPair.getLeft();
- Either<List<ImmutablePair<CapabilityInstData, GraphEdge>>, TitanOperationStatus> getCapabilityInstancesRes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), ri.getUniqueId(),
- GraphEdgeLabels.CAPABILITY_INST, NodeTypeEnum.CapabilityInst, CapabilityInstData.class);
- if (getCapabilityInstancesRes.isRight() && !getCapabilityInstancesRes.right().value().equals(TitanOperationStatus.NOT_FOUND)) {
- error = getCapabilityInstancesRes.right().value();
- log.debug("Failed to retrieve capability instances of resource instance {} status is {}.", ri.getUniqueId(), error);
- break;
- }
- if (getCapabilityInstancesRes.isLeft()) {
- allCapabilityInstancesList.addAll(getCapabilityInstancesRes.left().value());
- }
- }
- }
- if (error == null && !allCapabilityInstancesList.isEmpty()) {
- for (ImmutablePair<CapabilityInstData, GraphEdge> capInstPair : allCapabilityInstancesList) {
- Either<GraphRelation, TitanOperationStatus> associateComponentInstanceToCapabilityinstanceRes = titanGenericDao.createRelation(componentInstanceIdData, capInstPair.getLeft(), GraphEdgeLabels.CAPABILITY_INST,
- capInstPair.getRight().getProperties());
- if (associateComponentInstanceToCapabilityinstanceRes.isRight()) {
- error = associateComponentInstanceToCapabilityinstanceRes.right().value();
- log.debug("Failed to associate capability instance {} to resource instance {} status is {}.", capInstPair.getLeft().getUniqueId(), componentResourceId, error);
- break;
- } else {
- relationsToCapabilityInstances.add(associateComponentInstanceToCapabilityinstanceRes.left().value());
- }
- }
- }
- if (error == null) {
- return Either.left(relationsToCapabilityInstances);
- }
- return Either.right(error);
- }
-
- private NodeTypeEnum detectOriginType(String label, ComponentInstanceData componentInstanceData, String resourceTypeStr) {
- NodeTypeEnum res = null;
- res = NodeTypeEnum.getByName(label);
- switch (res) {
- case Service:
- componentInstanceData.getComponentInstDataDefinition().setOriginType(OriginTypeEnum.SERVICE);
- break;
- case Product:
- componentInstanceData.getComponentInstDataDefinition().setOriginType(OriginTypeEnum.PRODUCT);
- break;
- case Resource:
- ResourceTypeEnum resourceType = ResourceTypeEnum.valueOf(resourceTypeStr);
- switch (resourceType) {
- case VF:
- componentInstanceData.getComponentInstDataDefinition().setOriginType(OriginTypeEnum.VF);
- break;
- case VFC:
- componentInstanceData.getComponentInstDataDefinition().setOriginType(OriginTypeEnum.VFC);
- break;
- case VFCMT:
- componentInstanceData.getComponentInstDataDefinition().setOriginType(OriginTypeEnum.VFCMT);
- break;
- case CP:
- componentInstanceData.getComponentInstDataDefinition().setOriginType(OriginTypeEnum.CP);
- break;
- case VL:
- componentInstanceData.getComponentInstDataDefinition().setOriginType(OriginTypeEnum.VL);
- break;
- case CVFC:
- componentInstanceData.getComponentInstDataDefinition().setOriginType(OriginTypeEnum.CVFC);
- break;
- case PNF:
- componentInstanceData.getComponentInstDataDefinition().setOriginType(OriginTypeEnum.PNF);
- break;
-
- }
- break;
- default:
- break;
- }
- return res;
- }
-
- private Either<GraphRelation, TitanOperationStatus> associateToInstOriginComponent(ComponentInstanceData componentInstanceData, NodeTypeEnum compInstNodeType) {
-
- UniqueIdData resourceIdData = new UniqueIdData(compInstNodeType, componentInstanceData.getComponentInstDataDefinition().getComponentUid());
-
- Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(componentInstanceData, resourceIdData, GraphEdgeLabels.INSTANCE_OF, null);
-
- log.debug("After associating resource instance {} to resource {}. status is {}", componentInstanceData.getUniqueId(), componentInstanceData.getComponentInstDataDefinition().getUniqueId(), createRelation);
-
- return createRelation;
- }
-
- private TitanOperationStatus associateToInstOriginComponent(TitanVertex componentInstanceVertex, TitanVertex originVertex, String originId) {
-
- TitanOperationStatus createRelation = titanGenericDao.createEdge(componentInstanceVertex, originVertex, GraphEdgeLabels.INSTANCE_OF, null);
-
- log.debug("After associating resource instance {} to resource {}. status is {}", componentInstanceVertex, originId, createRelation);
-
- return createRelation;
- }
-
- private Either<List<GraphRelation>, TitanOperationStatus> associateCompInstToRequirements(ComponentInstanceData componentInstanceData, NodeTypeEnum containerNodeType, NodeTypeEnum compInstNodeType) {
- log.trace("Starting to copy origin component requirements to its component instance");
- String compInstOriginId = componentInstanceData.getComponentInstDataDefinition().getComponentUid();
- List<GraphRelation> graphRelations = new ArrayList<>();
-
- // case of VFC / CP / VL
- if (compInstNodeType.equals(NodeTypeEnum.Resource)) {
- createRequirementRelationsFromAtomicResource(componentInstanceData, compInstOriginId, graphRelations);
-
- }
- // case of VF / Service / Product
- createCalculatedRequirementRelationsFromComponent(componentInstanceData, containerNodeType, compInstNodeType, graphRelations, compInstOriginId);
-
- log.trace("Finished to copy origin component requirements to its component instance, created {} new calculated requirement relations", graphRelations.size());
- return Either.left(graphRelations);
- }
-
- private TitanOperationStatus associateCompInstToRequirements(TitanVertex componentInstanceVertex, NodeTypeEnum containerNodeType, NodeTypeEnum compInstNodeType, String originId) {
- log.trace("Starting to copy origin component requirements to its component instance");
- TitanOperationStatus status = TitanOperationStatus.OK;
- // case of VFC / CP / VL
- if (compInstNodeType.equals(NodeTypeEnum.Resource)) {
- status = createRequirementRelationsFromAtomicResource(componentInstanceVertex, originId);
- if (!status.equals(TitanOperationStatus.OK)) {
- log.debug("Failed create relation to requirement of origin {} error {}", originId, status);
- return status;
- }
- }
- // case of VF / Service / Product
- status = createCalculatedRequirementRelationsFromComponent(componentInstanceVertex, containerNodeType, compInstNodeType, originId);
-
- log.trace("Finished to copy origin component requirements to its component instance with status {}", status);
- return status;
- }
-
- private void createRequirementRelationsFromAtomicResource(ComponentInstanceData componentInstanceData, String compInstOriginId, List<GraphRelation> graphRelations) {
- Map<String, RequirementDefinition> requirements = new HashMap<String, RequirementDefinition>();
- Set<String> caseInsensitiveReqNames = new HashSet<>();
-
- TitanOperationStatus status = requirementOperation.findAllRequirementsRecursively(compInstOriginId, requirements, caseInsensitiveReqNames);
- if (status != TitanOperationStatus.OK) {
- log.debug("Couldn't fetch requirements of component {}, error: {}", compInstOriginId, status);
- }
-
- log.trace("Found {} requirements for component {}, ", requirements.size(), compInstOriginId);
- for (Entry<String, RequirementDefinition> reqPair : requirements.entrySet()) {
- RequirementDefinition requirementDef = reqPair.getValue();
- RequirementData requirementData = new RequirementData();
- requirementData.setUniqueId(requirementDef.getUniqueId());
-
- log.trace("Creating calculated requirement relation from component instance {} to requirement {}", componentInstanceData.getUniqueId(), requirementDef.getUniqueId());
- Map<String, Object> props = new HashMap<String, Object>();
- props.put(GraphEdgePropertiesDictionary.NAME.getProperty(), reqPair.getKey());
-
- props.put(GraphEdgePropertiesDictionary.OWNER_ID.getProperty(), componentInstanceData.getUniqueId());
- if (requirementDef.getMinOccurrences() == null) {
- props.put(GraphEdgePropertiesDictionary.REQUIRED_OCCURRENCES.getProperty(), RequirementDataDefinition.MIN_OCCURRENCES);
- } else {
- props.put(GraphEdgePropertiesDictionary.REQUIRED_OCCURRENCES.getProperty(), requirementDef.getMinOccurrences());
- }
- if (requirementDef.getMaxOccurrences() == null) {
- props.put(GraphEdgePropertiesDictionary.LEFT_OCCURRENCES.getProperty(), RequirementDataDefinition.MAX_DEFAULT_OCCURRENCES);
- } else {
- props.put(GraphEdgePropertiesDictionary.LEFT_OCCURRENCES.getProperty(), requirementDef.getMaxOccurrences());
- }
-
- Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(componentInstanceData, requirementData, GraphEdgeLabels.CALCULATED_REQUIREMENT, props);
- if (createRelation.isRight()) {
- TitanOperationStatus titanOperationStatus = createRelation.right().value();
- log.debug("Failed to create calculated requirement from component instance {} to requirement {}, error: {}", componentInstanceData.getUniqueId(), requirementDef.getUniqueId(), titanOperationStatus);
- }
- graphRelations.add(createRelation.left().value());
- }
- }
-
- private TitanOperationStatus createRequirementRelationsFromAtomicResource(TitanVertex componentInstanceVertex, String compInstOriginId) {
- Map<String, RequirementDefinition> requirements = new HashMap<String, RequirementDefinition>();
- Set<String> caseInsensitiveReqNames = new HashSet<>();
-
- TitanOperationStatus status = requirementOperation.findAllRequirementsRecursively(compInstOriginId, requirements, caseInsensitiveReqNames);
- if (status != TitanOperationStatus.OK && status != TitanOperationStatus.NOT_FOUND) {
- log.debug("Couldn't fetch requirements of component {}, error: {}", compInstOriginId, status);
- return status;
- }
-
- String compoInstId = (String) titanGenericDao.getProperty(componentInstanceVertex, GraphPropertiesDictionary.UNIQUE_ID.getProperty());
- log.trace("Found {} requirements for component {}, ", requirements.size(), compInstOriginId);
- for (Entry<String, RequirementDefinition> reqPair : requirements.entrySet()) {
- RequirementDefinition requirementDef = reqPair.getValue();
- RequirementData requirementData = new RequirementData();
- requirementData.setUniqueId(requirementDef.getUniqueId());
-
- log.trace("Creating calculated requirement relation from component instance {} to requirement {}", compoInstId, requirementDef.getUniqueId());
- Map<String, Object> props = new HashMap<String, Object>();
- props.put(GraphEdgePropertiesDictionary.NAME.getProperty(), reqPair.getKey());
-
- props.put(GraphEdgePropertiesDictionary.OWNER_ID.getProperty(), compoInstId);
- if (requirementDef.getMinOccurrences() == null) {
- props.put(GraphEdgePropertiesDictionary.REQUIRED_OCCURRENCES.getProperty(), RequirementDataDefinition.MIN_OCCURRENCES);
- } else {
- props.put(GraphEdgePropertiesDictionary.REQUIRED_OCCURRENCES.getProperty(), requirementDef.getMinOccurrences());
- }
- if (requirementDef.getMaxOccurrences() == null) {
- props.put(GraphEdgePropertiesDictionary.LEFT_OCCURRENCES.getProperty(), RequirementDataDefinition.MAX_DEFAULT_OCCURRENCES);
- } else {
- props.put(GraphEdgePropertiesDictionary.LEFT_OCCURRENCES.getProperty(), requirementDef.getMaxOccurrences());
- }
-
- TitanOperationStatus createRelation = titanGenericDao.createEdge(componentInstanceVertex, requirementData, GraphEdgeLabels.CALCULATED_REQUIREMENT, props);
- if (!createRelation.equals(TitanOperationStatus.OK)) {
- log.debug("Failed to create calculated requirement from component instance {} to requirement {}, error: {}", compoInstId, requirementDef.getUniqueId(), createRelation);
- return createRelation;
- }
- }
- return TitanOperationStatus.OK;
- }
-
- private Either<List<GraphRelation>, TitanOperationStatus> associateCompInstToCapabilities(ComponentInstanceData componentInstanceData, NodeTypeEnum containerNodeType, NodeTypeEnum compInstNodeType) {
-
- log.trace("Starting to copy origin component capabilities to its component instance");
- List<GraphRelation> graphRelations = new ArrayList<>();
-
- String compInstOriginId = componentInstanceData.getComponentInstDataDefinition().getComponentUid();
-
- // case of VFC / CP / VL
- if (compInstNodeType.equals(NodeTypeEnum.Resource)) {
- createCaculatedRelationsFromAtomicResource(componentInstanceData, graphRelations, compInstOriginId);
- }
-
- // case of VF / Service / Product
- createCalculatedCapabilityRelationsFromComponent(componentInstanceData, containerNodeType, compInstNodeType, graphRelations, compInstOriginId);
-
- log.trace("Finished to copy origin component capabilities to its component instance, created {} new calculated capability relations", graphRelations.size());
- return Either.left(graphRelations);
- }
-
- private TitanOperationStatus associateCompInstToCapabilities(TitanVertex componentInstanceVertex, NodeTypeEnum containerNodeType, NodeTypeEnum compInstNodeType, String originId) {
-
- log.trace("Starting to copy origin component capabilities to its component instance");
- TitanOperationStatus status = TitanOperationStatus.OK;
-
- // case of VFC / CP / VL
- if (compInstNodeType.equals(NodeTypeEnum.Resource)) {
- status = createCaculatedRelationsFromAtomicResource(componentInstanceVertex, originId);
- if (!status.equals(TitanOperationStatus.OK)) {
- return status;
- }
- }
-
- // case of VF / Service / Product
- status = createCalculatedCapabilityRelationsFromComponent(componentInstanceVertex, containerNodeType, compInstNodeType, originId);
-
- return status;
- }
-
- private void createCalculatedRequirementRelationsFromComponent(ComponentInstanceData componentInstanceData, NodeTypeEnum containerNodeType, NodeTypeEnum compInstNodeType, List<GraphRelation> graphRelations, String compInstOriginId) {
-
- Either<ImmutablePair<List<ComponentInstance>, List<RequirementCapabilityRelDef>>, TitanOperationStatus> componentInstancesOfComponent = getComponentInstancesOfComponent(compInstOriginId, containerNodeType, compInstNodeType);
- if (componentInstancesOfComponent.isLeft() && !componentInstancesOfComponent.left().value().left.isEmpty()) {
- List<ComponentInstance> componentInstances = componentInstancesOfComponent.left().value().left;
- for (ComponentInstance componentInstance : componentInstances) {
- Either<List<ImmutablePair<RequirementData, GraphEdge>>, TitanOperationStatus> childrenNodes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(containerNodeType), componentInstance.getUniqueId(),
- GraphEdgeLabels.CALCULATED_REQUIREMENT, NodeTypeEnum.Requirement, RequirementData.class);
-
- if (childrenNodes.isLeft() && !childrenNodes.left().value().isEmpty()) {
- List<ImmutablePair<RequirementData, GraphEdge>> list = childrenNodes.left().value();
- for (ImmutablePair<RequirementData, GraphEdge> calculatedReq : list) {
-
- GraphEdge edge = calculatedReq.right;
- Map<String, Object> properties = edge.getProperties();
- String source = null;
- String occurrences = RequirementDataDefinition.MAX_DEFAULT_OCCURRENCES;
- String minOccurrences = RequirementDataDefinition.MIN_OCCURRENCES;
-
- if (properties != null && properties.containsKey(GraphEdgePropertiesDictionary.SOURCE.getProperty())) {
- source = (String) properties.get(GraphEdgePropertiesDictionary.SOURCE.getProperty());
- }
- if (properties != null && properties.containsKey(GraphEdgePropertiesDictionary.LEFT_OCCURRENCES.getProperty())) {
- occurrences = (String) properties.get(GraphEdgePropertiesDictionary.LEFT_OCCURRENCES.getProperty());
- }
- if (properties != null && properties.containsKey(GraphEdgePropertiesDictionary.REQUIRED_OCCURRENCES.getProperty())) {
- minOccurrences = (String) properties.get(GraphEdgePropertiesDictionary.REQUIRED_OCCURRENCES.getProperty());
- }
-
- String capabilityName = (String) properties.get(GraphEdgePropertiesDictionary.NAME.getProperty());
- Either<GraphRelation, TitanOperationStatus> createRelation = createCalculatedRequirementEdge(componentInstanceData, source, capabilityName, calculatedReq.left, componentInstance, occurrences, minOccurrences);
- if (createRelation.isLeft()) {
- graphRelations.add(createRelation.left().value());
- }
- }
- }
- }
- }
- }
-
- private TitanOperationStatus createCalculatedRequirementRelationsFromComponent(TitanVertex componentInstanceVertex, NodeTypeEnum containerNodeType, NodeTypeEnum compInstNodeType, String compInstOriginId) {
-
- Either<ImmutablePair<List<ComponentInstance>, List<RequirementCapabilityRelDef>>, TitanOperationStatus> componentInstancesOfComponent = getComponentInstancesOfComponent(compInstOriginId, containerNodeType, compInstNodeType);
- if (componentInstancesOfComponent.isLeft() && !componentInstancesOfComponent.left().value().left.isEmpty()) {
- List<ComponentInstance> componentInstances = componentInstancesOfComponent.left().value().left;
- for (ComponentInstance componentInstance : componentInstances) {
-
- Either<List<ImmutablePair<TitanVertex, Edge>>, TitanOperationStatus> childrenNodes = titanGenericDao.getChildrenVertecies(UniqueIdBuilder.getKeyByNodeType(containerNodeType), componentInstance.getUniqueId(),
- GraphEdgeLabels.CALCULATED_REQUIREMENT);
-
- if (childrenNodes.isLeft() && !childrenNodes.left().value().isEmpty()) {
- List<ImmutablePair<TitanVertex, Edge>> list = childrenNodes.left().value();
- for (ImmutablePair<TitanVertex, Edge> calculatedReq : list) {
-
- Edge edge = calculatedReq.right;
- Map<String, Object> properties = titanGenericDao.getProperties(edge);
- String source = null;
- String occurrences = RequirementDataDefinition.MAX_DEFAULT_OCCURRENCES;
- String minOccurrences = RequirementDataDefinition.MIN_OCCURRENCES;
-
- if (properties != null && properties.containsKey(GraphEdgePropertiesDictionary.SOURCE.getProperty())) {
- source = (String) properties.get(GraphEdgePropertiesDictionary.SOURCE.getProperty());
- }
- if (properties != null && properties.containsKey(GraphEdgePropertiesDictionary.LEFT_OCCURRENCES.getProperty())) {
- occurrences = (String) properties.get(GraphEdgePropertiesDictionary.LEFT_OCCURRENCES.getProperty());
- }
- if (properties != null && properties.containsKey(GraphEdgePropertiesDictionary.REQUIRED_OCCURRENCES.getProperty())) {
- minOccurrences = (String) properties.get(GraphEdgePropertiesDictionary.REQUIRED_OCCURRENCES.getProperty());
- }
-
- String capabilityName = (String) properties.get(GraphEdgePropertiesDictionary.NAME.getProperty());
- TitanOperationStatus createRelation = createCalculatedRequirementEdge(componentInstanceVertex, source, capabilityName, calculatedReq.left, componentInstance, occurrences, minOccurrences);
- if (!createRelation.equals(TitanOperationStatus.OK)) {
- log.debug("Failed to create calculated requirement edge, status ", createRelation);
- return createRelation;
- }
- }
- }
- }
- }
- return TitanOperationStatus.OK;
- }
-
- private void createCalculatedCapabilityRelationsFromComponent(ComponentInstanceData componentInstanceData, NodeTypeEnum containerNodeType, NodeTypeEnum compInstNodeType, List<GraphRelation> graphRelations, String compInstOriginId) {
-
- Either<ImmutablePair<List<ComponentInstance>, List<RequirementCapabilityRelDef>>, TitanOperationStatus> componentInstancesOfComponent = getComponentInstancesOfComponent(compInstOriginId, containerNodeType, compInstNodeType);
- if (componentInstancesOfComponent.isLeft() && !componentInstancesOfComponent.left().value().left.isEmpty()) {
- List<ComponentInstance> componentInstances = componentInstancesOfComponent.left().value().left;
- for (ComponentInstance componentInstance : componentInstances) {
- Either<List<ImmutablePair<CapabilityData, GraphEdge>>, TitanOperationStatus> childrenNodes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(compInstNodeType), componentInstance.getUniqueId(),
- GraphEdgeLabels.CALCULATED_CAPABILITY, NodeTypeEnum.Capability, CapabilityData.class);
-
- if (childrenNodes.isLeft() && !childrenNodes.left().value().isEmpty()) {
- List<ImmutablePair<CapabilityData, GraphEdge>> list = childrenNodes.left().value();
- for (ImmutablePair<CapabilityData, GraphEdge> calculatedCap : list) {
-
- GraphEdge edge = calculatedCap.right;
- Map<String, Object> properties = edge.getProperties();
- String source = null;
- if (properties != null && properties.containsKey(GraphEdgePropertiesDictionary.SOURCE.getProperty())) {
- source = (String) properties.get(GraphEdgePropertiesDictionary.SOURCE.getProperty());
- }
- String minOccurrences = CapabilityDataDefinition.MIN_OCCURRENCES;
- String occurrences = CapabilityDataDefinition.MAX_OCCURRENCES;
- if (properties != null && properties.containsKey(GraphEdgePropertiesDictionary.REQUIRED_OCCURRENCES.getProperty())) {
- minOccurrences = (String) properties.get(GraphEdgePropertiesDictionary.REQUIRED_OCCURRENCES.getProperty());
- }
- if (properties != null && properties.containsKey(GraphEdgePropertiesDictionary.LEFT_OCCURRENCES.getProperty())) {
- occurrences = (String) properties.get(GraphEdgePropertiesDictionary.LEFT_OCCURRENCES.getProperty());
- }
-
- String capabilityName = (String) properties.get(GraphEdgePropertiesDictionary.NAME.getProperty());
- Either<GraphRelation, TitanOperationStatus> createRelation = createCalculatedCapabilityEdge(componentInstanceData, source, capabilityName, calculatedCap.left, componentInstance.getUniqueId(), minOccurrences, occurrences);
- if (createRelation.isLeft()) {
- graphRelations.add(createRelation.left().value());
- }
- }
- }
- }
- }
- }
-
- private TitanOperationStatus createCalculatedCapabilityRelationsFromComponent(TitanVertex componentInstanceVertex, NodeTypeEnum containerNodeType, NodeTypeEnum compInstNodeType, String compInstOriginId) {
-
- Either<ImmutablePair<List<ComponentInstance>, List<RequirementCapabilityRelDef>>, TitanOperationStatus> componentInstancesOfComponent = getComponentInstancesOfComponent(compInstOriginId, containerNodeType, compInstNodeType);
- if (componentInstancesOfComponent.isLeft() && !componentInstancesOfComponent.left().value().left.isEmpty()) {
- List<ComponentInstance> componentInstances = componentInstancesOfComponent.left().value().left;
- for (ComponentInstance componentInstance : componentInstances) {
- Either<List<ImmutablePair<TitanVertex, Edge>>, TitanOperationStatus> childrenNodes = titanGenericDao.getChildrenVertecies(UniqueIdBuilder.getKeyByNodeType(compInstNodeType), componentInstance.getUniqueId(),
- GraphEdgeLabels.CALCULATED_CAPABILITY);
-
- if (childrenNodes.isLeft() && !childrenNodes.left().value().isEmpty()) {
- List<ImmutablePair<TitanVertex, Edge>> list = childrenNodes.left().value();
- for (ImmutablePair<TitanVertex, Edge> calculatedCap : list) {
-
- Edge edge = calculatedCap.right;
- Map<String, Object> properties = titanGenericDao.getProperties(edge);
- String source = null;
- if (properties != null && properties.containsKey(GraphEdgePropertiesDictionary.SOURCE.getProperty())) {
- source = (String) properties.get(GraphEdgePropertiesDictionary.SOURCE.getProperty());
- }
- String minOccurrences = CapabilityDataDefinition.MIN_OCCURRENCES;
- String occurrences = CapabilityDataDefinition.MAX_OCCURRENCES;
- if (properties != null && properties.containsKey(GraphEdgePropertiesDictionary.REQUIRED_OCCURRENCES.getProperty())) {
- minOccurrences = (String) properties.get(GraphEdgePropertiesDictionary.REQUIRED_OCCURRENCES.getProperty());
- }
- if (properties != null && properties.containsKey(GraphEdgePropertiesDictionary.LEFT_OCCURRENCES.getProperty())) {
- occurrences = (String) properties.get(GraphEdgePropertiesDictionary.LEFT_OCCURRENCES.getProperty());
- }
-
- String capabilityName = (String) properties.get(GraphEdgePropertiesDictionary.NAME.getProperty());
- TitanOperationStatus createRelation = createCalculatedCapabilityEdge(componentInstanceVertex, source, capabilityName, calculatedCap.left, componentInstance.getUniqueId(), minOccurrences, occurrences);
- if (!createRelation.equals(TitanOperationStatus.OK)) {
- return createRelation;
- }
- }
- }
- }
- }
- return TitanOperationStatus.OK;
- }
-
- private void createCaculatedRelationsFromAtomicResource(ComponentInstanceData componentInstanceData, List<GraphRelation> graphRelations, String compInstOriginId) {
-
- Map<String, CapabilityDefinition> capabilities = new HashMap<String, CapabilityDefinition>();
- Set<String> caseInsensitiveCapNames = new HashSet<>();
- TitanOperationStatus getAllCapabilities = capabilityOperation.getAllCapabilitiesRecusive(NodeTypeEnum.Resource, compInstOriginId, true, capabilities, caseInsensitiveCapNames, true);
-
- if (!getAllCapabilities.equals(TitanOperationStatus.OK)) {
- if (getAllCapabilities != TitanOperationStatus.NOT_FOUND) {
- log.debug("Couldn't fetch capabilities of component {}, error: {}", compInstOriginId, getAllCapabilities);
- return;
- }
- }
- log.trace("Found {} capabilities for component {}, ", capabilities.size(), compInstOriginId);
- for (Entry<String, CapabilityDefinition> capPair : capabilities.entrySet()) {
- CapabilityDefinition capabilityData = capPair.getValue();
- log.trace("Creating calculated capability relation from component instance {} to capability {}", componentInstanceData.getUniqueId(), capabilityData.getUniqueId());
- CapabilityData capabilityDataNode = new CapabilityData();
- capabilityDataNode.setUniqueId(capabilityData.getUniqueId());
- String minOccurrences = CapabilityDataDefinition.MIN_OCCURRENCES;
- String occurrences = CapabilityDataDefinition.MAX_OCCURRENCES;
- if (capabilityData.getMinOccurrences() != null) {
- minOccurrences = capabilityData.getMinOccurrences();
- }
- if (capabilityData.getMinOccurrences() != null) {
- occurrences = capabilityData.getMaxOccurrences();
- }
-
- Either<GraphRelation, TitanOperationStatus> createRelation = createCalculatedCapabilityEdge(componentInstanceData, compInstOriginId, capPair.getKey(), capabilityDataNode, componentInstanceData.getUniqueId(), minOccurrences, occurrences);
- graphRelations.add(createRelation.left().value());
- }
- }
-
- private TitanOperationStatus createCaculatedRelationsFromAtomicResource(TitanVertex componentInstanceVertex, String compInstOriginId) {
-
- Map<String, CapabilityDefinition> capabilities = new HashMap<String, CapabilityDefinition>();
- Set<String> caseInsensitiveCapNames = new HashSet<>();
- TitanOperationStatus getAllCapabilities = capabilityOperation.getAllCapabilitiesRecusive(NodeTypeEnum.Resource, compInstOriginId, true, capabilities, caseInsensitiveCapNames, true);
-
- if (!getAllCapabilities.equals(TitanOperationStatus.OK)) {
- if (getAllCapabilities != TitanOperationStatus.NOT_FOUND) {
- log.debug("Couldn't fetch capabilities of component {}, error: {}", compInstOriginId, getAllCapabilities);
- }
- }
- log.trace("Found {} capabilities for component {}, ", capabilities.size(), compInstOriginId);
- String compoInstId = (String) titanGenericDao.getProperty(componentInstanceVertex, GraphPropertiesDictionary.UNIQUE_ID.getProperty());
-
- for (Entry<String, CapabilityDefinition> capPair : capabilities.entrySet()) {
- CapabilityDefinition capabilityData = capPair.getValue();
- log.trace("Creating calculated capability relation from component instance {} to capability {}", compoInstId, capabilityData.getUniqueId());
- CapabilityData capabilityDataNode = new CapabilityData();
- capabilityDataNode.setUniqueId(capabilityData.getUniqueId());
- String minOccurrences = CapabilityDataDefinition.MIN_OCCURRENCES;
- String occurrences = CapabilityDataDefinition.MAX_OCCURRENCES;
- if (capabilityData.getMinOccurrences() != null) {
- minOccurrences = capabilityData.getMinOccurrences();
- }
- if (capabilityData.getMinOccurrences() != null) {
- occurrences = capabilityData.getMaxOccurrences();
- }
-
- TitanOperationStatus createRelation = createCalculatedCapabilityEdge(componentInstanceVertex, compInstOriginId, capPair.getKey(), capabilityDataNode, compoInstId, minOccurrences, occurrences);
- if (!createRelation.equals(TitanOperationStatus.OK)) {
- return createRelation;
- }
- }
- return TitanOperationStatus.OK;
- }
-
- private Either<GraphRelation, TitanOperationStatus> createCalculatedCapabilityEdge(ComponentInstanceData componentInstanceData, String compInstOriginId, String capabilityName, CapabilityData capabilityDataNode, String componentInstanceId,
- String minOccurrences, String occurrences) {
- Map<String, Object> props = prepareEdgeCapabiltyProperites(compInstOriginId, capabilityName, componentInstanceId, minOccurrences, occurrences);
-
- Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(componentInstanceData, capabilityDataNode, GraphEdgeLabels.CALCULATED_CAPABILITY, props);
- if (createRelation.isRight()) {
- TitanOperationStatus titanOperationStatus = createRelation.right().value();
- log.debug("Failed to create calculated capability from component instance {} to capability {}, error: {}", componentInstanceData.getUniqueId(), capabilityDataNode.getUniqueId(), titanOperationStatus);
- return Either.right(titanOperationStatus);
- }
- return createRelation;
- }
-
- private TitanOperationStatus createCalculatedCapabilityEdge(TitanVertex componentInstanceVertex, String compInstOriginId, String capabilityName, CapabilityData capabilityDataNode, String componentInstanceId, String minOccurrences,
- String occurrences) {
- Map<String, Object> props = prepareEdgeCapabiltyProperites(compInstOriginId, capabilityName, componentInstanceId, minOccurrences, occurrences);
-
- TitanOperationStatus createRelation = titanGenericDao.createEdge(componentInstanceVertex, capabilityDataNode, GraphEdgeLabels.CALCULATED_CAPABILITY, props);
- if (!createRelation.equals(TitanOperationStatus.OK)) {
- log.debug("Failed to create calculated capability from component instance {} to capability {}, error: {}", componentInstanceId, capabilityDataNode.getUniqueId(), createRelation);
- }
- return createRelation;
- }
-
- private TitanOperationStatus createCalculatedCapabilityEdge(TitanVertex componentInstanceVertex, String compInstOriginId, String capabilityName, TitanVertex capabilityDataVertex, String componentInstanceId, String minOccurrences,
- String occurrences) {
- Map<String, Object> props = prepareEdgeCapabiltyProperites(compInstOriginId, capabilityName, componentInstanceId, minOccurrences, occurrences);
-
- TitanOperationStatus createRelation = titanGenericDao.createEdge(componentInstanceVertex, capabilityDataVertex, GraphEdgeLabels.CALCULATED_CAPABILITY, props);
- if (!createRelation.equals(TitanOperationStatus.OK)) {
- log.debug("Failed to create calculated capability from component instance {} to capability {}, error: {}", componentInstanceId, capabilityName, createRelation);
- }
- return createRelation;
- }
-
- private Map<String, Object> prepareEdgeCapabiltyProperites(String compInstOriginId, String capabilityName, String componentInstanceId, String minOccurrences, String occurrences) {
- Map<String, Object> props = new HashMap<String, Object>();
- if (capabilityName != null)
- props.put(GraphEdgePropertiesDictionary.NAME.getProperty(), capabilityName);
- if (compInstOriginId != null)
- props.put(GraphEdgePropertiesDictionary.SOURCE.getProperty(), compInstOriginId);
- if (componentInstanceId != null) {
- props.put(GraphEdgePropertiesDictionary.OWNER_ID.getProperty(), componentInstanceId);
- }
- props.put(GraphEdgePropertiesDictionary.REQUIRED_OCCURRENCES.getProperty(), minOccurrences);
- props.put(GraphEdgePropertiesDictionary.LEFT_OCCURRENCES.getProperty(), occurrences);
- return props;
- }
-
- private Either<GraphRelation, TitanOperationStatus> createCalculatedRequirementEdge(ComponentInstanceData componentInstanceData, String compInstOriginId, String capabilityName, RequirementData requirementData, ComponentInstance componentInstance,
- String occurrences, String minOccurrences) {
- Map<String, Object> props = new HashMap<String, Object>();
- if (capabilityName != null)
- props.put(GraphEdgePropertiesDictionary.NAME.getProperty(), capabilityName);
- if (compInstOriginId != null)
- props.put(GraphEdgePropertiesDictionary.SOURCE.getProperty(), compInstOriginId);
- if (componentInstance != null) {
- props.put(GraphEdgePropertiesDictionary.OWNER_ID.getProperty(), componentInstance.getUniqueId());
- }
- props.put(GraphEdgePropertiesDictionary.LEFT_OCCURRENCES.getProperty(), occurrences);
- props.put(GraphEdgePropertiesDictionary.REQUIRED_OCCURRENCES.getProperty(), minOccurrences);
-
- Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(componentInstanceData, requirementData, GraphEdgeLabels.CALCULATED_REQUIREMENT, props);
- if (createRelation.isRight()) {
- TitanOperationStatus titanOperationStatus = createRelation.right().value();
- log.debug("Failed to create calculated requirement from component instance {} to requirement {}, error: {}", componentInstanceData.getUniqueId(), requirementData.getUniqueId(), titanOperationStatus);
- return Either.right(titanOperationStatus);
- }
- return createRelation;
- }
-
- private TitanOperationStatus createCalculatedRequirementEdge(TitanVertex componentInstanceVertex, String compInstOriginId, String capabilityName, TitanVertex requirementVertex, ComponentInstance componentInstance, String occurrences,
- String minOccurrences) {
- Map<String, Object> props = new HashMap<String, Object>();
- if (capabilityName != null)
- props.put(GraphEdgePropertiesDictionary.NAME.getProperty(), capabilityName);
- if (compInstOriginId != null)
- props.put(GraphEdgePropertiesDictionary.SOURCE.getProperty(), compInstOriginId);
- if (componentInstance != null) {
- props.put(GraphEdgePropertiesDictionary.OWNER_ID.getProperty(), componentInstance.getUniqueId());
- }
- props.put(GraphEdgePropertiesDictionary.LEFT_OCCURRENCES.getProperty(), occurrences);
- props.put(GraphEdgePropertiesDictionary.REQUIRED_OCCURRENCES.getProperty(), minOccurrences);
-
- TitanOperationStatus createRelation = titanGenericDao.createEdge(componentInstanceVertex, requirementVertex, GraphEdgeLabels.CALCULATED_REQUIREMENT, props);
- if (!createRelation.equals(TitanOperationStatus.OK)) {
- log.debug("Failed to create calculated requirement from component instance {} to requirement {}, error: {}", componentInstance.getUniqueId(), capabilityName, createRelation);
- return createRelation;
- }
- return createRelation;
- }
-
- /**
- * Make a relation between service to resource instance.
- *
- * @param containerCompIdData
- * @param componentInstanceData
- * @param logicalName
- * @return
- */
- private Either<GraphRelation, TitanOperationStatus> associateContainerCompToComponentInstance(UniqueIdData containerCompIdData, ComponentInstanceData componentInstanceData, String logicalName) {
- Map<String, Object> properties = new HashMap<String, Object>();
-
- properties.put(GraphPropertiesDictionary.NAME.getProperty(), logicalName);
- Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(containerCompIdData, componentInstanceData, GraphEdgeLabels.RESOURCE_INST, properties);
-
- log.debug("After associating container component {} to resource instance {} with logical name {}. Status is {}", containerCompIdData.getUniqueId(), componentInstanceData.getUniqueId(), logicalName, createRelation);
-
- return createRelation;
- }
-
- private TitanOperationStatus associateContainerCompToComponentInstance(TitanVertex containerCompVertex, TitanVertex componentInstanceVertex, String logicalName) {
- Map<String, Object> properties = new HashMap<String, Object>();
-
- properties.put(GraphPropertiesDictionary.NAME.getProperty(), logicalName);
- TitanOperationStatus createRelation = titanGenericDao.createEdge(containerCompVertex, componentInstanceVertex, GraphEdgeLabels.RESOURCE_INST, properties);
-
- return createRelation;
- }
-
- @Override
- public String createComponentInstLogicalName(String instanceNumber, String componentInstanceName) {
-
- String logicalName = buildComponentInstanceLogicalName(instanceNumber, componentInstanceName);
-
- return logicalName;
- }
-
- private String buildComponentInstanceLogicalName(String instanceNumber, String lastToken) {
- return lastToken + " " + (instanceNumber == null ? 0 : instanceNumber);
- }
-
- private ComponentInstanceData buildComponentInstanceData(ComponentInstance resourceInstance, String componentId, String logicalName) {
-
- String ciOriginComponentUid = resourceInstance.getComponentUid();
-
- ComponentInstanceDataDefinition dataDefinition = new ComponentInstanceDataDefinition(resourceInstance);
-
- Long creationDate = resourceInstance.getCreationTime();
- if (creationDate == null) {
- creationDate = System.currentTimeMillis();
- }
- dataDefinition.setCreationTime(creationDate);
- dataDefinition.setModificationTime(creationDate);
- // dataDefinition.setResourceUid(resourceUid);
- // String replacmentlogicalName = logicalName.replaceAll(" ",
- // "_").toLowerCase();
- dataDefinition.setName(logicalName);
- if (dataDefinition.getNormalizedName() == null)
- dataDefinition.setNormalizedName(ValidationUtils.normalizeComponentInstanceName(logicalName));
- dataDefinition.setUniqueId(UniqueIdBuilder.buildResourceInstanceUniuqeId(componentId, ciOriginComponentUid, dataDefinition.getNormalizedName()));
-
- ComponentInstanceData resourceInstanceData = new ComponentInstanceData(dataDefinition);
-
- return resourceInstanceData;
- }
-
- public Either<ComponentInstance, TitanOperationStatus> removeComponentInstanceFromComponent(NodeTypeEnum containerNodeType, String containerComponentId, String componentInstanceUid) {
-
- log.debug("Going to delete component instance {} under component {}", componentInstanceUid, containerComponentId);
-
- Either<ComponentInstanceData, TitanOperationStatus> node = findResourceInstance(componentInstanceUid);
-
- if (node.isRight()) {
- TitanOperationStatus status = node.right().value();
- BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeDaoSystemError, "Remove Component Instance");
- BeEcompErrorManager.getInstance().logBeDaoSystemError("Remove Component Instance");
- log.debug("Failed to delete component instance {}. status is {}", componentInstanceUid, status);
- return Either.right(status);
- }
-
- TitanOperationStatus isComponentInstOfComponent = verifyResourceInstanceUnderComponent(containerNodeType, containerComponentId, componentInstanceUid);
- if (isComponentInstOfComponent != TitanOperationStatus.OK) {
- return Either.right(isComponentInstOfComponent);
- }
-
- TitanOperationStatus status = deleteOutgoingRelationships(containerNodeType, containerComponentId, componentInstanceUid);
- if (status != TitanOperationStatus.OK) {
- return Either.right(status);
- }
- status = deleteIncomingRelationships(containerNodeType, containerComponentId, componentInstanceUid);
- if (status != TitanOperationStatus.OK) {
- return Either.right(status);
- }
-
- // delete associated properties
- status = deleteAssociatedProperties(componentInstanceUid);
- if (status != TitanOperationStatus.OK) {
- return Either.right(status);
- }
- // delete associated properties
- status = deleteAssociatedAttributes(componentInstanceUid);
- if (status != TitanOperationStatus.OK) {
- return Either.right(status);
- }
-
- // delete associated artifacts
- status = deleteAssociatedArtifacts(componentInstanceUid);
- if (status != TitanOperationStatus.OK) {
- return Either.right(status);
- }
-
- // delete associated capability instances
- if (containerNodeType.equals(NodeTypeEnum.Resource)) {
- status = deleteAssociatedCapabilityInstances(componentInstanceUid);
- if (status != TitanOperationStatus.OK) {
- return Either.right(status);
- }
- }
-
- // delete associated properties
- status = deleteAssociatedGroupInstances(componentInstanceUid);
- if (status != TitanOperationStatus.OK) {
- return Either.right(status);
- }
-
- Either<ComponentInstanceData, TitanOperationStatus> deleteRI = titanGenericDao.deleteNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), componentInstanceUid, ComponentInstanceData.class);
-
- if (deleteRI.isRight()) {
- TitanOperationStatus deleteRiStatus = deleteRI.right().value();
- log.error("Failed to delete resource instance {}. status is {}", componentInstanceUid, deleteRiStatus);
- return Either.right(deleteRiStatus);
- }
-
- ComponentInstanceData deletedResourceInst = deleteRI.left().value();
-
- ComponentInstance resourceInstance = new ComponentInstance(deletedResourceInst.getComponentInstDataDefinition());
-
- return Either.left(resourceInstance);
- }
-
- private TitanOperationStatus deleteAssociatedGroupInstances(String componentInstanceUid) {
-
- return this.groupInstanceOperation.deleteAllGroupInstances(componentInstanceUid);
- }
-
- private TitanOperationStatus deleteAssociatedCapabilityInstances(String resourceInstanceId) {
- TitanOperationStatus status = TitanOperationStatus.OK;
-
- log.debug("Before deleting all capability instances of component istance {}.", resourceInstanceId);
- Either<List<ImmutablePair<CapabilityInstData, GraphEdge>>, TitanOperationStatus> getCapabilityInstancesRes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), resourceInstanceId,
- GraphEdgeLabels.CAPABILITY_INST, NodeTypeEnum.CapabilityInst, CapabilityInstData.class);
-
- if (getCapabilityInstancesRes.isRight() && !getCapabilityInstancesRes.right().value().equals(TitanOperationStatus.NOT_FOUND)) {
- status = getCapabilityInstancesRes.right().value();
- log.debug("Failed to retrieve capability Instances of resource instance {}. Status is {}", resourceInstanceId, status);
- }
- if (getCapabilityInstancesRes.isLeft()) {
- for (ImmutablePair<CapabilityInstData, GraphEdge> capabilityInstancePair : getCapabilityInstancesRes.left().value()) {
- Either<CapabilityInstData, TitanOperationStatus> deleteCababilityInstanceRes = capabilityInstanceOperation.deleteCapabilityInstanceFromResourceInstance(resourceInstanceId, capabilityInstancePair.getLeft().getUniqueId());
- if (deleteCababilityInstanceRes.isRight()) {
- status = deleteCababilityInstanceRes.right().value();
- }
- }
- }
- log.debug("After deleting all capability instances of component istance {}. Status is {}", resourceInstanceId, status);
- return status;
- }
-
- private TitanOperationStatus deleteAssociatedArtifacts(String resourceInstanceUid) {
-
- Either<List<ImmutablePair<ArtifactData, GraphEdge>>, TitanOperationStatus> artifactRes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), resourceInstanceUid, GraphEdgeLabels.ARTIFACT_REF,
- NodeTypeEnum.ArtifactRef, ArtifactData.class);
-
- if (artifactRes.isRight()) {
- TitanOperationStatus status = artifactRes.right().value();
- if (status != TitanOperationStatus.NOT_FOUND) {
- log.error("Failed to find artifacts of resource instance {}. status is {}", resourceInstanceUid, status);
- return status;
- }
- } else {
-
- List<ImmutablePair<ArtifactData, GraphEdge>> artifactPairs = artifactRes.left().value();
- for (ImmutablePair<ArtifactData, GraphEdge> pair : artifactPairs) {
- String uniqueId = (String) pair.left.getUniqueId();
- Either<ArtifactData, TitanOperationStatus> removeArifactFromGraph = artifactOperation.removeArtifactOnGraph(resourceInstanceUid, uniqueId, NodeTypeEnum.ResourceInstance, true);
- if (removeArifactFromGraph.isRight()) {
- TitanOperationStatus status = removeArifactFromGraph.right().value();
- log.error("Failed to delete artifact of resource instance {}. status is {}", resourceInstanceUid, status);
- return status;
- }
-
- }
- }
-
- return TitanOperationStatus.OK;
-
- }
-
- private TitanOperationStatus deleteAssociatedProperties(String resourceInstanceUid) {
- final GraphEdgeLabels edgeConectingToRI = GraphEdgeLabels.PROPERTY_VALUE;
- final NodeTypeEnum elementTypeToDelete = NodeTypeEnum.PropertyValue;
- return deleteAssociatedRIElements(elementTypeToDelete, edgeConectingToRI, resourceInstanceUid, () -> PropertyValueData.class);
-
- }
-
- private TitanOperationStatus deleteAssociatedAttributes(String resourceInstanceUid) {
- final GraphEdgeLabels edgeConectingToRI = GraphEdgeLabels.ATTRIBUTE_VALUE;
- final NodeTypeEnum elementTypeToDelete = NodeTypeEnum.AttributeValue;
- return deleteAssociatedRIElements(elementTypeToDelete, edgeConectingToRI, resourceInstanceUid, () -> AttributeValueData.class);
- }
-
- private <T extends GraphNode> TitanOperationStatus deleteAssociatedRIElements(NodeTypeEnum elementTypeToDelete, GraphEdgeLabels edgeConectingToRI, String resourceInstanceUid, Supplier<Class<T>> classGen) {
-
- Either<List<ImmutablePair<T, GraphEdge>>, TitanOperationStatus> elementsNodesRes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), resourceInstanceUid, edgeConectingToRI, elementTypeToDelete,
- classGen.get());
-
- if (elementsNodesRes.isRight()) {
- TitanOperationStatus status = elementsNodesRes.right().value();
- if (status != TitanOperationStatus.NOT_FOUND) {
- BeEcompErrorManager.getInstance().logInternalFlowError("deleteAssociatedRIElements", "Failed to find the elements of resource instance " + resourceInstanceUid + ". status is " + status, ErrorSeverity.ERROR);
- return status;
- }
- } else {
-
- List<ImmutablePair<T, GraphEdge>> relationshipNodes = elementsNodesRes.left().value();
- if (relationshipNodes != null) {
- for (ImmutablePair<T, GraphEdge> immutablePair : relationshipNodes) {
- T elementValueDataData = immutablePair.getKey();
- Either<T, TitanOperationStatus> deleteNode = titanGenericDao.deleteNode(elementValueDataData, classGen.get());
- if (deleteNode.isRight()) {
- TitanOperationStatus status = deleteNode.right().value();
- BeEcompErrorManager.getInstance().logInternalFlowError("deleteAssociatedRIElements", "Failed to delete element value node " + elementValueDataData + ". status is " + status, ErrorSeverity.ERROR);
- return status;
- }
- }
- }
-
- }
-
- return TitanOperationStatus.OK;
- }
-
- /**
- * delete all relationship instance nodes which has an outgoing edge to a given resource instance
- *
- * @param resourceInstanceUid
- * @return
- */
- private TitanOperationStatus deleteIncomingRelationships(NodeTypeEnum componentType, String componentId, String resourceInstanceUid) {
-
- Either<List<RequirementCapabilityRelDef>, TitanOperationStatus> relationsForTarget = getRelationsForTarget(resourceInstanceUid);
- if (relationsForTarget.isRight()) {
- TitanOperationStatus status = relationsForTarget.right().value();
- if (status != TitanOperationStatus.NOT_FOUND) {
- log.error("Failed to find the relationships of resource instance {}. status is {}", resourceInstanceUid, status);
- return status;
- }
- } else {
- List<RequirementCapabilityRelDef> relList = relationsForTarget.left().value();
- for (RequirementCapabilityRelDef relation : relList) {
- Either<RequirementCapabilityRelDef, StorageOperationStatus> dissociateResourceInstances = dissociateResourceInstances(componentId, componentType, relation, true);
- if (dissociateResourceInstances.isRight()) {
- log.error("failed to diassociate component instance {} and component instance {} under component {}. error is {}", relation.getFromNode(), relation.getToNode(), componentId);
- return TitanOperationStatus.GENERAL_ERROR;
- }
- }
- }
- return TitanOperationStatus.OK;
- }
-
- /**
- * delete all relationship instance nodes which has an incoming edge from a given resource instance
- *
- * @param resourceInstanceUid
- * @return
- */
- private TitanOperationStatus deleteOutgoingRelationships(NodeTypeEnum componentType, String componentId, String resourceInstanceUid) {
-
- Either<List<RequirementCapabilityRelDef>, TitanOperationStatus> relationsForSource = getRelationsForSource(resourceInstanceUid);
- if (relationsForSource.isRight()) {
- TitanOperationStatus status = relationsForSource.right().value();
- if (status != TitanOperationStatus.NOT_FOUND) {
- log.error("Failed to find the relationships of resource instance {}. status is {}", resourceInstanceUid, status);
- return status;
- }
- } else {
- List<RequirementCapabilityRelDef> relList = relationsForSource.left().value();
- for (RequirementCapabilityRelDef relation : relList) {
- Either<RequirementCapabilityRelDef, StorageOperationStatus> dissociateResourceInstances = dissociateResourceInstances(componentId, componentType, relation, true);
- if (dissociateResourceInstances.isRight()) {
- log.error("failed to diassociate component instance {} and component instance {} under component {}. error is {}", relation.getFromNode(), relation.getToNode(), componentId);
- return TitanOperationStatus.GENERAL_ERROR;
- }
- }
- }
- return TitanOperationStatus.OK;
- }
-
- /**
- * delete relationship instance nodes
- *
- * @param relationshipNodes
- * @return
- */
- private TitanOperationStatus deleteRelationshipNodes(List<ImmutablePair<RelationshipInstData, GraphEdge>> relationshipNodes) {
-
- if (relationshipNodes != null) {
- for (ImmutablePair<RelationshipInstData, GraphEdge> immutablePair : relationshipNodes) {
- RelationshipInstData relationshipTypeImplData = immutablePair.getKey();
- Either<RelationshipInstData, TitanOperationStatus> deleteNode = titanGenericDao.deleteNode(relationshipTypeImplData, RelationshipInstData.class);
- if (deleteNode.isRight()) {
- TitanOperationStatus status = deleteNode.right().value();
- log.error("Failed to delete relationship node {}. status is {}", relationshipTypeImplData, status);
- return status;
- }
- }
- }
-
- return TitanOperationStatus.OK;
- }
-
- public Either<List<RelationshipInstData>, TitanOperationStatus> disconnectResourcesInService(String componentId, NodeTypeEnum nodeType, RequirementCapabilityRelDef requirementDef) {
-
- if (requirementDef.getRelationships() == null) {
- log.debug("No relation pair in request [ {} ]", requirementDef);
- return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT);
- }
-
- String fromResInstanceUid = requirementDef.getFromNode();
- String toResInstanceUid = requirementDef.getToNode();
-
- // DE191707
- TitanOperationStatus isResourceInstOfService = verifyResourceInstanceUnderComponent(nodeType, componentId, fromResInstanceUid);
- if (isResourceInstOfService != TitanOperationStatus.OK) {
- return Either.right(isResourceInstOfService);
- }
- isResourceInstOfService = verifyResourceInstanceUnderComponent(nodeType, componentId, toResInstanceUid);
- if (isResourceInstOfService != TitanOperationStatus.OK) {
- return Either.right(isResourceInstOfService);
- }
-
- List<RequirementAndRelationshipPair> relationPairList = requirementDef.getRelationships();
-
- Either<TitanVertex, TitanOperationStatus> riFrom = titanGenericDao.getVertexByProperty(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), fromResInstanceUid);
- if (riFrom.isRight()) {
- log.debug("Failed to fetch component instance {}. error {}", fromResInstanceUid, riFrom.right().value());
- return Either.right(riFrom.right().value());
- }
- Iterator<Edge> edgeIter = riFrom.left().value().edges(Direction.OUT, GraphEdgeLabels.RELATIONSHIP_INST.getProperty());
- if (edgeIter == null) {
- log.debug("No edges with label {} for owner RI {}", GraphEdgeLabels.CALCULATED_REQUIREMENT_FULLFILLED.getProperty(), fromResInstanceUid);
- return Either.right(TitanOperationStatus.NOT_FOUND);
- }
- List<RelationshipInstData> deletedRelations = new ArrayList<>();
- Set<String> vertexToDelete = new HashSet<String>();
- while (edgeIter.hasNext()) {
- TitanEdge edge = (TitanEdge) edgeIter.next();
- String name = (String) edge.property(GraphEdgePropertiesDictionary.NAME.getProperty()).value();
- for (RequirementAndRelationshipPair relationPair : relationPairList) {
- if (relationPair.getRequirement().equals(name)) {
- TitanVertex inVertex = edge.inVertex();
- String requirementId = (String) titanGenericDao.getProperty(inVertex, GraphPropertiesDictionary.REQUIREMENT_ID.getProperty());
- String capabiltyId = (String) titanGenericDao.getProperty(inVertex, GraphPropertiesDictionary.CAPABILITY_ID.getProperty());
- String requirementOwnerId = (String) titanGenericDao.getProperty(inVertex, GraphPropertiesDictionary.REQUIREMENT_OWNER_ID.getProperty());
- String capabiltyOwnerId = (String) titanGenericDao.getProperty(inVertex, GraphPropertiesDictionary.CAPABILITY_OWNER_ID.getProperty());
- String relationVertexId = (String) titanGenericDao.getProperty(inVertex, GraphPropertiesDictionary.UNIQUE_ID.getProperty());
-
- // verify vs requirement id and owner ids. ( for
- // requirements with same name)
- if (requirementId.equals(relationPair.getRequirementUid()) && capabiltyId.equals(relationPair.getCapabilityUid()) && requirementOwnerId.equals(relationPair.getRequirementOwnerId())
- && capabiltyOwnerId.equals(relationPair.getCapabilityOwnerId())) {
- vertexToDelete.add(relationVertexId);
- }
- }
- }
- }
- log.debug("relation node with ids: {} are going to be deleted", vertexToDelete);
- for (String relationVertexId : vertexToDelete) {
- // remove relation vertex
- Either<RelationshipInstData, TitanOperationStatus> relationNode = titanGenericDao.deleteNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.RelationshipInst), relationVertexId, RelationshipInstData.class);
- if (relationNode.isRight()) {
- log.debug("Failed to delete relation node with id {}. error {}", relationVertexId, relationNode.right().value());
- return Either.right(relationNode.right().value());
- }
- RelationshipInstData deletedRelation = relationNode.left().value();
- deletedRelations.add(deletedRelation);
- }
- if (deletedRelations.size() > 0) {
- return Either.left(deletedRelations);
- }
- return Either.right(TitanOperationStatus.NOT_FOUND);
- }
-
- @Override
- public Either<RequirementCapabilityRelDef, StorageOperationStatus> dissociateResourceInstances(String componentId, NodeTypeEnum nodeType, RequirementCapabilityRelDef requirementDef, boolean inTransaction) {
-
- String fromResInstanceUid = requirementDef.getFromNode();
- String toResInstanceUid = requirementDef.getToNode();
- String requirement = requirementDef.getRelationships().get(0).getRequirement();
- Either<RequirementCapabilityRelDef, StorageOperationStatus> result = null;
- try {
-
- Either<List<RelationshipInstData>, TitanOperationStatus> dissociateRes = disconnectResourcesInService(componentId, nodeType, requirementDef);
- if (dissociateRes.isRight()) {
- TitanOperationStatus status = dissociateRes.right().value();
- log.error("Failed to dissociate resource instance {} from resource instance {} in service {}. status is {}", fromResInstanceUid, toResInstanceUid, componentId, status);
- BeEcompErrorManager.getInstance().logBeDaoSystemError("dissociateComponentInstances");
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
- StorageOperationStatus updateCalculatedCapReqResult = updateCalculatedCapReq(requirementDef, false);
- if (!updateCalculatedCapReqResult.equals(StorageOperationStatus.OK)) {
- BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeDaoSystemError, "dissociateComponentInstances");
- BeEcompErrorManager.getInstance().logBeDaoSystemError("dissociateComponentInstances");
- log.debug("Failed to dissociate component instances. {}. status is {}", requirementDef, updateCalculatedCapReqResult);
- result = Either.right(updateCalculatedCapReqResult);
- return result;
- }
-
- StorageOperationStatus status;
- status = updateCustomizationUUID(requirementDef.getFromNode());
- if (status != StorageOperationStatus.OK) {
- result = Either.right(status);
- return result;
- }
- status = updateCustomizationUUID(requirementDef.getToNode());
- if (status != StorageOperationStatus.OK) {
- result = Either.right(status);
- return result;
- }
-
- List<RelationshipInstData> relationshipInstData = dissociateRes.left().value();
- RequirementCapabilityRelDef capabilityRelDef = buildCapabilityResult(fromResInstanceUid, toResInstanceUid, requirement, relationshipInstData);
-
- result = Either.left(capabilityRelDef);
-
- return result;
-
- } finally {
- if (false == inTransaction) {
- commitOrRollback(result);
- }
- }
-
- }
-
- private StorageOperationStatus updateCalculatedCapReq(RequirementCapabilityRelDef capabilityRelDef, boolean associate) {
- GraphEdgeLabels requirmentNewLabel = associate ? GraphEdgeLabels.CALCULATED_REQUIREMENT_FULLFILLED : GraphEdgeLabels.CALCULATED_REQUIREMENT;
-
- GraphEdgeLabels requirmentCurrentLabel = associate ? GraphEdgeLabels.CALCULATED_REQUIREMENT : GraphEdgeLabels.CALCULATED_REQUIREMENT_FULLFILLED;
-
- GraphEdgeLabels capabilityNewLabel = associate ? GraphEdgeLabels.CALCULATED_CAPABILITY_FULLFILLED : GraphEdgeLabels.CALCULATED_CAPABILITY;
-
- GraphEdgeLabels capabilityCurrentLabel = associate ? GraphEdgeLabels.CALCULATED_CAPABILITY : GraphEdgeLabels.CALCULATED_CAPABILITY_FULLFILLED;
-
- List<RequirementAndRelationshipPair> relationships = capabilityRelDef.getRelationships();
- for (RequirementAndRelationshipPair pair : relationships) {
- StorageOperationStatus status = updateRequirementEdges(requirmentNewLabel, requirmentCurrentLabel, pair, capabilityRelDef.getFromNode());
- if (!status.equals(StorageOperationStatus.OK)) {
- return status;
- }
- status = updateCapabiltyEdges(capabilityNewLabel, capabilityCurrentLabel, pair, capabilityRelDef.getToNode());
- if (!status.equals(StorageOperationStatus.OK)) {
- return status;
- }
- }
- return StorageOperationStatus.OK;
- }
-
- private StorageOperationStatus updateRequirementEdges(GraphEdgeLabels requirmentNewLabel, GraphEdgeLabels requirmentCurrentLabel, RequirementAndRelationshipPair pair, String requirementOwnerId) {
- Either<TitanVertex, TitanOperationStatus> reqOwnerRI = titanGenericDao.getVertexByProperty(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), requirementOwnerId);
- if (reqOwnerRI.isRight()) {
- log.debug("Failed to fetch requirment Owner by Id {} error {}", requirementOwnerId, reqOwnerRI.right().value());
- return DaoStatusConverter.convertTitanStatusToStorageStatus(reqOwnerRI.right().value());
- }
- Iterator<Edge> edgeIter = reqOwnerRI.left().value().edges(Direction.OUT, requirmentCurrentLabel.name(), requirmentNewLabel.name());
- if (edgeIter == null) {
- log.debug("No edges with label {} for owner RI {}", requirmentCurrentLabel, requirementOwnerId);
- return StorageOperationStatus.GENERAL_ERROR;
- }
- boolean associate = requirmentNewLabel.equals(GraphEdgeLabels.CALCULATED_REQUIREMENT_FULLFILLED) ? true : false;
- while (edgeIter.hasNext()) {
- TitanEdge edge = (TitanEdge) edgeIter.next();
- String name = (String) edge.property(GraphEdgePropertiesDictionary.NAME.getProperty()).value();
- if (pair.getRequirement().equals(name)) {
- TitanVertex reqVertex = edge.inVertex();
- String requirementId = (String) titanGenericDao.getProperty(reqVertex, GraphPropertiesDictionary.UNIQUE_ID.getProperty());
- // verify vs requirement id . ( for requirements with same name)
- if (requirementId.equals(pair.getRequirementUid())) {
- String ownerIdOnEdge = (String) edge.value(GraphEdgePropertiesDictionary.OWNER_ID.getProperty());
- if (ownerIdOnEdge.equals(pair.getRequirementOwnerId())) {
- String requiredOccurrences = (String) titanGenericDao.getProperty(edge, GraphEdgePropertiesDictionary.REQUIRED_OCCURRENCES.getProperty());
- String leftOccurrences = (String) titanGenericDao.getProperty(edge, GraphEdgePropertiesDictionary.LEFT_OCCURRENCES.getProperty());
-
- String requiredOccurrencesNew = "0";
- String leftOccurrencesNew = RequirementDataDefinition.MAX_DEFAULT_OCCURRENCES;
- if (requiredOccurrences != null) {
- Integer iOccurrences = Integer.parseInt(requiredOccurrences);
- if (associate) {
- if (iOccurrences > 0) {
- iOccurrences--;
- requiredOccurrencesNew = iOccurrences.toString();
- }
- } else {
- String reqMinOccurrences = (String) titanGenericDao.getProperty(reqVertex, GraphPropertiesDictionary.MIN_OCCURRENCES.getProperty());
- if (reqMinOccurrences == null) {
- reqMinOccurrences = RequirementDataDefinition.MIN_OCCURRENCES;
- }
- if (Integer.parseInt(reqMinOccurrences) > iOccurrences) {
- iOccurrences++;
- requiredOccurrencesNew = iOccurrences.toString();
- }
- }
- }
- Map<String, Object> properties = titanGenericDao.getProperties(edge);
- properties.put(GraphEdgePropertiesDictionary.REQUIRED_OCCURRENCES.getProperty(), requiredOccurrencesNew);
-
- if (leftOccurrences != null && !leftOccurrences.equals(RequirementDataDefinition.MAX_OCCURRENCES)) {
- Integer iOccurrences = Integer.parseInt(leftOccurrences);
- if (associate) {
- if (iOccurrences > 0) {
- iOccurrences--;
- }
- } else {
- iOccurrences++;
- }
- leftOccurrencesNew = iOccurrences.toString();
- properties.put(GraphEdgePropertiesDictionary.LEFT_OCCURRENCES.getProperty(), leftOccurrencesNew);
- if ((associate && iOccurrences == 0) || (!associate && iOccurrences == 1)) {
- // move edge to full filled state
- TitanVertex outVertex = edge.outVertex();
- TitanEdge newEdge = outVertex.addEdge(requirmentNewLabel.getProperty(), reqVertex);
- titanGenericDao.setProperties(newEdge, properties);
- edge.remove();
- } else {
- titanGenericDao.setProperties(edge, properties);
- }
- } else {
- leftOccurrencesNew = leftOccurrences;
- properties.put(GraphEdgePropertiesDictionary.LEFT_OCCURRENCES.getProperty(), leftOccurrencesNew);
- titanGenericDao.setProperties(edge, properties);
- }
- break;
- }
- }
- }
- }
- return StorageOperationStatus.OK;
-
- }
-
- private StorageOperationStatus updateCapabiltyEdges(GraphEdgeLabels capabiltyNewLabel, GraphEdgeLabels capabiltyCurrentLabel, RequirementAndRelationshipPair pair, String capabiltyOwnerId) {
- Either<TitanVertex, TitanOperationStatus> capOwnerRI = titanGenericDao.getVertexByProperty(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), capabiltyOwnerId);
- if (capOwnerRI.isRight()) {
- log.debug("Failed to fetch requirment Owner by Id {}. error {}", capabiltyOwnerId, capOwnerRI.right().value());
- return DaoStatusConverter.convertTitanStatusToStorageStatus(capOwnerRI.right().value());
- }
- Iterator<Edge> edgeIter = capOwnerRI.left().value().edges(Direction.OUT, capabiltyCurrentLabel.name(), capabiltyNewLabel.name());
- if (edgeIter == null) {
- log.debug("No edges with label {} for owner RI {}", capabiltyCurrentLabel, capabiltyOwnerId);
- return StorageOperationStatus.GENERAL_ERROR;
- }
- boolean associate = capabiltyNewLabel.equals(GraphEdgeLabels.CALCULATED_CAPABILITY_FULLFILLED) ? true : false;
-
- while (edgeIter.hasNext()) {
- TitanEdge edge = (TitanEdge) edgeIter.next();
- TitanVertex capVertex = edge.inVertex();
- // edge.property(GraphEdgePropertiesDictionary.NAME.getProperty()).value();
-
- String capabiltyId = (String) titanGenericDao.getProperty(capVertex, GraphPropertiesDictionary.UNIQUE_ID.getProperty());
- // verify vs capability id . ( for capabilty with same name)
- if (capabiltyId.equals(pair.getCapabilityUid())) {
- String ownerIdOnEdge = (String) titanGenericDao.getProperty(edge, GraphEdgePropertiesDictionary.OWNER_ID.getProperty());
- if (ownerIdOnEdge.equals(pair.getCapabilityOwnerId())) {
-
- String requiredOccurrences = (String) titanGenericDao.getProperty(edge, GraphEdgePropertiesDictionary.REQUIRED_OCCURRENCES.getProperty());
- String leftOccurrences = (String) titanGenericDao.getProperty(edge, GraphEdgePropertiesDictionary.LEFT_OCCURRENCES.getProperty());
-
- String requiredOccurrencesNew = "0";
- String leftOccurrencesNew = CapabilityDataDefinition.MAX_OCCURRENCES;
- if (requiredOccurrences != null) {
- Integer iOccurrences = Integer.parseInt(requiredOccurrences);
- if (associate) {
- if (iOccurrences > 0) {
- iOccurrences--;
- requiredOccurrencesNew = iOccurrences.toString();
- }
- } else {
- String reqMinOccurrences = (String) titanGenericDao.getProperty(capVertex, GraphPropertiesDictionary.MIN_OCCURRENCES.getProperty());
- if (reqMinOccurrences == null) {
- reqMinOccurrences = CapabilityDataDefinition.MIN_OCCURRENCES;
- }
- if (Integer.parseInt(reqMinOccurrences) > iOccurrences) {
- iOccurrences++;
- requiredOccurrencesNew = iOccurrences.toString();
- }
- }
- }
- Map<String, Object> properties = titanGenericDao.getProperties(edge);
- properties.put(GraphEdgePropertiesDictionary.REQUIRED_OCCURRENCES.getProperty(), requiredOccurrencesNew);
-
- if (leftOccurrences != null && !leftOccurrences.equals(CapabilityDataDefinition.MAX_OCCURRENCES)) {
- Integer iOccurrences = Integer.parseInt(leftOccurrences);
- if (associate) {
- if (iOccurrences > 0) {
- iOccurrences--;
- }
- } else {
- iOccurrences++;
- }
- leftOccurrencesNew = iOccurrences.toString();
- properties.put(GraphEdgePropertiesDictionary.LEFT_OCCURRENCES.getProperty(), leftOccurrencesNew);
- if ((associate && iOccurrences == 0) || (!associate && iOccurrences == 1)) {
- // move edge to full filled state
- TitanVertex outVertex = edge.outVertex();
- TitanEdge newEdge = outVertex.addEdge(capabiltyNewLabel.getProperty(), capVertex);
- titanGenericDao.setProperties(newEdge, properties);
- edge.remove();
- } else {
- titanGenericDao.setProperties(edge, properties);
- }
- } else {
- properties.put(GraphEdgePropertiesDictionary.LEFT_OCCURRENCES.getProperty(), leftOccurrencesNew);
- titanGenericDao.setProperties(edge, properties);
- }
- break;
- }
- }
- }
- return StorageOperationStatus.OK;
- }
-
- @Override
- public Either<RequirementCapabilityRelDef, StorageOperationStatus> dissociateResourceInstances(String serviceId, NodeTypeEnum nodeType, RequirementCapabilityRelDef requirementDef) {
-
- return dissociateResourceInstances(serviceId, nodeType, requirementDef, false);
- }
-
- private RequirementCapabilityRelDef buildCapabilityResult(String fromResInstanceUid, String toResInstanceUid, String requirement, List<RelationshipInstData> relationshipInstDataList) {
-
- RequirementCapabilityRelDef capabilityRelDef = new RequirementCapabilityRelDef();
- capabilityRelDef.setFromNode(fromResInstanceUid);
- capabilityRelDef.setToNode(toResInstanceUid);
- List<RequirementAndRelationshipPair> relationships = new ArrayList<RequirementAndRelationshipPair>();
- for (RelationshipInstData relationshipInstData : relationshipInstDataList) {
- RelationshipImpl relationshipImpl = new RelationshipImpl();
- relationshipImpl.setType(relationshipInstData.getType());
- RequirementAndRelationshipPair reqRel = new RequirementAndRelationshipPair(requirement, relationshipImpl);
- capabilityRelDef.setRelationships(relationships);
- reqRel.setCapabilityOwnerId(relationshipInstData.getCapabilityOwnerId());
- reqRel.setCapabilityUid(relationshipInstData.getCapabiltyId());
- reqRel.setRequirementOwnerId(relationshipInstData.getRequirementOwnerId());
- reqRel.setRequirementUid(relationshipInstData.getRequirementId());
- relationships.add(reqRel);
- }
- return capabilityRelDef;
-
- }
-
- public Either<RelationshipInstData, TitanOperationStatus> connectResourcesInService(String componentId, NodeTypeEnum nodeType, String fromResInstanceUid, String toResInstanceUid, RequirementAndRelationshipPair relationPair) {
- String relationship = null;
- String requirement = relationPair.getRequirement();
- if (relationPair.getRelationship() != null) {
- relationship = relationPair.getRelationship().getType();
- }
-
- log.debug("Going to associate resource instance {} to resource instance {} under component {}. Requirement is {}.", fromResInstanceUid, toResInstanceUid, componentId, requirement);
-
- Either<ComponentInstanceData, TitanOperationStatus> fromResourceInstDataRes = findMandatoryResourceInstData(fromResInstanceUid);
- if (fromResourceInstDataRes.isRight()) {
- TitanOperationStatus status = fromResourceInstDataRes.right().value();
- log.error("Failed to find resource instance {}. status is {}", fromResInstanceUid, status);
- return Either.right(status);
- }
- ComponentInstanceData fromCI = fromResourceInstDataRes.left().value();
- ComponentInstanceData fromResourceInstanceData = fromCI;
- Either<ComponentInstanceData, TitanOperationStatus> toResourceInstDataRes = findMandatoryResourceInstData(toResInstanceUid);
- if (toResourceInstDataRes.isRight()) {
- TitanOperationStatus status = toResourceInstDataRes.right().value();
- log.error("Failed to find resource instance {}. status is {}", toResInstanceUid, status);
- return Either.right(status);
- }
- ComponentInstanceData toCI = toResourceInstDataRes.left().value();
- ComponentInstanceData toResourceInstanceData = toCI;
- // THE component NodeTypeEnum should be sent
- TitanOperationStatus isResourceInstOfService = verifyResourceInstanceUnderComponent(nodeType, componentId, fromResInstanceUid);
- if (isResourceInstOfService != TitanOperationStatus.OK) {
- return Either.right(isResourceInstOfService);
- }
- isResourceInstOfService = verifyResourceInstanceUnderComponent(nodeType, componentId, toResInstanceUid);
- if (isResourceInstOfService != TitanOperationStatus.OK) {
- return Either.right(isResourceInstOfService);
- }
-
- Either<ImmutablePair<RelationshipTypeData, String>, TitanOperationStatus> isValidRes = validateRequirementVsCapability(fromResourceInstanceData, toResourceInstanceData, requirement, relationship, relationPair);
- if (isValidRes.isRight()) {
- TitanOperationStatus status = isValidRes.right().value();
- log.error("Failed to validate requirement {} between resource instance {} to resource instance {}. status is {}", requirement, fromResInstanceUid, toResInstanceUid, status);
- return Either.right(status);
- }
-
- RelationshipTypeData relationshipTypeData = isValidRes.left().value().getKey();
- String capabilityName = isValidRes.left().value().getValue();
- RelationshipInstData relationshipInstData = buildRelationshipInstData(fromResInstanceUid, requirement, relationshipTypeData, relationPair);
- Either<RelationshipInstData, TitanOperationStatus> createNode = createRelationshipInstData(fromCI, relationshipInstData, relationshipTypeData, requirement);
-
- if (createNode.isRight()) {
- return Either.right(createNode.right().value());
- }
- RelationshipInstData createdRelInstData = createNode.left().value();
- Either<GraphRelation, TitanOperationStatus> associateResInst = associateRelationshipInstToTarget(toCI, requirement, capabilityName, createdRelInstData);
-
- if (associateResInst.isRight()) {
- TitanOperationStatus status = associateResInst.right().value();
- log.error("Failed to associate relationship instance {} to target node {}. status is {}", createdRelInstData.getUniqueId(), toResInstanceUid, status);
- return Either.right(status);
- }
-
- return Either.left(createNode.left().value());
- }
-
- private TitanOperationStatus verifyResourceInstanceUnderComponent(NodeTypeEnum containerNodeType, String containerComponentId, String resInstanceUid) {
-
- Either<ImmutablePair<ComponentMetadataData, GraphEdge>, TitanOperationStatus> parentNode = titanGenericDao.getParentNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), resInstanceUid, GraphEdgeLabels.RESOURCE_INST,
- containerNodeType, ComponentMetadataData.class);
-
- if (parentNode.isRight()) {
- TitanOperationStatus status = parentNode.right().value();
- log.error("Failed to find the service associated to the resource instance {}. status is {}", resInstanceUid, status);
- return status;
- }
-
- ImmutablePair<ComponentMetadataData, GraphEdge> componentsRes = parentNode.left().value();
- ComponentMetadataData componentMetadataData = componentsRes.getKey();
- String uniqueId = (String) componentMetadataData.getUniqueId();
-
- if (containerComponentId.equals(uniqueId)) {
- return TitanOperationStatus.OK;
- } else {
- BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeIncorrectServiceError, "Resource Instance - verifyResourceInstanceUnderComponent", containerComponentId);
- BeEcompErrorManager.getInstance().logBeIncorrectComponentError("Resource Instance - verifyResourceInstanceUnderComponent", containerNodeType.getName(), containerComponentId);
- log.debug("The provided component id {} is not equal to the component ({}) which associated to resource instance {}", containerComponentId, uniqueId, resInstanceUid);
- return TitanOperationStatus.INVALID_ID;
- }
-
- }
-
- /**
- * find the resource instance node in graph.
- *
- * @param resInstanceUid
- * @return
- */
- private Either<ComponentInstanceData, TitanOperationStatus> findMandatoryResourceInstData(String resInstanceUid) {
- Either<ComponentInstanceData, TitanOperationStatus> resStatus = findResourceInstance(resInstanceUid);
- if (resStatus.isRight()) {
- TitanOperationStatus status = resStatus.right().value();
- if (status == TitanOperationStatus.NOT_FOUND) {
- return Either.right(TitanOperationStatus.INVALID_ID);
- }
- return Either.right(status);
- }
- ComponentInstanceData riData = resStatus.left().value();
- return Either.left(riData);
- }
-
- /**
- * associate relationship instance node to the target resource instance node.
- *
- * @param toResInstance
- * @param requirement
- * @param relInstData
- * @return
- */
- private Either<GraphRelation, TitanOperationStatus> associateRelationshipInstToTarget(ComponentInstanceData toResInstance, String requirement, String capabilityName, RelationshipInstData relInstData) {
-
- Map<String, Object> props = new HashMap<String, Object>();
- props.put(GraphPropertiesDictionary.NAME.getProperty(), capabilityName);
- Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(relInstData, toResInstance, GraphEdgeLabels.CAPABILITY_NODE, props);
- log.debug("After creatingrelation between relationship instance {} to target node {}", relInstData.getUniqueId(), toResInstance.getUniqueId());
-
- return createRelation;
-
- }
-
- /**
- * create reslationship instance node and associate the reosurce instance node to it.
- *
- * @param resInstance
- * @param relationshipInstData
- * @param relationshipTypeData
- * @param requirementName
- * @return
- */
- private Either<RelationshipInstData, TitanOperationStatus> createRelationshipInstData(ComponentInstanceData resInstance, RelationshipInstData relationshipInstData, RelationshipTypeData relationshipTypeData, String requirementName) {
-
- Either<RelationshipInstData, TitanOperationStatus> createNode = titanGenericDao.createNode(relationshipInstData, RelationshipInstData.class);
- if (createNode.isRight()) {
- TitanOperationStatus status = createNode.right().value();
- log.error("Failed to create relationship instance node in graph. status is {}", status);
- return Either.right(status);
- }
-
- RelationshipInstData createdRelationshipInst = createNode.left().value();
-
- Map<String, Object> properties = new HashMap<String, Object>();
- properties.put("name", requirementName);
- Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(resInstance, createdRelationshipInst, GraphEdgeLabels.RELATIONSHIP_INST, properties);
- if (createRelation.isRight()) {
- TitanOperationStatus status = createRelation.right().value();
- log.error("Failed to associate resource instance {} to relationship instance {}. status is {}", resInstance.getUniqueIdKey(), createdRelationshipInst.getUniqueId(), status);
- return Either.right(status);
- }
-
- return Either.left(createdRelationshipInst);
- }
-
- /**
- * check whether we can associate resource instances for a given requirement.
- *
- * 1. check the source resource instance contains the requirement
- *
- * 2. check the target resource instance contains a capability with the same name as the requirement
- *
- * @param fromResInstance
- * @param toResInstance
- * @param requirement
- * @param relationship
- * @param relationPair
- * @return
- */
- private Either<ImmutablePair<RelationshipTypeData, String>, TitanOperationStatus> validateRequirementVsCapability(ComponentInstanceData fromResInstance, ComponentInstanceData toResInstance, String requirement, String relationship,
- RequirementAndRelationshipPair relationPair) {
-
- String fromResourceUid = fromResInstance.getComponentInstDataDefinition().getComponentUid();
-
- String toResourceUid = toResInstance.getComponentInstDataDefinition().getComponentUid();
- Either<CapabilityDefinition, StorageOperationStatus> capabilityDefinitionE = capabilityOperation.getCapability(relationPair.getCapabilityUid(), true);
- if (capabilityDefinitionE.isRight()) {
- log.error("The capability cannot be found {}", relationPair.getCapabilityUid());
- return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT);
- }
- Either<RequirementDefinition, TitanOperationStatus> requirementDefinitionE = requirementOperation.getRequirement(relationPair.getRequirementUid());
- if (requirementDefinitionE.isRight()) {
- log.error("The requirement cannot be found {}", relationPair.getRequirementUid());
- return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT);
- }
- RequirementDefinition requirementDefinition = requirementDefinitionE.left().value();
- String fetchedRequirementRelationship = requirementDefinition.getRelationship();
-
- String fetchedRequirementCapability = requirementDefinition.getCapability();
- // String fetchedRequirementNodeName = requirementDefinition.getNode();
-
- TitanOperationStatus status = validateAvailableRequirement(fromResInstance, relationPair);
- if (!status.equals(TitanOperationStatus.OK)) {
- log.error("The requirement isn't available, status {}", status);
- return Either.right(status);
- }
- status = validateAvailableCapabilty(toResInstance, relationPair);
- if (!status.equals(TitanOperationStatus.OK)) {
- log.error("The capabilty isn't available, status {}", status);
- return Either.right(status);
- }
- Either<ComponentInstanceData, TitanOperationStatus> originCapabilty = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), relationPair.getCapabilityOwnerId(), ComponentInstanceData.class);
- if (originCapabilty.isRight()) {
- log.error("Failed to fetch the origin resource for capabilty resource instance with id {}, error {}", relationPair.getCapabilityOwnerId(), originCapabilty.right().value());
- return Either.right(originCapabilty.right().value());
- }
- // String originCapabId =
- // originCapabilty.left().value().getComponentInstDataDefinition().getComponentUid();
-
- // List<String> capabilitySources = new ArrayList<>();
- // TitanOperationStatus capabiltySourcesResult =
- // resourceOperation.fillResourceDerivedListFromGraph(originCapabId,
- // capabilitySources);
- // if (!TitanOperationStatus.OK.equals(capabiltySourcesResult)) {
- // log.error("Failed to fill capabilty cources for resource with id " +
- // originCapabId + " , error " + capabiltySourcesResult);
- // return Either.right(originCapabilty.right().value());
- // }
- CapabilityDefinition capabilityDefinition = capabilityDefinitionE.left().value();
- String capabilityName = requirement;
-
- log.debug("The capability {} of resource {} appropriates to requirement {} on resource {}", capabilityDefinition, toResourceUid, requirement, fromResourceUid);
- String capabilityType = capabilityDefinition.getType();
-
- if (false == fetchedRequirementCapability.equals(capabilityType)) {
- log.error("The capability type in the requirement ({}) does not equal to the capability on the resource {} ({})", fetchedRequirementCapability, toResourceUid, capabilityType);
- return Either.right(TitanOperationStatus.MATCH_NOT_FOUND);
- }
-
- // if (fetchedRequirementNodeName != null &&
- // !capabilitySources.contains(fetchedRequirementNodeName)) {
- // log.error("The target resource instance " + toResourceUid + " is not
- // of type " + fetchedRequirementNodeName);
- // return Either.right(TitanOperationStatus.MATCH_NOT_FOUND);
- // }
-
- RelationshipTypeData relationshipTypeData = new RelationshipTypeData();
- relationshipTypeData.getRelationshipTypeDataDefinition().setType(fetchedRequirementRelationship);
-
- ImmutablePair<RelationshipTypeData, String> result = new ImmutablePair<RelationshipTypeData, String>(relationshipTypeData, capabilityName);
- return Either.left(result);
- }
-
- private TitanOperationStatus validateAvailableRequirement(ComponentInstanceData fromResInstance, RequirementAndRelationshipPair relationPair) {
- Either<TitanVertex, TitanOperationStatus> fromRi = titanGenericDao.getVertexByProperty(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), fromResInstance.getUniqueId());
- if (fromRi.isRight()) {
- log.debug("Failed to fetch component instance {} error {}", fromResInstance.getUniqueId(), fromRi.right().value());
- return fromRi.right().value();
- }
- Iterator<Edge> edgeIter = fromRi.left().value().edges(Direction.OUT, GraphEdgeLabels.CALCULATED_REQUIREMENT.name());
- if (edgeIter == null || !edgeIter.hasNext()) {
- log.debug("No available CALCULATED_REQUIREMENT edges. All full filled for RI {}", fromResInstance.getUniqueId());
- return TitanOperationStatus.MATCH_NOT_FOUND;
- }
- boolean exist = false;
- while (edgeIter.hasNext()) {
- Edge edge = edgeIter.next();
- TitanVertex reqVertex = (TitanVertex) edge.inVertex();
- String reqId = (String) titanGenericDao.getProperty(reqVertex, UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Requirement));
- if (reqId.equals(relationPair.getRequirementUid())) {
- String ownerIdOnEdge = (String) edge.value(GraphEdgePropertiesDictionary.OWNER_ID.getProperty());
- if (ownerIdOnEdge.equals(relationPair.getRequirementOwnerId())) {
- String leftOccurrences = (String) titanGenericDao.getProperty(edge, GraphEdgePropertiesDictionary.LEFT_OCCURRENCES.getProperty());
- if (leftOccurrences != null && !leftOccurrences.equals(RequirementDataDefinition.MAX_OCCURRENCES)) {
- Integer leftIntValue = Integer.parseInt(leftOccurrences);
- if (leftIntValue > 0) {
- exist = true;
- }
- } else {
- exist = true;
- }
- break;
- }
- }
- }
- return exist ? TitanOperationStatus.OK : TitanOperationStatus.MATCH_NOT_FOUND;
- }
-
- private TitanOperationStatus validateAvailableCapabilty(ComponentInstanceData toResInstance, RequirementAndRelationshipPair relationPair) {
- Either<TitanVertex, TitanOperationStatus> fromRi = titanGenericDao.getVertexByProperty(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), toResInstance.getUniqueId());
- if (fromRi.isRight()) {
- log.debug("Failed to fetch component instance {}. error {}", toResInstance.getUniqueId(), fromRi.right().value());
- return fromRi.right().value();
- }
- Iterator<Edge> edgeIter = fromRi.left().value().edges(Direction.OUT, GraphEdgeLabels.CALCULATED_CAPABILITY.name());
- if (edgeIter == null || !edgeIter.hasNext()) {
- log.debug("No available CALCULATED_CAPABILITY edges. All full filled for RI {}", toResInstance.getUniqueId());
- return TitanOperationStatus.MATCH_NOT_FOUND;
- }
- boolean exist = false;
- while (edgeIter.hasNext()) {
- Edge edge = edgeIter.next();
- TitanVertex reqVertex = (TitanVertex) edge.inVertex();
- String capId = (String) titanGenericDao.getProperty(reqVertex, UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Capability));
- if (capId.equals(relationPair.getCapabilityUid())) {
- String ownerIdOnEdge = (String) edge.value(GraphEdgePropertiesDictionary.OWNER_ID.getProperty());
- if (ownerIdOnEdge.equals(relationPair.getCapabilityOwnerId())) {
- String leftOccurrences = (String) titanGenericDao.getProperty(edge, GraphEdgePropertiesDictionary.LEFT_OCCURRENCES.getProperty());
- if (leftOccurrences != null && !leftOccurrences.equals(CapabilityDataDefinition.MAX_OCCURRENCES)) {
- Integer leftIntValue = Integer.parseInt(leftOccurrences);
- if (leftIntValue > 0) {
- exist = true;
- }
- } else {
- exist = true;
- }
- break;
- }
- }
- }
- return exist ? TitanOperationStatus.OK : TitanOperationStatus.NOT_FOUND;
- }
-
- private List<ImmutablePair<String, CapabilityDefinition>> findCapabilityOfType(Map<String, CapabilityDefinition> capabilities, String fetchedRequirementCapability) {
-
- List<ImmutablePair<String, CapabilityDefinition>> result = new ArrayList<ImmutablePair<String, CapabilityDefinition>>();
-
- if (capabilities == null) {
- return null;
- }
-
- for (Entry<String, CapabilityDefinition> entry : capabilities.entrySet()) {
- CapabilityDefinition capabilityDefinition = entry.getValue();
- String type = capabilityDefinition.getType();
- if (fetchedRequirementCapability.equals(type)) {
- ImmutablePair<String, CapabilityDefinition> pair = new ImmutablePair<String, CapabilityDefinition>(entry.getKey(), capabilityDefinition);
- result.add(pair);
- }
- }
-
- return result;
- }
-
- protected TitanOperationStatus validateTheTargetResourceInstance(String fetchedRequirementNodeName, String resourceUid) {
-
- if (fetchedRequirementNodeName == null) {
- return TitanOperationStatus.OK;
- }
-
- List<ResourceMetadataData> resourcesPathList = new ArrayList<ResourceMetadataData>();
- TitanOperationStatus status = resourceOperation.findResourcesPathRecursively(resourceUid, resourcesPathList);
- if (status != TitanOperationStatus.OK) {
- log.error("Failed to find the parent list of resource {}. status is {}", resourceUid, status);
- return status;
- }
-
- boolean found = false;
- if (resourcesPathList != null) {
- for (ResourceMetadataData resourceData : resourcesPathList) {
- String resourceName = resourceData.getMetadataDataDefinition().getName();
- if (fetchedRequirementNodeName.equals(resourceName)) {
- found = true;
- log.debug("The resource {} is of type {}", resourceData.getUniqueId(), fetchedRequirementNodeName);
- break;
- }
- }
- }
-
- if (true == found) {
- return TitanOperationStatus.OK;
- } else {
- return TitanOperationStatus.MATCH_NOT_FOUND;
- }
-
- }
-
- private RelationshipInstData buildRelationshipInstData(String fromResInstanceUid, String requirement, RelationshipTypeData relationshipTypeData, RequirementAndRelationshipPair relationPair) {
-
- RelationshipInstData relationshipInstData = new RelationshipInstData();
- relationshipInstData.setUniqueId(UniqueIdBuilder.buildRelationsipInstInstanceUid(fromResInstanceUid, requirement));
- String type = null;
- if (relationshipTypeData != null) {
- type = relationshipTypeData.getRelationshipTypeDataDefinition().getType();
- }
-
- relationshipInstData.setType(type);
- Long creationDate = System.currentTimeMillis();
- relationshipInstData.setCreationTime(creationDate);
- relationshipInstData.setModificationTime(creationDate);
- relationshipInstData.setCapabilityOwnerId(relationPair.getCapabilityOwnerId());
- relationshipInstData.setRequirementOwnerId(relationPair.getRequirementOwnerId());
- relationshipInstData.setCapabiltyId(relationPair.getCapabilityUid());
- relationshipInstData.setRequirementId(relationPair.getRequirementUid());
-
- return relationshipInstData;
- }
-
- private Either<ComponentInstanceData, TitanOperationStatus> findResourceInstance(String resInstanceUid) {
-
- Either<ComponentInstanceData, TitanOperationStatus> node = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), resInstanceUid, ComponentInstanceData.class);
-
- return node;
-
- }
-
- @Override
- public Either<ComponentInstance, StorageOperationStatus> updateResourceInstance(String serviceId, NodeTypeEnum nodeType, String resourceInstanceUid, ComponentInstance resourceInstance, boolean inTransaction) {
-
- Either<ComponentInstance, StorageOperationStatus> result = null;
- try {
-
- Either<ComponentInstance, TitanOperationStatus> updateRes = updateResourceInstanceInService(serviceId, resourceInstanceUid, resourceInstance);
-
- if (updateRes.isRight()) {
- TitanOperationStatus status = updateRes.right().value();
- log.error("Failed to update resource instance {}. status is {}", resourceInstanceUid, status);
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
-
- ComponentInstance value = updateRes.left().value();
-
- result = Either.left(value);
-
- return result;
-
- } finally {
- if (false == inTransaction) {
- commitOrRollback(result);
- }
- }
-
- }
-
- /**
- * prepare new resource instance object for update
- *
- * @param resourceInstance
- * @param currentInst
- * @return
- */
- private ComponentInstance normalizeResourceInstanceForUpdate(ComponentInstance resourceInstance, ComponentInstanceData currentInst) {
-
- ComponentInstance instance = new ComponentInstance();
- instance.setUniqueId((String) currentInst.getUniqueId());
- Long modificationTime = resourceInstance.getModificationTime();
- if (modificationTime == null) {
- modificationTime = System.currentTimeMillis();
- }
- instance.setModificationTime(modificationTime);
- instance.setPosX(resourceInstance.getPosX());
- instance.setPosY(resourceInstance.getPosY());
- instance.setDescription(resourceInstance.getDescription());
- instance.setName(resourceInstance.getName());
- instance.setNormalizedName(resourceInstance.getNormalizedName());
- instance.setPropertyValueCounter(resourceInstance.getPropertyValueCounter());
- instance.setAttributeValueCounter(resourceInstance.getAttributeValueCounter());
- instance.setInputValueCounter(resourceInstance.getInputValueCounter());
-
- boolean isNeedGenerate = isNeedGenerateCustomizationUUID(resourceInstance, currentInst);
- if (isNeedGenerate) {
- generateCustomizationUUID(instance);
- } else {
- instance.setCustomizationUUID(resourceInstance.getCustomizationUUID());
- }
- return instance;
- }
-
- private boolean isNeedGenerateCustomizationUUID(ComponentInstance resourceInstance, ComponentInstanceData currentInst) {
- return !currentInst.getComponentInstDataDefinition().getName().equals(resourceInstance.getName());
- }
-
- private void printDiff(ComponentInstanceData currentInst, ComponentInstance resourceInstance) {
-
- log.debug("The current Resource Instance details are : {}", currentInst);
- log.debug("The received Resource Instance details for update are :{}", resourceInstance);
-
- }
-
- @Override
- public Either<ComponentInstance, StorageOperationStatus> updateResourceInstance(String serviceId, NodeTypeEnum nodeType, String resourceInstanceName, ComponentInstance resourceInstance) {
-
- return updateResourceInstance(serviceId, nodeType, resourceInstanceName, resourceInstance, false);
- }
-
- public Either<ComponentInstance, TitanOperationStatus> updateResourceInstanceInService(String serviceId, String resourceInstanceUid, ComponentInstance resourceInstance) {
-
- log.trace("Going to update resource instance {}. Properies are {}", resourceInstanceUid, resourceInstance);
- Either<ComponentInstanceData, TitanOperationStatus> findInstRes = findResourceInstance(resourceInstanceUid);
- if (findInstRes.isRight()) {
- TitanOperationStatus status = findInstRes.right().value();
- log.error("Failed to find resource instance {}. status is {}", resourceInstanceUid, status);
- return Either.right(status);
- }
-
- ComponentInstanceData currentInst = findInstRes.left().value();
- if (log.isDebugEnabled()) {
- printDiff(currentInst, resourceInstance);
- }
-
- ComponentInstance resourceInstanceForUpdate = normalizeResourceInstanceForUpdate(resourceInstance, currentInst);
-
- ComponentInstanceData resourceInstanceData = new ComponentInstanceData(resourceInstanceForUpdate);
-
- Either<ComponentInstanceData, TitanOperationStatus> updateNodeRes = titanGenericDao.updateNode(resourceInstanceData, ComponentInstanceData.class);
- if (updateNodeRes.isRight()) {
- TitanOperationStatus status = updateNodeRes.right().value();
- log.error("Failed to update resource instance {}. status is {}", resourceInstanceUid, status);
- return Either.right(status);
- }
-
- ComponentInstanceData value = updateNodeRes.left().value();
-
- ComponentInstance instance = new ComponentInstance(value.getComponentInstDataDefinition());
-
- return Either.left(instance);
-
- }
-
- @Override
- public Either<ImmutablePair<List<ComponentInstance>, List<RequirementCapabilityRelDef>>, StorageOperationStatus> getAllComponentInstances(String componentId, NodeTypeEnum containerNodeType, NodeTypeEnum compInstNodeType, boolean inTransaction) {
-
- Either<ImmutablePair<List<ComponentInstance>, List<RequirementCapabilityRelDef>>, StorageOperationStatus> result = null;
-
- try {
-
- Either<ImmutablePair<List<ComponentInstance>, List<RequirementCapabilityRelDef>>, TitanOperationStatus> resInstancesOfService = getComponentInstancesOfComponent(componentId, containerNodeType, compInstNodeType);
-
- log.trace("After fetching resource instances of component {}. result is {}", componentId, resInstancesOfService);
- if (resInstancesOfService.isRight()) {
- TitanOperationStatus status = resInstancesOfService.right().value();
- if (status != TitanOperationStatus.NOT_FOUND) {
- log.error("Failed to find resource instances of service {}. status is {}", componentId, status);
- }
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
-
- ImmutablePair<List<ComponentInstance>, List<RequirementCapabilityRelDef>> immutablePair = resInstancesOfService.left().value();
- List<ComponentInstance> nodes = immutablePair.getKey();
- if (nodes == null || nodes.isEmpty()) {
- return Either.right(StorageOperationStatus.NOT_FOUND);
- }
-
- result = Either.left(immutablePair);
- return result;
- } finally {
- if (false == inTransaction) {
- commitOrRollback(result);
- }
- }
- }
-
- @Override
- public Either<Boolean, StorageOperationStatus> isComponentInstanceNameExist(String parentComponentId, NodeTypeEnum nodeType, String compInstId, String componentInstName) {
-
- Either<Boolean, StorageOperationStatus> result = null;
- Either<Boolean, TitanOperationStatus> updateRes = isComponentInstanceNameExistOnGraph(parentComponentId, nodeType, compInstId, componentInstName);
-
- if (updateRes.isRight()) {
- TitanOperationStatus status = updateRes.right().value();
- log.error("Failed to find component instance name {}. status is {}", componentInstName, status);
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
-
- Boolean value = updateRes.left().value();
-
- result = Either.left(value);
-
- return result;
-
- }
-
- private Either<Boolean, TitanOperationStatus> isComponentInstanceNameExistOnGraph(String parentComponentId, NodeTypeEnum parentNodeType, String compInstId, String componentInstName) {
-
- Either<TitanGraph, TitanOperationStatus> graphRes = titanGenericDao.getGraph();
- if (graphRes.isRight()) {
- log.debug("Failed to retrieve graph. status is {}", graphRes);
- return Either.right(graphRes.right().value());
- }
-
- TitanGraph titanGraph = graphRes.left().value();
- Iterable<TitanVertex> vertices = titanGraph.query().has(UniqueIdBuilder.getKeyByNodeType(parentNodeType), parentComponentId).vertices();
- if (vertices == null || false == vertices.iterator().hasNext()) {
- return Either.right(TitanOperationStatus.INVALID_ID);
- }
-
- TitanVertex serviceVertex = vertices.iterator().next();
- TitanVertexQuery query = serviceVertex.query();
- query = query.labels(GraphEdgeLabels.RESOURCE_INST.getProperty());
- Iterable<Vertex> verts = query.vertices();
- if (verts == null) {
- log.debug("No edges in graph for criteria");
- return Either.right(TitanOperationStatus.NOT_FOUND);
- }
- Iterator<Vertex> vIter = verts.iterator();
- while (vIter.hasNext()) {
- Vertex vert = vIter.next();
- String resInstName = vert.value(GraphPropertiesDictionary.NORMALIZED_NAME.getProperty());
- if (resInstName.equals(componentInstName)) {
- if (compInstId != null) {// will be null if we got here from
- // create
- // Update case - skipping if this is the same component
- // instance we are updating, that is allowing
- // update of the unchanged name on a component instance.
- // This is needed to support position only update, since
- // name should
- // always be passed in update, and in position case, the
- // name will be unchanged.
- String uniqueId = vert.value(GraphPropertiesDictionary.UNIQUE_ID.getProperty());
- if (uniqueId.equals(compInstId)) {
- continue;
- }
- }
- return Either.left(Boolean.TRUE);
- }
- }
- return Either.left(Boolean.FALSE);
- }
-
- /**
- * find resource instances and the relationships between the relationships of a given resource
- *
- * @param componentId
- * @return
- */
- public Either<ImmutablePair<List<ComponentInstance>, List<RequirementCapabilityRelDef>>, TitanOperationStatus> getComponentInstancesOfComponent(String componentId, NodeTypeEnum containerNodeType, NodeTypeEnum compInstNodeType) {
-
- if (log.isDebugEnabled())
- log.debug("Going to fetch all resource instances under component {}", componentId);
-
- Either<ComponentMetadataData, TitanOperationStatus> componentRes = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(containerNodeType), componentId, ComponentMetadataData.class);
- if (componentRes.isRight()) {
- TitanOperationStatus status = componentRes.right().value();
- log.error("Failed to find component {}. status is {}", componentId, status);
- return Either.right(status);
- }
-
- Either<List<ImmutablePair<ComponentInstanceData, GraphEdge>>, TitanOperationStatus> resourceInstancesRes = getAllComponentInstanceFromGraph(componentId, containerNodeType, true);
- if (resourceInstancesRes.isRight()) {
- TitanOperationStatus status = resourceInstancesRes.right().value();
- log.debug("Resource instance was found under component {}. status is {}", componentId, status);
- return Either.right(status);
- }
-
- List<ComponentInstance> resourcesResult = new ArrayList<ComponentInstance>();
- List<RequirementCapabilityRelDef> requirementsResult = new ArrayList<RequirementCapabilityRelDef>();
-
- List<ImmutablePair<ComponentInstanceData, GraphEdge>> resourceInstances = resourceInstancesRes.left().value();
- if (resourceInstances != null && false == resourceInstances.isEmpty()) {
- Map<String, Map<String, CapabilityDefinition>> compInstCapabilities = new HashMap<String, Map<String, CapabilityDefinition>>();
- Map<String, Map<String, RequirementDefinition>> compInstReq = new HashMap<String, Map<String, RequirementDefinition>>();
- Map<String, Map<String, ArtifactDefinition>> compInstDeploymentArtifacts = new HashMap<String, Map<String, ArtifactDefinition>>();
- Map<String, Map<String, ArtifactDefinition>> compInstInformationalArtifacts = new HashMap<String, Map<String, ArtifactDefinition>>();
- Map<String, Component> compInstOriginsMap = new HashMap<String, Component>();
-
- for (ImmutablePair<ComponentInstanceData, GraphEdge> immutablePair : resourceInstances) {
-
- ComponentInstanceData resourceInstanceData = immutablePair.getKey();
- if (log.isDebugEnabled())
- log.debug("Going to fetch the relationships of resource instance {}", resourceInstanceData);
-
- ComponentInstance resourceInstance = new ComponentInstance(resourceInstanceData.getComponentInstDataDefinition());
-
- TitanOperationStatus status = getFullComponentInstance(compInstCapabilities, compInstReq, compInstDeploymentArtifacts, compInstOriginsMap, resourceInstance, compInstNodeType, compInstInformationalArtifacts);
- if (status != TitanOperationStatus.OK) {
- return Either.right(status);
- }
- resourcesResult.add(resourceInstance);
-
- Either<List<ImmutablePair<RelationshipInstData, GraphEdge>>, TitanOperationStatus> relationshipsRes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance),
- (String) resourceInstanceData.getUniqueId(), GraphEdgeLabels.RELATIONSHIP_INST, NodeTypeEnum.RelationshipInst, RelationshipInstData.class);
-
- if (relationshipsRes.isRight()) {
- status = relationshipsRes.right().value();
- log.debug("After fetching all reslationships of resource instance {} under component {} . status is {}", resourceInstanceData.getUniqueId(), componentId, status);
- if (status == TitanOperationStatus.NOT_FOUND) {
- continue;
- } else {
- log.error("Failed to find relationhips of resource instance {} under component {}. status is {}", resourceInstanceData.getUniqueId(), componentId, status);
- return Either.right(status);
- }
- }
-
- String sourceResourceUid = (String) resourceInstanceData.getUniqueId();
-
- Map<String, List<ImmutablePair<String, RelationshipInstData>>> targetNodeToRelationship = new HashMap<String, List<ImmutablePair<String, RelationshipInstData>>>();
-
- List<ImmutablePair<RelationshipInstData, GraphEdge>> relationshipsImpl = relationshipsRes.left().value();
- status = populateTargetAndRelationsForGivenSource(targetNodeToRelationship, relationshipsImpl);
-
- if (status != TitanOperationStatus.OK) {
- return Either.right(status);
- }
-
- if (targetNodeToRelationship.isEmpty()) {
- log.error("No target found for relationship instances of resource instance {}", resourceInstanceData.getUniqueId());
- return Either.right(TitanOperationStatus.INVALID_ELEMENT);
- }
-
- buildRelationsForSource(requirementsResult, sourceResourceUid, targetNodeToRelationship);
-
- }
-
- return Either.left(new ImmutablePair<List<ComponentInstance>, List<RequirementCapabilityRelDef>>(resourcesResult, requirementsResult));
- } else {
- return Either.right(TitanOperationStatus.NOT_FOUND);
- }
-
- }
-
- private Either<List<RequirementCapabilityRelDef>, TitanOperationStatus> getRelationsForSource(String resourceInstanceUid) {
- Either<List<ImmutablePair<RelationshipInstData, GraphEdge>>, TitanOperationStatus> relationshipsRes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), resourceInstanceUid,
- GraphEdgeLabels.RELATIONSHIP_INST, NodeTypeEnum.RelationshipInst, RelationshipInstData.class);
-
- TitanOperationStatus status;
- List<RequirementCapabilityRelDef> requirementsResult = new ArrayList<RequirementCapabilityRelDef>();
-
- if (relationshipsRes.isRight()) {
- status = relationshipsRes.right().value();
- log.debug("After fetching all reslationships of resource instance {}. status is {}", resourceInstanceUid, status);
- if (status == TitanOperationStatus.NOT_FOUND) {
- return Either.left(requirementsResult);
- } else {
- log.error("Failed to find relationhips of resource instance {}. status is {}", resourceInstanceUid, status);
- return Either.right(status);
- }
- }
-
- Map<String, List<ImmutablePair<String, RelationshipInstData>>> targetNodeToRelationship = new HashMap<String, List<ImmutablePair<String, RelationshipInstData>>>();
-
- List<ImmutablePair<RelationshipInstData, GraphEdge>> relationshipsImpl = relationshipsRes.left().value();
- status = populateTargetAndRelationsForGivenSource(targetNodeToRelationship, relationshipsImpl);
-
- if (status != TitanOperationStatus.OK) {
- return Either.right(status);
- }
-
- if (targetNodeToRelationship.isEmpty()) {
- log.error("No target found for relationship instances of resource instance {}", resourceInstanceUid);
- return Either.right(TitanOperationStatus.INVALID_ELEMENT);
- }
-
- buildRelationsForSource(requirementsResult, resourceInstanceUid, targetNodeToRelationship);
- return Either.left(requirementsResult);
- }
-
- private Either<List<RequirementCapabilityRelDef>, TitanOperationStatus> getRelationsForTarget(String resourceInstanceUid) {
-
- TitanOperationStatus status;
-
- Either<List<ImmutablePair<RelationshipInstData, GraphEdge>>, TitanOperationStatus> relationshipsRes = titanGenericDao.getParentNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), resourceInstanceUid,
- GraphEdgeLabels.CAPABILITY_NODE, NodeTypeEnum.RelationshipInst, RelationshipInstData.class);
-
- List<RequirementCapabilityRelDef> requirementsResult = new ArrayList<RequirementCapabilityRelDef>();
-
- if (relationshipsRes.isRight()) {
- status = relationshipsRes.right().value();
- log.debug("After fetching all reslationships of resource instance {}. status is {}", resourceInstanceUid, status);
- if (status == TitanOperationStatus.NOT_FOUND) {
- return Either.left(requirementsResult);
- } else {
- log.error("Failed to find relationhips of resource instance {}. status is {}", resourceInstanceUid, status);
- return Either.right(status);
- }
- }
-
- Map<String, List<ImmutablePair<String, RelationshipInstData>>> sourceNodeToRelationship = new HashMap<String, List<ImmutablePair<String, RelationshipInstData>>>();
-
- List<ImmutablePair<RelationshipInstData, GraphEdge>> relationshipsImpl = relationshipsRes.left().value();
- status = populateSourceAndRelationsForGivenTarget(sourceNodeToRelationship, relationshipsImpl);
-
- if (status != TitanOperationStatus.OK) {
- return Either.right(status);
- }
-
- if (sourceNodeToRelationship.isEmpty()) {
- log.error("No target found for relationship instances of resource instance {}", resourceInstanceUid);
- return Either.right(TitanOperationStatus.INVALID_ELEMENT);
- }
-
- buildRelationsForTarget(requirementsResult, resourceInstanceUid, sourceNodeToRelationship);
- return Either.left(requirementsResult);
- }
-
- @Override
- public Either<ComponentInstance, StorageOperationStatus> getFullComponentInstance(ComponentInstance componentInstance, NodeTypeEnum compInstNodeType) {
- Map<String, Map<String, CapabilityDefinition>> compInstCapabilities = new HashMap<String, Map<String, CapabilityDefinition>>();
- Map<String, Map<String, RequirementDefinition>> compInstReq = new HashMap<String, Map<String, RequirementDefinition>>();
- Map<String, Map<String, ArtifactDefinition>> compInstDeploymentArtifacts = new HashMap<String, Map<String, ArtifactDefinition>>();
- Map<String, Map<String, ArtifactDefinition>> compInstInformationalArtifacts = new HashMap<String, Map<String, ArtifactDefinition>>();
- Map<String, Component> compInstOrigins = new HashMap<String, Component>();
-
- TitanOperationStatus fullResourceInstance = getFullComponentInstance(compInstCapabilities, compInstReq, compInstDeploymentArtifacts, compInstOrigins, componentInstance, compInstNodeType, compInstInformationalArtifacts);
- if (!fullResourceInstance.equals(TitanOperationStatus.OK)) {
- log.debug("failed to get full data of resource instance. error: {}", fullResourceInstance);
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(fullResourceInstance));
- }
- return Either.left(componentInstance);
- }
-
- private TitanOperationStatus getFullComponentInstance(Map<String, Map<String, CapabilityDefinition>> compInstCapabilities, Map<String, Map<String, RequirementDefinition>> compInstReq,
- Map<String, Map<String, ArtifactDefinition>> compInstDeploymentArtifacts, Map<String, Component> compInstOrigins, ComponentInstance compInst, NodeTypeEnum compInstNodeType,
- Map<String, Map<String, ArtifactDefinition>> compInstInformationalArtifacts) {
- Component component = null;
- ComponentOperation componentOperation = getComponentOperation(compInstNodeType);
- String componentUid = compInst.getComponentUid();
- if (compInstOrigins.containsKey(componentUid)) {
- component = compInstOrigins.get(componentUid);
- } else {
- Either<Component, StorageOperationStatus> metadataComponent = componentOperation.getMetadataComponent(componentUid, true);
- if (metadataComponent.isRight()) {
- log.debug("Failed to fetch the origin component for component instance, origin Id {}, error: {}", componentUid, metadataComponent.right().value());
- return TitanOperationStatus.GENERAL_ERROR;
- }
- component = metadataComponent.left().value();
- compInstOrigins.put(componentUid, component);
-
- }
- String icon = component.getIcon();
- if (log.isDebugEnabled())
- log.debug("Fetch the resource instance icon from the resource itself. icon = {}", icon);
- compInst.setIcon(icon);
- String componentName = component.getName();
- compInst.setComponentName(componentName);
- compInst.setComponentVersion(component.getVersion());
- if (component.getComponentType() == ComponentTypeEnum.RESOURCE) {
- compInst.setToscaComponentName(((Resource) component).getToscaResourceName());
- }
-
- List<ComponentInstance> componentInstances = new ArrayList<>();
- List<String> derivedFromList = new ArrayList<String>();
-
- // For VFC/VL/CP
- if (compInstNodeType == NodeTypeEnum.Resource && ((Resource) component).getResourceType() != ResourceTypeEnum.VF) {
- resourceOperation.fillResourceDerivedListFromGraph(component.getUniqueId(), derivedFromList);
- } else {
- // Getting component instances that the origin component of this
- // component instance is their container, so we can use the logic of
- // getting req/cap from them
- // and fill this component instance with those req/cap
- Either<List<ImmutablePair<ComponentInstanceData, GraphEdge>>, TitanOperationStatus> allComponentInstanceFromGraph = getAllComponentInstanceFromGraph(componentUid, compInstNodeType, true);
- if (allComponentInstanceFromGraph.isRight() && allComponentInstanceFromGraph.right().value() != TitanOperationStatus.NOT_FOUND) {
- log.debug("Couldn't fetch component instances for component {} of type {}", componentUid, compInstNodeType);
- return allComponentInstanceFromGraph.right().value();
- }
- List<ImmutablePair<ComponentInstanceData, GraphEdge>> allCIs = allComponentInstanceFromGraph.isLeft() ? allComponentInstanceFromGraph.left().value() : new ArrayList<>();
- for (ImmutablePair<ComponentInstanceData, GraphEdge> entry : allCIs) {
- componentInstances.add(new ComponentInstance(entry.left.getComponentInstDataDefinition()));
- }
- component.setComponentInstances(componentInstances);
- }
-
- StorageOperationStatus capStatus = setCompInstCapabilitiesFromGraph(compInstCapabilities, component, compInstNodeType, compInst, derivedFromList);
- if (capStatus != StorageOperationStatus.OK) {
- log.debug("Failed to find capability of resource {}. status is {}", componentName, capStatus);
-
- }
- capStatus = setCompInstRequirementsFromGraph(compInstReq, component, compInstNodeType, compInst);
- if (capStatus != StorageOperationStatus.OK) {
- log.debug("Failed to find requirements of resource {}. status is {}", componentName, capStatus);
-
- }
-
- capStatus = setCompInstDeploymentArtifactsFromGraph(compInstDeploymentArtifacts, componentUid, compInst);
- if (capStatus != StorageOperationStatus.OK) {
- log.debug("Failed to find resource deployment artifacts of resource {}. status is {}", componentName, capStatus);
-
- }
-
- capStatus = setCompInstInformationalArtifactsResourceFromGraph(compInstInformationalArtifacts, componentUid, compInst);
- if (capStatus != StorageOperationStatus.OK) {
- log.debug("Failed to find resource deployment artifacts of resource {}. status is {}", componentName, capStatus);
-
- }
-
- capStatus = setCompInstDeploymentArtifactsFromGraph(compInst);
- if (capStatus != StorageOperationStatus.OK) {
- log.debug("Failed to find resource deployment artifacts of resource instance {} . status is {}", compInst.getName(), capStatus);
- }
-
- capStatus = setCompInstInformationaltArtifactsFromGraph(compInst);
- if (capStatus != StorageOperationStatus.OK) {
- log.debug("Failed to find resource informational artifacts of resource instance {} . status is {}", compInst.getName(), capStatus);
- }
-
- capStatus = setGroupInstFromGraph(compInst);
- if (capStatus != StorageOperationStatus.OK) {
- log.debug("Failed to find resource groups of resource instance {} . status is {}", compInst.getName(), capStatus);
- }
- return TitanOperationStatus.OK;
- }
-
- private StorageOperationStatus setCompInstInformationaltArtifactsFromGraph(ComponentInstance resourceInstance) {
- Map<String, ArtifactDefinition> informationalArtifacts = null;
- if (resourceInstance.getArtifacts() == null) {
- informationalArtifacts = new HashMap<String, ArtifactDefinition>();
- } else {
- informationalArtifacts = new HashMap<String, ArtifactDefinition>(resourceInstance.getArtifacts());
- }
-
- Either<Map<String, ArtifactDefinition>, StorageOperationStatus> result = artifactOperation.getArtifacts(resourceInstance.getUniqueId(), NodeTypeEnum.ResourceInstance, true, ArtifactGroupTypeEnum.INFORMATIONAL.getType());
- if (result.isRight()) {
- StorageOperationStatus status = result.right().value();
- if (status != StorageOperationStatus.NOT_FOUND) {
- return status;
- }
- } else {
- informationalArtifacts.putAll(result.left().value());
- }
-
- resourceInstance.setArtifacts(informationalArtifacts);
- return StorageOperationStatus.OK;
- }
-
- private StorageOperationStatus setGroupInstFromGraph(ComponentInstance compInst) {
- List<GroupInstance> groupInstances = null;
-
- Either<List<GroupInstance>, StorageOperationStatus> result = groupInstanceOperation.getAllGroupInstances(compInst.getUniqueId(), NodeTypeEnum.ResourceInstance);
- if (result.isRight()) {
- StorageOperationStatus status = result.right().value();
- if (status != StorageOperationStatus.NOT_FOUND) {
- return status;
- } else {
-
- return StorageOperationStatus.OK;
- }
- }
-
- groupInstances = result.left().value();
- compInst.setGroupInstances(groupInstances);
-
- return StorageOperationStatus.OK;
- }
-
- private StorageOperationStatus setCompInstInformationalArtifactsResourceFromGraph(Map<String, Map<String, ArtifactDefinition>> resourcesInformationalArtifacts, String componentUid, ComponentInstance resourceInstance) {
-
- if (resourcesInformationalArtifacts.containsKey(componentUid)) {
- resourceInstance.setArtifacts(resourcesInformationalArtifacts.get(componentUid));
- return StorageOperationStatus.OK;
- }
-
- Either<Map<String, ArtifactDefinition>, StorageOperationStatus> result = artifactOperation.getArtifacts(componentUid, NodeTypeEnum.Resource, true, ArtifactGroupTypeEnum.INFORMATIONAL.getType());
- if (result.isRight()) {
- StorageOperationStatus status = result.right().value();
- if (status != StorageOperationStatus.NOT_FOUND) {
- return status;
- } else {
- return StorageOperationStatus.OK;
- }
- }
- Map<String, ArtifactDefinition> artifacts = result.left().value();
- if (!artifacts.isEmpty()) {
- Map<String, ArtifactDefinition> tempArtifacts = new HashMap<>(artifacts);
- for (Entry<String, ArtifactDefinition> artifact : artifacts.entrySet()) {
- if (!artifact.getValue().checkEsIdExist()) {
- tempArtifacts.remove(artifact.getKey());
- }
- }
- resourceInstance.setArtifacts(tempArtifacts);
- resourcesInformationalArtifacts.put(componentUid, tempArtifacts);
- }
-
- return StorageOperationStatus.OK;
-
- }
-
- protected StorageOperationStatus setCompInstDeploymentArtifactsFromGraph(ComponentInstance resourceInstance) {
-
- Map<String, ArtifactDefinition> deploymentArtifacts = null;
- if (resourceInstance.getDeploymentArtifacts() == null) {
- deploymentArtifacts = new HashMap<String, ArtifactDefinition>();
- } else {
- deploymentArtifacts = new HashMap<String, ArtifactDefinition>(resourceInstance.getDeploymentArtifacts());
- }
-
- Either<Map<String, ArtifactDefinition>, StorageOperationStatus> result = artifactOperation.getArtifacts(resourceInstance.getUniqueId(), NodeTypeEnum.ResourceInstance, true, ArtifactGroupTypeEnum.DEPLOYMENT.getType());
- if (result.isRight()) {
- StorageOperationStatus status = result.right().value();
- if (status != StorageOperationStatus.NOT_FOUND) {
- return status;
- } else {
- resourceInstance.setDeploymentArtifacts(deploymentArtifacts);
- return StorageOperationStatus.OK;
- }
- }
-
- Map<String, ArtifactDefinition> artifacts = result.left().value();
- if ((artifacts != null) && !artifacts.isEmpty()) {
- for (ArtifactDefinition artifact : artifacts.values()) {
- if (artifact.getArtifactType().equalsIgnoreCase(ArtifactTypeEnum.HEAT_ENV.getType())) {
- Either<List<HeatParameterDefinition>, StorageOperationStatus> heatParamsForEnv = artifactOperation.getHeatParamsForEnv(artifact);
- if (heatParamsForEnv.isRight()) {
- log.debug("failed to get heat parameters values for heat artifact {}", artifact.getUniqueId());
- return heatParamsForEnv.right().value();
- } else {
- artifact.setListHeatParameters(heatParamsForEnv.left().value());
- }
- }
- }
-
- // add resource instance artifacts to the artifacts inherited from
- // resource
- deploymentArtifacts.putAll(artifacts);
- resourceInstance.setDeploymentArtifacts(deploymentArtifacts);
- }
-
- return StorageOperationStatus.OK;
-
- }
-
- private Either<List<ImmutablePair<ComponentInstanceData, GraphEdge>>, TitanOperationStatus> getAllComponentInstanceFromGraph(String componentId, NodeTypeEnum containerNodeType, boolean withEdges) {
- if (log.isDebugEnabled())
- log.debug("Going to fetch all resource instances nodes in graph associate to component {}", componentId);
- Either<List<ImmutablePair<ComponentInstanceData, GraphEdge>>, TitanOperationStatus> resourceInstancesRes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(containerNodeType), componentId, GraphEdgeLabels.RESOURCE_INST,
- NodeTypeEnum.ResourceInstance, ComponentInstanceData.class, withEdges);
- if (log.isDebugEnabled())
- log.debug("After fetching all component instances under component {}", componentId);
-
- if (resourceInstancesRes.isLeft()) {
- printAllResourceInstancesNames(resourceInstancesRes);
- }
- return resourceInstancesRes;
- }
-
- private void printAllResourceInstancesNames(Either<List<ImmutablePair<ComponentInstanceData, GraphEdge>>, TitanOperationStatus> resourceInstancesRes) {
- if (log.isTraceEnabled()) {
- StringBuilder builder = new StringBuilder();
- builder.append("Result is ");
- List<ImmutablePair<ComponentInstanceData, GraphEdge>> listResData = resourceInstancesRes.left().value();
- for (ImmutablePair<ComponentInstanceData, GraphEdge> resInstPair : listResData) {
- ComponentInstanceData resdata = resInstPair.getLeft();
- builder.append(resdata.getName()).append(", ");
- }
- log.trace(builder.toString());
- }
- }
-
- private TitanOperationStatus populateTargetAndRelationsForGivenSource(Map<String, List<ImmutablePair<String, RelationshipInstData>>> targetNodeToRelationship, List<ImmutablePair<RelationshipInstData, GraphEdge>> relationshipsImpl) {
- if (relationshipsImpl != null && false == relationshipsImpl.isEmpty()) {
- for (ImmutablePair<RelationshipInstData, GraphEdge> pair : relationshipsImpl) {
- RelationshipInstData relationshipInstData = pair.getKey();
-
- GraphEdge requirementEdge = pair.getValue();
- String requirementName = (String) requirementEdge.getProperties().get(GraphPropertiesDictionary.NAME.getProperty());
-
- Either<ImmutablePair<ComponentInstanceData, GraphEdge>, TitanOperationStatus> targetNodeRes = titanGenericDao.getChild(relationshipInstData.getUniqueIdKey(), relationshipInstData.getUniqueId(), GraphEdgeLabels.CAPABILITY_NODE,
- NodeTypeEnum.ResourceInstance, ComponentInstanceData.class);
-
- if (targetNodeRes.isRight()) {
- TitanOperationStatus status = targetNodeRes.right().value();
- log.error("Failed to find the target node of relationship inst {}. status is {}", relationshipInstData, status);
- return status;
- }
-
- addRelationshipInstToTargetMap(targetNodeToRelationship, relationshipInstData, requirementName, targetNodeRes);
-
- }
- }
-
- return TitanOperationStatus.OK;
- }
-
- private TitanOperationStatus populateSourceAndRelationsForGivenTarget(Map<String, List<ImmutablePair<String, RelationshipInstData>>> sourceNodeToRelationship, List<ImmutablePair<RelationshipInstData, GraphEdge>> relationshipsImpl) {
- if (relationshipsImpl != null && false == relationshipsImpl.isEmpty()) {
- for (ImmutablePair<RelationshipInstData, GraphEdge> pair : relationshipsImpl) {
- RelationshipInstData relationshipInstData = pair.getKey();
-
- GraphEdge requirementEdge = pair.getValue();
- String requirementName = (String) requirementEdge.getProperties().get(GraphPropertiesDictionary.NAME.getProperty());
-
- Either<ImmutablePair<ComponentInstanceData, GraphEdge>, TitanOperationStatus> sourceNodeRes = titanGenericDao.getParentNode(relationshipInstData.getUniqueIdKey(), relationshipInstData.getUniqueId(), GraphEdgeLabels.RELATIONSHIP_INST,
- NodeTypeEnum.ResourceInstance, ComponentInstanceData.class);
-
- if (sourceNodeRes.isRight()) {
- TitanOperationStatus status = sourceNodeRes.right().value();
- log.error("Failed to find the source node of relationship inst {}. status is {}", relationshipInstData, status);
- return status;
- }
-
- addRelationshipInstToTargetMap(sourceNodeToRelationship, relationshipInstData, requirementName, sourceNodeRes);
-
- }
- }
-
- return TitanOperationStatus.OK;
- }
-
- private void buildRelationsForSource(List<RequirementCapabilityRelDef> requirementsResult, String sourceResourceUid, Map<String, List<ImmutablePair<String, RelationshipInstData>>> targetNodeToRelationship) {
- for (Entry<String, List<ImmutablePair<String, RelationshipInstData>>> targetToRel : targetNodeToRelationship.entrySet()) {
- RequirementCapabilityRelDef requirementCapabilityRelDef = new RequirementCapabilityRelDef();
- requirementCapabilityRelDef.setFromNode(sourceResourceUid);
- String targetUid = targetToRel.getKey();
- requirementCapabilityRelDef.setToNode(targetUid);
-
- List<RequirementAndRelationshipPair> relationships = new ArrayList<RequirementAndRelationshipPair>();
-
- populateRelationships(targetToRel, relationships);
- requirementCapabilityRelDef.setRelationships(relationships);
-
- requirementsResult.add(requirementCapabilityRelDef);
- }
- }
-
- private void buildRelationsForTarget(List<RequirementCapabilityRelDef> requirementsResult, String targetResourceUid, Map<String, List<ImmutablePair<String, RelationshipInstData>>> sourceNodeToRelationship) {
- for (Entry<String, List<ImmutablePair<String, RelationshipInstData>>> sourceToRel : sourceNodeToRelationship.entrySet()) {
- RequirementCapabilityRelDef requirementCapabilityRelDef = new RequirementCapabilityRelDef();
- requirementCapabilityRelDef.setToNode(targetResourceUid);
- String sourceUid = sourceToRel.getKey();
- requirementCapabilityRelDef.setFromNode(sourceUid);
- List<RequirementAndRelationshipPair> relationships = new ArrayList<RequirementAndRelationshipPair>();
-
- populateRelationships(sourceToRel, relationships);
- requirementCapabilityRelDef.setRelationships(relationships);
-
- requirementsResult.add(requirementCapabilityRelDef);
- }
- }
-
- private void addRelationshipInstToTargetMap(Map<String, List<ImmutablePair<String, RelationshipInstData>>> targetNodeToRelationship, RelationshipInstData relationshipInstData, String requirementName,
- Either<ImmutablePair<ComponentInstanceData, GraphEdge>, TitanOperationStatus> targetNodeRes) {
-
- ImmutablePair<ComponentInstanceData, GraphEdge> targetResourcePair = targetNodeRes.left().value();
- ComponentInstanceData targetResourceData = targetResourcePair.getKey();
-
- GraphEdge edge = targetResourcePair.right;
- if (edge.getEdgeType().equals(GraphEdgeLabels.RELATIONSHIP_INST)) {
- requirementName = (String) edge.getProperties().get(GraphEdgePropertiesDictionary.NAME.getProperty());
- }
-
- String targetResourceUid = (String) targetResourceData.getUniqueId();
- List<ImmutablePair<String, RelationshipInstData>> requirementRelationshipPair = targetNodeToRelationship.get(targetResourceUid);
- if (requirementRelationshipPair == null) {
- requirementRelationshipPair = new ArrayList<ImmutablePair<String, RelationshipInstData>>();
- targetNodeToRelationship.put(targetResourceUid, requirementRelationshipPair);
- }
- ImmutablePair<String, RelationshipInstData> reqRelationshipPair = new ImmutablePair<String, RelationshipInstData>(requirementName, relationshipInstData);
- requirementRelationshipPair.add(reqRelationshipPair);
- }
-
- private void populateRelationships(Entry<String, List<ImmutablePair<String, RelationshipInstData>>> targetToRel, List<RequirementAndRelationshipPair> relationships) {
-
- List<ImmutablePair<String, RelationshipInstData>> values = targetToRel.getValue();
- for (ImmutablePair<String, RelationshipInstData> value : values) {
- String reqName = value.getKey();
- RelationshipInstData relationshipInstData = value.getValue();
- RelationshipImpl relationshipImpl = new RelationshipImpl();
- relationshipImpl.setType(relationshipInstData.getType());
- RequirementAndRelationshipPair pair = new RequirementAndRelationshipPair(reqName, relationshipImpl);
- pair.setCapabilityOwnerId(relationshipInstData.getCapabilityOwnerId());
- pair.setCapabilityUid(relationshipInstData.getCapabiltyId());
- pair.setRequirementOwnerId(relationshipInstData.getRequirementOwnerId());
- pair.setRequirementUid(relationshipInstData.getRequirementId());
- pair.setId(relationshipInstData.getUniqueId());
- relationships.add(pair);
- }
- }
-
- /**
- * FOR TEST ONLY
- *
- * @param resourceOperation
- */
- public void setResourceOperation(ResourceOperation resourceOperation) {
- this.resourceOperation = resourceOperation;
- }
-
- @Override
- public Either<RequirementCapabilityRelDef, StorageOperationStatus> associateResourceInstances(String componentId, NodeTypeEnum nodeType, RequirementCapabilityRelDef relation, boolean inTransaction, boolean isClone) {
-
- Either<RequirementCapabilityRelDef, StorageOperationStatus> result = null;
- try {
- Either<RequirementCapabilityRelDef, TitanOperationStatus> multiRequirements = associateResourceInstancesMultiRequirements(componentId, nodeType, relation, isClone);
- if (multiRequirements.isRight()) {
- TitanOperationStatus status = multiRequirements.right().value();
- BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeDaoSystemError, "associateComponentInstances");
- BeEcompErrorManager.getInstance().logBeDaoSystemError("associateComponentInstances");
- log.debug("Failed to associate component instances {}. status is {}", relation, status);
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
- StorageOperationStatus updateCalculatedCapReqResult = updateCalculatedCapReq(relation, true);
- if (!updateCalculatedCapReqResult.equals(StorageOperationStatus.OK)) {
- BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeDaoSystemError, "associateComponentInstances");
- BeEcompErrorManager.getInstance().logBeDaoSystemError("associateComponentInstances");
- log.debug("Failed to associate component instances. {}. status is {}", relation, updateCalculatedCapReqResult);
- result = Either.right(updateCalculatedCapReqResult);
- return result;
- }
- result = Either.left(multiRequirements.left().value());
-
- return result;
-
- } finally {
- if (false == inTransaction) {
- commitOrRollback(result);
- }
- }
- }
-
- private Either<RequirementCapabilityRelDef, TitanOperationStatus> associateResourceInstancesMultiRequirements(String componentId, NodeTypeEnum nodeType, RequirementCapabilityRelDef relation, boolean isClone) {
-
- String fromNode = relation.getFromNode();
- String toNode = relation.getToNode();
- List<RequirementAndRelationshipPair> relationships = relation.getRelationships();
- if (relationships == null || relationships.isEmpty()) {
- BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeFailedAddingResourceInstanceError, "AssociateResourceInstances - missing relationship", fromNode, componentId);
- BeEcompErrorManager.getInstance().logBeFailedAddingResourceInstanceError("AssociateResourceInstances - missing relationship", fromNode, componentId);
- log.debug("No requirement definition sent in order to set the relation between {} to {}", fromNode, toNode);
- return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT);
- }
-
- List<RequirementAndRelationshipPair> relationshipsResult = new ArrayList<RequirementAndRelationshipPair>();
- for (RequirementAndRelationshipPair immutablePair : relationships) {
- String requirement = immutablePair.getRequirement();
-
- Either<RelationshipInstData, TitanOperationStatus> associateRes = connectResourcesInService(componentId, nodeType, fromNode, toNode, immutablePair);
-
- if (associateRes.isRight()) {
- TitanOperationStatus status = associateRes.right().value();
- BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeFailedAddingResourceInstanceError, "AssociateResourceInstances", fromNode, componentId);
- BeEcompErrorManager.getInstance().logBeFailedAddingResourceInstanceError("AssociateResourceInstances - missing relationship", fromNode, componentId);
- log.debug("Failed to associate resource instance {} to resource instance {}. status is {}", fromNode, toNode, status);
- return Either.right(status);
- }
-
- RelationshipInstData relationshipInstData = associateRes.left().value();
- RelationshipImpl relationshipImplResult = new RelationshipImpl();
- relationshipImplResult.setType(relationshipInstData.getType());
- RequirementAndRelationshipPair requirementAndRelationshipPair = new RequirementAndRelationshipPair(requirement, relationshipImplResult);
- requirementAndRelationshipPair.setCapability(immutablePair.getCapability());
- requirementAndRelationshipPair.setCapabilityOwnerId(relationshipInstData.getCapabilityOwnerId());
- requirementAndRelationshipPair.setRequirementOwnerId(relationshipInstData.getRequirementOwnerId());
- requirementAndRelationshipPair.setCapabilityUid(immutablePair.getCapabilityUid());
- requirementAndRelationshipPair.setRequirementUid(immutablePair.getRequirementUid());
- relationshipsResult.add(requirementAndRelationshipPair);
- if (!isClone) {
- log.trace("update customization UUID for from CI {} and to CI {}", relation.getFromNode(), relation.getToNode());
- StorageOperationStatus status;
- status = updateCustomizationUUID(relation.getFromNode());
- if (status != StorageOperationStatus.OK) {
- return Either.right(TitanOperationStatus.GENERAL_ERROR);
- }
- status = updateCustomizationUUID(relation.getToNode());
- if (status != StorageOperationStatus.OK) {
- return Either.right(TitanOperationStatus.GENERAL_ERROR);
- }
- }
-
- }
-
- RequirementCapabilityRelDef capabilityRelDef = new RequirementCapabilityRelDef();
- capabilityRelDef.setFromNode(fromNode);
- capabilityRelDef.setToNode(toNode);
- capabilityRelDef.setRelationships(relationshipsResult);
-
- return Either.left(capabilityRelDef);
- }
-
- @Override
- public Either<RequirementCapabilityRelDef, StorageOperationStatus> associateResourceInstances(String componentId, NodeTypeEnum nodeType, RequirementCapabilityRelDef relation) {
- return associateResourceInstances(componentId, nodeType, relation, false, false);
- }
-
- @Override
- public Either<List<ComponentInstance>, StorageOperationStatus> deleteAllComponentInstances(String containerComponentId, NodeTypeEnum containerNodeType, boolean inTransaction) {
-
- Either<List<ComponentInstance>, StorageOperationStatus> result = null;
- try {
- Either<List<ComponentInstance>, TitanOperationStatus> multiRequirements = deleteAllComponentInstancesInternal(containerComponentId, containerNodeType);
- if (multiRequirements.isRight()) {
- TitanOperationStatus status = multiRequirements.right().value();
- if (multiRequirements.right().value() != TitanOperationStatus.NOT_FOUND) {
- BeEcompErrorManager.getInstance().processEcompError(EcompErrorName.BeSystemError, "deleteAllResourceInstances - missing relationship");
- BeEcompErrorManager.getInstance().logBeSystemError("deleteAllResourceInstances - missing relationship");
- }
- log.debug("Failed to delete resource instances of service {}. status is {}", containerComponentId, status);
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
-
- }
-
- result = Either.left(multiRequirements.left().value());
-
- return result;
-
- } finally {
- if (false == inTransaction) {
- commitOrRollback(result);
- }
- }
-
- }
-
- @Override
- public Either<List<ComponentInstance>, StorageOperationStatus> deleteAllComponentInstances(String containerComponentId, NodeTypeEnum nodeType) {
- return deleteAllComponentInstances(containerComponentId, nodeType, false);
- }
-
- public Either<List<ComponentInstance>, TitanOperationStatus> deleteAllComponentInstancesInternal(String componentId, NodeTypeEnum nodeType) {
-
- log.debug("Going to delete all resource instances and their relatioships from service {}", componentId);
-
- Either<List<ImmutablePair<ComponentInstanceData, GraphEdge>>, TitanOperationStatus> resourceInstancesRes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(nodeType), componentId, GraphEdgeLabels.RESOURCE_INST,
- NodeTypeEnum.ResourceInstance, ComponentInstanceData.class);
-
- if (resourceInstancesRes.isRight()) {
- TitanOperationStatus status = resourceInstancesRes.right().value();
- log.debug("After fetching all resource instances of service {}. status is {}", componentId, status);
- return Either.right(status);
- }
-
- List<ComponentInstance> result = new ArrayList<ComponentInstance>();
- List<ImmutablePair<ComponentInstanceData, GraphEdge>> listOfResInstances = resourceInstancesRes.left().value();
- for (ImmutablePair<ComponentInstanceData, GraphEdge> resInstance : listOfResInstances) {
- ComponentInstanceData resourceInstanceData = resInstance.getKey();
- String resourceInstUid = resourceInstanceData.getUniqueId();
- Either<ComponentInstance, TitanOperationStatus> removeResourceInstanceRes = removeComponentInstanceFromComponent(nodeType, componentId, resourceInstUid);
- log.debug("After removing resource instance {}. Result is {}", resourceInstUid, removeResourceInstanceRes);
- if (removeResourceInstanceRes.isRight()) {
- TitanOperationStatus status = removeResourceInstanceRes.right().value();
- log.error("After removing resource instance {}. status is {}", resourceInstUid, status);
- return Either.right(status);
- }
- ComponentInstance resourceInstance = removeResourceInstanceRes.left().value();
- result.add(resourceInstance);
- }
-
- log.debug("The following resource instances was deleted from service {} : {}", componentId, result);
-
- return Either.left(result);
- }
-
- public Either<ImmutablePair<List<ComponentInstance>, Map<String, String>>, StorageOperationStatus> cloneAllComponentInstancesFromContainerComponent(String componentIdFrom, Component component, NodeTypeEnum containerNodeType,
- NodeTypeEnum compInstNodeType, LifecycleStateEnum targetLifecycle, Map<String, List<ComponentInstanceInput>> inputsValuesMap) {
-
- List<ComponentInstance> list = new ArrayList<ComponentInstance>();
- Map<String, String> oldCompInstToNew = new HashMap<>();
-
- ImmutablePair<List<ComponentInstance>, Map<String, String>> result = new ImmutablePair<List<ComponentInstance>, Map<String, String>>(list, oldCompInstToNew);
-
- Either<ImmutablePair<List<ComponentInstance>, List<RequirementCapabilityRelDef>>, StorageOperationStatus> allResourceInstances = getAllComponentInstances(componentIdFrom, containerNodeType, compInstNodeType, true);
-
- if (allResourceInstances.isRight()) {
- StorageOperationStatus status = allResourceInstances.right().value();
- if (status.equals(StorageOperationStatus.NOT_FOUND)) {
-
- return Either.left(result);
- } else {
- log.error("failed to get all resource instances for service {}. status={}", componentIdFrom, status);
- return Either.right(status);
- }
- }
-
- List<ComponentInstance> riList = allResourceInstances.left().value().left;
- Map<String, ComponentInstance> riMapper = new HashMap<>();
- int instanceNumber = 0;
- for (ComponentInstance ri : riList) {
- instanceNumber++;
- String origRiUniqueID = ri.getUniqueId();
- Either<ComponentInstance, StorageOperationStatus> createResourceInstance = createComponentInstance(component.getUniqueId(), containerNodeType, String.valueOf(instanceNumber), false, ri, compInstNodeType, true, true);
- if (createResourceInstance.isRight()) {
- StorageOperationStatus status = createResourceInstance.right().value();
- log.error("failed to clone resource instance {}. status ={}", origRiUniqueID, status);
- return Either.right(status);
- }
- ComponentInstance createdInstance = createResourceInstance.left().value();
- riMapper.put(origRiUniqueID, createdInstance);
- StorageOperationStatus associateArtifactsToResource = cloneResourceInstanceArtifacts(createdInstance, ri, targetLifecycle);
- if (associateArtifactsToResource != StorageOperationStatus.OK) {
- log.debug("failed to clone resource instance {} artifacts. error {} ", ri.getNormalizedName(), associateArtifactsToResource.name());
- return Either.right(associateArtifactsToResource);
- }
-
- StorageOperationStatus associatePropertyValuesToResource = cloneResourceInstancePropertyValues(createdInstance, ri);
- if (associatePropertyValuesToResource != StorageOperationStatus.OK) {
- log.debug("failed to clone resource instance {} property values. error {} ", ri.getNormalizedName(), associatePropertyValuesToResource.name());
- return Either.right(associatePropertyValuesToResource);
- }
-
- StorageOperationStatus associateAttributeValuesToResource = cloneResourceInstanceAttributeValues(createdInstance, ri);
- if (associateAttributeValuesToResource != StorageOperationStatus.OK) {
- log.debug("failed to clone resource instance {} attribute values. error {} ", ri.getNormalizedName(), associateAttributeValuesToResource.name());
- return Either.right(associateAttributeValuesToResource);
- }
-
- StorageOperationStatus associateInputValuesToResource = cloneResourceInstanceInputsValues(createdInstance, ri, component, inputsValuesMap);
- if (associateInputValuesToResource != StorageOperationStatus.OK) {
- log.debug("failed to clone resource instance {} property values. error {} ", ri.getNormalizedName(), associatePropertyValuesToResource.name());
- return Either.right(associatePropertyValuesToResource);
- }
-
- list.add(createdInstance);
- oldCompInstToNew.put(origRiUniqueID, createdInstance.getUniqueId());
- }
-
- List<RequirementCapabilityRelDef> relationsList = allResourceInstances.left().value().right;
- for (RequirementCapabilityRelDef relation : relationsList) {
- String origFrom = relation.getFromNode();
- String origTo = relation.getToNode();
- relation.setFromNode(riMapper.get(origFrom).getUniqueId());
- relation.setToNode(riMapper.get(origTo).getUniqueId());
- List<RequirementAndRelationshipPair> relationships = relation.getRelationships();
- for (RequirementAndRelationshipPair pair : relationships) {
- // for all atomic resource instances need to update to relevant
- // new ri ids
- String capOwnerId = pair.getCapabilityOwnerId();
- String reqOwnerId = pair.getRequirementOwnerId();
- if (isAtomicComponentInstance(riMapper.get(origFrom))) {
- reqOwnerId = riMapper.get(reqOwnerId).getUniqueId();
- }
- if (isAtomicComponentInstance(riMapper.get(origTo))) {
- capOwnerId = riMapper.get(capOwnerId).getUniqueId();
- }
- pair.setRequirementOwnerId(reqOwnerId);
- pair.setCapabilityOwnerId(capOwnerId);
- }
-
- Either<RequirementCapabilityRelDef, StorageOperationStatus> associateInstances = associateResourceInstances(component.getUniqueId(), containerNodeType, relation, true, true);
- if (associateInstances.isRight()) {
- StorageOperationStatus status = associateInstances.right().value();
- log.error("failed to assosiate resource instance {} and resource instance {}. status ={}", relation.getFromNode(), relation.getToNode(), status);
- return Either.right(status);
- }
- }
-
- return Either.left(result);
- }
-
- public Either<ImmutablePair<List<ComponentInstance>, Map<String, String>>, StorageOperationStatus> cloneAllComponentInstancesFromContainerComponent(String componentIdFrom, String componentIdTo, NodeTypeEnum containerNodeType,
- NodeTypeEnum compInstNodeType, LifecycleStateEnum targetLifecycle, TitanVertex metadataVertex, Resource prevResource, Resource newResource, Map<String, List<ComponentInstanceProperty>> inputsPropMap) {
-
- List<ComponentInstance> list = new ArrayList<ComponentInstance>();
- Map<String, String> oldCompInstToNew = new HashMap<>();
-
- ImmutablePair<List<ComponentInstance>, Map<String, String>> result = new ImmutablePair<List<ComponentInstance>, Map<String, String>>(list, oldCompInstToNew);
-
- List<ComponentInstance> riList = prevResource.getComponentInstances();
- Map<String, ComponentInstance> riMapper = new HashMap<>();
- int instanceNumber = 0;
- long timeProperties = 0;
- if (riList != null) {
- for (ComponentInstance ri : riList) {
- instanceNumber++;
- String origRiUniqueID = ri.getUniqueId();
- Either<TitanVertex, StorageOperationStatus> createResourceInstance = createComponentInstance(componentIdTo, containerNodeType, String.valueOf(instanceNumber), false, ri, compInstNodeType, true, true, metadataVertex);
- if (createResourceInstance.isRight()) {
- StorageOperationStatus status = createResourceInstance.right().value();
- log.error("failed to clone resource instance {}. status ={}", origRiUniqueID, status);
- return Either.right(status);
- }
- TitanVertex createdInstance = createResourceInstance.left().value();
- String createdInstanceId = (String) titanGenericDao.getProperty(createdInstance, GraphPropertiesDictionary.UNIQUE_ID.getProperty());
-
- StorageOperationStatus associateArtifactsToResource = cloneResourceInstanceArtifacts(createdInstance, ri, targetLifecycle);
- if (associateArtifactsToResource != StorageOperationStatus.OK) {
- log.debug("failed to clone resource instance {} artifacts. error {} ", ri.getNormalizedName(), associateArtifactsToResource.name());
- return Either.right(associateArtifactsToResource);
- }
-
- long start = System.currentTimeMillis();
- StorageOperationStatus associatePropertyValuesToResource = cloneResourceInstancePropertyValues(createdInstance, ri, inputsPropMap, newResource);
- if (associatePropertyValuesToResource != StorageOperationStatus.OK) {
- log.debug("failed to clone resource instance {} property values. error {} ", ri.getNormalizedName(), associatePropertyValuesToResource.name());
- return Either.right(associatePropertyValuesToResource);
- }
- long end = System.currentTimeMillis();
- timeProperties += (end - start);
-
- StorageOperationStatus associateAttributeValuesToResource = cloneResourceInstanceAttributeValues(createdInstance, ri, createdInstanceId);
- if (associateAttributeValuesToResource != StorageOperationStatus.OK) {
- log.debug("failed to clone resource instance {} attribute values. error {} ", ri.getNormalizedName(), associateAttributeValuesToResource.name());
- return Either.right(associateAttributeValuesToResource);
- }
-
- StorageOperationStatus associateInputValuesToResource = cloneResourceInstanceInputsValues(createdInstance, ri, createdInstanceId, newResource, null);
- if (associateInputValuesToResource != StorageOperationStatus.OK) {
- log.debug("failed to clone resource instance {} property values. error {} ", ri.getNormalizedName(), associatePropertyValuesToResource.name());
- return Either.right(associatePropertyValuesToResource);
- }
- Map<String, Object> properties = titanGenericDao.getProperties(createdInstance);
- ComponentInstanceData createdComponentInstance = GraphElementFactory.createElement(NodeTypeEnum.ResourceInstance.getName(), GraphElementTypeEnum.Node, properties, ComponentInstanceData.class);
- ComponentInstance createdResourceInstance = new ComponentInstance(createdComponentInstance.getComponentInstDataDefinition());
- riMapper.put(origRiUniqueID, createdResourceInstance);
-
- list.add(createdResourceInstance);
- oldCompInstToNew.put(origRiUniqueID, createdResourceInstance.getUniqueId());
- }
- }
- log.info("*********** total properties in ms {}", timeProperties);
-
- // List<RequirementCapabilityRelDef> relationsList =
- // instanceRelationPair.right;
- List<RequirementCapabilityRelDef> relationsList = prevResource.getComponentInstancesRelations();
- if (relationsList != null) {
- for (RequirementCapabilityRelDef relation : relationsList) {
- String origFrom = relation.getFromNode();
- String origTo = relation.getToNode();
- relation.setFromNode(riMapper.get(origFrom).getUniqueId());
- relation.setToNode(riMapper.get(origTo).getUniqueId());
- List<RequirementAndRelationshipPair> relationships = relation.getRelationships();
- for (RequirementAndRelationshipPair pair : relationships) {
- // for all atomic resource instances need to update to
- // relevant
- // new ri ids
- String capOwnerId = pair.getCapabilityOwnerId();
- String reqOwnerId = pair.getRequirementOwnerId();
- if (isAtomicComponentInstance(riMapper.get(origFrom))) {
- reqOwnerId = riMapper.get(reqOwnerId).getUniqueId();
- }
- if (isAtomicComponentInstance(riMapper.get(origTo))) {
- capOwnerId = riMapper.get(capOwnerId).getUniqueId();
- }
- pair.setRequirementOwnerId(reqOwnerId);
- pair.setCapabilityOwnerId(capOwnerId);
- }
-
- Either<RequirementCapabilityRelDef, StorageOperationStatus> associateInstances = associateResourceInstances(componentIdTo, containerNodeType, relation, true, true);
- if (associateInstances.isRight()) {
- StorageOperationStatus status = associateInstances.right().value();
- log.error("failed to assosiate resource instance {} and resource instance {}. status ={}", relation.getFromNode(), relation.getToNode(), status);
- return Either.right(status);
- }
- }
- }
- return Either.left(result);
- }
-
- private boolean isAtomicComponentInstance(ComponentInstance componentInstance) {
- OriginTypeEnum originType = componentInstance.getOriginType();
- if (originType == OriginTypeEnum.VFC || originType == OriginTypeEnum.VFCMT || originType == OriginTypeEnum.VL || originType == OriginTypeEnum.CP) {
- return true;
- }
- return false;
- }
-
- private StorageOperationStatus cloneResourceInstanceArtifacts(ComponentInstance toResourceInstance, ComponentInstance fromResourceInstance, LifecycleStateEnum targetLifecycle) {
-
- Either<Map<String, ArtifactDefinition>, StorageOperationStatus> getArtifactsOfRI = artifactOperation.getArtifacts(fromResourceInstance.getUniqueId(), NodeTypeEnum.ResourceInstance, true);
- if (getArtifactsOfRI.isRight()) {
- StorageOperationStatus status = getArtifactsOfRI.right().value();
- if (status.equals(StorageOperationStatus.NOT_FOUND)) {
- status = StorageOperationStatus.OK;
- }
- return status;
- }
-
- Map<String, ArtifactDefinition> artifacts = getArtifactsOfRI.left().value();
- List<GroupInstance> groupInstancesFrom = fromResourceInstance.getGroupInstances();
- List<GroupInstance> groupInstancesTo = toResourceInstance.getGroupInstances();
- Map<String, List<String>> groupsInstanceArtifact = new HashMap<String, List<String>>();
- for (Entry<String, ArtifactDefinition> entry : artifacts.entrySet()) {
-
- ArtifactDefinition artifactDefinition = entry.getValue();
- String generatedFromIdArtifactUid = artifactDefinition.getGeneratedFromId();
-
- // US687135 Do not Add VF_MODULES_METADATA when checking out
- if (ArtifactTypeEnum.VF_MODULES_METADATA.getType().equals(artifactDefinition.getArtifactType())) {
- // The artifact of type VF_MODULES_METADATA should not be cloned
- // unless we are changing the state to certified.
- if (targetLifecycle != null && targetLifecycle != LifecycleStateEnum.CERTIFIED) {
- continue;
- }
- }
- Either<ArtifactDefinition, StorageOperationStatus> addArifactToResource = Either.left(artifactDefinition);
-
- addArifactToResource = artifactOperation.addArifactToComponent(artifactDefinition, toResourceInstance.getUniqueId(), NodeTypeEnum.ResourceInstance, false, true);
-
- if (addArifactToResource.isRight()) {
- return addArifactToResource.right().value();
- }
-
- if (groupInstancesTo != null) {
- for (GroupInstance groupInstanceTo : groupInstancesTo) {
- Optional<String> op = groupInstanceTo.getArtifacts().stream().filter(p -> p.equals(generatedFromIdArtifactUid)).findAny();
- if (op.isPresent()) {
-
- List<String> artifactsUid = null;
- if (groupsInstanceArtifact.containsKey(groupInstanceTo.getUniqueId())) {
- artifactsUid = groupsInstanceArtifact.get(groupInstanceTo.getUniqueId());
- } else {
- artifactsUid = new ArrayList<String>();
- }
- artifactsUid.add(addArifactToResource.left().value().getUniqueId());
- groupsInstanceArtifact.put(groupInstanceTo.getUniqueId(), artifactsUid);
- break;
- }
- }
-
- }
- }
- if (groupsInstanceArtifact != null && !groupsInstanceArtifact.isEmpty()) {
- for (Map.Entry<String, List<String>> groupArtifact : groupsInstanceArtifact.entrySet()) {
- groupInstanceOperation.associateArtifactsToGroupInstance(groupArtifact.getKey(), groupArtifact.getValue());
- }
- }
- Either<List<GroupInstance>, StorageOperationStatus> groupInstanceStatus = groupInstanceOperation.getAllGroupInstances(toResourceInstance.getUniqueId(), NodeTypeEnum.ResourceInstance);
- if (groupInstanceStatus.isRight()) {
- log.debug("failed to get groupinstance for component inatance {}", toResourceInstance.getUniqueId());
- return groupInstanceStatus.right().value();
- }
- toResourceInstance.setGroupInstances(groupInstanceStatus.left().value());
- toResourceInstance.setDeploymentArtifacts(artifacts);
- return StorageOperationStatus.OK;
- }
-
- private StorageOperationStatus cloneResourceInstanceArtifacts(TitanVertex toResourceInstance, ComponentInstance fromResourceInstance, LifecycleStateEnum targetLifecycle) {
-
- Either<Map<String, TitanVertex>, StorageOperationStatus> getArtifactsOfRI = artifactOperation.getArtifactsVertecies(fromResourceInstance.getUniqueId(), NodeTypeEnum.ResourceInstance, true);
- if (getArtifactsOfRI.isRight()) {
- StorageOperationStatus status = getArtifactsOfRI.right().value();
- if (status.equals(StorageOperationStatus.NOT_FOUND)) {
- status = StorageOperationStatus.OK;
- }
- return status;
- }
-
- Map<String, TitanVertex> artifacts = getArtifactsOfRI.left().value();
- for (Entry<String, TitanVertex> entry : artifacts.entrySet()) {
-
- TitanVertex artifactVertex = entry.getValue();
- // US687135 Do not Add VF_MODULES_METADATA when checking out
- String artifactType = (String) titanGenericDao.getProperty(artifactVertex, GraphPropertiesDictionary.ARTIFACT_TYPE.getProperty());
- String label = (String) titanGenericDao.getProperty(artifactVertex, GraphPropertiesDictionary.ARTIFACT_LABEL.getProperty());
- if (ArtifactTypeEnum.VF_MODULES_METADATA.getType().equals(artifactType)) {
- // The artifact of type VF_MODULES_METADATA should not be cloned
- // unless we are changing the state to certified.
- if (targetLifecycle != null && targetLifecycle != LifecycleStateEnum.CERTIFIED) {
- continue;
- }
- }
-
- StorageOperationStatus addArifactToResource = artifactOperation.addArifactToComponent(artifactVertex, toResourceInstance, label);
-
- if (!addArifactToResource.equals(StorageOperationStatus.OK)) {
- return addArifactToResource;
- }
- }
- // toResourceInstance.setDeploymentArtifacts(artifacts);
- return StorageOperationStatus.OK;
- }
-
public Either<Integer, StorageOperationStatus> increaseAndGetResourceInstanceSpecificCounter(String resourceInstanceId, GraphPropertiesDictionary counterType, boolean inTransaction) {
Either<Integer, StorageOperationStatus> result = null;
@@ -3566,449 +145,6 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo
}
- public Either<Integer, StorageOperationStatus> increaseAndGetResourceInstanceSpecificCounter(TitanVertex resourceInstanceVertex, GraphPropertiesDictionary counterType) {
-
- Either<Integer, StorageOperationStatus> result = null;
-
- VertexProperty<Object> vertexProperty = resourceInstanceVertex.property(counterType.getProperty());
- Integer counter = 0;
- if (vertexProperty.isPresent()) {
- if (vertexProperty.value() != null) {
- counter = (Integer) vertexProperty.value();
- }
- }
- counter++;
- resourceInstanceVertex.property(counterType.getProperty(), counter);
-
- result = Either.left(counter);
- return result;
-
- }
-
- @Override
- public Either<List<String>, StorageOperationStatus> getAllComponentInstancesNames(String serviceId, NodeTypeEnum nodeType, boolean inTransaction) {
-
- Either<List<String>, StorageOperationStatus> result = null;
-
- try {
-
- Either<List<String>, TitanOperationStatus> resInstancesOfService = getComponentInstancesNameOfService(serviceId, nodeType);
-
- log.debug("After fetching resource instances of service {}. result is {}", serviceId, resInstancesOfService);
- if (resInstancesOfService.isRight()) {
- TitanOperationStatus status = resInstancesOfService.right().value();
- if (status != TitanOperationStatus.NOT_FOUND) {
- log.error("Failed to find resource instances of service {}. status is {}", serviceId, status);
- }
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
-
- List<String> names = resInstancesOfService.left().value();
-
- if (names == null || names.isEmpty()) {
- return Either.right(StorageOperationStatus.NOT_FOUND);
- }
-
- result = Either.left(names);
-
- } finally {
- if (false == inTransaction) {
- commitOrRollback(result);
- }
- }
- return result;
- }
-
- private Either<List<String>, TitanOperationStatus> getComponentInstancesNameOfService(String serviceId, NodeTypeEnum nodeType) {
-
- List<String> resourcesInstanseName = new ArrayList<String>();
- Either<List<ImmutablePair<ComponentInstanceData, GraphEdge>>, TitanOperationStatus> resourceInstancesRes = getAllComponentInstanceFromGraph(serviceId, nodeType, false);
- if (resourceInstancesRes.isRight()) {
- TitanOperationStatus status = resourceInstancesRes.right().value();
- log.debug("Resource instance was found under service {}. status is {}", serviceId, status);
- return Either.right(status);
- }
-
- List<ImmutablePair<ComponentInstanceData, GraphEdge>> resourceInstances = resourceInstancesRes.left().value();
- if (resourceInstances != null && false == resourceInstances.isEmpty()) {
-
- for (ImmutablePair<ComponentInstanceData, GraphEdge> immutablePair : resourceInstances) {
- ComponentInstanceData resourceInstanceData = immutablePair.getKey();
- log.debug("Going to fetch the relationships of resource instance {}", resourceInstanceData);
- resourcesInstanseName.add(resourceInstanceData.getComponentInstDataDefinition().getName());
-
- }
- }
-
- return Either.left(resourcesInstanseName);
- }
-
- @Override
- public Either<List<String>, StorageOperationStatus> getAllComponentInstancesNames(String componentId, NodeTypeEnum nodeType) {
-
- return getAllComponentInstancesNames(componentId, nodeType, false);
- }
-
- @Override
- public Either<ComponentInstance, StorageOperationStatus> getResourceInstanceById(String resourceId) {
- Either<ComponentInstanceData, TitanOperationStatus> resourceInstanceData = findResourceInstance(resourceId);
-
- if (resourceInstanceData.isRight()) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(resourceInstanceData.right().value()));
- }
-
- return Either.left(new ComponentInstance(resourceInstanceData.left().value().getComponentInstDataDefinition()));
-
- }
-
- private StorageOperationStatus setCompInstDeploymentArtifactsFromGraph(Map<String, Map<String, ArtifactDefinition>> resourcesArtifacts, String uniqueId, ComponentInstance resourceInstance) {
-
- if (resourcesArtifacts.containsKey(uniqueId)) {
- resourceInstance.setDeploymentArtifacts(resourcesArtifacts.get(uniqueId));
- return StorageOperationStatus.OK;
- }
-
- Either<Map<String, ArtifactDefinition>, StorageOperationStatus> result = artifactOperation.getArtifacts(uniqueId, NodeTypeEnum.Resource, true, ArtifactGroupTypeEnum.DEPLOYMENT.getType());
- if (result.isRight()) {
- StorageOperationStatus status = result.right().value();
- if (status != StorageOperationStatus.NOT_FOUND) {
- return status;
- } else {
- return StorageOperationStatus.OK;
- }
- }
- Map<String, ArtifactDefinition> artifacts = result.left().value();
- if (!artifacts.isEmpty()) {
- Map<String, ArtifactDefinition> tempArtifacts = new HashMap<String, ArtifactDefinition>(artifacts);
- for (Entry<String, ArtifactDefinition> artifact : artifacts.entrySet()) {
- if (!artifact.getValue().checkEsIdExist()) {
- tempArtifacts.remove(artifact.getKey());
- }
- }
- resourceInstance.setDeploymentArtifacts(tempArtifacts);
- resourcesArtifacts.put(uniqueId, tempArtifacts);
- }
-
- return StorageOperationStatus.OK;
-
- }
-
- private StorageOperationStatus setCompInstCapabilitiesFromGraph(Map<String, Map<String, CapabilityDefinition>> resourcesCapabilities, Component component, NodeTypeEnum compInstType, ComponentInstance resourceInstance,
- List<String> respourceDerivedList) {
-
- StorageOperationStatus status;
- ComponentOperation componentOperation = getComponentOperation(compInstType);
- Either<Map<String, List<CapabilityDefinition>>, TitanOperationStatus> eitherCapabilities = componentOperation.getCapabilities(component, compInstType, true);
- if (eitherCapabilities.isLeft()) {
- status = StorageOperationStatus.OK;
- Map<String, List<CapabilityDefinition>> capabilities = eitherCapabilities.left().value();
- if (capabilities != null && !capabilities.isEmpty()) {
- capabilities.forEach((type, list) -> {
- if (list != null && !list.isEmpty()) {
- list.forEach((capability) -> {
- // We want to set ownerId only for instances coming
- // from atomic resources, otherwise we don't want
- // to overwrite the existing ownerId of underlying
- // component instances
- if (isAtomicResource(component)) {
- capability.setOwnerId(resourceInstance.getUniqueId());
- capability.setOwnerName(resourceInstance.getName());
- capability.setCapabilitySources(respourceDerivedList);
- }
- });
- }
- });
- resourceInstance.setCapabilities(capabilities);
- }
- } else {
- status = StorageOperationStatus.GENERAL_ERROR;
- }
- return status;
-
- }
-
- private StorageOperationStatus setCompInstRequirementsFromGraph(Map<String, Map<String, RequirementDefinition>> resourcesReq, Component component, NodeTypeEnum compInstType, ComponentInstance resourceInstance) {
- StorageOperationStatus status;
- ComponentOperation componentOperation = getComponentOperation(compInstType);
- Either<Map<String, List<RequirementDefinition>>, TitanOperationStatus> eitherCapabilities = componentOperation.getRequirements(component, compInstType, true);
- if (eitherCapabilities.isLeft()) {
- status = StorageOperationStatus.OK;
- Map<String, List<RequirementDefinition>> requirements = eitherCapabilities.left().value();
- if (requirements != null && !requirements.isEmpty()) {
- // We want to set ownerId only for instances coming from atomic
- // resources, otherwise we don't want
- // to overwrite the existing ownerId of underlying component
- // instances
- if (isAtomicResource(component)) {
- requirements.forEach((type, list) -> {
- if (list != null && !list.isEmpty()) {
- list.forEach((requirement) -> {
- requirement.setOwnerId(resourceInstance.getUniqueId());
- requirement.setOwnerName(resourceInstance.getName());
- });
- }
- });
- }
- resourceInstance.setRequirements(requirements);
- }
- } else {
- status = StorageOperationStatus.GENERAL_ERROR;
- }
- return status;
- }
-
- @Override
- public Either<List<ImmutablePair<CapabilityData, GraphEdge>>, TitanOperationStatus> getCapabilities(ComponentInstance compInstance, NodeTypeEnum nodeTypeEnum) {
- DataNodeCollector<CapabilityData> collector = () -> titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(nodeTypeEnum), compInstance.getUniqueId(), GraphEdgeLabels.CALCULATED_CAPABILITY, NodeTypeEnum.Capability,
- CapabilityData.class);
-
- return getDataFromGraph(collector);
- }
-
- @Override
- public Either<List<ImmutablePair<RequirementData, GraphEdge>>, TitanOperationStatus> getRequirements(ComponentInstance compInstance, NodeTypeEnum nodeTypeEnum) {
-
- DataNodeCollector<RequirementData> collector = () -> titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(nodeTypeEnum), compInstance.getUniqueId(), GraphEdgeLabels.CALCULATED_REQUIREMENT, NodeTypeEnum.Requirement,
- RequirementData.class);
-
- return getDataFromGraph(collector);
-
- }
-
- @Override
- public Either<List<ImmutablePair<CapabilityData, GraphEdge>>, TitanOperationStatus> getFulfilledCapabilities(ComponentInstance compInstance, NodeTypeEnum nodeTypeEnum) {
- DataNodeCollector<CapabilityData> collector = () -> titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(nodeTypeEnum), compInstance.getUniqueId(), GraphEdgeLabels.CALCULATED_CAPABILITY_FULLFILLED, NodeTypeEnum.Capability,
- CapabilityData.class);
-
- return getDataFromGraph(collector);
- }
-
- @Override
- public Either<List<ImmutablePair<RequirementData, GraphEdge>>, TitanOperationStatus> getFulfilledRequirements(ComponentInstance compInstance, NodeTypeEnum nodeTypeEnum) {
-
- DataNodeCollector<RequirementData> collector = () -> titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(nodeTypeEnum), compInstance.getUniqueId(), GraphEdgeLabels.CALCULATED_REQUIREMENT_FULLFILLED, NodeTypeEnum.Requirement,
- RequirementData.class);
-
- return getDataFromGraph(collector);
-
- }
-
- public Either<Boolean, StorageOperationStatus> isAvailableRequirement(ComponentInstance fromResInstance, RequirementAndRelationshipPair relationPair) {
- Either<TitanVertex, TitanOperationStatus> fromRi = titanGenericDao.getVertexByProperty(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), fromResInstance.getUniqueId());
- if (fromRi.isRight()) {
- log.debug("Failed to fetch component instance {} error {}", fromResInstance.getUniqueId(), fromRi.right().value());
- return Either.right(StorageOperationStatus.NOT_FOUND);
- }
- Iterator<Edge> edgeIter = fromRi.left().value().edges(Direction.OUT, GraphEdgeLabels.CALCULATED_REQUIREMENT.name());
- if (edgeIter == null || !edgeIter.hasNext()) {
- log.debug("No available CALCULATED_REQUIREMENT edges. All full filled for RI {}", fromResInstance.getUniqueId());
- return Either.left(false);
- }
- boolean exist = false;
- while (edgeIter.hasNext()) {
- Edge edge = edgeIter.next();
- TitanVertex reqVertex = (TitanVertex) edge.inVertex();
- String reqId = (String) titanGenericDao.getProperty(reqVertex, UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Requirement));
- if (reqId.equals(relationPair.getRequirementUid())) {
- String ownerIdOnEdge = (String) edge.value(GraphEdgePropertiesDictionary.OWNER_ID.getProperty());
- if (ownerIdOnEdge.equals(relationPair.getRequirementOwnerId())) {
- String leftOccurrences = (String) edge.value(GraphEdgePropertiesDictionary.LEFT_OCCURRENCES.getProperty());
- if (leftOccurrences != null && !leftOccurrences.equals(RequirementDataDefinition.MAX_OCCURRENCES)) {
- Integer leftIntValue = Integer.parseInt(leftOccurrences);
- if (leftIntValue > 0) {
- exist = true;
- }
- } else {
- exist = true;
- }
- break;
- }
- }
- }
- return Either.left(exist);
- }
-
- public Either<Boolean, StorageOperationStatus> isAvailableCapabilty(ComponentInstance toResInstance, RequirementAndRelationshipPair relationPair) {
- Either<TitanVertex, TitanOperationStatus> fromRi = titanGenericDao.getVertexByProperty(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), toResInstance.getUniqueId());
- if (fromRi.isRight()) {
- log.debug("Failed to fetch component instance {} error {}", toResInstance.getUniqueId(), fromRi.right().value());
- return Either.right(StorageOperationStatus.NOT_FOUND);
- }
- Iterator<Edge> edgeIter = fromRi.left().value().edges(Direction.OUT, GraphEdgeLabels.CALCULATED_CAPABILITY.name());
- if (edgeIter == null || !edgeIter.hasNext()) {
- log.debug("No available CALCULATED_CAPABILITY edges. All full filled for RI {}", toResInstance.getUniqueId());
- return Either.right(StorageOperationStatus.NOT_FOUND);
- }
- boolean exist = false;
- while (edgeIter.hasNext()) {
- Edge edge = edgeIter.next();
- TitanVertex reqVertex = (TitanVertex) edge.inVertex();
- String capId = (String) titanGenericDao.getProperty(reqVertex, UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Capability));
- if (capId.equals(relationPair.getCapabilityUid())) {
- String ownerIdOnEdge = (String) edge.value(GraphEdgePropertiesDictionary.OWNER_ID.getProperty());
- if (ownerIdOnEdge.equals(relationPair.getCapabilityOwnerId())) {
- String leftOccurrences = (String) edge.value(GraphEdgePropertiesDictionary.LEFT_OCCURRENCES.getProperty());
- if (leftOccurrences != null && !leftOccurrences.equals(CapabilityDataDefinition.MAX_OCCURRENCES)) {
- Integer leftIntValue = Integer.parseInt(leftOccurrences);
- if (leftIntValue > 0) {
- exist = true;
- }
- } else {
- exist = true;
- }
- break;
- }
- }
- }
- return Either.left(exist);
- }
-
- interface DataNodeCollector<Data> {
- Either<List<ImmutablePair<Data, GraphEdge>>, TitanOperationStatus> getDataNodes();
- }
-
- public <Data> Either<List<ImmutablePair<Data, GraphEdge>>, TitanOperationStatus> getDataFromGraph(DataNodeCollector<Data> dataCollector) {
- Either<List<ImmutablePair<Data, GraphEdge>>, TitanOperationStatus> eitherRet;
-
- Either<List<ImmutablePair<Data, GraphEdge>>, TitanOperationStatus> childrenNodes = dataCollector.getDataNodes();
-
- if (childrenNodes.isLeft()) {
- List<ImmutablePair<Data, GraphEdge>> collectedData = childrenNodes.left().value().stream().map(element -> new ImmutablePair<Data, GraphEdge>(element.getLeft(), element.getRight())).collect(Collectors.toList());
- eitherRet = Either.left(collectedData);
- } else {
- eitherRet = Either.right(childrenNodes.right().value());
- }
- return eitherRet;
- }
-
- public ComponentOperation getComponentOperation(NodeTypeEnum componentType) {
- if (NodeTypeEnum.Service == componentType) {
- return serviceOperation;
- } else if (NodeTypeEnum.Resource == componentType) {
- return resourceOperation;
- }
- return null;
- }
-
- private boolean isAtomicResource(Component component) {
- // true if component is of type VL/CP/VFC
- boolean isFromAtomicResource = (component.getComponentType() == ComponentTypeEnum.RESOURCE && ((Resource) component).getResourceType() != ResourceTypeEnum.VF);
- return isFromAtomicResource;
- }
-
- private StorageOperationStatus cloneResourceInstanceAttributeValues(ComponentInstance createdInstance, ComponentInstance resourceInstance) {
- Wrapper<StorageOperationStatus> storageStatusWrapper = new Wrapper<>();
- Wrapper<List<ComponentInstanceProperty>> compInstanceAttList = new Wrapper<>();
-
- findAllAttributesOfResourceInstance(resourceInstance, compInstanceAttList, storageStatusWrapper);
-
- if (storageStatusWrapper.isEmpty()) {
- validateListNotEmpty(storageStatusWrapper, compInstanceAttList.getInnerElement());
- }
-
- if (storageStatusWrapper.isEmpty()) {
- List<ComponentInstanceProperty> attributesOnInstance = compInstanceAttList.getInnerElement();
- for (int i = 0; i < attributesOnInstance.size() && storageStatusWrapper.isEmpty(); i++) {
- cloneSingleAttributeOnResourceInstance(createdInstance, attributesOnInstance.get(i), storageStatusWrapper);
- }
- }
-
- StorageOperationStatus result = storageStatusWrapper.isEmpty() ? StorageOperationStatus.OK : storageStatusWrapper.getInnerElement();
- return result;
-
- }
-
- private StorageOperationStatus cloneResourceInstanceAttributeValues(TitanVertex createdInstanceVertex, ComponentInstance resourceInstance, String instanceId) {
- Wrapper<StorageOperationStatus> storageStatusWrapper = new Wrapper<>();
- Wrapper<List<ComponentInstanceProperty>> compInstanceAttList = new Wrapper<>();
-
- findAllAttributesOfResourceInstance(resourceInstance, compInstanceAttList, storageStatusWrapper);
-
- if (storageStatusWrapper.isEmpty()) {
- validateListNotEmpty(storageStatusWrapper, compInstanceAttList.getInnerElement());
- }
-
- if (storageStatusWrapper.isEmpty()) {
- List<ComponentInstanceProperty> attributesOnInstance = compInstanceAttList.getInnerElement();
- for (int i = 0; i < attributesOnInstance.size() && storageStatusWrapper.isEmpty(); i++) {
- StorageOperationStatus result = cloneSingleAttributeOnResourceInstance(createdInstanceVertex, attributesOnInstance.get(i), instanceId);
- if (result != StorageOperationStatus.OK) {
- log.trace("Failed to clone attribute for instance {} error {}", instanceId, result);
- return result;
- }
- }
- }
-
- StorageOperationStatus result = storageStatusWrapper.isEmpty() ? StorageOperationStatus.OK : storageStatusWrapper.getInnerElement();
- return result;
-
- }
-
- private <T> void validateListNotEmpty(Wrapper<StorageOperationStatus> storageStatusWrapper, List<T> attributesOnInstance) {
- if (attributesOnInstance == null || attributesOnInstance.isEmpty() == true) {
- storageStatusWrapper.setInnerElement(StorageOperationStatus.OK);
- }
- }
-
- private void findAllAttributesOfResourceInstance(ComponentInstance resourceInstance, Wrapper<List<ComponentInstanceProperty>> compInstanceAttList, Wrapper<StorageOperationStatus> storageStatusWrapper) {
-
- Either<List<ComponentInstanceProperty>, TitanOperationStatus> allAttributes = attributeOperation.getAllAttributesOfResourceInstance(resourceInstance);
- if (allAttributes.isRight()) {
- TitanOperationStatus status = allAttributes.right().value();
- if (status == TitanOperationStatus.NOT_FOUND) {
- status = TitanOperationStatus.OK;
- }
- StorageOperationStatus storageStatus = DaoStatusConverter.convertTitanStatusToStorageStatus(status);
- storageStatusWrapper.setInnerElement(storageStatus);
- } else {
- compInstanceAttList.setInnerElement(allAttributes.left().value());
- }
- }
-
- private void cloneSingleAttributeOnResourceInstance(ComponentInstance createdInstance, ComponentInstanceProperty attribute, Wrapper<StorageOperationStatus> storageStatusWrapper) {
- // Only if valueUniqueId is not empty, then its belongs to the
- // instance
- if (attribute.getValueUniqueUid() != null) {
- attribute.setValueUniqueUid(null);
- Either<Integer, StorageOperationStatus> counterRes = increaseAndGetResourceInstanceSpecificCounter(createdInstance.getUniqueId(), GraphPropertiesDictionary.ATTRIBUTE_COUNTER, true);
- if (counterRes.isRight()) {
- storageStatusWrapper.setInnerElement(counterRes.right().value());
- } else {
- Either<AttributeValueData, TitanOperationStatus> addAttributeToResourceInstance = addAttributeToResourceInstance(attribute, createdInstance.getUniqueId(), counterRes.left().value());
-
- if (addAttributeToResourceInstance.isRight()) {
- TitanOperationStatus status = addAttributeToResourceInstance.right().value();
- StorageOperationStatus storageStatus = DaoStatusConverter.convertTitanStatusToStorageStatus(status);
- storageStatusWrapper.setInnerElement(storageStatus);
- }
- }
- }
-
- }
-
- private StorageOperationStatus cloneSingleAttributeOnResourceInstance(TitanVertex createdInstanceVertex, ComponentInstanceProperty attribute, String instanceId) {
- // Only if valueUniqueId is not empty, then its belongs to the
- // instance
- if (attribute.getValueUniqueUid() != null) {
- attribute.setValueUniqueUid(null);
- Either<Integer, StorageOperationStatus> counterRes = increaseAndGetResourceInstanceSpecificCounter(createdInstanceVertex, GraphPropertiesDictionary.ATTRIBUTE_COUNTER);
- if (counterRes.isRight()) {
- return counterRes.right().value();
- } else {
- Either<AttributeValueData, TitanOperationStatus> addAttributeToResourceInstance = addAttributeToResourceInstance(attribute, instanceId, counterRes.left().value());
-
- if (addAttributeToResourceInstance.isRight()) {
- TitanOperationStatus status = addAttributeToResourceInstance.right().value();
- StorageOperationStatus storageStatus = DaoStatusConverter.convertTitanStatusToStorageStatus(status);
- return storageStatus;
- }
- }
- }
- return StorageOperationStatus.OK;
-
- }
-
private void connectAttValueDataToComponentInstanceData(Wrapper<TitanOperationStatus> errorWrapper, ComponentInstanceData compIns, AttributeValueData attValueData) {
Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(compIns, attValueData, GraphEdgeLabels.ATTRIBUTE_VALUE, null);
@@ -4021,18 +157,6 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo
}
}
- private void connectInputValueDataToComponentInstanceData(Wrapper<TitanOperationStatus> errorWrapper, ComponentInstanceData compIns, InputValueData attValueData) {
-
- Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(compIns, attValueData, GraphEdgeLabels.INPUT_VALUE, null);
-
- if (createRelResult.isRight()) {
- TitanOperationStatus operationStatus = createRelResult.right().value();
- errorWrapper.setInnerElement(operationStatus);
- BeEcompErrorManager.getInstance().logInternalFlowError("connectInputValueDataToComponentInstanceData",
- "Failed to associate resource instance " + compIns.getUniqueId() + " input value " + attValueData.getUniqueId() + " in graph. status is " + operationStatus, ErrorSeverity.ERROR);
- }
- }
-
private void connectAttValueDataToAttData(Wrapper<TitanOperationStatus> errorWrapper, AttributeData attData, AttributeValueData attValueData) {
Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(attValueData, attData, GraphEdgeLabels.ATTRIBUTE_IMPL, null);
@@ -4046,19 +170,6 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo
}
}
- private void connectInputValueDataToInputData(Wrapper<TitanOperationStatus> errorWrapper, InputsData attData, InputValueData attValueData) {
-
- Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(attValueData, attData, GraphEdgeLabels.INPUT_IMPL, null);
-
- if (createRelResult.isRight()) {
- TitanOperationStatus operationStatus = createRelResult.right().value();
- BeEcompErrorManager.getInstance().logInternalFlowError("connectInputValueDataToInputData", "Failed to associate input value " + attValueData.getUniqueId() + " to input " + attData.getUniqueId() + " in graph. status is " + operationStatus,
- ErrorSeverity.ERROR);
-
- errorWrapper.setInnerElement(operationStatus);
- }
- }
-
private void createAttributeValueDataNode(ComponentInstanceProperty attributeInstanceProperty, Integer index, Wrapper<TitanOperationStatus> errorWrapper, ComponentInstanceData resourceInstanceData,
Wrapper<AttributeValueData> attValueDataWrapper) {
String valueUniqueUid = attributeInstanceProperty.getValueUniqueUid();
@@ -4084,21 +195,6 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo
}
}
- /*
- * private void createInputValueDataNode(ComponentInstanceInput inputInstanceProperty, Integer index, Wrapper<TitanOperationStatus> errorWrapper, ComponentInstanceData resourceInstanceData, Wrapper<AttributeValueData> attValueDataWrapper) {
- * String valueUniqueUid = inputInstanceProperty.getValueUniqueUid(); if (valueUniqueUid == null) {
- *
- * String attValueDatauniqueId = UniqueIdBuilder.buildResourceInstanceInputValueUid(resourceInstanceData. getUniqueId(), index); AttributeValueData attributeValueData = buildAttributeValueDataFromComponentInstanceAttribute( inputInstanceProperty,
- * attValueDatauniqueId);
- *
- * log.debug("Before adding attribute value to graph {}", attributeValueData); Either<AttributeValueData, TitanOperationStatus> createNodeResult = titanGenericDao.createNode(attributeValueData, AttributeValueData.class);
- * log.debug("After adding attribute value to graph {}", attributeValueData);
- *
- * if (createNodeResult.isRight()) { TitanOperationStatus operationStatus = createNodeResult.right().value(); errorWrapper.setInnerElement(operationStatus); } else { attValueDataWrapper.setInnerElement(createNodeResult.left().value()); }
- *
- * } else { BeEcompErrorManager.getInstance().logInternalFlowError( "CreateAttributeValueDataNode", "attribute value already exists.", ErrorSeverity.ERROR); errorWrapper.setInnerElement(TitanOperationStatus.ALREADY_EXIST); } }
- */
-
private AttributeValueData buildAttributeValueDataFromComponentInstanceAttribute(ComponentInstanceProperty resourceInstanceAttribute, String uniqueId) {
AttributeValueData attributeValueData = new AttributeValueData();
attributeValueData.setUniqueId(uniqueId);
@@ -4111,360 +207,6 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo
return attributeValueData;
}
- private InputValueData buildAttributeValueDataFromComponentInstanceAttribute(ComponentInstanceInput resourceInstanceInput, String uniqueId) {
- InputValueData inputValueData = new InputValueData();
- inputValueData.setUniqueId(uniqueId);
- inputValueData.setHidden(resourceInstanceInput.isHidden());
- inputValueData.setValue(resourceInstanceInput.getValue());
- inputValueData.setType(resourceInstanceInput.getType());
- long currentTimeMillis = System.currentTimeMillis();
- inputValueData.setCreationTime(currentTimeMillis);
- inputValueData.setModificationTime(currentTimeMillis);
- return inputValueData;
- }
-
- private StorageOperationStatus cloneResourceInstancePropertyValues(ComponentInstance toResourceInstance, ComponentInstance fromResourceInstance) {
-
- Either<List<ComponentInstanceProperty>, TitanOperationStatus> allProperties = propertyOperation.getAllPropertiesOfResourceInstanceOnlyPropertyDefId(fromResourceInstance.getUniqueId());
- if (allProperties.isRight()) {
- TitanOperationStatus status = allProperties.right().value();
- if (status == TitanOperationStatus.NOT_FOUND) {
- status = TitanOperationStatus.OK;
- }
- StorageOperationStatus storageStatus = DaoStatusConverter.convertTitanStatusToStorageStatus(status);
- return storageStatus;
- }
-
- List<ComponentInstanceProperty> propertiesOnInstance = allProperties.left().value();
- if (propertiesOnInstance == null || propertiesOnInstance.isEmpty() == true) {
- return StorageOperationStatus.OK;
- }
-
- for (ComponentInstanceProperty property : propertiesOnInstance) {
-
- // Only if valueUniqueId is not empty, then its belongs to the
- // instance
- if (property.getValueUniqueUid() != null) {
- property.setValueUniqueUid(null);
- List<PropertyRule> rules = property.getRules();
- if (rules != null) {
- for (PropertyRule propertyRule : rules) {
- propertyRule.replaceFirstToken(toResourceInstance.getUniqueId());
- }
- }
-
- } else {
- continue;
- }
-
- String resourceInstanceId = toResourceInstance.getUniqueId();
-
- Either<Integer, StorageOperationStatus> counterRes = this.increaseAndGetResourceInstanceSpecificCounter(resourceInstanceId, GraphPropertiesDictionary.PROPERTY_COUNTER, true);
-
- if (counterRes.isRight()) {
- log.debug("increaseAndGetResourcePropertyCounter failed resource instance {} property {}", resourceInstanceId, property);
- StorageOperationStatus status = counterRes.right().value();
- return status;
- }
- Integer index = counterRes.left().value();
-
- Either<PropertyValueData, TitanOperationStatus> addPropertyToResourceInstance = this.addPropertyToResourceInstance(property, toResourceInstance.getUniqueId(), false, index);
-
- if (addPropertyToResourceInstance.isRight()) {
- TitanOperationStatus status = addPropertyToResourceInstance.right().value();
- StorageOperationStatus storageStatus = DaoStatusConverter.convertTitanStatusToStorageStatus(status);
- return storageStatus;
- }
- }
-
- return StorageOperationStatus.OK;
- }
-
- private StorageOperationStatus cloneResourceInstancePropertyValues(TitanVertex toResourceInstance, ComponentInstance fromResourceInstance, Map<String, List<ComponentInstanceProperty>> inputsPropMap, Resource newResource) {
-
- String riId = (String) titanGenericDao.getProperty(toResourceInstance, GraphPropertiesDictionary.UNIQUE_ID.getProperty());
- Either<List<ComponentInstanceProperty>, TitanOperationStatus> allProperties = propertyOperation.getAllPropertiesOfResourceInstanceOnlyPropertyDefId(fromResourceInstance.getUniqueId());
- List<InputDefinition> newInputs = newResource.getInputs();
- //
- if (allProperties.isRight()) {
- TitanOperationStatus status = allProperties.right().value();
- if (status == TitanOperationStatus.NOT_FOUND) {
- status = TitanOperationStatus.OK;
- }
- StorageOperationStatus storageStatus = DaoStatusConverter.convertTitanStatusToStorageStatus(status);
- return storageStatus;
- }
-
- List<ComponentInstanceProperty> propertiesOnInstance = allProperties.left().value();
- if (propertiesOnInstance == null || propertiesOnInstance.isEmpty() == true) {
- return StorageOperationStatus.OK;
- }
-
- for (ComponentInstanceProperty property : propertiesOnInstance) {
-
- // Only if valueUniqueId is not empty, then its belongs to the
- // instance
- if (property.getValueUniqueUid() != null) {
- property.setValueUniqueUid(null);
- List<PropertyRule> rules = property.getRules();
- if (rules != null) {
- for (PropertyRule propertyRule : rules) {
- propertyRule.replaceFirstToken(riId);
- }
- }
-
- } else {
- continue;
- }
-
- String resourceInstanceId = riId;
-
- Either<Integer, StorageOperationStatus> counterRes = this.increaseAndGetResourceInstanceSpecificCounter(toResourceInstance, GraphPropertiesDictionary.PROPERTY_COUNTER);
-
- if (counterRes.isRight()) {
- log.debug("increaseAndGetResourcePropertyCounter failed resource instance {} property {}", resourceInstanceId, property);
- StorageOperationStatus status = counterRes.right().value();
- return status;
- }
- Integer index = counterRes.left().value();
-
- Either<ComponentInstanceProperty, TitanOperationStatus> addPropertyToResourceInstance = this.addPropertyToResourceInstance(property, toResourceInstance, false, index, resourceInstanceId);
-
- if (addPropertyToResourceInstance.isRight() && addPropertyToResourceInstance.right().value() != TitanOperationStatus.OK) {
- StorageOperationStatus storageStatus = DaoStatusConverter.convertTitanStatusToStorageStatus(addPropertyToResourceInstance.right().value());
- return storageStatus;
- }
- if (addPropertyToResourceInstance.isLeft()) {
- ComponentInstanceProperty newProp = addPropertyToResourceInstance.left().value();
- Set<String> inputsKey = inputsPropMap.keySet();
- String inputToAssName = null;
- GetInputValueDataDefinition getInputInfo = null;
- for (String inputName : inputsKey) {
- List<ComponentInstanceProperty> propsList = inputsPropMap.get(inputName);
- Optional<ComponentInstanceProperty> op = propsList.stream().filter(p -> p.getUniqueId().equals(property.getUniqueId())).findAny();
- if (op.isPresent()) {
- ComponentInstanceProperty inpProp = op.get();
- getInputInfo = new GetInputValueDataDefinition();
- getInputInfo.setPropName(inpProp.getName());
- getInputInfo.setInputName(inputName);
- inputToAssName = inputName;
- break;
- }
-
- }
- if (inputToAssName != null) {
- for (InputDefinition input1 : newInputs) {
- if (input1.getName().equals(inputToAssName)) {
- this.inputOperation.associatePropertyToInput(riId, input1.getUniqueId(), newProp, getInputInfo);
- break;
- }
- }
- }
-
- }
- }
-
- return StorageOperationStatus.OK;
- }
-
- private StorageOperationStatus cloneResourceInstanceInputsValues(ComponentInstance toResourceInstance, ComponentInstance fromResourceInstance, Component comonentTo, Map<String, List<ComponentInstanceInput>> inputsValuesMap) {
-
- Either<List<ComponentInstanceInput>, TitanOperationStatus> allProperties = inputOperation.getAllInputsOfResourceInstanceOnlyInputDefId(fromResourceInstance.getUniqueId());
- if (allProperties.isRight()) {
- TitanOperationStatus status = allProperties.right().value();
- if (status == TitanOperationStatus.NOT_FOUND) {
- status = TitanOperationStatus.OK;
- }
- StorageOperationStatus storageStatus = DaoStatusConverter.convertTitanStatusToStorageStatus(status);
- return storageStatus;
- }
-
- List<ComponentInstanceInput> propertiesOnInstance = allProperties.left().value();
- if (propertiesOnInstance == null || propertiesOnInstance.isEmpty() == true) {
- return StorageOperationStatus.OK;
- }
- List<InputDefinition> newInputs = comonentTo.getInputs();
-
- for (ComponentInstanceInput property : propertiesOnInstance) {
-
- List<InputDefinition> inputToAss = new ArrayList<InputDefinition>();
- if (newInputs != null && !inputsValuesMap.isEmpty()) {
-
- Set<String> inputsName = inputsValuesMap.keySet();
- for (String name : inputsName) {
- List<ComponentInstanceInput> inputsValue = inputsValuesMap.get(name);
- if (inputsValue != null) {
- Optional<ComponentInstanceInput> op = inputsValue.stream().filter(p -> p.getValueUniqueUid().equals(property.getValueUniqueUid())).findAny();
- if (op.isPresent()) {
- Optional<InputDefinition> optional = newInputs.stream().filter(e -> e.getName().equals(name)).findAny();
- if (optional.isPresent()) {
- inputToAss.add(optional.get());
- }
- }
- }
- }
- }
-
- // Only if valueUniqueId is not empty, then its belongs to the
- // instance
- if (property.getValueUniqueUid() != null) {
- property.setValueUniqueUid(null);
- List<PropertyRule> rules = property.getRules();
- if (rules != null) {
- for (PropertyRule propertyRule : rules) {
- propertyRule.replaceFirstToken(toResourceInstance.getUniqueId());
- }
- }
-
- } else {
- continue;
- }
-
- String resourceInstanceId = toResourceInstance.getUniqueId();
-
- Either<Integer, StorageOperationStatus> counterRes = this.increaseAndGetResourceInstanceSpecificCounter(resourceInstanceId, GraphPropertiesDictionary.INPUT_COUNTER, true);
-
- if (counterRes.isRight()) {
- log.debug("increaseAndGetResourcePropertyCounter failed resource instance {} property {}", resourceInstanceId, property);
- StorageOperationStatus status = counterRes.right().value();
- return status;
- }
- Integer index = counterRes.left().value();
-
- Either<InputValueData, TitanOperationStatus> addPropertyToResourceInstance = this.addInputToResourceInstance(property, toResourceInstance.getUniqueId(), index);
-
- if (addPropertyToResourceInstance.isRight()) {
- TitanOperationStatus status = addPropertyToResourceInstance.right().value();
- StorageOperationStatus storageStatus = DaoStatusConverter.convertTitanStatusToStorageStatus(status);
- return storageStatus;
- }
-
- for (InputDefinition input : inputToAss) {
- Map<String, Object> props = new HashMap<String, Object>();
- props.put(GraphEdgePropertiesDictionary.NAME.getProperty(), input.getName());
- props.put(GraphEdgePropertiesDictionary.OWNER_ID.getProperty(), toResourceInstance.getUniqueId());
-
- GraphNode inputData = new UniqueIdData(NodeTypeEnum.Input, input.getUniqueId());
- GraphNode propertyData = new UniqueIdData(NodeTypeEnum.InputValue, addPropertyToResourceInstance.left().value().getUniqueId());
-
- Either<GraphRelation, TitanOperationStatus> addPropRefResult = titanGenericDao.createRelation(inputData, propertyData, GraphEdgeLabels.GET_INPUT, props);
-
- if (addPropRefResult.isRight()) {
- TitanOperationStatus status = addPropRefResult.right().value();
- log.debug("Failed to associate input {} to input value {} in graph. Status is {}", input.getUniqueId(), propertyData.getUniqueId(), status);
-
- return DaoStatusConverter.convertTitanStatusToStorageStatus(status);
- }
- }
- }
-
- return StorageOperationStatus.OK;
- }
-
- private StorageOperationStatus cloneResourceInstanceInputsValues(TitanVertex toResourceInstanceVertex, ComponentInstance fromResourceInstance, String instanceId, Resource newResource, Map<String, List<ComponentInstanceInput>> inputsValuesMap) {
-
- Either<List<ComponentInstanceInput>, TitanOperationStatus> allProperties = inputOperation.getAllInputsOfResourceInstanceOnlyInputDefId(fromResourceInstance.getUniqueId());
- if (allProperties.isRight()) {
- TitanOperationStatus status = allProperties.right().value();
- if (status == TitanOperationStatus.NOT_FOUND) {
- status = TitanOperationStatus.OK;
- }
- StorageOperationStatus storageStatus = DaoStatusConverter.convertTitanStatusToStorageStatus(status);
- return storageStatus;
- }
-
- List<ComponentInstanceInput> propertiesOnInstance = allProperties.left().value();
- if (propertiesOnInstance == null || propertiesOnInstance.isEmpty() == true) {
- return StorageOperationStatus.OK;
- }
-
- for (ComponentInstanceInput property : propertiesOnInstance) {
-
- // Only if valueUniqueId is not empty, then its belongs to the
- // instance
- if (property.getValueUniqueUid() != null) {
- property.setValueUniqueUid(null);
- List<PropertyRule> rules = property.getRules();
- if (rules != null) {
- for (PropertyRule propertyRule : rules) {
- propertyRule.replaceFirstToken(instanceId);
- }
- }
-
- } else {
- continue;
- }
-
- String resourceInstanceId = instanceId;
-
- Either<Integer, StorageOperationStatus> counterRes = this.increaseAndGetResourceInstanceSpecificCounter(toResourceInstanceVertex, GraphPropertiesDictionary.INPUT_COUNTER);
-
- if (counterRes.isRight()) {
- log.debug("increaseAndGetResourcePropertyCounter failed resource instance {} property {}", resourceInstanceId, property);
- StorageOperationStatus status = counterRes.right().value();
- return status;
- }
- Integer index = counterRes.left().value();
-
- Either<InputValueData, TitanOperationStatus> addPropertyToResourceInstance = this.addInputToResourceInstance(property, resourceInstanceId, index);
-
- if (addPropertyToResourceInstance.isRight()) {
- TitanOperationStatus status = addPropertyToResourceInstance.right().value();
- StorageOperationStatus storageStatus = DaoStatusConverter.convertTitanStatusToStorageStatus(status);
- return storageStatus;
- }
- }
-
- return StorageOperationStatus.OK;
- }
-
- public Either<ComponentInstanceProperty, StorageOperationStatus> updatePropertyValueInResourceInstance(ComponentInstanceProperty resourceInstanceProperty, String resourceInstanceId, boolean inTransaction) {
-
- Either<ComponentInstanceProperty, StorageOperationStatus> result = null;
-
- try {
- // TODO: verify validUniqueId exists
- Either<PropertyValueData, TitanOperationStatus> eitherStatus = this.updatePropertyOfResourceInstance(resourceInstanceProperty, resourceInstanceId, true);
-
- if (eitherStatus.isRight()) {
- log.error("Failed to add property value {} to resource instance {} in Graph. status is {}", resourceInstanceProperty, resourceInstanceId, eitherStatus.right().value().name());
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(eitherStatus.right().value()));
- return result;
- } else {
- PropertyValueData propertyValueData = eitherStatus.left().value();
-
- ComponentInstanceProperty propertyValueResult = propertyOperation.buildResourceInstanceProperty(propertyValueData, resourceInstanceProperty);
-
- log.debug("The returned ResourceInstanceProperty is {}", propertyValueResult);
-
- Either<String, TitanOperationStatus> findDefaultValue = propertyOperation.findDefaultValueFromSecondPosition(resourceInstanceProperty.getPath(), propertyValueData.getUniqueId(), resourceInstanceProperty.getDefaultValue());
- if (findDefaultValue.isRight()) {
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(findDefaultValue.right().value()));
- return result;
- }
- String defaultValue = findDefaultValue.left().value();
- propertyValueResult.setDefaultValue(defaultValue);
- log.debug("The returned default value in ResourceInstanceProperty is {}", defaultValue);
-
- result = Either.left(propertyValueResult);
- return result;
- }
- }
-
- finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- log.error("Going to execute rollback on graph.");
- titanGenericDao.rollback();
- } else {
- log.debug("Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
-
- }
-
private static final class UpdateDataContainer<SomeData, SomeValueData> {
final Wrapper<SomeValueData> valueDataWrapper;
final Wrapper<SomeData> dataWrapper;
@@ -4514,27 +256,6 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo
}
}
- @Override
- public Either<AttributeValueData, TitanOperationStatus> createOrUpdateAttributeOfResourceInstance(ComponentInstanceProperty attributeInstanceProperty, String resourceInstanceId) {
- Either<AttributeValueData, TitanOperationStatus> result;
- // Create
- if (attributeInstanceProperty.getValueUniqueUid() == null) {
- Either<Integer, StorageOperationStatus> counterRes = increaseAndGetResourceInstanceSpecificCounter(resourceInstanceId, GraphPropertiesDictionary.ATTRIBUTE_COUNTER, true);
- if (counterRes.isRight()) {
- BeEcompErrorManager.getInstance().logInternalFlowError("createOrUpdateAttributeOfResourceInstance", "Failed to get AttributeValueData Counter", ErrorSeverity.ERROR);
- result = Either.right(TitanOperationStatus.GENERAL_ERROR);
-
- } else {
- result = addAttributeToResourceInstance(attributeInstanceProperty, resourceInstanceId, counterRes.left().value());
- }
- }
- // Update
- else {
- result = updateAttributeOfResourceInstance(attributeInstanceProperty, resourceInstanceId);
- }
- return result;
- }
-
/**
* update value of attribute on resource instance
*
@@ -4603,160 +324,6 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo
}
- /**
- * update value of attribute on resource instance
- *
- * @param resourceInstanceProerty
- * @param resourceInstanceId
- * @return
- */
- public Either<PropertyValueData, TitanOperationStatus> updatePropertyOfResourceInstance(ComponentInstanceProperty resourceInstanceProerty, String resourceInstanceId, boolean isValidate) {
-
- Wrapper<TitanOperationStatus> errorWrapper = new Wrapper<>();
- UpdateDataContainer<PropertyData, PropertyValueData> updateDataContainer = new UpdateDataContainer<>(GraphEdgeLabels.PROPERTY_IMPL, (() -> PropertyData.class), (() -> PropertyValueData.class), NodeTypeEnum.Property,
- NodeTypeEnum.PropertyValue);
-
- preUpdateElementOfResourceInstanceValidations(updateDataContainer, resourceInstanceProerty, resourceInstanceId, errorWrapper);
- if (!errorWrapper.isEmpty()) {
- return Either.right(errorWrapper.getInnerElement());
- }
-
- else {
- String value = resourceInstanceProerty.getValue();
- // Specific Validation Logic
- PropertyData propertyData = updateDataContainer.getDataWrapper().getInnerElement();
-
- String innerType = null;
-
- PropertyDataDefinition propDataDef = propertyData.getPropertyDataDefinition();
- String propertyType = propDataDef.getType();
- ToscaPropertyType type = ToscaPropertyType.isValidType(propertyType);
- log.debug("The type of the property {} is {}", propertyData.getUniqueId(), propertyType);
-
- if (type == ToscaPropertyType.LIST || type == ToscaPropertyType.MAP) {
- SchemaDefinition def = propDataDef.getSchema();
- if (def == null) {
- log.debug("Schema doesn't exists for property of type {}", type);
- return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT);
- }
- PropertyDataDefinition propDef = def.getProperty();
- if (propDef == null) {
- log.debug("Property in Schema Definition inside property of type {} doesn't exist", type);
- return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT);
- }
- innerType = propDef.getType();
- }
- // Specific Update Logic
- Either<Map<String, DataTypeDefinition>, TitanOperationStatus> allDataTypes = dataTypeCache.getAll();
- if (allDataTypes.isRight()) {
- TitanOperationStatus status = allDataTypes.right().value();
- BeEcompErrorManager.getInstance().logInternalFlowError("UpdatePropertyValueOnComponentInstance", "Failed to update property value on instance. Status is " + status, ErrorSeverity.ERROR);
- return Either.right(status);
- }
- Either<Object, Boolean> isValid = propertyOperation.validateAndUpdatePropertyValue(propertyType, value, isValidate, innerType, allDataTypes.left().value());
-
- 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();
- }
- }
- PropertyValueData propertyValueData = updateDataContainer.getValueDataWrapper().getInnerElement();
- log.debug("Going to update property value from {} to {}", propertyValueData.getValue(), newValue);
- propertyValueData.setValue(newValue);
-
- ImmutablePair<String, Boolean> pair = propertyOperation.validateAndUpdateRules(propertyType, resourceInstanceProerty.getRules(), innerType, allDataTypes.left().value(), isValidate);
- if (pair.getRight() != null && pair.getRight() == false) {
- BeEcompErrorManager.getInstance().logBeInvalidValueError("Add property value", pair.getLeft(), resourceInstanceProerty.getName(), propertyType);
- return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT);
- }
- propertyOperation.updateRulesInPropertyValue(propertyValueData, resourceInstanceProerty, resourceInstanceId);
-
- Either<PropertyValueData, TitanOperationStatus> updateRes = titanGenericDao.updateNode(propertyValueData, PropertyValueData.class);
- if (updateRes.isRight()) {
- TitanOperationStatus status = updateRes.right().value();
- return Either.right(status);
- } else {
- return Either.left(updateRes.left().value());
- }
- }
-
- }
-
- /**
- * update value of attribute on resource instance
- *
- * @param resourceInstanceProerty
- * @param resourceInstanceId
- * @return
- */
- public Either<InputValueData, TitanOperationStatus> updateInputOfResourceInstance(ComponentInstanceInput resourceInstanceProerty, String resourceInstanceId) {
-
- Wrapper<TitanOperationStatus> errorWrapper = new Wrapper<>();
- UpdateDataContainer<PropertyData, InputValueData> updateDataContainer = new UpdateDataContainer<>(GraphEdgeLabels.INPUT_IMPL, (() -> PropertyData.class), (() -> InputValueData.class), NodeTypeEnum.Input, NodeTypeEnum.InputValue);
-
- preUpdateElementOfResourceInstanceValidations(updateDataContainer, resourceInstanceProerty, resourceInstanceId, errorWrapper);
- if (!errorWrapper.isEmpty()) {
- return Either.right(errorWrapper.getInnerElement());
- }
-
- else {
- String value = resourceInstanceProerty.getValue();
- // Specific Validation Logic
- PropertyData propertyData = updateDataContainer.getDataWrapper().getInnerElement();
-
- String innerType = null;
-
- PropertyDataDefinition propDataDef = propertyData.getPropertyDataDefinition();
- String propertyType = propDataDef.getType();
- ToscaPropertyType type = ToscaPropertyType.isValidType(propertyType);
- log.debug("The type of the property {} is {}", propertyData.getUniqueId(), propertyType);
-
- if (type == ToscaPropertyType.LIST || type == ToscaPropertyType.MAP) {
- SchemaDefinition def = propDataDef.getSchema();
- if (def == null) {
- log.debug("Schema doesn't exists for property of type {}", type);
- return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT);
- }
- PropertyDataDefinition propDef = def.getProperty();
- if (propDef == null) {
- log.debug("Property in Schema Definition inside property of type {} doesn't exist", type);
- return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT);
- }
- innerType = propDef.getType();
- }
- // Specific Update Logic
- Either<Map<String, DataTypeDefinition>, TitanOperationStatus> allDataTypes = dataTypeCache.getAll();
- if (allDataTypes.isRight()) {
- TitanOperationStatus status = allDataTypes.right().value();
- BeEcompErrorManager.getInstance().logInternalFlowError("UpdatePropertyValueOnComponentInstance", "Failed to update property value on instance. Status is " + status, ErrorSeverity.ERROR);
- return Either.right(status);
- }
- /*
- * Either<Object, Boolean> isValid = propertyOperation.validateAndUpdatePropertyValue(propertyType, value, innerType, allDataTypes.left().value());
- *
- * 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(); } } InputValueData propertyValueData = updateDataContainer.getValueDataWrapper().getInnerElement(); log.debug("Going to update property value from " + propertyValueData.getValue() + " to " +
- * newValue); propertyValueData.setValue(newValue);
- *
- * ImmutablePair<String, Boolean> pair = propertyOperation.validateAndUpdateRules(propertyType, resourceInstanceProerty.getRules(), innerType, allDataTypes.left().value()); if (pair.getRight() != null && pair.getRight() == false) {
- * BeEcompErrorManager.getInstance(). logBeInvalidValueError("Add property value", pair.getLeft(), resourceInstanceProerty.getName(), propertyType); return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT); }
- * propertyOperation.updateRulesInPropertyValue(propertyValueData, resourceInstanceProerty, resourceInstanceId);
- *
- * Either<PropertyValueData, TitanOperationStatus> updateRes = titanGenericDao.updateNode(propertyValueData, PropertyValueData.class); if (updateRes.isRight()) { TitanOperationStatus status = updateRes.right().value(); return
- * Either.right(status); } else { return Either.left(updateRes.left().value()); }
- */
- }
- return null;
-
- }
-
private <SomeData extends GraphNode, SomeValueData extends GraphNode> void preUpdateElementOfResourceInstanceValidations(UpdateDataContainer<SomeData, SomeValueData> updateDataContainer, IComponentInstanceConnectedElement resourceInstanceProerty,
String resourceInstanceId, Wrapper<TitanOperationStatus> errorWrapper) {
@@ -4855,287 +422,11 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo
/**
* add property to resource instance
*
- * @param resourceInstanceProperty
- * @param resourceInstanceId
- * @param index
- * @return
- */
- public Either<PropertyValueData, TitanOperationStatus> addPropertyToResourceInstance(ComponentInstanceProperty resourceInstanceProperty, String resourceInstanceId, boolean isValidate, Integer index) {
-
- Either<ComponentInstanceData, TitanOperationStatus> findResInstanceRes = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), resourceInstanceId, ComponentInstanceData.class);
-
- if (findResInstanceRes.isRight()) {
- TitanOperationStatus status = findResInstanceRes.right().value();
- if (status == TitanOperationStatus.NOT_FOUND) {
- status = TitanOperationStatus.INVALID_ID;
- }
- return Either.right(status);
- }
-
- String propertyId = resourceInstanceProperty.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);
- }
-
- String valueUniqueUid = resourceInstanceProperty.getValueUniqueUid();
- if (valueUniqueUid == null) {
-
- PropertyData propertyData = findPropertyDefRes.left().value();
- ComponentInstanceData resourceInstanceData = findResInstanceRes.left().value();
-
- ImmutablePair<TitanOperationStatus, String> isPropertyValueExists = propertyOperation.findPropertyValue(resourceInstanceId, propertyId);
- if (isPropertyValueExists.getLeft() == TitanOperationStatus.ALREADY_EXIST) {
- log.debug("The property {} already added to the resource instance {}", propertyId, resourceInstanceId);
- resourceInstanceProperty.setValueUniqueUid(isPropertyValueExists.getRight());
- Either<PropertyValueData, TitanOperationStatus> updatePropertyOfResourceInstance = updatePropertyOfResourceInstance(resourceInstanceProperty, resourceInstanceId, isValidate);
- if (updatePropertyOfResourceInstance.isRight()) {
- BeEcompErrorManager.getInstance().logInternalFlowError("UpdatePropertyValueOnComponentInstance", "Failed to update property value on instance. Status is " + updatePropertyOfResourceInstance.right().value(), ErrorSeverity.ERROR);
- return Either.right(updatePropertyOfResourceInstance.right().value());
- }
- return Either.left(updatePropertyOfResourceInstance.left().value());
- }
-
- if (isPropertyValueExists.getLeft() != TitanOperationStatus.NOT_FOUND) {
- log.debug("After finding property value of {} on componenet instance {}", propertyId, resourceInstanceId);
- return Either.right(isPropertyValueExists.getLeft());
- }
-
- String innerType = null;
-
- PropertyDataDefinition propDataDef = propertyData.getPropertyDataDefinition();
- String propertyType = propDataDef.getType();
- String value = resourceInstanceProperty.getValue();
- ToscaPropertyType type = ToscaPropertyType.isValidType(propertyType);
-
- if (type == ToscaPropertyType.LIST || type == ToscaPropertyType.MAP) {
- SchemaDefinition def = propDataDef.getSchema();
- if (def == null) {
- log.debug("Schema doesn't exists for property of type {}", type);
- return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT);
- }
- PropertyDataDefinition propDef = def.getProperty();
- if (propDef == null) {
- log.debug("Property in Schema Definition inside property of type {} doesn't exist", type);
- return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT);
- }
- innerType = propDef.getType();
- }
-
- log.debug("Before validateAndUpdatePropertyValue");
- Either<Map<String, DataTypeDefinition>, TitanOperationStatus> allDataTypes = dataTypeCache.getAll();
- if (allDataTypes.isRight()) {
- TitanOperationStatus status = allDataTypes.right().value();
- BeEcompErrorManager.getInstance().logInternalFlowError("UpdatePropertyValueOnComponentInstance", "Failed to update property value on instance. Status is " + status, ErrorSeverity.ERROR);
- return Either.right(status);
- }
- Either<Object, Boolean> isValid = propertyOperation.validateAndUpdatePropertyValue(propertyType, value, isValidate, 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.buildResourceInstancePropertyValueUid(resourceInstanceData.getUniqueId(), index);
- PropertyValueData propertyValueData = new PropertyValueData();
- propertyValueData.setUniqueId(uniqueId);
- propertyValueData.setValue(newValue);
-
- log.debug("Before validateAndUpdateRules");
- ImmutablePair<String, Boolean> pair = propertyOperation.validateAndUpdateRules(propertyType, resourceInstanceProperty.getRules(), innerType, allDataTypes.left().value(), isValidate);
- log.debug("After validateAndUpdateRules. pair = {}", pair);
- if (pair.getRight() != null && pair.getRight() == false) {
- BeEcompErrorManager.getInstance().logBeInvalidValueError("Add property value", pair.getLeft(), resourceInstanceProperty.getName(), propertyType);
- return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT);
- }
- propertyOperation.addRulesToNewPropertyValue(propertyValueData, resourceInstanceProperty, resourceInstanceId);
-
- 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);
- }
- propertyValueData = createNodeResult.left().value();
-
- Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(propertyValueData, propertyData, GraphEdgeLabels.PROPERTY_IMPL, null);
-
- if (createRelResult.isRight()) {
- TitanOperationStatus operationStatus = createRelResult.right().value();
- log.error("Failed to associate property value {} to property {} in graph. status is {}", uniqueId, propertyId, operationStatus);
- return Either.right(operationStatus);
- }
-
- createRelResult = titanGenericDao.createRelation(resourceInstanceData, propertyValueData, GraphEdgeLabels.PROPERTY_VALUE, null);
-
- if (createRelResult.isRight()) {
- TitanOperationStatus operationStatus = createRelResult.right().value();
- log.error("Failed to associate resource instance {} property value {} in graph. status is {}", resourceInstanceId, uniqueId, operationStatus);
- return Either.right(operationStatus);
- }
-
- return Either.left(propertyValueData);
- } else {
- log.error("property value already exists.");
- return Either.right(TitanOperationStatus.ALREADY_EXIST);
- }
-
- }
-
- public Either<ComponentInstanceProperty, TitanOperationStatus> addPropertyToResourceInstance(ComponentInstanceProperty resourceInstanceProperty, TitanVertex resourceInstanceVertex, boolean isValidate, Integer index, String resourceInstanceId) {
-
- String propertyId = resourceInstanceProperty.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);
- }
-
- String valueUniqueUid = resourceInstanceProperty.getValueUniqueUid();
- if (valueUniqueUid == null) {
-
- PropertyData propertyData = findPropertyDefRes.left().value();
-
- ImmutablePair<TitanOperationStatus, String> isPropertyValueExists = propertyOperation.findPropertyValue(resourceInstanceId, propertyId);
- if (isPropertyValueExists.getLeft() == TitanOperationStatus.ALREADY_EXIST) {
- log.trace("The property {} already added to the resource instance {}", propertyId, resourceInstanceId);
- resourceInstanceProperty.setValueUniqueUid(isPropertyValueExists.getRight());
- Either<PropertyValueData, TitanOperationStatus> updatePropertyOfResourceInstance = updatePropertyOfResourceInstance(resourceInstanceProperty, resourceInstanceId, isValidate);
- if (updatePropertyOfResourceInstance.isRight()) {
- BeEcompErrorManager.getInstance().logInternalFlowError("UpdatePropertyValueOnComponentInstance", "Failed to update property value on instance. Status is " + updatePropertyOfResourceInstance.right().value(), ErrorSeverity.ERROR);
- return Either.right(updatePropertyOfResourceInstance.right().value());
- }
- return Either.right(TitanOperationStatus.OK);
- }
-
- if (isPropertyValueExists.getLeft() != TitanOperationStatus.NOT_FOUND) {
- log.trace("After finding property value of {} on componenet instance {}", propertyId, resourceInstanceId);
- return Either.right(isPropertyValueExists.getLeft());
- }
-
- String innerType = null;
-
- PropertyDataDefinition propDataDef = propertyData.getPropertyDataDefinition();
- String propertyType = propDataDef.getType();
- String value = resourceInstanceProperty.getValue();
- ToscaPropertyType type = ToscaPropertyType.isValidType(propertyType);
-
- if (type == ToscaPropertyType.LIST || type == ToscaPropertyType.MAP) {
- SchemaDefinition def = propDataDef.getSchema();
- if (def == null) {
- log.debug("Schema doesn't exists for property of type {}", type);
- return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT);
- }
- PropertyDataDefinition propDef = def.getProperty();
- if (propDef == null) {
- log.debug("Property in Schema Definition inside property of type {} doesn't exist", type);
- return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT);
- }
- innerType = propDef.getType();
- }
-
- log.trace("Before validateAndUpdatePropertyValue");
- Either<Map<String, DataTypeDefinition>, TitanOperationStatus> allDataTypes = dataTypeCache.getAll();
- if (allDataTypes.isRight()) {
- TitanOperationStatus status = allDataTypes.right().value();
- BeEcompErrorManager.getInstance().logInternalFlowError("UpdatePropertyValueOnComponentInstance", "Failed to update property value on instance. Status is " + status, ErrorSeverity.ERROR);
- return Either.right(status);
- }
- Either<Object, Boolean> isValid = propertyOperation.validateAndUpdatePropertyValue(propertyType, value, isValidate, innerType, allDataTypes.left().value());
- log.trace("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.buildResourceInstancePropertyValueUid(resourceInstanceId, index);
- PropertyValueData propertyValueData = new PropertyValueData();
- propertyValueData.setUniqueId(uniqueId);
- propertyValueData.setValue(newValue);
-
- log.trace("Before validateAndUpdateRules");
- ImmutablePair<String, Boolean> pair = propertyOperation.validateAndUpdateRules(propertyType, resourceInstanceProperty.getRules(), innerType, allDataTypes.left().value(), isValidate);
- log.debug("After validateAndUpdateRules. pair = {} ", pair);
- if (pair.getRight() != null && pair.getRight() == false) {
- BeEcompErrorManager.getInstance().logBeInvalidValueError("Add property value", pair.getLeft(), resourceInstanceProperty.getName(), propertyType);
- return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT);
- }
- propertyOperation.addRulesToNewPropertyValue(propertyValueData, resourceInstanceProperty, resourceInstanceId);
-
- log.trace("Before adding property value to graph {}", propertyValueData);
- Either<PropertyValueData, TitanOperationStatus> createNodeResult = titanGenericDao.createNode(propertyValueData, PropertyValueData.class);
- log.trace("After adding property value to graph {}", propertyValueData);
-
- if (createNodeResult.isRight()) {
- TitanOperationStatus operationStatus = createNodeResult.right().value();
- return Either.right(operationStatus);
- }
- propertyValueData = createNodeResult.left().value();
-
- Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(propertyValueData, propertyData, GraphEdgeLabels.PROPERTY_IMPL, null);
-
- if (createRelResult.isRight()) {
- TitanOperationStatus operationStatus = createRelResult.right().value();
- log.error("Failed to associate property value {} to property {} in graph. status is {}", uniqueId, propertyId, operationStatus);
- return Either.right(operationStatus);
- }
-
- TitanOperationStatus edgeResult = titanGenericDao.createEdge(resourceInstanceVertex, propertyValueData, GraphEdgeLabels.PROPERTY_VALUE, null);
-
- if (edgeResult != TitanOperationStatus.OK) {
- log.error("Failed to associate resource instance {} property value {} in graph. status is {}", resourceInstanceId, uniqueId, edgeResult);
- return Either.right(edgeResult);
- }
-
- ComponentInstanceProperty propertyValueResult = propertyOperation.buildResourceInstanceProperty(propertyValueData, resourceInstanceProperty);
- log.debug("The returned ResourceInstanceProperty is {} ", propertyValueResult);
-
- return Either.left(propertyValueResult);
- } else {
- log.debug("property value already exists.");
- return Either.right(TitanOperationStatus.ALREADY_EXIST);
- }
-
- }
-
- /**
- * add property to resource instance
- *
- * @param resourceInstanceProperty
* @param resourceInstanceId
* @param index
* @return
*/
- public Either<InputValueData, TitanOperationStatus> addInputToResourceInstance(ComponentInstanceInput resourceInstanceInput, String resourceInstanceId, Integer index) {
+ private Either<InputValueData, TitanOperationStatus> addInputToResourceInstance(ComponentInstanceInput resourceInstanceInput, String resourceInstanceId, Integer index) {
Either<ComponentInstanceData, TitanOperationStatus> findResInstanceRes = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), resourceInstanceId, ComponentInstanceData.class);
@@ -5256,10 +547,6 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo
}
- // inputOperation.associatePropertyToInput(resourceInstanceId,
- // resourceInstanceInput.getInputId(), propertyValueData,
- // resourceInstanceInput.getName());
-
return Either.left(createNodeResult.left().value());
} else {
log.error("property value already exists.");
@@ -5283,7 +570,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo
} else {
AttributeValueData attributeValueData = eitherStatus.left().value();
- ComponentInstanceProperty attributeValueResult = attributeOperation.buildResourceInstanceAttribute(attributeValueData, resourceInstanceAttribute);
+ ComponentInstanceProperty attributeValueResult = buildResourceInstanceAttribute(attributeValueData, resourceInstanceAttribute);
log.debug("The returned ResourceInstanceAttribute is {}", attributeValueResult);
result = Either.left(attributeValueResult);
@@ -5296,6 +583,12 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo
}
}
+ private ComponentInstanceProperty buildResourceInstanceAttribute(AttributeValueData attributeValueData, ComponentInstanceProperty resourceInstanceAttribute) {
+ Boolean hidden = attributeValueData.isHidden();
+ String uid = attributeValueData.getUniqueId();
+ return new ComponentInstanceProperty(hidden, resourceInstanceAttribute, uid);
+ }
+
@Override
public Either<ComponentInstanceProperty, StorageOperationStatus> updateAttributeValueInResourceInstance(ComponentInstanceProperty resourceInstanceAttribute, String resourceInstanceId, boolean inTransaction) {
@@ -5311,7 +604,7 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo
} else {
AttributeValueData attributeValueData = eitherAttributeValue.left().value();
- ComponentInstanceProperty attributeValueResult = attributeOperation.buildResourceInstanceAttribute(attributeValueData, resourceInstanceAttribute);
+ ComponentInstanceProperty attributeValueResult = buildResourceInstanceAttribute(attributeValueData, resourceInstanceAttribute);
log.debug("The returned ResourceInstanceAttribute is {}", attributeValueResult);
result = Either.left(attributeValueResult);
@@ -5326,64 +619,6 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo
}
@Override
- public Either<ComponentInstanceProperty, StorageOperationStatus> addPropertyValueToResourceInstance(ComponentInstanceProperty resourceInstanceProperty, String resourceInstanceId, Integer index, boolean inTransaction) {
- return addPropertyValueToResourceInstance(resourceInstanceProperty, resourceInstanceId, true, index, inTransaction);
- }
-
- @Override
- public Either<ComponentInstanceProperty, StorageOperationStatus> addPropertyValueToResourceInstance(ComponentInstanceProperty resourceInstanceProperty, String resourceInstanceId, boolean isValidate, Integer index, boolean inTransaction) {
-
- /// #RULES SUPPORT
- /// Ignore rules received from client till support
- resourceInstanceProperty.setRules(null);
- ///
- ///
-
- Either<ComponentInstanceProperty, StorageOperationStatus> result = null;
-
- try {
-
- Either<PropertyValueData, TitanOperationStatus> eitherStatus = addPropertyToResourceInstance(resourceInstanceProperty, resourceInstanceId, isValidate, index);
-
- if (eitherStatus.isRight()) {
- log.error("Failed to add property value {} to resource instance {} in Graph. status is {}", resourceInstanceProperty, resourceInstanceId, eitherStatus.right().value().name());
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(eitherStatus.right().value()));
- return result;
- } else {
- PropertyValueData propertyValueData = eitherStatus.left().value();
-
- ComponentInstanceProperty propertyValueResult = propertyOperation.buildResourceInstanceProperty(propertyValueData, resourceInstanceProperty);
- log.debug("The returned ResourceInstanceProperty is {}", propertyValueResult);
-
- Either<String, TitanOperationStatus> findDefaultValue = propertyOperation.findDefaultValueFromSecondPosition(resourceInstanceProperty.getPath(), resourceInstanceProperty.getUniqueId(), resourceInstanceProperty.getDefaultValue());
- if (findDefaultValue.isRight()) {
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(findDefaultValue.right().value()));
- return result;
- }
- String defaultValue = findDefaultValue.left().value();
- propertyValueResult.setDefaultValue(defaultValue);
- log.debug("The returned default value in ResourceInstanceProperty is {}", defaultValue);
-
- result = Either.left(propertyValueResult);
- return result;
- }
- }
-
- finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- log.error("Going to execute rollback on graph.");
- titanGenericDao.rollback();
- } else {
- log.debug("Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
-
- }
-
- @Override
public Either<ComponentInstanceInput, StorageOperationStatus> addInputValueToResourceInstance(ComponentInstanceInput resourceInstanceInput, String resourceInstanceId, Integer index, boolean inTransaction) {
/// #RULES SUPPORT
@@ -5436,636 +671,11 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo
}
- public Either<List<ComponentInstanceProperty>, TitanOperationStatus> getComponentInstancesProperties(List<ComponentInstance> resourceInstances, Map<String, List<PropertyDefinition>> alreadyProcessedResources,
- Map<String, List<ComponentInstanceProperty>> resourceInstancesProperties, Map<String, ImmutablePair<ComponentInstance, Integer>> processedInstances, List<String> path) {
-
- List<ComponentInstanceProperty> result = new ArrayList<>();
-
- for (ComponentInstance componentInstance : resourceInstances) {
-
- path.add(componentInstance.getUniqueId());
-
- Either<List<ComponentInstanceProperty>, TitanOperationStatus> componentInstancesProperties = getComponentInstanceProperties(componentInstance, alreadyProcessedResources, resourceInstancesProperties, processedInstances, path);
- if (componentInstancesProperties.isRight()) {
- TitanOperationStatus status = componentInstancesProperties.right().value();
- if (status != TitanOperationStatus.OK) {
- return Either.right(status);
- }
- }
-
- List<ComponentInstanceProperty> compInstancePropertyList = componentInstancesProperties.left().value();
- if (compInstancePropertyList != null) {
- result.addAll(compInstancePropertyList);
- }
-
- String uniqueId = componentInstance.getUniqueId();
- if (false == processedInstances.containsKey(uniqueId)) {
- processedInstances.put(uniqueId, new ImmutablePair<ComponentInstance, Integer>(componentInstance, path.size()));
- }
- path.remove(path.size() - 1);
-
- }
-
- return Either.left(result);
- }
-
- //US831698
- public Either<List<ComponentInstanceProperty>, StorageOperationStatus> getComponentInstancesPropertiesAndValuesFromGraph(ComponentInstance resourceInstance) {
-
- Map<String, List<PropertyDefinition>> alreadyProcessedResources = new HashMap<>();
- Map<String, List<ComponentInstanceProperty>> alreadyProcessedInstances = new HashMap<>();
- Map<String, ImmutablePair<ComponentInstance, Integer>> processedInstances = new HashMap<>();
- Map<String, List<ComponentInstanceProperty>> resourceInstancesProperties = new HashMap<>();
-
- List<String> path = new ArrayList<>();
- path.add(resourceInstance.getUniqueId());
- Either<List<ComponentInstanceProperty>, TitanOperationStatus> componentInstanceProperties = getComponentInstanceProperties(resourceInstance, alreadyProcessedResources, alreadyProcessedInstances, processedInstances, path);
-
- if (componentInstanceProperties.isRight()) {
- StorageOperationStatus convertTitanStatusToStorageStatus = DaoStatusConverter.convertTitanStatusToStorageStatus(componentInstanceProperties.right().value());
- return Either.right(convertTitanStatusToStorageStatus);
- }
-
- List<ComponentInstanceProperty> listOfProps = componentInstanceProperties.left().value();
- resourceInstancesProperties.put(resourceInstance.getUniqueId(), listOfProps);
-
- processedInstances.put(resourceInstance.getUniqueId(), new ImmutablePair<ComponentInstance, Integer>(resourceInstance, path.size()));
- path.remove(path.size() - 1);
-
- Either<Map<String, Map<String, ComponentInstanceProperty>>, TitanOperationStatus> findAllPropertiesValuesOnInstances = findAllPropertyValueOnInstances(processedInstances);
- // 1. check status
- if (findAllPropertiesValuesOnInstances.isRight()) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(findAllPropertiesValuesOnInstances.right().value()));
- }
-
- propertyOperation.updatePropertiesByPropertyValues(resourceInstancesProperties, findAllPropertiesValuesOnInstances.left().value());
-
- return Either.left(resourceInstancesProperties.get(resourceInstance.getUniqueId()));
- }
-
- public Either<List<ComponentInstanceProperty>, TitanOperationStatus> getComponentInstanceProperties(ComponentInstance resourceInstance, Map<String, List<PropertyDefinition>> alreadyProcessedResources,
- Map<String, List<ComponentInstanceProperty>> alreadyProcessedInstances, Map<String, ImmutablePair<ComponentInstance, Integer>> processedInstances, List<String> path) {
-
- // 1. Go over each instance
- // 1.1 get all properties of from the parents of the instance
- // 1.2 get all updated properties
- // 1.3 find all instances included in the parent of this instance and
- // run this method on them.
- if (log.isDebugEnabled())
- log.debug("Going to update properties of resource instance {}", resourceInstance.getUniqueId());
- String resourceUid = resourceInstance.getComponentUid();
-
- List<PropertyDefinition> properties = alreadyProcessedResources.get(resourceUid);
- if (properties == null) {
- properties = new ArrayList<>();
- TitanOperationStatus findAllRes = propertyOperation.findAllResourcePropertiesRecursively(resourceUid, properties);
- if (findAllRes != TitanOperationStatus.OK) {
- return Either.right(findAllRes);
- }
- alreadyProcessedResources.put(resourceUid, properties);
- }
-
- if (log.isDebugEnabled())
- log.debug("After getting properties of resource {} . Number of properties is {}", resourceUid, (properties == null ? 0 : properties.size()));
- List<ComponentInstanceProperty> resourceInstancePropertyList = new ArrayList<>();
- if (false == properties.isEmpty()) {
-
- // TODO: WE MAY HAVE INDIRECT PROPERTY VALUE ALSO IN CASE NO
- // PROPERTY ON THIS COMPONENT
-
- // String resourceInstanceUid = resourceInstance.getUniqueId();
-
- for (PropertyDefinition propertyDefinition : properties) {
-
- String defaultValue = propertyDefinition.getDefaultValue();
- String value = defaultValue;
- String valueUid = null;
-
- // String propertyId = propertyDefinition.getUniqueId();
-
- ComponentInstanceProperty resourceInstanceProperty = new ComponentInstanceProperty(propertyDefinition, value, valueUid);
-
- resourceInstanceProperty.setPath(cloneList(path));
-
- // TODO: currently ignore constraints since they are not inuse
- // and cause to error in convertion to object.
- resourceInstanceProperty.setConstraints(null);
-
- resourceInstancePropertyList.add(resourceInstanceProperty);
-
- }
- }
-
- OriginTypeEnum originType = resourceInstance.getOriginType();
-
- Either<List<ComponentInstance>, TitanOperationStatus> findInstancesUnderParentOfInstance = findInstancesUnderParentOfInstance(originType, resourceUid);
-
- if (findInstancesUnderParentOfInstance.isRight()) {
- TitanOperationStatus status = findInstancesUnderParentOfInstance.right().value();
- if (status != TitanOperationStatus.NOT_FOUND) {
- return Either.right(status);
- }
- } else {
- List<ComponentInstance> listOfInstances = findInstancesUnderParentOfInstance.left().value();
- Either<List<ComponentInstanceProperty>, TitanOperationStatus> componentInstancesProperties = getComponentInstancesProperties(listOfInstances, alreadyProcessedResources, alreadyProcessedInstances, processedInstances, path);
- if (componentInstancesProperties.isRight()) {
- TitanOperationStatus status = componentInstancesProperties.right().value();
- if (status != TitanOperationStatus.OK) {
- return Either.right(status);
- }
- }
- List<ComponentInstanceProperty> currentList = componentInstancesProperties.left().value();
- if (currentList != null) {
- resourceInstancePropertyList.addAll(currentList);
- }
- }
-
- return Either.left(resourceInstancePropertyList);
- }
-
- public Either<List<ComponentInstance>, TitanOperationStatus> findInstancesUnderParentOfInstance(OriginTypeEnum originType, String resourceUid) {
-
- NodeTypeEnum containerNodeType = null;
- NodeTypeEnum compInstNodeType = null;
-
- switch (originType) {
-
- case VF:
- containerNodeType = NodeTypeEnum.Resource;
- compInstNodeType = NodeTypeEnum.Resource;
- break;
- case SERVICE:
- containerNodeType = NodeTypeEnum.Service;
- compInstNodeType = NodeTypeEnum.Resource;
- break;
- case PRODUCT:
- containerNodeType = NodeTypeEnum.Product;
- compInstNodeType = NodeTypeEnum.Service;
- break;
- case VFC:
- case VFCMT:
- case VL:
- case CP:
- break;
- default:
- break;
- }
-
- if (containerNodeType == null || compInstNodeType == null) {
- return Either.right(TitanOperationStatus.NOT_FOUND);
- }
-
- Either<ImmutablePair<List<ComponentInstance>, List<RequirementCapabilityRelDef>>, TitanOperationStatus> componentInstancesOfComponent = this.getComponentInstancesOfComponent(resourceUid, containerNodeType, compInstNodeType);
-
- if (componentInstancesOfComponent.isRight()) {
- TitanOperationStatus status = componentInstancesOfComponent.right().value();
- log.debug("After getting instances of {} from type {}. Status is {}", resourceUid, originType, status);
- return Either.right(status);
- } else {
- List<ComponentInstance> listOfInstances = componentInstancesOfComponent.left().value().getLeft();
- if (log.isDebugEnabled()) {
- String msg = "After getting instances of {} from type {} {}.";
- log.debug(msg, resourceUid, originType, (listOfInstances != null ? listOfInstances.size() : 0));
- if (log.isTraceEnabled())
- log.trace(msg, resourceUid, originType, listOfInstances);
- }
- return Either.left(listOfInstances);
- }
-
- }
-
- private List<String> cloneList(List<String> list) {
-
- if (list == null) {
- return null;
- }
-
- List<String> clonedList = new ArrayList<String>();
- clonedList.addAll(list);
-
- return clonedList;
- }
-
- public Either<Map<String, Map<String, ComponentInstanceProperty>>, TitanOperationStatus> findAllPropertyValueOnInstances(Map<String, ImmutablePair<ComponentInstance, Integer>> processedInstances) {
-
- if (processedInstances == null) {
- return Either.right(TitanOperationStatus.OK);
- }
-
- Set<Entry<String, ImmutablePair<ComponentInstance, Integer>>> entrySet = processedInstances.entrySet();
-
- Map<String, Map<String, ComponentInstanceProperty>> propertyToInstanceValue = new HashMap<>();
-
- for (Entry<String, ImmutablePair<ComponentInstance, Integer>> entry : entrySet) {
-
- String compInstUniqueId = entry.getKey();
-
- ImmutablePair<ComponentInstance, Integer> pair = entry.getValue();
-
- ComponentInstance componentInstance = pair.getLeft();
-
- Either<List<ComponentInstanceProperty>, TitanOperationStatus> propeprtyValueOnCIResult = findPropertyValueOnComponentInstance(componentInstance);
-
- if (propeprtyValueOnCIResult.isRight()) {
- TitanOperationStatus status = propeprtyValueOnCIResult.right().value();
- if (status != TitanOperationStatus.OK) {
- return Either.right(status);
- }
- continue;
- }
-
- List<ComponentInstanceProperty> propertyValuesOnCI = propeprtyValueOnCIResult.left().value();
- if (propertyValuesOnCI != null) {
- for (ComponentInstanceProperty instanceProperty : propertyValuesOnCI) {
- boolean result = addPropertyValue(compInstUniqueId, instanceProperty, propertyToInstanceValue);
- if (!result) {
- return Either.right(TitanOperationStatus.ALREADY_EXIST);
- }
- }
- }
-
- }
-
- return Either.left(propertyToInstanceValue);
- }
-
- private boolean addPropertyValue(String compInstUniqueId, ComponentInstanceProperty instanceProperty, Map<String, Map<String, ComponentInstanceProperty>> propertyToInstanceValue) {
-
- String propertyUid = instanceProperty.getUniqueId();
-
- Map<String, ComponentInstanceProperty> map = propertyToInstanceValue.get(propertyUid);
- if (map == null) {
- map = new HashMap<>();
- propertyToInstanceValue.put(propertyUid, map);
- }
-
- ComponentInstanceProperty putIfAbsent = map.putIfAbsent(compInstUniqueId, instanceProperty);
- if (putIfAbsent != null) {
- BeEcompErrorManager.getInstance().logInternalUnexpectedError("find property value", "Found 2 values on the same instance", ErrorSeverity.ERROR);
- return false;
- }
-
- return true;
-
- }
-
- private boolean addInputValue(String compInstUniqueId, ComponentInstanceInput instanceProperty, Map<String, Map<String, ComponentInstanceInput>> propertyToInstanceValue) {
-
- String propertyUid = instanceProperty.getUniqueId();
-
- Map<String, ComponentInstanceInput> map = propertyToInstanceValue.get(propertyUid);
- if (map == null) {
- map = new HashMap<>();
- propertyToInstanceValue.put(propertyUid, map);
- }
-
- ComponentInstanceInput putIfAbsent = map.putIfAbsent(compInstUniqueId, instanceProperty);
- if (putIfAbsent != null) {
- BeEcompErrorManager.getInstance().logInternalUnexpectedError("find property value", "Found 2 values on the same instance", ErrorSeverity.ERROR);
- return false;
- }
-
- return true;
-
- }
-
- private Either<List<ComponentInstanceProperty>, TitanOperationStatus> findPropertyValueOnComponentInstance(ComponentInstance componentInstance) {
- String resourceInstanceUid = componentInstance.getUniqueId();
- OriginTypeEnum originType = componentInstance.getOriginType();
-
- NodeTypeEnum instanceNodeType = findInstanceNodeTypeEnumFromOriginType(originType);
-
- Either<List<ComponentInstanceProperty>, TitanOperationStatus> propertyValuesResult = propertyOperation.getAllPropertiesOfResourceInstanceOnlyPropertyDefId(resourceInstanceUid, instanceNodeType);
-
- log.debug("After fetching property under resource instance {}", resourceInstanceUid);
- if (propertyValuesResult.isRight()) {
- TitanOperationStatus status = propertyValuesResult.right().value();
- if (status != TitanOperationStatus.NOT_FOUND) {
- return Either.right(status);
- }
- return Either.right(TitanOperationStatus.OK);
- }
-
- return Either.left(propertyValuesResult.left().value());
-
- }
-
- private NodeTypeEnum findInstanceNodeTypeEnumFromOriginType(OriginTypeEnum originType) {
- NodeTypeEnum nodeType = NodeTypeEnum.ResourceInstance;
- switch (originType) {
- case SERVICE:
- nodeType = NodeTypeEnum.ResourceInstance;
- break;
- default:
- break;
- }
-
- return nodeType;
- }
-
- /**
- * add capability property values to resource instance
- *
- * @param resourceInstanceId
- * @param capability
- * @param isNewlyCreatedResourceInstance
- * @return
- */
- public Either<Map<CapabilityInstData, List<PropertyValueData>>, TitanOperationStatus> addCapabilityPropertyValuesToResourceInstance(String resourceInstanceId, CapabilityDefinition capability, boolean isNewlyCreatedResourceInstance) {
- log.debug("Before adding capability property values to resource instance {}.", resourceInstanceId);
- TitanOperationStatus error = null;
-
- Either<Map<CapabilityInstData, List<PropertyValueData>>, TitanOperationStatus> addCapInstWithPropertiesRes = capabilityInstanceOperation.createCapabilityInstanceOfCapabilityWithPropertyValuesForResourceInstance(resourceInstanceId,
- capability.getUniqueId(), capability.getName(), capability.getProperties(), !isNewlyCreatedResourceInstance);
- if (addCapInstWithPropertiesRes.isRight()) {
- error = addCapInstWithPropertiesRes.right().value();
- log.debug("Failed to assotiate capability instance to resource instance {}. status is {}", resourceInstanceId, error);
- }
- log.debug("After adding capability property values to resource instance {}. Status is {}", resourceInstanceId, error);
- if (error == null) {
- return Either.left(addCapInstWithPropertiesRes.left().value());
- }
- return Either.right(error);
- }
-
- public TitanOperationStatus addCapabilityPropertyValuesToResourceInstance(TitanVertex resourceInstanceVertex, String resourceInstanceId, CapabilityDefinition capability, boolean isNewlyCreatedResourceInstance) {
- log.trace("Before adding capability property values to resource instance {}.", resourceInstanceId);
- TitanOperationStatus error = TitanOperationStatus.OK;
-
- TitanOperationStatus addCapInstWithPropertiesRes = capabilityInstanceOperation.createCapabilityInstanceOfCapabilityWithPropertyValuesForResourceInstance(resourceInstanceVertex, resourceInstanceId, capability.getUniqueId(),
- capability.getName(), capability.getProperties(), !isNewlyCreatedResourceInstance);
- if (addCapInstWithPropertiesRes != TitanOperationStatus.OK) {
- error = addCapInstWithPropertiesRes;
- log.debug("Failed to assotiate capability instance to resource instance {} . status is {}", resourceInstanceId, error);
- }
- log.debug("After adding capability property values to resource instance {}. Status is {}", resourceInstanceId, error);
-
- return error;
- }
-
- /**
- * update capability property values of capability
- *
- * @param resourceInstanceId
- * @param capabilityId
- * @param propertyValues
- * @return
- */
- public Either<List<PropertyValueData>, TitanOperationStatus> updateCapabilityPropertyValuesOfResourceInstance(String resourceInstanceId, String capabilityId, List<ComponentInstanceProperty> propertyValues) {
- log.debug("Before updating property values of capability {} of resource instance {}.", capabilityId, resourceInstanceId);
- TitanOperationStatus error = null;
- Either<List<PropertyValueData>, TitanOperationStatus> updateCapabilityPropertyValuesRes = capabilityInstanceOperation.updateCapabilityPropertyValues(resourceInstanceId, capabilityId, propertyValues);
- if (updateCapabilityPropertyValuesRes.isRight()) {
- error = updateCapabilityPropertyValuesRes.right().value();
- log.debug("Failed to update property values of capability {} of resource instance {}. status is {}", capabilityId, resourceInstanceId, error);
- }
- log.debug("After updating property values of capability {} of resource instance {}. Status is {}", capabilityId, resourceInstanceId, error);
- if (error == null) {
- return Either.left(updateCapabilityPropertyValuesRes.left().value());
- }
- return Either.right(error);
- }
-
- /**
- * delete property values of capability from resource instance
- *
- * @param capabilityId
- * @param resourceInstanceId
- * @return
- */
- public Either<CapabilityInstData, TitanOperationStatus> deletePropertyValuesOfCapabilityFromResourceInstance(String capabilityId, String resourceInstanceId) {
- log.debug("Before deleting property values of capability {} from resource instance {}.", capabilityId, resourceInstanceId);
- TitanOperationStatus error = null;
- Either<CapabilityInstData, TitanOperationStatus> deleteCapInstWithPropertiesRes = null;
- Either<CapabilityInstData, TitanOperationStatus> getCapInstByCapabilityRes = capabilityInstanceOperation.getCapabilityInstanceOfCapabilityOfResourceInstance(resourceInstanceId, capabilityId);
- if (getCapInstByCapabilityRes.isRight()) {
- error = getCapInstByCapabilityRes.right().value();
- log.debug("Failed to retrieve capability instance of capability {} of resource instance {}. status is {}", capabilityId, resourceInstanceId, error);
- }
- if (error == null) {
- String capabilityInstanceId = getCapInstByCapabilityRes.left().value().getUniqueId();
- deleteCapInstWithPropertiesRes = capabilityInstanceOperation.deleteCapabilityInstanceFromResourceInstance(resourceInstanceId, capabilityInstanceId);
- if (deleteCapInstWithPropertiesRes.isRight()) {
- error = deleteCapInstWithPropertiesRes.right().value();
- log.debug("Failed to delete capability instance {} to resource instance {}. status is {}", capabilityInstanceId, resourceInstanceId, error);
- }
- }
- log.debug("After deleting property values of capability {} from resource instance {}. Status is {}", capabilityId, resourceInstanceId, error);
- if (error == null) {
- return Either.left(deleteCapInstWithPropertiesRes.left().value());
- }
- return Either.right(error);
- }
-
- /**
- * clone capability instances of resource instance
- *
- * @param createdComponentInstance
- * @param resourceInstance
- * @return
- */
- private Either<Map<ImmutablePair<CapabilityInstData, GraphEdge>, List<PropertyValueData>>, TitanOperationStatus> cloneCapabilityInstancesOfResourceInstance(ComponentInstanceData createdComponentInstance, ComponentInstance resourceInstance) {
- TitanOperationStatus error = null;
- String resourceInstanceId = resourceInstance.getUniqueId();
- log.debug("Before cloning of capability instances of resource instance {}.", resourceInstanceId);
-
- Map<ImmutablePair<CapabilityInstData, GraphEdge>, List<PropertyValueData>> result = new HashMap<>();
- Either<ImmutablePair<CapabilityInstData, List<PropertyValueData>>, TitanOperationStatus> cloneAssociateCIWithPropertyValuesRes;
- Either<List<ImmutablePair<CapabilityInstData, GraphEdge>>, TitanOperationStatus> getAllCapabilityInstancesRes = capabilityInstanceOperation.getAllCapabilityInstancesOfResourceInstance(resourceInstanceId);
- if (getAllCapabilityInstancesRes.isRight() && !getAllCapabilityInstancesRes.right().value().equals(TitanOperationStatus.NOT_FOUND)) {
- error = getAllCapabilityInstancesRes.right().value();
- log.debug("Failed to get capability instances of component instance {}. status is {}", resourceInstanceId, error);
- }
- if (getAllCapabilityInstancesRes.isLeft()) {
- List<ImmutablePair<CapabilityInstData, GraphEdge>> capabilityInstances = getAllCapabilityInstancesRes.left().value();
- Map<String, List<CapabilityDefinition>> allCapabilitiesMap = resourceInstance.getCapabilities();
- List<CapabilityDefinition> allCapabilitiesList = new ArrayList<>();
- for (List<CapabilityDefinition> curList : allCapabilitiesMap.values()) {
- allCapabilitiesList.addAll(curList);
- }
- Map<String, CapabilityDefinition> capabilities = allCapabilitiesList.stream().collect(Collectors.toMap(CapabilityDefinition::getUniqueId, Function.identity()));
- String propertyName = GraphPropertiesDictionary.CAPABILITY_ID.getProperty();
- for (ImmutablePair<CapabilityInstData, GraphEdge> capabilityInstPair : capabilityInstances) {
- String capabilityId = (String) capabilityInstPair.getRight().getProperties().get(propertyName);
- CapabilityDefinition relatedCapability = capabilities.get(capabilityId);
- cloneAssociateCIWithPropertyValuesRes = capabilityInstanceOperation.cloneAssociateCapabilityInstanceWithPropertyValues(createdComponentInstance, relatedCapability, capabilityInstPair);
- if (cloneAssociateCIWithPropertyValuesRes.isRight()) {
- error = cloneAssociateCIWithPropertyValuesRes.right().value();
- log.debug("Failed to clone capability instances {} of component instance {}. status is {}", capabilityInstPair.getLeft().getUniqueId(), resourceInstanceId, error);
- break;
- } else {
- result.put(new ImmutablePair<CapabilityInstData, GraphEdge>(cloneAssociateCIWithPropertyValuesRes.left().value().getLeft(), capabilityInstPair.getRight()), cloneAssociateCIWithPropertyValuesRes.left().value().getRight());
- }
- }
- }
- log.debug("After cloning of capability instance of resource instance {}. Status is {}", resourceInstanceId, error);
- if (error == null) {
- return Either.left(result);
- }
- return Either.right(error);
- }
-
- private Either<List<ImmutablePair<TitanVertex, GraphEdge>>, TitanOperationStatus> cloneCapabilityInstancesOfResourceInstance(TitanVertex componentInstanceVertex, ComponentInstance resourceInstance) {
- TitanOperationStatus error = null;
- String resourceInstanceId = resourceInstance.getUniqueId();
- log.debug("Before cloning of capability instances of resource instance {}.", resourceInstanceId);
-
- Either<TitanVertex, TitanOperationStatus> cloneAssociateCIWithPropertyValuesRes = null;
- Either<List<ImmutablePair<CapabilityInstData, GraphEdge>>, TitanOperationStatus> getAllCapabilityInstancesRes = capabilityInstanceOperation.getAllCapabilityInstancesOfResourceInstance(resourceInstanceId);
- if (getAllCapabilityInstancesRes.isRight() && getAllCapabilityInstancesRes.right().value() != TitanOperationStatus.NOT_FOUND) {
- error = getAllCapabilityInstancesRes.right().value();
- log.debug("Failed to get capability instances of component instance {}. status is {}", resourceInstanceId, error);
- }
- List<ImmutablePair<TitanVertex, GraphEdge>> list = new ArrayList<>();
- if (getAllCapabilityInstancesRes.isLeft()) {
- List<ImmutablePair<CapabilityInstData, GraphEdge>> capabilityInstances = getAllCapabilityInstancesRes.left().value();
- Map<String, List<CapabilityDefinition>> allCapabilitiesMap = resourceInstance.getCapabilities();
- List<CapabilityDefinition> allCapabilitiesList = new ArrayList<>();
- for (List<CapabilityDefinition> curList : allCapabilitiesMap.values()) {
- allCapabilitiesList.addAll(curList);
- }
- Map<String, CapabilityDefinition> capabilities = allCapabilitiesList.stream().collect(Collectors.toMap(CapabilityDefinition::getUniqueId, Function.identity()));
- String propertyName = GraphPropertiesDictionary.CAPABILITY_ID.getProperty();
- for (ImmutablePair<CapabilityInstData, GraphEdge> capabilityInstPair : capabilityInstances) {
- String capabilityId = (String) capabilityInstPair.getRight().getProperties().get(propertyName);
- CapabilityDefinition relatedCapability = capabilities.get(capabilityId);
- cloneAssociateCIWithPropertyValuesRes = capabilityInstanceOperation.cloneAssociateCapabilityInstanceWithPropertyValues(componentInstanceVertex, relatedCapability, capabilityInstPair);
- if (cloneAssociateCIWithPropertyValuesRes.isRight()) {
- error = cloneAssociateCIWithPropertyValuesRes.right().value();
- log.debug("Failed to clone capability instances {} of component instance {}. status is {}", capabilityInstPair.getLeft().getUniqueId(), resourceInstanceId, error);
- break;
- } else {
- list.add(new ImmutablePair<TitanVertex, GraphEdge>(cloneAssociateCIWithPropertyValuesRes.left().value(), capabilityInstPair.right));
- }
- }
- }
- log.debug("After cloning of capability instance of resource instance {}. Status is {}", resourceInstanceId, error);
- if (error == null) {
- return Either.left(list);
- }
- return Either.right(error);
- }
-
- public Either<List<ComponentInstance>, StorageOperationStatus> getAllComponentInstancesMetadataOnly(String componentId, NodeTypeEnum containerNodeType) {
-
- List<ComponentInstance> componentInstancesResult = new ArrayList<ComponentInstance>();
- Either<List<ComponentInstance>, StorageOperationStatus> result = Either.left(componentInstancesResult);
-
- Either<List<ImmutablePair<ComponentInstanceData, GraphEdge>>, TitanOperationStatus> resourceInstancesRes = getAllComponentInstanceFromGraph(componentId, containerNodeType, false);
-
- if (resourceInstancesRes.isRight()) {
-
- if (log.isDebugEnabled()) {
- log.debug("Resource instance was found under service {} . status is {} ", componentId, resourceInstancesRes.right().value());
- }
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(resourceInstancesRes.right().value()));
- }
-
- List<ImmutablePair<ComponentInstanceData, GraphEdge>> resourceInstances = resourceInstancesRes.left().value();
- if (resourceInstances != null && false == resourceInstances.isEmpty()) {
-
- for (ImmutablePair<ComponentInstanceData, GraphEdge> immutablePair : resourceInstances) {
- ComponentInstanceData resourceInstanceData = immutablePair.getKey();
- if (log.isDebugEnabled()) {
- log.debug("Going to fetch the relationships of resource instance {}", resourceInstanceData);
- }
- componentInstancesResult.add(new ComponentInstance(resourceInstanceData.getComponentInstDataDefinition()));
-
- }
- }
-
- return result;
- }
-
- public Either<List<CapabilityDefinition>, TitanOperationStatus> updateCapDefPropertyValues(ComponentInstance componentInstance, List<CapabilityDefinition> capabilityDefList) {
- String componentInstanceId = componentInstance.getUniqueId();
- log.debug("Before updating property values of capabilities of component istance {}.", componentInstanceId);
- TitanOperationStatus error = null;
- NodeTypeEnum nodeType = NodeTypeEnum.getByNameIgnoreCase(componentInstance.getOriginType().getInstanceType().trim());
-
- log.debug("Before getting all capability instances of component istance {}.", componentInstanceId);
- Either<List<ImmutablePair<CapabilityInstData, GraphEdge>>, TitanOperationStatus> getCapabilityInstancesRes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(nodeType), componentInstanceId, GraphEdgeLabels.CAPABILITY_INST,
- NodeTypeEnum.CapabilityInst, CapabilityInstData.class);
- if (getCapabilityInstancesRes.isRight() && !getCapabilityInstancesRes.right().value().equals(TitanOperationStatus.NOT_FOUND)) {
- error = getCapabilityInstancesRes.right().value();
- log.debug("Failed to retrieve capability Instances of resource instance {}. Status is {}", componentInstance.getName(), error);
- }
- log.debug("After getting all capability instances of component istance {}. Status is {}", componentInstanceId, error);
- Map<String, Map<String, PropertyValueData>> overridedCapabilitiesHM = new HashMap<>();
- if (getCapabilityInstancesRes.isLeft()) {
- List<ImmutablePair<CapabilityInstData, GraphEdge>> capabilityInstDataPair = getCapabilityInstancesRes.left().value();
-
- for (ImmutablePair<CapabilityInstData, GraphEdge> curCapabilityPair : capabilityInstDataPair) {
- CapabilityInstData curCapabilityInst = curCapabilityPair.getLeft();
- String curCapInstUid = curCapabilityInst.getUniqueId();
-
- log.debug("Before getting all property values of capability instance {} of component istance {}.", curCapInstUid, componentInstanceId);
- Either<List<ImmutablePair<PropertyValueData, GraphEdge>>, TitanOperationStatus> getOverridedPropertyValuesRes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.getByName(curCapabilityInst.getLabel())),
- curCapInstUid, GraphEdgeLabels.PROPERTY_VALUE, NodeTypeEnum.PropertyValue, PropertyValueData.class);
- if (getOverridedPropertyValuesRes.isRight()) {
- error = getOverridedPropertyValuesRes.right().value();
- log.debug("Failed to retrieve property values of capability instance {}. Status is {}", curCapInstUid, error);
- } else {
- log.debug("After getting all property values of capability instance {} of component istance {}. Status is {}", curCapInstUid, componentInstanceId, error);
- Map<String, PropertyValueData> overridedPropertyValuesHM = new HashMap<>();
- List<ImmutablePair<PropertyValueData, GraphEdge>> overridedPropertyValues = getOverridedPropertyValuesRes.left().value();
- for (ImmutablePair<PropertyValueData, GraphEdge> curPropertyValuePair : overridedPropertyValues) {
- PropertyValueData curPropertyValue = curPropertyValuePair.getLeft();
- String propertyValueUid = curPropertyValue.getUniqueId();
- log.debug("Before getting property related to property value {} of capability instance {} of component istance {}.", propertyValueUid, curCapInstUid, componentInstanceId);
- Either<ImmutablePair<PropertyData, GraphEdge>, TitanOperationStatus> getPropertyDataRes = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.getByName(curPropertyValue.getLabel())), propertyValueUid,
- GraphEdgeLabels.PROPERTY_IMPL, NodeTypeEnum.Property, PropertyData.class);
- if (getPropertyDataRes.isRight()) {
- error = getOverridedPropertyValuesRes.right().value();
- log.debug("Failed to retrieve property of property value {} Status is {}", propertyValueUid, error);
- }
- log.debug("After getting property related to property value {} of capability instance {} of component istance {}. Status is {}", propertyValueUid, curCapInstUid, componentInstanceId, error);
- PropertyData propertyData = getPropertyDataRes.left().value().getLeft();
- overridedPropertyValuesHM.put((String) propertyData.getUniqueId(), curPropertyValue);
- }
- overridedCapabilitiesHM.put((String) curCapabilityPair.getRight().getProperties().get(GraphPropertiesDictionary.CAPABILITY_ID.getProperty()), overridedPropertyValuesHM);
- }
- }
- }
- if (error == null && !overridedCapabilitiesHM.isEmpty()) {
- updateCapabilityPropertyValues(componentInstance.getCapabilities(), capabilityDefList, overridedCapabilitiesHM);
- }
- log.debug("After updating property values of capabilities of component istance {}. Status is {}", componentInstanceId, error);
- if (error == null) {
- return Either.left(capabilityDefList);
- }
- return Either.right(error);
- }
-
- private void updateCapabilityPropertyValues(Map<String, List<CapabilityDefinition>> capabilitiesOfRI, List<CapabilityDefinition> capabilitiesOfContainer, Map<String, Map<String, PropertyValueData>> overridedCapabilitiesHM) {
-
- capabilitiesOfContainer.stream().filter(capability -> overridedCapabilitiesHM.containsKey(capability.getUniqueId())).forEach(capability -> {
- boolean updateProperties = false;
- for (ComponentInstanceProperty property : capability.getProperties()) {
- if (overridedCapabilitiesHM.get(capability.getUniqueId()).containsKey(property.getUniqueId())) {
- property.setValue(overridedCapabilitiesHM.get(capability.getUniqueId()).get(property.getUniqueId()).getValue());
- property.setValueUniqueUid(overridedCapabilitiesHM.get(capability.getUniqueId()).get(property.getUniqueId()).getUniqueId());
- updateProperties = true;
- }
- }
- if (updateProperties) {
- capabilitiesOfRI.get(capability.getType()).get(0).setProperties(capability.getProperties());
- }
- });
- }
-
@Override
public Either<ComponentInstanceInput, StorageOperationStatus> updateInputValueInResourceInstance(ComponentInstanceInput input, String resourceInstanceId, boolean b) {
return null;
}
- public Either<Map<String, ArtifactDefinition>, StorageOperationStatus> fetchCIEnvArtifacts(String componentInstanceId) {
- Either<Map<String, ArtifactDefinition>, StorageOperationStatus> result = artifactOperation.getArtifacts(componentInstanceId, NodeTypeEnum.ResourceInstance, true, ArtifactGroupTypeEnum.DEPLOYMENT.getType());
- if (result.isRight() && result.right().value() == StorageOperationStatus.NOT_FOUND)
- return Either.right(StorageOperationStatus.OK);
- return result;
- }
-
@Override
public StorageOperationStatus updateCustomizationUUID(String componentInstanceId) {
Either<TitanVertex, TitanOperationStatus> vertexByProperty = titanGenericDao.getVertexByProperty(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), componentInstanceId);
@@ -6080,75 +690,6 @@ public class ComponentInstanceOperation extends AbstractOperation implements ICo
return StorageOperationStatus.OK;
}
- private Either<String, Boolean> handleGroupInstanceNameLogic(TitanVertex ciVertex, GroupInstance groupInstance, String componentInstanceId, String componentInstanceName, String groupName) {
-
- groupInstance.setGroupName(groupName);
-
- String logicalName = groupInstanceOperation.createGroupInstLogicalName(componentInstanceName, groupName);
-
- Boolean eitherValidation = validateGroupInstanceName(logicalName, groupInstance, true);
- if (!eitherValidation) {
- return Either.right(false);
- }
- // groupInstance.setName(logicalName);
- return Either.left(logicalName);
- }
-
- private Boolean validateGroupInstanceName(String groupInstanceName, GroupInstance groupInstance, boolean isCreate) {
-
- if (!ValidationUtils.validateStringNotEmpty(groupInstanceName)) {
- return false;
- }
- groupInstance.setNormalizedName(ValidationUtils.normalizeComponentInstanceName(groupInstanceName));
- if (!isCreate) {
- if (!ValidationUtils.validateResourceInstanceNameLength(groupInstanceName)) {
- return false;
- }
- if (!ValidationUtils.validateResourceInstanceName(groupInstanceName)) {
- return false;
- }
- }
-
- return true;
-
- }
- // Evg: need to be public for reuse code in migration
- public Either<GroupInstance, StorageOperationStatus> createGroupInstance(TitanVertex ciVertex, GroupDefinition groupDefinition, ComponentInstance componentInstance) {
- // create VFC instance on VF
- GroupInstance groupInstance = null;
-
- boolean isCreateName = false;
- List<GroupInstance> groupInstances = componentInstance.getGroupInstances();
- if (groupInstances != null && !groupInstances.isEmpty()) {
- Optional<GroupInstance> op = groupInstances.stream().filter(p -> p.getGroupUid().equals(groupDefinition.getUniqueId())).findAny();
- if (op.isPresent()) {
- groupInstance = op.get();
-
- }
- }
- if (groupInstance == null) {
- groupInstance = new GroupInstance();
- groupInstance.setGroupUid(groupDefinition.getUniqueId());
-
- groupInstance.setArtifacts(groupDefinition.getArtifacts());
- Either<String, Boolean> handleNameLogic = handleGroupInstanceNameLogic(ciVertex, groupInstance, componentInstance.getUniqueId(), componentInstance.getNormalizedName(), groupDefinition.getName());
- if (handleNameLogic.isRight() && !handleNameLogic.right().value()) {
-
- if (handleNameLogic.isRight()) {
- log.debug("failed to create logical name gor group instance {}", groupInstance.getName());
- return Either.right(StorageOperationStatus.INVALID_ID);
-
- }
- }
- isCreateName = true;
- // groupInstance.setName(handleNameLogic.left().value());
-
- }
-
- return groupInstanceOperation.createGroupInstance(ciVertex, componentInstance.getUniqueId(), groupInstance, isCreateName);
-
- }
-
@Override
public Either<ComponentInstanceData, StorageOperationStatus> updateComponentInstanceModificationTimeAndCustomizationUuidOnGraph(ComponentInstance componentInstance, NodeTypeEnum componentInstanceType, Long modificationTime, boolean inTransaction) {
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ComponentOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ComponentOperation.java
deleted file mode 100644
index 9d9814efcb..0000000000
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ComponentOperation.java
+++ /dev/null
@@ -1,2964 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.openecomp.sdc.be.model.operations.impl;
-
-import java.time.Duration;
-import java.time.Instant;
-import java.util.*;
-import java.util.Map.Entry;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.function.Function;
-import java.util.regex.Pattern;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-import org.apache.commons.lang.StringUtils;
-import org.apache.commons.lang3.tuple.ImmutablePair;
-import org.apache.commons.lang3.tuple.ImmutableTriple;
-import org.apache.commons.lang3.tuple.Pair;
-import org.apache.tinkerpop.gremlin.structure.Direction;
-import org.apache.tinkerpop.gremlin.structure.Edge;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
-import org.openecomp.sdc.be.config.ConfigurationManager;
-import org.openecomp.sdc.be.dao.api.ActionStatus;
-import org.openecomp.sdc.be.dao.graph.GraphElementFactory;
-import org.openecomp.sdc.be.dao.graph.datatype.GraphEdge;
-import org.openecomp.sdc.be.dao.graph.datatype.GraphElementTypeEnum;
-import org.openecomp.sdc.be.dao.graph.datatype.GraphNode;
-import org.openecomp.sdc.be.dao.graph.datatype.GraphRelation;
-import org.openecomp.sdc.be.dao.graph.datatype.RelationEndPoint;
-import org.openecomp.sdc.be.dao.neo4j.GraphEdgeLabels;
-import org.openecomp.sdc.be.dao.neo4j.GraphEdgePropertiesDictionary;
-import org.openecomp.sdc.be.dao.neo4j.GraphPropertiesDictionary;
-import org.openecomp.sdc.be.dao.titan.QueryType;
-import org.openecomp.sdc.be.dao.titan.TitanGenericDao;
-import org.openecomp.sdc.be.dao.titan.TitanGraphClient;
-import org.openecomp.sdc.be.dao.titan.TitanOperationStatus;
-import org.openecomp.sdc.be.datatypes.category.GroupingDataDefinition;
-import org.openecomp.sdc.be.datatypes.components.ComponentMetadataDataDefinition;
-import org.openecomp.sdc.be.datatypes.components.ResourceMetadataDataDefinition;
-import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
-import org.openecomp.sdc.be.datatypes.enums.FilterKeyEnum;
-import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
-import org.openecomp.sdc.be.datatypes.enums.OriginTypeEnum;
-import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
-import org.openecomp.sdc.be.model.AdditionalInformationDefinition;
-import org.openecomp.sdc.be.model.ArtifactDefinition;
-import org.openecomp.sdc.be.model.CapabilityDefinition;
-import org.openecomp.sdc.be.model.Component;
-import org.openecomp.sdc.be.model.ComponentInstance;
-import org.openecomp.sdc.be.model.ComponentInstanceInput;
-import org.openecomp.sdc.be.model.ComponentInstanceProperty;
-import org.openecomp.sdc.be.model.ComponentParametersView;
-import org.openecomp.sdc.be.model.DataTypeDefinition;
-import org.openecomp.sdc.be.model.GroupDefinition;
-import org.openecomp.sdc.be.model.InputDefinition;
-import org.openecomp.sdc.be.model.LifecycleStateEnum;
-import org.openecomp.sdc.be.model.PropertyDefinition;
-import org.openecomp.sdc.be.model.PropertyDefinition.PropertyNames;
-import org.openecomp.sdc.be.model.RequirementCapabilityRelDef;
-import org.openecomp.sdc.be.model.RequirementDefinition;
-import org.openecomp.sdc.be.model.User;
-import org.openecomp.sdc.be.model.cache.ApplicationDataTypeCache;
-import org.openecomp.sdc.be.model.cache.ComponentCache;
-import org.openecomp.sdc.be.model.category.CategoryDefinition;
-import org.openecomp.sdc.be.model.category.GroupingDefinition;
-import org.openecomp.sdc.be.model.category.SubCategoryDefinition;
-import org.openecomp.sdc.be.model.operations.api.IAdditionalInformationOperation;
-import org.openecomp.sdc.be.model.operations.api.IArtifactOperation;
-import org.openecomp.sdc.be.model.operations.api.ICapabilityOperation;
-import org.openecomp.sdc.be.model.operations.api.IElementOperation;
-import org.openecomp.sdc.be.model.operations.api.IRequirementOperation;
-import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
-import org.openecomp.sdc.be.model.operations.api.ToscaDefinitionPathCalculator;
-import org.openecomp.sdc.be.resources.data.ArtifactData;
-import org.openecomp.sdc.be.resources.data.CapabilityData;
-import org.openecomp.sdc.be.resources.data.ComponentMetadataData;
-import org.openecomp.sdc.be.resources.data.ProductMetadataData;
-import org.openecomp.sdc.be.resources.data.RequirementData;
-import org.openecomp.sdc.be.resources.data.ResourceMetadataData;
-import org.openecomp.sdc.be.resources.data.ServiceMetadataData;
-import org.openecomp.sdc.be.resources.data.TagData;
-import org.openecomp.sdc.be.resources.data.UniqueIdData;
-import org.openecomp.sdc.be.resources.data.UserData;
-import org.openecomp.sdc.be.resources.data.category.CategoryData;
-import org.openecomp.sdc.be.resources.data.category.GroupingData;
-import org.openecomp.sdc.be.resources.data.category.SubCategoryData;
-import org.openecomp.sdc.be.utils.CommonBeUtils;
-import org.openecomp.sdc.be.workers.Job;
-import org.openecomp.sdc.be.workers.Manager;
-import org.openecomp.sdc.common.api.ArtifactGroupTypeEnum;
-import org.openecomp.sdc.common.util.StreamUtils;
-import org.openecomp.sdc.common.util.ValidationUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.slf4j.MDC;
-import org.springframework.beans.factory.annotation.Autowired;
-
-import com.google.common.collect.ImmutableSet;
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import com.thinkaurelius.titan.core.TitanGraph;
-import com.thinkaurelius.titan.core.TitanGraphQuery;
-import com.thinkaurelius.titan.core.TitanVertex;
-
-import fj.data.Either;
-
-public abstract class ComponentOperation {
- private static Logger log = LoggerFactory.getLogger(ComponentOperation.class.getName());
-
- @Autowired
- protected TitanGenericDao titanGenericDao;
-
- @Autowired
- protected IArtifactOperation artifactOperation;
-
- @Autowired
- protected IElementOperation elementOperation;
-
- @Autowired
- protected ICapabilityOperation capabilityOperation;
-
- @Autowired
- protected IRequirementOperation requirementOperation;
-
- @Autowired
- protected ComponentInstanceOperation componentInstanceOperation;
-
- @Autowired
- private PropertyOperation propertyOperation;
-
- @Autowired
- protected InputsOperation inputOperation;
-
- @Autowired
- protected IAdditionalInformationOperation additionalInformationOperation;
-
- @Autowired
- protected GroupOperation groupOperation;
-
- @Autowired
- protected InputsOperation inputsOperation;
-
- @Autowired
- protected ApplicationDataTypeCache applicationDataTypeCache;
-
- @Autowired
- private ComponentCache componentCache;
-
- @Autowired
- private ToscaDefinitionPathCalculator toscaDefinitionPathCalculator;
-
- private static Pattern uuidNewVersion = Pattern.compile("^\\d{1,}.1");
-
- protected Gson prettyJson = new GsonBuilder().setPrettyPrinting().create();
-
- protected Either<List<TagData>, StorageOperationStatus> createNewTagsList(List<String> tags) {
-
- List<TagData> existingTags = new ArrayList<TagData>();
- List<TagData> tagsToCreate = new ArrayList<TagData>();
- Either<List<TagData>, TitanOperationStatus> either = titanGenericDao.getAll(NodeTypeEnum.Tag, TagData.class);
-
- if ((either.isRight()) && (either.right().value() != TitanOperationStatus.NOT_FOUND)) {
- return Either.right(StorageOperationStatus.GENERAL_ERROR);
- } else if (either.isLeft()) {
- existingTags = either.left().value();
- }
-
- for (String tagName : tags) {
- TagData tag = new TagData(tagName);
- if ((existingTags == null) || (!existingTags.contains(tag))) {
- tagsToCreate.add(tag);
- }
- }
- return Either.left(tagsToCreate);
-
- }
-
- protected StorageOperationStatus createTagNodesOnGraph(List<TagData> tagsToCreate) {
- StorageOperationStatus result = StorageOperationStatus.OK;
- // In order to avoid duplicate tags
- tagsToCreate = ImmutableSet.copyOf(tagsToCreate).asList();
- if (tagsToCreate != null && false == tagsToCreate.isEmpty()) {
- for (TagData tagData : tagsToCreate) {
- log.debug("Before creating tag {}" , tagData);
- Either<TagData, TitanOperationStatus> createTagResult = titanGenericDao.createNode(tagData, TagData.class);
- if (createTagResult.isRight()) {
- TitanOperationStatus status = createTagResult.right().value();
- log.error("Cannot create {} in the graph. status is {}", tagData, status);
- result = DaoStatusConverter.convertTitanStatusToStorageStatus(status);
-
- }
- log.debug("After creating tag {}", tagData);
- }
- }
- return result;
- }
-
- public Either<Component, StorageOperationStatus> getLatestComponentByUuid(NodeTypeEnum nodeType, String uuid) {
- Either<Component, StorageOperationStatus> getComponentResult = null;
- Either<ComponentMetadataData, StorageOperationStatus> latestComponentMetadataRes = getLatestComponentMetadataByUuid(nodeType, uuid, false);
- if (latestComponentMetadataRes.isRight()) {
- getComponentResult = Either.right(latestComponentMetadataRes.right().value());
- }
- if (getComponentResult == null) {
- ComponentMetadataData latestVersion = latestComponentMetadataRes.left().value();
- String id = latestVersion.getMetadataDataDefinition().getUniqueId();
- Either<Component, StorageOperationStatus> component = getComponent(id, false);
- if (component.isRight()) {
- log.debug("Couldn't fetch component with type {} and id {}, error: {}", nodeType, id, component.right().value());
- getComponentResult = Either.right(component.right().value());
- } else {
- getComponentResult = Either.left(component.left().value());
- }
- }
- return getComponentResult;
- }
-
- public Either<ComponentMetadataData, StorageOperationStatus> getLatestComponentMetadataByUuid(NodeTypeEnum nodeType, String uuid, boolean inTransaction) {
-
- Either<ComponentMetadataData, StorageOperationStatus> getComponentResult = null;
- List<ComponentMetadataData> latestVersionList = null;
- ComponentMetadataData latestVersion = null;
-
- Map<String, Object> propertiesToMatch = new HashMap<String, Object>();
- propertiesToMatch.put(GraphPropertiesDictionary.UUID.getProperty(), uuid);
- propertiesToMatch.put(GraphPropertiesDictionary.IS_HIGHEST_VERSION.getProperty(), true);
- try{
- Either<List<ComponentMetadataData>, TitanOperationStatus> getComponentEither = titanGenericDao.getByCriteria(nodeType, propertiesToMatch, ComponentMetadataData.class);
- if (getComponentEither.isRight()) {
- log.debug("Couldn't fetch metadata for component with type {} and uuid {}, error: {}", nodeType, uuid, getComponentEither.right().value());
- getComponentResult = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(getComponentEither.right().value()));
-
- }
- if (getComponentResult == null) {
- latestVersionList = getComponentEither.left().value();
- if (latestVersionList.isEmpty()) {
- log.debug("Component with type {} and uuid {} was not found", nodeType, uuid);
- getComponentResult = Either.right(StorageOperationStatus.NOT_FOUND);
- }
- }
- if (getComponentResult == null) {
- latestVersion = latestVersionList.size() == 1 ? latestVersionList.get(0)
- : latestVersionList.stream().max((c1, c2) -> Double.compare(Double.parseDouble(c1.getMetadataDataDefinition().getVersion()), Double.parseDouble(c2.getMetadataDataDefinition().getVersion()))).get();
- getComponentResult = Either.left(latestVersion);
- }
- } catch (Exception e){
- log.debug("Failed to get latest component metadata with type {} by uuid {}. ", nodeType.getName(), uuid, e);
- }finally {
- if (!inTransaction) {
- titanGenericDao.commit();
- }
- }
- return getComponentResult;
- }
-
- public <T extends GraphNode> Either<T, StorageOperationStatus> getComponentByLabelAndId(String uniqueId, NodeTypeEnum nodeType, Class<T> clazz) {
-
- Map<String, Object> propertiesToMatch = new HashMap<String, Object>();
- propertiesToMatch.put(UniqueIdBuilder.getKeyByNodeType(nodeType), uniqueId);
- Either<List<T>, TitanOperationStatus> getResponse = titanGenericDao.getByCriteria(nodeType, propertiesToMatch, clazz);
- if (getResponse.isRight()) {
- log.debug("Couldn't fetch component with type {} and unique id {}, error: {}", nodeType, uniqueId, getResponse.right().value());
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(getResponse.right().value()));
-
- }
- List<T> serviceDataList = getResponse.left().value();
- if (serviceDataList.isEmpty()) {
- log.debug("Component with type {} and unique id {} was not found", nodeType, uniqueId);
- return Either.right(StorageOperationStatus.NOT_FOUND);
- }
- T serviceData = serviceDataList.get(0);
- return Either.left(serviceData);
- }
-
- /**
- *
- * @param component
- * @param uniqueId
- * @param nodeType
- * @return
- */
- protected TitanOperationStatus setComponentCreatorFromGraph(Component component, String uniqueId, NodeTypeEnum nodeType) {
- Either<ImmutablePair<UserData, GraphEdge>, TitanOperationStatus> parentNode = titanGenericDao.getParentNode(UniqueIdBuilder.getKeyByNodeType(nodeType), uniqueId, GraphEdgeLabels.CREATOR, NodeTypeEnum.User, UserData.class);
- if (parentNode.isRight()) {
- return parentNode.right().value();
- }
-
- ImmutablePair<UserData, GraphEdge> value = parentNode.left().value();
- if (log.isDebugEnabled())
- log.debug("Found parent node {}", value);
- UserData userData = value.getKey();
- if (log.isDebugEnabled())
- log.debug("Build resource : set creator userId to {}", userData.getUserId());
- String fullName = buildFullName(userData);
- if (log.isDebugEnabled())
- log.debug("Build resource : set last modifier full name to {} ", fullName);
- component.setCreatorUserId(userData.getUserId());
- component.setCreatorFullName(fullName);
-
- return TitanOperationStatus.OK;
- }
-
- protected TitanOperationStatus setComponentLastModifierFromGraph(Component component, String uniqueId, NodeTypeEnum nodeType) {
-
- Either<ImmutablePair<UserData, GraphEdge>, TitanOperationStatus> parentNode = titanGenericDao.getParentNode(UniqueIdBuilder.getKeyByNodeType(nodeType), uniqueId, GraphEdgeLabels.LAST_MODIFIER, NodeTypeEnum.User, UserData.class);
- if (parentNode.isRight()) {
- return parentNode.right().value();
- }
-
- ImmutablePair<UserData, GraphEdge> value = parentNode.left().value();
- if (log.isDebugEnabled())
- log.debug("Found parent node {}", value);
- UserData userData = value.getKey();
-
- if (log.isDebugEnabled())
- log.debug("Build resource : set last modifier userId to {}", userData.getUserId());
- String fullName = buildFullName(userData);
- if (log.isDebugEnabled())
- log.debug("Build resource : set last modifier full name to {}", fullName);
- component.setLastUpdaterUserId(userData.getUserId());
- component.setLastUpdaterFullName(fullName);
-
- return TitanOperationStatus.OK;
- }
-
- /**
- *
- * @param userData
- * @return
- */
- protected String buildFullName(UserData userData) {
-
- String fullName = userData.getFirstName();
- if (fullName == null) {
- fullName = "";
- } else {
- fullName = fullName + " ";
- }
- String lastName = userData.getLastName();
- if (lastName != null) {
- fullName += lastName;
- }
- return fullName;
- }
-
- protected Either<UserData, TitanOperationStatus> findUser(String userId) {
- String key = UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.User);
- Either<UserData, TitanOperationStatus> findUser = titanGenericDao.getNode(key, userId, UserData.class);
- return findUser;
- }
-
- protected Either<TitanVertex, TitanOperationStatus> findUserVertex(String userId) {
- String key = UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.User);
- return titanGenericDao.getVertexByProperty(key, userId);
- }
-
- protected Either<GroupingData, TitanOperationStatus> findGrouping(NodeTypeEnum nodeType, String groupingId) {
- String key = UniqueIdBuilder.getKeyByNodeType(nodeType);
- Either<GroupingData, TitanOperationStatus> findGrouping = titanGenericDao.getNode(key, groupingId, GroupingData.class);
- return findGrouping;
- }
-
- protected Either<SubCategoryData, TitanOperationStatus> findSubCategory(NodeTypeEnum nodeType, String subCategoryId) {
- String key = UniqueIdBuilder.getKeyByNodeType(nodeType);
- Either<SubCategoryData, TitanOperationStatus> findSubCategory = titanGenericDao.getNode(key, subCategoryId, SubCategoryData.class);
- return findSubCategory;
- }
-
- protected Either<CategoryData, TitanOperationStatus> findCategory(NodeTypeEnum nodeType, String categoryId) {
- String key = UniqueIdBuilder.getKeyByNodeType(nodeType);
- Either<CategoryData, TitanOperationStatus> findCategory = titanGenericDao.getNode(key, categoryId, CategoryData.class);
- return findCategory;
- }
-
- protected TitanOperationStatus associateMetadataToComponent(ComponentMetadataData componentData, UserData userData, UserData updater, CategoryData categoryData, List<ResourceMetadataData> derivedResources) {
-
- Map<String, Object> props = new HashMap<String, Object>();
- props.put(GraphPropertiesDictionary.STATE.getProperty(), componentData.getMetadataDataDefinition().getState());
- Either<GraphRelation, TitanOperationStatus> result = titanGenericDao.createRelation(updater, componentData, GraphEdgeLabels.STATE, props);
- log.debug("After associating user {} to component {}. Edge type is {}" , updater, componentData.getUniqueId(), GraphEdgeLabels.STATE);
- if (result.isRight()) {
- return result.right().value();
- }
-
- result = titanGenericDao.createRelation(updater, componentData, GraphEdgeLabels.LAST_MODIFIER, null);
- log.debug("After associating user {} to component {}. Edge type is {}", updater, componentData.getUniqueId(), GraphEdgeLabels.LAST_MODIFIER);
- if (result.isRight()) {
- log.error("Failed to associate user {} to component {}. Edge type is {}", updater, componentData.getUniqueId(), GraphEdgeLabels.LAST_MODIFIER);
- return result.right().value();
- }
-
- result = titanGenericDao.createRelation(userData, componentData, GraphEdgeLabels.CREATOR, null);
- log.debug("After associating user {} to component {}. Edge type is {}" , userData, componentData.getUniqueId(), GraphEdgeLabels.CREATOR);
- if (result.isRight()) {
- log.error("Failed to associate user {} to component {}. Edge type is {}", userData, componentData.getUniqueId(), GraphEdgeLabels.CREATOR);
- return result.right().value();
- }
-
- if (derivedResources != null) {
- for (ResourceMetadataData derivedResource : derivedResources) {
- log.debug("After associating component {} to parent component {}. Edge type is {}" ,componentData.getUniqueId(), derivedResource.getUniqueId(), GraphEdgeLabels.DERIVED_FROM);
- result = titanGenericDao.createRelation(componentData, derivedResource, GraphEdgeLabels.DERIVED_FROM, null);
- if (result.isRight()) {
- log.error("Failed to associate user {} to component {}. Edge type is {}", userData, componentData.getUniqueId(), GraphEdgeLabels.CREATOR);
- return result.right().value();
- }
- }
- }
-
- if (categoryData != null) {
- result = titanGenericDao.createRelation(componentData, categoryData, GraphEdgeLabels.CATEGORY, null);
- log.debug("After associating component {} to category {}. Edge type is {}", componentData.getUniqueId(), categoryData, GraphEdgeLabels.CATEGORY);
- if (result.isRight()) {
- log.error("Faield to associate component {} to category {}. Edge type is {}", componentData.getUniqueId(), categoryData, GraphEdgeLabels.CATEGORY);
- return result.right().value();
- }
- }
-
- return TitanOperationStatus.OK;
- }
-
- protected StorageOperationStatus associateArtifactsToComponent(NodeTypeEnum nodeType, ComponentMetadataData componentData, Map<String, ArtifactDefinition> artifacts) {
-
- if (artifacts != null) {
- for (Entry<String, ArtifactDefinition> entry : artifacts.entrySet()) {
-
- ArtifactDefinition artifactDefinition = entry.getValue();
- Either<ArtifactDefinition, StorageOperationStatus> addArifactToResource = Either.left(artifactDefinition);
- addArifactToResource = artifactOperation.addArifactToComponent(artifactDefinition, (String) componentData.getUniqueId(), nodeType, false, true);
- if (addArifactToResource.isRight()) {
- return addArifactToResource.right().value();
- }
- }
- }
- return StorageOperationStatus.OK;
-
- }
-
- protected Either<Boolean, StorageOperationStatus> validateResourceNameUniqueness(String name, Map<String, Object> hasProps, Map<String, Object> hasNotProps, TitanGenericDao titanGenericDao) {
- if (hasProps == null) {
- hasProps = new HashMap<String, Object>();
- }
- String normalizedName = ValidationUtils.normaliseComponentName(name);
- hasProps.put(GraphPropertiesDictionary.NORMALIZED_NAME.getProperty(), normalizedName);
-
- Either<List<ResourceMetadataData>, TitanOperationStatus> resources = titanGenericDao.getByCriteria(NodeTypeEnum.Resource, hasProps, hasNotProps, ResourceMetadataData.class);
- if (resources.isRight() && resources.right().value() != TitanOperationStatus.NOT_FOUND) {
- log.debug("failed to get resources from graph with property name: {}", name);
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(resources.right().value()));
- }
- List<ResourceMetadataData> resourceList = (resources.isLeft() ? resources.left().value() : null);
- if (resourceList != null && resourceList.size() > 0) {
- if (log.isDebugEnabled()) {
- StringBuilder builder = new StringBuilder();
- for (ResourceMetadataData resourceData : resourceList) {
- builder.append(resourceData.getUniqueId() + "|");
- }
- log.debug("resources with property name:{} exists in graph. found {}",name, builder.toString());
- }
- return Either.left(false);
- } else {
- log.debug("resources with property name:{} does not exists in graph", name);
- return Either.left(true);
- }
-
- }
-
- protected Either<Boolean, StorageOperationStatus> validateServiceNameUniqueness(String name, TitanGenericDao titanGenericDao) {
- Map<String, Object> properties = new HashMap<>();
- String normalizedName = ValidationUtils.normaliseComponentName(name);
- properties.put(GraphPropertiesDictionary.NORMALIZED_NAME.getProperty(), normalizedName);
-
- Either<List<ServiceMetadataData>, TitanOperationStatus> services = titanGenericDao.getByCriteria(NodeTypeEnum.Service, properties, ServiceMetadataData.class);
- if (services.isRight() && services.right().value() != TitanOperationStatus.NOT_FOUND) {
- log.debug("failed to get services from graph with property name: {}" , name);
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(services.right().value()));
- }
- List<ServiceMetadataData> serviceList = (services.isLeft() ? services.left().value() : null);
- if (serviceList != null && serviceList.size() > 0) {
- if (log.isDebugEnabled()) {
- StringBuilder builder = new StringBuilder();
- for (ServiceMetadataData serviceData : serviceList) {
- builder.append(serviceData.getUniqueId() + "|");
- }
- log.debug("Service with property name:{} exists in graph. found {}" , name, builder.toString());
- }
-
- return Either.left(false);
- } else {
- log.debug("Service with property name:{} does not exists in graph", name);
- return Either.left(true);
- }
- }
-
- protected Either<Boolean, StorageOperationStatus> validateToscaResourceNameUniqueness(String name, TitanGenericDao titanGenericDao) {
- Map<String, Object> properties = new HashMap<>();
-
- properties.put(GraphPropertiesDictionary.TOSCA_RESOURCE_NAME.getProperty(), name);
-
- Either<List<ResourceMetadataData>, TitanOperationStatus> resources = titanGenericDao.getByCriteria(NodeTypeEnum.Resource, properties, ResourceMetadataData.class);
- if (resources.isRight() && resources.right().value() != TitanOperationStatus.NOT_FOUND) {
- log.debug("failed to get resources from graph with property name: {}" , name);
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(resources.right().value()));
- }
- List<ResourceMetadataData> resourceList = (resources.isLeft() ? resources.left().value() : null);
- if (resourceList != null && resourceList.size() > 0) {
- if (log.isDebugEnabled()) {
- StringBuilder builder = new StringBuilder();
- for (ResourceMetadataData resourceData : resourceList) {
- builder.append(resourceData.getUniqueId() + "|");
- }
- log.debug("resources with property name:{} exists in graph. found {}" , name, builder.toString());
- }
- return Either.left(false);
- } else {
- log.debug("resources with property name:{} does not exists in graph", name);
- return Either.left(true);
- }
-
- }
-
- protected Either<Boolean, StorageOperationStatus> validateComponentNameUniqueness(String name, TitanGenericDao titanGenericDao, NodeTypeEnum type) {
- Map<String, Object> properties = new HashMap<>();
- String normalizedName = ValidationUtils.normaliseComponentName(name);
- properties.put(GraphPropertiesDictionary.NORMALIZED_NAME.getProperty(), normalizedName);
-
- Either<List<ComponentMetadataData>, TitanOperationStatus> components = titanGenericDao.getByCriteria(type, properties, ComponentMetadataData.class);
- if (components.isRight() && components.right().value() != TitanOperationStatus.NOT_FOUND) {
- log.debug("failed to get components from graph with property name: {}" , name);
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(components.right().value()));
- }
- List<ComponentMetadataData> componentList = (components.isLeft() ? components.left().value() : null);
- if (componentList != null && componentList.size() > 0) {
- if (log.isDebugEnabled()) {
- StringBuilder builder = new StringBuilder();
- for (ComponentMetadataData componentData : componentList) {
- builder.append(componentData.getUniqueId() + "|");
- }
- log.debug("Component with property name:{} exists in graph. found {}" , name, builder.toString());
- }
-
- return Either.left(false);
- } else {
- log.debug("Component with property name:{} does not exists in graph", name);
- return Either.left(true);
- }
- }
-
- protected StorageOperationStatus setArtifactFromGraph(String uniqueId, Component component, NodeTypeEnum type, IArtifactOperation artifactOperation) {
- StorageOperationStatus result = StorageOperationStatus.OK;
- Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifacts = artifactOperation.getArtifacts(uniqueId, type, true);
- if (artifacts.isRight()) {
- result = artifacts.right().value();
- } else {
- // component.setArtifacts(artifacts.left().value());
- createSpecificArtifactList(component, artifacts.left().value());
- }
- return result;
- }
-
- protected Component createSpecificArtifactList(Component component, Map<String, ArtifactDefinition> artifacts) {
-
- if (artifacts != null) {
- Map<String, ArtifactDefinition> deploymentArtifacts = new HashMap<>();
- Map<String, ArtifactDefinition> serviceApiArtifacts = new HashMap<>();
- Map<String, ArtifactDefinition> toscaArtifacts = new HashMap<>();
-
- Set<Entry<String, ArtifactDefinition>> specificet = new HashSet<>();
-
- for (Entry<String, ArtifactDefinition> entry : artifacts.entrySet()) {
- ArtifactDefinition artifact = entry.getValue();
- ArtifactGroupTypeEnum artifactGroupType = artifact.getArtifactGroupType();
- if (artifactGroupType == null) {
- artifactGroupType = ArtifactGroupTypeEnum.INFORMATIONAL;
- }
-
- switch (artifactGroupType) {
- case DEPLOYMENT:
- deploymentArtifacts.put(artifact.getArtifactLabel(), artifact);
- specificet.add(entry);
- break;
- case SERVICE_API:
- serviceApiArtifacts.put(artifact.getArtifactLabel(), artifact);
- specificet.add(entry);
- break;
- case TOSCA:
- toscaArtifacts.put(artifact.getArtifactLabel(), artifact);
- specificet.add(entry);
- break;
- default:
- break;
- }
-
- }
- artifacts.entrySet().removeAll(specificet);
-
- component.setSpecificComponetTypeArtifacts(serviceApiArtifacts);
- component.setDeploymentArtifacts(deploymentArtifacts);
- component.setToscaArtifacts(toscaArtifacts);
- component.setArtifacts(artifacts);
- }
- return component;
- }
-
- private <T, S extends ComponentMetadataData> Either<List<T>, StorageOperationStatus> collectComponents(TitanGraph graph, NodeTypeEnum neededType, String categoryUid, NodeTypeEnum categoryType, Class<S> clazz, ResourceTypeEnum resourceType) {
- List<T> components = new ArrayList<>();
- Either<List<ImmutablePair<S, GraphEdge>>, TitanOperationStatus> parentNodes = titanGenericDao.getParentNodes(UniqueIdBuilder.getKeyByNodeType(categoryType), categoryUid, GraphEdgeLabels.CATEGORY, neededType, clazz);
- if (parentNodes.isLeft()) {
- for (ImmutablePair<S, GraphEdge> component : parentNodes.left().value()) {
- ComponentMetadataDataDefinition componentData = component.getLeft().getMetadataDataDefinition();
- Boolean isHighest = componentData.isHighestVersion();
- boolean isMatchingResourceType = isMatchingByResourceType(neededType, resourceType, componentData);
-
- if (isHighest && isMatchingResourceType) {
- Either<T, StorageOperationStatus> result = getLightComponent(componentData.getUniqueId(), true);
- if (result.isRight()) {
- return Either.right(result.right().value());
- }
- components.add(result.left().value());
- }
- }
- }
- return Either.left(components);
- }
-
- private boolean isMatchingByResourceType(NodeTypeEnum componentType, ResourceTypeEnum resourceType,
- ComponentMetadataDataDefinition componentData) {
-
- boolean isMatching;
- if (componentType == NodeTypeEnum.Resource) {
- if (resourceType == null) {
- isMatching = true;
- } else {
- isMatching = resourceType == ((ResourceMetadataDataDefinition)componentData).getResourceType();
- }
- } else {
- isMatching = true;
- }
- return isMatching;
- }
-
- protected <T, S extends ComponentMetadataData> Either<List<T>, StorageOperationStatus> fetchByCategoryOrSubCategoryUid(String categoryUid, NodeTypeEnum categoryType, String categoryLabel, NodeTypeEnum neededType, boolean inTransaction,
- Class<S> clazz, ResourceTypeEnum resourceType) {
- try {
- Either<TitanGraph, TitanOperationStatus> graph = titanGenericDao.getGraph();
- if (graph.isRight()) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(graph.right().value()));
-
- }
- return collectComponents(graph.left().value(), neededType, categoryUid, categoryType, clazz, resourceType);
-
- } finally {
- if (false == inTransaction) {
- titanGenericDao.commit();
- }
- }
- }
-
- protected <T, S extends ComponentMetadataData> Either<List<T>, StorageOperationStatus> fetchByCategoryOrSubCategoryName(String categoryName, NodeTypeEnum categoryType, String categoryLabel, NodeTypeEnum neededType, boolean inTransaction,
- Class<S> clazz, ResourceTypeEnum resourceType) {
- List<T> components = new ArrayList<>();
- try {
- Class categoryClazz = categoryType == NodeTypeEnum.ServiceNewCategory ? CategoryData.class : SubCategoryData.class;
- Map<String, Object> props = new HashMap<String, Object>();
- props.put(GraphPropertiesDictionary.NORMALIZED_NAME.getProperty(), ValidationUtils.normalizeCategoryName4Uniqueness(categoryName));
- Either<List<GraphNode>, TitanOperationStatus> getCategory = titanGenericDao.getByCriteria(categoryType, props, categoryClazz);
- if (getCategory.isRight()) {
- return Either.right(StorageOperationStatus.CATEGORY_NOT_FOUND);
- }
- Either<TitanGraph, TitanOperationStatus> graph = titanGenericDao.getGraph();
- if (graph.isRight()) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(graph.right().value()));
-
- }
- for (GraphNode category : getCategory.left().value()) {
- Either<List<T>, StorageOperationStatus> result = collectComponents(graph.left().value(), neededType, (String) category.getUniqueId(), categoryType, clazz, resourceType);
- if (result.isRight()) {
- return result;
- }
- components.addAll(result.left().value());
- }
-
- return Either.left(components);
- } finally {
- if (false == inTransaction) {
- titanGenericDao.commit();
- }
- }
- }
-
- <T> Either<List<T>, StorageOperationStatus> getFilteredComponents(Map<FilterKeyEnum, String> filters, boolean inTransaction, NodeTypeEnum neededType) {
- return null;
- }
-
- protected Either<List<Component>, StorageOperationStatus> getFollowedComponent(String userId, Set<LifecycleStateEnum> lifecycleStates, Set<LifecycleStateEnum> lastStateStates, boolean inTransaction, TitanGenericDao titanGenericDao,
- NodeTypeEnum neededType) {
-
- Either<List<Component>, StorageOperationStatus> result = null;
-
- try {
- Either<TitanGraph, TitanOperationStatus> graph = titanGenericDao.getGraph();
- if (graph.isRight()) {
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(graph.right().value()));
- return result;
- }
- Iterable<TitanVertex> users;
-
- if (userId == null) {
- // get all users by label
- // for Tester and Admin retrieve all users
-
- // users =
- // graph.left().value().getVertices(GraphPropertiesDictionary.LABEL.getProperty(),
- // NodeTypeEnum.User.getName());
- users = graph.left().value().query().has(GraphPropertiesDictionary.LABEL.getProperty(), NodeTypeEnum.User.getName()).vertices();
-
- } else {
- // for Designer retrieve specific user
- String key = UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.User);
- users = graph.left().value().query().has(key, userId).vertices();
- }
- Iterator<TitanVertex> userIterator = users.iterator();
-
- List<Component> components = new ArrayList<>();
- while (userIterator.hasNext()) {
- Vertex vertexUser = userIterator.next();
-
- // get all resource with current state
- Iterator<Edge> iterator = vertexUser.edges(Direction.OUT, GraphEdgeLabels.STATE.getProperty());
-
- List<Component> componentsPerUser = fetchComponents(lifecycleStates, iterator, neededType, inTransaction);
-
- HashSet<String> ids = new HashSet<String>();
-
- if (componentsPerUser != null) {
- for (Component comp : componentsPerUser) {
- ids.add(comp.getUniqueId());
- components.add(comp);
- }
- }
-
- if (lastStateStates != null && !lastStateStates.isEmpty()) {
- // get all resource with last state
- iterator = vertexUser.edges(Direction.OUT, GraphEdgeLabels.LAST_STATE.getProperty());
- boolean isFirst;
- componentsPerUser = fetchComponents(lastStateStates, iterator, neededType, inTransaction);
- if (componentsPerUser != null) {
- for (Component comp : componentsPerUser) {
- isFirst = true;
-
- if (ids.contains(comp.getUniqueId())) {
- isFirst = false;
- }
- if (isFirst == true) {
- components.add(comp);
- }
-
- }
- }
- }
-
- } // whlile users
-
- result = Either.left(components);
- return result;
-
- } finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- titanGenericDao.rollback();
- } else {
- titanGenericDao.commit();
- }
- }
- }
-
- }
-
- private List<Component> fetchComponents(Set<LifecycleStateEnum> lifecycleStates, Iterator<Edge> iterator, NodeTypeEnum neededType, boolean inTransaction) {
- List<Component> components = new ArrayList<>();
- while (iterator.hasNext()) {
- Edge edge = iterator.next();
-
- String stateStr = edge.value(GraphEdgePropertiesDictionary.STATE.getProperty());
- LifecycleStateEnum state = LifecycleStateEnum.findState(stateStr);
- if (state == null) {
- log.debug("not supported STATE for element {}" , stateStr);
- continue;
- }
- if (lifecycleStates != null && lifecycleStates.contains(state)) {
- Vertex vertexComponent = edge.inVertex();
-
- Boolean isHighest = vertexComponent.value(GraphPropertiesDictionary.IS_HIGHEST_VERSION.getProperty());
- if (isHighest) {
-
- String nodeTypeStr = vertexComponent.value(GraphPropertiesDictionary.LABEL.getProperty());
- // get only latest versions
- NodeTypeEnum nodeType = NodeTypeEnum.getByName(nodeTypeStr);
-
- if (nodeType == null) {
- log.debug("missing node label for vertex {}", vertexComponent);
- continue;
- }
-
- if (neededType.equals(nodeType)) {
- switch (nodeType) {
- case Service:
- handleNode(components, vertexComponent, nodeType, inTransaction);
- break;
- case Resource:
- Boolean isAbtract = vertexComponent.value(GraphPropertiesDictionary.IS_ABSTRACT.getProperty());
- if (false == isAbtract) {
- handleNode(components, vertexComponent, nodeType, inTransaction);
- } // if not abstract
- break;
- case Product:
- handleNode(components, vertexComponent, nodeType, inTransaction);
- break;
- default:
- log.debug("not supported node type {}", nodeType);
- break;
- }// case
- } // needed type
- }
- } // if
- } // while resources
- return components;
- }
-
- protected <T> void handleNode(List<T> components, Vertex vertexComponent, NodeTypeEnum nodeType, boolean inTransaction) {
- String id;
-
- id = vertexComponent.value(UniqueIdBuilder.getKeyByNodeType(nodeType));
- if (id != null) {
- Either<T, StorageOperationStatus> component = getLightComponent(id, inTransaction);
- if (component.isRight()) {
- log.debug("Failed to get component for id = {} error : {} skip resource", id, component.right().value());
- } else {
- components.add(component.left().value());
- }
- } else {
-
- Map<String, Object> properties = this.titanGenericDao.getProperties(vertexComponent);
- log.debug("missing resource unique id for node with properties {}", properties);
- }
- }
-
- /**
- *
- * @param component
- * @param inTransaction
- * @param titanGenericDao
- * @param clazz
- * @return
- */
- public <T> Either<T, StorageOperationStatus> updateComponent(Component component, boolean inTransaction, TitanGenericDao titanGenericDao, Class<T> clazz, NodeTypeEnum type) {
-
- ComponentParametersView componentParametersView = new ComponentParametersView();
- return updateComponentFilterResult(component, inTransaction, titanGenericDao, clazz, type, componentParametersView);
-
- }
-
- private Either<ArtifactData, StorageOperationStatus> generateAndUpdateToscaFileName(String componentType, String componentName, String componentId, NodeTypeEnum type, ArtifactDefinition artifactInfo) {
- Map<String, Object> getConfig = (Map<String, Object>) ConfigurationManager.getConfigurationManager().getConfiguration().getToscaArtifacts().entrySet().stream()
- .filter(p -> p.getKey().equalsIgnoreCase(artifactInfo.getArtifactLabel()))
- .findAny()
- .get()
- .getValue();
- artifactInfo.setArtifactName(componentType + "-" + componentName + getConfig.get("artifactName"));
- return artifactOperation.updateToscaArtifactNameOnGraph(artifactInfo, artifactInfo.getUniqueId(), type, componentId);
- }
-
- protected StorageOperationStatus moveCategoryEdge(Component component, ComponentMetadataData componentData, CategoryDefinition newCategory, NodeTypeEnum type) {
-
- StorageOperationStatus result = StorageOperationStatus.OK;
-
- GraphRelation categoryRelation = new GraphRelation();
- categoryRelation.setType(GraphEdgeLabels.CATEGORY.getProperty());
- RelationEndPoint relationEndPoint = new RelationEndPoint(type, UniqueIdBuilder.getKeyByNodeType(type), component.getUniqueId());
- categoryRelation.setFrom(relationEndPoint);
- Either<GraphRelation, TitanOperationStatus> deleteOutgoingRelation = titanGenericDao.deleteOutgoingRelation(categoryRelation);
- if (deleteOutgoingRelation.isRight()) {
- log.error("Failed to delete category from component {}. Edge type is {}", componentData.getUniqueId(), GraphEdgeLabels.CATEGORY);
- result = DaoStatusConverter.convertTitanStatusToStorageStatus(deleteOutgoingRelation.right().value());
- return result;
- }
-
- log.debug("After removing edge from graph {}", deleteOutgoingRelation);
-
- NodeTypeEnum categoryType;
- if (NodeTypeEnum.Service.name().equalsIgnoreCase(type.name())) {
- categoryType = NodeTypeEnum.ServiceCategory;
- } else {
- categoryType = NodeTypeEnum.ResourceCategory;
- }
- Either<CategoryData, StorageOperationStatus> categoryResult = elementOperation.getNewCategoryData(newCategory.getName(), NodeTypeEnum.ServiceNewCategory, CategoryData.class);
- if (categoryResult.isRight()) {
- StorageOperationStatus status = categoryResult.right().value();
- log.error("Cannot find category {} in the graph. status is {}", newCategory.getName(), status);
- return status;
- }
-
- CategoryData categoryData = categoryResult.left().value();
- Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(componentData, categoryData, GraphEdgeLabels.CATEGORY, null);
- log.debug("After associating category {} to component {}. Edge type is {}", categoryData, componentData.getUniqueId(), GraphEdgeLabels.CATEGORY);
- if (createRelation.isRight()) {
- log.error("Failed to associate category {} to component {}. Edge type is {}", categoryData, componentData.getUniqueId(), GraphEdgeLabels.CATEGORY);
- result = DaoStatusConverter.convertTitanStatusToStorageStatus(createRelation.right().value());
- return result;
- }
-
- return result;
- }
-
- private StorageOperationStatus moveLastModifierEdge(Component component, ComponentMetadataData componentData, UserData modifierUserData, NodeTypeEnum type) {
-
- StorageOperationStatus result = StorageOperationStatus.OK;
-
- GraphRelation lastModifierRelation = new GraphRelation();
- lastModifierRelation.setType(GraphEdgeLabels.LAST_MODIFIER.getProperty());
- RelationEndPoint relationEndPoint = new RelationEndPoint(type, UniqueIdBuilder.getKeyByNodeType(type), component.getUniqueId());
- lastModifierRelation.setTo(relationEndPoint);
- Either<GraphRelation, TitanOperationStatus> deleteIncomingRelation = titanGenericDao.deleteIncomingRelation(lastModifierRelation);
- if (deleteIncomingRelation.isRight()) {
- log.error("Failed to delete user from component {}. Edge type is {}", componentData.getUniqueId(), GraphEdgeLabels.LAST_MODIFIER);
- result = DaoStatusConverter.convertTitanStatusToStorageStatus(deleteIncomingRelation.right().value());
- return result;
- }
-
- Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(modifierUserData, componentData, GraphEdgeLabels.LAST_MODIFIER, null);
- log.debug("After associating user {} to component {}. Edge type is {}", modifierUserData, componentData.getUniqueId(), GraphEdgeLabels.LAST_MODIFIER);
- if (createRelation.isRight()) {
- log.error("Failed to associate user {} to component {}. Edge type is {}", modifierUserData, componentData.getUniqueId(), GraphEdgeLabels.LAST_MODIFIER);
- result = DaoStatusConverter.convertTitanStatusToStorageStatus(createRelation.right().value());
- return result;
- }
- return result;
- }
-
- protected abstract ComponentMetadataData getMetaDataFromComponent(Component component);
-
- public abstract <T> Either<T, StorageOperationStatus> getComponent(String id, boolean inTransaction);
-
- public abstract <T> Either<T, StorageOperationStatus> getComponent(String id, ComponentParametersView componentParametersView, boolean inTrasnaction);
-
- protected abstract <T> Either<T, StorageOperationStatus> getComponentByNameAndVersion(String name, String version, Map<String, Object> additionalParams, boolean inTransaction);
-
- public abstract <T> Either<T, StorageOperationStatus> getLightComponent(String id, boolean inTransaction);
-
- public abstract <T> Either<List<T>, StorageOperationStatus> getFilteredComponents(Map<FilterKeyEnum, String> filters, boolean inTransaction);
-
- abstract Component convertComponentMetadataDataToComponent(ComponentMetadataData componentMetadataData);
-
- abstract TitanOperationStatus setComponentCategoriesFromGraph(Component component);
-
- protected abstract Either<Component, StorageOperationStatus> getMetadataComponent(String id, boolean inTransaction);
-
- protected abstract <T> Either<T, StorageOperationStatus> updateComponent(T component, boolean inTransaction);
-
- protected abstract <T> Either<T, StorageOperationStatus> updateComponentFilterResult(T component, boolean inTransaction, ComponentParametersView filterParametersView);
-
- public abstract Either<Component, StorageOperationStatus> deleteComponent(String id, boolean inTransaction);
-
- public <T> Either<T, StorageOperationStatus> cloneComponent(T other, String version, boolean inTransaction) {
- return cloneComponent(other, version, null, inTransaction);
- }
-
- public abstract <T> Either<T, StorageOperationStatus> cloneComponent(T other, String version, LifecycleStateEnum targetLifecycle, boolean inTransaction);
-
- public abstract Component getDefaultComponent();
-
- public abstract boolean isComponentExist(String componentId);
-
- public abstract Either<Boolean, StorageOperationStatus> validateComponentNameExists(String componentName);
-
- public abstract Either<Boolean, StorageOperationStatus> isComponentInUse(String componentId);
-
- protected Either<Boolean, StorageOperationStatus> isComponentInUse(String componentId, NodeTypeEnum nodeType) {
-
- Either<GraphRelation, TitanOperationStatus> relationByCriteria = titanGenericDao.getIncomingRelationByCriteria(new UniqueIdData(nodeType, componentId), GraphEdgeLabels.INSTANCE_OF, null);
- if (relationByCriteria.isRight() && !relationByCriteria.right().value().equals(TitanOperationStatus.NOT_FOUND)) {
- log.debug("failed to check relations for component node. id = {}, type = {}, error = {}", componentId, nodeType, relationByCriteria.right().value().name());
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(relationByCriteria.right().value()));
- }
-
- if (relationByCriteria.isLeft()) {
- // component is in use
- return Either.left(true);
- } else {
- return Either.left(false);
- }
-
- }
-
- public abstract Either<List<String>, StorageOperationStatus> getAllComponentsMarkedForDeletion();
-
- protected Either<List<String>, StorageOperationStatus> getAllComponentsMarkedForDeletion(NodeTypeEnum nodeType) {
-
- List<String> componentIdsToDelete = new ArrayList<String>();
- // get all components marked for delete
- Map<String, Object> props = new HashMap<String, Object>();
- props.put(GraphPropertiesDictionary.IS_DELETED.getProperty(), true);
-
- Either<List<ComponentMetadataData>, TitanOperationStatus> componentsToDelete = titanGenericDao.getByCriteria(nodeType, props, ComponentMetadataData.class);
-
- if (componentsToDelete.isRight()) {
- TitanOperationStatus error = componentsToDelete.right().value();
- if (error.equals(TitanOperationStatus.NOT_FOUND)) {
- log.trace("no components to delete");
- return Either.left(componentIdsToDelete);
- } else {
- log.info("failed to find components to delete. error : {}", error.name());
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(error));
- }
-
- }
- for (ComponentMetadataData resourceData : componentsToDelete.left().value()) {
- componentIdsToDelete.add(resourceData.getMetadataDataDefinition().getUniqueId());
- }
- return Either.left(componentIdsToDelete);
- }
-
- protected <T extends GraphNode> Either<List<T>, TitanOperationStatus> __getLastVersion(NodeTypeEnum type, Map<String, Object> props, Class<T> clazz) {
- try {
-
- Either<TitanGraph, TitanOperationStatus> graph = titanGenericDao.getGraph();
- if (graph.isRight()) {
- return Either.right(graph.right().value());
- }
-
- TitanGraph tGraph = graph.left().value();
- TitanGraphQuery<? extends TitanGraphQuery> query = tGraph.query();
- query = query.has(GraphPropertiesDictionary.LABEL.getProperty(), type.getName());
-
- if (props != null && !props.isEmpty()) {
- for (Map.Entry<String, Object> entry : props.entrySet()) {
- query = query.hasNot(entry.getKey(), entry.getValue());
- }
- }
- query.has(GraphPropertiesDictionary.IS_HIGHEST_VERSION.getProperty(), true);
-
- Iterable<TitanVertex> vertices = query.vertices();
-
- if (vertices == null) {
- return Either.right(TitanOperationStatus.NOT_FOUND);
- }
-
- Iterator<TitanVertex> iterator = vertices.iterator();
- List<T> result = new ArrayList<T>();
-
- while (iterator.hasNext()) {
- Vertex vertex = iterator.next();
-
- Map<String, Object> newProp = titanGenericDao.getProperties(vertex);
- T element = GraphElementFactory.createElement(type.getName(), GraphElementTypeEnum.Node, newProp, clazz);
- result.add(element);
- }
- if (result.size() == 0) {
- return Either.right(TitanOperationStatus.NOT_FOUND);
- }
- log.debug("No nodes in graph for criteria : from type = {} and properties = {}", type, props);
- return Either.left(result);
- } catch (Exception e) {
- log.debug("Failed get by criteria for type = {} and properties = {}", type, props, e);
- return Either.right(TitanGraphClient.handleTitanException(e));
- }
- }
-
- protected <T extends GraphNode> Either<List<T>, TitanOperationStatus> getLastVersion(NodeTypeEnum type, Map<String, Object> hasNotProps, Class<T> clazz) {
- return getLastVersion(type, null, hasNotProps, clazz);
- }
-
- protected <T extends GraphNode> Either<List<T>, TitanOperationStatus> getLastVersion(NodeTypeEnum type, Map<String, Object> hasProps, Map<String, Object> hasNotProps, Class<T> clazz) {
-
- Map<String, Object> props = new HashMap<>();
-
- if (hasProps != null) {
- props.putAll(hasProps);
- }
- props.put(GraphPropertiesDictionary.IS_HIGHEST_VERSION.getProperty(), true);
-
- Either<List<T>, TitanOperationStatus> byCriteria = titanGenericDao.getByCriteria(type, props, hasNotProps, clazz);
-
- return byCriteria;
-
- }
-
- public <T, S extends GraphNode> Either<Set<T>, StorageOperationStatus> getComponentCatalogData(NodeTypeEnum type, Map<String, Object> propertiesToMatch, Class<T> clazz1, Class<S> clazz2, boolean inTransaction) {
- log.debug("Start getComponentCatalogData for type: {}", type.name());
- Set<T> result = new HashSet<T>();
- Either<List<S>, TitanOperationStatus> lastVersionNodes = getLastVersion(type, propertiesToMatch, clazz2);
- Either<Set<T>, StorageOperationStatus> last = retrieveComponentsFromNodes(lastVersionNodes, inTransaction);
- if (last.isLeft() && last.left().value() != null) {
- result.addAll(last.left().value());
- }
- if (type == NodeTypeEnum.Resource) {
- propertiesToMatch.put(GraphPropertiesDictionary.IS_ABSTRACT.getProperty(), false);
- }
- Either<List<S>, TitanOperationStatus> componentsNodes = titanGenericDao.getByCriteria(type, propertiesToMatch, clazz2);
- Either<Set<T>, StorageOperationStatus> certified = retrieveComponentsFromNodes(componentsNodes, inTransaction);
- if (certified.isLeft() && certified.left().value() != null) {
- result.addAll(certified.left().value());
- }
- return Either.left(result);
-
- }
-
- protected <T, S extends GraphNode> Either<Set<T>, StorageOperationStatus> retrieveComponentsFromNodes(Either<List<S>, TitanOperationStatus> componentsNodes, boolean inTransaction) {
- Set<T> result = new HashSet<T>();
- if (componentsNodes.isRight()) {
- // in case of NOT_FOUND from Titan client return to UI empty list
- if (componentsNodes.right().value().equals(TitanOperationStatus.NOT_FOUND)) {
- log.debug("No components were found");
- } else {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(componentsNodes.right().value()));
- }
- } else {
- List<S> componentDataList = componentsNodes.left().value();
- for (S componentData : componentDataList) {
- // Either<T, StorageOperationStatus> component =
- // getComponent((String) componentData.getUniqueId(),
- // inTransaction);
- Either<T, StorageOperationStatus> component = getLightComponent((String) componentData.getUniqueId(), inTransaction);
- if (component.isRight()) {
- log.debug("Failed to get component for id = {} error : {} skip resource", componentData.getUniqueId(), component.right().value());
- // return Either.right(service.right().value());
- } else {
- result.add(component.left().value());
- }
- }
- }
- return Either.left(result);
- }
-
- protected StorageOperationStatus removeArtifactsFromComponent(Component component, NodeTypeEnum componentType) {
-
- String componentId = component.getUniqueId();
- // Map<String, ArtifactDefinition> artifacts = component.getArtifacts();
- Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifactsRes = artifactOperation.getArtifacts(componentId, componentType, true);
- if (artifactsRes.isRight() && !artifactsRes.right().value().equals(StorageOperationStatus.NOT_FOUND)) {
- return artifactsRes.right().value();
- }
- if (artifactsRes.isLeft() && artifactsRes.left().value() != null) {
- Map<String, ArtifactDefinition> artifacts = artifactsRes.left().value();
- for (Entry<String, ArtifactDefinition> entry : artifacts.entrySet()) {
-
- ArtifactDefinition artifactDefinition = entry.getValue();
- Either<ArtifactDefinition, StorageOperationStatus> removeArifactFromResource = artifactOperation.removeArifactFromResource(componentId, artifactDefinition.getUniqueId(), componentType, true, true);
- if (removeArifactFromResource.isRight()) {
- return removeArifactFromResource.right().value();
- }
- }
- }
- return StorageOperationStatus.OK;
- }
-
- public Either<List<Component>, StorageOperationStatus> getTesterFollowedComponent(String userId, Set<LifecycleStateEnum> lifecycleStates, boolean inTransaction, NodeTypeEnum neededType) {
- List<Component> resList = new ArrayList<>();
- Either<List<Component>, StorageOperationStatus> rip = getFollowedComponent(userId, lifecycleStates, null, inTransaction, titanGenericDao, neededType);
- if (rip.isLeft()) {
- List<Component> ripRes = rip.left().value();
- if (ripRes != null && !ripRes.isEmpty()) {
- resList.addAll(ripRes);
- }
- Set<LifecycleStateEnum> rfcState = new HashSet<>();
- rfcState.add(LifecycleStateEnum.READY_FOR_CERTIFICATION);
- Either<List<Component>, StorageOperationStatus> rfc = getFollowedComponent(null, rfcState, null, inTransaction, titanGenericDao, neededType);
- if (rfc.isLeft()) {
- List<Component> rfcRes = rfc.left().value();
- if (rfcRes != null && !rfcRes.isEmpty()) {
- resList.addAll(rfcRes);
- }
- } else {
- return Either.right(rfc.right().value());
- }
-
- } else {
- return Either.right(rip.right().value());
- }
- return Either.left(resList);
-
- }
-
- /**
- * generate UUID only for case that version is "XX.01" - (start new version)
- *
- * @param component
- */
- protected void generateUUID(Component component) {
- String version = component.getVersion();
- if (uuidNewVersion.matcher(version).matches()) {
- UUID uuid = UUID.randomUUID();
- component.getComponentMetadataDefinition().getMetadataDataDefinition().setUUID(uuid.toString());
- MDC.put("serviceInstanceID", uuid.toString());
- }
- }
-
- protected <T extends GraphNode> Either<Map<String, String>, TitanOperationStatus> getVersionList(NodeTypeEnum type, String version, Component component, Class<T> clazz) {
- return getVersionList(type, version, component.getUUID(), component.getSystemName(), clazz);
- }
-
- protected <T extends GraphNode> Either<Map<String, String>, TitanOperationStatus> getVersionList(NodeTypeEnum type, String version, String uuid, String systemName, Class<T> clazz) {
- Map<String, Object> props = new HashMap<String, Object>();
- Map<String, Object> hasNotProps = new HashMap<String, Object>();
-
- if (version.startsWith("0")) {
- props.put(GraphPropertiesDictionary.UUID.getProperty(), uuid);
- } else {
- props.put(GraphPropertiesDictionary.SYSTEM_NAME.getProperty(), systemName);
- }
- hasNotProps.put(GraphPropertiesDictionary.IS_DELETED.getProperty(), true);
- Either<List<T>, TitanOperationStatus> result = titanGenericDao.getByCriteria(type, props, hasNotProps, clazz);
-
- Map<String, String> versionMap = new HashMap<String, String>();
- if (result.isRight()) {
- if (!result.right().value().equals(TitanOperationStatus.NOT_FOUND)) {
- return Either.right(result.right().value());
- }
-
- } else {
- switch (type) {
- case Resource:
- List<ResourceMetadataData> components = (List<ResourceMetadataData>) result.left().value();
- for (ResourceMetadataData data : components) {
- versionMap.put(data.getMetadataDataDefinition().getVersion(), (String) data.getUniqueId());
- }
- break;
- case Service:
- List<ServiceMetadataData> componentsS = (List<ServiceMetadataData>) result.left().value();
- for (ServiceMetadataData data : componentsS) {
- versionMap.put(data.getMetadataDataDefinition().getVersion(), (String) data.getUniqueId());
- }
- break;
- case Product:
- List<ProductMetadataData> componentsP = (List<ProductMetadataData>) result.left().value();
- for (ProductMetadataData data : componentsP) {
- versionMap.put(data.getMetadataDataDefinition().getVersion(), (String) data.getUniqueId());
- }
- break;
- default:
- break;
- }
- }
-
- return Either.left(versionMap);
- }
-
- protected StorageOperationStatus deleteAdditionalInformation(NodeTypeEnum nodeType, String componentId) {
-
- Either<AdditionalInformationDefinition, StorageOperationStatus> deleteRes = additionalInformationOperation.deleteAllAdditionalInformationParameters(nodeType, componentId, true);
-
- if (deleteRes.isRight()) {
- StorageOperationStatus status = deleteRes.right().value();
- return status;
- }
-
- return StorageOperationStatus.OK;
-
- }
-
- protected StorageOperationStatus addAdditionalInformation(NodeTypeEnum nodeType, String componentId, AdditionalInformationDefinition informationDefinition) {
-
- Either<AdditionalInformationDefinition, TitanOperationStatus> status = additionalInformationOperation.addAdditionalInformationNode(nodeType, componentId, informationDefinition);
-
- if (status.isRight()) {
- TitanOperationStatus titanStatus = status.right().value();
- return DaoStatusConverter.convertTitanStatusToStorageStatus(titanStatus);
- }
-
- log.trace("After adding additional information to component {}. Result is {}" , componentId ,status.left().value());
-
- return StorageOperationStatus.OK;
-
- }
-
- protected StorageOperationStatus addAdditionalInformation(NodeTypeEnum nodeType, String componentId, AdditionalInformationDefinition informationDefinition, TitanVertex metadataVertex) {
-
- TitanOperationStatus status = additionalInformationOperation.addAdditionalInformationNode(nodeType, componentId, informationDefinition, metadataVertex);
- log.trace("After adding additional information to component {}. Result is {}", componentId, status);
-
- if (!status.equals(TitanOperationStatus.OK)) {
- return DaoStatusConverter.convertTitanStatusToStorageStatus(status);
- }
-
- return StorageOperationStatus.OK;
-
- }
-
- public Either<List<ArtifactDefinition>, StorageOperationStatus> getComponentArtifactsForDelete(String parentId, NodeTypeEnum parentType, boolean inTransacton) {
- List<ArtifactDefinition> artifacts = new ArrayList<ArtifactDefinition>();
- Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifactsResponse = artifactOperation.getArtifacts(parentId, parentType, inTransacton);
- if (artifactsResponse.isRight()) {
- if (!artifactsResponse.right().value().equals(StorageOperationStatus.NOT_FOUND)) {
- log.debug("failed to retrieve artifacts for {} {}", parentType, parentId);
- return Either.right(artifactsResponse.right().value());
- }
- } else {
- artifacts.addAll(artifactsResponse.left().value().values());
- }
-
- if (NodeTypeEnum.Resource.equals(parentType)) {
- Either<List<ArtifactDefinition>, StorageOperationStatus> interfacesArtifactsForResource = getAdditionalArtifacts(parentId, false, true);
- if (artifactsResponse.isRight() && !interfacesArtifactsForResource.right().value().equals(StorageOperationStatus.NOT_FOUND)) {
- log.debug("failed to retrieve interface artifacts for {} {}", parentType, parentId);
- return Either.right(interfacesArtifactsForResource.right().value());
- } else if (artifactsResponse.isLeft()) {
- artifacts.addAll(interfacesArtifactsForResource.left().value());
- }
- }
- return Either.left(artifacts);
- }
-
- protected void addComponentInternalFields(ComponentMetadataData componentMetadataData) {
- org.openecomp.sdc.be.datatypes.components.ComponentMetadataDataDefinition metadataDataDefinition = componentMetadataData.getMetadataDataDefinition();
- Long creationDate = metadataDataDefinition.getCreationDate();
-
- long currentDate = System.currentTimeMillis();
- if (creationDate == null) {
- metadataDataDefinition.setCreationDate(currentDate);
- }
- metadataDataDefinition.setLastUpdateDate(currentDate);
-
- String lifecycleStateEnum = metadataDataDefinition.getState();
- if (lifecycleStateEnum == null) {
- metadataDataDefinition.setState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT.name());
- }
- String componentUniqueId = UniqueIdBuilder.buildComponentUniqueId();
- metadataDataDefinition.setUniqueId(componentUniqueId);
- metadataDataDefinition.setHighestVersion(true);
- }
-
- protected StorageOperationStatus createTagsForComponent(Component component) {
- List<String> tags = component.getTags();
- if (tags != null && false == tags.isEmpty()) {
- Either<List<TagData>, StorageOperationStatus> tagsResult = createNewTagsList(tags);
-
- if (tagsResult == null) {
- log.debug("tagsResult is null");
- return StorageOperationStatus.GENERAL_ERROR;
- }
- if (tagsResult.isRight()) {
- return tagsResult.right().value();
- }
- List<TagData> tagsToCreate = tagsResult.left().value();
- return createTagNodesOnGraph(tagsToCreate);
- }
- log.trace("All tags created succesfully for component {}", component.getUniqueId());
- return StorageOperationStatus.OK;
- }
-
- protected Either<List<GroupingData>, StorageOperationStatus> findGroupingsForComponent(NodeTypeEnum nodeTypeEnum, Component component) {
- List<CategoryDefinition> categories = component.getCategories();
- List<GroupingData> groupingDataToAssociate = new ArrayList<>();
- if (categories != null) {
- groupingDataToAssociate = new ArrayList<>();
- for (CategoryDefinition categoryDefinition : categories) {
- List<SubCategoryDefinition> subcategories = categoryDefinition.getSubcategories();
- if (subcategories != null) {
- for (SubCategoryDefinition subCategoryDefinition : subcategories) {
- List<GroupingDefinition> groupingDataDefinitions = subCategoryDefinition.getGroupings();
- if (groupingDataDefinitions != null) {
- for (GroupingDataDefinition grouping : groupingDataDefinitions) {
- String groupingId = grouping.getUniqueId();
- Either<GroupingData, TitanOperationStatus> findGroupingEither = findGrouping(nodeTypeEnum, groupingId);
- if (findGroupingEither.isRight()) {
- TitanOperationStatus status = findGroupingEither.right().value();
- log.error("Cannot find grouping {} in the graph. status is {}", groupingId, status);
- if (status == TitanOperationStatus.NOT_FOUND) {
- return Either.right(StorageOperationStatus.CATEGORY_NOT_FOUND);
- }
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- } else {
- groupingDataToAssociate.add(findGroupingEither.left().value());
- }
- }
- }
- }
- }
- }
- }
- return Either.left(groupingDataToAssociate);
- }
-
- protected TitanOperationStatus associateGroupingsToComponent(ComponentMetadataData componentMetadataData, List<GroupingData> groupingDataToAssociate) {
- for (GroupingData groupingData : groupingDataToAssociate) {
- GraphEdgeLabels groupingLabel = GraphEdgeLabels.GROUPING;
- Either<GraphRelation, TitanOperationStatus> result = titanGenericDao.createRelation(componentMetadataData, groupingData, groupingLabel, null);
- log.debug("After associating grouping {} to component {}. Edge type is {}", groupingData, componentMetadataData, groupingLabel);
- if (result.isRight()) {
- return result.right().value();
- }
- }
- log.trace("All groupings associated succesfully to component {}", componentMetadataData);
- return TitanOperationStatus.OK;
- }
-
- public abstract Either<Integer, StorageOperationStatus> increaseAndGetComponentInstanceCounter(String componentId, boolean inTransaction);
-
- protected Either<Integer, StorageOperationStatus> increaseAndGetComponentInstanceCounter(String componentId, NodeTypeEnum nodeType, boolean inTransaction) {
- Either<Integer, StorageOperationStatus> result = null;
- try {
-
- Either<TitanGraph, TitanOperationStatus> graphResult = titanGenericDao.getGraph();
- if (graphResult.isRight()) {
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(graphResult.right().value()));
- return result;
- }
- Either<TitanVertex, TitanOperationStatus> vertexService = titanGenericDao.getVertexByProperty(UniqueIdBuilder.getKeyByNodeType(nodeType), componentId);
- if (vertexService.isRight()) {
- log.debug("failed to fetch vertex of component metadata, nodeType:{} , id: {}", nodeType, componentId);
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(vertexService.right().value()));
- return result;
- }
- Vertex vertex = vertexService.left().value();
- Integer instanceCounter = vertex.value(GraphPropertiesDictionary.INSTANCE_COUNTER.getProperty());
- ++instanceCounter;
- vertex.property(GraphPropertiesDictionary.INSTANCE_COUNTER.getProperty(), instanceCounter);
- result = Either.left(instanceCounter);
- return result;
-
- } finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- log.debug("increaseAndGetComponentInstanceCounter operation : Going to execute rollback on graph.");
- titanGenericDao.rollback();
- } else {
- log.debug("increaseAndGetComponentInstanceCounter operation : Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
-
- }
-
- protected Either<Integer, StorageOperationStatus> setComponentInstanceCounter(String componentId, NodeTypeEnum nodeType, int counter, boolean inTransaction) {
- Either<Integer, StorageOperationStatus> result = null;
- try {
-
- Either<TitanGraph, TitanOperationStatus> graphResult = titanGenericDao.getGraph();
- if (graphResult.isRight()) {
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(graphResult.right().value()));
- return result;
- }
- Either<TitanVertex, TitanOperationStatus> vertexService = titanGenericDao.getVertexByProperty(UniqueIdBuilder.getKeyByNodeType(nodeType), componentId);
- if (vertexService.isRight()) {
- log.debug("failed to fetch vertex of component metadata ofor id = {}", componentId);
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(vertexService.right().value()));
- return result;
- }
- Vertex vertex = vertexService.left().value();
- vertex.property(GraphPropertiesDictionary.INSTANCE_COUNTER.getProperty(), counter);
- result = Either.left(counter);
- return result;
-
- } finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- log.debug("deleteService operation : Going to execute rollback on graph.");
- titanGenericDao.rollback();
- } else {
- log.debug("deleteService operation : Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
-
- }
-
- protected TitanOperationStatus setComponentInstancesFromGraph(String uniqueId, Component component, NodeTypeEnum containerNodeType, NodeTypeEnum compInstNodeType) {
-
- Either<ImmutablePair<List<ComponentInstance>, List<RequirementCapabilityRelDef>>, TitanOperationStatus> resourceInstancesOfService = componentInstanceOperation.getComponentInstancesOfComponent(uniqueId, containerNodeType, compInstNodeType);
-
- if (resourceInstancesOfService.isRight()) {
- TitanOperationStatus status = resourceInstancesOfService.right().value();
- if (status == TitanOperationStatus.NOT_FOUND) {
- status = TitanOperationStatus.OK;
- } else {
- log.error("Failed to fetch resource instances and their relations. status is {}", status);
- }
- return status;
- }
-
- ImmutablePair<List<ComponentInstance>, List<RequirementCapabilityRelDef>> immutablePair = resourceInstancesOfService.left().value();
- List<ComponentInstance> instances = immutablePair.getKey();
- List<RequirementCapabilityRelDef> relations = immutablePair.getValue();
-
- component.setComponentInstances(instances);
- component.setComponentInstancesRelations(relations);
-
- return TitanOperationStatus.OK;
- }
-
- /**
- * set all properties of all of its resources
- *
- * @param uniqueId
- * @return
- */
- protected TitanOperationStatus ___setComponentInstancesPropertiesFromGraph(String uniqueId, Component component) {
-
- List<ComponentInstance> resourceInstances = component.getComponentInstances();
-
- Map<String, List<ComponentInstanceProperty>> resourceInstancesProperties = new HashMap<>();
-
- Map<String, List<PropertyDefinition>> alreadyProcessedResources = new HashMap<>();
-
- if (resourceInstances != null) {
- for (ComponentInstance resourceInstance : resourceInstances) {
-
- log.debug("Going to update properties of resource instance {}", resourceInstance.getUniqueId());
- String resourceUid = resourceInstance.getComponentUid();
-
- List<PropertyDefinition> properties = alreadyProcessedResources.get(resourceUid);
- if (properties == null) {
- properties = new ArrayList<>();
- TitanOperationStatus findAllRes = propertyOperation.findAllResourcePropertiesRecursively(resourceUid, properties);
- if (findAllRes != TitanOperationStatus.OK) {
- return findAllRes;
- }
- alreadyProcessedResources.put(resourceUid, properties);
- }
- log.debug("After getting properties of resource {}. Number of properties is {}", resourceUid, (properties == null ? 0 : properties.size()));
- if (false == properties.isEmpty()) {
-
- String resourceInstanceUid = resourceInstance.getUniqueId();
-
- Either<List<ComponentInstanceProperty>, TitanOperationStatus> propertyValuesRes = propertyOperation.getAllPropertiesOfResourceInstanceOnlyPropertyDefId(resourceInstanceUid);
- log.debug("After fetching property under resource instance {}", resourceInstanceUid);
- if (propertyValuesRes.isRight()) {
- TitanOperationStatus status = propertyValuesRes.right().value();
- if (status != TitanOperationStatus.NOT_FOUND) {
- return status;
- }
- }
-
- Map<String, ComponentInstanceProperty> propertyIdToValue = new HashMap<>();
- populateMapperWithPropertyValues(propertyValuesRes, propertyIdToValue);
-
- List<ComponentInstanceProperty> resourceInstancePropertyList = new ArrayList<>();
- for (PropertyDefinition propertyDefinition : properties) {
-
- String defaultValue = propertyDefinition.getDefaultValue();
- String value = defaultValue;
- String valueUid = null;
-
- String propertyId = propertyDefinition.getUniqueId();
- ComponentInstanceProperty valuedProperty = propertyIdToValue.get(propertyId);
- if (valuedProperty != null) {
- String newValue = valuedProperty.getValue();
- // if (newValue != null) {
- value = newValue;
- // }
-
- valueUid = valuedProperty.getValueUniqueUid();
- log.trace("Found value {} under resource instance which override the default value {}" , value, defaultValue);
- }
- ComponentInstanceProperty resourceInstanceProperty = new ComponentInstanceProperty(propertyDefinition, value, valueUid);
-
- // TODO: currently ignore constraints since they are not
- // inuse and cause to error in convertion to object.
- resourceInstanceProperty.setConstraints(null);
-
- resourceInstancePropertyList.add(resourceInstanceProperty);
-
- }
-
- resourceInstancesProperties.put(resourceInstanceUid, resourceInstancePropertyList);
- }
-
- }
-
- component.setComponentInstancesProperties(resourceInstancesProperties);
- }
-
- return TitanOperationStatus.OK;
- }
-
- private void populateMapperWithPropertyValues(Either<List<ComponentInstanceProperty>, TitanOperationStatus> propertyValuesRes, Map<String, ComponentInstanceProperty> propertyIdToValue) {
-
- if (propertyValuesRes.isLeft()) {
- List<ComponentInstanceProperty> resourceInstanceValues = propertyValuesRes.left().value();
- if (resourceInstanceValues != null) {
- for (ComponentInstanceProperty resourceInstanceProperty : resourceInstanceValues) {
- propertyIdToValue.put(resourceInstanceProperty.getUniqueId(), resourceInstanceProperty);
- }
- }
- }
- }
-
- public abstract Either<List<ArtifactDefinition>, StorageOperationStatus> getAdditionalArtifacts(String resourceId, boolean recursively, boolean inTransaction);
-
- protected abstract StorageOperationStatus validateCategories(Component currentComponent, Component component, ComponentMetadataData componentData, NodeTypeEnum type);
-
- protected abstract <T extends Component> StorageOperationStatus updateDerived(Component component, Component currentComponent, ComponentMetadataData updatedResourceData, Class<T> clazz);
-
- public abstract Either<Component, StorageOperationStatus> markComponentToDelete(Component componentToDelete, boolean inTransaction);
-
- protected Either<Component, StorageOperationStatus> internalMarkComponentToDelete(Component componentToDelete, boolean inTransaction) {
- Either<Component, StorageOperationStatus> result = null;
-
- if ((componentToDelete.getIsDeleted() != null) && componentToDelete.getIsDeleted() && !componentToDelete.isHighestVersion()) {
- // component already marked for delete
- result = Either.left(componentToDelete);
- return result;
- } else {
-
- ComponentMetadataData componentMetaData = getMetaDataFromComponent(componentToDelete);
-
- componentMetaData.getMetadataDataDefinition().setIsDeleted(true);
- componentMetaData.getMetadataDataDefinition().setHighestVersion(false);
- componentMetaData.getMetadataDataDefinition().setLastUpdateDate(System.currentTimeMillis());
- try {
- Either<ComponentMetadataData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(componentMetaData, ComponentMetadataData.class);
-
- StorageOperationStatus updateComponent;
- if (updateNode.isRight()) {
- log.debug("Failed to update component {}. status is {}", componentMetaData.getUniqueId(), updateNode.right().value());
- updateComponent = DaoStatusConverter.convertTitanStatusToStorageStatus(updateNode.right().value());
- result = Either.right(updateComponent);
- return result;
- }
-
- result = Either.left(componentToDelete);
- return result;
- } finally {
-
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- log.error("updateResource operation : Going to execute rollback on graph.");
- titanGenericDao.rollback();
- } else {
- log.debug("updateResource operation : Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
-
- }
- }
- }
-
- private Either<List<RequirementDefinition>, TitanOperationStatus> convertReqDataListToReqDefList(ComponentInstance componentInstance, List<ImmutablePair<RequirementData, GraphEdge>> requirementData) {
- ConvertDataToDef<RequirementDefinition, RequirementData> convertor = (instance, data, edge) -> convertReqDataToReqDef(instance, data, edge);
- AddOwnerData<RequirementDefinition> dataAdder = (reqDef, compInstance) -> addOwnerDataReq(reqDef, compInstance);
- return convertDataToDefinition(componentInstance, requirementData, convertor, dataAdder);
- }
-
- private Either<List<CapabilityDefinition>, TitanOperationStatus> convertCapDataListToCapDefList(ComponentInstance componentInstance, List<ImmutablePair<CapabilityData, GraphEdge>> capabilityData) {
- ConvertDataToDef<CapabilityDefinition, CapabilityData> convertor = (instance, data, edge) -> convertCapDataToCapDef(instance, data, edge);
- AddOwnerData<CapabilityDefinition> dataAdder = (capDef, compInstance) -> addOwnerDataCap(capDef, compInstance);
- Either<List<CapabilityDefinition>, TitanOperationStatus> convertationResult = convertDataToDefinition(componentInstance, capabilityData, convertor, dataAdder);
- if (convertationResult.isLeft()) {
- convertationResult = componentInstanceOperation.updateCapDefPropertyValues(componentInstance, convertationResult.left().value());
- }
- return convertationResult;
- }
-
- private Either<CapabilityDefinition, TitanOperationStatus> convertCapDataToCapDef(ComponentInstance componentInstance, CapabilityData data, GraphEdge edge) {
- Either<CapabilityDefinition, TitanOperationStatus> eitherDef = capabilityOperation.getCapabilityByCapabilityData(data);
-
- if (eitherDef.isLeft()) {
- CapabilityDefinition capDef = eitherDef.left().value();
- Map<String, Object> properties = edge.getProperties();
- if (properties != null) {
- String name = (String) properties.get(GraphEdgePropertiesDictionary.NAME.getProperty());
- String source = (String) properties.get(GraphEdgePropertiesDictionary.SOURCE.getProperty());
- List<String> sourcesList = new ArrayList<String>();
- capabilityOperation.getCapabilitySourcesList(source, sourcesList);
- capDef.setName(name);
- capDef.setCapabilitySources(sourcesList);
- capDef.setPath(toscaDefinitionPathCalculator.calculateToscaDefinitionPath(componentInstance, edge));
-
- String requiredOccurrences = (String) properties.get(GraphEdgePropertiesDictionary.REQUIRED_OCCURRENCES.getProperty());
- if (requiredOccurrences != null) {
- capDef.setMinOccurrences(requiredOccurrences);
- }
- String leftOccurrences = (String) properties.get(GraphEdgePropertiesDictionary.LEFT_OCCURRENCES.getProperty());
- if (leftOccurrences != null) {
- capDef.setMaxOccurrences(leftOccurrences);
- }
-
- }
- eitherDef = Either.left(capDef);
- }
- return eitherDef;
- }
-
- private Either<RequirementDefinition, TitanOperationStatus> convertReqDataToReqDef(ComponentInstance componentInstance, RequirementData data, GraphEdge edge) {
- Either<RequirementDefinition, TitanOperationStatus> eitherDef = requirementOperation.getRequirement(data.getUniqueId());
-
- if (eitherDef.isLeft()) {
- RequirementDefinition requirementDef = eitherDef.left().value();
- Map<String, Object> properties = edge.getProperties();
- if (properties != null) {
- String name = (String) properties.get(GraphEdgePropertiesDictionary.NAME.getProperty());
- requirementDef.setName(name);
- String requiredOccurrences = (String) properties.get(GraphEdgePropertiesDictionary.REQUIRED_OCCURRENCES.getProperty());
- if (requiredOccurrences != null) {
- requirementDef.setMinOccurrences(requiredOccurrences);
- }
- requirementDef.setPath(toscaDefinitionPathCalculator.calculateToscaDefinitionPath(componentInstance, edge));
- String leftOccurrences = (String) properties.get(GraphEdgePropertiesDictionary.LEFT_OCCURRENCES.getProperty());
- if (leftOccurrences != null) {
- requirementDef.setMaxOccurrences(leftOccurrences);
- }
- }
- eitherDef = Either.left(requirementDef);
- }
- return eitherDef;
- }
-
- private <Def, Data> Either<List<Def>, TitanOperationStatus> convertDataToDefinition(ComponentInstance componentInstance, List<ImmutablePair<Data, GraphEdge>> requirementData, ConvertDataToDef<Def, Data> convertor, AddOwnerData<Def> dataAdder) {
- Either<List<Def>, TitanOperationStatus> eitherResult;
- // Convert Data To Definition
- Stream<Either<Def, TitanOperationStatus>> reqDefStream = requirementData.stream().map(e -> convertor.convert(componentInstance, e.left, e.right));
-
- // Collect But Stop After First Error
- List<Either<Def, TitanOperationStatus>> filteredReqDefList = StreamUtils.takeWhilePlusOne(reqDefStream, p -> p.isLeft()).collect(Collectors.toList());
- Optional<Either<Def, TitanOperationStatus>> optionalError = filteredReqDefList.stream().filter(p -> p.isRight()).findAny();
- if (optionalError.isPresent()) {
- eitherResult = Either.right(optionalError.get().right().value());
- } else {
- // Convert From Either To Definition And Collect
- List<Def> reqDefList = filteredReqDefList.stream().map(e -> e.left().value()).collect(Collectors.toList());
- // Add Owner Data
- reqDefList.forEach(e -> dataAdder.addData(e, componentInstance));
- eitherResult = Either.left(reqDefList);
- }
-
- return eitherResult;
- }
-
- interface ConvertDataToDef<Def, Data> {
- Either<Def, TitanOperationStatus> convert(ComponentInstance compInstance, Data d, GraphEdge edge);
- }
-
- interface AddOwnerData<Def> {
- void addData(Def def, ComponentInstance compInstance);
- }
-
- private void addOwnerDataCap(CapabilityDefinition capDef, ComponentInstance componentInstance) {
- capDef.setOwnerId(componentInstance.getUniqueId());
- capDef.setOwnerName(componentInstance.getName());
- }
-
- private void addOwnerDataReq(RequirementDefinition reqDef, ComponentInstance componentInstance) {
- reqDef.setOwnerId(componentInstance.getUniqueId());
- reqDef.setOwnerName(componentInstance.getName());
- }
-
- public Either<Map<String, List<RequirementDefinition>>, TitanOperationStatus> getRequirements(Component component, NodeTypeEnum nodeTypeEnum, boolean inTransaction) {
- final HashMap<String, List<RequirementDefinition>> emptyMap = new HashMap<>();
- Either<Map<String, List<RequirementDefinition>>, TitanOperationStatus> eitherResult = Either.left(emptyMap);
- try {
- List<ComponentInstance> componentInstances = component.getComponentInstances();
- if (componentInstances != null) {
- Function<ComponentInstance, Either<List<ImmutablePair<RequirementData, GraphEdge>>, TitanOperationStatus>> dataCollector = e -> componentInstanceOperation.getRequirements(e, nodeTypeEnum);
- Either<List<ImmutablePair<ComponentInstance, Either<List<ImmutablePair<RequirementData, GraphEdge>>, TitanOperationStatus>>>, TitanOperationStatus> eitherDataCollected = collectDataFromComponentsInstances(componentInstances,
- dataCollector);
- if (eitherDataCollected.isRight()) {
- eitherResult = Either.right(eitherDataCollected.right().value());
- } else {
- // Converts Data to Def stop if encountered conversion error
- DataDefConvertor<RequirementDefinition, RequirementData> someConvertor = (e1, e2) -> convertReqDataListToReqDefList(e1, e2);
- Either<List<List<RequirementDefinition>>, TitanOperationStatus> fullDefList = convertDataToDefComponentLevel(eitherDataCollected.left().value(), someConvertor);
- if (fullDefList.isRight()) {
- eitherResult = Either.right(fullDefList.right().value());
- } else {
- Stream<RequirementDefinition> defStream = fullDefList.left().value().stream().flatMap(e -> e.stream());
- // Collect to Map and using grouping by
- Map<String, List<RequirementDefinition>> capTypeCapListMap = defStream.collect(Collectors.groupingBy(e -> e.getCapability()));
- eitherResult = Either.left(capTypeCapListMap);
- }
-
- }
-
- }
- } finally {
- if (inTransaction == false) {
- titanGenericDao.commit();
- }
- }
-
- return eitherResult;
- }
-
- public Either<Map<String, List<CapabilityDefinition>>, TitanOperationStatus> getCapabilities(Component component, NodeTypeEnum nodeTypeEnum, boolean inTransaction) {
- final HashMap<String, List<CapabilityDefinition>> emptyMap = new HashMap<>();
- Either<Map<String, List<CapabilityDefinition>>, TitanOperationStatus> eitherResult = Either.left(emptyMap);
- try {
- List<ComponentInstance> componentInstances = component.getComponentInstances();
- if (componentInstances != null) {
- Function<ComponentInstance, Either<List<ImmutablePair<CapabilityData, GraphEdge>>, TitanOperationStatus>> dataCollector = e -> componentInstanceOperation.getCapabilities(e, nodeTypeEnum);
- Either<List<ImmutablePair<ComponentInstance, Either<List<ImmutablePair<CapabilityData, GraphEdge>>, TitanOperationStatus>>>, TitanOperationStatus> eitherDataCollected = collectDataFromComponentsInstances(componentInstances,
- dataCollector);
- if (eitherDataCollected.isRight()) {
- eitherResult = Either.right(eitherDataCollected.right().value());
- } else {
- // Converts CapData to CapDef removes stop if encountered
- // conversion error
- DataDefConvertor<CapabilityDefinition, CapabilityData> someConvertor = (e1, e2) -> convertCapDataListToCapDefList(e1, e2);
- Either<List<List<CapabilityDefinition>>, TitanOperationStatus> fullDefList = convertDataToDefComponentLevel(eitherDataCollected.left().value(), someConvertor);
- if (fullDefList.isRight()) {
- eitherResult = Either.right(fullDefList.right().value());
- } else {
- Stream<CapabilityDefinition> defStream = fullDefList.left().value().stream().flatMap(e -> e.stream());
- // Collect to Map grouping by Type
- Map<String, List<CapabilityDefinition>> capTypeCapListMap = defStream.collect(Collectors.groupingBy(e -> e.getType()));
- eitherResult = Either.left(capTypeCapListMap);
- }
-
- }
-
- }
- } finally {
- if (inTransaction == false) {
- titanGenericDao.commit();
- }
- }
-
- return eitherResult;
- }
-
- public <Data> Either<List<ImmutablePair<ComponentInstance, Either<List<ImmutablePair<Data, GraphEdge>>, TitanOperationStatus>>>, TitanOperationStatus> collectDataFromComponentsInstances(List<ComponentInstance> componentInstances,
- Function<ComponentInstance, Either<List<ImmutablePair<Data, GraphEdge>>, TitanOperationStatus>> dataGetter) {
- Either<List<ImmutablePair<ComponentInstance, Either<List<ImmutablePair<Data, GraphEdge>>, TitanOperationStatus>>>, TitanOperationStatus> eitherResult;
-
- // Get List of Each componentInstance and it's Capabilities Data
- Stream<ImmutablePair<ComponentInstance, Either<List<ImmutablePair<Data, GraphEdge>>, TitanOperationStatus>>> ownerDataStream = componentInstances.stream().map(element -> new ImmutablePair<>(element, dataGetter.apply(element)));
- // Collect but stop after first error
- List<ImmutablePair<ComponentInstance, Either<List<ImmutablePair<Data, GraphEdge>>, TitanOperationStatus>>> ownerCapDataList = StreamUtils
- .takeWhilePlusOne(ownerDataStream, p -> p.right.isLeft() || p.right.isRight() && p.right.right().value() == TitanOperationStatus.NOT_FOUND).collect(Collectors.toList());
-
- Optional<ImmutablePair<ComponentInstance, Either<List<ImmutablePair<Data, GraphEdge>>, TitanOperationStatus>>> optionalError = ownerCapDataList.stream()
- .filter(p -> p.right.isRight() && p.right.right().value() != TitanOperationStatus.NOT_FOUND).findAny();
- if (optionalError.isPresent()) {
- eitherResult = Either.right(optionalError.get().right.right().value());
- } else {
- eitherResult = Either.left(ownerCapDataList.stream().filter(p -> p.right.isLeft()).collect(Collectors.toList()));
- }
-
- return eitherResult;
- }
-
- interface DataDefConvertor<Def, Data> {
- Either<List<Def>, TitanOperationStatus> convertDataToDefComponentInstance(ComponentInstance componentInstance, List<ImmutablePair<Data, GraphEdge>> data);
- }
-
- public <Def, Data> Either<List<List<Def>>, TitanOperationStatus> convertDataToDefComponentLevel(List<ImmutablePair<ComponentInstance, Either<List<ImmutablePair<Data, GraphEdge>>, TitanOperationStatus>>> ownerCapDataList,
- DataDefConvertor<Def, Data> convertor) {
- // Converts CapData to CapDef removes stop if encountered conversion
- // error
- TitanOperationStatus error = null;
- List<List<Def>> defList = new ArrayList<>();
- for (int i = 0; i < ownerCapDataList.size(); i++) {
- ImmutablePair<ComponentInstance, Either<List<ImmutablePair<Data, GraphEdge>>, TitanOperationStatus>> immutablePair = ownerCapDataList.get(i);
- Either<List<Def>, TitanOperationStatus> convertCapDataListToCapDefList = convertor.convertDataToDefComponentInstance(immutablePair.left, immutablePair.right.left().value());
- if (convertCapDataListToCapDefList.isRight()) {
- error = convertCapDataListToCapDefList.right().value();
- break;
- } else {
- defList.add(convertCapDataListToCapDefList.left().value());
- }
-
- }
- Either<List<List<Def>>, TitanOperationStatus> eitherResult = (error != null) ? Either.right(error) : Either.left(defList);
- return eitherResult;
-
- }
-
- private Map<String, ComponentMetadataData> findLatestVersion(List<ComponentMetadataData> resourceDataList) {
- Map<Pair<String, String>, ComponentMetadataData> latestVersionMap = new HashMap<Pair<String, String>, ComponentMetadataData>();
- for (ComponentMetadataData resourceData : resourceDataList) {
- ComponentMetadataData latestVersionData = resourceData;
-
- ComponentMetadataDataDefinition metadataDataDefinition = resourceData.getMetadataDataDefinition();
- Pair<String, String> pair = createKeyPair(latestVersionData);
- if (latestVersionMap.containsKey(pair)) {
- latestVersionData = latestVersionMap.get(pair);
- String currentVersion = latestVersionData.getMetadataDataDefinition().getVersion();
- String newVersion = metadataDataDefinition.getVersion();
- if (CommonBeUtils.compareAsdcComponentVersions(newVersion, currentVersion)) {
- latestVersionData = resourceData;
- }
- }
- if (log.isDebugEnabled())
- log.debug("last certified version of resource = {} version is {}", latestVersionData.getMetadataDataDefinition().getName(), latestVersionData.getMetadataDataDefinition().getVersion());
-
- latestVersionMap.put(pair, latestVersionData);
- }
-
- Map<String, ComponentMetadataData> resVersionMap = new HashMap<String, ComponentMetadataData>();
- for (ComponentMetadataData resourceData : latestVersionMap.values()) {
- ComponentMetadataData latestVersionData = resourceData;
- ComponentMetadataDataDefinition metadataDataDefinition = resourceData.getMetadataDataDefinition();
- if (resVersionMap.containsKey(metadataDataDefinition.getUUID())) {
- latestVersionData = resVersionMap.get(metadataDataDefinition.getUUID());
- String currentVersion = latestVersionData.getMetadataDataDefinition().getVersion();
- String newVersion = metadataDataDefinition.getVersion();
- if (CommonBeUtils.compareAsdcComponentVersions(newVersion, currentVersion)) {
- latestVersionData = resourceData;
- }
- }
- if (log.isDebugEnabled())
- log.debug("last uuid version of resource = {} version is {}", latestVersionData.getMetadataDataDefinition().getName(), latestVersionData.getMetadataDataDefinition().getVersion());
- resVersionMap.put(latestVersionData.getMetadataDataDefinition().getUUID(), latestVersionData);
- }
-
- return resVersionMap;
- }
-
- private Pair<String, String> createKeyPair(ComponentMetadataData metadataData) {
- Pair<String, String> pair = null;
- NodeTypeEnum label = NodeTypeEnum.getByName(metadataData.getLabel());
- switch (label) {
- case Resource:
- pair = new ImmutablePair<String, String>(metadataData.getMetadataDataDefinition().getName(), ((ResourceMetadataDataDefinition) metadataData.getMetadataDataDefinition()).getResourceType().name());
- break;
- default:
- pair = new ImmutablePair<String, String>(metadataData.getMetadataDataDefinition().getName(), metadataData.getLabel());
- break;
- }
-
- return pair;
- }
-
- public Either<Collection<ComponentMetadataData>, StorageOperationStatus> getLatestVersionNotAbstractComponentsMetadataOnly(boolean isAbstract, Boolean isHighest, ComponentTypeEnum componentTypeEnum, String internalComponentType) {
- try {
-
- // Map<String, Object> hasPpropertiesToMatch = new HashMap<>();
- // Map<String, Object> hasNotPpropertiesToMatch = new HashMap<>();
- List<ImmutableTriple<QueryType, String, Object>> properties = new ArrayList<>();
- if (componentTypeEnum.equals(ComponentTypeEnum.RESOURCE)) {
- // hasPpropertiesToMatch.put(GraphPropertiesDictionary.IS_ABSTRACT.getProperty(),
- // isAbstract);
- properties.add(new ImmutableTriple<>(QueryType.HAS, GraphPropertiesDictionary.IS_ABSTRACT.getProperty(), isAbstract));
-
- if (internalComponentType != null) {
- switch (internalComponentType.toLowerCase()) {
- case "vf":
- properties.add(new ImmutableTriple<>(QueryType.HAS_NOT, GraphPropertiesDictionary.RESOURCE_TYPE.getProperty(), ResourceTypeEnum.VF.name()));
-// properties.add(new ImmutableTriple<>(QueryType.HAS_NOT, GraphPropertiesDictionary.RESOURCE_TYPE.getProperty(), ResourceTypeEnum.VL.name()));
- // hasNotPpropertiesToMatch.put(GraphPropertiesDictionary.RESOURCE_TYPE.getProperty(),
- // ResourceTypeEnum.VF.name());
- break;
- case "service":
- properties.add(new ImmutableTriple<>(QueryType.HAS_NOT, GraphPropertiesDictionary.RESOURCE_TYPE.getProperty(), ResourceTypeEnum.VFC.name()));
- properties.add(new ImmutableTriple<>(QueryType.HAS_NOT, GraphPropertiesDictionary.RESOURCE_TYPE.getProperty(), ResourceTypeEnum.VFCMT.name()));
- properties.add(new ImmutableTriple<>(QueryType.HAS_NOT, GraphPropertiesDictionary.RESOURCE_TYPE.getProperty(), ResourceTypeEnum.CVFC.name()));
-// properties.add(new ImmutableTriple<>(QueryType.HAS_NOT, GraphPropertiesDictionary.RESOURCE_TYPE.getProperty(), ResourceTypeEnum.VL.name()));
- // hasNotPpropertiesToMatch.put(GraphPropertiesDictionary.RESOURCE_TYPE.getProperty(),
- // ResourceTypeEnum.VFC.name());
- break;
- case "vl":
- properties.add(new ImmutableTriple<>(QueryType.HAS, GraphPropertiesDictionary.RESOURCE_TYPE.getProperty(), ResourceTypeEnum.VL.name()));
- // hasPpropertiesToMatch.put(GraphPropertiesDictionary.RESOURCE_TYPE.getProperty(),
- // ResourceTypeEnum.VL.name());
- break;
- default:
- break;
- }
- }
- }
- // hasNotPpropertiesToMatch.put(GraphPropertiesDictionary.STATE.getProperty(),
- // LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT.name());
- properties.add(new ImmutableTriple<>(QueryType.HAS_NOT, GraphPropertiesDictionary.STATE.getProperty(), LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT.name()));
- // hasNotPpropertiesToMatch.put(GraphPropertiesDictionary.IS_DELETED.getProperty(),
- // true);
- properties.add(new ImmutableTriple<>(QueryType.HAS_NOT, GraphPropertiesDictionary.IS_DELETED.getProperty(), true));
- // Either<List<ComponentMetadataData>, TitanOperationStatus>
- // resourceNodes = titanGenericDao.getByCriteria(
- // componentTypeEnum.getNodeType(), hasPpropertiesToMatch,
- // hasNotPpropertiesToMatch,
- // ComponentMetadataData.class);
- Either<List<ComponentMetadataData>, TitanOperationStatus> resourceNodes = titanGenericDao.getByCriteria(componentTypeEnum.getNodeType(), ComponentMetadataData.class, properties);
- if (resourceNodes.isRight()) {
- // in case of NOT_FOUND from Titan client return to UI empty
- // list
- if (resourceNodes.right().value().equals(TitanOperationStatus.NOT_FOUND)) {
- return Either.left(new ArrayList<>());
- } else {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(resourceNodes.right().value()));
- }
- } else {
- List<ComponentMetadataData> resourceDataList = resourceNodes.left().value();
- Collection<ComponentMetadataData> resCollection = resourceDataList;
- if (isHighest != null && isHighest) {
- Map<String, ComponentMetadataData> latestVersionListMap = findLatestVersion(resourceDataList);
- resCollection = latestVersionListMap.values();
- }
- return Either.left(resCollection);
- }
- } finally {
- titanGenericDao.commit();
- }
-
- }
-
- public Either<List<Component>, StorageOperationStatus> getLatestVersionNotAbstractComponents(boolean isAbstract, Boolean isHighest, ComponentTypeEnum componentTypeEnum, String internalComponentType, List<String> componentUids) {
- try {
- List<Component> result = new ArrayList<>();
- Map<String, ResourceTypeEnum> componentUidsMap = new HashMap<>();
- if (componentUids == null) {
- Either<Collection<ComponentMetadataData>, StorageOperationStatus> resourceNodes = getLatestVersionNotAbstractComponentsMetadataOnly(isAbstract, isHighest, componentTypeEnum, internalComponentType);
- if (resourceNodes.isRight()) {
- return Either.right(resourceNodes.right().value());
- }
- Collection<ComponentMetadataData> collection = resourceNodes.left().value();
-
- if (collection == null) {
- componentUids = new ArrayList<>();
- } else {
- componentUids = collection.stream().map(p -> p.getMetadataDataDefinition().getUniqueId()).collect(Collectors.toList());
- // collection.forEach(p -> {
- // if (NodeTypeEnum.Resource.getName().equals(p.getLabel()))
- // {
- // componentUidsMap.put(p.getMetadataDataDefinition().getUniqueId(),
- // ((ResourceMetadataDataDefinition)
- // p.getMetadataDataDefinition()).getResourceType());
- // }
- // });
-
- }
-
- }
- if (false == componentUids.isEmpty()) {
-
- Manager manager = new Manager();
- int numberOfWorkers = 5;
-
- manager.init(numberOfWorkers);
- for (String componentUid : componentUids) {
- ComponentParametersView componentParametersView = buildComponentViewForNotAbstract();
- // ResourceTypeEnum type =
- // componentUidsMap.get(componentUid);
- // if (type != null && ResourceTypeEnum.VL.equals(type)) {
- if (internalComponentType != null && "vl".equalsIgnoreCase(internalComponentType)) {
- componentParametersView.setIgnoreCapabilities(false);
- componentParametersView.setIgnoreRequirements(false);
- }
- manager.addJob(new Job() {
- @Override
- public Either<Component, StorageOperationStatus> doWork() {
- Either<Component, StorageOperationStatus> component = getComponent(componentUid, componentParametersView, false);
- return component;
- }
- });
- }
- LinkedBlockingQueue<Either<Component, StorageOperationStatus>> res = manager.start();
-
- for (Either<Component, StorageOperationStatus> resource : res) {
- if (resource == null) {
- if (log.isDebugEnabled())
- log.debug("Failed to fetch resource returned null ");
- return Either.right(StorageOperationStatus.GENERAL_ERROR);
- }
- if (resource.isRight()) {
- if (log.isDebugEnabled())
- log.debug("Failed to fetch resource for error is {}", resource.right().value());
- return Either.right(resource.right().value());
- }
- Component component = resource.left().value();
- component.setContactId(null);
- component.setCreationDate(null);
- component.setCreatorUserId(null);
- component.setCreatorFullName(null);
- component.setLastUpdateDate(null);
- component.setLastUpdaterUserId(null);
- component.setLastUpdaterFullName(null);
- component.setNormalizedName(null);
- result.add(resource.left().value());
- }
-
- if (componentUids.size() != result.size()) {
- if (log.isDebugEnabled())
- log.debug("one of the workers failed to complete job ");
- return Either.right(StorageOperationStatus.GENERAL_ERROR);
- }
- }
-
- return Either.left(result);
-
- } finally {
- titanGenericDao.commit();
- }
- }
-
- private ComponentParametersView buildComponentViewForNotAbstract() {
- ComponentParametersView componentParametersView = new ComponentParametersView();
- componentParametersView.disableAll();
- // componentParametersView.setIgnoreRequirements(false);
- // componentParametersView.setIgnoreCapabilities(false);
- componentParametersView.setIgnoreCategories(false);
- componentParametersView.setIgnoreAllVersions(false);
- componentParametersView.setIgnoreAllVersions(false);
- return componentParametersView;
- }
-
- protected TitanOperationStatus setCapabilitiesFromGraph(String uniqueId, Component component, NodeTypeEnum nodeType) {
- TitanOperationStatus titanStatus;
- Either<Map<String, List<CapabilityDefinition>>, TitanOperationStatus> eitherCapabilities = getCapabilities(component, nodeType, true);
- if (eitherCapabilities.isLeft()) {
- titanStatus = TitanOperationStatus.OK;
- Map<String, List<CapabilityDefinition>> capabilities = eitherCapabilities.left().value();
- if (capabilities != null && !capabilities.isEmpty()) {
- component.setCapabilities(capabilities);
- }
- } else {
- titanStatus = eitherCapabilities.right().value();
- }
- return titanStatus;
- }
-
- protected TitanOperationStatus setRequirementsFromGraph(String uniqueId, Component component, NodeTypeEnum nodeType) {
- TitanOperationStatus status;
- Either<Map<String, List<RequirementDefinition>>, TitanOperationStatus> eitherRequirements = getRequirements(component, nodeType, false);
- if (eitherRequirements.isLeft()) {
- status = TitanOperationStatus.OK;
- Map<String, List<RequirementDefinition>> requirements = eitherRequirements.left().value();
- if (requirements != null && !requirements.isEmpty()) {
- component.setRequirements(requirements);
- }
- } else {
- status = eitherRequirements.right().value();
- }
- return status;
- }
-
- protected boolean isComponentExist(String componentId, NodeTypeEnum nodeType) {
- boolean result = true;
- Either<TitanVertex, TitanOperationStatus> compVertex = titanGenericDao.getVertexByProperty(UniqueIdBuilder.getKeyByNodeType(nodeType), componentId);
- if (compVertex.isRight()) {
- log.debug("failed to fetch vertex of component data for id {}", componentId);
- result = false;
-
- }
- return result;
- }
-
- <T> Either<T, StorageOperationStatus> getLightComponent(String id, NodeTypeEnum nodeType, boolean inTransaction) {
-
- T component = null;
- try {
- log.debug("Starting to build light component of type {}, id {}", nodeType, id);
- Either<TitanGraph, TitanOperationStatus> graphResult = titanGenericDao.getGraph();
- if (graphResult.isRight()) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(graphResult.right().value()));
- }
- TitanGraph titanGraph = graphResult.left().value();
- Iterable<TitanVertex> vertecies = titanGraph.query().has(UniqueIdBuilder.getKeyByNodeType(nodeType), id).vertices();
- if (vertecies != null) {
- Iterator<TitanVertex> iterator = vertecies.iterator();
- if (iterator != null && iterator.hasNext()) {
- Vertex vertex = iterator.next();
- Map<String, Object> resourceProperties = titanGenericDao.getProperties(vertex);
- ComponentMetadataData componentMetadataData = GraphElementFactory.createElement(nodeType.getName(), GraphElementTypeEnum.Node, resourceProperties, ComponentMetadataData.class);
- component = (T) convertComponentMetadataDataToComponent(componentMetadataData);
-
- // get creator
- Iterator<Edge> iterCreator = vertex.edges(Direction.IN, GraphEdgeLabels.CREATOR.name());
- if (iterCreator.hasNext() == false) {
- log.debug("no creator was defined for component {}", id);
- return Either.right(StorageOperationStatus.GENERAL_ERROR);
- }
- Vertex vertexCreator = iterCreator.next().outVertex();
- UserData creator = GraphElementFactory.createElement(NodeTypeEnum.User.getName(), GraphElementTypeEnum.Node, titanGenericDao.getProperties(vertexCreator), UserData.class);
- log.debug("Build component : set creator userId to {}", creator.getUserId());
- String fullName = buildFullName(creator);
- log.debug("Build component : set creator full name to {}", fullName);
- ((Component) component).setCreatorUserId(creator.getUserId());
- ((Component) component).setCreatorFullName(fullName);
-
- // get modifier
- Iterator<Edge> iterModifier = vertex.edges(Direction.IN, GraphEdgeLabels.LAST_MODIFIER.name());
-
- if (iterModifier.hasNext() == false) {
- log.debug("no modifier was defined for component {}", id);
- return Either.right(StorageOperationStatus.GENERAL_ERROR);
- }
- Vertex vertexModifier = iterModifier.next().outVertex();
- UserData modifier = GraphElementFactory.createElement(NodeTypeEnum.User.getName(), GraphElementTypeEnum.Node, titanGenericDao.getProperties(vertexModifier), UserData.class);
- log.debug("Build component : set last modifier userId to {}", creator.getUserId());
- fullName = buildFullName(modifier);
- log.debug("Build component : set last modifier full name to {}", fullName);
- ((Component) component).setLastUpdaterUserId(modifier.getUserId());
- ((Component) component).setLastUpdaterFullName(fullName);
-
- // get category
- TitanOperationStatus status = setComponentCategoriesFromGraph((Component) component);
- if (status != TitanOperationStatus.OK) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- }
- } else {
- // Nothing found
- log.debug("Component with id {} not found", id);
- return Either.right(StorageOperationStatus.NOT_FOUND);
- }
- } else {
- // Nothing found
- log.debug("Component with id {} not found", id);
- return Either.right(StorageOperationStatus.NOT_FOUND);
- }
- log.debug("Ended to build light component of type {}, id {}", nodeType, id);
- return Either.left(component);
- } finally {
- if (false == inTransaction) {
- titanGenericDao.commit();
- }
- }
- }
-
- Either<Component, StorageOperationStatus> getMetadataComponent(String id, NodeTypeEnum nodeType, boolean inTransaction) {
- Component component = null;
- try {
- log.debug("Starting to build metadata component of type {}, id {}", nodeType, id);
- Either<TitanGraph, TitanOperationStatus> graphResult = titanGenericDao.getGraph();
- if (graphResult.isRight()) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(graphResult.right().value()));
- }
- TitanGraph titanGraph = graphResult.left().value();
- Iterable<TitanVertex> vertecies = titanGraph.query().has(UniqueIdBuilder.getKeyByNodeType(nodeType), id).vertices();
- if (vertecies != null) {
- Iterator<TitanVertex> iterator = vertecies.iterator();
- if (iterator != null && iterator.hasNext()) {
- Vertex vertex = iterator.next();
- Map<String, Object> resourceProperties = titanGenericDao.getProperties(vertex);
- ComponentMetadataData componentMetadataData = GraphElementFactory.createElement(nodeType.getName(), GraphElementTypeEnum.Node, resourceProperties, ComponentMetadataData.class);
- component = convertComponentMetadataDataToComponent(componentMetadataData);
- } else {
- // Nothing found
- log.debug("Component with id {} not found", id);
- return Either.right(StorageOperationStatus.NOT_FOUND);
- }
- } else {
- // Nothing found
- log.debug("Component with id {} not found", id);
- return Either.right(StorageOperationStatus.NOT_FOUND);
- }
- log.debug("Ended to build metadata component of type {}, id {}", nodeType, id);
- return Either.left(component);
- } finally {
- if (false == inTransaction) {
- titanGenericDao.commit();
- }
- }
- }
-
- public Either<Integer, StorageOperationStatus> getComponentInstanceCoutner(String origServiceId, NodeTypeEnum nodeType) {
- Either<Integer, StorageOperationStatus> result;
- Either<TitanGraph, TitanOperationStatus> graphResult = titanGenericDao.getGraph();
- if (graphResult.isRight()) {
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(graphResult.right().value()));
- return result;
- }
- Either<TitanVertex, TitanOperationStatus> vertexService = titanGenericDao.getVertexByProperty(UniqueIdBuilder.getKeyByNodeType(nodeType), origServiceId);
- if (vertexService.isRight()) {
- log.debug("failed to fetch vertex of component metadata, nodeType:{} , id: {}", nodeType, origServiceId);
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(vertexService.right().value()));
- return result;
- }
- Vertex vertex = vertexService.left().value();
- Integer instanceCounter = vertex.value(GraphPropertiesDictionary.INSTANCE_COUNTER.getProperty());
- return Either.left(instanceCounter);
- }
-
- protected TitanOperationStatus setComponentInstancesPropertiesFromGraph(Component component) {
-
- List<ComponentInstance> resourceInstances = component.getComponentInstances();
-
- Map<String, List<ComponentInstanceProperty>> resourceInstancesProperties = new HashMap<>();
-
- Map<String, List<PropertyDefinition>> alreadyProcessedResources = new HashMap<>();
-
- Map<String, List<ComponentInstanceProperty>> alreadyProcessedInstances = new HashMap<>();
-
- Map<String, ImmutablePair<ComponentInstance, Integer>> processedInstances = new HashMap<>();
-
- if (resourceInstances != null) {
-
- for (ComponentInstance resourceInstance : resourceInstances) {
-
- List<String> path = new ArrayList<>();
- path.add(resourceInstance.getUniqueId());
- Either<List<ComponentInstanceProperty>, TitanOperationStatus> componentInstanceProperties = componentInstanceOperation.getComponentInstanceProperties(resourceInstance, alreadyProcessedResources, alreadyProcessedInstances,
- processedInstances, path);
-
- if (componentInstanceProperties.isRight()) {
- TitanOperationStatus status = componentInstanceProperties.right().value();
- if (status != TitanOperationStatus.OK) {
- return status;
- }
- }
-
- List<ComponentInstanceProperty> listOfProps = componentInstanceProperties.left().value();
- String resourceInstanceUid = resourceInstance.getUniqueId();
- resourceInstancesProperties.put(resourceInstanceUid, listOfProps);
-
- // alreadyProcessedInstances.put(resourceInstance.getUniqueId(),
- // resourceInstance);
-
- processedInstances.put(resourceInstance.getUniqueId(), new ImmutablePair<ComponentInstance, Integer>(resourceInstance, path.size()));
- path.remove(path.size() - 1);
-
- }
-
- }
-
- Either<Map<String, Map<String, ComponentInstanceProperty>>, TitanOperationStatus> findAllPropertiesValuesOnInstances = componentInstanceOperation.findAllPropertyValueOnInstances(processedInstances);
- // 1. check status
- if (findAllPropertiesValuesOnInstances.isRight()) {
- TitanOperationStatus status = findAllPropertiesValuesOnInstances.right().value();
- if (status != TitanOperationStatus.OK) {
- return status;
- }
- }
- // 2. merge data from rules on properties (resourceInstancesProperties)
- propertyOperation.updatePropertiesByPropertyValues(resourceInstancesProperties, findAllPropertiesValuesOnInstances.left().value());
-
- component.setComponentInstancesProperties(resourceInstancesProperties);
-
- return TitanOperationStatus.OK;
- }
-
- protected TitanOperationStatus setComponentInstancesInputsFromGraph(String uniqueId, Component component) {
-
- Map<String, List<ComponentInstanceInput>> resourceInstancesInputs = new HashMap<>();
- TitanOperationStatus status = TitanOperationStatus.OK;
- List<ComponentInstance> componentInstances = component.getComponentInstances();
- if (componentInstances != null) {
- for (ComponentInstance resourceInstance : componentInstances) {
- Either<List<ComponentInstanceInput>, TitanOperationStatus> eitherRIAttributes = inputOperation.getAllInputsOfResourceInstance(resourceInstance);
- if (eitherRIAttributes.isRight()) {
- if (eitherRIAttributes.right().value() != TitanOperationStatus.NOT_FOUND) {
- status = eitherRIAttributes.right().value();
- break;
- }
- } else {
- resourceInstancesInputs.put(resourceInstance.getUniqueId(), eitherRIAttributes.left().value());
- }
- }
- if (!resourceInstancesInputs.isEmpty())
- component.setComponentInstancesInputs(resourceInstancesInputs);
- }
-
- return status;
- }
-
- public Either<String, StorageOperationStatus> getInvariantUUID(NodeTypeEnum nodeType, String componentId, boolean inTransaction) {
- Either<String, StorageOperationStatus> res = null;
- try {
- Either<TitanVertex, TitanOperationStatus> vertexByProperty = titanGenericDao.getVertexByProperty(UniqueIdBuilder.getKeyByNodeType(nodeType), componentId);
- if (vertexByProperty.isRight()) {
- TitanOperationStatus status = vertexByProperty.right().value();
- if (status == TitanOperationStatus.NOT_FOUND) {
- status = TitanOperationStatus.INVALID_ID;
- }
- res = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- } else {
- Vertex v = vertexByProperty.left().value();
- String invariantUUID = v.value(GraphPropertiesDictionary.INVARIANT_UUID.getProperty());
-
- if (invariantUUID == null || invariantUUID.isEmpty()) {
-
- log.info("The component {} has empty invariant UUID.", componentId);
- res = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(TitanOperationStatus.INVALID_ELEMENT));
-
- }
- res = Either.left(invariantUUID);
- }
- } finally {
- if (false == inTransaction) {
- titanGenericDao.commit();
- }
- }
- return res;
- }
-
- protected TitanOperationStatus setGroupsFromGraph(String uniqueId, Component component, NodeTypeEnum nodeTypeEnum) {
-
- Either<List<GroupDefinition>, TitanOperationStatus> res = groupOperation.getAllGroupsFromGraph(uniqueId, nodeTypeEnum);
- if (res.isRight()) {
- TitanOperationStatus status = res.right().value();
- if (status == TitanOperationStatus.NOT_FOUND) {
- return TitanOperationStatus.OK;
- } else {
- return status;
- }
- }
- component.setGroups(res.left().value());
-
- return TitanOperationStatus.OK;
-
- }
-
- protected TitanOperationStatus setComponentInputsFromGraph(String uniqueId, Component component, boolean inTransaction) {
-
- List<InputDefinition> inputs = new ArrayList<>();
- TitanOperationStatus status = inputsOperation.findAllResourceInputs(uniqueId, inputs);
- if (status == TitanOperationStatus.OK) {
- component.setInputs(inputs);
- }
-
- return status;
-
- }
-
- protected StorageOperationStatus deleteGroups(NodeTypeEnum nodeType, String componentId) {
-
- Either<List<GroupDefinition>, StorageOperationStatus> deleteRes = groupOperation.deleteAllGroups(componentId, nodeType, true);
-
- if (deleteRes.isRight()) {
- StorageOperationStatus status = deleteRes.right().value();
- return status;
- }
-
- return StorageOperationStatus.OK;
-
- }
-
- protected StorageOperationStatus removeInputsFromComponent(NodeTypeEnum typeEnum, Component component) {
- Either<Map<String, InputDefinition>, StorageOperationStatus> deleteAllInputsAssociatedToNode = inputsOperation.deleteAllInputsAssociatedToNode(typeEnum, component.getUniqueId());
- return deleteAllInputsAssociatedToNode.isRight() ? deleteAllInputsAssociatedToNode.right().value() : StorageOperationStatus.OK;
- }
-
- protected TitanOperationStatus associateInputsToComponent(NodeTypeEnum nodeType, ComponentMetadataData resourceData, List<InputDefinition> properties) {
-
- Either<Map<String, DataTypeDefinition>, TitanOperationStatus> allDataTypes = applicationDataTypeCache.getAll();
- if (allDataTypes.isRight()) {
- TitanOperationStatus status = allDataTypes.right().value();
- log.debug("Cannot find any data type. Status is {}.", status);
- return status;
- }
-
- Map<String, InputDefinition> convertedProperties = new HashMap<>();
-
- if (properties != null) {
- for (InputDefinition propertyDefinition : properties) {
- convertedProperties.put(propertyDefinition.getName(), propertyDefinition);
- }
-
- Either<List<InputDefinition>, TitanOperationStatus> operationStatus = inputsOperation.addInputsToGraph(resourceData.getMetadataDataDefinition().getUniqueId(), nodeType, convertedProperties, allDataTypes.left().value());
- if (operationStatus.isLeft())
- return TitanOperationStatus.OK;
- else
- return operationStatus.right().value();
- }
-
- return TitanOperationStatus.OK;
-
- }
-
- protected TitanOperationStatus associateInputsToComponent(TitanVertex metadataVertex, String componentId, List<InputDefinition> properties) {
-
- Either<Map<String, DataTypeDefinition>, TitanOperationStatus> allDataTypes = applicationDataTypeCache.getAll();
- if (allDataTypes.isRight()) {
- TitanOperationStatus status = allDataTypes.right().value();
- log.debug("Cannot find any data type. Status is {}.", status);
- return status;
- }
-
- Map<String, InputDefinition> convertedProperties = new HashMap<>();
-
- if (properties != null) {
- for (InputDefinition propertyDefinition : properties) {
- convertedProperties.put(propertyDefinition.getName(), propertyDefinition);
- }
-
- return inputsOperation.addInputsToGraph(metadataVertex, componentId, convertedProperties, allDataTypes.left().value());
- }
-
- return TitanOperationStatus.OK;
-
- }
-
- public Either<List<ComponentInstance>, StorageOperationStatus> getAllComponentInstncesMetadata(String componentId, NodeTypeEnum nodeType) {
- Instant start = Instant.now();
- Either<List<ComponentInstance>, StorageOperationStatus> resourceInstancesOfService = componentInstanceOperation.getAllComponentInstancesMetadataOnly(componentId, nodeType);
- Instant end = Instant.now();
- log.debug("TOTAL TIME BL GET INSTANCES: {}", Duration.between(start, end));
- return resourceInstancesOfService;
- }
-
- @Deprecated
- public Either<List<Component>, ActionStatus> getComponentsFromCacheForCatalog(Set<String> components, ComponentTypeEnum componentType) {
-
- Either<ImmutableTriple<List<Component>, List<Component>, Set<String>>, ActionStatus> componentsForCatalog = componentCache.getComponentsForCatalog(components, componentType);
- if (componentsForCatalog.isLeft()) {
- ImmutableTriple<List<Component>, List<Component>, Set<String>> immutableTriple = componentsForCatalog.left().value();
- List<Component> foundComponents = immutableTriple.getLeft();
-
- if (foundComponents != null) {
- // foundComponents.forEach(p -> result.add((Resource)p));
- log.debug("The number of {}s added to catalog from cache is {}", componentType.name().toLowerCase(), foundComponents.size());
-
- }
- List<Component> foundDirtyComponents = immutableTriple.getMiddle();
- Set<String> nonCachedComponents = immutableTriple.getRight();
- int numberDirtyResources = foundDirtyComponents == null ? 0 : foundDirtyComponents.size();
- int numberNonCached = nonCachedComponents == null ? 0 : nonCachedComponents.size();
- log.debug("The number of left {}s for catalog is {}", componentType.name().toLowerCase(), numberDirtyResources + numberNonCached);
- return Either.left(foundComponents);
- }
-
- return Either.right(componentsForCatalog.right().value());
- }
-
- public <T extends ComponentMetadataData> Either<List<T>, TitanOperationStatus> getListOfHighestComponents(NodeTypeEnum nodeTypeEnum, Class<T> clazz) {
-
- long startFetchAllStates = System.currentTimeMillis();
- Map<String, Object> propertiesToMatchHigest = new HashMap<>();
- propertiesToMatchHigest.put(GraphPropertiesDictionary.IS_HIGHEST_VERSION.getProperty(), true);
- Either<List<T>, TitanOperationStatus> allHighestStates = titanGenericDao.getByCriteria(nodeTypeEnum, propertiesToMatchHigest, clazz);
- if (allHighestStates.isRight() && allHighestStates.right().value() != TitanOperationStatus.NOT_FOUND) {
- return Either.right(allHighestStates.right().value());
- }
- long endFetchAllStates = System.currentTimeMillis();
-
- if (allHighestStates.isRight()) {
- return Either.left(new ArrayList<>());
- }
- List<T> services = allHighestStates.left().value();
-
- List<T> certifiedHighest = new ArrayList<>();
- List<T> notCertifiedHighest = new ArrayList<>();
- for (T reData : services) {
- if (reData.getMetadataDataDefinition().getState().equals(LifecycleStateEnum.CERTIFIED.name())) {
- certifiedHighest.add(reData);
- } else {
- notCertifiedHighest.add(reData);
- }
- }
-
- log.debug("Fetch catalog {}s all states: certified {}, noncertified {}", nodeTypeEnum.getName(), certifiedHighest.size(), notCertifiedHighest.size());
- log.debug("Fetch catalog {}s all states from graph took {} ms", nodeTypeEnum.getName(), endFetchAllStates - startFetchAllStates);
-
- HashMap<String, String> serviceNames = new HashMap<>();
- for (T data : notCertifiedHighest) {
- String serviceName = data.getMetadataDataDefinition().getName();
- serviceNames.put(serviceName, serviceName);
- }
-
- for (T data : certifiedHighest) {
- String serviceName = data.getMetadataDataDefinition().getName();
- if (!serviceNames.containsKey(serviceName)) {
- notCertifiedHighest.add(data);
- }
- }
-
- return Either.left(notCertifiedHighest);
- }
-
- protected <T extends Component> Either<T, ActionStatus> getComponentFromCacheIfUpToDate(String uniqueId, ComponentMetadataData componentMetadataData, ComponentParametersView componentParametersView, Class<T> clazz,
- ComponentTypeEnum componentTypeEnum) {
-
- long start = System.currentTimeMillis();
- try {
-
- long lastModificationTime = componentMetadataData.getMetadataDataDefinition().getLastUpdateDate();
- Either<Component, ActionStatus> cacheComponentRes = this.componentCache.getComponent(uniqueId, lastModificationTime);
- if (cacheComponentRes.isLeft()) {
- Component cachedComponent = cacheComponentRes.left().value();
-
- // Must calculate allVersions
- if (false == componentParametersView.isIgnoreAllVersions()) {
- Class<? extends ComponentMetadataData> clazz1 = null;
- switch (componentTypeEnum) {
- case RESOURCE:
- clazz1 = ResourceMetadataData.class;
- break;
- case SERVICE:
- clazz1 = ServiceMetadataData.class;
- break;
- case PRODUCT:
- clazz1 = ProductMetadataData.class;
- break;
- default:
- break;
- }
- if (clazz1 != null) {
- Either<Map<String, String>, TitanOperationStatus> versionList = getVersionList(componentTypeEnum.getNodeType(), cachedComponent.getVersion(), cachedComponent.getUUID(), cachedComponent.getSystemName(), clazz1);
- if (versionList.isRight()) {
- return Either.right(ActionStatus.GENERAL_ERROR);
- }
-
- Map<String, String> allVersions = versionList.left().value();
- cachedComponent.setAllVersions(allVersions);
- } else {
- return Either.right(ActionStatus.GENERAL_ERROR);
- }
- }
- if (componentParametersView != null) {
- cachedComponent = componentParametersView.filter(cachedComponent, componentTypeEnum);
- }
- return Either.left(clazz.cast(cachedComponent));
- }
-
- return Either.right(cacheComponentRes.right().value());
-
- } finally {
- log.trace("Fetch component {} with uid {} from cache took {} ms", componentTypeEnum.name().toLowerCase(), uniqueId, System.currentTimeMillis() - start);
- }
- }
-
- public Either<ImmutablePair<List<Component>, Set<String>>, ActionStatus> getComponentsFromCacheForCatalog(Map<String, Long> components, ComponentTypeEnum componentType) {
-
- Either<ImmutablePair<List<Component>, Set<String>>, ActionStatus> componentsForCatalog = componentCache.getComponentsForCatalog(components, componentType);
- if (componentsForCatalog.isLeft()) {
- ImmutablePair<List<Component>, Set<String>> immutablePair = componentsForCatalog.left().value();
- List<Component> foundComponents = immutablePair.getLeft();
-
- if (foundComponents != null) {
- // foundComponents.forEach(p -> result.add((Resource)p));
- log.debug("The number of {}s added to catalog from cache is {}", componentType.name().toLowerCase(), foundComponents.size());
- }
- Set<String> leftComponents = immutablePair.getRight();
- int numberNonCached = leftComponents == null ? 0 : leftComponents.size();
- log.debug("The number of left {}s for catalog is {}", componentType.name().toLowerCase(), numberNonCached);
-
- ImmutablePair<List<Component>, Set<String>> result = new ImmutablePair<List<Component>, Set<String>>(foundComponents, leftComponents);
- return Either.left(result);
- }
-
- return Either.right(componentsForCatalog.right().value());
- }
-
- /**
- *
- * @param component
- * @param inTransaction
- * @param titanGenericDao
- * @param clazz
- * @return
- */
- public <T> Either<T, StorageOperationStatus> updateComponentFilterResult(Component component, boolean inTransaction, TitanGenericDao titanGenericDao, Class<T> clazz, NodeTypeEnum type, ComponentParametersView filterResult) {
- Either<T, StorageOperationStatus> result = null;
-
- try {
-
- log.debug("In updateComponent. received component uid = {}", (component == null ? null : component.getUniqueId()));
- if (component == null) {
- log.error("Service object is null");
- result = Either.right(StorageOperationStatus.BAD_REQUEST);
- return result;
- }
-
- ComponentMetadataData componentData = getMetaDataFromComponent(component);
-
- log.debug("After converting component to componentData. ComponentData = {}", componentData);
-
- if (componentData.getUniqueId() == null) {
- log.error("Resource id is missing in the request.");
- return Either.right(StorageOperationStatus.BAD_REQUEST);
- }
-
- Either<Integer, StorageOperationStatus> counterStatus = this.getComponentInstanceCoutner(component.getUniqueId(), component.getComponentType().getNodeType());
-
- if (counterStatus.isRight()) {
-
- log.error("Cannot find componentInstanceCounter for component {} in the graph. status is {}", componentData.getUniqueId(), counterStatus);
- // result = sendError(status,
- // StorageOperationStatus.USER_NOT_FOUND);
- return result;
- }
-
- componentData.setComponentInstanceCounter(counterStatus.left().value());
-
- String modifierUserId = component.getLastUpdaterUserId();
- if (modifierUserId == null || modifierUserId.isEmpty()) {
- log.error("UserId is missing in the request.");
- result = Either.right(StorageOperationStatus.BAD_REQUEST);
- return result;
- }
- Either<UserData, TitanOperationStatus> findUser = findUser(modifierUserId);
-
- if (findUser.isRight()) {
- TitanOperationStatus status = findUser.right().value();
- log.error("Cannot find user {} in the graph. status is {}", modifierUserId, status);
- // result = sendError(status,
- // StorageOperationStatus.USER_NOT_FOUND);
- return result;
- }
-
- UserData modifierUserData = findUser.left().value();
- String resourceId = component.getUniqueId();
-
- ComponentParametersView componentParametersView = new ComponentParametersView();
- componentParametersView.disableAll();
- componentParametersView.setIgnoreUsers(false);
- componentParametersView.setIgnoreCategories(false);
- componentParametersView.setIgnoreDerivedFrom(false);
- componentParametersView.setIgnoreArtifacts(false);
- Either<T, StorageOperationStatus> currentComponentResult = this.getComponent(resourceId, componentParametersView, inTransaction);
- if (currentComponentResult.isRight()) {
- log.error("Cannot find resource with id {} in the graph.", resourceId);
- result = Either.right(currentComponentResult.right().value());
- return result;
- }
-
- Component currentComponent = (Component) currentComponentResult.left().value();
- String currentModifier = currentComponent.getLastUpdaterUserId();
-
- if (currentModifier.equals(modifierUserData.getUniqueId())) {
- log.debug("Graph LAST MODIFIER edge should not be changed since the modifier is the same as the last modifier.");
- } else {
- log.debug("Going to update the last modifier user of the resource from {} to {}", currentModifier, modifierUserId);
- StorageOperationStatus status = moveLastModifierEdge(component, componentData, modifierUserData, type);
- log.debug("Finish to update the last modifier user of the resource from {} to {}. status is {}", currentModifier, modifierUserId, status);
- if (status != StorageOperationStatus.OK) {
- result = Either.right(status);
- return result;
- }
- }
- final long currentTimeMillis = System.currentTimeMillis();
- log.debug("Going to update the last Update Date of the resource from {} to {}", component.getLastUpdateDate(), currentTimeMillis);
- component.setLastUpdateDate(currentTimeMillis);
-
- StorageOperationStatus checkCategories = validateCategories(currentComponent, component, componentData, type);
- if (checkCategories != StorageOperationStatus.OK) {
- result = Either.right(checkCategories);
- return result;
- }
-
- List<String> tags = component.getTags();
- if (tags != null && false == tags.isEmpty()) {
- Either<List<TagData>, StorageOperationStatus> tagsResult = createNewTagsList(tags);
- if (tagsResult.isRight()) {
- result = Either.right(tagsResult.right().value());
- return result;
- }
- List<TagData> tagsToCreate = tagsResult.left().value();
- if (tagsToCreate != null && !tagsToCreate.isEmpty()) {
- tagsToCreate = ImmutableSet.copyOf(tagsToCreate).asList();
- for (TagData tagData : tagsToCreate) {
- log.debug("Before creating tag {}", tagData);
- Either<TagData, TitanOperationStatus> createTagResult = titanGenericDao.createNode(tagData, TagData.class);
- if (createTagResult.isRight()) {
- TitanOperationStatus status = createTagResult.right().value();
- log.error("Cannot find tag {} in the graph. status is {}", tagData, status);
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
- log.debug("After creating tag {}", tagData);
- }
- }
- }
-
- Either<ComponentMetadataData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(componentData, ComponentMetadataData.class);
-
- if (updateNode.isRight()) {
- log.error("Failed to update resource {}. status is {}", component.getUniqueId(), updateNode.right().value());
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(updateNode.right().value()));
- return result;
- }
-
- ComponentMetadataData updatedResourceData = updateNode.left().value();
- log.debug("ComponentData After update is {}", updatedResourceData);
-
- // DE230195 in case resource name changed update TOSCA artifacts
- // file names accordingly
- String newSystemName = updatedResourceData.getMetadataDataDefinition().getSystemName();
- String prevSystemName = currentComponent.getSystemName();
- if (newSystemName != null && !newSystemName.equals(prevSystemName)) {
- Map<String, ArtifactDefinition> toscaArtifacts = component.getToscaArtifacts();
- if (toscaArtifacts != null) {
- for (Entry<String, ArtifactDefinition> artifact : toscaArtifacts.entrySet()) {
- Either<ArtifactData, StorageOperationStatus> updateName = generateAndUpdateToscaFileName(component.getComponentType().getValue().toLowerCase(), newSystemName, updatedResourceData.getMetadataDataDefinition().getUniqueId(),
- type, artifact.getValue());
- if (updateName.isRight()) {
- result = Either.right(updateName.right().value());
- return result;
- }
- }
- }
- //TODO call to new Artifact operation in order to update list of artifacts
-
- //US833308 VLI in service - specific network_role property value logic
- if (ComponentTypeEnum.SERVICE == component.getComponentType()) {
- //update method logs success/error and returns boolean (true if nothing fails)
- updateServiceNameInVLIsNetworkRolePropertyValues(component, prevSystemName, newSystemName);
- }
- }
-
-
- if (component.getComponentType().equals(ComponentTypeEnum.RESOURCE)) {
- updateDerived(component, currentComponent, componentData, component.getClass());
- }
-
- Either<T, StorageOperationStatus> updatedResource = getComponent(component.getUniqueId(), filterResult, inTransaction);
- if (updatedResource.isRight()) {
- log.error("Resource id is missing in the request. status is {}", updatedResource.right().value());
- result = Either.right(StorageOperationStatus.BAD_REQUEST);
- return result;
- }
-
- T updatedResourceValue = updatedResource.left().value();
- result = Either.left(updatedResourceValue);
-
- return result;
- } finally {
-
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- log.error("updateComponent operation : Going to execute rollback on graph.");
- titanGenericDao.rollback();
- } else {
- log.debug("updateComponent operation : Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
- }
-
- private boolean updateServiceNameInVLIsNetworkRolePropertyValues (Component component, String prevSystemName, String newSystemName) {
- // find VLIs in service
- boolean res = true;
- if(null == component.getComponentInstances() || component.getComponentInstances().isEmpty()){
- return res;
- }
-
- List <ComponentInstance> vlInstances =
- component.getComponentInstances().stream()
- .filter(p -> OriginTypeEnum.VL == p.getOriginType())
- .collect(Collectors.toList());
- if (!vlInstances.isEmpty()) {
- for (ComponentInstance vlInstance : vlInstances){
- // find network_role property
- Optional <ComponentInstanceProperty> networkRoleProperty = component.getComponentInstancesProperties().get(vlInstance.getUniqueId()).stream()
- .filter(p -> PropertyNames.NETWORK_ROLE.getPropertyName().equalsIgnoreCase(p.getName()))
- .findAny();
- res = res && updateNetworkRolePropertyValue(prevSystemName, newSystemName, vlInstance, networkRoleProperty);
- }
- }
- return res;
- }
-
- private boolean updateNetworkRolePropertyValue(String prevSystemName, String newSystemName, ComponentInstance vlInstance, Optional<ComponentInstanceProperty> networkRoleProperty) {
- if (networkRoleProperty.isPresent() && !StringUtils.isEmpty(networkRoleProperty.get().getValue()) ) {
- ComponentInstanceProperty property = networkRoleProperty.get();
- String updatedValue = property.getValue().replaceFirst(prevSystemName, newSystemName);
- property.setValue(updatedValue);
- StorageOperationStatus updateCustomizationUUID;
- //disregard property value rule
- property.setRules(null);
- Either<ComponentInstanceProperty, StorageOperationStatus> result = componentInstanceOperation.updatePropertyValueInResourceInstance(property, vlInstance.getUniqueId(), true);
- if (result.isLeft()) {
- log.debug("Property value {} was updated on graph.", property.getValueUniqueUid());
- updateCustomizationUUID = componentInstanceOperation.updateCustomizationUUID(vlInstance.getUniqueId());
- } else {
- updateCustomizationUUID = StorageOperationStatus.EXEUCTION_FAILED;
- log.debug("Failed to update property value: {} in resource instance {}", updatedValue, vlInstance.getUniqueId());
- }
- return result.isLeft() && StorageOperationStatus.OK == updateCustomizationUUID;
- }
- return true;
- }
-
- public Either<ComponentMetadataData, StorageOperationStatus> updateComponentLastUpdateDateAndLastModifierOnGraph( Component component, User modifier, NodeTypeEnum componentType, boolean inTransaction) {
-
- log.debug("Going to update last update date and last modifier info of component {}. ", component.getName());
- Either<ComponentMetadataData, StorageOperationStatus> result = null;
- try{
- String modifierUserId = modifier.getUserId();
- ComponentMetadataData componentData = getMetaDataFromComponent(component);
- String currentUser = component.getLastUpdaterUserId();
- UserData modifierUserData = new UserData();
- modifierUserData.setUserId(modifierUserId);
- if (currentUser.equals(modifierUserId)) {
- log.debug("Graph last modifier edge should not be changed since the modifier is the same as the last modifier.");
- } else {
- log.debug("Going to update the last modifier user of the component from {} to {}", currentUser, modifierUserId);
- StorageOperationStatus status = moveLastModifierEdge(component, componentData, modifierUserData, componentType);
- log.debug("Finish to update the last modifier user of the resource from {} to {}. status is {}", currentUser, modifierUserId, status);
- if (status != StorageOperationStatus.OK) {
- result = Either.right(status);
- }
- }
- Either<ComponentMetadataData, TitanOperationStatus> updateNode = null;
- if(result == null){
- log.debug("Going to update the component {} with new last update date. ", component.getName());
- componentData.getMetadataDataDefinition().setLastUpdateDate(System.currentTimeMillis());
- updateNode = titanGenericDao.updateNode(componentData, ComponentMetadataData.class);
- if (updateNode.isRight()) {
- log.error("Failed to update component {}. status is {}", component.getUniqueId(), updateNode.right().value());
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(updateNode.right().value()));
- }
- }
- if(result == null){
- result = Either.left(updateNode.left().value());
- }
- }catch(Exception e){
- log.error("Exception occured during update last update date and last modifier info of component {}. The message is {}. ", component.getName(), e.getMessage());
- }finally {
- if(!inTransaction){
- if (result == null || result.isRight()) {
- log.error("Going to execute rollback on graph.");
- titanGenericDao.rollback();
- } else {
- log.debug("Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
- return result;
- }
- /**
- * updates component lastUpdateDate on graph node
- * @param component
- * @param componentType
- * @param lastUpdateDate
- * @param inTransaction
- * @return
- */
- public Either<ComponentMetadataData, StorageOperationStatus> updateComponentLastUpdateDateOnGraph( Component component, NodeTypeEnum componentType, Long lastUpdateDate, boolean inTransaction) {
-
- log.debug("Going to update last update date of component {}. ", component.getName());
- Either<ComponentMetadataData, StorageOperationStatus> result = null;
- try{
- ComponentMetadataData componentData = getMetaDataFromComponent(component);
- Either<ComponentMetadataData, TitanOperationStatus> updateNode = null;
- if(result == null){
- log.debug("Going to update the component {} with new last update date. ", component.getName());
- componentData.getMetadataDataDefinition().setLastUpdateDate(lastUpdateDate);
- updateNode = titanGenericDao.updateNode(componentData, ComponentMetadataData.class);
- if (updateNode.isRight()) {
- log.error("Failed to update component {}. status is {}", component.getUniqueId(), updateNode.right().value());
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(updateNode.right().value()));
- }
- }
- if(result == null){
- result = Either.left(updateNode.left().value());
- }
- }catch(Exception e){
- log.error("Exception occured during update last update date of component {}. The message is {}. ", component.getName(), e.getMessage());
- }finally {
- if(!inTransaction){
- if (result == null || result.isRight()) {
- log.error("Going to execute rollback on graph.");
- titanGenericDao.rollback();
- } else {
- log.debug("Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
- return result;
- }
-}
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/GraphLockOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/GraphLockOperation.java
index 89f8f71e2a..a47f7cfdef 100644
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/GraphLockOperation.java
+++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/GraphLockOperation.java
@@ -40,7 +40,7 @@ import fj.data.Either;
@Component("graph-lock-operation")
public class GraphLockOperation implements IGraphLockOperation {
- private static Logger log = LoggerFactory.getLogger(ResourceOperation.class.getName());
+ private static Logger log = LoggerFactory.getLogger(GraphLockOperation.class.getName());
@javax.annotation.Resource
private TitanGenericDao titanGenericDao;
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/GroupInstanceOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/GroupInstanceOperation.java
index d282ecfae9..4ffea48dee 100644
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/GroupInstanceOperation.java
+++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/GroupInstanceOperation.java
@@ -20,18 +20,11 @@
package org.openecomp.sdc.be.model.operations.impl;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-import java.util.function.Supplier;
-import java.util.stream.Collectors;
-
+import com.thinkaurelius.titan.core.TitanGraph;
+import com.thinkaurelius.titan.core.TitanVertex;
+import fj.data.Either;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.MapUtils;
-import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.tinkerpop.gremlin.structure.Direction;
import org.apache.tinkerpop.gremlin.structure.Edge;
@@ -39,64 +32,51 @@ import org.apache.tinkerpop.gremlin.structure.Vertex;
import org.apache.tinkerpop.gremlin.structure.VertexProperty;
import org.openecomp.sdc.be.config.BeEcompErrorManager;
import org.openecomp.sdc.be.config.BeEcompErrorManager.ErrorSeverity;
-import org.openecomp.sdc.be.dao.graph.GraphElementFactory;
import org.openecomp.sdc.be.dao.graph.datatype.GraphEdge;
-import org.openecomp.sdc.be.dao.graph.datatype.GraphElementTypeEnum;
import org.openecomp.sdc.be.dao.graph.datatype.GraphNode;
import org.openecomp.sdc.be.dao.graph.datatype.GraphRelation;
import org.openecomp.sdc.be.dao.neo4j.GraphEdgeLabels;
-
import org.openecomp.sdc.be.dao.neo4j.GraphPropertiesDictionary;
import org.openecomp.sdc.be.dao.titan.TitanGenericDao;
import org.openecomp.sdc.be.dao.titan.TitanOperationStatus;
-import org.openecomp.sdc.be.dao.utils.Constants;
import org.openecomp.sdc.be.datatypes.elements.GroupInstanceDataDefinition;
import org.openecomp.sdc.be.datatypes.elements.PropertyDataDefinition;
import org.openecomp.sdc.be.datatypes.elements.SchemaDefinition;
import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
-
-import org.openecomp.sdc.be.model.ArtifactDefinition;
-
-import org.openecomp.sdc.be.model.ComponentInstance;
-
import org.openecomp.sdc.be.model.ComponentInstanceProperty;
import org.openecomp.sdc.be.model.DataTypeDefinition;
import org.openecomp.sdc.be.model.GroupDefinition;
import org.openecomp.sdc.be.model.GroupInstance;
import org.openecomp.sdc.be.model.GroupInstanceProperty;
import org.openecomp.sdc.be.model.GroupProperty;
-import org.openecomp.sdc.be.model.GroupTypeDefinition;
import org.openecomp.sdc.be.model.IComponentInstanceConnectedElement;
import org.openecomp.sdc.be.model.cache.ApplicationDataTypeCache;
import org.openecomp.sdc.be.model.operations.api.IGroupInstanceOperation;
import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
-
import org.openecomp.sdc.be.model.tosca.ToscaPropertyType;
import org.openecomp.sdc.be.resources.data.ArtifactData;
-import org.openecomp.sdc.be.resources.data.AttributeValueData;
-import org.openecomp.sdc.be.resources.data.ComponentInstanceData;
-import org.openecomp.sdc.be.resources.data.GroupData;
import org.openecomp.sdc.be.resources.data.GroupInstanceData;
import org.openecomp.sdc.be.resources.data.PropertyData;
import org.openecomp.sdc.be.resources.data.PropertyValueData;
import org.openecomp.sdc.be.resources.data.UniqueIdData;
import org.openecomp.sdc.common.datastructure.Wrapper;
import org.openecomp.sdc.common.util.ValidationUtils;
-import org.openecomp.sdc.exception.ResponseFormat;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
-import com.thinkaurelius.titan.core.TitanGraph;
-import com.thinkaurelius.titan.core.TitanVertex;
-
-import fj.data.Either;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+import java.util.function.Supplier;
+import java.util.stream.Collectors;
@org.springframework.stereotype.Component("group-instance-operation")
public class GroupInstanceOperation extends AbstractOperation implements IGroupInstanceOperation {
- private static String ADDING_GROUP = "AddingGroupInstance";
-
private static Logger log = LoggerFactory.getLogger(GroupInstanceOperation.class.getName());
@Autowired
@@ -110,72 +90,6 @@ public class GroupInstanceOperation extends AbstractOperation implements IGroupI
@javax.annotation.Resource
private ApplicationDataTypeCache dataTypeCache;
- @Override
- public Either<GroupInstance, StorageOperationStatus> createGroupInstance(String componentInstId, GroupInstance groupInstance, boolean isCreateLogicalName) {
- Either<GroupInstance, StorageOperationStatus> result = null;
-
- if (!ValidationUtils.validateStringNotEmpty(groupInstance.getCustomizationUUID())) {
- generateCustomizationUUID(groupInstance);
- }
-
- Either<GroupInstance, TitanOperationStatus> addRes = addGroupInstanceToComponentInstance(componentInstId, isCreateLogicalName, groupInstance);
- if (addRes.isRight()) {
- TitanOperationStatus status = addRes.right().value();
- log.error("Failed to add resource instance {} to service {}. status is {}", groupInstance, componentInstId, status);
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
-
- GroupInstance value = addRes.left().value();
- result = Either.left(value);
-
- return result;
-
- }
-
- @Override
- public Either<GroupInstance, StorageOperationStatus> createGroupInstance(TitanVertex ciVertex, String componentInstId, GroupInstance groupInstance, boolean isCreateLogicalName) {
- Either<GroupInstance, StorageOperationStatus> result = null;
-
- if (!ValidationUtils.validateStringNotEmpty(groupInstance.getCustomizationUUID())) {
- generateCustomizationUUID(groupInstance);
- }
-
- Either<TitanVertex, TitanOperationStatus> addComponentInstanceToContainerComponent = addGroupInstanceToContainerComponent(ciVertex, componentInstId, isCreateLogicalName, groupInstance);
-
- if (addComponentInstanceToContainerComponent.isRight()) {
- TitanOperationStatus status = addComponentInstanceToContainerComponent.right().value();
- if (status == TitanOperationStatus.NOT_FOUND) {
- status = TitanOperationStatus.INVALID_ID;
- }
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- }
- TitanVertex giVertex = addComponentInstanceToContainerComponent.left().value();
- Map<String, Object> properties = titanGenericDao.getProperties(giVertex);
- GroupInstanceData createdGroupInstanceData = GraphElementFactory.createElement(NodeTypeEnum.GroupInstance.getName(), GraphElementTypeEnum.Node, properties, GroupInstanceData.class);
-
- GroupInstance createdGroupInstance = new GroupInstance(createdGroupInstanceData.getGroupDataDefinition());
- createdGroupInstance.setGroupName(groupInstance.getGroupName());
-
- createdGroupInstance.setArtifacts(groupInstance.getArtifacts());
-
- result = Either.left(createdGroupInstance);
-
- return result;
-
- }
-
- @Override
- public Either<GroupInstance, StorageOperationStatus> deleteGroupInstanceInstance(NodeTypeEnum containerNodeType, String containerComponentId, String groupInstUid) {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public Either<GroupInstance, StorageOperationStatus> updateGroupInstance(String serviceId, NodeTypeEnum nodeType, String resourceInstanceName, ComponentInstance resourceInstance) {
- // TODO Auto-generated method stub
- return null;
- }
@Override
public Either<List<GroupInstance>, StorageOperationStatus> getAllGroupInstances(String parentId, NodeTypeEnum parentType) {
@@ -275,55 +189,6 @@ public class GroupInstanceOperation extends AbstractOperation implements IGroupI
}
@Override
- public Either<GroupInstance, TitanOperationStatus> getGroupInstanceById(String groupResourceId) {
- // TODO Auto-generated method stub
- return getGroupInstanceFromGraph(groupResourceId, false, false);
- }
-
- @Override
- public TitanOperationStatus deleteAllGroupInstances(String componentInstId) {
-
- return deleteAssociatedGroupInstances(componentInstId);
- }
-
- private TitanOperationStatus deleteAssociatedGroupInstances(String resourceInstanceUid) {
- final GraphEdgeLabels edgeConectingToRI = GraphEdgeLabels.GROUP_INST;
- final NodeTypeEnum elementTypeToDelete = NodeTypeEnum.GroupInstance;
- return deleteAssociatedRIElements(elementTypeToDelete, edgeConectingToRI, resourceInstanceUid, () -> GroupInstanceData.class);
- }
-
- private <T extends GraphNode> TitanOperationStatus deleteAssociatedRIElements(NodeTypeEnum elementTypeToDelete, GraphEdgeLabels edgeConectingToRI, String resourceInstanceUid, Supplier<Class<T>> classGen) {
-
- Either<List<ImmutablePair<T, GraphEdge>>, TitanOperationStatus> elementsNodesRes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceInstance), resourceInstanceUid, edgeConectingToRI, elementTypeToDelete,
- classGen.get());
-
- if (elementsNodesRes.isRight()) {
- TitanOperationStatus status = elementsNodesRes.right().value();
- if (status != TitanOperationStatus.NOT_FOUND) {
- BeEcompErrorManager.getInstance().logInternalFlowError("deleteAssociatedRIElements", "Failed to find the elements of resource instance " + resourceInstanceUid + ". status is " + status, ErrorSeverity.ERROR);
- return status;
- }
- } else {
-
- List<ImmutablePair<T, GraphEdge>> relationshipNodes = elementsNodesRes.left().value();
- if (relationshipNodes != null) {
- for (ImmutablePair<T, GraphEdge> immutablePair : relationshipNodes) {
- T elementValueDataData = immutablePair.getKey();
- Either<T, TitanOperationStatus> deleteNode = titanGenericDao.deleteNode(elementValueDataData, classGen.get());
- if (deleteNode.isRight()) {
- TitanOperationStatus status = deleteNode.right().value();
- BeEcompErrorManager.getInstance().logInternalFlowError("deleteAssociatedRIElements", "Failed to delete element value node " + elementValueDataData + ". status is " + status, ErrorSeverity.ERROR);
- return status;
- }
- }
- }
-
- }
-
- return TitanOperationStatus.OK;
- }
-
- @Override
public Either<Integer, StorageOperationStatus> increaseAndGetGroupInstancePropertyCounter(String groupInstanceId) {
Either<Integer, StorageOperationStatus> result = null;
@@ -361,18 +226,6 @@ public class GroupInstanceOperation extends AbstractOperation implements IGroupI
}
@Override
- public Either<Boolean, StorageOperationStatus> isGroupInstanceNameExist(String parentComponentId, NodeTypeEnum parentNodeType, String compInstId, String componentInstName) {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public Either<ComponentInstance, StorageOperationStatus> getFullGroupInstance(ComponentInstance componentInstance, NodeTypeEnum compInstNodeType) {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
public Either<ComponentInstanceProperty, StorageOperationStatus> addPropertyValueToGroupInstance(ComponentInstanceProperty groupInstanceProperty, String groupInstanceId, Integer index, boolean inTransaction) {
/// #RULES SUPPORT
/// Ignore rules received from client till support
@@ -425,38 +278,12 @@ public class GroupInstanceOperation extends AbstractOperation implements IGroupI
}
@Override
- public Either<ComponentInstanceProperty, StorageOperationStatus> addPropertyValueToGroupInstance(ComponentInstanceProperty resourceInstanceProperty, String resourceInstanceId, boolean isvalidate, Integer index, boolean inTransaction) {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
public Either<ComponentInstanceProperty, StorageOperationStatus> updatePropertyValueInGroupInstance(ComponentInstanceProperty gropuInstanceProperty, String groupInstanceId, boolean inTransaction) {
// TODO Auto-generated method stub
// change Propety class
return null;
}
- @Override
- public Either<Map<String, ArtifactDefinition>, StorageOperationStatus> fetchCIEnvArtifacts(String componentInstanceId) {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public StorageOperationStatus updateCustomizationUUID(String groupInstanceId) {
- Either<TitanVertex, TitanOperationStatus> vertexByProperty = titanGenericDao.getVertexByProperty(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), groupInstanceId);
- if (vertexByProperty.isRight()) {
- log.debug("Failed to fetch component instance by id {} error {}", groupInstanceId, vertexByProperty.right().value());
- return DaoStatusConverter.convertTitanStatusToStorageStatus(vertexByProperty.right().value());
- }
- UUID uuid = UUID.randomUUID();
- TitanVertex ciVertex = vertexByProperty.left().value();
- ciVertex.property(GraphPropertiesDictionary.CUSTOMIZATION_UUID.getProperty(), uuid.toString());
-
- return StorageOperationStatus.OK;
- }
-
public void generateCustomizationUUID(GroupInstance groupInstance) {
UUID uuid = UUID.randomUUID();
groupInstance.setCustomizationUUID(uuid.toString());
@@ -465,8 +292,6 @@ public class GroupInstanceOperation extends AbstractOperation implements IGroupI
/**
* add property to resource instance
*
- * @param resourceInstanceProperty
- * @param resourceInstanceId
* @param index
* @return
*/
@@ -608,242 +433,7 @@ public class GroupInstanceOperation extends AbstractOperation implements IGroupI
}
- public Either<ComponentInstanceProperty, TitanOperationStatus> addPropertyToResourceInstance(ComponentInstanceProperty groupInstanceProperty, TitanVertex groupInstanceVertex, Integer index, String groupInstanceId) {
-
- String propertyId = groupInstanceProperty.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);
- }
-
- String valueUniqueUid = groupInstanceProperty.getValueUniqueUid();
- if (valueUniqueUid == null) {
-
- PropertyData propertyData = findPropertyDefRes.left().value();
-
- ImmutablePair<TitanOperationStatus, String> isPropertyValueExists = propertyOperation.findPropertyValue(groupInstanceId, propertyId);
- if (isPropertyValueExists.getLeft() == TitanOperationStatus.ALREADY_EXIST) {
- log.trace("The property {} already added to the resource instance {}", propertyId, groupInstanceId);
- groupInstanceProperty.setValueUniqueUid(isPropertyValueExists.getRight());
- Either<PropertyValueData, TitanOperationStatus> updatePropertyOfResourceInstance = updatePropertyOfGroupInstance(groupInstanceProperty, groupInstanceId);
- if (updatePropertyOfResourceInstance.isRight()) {
- BeEcompErrorManager.getInstance().logInternalFlowError("UpdatePropertyValueOnComponentInstance", "Failed to update property value on instance. Status is " + updatePropertyOfResourceInstance.right().value(), ErrorSeverity.ERROR);
- return Either.right(updatePropertyOfResourceInstance.right().value());
- }
- return Either.right(TitanOperationStatus.OK);
- }
-
- if (isPropertyValueExists.getLeft() != TitanOperationStatus.NOT_FOUND) {
- log.trace("After finding property value of {} on componenet instance {}", propertyId, groupInstanceId);
- return Either.right(isPropertyValueExists.getLeft());
- }
-
- String innerType = null;
-
- PropertyDataDefinition propDataDef = propertyData.getPropertyDataDefinition();
- String propertyType = propDataDef.getType();
- String value = groupInstanceProperty.getValue();
- ToscaPropertyType type = ToscaPropertyType.isValidType(propertyType);
-
- if (type == ToscaPropertyType.LIST || type == ToscaPropertyType.MAP) {
- SchemaDefinition def = propDataDef.getSchema();
- if (def == null) {
- log.debug("Schema doesn't exists for property of type {}", type);
- return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT);
- }
- PropertyDataDefinition propDef = def.getProperty();
- if (propDef == null) {
- log.debug("Property in Schema Definition inside property of type {} doesn't exist", type);
- return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT);
- }
- innerType = propDef.getType();
- }
-
- log.trace("Before validateAndUpdatePropertyValue");
- Either<Map<String, DataTypeDefinition>, TitanOperationStatus> allDataTypes = dataTypeCache.getAll();
- if (allDataTypes.isRight()) {
- TitanOperationStatus status = allDataTypes.right().value();
- BeEcompErrorManager.getInstance().logInternalFlowError("UpdatePropertyValueOnComponentInstance", "Failed to update property value on instance. Status is " + status, ErrorSeverity.ERROR);
- return Either.right(status);
- }
- Either<Object, Boolean> isValid = propertyOperation.validateAndUpdatePropertyValue(propertyType, value, innerType, allDataTypes.left().value());
- log.trace("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.buildResourceInstancePropertyValueUid(groupInstanceId, index);
- PropertyValueData propertyValueData = new PropertyValueData();
- propertyValueData.setUniqueId(uniqueId);
- propertyValueData.setValue(newValue);
-
- log.trace("Before validateAndUpdateRules");
- ImmutablePair<String, Boolean> pair = propertyOperation.validateAndUpdateRules(propertyType, groupInstanceProperty.getRules(), innerType, allDataTypes.left().value(), false);
- log.debug("After validateAndUpdateRules. pair = {} ", pair);
- if (pair.getRight() != null && pair.getRight() == false) {
- BeEcompErrorManager.getInstance().logBeInvalidValueError("Add property value", pair.getLeft(), groupInstanceProperty.getName(), propertyType);
- return Either.right(TitanOperationStatus.ILLEGAL_ARGUMENT);
- }
- propertyOperation.addRulesToNewPropertyValue(propertyValueData, groupInstanceProperty, groupInstanceId);
-
- log.trace("Before adding property value to graph {}", propertyValueData);
- Either<PropertyValueData, TitanOperationStatus> createNodeResult = titanGenericDao.createNode(propertyValueData, PropertyValueData.class);
- log.trace("After adding property value to graph {}", propertyValueData);
-
- if (createNodeResult.isRight()) {
- TitanOperationStatus operationStatus = createNodeResult.right().value();
- return Either.right(operationStatus);
- }
- propertyValueData = createNodeResult.left().value();
-
- Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(propertyValueData, propertyData, GraphEdgeLabels.PROPERTY_IMPL, null);
-
- if (createRelResult.isRight()) {
- TitanOperationStatus operationStatus = createRelResult.right().value();
- log.error("Failed to associate property value {} to property {} in graph. status is {}", uniqueId, propertyId, operationStatus);
- return Either.right(operationStatus);
- }
-
- TitanOperationStatus edgeResult = titanGenericDao.createEdge(groupInstanceVertex, propertyValueData, GraphEdgeLabels.PROPERTY_VALUE, null);
-
- if (edgeResult != TitanOperationStatus.OK) {
- log.error("Failed to associate resource instance {} property value {} in graph. status is {}", groupInstanceId, uniqueId, edgeResult);
- return Either.right(edgeResult);
- }
-
- ComponentInstanceProperty propertyValueResult = propertyOperation.buildResourceInstanceProperty(propertyValueData, groupInstanceProperty);
- log.debug("The returned ResourceInstanceProperty is {} ", propertyValueResult);
-
- return Either.left(propertyValueResult);
- } else {
- log.debug("property value already exists.");
- return Either.right(TitanOperationStatus.ALREADY_EXIST);
- }
-
- }
-
- public Either<GroupInstance, TitanOperationStatus> addGroupInstanceToComponentInstance(String componentInstanceId, boolean isCreateLogicaName, GroupInstance groupInstance) {
- log.debug("Going to create group instance {} in componentInstance {}", groupInstance, componentInstanceId);
- Either<TitanVertex, TitanOperationStatus> metadataVertex = titanGenericDao.getVertexByProperty(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), componentInstanceId);
- if (metadataVertex.isRight()) {
- TitanOperationStatus status = metadataVertex.right().value();
- if (status == TitanOperationStatus.NOT_FOUND) {
- status = TitanOperationStatus.INVALID_ID;
- }
- return Either.right(status);
- }
- Either<TitanVertex, TitanOperationStatus> addComponentInstanceToContainerComponent = addGroupInstanceToContainerComponent(metadataVertex.left().value(), componentInstanceId, isCreateLogicaName, groupInstance);
-
- if (addComponentInstanceToContainerComponent.isRight()) {
- TitanOperationStatus status = addComponentInstanceToContainerComponent.right().value();
- if (status == TitanOperationStatus.NOT_FOUND) {
- status = TitanOperationStatus.INVALID_ID;
- }
- return Either.right(status);
- }
- TitanVertex ciVertex = addComponentInstanceToContainerComponent.left().value();
- Map<String, Object> properties = titanGenericDao.getProperties(ciVertex);
- GroupInstanceData createdComponentInstance = GraphElementFactory.createElement(NodeTypeEnum.GroupInstance.getName(), GraphElementTypeEnum.Node, properties, GroupInstanceData.class);
-
- GroupInstance createdResourceInstance = new GroupInstance(createdComponentInstance.getGroupDataDefinition());
-
- return Either.left(createdResourceInstance);
-
- }
-
- /**
- *
- * @param containerComponentId
- * @param containerNodeType
- * @param instanceNumber
- * @param isCreateLogicaName
- * @param componentInstance
- * @param compInstNodeType
- * @param metadataVertex
- * @return
- */
- public Either<TitanVertex, TitanOperationStatus> addGroupInstanceToContainerComponent(TitanVertex ciVertex, String componentInstanceId, boolean isCreateLogicaName, GroupInstance groupInstance) {
- TitanOperationStatus status = null;
- log.debug("Going to create group instance {} in component instance {}", groupInstance, componentInstanceId);
- String instOriginGroupId = groupInstance.getGroupUid();
- String logicalName = groupInstance.getName();
- if (isCreateLogicaName){
- String instanceName = (String) titanGenericDao.getProperty(ciVertex, GraphPropertiesDictionary.NORMALIZED_NAME.getProperty());
- logicalName = createGroupInstLogicalName(instanceName, groupInstance.getGroupName());
- }
-
- GroupInstanceData groupInstanceData = buildGroupInstanceData(groupInstance, componentInstanceId, logicalName);
- Either<TitanVertex, TitanOperationStatus> originVertexEither = titanGenericDao.getVertexByProperty(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), instOriginGroupId);
- if (originVertexEither.isRight()) {
- log.debug("Failed to fetch vertex of origin resource for id {} error {}", instOriginGroupId, originVertexEither.right().value());
- return Either.right(originVertexEither.right().value());
- }
- TitanVertex originVertex = originVertexEither.left().value();
-
- // String originType = (String) titanGenericDao.getProperty(originVertex, GraphPropertiesDictionary.LABEL.getProperty());
- String groupType = (String) titanGenericDao.getProperty(originVertex, GraphPropertiesDictionary.TYPE.getProperty());
- // detectOriginType(originType, groupInstanceData, resourceType);
-
- log.trace("Before adding component instance to graph. componentInstanceData = {}", groupInstanceData);
- // groupInstanceData.getGroupDataDefinition().setGroupUid(groupType);
-
- Either<TitanVertex, TitanOperationStatus> createGIResult = titanGenericDao.createNode(groupInstanceData);
-
- log.debug("After adding component instance to graph. status is = {}", createGIResult);
-
- if (createGIResult.isRight()) {
- status = createGIResult.right().value();
- BeEcompErrorManager.getInstance().logBeDaoSystemError("Add Component Instance");
- log.debug("Failed to create group instance node in graph. status is {}", status);
- return Either.right(status);
- }
- TitanVertex createdGroupInstanceVertex = createGIResult.left().value();
- TitanOperationStatus associateContainerRes = associateComponentInstanceToGroupInstance(ciVertex, createdGroupInstanceVertex, logicalName);
-
- String componentInstanceUniqueId = groupInstanceData.getUniqueId();
- if (associateContainerRes != TitanOperationStatus.OK) {
- BeEcompErrorManager.getInstance().logBeDaoSystemError("Add Component Instance");
- log.debug("Failed to associate container component {} to component instance {}. Status is {}", componentInstanceId, componentInstanceUniqueId, associateContainerRes);
- return Either.right(associateContainerRes);
- }
- // String originId = (String) titanGenericDao.getProperty(createdGroupInstanceVertex, GraphPropertiesDictionary.TYPE.getProperty());
-
- TitanOperationStatus associateToInstOriginComponent = associateToInstOriginGroup(createdGroupInstanceVertex, originVertex, instOriginGroupId);
- if (associateToInstOriginComponent != TitanOperationStatus.OK) {
- BeEcompErrorManager.getInstance().logBeDaoSystemError("Add Component Instance");
- log.debug("Failed to associate component instance {} to its origin component {}. Status is {}", componentInstanceUniqueId, groupInstanceData.getGroupDataDefinition().getGroupUid(), associateToInstOriginComponent);
- return Either.right(associateToInstOriginComponent);
- }
-
- // Capability instance with property values implementation
-
- if (status == null) {
- // ComponentInstance createdResourceInstance = new
- // ComponentInstance(createdComponentInstance.getComponentInstDataDefinition());
- //
- // String icon = (String) titanGenericDao.getProperty(originVertex,
- // GraphPropertiesDictionary.ICON.getProperty());
- // createdResourceInstance.setIcon(icon);
- return Either.left(createdGroupInstanceVertex);
- }
- return Either.right(status);
- }
private GroupInstanceData buildGroupInstanceData(GroupInstance groupInstance, String componentInstanceId, String logicalName) {
String ciOriginComponentUid = groupInstance.getGroupUid();
@@ -869,119 +459,9 @@ public class GroupInstanceOperation extends AbstractOperation implements IGroupI
return resourceInstanceData;
}
- @Override
- public String createGroupInstLogicalName(String instanceName, String groupName) {
-
- String logicalName = buildGroupInstanceLogicalName(instanceName, groupName);
-
- return logicalName;
- }
-
- private String buildGroupInstanceLogicalName(String instanceName, String groupName) {
- return ValidationUtils.normalizeComponentInstanceName(instanceName) + ".." + groupName;
- }
-
- /**
- * Make a relation between service to resource instance.
- *
- * @param containerCompIdData
- * @param componentInstanceData
- * @param logicalName
- * @return
- */
- private Either<GraphRelation, TitanOperationStatus> associateComponentInstanceToGroupInstance(UniqueIdData compInstIdData, GroupInstanceData groupInstanceData, String logicalName) {
- Map<String, Object> properties = new HashMap<String, Object>();
-
- properties.put(GraphPropertiesDictionary.NAME.getProperty(), logicalName);
- Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(compInstIdData, groupInstanceData, GraphEdgeLabels.GROUP_INST, properties);
-
- log.debug("After associating container component {} to resource instance {} with logical name {}. Status is {}", compInstIdData.getUniqueId(), groupInstanceData.getUniqueId(), logicalName, createRelation);
-
- return createRelation;
- }
-
- private TitanOperationStatus associateComponentInstanceToGroupInstance(TitanVertex componentInstVertex, TitanVertex groupInstanceVertex, String logicalName) {
- Map<String, Object> properties = new HashMap<String, Object>();
-
- properties.put(GraphPropertiesDictionary.NAME.getProperty(), logicalName);
- TitanOperationStatus createRelation = titanGenericDao.createEdge(componentInstVertex, groupInstanceVertex, GraphEdgeLabels.GROUP_INST, properties);
-
- return createRelation;
- }
-
- private Either<GraphRelation, TitanOperationStatus> associateToInstOriginGroup(GroupInstanceData groupInstanceData, NodeTypeEnum compInstNodeType) {
-
- UniqueIdData groupIdData = new UniqueIdData(compInstNodeType, groupInstanceData.getGroupDataDefinition().getGroupUid());
-
- Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(groupInstanceData, groupIdData, GraphEdgeLabels.INSTANCE_OF, null);
-
- log.debug("After associating group instance {} to group {}. status is {}", groupInstanceData.getUniqueId(), groupInstanceData.getGroupDataDefinition().getGroupUid(), createRelation);
-
- return createRelation;
- }
-
- private TitanOperationStatus associateToInstOriginGroup(TitanVertex groupInstanceVertex, TitanVertex originVertex, String originId) {
-
- TitanOperationStatus createRelation = titanGenericDao.createEdge(groupInstanceVertex, originVertex, GraphEdgeLabels.INSTANCE_OF, null);
-
- log.debug("After associating group instance {} to group {}. status is {}", groupInstanceVertex, originId, createRelation);
-
- return createRelation;
- }
-
- public Either<List<GroupProperty>, TitanOperationStatus> getGroupInstanceProperties(GroupInstance groupInstance, GroupDefinition groupDefinition) {
-
- // 1. Go over each instance
- // 1.1 get all properties of from the parents of the instance
- // 1.2 get all updated properties
- // 1.3 find all instances included in the parent of this instance and
- // run this method on them.
- String groupInstanceId = groupInstance.getUniqueId();
- if (log.isDebugEnabled())
- log.debug("Going to update properties of group instance {}", groupInstanceId);
- String groupUid = groupInstance.getGroupUid();
- List<GroupProperty> properties = groupDefinition.convertToGroupProperties();
-
- if (log.isDebugEnabled())
- log.debug("After getting properties of group {} . Number of properties is {}", groupUid, (properties == null ? 0 : properties.size()));
- List<GroupProperty> resourceInstancePropertyList = new ArrayList<>();
- if (properties != null && false == properties.isEmpty()) {
-
- // TODO: WE MAY HAVE INDIRECT PROPERTY VALUE ALSO IN CASE NO
- // PROPERTY ON THIS COMPONENT
-
- // String resourceInstanceUid = resourceInstance.getUniqueId();
-
- for (GroupProperty propertyDefinition : properties) {
-
- String defaultValue = propertyDefinition.getDefaultValue();
- String value = defaultValue;
- String valueUid = null;
-
- // String propertyId = propertyDefinition.getUniqueId();
-
- GroupProperty resourceInstanceProperty = new GroupProperty(propertyDefinition, value, valueUid);
-
- // resourceInstanceProperty.setPath(cloneList(path));
-
- // TODO: currently ignore constraints since they are not inuse
- // and cause to error in convertion to object.
- resourceInstanceProperty.setConstraints(null);
-
- resourceInstancePropertyList.add(resourceInstanceProperty);
-
- }
-
- }
-
- return Either.left(resourceInstancePropertyList);
- }
-
/**
* update value of attribute on resource instance
*
- * @param resourceInstanceProerty
- * @param resourceInstanceId
* @return
*/
public Either<PropertyValueData, TitanOperationStatus> updatePropertyOfGroupInstance(ComponentInstanceProperty groupInstanceProerty, String groupInstanceId) {
@@ -1207,68 +687,7 @@ public class GroupInstanceOperation extends AbstractOperation implements IGroupI
}
}
- /**
- * Associate artifacts to a given group
- *
- * @param groupId
- * @param artifactsId
- * @param inTransaction
- * @return
- */
- public Either<GroupInstance, StorageOperationStatus> associateArtifactsToGroupInstance(String groupId, List<String> artifactsId) {
-
- Either<GroupInstance, StorageOperationStatus> result = null;
-
- Either<GroupInstance, TitanOperationStatus> titanRes = this.associateArtifactsToGroupInstanceOnGraph(groupId, artifactsId);
-
- if (titanRes.isRight()) {
- StorageOperationStatus status = DaoStatusConverter.convertTitanStatusToStorageStatus(titanRes.right().value());
- result = Either.right(status);
- }
-
- result = Either.left(titanRes.left().value());
- return result;
-
- }
-
- public Either<GroupInstance, TitanOperationStatus> associateArtifactsToGroupInstanceOnGraph(String groupInstanceId, 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 " + groupInstanceId + " 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.GroupInstance, groupInstanceId);
- 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<GroupInstance, TitanOperationStatus> groupFromGraph = this.getGroupInstanceFromGraph(groupInstanceId, true, false);
-
- return groupFromGraph;
- }
-
- public Either<GroupInstance, TitanOperationStatus> getGroupInstanceFromGraph(String uniqueId, boolean skipProperties, boolean skipArtifacts) {
+ private Either<GroupInstance, TitanOperationStatus> getGroupInstanceFromGraph(String uniqueId, boolean skipProperties, boolean skipArtifacts) {
Either<GroupInstance, TitanOperationStatus> result = null;
@@ -1337,20 +756,20 @@ public class GroupInstanceOperation extends AbstractOperation implements IGroupI
private void buildGroupInstanceFromGroup(GroupInstance groupInstance, GroupDefinition groupDefinition, Map<String, PropertyValueData> groupInstancePropertyValues) {
- groupInstance.setGroupName(groupDefinition.getName());
- groupInstance.setInvariantUUID(groupDefinition.getInvariantUUID());
- groupInstance.setDescription(groupDefinition.getDescription());
- groupInstance.setVersion(groupDefinition.getVersion());
- groupInstance.setArtifacts(groupDefinition.getArtifacts());
- groupInstance.setArtifactsUuid(groupDefinition.getArtifactsUuid());
- groupInstance.setType(groupDefinition.getType());
- groupInstance.setGroupUUID(groupDefinition.getGroupUUID());
-
- List<GroupInstanceProperty> groupInstanceProperties = groupDefinition.convertToGroupProperties()
- //converts List of GroupProperties to List of GroupInstanceProperties and updates it with group instance property data
- .stream().map(p->getUpdatedConvertedProperty(p, groupInstancePropertyValues)).collect(Collectors.toList());
- groupInstance.convertFromGroupInstancesProperties(groupInstanceProperties);
-}
+ groupInstance.setGroupName(groupDefinition.getName());
+ groupInstance.setInvariantUUID(groupDefinition.getInvariantUUID());
+ groupInstance.setDescription(groupDefinition.getDescription());
+ groupInstance.setVersion(groupDefinition.getVersion());
+ groupInstance.setArtifacts(groupDefinition.getArtifacts());
+ groupInstance.setArtifactsUuid(groupDefinition.getArtifactsUuid());
+ groupInstance.setType(groupDefinition.getType());
+ groupInstance.setGroupUUID(groupDefinition.getGroupUUID());
+
+ List<GroupInstanceProperty> groupInstanceProperties = groupDefinition.convertToGroupProperties()
+ //converts List of GroupProperties to List of GroupInstanceProperties and updates it with group instance property data
+ .stream().map(p -> getUpdatedConvertedProperty(p, groupInstancePropertyValues)).collect(Collectors.toList());
+ groupInstance.convertFromGroupInstancesProperties(groupInstanceProperties);
+ }
private GroupInstanceProperty getUpdatedConvertedProperty(GroupProperty groupProperty, Map<String, PropertyValueData> groupInstancePropertyValues){
@@ -1401,14 +820,11 @@ public class GroupInstanceOperation extends AbstractOperation implements IGroupI
@Override
public StorageOperationStatus dissociateAndAssociateGroupsInstanceFromArtifact(String componentId, NodeTypeEnum componentTypeEnum, String oldArtifactId, ArtifactData newArtifact) {
- StorageOperationStatus result = null;
-
return this.dissociateAndAssociateGroupsInstanceFromArtifactOnGraph(componentId, componentTypeEnum, oldArtifactId, newArtifact);
}
- @Override
- public StorageOperationStatus dissociateAndAssociateGroupsInstanceFromArtifactOnGraph(String componentId, NodeTypeEnum componentTypeEnum, String oldArtifactId, ArtifactData newArtifact) {
+ private StorageOperationStatus dissociateAndAssociateGroupsInstanceFromArtifactOnGraph(String componentId, NodeTypeEnum componentTypeEnum, String oldArtifactId, ArtifactData newArtifact) {
Either<List<GroupInstance>, StorageOperationStatus> allGroupsFromGraph = getAllGroupInstances(componentId, componentTypeEnum);
if (allGroupsFromGraph.isRight()) {
@@ -1461,212 +877,6 @@ public class GroupInstanceOperation extends AbstractOperation implements IGroupI
return StorageOperationStatus.OK;
}
- @Override
- public Either<GroupInstance, StorageOperationStatus> updateGroupInstancePropertyValues(GroupInstance oldGroupInstance, List<GroupInstanceProperty> newProperties, Boolean inTransaction) {
-
- Either<GroupInstance, StorageOperationStatus> updateRes = Either.left(oldGroupInstance);
- try{
- if(!CollectionUtils.isEmpty(newProperties)){
- updateRes = updateGroupInstancePropertyValuesOnGraph(oldGroupInstance, newProperties);
- }
- }catch(Exception e){
- log.debug("The Exception occured during update of group instance {} property values. The message is {}. ", oldGroupInstance.getName(), e.getMessage(), e);
- updateRes = Either.right(StorageOperationStatus.GENERAL_ERROR);
- }finally {
- handleTransactionCommitRollback(inTransaction, updateRes);
- }
- return updateRes;
- }
-
- private Either<GroupInstance, StorageOperationStatus> updateGroupInstancePropertyValuesOnGraph( GroupInstance oldGroupInstance, List<GroupInstanceProperty> newProperties ) {
- Either<GroupInstance, StorageOperationStatus> updateRes = null;
- Either<Integer, StorageOperationStatus> nodeUpdateRes = null;
- Vertex groupInstanceVertex = null;
- Either<Vertex, StorageOperationStatus> groupInstanceVertexRes;
- Map<String, Vertex> existingPropertyValueVertices = new HashMap<>();
- Map<String, Vertex> existingPropertyVertices = new HashMap<>();
- groupInstanceVertexRes = getVertexFromGraph(GraphPropertiesDictionary.UNIQUE_ID.getProperty(),oldGroupInstance.getUniqueId());
- try{
- if (groupInstanceVertexRes.isRight()) {
- log.debug("Failed to fetch group instance vertex {} from graph. ", oldGroupInstance.getName());
- updateRes = Either.right(groupInstanceVertexRes.right().value());
- } else {
- groupInstanceVertex = groupInstanceVertexRes.left().value();
- findExistingPropertyValueVertices(groupInstanceVertex, existingPropertyValueVertices);
- nodeUpdateRes = handlePropertyValues(oldGroupInstance, oldGroupInstance.getPropertyValueCounter(), newProperties, groupInstanceVertex, existingPropertyValueVertices, existingPropertyVertices);
- if(nodeUpdateRes.isRight()){
- log.debug("Failed to handle property values of group instance {}. ", oldGroupInstance.getName());
- updateRes = Either.right(nodeUpdateRes.right().value());
- } else {
- updateRes = updateGroupInstanceVertexAndGetUpdatedGroupInstance(groupInstanceVertex, nodeUpdateRes.left().value(), oldGroupInstance);
- }
- }
- } catch(Exception e){
- log.debug("The Exception occured during update group instance {} property values on graph. The message is {}. ", oldGroupInstance.getName(), e.getMessage(), e);
- updateRes = Either.right(StorageOperationStatus.GENERAL_ERROR);
- }
- return updateRes;
- }
-
- private Either<Integer, StorageOperationStatus> handlePropertyValues(GroupInstance oldGroupInstance, Integer propertyValueCounter, List<GroupInstanceProperty> newProperties, Vertex groupInstanceVertex,
- Map<String, Vertex> existingPropertyValueVertices, Map<String, Vertex> existingPropertyVertices) {
-
- Either<Integer, StorageOperationStatus> nodeHandleRes = null;
- int currCounter = propertyValueCounter;
- for(GroupInstanceProperty currProperty : newProperties){
- nodeHandleRes = handlePropertyValueNode(oldGroupInstance, currCounter, currProperty, groupInstanceVertex, existingPropertyValueVertices, existingPropertyVertices);
- if(nodeHandleRes.isRight()){
- break;
- }
- currCounter = nodeHandleRes.left().value();
- }
- return nodeHandleRes;
- }
-
- private Either<GroupInstance, StorageOperationStatus> updateGroupInstanceVertexAndGetUpdatedGroupInstance( Vertex groupInstanceVertex, Integer propertyValueCounter, GroupInstance oldGroupInstance) {
-
- TitanOperationStatus status;
- Either<GroupInstance, StorageOperationStatus> actionResult;
- status = updateGroupInstanceVertex(groupInstanceVertex, propertyValueCounter);
- if(status != TitanOperationStatus.OK){
- log.debug("Failed to update group instance {}. ", oldGroupInstance.getName());
- actionResult = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- }else{
- Either<GroupInstance, TitanOperationStatus> updatedGroupInstanceRes = getGroupInstanceFromGraph(oldGroupInstance.getUniqueId(), false, false);
- if(updatedGroupInstanceRes.isRight()){
- status = updatedGroupInstanceRes.right().value();
- log.debug("Failed to get updated group instance {}. Status is {}. ", oldGroupInstance.getName(), status);
- actionResult = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- }else{
- actionResult = Either.left(updatedGroupInstanceRes.left().value());
- }
- }
- return actionResult;
- }
-
- private Either<Integer, StorageOperationStatus> handlePropertyValueNode(GroupInstance oldGroupInstance, Integer propertyValueCounter, GroupInstanceProperty currProperty, Vertex groupInstanceVertex, Map<String, Vertex> existingPropertyValueVertices, Map<String, Vertex> existingPropertyVertices) {
-
- String groupInstanceName = oldGroupInstance.getName();
- TitanOperationStatus updateStatus;
- TitanOperationStatus addStatus;
- Vertex propertyValueVertex;
- String propertyValueId;
- propertyValueId = currProperty.getValueUniqueUid();
- Either<Integer, StorageOperationStatus> actionResult = null;
- if(existingPropertyValueVertices.containsKey(propertyValueId)){
- updateStatus = updatePropertyValueVertex(existingPropertyValueVertices.get(propertyValueId), currProperty);
- if(updateStatus != TitanOperationStatus.OK){
- log.debug("Failed to update property value {} of group instance {}. ", currProperty.getName(), groupInstanceName);
- actionResult = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(updateStatus));
- }
- }
- else{
- if(MapUtils.isEmpty(existingPropertyVertices)){
- findExistingPropertyVertices(existingPropertyVertices, groupInstanceVertex);
- }
- propertyValueVertex = existingPropertyVertices.get(currProperty.getUniqueId());
- addStatus = addPropertyValueNodeToGroupInstance(currProperty, groupInstanceVertex, propertyValueVertex, oldGroupInstance.getUniqueId(), ++propertyValueCounter);
- if(addStatus != TitanOperationStatus.OK){
- log.debug("Failed to add property value {} to group instance {}. ", currProperty.getName(), groupInstanceName);
- actionResult = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(addStatus));
- }
- }
- if(actionResult == null){
- actionResult = Either.left(propertyValueCounter);
- }
- return actionResult;
- }
-
- @SuppressWarnings("unchecked")
- private Either<Vertex, StorageOperationStatus> getVertexFromGraph(String uniqueKeyName, String uniqueId) {
-
- Either<Vertex, StorageOperationStatus> actionResult = null;
- try{
- Either<TitanGraph, TitanOperationStatus> graph = titanGenericDao.getGraph();
- Iterable<TitanVertex> vertices = null;
- if (graph.isRight()) {
- log.debug("Failed to get graph. Status is {}", graph.right().value());
- actionResult = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(graph.right().value()));
- }
- if(actionResult == null){
- TitanGraph tGraph = graph.left().value();
- vertices = tGraph.query().has(uniqueKeyName, uniqueId).vertices();
- if (vertices == null || vertices.iterator() == null || !vertices.iterator().hasNext()) {
- log.debug("Failed to get nodes from graph for type {} for id = {}", NodeTypeEnum.GroupInstance, uniqueId);
- actionResult = Either.right(StorageOperationStatus.NOT_FOUND);
- }
- }
- if(actionResult == null && vertices != null){
- actionResult = Either.left(vertices.iterator().next());
- }
- } catch(Exception e){
- log.debug("The Exception occured during get vertex {} from graph. The message is {}. ", uniqueId, e.getMessage(), e);
- }
- return actionResult;
- }
-
- private void findExistingPropertyValueVertices(Vertex groupInstanceVertex, Map<String, Vertex> existingPropertyValueVertices) {
- Iterator<Edge> propertyValueEdges = groupInstanceVertex.edges(Direction.OUT, GraphEdgeLabels.PROPERTY_VALUE.getProperty());
- Vertex propertyValueVertex;
- while(propertyValueEdges.hasNext()){
- propertyValueVertex = propertyValueEdges.next().inVertex();
- existingPropertyValueVertices.put((String) propertyValueVertex.property(GraphPropertiesDictionary.UNIQUE_ID.getProperty()).value(), propertyValueVertex);
- }
- }
-
- private void findExistingPropertyVertices(Map<String, Vertex> existingPropertyVertices, Vertex groupInstanceVertex) {
- Vertex groupVertex = groupInstanceVertex.edges(Direction.OUT, GraphEdgeLabels.INSTANCE_OF.getProperty()).next().inVertex();
- Vertex groupTypeVertex = groupVertex.edges(Direction.OUT, GraphEdgeLabels.TYPE_OF.getProperty()).next().inVertex();
- Iterator<Edge> groupTypePropertiesIterator = groupTypeVertex.edges(Direction.OUT, GraphEdgeLabels.PROPERTY.getProperty());
- while(groupTypePropertiesIterator.hasNext()){
- Vertex propertyValueVertex = groupTypePropertiesIterator.next().inVertex();
- existingPropertyVertices.put((String) propertyValueVertex.property(GraphPropertiesDictionary.UNIQUE_ID.getProperty()).value(), propertyValueVertex);
- }
- }
-
- private TitanOperationStatus addPropertyValueNodeToGroupInstance(GroupInstanceProperty currProperty, Vertex groupInstanceVertex, Vertex propertyVertex, String groupInstanceId, int index) {
- TitanOperationStatus status = null;
- TitanVertex propertyValueVertex = null;
- PropertyValueData newPropertyValue = new PropertyValueData();
- Long creationTime = System.currentTimeMillis();
- newPropertyValue.setModificationTime(creationTime);
- newPropertyValue.setCreationTime(creationTime);
- newPropertyValue.setUniqueId(UniqueIdBuilder.buildGroupPropertyValueUid(groupInstanceId, index));
- newPropertyValue.setValue(currProperty.getValue());
- newPropertyValue.setType(currProperty.getType());
- Either<TitanVertex, TitanOperationStatus> propertyValueNodeRes = titanGenericDao.createNode(newPropertyValue);
- if(propertyValueNodeRes.isRight()){
- status = propertyValueNodeRes.right().value();
- }
- if(status == null){
- propertyValueVertex = propertyValueNodeRes.left().value();
- Map<String, Object> props = new HashMap<>();
- props.put(GraphPropertiesDictionary.PROPERTY_NAME.getProperty(), currProperty.getName());
- status = titanGenericDao.createEdge(groupInstanceVertex, propertyValueVertex, GraphEdgeLabels.PROPERTY_VALUE, props);
- }
- if(status == TitanOperationStatus.OK){
- status = titanGenericDao.createEdge(propertyValueVertex, propertyVertex, GraphEdgeLabels.PROPERTY_IMPL, null);
- }
- return status;
- }
-
- private TitanOperationStatus updatePropertyValueVertex(Vertex propertyValueVertex, GroupInstanceProperty property) {
- PropertyValueData propertyValue = new PropertyValueData();
- propertyValue.setUniqueId(property.getValue());
- propertyValue.setModificationTime(System.currentTimeMillis());
- propertyValue.setType(property.getType());
- propertyValue.setValue(property.getValue());
- return titanGenericDao.updateVertex(propertyValue, propertyValueVertex);
- }
-
- private TitanOperationStatus updateGroupInstanceVertex(Vertex groupInstanceVertex, int propertyValueCounter) {
- GroupInstanceData groupInstanceData = new GroupInstanceData();
- groupInstanceData.getGroupDataDefinition().setModificationTime(System.currentTimeMillis());
- groupInstanceData.getGroupDataDefinition().setCustomizationUUID(UUID.randomUUID().toString());
- groupInstanceData.getGroupDataDefinition().setPropertyValueCounter(propertyValueCounter);
- return titanGenericDao.updateVertex(groupInstanceData, groupInstanceVertex);
- }
-
private Either<Map<String, PropertyValueData>, TitanOperationStatus> getAllGroupInstancePropertyValuesData(GroupInstanceData groupInstData) {
Either<Map<String, PropertyValueData>, TitanOperationStatus> result = null;
@@ -1694,8 +904,4 @@ public class GroupInstanceOperation extends AbstractOperation implements IGroupI
}
return result;
}
- @Override
- public Either<GroupInstance, StorageOperationStatus> updateGroupInstancePropertyValues(GroupInstance groupInstance, List<GroupInstanceProperty> newProperties) {
- return updateGroupInstancePropertyValues(groupInstance, newProperties, false);
- }
}
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) {
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/InputsOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/InputsOperation.java
index d3db95df65..782c78715f 100644
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/InputsOperation.java
+++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/InputsOperation.java
@@ -90,462 +90,12 @@ import fj.data.Either;
@Component("input-operation")
public class InputsOperation extends AbstractOperation implements IInputsOperation {
- private static final String GET_INPUT = "get_input";
-
- private static String ASSOCIATING_INPUT_TO_PROP = "AssociatingInputToComponentInstanceProperty";
-
private static Logger log = LoggerFactory.getLogger(InputsOperation.class.getName());
@Autowired
PropertyOperation propertyOperation;
- @Autowired
- private ComponentInstanceOperation componentInstanceOperation;
Gson gson = new Gson();
- /**
- * Delete specific input from component Although inputId is unique, pass also componentId as all other methods, and also check that the inputId is inside that componentId.
- */
- @Override
- public Either<InputDefinition, StorageOperationStatus> deleteInput(String inputId) {
- log.debug(String.format("Before deleting input: %s from graph", inputId));
- List<ComponentInstanceInput> inputsValueList = null;
- List<ComponentInstanceProperty> propertyList = new ArrayList<>();
-
- Either<TitanVertex, TitanOperationStatus> vertexService = titanGenericDao.getVertexByProperty(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), inputId);
-
- if (vertexService.isRight()) {
- log.debug("failed to fetch vertex of resource input for id = {}", inputId);
- TitanOperationStatus status = vertexService.right().value();
- if (status == TitanOperationStatus.NOT_FOUND) {
- status = TitanOperationStatus.INVALID_ID;
- }
-
- StorageOperationStatus convertTitanStatusToStorageStatus = DaoStatusConverter.convertTitanStatusToStorageStatus(status);
- return Either.right(convertTitanStatusToStorageStatus);
- }
- TitanVertex vertex = vertexService.left().value();
- Iterator<Edge> edgeIter = vertex.edges(Direction.IN, GraphEdgeLabels.INPUT.getProperty());
-
- if (edgeIter == null) {
- log.debug("No edges in graph for criteria");
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(TitanOperationStatus.NOT_FOUND));
- }
- String inputName = "";
- if (edgeIter != null) {
- while (edgeIter.hasNext()) {
- Edge edge = edgeIter.next();
- GraphEdge graphEdge = null;
-
- Map<String, Object> edgeProps = titanGenericDao.getProperties(edge);
- GraphEdgeLabels edgeTypeFromGraph = GraphEdgeLabels.getByName(edge.label());
- graphEdge = new GraphEdge(edgeTypeFromGraph, edgeProps);
-
- inputName = (String) graphEdge.getProperties().get(GraphEdgePropertiesDictionary.NAME.getProperty());
-
- }
- }
-
-
- Either<List<ComponentInstanceInput>, TitanOperationStatus> inputsValueStatus = this.getComponentInstanceInputsByInputId(inputId);
- if(inputsValueStatus.isLeft()){
- inputsValueList = inputsValueStatus.left().value();
- if(!inputsValueList.isEmpty()){
- for(ComponentInstanceInput inputValue: inputsValueList){
- Either<InputValueData, TitanOperationStatus> deleteNode = titanGenericDao.deleteNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.InputValue), inputValue.getValueUniqueUid(), InputValueData.class);
- if (deleteNode.isRight()) {
- StorageOperationStatus convertTitanStatusToStorageStatus = DaoStatusConverter.convertTitanStatusToStorageStatus(deleteNode.right().value());
- return Either.right(convertTitanStatusToStorageStatus);
- }
- }
- }
- // US848813 delete service input that relates to VL / CP property
- } else {
- Either<List<ComponentInstanceProperty>, TitanOperationStatus> propertyValueStatus = getComponentInstancePropertiesByInputId(inputId);
- if(propertyValueStatus.isLeft() && !propertyValueStatus.left().value().isEmpty()){
- //propertyList = propertyValueStatus.left().value();
- for(ComponentInstanceProperty propertyValue: propertyValueStatus.left().value()){
-
- String value = propertyValue.getValue();
- Map<String, Object> mappedToscaTemplate = (Map<String, Object>) new Yaml().load(value);
-
- resetInputName(mappedToscaTemplate, inputName);
-
- value = gson.toJson(mappedToscaTemplate);
- propertyValue.setValue(value);
- String compInstId = propertyValue.getComponentInstanceId();
- propertyValue.setRules(null);
-
- Either<PropertyValueData, TitanOperationStatus> eitherStatus = componentInstanceOperation.updatePropertyOfResourceInstance(propertyValue, compInstId, false);
-
- if (eitherStatus.isRight()) {
- log.error("Failed to add property value {} to resource instance {} in Graph. status is {}", propertyValue, compInstId, eitherStatus.right().value().name());
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(eitherStatus.right().value()));
-
- } else {
- PropertyValueData propertyValueData = eitherStatus.left().value();
-
- ComponentInstanceProperty propertyValueResult = propertyOperation.buildResourceInstanceProperty(propertyValueData, propertyValue);
-
- log.debug("The returned ResourceInstanceProperty is {}", propertyValueResult);
-
- Either<String, TitanOperationStatus> findDefaultValue = propertyOperation.findDefaultValueFromSecondPosition(propertyValue.getPath(), propertyValueData.getUniqueId(), propertyValue.getDefaultValue());
- if (findDefaultValue.isRight()) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(findDefaultValue.right().value()));
-
- }
- String defaultValue = findDefaultValue.left().value();
- propertyValueResult.setDefaultValue(defaultValue);
- log.debug("The returned default value in ResourceInstanceProperty is {}", defaultValue);
-
- propertyValueResult.setComponentInstanceId(compInstId);
- propertyList.add(propertyValueResult);
-
-
- }
-
- }
- }
- }
- Either<InputsData, TitanOperationStatus> deleteNode = titanGenericDao.deleteNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Input), inputId, InputsData.class);
- if (deleteNode.isRight()) {
- StorageOperationStatus convertTitanStatusToStorageStatus = DaoStatusConverter.convertTitanStatusToStorageStatus(deleteNode.right().value());
- return Either.right(convertTitanStatusToStorageStatus);
- } else {
- InputDefinition inputDefinition = this.convertInputDataToInputDefinition(deleteNode.left().value());
- inputDefinition.setInputs(inputsValueList);
- inputDefinition.setProperties(propertyList);
- inputDefinition.setName(inputName);
- return Either.left(inputDefinition);
- }
- }
-
- @Override
- public Either<List<InputDefinition>, TitanOperationStatus> addInputsToGraph(String componentId, NodeTypeEnum nodeType, Map<String, InputDefinition> inputs, Map<String, DataTypeDefinition> dataTypes) {
-
- List<InputDefinition> newInputs = new ArrayList<InputDefinition>();
- if (inputs != null) {
- for (Entry<String, InputDefinition> entry : inputs.entrySet()) {
-
- String inputName = entry.getKey();
- InputDefinition propertyDefinition = entry.getValue();
-
- StorageOperationStatus validateAndUpdateProperty = validateAndUpdateProperty(propertyDefinition, dataTypes);
- if (validateAndUpdateProperty != StorageOperationStatus.OK) {
- log.error("Property {} is invalid. Status is {}", propertyDefinition, validateAndUpdateProperty);
- return Either.right(TitanOperationStatus.INVALID_PROPERTY);
- }
-
- Either<InputsData, TitanOperationStatus> addPropertyToGraph = addInputToGraph(inputName, propertyDefinition, componentId, nodeType);
-
- if (addPropertyToGraph.isRight()) {
- return Either.right(addPropertyToGraph.right().value());
- }
- InputDefinition createdInputyDefinition = convertInputDataToInputDefinition(addPropertyToGraph.left().value());
- createdInputyDefinition.setName(inputName);
- createdInputyDefinition.setParentUniqueId(componentId);
- newInputs.add(createdInputyDefinition);
- }
- }
-
- return Either.left(newInputs);
- }
-
- @Override
- public TitanOperationStatus addInputsToGraph(TitanVertex metadata, String componentId, Map<String, InputDefinition> inputs, Map<String, DataTypeDefinition> dataTypes) {
-
- if (inputs != null) {
- for (Entry<String, InputDefinition> entry : inputs.entrySet()) {
-
- String inputName = entry.getKey();
- InputDefinition propertyDefinition = entry.getValue();
-
- StorageOperationStatus validateAndUpdateProperty = validateAndUpdateProperty(propertyDefinition, dataTypes);
- if (validateAndUpdateProperty != StorageOperationStatus.OK) {
- log.error("Property {} is invalid. Status is {} ", propertyDefinition, validateAndUpdateProperty);
- return TitanOperationStatus.INVALID_PROPERTY;
- }
-
- TitanOperationStatus addPropertyToGraph = addInputToGraph(metadata, inputName, propertyDefinition, componentId);
-
- if (!addPropertyToGraph.equals(TitanOperationStatus.OK)) {
- return addPropertyToGraph;
- }
-
- }
- }
-
- return TitanOperationStatus.OK;
- }
-
- @Override
- public Either<List<InputDefinition>, StorageOperationStatus> getInputsOfComponent(String compId, String fromName, int amount) {
- List<InputDefinition> inputs = new ArrayList<>();
- if ((fromName == null || fromName.isEmpty()) && amount == 0) {
-
- TitanOperationStatus status = findAllResourceInputs(compId, inputs);
-
- if (status != TitanOperationStatus.OK) {
- log.error("Failed to set inputs of resource {}. status is {}", compId, status);
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- }
-
- } else {
-
- Either<TitanGraph, TitanOperationStatus> graphRes = titanGenericDao.getGraph();
- if (graphRes.isRight()) {
- log.error("Failed to retrieve graph. status is {}", graphRes);
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(graphRes.right().value()));
- }
-
- TitanGraph titanGraph = graphRes.left().value();
- @SuppressWarnings("unchecked")
- Iterable<TitanVertex> vertices = titanGraph.query().has(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), compId).vertices();
- if (vertices == null || false == vertices.iterator().hasNext()) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(TitanOperationStatus.INVALID_ID));
- }
-
- TitanVertex rootVertex = vertices.iterator().next();
- TitanVertexQuery<?> query;
- if (fromName == null || fromName.isEmpty())
- query = rootVertex.query().direction(Direction.OUT).labels(GraphEdgeLabels.INPUT.getProperty()).orderBy(GraphEdgePropertiesDictionary.NAME.getProperty(), Order.incr).limit(amount);
- else
- query = rootVertex.query().direction(Direction.OUT).labels(GraphEdgeLabels.INPUT.getProperty()).orderBy(GraphEdgePropertiesDictionary.NAME.getProperty(), Order.incr).has(GraphEdgePropertiesDictionary.NAME.getProperty(), Cmp.GREATER_THAN, fromName).limit(amount);
-
- Iterable<TitanEdge> edgesCreatorEges = query.edges();
-
- if (edgesCreatorEges == null) {
- log.debug("No edges in graph for criteria");
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(TitanOperationStatus.NOT_FOUND));
- }
- Iterator<TitanEdge> edgesCreatorIterator = edgesCreatorEges.iterator();
-
- if (edgesCreatorIterator != null) {
- while (edgesCreatorIterator.hasNext()) {
- Edge edge = edgesCreatorIterator.next();
- GraphEdge graphEdge = null;
-
- Map<String, Object> edgeProps = titanGenericDao.getProperties(edge);
- GraphEdgeLabels edgeTypeFromGraph = GraphEdgeLabels.getByName(edge.label());
- graphEdge = new GraphEdge(edgeTypeFromGraph, edgeProps);
-
- Vertex outgoingVertex = edge.inVertex();
- Map<String, Object> properties = titanGenericDao.getProperties(outgoingVertex);
- InputsData data = GraphElementFactory.createElement(NodeTypeEnum.Input.getName(), GraphElementTypeEnum.Node, properties, InputsData.class);
- String inputName = (String) graphEdge.getProperties().get(GraphEdgePropertiesDictionary.NAME.getProperty());
- InputDefinition inputDefinition = this.convertInputDataToInputDefinition(data);
- inputDefinition.setName(inputName);
- inputDefinition.setParentUniqueId(compId);
-
- inputs.add(inputDefinition);
-
- }
- }
-
- }
- if (true == inputs.isEmpty()) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(TitanOperationStatus.NOT_FOUND));
- }
-
- return Either.left(inputs);
-
- }
-
- @Override
- public Either<Map<String, InputDefinition>, StorageOperationStatus> deleteAllInputsAssociatedToNode(NodeTypeEnum nodeType, String uniqueId) {
-
- Wrapper<TitanOperationStatus> errorWrapper;
- List<InputDefinition> inputs = new ArrayList<>();
- TitanOperationStatus findAllResourceAttribues = this.findNodeNonInheretedInputs(uniqueId, inputs);
- errorWrapper = (findAllResourceAttribues != TitanOperationStatus.OK) ? new Wrapper<>(findAllResourceAttribues) : new Wrapper<>();
-
- if (errorWrapper.isEmpty()) {
- for (InputDefinition inDef : inputs) {
- log.debug("Before deleting inputs from graph {}", inDef.getUniqueId());
- Either<InputsData, TitanOperationStatus> deleteNode = titanGenericDao.deleteNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Input), inDef.getUniqueId(), InputsData.class);
- if (deleteNode.isRight()) {
- errorWrapper.setInnerElement(deleteNode.right().value());
- break;
- }
- }
- }
-
- if (errorWrapper.isEmpty()) {
- Map<String, InputDefinition> inputsMap = inputs.stream().collect(Collectors.toMap(e -> e.getName(), e -> e));
- return Either.left(inputsMap);
- } else {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(errorWrapper.getInnerElement()));
- }
-
- }
-
- @Override
- public Either<InputsData, StorageOperationStatus> addInput(String inputName, InputDefinition inputDefinition, String resourceId, NodeTypeEnum nodeType) {
-
- ComponentMetadataData componentMetadata = null;
-
- Either<InputsData, TitanOperationStatus> either = addInputToGraph(inputName, inputDefinition, resourceId, nodeType);
- if (either.isRight()) {
- StorageOperationStatus storageStatus = DaoStatusConverter.convertTitanStatusToStorageStatus(either.right().value());
- return Either.right(storageStatus);
- }
- return Either.left(either.left().value());
- }
-
- @Override
- public Either<AttributeData, StorageOperationStatus> updateInput(String inputId, InputDefinition newInDef, Map<String, DataTypeDefinition> dataTypes) {
- // TODO Auto-generated method stub
- return null;
- }
-
- public Either<InputsData, TitanOperationStatus> addInputToGraph(String propertyName, InputDefinition inputDefinition, String componentId, NodeTypeEnum nodeType) {
-
- UniqueIdData from = new UniqueIdData(nodeType, componentId);
-
- List<PropertyConstraint> constraints = inputDefinition.getConstraints();
-
- inputDefinition.setUniqueId(UniqueIdBuilder.buildPropertyUniqueId(componentId, propertyName));
- InputsData inputData = new InputsData(inputDefinition, convertConstraintsToString(constraints));
-
- log.debug("Before adding property to graph {}", inputData);
- Either<InputsData, TitanOperationStatus> createNodeResult = titanGenericDao.createNode(inputData, InputsData.class);
- log.debug("After adding input to graph {}", inputData);
- if (createNodeResult.isRight()) {
- TitanOperationStatus operationStatus = createNodeResult.right().value();
- log.error("Failed to add input {} to graph. status is {}", propertyName, operationStatus);
- if(operationStatus == TitanOperationStatus.TITAN_SCHEMA_VIOLATION )
- return Either.right(TitanOperationStatus.ALREADY_EXIST);
- return Either.right(operationStatus);
- }
-
- Map<String, Object> props = new HashMap<String, Object>();
- props.put(GraphEdgePropertiesDictionary.NAME.getProperty(), propertyName);
-
- Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(from, inputData, GraphEdgeLabels.INPUT, props);
- if (createRelResult.isRight()) {
- TitanOperationStatus operationStatus = createNodeResult.right().value();
- log.error("Failed to associate resource {} to property {} in graph. status is {}", componentId, propertyName, operationStatus);
- return Either.right(operationStatus);
- }
-
- return Either.left(createNodeResult.left().value());
-
- }
-
- public TitanOperationStatus addInputToGraph(TitanVertex vertex, String propertyName, InputDefinition inputDefinition, String componentId) {
-
- List<PropertyConstraint> constraints = inputDefinition.getConstraints();
-
- inputDefinition.setUniqueId(UniqueIdBuilder.buildPropertyUniqueId(componentId, propertyName));
- InputsData inputData = new InputsData(inputDefinition, convertConstraintsToString(constraints));
-
- log.debug("Before adding property to graph {}", inputData);
- Either<TitanVertex, TitanOperationStatus> createNodeResult = titanGenericDao.createNode(inputData);
- if (createNodeResult.isRight()) {
- TitanOperationStatus operationStatus = createNodeResult.right().value();
- log.error("Failed to add input {} to graph. status is {}", propertyName, operationStatus);
- return operationStatus;
- }
-
- Map<String, Object> props = new HashMap<String, Object>();
- props.put(GraphEdgePropertiesDictionary.NAME.getProperty(), propertyName);
- TitanVertex inputVertex = createNodeResult.left().value();
- TitanOperationStatus createRelResult = titanGenericDao.createEdge(vertex, inputVertex, GraphEdgeLabels.INPUT, props);
- if (!createRelResult.equals(TitanOperationStatus.OK)) {
- TitanOperationStatus operationStatus = createRelResult;
- log.error("Failed to associate resource {} to property {} in graph. status is {}", componentId, propertyName, operationStatus);
- return operationStatus;
- }
-
- return createRelResult;
-
- }
-
- public InputDefinition convertInputDataToInputDefinition(InputsData inputDataResult) {
- if (log.isDebugEnabled())
- log.debug("The object returned after create property is {}", inputDataResult);
-
- InputDefinition propertyDefResult = new InputDefinition(inputDataResult.getPropertyDataDefinition());
- propertyDefResult.setConstraints(convertConstraints(inputDataResult.getConstraints()));
-
- return propertyDefResult;
- }
-
- public boolean isInputExist(List<InputDefinition> inputs, String resourceUid, String inputName) {
-
- if (inputs == null) {
- return false;
- }
-
- for (InputDefinition propertyDefinition : inputs) {
- String parentUniqueId = propertyDefinition.getParentUniqueId();
- String name = propertyDefinition.getName();
-
- if (parentUniqueId.equals(resourceUid) && name.equals(inputName)) {
- return true;
- }
- }
-
- return false;
-
- }
-
- @Override
- public TitanOperationStatus findAllResourceInputs(String uniqueId, List<InputDefinition> inputs) {
- // final NodeElementFetcher<InputDefinition> singleNodeFetcher =
- // (resourceIdParam, attributesParam) ->
- // findNodeNonInheretedInputs(resourceIdParam, componentType,
- // attributesParam);
- // return findAllResourceElementsDefinitionRecursively(uniqueId, inputs,
- // singleNodeFetcher);
- return findNodeNonInheretedInputs(uniqueId, inputs);
- }
-
- @Override
- public TitanOperationStatus findNodeNonInheretedInputs(String uniqueId, List<InputDefinition> inputs) {
- Either<List<ImmutablePair<InputsData, GraphEdge>>, TitanOperationStatus> childrenNodes = titanGenericDao.getChildrenNodes(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), uniqueId, GraphEdgeLabels.INPUT, NodeTypeEnum.Input, InputsData.class);
-
- if (childrenNodes.isRight()) {
- TitanOperationStatus status = childrenNodes.right().value();
- if (status == TitanOperationStatus.NOT_FOUND) {
- status = TitanOperationStatus.OK;
- }
- return status;
- }
-
- List<ImmutablePair<InputsData, GraphEdge>> values = childrenNodes.left().value();
- if (values != null) {
-
- for (ImmutablePair<InputsData, GraphEdge> immutablePair : values) {
- GraphEdge edge = immutablePair.getValue();
- String inputName = (String) edge.getProperties().get(GraphEdgePropertiesDictionary.NAME.getProperty());
- log.debug("Input {} is associated to node {}", inputName, uniqueId);
- InputsData inputData = immutablePair.getKey();
- InputDefinition inputDefinition = this.convertInputDataToInputDefinition(inputData);
-
- inputDefinition.setName(inputName);
- inputDefinition.setParentUniqueId(uniqueId);
-
- inputs.add(inputDefinition);
-
- log.trace("findInputsOfNode - input {} associated to node {}", inputDefinition, uniqueId);
- }
-
- }
-
- return TitanOperationStatus.OK;
- }
-
- public Either<InputDefinition, StorageOperationStatus> getInputById(String uniqueId, boolean skipProperties, boolean skipInputsvalue) {
- Either<InputDefinition, TitanOperationStatus> status = getInputFromGraph(uniqueId, skipProperties, skipInputsvalue);
-
- if (status.isRight()) {
- log.error("Failed to get input {} from graph {}. status is {}", uniqueId, status);
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status.right().value()));
- }
-
- return Either.left(status.left().value());
-
- }
public <ElementDefinition> TitanOperationStatus findAllResourceElementsDefinitionRecursively(String resourceId, List<ElementDefinition> elements, NodeElementFetcher<ElementDefinition> singleNodeFetcher) {
@@ -580,229 +130,8 @@ public class InputsOperation extends AbstractOperation implements IInputsOperati
return TitanOperationStatus.OK;
}
- public TitanOperationStatus associatePropertyToInput(String riId, String inputId, InputValueData property, String name) {
- TitanOperationStatus status = TitanOperationStatus.OK;
- Either<TitanGraph, TitanOperationStatus> graphRes = titanGenericDao.getGraph();
- if (graphRes.isRight()) {
- log.error("Failed to retrieve graph. status is {}", graphRes);
- return graphRes.right().value();
- }
-
- TitanGraph titanGraph = graphRes.left().value();
- @SuppressWarnings("unchecked")
- Iterable<TitanVertex> vertices = titanGraph.query().has(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), property.getUniqueId()).vertices();
- if (vertices == null || false == vertices.iterator().hasNext()) {
- return TitanOperationStatus.INVALID_ID;
- }
- // Either<PropertyData, TitanOperationStatus> findPropertyDefRes =
- // titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Property),
- // propertyId, PropertyData.class);
-
- Map<String, Object> props = new HashMap<String, Object>();
- props.put(GraphEdgePropertiesDictionary.NAME.getProperty(), name);
- props.put(GraphEdgePropertiesDictionary.OWNER_ID.getProperty(), riId);
-
- GraphNode inputData = new UniqueIdData(NodeTypeEnum.Input, inputId);
- GraphNode propertyData = new UniqueIdData(NodeTypeEnum.InputValue, property.getUniqueId());
- Either<GraphRelation, TitanOperationStatus> addPropRefResult = titanGenericDao.createRelation(inputData, propertyData, GraphEdgeLabels.GET_INPUT, props);
-
- if (addPropRefResult.isRight()) {
- status = addPropRefResult.right().value();
- String description = "Failed to associate input " + inputData.getUniqueId() + " to property " + property.getUniqueId() + " in graph. Status is " + status;
- BeEcompErrorManager.getInstance().logInternalFlowError(ASSOCIATING_INPUT_TO_PROP, description, ErrorSeverity.ERROR);
- return status;
- }
- return status;
-
- }
-
- public TitanOperationStatus associatePropertyToInput(String riId, String inputId, ComponentInstanceProperty property, GetInputValueDataDefinition getInput) {
- TitanOperationStatus status = TitanOperationStatus.OK;
- Either<TitanGraph, TitanOperationStatus> graphRes = titanGenericDao.getGraph();
- if (graphRes.isRight()) {
- log.error("Failed to retrieve graph. status is {}", graphRes);
- return graphRes.right().value();
- }
-
- TitanGraph titanGraph = graphRes.left().value();
- @SuppressWarnings("unchecked")
- Iterable<TitanVertex> vertices = titanGraph.query().has(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), property.getUniqueId()).vertices();
- if (vertices == null || false == vertices.iterator().hasNext()) {
- return TitanOperationStatus.INVALID_ID;
- }
- // Either<PropertyData, TitanOperationStatus> findPropertyDefRes =
- // titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Property),
- // propertyId, PropertyData.class);
-
- Map<String, Object> props = new HashMap<String, Object>();
- if(getInput!=null){
- props.put(GraphEdgePropertiesDictionary.NAME.getProperty(), getInput.getPropName());
- if (getInput.isList()) {
- String index = "";
- if(getInput.getIndexValue()!= null ){
- index = getInput.getIndexValue().toString();
- }else{
- if (getInput.getGetInputIndex() != null) {
- index = getInput.getGetInputIndex().getInputName();
-
- }
- }
- props.put(GraphEdgePropertiesDictionary.GET_INPUT_INDEX.getProperty(), index);
- }
- }
- props.put(GraphEdgePropertiesDictionary.OWNER_ID.getProperty(), riId);
-
- GraphNode inputData = new UniqueIdData(NodeTypeEnum.Input, inputId);
- GraphNode propertyData = new UniqueIdData(NodeTypeEnum.PropertyValue, property.getValueUniqueUid());
- Either<GraphRelation, TitanOperationStatus> addPropRefResult = titanGenericDao.createRelation(inputData, propertyData, GraphEdgeLabels.GET_INPUT, props);
-
- if (addPropRefResult.isRight()) {
- status = addPropRefResult.right().value();
- String description = "Failed to associate input " + inputData.getUniqueId() + " to property " + property.getUniqueId() + " in graph. Status is " + status;
- BeEcompErrorManager.getInstance().logInternalFlowError(ASSOCIATING_INPUT_TO_PROP, description, ErrorSeverity.ERROR);
- return status;
- }
- return status;
-
- }
-
- private Either<InputDefinition, TitanOperationStatus> getInputFromGraph(String uniqueId, boolean skipProperties, boolean skipInputsValue) {
-
- Either<InputDefinition, TitanOperationStatus> result = null;
-
- Either<InputsData, TitanOperationStatus> inputRes = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Input), uniqueId, InputsData.class);
- if (inputRes.isRight()) {
- TitanOperationStatus status = inputRes.right().value();
- log.debug("Failed to retrieve group {} from graph. Status is {}", uniqueId, status);
- BeEcompErrorManager.getInstance().logBeFailedRetrieveNodeError("Fetch Group", uniqueId, String.valueOf(status));
- result = Either.right(status);
- return result;
- }
-
- InputsData inputData = inputRes.left().value();
-
- InputDefinition groupDefinition = this.convertInputDataToInputDefinition(inputData);
-
- if (false == skipInputsValue) {
- List<ComponentInstanceInput> propsList = new ArrayList<ComponentInstanceInput>();
-
- Either<List<ImmutablePair<InputValueData, GraphEdge>>, TitanOperationStatus> propertyImplNodes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Input), uniqueId, GraphEdgeLabels.GET_INPUT, NodeTypeEnum.InputValue, InputValueData.class);
-
- if (propertyImplNodes.isRight()) {
- TitanOperationStatus status = propertyImplNodes.right().value();
- if (status != TitanOperationStatus.NOT_FOUND) {
- status = TitanOperationStatus.INVALID_ID;
- return Either.right(status);
- }
-
- }
- if(propertyImplNodes.isLeft()){
- List<ImmutablePair<InputValueData, GraphEdge>> propertyDataPairList = propertyImplNodes.left().value();
- for (ImmutablePair<InputValueData, GraphEdge> propertyValue : propertyDataPairList) {
-
- InputValueData propertyValueData = propertyValue.getLeft();
- String propertyValueUid = propertyValueData.getUniqueId();
- String value = propertyValueData.getValue();
-
- Either<ImmutablePair<PropertyData, GraphEdge>, TitanOperationStatus> propertyDefRes = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.InputValue), propertyValueUid, GraphEdgeLabels.INPUT_IMPL, NodeTypeEnum.Property, PropertyData.class);
- if (propertyDefRes.isRight()) {
- TitanOperationStatus status = propertyDefRes.right().value();
- if (status == TitanOperationStatus.NOT_FOUND) {
- status = TitanOperationStatus.INVALID_ID;
- }
- return Either.right(status);
- }
-
- ImmutablePair<PropertyData, GraphEdge> propertyDefPair = propertyDefRes.left().value();
- String propertyUniqueId = (String) propertyDefPair.left.getUniqueId();
-
- ComponentInstanceInput resourceInstanceProperty = new ComponentInstanceInput();
- // set property original unique id
- resourceInstanceProperty.setUniqueId(propertyUniqueId);
- // set resource id
- // TODO: esofer add resource id
- resourceInstanceProperty.setParentUniqueId(null);
- // set value
- resourceInstanceProperty.setValue(value);
- // set property value unique id
- resourceInstanceProperty.setValueUniqueUid(propertyValueUid);
- // set rules
- // resourceInstanceProperty.setRules(propertyValueData.getRules());
-
- propsList.add(resourceInstanceProperty);
-
- }
-
- groupDefinition.setInputs(propsList);
- }
-
- }
-
- if (false == skipProperties) {
- Either<List<ImmutablePair<PropertyValueData, GraphEdge>>, TitanOperationStatus> propertyImplNodes = titanGenericDao.getChildrenNodes(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), uniqueId, GraphEdgeLabels.GET_INPUT, NodeTypeEnum.PropertyValue, PropertyValueData.class);
-
- if (propertyImplNodes.isRight()) {
- TitanOperationStatus status = propertyImplNodes.right().value();
- return Either.right(status);
- }
-
- List<ImmutablePair<PropertyValueData, GraphEdge>> list = propertyImplNodes.left().value();
-
- if (list == null || true == list.isEmpty()) {
- return Either.right(TitanOperationStatus.NOT_FOUND);
- }
-
- List<ComponentInstanceProperty> propsRresult = new ArrayList<>();
- for (ImmutablePair<PropertyValueData, GraphEdge> propertyValueDataPair : list) {
- PropertyValueData propertyValueData = propertyValueDataPair.left;
- String propertyValueUid = propertyValueData.getUniqueId();
- String value = propertyValueData.getValue();
-
- Either<ImmutablePair<PropertyData, GraphEdge>, TitanOperationStatus> propertyDefRes = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.PropertyValue), propertyValueUid, GraphEdgeLabels.PROPERTY_IMPL, NodeTypeEnum.Property, PropertyData.class);
- if (propertyDefRes.isRight()) {
- TitanOperationStatus status = propertyDefRes.right().value();
- if (status != TitanOperationStatus.NOT_FOUND) {
- status = TitanOperationStatus.INVALID_ID;
- return Either.right(status);
- }
-
- }
- if(propertyDefRes.isLeft()){
-
- ImmutablePair<PropertyData, GraphEdge> propertyDefPair = propertyDefRes.left().value();
- PropertyData propertyData = propertyDefPair.left;
- String propertyUniqueId = (String) propertyData.getPropertyDataDefinition().getUniqueId();
-
- ComponentInstanceProperty resourceInstanceProperty = new ComponentInstanceProperty();
- // set property original unique id
- resourceInstanceProperty.setUniqueId(propertyUniqueId);
- // set resource id
- // TODO: esofer add resource id
- resourceInstanceProperty.setParentUniqueId(null);
- // set value
- resourceInstanceProperty.setValue(value);
- // set property value unique id
- resourceInstanceProperty.setValueUniqueUid(propertyValueData.getUniqueId());
- // set rules
- resourceInstanceProperty.setRules(propertyValueData.getRules());
- resourceInstanceProperty.setType(propertyData.getPropertyDataDefinition().getType());
- resourceInstanceProperty.setSchema(propertyData.getPropertyDataDefinition().getSchema());
- resourceInstanceProperty.setName((String) propertyValueDataPair.right.getProperties().get(GraphPropertiesDictionary.NAME.getProperty()));
-
- propsRresult.add(resourceInstanceProperty);
- }
-
- groupDefinition.setProperties(propsRresult);
- }
-
- }
-
- result = Either.left(groupDefinition);
-
- return result;
-
- }
+ @Override
public ImmutablePair<TitanOperationStatus, String> findInputValue(String resourceInstanceId, String propertyId) {
log.debug("Going to check whether the property {} already added to resource instance {}", propertyId, resourceInstanceId);
@@ -842,40 +171,6 @@ public class InputsOperation extends AbstractOperation implements IInputsOperati
}
- /**
- * return all properties associated to resource instance. The result does contains the property unique id but not its type, default value...
- *
- * @param resourceInstanceUid
- * @return
- */
- public Either<List<ComponentInstanceInput>, StorageOperationStatus> getComponentInstanceInputsByInputId(String resourceInstanceUid, String inputId) {
-
- Either<List<ComponentInstanceInput>, TitanOperationStatus> status = getComponentInstanceInputsByInputId(inputId);
- if (status.isRight()) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status.right().value()));
- }
-
- return Either.left(status.left().value());
-
- }
-
- /**
- * return all properties associated to resource instance. The result does contains the property unique id but not its type, default value...
- *
- * @param resourceInstanceUid
- * @return
- */
- public Either<List<ComponentInstanceProperty>, StorageOperationStatus> getComponentInstancePropertiesByInputId(String resourceInstanceUid, String inputId) {
-
- Either<List<ComponentInstanceProperty>, TitanOperationStatus> status = getComponentInstancePropertiesByInputId(inputId);
- if (status.isRight()) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status.right().value()));
- }
-
- return Either.left(status.left().value());
-
- }
-
public Either<List<ComponentInstanceInput>, TitanOperationStatus> getAllInputsOfResourceInstanceOnlyInputDefId(String resourceInstanceUid, NodeTypeEnum instanceNodeType) {
Either<ComponentInstanceData, TitanOperationStatus> findResInstanceRes = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(instanceNodeType), resourceInstanceUid, ComponentInstanceData.class);
@@ -967,231 +262,7 @@ public class InputsOperation extends AbstractOperation implements IInputsOperati
return Either.left(result);
}
- public Either<List<ComponentInstanceInput>, TitanOperationStatus> getComponentInstanceInputsByInputId(String inputId) {
-
- Either<InputsData, TitanOperationStatus> findResInputRes = titanGenericDao.getNode(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), inputId, InputsData.class);
-
- if (findResInputRes.isRight()) {
- TitanOperationStatus status = findResInputRes.right().value();
- if (status == TitanOperationStatus.NOT_FOUND) {
- status = TitanOperationStatus.INVALID_ID;
- }
- return Either.right(status);
- }
-
-
-
- // Either<List<InputValueData>, TitanOperationStatus> propertyImplNodes
- // = titanGenericDao.getByCriteria(NodeTypeEnum.InputValue, props,
- // InputValueData.class);
- Either<TitanVertex, TitanOperationStatus> vertexService = titanGenericDao.getVertexByProperty(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), inputId);
-
- if (vertexService.isRight()) {
- log.debug("failed to fetch vertex of resource input for id = {}", inputId);
- TitanOperationStatus status = vertexService.right().value();
- if (status == TitanOperationStatus.NOT_FOUND) {
- status = TitanOperationStatus.INVALID_ID;
- }
-
- return Either.right(status);
- }
- TitanVertex vertex = vertexService.left().value();
-
- Either<List<ImmutablePair<InputValueData, GraphEdge>>, TitanOperationStatus> propertyImplNodes = titanGenericDao.getChildrenNodes(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), inputId, GraphEdgeLabels.GET_INPUT, NodeTypeEnum.InputValue, InputValueData.class);
-
- //////////////////////////////////////////////////////////////////////////////////////////////////////////////
-
- if (propertyImplNodes.isRight()) {
- TitanOperationStatus status = propertyImplNodes.right().value();
- return Either.right(status);
- }
-
- List<ImmutablePair<InputValueData, GraphEdge>> list = propertyImplNodes.left().value();
-
- if (list == null || true == list.isEmpty()) {
- return Either.right(TitanOperationStatus.NOT_FOUND);
- }
-
- List<ComponentInstanceInput> result = new ArrayList<>();
- for (ImmutablePair<InputValueData, GraphEdge> propertyValueDataPair : list) {
- InputValueData propertyValueData = propertyValueDataPair.left;
- String propertyValueUid = propertyValueData.getUniqueId();
- String value = propertyValueData.getValue();
- // Either<List<Edge>, TitanOperationStatus> out =
- // titanGenericDao.getEdgesForNode(propertyValueData,
- // Direction.OUT);
- // Either<List<Edge>, TitanOperationStatus> in =
- // titanGenericDao.getEdgesForNode(propertyValueData, Direction.IN);
- Either<Edge, TitanOperationStatus> inputsvalueEges = titanGenericDao.getIncomingEdgeByCriteria(propertyValueData, GraphEdgeLabels.INPUT_VALUE, null);
- if (inputsvalueEges.isRight()) {
- TitanOperationStatus status = inputsvalueEges.right().value();
-
- return Either.right(status);
- }
- Edge edge = inputsvalueEges.left().value();
- String componentInsName = (String) titanGenericDao.getProperty(edge, GraphEdgePropertiesDictionary.NAME.getProperty());
- String componentInsId = (String) titanGenericDao.getProperty(edge, GraphEdgePropertiesDictionary.OWNER_ID.getProperty());
-
- Either<ImmutablePair<InputsData, GraphEdge>, TitanOperationStatus> propertyDefRes = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.InputValue), propertyValueUid, GraphEdgeLabels.INPUT_IMPL, NodeTypeEnum.Input, InputsData.class);
-
- if (propertyDefRes.isRight()) {
- TitanOperationStatus status = propertyDefRes.right().value();
- if (status == TitanOperationStatus.NOT_FOUND) {
- status = TitanOperationStatus.INVALID_ID;
- }
- return Either.right(status);
- }
-
- ImmutablePair<InputsData, GraphEdge> propertyDefPair = propertyDefRes.left().value();
-
- InputsData propertyData = propertyDefPair.left;
-
- Either<Edge, TitanOperationStatus> inputsEges = titanGenericDao.getIncomingEdgeByCriteria(propertyData, GraphEdgeLabels.INPUT, null);
- if (inputsEges.isRight()) {
- TitanOperationStatus status = inputsEges.right().value();
-
- return Either.right(status);
- }
- edge = inputsEges.left().value();
- String inputName = (String) titanGenericDao.getProperty(edge, GraphEdgePropertiesDictionary.NAME.getProperty());
-
- String propertyUniqueId = (String) propertyData.getPropertyDataDefinition().getUniqueId();
-
- ComponentInstanceInput resourceInstanceProperty = new ComponentInstanceInput(propertyData.getPropertyDataDefinition(), inputId, value, propertyValueUid);
- // set property original unique id
- resourceInstanceProperty.setUniqueId(propertyUniqueId);
- resourceInstanceProperty.setName(inputName);
- // set resource id
- // TODO: esofer add resource id
- resourceInstanceProperty.setParentUniqueId(null);
- // set value
- resourceInstanceProperty.setValue(value);
- // set property value unique id
- resourceInstanceProperty.setValueUniqueUid(propertyValueData.getUniqueId());
- // set rules
- // resourceInstanceProperty.setRules(propertyValueData.getRules());
- resourceInstanceProperty.setType(propertyData.getPropertyDataDefinition().getType());
- resourceInstanceProperty.setSchema(propertyData.getPropertyDataDefinition().getSchema());
- resourceInstanceProperty.setComponentInstanceName(componentInsName);
- resourceInstanceProperty.setComponentInstanceId(componentInsId);
-
- result.add(resourceInstanceProperty);
- }
-
- return Either.left(result);
-
- }
-
- public Either<List<ComponentInstanceProperty>, TitanOperationStatus> getComponentInstancePropertiesByInputId(String inputId) {
-
- Either<InputsData, TitanOperationStatus> findResInputRes = titanGenericDao.getNode(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), inputId, InputsData.class);
-
- if (findResInputRes.isRight()) {
- TitanOperationStatus status = findResInputRes.right().value();
- if (status == TitanOperationStatus.NOT_FOUND) {
- status = TitanOperationStatus.INVALID_ID;
- }
- return Either.right(status);
- }
-
- //Map<String, Object> props = new HashMap<String, Object>();
- //props.put(GraphEdgePropertiesDictionary.OWNER_ID.getProperty(), resourceInstanceUid);
-
- // Either<List<PropertyValueData>, TitanOperationStatus>
- // propertyImplNodes =
- // titanGenericDao.getByCriteria(NodeTypeEnum.PropertyValue, props,
- // PropertyValueData.class);
- Either<TitanVertex, TitanOperationStatus> vertexService = titanGenericDao.getVertexByProperty(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), inputId);
-
- if (vertexService.isRight()) {
- log.debug("failed to fetch vertex of resource input for id = {}", inputId);
- TitanOperationStatus status = vertexService.right().value();
- if (status == TitanOperationStatus.NOT_FOUND) {
- status = TitanOperationStatus.INVALID_ID;
- }
-
- return Either.right(status);
- }
- TitanVertex vertex = vertexService.left().value();
-
- // Either<List<ImmutablePair<PropertyValueData, GraphEdge>>,
- // TitanOperationStatus> propertyImplNodes =
- // titanGenericDao.getChildrenByEdgeCriteria(vertex, inputId,
- // GraphEdgeLabels.GET_INPUT, NodeTypeEnum.PropertyValue,
- // PropertyValueData.class, props);
- Either<List<ImmutablePair<PropertyValueData, GraphEdge>>, TitanOperationStatus> propertyImplNodes = titanGenericDao.getChildrenNodes(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), inputId, GraphEdgeLabels.GET_INPUT, NodeTypeEnum.PropertyValue, PropertyValueData.class);
-
- if (propertyImplNodes.isRight()) {
- TitanOperationStatus status = propertyImplNodes.right().value();
- return Either.right(status);
- }
-
- List<ImmutablePair<PropertyValueData, GraphEdge>> list = propertyImplNodes.left().value();
-
- if (list == null || true == list.isEmpty()) {
- return Either.right(TitanOperationStatus.NOT_FOUND);
- }
-
- List<ComponentInstanceProperty> result = new ArrayList<>();
- for (ImmutablePair<PropertyValueData, GraphEdge> propertyValueDataPair : list) {
- PropertyValueData propertyValueData = propertyValueDataPair.left;
- String propertyValueUid = propertyValueData.getUniqueId();
- String value = propertyValueData.getValue();
-
- String componentInstanceId = (String) propertyValueDataPair.right.getProperties().get(GraphEdgePropertiesDictionary.OWNER_ID.getProperty());
-
- Either<ImmutablePair<PropertyData, GraphEdge>, TitanOperationStatus> propertyDefRes = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.PropertyValue), propertyValueUid, GraphEdgeLabels.PROPERTY_IMPL, NodeTypeEnum.Property, PropertyData.class);
- if (propertyDefRes.isRight()) {
- TitanOperationStatus status = propertyDefRes.right().value();
- return Either.right(status);
- }
-
- ImmutablePair<PropertyData, GraphEdge> propertyDefPair = propertyDefRes.left().value();
- PropertyData propertyData = propertyDefPair.left;
- String propertyUniqueId = (String) propertyData.getPropertyDataDefinition().getUniqueId();
-
- Either<TitanVertex, TitanOperationStatus> originVertexEither = titanGenericDao.getVertexByProperty(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), propertyUniqueId);
- if (originVertexEither.isRight()) {
- log.debug("Failed to fetch vertex of property for id {} error {}", propertyUniqueId, originVertexEither.right().value());
- return Either.right(originVertexEither.right().value());
- }
- TitanVertex originVertex = originVertexEither.left().value();
- Iterator<Edge> edgeIter = originVertex.edges(Direction.IN, GraphEdgeLabels.PROPERTY.getProperty());
- if (edgeIter == null) {
- return Either.right(TitanOperationStatus.NOT_FOUND);
- }
-
- String propertyName = "";
-
- while (edgeIter.hasNext()) {
- TitanEdge edge = (TitanEdge) edgeIter.next();
- propertyName = (String) edge.property(GraphEdgePropertiesDictionary.NAME.getProperty()).value();
- }
-
- ComponentInstanceProperty resourceInstanceProperty = new ComponentInstanceProperty();
- // set property original unique id
- resourceInstanceProperty.setUniqueId(propertyUniqueId);
- // set resource id
- // TODO: esofer add resource id
- resourceInstanceProperty.setParentUniqueId(null);
- // set value
- resourceInstanceProperty.setValue(value);
- // set property value unique id
- resourceInstanceProperty.setValueUniqueUid(propertyValueData.getUniqueId());
- // set rules
- resourceInstanceProperty.setRules(propertyValueData.getRules());
- resourceInstanceProperty.setType(propertyData.getPropertyDataDefinition().getType());
- resourceInstanceProperty.setSchema(propertyData.getPropertyDataDefinition().getSchema());
- resourceInstanceProperty.setName(propertyName);
- resourceInstanceProperty.setComponentInstanceId(componentInstanceId);
-
-
- result.add(resourceInstanceProperty);
- }
-
- return Either.left(result);
- }
-
+ @Override
public ComponentInstanceInput buildResourceInstanceInput(InputValueData propertyValueData, ComponentInstanceInput resourceInstanceInput) {
String value = propertyValueData.getValue();
@@ -1202,271 +273,5 @@ public class InputsOperation extends AbstractOperation implements IInputsOperati
return instanceProperty;
}
- public Either<List<ComponentInstanceInput>, TitanOperationStatus> getAllInputsOfResourceInstance(ComponentInstance compInstance) {
-
- Either<List<ComponentInstanceInput>, TitanOperationStatus> result;
-
- return getAllInputsOfResourceInstanceOnlyInputDefId(compInstance.getUniqueId());
-
- }
-
-
-
- private Either<List<InputDefinition>, StorageOperationStatus> createInputsFromProperty(String resourceId, NodeTypeEnum nodeType, Map<String, DataTypeDefinition> dataTypes, List<InputDefinition> resList, Map<String, List<ComponentInstancePropInput>> newInputsPropsMap) {
- for (Entry<String, List<ComponentInstancePropInput>> entry : newInputsPropsMap.entrySet()) {
- String compInstId = entry.getKey();
- List<ComponentInstancePropInput> properties = entry.getValue();
-
- Either<TitanVertex, TitanOperationStatus> ciVertexEither = titanGenericDao.getVertexByProperty(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), compInstId);
- if (ciVertexEither.isRight()) {
- log.debug("Failed to fetch vertex of resource instance for id {} error {}", compInstId, ciVertexEither.right().value());
- return Either.right( DaoStatusConverter.convertTitanStatusToStorageStatus(ciVertexEither.right().value()));
- }
- TitanVertex ciVertex = ciVertexEither.left().value();
-
-
- //String originType = (String) titanGenericDao.getProperty(originVertex, GraphPropertiesDictionary.LABEL.getProperty());
- String compInstname = (String) titanGenericDao.getProperty(ciVertex, GraphPropertiesDictionary.NORMALIZED_NAME.getProperty());
- String inputName = compInstname;
-
- if (properties != null && !properties.isEmpty()) {
- for (ComponentInstancePropInput propInput : properties) {
- Either<InputDefinition, StorageOperationStatus> createInputRes = createInputForComponentInstance(resourceId, nodeType, dataTypes, compInstId, inputName, propInput);
-
- if (createInputRes.isRight()) {
- log.debug("Failed to create input of resource instance for id {} error {}", compInstId, createInputRes.right().value());
- return Either.right(createInputRes.right().value());
- }
-
- resList.add(createInputRes.left().value());
-
- }
- }
-
- }
- return Either.left(resList);
- }
-
- private Either<InputDefinition, StorageOperationStatus> createInputForComponentInstance(String resourceId, NodeTypeEnum nodeType, Map<String, DataTypeDefinition> dataTypes, String compInstId, String inputName, ComponentInstancePropInput propInput) {
- String propertiesName = propInput.getPropertiesName() ;
- PropertyDefinition selectedProp = propInput.getInput();
- String[] parsedPropNames = propInput.getParsedPropNames();
- if(parsedPropNames != null){
- for(String str: parsedPropNames){
- inputName += "_" + str;
- }
- } else {
- inputName += "_" + propInput.getName();
- }
-
- InputDefinition input = null;
- ComponentInstanceProperty prop = propInput;
-
- if(propertiesName != null && !propertiesName.isEmpty() && selectedProp != null){
- input = new InputDefinition(selectedProp);
- }else{
- input = new InputDefinition(prop);
- input.setName(inputName + "_" + prop.getName());
-
- }
- input.setName(inputName);
-
- JSONObject jobject = new JSONObject();
-
-
- if(prop.getValueUniqueUid() == null || prop.getValueUniqueUid().isEmpty()){
- if(propertiesName != null && !propertiesName.isEmpty() && selectedProp != null){
-
- jobject = createJSONValueForProperty(parsedPropNames.length -1, parsedPropNames, jobject, inputName);
- prop.setValue(jobject.toJSONString());
-
- }else{
-
- jobject.put(GET_INPUT, input.getName());
- prop.setValue(jobject.toJSONString());
-
-
- }
- Either<Integer, StorageOperationStatus> increaseCounterRes = componentInstanceOperation.increaseAndGetResourceInstanceSpecificCounter(compInstId, GraphPropertiesDictionary.PROPERTY_COUNTER, true);
- if (increaseCounterRes.isRight()) {
- log.debug("Failed to increase resource property counter {} to resource instance {}", prop, compInstId);
-
- return Either.right( increaseCounterRes.right().value());
- }
- Integer index = increaseCounterRes.left().value();
- Either<ComponentInstanceProperty, StorageOperationStatus> result = componentInstanceOperation.addPropertyValueToResourceInstance(prop, compInstId, false, index, true);
- if (result.isRight()) {
- log.debug("Failed to add property value {} to resource instance {}", prop, compInstId);
- return Either.right( result.right().value());
- }
- prop = result.left().value();
-
- }else{
-
- String value = prop.getValue();
- if(value != null){
- Object objValue = new Yaml().load(value);
- if( objValue instanceof Map || objValue instanceof List ){
- if(propertiesName == null ||propertiesName.isEmpty()){
- jobject.put(GET_INPUT, input.getName());
- prop.setValue(jobject.toJSONString());
- prop.setRules(null);
-
- }else{
- Map<String, Object> mappedToscaTemplate = (Map<String, Object>) objValue;
- createInputValue(mappedToscaTemplate, 1, parsedPropNames, inputName);
- Gson gson = new Gson();
- String json = gson.toJson(mappedToscaTemplate);
- prop.setValue(json);
- prop.setRules(null);
- }
-
- }else{
- jobject.put(GET_INPUT, input.getName());
- prop.setValue(jobject.toJSONString());
- prop.setRules(null);
- }
- }else{
- jobject.put(GET_INPUT, input.getName());
- prop.setValue(jobject.toJSONString());
- prop.setRules(null);
- }
-
- Either<PropertyValueData, TitanOperationStatus> eitherStatus = componentInstanceOperation.updatePropertyOfResourceInstance(prop, compInstId, false);
-
- if (eitherStatus.isRight()) {
- log.error("Failed to add property value {} to resource instance {} in Graph. status is {}", prop, compInstId, eitherStatus.right().value().name());
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(eitherStatus.right().value()));
-
- } else {
- PropertyValueData propertyValueData = eitherStatus.left().value();
-
- prop = propertyOperation.buildResourceInstanceProperty(propertyValueData, prop);
-
- log.debug("The returned ResourceInstanceProperty is {}", prop);
-
- Either<String, TitanOperationStatus> findDefaultValue = propertyOperation.findDefaultValueFromSecondPosition(prop.getPath(), propertyValueData.getUniqueId(), prop.getDefaultValue());
- if (findDefaultValue.isRight()) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(findDefaultValue.right().value()));
-
- }
- String defaultValue = findDefaultValue.left().value();
- prop.setDefaultValue(defaultValue);
- log.debug("The returned default value in ResourceInstanceProperty is {}", defaultValue);
-
- prop.setComponentInstanceId(compInstId);
-
-
-
- }
-
-
- }
-
- StorageOperationStatus validateAndUpdateProperty = validateAndUpdateProperty(input, dataTypes);
- if (validateAndUpdateProperty != StorageOperationStatus.OK) {
- log.error("Property {} is invalid. Status is {}", input, validateAndUpdateProperty);
- return Either.right(validateAndUpdateProperty);
- }
-
- Either<InputsData, TitanOperationStatus> addPropertyToGraph = addInputToGraph(input.getName(), input, resourceId, nodeType);
-
- if (addPropertyToGraph.isRight()) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(addPropertyToGraph.right().value()));
- }
- InputDefinition createdInputyDefinition = convertInputDataToInputDefinition(addPropertyToGraph.left().value());
- createdInputyDefinition.setName(input.getName());
- createdInputyDefinition.setParentUniqueId(resourceId);
-
- TitanOperationStatus status = associatePropertyToInput(compInstId, createdInputyDefinition.getUniqueId(), prop, null);
- if (status != TitanOperationStatus.OK) {
- log.debug("Failed to associate input {} tp property value{} ", createdInputyDefinition.getName(), prop.getValueUniqueUid());
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- }
-
- return Either.left(createdInputyDefinition);
-
- }
-
- private JSONObject createJSONValueForProperty (int i, String [] parsedPropNames, JSONObject ooj, String inputName){
-
- while(i >= 1){
- if( i == parsedPropNames.length -1){
- JSONObject jobProp = new JSONObject();
- jobProp.put(GET_INPUT, inputName);
- ooj.put(parsedPropNames[i], jobProp);
- i--;
- return createJSONValueForProperty (i, parsedPropNames, ooj, inputName);
- }else{
- JSONObject res = new JSONObject();
- res.put(parsedPropNames[i], ooj);
- i --;
- res = createJSONValueForProperty (i, parsedPropNames, res, inputName);
- return res;
- }
- }
-
- return ooj;
- }
-
- public void resetInputName(Map<String, Object> lhm1, String inputName){
- for (Map.Entry<String, Object> entry : lhm1.entrySet()) {
- String key = entry.getKey();
- Object value = entry.getValue();
- if (value instanceof String && ((String) value).equalsIgnoreCase(inputName) && key.equals(GET_INPUT)) {
- value = "";
- lhm1.remove(key);
- } else if (value instanceof Map) {
- Map<String, Object> subMap = (Map<String, Object>)value;
- resetInputName(subMap, inputName);
- } else {
- continue;
- }
-
- }
- }
-
- private Map<String, Object> createInputValue(Map<String, Object> lhm1, int index, String[] inputNames, String inputName){
- while(index < inputNames.length){
- if(lhm1.containsKey(inputNames[index])){
- Object value = lhm1.get(inputNames[index]);
- if (value instanceof Map){
- if(index == inputNames.length -1){
- ((Map) value).put(GET_INPUT, inputName);
- return ((Map) value);
-
- }else{
- index++;
- return createInputValue((Map)value, index, inputNames, inputName);
- }
- }else{
- Map<String, Object> jobProp = new HashMap<>();
- if(index == inputNames.length -1){
- jobProp.put(GET_INPUT, inputName);
- lhm1.put(inputNames[index], jobProp);
- return lhm1;
- }else{
- lhm1.put(inputNames[index], jobProp);
- index++;
- return createInputValue(jobProp, index, inputNames, inputName);
- }
- }
- }else{
- Map<String, Object> jobProp = new HashMap<>();
- lhm1.put(inputNames[index], jobProp);
- if(index == inputNames.length -1){
- jobProp.put(GET_INPUT, inputName);
- return jobProp;
- }else{
- index++;
- return createInputValue(jobProp, index, inputNames, inputName);
- }
- }
- }
- return lhm1;
- }
-
-
-
}
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/InterfaceLifecycleOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/InterfaceLifecycleOperation.java
index a7c883b14e..1c03d579a0 100644
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/InterfaceLifecycleOperation.java
+++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/InterfaceLifecycleOperation.java
@@ -71,12 +71,6 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation
private TitanGenericDao titanGenericDao;
@Override
- public Either<InterfaceDefinition, StorageOperationStatus> addInterfaceToResource(InterfaceDefinition interf, String resourceId, String interfaceName) {
-
- return addInterfaceToResource(interf, resourceId, interfaceName, false);
- }
-
- @Override
public Either<InterfaceDefinition, StorageOperationStatus> addInterfaceToResource(InterfaceDefinition interf, String resourceId, String interfaceName, boolean inTransaction) {
return createInterfaceOnResource(interf, resourceId, interfaceName, true, inTransaction);
@@ -113,34 +107,6 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation
}
- private Either<TitanVertex, TitanOperationStatus> addOperationToGraph(InterfaceDefinition interf, String opName, Operation op, TitanVertex interfaceVertex) {
-
- String interfaceId = (String) titanGenericDao.getProperty(interfaceVertex, GraphPropertiesDictionary.UNIQUE_ID.getProperty());
- op.setUniqueId(UniqueIdBuilder.buildPropertyUniqueId(interfaceId, opName));
- OperationData operationData = new OperationData(op);
-
- log.debug("Before adding operation to graph {}", operationData);
- Either<TitanVertex, TitanOperationStatus> createOpNodeResult = titanGenericDao.createNode(operationData);
-
- if (createOpNodeResult.isRight()) {
- TitanOperationStatus opStatus = createOpNodeResult.right().value();
- log.error("Failed to add operation {} to graph. status is {}", opName, opStatus);
- return Either.right(opStatus);
- }
-
- Map<String, Object> props = new HashMap<String, Object>();
- props.put(GraphPropertiesDictionary.NAME.getProperty(), opName);
- TitanVertex operationVertex = createOpNodeResult.left().value();
- TitanOperationStatus createRelResult = titanGenericDao.createEdge(interfaceVertex, operationVertex, GraphEdgeLabels.INTERFACE_OPERATION, props);
-
- if (!createRelResult.equals(TitanOperationStatus.OK)) {
- log.error("Failed to associate operation {} to property {} in graph. status is {}", interfaceId, opName, createRelResult);
-
- return Either.right(createRelResult);
- }
- return Either.left(operationVertex);
- }
-
private InterfaceDefinition convertInterfaceDataToInterfaceDefinition(InterfaceData interfaceData) {
log.debug("The object returned after create interface is {}", interfaceData);
@@ -183,25 +149,6 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation
}
}
- private Either<TitanVertex, TitanOperationStatus> addInterfaceToGraph(InterfaceDefinition interfaceInfo, String interfaceName, String resourceId, TitanVertex metadataVertex) {
-
- InterfaceData interfaceData = new InterfaceData(interfaceInfo);
-
- String interfaceNameSplitted = getShortInterfaceName(interfaceInfo);
-
- interfaceInfo.setUniqueId(UniqueIdBuilder.buildPropertyUniqueId(resourceId, interfaceNameSplitted));
-
- Either<TitanVertex, TitanOperationStatus> existInterface = titanGenericDao.getVertexByProperty(interfaceData.getUniqueIdKey(), interfaceData.getUniqueId());
-
- if (existInterface.isRight()) {
-
- return createInterfaceNodeAndRelation(interfaceNameSplitted, resourceId, interfaceData, metadataVertex);
- } else {
- log.debug("Interface {} already exist", interfaceData.getUniqueId());
- return Either.right(TitanOperationStatus.ALREADY_EXIST);
- }
- }
-
private Either<InterfaceData, TitanOperationStatus> createInterfaceNodeAndRelation(String interfaceName, String resourceId, InterfaceData interfaceData, ResourceMetadataData resourceData) {
log.debug("Before adding interface to graph {}", interfaceData);
Either<InterfaceData, TitanOperationStatus> createNodeResult = titanGenericDao.createNode(interfaceData, InterfaceData.class);
@@ -804,70 +751,6 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation
}
@Override
- public StorageOperationStatus createInterfaceOnResource(InterfaceDefinition interf, String resourceId, String interfaceName, boolean failIfExist, boolean inTransaction, TitanVertex metadataVertex) {
-
- Either<TitanVertex, TitanOperationStatus> interfaceResult = addInterfaceToGraph(interf, interfaceName, resourceId, metadataVertex);
-
- if (interfaceResult.isRight()) {
- if (false == inTransaction) {
- titanGenericDao.rollback();
- }
- log.error("Failed to add interface {} to resource {}", interfaceName, resourceId);
- return DaoStatusConverter.convertTitanStatusToStorageStatus(interfaceResult.right().value());
- } else {
-
- if (false == inTransaction) {
- titanGenericDao.commit();
- }
- TitanVertex interfaceVertex = interfaceResult.left().value();
-
- // InterfaceDefinition interfaceDefResult =
- // convertInterfaceDataToInterfaceDefinition(interfaceData);
- Map<String, Operation> operations = interf.getOperationsMap();
- if (operations != null && !operations.isEmpty()) {
- Set<String> opNames = operations.keySet();
- for (String operationName : opNames) {
-
- Operation op = operations.get(operationName);
- Either<TitanVertex, TitanOperationStatus> operationResult = addOperationToGraph(interf, operationName, op, interfaceVertex);
- if (operationResult.isRight()) {
- if (false == inTransaction) {
- titanGenericDao.rollback();
- }
- log.error("Failed to add operation {} to interface {}", operationName, interfaceName);
- return DaoStatusConverter.convertTitanStatusToStorageStatus(operationResult.right().value());
- } else {
- if (false == inTransaction) {
- titanGenericDao.commit();
- }
- TitanVertex operationVertex = operationResult.left().value();
-
- ArtifactDefinition art = op.getImplementationArtifact();
- if (art != null) {
- String opId = (String) titanGenericDao.getProperty(operationVertex, GraphPropertiesDictionary.UNIQUE_ID.getProperty());
- StorageOperationStatus artRes = artifactOperation.addArifactToComponent(art, opId, NodeTypeEnum.InterfaceOperation, failIfExist, operationVertex);
- if (!artRes.equals(StorageOperationStatus.OK)) {
- if (false == inTransaction) {
- titanGenericDao.rollback();
- }
- log.error("Failed to add artifact {} to interface {}", operationName, interfaceName);
- return artRes;
- }
- }
- }
- }
- }
- return StorageOperationStatus.OK;
- }
-
- }
-
- @Override
- public Either<Operation, StorageOperationStatus> deleteInterfaceOperation(String resourceId, String interfaceName, String operationId) {
- return deleteInterfaceOperation(resourceId, interfaceName, operationId, false);
- }
-
- @Override
public Either<Operation, StorageOperationStatus> deleteInterfaceOperation(String resourceId, String interfaceName, String operationId, boolean inTransaction) {
Either<Operation, TitanOperationStatus> status = removeOperationOnGraph(resourceId, interfaceName, operationId);
@@ -889,29 +772,6 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation
}
- @Override
- public Either<InterfaceDefinition, StorageOperationStatus> deleteInterfaceOfResourceOnGraph(String resourceId, InterfaceDefinition interfaceDef, boolean inTransaction) {
-
- Map<String, Operation> operations = interfaceDef.getOperationsMap();
- String interfaceNameSplitted = getShortInterfaceName(interfaceDef);
- if (operations != null) {
- for (Entry<String, Operation> entry : operations.entrySet()) {
-
- Operation op = entry.getValue();
- Either<Operation, StorageOperationStatus> removeOperationFromResource = deleteInterfaceOperation(resourceId, interfaceNameSplitted, op.getUniqueId(), true);
- if (removeOperationFromResource.isRight()) {
- if (false == inTransaction) {
- titanGenericDao.rollback();
- }
- log.error("Failed to delete operation {} of interface {} resource {}", op.getUniqueId(), interfaceDef.getType(), resourceId);
- return Either.right(removeOperationFromResource.right().value());
- }
- }
- }
- return Either.left(interfaceDef);
-
- }
-
private Either<Operation, TitanOperationStatus> removeOperationOnGraph(String resourceId, String interfaceName, String operationId) {
log.debug("Before deleting operation from graph {}", operationId);
@@ -1091,27 +951,6 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation
}
}
- @Override
- public StorageOperationStatus associateInterfaceToNode(GraphNode node, InterfaceDefinition interfaceDefinition, TitanVertex metadataVertex) {
-
- Either<TitanVertex, TitanOperationStatus> interfaceData = titanGenericDao.getVertexByProperty(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Interface), interfaceDefinition.getUniqueId());
- if (interfaceData.isRight()) {
- return DaoStatusConverter.convertTitanStatusToStorageStatus(interfaceData.right().value());
- }
-
- Map<String, Object> properties = new HashMap<String, Object>();
-
- String interfaceName = getShortInterfaceName(interfaceDefinition);
-
- properties.put(GraphPropertiesDictionary.NAME.getProperty(), interfaceName.toLowerCase());
- TitanOperationStatus createRelation = titanGenericDao.createEdge(metadataVertex, interfaceData.left().value(), GraphEdgeLabels.INTERFACE, properties);
- if (!createRelation.equals(TitanOperationStatus.OK)) {
- return DaoStatusConverter.convertTitanStatusToStorageStatus(createRelation);
- }
-
- return StorageOperationStatus.OK;
- }
-
public String getShortInterfaceName(InterfaceDataDefinition interfaceDefinition) {
String[] packageName = interfaceDefinition.getType().split("\\.");
String interfaceName;
@@ -1130,41 +969,4 @@ public class InterfaceLifecycleOperation implements IInterfaceLifecycleOperation
return createInterfaceType(interf, false);
}
- @Override
- public Either<Operation, StorageOperationStatus> getSpecificOperation(String resourceId, String interfaceType, String operationName) {
- log.trace("Getting operation, resourceId {}, interfaceType {}, operationName {}", resourceId, interfaceType, operationName);
- Either<Map<String, InterfaceDefinition>, StorageOperationStatus> allInterfacesOfResource = getAllInterfacesOfResource(resourceId, false);
- if (allInterfacesOfResource.isRight() || allInterfacesOfResource.left().value() == null || allInterfacesOfResource.left().value().get(interfaceType) == null) {
- log.debug("Couldn't find interface definition of type {} for resource id {}", interfaceType, resourceId);
- return Either.right(allInterfacesOfResource.right().value());
- }
- InterfaceDefinition interfaceDefinition = allInterfacesOfResource.left().value().get(interfaceType);
- Map<String, Operation> operations = interfaceDefinition.getOperationsMap();
- if (operations == null || operations.get(operationName) == null) {
- log.debug("Couldn't find operation for operation name {}, interface type {}", operationName, interfaceType);
- return Either.right(StorageOperationStatus.GENERAL_ERROR);
- }
- return Either.left(operations.get(operationName));
- }
-
- @Override
- public Either<InterfaceDefinition, StorageOperationStatus> dissociateInterfaceFromNode(GraphNode node, InterfaceDefinition interfaceDefinition) {
-
- Either<InterfaceData, TitanOperationStatus> interfaceData = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Interface), interfaceDefinition.getUniqueId(), InterfaceData.class);
- if (interfaceData.isRight()) {
- log.debug("Couldn't find interface {}", interfaceDefinition);
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(interfaceData.right().value()));
- }
-
- InterfaceData value = interfaceData.left().value();
- Either<GraphRelation, TitanOperationStatus> deleteRelation = titanGenericDao.deleteRelation(node, value, GraphEdgeLabels.INTERFACE);
- if (deleteRelation.isRight()) {
- TitanOperationStatus status = deleteRelation.right().value();
- log.debug("Couldn't dissociate interface between node {} to node {}. Status is {}", node.getUniqueId(), value.getUniqueId(), status);
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- }
-
- return Either.left(interfaceDefinition);
- }
-
}
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/LifecycleOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/LifecycleOperation.java
deleted file mode 100644
index 2537891bbd..0000000000
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/LifecycleOperation.java
+++ /dev/null
@@ -1,1077 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.openecomp.sdc.be.model.operations.impl;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.commons.lang3.tuple.ImmutablePair;
-import org.openecomp.sdc.be.dao.graph.datatype.GraphEdge;
-import org.openecomp.sdc.be.dao.graph.datatype.GraphRelation;
-import org.openecomp.sdc.be.dao.graph.datatype.RelationEndPoint;
-import org.openecomp.sdc.be.dao.neo4j.GraphEdgeLabels;
-import org.openecomp.sdc.be.dao.neo4j.GraphPropertiesDictionary;
-import org.openecomp.sdc.be.dao.titan.TitanGenericDao;
-import org.openecomp.sdc.be.dao.titan.TitanOperationStatus;
-import org.openecomp.sdc.be.datatypes.components.ComponentMetadataDataDefinition;
-import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
-import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
-import org.openecomp.sdc.be.model.ArtifactDefinition;
-import org.openecomp.sdc.be.model.Component;
-import org.openecomp.sdc.be.model.ComponentParametersView;
-import org.openecomp.sdc.be.model.DistributionStatusEnum;
-import org.openecomp.sdc.be.model.LifecycleStateEnum;
-import org.openecomp.sdc.be.model.Resource;
-import org.openecomp.sdc.be.model.Service;
-import org.openecomp.sdc.be.model.User;
-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.ComponentMetadataData;
-import org.openecomp.sdc.be.resources.data.ResourceMetadataData;
-import org.openecomp.sdc.be.resources.data.ServiceMetadataData;
-import org.openecomp.sdc.be.resources.data.UniqueIdData;
-import org.openecomp.sdc.be.resources.data.UserData;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import fj.data.Either;
-
-@org.springframework.stereotype.Component("lifecycle-operation")
-public class LifecycleOperation implements ILifecycleOperation {
-
- public static final String VERSION_DELIMETER = ".";
- public static final String VERSION_DELIMETER_REGEXP = "\\.";
-
- public LifecycleOperation() {
- super();
- }
-
- private static Logger log = LoggerFactory.getLogger(LifecycleOperation.class.getName());
-
- @javax.annotation.Resource
- private ResourceOperation resourceOperation;
-
- @javax.annotation.Resource
- private ServiceOperation serviceOperation;
-
- @javax.annotation.Resource
- private ProductOperation productOperation;
-
- @javax.annotation.Resource
- private TitanGenericDao titanGenericDao;
-
- public ResourceOperation getResourceOperation() {
- return resourceOperation;
- }
-
- public void setResourceOperation(ResourceOperation resourceOperation) {
- this.resourceOperation = resourceOperation;
- }
-
- public ServiceOperation getServiceOperation() {
- return serviceOperation;
- }
-
- public ComponentOperation getComponentOperation(NodeTypeEnum componentType) {
- if (NodeTypeEnum.Service.equals(componentType)) {
- return serviceOperation;
- } else if (NodeTypeEnum.Resource.equals(componentType)) {
- return resourceOperation;
- } else if (NodeTypeEnum.Product.equals(componentType)) {
- return productOperation;
- }
- return null;
- }
-
- public void setServiceOperation(ServiceOperation serviceOperation) {
- this.serviceOperation = serviceOperation;
- }
-
- public TitanGenericDao getTitanGenericDao() {
- return titanGenericDao;
- }
-
- public void setTitanGenericDao(TitanGenericDao titanGenericDao) {
- this.titanGenericDao = titanGenericDao;
- }
-
- @Override
- public Either<User, StorageOperationStatus> getComponentOwner(String resourceId, NodeTypeEnum nodeType, boolean inTransaction) {
-
- Either<User, StorageOperationStatus> result = Either.right(StorageOperationStatus.GENERAL_ERROR);
- try {
-
- Either<ImmutablePair<UserData, GraphEdge>, TitanOperationStatus> parentNode = titanGenericDao.getParentNode(UniqueIdBuilder.getKeyByNodeType(nodeType), resourceId, GraphEdgeLabels.STATE, NodeTypeEnum.User, UserData.class);
-
- if (parentNode.isRight()) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(parentNode.right().value()));
- }
-
- ImmutablePair<UserData, GraphEdge> value = parentNode.left().value();
-
- User owner = new User(value.left);
- result = Either.left(owner);
-
- } finally {
- if (false == inTransaction) {
- titanGenericDao.commit();
- }
- }
- return result;
- }
-
- @Override
- public Either<? extends Component, StorageOperationStatus> checkoutComponent(NodeTypeEnum nodeType, Component component, User modifier, User currentOwner, boolean inTransaction) {
- Either<? extends Component, StorageOperationStatus> result = null;
-
- try {
- // update old component
- if (!component.getLifecycleState().equals(LifecycleStateEnum.CERTIFIED)) {
- component.setHighestVersion(false);
- ComponentOperation componentOperation = getComponentOperation(nodeType);
- Either<? extends Component, StorageOperationStatus> updateComponent = componentOperation.updateComponent(component, inTransaction, titanGenericDao, component.getClass(), nodeType);
- if (updateComponent.isRight()) {
- StorageOperationStatus error = updateComponent.right().value();
- log.debug("Couldn't set lifecycle for component {} to state {}, error: {}", component.getUniqueId(), LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT, error);
- return Either.right(error);
- }
-
- StorageOperationStatus changeStateToLastState = changeStateRelation(nodeType, component.getUniqueId(), currentOwner, GraphEdgeLabels.STATE, GraphEdgeLabels.LAST_STATE);
- if (!changeStateToLastState.equals(StorageOperationStatus.OK)) {
- result = Either.right(changeStateToLastState);
- return result;
- }
- }
-
- // clone the component
- result = cloneComponentForCheckout(component, nodeType, modifier);
- if (result.isRight()) {
- log.debug("Couldn't set lifecycle for component {} to state {}, error: {}", component.getUniqueId(), LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT, result.right().value());
- return result;
- }
-
- } finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- log.error("Going to execute rollback on graph.");
- titanGenericDao.rollback();
- } else {
- log.debug("Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
-
- return result;
- }
-
- private Either<? extends Component, StorageOperationStatus> cloneComponentForCertified(Component component, User modifier, Integer majorVersion) {
-
- // set new version
- String certifiedVersion = (majorVersion + 1) + VERSION_DELIMETER + "0";
- component.setVersion(certifiedVersion);
- component.setLifecycleState(LifecycleStateEnum.CERTIFIED);
- component.setLastUpdateDate(null);
- component.setLastUpdaterUserId(modifier.getUserId());
- component.setHighestVersion(true);
-
- ComponentOperation componentOperation = getComponentOperation(component.getComponentType().getNodeType());
- Either<? extends Component, StorageOperationStatus> cloneComponentResult = componentOperation.cloneComponent(component, certifiedVersion, LifecycleStateEnum.CERTIFIED, true);
-
- return cloneComponentResult;
- }
-
- @Override
- public Either<? extends Component, StorageOperationStatus> undoCheckout(NodeTypeEnum nodeType, Component component, User modifier, User currentOwner, boolean inTransaction) {
- Either<? extends Component, StorageOperationStatus> result = null;
- ComponentOperation componentOperation = getComponentOperation(nodeType);
-
- // this is in case prevVersion is 0.0 - returning OOTB component
- Component prevComponent = componentOperation.getDefaultComponent();
- try {
- // find previous version
- String[] versionParts = component.getVersion().split(VERSION_DELIMETER_REGEXP);
- Integer minorVersion = Integer.parseInt(versionParts[1]) - 1;
- String previousVersion = versionParts[0] + VERSION_DELIMETER + minorVersion;
-
- if (!previousVersion.equals("0.0")) {
- Either<? extends Component, StorageOperationStatus> updateOldResourceResult = updateOldComponentBeforeUndoCheckout(componentOperation, prevComponent, component, previousVersion, nodeType, true);
- if (updateOldResourceResult.isRight()) {
- result = updateOldResourceResult;
- return result;
- }
- prevComponent = updateOldResourceResult.left().value();
- }
-
- // delete the component
- Either<? extends Component, StorageOperationStatus> deleteResourceResult = componentOperation.deleteComponent(component.getUniqueId(), true);
- if (deleteResourceResult.isRight()) {
- result = deleteResourceResult;
- return result;
- }
-
- // return the deleted resource
- result = Either.left(prevComponent);
-
- return result;
- } finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- log.error("Going to execute rollback on graph.");
- titanGenericDao.rollback();
- } else {
- log.debug("Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
-
- }
-
- @Override
- public Either<? extends Component, StorageOperationStatus> checkinComponent(NodeTypeEnum nodeType, Component component, User modifier, User owner, boolean inTransaction) {
- Either<? extends Component, StorageOperationStatus> result = null;
- try {
- StorageOperationStatus updateCheckinInGraph = updateCheckinInGraph(nodeType, component.getUniqueId(), component.getLifecycleState(), modifier, owner);
- if (!updateCheckinInGraph.equals(StorageOperationStatus.OK)) {
- log.error("failed to update state of resource {}. status={}", component.getUniqueId(), updateCheckinInGraph);
- return Either.right(updateCheckinInGraph);
- }
- LifecycleStateEnum state = LifecycleStateEnum.NOT_CERTIFIED_CHECKIN;
- ComponentParametersView componentParametersView = buildFilterForFetchComponentAfterChangeState();
- result = updateComponentMD(component, modifier, state, nodeType, componentParametersView);
- if (result.isRight()) {
- log.debug("Couldn't set lifecycle for component {} to state {}, error: {}", component.getUniqueId(), state, result.right().value());
- }
- return result;
-
- } finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- log.error("Going to execute rollback on graph.");
- titanGenericDao.rollback();
- } else {
- log.debug("Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
- }
-
- private ComponentParametersView buildFilterForFetchComponentAfterChangeState() {
- ComponentParametersView componentParametersView = new ComponentParametersView();
- componentParametersView.disableAll();
- componentParametersView.setIgnoreUsers(false);
- // Used when we running multiple change states and want to use the
- // result from another change
- // state(LifecycleOperationTest.certificationStatusChange)
- componentParametersView.setIgnoreCategories(false);
- return componentParametersView;
- }
-
- private StorageOperationStatus updateCheckinInGraph(NodeTypeEnum componentType, String componentId, LifecycleStateEnum state, User modifier, User owner) {
-
- // check if we cancel rfc
- if (state.equals(LifecycleStateEnum.READY_FOR_CERTIFICATION)) {
-
- // remove last checkin
- Map<String, Object> props = new HashMap<String, Object>();
- props.put(GraphPropertiesDictionary.STATE.getProperty(), LifecycleStateEnum.NOT_CERTIFIED_CHECKIN);
- UniqueIdData resourceData = new UniqueIdData(componentType, componentId);
- Either<GraphRelation, TitanOperationStatus> deleteResult = titanGenericDao.deleteIncomingRelationByCriteria(resourceData, GraphEdgeLabels.LAST_STATE, props);
- if (deleteResult.isRight()) {
- log.debug("failed to update last state relation");
- return StorageOperationStatus.INCONSISTENCY;
- }
- }
-
- // remove CHECKOUT relation
- StorageOperationStatus removeUserToResourceRelation = removeUserToResourceRelation(componentType, owner.getUserId(), componentId, GraphEdgeLabels.STATE);
- if (!removeUserToResourceRelation.equals(StorageOperationStatus.OK)) {
- return removeUserToResourceRelation;
- }
-
- // create CHECKIN relation
- Map<String, Object> props = new HashMap<String, Object>();
- props.put(GraphPropertiesDictionary.STATE.getProperty(), LifecycleStateEnum.NOT_CERTIFIED_CHECKIN);
- StorageOperationStatus createUserToResourceRelation = createUserToResourceRelation(componentType, modifier.getUserId(), componentId, GraphEdgeLabels.STATE, props);
- if (!createUserToResourceRelation.equals(StorageOperationStatus.OK)) {
- return createUserToResourceRelation;
- }
-
- return StorageOperationStatus.OK;
- }
-
- @Override
- public Either<? extends Component, StorageOperationStatus> requestCertificationComponent(NodeTypeEnum nodeType, Component component, User modifier, User owner, boolean inTransaction) {
- Either<? extends Component, StorageOperationStatus> result = null;
- try {
- StorageOperationStatus updateRfcOnGraph = updateRfcOnGraph(nodeType, component.getUniqueId(), component.getLifecycleState(), modifier, owner);
- if (!updateRfcOnGraph.equals(StorageOperationStatus.OK)) {
- log.error("failed to update state of resource {}. status={}", component.getUniqueId(), updateRfcOnGraph);
- return Either.right(updateRfcOnGraph);
- }
-
- LifecycleStateEnum state = LifecycleStateEnum.READY_FOR_CERTIFICATION;
-
- ComponentParametersView componentParametersView = buildFilterForFetchComponentAfterChangeState();
-
- result = updateComponentMD(component, modifier, state, nodeType, componentParametersView);
- if (result.isRight()) {
- log.debug("Couldn't set lifecycle for component {} to state {}, error: {}", component.getUniqueId(), state, result.right().value());
- return result;
- }
- return result;
-
- } finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- log.error("Going to execute rollback on graph.");
- titanGenericDao.rollback();
- } else {
- log.debug("Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
- }
-
- private StorageOperationStatus updateRfcOnGraph(NodeTypeEnum componentType, String componentId, LifecycleStateEnum state, User modifier, User owner) {
-
- if (state.equals(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT)) {
- // if this is atomic checkin + RFC: create checkin relation
-
- // remove CHECKOUT relation
- StorageOperationStatus relationStatus = removeUserToResourceRelation(componentType, owner.getUserId(), componentId, GraphEdgeLabels.STATE);
- if (!relationStatus.equals(StorageOperationStatus.OK)) {
- return relationStatus;
- }
-
- // create CHECKIN relation
- Map<String, Object> props = new HashMap<String, Object>();
- props.put(GraphPropertiesDictionary.STATE.getProperty(), LifecycleStateEnum.NOT_CERTIFIED_CHECKIN);
- relationStatus = createUserToResourceRelation(componentType, modifier.getUserId(), componentId, GraphEdgeLabels.LAST_STATE, props);
- if (!relationStatus.equals(StorageOperationStatus.OK)) {
- return relationStatus;
- }
- } else {
- StorageOperationStatus changeStatus = changeRelationLabel(componentType, componentId, owner, GraphEdgeLabels.STATE, GraphEdgeLabels.LAST_STATE);
- if (!changeStatus.equals(StorageOperationStatus.OK)) {
- return changeStatus;
- }
- }
-
- // create RFC relation
- Map<String, Object> props = new HashMap<String, Object>();
- props.put(GraphPropertiesDictionary.STATE.getProperty(), LifecycleStateEnum.READY_FOR_CERTIFICATION);
- StorageOperationStatus changeRelationLabel = createUserToResourceRelation(componentType, modifier.getUserId(), componentId, GraphEdgeLabels.STATE, props);
- if (!changeRelationLabel.equals(StorageOperationStatus.OK)) {
- return changeRelationLabel;
- }
- return StorageOperationStatus.OK;
- }
-
- private StorageOperationStatus changeRelationLabel(NodeTypeEnum componentType, String componentId, User owner, GraphEdgeLabels prevLabel, GraphEdgeLabels toLabel) {
- UniqueIdData resourceV = new UniqueIdData(componentType, componentId);
- UserData userV = new UserData();
- userV.setUserId(owner.getUserId());
- Either<GraphRelation, TitanOperationStatus> replaceRelationLabelResult = titanGenericDao.replaceRelationLabel(userV, resourceV, prevLabel, toLabel);
- if (replaceRelationLabelResult.isRight()) {
- log.error("failed to replace label from last state to state");
- return DaoStatusConverter.convertTitanStatusToStorageStatus(replaceRelationLabelResult.right().value());
- }
- return StorageOperationStatus.OK;
- }
-
- @Override
- public Either<? extends Component, StorageOperationStatus> startComponentCertification(NodeTypeEnum nodeType, Component component, User modifier, User owner, boolean inTransaction) {
- Either<? extends Component, StorageOperationStatus> result = null;
- try {
- StorageOperationStatus updateOnGraph = updateStartCertificationOnGraph(nodeType, component.getUniqueId(), modifier, owner);
- if (!updateOnGraph.equals(StorageOperationStatus.OK)) {
- log.error("failed to update state of resource {}. status={}", component.getUniqueId(), updateOnGraph);
- return Either.right(updateOnGraph);
- }
-
- LifecycleStateEnum state = LifecycleStateEnum.CERTIFICATION_IN_PROGRESS;
- ComponentParametersView componentParametersView = buildFilterForFetchComponentAfterChangeState();
-
- result = updateComponentMD(component, modifier, state, nodeType, componentParametersView);
- if (result.isRight()) {
- log.debug("Couldn't set lifecycle for component {} to state {}, error: {}", component.getUniqueId(), state, result.right().value());
- }
- return result;
-
- } finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- log.error("Going to execute rollback on graph.");
- titanGenericDao.rollback();
- } else {
- log.debug("Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
- }
-
- private StorageOperationStatus updateStartCertificationOnGraph(NodeTypeEnum componentType, String componentId, User modifier, User owner) {
- StorageOperationStatus changeRelationLabel = changeRelationLabel(componentType, componentId, owner, GraphEdgeLabels.STATE, GraphEdgeLabels.LAST_STATE);
- if (!changeRelationLabel.equals(StorageOperationStatus.OK)) {
- return changeRelationLabel;
- }
-
- Map<String, Object> props = new HashMap<String, Object>();
- props.put(GraphPropertiesDictionary.STATE.getProperty(), LifecycleStateEnum.CERTIFICATION_IN_PROGRESS);
-
- StorageOperationStatus createUserToResourceRelation = createUserToResourceRelation(componentType, modifier.getUserId(), componentId, GraphEdgeLabels.STATE, props);
- if (!createUserToResourceRelation.equals(StorageOperationStatus.OK)) {
- return createUserToResourceRelation;
- }
- return StorageOperationStatus.OK;
- }
-
- @Override
- public Either<? extends Component, StorageOperationStatus> certifyComponent(NodeTypeEnum nodeType, Component component, User modifier, User currentOwner, boolean inTransaction) {
- Either<? extends Component, StorageOperationStatus> result = null;
-
- try {
- String resourceIdBeforeCertify = component.getUniqueId();
- String[] versionParts = component.getVersion().split(VERSION_DELIMETER_REGEXP);
- Integer majorVersion = Integer.parseInt(versionParts[0]);
-
- // update old certified resource
- if (majorVersion > 0) {
- StorageOperationStatus updateLastCertifiedResource = StorageOperationStatus.OK;
- updateLastCertifiedResource = updateLastCertifiedComponent(component, majorVersion);
- if (!updateLastCertifiedResource.equals(StorageOperationStatus.OK)) {
- return Either.right(updateLastCertifiedResource);
- }
- }
-
- // clone the resource
- Either<? extends Component, StorageOperationStatus> createResourceResult = Either.right(StorageOperationStatus.GENERAL_ERROR);
- switch (nodeType) {
- case Service:
- case Resource:
- createResourceResult = cloneComponentForCertified(component, modifier, majorVersion);
- break;
- default:
- log.error("component object is with type {} . It's not supported type");
- result = Either.right(StorageOperationStatus.BAD_REQUEST);
- return result;
- }
-
- if (createResourceResult.isRight()) {
- log.error("failed to create new resource version for checkout.");
- result = createResourceResult;
- return createResourceResult;
- }
-
- Component certifiedResource = createResourceResult.left().value();
-
- // add rfc relation to preserve follower information
- StorageOperationStatus addRfcRelation = addRfcRelationToCertfiedComponent(nodeType, resourceIdBeforeCertify, certifiedResource.getUniqueId());
- if (!addRfcRelation.equals(StorageOperationStatus.OK)) {
- result = Either.right(addRfcRelation);
- return result;
- }
-
- result = Either.left(certifiedResource);
-
- } finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- log.error("Going to execute rollback on graph.");
- titanGenericDao.rollback();
- } else {
- log.debug("Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
-
- return result;
- }
-
- @Override
- public Either<Boolean, StorageOperationStatus> deleteOldComponentVersions(NodeTypeEnum nodeType, String componentName, String uuid, boolean inTransaction) {
-
- Either<Boolean, StorageOperationStatus> result = null;
- ComponentOperation componentOperation = getComponentOperation(nodeType);
-
- try {
- Either<List<Component>, StorageOperationStatus> oldVersionsToDelete = getComponentTempVersions(nodeType, uuid);
-
- if (oldVersionsToDelete.isRight()) {
- result = Either.right(oldVersionsToDelete.right().value());
- return result;
- }
-
- for (Component resourceToDelete : oldVersionsToDelete.left().value()) {
-
- Either<Component, StorageOperationStatus> updateResource = componentOperation.markComponentToDelete(resourceToDelete, inTransaction);
- if (updateResource.isRight()) {
- result = Either.right(updateResource.right().value());
- return result;
- }
- }
- result = Either.left(true);
- return result;
-
- } finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- log.error("Going to execute rollback on graph.");
- titanGenericDao.rollback();
- } else {
- log.debug("Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
- }
-
- private StorageOperationStatus addRfcRelationToCertfiedComponent(NodeTypeEnum componentType, String resourceIdBeforeCertify, String uniqueId) {
-
- // get user of certification request
- UniqueIdData componentV = new UniqueIdData(componentType, resourceIdBeforeCertify);
- Map<String, Object> props = new HashMap<String, Object>();
- props.put(GraphPropertiesDictionary.STATE.getProperty(), LifecycleStateEnum.READY_FOR_CERTIFICATION);
- Either<GraphRelation, TitanOperationStatus> rfcRelationResponse = titanGenericDao.getIncomingRelationByCriteria(componentV, GraphEdgeLabels.LAST_STATE, props);
- if (rfcRelationResponse.isRight()) {
- TitanOperationStatus status = rfcRelationResponse.right().value();
- log.error("failed to find rfc relation for component {}. status=", resourceIdBeforeCertify, status);
- return DaoStatusConverter.convertTitanStatusToStorageStatus(status);
- }
- GraphRelation rfcRelation = rfcRelationResponse.left().value();
- rfcRelation.setTo(new RelationEndPoint(componentType, GraphPropertiesDictionary.UNIQUE_ID.getProperty(), uniqueId));
-
- Either<GraphRelation, TitanOperationStatus> createRelationResponse = titanGenericDao.createRelation(rfcRelation);
- if (createRelationResponse.isRight()) {
- TitanOperationStatus status = createRelationResponse.right().value();
- log.error("failed to create rfc relation for component {}. status=", uniqueId, status);
- return DaoStatusConverter.convertTitanStatusToStorageStatus(status);
- }
- return StorageOperationStatus.OK;
-
- }
-
- private StorageOperationStatus updateLastCertifiedComponent(Component component, Integer majorVersion) {
-
- NodeTypeEnum nodeType = component.getComponentType().getNodeType();
- ComponentOperation componentOperation = getComponentOperation(nodeType);
- Map<String, Object> additionalQueryParams = null;
- if (nodeType == NodeTypeEnum.Resource) {
- ResourceTypeEnum resourceType = ((Resource) component).getResourceType();
- additionalQueryParams = new HashMap<String, Object>();
- additionalQueryParams.put(GraphPropertiesDictionary.RESOURCE_TYPE.getProperty(), resourceType.name());
- }
- Either<? extends Component, StorageOperationStatus> getLastCertifiedResponse = componentOperation.getComponentByNameAndVersion(component.getName(), majorVersion + VERSION_DELIMETER + "0", additionalQueryParams, true);
-
- if (getLastCertifiedResponse.isRight()) {
- log.error("failed to update last certified resource. status={}", getLastCertifiedResponse.right().value());
- return getLastCertifiedResponse.right().value();
- }
-
- Component lastCertified = getLastCertifiedResponse.left().value();
- lastCertified.setHighestVersion(false);
- Either<Component, StorageOperationStatus> updateResource = componentOperation.updateComponent(lastCertified, true);
- if (updateResource.isRight()) {
- log.error("failed to update last certified resource. status={}", updateResource.right().value());
- return updateResource.right().value();
- }
- return StorageOperationStatus.OK;
- }
-
- private Either<Component, StorageOperationStatus> cloneComponentForCheckout(Component component, NodeTypeEnum nodeType, User modifier) {
-
- ComponentOperation componentOperation = getComponentOperation(nodeType);
- String prevId = component.getUniqueId();
- // set new version
- Either<String, StorageOperationStatus> nextVersion = getNextVersion(component.getVersion());
- if (nextVersion.isRight()) {
- return Either.right(nextVersion.right().value());
- }
-
- // if checkout on certified service - init distribution status back
- if (nodeType == NodeTypeEnum.Service && component.getLifecycleState().equals(LifecycleStateEnum.CERTIFIED)) {
- ((Service) component).setDistributionStatus(DistributionStatusEnum.DISTRIBUTION_NOT_APPROVED);
- }
-
- String version = nextVersion.left().value();
- component.setLifecycleState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT);
- component.setLastUpdateDate(null);
- component.setLastUpdaterUserId(modifier.getUserId());
- component.setHighestVersion(true);
-
- // check version of resource does not exist. Note that resource type VF
- // can have same name as resource type VFC
- Map<String, Object> additionalQueryParams = null;
- if (nodeType == NodeTypeEnum.Resource) {
- ResourceTypeEnum resourceType = ((Resource) component).getResourceType();
- additionalQueryParams = new HashMap<String, Object>();
- additionalQueryParams.put(GraphPropertiesDictionary.RESOURCE_TYPE.getProperty(), resourceType.name());
- }
- String name = component.getComponentMetadataDefinition().getMetadataDataDefinition().getName();
- Either<Component, StorageOperationStatus> alreadyExistResult = componentOperation.getComponentByNameAndVersion(name, version, additionalQueryParams, true);
- if (alreadyExistResult.isLeft()) {
- log.debug("Component with name {} and version {} already exist", name, version);
- return Either.right(StorageOperationStatus.ENTITY_ALREADY_EXISTS);
-
- }
-
- StorageOperationStatus storageOperationStatus = alreadyExistResult.right().value();
- if (storageOperationStatus != StorageOperationStatus.NOT_FOUND) {
- log.debug("Unexpected error when checking if component with name {} and version {} already exist, error: {}", name, version, storageOperationStatus);
- return Either.right(storageOperationStatus);
- }
-
- Either<Component, StorageOperationStatus> cloneComponentResponse = componentOperation.cloneComponent(component, version, LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT, true);
-
- return cloneComponentResponse;
- }
-
- private Either<String, StorageOperationStatus> getNextVersion(String currVersion) {
- String[] versionParts = currVersion.split(VERSION_DELIMETER_REGEXP);
- if (versionParts == null || versionParts.length != 2) {
- log.error("invalid version {}", currVersion);
- return Either.right(StorageOperationStatus.BAD_REQUEST);
- }
-
- Integer minorVersion = Integer.parseInt(versionParts[1]) + 1;
- String newVersion = versionParts[0] + VERSION_DELIMETER + minorVersion;
- return Either.left(newVersion);
- }
-
- private StorageOperationStatus setRelationForCancelCertification(LifecycleStateEnum nextState, NodeTypeEnum componentType, String componentId) {
-
- StorageOperationStatus result = StorageOperationStatus.GENERAL_ERROR;
- Map<String, Object> props = new HashMap<String, Object>();
- UniqueIdData componentData = new UniqueIdData(componentType, componentId);
-
- // delete relation CERTIFICATION_IN_PROGRESS
- props.put(GraphPropertiesDictionary.STATE.getProperty(), LifecycleStateEnum.CERTIFICATION_IN_PROGRESS);
-
- Either<GraphRelation, TitanOperationStatus> deleteResult = titanGenericDao.deleteIncomingRelationByCriteria(componentData, GraphEdgeLabels.STATE, props);
- if (deleteResult.isRight()) {
- log.debug("failed to update last state relation");
- result = StorageOperationStatus.INCONSISTENCY;
- return result;
- }
-
- // delete relation READY_FOR_CERTIFICATION (LAST_STATE)
- props.put(GraphPropertiesDictionary.STATE.getProperty(), nextState);
-
- deleteResult = titanGenericDao.deleteIncomingRelationByCriteria(componentData, GraphEdgeLabels.LAST_STATE, props);
- if (deleteResult.isRight()) {
- log.debug("failed to update last state relation");
- result = StorageOperationStatus.INCONSISTENCY;
- return result;
- }
- GraphRelation origRelation = deleteResult.left().value();
-
- // create relation READY_FOR_CERTIFICATION (STATE)
- UserData user = new UserData();
- user.setUserId((String) origRelation.getFrom().getIdValue());
- Either<GraphRelation, TitanOperationStatus> createRelationResult = titanGenericDao.createRelation(user, componentData, GraphEdgeLabels.STATE, origRelation.toGraphMap());
-
- if (createRelationResult.isRight()) {
- log.error("failed to update last state relation. status={}", createRelationResult.right().value());
- result = StorageOperationStatus.INCONSISTENCY;
- return result;
- }
- return StorageOperationStatus.OK;
- }
-
- private StorageOperationStatus setRelationForFailCertification(LifecycleStateEnum nextState, NodeTypeEnum componentType, String componentId) {
-
- StorageOperationStatus result = null;
- Map<String, Object> props = new HashMap<String, Object>();
- UniqueIdData componentData = new UniqueIdData(componentType, componentId);
-
- // delete relation CERTIFICATION_IN_PROGRESS
- props.put(GraphPropertiesDictionary.STATE.getProperty(), LifecycleStateEnum.CERTIFICATION_IN_PROGRESS);
-
- Either<GraphRelation, TitanOperationStatus> deleteResult = titanGenericDao.deleteIncomingRelationByCriteria(componentData, GraphEdgeLabels.STATE, props);
- if (deleteResult.isRight()) {
- log.debug("failed to update last state relation");
- result = StorageOperationStatus.INCONSISTENCY;
- return result;
- }
-
- // delete relation READY_FOR_CERTIFICATION
- props.put(GraphPropertiesDictionary.STATE.getProperty(), LifecycleStateEnum.READY_FOR_CERTIFICATION);
-
- deleteResult = titanGenericDao.deleteIncomingRelationByCriteria(componentData, GraphEdgeLabels.LAST_STATE, props);
- if (deleteResult.isRight()) {
- log.debug("failed to update last state relation");
- result = StorageOperationStatus.INCONSISTENCY;
- return result;
- }
-
- // delete relation NOT_CERTIFIED_CHECKIN (in order to change to STATE)
- props.put(GraphPropertiesDictionary.STATE.getProperty(), LifecycleStateEnum.NOT_CERTIFIED_CHECKIN);
- deleteResult = titanGenericDao.deleteIncomingRelationByCriteria(componentData, GraphEdgeLabels.LAST_STATE, props);
- if (deleteResult.isRight()) {
- log.debug("failed to update last state relation");
- result = StorageOperationStatus.INCONSISTENCY;
- return result;
- }
-
- // create new STATE relation NOT_CERTIFIED_CHECKIN
- GraphRelation origRelation = deleteResult.left().value();
- UserData user = new UserData();
- user.setUserId((String) origRelation.getFrom().getIdValue());
- Either<GraphRelation, TitanOperationStatus> createRelationResult = titanGenericDao.createRelation(user, componentData, GraphEdgeLabels.STATE, origRelation.toGraphMap());
-
- if (createRelationResult.isRight()) {
- log.debug("failed to update last state relation");
- result = StorageOperationStatus.INCONSISTENCY;
- return result;
- }
-
- // delete relation LAST_MODIFIER (in order to change tester to designer)
- deleteResult = titanGenericDao.deleteIncomingRelationByCriteria(componentData, GraphEdgeLabels.LAST_MODIFIER, null);
- if (deleteResult.isRight()) {
- log.debug("failed to update last modifier relation");
- result = StorageOperationStatus.INCONSISTENCY;
- return result;
- }
-
- // create new LAST_MODIFIER relation
- origRelation = deleteResult.left().value();
- createRelationResult = titanGenericDao.createRelation(user, componentData, GraphEdgeLabels.LAST_MODIFIER, origRelation.toGraphMap());
- if (createRelationResult.isRight()) {
- log.debug("failed to update last state relation");
- result = StorageOperationStatus.INCONSISTENCY;
- return result;
- }
-
- return StorageOperationStatus.OK;
- }
-
- /**
- * update service metadata - lastUpdater and state
- *
- * @param component
- * @param modifier
- * @param nextState
- * @return
- */
- private Either<Component, StorageOperationStatus> updateComponentMD(Component component, User modifier, LifecycleStateEnum nextState, NodeTypeEnum nodeType, ComponentParametersView returnedComponentParametersViewFilter) {
-
- if (returnedComponentParametersViewFilter == null) {
- returnedComponentParametersViewFilter = new ComponentParametersView();
- }
-
- Either<Component, StorageOperationStatus> result = Either.right(StorageOperationStatus.GENERAL_ERROR);
- component.setLastUpdateDate(null);
- component.setLastUpdaterUserId(modifier.getUserId());
-
- ComponentOperation componentOperation = getComponentOperation(nodeType);
- ComponentParametersView filterParametersView = buildFilterForFetchComponentAfterChangeState();
- log.debug("updateComponentMD::updateComponentFilterResult start");
- result = componentOperation.updateComponentFilterResult(component, true, filterParametersView);
- log.debug("updateComponentMD::updateComponentFilterResult end");
- if (result.isRight()) {
- log.debug("Failed to update component for certification request, error: {}", result.right().value());
- return result;
- }
- log.debug("updateComponentMD::getAndUpdateMetadata start");
- // get service MD
- Either<ComponentMetadataData, TitanOperationStatus> componentDataResult = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(nodeType), component.getUniqueId(), ComponentMetadataData.class);
- if (componentDataResult.isRight()) {
- log.debug("failed to get service data from graph");
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(componentDataResult.right().value()));
- }
-
- // set state on resource
- ComponentMetadataData componentData = componentDataResult.left().value();
- componentData.getMetadataDataDefinition().setState(nextState.name());
- component.setLifecycleState(nextState);
- Either<ComponentMetadataData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(componentData, ComponentMetadataData.class);
- log.debug("updateComponentMD::getAndUpdateMetadata end");
- if (updateNode.isRight()) {
- log.error("Failed to update component {}. status is {}", component.getUniqueId(), updateNode.right().value());
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(updateNode.right().value()));
- return result;
- }
- log.debug("updateComponentMD::getAndUpdateMetadata start");
- Either<Object, StorageOperationStatus> serviceAfterChange = componentOperation.getComponent(component.getUniqueId(), returnedComponentParametersViewFilter, true);
- log.debug("updateComponentMD::getAndUpdateMetadata end");
- if (serviceAfterChange.isRight()) {
- log.error("Failed to get component {} after change. status is {}", component.getUniqueId(), updateNode.right().value());
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(updateNode.right().value()));
- return result;
- }
- return Either.left((Component) serviceAfterChange.left().value());
- }
-
- /**
- * update resouce metadata - lastUpdater and state
- *
- * @param resource
- * @param modifier
- * @param nextState
- * @return
- */
- private Either<Resource, StorageOperationStatus> updateResourceMD(Resource resource, User modifier, LifecycleStateEnum nextState) {
-
- Either<Resource, StorageOperationStatus> result;
- resource.setLastUpdateDate(null);
- resource.setLastUpdaterUserId(modifier.getUserId());
-
- result = resourceOperation.updateResource(resource, true);
- if (result.isRight()) {
- log.debug("failed to update resource for certification request.");
- return result;
- }
- // get resource MD
- Either<ResourceMetadataData, TitanOperationStatus> resourceDataResult = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource), resource.getUniqueId(), ResourceMetadataData.class);
- if (resourceDataResult.isRight()) {
- log.debug("failed to get resource data from graph");
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(resourceDataResult.right().value()));
- }
-
- // set state on resource
- ResourceMetadataData resourceData = resourceDataResult.left().value();
- resourceData.getMetadataDataDefinition().setState(nextState.name());
- resource.setLifecycleState(nextState);
- Either<ResourceMetadataData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(resourceData, ResourceMetadataData.class);
-
- if (updateNode.isRight()) {
- log.error("Failed to update resource {}. status is {}", resource.getUniqueId(), updateNode.right().value());
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(updateNode.right().value()));
- return result;
- }
- return Either.left(resource);
- }
-
- private Either<List<Component>, StorageOperationStatus> getComponentTempVersions(NodeTypeEnum nodeType, String uuid) {
-
- Either<List<Component>, StorageOperationStatus> result = Either.right(StorageOperationStatus.GENERAL_ERROR);
- List<Component> componentList = new ArrayList<Component>();
- ComponentOperation componentOperation = getComponentOperation(nodeType);
-
- Map<String, Object> hasProps = new HashMap<String, Object>();
- Map<String, Object> hasNotProps = new HashMap<String, Object>();
-
- createOldVersionsCriteria(nodeType, uuid, hasProps, hasNotProps);
-
- Either<List<ComponentMetadataData>, TitanOperationStatus> getByCriteria = titanGenericDao.getByCriteria(nodeType, hasProps, hasNotProps, ComponentMetadataData.class);
-
- if (getByCriteria.isRight()) {
- log.error("failed to get old versions for component, type:{}, id: {}", nodeType, uuid);
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(getByCriteria.right().value()));
- return result;
- }
-
- List<ComponentMetadataData> oldVersionComponents = getByCriteria.left().value();
- for (ComponentMetadataData component : oldVersionComponents) {
- Either<Component, StorageOperationStatus> resourceRes = componentOperation.getComponent(component.getMetadataDataDefinition().getUniqueId(), true);
- if (resourceRes.isRight()) {
- result = Either.right(resourceRes.right().value());
- return result;
- } else {
- componentList.add(resourceRes.left().value());
- }
- }
- result = Either.left(componentList);
- return result;
- }
-
- /*
- * private Either<List<Service>, StorageOperationStatus> getServiceTempVersions(NodeTypeEnum nodeType, String uuid) {
- *
- * Either<List<Service>, StorageOperationStatus> result = Either.right(StorageOperationStatus.GENERAL_ERROR); List<Service> resourceList = new ArrayList<Service>();
- *
- * Map<String, Object> hasProps = new HashMap<String, Object>(); Map<String, Object> hasNotProps = new HashMap<String, Object>();
- *
- * createOldVersionsCriteria(nodeType, uuid, hasProps, hasNotProps);
- *
- * Either<List<ServiceMetadataData>, TitanOperationStatus> getByCriteria = titanGenericDao.getByCriteria(NodeTypeEnum.Service, hasProps, hasNotProps, ServiceMetadataData.class);
- *
- * if (getByCriteria.isRight()) { log.error("failed to get old versions for {}", uuid); result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus( getByCriteria.right().value())); return result; }
- *
- * List<ServiceMetadataData> oldVersionResources = getByCriteria.left().value(); for (ServiceMetadataData resource : oldVersionResources) { Either<Service, StorageOperationStatus> resourceRes = serviceOperation.getService((String)
- * resource.getUniqueId(), true); if (resourceRes.isRight()) { result = Either.right(resourceRes.right().value()); return result; } else { resourceList.add(resourceRes.left().value()); } } result = Either.left(resourceList); return result; }
- */
- private void createOldVersionsCriteria(NodeTypeEnum nodeType, String uuid, Map<String, Object> hasProps, Map<String, Object> hasNotProps) {
-
- hasProps.put(GraphPropertiesDictionary.UUID.getProperty(), uuid);
- hasProps.put(GraphPropertiesDictionary.LABEL.getProperty(), nodeType.name().toLowerCase());
- hasNotProps.put(GraphPropertiesDictionary.STATE.getProperty(), LifecycleStateEnum.CERTIFIED.name());
- }
-
- private Either<? extends Component, StorageOperationStatus> updateOldComponentBeforeUndoCheckout(ComponentOperation componentOperation, Component prevComponent, Component currentComponent, String previousVersion, NodeTypeEnum nodeType,
- boolean inTransaction) {
-
- log.debug("update previous version of component");
- Map<String, Object> additionalQueryParams = new HashMap<String, Object>();
-
- if (nodeType == NodeTypeEnum.Resource) {
- ResourceTypeEnum resourceType = ((Resource) currentComponent).getResourceType();
-
- additionalQueryParams.put(GraphPropertiesDictionary.RESOURCE_TYPE.getProperty(), resourceType.name());
- }
- ComponentMetadataDataDefinition metadataDataDefinition = currentComponent.getComponentMetadataDefinition().getMetadataDataDefinition();
- Either<? extends Component, StorageOperationStatus> getOlderCompResult = componentOperation.getComponentByNameAndVersion(metadataDataDefinition.getName(), previousVersion, additionalQueryParams, true);
-
- // if previous version exist - set it as current version
- if (getOlderCompResult.isRight()) {
- if (StorageOperationStatus.NOT_FOUND.equals(getOlderCompResult.right().value())) {
- log.debug("No components by name and version: {} - {}", metadataDataDefinition.getName(), previousVersion);
- log.debug("Name may have changed, since the version isn't certified try to fetch by UUID {}", metadataDataDefinition.getUUID());
- additionalQueryParams.clear();
- additionalQueryParams.put(GraphPropertiesDictionary.UUID.getProperty(), metadataDataDefinition.getUUID());
- additionalQueryParams.put(GraphPropertiesDictionary.VERSION.getProperty(), previousVersion);
-
- Either<List<ComponentMetadataData>, TitanOperationStatus> byUUID = titanGenericDao.getByCriteria(nodeType, additionalQueryParams, ComponentMetadataData.class);
- if (byUUID.isRight()) {
- log.debug("Failed to fetch by UUID {}", metadataDataDefinition.getUUID());
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(byUUID.right().value()));
- }
- String prevVersionId = (String) byUUID.left().value().get(0).getUniqueId();
- Either<? extends Component, StorageOperationStatus> component = componentOperation.getComponent(prevVersionId, inTransaction);
- if (component.isRight()) {
- log.debug("Failed to fetch previous component by ID {}", prevVersionId);
- return Either.right(component.right().value());
- }
- prevComponent = component.left().value();
- } else {
- log.error("failed to find previous version. status={} ", getOlderCompResult.right().value());
- return getOlderCompResult;
- }
- } else {
- prevComponent = getOlderCompResult.left().value();
- }
-
- // if last resource is certified - don't touch it.
- if (prevComponent.getVersion().endsWith(".0")) {
- return Either.left(prevComponent);
- }
-
- prevComponent.setHighestVersion(true);
- Either<Component, StorageOperationStatus> updateCompResult = componentOperation.updateComponent(prevComponent, inTransaction);
- if (updateCompResult.isRight()) {
- log.debug("failed to update prev version of component");
- return updateCompResult;
- }
-
- User user = new User();
- user.setUserId(prevComponent.getLastUpdaterUserId());
- StorageOperationStatus changeStateRelation = changeStateRelation(nodeType, prevComponent.getUniqueId(), user, GraphEdgeLabels.LAST_STATE, GraphEdgeLabels.STATE);
- if (!changeStateRelation.equals(StorageOperationStatus.OK)) {
- return Either.right(changeStateRelation);
- }
-
- return Either.left(prevComponent);
- }
-
- private StorageOperationStatus changeStateRelation(NodeTypeEnum nodeType, String componentId, User currentOwner, GraphEdgeLabels from, GraphEdgeLabels to) {
- UniqueIdData componentData = new UniqueIdData(nodeType, componentId);
- UserData userData = new UserData();
- userData.setUserId(currentOwner.getUserId());
- Either<GraphRelation, TitanOperationStatus> replaceRelationLabelResult = titanGenericDao.replaceRelationLabel(userData, componentData, from, to);
- if (replaceRelationLabelResult.isRight()) {
- TitanOperationStatus titanStatus = replaceRelationLabelResult.right().value();
- log.error("failed to replace label from {} to {}. status = {}", from, to, titanStatus);
- StorageOperationStatus storageStatus = StorageOperationStatus.INCONSISTENCY;
- if (!titanStatus.equals(TitanOperationStatus.INVALID_ID)) {
- storageStatus = DaoStatusConverter.convertTitanStatusToStorageStatus(titanStatus);
- }
- return storageStatus;
- }
- return StorageOperationStatus.OK;
- }
-
- private StorageOperationStatus removeUserToResourceRelation(NodeTypeEnum componentType, String idFrom, String idTo, GraphEdgeLabels label) {
-
- UniqueIdData componentV = new UniqueIdData(componentType, idTo);
- UserData userV = new UserData();
- userV.setUserId(idFrom);
- // delete relation
- Either<GraphRelation, TitanOperationStatus> deleteRelationResult = titanGenericDao.deleteRelation(userV, componentV, label);
- if (deleteRelationResult.isRight()) {
- log.error("failed to delete relation. status={}", deleteRelationResult.right().value());
- return DaoStatusConverter.convertTitanStatusToStorageStatus(deleteRelationResult.right().value());
- }
- return StorageOperationStatus.OK;
- }
-
- private StorageOperationStatus createUserToResourceRelation(NodeTypeEnum componentType, String idFrom, String idTo, GraphEdgeLabels label, Map<String, Object> props) {
-
- UniqueIdData componentV = new UniqueIdData(componentType, idTo);
- UserData userV = new UserData();
- userV.setUserId(idFrom);
- // create relation
- Either<GraphRelation, TitanOperationStatus> createRelationResult = titanGenericDao.createRelation(userV, componentV, label, props);
- if (createRelationResult.isRight()) {
- log.error("failed to create relation. status={}", createRelationResult.right().value());
- return DaoStatusConverter.convertTitanStatusToStorageStatus(createRelationResult.right().value());
- }
- return StorageOperationStatus.OK;
- }
-
- @Override
- public Either<? extends Component, StorageOperationStatus> cancelOrFailCertification(NodeTypeEnum nodeType, Component component, User modifier, User owner, LifecycleStateEnum nextState, boolean inTransaction) {
-
- Either<? extends Component, StorageOperationStatus> result = Either.right(StorageOperationStatus.GENERAL_ERROR);
- try {
-
- ComponentParametersView componentParametersView = buildFilterForFetchComponentAfterChangeState();
- result = updateComponentMD(component, modifier, nextState, nodeType, componentParametersView);
- if (result.isRight()) {
- log.debug("Couldn't set lifecycle for component {} to state {}, error: {}", component.getUniqueId(), nextState, result.right().value());
- return result;
- }
- StorageOperationStatus status = StorageOperationStatus.OK;
- // cancel certification process
- if (nextState.equals(LifecycleStateEnum.READY_FOR_CERTIFICATION)) {
- status = setRelationForCancelCertification(nextState, nodeType, component.getUniqueId());
-
- } // fail certification
- else if (nextState.equals(LifecycleStateEnum.NOT_CERTIFIED_CHECKIN)) {
- status = setRelationForFailCertification(nextState, nodeType, component.getUniqueId());
- }
-
- if (!status.equals(StorageOperationStatus.OK)) {
- result = Either.right(status);
- }
- } finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- log.error("Going to execute rollback on graph.");
- titanGenericDao.rollback();
- } else {
- log.debug("Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
-
- return result;
- }
-
-}
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ProductOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ProductOperation.java
deleted file mode 100644
index 3d4fba36df..0000000000
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ProductOperation.java
+++ /dev/null
@@ -1,957 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.openecomp.sdc.be.model.operations.impl;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.stream.Collectors;
-import java.util.Set;
-
-import com.thinkaurelius.titan.core.TitanTransaction;
-import org.apache.commons.lang3.tuple.ImmutablePair;
-import org.openecomp.sdc.be.dao.api.ActionStatus;
-import org.openecomp.sdc.be.dao.graph.datatype.GraphEdge;
-import org.openecomp.sdc.be.dao.graph.datatype.GraphRelation;
-import org.openecomp.sdc.be.dao.neo4j.GraphEdgeLabels;
-import org.openecomp.sdc.be.dao.neo4j.GraphPropertiesDictionary;
-import org.openecomp.sdc.be.dao.titan.TitanOperationStatus;
-import org.openecomp.sdc.be.datatypes.category.CategoryDataDefinition;
-import org.openecomp.sdc.be.datatypes.category.GroupingDataDefinition;
-import org.openecomp.sdc.be.datatypes.category.SubCategoryDataDefinition;
-import org.openecomp.sdc.be.datatypes.elements.ProductMetadataDataDefinition;
-import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
-import org.openecomp.sdc.be.datatypes.enums.FilterKeyEnum;
-import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
-import org.openecomp.sdc.be.model.*;
-import org.openecomp.sdc.be.model.category.CategoryDefinition;
-import org.openecomp.sdc.be.model.category.GroupingDefinition;
-import org.openecomp.sdc.be.model.category.SubCategoryDefinition;
-import org.openecomp.sdc.be.model.operations.api.IProductOperation;
-import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
-import org.openecomp.sdc.be.resources.data.ComponentMetadataData;
-import org.openecomp.sdc.be.resources.data.ProductMetadataData;
-import org.openecomp.sdc.be.resources.data.ServiceMetadataData;
-import org.openecomp.sdc.be.resources.data.UserData;
-import org.openecomp.sdc.be.resources.data.category.CategoryData;
-import org.openecomp.sdc.be.resources.data.category.GroupingData;
-import org.openecomp.sdc.be.resources.data.category.SubCategoryData;
-import org.openecomp.sdc.common.util.ValidationUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.thinkaurelius.titan.core.TitanGraph;
-
-import fj.data.Either;
-
-@org.springframework.stereotype.Component("product-operation")
-public class ProductOperation extends ComponentOperation implements IProductOperation {
-
- private static Logger log = LoggerFactory.getLogger(ProductOperation.class.getName());
-
- public ProductOperation() {
- log.debug("ProductOperation created");
- }
-
- @Override
- protected ComponentMetadataData getMetaDataFromComponent(Component component) {
- return getProductMetadataDataFromProduct((Product) component);
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public <T> Either<T, StorageOperationStatus> getComponent(String id, boolean inTransaction) {
- return (Either<T, StorageOperationStatus>) getProduct(id, inTransaction);
- }
-
- // public <T> Either<T, StorageOperationStatus> getComponent_tx(String id,
- // boolean inTransaction) {
- // return (Either<T, StorageOperationStatus>) getProduct_tx(id,
- // inTransaction);
- // }
-
- @SuppressWarnings("unchecked")
- @Override
- protected <T> Either<T, StorageOperationStatus> getComponentByNameAndVersion(String name, String version, Map<String, Object> additionalParams, boolean inTransaction) {
- return (Either<T, StorageOperationStatus>) getByNamesAndVersion(GraphPropertiesDictionary.NAME.getProperty(), name, version, additionalParams, inTransaction);
- }
-
- @Override
- public <T> Either<T, StorageOperationStatus> getLightComponent(String id, boolean inTransaction) {
- return getLightComponent(id, NodeTypeEnum.Product, inTransaction);
- }
-
- @Override
- public <T> Either<List<T>, StorageOperationStatus> getFilteredComponents(Map<FilterKeyEnum, String> filters, boolean inTransaction) {
- return getFilteredComponents(filters, inTransaction, NodeTypeEnum.Product);
- }
-
- private Product convertProductDataToProduct(ProductMetadataData productData) {
- ProductMetadataDefinition productMetadataDefinition = new ProductMetadataDefinition((ProductMetadataDataDefinition) productData.getMetadataDataDefinition());
-
- Product product = new Product(productMetadataDefinition);
-
- return product;
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public <T> Either<T, StorageOperationStatus> updateComponent(T component, boolean inTransaction) {
- return (Either<T, StorageOperationStatus>) updateComponent((Component) component, inTransaction, titanGenericDao, Product.class, NodeTypeEnum.Product);
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public Either<Component, StorageOperationStatus> deleteComponent(String id, boolean inTransaction) {
- return (Either<Component, StorageOperationStatus>) (Either<?, StorageOperationStatus>) deleteProduct(id, inTransaction);
- }
-
- @Override
- public Either<List<ArtifactDefinition>, StorageOperationStatus> getAdditionalArtifacts(String resourceId, boolean recursively, boolean inTransaction) {
- // TODO Auto-generated method stub
- return null;
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public <T extends org.openecomp.sdc.be.model.Component> Either<T, StorageOperationStatus> getComponent(String id, Class<T> clazz) {
- return (Either<T, StorageOperationStatus>) getProduct(id, false);
- }
-
- @Override
- /**
- * Deletes the product node
- */
- public Either<Product, StorageOperationStatus> deleteProduct(String productId, boolean inTransaction) {
-
- Either<Product, StorageOperationStatus> result = Either.right(StorageOperationStatus.GENERAL_ERROR);
-
- try {
-
- Either<TitanGraph, TitanOperationStatus> graphResult = titanGenericDao.getGraph();
- if (graphResult.isRight()) {
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(graphResult.right().value()));
- return result;
- }
-
- Either<ProductMetadataData, TitanOperationStatus> productNode = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Product), productId, ProductMetadataData.class);
- if (productNode.isRight()) {
- TitanOperationStatus status = productNode.right().value();
- log.error("Failed to find product {}. status is {}", productId, status);
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
-
- Either<Product, StorageOperationStatus> productRes = getProduct(productId, true);
- if (productRes.isRight()) {
- StorageOperationStatus status = productRes.right().value();
- log.error("Failed to find product {}.status is {}", productId, status);
- result = Either.right(status);
- return result;
- }
- Product product = productRes.left().value();
-
- Either<List<ComponentInstance>, StorageOperationStatus> deleteAllInstancesRes = componentInstanceOperation.deleteAllComponentInstances(productId, NodeTypeEnum.Product, true);
- log.debug("After deleting instances under product {}.Result is {}", productId, deleteAllInstancesRes);
- if (deleteAllInstancesRes.isRight()) {
- StorageOperationStatus status = deleteAllInstancesRes.right().value();
- if (status != StorageOperationStatus.NOT_FOUND) {
- log.error("Failed to delete instances under product {}.status is {}", productId, status);
- result = Either.right(status);
- return result;
- }
- }
-
- Either<ProductMetadataData, TitanOperationStatus> deleteProductNodeRes = titanGenericDao.deleteNode(productNode.left().value(), ProductMetadataData.class);
- if (deleteProductNodeRes.isRight()) {
- TitanOperationStatus status = deleteProductNodeRes.right().value();
- log.error("Failed to delete product node {}. status is {}", productId, status);
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
-
- result = Either.left(product);
-
- return result;
-
- } finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- log.error("deleteProduct operation : Going to execute rollback on graph.");
- titanGenericDao.rollback();
- } else {
- log.debug("deleteProduct operation : Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
-
- }
-
- @Override
- public Either<List<Product>, StorageOperationStatus> getProductCatalogData(boolean inTransaction) {
-
- long start = System.currentTimeMillis();
- try {
- /*
- * Map<String, Object> propertiesToMatch = new HashMap<>();
- *
- * propertiesToMatch.put(GraphPropertiesDictionary.STATE.getProperty (), LifecycleStateEnum.CERTIFIED.name()); Either<List<ProductMetadataData>, TitanOperationStatus> lastVersionNodes = getLastVersion(NodeTypeEnum.Product,
- * propertiesToMatch, ProductMetadataData.class); if (lastVersionNodes.isRight() && lastVersionNodes.right().value() != TitanOperationStatus.NOT_FOUND) { return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus
- * (lastVersionNodes.right().value())); } List<ProductMetadataData> notCertifiedHighest = (lastVersionNodes.isLeft() ? lastVersionNodes.left().value() : new ArrayList<ProductMetadataData>());
- *
- * propertiesToMatch.put(GraphPropertiesDictionary. IS_HIGHEST_VERSION.getProperty(), true); Either<List<ProductMetadataData>, TitanOperationStatus> componentsNodes = titanGenericDao.getByCriteria(NodeTypeEnum.Product, propertiesToMatch,
- * ProductMetadataData.class); if (componentsNodes.isRight() && componentsNodes.right().value() != TitanOperationStatus.NOT_FOUND) { return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus
- * (componentsNodes.right().value())); } List<ProductMetadataData> certifiedHighest = (componentsNodes.isLeft() ? componentsNodes.left().value() : new ArrayList<ProductMetadataData>()); Set<String> names = new HashSet<String>(); for
- * (ProductMetadataData data : notCertifiedHighest) { String name = data.getMetadataDataDefinition().getName(); names.add(name); }
- *
- * for (ProductMetadataData data : certifiedHighest) { String productName = data.getMetadataDataDefinition().getName(); if (!names.contains(productName)) { notCertifiedHighest.add(data); } }
- */
- Either<List<ProductMetadataData>, TitanOperationStatus> listOfHighestComponents = this.getListOfHighestComponents(NodeTypeEnum.Product, ProductMetadataData.class);
- if (listOfHighestComponents.isRight() && listOfHighestComponents.right().value() != TitanOperationStatus.NOT_FOUND) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(listOfHighestComponents.right().value()));
- }
-
- List<ProductMetadataData> notCertifiedHighest = listOfHighestComponents.left().value();
-
- List<Product> result = new ArrayList<>();
-
- if (notCertifiedHighest != null && false == notCertifiedHighest.isEmpty()) {
-
- // fetch from cache
- long startFetchAllFromCache = System.currentTimeMillis();
-
- Map<String, Long> components = notCertifiedHighest.stream().collect(Collectors.toMap(p -> p.getMetadataDataDefinition().getUniqueId(), p -> p.getMetadataDataDefinition().getLastUpdateDate()));
-
- Either<ImmutablePair<List<Component>, Set<String>>, ActionStatus> componentsFromCacheForCatalog = this.getComponentsFromCacheForCatalog(components, ComponentTypeEnum.PRODUCT);
- if (componentsFromCacheForCatalog.isLeft()) {
- ImmutablePair<List<Component>, Set<String>> immutablePair = componentsFromCacheForCatalog.left().value();
- List<Component> list = immutablePair.getLeft();
- if (list != null) {
- for (Component component : list) {
- result.add((Product) component);
- }
- List<String> addedUids = list.stream().map(p -> p.getComponentMetadataDefinition().getMetadataDataDefinition().getUniqueId()).collect(Collectors.toList());
- notCertifiedHighest = notCertifiedHighest.stream().filter(p -> false == addedUids.contains(p.getMetadataDataDefinition().getUniqueId())).collect(Collectors.toList());
- }
- }
- long endFetchAllFromCache = System.currentTimeMillis();
- log.debug("Fetch all catalog products metadata from cache took {} ms", (endFetchAllFromCache - startFetchAllFromCache));
- log.debug("The number of products added to catalog from cache is {}", result.size());
-
- log.debug("The number of products needed to be fetch as light component is {}", notCertifiedHighest.size());
-
- for (ProductMetadataData data : notCertifiedHighest) {
- Either<Product, StorageOperationStatus> component = getLightComponent(data.getMetadataDataDefinition().getUniqueId(), inTransaction);
- if (component.isRight()) {
- log.debug("Failed to get product for id = {}, error : {}. skip product", data.getUniqueId(), component.right().value());
- } else {
- // get all versions
- Product product = component.left().value();
- // setAllVersions(product);
-
- result.add(product);
- }
- }
- }
- return Either.left(result);
- } finally {
- if (false == inTransaction) {
- titanGenericDao.commit();
- }
- log.debug("Fetch all catalog products took {} ms", System.currentTimeMillis() - start);
- }
- }
-
- @Override
- public Either<Product, StorageOperationStatus> createProduct(Product product) {
- return createProduct(product, false);
- }
-
- @Override
- public Either<Product, StorageOperationStatus> createProduct(Product product, boolean inTransaction) {
- Either<Product, StorageOperationStatus> result = null;
-
- try {
-
- ProductMetadataData productData = getProductMetadataDataFromProduct(product);
- addComponentInternalFields(productData);
- String uniqueId = (String) productData.getUniqueId();
- generateUUID(product);
-
- String userId = product.getCreatorUserId();
-
- Either<UserData, TitanOperationStatus> findUser = findUser(userId);
-
- if (findUser.isRight()) {
- TitanOperationStatus status = findUser.right().value();
- log.error("Cannot find user {} in the graph. status is {}", userId, status);
- return sendError(status, StorageOperationStatus.USER_NOT_FOUND);
- }
-
- UserData creatorUserData = findUser.left().value();
- UserData updaterUserData = creatorUserData;
- String updaterUserId = product.getLastUpdaterUserId();
- if (updaterUserId != null && !updaterUserId.equals(userId)) {
- findUser = findUser(updaterUserId);
- if (findUser.isRight()) {
- TitanOperationStatus status = findUser.right().value();
- log.error("Cannot find user {} in the graph. status is {}", userId, status);
- return sendError(status, StorageOperationStatus.USER_NOT_FOUND);
- } else {
- updaterUserData = findUser.left().value();
- }
- }
-
- log.trace("Creating tags for product {}", uniqueId);
- StorageOperationStatus storageOperationStatus = createTagsForComponent(product);
- if (storageOperationStatus != StorageOperationStatus.OK) {
- return Either.right(storageOperationStatus);
- }
-
- log.trace("Finding groupings for product {}", uniqueId);
- Either<List<GroupingData>, StorageOperationStatus> findGroupingsForComponent = findGroupingsForComponent(NodeTypeEnum.ProductGrouping, product);
- if (findGroupingsForComponent.isRight()) {
- return Either.right(findGroupingsForComponent.right().value());
- }
- List<GroupingData> groupingDataToAssociate = findGroupingsForComponent.left().value();
-
- log.debug("try to create product node on graph for id {}", uniqueId);
- Either<ProductMetadataData, TitanOperationStatus> createNode = titanGenericDao.createNode(productData, ProductMetadataData.class);
- if (createNode.isRight()) {
- TitanOperationStatus status = createNode.right().value();
- log.error("Error returned after creating product data node {}. Status returned is {}", productData, status);
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
- log.debug("product node created on graph for id {}", productData.getUniqueId());
-
- TitanOperationStatus associateMetadata = associateMetadataToComponent(productData, creatorUserData, updaterUserData, null, null);
- if (associateMetadata != TitanOperationStatus.OK) {
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(associateMetadata));
- return result;
- }
-
- TitanOperationStatus associateCategories = associateCategoriesToProduct(productData, groupingDataToAssociate);
- if (associateCategories != TitanOperationStatus.OK) {
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(associateCategories));
- return result;
- }
-
- result = getProduct(uniqueId, true);
- if (result.isRight()) {
- log.error("Cannot get full product from the graph. status is {}", result.right().value());
- return Either.right(result.right().value());
- }
-
- if (log.isDebugEnabled()) {
- String json = prettyJson.toJson(result.left().value());
- log.debug("Product retrieved is {}", json);
- }
-
- return result;
-
- } finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- log.debug("Going to execute rollback on graph.");
- titanGenericDao.rollback();
- } else {
- log.debug("Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
- }
-
- private TitanOperationStatus associateCategoriesToProduct(ProductMetadataData productData, List<GroupingData> groupingDataToAssociate) {
- for (GroupingData groupingData : groupingDataToAssociate) {
- GraphEdgeLabels groupingLabel = GraphEdgeLabels.CATEGORIZED_TO;
- Either<GraphRelation, TitanOperationStatus> result = titanGenericDao.createRelation(productData, groupingData, groupingLabel, null);
- log.debug("After associating grouping {} to product {}. Edge type is {}", groupingData, productData, groupingLabel);
- if (result.isRight()) {
- return result.right().value();
- }
- }
- log.trace("All groupings associated succesfully to product {}", productData);
- return TitanOperationStatus.OK;
- }
-
- private TitanOperationStatus dissociateCategoriesFromProduct(ProductMetadataData productData, List<GroupingData> groupingDataToDissociate) {
- for (GroupingData groupingData : groupingDataToDissociate) {
- GraphEdgeLabels groupingLabel = GraphEdgeLabels.CATEGORIZED_TO;
- Either<GraphRelation, TitanOperationStatus> result = titanGenericDao.deleteRelation(productData, groupingData, groupingLabel);
- log.debug("After dissociating grouping {} from product {}. Edge type is {}", groupingData, productData, groupingLabel);
- if (result.isRight()) {
- return result.right().value();
- }
- }
- log.trace("All groupings dissociated succesfully from product {}", productData);
- return TitanOperationStatus.OK;
- }
-
- private Either<Product, StorageOperationStatus> getProduct(String uniqueId, boolean inTransaction) {
- ComponentParametersView componentParametersView = new ComponentParametersView();
- return getProduct(uniqueId, componentParametersView, inTransaction);
- }
-
- private Either<Product, StorageOperationStatus> getProduct(String uniqueId, ComponentParametersView componentParametersView, boolean inTransaction) {
- Product product = null;
- Either<Product, StorageOperationStatus> result = null;
- try {
-
- NodeTypeEnum productNodeType = NodeTypeEnum.Product;
- NodeTypeEnum compInstNodeType = NodeTypeEnum.Service;
-
- Either<ProductMetadataData, StorageOperationStatus> getComponentByLabel = getComponentByLabelAndId(uniqueId, productNodeType, ProductMetadataData.class);
- if (getComponentByLabel.isRight()) {
- result = Either.right(getComponentByLabel.right().value());
- return result;
- }
- ProductMetadataData productData = getComponentByLabel.left().value();
-
- // Try to fetch resource from the cache. The resource will be
- // fetched only if the time on the cache equals to
- // the time on the graph.
- Either<Product, ActionStatus> componentFromCacheIfUpToDate = this.getComponentFromCacheIfUpToDate(uniqueId, productData, componentParametersView, Product.class, ComponentTypeEnum.PRODUCT);
- if (componentFromCacheIfUpToDate.isLeft()) {
- Product cachedProduct = componentFromCacheIfUpToDate.left().value();
- log.debug("Product {} with uid {} was fetched from cache.", cachedProduct.getName(), cachedProduct.getUniqueId());
- return Either.left(cachedProduct);
- }
-
- product = convertProductDataToProduct(productData);
-
- TitanOperationStatus status = null;
- if (false == componentParametersView.isIgnoreUsers()) {
- status = setComponentCreatorFromGraph(product, uniqueId, productNodeType);
- if (status != TitanOperationStatus.OK) {
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
-
- status = setComponentLastModifierFromGraph(product, uniqueId, productNodeType);
- if (status != TitanOperationStatus.OK) {
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
-
- }
- }
- if (false == componentParametersView.isIgnoreCategories()) {
- status = setComponentCategoriesFromGraph(product);
- if (status != TitanOperationStatus.OK) {
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
- }
-
- if (false == componentParametersView.isIgnoreComponentInstances() || false == componentParametersView.isIgnoreComponentInstancesProperties() || false == componentParametersView.isIgnoreCapabilities()
- || false == componentParametersView.isIgnoreRequirements()) {
- status = setComponentInstancesFromGraph(uniqueId, product, productNodeType, compInstNodeType);
- if (status != TitanOperationStatus.OK) {
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
-
- }
- }
- if (false == componentParametersView.isIgnoreComponentInstancesProperties()) {
- status = setComponentInstancesPropertiesFromGraph(product);
- if (status != TitanOperationStatus.OK) {
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
- }
- if (false == componentParametersView.isIgnoreCapabilities()) {
- status = setCapabilitiesFromGraph(uniqueId, product, NodeTypeEnum.Product);
- if (status != TitanOperationStatus.OK) {
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
- }
- if (false == componentParametersView.isIgnoreRequirements()) {
- status = setRequirementsFromGraph(uniqueId, product, NodeTypeEnum.Product);
- if (status != TitanOperationStatus.OK) {
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
- }
-
- if (false == componentParametersView.isIgnoreAllVersions()) {
- status = setAllVersions(product);
- if (status != TitanOperationStatus.OK) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- }
- }
-
- result = Either.left(product);
- return result;
-
- } finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- titanGenericDao.rollback();
- } else {
- titanGenericDao.commit();
- }
- }
- }
- }
-
- // private Either<Product, StorageOperationStatus> getProduct_tx(String
- // uniqueId, boolean inTransaction) {
- // Product product = null;
- // Either<Product, StorageOperationStatus> result = null;
- // try {
- //
- // NodeTypeEnum productNodeType = NodeTypeEnum.Product;
- // NodeTypeEnum compInstNodeType = NodeTypeEnum.Service;
- //
- // Either<ProductMetadataData, StorageOperationStatus> getComponentByLabel =
- // getComponentByLabelAndId_tx(uniqueId, productNodeType,
- // ProductMetadataData.class);
- // if (getComponentByLabel.isRight()) {
- // result = Either.right(getComponentByLabel.right().value());
- // return result;
- // }
- // ProductMetadataData productData = getComponentByLabel.left().value();
- // product = convertProductDataToProduct(productData);
- //
- // TitanOperationStatus status = setComponentCreatorFromGraph(product,
- // uniqueId, productNodeType);
- // if (status != TitanOperationStatus.OK) {
- // result =
- // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- // return result;
- // }
- //
- // status = setComponentLastModifierFromGraph(product, uniqueId,
- // productNodeType);
- // if (status != TitanOperationStatus.OK) {
- // result =
- // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- // return result;
- //
- // }
- // status = setComponentCategoriesFromGraph(product);
- // if (status != TitanOperationStatus.OK) {
- // result =
- // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- // return result;
- // }
- //
- // status = setComponentInstancesFromGraph(uniqueId, product,
- // productNodeType, compInstNodeType);
- // if (status != TitanOperationStatus.OK) {
- // result =
- // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- // return result;
- //
- // }
- //
- // status = setComponentInstancesPropertiesFromGraph(uniqueId, product);
- // if (status != TitanOperationStatus.OK) {
- // result =
- // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- // return result;
- // }
- //
- // status = setCapabilitiesFromGraph(uniqueId, product,
- // NodeTypeEnum.Product);
- // if (status != TitanOperationStatus.OK) {
- // result =
- // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- // return result;
- // }
- //
- // status = setRequirementsFromGraph( uniqueId, product,
- // NodeTypeEnum.Product);;
- // if (status != TitanOperationStatus.OK) {
- // result =
- // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- // return result;
- // }
- //
- //
- // status = setAllVersions(product);
- // if (status != TitanOperationStatus.OK) {
- // return
- // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- // }
- //
- // result = Either.left(product);
- // return result;
- //
- // } finally {
- // if (false == inTransaction) {
- // if (result == null || result.isRight()) {
- // titanGenericDao.rollback();
- // } else {
- // titanGenericDao.commit();
- // }
- // }
- // }
- // }
-
- private TitanOperationStatus setAllVersions(Product product) {
- Either<Map<String, String>, TitanOperationStatus> res = getVersionList(NodeTypeEnum.Product, product.getVersion(), product, ProductMetadataData.class);
- if (res.isRight()) {
- return res.right().value();
- }
- product.setAllVersions(res.left().value());
- return TitanOperationStatus.OK;
- }
-
- private Either<Product, StorageOperationStatus> sendError(TitanOperationStatus status, StorageOperationStatus statusIfNotFound) {
- Either<Product, StorageOperationStatus> result;
- if (status == TitanOperationStatus.NOT_FOUND) {
- result = Either.right(statusIfNotFound);
- return result;
- } else {
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
- }
-
- @Override
- TitanOperationStatus setComponentCategoriesFromGraph(Component component) {
- Product product = (Product) component;
- // Building the cat->subcat->grouping triples
- Either<List<ImmutablePair<GroupingData, GraphEdge>>, TitanOperationStatus> childrenNodes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Product), product.getUniqueId(), GraphEdgeLabels.CATEGORIZED_TO,
- NodeTypeEnum.ProductGrouping, GroupingData.class);
- if (childrenNodes.isRight()) {
- if (childrenNodes.right().value() != TitanOperationStatus.NOT_FOUND) {
- log.debug("Error when finding groupings for this product, error {}", childrenNodes.right().value());
- return childrenNodes.right().value();
- } else {
- log.debug("No groupings found for this product - this might be normal");
- return TitanOperationStatus.OK;
- }
- }
- Map<CategoryDefinition, Map<SubCategoryDefinition, List<GroupingDefinition>>> categoriesDataStructure = new HashMap<>();
-
- List<ImmutablePair<GroupingData, GraphEdge>> valueList = childrenNodes.left().value();
- for (ImmutablePair<GroupingData, GraphEdge> groupPair : valueList) {
- GroupingData groupingData = groupPair.getLeft();
- Either<ImmutablePair<SubCategoryData, GraphEdge>, TitanOperationStatus> parentSubCat = titanGenericDao.getParentNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ProductGrouping), (String) groupingData.getUniqueId(),
- GraphEdgeLabels.GROUPING, NodeTypeEnum.ProductSubcategory, SubCategoryData.class);
- if (parentSubCat.isRight()) {
- log.debug("Cannot find subcategory for grouping {}", groupingData.getUniqueId());
- return parentSubCat.right().value();
- }
- SubCategoryData subCatData = parentSubCat.left().value().getLeft();
- Either<ImmutablePair<CategoryData, GraphEdge>, TitanOperationStatus> parentCat = titanGenericDao.getParentNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ProductSubcategory), (String) subCatData.getUniqueId(),
- GraphEdgeLabels.SUB_CATEGORY, NodeTypeEnum.ProductCategory, CategoryData.class);
- if (parentCat.isRight()) {
- log.debug("Cannot find category for subcategory {}", subCatData.getUniqueId());
- return parentCat.right().value();
- }
-
- // Building data structure of categories hierarchy
- CategoryDataDefinition categoryDefinition = parentCat.left().value().getLeft().getCategoryDataDefinition();
- SubCategoryDataDefinition subDefinition = subCatData.getSubCategoryDataDefinition();
- GroupingDataDefinition groupingDefinition = groupingData.getGroupingDataDefinition();
-
- CategoryDefinition categoryDef = new CategoryDefinition(categoryDefinition);
- SubCategoryDefinition subDef = new SubCategoryDefinition(subDefinition);
- GroupingDefinition groupingDef = new GroupingDefinition(groupingDefinition);
-
- log.debug("Found category {} -> subcategory {} -> grouping {} for product {}", categoryDefinition.getUniqueId(), subCatData.getUniqueId(), groupingData.getUniqueId(), product.getUniqueId());
- Map<SubCategoryDefinition, List<GroupingDefinition>> subMap = categoriesDataStructure.get(categoryDef);
- if (subMap == null) {
- subMap = new HashMap<>();
- categoriesDataStructure.put(categoryDef, subMap);
- }
- List<GroupingDefinition> groupList = subMap.get(subDef);
- if (groupList == null) {
- groupList = new ArrayList<>();
- subMap.put(subDef, groupList);
- }
- groupList.add(groupingDef);
- }
- convertToCategoriesList(product, categoriesDataStructure);
- return TitanOperationStatus.OK;
- }
-
- private void convertToCategoriesList(Product product, Map<CategoryDefinition, Map<SubCategoryDefinition, List<GroupingDefinition>>> categoriesDataStructure) {
- List<CategoryDefinition> categoryDataList = product.getCategories();
- if (categoryDataList == null) {
- categoryDataList = new ArrayList<CategoryDefinition>();
- }
- for (Entry<CategoryDefinition, Map<SubCategoryDefinition, List<GroupingDefinition>>> triple : categoriesDataStructure.entrySet()) {
- CategoryDefinition categoryDefinition = triple.getKey();
- List<SubCategoryDefinition> subList = new ArrayList<>();
- categoryDefinition.setSubcategories(subList);
- Map<SubCategoryDefinition, List<GroupingDefinition>> value = triple.getValue();
-
- for (Entry<SubCategoryDefinition, List<GroupingDefinition>> pair : value.entrySet()) {
- SubCategoryDefinition subCategoryDefinition = pair.getKey();
- List<GroupingDefinition> list = pair.getValue();
- subList.add(subCategoryDefinition);
- subCategoryDefinition.setGroupings(list);
- }
- categoryDataList.add(categoryDefinition);
- }
- product.setCategories(categoryDataList);
- log.debug("Fetched categories for product {}, categories: {}", product.getUniqueId(), Arrays.toString(categoryDataList.toArray()));
- }
-
- private ProductMetadataData getProductMetadataDataFromProduct(Product product) {
- ProductMetadataData productMetadata = new ProductMetadataData((ProductMetadataDataDefinition) product.getComponentMetadataDefinition().getMetadataDataDefinition());
- return productMetadata;
- }
-
- @Override
- public boolean isComponentExist(String id) {
- return isComponentExist(id, NodeTypeEnum.Product);
- }
-
- // @SuppressWarnings("unchecked")
- // @Override
- // public <T> Either<T, StorageOperationStatus> cloneComponent(T other,
- // String version, boolean inTransaction) {
- // return (Either<T, StorageOperationStatus>) cloneProduct((Product)other,
- // version, inTransaction);
- // }
-
- @SuppressWarnings("unchecked")
- @Override
- public <T> Either<T, StorageOperationStatus> cloneComponent(T other, String version, LifecycleStateEnum targetLifecycle, boolean inTransaction) {
- return (Either<T, StorageOperationStatus>) cloneProduct((Product) other, version, targetLifecycle, inTransaction);
- }
-
- private Either<Product, StorageOperationStatus> cloneProduct(Product other, String version, LifecycleStateEnum targetLifecycle, boolean inTransaction) {
- Either<Product, StorageOperationStatus> result = null;
-
- try {
- String origProductId = other.getUniqueId();
- other.setVersion(version);
- other.setUniqueId(null);
-
- Either<Integer, StorageOperationStatus> counterStatus = getComponentInstanceCoutner(origProductId, NodeTypeEnum.Product);
- if (counterStatus.isRight()) {
- StorageOperationStatus status = counterStatus.right().value();
- log.error("failed to get resource instance counter on product {}. status={}", origProductId, counterStatus);
- result = Either.right(status);
- return result;
- }
-
- Either<Product, StorageOperationStatus> createProductMD = createProduct(other, inTransaction);
- if (createProductMD.isRight()) {
- StorageOperationStatus status = createProductMD.right().value();
- log.debug("Failed to clone product. status= {}", status);
- result = Either.right(status);
- return result;
- }
- Product product = createProductMD.left().value();
-
- Either<ImmutablePair<List<ComponentInstance>, Map<String, String>>, StorageOperationStatus> cloneInstances = componentInstanceOperation.cloneAllComponentInstancesFromContainerComponent(origProductId, product,
- NodeTypeEnum.Product, NodeTypeEnum.Service, targetLifecycle, null);
- if (cloneInstances.isRight()) {
- result = Either.right(cloneInstances.right().value());
- return result;
- }
-
- Either<Integer, StorageOperationStatus> setResourceInstanceCounter = setComponentInstanceCounter(product.getUniqueId(), NodeTypeEnum.Product, counterStatus.left().value(), inTransaction);
- if (setResourceInstanceCounter.isRight()) {
- StorageOperationStatus status = setResourceInstanceCounter.right().value();
- log.error("failed to set resource instance counter on product {}. status={}", product.getUniqueId(), setResourceInstanceCounter);
- result = Either.right(status);
- return result;
- }
-
- result = this.getProduct(product.getUniqueId(), inTransaction);
- if (result.isRight()) {
- log.error("Cannot get full product from the graph. status is {}", result.right().value());
- return Either.right(result.right().value());
- }
-
- if (log.isDebugEnabled()) {
- String json = prettyJson.toJson(result.left().value());
- log.debug("Product retrieved is {}", json);
- }
-
- return result;
- } finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- log.debug("Going to execute rollback on graph.");
- titanGenericDao.rollback();
- } else {
- log.debug("Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
- }
-
- private Either<Product, StorageOperationStatus> getByNamesAndVersion(String nameKey, String nameValue, String version, Map<String, Object> additionalParams, boolean inTransaction) {
- Map<String, Object> props = new HashMap<String, Object>();
- props.put(nameKey, nameValue);
- props.put(GraphPropertiesDictionary.VERSION.getProperty(), version);
- props.put(GraphPropertiesDictionary.LABEL.getProperty(), NodeTypeEnum.Product.getName());
- if (additionalParams != null && !additionalParams.isEmpty()) {
- props.putAll(additionalParams);
- }
-
- Either<List<ProductMetadataData>, TitanOperationStatus> byCriteria = titanGenericDao.getByCriteria(NodeTypeEnum.Product, props, ProductMetadataData.class);
-
- if (byCriteria.isRight()) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(byCriteria.right().value()));
- }
- List<ProductMetadataData> dataList = byCriteria.left().value();
- if (dataList != null && !dataList.isEmpty()) {
- if (dataList.size() > 1) {
- log.debug("More that one instance of product for name {} and version {}", nameValue, version);
- return Either.right(StorageOperationStatus.GENERAL_ERROR);
- }
- ProductMetadataData productData = dataList.get(0);
- Either<Product, StorageOperationStatus> product = getProduct(productData.getMetadataDataDefinition().getUniqueId(), inTransaction);
- if (product.isRight()) {
- log.debug("Failed to fetch product, name {} id {}", productData.getMetadataDataDefinition().getName(), productData.getMetadataDataDefinition().getUniqueId());
- }
- return product;
- }
- return Either.right(StorageOperationStatus.NOT_FOUND);
- }
-
- @Override
- public Product getDefaultComponent() {
- return new Product();
- }
-
- @Override
- protected <T extends org.openecomp.sdc.be.model.Component> StorageOperationStatus updateDerived(org.openecomp.sdc.be.model.Component component, org.openecomp.sdc.be.model.Component currentComponent, ComponentMetadataData componentData,
- Class<T> clazz) {
- log.debug("Derived class isn't supported for product");
- return StorageOperationStatus.OK;
- }
-
- @Override
- public Either<Integer, StorageOperationStatus> increaseAndGetComponentInstanceCounter(String componentId, boolean inTransaction) {
- return increaseAndGetComponentInstanceCounter(componentId, NodeTypeEnum.Product, inTransaction);
- }
-
- @Override
- protected StorageOperationStatus validateCategories(Component currentComponent, Component component, ComponentMetadataData componentData, NodeTypeEnum type) {
- // As agreed with Ella, update categories - delete old and create new
- StorageOperationStatus status = StorageOperationStatus.OK;
- List<CategoryDefinition> newcategories = component.getCategories();
- List<CategoryDefinition> currentcategories = currentComponent.getCategories();
- if (newcategories != null) {
- if (currentcategories != null && !currentcategories.isEmpty()) {
- Either<List<GroupingData>, StorageOperationStatus> findGroupingsForComponent = findGroupingsForComponent(NodeTypeEnum.ProductGrouping, currentComponent);
- if (findGroupingsForComponent.isRight()) {
- status = findGroupingsForComponent.right().value();
- }
- List<GroupingData> groupingDataToDissociate = findGroupingsForComponent.left().value();
- TitanOperationStatus titanStatus = dissociateCategoriesFromProduct((ProductMetadataData) componentData, groupingDataToDissociate);
- if (titanStatus != TitanOperationStatus.OK) {
- status = DaoStatusConverter.convertTitanStatusToStorageStatus(titanStatus);
- }
- }
- if (!newcategories.isEmpty()) {
- Either<List<GroupingData>, StorageOperationStatus> findGroupingsForComponent = findGroupingsForComponent(NodeTypeEnum.ProductGrouping, component);
- if (findGroupingsForComponent.isRight()) {
- status = findGroupingsForComponent.right().value();
- }
- List<GroupingData> groupingDataToAssociate = findGroupingsForComponent.left().value();
- TitanOperationStatus titanStatus = associateCategoriesToProduct((ProductMetadataData) componentData, groupingDataToAssociate);
- if (titanStatus != TitanOperationStatus.OK) {
- status = DaoStatusConverter.convertTitanStatusToStorageStatus(titanStatus);
- }
- }
- }
- return status;
- }
-
- @Override
- @SuppressWarnings("unchecked")
- public Either<List<Product>, StorageOperationStatus> getFollowed(String userId, Set<LifecycleStateEnum> lifecycleStates, Set<LifecycleStateEnum> lastStateStates, boolean inTransaction) {
- return (Either<List<Product>, StorageOperationStatus>) (Either<?, StorageOperationStatus>) getFollowedComponent(userId, lifecycleStates, lastStateStates, inTransaction, titanGenericDao, NodeTypeEnum.Product);
- }
-
- @Override
- public Either<Component, StorageOperationStatus> getMetadataComponent(String id, boolean inTransaction) {
- return getMetadataComponent(id, NodeTypeEnum.Product, inTransaction);
- }
-
- @Override
- Component convertComponentMetadataDataToComponent(ComponentMetadataData componentMetadataData) {
- return convertProductDataToProduct((ProductMetadataData) componentMetadataData);
- }
-
- @Override
- public Either<Boolean, StorageOperationStatus> validateComponentNameExists(String productName) {
- return validateComponentNameUniqueness(productName, titanGenericDao, NodeTypeEnum.Product);
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public Either<Component, StorageOperationStatus> markComponentToDelete(Component componentToDelete, boolean inTransaction) {
- // markComponentToDelete is not defined yet for products
- return (Either<Component, StorageOperationStatus>) (Either<?, StorageOperationStatus>) deleteProduct(componentToDelete.getUniqueId(), inTransaction);
- }
-
- @Override
- public void rollback() {
- titanGenericDao.rollback();
-
- }
-
- @Override
- public void commit() {
- titanGenericDao.commit();
- }
-
- @Override
- public Either<Boolean, StorageOperationStatus> isComponentInUse(String componentId) {
- return isComponentInUse(componentId, NodeTypeEnum.Product);
- }
-
- @Override
- public Either<List<String>, StorageOperationStatus> getAllComponentsMarkedForDeletion() {
- // markForDeletion for products is not implemented yet
- return Either.left(new ArrayList<>());
- }
-
- public Either<Product, StorageOperationStatus> getProductByNameAndVersion(String productName, String productVersion, boolean inTransaction) {
- return getByNamesAndVersion(GraphPropertiesDictionary.NORMALIZED_NAME.getProperty(), ValidationUtils.normaliseComponentName(productName), productVersion, null, inTransaction);
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public <T> Either<T, StorageOperationStatus> getComponent(String id, ComponentParametersView componentParametersView, boolean inTransaction) {
- return (Either<T, StorageOperationStatus>) getProduct(id, false);
- }
-
- public Either<Product, StorageOperationStatus> updateProduct(Product product, boolean inTransaction, ComponentParametersView filterResultView) {
- return (Either<Product, StorageOperationStatus>) updateComponentFilterResult(product, inTransaction, titanGenericDao, product.getClass(), NodeTypeEnum.Service, filterResultView);
- }
-
- @Override
- protected <T> Either<T, StorageOperationStatus> updateComponentFilterResult(T component, boolean inTransaction, ComponentParametersView filterResultView) {
- return (Either<T, StorageOperationStatus>) updateProduct((Product) component, inTransaction, filterResultView);
- }
-}
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/PropertyOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/PropertyOperation.java
index 9b900b0ae2..6835e813ee 100644
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/PropertyOperation.java
+++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/PropertyOperation.java
@@ -154,24 +154,6 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
return functionPatterns;
}
- @Override
- public Either<PropertyDefinition, StorageOperationStatus> getPropertyOfResource(String propertyName, String resourceId) {
-
- String propertyId = UniqueIdBuilder.buildComponentPropertyUniqueId(resourceId, propertyName);
-
- Either<PropertyData, TitanOperationStatus> getResult = this.titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Property), propertyId, PropertyData.class);
- if (getResult.isLeft()) {
- PropertyData propertyData = getResult.left().value();
- return Either.left(convertPropertyDataToPropertyDefinition(propertyData, propertyName, resourceId));
- } else {
- TitanOperationStatus titanStatus = getResult.right().value();
- log.debug("Node with id {} was not found in the graph. status: {}", propertyId, titanStatus);
- StorageOperationStatus storageOperationStatus = DaoStatusConverter.convertTitanStatusToStorageStatus(titanStatus);
- return Either.right(storageOperationStatus);
- }
-
- }
-
/*
* (non-Javadoc)
*
@@ -2024,8 +2006,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
}
}
- @Override
- public Either<DataTypeDefinition, StorageOperationStatus> addDataType(DataTypeDefinition dataTypeDefinition, boolean inTransaction) {
+ private Either<DataTypeDefinition, StorageOperationStatus> addDataType(DataTypeDefinition dataTypeDefinition, boolean inTransaction) {
Either<DataTypeDefinition, StorageOperationStatus> result = null;
@@ -2110,8 +2091,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
return getDataTypeByNameWithoutDerived(name, true);
}
- @Override
- public Either<DataTypeDefinition, StorageOperationStatus> getDataTypeByNameWithoutDerived(String name, boolean inTransaction) {
+ private Either<DataTypeDefinition, StorageOperationStatus> getDataTypeByNameWithoutDerived(String name, boolean inTransaction) {
Either<DataTypeDefinition, StorageOperationStatus> result = null;
try {
@@ -2534,8 +2514,7 @@ public class PropertyOperation extends AbstractOperation implements IPropertyOpe
return updateDataType(newDataTypeDefinition, oldDataTypeDefinition, true);
}
- @Override
- public Either<DataTypeDefinition, StorageOperationStatus> updateDataType(DataTypeDefinition newDataTypeDefinition, DataTypeDefinition oldDataTypeDefinition, boolean inTransaction) {
+ private Either<DataTypeDefinition, StorageOperationStatus> updateDataType(DataTypeDefinition newDataTypeDefinition, DataTypeDefinition oldDataTypeDefinition, boolean inTransaction) {
Either<DataTypeDefinition, StorageOperationStatus> result = null;
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/RequirementOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/RequirementOperation.java
deleted file mode 100644
index a2fe3d61d3..0000000000
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/RequirementOperation.java
+++ /dev/null
@@ -1,1419 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.openecomp.sdc.be.model.operations.impl;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-
-import com.thinkaurelius.titan.core.TitanTransaction;
-import com.thinkaurelius.titan.core.TitanVertex;
-
-import org.apache.commons.lang3.tuple.ImmutablePair;
-import org.openecomp.sdc.be.dao.graph.datatype.GraphEdge;
-import org.openecomp.sdc.be.dao.graph.datatype.GraphRelation;
-import org.openecomp.sdc.be.dao.neo4j.GraphEdgeLabels;
-import org.openecomp.sdc.be.dao.neo4j.GraphPropertiesDictionary;
-import org.openecomp.sdc.be.dao.titan.TitanGenericDao;
-import org.openecomp.sdc.be.dao.titan.TitanOperationStatus;
-import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
-import org.openecomp.sdc.be.model.CapabilityTypeDefinition;
-import org.openecomp.sdc.be.model.CapabiltyInstance;
-import org.openecomp.sdc.be.model.Point;
-import org.openecomp.sdc.be.model.PropertyDefinition;
-import org.openecomp.sdc.be.model.RequirementDefinition;
-import org.openecomp.sdc.be.model.RequirementImplDef;
-import org.openecomp.sdc.be.model.operations.api.IRequirementOperation;
-import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
-import org.openecomp.sdc.be.resources.data.CapabilityData;
-import org.openecomp.sdc.be.resources.data.CapabilityInstData;
-import org.openecomp.sdc.be.resources.data.CapabilityTypeData;
-import org.openecomp.sdc.be.resources.data.PropertyValueData;
-import org.openecomp.sdc.be.resources.data.RequirementData;
-import org.openecomp.sdc.be.resources.data.RequirementImplData;
-import org.openecomp.sdc.be.resources.data.ResourceMetadataData;
-import org.openecomp.sdc.be.resources.data.UniqueIdData;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Component;
-
-import fj.data.Either;
-
-@Component("requirement-operation")
-public class RequirementOperation implements IRequirementOperation {
-
- private static final String NA = "NA";
-
- private static final String EQUAL_SIGN = "=";
-
- private static final String EMPTY_STRING = "";
-
- public RequirementOperation() {
- super();
- }
-
- private static Logger log = LoggerFactory.getLogger(RequirementOperation.class.getName());
-
- @javax.annotation.Resource
- private CapabilityOperation capabilityOperation;
-
- @javax.annotation.Resource
- private CapabilityTypeOperation capabilityTypeOperation;
-
- @javax.annotation.Resource
- private TitanGenericDao titanGenericDao;
-
- /**
- * FOR TEST ONLY
- *
- * @param titanGenericDao
- */
- public void setTitanGenericDao(TitanGenericDao titanGenericDao) {
- this.titanGenericDao = titanGenericDao;
- }
-
- protected CapabilityTypeDefinition convertCTDataToCTDefinition(CapabilityTypeData capabilityTypeData) {
- log.debug("The object returned after create capability is {}", capabilityTypeData);
-
- CapabilityTypeDefinition capabilityTypeDefResult = new CapabilityTypeDefinition(capabilityTypeData.getCapabilityTypeDataDefinition());
-
- return capabilityTypeDefResult;
- }
-
- /**
- * FOR TEST ONLY
- *
- * @param capabilityOperation
- */
- public void setCapabilityOperation(CapabilityOperation capabilityOperation) {
- this.capabilityOperation = capabilityOperation;
- }
-
- public void setCapabilityTypeOperation(CapabilityTypeOperation capabilityTypeOperation) {
- this.capabilityTypeOperation = capabilityTypeOperation;
- }
-
- @Override
- public Either<RequirementDefinition, StorageOperationStatus> addRequirementToResource(String reqName, RequirementDefinition reqDefinition, String resourceId) {
-
- return addRequirementToResource(reqName, reqDefinition, resourceId, false);
- }
-
- private Either<GraphRelation, TitanOperationStatus> associateRequirementToRelationshipType(RequirementData reqData, RequirementDefinition reqDefinition) {
-
- String relationship = reqDefinition.getRelationship();
-
- if (relationship == null) {
- log.debug("The provided relationship is null.");
- return Either.right(TitanOperationStatus.NOT_FOUND);
- }
- UniqueIdData uniqueIdData = new UniqueIdData(NodeTypeEnum.RelationshipType, relationship);
- Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(reqData, uniqueIdData, GraphEdgeLabels.RELATIONSHIP_TYPE, null);
-
- return createRelation;
-
- }
-
- /**
- * Associate the requirement node to its capability type
- *
- * @param reqData
- * @param reqDefinition
- * @return
- */
- private Either<GraphRelation, TitanOperationStatus> associateRequirementToCapabilityType(RequirementData reqData, RequirementDefinition reqDefinition) {
-
- String capability = reqDefinition.getCapability();
-
- UniqueIdData uniqueIdData = new UniqueIdData(NodeTypeEnum.CapabilityType, capability);
- Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(reqData, uniqueIdData, GraphEdgeLabels.CAPABILITY_TYPE, null);
-
- log.debug("After associating requirementData {} to capability {}. status is {}", reqData, capability, createRelation);
-
- return createRelation;
- }
-
- private TitanOperationStatus associateRequirementToCapabilityType(TitanVertex reqData, RequirementDefinition reqDefinition) {
-
- String capability = reqDefinition.getCapability();
-
- UniqueIdData uniqueIdData = new UniqueIdData(NodeTypeEnum.CapabilityType, capability);
- TitanOperationStatus createRelation = titanGenericDao.createEdge(reqData, uniqueIdData, GraphEdgeLabels.CAPABILITY_TYPE, null);
-
- log.debug("After associating requirementData {} to capability {}. status is {}", reqData, capability, createRelation);
-
- return createRelation;
- }
-
- /**
- * Associate requirement impl node to capability instance node
- *
- * @param reqImplData
- * @param capabilityInstData
- * @param capabilityName
- * @return
- */
- private Either<GraphRelation, TitanOperationStatus> associateRequirementImplToCapabilityInst(RequirementImplData reqImplData, CapabilityInstData capabilityInstData, String capabilityName) {
-
- Map<String, Object> props = new HashMap<String, Object>();
- props.put(GraphPropertiesDictionary.NAME.getProperty(), capabilityName);
-
- log.debug("Before associating requirement impl {} to capability instance {}", reqImplData, capabilityInstData);
- Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(reqImplData, capabilityInstData, GraphEdgeLabels.CAPABILITY_INST, props);
- log.debug("After associating requirement impl {} to capability instance {}.status is {}", reqImplData, capabilityInstData, createRelation);
-
- return createRelation;
-
- }
-
- /**
- * Add requirement node to graph
- *
- * @param resourceId
- * @param reqName
- * @param reqDefinition
- * @return
- */
- private Either<RequirementData, TitanOperationStatus> addRequirementData(String resourceId, String reqName, RequirementDefinition reqDefinition) {
-
- ResourceMetadataData resourceData = new ResourceMetadataData();
- resourceData.getMetadataDataDefinition().setUniqueId(resourceId);
-
- RequirementData requirementData = buildRequirementData(resourceId, reqName, reqDefinition);
-
- log.debug("Before adding requirement data to graph {}", requirementData);
- Either<RequirementData, TitanOperationStatus> createNodeResult = titanGenericDao.createNode(requirementData, RequirementData.class);
-
- log.debug("After adding requirement to graph {}", requirementData);
- if (createNodeResult.isRight()) {
- TitanOperationStatus operationStatus = createNodeResult.right().value();
- log.error("Failed to add requirement {} [{}] to graph. status is {}", reqName, requirementData, operationStatus);
- return Either.right(operationStatus);
- }
-
- TitanOperationStatus status = associateResourceDataToRequirementData(resourceId, reqName, resourceData, requirementData);
- if (status != TitanOperationStatus.OK) {
- return Either.right(status);
- }
-
- return Either.left(createNodeResult.left().value());
-
- }
-
- private Either<TitanVertex, TitanOperationStatus> addRequirementData(TitanVertex vertex, String resourceId, String reqName, RequirementDefinition reqDefinition) {
-
- RequirementData requirementData = buildRequirementData(resourceId, reqName, reqDefinition);
-
- log.debug("Before adding requirement data to graph {}", requirementData);
- Either<TitanVertex, TitanOperationStatus> createNodeResult = titanGenericDao.createNode(requirementData);
-
- log.debug("After adding requirement to graph {}", requirementData);
- if (createNodeResult.isRight()) {
- TitanOperationStatus operationStatus = createNodeResult.right().value();
- log.error("Failed to add requirement {} [{}] to graph. status is {}", reqName, requirementData, operationStatus);
- return Either.right(operationStatus);
- }
-
- TitanOperationStatus status = associateResourceDataToRequirementData(resourceId, reqName, vertex, createNodeResult.left().value());
- if (!status.equals(TitanOperationStatus.OK)) {
- return Either.right(status);
- }
- return Either.left(createNodeResult.left().value());
- }
-
- /**
- * Asssociate resource node to requirement node with REQUIREMENT label and requirement name as property on the edge.
- *
- * @param resourceId
- * @param reqName
- * @param resourceData
- * @param requirementData
- * @return
- */
- private TitanOperationStatus associateResourceDataToRequirementData(String resourceId, String reqName, ResourceMetadataData resourceData, RequirementData requirementData) {
-
- Map<String, Object> props = new HashMap<String, Object>();
- props.put(GraphPropertiesDictionary.NAME.getProperty(), reqName);
- Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(resourceData, requirementData, GraphEdgeLabels.REQUIREMENT, props);
- log.debug("After creatin edge between resource {} to requirement {}", resourceId, requirementData);
- if (createRelResult.isRight()) {
- TitanOperationStatus operationStatus = createRelResult.right().value();
- log.error("Failed to associate resource {} to requirement {} [ {} ] in graph. status is {}", resourceId, reqName, requirementData, operationStatus);
- }
- return TitanOperationStatus.OK;
- }
-
- private TitanOperationStatus associateResourceDataToRequirementData(String resourceId, String reqName, TitanVertex resourceVertex, TitanVertex requirementVertex) {
-
- Map<String, Object> props = new HashMap<String, Object>();
- props.put(GraphPropertiesDictionary.NAME.getProperty(), reqName);
- TitanOperationStatus createRelResult = titanGenericDao.createEdge(resourceVertex, requirementVertex, GraphEdgeLabels.REQUIREMENT, props);
- log.debug("After creatin edge between resource {} to requirement {}", resourceId, requirementVertex);
- if (!createRelResult.equals(TitanOperationStatus.OK)) {
- log.error("Failed to associate resource {} to requirement {} in graph. status is {}", resourceId, reqName, createRelResult);
- }
- return TitanOperationStatus.OK;
- }
-
- private RequirementData buildRequirementData(String resourceId, String reqName, RequirementDefinition reqDefinition) {
-
- RequirementData requirementData = new RequirementData();
- requirementData.setNode(reqDefinition.getNode());
- requirementData.setUniqueId(UniqueIdBuilder.buildRequirementUid(resourceId, reqName));
- Long creationTime = System.currentTimeMillis();
- requirementData.setCreationTime(creationTime);
- requirementData.setModificationTime(creationTime);
- requirementData.setRelationshipType(reqDefinition.getRelationship());
- requirementData.setMinOccurrences(reqDefinition.getMinOccurrences());
- requirementData.setMaxOccurrences(reqDefinition.getMaxOccurrences());
-
- return requirementData;
- }
-
- /**
- * build requirement impl node associate it to resource, requirement & implementation resource
- *
- * [RESOURCE] --> [REQUIREMENT IMPL] --> [ RESOURCE IMPL ] | V [REQUIREMENT]
- *
- * @param resourceLabel
- * @param resourceId
- * @param reqName
- * @param requirementUid
- * @param reqImplDefinition
- * @return
- */
- private Either<RequirementImplData, TitanOperationStatus> addRequirementImplData(NodeTypeEnum resourceLabel, String resourceId, String reqName, String requirementUid, RequirementImplDef reqImplDefinition) {
-
- RequirementImplData requirementImplData = buildRequirementImplData(resourceId, reqName, reqImplDefinition);
-
- log.debug("Before adding requirement impl data to graph {}", requirementImplData);
- Either<RequirementImplData, TitanOperationStatus> createNodeResult = titanGenericDao.createNode(requirementImplData, RequirementImplData.class);
- log.debug("After adding requirement to graph {}. status is {}", requirementImplData, createNodeResult);
- if (createNodeResult.isRight()) {
- TitanOperationStatus operationStatus = createNodeResult.right().value();
- log.error("Failed to add requirement {} [ {} ] to graph. status is {}", reqName, requirementImplData, operationStatus);
- return Either.right(operationStatus);
- }
-
- Either<GraphRelation, TitanOperationStatus> createRelResult = associateReqImplRoResource(resourceLabel, resourceId, reqName, requirementImplData);
- if (createRelResult.isRight()) {
- TitanOperationStatus operationStatus = createRelResult.right().value();
- log.error("Failed to associate resource {} to requirement impl {} [ {} ] in graph. status is {}", resourceId, requirementImplData, requirementImplData, operationStatus);
- return Either.right(operationStatus);
- }
-
- Either<GraphRelation, TitanOperationStatus> associateToResourceImpl = associateReqImplToImplResource(requirementImplData, reqImplDefinition.getNodeId());
- if (associateToResourceImpl.isRight()) {
- TitanOperationStatus operationStatus = associateToResourceImpl.right().value();
- log.error("Failed to associate requirement impl {} to resource impl {} [ {} ] in graph. status is {}", requirementImplData, reqImplDefinition.getNodeId(), requirementImplData, operationStatus);
- return Either.right(operationStatus);
- }
-
- Either<GraphRelation, TitanOperationStatus> associateToRequirement = associateReqImplToRequirement(requirementImplData, requirementUid);
- if (associateToRequirement.isRight()) {
- TitanOperationStatus operationStatus = associateToRequirement.right().value();
- log.error("Failed to associate requirement impl {} to requirement {} in graph. status is {}", requirementImplData, reqName, operationStatus);
- return Either.right(operationStatus);
- }
-
- return Either.left(createNodeResult.left().value());
-
- }
-
- private RequirementImplData buildRequirementImplData(String resourceId, String reqName, RequirementImplDef reqImplDefinition) {
- String reqImplUid = UniqueIdBuilder.buildRequirementImplUid(resourceId, reqName);
- RequirementImplData requirementImplData = new RequirementImplData();
- requirementImplData.setName(reqName);
- requirementImplData.setUniqueId(reqImplUid);
- Long creationTime = System.currentTimeMillis();
- requirementImplData.setCreationTime(creationTime);
- requirementImplData.setModificationTime(creationTime);
- Point point = reqImplDefinition.getPoint();
- if (point != null) {
- requirementImplData.setPosX(point.getX());
- requirementImplData.setPosY(point.getY());
- }
- return requirementImplData;
- }
-
- /**
- * associate requirement impl node to the source requirement. The source requirement maybe belongs to one of parents.
- *
- * @param requirementImplData
- * @param requirementUid
- * @return
- */
- private Either<GraphRelation, TitanOperationStatus> associateReqImplToRequirement(RequirementImplData requirementImplData, String requirementUid) {
-
- UniqueIdData to = new UniqueIdData(NodeTypeEnum.Requirement, requirementUid);
- log.debug("Before creating edge between requirement impl {} to requirement {}", requirementImplData, requirementUid);
- Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(requirementImplData, to, GraphEdgeLabels.IMPLEMENTATION_OF, null);
- log.debug("Before creating edge between requirement impl {} to requirement {}. status is {}", requirementImplData, requirementUid, createRelResult);
-
- return createRelResult;
- }
-
- /**
- * Associate requirement impl node to the node which supply this requirement.
- *
- * @param requirementImplData
- * @param nodeId
- * @return
- */
- private Either<GraphRelation, TitanOperationStatus> associateReqImplToImplResource(RequirementImplData requirementImplData, String nodeId) {
-
- UniqueIdData nodeImpl = new UniqueIdData(NodeTypeEnum.Resource, nodeId);
- Map<String, Object> props = new HashMap<String, Object>();
- props.put(GraphPropertiesDictionary.NAME.getProperty(), nodeId);
- log.debug("Before creating edge between requirement impl {} to node impl {}", requirementImplData, nodeId);
- Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(requirementImplData, nodeImpl, GraphEdgeLabels.NODE_IMPL, props);
- log.debug("After creating edge between requirement {} to node impl {}. status is {}", requirementImplData, nodeId, createRelResult);
-
- return createRelResult;
- }
-
- /**
- * create an edge between the requirement impl node to the implementation resource.
- *
- * @param resourceLabel
- * @param resourceId
- * @param reqName
- * @param requirementImplData
- * @return
- */
- private Either<GraphRelation, TitanOperationStatus> associateReqImplRoResource(NodeTypeEnum resourceLabel, String resourceId, String reqName, RequirementImplData requirementImplData) {
-
- UniqueIdData resource = new UniqueIdData(resourceLabel, resourceId);
- Map<String, Object> props = new HashMap<String, Object>();
- props.put(GraphPropertiesDictionary.NAME.getProperty(), reqName);
- log.debug("Before creating edge between resource {} to requirement impl {}", resourceId, requirementImplData);
- Either<GraphRelation, TitanOperationStatus> createRelResult = titanGenericDao.createRelation(resource, requirementImplData, GraphEdgeLabels.REQUIREMENT_IMPL, props);
- log.debug("After creating edge between to requirement impl {} to resource {}. status is {}", requirementImplData, resource, createRelResult);
-
- return createRelResult;
- }
-
- private void validateNodeExists(String node) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public Either<RequirementDefinition, StorageOperationStatus> addRequirementToResource(String reqName, RequirementDefinition reqDefinition, String resourceId, boolean inTransaction) {
-
- Either<RequirementDefinition, StorageOperationStatus> result = null;
- try {
-
- log.debug("Going to add requirement {} to resource {}. requirement definition is {}", reqName, resourceId, reqDefinition);
-
- validateNodeExists(reqDefinition.getNode());
-
- // 1. add requirement node in graph and associate it to the resource
- log.debug("Going to add requirement node in graph and associate it to the resource");
- Either<RequirementData, TitanOperationStatus> addRequirementData = addRequirementData(resourceId, reqName, reqDefinition);
- if (addRequirementData.isRight()) {
- log.error("Failed to add requirement {} node to graph. status is {}", reqName, addRequirementData);
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(addRequirementData.right().value()));
- return result;
- }
-
- RequirementData requirementData = addRequirementData.left().value();
-
- log.debug("Going to associate the requirement to the appriopriate capability type");
- Either<GraphRelation, TitanOperationStatus> associateReqToCapabilityType = associateRequirementToCapabilityType(requirementData, reqDefinition);
- if (associateReqToCapabilityType.isRight()) {
- log.error("Failed to associate requirement data node {} to the capability type node {}", requirementData, reqDefinition.getCapability());
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(associateReqToCapabilityType.right().value()));
- return result;
- }
-
- // TODO: esofer associate requirement to the relationship type
- /*
- * Either<GraphRelation, TitanOperationStatus> associateReqToRelshipType = associateRequirementToRelationshipType( requirementData, reqDefinition);
- *
- * if (associateReqToRelshipType.isRight() && associateReqToRelshipType.right().value() != TitanOperationStatus.NOT_FOUND) { log.error("Failed to associate requirement data node " + requirementData + " to the relationship type node " +
- * reqDefinition.getRelationship()); result = Either .right(TitanStatusConverter .convertTitanStatusToStorageStatus(associateReqToRelshipType .right().value())); return result; }
- */
-
- log.debug("Going to fetch the requirement {} from graph", reqName);
- Either<RequirementDefinition, TitanOperationStatus> requirementDefinitionRes = getRequirement(requirementData.getUniqueId());
- if (requirementDefinitionRes.isRight()) {
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(requirementDefinitionRes.right().value()));
- return result;
- }
-
- result = Either.left(requirementDefinitionRes.left().value());
-
- return result;
-
- } finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- log.error("Going to execute rollback on graph.");
- titanGenericDao.rollback();
- } else {
- log.debug("Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
-
- }
-
- @Override
- public StorageOperationStatus addRequirementToResource(TitanVertex metadataVertex, String reqName, RequirementDefinition reqDefinition, String resourceId, boolean inTransaction) {
-
- StorageOperationStatus result = StorageOperationStatus.OK;
- try {
-
- log.debug("Going to add requirement {} to resource . requirement definition is ", reqName, resourceId, reqDefinition);
-
- validateNodeExists(reqDefinition.getNode());
-
- // 1. add requirement node in graph and associate it to the resource
- log.debug("Going to add requirement node in graph and associate it to the resource");
- Either<TitanVertex, TitanOperationStatus> addRequirementData = addRequirementData(metadataVertex, resourceId, reqName, reqDefinition);
- if (addRequirementData.isRight()) {
- log.error("Failed to add requirement {} node to graph. status is {}", reqName, addRequirementData.right().value());
- result = DaoStatusConverter.convertTitanStatusToStorageStatus(addRequirementData.right().value());
- return result;
- }
-
- log.debug("Going to associate the requirement to the appriopriate capability type");
- TitanOperationStatus associateReqToCapabilityType = associateRequirementToCapabilityType(addRequirementData.left().value(), reqDefinition);
- if (!associateReqToCapabilityType.equals(TitanOperationStatus.OK)) {
- log.error("Failed to associate requirement data node {} to the capability type node {}", reqDefinition.getCapability(), reqDefinition);
- result = DaoStatusConverter.convertTitanStatusToStorageStatus(associateReqToCapabilityType);
- return result;
- }
- return result;
-
- } finally {
- if (false == inTransaction) {
- if (result == null || !result.equals(TitanOperationStatus.OK)) {
- log.error("Going to execute rollback on graph.");
- titanGenericDao.rollback();
- } else {
- log.debug("Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
-
- }
-
- /**
- * Fetch requirement from graph
- *
- * @param uniqueId
- * - the uniqueid of the requirement in the graph
- * @return
- */
- public Either<RequirementDefinition, TitanOperationStatus> getRequirement(String uniqueId) {
-
- log.debug("Going to fetch the requirement {} from graph.", uniqueId);
- Either<RequirementData, TitanOperationStatus> reqDataResult = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Requirement), uniqueId, RequirementData.class);
-
- if (reqDataResult.isRight()) {
- log.error("Failed to find requirement node in graph {}. status is {}", uniqueId, reqDataResult);
- return Either.right(reqDataResult.right().value());
- }
-
- log.debug("Going to fetch the capability type associate to requirement {}", uniqueId);
- Either<ImmutablePair<CapabilityTypeData, GraphEdge>, TitanOperationStatus> capabilityTypeRes = titanGenericDao.getChild(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), uniqueId, GraphEdgeLabels.CAPABILITY_TYPE, NodeTypeEnum.CapabilityType,
- CapabilityTypeData.class);
-
- if (capabilityTypeRes.isRight()) {
- log.error("Cannot find the capability of a given requirement {}. status is {}", uniqueId, capabilityTypeRes);
- return Either.right(capabilityTypeRes.right().value());
- }
-
- ImmutablePair<CapabilityTypeData, GraphEdge> capability = capabilityTypeRes.left().value();
-
- String capabilityType = capability.getKey().getCapabilityTypeDataDefinition().getType();
-
- // TODO: esofer add relationship as edge
- /*
- * Either<List<ImmutablePair<RelationshipTypeData, GraphEdge>>, TitanOperationStatus> relationshipRes = titanGenericDao .getChildrenNodes( GraphPropertiesDictionary.UNIQUE_ID.getProperty(), uniqueId, GraphEdgeLabels.RELATIONSHIP_TYPE,
- * NodeTypeEnum.RelationshipType, RelationshipTypeData.class);
- *
- * if (relationshipRes.isRight() && relationshipRes.right().value() != TitanOperationStatus.NOT_FOUND) {
- * return Either.right(relationshipRes.right().value()); }
- *
- * String relationshipType = null; if (relationshipRes.isLeft()) { List<ImmutablePair<RelationshipTypeData, GraphEdge>> rstPairs = relationshipRes .left().value(); if (rstPairs == null || true == rstPairs.isEmpty()) { log.error(
- * "Cannot find the capability of a given requirement " + uniqueId); return Either.right(TitanOperationStatus.NOT_FOUND); }
- *
- * ImmutablePair<RelationshipTypeData, GraphEdge> relationship = rstPairs .get(0); relationshipType = relationship.getKey().getType(); }
- */
-
- log.debug("Going to fetch the capability type associate to requirement {}", uniqueId);
- Either<ImmutablePair<ResourceMetadataData, GraphEdge>, TitanOperationStatus> parentNode = titanGenericDao.getParentNode(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), uniqueId, GraphEdgeLabels.REQUIREMENT, NodeTypeEnum.Resource,
- ResourceMetadataData.class);
- if (parentNode.isRight()) {
- log.error("Cannot find the parent resource for a given requirement {}. status is {}", uniqueId, parentNode.right().value());
- return Either.right(parentNode.right().value());
- }
-
- RequirementData requirementData = reqDataResult.left().value();
-
- RequirementDefinition requirementDefinition = new RequirementDefinition();
- requirementDefinition.setOwnerId(parentNode.left().value().getLeft().getMetadataDataDefinition().getUniqueId());
- requirementDefinition.setNode(requirementData.getNode());
- requirementDefinition.setUniqueId(requirementData.getUniqueId());
- requirementDefinition.setCapability(capabilityType);
- requirementDefinition.setRelationship(requirementData.getRelationshipType());
- requirementDefinition.setMinOccurrences(requirementData.getMinOccurrences());
- requirementDefinition.setMaxOccurrences(requirementData.getMaxOccurrences());
-
- return Either.left(requirementDefinition);
-
- }
-
- @Override
- public Either<RequirementDefinition, StorageOperationStatus> getRequirementOfResource(String reqName, String resourceId) {
-
- return getRequirementOfResource(reqName, resourceId, false);
- }
-
- @Override
- public Either<RequirementDefinition, StorageOperationStatus> getRequirementOfResource(String reqName, String resourceId, boolean inTransaction) {
-
- Either<RequirementDefinition, StorageOperationStatus> result = null;
-
- try {
- String reqUniqueId = UniqueIdBuilder.buildRequirementUid(resourceId, reqName);
- Either<RequirementDefinition, TitanOperationStatus> requirementRes = getRequirement(reqUniqueId);
-
- if (requirementRes.isRight()) {
- log.debug("Failed to retrieve requirement {} associated to resource {}", reqName, resourceId);
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(requirementRes.right().value()));
- } else {
- result = Either.left(requirementRes.left().value());
- }
-
- return result;
-
- } finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- log.error("Going to execute rollback on graph.");
- titanGenericDao.rollback();
- } else {
- log.debug("Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
-
- }
-
- @Override
- public Either<RequirementDefinition, StorageOperationStatus> addRequirementImplToResource(String reqName, RequirementImplDef reqDefinition, String resourceId, String parentReqUniqueId) {
-
- return addRequirementImplToResource(reqName, reqDefinition, resourceId, parentReqUniqueId, false);
-
- }
-
- @Override
- public Either<RequirementDefinition, StorageOperationStatus> addRequirementImplToResource(String reqName, RequirementImplDef reqImplDefinition, String resourceId, String parentReqUniqueId, boolean inTransaction) {
-
- Either<RequirementDefinition, StorageOperationStatus> result = null;
-
- try {
-
- // find the requirement defined at the resource itself or under one
- // of its parents
- Either<RequirementDefinition, TitanOperationStatus> findReq = getRequirement(parentReqUniqueId);
- log.debug("After looking for requirement {}. status is {}", parentReqUniqueId, findReq);
- if (findReq.isRight()) {
- TitanOperationStatus status = findReq.right().value();
- log.error("The requirment {} was not found in the graph. status is {}", parentReqUniqueId, findReq.right().value());
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
-
- RequirementDefinition reqDefinition = findReq.left().value();
- String reqNode = reqDefinition.getNode();
- String reqCapability = reqDefinition.getCapability();
-
- String nodeIdImpl = reqImplDefinition.getNodeId();
-
- checkNodeIdImplementsRequirementNode(nodeIdImpl, reqNode);
-
- Either<RequirementImplData, TitanOperationStatus> addRequirementImplData = addRequirementImplData(NodeTypeEnum.Resource, resourceId, reqName, parentReqUniqueId, reqImplDefinition);
-
- if (addRequirementImplData.isRight()) {
- TitanOperationStatus status = addRequirementImplData.right().value();
- log.error("Failed to add requirement data impl node in the graph. status is {}", addRequirementImplData.right().value());
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
- RequirementImplData requirementImplData = addRequirementImplData.left().value();
-
- log.debug("Add the properties of the capabilities of the target node {} to the requirement impl node {} in graph.", nodeIdImpl, requirementImplData.getUniqueId());
- Map<String, CapabiltyInstance> requirementPropertiesPerCapability = reqImplDefinition.getRequirementProperties();
- TitanOperationStatus addPropsResult = addCapabilityPropertiesToReqImpl(requirementImplData, reqCapability, nodeIdImpl, requirementPropertiesPerCapability);
-
- if (addPropsResult != TitanOperationStatus.OK) {
- log.error("Failed to add capabilities properties to Requirement impl {}", requirementImplData);
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(addPropsResult));
- return result;
- }
-
- result = Either.left(reqDefinition);
-
- } finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- log.error("Going to execute rollback on graph.");
- titanGenericDao.rollback();
- } else {
- log.debug("Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
-
- return result;
- }
-
- private Either<RequirementImplDef, TitanOperationStatus> getRequirementImplOfResource(String reqName, String resourceId) {
-
- RequirementImplDef requirementImplDef = new RequirementImplDef();
-
- Either<List<ImmutablePair<RequirementImplData, GraphEdge>>, TitanOperationStatus> reqImplNodesRes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource), resourceId, GraphEdgeLabels.REQUIREMENT_IMPL,
- NodeTypeEnum.RequirementImpl, RequirementImplData.class);
- log.debug("After looking for requirement impl edge of resource {}", resourceId);
- if (reqImplNodesRes.isRight()) {
- TitanOperationStatus status = reqImplNodesRes.right().value();
- return Either.right(status);
- }
-
- boolean found = false;
- List<ImmutablePair<RequirementImplData, GraphEdge>> reqImplNodes = reqImplNodesRes.left().value();
- for (ImmutablePair<RequirementImplData, GraphEdge> entry : reqImplNodes) {
- GraphEdge graphEdge = entry.getValue();
- String edgeType = (String) graphEdge.getProperties().get(GraphPropertiesDictionary.NAME.getProperty());
- if (reqName.equals(edgeType)) {
- found = true;
- RequirementImplData requirementImplData = entry.getKey();
-
- requirementImplDef.setUniqueId(requirementImplData.getUniqueId());
-
- Either<ImmutablePair<ResourceMetadataData, GraphEdge>, TitanOperationStatus> nodeImplRes = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.RequirementImpl), requirementImplData.getUniqueId(),
- GraphEdgeLabels.NODE_IMPL, NodeTypeEnum.Resource, ResourceMetadataData.class);
-
- if (nodeImplRes.isRight()) {
- TitanOperationStatus status = nodeImplRes.right().value();
- log.debug("No implementation resource was found under requirement impl {}. status is {}", requirementImplData.getUniqueId(), status);
-
- return Either.right(status);
- }
- String nodeImpl = nodeImplRes.left().value().getKey().getMetadataDataDefinition().getUniqueId();
- requirementImplDef.setNodeId(nodeImpl);
-
- String posX = requirementImplData.getPosX();
- String posY = requirementImplData.getPosY();
- if (posX != null && posY != null) {
- Point point = new Point(posX, posY);
- requirementImplDef.setPoint(point);
- }
-
- Either<List<ImmutablePair<CapabilityInstData, GraphEdge>>, TitanOperationStatus> capaInstDataRes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.RequirementImpl), requirementImplData.getUniqueId(),
- GraphEdgeLabels.CAPABILITY_INST, NodeTypeEnum.CapabilityInst, CapabilityInstData.class);
- if (capaInstDataRes.isRight()) {
- TitanOperationStatus status = capaInstDataRes.right().value();
- log.debug("No capability instance was found under requirement impl {}. status is {}", requirementImplData.getUniqueId(), status);
-
- return Either.right(status);
- }
-
- Map<String, CapabiltyInstance> requirementProperties = new HashMap<String, CapabiltyInstance>();
-
- List<ImmutablePair<CapabilityInstData, GraphEdge>> list = capaInstDataRes.left().value();
- for (ImmutablePair<CapabilityInstData, GraphEdge> capabilityInst : list) {
- CapabilityInstData capabilityInstData = capabilityInst.getKey();
- GraphEdge edge = capabilityInst.getValue();
- Map<String, Object> properties = edge.getProperties();
- if (properties == null) {
- log.error("Cannot find the property {} on the edge {}", GraphPropertiesDictionary.NAME.getProperty(), edge);
- return Either.right(TitanOperationStatus.INVALID_ELEMENT);
- }
- String capabilityName = (String) properties.get(GraphPropertiesDictionary.NAME.getProperty());
- if (capabilityName == null) {
- log.error("Cannot find the property {} on the edge {}", GraphPropertiesDictionary.NAME.getProperty(), edge);
- return Either.right(TitanOperationStatus.INVALID_ELEMENT);
- }
-
- // List<String> keyValuePropertiesList = capabilityInstData
- // .getProperties();
- // Map<String, String> actualValues = new HashMap<String,
- // String>();
- // fillMapFromKeyValueList(keyValuePropertiesList,
- // actualValues);
- CapabiltyInstance capabiltyInstance = new CapabiltyInstance();
- capabiltyInstance.setUniqueId(capabilityInstData.getUniqueId());
- // capabiltyInstance.setProperties(actualValues);
- requirementProperties.put(capabilityName, capabiltyInstance);
-
- Either<List<ImmutablePair<PropertyValueData, GraphEdge>>, TitanOperationStatus> propertyValueNodesRes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.CapabilityInst),
- capabilityInstData.getUniqueId(), GraphEdgeLabels.PROPERTY_VALUE, NodeTypeEnum.PropertyValue, PropertyValueData.class);
-
- if (propertyValueNodesRes.isRight()) {
- TitanOperationStatus status = propertyValueNodesRes.right().value();
- if (status != TitanOperationStatus.NOT_FOUND) {
- log.error("Failed to find the property values of capability instance {}. status is {}", capabilityInstData, status);
- return Either.right(status);
- }
- } else {
- List<ImmutablePair<PropertyValueData, GraphEdge>> propertyValueNodes = propertyValueNodesRes.left().value();
-
- if (propertyValueNodes != null) {
-
- Map<String, String> actualValues = new HashMap<String, String>();
- TitanOperationStatus fillPropertiesResult = fillPropertiesMapFromNodes(propertyValueNodes, actualValues);
-
- if (fillPropertiesResult != TitanOperationStatus.OK) {
- log.error("Failed to fetch properties of capability {}", capabilityName);
- return Either.right(fillPropertiesResult);
- }
-
- if (false == actualValues.isEmpty()) {
- capabiltyInstance.setProperties(actualValues);
- }
- }
- }
-
- }
-
- requirementImplDef.setRequirementProperties(requirementProperties);
-
- break;
- } else {
- continue;
- }
- }
-
- if (false == found) {
- log.debug("Cannot find requirement impl under resource {}", resourceId);
- return Either.right(TitanOperationStatus.NOT_FOUND);
- }
-
- return Either.left(requirementImplDef);
- }
-
- private void fillMapFromKeyValueList(List<String> keyValuePropertiesList, Map<String, String> actualValues) {
-
- if (keyValuePropertiesList != null) {
- for (String keyValue : keyValuePropertiesList) {
- int equalSignLocation = keyValue.indexOf(EQUAL_SIGN);
- if (equalSignLocation > -1) {
- String key = keyValue.substring(0, equalSignLocation);
- String value = EMPTY_STRING;
- if (equalSignLocation + 1 < keyValue.length()) {
- value = keyValue.substring(equalSignLocation + 1);
- }
- actualValues.put(key, value);
- }
- }
- }
-
- }
-
- private TitanOperationStatus fillPropertiesMapFromNodes(List<ImmutablePair<PropertyValueData, GraphEdge>> propertyValueNodes, Map<String, String> actualValues) {
- if (propertyValueNodes != null) {
- for (ImmutablePair<PropertyValueData, GraphEdge> propertyValuePair : propertyValueNodes) {
- PropertyValueData propertyValueData = propertyValuePair.getKey();
- GraphEdge propertyValueEdge = propertyValuePair.getValue();
- Map<String, Object> propertyEdgeProps = propertyValueEdge.getProperties();
- if (propertyEdgeProps == null) {
- log.error("Cannot find the property {} on the edge {}", GraphPropertiesDictionary.NAME.getProperty(), propertyValueEdge);
- return TitanOperationStatus.INVALID_ELEMENT;
- }
- String paramName = (String) propertyEdgeProps.get(GraphPropertiesDictionary.NAME.getProperty());
- if (paramName == null) {
- log.error("Cannot find the property {} on the edge {}", GraphPropertiesDictionary.NAME.getProperty(), propertyValueEdge);
- return TitanOperationStatus.INVALID_ELEMENT;
- }
- actualValues.put(paramName, propertyValueData.getValue());
- }
- }
- return TitanOperationStatus.OK;
- }
-
- private TitanOperationStatus addCapabilityPropertiesToReqImpl(RequirementImplData reqImplData, String reqCapability, String nodeIdImpl, Map<String, CapabiltyInstance> propertiesValuePerCapability) {
-
- TitanOperationStatus result = null;
-
- Either<List<ImmutablePair<CapabilityData, GraphEdge>>, TitanOperationStatus> allCapabilities = capabilityOperation.getAllCapabilitiesPairs(nodeIdImpl);
- log.trace("Atter looking for the capabilities of resource {}. result is {}", nodeIdImpl, allCapabilities);
- if (allCapabilities.isRight()) {
- TitanOperationStatus status = allCapabilities.right().value();
- if (status != TitanOperationStatus.NOT_FOUND) {
- log.error("Failed to find capabilities of resource {}. status is {}", nodeIdImpl, status);
- return status;
- }
- } else {
-
- List<ImmutablePair<CapabilityData, GraphEdge>> capabilitiesValue = allCapabilities.left().value();
- checkImplNodeContainsReqCapability(reqCapability, capabilitiesValue);
-
- for (ImmutablePair<CapabilityData, GraphEdge> entry : capabilitiesValue) {
-
- CapabilityData capabilityData = entry.getKey();
-
- GraphEdge graphEdge = entry.getValue();
-
- Either<String, TitanOperationStatus> capabilityNameResult = findCapabilityName(capabilityData, graphEdge);
-
- if (capabilityNameResult.isRight()) {
- TitanOperationStatus status = capabilityNameResult.right().value();
- log.error("Failed to find capability name from the edge associated to capability {}", capabilityData);
- return status;
- }
-
- String capabilityName = capabilityNameResult.left().value();
- log.debug("Going to set properties of capability {}", capabilityName);
- String cabilityDataUid = capabilityData.getUniqueId();
-
- Either<CapabilityTypeData, TitanOperationStatus> ctDataResult = capabilityOperation.getCapabilityTypeOfCapability(cabilityDataUid);
-
- if (ctDataResult.isRight()) {
- log.error("Cannot find capability type of capbility {}. status is {}", cabilityDataUid, ctDataResult);
- TitanOperationStatus status = ctDataResult.right().value();
- return status;
- }
-
- CapabilityTypeData capabilityTypeData = ctDataResult.left().value();
-
- Either<Map<String, PropertyDefinition>, TitanOperationStatus> propertiesStatus = findPropertiesOfCapability(capabilityTypeData);
- if (propertiesStatus.isRight()) {
- TitanOperationStatus status = propertiesStatus.right().value();
- log.error("Failed to fetch properties definitions from capability. status is {}", status);
- return status;
- }
-
- Map<String, PropertyDefinition> properties = propertiesStatus.left().value();
-
- CapabiltyInstance capabiltyInstance = null;
- if (propertiesValuePerCapability != null) {
- capabiltyInstance = propertiesValuePerCapability.get(capabilityName);
- }
-
- Either<CapabilityInstData, TitanOperationStatus> createCapabilityInstanceNode = createCapabilityInstanceNode(capabilityName, reqImplData);
- if (createCapabilityInstanceNode.isRight()) {
- TitanOperationStatus status = createCapabilityInstanceNode.right().value();
- log.error("Failed to create capability instance node ({}) in graph. status is {}", capabilityName, status);
-
- return status;
- }
- CapabilityInstData capabilityInstData = createCapabilityInstanceNode.left().value();
-
- Either<List<GraphRelation>, TitanOperationStatus> instanceProperties = addPropertiesToCapabilityInstance(properties, capabiltyInstance, capabilityInstData);
-
- if (instanceProperties.isRight()) {
- TitanOperationStatus status = instanceProperties.right().value();
- log.debug("Failed to add properties to capability instance. status is {}", status);
- return status;
- }
-
- Either<GraphRelation, TitanOperationStatus> associateCapabilityInstToCapabilityType = associateCapabilityInstToCapabilityType(capabilityInstData, capabilityTypeData);
- if (associateCapabilityInstToCapabilityType.isRight()) {
- TitanOperationStatus status = associateCapabilityInstToCapabilityType.right().value();
- log.error("Failed to associate capability instance {} to capability type node {} in graph. status is {}", capabilityInstData, capabilityTypeData, status);
-
- return status;
- }
-
- Either<GraphRelation, TitanOperationStatus> associateCapabilityInst = associateRequirementImplToCapabilityInst(reqImplData, capabilityInstData, capabilityName);
- if (associateCapabilityInst.isRight()) {
- TitanOperationStatus status = associateCapabilityInst.right().value();
- log.error("Failed to associate requirement impl {} to capability instance node {} of capability {}) in graph. status is {}", reqImplData, capabilityInstData, capabilityName, status);
-
- return status;
- }
-
- }
- result = TitanOperationStatus.OK;
- }
- return result;
- }
-
- private Either<Map<String, PropertyDefinition>, TitanOperationStatus> findPropertiesOfCapability(CapabilityTypeData capabilityTypeData) {
- String capabilityTypeUid = capabilityTypeData.getUniqueId();
-
- Either<CapabilityTypeDefinition, TitanOperationStatus> capabilityTypeResult = capabilityTypeOperation.getCapabilityTypeByUid(capabilityTypeUid);
-
- if (capabilityTypeResult.isRight()) {
- log.error("Failed to find capabilityType {} in the graph. status is {}", capabilityTypeUid, capabilityTypeResult);
- return Either.right(capabilityTypeResult.right().value());
- }
-
- CapabilityTypeDefinition capabilityTypeDef = capabilityTypeResult.left().value();
- Map<String, PropertyDefinition> properties = capabilityTypeDef.getProperties();
-
- return Either.left(properties);
- }
-
- private Either<String, TitanOperationStatus> findCapabilityName(CapabilityData capabilityData, GraphEdge graphEdge) {
- Map<String, Object> edgeProps = graphEdge.getProperties();
- String capabilityName = (String) edgeProps.get(GraphPropertiesDictionary.NAME.getProperty());
-
- if (capabilityName == null) {
- log.debug("Cannot find the name of the capability associated to node {}", capabilityData);
- return Either.right(TitanOperationStatus.NOT_FOUND);
- }
- return Either.left(capabilityName);
- }
-
- private Either<GraphRelation, TitanOperationStatus> associateCapabilityInstToCapabilityType(CapabilityInstData capabilityInstData, CapabilityTypeData capabilityTypeData) {
-
- Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(capabilityInstData, capabilityTypeData, GraphEdgeLabels.INSTANCE_OF, null);
-
- return createRelation;
-
- }
-
- /**
- * add property value node with default value of override value and associate it to the capability instance node
- *
- * @param properties
- * - properties definition. old also default value
- * @param capabilityInstance
- * - hold also properties new value(if exists)
- * @param capabilityInstData
- * - the graph node which we associate the properties value node to.
- * @return
- */
- private Either<List<GraphRelation>, TitanOperationStatus> addPropertiesToCapabilityInstance(Map<String, PropertyDefinition> properties, CapabiltyInstance capabilityInstance, CapabilityInstData capabilityInstData) {
-
- List<GraphRelation> relationsResult = new ArrayList<GraphRelation>();
-
- if (properties != null) {
- for (Entry<String, PropertyDefinition> entry : properties.entrySet()) {
-
- String paramName = entry.getKey();
-
- PropertyDefinition propertyDefinition = entry.getValue();
-
- String propertyValue = setPropertyValue(capabilityInstance, paramName, propertyDefinition);
-
- PropertyValueData propertyValueData = buildPropertyValueData(capabilityInstData.getUniqueId(), paramName, propertyValue);
-
- log.debug("Before creating property value data node {} in graph.", propertyValueData);
- Either<PropertyValueData, TitanOperationStatus> createNode = titanGenericDao.createNode(propertyValueData, PropertyValueData.class);
- log.debug("Before creating property value data node {} in graph. status is {}", propertyValueData, createNode);
- if (createNode.isRight()) {
- TitanOperationStatus status = createNode.right().value();
- log.error("Failed to create property value node in graph {}. status is {}", propertyValueData, status);
- return Either.right(status);
- }
-
- PropertyValueData propertyValueDataCreated = createNode.left().value();
-
- Either<GraphRelation, TitanOperationStatus> createRelation = associateCapabilityInstToPropertyValue(capabilityInstData, paramName, propertyValueDataCreated);
-
- if (createRelation.isRight()) {
- TitanOperationStatus status = createNode.right().value();
- log.error("Failed to create relation between capability instance {} to property value {} in graph. status is {}", capabilityInstData.getUniqueId(), propertyValueDataCreated.getUniqueId(), status);
- return Either.right(status);
- }
-
- relationsResult.add(createRelation.left().value());
-
- }
- }
-
- return Either.left(relationsResult);
- }
-
- private Either<GraphRelation, TitanOperationStatus> associateCapabilityInstToPropertyValue(CapabilityInstData capabilityInstData, String paramName, PropertyValueData propertyValueDataCreated) {
-
- Map<String, Object> edgeProps = new HashMap<String, Object>();
- edgeProps.put(GraphPropertiesDictionary.NAME.getProperty(), paramName);
- log.debug("Begin creating relation between capability instance {} to property value {} in graph.", capabilityInstData, propertyValueDataCreated);
- Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(capabilityInstData, propertyValueDataCreated, GraphEdgeLabels.PROPERTY_VALUE, edgeProps);
- log.debug("After creating relation between capability instance {} to property value {} in graph. status is {}", capabilityInstData, propertyValueDataCreated, createRelation);
-
- return createRelation;
- }
-
- private String setPropertyValue(CapabiltyInstance capabilityInstance, String paramName, PropertyDefinition propertyDefinition) {
- String propertyValue = NA;
- if (propertyDefinition.getDefaultValue() != null) {
- propertyValue = propertyDefinition.getDefaultValue();
- }
- Map<String, String> propertiesValue = null;
- if (capabilityInstance != null) {
- propertiesValue = capabilityInstance.getProperties();
- if (propertiesValue != null) {
- String tmpValue = propertiesValue.get(paramName);
- if (tmpValue != null) {
- propertyValue = tmpValue;
- }
- }
- }
- return propertyValue;
- }
-
- private String buildPropertykeyValue(String paramName, String paramValue) {
- return paramName + EQUAL_SIGN + paramValue;
- }
-
- private PropertyValueData buildPropertyValueData(String capabilityInstDataUid, String paramName, String propertyValue) {
- PropertyValueData propertyValueData = new PropertyValueData();
- propertyValueData.setValue(propertyValue);
- String uid = UniqueIdBuilder.buildPropertyValueUniqueId(capabilityInstDataUid, paramName);
- propertyValueData.setUniqueId(uid);
- Long creationDate = System.currentTimeMillis();
- propertyValueData.setCreationTime(creationDate);
- propertyValueData.setModificationTime(creationDate);
- return propertyValueData;
- }
-
- private Either<CapabilityInstData, TitanOperationStatus> createCapabilityInstanceNode(String capabilityName, RequirementImplData reqImplData) {
-
- CapabilityInstData capabilityInstData = new CapabilityInstData();
- String uniqueId = UniqueIdBuilder.buildCapabilityInstanceUid(reqImplData.getUniqueId(), capabilityName);
-
- capabilityInstData.setUniqueId(uniqueId);
- // capabilityInstData.setProperties(instanceProperties);
- Long creationDate = System.currentTimeMillis();
- capabilityInstData.setCreationTime(creationDate);
- capabilityInstData.setModificationTime(creationDate);
-
- log.debug("Before creating capability instance node in graph {}", capabilityInstData);
- Either<CapabilityInstData, TitanOperationStatus> createNode = titanGenericDao.createNode(capabilityInstData, CapabilityInstData.class);
- log.debug("After creating capability instance node in graph {}. status is {}", capabilityInstData, createNode);
-
- return createNode;
- }
-
- private void checkNodeIdImplementsRequirementNode(String nodeIdImpl, String reqNode) {
- // TODO Auto-generated method stub
-
- }
-
- private void checkImplNodeContainsReqCapability(String reqCapability, List<ImmutablePair<CapabilityData, GraphEdge>> capabilitiesValue) {
- // TODO Auto-generated method stub
-
- }
-
- public Either<Map<String, List<RequirementDefinition>>, StorageOperationStatus> getAllRequirementsOfResourceOnly(String resourceId, boolean inTransaction) {
-
- Either<Map<String, List<RequirementDefinition>>, StorageOperationStatus> result = null;
-
- try {
-
- Map<String, RequirementDefinition> requirements = new HashMap<String, RequirementDefinition>();
- Set<String> caseInsensitiveReqNames = new HashSet<>();
- TitanOperationStatus status = findAllRequirementsNonRecursive(resourceId, requirements, caseInsensitiveReqNames);
-
- if (status != TitanOperationStatus.OK) {
- log.error("Failed to get all requirements of resource {}. status is {}", resourceId, status);
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- } else {
- // TODO handle requirementImpl
- result = Either.left(convertRequirementMap(requirements, null, null));
- }
- return result;
- } finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- log.error("Going to execute rollback on graph.");
- titanGenericDao.rollback();
- } else {
- log.debug("Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
- }
-
- @Override
- public Either<Map<String, RequirementDefinition>, TitanOperationStatus> getResourceRequirements(String resourceId) {
-
- Either<Map<String, RequirementDefinition>, TitanOperationStatus> result = null;
-
- Map<String, RequirementDefinition> requirements = new HashMap<String, RequirementDefinition>();
- Set<String> caseInsensitiveReqNames = new HashSet<>();
-
- TitanOperationStatus status = findAllRequirementsRecursively(resourceId, requirements, caseInsensitiveReqNames);
- if (status != TitanOperationStatus.OK) {
- log.error("Failed to get all requirements of resource {}. status is {}", resourceId, status);
- return Either.right(status);
- } else {
- log.debug("The requirements returned for resource {} are {}", resourceId, requirements);
-
- if (requirements != null) {
- for (Entry<String, RequirementDefinition> entry : requirements.entrySet()) {
- String reqName = entry.getKey();
- Either<RequirementImplDef, TitanOperationStatus> reqImplRes = this.getRequirementImplOfResource(reqName, resourceId);
- if (reqImplRes.isRight()) {
-
- TitanOperationStatus reqImplResStatus = reqImplRes.right().value();
- if (reqImplResStatus == TitanOperationStatus.NOT_FOUND) {
- log.debug("Cannot find implementation of requirement {} under resource {}", reqName, resourceId);
- } else {
- log.error("Cannot find implementation of requirement {} under resource {}", reqName, resourceId);
- return Either.right(reqImplResStatus);
- }
- } else {
- RequirementDefinition requirementDefinition = entry.getValue();
- // RequirementImplDef requirementImplDef =
- // reqImplRes.left().value();
- // requirementDefinition.setRequirementImpl(requirementImplDef);
- }
- }
- }
- log.debug("The requirements returned for resource {} after fetching requirement impl are {}", resourceId, requirements);
-
- result = Either.left(requirements);
-
- return result;
- }
-
- }
-
- @Override
- public Either<Map<String, RequirementDefinition>, StorageOperationStatus> getAllResourceRequirements(String resourceId, boolean inTransaction) {
-
- Either<Map<String, RequirementDefinition>, StorageOperationStatus> result = null;
-
- try {
-
- Either<Map<String, RequirementDefinition>, TitanOperationStatus> internalResult = getResourceRequirements(resourceId);
- if (internalResult.isRight()) {
- TitanOperationStatus status = internalResult.right().value();
- if (status != TitanOperationStatus.NOT_FOUND) {
- log.error("Failed to fetch requirements of resource {} . status is {}", resourceId, status);
- }
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
-
- Map<String, RequirementDefinition> value = internalResult.left().value();
-
- result = Either.left(value);
- return result;
- } finally {
- if (!inTransaction) {
- if (result == null || result.isRight()) {
- log.error("Going to execute rollback on graph.");
- titanGenericDao.rollback();
- } else {
- log.debug("Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
-
- }
-
- public Either<Map<String, RequirementDefinition>, StorageOperationStatus> getAllResourceRequirements(String resourceId) {
-
- return getAllResourceRequirements(resourceId, false);
-
- }
-
- public TitanOperationStatus findAllRequirementsRecursively(String resourceId, Map<String, RequirementDefinition> requirements, Set<String> caseInsensitiveReqNames) {
-
- TitanOperationStatus nonRecursiveResult = findAllRequirementsNonRecursive(resourceId, requirements, caseInsensitiveReqNames);
- if (!nonRecursiveResult.equals(TitanOperationStatus.OK) && !nonRecursiveResult.equals(TitanOperationStatus.NOT_FOUND)) {
- return nonRecursiveResult;
- }
-
- Either<ImmutablePair<ResourceMetadataData, GraphEdge>, TitanOperationStatus> parentNodes = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource), resourceId, GraphEdgeLabels.DERIVED_FROM, NodeTypeEnum.Resource,
- ResourceMetadataData.class);
-
- if (parentNodes.isRight()) {
- TitanOperationStatus parentNodesStatus = parentNodes.right().value();
- if (parentNodesStatus == TitanOperationStatus.NOT_FOUND) {
- log.debug("Finish to lookup for parnet requirements");
- return TitanOperationStatus.OK;
- } else {
- log.error("Failed to find parent requirements of resource {} . status is {}", resourceId, parentNodesStatus);
- return parentNodesStatus;
- }
- }
- ImmutablePair<ResourceMetadataData, GraphEdge> parnetNodePair = parentNodes.left().value();
- String parentUniqueId = parnetNodePair.getKey().getMetadataDataDefinition().getUniqueId();
- TitanOperationStatus addParentReqStatus = findAllRequirementsRecursively(parentUniqueId, requirements, caseInsensitiveReqNames);
-
- if (addParentReqStatus != TitanOperationStatus.OK) {
- log.error("Failed to fetch all requirements of resource {}", parentUniqueId);
- return addParentReqStatus;
- }
-
- return TitanOperationStatus.OK;
- }
-
- private TitanOperationStatus findAllRequirementsNonRecursive(String resourceId, Map<String, RequirementDefinition> requirements, Set<String> caseInsensitiveReqNames) {
- Either<List<ImmutablePair<RequirementData, GraphEdge>>, TitanOperationStatus> requirementNodes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource), resourceId, GraphEdgeLabels.REQUIREMENT,
- NodeTypeEnum.Requirement, RequirementData.class);
-
- if (requirementNodes.isRight()) {
- TitanOperationStatus status = requirementNodes.right().value();
- if (status != TitanOperationStatus.NOT_FOUND) {
- return status;
- }
- } else {
- List<ImmutablePair<RequirementData, GraphEdge>> requirementList = requirementNodes.left().value();
- if (requirementList != null) {
- for (ImmutablePair<RequirementData, GraphEdge> requirementPair : requirementList) {
- String reqUniqueId = requirementPair.getKey().getUniqueId();
- Map<String, Object> edgeProps = requirementPair.getValue().getProperties();
- String reqName = null;
- if (edgeProps != null) {
- reqName = (String) edgeProps.get(GraphPropertiesDictionary.NAME.getProperty());
- if (reqName == null) {
- log.error("The requirement name is missing on the edge of requirement {}", reqUniqueId);
- return TitanOperationStatus.INVALID_ELEMENT;
- }
- } else {
- log.error("The requirement name is missing on the edge of requirement {}", reqUniqueId);
- return TitanOperationStatus.INVALID_ELEMENT;
- }
- Either<RequirementDefinition, TitanOperationStatus> requirementDefRes = this.getRequirement(reqUniqueId);
- if (requirementDefRes.isRight()) {
- TitanOperationStatus status = requirementDefRes.right().value();
- log.error("Failed to get requirement properties of requirement {}", reqUniqueId);
- return status;
- }
-
- RequirementDefinition requirementDefinition = requirementDefRes.left().value();
- requirementDefinition.setName(reqName);
- // US631462
- if (caseInsensitiveReqNames.contains(reqName.toLowerCase())) {
- log.debug("The requirement {} was already defined in derived resource (case insensitive). Ignore {} from resource {}", reqName, reqName, resourceId);
- } else {
- requirements.put(reqName, requirementDefinition);
- caseInsensitiveReqNames.add(reqName.toLowerCase());
- }
-
- }
- }
- }
- return TitanOperationStatus.OK;
- }
-
- public StorageOperationStatus deleteRequirementFromGraph(String requirementId) {
- log.debug("Before deleting requirement from graph {}", requirementId);
- Either<RequirementData, TitanOperationStatus> deleteNodeStatus = titanGenericDao.deleteNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Requirement), requirementId, RequirementData.class);
- if (deleteNodeStatus.isRight()) {
- log.error("failed to delete requirement with id {}. status={}", requirementId, deleteNodeStatus.right().value());
- return DaoStatusConverter.convertTitanStatusToStorageStatus(deleteNodeStatus.right().value());
- }
- return StorageOperationStatus.OK;
- }
-
- public Either<Map<String, RequirementDefinition>, StorageOperationStatus> deleteAllRequirements(String resourceId) {
-
- return getAllResourceRequirements(resourceId, false);
-
- }
-
- public Either<Map<String, RequirementDefinition>, StorageOperationStatus> deleteAllRequirements(String resourceId, boolean inTransaction) {
-
- Either<Map<String, RequirementDefinition>, StorageOperationStatus> result = null;
-
- try {
- Either<Map<String, RequirementDefinition>, TitanOperationStatus> deleteAllRes = deleteAllRequirementsOfResource(resourceId);
- if (deleteAllRes.isRight()) {
- TitanOperationStatus status = deleteAllRes.right().value();
- if (status != TitanOperationStatus.NOT_FOUND) {
- log.error("Failed to delete requirements of resource {}. status is {}", resourceId, status);
- }
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
-
- Map<String, RequirementDefinition> value = deleteAllRes.left().value();
- result = Either.left(value);
-
- return result;
-
- } finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- log.error("Going to execute rollback on graph.");
- titanGenericDao.rollback();
- } else {
- log.debug("Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
-
- }
-
- public Either<Map<String, RequirementDefinition>, TitanOperationStatus> deleteAllRequirementsOfResource(String resourceId) {
-
- Map<String, RequirementDefinition> requirements = new HashMap<String, RequirementDefinition>();
- Set<String> caseInsensitiveReqNames = new HashSet<>();
- TitanOperationStatus requirementsRes = findAllRequirementsNonRecursive(resourceId, requirements, caseInsensitiveReqNames);
- if (requirementsRes != TitanOperationStatus.OK) {
- return Either.right(requirementsRes);
- }
-
- if (requirements.isEmpty()) {
- return Either.right(TitanOperationStatus.NOT_FOUND);
- }
-
- for (Entry<String, RequirementDefinition> entry : requirements.entrySet()) {
- RequirementDefinition requirementDefinition = entry.getValue();
-
- String requirementUid = requirementDefinition.getUniqueId();
-
- Either<RequirementData, TitanOperationStatus> deleteNodeRes = titanGenericDao.deleteNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Requirement), requirementUid, RequirementData.class);
- if (deleteNodeRes.isRight()) {
- TitanOperationStatus status = deleteNodeRes.right().value();
- log.error("Failed to delete requirement {} of resource ", requirementUid, resourceId);
- return Either.right(status);
- }
- }
-
- return Either.left(requirements);
-
- }
-
- public Map<String, List<RequirementDefinition>> convertRequirementMap(Map<String, RequirementDefinition> requirementMap, String ownerId, String ownerName) {
-
- Map<String, List<RequirementDefinition>> typeToRequirementMap = new HashMap<String, List<RequirementDefinition>>();
- requirementMap.forEach((reqName, requirement) -> {
- // requirement.setOwnerId(ownerId);
- // requirement.setOwnerName(ownerName);
- if (typeToRequirementMap.containsKey(requirement.getCapability())) {
- typeToRequirementMap.get(requirement.getCapability()).add(requirement);
- } else {
- List<RequirementDefinition> list = new ArrayList<RequirementDefinition>();
- list.add(requirement);
- typeToRequirementMap.put(requirement.getCapability(), list);
- }
- });
- return typeToRequirementMap;
- }
-
-}
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ResourceOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ResourceOperation.java
deleted file mode 100644
index 2cc78eade2..0000000000
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ResourceOperation.java
+++ /dev/null
@@ -1,3040 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.openecomp.sdc.be.model.operations.impl;
-
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import com.thinkaurelius.titan.core.TitanGraph;
-import com.thinkaurelius.titan.core.TitanVertex;
-import fj.data.Either;
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.lang3.tuple.ImmutablePair;
-import org.apache.tinkerpop.gremlin.structure.Vertex;
-import org.openecomp.sdc.be.config.BeEcompErrorManager;
-import org.openecomp.sdc.be.config.BeEcompErrorManager.ErrorSeverity;
-import org.openecomp.sdc.be.dao.api.ActionStatus;
-import org.openecomp.sdc.be.dao.graph.datatype.GraphEdge;
-import org.openecomp.sdc.be.dao.graph.datatype.GraphNode;
-import org.openecomp.sdc.be.dao.graph.datatype.GraphRelation;
-import org.openecomp.sdc.be.dao.graph.datatype.RelationEndPoint;
-import org.openecomp.sdc.be.dao.neo4j.GraphEdgeLabels;
-import org.openecomp.sdc.be.dao.neo4j.GraphPropertiesDictionary;
-import org.openecomp.sdc.be.dao.titan.TitanGenericDao;
-import org.openecomp.sdc.be.dao.titan.TitanOperationStatus;
-import org.openecomp.sdc.be.datatypes.components.ResourceMetadataDataDefinition;
-import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
-import org.openecomp.sdc.be.datatypes.enums.FilterKeyEnum;
-import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
-import org.openecomp.sdc.be.datatypes.enums.ResourceTypeEnum;
-import org.openecomp.sdc.be.model.*;
-import org.openecomp.sdc.be.model.cache.ComponentCache;
-import org.openecomp.sdc.be.model.category.CategoryDefinition;
-import org.openecomp.sdc.be.model.category.SubCategoryDefinition;
-import org.openecomp.sdc.be.model.operations.api.IAdditionalInformationOperation;
-import org.openecomp.sdc.be.model.operations.api.IArtifactOperation;
-import org.openecomp.sdc.be.model.operations.api.IAttributeOperation;
-import org.openecomp.sdc.be.model.operations.api.IElementOperation;
-import org.openecomp.sdc.be.model.operations.api.IResourceOperation;
-import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
-import org.openecomp.sdc.be.model.operations.migration.MigrationMalformedDataLogger;
-import org.openecomp.sdc.be.model.operations.utils.GraphDeleteUtil;
-import org.openecomp.sdc.be.resources.data.ComponentMetadataData;
-import org.openecomp.sdc.be.resources.data.PropertyData;
-import org.openecomp.sdc.be.resources.data.ResourceMetadataData;
-import org.openecomp.sdc.be.resources.data.TagData;
-import org.openecomp.sdc.be.resources.data.UniqueIdData;
-import org.openecomp.sdc.be.resources.data.UserData;
-import org.openecomp.sdc.be.resources.data.category.CategoryData;
-import org.openecomp.sdc.be.resources.data.category.SubCategoryData;
-import org.openecomp.sdc.common.api.ArtifactTypeEnum;
-import org.openecomp.sdc.common.datastructure.Wrapper;
-import org.openecomp.sdc.common.util.PairUtils;
-import org.openecomp.sdc.common.util.ValidationUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.slf4j.MDC;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Optional;
-import java.util.Set;
-import java.util.UUID;
-import java.util.function.Predicate;
-import java.util.regex.Pattern;
-import java.util.stream.Collectors;
-
-@org.springframework.stereotype.Component("resource-operation")
-@Deprecated
-public class ResourceOperation extends ComponentOperation implements IResourceOperation {
-
- public ResourceOperation() {
- super();
- }
-
- private static Logger log = LoggerFactory.getLogger(ResourceOperation.class.getName());
-
- @javax.annotation.Resource
- private PropertyOperation propertyOperation;
-
- @javax.annotation.Resource
- private IAttributeOperation attributeOperation;
-
- @javax.annotation.Resource
- private RequirementOperation requirementOperation;
-
- @javax.annotation.Resource
- private CapabilityOperation capabilityOperation;
-
- @javax.annotation.Resource
- private InterfaceLifecycleOperation interfaceLifecycleOperation;
-
- @javax.annotation.Resource
- private IElementOperation elementOperation;
-
- @javax.annotation.Resource
- private IAdditionalInformationOperation addioAdditionalInformationOperation;
-
- @javax.annotation.Resource
- private GroupOperation groupOperation;
-
- @javax.annotation.Resource
- private ComponentCache componentCache;
-
- private Gson prettyJson = new GsonBuilder().setPrettyPrinting().create();
-
- private GraphDeleteUtil graphDeleteUtil = new GraphDeleteUtil();
-
- public static Pattern uuidNewVersion = Pattern.compile("^\\d{1,}.1");
- public static Pattern uuidNormativeNewVersion = Pattern.compile("^\\d{1,}.0");
-
- @Override
- public Either<Resource, StorageOperationStatus> createResource(Resource resource) {
- return createResource(resource, false);
- }
-
- @Override
- public Either<Resource, StorageOperationStatus> createResource(Resource resource, boolean inTransaction) {
-
- Either<Resource, StorageOperationStatus> result = null;
-
- try {
- generateUUID(resource);
-
- ResourceMetadataData resourceData = getResourceMetaDataFromResource(resource);
- String resourceUniqueId = resource.getUniqueId();
- if (resourceUniqueId == null) {
- resourceUniqueId = UniqueIdBuilder.buildResourceUniqueId();
- resourceData.getMetadataDataDefinition().setUniqueId(resourceUniqueId);
- }
- resourceData.getMetadataDataDefinition().setHighestVersion(true);
-
- String userId = resource.getCreatorUserId();
-
- Either<TitanVertex, TitanOperationStatus> findUser = findUserVertex(userId);
-
- if (findUser.isRight()) {
- TitanOperationStatus status = findUser.right().value();
- log.error("Cannot find user {} in the graph. status is {}", userId, status);
- return sendError(status, StorageOperationStatus.USER_NOT_FOUND);
- }
-
- TitanVertex creatorVertex = findUser.left().value();
- TitanVertex updaterVertex = creatorVertex;
- String updaterUserId = resource.getLastUpdaterUserId();
- if (updaterUserId != null && !updaterUserId.equals(userId)) {
- findUser = findUserVertex(updaterUserId);
- if (findUser.isRight()) {
- TitanOperationStatus status = findUser.right().value();
- log.error("Cannot find user {} in the graph. status is {}", userId, status);
- return sendError(status, StorageOperationStatus.USER_NOT_FOUND);
- } else {
- updaterVertex = findUser.left().value();
- }
- }
-
- // get derived from resources
- List<ResourceMetadataData> derivedResources = null;
- Either<List<ResourceMetadataData>, StorageOperationStatus> derivedResourcesResult = findDerivedResources(resource);
- if (derivedResourcesResult.isRight()) {
- result = Either.right(derivedResourcesResult.right().value());
- return result;
- } else {
- derivedResources = derivedResourcesResult.left().value();
- }
-
- List<String> tags = resource.getTags();
- if (tags != null && false == tags.isEmpty()) {
- Either<List<TagData>, StorageOperationStatus> tagsResult = createNewTagsList(tags);
- if (tagsResult.isRight()) {
- result = Either.right(tagsResult.right().value());
- return result;
- }
- List<TagData> tagsToCreate = tagsResult.left().value();
- StorageOperationStatus status = createTagNodesOnGraph(tagsToCreate);
- if (!status.equals(StorageOperationStatus.OK)) {
- result = Either.right(status);
- return result;
- }
- }
-
- Either<TitanVertex, TitanOperationStatus> createdVertex = titanGenericDao.createNode(resourceData);
- if (createdVertex.isRight()) {
- TitanOperationStatus status = createdVertex.right().value();
- log.error("Error returned after creating resource data node {}. status returned is ", resourceData, status);
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
- TitanVertex metadataVertex = createdVertex.left().value();
-
- TitanOperationStatus associateMetadata = associateMetadataToResource(resourceData, creatorVertex, updaterVertex, derivedResources, metadataVertex);
- if (associateMetadata != TitanOperationStatus.OK) {
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(associateMetadata));
- return result;
- }
- StorageOperationStatus associateCategory = assosiateMetadataToCategory(resource, resourceData);
- if (associateCategory != StorageOperationStatus.OK) {
- result = Either.right(associateCategory);
- return result;
- }
-
- TitanOperationStatus associateProperties = associatePropertiesToResource(metadataVertex, resourceUniqueId, resource.getProperties(), derivedResources);
- if (associateProperties != TitanOperationStatus.OK) {
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(associateProperties));
- return result;
- }
-
- TitanOperationStatus associateAttributes = associateAttributesToResource(metadataVertex, resource.getAttributes(), resourceUniqueId);
- if (associateAttributes != TitanOperationStatus.OK) {
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(associateAttributes));
- return result;
- }
-
- TitanOperationStatus associateInputs = associateInputsToComponent(metadataVertex, resourceUniqueId, resource.getInputs());
- if (associateInputs != TitanOperationStatus.OK) {
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(associateInputs));
- return result;
- }
-
- StorageOperationStatus associateRequirements = associateRequirementsToResource(metadataVertex, resourceUniqueId, resource.getRequirements());
- if (associateRequirements != StorageOperationStatus.OK) {
- result = Either.right(associateRequirements);
- return result;
- }
-
- StorageOperationStatus associateCapabilities = associateCapabilitiesToResource(metadataVertex, resourceUniqueId, resource.getCapabilities());
- if (associateCapabilities != StorageOperationStatus.OK) {
- result = Either.right(associateCapabilities);
- return result;
- }
-
- StorageOperationStatus associateInterfaces = associateInterfacesToResource(resourceData, resource.getInterfaces(), metadataVertex);
- if (associateInterfaces != StorageOperationStatus.OK) {
- result = Either.right(associateInterfaces);
- return result;
- }
-
- Map<String, ArtifactDefinition> resourceArtifacts = resource.getArtifacts();
- Map<String, ArtifactDefinition> deploymentArtifacts = resource.getDeploymentArtifacts();
- Map<String, ArtifactDefinition> toscaArtifacts = resource.getToscaArtifacts();
- if (resourceArtifacts != null) {
- if (deploymentArtifacts != null) {
- resourceArtifacts.putAll(deploymentArtifacts);
- }
- } else {
- resourceArtifacts = deploymentArtifacts;
- }
- if (toscaArtifacts != null) {
- if (resourceArtifacts != null) {
- resourceArtifacts.putAll(toscaArtifacts);
- } else {
- resourceArtifacts = toscaArtifacts;
- }
- }
-
- StorageOperationStatus associateArtifacts = associateArtifactsToResource(metadataVertex, resourceUniqueId, resourceArtifacts);
- if (associateArtifacts != StorageOperationStatus.OK) {
- result = Either.right(associateArtifacts);
- return result;
- }
-
- List<AdditionalInformationDefinition> additionalInformation = resource.getAdditionalInformation();
- StorageOperationStatus addAdditionalInformation = addAdditionalInformationToResource(metadataVertex, resourceUniqueId, additionalInformation);
- if (addAdditionalInformation != StorageOperationStatus.OK) {
- result = Either.right(addAdditionalInformation);
- return result;
- }
-
- result = this.getResource(resourceUniqueId, true);
- if (result.isRight()) {
- log.error("Cannot get full resource from the graph. status is {}", result.right().value());
- return Either.right(result.right().value());
- }
-
- if (log.isDebugEnabled()) {
- String json = prettyJson.toJson(result.left().value());
- log.debug("Resource retrieved is {}", json);
- }
-
- return result;
-
- } finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- log.error("Going to execute rollback on graph.");
- titanGenericDao.rollback();
- } else {
- log.debug("Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
- }
-
- private StorageOperationStatus assosiateMetadataToCategory(Resource resource, ResourceMetadataData resourceData) {
- // get category
- String categoryName = resource.getCategories().get(0).getName();
- String subcategoryName = resource.getCategories().get(0).getSubcategories().get(0).getName();
-
- CategoryData categoryData = null;
- Either<CategoryData, StorageOperationStatus> categoryResult = elementOperation.getNewCategoryData(categoryName, NodeTypeEnum.ResourceNewCategory, CategoryData.class);
- if (categoryResult.isRight()) {
- StorageOperationStatus status = categoryResult.right().value();
- log.error("Cannot find category {} in the graph. status is {}", categoryName, status);
- return categoryResult.right().value();
- }
- categoryData = categoryResult.left().value();
- if (categoryData != null) {
- Either<List<ImmutablePair<SubCategoryData, GraphEdge>>, TitanOperationStatus> childrenNodes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceNewCategory), (String) categoryData.getUniqueId(),
- GraphEdgeLabels.SUB_CATEGORY, NodeTypeEnum.ResourceSubcategory, SubCategoryData.class);
- if (childrenNodes.isRight()) {
- log.debug("Faield to fetch sub categories for resource category {}", categoryData.getCategoryDataDefinition().getName());
- return DaoStatusConverter.convertTitanStatusToStorageStatus(childrenNodes.right().value());
- }
- for (ImmutablePair<SubCategoryData, GraphEdge> pair : childrenNodes.left().value()) {
- SubCategoryData subcategoryData = pair.left;
- if (subcategoryData.getSubCategoryDataDefinition().getName().equals(subcategoryName)) {
- Either<GraphRelation, TitanOperationStatus> result = titanGenericDao.createRelation(resourceData, subcategoryData, GraphEdgeLabels.CATEGORY, null);
- log.debug("After associating resource {} to subcategory {}. Edge type is {}", resourceData.getUniqueId(), subcategoryData, GraphEdgeLabels.CATEGORY);
- if (result.isRight()) {
- log.error("Faield to associate resource {} to category {}. Edge type is {}", resourceData.getUniqueId(), categoryData, GraphEdgeLabels.CATEGORY);
- return DaoStatusConverter.convertTitanStatusToStorageStatus(result.right().value());
- }
-
- }
- }
- }
- return StorageOperationStatus.OK;
- }
-
- private StorageOperationStatus addAdditionalInformationToResource(TitanVertex metadataVertex, String resourceUniqueId, List<AdditionalInformationDefinition> additionalInformation) {
-
- StorageOperationStatus result = null;
- if (additionalInformation == null || true == additionalInformation.isEmpty()) {
- result = super.addAdditionalInformation(NodeTypeEnum.Resource, resourceUniqueId, null, metadataVertex);
- } else {
- if (additionalInformation.size() == 1) {
- result = super.addAdditionalInformation(NodeTypeEnum.Resource, resourceUniqueId, additionalInformation.get(0));
- } else {
- result = StorageOperationStatus.BAD_REQUEST;
- log.info("Cannot create resource with more than one additional information object. The number of received object is {}", additionalInformation.size());
- }
- }
- return result;
- }
-
- private void generateUUID(Resource resource) {
- String prevUUID = resource.getUUID();
- String version = resource.getVersion();
- if ((prevUUID == null && uuidNormativeNewVersion.matcher(version).matches()) || uuidNewVersion.matcher(version).matches()) {
- UUID uuid = UUID.randomUUID();
- resource.setUUID(uuid.toString());
- MDC.put("serviceInstanceID", uuid.toString());
- }
- }
-
- @Override
- public Either<Resource, StorageOperationStatus> overrideResource(Resource resource, Resource resourceSaved, boolean inTransaction) {
- Either<Resource, StorageOperationStatus> result = null;
- try {
- String resourceId = resourceSaved.getUniqueId();
-
- // override interfaces to copy only resource's interfaces and not
- // derived interfaces
- Either<Map<String, InterfaceDefinition>, StorageOperationStatus> interfacesOfResourceOnly = interfaceLifecycleOperation.getAllInterfacesOfResource(resourceSaved.getUniqueId(), false, true);
- if (interfacesOfResourceOnly.isRight()) {
- log.error("failed to get interfaces of resource. resourceId {} status is {}", resourceId, interfacesOfResourceOnly.right().value());
- result = Either.right(interfacesOfResourceOnly.right().value());
- return result;
- }
- resource.setInterfaces(interfacesOfResourceOnly.left().value());
- resource.setArtifacts(resourceSaved.getArtifacts());
- resource.setDeploymentArtifacts(resourceSaved.getDeploymentArtifacts());
- resource.setGroups(resourceSaved.getGroups());
- resource.setInputs(null);
- resource.setLastUpdateDate(null);
- resource.setHighestVersion(true);
-
- // delete former resource
- Either<Resource, StorageOperationStatus> deleteResource = deleteResource(resourceId, true);
- if (deleteResource.isRight()) {
- log.error("failed to delete old resource with id {}. status = {}", resourceId, deleteResource.right().value());
- result = deleteResource;
- return result;
- }
-
- Either<Resource, StorageOperationStatus> createResource = createResource(resource, true);
- if (createResource.isRight()) {
- log.error("failed to create new version of resource {} status = {}", resourceId, createResource.right().value());
- result = createResource;
- return result;
- }
- Resource newResource = createResource.left().value();
-
- Either<List<GroupDefinition>, StorageOperationStatus> cloneGroupEither = cloneGroups(resource, newResource, null, inTransaction);
- if (cloneGroupEither.isLeft()) {
- newResource.setGroups(cloneGroupEither.left().value());
- } else if (cloneGroupEither.right().value() != StorageOperationStatus.OK) {
- log.error("failed to clone group of resource {} status = {}", resourceId, cloneGroupEither.right().value());
- result = Either.right(cloneGroupEither.right().value());
- return result;
- }
-
- result = Either.left(newResource);
- return result;
- } finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- log.error("Going to execute rollback on graph.");
- titanGenericDao.rollback();
- } else {
- log.debug("Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
-
- }
-
- private StorageOperationStatus associateCapabilitiesToResource(TitanVertex metadataVertex, String resourceIda, Map<String, List<CapabilityDefinition>> capabilities) {
- StorageOperationStatus addCapabilityToResource = null;
- if (capabilities != null) {
- for (Entry<String, List<CapabilityDefinition>> entry : capabilities.entrySet()) {
-
- List<CapabilityDefinition> capDefinition = entry.getValue();
- for (CapabilityDefinition item : capDefinition) {
- addCapabilityToResource = capabilityOperation.addCapability(metadataVertex, resourceIda, item.getName(), item, true);
- if (!addCapabilityToResource.equals(StorageOperationStatus.OK)) {
- return addCapabilityToResource;
- }
-
- }
- }
-
- }
- return StorageOperationStatus.OK;
- }
-
- private StorageOperationStatus associateRequirementsToResource(TitanVertex metadataVertex, String resourceId, Map<String, List<RequirementDefinition>> requirements) {
-
- if (requirements != null) {
- for (Entry<String, List<RequirementDefinition>> entry : requirements.entrySet()) {
-
- List<RequirementDefinition> reqDefinition = entry.getValue();
- for (RequirementDefinition item : reqDefinition) {
- StorageOperationStatus addRequirementToResource = requirementOperation.addRequirementToResource(metadataVertex, item.getName(), item, resourceId, true);
-
- if (!addRequirementToResource.equals(StorageOperationStatus.OK)) {
- return addRequirementToResource;
- }
- }
- }
- }
- return StorageOperationStatus.OK;
- }
-
- private StorageOperationStatus associateArtifactsToResource(TitanVertex metadataVertex, String resourceId, Map<String, ArtifactDefinition> artifacts) {
-
- StorageOperationStatus status = StorageOperationStatus.OK;
- if (artifacts != null) {
- Map<ArtifactDefinition, ArtifactDefinition> heatEnvMap = new HashMap<ArtifactDefinition, ArtifactDefinition>();
- for (Entry<String, ArtifactDefinition> entry : artifacts.entrySet()) {
-
- ArtifactDefinition artifactDefinition = entry.getValue();
-
- ArtifactTypeEnum artifactType = ArtifactTypeEnum.findType(artifactDefinition.getArtifactType());
- if(artifactType != ArtifactTypeEnum.HEAT_ENV){
- status = artifactOperation.addArifactToComponent(artifactDefinition, resourceId, NodeTypeEnum.Resource, false, metadataVertex);
- }else{
- Optional<ArtifactDefinition> op = artifacts.values().stream().filter(p -> p.getUniqueId().equals(artifactDefinition.getGeneratedFromId())).findAny();
- if(op.isPresent()){
- heatEnvMap.put(artifactDefinition, op.get());
- }
-
-
- }
-
- if (!status.equals(StorageOperationStatus.OK)) {
- return status;
- }
- }
- for(Entry<ArtifactDefinition, ArtifactDefinition> entry : heatEnvMap.entrySet()){
- Either<ArtifactDefinition, StorageOperationStatus> addHeatEnvArtifact = artifactOperation.addHeatEnvArtifact(entry.getKey(), entry.getValue(), resourceId, NodeTypeEnum.Resource, false);
- if (addHeatEnvArtifact.isRight()) {
- log.debug("failed to create heat env artifact on resource instance");
- return addHeatEnvArtifact.right().value();
- }
- }
- }
- return status;
-
- }
-
- private StorageOperationStatus associateInterfacesToResource(ResourceMetadataData resourceData, Map<String, InterfaceDefinition> interfaces, TitanVertex metadataVertex) {
-
- if (interfaces != null) {
- for (Entry<String, InterfaceDefinition> entry : interfaces.entrySet()) {
-
- InterfaceDefinition interfaceDefinition = entry.getValue();
- StorageOperationStatus status;
- if (((ResourceMetadataDataDefinition) resourceData.getMetadataDataDefinition()).isAbstract()) {
- status = interfaceLifecycleOperation.associateInterfaceToNode(resourceData, interfaceDefinition, metadataVertex);
- } else {
- status = interfaceLifecycleOperation.createInterfaceOnResource(interfaceDefinition, resourceData.getMetadataDataDefinition().getUniqueId(), interfaceDefinition.getType(), false, true, metadataVertex);
- }
-
- if (!status.equals(StorageOperationStatus.OK)) {
- return status;
- }
- }
- }
- return StorageOperationStatus.OK;
-
- }
-
- private Either<Resource, StorageOperationStatus> sendError(TitanOperationStatus status, StorageOperationStatus statusIfNotFound) {
- Either<Resource, StorageOperationStatus> result;
- if (status == TitanOperationStatus.NOT_FOUND) {
- result = Either.right(statusIfNotFound);
- return result;
- } else {
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
- }
-
- private TitanOperationStatus associatePropertiesToResource(TitanVertex metadatVertex, String resourceId, List<PropertyDefinition> properties, List<ResourceMetadataData> derivedResources) {
-
- Either<Map<String, DataTypeDefinition>, TitanOperationStatus> allDataTypes = applicationDataTypeCache.getAll();
- if (allDataTypes.isRight()) {
- TitanOperationStatus status = allDataTypes.right().value();
- log.debug("Cannot find any data type. Status is {}.", status);
- return status;
- }
-
- Map<String, PropertyDefinition> convertedProperties = new HashMap<>();
-
- if (properties != null) {
- for (PropertyDefinition propertyDefinition : properties) {
- convertedProperties.put(propertyDefinition.getName(), propertyDefinition);
- }
-
- Either<Map<String, PropertyDefinition>, TitanOperationStatus> getPropertiesOfAllDerivedFromRes = getPropertiesOfAllDerivedFrom(derivedResources);
-
- if(getPropertiesOfAllDerivedFromRes.isRight()){
- TitanOperationStatus status = getPropertiesOfAllDerivedFromRes.right().value();
- log.debug("Cannot fetch properties of all derived from resources. Status is {}.", status);
- return status;
- }
-
- Map<String, PropertyDefinition> allDerivedFromProperties = getPropertiesOfAllDerivedFromRes.left().value();
-
- TitanOperationStatus validatePropertyNamesUniqunessStatus = validatePropertyNamesUniquness(properties, allDerivedFromProperties);
-
- if(validatePropertyNamesUniqunessStatus != TitanOperationStatus.OK){
- return validatePropertyNamesUniqunessStatus;
- }
-
- return propertyOperation.addPropertiesToGraph(metadatVertex, convertedProperties, allDataTypes.left().value(), resourceId);
- }
-
- return TitanOperationStatus.OK;
-
- }
-
- private TitanOperationStatus validatePropertyNamesUniquness(List<PropertyDefinition> properties, Map<String, PropertyDefinition> allDerivedFromProperties) {
-
- TitanOperationStatus result = TitanOperationStatus.OK;
- Optional<PropertyDefinition> propertyOptional= properties.stream()
- //filters out properties with the same name and different type
- .filter(prop -> allDerivedFromProperties.containsKey(prop.getName()) && !prop.getType().equals(allDerivedFromProperties.get(prop.getName()).getType()))
- //Searches for any matching value
- .findAny();
- if(propertyOptional.isPresent()){
- log.error("Property with name {} and type {} already exists in derived from resource. ", propertyOptional.get().getName(), allDerivedFromProperties.get( propertyOptional.get().getName()).getType());
- result = TitanOperationStatus.ALREADY_EXIST;
- }
- return result;
- }
-
- private Either<Map<String, PropertyDefinition>, TitanOperationStatus> getPropertiesOfAllDerivedFrom(List<ResourceMetadataData> derivedResources) {
- Map<String, PropertyDefinition> allDerivedProperties = new HashMap<>();
- Either<Map<String, PropertyDefinition>, TitanOperationStatus> getPropertiesOfAllDerivedFromRes = Either.left(allDerivedProperties);
- String currResourceName = null ;
- if(!CollectionUtils.isEmpty(derivedResources)){
- try{
- for(int i = derivedResources.size() - 1; i >= 0 ; --i){
- ResourceMetadataData currDerivedResource = derivedResources.get(i);
- currResourceName = currDerivedResource.getMetadataDataDefinition().getName();
- Either<List<ImmutablePair<PropertyData, GraphEdge>>, TitanOperationStatus> res =
- titanGenericDao.getChildrenNodes( currDerivedResource.getUniqueIdKey(), (String)currDerivedResource.getUniqueId(), GraphEdgeLabels.PROPERTY, NodeTypeEnum.Property, PropertyData.class);
- if(res.isRight() && res.right().value() != TitanOperationStatus.NOT_FOUND){
- getPropertiesOfAllDerivedFromRes = Either.right(res.right().value());
- break;
- }else if(res.isLeft()){
- allDerivedProperties.putAll(res.left().value().stream()
- //Maps PropertyData converted to PropertyDefinition
- .map(pair-> propertyOperation.convertPropertyDataToPropertyDefinition(pair.getLeft(), (String)pair.getRight().getProperties().get(GraphPropertiesDictionary.NAME.getProperty()), (String)currDerivedResource.getUniqueId()))
- //and collects it to a map
- .collect(Collectors.toMap(entry->entry.getName(), entry->entry)));
- }
- }
- }
- catch(Exception e){
- log.error("Exception occured during fetch properties of resource {}. ", currResourceName);
- }
- }
- return getPropertiesOfAllDerivedFromRes;
- }
-
- private TitanOperationStatus associateAttributesToResource(TitanVertex metadataVertex, List<PropertyDefinition> attributes, String resourceId) {
- TitanOperationStatus operationStatus = TitanOperationStatus.OK;
-
- Either<Map<String, DataTypeDefinition>, TitanOperationStatus> allDataTypes = applicationDataTypeCache.getAll();
- if (allDataTypes.isRight()) {
- TitanOperationStatus status = allDataTypes.right().value();
- log.debug("Cannot find any data type. Status is {}.", status);
- return status;
- }
-
- if (attributes != null) {
- Map<String, PropertyDefinition> convertedAttributes = attributes.stream().collect(Collectors.toMap(e -> e.getName(), e -> e));
- operationStatus = attributeOperation.addAttributesToGraph(metadataVertex, convertedAttributes, resourceId, allDataTypes.left().value());
- }
- return operationStatus;
- }
-
- private TitanOperationStatus associateMetadataToResource(ResourceMetadataData resourceData, TitanVertex creatorVertex, TitanVertex updaterVertex, List<ResourceMetadataData> derivedResources, TitanVertex metadataVertex) {
-
- Map<String, Object> props = new HashMap<String, Object>();
- props.put(GraphPropertiesDictionary.STATE.getProperty(), resourceData.getMetadataDataDefinition().getState());
-
- TitanOperationStatus result = titanGenericDao.createEdge(updaterVertex, metadataVertex, GraphEdgeLabels.STATE, props);
- log.debug("After associating user {} to resource {}. Edge type is {}", updaterVertex, resourceData.getUniqueId(), GraphEdgeLabels.STATE);
- if (!result.equals(TitanOperationStatus.OK)) {
- return result;
- }
- result = titanGenericDao.createEdge(updaterVertex, metadataVertex, GraphEdgeLabels.LAST_MODIFIER, null);
- log.debug("After associating user {} to resource {}. Edge type is {}", updaterVertex, resourceData.getUniqueId(), GraphEdgeLabels.LAST_MODIFIER);
- if (!result.equals(TitanOperationStatus.OK)) {
- log.error("Failed to associate user {} to resource {}. Edge type is {}", updaterVertex, resourceData.getUniqueId(), GraphEdgeLabels.LAST_MODIFIER);
- return result;
- }
-
- result = titanGenericDao.createEdge(creatorVertex, metadataVertex, GraphEdgeLabels.CREATOR, null);
- log.debug("After associating user {} to resource {}. Edge type is {} ", creatorVertex, resourceData.getUniqueId(), GraphEdgeLabels.CREATOR);
- if (!result.equals(TitanOperationStatus.OK)) {
- log.error("Failed to associate user {} to resource {}. Edge type is {} ", creatorVertex, resourceData.getUniqueId(), GraphEdgeLabels.CREATOR);
- return result;
- }
- // TODO Evg : need to change too..
- if (derivedResources != null) {
- for (ResourceMetadataData derivedResource : derivedResources) {
- log.debug("After associating resource {} to parent resource {}. Edge type is {}", resourceData.getUniqueId(), derivedResource.getUniqueId(), GraphEdgeLabels.DERIVED_FROM);
- Either<GraphRelation, TitanOperationStatus> createRelationResult = titanGenericDao.createRelation(resourceData, derivedResource, GraphEdgeLabels.DERIVED_FROM, null);
- if (createRelationResult.isRight()) {
- log.error("Failed to associate resource {} to derived ", resourceData.getUniqueId());
- return createRelationResult.right().value();
- }
- }
- }
-
- return TitanOperationStatus.OK;
- }
-
- public Either<List<ResourceMetadataData>, StorageOperationStatus> findDerivedResources(Resource resource) {
-
- List<ResourceMetadataData> derivedResources = new ArrayList<ResourceMetadataData>();
- List<String> derivedFromResources = resource.getDerivedFrom();
- if (derivedFromResources != null && false == derivedFromResources.isEmpty()) {
-
- for (String parentResource : derivedFromResources) {
-
- Map<String, Object> propertiesToMatch = new HashMap<String, Object>();
- propertiesToMatch.put(GraphPropertiesDictionary.STATE.getProperty(), LifecycleStateEnum.CERTIFIED.name());
- // propertiesToMatch.put(GraphPropertiesDictionary.IS_ABSTRACT.getProperty(),
- // true);
- propertiesToMatch.put(GraphPropertiesDictionary.TOSCA_RESOURCE_NAME.getProperty(), parentResource);
- propertiesToMatch.put(GraphPropertiesDictionary.IS_HIGHEST_VERSION.getProperty(), true);
-
- Either<List<ResourceMetadataData>, TitanOperationStatus> getParentResources = titanGenericDao.getByCriteria(NodeTypeEnum.Resource, propertiesToMatch, ResourceMetadataData.class);
- List<ResourceMetadataData> resources = null;
- if (getParentResources.isRight()) {
- /*
- * log.debug( "Cannot find parent resource by tosca resource name {} in the graph. Try to find by name", parentResource);
- * Map<String, Object> propertiesWithResourceNameToMatch = new HashMap<String, Object>();
- * propertiesWithResourceNameToMatch.put( GraphPropertiesDictionary.STATE.getProperty(), LifecycleStateEnum.CERTIFIED.name()); propertiesWithResourceNameToMatch.put( GraphPropertiesDictionary.NAME.getProperty(), parentResource);
- * propertiesWithResourceNameToMatch.put( GraphPropertiesDictionary.IS_HIGHEST_VERSION.getProperty( ), true);
- *
- * getParentResources = titanGenericDao.getByCriteria(NodeTypeEnum.Resource, propertiesWithResourceNameToMatch, ResourceData.class); if (getParentResources.isRight()) { log.error(
- * "Cannot find parent resource by tosca resource name" + parentResource + " in the graph."); return Either.right(StorageOperationStatus. PARENT_RESOURCE_NOT_FOUND); }else{ resources = getParentResources.left().value();
- * hea
- * }
- */
- log.error("Cannot find parent resource by tosca resource name {} in the graph.", parentResource);
- return Either.right(StorageOperationStatus.PARENT_RESOURCE_NOT_FOUND);
-
- } else {
- resources = getParentResources.left().value();
- if (resources == null || resources.size() == 0) {
- log.error("Cannot find parent resource by tosc name {} in the graph. resources size is empty", parentResource);
- return Either.right(StorageOperationStatus.PARENT_RESOURCE_NOT_FOUND);
- } else {
- if (resources.size() > 1) {
- log.error("Multiple parent resources called {} found in the graph.", parentResource);
- return Either.right(StorageOperationStatus.MULTIPLE_PARENT_RESOURCE_FOUND);
- }
- ResourceMetadataData parentResourceData = resources.get(0);
- derivedResources.add(parentResourceData);
- }
-
- }
-
- }
- }
- return Either.left(derivedResources);
- }
-
- private ResourceMetadataData getResourceMetaDataFromResource(Resource resource) {
- ResourceMetadataData resourceData = new ResourceMetadataData((ResourceMetadataDataDefinition) resource.getComponentMetadataDefinition().getMetadataDataDefinition());
- if (resource.getNormalizedName() == null || resource.getNormalizedName().isEmpty()) {
- resourceData.getMetadataDataDefinition().setNormalizedName(ValidationUtils.normaliseComponentName(resource.getName()));
- }
- if (resource.getSystemName() == null || resource.getSystemName().isEmpty()) {
- resourceData.getMetadataDataDefinition().setSystemName(ValidationUtils.convertToSystemName(resource.getName()));
- }
-
- LifecycleStateEnum lifecycleStateEnum = resource.getLifecycleState();
- if (lifecycleStateEnum == null) {
- resourceData.getMetadataDataDefinition().setState(LifecycleStateEnum.NOT_CERTIFIED_CHECKOUT.name());
- }
- long currentDate = System.currentTimeMillis();
- if (resource.getCreationDate() == null) {
- resourceData.getMetadataDataDefinition().setCreationDate(currentDate);
- }
- resourceData.getMetadataDataDefinition().setLastUpdateDate(currentDate);
-
- return resourceData;
- }
-
- private ResourceMetadataData getResourceMetaDataForUpdate(Resource resource) {
- // PA - please note: if you add here any fields, make sure they are
- // validated (if needed)
- // at ResourceBusinessLogic.validateResourceFieldsBeforeUpdate() and
- // tested at ResourceBusinessLogicTest.
- ResourceMetadataData resourceData = getResourceMetaDataFromResource(resource);
- // resourceData.setLastUpdateDate(System.currentTimeMillis());
- // resourceData.setHighestVersion(resource.isHighestVersion());
- // resourceData.setNormalizedName(resource.getNormalizedName());
- // resourceData.setResourceType(resource.getResourceType().name());
-
- return resourceData;
- }
-
- public Either<Resource, StorageOperationStatus> getResource(String uniqueId) {
- return getResource(uniqueId, false);
- }
-
- public Either<Resource, StorageOperationStatus> getResource(String uniqueId, boolean inTransaction) {
- ComponentParametersView componentParametersView = new ComponentParametersView();
- return getResource(uniqueId, componentParametersView, inTransaction);
- }
-
- private TitanOperationStatus setComponentInstancesAttributesFromGraph(String uniqueId, Resource component) {
- Map<String, List<ComponentInstanceProperty>> resourceInstancesAttributes = new HashMap<>();
- TitanOperationStatus status = TitanOperationStatus.OK;
- List<ComponentInstance> componentInstances = component.getComponentInstances();
- if (componentInstances != null) {
- for (ComponentInstance resourceInstance : componentInstances) {
- Either<List<ComponentInstanceProperty>, TitanOperationStatus> eitherRIAttributes = attributeOperation.getAllAttributesOfResourceInstance(resourceInstance);
- if (eitherRIAttributes.isRight()) {
- status = eitherRIAttributes.right().value();
- break;
- } else {
- resourceInstancesAttributes.put(resourceInstance.getUniqueId(), eitherRIAttributes.left().value());
- }
- }
-
- component.setComponentInstancesAttributes(resourceInstancesAttributes);
- }
-
- return status;
-
- }
-
- private StorageOperationStatus setResourceAdditionalInformationFromGraph(String uniqueId, Resource resource) {
-
- List<AdditionalInformationDefinition> additionalInformation = new ArrayList<>();
-
- Either<AdditionalInformationDefinition, StorageOperationStatus> either = additionalInformationOperation.getAllAdditionalInformationParameters(NodeTypeEnum.Resource, uniqueId, true, true);
-
- if (either.isRight()) {
- StorageOperationStatus status = either.right().value();
- if (status == StorageOperationStatus.NOT_FOUND) {
- return StorageOperationStatus.OK;
- }
- return status;
- }
-
- AdditionalInformationDefinition additionalInformationDefinition = either.left().value();
- additionalInformation.add(additionalInformationDefinition);
-
- resource.setAdditionalInformation(additionalInformation);
-
- return StorageOperationStatus.OK;
-
- }
-
- private StorageOperationStatus setResourceInterfacesFromGraph(String uniqueId, Resource resource) {
-
- Either<Map<String, InterfaceDefinition>, StorageOperationStatus> statusRes = interfaceLifecycleOperation.getAllInterfacesOfResource(uniqueId, true, true);
- if (statusRes.isRight()) {
- return statusRes.right().value();
- }
- Map<String, InterfaceDefinition> value = statusRes.left().value();
-
- resource.setInterfaces(value);
-
- return StorageOperationStatus.OK;
- }
-
- private StorageOperationStatus setResourceCapabilitiesFromGraph(String uniqueId, Resource resource) {
- StorageOperationStatus retStatus;
- Either<Map<String, CapabilityDefinition>, StorageOperationStatus> result = capabilityOperation.getAllCapabilitiesOfResource(uniqueId, true, true);
- if (result.isRight()) {
- StorageOperationStatus status = result.right().value();
- if (status != StorageOperationStatus.NOT_FOUND) {
- retStatus = status;
- } else {
- retStatus = StorageOperationStatus.OK;
- }
- } else {
- Map<String, CapabilityDefinition> capabilities = result.left().value();
- if (capabilities != null && !capabilities.isEmpty() && resource.getResourceType().equals(ResourceTypeEnum.VF)) {
- MigrationMalformedDataLogger.reportMalformedVF(resource.getUniqueId(), String.format("VF %s with id %s has direct capabilities.!!!!!!!!!!!!!", resource.getName(), resource.getUniqueId()));
- }
- if (capabilities == null || capabilities.isEmpty() || resource.getResourceType().equals(ResourceTypeEnum.VF)) {
- Either<Map<String, List<CapabilityDefinition>>, TitanOperationStatus> eitherCapabilities = super.getCapabilities(resource, NodeTypeEnum.Resource, true);
- if (eitherCapabilities.isLeft()) {
- retStatus = StorageOperationStatus.OK;
- Map<String, List<CapabilityDefinition>> calculatedCapabilities = eitherCapabilities.left().value();
- resource.setCapabilities(calculatedCapabilities);
- } else {
- retStatus = StorageOperationStatus.GENERAL_ERROR;
- }
-
- } else {
- retStatus = StorageOperationStatus.OK;
- resource.setCapabilities(capabilityOperation.convertCapabilityMap(capabilities, null, null));
- }
-
- }
- return retStatus;
-
- }
-
- public Either<Map<String, List<CapabilityDefinition>>, TitanOperationStatus> getCapabilities(org.openecomp.sdc.be.model.Component component, NodeTypeEnum componentTypeEnum, boolean inTransaction) {
-
- try {
- Either<Map<String, CapabilityDefinition>, StorageOperationStatus> result = capabilityOperation.getAllCapabilitiesOfResource(component.getUniqueId(), true, true);
- if (result.isRight() || result.left().value().isEmpty()) {
- final Either<Map<String, List<CapabilityDefinition>>, TitanOperationStatus> eitherCapabilities = super.getCapabilities(component, componentTypeEnum, inTransaction);
- return eitherCapabilities;
- } else {
- return Either.left(capabilityOperation.convertCapabilityMap(result.left().value(), null, null));
- }
- } finally {
- if (inTransaction == false) {
- titanGenericDao.commit();
- }
- }
- }
-
- public Either<Map<String, List<RequirementDefinition>>, TitanOperationStatus> getRequirements(org.openecomp.sdc.be.model.Component component, NodeTypeEnum componentTypeEnum, boolean inTransaction) {
- try {
- Either<Map<String, RequirementDefinition>, StorageOperationStatus> result = requirementOperation.getAllResourceRequirements(component.getUniqueId(), true);
- if (result.isRight() || result.left().value().isEmpty()) {
- final Either<Map<String, List<RequirementDefinition>>, TitanOperationStatus> eitherCapabilities = super.getRequirements(component, componentTypeEnum, true);
- return eitherCapabilities;
- } else {
- return Either.left(requirementOperation.convertRequirementMap(result.left().value(), null, null));
- }
- } finally {
- if (inTransaction == false) {
- titanGenericDao.commit();
- }
- }
-
- }
-
- private StorageOperationStatus setResourceRequirementsFromGraph(String uniqueId, Resource resource, boolean inTransaction) {
- StorageOperationStatus retStatus;
- Either<Map<String, RequirementDefinition>, StorageOperationStatus> result = requirementOperation.getAllResourceRequirements(uniqueId, inTransaction);
- ;
- if (result.isRight()) {
- StorageOperationStatus status = result.right().value();
- if (status != StorageOperationStatus.NOT_FOUND) {
- retStatus = status;
- } else {
- retStatus = StorageOperationStatus.OK;
- }
- } else {
- Map<String, RequirementDefinition> requirements = result.left().value();
- if (requirements != null && !requirements.isEmpty() && resource.getResourceType().equals(ResourceTypeEnum.VF)) {
- MigrationMalformedDataLogger.reportMalformedVF(resource.getUniqueId(), String.format("VF %s with id %s has direct requirements.!!!!!!!!!!!!!", resource.getName(), resource.getUniqueId()));
- }
- if (requirements == null || requirements.isEmpty() || resource.getResourceType() == ResourceTypeEnum.VF) {
- Either<Map<String, List<RequirementDefinition>>, TitanOperationStatus> eitherCapabilities = super.getRequirements(resource, NodeTypeEnum.Resource, true);
- if (eitherCapabilities.isLeft()) {
- retStatus = StorageOperationStatus.OK;
- Map<String, List<RequirementDefinition>> calculatedCapabilities = eitherCapabilities.left().value();
- resource.setRequirements(calculatedCapabilities);
- } else {
- retStatus = StorageOperationStatus.GENERAL_ERROR;
- }
-
- } else {
- retStatus = StorageOperationStatus.OK;
- resource.setRequirements(requirementOperation.convertRequirementMap(requirements, null, null));
- }
-
- }
- return retStatus;
- }
-
- private TitanOperationStatus setResourcePropertiesFromGraph(String uniqueId, Resource resource) {
-
- List<PropertyDefinition> properties = new ArrayList<>();
- TitanOperationStatus status = propertyOperation.findAllResourcePropertiesRecursively(uniqueId, properties);
- if (status == TitanOperationStatus.OK) {
- resource.setProperties(properties);
- }
-
- return status;
-
- }
-
- private TitanOperationStatus setResourceAttributesFromGraph(String uniqueId, Resource resource) {
-
- List<PropertyDefinition> attributes = new ArrayList<>();
- TitanOperationStatus status = attributeOperation.findAllResourceAttributesRecursively(uniqueId, attributes);
- if (status == TitanOperationStatus.OK) {
- resource.setAttributes(attributes);
- }
-
- return status;
-
- }
-
- private TitanOperationStatus setResourceDerivedFromGraph(String uniqueId, Resource resource) {
- List<String> derivedFromList = new ArrayList<String>();
-
- TitanOperationStatus listFromGraphStatus = fillResourceDerivedListFromGraph(uniqueId, derivedFromList);
- if (!TitanOperationStatus.OK.equals(listFromGraphStatus)) {
- return listFromGraphStatus;
- }
-
- if (false == derivedFromList.isEmpty()) {
- if (derivedFromList.size() > 1) {
- List<String> lastDerivedFrom = new ArrayList<String>();
- lastDerivedFrom.add(derivedFromList.get(1));
- resource.setDerivedFrom(lastDerivedFrom);
- resource.setDerivedList(derivedFromList);
- } else {
- resource.setDerivedFrom(null);
- resource.setDerivedList(derivedFromList);
- }
-
- }
-
- return TitanOperationStatus.OK;
- }
-
- public TitanOperationStatus fillResourceDerivedListFromGraph(String uniqueId, List<String> derivedFromList) {
- // Either<List<ImmutablePair<ResourceMetadataData, GraphEdge>>,
- // TitanOperationStatus> childrenNodes =
- // titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource),
- // uniqueId, GraphEdgeLabels.DERIVED_FROM,
- // NodeTypeEnum.Resource, ResourceMetadataData.class);
- //
- // if (childrenNodes.isRight() && (childrenNodes.right().value() !=
- // TitanOperationStatus.NOT_FOUND)) {
- // return childrenNodes.right().value();
- // } else if (childrenNodes.isLeft()) {
- //
- // List<ImmutablePair<ResourceMetadataData, GraphEdge>> pairList =
- // childrenNodes.left().value();
- // for (ImmutablePair<ResourceMetadataData, GraphEdge> pair : pairList)
- // {
- // derivedFromList.add(pair.left.getMetadataDataDefinition().getName());
- // return
- // fillResourceDerivedListFromGraph(pair.left.getMetadataDataDefinition().getUniqueId(),
- // derivedFromList);
- // }
- // }
- List<ResourceMetadataData> derivedData = new ArrayList<ResourceMetadataData>();
- TitanOperationStatus findResourcesPathRecursively = findResourcesPathRecursively(uniqueId, derivedData);
- if (!findResourcesPathRecursively.equals(TitanOperationStatus.OK)) {
- return findResourcesPathRecursively;
- }
- derivedData.forEach(resourceData -> derivedFromList.add(((ResourceMetadataDataDefinition) resourceData.getMetadataDataDefinition()).getToscaResourceName()));
- return TitanOperationStatus.OK;
- }
-
- private TitanOperationStatus setResourceLastModifierFromGraph(Resource resource, String resourceId) {
-
- Either<ImmutablePair<UserData, GraphEdge>, TitanOperationStatus> parentNode = titanGenericDao.getParentNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource), resourceId, GraphEdgeLabels.LAST_MODIFIER, NodeTypeEnum.User,
- UserData.class);
- if (parentNode.isRight()) {
- return parentNode.right().value();
- }
-
- ImmutablePair<UserData, GraphEdge> value = parentNode.left().value();
- if (log.isDebugEnabled())
- log.debug("Found parent node {}", value);
- UserData userData = value.getKey();
-
- if (log.isDebugEnabled())
- log.debug("Build resource : set last modifier userId to {}", userData.getUserId());
- String fullName = buildFullName(userData);
- if (log.isDebugEnabled())
- log.debug("Build resource : set last modifier full name to {}", fullName);
- resource.setLastUpdaterUserId(userData.getUserId());
- resource.setLastUpdaterFullName(fullName);
-
- return TitanOperationStatus.OK;
- }
-
- private TitanOperationStatus setResourceCreatorFromGraph(Resource resource, String resourceId) {
-
- Either<ImmutablePair<UserData, GraphEdge>, TitanOperationStatus> parentNode = titanGenericDao.getParentNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource), resourceId, GraphEdgeLabels.CREATOR, NodeTypeEnum.User, UserData.class);
- if (parentNode.isRight()) {
- log.debug("Failed to find the creator of resource {}", resourceId);
- return parentNode.right().value();
- }
-
- ImmutablePair<UserData, GraphEdge> value = parentNode.left().value();
- if (log.isDebugEnabled())
- log.debug("Found parent node {}", value);
- UserData userData = value.getKey();
- if (log.isDebugEnabled())
- log.debug("Build resource : set creator userId to {}", userData.getUserId());
- String fullName = buildFullName(userData);
- if (log.isDebugEnabled())
- log.debug("Build resource : set creator full name to {}", fullName);
- resource.setCreatorUserId(userData.getUserId());
- resource.setCreatorFullName(fullName);
-
- return TitanOperationStatus.OK;
- }
-
- @Override
- TitanOperationStatus setComponentCategoriesFromGraph(Component resource) {
- String uniqueId = resource.getUniqueId();
- Either<List<ImmutablePair<SubCategoryData, GraphEdge>>, TitanOperationStatus> parentNode = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource), uniqueId, GraphEdgeLabels.CATEGORY,
- NodeTypeEnum.ResourceSubcategory, SubCategoryData.class);
- if (parentNode.isRight()) {
- return parentNode.right().value();
- }
-
- List<ImmutablePair<SubCategoryData, GraphEdge>> listValue = parentNode.left().value();
- log.debug("Result after looking for subcategory nodes pointed by resource {}. status is {}", uniqueId, listValue);
- if (listValue.size() > 1) {
- log.error("Multiple edges foud between resource {} to subcategory nodes.", uniqueId);
- }
- ImmutablePair<SubCategoryData, GraphEdge> value = listValue.get(0);
- log.debug("Found parent node {}", value);
-
- SubCategoryData subcategoryData = value.getKey();
-
- Either<ImmutablePair<CategoryData, GraphEdge>, TitanOperationStatus> categoryNode = titanGenericDao.getParentNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceSubcategory), (String) subcategoryData.getUniqueId(),
- GraphEdgeLabels.SUB_CATEGORY, NodeTypeEnum.ResourceNewCategory, CategoryData.class);
- if (categoryNode.isRight()) {
- return categoryNode.right().value();
- }
-
- CategoryData categoryData = categoryNode.left().value().left;
- CategoryDefinition catDef = new CategoryDefinition(categoryData.getCategoryDataDefinition());
- SubCategoryDefinition subcatDef = new SubCategoryDefinition(subcategoryData.getSubCategoryDataDefinition());
-
- resource.addCategory(catDef, subcatDef);
- return TitanOperationStatus.OK;
- }
-
- public String buildFullName(UserData userData) {
-
- String fullName = userData.getFirstName();
- if (fullName == null) {
- fullName = "";
- } else {
- fullName = fullName + " ";
- }
- String lastName = userData.getLastName();
- if (lastName != null) {
- fullName += lastName;
- }
- return fullName;
- }
-
- private Resource convertResourceDataToResource(ResourceMetadataData resourceData) {
-
- ResourceMetadataDefinition resourceMetadataDataDefinition = new ResourceMetadataDefinition((ResourceMetadataDataDefinition) resourceData.getMetadataDataDefinition());
-
- Resource resource = new Resource(resourceMetadataDataDefinition);
-
- return resource;
- }
-
- @Override
- public Either<Resource, StorageOperationStatus> deleteResource(String resourceId) {
- return deleteResource(resourceId, false);
- }
-
- @Override
- public Either<Resource, StorageOperationStatus> updateResource(Resource resource) {
-
- return updateResource(resource, false);
-
- }
-
- @Override
- public Either<Integer, StorageOperationStatus> getNumberOfResourcesByName(String resourceName) {
-
- Map<String, Object> propertiesToMatch = new HashMap<String, Object>();
- propertiesToMatch.put(GraphPropertiesDictionary.NAME.getProperty(), resourceName);
-
- Either<List<ResourceMetadataData>, TitanOperationStatus> getParentResources = titanGenericDao.getByCriteria(NodeTypeEnum.Resource, propertiesToMatch, ResourceMetadataData.class);
- log.debug("result after searching for resources called {} is {}", resourceName, getParentResources);
- if (getParentResources.isRight()) {
- TitanOperationStatus titanStatus = getParentResources.right().value();
- if (titanStatus == TitanOperationStatus.NOT_FOUND) {
- log.debug("Number of returned resources is 0.");
- return Either.left(0);
- }
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(titanStatus));
- } else {
- List<ResourceMetadataData> value = getParentResources.left().value();
- int numberOFResources = (value == null ? 0 : value.size());
- log.debug("The number of resources returned after searching for resource called {} is {}", resourceName, numberOFResources);
- return Either.left(numberOFResources);
- }
- }
-
- public PropertyOperation getPropertyOperation() {
- return propertyOperation;
- }
-
- public void setPropertyOperation(PropertyOperation propertyOperation) {
- this.propertyOperation = propertyOperation;
- }
-
- public RequirementOperation getRequirementOperation() {
- return requirementOperation;
- }
-
- public void setRequirementOperation(RequirementOperation requirementOperation) {
- this.requirementOperation = requirementOperation;
- }
-
- public CapabilityOperation getCapabilityOperation() {
- return capabilityOperation;
- }
-
- public void setCapabilityOperation(CapabilityOperation capabilityOperation) {
- this.capabilityOperation = capabilityOperation;
- }
-
- public IArtifactOperation getArtifactOperation() {
- return artifactOperation;
- }
-
- public void setArtifactOperation(IArtifactOperation artifactOperation) {
- this.artifactOperation = artifactOperation;
- }
-
- public InterfaceLifecycleOperation getInterfaceLifecycleOperation() {
- return interfaceLifecycleOperation;
- }
-
- public void setInterfaceLifecycleOperation(InterfaceLifecycleOperation interfaceLifecycleOperation) {
- this.interfaceLifecycleOperation = interfaceLifecycleOperation;
- }
-
- public TitanGenericDao getTitanGenericDao() {
- return titanGenericDao;
- }
-
- public IElementOperation getElementOperation() {
- return elementOperation;
- }
-
- public void setElementOperation(IElementOperation elementOperation) {
- this.elementOperation = elementOperation;
- }
-
- /**
- * FOR TEST ONLY
- *
- * @param titanGenericDao
- */
- public void setTitanGenericDao(TitanGenericDao titanGenericDao) {
- this.titanGenericDao = titanGenericDao;
- }
-
- @Override
- public Either<List<Resource>, StorageOperationStatus> getAllCertifiedResources(boolean isAbstract) {
-
- return getAllCertifiedResources(isAbstract, null);
-
- }
-
- @Override
- /**
- * Deletes the resource node, property nodes and relation to artifacts. MUST handle deletion of artifact from artifacts repository outside this method (in catalog-be)
- */
- public Either<Resource, StorageOperationStatus> deleteResource(String resourceId, boolean inTransaction) {
-
- Either<Resource, StorageOperationStatus> result = Either.right(StorageOperationStatus.GENERAL_ERROR);
- try {
-
- Either<TitanGraph, TitanOperationStatus> graphResult = titanGenericDao.getGraph();
- if (graphResult.isRight()) {
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(graphResult.right().value()));
- return result;
- }
-
- TitanGraph titanGraph = graphResult.left().value();
- Iterable<TitanVertex> vertecies = titanGraph.query().has(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource), resourceId).vertices();
- Either<Resource, StorageOperationStatus> resourceEither = getResource(resourceId, true);
- Resource resource = resourceEither.left().value();
- if (vertecies != null && resourceEither.isLeft()) {
- Iterator<TitanVertex> iterator = vertecies.iterator();
- if (iterator != null && iterator.hasNext()) {
- Vertex rootVertex = iterator.next();
- TitanOperationStatus deleteChildrenNodes = graphDeleteUtil.deleteChildrenNodes(rootVertex, GraphEdgeLabels.PROPERTY);
- log.debug("After deleting properties nodes in the graph. status is {}", deleteChildrenNodes);
- if (deleteChildrenNodes != TitanOperationStatus.OK) {
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(deleteChildrenNodes));
- return result;
- }
- StorageOperationStatus removeInterfacesFromResource = removeInterfacesFromResource(resource);
- log.debug("After deleting interfaces nodes in the graph. status is {}", removeInterfacesFromResource);
- if (!removeInterfacesFromResource.equals(StorageOperationStatus.OK)) {
- result = Either.right(removeInterfacesFromResource);
- return result;
- }
- StorageOperationStatus removeArtifactsFromResource = removeArtifactsFromResource(resource);
- log.debug("After deleting artifacts nodes in the graph. status is {}", removeArtifactsFromResource);
- if (!removeArtifactsFromResource.equals(StorageOperationStatus.OK)) {
- result = Either.right(removeArtifactsFromResource);
- return result;
- }
- StorageOperationStatus removeCapabilitiesFromResource = removeCapabilitiesFromResource(resource);
- log.debug("After deleting capabilities nodes in the graph. status is {}", removeCapabilitiesFromResource);
- if (!removeCapabilitiesFromResource.equals(StorageOperationStatus.OK)) {
- result = Either.right(removeCapabilitiesFromResource);
- return result;
- }
-
- StorageOperationStatus removeRequirementsFromResource = removeRequirementsFromResource(resource);
- log.debug("After deleting requirements nodes in the graph. status is {}", removeRequirementsFromResource);
- if (!removeRequirementsFromResource.equals(StorageOperationStatus.OK)) {
- result = Either.right(removeRequirementsFromResource);
- return result;
- }
-
- StorageOperationStatus removeRIsFromResource = removeResourceInstanceFromResource(resource);
- log.debug("After deleting resource instance nodes in the graph. status is {}", removeRIsFromResource);
- if (!removeRIsFromResource.equals(StorageOperationStatus.OK)) {
- result = Either.right(removeRIsFromResource);
- return result;
- }
-
- StorageOperationStatus removeAttributesFromResource = removeAttributesFromResource(resource);
- log.debug("After deleting requirements nodes in the graph. status is {}", removeRequirementsFromResource);
- if (removeAttributesFromResource != StorageOperationStatus.OK) {
- result = Either.right(removeAttributesFromResource);
- return result;
- }
-
- StorageOperationStatus removeInputsFromResource = removeInputsFromComponent(NodeTypeEnum.Resource, resource);
- log.debug("After deleting requirements nodes in the graph. status is {}", removeInputsFromResource);
- if (removeInputsFromResource != StorageOperationStatus.OK) {
- result = Either.right(removeInputsFromResource);
- return result;
- }
-
- StorageOperationStatus removeAdditionalInformationFromResource = super.deleteAdditionalInformation(NodeTypeEnum.Resource, resource.getUniqueId());
- log.debug("After deleting additional information node in the graph. status is {}", removeAdditionalInformationFromResource);
- if (!removeAdditionalInformationFromResource.equals(StorageOperationStatus.OK)) {
- result = Either.right(removeAdditionalInformationFromResource);
- return result;
- }
-
- StorageOperationStatus removeGroupsFromResource = super.deleteGroups(NodeTypeEnum.Resource, resource.getUniqueId());
- log.debug("After deleting group nodes in the graph. status is {}", removeGroupsFromResource);
- if (!removeGroupsFromResource.equals(StorageOperationStatus.OK)) {
- result = Either.right(removeGroupsFromResource);
- return result;
- }
-
- rootVertex.remove();
-
- } else {
- result = Either.right(StorageOperationStatus.NOT_FOUND);
- return result;
- }
- } else {
- result = Either.right(StorageOperationStatus.NOT_FOUND);
- return result;
- }
-
- result = Either.left(resource);
- return result;
- } finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- log.error("deleteResource operation : Going to execute rollback on graph.");
- titanGenericDao.rollback();
- } else {
- log.debug("deleteResource operation : Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
-
- }
-
- private StorageOperationStatus removeAttributesFromResource(Resource resource) {
- Either<Map<String, PropertyDefinition>, StorageOperationStatus> deleteAllAttributeAssociatedToNode = attributeOperation.deleteAllAttributeAssociatedToNode(NodeTypeEnum.Resource, resource.getUniqueId());
- return deleteAllAttributeAssociatedToNode.isRight() ? deleteAllAttributeAssociatedToNode.right().value() : StorageOperationStatus.OK;
- }
-
- private StorageOperationStatus removeArtifactsFromResource(Resource resource) {
-
- String resourceId = resource.getUniqueId();
- Map<String, ArtifactDefinition> allArtifacts = new HashMap<String, ArtifactDefinition>();
- if (resource.getArtifacts() != null) {
- allArtifacts.putAll(resource.getArtifacts());
- }
- if (resource.getDeploymentArtifacts() != null) {
- allArtifacts.putAll(resource.getDeploymentArtifacts());
- }
- if (allArtifacts != null) {
- for (Entry<String, ArtifactDefinition> entry : allArtifacts.entrySet()) {
-
- ArtifactDefinition artifactDefinition = entry.getValue();
- Either<ArtifactDefinition, StorageOperationStatus> removeArifactFromResource = artifactOperation.removeArifactFromResource(resourceId, artifactDefinition.getUniqueId(), NodeTypeEnum.Resource, true, true);
- if (removeArifactFromResource.isRight()) {
- return removeArifactFromResource.right().value();
- }
- }
- }
- return StorageOperationStatus.OK;
- }
-
- private StorageOperationStatus removeInterfacesFromResource(Resource resource) {
-
- String resourceId = resource.getUniqueId();
- // delete only interfaces of this resource (not interfaces derived)
- Either<Map<String, InterfaceDefinition>, StorageOperationStatus> allInterfacesOfResource = interfaceLifecycleOperation.getAllInterfacesOfResource(resourceId, false, true);
- if (allInterfacesOfResource.isRight()) {
- log.error("failed to get interfaces for resource {}. status is {}", resourceId, allInterfacesOfResource.right().value());
- return allInterfacesOfResource.right().value();
- }
- Map<String, InterfaceDefinition> interfaces = allInterfacesOfResource.left().value();
- if (interfaces != null) {
- for (Entry<String, InterfaceDefinition> entry : interfaces.entrySet()) {
- Boolean isAbstract = resource.isAbstract();
-
- InterfaceDefinition interfaceDefinition = entry.getValue();
- // esofer - in case the resource is abstract, we deleting only
- // the edge to the interface.
- if (isAbstract != null && true == isAbstract.booleanValue()) {
- log.debug("Going to dissociate resource {} from interface {}", resourceId, interfaceDefinition.getUniqueId());
- UniqueIdData uniqueIdData = new UniqueIdData(NodeTypeEnum.Resource, resourceId);
- Either<InterfaceDefinition, StorageOperationStatus> dissociateInterfaceFromNode = interfaceLifecycleOperation.dissociateInterfaceFromNode(uniqueIdData, interfaceDefinition);
- if (dissociateInterfaceFromNode.isRight()) {
- log.error("failed to dissociate resource {} from interface {}. status is {}", resourceId, interfaceDefinition.getUniqueId(), dissociateInterfaceFromNode.right().value());
- return dissociateInterfaceFromNode.right().value();
- }
- } else {
- Either<InterfaceDefinition, StorageOperationStatus> deleteInterfaceOfResourceOnGraph = interfaceLifecycleOperation.deleteInterfaceOfResourceOnGraph(resourceId, interfaceDefinition, true);
- if (deleteInterfaceOfResourceOnGraph.isRight()) {
- return deleteInterfaceOfResourceOnGraph.right().value();
- }
- }
- }
- }
- return StorageOperationStatus.OK;
- }
-
- private StorageOperationStatus removeCapabilitiesFromResource(Resource resource) {
-
- String resourceId = resource.getUniqueId();
-
- Either<Map<String, CapabilityDefinition>, StorageOperationStatus> deleteAllRes = capabilityOperation.deleteAllCapabilities(resourceId, true);
- if (deleteAllRes.isRight()) {
- StorageOperationStatus status = deleteAllRes.right().value();
- if (status == StorageOperationStatus.NOT_FOUND) {
- return StorageOperationStatus.OK;
- }
- return status;
- }
-
- return StorageOperationStatus.OK;
-
- }
-
- private StorageOperationStatus removeRequirementsFromResource(Resource resource) {
-
- String resourceId = resource.getUniqueId();
-
- Either<Map<String, RequirementDefinition>, StorageOperationStatus> deleteAllRes = requirementOperation.deleteAllRequirements(resourceId, true);
-
- if (deleteAllRes.isRight()) {
- StorageOperationStatus status = deleteAllRes.right().value();
- if (status == StorageOperationStatus.NOT_FOUND) {
- return StorageOperationStatus.OK;
- }
- return status;
- }
-
- return StorageOperationStatus.OK;
-
- }
-
- private StorageOperationStatus removeResourceInstanceFromResource(Resource resource) {
- String resourceId = resource.getUniqueId();
-
- Either<List<ComponentInstance>, StorageOperationStatus> deleteAllResourceInstancesRes = componentInstanceOperation.deleteAllComponentInstances(resourceId, NodeTypeEnum.Resource, true);
- if (deleteAllResourceInstancesRes.isRight()) {
- StorageOperationStatus status = deleteAllResourceInstancesRes.right().value();
- if (status == StorageOperationStatus.NOT_FOUND) {
- return StorageOperationStatus.OK;
- }
- return status;
- }
- return StorageOperationStatus.OK;
- }
-
- @Override
- public Either<Resource, StorageOperationStatus> updateResource(Resource resource, boolean inTransaction) {
- return (Either<Resource, StorageOperationStatus>) updateComponent(resource, inTransaction, titanGenericDao, resource.getClass(), NodeTypeEnum.Resource);
-
- }
-
- @Override
- protected <T extends Component> StorageOperationStatus updateDerived(Component component, Component currentComponent, ComponentMetadataData updatedResourceData, Class<T> clazz) {
- Resource resource = (Resource) component;
- Resource currentResource = (Resource) currentComponent;
- if (resource.getDerivedFrom() != null) {// meaning derived from changed
-
- Either<List<ResourceMetadataData>, StorageOperationStatus> findDerivedResourcesOld = findDerivedResources(currentResource);
- if (findDerivedResourcesOld.isRight()) {
- log.debug("Couldn't find derived resource {} for current resource in the graph", currentResource.getDerivedFrom().get(0));
- return findDerivedResourcesOld.right().value();
- }
-
- List<ResourceMetadataData> oldDerived = findDerivedResourcesOld.left().value();
- if (oldDerived.isEmpty()) {
- log.debug("Derived from list fetched from DB for current resource is empty");
- return StorageOperationStatus.PARENT_RESOURCE_NOT_FOUND;
- }
-
- Either<List<ResourceMetadataData>, StorageOperationStatus> findDerivedResourcesNew = findDerivedResources((Resource) resource);
- if (findDerivedResourcesNew.isRight()) {
- log.debug("Couldn't find derived resource {} for update resource in the graph", resource.getDerivedFrom().get(0));
- return findDerivedResourcesNew.right().value();
- }
-
- List<ResourceMetadataData> newDerived = findDerivedResourcesNew.left().value();
- if (newDerived.isEmpty()) {
- log.debug("Derived from list fetched from DB for updated resource is empty");
- return StorageOperationStatus.PARENT_RESOURCE_NOT_FOUND;
- }
-
- Either<Boolean, TitanOperationStatus> reassociateDerivedFrom = reassociateDerivedFrom((ResourceMetadataData) updatedResourceData, oldDerived, newDerived);
- if (reassociateDerivedFrom.isRight()) {
- log.debug("Couldn't change derived from for the resoure");
- return DaoStatusConverter.convertTitanStatusToStorageStatus(reassociateDerivedFrom.right().value());
- }
- }
- return StorageOperationStatus.OK;
- }
-
- private Either<Boolean, TitanOperationStatus> reassociateDerivedFrom(ResourceMetadataData resourceData, List<ResourceMetadataData> oldDerived, List<ResourceMetadataData> newDerived) {
- ResourceMetadataData oldDerivedNode = oldDerived.get(0);
- log.debug("Dissociating resource {} from old parent resource {}", resourceData.getUniqueId(), oldDerivedNode.getUniqueId());
- Either<GraphRelation, TitanOperationStatus> deleteRelation = titanGenericDao.deleteRelation(resourceData, oldDerivedNode, GraphEdgeLabels.DERIVED_FROM);
- if (deleteRelation.isRight()) {
- log.debug("Failed to dissociate resource {} from old parent resource {}", resourceData.getUniqueId(), oldDerivedNode.getUniqueId());
- return Either.right(deleteRelation.right().value());
- }
- ResourceMetadataData newDerivedNode = newDerived.get(0);
- log.debug("Associating resource {} with new parent resource {}", resourceData.getUniqueId(), newDerivedNode.getUniqueId());
- Either<GraphRelation, TitanOperationStatus> addRelation = titanGenericDao.createRelation(resourceData, newDerivedNode, GraphEdgeLabels.DERIVED_FROM, null);
- if (addRelation.isRight()) {
- log.debug("Failed to associate resource {} with new parent resource {}", resourceData.getUniqueId(), newDerivedNode.getUniqueId());
- return Either.right(addRelation.right().value());
- }
-
- return Either.left(true);
- }
-
- private StorageOperationStatus moveCategoryEdge(Resource resource, ResourceMetadataData resourceData, CategoryDefinition newCategory) {
-
- StorageOperationStatus result = StorageOperationStatus.OK;
-
- GraphRelation categoryRelation = new GraphRelation();
- categoryRelation.setType(GraphEdgeLabels.CATEGORY.getProperty());
- RelationEndPoint relationEndPoint = new RelationEndPoint(NodeTypeEnum.Resource, UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource), resource.getUniqueId());
- categoryRelation.setFrom(relationEndPoint);
- Either<GraphRelation, TitanOperationStatus> deleteOutgoingRelation = titanGenericDao.deleteOutgoingRelation(categoryRelation);
- if (deleteOutgoingRelation.isRight()) {
- log.error("Failed to delete category from resource {}. Edge type is {}", resourceData.getUniqueId(), GraphEdgeLabels.CATEGORY);
- result = DaoStatusConverter.convertTitanStatusToStorageStatus(deleteOutgoingRelation.right().value());
- return result;
- }
-
- log.debug("After removing edge from graph {}", deleteOutgoingRelation);
-
- return assosiateMetadataToCategory(resource, resourceData);
- }
-
- private StorageOperationStatus moveLastModifierEdge(Resource resource, ResourceMetadataData resourceData, UserData modifierUserData) {
-
- StorageOperationStatus result = StorageOperationStatus.OK;
-
- GraphRelation lastModifierRelation = new GraphRelation();
- lastModifierRelation.setType(GraphEdgeLabels.LAST_MODIFIER.getProperty());
- RelationEndPoint relationEndPoint = new RelationEndPoint(NodeTypeEnum.Resource, UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource), resource.getUniqueId());
- lastModifierRelation.setTo(relationEndPoint);
- Either<GraphRelation, TitanOperationStatus> deleteIncomingRelation = titanGenericDao.deleteIncomingRelation(lastModifierRelation);
- if (deleteIncomingRelation.isRight()) {
- log.error("Failed to delete user from resource {}. Edge type is {}", resourceData.getUniqueId(),GraphEdgeLabels.LAST_MODIFIER);
- result = DaoStatusConverter.convertTitanStatusToStorageStatus(deleteIncomingRelation.right().value());
- return result;
- }
-
- Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(modifierUserData, resourceData, GraphEdgeLabels.LAST_MODIFIER, null);
- log.debug("After associating user {} to resource {}. Edge type is {}", modifierUserData, resourceData.getUniqueId(), GraphEdgeLabels.LAST_MODIFIER);
- if (createRelation.isRight()) {
- log.error("Failed to associate user {} to resource {}. Edge type is {}", modifierUserData, resourceData.getUniqueId(), GraphEdgeLabels.LAST_MODIFIER);
- result = DaoStatusConverter.convertTitanStatusToStorageStatus(createRelation.right().value());
- return result;
- }
-
- return result;
- }
-
- private Either<ResourceMetadataData, TitanOperationStatus> findResource(String resourceId) {
-
- String key = UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource);
- Either<ResourceMetadataData, TitanOperationStatus> findResource = titanGenericDao.getNode(key, resourceId, ResourceMetadataData.class);
-
- return findResource;
- }
-
- private StorageOperationStatus setArtifactFromGraph(String uniqueId, Resource resource) {
- StorageOperationStatus result = StorageOperationStatus.OK;
- Either<Map<String, ArtifactDefinition>, StorageOperationStatus> artifacts = artifactOperation.getArtifacts(uniqueId, NodeTypeEnum.Resource, true);
- if (artifacts.isRight()) {
- result = artifacts.right().value();
- } else {
- createSpecificArtifactList(resource, artifacts.left().value());
- }
- return result;
- }
-
- @Override
- public <T extends Component> Either<T, StorageOperationStatus> getComponent(String id, Class<T> clazz) {
-
- Either<Resource, StorageOperationStatus> component = getResource(id);
- if (component.isRight()) {
- return Either.right(component.right().value());
- }
- return Either.left(clazz.cast(component.left().value()));
- }
-
- @Override
- public Either<Boolean, StorageOperationStatus> validateResourceNameExists(String resourceName, ResourceTypeEnum resourceType) {
- if (resourceType != null) {
- Map<String, Object> properties = new HashMap<String, Object>();
- properties.put(GraphPropertiesDictionary.RESOURCE_TYPE.getProperty(), ResourceTypeEnum.VF.name());
- if (resourceType.equals(ResourceTypeEnum.VF)) {
- return validateResourceNameUniqueness(resourceName, properties, null, titanGenericDao);
- } else {
- return validateResourceNameUniqueness(resourceName, null, properties, titanGenericDao);
- }
-
- } else {
- return validateResourceNameUniqueness(resourceName, null, null, titanGenericDao);
- }
-
- }
-
- public Either<Boolean, StorageOperationStatus> validateToscaResourceNameExists(String templateName) {
- return validateToscaResourceNameUniqueness(templateName, titanGenericDao);
- }
-
- //Tal G for US815447
- public Either<Boolean, StorageOperationStatus> validateToscaResourceNameExtends(String templateNameCurrent, String templateNameExtends) {
-
- String currentTemplateNameChecked = templateNameExtends;
-
- while(currentTemplateNameChecked != null && !currentTemplateNameChecked.equalsIgnoreCase(templateNameCurrent)){
- Either<Resource, StorageOperationStatus> latestByToscaResourceName = getLatestByToscaResourceName(currentTemplateNameChecked, true);
-
- if(latestByToscaResourceName.isRight()){
- return latestByToscaResourceName.right().value() == StorageOperationStatus.NOT_FOUND ? Either.left(false) : Either.right(latestByToscaResourceName.right().value());
- }
-
- Resource value = latestByToscaResourceName.left().value();
-
- if(value.getDerivedFrom() != null){
- currentTemplateNameChecked = value.getDerivedFrom().get(0);
- } else {
- currentTemplateNameChecked = null;
- }
- }
-
- return (currentTemplateNameChecked != null && currentTemplateNameChecked.equalsIgnoreCase(templateNameCurrent)) ? Either.left(true) : Either.left(false);
- }
-
- public Either<List<ArtifactDefinition>, StorageOperationStatus> getAdditionalArtifacts(String resourceId, boolean recursively, boolean inTransaction) {
- List<ArtifactDefinition> artifacts = new ArrayList<>();
-
- Either<Map<String, InterfaceDefinition>, StorageOperationStatus> interfacesOfResource = interfaceLifecycleOperation.getAllInterfacesOfResource(resourceId, false, true);
- if (interfacesOfResource.isRight()) {
- log.error("failed to get all resource interfaces. resource id={}. status ={}", resourceId, interfacesOfResource.right().value());
- return Either.right(interfacesOfResource.right().value());
- }
-
- Map<String, InterfaceDefinition> interfaces = interfacesOfResource.left().value();
- if (interfaces != null && !interfaces.isEmpty()) {
- for (Entry<String, InterfaceDefinition> entry : interfaces.entrySet()) {
-
- InterfaceDefinition interfaceDefinition = entry.getValue();
- Map<String, Operation> operations = interfaceDefinition.getOperationsMap();
- if (operations != null && !operations.isEmpty()) {
- for (Entry<String, Operation> opEntry : operations.entrySet()) {
-
- Operation operation = opEntry.getValue();
- ArtifactDefinition artifactDefinition = operation.getImplementationArtifact();
- if (artifactDefinition != null) {
- artifacts.add(artifactDefinition);
- }
- }
- }
- }
- }
- return Either.left(artifacts);
- }
-
- @SuppressWarnings("unchecked")
- public Either<List<Resource>, StorageOperationStatus> getFollowed(String userId, Set<LifecycleStateEnum> lifecycleStates, Set<LifecycleStateEnum> lastStateStates, boolean inTransaction) {
- return (Either<List<Resource>, StorageOperationStatus>) (Either<?, StorageOperationStatus>) getFollowedComponent(userId, lifecycleStates, lastStateStates, inTransaction, titanGenericDao, NodeTypeEnum.Resource);
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public <T> Either<T, StorageOperationStatus> getComponent(String id, boolean inTransaction) {
- return (Either<T, StorageOperationStatus>) getResource(id, inTransaction);
- }
-
- // @Override
- // public <T> Either<T, StorageOperationStatus> getComponent_tx(String id,
- // boolean inTransaction) {
- // return (Either<T, StorageOperationStatus>) getResource_tx(id,
- // inTransaction);
- // }
-
- private Optional<ImmutablePair<SubCategoryData, GraphEdge>> validateCategoryHierarcy(List<ImmutablePair<SubCategoryData, GraphEdge>> childNodes, String subCategoryName) {
- Predicate<ImmutablePair<SubCategoryData, GraphEdge>> matchName = p -> p.getLeft().getSubCategoryDataDefinition().getName().equals(subCategoryName);
- return childNodes.stream().filter(matchName).findAny();
- }
-
- private Either<List<ImmutablePair<SubCategoryData, GraphEdge>>, StorageOperationStatus> getAllSubCategories(String categoryName) {
- Either<CategoryData, StorageOperationStatus> categoryResult = elementOperation.getNewCategoryData(categoryName, NodeTypeEnum.ResourceNewCategory, CategoryData.class);
- if (categoryResult.isRight()) {
- return Either.right(categoryResult.right().value());
- }
- CategoryData categoryData = categoryResult.left().value();
-
- Either<List<ImmutablePair<SubCategoryData, GraphEdge>>, TitanOperationStatus> childrenNodes = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.ResourceNewCategory), (String) categoryData.getUniqueId(),
- GraphEdgeLabels.SUB_CATEGORY, NodeTypeEnum.ResourceSubcategory, SubCategoryData.class);
- if (childrenNodes.isRight()) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(childrenNodes.right().value()));
- }
- return Either.left(childrenNodes.left().value());
- }
-
- @Override
- public <T> Either<List<T>, StorageOperationStatus> getFilteredComponents(Map<FilterKeyEnum, String> filters, boolean inTransaction) {
-
- String subCategoryName = filters.get(FilterKeyEnum.SUB_CATEGORY);
- String categoryName = filters.get(FilterKeyEnum.CATEGORY);
- ResourceTypeEnum resourceType = ResourceTypeEnum.getType( filters.get(FilterKeyEnum.RESOURCE_TYPE));
- Either<List<ImmutablePair<SubCategoryData, GraphEdge>>, StorageOperationStatus> subcategories = null;
- Optional<ImmutablePair<SubCategoryData, GraphEdge>> subCategoryData;
-
- if (categoryName != null) {
- subcategories = getAllSubCategories(categoryName);
- if (subcategories.isRight()) {
- filters.remove(FilterKeyEnum.SUB_CATEGORY);
- return Either.right(subcategories.right().value());
- }
- }
- if (subCategoryName != null) { // primary filter
- if (categoryName != null) {
- subCategoryData = validateCategoryHierarcy(subcategories.left().value(), subCategoryName);
- if (!subCategoryData.isPresent()) {
- return Either.right(StorageOperationStatus.MATCH_NOT_FOUND);
- }
- return fetchByCategoryOrSubCategoryUid((String) subCategoryData.get().getLeft().getUniqueId(), NodeTypeEnum.ResourceSubcategory, GraphEdgeLabels.SUB_CATEGORY.getProperty(), NodeTypeEnum.Resource, inTransaction,
- ResourceMetadataData.class, resourceType);
- }
-
- return fetchByCategoryOrSubCategoryName(subCategoryName, NodeTypeEnum.ResourceSubcategory, GraphEdgeLabels.SUB_CATEGORY.getProperty(), NodeTypeEnum.Resource, inTransaction, ResourceMetadataData.class, resourceType);
- }
- if(subcategories != null){
- return fetchByMainCategory(subcategories.left().value(), inTransaction, resourceType);
- }
- return fetchByResourceType(NodeTypeEnum.Resource, filters.get(FilterKeyEnum.RESOURCE_TYPE), ResourceMetadataData.class, inTransaction);
- }
-
- @SuppressWarnings("unchecked")
- private <T, S extends ComponentMetadataData> Either<List<T>, StorageOperationStatus> fetchByResourceType(NodeTypeEnum nodeType, String resourceType,
- Class<S> clazz, boolean inTransaction) {
- List<T> components = null;
- TitanOperationStatus status;
- Wrapper<StorageOperationStatus> statusWrapper = new Wrapper<>();
- Either<List<T>, StorageOperationStatus> result;
- try {
- Map<String, Object> props = new HashMap<>();
- props.put(GraphPropertiesDictionary.RESOURCE_TYPE.getProperty(), resourceType);
- props.put(GraphPropertiesDictionary.IS_HIGHEST_VERSION.getProperty(), true);
- Either<List<S>, TitanOperationStatus> getResources = titanGenericDao.getByCriteria(nodeType, props, clazz);
- if (getResources.isRight()) {
- status = getResources.right().value();
- if(status != TitanOperationStatus.NOT_FOUND){
- statusWrapper.setInnerElement(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- }else{
- components = new ArrayList<>();
- }
- }else{
- components = getResources.left().value().stream().
- map(c->(T)convertComponentMetadataDataToComponent(c)).collect(Collectors.toList());
- }
- if(!statusWrapper.isEmpty()){
- result = Either.right(statusWrapper.getInnerElement());
- }else{
- result = Either.left(components);
- }
- return result;
- } finally {
- if (!inTransaction) {
- titanGenericDao.commit();
- }
- }
- }
-
- private <T> Either<List<T>, StorageOperationStatus> fetchByMainCategory(List<ImmutablePair<SubCategoryData, GraphEdge>> subcategories, boolean inTransaction, ResourceTypeEnum resourceType) {
- List<T> components = new ArrayList<>();
-
- for (ImmutablePair<SubCategoryData, GraphEdge> subCategory : subcategories) {
- Either<List<T>, StorageOperationStatus> fetched = fetchByCategoryOrSubCategoryUid((String) subCategory.getLeft().getUniqueId(), NodeTypeEnum.ResourceSubcategory, GraphEdgeLabels.SUB_CATEGORY.getProperty(), NodeTypeEnum.Resource,
- inTransaction, ResourceMetadataData.class, resourceType);
- if (fetched.isRight()) {
- // return fetched;
- continue;
- }
- components.addAll(fetched.left().value());
- }
- return Either.left(components);
- }
-
- @Override
- public <T> Either<T, StorageOperationStatus> getLightComponent(String id, boolean inTransaction) {
- return getLightComponent(id, NodeTypeEnum.Resource, inTransaction);
- }
-
- // will be implement later
- @Override
- protected ComponentMetadataData getMetaDataFromComponent(Component component) {
- return getResourceMetaDataFromResource((Resource) component);
- }
-
- @Override
- public Either<Set<Resource>, StorageOperationStatus> getCatalogData(Map<String, Object> propertiesToMatch, boolean inTransaction) {
- return getComponentCatalogData(NodeTypeEnum.Resource, propertiesToMatch, Resource.class, ResourceMetadataData.class, inTransaction);
- }
-
- @Override
- public Either<List<Resource>, StorageOperationStatus> getAllDerivedResources(Resource resource) {
- try {
- Either<List<ImmutablePair<ResourceMetadataData, GraphEdge>>, TitanOperationStatus> childrenNodes = getDerivingChildren(resource);
- return childrenNodes.either((childrenPairs) -> convertToResources(PairUtils.leftSequence(childrenPairs)),
- (status) -> Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status)));
- } finally {
- titanGenericDao.commit();
- }
- }
-
- @Override
- public Either<List<Resource>, StorageOperationStatus> getRootResources() {
- Map<String, Object> rootToscaResource = new HashMap<>();
- rootToscaResource.put(GraphPropertiesDictionary.TOSCA_RESOURCE_NAME.getProperty(), Resource.ROOT_RESOURCE);
- return getResourceListByCriteria(rootToscaResource, false);
- }
-
- @Override
- public Either<List<Resource>, StorageOperationStatus> getVFResources() {
- Map<String, Object> rootToscaResource = new HashMap<>();
- rootToscaResource.put(GraphPropertiesDictionary.RESOURCE_TYPE.getProperty(), ResourceTypeEnum.VF);
- return getResourceListByCriteria(rootToscaResource, false);
- }
-
- private Either<List<ImmutablePair<ResourceMetadataData, GraphEdge>>, TitanOperationStatus> getDerivingChildren(Resource resource) {
- return titanGenericDao.getParentNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource), resource.getUniqueId(), GraphEdgeLabels.DERIVED_FROM, NodeTypeEnum.Resource, ResourceMetadataData.class);
- }
-
- private Either<List<Resource>, StorageOperationStatus> convertToResources(List<ResourceMetadataData> resourcesMetaData) {
- List<Resource> resources = new ArrayList<>();
- for (ResourceMetadataData resourceMetadataData : resourcesMetaData) {
- String uniqueId = resourceMetadataData.getMetadataDataDefinition().getUniqueId();
- Either<Resource, StorageOperationStatus> resource = this.getResource(uniqueId);
- if (resource.isRight()) {
- StorageOperationStatus status = resource.right().value();
- log.error("Failed to fetch resource {} . status is {}", uniqueId, status);
- return Either.right(status);
- }
- resources.add(resource.left().value());
- }
- return Either.left(resources);
- }
-
- protected TitanOperationStatus findResourcesPathRecursively(String resourceId, List<ResourceMetadataData> resourcesPathList) {
-
- Either<ResourceMetadataData, TitanOperationStatus> nodeRes = this.titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource), resourceId, ResourceMetadataData.class);
-
- if (nodeRes.isRight()) {
- TitanOperationStatus status = nodeRes.right().value();
- log.error("Failed to fetch resource {} . status is {}", resourceId, status);
- return status;
- }
-
- ResourceMetadataData resourceData = nodeRes.left().value();
- resourcesPathList.add(resourceData);
- Either<ImmutablePair<ResourceMetadataData, GraphEdge>, TitanOperationStatus> parentResourceRes = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource), resourceId, GraphEdgeLabels.DERIVED_FROM,
- NodeTypeEnum.Resource, ResourceMetadataData.class);
-
- while (parentResourceRes.isLeft()) {
-
- ImmutablePair<ResourceMetadataData, GraphEdge> value = parentResourceRes.left().value();
- ResourceMetadataData parentResourceData = value.getKey();
-
- resourcesPathList.add(parentResourceData);
-
- parentResourceRes = titanGenericDao.getChild(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Resource), parentResourceData.getMetadataDataDefinition().getUniqueId(), GraphEdgeLabels.DERIVED_FROM, NodeTypeEnum.Resource,
- ResourceMetadataData.class);
- }
-
- TitanOperationStatus operationStatus = parentResourceRes.right().value();
-
- if (operationStatus != TitanOperationStatus.NOT_FOUND) {
- return operationStatus;
- } else {
- return TitanOperationStatus.OK;
- }
-
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public <T> Either<T, StorageOperationStatus> updateComponent(T component, boolean inTransaction) {
- return (Either<T, StorageOperationStatus>) updateResource((Resource) component, inTransaction);
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public Either<Component, StorageOperationStatus> deleteComponent(String id, boolean inTransaction) {
- return (Either<Component, StorageOperationStatus>) (Either<?, StorageOperationStatus>) deleteResource(id, inTransaction);
- }
-
- @Override
- public Either<Resource, StorageOperationStatus> getLatestByToscaResourceName(String toscaResourceName, boolean inTransaction) {
- return getLatestByName(GraphPropertiesDictionary.TOSCA_RESOURCE_NAME.getProperty(), toscaResourceName, inTransaction);
-
- }
-
- @Override
- public Either<Resource, StorageOperationStatus> getLatestByName(String resourceName, boolean inTransaction) {
- return getLatestByName(GraphPropertiesDictionary.NAME.getProperty(), resourceName, inTransaction);
-
- }
-
- private Either<Resource, StorageOperationStatus> getLatestByName(String property, String resourceName, boolean inTransaction) {
- Either<Resource, StorageOperationStatus> result = null;
- try {
- Map<String, Object> props = new HashMap<String, Object>();
- props.put(property, resourceName);
- props.put(GraphPropertiesDictionary.IS_HIGHEST_VERSION.getProperty(), true);
-
- Either<List<ResourceMetadataData>, TitanOperationStatus> highestResources = titanGenericDao.getByCriteria(NodeTypeEnum.Resource, props, ResourceMetadataData.class);
- if (highestResources.isRight()) {
- TitanOperationStatus status = highestResources.right().value();
- log.debug("failed to find resource with name {}. status={} ", resourceName, status);
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
-
- List<ResourceMetadataData> resources = highestResources.left().value();
- double version = 0.0;
- ResourceMetadataData highestResource = null;
- for (ResourceMetadataData resource : resources) {
- double resourceVersion = Double.parseDouble(resource.getMetadataDataDefinition().getVersion());
- if (resourceVersion > version) {
- version = resourceVersion;
- highestResource = resource;
- }
- }
- result = getResource(highestResource.getMetadataDataDefinition().getUniqueId(), true);
- return result;
-
- } finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- log.error("getLatestByName operation : Going to execute rollback on graph.");
- titanGenericDao.rollback();
- } else {
- log.debug("getLatestByName operation : Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
-
- }
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public Either<List<Resource>, StorageOperationStatus> getTesterFollowed(String userId, Set<LifecycleStateEnum> lifecycleStates, boolean inTransaction) {
- return (Either<List<Resource>, StorageOperationStatus>) (Either<?, StorageOperationStatus>) getTesterFollowedComponent(userId, lifecycleStates, inTransaction, NodeTypeEnum.Resource);
- }
-
- @Override
- public Either<List<Resource>, StorageOperationStatus> getResourceCatalogData(boolean inTransaction) {
- return getResourceCatalogData(inTransaction, null);
- }
-
- private Either<List<Resource>, StorageOperationStatus> getResourceCatalogData(boolean inTransaction, Map<String, Object> otherToMatch) {
-
- long start = System.currentTimeMillis();
-
- long startFetchAllStates = System.currentTimeMillis();
- Map<String, Object> propertiesToMatchHigest = new HashMap<>();
- propertiesToMatchHigest.put(GraphPropertiesDictionary.IS_HIGHEST_VERSION.getProperty(), true);
- propertiesToMatchHigest.put(GraphPropertiesDictionary.IS_ABSTRACT.getProperty(), false);
- Either<List<ResourceMetadataData>, TitanOperationStatus> allHighestStates = titanGenericDao.getByCriteria(NodeTypeEnum.Resource, propertiesToMatchHigest, ResourceMetadataData.class);
- if (allHighestStates.isRight() && allHighestStates.right().value() != TitanOperationStatus.NOT_FOUND) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(allHighestStates.right().value()));
- }
-
- if (allHighestStates.isRight()) {
- return Either.left(new ArrayList<>());
- }
- List<ResourceMetadataData> list = allHighestStates.left().value();
-
- List<ResourceMetadataData> certified = new ArrayList<>();
- List<ResourceMetadataData> noncertified = new ArrayList<>();
- for (ResourceMetadataData reData : list) {
- if (reData.getMetadataDataDefinition().getState().equals(LifecycleStateEnum.CERTIFIED.name())) {
- certified.add(reData);
- } else {
- noncertified.add(reData);
- }
- }
-
- long endFetchAll = System.currentTimeMillis();
- log.debug("Fetch catalog resources all states: certified {}, noncertified {}", certified.size(), noncertified.size());
- log.debug("Fetch catalog resources all states from graph took {} ms", endFetchAll - startFetchAllStates);
-
- try {
- List<ResourceMetadataData> notCertifiedHighest = noncertified;
- List<ResourceMetadataData> certifiedHighestList = certified;
-
- HashMap<String, String> VFNames = new HashMap<>();
- HashMap<String, String> VFCNames = new HashMap<>();
- for (ResourceMetadataData data : notCertifiedHighest) {
- String serviceName = data.getMetadataDataDefinition().getName();
- if (((ResourceMetadataDataDefinition) data.getMetadataDataDefinition()).getResourceType().equals(ResourceTypeEnum.VF)) {
- VFNames.put(serviceName, serviceName);
- } else {
- VFCNames.put(serviceName, serviceName);
- }
- }
-
- for (ResourceMetadataData data : certifiedHighestList) {
- String serviceName = data.getMetadataDataDefinition().getName();
- if (((ResourceMetadataDataDefinition) data.getMetadataDataDefinition()).getResourceType().equals(ResourceTypeEnum.VF)) {
- if (!VFNames.containsKey(serviceName)) {
- notCertifiedHighest.add(data);
- }
- } else {
- if (!VFCNames.containsKey(serviceName)) {
- notCertifiedHighest.add(data);
- }
- }
- }
-
- long endFetchAllFromGraph = System.currentTimeMillis();
- log.debug("Fetch all catalog resources metadata from graph took {} ms", endFetchAllFromGraph - start);
-
- long startFetchAllFromCache = System.currentTimeMillis();
-
- List<Resource> result = new ArrayList<>();
-
- Map<String, Long> components = notCertifiedHighest.stream().collect(Collectors.toMap(p -> p.getMetadataDataDefinition().getUniqueId(), p -> p.getMetadataDataDefinition().getLastUpdateDate()));
-
- Either<ImmutablePair<List<Component>, Set<String>>, ActionStatus> componentsForCatalog = componentCache.getComponentsForCatalog(components, ComponentTypeEnum.RESOURCE);
- if (componentsForCatalog.isLeft()) {
- ImmutablePair<List<Component>, Set<String>> immutablePair = componentsForCatalog.left().value();
- List<Component> foundComponents = immutablePair.getLeft();
- if (foundComponents != null) {
- foundComponents.forEach(p -> result.add((Resource) p));
- log.debug("The number of resources added to catalog from cache is {}", foundComponents.size());
-
- List<String> foundComponentsUid = foundComponents.stream().map(p -> p.getUniqueId()).collect(Collectors.toList());
- notCertifiedHighest = notCertifiedHighest.stream().filter(p -> false == foundComponentsUid.contains(p.getUniqueId())).collect(Collectors.toList());
- }
- Set<String> nonCachedComponents = immutablePair.getRight();
- int numberNonCached = nonCachedComponents == null ? 0 : nonCachedComponents.size();
- log.debug("The number of left resources for catalog is {}", numberNonCached);
-
- }
-
- long endFetchAllFromCache = System.currentTimeMillis();
- log.debug("Fetch all catalog resources metadata from cache took {} ms", (endFetchAllFromCache - startFetchAllFromCache));
-
- long startFetchFromGraph = System.currentTimeMillis();
- log.debug("The number of resources needed to be fetch as light component is {}", notCertifiedHighest.size());
- for (ResourceMetadataData data : notCertifiedHighest) {
- String uniqueId = data.getMetadataDataDefinition().getUniqueId();
- log.trace("Fetch catalog resource non cached {} {}", uniqueId, data.getMetadataDataDefinition().getName());
- Either<Resource, StorageOperationStatus> component = getLightComponent(uniqueId, inTransaction);
- if (component.isRight()) {
- log.debug("Failed to get Service for id = {} error : {} skip resource", data.getUniqueId(), component.right().value());
- } else {
- result.add(component.left().value());
- }
- }
- long endFetchFromGraph = System.currentTimeMillis();
- log.debug("Fetch catalog resources from graph took {} ms", (endFetchFromGraph - startFetchFromGraph));
-
- return Either.left(result);
-
- } finally {
- long end = System.currentTimeMillis();
- log.debug("Fetch all catalog resources took {} ms", end - start);
- if (false == inTransaction) {
- titanGenericDao.commit();
- }
- }
- }
-
- public Either<List<Resource>, StorageOperationStatus> getResourceCatalogDataVFLatestCertifiedAndNonCertified(boolean inTransaction) {
- Map<String, Object> propertiesToMatch = new HashMap<>();
- propertiesToMatch.put(GraphPropertiesDictionary.RESOURCE_TYPE.getProperty(), ResourceTypeEnum.VF.name());
-
- return getResourceCatalogDataLatestCertifiedAndNonCertified(inTransaction, propertiesToMatch);
- }
-
- public Either<List<Resource>, StorageOperationStatus> getResourceCatalogDataLatestCertifiedAndNonCertified(boolean inTransaction, Map<String, Object> otherToMatch) {
- Map<String, Object> propertiesToMatch = new HashMap<>();
-
- if (otherToMatch != null) {
- propertiesToMatch.putAll(otherToMatch);
- }
-
- propertiesToMatch.put(GraphPropertiesDictionary.IS_HIGHEST_VERSION.getProperty(), true);
-
- Either<List<ResourceMetadataData>, TitanOperationStatus> lastVersionNodes = titanGenericDao.getByCriteria(NodeTypeEnum.Resource, propertiesToMatch, ResourceMetadataData.class);
-
- List<Resource> result = new ArrayList<>();
-
- if (lastVersionNodes.isRight() && lastVersionNodes.right().value() != TitanOperationStatus.NOT_FOUND) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(lastVersionNodes.right().value()));
- }
-
- List<ResourceMetadataData> listOfHighest;
-
- if (lastVersionNodes.isLeft()) {
- listOfHighest = lastVersionNodes.left().value();
- } else {
- return Either.left(result);
- }
-
- for (ResourceMetadataData data : listOfHighest) {
- Either<Resource, StorageOperationStatus> component = getLightComponent(data.getMetadataDataDefinition().getUniqueId(), inTransaction);
- if (component.isRight()) {
- log.debug("Failed to get Service for id = {} error : {} skip resource", data.getUniqueId(), component.right().value());
- } else {
- result.add(component.left().value());
- }
- }
- return Either.left(result);
- }
-
- private Either<List<Resource>, StorageOperationStatus> getResourceListByCriteria(Map<String, Object> props, boolean inTransaction) {
-
- props.put(GraphPropertiesDictionary.LABEL.getProperty(), NodeTypeEnum.Resource.getName());
-
- Either<List<ResourceMetadataData>, TitanOperationStatus> byCriteria = titanGenericDao.getByCriteria(NodeTypeEnum.Resource, props, ResourceMetadataData.class);
-
- if (byCriteria.isRight()) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(byCriteria.right().value()));
- }
- List<Resource> resources = new ArrayList<>();
- List<ResourceMetadataData> resourcesDataList = byCriteria.left().value();
- for (ResourceMetadataData data : resourcesDataList) {
- buildResource(inTransaction, resources, data);
- }
- return Either.left(resources);
- }
-
- private void buildResource(boolean inTransaction, List<Resource> resources, ResourceMetadataData data) {
- Either<Resource, StorageOperationStatus> resource = getResource(data.getMetadataDataDefinition().getUniqueId(), inTransaction);
- if (resource.isLeft()) {
- resources.add(resource.left().value());
- } else {
- log.debug("Failed to fetch resource for name = {} and id = {}", data.getUniqueId(), data.getMetadataDataDefinition().getName());
- }
- }
-
- public Either<List<Resource>, StorageOperationStatus> getResourceListByUuid(String uuid, boolean inTransaction) {
- return getLatestResourceByUuid(uuid, false, inTransaction);
- }
-
- public Either<List<Resource>, StorageOperationStatus> getLatestResourceByUuid(String uuid, boolean inTransaction) {
- return getLatestResourceByUuid(uuid, true, inTransaction);
- }
-
- private Either<List<Resource>, StorageOperationStatus> getLatestResourceByUuid(String uuid, boolean isLatest, boolean inTransaction) {
- Map<String, Object> props = new HashMap<String, Object>();
- if (isLatest) {
- props.put(GraphPropertiesDictionary.IS_HIGHEST_VERSION.getProperty(), isLatest);
- }
- props.put(GraphPropertiesDictionary.UUID.getProperty(), uuid);
- return getResourceListByCriteria(props, inTransaction);
- }
-
- public Either<List<Resource>, StorageOperationStatus> getResourceListBySystemName(String systemName, boolean inTransaction) {
- Map<String, Object> props = new HashMap<String, Object>();
- props.put(GraphPropertiesDictionary.SYSTEM_NAME.getProperty(), systemName);
- return getResourceListByCriteria(props, inTransaction);
- }
-
- public Either<List<Resource>, StorageOperationStatus> getResourceListByToscaName(String toscaName, boolean inTransaction) {
- Map<String, Object> props = new HashMap<String, Object>();
- props.put(GraphPropertiesDictionary.TOSCA_RESOURCE_NAME.getProperty(), toscaName);
- return getResourceListByCriteria(props, inTransaction);
- }
-
- public Either<List<Resource>, StorageOperationStatus> getResourceByNameAndVersion(String name, String version, boolean inTransaction) {
- return getByNamesAndVersion(GraphPropertiesDictionary.NAME.getProperty(), name, version, null, inTransaction);
- }
-
- @Override
- public Either<List<Resource>, StorageOperationStatus> getResourceByNameAndVersion(String name, String version) {
- return getResourceByNameAndVersion(name, version, false);
- }
-
- protected Either<List<Resource>, StorageOperationStatus> getByNamesAndVersion(String nameKey, String nameValue, String version, Map<String, Object> additionalParams, boolean inTransaction) {
- Map<String, Object> props = new HashMap<String, Object>();
- props.put(nameKey, nameValue);
- props.put(GraphPropertiesDictionary.VERSION.getProperty(), version);
- props.put(GraphPropertiesDictionary.LABEL.getProperty(), NodeTypeEnum.Resource.getName());
- if (additionalParams != null && !additionalParams.isEmpty()) {
- props.putAll(additionalParams);
- }
-
- Either<List<ResourceMetadataData>, TitanOperationStatus> byCriteria = titanGenericDao.getByCriteria(NodeTypeEnum.Resource, props, ResourceMetadataData.class);
- List<Resource> resourcesList = new ArrayList<Resource>();
- if (byCriteria.isRight()) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(byCriteria.right().value()));
- }
- List<ResourceMetadataData> dataList = byCriteria.left().value();
- if (dataList != null && !dataList.isEmpty()) {
- for (ResourceMetadataData resourceData : dataList) {
- // ResourceMetadataData resourceData = dataList.get(0);
- Either<Resource, StorageOperationStatus> resource = getResource(resourceData.getMetadataDataDefinition().getUniqueId(), inTransaction);
- if (resource.isRight()) {
- log.debug("Failed to fetch resource for name = {} and id = {}", resourceData.getMetadataDataDefinition().getName(), resourceData.getUniqueId());
- return Either.right(resource.right().value());
- }
- resourcesList.add(resource.left().value());
- }
- // return resource;
- return Either.left(resourcesList);
- } else {
- return Either.right(StorageOperationStatus.NOT_FOUND);
- }
- }
-
- @Override
- protected <T> Either<T, StorageOperationStatus> getComponentByNameAndVersion(String name, String version, Map<String, Object> additionalParams, boolean inTransaction) {
- return (Either<T, StorageOperationStatus>) getResourceBySystemNameAndVersion(name, version, additionalParams, inTransaction);
- }
-
- @Override
- public Either<Resource, StorageOperationStatus> getResourceBySystemNameAndVersion(String name, String version, Map<String, Object> additionalParams, boolean inTransaction) {
- Either<List<Resource>, StorageOperationStatus> byNamesAndVersion = getByNamesAndVersion(GraphPropertiesDictionary.NORMALIZED_NAME.getProperty(), ValidationUtils.normaliseComponentName(name), version, additionalParams, inTransaction);
- if (byNamesAndVersion.isRight()) {
- return Either.right(byNamesAndVersion.right().value());
- }
- List<Resource> resourcesList = byNamesAndVersion.left().value();
- if (resourcesList.size() > 1) {
- log.debug("More that one instance of resource for name = {} and version = {}", name, version);
- return Either.right(StorageOperationStatus.GENERAL_ERROR);
- }
- return Either.left(resourcesList.get(0));
- }
-
- private TitanOperationStatus setAllVersions(Resource resource) {
- Either<Map<String, String>, TitanOperationStatus> res = getVersionList(NodeTypeEnum.Resource, resource.getVersion(), resource, ResourceMetadataData.class);
- if (res.isRight()) {
- return res.right().value();
- }
- resource.setAllVersions(res.left().value());
- return TitanOperationStatus.OK;
- }
-
- @Override
- protected <T extends GraphNode> Either<Map<String, String>, TitanOperationStatus> getVersionList(NodeTypeEnum type, String version, Component component, Class<T> clazz) {
- Map<String, Object> props = new HashMap<String, Object>();
- Map<String, Object> hasNotProps = new HashMap<String, Object>();
-
- if (version.startsWith("0")) {
- props.put(GraphPropertiesDictionary.UUID.getProperty(), component.getUUID());
- } else {
- props.put(GraphPropertiesDictionary.SYSTEM_NAME.getProperty(), component.getSystemName());
- props.put(GraphPropertiesDictionary.RESOURCE_TYPE.getProperty(), ((Resource) component).getResourceType().name());
- }
- hasNotProps.put(GraphPropertiesDictionary.IS_DELETED.getProperty(), true);
- Either<List<T>, TitanOperationStatus> result = titanGenericDao.getByCriteria(type, props, hasNotProps, clazz);
-
- Map<String, String> versionMap = new HashMap<String, String>();
- if (result.isRight()) {
- if (!result.right().value().equals(TitanOperationStatus.NOT_FOUND)) {
- return Either.right(result.right().value());
- }
-
- } else {
- List<ResourceMetadataData> components = (List<ResourceMetadataData>) result.left().value();
- for (ResourceMetadataData data : components) {
- versionMap.put(data.getMetadataDataDefinition().getVersion(), (String) data.getUniqueId());
- }
- }
-
- return Either.left(versionMap);
- }
-
- /**
- * update only the resource object itself without tag, derived from or any other neighbours.
- *
- * @param resource
- * @param inTransaction
- * @return
- */
- protected Either<Resource, StorageOperationStatus> updateResourceMetadata(Resource resource, boolean inTransaction) {
-
- Either<Resource, StorageOperationStatus> result = null;
-
- try {
-
- log.debug("In updateResource. received resource = {}", (resource == null ? null : resource.toString()));
- if (resource == null) {
- log.error("Resource object is null");
- result = Either.right(StorageOperationStatus.BAD_REQUEST);
- return result;
- }
-
- ResourceMetadataData resourceData = new ResourceMetadataData();
- resourceData.getMetadataDataDefinition().setUniqueId(resource.getUniqueId());
- resourceData.getMetadataDataDefinition().setHighestVersion(resource.isHighestVersion());
- log.debug("After converting resource to ResourceData. ResourceData = {}", resourceData);
-
- if (resourceData.getUniqueId() == null) {
- log.error("Resource id is missing in the request.");
- return Either.right(StorageOperationStatus.BAD_REQUEST);
- }
-
- Either<ResourceMetadataData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(resourceData, ResourceMetadataData.class);
-
- if (updateNode.isRight()) {
- log.error("Failed to update resource {}. status is {}", resource.getUniqueId(), updateNode.right().value());
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(updateNode.right().value()));
- return result;
- }
-
- Either<Resource, StorageOperationStatus> updatedResource = getResource(resource.getUniqueId(), true);
- if (updatedResource.isRight()) {
- log.error("Resource id is missing in the request. status is {}", updatedResource.right().value());
- result = Either.right(StorageOperationStatus.BAD_REQUEST);
- return result;
- }
-
- Resource updatedResourceValue = updatedResource.left().value();
- result = Either.left(updatedResourceValue);
-
- if (log.isDebugEnabled()) {
- String json = prettyJson.toJson(result.left().value());
- log.debug("Resource retrieved after update is {}", json);
- }
-
- return result;
-
- } finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- log.error("Going to execute rollback on graph.");
- titanGenericDao.rollback();
- } else {
- log.debug("Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
-
- }
-
- @Override
- public Either<List<Resource>, StorageOperationStatus> getAllCertifiedResources(boolean isAbstract, Boolean isHighest) {
-
- try {
- List<Resource> result = new ArrayList<>();
- Map<String, Object> propertiesToMatch = new HashMap<>();
- propertiesToMatch.put(GraphPropertiesDictionary.IS_ABSTRACT.getProperty(), isAbstract);
- propertiesToMatch.put(GraphPropertiesDictionary.STATE.getProperty(), LifecycleStateEnum.CERTIFIED.name());
-
- if (isHighest != null) {
- propertiesToMatch.put(GraphPropertiesDictionary.IS_HIGHEST_VERSION.getProperty(), isHighest.booleanValue());
- }
-
- Either<List<ResourceMetadataData>, TitanOperationStatus> resourceNodes = titanGenericDao.getByCriteria(NodeTypeEnum.Resource, propertiesToMatch, ResourceMetadataData.class);
-
- titanGenericDao.commit();
- if (resourceNodes.isRight()) {
- // in case of NOT_FOUND from Titan client return to UI empty
- // list
- if (resourceNodes.right().value().equals(TitanOperationStatus.NOT_FOUND)) {
- return Either.left(result);
- } else {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(resourceNodes.right().value()));
- }
- } else {
- List<ResourceMetadataData> resourceDataList = resourceNodes.left().value();
- for (ResourceMetadataData resourceData : resourceDataList) {
- Either<Resource, StorageOperationStatus> resource = getResource(resourceData.getMetadataDataDefinition().getUniqueId());
- if (resource.isRight()) {
- log.debug("Failed to fetch resource for id = {} error is {}", resourceData.getUniqueId(), resource.right().value());
- return Either.right(resource.right().value());
- }
- result.add(resource.left().value());
- }
- return Either.left(result);
- }
- } finally {
- titanGenericDao.commit();
- }
-
- }
-
- public Either<Resource, StorageOperationStatus> getLatestCertifiedByToscaResourceName(String toscaResourceName, boolean inTransaction) {
- return getLatestCertifiedByCriteria(GraphPropertiesDictionary.TOSCA_RESOURCE_NAME.getProperty(), toscaResourceName, inTransaction);
-
- }
-
- public Either<Resource, StorageOperationStatus> getLatestCertifiedByCriteria(String property, String resourceName, boolean inTransaction) {
- Either<Resource, StorageOperationStatus> result = null;
- try {
- Map<String, Object> props = new HashMap<String, Object>();
- props.put(property, resourceName);
- props.put(GraphPropertiesDictionary.IS_HIGHEST_VERSION.getProperty(), true);
- props.put(GraphPropertiesDictionary.STATE.getProperty(), LifecycleStateEnum.CERTIFIED.name());
-
- Either<List<ResourceMetadataData>, TitanOperationStatus> highestResources = titanGenericDao.getByCriteria(NodeTypeEnum.Resource, props, ResourceMetadataData.class);
- if (highestResources.isRight()) {
- TitanOperationStatus status = highestResources.right().value();
- log.debug("failed to find resource with name {}. status={} ", resourceName, status);
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
-
- List<ResourceMetadataData> resources = highestResources.left().value();
- double version = 0.0;
- ResourceMetadataData highestResource = null;
- for (ResourceMetadataData resource : resources) {
- double resourceVersion = Double.parseDouble(resource.getMetadataDataDefinition().getVersion());
- if (resourceVersion > version) {
- version = resourceVersion;
- highestResource = resource;
- }
- }
- result = getResource(highestResource.getMetadataDataDefinition().getUniqueId(), true);
- return result;
-
- } finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- log.error("getLatestByName operation : Going to execute rollback on graph.");
- titanGenericDao.rollback();
- } else {
- log.debug("getLatestByName operation : Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
-
- }
- }
-
- public Either<List<Resource>, StorageOperationStatus> findLastCertifiedResourceByName(Resource resource) {
-
- Map<String, Object> props = new HashMap<String, Object>();
- props.put(GraphPropertiesDictionary.NAME.getProperty(), resource.getName());
- props.put(GraphPropertiesDictionary.STATE.getProperty(), LifecycleStateEnum.CERTIFIED.name());
- return getResourceListByCriteria(props, false);
-
- }
-
- public Either<List<Resource>, StorageOperationStatus> findLastCertifiedResourceByUUID(Resource resource) {
- Map<String, Object> props = new HashMap<String, Object>();
- props.put(GraphPropertiesDictionary.UUID.getProperty(), resource.getUUID());
- props.put(GraphPropertiesDictionary.STATE.getProperty(), LifecycleStateEnum.CERTIFIED.name());
- return getResourceListByCriteria(props, false);
-
- }
-
- @Override
- public boolean isComponentExist(String resourceId) {
- return isComponentExist(resourceId, NodeTypeEnum.Resource);
- }
-
- @Override
- public <T> Either<T, StorageOperationStatus> cloneComponent(T other, String version, LifecycleStateEnum targetLifecycle, boolean inTransaction) {
- return (Either<T, StorageOperationStatus>) cloneResource((Resource) other, version, targetLifecycle, inTransaction);
- }
-
- @Override
- public Either<Integer, StorageOperationStatus> increaseAndGetComponentInstanceCounter(String componentId, boolean inTransaction) {
- return increaseAndGetComponentInstanceCounter(componentId, NodeTypeEnum.Resource, inTransaction);
- }
-
- private Either<Resource, StorageOperationStatus> cloneResource(Resource other, String version, boolean inTransaction) {
- return cloneResource(other, version, null, inTransaction);
- }
-
- private Either<Resource, StorageOperationStatus> cloneResource(Resource other, String version, LifecycleStateEnum targetLifecycle, boolean inTransaction) {
- Either<Resource, StorageOperationStatus> result = null;
-
- try {
- String origRsourceId = other.getUniqueId();
-
- StorageOperationStatus overrideStatus = overrideRecursiveMembers(other, origRsourceId);
- if (!overrideStatus.equals(StorageOperationStatus.OK)) {
- return Either.right(overrideStatus);
- }
- other.setVersion(version);
- other.setUniqueId(null);
-
- List<InputDefinition> inputs = other.getInputs();
- Map<String, List<ComponentInstanceProperty>> inputsPropMap = new HashMap<String, List<ComponentInstanceProperty>>();
-
- if(inputs != null){
- for(InputDefinition input: inputs){
-
- Either<List<ComponentInstanceProperty>, TitanOperationStatus> inputPropStatus = inputOperation.getComponentInstancePropertiesByInputId(input.getUniqueId());
- if(inputPropStatus.isLeft()){
- if(inputPropStatus.left().value() != null)
- inputsPropMap.put(input.getName(), inputPropStatus.left().value());
-
- }
-
-
- }
- }
-
- Either<Resource, StorageOperationStatus> createResourceMD = createResource(other, inTransaction);
- if (createResourceMD.isRight()) {
- StorageOperationStatus status = createResourceMD.right().value();
- log.error("failed to clone resource. status= {}", status);
- result = Either.right(status);
- return result;
- }
- Resource resource = createResourceMD.left().value();
- Either<TitanVertex, TitanOperationStatus> metadataVertexEither = titanGenericDao.getVertexByProperty(GraphPropertiesDictionary.UNIQUE_ID.getProperty(), resource.getUniqueId());
- if (metadataVertexEither.isRight()) {
- TitanOperationStatus error = metadataVertexEither.right().value();
- log.debug("Failed to fetch vertex of metadata {} error {}", resource.getUniqueId(), error);
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(error));
- return result;
- }
-
- TitanVertex metadataVertex = metadataVertexEither.left().value();
- Either<ImmutablePair<List<ComponentInstance>, Map<String, String>>, StorageOperationStatus> cloneInstances = componentInstanceOperation.cloneAllComponentInstancesFromContainerComponent(origRsourceId, resource.getUniqueId(),
- NodeTypeEnum.Resource, NodeTypeEnum.Resource, targetLifecycle, metadataVertex, other, resource, inputsPropMap);
- if (cloneInstances.isRight()) {
- result = Either.right(cloneInstances.right().value());
- return result;
- }
-
- Either<Integer, StorageOperationStatus> counterStatus = getComponentInstanceCoutner(origRsourceId, NodeTypeEnum.Resource);
- if (counterStatus.isRight()) {
- StorageOperationStatus status = counterStatus.right().value();
- log.error("failed to get resource instance counter on service {}. status={}", origRsourceId, counterStatus);
- result = Either.right(status);
- return result;
- }
-
- Either<Integer, StorageOperationStatus> setResourceInstanceCounter = setComponentInstanceCounter(resource.getUniqueId(), NodeTypeEnum.Resource, counterStatus.left().value(), true);
- if (setResourceInstanceCounter.isRight()) {
- StorageOperationStatus status = setResourceInstanceCounter.right().value();
- log.error("failed to set resource instance counter on service {}. status={}", resource.getUniqueId(), status);
- result = Either.right(status);
- return result;
- }
-
- Either<List<GroupDefinition>, StorageOperationStatus> clonedGroups = cloneGroups(other, resource, cloneInstances.left().value(), true);
- if (clonedGroups.isRight()) {
- StorageOperationStatus status = clonedGroups.right().value();
- if (status != StorageOperationStatus.OK) {
- result = Either.right(status);
- return result;
- }
- }
-
- result = this.getResource(resource.getUniqueId(), true);
- if (result.isRight()) {
- log.error("Cannot get full service from the graph. status is {}", result.right().value());
- return Either.right(result.right().value());
- }
-
- return result;
- } finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- log.debug("Going to execute rollback on graph.");
- titanGenericDao.rollback();
- } else {
- log.debug("Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
- }
-
- private StorageOperationStatus overrideRecursiveMembers(Resource resource, String prevId) {
- // override requirements to copy only resource's requirements and not
- // derived requirements
- Either<Map<String, List<RequirementDefinition>>, StorageOperationStatus> requirementsOfResourceOnly = getRequirementOperation().getAllRequirementsOfResourceOnly(prevId, true);
- if (requirementsOfResourceOnly.isRight()) {
- log.error("failed to get requirements of resource. resourceId {} status is {}", prevId, requirementsOfResourceOnly.right().value());
- return requirementsOfResourceOnly.right().value();
- }
- resource.setRequirements(requirementsOfResourceOnly.left().value());
-
- // override capabilities to copy only resource's requirements and not
- // derived requirements
- Either<Map<String, List<CapabilityDefinition>>, StorageOperationStatus> capabilitiesOfResourceOnly = getResourceCapabilitiesMap(prevId);
-
- resource.setCapabilities(capabilitiesOfResourceOnly.left().value());
-
- // override interfaces to copy only resource's interfaces and not
- // derived interfaces
- Either<Map<String, InterfaceDefinition>, StorageOperationStatus> interfacesOfResourceOnly = getInterfaceLifecycleOperation().getAllInterfacesOfResource(prevId, false, true);
- if (interfacesOfResourceOnly.isRight()) {
- log.error("failed to get interfaces of resource. resourceId {} status is {}", prevId, interfacesOfResourceOnly.right().value());
- return interfacesOfResourceOnly.right().value();
- }
- resource.setInterfaces(interfacesOfResourceOnly.left().value());
-
- List<PropertyDefinition> attributes = new ArrayList<>();
- TitanOperationStatus status = attributeOperation.findNodeNonInheretedAttribues(prevId, NodeTypeEnum.Resource, attributes);
- if (status != TitanOperationStatus.OK) {
- return DaoStatusConverter.convertTitanStatusToStorageStatus(status);
- } else {
- resource.setAttributes(attributes);
- }
-
- // override properties to copy only resource's properties and not
- // derived properties
- Either<Map<String, PropertyDefinition>, TitanOperationStatus> propertiesOfResourceOnly = getPropertyOperation().findPropertiesOfNode(NodeTypeEnum.Resource, prevId);
-
- List<PropertyDefinition> resourceProperties = null;
- if (propertiesOfResourceOnly.isRight()) {
- TitanOperationStatus titanStatus = propertiesOfResourceOnly.right().value();
- if (titanStatus != TitanOperationStatus.NOT_FOUND) {
- log.error("failed to get properties of resource. resourceId {} status is {}", prevId, propertiesOfResourceOnly.right().value());
- return DaoStatusConverter.convertTitanStatusToStorageStatus(titanStatus);
- }
- } else {
- Map<String, PropertyDefinition> propertiesMap = propertiesOfResourceOnly.left().value();
- if (propertiesMap != null) {
- resourceProperties = new ArrayList<PropertyDefinition>();
- resourceProperties.addAll(propertiesMap.values());
- }
- }
- resource.setProperties(resourceProperties);
-
- return StorageOperationStatus.OK;
- }
-
- private Either<Map<String, List<CapabilityDefinition>>, StorageOperationStatus> getResourceCapabilitiesMap(String prevId) {
-
- Either<Map<String, CapabilityDefinition>, StorageOperationStatus> capabilitiesOfResourceOnly = getCapabilityOperation().getAllCapabilitiesOfResource(prevId, false, true);
- if (capabilitiesOfResourceOnly.isRight()) {
- log.error("failed to get capabilities of resource. resourceId {} status is {}", prevId, capabilitiesOfResourceOnly.right().value());
- return Either.right(capabilitiesOfResourceOnly.right().value());
- }
- Map<String, List<CapabilityDefinition>> capabilityMap = getCapabilityOperation().convertCapabilityMap(capabilitiesOfResourceOnly.left().value(), null, null);
- return Either.left(capabilityMap);
- }
-
- @Override
- protected StorageOperationStatus validateCategories(Component currentComponent, Component component, ComponentMetadataData componentData, NodeTypeEnum type) {
- StorageOperationStatus status = StorageOperationStatus.OK;
- List<CategoryDefinition> newCategoryList = component.getCategories();
- CategoryDefinition newCategory = newCategoryList.get(0);
- CategoryDefinition currentCategory = currentComponent.getCategories().get(0);
- boolean categoryWasChanged = false;
-
- if (newCategory.getName() != null && false == newCategory.getName().equals(currentCategory.getName())) {
- // the category was changed
- categoryWasChanged = true;
- } else {
- // the sub-category was changed
- SubCategoryDefinition currSubcategory = currentCategory.getSubcategories().get(0);
- SubCategoryDefinition newSubcategory = newCategory.getSubcategories().get(0);
- if (newSubcategory.getName() != null && false == newSubcategory.getName().equals(currSubcategory.getName())) {
- log.debug("Going to update the category of the resource from {} to {}", currentCategory, newCategory);
- categoryWasChanged = true;
- }
- }
- if (categoryWasChanged) {
- status = moveCategoryEdge((Resource) component, (ResourceMetadataData) componentData, newCategory);
- log.debug("Going to update the category of the resource from {} to {}. status is {}", currentCategory, newCategory, status);
- }
- return status;
- }
-
- @Override
- public Resource getDefaultComponent() {
- return new Resource();
- }
-
- @Override
- public Either<Component, StorageOperationStatus> getMetadataComponent(String id, boolean inTransaction) {
- return getMetadataComponent(id, NodeTypeEnum.Resource, inTransaction);
- }
-
- @Override
- Component convertComponentMetadataDataToComponent(ComponentMetadataData componentMetadataData) {
- return convertResourceDataToResource((ResourceMetadataData) componentMetadataData);
- }
-
- @Override
- public Either<Boolean, StorageOperationStatus> validateComponentNameExists(String componentName) {
- return validateComponentNameUniqueness(componentName, titanGenericDao, NodeTypeEnum.Resource);
- }
-
- @Override
- public Either<Component, StorageOperationStatus> markComponentToDelete(Component componentToDelete, boolean inTransaction) {
- return internalMarkComponentToDelete(componentToDelete, inTransaction);
- }
-
- @Override
- public Either<Boolean, StorageOperationStatus> isComponentInUse(String componentId) {
- return isResourceInUse(componentId);
- }
-
- @Override
- public Either<List<String>, StorageOperationStatus> getAllComponentsMarkedForDeletion() {
- return getAllResourcesMarkedForDeletion();
- }
-
- @Override
- public Either<List<String>, StorageOperationStatus> getAllResourcesMarkedForDeletion() {
- return getAllComponentsMarkedForDeletion(NodeTypeEnum.Resource);
- }
-
- @Override
- public Either<Boolean, StorageOperationStatus> isResourceInUse(String resourceToDelete) {
- return isComponentInUse(resourceToDelete, NodeTypeEnum.Resource);
- }
-
- public Either<List<GroupDefinition>, StorageOperationStatus> cloneGroups(Resource resource, Resource newResource, ImmutablePair<List<ComponentInstance>, Map<String, String>> cloneInstances, boolean inTransaction) {
-
- Either<List<GroupDefinition>, StorageOperationStatus> result = null;
-
- if (resource.getGroups() == null) {
- return Either.right(StorageOperationStatus.OK);
- }
-
- Either<List<GroupDefinition>, StorageOperationStatus> prepareGroupsForCloning = groupOperation.prepareGroupsForCloning(resource, cloneInstances);
- if (prepareGroupsForCloning.isRight()) {
- StorageOperationStatus status = prepareGroupsForCloning.right().value();
- if (status != StorageOperationStatus.OK) {
- BeEcompErrorManager.getInstance().logInternalFlowError("CloneResource", "Failed to prepare groups for cloning", ErrorSeverity.ERROR);
- }
- result = Either.right(status);
- return result;
- } else {
- List<GroupDefinition> groupsToCreate = prepareGroupsForCloning.left().value();
- if (groupsToCreate != null && false == groupsToCreate.isEmpty()) {
- Either<List<GroupDefinition>, StorageOperationStatus> addGroups = groupOperation.addGroups(NodeTypeEnum.Resource, newResource.getUniqueId(), groupsToCreate, inTransaction);
- if (addGroups.isRight()) {
- BeEcompErrorManager.getInstance().logInternalFlowError("CloneResource", "Failed to clone groups", ErrorSeverity.ERROR);
- result = Either.right(addGroups.right().value());
- return result;
- }
-
- return Either.left(addGroups.left().value());
- } else {
- return Either.right(StorageOperationStatus.OK);
- }
- }
- }
-
- public Either<Resource, StorageOperationStatus> getLatestResourceByCsarOrName(String csarUUID, String systemName) {
- Map<String, Object> props = new HashMap<>();
- props.put(GraphPropertiesDictionary.CSAR_UUID.getProperty(), csarUUID);
- props.put(GraphPropertiesDictionary.IS_HIGHEST_VERSION.getProperty(), true);
- ResourceMetadataData resourceMetadataData = null;
- List<ResourceMetadataData> resourceMetadataDataList = null;
- Either<List<ResourceMetadataData>, TitanOperationStatus> byCsar = titanGenericDao.getByCriteria(NodeTypeEnum.Resource, props, ResourceMetadataData.class);
- if (byCsar.isRight()) {
- if (TitanOperationStatus.NOT_FOUND == byCsar.right().value()) {
- //Fix Defect DE256036
- if( StringUtils.isEmpty(systemName)){
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(TitanOperationStatus.NOT_FOUND));
- }
-
- props.clear();
- props.put(GraphPropertiesDictionary.IS_HIGHEST_VERSION.getProperty(), true);
- props.put(GraphPropertiesDictionary.SYSTEM_NAME.getProperty(), systemName);
- Either<List<ResourceMetadataData>, TitanOperationStatus> bySystemname = titanGenericDao.getByCriteria(NodeTypeEnum.Resource, props, ResourceMetadataData.class);
- if (bySystemname.isRight()) {
- log.debug("getLatestResourceByCsarOrName - Failed to find by system name {} error {} ", systemName, bySystemname.right().value());
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(bySystemname.right().value()));
- }
- if (bySystemname.left().value().size() > 2) {
- log.debug("getLatestResourceByCsarOrName - getByCriteria(by system name) must return only 2 latest version, but was returned - {}", bySystemname.left().value().size());
- return Either.right(StorageOperationStatus.GENERAL_ERROR);
- }
- resourceMetadataDataList = bySystemname.left().value();
- if (resourceMetadataDataList.size() == 1) {
- resourceMetadataData = resourceMetadataDataList.get(0);
- } else {
- for (ResourceMetadataData curResource : resourceMetadataDataList) {
- if (!curResource.getMetadataDataDefinition().getState().equals("CERTIFIED")) {
- resourceMetadataData = curResource;
- break;
- }
- }
- }
- if (resourceMetadataData == null) {
- log.debug("getLatestResourceByCsarOrName - getByCriteria(by system name) returned 2 latest CERTIFIED versions");
- return Either.right(StorageOperationStatus.GENERAL_ERROR);
- }
- if (resourceMetadataData.getMetadataDataDefinition().getCsarUUID() != null && !resourceMetadataData.getMetadataDataDefinition().getCsarUUID().equals(csarUUID)) {
- log.debug("getLatestResourceByCsarOrName - same system name {} but different csarUUID. exist {} and new {} ", systemName, resourceMetadataData.getMetadataDataDefinition().getCsarUUID(), csarUUID);
- // correct error will be returned from create flow. with all
- // correct audit records!!!!!
- return Either.right(StorageOperationStatus.NOT_FOUND);
- }
- Either<Resource, StorageOperationStatus> resource = getResource((String) resourceMetadataData.getUniqueId());
- return resource;
- }
- } else {
- resourceMetadataDataList = byCsar.left().value();
- if (resourceMetadataDataList.size() > 2) {
- log.debug("getLatestResourceByCsarOrName - getByCriteria(by csar) must return only 2 latest version, but was returned - {}", byCsar.left().value().size());
- return Either.right(StorageOperationStatus.GENERAL_ERROR);
- }
- if (resourceMetadataDataList.size() == 1) {
- resourceMetadataData = resourceMetadataDataList.get(0);
- } else {
- for (ResourceMetadataData curResource : resourceMetadataDataList) {
- if (!curResource.getMetadataDataDefinition().getState().equals("CERTIFIED")) {
- resourceMetadataData = curResource;
- break;
- }
- }
- }
- if (resourceMetadataData == null) {
- log.debug("getLatestResourceByCsarOrName - getByCriteria(by csar) returned 2 latest CERTIFIED versions");
- return Either.right(StorageOperationStatus.GENERAL_ERROR);
- }
- Either<Resource, StorageOperationStatus> resource = getResource((String) resourceMetadataData.getMetadataDataDefinition().getUniqueId());
- return resource;
- }
- return null;
- }
-
- public Either<List<ResourceMetadataData>, StorageOperationStatus> validateCsarUuidUniqueness(String csarUUID) {
-
- Map<String, Object> props = new HashMap<>();
- props.put(GraphPropertiesDictionary.CSAR_UUID.getProperty(), csarUUID);
-
- Either<List<ResourceMetadataData>, TitanOperationStatus> byCsar = titanGenericDao.getByCriteria(NodeTypeEnum.Resource, props, ResourceMetadataData.class);
- if (byCsar.isRight()) {
- if (TitanOperationStatus.NOT_FOUND.equals(byCsar.right().value())) {
- return Either.left(null);
- } else {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(byCsar.right().value()));
- }
- }
- return Either.left(byCsar.left().value());
- }
-
- public Either<Resource, StorageOperationStatus> getResource(String uniqueId, ComponentParametersView componentParametersView, boolean inTransaction) {
-
- Resource resource = null;
- try {
-
- NodeTypeEnum resourceNodeType = NodeTypeEnum.Resource;
- NodeTypeEnum compInstNodeType = NodeTypeEnum.Resource;
-
- Either<ResourceMetadataData, StorageOperationStatus> componentByLabelAndId = getComponentByLabelAndId(uniqueId, resourceNodeType, ResourceMetadataData.class);
- if (componentByLabelAndId.isRight()) {
- return Either.right(componentByLabelAndId.right().value());
- }
- ResourceMetadataData resourceData = componentByLabelAndId.left().value();
-
- // Try to fetch resource from the cache. The resource will be
- // fetched only if the time on the cache equals to
- // the time on the graph.
- Either<Resource, ActionStatus> componentFromCacheIfUpToDate = this.getComponentFromCacheIfUpToDate(uniqueId, resourceData, componentParametersView, Resource.class, ComponentTypeEnum.RESOURCE);
- if (componentFromCacheIfUpToDate.isLeft()) {
- Resource cachedResource = componentFromCacheIfUpToDate.left().value();
- log.debug("Resource {} with uid {} was fetched from cache.", cachedResource.getName(), cachedResource.getUniqueId());
- return Either.left(cachedResource);
- }
-
- resource = convertResourceDataToResource(resourceData);
-
- TitanOperationStatus status = null;
- if (false == componentParametersView.isIgnoreUsers()) {
- status = setResourceCreatorFromGraph(resource, uniqueId);
- if (status != TitanOperationStatus.OK) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- }
-
- status = setResourceLastModifierFromGraph(resource, uniqueId);
- if (status != TitanOperationStatus.OK) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- }
- }
-
- if (false == componentParametersView.isIgnoreProperties()) {
- status = setResourcePropertiesFromGraph(uniqueId, resource);
- if (status != TitanOperationStatus.OK) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- }
- }
-
- if (false == componentParametersView.isIgnoreAttributesFrom()) {
- status = setResourceAttributesFromGraph(uniqueId, resource);
- if (status != TitanOperationStatus.OK) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- }
- }
-
- if (false == componentParametersView.isIgnoreDerivedFrom()) {
- status = setResourceDerivedFromGraph(uniqueId, resource);
- if (status != TitanOperationStatus.OK) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- }
- }
-
- if (false == componentParametersView.isIgnoreCategories()) {
- status = setComponentCategoriesFromGraph(resource);
- if (status != TitanOperationStatus.OK) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- }
- }
-
- // Since capabilities and requirements and instances properties are
- // based on component instances, then we must fetch the instances.
- if (false == componentParametersView.isIgnoreComponentInstances() || false == componentParametersView.isIgnoreComponentInstancesProperties() || false == componentParametersView.isIgnoreComponentInstancesInputs()
- || false == componentParametersView.isIgnoreCapabilities() || false == componentParametersView.isIgnoreRequirements()) {
-
- status = setComponentInstancesFromGraph(uniqueId, resource, resourceNodeType, compInstNodeType);
- if (status != TitanOperationStatus.OK) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
-
- }
- }
-
- if (false == componentParametersView.isIgnoreRequirements()) {
- StorageOperationStatus setRequirementsStatus = setResourceRequirementsFromGraph(uniqueId, resource, true);
- if (setRequirementsStatus != StorageOperationStatus.OK) {
- log.error("Failed to set requirement of resource {}. status is {}", uniqueId, setRequirementsStatus);
- return Either.right(setRequirementsStatus);
- }
- }
-
- if (false == componentParametersView.isIgnoreInputs()) {
- status = setComponentInputsFromGraph(uniqueId, resource, true);
- if (status != TitanOperationStatus.OK) {
- log.error("Failed to set inputs of resource {}. status is {}", uniqueId, status);
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- }
-
- }
-
- StorageOperationStatus storageStatus = null;
- if (false == componentParametersView.isIgnoreCapabilities()) {
- storageStatus = setResourceCapabilitiesFromGraph(uniqueId, resource);
- if (storageStatus != StorageOperationStatus.OK) {
- return Either.right(storageStatus);
- }
- }
-
- if (false == componentParametersView.isIgnoreArtifacts()) {
- storageStatus = setArtifactFromGraph(uniqueId, resource);
- if (storageStatus != StorageOperationStatus.OK) {
- return Either.right(storageStatus);
- }
- }
- if (false == componentParametersView.isIgnoreComponentInstancesAttributesFrom()) {
- status = setComponentInstancesAttributesFromGraph(uniqueId, resource);
- if (status != TitanOperationStatus.OK) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
-
- }
- }
-
- if (false == componentParametersView.isIgnoreComponentInstancesProperties()) {
- status = setComponentInstancesPropertiesFromGraph(resource);
- if (status != TitanOperationStatus.OK) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
-
- }
- }
-
- if (false == componentParametersView.isIgnoreComponentInstancesInputs()) {
- status = setComponentInstancesInputsFromGraph(uniqueId, resource);
- if (status != TitanOperationStatus.OK) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
-
- }
- }
-
- if (false == componentParametersView.isIgnoreInterfaces()) {
- storageStatus = setResourceInterfacesFromGraph(uniqueId, resource);
- if (storageStatus != StorageOperationStatus.OK) {
- return Either.right(storageStatus);
- }
- }
-
- if (false == componentParametersView.isIgnoreAdditionalInformation()) {
- storageStatus = setResourceAdditionalInformationFromGraph(uniqueId, resource);
- if (storageStatus != StorageOperationStatus.OK) {
- return Either.right(storageStatus);
- }
- }
-
- if (false == componentParametersView.isIgnoreAllVersions()) {
- status = setAllVersions(resource);
- if (status != TitanOperationStatus.OK) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- }
- }
-
- if (false == componentParametersView.isIgnoreGroups()) {
- status = setGroupsFromGraph(uniqueId, resource, NodeTypeEnum.Resource);
- if (status != TitanOperationStatus.OK) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- }
- }
-
- if (true == componentParametersView.isIgnoreComponentInstances()) {
- resource.setComponentInstances(null);
- resource.setComponentInstancesRelations(null);
- }
-
- } finally {
- if (false == inTransaction) {
- titanGenericDao.commit();
- }
- }
-
- return Either.left(resource);
-
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public <T> Either<T, StorageOperationStatus> getComponent(String id, ComponentParametersView componentParametersView, boolean inTrasnaction) {
-
- Either<Resource, StorageOperationStatus> component = getResource(id, componentParametersView, inTrasnaction);
- if (component.isRight()) {
- return Either.right(component.right().value());
- }
- return (Either<T, StorageOperationStatus>) component;
- }
-
- // @Override
- public Either<Resource, StorageOperationStatus> updateResource(Resource resource, boolean inTransaction, ComponentParametersView filterResultView) {
- return (Either<Resource, StorageOperationStatus>) updateComponentFilterResult(resource, inTransaction, titanGenericDao, resource.getClass(), NodeTypeEnum.Resource, filterResultView);
- }
-
- @Override
- protected <T> Either<T, StorageOperationStatus> updateComponentFilterResult(T component, boolean inTransaction, ComponentParametersView filterResultView) {
- return (Either<T, StorageOperationStatus>) updateResource((Resource) component, inTransaction, filterResultView);
- }
-}
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ServiceOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ServiceOperation.java
deleted file mode 100644
index e503c787b5..0000000000
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ServiceOperation.java
+++ /dev/null
@@ -1,1289 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.openecomp.sdc.be.model.operations.impl;
-
-import com.thinkaurelius.titan.core.TitanGraph;
-import com.thinkaurelius.titan.core.TitanVertex;
-import fj.data.Either;
-import org.apache.commons.lang3.tuple.ImmutablePair;
-import org.openecomp.sdc.be.dao.api.ActionStatus;
-import org.openecomp.sdc.be.dao.graph.datatype.GraphEdge;
-import org.openecomp.sdc.be.dao.graph.datatype.GraphRelation;
-import org.openecomp.sdc.be.dao.graph.datatype.RelationEndPoint;
-import org.openecomp.sdc.be.dao.neo4j.GraphEdgeLabels;
-import org.openecomp.sdc.be.dao.neo4j.GraphPropertiesDictionary;
-import org.openecomp.sdc.be.dao.titan.TitanOperationStatus;
-import org.openecomp.sdc.be.datatypes.components.ServiceMetadataDataDefinition;
-import org.openecomp.sdc.be.datatypes.enums.ComponentTypeEnum;
-import org.openecomp.sdc.be.datatypes.enums.FilterKeyEnum;
-import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
-import org.openecomp.sdc.be.model.*;
-import org.openecomp.sdc.be.model.category.CategoryDefinition;
-import org.openecomp.sdc.be.model.operations.api.IArtifactOperation;
-import org.openecomp.sdc.be.model.operations.api.IElementOperation;
-import org.openecomp.sdc.be.model.operations.api.IServiceOperation;
-import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
-import org.openecomp.sdc.be.resources.data.ComponentMetadataData;
-import org.openecomp.sdc.be.resources.data.PropertyData;
-import org.openecomp.sdc.be.resources.data.ServiceMetadataData;
-import org.openecomp.sdc.be.resources.data.UserData;
-import org.openecomp.sdc.be.resources.data.category.CategoryData;
-import org.openecomp.sdc.common.util.ValidationUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.function.Predicate;
-import java.util.stream.Collectors;
-
-@org.springframework.stereotype.Component("service-operation")
-@Deprecated
-public class ServiceOperation extends ComponentOperation implements IServiceOperation {
-
- private static Logger log = LoggerFactory.getLogger(ServiceOperation.class.getName());
-
- @Resource
- private IArtifactOperation artifactOperation;
-
- @Resource
- private IElementOperation elementOperation;
-
- public ServiceOperation() {
- log.debug("ServiceOperation created");
- }
-
- @Override
- public Either<Service, StorageOperationStatus> createService(Service service) {
- return createService(service, false);
- }
-
- @Override
- public Either<Service, StorageOperationStatus> createService(Service service, boolean inTransaction) {
- Either<Service, StorageOperationStatus> result = null;
-
- try {
-
- ServiceMetadataData serviceData = getServiceMetaDataFromService(service);
- addComponentInternalFields(serviceData);
- String uniqueId = (String) serviceData.getUniqueId();
- generateUUID(service);
-
- String userId = service.getCreatorUserId();
-
- Either<UserData, TitanOperationStatus> findUser = findUser(userId);
-
- if (findUser.isRight()) {
- TitanOperationStatus status = findUser.right().value();
- log.error("Cannot find user {} in the graph. status is {}",userId,status);
- return sendError(status, StorageOperationStatus.USER_NOT_FOUND);
- }
-
- UserData creatorUserData = findUser.left().value();
- UserData updaterUserData = creatorUserData;
- String updaterUserId = service.getLastUpdaterUserId();
- if (updaterUserId != null && !updaterUserId.equals(userId)) {
- findUser = findUser(updaterUserId);
- if (findUser.isRight()) {
- TitanOperationStatus status = findUser.right().value();
- log.error("Cannot find user {} in the graph. status is {}",userId, status);
- return sendError(status, StorageOperationStatus.USER_NOT_FOUND);
- } else {
- updaterUserData = findUser.left().value();
- }
- }
-
- // get category
- List<CategoryDefinition> categories = service.getCategories();
- CategoryData categoryData = null;
-
- String categoryName = categories.get(0).getName();
- if (categoryName != null) {
- Either<CategoryData, StorageOperationStatus> categoryResult = elementOperation.getNewCategoryData(categoryName, NodeTypeEnum.ServiceNewCategory, CategoryData.class);
- if (categoryResult.isRight()) {
- StorageOperationStatus status = categoryResult.right().value();
- /*
- * TitanOperationStatus titanStatus = null; if(ActionStatus.CATEGORY_NOT_FOUND.equals(status)){ titanStatus = TitanOperationStatus.NOT_FOUND; }else{ titanStatus = TitanOperationStatus.GENERAL_ERROR; }
- */
- log.error("Cannot find category {} in the graph. status is {}",categoryName,status);
- return Either.right(status);
- }
-
- categoryData = categoryResult.left().value();
- }
-
- StorageOperationStatus storageOperationStatus = createTagsForComponent(service);
- if (storageOperationStatus != StorageOperationStatus.OK) {
- return Either.right(storageOperationStatus);
- }
-
- log.debug("try to create service node on graph for id {}",serviceData.getUniqueId());
- Either<ServiceMetadataData, TitanOperationStatus> createNode = titanGenericDao.createNode(serviceData, ServiceMetadataData.class);
- if (createNode.isRight()) {
- TitanOperationStatus status = createNode.right().value();
- log.error("Error returned after creating service data node {}. status returned is {}",serviceData,status);
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
- log.debug("create service node created on graph for id {}",serviceData.getUniqueId());
-
- TitanOperationStatus associateMetadata = associateMetadataToComponent(serviceData, creatorUserData, updaterUserData, null, null);
- if (associateMetadata != TitanOperationStatus.OK) {
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(associateMetadata));
- return result;
- }
- TitanOperationStatus associateCategory = associateMetadataCategoryToComponent(serviceData, categoryData);
- if (associateCategory != TitanOperationStatus.OK) {
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(associateCategory));
- return result;
- }
-
- Map<String, ArtifactDefinition> allArtifacts = new HashMap<String, ArtifactDefinition>();
- if (service.getArtifacts() != null) {
- allArtifacts.putAll(service.getArtifacts());
- }
- if (service.getDeploymentArtifacts() != null) {
- allArtifacts.putAll(service.getDeploymentArtifacts());
- }
- if (service.getServiceApiArtifacts() != null) {
- allArtifacts.putAll(service.getServiceApiArtifacts());
- }
- if (service.getToscaArtifacts() != null) {
- allArtifacts.putAll(service.getToscaArtifacts());
- }
-
- StorageOperationStatus associateArtifacts = associateArtifactsToComponent(NodeTypeEnum.Service, serviceData, allArtifacts);
- if (associateArtifacts != StorageOperationStatus.OK) {
- result = Either.right(associateArtifacts);
- return result;
- }
-
- TitanOperationStatus associateInputs = associateInputsToComponent(NodeTypeEnum.Service, serviceData, service.getInputs());
- if (associateInputs != TitanOperationStatus.OK) {
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(associateInputs));
- return result;
- }
-
- List<AdditionalInformationDefinition> additionalInformation = service.getAdditionalInformation();
- StorageOperationStatus addAdditionalInformation = addAdditionalInformationToService(uniqueId, additionalInformation);
- if (addAdditionalInformation != StorageOperationStatus.OK) {
- result = Either.right(addAdditionalInformation);
- return result;
- }
-
- result = this.getService(uniqueId, true);
- if (result.isRight()) {
- log.error("Cannot get full service from the graph. status is {}", result.right().value());
- return Either.right(result.right().value());
- }
-
- if (log.isDebugEnabled()) {
- String json = prettyJson.toJson(result.left().value());
- log.debug("Service retrieved is {}",json);
- }
-
- return result;
-
- } finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- log.debug("Going to execute rollback on graph.");
- titanGenericDao.rollback();
- } else {
- log.debug("Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
- }
-
- private TitanOperationStatus associateMetadataCategoryToComponent(ServiceMetadataData serviceData, CategoryData categoryData) {
- Either<GraphRelation, TitanOperationStatus> result;
- if (categoryData != null) {
- result = titanGenericDao.createRelation(serviceData, categoryData, GraphEdgeLabels.CATEGORY, null);
- log.debug("After associating component {} to category {}. Edge type is {}",serviceData.getUniqueId(),categoryData,GraphEdgeLabels.CATEGORY);
- if (result.isRight()) {
- log.error("Faield to associate component {} to category {}. Edge type is {}",serviceData.getUniqueId(),categoryData,GraphEdgeLabels.CATEGORY);
- return result.right().value();
- }
- }
- return TitanOperationStatus.OK;
- }
-
- private StorageOperationStatus addAdditionalInformationToService(String resourceUniqueId, List<AdditionalInformationDefinition> additionalInformation) {
-
- StorageOperationStatus result = null;
-
- if (additionalInformation == null || true == additionalInformation.isEmpty()) {
- result = super.addAdditionalInformation(NodeTypeEnum.Service, resourceUniqueId, null);
- } else {
- if (additionalInformation.size() == 1) {
- result = super.addAdditionalInformation(NodeTypeEnum.Service, resourceUniqueId, additionalInformation.get(0));
- } else {
- result = StorageOperationStatus.BAD_REQUEST;
- log.info("Cannot create resource with more than one additional information object. The number of received object is {}", additionalInformation.size());
- }
- }
- return result;
- }
-
- public Either<Service, StorageOperationStatus> cloneService(Service other, String version, boolean inTransaction) {
- return cloneService(other, version, null, inTransaction);
- }
-
- public Either<Service, StorageOperationStatus> cloneService(Service other, String version, LifecycleStateEnum targetLifecycle, boolean inTransaction) {
- Either<Service, StorageOperationStatus> result = null;
-
- try {
- String origServiceId = other.getUniqueId();
- other.setVersion(version);
- other.setUniqueId(null);
-
- Either<Integer, StorageOperationStatus> counterStatus = getComponentInstanceCoutner(origServiceId, NodeTypeEnum.Service);
- if (counterStatus.isRight()) {
- StorageOperationStatus status = counterStatus.right().value();
- log.error("failed to get resource instance counter on service {}. status={}", origServiceId, counterStatus);
- result = Either.right(status);
- return result;
- }
- Map<String, List<ComponentInstanceInput>> inputsValuesMap = new HashMap<String, List<ComponentInstanceInput>>();
- List<InputDefinition> inputs = other.getInputs();
- if (inputs != null) {
- for (InputDefinition input : inputs) {
-
- Either<List<ComponentInstanceInput>, TitanOperationStatus> inputStatus = inputOperation
- .getComponentInstanceInputsByInputId(input.getUniqueId());
-
- if (inputStatus.isLeft() && inputStatus.left().value() != null) {
- inputsValuesMap.put(input.getName(), inputStatus.left().value());
- }
- }
- }
-
- Either<Service, StorageOperationStatus> createServiceMD = createService(other, true);
-
- if (createServiceMD.isRight()) {
- StorageOperationStatus status = createServiceMD.right().value();
- log.error("failed to clone service. status= {}", status);
- result = Either.right(status);
- return result;
- }
-
- Service service = createServiceMD.left().value();
-
- Either<ImmutablePair<List<ComponentInstance>, Map<String, String>>, StorageOperationStatus> cloneInstances = componentInstanceOperation.cloneAllComponentInstancesFromContainerComponent(origServiceId, service,
- NodeTypeEnum.Service, NodeTypeEnum.Resource, targetLifecycle, inputsValuesMap);
- if (cloneInstances.isRight()) {
- result = Either.right(cloneInstances.right().value());
- return result;
- }
-
- Either<Integer, StorageOperationStatus> setResourceInstanceCounter = setComponentInstanceCounter(service.getUniqueId(), NodeTypeEnum.Service, counterStatus.left().value(), true);
- if (setResourceInstanceCounter.isRight()) {
- StorageOperationStatus status = setResourceInstanceCounter.right().value();
- log.error("failed to set resource instance counter on service {}. status={}", service.getUniqueId(), setResourceInstanceCounter);
- result = Either.right(status);
- return result;
- }
-
- result = this.getService(service.getUniqueId(), true);
- if (result.isRight()) {
- log.error("Cannot get full service from the graph. status is {}", result.right().value());
- return Either.right(result.right().value());
- }
-
- if (log.isTraceEnabled()) {
- String json = prettyJson.toJson(result.left().value());
- log.trace("Resource retrieved is {}", json);
- }
-
- return result;
- } finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- log.debug("Going to execute rollback on graph.");
- titanGenericDao.rollback();
- } else {
- log.debug("Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
- }
-
- private ServiceMetadataData getServiceMetaDataFromService(Service service) {
- ServiceMetadataData serviceData = new ServiceMetadataData((ServiceMetadataDataDefinition) service.getComponentMetadataDefinition().getMetadataDataDefinition());
- if (service.getNormalizedName() == null || service.getNormalizedName().isEmpty()) {
- serviceData.getMetadataDataDefinition().setNormalizedName(ValidationUtils.normaliseComponentName(service.getName()));
- }
- if (service.getSystemName() == null || service.getSystemName().isEmpty()) {
- serviceData.getMetadataDataDefinition().setSystemName(ValidationUtils.convertToSystemName(service.getName()));
- }
-
- return serviceData;
- }
-
- private Either<Service, StorageOperationStatus> sendError(TitanOperationStatus status, StorageOperationStatus statusIfNotFound) {
- Either<Service, StorageOperationStatus> result;
- if (status == TitanOperationStatus.NOT_FOUND) {
- result = Either.right(statusIfNotFound);
- return result;
- } else {
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
- }
-
- /**
- *
- */
- public Either<Service, StorageOperationStatus> getService(String uniqueId) {
- return getService(uniqueId, false);
- }
-
- public Either<Service, StorageOperationStatus> getService(String uniqueId, boolean inTransaction) {
- ComponentParametersView componentParametersView = new ComponentParametersView();
- return getService(uniqueId, componentParametersView, inTransaction);
- }
-
- public Either<Service, StorageOperationStatus> getService(String uniqueId, ComponentParametersView componentParametersView, boolean inTransaction) {
-
- Service service = null;
- Either<Service, StorageOperationStatus> result = null;
- try {
-
- NodeTypeEnum serviceNodeType = NodeTypeEnum.Service;
- NodeTypeEnum compInstNodeType = NodeTypeEnum.Resource;
-
- Either<ServiceMetadataData, StorageOperationStatus> getComponentByLabel = getComponentByLabelAndId(uniqueId, serviceNodeType, ServiceMetadataData.class);
- if (getComponentByLabel.isRight()) {
- result = Either.right(getComponentByLabel.right().value());
- return result;
- }
- ServiceMetadataData serviceData = getComponentByLabel.left().value();
- // Try to fetch resource from the cache. The resource will be
- // fetched only if the time on the cache equals to
- // the time on the graph.
- Either<Service, ActionStatus> componentFromCacheIfUpToDate = this.getComponentFromCacheIfUpToDate(uniqueId, serviceData, componentParametersView, Service.class, ComponentTypeEnum.SERVICE);
- if (componentFromCacheIfUpToDate.isLeft()) {
- Service cachedService = componentFromCacheIfUpToDate.left().value();
- log.debug("Service {} with uid {} was fetched from cache.", cachedService.getName(), cachedService.getUniqueId());
- return Either.left(cachedService);
- }
-
- service = convertServiceDataToService(serviceData);
- TitanOperationStatus status = null;
- if (false == componentParametersView.isIgnoreUsers()) {
- status = setComponentCreatorFromGraph(service, uniqueId, serviceNodeType);
- if (status != TitanOperationStatus.OK) {
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
-
- status = setComponentLastModifierFromGraph(service, uniqueId, serviceNodeType);
- if (status != TitanOperationStatus.OK) {
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
-
- }
- }
- if (false == componentParametersView.isIgnoreCategories()) {
- status = setComponentCategoriesFromGraph(service);
- if (status != TitanOperationStatus.OK) {
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
-
- }
- }
-
- if (false == componentParametersView.isIgnoreArtifacts()) {
- StorageOperationStatus storageStatus = setArtifactFromGraph(uniqueId, service, serviceNodeType, artifactOperation);
- if (storageStatus != StorageOperationStatus.OK) {
- result = Either.right(storageStatus);
- return result;
- }
- }
-
- if (false == componentParametersView.isIgnoreComponentInstances() || false == componentParametersView.isIgnoreComponentInstancesProperties() || false == componentParametersView.isIgnoreCapabilities()
- || false == componentParametersView.isIgnoreRequirements()) {
- status = setComponentInstancesFromGraph(uniqueId, service, serviceNodeType, compInstNodeType);
- if (status != TitanOperationStatus.OK) {
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
-
- }
- }
- if (false == componentParametersView.isIgnoreComponentInstancesProperties()) {
- status = setComponentInstancesPropertiesFromGraph(service);
- if (status != TitanOperationStatus.OK) {
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
- }
- if (false == componentParametersView.isIgnoreCapabilities()) {
- status = setCapabilitiesFromGraph(uniqueId, service, NodeTypeEnum.Service);
- if (status != TitanOperationStatus.OK) {
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
- }
- if (false == componentParametersView.isIgnoreRequirements()) {
- status = setRequirementsFromGraph(uniqueId, service, NodeTypeEnum.Service);
- if (status != TitanOperationStatus.OK) {
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
- }
- if (false == componentParametersView.isIgnoreAllVersions()) {
- status = setAllVersions(service);
- if (status != TitanOperationStatus.OK) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- }
- }
- if (false == componentParametersView.isIgnoreAdditionalInformation()) {
- status = setServiceAdditionalInformationFromGraph(uniqueId, service);
- if (status != TitanOperationStatus.OK) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- }
- }
-
- if (false == componentParametersView.isIgnoreGroups()) {
- status = setGroupsFromGraph(uniqueId, service, NodeTypeEnum.Resource);
- if (status != TitanOperationStatus.OK) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- }
- }
- if (false == componentParametersView.isIgnoreInputs()) {
- status = setComponentInputsFromGraph(uniqueId, service, true);
- if (status != TitanOperationStatus.OK) {
- log.error("Failed to set inputs of resource {}. status is {}",uniqueId,status);
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- }
-
- }
-
- if (false == componentParametersView.isIgnoreComponentInstancesInputs()) {
- status = setComponentInstancesInputsFromGraph(uniqueId, service);
- if (status != TitanOperationStatus.OK) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
-
- }
- }
-
- result = Either.left(service);
- return result;
- } finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- titanGenericDao.rollback();
- } else {
- titanGenericDao.commit();
- }
- }
- }
- }
-
- // public Either<Service, StorageOperationStatus> getService_tx(String
- // uniqueId, boolean inTransaction) {
- //
- // Service service = null;
- // Either<Service, StorageOperationStatus> result = null;
- // try {
- //
- // NodeTypeEnum serviceNodeType = NodeTypeEnum.Service;
- // NodeTypeEnum compInstNodeType = NodeTypeEnum.Resource;
- //
- // Either<ServiceMetadataData, StorageOperationStatus> getComponentByLabel =
- // getComponentByLabelAndId_tx(uniqueId, serviceNodeType,
- // ServiceMetadataData.class);
- // if (getComponentByLabel.isRight()) {
- // result = Either.right(getComponentByLabel.right().value());
- // return result;
- // }
- // ServiceMetadataData serviceData = getComponentByLabel.left().value();
- // service = convertServiceDataToService(serviceData);
- //
- // TitanOperationStatus status = setComponentCreatorFromGraph(service,
- // uniqueId, serviceNodeType);
- // if (status != TitanOperationStatus.OK) {
- // result =
- // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- // return result;
- // }
- //
- // status = setComponentLastModifierFromGraph(service, uniqueId,
- // serviceNodeType);
- // if (status != TitanOperationStatus.OK) {
- // result =
- // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- // return result;
- //
- // }
- // status = setComponentCategoriesFromGraph(service);
- // if (status != TitanOperationStatus.OK) {
- // result =
- // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- // return result;
- //
- // }
- //
- // // status = setServicePropertiesFromGraph(uniqueId, resource, vertex);
- // // if (status != TitanOperationStatus.OK) {
- // // return
- // Either.right(TitanStatusConverter.convertTitanStatusToStorageStatus(status));
- // // }
- //
- // StorageOperationStatus storageStatus = setArtifactFromGraph(uniqueId,
- // service, serviceNodeType, artifactOperation);
- // if (storageStatus != StorageOperationStatus.OK) {
- // result = Either.right(storageStatus);
- // return result;
- // }
- //
- // status = setComponentInstancesFromGraph(uniqueId, service,
- // serviceNodeType, compInstNodeType);
- // if (status != TitanOperationStatus.OK) {
- // result =
- // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- // return result;
- //
- // }
- //
- // status = setComponentInstancesPropertiesFromGraph(uniqueId, service);
- // if (status != TitanOperationStatus.OK) {
- // result =
- // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- // return result;
- // }
- //
- // status = setCapabilitiesFromGraph(uniqueId, service,
- // NodeTypeEnum.Service);
- // if (status != TitanOperationStatus.OK) {
- // result =
- // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- // return result;
- // }
- //
- // status = setRequirementsFromGraph( uniqueId, service,
- // NodeTypeEnum.Service);
- // if (status != TitanOperationStatus.OK) {
- // result =
- // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- // return result;
- // }
- //
- // status = setAllVersions(service);
- // if (status != TitanOperationStatus.OK) {
- // return
- // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- // }
- //
- // status = setServiceAdditionalInformationFromGraph(uniqueId, service);
- // if (status != TitanOperationStatus.OK) {
- // return
- // Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- // }
- //
- // result = Either.left(service);
- // return result;
- // } finally {
- // if (false == inTransaction) {
- // if (result == null || result.isRight()) {
- // titanGenericDao.rollback();
- // } else {
- // titanGenericDao.commit();
- // }
- // }
- // }
- // }
-
- @Override
- TitanOperationStatus setComponentCategoriesFromGraph(Component service) {
-
- String uniqueId = service.getUniqueId();
- Either<List<ImmutablePair<CategoryData, GraphEdge>>, TitanOperationStatus> parentNode = titanGenericDao.getChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Service), uniqueId, GraphEdgeLabels.CATEGORY,
- NodeTypeEnum.ServiceNewCategory, CategoryData.class);
- if (parentNode.isRight()) {
- return parentNode.right().value();
- }
-
- List<ImmutablePair<CategoryData, GraphEdge>> listValue = parentNode.left().value();
- if (log.isDebugEnabled())
- log.debug("Result after looking for category nodes pointed by service {}. status is {}", uniqueId, listValue);
- if (listValue.size() > 1) {
- log.error("Multiple edges foud between resource {} to category nodes.",uniqueId);
- }
- ImmutablePair<CategoryData, GraphEdge> value = listValue.get(0);
- if (log.isDebugEnabled())
- log.debug("Found parent node {}", value);
-
- CategoryData categoryData = value.getKey();
- CategoryDefinition categoryDefinition = new CategoryDefinition(categoryData.getCategoryDataDefinition());
-
- List<CategoryDefinition> categories = new ArrayList<>();
- categories.add(categoryDefinition);
- service.setCategories(categories);
- return TitanOperationStatus.OK;
-
- }
-
- @Override
- public Either<Service, StorageOperationStatus> deleteService(String serviceId) {
- return deleteService(serviceId, false);
- }
-
- @Override
- public Either<Service, StorageOperationStatus> deleteService(String serviceId, boolean inTransaction) {
-
- Either<Service, StorageOperationStatus> result = Either.right(StorageOperationStatus.GENERAL_ERROR);
- try {
-
- Either<TitanGraph, TitanOperationStatus> graphResult = titanGenericDao.getGraph();
- if (graphResult.isRight()) {
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(graphResult.right().value()));
- return result;
- }
-
- Either<ServiceMetadataData, TitanOperationStatus> serviceNode = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Service), serviceId, ServiceMetadataData.class);
- if (serviceNode.isRight()) {
- TitanOperationStatus status = serviceNode.right().value();
- log.error("Failed to find service {}. status is {}",serviceId,status);
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- }
-
- Either<Service, StorageOperationStatus> serviceRes = getService(serviceId, true);
- if (serviceRes.isRight()) {
- StorageOperationStatus status = serviceRes.right().value();
- log.error("Failed to find sevice {}.status is {}",serviceId,status);
- result = Either.right(status);
- return result;
- }
- Service service = serviceRes.left().value();
-
- Either<List<ComponentInstance>, StorageOperationStatus> deleteAllResourceInstancesRes = componentInstanceOperation.deleteAllComponentInstances(serviceId, NodeTypeEnum.Service, true);
- log.debug("After deleting resource instances under service {}.Result is {}",serviceId,deleteAllResourceInstancesRes);
- if (deleteAllResourceInstancesRes.isRight()) {
- StorageOperationStatus status = deleteAllResourceInstancesRes.right().value();
- if (status != StorageOperationStatus.NOT_FOUND) {
- log.error("Failed to delete resource instances under service {} .status is ",serviceId,status);
- result = Either.right(status);
- return result;
- }
- }
- StorageOperationStatus removeArtifactsFromResource = removeArtifactsFromComponent(service, NodeTypeEnum.Service);
- log.debug("After deleting artifacts nodes in the graph. status is {}",removeArtifactsFromResource);
- if (!removeArtifactsFromResource.equals(StorageOperationStatus.OK)) {
- result = Either.right(removeArtifactsFromResource);
- return result;
- }
-
- StorageOperationStatus removeInputsFromResource = removeInputsFromComponent(NodeTypeEnum.Service, service);
- log.debug("After deleting requirements nodes in the graph. status is {}",removeInputsFromResource);
- if (removeInputsFromResource != StorageOperationStatus.OK) {
- result = Either.right(removeInputsFromResource);
- return result;
- }
-
- Either<List<ImmutablePair<PropertyData, GraphEdge>>, TitanOperationStatus> deleteChildrenNodesRes = titanGenericDao.deleteChildrenNodes(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Service), serviceId, GraphEdgeLabels.PROPERTY,
- NodeTypeEnum.Property, PropertyData.class);
-
- if (deleteChildrenNodesRes.isRight()) {
- TitanOperationStatus status = deleteChildrenNodesRes.right().value();
- if (status != TitanOperationStatus.NOT_FOUND) {
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
- }
-
- StorageOperationStatus removeAdditionalInformationFromService = super.deleteAdditionalInformation(NodeTypeEnum.Service, serviceId);
- log.debug("After deleting additional information node in the graph. status is {}",removeAdditionalInformationFromService);
- if (!removeAdditionalInformationFromService.equals(StorageOperationStatus.OK)) {
- result = Either.right(removeAdditionalInformationFromService);
- return result;
- }
-
- StorageOperationStatus removeGroupsFromService = super.deleteGroups(NodeTypeEnum.Service, serviceId);
- log.debug("After deleting group nodes in the graph. status is {}",removeGroupsFromService);
- if (!removeGroupsFromService.equals(StorageOperationStatus.OK)) {
- result = Either.right(removeGroupsFromService);
- return result;
- }
-
- Either<ServiceMetadataData, TitanOperationStatus> deleteServiceNodeRes = titanGenericDao.deleteNode(serviceNode.left().value(), ServiceMetadataData.class);
- if (deleteServiceNodeRes.isRight()) {
- TitanOperationStatus status = deleteServiceNodeRes.right().value();
- log.error("Failed to delete service node {}. status is {}",serviceId, status);
- result = Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(status));
- return result;
- }
-
- result = Either.left(service);
-
- return result;
- } finally {
- if (false == inTransaction) {
- if (result == null || result.isRight()) {
- log.debug("deleteService operation : Going to execute rollback on graph.");
- titanGenericDao.rollback();
- } else {
- log.debug("deleteService operation : Going to execute commit on graph.");
- titanGenericDao.commit();
- }
- }
- }
-
- }
-
- @Override
- public Either<Boolean, StorageOperationStatus> validateServiceNameExists(String serviceName) {
- return validateServiceNameUniqueness(serviceName, titanGenericDao);
- }
-
- private Service convertServiceDataToService(ServiceMetadataData serviceData) {
- ServiceMetadataDefinition serviceMetadataDefinition = new ServiceMetadataDefinition((ServiceMetadataDataDefinition) serviceData.getMetadataDataDefinition());
-
- Service service = new Service(serviceMetadataDefinition);
-
- return service;
- }
-
- @Override
- public <T extends Component> Either<T, StorageOperationStatus> getComponent(String id, Class<T> clazz) {
-
- Either<Service, StorageOperationStatus> component = getService(id);
- if (component.isRight()) {
- return Either.right(component.right().value());
- }
- return Either.left(clazz.cast(component.left().value()));
- }
-
- @Override
- @SuppressWarnings("unchecked")
- public Either<List<Service>, StorageOperationStatus> getFollowed(String userId, Set<LifecycleStateEnum> lifecycleStates, Set<LifecycleStateEnum> lastStateStates, boolean inTransaction) {
-
- return (Either<List<Service>, StorageOperationStatus>) (Either<?, StorageOperationStatus>) getFollowedComponent(userId, lifecycleStates, lastStateStates, inTransaction, titanGenericDao, NodeTypeEnum.Service);
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public <T> Either<T, StorageOperationStatus> getComponent(String id, boolean inTransaction) {
- return (Either<T, StorageOperationStatus>) getService(id, inTransaction);
- }
-
- @Override
- public Either<Set<Service>, StorageOperationStatus> getCatalogData(Map<String, Object> propertiesToMatch, boolean inTransaction) {
- return getComponentCatalogData(NodeTypeEnum.Service, propertiesToMatch, Service.class, ServiceMetadataData.class, inTransaction);
- }
-
- @Override
- public Either<Service, StorageOperationStatus> updateService(Service service, boolean inTransaction) {
- Either<Service, StorageOperationStatus> result = updateComponent(service, inTransaction, titanGenericDao, Service.class, NodeTypeEnum.Service);
- return result;
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public <T> Either<T, StorageOperationStatus> updateComponent(T component, boolean inTransaction) {
- return (Either<T, StorageOperationStatus>) updateService((Service) component, inTransaction);
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public Either<Component, StorageOperationStatus> deleteComponent(String id, boolean inTransaction) {
- return (Either<Component, StorageOperationStatus>) (Either<?, StorageOperationStatus>) deleteService(id, inTransaction);
- }
-
- @Override
- protected ComponentMetadataData getMetaDataFromComponent(Component component) {
- return getServiceMetaDataFromService((Service) component);
- }
-
- @Override
- public <T> Either<T, StorageOperationStatus> getLightComponent(String id, boolean inTransaction) {
- return getLightComponent(id, NodeTypeEnum.Service, inTransaction);
- }
-
- @Override
- public <T> Either<List<T>, StorageOperationStatus> getFilteredComponents(Map<FilterKeyEnum, String> filters, boolean inTransaction) {
- Either<List<T>, StorageOperationStatus> components = null;
-
- String categoryName = filters.get(FilterKeyEnum.CATEGORY);
- String distributionStatus = filters.get(FilterKeyEnum.DISTRIBUTION_STATUS);
- DistributionStatusEnum distEnum = DistributionStatusEnum.findState(distributionStatus);
- if (distributionStatus != null && distEnum == null) {
- filters.remove(FilterKeyEnum.CATEGORY);
- return Either.right(StorageOperationStatus.CATEGORY_NOT_FOUND);
- }
-
- if (categoryName != null) { // primary filter
- components = fetchByCategoryOrSubCategoryName(categoryName, NodeTypeEnum.ServiceNewCategory, GraphEdgeLabels.CATEGORY.getProperty(), NodeTypeEnum.Service, inTransaction, ServiceMetadataData.class, null);
- if (components.isLeft() && distEnum != null) {// secondary filter
- Predicate<T> statusFilter = p -> ((Service) p).getDistributionStatus().equals(distEnum);
- return Either.left(components.left().value().stream().filter(statusFilter).collect(Collectors.toList()));
- }
- filters.remove(FilterKeyEnum.DISTRIBUTION_STATUS);
- return components;
- }
- components = fetchByDistributionStatus(distEnum.name(), inTransaction);
- if (components.isRight()) { // not found == empty list
- return Either.left(new ArrayList<>());
- }
- return components;
- }
-
- private <T> Either<List<T>, StorageOperationStatus> fetchByDistributionStatus(String status, boolean inTransaction) {
- Map<String, Object> props = new HashMap<String, Object>();
- props.put(GraphPropertiesDictionary.DISTRIBUTION_STATUS.getProperty(), status);
- props.put(GraphPropertiesDictionary.IS_HIGHEST_VERSION.getProperty(), true);
- return (Either<List<T>, StorageOperationStatus>) (Either<?, StorageOperationStatus>) getServiceListByCriteria(props, inTransaction);
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public Either<List<Service>, StorageOperationStatus> getTesterFollowed(String userId, Set<LifecycleStateEnum> lifecycleStates, boolean inTransaction) {
- return (Either<List<Service>, StorageOperationStatus>) (Either<?, StorageOperationStatus>) getTesterFollowedComponent(userId, lifecycleStates, inTransaction, NodeTypeEnum.Service);
- }
-
- @Override
- public Either<Service, StorageOperationStatus> updateDestributionStatus(Service service, User user, DistributionStatusEnum distributionStatus) {
- String userId = user.getUserId();
- Either<UserData, TitanOperationStatus> findUser = findUser(userId);
- if (findUser.isRight()) {
- TitanOperationStatus status = findUser.right().value();
- log.error("Cannot find user {} in the graph. status is {}", userId, status);
- return sendError(status, StorageOperationStatus.USER_NOT_FOUND);
- }
- UserData userData = findUser.left().value();
-
- Either<ServiceMetadataData, TitanOperationStatus> serviceMetadataDataRequeset = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Service), service.getUniqueId(), ServiceMetadataData.class);
- if (serviceMetadataDataRequeset.isRight()) {
- TitanOperationStatus status = serviceMetadataDataRequeset.right().value();
- log.error("Cannot find service {} in the graph. status is {}",service.getUniqueId(),status);
- return sendError(status, StorageOperationStatus.NOT_FOUND);
- }
- ServiceMetadataData serviceMetadataData = serviceMetadataDataRequeset.left().value();
-
- StorageOperationStatus result = StorageOperationStatus.OK;
-
- Either<GraphRelation, TitanOperationStatus> deleteIncomingRelation = deleteLastDistributionModifierRelation(service);
- if (deleteIncomingRelation.isRight() && deleteIncomingRelation.right().value() != TitanOperationStatus.NOT_FOUND) {
- log.error("Failed to delete user from component {}. Edge type is {}",service.getUniqueId(),GraphEdgeLabels.LAST_DISTRIBUTION_STATE_MODIFAIER);
- result = DaoStatusConverter.convertTitanStatusToStorageStatus(deleteIncomingRelation.right().value());
- return Either.right(result);
- }
-
- Either<GraphRelation, TitanOperationStatus> createRelation = titanGenericDao.createRelation(userData, serviceMetadataData, GraphEdgeLabels.LAST_DISTRIBUTION_STATE_MODIFAIER, null);
- log.debug("After associating user {} to component {}. Edge type is {}",userData,serviceMetadataData.getUniqueId(),GraphEdgeLabels.LAST_DISTRIBUTION_STATE_MODIFAIER);
- if (createRelation.isRight()) {
- log.error("Failed to associate user {} to component {}. Edge type is {}",userData,serviceMetadataData.getUniqueId(),GraphEdgeLabels.LAST_DISTRIBUTION_STATE_MODIFAIER);
- result = DaoStatusConverter.convertTitanStatusToStorageStatus(createRelation.right().value());
- return Either.right(result);
- }
- service.setDistributionStatus(distributionStatus);
- Either<Service, StorageOperationStatus> updateResponse = updateComponent(service, true, titanGenericDao, Service.class, NodeTypeEnum.Service);
-
- return updateResponse;
-
- }
-
- private Either<GraphRelation, TitanOperationStatus> deleteLastDistributionModifierRelation(Service service) {
- GraphRelation lastDistributionStateModifaierRelation = new GraphRelation();
- lastDistributionStateModifaierRelation.setType(GraphEdgeLabels.LAST_DISTRIBUTION_STATE_MODIFAIER.getProperty());
- RelationEndPoint relationEndPoint = new RelationEndPoint(NodeTypeEnum.Service, UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.Service), service.getUniqueId());
- lastDistributionStateModifaierRelation.setTo(relationEndPoint);
- Either<GraphRelation, TitanOperationStatus> deleteIncomingRelation = titanGenericDao.deleteIncomingRelation(lastDistributionStateModifaierRelation);
- return deleteIncomingRelation;
- }
-
- @Override
- public Either<Set<Service>, StorageOperationStatus> getCertifiedServicesWithDistStatus(Map<String, Object> propertiesToMatch, Set<DistributionStatusEnum> distStatus, boolean inTransaction) {
- log.debug("Start getCertifiedServicesWithDistStatus.");
- Set<Service> servicesSet = new HashSet<Service>();
- if (distStatus != null && !distStatus.isEmpty()) {
- for (DistributionStatusEnum status : distStatus) {
- Map<String, Object> props = new HashMap<>();
- props.putAll(propertiesToMatch);
- props.put(GraphPropertiesDictionary.DISTRIBUTION_STATUS.getProperty(), status.name());
- Either<Set<Service>, StorageOperationStatus> services = retrieveCertifiedServicesWithStatus(inTransaction, props);
- if (services.isRight()) {
- return services;
- } else {
- servicesSet.addAll(services.left().value());
- }
- }
- return Either.left(servicesSet);
- } else {
- return retrieveCertifiedServicesWithStatus(inTransaction, propertiesToMatch);
- }
- }
-
- private Either<Set<Service>, StorageOperationStatus> retrieveCertifiedServicesWithStatus(boolean inTransaction, Map<String, Object> props) {
- Either<List<ServiceMetadataData>, TitanOperationStatus> criteriaRes = titanGenericDao.getByCriteria(NodeTypeEnum.Service, props, ServiceMetadataData.class);
- return retrieveComponentsFromNodes(criteriaRes, inTransaction);
- }
-
- public Either<List<Service>, StorageOperationStatus> getServiceCatalogData(boolean inTransaction) {
-
- long start = System.currentTimeMillis();
-
- try {
- /*
- * Map<String, Object> propertiesToMatch = new HashMap<>(); propertiesToMatch.put(GraphPropertiesDictionary.STATE.getProperty (), LifecycleStateEnum.CERTIFIED.name()); Either<List<ServiceMetadataData>, TitanOperationStatus>
- * lastVersionNodes = getLastVersion(NodeTypeEnum.Service, propertiesToMatch, ServiceMetadataData.class); if (lastVersionNodes.isRight() && lastVersionNodes.right().value() != TitanOperationStatus.NOT_FOUND) { return
- * Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus (lastVersionNodes.right().value())); } List<ServiceMetadataData> notCertifiedHighest = (lastVersionNodes.isLeft() ? lastVersionNodes.left().value() : new
- * ArrayList<ServiceMetadataData>());
- *
- * propertiesToMatch.put(GraphPropertiesDictionary. IS_HIGHEST_VERSION.getProperty(), true); Either<List<ServiceMetadataData>, TitanOperationStatus> componentsNodes = titanGenericDao.getByCriteria(NodeTypeEnum.Service, propertiesToMatch,
- * ServiceMetadataData.class); if (componentsNodes.isRight() && componentsNodes.right().value() != TitanOperationStatus.NOT_FOUND) { return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus
- * (componentsNodes.right().value())); } List<ServiceMetadataData> certifiedHighest = (componentsNodes.isLeft() ? componentsNodes.left().value() : new ArrayList<ServiceMetadataData>());
- */
-
- Either<List<ServiceMetadataData>, TitanOperationStatus> listOfHighestComponents = this.getListOfHighestComponents(NodeTypeEnum.Service, ServiceMetadataData.class);
- if (listOfHighestComponents.isRight() && listOfHighestComponents.right().value() != TitanOperationStatus.NOT_FOUND) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(listOfHighestComponents.right().value()));
- }
-
- List<ServiceMetadataData> notCertifiedHighest = listOfHighestComponents.left().value();
-
- List<Service> result = new ArrayList<>();
-
- if (notCertifiedHighest != null && false == notCertifiedHighest.isEmpty()) {
-
- // fetch from cache
- long startFetchAllFromCache = System.currentTimeMillis();
-
- Map<String, Long> components = notCertifiedHighest.stream().collect(Collectors.toMap(p -> p.getMetadataDataDefinition().getUniqueId(), p -> p.getMetadataDataDefinition().getLastUpdateDate()));
-
- Either<ImmutablePair<List<Component>, Set<String>>, ActionStatus> componentsFromCacheForCatalog = this.getComponentsFromCacheForCatalog(components, ComponentTypeEnum.SERVICE);
- if (componentsFromCacheForCatalog.isLeft()) {
- ImmutablePair<List<Component>, Set<String>> immutablePair = componentsFromCacheForCatalog.left().value();
- List<Component> list = immutablePair.getLeft();
- if (list != null) {
- for (Component component : list) {
- result.add((Service) component);
- }
- List<String> addedUids = list.stream().map(p -> p.getComponentMetadataDefinition().getMetadataDataDefinition().getUniqueId()).collect(Collectors.toList());
- notCertifiedHighest = notCertifiedHighest.stream().filter(p -> false == addedUids.contains(p.getMetadataDataDefinition().getUniqueId())).collect(Collectors.toList());
- }
- }
- long endFetchAllFromCache = System.currentTimeMillis();
- log.debug("Fetch all catalog services metadata from cache took {} ms", (endFetchAllFromCache - startFetchAllFromCache));
- log.debug("The number of services added to catalog from cache is {}", result.size());
-
- log.debug("The number of services needed to be fetch as light component is {}", notCertifiedHighest.size());
- for (ServiceMetadataData data : notCertifiedHighest) {
- Either<Service, StorageOperationStatus> component = getLightComponent(data.getMetadataDataDefinition().getUniqueId(), inTransaction);
- if (component.isRight()) {
- log.debug("Failed to get Service for id = {}, error : {}. Skip service", data.getUniqueId(), component.right().value());
- } else {
- result.add(component.left().value());
- }
- }
- }
- return Either.left(result);
- } finally {
- if (false == inTransaction) {
- titanGenericDao.commit();
- }
- log.debug("Fetch all catalog services took {} ms",(System.currentTimeMillis() - start));
- }
-
- }
-
- public Either<List<Service>, StorageOperationStatus> getServiceCatalogDataLatestCertifiedAndNotCertified(boolean inTransaction) {
- Map<String, Object> properties = new HashMap<>();
-
- properties.put(GraphPropertiesDictionary.IS_HIGHEST_VERSION.getProperty(), true);
- List<Service> result = new ArrayList<>();
- Either<List<ServiceMetadataData>, TitanOperationStatus> lastVersionNodes = titanGenericDao.getByCriteria(NodeTypeEnum.Service, properties, ServiceMetadataData.class);
-
- if (lastVersionNodes.isRight() && lastVersionNodes.right().value() != TitanOperationStatus.NOT_FOUND) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(lastVersionNodes.right().value()));
- }
-
- List<ServiceMetadataData> latestServices;
-
- if (lastVersionNodes.isLeft()) {
- latestServices = lastVersionNodes.left().value();
- } else {
- return Either.left(result);
- }
-
- for (ServiceMetadataData data : latestServices) {
- Either<Service, StorageOperationStatus> component = getLightComponent(data.getMetadataDataDefinition().getUniqueId(), inTransaction);
- if (component.isRight()) {
- log.debug("Failed to get Service for id = {} error : {} skip resource",data.getUniqueId(),component.right().value());
- } else {
- result.add(component.left().value());
- }
- }
-
- return Either.left(result);
-
- }
-
- private Either<List<Service>, StorageOperationStatus> getServiceListByCriteria(Map<String, Object> props, boolean inTransaction) {
- props.put(GraphPropertiesDictionary.LABEL.getProperty(), NodeTypeEnum.Service.getName());
- Either<List<ServiceMetadataData>, TitanOperationStatus> byCriteria = titanGenericDao.getByCriteria(NodeTypeEnum.Service, props, ServiceMetadataData.class);
-
- if (byCriteria.isRight()) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(byCriteria.right().value()));
- }
- List<Service> services = new ArrayList<>();
- List<ServiceMetadataData> servicesDataList = byCriteria.left().value();
- for (ServiceMetadataData data : servicesDataList) {
- Either<Service, StorageOperationStatus> service = getService(data.getMetadataDataDefinition().getUniqueId(), inTransaction);
- if (service.isLeft()) {
- services.add(service.left().value());
- } else {
- log.debug("Failed to fetch resource for name = {} and id = {}",data.getMetadataDataDefinition().getName(),data.getUniqueId());
- }
- }
- return Either.left(services);
- }
-
- public Either<List<Service>, StorageOperationStatus> getServiceListByUuid(String uuid, boolean inTransaction) {
- return getLatestServiceByUuid(uuid, false, inTransaction);
- }
-
- public Either<List<Service>, StorageOperationStatus> getLatestServiceByUuid(String uuid, boolean inTransaction) {
- return getLatestServiceByUuid(uuid, true, inTransaction);
- }
-
- private Either<List<Service>, StorageOperationStatus> getLatestServiceByUuid(String uuid, boolean isLatest, boolean inTransaction) {
- Map<String, Object> props = new HashMap<String, Object>();
-
- if (isLatest) {
- props.put(GraphPropertiesDictionary.IS_HIGHEST_VERSION.getProperty(), isLatest);
- }
-
- props.put(GraphPropertiesDictionary.UUID.getProperty(), uuid);
- return getServiceListByCriteria(props, inTransaction);
- }
-
- @Override
- public Either<List<Service>, StorageOperationStatus> getAll() {
- Either<List<Service>, StorageOperationStatus> serviceListByCriteria = getServiceListByCriteria(new HashMap<>(), false);
- if (serviceListByCriteria.isRight() && serviceListByCriteria.right().value() == StorageOperationStatus.NOT_FOUND) {
- return Either.left(Collections.emptyList());
- }
- return serviceListByCriteria;
- }
-
- public Either<List<Service>, StorageOperationStatus> getServiceListBySystemName(String systemName, boolean inTransaction) {
- Map<String, Object> props = new HashMap<String, Object>();
- props.put(GraphPropertiesDictionary.SYSTEM_NAME.getProperty(), systemName);
- return getServiceListByCriteria(props, inTransaction);
- }
-
- public Either<Service, StorageOperationStatus> getServiceByNameAndVersion(String name, String version, Map<String, Object> additionalParams, boolean inTransaction) {
- return getByNamesAndVersion(GraphPropertiesDictionary.NORMALIZED_NAME.getProperty(), ValidationUtils.normaliseComponentName(name), version, additionalParams, inTransaction);
- }
-
- @Override
- public Either<Service, StorageOperationStatus> getServiceByNameAndVersion(String name, String version) {
- return getServiceByNameAndVersion(name, version, null, false);
- }
-
- protected Either<Service, StorageOperationStatus> getByNamesAndVersion(String nameKey, String nameValue, String version, Map<String, Object> additionalParams, boolean inTransaction) {
- Map<String, Object> props = new HashMap<String, Object>();
- props.put(nameKey, nameValue);
- props.put(GraphPropertiesDictionary.VERSION.getProperty(), version);
- props.put(GraphPropertiesDictionary.LABEL.getProperty(), NodeTypeEnum.Service.getName());
- if (additionalParams != null && !additionalParams.isEmpty()) {
- props.putAll(additionalParams);
- }
-
- Either<List<ServiceMetadataData>, TitanOperationStatus> byCriteria = titanGenericDao.getByCriteria(NodeTypeEnum.Service, props, ServiceMetadataData.class);
-
- if (byCriteria.isRight()) {
- return Either.right(DaoStatusConverter.convertTitanStatusToStorageStatus(byCriteria.right().value()));
- }
- List<ServiceMetadataData> dataList = byCriteria.left().value();
- if (dataList != null && !dataList.isEmpty()) {
- if (dataList.size() > 1) {
- log.debug("More that one instance of resource for name ={} and version = {}",nameValue,version);
- return Either.right(StorageOperationStatus.GENERAL_ERROR);
- }
- ServiceMetadataData serviceData = dataList.get(0);
- Either<Service, StorageOperationStatus> service = getService(serviceData.getMetadataDataDefinition().getUniqueId(), inTransaction);
- if (service.isRight()) {
- log.debug("Failed to fetch resource for name = {} and id = {}",serviceData.getMetadataDataDefinition().getName(),serviceData.getMetadataDataDefinition().getUniqueId());
- }
- return service;
- }
- return Either.right(StorageOperationStatus.NOT_FOUND);
- }
-
- protected <T> Either<T, StorageOperationStatus> getComponentByNameAndVersion(String name, String version, Map<String, Object> additionalParams, boolean inTransaction) {
- return (Either<T, StorageOperationStatus>) getServiceByNameAndVersion(name, version, additionalParams, inTransaction);
- }
-
- @Override
- public Either<Service, StorageOperationStatus> getServiceBySystemNameAndVersion(String name, String version, boolean inTransaction) {
- return getByNamesAndVersion(GraphPropertiesDictionary.SYSTEM_NAME.getProperty(), name, version, null, inTransaction);
- }
-
- private TitanOperationStatus setServiceAdditionalInformationFromGraph(String uniqueId, Service service) {
-
- List<AdditionalInformationDefinition> additionalInformation = new ArrayList<>();
-
- Either<AdditionalInformationDefinition, TitanOperationStatus> either = additionalInformationOperation.getAllAdditionalInformationParameters(NodeTypeEnum.Service, uniqueId, true);
-
- if (either.isRight()) {
- TitanOperationStatus status = either.right().value();
- if (status == TitanOperationStatus.NOT_FOUND) {
- return TitanOperationStatus.OK;
- }
- return status;
- }
-
- AdditionalInformationDefinition additionalInformationDefinition = either.left().value();
- additionalInformation.add(additionalInformationDefinition);
-
- service.setAdditionalInformation(additionalInformation);
-
- return TitanOperationStatus.OK;
-
- }
-
- private TitanOperationStatus setAllVersions(Service service) {
- Either<Map<String, String>, TitanOperationStatus> res = getVersionList(NodeTypeEnum.Service, service.getVersion(), service, ServiceMetadataData.class);
- if (res.isRight()) {
- return res.right().value();
- }
- service.setAllVersions(res.left().value());
- return TitanOperationStatus.OK;
- }
-
- public Either<List<ArtifactDefinition>, StorageOperationStatus> getAdditionalArtifacts(String resourceId, boolean recursively, boolean inTransaction) {
- List<ArtifactDefinition> artifacts = new ArrayList<>();
- return Either.left(artifacts);
- }
-
- @Override
- public boolean isComponentExist(String serviceId) {
- return isComponentExist(serviceId, NodeTypeEnum.Service);
- }
-
- // @SuppressWarnings("unchecked")
- // @Override
- // public <T> Either<T, StorageOperationStatus> cloneComponent(T other,
- // String version, boolean inTransaction) {
- // return (Either<T, StorageOperationStatus>) cloneService((Service)other,
- // version, inTransaction);
- // }
-
- @SuppressWarnings("unchecked")
- @Override
- public <T> Either<T, StorageOperationStatus> cloneComponent(T other, String version, LifecycleStateEnum targetLifecycle, boolean inTransaction) {
- return (Either<T, StorageOperationStatus>) cloneService((Service) other, version, targetLifecycle, inTransaction);
- }
-
- @Override
- public Either<Integer, StorageOperationStatus> increaseAndGetComponentInstanceCounter(String componentId, boolean inTransaction) {
- return increaseAndGetComponentInstanceCounter(componentId, NodeTypeEnum.Service, inTransaction);
- }
-
- @Override
- protected StorageOperationStatus validateCategories(Component currentComponent, Component component, ComponentMetadataData componentData, NodeTypeEnum type) {
- List<CategoryDefinition> newcategories = component.getCategories();
- CategoryDefinition newCat = newcategories.get(0);
- CategoryDefinition currentCategory = currentComponent.getCategories().get(0);
-
- StorageOperationStatus status = StorageOperationStatus.OK;
- if (newCat != null && newCat.getName() != null && false == newCat.getName().equals(currentCategory.getName())) {
- log.debug("Going to update the category of the resource from {} to {}",currentCategory,newCat.getName());
-
- status = moveCategoryEdge(component, componentData, newCat, type);
- log.debug("Going to update the category of the resource from {} to {}. status is {}",currentCategory,newCat.getName(),status);
- }
- return status;
- }
-
- @Override
- protected <T extends Component> StorageOperationStatus updateDerived(Component component, Component currentComponent, ComponentMetadataData componentData, Class<T> clazz) {
- log.debug("Derived class isn't supported for resource");
- return null;
- }
-
- @Override
- public Service getDefaultComponent() {
- return new Service();
- }
-
- @Override
- public Either<Component, StorageOperationStatus> getMetadataComponent(String id, boolean inTransaction) {
- return getMetadataComponent(id, NodeTypeEnum.Service, inTransaction);
- }
-
- @Override
- Component convertComponentMetadataDataToComponent(ComponentMetadataData componentMetadataData) {
- return convertServiceDataToService((ServiceMetadataData) componentMetadataData);
- }
-
- @Override
- public Either<Boolean, StorageOperationStatus> validateComponentNameExists(String componentName) {
- return validateComponentNameUniqueness(componentName, titanGenericDao, NodeTypeEnum.Service);
- }
-
- @Override
- public Either<Component, StorageOperationStatus> markComponentToDelete(Component componentToDelete, boolean inTransaction) {
- return internalMarkComponentToDelete(componentToDelete, inTransaction);
- }
-
- @Override
- public Either<Boolean, StorageOperationStatus> isComponentInUse(String componentId) {
- return isComponentInUse(componentId, NodeTypeEnum.Service);
- }
-
- @Override
- public Either<List<String>, StorageOperationStatus> getAllComponentsMarkedForDeletion() {
- return getAllComponentsMarkedForDeletion(NodeTypeEnum.Service);
- }
-
- @SuppressWarnings("unchecked")
- @Override
- public <T> Either<T, StorageOperationStatus> getComponent(String id, ComponentParametersView componentParametersView, boolean inTransaction) {
-
- Either<Service, StorageOperationStatus> component = getService(id, componentParametersView, inTransaction);
- if (component.isRight()) {
- return Either.right(component.right().value());
- }
- return (Either<T, StorageOperationStatus>) component;
- }
-
- public Either<Service, StorageOperationStatus> updateService(Service service, boolean inTransaction, ComponentParametersView filterResultView) {
- return (Either<Service, StorageOperationStatus>) updateComponentFilterResult(service, inTransaction, titanGenericDao, service.getClass(), NodeTypeEnum.Service, filterResultView);
- }
-
- @Override
- protected <T> Either<T, StorageOperationStatus> updateComponentFilterResult(T component, boolean inTransaction, ComponentParametersView filterResultView) {
- return (Either<T, StorageOperationStatus>) updateService((Service) component, inTransaction, filterResultView);
- }
-
-}
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ToscaDefinitionPathCalculatorImpl.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ToscaDefinitionPathCalculatorImpl.java
deleted file mode 100644
index 5674a6ef0c..0000000000
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/ToscaDefinitionPathCalculatorImpl.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.openecomp.sdc.be.model.operations.impl;
-
-import org.openecomp.sdc.be.dao.graph.datatype.GraphEdge;
-import org.openecomp.sdc.be.dao.neo4j.GraphEdgePropertiesDictionary;
-import org.openecomp.sdc.be.model.ComponentInstance;
-import org.openecomp.sdc.be.model.operations.api.ToscaDefinitionPathCalculator;
-import org.springframework.stereotype.Component;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-@Component("tosca-path-calculator")
-public class ToscaDefinitionPathCalculatorImpl implements ToscaDefinitionPathCalculator {
-
- @Override
- public List<String> calculateToscaDefinitionPath(ComponentInstance componentInstance, GraphEdge edge) {
- String ownerId = getCapReqOwner(edge);
- String instanceId = componentInstance.getUniqueId();
- return ownerId.equals(instanceId) ? Collections.singletonList(instanceId) : Arrays.asList(instanceId, ownerId);
- }
-
- private String getCapReqOwner(GraphEdge edge) {
- String ownerIdKey = GraphEdgePropertiesDictionary.OWNER_ID.getProperty();
- return (String)edge.getProperties().get(ownerIdKey);
- }
-}
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/UserAdminOperation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/UserAdminOperation.java
index 81ca98444c..62ab886472 100644
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/UserAdminOperation.java
+++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/impl/UserAdminOperation.java
@@ -68,11 +68,6 @@ public class UserAdminOperation implements IUserAdminOperation {
private static Logger log = LoggerFactory.getLogger(UserAdminOperation.class.getName());
@Override
- public Either<User, ActionStatus> getInactiveUserData(String id) {
- return getUserData(id, false, false);
- }
-
- @Override
public Either<User, ActionStatus> getUserData(String id, boolean inTransaction) {
return getUserData(id, true, inTransaction);
}
@@ -380,16 +375,6 @@ public class UserAdminOperation implements IUserAdminOperation {
return result;
}
- @Override
- public Either<List<User>, ActionStatus> getAllUsers() {
- try {
- Either<List<UserData>, TitanOperationStatus> userNodes = titanGenericDao.getAll(NodeTypeEnum.User, UserData.class);
- return convertToUsers("", userNodes);
- } finally {
- titanGenericDao.commit();
- }
- }
-
private Either<User, ActionStatus> getUserNotFoundError(String uid, TitanOperationStatus status) {
if (status == TitanOperationStatus.NOT_FOUND) {
log.debug("User with userId {} not found", uid);
@@ -427,96 +412,4 @@ public class UserAdminOperation implements IUserAdminOperation {
return userData;
}
- @Override
- public Either<ImmutablePair<User, FunctionalMenuInfo>, ActionStatus> getUserDataWithFunctionalMenu(String userId) {
-
- Either<User, ActionStatus> userData = getUserData(userId, true, true);
-
- if (userData.isRight()) {
- return Either.right(userData.right().value());
- }
- User user = userData.left().value();
- Either<UserFunctionalMenuData, TitanOperationStatus> functionalMenu = getFunctionalMenu(userId);
-
- FunctionalMenuInfo functionalMenuInfo = new FunctionalMenuInfo();
- if (functionalMenu.isRight()) {
- TitanOperationStatus status = functionalMenu.right().value();
- if (status != TitanOperationStatus.NOT_FOUND) {
- return Either.right(ActionStatus.GENERAL_ERROR);
- }
- } else {
- UserFunctionalMenuData userFunctionalMenuData = functionalMenu.left().value();
- functionalMenuInfo.setFunctionalMenu(userFunctionalMenuData.getFunctionalMenu());
- }
-
- ImmutablePair<User, FunctionalMenuInfo> result = new ImmutablePair<User, FunctionalMenuInfo>(user, functionalMenuInfo);
-
- return Either.left(result);
- }
-
- public Either<UserFunctionalMenuData, TitanOperationStatus> getFunctionalMenu(String userId) {
-
- Either<UserFunctionalMenuData, TitanOperationStatus> result;
- if (userId == null) {
- log.info("User userId is empty");
- result = Either.right(TitanOperationStatus.NOT_FOUND);
- return result;
- }
- userId = userId.toLowerCase();
- String uid = UniqueIdBuilder.buildUserFunctionalMenuUid(userId);
-
- Either<UserFunctionalMenuData, TitanOperationStatus> either = titanGenericDao.getNode(UniqueIdBuilder.getKeyByNodeType(NodeTypeEnum.UserFunctionalMenu), uid, UserFunctionalMenuData.class);
-
- return either;
- }
-
- public Either<FunctionalMenuInfo, TitanOperationStatus> createOrUpdateFunctionalMenu(String userId, String newFunctionalMenu) {
-
- Either<UserFunctionalMenuData, TitanOperationStatus> functionalMenu = getFunctionalMenu(userId);
-
- if (functionalMenu.isRight()) {
- TitanOperationStatus status = functionalMenu.right().value();
- if (status == TitanOperationStatus.NOT_FOUND) {
- String uid = UniqueIdBuilder.buildUserFunctionalMenuUid(userId);
- UserFunctionalMenuData functionalMenuData = new UserFunctionalMenuData(newFunctionalMenu, uid);
-
- Either<UserFunctionalMenuData, TitanOperationStatus> createNode = titanGenericDao.createNode(functionalMenuData, UserFunctionalMenuData.class);
-
- if (createNode.isRight()) {
- return Either.right(createNode.right().value());
- } else {
- return Either.left(convert(createNode.left().value()));
- }
-
- } else {
- return Either.right(status);
- }
-
- } else {
- UserFunctionalMenuData userFunctionalMenuData = functionalMenu.left().value();
- userFunctionalMenuData.setFunctionalMenu(newFunctionalMenu);
- Either<UserFunctionalMenuData, TitanOperationStatus> updateNode = titanGenericDao.updateNode(userFunctionalMenuData, UserFunctionalMenuData.class);
-
- if (updateNode.isRight()) {
- return Either.right(updateNode.right().value());
- } else {
- return Either.left(convert(updateNode.left().value()));
- }
- }
-
- }
-
- private FunctionalMenuInfo convert(UserFunctionalMenuData functionalMenuData) {
-
- if (functionalMenuData == null) {
- return null;
- }
-
- FunctionalMenuInfo functionalMenuInfo = new FunctionalMenuInfo();
- functionalMenuInfo.setFunctionalMenu(functionalMenuData.getFunctionalMenu());
-
- return functionalMenuInfo;
-
- }
-
}
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/migration/MigrationMalformedDataLogger.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/migration/MigrationMalformedDataLogger.java
deleted file mode 100644
index 3cbdfc798c..0000000000
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/migration/MigrationMalformedDataLogger.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * SDC
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * 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.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.openecomp.sdc.be.model.operations.migration;
-
-import org.apache.commons.lang3.StringUtils;
-import org.openecomp.sdc.be.model.Component;
-import org.openecomp.sdc.be.model.ComponentInstance;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-/**
- * to be moved with all operations to the migration project
- */
-
-public class MigrationMalformedDataLogger {
-
- private static Logger log = LoggerFactory.getLogger(MigrationMalformedDataLogger.class);
- private static Set<String> malformedVFs = new HashSet<>();
-
- public static void reportMalformedVF(String vfId, String errorMsg) {
- log.error(errorMsg);
- malformedVFs.add(vfId);
- }
-
- public static void logMalformedDataMsg(String errorMsg) {
- log.error(errorMsg);
- }
-
- public static void logIfServiceUsingMalformedVfs(Component service) {
- List<ComponentInstance> componentInstances = service.getComponentInstances();
- if (componentInstances != null && !componentInstances.isEmpty() && !malformedVFs.isEmpty()) {
- Set<String> serviceInstances = componentInstances.stream().map(ComponentInstance::getComponentUid).collect(Collectors.toSet());
- serviceInstances.retainAll(malformedVFs);
- if (!serviceInstances.isEmpty()) {
- log.error(String.format("Service %s with id %s and version %s is using malformed VFs: %s", service.getName(),
- service.getVersion(),
- service.getUniqueId(),
- StringUtils.join(serviceInstances, ',')));
- }
- }
- }
-
-
-}
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/utils/ComponentValidationUtils.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/utils/ComponentValidationUtils.java
index fe5d79a266..01c9eefb20 100644
--- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/utils/ComponentValidationUtils.java
+++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/operations/utils/ComponentValidationUtils.java
@@ -20,20 +20,16 @@
package org.openecomp.sdc.be.model.operations.utils;
+import fj.data.Either;
import org.openecomp.sdc.be.dao.jsongraph.types.JsonParseFlagEnum;
import org.openecomp.sdc.be.model.Component;
import org.openecomp.sdc.be.model.LifecycleStateEnum;
import org.openecomp.sdc.be.model.Resource;
-import org.openecomp.sdc.be.model.Service;
import org.openecomp.sdc.be.model.jsontitan.operations.ToscaOperationFacade;
-import org.openecomp.sdc.be.model.operations.api.IResourceOperation;
-import org.openecomp.sdc.be.model.operations.api.IServiceOperation;
import org.openecomp.sdc.be.model.operations.api.StorageOperationStatus;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import fj.data.Either;
-
public class ComponentValidationUtils {
private static Logger log = LoggerFactory.getLogger(ComponentValidationUtils.class.getName());