f8e8c80f12f86ef524b25abc130c286e82b9863e
[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 import org.apache.commons.lang3.tuple.ImmutablePair;
26 import org.openecomp.sdc.be.dao.graph.datatype.GraphEdge;
27 import org.openecomp.sdc.be.dao.titan.TitanOperationStatus;
28 import org.openecomp.sdc.be.model.CapabilityDefinition;
29 import org.openecomp.sdc.be.model.ComponentInstanceProperty;
30 import org.openecomp.sdc.be.model.PropertyDefinition;
31 import org.openecomp.sdc.be.resources.data.CapabilityInstData;
32 import org.openecomp.sdc.be.resources.data.ComponentInstanceData;
33 import org.openecomp.sdc.be.resources.data.PropertyValueData;
34
35 import com.thinkaurelius.titan.core.TitanVertex;
36
37 import fj.data.Either;
38
39 /**
40  * public interface ICapabilityInstanceOperation provides methods for CRUD operations for CapabilityInstance on component instance level
41  * 
42  * @author ns019t
43  *
44  */
45 public interface ICapabilityInstanceOperation {
46         /**
47          * create capability instance of capability with property values for resource instance
48          * 
49          * @param resourceInstanceId
50          * @param capabilityId
51          * @param propertyValues
52          * @param validateCapabilityInstExistance
53          * @param capabilityName
54          * @return
55          */
56         public Either<Map<CapabilityInstData, List<PropertyValueData>>, TitanOperationStatus> createCapabilityInstanceOfCapabilityWithPropertyValuesForResourceInstance(String resourceInstanceId, String capabilityId, String capabilityName,
57                         List<ComponentInstanceProperty> propertyValues, boolean validateCapabilityInstExistance);
58
59         /**
60          * 
61          * @param resourceInstanceVertex
62          * @param capabilityId
63          * @param capabilityName
64          * @param propertyValues
65          * @param validateCapabilityInstExistence
66          * @return
67          */
68         public TitanOperationStatus createCapabilityInstanceOfCapabilityWithPropertyValuesForResourceInstance(TitanVertex resourceInstanceVertex, String resourceInstanceId, String capabilityId, String capabilityName,
69                         List<ComponentInstanceProperty> propertyValues, boolean validateCapabilityInstExistence);
70
71         /**
72          * validate capability instance uniqueness
73          * 
74          * @param resourceInstanceId
75          * @param capabilityId
76          * @return
77          */
78         public Either<Boolean, TitanOperationStatus> validateCapabilityInstExistence(String resourceInstanceId, String capabilityId);
79
80         /**
81          * delete capability instance from resource instance
82          * 
83          * @param resourceInstanceId
84          * @param capabilityInstanceId
85          * @return
86          */
87         public Either<CapabilityInstData, TitanOperationStatus> deleteCapabilityInstanceFromResourceInstance(String resourceInstanceId, String capabilityInstanceId);
88
89         /**
90          * 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
91          * Instance
92          * 
93          * @param resourceInstanceId
94          * @return Either<List<CapabilityInstData>, TitanOperationStatus>
95          */
96         public Either<List<ImmutablePair<CapabilityInstData, GraphEdge>>, TitanOperationStatus> getAllCapabilityInstancesOfResourceInstance(String resourceInstanceId);
97
98         /**
99          * get capability instance of capability for resource instance
100          * 
101          * @param resourceInstanceId
102          * @param capabilityId
103          * @return
104          */
105         public Either<CapabilityInstData, TitanOperationStatus> getCapabilityInstanceOfCapabilityOfResourceInstance(String resourceInstanceId, String capabilityId);
106
107         /**
108          * update capability property values
109          * 
110          * @param resourceInstanceId
111          * @param capabilityInstanceId
112          * @param propertyValues
113          * @param capabilityId
114          * @return
115          */
116         public Either<List<PropertyValueData>, TitanOperationStatus> updateCapabilityPropertyValues(String resourceInstanceId, String capabilityId, List<ComponentInstanceProperty> propertyValues);
117
118         /**
119          * clone and associate capability instance with property values
120          * 
121          * @param createdComponentInstance
122          * @param capability
123          * @param capabilityInstPair
124          * @return
125          */
126         public Either<ImmutablePair<CapabilityInstData, List<PropertyValueData>>, TitanOperationStatus> cloneAssociateCapabilityInstanceWithPropertyValues(ComponentInstanceData createdComponentInstance, CapabilityDefinition capability,
127                         ImmutablePair<CapabilityInstData, GraphEdge> capabilityInstPair);
128
129         Either<Boolean, TitanOperationStatus> validateCapabilityInstExistence(TitanVertex instanceVertex, String resourceInstanceId, String capabilityId);
130 }