| #pragma once |
| |
| #include <string> |
| |
| #include "baremetal.grpc.pb.h" |
| #include "grpcblob_defs.h" |
| #include "grpcpp/server_context.h" |
| #include "grpcpp/support/status.h" |
| namespace blobs { |
| |
| class BaremetalTransferServiceImpl final |
| : public phosphor::baremetal::grpc_gen::BaremetalTransferService::Service { |
| public: |
| explicit BaremetalTransferServiceImpl(int instance, |
| const std::string& basePath) |
| : phosphor::baremetal::grpc_gen::BaremetalTransferService::Service(), |
| instanceNumber(instance), |
| instanceString(std::to_string(instance + 1)), |
| basePath_(basePath), |
| bmSignalPath(basePath + "/run/bm-ready.flag"), |
| linuxBootDonePath(basePath + "/run/linux-boot-done.flag"), |
| bmInstanceBasePath(basePath + "/run/bm-instance/"), |
| bmDriveCleaningFlagPath(basePath + "/run/bm-drive-cleaning.flag"), |
| bmDriveCleaningDoneFlagPath(basePath + |
| "/run/bm-drive-cleaning-done.flag"), |
| bmDriveCleaningDoneAckFlagPath(basePath + |
| "/run/bm-drive-cleaning-done-ack.flag") |
| // Instance ID will be 1-indexed to better match the redfish Systems |
| { |
| // For the last instance, use 0 as instanceString as last instance is used |
| // only in single-host machines. |
| if ((instanceNumber + 1) == numInstances) { |
| instanceString = "0"; |
| } |
| } |
| |
| grpc::Status BmModeTransfer( |
| [[maybe_unused]] grpc::ServerContext* context, |
| [[maybe_unused]] const phosphor::baremetal::BmModeRequest* request, |
| phosphor::baremetal::BmModeResponse* response); |
| |
| grpc::Status LinuxBootDone( |
| [[maybe_unused]] grpc::ServerContext* context, |
| [[maybe_unused]] const phosphor::baremetal::LinuxBootDoneRequest* request, |
| [[maybe_unused]] phosphor::baremetal::LinuxBootDoneResponse* response); |
| |
| grpc::Status BMInstancePropertiesTransfer( |
| [[maybe_unused]] grpc::ServerContext* context, |
| [[maybe_unused]] const phosphor::baremetal:: |
| BMInstancePropertiesTransferRequest* request, |
| phosphor::baremetal::BMInstancePropertiesTransferResponse* response); |
| |
| private: |
| int instanceNumber; |
| std::string instanceString; |
| std::string basePath_; |
| std::string bmSignalPath; |
| std::string linuxBootDonePath; |
| std::string bmInstanceBasePath; |
| std::string bmDriveCleaningFlagPath; |
| std::string bmDriveCleaningDoneFlagPath; |
| std::string bmDriveCleaningDoneAckFlagPath; |
| |
| std::string readBMInstanceFromFile(const std::string& bmInstancePath); |
| }; |
| |
| } // namespace blobs |