xref: /openbmc/bmcweb/features/redfish/lib/thermal.hpp (revision 1abe55ef9844afcddcab9d862ae06118f3a2390c)
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 
21*1abe55efSEd Tanous namespace redfish
22*1abe55efSEd Tanous {
2308777fb0SLewanczyk, Dawid 
24*1abe55efSEd Tanous class Thermal : public Node
25*1abe55efSEd Tanous {
2608777fb0SLewanczyk, Dawid   public:
27*1abe55efSEd Tanous     Thermal(CrowApp& app) :
28*1abe55efSEd Tanous         Node((app), "/redfish/v1/Chassis/<str>/Thermal/", std::string())
29*1abe55efSEd 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,
46*1abe55efSEd Tanous                const std::vector<std::string>& params) override
47*1abe55efSEd Tanous     {
48*1abe55efSEd Tanous         if (params.size() != 1)
49*1abe55efSEd Tanous         {
50e0d918bcSEd Tanous             res.result(boost::beast::http::status::internal_server_error);
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;
57588c3f0dSKowalski, Kamil         auto asyncResp = std::make_shared<SensorsAsyncResp>(
5855c7b7a2SEd Tanous             res, chassisName,
5908777fb0SLewanczyk, Dawid             std::initializer_list<const char*>{
6003b5bae3SJames Feist                 "/xyz/openbmc_project/sensors/fan",
6103b5bae3SJames Feist                 "/xyz/openbmc_project/sensors/temperature"});
6208777fb0SLewanczyk, Dawid         getChassisData(asyncResp);
6308777fb0SLewanczyk, Dawid     }
6408777fb0SLewanczyk, Dawid };
6508777fb0SLewanczyk, Dawid 
6608777fb0SLewanczyk, Dawid } // namespace redfish
67