diff options
Diffstat (limited to 'cps-service/src')
3 files changed, 53 insertions, 2 deletions
diff --git a/cps-service/src/main/java/org/onap/cps/cache/AnchorDataCacheConfig.java b/cps-service/src/main/java/org/onap/cps/cache/AnchorDataCacheConfig.java index 54d6ff3953..3acba0bb3b 100644 --- a/cps-service/src/main/java/org/onap/cps/cache/AnchorDataCacheConfig.java +++ b/cps-service/src/main/java/org/onap/cps/cache/AnchorDataCacheConfig.java @@ -1,6 +1,6 @@ /* * ============LICENSE_START======================================================== - * Copyright (C) 2022 Nordix Foundation + * Copyright (C) 2022-2023 Nordix Foundation * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,15 +26,24 @@ import com.hazelcast.config.NamedConfig; import com.hazelcast.core.Hazelcast; import com.hazelcast.core.HazelcastInstance; import com.hazelcast.map.IMap; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * Core infrastructure of the hazelcast distributed cache for anchor data config use cases. */ +@Slf4j @Configuration public class AnchorDataCacheConfig { + @Value("${hazelcast.mode.kubernetes.enabled}") + private boolean cacheKubernetesEnabled; + + @Value("${hazelcast.mode.kubernetes.service-name}") + private String cacheKubernetesServiceName; + private static final MapConfig anchorDataCacheMapConfig = createMapConfig("anchorDataCacheMapConfig"); /** @@ -57,6 +66,7 @@ public class AnchorDataCacheConfig { final Config config = new Config(instanceName); config.addMapConfig((MapConfig) namedConfig); config.setClusterName("cps-service-caches"); + updateDiscoveryMode(config); return config; } @@ -67,4 +77,12 @@ public class AnchorDataCacheConfig { return mapConfig; } + private void updateDiscoveryMode(final Config config) { + if (cacheKubernetesEnabled) { + log.info("Enabling kubernetes mode with service-name : {}", cacheKubernetesServiceName); + config.getNetworkConfig().getJoin().getKubernetesConfig().setEnabled(true) + .setProperty("service-name", cacheKubernetesServiceName); + } + } + } diff --git a/cps-service/src/test/groovy/org/onap/cps/cache/AnchorDataCacheConfigSpec.groovy b/cps-service/src/test/groovy/org/onap/cps/cache/AnchorDataCacheConfigSpec.groovy index 839444b680..76b5345534 100644 --- a/cps-service/src/test/groovy/org/onap/cps/cache/AnchorDataCacheConfigSpec.groovy +++ b/cps-service/src/test/groovy/org/onap/cps/cache/AnchorDataCacheConfigSpec.groovy @@ -1,6 +1,6 @@ /* * ============LICENSE_START======================================================= - * Copyright (C) 2022 Nordix Foundation + * Copyright (C) 2022-2023 Nordix Foundation * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,6 +19,8 @@ */ package org.onap.cps.cache + +import com.hazelcast.config.Config import com.hazelcast.core.Hazelcast import com.hazelcast.map.IMap import org.springframework.beans.factory.annotation.Autowired @@ -49,4 +51,28 @@ class AnchorDataCacheConfigSpec extends Specification { assert anchorDataCacheConfig.backupCount == 3 assert anchorDataCacheConfig.asyncBackupCount == 3 } + + def 'Verify deployment network configs for Distributed Caches'() { + given: 'the Anchor Data Cache config' + def anchorDataCacheNetworkConfig = Hazelcast.getHazelcastInstanceByName('hazelCastInstanceCpsCore').config.networkConfig + expect: 'system created instance with correct config' + assert anchorDataCacheNetworkConfig.join.autoDetectionConfig.enabled + assert !anchorDataCacheNetworkConfig.join.kubernetesConfig.enabled + } + + def 'Verify network config'() { + given: 'Synchronization config object and test configuration' + def objectUnderTest = new AnchorDataCacheConfig() + def testConfig = new Config() + when: 'kubernetes properties are enabled' + objectUnderTest.cacheKubernetesEnabled = true + objectUnderTest.cacheKubernetesServiceName = 'test-service-name' + and: 'method called to update the discovery mode' + objectUnderTest.updateDiscoveryMode(testConfig) + then: 'applied properties are reflected' + assert testConfig.networkConfig.join.kubernetesConfig.enabled + assert testConfig.networkConfig.join.kubernetesConfig.properties.get('service-name') == 'test-service-name' + + } + } diff --git a/cps-service/src/test/resources/application.yml b/cps-service/src/test/resources/application.yml index 04295eb74f..21f3745337 100644 --- a/cps-service/src/test/resources/application.yml +++ b/cps-service/src/test/resources/application.yml @@ -48,3 +48,10 @@ spring: logging: level: org.apache.kafka: ERROR + +# Custom Hazelcast Config. +hazelcast: + mode: + kubernetes: + enabled: false + service-name: "cps-and-ncmp-service" |