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 <chhs...@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();