Fix issue of missing deleting NSSI from AAI for ExternalNssmfManager 67/114467/1
authorEnbo Wang <wangenbo@huawei.com>
Sat, 31 Oct 2020 15:51:18 +0000 (23:51 +0800)
committerEnbo Wang <wangenbo@huawei.com>
Sat, 31 Oct 2020 15:51:18 +0000 (23:51 +0800)
Issue-ID: SO-3341
Signed-off-by: Enbo Wang <wangenbo@huawei.com>
Change-Id: I5aa407e56a8a2588006e89d1db5a9f2b8fcad642

adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/extclients/aai/AaiServiceProvider.java
adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/extclients/aai/AaiServiceProviderImpl.java
adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/impl/ExternalNssmfManager.java
adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/manager/impl/external/ExternalAnNssmfManager.java
adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/util/RestUtil.java

index dacab3b..77662bf 100644 (file)
@@ -34,4 +34,6 @@ public interface AaiServiceProvider {
             String serviceInstanceId);
 
     ServiceInstance invokeGetServiceInstance(String globalSubscriberId, String serviceType, String serviceInstanceId);
+
+    void invokeDeleteServiceInstance(String globalSubscriberId, String serviceType, String serviceInstanceId);
 }
index 7cdeac4..1d7c42a 100644 (file)
@@ -87,4 +87,12 @@ public class AaiServiceProviderImpl implements AaiServiceProvider {
             return null;
         });
     }
+
+    @Override
+    public void invokeDeleteServiceInstance(String globalSubscriberId, String serviceType, String serviceInstanceId) {
+        AAIResourceUri uri = AAIUriFactory.createResourceUri(AAIFluentTypeBuilder.business()
+                .customer(globalSubscriberId).serviceSubscription(serviceType).serviceInstance(serviceInstanceId));
+
+        aaiClientProvider.getAaiClient().delete(uri);
+    }
 }
index 7a5b6a4..bb2b83f 100644 (file)
@@ -25,6 +25,7 @@ import org.apache.http.message.BasicHeader;
 import org.onap.aai.domain.yang.ServiceInstance;
 import org.onap.so.adapters.nssmf.entity.NssmfInfo;
 import org.onap.so.adapters.nssmf.entity.RestResponse;
+import org.onap.so.adapters.nssmf.enums.ActionType;
 import org.onap.so.adapters.nssmf.enums.JobStatus;
 import org.onap.so.adapters.nssmf.exceptions.ApplicationException;
 import org.onap.so.adapters.nssmf.util.NssmfAdapterUtil;
@@ -63,28 +64,32 @@ public abstract class ExternalNssmfManager extends BaseNssmfManager {
     protected void afterQueryJobStatus(ResourceOperationStatus status) {
         if (Integer.parseInt(status.getProgress()) == 100) {
 
-            ServiceInstance nssiInstance = restUtil.getServiceInstance(serviceInfo);
-            if (nssiInstance == null) {
-                nssiInstance = new ServiceInstance();
-            }
+            ActionType jobOperType = ActionType.valueOf(status.getOperType());
+
+            if (ActionType.ALLOCATE.equals(jobOperType)) {
+                ServiceInstance nssiInstance = restUtil.getServiceInstance(serviceInfo);
+                if (nssiInstance == null) {
+                    nssiInstance = new ServiceInstance();
+                }
 
-            nssiInstance.setServiceInstanceId(serviceInfo.getNssiId());
-            nssiInstance.setServiceInstanceName(serviceInfo.getNssiName());
-            nssiInstance.setServiceType(serviceInfo.getSST());
+                nssiInstance.setServiceInstanceId(serviceInfo.getNssiId());
+                nssiInstance.setServiceInstanceName(serviceInfo.getNssiName());
+                nssiInstance.setServiceType(serviceInfo.getSST());
 
-            nssiInstance.setOrchestrationStatus(initStatus);
-            nssiInstance.setModelInvariantId(serviceInfo.getServiceInvariantUuid());
-            nssiInstance.setModelVersionId(serviceInfo.getServiceUuid());
-            nssiInstance.setServiceInstanceLocationId(serviceInfo.getPLMNIdList());
-            nssiInstance.setEnvironmentContext(esrInfo.getNetworkType().getNetworkType());
-            nssiInstance.setServiceRole("nssi");
+                nssiInstance.setOrchestrationStatus(initStatus);
+                nssiInstance.setModelInvariantId(serviceInfo.getServiceInvariantUuid());
+                nssiInstance.setModelVersionId(serviceInfo.getServiceUuid());
+                nssiInstance.setServiceInstanceLocationId(serviceInfo.getPLMNIdList());
+                nssiInstance.setEnvironmentContext(esrInfo.getNetworkType().getNetworkType());
+                nssiInstance.setServiceRole("nssi");
 
-            restUtil.createServiceInstance(nssiInstance, serviceInfo);
+                restUtil.createServiceInstance(nssiInstance, serviceInfo);
+            } else if (ActionType.DEALLOCATE.equals(jobOperType)) {
+                restUtil.deleteServiceInstance(serviceInfo);
+            }
         }
     }
 
-
-
     @Override
     protected String wrapActDeActReqBody(ActDeActNssi actDeActNssi) throws ApplicationException {
         return marshal(actDeActNssi);
index eb2dba0..c51b72d 100644 (file)
@@ -76,6 +76,7 @@ public class ExternalAnNssmfManager extends ExternalNssmfManager {
             ResourceOperationStatus status =
                     new ResourceOperationStatus(serviceInfo.getNsiId(), resp.getJobId(), serviceInfo.getServiceUuid());
             status.setResourceInstanceID(nssiId);
+            status.setOperType(actionType.toString());
 
             updateDbStatus(status, restResponse.getStatus(), JobStatus.FINISHED,
                     NssmfAdapterUtil.getStatusDesc(actionType));
index 432cfac..a7adbe1 100644 (file)
@@ -82,6 +82,11 @@ public class RestUtil {
                 serviceInfo.getSubscriptionServiceType(), serviceInfo.getNssiId());
     }
 
+    public void deleteServiceInstance(ServiceInfo serviceInfo) {
+        aaiSvcProv.invokeDeleteServiceInstance(serviceInfo.getGlobalSubscriberId(),
+                serviceInfo.getSubscriptionServiceType(), serviceInfo.getNssiId());
+    }
+
     public NssmfInfo getNssmfHost(EsrInfo esrInfo) throws ApplicationException {
         EsrThirdpartySdncList sdncList = aaiSvcProv.invokeGetThirdPartySdncList();
         if (sdncList != null && sdncList.getEsrThirdpartySdnc() != null) {