blob: 8835ca654288c82527fbe09cf15b3d01a5d816fb [file] [log] [blame]
Adriana Kobylak2d8fa222017-03-15 12:34:32 -05001#pragma once
2
Adriana Kobylak99c8c0e2017-04-17 13:39:11 -05003#include <sdbusplus/server.hpp>
Adriana Kobylak2d8fa222017-03-15 12:34:32 -05004#include <xyz/openbmc_project/Software/Activation/server.hpp>
Adriana Kobylakea9626f2017-04-05 15:37:40 -05005#include <xyz/openbmc_project/Software/ActivationBlocksTransition/server.hpp>
Saqib Khan7254f0e2017-04-10 21:45:37 -05006#include "xyz/openbmc_project/Software/ExtendedVersion/server.hpp"
Saqib Khan942df8a2017-06-01 14:09:27 -05007#include "xyz/openbmc_project/Software/RedundancyPriority/server.hpp"
Adriana Kobylak2d8fa222017-03-15 12:34:32 -05008
9namespace openpower
10{
11namespace software
12{
Adriana Kobylakbefe5ce2017-04-05 15:57:44 -050013namespace updater
Adriana Kobylak2d8fa222017-03-15 12:34:32 -050014{
15
16using ActivationInherit = sdbusplus::server::object::object<
Saqib Khan7254f0e2017-04-10 21:45:37 -050017 sdbusplus::xyz::openbmc_project::Software::server::ExtendedVersion,
Adriana Kobylak2d8fa222017-03-15 12:34:32 -050018 sdbusplus::xyz::openbmc_project::Software::server::Activation>;
Adriana Kobylakea9626f2017-04-05 15:37:40 -050019using ActivationBlocksTransitionInherit = sdbusplus::server::object::object<
20 sdbusplus::xyz::openbmc_project::Software::server::ActivationBlocksTransition>;
Saqib Khan942df8a2017-06-01 14:09:27 -050021using RedundancyPriorityInherit = sdbusplus::server::object::object<
22 sdbusplus::xyz::openbmc_project::Software::server::RedundancyPriority>;
23
24/** @class RedundancyPriority
25 * @brief OpenBMC RedundancyPriority implementation
26 * @details A concrete implementation for
27 * xyz.openbmc_project.Software.RedundancyPriority DBus API.
28 */
29class RedundancyPriority : public RedundancyPriorityInherit
30{
31 public:
32 /** @brief Constructs RedundancyPriority.
33 *
34 * @param[in] bus - The Dbus bus object
35 * @param[in] path - The Dbus object path
36 */
37 RedundancyPriority(sdbusplus::bus::bus& bus,
38 const std::string& path) :
39 RedundancyPriorityInherit(bus,
40 path.c_str(), true)
41 {
42 // Set Property
43 priority(0);
44 // Emit deferred signal.
45 emit_object_added();
46 }
47};
Adriana Kobylak2d8fa222017-03-15 12:34:32 -050048
Adriana Kobylak99c8c0e2017-04-17 13:39:11 -050049/** @class ActivationBlocksTransition
50 * @brief OpenBMC ActivationBlocksTransition implementation.
51 * @details A concrete implementation for
52 * xyz.openbmc_project.Software.ActivationBlocksTransition DBus API.
53 */
54class ActivationBlocksTransition : public ActivationBlocksTransitionInherit
55{
56 public:
57 /** @brief Constructs ActivationBlocksTransition.
58 *
59 * @param[in] bus - The Dbus bus object
60 * @param[in] path - The Dbus object path
61 */
62 ActivationBlocksTransition(sdbusplus::bus::bus& bus,
63 const std::string& path) :
64 ActivationBlocksTransitionInherit(bus, path.c_str()) {}
65};
66
Adriana Kobylak2d8fa222017-03-15 12:34:32 -050067/** @class Activation
68 * @brief OpenBMC activation software management implementation.
69 * @details A concrete implementation for
70 * xyz.openbmc_project.Software.Activation DBus API.
71 */
72class Activation : public ActivationInherit
73{
74 public:
75 /** @brief Constructs Activation Software Manager
76 *
77 * @param[in] bus - The Dbus bus object
78 * @param[in] path - The Dbus object path
Saqib Khan7254f0e2017-04-10 21:45:37 -050079 * @param[in] versionId - The software version id
80 * @param[in] extVersion - The extended version
Saqib Khana8ade7e2017-04-12 10:27:56 -050081 * @param[in] activationStatus - The status of Activation
Adriana Kobylak2d8fa222017-03-15 12:34:32 -050082 */
Adriana Kobylakbc37a4c2017-04-10 09:45:36 -050083 Activation(sdbusplus::bus::bus& bus, const std::string& path,
Saqib Khan7254f0e2017-04-10 21:45:37 -050084 std::string& versionId,
Saqib Khana8ade7e2017-04-12 10:27:56 -050085 std::string& extVersion,
86 sdbusplus::xyz::openbmc_project::Software::
87 server::Activation::Activations activationStatus) :
Saqib Khan7254f0e2017-04-10 21:45:37 -050088 ActivationInherit(bus, path.c_str(), true),
Adriana Kobylak99c8c0e2017-04-17 13:39:11 -050089 bus(bus),
90 path(path),
Saqib Khan7254f0e2017-04-10 21:45:37 -050091 versionId(versionId)
92 {
93 // Set Properties.
94 extendedVersion(extVersion);
Saqib Khana8ade7e2017-04-12 10:27:56 -050095 activation(activationStatus);
Saqib Khan7254f0e2017-04-10 21:45:37 -050096 // Emit deferred signal.
97 emit_object_added();
98 }
Adriana Kobylakbefe5ce2017-04-05 15:57:44 -050099
100 /** @brief Overloaded Activation property setter function
101 *
102 * @param[in] value - One of Activation::Activations
103 *
104 * @return Success or exception thrown
105 */
106 Activations activation(Activations value) override;
107
108 /** @brief Overloaded requestedActivation property setter function
109 *
110 * @param[in] value - One of Activation::RequestedActivations
111 *
112 * @return Success or exception thrown
113 */
114 RequestedActivations requestedActivation(RequestedActivations value)
115 override;
116
Adriana Kobylak99c8c0e2017-04-17 13:39:11 -0500117 /** @brief Persistent sdbusplus DBus bus connection */
118 sdbusplus::bus::bus& bus;
119
120 /** @brief Persistent DBus object path */
121 std::string path;
122
Adriana Kobylakbc37a4c2017-04-10 09:45:36 -0500123 /** @brief Version id */
124 std::string versionId;
Adriana Kobylak2d8fa222017-03-15 12:34:32 -0500125
Adriana Kobylak99c8c0e2017-04-17 13:39:11 -0500126 /** @brief Persistent ActivationBlocksTransition dbus object */
127 std::unique_ptr<ActivationBlocksTransition> activationBlocksTransition;
Saqib Khan942df8a2017-06-01 14:09:27 -0500128
129 /** @brief Persistent RedundancyPriority dbus object */
130 std::unique_ptr<RedundancyPriority> redundancyPriority;
Adriana Kobylakea9626f2017-04-05 15:37:40 -0500131};
132
Adriana Kobylakbefe5ce2017-04-05 15:57:44 -0500133} // namespace updater
Adriana Kobylak2d8fa222017-03-15 12:34:32 -0500134} // namespace software
135} // namespace openpower
136