summaryrefslogtreecommitdiffstats
path: root/activation.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'activation.hpp')
-rw-r--r--activation.hpp64
1 files changed, 55 insertions, 9 deletions
diff --git a/activation.hpp b/activation.hpp
index 6c303db..d1d050a 100644
--- a/activation.hpp
+++ b/activation.hpp
@@ -19,14 +19,15 @@ using AssociationList =
std::vector<std::tuple<std::string, std::string, std::string>>;
using ActivationInherit = sdbusplus::server::object::object<
sdbusplus::xyz::openbmc_project::Software::server::Activation,
- sdbusplus::org::openbmc::server::Associations,
- sdbusplus::xyz::openbmc_project::Object::server::Delete>;
+ sdbusplus::org::openbmc::server::Associations>;
using ActivationBlocksTransitionInherit = sdbusplus::server::object::object<
sdbusplus::xyz::openbmc_project::Software::server::ActivationBlocksTransition>;
using RedundancyPriorityInherit = sdbusplus::server::object::object<
sdbusplus::xyz::openbmc_project::Software::server::RedundancyPriority>;
using ActivationProgressInherit = sdbusplus::server::object::object<
sdbusplus::xyz::openbmc_project::Software::server::ActivationProgress>;
+using DeleteInherit = sdbusplus::server::object::object<
+ sdbusplus::xyz::openbmc_project::Object::server::Delete>;
namespace sdbusRule = sdbusplus::bus::match::rules;
@@ -166,8 +167,55 @@ class ActivationProgress : public ActivationProgressInherit
std::string path;
};
-// TODO: openbmc/openbmc#2086 - Add removeActiveAssociation() after
-// Delete() is implemented
+/** @class ActivationDelete
+ * @brief OpenBMC Delete implementation.
+ * @details A concrete implementation for xyz.openbmc_project.Object.Delete
+ * DBus API.
+ */
+class Delete : public DeleteInherit
+{
+ public:
+ /** @brief Constructs Delete.
+ *
+ * @param[in] bus - The Dbus bus object
+ * @param[in] path - The Dbus object path
+ * @param[in] parent - Parent object.
+ */
+ // Delete(sdbusplus::bus::bus& bus, const std::string& path) :
+ Delete(sdbusplus::bus::bus& bus,
+ const std::string& path,
+ Activation& parent) :
+ DeleteInherit(bus, path.c_str(), true),
+ parent(parent),
+ bus(bus),
+ path(path)
+ {
+ std::vector<std::string> interfaces({interface});
+ bus.emit_interfaces_added(path.c_str(), interfaces);
+ }
+
+ ~Delete()
+ {
+ std::vector<std::string> interfaces({interface});
+ bus.emit_interfaces_removed(path.c_str(), interfaces);
+ }
+
+ /**
+ * @brief delete the d-bus object.
+ */
+ void delete_() override;
+
+ /** @brief Parent Object. */
+ Activation& parent;
+
+ private:
+ // TODO Remove once openbmc/openbmc#1975 is resolved
+ static constexpr auto interface =
+ "xyz.openbmc_project.Object.Delete";
+ sdbusplus::bus::bus& bus;
+ std::string path;
+};
+
/** @class Activation
* @brief OpenBMC activation software management implementation.
* @details A concrete implementation for
@@ -272,11 +320,6 @@ class Activation : public ActivationInherit
*/
void updateUbootEnvVars();
- /**
- * @brief delete the d-bus object.
- */
- void delete_() override;
-
/** @brief Persistent sdbusplus DBus bus connection */
sdbusplus::bus::bus& bus;
@@ -298,6 +341,9 @@ class Activation : public ActivationInherit
/** @brief Persistent ActivationProgress dbus object */
std::unique_ptr<ActivationProgress> activationProgress;
+ /** @brief Persistent Delete dbus object */
+ std::unique_ptr<Delete> deleteObject;
+
/** @brief Used to subscribe to dbus systemd signals **/
sdbusplus::bus::match_t systemdSignals;
OpenPOWER on IntegriCloud