X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=src%2Fredis%2Fasyncdatabasediscovery.cpp;h=b57955e049c60fc28ac8d37166c2c118d72095c5;hb=5bdca62d89d430f607310370fe1391bd1d1bd21a;hp=892e7cc0ab69883003771c9552080927c205f11a;hpb=ef2bf51d04aaf01fa0cabdcaf905b23423067662;p=ric-plt%2Fsdl.git diff --git a/src/redis/asyncdatabasediscovery.cpp b/src/redis/asyncdatabasediscovery.cpp index 892e7cc..b57955e 100644 --- a/src/redis/asyncdatabasediscovery.cpp +++ b/src/redis/asyncdatabasediscovery.cpp @@ -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. @@ -14,24 +14,31 @@ limitations under the License. */ -#include "private/redis/asyncdatabasediscovery.hpp" -#include "private/databaseconfiguration.hpp" -#include "private/logger.hpp" +/* + * This source code is part of the near-RT RIC (RAN Intelligent Controller) + * platform project (RICP). +*/ + #include #include "config.h" +#include "private/abort.hpp" +#include "private/databaseconfiguration.hpp" +#include "private/logger.hpp" +#include "private/redis/asyncdatabasediscovery.hpp" #if HAVE_HIREDIS #include "private/redis/asynchiredisdatabasediscovery.hpp" #endif -#include "private/abort.hpp" +#include "private/redis/asyncsentineldatabasediscovery.hpp" using namespace shareddatalayer::redis; std::shared_ptr AsyncDatabaseDiscovery::create(std::shared_ptr engine, const boost::optional& ns, const DatabaseConfiguration& staticDatabaseConfiguration, + const boost::optional& addressIndex, std::shared_ptr logger) { - auto staticAddresses(staticDatabaseConfiguration.getServerAddresses()); + auto staticAddresses(staticDatabaseConfiguration.getServerAddresses(addressIndex)); if (staticAddresses.empty()) staticAddresses = staticDatabaseConfiguration.getDefaultServerAddresses(); @@ -49,15 +56,33 @@ std::shared_ptr AsyncDatabaseDiscovery::create(std::shar SHAREDDATALAYER_ABORT("No Hiredis vip for Redis cluster configuration"); #endif else + { #if HAVE_HIREDIS - return std::make_shared(engine, - ns, - DatabaseInfo::Type::SINGLE, - staticAddresses, - logger); + if (staticDbType == DatabaseConfiguration::DbType::REDIS_SENTINEL || + staticDbType == DatabaseConfiguration::DbType::SDL_SENTINEL_CLUSTER) + { + auto sentinelAddress(staticDatabaseConfiguration.getSentinelAddress(addressIndex)); + auto sentinelMasterName(staticDatabaseConfiguration.getSentinelMasterName(addressIndex)); + + if (sentinelAddress) + return std::make_shared(engine, + logger, + *sentinelAddress, + sentinelMasterName); + else + SHAREDDATALAYER_ABORT("Sentinel address not configured."); + } + else + { + return std::make_shared(engine, + ns, + DatabaseInfo::Type::SINGLE, + staticAddresses, + logger); + } #else static_cast(logger); SHAREDDATALAYER_ABORT("No Hiredis"); #endif + } } -