1 /* 2 // Copyright (c) 2018 Intel Corporation 3 // Copyright (c) 2018 Ampere Computing LLC 4 / 5 // Licensed under the Apache License, Version 2.0 (the "License"); 6 // you may not use this file except in compliance with the License. 7 // You may obtain a copy of the License at 8 // 9 // http://www.apache.org/licenses/LICENSE-2.0 10 // 11 // Unless required by applicable law or agreed to in writing, software 12 // distributed under the License is distributed on an "AS IS" BASIS, 13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 // See the License for the specific language governing permissions and 15 // limitations under the License. 16 */ 17 #pragma once 18 19 #include "node.hpp" 20 #include "sensors.hpp" 21 22 namespace redfish 23 { 24 25 class Power : public Node 26 { 27 public: 28 Power(CrowApp& app) : 29 Node((app), "/redfish/v1/Chassis/<str>/Power/", std::string()) 30 { 31 entityPrivileges = { 32 {boost::beast::http::verb::get, {{"Login"}}}, 33 {boost::beast::http::verb::head, {{"Login"}}}, 34 {boost::beast::http::verb::patch, {{"ConfigureManager"}}}, 35 {boost::beast::http::verb::put, {{"ConfigureManager"}}}, 36 {boost::beast::http::verb::delete_, {{"ConfigureManager"}}}, 37 {boost::beast::http::verb::post, {{"ConfigureManager"}}}}; 38 } 39 40 private: 41 void doGet(crow::Response& res, const crow::Request& req, 42 const std::vector<std::string>& params) override 43 { 44 if (params.size() != 1) 45 { 46 res.result(boost::beast::http::status::internal_server_error); 47 res.end(); 48 return; 49 } 50 const std::string& chassis_name = params[0]; 51 52 res.jsonValue["@odata.id"] = 53 "/redfish/v1/Chassis/" + chassis_name + "/Power"; 54 res.jsonValue["@odata.type"] = "#Power.v1_2_1.Power"; 55 res.jsonValue["@odata.context"] = "/redfish/v1/$metadata#Power.Power"; 56 res.jsonValue["Id"] = "Power"; 57 res.jsonValue["Name"] = "Power"; 58 auto sensorAsyncResp = std::make_shared<SensorsAsyncResp>( 59 res, chassis_name, 60 std::initializer_list<const char*>{ 61 "/xyz/openbmc_project/sensors/voltage", 62 "/xyz/openbmc_project/sensors/power"}, 63 "Power"); 64 // TODO Need to retrieve Power Control information. 65 getChassisData(sensorAsyncResp); 66 } 67 }; 68 69 } // namespace redfish 70