2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.openecomp.sdc.be.model.operations.api;
23 import java.util.List;
26 import org.apache.commons.lang3.tuple.ImmutablePair;
27 import org.openecomp.sdc.be.dao.neo4j.GraphPropertiesDictionary;
28 import org.openecomp.sdc.be.dao.titan.TitanOperationStatus;
29 import org.openecomp.sdc.be.datatypes.enums.NodeTypeEnum;
30 import org.openecomp.sdc.be.model.ArtifactDefinition;
31 import org.openecomp.sdc.be.model.ComponentInstance;
32 import org.openecomp.sdc.be.model.ComponentInstanceAttribute;
33 import org.openecomp.sdc.be.model.ComponentInstanceInput;
34 import org.openecomp.sdc.be.model.ComponentInstanceProperty;
35 import org.openecomp.sdc.be.model.RequirementAndRelationshipPair;
36 import org.openecomp.sdc.be.model.RequirementCapabilityRelDef;
37 import org.openecomp.sdc.be.resources.data.AttributeValueData;
38 import org.openecomp.sdc.be.resources.data.ComponentInstanceData;
40 import fj.data.Either;
42 public interface IComponentInstanceOperation {
45 * add resource instance to service
47 * @param containerComponentId
49 * @param instanceNumber
50 * - instance number of the component instance
51 * @param componentInstance
52 * @param inTransaction
55 public Either<ComponentInstance, StorageOperationStatus> createComponentInstance(String containerComponentId,
56 NodeTypeEnum containerNodeType, String instanceNumber, ComponentInstance componentInstance,
57 NodeTypeEnum instNodeType, boolean inTransaction);
60 * add resource instance to service with internal transaction
62 * @param containerComponentId
63 * @param instanceNumber
64 * @param componentInstance
67 public Either<ComponentInstance, StorageOperationStatus> createComponentInstance(String containerComponentId,
68 NodeTypeEnum containerNodeType, String instanceNumber, ComponentInstance componentInstance,
69 NodeTypeEnum instNodeType);
72 * delete resource instance from component
74 * @param containerComponentId
75 * - containerComponent id
76 * @param resourceInstUid
77 * - resource instance uid
78 * @param inTransaction
81 public Either<ComponentInstance, StorageOperationStatus> deleteComponentInstance(NodeTypeEnum containerNodeType,
82 String containerComponentId, String resourceInstUid, boolean inTransaction);
84 public Either<ComponentInstance, StorageOperationStatus> deleteComponentInstance(NodeTypeEnum containerNodeType,
85 String containerComponentId, String resourceInstUid);
88 * associate 2 resource instances for a given requirement
91 * @param fromResInstanceUid
92 * @param toResInstanceUid
95 * @param inTransaction
98 // public Either<RequirementCapabilityRelDef, StorageOperationStatus>
99 // associateResourceInstances(
100 // String serviceId, NodeTypeEnum nodeType, String fromResInstanceUid,
101 // String toResInstanceUid, String requirement, String relationship,
102 // boolean inTransaction);
104 // public Either<RequirementCapabilityRelDef, StorageOperationStatus>
105 // associateResourceInstances(
106 // String serviceId, NodeTypeEnum nodeType, String fromResInstanceUid,
107 // String toResInstanceUid, String requirement, String relationship);
109 public Either<RequirementCapabilityRelDef, StorageOperationStatus> associateResourceInstances(String serviceId,
110 NodeTypeEnum nodeType, RequirementCapabilityRelDef relation, boolean inTransaction);
112 public Either<RequirementCapabilityRelDef, StorageOperationStatus> associateResourceInstances(String serviceId,
113 NodeTypeEnum nodeType, RequirementCapabilityRelDef relation);
117 * dissociate the relation between 2 resource instances for a given
121 * @param fromResInstanceUid
122 * @param toResInstanceUid
124 * @param inTransaction
127 public Either<RequirementCapabilityRelDef, StorageOperationStatus> dissociateResourceInstances(String serviceId,
128 NodeTypeEnum nodeType, RequirementCapabilityRelDef requirementDef, boolean inTransaction);
130 public Either<RequirementCapabilityRelDef, StorageOperationStatus> dissociateResourceInstances(String serviceId,
131 NodeTypeEnum nodeType, RequirementCapabilityRelDef requirementDef);
134 * update the properties of a given resource instance
137 * @param resourceInstanceName
138 * @param resourceInstance
139 * @param inTransaction
142 public Either<ComponentInstance, StorageOperationStatus> updateResourceInstance(String serviceId,
143 NodeTypeEnum nodeType, String resourceInstanceName, ComponentInstance resourceInstance,
144 boolean inTransaction);
146 public Either<ComponentInstance, StorageOperationStatus> updateResourceInstance(String serviceId,
147 NodeTypeEnum nodeType, String resourceInstanceName, ComponentInstance resourceInstance);
150 * get all resource instances of a given service and the relations between
151 * the resource instances
154 * @param inTransaction
157 public Either<ImmutablePair<List<ComponentInstance>, List<RequirementCapabilityRelDef>>, StorageOperationStatus> getAllComponentInstances(
158 String componentId, NodeTypeEnum containerNodeType, NodeTypeEnum compInstNodeType, boolean inTransaction);
160 public Either<List<String>, StorageOperationStatus> getAllComponentInstancesNames(String componentId,
161 NodeTypeEnum nodeType, boolean inTransaction);
163 public Either<List<String>, StorageOperationStatus> getAllComponentInstancesNames(String componentId,
164 NodeTypeEnum nodeType);
167 * get resource instance from id
170 * @return resource instance of given id
172 public Either<ComponentInstance, StorageOperationStatus> getResourceInstanceById(String resourceId);
174 public Either<List<ComponentInstance>, StorageOperationStatus> deleteAllComponentInstances(String serviceId,
175 NodeTypeEnum nodeType, boolean inTransaction);
177 public Either<List<ComponentInstance>, StorageOperationStatus> deleteAllComponentInstances(String serviceId,
178 NodeTypeEnum nodeType);
180 public Either<Integer, StorageOperationStatus> increaseAndGetResourceInstanceSpecificCounter(
181 String resourceInstanceId, GraphPropertiesDictionary counterType, boolean inTransaction);
183 public String createComponentInstLogicalName(String instanceNumber, String componentInstanceName);
185 public Either<Boolean, StorageOperationStatus> isComponentInstanceNameExist(String parentComponentId,
186 NodeTypeEnum parentNodeType, String compInstId, String componentInstName);
188 public Either<Boolean, StorageOperationStatus> validateParent(String parentId, String uniqId,
189 boolean inTransaction);
191 public Either<ComponentInstance, StorageOperationStatus> getFullComponentInstance(
192 ComponentInstance componentInstance, NodeTypeEnum compInstNodeType);
194 public Either<Boolean, StorageOperationStatus> isAvailableRequirement(ComponentInstance fromResInstance,
195 RequirementAndRelationshipPair relationPair);
197 public Either<Boolean, StorageOperationStatus> isAvailableCapabilty(ComponentInstance toResInstance,
198 RequirementAndRelationshipPair relationPair);
200 public Either<ComponentInstanceProperty, StorageOperationStatus> addPropertyValueToResourceInstance(
201 ComponentInstanceProperty resourceInstanceProperty, String resourceInstanceId, Integer index,
202 boolean inTransaction);
204 public Either<ComponentInstanceProperty, StorageOperationStatus> addPropertyValueToResourceInstance(
205 ComponentInstanceProperty resourceInstanceProperty, String resourceInstanceId, boolean isvalidate,
206 Integer index, boolean inTransaction);
209 * Adds Attribute to resource instance
211 * @param resourceInstanceAttribute
212 * * @param resourceInstanceId * @param index * @param
216 public Either<ComponentInstanceAttribute, StorageOperationStatus> addAttributeValueToResourceInstance(
217 ComponentInstanceAttribute resourceInstanceAttribute, String resourceInstanceId, Integer index,
218 boolean inTransaction);
220 public Either<ComponentInstanceProperty, StorageOperationStatus> updatePropertyValueInResourceInstance(
221 ComponentInstanceProperty resourceInstanceProperty, String resourceInstanceId, boolean inTransaction);
224 * Updates Attribute on resource instance
227 * @param resourceInstanceId
228 * @param inTransaction
231 public Either<ComponentInstanceAttribute, StorageOperationStatus> updateAttributeValueInResourceInstance(
232 ComponentInstanceAttribute attribute, String resourceInstanceId, boolean inTransaction);
234 public Either<AttributeValueData, TitanOperationStatus> createOrUpdateAttributeOfResourceInstance(
235 ComponentInstanceAttribute attributeInstanceProperty, String resourceInstanceId);
237 public Either<ComponentInstanceInput, StorageOperationStatus> addInputValueToResourceInstance(
238 ComponentInstanceInput input, String resourceInstanceId, Integer innerElement, boolean b);
240 public Either<ComponentInstanceInput, StorageOperationStatus> updateInputValueInResourceInstance(
241 ComponentInstanceInput input, String resourceInstanceId, boolean b);
243 public Either<Map<String, ArtifactDefinition>, StorageOperationStatus> fetchCIEnvArtifacts(
244 String componentInstanceId);