aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsaul.gill <saul.gill@est.tech>2025-03-20 16:13:12 +0000
committersaul.gill <saul.gill@est.tech>2025-03-24 09:45:39 +0000
commit2690a191ff5a27f24b46fd39c314a59aa8381320 (patch)
treeaeba8e7e35794e1d7017b7ce62c1631bc07d5cd3
parent6c948b05d2865900f722ad3456094db80e49b60f (diff)
Fixed managedElement required issue
Issue-ID: CCSDK-4107 Change-Id: I6a5c1fb5e7be673d13c622f0fcbbaa3e883f4dfe Signed-off-by: saul.gill <saul.gill@est.tech>
-rw-r--r--a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/configuration/ApplicationConfigParser.java21
-rw-r--r--a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/RicRepositoryController.java15
-rw-r--r--a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v3/RicRepositoryControllerV3.java14
-rw-r--r--a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v3/ConfigurationControllerV3Test.java46
-rw-r--r--a1-policy-management/src/test/java/org/onap/ccsdk/oran/a1policymanagementservice/utils/v3/TestHelperTest.java12
-rw-r--r--a1-policy-management/src/test/resources/test_application_configuration_me_empty.json32
-rw-r--r--a1-policy-management/src/test/resources/test_application_configuration_me_null.json29
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": ""
+ }
+ ]
+ }
+}