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 2017/12/06 19:46:59 UTC
mesos git commit: Used a wrapper message for storage resource
provider info.
Repository: mesos
Updated Branches:
refs/heads/master dbaf85773 -> c399377f0
Used a wrapper message for storage resource provider info.
This is more future proof in case we want to add more storage resource
provider specific information.
Review: https://reviews.apache.org/r/64389
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/c399377f
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/c399377f
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/c399377f
Branch: refs/heads/master
Commit: c399377f020d446053764f6e26fcbda939966a7a
Parents: dbaf857
Author: Jie Yu <yu...@gmail.com>
Authored: Wed Dec 6 11:38:34 2017 -0800
Committer: Jie Yu <yu...@gmail.com>
Committed: Wed Dec 6 11:46:47 2017 -0800
----------------------------------------------------------------------
include/mesos/mesos.proto | 7 +++-
include/mesos/v1/mesos.proto | 7 +++-
src/common/type_utils.cpp | 8 +++++
src/resource_provider/storage/provider.cpp | 47 +++++++++++++------------
src/v1/mesos.cpp | 8 +++++
5 files changed, 52 insertions(+), 25 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/c399377f/include/mesos/mesos.proto
----------------------------------------------------------------------
diff --git a/include/mesos/mesos.proto b/include/mesos/mesos.proto
index 5b93478..839ddb1 100644
--- a/include/mesos/mesos.proto
+++ b/include/mesos/mesos.proto
@@ -1082,7 +1082,12 @@ message ResourceProviderInfo {
// new reservation's role must be a child of the current one.
repeated Resource.ReservationInfo default_reservations = 5; // EXPERIMENTAL.
- optional CSIPluginInfo storage = 6; // EXPERIMENTAL.
+ // Storage resource provider related information.
+ message Storage {
+ required CSIPluginInfo plugin = 1;
+ }
+
+ optional Storage storage = 6; // EXPERIMENTAL.
}
http://git-wip-us.apache.org/repos/asf/mesos/blob/c399377f/include/mesos/v1/mesos.proto
----------------------------------------------------------------------
diff --git a/include/mesos/v1/mesos.proto b/include/mesos/v1/mesos.proto
index 22b3c68..0ea17a8 100644
--- a/include/mesos/v1/mesos.proto
+++ b/include/mesos/v1/mesos.proto
@@ -1074,7 +1074,12 @@ message ResourceProviderInfo {
// new reservation's role must be a child of the current one.
repeated Resource.ReservationInfo default_reservations = 5; // EXPERIMENTAL.
- optional CSIPluginInfo storage = 6; // EXPERIMENTAL.
+ // Storage resource provider related information.
+ message Storage {
+ required CSIPluginInfo plugin = 1;
+ }
+
+ optional Storage storage = 6; // EXPERIMENTAL.
}
http://git-wip-us.apache.org/repos/asf/mesos/blob/c399377f/src/common/type_utils.cpp
----------------------------------------------------------------------
diff --git a/src/common/type_utils.cpp b/src/common/type_utils.cpp
index 1b466fc..8cc987c 100644
--- a/src/common/type_utils.cpp
+++ b/src/common/type_utils.cpp
@@ -401,6 +401,14 @@ bool operator==(const MasterInfo& left, const MasterInfo& right)
bool operator==(
+ const ResourceProviderInfo::Storage& left,
+ const ResourceProviderInfo::Storage& right)
+{
+ return left.plugin() == right.plugin();
+}
+
+
+bool operator==(
const ResourceProviderInfo& left,
const ResourceProviderInfo& right)
{
http://git-wip-us.apache.org/repos/asf/mesos/blob/c399377f/src/resource_provider/storage/provider.cpp
----------------------------------------------------------------------
diff --git a/src/resource_provider/storage/provider.cpp b/src/resource_provider/storage/provider.cpp
index d35b0d0..dc77368 100644
--- a/src/resource_provider/storage/provider.cpp
+++ b/src/resource_provider/storage/provider.cpp
@@ -169,8 +169,8 @@ static inline ContainerID getContainerId(
value += strings::join(
"-",
- strings::replace(info.storage().type(), ".", "-"),
- info.storage().name(),
+ strings::replace(info.storage().plugin().type(), ".", "-"),
+ info.storage().plugin().name(),
"");
for (int i = 0; i < container.services_size(); i++) {
@@ -189,7 +189,7 @@ static Option<CSIPluginContainerInfo> getCSIPluginContainerInfo(
const ContainerID& containerId)
{
foreach (const CSIPluginContainerInfo& container,
- info.storage().containers()) {
+ info.storage().plugin().containers()) {
if (getContainerId(info, container) == containerId) {
return container;
}
@@ -371,7 +371,7 @@ void StorageLocalResourceProviderProcess::initialize()
csiVersion.set_patch(0);
foreach (const CSIPluginContainerInfo& container,
- info.storage().containers()) {
+ info.storage().plugin().containers()) {
auto it = find(
container.services().begin(),
container.services().end(),
@@ -383,7 +383,7 @@ void StorageLocalResourceProviderProcess::initialize()
}
foreach (const CSIPluginContainerInfo& container,
- info.storage().containers()) {
+ info.storage().plugin().containers()) {
auto it = find(
container.services().begin(),
container.services().end(),
@@ -493,13 +493,14 @@ Future<Nothing> StorageLocalResourceProviderProcess::recoverServices()
{
Try<list<string>> containerPaths = csi::paths::getContainerPaths(
slave::paths::getCsiRootDir(workDir),
- info.storage().type(),
- info.storage().name());
+ info.storage().plugin().type(),
+ info.storage().plugin().name());
if (containerPaths.isError()) {
return Failure(
"Failed to find plugin containers for CSI plugin type '" +
- info.storage().type() + "' and name '" + info.storage().name() + ": " +
+ info.storage().plugin().type() + "' and name '" +
+ info.storage().plugin().name() + ": " +
containerPaths.error());
}
@@ -515,8 +516,8 @@ Future<Nothing> StorageLocalResourceProviderProcess::recoverServices()
containerId == nodeContainerId) {
const string configPath = csi::paths::getContainerInfoPath(
slave::paths::getCsiRootDir(workDir),
- info.storage().type(),
- info.storage().name(),
+ info.storage().plugin().type(),
+ info.storage().plugin().name(),
containerId);
Result<CSIPluginContainerInfo> config =
@@ -539,8 +540,8 @@ Future<Nothing> StorageLocalResourceProviderProcess::recoverServices()
Result<string> endpointDir =
os::realpath(csi::paths::getEndpointDirSymlinkPath(
slave::paths::getCsiRootDir(workDir),
- info.storage().type(),
- info.storage().name(),
+ info.storage().plugin().type(),
+ info.storage().plugin().name(),
containerId));
if (endpointDir.isSome()) {
@@ -720,8 +721,8 @@ Future<csi::Client> StorageLocalResourceProviderProcess::getService(
// Set the `CSI_ENDPOINT` environment variable.
Try<string> endpoint = csi::paths::getEndpointSocketPath(
slave::paths::getCsiRootDir(workDir),
- info.storage().type(),
- info.storage().name(),
+ info.storage().plugin().type(),
+ info.storage().plugin().name(),
containerId);
if (endpoint.isError()) {
@@ -754,8 +755,8 @@ Future<csi::Client> StorageLocalResourceProviderProcess::getService(
// Prepare the directory where the mount points will be placed.
const string mountDir = csi::paths::getMountRootDir(
slave::paths::getCsiRootDir(workDir),
- info.storage().type(),
- info.storage().name());
+ info.storage().plugin().type(),
+ info.storage().plugin().name());
Try<Nothing> mkdir = os::mkdir(mountDir);
if (mkdir.isError()) {
@@ -823,8 +824,8 @@ Future<csi::Client> StorageLocalResourceProviderProcess::getService(
// Checkpoint the plugin container config.
const string configPath = csi::paths::getContainerInfoPath(
slave::paths::getCsiRootDir(workDir),
- info.storage().type(),
- info.storage().name(),
+ info.storage().plugin().type(),
+ info.storage().plugin().name(),
containerId);
Try<Nothing> checkpoint = slave::state::checkpoint(configPath, config.get());
@@ -1052,11 +1053,11 @@ Try<Owned<LocalResourceProvider>> StorageLocalResourceProvider::create(
// naming convention.
// TODO(chhsiao): We should move this check to a validation function
// for `CSIPluginInfo`.
- if (!isValidType(info.storage().type()) ||
- !isValidName(info.storage().name())) {
+ if (!isValidType(info.storage().plugin().type()) ||
+ !isValidName(info.storage().plugin().name())) {
return Error(
- "CSI plugin type '" + info.storage().type() +
- "' and name '" + info.storage().name() +
+ "CSI plugin type '" + info.storage().plugin().type() +
+ "' and name '" + info.storage().plugin().name() +
"' does not follow Java package naming convention");
}
@@ -1064,7 +1065,7 @@ Try<Owned<LocalResourceProvider>> StorageLocalResourceProvider::create(
bool hasNodeService = false;
foreach (const CSIPluginContainerInfo& container,
- info.storage().containers()) {
+ info.storage().plugin().containers()) {
for (int i = 0; i < container.services_size(); i++) {
const CSIPluginContainerInfo::Service service = container.services(i);
if (service == CSIPluginContainerInfo::CONTROLLER_SERVICE) {
http://git-wip-us.apache.org/repos/asf/mesos/blob/c399377f/src/v1/mesos.cpp
----------------------------------------------------------------------
diff --git a/src/v1/mesos.cpp b/src/v1/mesos.cpp
index 2c81b37..190c999 100644
--- a/src/v1/mesos.cpp
+++ b/src/v1/mesos.cpp
@@ -395,6 +395,14 @@ bool operator==(const MasterInfo& left, const MasterInfo& right)
bool operator==(
+ const ResourceProviderInfo::Storage& left,
+ const ResourceProviderInfo::Storage& right)
+{
+ return left.plugin() == right.plugin();
+}
+
+
+bool operator==(
const ResourceProviderInfo& left,
const ResourceProviderInfo& right)
{