/* // Copyright (c) 2019 Intel Corporation // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. */ #ifndef BMCWEB_ENABLE_REDFISH_ONE_CHASSIS #pragma once namespace redfish { template void getMainChassisId(std::shared_ptr asyncResp, CallbackFunc&& callback) { // Find managed chassis crow::connections::systemBus->async_method_call( [callback, asyncResp](const boost::system::error_code ec, const crow::openbmc_mapper::GetSubTreeType& subtree) { if (ec) { BMCWEB_LOG_ERROR << ec; return; } if (subtree.size() == 0) { BMCWEB_LOG_DEBUG << "Can't find chassis!"; return; } std::size_t idPos = subtree[0].first.rfind('/'); if (idPos == std::string::npos || (idPos + 1) >= subtree[0].first.size()) { messages::internalError(asyncResp->res); BMCWEB_LOG_DEBUG << "Can't parse chassis ID!"; return; } std::string chassisId = subtree[0].first.substr(idPos + 1); BMCWEB_LOG_DEBUG << "chassisId = " << chassisId; callback(chassisId, asyncResp); }, "xyz.openbmc_project.ObjectMapper", "/xyz/openbmc_project/object_mapper", "xyz.openbmc_project.ObjectMapper", "GetSubTree", "/xyz/openbmc_project/inventory", 0, std::array{ "xyz.openbmc_project.Inventory.Item.Board", "xyz.openbmc_project.Inventory.Item.Chassis"}); } } // namespace redfish #endif