Conditional enable the ldap configuration
If any of the existing ldap config(openldap/AD) is
already enabled,The other ldap configuration can't be
enabled.
TestedBy: Unit-Tested
Tested the above behaviour.It throws the
error back if try to enable the configuration
when there is already active configuration.
If there is no active configuration then it
allows to enable the configuration.
Signed-off-by: Ratan Gupta <ratagupt@linux.vnet.ibm.com>
Change-Id: I5b6008036152cd36e5422bb372a05c8a3ec3d24b
diff --git a/phosphor-ldap-config/ldap_config_mgr.cpp b/phosphor-ldap-config/ldap_config_mgr.cpp
index 65d4bda..9142538 100644
--- a/phosphor-ldap-config/ldap_config_mgr.cpp
+++ b/phosphor-ldap-config/ldap_config_mgr.cpp
@@ -19,6 +19,8 @@
using namespace sdbusplus::xyz::openbmc_project::Common::Error;
namespace fs = std::filesystem;
using Argument = xyz::openbmc_project::Common::InvalidArgument;
+using NotAllowed = sdbusplus::xyz::openbmc_project::Common::Error::NotAllowed;
+using NotAllowedArgument = xyz::openbmc_project::Common::NotAllowed;
using Line = std::string;
using Key = std::string;
@@ -172,6 +174,24 @@
}
}
+bool ConfigMgr::enableService(Config& config, bool value)
+{
+ if (value)
+ {
+ if (openLDAPConfigPtr && openLDAPConfigPtr->enabled())
+ {
+ elog<NotAllowed>(NotAllowedArgument::REASON(
+ "OpenLDAP service is already active"));
+ }
+ if (ADConfigPtr && ADConfigPtr->enabled())
+ {
+ elog<NotAllowed>(NotAllowedArgument::REASON(
+ "ActiveDirectory service is already active"));
+ }
+ }
+ return config.enableService(value);
+}
+
void ConfigMgr::restore()
{
createDefaultObjects();