You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by jo...@apache.org on 2016/01/24 02:12:46 UTC
[10/11] mesos git commit: Multiple Disk: Adjusted DiskInfo validation.
Multiple Disk: Adjusted DiskInfo validation.
Review: https://reviews.apache.org/r/42505/
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/e34ac774
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/e34ac774
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/e34ac774
Branch: refs/heads/master
Commit: e34ac7747204a825c92ffcfda697a9b69989d524
Parents: 3ca8cce
Author: Joris Van Remoortere <jo...@gmail.com>
Authored: Wed Jan 20 22:44:28 2016 -0800
Committer: Joris Van Remoortere <jo...@gmail.com>
Committed: Sat Jan 23 17:12:09 2016 -0800
----------------------------------------------------------------------
src/common/resources.cpp | 26 +++++++++++++++++++++++---
src/master/validation.cpp | 2 +-
src/v1/resources.cpp | 26 +++++++++++++++++++++++---
3 files changed, 47 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mesos/blob/e34ac774/src/common/resources.cpp
----------------------------------------------------------------------
diff --git a/src/common/resources.cpp b/src/common/resources.cpp
index 5119535..0fcf860 100644
--- a/src/common/resources.cpp
+++ b/src/common/resources.cpp
@@ -675,9 +675,29 @@ Option<Error> Resources::validate(const Resource& resource)
}
// Checks for 'disk' resource.
- if (resource.has_disk() && resource.name() != "disk") {
- return Error(
- "DiskInfo should not be set for " + resource.name() + " resource");
+ if (resource.has_disk()) {
+ if (resource.name() != "disk") {
+ return Error(
+ "DiskInfo should not be set for " + resource.name() + " resource");
+ }
+
+ const Resource::DiskInfo& disk = resource.disk();
+
+ if (disk.has_source()) {
+ const Resource::DiskInfo::Source& source = disk.source();
+
+ if (source.type() == Resource::DiskInfo::Source::PATH &&
+ !source.has_path()) {
+ return Error(
+ "DiskInfo::Source 'type' set to 'PATH' but missing 'path' data");
+ }
+
+ if (source.type() == Resource::DiskInfo::Source::MOUNT &&
+ !source.has_mount()) {
+ return Error(
+ "DiskInfo::Source 'type' set to 'MOUNT' but missing 'mount' data");
+ }
+ }
}
// Checks for the invalid state of (role, reservation) pair.
http://git-wip-us.apache.org/repos/asf/mesos/blob/e34ac774/src/master/validation.cpp
----------------------------------------------------------------------
diff --git a/src/master/validation.cpp b/src/master/validation.cpp
index 222bb34..f2bc1ba 100644
--- a/src/master/validation.cpp
+++ b/src/master/validation.cpp
@@ -203,7 +203,7 @@ Option<Error> validateDiskInfo(const RepeatedPtrField<Resource>& resources)
}
} else if (resource.disk().has_volume()) {
return Error("Non-persistent volume not supported");
- } else {
+ } else if (!resource.disk().has_source()) {
return Error("DiskInfo is set but empty");
}
}
http://git-wip-us.apache.org/repos/asf/mesos/blob/e34ac774/src/v1/resources.cpp
----------------------------------------------------------------------
diff --git a/src/v1/resources.cpp b/src/v1/resources.cpp
index c639562..126e5a2 100644
--- a/src/v1/resources.cpp
+++ b/src/v1/resources.cpp
@@ -676,9 +676,29 @@ Option<Error> Resources::validate(const Resource& resource)
}
// Checks for 'disk' resource.
- if (resource.has_disk() && resource.name() != "disk") {
- return Error(
- "DiskInfo should not be set for " + resource.name() + " resource");
+ if (resource.has_disk()) {
+ if (resource.name() != "disk") {
+ return Error(
+ "DiskInfo should not be set for " + resource.name() + " resource");
+ }
+
+ const Resource::DiskInfo& disk = resource.disk();
+
+ if (disk.has_source()) {
+ const Resource::DiskInfo::Source& source = disk.source();
+
+ if (source.type() == Resource::DiskInfo::Source::PATH &&
+ !source.has_path()) {
+ return Error(
+ "DiskInfo::Source 'type' set to 'PATH' but missing 'path' data");
+ }
+
+ if (source.type() == Resource::DiskInfo::Source::MOUNT &&
+ !source.has_mount()) {
+ return Error(
+ "DiskInfo::Source 'type' set to 'MOUNT' but missing 'mount' data");
+ }
+ }
}
// Checks for the invalid state of (role, reservation) pair.