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.onap.so.client.orchestration;
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;
52 public class AAINetworkResources {
55 private InjectionHelper injectionHelper;
58 private AAIObjectMapper aaiObjectMapper;
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);
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);
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,
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);
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,
99 public void deleteNetwork(L3Network network) {
100 AAIResourceUri networkURI = AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, network.getNetworkId());
101 injectionHelper.getAaiClient().delete(networkURI);
104 public Optional<VpnBinding> getVpnBinding(AAIResourceUri netBindingUri) {
105 return injectionHelper.getAaiClient().get(netBindingUri.depth(Depth.TWO)).asBean(VpnBinding.class);
108 public Optional<NetworkPolicy> getNetworkPolicy(AAIBaseResourceUri netPolicyUri) {
109 return injectionHelper.getAaiClient().get(netPolicyUri).asBean(NetworkPolicy.class);
112 public Optional<NetworkPolicies> getNetworkPolicies(AAIBaseResourceUri netPoliciesUri) {
113 return injectionHelper.getAaiClient().get(netPoliciesUri).asBean(NetworkPolicies.class);
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);
120 public Optional<RouteTableReference> getRouteTable(AAIResourceUri rTableUri) {
121 return injectionHelper.getAaiClient().get(rTableUri).asBean(RouteTableReference.class);
124 public Optional<org.onap.aai.domain.yang.L3Network> queryNetworkById(L3Network l3network) {
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);
131 public AAIResultWrapper queryNetworkWrapperById(L3Network l3network) {
133 AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, l3network.getNetworkId()).depth(Depth.ALL);
134 return injectionHelper.getAaiClient().get(uri);
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);
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);
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);
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);
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);
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);
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);
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);
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);
207 public void deleteCollection(Collection collection) {
208 AAIResourceUri collectionURI = AAIUriFactory.createResourceUri(AAIObjectType.COLLECTION, collection.getId());
209 injectionHelper.getAaiClient().delete(collectionURI);
212 public void deleteNetworkInstanceGroup(InstanceGroup instanceGroup) {
213 AAIResourceUri instanceGroupURI =
214 AAIUriFactory.createResourceUri(AAIObjectType.INSTANCE_GROUP, instanceGroup.getId());
215 injectionHelper.getAaiClient().delete(instanceGroupURI);
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);
225 public void deleteNetworkPolicy(String networkPolicyId) {
226 AAIResourceUri networkPolicyURI =
227 AAIUriFactory.createResourceUri(AAIObjectType.NETWORK_POLICY, networkPolicyId);
228 injectionHelper.getAaiClient().delete(networkPolicyURI);
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);