Merge "Fight against the encoding in openstack"
[so.git] / bpmn / so-bpmn-tasks / src / main / java / org / onap / so / client / orchestration / AAINetworkResources.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 org.onap.aai.domain.yang.NetworkPolicies;
25 import org.onap.aai.domain.yang.NetworkPolicy;
26 import org.onap.aai.domain.yang.RouteTableReference;
27 import org.onap.aai.domain.yang.VpnBinding;
28 import org.onap.so.bpmn.common.InjectionHelper;
29 import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
30 import org.onap.so.bpmn.servicedecomposition.bbobjects.Collection;
31 import org.onap.so.bpmn.servicedecomposition.bbobjects.InstanceGroup;
32 import org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network;
33 import org.onap.so.bpmn.servicedecomposition.bbobjects.LineOfBusiness;
34 import org.onap.so.bpmn.servicedecomposition.bbobjects.Platform;
35 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
36 import org.onap.so.bpmn.servicedecomposition.bbobjects.Subnet;
37 import org.onap.aaiclient.client.aai.AAIObjectPlurals;
38 import org.onap.aaiclient.client.aai.AAIObjectType;
39 import org.onap.aaiclient.client.aai.entities.AAIEdgeLabel;
40 import org.onap.aaiclient.client.aai.entities.AAIResultWrapper;
41 import org.onap.aaiclient.client.aai.entities.uri.AAIBaseResourceUri;
42 import org.onap.aaiclient.client.aai.entities.uri.AAIPluralResourceUri;
43 import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri;
44 import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory;
45 import org.onap.so.client.aai.mapper.AAIObjectMapper;
46 import org.onap.aaiclient.client.graphinventory.entities.uri.Depth;
47 import org.onap.so.db.catalog.beans.OrchestrationStatus;
48 import org.springframework.beans.factory.annotation.Autowired;
49 import org.springframework.stereotype.Component;
50
51 @Component
52 public class AAINetworkResources {
53
54     @Autowired
55     private InjectionHelper injectionHelper;
56
57     @Autowired
58     private AAIObjectMapper aaiObjectMapper;
59
60     public void updateNetwork(L3Network network) {
61         AAIResourceUri networkURI = AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, network.getNetworkId());
62         org.onap.aai.domain.yang.L3Network aaiL3Network = aaiObjectMapper.mapNetwork(network);
63         injectionHelper.getAaiClient().update(networkURI, aaiL3Network);
64     }
65
66     public void updateSubnet(L3Network network, Subnet subnet) {
67         AAIResourceUri subnetURI =
68                 AAIUriFactory.createResourceUri(AAIObjectType.SUBNET, network.getNetworkId(), subnet.getSubnetId());
69         org.onap.aai.domain.yang.Subnet aaiSubnet = aaiObjectMapper.mapSubnet(subnet);
70         injectionHelper.getAaiClient().update(subnetURI, aaiSubnet);
71     }
72
73     public void createNetworkConnectToServiceInstance(L3Network network, ServiceInstance serviceInstance) {
74         AAIResourceUri networkURI = AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, network.getNetworkId());
75         network.setOrchestrationStatus(OrchestrationStatus.INVENTORIED);
76         AAIResourceUri serviceInstanceURI =
77                 AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstance.getServiceInstanceId());
78         org.onap.aai.domain.yang.L3Network aaiL3Network = aaiObjectMapper.mapNetwork(network);
79         injectionHelper.getAaiClient().createIfNotExists(networkURI, Optional.of(aaiL3Network)).connect(networkURI,
80                 serviceInstanceURI);
81     }
82
83     public void createLineOfBusinessAndConnectNetwork(LineOfBusiness lineOfBusiness, L3Network network) {
84         AAIResourceUri lineOfBusinessURI =
85                 AAIUriFactory.createResourceUri(AAIObjectType.LINE_OF_BUSINESS, lineOfBusiness.getLineOfBusinessName());
86         AAIResourceUri networkURI = AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, network.getNetworkId());
87         injectionHelper.getAaiClient().createIfNotExists(lineOfBusinessURI, Optional.of(lineOfBusiness))
88                 .connect(networkURI, lineOfBusinessURI);
89     }
90
91     public void createPlatformAndConnectNetwork(Platform platform, L3Network network) {
92         AAIResourceUri platformURI =
93                 AAIUriFactory.createResourceUri(AAIObjectType.PLATFORM, platform.getPlatformName());
94         AAIResourceUri networkURI = AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, network.getNetworkId());
95         injectionHelper.getAaiClient().createIfNotExists(platformURI, Optional.of(platform)).connect(networkURI,
96                 platformURI);
97     }
98
99     public void deleteNetwork(L3Network network) {
100         AAIResourceUri networkURI = AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, network.getNetworkId());
101         injectionHelper.getAaiClient().delete(networkURI);
102     }
103
104     public Optional<VpnBinding> getVpnBinding(AAIResourceUri netBindingUri) {
105         return injectionHelper.getAaiClient().get(netBindingUri.depth(Depth.TWO)).asBean(VpnBinding.class);
106     }
107
108     public Optional<NetworkPolicy> getNetworkPolicy(AAIBaseResourceUri netPolicyUri) {
109         return injectionHelper.getAaiClient().get(netPolicyUri).asBean(NetworkPolicy.class);
110     }
111
112     public Optional<NetworkPolicies> getNetworkPolicies(AAIBaseResourceUri netPoliciesUri) {
113         return injectionHelper.getAaiClient().get(netPoliciesUri).asBean(NetworkPolicies.class);
114     }
115
116     public Optional<org.onap.aai.domain.yang.Subnet> getSubnet(AAIResourceUri subnetUri) {
117         return injectionHelper.getAaiClient().get(subnetUri).asBean(org.onap.aai.domain.yang.Subnet.class);
118     }
119
120     public Optional<RouteTableReference> getRouteTable(AAIResourceUri rTableUri) {
121         return injectionHelper.getAaiClient().get(rTableUri).asBean(RouteTableReference.class);
122     }
123
124     public Optional<org.onap.aai.domain.yang.L3Network> queryNetworkById(L3Network l3network) {
125         AAIResourceUri uri =
126                 AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, l3network.getNetworkId()).depth(Depth.ALL);
127         AAIResultWrapper aaiWrapper = injectionHelper.getAaiClient().get(uri);
128         return aaiWrapper.asBean(org.onap.aai.domain.yang.L3Network.class);
129     }
130
131     public AAIResultWrapper queryNetworkWrapperById(L3Network l3network) {
132         AAIResourceUri uri =
133                 AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, l3network.getNetworkId()).depth(Depth.ALL);
134         return injectionHelper.getAaiClient().get(uri);
135     }
136
137     public void createNetworkInstanceGroup(InstanceGroup instanceGroup) {
138         AAIResourceUri instanceGroupURI =
139                 AAIUriFactory.createResourceUri(AAIObjectType.INSTANCE_GROUP, instanceGroup.getId());
140         org.onap.aai.domain.yang.InstanceGroup aaiInstanceGroup = aaiObjectMapper.mapInstanceGroup(instanceGroup);
141         injectionHelper.getAaiClient().create(instanceGroupURI, aaiInstanceGroup);
142     }
143
144     public void createNetworkCollection(Collection networkCollection) {
145         AAIResourceUri networkCollectionURI =
146                 AAIUriFactory.createResourceUri(AAIObjectType.COLLECTION, networkCollection.getId());
147         networkCollection.setOrchestrationStatus(OrchestrationStatus.INVENTORIED);
148         org.onap.aai.domain.yang.Collection aaiCollection = aaiObjectMapper.mapCollection(networkCollection);
149         injectionHelper.getAaiClient().create(networkCollectionURI, aaiCollection);
150     }
151
152     public void connectNetworkToTenant(L3Network l3network, CloudRegion cloudRegion) {
153         AAIResourceUri tenantURI = AAIUriFactory.createResourceUri(AAIObjectType.TENANT, cloudRegion.getCloudOwner(),
154                 cloudRegion.getLcpCloudRegionId(), cloudRegion.getTenantId());
155         AAIResourceUri networkURI = AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, l3network.getNetworkId());
156         injectionHelper.getAaiClient().connect(tenantURI, networkURI);
157     }
158
159     public void connectNetworkToCloudRegion(L3Network l3network, CloudRegion cloudRegion) {
160         AAIResourceUri cloudRegionURI = AAIUriFactory.createResourceUri(AAIObjectType.CLOUD_REGION,
161                 cloudRegion.getCloudOwner(), cloudRegion.getLcpCloudRegionId());
162         AAIResourceUri networkURI = AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, l3network.getNetworkId());
163         injectionHelper.getAaiClient().connect(networkURI, cloudRegionURI);
164     }
165
166     public void connectNetworkToNetworkCollectionInstanceGroup(L3Network l3network, InstanceGroup instanceGroup) {
167         AAIResourceUri netwrokCollectionInstanceGroupURI =
168                 AAIUriFactory.createResourceUri(AAIObjectType.INSTANCE_GROUP, instanceGroup.getId());
169         AAIResourceUri networkURI = AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, l3network.getNetworkId());
170         injectionHelper.getAaiClient().connect(netwrokCollectionInstanceGroupURI, networkURI);
171     }
172
173     public void connectNetworkToNetworkCollectionServiceInstance(L3Network l3network,
174             ServiceInstance networkCollectionServiceInstance) {
175         AAIResourceUri networkCollectionServiceInstanceUri = AAIUriFactory.createResourceUri(
176                 AAIObjectType.SERVICE_INSTANCE, networkCollectionServiceInstance.getServiceInstanceId());
177         AAIResourceUri networkURI = AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, l3network.getNetworkId());
178         injectionHelper.getAaiClient().connect(networkCollectionServiceInstanceUri, networkURI);
179     }
180
181     public void connectNetworkCollectionInstanceGroupToNetworkCollection(InstanceGroup instanceGroup,
182             Collection networkCollection) {
183         AAIResourceUri networkCollectionUri =
184                 AAIUriFactory.createResourceUri(AAIObjectType.COLLECTION, networkCollection.getId());
185         AAIResourceUri netwrokCollectionInstanceGroupURI =
186                 AAIUriFactory.createResourceUri(AAIObjectType.INSTANCE_GROUP, instanceGroup.getId());
187         injectionHelper.getAaiClient().connect(networkCollectionUri, netwrokCollectionInstanceGroupURI);
188     }
189
190     public void connectInstanceGroupToCloudRegion(InstanceGroup instanceGroup, CloudRegion cloudRegion) {
191         AAIResourceUri cloudRegionURI = AAIUriFactory.createResourceUri(AAIObjectType.CLOUD_REGION,
192                 cloudRegion.getCloudOwner(), cloudRegion.getLcpCloudRegionId());
193         AAIResourceUri instanceGroupURI =
194                 AAIUriFactory.createResourceUri(AAIObjectType.INSTANCE_GROUP, instanceGroup.getId());
195         injectionHelper.getAaiClient().connect(instanceGroupURI, cloudRegionURI, AAIEdgeLabel.USES);
196     }
197
198     public void connectNetworkCollectionToServiceInstance(Collection networkCollection,
199             ServiceInstance networkCollectionServiceInstance) {
200         AAIResourceUri networkCollectionUri =
201                 AAIUriFactory.createResourceUri(AAIObjectType.COLLECTION, networkCollection.getId());
202         AAIResourceUri networkCollectionServiceInstanceUri = AAIUriFactory.createResourceUri(
203                 AAIObjectType.SERVICE_INSTANCE, networkCollectionServiceInstance.getServiceInstanceId());
204         injectionHelper.getAaiClient().connect(networkCollectionUri, networkCollectionServiceInstanceUri);
205     }
206
207     public void deleteCollection(Collection collection) {
208         AAIResourceUri collectionURI = AAIUriFactory.createResourceUri(AAIObjectType.COLLECTION, collection.getId());
209         injectionHelper.getAaiClient().delete(collectionURI);
210     }
211
212     public void deleteNetworkInstanceGroup(InstanceGroup instanceGroup) {
213         AAIResourceUri instanceGroupURI =
214                 AAIUriFactory.createResourceUri(AAIObjectType.INSTANCE_GROUP, instanceGroup.getId());
215         injectionHelper.getAaiClient().delete(instanceGroupURI);
216     }
217
218     public void createNetworkPolicy(org.onap.so.bpmn.servicedecomposition.bbobjects.NetworkPolicy networkPolicy) {
219         NetworkPolicy aaiNetworkPolicy = aaiObjectMapper.mapNetworkPolicy(networkPolicy);
220         String networkPolicyId = networkPolicy.getNetworkPolicyId();
221         AAIResourceUri netUri = AAIUriFactory.createResourceUri(AAIObjectType.NETWORK_POLICY, networkPolicyId);
222         injectionHelper.getAaiClient().create(netUri, aaiNetworkPolicy);
223     }
224
225     public void deleteNetworkPolicy(String networkPolicyId) {
226         AAIResourceUri networkPolicyURI =
227                 AAIUriFactory.createResourceUri(AAIObjectType.NETWORK_POLICY, networkPolicyId);
228         injectionHelper.getAaiClient().delete(networkPolicyURI);
229     }
230
231     public boolean checkNetworkNameInUse(String networkName) {
232         AAIPluralResourceUri uri =
233                 AAIUriFactory.createResourceUri(AAIObjectPlurals.L3_NETWORK).queryParam("network-name", networkName);
234         return injectionHelper.getAaiClient().exists(uri);
235     }
236
237 }