phosphor-ldap-conf: Implement the Delete interface

Implement the xyz.openbmc_project.Object.Delete interface
to delete LDAP config object.

Change-Id: Ia7413fd10c91ad5c79286fbe4a00740ced42aad6
Signed-off-by: Nagaraju Goruganti <ngorugan@in.ibm.com>
diff --git a/phosphor-ldap-config/ldap_configuration.cpp b/phosphor-ldap-config/ldap_configuration.cpp
index 6680541..3a4ed2e 100644
--- a/phosphor-ldap-config/ldap_configuration.cpp
+++ b/phosphor-ldap-config/ldap_configuration.cpp
@@ -40,6 +40,11 @@
     this->emit_object_added();
 }
 
+void Config::delete_()
+{
+    parent.deleteObject();
+}
+
 void Config::writeConfig()
 {
     std::stringstream confData;
@@ -320,6 +325,11 @@
     }
 }
 
+void ConfigMgr::deleteObject()
+{
+    configPtr.reset(nullptr);
+}
+
 std::string
     ConfigMgr::createConfig(bool secureLDAP, std::string lDAPServerURI,
                             std::string lDAPBindDN, std::string lDAPBaseDN,
@@ -329,7 +339,7 @@
 {
     // TODO Validate parameters passed-in.
     // With current implementation we support only one LDAP server.
-    configPtr.reset(nullptr);
+    deleteObject();
 
     auto objPath = std::string(LDAP_CONFIG_DBUS_OBJ_PATH);
     configPtr = std::make_unique<Config>(
diff --git a/phosphor-ldap-config/ldap_configuration.hpp b/phosphor-ldap-config/ldap_configuration.hpp
index a0324c1..58e9930 100644
--- a/phosphor-ldap-config/ldap_configuration.hpp
+++ b/phosphor-ldap-config/ldap_configuration.hpp
@@ -1,6 +1,7 @@
 #pragma once
 
 #include "config.h"
+#include <xyz/openbmc_project/Object/Delete/server.hpp>
 #include <xyz/openbmc_project/User/Ldap/Config/server.hpp>
 #include <xyz/openbmc_project/User/Ldap/Create/server.hpp>
 #include <xyz/openbmc_project/Common/error.hpp>
@@ -23,7 +24,8 @@
 using namespace phosphor::logging;
 using namespace sdbusplus::xyz::openbmc_project::Common::Error;
 namespace ldap_base = sdbusplus::xyz::openbmc_project::User::Ldap::server;
-using ConfigIface = sdbusplus::server::object::object<ldap_base::Config>;
+using ConfigIface = sdbusplus::server::object::object<
+    ldap_base::Config, sdbusplus::xyz::openbmc_project::Object::server::Delete>;
 using CreateIface = sdbusplus::server::object::object<ldap_base::Create>;
 
 class ConfigMgr;
@@ -116,6 +118,10 @@
      */
     ldap_base::Config::Type lDAPType(ldap_base::Config::Type value) override;
 
+    /** @brief Delete this D-bus object.
+     */
+    void delete_() override;
+
   private:
     std::string configFilePath{};
 
@@ -190,6 +196,10 @@
      */
     virtual void restartService(const std::string& service);
 
+    /** @brief delete the config D-Bus object.
+     */
+    void deleteObject();
+
   private:
     /** @brief Persistent sdbusplus D-Bus bus connection. */
     sdbusplus::bus::bus& bus;