Updated CSI client to support v0.2. To adapt the change in CSI package names (from `csi` to `csi.v0`), we introduce a new `csi::v0` namespace in Mesos for v0 helpers. The CSI client class is now defined in this namespace, and its public methods are updated to reflect the changes in CSI v0.2.
Review: https://reviews.apache.org/r/66407/ Project: http://git-wip-us.apache.org/repos/asf/mesos/repo Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/33eb3eb1 Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/33eb3eb1 Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/33eb3eb1 Branch: refs/heads/master Commit: 33eb3eb10e8f991e380285d8a0ea8a83344e3eb2 Parents: ea7a94b Author: Chun-Hung Hsiao <chhs...@apache.org> Authored: Thu Apr 12 12:07:11 2018 -0700 Committer: Chun-Hung Hsiao <chhs...@mesosphere.io> Committed: Thu Apr 12 14:01:52 2018 -0700 ---------------------------------------------------------------------- include/csi/spec.hpp | 4 +- src/csi/client.cpp | 98 ++++++++++++++++++++++--------------- src/csi/client.hpp | 27 +++++----- src/tests/csi_client_tests.cpp | 13 ++--- src/tests/mock_csi_plugin.cpp | 8 +-- src/tests/mock_csi_plugin.hpp | 49 ++++++++++--------- 6 files changed, 113 insertions(+), 86 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mesos/blob/33eb3eb1/include/csi/spec.hpp ---------------------------------------------------------------------- diff --git a/include/csi/spec.hpp b/include/csi/spec.hpp index da0caae..2e9b870 100644 --- a/include/csi/spec.hpp +++ b/include/csi/spec.hpp @@ -29,9 +29,11 @@ namespace mesos { namespace csi { +namespace v0 { -using namespace ::csi; +using namespace ::csi::v0; +} // namespace v0 { } // namespace csi { } // namespace mesos { http://git-wip-us.apache.org/repos/asf/mesos/blob/33eb3eb1/src/csi/client.cpp ---------------------------------------------------------------------- diff --git a/src/csi/client.cpp b/src/csi/client.cpp index 5df788f..559e805 100644 --- a/src/csi/client.cpp +++ b/src/csi/client.cpp @@ -23,14 +23,15 @@ using process::grpc::RpcResult; namespace mesos { namespace csi { +namespace v0 { -Future<GetSupportedVersionsResponse> Client::GetSupportedVersions( - const GetSupportedVersionsRequest& request) +Future<GetPluginInfoResponse> Client::GetPluginInfo( + const GetPluginInfoRequest& request) { return runtime - .call(channel, GRPC_RPC(Identity, GetSupportedVersions), request) - .then([](const RpcResult<GetSupportedVersionsResponse>& result) - -> Future<GetSupportedVersionsResponse> { + .call(channel, GRPC_RPC(Identity, GetPluginInfo), request) + .then([](const RpcResult<GetPluginInfoResponse>& result) + -> Future<GetPluginInfoResponse> { if (result.status.ok()) { return result.response; } else { @@ -40,13 +41,29 @@ Future<GetSupportedVersionsResponse> Client::GetSupportedVersions( } -Future<GetPluginInfoResponse> Client::GetPluginInfo( - const GetPluginInfoRequest& request) +Future<GetPluginCapabilitiesResponse> Client::GetPluginCapabilities( + const GetPluginCapabilitiesRequest& request) { return runtime - .call(channel, GRPC_RPC(Identity, GetPluginInfo), request) - .then([](const RpcResult<GetPluginInfoResponse>& result) - -> Future<GetPluginInfoResponse> { + .call(channel, GRPC_RPC(Identity, GetPluginCapabilities), request) + .then([](const RpcResult<GetPluginCapabilitiesResponse>& result) + -> Future<GetPluginCapabilitiesResponse> { + if (result.status.ok()) { + return result.response; + } else { + return Failure(result.status.error_message()); + } + }); +} + + +Future<ProbeResponse> Client::Probe( + const ProbeRequest& request) +{ + return runtime + .call(channel, GRPC_RPC(Identity, Probe), request) + .then([](const RpcResult<ProbeResponse>& result) + -> Future<ProbeResponse> { if (result.status.ok()) { return result.response; } else { @@ -168,13 +185,13 @@ Future<GetCapacityResponse> Client::GetCapacity( } -Future<ControllerProbeResponse> Client::ControllerProbe( - const ControllerProbeRequest& request) +Future<ControllerGetCapabilitiesResponse> Client::ControllerGetCapabilities( + const ControllerGetCapabilitiesRequest& request) { return runtime - .call(channel, GRPC_RPC(Controller, ControllerProbe), request) - .then([](const RpcResult<ControllerProbeResponse>& result) - -> Future<ControllerProbeResponse> { + .call(channel, GRPC_RPC(Controller, ControllerGetCapabilities), request) + .then([](const RpcResult<ControllerGetCapabilitiesResponse>& result) + -> Future<ControllerGetCapabilitiesResponse> { if (result.status.ok()) { return result.response; } else { @@ -184,13 +201,13 @@ Future<ControllerProbeResponse> Client::ControllerProbe( } -Future<ControllerGetCapabilitiesResponse> Client::ControllerGetCapabilities( - const ControllerGetCapabilitiesRequest& request) +Future<NodeStageVolumeResponse> Client::NodeStageVolume( + const NodeStageVolumeRequest& request) { return runtime - .call(channel, GRPC_RPC(Controller, ControllerGetCapabilities), request) - .then([](const RpcResult<ControllerGetCapabilitiesResponse>& result) - -> Future<ControllerGetCapabilitiesResponse> { + .call(channel, GRPC_RPC(Node, NodeStageVolume), request) + .then([](const RpcResult<NodeStageVolumeResponse>& result) + -> Future<NodeStageVolumeResponse> { if (result.status.ok()) { return result.response; } else { @@ -200,13 +217,13 @@ Future<ControllerGetCapabilitiesResponse> Client::ControllerGetCapabilities( } -Future<NodePublishVolumeResponse> Client::NodePublishVolume( - const NodePublishVolumeRequest& request) +Future<NodeUnstageVolumeResponse> Client::NodeUnstageVolume( + const NodeUnstageVolumeRequest& request) { return runtime - .call(channel, GRPC_RPC(Node, NodePublishVolume), request) - .then([](const RpcResult<NodePublishVolumeResponse>& result) - -> Future<NodePublishVolumeResponse> { + .call(channel, GRPC_RPC(Node, NodeUnstageVolume), request) + .then([](const RpcResult<NodeUnstageVolumeResponse>& result) + -> Future<NodeUnstageVolumeResponse> { if (result.status.ok()) { return result.response; } else { @@ -216,13 +233,13 @@ Future<NodePublishVolumeResponse> Client::NodePublishVolume( } -Future<NodeUnpublishVolumeResponse> Client::NodeUnpublishVolume( - const NodeUnpublishVolumeRequest& request) +Future<NodePublishVolumeResponse> Client::NodePublishVolume( + const NodePublishVolumeRequest& request) { return runtime - .call(channel, GRPC_RPC(Node, NodeUnpublishVolume), request) - .then([](const RpcResult<NodeUnpublishVolumeResponse>& result) - -> Future<NodeUnpublishVolumeResponse> { + .call(channel, GRPC_RPC(Node, NodePublishVolume), request) + .then([](const RpcResult<NodePublishVolumeResponse>& result) + -> Future<NodePublishVolumeResponse> { if (result.status.ok()) { return result.response; } else { @@ -232,13 +249,13 @@ Future<NodeUnpublishVolumeResponse> Client::NodeUnpublishVolume( } -Future<GetNodeIDResponse> Client::GetNodeID( - const GetNodeIDRequest& request) +Future<NodeUnpublishVolumeResponse> Client::NodeUnpublishVolume( + const NodeUnpublishVolumeRequest& request) { return runtime - .call(channel, GRPC_RPC(Node, GetNodeID), request) - .then([](const RpcResult<GetNodeIDResponse>& result) - -> Future<GetNodeIDResponse> { + .call(channel, GRPC_RPC(Node, NodeUnpublishVolume), request) + .then([](const RpcResult<NodeUnpublishVolumeResponse>& result) + -> Future<NodeUnpublishVolumeResponse> { if (result.status.ok()) { return result.response; } else { @@ -248,13 +265,13 @@ Future<GetNodeIDResponse> Client::GetNodeID( } -Future<NodeProbeResponse> Client::NodeProbe( - const NodeProbeRequest& request) +Future<NodeGetIdResponse> Client::NodeGetId( + const NodeGetIdRequest& request) { return runtime - .call(channel, GRPC_RPC(Node, NodeProbe), request) - .then([](const RpcResult<NodeProbeResponse>& result) - -> Future<NodeProbeResponse> { + .call(channel, GRPC_RPC(Node, NodeGetId), request) + .then([](const RpcResult<NodeGetIdResponse>& result) + -> Future<NodeGetIdResponse> { if (result.status.ok()) { return result.response; } else { @@ -279,5 +296,6 @@ Future<NodeGetCapabilitiesResponse> Client::NodeGetCapabilities( }); } +} // namespace v0 { } // namespace csi { } // namespace mesos { http://git-wip-us.apache.org/repos/asf/mesos/blob/33eb3eb1/src/csi/client.hpp ---------------------------------------------------------------------- diff --git a/src/csi/client.hpp b/src/csi/client.hpp index 1d55994..5d84674 100644 --- a/src/csi/client.hpp +++ b/src/csi/client.hpp @@ -25,6 +25,7 @@ namespace mesos { namespace csi { +namespace v0 { class Client { @@ -34,12 +35,15 @@ public: : channel(_channel), runtime(_runtime) {} // RPCs for the Identity service. - process::Future<GetSupportedVersionsResponse> - GetSupportedVersions(const GetSupportedVersionsRequest& request); - process::Future<GetPluginInfoResponse> GetPluginInfo(const GetPluginInfoRequest& request); + process::Future<GetPluginCapabilitiesResponse> + GetPluginCapabilities(const GetPluginCapabilitiesRequest& request); + + process::Future<ProbeResponse> + Probe(const ProbeRequest& request); + // RPCs for the Controller service. process::Future<CreateVolumeResponse> CreateVolume(const CreateVolumeRequest& request); @@ -63,24 +67,24 @@ public: process::Future<GetCapacityResponse> GetCapacity(const GetCapacityRequest& request); - process::Future<ControllerProbeResponse> - ControllerProbe(const ControllerProbeRequest& request); - process::Future<ControllerGetCapabilitiesResponse> ControllerGetCapabilities(const ControllerGetCapabilitiesRequest& request); // RPCs for the Node service. + process::Future<NodeStageVolumeResponse> + NodeStageVolume(const NodeStageVolumeRequest& request); + + process::Future<NodeUnstageVolumeResponse> + NodeUnstageVolume(const NodeUnstageVolumeRequest& request); + process::Future<NodePublishVolumeResponse> NodePublishVolume(const NodePublishVolumeRequest& request); process::Future<NodeUnpublishVolumeResponse> NodeUnpublishVolume(const NodeUnpublishVolumeRequest& request); - process::Future<GetNodeIDResponse> - GetNodeID(const GetNodeIDRequest& request); - - process::Future<NodeProbeResponse> - NodeProbe(const NodeProbeRequest& request); + process::Future<NodeGetIdResponse> + NodeGetId(const NodeGetIdRequest& request); process::Future<NodeGetCapabilitiesResponse> NodeGetCapabilities(const NodeGetCapabilitiesRequest& request); @@ -90,6 +94,7 @@ private: process::grpc::client::Runtime runtime; }; +} // namespace v0 { } // namespace csi { } // namespace mesos { http://git-wip-us.apache.org/repos/asf/mesos/blob/33eb3eb1/src/tests/csi_client_tests.cpp ---------------------------------------------------------------------- diff --git a/src/tests/csi_client_tests.cpp b/src/tests/csi_client_tests.cpp index 566a85e..f5b9eac 100644 --- a/src/tests/csi_client_tests.cpp +++ b/src/tests/csi_client_tests.cpp @@ -28,7 +28,7 @@ using std::string; -using mesos::csi::Client; +using mesos::csi::v0::Client; using process::Future; @@ -104,8 +104,9 @@ INSTANTIATE_TEST_CASE_P( Identity, CSIClientTest, Values( - RPC_PARAM(Client::GetSupportedVersions), - RPC_PARAM(Client::GetPluginInfo)), + RPC_PARAM(Client::GetPluginInfo), + RPC_PARAM(Client::GetPluginCapabilities), + RPC_PARAM(Client::Probe)), RPCParam::Printer()); INSTANTIATE_TEST_CASE_P( @@ -119,7 +120,6 @@ INSTANTIATE_TEST_CASE_P( RPC_PARAM(Client::ValidateVolumeCapabilities), RPC_PARAM(Client::ListVolumes), RPC_PARAM(Client::GetCapacity), - RPC_PARAM(Client::ControllerProbe), RPC_PARAM(Client::ControllerGetCapabilities)), RPCParam::Printer()); @@ -127,10 +127,11 @@ INSTANTIATE_TEST_CASE_P( Node, CSIClientTest, Values( + RPC_PARAM(Client::NodeStageVolume), + RPC_PARAM(Client::NodeUnstageVolume), RPC_PARAM(Client::NodePublishVolume), RPC_PARAM(Client::NodeUnpublishVolume), - RPC_PARAM(Client::GetNodeID), - RPC_PARAM(Client::NodeProbe), + RPC_PARAM(Client::NodeGetId), RPC_PARAM(Client::NodeGetCapabilities)), RPCParam::Printer()); http://git-wip-us.apache.org/repos/asf/mesos/blob/33eb3eb1/src/tests/mock_csi_plugin.cpp ---------------------------------------------------------------------- diff --git a/src/tests/mock_csi_plugin.cpp b/src/tests/mock_csi_plugin.cpp index 1dc8761..6983b84 100644 --- a/src/tests/mock_csi_plugin.cpp +++ b/src/tests/mock_csi_plugin.cpp @@ -19,10 +19,6 @@ using std::string; using std::unique_ptr; -using csi::Controller; -using csi::Identity; -using csi::Node; - using grpc::ChannelArguments; using grpc::InsecureServerCredentials; using grpc::Server; @@ -30,6 +26,10 @@ using grpc::ServerBuilder; using grpc::ServerContext; using grpc::Status; +using mesos::csi::v0::Controller; +using mesos::csi::v0::Identity; +using mesos::csi::v0::Node; + using process::grpc::Channel; using testing::_; http://git-wip-us.apache.org/repos/asf/mesos/blob/33eb3eb1/src/tests/mock_csi_plugin.hpp ---------------------------------------------------------------------- diff --git a/src/tests/mock_csi_plugin.hpp b/src/tests/mock_csi_plugin.hpp index b19870d..6f7a5ab 100644 --- a/src/tests/mock_csi_plugin.hpp +++ b/src/tests/mock_csi_plugin.hpp @@ -37,34 +37,35 @@ namespace mesos { namespace internal { namespace tests { -#define CSI_METHOD_FOREACH(macro) \ - macro(GetSupportedVersions) \ - macro(GetPluginInfo) \ - macro(CreateVolume) \ - macro(DeleteVolume) \ - macro(ControllerPublishVolume) \ - macro(ControllerUnpublishVolume) \ - macro(ValidateVolumeCapabilities) \ - macro(ListVolumes) \ - macro(GetCapacity) \ - macro(ControllerProbe) \ - macro(ControllerGetCapabilities) \ - macro(NodePublishVolume) \ - macro(NodeUnpublishVolume) \ - macro(GetNodeID) \ - macro(NodeProbe) \ +#define CSI_METHOD_FOREACH(macro) \ + macro(GetPluginInfo) \ + macro(GetPluginCapabilities) \ + macro(Probe) \ + macro(CreateVolume) \ + macro(DeleteVolume) \ + macro(ControllerPublishVolume) \ + macro(ControllerUnpublishVolume) \ + macro(ValidateVolumeCapabilities) \ + macro(ListVolumes) \ + macro(GetCapacity) \ + macro(ControllerGetCapabilities) \ + macro(NodeStageVolume) \ + macro(NodeUnstageVolume) \ + macro(NodePublishVolume) \ + macro(NodeUnpublishVolume) \ + macro(NodeGetId) \ macro(NodeGetCapabilities) -#define DECLARE_MOCK_CSI_METHOD(name) \ - MOCK_METHOD3(name, grpc::Status( \ - grpc::ServerContext* context, \ - const csi::name##Request* request, \ - csi::name##Response* response)); +#define DECLARE_MOCK_CSI_METHOD(name) \ + MOCK_METHOD3(name, grpc::Status( \ + grpc::ServerContext* context, \ + const csi::v0::name##Request* request, \ + csi::v0::name##Response* response)); // Definition of a mock CSI plugin to be used in tests with gmock. -class MockCSIPlugin : public csi::Identity::Service, - public csi::Controller::Service, - public csi::Node::Service +class MockCSIPlugin : public csi::v0::Identity::Service, + public csi::v0::Controller::Service, + public csi::v0::Node::Service { public: MockCSIPlugin();