X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=policy-agent%2Fsrc%2Fmain%2Fjava%2Forg%2Foransc%2Fpolicyagent%2Fclients%2FSdncOscA1Client.java;h=79a2a5ef45ae2374dd6520fa78dfcfb21d2a859b;hb=19d9a443acc89baf4de4213b02f3233f0e62ad18;hp=2daa4d6821f95bf289f984c521f79594a85baf16;hpb=73a8d2b71f8b683865d96ad78576d0f7ab654ba6;p=nonrtric.git diff --git a/policy-agent/src/main/java/org/oransc/policyagent/clients/SdncOscA1Client.java b/policy-agent/src/main/java/org/oransc/policyagent/clients/SdncOscA1Client.java index 2daa4d68..79a2a5ef 100644 --- a/policy-agent/src/main/java/org/oransc/policyagent/clients/SdncOscA1Client.java +++ b/policy-agent/src/main/java/org/oransc/policyagent/clients/SdncOscA1Client.java @@ -33,6 +33,7 @@ import org.immutables.value.Value; import org.json.JSONObject; import org.oransc.policyagent.configuration.ControllerConfig; import org.oransc.policyagent.configuration.RicConfig; +import org.oransc.policyagent.configuration.WebClientConfig; import org.oransc.policyagent.repository.Policy; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -78,23 +79,40 @@ public class SdncOscA1Client implements A1Client { private final A1ProtocolType protocolType; /** - * Constructor - * - * @param protocolType the southbound protocol of the controller. Supported - * protocols are SDNC_OSC_STD_V1_1 and SDNC_OSC_OSC_V1 - * @param ricConfig - * @param controllerBaseUrl the base URL of the SDNC controller - * @param username username to accesss the SDNC controller - * @param password password to accesss the SDNC controller + * Constructor that creates the REST client to use. + * + * @param protocolType the southbound protocol of the controller. Supported protocols are SDNC_OSC_STD_V1_1 and + * SDNC_OSC_OSC_V1 + * @param ricConfig the configuration of the Ric to communicate with + * @param controllerConfig the configuration of the SDNC controller to use + * + * @throws IllegalArgumentException when the protocolType is wrong. */ - public SdncOscA1Client(A1ProtocolType protocolType, RicConfig ricConfig, ControllerConfig controllerConfig) { + public SdncOscA1Client(A1ProtocolType protocolType, RicConfig ricConfig, ControllerConfig controllerConfig, + WebClientConfig clientConfig) { this(protocolType, ricConfig, controllerConfig, - new AsyncRestClient(controllerConfig.baseUrl() + "/restconf/operations")); + new AsyncRestClient(controllerConfig.baseUrl() + "/restconf/operations", clientConfig)); logger.debug("SdncOscA1Client for ric: {}, a1Controller: {}", ricConfig.name(), controllerConfig); } + /** + * Constructor where the REST client to use is provided. + * + * @param protocolType the southbound protocol of the controller. Supported protocols are SDNC_OSC_STD_V1_1 and + * SDNC_OSC_OSC_V1 + * @param ricConfig the configuration of the Ric to communicate with + * @param controllerConfig the configuration of the SDNC controller to use + * @param restClient the REST client to use + * + * @throws IllegalArgumentException when the protocolType is wrong. + */ public SdncOscA1Client(A1ProtocolType protocolType, RicConfig ricConfig, ControllerConfig controllerConfig, AsyncRestClient restClient) { + if (!(A1ProtocolType.SDNC_OSC_STD_V1_1.equals(protocolType) + || A1ProtocolType.SDNC_OSC_OSC_V1.equals(protocolType))) { + throw new IllegalArgumentException("Protocol type must be " + A1ProtocolType.SDNC_OSC_STD_V1_1 + " or " + + A1ProtocolType.SDNC_OSC_OSC_V1 + ", was: " + protocolType); + } this.restClient = restClient; this.ricConfig = ricConfig; this.protocolType = protocolType; @@ -105,22 +123,16 @@ public class SdncOscA1Client implements A1Client { public Mono> getPolicyTypeIdentities() { if (this.protocolType == A1ProtocolType.SDNC_OSC_STD_V1_1) { return Mono.just(Arrays.asList("")); - } else if (this.protocolType == A1ProtocolType.SDNC_OSC_OSC_V1) { + } else { OscA1Client.UriBuilder uri = new OscA1Client.UriBuilder(ricConfig); final String ricUrl = uri.createPolicyTypesUri(); return post(GET_POLICY_RPC, ricUrl, Optional.empty()) // .flatMapMany(SdncJsonHelper::parseJsonArrayOfString) // .collectList(); - } else { - return Mono.error(createIllegalProtocolException()); } } - private Exception createIllegalProtocolException() { - return new NullPointerException("Bug, unhandeled protocoltype: " + this.protocolType); - } - @Override public Mono> getPolicyIdentities() { return getPolicyIds() // @@ -131,13 +143,11 @@ public class SdncOscA1Client implements A1Client { public Mono getPolicyTypeSchema(String policyTypeId) { if (this.protocolType == A1ProtocolType.SDNC_OSC_STD_V1_1) { return Mono.just("{}"); - } else if (this.protocolType == A1ProtocolType.SDNC_OSC_OSC_V1) { + } else { OscA1Client.UriBuilder uri = new OscA1Client.UriBuilder(ricConfig); final String ricUrl = uri.createGetSchemaUri(policyTypeId); return post(GET_POLICY_RPC, ricUrl, Optional.empty()) // .flatMap(response -> OscA1Client.extractCreateSchema(response, policyTypeId)); - } else { - return Mono.error(createIllegalProtocolException()); } } @@ -160,13 +170,11 @@ public class SdncOscA1Client implements A1Client { if (this.protocolType == A1ProtocolType.SDNC_OSC_STD_V1_1) { return getPolicyIds() // .flatMap(policyId -> deletePolicyById("", policyId), CONCURRENCY_RIC); // - } else if (this.protocolType == A1ProtocolType.SDNC_OSC_OSC_V1) { + } else { OscA1Client.UriBuilder uriBuilder = new OscA1Client.UriBuilder(ricConfig); return getPolicyTypeIdentities() // .flatMapMany(Flux::fromIterable) // .flatMap(type -> oscDeleteInstancesForType(uriBuilder, type), CONCURRENCY_RIC); - } else { - return Flux.error(createIllegalProtocolException()); } } @@ -198,10 +206,8 @@ public class SdncOscA1Client implements A1Client { private Mono getUriBuilder() { if (protocolType == A1ProtocolType.SDNC_OSC_STD_V1_1) { return Mono.just(new StdA1ClientVersion1.UriBuilder(ricConfig)); - } else if (this.protocolType == A1ProtocolType.SDNC_OSC_OSC_V1) { - return Mono.just(new OscA1Client.UriBuilder(ricConfig)); } else { - return Mono.error(createIllegalProtocolException()); + return Mono.just(new OscA1Client.UriBuilder(ricConfig)); } } @@ -223,14 +229,12 @@ public class SdncOscA1Client implements A1Client { final String ricUrl = uri.createGetPolicyIdsUri(); return post(GET_POLICY_RPC, ricUrl, Optional.empty()) // .flatMapMany(SdncJsonHelper::parseJsonArrayOfString); - } else if (this.protocolType == A1ProtocolType.SDNC_OSC_OSC_V1) { + } else { OscA1Client.UriBuilder uri = new OscA1Client.UriBuilder(ricConfig); return getPolicyTypeIdentities() // .flatMapMany(Flux::fromIterable) .flatMap(type -> post(GET_POLICY_RPC, uri.createGetPolicyIdsUri(type), Optional.empty())) // .flatMap(SdncJsonHelper::parseJsonArrayOfString); - } else { - return Flux.error(createIllegalProtocolException()); } } @@ -265,10 +269,10 @@ public class SdncOscA1Client implements A1Client { } else { logger.debug("Error response: {} {}", output.httpStatus(), body); byte[] responseBodyBytes = body.getBytes(StandardCharsets.UTF_8); - WebClientResponseException e = new WebClientResponseException(output.httpStatus(), "statusText", null, - responseBodyBytes, StandardCharsets.UTF_8, null); + WebClientResponseException responseException = new WebClientResponseException(output.httpStatus(), + "statusText", null, responseBodyBytes, StandardCharsets.UTF_8, null); - return Mono.error(e); + return Mono.error(responseException); } }