X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=webapp-backend%2Fsrc%2Fmain%2Fjava%2Forg%2Foransc%2Fportal%2Fnonrtric%2Fcontrolpanel%2Fpolicyagentapi%2FPolicyAgentApiImpl.java;h=ee961ab66cc189dcd704fdf286a564acf0a1e721;hb=f21ddbbc041b9e65328a225dbecf51867887fa1c;hp=f8b7c3ea9606d0c62e818ac7b1cbb79ada21d1b1;hpb=b75ca3906ec5d7eb2b48501e9c2abec3c3243ce4;p=portal%2Fnonrtric-controlpanel.git diff --git a/webapp-backend/src/main/java/org/oransc/portal/nonrtric/controlpanel/policyagentapi/PolicyAgentApiImpl.java b/webapp-backend/src/main/java/org/oransc/portal/nonrtric/controlpanel/policyagentapi/PolicyAgentApiImpl.java index f8b7c3e..ee961ab 100644 --- a/webapp-backend/src/main/java/org/oransc/portal/nonrtric/controlpanel/policyagentapi/PolicyAgentApiImpl.java +++ b/webapp-backend/src/main/java/org/oransc/portal/nonrtric/controlpanel/policyagentapi/PolicyAgentApiImpl.java @@ -35,8 +35,8 @@ import java.util.List; import org.immutables.gson.Gson; import org.immutables.value.Value; -import org.oransc.portal.nonrtric.controlpanel.model.ImmutablePolicyInfo; import org.oransc.portal.nonrtric.controlpanel.model.PolicyInfo; +import org.oransc.portal.nonrtric.controlpanel.model.PolicyInstance; import org.oransc.portal.nonrtric.controlpanel.model.PolicyType; import org.oransc.portal.nonrtric.controlpanel.model.PolicyTypes; import org.oransc.portal.nonrtric.controlpanel.util.AsyncRestClient; @@ -72,7 +72,7 @@ public class PolicyAgentApiImpl implements PolicyAgentApi { @Override public ResponseEntity getAllPolicyTypes() { try { - final String url = "/v2/policy-types"; + final String url = "/a1-policy/v2/policy-types"; ResponseEntity rsp = webClient.getForEntity(url).block(); if (!rsp.getStatusCode().is2xxSuccessful()) { return rsp; @@ -99,7 +99,7 @@ public class PolicyAgentApiImpl implements PolicyAgentApi { public JsonObject getIndividualPolicySchema(String id) { try { - final String url = "/v2/policy-types/" + id; + final String url = "/a1-policy/v2/policy-types/" + id; ResponseEntity rsp = webClient.getForEntity(url).block(); if (!rsp.getStatusCode().is2xxSuccessful()) { return null; @@ -118,7 +118,7 @@ public class PolicyAgentApiImpl implements PolicyAgentApi { @Override public ResponseEntity getPolicyInstancesForType(String type) { try { - String url = "/v2/policies?policytype_id=" + type; + String url = "/a1-policy/v2/policies?policytype_id=" + type; ResponseEntity rsp = webClient.getForEntity(url).block(); if (!rsp.getStatusCode().is2xxSuccessful()) { return rsp; @@ -127,49 +127,75 @@ public class PolicyAgentApiImpl implements PolicyAgentApi { .get("policy_ids") // .getAsJsonArray(); // - Type listType = new TypeToken>() {}.getType(); - List rspParsed = gson.fromJson(policyInstances, listType); + List res = new ArrayList<>(); + for (JsonElement p : policyInstances) { + ResponseEntity policyInstance = getIndividualPolicyInstance(p.getAsString()); + res.add(policyInstance.getBody()); + } - return new ResponseEntity<>(gson.toJson(rspParsed), rsp.getStatusCode()); + return new ResponseEntity<>(gson.toJson(res), rsp.getStatusCode()); } catch (Exception e) { return ErrorResponseHandler.handleException(e); } } - @Override - public ResponseEntity getPolicyInstance(String id) { + public ResponseEntity getIndividualPolicyInstance(String id) { try { - String url = "/v2/policies/" + id; + String url = "/a1-policy/v2/policies/" + id; ResponseEntity rsp = webClient.getForEntity(url).block(); JsonObject obj = JsonParser.parseString(rsp.getBody()).getAsJsonObject(); - String str = obj.toString(); - return new ResponseEntity<>(str, rsp.getStatusCode()); + + // lastModified timestamp is fetched from PolicyStatus instead + ResponseEntity status = getPolicyStatus(id); + String lastModified = JsonParser.parseString(status.getBody()).getAsJsonObject() // + .get("last_modified") // + .getAsString(); // + obj.addProperty("lastModified", lastModified); + + PolicyInfo i = gson.fromJson(obj, PolicyInfo.class); + return new ResponseEntity<>(i, rsp.getStatusCode()); + } catch (Exception e) { + ResponseEntity rsp = ErrorResponseHandler.handleException(e); + return new ResponseEntity<>(rsp.getBody(), rsp.getStatusCode()); + } + } + + public ResponseEntity getPolicyStatus(String id) { + try { + String url = "/a1-policy/v2/policies/" + id + "/status"; + ResponseEntity rsp = webClient.getForEntity(url).block(); + return new ResponseEntity<>(rsp.getBody(), rsp.getStatusCode()); } catch (Exception e) { ResponseEntity rsp = ErrorResponseHandler.handleException(e); return new ResponseEntity<>(rsp.getBody(), rsp.getStatusCode()); } } - private String getTimeStampUTC() { - return java.time.Instant.now().toString(); + @Override + public ResponseEntity getPolicyInstance(String id) { + ResponseEntity rsp = getIndividualPolicyInstance(id); + PolicyInfo i = (PolicyInfo) rsp.getBody(); + return new ResponseEntity<>(i.policyData, rsp.getStatusCode()); } @Override public ResponseEntity putPolicy(String policyTypeIdString, String policyInstanceId, Object json, String ric) { - String url = "/v2/policies/"; - - PolicyInfo i = ImmutablePolicyInfo.builder() // - .id(policyInstanceId) // - .type(policyTypeIdString) // - .ric(ric) // - .json(json) // - .service("controlpanel") // - .lastModified(getTimeStampUTC()) // + String url = "/a1-policy/v2/policies/"; + + JsonElement data = JsonParser.parseString(json.toString()).getAsJsonObject(); + + PolicyInstance i = PolicyInstance.builder() // + .policyId(policyInstanceId) // + .policyTypeId(policyTypeIdString) // + .ricId(ric) // + .policyData(data) // + .serviceId("controlpanel") // .build(); // try { - String jsonStr = gson.toJson(i, PolicyInfo.class); + String jsonStr = gson.toJson(i, PolicyInstance.class); + logger.debug("PolicyInstance: " + jsonStr); webClient.putForEntity(url, jsonStr).block(); return new ResponseEntity<>(HttpStatus.OK); } catch (Exception e) { @@ -179,7 +205,7 @@ public class PolicyAgentApiImpl implements PolicyAgentApi { @Override public ResponseEntity deletePolicy(String policyInstanceId) { - String url = "/v2/policies/" + policyInstanceId; + String url = "/a1-policy/v2/policies/" + policyInstanceId; try { webClient.deleteForEntity(url).block(); return new ResponseEntity<>(HttpStatus.OK); @@ -191,17 +217,17 @@ public class PolicyAgentApiImpl implements PolicyAgentApi { @Value.Immutable @Gson.TypeAdapters interface RicInfo { - public String ricName(); + public String ric_id(); - public Collection nodeNames(); + public Collection managed_element_ids(); - public Collection policyTypes(); + public Collection policytype_ids(); } @Override public ResponseEntity getRicsSupportingType(String typeName) { try { - String url = "/v2/rics?policytype_id=" + typeName; + String url = "/a1-policy/v2/rics?policytype_id=" + typeName; ResponseEntity rsp = webClient.getForEntity(url).block(); if (!rsp.getStatusCode().is2xxSuccessful()) { return rsp; @@ -215,7 +241,7 @@ public class PolicyAgentApiImpl implements PolicyAgentApi { List rspParsed = gson.fromJson(rics, listType); Collection result = new ArrayList<>(rspParsed.size()); for (RicInfo ric : rspParsed) { - result.add(ric.ricName()); + result.add(ric.ric_id()); } String json = gson.toJson(result); return new ResponseEntity<>(json, HttpStatus.OK);