[lxc-devel] [lxd/master] Bugfixes

stgraber on Github lxc-bot at linuxcontainers.org
Thu Dec 15 17:35:53 UTC 2016


A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 301 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20161215/1d5f6952/attachment.bin>
-------------- next part --------------
From 616c9ce14f134bd7f47cd5a653b6d3d3d4d624e1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 15 Dec 2016 11:03:18 -0500
Subject: [PATCH 01/26] nsexec: Also call setgroups
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This should make some linters happier.

Closes #2724

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 lxd/main_nsexec.go | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/lxd/main_nsexec.go b/lxd/main_nsexec.go
index 8d5c038..49af9d2 100644
--- a/lxd/main_nsexec.go
+++ b/lxd/main_nsexec.go
@@ -38,6 +38,7 @@ package main
 #include <libgen.h>
 #include <ifaddrs.h>
 #include <dirent.h>
+#include <grp.h>
 
 // This expects:
 //  ./lxd forkputfile /source/path <pid> /target/path
@@ -155,8 +156,8 @@ void attach_userns(int pid) {
 				_exit(1);
 			}
 
-			if (setuid(0) < 0) {
-				fprintf(stderr, "Failed setuid to container root user: %s\n", strerror(errno));
+			if (setgroups(0, NULL) < 0) {
+				fprintf(stderr, "Failed setgroups to container root groups: %s\n", strerror(errno));
 				_exit(1);
 			}
 
@@ -164,6 +165,12 @@ void attach_userns(int pid) {
 				fprintf(stderr, "Failed setgid to container root group: %s\n", strerror(errno));
 				_exit(1);
 			}
+
+			if (setuid(0) < 0) {
+				fprintf(stderr, "Failed setuid to container root user: %s\n", strerror(errno));
+				_exit(1);
+			}
+
 		}
 	}
 }

From 78639a3aadf9b420aeb97d8f9d70c65dfd1e880b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 15 Dec 2016 11:24:36 -0500
Subject: [PATCH 02/26] Allow for network-specific lease updates
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This prevents a failure when starting a daemon with multiple networks
that are down (as network bringup was calling lease updates for all of them).

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 lxd/container_lxc.go  |  6 +++---
 lxd/networks.go       |  2 +-
 lxd/networks_utils.go | 25 +++++++++++++++----------
 3 files changed, 19 insertions(+), 14 deletions(-)

diff --git a/lxd/container_lxc.go b/lxd/container_lxc.go
index 5a15ebc..a24b5ce 100644
--- a/lxd/container_lxc.go
+++ b/lxd/container_lxc.go
@@ -314,7 +314,7 @@ func containerLXCCreate(d *Daemon, args containerArgs) (container, error) {
 	}
 
 	// Update lease files
-	networkUpdateStatic(d)
+	networkUpdateStatic(d, "")
 
 	shared.LogInfo("Created container", ctxMap)
 
@@ -2630,7 +2630,7 @@ func (c *containerLXC) Delete() error {
 	}
 
 	// Update lease files
-	networkUpdateStatic(c.daemon)
+	networkUpdateStatic(c.daemon, "")
 
 	shared.LogInfo("Deleted container", ctxMap)
 
@@ -3608,7 +3608,7 @@ func (c *containerLXC) Update(args containerArgs, userRequested bool) error {
 	}
 
 	if needsUpdate {
-		networkUpdateStatic(c.daemon)
+		networkUpdateStatic(c.daemon, "")
 	}
 
 	// Success, update the closure to mark that the changes should be kept.
diff --git a/lxd/networks.go b/lxd/networks.go
index 208a70b..62ed2b9 100644
--- a/lxd/networks.go
+++ b/lxd/networks.go
@@ -1155,7 +1155,7 @@ func (n *network) Start() error {
 		}
 
 		// Update the static leases
-		err = networkUpdateStatic(n.daemon)
+		err = networkUpdateStatic(n.daemon, n.name)
 		if err != nil {
 			return err
 		}
diff --git a/lxd/networks_utils.go b/lxd/networks_utils.go
index 43342b7..b5f2199 100644
--- a/lxd/networks_utils.go
+++ b/lxd/networks_utils.go
@@ -671,24 +671,29 @@ func networkKillDnsmasq(name string, reload bool) error {
 	return nil
 }
 
-func networkUpdateStatic(d *Daemon) error {
+func networkUpdateStatic(d *Daemon, name string) error {
 	// Get all the containers
 	containers, err := dbContainersList(d.db, cTypeRegular)
 	if err != nil {
 		return err
 	}
 
-	// Get all the networks
-	networks, err := dbNetworks(d.db)
-	if err != nil {
-		return err
+	networks := []string{}
+	if name == "" {
+		// Get all the networks
+		networks, err = dbNetworks(d.db)
+		if err != nil {
+			return err
+		}
+	} else {
+		networks = []string{name}
 	}
 
 	// Build a list of dhcp host entries
 	entries := map[string][][]string{}
-	for _, name := range containers {
+	for _, cName := range containers {
 		// Load the container
-		c, err := containerLoadByName(d, name)
+		c, err := containerLoadByName(d, cName)
 		if err != nil {
 			continue
 		}
@@ -712,7 +717,7 @@ func networkUpdateStatic(d *Daemon) error {
 				entries[d["parent"]] = [][]string{}
 			}
 
-			entries[d["parent"]] = append(entries[d["parent"]], []string{d["hwaddr"], name, d["ipv4.address"], d["ipv6.address"]})
+			entries[d["parent"]] = append(entries[d["parent"]], []string{d["hwaddr"], cName, d["ipv4.address"], d["ipv6.address"]})
 		}
 	}
 
@@ -741,7 +746,7 @@ func networkUpdateStatic(d *Daemon) error {
 			lines := []string{}
 			for _, entry := range entries {
 				hwaddr := entry[0]
-				name := entry[1]
+				cName := entry[1]
 				ipv4Address := entry[2]
 				ipv6Address := entry[3]
 
@@ -756,7 +761,7 @@ func networkUpdateStatic(d *Daemon) error {
 				}
 
 				if config["dns.mode"] == "" || config["dns.mode"] == "managed" {
-					line += fmt.Sprintf(",%s", name)
+					line += fmt.Sprintf(",%s", cName)
 				}
 
 				if line == hwaddr {

From 17e75bbae602e6bbbbddbc5b705ef19572c36248 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 15 Dec 2016 12:22:20 -0500
Subject: [PATCH 03/26] action: Update help
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 lxc/action.go | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/lxc/action.go b/lxc/action.go
index 8fece38..15b3569 100644
--- a/lxc/action.go
+++ b/lxc/action.go
@@ -31,19 +31,19 @@ func (c *actionCmd) usage() string {
 	}
 
 	return fmt.Sprintf(i18n.G(
-		`Changes state of one or more containers to %s.
+		`Change state of one or more containers to %s.
 
-lxc %s <name> [<name>...]%s`), c.name, c.name, c.additionalHelp)
+lxc %s [<remote>:]<container> [[<remote>:]<container>...]%s`), c.name, c.name, c.additionalHelp)
 }
 
 func (c *actionCmd) flags() {
 	if c.hasTimeout {
-		gnuflag.IntVar(&c.timeout, "timeout", -1, i18n.G("Time to wait for the container before killing it."))
-		gnuflag.BoolVar(&c.force, "f", false, i18n.G("Force the container to shutdown."))
-		gnuflag.BoolVar(&c.force, "force", false, i18n.G("Force the container to shutdown."))
+		gnuflag.IntVar(&c.timeout, "timeout", -1, i18n.G("Time to wait for the container before killing it"))
+		gnuflag.BoolVar(&c.force, "f", false, i18n.G("Force the container to shutdown"))
+		gnuflag.BoolVar(&c.force, "force", false, i18n.G("Force the container to shutdown"))
 	}
-	gnuflag.BoolVar(&c.stateful, "stateful", false, i18n.G("Store the container state (only for stop)."))
-	gnuflag.BoolVar(&c.stateless, "stateless", false, i18n.G("Ignore the container state (only for start)."))
+	gnuflag.BoolVar(&c.stateful, "stateful", false, i18n.G("Store the container state (only for stop)"))
+	gnuflag.BoolVar(&c.stateless, "stateless", false, i18n.G("Ignore the container state (only for start)"))
 }
 
 func (c *actionCmd) run(config *lxd.Config, args []string) error {

From 48b0c32fda206fac4f75a9317335b73710a90e7e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 15 Dec 2016 12:22:20 -0500
Subject: [PATCH 04/26] config: Update help
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 lxc/config.go | 40 ++++++++++++++++++++--------------------
 1 file changed, 20 insertions(+), 20 deletions(-)

diff --git a/lxc/config.go b/lxc/config.go
index 631589a..73091a4 100644
--- a/lxc/config.go
+++ b/lxc/config.go
@@ -29,7 +29,7 @@ func (c *configCmd) showByDefault() bool {
 }
 
 func (c *configCmd) flags() {
-	gnuflag.BoolVar(&c.expanded, "expanded", false, i18n.G("Whether to show the expanded configuration"))
+	gnuflag.BoolVar(&c.expanded, "expanded", false, i18n.G("Show the expanded configuration"))
 }
 
 func (c *configCmd) configEditHelp() string {
@@ -57,33 +57,33 @@ func (c *configCmd) usage() string {
 	return i18n.G(
 		`Manage configuration.
 
-lxc config device add <[remote:]container> <name> <type> [key=value]...     Add a device to a container.
-lxc config device get <[remote:]container> <name> <key>                     Get a device property.
-lxc config device set <[remote:]container> <name> <key> <value>             Set a device property.
-lxc config device unset <[remote:]container> <name> <key>                   Unset a device property.
-lxc config device list <[remote:]container>                                 List devices for container.
-lxc config device show <[remote:]container>                                 Show full device details for container.
-lxc config device remove <[remote:]container> <name>                        Remove device from container.
-
-lxc config get [remote:][container] <key>                                   Get container or server configuration key.
-lxc config set [remote:][container] <key> <value>                           Set container or server configuration key.
-lxc config unset [remote:][container] <key>                                 Unset container or server configuration key.
-lxc config show [remote:][container] [--expanded]                           Show container or server configuration.
-lxc config edit [remote:][container]                                        Edit container or server configuration in external editor.
+lxc config device add [<remote>:]<container> <device> <type> [key=value...]   Add a device to a container.
+lxc config device get [<remote>:]<container> <device> <key>                   Get a device property.
+lxc config device set [<remote>:]<container> <device> <key> <value>           Set a device property.
+lxc config device unset [<remote>:]<container> <device> <key>                 Unset a device property.
+lxc config device list [<remote>:]<container>                                 List devices for container.
+lxc config device show [<remote>:]<container>                                 Show full device details for container.
+lxc config device remove [<remote>:]<container> <name>                        Remove device from container.
+
+lxc config get [<remote>:][container] <key>                                   Get container or server configuration key.
+lxc config set [<remote>:][container] <key> <value>                           Set container or server configuration key.
+lxc config unset [<remote>:][container] <key>                                 Unset container or server configuration key.
+lxc config show [<remote>:][container] [--expanded]                           Show container or server configuration.
+lxc config edit [<remote>:][container]                                        Edit container or server configuration in external editor.
     Edit configuration, either by launching external editor or reading STDIN.
     Example: lxc config edit <container> # launch editor
-             cat config.yaml | lxc config edit <config> # read from config.yaml
+             cat config.yaml | lxc config edit <container> # read from config.yaml
 
-lxc config trust list [remote]                                              List all trusted certs.
-lxc config trust add [remote] <certfile.crt>                                Add certfile.crt to trusted hosts.
-lxc config trust remove [remote] [hostname|fingerprint]                     Remove the cert from trusted hosts.
+lxc config trust list [<remote>:]                                             List all trusted certs.
+lxc config trust add [<remote>:] <certfile.crt>                               Add certfile.crt to trusted hosts.
+lxc config trust remove [<remote>:] [hostname|fingerprint]                    Remove the cert from trusted hosts.
 
 Examples:
 To mount host's /share/c1 onto /opt in the container:
-    lxc config device add [remote:]container1 <device-name> disk source=/share/c1 path=opt
+    lxc config device add [<remote>:]container1 <device-name> disk source=/share/c1 path=opt
 
 To set an lxc config value:
-    lxc config set [remote:]<container> raw.lxc 'lxc.aa_allow_incomplete = 1'
+    lxc config set [<remote>:]<container> raw.lxc 'lxc.aa_allow_incomplete = 1'
 
 To listen on IPv4 and IPv6 port 8443 (you can omit the 8443 its the default):
     lxc config set core.https_address [::]:8443

From edb45dfe76c986d7a7373236e494208c1b55d3d0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 15 Dec 2016 12:22:20 -0500
Subject: [PATCH 05/26] copy: Update help
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 lxc/copy.go | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lxc/copy.go b/lxc/copy.go
index 2e1f318..3715127 100644
--- a/lxc/copy.go
+++ b/lxc/copy.go
@@ -22,9 +22,9 @@ func (c *copyCmd) showByDefault() bool {
 
 func (c *copyCmd) usage() string {
 	return i18n.G(
-		`Copy containers within or in between lxd instances.
+		`Copy containers within or in between LXD instances.
 
-lxc copy [remote:]<source container> [[remote:]<destination container>] [--ephemeral|e] [--profile|-p <profile>...] [--config|-c <key=value>...]`)
+lxc copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>] [--ephemeral|e] [--profile|-p <profile>...] [--config|-c <key=value>...]`)
 }
 
 func (c *copyCmd) flags() {

From 736704b04d521ba1ef8d4539829fa9848d2755ff Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 15 Dec 2016 12:22:20 -0500
Subject: [PATCH 06/26] delete: Update help
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 lxc/delete.go | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/lxc/delete.go b/lxc/delete.go
index 660f983..866e5a3 100644
--- a/lxc/delete.go
+++ b/lxc/delete.go
@@ -25,16 +25,16 @@ func (c *deleteCmd) usage() string {
 	return i18n.G(
 		`Delete containers or snapshots.
 
-lxc delete [remote:]<container>[/<snapshot>] [remote:][<container>[/<snapshot>]...]
+lxc delete [<remote>:]<container>[/<snapshot>] [[<remote>:]<container>[/<snapshot>]...]
 
 Destroy containers or snapshots with any attached data (configuration, snapshots, ...).`)
 }
 
 func (c *deleteCmd) flags() {
-	gnuflag.BoolVar(&c.force, "f", false, i18n.G("Force the removal of stopped containers."))
-	gnuflag.BoolVar(&c.force, "force", false, i18n.G("Force the removal of stopped containers."))
-	gnuflag.BoolVar(&c.interactive, "i", false, i18n.G("Require user confirmation."))
-	gnuflag.BoolVar(&c.interactive, "interactive", false, i18n.G("Require user confirmation."))
+	gnuflag.BoolVar(&c.force, "f", false, i18n.G("Force the removal of stopped containers"))
+	gnuflag.BoolVar(&c.force, "force", false, i18n.G("Force the removal of stopped containers"))
+	gnuflag.BoolVar(&c.interactive, "i", false, i18n.G("Require user confirmation"))
+	gnuflag.BoolVar(&c.interactive, "interactive", false, i18n.G("Require user confirmation"))
 }
 
 func (c *deleteCmd) promptDelete(name string) error {

From 7f5411a92a3553bcd53363db0b414ef9944ba4cf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 15 Dec 2016 12:22:20 -0500
Subject: [PATCH 07/26] exec: Update help
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 lxc/exec.go | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lxc/exec.go b/lxc/exec.go
index dc8447a..ef278bd 100644
--- a/lxc/exec.go
+++ b/lxc/exec.go
@@ -45,13 +45,13 @@ func (c *execCmd) usage() string {
 	return i18n.G(
 		`Execute the specified command in a container.
 
-lxc exec [remote:]container [--mode=auto|interactive|non-interactive] [--env EDITOR=/usr/bin/vim]... [--] <command line>
+lxc exec [<remote>:]<container> [--mode=auto|interactive|non-interactive] [--env KEY=VALUE...] [--] <command line>
 
 Mode defaults to non-interactive, interactive mode is selected if both stdin AND stdout are terminals (stderr is ignored).`)
 }
 
 func (c *execCmd) flags() {
-	gnuflag.Var(&c.envArgs, "env", i18n.G("An environment variable of the form HOME=/home/foo"))
+	gnuflag.Var(&c.envArgs, "env", i18n.G("Environment variable to set (e.g. HOME=/home/foo)"))
 	gnuflag.StringVar(&c.modeFlag, "mode", "auto", i18n.G("Override the terminal mode (auto, interactive or non-interactive)"))
 }
 

From 17472904a7113f8f32a55ea11510c23de22e6256 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 15 Dec 2016 12:22:20 -0500
Subject: [PATCH 08/26] file: Update help
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 lxc/file.go | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/lxc/file.go b/lxc/file.go
index 56765ac..a5167c6 100644
--- a/lxc/file.go
+++ b/lxc/file.go
@@ -34,22 +34,20 @@ func (c *fileCmd) showByDefault() bool {
 
 func (c *fileCmd) usage() string {
 	return i18n.G(
-		`Manage files on a container.
+		`Manage files in a container.
 
-lxc file pull [-r|--recursive] <source> [<source>...] <target>
-lxc file push [-r|--recursive] [-p|--create-dirs] [--uid=UID] [--gid=GID] [--mode=MODE] <source> [<source>...] <target>
-lxc file edit <file>
+lxc file pull [-r|--recursive] [<remote>:]<container> [[<remote>:]<container>...] <target path>
+lxc file push [-r|--recursive] [-p|--create-dirs] [--uid=UID] [--gid=GID] [--mode=MODE] <source path> [<source path>...] [<remote>:]<container>
+lxc file edit [<remote>:]<container>/<path>
 
 <source> in the case of pull, <target> in the case of push and <file> in the case of edit are <container name>/<path>
 
 Examples:
-
 To push /etc/hosts into the container foo:
-  lxc file push /etc/hosts foo/etc/hosts
+    lxc file push /etc/hosts foo/etc/hosts
 
 To pull /etc/hosts from the container:
-  lxc file pull foo/etc/hosts .
-`)
+    lxc file pull foo/etc/hosts .`)
 }
 
 func (c *fileCmd) flags() {

From 255058427db2c846c9aeb61d3221571d0f95d843 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 15 Dec 2016 12:22:20 -0500
Subject: [PATCH 09/26] finger: Update help
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 lxc/finger.go | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lxc/finger.go b/lxc/finger.go
index d500e18..af1e28b 100644
--- a/lxc/finger.go
+++ b/lxc/finger.go
@@ -15,7 +15,7 @@ func (c *fingerCmd) usage() string {
 	return i18n.G(
 		`Check if the LXD instance is up.
 
-lxc finger <remote>`)
+lxc finger [<remote>:]`)
 }
 
 func (c *fingerCmd) flags() {}

From d0a0d9ff114013274229071066858108351e3bdb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 15 Dec 2016 12:22:20 -0500
Subject: [PATCH 10/26] help: Update help
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 lxc/help.go | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/lxc/help.go b/lxc/help.go
index b01732a..bba74f3 100644
--- a/lxc/help.go
+++ b/lxc/help.go
@@ -23,9 +23,9 @@ func (c *helpCmd) showByDefault() bool {
 
 func (c *helpCmd) usage() string {
 	return i18n.G(
-		`Presents details on how to use LXD.
+		`Help page for the LXD client.
 
-lxd help [--all]`)
+lxc help [--all]`)
 }
 
 func (c *helpCmd) flags() {
@@ -45,7 +45,7 @@ func (c *helpCmd) run(_ *lxd.Config, args []string) error {
 		return nil
 	}
 
-	fmt.Println(i18n.G("Usage: lxc [subcommand] [options]"))
+	fmt.Println(i18n.G("Usage: lxc <command> [options]"))
 	fmt.Println(i18n.G("Available commands:"))
 	var names []string
 	for name := range commands {
@@ -61,14 +61,14 @@ func (c *helpCmd) run(_ *lxd.Config, args []string) error {
 	if !c.showAll {
 		fmt.Println()
 		fmt.Println(i18n.G("Options:"))
-		fmt.Println("  --all              " + i18n.G("Print less common commands."))
-		fmt.Println("  --debug            " + i18n.G("Print debug information."))
-		fmt.Println("  --verbose          " + i18n.G("Print verbose information."))
-		fmt.Println("  --version          " + i18n.G("Show client version."))
+		fmt.Println("  --all              " + i18n.G("Print less common commands"))
+		fmt.Println("  --debug            " + i18n.G("Print debug information"))
+		fmt.Println("  --verbose          " + i18n.G("Print verbose information"))
+		fmt.Println("  --version          " + i18n.G("Show client version"))
 		fmt.Println()
 		fmt.Println(i18n.G("Environment:"))
-		fmt.Println("  LXD_CONF           " + i18n.G("Path to an alternate client configuration directory."))
-		fmt.Println("  LXD_DIR            " + i18n.G("Path to an alternate server directory."))
+		fmt.Println("  LXD_CONF           " + i18n.G("Path to an alternate client configuration directory"))
+		fmt.Println("  LXD_DIR            " + i18n.G("Path to an alternate server directory"))
 	}
 	return nil
 }

From 315b7341aebbc01f8e9e2beceb9fa2ded293981a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 15 Dec 2016 12:22:20 -0500
Subject: [PATCH 11/26] image: Update help
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 lxc/image.go | 25 ++++++++++++-------------
 1 file changed, 12 insertions(+), 13 deletions(-)

diff --git a/lxc/image.go b/lxc/image.go
index 96db696..30592cf 100644
--- a/lxc/image.go
+++ b/lxc/image.go
@@ -110,19 +110,19 @@ Images can be referenced by their full hash, shortest unique partial
 hash or alias name (if one is set).
 
 
-lxc image import <tarball> [rootfs tarball|URL] [remote:] [--public] [--created-at=ISO-8601] [--expires-at=ISO-8601] [--fingerprint=FINGERPRINT] [--alias=ALIAS].. [prop=value]
+lxc image import <tarball> [<rootfs tarball>|<URL>] [<remote>:] [--public] [--created-at=ISO-8601] [--expires-at=ISO-8601] [--fingerprint=FINGERPRINT] [--alias=ALIAS...] [prop=value]
     Import an image tarball (or tarballs) into the LXD image store.
 
-lxc image copy [remote:]<image> <remote>: [--alias=ALIAS].. [--copy-aliases] [--public] [--auto-update]
+lxc image copy [<remote>:]<image> <remote>: [--alias=ALIAS...] [--copy-aliases] [--public] [--auto-update]
     Copy an image from one LXD daemon to another over the network.
 
     The auto-update flag instructs the server to keep this image up to
     date. It requires the source to be an alias and for it to be public.
 
-lxc image delete [remote:]<image> [remote:][<image>...]
+lxc image delete [<remote>:]<image> [[<remote>:]<image>...]
     Delete one or more images from the LXD image store.
 
-lxc image export [remote:]<image> [target]
+lxc image export [<remote>:]<image> [target]
     Export an image from the LXD image store into a distributable tarball.
 
     The output target is optional and defaults to the working directory.
@@ -134,31 +134,30 @@ lxc image export [remote:]<image> [target]
     the appropriate extension will be appended to the provided file name
     based on the algorithm used to compress the image. 
 
-lxc image info [remote:]<image>
+lxc image info [<remote>:]<image>
     Print everything LXD knows about a given image.
 
-lxc image list [remote:] [filter] [--format table|json]
+lxc image list [<remote>:] [filter] [--format table|json]
     List images in the LXD image store. Filters may be of the
     <key>=<value> form for property based filtering, or part of the image
     hash or part of the image alias name.
 
-lxc image show [remote:]<image>
+lxc image show [<remote>:]<image>
     Yaml output of the user modifiable properties of an image.
 
-lxc image edit [remote:]<image>
+lxc image edit [<remote>:]<image>
     Edit image, either by launching external editor or reading STDIN.
     Example: lxc image edit <image> # launch editor
              cat image.yaml | lxc image edit <image> # read from image.yaml
 
-lxc image alias create [remote:]<alias> <fingerprint>
+lxc image alias create [<remote>:]<alias> <fingerprint>
     Create a new alias for an existing image.
 
-lxc image alias delete [remote:]<alias>
+lxc image alias delete [<remote>:]<alias>
     Delete an alias.
 
-lxc image alias list [remote:] [filter]
-    List the aliases. Filters may be part of the image hash or part of the image alias name.
-`)
+lxc image alias list [<remote>:] [filter]
+    List the aliases. Filters may be part of the image hash or part of the image alias name.`)
 }
 
 func (c *imageCmd) flags() {

From f02a7914fd7f6dfcc3f0dad236dcc56a575759cc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 15 Dec 2016 12:22:20 -0500
Subject: [PATCH 12/26] info: Update help
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 lxc/info.go | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lxc/info.go b/lxc/info.go
index 41c00bd..64af2ac 100644
--- a/lxc/info.go
+++ b/lxc/info.go
@@ -26,10 +26,10 @@ func (c *infoCmd) usage() string {
 		`List information on LXD servers and containers.
 
 For a container:
- lxc info [<remote>:]container [--show-log]
+    lxc info [<remote:>]<container> [--show-log]
 
 For a server:
- lxc info [<remote>:]`)
+    lxc info [<remote:>]`)
 }
 
 func (c *infoCmd) flags() {

From 910ba42af275533597069442584466ae412c8e24 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 15 Dec 2016 12:22:20 -0500
Subject: [PATCH 13/26] init: Update help
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 lxc/init.go | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lxc/init.go b/lxc/init.go
index dc3e1b7..1a4e1d7 100644
--- a/lxc/init.go
+++ b/lxc/init.go
@@ -74,7 +74,7 @@ func (c *initCmd) usage() string {
 	return i18n.G(
 		`Initialize a container from a particular image.
 
-lxc init [remote:]<image> [remote:][<name>] [--ephemeral|-e] [--profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n <network>]
+lxc init [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n <network>]
 
 Initializes a container using the specified image and name.
 
@@ -82,7 +82,7 @@ Not specifying -p will result in the default profile.
 Specifying "-p" with no argument will result in no profile.
 
 Example:
-lxc init ubuntu u1`)
+    lxc init ubuntu u1`)
 }
 
 func (c *initCmd) is_ephem(s string) bool {

From 63ad6ceb71be2a331d9cb70f415a1347df1579b1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 15 Dec 2016 12:22:20 -0500
Subject: [PATCH 14/26] launch: Update help
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 lxc/launch.go | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lxc/launch.go b/lxc/launch.go
index 7c7cf7b..0c7ea84 100644
--- a/lxc/launch.go
+++ b/lxc/launch.go
@@ -22,7 +22,7 @@ func (c *launchCmd) usage() string {
 	return i18n.G(
 		`Launch a container from a particular image.
 
-lxc launch [remote:]<image> [remote:][<name>] [--ephemeral|-e] [--profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n <network>]
+lxc launch [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n <network>]
 
 Launches a container using the specified image and name.
 
@@ -30,7 +30,7 @@ Not specifying -p will result in the default profile.
 Specifying "-p" with no argument will result in no profile.
 
 Example:
-lxc launch ubuntu:16.04 u1`)
+    lxc launch ubuntu:16.04 u1`)
 }
 
 func (c *launchCmd) flags() {

From b9867d6bd2bcdb7ddfeb45ed237a6174ac98679a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 15 Dec 2016 12:22:20 -0500
Subject: [PATCH 15/26] list: Update help
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 lxc/list.go | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/lxc/list.go b/lxc/list.go
index 7ffcecb..3d4f75a 100644
--- a/lxc/list.go
+++ b/lxc/list.go
@@ -66,9 +66,9 @@ func (c *listCmd) showByDefault() bool {
 
 func (c *listCmd) usage() string {
 	return i18n.G(
-		`Lists the available resources.
+		`Lists the containers.
 
-lxc list [resource] [filters] [--format table|json] [-c columns] [--fast]
+lxc list [<remote>:] [filters] [--format table|json] [-c <columns>] [--fast]
 
 The filters are:
 * A single keyword like "web" which will list any container with a name starting by "web".
@@ -113,8 +113,8 @@ Config key syntax: key[:name][:maxWidth]
 Default column layout: ns46tS
 Fast column layout: nsacPt
 
-Example: lxc list -c n,volatile.base_image:"BASE IMAGE":0,s46,volatile.eth0.hwaddr:MAC
-`)
+Example:
+    lxc list -c n,volatile.base_image:"BASE IMAGE":0,s46,volatile.eth0.hwaddr:MAC`)
 }
 
 func (c *listCmd) flags() {

From 582ef24d2a8702ad62a8780f520719a1f27a94fc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 15 Dec 2016 12:22:20 -0500
Subject: [PATCH 16/26] main: Update help
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 lxc/main.go | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/lxc/main.go b/lxc/main.go
index 3eacd63..8dd8956 100644
--- a/lxc/main.go
+++ b/lxc/main.go
@@ -37,10 +37,10 @@ func main() {
 }
 
 func run() error {
-	verbose := gnuflag.Bool("verbose", false, i18n.G("Enables verbose mode."))
-	debug := gnuflag.Bool("debug", false, i18n.G("Enables debug mode."))
-	forceLocal := gnuflag.Bool("force-local", false, i18n.G("Force using the local unix socket."))
-	noAlias := gnuflag.Bool("no-alias", false, i18n.G("Ignore aliases when determining what command to run."))
+	verbose := gnuflag.Bool("verbose", false, i18n.G("Enable verbose mode"))
+	debug := gnuflag.Bool("debug", false, i18n.G("Enable debug mode"))
+	forceLocal := gnuflag.Bool("force-local", false, i18n.G("Force using the local unix socket"))
+	noAlias := gnuflag.Bool("no-alias", false, i18n.G("Ignore aliases when determining what command to run"))
 
 	configDir := "$HOME/.config/lxc"
 	if os.Getenv("LXD_CONF") != "" {

From ec12d2c7fce3452eb84691def0b3fc324b55ea8d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 15 Dec 2016 12:22:20 -0500
Subject: [PATCH 17/26] manpage: Update help
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 lxc/manpage.go | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lxc/manpage.go b/lxc/manpage.go
index db74cbe..101dc2c 100644
--- a/lxc/manpage.go
+++ b/lxc/manpage.go
@@ -16,7 +16,7 @@ func (c *manpageCmd) showByDefault() bool {
 
 func (c *manpageCmd) usage() string {
 	return i18n.G(
-		`Prints all the subcommands help.`)
+		`Print all the subcommands help.`)
 }
 
 func (c *manpageCmd) flags() {

From ff99d6429b2393319675f22c97605be6c39ea3cb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 15 Dec 2016 12:22:20 -0500
Subject: [PATCH 18/26] monitor: Update help
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 lxc/monitor.go | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lxc/monitor.go b/lxc/monitor.go
index dedb7de..877a1f9 100644
--- a/lxc/monitor.go
+++ b/lxc/monitor.go
@@ -41,7 +41,7 @@ func (c *monitorCmd) usage() string {
 	return i18n.G(
 		`Monitor activity on the LXD server.
 
-lxc monitor [remote:] [--type=TYPE...]
+lxc monitor [<remote>:] [--type=TYPE...]
 
 Connects to the monitoring interface of the specified LXD server.
 
@@ -49,7 +49,7 @@ By default will listen to all message types.
 Specific types to listen to can be specified with --type.
 
 Example:
-lxc monitor --type=logging`)
+    lxc monitor --type=logging`)
 }
 
 func (c *monitorCmd) flags() {

From c722118ff156112c5e3d20f74c804597dfc01bc4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 15 Dec 2016 12:22:20 -0500
Subject: [PATCH 19/26] move: Update help
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 lxc/move.go | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/lxc/move.go b/lxc/move.go
index c997790..d740db5 100644
--- a/lxc/move.go
+++ b/lxc/move.go
@@ -16,12 +16,14 @@ func (c *moveCmd) usage() string {
 	return i18n.G(
 		`Move containers within or in between lxd instances.
 
-lxc move [remote:]<source container> [remote:]<destination container>
+lxc move [<remote>:]<source container> [<remote>:][<destination container>]
     Move a container between two hosts, renaming it if destination name differs.
 
 lxc move <old name> <new name>
     Rename a local container.
-`)
+
+lxc move <container>/<old snapshot name> <container>/<new snapshot name>
+    Rename a snapshot.`)
 }
 
 func (c *moveCmd) flags() {}

From 7dc4cb450e569b48b2cdbb53485c56a797508908 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 15 Dec 2016 12:22:20 -0500
Subject: [PATCH 20/26] network: Update help
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 lxc/network.go | 25 ++++++++++++-------------
 1 file changed, 12 insertions(+), 13 deletions(-)

diff --git a/lxc/network.go b/lxc/network.go
index 9157947..2be6398 100644
--- a/lxc/network.go
+++ b/lxc/network.go
@@ -48,24 +48,23 @@ func (c *networkCmd) usage() string {
 	return i18n.G(
 		`Manage networks.
 
-lxc network list                               List available networks.
-lxc network show <network>                     Show details of a network.
-lxc network create <network> [key=value]...    Create a network.
-lxc network get <network> <key>                Get network configuration.
-lxc network set <network> <key> <value>        Set network configuration.
-lxc network unset <network> <key>              Unset network configuration.
-lxc network delete <network>                   Delete a network.
-lxc network edit <network>
+lxc network list [<remote>:]                              List available networks.
+lxc network show [<remote>:]<network>                     Show details of a network.
+lxc network create [<remote>:]<network> [key=value...]    Create a network.
+lxc network get [<remote>:]<network> <key>                Get network configuration.
+lxc network set [<remote>:]<network> <key> <value>        Set network configuration.
+lxc network unset [<remote>:]<network> <key>              Unset network configuration.
+lxc network delete [<remote>:]<network>                   Delete a network.
+lxc network edit [<remote>:]<network>
     Edit network, either by launching external editor or reading STDIN.
     Example: lxc network edit <network> # launch editor
              cat network.yaml | lxc network edit <network> # read from network.yaml
 
-lxc network attach <network> <container> [device name]
-lxc network attach-profile <network> <profile> [device name]
+lxc network attach [<remote>:]<network> <container> [device name]
+lxc network attach-profile [<remote>:]<network> <profile> [device name]
 
-lxc network detach <network> <container> [device name]
-lxc network detach-profile <network> <container> [device name]
-`)
+lxc network detach [<remote>:]<network> <container> [device name]
+lxc network detach-profile [<remote>:]<network> <container> [device name]`)
 }
 
 func (c *networkCmd) flags() {}

From 3c4c3abc9f432108b76421886cefca66a26fa140 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 15 Dec 2016 12:22:20 -0500
Subject: [PATCH 21/26] profile: Update help
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Closes #2719

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 lxc/profile.go | 41 ++++++++++++++++++++---------------------
 1 file changed, 20 insertions(+), 21 deletions(-)

diff --git a/lxc/profile.go b/lxc/profile.go
index 6c7687e..92de0b7 100644
--- a/lxc/profile.go
+++ b/lxc/profile.go
@@ -48,20 +48,20 @@ func (c *profileCmd) usage() string {
 	return i18n.G(
 		`Manage configuration profiles.
 
-lxc profile list [filters]                     List available profiles.
-lxc profile show <profile>                     Show details of a profile.
-lxc profile create <profile>                   Create a profile.
-lxc profile copy <profile> <remote>            Copy the profile to the specified remote.
-lxc profile get <profile> <key>                Get profile configuration.
-lxc profile set <profile> <key> <value>        Set profile configuration.
-lxc profile unset <profile> <key>              Unset profile configuration.
-lxc profile delete <profile>                   Delete a profile.
-lxc profile edit <profile>
+lxc profile list [<remote>:]                                    List available profiles.
+lxc profile show [<remote>:]<profile>                           Show details of a profile.
+lxc profile create [<remote>:]<profile>                         Create a profile.
+lxc profile copy [<remote>:]<profile> <remote>:[<profile>]      Copy the profile to the specified remote.
+lxc profile get [<remote>:]<profile> <key>                      Get profile configuration.
+lxc profile set [<remote>:]<profile> <key> <value>              Set profile configuration.
+lxc profile unset [<remote>:]<profile> <key>                    Unset profile configuration.
+lxc profile delete [<remote>:]<profile>                         Delete a profile.
+lxc profile edit [<remote>:]<profile>
     Edit profile, either by launching external editor or reading STDIN.
     Example: lxc profile edit <profile> # launch editor
              cat profile.yaml | lxc profile edit <profile> # read from profile.yaml
 
-lxc profile assign <container> <profiles>
+lxc profile assign [<remote>:]<container> <profiles>
     Assign a comma-separated list of profiles to a container, in order.
     All profiles passed in this call (and only those) will be applied
     to the specified container, i.e. it sets the list of profiles exactly to
@@ -71,19 +71,18 @@ lxc profile assign <container> <profiles>
              lxc profile assign foo default # Only default is active
              lxc profile assign '' # no profiles are applied anymore
              lxc profile assign bar,default # Apply default second now
-lxc profile add <container> <profile> # add a profile to a container
-lxc profile remove <container> <profile> # remove the profile from a container
+lxc profile add [<remote>:]<container> <profile> # add a profile to a container
+lxc profile remove [<remote>:]<container> <profile> # remove the profile from a container
 
 Devices:
-lxc profile device list <profile>                                   List devices in the given profile.
-lxc profile device show <profile>                                   Show full device details in the given profile.
-lxc profile device remove <profile> <name>                          Remove a device from a profile.
-lxc profile device get <[remote:]profile> <name> <key>              Get a device property.
-lxc profile device set <[remote:]profile> <name> <key> <value>      Set a device property.
-lxc profile device unset <[remote:]profile> <name> <key>            Unset a device property.
-lxc profile device add <profile name> <device name> <device type> [key=value]...
-    Add a profile device, such as a disk or a nic, to the containers
-    using the specified profile.`)
+lxc profile device list [<remote>:]<profile>                                List devices in the given profile.
+lxc profile device show [<remote>:]<profile>                                Show full device details in the given profile.
+lxc profile device remove [<remote>:]<profile> <name>                       Remove a device from a profile.
+lxc profile device get [<remote>:]<profile> <name> <key>                    Get a device property.
+lxc profile device set [<remote>:]<profile> <name> <key> <value>            Set a device property.
+lxc profile device unset [<remote>:]<profile> <name> <key>                  Unset a device property.
+lxc profile device add [<remote>:]<profile> <device> <type> [key=value...]
+    Add a profile device, such as a disk or a nic, to the containers using the specified profile.`)
 }
 
 func (c *profileCmd) flags() {}

From 717e5de2e928cf055401ecc5607dbf84c08400cd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 15 Dec 2016 12:22:20 -0500
Subject: [PATCH 22/26] publish: Update help
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 lxc/publish.go | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lxc/publish.go b/lxc/publish.go
index 9648425..d45ed14 100644
--- a/lxc/publish.go
+++ b/lxc/publish.go
@@ -26,7 +26,7 @@ func (c *publishCmd) usage() string {
 	return i18n.G(
 		`Publish containers as images.
 
-lxc publish [remote:]container [remote:] [--alias=ALIAS]... [prop-key=prop-value]...`)
+lxc publish [<remote>:]<container>[/<snapshot>] [<remote>:] [--alias=ALIAS...] [prop-key=prop-value...]`)
 }
 
 func (c *publishCmd) flags() {

From b95791d58e4212d77c7f5dfaef987c65f6a6aabb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 15 Dec 2016 12:22:20 -0500
Subject: [PATCH 23/26] remote: Update help
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 lxc/remote.go | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/lxc/remote.go b/lxc/remote.go
index c6284aa..df10843 100644
--- a/lxc/remote.go
+++ b/lxc/remote.go
@@ -37,13 +37,13 @@ func (c *remoteCmd) usage() string {
 	return i18n.G(
 		`Manage remote LXD servers.
 
-lxc remote add [<name>] <IP|FQDN|URL> [--accept-certificate] [--password=PASSWORD]
-                                      [--public] [--protocol=PROTOCOL]      Add the remote <name> at <url>.
-lxc remote remove <name>                                                    Remove the remote <name>.
+lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--password=PASSWORD]
+                                        [--public] [--protocol=PROTOCOL]    Add the remote <name> at <url>.
+lxc remote remove <remote>                                                  Remove the remote <name>.
 lxc remote list                                                             List all remotes.
-lxc remote rename <old> <new>                                               Rename remote <old> to <new>.
-lxc remote set-url <name> <url>                                             Update <name>'s url to <url>.
-lxc remote set-default <name>                                               Set the default remote.
+lxc remote rename <old name> <new name>                                     Rename remote <old> to <new>.
+lxc remote set-url <remote> <url>                                           Update <name>'s url to <url>.
+lxc remote set-default <remote>                                             Set the default remote.
 lxc remote get-default                                                      Print the default remote.`)
 }
 

From 2201724e9c4b94bcdcb4dff6295220603f9fe5b7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 15 Dec 2016 12:22:20 -0500
Subject: [PATCH 24/26] restore: Update help
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 lxc/restore.go | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/lxc/restore.go b/lxc/restore.go
index 3e4f8d5..b37b3ef 100644
--- a/lxc/restore.go
+++ b/lxc/restore.go
@@ -19,16 +19,19 @@ func (c *restoreCmd) showByDefault() bool {
 
 func (c *restoreCmd) usage() string {
 	return i18n.G(
-		`Set the current state of a container back to a snapshot.
+		`Restore a container's state to a previous snapshot.
 
-lxc restore [remote:]<container> <snapshot name> [--stateful]
+lxc restore [<remote>:]<container> <snapshot> [--stateful]
 
 Restores a container from a snapshot (optionally with running state, see
 snapshot help for details).
 
-For example:
-lxc snapshot u1 snap0 # create the snapshot
-lxc restore u1 snap0 # restore the snapshot`)
+Examples:
+Create the snapshot:
+    lxc snapshot u1 snap0
+
+Restore the snapshot:
+    lxc restore u1 snap0`)
 }
 
 func (c *restoreCmd) flags() {

From d95ee1b1c23d86cb7ddada77cc22759cbe7d9661 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 15 Dec 2016 12:22:20 -0500
Subject: [PATCH 25/26] snapshot: Update help
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 lxc/snapshot.go | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lxc/snapshot.go b/lxc/snapshot.go
index 7dad294..50a01ad 100644
--- a/lxc/snapshot.go
+++ b/lxc/snapshot.go
@@ -21,7 +21,7 @@ func (c *snapshotCmd) usage() string {
 	return i18n.G(
 		`Create a read-only snapshot of a container.
 
-lxc snapshot [remote:]<source> <snapshot name> [--stateful]
+lxc snapshot [<remote>:]<container> <snapshot name> [--stateful]
 
 Creates a snapshot of the container (optionally with the container's memory
 state). When --stateful is used, LXD attempts to checkpoint the container's
@@ -31,7 +31,7 @@ TCP connections after the TCP timeout window has expired, may not be restored
 successfully).
 
 Example:
-lxc snapshot u1 snap0`)
+    lxc snapshot u1 snap0`)
 }
 
 func (c *snapshotCmd) flags() {

From e259bafffbe4325199ae52d50673f8391de8ca60 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 15 Dec 2016 12:22:34 -0500
Subject: [PATCH 26/26] Update PO file
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 po/lxd.pot | 495 +++++++++++++++++++++++++++++++------------------------------
 1 file changed, 250 insertions(+), 245 deletions(-)

diff --git a/po/lxd.pot b/po/lxd.pot
index 64fddd1..0e6f80e 100644
--- a/po/lxd.pot
+++ b/po/lxd.pot
@@ -7,7 +7,7 @@
 msgid   ""
 msgstr  "Project-Id-Version: lxd\n"
         "Report-Msgid-Bugs-To: lxc-devel at lists.linuxcontainers.org\n"
-        "POT-Creation-Date: 2016-12-06 14:45+0100\n"
+        "POT-Creation-Date: 2016-12-15 12:33-0500\n"
         "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
         "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
         "Language-Team: LANGUAGE <LL at li.org>\n"
@@ -100,7 +100,7 @@ msgid   "### This is a yaml representation of the profile.\n"
         "### Note that the name is shown but cannot be changed"
 msgstr  ""
 
-#: lxc/image.go:615
+#: lxc/image.go:614
 #, c-format
 msgid   "%s (%d more)"
 msgstr  ""
@@ -109,15 +109,15 @@ msgstr  ""
 msgid   "'/' not allowed in snapshot name"
 msgstr  ""
 
-#: lxc/profile.go:254
+#: lxc/profile.go:253
 msgid   "(none)"
 msgstr  ""
 
-#: lxc/image.go:636 lxc/image.go:678
+#: lxc/image.go:635 lxc/image.go:677
 msgid   "ALIAS"
 msgstr  ""
 
-#: lxc/image.go:640
+#: lxc/image.go:639
 msgid   "ARCH"
 msgstr  ""
 
@@ -125,29 +125,25 @@ msgstr  ""
 msgid   "ARCHITECTURE"
 msgstr  ""
 
-#: lxc/remote.go:52
+#: lxc/remote.go:51
 msgid   "Accept certificate"
 msgstr  ""
 
-#: lxc/remote.go:268
+#: lxc/remote.go:267
 #, c-format
 msgid   "Admin password for %s: "
 msgstr  ""
 
-#: lxc/image.go:363
+#: lxc/image.go:362
 msgid   "Aliases:"
 msgstr  ""
 
-#: lxc/exec.go:54
-msgid   "An environment variable of the form HOME=/home/foo"
-msgstr  ""
-
-#: lxc/image.go:346 lxc/info.go:93
+#: lxc/image.go:345 lxc/info.go:93
 #, c-format
 msgid   "Architecture: %s"
 msgstr  ""
 
-#: lxc/image.go:367
+#: lxc/image.go:366
 #, c-format
 msgid   "Auto update: %s"
 msgstr  ""
@@ -186,29 +182,29 @@ msgstr  ""
 msgid   "Can't unset key '%s', it's not currently set."
 msgstr  ""
 
-#: lxc/network.go:386 lxc/profile.go:420
+#: lxc/network.go:385 lxc/profile.go:419
 msgid   "Cannot provide container name to list"
 msgstr  ""
 
-#: lxc/remote.go:218
+#: lxc/remote.go:217
 #, c-format
 msgid   "Certificate fingerprint: %x"
 msgstr  ""
 
 #: lxc/action.go:33
 #, c-format
-msgid   "Changes state of one or more containers to %s.\n"
+msgid   "Change state of one or more containers to %s.\n"
         "\n"
-        "lxc %s <name> [<name>...]%s"
+        "lxc %s [<remote>:]<container> [[<remote>:]<container>...]%s"
 msgstr  ""
 
 #: lxc/finger.go:15
 msgid   "Check if the LXD instance is up.\n"
         "\n"
-        "lxc finger <remote>"
+        "lxc finger [<remote>:]"
 msgstr  ""
 
-#: lxc/remote.go:291
+#: lxc/remote.go:290
 msgid   "Client certificate stored at server: "
 msgstr  ""
 
@@ -220,7 +216,7 @@ msgstr  ""
 msgid   "Config key/value to apply to the new container"
 msgstr  ""
 
-#: lxc/config.go:530 lxc/config.go:595 lxc/image.go:732 lxc/network.go:342 lxc/profile.go:218
+#: lxc/config.go:530 lxc/config.go:595 lxc/image.go:731 lxc/network.go:341 lxc/profile.go:217
 #, c-format
 msgid   "Config parsing error: %s"
 msgstr  ""
@@ -243,26 +239,26 @@ msgstr  ""
 msgid   "Container published with fingerprint: %s"
 msgstr  ""
 
-#: lxc/image.go:166
+#: lxc/image.go:165
 msgid   "Copy aliases from source"
 msgstr  ""
 
 #: lxc/copy.go:24
-msgid   "Copy containers within or in between lxd instances.\n"
+msgid   "Copy containers within or in between LXD instances.\n"
         "\n"
-        "lxc copy [remote:]<source container> [[remote:]<destination container>] [--ephemeral|e] [--profile|-p <profile>...] [--config|-c <key=value>...]"
+        "lxc copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>] [--ephemeral|e] [--profile|-p <profile>...] [--config|-c <key=value>...]"
 msgstr  ""
 
-#: lxc/image.go:279
+#: lxc/image.go:278
 #, c-format
 msgid   "Copying the image: %s"
 msgstr  ""
 
-#: lxc/remote.go:233
+#: lxc/remote.go:232
 msgid   "Could not create server cert dir"
 msgstr  ""
 
-#: lxc/file.go:85
+#: lxc/file.go:83
 #, c-format
 msgid   "Could not sanitize path %s"
 msgstr  ""
@@ -270,7 +266,7 @@ msgstr  ""
 #: lxc/snapshot.go:21
 msgid   "Create a read-only snapshot of a container.\n"
         "\n"
-        "lxc snapshot [remote:]<source> <snapshot name> [--stateful]\n"
+        "lxc snapshot [<remote>:]<container> <snapshot name> [--stateful]\n"
         "\n"
         "Creates a snapshot of the container (optionally with the container's memory\n"
         "state). When --stateful is used, LXD attempts to checkpoint the container's\n"
@@ -280,14 +276,14 @@ msgid   "Create a read-only snapshot of a container.\n"
         "successfully).\n"
         "\n"
         "Example:\n"
-        "lxc snapshot u1 snap0"
+        "    lxc snapshot u1 snap0"
 msgstr  ""
 
-#: lxc/file.go:61 lxc/file.go:62
+#: lxc/file.go:59 lxc/file.go:60
 msgid   "Create any directories necessary"
 msgstr  ""
 
-#: lxc/image.go:351 lxc/info.go:95
+#: lxc/image.go:350 lxc/info.go:95
 #, c-format
 msgid   "Created: %s"
 msgstr  ""
@@ -301,7 +297,7 @@ msgstr  ""
 msgid   "Creating the container"
 msgstr  ""
 
-#: lxc/image.go:639 lxc/image.go:680
+#: lxc/image.go:638 lxc/image.go:679
 msgid   "DESCRIPTION"
 msgstr  ""
 
@@ -312,7 +308,7 @@ msgstr  ""
 #: lxc/delete.go:25
 msgid   "Delete containers or snapshots.\n"
         "\n"
-        "lxc delete [remote:]<container>[/<snapshot>] [remote:][<container>[/<snapshot>]...]\n"
+        "lxc delete [<remote>:]<container>[/<snapshot>] [[<remote>:]<container>[/<snapshot>]...]\n"
         "\n"
         "Destroy containers or snapshots with any attached data (configuration, snapshots, ...)."
 msgstr  ""
@@ -336,11 +332,15 @@ msgid   "EXPIRY DATE"
 msgstr  ""
 
 #: lxc/main.go:41
-msgid   "Enables debug mode."
+msgid   "Enable debug mode"
 msgstr  ""
 
 #: lxc/main.go:40
-msgid   "Enables verbose mode."
+msgid   "Enable verbose mode"
+msgstr  ""
+
+#: lxc/exec.go:54
+msgid   "Environment variable to set (e.g. HOME=/home/foo)"
 msgstr  ""
 
 #: lxc/help.go:69
@@ -358,21 +358,21 @@ msgstr  ""
 #: lxc/exec.go:45
 msgid   "Execute the specified command in a container.\n"
         "\n"
-        "lxc exec [remote:]container [--mode=auto|interactive|non-interactive] [--env EDITOR=/usr/bin/vim]... [--] <command line>\n"
+        "lxc exec [<remote>:]<container> [--mode=auto|interactive|non-interactive] [--env KEY=VALUE...] [--] <command line>\n"
         "\n"
         "Mode defaults to non-interactive, interactive mode is selected if both stdin AND stdout are terminals (stderr is ignored)."
 msgstr  ""
 
-#: lxc/image.go:355
+#: lxc/image.go:354
 #, c-format
 msgid   "Expires: %s"
 msgstr  ""
 
-#: lxc/image.go:357
+#: lxc/image.go:356
 msgid   "Expires: never"
 msgstr  ""
 
-#: lxc/config.go:272 lxc/image.go:637 lxc/image.go:679
+#: lxc/config.go:272 lxc/image.go:636 lxc/image.go:678
 msgid   "FINGERPRINT"
 msgstr  ""
 
@@ -380,31 +380,37 @@ msgstr  ""
 msgid   "Fast mode (same as --columns=nsacPt"
 msgstr  ""
 
-#: lxc/image.go:344
+#: lxc/image.go:343
 #, c-format
 msgid   "Fingerprint: %s"
 msgstr  ""
 
 #: lxc/action.go:42 lxc/action.go:43
-msgid   "Force the container to shutdown."
+msgid   "Force the container to shutdown"
 msgstr  ""
 
 #: lxc/delete.go:34 lxc/delete.go:35
-msgid   "Force the removal of stopped containers."
+msgid   "Force the removal of stopped containers"
 msgstr  ""
 
 #: lxc/main.go:42
-msgid   "Force using the local unix socket."
+msgid   "Force using the local unix socket"
 msgstr  ""
 
-#: lxc/image.go:169 lxc/list.go:123
+#: lxc/image.go:168 lxc/list.go:123
 msgid   "Format"
 msgstr  ""
 
-#: lxc/remote.go:66
+#: lxc/remote.go:65
 msgid   "Generating a client certificate. This may take a minute..."
 msgstr  ""
 
+#: lxc/help.go:25
+msgid   "Help page for the LXD client.\n"
+        "\n"
+        "lxc help [--all]"
+msgstr  ""
+
 #: lxc/list.go:423
 msgid   "IPV4"
 msgstr  ""
@@ -422,23 +428,23 @@ msgid   "If this is your first time using LXD, you should also run: sudo lxd ini
 msgstr  ""
 
 #: lxc/main.go:43
-msgid   "Ignore aliases when determining what command to run."
+msgid   "Ignore aliases when determining what command to run"
 msgstr  ""
 
 #: lxc/action.go:46
-msgid   "Ignore the container state (only for start)."
+msgid   "Ignore the container state (only for start)"
 msgstr  ""
 
-#: lxc/image.go:282
+#: lxc/image.go:281
 msgid   "Image copied successfully!"
 msgstr  ""
 
-#: lxc/image.go:422 lxc/image.go:434
+#: lxc/image.go:421 lxc/image.go:433
 #, c-format
 msgid   "Image imported with fingerprint: %s"
 msgstr  ""
 
-#: lxc/image.go:419
+#: lxc/image.go:418
 #, c-format
 msgid   "Importing the image: %s"
 msgstr  ""
@@ -446,7 +452,7 @@ msgstr  ""
 #: lxc/init.go:74
 msgid   "Initialize a container from a particular image.\n"
         "\n"
-        "lxc init [remote:]<image> [remote:][<name>] [--ephemeral|-e] [--profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n <network>]\n"
+        "lxc init [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n <network>]\n"
         "\n"
         "Initializes a container using the specified image and name.\n"
         "\n"
@@ -454,10 +460,10 @@ msgid   "Initialize a container from a particular image.\n"
         "Specifying \"-p\" with no argument will result in no profile.\n"
         "\n"
         "Example:\n"
-        "lxc init ubuntu u1"
+        "    lxc init ubuntu u1"
 msgstr  ""
 
-#: lxc/remote.go:136
+#: lxc/remote.go:135
 #, c-format
 msgid   "Invalid URL scheme \"%s\" in \"%s\""
 msgstr  ""
@@ -470,12 +476,12 @@ msgstr  ""
 msgid   "Invalid configuration key"
 msgstr  ""
 
-#: lxc/file.go:251
+#: lxc/file.go:249
 #, c-format
 msgid   "Invalid source %s"
 msgstr  ""
 
-#: lxc/file.go:74
+#: lxc/file.go:72
 #, c-format
 msgid   "Invalid target %s"
 msgstr  ""
@@ -484,7 +490,7 @@ msgstr  ""
 msgid   "Ips:"
 msgstr  ""
 
-#: lxc/image.go:167
+#: lxc/image.go:166
 msgid   "Keep the image up to date after initial copy"
 msgstr  ""
 
@@ -499,7 +505,7 @@ msgstr  ""
 #: lxc/launch.go:22
 msgid   "Launch a container from a particular image.\n"
         "\n"
-        "lxc launch [remote:]<image> [remote:][<name>] [--ephemeral|-e] [--profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n <network>]\n"
+        "lxc launch [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n <network>]\n"
         "\n"
         "Launches a container using the specified image and name.\n"
         "\n"
@@ -507,23 +513,23 @@ msgid   "Launch a container from a particular image.\n"
         "Specifying \"-p\" with no argument will result in no profile.\n"
         "\n"
         "Example:\n"
-        "lxc launch ubuntu:16.04 u1"
+        "    lxc launch ubuntu:16.04 u1"
 msgstr  ""
 
 #: lxc/info.go:25
 msgid   "List information on LXD servers and containers.\n"
         "\n"
         "For a container:\n"
-        " lxc info [<remote>:]container [--show-log]\n"
+        "    lxc info [<remote:>]<container> [--show-log]\n"
         "\n"
         "For a server:\n"
-        " lxc info [<remote>:]"
+        "    lxc info [<remote:>]"
 msgstr  ""
 
 #: lxc/list.go:68
-msgid   "Lists the available resources.\n"
+msgid   "Lists the containers.\n"
         "\n"
-        "lxc list [resource] [filters] [--format table|json] [-c columns] [--fast]\n"
+        "lxc list [<remote>:] [filters] [--format table|json] [-c <columns>] [--fast]\n"
         "\n"
         "The filters are:\n"
         "* A single keyword like \"web\" which will list any container with a name starting by \"web\".\n"
@@ -568,18 +574,19 @@ msgid   "Lists the available resources.\n"
         "Default column layout: ns46tS\n"
         "Fast column layout: nsacPt\n"
         "\n"
-        "Example: lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:MAC\n"
+        "Example:\n"
+        "    lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:MAC"
 msgstr  ""
 
 #: lxc/info.go:239
 msgid   "Log:"
 msgstr  ""
 
-#: lxc/network.go:424
+#: lxc/network.go:423
 msgid   "MANAGED"
 msgstr  ""
 
-#: lxc/image.go:165
+#: lxc/image.go:164
 msgid   "Make image public"
 msgstr  ""
 
@@ -590,20 +597,20 @@ msgstr  ""
 #: lxc/profile.go:48
 msgid   "Manage configuration profiles.\n"
         "\n"
-        "lxc profile list [filters]                     List available profiles.\n"
-        "lxc profile show <profile>                     Show details of a profile.\n"
-        "lxc profile create <profile>                   Create a profile.\n"
-        "lxc profile copy <profile> <remote>            Copy the profile to the specified remote.\n"
-        "lxc profile get <profile> <key>                Get profile configuration.\n"
-        "lxc profile set <profile> <key> <value>        Set profile configuration.\n"
-        "lxc profile unset <profile> <key>              Unset profile configuration.\n"
-        "lxc profile delete <profile>                   Delete a profile.\n"
-        "lxc profile edit <profile>\n"
+        "lxc profile list [<remote>:]                                    List available profiles.\n"
+        "lxc profile show [<remote>:]<profile>                           Show details of a profile.\n"
+        "lxc profile create [<remote>:]<profile>                         Create a profile.\n"
+        "lxc profile copy [<remote>:]<profile> <remote>:[<profile>]      Copy the profile to the specified remote.\n"
+        "lxc profile get [<remote>:]<profile> <key>                      Get profile configuration.\n"
+        "lxc profile set [<remote>:]<profile> <key> <value>              Set profile configuration.\n"
+        "lxc profile unset [<remote>:]<profile> <key>                    Unset profile configuration.\n"
+        "lxc profile delete [<remote>:]<profile>                         Delete a profile.\n"
+        "lxc profile edit [<remote>:]<profile>\n"
         "    Edit profile, either by launching external editor or reading STDIN.\n"
         "    Example: lxc profile edit <profile> # launch editor\n"
         "             cat profile.yaml | lxc profile edit <profile> # read from profile.yaml\n"
         "\n"
-        "lxc profile assign <container> <profiles>\n"
+        "lxc profile assign [<remote>:]<container> <profiles>\n"
         "    Assign a comma-separated list of profiles to a container, in order.\n"
         "    All profiles passed in this call (and only those) will be applied\n"
         "    to the specified container, i.e. it sets the list of profiles exactly to\n"
@@ -613,51 +620,50 @@ msgid   "Manage configuration profiles.\n"
         "             lxc profile assign foo default # Only default is active\n"
         "             lxc profile assign '' # no profiles are applied anymore\n"
         "             lxc profile assign bar,default # Apply default second now\n"
-        "lxc profile add <container> <profile> # add a profile to a container\n"
-        "lxc profile remove <container> <profile> # remove the profile from a container\n"
+        "lxc profile add [<remote>:]<container> <profile> # add a profile to a container\n"
+        "lxc profile remove [<remote>:]<container> <profile> # remove the profile from a container\n"
         "\n"
         "Devices:\n"
-        "lxc profile device list <profile>                                   List devices in the given profile.\n"
-        "lxc profile device show <profile>                                   Show full device details in the given profile.\n"
-        "lxc profile device remove <profile> <name>                          Remove a device from a profile.\n"
-        "lxc profile device get <[remote:]profile> <name> <key>              Get a device property.\n"
-        "lxc profile device set <[remote:]profile> <name> <key> <value>      Set a device property.\n"
-        "lxc profile device unset <[remote:]profile> <name> <key>            Unset a device property.\n"
-        "lxc profile device add <profile name> <device name> <device type> [key=value]...\n"
-        "    Add a profile device, such as a disk or a nic, to the containers\n"
-        "    using the specified profile."
+        "lxc profile device list [<remote>:]<profile>                                List devices in the given profile.\n"
+        "lxc profile device show [<remote>:]<profile>                                Show full device details in the given profile.\n"
+        "lxc profile device remove [<remote>:]<profile> <name>                       Remove a device from a profile.\n"
+        "lxc profile device get [<remote>:]<profile> <name> <key>                    Get a device property.\n"
+        "lxc profile device set [<remote>:]<profile> <name> <key> <value>            Set a device property.\n"
+        "lxc profile device unset [<remote>:]<profile> <name> <key>                  Unset a device property.\n"
+        "lxc profile device add [<remote>:]<profile> <device> <type> [key=value...]\n"
+        "    Add a profile device, such as a disk or a nic, to the containers using the specified profile."
 msgstr  ""
 
 #: lxc/config.go:57
 msgid   "Manage configuration.\n"
         "\n"
-        "lxc config device add <[remote:]container> <name> <type> [key=value]...     Add a device to a container.\n"
-        "lxc config device get <[remote:]container> <name> <key>                     Get a device property.\n"
-        "lxc config device set <[remote:]container> <name> <key> <value>             Set a device property.\n"
-        "lxc config device unset <[remote:]container> <name> <key>                   Unset a device property.\n"
-        "lxc config device list <[remote:]container>                                 List devices for container.\n"
-        "lxc config device show <[remote:]container>                                 Show full device details for container.\n"
-        "lxc config device remove <[remote:]container> <name>                        Remove device from container.\n"
-        "\n"
-        "lxc config get [remote:][container] <key>                                   Get container or server configuration key.\n"
-        "lxc config set [remote:][container] <key> <value>                           Set container or server configuration key.\n"
-        "lxc config unset [remote:][container] <key>                                 Unset container or server configuration key.\n"
-        "lxc config show [remote:][container] [--expanded]                           Show container or server configuration.\n"
-        "lxc config edit [remote:][container]                                        Edit container or server configuration in external editor.\n"
+        "lxc config device add [<remote>:]<container> <device> <type> [key=value...]   Add a device to a container.\n"
+        "lxc config device get [<remote>:]<container> <device> <key>                   Get a device property.\n"
+        "lxc config device set [<remote>:]<container> <device> <key> <value>           Set a device property.\n"
+        "lxc config device unset [<remote>:]<container> <device> <key>                 Unset a device property.\n"
+        "lxc config device list [<remote>:]<container>                                 List devices for container.\n"
+        "lxc config device show [<remote>:]<container>                                 Show full device details for container.\n"
+        "lxc config device remove [<remote>:]<container> <name>                        Remove device from container.\n"
+        "\n"
+        "lxc config get [<remote>:][container] <key>                                   Get container or server configuration key.\n"
+        "lxc config set [<remote>:][container] <key> <value>                           Set container or server configuration key.\n"
+        "lxc config unset [<remote>:][container] <key>                                 Unset container or server configuration key.\n"
+        "lxc config show [<remote>:][container] [--expanded]                           Show container or server configuration.\n"
+        "lxc config edit [<remote>:][container]                                        Edit container or server configuration in external editor.\n"
         "    Edit configuration, either by launching external editor or reading STDIN.\n"
         "    Example: lxc config edit <container> # launch editor\n"
-        "             cat config.yaml | lxc config edit <config> # read from config.yaml\n"
+        "             cat config.yaml | lxc config edit <container> # read from config.yaml\n"
         "\n"
-        "lxc config trust list [remote]                                              List all trusted certs.\n"
-        "lxc config trust add [remote] <certfile.crt>                                Add certfile.crt to trusted hosts.\n"
-        "lxc config trust remove [remote] [hostname|fingerprint]                     Remove the cert from trusted hosts.\n"
+        "lxc config trust list [<remote>:]                                             List all trusted certs.\n"
+        "lxc config trust add [<remote>:] <certfile.crt>                               Add certfile.crt to trusted hosts.\n"
+        "lxc config trust remove [<remote>:] [hostname|fingerprint]                    Remove the cert from trusted hosts.\n"
         "\n"
         "Examples:\n"
         "To mount host's /share/c1 onto /opt in the container:\n"
-        "    lxc config device add [remote:]container1 <device-name> disk source=/share/c1 path=opt\n"
+        "    lxc config device add [<remote>:]container1 <device-name> disk source=/share/c1 path=opt\n"
         "\n"
         "To set an lxc config value:\n"
-        "    lxc config set [remote:]<container> raw.lxc 'lxc.aa_allow_incomplete = 1'\n"
+        "    lxc config set [<remote>:]<container> raw.lxc 'lxc.aa_allow_incomplete = 1'\n"
         "\n"
         "To listen on IPv4 and IPv6 port 8443 (you can omit the 8443 its the default):\n"
         "    lxc config set core.https_address [::]:8443\n"
@@ -667,55 +673,54 @@ msgid   "Manage configuration.\n"
 msgstr  ""
 
 #: lxc/file.go:36
-msgid   "Manage files on a container.\n"
+msgid   "Manage files in a container.\n"
         "\n"
-        "lxc file pull [-r|--recursive] <source> [<source>...] <target>\n"
-        "lxc file push [-r|--recursive] [-p|--create-dirs] [--uid=UID] [--gid=GID] [--mode=MODE] <source> [<source>...] <target>\n"
-        "lxc file edit <file>\n"
+        "lxc file pull [-r|--recursive] [<remote>:]<container> [[<remote>:]<container>...] <target path>\n"
+        "lxc file push [-r|--recursive] [-p|--create-dirs] [--uid=UID] [--gid=GID] [--mode=MODE] <source path> [<source path>...] [<remote>:]<container>\n"
+        "lxc file edit [<remote>:]<container>/<path>\n"
         "\n"
         "<source> in the case of pull, <target> in the case of push and <file> in the case of edit are <container name>/<path>\n"
         "\n"
         "Examples:\n"
-        "\n"
         "To push /etc/hosts into the container foo:\n"
-        "  lxc file push /etc/hosts foo/etc/hosts\n"
+        "    lxc file push /etc/hosts foo/etc/hosts\n"
         "\n"
         "To pull /etc/hosts from the container:\n"
-        "  lxc file pull foo/etc/hosts .\n"
+        "    lxc file pull foo/etc/hosts ."
 msgstr  ""
 
 #: lxc/network.go:48
 msgid   "Manage networks.\n"
         "\n"
-        "lxc network list                               List available networks.\n"
-        "lxc network show <network>                     Show details of a network.\n"
-        "lxc network create <network> [key=value]...    Create a network.\n"
-        "lxc network get <network> <key>                Get network configuration.\n"
-        "lxc network set <network> <key> <value>        Set network configuration.\n"
-        "lxc network unset <network> <key>              Unset network configuration.\n"
-        "lxc network delete <network>                   Delete a network.\n"
-        "lxc network edit <network>\n"
+        "lxc network list [<remote>:]                              List available networks.\n"
+        "lxc network show [<remote>:]<network>                     Show details of a network.\n"
+        "lxc network create [<remote>:]<network> [key=value...]    Create a network.\n"
+        "lxc network get [<remote>:]<network> <key>                Get network configuration.\n"
+        "lxc network set [<remote>:]<network> <key> <value>        Set network configuration.\n"
+        "lxc network unset [<remote>:]<network> <key>              Unset network configuration.\n"
+        "lxc network delete [<remote>:]<network>                   Delete a network.\n"
+        "lxc network edit [<remote>:]<network>\n"
         "    Edit network, either by launching external editor or reading STDIN.\n"
         "    Example: lxc network edit <network> # launch editor\n"
         "             cat network.yaml | lxc network edit <network> # read from network.yaml\n"
         "\n"
-        "lxc network attach <network> <container> [device name]\n"
-        "lxc network attach-profile <network> <profile> [device name]\n"
+        "lxc network attach [<remote>:]<network> <container> [device name]\n"
+        "lxc network attach-profile [<remote>:]<network> <profile> [device name]\n"
         "\n"
-        "lxc network detach <network> <container> [device name]\n"
-        "lxc network detach-profile <network> <container> [device name]\n"
+        "lxc network detach [<remote>:]<network> <container> [device name]\n"
+        "lxc network detach-profile [<remote>:]<network> <container> [device name]"
 msgstr  ""
 
-#: lxc/remote.go:38
+#: lxc/remote.go:37
 msgid   "Manage remote LXD servers.\n"
         "\n"
-        "lxc remote add [<name>] <IP|FQDN|URL> [--accept-certificate] [--password=PASSWORD]\n"
-        "                                      [--public] [--protocol=PROTOCOL]      Add the remote <name> at <url>.\n"
-        "lxc remote remove <name>                                                    Remove the remote <name>.\n"
+        "lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--password=PASSWORD]\n"
+        "                                        [--public] [--protocol=PROTOCOL]    Add the remote <name> at <url>.\n"
+        "lxc remote remove <remote>                                                  Remove the remote <name>.\n"
         "lxc remote list                                                             List all remotes.\n"
-        "lxc remote rename <old> <new>                                               Rename remote <old> to <new>.\n"
-        "lxc remote set-url <name> <url>                                             Update <name>'s url to <url>.\n"
-        "lxc remote set-default <name>                                               Set the default remote.\n"
+        "lxc remote rename <old name> <new name>                                     Rename remote <old> to <new>.\n"
+        "lxc remote set-url <remote> <url>                                           Update <name>'s url to <url>.\n"
+        "lxc remote set-default <remote>                                             Set the default remote.\n"
         "lxc remote get-default                                                      Print the default remote."
 msgstr  ""
 
@@ -737,19 +742,19 @@ msgid   "Manipulate container images.\n"
         "hash or alias name (if one is set).\n"
         "\n"
         "\n"
-        "lxc image import <tarball> [rootfs tarball|URL] [remote:] [--public] [--created-at=ISO-8601] [--expires-at=ISO-8601] [--fingerprint=FINGERPRINT] [--alias=ALIAS].. [prop=value]\n"
+        "lxc image import <tarball> [<rootfs tarball>|<URL>] [<remote>:] [--public] [--created-at=ISO-8601] [--expires-at=ISO-8601] [--fingerprint=FINGERPRINT] [--alias=ALIAS...] [prop=value]\n"
         "    Import an image tarball (or tarballs) into the LXD image store.\n"
         "\n"
-        "lxc image copy [remote:]<image> <remote>: [--alias=ALIAS].. [--copy-aliases] [--public] [--auto-update]\n"
+        "lxc image copy [<remote>:]<image> <remote>: [--alias=ALIAS...] [--copy-aliases] [--public] [--auto-update]\n"
         "    Copy an image from one LXD daemon to another over the network.\n"
         "\n"
         "    The auto-update flag instructs the server to keep this image up to\n"
         "    date. It requires the source to be an alias and for it to be public.\n"
         "\n"
-        "lxc image delete [remote:]<image> [remote:][<image>...]\n"
+        "lxc image delete [<remote>:]<image> [[<remote>:]<image>...]\n"
         "    Delete one or more images from the LXD image store.\n"
         "\n"
-        "lxc image export [remote:]<image> [target]\n"
+        "lxc image export [<remote>:]<image> [target]\n"
         "    Export an image from the LXD image store into a distributable tarball.\n"
         "\n"
         "    The output target is optional and defaults to the working directory.\n"
@@ -761,30 +766,30 @@ msgid   "Manipulate container images.\n"
         "    the appropriate extension will be appended to the provided file name\n"
         "    based on the algorithm used to compress the image. \n"
         "\n"
-        "lxc image info [remote:]<image>\n"
+        "lxc image info [<remote>:]<image>\n"
         "    Print everything LXD knows about a given image.\n"
         "\n"
-        "lxc image list [remote:] [filter] [--format table|json]\n"
+        "lxc image list [<remote>:] [filter] [--format table|json]\n"
         "    List images in the LXD image store. Filters may be of the\n"
         "    <key>=<value> form for property based filtering, or part of the image\n"
         "    hash or part of the image alias name.\n"
         "\n"
-        "lxc image show [remote:]<image>\n"
+        "lxc image show [<remote>:]<image>\n"
         "    Yaml output of the user modifiable properties of an image.\n"
         "\n"
-        "lxc image edit [remote:]<image>\n"
+        "lxc image edit [<remote>:]<image>\n"
         "    Edit image, either by launching external editor or reading STDIN.\n"
         "    Example: lxc image edit <image> # launch editor\n"
         "             cat image.yaml | lxc image edit <image> # read from image.yaml\n"
         "\n"
-        "lxc image alias create [remote:]<alias> <fingerprint>\n"
+        "lxc image alias create [<remote>:]<alias> <fingerprint>\n"
         "    Create a new alias for an existing image.\n"
         "\n"
-        "lxc image alias delete [remote:]<alias>\n"
+        "lxc image alias delete [<remote>:]<alias>\n"
         "    Delete an alias.\n"
         "\n"
-        "lxc image alias list [remote:] [filter]\n"
-        "    List the aliases. Filters may be part of the image hash or part of the image alias name.\n"
+        "lxc image alias list [<remote>:] [filter]\n"
+        "    List the aliases. Filters may be part of the image hash or part of the image alias name."
 msgstr  ""
 
 #: lxc/info.go:161
@@ -802,7 +807,7 @@ msgstr  ""
 #: lxc/monitor.go:41
 msgid   "Monitor activity on the LXD server.\n"
         "\n"
-        "lxc monitor [remote:] [--type=TYPE...]\n"
+        "lxc monitor [<remote>:] [--type=TYPE...]\n"
         "\n"
         "Connects to the monitoring interface of the specified LXD server.\n"
         "\n"
@@ -810,36 +815,39 @@ msgid   "Monitor activity on the LXD server.\n"
         "Specific types to listen to can be specified with --type.\n"
         "\n"
         "Example:\n"
-        "lxc monitor --type=logging"
+        "    lxc monitor --type=logging"
 msgstr  ""
 
-#: lxc/network.go:216 lxc/network.go:265
+#: lxc/network.go:215 lxc/network.go:264
 msgid   "More than one device matches, specify the device name."
 msgstr  ""
 
-#: lxc/file.go:239
+#: lxc/file.go:237
 msgid   "More than one file to download, but target is not a directory"
 msgstr  ""
 
 #: lxc/move.go:16
 msgid   "Move containers within or in between lxd instances.\n"
         "\n"
-        "lxc move [remote:]<source container> [remote:]<destination container>\n"
+        "lxc move [<remote>:]<source container> [<remote>:][<destination container>]\n"
         "    Move a container between two hosts, renaming it if destination name differs.\n"
         "\n"
         "lxc move <old name> <new name>\n"
         "    Rename a local container.\n"
+        "\n"
+        "lxc move <container>/<old snapshot name> <container>/<new snapshot name>\n"
+        "    Rename a snapshot."
 msgstr  ""
 
 #: lxc/action.go:69
 msgid   "Must supply container name for: "
 msgstr  ""
 
-#: lxc/list.go:428 lxc/network.go:422 lxc/profile.go:447 lxc/remote.go:381
+#: lxc/list.go:428 lxc/network.go:421 lxc/profile.go:446 lxc/remote.go:380
 msgid   "NAME"
 msgstr  ""
 
-#: lxc/network.go:408 lxc/remote.go:355 lxc/remote.go:360
+#: lxc/network.go:407 lxc/remote.go:354 lxc/remote.go:359
 msgid   "NO"
 msgstr  ""
 
@@ -848,12 +856,12 @@ msgstr  ""
 msgid   "Name: %s"
 msgstr  ""
 
-#: lxc/network.go:190
+#: lxc/network.go:189
 #, c-format
 msgid   "Network %s created"
 msgstr  ""
 
-#: lxc/network.go:293
+#: lxc/network.go:292
 #, c-format
 msgid   "Network %s deleted"
 msgstr  ""
@@ -862,7 +870,7 @@ msgstr  ""
 msgid   "Network name"
 msgstr  ""
 
-#: lxc/image.go:168 lxc/publish.go:34
+#: lxc/image.go:167 lxc/publish.go:34
 msgid   "New alias to define at target"
 msgstr  ""
 
@@ -870,7 +878,7 @@ msgstr  ""
 msgid   "No certificate provided to add"
 msgstr  ""
 
-#: lxc/network.go:225 lxc/network.go:274
+#: lxc/network.go:224 lxc/network.go:273
 msgid   "No device found for this network"
 msgstr  ""
 
@@ -878,11 +886,11 @@ msgstr  ""
 msgid   "No fingerprint specified."
 msgstr  ""
 
-#: lxc/remote.go:121
+#: lxc/remote.go:120
 msgid   "Only https URLs are supported for simplestreams"
 msgstr  ""
 
-#: lxc/image.go:425
+#: lxc/image.go:424
 msgid   "Only https:// is supported for remote image import."
 msgstr  ""
 
@@ -890,7 +898,7 @@ msgstr  ""
 msgid   "Options:"
 msgstr  ""
 
-#: lxc/image.go:536
+#: lxc/image.go:535
 #, c-format
 msgid   "Output is in %s"
 msgstr  ""
@@ -911,11 +919,11 @@ msgstr  ""
 msgid   "PROFILES"
 msgstr  ""
 
-#: lxc/remote.go:383
+#: lxc/remote.go:382
 msgid   "PROTOCOL"
 msgstr  ""
 
-#: lxc/image.go:638 lxc/remote.go:384
+#: lxc/image.go:637 lxc/remote.go:383
 msgid   "PUBLIC"
 msgstr  ""
 
@@ -928,11 +936,11 @@ msgid   "Packets sent"
 msgstr  ""
 
 #: lxc/help.go:70
-msgid   "Path to an alternate client configuration directory."
+msgid   "Path to an alternate client configuration directory"
 msgstr  ""
 
 #: lxc/help.go:71
-msgid   "Path to an alternate server directory."
+msgid   "Path to an alternate server directory"
 msgstr  ""
 
 #: lxc/main.go:31
@@ -944,34 +952,28 @@ msgstr  ""
 msgid   "Pid: %d"
 msgstr  ""
 
-#: lxc/help.go:25
-msgid   "Presents details on how to use LXD.\n"
-        "\n"
-        "lxd help [--all]"
-msgstr  ""
-
-#: lxc/network.go:343 lxc/profile.go:219
+#: lxc/network.go:342 lxc/profile.go:218
 msgid   "Press enter to open the editor again"
 msgstr  ""
 
-#: lxc/config.go:531 lxc/config.go:596 lxc/image.go:733
+#: lxc/config.go:531 lxc/config.go:596 lxc/image.go:732
 msgid   "Press enter to start the editor again"
 msgstr  ""
 
+#: lxc/manpage.go:18
+msgid   "Print all the subcommands help."
+msgstr  ""
+
 #: lxc/help.go:65
-msgid   "Print debug information."
+msgid   "Print debug information"
 msgstr  ""
 
 #: lxc/help.go:64
-msgid   "Print less common commands."
+msgid   "Print less common commands"
 msgstr  ""
 
 #: lxc/help.go:66
-msgid   "Print verbose information."
-msgstr  ""
-
-#: lxc/manpage.go:18
-msgid   "Prints all the subcommands help."
+msgid   "Print verbose information"
 msgstr  ""
 
 #: lxc/version.go:18
@@ -985,22 +987,22 @@ msgstr  ""
 msgid   "Processes: %d"
 msgstr  ""
 
-#: lxc/profile.go:275
+#: lxc/profile.go:274
 #, c-format
 msgid   "Profile %s added to %s"
 msgstr  ""
 
-#: lxc/profile.go:170
+#: lxc/profile.go:169
 #, c-format
 msgid   "Profile %s created"
 msgstr  ""
 
-#: lxc/profile.go:240
+#: lxc/profile.go:239
 #, c-format
 msgid   "Profile %s deleted"
 msgstr  ""
 
-#: lxc/profile.go:306
+#: lxc/profile.go:305
 #, c-format
 msgid   "Profile %s removed from %s"
 msgstr  ""
@@ -1009,7 +1011,7 @@ msgstr  ""
 msgid   "Profile to apply to the new container"
 msgstr  ""
 
-#: lxc/profile.go:256
+#: lxc/profile.go:255
 #, c-format
 msgid   "Profiles %s applied to %s"
 msgstr  ""
@@ -1019,15 +1021,15 @@ msgstr  ""
 msgid   "Profiles: %s"
 msgstr  ""
 
-#: lxc/image.go:359
+#: lxc/image.go:358
 msgid   "Properties:"
 msgstr  ""
 
-#: lxc/remote.go:55
+#: lxc/remote.go:54
 msgid   "Public image server"
 msgstr  ""
 
-#: lxc/image.go:347
+#: lxc/image.go:346
 #, c-format
 msgid   "Public: %s"
 msgstr  ""
@@ -1035,14 +1037,14 @@ msgstr  ""
 #: lxc/publish.go:26
 msgid   "Publish containers as images.\n"
         "\n"
-        "lxc publish [remote:]container [remote:] [--alias=ALIAS]... [prop-key=prop-value]..."
+        "lxc publish [<remote>:]<container>[/<snapshot>] [<remote>:] [--alias=ALIAS...] [prop-key=prop-value...]"
 msgstr  ""
 
-#: lxc/file.go:59 lxc/file.go:60
+#: lxc/file.go:57 lxc/file.go:58
 msgid   "Recursively push or pull files"
 msgstr  ""
 
-#: lxc/remote.go:53
+#: lxc/remote.go:52
 msgid   "Remote admin password"
 msgstr  ""
 
@@ -1057,19 +1059,35 @@ msgid   "Remove %s (yes/no): "
 msgstr  ""
 
 #: lxc/delete.go:36 lxc/delete.go:37
-msgid   "Require user confirmation."
+msgid   "Require user confirmation"
 msgstr  ""
 
 #: lxc/info.go:127
 msgid   "Resources:"
 msgstr  ""
 
+#: lxc/restore.go:21
+msgid   "Restore a container's state to a previous snapshot.\n"
+        "\n"
+        "lxc restore [<remote>:]<container> <snapshot> [--stateful]\n"
+        "\n"
+        "Restores a container from a snapshot (optionally with running state, see\n"
+        "snapshot help for details).\n"
+        "\n"
+        "Examples:\n"
+        "Create the snapshot:\n"
+        "    lxc snapshot u1 snap0\n"
+        "\n"
+        "Restore the snapshot:\n"
+        "    lxc restore u1 snap0"
+msgstr  ""
+
 #: lxc/init.go:239
 #, c-format
 msgid   "Retrieving image: %s"
 msgstr  ""
 
-#: lxc/image.go:641
+#: lxc/image.go:640
 msgid   "SIZE"
 msgstr  ""
 
@@ -1081,44 +1099,31 @@ msgstr  ""
 msgid   "STATE"
 msgstr  ""
 
-#: lxc/remote.go:385
+#: lxc/remote.go:384
 msgid   "STATIC"
 msgstr  ""
 
-#: lxc/remote.go:226
+#: lxc/remote.go:225
 msgid   "Server certificate NACKed by user"
 msgstr  ""
 
-#: lxc/remote.go:288
+#: lxc/remote.go:287
 msgid   "Server doesn't trust us after adding our cert"
 msgstr  ""
 
-#: lxc/remote.go:54
+#: lxc/remote.go:53
 msgid   "Server protocol (lxd or simplestreams)"
 msgstr  ""
 
-#: lxc/restore.go:21
-msgid   "Set the current state of a container back to a snapshot.\n"
-        "\n"
-        "lxc restore [remote:]<container> <snapshot name> [--stateful]\n"
-        "\n"
-        "Restores a container from a snapshot (optionally with running state, see\n"
-        "snapshot help for details).\n"
-        "\n"
-        "For example:\n"
-        "lxc snapshot u1 snap0 # create the snapshot\n"
-        "lxc restore u1 snap0 # restore the snapshot"
-msgstr  ""
-
-#: lxc/file.go:57
+#: lxc/file.go:55
 msgid   "Set the file's gid on push"
 msgstr  ""
 
-#: lxc/file.go:58
+#: lxc/file.go:56
 msgid   "Set the file's perms on push"
 msgstr  ""
 
-#: lxc/file.go:56
+#: lxc/file.go:54
 msgid   "Set the file's uid on push"
 msgstr  ""
 
@@ -1127,14 +1132,18 @@ msgid   "Show all commands (not just interesting ones)"
 msgstr  ""
 
 #: lxc/help.go:67
-msgid   "Show client version."
+msgid   "Show client version"
 msgstr  ""
 
 #: lxc/info.go:36
 msgid   "Show the container's last 100 log lines?"
 msgstr  ""
 
-#: lxc/image.go:345
+#: lxc/config.go:32
+msgid   "Show the expanded configuration"
+msgstr  ""
+
+#: lxc/image.go:344
 #, c-format
 msgid   "Size: %.2fMB"
 msgstr  ""
@@ -1143,7 +1152,7 @@ msgstr  ""
 msgid   "Snapshots:"
 msgstr  ""
 
-#: lxc/image.go:369
+#: lxc/image.go:368
 msgid   "Source:"
 msgstr  ""
 
@@ -1166,7 +1175,7 @@ msgid   "Stopping container failed!"
 msgstr  ""
 
 #: lxc/action.go:45
-msgid   "Store the container state (only for stop)."
+msgid   "Store the container state (only for stop)"
 msgstr  ""
 
 #: lxc/info.go:169
@@ -1177,7 +1186,7 @@ msgstr  ""
 msgid   "Swap (peak)"
 msgstr  ""
 
-#: lxc/list.go:433 lxc/network.go:423
+#: lxc/list.go:433 lxc/network.go:422
 msgid   "TYPE"
 msgstr  ""
 
@@ -1206,11 +1215,11 @@ msgstr  ""
 msgid   "The opposite of `lxc pause` is `lxc start`."
 msgstr  ""
 
-#: lxc/network.go:230 lxc/network.go:279
+#: lxc/network.go:229 lxc/network.go:278
 msgid   "The specified device doesn't exist"
 msgstr  ""
 
-#: lxc/network.go:234 lxc/network.go:283
+#: lxc/network.go:233 lxc/network.go:282
 msgid   "The specified device doesn't match the network"
 msgstr  ""
 
@@ -1219,10 +1228,10 @@ msgid   "There is no \"image name\".  Did you want an alias?"
 msgstr  ""
 
 #: lxc/action.go:41
-msgid   "Time to wait for the container before killing it."
+msgid   "Time to wait for the container before killing it"
 msgstr  ""
 
-#: lxc/image.go:348
+#: lxc/image.go:347
 msgid   "Timestamps:"
 msgstr  ""
 
@@ -1238,7 +1247,7 @@ msgstr  ""
 msgid   "To start your first container, try: lxc launch ubuntu:16.04"
 msgstr  ""
 
-#: lxc/image.go:427
+#: lxc/image.go:426
 #, c-format
 msgid   "Transferring image: %s"
 msgstr  ""
@@ -1256,23 +1265,23 @@ msgstr  ""
 msgid   "Type: persistent"
 msgstr  ""
 
-#: lxc/image.go:642
+#: lxc/image.go:641
 msgid   "UPLOAD DATE"
 msgstr  ""
 
-#: lxc/remote.go:382
+#: lxc/remote.go:381
 msgid   "URL"
 msgstr  ""
 
-#: lxc/network.go:425 lxc/profile.go:448
+#: lxc/network.go:424 lxc/profile.go:447
 msgid   "USED BY"
 msgstr  ""
 
-#: lxc/remote.go:96
+#: lxc/remote.go:95
 msgid   "Unable to read remote TLS certificate"
 msgstr  ""
 
-#: lxc/image.go:353
+#: lxc/image.go:352
 #, c-format
 msgid   "Uploaded: %s"
 msgstr  ""
@@ -1283,14 +1292,14 @@ msgid   "Usage: %s"
 msgstr  ""
 
 #: lxc/help.go:48
-msgid   "Usage: lxc [subcommand] [options]"
+msgid   "Usage: lxc <command> [options]"
 msgstr  ""
 
 #: lxc/delete.go:46
 msgid   "User aborted delete operation."
 msgstr  ""
 
-#: lxc/restore.go:35
+#: lxc/restore.go:38
 msgid   "Whether or not to restore the container's running state from snapshot (if available)"
 msgstr  ""
 
@@ -1298,11 +1307,7 @@ msgstr  ""
 msgid   "Whether or not to snapshot the container's running state"
 msgstr  ""
 
-#: lxc/config.go:32
-msgid   "Whether to show the expanded configuration"
-msgstr  ""
-
-#: lxc/network.go:410 lxc/remote.go:357 lxc/remote.go:362
+#: lxc/network.go:409 lxc/remote.go:356 lxc/remote.go:361
 msgid   "YES"
 msgstr  ""
 
@@ -1322,19 +1327,19 @@ msgstr  ""
 msgid   "can't copy to the same container name"
 msgstr  ""
 
-#: lxc/file.go:274
+#: lxc/file.go:272
 msgid   "can't pull a directory without --recursive"
 msgstr  ""
 
-#: lxc/remote.go:345
+#: lxc/remote.go:344
 msgid   "can't remove the default remote"
 msgstr  ""
 
-#: lxc/file.go:121
+#: lxc/file.go:119
 msgid   "can't supply uid/gid/mode in recursive mode"
 msgstr  ""
 
-#: lxc/remote.go:371
+#: lxc/remote.go:370
 msgid   "default"
 msgstr  ""
 
@@ -1342,11 +1347,11 @@ msgstr  ""
 msgid   "didn't get any affected image, container or snapshot from server"
 msgstr  ""
 
-#: lxc/image.go:339
+#: lxc/image.go:338
 msgid   "disabled"
 msgstr  ""
 
-#: lxc/image.go:341
+#: lxc/image.go:340
 msgid   "enabled"
 msgstr  ""
 
@@ -1364,7 +1369,7 @@ msgstr  ""
 msgid   "got bad version"
 msgstr  ""
 
-#: lxc/image.go:334 lxc/image.go:618
+#: lxc/image.go:333 lxc/image.go:617
 msgid   "no"
 msgstr  ""
 
@@ -1372,7 +1377,7 @@ msgstr  ""
 msgid   "not all the profiles from the source exist on the target"
 msgstr  ""
 
-#: lxc/remote.go:219
+#: lxc/remote.go:218
 msgid   "ok (y/n)?"
 msgstr  ""
 
@@ -1381,26 +1386,26 @@ msgstr  ""
 msgid   "processing aliases failed %s\n"
 msgstr  ""
 
-#: lxc/file.go:315
+#: lxc/file.go:313
 msgid   "recursive edit doesn't make sense :("
 msgstr  ""
 
-#: lxc/remote.go:407
+#: lxc/remote.go:406
 #, c-format
 msgid   "remote %s already exists"
 msgstr  ""
 
-#: lxc/remote.go:337 lxc/remote.go:399 lxc/remote.go:434 lxc/remote.go:450
+#: lxc/remote.go:336 lxc/remote.go:398 lxc/remote.go:433 lxc/remote.go:449
 #, c-format
 msgid   "remote %s doesn't exist"
 msgstr  ""
 
-#: lxc/remote.go:320
+#: lxc/remote.go:319
 #, c-format
 msgid   "remote %s exists as <%s>"
 msgstr  ""
 
-#: lxc/remote.go:341 lxc/remote.go:403 lxc/remote.go:438
+#: lxc/remote.go:340 lxc/remote.go:402 lxc/remote.go:437
 #, c-format
 msgid   "remote %s is static and cannot be modified"
 msgstr  ""
@@ -1426,7 +1431,7 @@ msgstr  ""
 msgid   "wrong number of subcommand arguments"
 msgstr  ""
 
-#: lxc/delete.go:45 lxc/image.go:336 lxc/image.go:622
+#: lxc/delete.go:45 lxc/image.go:335 lxc/image.go:621
 msgid   "yes"
 msgstr  ""
 


More information about the lxc-devel mailing list