Commit 7f8c4031 by Stéphane Graber

lxc-ls: Add lxc.start.auto and lxc.group support

parent ee1e7aa0
...@@ -110,6 +110,8 @@ def getSubContainers(container, lxcpath): ...@@ -110,6 +110,8 @@ def getSubContainers(container, lxcpath):
return json.loads(out) return json.loads(out)
return None return None
# Constants
FIELDS = ("name", "state", "ipv4", "ipv6", "autostart", "pid")
# Begin parsing the command line # Begin parsing the command line
parser = argparse.ArgumentParser(description=_("LXC: List containers"), parser = argparse.ArgumentParser(description=_("LXC: List containers"),
...@@ -137,7 +139,8 @@ parser.add_argument("--stopped", dest="state", action="append_const", ...@@ -137,7 +139,8 @@ parser.add_argument("--stopped", dest="state", action="append_const",
parser.add_argument("--fancy", action="store_true", parser.add_argument("--fancy", action="store_true",
help=_("use fancy output")) help=_("use fancy output"))
parser.add_argument("--fancy-format", type=str, default="name,state,ipv4,ipv6", parser.add_argument("--fancy-format", type=str,
default="name,state,ipv4,ipv6,autostart",
help=_("comma separated list of fields to show")) help=_("comma separated list of fields to show"))
parser.add_argument("--nesting", dest="nesting", action="store_true", parser.add_argument("--nesting", dest="nesting", action="store_true",
...@@ -164,6 +167,10 @@ lxcpath = os.environ.get('NESTED', args.lxcpath) ...@@ -164,6 +167,10 @@ lxcpath = os.environ.get('NESTED', args.lxcpath)
# Turn args.fancy_format into a list # Turn args.fancy_format into a list
args.fancy_format = args.fancy_format.strip().split(",") args.fancy_format = args.fancy_format.strip().split(",")
if set(args.fancy_format) - set(FIELDS):
parser.error(_("Invalid field(s): %s" %
", ".join(list(set(args.fancy_format) - set(FIELDS)))))
# Basic checks # Basic checks
## Check for setns ## Check for setns
SUPPORT_SETNS = os.path.exists("/proc/self/ns") SUPPORT_SETNS = os.path.exists("/proc/self/ns")
...@@ -229,6 +236,18 @@ for container_name in lxc.list_containers(config_path=lxcpath): ...@@ -229,6 +236,18 @@ for container_name in lxc.list_containers(config_path=lxcpath):
elif container.init_pid != -1: elif container.init_pid != -1:
entry['pid'] = str(container.init_pid) entry['pid'] = str(container.init_pid)
if 'autostart' in args.fancy_format or args.nesting:
entry['autostart'] = "NO"
try:
if container.get_config_item("lxc.start.auto") == "1":
entry['autostart'] = "YES"
groups = container.get_config_item("lxc.group")
if len(groups) > 0:
entry['autostart'] = "YES (%s)" % ", ".join(groups)
except KeyError:
pass
# Get the IPs # Get the IPs
for family, protocol in {'inet': 'ipv4', 'inet6': 'ipv6'}.items(): for family, protocol in {'inet': 'ipv4', 'inet6': 'ipv6'}.items():
if protocol in args.fancy_format or args.nesting: if protocol in args.fancy_format or args.nesting:
...@@ -239,8 +258,8 @@ for container_name in lxc.list_containers(config_path=lxcpath): ...@@ -239,8 +258,8 @@ for container_name in lxc.list_containers(config_path=lxcpath):
continue continue
# FIXME: We should get get_ips working as non-root # FIXME: We should get get_ips working as non-root
if container.running and (not SUPPORT_SETNS_NET \ if container.running and (not SUPPORT_SETNS_NET
or os.geteuid() != 0): or os.geteuid() != 0):
entry[protocol] = 'UNKNOWN' entry[protocol] = 'UNKNOWN'
continue continue
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment