From: "Bruce Lee (李昀峻)" <Bruce_Lee@quantatw.com>
To: "openbmc@lists.ozlabs.org" <openbmc@lists.ozlabs.org>,
"vijaykhemka@fb.com" <vijaykhemka@fb.com>
Subject: openbmc/phosphor-health-monitor issues, please help check.
Date: Mon, 21 Sep 2020 09:42:32 +0000 [thread overview]
Message-ID: <bcec42e287d64978a3c648745b8b4322@quantatw.com> (raw)
[-- Attachment #1.1: Type: text/plain, Size: 2512 bytes --]
Hi Vijay,
I found one question in openbmc/phosphor-health-monitor
The service healthMon via above functions created has not the org.freedesktop.DBus.ObjectManager on the root,
and this will cause the sensor not be generated correctly via redfish url /redfish/v1/Chassis/chassis/Sensors/CPU, /redfish/v1/Chassis/chassis/Sensors/Memory
Because redfish will method GetSubTree to collect sensors via org.freedesktop.DBus.ObjectManager
I found a solution for your reference and show at bellow, you can use sdbusplus/server/manager.hpp which provide a function to add ObjectManager on the root.
Hence, I can get CPU, Memory information correctly via redfish url /redfish/v1/Chassis/chassis/Sensors/CPU, /redfish/v1/Chassis/chassis/Sensors/Memory
#include <sdbusplus/server/manager.hpp>
class HealthMon
{
public:
HealthMon() = delete;
HealthMon(const HealthMon&) = delete;
HealthMon& operator=(const HealthMon&) = delete;
HealthMon(HealthMon&&) = delete;
HealthMon& operator=(HealthMon&&) = delete;
virtual ~HealthMon() = default;
/** @brief Constructs HealthMon
*
* @param[in] bus - Handle to system dbus
*/
HealthMon(sdbusplus::bus::bus& bus) : bus(bus)
{
// read json file
sensorConfigs = getHealthConfig();
createHealthSensors();
add_manager("/");
}
/** @brief Parsing Health config JSON file */
Json parseConfigFile(std::string configFile);
/** @brief reading config for each health sensor component */
void getConfigData(Json& data, HealthConfig& cfg);
/** @brief Map of the object HealthSensor */
std::unordered_map<std::string, std::shared_ptr<HealthSensor>>
healthSensors;
/** @brief Create sensors for health monitoring */
void createHealthSensors();
void add_manager(const std::string& path)
{
managers_.emplace_back(
std::make_unique<sdbusplus::server::manager::manager>(
sdbusplus::server::manager::manager(
bus, path.c_str())));
}
private:
sdbusplus::bus::bus& bus;
std::vector<HealthConfig> sensorConfigs;
std::vector<HealthConfig> getHealthConfig();
std::vector<std::unique_ptr<sdbusplus::server::manager::manager>> managers_;
};
This pic is the add org.freedesktop.DBus.ObjectManager on the root for reference.
[cid:image003.jpg@01D6903E.94B636F0]
[cid:image004.jpg@01D6903E.94B636F0]
Best Regards,
Bruce
[-- Attachment #1.2: Type: text/html, Size: 15639 bytes --]
[-- Attachment #2: image003.jpg --]
[-- Type: image/jpeg, Size: 26229 bytes --]
[-- Attachment #3: image004.jpg --]
[-- Type: image/jpeg, Size: 25741 bytes --]
next reply other threads:[~2020-09-22 2:56 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-09-21 9:42 Bruce Lee (李昀峻) [this message]
2020-09-23 6:12 ` openbmc/phosphor-health-monitor issues, please help check Vijay Khemka
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=bcec42e287d64978a3c648745b8b4322@quantatw.com \
--to=bruce_lee@quantatw.com \
--cc=openbmc@lists.ozlabs.org \
--cc=vijaykhemka@fb.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.