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 211abe55efSEd Tanous namespace redfish 221abe55efSEd Tanous { 2308777fb0SLewanczyk, Dawid 241abe55efSEd Tanous class Thermal : public Node 251abe55efSEd Tanous { 2608777fb0SLewanczyk, Dawid public: 271abe55efSEd Tanous Thermal(CrowApp& app) : 281abe55efSEd Tanous Node((app), "/redfish/v1/Chassis/<str>/Thermal/", std::string()) 291abe55efSEd Tanous { 307885954aSLewanczyk, Dawid Node::json["@odata.type"] = "#Thermal.v1_4_0.Thermal"; 3108777fb0SLewanczyk, Dawid Node::json["@odata.context"] = "/redfish/v1/$metadata#Thermal.Thermal"; 3208777fb0SLewanczyk, Dawid Node::json["Id"] = "Thermal"; 3308777fb0SLewanczyk, Dawid Node::json["Name"] = "Thermal"; 3408777fb0SLewanczyk, Dawid 35e0d918bcSEd Tanous entityPrivileges = { 36e0d918bcSEd Tanous {boost::beast::http::verb::get, {{"Login"}}}, 37e0d918bcSEd Tanous {boost::beast::http::verb::head, {{"Login"}}}, 38e0d918bcSEd Tanous {boost::beast::http::verb::patch, {{"ConfigureManager"}}}, 39e0d918bcSEd Tanous {boost::beast::http::verb::put, {{"ConfigureManager"}}}, 40e0d918bcSEd Tanous {boost::beast::http::verb::delete_, {{"ConfigureManager"}}}, 41e0d918bcSEd Tanous {boost::beast::http::verb::post, {{"ConfigureManager"}}}}; 4208777fb0SLewanczyk, Dawid } 4308777fb0SLewanczyk, Dawid 4408777fb0SLewanczyk, Dawid private: 4555c7b7a2SEd Tanous void doGet(crow::Response& res, const crow::Request& req, 461abe55efSEd Tanous const std::vector<std::string>& params) override 471abe55efSEd Tanous { 481abe55efSEd Tanous if (params.size() != 1) 491abe55efSEd Tanous { 50f12894f8SJason M. Bills messages::internalError(res); 5108777fb0SLewanczyk, Dawid res.end(); 5208777fb0SLewanczyk, Dawid return; 5308777fb0SLewanczyk, Dawid } 5455c7b7a2SEd Tanous const std::string& chassisName = params[0]; 5508777fb0SLewanczyk, Dawid 5655c7b7a2SEd Tanous res.jsonValue = Node::json; 57*2474adfaSEd Tanous 58*2474adfaSEd Tanous Node::json["@odata.id"] = 59*2474adfaSEd Tanous "/redfish/v1/Chassis/" + chassisName + "/Thermal"; 60*2474adfaSEd Tanous 61*2474adfaSEd Tanous res.jsonValue = Node::json; 62*2474adfaSEd Tanous auto sensorAsyncResp = std::make_shared<SensorsAsyncResp>( 6355c7b7a2SEd Tanous res, chassisName, 6408777fb0SLewanczyk, Dawid std::initializer_list<const char*>{ 6503b5bae3SJames Feist "/xyz/openbmc_project/sensors/fan", 666f6d0d32SEd Tanous "/xyz/openbmc_project/sensors/temperature", 67*2474adfaSEd Tanous "/xyz/openbmc_project/sensors/fan_pwm"}, 68*2474adfaSEd Tanous "Thermal"); 69*2474adfaSEd Tanous 70*2474adfaSEd Tanous // TODO Need to get Chassis Redundancy information. 71*2474adfaSEd Tanous getChassisData(sensorAsyncResp); 7208777fb0SLewanczyk, Dawid } 7308777fb0SLewanczyk, Dawid }; 7408777fb0SLewanczyk, Dawid 7508777fb0SLewanczyk, Dawid } // namespace redfish 76