Enable redis/sentinel port and sentinel master name configuration
[ric-plt/sdl.git] / src / redis / asyncdatabasediscovery.cpp
index 66a440d..b57955e 100644 (file)
@@ -1,5 +1,5 @@
 /*
-   Copyright (c) 2018-2019 Nokia.
+   Copyright (c) 2018-2022 Nokia.
 
    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    limitations under the License.
 */
 
+/*
+ * This source code is part of the near-RT RIC (RAN Intelligent Controller)
+ * platform project (RICP).
+*/
+
 #include <cstdlib>
 #include "config.h"
 #include "private/abort.hpp"
@@ -30,9 +35,10 @@ using namespace shareddatalayer::redis;
 std::shared_ptr<AsyncDatabaseDiscovery> AsyncDatabaseDiscovery::create(std::shared_ptr<Engine> engine,
                                                                        const boost::optional<Namespace>& ns,
                                                                        const DatabaseConfiguration& staticDatabaseConfiguration,
+                                                                       const boost::optional<std::size_t>& addressIndex,
                                                                        std::shared_ptr<Logger> logger)
 {
-    auto staticAddresses(staticDatabaseConfiguration.getServerAddresses());
+    auto staticAddresses(staticDatabaseConfiguration.getServerAddresses(addressIndex));
 
     if (staticAddresses.empty())
         staticAddresses = staticDatabaseConfiguration.getDefaultServerAddresses();
@@ -52,15 +58,17 @@ std::shared_ptr<AsyncDatabaseDiscovery> AsyncDatabaseDiscovery::create(std::shar
     else
     {
 #if HAVE_HIREDIS
-        if (staticDbType == DatabaseConfiguration::DbType::REDIS_SENTINEL)
+        if (staticDbType == DatabaseConfiguration::DbType::REDIS_SENTINEL ||
+            staticDbType == DatabaseConfiguration::DbType::SDL_SENTINEL_CLUSTER)
         {
-            static_cast<void>(ns);
-            auto sentinelAddress(staticDatabaseConfiguration.getSentinelAddress());
+            auto sentinelAddress(staticDatabaseConfiguration.getSentinelAddress(addressIndex));
+            auto sentinelMasterName(staticDatabaseConfiguration.getSentinelMasterName(addressIndex));
+
             if (sentinelAddress)
                 return std::make_shared<AsyncSentinelDatabaseDiscovery>(engine,
                                                                         logger,
                                                                         *sentinelAddress,
-                                                                        staticDatabaseConfiguration.getSentinelMasterName());
+                                                                        sentinelMasterName);
             else
                 SHAREDDATALAYER_ABORT("Sentinel address not configured.");
         }