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 2019/04/03 23:13:59 UTC

[mesos] 02/15: Adapted the unversioned `VolumeCapability`.

This is an automated email from the ASF dual-hosted git repository.

chhsiao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mesos.git

commit 8bab02a44d3c6ce51398b92adba540d60191cf2c
Author: Chun-Hung Hsiao <ch...@apache.org>
AuthorDate: Mon Apr 1 23:23:41 2019 -0700

    Adapted the unversioned `VolumeCapability`.
    
    This patch makes the disk profile adaptor module API and the CSI volume
    state protobuf to use the unversioned `VolumeCapability`, so the profile
    adaptors and the volume state checkpoints can be upgraded to support CSI
    v1 in a backward compatible way.
    
    The `DiskProfileMapping` protobuf used by `UriDiskProfileAdaptor`,
    however, still uses CSI v0 `VolumeCapability` for now, and devolve it
    to the unversioned protobuf during profile translation.
    
    Review: https://reviews.apache.org/r/70248/
---
 .../resource_provider/storage/disk_profile_adaptor.hpp   |  6 +++---
 src/csi/state.proto                                      |  4 ++--
 src/resource_provider/state.proto                        |  6 +++---
 src/resource_provider/storage/disk_profile_adaptor.cpp   |  2 --
 src/resource_provider/storage/provider.cpp               | 16 ++++++++++------
 .../storage/uri_disk_profile_adaptor.cpp                 |  4 +---
 .../storage/uri_disk_profile_adaptor.hpp                 |  2 --
 src/tests/disk_profile_adaptor_tests.cpp                 |  6 +++++-
 8 files changed, 24 insertions(+), 22 deletions(-)

diff --git a/include/mesos/resource_provider/storage/disk_profile_adaptor.hpp b/include/mesos/resource_provider/storage/disk_profile_adaptor.hpp
index 739585b..8b6da3a 100644
--- a/include/mesos/resource_provider/storage/disk_profile_adaptor.hpp
+++ b/include/mesos/resource_provider/storage/disk_profile_adaptor.hpp
@@ -21,10 +21,10 @@
 #include <string>
 #include <tuple>
 
-#include <csi/spec.hpp>
-
 #include <mesos/mesos.hpp>
 
+#include <mesos/csi/types.hpp>
+
 #include <process/future.hpp>
 
 #include <stout/hashset.hpp>
@@ -63,7 +63,7 @@ public:
      * of `VolumeCapability` objects, the module will only allow a single
      * `VolumeCapability`.
      */
-    csi::v0::VolumeCapability capability;
+    csi::types::VolumeCapability capability;
 
     /**
      * Free-form key-value pairs which should be passed into the body
diff --git a/src/csi/state.proto b/src/csi/state.proto
index b5ccf16..b7213ed 100644
--- a/src/csi/state.proto
+++ b/src/csi/state.proto
@@ -16,7 +16,7 @@
 
 syntax = "proto3";
 
-import "csi.proto";
+import "mesos/csi/types.proto";
 
 package mesos.csi.state;
 
@@ -44,7 +44,7 @@ message VolumeState {
   State state = 1;
 
   // The capability used to publish the volume. This is a REQUIRED field.
-  .csi.v0.VolumeCapability volume_capability = 2;
+  types.VolumeCapability volume_capability = 2;
 
   // The parameters used when creating the volume. This is an OPTIONAL field.
   map<string, string> parameters = 6;
diff --git a/src/resource_provider/state.proto b/src/resource_provider/state.proto
index eb56a91..e19d609 100644
--- a/src/resource_provider/state.proto
+++ b/src/resource_provider/state.proto
@@ -16,10 +16,10 @@
 
 syntax = "proto2";
 
-import "csi.proto";
-
 import "mesos/mesos.proto";
 
+import "mesos/csi/types.proto";
+
 package mesos.resource_provider;
 
 option java_package = "org.apache.mesos.resource_provider";
@@ -38,7 +38,7 @@ message ResourceProviderState {
     // Describes a manifest of CSI properties associated with a profile.
     // See DiskProfileAdaptor::ProfileInfo.
     message ProfileInfo {
-      required .csi.v0.VolumeCapability capability = 1;
+      required csi.types.VolumeCapability capability = 1;
       map<string, string> parameters = 2;
     }
 
diff --git a/src/resource_provider/storage/disk_profile_adaptor.cpp b/src/resource_provider/storage/disk_profile_adaptor.cpp
index b4551a6..262f313 100644
--- a/src/resource_provider/storage/disk_profile_adaptor.cpp
+++ b/src/resource_provider/storage/disk_profile_adaptor.cpp
@@ -16,8 +16,6 @@
 
 #include <string>
 
-#include <csi/spec.hpp>
-
 #include <mesos/module/disk_profile_adaptor.hpp>
 
 #include <mesos/resource_provider/storage/disk_profile_adaptor.hpp>
diff --git a/src/resource_provider/storage/provider.cpp b/src/resource_provider/storage/provider.cpp
index 7c14ff1..b762bb5 100644
--- a/src/resource_provider/storage/provider.cpp
+++ b/src/resource_provider/storage/provider.cpp
@@ -1784,7 +1784,8 @@ Future<Nothing> StorageLocalResourceProviderProcess::controllerPublish(
   csi::v0::ControllerPublishVolumeRequest request;
   request.set_volume_id(volumeId);
   request.set_node_id(nodeId.get());
-  *request.mutable_volume_capability() = volume.state.volume_capability();
+  *request.mutable_volume_capability() =
+    csi::v0::evolve(volume.state.volume_capability());
   request.set_readonly(false);
   *request.mutable_volume_attributes() = volume.state.volume_attributes();
 
@@ -1891,7 +1892,8 @@ Future<Nothing> StorageLocalResourceProviderProcess::nodeStage(
   request.set_volume_id(volumeId);
   *request.mutable_publish_info() = volume.state.publish_info();
   request.set_staging_target_path(stagingPath);
-  *request.mutable_volume_capability() = volume.state.volume_capability();
+  *request.mutable_volume_capability() =
+    csi::v0::evolve(volume.state.volume_capability());
   *request.mutable_volume_attributes() = volume.state.volume_attributes();
 
   return call<csi::v0::NODE_STAGE_VOLUME>(csi::NODE_SERVICE, std::move(request))
@@ -1993,7 +1995,8 @@ Future<Nothing> StorageLocalResourceProviderProcess::nodePublish(
   request.set_volume_id(volumeId);
   *request.mutable_publish_info() = volume.state.publish_info();
   request.set_target_path(targetPath);
-  *request.mutable_volume_capability() = volume.state.volume_capability();
+  *request.mutable_volume_capability() =
+    csi::v0::evolve(volume.state.volume_capability());
   request.set_readonly(false);
   *request.mutable_volume_attributes() = volume.state.volume_attributes();
 
@@ -2087,7 +2090,7 @@ Future<string> StorageLocalResourceProviderProcess::createVolume(
   request.set_name(name);
   request.mutable_capacity_range()->set_required_bytes(capacity.bytes());
   request.mutable_capacity_range()->set_limit_bytes(capacity.bytes());
-  *request.add_volume_capabilities() = profileInfo.capability;
+  *request.add_volume_capabilities() = csi::v0::evolve(profileInfo.capability);
   *request.mutable_parameters() = profileInfo.parameters;
 
   return call<csi::v0::CREATE_VOLUME>(
@@ -2276,7 +2279,7 @@ Future<Nothing> StorageLocalResourceProviderProcess::validateVolume(
   // once we get CSI v1.
   csi::v0::ValidateVolumeCapabilitiesRequest request;
   request.set_volume_id(volumeId);
-  *request.add_volume_capabilities() = profileInfo.capability;
+  *request.add_volume_capabilities() = csi::v0::evolve(profileInfo.capability);
   *request.mutable_volume_attributes() = volumeAttributes;
 
   return call<csi::v0::VALIDATE_VOLUME_CAPABILITIES>(
@@ -2365,7 +2368,8 @@ Future<Resources> StorageLocalResourceProviderProcess::getCapacities()
                const DiskProfileAdaptor::ProfileInfo& profileInfo,
                profileInfos) {
     csi::v0::GetCapacityRequest request;
-    *request.add_volume_capabilities() = profileInfo.capability;
+    *request.add_volume_capabilities() =
+      csi::v0::evolve(profileInfo.capability);
     *request.mutable_parameters() = profileInfo.parameters;
 
     futures.push_back(
diff --git a/src/resource_provider/storage/uri_disk_profile_adaptor.cpp b/src/resource_provider/storage/uri_disk_profile_adaptor.cpp
index cb574be..25b789d 100644
--- a/src/resource_provider/storage/uri_disk_profile_adaptor.cpp
+++ b/src/resource_provider/storage/uri_disk_profile_adaptor.cpp
@@ -20,8 +20,6 @@
 #include <string>
 #include <tuple>
 
-#include <csi/spec.hpp>
-
 #include <mesos/type_utils.hpp>
 
 #include <mesos/module/disk_profile_adaptor.hpp>
@@ -132,7 +130,7 @@ Future<DiskProfileAdaptor::ProfileInfo>
   }
 
   return DiskProfileAdaptor::ProfileInfo{
-    manifest.volume_capabilities(),
+    csi::v0::devolve(manifest.volume_capabilities()),
     manifest.create_parameters()
   };
 }
diff --git a/src/resource_provider/storage/uri_disk_profile_adaptor.hpp b/src/resource_provider/storage/uri_disk_profile_adaptor.hpp
index 7e610d3..a5a34dc 100644
--- a/src/resource_provider/storage/uri_disk_profile_adaptor.hpp
+++ b/src/resource_provider/storage/uri_disk_profile_adaptor.hpp
@@ -20,8 +20,6 @@
 #include <string>
 #include <tuple>
 
-#include <csi/spec.hpp>
-
 #include <mesos/resource_provider/storage/disk_profile_adaptor.hpp>
 
 #include <process/future.hpp>
diff --git a/src/tests/disk_profile_adaptor_tests.cpp b/src/tests/disk_profile_adaptor_tests.cpp
index 0ccbc79..84e5cb0 100644
--- a/src/tests/disk_profile_adaptor_tests.cpp
+++ b/src/tests/disk_profile_adaptor_tests.cpp
@@ -19,6 +19,10 @@
 #include <tuple>
 #include <vector>
 
+#include <csi/spec.hpp>
+
+#include <mesos/csi/types.hpp>
+
 #include <mesos/module/disk_profile_adaptor.hpp>
 
 #include <mesos/resource_provider/storage/disk_profile_adaptor.hpp>
@@ -483,7 +487,7 @@ TEST_F(UriDiskProfileAdaptorTest, FetchFromFile)
   AWAIT_ASSERT_READY(mapping);
   ASSERT_TRUE(mapping->capability.has_block());
   ASSERT_EQ(
-      csi::v0::VolumeCapability::AccessMode::MULTI_NODE_SINGLE_WRITER,
+      csi::types::VolumeCapability::AccessMode::MULTI_NODE_SINGLE_WRITER,
       mapping->capability.access_mode().mode());
 
   Clock::resume();