Configuration object status to Inventoried
[so.git] / bpmn / so-bpmn-tasks / src / main / java / org / onap / so / client / orchestration / AAIConfigurationResources.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
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.onap.so.client.orchestration;
22
23 import java.util.Optional;
24 import javax.ws.rs.core.UriBuilder;
25 import org.onap.so.bpmn.common.InjectionHelper;
26 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
27 import org.onap.so.client.aai.AAIObjectType;
28 import org.onap.so.client.aai.entities.AAIEdgeLabel;
29 import org.onap.so.client.aai.entities.uri.AAIResourceUri;
30 import org.onap.so.client.aai.entities.uri.AAIUriFactory;
31 import org.onap.so.client.aai.mapper.AAIObjectMapper;
32 import org.onap.so.db.catalog.beans.OrchestrationStatus;
33 import org.springframework.beans.factory.annotation.Autowired;
34 import org.springframework.stereotype.Component;
35
36 @Component
37 public class AAIConfigurationResources {
38     @Autowired
39     private InjectionHelper injectionHelper;
40
41     @Autowired
42     private AAIObjectMapper aaiObjectMapper;
43
44     /**
45      * A&AI call to create configuration
46      *
47      * @param configuration
48      */
49     public void createConfiguration(Configuration configuration) {
50         AAIResourceUri configurationURI =
51                 AAIUriFactory.createResourceUri(AAIObjectType.CONFIGURATION, configuration.getConfigurationId());
52         configuration.setOrchestrationStatus(OrchestrationStatus.INVENTORIED);
53         org.onap.aai.domain.yang.Configuration aaiConfiguration = aaiObjectMapper.mapConfiguration(configuration);
54         injectionHelper.getAaiClient().create(configurationURI, aaiConfiguration);
55     }
56
57     /**
58      * method to get Configuration details from A&AI
59      *
60      * @param configurationId
61      * @return
62      */
63     public Optional<org.onap.aai.domain.yang.Configuration> getConfiguration(String configurationId) {
64         AAIResourceUri aaiResourceUri = AAIUriFactory.createResourceUri(AAIObjectType.CONFIGURATION, configurationId);
65         return injectionHelper.getAaiClient().get(org.onap.aai.domain.yang.Configuration.class, aaiResourceUri);
66     }
67
68     /**
69      * A&AI call to update configuration
70      *
71      * @param configuration
72      */
73     public void updateConfiguration(Configuration configuration) {
74         AAIResourceUri configurationURI =
75                 AAIUriFactory.createResourceUri(AAIObjectType.CONFIGURATION, configuration.getConfigurationId());
76         org.onap.aai.domain.yang.Configuration aaiConfiguration = aaiObjectMapper.mapConfiguration(configuration);
77         injectionHelper.getAaiClient().update(configurationURI, aaiConfiguration);
78     }
79
80     /**
81      * A&AI call to disconnect configuration relation with service instance
82      * 
83      * @param configurationId
84      * @param serviceInstanceId
85      */
86
87     public void disconnectConfigurationToServiceInstance(String configurationId, String serviceInstanceId) {
88         AAIResourceUri configurationURI = AAIUriFactory.createResourceUri(AAIObjectType.CONFIGURATION, configurationId);
89         AAIResourceUri serviceInstanceURI =
90                 AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstanceId);
91         injectionHelper.getAaiClient().disconnect(configurationURI, serviceInstanceURI);
92     }
93
94     /**
95      * A&AI call to add vrf configuration relationship with Vnr Configuration
96      *
97      * @param vrfConfigurationId
98      * @param vnrConfigurationId
99      */
100     public void connectVrfConfigurationToVnrConfiguration(String vrfConfigurationId, String vnrConfigurationId) {
101         AAIResourceUri vnrConfigurationUri =
102                 AAIUriFactory.createResourceUri(AAIObjectType.CONFIGURATION, vnrConfigurationId);
103         AAIResourceUri vrfConfigurationUri =
104                 AAIUriFactory.createResourceUri(AAIObjectType.CONFIGURATION, vrfConfigurationId);
105         injectionHelper.getAaiClient().connect(vrfConfigurationUri, vnrConfigurationUri);
106     }
107
108     /**
109      * A&AI call to add configuration relationship with PnfObject
110      *
111      * @param pnfId
112      * @param configurationId
113      */
114     public void connectConfigurationToPnfObject(String pnfId, String configurationId) {
115         AAIResourceUri pnfUri = AAIUriFactory.createResourceUri(AAIObjectType.PNF, pnfId);
116         AAIResourceUri configurationUri = AAIUriFactory.createResourceUri(AAIObjectType.CONFIGURATION, configurationId);
117         injectionHelper.getAaiClient().connect(configurationUri, pnfUri);
118     }
119
120     /**
121      * A&AI call to add configuration relationship with service instance
122      *
123      * @param configurationId
124      * @param serviceInstanceId
125      */
126     public void connectConfigurationToServiceInstance(String configurationId, String serviceInstanceId) {
127         AAIResourceUri configurationURI = AAIUriFactory.createResourceUri(AAIObjectType.CONFIGURATION, configurationId);
128         AAIResourceUri serviceInstanceURI =
129                 AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstanceId);
130         injectionHelper.getAaiClient().connect(configurationURI, serviceInstanceURI);
131     }
132
133     /**
134      * A&AI call to add configuration relationship with service instance
135      *
136      * @param configurationId
137      * @param serviceInstanceId
138      * @param aaiLabel
139      */
140     public void connectConfigurationToServiceInstance(String configurationId, String serviceInstanceId,
141             AAIEdgeLabel aaiLabel) {
142         AAIResourceUri configurationURI = AAIUriFactory.createResourceUri(AAIObjectType.CONFIGURATION, configurationId);
143         AAIResourceUri serviceInstanceURI =
144                 AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstanceId);
145         injectionHelper.getAaiClient().connect(configurationURI, serviceInstanceURI, aaiLabel);
146     }
147
148     /**
149      * A&AI call to add configuration relationship with generic-vnf
150      *
151      * @param configurationId
152      * @param genericVnfId
153      */
154     public void connectConfigurationToGenericVnf(String configurationId, String genericVnfId) {
155         AAIResourceUri configurationURI = AAIUriFactory.createResourceUri(AAIObjectType.CONFIGURATION, configurationId);
156         AAIResourceUri genericVnfURI = AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, genericVnfId);
157         injectionHelper.getAaiClient().connect(configurationURI, genericVnfURI);
158     }
159
160     /**
161      * A&AI call to add configuration relationship with vpn-binding
162      *
163      * @param configurationId
164      * @param vpnId
165      *
166      */
167     public void connectConfigurationToVpnBinding(String configurationId, String vpnId) {
168         AAIResourceUri configurationURI = AAIUriFactory.createResourceUri(AAIObjectType.CONFIGURATION, configurationId);
169         AAIResourceUri vpnBindingURI = AAIUriFactory.createResourceUri(AAIObjectType.VPN_BINDING, vpnId);
170         injectionHelper.getAaiClient().connect(configurationURI, vpnBindingURI);
171     }
172
173     public void connectConfigurationToVfModule(String configurationId, String vnfId, String vfModuleId) {
174         AAIResourceUri configurationURI = AAIUriFactory.createResourceUri(AAIObjectType.CONFIGURATION, configurationId);
175         AAIResourceUri vfModuleURI = AAIUriFactory.createResourceUri(AAIObjectType.VF_MODULE, vnfId, vfModuleId);
176         injectionHelper.getAaiClient().connect(configurationURI, vfModuleURI);
177     }
178
179     public void connectConfigurationToVnfc(String configurationId, String vnfcName) {
180         AAIResourceUri configurationURI = AAIUriFactory.createResourceUri(AAIObjectType.CONFIGURATION, configurationId);
181         AAIResourceUri vnfcURI = AAIUriFactory.createResourceUri(AAIObjectType.VNFC, vnfcName);
182         injectionHelper.getAaiClient().connect(configurationURI, vnfcURI);
183     }
184
185     public void connectConfigurationToL3Network(String configurationId, String networkId) {
186         AAIResourceUri configurationURI = AAIUriFactory.createResourceUri(AAIObjectType.CONFIGURATION, configurationId);
187         AAIResourceUri networkURI = AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, networkId);
188         injectionHelper.getAaiClient().connect(configurationURI, networkURI);
189     }
190
191     /**
192      * method to delete Configuration details in A&AI
193      *
194      * @param configurationId
195      */
196     public void deleteConfiguration(String configurationId) {
197         AAIResourceUri aaiResourceUri = AAIUriFactory.createResourceUri(AAIObjectType.CONFIGURATION, configurationId);
198         injectionHelper.getAaiClient().delete(aaiResourceUri);
199     }
200
201     /**
202      * method to delete Configuration details in A&AI
203      *
204      * @param configuration
205      */
206     public void deleteConfiguration(Configuration configuration) {
207         AAIResourceUri aaiResourceUri =
208                 AAIUriFactory.createResourceUri(AAIObjectType.CONFIGURATION, configuration.getConfigurationId());
209         injectionHelper.getAaiClient().delete(aaiResourceUri);
210     }
211
212     /**
213      * Get Configuration from AAI using related Link
214      * 
215      * @param relatedLink related link - URI
216      * @return AAI Configuration object
217      */
218     public Optional<org.onap.aai.domain.yang.Configuration> getConfigurationFromRelatedLink(String relatedLink) {
219         return injectionHelper.getAaiClient().get(org.onap.aai.domain.yang.Configuration.class, AAIUriFactory
220                 .createResourceFromExistingURI(AAIObjectType.CONFIGURATION, UriBuilder.fromPath(relatedLink).build()));
221     }
222
223     public void updateOrchestrationStatusConfiguration(Configuration configuration,
224             OrchestrationStatus orchestrationStatus) {
225         AAIResourceUri aaiResourceUri =
226                 AAIUriFactory.createResourceUri(AAIObjectType.CONFIGURATION, configuration.getConfigurationId());
227         configuration.setOrchestrationStatus(orchestrationStatus);
228         org.onap.aai.domain.yang.Configuration aaiConfiguration = aaiObjectMapper.mapConfiguration(configuration);
229         injectionHelper.getAaiClient().update(aaiResourceUri, aaiConfiguration);
230     }
231 }