[mesos] branch master updated: Fixed src/Makefile.am to include Web UI roles tree files.

2020-05-06 Thread asekretenko
This is an automated email from the ASF dual-hosted git repository.

asekretenko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mesos.git


The following commit(s) were added to refs/heads/master by this push:
 new 021554d  Fixed src/Makefile.am to include Web UI roles tree files.
021554d is described below

commit 021554db4628a45c48c67ef4244b434b20cd9e79
Author: Andrei Sekretenko 
AuthorDate: Tue May 5 19:35:37 2020 +0200

Fixed src/Makefile.am to include Web UI roles tree files.

Review: https://reviews.apache.org/r/72473
---
 src/Makefile.am | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/Makefile.am b/src/Makefile.am
index 22506f2..0b18f95 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1976,6 +1976,9 @@ nobase_dist_pkgdata_DATA +=   
\
   webui/app/agents/agents.html \
   webui/app/frameworks/framework.html  \
   webui/app/frameworks/frameworks.html \
+  webui/app/frameworks/roles.html  \
+  webui/app/frameworks/roles-tree.html \
+  webui/app/frameworks/roles-tree-root.html\
   webui/app/maintenance/maintenance.html   \
   webui/app/offers/offers.html \
   webui/app/roles/roles.html   \



[mesos] branch master updated: Added docs for UPDATE_FRAMEWORK call.

2020-05-06 Thread asekretenko
This is an automated email from the ASF dual-hosted git repository.

asekretenko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mesos.git


The following commit(s) were added to refs/heads/master by this push:
 new dd24b24  Added docs for UPDATE_FRAMEWORK call.
dd24b24 is described below

commit dd24b24d83fb6e67929fcb060fed695e8427a12d
Author: Andrei Sekretenko 
AuthorDate: Wed Mar 25 12:15:50 2020 +0100

Added docs for UPDATE_FRAMEWORK call.

Review: https://reviews.apache.org/r/72267
---
 docs/scheduler-http-api.md | 111 +++--
 1 file changed, 108 insertions(+), 3 deletions(-)

diff --git a/docs/scheduler-http-api.md b/docs/scheduler-http-api.md
index 9831d52..a77a9df 100644
--- a/docs/scheduler-http-api.md
+++ b/docs/scheduler-http-api.md
@@ -55,7 +55,7 @@ The response returned from the `SUBSCRIBE` call (see 
[below](#subscribe)) is enc
 
 This is the first step in the communication process between the scheduler and 
the master. This is also to be considered as subscription to the "/scheduler" 
event stream.
 
-To subscribe with the master, the scheduler sends an HTTP POST with a 
`SUBSCRIBE` message including the required FrameworkInfo. Note that if 
"subscribe.framework_info.id" and "FrameworkID" are not set, the master 
considers the scheduler as a new one and subscribes it by assigning it a 
FrameworkID. The HTTP response is a stream in RecordIO format; the event stream 
begins with either a `SUBSCRIBED` event or an `ERROR` event (see details in 
**Events** section). The response also includes th [...]
+To subscribe with the master, the scheduler sends an HTTP POST with a 
`SUBSCRIBE` message including the required FrameworkInfo and the list of 
initially suppressed roles (which must be a subset of roles in FrameworkInfo, 
see the section for `SUPPRESS` call). Note that if 
"subscribe.framework_info.id" and "FrameworkID" are not set, the master 
considers the scheduler as a new one and subscribes it by assigning it a 
FrameworkID. The HTTP response is a stream in RecordIO format; the event st 
[...]
 
 ```
 SUBSCRIBE Request (JSON):
@@ -73,9 +73,10 @@ Connection: close
   "framework_info" : {
 "user" :  "foo",
 "name" :  "Example HTTP Framework",
-"roles": ["test"],
+"roles": ["test1", "test2"],
 "capabilities" : [{"type": "MULTI_ROLE"}]
-  }
+  },
+  "suppressed_roles" : ["test2"]
   }
 }
 
@@ -102,6 +103,11 @@ with a `SUBSCRIBED` event. For further details, see the 
**Disconnections** secti
 
 NOTE: In the old version of the API, (re-)registered callbacks also included 
MasterInfo, which contained information about the master the driver currently 
connected to. With the new API, since schedulers explicitly subscribe with the 
leading master (see details below in **Master Detection** section), it's not 
relevant anymore.
 
+NOTE: By providing a different FrameworkInfo and/or set of suppressed roles,
+re-subscribing scheduler can change some of the fields of FrameworkInfo and the
+set of suppressed roles. Allowed changes and their effects are consistent with
+those that can be performed via `UPDATE_FRAMEWORK` call (see below).
+
 If subscription fails for whatever reason (e.g., invalid request), an HTTP 4xx 
response is returned with the error message as part of the body and the 
connection is closed.
 
 A scheduler can make additional HTTP requests to the "/scheduler" endpoint 
only after it has opened a persistent connection to it by sending a `SUBSCRIBE` 
request and received a `SUBSCRIBED` response. Calls made without subscription 
will result in "403 Forbidden" instead of a "202 Accepted" response. A 
scheduler might also receive a "400 Bad Request" response if the HTTP request 
is malformed (e.g., malformed HTTP headers).
@@ -494,6 +500,105 @@ HTTP/1.1 202 Accepted
 
 ```
 
+### UPDATE_FRAMEWORK
+
+Sent by the scheduler to change fields of its `FrameworkInfo` and/or the set of
+suppressed roles. Allowed changes and their effects are consistent with 
changing
+FrameworkInfo and/or set of suppressed roles when re-subscribing.
+
+ Disallowed updates
+Updating the following `FrameworkInfo` fields is not allowed:
+  * `principal` (mainly because "changing a principal" effectively means
+  a transfer of a framework by an original principal to the new one; secure
+  mechanism for such transfer is yet to be developed)
+  * `user`
+  * `checkpoint`
+
+`UPDATE_FRAMEWORK` call trying to update any of these fields is not valid,
+unlike an attempt to change `user`/`checkpoint` when resubscribing, in which
+case the new value is ignored.
+
+ Updating framework roles
+Updating `framework_info.roles` and `suppressed_roles` is supported.
+In a valid `UPDATE_FRAMEWORK` call, new suppressed roles must be a (potentially
+empty) subset of new framework roles.
+
+Updating roles has the following effects:
+  * After the call is processed, master will be sending o

[mesos] branch 1.9.x updated: Added docs for UPDATE_FRAMEWORK call.

2020-05-06 Thread asekretenko
This is an automated email from the ASF dual-hosted git repository.

asekretenko pushed a commit to branch 1.9.x
in repository https://gitbox.apache.org/repos/asf/mesos.git


The following commit(s) were added to refs/heads/1.9.x by this push:
 new 2474583  Added docs for UPDATE_FRAMEWORK call.
2474583 is described below

commit 247458311cab68b6108bd5cf0723cbfad904f856
Author: Andrei Sekretenko 
AuthorDate: Wed Mar 25 12:15:50 2020 +0100

Added docs for UPDATE_FRAMEWORK call.

Review: https://reviews.apache.org/r/72267
---
 docs/scheduler-http-api.md | 111 +++--
 1 file changed, 108 insertions(+), 3 deletions(-)

diff --git a/docs/scheduler-http-api.md b/docs/scheduler-http-api.md
index 9831d52..a77a9df 100644
--- a/docs/scheduler-http-api.md
+++ b/docs/scheduler-http-api.md
@@ -55,7 +55,7 @@ The response returned from the `SUBSCRIBE` call (see 
[below](#subscribe)) is enc
 
 This is the first step in the communication process between the scheduler and 
the master. This is also to be considered as subscription to the "/scheduler" 
event stream.
 
-To subscribe with the master, the scheduler sends an HTTP POST with a 
`SUBSCRIBE` message including the required FrameworkInfo. Note that if 
"subscribe.framework_info.id" and "FrameworkID" are not set, the master 
considers the scheduler as a new one and subscribes it by assigning it a 
FrameworkID. The HTTP response is a stream in RecordIO format; the event stream 
begins with either a `SUBSCRIBED` event or an `ERROR` event (see details in 
**Events** section). The response also includes th [...]
+To subscribe with the master, the scheduler sends an HTTP POST with a 
`SUBSCRIBE` message including the required FrameworkInfo and the list of 
initially suppressed roles (which must be a subset of roles in FrameworkInfo, 
see the section for `SUPPRESS` call). Note that if 
"subscribe.framework_info.id" and "FrameworkID" are not set, the master 
considers the scheduler as a new one and subscribes it by assigning it a 
FrameworkID. The HTTP response is a stream in RecordIO format; the event st 
[...]
 
 ```
 SUBSCRIBE Request (JSON):
@@ -73,9 +73,10 @@ Connection: close
   "framework_info" : {
 "user" :  "foo",
 "name" :  "Example HTTP Framework",
-"roles": ["test"],
+"roles": ["test1", "test2"],
 "capabilities" : [{"type": "MULTI_ROLE"}]
-  }
+  },
+  "suppressed_roles" : ["test2"]
   }
 }
 
@@ -102,6 +103,11 @@ with a `SUBSCRIBED` event. For further details, see the 
**Disconnections** secti
 
 NOTE: In the old version of the API, (re-)registered callbacks also included 
MasterInfo, which contained information about the master the driver currently 
connected to. With the new API, since schedulers explicitly subscribe with the 
leading master (see details below in **Master Detection** section), it's not 
relevant anymore.
 
+NOTE: By providing a different FrameworkInfo and/or set of suppressed roles,
+re-subscribing scheduler can change some of the fields of FrameworkInfo and the
+set of suppressed roles. Allowed changes and their effects are consistent with
+those that can be performed via `UPDATE_FRAMEWORK` call (see below).
+
 If subscription fails for whatever reason (e.g., invalid request), an HTTP 4xx 
response is returned with the error message as part of the body and the 
connection is closed.
 
 A scheduler can make additional HTTP requests to the "/scheduler" endpoint 
only after it has opened a persistent connection to it by sending a `SUBSCRIBE` 
request and received a `SUBSCRIBED` response. Calls made without subscription 
will result in "403 Forbidden" instead of a "202 Accepted" response. A 
scheduler might also receive a "400 Bad Request" response if the HTTP request 
is malformed (e.g., malformed HTTP headers).
@@ -494,6 +500,105 @@ HTTP/1.1 202 Accepted
 
 ```
 
+### UPDATE_FRAMEWORK
+
+Sent by the scheduler to change fields of its `FrameworkInfo` and/or the set of
+suppressed roles. Allowed changes and their effects are consistent with 
changing
+FrameworkInfo and/or set of suppressed roles when re-subscribing.
+
+ Disallowed updates
+Updating the following `FrameworkInfo` fields is not allowed:
+  * `principal` (mainly because "changing a principal" effectively means
+  a transfer of a framework by an original principal to the new one; secure
+  mechanism for such transfer is yet to be developed)
+  * `user`
+  * `checkpoint`
+
+`UPDATE_FRAMEWORK` call trying to update any of these fields is not valid,
+unlike an attempt to change `user`/`checkpoint` when resubscribing, in which
+case the new value is ignored.
+
+ Updating framework roles
+Updating `framework_info.roles` and `suppressed_roles` is supported.
+In a valid `UPDATE_FRAMEWORK` call, new suppressed roles must be a (potentially
+empty) subset of new framework roles.
+
+Updating roles has the following effects:
+  * After the call is processed, master will be sending off

[mesos] branch master updated: Removed mesos-style transition script.

2020-05-06 Thread asekretenko
This is an automated email from the ASF dual-hosted git repository.

asekretenko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mesos.git


The following commit(s) were added to refs/heads/master by this push:
 new 8335953  Removed mesos-style transition script.
8335953 is described below

commit 83359534cb1b3303fcbae34af3fadd81b7c8cb85
Author: Benjamin Bannier 
AuthorDate: Wed May 6 17:47:37 2020 +0200

Removed mesos-style transition script.

Review: https://reviews.apache.org/r/71300/
---
 support/mesos-style.py | 40 
 1 file changed, 40 deletions(-)

diff --git a/support/mesos-style.py b/support/mesos-style.py
deleted file mode 100755
index 4d9d3b4..000
--- a/support/mesos-style.py
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/usr/bin/env python3
-
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-"""This is a dummy script to ease the transition from mesos-style to pre-commit
-hooks. This script can be removed after we have given contributors enough time
-to adjust their checkouts."""
-
-import sys
-
-error = """\
-'mesos-style.py' was removed in favor of hooks managed by pre-commit.
-
-Linting requires an installation of pre-commit, see
-https://pre-commit.com/#install, e.g.,
-
-$ pip3 install pre-commit
-
-After installing pre-commit, remove existing hooks in '.git/hooks'
-and reinstall hooks with './support/setup-dev.sh'.
-
-$ rm -rfv .git/hooks/*
-$ ./support/setup-dev.sh
-"""
-
-print(error, file=sys.stderr)
-sys.exit(1)



[mesos] branch master updated: Fixed a bug in the agent's draining handler.

2020-05-06 Thread grag
This is an automated email from the ASF dual-hosted git repository.

grag pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mesos.git


The following commit(s) were added to refs/heads/master by this push:
 new ff9f5cc  Fixed a bug in the agent's draining handler.
ff9f5cc is described below

commit ff9f5cc796f6a99302d94de121726cd7b5988f11
Author: Greg Mann 
AuthorDate: Wed May 6 16:35:19 2020 -0700

Fixed a bug in the agent's draining handler.

Previously, when the agent had no tasks or operations and
received a `DrainSlaveMessage`, it would checkpoint the
`DrainConfig` to disk, implicitly placing it into a "draining"
state indefinitely. This patch updates the agent's handler to
avoid checkpointing anything to disk in this case.

The `SlaveTest.DrainInfoInAPIOutputs` test is also removed
and its functionality is moved into the test
`SlaveTest.DrainAgentKillsRunningTask`. The running task in
the latter test allows us to verify agent API outputs both
before and after the task's terminal update is acknowleged.

Review: https://reviews.apache.org/r/72368/
---
 src/slave/slave.cpp   |  12 +++
 src/tests/slave_tests.cpp | 215 +-
 2 files changed, 127 insertions(+), 100 deletions(-)

diff --git a/src/slave/slave.cpp b/src/slave/slave.cpp
index 1a32c81..c828d99 100644
--- a/src/slave/slave.cpp
+++ b/src/slave/slave.cpp
@@ -1074,6 +1074,18 @@ void Slave::drain(
 const UPID& from,
 DrainSlaveMessage&& drainSlaveMessage)
 {
+  if (operations.empty() && frameworks.empty()) {
+LOG(INFO)
+  << "Received DrainConfig " << drainSlaveMessage.config()
+  << (drainConfig.isSome()
+  ? "; previously stored DrainConfig " + stringify(*drainConfig)
+  : "")
+  << "; agent has no stored frameworks, tasks, or operations,"
+ " so draining is already complete";
+
+return;
+  }
+
   hashmap> pendingTaskIds;
   foreachvalue (Framework* framework, frameworks) {
 foreachvalue (const auto& taskMap, framework->pendingTasks) {
diff --git a/src/tests/slave_tests.cpp b/src/tests/slave_tests.cpp
index 5ad04b2..b46e561 100644
--- a/src/tests/slave_tests.cpp
+++ b/src/tests/slave_tests.cpp
@@ -12089,97 +12089,8 @@ TEST_F(
 }
 
 
-// When the agent receives a `DrainSlaveMessage` from the master, the agent's
-// drain info should be visible in the agent's API output.
-TEST_F(SlaveTest, DrainInfoInAPIOutputs)
-{
-  Clock::pause();
-
-  const int GRACE_PERIOD_NANOS = 100;
-
-  Try> master = StartMaster();
-  ASSERT_SOME(master);
-
-  Future slaveRegisteredMessage =
-FUTURE_PROTOBUF(SlaveRegisteredMessage(), _, _);
-
-  StandaloneMasterDetector detector(master.get()->pid);
-
-  slave::Flags slaveFlags = CreateSlaveFlags();
-
-  Try> slave = StartSlave(&detector, slaveFlags);
-  ASSERT_SOME(slave);
-
-  Clock::advance(slaveFlags.registration_backoff_factor);
-
-  AWAIT_READY(slaveRegisteredMessage);
-
-  // Simulate the master sending a `DrainSlaveMessage` to the agent.
-  DurationInfo maxGracePeriod;
-  maxGracePeriod.set_nanoseconds(GRACE_PERIOD_NANOS);
-
-  DrainConfig drainConfig;
-  drainConfig.set_mark_gone(true);
-  drainConfig.mutable_max_grace_period()->CopyFrom(maxGracePeriod);
-
-  DrainSlaveMessage drainSlaveMessage;
-  drainSlaveMessage.mutable_config()->CopyFrom(drainConfig);
-
-  process::post(master.get()->pid, slave.get()->pid, drainSlaveMessage);
-
-  Clock::settle();
-
-  {
-v1::agent::Call call;
-call.set_type(v1::agent::Call::GET_AGENT);
-
-const ContentType contentType = ContentType::PROTOBUF;
-
-process::http::Headers headers = 
createBasicAuthHeaders(DEFAULT_CREDENTIAL);
-headers["Accept"] = stringify(contentType);
-
-Future httpResponse =
-  process::http::post(
-  slave.get()->pid,
-  "api/v1",
-  headers,
-  serialize(contentType, call),
-  stringify(contentType));
-
-AWAIT_EXPECT_RESPONSE_STATUS_EQ(OK().status, httpResponse);
-
-Future responseMessage =
-  deserialize(contentType, httpResponse->body);
-
-AWAIT_READY(responseMessage);
-ASSERT_TRUE(responseMessage->IsInitialized());
-ASSERT_EQ(v1::agent::Response::GET_AGENT, responseMessage->type());
-ASSERT_TRUE(responseMessage->get_agent().has_drain_config());
-EXPECT_EQ(
-drainConfig,
-devolve(responseMessage->get_agent().drain_config()));
-  }
-
-  {
-Future response = process::http::get(
-slave.get()->pid,
-"state",
-None(),
-createBasicAuthHeaders(DEFAULT_CREDENTIAL));
-
-AWAIT_EXPECT_RESPONSE_STATUS_EQ(OK().status, response);
-AWAIT_EXPECT_RESPONSE_HEADER_EQ(APPLICATION_JSON, "Content-Type", 
response);
-
-Try state = JSON::parse(response->body);
-
-ASSERT_SOME(state);
-
-EXPECT_EQ(JSON::protobuf(drainConfig), state->values["drain_config"]);
-  }
-}
-
-
 // When an agent receives a `DrainSlaveMe

[mesos] branch master updated (ff9f5cc -> 06cc8ac)

2020-05-06 Thread grag
This is an automated email from the ASF dual-hosted git repository.

grag pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/mesos.git.


from ff9f5cc  Fixed a bug in the agent's draining handler.
 add 5e77c94  Made the scheduler resources a top-level item in the 
documentation.
 add 1949f52  Added intro docs on running workloads.
 add 06cc8ac  Updated existing documentation for resource limits.

No new revisions were added by this update.

Summary of changes:
 docs/home.md|  16 +-
 docs/nested-container-and-task-group.md |  91 
 docs/running-workloads.md   | 255 
 docs/scheduler-http-api.md  |  93 ++--
 docs/upgrades.md|   5 +
 5 files changed, 385 insertions(+), 75 deletions(-)
 create mode 100644 docs/running-workloads.md



[mesos] branch 1.9.x updated: Fixed a bug in the agent's draining handler.

2020-05-06 Thread grag
This is an automated email from the ASF dual-hosted git repository.

grag pushed a commit to branch 1.9.x
in repository https://gitbox.apache.org/repos/asf/mesos.git


The following commit(s) were added to refs/heads/1.9.x by this push:
 new 35912a2  Fixed a bug in the agent's draining handler.
35912a2 is described below

commit 35912a22081e88ba243d2b690667dff6a90c51d0
Author: Greg Mann 
AuthorDate: Wed May 6 16:35:19 2020 -0700

Fixed a bug in the agent's draining handler.

Previously, when the agent had no tasks or operations and
received a `DrainSlaveMessage`, it would checkpoint the
`DrainConfig` to disk, implicitly placing it into a "draining"
state indefinitely. This patch updates the agent's handler to
avoid checkpointing anything to disk in this case.

The `SlaveTest.DrainInfoInAPIOutputs` test is also removed
and its functionality is moved into the test
`SlaveTest.DrainAgentKillsRunningTask`. The running task in
the latter test allows us to verify agent API outputs both
before and after the task's terminal update is acknowleged.

Review: https://reviews.apache.org/r/72368/
---
 src/slave/slave.cpp   |  12 +++
 src/tests/slave_tests.cpp | 215 +-
 2 files changed, 127 insertions(+), 100 deletions(-)

diff --git a/src/slave/slave.cpp b/src/slave/slave.cpp
index 23d2ddd..7110ff4 100644
--- a/src/slave/slave.cpp
+++ b/src/slave/slave.cpp
@@ -998,6 +998,18 @@ void Slave::drain(
 const UPID& from,
 DrainSlaveMessage&& drainSlaveMessage)
 {
+  if (operations.empty() && frameworks.empty()) {
+LOG(INFO)
+  << "Received DrainConfig " << drainSlaveMessage.config()
+  << (drainConfig.isSome()
+  ? "; previously stored DrainConfig " + stringify(*drainConfig)
+  : "")
+  << "; agent has no stored frameworks, tasks, or operations,"
+ " so draining is already complete";
+
+return;
+  }
+
   hashmap> pendingTaskIds;
   foreachvalue (Framework* framework, frameworks) {
 foreachvalue (const auto& taskMap, framework->pendingTasks) {
diff --git a/src/tests/slave_tests.cpp b/src/tests/slave_tests.cpp
index c147bfc..335a1c4 100644
--- a/src/tests/slave_tests.cpp
+++ b/src/tests/slave_tests.cpp
@@ -11928,97 +11928,8 @@ TEST_F(
 }
 
 
-// When the agent receives a `DrainSlaveMessage` from the master, the agent's
-// drain info should be visible in the agent's API output.
-TEST_F(SlaveTest, DrainInfoInAPIOutputs)
-{
-  Clock::pause();
-
-  const int GRACE_PERIOD_NANOS = 100;
-
-  Try> master = StartMaster();
-  ASSERT_SOME(master);
-
-  Future slaveRegisteredMessage =
-FUTURE_PROTOBUF(SlaveRegisteredMessage(), _, _);
-
-  StandaloneMasterDetector detector(master.get()->pid);
-
-  slave::Flags slaveFlags = CreateSlaveFlags();
-
-  Try> slave = StartSlave(&detector, slaveFlags);
-  ASSERT_SOME(slave);
-
-  Clock::advance(slaveFlags.registration_backoff_factor);
-
-  AWAIT_READY(slaveRegisteredMessage);
-
-  // Simulate the master sending a `DrainSlaveMessage` to the agent.
-  DurationInfo maxGracePeriod;
-  maxGracePeriod.set_nanoseconds(GRACE_PERIOD_NANOS);
-
-  DrainConfig drainConfig;
-  drainConfig.set_mark_gone(true);
-  drainConfig.mutable_max_grace_period()->CopyFrom(maxGracePeriod);
-
-  DrainSlaveMessage drainSlaveMessage;
-  drainSlaveMessage.mutable_config()->CopyFrom(drainConfig);
-
-  process::post(master.get()->pid, slave.get()->pid, drainSlaveMessage);
-
-  Clock::settle();
-
-  {
-v1::agent::Call call;
-call.set_type(v1::agent::Call::GET_AGENT);
-
-const ContentType contentType = ContentType::PROTOBUF;
-
-process::http::Headers headers = 
createBasicAuthHeaders(DEFAULT_CREDENTIAL);
-headers["Accept"] = stringify(contentType);
-
-Future httpResponse =
-  process::http::post(
-  slave.get()->pid,
-  "api/v1",
-  headers,
-  serialize(contentType, call),
-  stringify(contentType));
-
-AWAIT_EXPECT_RESPONSE_STATUS_EQ(OK().status, httpResponse);
-
-Future responseMessage =
-  deserialize(contentType, httpResponse->body);
-
-AWAIT_READY(responseMessage);
-ASSERT_TRUE(responseMessage->IsInitialized());
-ASSERT_EQ(v1::agent::Response::GET_AGENT, responseMessage->type());
-ASSERT_TRUE(responseMessage->get_agent().has_drain_config());
-EXPECT_EQ(
-drainConfig,
-devolve(responseMessage->get_agent().drain_config()));
-  }
-
-  {
-Future response = process::http::get(
-slave.get()->pid,
-"state",
-None(),
-createBasicAuthHeaders(DEFAULT_CREDENTIAL));
-
-AWAIT_EXPECT_RESPONSE_STATUS_EQ(OK().status, response);
-AWAIT_EXPECT_RESPONSE_HEADER_EQ(APPLICATION_JSON, "Content-Type", 
response);
-
-Try state = JSON::parse(response->body);
-
-ASSERT_SOME(state);
-
-EXPECT_EQ(JSON::protobuf(drainConfig), state->values["drain_config"]);
-  }
-}
-
-
 // When an agent receives a `DrainSlaveMessag

[mesos] branch master updated: Added MESOS-10118 to the 1.9.1 CHANGELOG.

2020-05-06 Thread grag
This is an automated email from the ASF dual-hosted git repository.

grag pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mesos.git


The following commit(s) were added to refs/heads/master by this push:
 new 8682b5d  Added MESOS-10118 to the 1.9.1 CHANGELOG.
8682b5d is described below

commit 8682b5ddf8b773beffe8bf0428c9350d6ae59412
Author: Greg Mann 
AuthorDate: Wed May 6 18:07:36 2020 -0700

Added MESOS-10118 to the 1.9.1 CHANGELOG.
---
 CHANGELOG | 1 +
 1 file changed, 1 insertion(+)

diff --git a/CHANGELOG b/CHANGELOG
index a115101..f43ab8d 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -22,6 +22,7 @@ Release Notes - Mesos - Version 1.9.1 (WIP)
   * [MESOS-10041] - Libprocess SSL verification can leak memory.
   * [MESOS-10094] - Master's agent draining VLOG prints incorrect task counts.
   * [MESOS-10096] - Reactivating a draining agent leaves the agent in draining 
state.
+  * [MESOS-10118] - Agent incorrectly handles draining when empty.
 
 ** Improvement
   * [MESOS-9889] - Master CPU high due to unexpected foreachkey behaviour in 
Master::__reregisterSlave.



[mesos] branch 1.9.x updated: Added MESOS-10118 to the 1.9.1 CHANGELOG.

2020-05-06 Thread grag
This is an automated email from the ASF dual-hosted git repository.

grag pushed a commit to branch 1.9.x
in repository https://gitbox.apache.org/repos/asf/mesos.git


The following commit(s) were added to refs/heads/1.9.x by this push:
 new 30b7aae  Added MESOS-10118 to the 1.9.1 CHANGELOG.
30b7aae is described below

commit 30b7aae987c3534af87453e884e1a87841f3a72c
Author: Greg Mann 
AuthorDate: Wed May 6 18:07:36 2020 -0700

Added MESOS-10118 to the 1.9.1 CHANGELOG.
---
 CHANGELOG | 1 +
 1 file changed, 1 insertion(+)

diff --git a/CHANGELOG b/CHANGELOG
index d07f6ce..59ccef6 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -14,6 +14,7 @@ Release Notes - Mesos - Version 1.9.1 (WIP)
   * [MESOS-10041] - Libprocess SSL verification can leak memory.
   * [MESOS-10094] - Master's agent draining VLOG prints incorrect task counts.
   * [MESOS-10096] - Reactivating a draining agent leaves the agent in draining 
state.
+  * [MESOS-10118] - Agent incorrectly handles draining when empty.
 
 ** Improvement
   * [MESOS-9889] - Master CPU high due to unexpected foreachkey behaviour in 
Master::__reregisterSlave.