X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=policy-agent%2Fsrc%2Fmain%2Fjava%2Forg%2Foransc%2Fpolicyagent%2Fclients%2FA1ClientImpl.java;h=e576638588fe8ff6eb986a921011fb312fc2d6ea;hb=eec4647d457ca8c2ebecc86485127bd529919533;hp=5f2d3f2915958574c1340ba0bc75c50d6cc00d43;hpb=28363371d308c2cbd1954835a034533b53d6406a;p=nonrtric.git diff --git a/policy-agent/src/main/java/org/oransc/policyagent/clients/A1ClientImpl.java b/policy-agent/src/main/java/org/oransc/policyagent/clients/A1ClientImpl.java index 5f2d3f29..e5766385 100644 --- a/policy-agent/src/main/java/org/oransc/policyagent/clients/A1ClientImpl.java +++ b/policy-agent/src/main/java/org/oransc/policyagent/clients/A1ClientImpl.java @@ -22,15 +22,15 @@ package org.oransc.policyagent.clients; import java.lang.invoke.MethodHandles; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; +import org.oransc.policyagent.repository.Policy; import org.slf4j.Logger; import org.slf4j.LoggerFactory; - -import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; public class A1ClientImpl implements A1Client { @@ -40,24 +40,24 @@ public class A1ClientImpl implements A1Client { return nearRtRicUrl + "/A1-P/v1"; } - public AsyncRestClient createClient(final String nearRtRicUrl) { + protected AsyncRestClient createClient(final String nearRtRicUrl) { return new AsyncRestClient(getBaseUrl(nearRtRicUrl)); } @Override - public Flux getPolicyTypeIdentities(String nearRtRicUrl) { + public Mono> getPolicyTypeIdentities(String nearRtRicUrl) { logger.debug("getPolicyTypeIdentities nearRtRicUrl = {}", nearRtRicUrl); AsyncRestClient client = createClient(nearRtRicUrl); - Mono response = client.get("/policytypes/identities"); - return response.flatMapMany(this::createFlux); + return client.get("/policytypes/identities") // + .flatMap(this::parseJsonArrayOfString); } @Override - public Flux getPolicyIdentities(String nearRtRicUrl) { + public Mono> getPolicyIdentities(String nearRtRicUrl) { logger.debug("getPolicyIdentities nearRtRicUrl = {}", nearRtRicUrl); AsyncRestClient client = createClient(nearRtRicUrl); - Mono response = client.get("/policies/identities"); - return response.flatMapMany(this::createFlux); + return client.get("/policies/identities") // + .flatMap(this::parseJsonArrayOfString); } @Override @@ -69,22 +69,26 @@ public class A1ClientImpl implements A1Client { } @Override - public Mono putPolicy(String nearRtRicUrl, String policyId, String policyString) { - logger.debug("putPolicy nearRtRicUrl = {}, policyId = {}, policyString = {}", nearRtRicUrl, policyId, - policyString); - AsyncRestClient client = createClient(nearRtRicUrl); - Mono response = client.put("/policies/" + policyId, policyString); + public Mono putPolicy(Policy policy) { + logger.debug("putPolicy nearRtRicUrl = {}, policyId = {}, policyString = {}", // + policy.ric().getConfig().baseUrl(), policy.id(), policy.json()); + AsyncRestClient client = createClient(policy.ric().getConfig().baseUrl()); + // TODO update when simulator is updated to include policy type + // Mono response = client.put("/policies/" + policy.id() + "?policyTypeId=" + policy.type().name(), + // policy.json()); + Mono response = client.put("/policies/" + policy.id(), policy.json()); + return response.flatMap(this::createMono); } @Override - public Mono deletePolicy(String nearRtRicUrl, String policyId) { + public Mono deletePolicy(String nearRtRicUrl, String policyId) { logger.debug("deletePolicy nearRtRicUrl = {}, policyId = {}", nearRtRicUrl, policyId); AsyncRestClient client = createClient(nearRtRicUrl); return client.delete("/policies/" + policyId); } - private Flux createFlux(String inputString) { + private Mono> parseJsonArrayOfString(String inputString) { try { List arrayList = new ArrayList<>(); JSONArray jsonArray = new JSONArray(inputString); @@ -92,9 +96,9 @@ public class A1ClientImpl implements A1Client { arrayList.add(jsonArray.getString(i)); } logger.debug("A1 client: received list = {}", arrayList); - return Flux.fromIterable(arrayList); + return Mono.just(arrayList); } catch (JSONException ex) { // invalid json - return Flux.error(ex); + return Mono.error(ex); } }