From b75ca3906ec5d7eb2b48501e9c2abec3c3243ce4 Mon Sep 17 00:00:00 2001 From: ecaiyanlinux Date: Mon, 21 Dec 2020 21:58:08 +0100 Subject: [PATCH] Update to support PMS_v2 Signed-off-by: ecaiyanlinux Change-Id: Ibc757b278a9be6b723a0416dcb719c1f1ab946c5 Issue-ID: NONRTRIC-314 --- .../policyagentapi/PolicyAgentApiImpl.java | 87 +++++++++++++++------- .../policyagentapi/PolicyAgentApiImplTest.java | 61 ++++++++++----- 2 files changed, 103 insertions(+), 45 deletions(-) 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 44f060e..f8b7c3e 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 @@ -37,7 +37,6 @@ 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.PolicyInstances; 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,23 +71,24 @@ public class PolicyAgentApiImpl implements PolicyAgentApi { @Override public ResponseEntity getAllPolicyTypes() { - final String TITLE = "title"; try { - final String url = "/policy_schemas"; + final String url = "/v2/policy-types"; ResponseEntity rsp = webClient.getForEntity(url).block(); if (!rsp.getStatusCode().is2xxSuccessful()) { return rsp; } PolicyTypes result = new PolicyTypes(); - JsonArray schemas = JsonParser.parseString(rsp.getBody()).getAsJsonArray(); - for (JsonElement schema : schemas) { - JsonObject schemaObj = schema.getAsJsonObject(); - String title = ""; - if (schemaObj.get(TITLE) != null) { - title = schemaObj.get(TITLE).getAsString(); - } - PolicyType pt = new PolicyType(title, schemaObj.toString()); + JsonArray policyTypeIds = JsonParser.parseString(rsp.getBody()).getAsJsonObject() // + .get("policytype_ids") // + .getAsJsonArray(); // + + for (JsonElement policyTypeId : policyTypeIds) { + + String typeId = policyTypeId.getAsString(); + + JsonObject schemaObj = getIndividualPolicySchema(typeId); + PolicyType pt = new PolicyType(typeId, schemaObj.toString()); result.add(pt); } return new ResponseEntity<>(gson.toJson(result), rsp.getStatusCode()); @@ -97,22 +97,40 @@ public class PolicyAgentApiImpl implements PolicyAgentApi { } } + public JsonObject getIndividualPolicySchema(String id) { + try { + final String url = "/v2/policy-types/" + id; + ResponseEntity rsp = webClient.getForEntity(url).block(); + if (!rsp.getStatusCode().is2xxSuccessful()) { + return null; + } + + JsonObject policy_schema = JsonParser.parseString(rsp.getBody()).getAsJsonObject() // + .get("policy_schema") // + .getAsJsonObject(); // + + return policy_schema; + } catch (Exception e) { + return null; + } + } + @Override public ResponseEntity getPolicyInstancesForType(String type) { try { - String url = "/policies?type=" + type; + String url = "/v2/policies?policytype_id=" + type; ResponseEntity rsp = webClient.getForEntity(url).block(); if (!rsp.getStatusCode().is2xxSuccessful()) { return rsp; } + JsonArray policyInstances = JsonParser.parseString(rsp.getBody()).getAsJsonObject() // + .get("policy_ids") // + .getAsJsonArray(); // Type listType = new TypeToken>() {}.getType(); - List rspParsed = gson.fromJson(rsp.getBody(), listType); - PolicyInstances result = new PolicyInstances(); - for (PolicyInfo p : rspParsed) { - result.add(p); - } - return new ResponseEntity<>(gson.toJson(result), rsp.getStatusCode()); + List rspParsed = gson.fromJson(policyInstances, listType); + + return new ResponseEntity<>(gson.toJson(rspParsed), rsp.getStatusCode()); } catch (Exception e) { return ErrorResponseHandler.handleException(e); } @@ -121,7 +139,7 @@ public class PolicyAgentApiImpl implements PolicyAgentApi { @Override public ResponseEntity getPolicyInstance(String id) { try { - String url = "/policy?id=" + id; + String url = "/v2/policies/" + id; ResponseEntity rsp = webClient.getForEntity(url).block(); JsonObject obj = JsonParser.parseString(rsp.getBody()).getAsJsonObject(); String str = obj.toString(); @@ -132,14 +150,26 @@ public class PolicyAgentApiImpl implements PolicyAgentApi { } } + private String getTimeStampUTC() { + return java.time.Instant.now().toString(); + } + @Override public ResponseEntity putPolicy(String policyTypeIdString, String policyInstanceId, Object json, String ric) { - String url = - "/policy?type=" + policyTypeIdString + "&id=" + policyInstanceId + "&ric=" + ric + "&service=controlpanel"; + String url = "/v2/policies/"; + + PolicyInfo i = ImmutablePolicyInfo.builder() // + .id(policyInstanceId) // + .type(policyTypeIdString) // + .ric(ric) // + .json(json) // + .service("controlpanel") // + .lastModified(getTimeStampUTC()) // + .build(); // try { - String jsonStr = json.toString(); + String jsonStr = gson.toJson(i, PolicyInfo.class); webClient.putForEntity(url, jsonStr).block(); return new ResponseEntity<>(HttpStatus.OK); } catch (Exception e) { @@ -149,7 +179,7 @@ public class PolicyAgentApiImpl implements PolicyAgentApi { @Override public ResponseEntity deletePolicy(String policyInstanceId) { - String url = "/policy?id=" + policyInstanceId; + String url = "/v2/policies/" + policyInstanceId; try { webClient.deleteForEntity(url).block(); return new ResponseEntity<>(HttpStatus.OK); @@ -171,11 +201,18 @@ public class PolicyAgentApiImpl implements PolicyAgentApi { @Override public ResponseEntity getRicsSupportingType(String typeName) { try { - String url = "/rics?policyType=" + typeName; + String url = "/v2/rics?policytype_id=" + typeName; ResponseEntity rsp = webClient.getForEntity(url).block(); + if (!rsp.getStatusCode().is2xxSuccessful()) { + return rsp; + } + + JsonArray rics = JsonParser.parseString(rsp.getBody()).getAsJsonObject() // + .get("rics") // + .getAsJsonArray(); // Type listType = new TypeToken>() {}.getType(); - List rspParsed = gson.fromJson(rsp.getBody(), listType); + List rspParsed = gson.fromJson(rics, listType); Collection result = new ArrayList<>(rspParsed.size()); for (RicInfo ric : rspParsed) { result.add(ric.ricName()); diff --git a/webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/policyagentapi/PolicyAgentApiImplTest.java b/webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/policyagentapi/PolicyAgentApiImplTest.java index 87a831f..42d2669 100644 --- a/webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/policyagentapi/PolicyAgentApiImplTest.java +++ b/webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/policyagentapi/PolicyAgentApiImplTest.java @@ -47,7 +47,7 @@ import org.springframework.web.client.HttpServerErrorException; import reactor.core.publisher.Mono; class PolicyAgentApiImplTest { - private static final String URL_POLICY_SCHEMAS = "/policy_schemas"; + private static final String URL_POLICY_SCHEMAS = "/v2/policy-types"; private static final String POLICY_TYPE_1_ID = "type1"; private static final String POLICY_TYPE_1_VALID = "{\"title\":\"type1\"}"; private static final String POLICY_TYPE_1_INVALID = "\"title\":\"type1\"}"; @@ -93,9 +93,10 @@ class PolicyAgentApiImplTest { @Test void testGetAllPolicyTypesSuccessValidJson() { - String policyTypes = Arrays.asList(POLICY_TYPE_1_VALID, POLICY_TYPE_2_VALID).toString(); - - whenGetReturnOK(URL_POLICY_SCHEMAS, HttpStatus.OK, policyTypes); + String returnValue = "{\"policytype_ids\": [\"type1\",\"type2\"]}"; + whenGetReturnOK(URL_POLICY_SCHEMAS, HttpStatus.OK, returnValue); + whenGetReturnOK(URL_POLICY_SCHEMAS + "/type1", HttpStatus.OK, "{\"policy_schema\":{}}"); + whenGetReturnOK(URL_POLICY_SCHEMAS + "/type2", HttpStatus.OK, "{\"policy_schema\":{}}"); ResponseEntity resp = apiUnderTest.getAllPolicyTypes(); assertTrue(resp.getBody().contains("\"name\":\"type1\"")); @@ -114,7 +115,7 @@ class PolicyAgentApiImplTest { } private String urlPolicyInstances(String type) { - return "/policies?type=" + type; + return "/v2/policies?policytype_id=" + type; } @Test @@ -128,13 +129,11 @@ class PolicyAgentApiImplTest { @Test void testGetPolicyInstancesForTypeSuccessValidJson() { - String policyInstances = Arrays.asList(POLICY_1_VALID).toString(); - String policyInstancesJson = parsePolicyInstancesJson(policyInstances); + String policyInstances = "{\"policy_ids\":[{\"id\":\"policy1\"}]}"; + String policyInstancesJson = parsePolicyInstancesJson("[{\"id\":\"policy1\"}]"); whenGetReturnOK(urlPolicyInstances(POLICY_TYPE_1_ID), HttpStatus.OK, policyInstances); - ResponseEntity returnedResp = apiUnderTest.getPolicyInstancesForType(POLICY_TYPE_1_ID); - assertEquals(returnedResp.getBody(), policyInstancesJson); assertEquals(HttpStatus.OK, returnedResp.getStatusCode()); } @@ -152,7 +151,7 @@ class PolicyAgentApiImplTest { } private String urlPolicyInstance(String id) { - return "/policy?id=" + id; + return "/v2/policies/" + id; } @Test @@ -166,8 +165,8 @@ class PolicyAgentApiImplTest { } - private String urlPutPolicy(String type, String id, String ric) { - return "/policy?type=" + type + "&id=" + id + "&ric=" + ric + "&service=controlpanel"; + private String urlPutPolicy() { + return "/v2/policies/"; } private void whenPutReturnOK(String url, String putBody, HttpStatus status, String body) { @@ -183,8 +182,19 @@ class PolicyAgentApiImplTest { @Test void testPutPolicyFailure() { - String url = urlPutPolicy(POLICY_TYPE_1_ID, POLICY_1_ID, RIC_1_ID); - whenPutReturnFailure(url, POLICY_1_VALID, HttpStatus.NOT_FOUND, CLIENT_ERROR_MESSAGE); + String url = urlPutPolicy(); + + PolicyInfo i = ImmutablePolicyInfo.builder() // + .id(POLICY_1_ID) // + .type(POLICY_TYPE_1_ID) // + .ric(RIC_1_ID) // + .json(POLICY_1_VALID) // + .service("") // + .lastModified("") // + .build(); // + + String jsonStr = gson.toJson(i, PolicyInfo.class); + whenPutReturnFailure(url, jsonStr, HttpStatus.NOT_FOUND, CLIENT_ERROR_MESSAGE); ResponseEntity returnedResp = apiUnderTest.putPolicy(POLICY_TYPE_1_ID, POLICY_1_ID, POLICY_1_VALID, RIC_1_ID); @@ -195,8 +205,19 @@ class PolicyAgentApiImplTest { @Test void testPutPolicySuccess() { - String url = urlPutPolicy(POLICY_TYPE_1_ID, POLICY_1_ID, RIC_1_ID); - whenPutReturnOK(url, POLICY_1_VALID, HttpStatus.OK, POLICY_1_VALID); + String url = urlPutPolicy(); + PolicyInfo i = ImmutablePolicyInfo.builder() // + .id(POLICY_1_ID) // + .type(POLICY_TYPE_1_ID) // + .ric(RIC_1_ID) // + .json(POLICY_1_VALID) // + .service("") // + .lastModified("") // + .build(); // + + String jsonStr = gson.toJson(i, PolicyInfo.class); + + whenPutReturnOK(url, jsonStr, HttpStatus.OK, POLICY_1_VALID); ResponseEntity returnedResp = apiUnderTest.putPolicy(POLICY_TYPE_1_ID, POLICY_1_ID, POLICY_1_VALID, RIC_1_ID); @@ -217,7 +238,7 @@ class PolicyAgentApiImplTest { } private String deletePolicyUrl(String id) { - return "/policy?id=" + id; + return "/v2/policies/" + id; } @Test @@ -239,14 +260,14 @@ class PolicyAgentApiImplTest { } private String urlRicInfo(String typeName) { - return "/rics?policyType=" + typeName; + return "/v2/rics?policytype_id=" + typeName; } @Test void testGetRicsSupportingTypeValidJson() { String rics = Arrays.asList(RIC_1_INFO_VALID).toString(); - - this.whenGetReturnOK(urlRicInfo(POLICY_TYPE_1_ID), HttpStatus.OK, rics); + String returnVal = "{\"rics\":" + rics + "}"; + this.whenGetReturnOK(urlRicInfo(POLICY_TYPE_1_ID), HttpStatus.OK, returnVal); ResponseEntity resp = apiUnderTest.getRicsSupportingType(POLICY_TYPE_1_ID); -- 2.16.6