e51e0779069c39732cac1027c0cc1bc506b5f041
[sdc.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
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
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
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=========================================================
19  */
20
21 package org.openecomp.sdc.be.model.operations.api;
22
23 import java.util.List;
24 import java.util.Map;
25
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;
39
40 import fj.data.Either;
41
42 public interface IComponentInstanceOperation {
43
44         /**
45          * add resource instance to service
46          * 
47          * @param containerComponentId
48          *            - component id
49          * @param instanceNumber
50          *            - instance number of the component instance
51          * @param componentInstance
52          * @param inTransaction
53          * @return
54          */
55         public Either<ComponentInstance, StorageOperationStatus> createComponentInstance(String containerComponentId,
56                         NodeTypeEnum containerNodeType, String instanceNumber, ComponentInstance componentInstance,
57                         NodeTypeEnum instNodeType, boolean inTransaction);
58
59         /**
60          * add resource instance to service with internal transaction
61          * 
62          * @param containerComponentId
63          * @param instanceNumber
64          * @param componentInstance
65          * @return
66          */
67         public Either<ComponentInstance, StorageOperationStatus> createComponentInstance(String containerComponentId,
68                         NodeTypeEnum containerNodeType, String instanceNumber, ComponentInstance componentInstance,
69                         NodeTypeEnum instNodeType);
70
71         /**
72          * delete resource instance from component
73          * 
74          * @param containerComponentId
75          *            - containerComponent id
76          * @param resourceInstUid
77          *            - resource instance uid
78          * @param inTransaction
79          * @return
80          */
81         public Either<ComponentInstance, StorageOperationStatus> deleteComponentInstance(NodeTypeEnum containerNodeType,
82                         String containerComponentId, String resourceInstUid, boolean inTransaction);
83
84         public Either<ComponentInstance, StorageOperationStatus> deleteComponentInstance(NodeTypeEnum containerNodeType,
85                         String containerComponentId, String resourceInstUid);
86
87         /**
88          * associate 2 resource instances for a given requirement
89          * 
90          * @param serviceId
91          * @param fromResInstanceUid
92          * @param toResInstanceUid
93          * @param requirement
94          * @param relationship
95          * @param inTransaction
96          * @return
97          */
98         // public Either<RequirementCapabilityRelDef, StorageOperationStatus>
99         // associateResourceInstances(
100         // String serviceId, NodeTypeEnum nodeType, String fromResInstanceUid,
101         // String toResInstanceUid, String requirement, String relationship,
102         // boolean inTransaction);
103
104         // public Either<RequirementCapabilityRelDef, StorageOperationStatus>
105         // associateResourceInstances(
106         // String serviceId, NodeTypeEnum nodeType, String fromResInstanceUid,
107         // String toResInstanceUid, String requirement, String relationship);
108
109         public Either<RequirementCapabilityRelDef, StorageOperationStatus> associateResourceInstances(String serviceId,
110                         NodeTypeEnum nodeType, RequirementCapabilityRelDef relation, boolean inTransaction);
111
112         public Either<RequirementCapabilityRelDef, StorageOperationStatus> associateResourceInstances(String serviceId,
113                         NodeTypeEnum nodeType, RequirementCapabilityRelDef relation);
114
115         /**
116          * 
117          * dissociate the relation between 2 resource instances for a given
118          * requirement
119          * 
120          * @param serviceId
121          * @param fromResInstanceUid
122          * @param toResInstanceUid
123          * @param requirement
124          * @param inTransaction
125          * @return
126          */
127         public Either<RequirementCapabilityRelDef, StorageOperationStatus> dissociateResourceInstances(String serviceId,
128                         NodeTypeEnum nodeType, RequirementCapabilityRelDef requirementDef, boolean inTransaction);
129
130         public Either<RequirementCapabilityRelDef, StorageOperationStatus> dissociateResourceInstances(String serviceId,
131                         NodeTypeEnum nodeType, RequirementCapabilityRelDef requirementDef);
132
133         /**
134          * update the properties of a given resource instance
135          * 
136          * @param serviceId
137          * @param resourceInstanceName
138          * @param resourceInstance
139          * @param inTransaction
140          * @return
141          */
142         public Either<ComponentInstance, StorageOperationStatus> updateResourceInstance(String serviceId,
143                         NodeTypeEnum nodeType, String resourceInstanceName, ComponentInstance resourceInstance,
144                         boolean inTransaction);
145
146         public Either<ComponentInstance, StorageOperationStatus> updateResourceInstance(String serviceId,
147                         NodeTypeEnum nodeType, String resourceInstanceName, ComponentInstance resourceInstance);
148
149         /**
150          * get all resource instances of a given service and the relations between
151          * the resource instances
152          * 
153          * @param serviceId
154          * @param inTransaction
155          * @return
156          */
157         public Either<ImmutablePair<List<ComponentInstance>, List<RequirementCapabilityRelDef>>, StorageOperationStatus> getAllComponentInstances(
158                         String componentId, NodeTypeEnum containerNodeType, NodeTypeEnum compInstNodeType, boolean inTransaction);
159
160         public Either<List<String>, StorageOperationStatus> getAllComponentInstancesNames(String componentId,
161                         NodeTypeEnum nodeType, boolean inTransaction);
162
163         public Either<List<String>, StorageOperationStatus> getAllComponentInstancesNames(String componentId,
164                         NodeTypeEnum nodeType);
165
166         /**
167          * get resource instance from id
168          * 
169          * @param resourceId
170          * @return resource instance of given id
171          */
172         public Either<ComponentInstance, StorageOperationStatus> getResourceInstanceById(String resourceId);
173
174         public Either<List<ComponentInstance>, StorageOperationStatus> deleteAllComponentInstances(String serviceId,
175                         NodeTypeEnum nodeType, boolean inTransaction);
176
177         public Either<List<ComponentInstance>, StorageOperationStatus> deleteAllComponentInstances(String serviceId,
178                         NodeTypeEnum nodeType);
179
180         public Either<Integer, StorageOperationStatus> increaseAndGetResourceInstanceSpecificCounter(
181                         String resourceInstanceId, GraphPropertiesDictionary counterType, boolean inTransaction);
182
183         public String createComponentInstLogicalName(String instanceNumber, String componentInstanceName);
184
185         public Either<Boolean, StorageOperationStatus> isComponentInstanceNameExist(String parentComponentId,
186                         NodeTypeEnum parentNodeType, String compInstId, String componentInstName);
187
188         public Either<Boolean, StorageOperationStatus> validateParent(String parentId, String uniqId,
189                         boolean inTransaction);
190
191         public Either<ComponentInstance, StorageOperationStatus> getFullComponentInstance(
192                         ComponentInstance componentInstance, NodeTypeEnum compInstNodeType);
193
194         public Either<Boolean, StorageOperationStatus> isAvailableRequirement(ComponentInstance fromResInstance,
195                         RequirementAndRelationshipPair relationPair);
196
197         public Either<Boolean, StorageOperationStatus> isAvailableCapabilty(ComponentInstance toResInstance,
198                         RequirementAndRelationshipPair relationPair);
199
200         public Either<ComponentInstanceProperty, StorageOperationStatus> addPropertyValueToResourceInstance(
201                         ComponentInstanceProperty resourceInstanceProperty, String resourceInstanceId, Integer index,
202                         boolean inTransaction);
203
204         public Either<ComponentInstanceProperty, StorageOperationStatus> addPropertyValueToResourceInstance(
205                         ComponentInstanceProperty resourceInstanceProperty, String resourceInstanceId, boolean isvalidate,
206                         Integer index, boolean inTransaction);
207
208         /**
209          * Adds Attribute to resource instance
210          * 
211          * @param resourceInstanceAttribute
212          *            * @param resourceInstanceId * @param index * @param
213          *            inTransaction
214          * @return
215          **/
216         public Either<ComponentInstanceAttribute, StorageOperationStatus> addAttributeValueToResourceInstance(
217                         ComponentInstanceAttribute resourceInstanceAttribute, String resourceInstanceId, Integer index,
218                         boolean inTransaction);
219
220         public Either<ComponentInstanceProperty, StorageOperationStatus> updatePropertyValueInResourceInstance(
221                         ComponentInstanceProperty resourceInstanceProperty, String resourceInstanceId, boolean inTransaction);
222
223         /**
224          * Updates Attribute on resource instance
225          * 
226          * @param attribute
227          * @param resourceInstanceId
228          * @param inTransaction
229          * @return
230          */
231         public Either<ComponentInstanceAttribute, StorageOperationStatus> updateAttributeValueInResourceInstance(
232                         ComponentInstanceAttribute attribute, String resourceInstanceId, boolean inTransaction);
233
234         public Either<AttributeValueData, TitanOperationStatus> createOrUpdateAttributeOfResourceInstance(
235                         ComponentInstanceAttribute attributeInstanceProperty, String resourceInstanceId);
236
237         public Either<ComponentInstanceInput, StorageOperationStatus> addInputValueToResourceInstance(
238                         ComponentInstanceInput input, String resourceInstanceId, Integer innerElement, boolean b);
239
240         public Either<ComponentInstanceInput, StorageOperationStatus> updateInputValueInResourceInstance(
241                         ComponentInstanceInput input, String resourceInstanceId, boolean b);
242
243         public Either<Map<String, ArtifactDefinition>, StorageOperationStatus> fetchCIEnvArtifacts(
244                         String componentInstanceId);
245
246 }