Const-ified several methods in the sorter interface. Review: https://reviews.apache.org/r/56350
Project: http://git-wip-us.apache.org/repos/asf/mesos/repo Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/7ddfce62 Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/7ddfce62 Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/7ddfce62 Branch: refs/heads/master Commit: 7ddfce62a21fe5eb40d3968f4ccae8c5fb32d4a1 Parents: c07f928 Author: Neil Conway <[email protected]> Authored: Mon Feb 6 13:38:27 2017 -0800 Committer: Neil Conway <[email protected]> Committed: Fri Feb 17 18:30:03 2017 -0800 ---------------------------------------------------------------------- src/master/allocator/sorter/drf/sorter.cpp | 26 ++++++++++++++----------- src/master/allocator/sorter/drf/sorter.hpp | 14 ++++++++----- src/master/allocator/sorter/sorter.hpp | 19 +++++++++--------- 3 files changed, 34 insertions(+), 25 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mesos/blob/7ddfce62/src/master/allocator/sorter/drf/sorter.cpp ---------------------------------------------------------------------- diff --git a/src/master/allocator/sorter/drf/sorter.cpp b/src/master/allocator/sorter/drf/sorter.cpp index ae49fcd..cecf08b 100644 --- a/src/master/allocator/sorter/drf/sorter.cpp +++ b/src/master/allocator/sorter/drf/sorter.cpp @@ -234,23 +234,25 @@ void DRFSorter::update( } -const hashmap<SlaveID, Resources>& DRFSorter::allocation(const string& name) +const hashmap<SlaveID, Resources>& DRFSorter::allocation( + const string& name) const { CHECK(contains(name)); - return allocations[name].resources; + return allocations.at(name).resources; } -const Resources& DRFSorter::allocationScalarQuantities(const string& name) +const Resources& DRFSorter::allocationScalarQuantities( + const string& name) const { CHECK(contains(name)); - return allocations[name].scalarQuantities; + return allocations.at(name).scalarQuantities; } -hashmap<string, Resources> DRFSorter::allocation(const SlaveID& slaveId) +hashmap<string, Resources> DRFSorter::allocation(const SlaveID& slaveId) const { // TODO(jmlvanre): We can index the allocation by slaveId to make this faster. // It is a tradeoff between speed vs. memory. For now we use existing data @@ -270,12 +272,14 @@ hashmap<string, Resources> DRFSorter::allocation(const SlaveID& slaveId) } -Resources DRFSorter::allocation(const string& name, const SlaveID& slaveId) +Resources DRFSorter::allocation( + const string& name, + const SlaveID& slaveId) const { CHECK(contains(name)); - if (allocations[name].resources.contains(slaveId)) { - return allocations[name].resources[slaveId]; + if (allocations.at(name).resources.contains(slaveId)) { + return allocations.at(name).resources.at(slaveId); } return Resources(); @@ -294,8 +298,8 @@ void DRFSorter::unallocated( const Resources& resources) { CHECK(contains(name)); - CHECK(allocations[name].resources.contains(slaveId)); - CHECK(allocations[name].resources[slaveId].contains(resources)); + CHECK(allocations.at(name).resources.contains(slaveId)); + CHECK(allocations.at(name).resources.at(slaveId).contains(resources)); allocations[name].resources[slaveId] -= resources; @@ -427,7 +431,7 @@ bool DRFSorter::contains(const string& name) const } -int DRFSorter::count() +int DRFSorter::count() const { return allocations.size(); } http://git-wip-us.apache.org/repos/asf/mesos/blob/7ddfce62/src/master/allocator/sorter/drf/sorter.hpp ---------------------------------------------------------------------- diff --git a/src/master/allocator/sorter/drf/sorter.hpp b/src/master/allocator/sorter/drf/sorter.hpp index 04d5ffc..9063498 100644 --- a/src/master/allocator/sorter/drf/sorter.hpp +++ b/src/master/allocator/sorter/drf/sorter.hpp @@ -105,13 +105,17 @@ public: const Resources& resources); virtual const hashmap<SlaveID, Resources>& allocation( - const std::string& name); + const std::string& name) const; - virtual const Resources& allocationScalarQuantities(const std::string& name); + virtual const Resources& allocationScalarQuantities( + const std::string& name) const; - virtual hashmap<std::string, Resources> allocation(const SlaveID& slaveId); + virtual hashmap<std::string, Resources> allocation( + const SlaveID& slaveId) const; - virtual Resources allocation(const std::string& name, const SlaveID& slaveId); + virtual Resources allocation( + const std::string& name, + const SlaveID& slaveId) const; virtual const Resources& totalScalarQuantities() const; @@ -123,7 +127,7 @@ public: virtual bool contains(const std::string& name) const; - virtual int count(); + virtual int count() const; private: // Recalculates the share for the client and moves http://git-wip-us.apache.org/repos/asf/mesos/blob/7ddfce62/src/master/allocator/sorter/sorter.hpp ---------------------------------------------------------------------- diff --git a/src/master/allocator/sorter/sorter.hpp b/src/master/allocator/sorter/sorter.hpp index 737b13f..b3029fc 100644 --- a/src/master/allocator/sorter/sorter.hpp +++ b/src/master/allocator/sorter/sorter.hpp @@ -60,7 +60,8 @@ public: // may be a user or a framework. virtual void add(const std::string& client, double weight = 1) = 0; - // Update weight of a client. + // Updates the weight of a client. The client must have previously + // be added to the sorter, but it may currently be inactive. virtual void update(const std::string& client, double weight) = 0; // Removes a client. @@ -81,7 +82,7 @@ public: const Resources& resources) = 0; // Updates a portion of the allocation for the client, in order to - // augment the resources with additional metadata (e.g., volumes) + // augment the resources with additional metadata (e.g., volumes). // This means that the new allocation must not affect the static // roles, or the overall quantities of resources! virtual void update( @@ -98,23 +99,23 @@ public: // Returns the resources that have been allocated to this client. virtual const hashmap<SlaveID, Resources>& allocation( - const std::string& client) = 0; + const std::string& client) const = 0; // Returns the total scalar resource quantities that are allocated to // this client. This omits metadata about dynamic reservations and // persistent volumes; see `Resources::createStrippedScalarQuantity`. virtual const Resources& allocationScalarQuantities( - const std::string& client) = 0; + const std::string& client) const = 0; // Returns the clients that have allocations on this slave. virtual hashmap<std::string, Resources> allocation( - const SlaveID& slaveId) = 0; + const SlaveID& slaveId) const = 0; // Returns the given slave's resources that have been allocated to // this client. virtual Resources allocation( const std::string& client, - const SlaveID& slaveId) = 0; + const SlaveID& slaveId) const = 0; // Returns the total scalar resource quantities in this sorter. This // omits metadata about dynamic reservations and persistent volumes; see @@ -133,12 +134,12 @@ public: virtual std::vector<std::string> sort() = 0; // Returns true if this Sorter contains the specified client, - // either active or deactivated. + // which may be active or inactive. virtual bool contains(const std::string& client) const = 0; // Returns the number of clients this Sorter contains, - // either active or deactivated. - virtual int count() = 0; + // either active or inactive. + virtual int count() const = 0; }; } // namespace allocator {
