xref: /openbmc/bmcweb/features/redfish/lib/thermal.hpp (revision 588c3f0da61ef4762e3ab2aa60e938fa6c8dce1c)
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 
32e0d918bcSEd Tanous     entityPrivileges = {
33e0d918bcSEd Tanous         {boost::beast::http::verb::get, {{"Login"}}},
34e0d918bcSEd Tanous         {boost::beast::http::verb::head, {{"Login"}}},
35e0d918bcSEd Tanous         {boost::beast::http::verb::patch, {{"ConfigureManager"}}},
36e0d918bcSEd Tanous         {boost::beast::http::verb::put, {{"ConfigureManager"}}},
37e0d918bcSEd Tanous         {boost::beast::http::verb::delete_, {{"ConfigureManager"}}},
38e0d918bcSEd 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) {
45e0d918bcSEd 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;
52*588c3f0dSKowalski, Kamil     auto asyncResp = std::make_shared<SensorsAsyncResp>(
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