You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mesos.apache.org by bm...@apache.org on 2019/07/11 19:45:27 UTC
[mesos] 01/05: Expose non-scalar quantities in /roles consumed
quota.
This is an automated email from the ASF dual-hosted git repository.
bmahler pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mesos.git
commit e24fef8ba27ea8e82ce31eacc252c08fdbdf3c61
Author: Benjamin Mahler <bm...@apache.org>
AuthorDate: Thu Jul 11 13:46:05 2019 -0400
Expose non-scalar quantities in /roles consumed quota.
Review: https://reviews.apache.org/r/71060
---
src/master/master.hpp | 16 ++++++----------
src/tests/role_tests.cpp | 12 ++++++------
2 files changed, 12 insertions(+), 16 deletions(-)
diff --git a/src/master/master.hpp b/src/master/master.hpp
index 9b86155..a44caa4 100644
--- a/src/master/master.hpp
+++ b/src/master/master.hpp
@@ -2707,8 +2707,6 @@ struct Role
frameworks.erase(framework->id());
}
- // TODO(bmahler): Include non-scalar quantities.
- //
// TODO(bmahler): This function is somewhat expensive,
// it should ideally migrate into a field updated in an
// event-driven manner within a role tree structure. Or,
@@ -2733,9 +2731,8 @@ struct Role
// those that are directly subscribed to this role, and we
// need to sum all descendant role allocations.
foreachvalue (Framework* framework, master->frameworks.registered) {
- allocation += ResourceQuantities::fromScalarResources(
- framework->totalUsedResources.scalars()
- .filter(allocatedToRoleSubtree));
+ allocation += ResourceQuantities::fromResources(
+ framework->totalUsedResources.filter(allocatedToRoleSubtree));
}
ResourceQuantities unallocatedReservation;
@@ -2748,14 +2745,13 @@ struct Role
foreachvalue (Slave* slave, master->slaves.registered) {
ResourceQuantities totalReservation =
- ResourceQuantities::fromScalarResources(
- slave->totalResources.scalars()
- .filter(reservedToRoleSubtree));
+ ResourceQuantities::fromResources(
+ slave->totalResources.filter(reservedToRoleSubtree));
ResourceQuantities usedReservation;
foreachvalue (const Resources& r, slave->usedResources) {
- usedReservation += ResourceQuantities::fromScalarResources(
- r.scalars().filter(reservedToRoleSubtree));
+ usedReservation += ResourceQuantities::fromResources(
+ r.filter(reservedToRoleSubtree));
}
unallocatedReservation += totalReservation - usedReservation;
diff --git a/src/tests/role_tests.cpp b/src/tests/role_tests.cpp
index 67830bb..63198b3 100644
--- a/src/tests/role_tests.cpp
+++ b/src/tests/role_tests.cpp
@@ -566,9 +566,8 @@ TEST_F(RoleTest, RolesEndpointContainsConsumedQuota)
.WillOnce(FutureSatisfy(&offer));
slave::Flags agentFlags3 = CreateSlaveFlags();
- agentFlags3.resources = "cpus(role):100;mem(role):1000;"
- "cpus:1000;mem:10000;"
- ";disk:0;ports:[]";
+ agentFlags3.resources = "cpus(role):100;mem(role):1000;ports(role):[100-199]"
+ ";cpus:1000;mem:10000;disk:0;ports:[1000-1999]";
// We need to use the posix launcher to avoid agents
// seeing each other's containers as orphans and
@@ -582,8 +581,8 @@ TEST_F(RoleTest, RolesEndpointContainsConsumedQuota)
// Now we have:
// - Allocated reservation: cpus:1;mem:10
// - Allocated unreserved resources: cpus:10;mem:100
- // - Offered reservation: cpus:100;mem:1000
- // - Offered unreserved resources: cpus:1000;mem:10000
+ // - Offered reservation: cpus:100;mem:1000;ports:100
+ // - Offered unreserved resources: cpus:1000;mem:10000;ports:1000
// Check that the /roles endopint has the correct quota
// consumption information.
@@ -614,7 +613,8 @@ TEST_F(RoleTest, RolesEndpointContainsConsumedQuota)
" \"quota\": {"
" \"consumed\": {"
" \"cpus\": 111.0,"
- " \"mem\": 1110.0"
+ " \"mem\": 1110.0,"
+ " \"ports\": 100.0"
" },"
" \"guarantee\": {},"
" \"limit\": {},"