You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by ch...@apache.org on 2018/04/12 21:02:42 UTC

[4/6] mesos git commit: Updated CSI client to support v0.2.

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 <ch...@apache.org>
Authored: Thu Apr 12 12:07:11 2018 -0700
Committer: Chun-Hung Hsiao <ch...@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();