diff options
author | Ed Tanous <ed.tanous@intel.com> | 2019-10-02 21:27:59 +0300 |
---|---|---|
committer | Ed Tanous <ed.tanous@intel.com> | 2019-10-03 00:50:55 +0300 |
commit | 2e8a4fb85ff146ce965342a26602822571edafb9 (patch) | |
tree | 6870cb30c6385dce550a5903e47e9cc1001d3ce0 /redfish-core/lib/storage.hpp | |
parent | ca0c93bb09587903a6dd43926799a967f10bafcd (diff) | |
download | bmcweb-2e8a4fb85ff146ce965342a26602822571edafb9.tar.xz |
Revert "Add Storage Schema for NVMe on Redfish"
This reverts commit e56c7b7092298c609831a65bcc8c21e62d422ba7.
Reason for revert: /redfish/v1/Systems/1 returns no result. This should've been flagged in service validator, but the commit mentions that test was run, so it's not clear how this was missed.
Reverting for a moment until we can determine what happened.
Change-Id: I276d4cd239adb87b77264bc65ab4856705274ff0
Diffstat (limited to 'redfish-core/lib/storage.hpp')
-rw-r--r-- | redfish-core/lib/storage.hpp | 250 |
1 files changed, 0 insertions, 250 deletions
diff --git a/redfish-core/lib/storage.hpp b/redfish-core/lib/storage.hpp deleted file mode 100644 index 8daead7632..0000000000 --- a/redfish-core/lib/storage.hpp +++ /dev/null @@ -1,250 +0,0 @@ -/* -// Copyright (c) 2019 Intel Corporation -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -*/ -#pragma once - -#include <node.hpp> - -namespace redfish -{ -class StorageCollection : public Node -{ - public: - StorageCollection(CrowApp &app) : - Node(app, "/redfish/v1/Systems/system/Storage/") - { - entityPrivileges = { - {boost::beast::http::verb::get, {{"Login"}}}, - {boost::beast::http::verb::head, {{"Login"}}}, - {boost::beast::http::verb::patch, {{"ConfigureComponents"}}}, - {boost::beast::http::verb::put, {{"ConfigureComponents"}}}, - {boost::beast::http::verb::delete_, {{"ConfigureComponents"}}}, - {boost::beast::http::verb::post, {{"ConfigureComponents"}}}}; - } - - private: - void doGet(crow::Response &res, const crow::Request &req, - const std::vector<std::string> ¶ms) override - { - res.jsonValue["@odata.type"] = "#StorageCollection.StorageCollection"; - res.jsonValue["@odata.context"] = - "/redfish/v1/$metadata#StorageCollection.StorageCollection"; - res.jsonValue["@odata.id"] = "/redfish/v1/Systems/system/Storage"; - res.jsonValue["Name"] = "Storage Collection"; - res.jsonValue["Members"] = { - {"@odata.id", "/redfish/v1/Systems/system/Storage/1"}}; - res.jsonValue["Members@odata.count"] = 1; - } -}; - -class Storage : public Node -{ - public: - Storage(CrowApp &app) : Node(app, "/redfish/v1/Systems/system/Storage/1") - { - entityPrivileges = { - {boost::beast::http::verb::get, {{"Login"}}}, - {boost::beast::http::verb::head, {{"Login"}}}, - {boost::beast::http::verb::patch, {{"ConfigureComponents"}}}, - {boost::beast::http::verb::put, {{"ConfigureComponents"}}}, - {boost::beast::http::verb::delete_, {{"ConfigureComponents"}}}, - {boost::beast::http::verb::post, {{"ConfigureComponents"}}}}; - } - - private: - void doGet(crow::Response &res, const crow::Request &req, - const std::vector<std::string> ¶ms) override - { - res.jsonValue["@odata.type"] = "#Storage.v1_2_0.Storage"; - res.jsonValue["@odata.context"] = - "/redfish/v1/$metadata#Storage.Storage"; - res.jsonValue["@odata.id"] = "/redfish/v1/Systems/system/Storage/1"; - res.jsonValue["Name"] = "Storage Controller"; - res.jsonValue["Id"] = "NVMe Controller"; - - auto asyncResp = std::make_shared<AsyncResp>(res); - crow::connections::systemBus->async_method_call( - [asyncResp](const boost::system::error_code ec, - const std::vector<std::string> &storageList) { - nlohmann::json &storageArray = - asyncResp->res.jsonValue["Drives"]; - storageArray = nlohmann::json::array(); - asyncResp->res.jsonValue["Drives@odata.count"] = 0; - if (ec) - { - return; - } - for (const std::string &objpath : storageList) - { - std::size_t lastPos = objpath.rfind("/"); - if (lastPos == std::string::npos || - objpath.size() <= lastPos + 1) - { - BMCWEB_LOG_ERROR << "Failed to find '/' in " << objpath; - continue; - } - - storageArray.push_back( - {{"@odata.id", - "/redfish/v1/Systems/system/Storage/1/Drive/" + - objpath.substr(lastPos + 1)}}); - } - - asyncResp->res.jsonValue["Drives@odata.count"] = - storageArray.size(); - }, - "xyz.openbmc_project.ObjectMapper", - "/xyz/openbmc_project/object_mapper", - "xyz.openbmc_project.ObjectMapper", "GetSubTreePaths", - "/xyz/openbmc_project/inventory", int32_t(0), - std::array<const char *, 1>{ - "xyz.openbmc_project.Inventory.Item.Drive"}); - } -}; - -class Drive : public Node -{ - public: - Drive(CrowApp &app) : - Node(app, "/redfish/v1/Systems/system/Storage/1/Drive/<str>/", - std::string()) - { - entityPrivileges = { - {boost::beast::http::verb::get, {{"Login"}}}, - {boost::beast::http::verb::head, {{"Login"}}}, - {boost::beast::http::verb::patch, {{"ConfigureComponents"}}}, - {boost::beast::http::verb::put, {{"ConfigureComponents"}}}, - {boost::beast::http::verb::delete_, {{"ConfigureComponents"}}}, - {boost::beast::http::verb::post, {{"ConfigureComponents"}}}}; - } - - private: - void doGet(crow::Response &res, const crow::Request &req, - const std::vector<std::string> ¶ms) override - { - const std::string &driveId = params[0]; - - auto asyncResp = std::make_shared<AsyncResp>(res); - - crow::connections::systemBus->async_method_call( - [asyncResp, driveId]( - const boost::system::error_code ec, - const std::vector<std::pair< - std::string, std::vector<std::pair< - std::string, std::vector<std::string>>>>> - &subtree) { - if (ec) - { - messages::resourceNotFound(asyncResp->res, "Drive", - driveId); - return; - } - - for (const std::pair< - std::string, - std::vector< - std::pair<std::string, std::vector<std::string>>>> - &object : subtree) - { - const std::string &path = object.first; - const std::vector< - std::pair<std::string, std::vector<std::string>>> - &connectionNames = object.second; - - if (!boost::ends_with(path, "/" + driveId)) - { - continue; - } - - asyncResp->res.jsonValue["@odata.type"] = - "#Drive.v1_2_0.Drive"; - asyncResp->res.jsonValue["@odata.context"] = - "/redfish/v1/$metadata#Drive.Drive"; - asyncResp->res.jsonValue["@odata.id"] = - "/redfish/v1/Systems/system/Storage/1/Drive/" + driveId; - - if (connectionNames.size() != 1) - { - BMCWEB_LOG_ERROR << "Connection size " - << connectionNames.size() - << ", greater than 1"; - continue; - } - - const std::string &connectionName = - connectionNames[0].first; - crow::connections::systemBus->async_method_call( - [asyncResp, driveId]( - const boost::system::error_code ec, - const std::vector<std::pair< - std::string, - std::variant<bool, std::string, uint64_t>>> - &propertiesList) { - for (const std::pair< - std::string, - std::variant<bool, std::string, uint64_t>> - &property : propertiesList) - { - // Store DBus properties that are also - // Redfish properties with same name and a - // string value - const std::string &propertyName = - property.first; - if ((propertyName == "PartNumber") || - (propertyName == "SerialNumber") || - (propertyName == "Manufacturer") || - (propertyName == "Model")) - { - const std::string *value = - std::get_if<std::string>( - &property.second); - if (value != nullptr) - { - asyncResp->res.jsonValue[propertyName] = - *value; - } - } - } - asyncResp->res.jsonValue["Name"] = driveId; - asyncResp->res.jsonValue["Id"] = driveId; - - getMainChassisId( - asyncResp, [](const std::string &chassisId, - std::shared_ptr<AsyncResp> aRsp) { - aRsp->res.jsonValue["Links"]["Chassis"] = { - {"@odata.id", - "/redfish/v1/Chassis/" + chassisId}}; - }); - }, - connectionName, path, "org.freedesktop.DBus.Properties", - "GetAll", - "xyz.openbmc_project.Inventory.Decorator.Asset"); - - return; - } - - // no object found with that name - messages::resourceNotFound(asyncResp->res, "Drive", driveId); - return; - }, - "xyz.openbmc_project.ObjectMapper", - "/xyz/openbmc_project/object_mapper", - "xyz.openbmc_project.ObjectMapper", "GetSubTree", - "/xyz/openbmc_project/inventory", int32_t(0), - std::array<const char *, 1>{ - "xyz.openbmc_project.Inventory.Item.Drive"}); - } -}; -} // namespace redfish
\ No newline at end of file |