108777fb0SLewanczyk, Dawid /* 208777fb0SLewanczyk, Dawid // Copyright (c) 2018 Intel Corporation 308777fb0SLewanczyk, Dawid // 408777fb0SLewanczyk, Dawid // Licensed under the Apache License, Version 2.0 (the "License"); 508777fb0SLewanczyk, Dawid // you may not use this file except in compliance with the License. 608777fb0SLewanczyk, Dawid // You may obtain a copy of the License at 708777fb0SLewanczyk, Dawid // 808777fb0SLewanczyk, Dawid // http://www.apache.org/licenses/LICENSE-2.0 908777fb0SLewanczyk, Dawid // 1008777fb0SLewanczyk, Dawid // Unless required by applicable law or agreed to in writing, software 1108777fb0SLewanczyk, Dawid // distributed under the License is distributed on an "AS IS" BASIS, 1208777fb0SLewanczyk, Dawid // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1308777fb0SLewanczyk, Dawid // See the License for the specific language governing permissions and 1408777fb0SLewanczyk, Dawid // limitations under the License. 1508777fb0SLewanczyk, Dawid */ 1608777fb0SLewanczyk, Dawid #pragma once 1708777fb0SLewanczyk, Dawid 1808777fb0SLewanczyk, Dawid #include "node.hpp" 1908777fb0SLewanczyk, Dawid #include "sensors.hpp" 2008777fb0SLewanczyk, Dawid 2108777fb0SLewanczyk, Dawid namespace redfish { 2208777fb0SLewanczyk, Dawid 2308777fb0SLewanczyk, Dawid class Thermal : public Node { 2408777fb0SLewanczyk, Dawid public: 2508777fb0SLewanczyk, Dawid Thermal(CrowApp& app) 2608777fb0SLewanczyk, Dawid : Node((app), "/redfish/v1/Chassis/<str>/Thermal/", std::string()) { 2708777fb0SLewanczyk, Dawid Node::json["@odata.type"] = "#Thermal.v1_2_0.Thermal"; 2808777fb0SLewanczyk, Dawid Node::json["@odata.context"] = "/redfish/v1/$metadata#Thermal.Thermal"; 2908777fb0SLewanczyk, Dawid Node::json["Id"] = "Thermal"; 3008777fb0SLewanczyk, Dawid Node::json["Name"] = "Thermal"; 3108777fb0SLewanczyk, Dawid 32*e0d918bcSEd Tanous entityPrivileges = { 33*e0d918bcSEd Tanous {boost::beast::http::verb::get, {{"Login"}}}, 34*e0d918bcSEd Tanous {boost::beast::http::verb::head, {{"Login"}}}, 35*e0d918bcSEd Tanous {boost::beast::http::verb::patch, {{"ConfigureManager"}}}, 36*e0d918bcSEd Tanous {boost::beast::http::verb::put, {{"ConfigureManager"}}}, 37*e0d918bcSEd Tanous {boost::beast::http::verb::delete_, {{"ConfigureManager"}}}, 38*e0d918bcSEd Tanous {boost::beast::http::verb::post, {{"ConfigureManager"}}}}; 3908777fb0SLewanczyk, Dawid } 4008777fb0SLewanczyk, Dawid 4108777fb0SLewanczyk, Dawid private: 4208777fb0SLewanczyk, Dawid void doGet(crow::response& res, const crow::request& req, 4308777fb0SLewanczyk, Dawid const std::vector<std::string>& params) override { 4408777fb0SLewanczyk, Dawid if (params.size() != 1) { 45*e0d918bcSEd Tanous res.result(boost::beast::http::status::internal_server_error); 4608777fb0SLewanczyk, Dawid res.end(); 4708777fb0SLewanczyk, Dawid return; 4808777fb0SLewanczyk, Dawid } 4908777fb0SLewanczyk, Dawid const std::string& chassis_name = params[0]; 5008777fb0SLewanczyk, Dawid 5108777fb0SLewanczyk, Dawid res.json_value = Node::json; 5208777fb0SLewanczyk, Dawid auto asyncResp = std::make_shared<AsyncResp>( 5308777fb0SLewanczyk, Dawid res, chassis_name, 5408777fb0SLewanczyk, Dawid std::initializer_list<const char*>{ 5508777fb0SLewanczyk, Dawid "/xyz/openbmc_project/Sensors/fan", 5608777fb0SLewanczyk, Dawid "/xyz/openbmc_project/Sensors/temperature"}); 5708777fb0SLewanczyk, Dawid getChassisData(asyncResp); 5808777fb0SLewanczyk, Dawid } 5908777fb0SLewanczyk, Dawid }; 6008777fb0SLewanczyk, Dawid 6108777fb0SLewanczyk, Dawid } // namespace redfish 62