xref: /openbmc/bmcweb/features/redfish/lib/thermal.hpp (revision 08777fb0eca7e0c3f52aeb829a9b8f4fa0bbdb73)
1*08777fb0SLewanczyk, Dawid /*
2*08777fb0SLewanczyk, Dawid // Copyright (c) 2018 Intel Corporation
3*08777fb0SLewanczyk, Dawid //
4*08777fb0SLewanczyk, Dawid // Licensed under the Apache License, Version 2.0 (the "License");
5*08777fb0SLewanczyk, Dawid // you may not use this file except in compliance with the License.
6*08777fb0SLewanczyk, Dawid // You may obtain a copy of the License at
7*08777fb0SLewanczyk, Dawid //
8*08777fb0SLewanczyk, Dawid //      http://www.apache.org/licenses/LICENSE-2.0
9*08777fb0SLewanczyk, Dawid //
10*08777fb0SLewanczyk, Dawid // Unless required by applicable law or agreed to in writing, software
11*08777fb0SLewanczyk, Dawid // distributed under the License is distributed on an "AS IS" BASIS,
12*08777fb0SLewanczyk, Dawid // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*08777fb0SLewanczyk, Dawid // See the License for the specific language governing permissions and
14*08777fb0SLewanczyk, Dawid // limitations under the License.
15*08777fb0SLewanczyk, Dawid */
16*08777fb0SLewanczyk, Dawid #pragma once
17*08777fb0SLewanczyk, Dawid 
18*08777fb0SLewanczyk, Dawid #include "node.hpp"
19*08777fb0SLewanczyk, Dawid #include "sensors.hpp"
20*08777fb0SLewanczyk, Dawid 
21*08777fb0SLewanczyk, Dawid namespace redfish {
22*08777fb0SLewanczyk, Dawid 
23*08777fb0SLewanczyk, Dawid class Thermal : public Node {
24*08777fb0SLewanczyk, Dawid  public:
25*08777fb0SLewanczyk, Dawid   Thermal(CrowApp& app)
26*08777fb0SLewanczyk, Dawid       : Node((app), "/redfish/v1/Chassis/<str>/Thermal/", std::string()) {
27*08777fb0SLewanczyk, Dawid     Node::json["@odata.type"] = "#Thermal.v1_2_0.Thermal";
28*08777fb0SLewanczyk, Dawid     Node::json["@odata.context"] = "/redfish/v1/$metadata#Thermal.Thermal";
29*08777fb0SLewanczyk, Dawid     Node::json["Id"] = "Thermal";
30*08777fb0SLewanczyk, Dawid     Node::json["Name"] = "Thermal";
31*08777fb0SLewanczyk, Dawid 
32*08777fb0SLewanczyk, Dawid     entityPrivileges = {{crow::HTTPMethod::GET, {{"Login"}}},
33*08777fb0SLewanczyk, Dawid                         {crow::HTTPMethod::HEAD, {{"Login"}}},
34*08777fb0SLewanczyk, Dawid                         {crow::HTTPMethod::PATCH, {{"ConfigureManager"}}},
35*08777fb0SLewanczyk, Dawid                         {crow::HTTPMethod::PUT, {{"ConfigureManager"}}},
36*08777fb0SLewanczyk, Dawid                         {crow::HTTPMethod::DELETE, {{"ConfigureManager"}}},
37*08777fb0SLewanczyk, Dawid                         {crow::HTTPMethod::POST, {{"ConfigureManager"}}}};
38*08777fb0SLewanczyk, Dawid   }
39*08777fb0SLewanczyk, Dawid 
40*08777fb0SLewanczyk, Dawid  private:
41*08777fb0SLewanczyk, Dawid   void doGet(crow::response& res, const crow::request& req,
42*08777fb0SLewanczyk, Dawid              const std::vector<std::string>& params) override {
43*08777fb0SLewanczyk, Dawid     if (params.size() != 1) {
44*08777fb0SLewanczyk, Dawid       res.code = static_cast<int>(HttpRespCode::INTERNAL_ERROR);
45*08777fb0SLewanczyk, Dawid       res.end();
46*08777fb0SLewanczyk, Dawid       return;
47*08777fb0SLewanczyk, Dawid     }
48*08777fb0SLewanczyk, Dawid     const std::string& chassis_name = params[0];
49*08777fb0SLewanczyk, Dawid 
50*08777fb0SLewanczyk, Dawid     res.json_value = Node::json;
51*08777fb0SLewanczyk, Dawid     auto asyncResp = std::make_shared<AsyncResp>(
52*08777fb0SLewanczyk, Dawid         res, chassis_name,
53*08777fb0SLewanczyk, Dawid         std::initializer_list<const char*>{
54*08777fb0SLewanczyk, Dawid             "/xyz/openbmc_project/Sensors/fan",
55*08777fb0SLewanczyk, Dawid             "/xyz/openbmc_project/Sensors/temperature"});
56*08777fb0SLewanczyk, Dawid     getChassisData(asyncResp);
57*08777fb0SLewanczyk, Dawid   }
58*08777fb0SLewanczyk, Dawid };
59*08777fb0SLewanczyk, Dawid 
60*08777fb0SLewanczyk, Dawid }  // namespace redfish
61