You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by ji...@apache.org on 2018/02/09 01:40:42 UTC
[6/8] mesos git commit: Passed `ResourceProviderInfo` to disk profile
adaptor modules.
Passed `ResourceProviderInfo` to disk profile adaptor modules.
Review: https://reviews.apache.org/r/65553/
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/87b91a1b
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/87b91a1b
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/87b91a1b
Branch: refs/heads/1.5.x
Commit: 87b91a1bc12d3e66b118ac3ed36d3cd623d8b21b
Parents: ae4f94a
Author: Chun-Hung Hsiao <ch...@mesosphere.io>
Authored: Thu Feb 8 14:41:16 2018 -0800
Committer: Jie Yu <yu...@gmail.com>
Committed: Thu Feb 8 17:36:05 2018 -0800
----------------------------------------------------------------------
.../resource_provider/storage/disk_profile.hpp | 53 +++++++++++---------
src/resource_provider/storage/disk_profile.cpp | 6 +--
src/resource_provider/storage/provider.cpp | 13 ++---
.../storage/uri_disk_profile.cpp | 14 +++---
.../storage/uri_disk_profile.hpp | 8 +--
5 files changed, 44 insertions(+), 50 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/87b91a1b/include/mesos/resource_provider/storage/disk_profile.hpp
----------------------------------------------------------------------
diff --git a/include/mesos/resource_provider/storage/disk_profile.hpp b/include/mesos/resource_provider/storage/disk_profile.hpp
index d1a522a..fa1a4fc 100644
--- a/include/mesos/resource_provider/storage/disk_profile.hpp
+++ b/include/mesos/resource_provider/storage/disk_profile.hpp
@@ -21,14 +21,16 @@
#include <string>
#include <tuple>
+#include <csi/spec.hpp>
+
+#include <mesos/mesos.hpp>
+
#include <process/future.hpp>
#include <stout/hashset.hpp>
#include <stout/none.hpp>
#include <stout/nothing.hpp>
-#include <csi/spec.hpp>
-
namespace mesos {
/**
@@ -97,43 +99,46 @@ public:
virtual ~DiskProfileAdaptor() {}
/**
- * Called before a Storage Resource Provider makes an affected CSI request.
- * The caller is responsible for copying the returned values into the request
- * object.
+ * Returns the CSI volume capability and the parameters to create CSI
+ * volumes associated with the profile.
*
- * This method is expected to return a Failure if a matching "profile"
+ * This method is expected to return a Failure if a matching profile
* cannot be found or retrieved. The caller should not proceed with
* any of the affected CSI requests if this method returns a failure.
*
- * The `csiPluginInfoType` parameter is the `CSIPluginInfo::type` field
- * found inside `ResourceProviderInfo::storage`. This module may choose to
- * filter results based on the type of CSI plugin.
+ * The `resourceProviderInfo` parameter is the `ResourceProviderInfo`
+ * of the storage resource provider. This module may choose to filter
+ * results based on the type and name of the resource provider, or
+ * based on the type of the CSI plugin.
*
- * NOTE: This module assumes that profiles are immutable after creation.
- * Changing the `VolumeCapability` or Parameters of a profile after creation
- * may result in undefined behavior from the SLRP or CSI plugins.
+ * NOTE: This module assumes that profiles are immutable after
+ * creation. Changing the CSI volume capability or parameters of a
+ * profile after creation may result in undefined behavior from the
+ * storage resource provider.
*/
virtual process::Future<ProfileInfo> translate(
const std::string& profile,
- const std::string& csiPluginInfoType) = 0;
+ const ResourceProviderInfo& resourceProviderInfo) = 0;
/**
- * Returns a future that will be satisifed iff the set of profiles known
- * by the module differs from the `knownProfiles` parameter.
+ * Returns a future that will be satisifed iff the set of profiles
+ * known by the module differs from the `knownProfiles` parameter.
*
- * The `csiPluginInfoType` parameter is the `CSIPluginInfo::type` field
- * found inside `ResourceProviderInfo::storage`. This module may choose to
- * filter results based on the type of CSI plugin.
+ * The `resourceProviderInfo` parameter is the `ResourceProviderInfo`
+ * of the storage resource provider. This module may choose to filter
+ * results based on the type and name of the resource provider, or
+ * based on the type of the CSI plugin.
*
- * NOTE: It is highly recommended for the module to insert a random delay
- * between discovering a different set of profiles and satisfying this
- * future, because the SLRP is expected to update the set of offered
- * resources based on this future. Adding a random delay may prevent
- * a thundering herd of resource updates to the Mesos master.
+ * NOTE: It is highly recommended for the module to insert a random
+ * delay between discovering a different set of profiles and
+ * satisfying this future, because the storage resource provider is
+ * expected to update the set of offered resources based on this
+ * future. Adding a random delay may prevent a thundering herd of
+ * resource updates to the Mesos master.
*/
virtual process::Future<hashset<std::string>> watch(
const hashset<std::string>& knownProfiles,
- const std::string& csiPluginInfoType) = 0;
+ const ResourceProviderInfo& resourceProviderInfo) = 0;
protected:
DiskProfileAdaptor() {}
http://git-wip-us.apache.org/repos/asf/mesos/blob/87b91a1b/src/resource_provider/storage/disk_profile.cpp
----------------------------------------------------------------------
diff --git a/src/resource_provider/storage/disk_profile.cpp b/src/resource_provider/storage/disk_profile.cpp
index 053fb7a..ba195cb 100644
--- a/src/resource_provider/storage/disk_profile.cpp
+++ b/src/resource_provider/storage/disk_profile.cpp
@@ -16,8 +16,6 @@
#include <string>
-#include <mesos/mesos.hpp>
-
#include <mesos/module/disk_profile.hpp>
#include <mesos/resource_provider/storage/disk_profile.hpp>
@@ -52,14 +50,14 @@ public:
virtual Future<DiskProfileAdaptor::ProfileInfo> translate(
const string& profile,
- const string& csiPluginInfoType) override
+ const ResourceProviderInfo& resourceProviderInfo) override
{
return Failure("By default, disk profiles are not supported");
}
virtual Future<hashset<string>> watch(
const hashset<string>& knownProfiles,
- const string& csiPluginInfoType) override
+ const ResourceProviderInfo& resourceProviderInfo) override
{
// If the input set of profiles is empty, that means the caller is in sync
// with this module. Hence, we return a future that will never be satisified
http://git-wip-us.apache.org/repos/asf/mesos/blob/87b91a1b/src/resource_provider/storage/provider.cpp
----------------------------------------------------------------------
diff --git a/src/resource_provider/storage/provider.cpp b/src/resource_provider/storage/provider.cpp
index 163ce7f..f0f4f80 100644
--- a/src/resource_provider/storage/provider.cpp
+++ b/src/resource_provider/storage/provider.cpp
@@ -636,9 +636,7 @@ Future<Nothing> StorageLocalResourceProviderProcess::recover()
loop(
self(),
[=] {
- return diskProfileAdaptor->watch(
- knownProfiles,
- info.storage().plugin().type())
+ return diskProfileAdaptor->watch(knownProfiles, info)
.then(defer(self(), [=](const hashset<string>& profiles) {
// Save the returned set of profiles so that we
// can watch the module for changes to it.
@@ -967,11 +965,7 @@ Future<Nothing> StorageLocalResourceProviderProcess::recoverProfiles()
// required profiles have been recovered.
return loop(
self(),
- [=] {
- return diskProfileAdaptor->watch(
- knownProfiles,
- info.storage().plugin().type());
- },
+ [=] { return diskProfileAdaptor->watch(knownProfiles, info); },
[=](const hashset<string>& profiles) -> ControlFlow<Nothing> {
// Save the returned set of profiles so that we can watch the
// module for changes to it, both in this loop and after
@@ -1255,8 +1249,7 @@ Future<Nothing> StorageLocalResourceProviderProcess::updateProfiles()
continue;
}
- futures.push_back(diskProfileAdaptor->translate(
- profile, info.storage().plugin().type())
+ futures.push_back(diskProfileAdaptor->translate(profile, info)
.then(defer(self(), [=](const DiskProfileAdaptor::ProfileInfo& info) {
profileInfos.put(profile, info);
return Nothing();
http://git-wip-us.apache.org/repos/asf/mesos/blob/87b91a1b/src/resource_provider/storage/uri_disk_profile.cpp
----------------------------------------------------------------------
diff --git a/src/resource_provider/storage/uri_disk_profile.cpp b/src/resource_provider/storage/uri_disk_profile.cpp
index 7372b29..5a48656 100644
--- a/src/resource_provider/storage/uri_disk_profile.cpp
+++ b/src/resource_provider/storage/uri_disk_profile.cpp
@@ -20,8 +20,6 @@
#include <string>
#include <tuple>
-#include <mesos/mesos.hpp>
-
#include <mesos/module/disk_profile.hpp>
#include <mesos/resource_provider/storage/disk_profile.hpp>
@@ -100,25 +98,25 @@ UriDiskProfileAdaptor::~UriDiskProfileAdaptor()
Future<DiskProfileAdaptor::ProfileInfo> UriDiskProfileAdaptor::translate(
const string& profile,
- const std::string& csiPluginInfoType)
+ const ResourceProviderInfo& resourceProviderInfo)
{
return dispatch(
process.get(),
&UriDiskProfileAdaptorProcess::translate,
profile,
- csiPluginInfoType);
+ resourceProviderInfo);
}
Future<hashset<string>> UriDiskProfileAdaptor::watch(
const hashset<string>& knownProfiles,
- const std::string& csiPluginInfoType)
+ const ResourceProviderInfo& resourceProviderInfo)
{
return dispatch(
process.get(),
&UriDiskProfileAdaptorProcess::watch,
knownProfiles,
- csiPluginInfoType);
+ resourceProviderInfo);
}
@@ -138,7 +136,7 @@ void UriDiskProfileAdaptorProcess::initialize()
Future<DiskProfileAdaptor::ProfileInfo>
UriDiskProfileAdaptorProcess::translate(
const string& profile,
- const std::string& csiPluginInfoType)
+ const ResourceProviderInfo& resourceProviderInfo)
{
if (data.count(profile) != 1) {
return Failure("Profile '" + profile + "' not found");
@@ -150,7 +148,7 @@ Future<DiskProfileAdaptor::ProfileInfo>
Future<hashset<string>> UriDiskProfileAdaptorProcess::watch(
const hashset<string>& knownProfiles,
- const std::string& csiPluginInfoType)
+ const ResourceProviderInfo& resourceProviderInfo)
{
if (profiles != knownProfiles) {
return profiles;
http://git-wip-us.apache.org/repos/asf/mesos/blob/87b91a1b/src/resource_provider/storage/uri_disk_profile.hpp
----------------------------------------------------------------------
diff --git a/src/resource_provider/storage/uri_disk_profile.hpp b/src/resource_provider/storage/uri_disk_profile.hpp
index 2f4fc7c..746111e 100644
--- a/src/resource_provider/storage/uri_disk_profile.hpp
+++ b/src/resource_provider/storage/uri_disk_profile.hpp
@@ -180,11 +180,11 @@ public:
virtual process::Future<mesos::DiskProfileAdaptor::ProfileInfo> translate(
const std::string& profile,
- const std::string& csiPluginInfoType) override;
+ const ResourceProviderInfo& resourceProviderInfo) override;
virtual process::Future<hashset<std::string>> watch(
const hashset<std::string>& knownProfiles,
- const std::string& csiPluginInfoType) override;
+ const ResourceProviderInfo& resourceProviderInfo) override;
protected:
Flags flags;
@@ -202,11 +202,11 @@ public:
process::Future<mesos::DiskProfileAdaptor::ProfileInfo> translate(
const std::string& profile,
- const std::string& csiPluginInfoType);
+ const ResourceProviderInfo& resourceProviderInfo);
process::Future<hashset<std::string>> watch(
const hashset<std::string>& knownProfiles,
- const std::string& csiPluginInfoType);
+ const ResourceProviderInfo& resourceProviderInfo);
private:
// Helpers for fetching the `--uri`.