Use mapper to find service name
Use objectMapper to find the service name instead of using
hard-coded service name.
Change-Id: If436c65d9a9a4942eaf30ea20bc7b85e3e7694c1
Signed-off-by: Lei YU <mine260309@gmail.com>
diff --git a/manager.cpp b/manager.cpp
index 36ff351..03992b1 100644
--- a/manager.cpp
+++ b/manager.cpp
@@ -7,7 +7,6 @@
namespace // anonymous
{
-constexpr auto SETTINGS_SERVICE = "org.openbmc.settings.Host";
constexpr auto SETTINGS_PATH = "/org/openbmc/settings/host0";
constexpr auto SETTINGS_INTERFACE = "org.openbmc.settings.Host";
@@ -24,19 +23,17 @@
rules::path("/org/openbmc/control/power0") +
rules::interface("org.freedesktop.DBus.Properties");
-constexpr auto POWER_SERVICE = "org.openbmc.control.Power";
constexpr auto POWER_PATH = "/org/openbmc/control/power0";
-constexpr auto POWER_INTERFACE = POWER_SERVICE;
+constexpr auto POWER_INTERFACE = "org.openbmc.control.Power";
constexpr auto PGOOD_STR = "pgood";
constexpr auto SYSTEMD_TIME_SERVICE = "org.freedesktop.timedate1";
constexpr auto SYSTEMD_TIME_PATH = "/org/freedesktop/timedate1";
-constexpr auto SYSTEMD_TIME_INTERFACE = SYSTEMD_TIME_SERVICE;
+constexpr auto SYSTEMD_TIME_INTERFACE = "org.freedesktop.timedate1";
constexpr auto METHOD_SET_NTP = "SetNTP";
-constexpr auto OBMC_NETWORK_SERVICE = "org.openbmc.NetworkManager";
constexpr auto OBMC_NETWORK_PATH = "/org/openbmc/NetworkManager/Interface";
-constexpr auto OBMC_NETWORK_INTERFACE = OBMC_NETWORK_SERVICE;
+constexpr auto OBMC_NETWORK_INTERFACE = "org.openbmc.NetworkManager";
constexpr auto METHOD_UPDATE_USE_NTP = "UpdateUseNtpField";
}
@@ -92,8 +89,17 @@
void Manager::checkHostOn()
{
+ std::string powerService = utils::getService(bus,
+ POWER_PATH,
+ POWER_INTERFACE);
+ if (powerService.empty())
+ {
+ log<level::ERR>("Failed to get power service, assume host is off");
+ return;
+ }
+
int pgood = utils::getProperty<int>(bus,
- POWER_SERVICE,
+ powerService.c_str(),
POWER_PATH,
POWER_INTERFACE,
PGOOD_STR);
@@ -102,12 +108,7 @@
void Manager::checkDhcpNtp()
{
- std::string useDhcpNtp = utils::getProperty<std::string>(
- bus,
- SETTINGS_SERVICE,
- SETTINGS_PATH,
- SETTINGS_INTERFACE,
- PROPERTY_DHCP_NTP);
+ std::string useDhcpNtp = getSettings(PROPERTY_DHCP_NTP);
updateDhcpNtpSetting(useDhcpNtp);
}
@@ -217,7 +218,16 @@
void Manager::updateDhcpNtpSetting(const std::string& useDhcpNtp)
{
- auto method = bus.new_method_call(OBMC_NETWORK_SERVICE,
+ std::string networkService = utils::getService(bus,
+ OBMC_NETWORK_PATH,
+ OBMC_NETWORK_INTERFACE);
+ if (networkService.empty())
+ {
+ log<level::ERR>("Failed to get network service, ignore dhcp ntp");
+ return;
+ }
+
+ auto method = bus.new_method_call(networkService.c_str(),
OBMC_NETWORK_PATH,
OBMC_NETWORK_INTERFACE,
METHOD_UPDATE_USE_NTP);
@@ -333,14 +343,23 @@
}
}
-std::string Manager::getSettings(const char* value) const
+std::string Manager::getSettings(const char* setting) const
{
- return utils::getProperty<std::string>(
- bus,
- SETTINGS_SERVICE,
- SETTINGS_PATH,
- SETTINGS_INTERFACE,
- value);
+ std::string settingsService = utils::getService(bus,
+ SETTINGS_PATH,
+ SETTINGS_INTERFACE);
+ if (settingsService.empty())
+ {
+ log<level::ERR>("Failed to get settings service, unable to get setting",
+ entry("SETTING=%s", setting));
+ return {};
+ }
+
+ return utils::getProperty<std::string>(bus,
+ settingsService.c_str(),
+ SETTINGS_PATH,
+ SETTINGS_INTERFACE,
+ setting);
}
}