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",
help=_("Name of the container to add the device to"),
required=True)
parser.add_argument("-P", "--lxcpath", dest="lxcpath", metavar="PATH",
help=_("Use specified container path"), default=None)
# Commands
subparsers = parser.add_subparsers()
subparser_add = subparsers.add_parser('add', help=_('Add a device'))
......@@ -76,7 +79,8 @@ if not args.name:
args.name = args.device
## Check that the container is ready
container = lxc.Container(args.container)
container = lxc.Container(args.container, args.lxcpath)
if not container.running:
parser.error("The container must be running.")
......
......@@ -92,6 +92,9 @@ parser = argparse.ArgumentParser(description=_("LXC: List containers"),
parser.add_argument("-1", dest="one", action="store_true",
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",
help=_("list only active containers "
"(same as --running --frozen)"))
......@@ -138,7 +141,7 @@ if not os.geteuid() == 0 and (args.fancy or args.state):
# List of containers, stored as dictionaries
containers = []
for container_name in lxc.list_containers():
for container_name in lxc.list_containers(config_path=args.lxcpath):
entry = {}
entry['name'] = container_name
......@@ -151,7 +154,7 @@ for container_name in lxc.list_containers():
containers.append(entry)
continue
container = lxc.Container(container_name)
container = lxc.Container(container_name, args.lxcpath)
# Filter by status
if args.state and container.state not in args.state:
......
......@@ -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
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,
help=_("name of the original container"))
......@@ -104,16 +107,21 @@ if not os.geteuid() == 0:
% (sys.argv[0])))
# Load the orig container
orig = lxc.Container(args.orig)
orig = lxc.Container(args.orig, args.lxcpath)
if not orig.defined:
parser.error(_("Source container '%s' doesn't exist." % args.orig))
# 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"))
# 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.set_config_item("lxc.utsname", dest.name)
dest.set_config_item("lxc.rootfs", os.path.join(dest_path, "rootfs"))
......
......@@ -238,7 +238,8 @@ class Container(_lxc.Container):
if not self.running:
return False
attach = ["lxc-attach", "-n", self.name]
attach = ["lxc-attach", "-n", self.name,
"-P", self.get_config_path()]
if namespace != "ALL":
attach += ["-s", namespace]
......@@ -299,7 +300,8 @@ class Container(_lxc.Container):
if not self.running:
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:
return False
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