[5/8] mesos git commit: Added support of `max_completion_time` in docker executor.

2018-05-03 Thread jpeach
Added support of `max_completion_time` in docker executor.

If `TaskInfo.max_completion_time` is set, docker executor will kill
the task immediately. We reuse the `shutdown` method to achieve a
forced kill ignoring any `KillPolicy`.

Framework should only received a `TASK_FAILED` state with
`REASON_MAX_COMPLETION_TIME_REACHED` reason.

Review: https://reviews.apache.org/r/66283/


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/d86a7fed
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/d86a7fed
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/d86a7fed

Branch: refs/heads/master
Commit: d86a7fed949ebc4c51a89c4fa7adef91ac5de9dc
Parents: 0278ac9
Author: Zhitao Li 
Authored: Thu May 3 08:34:44 2018 -0700
Committer: James Peach 
Committed: Thu May 3 08:34:44 2018 -0700

--
 src/docker/executor.cpp | 68 +---
 1 file changed, 64 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/mesos/blob/d86a7fed/src/docker/executor.cpp
--
diff --git a/src/docker/executor.cpp b/src/docker/executor.cpp
index 1d67211..16509da 100644
--- a/src/docker/executor.cpp
+++ b/src/docker/executor.cpp
@@ -99,6 +99,7 @@ public:
   killed(false),
   terminated(false),
   killedByHealthCheck(false),
+  killedByTaskCompletionTimeout(false),
   launcherDir(launcherDir),
   docker(docker),
   containerName(containerName),
@@ -159,6 +160,22 @@ public:
   killPolicy = task.kill_policy();
 }
 
+// Setup timer for max_completion_time.
+if (task.max_completion_time().nanoseconds() > 0) {
+  Duration duration = 
Nanoseconds(task.max_completion_time().nanoseconds());
+
+  LOG(INFO) << "Task " << taskId.get() << " has a max completion time of "
+<< duration;
+
+  taskCompletionTimer = delay(
+  duration,
+  self(),
+  &Self::taskCompletionTimeout,
+  driver,
+  task.task_id(),
+  duration);
+}
+
 LOG(INFO) << "Starting task " << taskId.get();
 
 // Send initial TASK_STARTING update.
@@ -387,6 +404,29 @@ public:
 killTask(driver, taskId, gracePeriod);
   }
 
+  void taskCompletionTimeout(
+  ExecutorDriver* driver, const TaskID& taskId, const Duration& duration)
+  {
+if (killed) {
+  return;
+}
+
+if (terminated) {
+  return;
+}
+
+LOG(INFO) << "Killing task " << taskId
+  << " which exceeded its maximum completion time of " << duration;
+
+taskCompletionTimer = None();
+killedByTaskCompletionTimeout = true;
+killed = true;
+
+// Use a zero grace period to kill the task, in order to ignore the
+// `KillPolicy`.
+killTask(driver, taskId, Duration::zero());
+  }
+
   void frameworkMessage(ExecutorDriver* driver, const string& data) {}
 
   void shutdown(ExecutorDriver* driver)
@@ -467,6 +507,12 @@ private:
   return;
 }
 
+// Cancel the taskCompletionTimer if it is set and ongoing.
+if (taskCompletionTimer.isSome()) {
+  Clock::cancel(taskCompletionTimer.get());
+  taskCompletionTimer = None();
+}
+
 // Terminate if a kill task request is received before the task is 
launched.
 // This can happen, for example, if `RunTaskMessage` has not been 
delivered.
 // See MESOS-8297.
@@ -522,8 +568,10 @@ private:
   if (!killed) {
 killed = true;
 
-// Send TASK_KILLING if the framework can handle it.
-if (protobuf::frameworkHasCapability(
+// Send TASK_KILLING if task is not killed by completion timeout and
+// the framework can handle it.
+if (!killedByTaskCompletionTimeout &&
+protobuf::frameworkHasCapability(
 frameworkInfo.get(),
 FrameworkInfo::Capability::TASK_KILLING_STATE)) {
   // TODO(alexr): Use `protobuf::createTaskStatus()`
@@ -531,6 +579,7 @@ private:
   TaskStatus status;
   status.mutable_task_id()->CopyFrom(taskId.get());
   status.set_state(TASK_KILLING);
+
   driver.get()->sendStatusUpdate(status);
 }
 
@@ -639,6 +688,7 @@ private:
   void _reaped(const Future>& run)
   {
 TaskState state;
+Option reason = None();
 string message;
 
 if (!run.isReady()) {
@@ -654,7 +704,10 @@ private:
   CHECK(WIFEXITED(status) || WIFSIGNALED(status))
 << "Unexpected wait status " << status;
 
-  if (killed) {
+  if (killedByTaskCompletionTimeout) {
+state = TASK_FAILED;
+reason = TaskStatus::REASON_MAX_COMPLETION_TIME_REACHED;
+  } else if (killed) {
 // Send TASK_KILLED if the task was killed as a result of
 // kill() or shutdown(). Note that in general there is a

[1/8] mesos git commit: Added `max_completion_time` to `TaskInfo` and new reason.

2018-05-03 Thread jpeach
Repository: mesos
Updated Branches:
  refs/heads/master 868ec364b -> 0dcf5c7f0


Added `max_completion_time` to `TaskInfo` and new reason.

This new field can be used support tasks which have a maximum duration
scheduling requirement. The new reason is added to distinguish from
normal task kills.

Review: https://reviews.apache.org/r/66258/


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/835f52bf
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/835f52bf
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/835f52bf

Branch: refs/heads/master
Commit: 835f52bfdd0951ec731c19e084a5bc0ab58a287e
Parents: 868ec36
Author: Zhitao Li 
Authored: Thu May 3 08:33:04 2018 -0700
Committer: James Peach 
Committed: Thu May 3 08:33:04 2018 -0700

--
 include/mesos/mesos.proto| 9 +
 include/mesos/v1/mesos.proto | 9 +
 2 files changed, 18 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/mesos/blob/835f52bf/include/mesos/mesos.proto
--
diff --git a/include/mesos/mesos.proto b/include/mesos/mesos.proto
index 5bc4a80..a61de9d 100644
--- a/include/mesos/mesos.proto
+++ b/include/mesos/mesos.proto
@@ -2111,6 +2111,14 @@ message TaskInfo {
   // to use this information as needed and to handle tasks without
   // service discovery information.
   optional DiscoveryInfo discovery = 11;
+
+  // Maximum duration for task completion. If the task is non-terminal at the
+  // end of this duration, it will fail with the reason
+  // `REASON_MAX_COMPLETION_TIME_REACHED`. Mesos supports this field for
+  // executor-less tasks, and tasks that use Docker or default executors.
+  // It is the executor's responsibility to implement this, so it might not be
+  // supported by all custom executors.
+  optional DurationInfo max_completion_time = 14;
 }
 
 
@@ -2443,6 +2451,7 @@ message TaskStatus {
 REASON_CONTAINER_LIMITATION_MEMORY = 8;
 REASON_CONTAINER_PREEMPTED = 17;
 REASON_CONTAINER_UPDATE_FAILED = 22;
+REASON_MAX_COMPLETION_TIME_REACHED = 33;
 REASON_EXECUTOR_REGISTRATION_TIMEOUT = 23;
 REASON_EXECUTOR_REREGISTRATION_TIMEOUT = 24;
 REASON_EXECUTOR_TERMINATED = 1;

http://git-wip-us.apache.org/repos/asf/mesos/blob/835f52bf/include/mesos/v1/mesos.proto
--
diff --git a/include/mesos/v1/mesos.proto b/include/mesos/v1/mesos.proto
index 5a4e733..317d9ef 100644
--- a/include/mesos/v1/mesos.proto
+++ b/include/mesos/v1/mesos.proto
@@ -2103,6 +2103,14 @@ message TaskInfo {
   // to use this information as needed and to handle tasks without
   // service discovery information.
   optional DiscoveryInfo discovery = 11;
+
+  // Maximum duration for task completion. If the task is non-terminal at the
+  // end of this duration, it will fail with the reason
+  // `REASON_MAX_COMPLETION_TIME_REACHED`. Mesos supports this field for
+  // executor-less tasks, and tasks that use Docker or default executors.
+  // It is the executor's responsibility to implement this, so it might not be
+  // supported by all custom executors.
+  optional DurationInfo max_completion_time = 14;
 }
 
 
@@ -2435,6 +2443,7 @@ message TaskStatus {
 REASON_CONTAINER_LIMITATION_MEMORY = 8;
 REASON_CONTAINER_PREEMPTED = 17;
 REASON_CONTAINER_UPDATE_FAILED = 22;
+REASON_MAX_COMPLETION_TIME_REACHED = 33;
 REASON_EXECUTOR_REGISTRATION_TIMEOUT = 23;
 REASON_EXECUTOR_REREGISTRATION_TIMEOUT = 24;
 REASON_EXECUTOR_TERMINATED = 1;



[3/8] mesos git commit: Added `max_completion_time` support to command executor.

2018-05-03 Thread jpeach
Added `max_completion_time` support to command executor.

If `TaskInfo.max_completion_time` is set, command executor will kill
the task with `SIGKILL` immediately. Note that no KillPolicy will be
observed. Framework should only received a `TASK_FAILED` state with
`REASON_MAX_COMPLETION_TIME_REACHED` reason.

Review: https://reviews.apache.org/r/66259/


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/197d1ea3
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/197d1ea3
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/197d1ea3

Branch: refs/heads/master
Commit: 197d1ea395e76961615e30f5b03550b1a4a4e779
Parents: 95bf46b
Author: Zhitao Li 
Authored: Thu May 3 08:33:32 2018 -0700
Committer: James Peach 
Committed: Thu May 3 08:33:32 2018 -0700

--
 src/launcher/executor.cpp | 64 ++
 1 file changed, 59 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/mesos/blob/197d1ea3/src/launcher/executor.cpp
--
diff --git a/src/launcher/executor.cpp b/src/launcher/executor.cpp
index 8d0869c..541ca5b 100644
--- a/src/launcher/executor.cpp
+++ b/src/launcher/executor.cpp
@@ -140,6 +140,7 @@ public:
   launched(false),
   killed(false),
   killedByHealthCheck(false),
+  killedByMaxCompletionTimer(false),
   terminated(false),
   pid(None()),
   shutdownGracePeriod(_shutdownGracePeriod),
@@ -646,6 +647,21 @@ protected:
   launchEnvironment.add_variables()->CopyFrom(variable);
 }
 
+// Setup timer for max_completion_time.
+if (task.max_completion_time().nanoseconds() > 0) {
+  Duration duration = 
Nanoseconds(task.max_completion_time().nanoseconds());
+
+  LOG(INFO) << "Task " << taskId.get() << " has a max completion time of "
+<< duration;
+
+  taskCompletionTimer = delay(
+  duration,
+  self(),
+  &Self::taskCompletionTimeout,
+  task.task_id(),
+  duration);
+}
+
 LOG(INFO) << "Starting task " << taskId.get();
 
 pid = launchTaskSubprocess(
@@ -734,6 +750,12 @@ protected:
 
   void kill(const TaskID& _taskId, const Option& override = None())
   {
+// Cancel the taskCompletionTimer if it is set and ongoing.
+if (taskCompletionTimer.isSome()) {
+  Clock::cancel(taskCompletionTimer.get());
+  taskCompletionTimer = None();
+}
+
 // Default grace period is set to 3s for backwards compatibility.
 //
 // TODO(alexr): Replace it with a more meaningful default, e.g.
@@ -846,10 +868,13 @@ private:
   CHECK_SOME(taskId);
   CHECK(taskId.get() == _taskId);
 
-  if (protobuf::frameworkHasCapability(
+  if (!killedByMaxCompletionTimer &&
+  protobuf::frameworkHasCapability(
   frameworkInfo.get(),
   FrameworkInfo::Capability::TASK_KILLING_STATE)) {
-TaskStatus status = createTaskStatus(taskId.get(), TASK_KILLING);
+TaskStatus status =
+  createTaskStatus(taskId.get(), TASK_KILLING);
+
 forward(status);
   }
 
@@ -915,6 +940,13 @@ private:
   Clock::cancel(killGracePeriodTimer.get());
 }
 
+if (taskCompletionTimer.isSome()) {
+  Clock::cancel(taskCompletionTimer.get());
+  taskCompletionTimer = None();
+}
+
+Option reason = None();
+
 if (!status_.isReady()) {
   taskState = TASK_FAILED;
   message =
@@ -928,7 +960,10 @@ private:
   CHECK(WIFEXITED(status) || WIFSIGNALED(status))
 << "Unexpected wait status " << status;
 
-  if (killed) {
+  if (killedByMaxCompletionTimer) {
+taskState = TASK_FAILED;
+reason = TaskStatus::REASON_MAX_COMPLETION_TIME_REACHED;
+  } else if (killed) {
 // Send TASK_KILLED if the task was killed as a result of
 // kill() or shutdown().
 taskState = TASK_KILLED;
@@ -948,7 +983,7 @@ private:
 TaskStatus status = createTaskStatus(
 taskId.get(),
 taskState,
-None(),
+reason,
 message);
 
 // Indicate that a kill occurred due to a failing health check.
@@ -1007,6 +1042,23 @@ private:
 }
   }
 
+
+  void taskCompletionTimeout(const TaskID& taskId, const Duration& duration)
+  {
+CHECK(!terminated);
+CHECK(!killed);
+
+LOG(INFO) << "Killing task " << taskId
+  << " which exceeded its maximum completion time of " << duration;
+
+taskCompletionTimer = None();
+killedByMaxCompletionTimer = true;
+
+// Use a zero gracePeriod to kill the task.
+kill(taskId, Duration::zero());
+  }
+
+
   // Use this helper to create a status update from scratch, i.e., without
   // previously attached extra information like `data` or `check_status`.
   TaskStatus cr

[2/8] mesos git commit: Added a validation that `max_completion_time` must be non-negative.

2018-05-03 Thread jpeach
Added a validation that `max_completion_time` must be non-negative.

Review: https://reviews.apache.org/r/66591/


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/95bf46b9
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/95bf46b9
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/95bf46b9

Branch: refs/heads/master
Commit: 95bf46b9a114c5e37a45802f962414ef60ca2fc6
Parents: 835f52b
Author: Zhitao Li 
Authored: Thu May 3 08:33:08 2018 -0700
Committer: James Peach 
Committed: Thu May 3 08:33:08 2018 -0700

--
 src/master/validation.cpp | 13 +
 src/master/validation.hpp |  3 +++
 2 files changed, 16 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/mesos/blob/95bf46b9/src/master/validation.cpp
--
diff --git a/src/master/validation.cpp b/src/master/validation.cpp
index ac2e1bb..15dfa8a 100644
--- a/src/master/validation.cpp
+++ b/src/master/validation.cpp
@@ -1187,6 +1187,18 @@ Option validateKillPolicy(const TaskInfo& task)
 }
 
 
+Option validateMaxCompletionTime(const TaskInfo& task)
+{
+  if (task.has_max_completion_time() &&
+  Nanoseconds(task.max_completion_time().nanoseconds()) <
+Duration::zero()) {
+return Error("Task's `max_completion_time` must be non-negative");
+  }
+
+  return None();
+}
+
+
 Option validateCheck(const TaskInfo& task)
 {
   if (task.has_check()) {
@@ -1321,6 +1333,7 @@ Option validateTask(
 lambda::bind(internal::validateUniqueTaskID, task, framework),
 lambda::bind(internal::validateSlaveID, task, slave),
 lambda::bind(internal::validateKillPolicy, task),
+lambda::bind(internal::validateMaxCompletionTime, task),
 lambda::bind(internal::validateCheck, task),
 lambda::bind(internal::validateHealthCheck, task),
 lambda::bind(internal::validateResources, task),

http://git-wip-us.apache.org/repos/asf/mesos/blob/95bf46b9/src/master/validation.hpp
--
diff --git a/src/master/validation.hpp b/src/master/validation.hpp
index 7c129ce..c1ab754 100644
--- a/src/master/validation.hpp
+++ b/src/master/validation.hpp
@@ -189,6 +189,9 @@ Option validateTaskAndExecutorResources(const 
TaskInfo& task);
 // Validates the kill policy of the task.
 Option validateKillPolicy(const TaskInfo& task);
 
+// Validates `max_completion_time` of the task.
+Option validateMaxCompletionTime(const TaskInfo& task);
+
 // Validates the check of the task.
 Option validateCheck(const TaskInfo& task);
 



[6/8] mesos git commit: Tested `max_completion_time` support in docker executor.

2018-05-03 Thread jpeach
Tested `max_completion_time` support in docker executor.

Review: https://reviews.apache.org/r/66284/


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/7e11a2d3
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/7e11a2d3
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/7e11a2d3

Branch: refs/heads/master
Commit: 7e11a2d39cc642944897d2480105dbfd860fa601
Parents: d86a7fe
Author: Zhitao Li 
Authored: Thu May 3 08:34:48 2018 -0700
Committer: James Peach 
Committed: Thu May 3 08:34:48 2018 -0700

--
 .../docker_containerizer_tests.cpp  | 108 +++
 1 file changed, 108 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/mesos/blob/7e11a2d3/src/tests/containerizer/docker_containerizer_tests.cpp
--
diff --git a/src/tests/containerizer/docker_containerizer_tests.cpp 
b/src/tests/containerizer/docker_containerizer_tests.cpp
index 5e3dfdb..d834e53 100644
--- a/src/tests/containerizer/docker_containerizer_tests.cpp
+++ b/src/tests/containerizer/docker_containerizer_tests.cpp
@@ -559,6 +559,114 @@ TEST_F(DockerContainerizerTest, ROOT_DOCKER_Launch)
 }
 
 
+// This test verifies that docker executor will terminate a task after it
+// reaches `max_completion_time`.
+TEST_F(DockerContainerizerTest, ROOT_DOCKER_MaxCompletionTime)
+{
+  Try> master = StartMaster();
+  ASSERT_SOME(master);
+
+  MockDocker* mockDocker =
+new MockDocker(tests::flags.docker, tests::flags.docker_socket);
+
+  Shared docker(mockDocker);
+
+  slave::Flags flags = CreateSlaveFlags();
+
+  Fetcher fetcher(flags);
+
+  Try logger =
+ContainerLogger::create(flags.container_logger);
+
+  ASSERT_SOME(logger);
+
+  MockDockerContainerizer dockerContainerizer(
+  flags,
+  &fetcher,
+  Owned(logger.get()),
+  docker);
+
+  Owned detector = master.get()->createDetector();
+
+  Try> slave =
+StartSlave(detector.get(), &dockerContainerizer, flags);
+  ASSERT_SOME(slave);
+
+  MockScheduler sched;
+  MesosSchedulerDriver driver(
+  &sched, DEFAULT_FRAMEWORK_INFO, master.get()->pid, DEFAULT_CREDENTIAL);
+
+  Future frameworkId;
+  EXPECT_CALL(sched, registered(&driver, _, _))
+.WillOnce(FutureArg<1>(&frameworkId));
+
+  Future> offers;
+  EXPECT_CALL(sched, resourceOffers(&driver, _))
+.WillOnce(FutureArg<1>(&offers))
+.WillRepeatedly(Return()); // Ignore subsequent offers.
+
+  driver.start();
+
+  AWAIT_READY(frameworkId);
+
+  AWAIT_READY(offers);
+  ASSERT_FALSE(offers->empty());
+
+  const Offer& offer = offers.get()[0];
+
+  TaskInfo task =
+createTask(offer.slave_id(), offer.resources(), SLEEP_COMMAND(1000));
+
+  // Set a `max_completion_time` for 2 seconds. Hopefully this should not
+  // block test too long and still keep it reliable.
+  task.mutable_max_completion_time()->set_nanoseconds(Seconds(2).ns());
+
+  ContainerInfo containerInfo;
+  containerInfo.set_type(ContainerInfo::DOCKER);
+
+  // TODO(tnachen): Use local image to test if possible.
+  task.mutable_container()->CopyFrom(createDockerInfo("alpine"));
+
+  Future containerId;
+  EXPECT_CALL(dockerContainerizer, launch(_, _, _, _))
+.WillOnce(DoAll(FutureArg<0>(&containerId),
+Invoke(&dockerContainerizer,
+   &MockDockerContainerizer::_launch)));
+
+  Future statusStarting;
+  Future statusRunning;
+  Future statusFailed;
+
+  EXPECT_CALL(sched, statusUpdate(&driver, _))
+.WillOnce(FutureArg<1>(&statusStarting))
+.WillOnce(FutureArg<1>(&statusRunning))
+.WillOnce(FutureArg<1>(&statusFailed));
+
+  driver.launchTasks(offers.get()[0].id(), {task});
+
+  AWAIT_READY_FOR(containerId, Seconds(60));
+
+  Future> termination =
+dockerContainerizer.wait(containerId.get());
+
+  AWAIT_READY_FOR(statusStarting, Seconds(60));
+  EXPECT_EQ(TASK_STARTING, statusStarting->state());
+  AWAIT_READY_FOR(statusRunning, Seconds(60));
+  EXPECT_EQ(TASK_RUNNING, statusRunning->state());
+  AWAIT_READY(statusFailed);
+  EXPECT_EQ(TASK_FAILED, statusFailed->state());
+
+  EXPECT_EQ(
+  TaskStatus::REASON_MAX_COMPLETION_TIME_REACHED, statusFailed->reason());
+
+  AWAIT_READY(termination);
+  EXPECT_SOME(termination.get());
+
+  driver.stop();
+  driver.join();
+}
+
+
 TEST_F(DockerContainerizerTest, ROOT_DOCKER_Kill)
 {
   Try> master = StartMaster();



[4/8] mesos git commit: Tested `max_completion_time` support in command executor.

2018-05-03 Thread jpeach
Tested `max_completion_time` support in command executor.

Review: https://reviews.apache.org/r/66260/


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/0278ac9f
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/0278ac9f
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/0278ac9f

Branch: refs/heads/master
Commit: 0278ac9f2890442c1bf84af2562eb27d1dbb0f50
Parents: 197d1ea
Author: Zhitao Li 
Authored: Thu May 3 08:34:40 2018 -0700
Committer: James Peach 
Committed: Thu May 3 08:34:40 2018 -0700

--
 src/tests/command_executor_tests.cpp | 75 +++
 1 file changed, 75 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/mesos/blob/0278ac9f/src/tests/command_executor_tests.cpp
--
diff --git a/src/tests/command_executor_tests.cpp 
b/src/tests/command_executor_tests.cpp
index 3c5687f..02ae250 100644
--- a/src/tests/command_executor_tests.cpp
+++ b/src/tests/command_executor_tests.cpp
@@ -230,6 +230,81 @@ TEST_P(CommandExecutorTest, TaskKillingCapability)
 }
 
 
+// This test ensures that the command executor will terminate a task after it
+// reaches `max_completion_time`.
+TEST_P(CommandExecutorTest, MaxCompletionTime)
+{
+  Try> master = StartMaster();
+  ASSERT_SOME(master);
+
+  Owned detector = master.get()->createDetector();
+
+  slave::Flags flags = CreateSlaveFlags();
+  flags.http_command_executor = GetParam();
+
+  Try> slave = StartSlave(detector.get(), flags);
+  ASSERT_SOME(slave);
+
+  // Although the framework is started with the task killing capability,
+  // it should not receive a `TASK_KILLING` status update.
+  FrameworkInfo::Capability capability;
+  capability.set_type(FrameworkInfo::Capability::TASK_KILLING_STATE);
+
+  FrameworkInfo frameworkInfo = DEFAULT_FRAMEWORK_INFO;
+  frameworkInfo.add_capabilities()->CopyFrom(capability);
+
+  MockScheduler sched;
+  MesosSchedulerDriver driver(
+  &sched, frameworkInfo, master.get()->pid, DEFAULT_CREDENTIAL);
+
+  EXPECT_CALL(sched, registered(&driver, _, _));
+
+  Future> offers;
+  EXPECT_CALL(sched, resourceOffers(&driver, _))
+.WillOnce(FutureArg<1>(&offers))
+.WillRepeatedly(Return()); // Ignore subsequent offers.
+
+  driver.start();
+
+  AWAIT_READY(offers);
+  EXPECT_EQ(1u, offers->size());
+
+  // Launch a task with the command executor.
+  TaskInfo task = createTask(
+  offers->front().slave_id(),
+  offers->front().resources(),
+   SLEEP_COMMAND(1000));
+
+  // Set a `max_completion_time` for 2 seconds. Hopefully this should not
+  // block test too long and still keep it reliable.
+  task.mutable_max_completion_time()->set_nanoseconds(Seconds(2).ns());
+
+  Future statusStarting;
+  Future statusRunning;
+  Future statusFailed;
+
+  EXPECT_CALL(sched, statusUpdate(_, _))
+.WillOnce(FutureArg<1>(&statusStarting))
+.WillOnce(FutureArg<1>(&statusRunning))
+.WillOnce(FutureArg<1>(&statusFailed));
+
+  driver.launchTasks(offers->front().id(), {task});
+
+  AWAIT_READY(statusStarting);
+  EXPECT_EQ(TASK_STARTING, statusStarting->state());
+  AWAIT_READY(statusRunning);
+  EXPECT_EQ(TASK_RUNNING, statusRunning->state());
+  AWAIT_READY(statusFailed);
+  EXPECT_EQ(TASK_FAILED, statusFailed->state());
+
+  EXPECT_EQ(
+  TaskStatus::REASON_MAX_COMPLETION_TIME_REACHED, statusFailed->reason());
+
+  driver.stop();
+  driver.join();
+}
+
+
 // TODO(qianzhang): Kill policy helpers are not yet enabled on Windows. See
 // MESOS-8168.
 #ifndef __WINDOWS__



[8/8] mesos git commit: Tested default executor support of `max_completion_time`.

2018-05-03 Thread jpeach
Tested default executor support of `max_completion_time`.

Review: https://reviews.apache.org/r/66293/


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/0dcf5c7f
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/0dcf5c7f
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/0dcf5c7f

Branch: refs/heads/master
Commit: 0dcf5c7f0a013f67fff1fb012d1f45455f394708
Parents: a2ce5e4
Author: Zhitao Li 
Authored: Thu May 3 08:35:03 2018 -0700
Committer: James Peach 
Committed: Thu May 3 08:35:03 2018 -0700

--
 src/tests/default_executor_tests.cpp | 223 ++
 1 file changed, 223 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/mesos/blob/0dcf5c7f/src/tests/default_executor_tests.cpp
--
diff --git a/src/tests/default_executor_tests.cpp 
b/src/tests/default_executor_tests.cpp
index bf849c4..cd7e263 100644
--- a/src/tests/default_executor_tests.cpp
+++ b/src/tests/default_executor_tests.cpp
@@ -1705,6 +1705,229 @@ TEST_P(DefaultExecutorTest, SigkillExecutor)
 }
 
 
+// This test verifies that the default executor terminates the entire group
+// when some task exceeded its `max_completion_time`.
+TEST_P(DefaultExecutorTest, MaxCompletionTime)
+{
+  Try> master = StartMaster();
+  ASSERT_SOME(master);
+
+  slave::Flags flags = CreateSlaveFlags();
+
+  Owned detector = master.get()->createDetector();
+  Try> slave = StartSlave(detector.get(), flags);
+  ASSERT_SOME(slave);
+
+  auto scheduler = std::make_shared();
+
+  EXPECT_CALL(*scheduler, connected(_))
+.WillOnce(v1::scheduler::SendSubscribe(v1::DEFAULT_FRAMEWORK_INFO));
+
+  Future subscribed;
+  EXPECT_CALL(*scheduler, subscribed(_, _))
+.WillOnce(FutureArg<1>(&subscribed));
+
+  Future offers;
+  EXPECT_CALL(*scheduler, offers(_, _))
+.WillOnce(FutureArg<1>(&offers))
+.WillRepeatedly(Return());
+
+  EXPECT_CALL(*scheduler, heartbeat(_))
+.WillRepeatedly(Return()); // Ignore heartbeats.
+
+  v1::scheduler::TestMesos mesos(
+  master.get()->pid,
+  ContentType::PROTOBUF,
+  scheduler);
+
+  AWAIT_READY(subscribed);
+  v1::FrameworkID frameworkId(subscribed->framework_id());
+
+  v1::Resources resources =
+v1::Resources::parse("cpus:0.1;mem:32;disk:32").get();
+
+  v1::ExecutorInfo executorInfo = v1::createExecutorInfo(
+  v1::DEFAULT_EXECUTOR_ID,
+  None(),
+  resources,
+  v1::ExecutorInfo::DEFAULT,
+  frameworkId);
+
+  AWAIT_READY(offers);
+  ASSERT_FALSE(offers->offers().empty());
+
+  const v1::Offer& offer = offers->offers(0);
+  const v1::AgentID& agentId = offer.agent_id();
+
+  // Task 1 will finish before its max_completion_time.
+  v1::TaskInfo taskInfo1 = v1::createTask(agentId, resources, "exit 0");
+
+  taskInfo1.mutable_max_completion_time()->set_nanoseconds(Seconds(2).ns());
+
+  // Task 2 will trigger its max_completion_time.
+  v1::TaskInfo taskInfo2 =
+v1::createTask(agentId, resources, SLEEP_COMMAND(1000));
+
+  taskInfo2.mutable_max_completion_time()->set_nanoseconds(Seconds(2).ns());
+
+  // Task 3 has no max_completion_time.
+  v1::TaskInfo taskInfo3 =
+v1::createTask(agentId, resources, SLEEP_COMMAND(1000));
+
+  Future startingUpdate1;
+  Future runningUpdate1;
+  Future finishedUpdate1;
+
+  testing::Sequence task1;
+  EXPECT_CALL(
+  *scheduler,
+  update(_, AllOf(
+  TaskStatusUpdateTaskIdEq(taskInfo1),
+  TaskStatusUpdateStateEq(v1::TASK_STARTING
+.InSequence(task1)
+.WillOnce(
+DoAll(
+FutureArg<1>(&startingUpdate1),
+v1::scheduler::SendAcknowledge(frameworkId, agentId)));
+
+  EXPECT_CALL(
+  *scheduler,
+  update(_, AllOf(
+  TaskStatusUpdateTaskIdEq(taskInfo1),
+  TaskStatusUpdateStateEq(v1::TASK_RUNNING
+.InSequence(task1)
+.WillOnce(
+DoAll(
+FutureArg<1>(&runningUpdate1),
+v1::scheduler::SendAcknowledge(frameworkId, agentId)));
+
+  EXPECT_CALL(
+  *scheduler,
+  update(_, AllOf(
+  TaskStatusUpdateTaskIdEq(taskInfo1),
+  TaskStatusUpdateStateEq(v1::TASK_FINISHED
+.InSequence(task1)
+.WillOnce(
+DoAll(
+FutureArg<1>(&finishedUpdate1),
+v1::scheduler::SendAcknowledge(frameworkId, agentId)));
+
+  Future startingUpdate2;
+  Future runningUpdate2;
+  Future failedUpdate2;
+
+  testing::Sequence task2;
+  EXPECT_CALL(
+  *scheduler,
+  update(_, AllOf(
+  TaskStatusUpdateTaskIdEq(taskInfo2),
+  TaskStatusUpdateStateEq(v1::TASK_STARTING
+.InSequence(task2)
+.WillOnce(
+DoAll(
+FutureArg<1>(&startingUpdate2),
+v1::scheduler::SendAcknowledge(frameworkId, agentId)));
+
+  EXPECT_CALL(
+  *schedu

[7/8] mesos git commit: Added support to `max_completion_time` in default executor.

2018-05-03 Thread jpeach
Added support to `max_completion_time` in default executor.

When a task group has multiple tasks:
- each task can have its own `max_completion_time`, or not have one;
- if a task succeeds before its `max_completion_time`, all other tasks
will keep running;
- if a task fails, all other tasks in the same group will fail (as
before);
- if a task does not succeed before its `max_completion_time`, it will
fail with `TASK_FAILED` and reason `REASON_MAX_COMPLETION_TIME_REACHED`,
while other tasks will be killed without above reason.

Review: https://reviews.apache.org/r/66291/


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/a2ce5e45
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/a2ce5e45
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/a2ce5e45

Branch: refs/heads/master
Commit: a2ce5e459b89bc775a8de877d2050450938516ab
Parents: 7e11a2d
Author: Zhitao Li 
Authored: Thu May 3 08:34:58 2018 -0700
Committer: James Peach 
Committed: Thu May 3 08:34:58 2018 -0700

--
 src/launcher/default_executor.cpp | 75 ++
 1 file changed, 58 insertions(+), 17 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/mesos/blob/a2ce5e45/src/launcher/default_executor.cpp
--
diff --git a/src/launcher/default_executor.cpp 
b/src/launcher/default_executor.cpp
index ea0d425..76c6106 100644
--- a/src/launcher/default_executor.cpp
+++ b/src/launcher/default_executor.cpp
@@ -66,6 +66,7 @@ using process::Clock;
 using process::Failure;
 using process::Future;
 using process::Owned;
+using process::Timer;
 using process::UPID;
 
 using process::http::Connection;
@@ -129,6 +130,11 @@ private:
 
 // Set to true if the task group is in the process of being killed.
 bool killingTaskGroup;
+
+// Set to true if the task has exceeded its max completion timeout.
+bool killedByCompletionTimeout;
+
+Option maxCompletionTimer;
   };
 
 public:
@@ -608,6 +614,15 @@ protected:
 container->healthChecker = healthChecker.get();
   }
 
+  // Setup timer for max_completion_time.
+  if (task.max_completion_time().nanoseconds() > 0) {
+Duration duration =
+  Nanoseconds(task.max_completion_time().nanoseconds());
+
+container->maxCompletionTimer = delay(
+duration, self(), &Self::maxCompletion, task.task_id(), duration);
+  }
+
   // Currently, the Mesos agent does not expose the mapping from
   // `ContainerID` to `TaskID` for nested containers.
   // In order for the Web UI to access the task sandbox, we create
@@ -873,7 +888,10 @@ protected:
 CHECK(WIFEXITED(status) || WIFSIGNALED(status))
   << "Unexpected wait status " << status;
 
-if (container->killing) {
+if (container->killedByCompletionTimeout) {
+  taskState = TASK_FAILED;
+  reason = TaskStatus::REASON_MAX_COMPLETION_TIME_REACHED;
+} else if (container->killing) {
   // Send TASK_KILLED if the task was killed as a result of
   // `killTask()` or `shutdown()`.
   taskState = TASK_KILLED;
@@ -1065,7 +1083,7 @@ protected:
 
   Future kill(
   Container* container,
-  const Option& killPolicy = None())
+  const Option& _gracePeriod = None())
   {
 if (!container->launched) {
   // We can get here if we're killing a task group for which multiple
@@ -1073,6 +1091,11 @@ protected:
   return Nothing();
 }
 
+if (container->maxCompletionTimer.isSome()) {
+  Clock::cancel(container->maxCompletionTimer.get());
+  container->maxCompletionTimer = None();
+}
+
 CHECK(!container->killing);
 container->killing = true;
 
@@ -1105,19 +1128,8 @@ protected:
 // Default grace period is set to 3s.
 Duration gracePeriod = Seconds(3);
 
-Option taskInfoKillPolicy;
-if (container->taskInfo.has_kill_policy()) {
-  taskInfoKillPolicy = container->taskInfo.kill_policy();
-}
-
-// Kill policy provided in the `Kill` event takes precedence
-// over kill policy specified when the task was launched.
-if (killPolicy.isSome() && killPolicy->has_grace_period()) {
-  gracePeriod = Nanoseconds(killPolicy->grace_period().nanoseconds());
-} else if (taskInfoKillPolicy.isSome() &&
-   taskInfoKillPolicy->has_grace_period()) {
-  gracePeriod =
-Nanoseconds(taskInfoKillPolicy->grace_period().nanoseconds());
+if (_gracePeriod.isSome()) {
+  gracePeriod = _gracePeriod.get();
 }
 
 LOG(INFO) << "Scheduling escalation to SIGKILL in " << gracePeriod
@@ -1135,7 +1147,8 @@ protected:
 // Send a 'TASK_KILLING' update if the framework can handle it.
 CHECK_SOME(frameworkInfo);
 
-if (protobuf::frameworkHasCapability(
+

[1/5] mesos-site git commit: Updated the website built from mesos SHA: 0dcf5c7.

2018-05-03 Thread git-site-role
Repository: mesos-site
Updated Branches:
  refs/heads/asf-site 6843f1aed -> 2da671651


http://git-wip-us.apache.org/repos/asf/mesos-site/blob/2da67165/content/api/latest/java/org/apache/mesos/Protos.TaskInfo.html
--
diff --git a/content/api/latest/java/org/apache/mesos/Protos.TaskInfo.html 
b/content/api/latest/java/org/apache/mesos/Protos.TaskInfo.html
index fb6a15b..0298d0f 100644
--- a/content/api/latest/java/org/apache/mesos/Protos.TaskInfo.html
+++ b/content/api/latest/java/org/apache/mesos/Protos.TaskInfo.html
@@ -17,7 +17,7 @@
 catch(err) {
 }
 //-->
-var methods = 
{"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":9,"i9":10,"i10":9,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":9,"i51":9,"i52":10,"i53":10,"i54":9,"i55":9,"i56":9,"i57":9,"i58":9,"i59":9,"i60":9,"i61":9,"i62":9,"i63":9,"i64":9,"i65":10,"i66":10};
+var methods = 
{"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":9,"i9":10,"i10":9,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":9,"i54":9,"i55":10,"i56":10,"i57":9,"i58":9,"i59":9,"i60":9,"i61":9,"i62":9,"i63":9,"i64":9,"i65":9,"i66":9,"i67":9,"i68":10,"i69":10};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static 
Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -211,23 +211,27 @@ implements 
 
 static int
-NAME_FIELD_NUMBER 
+MAX_COMPLETION_TIME_FIELD_NUMBER 
 
 
+static int
+NAME_FIELD_NUMBER 
+
+
 static 
 PARSER
 Deprecated. 
 
 
-
+
 static int
 RESOURCES_FIELD_NUMBER 
 
-
+
 static int
 SLAVE_ID_FIELD_NUMBER 
 
-
+
 static int
 TASK_ID_FIELD_NUMBER 
 
@@ -381,97 +385,111 @@ implements 
 
 
+Protos.DurationInfo
+getMaxCompletionTime()
+
+ Maximum duration for task completion.
+
+
+
+Protos.DurationInfoOrBuilder
+getMaxCompletionTimeOrBuilder()
+
+ Maximum duration for task completion.
+
+
+
 java.lang.String
 getName()
 required string name = 1;
 
 
-
+
 com.google.protobuf.ByteString
 getNameBytes()
 required string name = 1;
 
 
-
+
 
 getParserForType() 
 
-
+
 Protos.Resource
 getResources(int index)
 repeated .mesos.Resource resources = 4;
 
 
-
+
 int
 getResourcesCount()
 repeated .mesos.Resource resources = 4;
 
 
-
+
 java.util.List
 getResourcesList()
 repeated .mesos.Resource resources = 4;
 
 
-
+
 Protos.ResourceOrBuilder
 getResourcesOrBuilder(int index)
 repeated .mesos.Resource resources = 4;
 
 
-
+
 java.util.List
 getResourcesOrBuilderList()
 repeated .mesos.Resource resources = 4;
 
 
-
+
 int
 getSerializedSize() 
 
-
+
 Protos.SlaveID
 getSlaveId()
 required .mesos.SlaveID slave_id = 3;
 
 
-
+
 Protos.SlaveIDOrBuilder
 getSlaveIdOrBuilder()
 required .mesos.SlaveID slave_id = 3;
 
 
-
+
 Protos.TaskID
 getTaskId()
 required .mesos.TaskID task_id = 2;
 
 
-
+
 Protos.TaskIDOrBuilder
 getTaskIdOrBuilder()
 required .mesos.TaskID task_id = 2;
 
 
-
+
 com.google.protobuf.UnknownFieldSet
 getUnknownFields() 
 
-
+
 boolean
 hasCheck()
 
  A general check for the task.
 
 
-
+
 boolean
 hasCommand()
 optional .mesos.CommandInfo command = 7;
 
 
-
+
 boolean
 hasContainer()
 
@@ -479,44 +497,44 @@ implements 
 
 
-
+
 boolean
 hasData()
 optional bytes data = 6;
 
 
-
+
 boolean
 hasDiscovery()
 
  Service discovery information for the task.
 
 
-
+
 boolean
 hasExecutor()
 optional .mesos.ExecutorInfo executor = 
5;
 
 
-
+
 int
 hashCode() 
 
-
+
 boolean
 hasHealthCheck()
 
  A health check for the task.
 
 
-
+
 boolean
 hasKillPolicy()
 
  A kill policy for the task.
 
 
-
+
 boolean
 hasLabels()
 
@@ -524,103 +542,110 @@ implements 
 
 
-
+
+boolean
+hasMaxCompletionTime()
+
+ Maximum duration for task completion.
+
+
+
 boolean
 hasName()
 required string name = 1;
 
 
-
+
 boolean
 hasSlaveId()
 required .mesos.SlaveID slave_id = 3;
 
 
-
+
 boolean
 hasTaskId()
 required .mesos.TaskID task_id = 2;
 
 
-
+
 protected 
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
 internalGetFieldAccessorTable() 
 
-
+
 boolean
 isInitialized() 
 
-
+
 static Protos.TaskInfo.Builder
 newBuilder() 
 
-
+
 static Protos.TaskInfo.Builder
 newBuilder(Protos.TaskInfo prototype) 
 
-
+
 Protos.TaskInfo.Builder
 newBuilderForType() 
 
-
+
 protected Protos.TaskInfo.Builder
 newB

[3/5] mesos-site git commit: Updated the website built from mesos SHA: 0dcf5c7.

2018-05-03 Thread git-site-role
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/2da67165/content/api/latest/c++/namespacemembers_func_v.html
--
diff --git a/content/api/latest/c++/namespacemembers_func_v.html 
b/content/api/latest/c++/namespacemembers_func_v.html
index b4e0ee2..9b5411f 100644
--- a/content/api/latest/c++/namespacemembers_func_v.html
+++ b/content/api/latest/c++/namespacemembers_func_v.html
@@ -157,6 +157,9 @@
 validateManifest()
 : appc::spec
 
+validateMaxCompletionTime()
+: mesos::internal::master::validation::task::internal
+
 validateProjectIds()
 : mesos::internal::xfs
 

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/2da67165/content/api/latest/c++/namespacemembers_m.html
--
diff --git a/content/api/latest/c++/namespacemembers_m.html 
b/content/api/latest/c++/namespacemembers_m.html
index 024653d..2b3de0f 100644
--- a/content/api/latest/c++/namespacemembers_m.html
+++ b/content/api/latest/c++/namespacemembers_m.html
@@ -389,7 +389,7 @@
 : strings
 
 model()
-: mesos::internal
+: mesos::internal
 
 ModuleID
 : mesos::internal::tests

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/2da67165/content/api/latest/c++/namespacemembers_r.html
--
diff --git a/content/api/latest/c++/namespacemembers_r.html 
b/content/api/latest/c++/namespacemembers_r.html
index 6a328a7..d19af23 100644
--- a/content/api/latest/c++/namespacemembers_r.html
+++ b/content/api/latest/c++/namespacemembers_r.html
@@ -106,13 +106,13 @@
 , mesos::internal::credentials
 , mesos::internal::slave::state
 , os
+, process::io
 
 READ
 : process::io
 
 read()
-: process::io
-, protobuf
+: protobuf
 
 read< Resources >()
 : mesos::internal::slave::state

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/2da67165/content/api/latest/c++/namespacemembers_s.html
--
diff --git a/content/api/latest/c++/namespacemembers_s.html 
b/content/api/latest/c++/namespacemembers_s.html
index af0f188..0812d51 100644
--- a/content/api/latest/c++/namespacemembers_s.html
+++ b/content/api/latest/c++/namespacemembers_s.html
@@ -237,7 +237,7 @@
 : process::metrics
 
 socket()
-: net
+: net
 
 Socket
 : process::network::inet
@@ -254,7 +254,7 @@
 : process
 
 soft_limit_in_bytes()
-: cgroups::memory
+: cgroups::memory
 
 spawn()
 : os
@@ -324,7 +324,7 @@
 : os
 
 subprocess()
-: process
+: process
 
 subsystems()
 : cgroups

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/2da67165/content/api/latest/c++/namespacemembers_v.html
--
diff --git a/content/api/latest/c++/namespacemembers_v.html 
b/content/api/latest/c++/namespacemembers_v.html
index db19a62..4bbd9e6 100644
--- a/content/api/latest/c++/namespacemembers_v.html
+++ b/content/api/latest/c++/namespacemembers_v.html
@@ -157,6 +157,9 @@
 validateManifest()
 : appc::spec
 
+validateMaxCompletionTime()
+: mesos::internal::master::validation::task::internal
+
 validateProjectIds()
 : mesos::internal::xfs
 

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/2da67165/content/api/latest/c++/namespacemesos_1_1internal_1_1master_1_1validation_1_1task_1_1internal.html
--
diff --git 
a/content/api/latest/c++/namespacemesos_1_1internal_1_1master_1_1validation_1_1task_1_1internal.html
 
b/content/api/latest/c++/namespacemesos_1_1internal_1_1master_1_1validation_1_1task_1_1internal.html
index ce436cb..b73a01d 100644
--- 
a/content/api/latest/c++/namespacemesos_1_1internal_1_1master_1_1validation_1_1task_1_1internal.html
+++ 
b/content/api/latest/c++/namespacemesos_1_1internal_1_1master_1_1validation_1_1task_1_1internal.html
@@ -63,6 +63,8 @@ Functions
  
 Option< 
Error > validateKillPolicy
 (const TaskInfo &task)
  
+Option< 
Error > validateMaxCompletionTime
 (const TaskInfo &task)
+ 
 Option< 
Error > validateCheck
 (const TaskInfo &task)
  
 Option< 
Error > validateHealthCheck
 (const TaskInfo &task)
@@ -117,6 +119,22 @@ Functions
 
 
 
+
+
+
+  
+
+  Option 
mesos::internal::master::validation::task::internal::validateMaxCompletionTime 

+  (
+  const TaskInfo & 
+  task)
+  
+
+  
+
+
+
+
 
 
 

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/2da67165/content/api/latest/java/constant-values.html
--
diff --git a/content/api/latest/java/constant-values.html 
b/content/api/latest/java/constant-values.html
index ce19f05..232bd29 100644
--- a/content/api/latest/java/constant-values.html
+++ b/content/api/latest/java/constant-values.html
@@ -6732,27 +6732,34 @@
 10
 
 
+
+
+public static final int
+MAX_COMPLETION_TIME_FIELD_NUMBER
+14
+
+
 
 
 public static 

[2/5] mesos-site git commit: Updated the website built from mesos SHA: 0dcf5c7.

2018-05-03 Thread git-site-role
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/2da67165/content/api/latest/java/org/apache/mesos/Protos.TaskInfo.Builder.html
--
diff --git 
a/content/api/latest/java/org/apache/mesos/Protos.TaskInfo.Builder.html 
b/content/api/latest/java/org/apache/mesos/Protos.TaskInfo.Builder.html
index 8768178..7298388 100644
--- a/content/api/latest/java/org/apache/mesos/Protos.TaskInfo.Builder.html
+++ b/content/api/latest/java/org/apache/mesos/Protos.TaskInfo.Builder.html
@@ -17,7 +17,7 @@
 catch(err) {
 }
 //-->
-var methods = 
{"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":9,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i54":10,"i55":10,"i56":10,"i57":10,"i58":10,"i59":10,"i60":10,"i61":10,"i62":10,"i63":10,"i64":10,"i65":10,"i66":10,"i67":10,"i68":10,"i69":10,"i70":10,"i71":10,"i72":10,"i73":10,"i74":10,"i75":10,"i76":10,"i77":10,"i78":10,"i79":10,"i80":10,"i81":10,"i82":10,"i83":10,"i84":10,"i85":10,"i86":10,"i87":10,"i88":10,"i89":10,"i90":10,"i91":10,"i92":10,"i93":10,"i94":10,"i95":10,"i96":10,"i97":10,"i98":10,"i99":10,"i100":10,"i101":10,"i102":10,"i103":10,"i104":10,"i105":10,"i106":10,"i107":10,"i108":10,"i1
 
09":10,"i110":10,"i111":10,"i112":10,"i113":10,"i114":10,"i115":10,"i116":10,"i117":10,"i118":10,"i119":10,"i120":10,"i121":10,"i122":10,"i123":10,"i124":10,"i125":10};
+var methods = 
{"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":9,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i54":10,"i55":10,"i56":10,"i57":10,"i58":10,"i59":10,"i60":10,"i61":10,"i62":10,"i63":10,"i64":10,"i65":10,"i66":10,"i67":10,"i68":10,"i69":10,"i70":10,"i71":10,"i72":10,"i73":10,"i74":10,"i75":10,"i76":10,"i77":10,"i78":10,"i79":10,"i80":10,"i81":10,"i82":10,"i83":10,"i84":10,"i85":10,"i86":10,"i87":10,"i88":10,"i89":10,"i90":10,"i91":10,"i92":10,"i93":10,"i94":10,"i95":10,"i96":10,"i97":10,"i98":10,"i99":10,"i100":10,"i101":10,"i102":10,"i103":10,"i104":10,"i105":10,"i106":10,"i107":10,"i108":10,"i1
 
09":10,"i110":10,"i111":10,"i112":10,"i113":10,"i114":10,"i115":10,"i116":10,"i117":10,"i118":10,"i119":10,"i120":10,"i121":10,"i122":10,"i123":10,"i124":10,"i125":10,"i126":10,"i127":10,"i128":10,"i129":10,"i130":10,"i131":10,"i132":10,"i133":10};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static 
Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -279,76 +279,83 @@ implements 
 
 Protos.TaskInfo.Builder
+clearMaxCompletionTime()
+
+ Maximum duration for task completion.
+
+
+
+Protos.TaskInfo.Builder
 clearName()
 required string name = 1;
 
 
-
+
 Protos.TaskInfo.Builder
 clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) 
 
-
+
 Protos.TaskInfo.Builder
 clearResources()
 repeated .mesos.Resource resources = 4;
 
 
-
+
 Protos.TaskInfo.Builder
 clearSlaveId()
 required .mesos.SlaveID slave_id = 3;
 
 
-
+
 Protos.TaskInfo.Builder
 clearTaskId()
 required .mesos.TaskID task_id = 2;
 
 
-
+
 Protos.TaskInfo.Builder
 clone() 
 
-
+
 Protos.CheckInfo
 getCheck()
 
  A general check for the task.
 
 
-
+
 Protos.CheckInfo.Builder
 getCheckBuilder()
 
  A general check for the task.
 
 
-
+
 Protos.CheckInfoOrBuilder
 getCheckOrBuilder()
 
  A general check for the task.
 
 
-
+
 Protos.CommandInfo
 getCommand()
 optional .mesos.CommandInfo command = 7;
 
 
-
+
 Protos.CommandInfo.Builder
 getCommandBuilder()
 optional .mesos.CommandInfo command = 7;
 
 
-
+
 Protos.CommandInfoOrBuilder
 getCommandOrBuilder()
 optional .mesos.CommandInfo command = 7;
 
 
-
+
 Protos.ContainerInfo
 getContainer()
 
@@ -356,7 +363,7 @@ implements 
 
 
-
+
 Protos.ContainerInfo.Builder
 getContainerBuilder()
 
@@ -364,7 +371,7 @@ implements 
 
 
-
+
 Protos.ContainerInfoOrBuilder
 getContainerOrBuilder()
 
@@ -372,106 +379,106 @@ implements 
 
 
-
+
 com.google.protobuf.ByteString
 getData()
 optional bytes data = 6;
 
 
-
+
 Protos.TaskInfo
 getDefaultInstanceForType() 
 
-
+
 static 
com.google.protobuf.Descriptors.Descriptor
 getDescriptor() 
 
-
+
 com.google.protobuf.Descriptors.Descriptor
 getDescriptorForType() 
 
-
+
 Protos.DiscoveryInfo
 getDiscovery()
 
  Service discovery information for the task.
 
 
-
+
 Pr

[5/5] mesos-site git commit: Updated the website built from mesos SHA: 0dcf5c7.

2018-05-03 Thread git-site-role
Updated the website built from mesos SHA: 0dcf5c7.


Project: http://git-wip-us.apache.org/repos/asf/mesos-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos-site/commit/2da67165
Tree: http://git-wip-us.apache.org/repos/asf/mesos-site/tree/2da67165
Diff: http://git-wip-us.apache.org/repos/asf/mesos-site/diff/2da67165

Branch: refs/heads/asf-site
Commit: 2da67165198ab69ecd39fd58126f7266710745fc
Parents: 6843f1a
Author: jenkins 
Authored: Thu May 3 16:38:26 2018 +
Committer: jenkins 
Committed: Thu May 3 16:38:26 2018 +

--
 content/api/latest/c++/Nodes.xml|   5 +
 content/api/latest/c++/Tokens.xml   |  22 +
 content/api/latest/c++/index.hhc|   1 +
 content/api/latest/c++/index.hhk| 201 +
 .../api/latest/c++/master_2validation_8hpp.html |   2 +
 .../c++/master_2validation_8hpp_source.html |   3 +-
 .../api/latest/c++/namespacemembers_func_v.html |   3 +
 content/api/latest/c++/namespacemembers_m.html  |   2 +-
 content/api/latest/c++/namespacemembers_r.html  |   4 +-
 content/api/latest/c++/namespacemembers_s.html  |   6 +-
 content/api/latest/c++/namespacemembers_v.html  |   3 +
 ...aster_1_1validation_1_1task_1_1internal.html |  18 +
 content/api/latest/java/constant-values.html|  50 ++-
 content/api/latest/java/index-all.html  |  76 
 .../apache/mesos/Protos.TaskInfo.Builder.html   | 430 ++-
 .../java/org/apache/mesos/Protos.TaskInfo.html  | 207 ++---
 .../apache/mesos/Protos.TaskInfoOrBuilder.html  | 126 --
 .../apache/mesos/Protos.TaskStatus.Reason.html  |  95 ++--
 content/blog/feed.xml   |   2 +-
 .../index.html  |   2 +-
 20 files changed, 931 insertions(+), 327 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/mesos-site/blob/2da67165/content/api/latest/c++/Nodes.xml
--
diff --git a/content/api/latest/c++/Nodes.xml b/content/api/latest/c++/Nodes.xml
index 324321c..843e83c 100644
--- a/content/api/latest/c++/Nodes.xml
+++ b/content/api/latest/c++/Nodes.xml
@@ -82276,6 +82276,11 @@
   aea75ca826f924863c11796152c96ec33
  
  
+  validateMaxCompletionTime
+  master_2validation_8hpp.html
+  a270c483773571f50d8d9821c1ef2551b
+ 
+ 
   validateResources
   master_2validation_8hpp.html
   aaf28f7a39db6151b2451beff6fef7ed3

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/2da67165/content/api/latest/c++/Tokens.xml
--
diff --git a/content/api/latest/c++/Tokens.xml 
b/content/api/latest/c++/Tokens.xml
index 80a252e..e6222d3 100644
--- a/content/api/latest/c++/Tokens.xml
+++ b/content/api/latest/c++/Tokens.xml
@@ -19469,6 +19469,17 @@
   
   
 
+  validateMaxCompletionTime
+  cpp
+  func
+  mesos::internal::master::validation::task::internal
+
+
namespacemesos_1_1internal_1_1master_1_1validation_1_1task_1_1internal.html
+a270c483773571f50d8d9821c1ef2551b
+validation.hpp
+  
+  
+
   validateCheck
   cpp
   func
@@ -86272,6 +86283,17 @@
   
   
 
+  validateMaxCompletionTime
+  cpp
+  func
+  mesos::internal::master::validation::task::internal
+
+
namespacemesos_1_1internal_1_1master_1_1validation_1_1task_1_1internal.html
+a270c483773571f50d8d9821c1ef2551b
+validation.hpp
+  
+  
+
   validateCheck
   cpp
   func

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/2da67165/content/api/latest/c++/index.hhc
--
diff --git a/content/api/latest/c++/index.hhc b/content/api/latest/c++/index.hhc
index cdbf5f6..d8b598f 100644
--- a/content/api/latest/c++/index.hhc
+++ b/content/api/latest/c++/index.hhc
@@ -21579,6 +21579,7 @@
   
   
   
+  
   
   
   

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/2da67165/content/api/latest/c++/index.hhk
--
diff --git a/content/api/latest/c++/index.hhk b/content/api/latest/c++/index.hhk
index 54f7296..f1576ba 100644
--- a/content/api/latest/c++/index.hhk
+++ b/content/api/latest/c++/index.hhk
@@ -1485,15 +1485,15 @@
 
   
   
-  
-  
   
+
 
-
   
+  
   
   
   
+
 
 
 
@@ -8161,8 +8161,8 @@
   
   
 
-
 
+
 
 
 
@@ -9127,6 +9127,7 @@
 
 
 
+
 
 
 
@@ -10973,8 +10974,8 @@
 
 
 
-
 
+
   
   
   
@@ -11096,6 +11097,7 @@
 
 
 

[4/5] mesos-site git commit: Updated the website built from mesos SHA: 0dcf5c7.

2018-05-03 Thread git-site-role
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/2da67165/content/api/latest/c++/master_2validation_8hpp_source.html
--
diff --git a/content/api/latest/c++/master_2validation_8hpp_source.html 
b/content/api/latest/c++/master_2validation_8hpp_source.html
index f09f53e..eb28a90 100644
--- a/content/api/latest/c++/master_2validation_8hpp_source.html
+++ b/content/api/latest/c++/master_2validation_8hpp_source.html
@@ -52,10 +52,11 @@
 validation.hpp  
 
 
-Go to the documentation of this 
file.1 // Licensed to the 
Apache Software Foundation (ASF) under one2 // or more contributor license agreements.  See the NOTICE 
file   
 3 // distributed with this work for 
additional information4 // regarding copyright 
ownership.  The ASF licenses this file5 // to you under the Apache License, Version 2.0 
(the6 // 
"License"); you may not use this file except in 
compliance7 // with the License.  
You may obtain a copy of the License at8 //9 // 
http://www.apache.org/licenses/LICENSE-2.0   10 //   11 // Unless required by 
applicable law or agreed to in writing, software   12 /
 / distributed under the License is distributed on an "AS IS" 
BASIS, 
  13 // WITHOUT WARRANTIES OR CONDITIONS OF 
ANY KIND, either express or implied.   14 // See the License for the specific language governing 
permissions and   15 // limitations under the 
License.   16    17 #ifndef __MASTER_VALIDATION_HPP__   18 #define __MASTER_VALIDATION_HPP__   
19    20 #include 
   21    22 #include 
   23    24 #include    25 #include    26    27 #include    
28    29 #include    
30    31 #include    32 
 ;   
33 #include    34 #include    
35    36 #include "common/protobuf_utils.hpp"   
37    38 namespace mesos {<
 span class="lineno">   39 namespace 
internal {   40 namespace master {   
41    42 class 
Master;   43    44 struct Framework;   45 struct Slave;   46    
47 namespace validation 
{   
48    
49 namespace master {
   50 namespace call {   
51    52 // Validates that a 
 master:Call is well-formed.   53 // TODO(bmahler): Add unit tests.   54 Option validate(   55 
const mesos::master::Call&
 call,   
56 const Option&
 principal = None());   57    58 } 
// namespace call {   59 
   60 namespace message 
{   
61    62 // Validation helpers 
for internal Mesos protocol messages. This is a   63 // best-effort validation, intended to prevent t
 rivial attacks on the   64 // protocol in 
deployments where the network between master and agents   65 // is not secured. The longer term remedy for this is to make 
security   66 // guarantees at the 
libprocess level that would prevent arbitrary UPID   67 // impersonation (MESOS-7424).   68    69 Option registerSlave(const RegisterSlaveMessage& message);   70 Option reregisterSlave(const ReregisterSlaveMessage& message);   
71    72 } // namespace message 
{   
73 } // namespace master {   74    
75    
76 namespace framework {
   77 namespace internal {   78    79 // Validates the roles in given FrameworkInfo. Role, roles 
and   
80 // MULTI_ROLE should be set acc
 ording to following matrix. Also,   81 // roles should not contain duplicate entries.   82 //   83 // -- MULTI_ROLE is NOT 
set -- 
  84 // 
+---+---+-+   85 // |   |Roles  |No Roles |   86 // +---+---+-+   87 // |R
 ole   | Error |  None   |   88 // +---+---+-+   89 // |No Role| Error |  None   |   90 // +---+---+-+   91 //   92 //  MULTI_ROLE is 
set    93 // 
+---+---+-+   94 // |   |Roles  |No Roles 
 |   
95 // 
+---+---+-+   96 // |Role   | Error |  Error  |   97 // +---+---+-+   98 // |No Role| None  |  None   |   99 // +---+---+-+  100 Option validateRoles(const 
mesos::FrameworkInfo& frameworkInfo);  101   102 } 
// namespace internal {  103   104 // Validate a FrameworkInfo.  105 //  106 // TODO(jay_guo): This 
currently only validates  107 // the role(s), validate more fields!  108 Option validate(const mesos::FrameworkInfo& 
frameworkInfo);  109   110 } // namespace framework {  111   
112   
113 namespace scheduler 
{
  114 namespace call {  
115   116 // Validates that a 
scheduler::Call is well-formed.  117 // TODO(bmahler): Add unit tests.  118 Option validate(  119 
const mesos::scheduler::Call&
 call,  
120 const Option&
 principal = None());  
121   122 } // namespace call 
{  
123 } // namespace scheduler 
{  
124   125   
126 namespace resource {  
127   128 // Functions in this 
namespace are only exposed for testing.
  129 namespac

mesos git commit: Added MESOS-6575 to the 1.6.0 CHANGELOG.

2018-05-03 Thread jpeach
Repository: mesos
Updated Branches:
  refs/heads/master 0dcf5c7f0 -> c12430c8b


Added MESOS-6575 to the 1.6.0 CHANGELOG.


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/c12430c8
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/c12430c8
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/c12430c8

Branch: refs/heads/master
Commit: c12430c8b9b7ce6443f19547003b3ef297ee9152
Parents: 0dcf5c7
Author: James Peach 
Authored: Thu May 3 10:53:27 2018 -0700
Committer: James Peach 
Committed: Thu May 3 10:55:02 2018 -0700

--
 CHANGELOG | 4 
 1 file changed, 4 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/mesos/blob/c12430c8/CHANGELOG
--
diff --git a/CHANGELOG b/CHANGELOG
index 0d25a48..befaab1 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -2,6 +2,10 @@ Release Notes - Mesos - Version 1.6.0 (WIP)
 ---
 This release contains the following new features:
 
+  * [MESOS-6575] - Added a new `--xfs_kill_containers` flag to the
+Mesos agent. This causes the `disk/xfs` isolator to terminate
+containers that exceed their disk quota.
+
   * [MESOS-8534] - **Experimental** A nested container is now allowed
 to join a separate CNI network than its parent container.
 



mesos-site git commit: Updated the website built from mesos SHA: c12430c.

2018-05-03 Thread git-site-role
Repository: mesos-site
Updated Branches:
  refs/heads/asf-site 2da671651 -> 9d780b084


Updated the website built from mesos SHA: c12430c.


Project: http://git-wip-us.apache.org/repos/asf/mesos-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos-site/commit/9d780b08
Tree: http://git-wip-us.apache.org/repos/asf/mesos-site/tree/9d780b08
Diff: http://git-wip-us.apache.org/repos/asf/mesos-site/diff/9d780b08

Branch: refs/heads/asf-site
Commit: 9d780b08452e15e733ae84c3f6bff1f37f2ad581
Parents: 2da6716
Author: jenkins 
Authored: Thu May 3 18:18:22 2018 +
Committer: jenkins 
Committed: Thu May 3 18:18:22 2018 +

--
 content/blog/feed.xml | 2 +-
 content/blog/performance-working-group-progress-report/index.html | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/mesos-site/blob/9d780b08/content/blog/feed.xml
--
diff --git a/content/blog/feed.xml b/content/blog/feed.xml
index ced0ba1..d28c088 100644
--- a/content/blog/feed.xml
+++ b/content/blog/feed.xml
@@ -292,7 +292,7 @@ To learn more about CSI work in Mesos, you can dig into the 
design document <
 
 
 
-

If you are a user and would like to suggest some areas for performance improvement, please let us know by emailing dev@apache.mesos.org.

+

If you are a user and would like to suggest some areas for performance improvement, please let us know by emailing dev@apache.mesos.org.

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/9d780b08/content/blog/performance-working-group-progress-report/index.html -- diff --git a/content/blog/performance-working-group-progress-report/index.html b/content/blog/performance-working-group-progress-report/index.html index 2054ef8..4186922 100644 --- a/content/blog/performance-working-group-progress-report/index.html +++ b/content/blog/performance-working-group-progress-report/index.html @@ -238,7 +238,7 @@ -If you are a user and would like to suggest some areas for performance improvement, please let us know by emailing dev@apache.mesos.org. +If you are a user and would like to suggest some areas for performance improvement, please let us know by emailing dev@apache.mesos.org.

[2/3] mesos git commit: Fixed typos in `upgrades.md`.

2018-05-03 Thread chhsiao
Fixed typos in `upgrades.md`.

Review: https://reviews.apache.org/r/66894/


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/25d7880c
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/25d7880c
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/25d7880c

Branch: refs/heads/master
Commit: 25d7880ce5910f3677e1dc74ea6f56797d9dc7f3
Parents: f277372
Author: Chun-Hung Hsiao 
Authored: Thu May 3 14:30:13 2018 -0700
Committer: Chun-Hung Hsiao 
Committed: Thu May 3 14:30:13 2018 -0700

--
 docs/upgrades.md | 10 +-
 1 file changed, 5 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/mesos/blob/25d7880c/docs/upgrades.md
--
diff --git a/docs/upgrades.md b/docs/upgrades.md
index 395892e..ba08d97 100644
--- a/docs/upgrades.md
+++ b/docs/upgrades.md
@@ -424,7 +424,7 @@ We categorize the changes as follows:
 
 * A new [`network/ports`](isolators/network-ports.md) isolator has been added. 
The isolator supports the following new agent flags:
   * `--container_ports_watch_interval` specifies the interval at which the 
isolator reconciles port assignments.
-  * `--check_agent_port_range_only` excludes ports outside the agent's range 
from port reconcilation.
+  * `--check_agent_port_range_only` excludes ports outside the agent's range 
from port reconciliation.
 
 
 
@@ -462,7 +462,7 @@ We categorize the changes as follows:
 
 
 
-* Explicitly setting the bounding capabilities of a task independently of the 
effective capabilities is now supported. Frameworks can specifiy the task 
bounding capabilities by using the `LinuxInfo.bounding_capabilities` message. 
Operators can specify the default bounding capabilities using the agent 
`--bounding_capabilities` flag. This flag also specifies the maximum bounding 
set that a framework is allowed to specify.
+* Explicitly setting the bounding capabilities of a task independently of the 
effective capabilities is now supported. Frameworks can specify the task 
bounding capabilities by using the `LinuxInfo.bounding_capabilities` message. 
Operators can specify the default bounding capabilities using the agent 
`--bounding_capabilities` flag. This flag also specifies the maximum bounding 
set that a framework is allowed to specify.
 
 
 
@@ -607,7 +607,7 @@ In order to upgrade a running cluster:
 
 
 
-* Mesos 1.1 adds an `offeredResources` argument to the 
`Allocator::updateAllocation()` method. It is used to indicate the resources 
that the operations passed to `updateAllocation()` are applied to. 
[MESOS-4431](https://issues.apache.org/jira/browse/MESOS-4431) (paticularly 
[/r/45961/](https://reviews.apache.org/r/45961/)) has more details on the 
motivation.
+* Mesos 1.1 adds an `offeredResources` argument to the 
`Allocator::updateAllocation()` method. It is used to indicate the resources 
that the operations passed to `updateAllocation()` are applied to. 
[MESOS-4431](https://issues.apache.org/jira/browse/MESOS-4431) (particularly 
[/r/45961/](https://reviews.apache.org/r/45961/)) has more details on the 
motivation.
 
 ## Upgrading from 0.28.x to 1.0.x ##
 
@@ -695,7 +695,7 @@ In order to upgrade a running cluster:
 
 
 * The `SetQuota` and `RemoveQuota` ACLs have been deprecated. To replace 
these, a new ACL `UpdateQuota` have been introduced. In addition, a new ACL 
`GetQuota` have been added; these control which principals are allowed to query 
quota information for which roles. These changes affect the `--acls` flag for 
the local authorizer in the following ways:
-  * The `update_quotas` ACL cannot be used in combination with either the 
`set_quotas` or `remove_quotas` ACL. The local authorizor will produce an error 
in such a case;
+  * The `update_quotas` ACL cannot be used in combination with either the 
`set_quotas` or `remove_quotas` ACL. The local authorizer will produce an error 
in such a case;
   * When upgrading a Mesos cluster that uses the `set_quotas` or 
`remove_quotas` ACLs, the operator should first upgrade the Mesos binaries. At 
this point, the deprecated ACLs will still be enforced. After the upgrade has 
been verified, the operator should replace deprecated values for `set_quotas` 
and `remove_quotas` with equivalent values for `update_quotas`;
   * If desired, the operator can use the `get_quotas` ACL after the upgrade to 
control which principals are allowed to query quota information.
 
@@ -716,7 +716,7 @@ In order to upgrade a running cluster:
 
 
 
-* The `--authenticate_http` flag has been deprecated in favor of 
`--authenticate_http_readwrite`. Setting `--authenticate_http_readwrite` will 
now enable authentication for all endpoints which previously had authentication 
support. These happen to be the endpoints which allow modifiication 

[1/3] mesos git commit: Documented the changes in gRPC and CSI supports.

2018-05-03 Thread chhsiao
Repository: mesos
Updated Branches:
  refs/heads/master c12430c8b -> 2402f99ca


Documented the changes in gRPC and CSI supports.

Review: https://reviews.apache.org/r/66893/


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/f277372a
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/f277372a
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/f277372a

Branch: refs/heads/master
Commit: f277372a73934205945645e85bb9d76ea50c10d1
Parents: c12430c
Author: Chun-Hung Hsiao 
Authored: Thu May 3 14:30:12 2018 -0700
Committer: Chun-Hung Hsiao 
Committed: Thu May 3 14:30:12 2018 -0700

--
 docs/upgrades.md | 42 ++
 1 file changed, 42 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/mesos/blob/f277372a/docs/upgrades.md
--
diff --git a/docs/upgrades.md b/docs/upgrades.md
index 2de8900..395892e 100644
--- a/docs/upgrades.md
+++ b/docs/upgrades.md
@@ -43,6 +43,38 @@ We categorize the changes as follows:
   
 
   
+  1.6.x
+  
+
+  
+
+  C Requirement for gRPC 
library
+  C CSI v0.2 Support
+
+  
+
+  
+
+
+  
+
+  
+
+
+  
+
+  
+
+
+  
+
+  
+
+
+  
+
+
+  
   1.5.x
   
 
@@ -360,6 +392,16 @@ We categorize the changes as follows:
 
 
 
+## Upgrading from 1.5.x to 1.6.x ##
+
+
+
+* gRPC version 1.10+ is required to build Mesos when enabling gRPC-related 
features. Please upgrade your gRPC library if you are using an unbundled one.
+
+
+
+* CSI v0.2 is now supported as experimental. Due to the incompatibility 
between CSI v0.1 and v0.2, the experimental support for CSI v0.1 is deprecated, 
and the operator must remove all storage local resource providers within an 
agent before upgrading the agent. NOTE: This is a **breaking change** for 
storage local resource providers.
+
 ## Upgrading from 1.4.x to 1.5.x ##
 
 



[3/3] mesos git commit: Updated `csi.md`.

2018-05-03 Thread chhsiao
Updated `csi.md`.

Review: https://reviews.apache.org/r/66896/


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/2402f99c
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/2402f99c
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/2402f99c

Branch: refs/heads/master
Commit: 2402f99ca9bdbb610f5ef4f444b25ac9e61cc269
Parents: 25d7880
Author: Chun-Hung Hsiao 
Authored: Thu May 3 14:30:14 2018 -0700
Committer: Chun-Hung Hsiao 
Committed: Thu May 3 14:30:14 2018 -0700

--
 docs/csi.md | 6 --
 1 file changed, 4 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/mesos/blob/2402f99c/docs/csi.md
--
diff --git a/docs/csi.md b/docs/csi.md
index 77a5edb..9d06da0 100644
--- a/docs/csi.md
+++ b/docs/csi.md
@@ -8,7 +8,9 @@ layout: documentation
 This document describes the [Container Storage 
Interface](https://github.com/container-storage-interface/spec)
 (CSI) support in Mesos.
 
-Currently, only CSI spec version 0.1 is supported.
+Currently, only CSI spec version 0.2 is supported in Mesos 1.6 due to
+incompatible changes between CSI version 0.1 and version 0.2. CSI version 0.1 
is
+supported in Mesos 1.5.
 
 ## Motivation
 
@@ -177,7 +179,7 @@ message Resource {
   from a CSI plugin. This field must not be set by frameworks.
 * `metadata`: This maps to CSI [Volume 
Attributes](https://github.com/container-storage-interface/spec/blob/v0.1.0/spec.md#createvolume)
   if the disk resource is backed by a 
[Volume](https://github.com/container-storage-interface/spec/blob/v0.1.0/spec.md#terminology)
-  from a CSI plugin. This field must not be set by framweworks.
+  from a CSI plugin. This field must not be set by frameworks.
 
 ### Storage Pool
 



mesos-site git commit: Updated the website built from mesos SHA: 2402f99.

2018-05-03 Thread git-site-role
Repository: mesos-site
Updated Branches:
  refs/heads/asf-site 9d780b084 -> 131ab2d2b


Updated the website built from mesos SHA: 2402f99.


Project: http://git-wip-us.apache.org/repos/asf/mesos-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos-site/commit/131ab2d2
Tree: http://git-wip-us.apache.org/repos/asf/mesos-site/tree/131ab2d2
Diff: http://git-wip-us.apache.org/repos/asf/mesos-site/diff/131ab2d2

Branch: refs/heads/asf-site
Commit: 131ab2d2b0fae3e7907956a85bf899b26161ba03
Parents: 9d780b0
Author: jenkins 
Authored: Thu May 3 21:53:18 2018 +
Committer: jenkins 
Committed: Thu May 3 21:53:18 2018 +

--
 content/blog/feed.xml   |  2 +-
 .../index.html  |  2 +-
 content/documentation/csi/index.html|  6 +-
 content/documentation/latest/csi/index.html |  6 +-
 .../documentation/latest/upgrades/index.html| 58 ++--
 content/documentation/upgrades/index.html   | 58 ++--
 6 files changed, 116 insertions(+), 16 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/mesos-site/blob/131ab2d2/content/blog/feed.xml
--
diff --git a/content/blog/feed.xml b/content/blog/feed.xml
index d28c088..26295fc 100644
--- a/content/blog/feed.xml
+++ b/content/blog/feed.xml
@@ -292,7 +292,7 @@ To learn more about CSI work in Mesos, you can dig into the 
design document <
 
 
 
-

If you are a user and would like to suggest some areas for performance improvement, please let us know by emailing dev@apache.mesos.org.

+

If you are a user and would like to suggest some areas for performance improvement, please let us know by emailing dev@apache.mesos.org.

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/131ab2d2/content/blog/performance-working-group-progress-report/index.html -- diff --git a/content/blog/performance-working-group-progress-report/index.html b/content/blog/performance-working-group-progress-report/index.html index 4186922..588eb7b 100644 --- a/content/blog/performance-working-group-progress-report/index.html +++ b/content/blog/performance-working-group-progress-report/index.html @@ -238,7 +238,7 @@ -If you are a user and would like to suggest some areas for performance improvement, please let us know by emailing dev@apache.mesos.org. +If you are a user and would like to suggest some areas for performance improvement, please let us know by emailing dev@apache.mesos.org. http://git-wip-us.apache.org/repos/asf/mesos-site/blob/131ab2d2/content/documentation/csi/index.html -- diff --git a/content/documentation/csi/index.html b/content/documentation/csi/index.html index 6e9b297..7fdffea 100644 --- a/content/documentation/csi/index.html +++ b/content/documentation/csi/index.html @@ -112,7 +112,9 @@ This document describes the https://github.com/container-storage-interface/spec";>Container Storage Interface (CSI) support in Mesos. -Currently, only CSI spec version 0.1 is supported. +Currently, only CSI spec version 0.2 is supported in Mesos 1.6 due to +incompatible changes between CSI version 0.1 and version 0.2. CSI version 0.1 is +supported in Mesos 1.5. Motivation @@ -283,7 +285,7 @@ if the disk resource is backed by a https://github.com/container-storag from a CSI plugin. This field must not be set by frameworks. metadata: This maps to CSI https://github.com/container-storage-interface/spec/blob/v0.1.0/spec.md#createvolume";>Volume Attributes if the disk resource is backed by a https://github.com/container-storage-interface/spec/blob/v0.1.0/spec.md#terminology";>Volume -from a CSI plugin. This field must not be set by framweworks. +from a CSI plugin. This field must not be set by frameworks. http://git-wip-us.apache.org/repos/asf/mesos-site/blob/131ab2d2/content/documentation/latest/csi/index.html -- diff --git a/content/documentation/latest/csi/index.html b/content/documentation/latest/csi/index.html index a7d42cc..fae7eeb 100644 --- a/content/documentation/latest/csi/inde

[01/13] mesos git commit: Ensured that agent does not delete volume upon grow or shrink.

2018-05-03 Thread chhsiao
Repository: mesos
Updated Branches:
  refs/heads/master 2402f99ca -> a483fb0d0


Ensured that agent does not delete volume upon grow or shrink.

Previously, `slave::syncCheckpointedResources` implementation will
delete a persistent volume using `Resources::contains` check, which
could cause a resized volume being deleted. The function was rewritten
to compare `set_difference` between old and new paths for all persistent
volumes and perform creation/deletion accordingly.

Review: https://reviews.apache.org/r/66218/


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/57e705a4
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/57e705a4
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/57e705a4

Branch: refs/heads/master
Commit: 57e705a475ad03bfbef2605b3573a601239e6242
Parents: 2402f99
Author: Zhitao Li 
Authored: Thu May 3 17:04:07 2018 -0700
Committer: Chun-Hung Hsiao 
Committed: Thu May 3 17:04:07 2018 -0700

--
 src/slave/slave.cpp | 46 +-
 1 file changed, 29 insertions(+), 17 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/mesos/blob/57e705a4/src/slave/slave.cpp
--
diff --git a/src/slave/slave.cpp b/src/slave/slave.cpp
index 6ca3d79..69280d9 100644
--- a/src/slave/slave.cpp
+++ b/src/slave/slave.cpp
@@ -4231,8 +4231,31 @@ void Slave::checkpointResourcesMessage(
 Try Slave::syncCheckpointedResources(
 const Resources& newCheckpointedResources)
 {
-  Resources oldVolumes = checkpointedResources.persistentVolumes();
-  Resources newVolumes = newCheckpointedResources.persistentVolumes();
+  auto toPathMap = [](const string& workDir, const Resources& resources) {
+hashmap pathMap;
+const Resources& persistentVolumes = resources.persistentVolumes();
+
+foreach (const Resource& volume, persistentVolumes) {
+  // This is validated in master.
+  CHECK(Resources::isReserved(volume));
+  string path = paths::getPersistentVolumePath(workDir, volume);
+  pathMap[path] = volume;
+}
+
+return pathMap;
+  };
+
+  const hashmap oldPathMap =
+toPathMap(flags.work_dir, checkpointedResources);
+
+  const hashmap newPathMap =
+toPathMap(flags.work_dir, newCheckpointedResources);
+
+  const hashset oldPaths = oldPathMap.keys();
+  const hashset newPaths = newPathMap.keys();
+
+  const hashset createPaths = newPaths - oldPaths;
+  const hashset deletePaths = oldPaths - newPaths;
 
   // Create persistent volumes that do not already exist.
   //
@@ -4240,15 +4263,8 @@ Try Slave::syncCheckpointedResources(
   // to support multiple disks, or raw disks. Depending on the
   // DiskInfo, we may want to create either directories under a root
   // directory, or LVM volumes from a given device.
-  foreach (const Resource& volume, newVolumes) {
-// This is validated in master.
-CHECK(Resources::isReserved(volume));
-
-if (oldVolumes.contains(volume)) {
-  continue;
-}
-
-string path = paths::getPersistentVolumePath(flags.work_dir, volume);
+  foreach (const string& path, createPaths) {
+const Resource& volume = newPathMap.at(path);
 
 // If creation of persistent volume fails, the agent exits.
 string volumeDescription = "persistent volume " +
@@ -4278,12 +4294,8 @@ Try Slave::syncCheckpointedResources(
   // remove the filesystem objects for the removed volume. Note that
   // for MOUNT disks, we don't remove the root directory (mount point)
   // of the volume.
-  foreach (const Resource& volume, oldVolumes) {
-if (newVolumes.contains(volume)) {
-  continue;
-}
-
-string path = paths::getPersistentVolumePath(flags.work_dir, volume);
+  foreach (const string& path, deletePaths) {
+const Resource& volume = oldPathMap.at(path);
 
 LOG(INFO) << "Deleting persistent volume '"
   << volume.disk().persistence().id()



[13/13] mesos git commit: Improved tests for resizing persistent volumes.

2018-05-03 Thread chhsiao
Improved tests for resizing persistent volumes.

Now the `GrowVolume` and `ShrinkVolume` tests launch tasks after
resizing the volumes to ensure that the operations take effect on
agents. The `NonSpeculativeGrowAndLaunch` and
`NonSpeculativeShrinkAndLaunch` tests launch an additional task to
verify that the original volume consumed by the operations cannot be
used by subsequent tasks.

This patch also adjusted when the clock is resumed so schedulers will
not receive unexpected offers.

Review: https://reviews.apache.org/r/66920/


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/a483fb0d
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/a483fb0d
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/a483fb0d

Branch: refs/heads/master
Commit: a483fb0d0aa07ce061faa17336c453fa8d61c89c
Parents: f8d28f4
Author: Chun-Hung Hsiao 
Authored: Thu May 3 17:05:13 2018 -0700
Committer: Chun-Hung Hsiao 
Committed: Thu May 3 17:05:13 2018 -0700

--
 src/tests/persistent_volume_tests.cpp | 213 ++---
 1 file changed, 166 insertions(+), 47 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/mesos/blob/a483fb0d/src/tests/persistent_volume_tests.cpp
--
diff --git a/src/tests/persistent_volume_tests.cpp 
b/src/tests/persistent_volume_tests.cpp
index 477e6e2..43f31b2 100644
--- a/src/tests/persistent_volume_tests.cpp
+++ b/src/tests/persistent_volume_tests.cpp
@@ -37,6 +37,8 @@
 
 #include 
 
+#include "common/resources_utils.hpp"
+
 #ifdef __linux__
 #include "linux/fs.hpp"
 #endif // __linux__
@@ -448,8 +450,8 @@ TEST_P(PersistentVolumeTest, 
CreateAndDestroyPersistentVolumes)
 }
 
 
-// This test verifies that a framework can grow a persistent volume and receive
-// the grown volume in further offers.
+// This test verifies that a framework can grow a persistent volume and use the
+// grown volume afterward.
 TEST_P(PersistentVolumeTest, GrowVolume)
 {
   if (GetParam() == MOUNT) {
@@ -463,8 +465,9 @@ TEST_P(PersistentVolumeTest, GrowVolume)
 
   Clock::pause();
 
+  // Register a framework with role "default-role/foo" for dynamic 
reservations.
   FrameworkInfo frameworkInfo = DEFAULT_FRAMEWORK_INFO;
-  frameworkInfo.set_roles(0, DEFAULT_TEST_ROLE);
+  frameworkInfo.set_roles(0, strings::join("/", DEFAULT_TEST_ROLE, "foo"));
 
   // Create a master.
   master::Flags masterFlags = CreateMasterFlags();
@@ -503,6 +506,16 @@ TEST_P(PersistentVolumeTest, GrowVolume)
 
   Bytes additionBytes = Megabytes(512);
 
+  // Construct a dynamic reservation for all disk resources.
+  // NOTE: We dynamically reserve all disk resources so they become 
checkpointed
+  // resources and thus will be verified on the agent when launching a task.
+  Resource::ReservationInfo dynamicReservation = createDynamicReservationInfo(
+  frameworkInfo.roles(0),
+  frameworkInfo.principal());
+
+  Resource dynamicallyReserved = getDiskResource(totalBytes, 1);
+  dynamicallyReserved.add_reservations()->CopyFrom(dynamicReservation);
+
   // Construct a persistent volume which does not use up all disk resources.
   Resource volume = createPersistentVolume(
   getDiskResource(totalBytes - additionBytes, 1),
@@ -510,8 +523,12 @@ TEST_P(PersistentVolumeTest, GrowVolume)
   "path1",
   None(),
   frameworkInfo.principal());
+  volume.add_reservations()->CopyFrom(dynamicReservation);
+  ASSERT_TRUE(needCheckpointing(volume));
 
   Resource addition = getDiskResource(additionBytes, 1);
+  addition.add_reservations()->CopyFrom(dynamicReservation);
+  ASSERT_TRUE(needCheckpointing(addition));
 
   Resource grownVolume = createPersistentVolume(
   getDiskResource(totalBytes, 1),
@@ -519,6 +536,8 @@ TEST_P(PersistentVolumeTest, GrowVolume)
   "path1",
   None(),
   frameworkInfo.principal());
+  grownVolume.add_reservations()->CopyFrom(dynamicReservation);
+  ASSERT_TRUE(needCheckpointing(grownVolume));
 
   Future> offersBeforeGrow;
 
@@ -533,7 +552,7 @@ TEST_P(PersistentVolumeTest, GrowVolume)
   // Create the persistent volume.
   driver.acceptOffers(
   {offer.id()},
-  {CREATE(volume)},
+  {RESERVE(dynamicallyReserved), CREATE(volume)},
   filters);
 
   Clock::settle();
@@ -577,9 +596,6 @@ TEST_P(PersistentVolumeTest, GrowVolume)
   AWAIT_READY(offersAfterGrow);
   ASSERT_FALSE(offersAfterGrow->empty());
 
-  EXPECT_TRUE(os::exists(volumePath));
-  EXPECT_SOME_EQ("abc", os::read(filePath));
-
   offer = offersAfterGrow->at(0);
 
   EXPECT_EQ(
@@ -590,21 +606,52 @@ TEST_P(PersistentVolumeTest, GrowVolume)
   Resources(offer.resources()).contains(
   allocatedResources(addition, frameworkInfo.roles(0;
 
-  Clock::resume();
+  Future taskStarting;
+  Future taskRunning;
+  Future taskFinished;
+

[03/13] mesos git commit: Added a new `RESIZE_VOLUME` agent capability.

2018-05-03 Thread chhsiao
Added a new `RESIZE_VOLUME` agent capability.

This will be used as a feature flag to gate the new volume resize
feature. This feature will be turn on by default once released.

Review: https://reviews.apache.org/r/66733/


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/9f2b4977
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/9f2b4977
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/9f2b4977

Branch: refs/heads/master
Commit: 9f2b4977c1fd6b1d0ab5cc5674fe825a46ae7961
Parents: 7d88e06
Author: Zhitao Li 
Authored: Thu May 3 17:04:21 2018 -0700
Committer: Chun-Hung Hsiao 
Committed: Thu May 3 17:04:21 2018 -0700

--
 include/mesos/mesos.proto |  4 
 include/mesos/v1/mesos.proto  |  4 
 src/common/protobuf_utils.cpp |  3 ++-
 src/common/protobuf_utils.hpp |  7 +++
 src/slave/constants.cpp   |  3 ++-
 src/slave/flags.cpp   |  5 +
 src/tests/master_tests.cpp| 15 +++
 src/tests/slave_tests.cpp | 16 +++-
 8 files changed, 46 insertions(+), 11 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/mesos/blob/9f2b4977/include/mesos/mesos.proto
--
diff --git a/include/mesos/mesos.proto b/include/mesos/mesos.proto
index 9930bea..463e6ad 100644
--- a/include/mesos/mesos.proto
+++ b/include/mesos/mesos.proto
@@ -993,6 +993,10 @@ message SlaveInfo {
   //
   // (2) The ability to provide operation feedback.
   RESOURCE_PROVIDER = 4;
+
+  // This expresses the capability for the agent to handle persistent 
volume
+  // resize operations safely. This capability is turned on by default.
+  RESIZE_VOLUME = 5;
 }
 
 // Enum fields should be optional, see: MESOS-4997.

http://git-wip-us.apache.org/repos/asf/mesos/blob/9f2b4977/include/mesos/v1/mesos.proto
--
diff --git a/include/mesos/v1/mesos.proto b/include/mesos/v1/mesos.proto
index 4101243..8eaad9c 100644
--- a/include/mesos/v1/mesos.proto
+++ b/include/mesos/v1/mesos.proto
@@ -985,6 +985,10 @@ message AgentInfo {
   //
   // (2) The ability to provide operation feedback.
   RESOURCE_PROVIDER = 4;
+
+  // This expresses the capability for the agent to handle persistent 
volume
+  // resize operations safely. This capability is turned on by default.
+  RESIZE_VOLUME = 5;
 }
 
 // Enum fields should be optional, see: MESOS-4997.

http://git-wip-us.apache.org/repos/asf/mesos/blob/9f2b4977/src/common/protobuf_utils.cpp
--
diff --git a/src/common/protobuf_utils.cpp b/src/common/protobuf_utils.cpp
index 2e675c4..c5d873c 100644
--- a/src/common/protobuf_utils.cpp
+++ b/src/common/protobuf_utils.cpp
@@ -1061,7 +1061,8 @@ bool operator==(const Capabilities& left, const 
Capabilities& right)
   return left.multiRole == right.multiRole &&
  left.hierarchicalRole == right.hierarchicalRole &&
  left.reservationRefinement == right.reservationRefinement &&
- left.resourceProvider == right.resourceProvider;
+ left.resourceProvider == right.resourceProvider &&
+ left.resizeVolume == right.resizeVolume;
 }
 
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/9f2b4977/src/common/protobuf_utils.hpp
--
diff --git a/src/common/protobuf_utils.hpp b/src/common/protobuf_utils.hpp
index ae060f3..1662125 100644
--- a/src/common/protobuf_utils.hpp
+++ b/src/common/protobuf_utils.hpp
@@ -281,6 +281,9 @@ struct Capabilities
 case SlaveInfo::Capability::RESOURCE_PROVIDER:
   resourceProvider = true;
   break;
+case SlaveInfo::Capability::RESIZE_VOLUME:
+  resizeVolume = true;
+  break;
 // If adding another case here be sure to update the
 // equality operator.
   }
@@ -292,6 +295,7 @@ struct Capabilities
   bool hierarchicalRole = false;
   bool reservationRefinement = false;
   bool resourceProvider = false;
+  bool resizeVolume = false;
 
   google::protobuf::RepeatedPtrField
   toRepeatedPtrField() const
@@ -309,6 +313,9 @@ struct Capabilities
 if (resourceProvider) {
   result.Add()->set_type(SlaveInfo::Capability::RESOURCE_PROVIDER);
 }
+if (resizeVolume) {
+  result.Add()->set_type(SlaveInfo::Capability::RESIZE_VOLUME);
+}
 
 return result;
   }

http://git-wip-us.apache.org/repos/asf/mesos/blob/9f2b4977/src/slave/constants.cpp
--
diff --git a/src/slave/constants.cpp b/src/slave/constants.cpp
index 51de71b..103384c 100644
--- a/src/slave/constants.cpp
+++ b/src/slave/constants.cpp
@

[11/13] mesos git commit: Implemented operator API to grow and shrink persistent volume.

2018-05-03 Thread chhsiao
Implemented operator API to grow and shrink persistent volume.

These operator APIs is implemented as speculative for now, but
we plan to convert them to non-speculative in the future.

Review: https://reviews.apache.org/r/66051/


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/e2d3112f
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/e2d3112f
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/e2d3112f

Branch: refs/heads/master
Commit: e2d3112f3aaa19f33319db2dad16b2076a2df046
Parents: d418f15
Author: Zhitao Li 
Authored: Thu May 3 17:05:02 2018 -0700
Committer: Chun-Hung Hsiao 
Committed: Thu May 3 17:05:02 2018 -0700

--
 src/master/http.cpp   | 140 +
 src/master/master.hpp |  10 +++
 src/master/validation.cpp |  26 
 3 files changed, 176 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/mesos/blob/e2d3112f/src/master/http.cpp
--
diff --git a/src/master/http.cpp b/src/master/http.cpp
index 135ae43..77cf47a 100644
--- a/src/master/http.cpp
+++ b/src/master/http.cpp
@@ -773,6 +773,12 @@ Future Master::Http::api(
 case mesos::master::Call::DESTROY_VOLUMES:
   return destroyVolumes(call, principal, acceptType);
 
+case mesos::master::Call::GROW_VOLUME:
+  return growVolume(call, principal, acceptType);
+
+case mesos::master::Call::SHRINK_VOLUME:
+  return shrinkVolume(call, principal, acceptType);
+
 case mesos::master::Call::GET_MAINTENANCE_STATUS:
   return getMaintenanceStatus(call, principal, acceptType);
 
@@ -1490,6 +1496,140 @@ Future Master::Http::destroyVolumes(
 }
 
 
+Future Master::Http::growVolume(
+const mesos::master::Call& call,
+const Option& principal,
+ContentType /*contentType*/) const
+{
+  // TODO(greggomann): Remove this check once the `Principal` type is used in
+  // `ReservationInfo`, `DiskInfo`, and within the master's `principals` map.
+  // See MESOS-7202.
+  if (principal.isSome() && principal->value.isNone()) {
+return Forbidden(
+"The request's authenticated principal contains claims, but no value "
+"string. The master currently requires that principals have a value");
+  }
+
+  CHECK_EQ(mesos::master::Call::GROW_VOLUME, call.type());
+  CHECK(call.has_grow_volume());
+
+  // Only agent default resources are supported right now.
+  CHECK(call.grow_volume().has_slave_id());
+
+  const SlaveID& slaveId = call.grow_volume().slave_id();
+
+  Slave* slave = master->slaves.registered.get(slaveId);
+  if (slave == nullptr) {
+return BadRequest("No agent found with specified ID");
+  }
+
+  // Create an operation.
+  Offer::Operation operation;
+  operation.set_type(Offer::Operation::GROW_VOLUME);
+
+  operation.mutable_grow_volume()->mutable_volume()->CopyFrom(
+  call.grow_volume().volume());
+
+  operation.mutable_grow_volume()->mutable_addition()->CopyFrom(
+  call.grow_volume().addition());
+
+  Option error = validateAndUpgradeResources(&operation);
+  if (error.isSome()) {
+return BadRequest(error->message);
+  }
+
+  error = validation::operation::validate(
+  operation.grow_volume(), slave->capabilities);
+
+  if (error.isSome()) {
+return BadRequest(
+"Invalid GROW_VOLUME operation on agent " +
+stringify(*slave) + ": " + error->message);
+  }
+
+  return master->authorizeResizeVolume(
+  operation.grow_volume().volume(), principal)
+.then(defer(master->self(), [=](bool authorized) -> Future {
+  if (!authorized) {
+return Forbidden();
+  }
+
+  // The `volume` and `addition` fields contain the resources required for
+  // this operation.
+  return _operation(
+  slaveId,
+  Resources(operation.grow_volume().volume()) +
+Resources(operation.grow_volume().addition()),
+  operation);
+}));
+}
+
+
+Future Master::Http::shrinkVolume(
+const mesos::master::Call& call,
+const Option& principal,
+ContentType /*contentType*/) const
+{
+  // TODO(greggomann): Remove this check once the `Principal` type is used in
+  // `ReservationInfo`, `DiskInfo`, and within the master's `principals` map.
+  // See MESOS-7202.
+  if (principal.isSome() && principal->value.isNone()) {
+return Forbidden(
+"The request's authenticated principal contains claims, but no value "
+"string. The master currently requires that principals have a value");
+  }
+
+  CHECK_EQ(mesos::master::Call::SHRINK_VOLUME, call.type());
+  CHECK(call.has_shrink_volume());
+
+  // Only persistent volumes are supported right now.
+  CHECK(call.shrink_volume().has_slave_id());
+
+  const SlaveID& slaveId = call.shrink_volume().slave_id();
+
+  Slave* slave = master->slaves

[09/13] mesos git commit: Added test for authorization actions for `RESIZE_VOLUME`.

2018-05-03 Thread chhsiao
Added test for authorization actions for `RESIZE_VOLUME`.

Review: https://reviews.apache.org/r/66532/


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/360ae2f9
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/360ae2f9
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/360ae2f9

Branch: refs/heads/master
Commit: 360ae2f95ef4850018843e88fd8adc1e847f6ce0
Parents: 9656329
Author: Zhitao Li 
Authored: Thu May 3 17:04:57 2018 -0700
Committer: Chun-Hung Hsiao 
Committed: Thu May 3 17:04:57 2018 -0700

--
 src/tests/authorization_tests.cpp | 294 +++
 src/tests/persistent_volume_tests.cpp | 366 +
 2 files changed, 660 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/mesos/blob/360ae2f9/src/tests/authorization_tests.cpp
--
diff --git a/src/tests/authorization_tests.cpp 
b/src/tests/authorization_tests.cpp
index a76ad18..f6f7769 100644
--- a/src/tests/authorization_tests.cpp
+++ b/src/tests/authorization_tests.cpp
@@ -1977,6 +1977,300 @@ TYPED_TEST(AuthorizationTest, DestroyVolume)
 }
 
 
+// Tests the authorization of ACLs used for resizing volumes.
+TYPED_TEST(AuthorizationTest, ResizeVolume)
+{
+  ACLs acls;
+
+  {
+// Principal "foo" can resize volumes for any role.
+mesos::ACL::ResizeVolume* acl = acls.add_resize_volumes();
+acl->mutable_principals()->add_values("foo");
+acl->mutable_roles()->set_type(mesos::ACL::Entity::ANY);
+  }
+
+  {
+// Principal "bar" can only resize volumes for the "panda" role.
+mesos::ACL::ResizeVolume* acl = acls.add_resize_volumes();
+acl->mutable_principals()->add_values("bar");
+acl->mutable_roles()->add_values("panda");
+  }
+
+  {
+// Principal "baz" cannot resize volumes.
+mesos::ACL::ResizeVolume* acl = acls.add_resize_volumes();
+acl->mutable_principals()->add_values("baz");
+acl->mutable_roles()->set_type(mesos::ACL::Entity::NONE);
+  }
+
+  {
+// Principal "elizabeth-ii" can resize volumes for the "king" role and its
+// nested ones.
+mesos::ACL::ResizeVolume* acl = acls.add_resize_volumes();
+acl->mutable_principals()->add_values("elizabeth-ii");
+acl->mutable_roles()->add_values("king/%");
+acl->mutable_roles()->add_values("king");
+  }
+
+  {
+// Principal "charles" can resize volumes for any role below the "king/"
+// role. Not in "king" itself.
+mesos::ACL::ResizeVolume* acl = acls.add_resize_volumes();
+acl->mutable_principals()->add_values("charles");
+acl->mutable_roles()->add_values("king/%");
+  }
+
+  {
+// Principal "j-welby" can resize volumes only for the "king" role but
+// not in any nested one.
+mesos::ACL::ResizeVolume* acl = acls.add_resize_volumes();
+acl->mutable_principals()->add_values("j-welby");
+acl->mutable_roles()->add_values("king");
+  }
+
+  {
+// No other principals can resize volumes.
+mesos::ACL::ResizeVolume* acl = acls.add_resize_volumes();
+acl->mutable_principals()->set_type(mesos::ACL::Entity::ANY);
+acl->mutable_roles()->set_type(mesos::ACL::Entity::NONE);
+  }
+
+  {
+// No other principals can resize volumes.
+mesos::ACL::ResizeVolume* acl = acls.add_resize_volumes();
+acl->mutable_principals()->set_type(mesos::ACL::Entity::ANY);
+acl->mutable_roles()->set_type(mesos::ACL::Entity::NONE);
+  }
+
+  // Create an `Authorizer` with the ACLs.
+  Try create = TypeParam::create(parameterize(acls));
+  ASSERT_SOME(create);
+  Owned authorizer(create.get());
+
+  // Principal "foo" can create volumes for any role, so this request will 
pass.
+  {
+authorization::Request request;
+request.set_action(authorization::RESIZE_VOLUME);
+request.mutable_subject()->set_value("foo");
+request.mutable_object()->set_value("awesome_role");
+AWAIT_EXPECT_TRUE(authorizer->authorized(request));
+  }
+  {
+authorization::Request request;
+request.set_action(authorization::RESIZE_VOLUME);
+request.mutable_subject()->set_value("foo");
+request.mutable_object()
+  ->mutable_resource()
+  ->mutable_reservations()
+  ->Add()
+  ->set_role("awesome_role");
+AWAIT_EXPECT_TRUE(authorizer->authorized(request));
+  }
+
+  // Principal "bar" can create volumes for the "panda" role,
+  // so this request will pass.
+  {
+authorization::Request request;
+request.set_action(authorization::RESIZE_VOLUME);
+request.mutable_subject()->set_value("bar");
+request.mutable_object()->set_value("panda");
+AWAIT_EXPECT_TRUE(authorizer->authorized(request));
+  }
+  {
+authorization::Request request;
+request.set_action(authorization::RESIZE_VOLUME);
+request.mutable_subject()->set_value("bar");
+request.muta

[06/13] mesos git commit: Added tests for validation of `GrowVolume` and `ShrinkVolume`.

2018-05-03 Thread chhsiao
Added tests for validation of `GrowVolume` and `ShrinkVolume`.

Review: https://reviews.apache.org/r/66858/


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/fa1ca073
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/fa1ca073
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/fa1ca073

Branch: refs/heads/master
Commit: fa1ca073ceec0fe24073a1c873ebbb328f806885
Parents: 71057f2
Author: Zhitao Li 
Authored: Thu May 3 17:04:44 2018 -0700
Committer: Chun-Hung Hsiao 
Committed: Thu May 3 17:04:44 2018 -0700

--
 src/tests/master_validation_tests.cpp | 298 +
 1 file changed, 298 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/mesos/blob/fa1ca073/src/tests/master_validation_tests.cpp
--
diff --git a/src/tests/master_validation_tests.cpp 
b/src/tests/master_validation_tests.cpp
index a522961..fb1d8bd 100644
--- a/src/tests/master_validation_tests.cpp
+++ b/src/tests/master_validation_tests.cpp
@@ -1460,6 +1460,304 @@ TEST_F(DestroyOperationValidationTest, 
MultipleResourceProviders)
 }
 
 
+class GrowVolumeOperationValidationTest : public MesosTest {
+protected:
+  Offer::Operation::GrowVolume createGrowVolume()
+  {
+Resource volume = createPersistentVolume(
+Megabytes(128),
+"role1",
+"id1",
+"path1");
+
+Resource addition = Resources::parse("disk", "128", "role1").get();
+
+Offer::Operation::GrowVolume growVolume;
+growVolume.mutable_volume()->CopyFrom(volume);
+growVolume.mutable_addition()->CopyFrom(addition);
+
+return growVolume;
+  }
+};
+
+
+// This test verifies that validation succeeds on a valid operation.
+TEST_F(GrowVolumeOperationValidationTest, Valid)
+{
+  protobuf::slave::Capabilities capabilities;
+  capabilities.resizeVolume = true;
+
+  Offer::Operation::GrowVolume growVolume = createGrowVolume();
+
+  Option error = operation::validate(growVolume, capabilities);
+  EXPECT_NONE(error);
+}
+
+
+// This test verifies that validation fails if `GrowVolume.volume` is not a
+// persistent volume.
+TEST_F(GrowVolumeOperationValidationTest, NonPersistentVolume)
+{
+  protobuf::slave::Capabilities capabilities;
+  capabilities.resizeVolume = true;
+
+  Offer::Operation::GrowVolume growVolume = createGrowVolume();
+  growVolume.mutable_volume()->mutable_disk()->clear_persistence();
+
+  Option error = operation::validate(growVolume, capabilities);
+  EXPECT_SOME(error);
+}
+
+
+// This test verifies that validation fails if `GrowVolume.addition` has a zero
+// value.
+TEST_F(GrowVolumeOperationValidationTest, ZeroAddition)
+{
+  protobuf::slave::Capabilities capabilities;
+  capabilities.resizeVolume = true;
+
+  Offer::Operation::GrowVolume growVolume = createGrowVolume();
+  growVolume.mutable_addition()->mutable_scalar()->set_value(0);
+
+  Option error = operation::validate(growVolume, capabilities);
+  EXPECT_SOME(error);
+}
+
+
+// This test verifies that validation fails if `GrowVolume.volume` and
+// `GrowVolume.addition' are incompatible.
+TEST_F(GrowVolumeOperationValidationTest, IncompatibleDisk)
+{
+  protobuf::slave::Capabilities capabilities;
+  capabilities.resizeVolume = true;
+
+  // Make the volume on a PATH disk so it cannot be grown with a ROOT disk.
+  Resource pathVolume = createPersistentVolume(
+   Megabytes(128),
+"role1",
+"id1",
+"path1",
+None(),
+createDiskSourcePath("root"));
+
+  Offer::Operation::GrowVolume growVolume = createGrowVolume();
+  growVolume.mutable_volume()->CopyFrom(pathVolume);
+
+  Option error = operation::validate(growVolume, capabilities);
+  EXPECT_SOME(error);
+}
+
+
+// This test verifies that validation fails if `GrowVolume.volume` is a shared
+// persistent volume.
+TEST_F(GrowVolumeOperationValidationTest, Shared)
+{
+  protobuf::slave::Capabilities capabilities;
+  capabilities.resizeVolume = true;
+
+  Offer::Operation::GrowVolume growVolume = createGrowVolume();
+  growVolume.mutable_volume()->mutable_shared();
+
+  Option error = operation::validate(growVolume, capabilities);
+  EXPECT_SOME(error);
+}
+
+
+// This test verifies that validation fails if `GrowVolume.volume` has resource
+// provider id.
+TEST_F(GrowVolumeOperationValidationTest, ResourceProvider)
+{
+  protobuf::slave::Capabilities capabilities;
+  capabilities.resizeVolume = true;
+
+  Offer::Operation::GrowVolume growVolume = createGrowVolume();
+  growVolume.mutable_volume()->mutable_provider_id()->set_value("provider");
+
+  Option error = operation::validate(growVolume, capabilities);
+  EXPECT_SOME(error);
+}
+
+
+// This test verifies that validation fails if `GrowVolume.volume` and
+// `GrowVolume.addition` are on MOUNT disks, which are not addable.
+TEST_

[05/13] mesos git commit: Added helper functions to create grow and shrink volume in test.

2018-05-03 Thread chhsiao
Added helper functions to create grow and shrink volume in test.

Review: https://reviews.apache.org/r/66219/


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/71057f2c
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/71057f2c
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/71057f2c

Branch: refs/heads/master
Commit: 71057f2c34b0ee4278be20a1da55423a81fc30a0
Parents: 8251087
Author: Zhitao Li 
Authored: Thu May 3 17:04:42 2018 -0700
Committer: Chun-Hung Hsiao 
Committed: Thu May 3 17:04:42 2018 -0700

--
 src/tests/mesos.hpp | 56 
 1 file changed, 56 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/mesos/blob/71057f2c/src/tests/mesos.hpp
--
diff --git a/src/tests/mesos.hpp b/src/tests/mesos.hpp
index 907bca5..8da3b02 100644
--- a/src/tests/mesos.hpp
+++ b/src/tests/mesos.hpp
@@ -1342,6 +1342,32 @@ inline typename TOffer::Operation DESTROY(const 
TResources& volumes)
 }
 
 
+template 
+inline typename TOffer::Operation GROW_VOLUME(
+const TResource& volume,
+const TResource& addition)
+{
+  typename TOffer::Operation operation;
+  operation.set_type(TOffer::Operation::GROW_VOLUME);
+  operation.mutable_grow_volume()->mutable_volume()->CopyFrom(volume);
+  operation.mutable_grow_volume()->mutable_addition()->CopyFrom(addition);
+  return operation;
+}
+
+
+template 
+inline typename TOffer::Operation SHRINK_VOLUME(
+const TResource& volume,
+const TValueScalar& subtract)
+{
+  typename TOffer::Operation operation;
+  operation.set_type(TOffer::Operation::SHRINK_VOLUME);
+  operation.mutable_shrink_volume()->mutable_volume()->CopyFrom(volume);
+  operation.mutable_shrink_volume()->mutable_subtract()->CopyFrom(subtract);
+  return operation;
+}
+
+
 template 
 inline typename TOffer::Operation LAUNCH(const std::vector& tasks)
 {
@@ -1745,6 +1771,20 @@ inline Offer::Operation DESTROY(Args&&... args)
 }
 
 
+template 
+inline Offer::Operation GROW_VOLUME(Args&&... args)
+{
+  return common::GROW_VOLUME(std::forward(args)...);
+}
+
+
+template 
+inline Offer::Operation SHRINK_VOLUME(Args&&... args)
+{
+  return common::SHRINK_VOLUME(std::forward(args)...);
+}
+
+
 // We specify the argument to allow brace initialized construction.
 inline Offer::Operation LAUNCH(const std::vector& tasks)
 {
@@ -2043,6 +2083,22 @@ inline mesos::v1::Offer::Operation DESTROY(Args&&... 
args)
 }
 
 
+template 
+inline mesos::v1::Offer::Operation GROW_VOLUME(Args&&... args)
+{
+  return common::GROW_VOLUME(
+  std::forward(args)...);
+}
+
+
+template 
+inline mesos::v1::Offer::Operation SHRINK_VOLUME(Args&&... args)
+{
+  return common::SHRINK_VOLUME(
+  std::forward(args)...);
+}
+
+
 // We specify the argument to allow brace initialized construction.
 inline mesos::v1::Offer::Operation LAUNCH(
 const std::vector& tasks)



[12/13] mesos git commit: Added test for `GROW_VOLUME` and `SHRINK_VOLUME` operator API.

2018-05-03 Thread chhsiao
Added test for `GROW_VOLUME` and `SHRINK_VOLUME` operator API.

Review: https://reviews.apache.org/r/66227/


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/f8d28f40
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/f8d28f40
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/f8d28f40

Branch: refs/heads/master
Commit: f8d28f409b4cfd6330e3063b59d5192a063f32aa
Parents: e2d3112
Author: Zhitao Li 
Authored: Thu May 3 17:05:08 2018 -0700
Committer: Chun-Hung Hsiao 
Committed: Thu May 3 17:05:08 2018 -0700

--
 src/tests/api_tests.cpp | 221 +++
 1 file changed, 221 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/mesos/blob/f8d28f40/src/tests/api_tests.cpp
--
diff --git a/src/tests/api_tests.cpp b/src/tests/api_tests.cpp
index dd8e221..1ed26a7 100644
--- a/src/tests/api_tests.cpp
+++ b/src/tests/api_tests.cpp
@@ -43,6 +43,7 @@
 #include "common/http.hpp"
 #include "common/protobuf_utils.hpp"
 #include "common/recordio.hpp"
+#include "common/resources_utils.hpp"
 
 #include "internal/devolve.hpp"
 #include "internal/evolve.hpp"
@@ -3680,6 +3681,226 @@ TEST_P(MasterAPITest, CreateAndDestroyVolumes)
 }
 
 
+// Test growing a persistent volume through the master operator API.
+TEST_P(MasterAPITest, GrowVolume)
+{
+  Try> master = StartMaster();
+  ASSERT_SOME(master);
+
+  // For capturing the SlaveID so we can use it in API calls.
+  Future slaveRegisteredMessage =
+FUTURE_PROTOBUF(SlaveRegisteredMessage(), _, _);
+
+  Owned detector = master.get()->createDetector();
+
+  slave::Flags slaveFlags = CreateSlaveFlags();
+  // Do Static reservation so we can create persistent volumes from it.
+  slaveFlags.resources = "disk(role1):192";
+
+  Try> slave = StartSlave(detector.get(), slaveFlags);
+  ASSERT_SOME(slave);
+
+  AWAIT_READY(slaveRegisteredMessage);
+  SlaveID slaveId = slaveRegisteredMessage->slave_id();
+
+  // Create the persistent volume.
+  v1::master::Call v1CreateVolumesCall;
+  v1CreateVolumesCall.set_type(v1::master::Call::CREATE_VOLUMES);
+  v1::master::Call_CreateVolumes* createVolumes =
+v1CreateVolumesCall.mutable_create_volumes();
+
+  Resource volume = createPersistentVolume(
+  Megabytes(64),
+  "role1",
+  "id1",
+  "path1",
+  None(),
+  None(),
+  DEFAULT_CREDENTIAL.principal());
+
+  createVolumes->add_volumes()->CopyFrom(evolve(volume));
+  createVolumes->mutable_agent_id()->CopyFrom(evolve(slaveId));
+
+  ContentType contentType = GetParam();
+
+  http::Headers headers = createBasicAuthHeaders(DEFAULT_CREDENTIAL);
+  headers["Accept"] = stringify(contentType);
+
+  Future v1CreateVolumesResponse = http::post(
+  master.get()->pid,
+  "api/v1",
+  headers,
+  serialize(contentType, v1CreateVolumesCall),
+  stringify(contentType));
+
+  AWAIT_EXPECT_RESPONSE_STATUS_EQ(
+  http::Accepted().status,
+  v1CreateVolumesResponse);
+
+  Resource addition = Resources::parse("disk", "128", "role1").get();
+
+  // Grow the persistent volume.
+  v1::master::Call v1GrowVolumeCall;
+  v1GrowVolumeCall.set_type(v1::master::Call::GROW_VOLUME);
+
+  v1::master::Call::GrowVolume* growVolume =
+v1GrowVolumeCall.mutable_grow_volume();
+
+  growVolume->mutable_agent_id()->CopyFrom(evolve(slaveId));
+  growVolume->mutable_volume()->CopyFrom(evolve(volume));
+  growVolume->mutable_addition()->CopyFrom(evolve(addition));
+
+  Future v1GrowVolumeResponse = http::post(
+  master.get()->pid,
+  "api/v1",
+  headers,
+  serialize(contentType, v1GrowVolumeCall),
+  stringify(contentType));
+
+  AWAIT_EXPECT_RESPONSE_STATUS_EQ(
+  http::Accepted().status,
+  v1GrowVolumeResponse);
+
+  Resource grownVolume = createPersistentVolume(
+  Megabytes(192),
+  "role1",
+  "id1",
+  "path1",
+  None(),
+  None(),
+  DEFAULT_CREDENTIAL.principal());
+
+  v1::master::Call v1GetAgentsCall;
+  v1GetAgentsCall.set_type(v1::master::Call::GET_AGENTS);
+
+  Future v1GetAgentsResponse =
+post(master.get()->pid, v1GetAgentsCall, contentType);
+
+  AWAIT_READY(v1GetAgentsResponse);
+  ASSERT_TRUE(v1GetAgentsResponse->IsInitialized());
+  ASSERT_EQ(v1::master::Response::GET_AGENTS, v1GetAgentsResponse->type());
+  ASSERT_EQ(1, v1GetAgentsResponse->get_agents().agents_size());
+
+  RepeatedPtrField agentResources = devolve(
+  v1GetAgentsResponse->get_agents().agents(0).total_resources());
+
+  upgradeResources(&agentResources);
+
+  EXPECT_EQ(
+  Resources(grownVolume),
+  Resources(agentResources).persistentVolumes());
+}
+
+
+// Test shrinking a persistent volume through the master operator API.
+TEST_P(MasterAPITest, ShrinkVolume)
+{
+  Try> master = StartMaster();
+  A

[10/13] mesos git commit: Added new operator API to grow and shrink persistent volume.

2018-05-03 Thread chhsiao
Added new operator API to grow and shrink persistent volume.

The same API could be used in the future to grow or shrink CSI volumes,
but currently only persistent volumes are supported.

Review: https://reviews.apache.org/r/66052/


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/d418f155
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/d418f155
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/d418f155

Branch: refs/heads/master
Commit: d418f155271723903c70371c6be41de86d639ff5
Parents: 360ae2f
Author: Zhitao Li 
Authored: Thu May 3 17:05:01 2018 -0700
Committer: Chun-Hung Hsiao 
Committed: Thu May 3 17:05:01 2018 -0700

--
 include/mesos/master/master.proto| 31 +++
 include/mesos/v1/master/master.proto | 31 +++
 2 files changed, 62 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/mesos/blob/d418f155/include/mesos/master/master.proto
--
diff --git a/include/mesos/master/master.proto 
b/include/mesos/master/master.proto
index aa63904..54f8412 100644
--- a/include/mesos/master/master.proto
+++ b/include/mesos/master/master.proto
@@ -79,6 +79,9 @@ message Call {
 CREATE_VOLUMES = 21; // See 'CreateVolumes' below.
 DESTROY_VOLUMES = 22;// See 'DestroyVolumes' below.
 
+GROW_VOLUME = 34;// See 'GrowVolume' below.
+SHRINK_VOLUME = 35;  // See 'ShrinkVolume' below.
+
 // Retrieves the cluster's maintenance status.
 GET_MAINTENANCE_STATUS = 23;
 // Retrieves the cluster's maintenance schedule.
@@ -169,6 +172,32 @@ message Call {
 repeated Resource volumes = 2;
   }
 
+  // Grow a volume by an additional disk resource.
+  // NOTE: This is currently experimental and only for persistent volumes
+  // created on ROOT/PATH disks.
+  message GrowVolume {
+// `slave_id` must be set if `volume` is an agent-local resource, and must
+// be unset if `volume` is an external resource.
+optional SlaveID slave_id = 1;
+
+required Resource volume = 2;
+required Resource addition = 3;
+  }
+
+  // Shrink a volume by the size specified in the `subtract` field.
+  // NOTE: This is currently experimental and only for persistent volumes
+  // created on ROOT/PATH disks.
+  message ShrinkVolume {
+// `slave_id` must be set if `volume` is an agent-local resource, and must
+// be unset if `volume` is an external resource.
+optional SlaveID slave_id = 1;
+
+required Resource volume = 2;
+
+// See comments in `Value.Scalar` for maximum precision supported.
+required Value.Scalar subtract = 3;
+  }
+
   // Updates the cluster's maintenance schedule.
   message UpdateMaintenanceSchedule {
 required maintenance.Schedule schedule = 1;
@@ -227,6 +256,8 @@ message Call {
   optional UnreserveResources unreserve_resources = 8;
   optional CreateVolumes create_volumes = 9;
   optional DestroyVolumes destroy_volumes = 10;
+  optional GrowVolume grow_volume = 18;
+  optional ShrinkVolume shrink_volume = 19;
   optional UpdateMaintenanceSchedule update_maintenance_schedule = 11;
   optional StartMaintenance start_maintenance = 12;
   optional StopMaintenance stop_maintenance = 13;

http://git-wip-us.apache.org/repos/asf/mesos/blob/d418f155/include/mesos/v1/master/master.proto
--
diff --git a/include/mesos/v1/master/master.proto 
b/include/mesos/v1/master/master.proto
index ddb28f9..12f019d 100644
--- a/include/mesos/v1/master/master.proto
+++ b/include/mesos/v1/master/master.proto
@@ -77,6 +77,9 @@ message Call {
 CREATE_VOLUMES = 21; // See 'CreateVolumes' below.
 DESTROY_VOLUMES = 22;// See 'DestroyVolumes' below.
 
+GROW_VOLUME = 34;// See 'GrowVolume' below.
+SHRINK_VOLUME = 35;  // See 'ShrinkVolume' below.
+
 // Retrieves the cluster's maintenance status.
 GET_MAINTENANCE_STATUS = 23;
 // Retrieves the cluster's maintenance schedule.
@@ -167,6 +170,32 @@ message Call {
 repeated Resource volumes = 2;
   }
 
+  // Grow a volume by an additional disk resource.
+  // NOTE: This is currently experimental and only for persistent volumes
+  // created on ROOT/PATH disks.
+  message GrowVolume {
+// `agent_id` must be set if `volume` is an agent-local resource, and must
+// be unset if `volume` is an external resource.
+optional AgentID agent_id = 1;
+
+required Resource volume = 2;
+required Resource addition = 3;
+  }
+
+  // Shrink a volume by the size specified in the `subtract` field.
+  // NOTE: This is currently experimental and only for persistent volumes
+  // created on ROOT/PATH disks.
+  message ShrinkVolume {
+// `agent_id` must be set if `volume` 

[07/13] mesos git commit: Added tests for `GROW_VOLUME` and `SHRINK_VOLUME` operations.

2018-05-03 Thread chhsiao
Added tests for `GROW_VOLUME` and `SHRINK_VOLUME` operations.

Review: https://reviews.apache.org/r/66220/


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/274f2e68
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/274f2e68
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/274f2e68

Branch: refs/heads/master
Commit: 274f2e6804b3f9322ae9e19c2c0acecd179cbd10
Parents: fa1ca07
Author: Zhitao Li 
Authored: Thu May 3 17:04:48 2018 -0700
Committer: Chun-Hung Hsiao 
Committed: Thu May 3 17:04:48 2018 -0700

--
 src/tests/persistent_volume_tests.cpp | 537 +
 1 file changed, 537 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/mesos/blob/274f2e68/src/tests/persistent_volume_tests.cpp
--
diff --git a/src/tests/persistent_volume_tests.cpp 
b/src/tests/persistent_volume_tests.cpp
index c3de96e..5b2a23c 100644
--- a/src/tests/persistent_volume_tests.cpp
+++ b/src/tests/persistent_volume_tests.cpp
@@ -448,6 +448,543 @@ TEST_P(PersistentVolumeTest, 
CreateAndDestroyPersistentVolumes)
 }
 
 
+// This test verifies that a framework can grow a persistent volume and receive
+// the grown volume in further offers.
+TEST_P(PersistentVolumeTest, GrowVolume)
+{
+  if (GetParam() == MOUNT) {
+// It is not possible to have a valid `GrowVolume` on a MOUNT disk because
+// the volume must use up all disk space at `Create` and no space will be
+// left for `addition`. Therefore we skip this test.
+// TODO(zhitao): Make MOUNT a meaningful parameter value for this test, or
+// create a new fixture to avoid testing against it.
+return;
+  }
+
+  Clock::pause();
+
+  FrameworkInfo frameworkInfo = DEFAULT_FRAMEWORK_INFO;
+  frameworkInfo.set_roles(0, DEFAULT_TEST_ROLE);
+
+  // Create a master.
+  master::Flags masterFlags = CreateMasterFlags();
+
+  Try> master = StartMaster(masterFlags);
+  ASSERT_SOME(master);
+
+  slave::Flags slaveFlags = CreateSlaveFlags();
+  slaveFlags.resources = getSlaveResources();
+
+  Owned detector = master.get()->createDetector();
+  Try> slave = StartSlave(detector.get(), slaveFlags);
+  ASSERT_SOME(slave);
+
+  MockScheduler sched;
+  MesosSchedulerDriver driver(
+  &sched, frameworkInfo, master.get()->pid, DEFAULT_CREDENTIAL);
+
+  EXPECT_CALL(sched, registered(&driver, _, _));
+
+  Future> offersBeforeCreate;
+  EXPECT_CALL(sched, resourceOffers(&driver, _))
+.WillOnce(FutureArg<1>(&offersBeforeCreate));
+
+  driver.start();
+
+  Clock::advance(masterFlags.allocation_interval);
+
+  AWAIT_READY(offersBeforeCreate);
+  ASSERT_FALSE(offersBeforeCreate->empty());
+
+  Offer offer = offersBeforeCreate->at(0);
+
+  // The disk spaces will be merged if the fixture parameter is `NONE`.
+  Bytes totalBytes = GetParam() == NONE ? Megabytes(4096) : Megabytes(2048);
+
+  Bytes additionBytes = Megabytes(512);
+
+  // Construct a persistent volume which does not use up all disk resources.
+  Resource volume = createPersistentVolume(
+  getDiskResource(totalBytes - additionBytes, 1),
+  "id1",
+  "path1",
+  None(),
+  frameworkInfo.principal());
+
+  Resource addition = getDiskResource(additionBytes, 1);
+
+  Resource grownVolume = createPersistentVolume(
+  getDiskResource(totalBytes, 1),
+  "id1",
+  "path1",
+  None(),
+  frameworkInfo.principal());
+
+  Future> offersBeforeGrow;
+
+  EXPECT_CALL(sched, resourceOffers(&driver, _))
+.WillOnce(FutureArg<1>(&offersBeforeGrow));
+
+  // We use the filter explicitly here so that the resources will not
+  // be filtered for 5 seconds (the default).
+  Filters filters;
+  filters.set_refuse_seconds(0);
+
+  // Create the persistent volume.
+  driver.acceptOffers(
+  {offer.id()},
+  {CREATE(volume)},
+  filters);
+
+  Clock::settle();
+  Clock::advance(masterFlags.allocation_interval);
+
+  AWAIT_READY(offersBeforeGrow);
+  ASSERT_FALSE(offersBeforeGrow->empty());
+
+  offer = offersBeforeGrow->at(0);
+
+  EXPECT_EQ(
+  allocatedResources(Resources(volume), frameworkInfo.roles(0)),
+  Resources(offer.resources()).persistentVolumes());
+
+  EXPECT_TRUE(
+  Resources(offer.resources()).contains(
+  allocatedResources(addition, frameworkInfo.roles(0;
+
+  // Make sure the volume exists, and leave a non-empty file there.
+  string volumePath = slave::paths::getPersistentVolumePath(
+  slaveFlags.work_dir, volume);
+
+  EXPECT_TRUE(os::exists(volumePath));
+  string filePath = path::join(volumePath, "file");
+  ASSERT_SOME(os::write(filePath, "abc"));
+
+  Future> offersAfterGrow;
+
+  EXPECT_CALL(sched, resourceOffers(&driver, _))
+.WillOnce(FutureArg<1>(&offersAfterGrow));
+
+  // Grow the volume.
+  driver.acceptOffers(
+  {offer.id()},

[02/13] mesos git commit: Added offer operation to grow and shrink persistent volumes.

2018-05-03 Thread chhsiao
Added offer operation to grow and shrink persistent volumes.

Review: https://reviews.apache.org/r/66049/


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/7d88e06c
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/7d88e06c
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/7d88e06c

Branch: refs/heads/master
Commit: 7d88e06cb9752c55aa0c80f0989c58e05ee495f9
Parents: 57e705a
Author: Zhitao Li 
Authored: Thu May 3 17:04:11 2018 -0700
Committer: Chun-Hung Hsiao 
Committed: Thu May 3 17:04:11 2018 -0700

--
 include/mesos/mesos.proto  | 22 ++
 include/mesos/v1/mesos.proto   | 22 ++
 src/common/protobuf_utils.cpp  | 19 +++
 src/common/resources_utils.cpp | 13 +
 src/master/master.cpp  | 23 +++
 src/resource_provider/storage/provider.cpp |  6 ++
 src/tests/mesos.hpp|  6 ++
 src/tests/persistent_volume_tests.cpp  |  2 ++
 src/tests/reservation_tests.cpp|  2 ++
 9 files changed, 115 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/mesos/blob/7d88e06c/include/mesos/mesos.proto
--
diff --git a/include/mesos/mesos.proto b/include/mesos/mesos.proto
index a61de9d..9930bea 100644
--- a/include/mesos/mesos.proto
+++ b/include/mesos/mesos.proto
@@ -1923,6 +1923,8 @@ message Offer {
   DESTROY_VOLUME = 8; // EXPERIMENTAL.
   CREATE_BLOCK = 9;   // EXPERIMENTAL.
   DESTROY_BLOCK = 10; // EXPERIMENTAL.
+  GROW_VOLUME = 11;   // EXPERIMENTAL.
+  SHRINK_VOLUME = 12; // EXPERIMENTAL.
 }
 
 // TODO(vinod): Deprecate this in favor of `LaunchGroup` below.
@@ -1959,6 +1961,24 @@ message Offer {
   repeated Resource volumes = 1;
 }
 
+// Grow a volume by an additional disk resource.
+// NOTE: This is currently experimental and only for persistent volumes
+// created on ROOT/PATH disk.
+message GrowVolume {
+  required Resource volume = 1;
+  required Resource addition = 2;
+}
+
+// Shrink a volume by the size specified in the `subtract` field.
+// NOTE: This is currently experimental and only for persistent volumes
+// created on ROOT/PATH disk.
+message ShrinkVolume {
+  required Resource volume = 1;
+
+  // See comments in `Value.Scalar` for maximum precision supported.
+  required Value.Scalar subtract = 2;
+}
+
 // NOTE: For the time being, this API is subject to change and the related
 // feature is experimental.
 message CreateVolume {
@@ -1997,6 +2017,8 @@ message Offer {
 optional Unreserve unreserve = 4;
 optional Create create = 5;
 optional Destroy destroy = 6;
+optional GrowVolume grow_volume = 13; // EXPERIMENTAL.
+optional ShrinkVolume shrink_volume = 14; // EXPERIMENTAL.
 optional CreateVolume create_volume = 8;
 optional DestroyVolume destroy_volume = 9;
 optional CreateBlock create_block = 10;

http://git-wip-us.apache.org/repos/asf/mesos/blob/7d88e06c/include/mesos/v1/mesos.proto
--
diff --git a/include/mesos/v1/mesos.proto b/include/mesos/v1/mesos.proto
index 317d9ef..4101243 100644
--- a/include/mesos/v1/mesos.proto
+++ b/include/mesos/v1/mesos.proto
@@ -1915,6 +1915,8 @@ message Offer {
   DESTROY_VOLUME = 8; // EXPERIMENTAL.
   CREATE_BLOCK = 9;   // EXPERIMENTAL.
   DESTROY_BLOCK = 10; // EXPERIMENTAL.
+  GROW_VOLUME = 11;   // EXPERIMENTAL.
+  SHRINK_VOLUME = 12; // EXPERIMENTAL.
 }
 
 // TODO(vinod): Deprecate this in favor of `LaunchGroup` below.
@@ -1951,6 +1953,24 @@ message Offer {
   repeated Resource volumes = 1;
 }
 
+// Grow a volume by an additional disk resource.
+// NOTE: This is currently experimental and only for persistent volumes
+// created on ROOT/PATH disk.
+message GrowVolume {
+  required Resource volume = 1;
+  required Resource addition = 2;
+}
+
+// Shrink a volume by the size specified in the `subtract` field.
+// NOTE: This is currently experimental and only for persistent volumes
+// created on ROOT/PATH disk.
+message ShrinkVolume {
+  required Resource volume = 1;
+
+  // See comments in `Value.Scalar` for maximum precision supported.
+  required Value.Scalar subtract = 2;
+}
+
 // NOTE: For the time being, this API is subject to change and the related
 // feature is experimental.
 message CreateVolume {
@@ -1989,6 +2009,8 @@ message Offer {
 optional Unreserve unreserve = 4;
 optional Create create = 5;
 optional Destroy destroy = 6;
+optional GrowVolume grow_v

[04/13] mesos git commit: Implemented grow and shrink of persistent volumes.

2018-05-03 Thread chhsiao
Implemented grow and shrink of persistent volumes.

The new offer operations are implemented as speculative operations, but
we will use validation to make them non-speculative on API level so that
we can transition later without a breaking change.

Review: https://reviews.apache.org/r/66050/


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/8251087b
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/8251087b
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/8251087b

Branch: refs/heads/master
Commit: 8251087b041ebdfd70ad5aa1e0296e139d4663f0
Parents: 9f2b497
Author: Zhitao Li 
Authored: Thu May 3 17:04:36 2018 -0700
Committer: Chun-Hung Hsiao 
Committed: Thu May 3 17:04:36 2018 -0700

--
 src/common/protobuf_utils.cpp  |  49 +++
 src/common/resources_utils.cpp | 104 +--
 src/master/master.cpp  | 160 +++-
 src/master/validation.cpp  | 129 +
 src/master/validation.hpp  |  10 +++
 5 files changed, 411 insertions(+), 41 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/mesos/blob/8251087b/src/common/protobuf_utils.cpp
--
diff --git a/src/common/protobuf_utils.cpp b/src/common/protobuf_utils.cpp
index c5d873c..82ba141 100644
--- a/src/common/protobuf_utils.cpp
+++ b/src/common/protobuf_utils.cpp
@@ -37,7 +37,6 @@
 #include 
 #include 
 #include 
-#include 
 #include 
 #include 
 
@@ -708,9 +707,24 @@ void injectAllocationInfo(
   break;
 }
 
-case Offer::Operation::GROW_VOLUME:
+case Offer::Operation::GROW_VOLUME: {
+  inject(
+  *operation->mutable_grow_volume()->mutable_volume(),
+  allocationInfo);
+
+  inject(
+  *operation->mutable_grow_volume()->mutable_addition(),
+  allocationInfo);
+
+  break;
+}
+
 case Offer::Operation::SHRINK_VOLUME: {
-  UNIMPLEMENTED;
+  inject(
+  *operation->mutable_shrink_volume()->mutable_volume(),
+  allocationInfo);
+
+  break;
 }
 
 case Offer::Operation::CREATE_VOLUME: {
@@ -828,9 +842,17 @@ void stripAllocationInfo(Offer::Operation* operation)
   break;
 }
 
-case Offer::Operation::GROW_VOLUME:
+case Offer::Operation::GROW_VOLUME: {
+  strip(*operation->mutable_grow_volume()->mutable_volume());
+  strip(*operation->mutable_grow_volume()->mutable_addition());
+
+  break;
+}
+
 case Offer::Operation::SHRINK_VOLUME: {
-  UNIMPLEMENTED;
+  strip(*operation->mutable_shrink_volume()->mutable_volume());
+
+  break;
 }
 
 case Offer::Operation::CREATE_VOLUME: {
@@ -877,11 +899,12 @@ bool isSpeculativeOperation(const Offer::Operation& 
operation)
 case Offer::Operation::UNRESERVE:
 case Offer::Operation::CREATE:
 case Offer::Operation::DESTROY:
-  return true;
+// TODO(zhitao): Convert `GROW_VOLUME` and `SHRINK_VOLUME` to
+// non-speculative operations once we can support non-speculative operator
+// API.
 case Offer::Operation::GROW_VOLUME:
-case Offer::Operation::SHRINK_VOLUME: {
-  UNIMPLEMENTED;
-}
+case Offer::Operation::SHRINK_VOLUME:
+  return true;
 case Offer::Operation::UNKNOWN:
   UNREACHABLE();
   }
@@ -1020,7 +1043,9 @@ Try getConsumedResources(const 
Offer::Operation& operation)
 case Offer::Operation::RESERVE:
 case Offer::Operation::UNRESERVE:
 case Offer::Operation::CREATE:
-case Offer::Operation::DESTROY: {
+case Offer::Operation::DESTROY:
+case Offer::Operation::GROW_VOLUME:
+case Offer::Operation::SHRINK_VOLUME: {
   Try> conversions =
 getResourceConversions(operation);
 
@@ -1035,10 +1060,6 @@ Try getConsumedResources(const 
Offer::Operation& operation)
 
   return consumed;
 }
-case Offer::Operation::GROW_VOLUME:
-case Offer::Operation::SHRINK_VOLUME: {
-  UNIMPLEMENTED;
-}
 case Offer::Operation::LAUNCH:
 case Offer::Operation::LAUNCH_GROUP:
   // TODO(bbannier): Consider adding support for 'LAUNCH' and

http://git-wip-us.apache.org/repos/asf/mesos/blob/8251087b/src/common/resources_utils.cpp
--
diff --git a/src/common/resources_utils.cpp b/src/common/resources_utils.cpp
index 6f56026..eb72995 100644
--- a/src/common/resources_utils.cpp
+++ b/src/common/resources_utils.cpp
@@ -16,7 +16,6 @@
 
 #include 
 #include 
-#include 
 
 #include "common/resources_utils.hpp"
 
@@ -196,9 +195,56 @@ Try> getResourceConversions(
   }
   break;
 }
-case TOperation::GROW_VOLUME:
+
+case TOperation::GROW_VOLUME: {
+  const TResource& volume = operation.grow_volume().volume();
+  const TResource& addi

[08/13] mesos git commit: Added new authorization for `ResizeVolume`.

2018-05-03 Thread chhsiao
Added new authorization for `ResizeVolume`.

The new authorization action is modelled after `CreateVolume`, and will
be shared by both `GROW_VOLUME` and `SHRINK_VOLUME` operations and
corresponding operator APIs.

Review: https://reviews.apache.org/r/66531/


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/9656329c
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/9656329c
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/9656329c

Branch: refs/heads/master
Commit: 9656329cb313316e7e82ba5a73fae6ca0997e3af
Parents: 274f2e6
Author: Zhitao Li 
Authored: Thu May 3 17:04:50 2018 -0700
Committer: Chun-Hung Hsiao 
Committed: Thu May 3 17:04:50 2018 -0700

--
 include/mesos/authorizer/acls.proto   |  10 +++
 include/mesos/authorizer/authorizer.proto |   3 +
 src/authorizer/local/authorizer.cpp   |   9 +++
 src/master/master.cpp | 103 -
 src/master/master.hpp |  23 ++
 5 files changed, 144 insertions(+), 4 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/mesos/blob/9656329c/include/mesos/authorizer/acls.proto
--
diff --git a/include/mesos/authorizer/acls.proto 
b/include/mesos/authorizer/acls.proto
index 8ef3321..e488993 100644
--- a/include/mesos/authorizer/acls.proto
+++ b/include/mesos/authorizer/acls.proto
@@ -114,6 +114,15 @@ message ACL {
 required Entity creator_principals = 2;
   }
 
+  // Specifies which roles a principal can resize volumes for.
+  message ResizeVolume {
+// Subjects: Framework principal or Operator username.
+required Entity principals = 1;
+
+// Objects: The principal(s) can resize volumes for these roles.
+required Entity roles = 2;
+  }
+
   // Which principals are authorized to see quotas for the given roles.
   message GetQuota {
 // Subjects: Operator username.
@@ -589,4 +598,5 @@ message ACLs {
   repeated ACL.ViewStandaloneContainer view_standalone_containers = 46;
   repeated ACL.ModifyResourceProviderConfig modify_resource_provider_configs = 
45;
   repeated ACL.PruneImages prune_images = 47;
+  repeated ACL.ResizeVolume resize_volumes = 48;
 }

http://git-wip-us.apache.org/repos/asf/mesos/blob/9656329c/include/mesos/authorizer/authorizer.proto
--
diff --git a/include/mesos/authorizer/authorizer.proto 
b/include/mesos/authorizer/authorizer.proto
index 1508c01..bb1010d 100644
--- a/include/mesos/authorizer/authorizer.proto
+++ b/include/mesos/authorizer/authorizer.proto
@@ -254,6 +254,9 @@ enum Action {
   // This action will not fill in any object fields. A principal is either
   // allowed to prune unused container images or is unauthorized.
   PRUNE_IMAGES = 41;
+
+  // `RESIZE_VOLUME` will have an object with `Resource` set.
+  RESIZE_VOLUME = 42;
 }
 
 

http://git-wip-us.apache.org/repos/asf/mesos/blob/9656329c/src/authorizer/local/authorizer.cpp
--
diff --git a/src/authorizer/local/authorizer.cpp 
b/src/authorizer/local/authorizer.cpp
index c098ba9..61e9ab5 100644
--- a/src/authorizer/local/authorizer.cpp
+++ b/src/authorizer/local/authorizer.cpp
@@ -417,6 +417,7 @@ public:
 
   break;
 case authorization::CREATE_VOLUME:
+case authorization::RESIZE_VOLUME:
 case authorization::GET_QUOTA:
 case authorization::RESERVE_RESOURCES:
 case authorization::UPDATE_QUOTA:
@@ -594,6 +595,7 @@ public:
 } else {
   switch (action_) {
 case authorization::CREATE_VOLUME:
+case authorization::RESIZE_VOLUME:
 case authorization::RESERVE_RESOURCES: {
   entityObject.set_type(ACL::Entity::SOME);
   if (object->resource) {
@@ -875,6 +877,11 @@ public:
 createHierarchicalRoleACLs(acls.create_volumes());
 break;
   }
+  case authorization::RESIZE_VOLUME: {
+hierarchicalRoleACLs =
+createHierarchicalRoleACLs(acls.resize_volumes());
+break;
+  }
   case authorization::RESERVE_RESOURCES: {
 hierarchicalRoleACLs =
 createHierarchicalRoleACLs(acls.reserve_resources());
@@ -1113,6 +1120,7 @@ public:
 return getNestedContainerObjectApprover(subject, action);
   }
   case authorization::CREATE_VOLUME:
+  case authorization::RESIZE_VOLUME:
   case authorization::RESERVE_RESOURCES:
   case authorization::UPDATE_WEIGHT:
   case authorization::VIEW_ROLE:
@@ -1520,6 +1528,7 @@ private:
 return acls_;
   case authorization::REGISTER_FRAMEWORK:
   case authorization::CREATE_VOLUME:
+  case authorization::RESIZE_VOLUME:
   case authorization::RESERVE_RESOURCE

[20/21] mesos-site git commit: Updated the website built from mesos SHA: a483fb0.

2018-05-03 Thread git-site-role
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/47a93e53/content/api/latest/c++/classmesos_1_1internal_1_1master_1_1Master-members.html
--
diff --git 
a/content/api/latest/c++/classmesos_1_1internal_1_1master_1_1Master-members.html
 
b/content/api/latest/c++/classmesos_1_1internal_1_1master_1_1Master-members.html
index 148595b..10c1457 100644
--- 
a/content/api/latest/c++/classmesos_1_1internal_1_1master_1_1Master-members.html
+++ 
b/content/api/latest/c++/classmesos_1_1internal_1_1master_1_1Master-members.html
@@ -88,136 +88,137 @@
   authorizeFramework(const
 FrameworkInfo &frameworkInfo)mesos::internal::master::Masterprotected
   authorizeReserveResources(const
 Offer::Operation::Reserve &reserve, const Option< 
process::http::authentication::Principal > &principal)mesos::internal::master::Masterprotected
   authorizeReserveResources(const
 Resources &resources, const Option< 
process::http::authentication::Principal > &principal)mesos::internal::master::Masterprotected
-  authorizeSlave(const
 SlaveInfo &slaveInfo, const Option< 
process::http::authentication::Principal > &principal)mesos::internal::master::Masterprotected
-  authorizeTask(const
 TaskInfo &task, Framework *framework)mesos::internal::master::Masterprotected
-  authorizeUnreserveResources(const
 Offer::Operation::Unreserve &unreserve, const Option< 
process::http::authentication::Principal > &principal)mesos::internal::master::Masterprotected
-  consume(process::MessageEvent
 &&event) overridemesos::internal::master::Masterprotectedvirtual
-  consume(process::ExitedEvent
 &&event) overridemesos::internal::master::Masterprotectedvirtual
-  Process<
 Master >::consume(DispatchEvent &&event) overrideprocess::ProcessBaseprotectedvirtual
-  Process<
 Master >::consume(HttpEvent &&event) overrideprocess::ProcessBaseprotectedvirtual
-  Process<
 Master >::consume(TerminateEvent &&event) overrideprocess::ProcessBaseprotectedvirtual
-  contended(const
 process::Future< process::Future< Nothing >> 
&candidacy)mesos::internal::master::Masterprotected
-  deactivate(Framework
 *framework, bool rescind)mesos::internal::master::Masterprotected
-  deactivate(Slave
 *slave)mesos::internal::master::Masterprotected
-  deactivateFramework(const
 process::UPID &from, const FrameworkID &frameworkId)mesos::internal::master::Master
-  delegate(const
 std::string &name, const UPID &pid)process::ProcessBaseinlineprotected
-  detected(const
 process::Future< Option< MasterInfo >> &_leader)mesos::internal::master::Master
-  disconnect(Framework
 *framework)mesos::internal::master::Masterprotected
-  disconnect(Slave
 *slave)mesos::internal::master::Masterprotected
-  eventCount()process::ProcessBaseprotected
-  exceededCapacity(const
 process::MessageEvent &event, const Option< std::string > 
&principal, uint64_t capacity)mesos::internal::master::Masterprotected
-  executorMessage(const
 process::UPID &from, ExecutorToFrameworkMessage 
&&executorToFrameworkMessage)mesos::internal::master::Master
-  exited(const
 process::UPID &pid) overridemesos::internal::master::Masterprotectedvirtual
-  exited(const
 FrameworkID &frameworkId, const HttpConnection &http)mesos::internal::master::Masterprotected
-  exited(const
 id::UUID &id)mesos::internal::master::Masterprotected
-  exitedExecutor(const
 process::UPID &from, const SlaveID &slaveId, const FrameworkID 
&frameworkId, const ExecutorID &executorId, int32_t status)mesos::internal::master::Master
-  failoverFramework(Framework
 *framework, const process::UPID &newPid)mesos::internal::master::Masterprotected
-  failoverFramework(Framework
 *framework, const HttpConnection &http)mesos::internal::master::Masterprotected
-  fileAttached(const
 process::Future< Nothing > &result, const std::string 
&path)mesos::internal::master::Masterprotected
-  finalize()
 overridemesos::internal::master::Masterprotectedvirtual
-  forward(const
 StatusUpdate &update, const process::UPID &acknowledgee, Framework 
*framework)mesos::internal::master::Masterprotected
-  Frameworkmesos::internal::master::Masterfriend
-  frameworkFailoverTimeout(const
 FrameworkID &frameworkId, const process::Time 
&reregisteredTime)mesos::internal::master::Master
-  getFramework(const
 FrameworkID &frameworkId) const mesos::internal::master::Masterprotected
-  getInverseOffer(const
 OfferID &inverseOfferId) const mesos::internal::master::Masterprotected
-  getOffer(const
 OfferID &offerId) const mesos::internal::master::Masterprotected
-  HttpRequestHandler
 typedefprocess::ProcessBaseprotected
-  httpSequenceprocess::ProcessBase
-  info()
 const mesos::internal::master::Masterinline
-  initialize()
 overridemesos::internal::master::Masterprotectedvirtual
-  install(void(Master::*method)(const
 process::UPID &, const M &))ProtobufProcess< Master >inlineprotected
-  install(void(Master::*method)(const
 process::UPID &, M &&))ProtobufProcess< Master >inlineprotected
-  install(void(Master

[02/21] mesos-site git commit: Updated the website built from mesos SHA: a483fb0.

2018-05-03 Thread git-site-role
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/47a93e53/content/blog/performance-working-group-progress-report/index.html
--
diff --git a/content/blog/performance-working-group-progress-report/index.html 
b/content/blog/performance-working-group-progress-report/index.html
index 588eb7b..ffe6053 100644
--- a/content/blog/performance-working-group-progress-report/index.html
+++ b/content/blog/performance-working-group-progress-report/index.html
@@ -238,7 +238,7 @@
 
 
 
-If you are a user and would like to suggest some areas for performance 
improvement, please let us know by emailing dev@apache.mesos.org.
+If you are a user and would like to suggest some areas for performance 
improvement, please let us know by emailing dev@apache.mesos.org.
 
   
 



[13/21] mesos-site git commit: Updated the website built from mesos SHA: a483fb0.

2018-05-03 Thread git-site-role
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/47a93e53/content/api/latest/c++/resource__provider_2validation_8hpp_source.html
--
diff --git 
a/content/api/latest/c++/resource__provider_2validation_8hpp_source.html 
b/content/api/latest/c++/resource__provider_2validation_8hpp_source.html
index f0eb2f0..f704931 100644
--- a/content/api/latest/c++/resource__provider_2validation_8hpp_source.html
+++ b/content/api/latest/c++/resource__provider_2validation_8hpp_source.html
@@ -53,7 +53,7 @@
 
 
 Go to the documentation of 
this file.1 // Licensed to the Apache Software Foundation (ASF) under 
one
2 // or more contributor license agreements.  
See the NOTICE file3 // distributed with this 
work for additional information4 // regarding copyright ownership.  The ASF licenses this 
file   
 5 // to you under the Apache License, 
Version 2.0 (the6 // 
"License"); you may not use this file except in 
compliance7 // with the License.  
You may obtain a copy of the License at8 //9 // 
http://www.apache.org/licenses/LICENSE-2.0   10 //   11 // Unless required by 
applicable law or agreed to in writing, software   12 // distributed under the License is distributed on an "AS 
IS" BASIS,   13 // WITHOUT WARRANTIES OR 
CONDITIONS OF ANY KIND, either express or implied.   14 // See the License for the specific language governing 
permissions and   15 // limitations under the 
License.   16    17 #ifndef 
__RESOURCE_PROVIDER_VALIDATION_HPP__   18 #define __RESOURCE_PROVIDER
 _VALIDATION_HPP__   19    20 #include    
21    22 #include    23 #include    
24    25 namespace href="namespacemesos.html">mesos {name="l00026">   26 class="keyword">namespace href="namespaceinternal.html">internal {name="l00027">href="namespacemesos_1_1internal_1_1resource__provider.html">   
 >27 namespace resource_provider 
 >{class="line" 
 >href="namespacemesos_1_1internal_1_1resource__provider_1_1validation.html">   
 >28 namespace validation 
 >{class="line" 
 >href="namespacemesos_1_1internal_1_1resource__provider_1_1validation_1_1call.html">
 >   29 namespace call {class="line">   30    31 Option validate(const mesos::resource_provider::Call&
 call);   
32    33 } // namespace call 
{   
34 } // namespace validation 
{   
35 } // namespace resource_provider {   36 } 
// namespace internal {   37 } // namespace mesos {   38    39 #endif // 
__RESOURCE_PROVIDER_VALIDATION_HPP__Option< 
Error >
-mesos::internal::tests::v1::scheduler::Callmesos::v1::scheduler::Call CallDefinition: mesos.hpp:2601
+mesos::internal::tests::v1::scheduler::Callmesos::v1::scheduler::Call CallDefinition: mesos.hpp:2657
 mesosDefinition: 
spec.hpp:30
 option.hpp
 resource_provider.hpp

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/47a93e53/content/api/latest/c++/slave_2validation_8hpp_source.html
--
diff --git a/content/api/latest/c++/slave_2validation_8hpp_source.html 
b/content/api/latest/c++/slave_2validation_8hpp_source.html
index da9c541..39b5758 100644
--- a/content/api/latest/c++/slave_2validation_8hpp_source.html
+++ b/content/api/latest/c++/slave_2validation_8hpp_source.html
@@ -53,7 +53,7 @@
 
 
 Go to the documentation of this 
file.1 // Licensed to the 
Apache Software Foundation (ASF) under one2 // or more contributor license agreements.  See the NOTICE 
file   
 3 // distributed with this work for 
additional information4 // regarding copyright 
ownership.  The ASF licenses this file5 // to you under the Apache License, Version 2.0 
(the6 // 
 >"License"); you may not use this file except in 
 >complianceclass="lineno">7 // with the License.  
 >You may obtain a copy of the License atname="l8">8 class="comment">//class="lineno">9 // 
 >http://www.apache.org/licenses/LICENSE-2.0name="l00010">   10 class="comment">//class="lineno">   11 // Unless required by 
 >applicable law or agreed to in writing, softwareclass="line">   
 >12 //
  distributed under the License is distributed on an "AS IS" 
BASIS, 
  13 // WITHOUT WARRANTIES OR CONDITIONS OF 
ANY KIND, either express or implied.   14 // See the License for the specific language governing 
permissions and   15 // limitations under the 
License.   16    17 #ifndef __SLAVE_VALIDATION_HPP__   18 #define __SLAVE_VALIDATION_HPP__   
19    20 #include    
21    22 #include    
23    24 #include    25 #include <<
 a class="code" 
href="option_8hpp.html">stout/option.hpp>   
26    27 namespace mesos {   28 namespace internal {   29 namespace slave {   
30 namespace validation 
{   
31    
32 namespace container {   
33    34 Option validateContainerId(const ContainerID& containerId);   
35    36 } // namespace container 
{   
37 <

[14/21] mesos-site git commit: Updated the website built from mesos SHA: a483fb0.

2018-05-03 Thread git-site-role
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/47a93e53/content/api/latest/c++/protobuf__utils_8hpp_source.html
--
diff --git a/content/api/latest/c++/protobuf__utils_8hpp_source.html 
b/content/api/latest/c++/protobuf__utils_8hpp_source.html
index fb47b47..b66ebd8 100644
--- a/content/api/latest/c++/protobuf__utils_8hpp_source.html
+++ b/content/api/latest/c++/protobuf__utils_8hpp_source.html
@@ -52,10 +52,10 @@
 protobuf_utils.hpp  
 
 
-Go to the documentation of this 
file.1 // Licensed to the 
Apache Software Foundation (ASF) under one2 // or more contributor license agreements.  See the NOTICE 
file   
 3 // distributed with this work for 
additional information4 // regarding copyright 
ownership.  The ASF licenses this file5 // to you under the Apache License, Version 2.0 
(the<
 span class="lineno">6 // 
"License"); you may not use this file except in 
compliance7 // with the License.  
You may obtain a copy of the License at8 //9 // 
http://www.apache.org/licenses/LICENSE-2.0   10 //   11 // Unless required by 
applicable law or agreed to in writing, software   12 // d
 istributed under the License is distributed on an "AS IS" 
BASIS, 
  13 // WITHOUT WARRANTIES OR CONDITIONS OF 
ANY KIND, either express or implied.   14 // See the License for the specific language governing 
permissions and   15 // limitations under the 
License.   16    17 #ifndef __PROTOBUF_UTILS_HPP__   18 #define __PROTOBUF_UTILS_HPP__   19    20 #include    21 #include    22 #include    23 #include    24    25 #include    
26    27 #include 
   28    29 #include    
30    31 #include    
32    33 #include    34    35 #include    
36    37 #include    
38    39 #include    40&#
 160;#include    41 #include    42 #include    43 #include    44 #include    45 <
 div class="line">   
46 #include "messages/messages.hpp"   
47    48 // Forward declaration 
(in lieu of an include).   49 namespace process {   50 struct UPID;   51 }   
52    53&
 #160;namespace mesos {   54    55 class ObjectApprovers;   56    57 namespace internal {   58    59 namespace master {
60 // Forward declaration (in lieu of an 
include).   61 struct Framework;   62 struct Slave;   63 } 
// namespace master {   64    65 namespace protobuf {   66    67 bool frameworkHasCapability(   68 
const FrameworkInfo& framework,   69 FrameworkInfo::Capability::Type
 capability); 
  70    71    72 // Returns whet
 her the task state is terminal. Terminal states   73 // mean that the resources are released and the task 
cannot 
  74 // transition back to a non-terminal 
state. Note that   75 // `TASK_UNREACHABLE` is 
not a terminal state, but still   76 // releases the resources.   77 bool isTerminalState(const TaskState& stat
 e);   
78    79    80 // See TaskStatus for more information about these fields. 
Note   
81 // that the 'uuid' must be 
provided for updates that need   82 // acknowledgement. Currently, all slave and executor 
generated   83 // updates require 
acknowledgement, whereas master generated   84 // and scheduler 
 driver generated updates do not.   85 StatusUpdate createStatusUpdate(   86 
const FrameworkID& frameworkId,   87 
const Option& slaveId,   88 
const TaskID& taskId,   89 
const TaskState& state,   90 
const TaskStatus::Source& source,   91 
const Option& uuid,   92 
const std::string& message = "",   93 const Option& reason = None(),   94 const Option& executorId = None(),   95 const Option& healthy = None(),   96 const Option& checkStatus = None(),   97 const Option& labels = None(),   98 const Option& containerStatus 
= None(),   99 const Option& 
unreachableTime = None(),  100 
const Option& limitedResources = None());  101   
102   103 StatusUpdate createStatusUpdate(  104 const 
FrameworkID& frameworkId,  105 const 
TaskStatus& status,  106 
const Option& slaveId);  
107   108   109 // Helper function that creates a new task status from scratch 
with  
110 // obligatory fie
 lds set.  111 TaskStatus createTaskStatus(  112 
const TaskID& taskId,  113 
const TaskState& state,  114 
const id::UUID& uuid,  115 double timestamp);  116   117  class="lineno">  118 // Helper function 
 > that creates a new task status from the given task class="line">  
 > 119 // status. Specific fields in `status` 
 > can be overridden in the new name="l00120">  120  class="comment">// status by specifying the appropriate argument. Fiel

[08/21] mesos-site git commit: Updated the website built from mesos SHA: a483fb0.

2018-05-03 Thread git-site-role
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/47a93e53/content/api/latest/java/index-all.html
--
diff --git a/content/api/latest/java/index-all.html 
b/content/api/latest/java/index-all.html
index b122998..f0da54d 100644
--- a/content/api/latest/java/index-all.html
+++ b/content/api/latest/java/index-all.html
@@ -1206,6 +1206,8 @@
 
 repeated string item = 1;
 
+ADDITION_FIELD_NUMBER
 - Static variable in class org.apache.mesos.Protos.Offer.Operation.GrowVolume
+ 
 addLabels(Protos.Label)
 - Method in class org.apache.mesos.Protos.Labels.Builder
 
 repeated .mesos.Label labels = 1;
@@ -1704,12 +1706,16 @@
  
 addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor,
 Object) - Method in class org.apache.mesos.Protos.Offer.Operation.DestroyVolume.Builder
  
+addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor,
 Object) - Method in class org.apache.mesos.Protos.Offer.Operation.GrowVolume.Builder
+ 
 addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor,
 Object) - Method in class org.apache.mesos.Protos.Offer.Operation.Launch.Builder
  
 addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor,
 Object) - Method in class org.apache.mesos.Protos.Offer.Operation.LaunchGroup.Builder
  
 addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor,
 Object) - Method in class org.apache.mesos.Protos.Offer.Operation.Reserve.Builder
  
+addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor,
 Object) - Method in class org.apache.mesos.Protos.Offer.Operation.ShrinkVolume.Builder
+ 
 addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor,
 Object) - Method in class org.apache.mesos.Protos.Offer.Operation.Unreserve.Builder
  
 addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor,
 Object) - Method in class org.apache.mesos.Protos.OfferID.Builder
@@ -2855,12 +2861,16 @@
  
 build()
 - Method in class org.apache.mesos.Protos.Offer.Operation.DestroyVolume.Builder
  
+build()
 - Method in class org.apache.mesos.Protos.Offer.Operation.GrowVolume.Builder
+ 
 build()
 - Method in class org.apache.mesos.Protos.Offer.Operation.Launch.Builder
  
 build()
 - Method in class org.apache.mesos.Protos.Offer.Operation.LaunchGroup.Builder
  
 build()
 - Method in class org.apache.mesos.Protos.Offer.Operation.Reserve.Builder
  
+build()
 - Method in class org.apache.mesos.Protos.Offer.Operation.ShrinkVolume.Builder
+ 
 build()
 - Method in class org.apache.mesos.Protos.Offer.Operation.Unreserve.Builder
  
 build() 
- Method in class org.apache.mesos.Protos.OfferID.Builder
@@ -3171,12 +3181,16 @@
  
 buildPartial()
 - Method in class org.apache.mesos.Protos.Offer.Operation.DestroyVolume.Builder
  
+buildPartial()
 - Method in class org.apache.mesos.Protos.Offer.Operation.GrowVolume.Builder
+ 
 buildPartial()
 - Method in class org.apache.mesos.Protos.Offer.Operation.Launch.Builder
  
 buildPartial()
 - Method in class org.apache.mesos.Protos.Offer.Operation.LaunchGroup.Builder
  
 buildPartial()
 - Method in class org.apache.mesos.Protos.Offer.Operation.Reserve.Builder
  
+buildPartial()
 - Method in class org.apache.mesos.Protos.Offer.Operation.ShrinkVolume.Builder
+ 
 buildPartial()
 - Method in class org.apache.mesos.Protos.Offer.Operation.Unreserve.Builder
  
 buildPartial()
 - Method in class org.apache.mesos.Protos.OfferID.Builder
@@ -3533,12 +3547,16 @@
  
 clear()
 - Method in class org.apache.mesos.Protos.Offer.Operation.DestroyVolume.Builder
  
+clear()
 - Method in class org.apache.mesos.Protos.Offer.Operation.GrowVolume.Builder
+ 
 clear()
 - Method in class org.apache.mesos.Protos.Offer.Operation.Launch.Builder
  
 clear()
 - Method in class org.apache.mesos.Protos.Offer.Operation.LaunchGroup.Builder
  
 clear()
 - Method in class org.apache.mesos.Protos.Offer.Operation.Reserve.Builder
  
+clear()
 - Method in class org.apache.mesos.Protos.Offer.Operation.ShrinkVolume.Builder
+ 
 clear()
 - Method in class org.apache.mesos.Protos.Offer.Operation.Unreserve.Builder
  
 clear() 
- Method in class org.apache.mesos.Protos.OfferID.Builder
@@ -3683,6 +3701,10 @@
 
 optional int64 ActiveOpens = 5;
 
+clearAddition()
 - Method in class org.apache.mesos.Protos.Offer.Operation.GrowVolume.Builder
+
+required .mesos.Resource addition = 2;
+
 clearAddress()
 - Method in class org.apache.mesos.Protos.MasterInfo.Builder
 
 
@@ -4512,12 +4534,16 @@
  
 clearField(com.google.protobuf.Descriptors.FieldDescriptor)
 - Method in class org.apache.mesos.Protos.Offer.Operation.DestroyVolume.Builder
  
+clearField(com.google.protobuf.Descriptors.FieldDescriptor)
 - Method in class org.apache.mesos.Protos.Offer.Operation.GrowVolume.Builder
+ 
 clearField(com.google.protobuf.Descriptors.FieldDescriptor)
 - Method in class org.apache.mesos.Protos.Offer.Operation.Launch.Builder
  
 clearField(com.google.protobuf.Descriptors.FieldDescriptor)
 - Method in class org.apache.mesos.Protos.Offer.Operation.Laun

[07/21] mesos-site git commit: Updated the website built from mesos SHA: a483fb0.

2018-05-03 Thread git-site-role
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/47a93e53/content/api/latest/java/org/apache/mesos/Protos.Offer.Operation.Builder.html
--
diff --git 
a/content/api/latest/java/org/apache/mesos/Protos.Offer.Operation.Builder.html 
b/content/api/latest/java/org/apache/mesos/Protos.Offer.Operation.Builder.html
index 7353eb3..a5b2aeb 100644
--- 
a/content/api/latest/java/org/apache/mesos/Protos.Offer.Operation.Builder.html
+++ 
b/content/api/latest/java/org/apache/mesos/Protos.Offer.Operation.Builder.html
@@ -17,7 +17,7 @@
 catch(err) {
 }
 //-->
-var methods = 
{"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":9,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i54":10,"i55":10,"i56":10,"i57":10,"i58":10,"i59":10,"i60":10,"i61":10,"i62":10,"i63":10,"i64":10,"i65":10,"i66":10,"i67":10,"i68":10,"i69":10,"i70":10,"i71":10,"i72":10,"i73":10,"i74":10,"i75":10,"i76":10,"i77":10,"i78":10,"i79":10,"i80":10,"i81":10,"i82":10,"i83":10,"i84":10,"i85":10,"i86":10,"i87":10,"i88":10,"i89":10,"i90":10,"i91":10,"i92":10,"i93":10,"i94":10,"i95":10,"i96":10,"i97":10,"i98":10,"i99":10,"i100":10,"i101":10,"i102":10,"i103":10,"i104":10,"i105":10,"i106":10,"i107":10,"i108":10,"i1
 09":10};
+var methods = 
{"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":9,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i54":10,"i55":10,"i56":10,"i57":10,"i58":10,"i59":10,"i60":10,"i61":10,"i62":10,"i63":10,"i64":10,"i65":10,"i66":10,"i67":10,"i68":10,"i69":10,"i70":10,"i71":10,"i72":10,"i73":10,"i74":10,"i75":10,"i76":10,"i77":10,"i78":10,"i79":10,"i80":10,"i81":10,"i82":10,"i83":10,"i84":10,"i85":10,"i86":10,"i87":10,"i88":10,"i89":10,"i90":10,"i91":10,"i92":10,"i93":10,"i94":10,"i95":10,"i96":10,"i97":10,"i98":10,"i99":10,"i100":10,"i101":10,"i102":10,"i103":10,"i104":10,"i105":10,"i106":10,"i107":10,"i108":10,"i1
 
09":10,"i110":10,"i111":10,"i112":10,"i113":10,"i114":10,"i115":10,"i116":10,"i117":10,"i118":10,"i119":10,"i120":10,"i121":10,"i122":10,"i123":10,"i124":10,"i125":10};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static 
Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -204,171 +204,206 @@ implements 
 Protos.Offer.Operation.Builder
+clearGrowVolume()
+
+ EXPERIMENTAL.
+
+
+
+Protos.Offer.Operation.Builder
 clearId()
 
  NOTE: The `id` field will allow frameworks to indicate that they wish to
  receive feedback about an operation.
 
 
-
+
 Protos.Offer.Operation.Builder
 clearLaunch()
 optional .mesos.Offer.Operation.Launch launch = 
2;
 
 
-
+
 Protos.Offer.Operation.Builder
 clearLaunchGroup()
 optional .mesos.Offer.Operation.LaunchGroup 
launch_group = 7;
 
 
-
+
 Protos.Offer.Operation.Builder
 clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) 
 
-
+
 Protos.Offer.Operation.Builder
 clearReserve()
 optional .mesos.Offer.Operation.Reserve reserve = 
3;
 
 
-
+
+Protos.Offer.Operation.Builder
+clearShrinkVolume()
+
+ EXPERIMENTAL.
+
+
+
 Protos.Offer.Operation.Builder
 clearType()
 optional .mesos.Offer.Operation.Type type = 
1;
 
 
-
+
 Protos.Offer.Operation.Builder
 clearUnreserve()
 optional .mesos.Offer.Operation.Unreserve unreserve = 
4;
 
 
-
+
 Protos.Offer.Operation.Builder
 clone() 
 
-
+
 Protos.Offer.Operation.Create
 getCreate()
 optional .mesos.Offer.Operation.Create create = 
5;
 
 
-
+
 Protos.Offer.Operation.CreateBlock
 getCreateBlock()
 optional .mesos.Offer.Operation.CreateBlock 
create_block = 10;
 
 
-
+
 Protos.Offer.Operation.CreateBlock.Builder
 getCreateBlockBuilder()
 optional .mesos.Offer.Operation.CreateBlock 
create_block = 10;
 
 
-
+
 Protos.Offer.Operation.CreateBlockOrBuilder
 getCreateBlockOrBuilder()
 optional .mesos.Offer.Operation.CreateBlock 
create_block = 10;
 
 
-
+
 Protos.Offer.Operation.Create.Builder
 getCreateBuilder()
 optional .mesos.Offer.Operation.Create create = 
5;
 
 
-
+
 Protos.Offer.Operation.CreateOrBuilder
 getCreateOrBuilder()
 optional .mesos.Offer.Operation.Create create = 
5;
 
 
-
+
 Protos.Offer.Operation.CreateVolume
 getCreateVolume()
 optional .mesos.Offer.Operation.CreateVolume 
create_volume = 8;
 
 
-
+
 Protos.Offer.Operation.CreateVolume.Builde

[10/21] mesos-site git commit: Updated the website built from mesos SHA: a483fb0.

2018-05-03 Thread git-site-role
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/47a93e53/content/api/latest/c++/src_2tests_2mesos_8hpp_source.html
--
diff --git a/content/api/latest/c++/src_2tests_2mesos_8hpp_source.html 
b/content/api/latest/c++/src_2tests_2mesos_8hpp_source.html
index 3f33552..97e2832 100644
--- a/content/api/latest/c++/src_2tests_2mesos_8hpp_source.html
+++ b/content/api/latest/c++/src_2tests_2mesos_8hpp_source.html
@@ -52,30 +52,30 @@
 mesos.hpp  
 
 
-Go to the documentation of this 
file.1 // Licensed to the 
Apache Software Foundation (ASF) under one2 // or more contributor license agreements.  See the NOTICE 
file   
 3 // distributed with this work for 
additional information4 // regarding copyright 
ownership.  The ASF licenses this file5 // to you under the Apache License, Version 2.0 
(the6 // 
 >"License"); you may not use this file except in 
 >complianceclass="lineno">7 // with the License.  
 >You may obtain a copy of the License atname="l8">8 class="comment">//class="lineno">9 // 
 >http://www.apache.org/licenses/LICENSE-2.0name="l00010">   10 class="comment">//class="lineno">   11 // Unless required by 
 >applicable law or agreed to in writing, softwareclass="line">   
 >12 //
  distributed under the License is distributed on an "AS IS" 
BASIS, 
  13 // WITHOUT WARRANTIES OR CONDITIONS OF 
ANY KIND, either express or implied.   14 // See the License for the specific language governing 
permissions and   15 // limitations under the 
License.   16    17 #ifndef __TESTS_MESOS_HPP__   18 #define __TESTS_MESOS_HPP__   19 class="line">   
 >20 #include 
 >class="lineno">   21 #include 
 >class="lineno">   22 #include 
 >class="lineno">   23 name="l00024">   24 class="preprocessor">#include class="line">   
 >25 class="lineno">   26 #include mesos/executor.
 hpp>   27 #include    
28    29 #include    30 #include    31 #include    32 #include    
33    34 #include    
35    36 #include    
37    38 #include    
39    40 #include    
41    42 #include    
43    44 #include    
45    46 #include    47 #include    48 #include    49 #include    50 #include    51 #include    52 #include    53 #include    54
  #include    55 #include    
56    57 #include    58 #include    
59    60 #include    61 #include    62 #include    63 #include    64 #include    65 #include    66 #include    67 #include    68 #include    69 #include    70    71 #include "common/http.hpp"   
72    73 #include "messages/messages.hpp" 
// For google::protobuf::Message.   
74    75 #include 
"master/master.hpp"   76    77 #include "href="src_2sched_2constants_8hpp.html">sched/constants.hpp" class="line">   
 >78 class="lineno">   79 #include "class="code" 
 >href="src_2resource__provider_2detector_8hpp.html">resource_provider/detector.hpp" class="line">   
 >80 class="lineno">   81 #include "class="code" 
 >href="src_2slave_2constants_8hpp.html">slave/constants.hpp" class="line">   
 >82 #include "href="slave_8hpp.html">slave/slave.hpp"class="line">   83    84 #include "slave/containerizer/containerizer.hpp"   
85    86 #include "slave/containerizer/mesos/containerizer.hpp"   
87    88 #include "tests/cluster.hpp"   89 #include "tests/limiter.hpp"   90 #include "tests/utils.hpp"   
91    92 #ifdef 
MESOS_HAS_JAVA   93 #include "tests/zookeeper.hpp"   94 #endif // MESOS_HAS_JAVA   95    96 using 
::testing::_; 
  97 using ::testing::An;   98 using 
::testing::DoDefault;   99 using ::testing::Invoke;  100 using 
::testing::Return;  101   102 namespace mesos {  103 namespace internal {
   104 namespace 
tests {  105 
  106 constexpr char READONLY_HTTP_AUTHENTICATION_REALM[]
 = "test-readonly-realm";
  107 constexpr char READWRITE_HTTP_AUTHENTICATION_REALM[]
 = "test-readwrite-realm";
  108 constexpr char DEFAULT_TEST_ROLE[]
 = "default-role";
  109 constexpr char DEFAULT_JWT_SECRET_KEY[]
 =  
110   "72kUKUFtghAjNbIOvLzfF2RxNBfeM64Bri8
 g9WhpyaunwqRB/yozHAqSnyHbddAV"  111   "PcWRQlrJAt871oWgSH+n52vMZ3aVI+AFMzXSo8+sUfMk83IGp0WJefhzeQsjDlGH"  112   
"GYQgCAuGim0BE2X5U+lEue8s697uQpAO8L/FFRuDH2s";  
113   114   115 // Forwa

[16/21] mesos-site git commit: Updated the website built from mesos SHA: a483fb0.

2018-05-03 Thread git-site-role
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/47a93e53/content/api/latest/c++/master_2validation_8hpp_source.html
--
diff --git a/content/api/latest/c++/master_2validation_8hpp_source.html 
b/content/api/latest/c++/master_2validation_8hpp_source.html
index eb28a90..22c9050 100644
--- a/content/api/latest/c++/master_2validation_8hpp_source.html
+++ b/content/api/latest/c++/master_2validation_8hpp_source.html
@@ -52,7 +52,7 @@
 validation.hpp  
 
 
-Go to the documentation of this 
file.1 // Licensed to the 
Apache Software Foundation (ASF) under one2 // or more contributor license agreements.  See the NOTICE 
file   
 3 // distributed with this work for 
additional information4 // regarding copyright 
ownership.  The ASF licenses this file5 // to you under the Apache License, Version 2.0 
(the6 // 
"License"); you may not use this file except in 
compliance7 // with the License.  
You may obtain a copy of the License at8 //9 // 
http://www.apache.org/licenses/LICENSE-2.0   10 //   11 // Unless required by 
applicable law or agreed to in writing, software   12 /
 / distributed under the License is distributed on an "AS IS" 
BASIS, 
  13 // WITHOUT WARRANTIES OR CONDITIONS OF 
ANY KIND, either express or implied.   14 // See the License for the specific language governing 
permissions and   15 // limitations under the 
License.   16    17 #ifndef __MASTER_VALIDATION_HPP__   18 #define __MASTER_VALIDATION_HPP__   
19    20 #include 
   21    22 #include 
   23    24 #include    25 #include    26    27 #include    
28    29 #include    
30    31 #include    32 
 ;   
33 #include    34 #include    
35    36 #include "common/protobuf_utils.hpp"   
37    38 namespace mesos {<
 span class="lineno">   39 namespace 
internal {   40 namespace master {   
41    42 class 
Master;   43    44 struct Framework;   45 struct Slave;   46    
47 namespace validation 
{   
48    
49 namespace master {
   50 namespace call {   
51    52 // Validates that a 
 master:Call is well-formed.   53 // TODO(bmahler): Add unit tests.   54 Option validate(   55 
const mesos::master::Call&
 call,   
56 const Option&
 principal = None());   57    58 } 
// namespace call {   59 
   60 namespace message 
{   
61    62 // Validation helpers 
for internal Mesos protocol messages. This is a   63 // best-effort validation, intended to prevent t
 rivial attacks on the   64 // protocol in 
deployments where the network between master and agents   65 // is not secured. The longer term remedy for this is to make 
security   66 // guarantees at the 
libprocess level that would prevent arbitrary UPID   67 // impersonation (MESOS-7424).   68    69 Option registerSlave(const RegisterSlaveMessage& message);   70 Option reregisterSlave(const ReregisterSlaveMessage& message);   
71    72 } // namespace message 
{   
73 } // namespace master {   74    
75    
76 namespace framework {
   77 namespace internal {   78    79 // Validates the roles in given FrameworkInfo. Role, roles 
and   
80 // MULTI_ROLE should be set acc
 ording to following matrix. Also,   81 // roles should not contain duplicate entries.   82 //   83 // -- MULTI_ROLE is NOT 
set -- 
  84 // 
+---+---+-+   85 // |   |Roles  |No Roles |   86 // +---+---+-+   87 // |R
 ole   | Error |  None   |   88 // +---+---+-+   89 // |No Role| Error |  None   |   90 // +---+---+-+   91 //   92 //  MULTI_ROLE is 
set    93 // 
+---+---+-+   94 // |   |Roles  |No Roles 
 |   
95 // 
+---+---+-+   96 // |Role   | Error |  Error  |   97 // +---+---+-+   98 // |No Role| None  |  None   |   99 // +---+---+-+  100 Option validateRoles(const 
mesos::FrameworkInfo& frameworkInfo);  101   102 } 
// namespace internal {  103   104 // Validate a FrameworkInfo.  105 //  106 // TODO(jay_guo): This 
currently only validates  107 // the role(s), validate more fields!  108 Option validate(const mesos::FrameworkInfo& 
frameworkInfo);  109   110 } // namespace framework {  111   
112   
113 namespace scheduler 
{
  114 namespace call {  
115   116 // Validates that a 
scheduler::Call is well-formed.  117 // TODO(bmahler): Add unit tests.  118 Option validate(  119 
const mesos::scheduler::Call&
 call,  
120 const Option&
 principal = None());  
121   122 } // namespace call 
{  
123 } // namespace scheduler 
{  
124   125   
126 namespace resource {  
127   128 // Functions in this 
namespace are only exposed for testing.
  129 namespace 

[04/21] mesos-site git commit: Updated the website built from mesos SHA: a483fb0.

2018-05-03 Thread git-site-role
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/47a93e53/content/api/latest/java/org/apache/mesos/Protos.Offer.Operation.ShrinkVolume.html
--
diff --git 
a/content/api/latest/java/org/apache/mesos/Protos.Offer.Operation.ShrinkVolume.html
 
b/content/api/latest/java/org/apache/mesos/Protos.Offer.Operation.ShrinkVolume.html
new file mode 100644
index 000..9504181
--- /dev/null
+++ 
b/content/api/latest/java/org/apache/mesos/Protos.Offer.Operation.ShrinkVolume.html
@@ -0,0 +1,889 @@
+http://www.w3.org/TR/html4/loose.dtd";>
+
+
+
+
+Protos.Offer.Operation.ShrinkVolume
+
+
+
+
+
+var methods = 
{"i0":10,"i1":9,"i2":10,"i3":9,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":9,"i17":9,"i18":10,"i19":10,"i20":9,"i21":9,"i22":9,"i23":9,"i24":9,"i25":9,"i26":9,"i27":9,"i28":9,"i29":9,"i30":9,"i31":10,"i32":10};
+var tabs = {65535:["t0","All Methods"],1:["t1","Static 
Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Skip navigation links
+
+
+
+
+Package
+Class
+Tree
+Deprecated
+Index
+Help
+
+
+
+
+Prev Class
+Next Class
+
+
+Frames
+No Frames
+
+
+All Classes
+
+
+
+
+
+
+
+Summary: 
+Nested | 
+Field | 
+Constr | 
+Method
+
+
+Detail: 
+Field | 
+Constr | 
+Method
+
+
+
+
+
+
+
+
+org.apache.mesos
+Class 
Protos.Offer.Operation.ShrinkVolume
+
+
+
+java.lang.Object
+
+
+com.google.protobuf.GeneratedMessageV3
+
+
+org.apache.mesos.Protos.Offer.Operation.ShrinkVolume
+
+
+
+
+
+
+
+
+
+All Implemented Interfaces:
+Protos.Offer.Operation.ShrinkVolumeOrBuilder
+
+
+Enclosing class:
+Protos.Offer.Operation
+
+
+
+public static final class Protos.Offer.Operation.ShrinkVolume
+extends com.google.protobuf.GeneratedMessageV3
+implements Protos.Offer.Operation.ShrinkVolumeOrBuilder
+
+ Shrink a volume by the size specified in the `subtract` field.
+ NOTE: This is currently experimental and only for persistent volumes
+ created on ROOT/PATH disk.
+ 
+
+ Protobuf type mesos.Offer.Operation.ShrinkVolume
+
+
+
+
+
+
+
+
+
+
+
+Nested Class Summary
+
+Nested Classes 
+
+Modifier and Type
+Class and Description
+
+
+static class 
+Protos.Offer.Operation.ShrinkVolume.Builder
+
+ Shrink a volume by the size specified in the `subtract` field.
+
+
+
+
+
+
+
+
+
+
+Field Summary
+
+Fields 
+
+Modifier and Type
+Field and Description
+
+
+static 
+PARSER
+Deprecated. 
+
+
+
+static int
+SUBTRACT_FIELD_NUMBER 
+
+
+static int
+VOLUME_FIELD_NUMBER 
+
+
+
+
+
+
+
+
+
+Method Summary
+
+All Methods Static Methods Instance Methods Concrete Methods 
+
+Modifier and Type
+Method and Description
+
+
+boolean
+equals(java.lang.Object obj) 
+
+
+static Protos.Offer.Operation.ShrinkVolume
+getDefaultInstance() 
+
+
+Protos.Offer.Operation.ShrinkVolume
+getDefaultInstanceForType() 
+
+
+static 
com.google.protobuf.Descriptors.Descriptor
+getDescriptor() 
+
+
+
+getParserForType() 
+
+
+int
+getSerializedSize() 
+
+
+Protos.Value.Scalar
+getSubtract()
+
+ See comments in `Value.Scalar` for maximum precision supported.
+
+
+
+Protos.Value.ScalarOrBuilder
+getSubtractOrBuilder()
+
+ See comments in `Value.Scalar` for maximum precision supported.
+
+
+
+com.google.protobuf.UnknownFieldSet
+getUnknownFields() 
+
+
+Protos.Resource
+getVolume()
+required .mesos.Resource volume = 1;
+
+
+
+Protos.ResourceOrBuilder
+getVolumeOrBuilder()
+required .mesos.Resource volume = 1;
+
+
+
+int
+hashCode() 
+
+
+boolean
+hasSubtract()
+
+ See comments in `Value.Scalar` for maximum precision supported.
+
+
+
+boolean
+hasVolume()
+required .mesos.Resource volume = 1;
+
+
+
+protected 
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+internalGetFieldAccessorTable() 
+
+
+boolean
+isInitialized() 
+
+
+static Protos.Offer.Operation.ShrinkVolume.Builder
+newBuilder() 
+
+
+static Protos.Offer.Operation.ShrinkVolume.Builder
+newBuilder(Protos.Offer.Operation.ShrinkVolume prototype) 
+
+
+Protos.Offer.Operation.ShrinkVolume.Builder
+newBuilderForType() 
+
+
+protected Protos.Offer.Operation.ShrinkVolume.Builder
+newBuilderForType(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) 
+
+
+static Protos.Offer.Operation.ShrinkVolume
+parseDelimitedFrom(java.io.InputStream input) 
+
+
+static Protos.Offer.Operation.ShrinkVolume
+parseDelimitedFrom(java.io.InputStream input,
+  
com.google.prot

[09/21] mesos-site git commit: Updated the website built from mesos SHA: a483fb0.

2018-05-03 Thread git-site-role
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/47a93e53/content/api/latest/c++/structmesos_1_1internal_1_1protobuf_1_1slave_1_1Capabilities-members.html
--
diff --git 
a/content/api/latest/c++/structmesos_1_1internal_1_1protobuf_1_1slave_1_1Capabilities-members.html
 
b/content/api/latest/c++/structmesos_1_1internal_1_1protobuf_1_1slave_1_1Capabilities-members.html
index 313fd82..cbf8e9b 100644
--- 
a/content/api/latest/c++/structmesos_1_1internal_1_1protobuf_1_1slave_1_1Capabilities-members.html
+++ 
b/content/api/latest/c++/structmesos_1_1internal_1_1protobuf_1_1slave_1_1Capabilities-members.html
@@ -62,8 +62,9 @@
   hierarchicalRolemesos::internal::protobuf::slave::Capabilities
   multiRolemesos::internal::protobuf::slave::Capabilities
   reservationRefinementmesos::internal::protobuf::slave::Capabilities
-  resourceProvidermesos::internal::protobuf::slave::Capabilities
-  toRepeatedPtrField()
 const mesos::internal::protobuf::slave::Capabilitiesinline
+  resizeVolumemesos::internal::protobuf::slave::Capabilities
+  resourceProvidermesos::internal::protobuf::slave::Capabilities
+  toRepeatedPtrField()
 const mesos::internal::protobuf::slave::Capabilitiesinline
 
 
 

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/47a93e53/content/api/latest/c++/structmesos_1_1internal_1_1protobuf_1_1slave_1_1Capabilities.html
--
diff --git 
a/content/api/latest/c++/structmesos_1_1internal_1_1protobuf_1_1slave_1_1Capabilities.html
 
b/content/api/latest/c++/structmesos_1_1internal_1_1protobuf_1_1slave_1_1Capabilities.html
index 6febe9b..5bbe33b 100644
--- 
a/content/api/latest/c++/structmesos_1_1internal_1_1protobuf_1_1slave_1_1Capabilities.html
+++ 
b/content/api/latest/c++/structmesos_1_1internal_1_1protobuf_1_1slave_1_1Capabilities.html
@@ -81,6 +81,8 @@ Public Attributes
  
 bool resourceProvider
 = false
  
+bool resizeVolume
 = false
+ 
 
 Constructor & Destructor Documentation
 
@@ -193,6 +195,18 @@ template 
 
 
 
+
+
+
+  
+
+  bool 
mesos::internal::protobuf::slave::Capabilities::resizeVolume = false
+
+  
+
+
+
+
 
 
 

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/47a93e53/content/api/latest/c++/v0__v1executor_8hpp_source.html
--
diff --git a/content/api/latest/c++/v0__v1executor_8hpp_source.html 
b/content/api/latest/c++/v0__v1executor_8hpp_source.html
index b29b30f..b887b83 100644
--- a/content/api/latest/c++/v0__v1executor_8hpp_source.html
+++ b/content/api/latest/c++/v0__v1executor_8hpp_source.html
@@ -57,7 +57,7 @@
 mesos::ExecutorDriverDefinition: executor.hpp:146
 mesos.hpp
 executor.hpp
-mesos::internal::tests::v1::scheduler::Callmesos::v1::scheduler::Call CallDefinition: mesos.hpp:2601
+mesos::internal::tests::v1::scheduler::Callmesos::v1::scheduler::Call CallDefinition: mesos.hpp:2657
 mesos::v1::executor::V0ToV1Adapter::launchTaskvirtual void launchTask(ExecutorDriver *driver, const 
mesos::TaskInfo &task) override
 mesos::MesosExecutorDriverDefinition: executor.hpp:211
 mesos::v1::executor::V0ToV1Adapter::killTaskvirtual void killTask(ExecutorDriver *driver, const 
mesos::TaskID &taskId) override

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/47a93e53/content/api/latest/c++/v1_2resource__provider_8hpp_source.html
--
diff --git a/content/api/latest/c++/v1_2resource__provider_8hpp_source.html 
b/content/api/latest/c++/v1_2resource__provider_8hpp_source.html
index 34c50d0..ec49b5a 100644
--- a/content/api/latest/c++/v1_2resource__provider_8hpp_source.html
+++ b/content/api/latest/c++/v1_2resource__provider_8hpp_source.html
@@ -55,7 +55,7 @@
 Go to the documentation of this 
file.1 // Licensed to the 
Apache Software Foundation (ASF) under one2 // or more contributor license agreements.  See the NOTICE 
file   
 3 // distributed with this work for 
additional information4 // regarding copyright 
ownership.  The ASF licenses this file5 // to you under the Apache License, Version 2.0 
(the6 // 
"License"); you may not use this file except in 
compliance7 // with the License.  
You may obtain a copy of the License at8 //9 // 
http://www.apache.org/licenses/LICENSE-2.0   10 //   11 // Unless required by 
applicable law or agreed to in writing, software   12 // distributed under the License is distributed on an "AS IS" 
BASIS, 
  13 // WITHOUT WARRANTIES OR CONDITIONS OF 
ANY KIND, either express or implied.   14 // See the License for the specific language governing 
permissions and   15 // limitations under the 
License.   16    17 #ifndef 
__MESOS_V1_RESOURCE_PROVIDER_HPP__   18 #define __MESOS_V1_RESOURCE_PROVIDER_
 HPP__ 
  19    20 #include 
   21 #include 
   22    23 #include 

[03/21] mesos-site git commit: Updated the website built from mesos SHA: a483fb0.

2018-05-03 Thread git-site-role
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/47a93e53/content/api/latest/java/org/apache/mesos/Protos.Offer.Operation.html
--
diff --git 
a/content/api/latest/java/org/apache/mesos/Protos.Offer.Operation.html 
b/content/api/latest/java/org/apache/mesos/Protos.Offer.Operation.html
index 5d935da..f8efee4 100644
--- a/content/api/latest/java/org/apache/mesos/Protos.Offer.Operation.html
+++ b/content/api/latest/java/org/apache/mesos/Protos.Offer.Operation.html
@@ -17,7 +17,7 @@
 catch(err) {
 }
 //-->
-var methods = 
{"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":9,"i8":10,"i9":9,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":9,"i46":9,"i47":10,"i48":10,"i49":9,"i50":9,"i51":9,"i52":9,"i53":9,"i54":9,"i55":9,"i56":9,"i57":9,"i58":9,"i59":9,"i60":10,"i61":10};
+var methods = 
{"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":9,"i8":10,"i9":9,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"i46":10,"i47":10,"i48":10,"i49":10,"i50":10,"i51":9,"i52":9,"i53":10,"i54":10,"i55":9,"i56":9,"i57":9,"i58":9,"i59":9,"i60":9,"i61":9,"i62":9,"i63":9,"i64":9,"i65":9,"i66":10,"i67":10};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static 
Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -222,6 +222,17 @@ implements 
 static class 
+Protos.Offer.Operation.GrowVolume
+
+ Grow a volume by an additional disk resource.
+
+
+
+static interface 
+Protos.Offer.Operation.GrowVolumeOrBuilder 
+
+
+static class 
 Protos.Offer.Operation.Launch
 
  TODO(vinod): Deprecate this in favor of `LaunchGroup` below.
@@ -255,6 +266,17 @@ implements 
 static class 
+Protos.Offer.Operation.ShrinkVolume
+
+ Shrink a volume by the size specified in the `subtract` field.
+
+
+
+static interface 
+Protos.Offer.Operation.ShrinkVolumeOrBuilder 
+
+
+static class 
 Protos.Offer.Operation.Type
 Protobuf enum mesos.Offer.Operation.Type
 
@@ -310,26 +332,34 @@ implements 
 static int
-ID_FIELD_NUMBER 
+GROW_VOLUME_FIELD_NUMBER 
 
 
 static int
-LAUNCH_FIELD_NUMBER 
+ID_FIELD_NUMBER 
 
 
 static int
-LAUNCH_GROUP_FIELD_NUMBER 
+LAUNCH_FIELD_NUMBER 
 
 
+static int
+LAUNCH_GROUP_FIELD_NUMBER 
+
+
 static 
 PARSER
 Deprecated. 
 
 
-
+
 static int
 RESERVE_FIELD_NUMBER 
 
+
+static int
+SHRINK_VOLUME_FIELD_NUMBER 
+
 
 static int
 TYPE_FIELD_NUMBER 
@@ -442,6 +472,20 @@ implements 
+Protos.Offer.Operation.GrowVolume
+getGrowVolume()
+
+ EXPERIMENTAL.
+
+
+
+Protos.Offer.Operation.GrowVolumeOrBuilder
+getGrowVolumeOrBuilder()
+
+ EXPERIMENTAL.
+
+
+
 Protos.OperationID
 getId()
 
@@ -449,7 +493,7 @@ implements 
+
 Protos.OperationIDOrBuilder
 getIdOrBuilder()
 
@@ -457,113 +501,134 @@ implements 
+
 Protos.Offer.Operation.Launch
 getLaunch()
 optional .mesos.Offer.Operation.Launch launch = 
2;
 
 
-
+
 Protos.Offer.Operation.LaunchGroup
 getLaunchGroup()
 optional .mesos.Offer.Operation.LaunchGroup 
launch_group = 7;
 
 
-
+
 Protos.Offer.Operation.LaunchGroupOrBuilder
 getLaunchGroupOrBuilder()
 optional .mesos.Offer.Operation.LaunchGroup 
launch_group = 7;
 
 
-
+
 Protos.Offer.Operation.LaunchOrBuilder
 getLaunchOrBuilder()
 optional .mesos.Offer.Operation.Launch launch = 
2;
 
 
-
+
 
 getParserForType() 
 
-
+
 Protos.Offer.Operation.Reserve
 getReserve()
 optional .mesos.Offer.Operation.Reserve reserve = 
3;
 
 
-
+
 Protos.Offer.Operation.ReserveOrBuilder
 getReserveOrBuilder()
 optional .mesos.Offer.Operation.Reserve reserve = 
3;
 
 
-
+
 int
 getSerializedSize() 
 
-
+
+Protos.Offer.Operation.ShrinkVolume
+getShrinkVolume()
+
+ EXPERIMENTAL.
+
+
+
+Protos.Offer.Operation.ShrinkVolumeOrBuilder
+getShrinkVolumeOrBuilder()
+
+ EXPERIMENTAL.
+
+
+
 Protos.Offer.Operation.Type
 getType()
 optional .mesos.Offer.Operation.Type type = 
1;
 
 
-
+
 com.google.protobuf.UnknownFieldSet
 getUnknownFields() 
 
-
+
 Protos.Offer.Operation.Unreserve
 getUnreserve()
 optional .mesos.Offer.Operation.Unreserve unreserve = 
4;
 
 
-
+
 Protos.Offer.Operation.UnreserveOrBuilder
 getUnreserveOrBuilder()
 optional .mesos.Offer.Operation.Unreserve unreserve = 
4;
 
 
-
+
 boolean
 hasCreate()
 optional .mesos.Offer.Operation.Create create = 
5;
 
 
-
+
 boolean
 hasCreateBlock()
 optional .mesos.Offer.Operation.CreateBlock 
create_block = 10;
 
 
-
+
 boolean
 hasCreateVolume()
 optional .mesos.Offer.Operation.CreateVolume 
create_volu

[17/21] mesos-site git commit: Updated the website built from mesos SHA: a483fb0.

2018-05-03 Thread git-site-role
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/47a93e53/content/api/latest/c++/index.hhk
--
diff --git a/content/api/latest/c++/index.hhk b/content/api/latest/c++/index.hhk
index f1576ba..b5f9682 100644
--- a/content/api/latest/c++/index.hhk
+++ b/content/api/latest/c++/index.hhk
@@ -1117,6 +1117,7 @@
   
   
   
+  
   
   
   
@@ -1486,14 +1487,14 @@
   
   
   
-
 
+
   
   
+  
   
   
   
-
 
 
 
@@ -6723,6 +6724,13 @@
 
 
   
+  
+  
+
+
+
+
+  
   
   
   
@@ -10744,6 +10752,7 @@
 
 
 
+
 
 
 
@@ -11200,6 +11209,7 @@
 
 
 
+
 
 
   
@@ -13225,11 +13235,13 @@
 
 
 
+
 
 
 
 
 
+
 
   
   
@@ -13325,10 +13337,12 @@
 
 
 
+
 
 
 
 
+
 
   
   
@@ -13688,6 +13702,7 @@
 
 
 
+
 
 
 
@@ -13695,6 +13710,7 @@
 
 
 
+
 
   
   
@@ -14577,8 +14593,8 @@
   
 
 
-
 
+
 
 
   
@@ -17527,10 +17543,10 @@
 
 
   
-  
   
   
   
+
 
 
 
@@ -17959,9 +17975,12 @@
 
   
   
-  
   
-  
+  
+  
+
+
+  
   
   
   
@@ -18286,8 +18305,8 @@
   
   
   
-
 
+
 
 
 
@@ -18622,8 +18641,8 @@
   
 
 
-
 
+
 
 
 
@@ -19412,8 +19431,8 @@
   
 
 
-
 
+
   
   
   
@@ -19555,22 +19574,22 @@
   
   
   
-
 
+
 
 
   
   
   
-
 
+
 
 
   
   
   
-
 
+
 
 
   
@@ -19618,29 +19637,29 @@
   
   
   
-
 
+
 
 
   
   
   
-
 
+
 
 
   
   
   
-
 
+
 
 
   
   
   
-
 
+
 
 
   
@@ -19674,8 +19693,8 @@
   
   
   
-
 
+
 
 
   
@@ -19688,15 +19707,15 @@
   
   
   
-
 
+
 
 
   
   
   
-
 
+
 
 
   
@@ -19709,22 +19728,22 @@
   
   
   
-
 
+
 
 
   
   
   
-
 
+
 
 
   
   
   
-
 
+
 
 
   
@@ -19737,8 +19756,8 @@
   
   
   
-
 
+
 
 
   
@@ -19807,8 +19826,8 @@
   
   
   
-
 
+
 
 
   
@@ -19969,8 +19988,8 @@
 
 
   
-  
   
+  
   
   
   
@@ -20345,10 +20364,10 @@
 
 
   
-  
   
-  
+  
   
+
 
 
 
@@ -21027,6 +21046,7 @@
 
   
   
+  
   
   
 
@@ -21780,16 +21800,19 @@
   
   
   
+  
+
+
+  
   
-  
-  
   
+
 
-
   
   
-  
+  
   
+
 
 
   
@@ -21815,30 +21838,42 @@
 
   
   
+  
+
+
+  
   
-  
-  
+  
+
+
+  
   
   
 
 
   
   
-  
-  
   
+
 
-
   
   
+  
+  
   
 
 
   
   
+  
+
+
+  
   
-  
-  
+  
+
+
+  
   
   
   
@@ -21847,20 +21882,24 @@
 
   
   
+  
+  
   
-
 
+
   
   
-  
-
-
-  
-  
-  
   
   
+  
+
+
+  
   
+  
+
+
+  
   
   
   
@@ -21868,37 +21907,27 @@
   
   
   
-  
-  
-
-
-  
-  
   
+
 
-
   
   
+  
+  
   
 
 
   
   
-  
-
-
-  
   
-  
-
-
-  
   
   
+
 
-
   
   
+  
+  
   
 
 
@@ -21914,25 +21943,22 @@
 
   
   
-  
-
-
-  
   
   
   
   
+  
+
+
+  
   
   
 
 
   
   
-  
-
-
-  
   
+  
   
   
 
@@ -22273,6 +22299,13 @@
 
 
   
+  
+  
+
+
+
+
+  
   
   
   
@@ -22316,8 +22349,8 @@
   
   
   
-  
   
+  
   
   
   
@@ -23078,6 +23111,7 @@
 
 
 
+
 
 
 
@@ -23091,6 +23125,7 @@
 
 
 
+
 
 
   
@@ -23895,10 +23930,13 @@
   
 
 
+
   
   
-  
-  
+  
+
+
+  
   
   
   
@@ -24792,11 +24830,11 @@
   
   
   
-
 
+
   
-  
   
+  
   
   
   
@@ -25347,10 +25385,13 @@
 
 
 
-
   
   
-  
+  
+  
+
+
+  
   
   
   
@@ -25560,8 +25601,8 @@
   
   
   
-  
   
+  
   
   
 
@@ -25791,10 +25832,13 @@
 
 
 
+
   
   
-  
-  
+  
+
+
+  
   
   
 

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/47a93e53/content/api/latest/c++/master_2validation_8hpp.html
--
diff --git a/content/api/latest/c++/master_2validation_8hpp.html 
b/content/api/latest/c++/master_2validation_8hpp.html
index b5a53d3..0e6a79c 100644
--- a/content/api/latest/c++/master_2validation_8hpp.html
+++ b/content/api/latest/c++/master_2validation_8hpp.html
@@ -175,6 +175,10 @@ Functions
  
 Option< 
Error > mesos::internal::master::validation::operation::validate
 (const Offer::Operation::Destroy &destroy, const Resources 
&checkpointedResources, const hashmap< FrameworkID, Resources > 
&usedResources, const hashmap< FrameworkID, hashmap< TaskID, TaskInfo >> 
&pendingTasks,

[06/21] mesos-site git commit: Updated the website built from mesos SHA: a483fb0.

2018-05-03 Thread git-site-role
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/47a93e53/content/api/latest/java/org/apache/mesos/Protos.Offer.Operation.GrowVolume.Builder.html
--
diff --git 
a/content/api/latest/java/org/apache/mesos/Protos.Offer.Operation.GrowVolume.Builder.html
 
b/content/api/latest/java/org/apache/mesos/Protos.Offer.Operation.GrowVolume.Builder.html
new file mode 100644
index 000..754c60e
--- /dev/null
+++ 
b/content/api/latest/java/org/apache/mesos/Protos.Offer.Operation.GrowVolume.Builder.html
@@ -0,0 +1,769 @@
+http://www.w3.org/TR/html4/loose.dtd";>
+
+
+
+
+Protos.Offer.Operation.GrowVolume.Builder
+
+
+
+
+
+var methods = 
{"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":9,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10};
+var tabs = {65535:["t0","All Methods"],1:["t1","Static 
Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Skip navigation links
+
+
+
+
+Package
+Class
+Tree
+Deprecated
+Index
+Help
+
+
+
+
+Prev Class
+Next Class
+
+
+Frames
+No Frames
+
+
+All Classes
+
+
+
+
+
+
+
+Summary: 
+Nested | 
+Field | 
+Constr | 
+Method
+
+
+Detail: 
+Field | 
+Constr | 
+Method
+
+
+
+
+
+
+
+
+org.apache.mesos
+Class Protos.Offer.Operation.GrowVolume.Builder
+
+
+
+java.lang.Object
+
+
+
+
+
+org.apache.mesos.Protos.Offer.Operation.GrowVolume.Builder
+
+
+
+
+
+
+
+
+
+All Implemented Interfaces:
+Protos.Offer.Operation.GrowVolumeOrBuilder
+
+
+Enclosing class:
+Protos.Offer.Operation.GrowVolume
+
+
+
+public static final class Protos.Offer.Operation.GrowVolume.Builder
+extends 
+implements Protos.Offer.Operation.GrowVolumeOrBuilder
+
+ Grow a volume by an additional disk resource.
+ NOTE: This is currently experimental and only for persistent volumes
+ created on ROOT/PATH disk.
+ 
+
+ Protobuf type mesos.Offer.Operation.GrowVolume
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+All Methods Static Methods Instance Methods Concrete Methods 
+
+Modifier and Type
+Method and Description
+
+
+Protos.Offer.Operation.GrowVolume.Builder
+addRepeatedField(com.google.protobuf.Descriptors.FieldDescriptor field,
+java.lang.Object value) 
+
+
+Protos.Offer.Operation.GrowVolume
+build() 
+
+
+Protos.Offer.Operation.GrowVolume
+buildPartial() 
+
+
+Protos.Offer.Operation.GrowVolume.Builder
+clear() 
+
+
+Protos.Offer.Operation.GrowVolume.Builder
+clearAddition()
+required .mesos.Resource addition = 2;
+
+
+
+Protos.Offer.Operation.GrowVolume.Builder
+clearField(com.google.protobuf.Descriptors.FieldDescriptor field) 
+
+
+Protos.Offer.Operation.GrowVolume.Builder
+clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) 
+
+
+Protos.Offer.Operation.GrowVolume.Builder
+clearVolume()
+required .mesos.Resource volume = 1;
+
+
+
+Protos.Offer.Operation.GrowVolume.Builder
+clone() 
+
+
+Protos.Resource
+getAddition()
+required .mesos.Resource addition = 2;
+
+
+
+Protos.Resource.Builder
+getAdditionBuilder()
+required .mesos.Resource addition = 2;
+
+
+
+Protos.ResourceOrBuilder
+getAdditionOrBuilder()
+required .mesos.Resource addition = 2;
+
+
+
+Protos.Offer.Operation.GrowVolume
+getDefaultInstanceForType() 
+
+
+static 
com.google.protobuf.Descriptors.Descriptor
+getDescriptor() 
+
+
+com.google.protobuf.Descriptors.Descriptor
+getDescriptorForType() 
+
+
+Protos.Resource
+getVolume()
+required .mesos.Resource volume = 1;
+
+
+
+Protos.Resource.Builder
+getVolumeBuilder()
+required .mesos.Resource volume = 1;
+
+
+
+Protos.ResourceOrBuilder
+getVolumeOrBuilder()
+required .mesos.Resource volume = 1;
+
+
+
+boolean
+hasAddition()
+required .mesos.Resource addition = 2;
+
+
+
+boolean
+hasVolume()
+required .mesos.Resource volume = 1;
+
+
+
+protected 
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+internalGetFieldAccessorTable() 
+
+
+boolean
+isInitialized() 
+
+
+Protos.Offer.Operation.GrowVolume.Builder
+mergeAddition(Protos.Resource value)
+required .mesos.Resource addition = 2;
+
+
+
+Protos.Offer.Operation.GrowVolume.Builder
+mergeFrom(com.google.protobuf.CodedInputStream input,
+ 
com.google.protobuf.ExtensionRegistryLite extensionRegistry) 
+
+
+Protos.Offer.Operation.GrowVolume.Builder
+me

[05/21] mesos-site git commit: Updated the website built from mesos SHA: a483fb0.

2018-05-03 Thread git-site-role
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/47a93e53/content/api/latest/java/org/apache/mesos/Protos.Offer.Operation.GrowVolumeOrBuilder.html
--
diff --git 
a/content/api/latest/java/org/apache/mesos/Protos.Offer.Operation.GrowVolumeOrBuilder.html
 
b/content/api/latest/java/org/apache/mesos/Protos.Offer.Operation.GrowVolumeOrBuilder.html
new file mode 100644
index 000..4917eb1
--- /dev/null
+++ 
b/content/api/latest/java/org/apache/mesos/Protos.Offer.Operation.GrowVolumeOrBuilder.html
@@ -0,0 +1,307 @@
+http://www.w3.org/TR/html4/loose.dtd";>
+
+
+
+
+Protos.Offer.Operation.GrowVolumeOrBuilder
+
+
+
+
+
+var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance 
Methods"],4:["t3","Abstract Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+
+
+JavaScript is disabled on your browser.
+
+
+
+
+
+Skip navigation links
+
+
+
+
+Package
+Class
+Tree
+Deprecated
+Index
+Help
+
+
+
+
+Prev Class
+Next Class
+
+
+Frames
+No Frames
+
+
+All Classes
+
+
+
+
+
+
+
+Summary: 
+Nested | 
+Field | 
+Constr | 
+Method
+
+
+Detail: 
+Field | 
+Constr | 
+Method
+
+
+
+
+
+
+
+
+org.apache.mesos
+Interface Protos.Offer.Operation.GrowVolumeOrBuilder
+
+
+
+
+
+
+All Known Implementing Classes:
+Protos.Offer.Operation.GrowVolume, Protos.Offer.Operation.GrowVolume.Builder
+
+
+Enclosing class:
+Protos.Offer.Operation
+
+
+
+public static interface Protos.Offer.Operation.GrowVolumeOrBuilder
+
+
+
+
+
+
+
+
+
+
+
+Method Summary
+
+All Methods Instance Methods Abstract Methods 
+
+Modifier and Type
+Method and Description
+
+
+Protos.Resource
+getAddition()
+required .mesos.Resource addition = 2;
+
+
+
+Protos.ResourceOrBuilder
+getAdditionOrBuilder()
+required .mesos.Resource addition = 2;
+
+
+
+Protos.Resource
+getVolume()
+required .mesos.Resource volume = 1;
+
+
+
+Protos.ResourceOrBuilder
+getVolumeOrBuilder()
+required .mesos.Resource volume = 1;
+
+
+
+boolean
+hasAddition()
+required .mesos.Resource addition = 2;
+
+
+
+boolean
+hasVolume()
+required .mesos.Resource volume = 1;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Method Detail
+
+
+
+
+
+hasVolume
+boolean hasVolume()
+required .mesos.Resource volume = 1;
+
+
+
+
+
+
+
+getVolume
+Protos.Resource getVolume()
+required .mesos.Resource volume = 1;
+
+
+
+
+
+
+
+getVolumeOrBuilder
+Protos.ResourceOrBuilder getVolumeOrBuilder()
+required .mesos.Resource volume = 1;
+
+
+
+
+
+
+
+hasAddition
+boolean hasAddition()
+required .mesos.Resource addition = 2;
+
+
+
+
+
+
+
+getAddition
+Protos.Resource getAddition()
+required .mesos.Resource addition = 2;
+
+
+
+
+
+
+
+getAdditionOrBuilder
+Protos.ResourceOrBuilder getAdditionOrBuilder()
+required .mesos.Resource addition = 2;
+
+
+
+
+
+
+
+
+
+
+
+
+
+Skip navigation links
+
+
+
+
+Package
+Class
+Tree
+Deprecated
+Index
+Help
+
+
+
+
+Prev Class
+Next Class
+
+
+Frames
+No Frames
+
+
+All Classes
+
+
+
+
+
+
+
+Summary: 
+Nested | 
+Field | 
+Constr | 
+Method
+
+
+Detail: 
+Field | 
+Constr | 
+Method
+
+
+
+
+
+
+
+

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/47a93e53/content/api/latest/java/org/apache/mesos/Protos.Offer.Operation.Launch.html
--
diff --git 
a/content/api/latest/java/org/apache/mesos/Protos.Offer.Operation.Launch.html 
b/content/api/latest/java/org/apache/mesos/Protos.Offer.Operation.Launch.html
index 4211e33..1943351 100644
--- 
a/content/api/latest/java/org/apache/mesos/Protos.Offer.Operation.Launch.html
+++ 
b/content/api/latest/java/org/apache/mesos/Protos.Offer.Operation.Launch.html
@@ -46,7 +46,7 @@ var activeTableTab = "activeTableTab";
 
 
 
-Prev Class
+Prev Class
 Next Class
 
 
@@ -790,7 +790,7 @@ public static final  PARSER
 
 
 
-Prev Class
+Prev Class
 Next Class
 
 

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/47a93e53/content/api/latest/java/org/apache/mesos/Protos.Offer.Operation.ReserveOrBuilder.html
--
diff --git 
a/content/api/latest/java/org/apache/mesos/Protos.Offer.Operation.ReserveOrBuilder.html
 
b/content/api/latest/java/org/apache/mesos/Protos.Offer.Operation.ReserveOrBu

[15/21] mesos-site git commit: Updated the website built from mesos SHA: a483fb0.

2018-05-03 Thread git-site-role
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/47a93e53/content/api/latest/c++/mock__csi__plugin_8hpp.html
--
diff --git a/content/api/latest/c++/mock__csi__plugin_8hpp.html 
b/content/api/latest/c++/mock__csi__plugin_8hpp.html
index d6f436d..becd41a 100644
--- a/content/api/latest/c++/mock__csi__plugin_8hpp.html
+++ b/content/api/latest/c++/mock__csi__plugin_8hpp.html
@@ -122,7 +122,7 @@ Macros
 
 Value:MOCK_METHOD3(name, 
grpc::Status(   \  grpc::ServerContext* context,
  \  const csi::v0::name##Request*
 request,
 \  csi::v0::name##Response*
 response));process::http::requestFuture< Response > request(const Request &request, 
bool streamedResponse=false)Asynchronously sends an 
HTTP request to the process and returns the HTTP response once the entire 
res...
 process::network::openssl::contextSSL_CTX * context()
-mesos::internal::tests::v1::scheduler::Responsemesos::v1::scheduler::Response ResponseDefinition: mesos.hpp:2604
+mesos::internal::tests::v1::scheduler::Responsemesos::v1::scheduler::Response ResponseDefinition: mesos.hpp:2660
 os::Shell::nameconstexpr const char * nameDefinition: shell.hpp:43
 
 

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/47a93e53/content/api/latest/c++/namespacemembers_func_g.html
--
diff --git a/content/api/latest/c++/namespacemembers_func_g.html 
b/content/api/latest/c++/namespacemembers_func_g.html
index 15bbc19..071de77 100644
--- a/content/api/latest/c++/namespacemembers_func_g.html
+++ b/content/api/latest/c++/namespacemembers_func_g.html
@@ -436,7 +436,7 @@
 : docker::spec
 
 getResourceConversions()
-: mesos
+: mesos
 
 getResourceProviderId()
 : mesos
@@ -559,6 +559,11 @@
 gmtime_r()
 : os
 
+GROW_VOLUME()
+: mesos::internal::tests::common
+, mesos::internal::tests::internal
+, mesos::internal::tests::v1
+
 gzip()
 : mesos::internal::command
 

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/47a93e53/content/api/latest/c++/namespacemembers_func_s.html
--
diff --git a/content/api/latest/c++/namespacemembers_func_s.html 
b/content/api/latest/c++/namespacemembers_func_s.html
index 1108598..60a318c 100644
--- a/content/api/latest/c++/namespacemembers_func_s.html
+++ b/content/api/latest/c++/namespacemembers_func_s.html
@@ -199,6 +199,11 @@
 shell()
 : os
 
+SHRINK_VOLUME()
+: mesos::internal::tests::common
+, mesos::internal::tests::internal
+, mesos::internal::tests::v1
+
 shutdown()
 : mesos::internal::local
 
@@ -207,7 +212,7 @@
 
 size()
 : fs
-, os::stat
+, os::stat
 
 sleep()
 : os
@@ -220,11 +225,11 @@
 , routing
 
 soft_limit_in_bytes()
-: cgroups::memory
+: cgroups::memory
 
 spawn()
 : os
-, process
+, process
 
 split()
 : strings
@@ -238,7 +243,7 @@
 stat()
 : cgroups::cpuacct
 , cgroups
-, os::stat::internal
+, os::stat::internal
 
 statistics()
 : routing::link
@@ -248,7 +253,7 @@
 , routing::queueing::internal
 
 status()
-: proc
+: proc
 
 streamingMediaType()
 : mesos::internal

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/47a93e53/content/api/latest/c++/namespacemembers_g.html
--
diff --git a/content/api/latest/c++/namespacemembers_g.html 
b/content/api/latest/c++/namespacemembers_g.html
index 962f066..aed9647 100644
--- a/content/api/latest/c++/namespacemembers_g.html
+++ b/content/api/latest/c++/namespacemembers_g.html
@@ -574,6 +574,11 @@
 gmtime_r()
 : os
 
+GROW_VOLUME()
+: mesos::internal::tests::common
+, mesos::internal::tests::internal
+, mesos::internal::tests::v1
+
 gzip()
 : mesos::internal::command
 

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/47a93e53/content/api/latest/c++/namespacemembers_l.html
--
diff --git a/content/api/latest/c++/namespacemembers_l.html 
b/content/api/latest/c++/namespacemembers_l.html
index bec8b88..cdb5961 100644
--- a/content/api/latest/c++/namespacemembers_l.html
+++ b/content/api/latest/c++/namespacemembers_l.html
@@ -177,7 +177,7 @@
 : internal::windows
 
 loop()
-: process
+: process
 
 LOW
 : cgroups::memory::pressure

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/47a93e53/content/api/latest/c++/namespacemembers_s.html
--
diff --git a/content/api/latest/c++/namespacemembers_s.html 
b/content/api/latest/c++/namespacemembers_s.html
index 0812d51..38bcceb 100644
--- a/content/api/latest/c++/namespacemembers_s.html
+++ b/content/api/latest/c++/namespacemembers_s.html
@@ -217,6 +217,11 @@
 shell()
 : os
 
+SHRINK_VOLUME()
+: mesos::internal::tests::common
+, mesos::internal::tests::internal
+, mesos::internal::tests::v1
+
 shutdown()
 : mesos::internal::local
 
@@ -327,7 +332,7 @@
 : process
 
 subsystems()
-: cgroups
+: cgroups

[01/21] mesos-site git commit: Updated the website built from mesos SHA: a483fb0.

2018-05-03 Thread git-site-role
Repository: mesos-site
Updated Branches:
  refs/heads/asf-site 131ab2d2b -> 47a93e531


http://git-wip-us.apache.org/repos/asf/mesos-site/blob/47a93e53/content/sitemap.xml
--
diff --git a/content/sitemap.xml b/content/sitemap.xml
index d77a0e4..11db244 100644
--- a/content/sitemap.xml
+++ b/content/sitemap.xml
@@ -2,18302 +2,18326 @@
 http://www.sitemaps.org/schemas/sitemap/0.9";>
   
 http://mesos.apache.org/downloads/
-2018-05-03T00:00:00+00:00
+2018-05-04T00:00:00+00:00
   
   
 http://mesos.apache.org/documentation/latest/
-2018-05-03T00:00:00+00:00
+2018-05-04T00:00:00+00:00
   
   
 
http://mesos.apache.org/documentation/latest/fetcher-cache-internals/
-2018-05-03T00:00:00+00:00
+2018-05-04T00:00:00+00:00
   
   
 http://mesos.apache.org/documentation/latest/allocation-module/
-2018-05-03T00:00:00+00:00
+2018-05-04T00:00:00+00:00
   
   
 
http://mesos.apache.org/documentation/latest/api-client-libraries/
-2018-05-03T00:00:00+00:00
+2018-05-04T00:00:00+00:00
   
   
 
http://mesos.apache.org/documentation/latest/attributes-resources/
-2018-05-03T00:00:00+00:00
+2018-05-04T00:00:00+00:00
   
   
 http://mesos.apache.org/documentation/latest/reconciliation/
-2018-05-03T00:00:00+00:00
+2018-05-04T00:00:00+00:00
   
   
 http://mesos.apache.org/documentation/latest/architecture/
-2018-05-03T00:00:00+00:00
+2018-05-04T00:00:00+00:00
   
   
 http://mesos.apache.org/documentation/latest/operator-http-api/
-2018-05-03T00:00:00+00:00
+2018-05-04T00:00:00+00:00
   
   
 
http://mesos.apache.org/documentation/latest/advanced-contribution/
-2018-05-03T00:00:00+00:00
+2018-05-04T00:00:00+00:00
   
   
 
http://mesos.apache.org/documentation/latest/mesos-containerizer/
-2018-05-03T00:00:00+00:00
+2018-05-04T00:00:00+00:00
   
   
 http://mesos.apache.org/documentation/latest/fault-domains/
-2018-05-03T00:00:00+00:00
+2018-05-04T00:00:00+00:00
   
   
 http://mesos.apache.org/documentation/latest/versioning/
-2018-05-03T00:00:00+00:00
+2018-05-04T00:00:00+00:00
   
   
 
http://mesos.apache.org/documentation/latest/framework-rate-limiting/
-2018-05-03T00:00:00+00:00
+2018-05-04T00:00:00+00:00
   
   
 http://mesos.apache.org/documentation/latest/containerizers/
-2018-05-03T00:00:00+00:00
+2018-05-04T00:00:00+00:00
   
   
 http://mesos.apache.org/documentation/latest/shared-resources/
-2018-05-03T00:00:00+00:00
+2018-05-04T00:00:00+00:00
   
   
 http://mesos.apache.org/documentation/latest/oversubscription/
-2018-05-03T00:00:00+00:00
+2018-05-04T00:00:00+00:00
   
   
 http://mesos.apache.org/documentation/latest/maintenance/
-2018-05-03T00:00:00+00:00
+2018-05-04T00:00:00+00:00
   
   
 http://mesos.apache.org/documentation/latest/developer-guide/
-2018-05-03T00:00:00+00:00
+2018-05-04T00:00:00+00:00
   
   
 
http://mesos.apache.org/documentation/latest/markdown-style-guide/
-2018-05-03T00:00:00+00:00
+2018-05-04T00:00:00+00:00
   
   
 http://mesos.apache.org/documentation/latest/operational-guide/
-2018-05-03T00:00:00+00:00
+2018-05-04T00:00:00+00:00
   
   
 http://mesos.apache.org/documentation/latest/fetcher/
-2018-05-03T00:00:00+00:00
+2018-05-04T00:00:00+00:00
   
   
 http://mesos.apache.org/documentation/latest/frameworks/
-2018-05-03T00:00:00+00:00
+2018-05-04T00:00:00+00:00
   
   
 http://mesos.apache.org/documentation/latest/reporting-an-issue/
-2018-05-03T00:00:00+00:00
+2018-05-04T00:00:00+00:00
   
   
 http://mesos.apache.org/documentation/latest/configuration/
-2018-05-03T00:00:00+00:00
+2018-05-04T00:00:00+00:00
   
   
 http://mesos.apache.org/documentation/latest/cmake/
-2018-05-03T00:00:00+00:00
+2018-05-04T00:00:00+00:00
   
   
 http://mesos.apache.org/documentation/latest/upgrades/
-2018-05-03T00:00:00+00:00
+2018-05-04T00:00:00+00:00
   
   
 http://mesos.apache.org/documentation/latest/scheduler-http-api/
-2018-05-03T00:00:00+00:00
+2018-05-04T00:00:00+00:00
   
   
 http://mesos.apache.org/documentation/latest/task-state-reasons/
-2018-05-03T00:00:00+00:00
+2018-05-04T00:00:00+00:00
   
   
 
http://mesos.apache.org/documentation/latest/nested-container-and-task-group/
-2018-05-03T00:00:00+00:00
+2018-05-04T00:00:00+00:00
   
   
 http://mesos.apache.org/documentation/latest/secrets/
-2018-05-03T00:00:00+00:00
+2018-05-04T00:00:00+00:00
   
   
 http://mesos.apache.org/documentation/latest/authentication/
-2018-05-03T00:00:00+00:00
+2018-05-04T00:00:00+00:00
   
   
 http://mesos.apache.org/documentation/latest/roles/
-2018-05-03T00:00:00+00:00
+2018-05-04T00:00:00+00:00
   
   
 http://mesos.apache.org/documentation/latest/

[18/21] mesos-site git commit: Updated the website built from mesos SHA: a483fb0.

2018-05-03 Thread git-site-role
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/47a93e53/content/api/latest/c++/index.hhc
--
diff --git a/content/api/latest/c++/index.hhc b/content/api/latest/c++/index.hhc
index d8b598f..33e7ddc 100644
--- a/content/api/latest/c++/index.hhc
+++ b/content/api/latest/c++/index.hhc
@@ -2209,6 +2209,7 @@
 
 
 
+
 
 
 
@@ -2529,6 +2530,7 @@
   
   
   
+  
   
   
 
@@ -18456,6 +18458,7 @@
 
 
 
+
 
 
   
@@ -21189,6 +21192,7 @@
 
 
 
+
 
 
 
@@ -21570,6 +21574,8 @@
   
   
   
+  
+  
   
   
   
@@ -25010,6 +25016,9 @@
   
   
   
+  
+  
+  
   
   
   
@@ -25034,6 +25043,9 @@
   
   
   
+  
+  
+  
   
   
   



[11/21] mesos-site git commit: Updated the website built from mesos SHA: a483fb0.

2018-05-03 Thread git-site-role
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/47a93e53/content/api/latest/c++/src_2master_2metrics_8hpp_source.html
--
diff --git a/content/api/latest/c++/src_2master_2metrics_8hpp_source.html 
b/content/api/latest/c++/src_2master_2metrics_8hpp_source.html
index 4ecbfff..3071315 100644
--- a/content/api/latest/c++/src_2master_2metrics_8hpp_source.html
+++ b/content/api/latest/c++/src_2master_2metrics_8hpp_source.html
@@ -75,7 +75,7 @@
 mesos.hpp
 mesos::internal::master::Metrics::event_queue_dispatchesprocess::metrics::PullGauge event_queue_dispatchesDefinition: metrics.hpp:176
 mesos::internal::master::Metrics::messages_update_slaveprocess::metrics::Counter messages_update_slaveDefinition: metrics.hpp:152
-mesos::internal::tests::v1::scheduler::Callmesos::v1::scheduler::Call CallDefinition: mesos.hpp:2601
+mesos::internal::tests::v1::scheduler::Callmesos::v1::scheduler::Call CallDefinition: mesos.hpp:2657
 mesos::internal::master::Metrics::tasks_unreachableprocess::metrics::PullGauge tasks_unreachableDefinition: metrics.hpp:64
 mesos::internal::master::Metrics::tasks_stagingprocess::metrics::PullGauge tasks_stagingDefinition: metrics.hpp:61
 mesos::internal::master::Metrics::slave_shutdowns_scheduledprocess::metrics::Counter slave_shutdowns_scheduledDefinition: metrics.hpp:191

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/47a93e53/content/api/latest/c++/src_2slave_2http_8hpp_source.html
--
diff --git a/content/api/latest/c++/src_2slave_2http_8hpp_source.html 
b/content/api/latest/c++/src_2slave_2http_8hpp_source.html
index 0c79229..240ef1e 100644
--- a/content/api/latest/c++/src_2slave_2http_8hpp_source.html
+++ b/content/api/latest/c++/src_2slave_2http_8hpp_source.html
@@ -59,7 +59,7 @@
 process::http::requestFuture< Response > request(const Request &request, 
bool streamedResponse=false)Asynchronously sends an 
HTTP request to the process and returns the HTTP response once the entire 
res...
 TryDefinition: 
check.hpp:33
 mesos::internal::slave::Http::stateprocess::Future< process::http::Response > state(const 
process::http::Request &request, const Option< 
process::http::authentication::Principal > &) const 
-mesos::internal::tests::v1::scheduler::Callmesos::v1::scheduler::Call CallDefinition: mesos.hpp:2601
+mesos::internal::tests::v1::scheduler::Callmesos::v1::scheduler::Call CallDefinition: mesos.hpp:2657
 json.hpp
 http.hpp
 mesos::internal::slave::Http::STATISTICS_HELPstatic std::string STATISTICS_HELP()

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/47a93e53/content/api/latest/c++/src_2tests_2containerizer_8hpp_source.html
--
diff --git a/content/api/latest/c++/src_2tests_2containerizer_8hpp_source.html 
b/content/api/latest/c++/src_2tests_2containerizer_8hpp_source.html
index 513ca9d..69ff6a8 100644
--- a/content/api/latest/c++/src_2tests_2containerizer_8hpp_source.html
+++ b/content/api/latest/c++/src_2tests_2containerizer_8hpp_source.html
@@ -90,7 +90,7 @@
 try.hpp
 mesos::internal::slave::Containerizer::resourcesstatic Try< Resources > resources(const Flags 
&flags)
 containerizer.hpp
-mesos::internal::tests::MockExecutorDefinition: mesos.hpp:2387
+mesos::internal::tests::MockExecutorDefinition: mesos.hpp:2443
 mesos::internal::tests::TestContainerizer::TestContainerizerTestContainerizer()
 uuid.hpp
 mesos::internal::slave::Containerizer::waitvirtual process::Future< Option< 
mesos::slave::ContainerTermination > > wait(const ContainerID 
&containerId)=0

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/47a93e53/content/api/latest/c++/src_2tests_2mesos_8hpp.html
--
diff --git a/content/api/latest/c++/src_2tests_2mesos_8hpp.html 
b/content/api/latest/c++/src_2tests_2mesos_8hpp.html
index e2f8704..77123a7 100644
--- a/content/api/latest/c++/src_2tests_2mesos_8hpp.html
+++ b/content/api/latest/c++/src_2tests_2mesos_8hpp.html
@@ -385,6 +385,12 @@ Functions
 template 
 TOffer::Operation mesos::internal::tests::common::DESTROY
 (const TResources &volumes)
  
+template 
+TOffer::Operation mesos::internal::tests::common::GROW_VOLUME
 (const TResource &volume, const TResource &addition)
+ 
+template 
+TOffer::Operation mesos::internal::tests::common::SHRINK_VOLUME
 (const TResource &volume, const TValueScalar &subtract)
+ 
 template 
 TOffer::Operation mesos::internal::tests::common::LAUNCH
 (const std::vector< TTaskInfo > &tasks)
  
@@ -491,6 +497,12 @@ Functions
 template 
 Offer::Operation mesos::internal::tests::internal::DESTROY
 (Args &&...args)
  
+template 
+Offer::Operation m

[19/21] mesos-site git commit: Updated the website built from mesos SHA: a483fb0.

2018-05-03 Thread git-site-role
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/47a93e53/content/api/latest/c++/classmesos_1_1internal_1_1master_1_1Master.html
--
diff --git 
a/content/api/latest/c++/classmesos_1_1internal_1_1master_1_1Master.html 
b/content/api/latest/c++/classmesos_1_1internal_1_1master_1_1Master.html
index 06eb5ea..e09465a 100644
--- a/content/api/latest/c++/classmesos_1_1internal_1_1master_1_1Master.html
+++ b/content/api/latest/c++/classmesos_1_1internal_1_1master_1_1Master.html
@@ -282,6 +282,9 @@ Protected Member Functions
 process::Future< bool 
> authorizeDestroyVolume
 (const Offer::Operation::Destroy &destroy, const Option< process::http::authentication::Principal
 > &principal)
  Authorizes a 
DESTROY operation.  More...
  
+process::Future< bool 
> authorizeResizeVolume
 (const Resource &volume, const Option< process::http::authentication::Principal
 > &principal)
+ Authorizes resize of a 
volume triggered by either GROW_VOLUME or 
SHRINK_VOLUME operations.  More...
+ 
 bool isLaunchExecutor
 (const ExecutorID &executorId, Framework 
*framework, Slave *slave) const 

  
 void addExecutor
 (const ExecutorInfo &executorInfo, Framework 
*framework, Slave 
*slave)
@@ -1598,6 +1601,51 @@ Additional Inherited Members
 
 
 
+
+
+
+
+  
+  
+  
+
+  process::Future 
mesos::internal::master::Master::authorizeResizeVolume 
+  (
+  const Resource & 
+  volume, 
+
+
+  
+  
+  const Option< process::http::authentication::Principal
 > & 
+  principal 
+
+
+  
+  )
+  
+
+  
+  
+  
+protected  
+  
+
+
+
+Authorizes resize of a volume triggered by either GROW_VOLUME 
or SHRINK_VOLUME operations. 
+Returns whether the triggering operation is authorized with the provided 
principal. This function is used for authorization of operations originating 
both from frameworks and operators. Note that operations may be validated AFTER 
authorization, so it's possible that the operation could be malformed.
+Parameters
+  
+volumeThe volume being resized. 

+principalAn Option containing the principal attempting 
this operation.
+  
+  
+
+ReturnsA Future 
containing a boolean value representing the success or failure of this 
authorization. A failed Future implies that validation of the 
operation did not succeed. 
+
+
+
 
 
 

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/47a93e53/content/api/latest/c++/container__daemon__process_8hpp_source.html
--
diff --git a/content/api/latest/c++/container__daemon__process_8hpp_source.html 
b/content/api/latest/c++/container__daemon__process_8hpp_source.html
index 52a1cb9..3ba1e89 100644
--- a/content/api/latest/c++/container__daemon__process_8hpp_source.html
+++ b/content/api/latest/c++/container__daemon__process_8hpp_source.html
@@ -58,7 +58,7 @@
 mesos::internal::slave::ContainerDaemonProcess::launchContainervoid launchContainer()
 mesos::internal::slave::ContainerDaemonProcess::operator=ContainerDaemonProcess & operator=(const 
ContainerDaemonProcess &other)=delete
 mesos.hpp
-mesos::internal::tests::v1::scheduler::Callmesos::v1::scheduler::Call CallDefinition: mesos.hpp:2601
+mesos::internal::tests::v1::scheduler::Callmesos::v1::scheduler::Call CallDefinition: mesos.hpp:2657
 mesos::internal::slave::ContainerDaemonProcess::waitprocess::Future< Nothing > wait()
 agent.hpp
 http.hpp

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/47a93e53/content/api/latest/c++/decoder_8hpp_source.html
--
diff --git a/content/api/latest/c++/decoder_8hpp_source.html 
b/content/api/latest/c++/decoder_8hpp_source.html
index e7b4cb8..a00e22f 100644
--- a/content/api/latest/c++/decoder_8hpp_source.html
+++ b/content/api/latest/c++/decoder_8hpp_source.html
@@ -126,7 +126,7 @@
 process::DataDecoderDefinition: decoder.hpp:56
 Option::isNonebool isNone() const Definition: 
option.hpp:116
 process::http_parsing::FAILUREconstexpr int FAILUREDefinition: decoder.hpp:50
-mesos::internal::tests::v1::scheduler::Responsemesos::v1::scheduler::Response ResponseDefinition: mesos.hpp:2604
+mesos::internal::tests::v1::scheduler::Responsemesos::v1::scheduler::Response ResponseDefinition: mesos.hpp:2660
 process::StreamingResponseDecoder::decodestd::deque< http::Response * > decode(const char *data, 
size_t length)Definition: 
decoder.hpp:560
 process::Owned< gzip::Decompressor 
>
 process::http::Status::stringstatic std::string string(uint16_t code)

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/47a93e53/content/api/latest/c++/devolve_8hpp_source.html
--
diff --git a/content/api/latest/c++/devolve_8hpp_source.html 
b/content/api/latest/c++/devolve_8hpp_source.html
index dbc6

[21/21] mesos-site git commit: Updated the website built from mesos SHA: a483fb0.

2018-05-03 Thread git-site-role
Updated the website built from mesos SHA: a483fb0.


Project: http://git-wip-us.apache.org/repos/asf/mesos-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos-site/commit/47a93e53
Tree: http://git-wip-us.apache.org/repos/asf/mesos-site/tree/47a93e53
Diff: http://git-wip-us.apache.org/repos/asf/mesos-site/diff/47a93e53

Branch: refs/heads/asf-site
Commit: 47a93e5318999b4328b422f35e9daa143fff1318
Parents: 131ab2d
Author: jenkins 
Authored: Fri May 4 01:41:28 2018 +
Committer: jenkins 
Committed: Fri May 4 01:41:28 2018 +

--
 content/api/latest/c++/Nodes.xml|   60 +
 content/api/latest/c++/Tokens.xml   |  198 +
 ...1_1internal_1_1master_1_1Master-members.html |  259 +-
 ...ssmesos_1_1internal_1_1master_1_1Master.html |   48 +
 .../container__daemon__process_8hpp_source.html |2 +-
 content/api/latest/c++/decoder_8hpp_source.html |2 +-
 content/api/latest/c++/devolve_8hpp_source.html |4 +-
 content/api/latest/c++/evolve_8hpp_source.html  |6 +-
 content/api/latest/c++/functions_a.html |9 +-
 content/api/latest/c++/functions_b.html |   22 +-
 content/api/latest/c++/functions_func_a.html|   17 +-
 content/api/latest/c++/functions_func_o.html|6 +-
 content/api/latest/c++/functions_func_p.html|2 +-
 content/api/latest/c++/functions_func_r.html|2 +-
 content/api/latest/c++/functions_func_t.html|2 +-
 content/api/latest/c++/functions_m.html |   10 +-
 content/api/latest/c++/functions_o.html |6 +-
 content/api/latest/c++/functions_p.html |8 +-
 content/api/latest/c++/functions_r.html |   10 +-
 content/api/latest/c++/functions_s.html |   12 +-
 content/api/latest/c++/functions_t.html |   14 +-
 content/api/latest/c++/functions_u.html |6 +-
 content/api/latest/c++/functions_vars_m.html|6 +-
 content/api/latest/c++/functions_vars_r.html|3 +
 content/api/latest/c++/globals_u.html   |6 +-
 content/api/latest/c++/grpc_8hpp_source.html|2 +-
 .../latest/c++/hierarchical_8hpp_source.html|2 +-
 .../c++/http__connection_8hpp_source.html   |4 +-
 ...nclude_2mesos_2v1_2executor_8hpp_source.html |4 +-
 content/api/latest/c++/index.hhc|   12 +
 content/api/latest/c++/index.hhk|  202 +-
 .../api/latest/c++/master_2validation_8hpp.html |4 +
 .../c++/master_2validation_8hpp_source.html |6 +-
 .../api/latest/c++/mock__csi__plugin_8hpp.html  |2 +-
 .../api/latest/c++/namespacemembers_func_g.html |7 +-
 .../api/latest/c++/namespacemembers_func_s.html |   15 +-
 content/api/latest/c++/namespacemembers_g.html  |5 +
 content/api/latest/c++/namespacemembers_l.html  |2 +-
 content/api/latest/c++/namespacemembers_s.html  |7 +-
 content/api/latest/c++/namespacemembers_w.html  |5 +-
 ...al_1_1master_1_1validation_1_1operation.html |   56 +
 ...acemesos_1_1internal_1_1tests_1_1common.html |   78 +
 ...emesos_1_1internal_1_1tests_1_1internal.html |   58 +
 ...mespacemesos_1_1internal_1_1tests_1_1v1.html |   58 +
 .../latest/c++/protobuf__utils_8hpp_source.html |   16 +-
 ...ource__provider_2validation_8hpp_source.html |2 +-
 .../c++/slave_2validation_8hpp_source.html  |2 +-
 content/api/latest/c++/slave_8hpp_source.html   |4 +-
 .../c++/src_2master_2master_8hpp_source.html|  154 +-
 .../c++/src_2master_2metrics_8hpp_source.html   |2 +-
 .../c++/src_2slave_2http_8hpp_source.html   |2 +-
 .../src_2tests_2containerizer_8hpp_source.html  |2 +-
 .../api/latest/c++/src_2tests_2mesos_8hpp.html  |   18 +
 .../c++/src_2tests_2mesos_8hpp_source.html  |  224 +-
 ...otobuf_1_1slave_1_1Capabilities-members.html |5 +-
 ...al_1_1protobuf_1_1slave_1_1Capabilities.html |   14 +
 .../latest/c++/v0__v1executor_8hpp_source.html  |2 +-
 .../c++/v1_2resource__provider_8hpp_source.html |2 +-
 .../latest/c++/v1_2scheduler_8hpp_source.html   |4 +-
 content/api/latest/java/allclasses-frame.html   |6 +
 content/api/latest/java/allclasses-noframe.html |6 +
 content/api/latest/java/constant-values.html|   99 +-
 content/api/latest/java/deprecated-list.html|6 +
 content/api/latest/java/index-all.html  |  618 ++
 .../mesos/Protos.Offer.Operation.Builder.html   |  558 +-
 Offer.Operation.DestroyVolumeOrBuilder.html |4 +-
 ...otos.Offer.Operation.GrowVolume.Builder.html |  769 ++
 .../Protos.Offer.Operation.GrowVolume.html  |  874 ++
 ...tos.Offer.Operation.GrowVolumeOrBuilder.html |  307 +
 .../mesos/Protos.Offer.Operation.Launch.html|4 +-
 ...Protos.Offer.Operation.ReserveOrBuilder.html |4 +-
 ...os.Offer.Operation.ShrinkVolume.Builder.html |  809 ++
 .../Protos.Offer.Operation.ShrinkVolume.html|  889 ++
 ...s.Offer.Operation.ShrinkVolumeOrBuilder.html |  322 +
 .../mesos/Protos.Offer.Operation.T

[12/21] mesos-site git commit: Updated the website built from mesos SHA: a483fb0.

2018-05-03 Thread git-site-role
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/47a93e53/content/api/latest/c++/src_2master_2master_8hpp_source.html
--
diff --git a/content/api/latest/c++/src_2master_2master_8hpp_source.html 
b/content/api/latest/c++/src_2master_2master_8hpp_source.html
index 8c5da64..ea661d4 100644
--- a/content/api/latest/c++/src_2master_2master_8hpp_source.html
+++ b/content/api/latest/c++/src_2master_2master_8hpp_source.html
@@ -52,20 +52,20 @@
 master.hpp  
 
 
-Go to the documentation of this 
file.1 // Licensed to the 
Apache Software Foundation (ASF) under one2 // or more contributor license agreements.  See the NOTICE 
file   
 3 // distributed with this work for 
additional information4 // regarding copyright 
ownership.  The ASF licenses this file5 // to you under the Apache License, Version 2.0 
(the<
 /a>6 // 
"License"); you may not use this file except in 
compliance7 // with the License.  
You may obtain a copy of the License at8 //9 // 
http://www.apache.org/licenses/LICENSE-2.0   10 //   11 // Unless required by 
applicable law or agreed to in writing, software   12 
 // distributed under the License is distributed on an "AS IS" 
BASIS, 
  13 // WITHOUT WARRANTIES OR CONDITIONS OF 
ANY KIND, either express or implied.   14 // See the License for the specific language governing 
permissions and   15 // limitations under the 
License.   16    17 #ifndef __MASTER_HPP__   18 #define __MASTER_HPP__   19    20 #include    21    22 #include    23 #include    24 #include    25 #include    26 #include    27    28 #include 
   29    30 #include    31 #include    32 #include    33<
 /span>  
  34 #include    
35    36 #include    37 #include    38 #include    39 #include    
40    41 #include    
42    43 #include    
44    45 #include    
46    47 #include    48 #include    49 #include    50 #include    51 #include    52 #include    
53    54 #include    
55    
56 #include    57 #include    58 #include    59 #include    60 #include    61 #include    62 #include    63 #include    64 #include    65 #include    66 #include    67 #include    68    69 #include "common/http.hpp"   70 #include "common/protobuf_utils.hpp"<
 /a>   71 #include 
"common/resources_utils.hpp"   
72    73 #include "files/files.hpp"   
74    75 #include "internal/devolve.hpp"   76 #include "internal/evolve.hpp"
77    78 #include "master/constants.hpp"   79 #include "master/flags.hpp"   80 #include "master/machine.hpp"   81 #include "master/metrics.hpp"   82 #include "master/validation.hpp"   
83    84 #include "messages/messages.hpp"   
85    86 namespace process {   87 class RateLimiter; // Forward 
declaration.   88 }   89    90 namespace mesos {   91    92 // Forward declarations.   93 class Authorizer;   94 class ObjectApprovers;   95    96 namespace internal {   97    98 // Forward declarations.   99 namespace registry {  100 class Slaves;  101 }  
102   103 class 
Registry;  104 class Whitel
 istWatcher;  105   106 namespace master {  
107   108 class 
Master;  109 class 
Registrar;  110 class 
SlaveObserver;  111   112 struct BoundedRateLimiter;  
113 struct Framework;  114 struct Role;  115   
116   
117 struct Slave  
118 {  119 Slave(Master* const _master,  120   
SlaveInfo _info,  121 const process::UPID& 
_pid,  
122 const MachineID& 
_machineId,  
123 const std::string& 
_version,  
124 std::vector 
_capabilites, 
 125 const process::Time& _registeredTime,  126 
std::vector _checkpointedResources,  127 const Option& _resourceVersion,  128    
 std::vector executorInfos = 
std::vector(),  129 
std::vector tasks = std::vector());  
130   131   ~Slave();  
132   133   Task* getTask(  134   const FrameworkID& frameworkId,  135   
const TaskID& taskId) const;  136   137   void addTask(Task* task);  138   139   
// Update slave to recover the resources that were 
previously  
 >140   // being used by 
 >`task`.class="lineno">  141   //class="line">  142   
 >// TODO(bmahler): This is a hack for performance. We 
 >need toclass="l

mesos git commit: Remove unknown unreachable tasks when agent reregisters.

2018-05-03 Thread yan
Repository: mesos
Updated Branches:
  refs/heads/master a483fb0d0 -> 520b72985


Remove unknown unreachable tasks when agent reregisters.

A RunTaskMesssage could get dropped for an agent while it's
disconnected from the master and when such an agent goes unreachable
then this dropped task message gets added to the unreachable tasks.
When the agent reregisters, the master sends status updates for the
tasks that the agent reported when re-registering and these tasks are
also removed from the unreachableTasks on the framework but since the
agent doesn't know about the dropped task so it doesn't get removed
from the unreachableTasks leading to a check failure when
this inconsistency is detected during framework removal.

Review: https://reviews.apache.org/r/66644/


Project: http://git-wip-us.apache.org/repos/asf/mesos/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/520b7298
Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/520b7298
Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/520b7298

Branch: refs/heads/master
Commit: 520b729857223aeade345cbdf61209ec4f395ad9
Parents: a483fb0
Author: Megha Sharma 
Authored: Thu May 3 22:09:02 2018 -0700
Committer: Jiang Yan Xu 
Committed: Thu May 3 22:12:17 2018 -0700

--
 src/master/master.cpp |  20 +++
 src/master/master.hpp |   7 +
 src/tests/partition_tests.cpp | 326 +
 3 files changed, 353 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/mesos/blob/520b7298/src/master/master.cpp
--
diff --git a/src/master/master.cpp b/src/master/master.cpp
index c117b8c..7a2f69c 100644
--- a/src/master/master.cpp
+++ b/src/master/master.cpp
@@ -1920,6 +1920,7 @@ void Master::_doRegistryGc(
 }
 
 slaves.unreachable.erase(slave);
+slaves.unreachableTasks.erase(slave);
 numRemovedUnreachable++;
   }
 
@@ -7342,6 +7343,23 @@ void Master::__reregisterSlave(
 recoveredTasks.push_back(std::move(task));
   }
 
+  // All tasks from this agent are now reachable so clean them up from
+  // the master's unreachable task records.
+  if (slaves.unreachableTasks.contains(slaveInfo.id())) {
+foreachkey (FrameworkID frameworkId,
+   slaves.unreachableTasks.at(slaveInfo.id())) {
+  Framework* framework = getFramework(frameworkId);
+  if (framework != nullptr) {
+foreach (TaskID taskId,
+ slaves.unreachableTasks.at(slaveInfo.id()).get(frameworkId)) {
+  framework->unreachableTasks.erase(taskId);
+}
+  }
+}
+  }
+
+  slaves.unreachableTasks.erase(slaveInfo.id());
+
   vector checkpointedResources = google::protobuf::convert(
   std::move(*reregisterSlaveMessage.mutable_checkpointed_resources()));
   vector executorInfos = google::protobuf::convert(
@@ -10889,6 +10907,8 @@ void Master::removeTask(Task* task, bool unreachable)
   << " on agent " << *slave;
   }
 
+  slaves.unreachableTasks[slave->id].put(task->framework_id(), 
task->task_id());
+
   // Remove from framework.
   Framework* framework = getFramework(task->framework_id());
   if (framework != nullptr) { // A framework might not be reregistered yet.

http://git-wip-us.apache.org/repos/asf/mesos/blob/520b7298/src/master/master.hpp
--
diff --git a/src/master/master.hpp b/src/master/master.hpp
index e4f7b45..067a346 100644
--- a/src/master/master.hpp
+++ b/src/master/master.hpp
@@ -1960,6 +1960,13 @@ private:
 // `registry_max_agent_age`, and `registry_max_agent_count` flags.
 LinkedHashMap unreachable;
 
+// This helps us look up all unreachable tasks on an agent so we can remove
+// them from their primary storage `framework.unreachableTasks` when an
+// agent reregisters. This map is bounded by the same GC behavior as
+// `unreachable`. When the agent is GC'd from unreachable it's also
+// erased from `unreachableTasks`.
+hashmap> unreachableTasks;
+
 // Slaves that have been marked gone. We recover this from the
 // registry, so it includes slaves marked as gone by other instances
 // of the master. Note that we use a LinkedHashMap to ensure the order

http://git-wip-us.apache.org/repos/asf/mesos/blob/520b7298/src/tests/partition_tests.cpp
--
diff --git a/src/tests/partition_tests.cpp b/src/tests/partition_tests.cpp
index 606025a..390b7c8 100644
--- a/src/tests/partition_tests.cpp
+++ b/src/tests/partition_tests.cpp
@@ -163,6 +163,332 @@ TEST_F(PartitionTest, PartitionedSlave)
 }
 
 
+// This test verifies that if a `RunTaskMessage` dropped en route to
+// an agent which later becomes unreachable, the task is removed correctly
+// from the master's unreachable task reco

[4/7] mesos-site git commit: Updated the website built from mesos SHA: 520b729.

2018-05-03 Thread git-site-role
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/acf91c02/content/api/latest/c++/hierarchy.html
--
diff --git a/content/api/latest/c++/hierarchy.html 
b/content/api/latest/c++/hierarchy.html
index 456296e..e997206 100644
--- a/content/api/latest/c++/hierarchy.html
+++ b/content/api/latest/c++/hierarchy.html
@@ -644,9 +644,9 @@
  Cprocess::metrics::PushGauge
  Cprocess::metrics::Timer< T >
  Cprocess::metrics::Timer< Milliseconds >
- Cmesos::internal::master::Metrics
- Cmesos::internal::master::allocator::internal::Metrics
- Cmesos::internal::master::allocator::Metrics
+ Cmesos::internal::master::allocator::internal::Metrics
+ Cmesos::internal::master::allocator::Metrics
+ Cmesos::internal::master::Metrics
  Cmesos::internal::log::Metrics
  Cmesos::internal::slave::Metrics
  Cmesos::internal::tests::executor::MockHTTPExecutor< Mesos, 
Event >
@@ -701,21 +701,21 @@
  Cmesos::internal::slave::NvidiaGpuAllocator
  Cmesos::internal::slave::NvidiaVolume
  Cmesos::ObjectApprover::Object
- CJSON::Object
- ►CJvm::Object
- Cjava::io::File
- Cjava::lang::Throwable
- Cjava::net::InetSocketAddress
- CJvm::Null
- ►Corg::apache::log4j::Category
- Corg::apache::log4j::Logger
- Corg::apache::log4j::Level
- Corg::apache::zookeeper::server::NIOServerCnxnFactory
- Corg::apache::zookeeper::server::persistence::FileTxnSnapLog
- Corg::apache::zookeeper::server::SessionTracker
- Corg::apache::zookeeper::server::ZooKeeperServer
- ►Corg::apache::zookeeper::server::ZooKeeperServer::DataTreeBuilder
- Corg::apache::zookeeper::server::ZooKeeperServer::BasicDataTreeBuilder
+ ►CJvm::Object
+ Cjava::io::File
+ Cjava::lang::Throwable
+ Cjava::net::InetSocketAddress
+ CJvm::Null
+ ►Corg::apache::log4j::Category
+ Corg::apache::log4j::Logger
+ Corg::apache::log4j::Level
+ Corg::apache::zookeeper::server::NIOServerCnxnFactory
+ Corg::apache::zookeeper::server::persistence::FileTxnSnapLog
+ Corg::apache::zookeeper::server::SessionTracker
+ Corg::apache::zookeeper::server::ZooKeeperServer
+ ►Corg::apache::zookeeper::server::ZooKeeperServer::DataTreeBuilder
+ Corg::apache::zookeeper::server::ZooKeeperServer::BasicDataTreeBuilder
+ CJSON::Object
  ►Cmesos::ObjectApproverThis interface 
represents a function object returned by the authorizer which can be used 
locally (and synchronously) to check whether a specific object is authorized 

  Cmesos::AcceptingObjectApprover
  Cmesos::ObjectApprovers
@@ -1009,11 +1009,11 @@
  CRepresentation< T >
  ►CRepresentation< 
google::protobuf::Message >
  CJSON::Protobuf
- ►Cmesos::internal::master::Registrar
- Cmesos::internal::tests::MockRegistrar
- ►Cmesos::resource_provider::Registrar
- Cmesos::resource_provider::GenericRegistrar
- Cmesos::resource_provider::MasterRegistrar
+ ►Cmesos::resource_provider::Registrar
+ Cmesos::resource_provider::GenericRegistrar
+ Cmesos::resource_provider::MasterRegistrar
+ ►Cmesos::internal::master::Registrar
+ Cmesos::internal::tests::MockRegistrar
  Cmesos::internal::log::Replica
  Cprocess::http::Request
  Cmesos::internal::RequestMediaTypes
@@ -1022,12 +1022,12 @@
  ►Cmesos::slave::ResourceEstimator
  Cmesos::internal::slave::NoopResourceEstimator
  Cmesos::internal::tests::MockResourceEstimator
- Cmesos::internal::master::Slave::ResourceProvider
- Cmesos::internal::slave::ResourceProvider
+ Cmesos::internal::slave::ResourceProvider
+ Cmesos::internal::master::Slave::ResourceProvider
  Cmesos::internal::ResourceProviderManager
  Cmesos::internal::ResourceProviderMessage
- Cmesos::Resources
- Cmesos::v1::Resources
+ Cmesos::v1::Resources
+ Cmesos::Resources
  Cmesos::internal::slave::state::ResourcesState
  ►Cprocess::http::Response
  Cprocess::http::Accepted
@@ -1090,8 +1090,8 @@
  ►Cshared_ptr
  CSharedHandle
  Cmesos::internal::tests::cluster::Slave
- Cmesos::internal::master::Slave
- Cmesos::internal::master::allocator::internal::HierarchicalAllocatorProcess::Slave
+ Cmesos::internal::master::allocator::internal::HierarchicalAllocatorProcess::Slave
+ Cmesos::internal::master::Slave
  Cmesos::internal::slave::state::SlaveState
  Cprocess::network::internal::Socket< AddressType 
>An abstraction around a socket (file descriptor) 

  Cprocess::network::internal::Socket< inet::Address 
>
@@ -1100,12 +1100,12 @@
  ►Cmesos::internal::master::allocator::Sorter
  Cmesos::internal::master::allocator::DRFSorter
  Cos::Stack
- Cmesos::internal::slave::state::State
- Cmesos::internal::StatusUpdateManagerProcess< IDType, 
CheckpointType, UpdateType >::State
- ►Cmesos::state::State
- Cmesos::state::protobuf::State
+ Cmesos::internal::StatusUpdateManagerProcess< IDType, 
CheckpointType, UpdateType >::StatusUpdateStream::State
+ ►Cmesos::state::State
+ Cmesos::state::protobuf::State
+ Cmesos::internal::slave::state::State
  Cmesos::internal::log::Storage::State
- Cmesos::internal::StatusUpdateManagerProcess< IDType, 
CheckpointType, UpdateType >::StatusUpdateStream::State
+ Cmesos::internal::StatusUpdateManagerP

[6/7] mesos-site git commit: Updated the website built from mesos SHA: 520b729.

2018-05-03 Thread git-site-role
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/acf91c02/content/api/latest/c++/classes.html
--
diff --git a/content/api/latest/c++/classes.html 
b/content/api/latest/c++/classes.html
index 798cb7f..22aabeb 100644
--- a/content/api/latest/c++/classes.html
+++ b/content/api/latest/c++/classes.html
@@ -107,8 +107,8 @@
 Benchmark 
(mesos::internal::log::tool)   Flags (mesos::uri::fetcher)   MesosSchedulerDriverImpl
 (mesos::python)   ProvisionInfo 
(mesos::internal::slave)   UPID (process
 )   
 BindBackend (mesos::internal::slave)   CopyFetcherPlugin::Flags
 (mesos::uri)   MesosTest (mesos::internal::tests)   Proxy (JSON)   UriDiskProfileAdaptor
 (mesos::interna
 l::storage)   
 BlkioSubsystem
 (mesos::internal::slave)   CurlFetcherPlugin::Flags
 (mesos::uri)   Message (process)   ProxyExecutor (mesos::python)   UriDiskProfileAdaptorProcess
 (mes
 os::internal::storage)   
-Boolean (JSON)   HadoopFetcherPlugin::Flags
 (mesos::uri)   MessageEncoder (process)   ProxyScheduler (mesos::python)   URL 
(process::http)   
-BooleanWriter (JSON)   DockerFetcherPlugin::Flags
 (mesos::uri)   MessageEvent (process)   Prune (mesos::internal::master)   URL (zookeeper)   
+Boolean (JSON)   HadoopFetcherPlugin::Flags
 (mesos::uri)   MessageEncoder (process)   ProxyScheduler (mesos::python)   URL (zookeeper)   
+BooleanWriter (JSON)   DockerFetcherPlugin::Flags
 (mesos::uri)   MessageEvent (process)   Prune (mesos::internal::master)   URL 
(process::http)   
 Bound   Flags (mesos::internal::docker)   MetadataManager
 (mesos::internal::slave::docker)   Puller (mesos::internal::slave::docker)   UTSInfo (os)   
 BoundedHashMap   UriDiskProfileAdaptor::Flags
 (mesos::internal::storage)   Jvm::Method   PullGauge (process::metrics)   UUID (id)   
 ControlFlow::Break (process)   Flags (mesos::internal::scheduler)   Jvm::MethodFinder   PushGauge (process::metrics) V  
@@ -118,11 +118,11 @@
   C  
 Flags (mesos::internal::examples)   Jvm::MethodSignature   V0ToV1Adapter (mesos::v1::executor)   
 Flags (mesos::internal::logger)   Metric (process::metrics)   QoSController (mesos::slave)   Value (JSON)   
-FetcherProcess::Cache
 (mesos::internal::slave)   Flags (mesos::internal::logger::rotate)   Metrics (mesos::internal::master)   Queue (process)   TimeSeries::Value (process)   
-Cache   IOSwitchboardServer::Flags
 (mesos::internal::slave)   Metrics
 (mesos::internal::master::allocator::internal)   Quota   Value (cgroups::blkio)   
-Cache (mesos::internal::slave::appc)   NetworkCniIsolatorSetup::Flags
 (mesos::internal::slave)   Metrics
 (mesos::internal::master::allocator)   QuotaInfo (mesos::internal::xfs)   Jvm::Variable   
+FetcherProcess::Cache
 (mesos::internal::slave)   Flags (mesos::internal::logger::rotate)   Metrics
 (mesos::internal::master::allocator::internal)   Queue (process)   Value (cgroups::blkio)   
+Cache   IOSwitchboardServer::Flags
 (mesos::internal::slave)   Metrics
 (mesos::internal::master::allocator)   Quota   TimeSeries::Value (process)   
+Cache (mesos::internal::slave::appc)   NetworkCniIsolatorSetup::Flags
 (mesos::internal::slave)   Metrics (mesos::internal::master)   QuotaInfo (mesos::internal::xfs)   Variable (mesos::state::protobuf)   
 CallableOnce (lambda)   PortMappingUpdate::Flags
 (mesos::internal::slave)   Metrics (mesos::internal::log) R  
-Variable (mesos::state::protobuf)   
+Jvm::Variable   
 CallableOnce<
 R(Args...)> (lambda)   PortMappingStatistics::Flags
 (mesos::internal::slave)   Metrics (mesos::internal::slave)   Variable (mesos::state)   
 Capabilities
 (mesos::internal::protobuf::slave)   MesosContainerizerLaunch::Flags
 (mesos::internal::slave)   MetricsProcess
 (process::metrics::internal)   RateLimiter (process)   Variant 
 ;  
 Capabilities
 (mesos::internal::protobuf::master)   MesosContainerizerMount::Flags
 (mesos::internal::slave)   Microseconds   RateLimiterProcess (process)   Version   
@@ -138,16 +138,16 @@
 Checker (mesos::internal::checks)   Fork (os)   MockDockerContainerizerProcess
 (mesos::internal::tests)   ReaperProcess (process::internal)   Wait (os)   
 CheckerProcess
 (mesos::internal::checks)   HierarchicalAllocatorProcess::Framework
 (mesos::internal::master::allocator::internal)   MockExecutor 
(mesos::internal::tests)   Slave::RecoveryInfo
 (meso
 s::internal::slave)   Warning (flags)   
 Subprocess::ChildHook 
(process)   Framework (mesos::internal::master)   MockFetcherProcess
 (mesos::internal::tests)   Redirect (routing::action)   Warnings 
(flags)   
-Jvm::Class   Framework (mesos::internal::slave)   MockFilter (process)   Registrar (mesos::internal::master)   Watcher   
-ClassicLocale (JSON::internal)   Metrics::Frameworks
 (mesos::internal::master)   MockGarbageCollector
 (mesos::internal::tests)   Registrar (mesos::resource_provider)   WeakFuture (process)   
+Jvm::Class   Framework (mesos::internal::slave)   MockFilter (process)   Registrar (mesos::resource_provider)  

[1/7] mesos-site git commit: Updated the website built from mesos SHA: 520b729.

2018-05-03 Thread git-site-role
Repository: mesos-site
Updated Branches:
  refs/heads/asf-site 47a93e531 -> acf91c027


http://git-wip-us.apache.org/repos/asf/mesos-site/blob/acf91c02/content/blog/feed.xml
--
diff --git a/content/blog/feed.xml b/content/blog/feed.xml
index 657782e..7432c00 100644
--- a/content/blog/feed.xml
+++ b/content/blog/feed.xml
@@ -292,7 +292,7 @@ To learn more about CSI work in Mesos, you can dig into the 
design document <
 
 
 
-

If you are a user and would like to suggest some areas for performance improvement, please let us know by emailing dev@apache.mesos.org.

+

If you are a user and would like to suggest some areas for performance improvement, please let us know by emailing dev@apache.mesos.org.

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/acf91c02/content/blog/performance-working-group-progress-report/index.html -- diff --git a/content/blog/performance-working-group-progress-report/index.html b/content/blog/performance-working-group-progress-report/index.html index ffe6053..bb4b135 100644 --- a/content/blog/performance-working-group-progress-report/index.html +++ b/content/blog/performance-working-group-progress-report/index.html @@ -238,7 +238,7 @@ -If you are a user and would like to suggest some areas for performance improvement, please let us know by emailing dev@apache.mesos.org. +If you are a user and would like to suggest some areas for performance improvement, please let us know by emailing dev@apache.mesos.org.

[5/7] mesos-site git commit: Updated the website built from mesos SHA: 520b729.

2018-05-03 Thread git-site-role
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/acf91c02/content/api/latest/c++/functions_u.html
--
diff --git a/content/api/latest/c++/functions_u.html 
b/content/api/latest/c++/functions_u.html
index 956ac6e..6151032 100644
--- a/content/api/latest/c++/functions_u.html
+++ b/content/api/latest/c++/functions_u.html
@@ -300,11 +300,13 @@
 , mesos::internal::slave::XfsDiskIsolatorProcess
 , mesos::internal::StatusUpdateManagerProcess<
 IDType, CheckpointType, UpdateType >
 , mesos::slave::Isolator
-, process::Clock
 
 Update
 : process::Clock
 
+update()
+: process::Clock
+
 updateAllocation()
 : mesos::allocator::Allocator
 , mesos::internal::master::allocator::internal::HierarchicalAllocatorProcess
@@ -404,7 +406,7 @@
 , mesos::internal::master::allocator::MesosAllocatorProcess
 
 UPID()
-: process::UPID
+: process::UPID
 
 upper()
 : boost::icl::interval_traits<
 Interval< T > >



[2/7] mesos-site git commit: Updated the website built from mesos SHA: 520b729.

2018-05-03 Thread git-site-role
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/acf91c02/content/api/latest/c++/src_2master_2master_8hpp_source.html
--
diff --git a/content/api/latest/c++/src_2master_2master_8hpp_source.html 
b/content/api/latest/c++/src_2master_2master_8hpp_source.html
index ea661d4..9b7e478 100644
--- a/content/api/latest/c++/src_2master_2master_8hpp_source.html
+++ b/content/api/latest/c++/src_2master_2master_8hpp_source.html
@@ -52,20 +52,20 @@
 master.hpp  
 
 
-Go to the documentation of this 
file.1 // Licensed to the 
Apache Software Foundation (ASF) under one2 // or more contributor license agreements.  See the NOTICE 
file   
 3 // distributed with this work for 
additional information4 // regarding copyright 
ownership.  The ASF licenses this file5 // to you under the Apache License, Version 2.0 
(the<
 /a>6 // 
"License"); you may not use this file except in 
compliance7 // with the License.  
You may obtain a copy of the License at8 //9 // 
http://www.apache.org/licenses/LICENSE-2.0   10 //   11 // Unless required by 
applicable law or agreed to in writing, software   12 
 // distributed under the License is distributed on an "AS IS" 
BASIS, 
  13 // WITHOUT WARRANTIES OR CONDITIONS OF 
ANY KIND, either express or implied.   14 // See the License for the specific language governing 
permissions and   15 // limitations under the 
License.   16    17 #ifndef __MASTER_HPP__   18 #define __MASTER_HPP__   19    20 #include    21    22 #include    23 #include    24 #include    25 #include    26 #include    27    28 #include 
   29    30 #include    31 #include    32 #include    33<
 /span>  
  34 #include    
35    36 #include    37 #include    38 #include    39 #include    
40    41 #include    
42    43 #include    
44    45 #include    
46    47 #include    48 #include    49 #include    50 #include    51 #include    52 #include    
53    54 #include    
55    
56 #include    57 #include    58 #include    59 #include    60 #include    61 #include    62 #include    63 #include    64 #include    65 #include    66 #include    67 #include    68    69 #include "common/http.hpp"   70 #include "common/protobuf_utils.hpp"<
 /a>   71 #include 
"common/resources_utils.hpp"   
72    73 #include "files/files.hpp"   
74    75 #include "internal/devolve.hpp"   76 #include "internal/evolve.hpp"
77    78 #include "master/constants.hpp"   79 #include "master/flags.hpp"   80 #include "master/machine.hpp"   81 #include "master/metrics.hpp"   82 #include "master/validation.hpp"   
83    84 #include "messages/messages.hpp"   
85    86 namespace process {   87 class RateLimiter; // Forward 
declaration.   88 }   89    90 namespace mesos {   91    92 // Forward declarations.   93 class Authorizer;   94 class ObjectApprovers;   95    96 namespace internal {   97    98 // Forward declarations.   99 namespace registry {  100 class Slaves;  101 }  
102   103 class 
Registry;  104 class Whitel
 istWatcher;  105   106 namespace master {  
107   108 class 
Master;  109 class 
Registrar;  110 class 
SlaveObserver;  111   112 struct BoundedRateLimiter;  
113 struct Framework;  114 struct Role;  115   
116   
117 struct Slave  
118 {  119 Slave(Master* const _master,  120   
SlaveInfo _info,  121 const process::UPID& 
_pid,  
122 const MachineID& 
_machineId,  
123 const std::string& 
_version,  
124 std::vector 
_capabilites, 
 125 const process::Time& _registeredTime,  126 
std::vector _checkpointedResources,  127 const Option& _resourceVersion,  128    
 std::vector executorInfos = 
std::vector(),  129 
std::vector tasks = std::vector());  
130   131   ~Slave();  
132   133   Task* getTask(  134   const FrameworkID& frameworkId,  135   
const TaskID& taskId) const;  136   137   void addTask(Task* task);  138   139   
// Update slave to recover the resources that were 
previously  
 >140   // being used by 
 >`task`.class="lineno">  141   //class="line">  142   
 >// TODO(bmahler): This is a hack for performance. We 
 >need toclass="l

[3/7] mesos-site git commit: Updated the website built from mesos SHA: 520b729.

2018-05-03 Thread git-site-role
http://git-wip-us.apache.org/repos/asf/mesos-site/blob/acf91c02/content/api/latest/c++/index.hhc
--
diff --git a/content/api/latest/c++/index.hhc b/content/api/latest/c++/index.hhc
index 33e7ddc..260c10f 100644
--- a/content/api/latest/c++/index.hhc
+++ b/content/api/latest/c++/index.hhc
@@ -9774,9 +9774,9 @@
   
   
   
-
 
 
+
 
 
 
@@ -9837,7 +9837,6 @@
 
 
 
-
 
   
   
@@ -9858,6 +9857,7 @@
 
 
   
+
 
   
   
@@ -10171,15 +10171,15 @@
 
 
   
-
-  
-  
-  
 
   
   
   
   
+
+  
+  
+  
 
 
 
@@ -10190,12 +10190,12 @@
   
   
   
-
 
+
 
 
-
 
+
 
 
   
@@ -10278,8 +10278,8 @@
   
   
 
-
 
+
 
 
 
@@ -10290,14 +10290,14 @@
   
   
 
-
-
+
 
   
   
   
+
 
-
+
 
 
   
@@ -10315,6 +10315,7 @@
   
   
   
+
 
   
   
@@ -10322,7 +10323,6 @@
   
   
   
-
 
   
   
@@ -10642,6 +10642,10 @@
   
   
   
+
+  
+  
+  
 
   
   
@@ -10873,24 +10877,24 @@
   
   
   
-
 
+
 
 
   
   
   
-
 
-
+
 
+
 
 
+
 
   
   
   
-
 
 
 

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/acf91c02/content/api/latest/c++/master_2validation_8hpp_source.html
--
diff --git a/content/api/latest/c++/master_2validation_8hpp_source.html 
b/content/api/latest/c++/master_2validation_8hpp_source.html
index 22c9050..227d182 100644
--- a/content/api/latest/c++/master_2validation_8hpp_source.html
+++ b/content/api/latest/c++/master_2validation_8hpp_source.html
@@ -90,7 +90,7 @@
 mesos::internal::master::validation::offer::getOfferOffer * getOffer(Master *master, const OfferID 
&offerId)
 mesos::internal::master::validation::resource::internal::validateSingleResourceProviderOption< Error > validateSingleResourceProvider(const 
google::protobuf::RepeatedPtrField< Resource > &resources)
 cgroups::createTry< Nothing > create(const std::string &hierarchy, 
const std::string &cgroup, bool recursive=false)
-mesos::internal::master::FrameworkDefinition: master.hpp:2208
+mesos::internal::master::FrameworkDefinition: master.hpp:2215
 mesos::internal::master::MasterDefinition: master.hpp:426
 mesos::internal::master::validation::master::message::registerSlaveOption< Error > registerSlave(const RegisterSlaveMessage 
&message)
 

http://git-wip-us.apache.org/repos/asf/mesos-site/blob/acf91c02/content/api/latest/c++/protobuf__utils_8hpp_source.html
--
diff --git a/content/api/latest/c++/protobuf__utils_8hpp_source.html 
b/content/api/latest/c++/protobuf__utils_8hpp_source.html
index b66ebd8..b064c8b 100644
--- a/content/api/latest/c++/protobuf__utils_8hpp_source.html
+++ b/content/api/latest/c++/protobuf__utils_8hpp_source.html
@@ -135,7 +135,7 @@
 mesos::internal::protobuf::createLabelLabel createLabel(const std::string &key, const Option< 
std::string > &value=None())
 uuid.hpp
 process::OwnedDefinition: owned.hpp:36
-mesos::internal::master::FrameworkDefinition: master.hpp:2208
+mesos::internal::master::FrameworkDefinition: master.hpp:2215
 mesos::internal::protobuf::createMasterInfoMasterInfo createMasterInfo(const process::UPID 
&pid)
 mesos::internal::protobuf::getTaskCheckStatusOption< CheckStatusInfo > getTaskCheckStatus(const Task 
&task)
 mesos::internal::protobuf::createOperationStatusOperationStatus createOperationStatus(const OperationState 
&state, const Option< OperationID > &operationId=None(), const 
Option< std::string > &message=None(), const Option< Resources 
> &convertedResources=None(), const Option< id::UUID > 
&statusUUID=None())



[7/7] mesos-site git commit: Updated the website built from mesos SHA: 520b729.

2018-05-03 Thread git-site-role
Updated the website built from mesos SHA: 520b729.


Project: http://git-wip-us.apache.org/repos/asf/mesos-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/mesos-site/commit/acf91c02
Tree: http://git-wip-us.apache.org/repos/asf/mesos-site/tree/acf91c02
Diff: http://git-wip-us.apache.org/repos/asf/mesos-site/diff/acf91c02

Branch: refs/heads/asf-site
Commit: acf91c027dcb044f10b03b9d03c211caf2409c1a
Parents: 47a93e5
Author: jenkins 
Authored: Fri May 4 05:40:32 2018 +
Committer: jenkins 
Committed: Fri May 4 05:40:32 2018 +

--
 content/api/latest/c++/Nodes.xml| 122 +++---
 content/api/latest/c++/classes.html |  56 +--
 content/api/latest/c++/functions_u.html |   6 +-
 content/api/latest/c++/hierarchy.html   | 388 ++-
 content/api/latest/c++/index.hhc|  38 +-
 .../c++/master_2validation_8hpp_source.html |   2 +-
 .../latest/c++/protobuf__utils_8hpp_source.html |   2 +-
 .../c++/src_2master_2master_8hpp_source.html| 148 +++
 content/blog/feed.xml   |   2 +-
 .../index.html  |   2 +-
 10 files changed, 392 insertions(+), 374 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/mesos-site/blob/acf91c02/content/api/latest/c++/Nodes.xml
--
diff --git a/content/api/latest/c++/Nodes.xml b/content/api/latest/c++/Nodes.xml
index 7765128..de63ed7 100644
--- a/content/api/latest/c++/Nodes.xml
+++ b/content/api/latest/c++/Nodes.xml
@@ -37034,10 +37034,6 @@
 


-mesos::internal::master::Metrics
-structmesos_1_1internal_1_1master_1_1Metrics.html
-   
-   
 mesos::internal::master::allocator::internal::Metrics
 
structmesos_1_1internal_1_1master_1_1allocator_1_1internal_1_1Metrics.html

@@ -37046,6 +37042,10 @@
 
structmesos_1_1internal_1_1master_1_1allocator_1_1Metrics.html


+mesos::internal::master::Metrics
+structmesos_1_1internal_1_1master_1_1Metrics.html
+   
+   
 mesos::internal::log::Metrics
 structmesos_1_1internal_1_1log_1_1Metrics.html

@@ -37268,10 +37268,6 @@
 structmesos_1_1ObjectApprover_1_1Object.html


-JSON::Object
-structJSON_1_1Object.html
-   
-   
 Jvm::Object
 classJvm_1_1Object.html
 
@@ -37334,6 +37330,10 @@
 


+JSON::Object
+structJSON_1_1Object.html
+   
+   
 mesos::ObjectApprover
 classmesos_1_1ObjectApprover.html
 
@@ -38526,16 +38526,6 @@
 


-mesos::internal::master::Registrar
-classmesos_1_1internal_1_1master_1_1Registrar.html
-
- 
-  mesos::internal::tests::MockRegistrar
-  
classmesos_1_1internal_1_1tests_1_1MockRegistrar.html
- 
-
-   
-   
 mesos::resource_provider::Registrar
 classmesos_1_1resource__provider_1_1Registrar.html
 
@@ -38550,6 +38540,16 @@
 


+mesos::internal::master::Registrar
+classmesos_1_1internal_1_1master_1_1Registrar.html
+
+ 
+  mesos::internal::tests::MockRegistrar
+  
classmesos_1_1internal_1_1tests_1_1MockRegistrar.html
+ 
+
+   
+   
 mesos::internal::log::Replica
 classmesos_1_1internal_1_1log_1_1Replica.html

@@ -38584,14 +38584,14 @@
 


-mesos::internal::master::Slave::ResourceProvider
-
structmesos_1_1internal_1_1master_1_1Slave_1_1ResourceProvider.html
-   
-   
 mesos::internal::slave::ResourceProvider
 
structmesos_1_1internal_1_1slave_1_1ResourceProvider.html


+mesos::internal::master::Slave::ResourceProvider
+
structmesos_1_1internal_1_1master_1_1Slave_1_1ResourceProvider.html
+   
+   
 mesos::internal::ResourceProviderManager
 classmesos_1_1internal_1_1ResourceProviderManager.html

@@ -38600,14 +38600,14 @@
 
structmesos_1_1internal_1_1ResourceProviderMessage.html


-mesos::Resources
-classmesos_1_1Resources.html
-   
-   
 mesos::v1::Resources
 classmesos_1_1v1_1_1Resources.html