This is an automated email from the ASF dual-hosted git repository. grag pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/mesos.git
commit f0ce0f1d8601228f16efbb98420693af42b19d43 Author: Greg Mann <[email protected]> AuthorDate: Thu Sep 3 12:06:34 2020 -0700 Added a test helper for CSI volumes. Review: https://reviews.apache.org/r/72805/ --- src/tests/mesos.hpp | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) diff --git a/src/tests/mesos.hpp b/src/tests/mesos.hpp index 8f89d7c..49abfc2 100644 --- a/src/tests/mesos.hpp +++ b/src/tests/mesos.hpp @@ -853,6 +853,66 @@ inline TVolume createVolumeFromDockerImage( } +template <typename TVolume> +inline TVolume createVolumeCsi( + const std::string& pluginName, + const std::string volumeId, + const std::string& containerPath, + const typename TVolume::Source::CSIVolume::VolumeCapability + ::AccessMode::Mode mode, + bool readonly) +{ + TVolume volume; + volume.set_container_path(containerPath); + + typename TVolume::Source* source = volume.mutable_source(); + source->set_type(TVolume::Source::CSI_VOLUME); + source->mutable_csi_volume()->set_plugin_name(pluginName); + + typename TVolume::Source::CSIVolume::StaticProvisioning* staticInfo = + source->mutable_csi_volume()->mutable_static_provisioning(); + + staticInfo->set_volume_id(volumeId); + staticInfo->set_readonly(readonly); + staticInfo->mutable_volume_capability()->mutable_mount(); + staticInfo->mutable_volume_capability() + ->mutable_access_mode()->set_mode(mode); + + typedef typename TVolume::Source::CSIVolume::VolumeCapability::AccessMode + CSIAccessMode; + + // Set the top-level `mode` field of the volume based on the values of the + // CSI access mode and the `readonly` field. + typename TVolume::Mode mesosMode; + + switch (mode) { + case CSIAccessMode::SINGLE_NODE_WRITER: + case CSIAccessMode::MULTI_NODE_SINGLE_WRITER: + case CSIAccessMode::MULTI_NODE_MULTI_WRITER: { + if (readonly) { + mesosMode = TVolume::RO; + } else { + mesosMode = TVolume::RW; + } + + break; + } + + case CSIAccessMode::SINGLE_NODE_READER_ONLY: + case CSIAccessMode::MULTI_NODE_READER_ONLY: + default: { + mesosMode = TVolume::RO; + + break; + } + } + + volume.set_mode(mesosMode); + + return volume; +} + + template <typename TNetworkInfo> inline TNetworkInfo createNetworkInfo( const std::string& networkName) @@ -1745,6 +1805,14 @@ inline Volume createVolumeFromDockerImage(Args&&... args) template <typename... Args> +inline Volume createVolumeCsi(Args&&... args) +{ + return common::createVolumeCsi<Volume>( + std::forward<Args>(args)...); +} + + +template <typename... Args> inline NetworkInfo createNetworkInfo(Args&&... args) { return common::createNetworkInfo<NetworkInfo>(std::forward<Args>(args)...); @@ -2035,6 +2103,14 @@ inline mesos::v1::Volume createVolumeFromDockerImage(Args&&... args) template <typename... Args> +inline mesos::v1::Volume createVolumeCsi(Args&&... args) +{ + return common::createVolumeCsi<mesos::v1::Volume>( + std::forward<Args>(args)...); +} + + +template <typename... Args> inline mesos::v1::NetworkInfo createNetworkInfo(Args&&... args) { return common::createNetworkInfo<mesos::v1::NetworkInfo>(
