X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=policy-agent%2Fsrc%2Fmain%2Fjava%2Forg%2Foransc%2Fpolicyagent%2Fclients%2FSdncOnapA1Client.java;h=37e030324d17cac76c3787cc532c5eb63839672b;hb=19d9a443acc89baf4de4213b02f3233f0e62ad18;hp=9b3bb71d3879a2fc1a8c017b5504b72ca69b3656;hpb=444d11bb9de7be056d7609c395f3ef191c3c1702;p=nonrtric.git diff --git a/policy-agent/src/main/java/org/oransc/policyagent/clients/SdncOnapA1Client.java b/policy-agent/src/main/java/org/oransc/policyagent/clients/SdncOnapA1Client.java index 9b3bb71d..37e03032 100644 --- a/policy-agent/src/main/java/org/oransc/policyagent/clients/SdncOnapA1Client.java +++ b/policy-agent/src/main/java/org/oransc/policyagent/clients/SdncOnapA1Client.java @@ -23,34 +23,57 @@ package org.oransc.policyagent.clients; import java.lang.invoke.MethodHandles; import java.util.ArrayList; import java.util.List; +import java.util.Optional; + +import org.immutables.gson.Gson; +import org.immutables.value.Value; +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; + import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; +/** + * Client for accessing the A1 adapter in the SDNC controller in ONAP + */ +@SuppressWarnings("squid:S2629") // Invoke method(s) only conditionally public class SdncOnapA1Client implements A1Client { + @Value.Immutable + @Gson.TypeAdapters + interface SdncOnapAdapterInput { + public String nearRtRicId(); + + public Optional policyTypeId(); + + public Optional policyInstanceId(); + + public Optional policyInstance(); + + public Optional> properties(); + } + private static final String URL_PREFIX = "/A1-ADAPTER-API:"; private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); - private final String a1ControllerUsername; - private final String a1ControllerPassword; + private final ControllerConfig controllerConfig; private final RicConfig ricConfig; private final AsyncRestClient restClient; - public SdncOnapA1Client(RicConfig ricConfig, String baseUrl, String username, String password) { - this(ricConfig, username, password, new AsyncRestClient(baseUrl + "/restconf/operations")); - if (logger.isDebugEnabled()) { - logger.debug("SdnrOnapA1Client for ric: {}, a1ControllerBaseUrl: {}", ricConfig.name(), baseUrl); - } + public SdncOnapA1Client(RicConfig ricConfig, ControllerConfig controllerConfig, WebClientConfig clientConfig) { + this(ricConfig, controllerConfig, + new AsyncRestClient(controllerConfig.baseUrl() + "/restconf/operations", clientConfig)); + logger.debug("SdncOnapA1Client for ric: {}, a1ControllerBaseUrl: {}", ricConfig.name(), + controllerConfig.baseUrl()); } - public SdncOnapA1Client(RicConfig ricConfig, String username, String password, AsyncRestClient restClient) { + public SdncOnapA1Client(RicConfig ricConfig, ControllerConfig controllerConfig, AsyncRestClient restClient) { this.ricConfig = ricConfig; - this.a1ControllerUsername = username; - this.a1ControllerPassword = password; + this.controllerConfig = controllerConfig; this.restClient = restClient; } @@ -73,14 +96,14 @@ public class SdncOnapA1Client implements A1Client { .nearRtRicId(ricConfig.baseUrl()) // .policyTypeId(policyTypeId) // .build(); - String inputJsonString = JsonHelper.createInputJsonString(inputParams); + String inputJsonString = SdncJsonHelper.createInputJsonString(inputParams); logger.debug("POST getPolicyType inputJsonString = {}", inputJsonString); return restClient - .postWithAuthHeader(URL_PREFIX + "getPolicyType", inputJsonString, a1ControllerUsername, - a1ControllerPassword) // - .flatMap(response -> JsonHelper.getValueFromResponse(response, "policy-type")) // - .flatMap(JsonHelper::extractPolicySchema); + .postWithAuthHeader(URL_PREFIX + "getPolicyType", inputJsonString, controllerConfig.userName(), + controllerConfig.password()) // + .flatMap(response -> SdncJsonHelper.getValueFromResponse(response, "policy-type")) // + .flatMap(SdncJsonHelper::extractPolicySchema); } @Override @@ -90,14 +113,14 @@ public class SdncOnapA1Client implements A1Client { .policyTypeId(policy.type().name()) // .policyInstanceId(policy.id()) // .policyInstance(policy.json()) // - .properties(new ArrayList()) // + .properties(new ArrayList<>()) // .build(); - String inputJsonString = JsonHelper.createInputJsonString(inputParams); + String inputJsonString = SdncJsonHelper.createInputJsonString(inputParams); logger.debug("POST putPolicy inputJsonString = {}", inputJsonString); return restClient.postWithAuthHeader(URL_PREFIX + "createPolicyInstance", inputJsonString, - a1ControllerUsername, a1ControllerPassword); + controllerConfig.userName(), controllerConfig.password()); } @Override @@ -126,14 +149,14 @@ public class SdncOnapA1Client implements A1Client { SdncOnapAdapterInput inputParams = ImmutableSdncOnapAdapterInput.builder() // .nearRtRicId(ricConfig.baseUrl()) // .build(); - String inputJsonString = JsonHelper.createInputJsonString(inputParams); + String inputJsonString = SdncJsonHelper.createInputJsonString(inputParams); logger.debug("POST getPolicyTypeIdentities inputJsonString = {}", inputJsonString); return restClient - .postWithAuthHeader("/A1-ADAPTER-API:getPolicyTypes", inputJsonString, a1ControllerUsername, - a1ControllerPassword) // - .flatMap(response -> JsonHelper.getValueFromResponse(response, "policy-type-id-list")) // - .flatMapMany(JsonHelper::parseJsonArrayOfString); + .postWithAuthHeader(URL_PREFIX + "getPolicyTypes", inputJsonString, controllerConfig.userName(), + controllerConfig.password()) // + .flatMap(response -> SdncJsonHelper.getValueFromResponse(response, "policy-type-id-list")) // + .flatMapMany(SdncJsonHelper::parseJsonArrayOfString); } private Flux getPolicyIdentitiesByType(String policyTypeId) { @@ -141,14 +164,14 @@ public class SdncOnapA1Client implements A1Client { .nearRtRicId(ricConfig.baseUrl()) // .policyTypeId(policyTypeId) // .build(); - String inputJsonString = JsonHelper.createInputJsonString(inputParams); + String inputJsonString = SdncJsonHelper.createInputJsonString(inputParams); logger.debug("POST getPolicyIdentities inputJsonString = {}", inputJsonString); return restClient - .postWithAuthHeader("/A1-ADAPTER-API:getPolicyInstances", inputJsonString, a1ControllerUsername, - a1ControllerPassword) // - .flatMap(response -> JsonHelper.getValueFromResponse(response, "policy-instance-id-list")) // - .flatMapMany(JsonHelper::parseJsonArrayOfString); + .postWithAuthHeader(URL_PREFIX + "getPolicyInstances", inputJsonString, controllerConfig.userName(), + controllerConfig.password()) // + .flatMap(response -> SdncJsonHelper.getValueFromResponse(response, "policy-instance-id-list")) // + .flatMapMany(SdncJsonHelper::parseJsonArrayOfString); } private Flux deletePoliciesForType(String typeId) { @@ -162,10 +185,10 @@ public class SdncOnapA1Client implements A1Client { .policyTypeId(policyTypeId) // .policyInstanceId(policyId) // .build(); - String inputJsonString = JsonHelper.createInputJsonString(inputParams); + String inputJsonString = SdncJsonHelper.createInputJsonString(inputParams); logger.debug("POST deletePolicy inputJsonString = {}", inputJsonString); - return restClient.postWithAuthHeader("/A1-ADAPTER-API:deletePolicyInstance", inputJsonString, - a1ControllerUsername, a1ControllerPassword); + return restClient.postWithAuthHeader(URL_PREFIX + "deletePolicyInstance", inputJsonString, + controllerConfig.userName(), controllerConfig.password()); } }