Expose delete instance AAI API 07/123407/2
authorGrzegorz Wielgosinski <g.wielgosins@samsung.com>
Fri, 20 Aug 2021 10:27:50 +0000 (12:27 +0200)
committerGrzegorz Wielgosinski <g.wielgosins@samsung.com>
Mon, 23 Aug 2021 13:44:29 +0000 (15:44 +0200)
Issue-ID: SO-3690

Signed-off-by: Grzegorz Wielgosinski <g.wielgosins@samsung.com>
Change-Id: If11540cf3419fb0f40af6951eb50b249d1c6faf4

so-cnf-adapter-application/src/main/java/org/onap/so/adapters/cnf/model/instantiation/AaiRequest.java [moved from so-cnf-adapter-application/src/main/java/org/onap/so/adapters/cnf/model/instantiation/AaiUpdateRequest.java with 96% similarity]
so-cnf-adapter-application/src/main/java/org/onap/so/adapters/cnf/rest/CnfAdapterRest.java
so-cnf-adapter-application/src/main/java/org/onap/so/adapters/cnf/service/aai/AaiIdGeneratorService.java
so-cnf-adapter-application/src/main/java/org/onap/so/adapters/cnf/service/aai/AaiService.java

@@ -6,7 +6,7 @@ import com.fasterxml.jackson.annotation.JsonProperty;
 
 @JsonInclude(JsonInclude.Include.NON_NULL)
 @JsonIgnoreProperties(value = "true")
-public class AaiUpdateRequest {
+public class AaiRequest {
 
     @JsonProperty("instanceId")
     private String instanceId;
@@ -61,7 +61,7 @@ public class AaiUpdateRequest {
 
     @Override
     public String toString() {
-        return "AaiUpdateRequest{" +
+        return "AaiRequest{" +
                 "instanceId='" + instanceId + '\'' +
                 ", cloudRegion='" + cloudRegion + '\'' +
                 ", cloudOwner='" + cloudOwner + '\'' +
index 82025ef..488b384 100644 (file)
@@ -51,7 +51,7 @@ import org.onap.so.adapters.cnf.model.ResourceBundleEntity;
 import org.onap.so.adapters.cnf.model.Tag;
 import org.onap.so.adapters.cnf.model.aai.AaiCallbackResponse;
 import org.onap.so.adapters.cnf.model.healthcheck.HealthCheckResponse;
-import org.onap.so.adapters.cnf.model.instantiation.AaiUpdateRequest;
+import org.onap.so.adapters.cnf.model.instantiation.AaiRequest;
 import org.onap.so.adapters.cnf.model.statuscheck.StatusCheckResponse;
 import org.onap.so.adapters.cnf.service.CnfAdapterService;
 import org.onap.so.adapters.cnf.service.aai.AaiService;
@@ -127,16 +127,36 @@ public class CnfAdapterRest {
     @ResponseBody
     @RequestMapping(value = {"/api/cnf-adapter/v1/aai-update/"}, method = RequestMethod.POST,
             produces = "application/json")
-    public DeferredResult<ResponseEntity> aaiUpdate(@RequestBody AaiUpdateRequest aaiUpdateRequest) {
+    public DeferredResult<ResponseEntity> aaiUpdate(@RequestBody AaiRequest aaiRequest) {
         logger.info("aai-update called.");
         DeferredResult<ResponseEntity> response = new DeferredResult<>();
 
         ForkJoinPool.commonPool().submit(() -> {
             logger.info("Processing aai update");
-//            aaiService.aaiUpdate(aaiUpdateRequest);
+//            aaiService.aaiUpdate(aaiRequest);
             AaiCallbackResponse mockCallbackResponse = new AaiCallbackResponse();
             mockCallbackResponse.setCompletionStatus(AaiCallbackResponse.CompletionStatus.COMPLETED);
-            callbackClient.sendPostCallback(aaiUpdateRequest.getCallbackUrl(), mockCallbackResponse);
+            callbackClient.sendPostCallback(aaiRequest.getCallbackUrl(), mockCallbackResponse);
+            return response;
+        });
+
+        response.setResult(ResponseEntity.accepted().build());
+        return response;
+    }
+
+    @ResponseBody
+    @RequestMapping(value = {"/api/cnf-adapter/v1/aai-delete/"}, method = RequestMethod.POST,
+            produces = "application/json")
+    public DeferredResult<ResponseEntity> aaiDelete(@RequestBody AaiRequest aaiRequest) {
+        logger.info("aai-delete called.");
+        DeferredResult<ResponseEntity> response = new DeferredResult<>();
+
+        ForkJoinPool.commonPool().submit(() -> {
+            logger.info("Processing aai delete");
+//            aaiService.aaiDelete(aaiRequest);
+            AaiCallbackResponse mockCallbackResponse = new AaiCallbackResponse();
+            mockCallbackResponse.setCompletionStatus(AaiCallbackResponse.CompletionStatus.COMPLETED);
+            callbackClient.sendPostCallback(aaiRequest.getCallbackUrl(), mockCallbackResponse);
             return response;
         });
 
index 383a753..2e79b35 100644 (file)
@@ -1,7 +1,7 @@
 package org.onap.so.adapters.cnf.service.aai;
 
 import com.google.common.hash.Hashing;
-import org.onap.so.adapters.cnf.model.instantiation.AaiUpdateRequest;
+import org.onap.so.adapters.cnf.model.instantiation.AaiRequest;
 import org.onap.so.adapters.cnf.model.statuscheck.K8sRbInstanceGvk;
 import org.onap.so.adapters.cnf.model.statuscheck.K8sRbInstanceResourceStatus;
 import org.springframework.stereotype.Service;
@@ -11,11 +11,11 @@ import java.nio.charset.StandardCharsets;
 @Service
 class AaiIdGeneratorService {
 
-    String generateId(K8sRbInstanceResourceStatus resourceStatus, AaiUpdateRequest aaiUpdateRequest) {
+    String generateId(K8sRbInstanceResourceStatus resourceStatus, AaiRequest aaiRequest) {
         K8sRbInstanceGvk gvk = resourceStatus.getGvk();
         String originalString = resourceStatus.getName() + gvk.getKind() + gvk.getGroup() + gvk.getVersion() +
-                aaiUpdateRequest.getInstanceId() + aaiUpdateRequest.getCloudOwner() +
-                aaiUpdateRequest.getCloudRegion() + aaiUpdateRequest.getTenantId();
+                aaiRequest.getInstanceId() + aaiRequest.getCloudOwner() +
+                aaiRequest.getCloudRegion() + aaiRequest.getTenantId();
 
         return Hashing.sha256()
                 .hashString(originalString, StandardCharsets.UTF_8)
index bf9e64b..effecce 100644 (file)
@@ -1,13 +1,12 @@
 package org.onap.so.adapters.cnf.service.aai;
 
-import com.fasterxml.jackson.databind.ObjectMapper;
 import com.google.gson.Gson;
 import org.onap.aaiclient.client.aai.AAIResourcesClient;
 import org.onap.aaiclient.client.aai.entities.uri.AAIResourceUri;
 import org.onap.aaiclient.client.aai.entities.uri.AAIUriFactory;
 import org.onap.aaiclient.client.generated.fluentbuilders.AAIFluentTypeBuilder;
 import org.onap.so.adapters.cnf.client.MulticloudClient;
-import org.onap.so.adapters.cnf.model.instantiation.AaiUpdateRequest;
+import org.onap.so.adapters.cnf.model.instantiation.AaiRequest;
 import org.onap.so.adapters.cnf.model.statuscheck.K8sRbInstanceGvk;
 import org.onap.so.adapters.cnf.model.statuscheck.K8sRbInstanceResourceStatus;
 import org.onap.so.adapters.cnf.model.statuscheck.K8sRbInstanceStatus;
@@ -31,22 +30,42 @@ public class AaiService {
         this.aaiIdGeneratorService = aaiIdGeneratorService;
     }
 
-    public void aaiUpdate(AaiUpdateRequest aaiUpdateRequest) throws BadResponseException {
-        String instanceId = aaiUpdateRequest.getInstanceId();
+    public void aaiUpdate(AaiRequest aaiRequest) throws BadResponseException {
+        String instanceId = aaiRequest.getInstanceId();
         K8sRbInstanceStatus instanceStatus = multicloudClient.getInstanceStatus(instanceId);
 
         List<K8sRbInstanceResourceStatus> resourcesStatus = instanceStatus.getResourcesStatus();
         List<ParseResult> parsedStatus = resourcesStatus.stream()
-                .map(status -> parse(status, aaiUpdateRequest))
+                .map(status -> parse(status, aaiRequest))
                 .collect(Collectors.toList());
 
-        parsedStatus.forEach(status -> sendPostRequestToAai(status, aaiUpdateRequest));
+        parsedStatus.forEach(status -> sendUpdateRequestToAai(status, aaiRequest));
     }
 
-    private void sendPostRequestToAai(ParseResult parseResult, AaiUpdateRequest aaiUpdateRequest) {
+    public void aaiDelete(AaiRequest aaiRequest) throws BadResponseException {
+        String instanceId = aaiRequest.getInstanceId();
+        K8sRbInstanceStatus instanceStatus = multicloudClient.getInstanceStatus(instanceId);
+
+        List<K8sRbInstanceResourceStatus> resourcesStatus = instanceStatus.getResourcesStatus();
+        List<ParseResult> parsedStatus = resourcesStatus.stream()
+                .map(status -> parse(status, aaiRequest))
+                .collect(Collectors.toList());
+
+        parsedStatus.forEach(status -> sendDeleteRequestToAai(aaiRequest));
+    }
+
+    private void sendDeleteRequestToAai(AaiRequest aaiRequest) {
+        AAIResourceUri aaiUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure()
+                .cloudRegion(aaiRequest.getCloudOwner(), aaiRequest.getCloudRegion())
+                .tenant(aaiRequest.getTenantId())
+                .build());
+        getAaiClient().delete(aaiUri);
+    }
+
+    private void sendUpdateRequestToAai(ParseResult parseResult, AaiRequest aaiRequest) {
         AAIResourceUri aaiUri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.cloudInfrastructure()
-                .cloudRegion(aaiUpdateRequest.getCloudOwner(), aaiUpdateRequest.getCloudRegion())
-                .tenant(aaiUpdateRequest.getTenantId())
+                .cloudRegion(aaiRequest.getCloudOwner(), aaiRequest.getCloudRegion())
+                .tenant(aaiRequest.getTenantId())
                 .build());
         String payload = gson.toJson(parseResult);
         getAaiClient().create(aaiUri, payload);
@@ -59,11 +78,11 @@ public class AaiService {
         return aaiClient;
     }
 
-    private ParseResult parse(K8sRbInstanceResourceStatus status, AaiUpdateRequest aaiUpdateRequest) {
+    private ParseResult parse(K8sRbInstanceResourceStatus status, AaiRequest aaiRequest) {
         ParseResult result = new ParseResult();
         K8sRbInstanceGvk gvk = status.getGvk();
         K8sStatusMetadata metadata = status.getStatus().getK8sStatusMetadata();
-        String id = aaiIdGeneratorService.generateId(status, aaiUpdateRequest);
+        String id = aaiIdGeneratorService.generateId(status, aaiRequest);
         result.setId(id);
         result.setName(status.getName());
         result.setGroup(gvk.getGroup());
@@ -76,7 +95,7 @@ public class AaiService {
             labels.add(value);
         });
         result.setLabels(labels);
-        result.setK8sResourceSelfLink(String.format("http://so-cnf-adapter:8090/api/cnf-adapter/v1/instance/%s/query", aaiUpdateRequest.getInstanceId()));
+        result.setK8sResourceSelfLink(String.format("http://so-cnf-adapter:8090/api/cnf-adapter/v1/instance/%s/query", aaiRequest.getInstanceId()));
         return result;
     }