diff options
author | 2025-03-20 16:13:12 +0000 | |
---|---|---|
committer | 2025-03-24 09:45:39 +0000 | |
commit | 2690a191ff5a27f24b46fd39c314a59aa8381320 (patch) | |
tree | aeba8e7e35794e1d7017b7ce62c1631bc07d5cd3 | |
parent | 6c948b05d2865900f722ad3456094db80e49b60f (diff) |
Fixed managedElement required issue
Issue-ID: CCSDK-4107
Change-Id: I6a5c1fb5e7be673d13c622f0fcbbaa3e883f4dfe
Signed-off-by: saul.gill <saul.gill@est.tech>
7 files changed, 152 insertions, 17 deletions
diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/configuration/ApplicationConfigParser.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/configuration/ApplicationConfigParser.java index f5f0f7e7..24c1d258 100644 --- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/configuration/ApplicationConfigParser.java +++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/configuration/ApplicationConfigParser.java @@ -2,7 +2,7 @@ * ========================LICENSE_START================================= * ONAP : ccsdk oran * ====================================================================== - * Copyright (C) 2019-2020 Nordix Foundation. All rights reserved. + * Copyright (C) 2019-2025 OpenInfra Foundation Europe. All rights reserved. * ====================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -148,13 +148,20 @@ public class ApplicationConfigParser { "Configuration error, controller configuration not found: " + controllerName); } - RicConfig ricConfig = RicConfig.builder() // - .ricId(get(ricJsonObj, "name", "id", "ricId").getAsString()) // - .baseUrl(get(ricJsonObj, "baseUrl").getAsString()) // - .managedElementIds(parseManagedElementIds(get(ricJsonObj, "managedElementIds").getAsJsonArray())) // + RicConfig.RicConfigBuilder ricConfigBuilder = RicConfig.builder() + .ricId(get(ricJsonObj, "name", "id", "ricId").getAsString()) + .baseUrl(get(ricJsonObj, "baseUrl").getAsString()) .controllerConfig(controllerConfig) - .customAdapterClass(getString(ricJsonObj, "customAdapterClass", "")) // - .build(); + .customAdapterClass(getString(ricJsonObj, "customAdapterClass", "")); + + if (ricJsonObj.has("managedElementIds")) { + ricConfigBuilder + .managedElementIds(parseManagedElementIds(get(ricJsonObj, "managedElementIds").getAsJsonArray())); + } else { + ricConfigBuilder.managedElementIds(null); + } + + RicConfig ricConfig = ricConfigBuilder.build(); if (!ricConfig.getBaseUrl().isEmpty()) { result.add(ricConfig); } else { diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/RicRepositoryController.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/RicRepositoryController.java index 53abcd71..ee3ce6d2 100644 --- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/RicRepositoryController.java +++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/RicRepositoryController.java @@ -41,9 +41,7 @@ import org.springframework.web.bind.annotation.RestController; import org.springframework.web.server.ServerWebExchange; import reactor.core.publisher.Mono; -import java.util.ArrayList; -import java.util.List; -import java.util.Set; +import java.util.*; @RestController("ricRepositoryControllerV2") @RequiredArgsConstructor @@ -124,9 +122,16 @@ public class RicRepositoryController implements NearRtRicRepositoryApi { } private RicInfo toRicInfo(Ric ric) { - return new RicInfo().ricId(ric.id()) - .managedElementIds((List<String>) ric.getManagedElementIds()) + RicInfo ricInfo = new RicInfo().ricId(ric.id()) .policytypeIds((List<String>) ric.getSupportedPolicyTypeNames()) .state(toRicState(ric.getState())); + + if (ric.getConfig().getManagedElementIds() == null) { + ricInfo.setManagedElementIds(new ArrayList<>()); + } else { + ricInfo.managedElementIds((List<String>) ric.getConfig().getManagedElementIds()); + } + + return ricInfo; } } diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v3/RicRepositoryControllerV3.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v3/RicRepositoryControllerV3.java index ce2769e6..ff33c7c9 100644 --- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v3/RicRepositoryControllerV3.java +++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v3/RicRepositoryControllerV3.java @@ -40,8 +40,7 @@ import org.springframework.web.bind.annotation.RestController; import org.springframework.web.server.ServerWebExchange; import reactor.core.publisher.Mono; -import java.util.List; -import java.util.Set; +import java.util.*; @RestController("ricRepositoryControllerV3") @RequiredArgsConstructor @@ -93,10 +92,17 @@ public class RicRepositoryControllerV3 implements NearRtRicRepositoryApi { } private RicInfo toRicInfo(Ric ric) { - return new RicInfo().ricId(ric.id()) - .managedElementIds((List<String>) ric.getManagedElementIds()) + RicInfo ricInfo = new RicInfo().ricId(ric.id()) .policyTypeIds((List<String>) ric.getSupportedPolicyTypeNames()) .state(toRicState(ric.getState())); + + if (ric.getConfig().getManagedElementIds() == null) { + ricInfo.setManagedElementIds(new ArrayList<>()); + } else { + ricInfo.managedElementIds((List<String>) ric.getConfig().getManagedElementIds()); + } + + return ricInfo; } private RicInfo.StateEnum toRicState(Ric.RicState state) { diff --git a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v3/ConfigurationControllerV3Test.java b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v3/ConfigurationControllerV3Test.java index d9fa63a9..666b37e0 100644 --- a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v3/ConfigurationControllerV3Test.java +++ b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v3/ConfigurationControllerV3Test.java @@ -1,6 +1,6 @@ /*- * ========================LICENSE_START================================= - * Copyright (C) 2020-2023 Nordix Foundation. All rights reserved. + * Copyright (C) 2020-2025 OpenInfra Foundation Europe. All rights reserved. * ====================================================================== * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -53,6 +53,10 @@ import static org.hamcrest.CoreMatchers.equalTo; "app.config-file-schema-path=/application_configuration_schema.json" // }) class ConfigurationControllerV3Test { + + @Autowired + private RefreshConfigTask refreshConfigTask; + @Autowired ApplicationContext context; @@ -120,6 +124,46 @@ class ConfigurationControllerV3Test { } @Test + void testPutConfigurationMeNull() throws Exception { + Mono<ResponseEntity<String>> responseEntityMono = testHelperTest.restClientV3().putForEntity("/configuration", + testHelperTest.configAsStringMeNull()); + testHelperTest.testSuccessResponse(responseEntityMono, HttpStatus.OK, Objects::isNull); + //put Valid Configuration With New Ric should Update Repository. So, will wait until the ric size is 2 + await().until(rics::size, equalTo(2)); + //test Get Configuration + Mono<ResponseEntity<String>> responseGetConfigMono = testHelperTest.restClientV3().getForEntity("/configuration"); + testHelperTest.testSuccessResponse(responseGetConfigMono, HttpStatus.OK, responseBody -> !responseBody.contains("\"managedElementIds\"")); + + refreshConfigTask.start(); + + Mono<ResponseEntity<String>> responseGetRicsMono = testHelperTest.restClientV3().getForEntity("/rics"); + testHelperTest.testSuccessResponse(responseGetRicsMono, HttpStatus.OK, responseBody -> responseBody.contains("\"managedElementIds\":[]")); + + Mono<ResponseEntity<String>> responseGetRicMono = testHelperTest.restClientV3().getForEntity("/rics/ric1"); + testHelperTest.testSuccessResponse(responseGetRicMono, HttpStatus.OK, responseBody -> responseBody.contains("\"managedElementIds\":[]")); + } + + @Test + void testPutConfigurationMeEmpty() throws Exception { + Mono<ResponseEntity<String>> responseEntityMono = testHelperTest.restClientV3().putForEntity("/configuration", + testHelperTest.configAsStringMeEmpty()); + testHelperTest.testSuccessResponse(responseEntityMono, HttpStatus.OK, Objects::isNull); + //put Valid Configuration With New Ric should Update Repository. So, will wait until the ric size is 2 + await().until(rics::size, equalTo(2)); + //test Get Configuration + Mono<ResponseEntity<String>> responseGetConfigMono = testHelperTest.restClientV3().getForEntity("/configuration"); + testHelperTest.testSuccessResponse(responseGetConfigMono, HttpStatus.OK, responseBody -> responseBody.contains("\"managedElementIds\":[]")); + + refreshConfigTask.start(); + + Mono<ResponseEntity<String>> responseGetRicsMono = testHelperTest.restClientV3().getForEntity("/rics"); + testHelperTest.testSuccessResponse(responseGetRicsMono, HttpStatus.OK, responseBody -> responseBody.contains("\"managedElementIds\":[]")); + + Mono<ResponseEntity<String>> responseGetRicMono = testHelperTest.restClientV3().getForEntity("/rics/ric1"); + testHelperTest.testSuccessResponse(responseGetRicMono, HttpStatus.OK, responseBody -> responseBody.contains("\"managedElementIds\":[]")); + } + + @Test void testHealthCheck() { Mono<ResponseEntity<String>> responseHealthCheckMono = testHelperTest.restClientV3().getForEntity("/status"); testHelperTest.testSuccessResponse(responseHealthCheckMono, HttpStatus.OK, responseBody -> responseBody.contains("status")); diff --git a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/utils/v3/TestHelperTest.java b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/utils/v3/TestHelperTest.java index c36429c6..a7b8cc9b 100644 --- a/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/utils/v3/TestHelperTest.java +++ b/a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/utils/v3/TestHelperTest.java @@ -324,4 +324,16 @@ public class TestHelperTest { new File(Objects.requireNonNull(getClass().getClassLoader().getResource("test_application_configuration.json")).getFile()); return FileUtils.readFileToString(configFile, "UTF-8"); } + + public String configAsStringMeNull() throws Exception { + File configFile = + new File(Objects.requireNonNull(getClass().getClassLoader().getResource("test_application_configuration_me_null.json")).getFile()); + return FileUtils.readFileToString(configFile, "UTF-8"); + } + + public String configAsStringMeEmpty() throws Exception { + File configFile = + new File(Objects.requireNonNull(getClass().getClassLoader().getResource("test_application_configuration_me_empty.json")).getFile()); + return FileUtils.readFileToString(configFile, "UTF-8"); + } } diff --git a/a1-policy-management/src/test/resources/test_application_configuration_me_empty.json b/a1-policy-management/src/test/resources/test_application_configuration_me_empty.json new file mode 100644 index 00000000..0bb0985d --- /dev/null +++ b/a1-policy-management/src/test/resources/test_application_configuration_me_empty.json @@ -0,0 +1,32 @@ +{ + "config": { + "description": "Test", + "controller": [ + { + "name": "controller1", + "baseUrl": "http://localhost:8083/", + "userName": "user", + "password": "password" + } + ], + "ric": [ + { + "name": "ric1", + "controller": "controller1", + "baseUrl": "http://localhost:8083/", + "customAdapterClass": "org.onap.ccsdk.oran.a1policymanagementservice.clients.StdA1ClientVersion2$Factory", + "managedElementIds": [] + }, + { + "name": "ric2", + "baseUrl": "http://localhost:8085/", + "managedElementIds": [] + }, + { + "name": "ric3_noBaseURL", + "baseUrl": "", + "managedElementIds": [] + } + ] + } +} diff --git a/a1-policy-management/src/test/resources/test_application_configuration_me_null.json b/a1-policy-management/src/test/resources/test_application_configuration_me_null.json new file mode 100644 index 00000000..4fa7ff96 --- /dev/null +++ b/a1-policy-management/src/test/resources/test_application_configuration_me_null.json @@ -0,0 +1,29 @@ +{ + "config": { + "description": "Test", + "controller": [ + { + "name": "controller1", + "baseUrl": "http://localhost:8083/", + "userName": "user", + "password": "password" + } + ], + "ric": [ + { + "name": "ric1", + "controller": "controller1", + "baseUrl": "http://localhost:8083/", + "customAdapterClass": "org.onap.ccsdk.oran.a1policymanagementservice.clients.StdA1ClientVersion2$Factory" + }, + { + "name": "ric2", + "baseUrl": "http://localhost:8085/" + }, + { + "name": "ric3_noBaseURL", + "baseUrl": "" + } + ] + } +} |