Repository: mesos Updated Branches: refs/heads/master b464fdf74 -> 28eda7458
Implemented `CgroupsIsolatorProcess::usage`. Review: https://reviews.apache.org/r/49824/ Project: http://git-wip-us.apache.org/repos/asf/mesos/repo Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/28eda745 Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/28eda745 Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/28eda745 Branch: refs/heads/master Commit: 28eda74583622513fb4d18cf0451c523dec4576c Parents: b464fdf Author: haosdent huang <haosd...@gmail.com> Authored: Wed Jul 27 15:54:34 2016 -0700 Committer: Jie Yu <yujie....@gmail.com> Committed: Wed Jul 27 16:02:34 2016 -0700 ---------------------------------------------------------------------- .../mesos/isolators/cgroups/cgroups.cpp | 27 +++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mesos/blob/28eda745/src/slave/containerizer/mesos/isolators/cgroups/cgroups.cpp ---------------------------------------------------------------------- diff --git a/src/slave/containerizer/mesos/isolators/cgroups/cgroups.cpp b/src/slave/containerizer/mesos/isolators/cgroups/cgroups.cpp index d99d14b..5f59898 100644 --- a/src/slave/containerizer/mesos/isolators/cgroups/cgroups.cpp +++ b/src/slave/containerizer/mesos/isolators/cgroups/cgroups.cpp @@ -283,7 +283,32 @@ Future<Nothing> CgroupsIsolatorProcess::update( Future<ResourceStatistics> CgroupsIsolatorProcess::usage( const ContainerID& containerId) { - return Failure("Not implemented."); + if (!infos.contains(containerId)) { + return Failure("Unknown container"); + } + + list<Future<ResourceStatistics>> usages; + foreachvalue (const Owned<Subsystem>& subsystem, subsystems) { + usages.push_back(subsystem->usage(containerId)); + } + + return await(usages) + .then([containerId](const list<Future<ResourceStatistics>>& _usages) { + ResourceStatistics result; + + foreach (const Future<ResourceStatistics>& statistics, _usages) { + if (statistics.isReady()) { + result.MergeFrom(statistics.get()); + } else { + LOG(WARNING) << "Skipping resource statistic for container " + << containerId << " because: " + << (statistics.isFailed() ? statistics.failure() + : "discarded"); + } + } + + return result; + }); }