From: RehanRaza Date: Mon, 27 Jan 2020 12:21:55 +0000 (+0100) Subject: Adapt A1 controller to latest A1 spec X-Git-Tag: 1.0.1~23^2 X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=commitdiff_plain;h=d1623c5066ebb6152c6a2ba0fe889e32c75d8890;p=nonrtric.git Adapt A1 controller to latest A1 spec Change-Id: I00d4fbc06c67481dd87aa594bdf979863f0cd29b Issue-ID: NONRTRIC-106 Signed-off-by: RehanRaza --- diff --git a/policy-agent/src/main/java/org/oransc/policyagent/clients/ControllerA1Client.java b/policy-agent/src/main/java/org/oransc/policyagent/clients/ControllerA1Client.java index bc7b56d9..ddb6fb67 100644 --- a/policy-agent/src/main/java/org/oransc/policyagent/clients/ControllerA1Client.java +++ b/policy-agent/src/main/java/org/oransc/policyagent/clients/ControllerA1Client.java @@ -82,7 +82,8 @@ public class ControllerA1Client implements A1Client { logger.debug("POST getPolicyType inputJsonString = {}", inputJsonString); return restClient.post("/A1-ADAPTER-API:getPolicyType", inputJsonString) // - .flatMap(response -> getValueFromResponse(response, "policy-type")); + .flatMap(response -> getValueFromResponse(response, "policy-type")) // + .flatMap(this::extractPolicySchema); } @Override @@ -90,12 +91,14 @@ public class ControllerA1Client implements A1Client { JSONObject paramsJson = new JSONObject(); paramsJson.put("near-rt-ric-url", ricConfig.baseUrl()); paramsJson.put("policy-id", policy.id()); + paramsJson.put("policy-type-id", policy.type().name()); paramsJson.put("policy", policy.json()); String inputJsonString = createInputJsonString(paramsJson); logger.debug("POST putPolicy inputJsonString = {}", inputJsonString); return restClient.post("/A1-ADAPTER-API:putPolicy", inputJsonString) // - .flatMap(response -> getValueFromResponse(response, "returned-policy")); + .flatMap(response -> getValueFromResponse(response, "returned-policy")) // + .flatMap(this::validateJson); } @Override @@ -157,4 +160,24 @@ public class ControllerA1Client implements A1Client { return Mono.error(ex); } } + + private Mono extractPolicySchema(String inputString) { + try { + JSONObject jsonObject = new JSONObject(inputString); + JSONObject schemaObject = jsonObject.getJSONObject("policySchema"); + String schemaString = schemaObject.toString(); + return Mono.just(schemaString); + } catch (JSONException ex) { // invalid json + return Mono.error(ex); + } + } + + private Mono validateJson(String inputString) { + try { + new JSONObject(inputString); + return Mono.just(inputString); + } catch (JSONException ex) { // invalid json + return Mono.error(ex); + } + } } diff --git a/sdnc-a1-controller/northbound/nonrt-ric-api/model/src/main/yang/NONRT-RIC-API.yang b/sdnc-a1-controller/northbound/nonrt-ric-api/model/src/main/yang/NONRT-RIC-API.yang index d8704e33..40005d21 100644 --- a/sdnc-a1-controller/northbound/nonrt-ric-api/model/src/main/yang/NONRT-RIC-API.yang +++ b/sdnc-a1-controller/northbound/nonrt-ric-api/model/src/main/yang/NONRT-RIC-API.yang @@ -90,6 +90,9 @@ module A1-ADAPTER-API { leaf policy-id { type string; } + leaf policy-type-id { + type string; + } leaf policy { type string; } diff --git a/sdnc-a1-controller/northbound/nonrt-ric-api/provider/src/main/java/org/onap/sdnc/northbound/provider/NonrtRicApiProvider.java b/sdnc-a1-controller/northbound/nonrt-ric-api/provider/src/main/java/org/onap/sdnc/northbound/provider/NonrtRicApiProvider.java index 4f5380ef..f67508f9 100644 --- a/sdnc-a1-controller/northbound/nonrt-ric-api/provider/src/main/java/org/onap/sdnc/northbound/provider/NonrtRicApiProvider.java +++ b/sdnc-a1-controller/northbound/nonrt-ric-api/provider/src/main/java/org/onap/sdnc/northbound/provider/NonrtRicApiProvider.java @@ -180,7 +180,7 @@ public class NonrtRicApiProvider implements AutoCloseable, A1ADAPTERAPIService { GetPolicyTypeIdentitiesInput input) { log.info("Start of getPolicyTypeIdentities"); GetPolicyTypeIdentitiesOutputBuilder responseBuilder = new GetPolicyTypeIdentitiesOutputBuilder(); - String uri = nearRicUrlProvider.getPolicyTypeIdentitiesUrl(String.valueOf(input.getNearRtRicUrl())); + String uri = nearRicUrlProvider.policyTypesUrl(String.valueOf(input.getNearRtRicUrl())); ResponseEntity> response = restAdapter.get(uri, List.class); if (response.hasBody()) { log.info("Response getPolicyTypeIdentities : {} ", response.getBody()); @@ -196,7 +196,7 @@ public class NonrtRicApiProvider implements AutoCloseable, A1ADAPTERAPIService { public ListenableFuture> getPolicyIdentities(GetPolicyIdentitiesInput input) { log.info("Start of getPolicyIdentities"); GetPolicyIdentitiesOutputBuilder responseBuilder = new GetPolicyIdentitiesOutputBuilder(); - String uri = nearRicUrlProvider.getPolicyIdentitiesUrl(String.valueOf(input.getNearRtRicUrl())); + String uri = nearRicUrlProvider.policiesUrl(String.valueOf(input.getNearRtRicUrl())); ResponseEntity> response = restAdapter.get(uri, List.class); if (response.hasBody()) { log.info("Response getPolicyIdentities : {} ", response.getBody()); @@ -230,8 +230,8 @@ public class NonrtRicApiProvider implements AutoCloseable, A1ADAPTERAPIService { public ListenableFuture> putPolicy(PutPolicyInput input) { log.info("Start of putPolicy"); PutPolicyOutputBuilder responseBuilder = new PutPolicyOutputBuilder(); - String uri = nearRicUrlProvider.getPolicyUrl(String.valueOf(input.getNearRtRicUrl()), - String.valueOf(input.getPolicyId())); + String uri = nearRicUrlProvider.putPolicyUrl(String.valueOf(input.getNearRtRicUrl()), + String.valueOf(input.getPolicyId()), String.valueOf(input.getPolicyTypeId())); log.info("PUT Request input.getPolicy() : {} ", input.getPolicy()); ResponseEntity response = restAdapter.put(uri, input.getPolicy(), String.class); if (response.hasBody()) { @@ -248,7 +248,7 @@ public class NonrtRicApiProvider implements AutoCloseable, A1ADAPTERAPIService { public ListenableFuture> deletePolicy(DeletePolicyInput input) { log.info("Start of deletePolicy"); DeletePolicyOutputBuilder responseBuilder = new DeletePolicyOutputBuilder(); - String uri = nearRicUrlProvider.getPolicyUrl(String.valueOf(input.getNearRtRicUrl()), + String uri = nearRicUrlProvider.deletePolicyUrl(String.valueOf(input.getNearRtRicUrl()), String.valueOf(input.getPolicyId())); ResponseEntity response = restAdapter.delete(uri); log.info("End of deletePolicy"); diff --git a/sdnc-a1-controller/northbound/nonrt-ric-api/provider/src/main/java/org/onap/sdnc/northbound/restadapter/NearRicUrlProvider.java b/sdnc-a1-controller/northbound/nonrt-ric-api/provider/src/main/java/org/onap/sdnc/northbound/restadapter/NearRicUrlProvider.java index 46d489bb..d45d2029 100644 --- a/sdnc-a1-controller/northbound/nonrt-ric-api/provider/src/main/java/org/onap/sdnc/northbound/restadapter/NearRicUrlProvider.java +++ b/sdnc-a1-controller/northbound/nonrt-ric-api/provider/src/main/java/org/onap/sdnc/northbound/restadapter/NearRicUrlProvider.java @@ -37,6 +37,7 @@ public class NearRicUrlProvider { /** * Retrieve the base url of the Near-RIC * + * @param nearRtRicUrl the near-rt-ric url * @return the base url */ public String getBaseUrl(final String nearRtRicUrl) { @@ -45,45 +46,61 @@ public class NearRicUrlProvider { } /** - * Retrieve the policy type ids url + * Retrieve the policytypes url * - * @return the policytype ids url + * @param nearRtRicUrl the near-rt-ric url + * @return the policytypes url */ - public String getPolicyTypeIdentitiesUrl(final String nearRtRicUrl) { + public String policyTypesUrl(final String nearRtRicUrl) { return UriComponentsBuilder.fromUriString(getBaseUrl(nearRtRicUrl)).pathSegment("policytypes") - .pathSegment("identities").build().toString(); + .build().toString(); } /** - * Retrieve the url of the policy instances + * Retrieve the policies url * - * @param policyTypeId Policy Type Id - * @return the policy ids url + * @param nearRtRicUrl the near-rt-ric url + * @return the policies url */ - public String getPolicyIdentitiesUrl(final String nearRtRicUrl) { + public String policiesUrl(final String nearRtRicUrl) { return UriComponentsBuilder.fromUriString(getBaseUrl(nearRtRicUrl)).pathSegment("policies") - .pathSegment("identities").build().toString(); + .build().toString(); } /** * Retrieve the url of policy type * + * @param nearRtRicUrl the near-rt-ric url * @param policyTypeId Policy Type Id * @return the policy type url */ public String getPolicyTypeUrl(final String nearRtRicUrl, final String policyTypeId) { - return UriComponentsBuilder.fromUriString(getBaseUrl(nearRtRicUrl)).pathSegment("policytypes") - .pathSegment(policyTypeId).build().toString(); + return UriComponentsBuilder.fromUriString(policyTypesUrl(nearRtRicUrl)).pathSegment(policyTypeId) + .build().toString(); } /** - * Retrieve the url of the policy instance id + * Retrieve the url of putPolicy * + * @param nearRtRicUrl the near-rt-ric url * @param policyId Policy Id - * @return the policy id url + * @param policyTypeId Policy Type Id + * @return the putPolicy url */ - public String getPolicyUrl(final String nearRtRicUrl, final String policyId) { - return UriComponentsBuilder.fromUriString(getBaseUrl(nearRtRicUrl)).pathSegment("policies") - .pathSegment(policyId).build().toString(); + public String putPolicyUrl(final String nearRtRicUrl, final String policyId, final String policyTypeId) { + return UriComponentsBuilder.fromUriString(policiesUrl(nearRtRicUrl)).pathSegment(policyId) + .pathSegment("?policyTypeId=").pathSegment(policyTypeId).build().toString(); + } + + /** + * Retrieve the url of deletePolicy + * + * @param nearRtRicUrl the near-rt-ric url + * @param policyId Policy Id + * @return the deletePolicy url + */ + public String deletePolicyUrl(final String nearRtRicUrl, final String policyId) { + return UriComponentsBuilder.fromUriString(policiesUrl(nearRtRicUrl)).pathSegment(policyId) + .build().toString(); } } diff --git a/sdnc-a1-controller/northbound/nonrt-ric-api/provider/src/test/java/org/onap/sdnc/northbound/NonrtRicApiProviderTest.java b/sdnc-a1-controller/northbound/nonrt-ric-api/provider/src/test/java/org/onap/sdnc/northbound/NonrtRicApiProviderTest.java index 2646aff6..3dc1efd1 100644 --- a/sdnc-a1-controller/northbound/nonrt-ric-api/provider/src/test/java/org/onap/sdnc/northbound/NonrtRicApiProviderTest.java +++ b/sdnc-a1-controller/northbound/nonrt-ric-api/provider/src/test/java/org/onap/sdnc/northbound/NonrtRicApiProviderTest.java @@ -92,7 +92,7 @@ public class NonrtRicApiProviderTest extends AbstractConcurrentDataBrokerTest { GetPolicyTypeIdentitiesInputBuilder inputBuilder = new GetPolicyTypeIdentitiesInputBuilder(); inputBuilder.setNearRtRicUrl(nearRtRicUrl); Whitebox.setInternalState(nonrtRicApiProvider, "restAdapter", restAdapter); - String uri = nearRicUrlProvider.getPolicyTypeIdentitiesUrl(inputBuilder.build().getNearRtRicUrl()); + String uri = nearRicUrlProvider.policyTypesUrl(inputBuilder.build().getNearRtRicUrl()); List policyTypeIdentities = new ArrayList<>(); policyTypeIdentities.add(policyTypeId); ResponseEntity getPolicyTypeIdentitiesResponse = new ResponseEntity<>(policyTypeIdentities, HttpStatus.OK); @@ -107,7 +107,7 @@ public class NonrtRicApiProviderTest extends AbstractConcurrentDataBrokerTest { GetPolicyIdentitiesInputBuilder inputBuilder = new GetPolicyIdentitiesInputBuilder(); inputBuilder.setNearRtRicUrl(nearRtRicUrl); Whitebox.setInternalState(nonrtRicApiProvider, "restAdapter", restAdapter); - String uri = nearRicUrlProvider.getPolicyIdentitiesUrl(inputBuilder.build().getNearRtRicUrl()); + String uri = nearRicUrlProvider.policiesUrl(inputBuilder.build().getNearRtRicUrl()); List policyIdentities = new ArrayList<>(); policyIdentities.add(policyId); ResponseEntity getPolicyIdentitiesResponse = new ResponseEntity<>(policyIdentities, HttpStatus.OK); @@ -139,10 +139,11 @@ public class NonrtRicApiProviderTest extends AbstractConcurrentDataBrokerTest { String testPolicy = "{}"; inputBuilder.setNearRtRicUrl(nearRtRicUrl); inputBuilder.setPolicyId(policyId); + inputBuilder.setPolicyTypeId(policyTypeId); inputBuilder.setPolicy(testPolicy); Whitebox.setInternalState(nonrtRicApiProvider, "restAdapter", restAdapter); - String uri = nearRicUrlProvider.getPolicyUrl(inputBuilder.build().getNearRtRicUrl(), - inputBuilder.getPolicyId()); + String uri = nearRicUrlProvider.putPolicyUrl(inputBuilder.build().getNearRtRicUrl(), + inputBuilder.getPolicyId(), inputBuilder.getPolicyTypeId()); ResponseEntity putPolicyResponse = new ResponseEntity<>(testPolicy, HttpStatus.CREATED); when(restAdapter.put(eq(uri), eq(testPolicy), eq(String.class))).thenReturn(putPolicyResponse); ListenableFuture> result =