4e3d8736c21db533dcbf40e731c6c9dfefbf3e8f
[so.git] /
1 package org.onap.so.apihandlerinfra.infra.rest;
2
3 import java.util.Optional;
4 import org.onap.aai.domain.yang.GenericVnf;
5 import org.onap.aai.domain.yang.L3Network;
6 import org.onap.aai.domain.yang.Service;
7 import org.onap.aai.domain.yang.ServiceInstance;
8 import org.onap.aai.domain.yang.Tenant;
9 import org.onap.aai.domain.yang.VfModule;
10 import org.onap.aai.domain.yang.VolumeGroup;
11 import org.onap.so.apihandlerinfra.infra.rest.exception.AAIEntityNotFound;
12 import org.onap.so.client.aai.AAIObjectPlurals;
13 import org.onap.so.client.aai.AAIObjectType;
14 import org.onap.so.client.aai.AAIResourcesClient;
15 import org.onap.so.client.aai.entities.AAIResultWrapper;
16 import org.onap.so.client.aai.entities.uri.AAIUriFactory;
17 import org.slf4j.Logger;
18 import org.slf4j.LoggerFactory;
19 import org.springframework.stereotype.Component;
20
21 @Component
22 public class AAIDataRetrieval {
23
24     private static final String VF_MODULE_NOT_FOUND_IN_INVENTORY_VNF_ID = "VF Module Not Found In Inventory, VnfId: ";
25
26     private AAIResourcesClient aaiResourcesClient;
27
28     private static final Logger logger = LoggerFactory.getLogger(AAIDataRetrieval.class);
29
30     public ServiceInstance getServiceInstance(String serviceInstanceId) {
31         return this.getAaiResourcesClient()
32                 .get(ServiceInstance.class,
33                         AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstanceId))
34                 .orElseGet(() -> {
35                     logger.debug("No Service Instance found in A&AI ServiceInstanceId: {}", serviceInstanceId);
36                     return null;
37                 });
38     }
39
40     public VfModule getAAIVfModule(String vnfId, String vfModuleId) {
41         return this.getAaiResourcesClient()
42                 .get(VfModule.class, AAIUriFactory.createResourceUri(AAIObjectType.VF_MODULE, vnfId, vfModuleId))
43                 .orElseGet(() -> {
44                     logger.debug("No Vf Module found in A&AI VnfId: {}" + ", VfModuleId: {}", vnfId, vfModuleId);
45                     return null;
46                 });
47     }
48
49     public GenericVnf getGenericVnf(String vnfId) {
50         return this.getAaiResourcesClient()
51                 .get(GenericVnf.class, AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId))
52                 .orElseGet(() -> {
53                     logger.debug("No Generic VNF found in A&AI VnfId: {}", vnfId);
54                     return null;
55                 });
56     }
57
58     public VolumeGroup getVolumeGroup(String vnfId, String volumeGroupId) throws AAIEntityNotFound {
59         AAIResultWrapper wrapper =
60                 this.getAaiResourcesClient().get(AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId)
61                         .relatedTo(AAIObjectType.VOLUME_GROUP, volumeGroupId));
62         Optional<VolumeGroup> volume = wrapper.asBean(VolumeGroup.class);
63         if (volume.isPresent()) {
64             return volume.get();
65         } else {
66             logger.debug("No VolumeGroup in A&AI found: {}", vnfId);
67             return null;
68         }
69     }
70
71     public L3Network getNetwork(String networkId) {
72         return this.getAaiResourcesClient()
73                 .get(L3Network.class, AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, networkId))
74                 .orElseGet(() -> {
75                     logger.debug("No Network found in A&AI NetworkId: {}", networkId);
76                     return null;
77                 });
78     }
79
80
81     public boolean isVolumeGroupRelatedToVFModule(String volumeGroupId) {
82         return this.getAaiResourcesClient().exists(AAIUriFactory
83                 .createResourceUri(AAIObjectType.VOLUME_GROUP, volumeGroupId).relatedTo(AAIObjectPlurals.VF_MODULE));
84     }
85
86     public boolean isVnfRelatedToVolumes(String vnfId) {
87         return this.getAaiResourcesClient().exists(AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId)
88                 .relatedTo(AAIObjectPlurals.VOLUME_GROUP));
89     }
90
91     public boolean isNetworkRelatedToModules(String networkId) {
92         return this.getAaiResourcesClient().exists(AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, networkId)
93                 .relatedTo(AAIObjectPlurals.VF_MODULE));
94     }
95
96     public boolean isServiceRelatedToNetworks(String serviceInstanceId) {
97         return this.getAaiResourcesClient()
98                 .exists(AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstanceId)
99                         .relatedTo(AAIObjectPlurals.L3_NETWORK));
100     }
101
102     public boolean isServiceRelatedToGenericVnf(String serviceInstanceId) {
103         return this.getAaiResourcesClient()
104                 .exists(AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstanceId)
105                         .relatedTo(AAIObjectPlurals.GENERIC_VNF));
106     }
107
108     public boolean isServiceRelatedToConfiguration(String serviceInstanceId) {
109         return this.getAaiResourcesClient()
110                 .exists(AAIUriFactory.createResourceUri(AAIObjectType.SERVICE_INSTANCE, serviceInstanceId)
111                         .relatedTo(AAIObjectPlurals.CONFIGURATION));
112     }
113
114     public Service getService(String serviceId) {
115         return this.getAaiResourcesClient()
116                 .get(Service.class, AAIUriFactory.createResourceUri(AAIObjectType.SERVICE, serviceId)).orElseGet(() -> {
117                     logger.debug("No Service found in A&AI ServiceId: {}", serviceId);
118                     return null;
119                 });
120     }
121
122     public Tenant getTenant(String cloudOwner, String cloudRegion, String tenantId) {
123         return this.getAaiResourcesClient()
124                 .get(Tenant.class,
125                         AAIUriFactory.createResourceUri(AAIObjectType.TENANT, cloudOwner, cloudRegion, tenantId))
126                 .orElseGet(() -> {
127                     logger.debug("No Tenant found in A&AI TenantId: {}", tenantId);
128                     return null;
129                 });
130     }
131
132     protected AAIResourcesClient getAaiResourcesClient() {
133         if (aaiResourcesClient == null) {
134             aaiResourcesClient = new AAIResourcesClient();
135         }
136         return aaiResourcesClient;
137     }
138
139 }