Commit 9157421a by Stéphane Graber

python: Update the python scripts for lxcpath

This adds -P/--lxcpath to the various python scripts. Signed-off-by: 's avatarStéphane Graber <stgraber@ubuntu.com> Acked-by: 's avatarSerge E. Hallyn <serge.hallyn@ubuntu.com>
parent 906f8c4d
...@@ -47,6 +47,9 @@ parser.add_argument("-n", dest="container", metavar="CONTAINER", ...@@ -47,6 +47,9 @@ parser.add_argument("-n", dest="container", metavar="CONTAINER",
help=_("Name of the container to add the device to"), help=_("Name of the container to add the device to"),
required=True) required=True)
parser.add_argument("-P", "--lxcpath", dest="lxcpath", metavar="PATH",
help=_("Use specified container path"), default=None)
# Commands # Commands
subparsers = parser.add_subparsers() subparsers = parser.add_subparsers()
subparser_add = subparsers.add_parser('add', help=_('Add a device')) subparser_add = subparsers.add_parser('add', help=_('Add a device'))
...@@ -76,7 +79,8 @@ if not args.name: ...@@ -76,7 +79,8 @@ if not args.name:
args.name = args.device args.name = args.device
## Check that the container is ready ## Check that the container is ready
container = lxc.Container(args.container) container = lxc.Container(args.container, args.lxcpath)
if not container.running: if not container.running:
parser.error("The container must be running.") parser.error("The container must be running.")
......
...@@ -92,6 +92,9 @@ parser = argparse.ArgumentParser(description=_("LXC: List containers"), ...@@ -92,6 +92,9 @@ parser = argparse.ArgumentParser(description=_("LXC: List containers"),
parser.add_argument("-1", dest="one", action="store_true", parser.add_argument("-1", dest="one", action="store_true",
help=_("list one container per line (default when piped)")) help=_("list one container per line (default when piped)"))
parser.add_argument("-P", "--lxcpath", dest="lxcpath", metavar="PATH",
help=_("Use specified container path"), default=None)
parser.add_argument("--active", action="store_true", parser.add_argument("--active", action="store_true",
help=_("list only active containers " help=_("list only active containers "
"(same as --running --frozen)")) "(same as --running --frozen)"))
...@@ -138,7 +141,7 @@ if not os.geteuid() == 0 and (args.fancy or args.state): ...@@ -138,7 +141,7 @@ if not os.geteuid() == 0 and (args.fancy or args.state):
# List of containers, stored as dictionaries # List of containers, stored as dictionaries
containers = [] containers = []
for container_name in lxc.list_containers(): for container_name in lxc.list_containers(config_path=args.lxcpath):
entry = {} entry = {}
entry['name'] = container_name entry['name'] = container_name
...@@ -151,7 +154,7 @@ for container_name in lxc.list_containers(): ...@@ -151,7 +154,7 @@ for container_name in lxc.list_containers():
containers.append(entry) containers.append(entry)
continue continue
container = lxc.Container(container_name) container = lxc.Container(container_name, args.lxcpath)
# Filter by status # Filter by status
if args.state and container.state not in args.state: if args.state and container.state not in args.state:
......
...@@ -64,6 +64,9 @@ container when exiting (with ctrl-a-q). ...@@ -64,6 +64,9 @@ container when exiting (with ctrl-a-q).
If no COMMAND is given and -d is used, the name and IP addresses of the If no COMMAND is given and -d is used, the name and IP addresses of the
container will be printed to the console.""")) container will be printed to the console."""))
parser.add_argument("--lxcpath", "-P", dest="lxcpath", metavar="PATH",
help=_("Use specified container path"), default=None)
parser.add_argument("--orig", "-o", type=str, required=True, parser.add_argument("--orig", "-o", type=str, required=True,
help=_("name of the original container")) help=_("name of the original container"))
...@@ -104,16 +107,21 @@ if not os.geteuid() == 0: ...@@ -104,16 +107,21 @@ if not os.geteuid() == 0:
% (sys.argv[0]))) % (sys.argv[0])))
# Load the orig container # Load the orig container
orig = lxc.Container(args.orig) orig = lxc.Container(args.orig, args.lxcpath)
if not orig.defined: if not orig.defined:
parser.error(_("Source container '%s' doesn't exist." % args.orig)) parser.error(_("Source container '%s' doesn't exist." % args.orig))
# Create the new container paths # Create the new container paths
dest_path = tempfile.mkdtemp(prefix="%s-" % args.orig, dir="@LXCPATH@") if not args.lxcpath:
lxc_path = lxc.default_config_path
else:
lxc_path = args.lxcpath
dest_path = tempfile.mkdtemp(prefix="%s-" % args.orig, dir=lxc_path)
os.mkdir(os.path.join(dest_path, "rootfs")) os.mkdir(os.path.join(dest_path, "rootfs"))
# Setup the new container's configuration # Setup the new container's configuration
dest = lxc.Container(os.path.basename(dest_path)) dest = lxc.Container(os.path.basename(dest_path), args.lxcpath)
dest.load_config(orig.config_file_name) dest.load_config(orig.config_file_name)
dest.set_config_item("lxc.utsname", dest.name) dest.set_config_item("lxc.utsname", dest.name)
dest.set_config_item("lxc.rootfs", os.path.join(dest_path, "rootfs")) dest.set_config_item("lxc.rootfs", os.path.join(dest_path, "rootfs"))
......
...@@ -238,7 +238,8 @@ class Container(_lxc.Container): ...@@ -238,7 +238,8 @@ class Container(_lxc.Container):
if not self.running: if not self.running:
return False return False
attach = ["lxc-attach", "-n", self.name] attach = ["lxc-attach", "-n", self.name,
"-P", self.get_config_path()]
if namespace != "ALL": if namespace != "ALL":
attach += ["-s", namespace] attach += ["-s", namespace]
...@@ -299,7 +300,8 @@ class Container(_lxc.Container): ...@@ -299,7 +300,8 @@ class Container(_lxc.Container):
if not self.running: if not self.running:
return False return False
if subprocess.call(["lxc-console", "-n", self.name, "-t", "%s" % tty], if subprocess.call(["lxc-console", "-n", self.name, "-t", "%s" % tty,
"-P", self.get_config_path()],
universal_newlines=True) != 0: universal_newlines=True) != 0:
return False return False
return True return True
......
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