Extend capability of distributed cache
[cps.git] / cps-service / src / main / java / org / onap / cps / cache / AnchorDataCacheConfig.java
index 54d6ff3..3acba0b 100644 (file)
@@ -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);
+        }
+    }
+
 }