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.