[lxc-devel] [PATCH] lxc-ls: Add a few new columns
Stéphane Graber
stgraber at ubuntu.com
Thu Feb 13 16:56:00 UTC 2014
This adds support for:
- memory (total memory)
- ram
- swap
Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
src/lxc/lxc-ls | 43 +++++++++++++++++++++++++++++++++++++++++--
1 file changed, 41 insertions(+), 2 deletions(-)
diff --git a/src/lxc/lxc-ls b/src/lxc/lxc-ls
index fa53fac..c65ae81 100755
--- a/src/lxc/lxc-ls
+++ b/src/lxc/lxc-ls
@@ -111,7 +111,8 @@ def getSubContainers(container):
return None
# Constants
-FIELDS = ("name", "state", "ipv4", "ipv6", "autostart", "pid")
+FIELDS = ("name", "state", "ipv4", "ipv6", "autostart", "pid",
+ "memory", "ram", "swap")
# Begin parsing the command line
parser = argparse.ArgumentParser(description=_("LXC: List containers"),
@@ -254,6 +255,45 @@ for container_name in lxc.list_containers(config_path=nest_lxcpath):
except KeyError:
pass
+ if 'memory' in args.fancy_format or \
+ 'ram' in args.fancy_format or \
+ 'swap' in args.fancy_format:
+
+ if container.running:
+ try:
+ memory_total = int(container.get_cgroup_item(
+ "memory.usage_in_bytes"))
+ except:
+ memory_total = 0
+
+ try:
+ memory_swap = int(container.get_cgroup_item(
+ "memory.memsw.usage_in_bytes"))
+ except:
+ memory_swap = 0
+ else:
+ memory_total = 0
+ memory_swap = 0
+
+ if 'memory' in args.fancy_format:
+ if container.running:
+ entry['memory'] = "%sMB" % round(memory_total / 1048576, 2)
+ else:
+ entry['memory'] = "-"
+
+ if 'ram' in args.fancy_format:
+ if container.running:
+ entry['ram'] = "%sMB" % round(
+ (memory_total - memory_swap) / 1048576, 2)
+ else:
+ entry['ram'] = "-"
+
+ if 'swap' in args.fancy_format:
+ if container.running:
+ entry['swap'] = "%sMB" % round(memory_swap / 1048576, 2)
+ else:
+ entry['swap'] = "-"
+
# Get the IPs
for family, protocol in {'inet': 'ipv4', 'inet6': 'ipv6'}.items():
if protocol in args.fancy_format or args.nesting:
@@ -263,7 +303,6 @@ for container_name in lxc.list_containers(config_path=nest_lxcpath):
entry[protocol] = state
continue
- # FIXME: We should get get_ips working as non-root
if container.running:
if not SUPPORT_SETNS_NET:
entry[protocol] = 'UNKNOWN'
--
1.9.rc1
More information about the lxc-devel
mailing list