Stored subscribed resources in resource provider manager.

In order to be able to always communicate the aggregated total
resources available on all subscribed resource providers, a resource
provider manager needs to keep track of the resources of all
subscribed resource providers. This commit adds a field for that the
manager's internal data structures for that purpose.

To make assigned 'ResourceProviderID's opaque to users of managers, the
manager assigns provider ids to all resources added.

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


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

Branch: refs/heads/master
Commit: f9ffc24aefee64ef91b50ec48258a15bb99600e5
Parents: f19cc63
Author: Benjamin Bannier <[email protected]>
Authored: Fri Aug 18 10:00:10 2017 -0700
Committer: Jie Yu <[email protected]>
Committed: Fri Aug 18 11:43:56 2017 -0700

----------------------------------------------------------------------
 src/resource_provider/manager.cpp | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mesos/blob/f9ffc24a/src/resource_provider/manager.cpp
----------------------------------------------------------------------
diff --git a/src/resource_provider/manager.cpp 
b/src/resource_provider/manager.cpp
index df5ddf3..7072c36 100644
--- a/src/resource_provider/manager.cpp
+++ b/src/resource_provider/manager.cpp
@@ -120,11 +120,15 @@ struct ResourceProvider
 {
   ResourceProvider(
       const ResourceProviderInfo& _info,
-      const HttpConnection& _http)
-    : info(_info), http(_http) {}
+      const HttpConnection& _http,
+      const Resources& _resources)
+    : info(_info),
+      http(_http),
+      resources(_resources) {}
 
   ResourceProviderInfo info;
   HttpConnection http;
+  Resources resources;
 };
 
 
@@ -297,7 +301,14 @@ void ResourceProviderManagerProcess::subscribe(
     subscribe.resource_provider_info();
   resourceProviderInfo.mutable_id()->CopyFrom(newResourceProviderId());
 
-  ResourceProvider resourceProvider(resourceProviderInfo, http);
+  // Inject the `ResourceProviderID` for all subscribed resources.
+  Resources resources;
+  foreach (Resource resource, subscribe.resources()) {
+    resource.mutable_provider_id()->CopyFrom(resourceProviderInfo.id());
+    resources += resource;
+  }
+
+  ResourceProvider resourceProvider(resourceProviderInfo, http, resources);
 
   Event event;
   event.set_type(Event::SUBSCRIBED);

Reply via email to