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 <[email protected]> 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\": {},"
