You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by bb...@apache.org on 2019/01/11 08:37:44 UTC

[mesos] 01/02: Added resource provider information to v0 agent state endpoint.

This is an automated email from the ASF dual-hosted git repository.

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

commit dd2605efabff656cfba0218855d4b2dbfcba3051
Author: Benjamin Bannier <be...@mesosphere.io>
AuthorDate: Fri Jan 11 09:27:58 2019 +0100

    Added resource provider information to v0 agent state endpoint.
    
    Review: https://reviews.apache.org/r/69661/
---
 src/slave/http.cpp | 34 +++++++++++++++++++++++++++++++---
 1 file changed, 31 insertions(+), 3 deletions(-)

diff --git a/src/slave/http.cpp b/src/slave/http.cpp
index 6ef99fb..e0dc091 100644
--- a/src/slave/http.cpp
+++ b/src/slave/http.cpp
@@ -1276,9 +1276,14 @@ Future<Response> Http::state(
   }
 
   return ObjectApprovers::create(
-      slave->authorizer,
-      principal,
-      {VIEW_FRAMEWORK, VIEW_TASK, VIEW_EXECUTOR, VIEW_FLAGS, VIEW_ROLE})
+             slave->authorizer,
+             principal,
+             {VIEW_FRAMEWORK,
+              VIEW_TASK,
+              VIEW_EXECUTOR,
+              VIEW_FLAGS,
+              VIEW_ROLE,
+              VIEW_RESOURCE_PROVIDER})
     .then(defer(
         slave->self(),
         [this, request](const Owned<ObjectApprovers>& approvers) -> Response {
@@ -1384,6 +1389,29 @@ Future<Response> Http::state(
                 "unreserved_resources_allocated",
                 allocatedResources.unreserved());
 
+            writer->field(
+                "resource_providers",
+                [this, &approvers](JSON::ArrayWriter* writer) {
+                  if (!approvers->approved<VIEW_RESOURCE_PROVIDER>()) {
+                    return;
+                  }
+
+                  foreachvalue (
+                      ResourceProvider* resourceProvider,
+                      slave->resourceProviders) {
+                    agent::Response::GetResourceProviders::ResourceProvider
+                      provider;
+
+                    *provider.mutable_resource_provider_info() =
+                      resourceProvider->info;
+
+                    *provider.mutable_total_resources() =
+                      resourceProvider->totalResources;
+
+                    writer->element(JSON::Protobuf(provider));
+                  }
+                });
+
             writer->field("attributes", Attributes(slave->info.attributes()));
 
             if (slave->master.isSome()) {