psu-ng: Move model validation to its own function
Move the model validation to a separate function so that it can be used
in a subsequent commit to get the psu count from the supported
configurations map. The supported configurations maps a psu model name
to the expected psu characteristics, so by knowing the model name, it
can be used to get the expected psu information for that system.
Tested: The validation function works as before.
Change-Id: I3494f68721131b4a42af2ad9e1889ad2e340d4e2
Signed-off-by: Adriana Kobylak <anoo@us.ibm.com>
diff --git a/phosphor-power-supply/psu_manager.cpp b/phosphor-power-supply/psu_manager.cpp
index 8e1be6a..e5d4dfb 100644
--- a/phosphor-power-supply/psu_manager.cpp
+++ b/phosphor-power-supply/psu_manager.cpp
@@ -485,29 +485,10 @@
bool PSUManager::hasRequiredPSUs(
std::map<std::string, std::string>& additionalData)
{
- // Check that all PSUs have the same model name. Initialize the model
- // variable with the first PSU name found, then use it as a base to compare
- // against the rest of the PSUs.
std::string model{};
- for (const auto& psu : psus)
+ if (!validateModelName(model, additionalData))
{
- auto psuModel = psu->getModelName();
- if (psuModel.empty())
- {
- continue;
- }
- if (model.empty())
- {
- model = psuModel;
- continue;
- }
- if (psuModel != model)
- {
- additionalData["EXPECTED_MODEL"] = model;
- additionalData["ACTUAL_MODEL"] = psuModel;
- additionalData["CALLOUT_INVENTORY_PATH"] = psu->getInventoryPath();
- return false;
- }
+ return false;
}
auto presentCount =
@@ -578,4 +559,35 @@
return false;
}
+bool PSUManager::validateModelName(
+ std::string& model, std::map<std::string, std::string>& additionalData)
+{
+ // Check that all PSUs have the same model name. Initialize the model
+ // variable with the first PSU name found, then use it as a base to compare
+ // against the rest of the PSUs.
+ model.clear();
+ for (const auto& psu : psus)
+ {
+ auto psuModel = psu->getModelName();
+ if (psuModel.empty())
+ {
+ continue;
+ }
+ if (model.empty())
+ {
+ model = psuModel;
+ continue;
+ }
+ if (psuModel != model)
+ {
+ additionalData["EXPECTED_MODEL"] = model;
+ additionalData["ACTUAL_MODEL"] = psuModel;
+ additionalData["CALLOUT_INVENTORY_PATH"] = psu->getInventoryPath();
+ model.clear();
+ return false;
+ }
+ }
+ return true;
+}
+
} // namespace phosphor::power::manager