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;
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
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;
protected DataBroker dataBroker;
protected NotificationPublishService notificationService;
protected RpcProviderRegistry rpcRegistry;
- protected BindingAwareBroker.RpcRegistration<?> rpcRegistration;
private RestAdapter restAdapter;
public NonrtRicApiProvider(DataBroker dataBroker, NotificationPublishService notificationPublishService,
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);
}
}
}
- private void createContainers() {
-
- final WriteTransaction t = dataBroker.newReadWriteTransaction();
-
- try {
- CheckedFuture<Void, TransactionCommitFailedException> 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<RpcResult<PutA1PolicyOutput>> putA1Policy(PutA1PolicyInput input) {
log.info("Start of putPolicy");
- final Uri uri = input.getNearRtRicUrl();
-
- log.info("PUT Request input.GetA1Policy() : {} ", uri);
- ResponseEntity<String> 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<String> 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<PutA1PolicyOutput> rpcResult = RpcResultBuilder.<PutA1PolicyOutput>status(true)
- .withResult(responseBuilder.build()).build();
+ .withResult(putPolicyResponseBuilder.build()).build();
return Futures.immediateFuture(rpcResult);
}
@Override
public ListenableFuture<RpcResult<DeleteA1PolicyOutput>> deleteA1Policy(DeleteA1PolicyInput input) {
log.info("Start of DeleteA1Policy");
- final Uri uri = input.getNearRtRicUrl();
- ResponseEntity<Object> 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<Object> 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<DeleteA1PolicyOutput> rpcResult = RpcResultBuilder.<DeleteA1PolicyOutput>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<String> 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<String> 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
@Override
public ListenableFuture<RpcResult<GetA1PolicyStatusOutput>> 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.<GetA1PolicyStatusOutput>status(true) //
- .withResult(outputBuilder.build()) //
+ .withResult(getPolicyStatusoutputBuilder.build()) //
.build());
}
@Override
public ListenableFuture<RpcResult<GetA1PolicyTypeOutput>> 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.<GetA1PolicyTypeOutput>status(true) //
- .withResult(outputBuilder.build()) //
+ .withResult(getPolicyTypeOutputBuilder.build()) //
.build());
}