X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=sdnc-a1-controller%2Fnorthbound%2Fnonrt-ric-api%2Fprovider%2Fsrc%2Fmain%2Fjava%2Forg%2Fo_ran_sc%2Fnonrtric%2Fsdnc_a1%2Fnorthbound%2Fprovider%2FNonrtRicApiProvider.java;h=cf7ea35ecce0ec2d341ca677aa79bc766124052d;hb=7757d0392fb23cc807567431aa433a5c6736d02a;hp=ac9181bf9a0a0bd9ccd8687de9553fe4c037178b;hpb=3134679dec4f273afbb768c8ff71a5f50f5a6a4c;p=nonrtric.git diff --git a/sdnc-a1-controller/northbound/nonrt-ric-api/provider/src/main/java/org/o_ran_sc/nonrtric/sdnc_a1/northbound/provider/NonrtRicApiProvider.java b/sdnc-a1-controller/northbound/nonrt-ric-api/provider/src/main/java/org/o_ran_sc/nonrtric/sdnc_a1/northbound/provider/NonrtRicApiProvider.java index ac9181bf..cf7ea35e 100644 --- a/sdnc-a1-controller/northbound/nonrt-ric-api/provider/src/main/java/org/o_ran_sc/nonrtric/sdnc_a1/northbound/provider/NonrtRicApiProvider.java +++ b/sdnc-a1-controller/northbound/nonrt-ric-api/provider/src/main/java/org/o_ran_sc/nonrtric/sdnc_a1/northbound/provider/NonrtRicApiProvider.java @@ -20,19 +20,14 @@ package org.o_ran_sc.nonrtric.sdnc_a1.northbound.provider; -import com.google.common.util.concurrent.CheckedFuture; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; -import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import org.o_ran_sc.nonrtric.sdnc_a1.northbound.restadapter.RestAdapter; import org.o_ran_sc.nonrtric.sdnc_a1.northbound.restadapter.RestAdapterImpl; import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.binding.api.NotificationPublishService; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; -import org.opendaylight.controller.sal.binding.api.BindingAwareBroker; import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry; import org.opendaylight.yang.gen.v1.org.o_ran_sc.nonrtric.sdnc_a1.northbound.a1.adapter.rev200122.A1ADAPTERAPIService; import org.opendaylight.yang.gen.v1.org.o_ran_sc.nonrtric.sdnc_a1.northbound.a1.adapter.rev200122.DeleteA1PolicyInput; @@ -57,6 +52,7 @@ import org.opendaylight.yangtools.yang.common.RpcResultBuilder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.ResponseEntity; +import org.springframework.web.client.RestClientResponseException; /** * Defines a base implementation for your provider. This class overrides the @@ -77,6 +73,7 @@ public class NonrtRicApiProvider implements AutoCloseable, A1ADAPTERAPIService { protected static final String NO_SERVICE_LOGIC_ACTIVE = "No service logic active for "; private static final String NON_NULL_PARAM = "non-null"; private static final String NULL_PARAM = "null"; + private static final String REST_CLIENT_RESPONSE_EXCEPTION_MSG = "Caught RestClientResponseException: {}"; private final Logger log = LoggerFactory.getLogger(NonrtRicApiProvider.class); private final ExecutorService executor; @@ -84,7 +81,6 @@ public class NonrtRicApiProvider implements AutoCloseable, A1ADAPTERAPIService { protected DataBroker dataBroker; protected NotificationPublishService notificationService; protected RpcProviderRegistry rpcRegistry; - protected BindingAwareBroker.RpcRegistration rpcRegistration; private RestAdapter restAdapter; public NonrtRicApiProvider(DataBroker dataBroker, NotificationPublishService notificationPublishService, @@ -95,25 +91,18 @@ public class NonrtRicApiProvider implements AutoCloseable, A1ADAPTERAPIService { setNotificationService(notificationPublishService); setRpcRegistry(rpcProviderRegistry); initialize(); - } public void initialize() { log.info("Initializing provider for {}", APP_NAME); - createContainers(); restAdapter = new RestAdapterImpl(); log.info("Initialization complete for {}", APP_NAME); } - protected void initializeChild() { - // Override if you have custom initialization intelligence - } - @Override public void close() throws Exception { log.info("Closing provider for {}", APP_NAME); executor.shutdown(); - rpcRegistration.close(); log.info("Successfully closed provider for {}", APP_NAME); } @@ -138,69 +127,83 @@ public class NonrtRicApiProvider implements AutoCloseable, A1ADAPTERAPIService { } } - private void createContainers() { - - final WriteTransaction t = dataBroker.newReadWriteTransaction(); - - try { - CheckedFuture checkedFuture = t.submit(); - checkedFuture.get(); - log.info("Create containers succeeded!"); - - } catch (InterruptedException | ExecutionException e) { - log.error("Create containers failed: ", e); - Thread.currentThread().interrupt(); - } - } - @Override public ListenableFuture> putA1Policy(PutA1PolicyInput input) { log.info("Start of putPolicy"); - final Uri uri = input.getNearRtRicUrl(); - - log.info("PUT Request input.GetA1Policy() : {} ", uri); - ResponseEntity response = restAdapter.put(uri.getValue(), input.getBody(), String.class); - PutA1PolicyOutputBuilder responseBuilder = new PutA1PolicyOutputBuilder(); - if (response.hasBody()) { - log.info("Response PutA1Policy : {} ", response.getBody()); - responseBuilder.setBody(response.getBody()); + PutA1PolicyOutputBuilder putPolicyResponseBuilder = new PutA1PolicyOutputBuilder(); + + try { + final Uri uri = input.getNearRtRicUrl(); + log.info("PUT Request input.GetA1Policy() : {} ", uri); + ResponseEntity putPolicyResponse = restAdapter.put(uri.getValue(), input.getBody(), String.class); + if (putPolicyResponse.hasBody()) { + log.info("Response PutA1Policy : {} ", putPolicyResponse.getBody()); + putPolicyResponseBuilder.setBody(putPolicyResponse.getBody()); + } + putPolicyResponseBuilder.setHttpStatus(putPolicyResponse.getStatusCodeValue()); + } catch (RestClientResponseException ex) { + log.error(REST_CLIENT_RESPONSE_EXCEPTION_MSG, ex.getMessage()); + if (ex.getResponseBodyAsByteArray() != null) { + putPolicyResponseBuilder.setBody(ex.getResponseBodyAsString()); + } + putPolicyResponseBuilder.setHttpStatus(ex.getRawStatusCode()); } - responseBuilder.setHttpStatus(response.getStatusCodeValue()); + log.info("End of PutA1Policy"); RpcResult rpcResult = RpcResultBuilder.status(true) - .withResult(responseBuilder.build()).build(); + .withResult(putPolicyResponseBuilder.build()).build(); return Futures.immediateFuture(rpcResult); } @Override public ListenableFuture> deleteA1Policy(DeleteA1PolicyInput input) { log.info("Start of DeleteA1Policy"); - final Uri uri = input.getNearRtRicUrl(); - ResponseEntity response = restAdapter.delete(uri.getValue()); - log.info("End of DeleteA1Policy"); - DeleteA1PolicyOutputBuilder responseBuilder = new DeleteA1PolicyOutputBuilder(); - if (response.hasBody()) { - log.info("Response PutA1Policy : {} ", response.getBody()); - responseBuilder.setBody(response.getBody().toString()); + DeleteA1PolicyOutputBuilder deletePolicyResponseBuilder = new DeleteA1PolicyOutputBuilder(); + + try { + final Uri uri = input.getNearRtRicUrl(); + ResponseEntity deletePolicyResponse = restAdapter.delete(uri.getValue()); + if (deletePolicyResponse.hasBody()) { + log.info("Response DeleteA1Policy : {} ", deletePolicyResponse.getBody()); + deletePolicyResponseBuilder.setBody(deletePolicyResponse.getBody().toString()); + } + deletePolicyResponseBuilder.setHttpStatus(deletePolicyResponse.getStatusCodeValue()); + } catch (RestClientResponseException ex) { + log.error(REST_CLIENT_RESPONSE_EXCEPTION_MSG, ex.getMessage()); + if (ex.getResponseBodyAsByteArray() != null) { + deletePolicyResponseBuilder.setBody(ex.getResponseBodyAsString()); + } + deletePolicyResponseBuilder.setHttpStatus(ex.getRawStatusCode()); } - responseBuilder.setHttpStatus(response.getStatusCodeValue()); + + log.info("End of DeleteA1Policy"); RpcResult rpcResult = RpcResultBuilder.status(true) - .withResult(responseBuilder.build()).build(); + .withResult(deletePolicyResponseBuilder.build()).build(); return Futures.immediateFuture(rpcResult); } - private GetA1PolicyOutput getA1(GetA1PolicyInput input) { + protected GetA1PolicyOutput getA1(GetA1PolicyInput input) { log.info("Start of getA1"); - final Uri uri = input.getNearRtRicUrl(); - ResponseEntity response = restAdapter.get(uri.getValue(), String.class); - log.info("End of getA1"); - GetA1PolicyOutputBuilder responseBuilder = new GetA1PolicyOutputBuilder(); - if (response.hasBody()) { - log.info("Response getA1 : {} ", response.getBody()); - responseBuilder.setBody(response.getBody()); + GetA1PolicyOutputBuilder getPolicyResponseBuilder = new GetA1PolicyOutputBuilder(); + + try { + final Uri uri = input.getNearRtRicUrl(); + ResponseEntity getPolicyResponse = restAdapter.get(uri.getValue(), String.class); + if (getPolicyResponse.hasBody()) { + log.info("Response getA1 : {} ", getPolicyResponse.getBody()); + getPolicyResponseBuilder.setBody(getPolicyResponse.getBody()); + } + getPolicyResponseBuilder.setHttpStatus(getPolicyResponse.getStatusCodeValue()); + } catch (RestClientResponseException ex) { + log.error(REST_CLIENT_RESPONSE_EXCEPTION_MSG, ex.getMessage()); + if (ex.getResponseBodyAsByteArray() != null) { + getPolicyResponseBuilder.setBody(ex.getResponseBodyAsString()); + } + getPolicyResponseBuilder.setHttpStatus(ex.getRawStatusCode()); } - responseBuilder.setHttpStatus(response.getStatusCodeValue()); - return responseBuilder.build(); + + log.info("End of getA1"); + return getPolicyResponseBuilder.build(); } @Override @@ -213,31 +216,31 @@ public class NonrtRicApiProvider implements AutoCloseable, A1ADAPTERAPIService { @Override public ListenableFuture> getA1PolicyStatus(GetA1PolicyStatusInput input) { - GetA1PolicyInputBuilder getInputBuilder = new GetA1PolicyInputBuilder(); - getInputBuilder.setNearRtRicUrl(input.getNearRtRicUrl()); - GetA1PolicyOutput getOutput = getA1(getInputBuilder.build()); + GetA1PolicyInputBuilder getPolicyStatusInputBuilder = new GetA1PolicyInputBuilder(); + getPolicyStatusInputBuilder.setNearRtRicUrl(input.getNearRtRicUrl()); + GetA1PolicyOutput getOutput = getA1(getPolicyStatusInputBuilder.build()); - GetA1PolicyStatusOutputBuilder outputBuilder = new GetA1PolicyStatusOutputBuilder(); - outputBuilder.setBody(getOutput.getBody()); - outputBuilder.setHttpStatus(getOutput.getHttpStatus()); + GetA1PolicyStatusOutputBuilder getPolicyStatusoutputBuilder = new GetA1PolicyStatusOutputBuilder(); + getPolicyStatusoutputBuilder.setBody(getOutput.getBody()); + getPolicyStatusoutputBuilder.setHttpStatus(getOutput.getHttpStatus()); return Futures.immediateFuture(RpcResultBuilder.status(true) // - .withResult(outputBuilder.build()) // + .withResult(getPolicyStatusoutputBuilder.build()) // .build()); } @Override public ListenableFuture> getA1PolicyType(GetA1PolicyTypeInput input) { - GetA1PolicyInputBuilder getInputBuilder = new GetA1PolicyInputBuilder(); - getInputBuilder.setNearRtRicUrl(input.getNearRtRicUrl()); - GetA1PolicyOutput getOutput = getA1(getInputBuilder.build()); + GetA1PolicyInputBuilder getPolicyTypeInputBuilder = new GetA1PolicyInputBuilder(); + getPolicyTypeInputBuilder.setNearRtRicUrl(input.getNearRtRicUrl()); + GetA1PolicyOutput getOutput = getA1(getPolicyTypeInputBuilder.build()); - GetA1PolicyTypeOutputBuilder outputBuilder = new GetA1PolicyTypeOutputBuilder(); - outputBuilder.setBody(getOutput.getBody()); - outputBuilder.setHttpStatus(getOutput.getHttpStatus()); + GetA1PolicyTypeOutputBuilder getPolicyTypeOutputBuilder = new GetA1PolicyTypeOutputBuilder(); + getPolicyTypeOutputBuilder.setBody(getOutput.getBody()); + getPolicyTypeOutputBuilder.setHttpStatus(getOutput.getHttpStatus()); return Futures.immediateFuture(RpcResultBuilder.status(true) // - .withResult(outputBuilder.build()) // + .withResult(getPolicyTypeOutputBuilder.build()) // .build()); }