[lxc-devel] [lxd/master] Port lxc to cobra and remove gnuflag

stgraber on Github lxc-bot at linuxcontainers.org
Thu Mar 29 06:01:07 UTC 2018


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/20180329/ec7cbd26/attachment.bin>
-------------- next part --------------
From 7931c593cf58877700bb039b29096fb51c4ba11d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Fri, 23 Mar 2018 23:39:11 -0400
Subject: [PATCH 01/39] cobra: Remove unused cmd reference
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>
---
 fuidshift/main_shift.go        | 2 --
 lxd-benchmark/main_delete.go   | 2 --
 lxd-benchmark/main_init.go     | 2 --
 lxd-benchmark/main_launch.go   | 4 +---
 lxd-benchmark/main_start.go    | 2 --
 lxd-benchmark/main_stop.go     | 2 --
 lxd-p2c/main_migrate.go        | 2 --
 lxd-p2c/main_netcat.go         | 2 --
 lxd/main_activateifneeded.go   | 2 --
 lxd/main_callhook.go           | 2 --
 lxd/main_daemon.go             | 2 --
 lxd/main_forkconsole.go        | 2 --
 lxd/main_forkexec.go           | 2 --
 lxd/main_forkfile.go           | 2 --
 lxd/main_forkmigrate.go        | 2 --
 lxd/main_forkmount.go          | 2 --
 lxd/main_forknet.go            | 2 --
 lxd/main_forkproxy.go          | 2 --
 lxd/main_forkstart.go          | 2 --
 lxd/main_import.go             | 2 --
 lxd/main_init.go               | 2 --
 lxd/main_migratedumpsuccess.go | 2 --
 lxd/main_netcat.go             | 2 --
 lxd/main_shutdown.go           | 2 --
 lxd/main_sql.go                | 2 --
 lxd/main_waitready.go          | 2 --
 26 files changed, 1 insertion(+), 53 deletions(-)

diff --git a/fuidshift/main_shift.go b/fuidshift/main_shift.go
index 74403aaed..98fe525ac 100644
--- a/fuidshift/main_shift.go
+++ b/fuidshift/main_shift.go
@@ -10,7 +10,6 @@ import (
 )
 
 type cmdShift struct {
-	cmd    *cobra.Command
 	global *cmdGlobal
 
 	flagReverse  bool
@@ -41,7 +40,6 @@ func (c *cmdShift) Command() *cobra.Command {
 	cmd.Flags().BoolVarP(&c.flagTestMode, "test", "t", false, "Test mode (no change to files)")
 	cmd.Flags().BoolVarP(&c.flagReverse, "reverse", "r", false, "Perform a reverse mapping")
 
-	c.cmd = cmd
 	return cmd
 }
 
diff --git a/lxd-benchmark/main_delete.go b/lxd-benchmark/main_delete.go
index f632a73fa..c9c12f177 100644
--- a/lxd-benchmark/main_delete.go
+++ b/lxd-benchmark/main_delete.go
@@ -7,7 +7,6 @@ import (
 )
 
 type cmdDelete struct {
-	cmd    *cobra.Command
 	global *cmdGlobal
 }
 
@@ -17,7 +16,6 @@ func (c *cmdDelete) Command() *cobra.Command {
 	cmd.Short = "Delete containers"
 	cmd.RunE = c.Run
 
-	c.cmd = cmd
 	return cmd
 }
 
diff --git a/lxd-benchmark/main_init.go b/lxd-benchmark/main_init.go
index 59553aef0..7e2068b71 100644
--- a/lxd-benchmark/main_init.go
+++ b/lxd-benchmark/main_init.go
@@ -7,7 +7,6 @@ import (
 )
 
 type cmdInit struct {
-	cmd    *cobra.Command
 	global *cmdGlobal
 
 	flagCount      int
@@ -22,7 +21,6 @@ func (c *cmdInit) Command() *cobra.Command {
 	cmd.Flags().IntVarP(&c.flagCount, "count", "C", 1, "Number of containers to create"+"``")
 	cmd.Flags().BoolVar(&c.flagPrivileged, "privileged", false, "Use privileged containers")
 
-	c.cmd = cmd
 	return cmd
 }
 
diff --git a/lxd-benchmark/main_launch.go b/lxd-benchmark/main_launch.go
index e7221e681..175387927 100644
--- a/lxd-benchmark/main_launch.go
+++ b/lxd-benchmark/main_launch.go
@@ -7,7 +7,6 @@ import (
 )
 
 type cmdLaunch struct {
-	cmd    *cobra.Command
 	global *cmdGlobal
 	init   *cmdInit
 
@@ -19,10 +18,9 @@ func (c *cmdLaunch) Command() *cobra.Command {
 	cmd.Use = "launch [[<remote>:]<image>]"
 	cmd.Short = "Create and start containers"
 	cmd.RunE = c.Run
-	cmd.Flags().AddFlagSet(c.init.cmd.Flags())
+	cmd.Flags().AddFlagSet(c.init.Command().Flags())
 	cmd.Flags().BoolVarP(&c.flagFreeze, "freeze", "F", false, "Freeze the container right after start")
 
-	c.cmd = cmd
 	return cmd
 }
 
diff --git a/lxd-benchmark/main_start.go b/lxd-benchmark/main_start.go
index 97b4d7ff0..c1cc0e3d5 100644
--- a/lxd-benchmark/main_start.go
+++ b/lxd-benchmark/main_start.go
@@ -7,7 +7,6 @@ import (
 )
 
 type cmdStart struct {
-	cmd    *cobra.Command
 	global *cmdGlobal
 }
 
@@ -17,7 +16,6 @@ func (c *cmdStart) Command() *cobra.Command {
 	cmd.Short = "Start containers"
 	cmd.RunE = c.Run
 
-	c.cmd = cmd
 	return cmd
 }
 
diff --git a/lxd-benchmark/main_stop.go b/lxd-benchmark/main_stop.go
index be6313e1f..056e0e179 100644
--- a/lxd-benchmark/main_stop.go
+++ b/lxd-benchmark/main_stop.go
@@ -7,7 +7,6 @@ import (
 )
 
 type cmdStop struct {
-	cmd    *cobra.Command
 	global *cmdGlobal
 }
 
@@ -17,7 +16,6 @@ func (c *cmdStop) Command() *cobra.Command {
 	cmd.Short = "Stop containers"
 	cmd.RunE = c.Run
 
-	c.cmd = cmd
 	return cmd
 }
 
diff --git a/lxd-p2c/main_migrate.go b/lxd-p2c/main_migrate.go
index 39c5f4536..39134e3f7 100644
--- a/lxd-p2c/main_migrate.go
+++ b/lxd-p2c/main_migrate.go
@@ -17,7 +17,6 @@ import (
 )
 
 type cmdMigrate struct {
-	cmd    *cobra.Command
 	global *cmdGlobal
 
 	flagConfig     []string
@@ -52,7 +51,6 @@ func (c *cmdMigrate) Command() *cobra.Command {
 	cmd.Flags().StringVarP(&c.flagType, "type", "t", "", "Instance type to use for the container"+"``")
 	cmd.Flags().BoolVar(&c.flagNoProfiles, "no-profiles", false, "Create the container with no profiles applied")
 
-	c.cmd = cmd
 	return cmd
 }
 
diff --git a/lxd-p2c/main_netcat.go b/lxd-p2c/main_netcat.go
index 53814bd16..db21bed71 100644
--- a/lxd-p2c/main_netcat.go
+++ b/lxd-p2c/main_netcat.go
@@ -13,7 +13,6 @@ import (
 )
 
 type cmdNetcat struct {
-	cmd    *cobra.Command
 	global *cmdGlobal
 }
 
@@ -25,7 +24,6 @@ func (c *cmdNetcat) Command() *cobra.Command {
 	cmd.RunE = c.Run
 	cmd.Hidden = true
 
-	c.cmd = cmd
 	return cmd
 }
 
diff --git a/lxd/main_activateifneeded.go b/lxd/main_activateifneeded.go
index 1356a4167..a3c9e282d 100644
--- a/lxd/main_activateifneeded.go
+++ b/lxd/main_activateifneeded.go
@@ -22,7 +22,6 @@ func init() {
 }
 
 type cmdActivateifneeded struct {
-	cmd    *cobra.Command
 	global *cmdGlobal
 }
 
@@ -42,7 +41,6 @@ func (c *cmdActivateifneeded) Command() *cobra.Command {
 `
 	cmd.RunE = c.Run
 
-	c.cmd = cmd
 	return cmd
 }
 
diff --git a/lxd/main_callhook.go b/lxd/main_callhook.go
index 1a7c8f58a..7d463808a 100644
--- a/lxd/main_callhook.go
+++ b/lxd/main_callhook.go
@@ -11,7 +11,6 @@ import (
 )
 
 type cmdCallhook struct {
-	cmd    *cobra.Command
 	global *cmdGlobal
 }
 
@@ -29,7 +28,6 @@ func (c *cmdCallhook) Command() *cobra.Command {
 	cmd.RunE = c.Run
 	cmd.Hidden = true
 
-	c.cmd = cmd
 	return cmd
 }
 
diff --git a/lxd/main_daemon.go b/lxd/main_daemon.go
index 5a8589ef5..9eb005a6a 100644
--- a/lxd/main_daemon.go
+++ b/lxd/main_daemon.go
@@ -15,7 +15,6 @@ import (
 )
 
 type cmdDaemon struct {
-	cmd    *cobra.Command
 	global *cmdGlobal
 
 	// Common options
@@ -46,7 +45,6 @@ func (c *cmdDaemon) Command() *cobra.Command {
 	cmd.Flags().StringVar(&c.flagMemoryProfile, "memory-profile", "", "Enable memory profiling, writing into the specified file"+"``")
 	cmd.Flags().IntVar(&c.flagPrintGoroutines, "print-goroutines", 0, "How often to print all the goroutines"+"``")
 
-	c.cmd = cmd
 	return cmd
 }
 
diff --git a/lxd/main_forkconsole.go b/lxd/main_forkconsole.go
index d6ceb747a..6842d4b11 100644
--- a/lxd/main_forkconsole.go
+++ b/lxd/main_forkconsole.go
@@ -12,7 +12,6 @@ import (
 )
 
 type cmdForkconsole struct {
-	cmd    *cobra.Command
 	global *cmdGlobal
 }
 
@@ -29,7 +28,6 @@ func (c *cmdForkconsole) Command() *cobra.Command {
 	cmd.RunE = c.Run
 	cmd.Hidden = true
 
-	c.cmd = cmd
 	return cmd
 }
 
diff --git a/lxd/main_forkexec.go b/lxd/main_forkexec.go
index 2768a51c9..b4430832e 100644
--- a/lxd/main_forkexec.go
+++ b/lxd/main_forkexec.go
@@ -14,7 +14,6 @@ import (
 )
 
 type cmdForkexec struct {
-	cmd    *cobra.Command
 	global *cmdGlobal
 }
 
@@ -32,7 +31,6 @@ func (c *cmdForkexec) Command() *cobra.Command {
 	cmd.RunE = c.Run
 	cmd.Hidden = true
 
-	c.cmd = cmd
 	return cmd
 }
 
diff --git a/lxd/main_forkfile.go b/lxd/main_forkfile.go
index 4c58ab223..73f470cac 100644
--- a/lxd/main_forkfile.go
+++ b/lxd/main_forkfile.go
@@ -438,7 +438,6 @@ void forkfile() {
 import "C"
 
 type cmdForkfile struct {
-	cmd    *cobra.Command
 	global *cmdGlobal
 }
 
@@ -484,7 +483,6 @@ func (c *cmdForkfile) Command() *cobra.Command {
 	cmdRemove.RunE = c.Run
 	cmd.AddCommand(cmdRemove)
 
-	c.cmd = cmd
 	return cmd
 }
 
diff --git a/lxd/main_forkmigrate.go b/lxd/main_forkmigrate.go
index 6ff9b8b52..f4cf21e75 100644
--- a/lxd/main_forkmigrate.go
+++ b/lxd/main_forkmigrate.go
@@ -11,7 +11,6 @@ import (
 )
 
 type cmdForkmigrate struct {
-	cmd    *cobra.Command
 	global *cmdGlobal
 }
 
@@ -29,7 +28,6 @@ func (c *cmdForkmigrate) Command() *cobra.Command {
 	cmd.RunE = c.Run
 	cmd.Hidden = true
 
-	c.cmd = cmd
 	return cmd
 }
 
diff --git a/lxd/main_forkmount.go b/lxd/main_forkmount.go
index b991c77ad..51591ae99 100644
--- a/lxd/main_forkmount.go
+++ b/lxd/main_forkmount.go
@@ -212,7 +212,6 @@ void forkmount() {
 import "C"
 
 type cmdForkmount struct {
-	cmd    *cobra.Command
 	global *cmdGlobal
 }
 
@@ -243,7 +242,6 @@ func (c *cmdForkmount) Command() *cobra.Command {
 	cmdUmount.RunE = c.Run
 	cmd.AddCommand(cmdUmount)
 
-	c.cmd = cmd
 	return cmd
 }
 
diff --git a/lxd/main_forknet.go b/lxd/main_forknet.go
index 39cbe0a18..98143982d 100644
--- a/lxd/main_forknet.go
+++ b/lxd/main_forknet.go
@@ -69,7 +69,6 @@ void forknet() {
 import "C"
 
 type cmdForknet struct {
-	cmd    *cobra.Command
 	global *cmdGlobal
 }
 
@@ -93,7 +92,6 @@ func (c *cmdForknet) Command() *cobra.Command {
 	cmdInfo.RunE = c.RunInfo
 	cmd.AddCommand(cmdInfo)
 
-	c.cmd = cmd
 	return cmd
 }
 
diff --git a/lxd/main_forkproxy.go b/lxd/main_forkproxy.go
index f55f3fcab..0c02199f9 100644
--- a/lxd/main_forkproxy.go
+++ b/lxd/main_forkproxy.go
@@ -125,7 +125,6 @@ void forkproxy() {
 import "C"
 
 type cmdForkproxy struct {
-	cmd    *cobra.Command
 	global *cmdGlobal
 }
 
@@ -144,7 +143,6 @@ func (c *cmdForkproxy) Command() *cobra.Command {
 	cmd.RunE = c.Run
 	cmd.Hidden = true
 
-	c.cmd = cmd
 	return cmd
 }
 
diff --git a/lxd/main_forkstart.go b/lxd/main_forkstart.go
index b94eff815..98ab7a96f 100644
--- a/lxd/main_forkstart.go
+++ b/lxd/main_forkstart.go
@@ -12,7 +12,6 @@ import (
 )
 
 type cmdForkstart struct {
-	cmd    *cobra.Command
 	global *cmdGlobal
 }
 
@@ -30,7 +29,6 @@ func (c *cmdForkstart) Command() *cobra.Command {
 	cmd.RunE = c.Run
 	cmd.Hidden = true
 
-	c.cmd = cmd
 	return cmd
 }
 
diff --git a/lxd/main_import.go b/lxd/main_import.go
index 829b3f492..0e75bd894 100644
--- a/lxd/main_import.go
+++ b/lxd/main_import.go
@@ -10,7 +10,6 @@ import (
 )
 
 type cmdImport struct {
-	cmd    *cobra.Command
 	global *cmdGlobal
 
 	flagForce bool
@@ -34,7 +33,6 @@ func (c *cmdImport) Command() *cobra.Command {
 	cmd.RunE = c.Run
 	cmd.Flags().BoolVarP(&c.flagForce, "force", "f", false, "Force the import (override existing data or partial restore)")
 
-	c.cmd = cmd
 	return cmd
 }
 
diff --git a/lxd/main_init.go b/lxd/main_init.go
index 7e7c2ab2b..06fd19bd4 100644
--- a/lxd/main_init.go
+++ b/lxd/main_init.go
@@ -27,7 +27,6 @@ type initDataCluster struct {
 }
 
 type cmdInit struct {
-	cmd    *cobra.Command
 	global *cmdGlobal
 
 	flagAuto    bool
@@ -66,7 +65,6 @@ func (c *cmdInit) Command() *cobra.Command {
 	cmd.Flags().StringVar(&c.flagStoragePool, "storage-pool", "", "Storage pool to use or create"+"``")
 	cmd.Flags().StringVar(&c.flagTrustPassword, "trust-password", "", "Password required to add new clients"+"``")
 
-	c.cmd = cmd
 	return cmd
 }
 
diff --git a/lxd/main_migratedumpsuccess.go b/lxd/main_migratedumpsuccess.go
index 9b9210cb1..e3f60c2ce 100644
--- a/lxd/main_migratedumpsuccess.go
+++ b/lxd/main_migratedumpsuccess.go
@@ -12,7 +12,6 @@ import (
 )
 
 type cmdMigratedumpsuccess struct {
-	cmd    *cobra.Command
 	global *cmdGlobal
 }
 
@@ -29,7 +28,6 @@ func (c *cmdMigratedumpsuccess) Command() *cobra.Command {
 	cmd.RunE = c.Run
 	cmd.Hidden = true
 
-	c.cmd = cmd
 	return cmd
 }
 
diff --git a/lxd/main_netcat.go b/lxd/main_netcat.go
index dbabf3eea..aec3c102b 100644
--- a/lxd/main_netcat.go
+++ b/lxd/main_netcat.go
@@ -14,7 +14,6 @@ import (
 )
 
 type cmdNetcat struct {
-	cmd    *cobra.Command
 	global *cmdGlobal
 }
 
@@ -34,7 +33,6 @@ func (c *cmdNetcat) Command() *cobra.Command {
 	cmd.RunE = c.Run
 	cmd.Hidden = true
 
-	c.cmd = cmd
 	return cmd
 }
 
diff --git a/lxd/main_shutdown.go b/lxd/main_shutdown.go
index 68c5d7956..e38b1e30a 100644
--- a/lxd/main_shutdown.go
+++ b/lxd/main_shutdown.go
@@ -11,7 +11,6 @@ import (
 )
 
 type cmdShutdown struct {
-	cmd    *cobra.Command
 	global *cmdGlobal
 
 	flagTimeout int
@@ -33,7 +32,6 @@ func (c *cmdShutdown) Command() *cobra.Command {
 	cmd.RunE = c.Run
 	cmd.Flags().IntVarP(&c.flagTimeout, "timeout", "t", 0, "Number of seconds to wait before giving up"+"``")
 
-	c.cmd = cmd
 	return cmd
 }
 
diff --git a/lxd/main_sql.go b/lxd/main_sql.go
index b60863ff4..b466cf7a1 100644
--- a/lxd/main_sql.go
+++ b/lxd/main_sql.go
@@ -13,7 +13,6 @@ import (
 )
 
 type cmdSql struct {
-	cmd    *cobra.Command
 	global *cmdGlobal
 }
 
@@ -34,7 +33,6 @@ func (c *cmdSql) Command() *cobra.Command {
 	cmd.RunE = c.Run
 	cmd.Hidden = true
 
-	c.cmd = cmd
 	return cmd
 }
 
diff --git a/lxd/main_waitready.go b/lxd/main_waitready.go
index 2a169376a..78bb62e82 100644
--- a/lxd/main_waitready.go
+++ b/lxd/main_waitready.go
@@ -10,7 +10,6 @@ import (
 )
 
 type cmdWaitready struct {
-	cmd    *cobra.Command
 	global *cmdGlobal
 
 	flagTimeout int
@@ -30,7 +29,6 @@ func (c *cmdWaitready) Command() *cobra.Command {
 	cmd.RunE = c.Run
 	cmd.Flags().IntVarP(&c.flagTimeout, "timeout", "t", 0, "Number of seconds to wait before giving up"+"``")
 
-	c.cmd = cmd
 	return cmd
 }
 

From ff49f289f2592e3c10f181b930dcd61c78c75b95 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 22 Mar 2018 17:40:22 -0400
Subject: [PATCH 02/39] tests: Don't use finger
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>
---
 test/extras/stresstest.sh | 6 +-----
 test/suites/remote.sh     | 2 +-
 2 files changed, 2 insertions(+), 6 deletions(-)

diff --git a/test/extras/stresstest.sh b/test/extras/stresstest.sh
index 6bb377cea..c9c85ae40 100755
--- a/test/extras/stresstest.sh
+++ b/test/extras/stresstest.sh
@@ -97,11 +97,7 @@ spawn_lxd() {
   LXD_DIR=$lxddir lxd ${DEBUG} $extraargs $* 2>&1 > $lxddir/lxd.log &
 
   echo "==> Confirming lxd on $addr is responsive"
-  alive=0
-  while [ $alive -eq 0 ]; do
-    [ -e "${lxddir}/unix.socket" ] && LXD_DIR=$lxddir lxc finger && alive=1
-    sleep 1s
-  done
+  LXD_DIR=$lxddir lxd waitready
 
   echo "==> Binding to network"
   LXD_DIR=$lxddir lxc config set core.https_address $addr
diff --git a/test/suites/remote.sh b/test/suites/remote.sh
index 93870b89e..e20f10bf1 100644
--- a/test/suites/remote.sh
+++ b/test/suites/remote.sh
@@ -2,7 +2,7 @@ test_remote_url() {
   # shellcheck disable=2153
   for url in "${LXD_ADDR}" "https://${LXD_ADDR}"; do
     lxc_remote remote add test "${url}" --accept-certificate --password foo
-    lxc_remote finger test:
+    lxc_remote info test:
     lxc_remote config trust list | grep @ | awk '{print $2}' | while read -r line ; do
       lxc_remote config trust remove "\"${line}\""
     done

From 096caf6efed6142e209222714786ddce36680a97 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 22 Mar 2018 16:01:24 -0400
Subject: [PATCH 03/39] shared/cmd: Add section formatter
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>
---
 shared/cmd/format.go | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)
 create mode 100644 shared/cmd/format.go

diff --git a/shared/cmd/format.go b/shared/cmd/format.go
new file mode 100644
index 000000000..6842ddff9
--- /dev/null
+++ b/shared/cmd/format.go
@@ -0,0 +1,34 @@
+package cmd
+
+import (
+	"strings"
+)
+
+// FormatSection properly indents a text section
+func FormatSection(header string, content string) string {
+	out := ""
+
+	// Add section header
+	if header != "" {
+		out += header + ":\n"
+	}
+
+	// Indent the content
+	for _, line := range strings.Split(content, "\n") {
+		if line != "" {
+			out += "  "
+		}
+
+		out += line + "\n"
+	}
+
+	if header != "" {
+		// Section separator (when rendering a full section
+		out += "\n"
+	} else {
+		// Remove last newline when rendering partial section
+		out = strings.TrimSuffix(out, "\n")
+	}
+
+	return out
+}

From 609670f122fec6a1d2a304ec1f5d697a44e0e1bb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 22 Mar 2018 01:31:44 -0400
Subject: [PATCH 04/39] lxc: Port to cobra
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Closes #490

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 lxc/help.go |  82 -------------------
 lxc/main.go | 268 +++++++++++++++++++++++++++++++++---------------------------
 2 files changed, 146 insertions(+), 204 deletions(-)
 delete mode 100644 lxc/help.go

diff --git a/lxc/help.go b/lxc/help.go
deleted file mode 100644
index fce7dfbd0..000000000
--- a/lxc/help.go
+++ /dev/null
@@ -1,82 +0,0 @@
-package main
-
-import (
-	"fmt"
-	"os"
-	"sort"
-
-	"github.com/lxc/lxd/lxc/config"
-	"github.com/lxc/lxd/shared/gnuflag"
-	"github.com/lxc/lxd/shared/i18n"
-)
-
-type helpCmd struct {
-	showAll bool
-}
-
-func (c *helpCmd) showByDefault() bool {
-	return true
-}
-
-func (c *helpCmd) usage() string {
-	return i18n.G(
-		`Usage: lxc help [--all]
-
-Help page for the LXD client.`)
-}
-
-func (c *helpCmd) flags() {
-	gnuflag.BoolVar(&c.showAll, "all", false, i18n.G("Show all commands (not just interesting ones)"))
-}
-
-func (c *helpCmd) run(conf *config.Config, args []string) error {
-	if len(args) > 0 {
-		for _, name := range args {
-			cmd, ok := commands[name]
-			if !ok {
-				fmt.Fprintf(os.Stderr, i18n.G("error: unknown command: %s")+"\n", name)
-			} else {
-				fmt.Fprintf(os.Stdout, cmd.usage()+"\n")
-			}
-		}
-		return nil
-	}
-
-	fmt.Println(i18n.G("Usage: lxc <command> [options]"))
-	fmt.Println()
-	fmt.Println(i18n.G(`This is the LXD command line client.
-
-All of LXD's features can be driven through the various commands below.
-For help with any of those, simply call them with --help.`))
-	fmt.Println()
-
-	fmt.Println(i18n.G("Commands:"))
-	var names []string
-	for name := range commands {
-		names = append(names, name)
-	}
-	sort.Strings(names)
-	for _, name := range names {
-		if name == "help" {
-			continue
-		}
-
-		cmd := commands[name]
-		if c.showAll || cmd.showByDefault() {
-			fmt.Printf("  %-16s %s\n", name, summaryLine(cmd.usage()))
-		}
-	}
-
-	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()
-	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"))
-
-	return nil
-}
diff --git a/lxc/main.go b/lxc/main.go
index 5982ac83d..44ee3b246 100644
--- a/lxc/main.go
+++ b/lxc/main.go
@@ -10,11 +10,13 @@ import (
 	"strings"
 	"syscall"
 
+	"github.com/spf13/cobra"
 	"gopkg.in/macaroon-bakery.v2/httpbakery/form"
 
+	"github.com/lxc/lxd/client"
 	"github.com/lxc/lxd/lxc/config"
 	"github.com/lxc/lxd/shared"
-	"github.com/lxc/lxd/shared/gnuflag"
+	cli "github.com/lxc/lxd/shared/cmd"
 	"github.com/lxc/lxd/shared/i18n"
 	"github.com/lxc/lxd/shared/logger"
 	"github.com/lxc/lxd/shared/logging"
@@ -26,33 +28,76 @@ import (
 var configPath string
 var execName string
 
+type cmdGlobal struct {
+	conf *config.Config
+
+	flagForceLocal bool
+	flagHelp       bool
+	flagHelpAll    bool
+	flagLogDebug   bool
+	flagLogVerbose bool
+	flagVersion    bool
+}
+
 func main() {
-	execName = os.Args[0]
-
-	if err := run(); err != nil {
-		msg := fmt.Sprintf(i18n.G("error: %v"), err)
-
-		lxdErr := getLocalErr(err)
-		switch lxdErr {
-		case syscall.ENOENT:
-			msg = i18n.G("LXD socket not found; is LXD installed and running?")
-		case syscall.ECONNREFUSED:
-			msg = i18n.G("Connection refused; is LXD running?")
-		case syscall.EACCES:
-			msg = i18n.G("Permission denied, are you in the lxd group?")
+	app := &cobra.Command{}
+	app.Use = "lxc"
+	app.Short = i18n.G("Command line client for LXD")
+	app.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Command line client for LXD
+
+All of LXD's features can be driven through the various commands below.
+For help with any of those, simply call them with --help.`))
+	app.SilenceUsage = true
+
+	// Global flags
+	globalCmd := cmdGlobal{}
+	app.PersistentFlags().BoolVar(&globalCmd.flagVersion, "version", false, i18n.G("Print version number"))
+	app.PersistentFlags().BoolVarP(&globalCmd.flagHelp, "help", "h", false, i18n.G("Print help"))
+	app.PersistentFlags().BoolVar(&globalCmd.flagForceLocal, "force-local", false, i18n.G("Force using the local unix socket"))
+	app.PersistentFlags().BoolVarP(&globalCmd.flagLogDebug, "debug", "d", false, i18n.G("Show all debug messages"))
+	app.PersistentFlags().BoolVarP(&globalCmd.flagLogVerbose, "verbose", "v", false, i18n.G("Show all information messages"))
+
+	// Local flags
+	app.Flags().BoolVar(&globalCmd.flagHelpAll, "all", false, i18n.G("Show less common commands"))
+
+	// Wrappers
+	app.PersistentPreRunE = globalCmd.PreRun
+	app.PersistentPostRunE = globalCmd.PostRun
+
+	// Version handling
+	app.SetVersionTemplate("{{.Version}}\n")
+	app.Version = version.Version
+
+	// Deal with --all flag
+	err := app.ParseFlags(os.Args[1:])
+	if err == nil {
+		if globalCmd.flagHelpAll {
+			// Show all commands
+			for _, cmd := range app.Commands() {
+				cmd.Hidden = false
+			}
 		}
+	}
 
-		fmt.Fprintln(os.Stderr, fmt.Sprintf("%s", msg))
+	// Run the main command and handle errors
+	err = app.Execute()
+	if err != nil {
 		os.Exit(1)
 	}
 }
 
-func run() error {
-	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"))
+func (c *cmdGlobal) PreRun(cmd *cobra.Command, args []string) error {
+	var err error
+
+	// FIXME: deal with aliases
 
+	// If calling the help, skip pre-run
+	if cmd.Name() == "help" {
+		return nil
+	}
+
+	// Figure out the config directory and config path
 	var configDir string
 	if os.Getenv("LXD_CONF") != "" {
 		configDir = os.Getenv("LXD_CONF")
@@ -68,102 +113,31 @@ func run() error {
 	}
 	configPath = os.ExpandEnv(path.Join(configDir, "config.yml"))
 
-	if len(os.Args) >= 3 && os.Args[1] == "config" && os.Args[2] == "profile" {
-		fmt.Fprintf(os.Stderr, i18n.G("`lxc config profile` is deprecated, please use `lxc profile`")+"\n")
-		os.Args = append(os.Args[:1], os.Args[2:]...)
-	}
-
-	if len(os.Args) >= 2 && (os.Args[1] == "-h" || os.Args[1] == "--help") {
-		os.Args[1] = "help"
-	}
-
-	if len(os.Args) >= 2 && (os.Args[1] == "--all") {
-		os.Args = []string{os.Args[0], "help", "--all"}
-	}
-
-	if shared.StringInSlice("--version", os.Args) && !shared.StringInSlice("--", os.Args) {
-		os.Args = []string{os.Args[0], "version"}
-	}
-
-	if len(os.Args) < 2 {
-		commands["help"].run(nil, nil)
-		os.Exit(1)
-	}
-
-	var conf *config.Config
-	var err error
-
-	if *forceLocal {
-		conf = config.NewConfig("", true)
+	// Load the configuration
+	if c.flagForceLocal {
+		c.conf = config.NewConfig("", true)
 	} else if shared.PathExists(configPath) {
-		conf, err = config.LoadConfig(configPath)
+		c.conf, err = config.LoadConfig(configPath)
 		if err != nil {
 			return err
 		}
 	} else {
-		conf = config.NewConfig(filepath.Dir(configPath), true)
-	}
-
-	// Add interactor for external authentication
-	conf.SetAuthInteractor(form.Interactor{Filler: schemaform.IOFiller{}})
-
-	// Save cookies on exit
-	defer conf.SaveCookies()
-
-	// Set the user agent
-	conf.UserAgent = version.UserAgent
-
-	// This is quite impolite, but it seems gnuflag needs us to shift our
-	// own exename out of the arguments before parsing them. However, this
-	// is useful for execIfAlias, which wants to know exactly the command
-	// line we received, and in some cases is called before this shift, and
-	// in others after. So, let's save the original args.
-	origArgs := os.Args
-	name := os.Args[1]
-
-	/* at this point we haven't parsed the args, so we have to look for
-	 * --no-alias by hand.
-	 */
-	if !shared.StringInSlice("--no-alias", origArgs) {
-		execIfAliases(conf, origArgs)
-	}
-	cmd, ok := commands[name]
-	if !ok {
-		commands["help"].run(nil, nil)
-		fmt.Fprintf(os.Stderr, "\n"+i18n.G("error: unknown command: %s")+"\n", name)
-		os.Exit(1)
-	}
-	cmd.flags()
-	gnuflag.Usage = func() {
-		fmt.Print(cmd.usage())
-		fmt.Printf("\n\n%s\n", i18n.G("Options:"))
-
-		gnuflag.SetOut(os.Stdout)
-		gnuflag.PrintDefaults()
-		os.Exit(0)
-	}
-
-	os.Args = os.Args[1:]
-	gnuflag.Parse(true)
-
-	logger.Log, err = logging.GetLogger("", "", *verbose, *debug, nil)
-	if err != nil {
-		return err
+		c.conf = config.NewConfig(filepath.Dir(configPath), true)
 	}
 
 	// If the user is running a command that may attempt to connect to the local daemon
 	// and this is the first time the client has been run by the user, then check to see
 	// if LXD has been properly configured.  Don't display the message if the var path
 	// does not exist (LXD not installed), as the user may be targeting a remote daemon.
-	if os.Args[0] != "help" && os.Args[0] != "version" && shared.PathExists(shared.VarPath("")) && !shared.PathExists(configPath) {
+	if shared.PathExists(shared.VarPath("")) && !shared.PathExists(configPath) {
 		// Create the config dir so that we don't get in here again for this user.
-		err = os.MkdirAll(conf.ConfigDir, 0750)
+		err = os.MkdirAll(c.conf.ConfigDir, 0750)
 		if err != nil {
 			return err
 		}
 
 		// And save the initial configuration
-		err = conf.SaveConfig(configPath)
+		err = c.conf.SaveConfig(configPath)
 		if err != nil {
 			return err
 		}
@@ -172,37 +146,88 @@ func run() error {
 		fmt.Fprintf(os.Stderr, i18n.G("To start your first container, try: lxc launch ubuntu:16.04")+"\n\n")
 	}
 
-	err = cmd.run(conf, gnuflag.Args())
-	if err == errArgs || err == errUsage {
-		out := os.Stdout
-		if err == errArgs {
-			/* If we got an error about invalid arguments, let's try to
-			 * expand this as an alias
-			 */
-			if !*noAlias {
-				execIfAliases(conf, origArgs)
-			}
+	// Only setup macaroons if a config path exists (so the jar can be saved)
+	if shared.PathExists(configPath) {
+		// Add interactor for external authentication
+		c.conf.SetAuthInteractor(form.Interactor{Filler: schemaform.IOFiller{}})
+	}
+
+	// Set the user agent
+	c.conf.UserAgent = version.UserAgent
+
+	// Setup the logger
+	logger.Log, err = logging.GetLogger("", "", c.flagLogVerbose, c.flagLogDebug, nil)
+	if err != nil {
+		return err
+	}
+
+	return nil
+}
+
+func (c *cmdGlobal) PostRun(cmd *cobra.Command, args []string) error {
+	// Macaroon teardown
+	if c.conf != nil && shared.PathExists(c.confPath) {
+		// Save cookies on exit
+		c.conf.SaveCookies()
+	}
 
-			out = os.Stderr
+	return nil
+}
+
+type remoteResource struct {
+	server lxd.ContainerServer
+	name   string
+}
+
+func (c *cmdGlobal) ParseServers(remotes ...string) ([]remoteResource, error) {
+	servers := map[string]lxd.ContainerServer{}
+	resources := []remoteResource{}
+
+	for _, remote := range remotes {
+		// Parse the remote
+		remoteName, name, err := c.conf.ParseRemote(remote)
+		if err != nil {
+			return nil, err
+		}
+
+		// Setup the struct
+		resource := remoteResource{
+			name: name,
 		}
-		gnuflag.SetOut(out)
 
-		if err == errArgs {
-			fmt.Fprintf(out, i18n.G("error: %v"), err)
-			fmt.Fprintf(out, "\n\n")
+		// Look at our cache
+		_, ok := servers[remoteName]
+		if ok {
+			resource.server = servers[remoteName]
+			resources = append(resources, resource)
+			continue
 		}
-		fmt.Fprint(out, cmd.usage())
-		fmt.Fprintf(out, "\n\n%s\n", i18n.G("Options:"))
 
-		gnuflag.PrintDefaults()
+		// New connection
+		d, err := c.conf.GetContainerServer(remoteName)
+		if err != nil {
+			return nil, err
+		}
+
+		resource.server = d
+		resources = append(resources, resource)
+	}
 
-		if err == errArgs {
-			os.Exit(1)
+	return resources, nil
+}
+
+func (c *cmdGlobal) CheckArgs(cmd *cobra.Command, args []string, minArgs int, maxArgs int) (bool, error) {
+	if len(args) < minArgs || (maxArgs != -1 && len(args) > maxArgs) {
+		cmd.Help()
+
+		if len(args) == 0 {
+			return true, nil
 		}
-		os.Exit(0)
+
+		return true, fmt.Errorf(i18n.G("Invalid number of arguments"))
 	}
 
-	return err
+	return false, nil
 }
 
 type command interface {
@@ -223,7 +248,6 @@ var commands = map[string]command{
 	"file":      &fileCmd{},
 	"finger":    &fingerCmd{},
 	"query":     &queryCmd{},
-	"help":      &helpCmd{},
 	"image":     &imageCmd{},
 	"info":      &infoCmd{},
 	"init":      &initCmd{},

From 7746e8e53942e2b7de39aaa4aabefca5d61fd162 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 22 Mar 2018 01:32:25 -0400
Subject: [PATCH 05/39] lxc/list: Port to cobra
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     |   2 +-
 lxc/list.go      | 215 ++++++++++++++++++++++++++-----------------------------
 lxc/list_test.go |   8 +--
 lxc/main.go      |   6 +-
 4 files changed, 110 insertions(+), 121 deletions(-)

diff --git a/lxc/image.go b/lxc/image.go
index 1b76cd48e..5493687e7 100644
--- a/lxc/image.go
+++ b/lxc/image.go
@@ -1231,7 +1231,7 @@ func (c *imageCmd) imageShouldShow(filters []string, state *api.Image) bool {
 			}
 
 			for configKey, configValue := range state.Properties {
-				list := listCmd{}
+				list := cmdList{}
 				if list.dotPrefixMatch(key, configKey) {
 					//try to test filter value as a regexp
 					regexpValue := value
diff --git a/lxc/list.go b/lxc/list.go
index ad487b2c5..f204b274c 100644
--- a/lxc/list.go
+++ b/lxc/list.go
@@ -12,13 +12,14 @@ import (
 	"sync"
 
 	"github.com/olekukonko/tablewriter"
+	"github.com/spf13/cobra"
 	"gopkg.in/yaml.v2"
 
 	"github.com/lxc/lxd/client"
 	"github.com/lxc/lxd/lxc/config"
 	"github.com/lxc/lxd/shared"
 	"github.com/lxc/lxd/shared/api"
-	"github.com/lxc/lxd/shared/gnuflag"
+	cli "github.com/lxc/lxd/shared/cmd"
 	"github.com/lxc/lxd/shared/i18n"
 )
 
@@ -31,42 +32,40 @@ type column struct {
 
 type columnData func(api.Container, *api.ContainerState, []api.ContainerSnapshot) string
 
-type listCmd struct {
-	columnsRaw string
-	fast       bool
-	format     string
-}
+type cmdList struct {
+	global *cmdGlobal
 
-func (c *listCmd) showByDefault() bool {
-	return true
+	flagColumns string
+	flagFast    bool
+	flagFormat  string
 }
 
-func (c *listCmd) usage() string {
-	return i18n.G(
-		`Usage: lxc list [<remote>:] [filters] [--format csv|json|table|yaml] [-c <columns>] [--fast]
-
-List the existing containers.
+func (c *cmdList) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("list [<remote>:] [filters]")
+	cmd.Aliases = []string{"ls"}
+	cmd.Short = i18n.G("List containers")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`List containers
 
 Default column layout: ns46tS
 Fast column layout: nsacPt
 
-*Filters*
+== Filters ==
 A single keyword like "web" which will list any container with a name starting by "web".
-
 A regular expression on the container name. (e.g. .*web.*01$).
+A key/value pair referring to a configuration item. For those, the
+namespace can be abbreviated to the smallest unambiguous identifier.
 
-A key/value pair referring to a configuration item. For those, the namespace can be abbreviated to the smallest unambiguous identifier.
-	- "user.blah=abc" will list all containers with the "blah" user property set to "abc".
-
-	- "u.blah=abc" will do the same
-
-	- "security.privileged=true" will list all privileged containers
-
-	- "s.privileged=true" will do the same
+Examples:
+  - "user.blah=abc" will list all containers with the "blah" user property set to "abc".
+  - "u.blah=abc" will do the same
+  - "security.privileged=true" will list all privileged containers
+  - "s.privileged=true" will do the same
 
 A regular expression matching a configuration item or its value. (e.g. volatile.eth0.hwaddr=00:16:3e:.*).
 
-*Columns*
+== Columns ==
 The -c option takes a comma separated list of arguments that control
 which container attributes to output when displaying in table or csv
 format.
@@ -77,69 +76,50 @@ or (extended) config keys.
 Commas between consecutive shorthand chars are optional.
 
 Pre-defined column shorthand chars:
-
-	4 - IPv4 address
-
-	6 - IPv6 address
-
-	a - Architecture
-
-	b - Storage pool
-
-	c - Creation date
-
-	d - Description
-
-	l - Last used date
-
-	n - Name
-
-	N - Number of Processes
-
-	p - PID of the container's init process
-
-	P - Profiles
-
-	s - State
-
-	S - Number of snapshots
-
-	t - Type (persistent or ephemeral)
-
-	L - Location of the container (e.g. its node)
+  4 - IPv4 address
+  6 - IPv6 address
+  a - Architecture
+  b - Storage pool
+  c - Creation date
+  d - Description
+  l - Last used date
+  n - Name
+  N - Number of Processes
+  p - PID of the container's init process
+  P - Profiles
+  s - State
+  S - Number of snapshots
+  t - Type (persistent or ephemeral)
+  L - Location of the container (e.g. its node)
 
 Custom columns are defined with "key[:name][:maxWidth]":
+  KEY: The (extended) config key to display
+  NAME: Name to display in the column header.
+  Defaults to the key if not specified or empty.
 
-	KEY: The (extended) config key to display
+  MAXWIDTH: Max width of the column (longer results are truncated).
+  Defaults to -1 (unlimited). Use 0 to limit to the column header size.`))
 
-	NAME: Name to display in the column header.
-	Defaults to the key if not specified or empty.
+	cmd.Example = cli.FormatSection("", i18n.G(
+		`lxc list -c n,volatile.base_image:"BASE IMAGE":0,s46,volatile.eth0.hwaddr:MAC
+  Show containers using the "NAME", "BASE IMAGE", "STATE", "IPV4", "IPV6" and "MAC" columns.
+  "BASE IMAGE" and "MAC" are custom columns generated from container configuration keys.
 
-	MAXWIDTH: Max width of the column (longer results are truncated).
-	Defaults to -1 (unlimited). Use 0 to limit to the column header size.
-
-*Examples*
-lxc list -c n,volatile.base_image:"BASE IMAGE":0,s46,volatile.eth0.hwaddr:MAC
-	Shows a list of containers using the "NAME", "BASE IMAGE", "STATE", "IPV4",
-	"IPV6" and "MAC" columns.
+lxc list -c ns,user.comment:comment
+  List images with their running state and user comment.`))
 
-	"BASE IMAGE" and "MAC" are custom columns generated from container configuration keys.
+	cmd.RunE = c.Run
+	cmd.Flags().StringVarP(&c.flagColumns, "columns", "c", defaultColumns, i18n.G("Columns")+"``")
+	cmd.Flags().StringVar(&c.flagFormat, "format", "table", i18n.G("Format (csv|json|table|yaml)")+"``")
+	cmd.Flags().BoolVar(&c.flagFast, "fast", false, i18n.G("Fast mode (same as --columns=nsacPt)"))
 
-lxc list -c ns,user.comment:comment
-	List images with their running state and user comment. `)
+	return cmd
 }
 
 const defaultColumns = "ns46tSL"
 
-func (c *listCmd) flags() {
-	gnuflag.StringVar(&c.columnsRaw, "c", defaultColumns, i18n.G("Columns"))
-	gnuflag.StringVar(&c.columnsRaw, "columns", defaultColumns, i18n.G("Columns"))
-	gnuflag.StringVar(&c.format, "format", "table", i18n.G("Format (csv|json|table|yaml)"))
-	gnuflag.BoolVar(&c.fast, "fast", false, i18n.G("Fast mode (same as --columns=nsacPt)"))
-}
-
 // This seems a little excessive.
-func (c *listCmd) dotPrefixMatch(short string, full string) bool {
+func (c *cmdList) dotPrefixMatch(short string, full string) bool {
 	fullMembs := strings.Split(full, ".")
 	shortMembs := strings.Split(short, ".")
 
@@ -156,7 +136,7 @@ func (c *listCmd) dotPrefixMatch(short string, full string) bool {
 	return true
 }
 
-func (c *listCmd) shouldShow(filters []string, state *api.Container) bool {
+func (c *cmdList) shouldShow(filters []string, state *api.Container) bool {
 	for _, filter := range filters {
 		if strings.Contains(filter, "=") {
 			membs := strings.SplitN(filter, "=", 2)
@@ -221,7 +201,7 @@ func (c *listCmd) shouldShow(filters []string, state *api.Container) bool {
 	return true
 }
 
-func (c *listCmd) listContainers(conf *config.Config, remote string, cinfos []api.Container, filters []string, columns []column) error {
+func (c *cmdList) listContainers(conf *config.Config, remote string, cinfos []api.Container, filters []string, columns []column) error {
 	headers := []string{}
 	for _, column := range columns {
 		headers = append(headers, column.Name)
@@ -362,7 +342,7 @@ func (c *listCmd) listContainers(conf *config.Config, remote string, cinfos []ap
 		return data
 	}
 
-	switch c.format {
+	switch c.flagFormat {
 	case listFormatCSV:
 		w := csv.NewWriter(os.Stdout)
 		w.WriteAll(tableData())
@@ -403,7 +383,7 @@ func (c *listCmd) listContainers(conf *config.Config, remote string, cinfos []ap
 		}
 		fmt.Printf("%s", out)
 	default:
-		return fmt.Errorf("invalid format %q", c.format)
+		return fmt.Errorf(i18n.G("Invalid format %q"), c.flagFormat)
 	}
 
 	return nil
@@ -416,10 +396,12 @@ type listContainerItem struct {
 	Snapshots []api.ContainerSnapshot `json:"snapshots" yaml:"snapshots"`
 }
 
-func (c *listCmd) run(conf *config.Config, args []string) error {
-	var remote string
-	name := ""
+func (c *cmdList) Run(cmd *cobra.Command, args []string) error {
+	conf := c.global.conf
 
+	// Parse the remote
+	var remote string
+	var name string
 	filters := []string{}
 
 	if len(args) != 0 {
@@ -443,17 +425,20 @@ func (c *listCmd) run(conf *config.Config, args []string) error {
 		remote = conf.DefaultRemote
 	}
 
+	// Connect to LXD
 	d, err := conf.GetContainerServer(remote)
 	if err != nil {
 		return err
 	}
 
+	// Get the list of containers
 	var cts []api.Container
 	ctslist, err := d.GetContainers()
 	if err != nil {
 		return err
 	}
 
+	// Apply filters
 	for _, cinfo := range ctslist {
 		if !c.shouldShow(filters, &cinfo) {
 			continue
@@ -462,15 +447,17 @@ func (c *listCmd) run(conf *config.Config, args []string) error {
 		cts = append(cts, cinfo)
 	}
 
+	// Get the list of columns
 	columns, err := c.parseColumns(d.IsClustered())
 	if err != nil {
 		return err
 	}
 
+	// Fetch any remaining data and render the table
 	return c.listContainers(conf, remote, cts, filters, columns)
 }
 
-func (c *listCmd) parseColumns(clustered bool) ([]column, error) {
+func (c *cmdList) parseColumns(clustered bool) ([]column, error) {
 	columnsShorthandMap := map[rune]column{
 		'4': {i18n.G("IPV4"), c.IP4ColumnData, true, false},
 		'6': {i18n.G("IPV6"), c.IP6ColumnData, true, false},
@@ -488,33 +475,33 @@ func (c *listCmd) parseColumns(clustered bool) ([]column, error) {
 		'b': {i18n.G("STORAGE POOL"), c.StoragePoolColumnData, false, false},
 	}
 
-	if c.fast {
-		if c.columnsRaw != defaultColumns {
+	if c.flagFast {
+		if c.flagColumns != defaultColumns {
 			// --columns was specified too
-			return nil, fmt.Errorf("Can't specify --fast with --columns")
+			return nil, fmt.Errorf(i18n.G("Can't specify --fast with --columns"))
 		}
 
-		c.columnsRaw = "nsacPt"
+		c.flagColumns = "nsacPt"
 	}
 
 	if clustered {
 		columnsShorthandMap['L'] = column{
 			i18n.G("LOCATION"), c.locationColumnData, false, false}
 	} else {
-		if c.columnsRaw != defaultColumns {
-			if strings.ContainsAny(c.columnsRaw, "L") {
-				return nil, fmt.Errorf("Can't specify column L when not clustered")
+		if c.flagColumns != defaultColumns {
+			if strings.ContainsAny(c.flagColumns, "L") {
+				return nil, fmt.Errorf(i18n.G("Can't specify column L when not clustered"))
 			}
 		}
-		c.columnsRaw = strings.Replace(c.columnsRaw, "L", "", -1)
+		c.flagColumns = strings.Replace(c.flagColumns, "L", "", -1)
 	}
 
-	columnList := strings.Split(c.columnsRaw, ",")
+	columnList := strings.Split(c.flagColumns, ",")
 
 	columns := []column{}
 	for _, columnEntry := range columnList {
 		if columnEntry == "" {
-			return nil, fmt.Errorf("Empty column entry (redundant, leading or trailing command) in '%s'", c.columnsRaw)
+			return nil, fmt.Errorf(i18n.G("Empty column entry (redundant, leading or trailing command) in '%s'"), c.flagColumns)
 		}
 
 		// Config keys always contain a period, parse anything without a
@@ -524,24 +511,24 @@ func (c *listCmd) parseColumns(clustered bool) ([]column, error) {
 				if column, ok := columnsShorthandMap[columnRune]; ok {
 					columns = append(columns, column)
 				} else {
-					return nil, fmt.Errorf("Unknown column shorthand char '%c' in '%s'", columnRune, columnEntry)
+					return nil, fmt.Errorf(i18n.G("Unknown column shorthand char '%c' in '%s'"), columnRune, columnEntry)
 				}
 			}
 		} else {
 			cc := strings.Split(columnEntry, ":")
 			if len(cc) > 3 {
-				return nil, fmt.Errorf("Invalid config key column format (too many fields): '%s'", columnEntry)
+				return nil, fmt.Errorf(i18n.G("Invalid config key column format (too many fields): '%s'"), columnEntry)
 			}
 
 			k := cc[0]
 			if _, err := shared.ConfigKeyChecker(k); err != nil {
-				return nil, fmt.Errorf("Invalid config key '%s' in '%s'", k, columnEntry)
+				return nil, fmt.Errorf(i18n.G("Invalid config key '%s' in '%s'"), k, columnEntry)
 			}
 
 			column := column{Name: k}
 			if len(cc) > 1 {
 				if len(cc[1]) == 0 && len(cc) != 3 {
-					return nil, fmt.Errorf("Invalid name in '%s', empty string is only allowed when defining maxWidth", columnEntry)
+					return nil, fmt.Errorf(i18n.G("Invalid name in '%s', empty string is only allowed when defining maxWidth"), columnEntry)
 				}
 				column.Name = cc[1]
 			}
@@ -550,10 +537,10 @@ func (c *listCmd) parseColumns(clustered bool) ([]column, error) {
 			if len(cc) > 2 {
 				temp, err := strconv.ParseInt(cc[2], 10, 64)
 				if err != nil {
-					return nil, fmt.Errorf("Invalid max width (must be an integer) '%s' in '%s'", cc[2], columnEntry)
+					return nil, fmt.Errorf(i18n.G("Invalid max width (must be an integer) '%s' in '%s'"), cc[2], columnEntry)
 				}
 				if temp < -1 {
-					return nil, fmt.Errorf("Invalid max width (must -1, 0 or a positive integer) '%s' in '%s'", cc[2], columnEntry)
+					return nil, fmt.Errorf(i18n.G("Invalid max width (must -1, 0 or a positive integer) '%s' in '%s'"), cc[2], columnEntry)
 				}
 				if temp == 0 {
 					maxWidth = len(column.Name)
@@ -581,19 +568,19 @@ func (c *listCmd) parseColumns(clustered bool) ([]column, error) {
 	return columns, nil
 }
 
-func (c *listCmd) nameColumnData(cInfo api.Container, cState *api.ContainerState, cSnaps []api.ContainerSnapshot) string {
+func (c *cmdList) nameColumnData(cInfo api.Container, cState *api.ContainerState, cSnaps []api.ContainerSnapshot) string {
 	return cInfo.Name
 }
 
-func (c *listCmd) descriptionColumnData(cInfo api.Container, cState *api.ContainerState, cSnaps []api.ContainerSnapshot) string {
+func (c *cmdList) descriptionColumnData(cInfo api.Container, cState *api.ContainerState, cSnaps []api.ContainerSnapshot) string {
 	return cInfo.Description
 }
 
-func (c *listCmd) statusColumnData(cInfo api.Container, cState *api.ContainerState, cSnaps []api.ContainerSnapshot) string {
+func (c *cmdList) statusColumnData(cInfo api.Container, cState *api.ContainerState, cSnaps []api.ContainerSnapshot) string {
 	return strings.ToUpper(cInfo.Status)
 }
 
-func (c *listCmd) IP4ColumnData(cInfo api.Container, cState *api.ContainerState, cSnaps []api.ContainerSnapshot) string {
+func (c *cmdList) IP4ColumnData(cInfo api.Container, cState *api.ContainerState, cSnaps []api.ContainerSnapshot) string {
 	if cInfo.IsActive() && cState != nil && cState.Network != nil {
 		ipv4s := []string{}
 		for netName, net := range cState.Network {
@@ -618,7 +605,7 @@ func (c *listCmd) IP4ColumnData(cInfo api.Container, cState *api.ContainerState,
 	return ""
 }
 
-func (c *listCmd) IP6ColumnData(cInfo api.Container, cState *api.ContainerState, cSnaps []api.ContainerSnapshot) string {
+func (c *cmdList) IP6ColumnData(cInfo api.Container, cState *api.ContainerState, cSnaps []api.ContainerSnapshot) string {
 	if cInfo.IsActive() && cState != nil && cState.Network != nil {
 		ipv6s := []string{}
 		for netName, net := range cState.Network {
@@ -643,7 +630,7 @@ func (c *listCmd) IP6ColumnData(cInfo api.Container, cState *api.ContainerState,
 	return ""
 }
 
-func (c *listCmd) typeColumnData(cInfo api.Container, cState *api.ContainerState, cSnaps []api.ContainerSnapshot) string {
+func (c *cmdList) typeColumnData(cInfo api.Container, cState *api.ContainerState, cSnaps []api.ContainerSnapshot) string {
 	if cInfo.Ephemeral {
 		return i18n.G("EPHEMERAL")
 	}
@@ -651,7 +638,7 @@ func (c *listCmd) typeColumnData(cInfo api.Container, cState *api.ContainerState
 	return i18n.G("PERSISTENT")
 }
 
-func (c *listCmd) numberSnapshotsColumnData(cInfo api.Container, cState *api.ContainerState, cSnaps []api.ContainerSnapshot) string {
+func (c *cmdList) numberSnapshotsColumnData(cInfo api.Container, cState *api.ContainerState, cSnaps []api.ContainerSnapshot) string {
 	if cSnaps != nil {
 		return fmt.Sprintf("%d", len(cSnaps))
 	}
@@ -659,7 +646,7 @@ func (c *listCmd) numberSnapshotsColumnData(cInfo api.Container, cState *api.Con
 	return ""
 }
 
-func (c *listCmd) PIDColumnData(cInfo api.Container, cState *api.ContainerState, cSnaps []api.ContainerSnapshot) string {
+func (c *cmdList) PIDColumnData(cInfo api.Container, cState *api.ContainerState, cSnaps []api.ContainerSnapshot) string {
 	if cInfo.IsActive() && cState != nil {
 		return fmt.Sprintf("%d", cState.Pid)
 	}
@@ -667,11 +654,11 @@ func (c *listCmd) PIDColumnData(cInfo api.Container, cState *api.ContainerState,
 	return ""
 }
 
-func (c *listCmd) ArchitectureColumnData(cInfo api.Container, cState *api.ContainerState, cSnaps []api.ContainerSnapshot) string {
+func (c *cmdList) ArchitectureColumnData(cInfo api.Container, cState *api.ContainerState, cSnaps []api.ContainerSnapshot) string {
 	return cInfo.Architecture
 }
 
-func (c *listCmd) StoragePoolColumnData(cInfo api.Container, cState *api.ContainerState, cSnaps []api.ContainerSnapshot) string {
+func (c *cmdList) StoragePoolColumnData(cInfo api.Container, cState *api.ContainerState, cSnaps []api.ContainerSnapshot) string {
 	for _, v := range cInfo.ExpandedDevices {
 		if v["type"] == "disk" && v["path"] == "/" {
 			return v["pool"]
@@ -681,11 +668,11 @@ func (c *listCmd) StoragePoolColumnData(cInfo api.Container, cState *api.Contain
 	return ""
 }
 
-func (c *listCmd) ProfilesColumnData(cInfo api.Container, cState *api.ContainerState, cSnaps []api.ContainerSnapshot) string {
+func (c *cmdList) ProfilesColumnData(cInfo api.Container, cState *api.ContainerState, cSnaps []api.ContainerSnapshot) string {
 	return strings.Join(cInfo.Profiles, "\n")
 }
 
-func (c *listCmd) CreatedColumnData(cInfo api.Container, cState *api.ContainerState, cSnaps []api.ContainerSnapshot) string {
+func (c *cmdList) CreatedColumnData(cInfo api.Container, cState *api.ContainerState, cSnaps []api.ContainerSnapshot) string {
 	layout := "2006/01/02 15:04 UTC"
 
 	if shared.TimeIsSet(cInfo.CreatedAt) {
@@ -695,7 +682,7 @@ func (c *listCmd) CreatedColumnData(cInfo api.Container, cState *api.ContainerSt
 	return ""
 }
 
-func (c *listCmd) LastUsedColumnData(cInfo api.Container, cState *api.ContainerState, cSnaps []api.ContainerSnapshot) string {
+func (c *cmdList) LastUsedColumnData(cInfo api.Container, cState *api.ContainerState, cSnaps []api.ContainerSnapshot) string {
 	layout := "2006/01/02 15:04 UTC"
 
 	if !cInfo.LastUsedAt.IsZero() && shared.TimeIsSet(cInfo.LastUsedAt) {
@@ -705,7 +692,7 @@ func (c *listCmd) LastUsedColumnData(cInfo api.Container, cState *api.ContainerS
 	return ""
 }
 
-func (c *listCmd) NumberOfProcessesColumnData(cInfo api.Container, cState *api.ContainerState, cSnaps []api.ContainerSnapshot) string {
+func (c *cmdList) NumberOfProcessesColumnData(cInfo api.Container, cState *api.ContainerState, cSnaps []api.ContainerSnapshot) string {
 	if cInfo.IsActive() && cState != nil {
 		return fmt.Sprintf("%d", cState.Processes)
 	}
@@ -713,6 +700,6 @@ func (c *listCmd) NumberOfProcessesColumnData(cInfo api.Container, cState *api.C
 	return ""
 }
 
-func (c *listCmd) locationColumnData(cInfo api.Container, cState *api.ContainerState, cSnaps []api.ContainerSnapshot) string {
+func (c *cmdList) locationColumnData(cInfo api.Container, cState *api.ContainerState, cSnaps []api.ContainerSnapshot) string {
 	return cInfo.Location
 }
diff --git a/lxc/list_test.go b/lxc/list_test.go
index 95cc252d0..0330b172c 100644
--- a/lxc/list_test.go
+++ b/lxc/list_test.go
@@ -12,7 +12,7 @@ import (
 )
 
 func TestDotPrefixMatch(t *testing.T) {
-	list := listCmd{}
+	list := cmdList{}
 
 	pass := true
 	pass = pass && list.dotPrefixMatch("s.privileged", "security.privileged")
@@ -24,7 +24,7 @@ func TestDotPrefixMatch(t *testing.T) {
 }
 
 func TestShouldShow(t *testing.T) {
-	list := listCmd{}
+	list := cmdList{}
 
 	state := &api.Container{
 		Name: "foo",
@@ -158,7 +158,7 @@ func TestColumns(t *testing.T) {
 			// Generate the column string, removing any leading, trailing or duplicate commas.
 			raw := shared.RemoveDuplicatesFromString(strings.Trim(buffer.String(), ","), ",")
 
-			list := listCmd{columnsRaw: raw}
+			list := cmdList{flagColumns: raw}
 
 			clustered := strings.Contains(raw, "L")
 			columns, err := list.parseColumns(clustered)
@@ -174,7 +174,7 @@ func TestColumns(t *testing.T) {
 
 func TestInvalidColumns(t *testing.T) {
 	run := func(raw string) {
-		list := listCmd{columnsRaw: raw}
+		list := cmdList{flagColumns: raw}
 		_, err := list.parseColumns(true)
 		if err == nil {
 			t.Errorf("Expected error from parseColumns, received nil.  Input: %s", raw)
diff --git a/lxc/main.go b/lxc/main.go
index 44ee3b246..c8c18ce10 100644
--- a/lxc/main.go
+++ b/lxc/main.go
@@ -69,6 +69,10 @@ For help with any of those, simply call them with --help.`))
 	app.SetVersionTemplate("{{.Version}}\n")
 	app.Version = version.Version
 
+	// list sub-command
+	listCmd := cmdList{global: &globalCmd}
+	app.AddCommand(listCmd.Command())
+
 	// Deal with --all flag
 	err := app.ParseFlags(os.Args[1:])
 	if err == nil {
@@ -252,7 +256,6 @@ var commands = map[string]command{
 	"info":      &infoCmd{},
 	"init":      &initCmd{},
 	"launch":    &launchCmd{},
-	"list":      &listCmd{},
 	"manpage":   &manpageCmd{},
 	"monitor":   &monitorCmd{},
 	"rename":    &renameCmd{},
@@ -301,7 +304,6 @@ var defaultAliases = map[string]string{
 	"shell": "exec @ARGS@ -- su -l",
 
 	"cp": "copy",
-	"ls": "list",
 	"mv": "move",
 	"rm": "delete",
 

From ef38097e7886116c1cd00e2d358284843a91f975 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 22 Mar 2018 01:58:52 -0400
Subject: [PATCH 06/39] lxc/exec: Port to cobra
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         | 110 ++++++++++++++++++++++++----------------------------
 lxc/exec_unix.go    |   6 +--
 lxc/exec_windows.go |   6 +--
 lxc/main.go         |   5 ++-
 4 files changed, 61 insertions(+), 66 deletions(-)

diff --git a/lxc/exec.go b/lxc/exec.go
index 89f90654f..b130e81a9 100644
--- a/lxc/exec.go
+++ b/lxc/exec.go
@@ -12,67 +12,53 @@ import (
 	"syscall"
 
 	"github.com/gorilla/websocket"
+	"github.com/spf13/cobra"
 
 	"github.com/lxc/lxd/client"
-	"github.com/lxc/lxd/lxc/config"
 	"github.com/lxc/lxd/shared/api"
-	"github.com/lxc/lxd/shared/gnuflag"
+	cli "github.com/lxc/lxd/shared/cmd"
 	"github.com/lxc/lxd/shared/i18n"
 	"github.com/lxc/lxd/shared/logger"
 	"github.com/lxc/lxd/shared/termios"
 )
 
-type envList []string
+type cmdExec struct {
+	global *cmdGlobal
 
-func (f *envList) String() string {
-	return fmt.Sprint(*f)
+	flagMode                string
+	flagEnvironment         []string
+	flagForceInteractive    bool
+	flagForceNonInteractive bool
+	flagDisableStdin        bool
 }
 
-func (f *envList) Set(value string) error {
-	if f == nil {
-		*f = make(envList, 1)
-	} else {
-		*f = append(*f, value)
-	}
-	return nil
-}
-
-type execCmd struct {
-	modeFlag            string
-	envArgs             envList
-	forceInteractive    bool
-	forceNonInteractive bool
-	disableStdin        bool
-}
+func (c *cmdExec) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("exec [<remote>:]<container> [flags] [--] <command line>")
+	cmd.Short = i18n.G("Execute commands in containers")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Execute commands in containers
 
-func (c *execCmd) showByDefault() bool {
-	return true
-}
-
-func (c *execCmd) usage() string {
-	return i18n.G(
-		`Usage: lxc exec [<remote>:]<container> [-t] [-T] [-n] [--mode=auto|interactive|non-interactive] [--env KEY=VALUE...] [--] <command line>
-
-Execute commands in containers.
+The command is executed directly using exec, so there is no shell and
+shell patterns (variables, file redirects, ...) won't be understood.
+If you need a shell environment you need to execute the shell
+executable, passing the shell commands as arguments, for example:
 
-The command is executed directly using exec, so there is no shell and shell patterns (variables, file redirects, ...)
-won't be understood. If you need a shell environment you need to execute the shell executable, passing the shell commands
-as arguments, for example:
+  lxc exec <container> -- sh -c "cd /tmp && pwd"
 
-    lxc exec <container> -- sh -c "cd /tmp && pwd"
+Mode defaults to non-interactive, interactive mode is selected if both stdin AND stdout are terminals (stderr is ignored).`))
 
-Mode defaults to non-interactive, interactive mode is selected if both stdin AND stdout are terminals (stderr is ignored).`)
-}
+	cmd.RunE = c.Run
+	cmd.Flags().StringArrayVar(&c.flagEnvironment, "env", nil, i18n.G("Environment variable to set (e.g. HOME=/home/foo)")+"``")
+	cmd.Flags().StringVar(&c.flagMode, "mode", "auto", i18n.G("Override the terminal mode (auto, interactive or non-interactive)")+"``")
+	cmd.Flags().BoolVarP(&c.flagForceInteractive, "force-interactive", "t", false, i18n.G("Force pseudo-terminal allocation"))
+	cmd.Flags().BoolVarP(&c.flagForceNonInteractive, "force-noninteractive", "T", false, i18n.G("Disable pseudo-terminal allocation"))
+	cmd.Flags().BoolVarP(&c.flagDisableStdin, "disable-stdin", "n", false, i18n.G("Disable stdin (reads from /dev/null)"))
 
-func (c *execCmd) flags() {
-	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)"))
-	gnuflag.BoolVar(&c.forceInteractive, "t", false, i18n.G("Force pseudo-terminal allocation"))
-	gnuflag.BoolVar(&c.forceNonInteractive, "T", false, i18n.G("Disable pseudo-terminal allocation"))
-	gnuflag.BoolVar(&c.disableStdin, "n", false, i18n.G("Disable stdin (reads from /dev/null)"))
+	return cmd
 }
 
-func (c *execCmd) sendTermSize(control *websocket.Conn) error {
+func (c *cmdExec) sendTermSize(control *websocket.Conn) error {
 	width, height, err := termios.GetSize(int(syscall.Stdout))
 	if err != nil {
 		return err
@@ -101,7 +87,7 @@ func (c *execCmd) sendTermSize(control *websocket.Conn) error {
 	return err
 }
 
-func (c *execCmd) forwardSignal(control *websocket.Conn, sig syscall.Signal) error {
+func (c *cmdExec) forwardSignal(control *websocket.Conn, sig syscall.Signal) error {
 	logger.Debugf("Forwarding signal: %s", sig)
 
 	w, err := control.NextWriter(websocket.TextMessage)
@@ -123,19 +109,24 @@ func (c *execCmd) forwardSignal(control *websocket.Conn, sig syscall.Signal) err
 	return err
 }
 
-func (c *execCmd) run(conf *config.Config, args []string) error {
-	if len(args) < 2 {
-		return errArgs
+func (c *cmdExec) Run(cmd *cobra.Command, args []string) error {
+	conf := c.global.conf
+
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 2, -1)
+	if exit {
+		return err
 	}
 
-	if c.forceInteractive && c.forceNonInteractive {
+	if c.flagForceInteractive && c.flagForceNonInteractive {
 		return fmt.Errorf(i18n.G("You can't pass -t and -T at the same time"))
 	}
 
-	if c.modeFlag != "auto" && (c.forceInteractive || c.forceNonInteractive) {
+	if c.flagMode != "auto" && (c.flagForceInteractive || c.flagForceNonInteractive) {
 		return fmt.Errorf(i18n.G("You can't pass -t or -T at the same time as --mode"))
 	}
 
+	// Connect to the daemon
 	remote, name, err := conf.ParseRemote(args[0])
 	if err != nil {
 		return err
@@ -146,15 +137,14 @@ func (c *execCmd) run(conf *config.Config, args []string) error {
 		return err
 	}
 
-	/* FIXME: Default values for HOME and USER are now handled by LXD.
-	   This code should be removed after most users upgraded.
-	*/
-	env := map[string]string{"HOME": "/root", "USER": "root"}
-	if myTerm, ok := c.getTERM(); ok {
+	// Set the environment
+	env := map[string]string{}
+	myTerm, ok := c.getTERM()
+	if ok {
 		env["TERM"] = myTerm
 	}
 
-	for _, arg := range c.envArgs {
+	for _, arg := range c.flagEnvironment {
 		pieces := strings.SplitN(arg, "=", 2)
 		value := ""
 		if len(pieces) > 1 {
@@ -163,14 +153,15 @@ func (c *execCmd) run(conf *config.Config, args []string) error {
 		env[pieces[0]] = value
 	}
 
+	// Configure the terminal
 	cfd := int(syscall.Stdin)
 
 	var interactive bool
-	if c.disableStdin {
+	if c.flagDisableStdin {
 		interactive = false
-	} else if c.modeFlag == "interactive" || c.forceInteractive {
+	} else if c.flagMode == "interactive" || c.flagForceInteractive {
 		interactive = true
-	} else if c.modeFlag == "non-interactive" || c.forceNonInteractive {
+	} else if c.flagMode == "non-interactive" || c.flagForceNonInteractive {
 		interactive = false
 	} else {
 		interactive = termios.IsTerminal(cfd) && termios.IsTerminal(int(syscall.Stdout))
@@ -200,12 +191,13 @@ func (c *execCmd) run(conf *config.Config, args []string) error {
 
 	var stdin io.ReadCloser
 	stdin = os.Stdin
-	if c.disableStdin {
+	if c.flagDisableStdin {
 		stdin = ioutil.NopCloser(bytes.NewReader(nil))
 	}
 
 	stdout := c.getStdout()
 
+	// Prepare the command
 	req := api.ContainerExecPost{
 		Command:     args[1:],
 		WaitForWS:   true,
diff --git a/lxc/exec_unix.go b/lxc/exec_unix.go
index 7471e8423..0c9302897 100644
--- a/lxc/exec_unix.go
+++ b/lxc/exec_unix.go
@@ -13,15 +13,15 @@ import (
 	"github.com/lxc/lxd/shared/logger"
 )
 
-func (c *execCmd) getStdout() io.WriteCloser {
+func (c *cmdExec) getStdout() io.WriteCloser {
 	return os.Stdout
 }
 
-func (c *execCmd) getTERM() (string, bool) {
+func (c *cmdExec) getTERM() (string, bool) {
 	return os.LookupEnv("TERM")
 }
 
-func (c *execCmd) controlSocketHandler(control *websocket.Conn) {
+func (c *cmdExec) controlSocketHandler(control *websocket.Conn) {
 	ch := make(chan os.Signal, 10)
 	signal.Notify(ch,
 		syscall.SIGWINCH,
diff --git a/lxc/exec_windows.go b/lxc/exec_windows.go
index 67078df6e..9dd67cea5 100644
--- a/lxc/exec_windows.go
+++ b/lxc/exec_windows.go
@@ -25,15 +25,15 @@ func (wwc *WrappedWriteCloser) Write(p []byte) (int, error) {
 	return wwc.wrapper.Write(p)
 }
 
-func (c *execCmd) getStdout() io.WriteCloser {
+func (c *cmdExec) getStdout() io.WriteCloser {
 	return &WrappedWriteCloser{os.Stdout, colorable.NewColorableStdout()}
 }
 
-func (c *execCmd) getTERM() (string, bool) {
+func (c *cmdExec) getTERM() (string, bool) {
 	return "dumb", true
 }
 
-func (c *execCmd) controlSocketHandler(control *websocket.Conn) {
+func (c *cmdExec) controlSocketHandler(control *websocket.Conn) {
 	ch := make(chan os.Signal, 10)
 	signal.Notify(ch, os.Interrupt)
 
diff --git a/lxc/main.go b/lxc/main.go
index c8c18ce10..83d96fe63 100644
--- a/lxc/main.go
+++ b/lxc/main.go
@@ -69,6 +69,10 @@ For help with any of those, simply call them with --help.`))
 	app.SetVersionTemplate("{{.Version}}\n")
 	app.Version = version.Version
 
+	// exec sub-command
+	execCmd := cmdExec{global: &globalCmd}
+	app.AddCommand(execCmd.Command())
+
 	// list sub-command
 	listCmd := cmdList{global: &globalCmd}
 	app.AddCommand(listCmd.Command())
@@ -248,7 +252,6 @@ var commands = map[string]command{
 	"console":   &consoleCmd{},
 	"copy":      &copyCmd{},
 	"delete":    &deleteCmd{},
-	"exec":      &execCmd{},
 	"file":      &fileCmd{},
 	"finger":    &fingerCmd{},
 	"query":     &queryCmd{},

From 225f826c81f1ae7b21659bd49d2832aaa16eaadb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 22 Mar 2018 17:37:50 -0400
Subject: [PATCH 07/39] lxc/version: Remove sub-command
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    |  1 -
 lxc/version.go | 33 ---------------------------------
 2 files changed, 34 deletions(-)
 delete mode 100644 lxc/version.go

diff --git a/lxc/main.go b/lxc/main.go
index 83d96fe63..0e1337f12 100644
--- a/lxc/main.go
+++ b/lxc/main.go
@@ -298,7 +298,6 @@ var commands = map[string]command{
 		timeout:     -1,
 	},
 	"storage": &storageCmd{},
-	"version": &versionCmd{},
 }
 
 // defaultAliases contains LXC's built-in command line aliases.  The built-in
diff --git a/lxc/version.go b/lxc/version.go
deleted file mode 100644
index 34981936c..000000000
--- a/lxc/version.go
+++ /dev/null
@@ -1,33 +0,0 @@
-package main
-
-import (
-	"fmt"
-
-	"github.com/lxc/lxd/lxc/config"
-	"github.com/lxc/lxd/shared/i18n"
-	"github.com/lxc/lxd/shared/version"
-)
-
-type versionCmd struct{}
-
-func (c *versionCmd) showByDefault() bool {
-	return false
-}
-
-func (c *versionCmd) usage() string {
-	return i18n.G(
-		`Usage: lxc version
-
-Print the version number of this client tool.`)
-}
-
-func (c *versionCmd) flags() {
-}
-
-func (c *versionCmd) run(conf *config.Config, args []string) error {
-	if len(args) > 0 {
-		return errArgs
-	}
-	fmt.Println(version.Version)
-	return nil
-}

From f66efb16db6e87f759eefeac89846208b61740fc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 22 Mar 2018 17:42:04 -0400
Subject: [PATCH 08/39] lxc/finger: Remove sub-command
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 | 45 ---------------------------------------------
 lxc/main.go   |  1 -
 2 files changed, 46 deletions(-)
 delete mode 100644 lxc/finger.go

diff --git a/lxc/finger.go b/lxc/finger.go
deleted file mode 100644
index ec449b5f1..000000000
--- a/lxc/finger.go
+++ /dev/null
@@ -1,45 +0,0 @@
-package main
-
-import (
-	"github.com/lxc/lxd/lxc/config"
-	"github.com/lxc/lxd/shared/i18n"
-)
-
-type fingerCmd struct{}
-
-func (c *fingerCmd) showByDefault() bool {
-	return false
-}
-
-func (c *fingerCmd) usage() string {
-	return i18n.G(
-		`Usage: lxc finger [<remote>:]
-
-Check if the LXD server is alive.`)
-}
-
-func (c *fingerCmd) flags() {}
-
-func (c *fingerCmd) run(conf *config.Config, args []string) error {
-	if len(args) > 1 {
-		return errArgs
-	}
-
-	// Parse the remote
-	remote := conf.DefaultRemote
-	if len(args) > 0 {
-		var err error
-		remote, _, err = conf.ParseRemote(args[0])
-		if err != nil {
-			return err
-		}
-	}
-
-	// Attempt to connect
-	_, err := conf.GetContainerServer(remote)
-	if err != nil {
-		return err
-	}
-
-	return nil
-}
diff --git a/lxc/main.go b/lxc/main.go
index 0e1337f12..33beb3417 100644
--- a/lxc/main.go
+++ b/lxc/main.go
@@ -253,7 +253,6 @@ var commands = map[string]command{
 	"copy":      &copyCmd{},
 	"delete":    &deleteCmd{},
 	"file":      &fileCmd{},
-	"finger":    &fingerCmd{},
 	"query":     &queryCmd{},
 	"image":     &imageCmd{},
 	"info":      &infoCmd{},

From 9f65cb06d45b4fc9bdb81a305990ff2ec480aebf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 22 Mar 2018 17:49:44 -0400
Subject: [PATCH 09/39] lxc/console: Port to cobra
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/console.go         | 52 +++++++++++++++++++++++++++++++-------------------
 lxc/console_unix.go    |  4 ++--
 lxc/console_windows.go |  6 +++---
 lxc/main.go            |  5 ++++-
 4 files changed, 41 insertions(+), 26 deletions(-)

diff --git a/lxc/console.go b/lxc/console.go
index ff05a78be..9580e8181 100644
--- a/lxc/console.go
+++ b/lxc/console.go
@@ -9,36 +9,39 @@ import (
 	"strconv"
 
 	"github.com/gorilla/websocket"
+	"github.com/spf13/cobra"
 
 	"github.com/lxc/lxd/client"
-	"github.com/lxc/lxd/lxc/config"
 	"github.com/lxc/lxd/shared/api"
-	"github.com/lxc/lxd/shared/gnuflag"
+	cli "github.com/lxc/lxd/shared/cmd"
 	"github.com/lxc/lxd/shared/i18n"
 	"github.com/lxc/lxd/shared/logger"
 	"github.com/lxc/lxd/shared/termios"
 )
 
-type consoleCmd struct {
-	showLog bool
-}
+type cmdConsole struct {
+	global *cmdGlobal
 
-func (c *consoleCmd) showByDefault() bool {
-	return true
+	flagShowLog bool
 }
 
-func (c *consoleCmd) usage() string {
-	return i18n.G(
-		`Usage: lxc console [<remote>:]<container> [-l]
+func (c *cmdConsole) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("console [<remote>:]<container>")
+	cmd.Short = i18n.G("Attach to container consoles")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Attach to container consoles
 
-Interact with the container's console device and log.`)
-}
+This command allows you to interact with the boot console of a container
+as well as retrieve past log entries from it.`))
+
+	cmd.RunE = c.Run
+	cmd.Flags().BoolVar(&c.flagShowLog, "show-log", false, i18n.G("Retrieve the container's console log"))
 
-func (c *consoleCmd) flags() {
-	gnuflag.BoolVar(&c.showLog, "show-log", false, i18n.G("Retrieve the container's console log"))
+	return cmd
 }
 
-func (c *consoleCmd) sendTermSize(control *websocket.Conn) error {
+func (c *cmdConsole) sendTermSize(control *websocket.Conn) error {
 	width, height, err := termios.GetSize(int(os.Stdout.Fd()))
 	if err != nil {
 		return err
@@ -102,11 +105,16 @@ func (er stdinMirror) Read(p []byte) (int, error) {
 	return n, err
 }
 
-func (c *consoleCmd) run(conf *config.Config, args []string) error {
-	if len(args) < 1 {
-		return errArgs
+func (c *cmdConsole) Run(cmd *cobra.Command, args []string) error {
+	conf := c.global.conf
+
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 0, 1)
+	if exit {
+		return err
 	}
 
+	// Connect to LXD
 	remote, name, err := conf.ParseRemote(args[0])
 	if err != nil {
 		return err
@@ -117,7 +125,8 @@ func (c *consoleCmd) run(conf *config.Config, args []string) error {
 		return err
 	}
 
-	if c.showLog {
+	// Show the current log if requested
+	if c.flagShowLog {
 		console := &lxd.ContainerConsoleLogArgs{}
 		log, err := d.GetContainerConsoleLog(name, console)
 		if err != nil {
@@ -133,6 +142,7 @@ func (c *consoleCmd) run(conf *config.Config, args []string) error {
 		return nil
 	}
 
+	// Configure the terminal
 	cfd := int(os.Stdin.Fd())
 
 	var oldttystate *termios.State
@@ -150,6 +160,7 @@ func (c *consoleCmd) run(conf *config.Config, args []string) error {
 		return err
 	}
 
+	// Prepare the remote console
 	req := api.ContainerConsolePost{
 		Width:  width,
 		Height: height,
@@ -158,6 +169,7 @@ func (c *consoleCmd) run(conf *config.Config, args []string) error {
 	consoleDisconnect := make(chan bool)
 	sendDisconnect := make(chan bool)
 	defer close(sendDisconnect)
+
 	consoleArgs := lxd.ContainerConsoleArgs{
 		Terminal: &readWriteCloser{stdinMirror{os.Stdin,
 			sendDisconnect, new(bool)}, os.Stdout},
@@ -172,7 +184,7 @@ func (c *consoleCmd) run(conf *config.Config, args []string) error {
 
 	fmt.Printf(i18n.G("To detach from the console, press: <ctrl>+a q") + "\n\r")
 
-	// Run the command in the container
+	// Attach to the container console
 	op, err := d.ConsoleContainer(name, req, &consoleArgs)
 	if err != nil {
 		return err
diff --git a/lxc/console_unix.go b/lxc/console_unix.go
index 5edef1b03..ad9a3272f 100644
--- a/lxc/console_unix.go
+++ b/lxc/console_unix.go
@@ -13,11 +13,11 @@ import (
 	"github.com/lxc/lxd/shared/logger"
 )
 
-func (c *consoleCmd) getStdout() io.WriteCloser {
+func (c *cmdConsole) getStdout() io.WriteCloser {
 	return os.Stdout
 }
 
-func (c *consoleCmd) controlSocketHandler(control *websocket.Conn) {
+func (c *cmdConsole) controlSocketHandler(control *websocket.Conn) {
 	ch := make(chan os.Signal, 10)
 	signal.Notify(ch, syscall.SIGWINCH)
 
diff --git a/lxc/console_windows.go b/lxc/console_windows.go
index 9fc5c2dd6..e794c0058 100644
--- a/lxc/console_windows.go
+++ b/lxc/console_windows.go
@@ -11,16 +11,16 @@ import (
 	"github.com/mattn/go-colorable"
 )
 
-func (c *consoleCmd) getStdout() io.WriteCloser {
+func (c *cmdConsole) getStdout() io.WriteCloser {
 	// Defined in exec_windows.go
 	return &WrappedWriteCloser{os.Stdout, colorable.NewColorableStdout()}
 }
 
-func (c *consoleCmd) getTERM() (string, bool) {
+func (c *cmdConsole) getTERM() (string, bool) {
 	return "dumb", true
 }
 
-func (c *consoleCmd) controlSocketHandler(control *websocket.Conn) {
+func (c *cmdConsole) controlSocketHandler(control *websocket.Conn) {
 	// TODO: figure out what the equivalent of signal.SIGWINCH is on
 	// windows and use that; for now if you resize your terminal it just
 	// won't work quite correctly.
diff --git a/lxc/main.go b/lxc/main.go
index 33beb3417..4582f4871 100644
--- a/lxc/main.go
+++ b/lxc/main.go
@@ -69,6 +69,10 @@ For help with any of those, simply call them with --help.`))
 	app.SetVersionTemplate("{{.Version}}\n")
 	app.Version = version.Version
 
+	// console sub-command
+	consoleCmd := cmdConsole{global: &globalCmd}
+	app.AddCommand(consoleCmd.Command())
+
 	// exec sub-command
 	execCmd := cmdExec{global: &globalCmd}
 	app.AddCommand(execCmd.Command())
@@ -249,7 +253,6 @@ var commands = map[string]command{
 	"alias":     &aliasCmd{},
 	"cluster":   &clusterCmd{},
 	"config":    &configCmd{},
-	"console":   &consoleCmd{},
 	"copy":      &copyCmd{},
 	"delete":    &deleteCmd{},
 	"file":      &fileCmd{},

From 3161199fec224afeeae12541d6b111a88fb790a3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 22 Mar 2018 18:12:53 -0400
Subject: [PATCH 10/39] lxc/info: Port to cobra
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 | 52 ++++++++++++++++++++++++++++------------------------
 lxc/main.go |  5 ++++-
 2 files changed, 32 insertions(+), 25 deletions(-)

diff --git a/lxc/info.go b/lxc/info.go
index ff90d4f75..544a9798d 100644
--- a/lxc/info.go
+++ b/lxc/info.go
@@ -5,46 +5,50 @@ import (
 	"io/ioutil"
 	"strings"
 
+	"github.com/spf13/cobra"
 	"gopkg.in/yaml.v2"
 
 	"github.com/lxc/lxd/client"
 	"github.com/lxc/lxd/lxc/config"
 	"github.com/lxc/lxd/shared"
-	"github.com/lxc/lxd/shared/gnuflag"
+	cli "github.com/lxc/lxd/shared/cmd"
 	"github.com/lxc/lxd/shared/i18n"
 )
 
-type infoCmd struct {
-	showLog   bool
-	resources bool
-}
+type cmdInfo struct {
+	global *cmdGlobal
 
-func (c *infoCmd) showByDefault() bool {
-	return true
+	flagShowLog   bool
+	flagResources bool
 }
 
-func (c *infoCmd) usage() string {
-	return i18n.G(
-		`Usage: lxc info [<remote>:][<container>] [--show-log] [--resources]
-
-Show container or server information.
-
-lxc info [<remote>:]<container> [--show-log]
+func (c *cmdInfo) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("info [<remote>:][<container>]")
+	cmd.Short = i18n.G("Show container or server information")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Show container or server information`))
+	cmd.Example = cli.FormatSection("", i18n.G(
+		`lxc info [<remote>:]<container> [--show-log]
     For container information.
 
 lxc info [<remote>:] [--resources]
-    For LXD server information.`)
-}
+    For LXD server information.`))
 
-func (c *infoCmd) flags() {
-	gnuflag.BoolVar(&c.showLog, "show-log", false, i18n.G("Show the container's last 100 log lines?"))
-	gnuflag.BoolVar(&c.resources, "resources", false, i18n.G("Show the resources available to the server"))
+	cmd.RunE = c.Run
+	cmd.Flags().BoolVar(&c.flagShowLog, "show-log", false, i18n.G("Show the container's last 100 log lines?"))
+	cmd.Flags().BoolVar(&c.flagResources, "resources", false, i18n.G("Show the resources available to the server"))
+
+	return cmd
 }
 
-func (c *infoCmd) run(conf *config.Config, args []string) error {
+func (c *cmdInfo) Run(cmd *cobra.Command, args []string) error {
+	conf := c.global.conf
+
 	var remote string
 	var cName string
 	var err error
+
 	if len(args) == 1 {
 		remote, cName, err = conf.ParseRemote(args[0])
 		if err != nil {
@@ -66,11 +70,11 @@ func (c *infoCmd) run(conf *config.Config, args []string) error {
 		return c.remoteInfo(d)
 	}
 
-	return c.containerInfo(d, conf.Remotes[remote], cName, c.showLog)
+	return c.containerInfo(d, conf.Remotes[remote], cName, c.flagShowLog)
 }
 
-func (c *infoCmd) remoteInfo(d lxd.ContainerServer) error {
-	if c.resources {
+func (c *cmdInfo) remoteInfo(d lxd.ContainerServer) error {
+	if c.flagResources {
 		resources, err := d.GetServerResources()
 		if err != nil {
 			return err
@@ -101,7 +105,7 @@ func (c *infoCmd) remoteInfo(d lxd.ContainerServer) error {
 	return nil
 }
 
-func (c *infoCmd) containerInfo(d lxd.ContainerServer, remote config.Remote, name string, showLog bool) error {
+func (c *cmdInfo) containerInfo(d lxd.ContainerServer, remote config.Remote, name string, showLog bool) error {
 	ct, _, err := d.GetContainer(name)
 	if err != nil {
 		return err
diff --git a/lxc/main.go b/lxc/main.go
index 4582f4871..0dfffc2bc 100644
--- a/lxc/main.go
+++ b/lxc/main.go
@@ -77,6 +77,10 @@ For help with any of those, simply call them with --help.`))
 	execCmd := cmdExec{global: &globalCmd}
 	app.AddCommand(execCmd.Command())
 
+	// info sub-command
+	infoCmd := cmdInfo{global: &globalCmd}
+	app.AddCommand(infoCmd.Command())
+
 	// list sub-command
 	listCmd := cmdList{global: &globalCmd}
 	app.AddCommand(listCmd.Command())
@@ -258,7 +262,6 @@ var commands = map[string]command{
 	"file":      &fileCmd{},
 	"query":     &queryCmd{},
 	"image":     &imageCmd{},
-	"info":      &infoCmd{},
 	"init":      &initCmd{},
 	"launch":    &launchCmd{},
 	"manpage":   &manpageCmd{},

From e5bdbe6ffd1124fb1606338e19caf08ed57a6248 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 22 Mar 2018 19:45:24 -0400
Subject: [PATCH 11/39] lxc/query: Port to cobra
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  |  5 +++-
 lxc/query.go | 75 ++++++++++++++++++++++++++++++++----------------------------
 2 files changed, 44 insertions(+), 36 deletions(-)

diff --git a/lxc/main.go b/lxc/main.go
index 0dfffc2bc..f92c5abc6 100644
--- a/lxc/main.go
+++ b/lxc/main.go
@@ -85,6 +85,10 @@ For help with any of those, simply call them with --help.`))
 	listCmd := cmdList{global: &globalCmd}
 	app.AddCommand(listCmd.Command())
 
+	// query sub-command
+	queryCmd := cmdQuery{global: &globalCmd}
+	app.AddCommand(queryCmd.Command())
+
 	// Deal with --all flag
 	err := app.ParseFlags(os.Args[1:])
 	if err == nil {
@@ -260,7 +264,6 @@ var commands = map[string]command{
 	"copy":      &copyCmd{},
 	"delete":    &deleteCmd{},
 	"file":      &fileCmd{},
-	"query":     &queryCmd{},
 	"image":     &imageCmd{},
 	"init":      &initCmd{},
 	"launch":    &launchCmd{},
diff --git a/lxc/query.go b/lxc/query.go
index 1d45fb6e8..39881d470 100644
--- a/lxc/query.go
+++ b/lxc/query.go
@@ -4,42 +4,43 @@ import (
 	"encoding/json"
 	"fmt"
 
-	"github.com/lxc/lxd/lxc/config"
+	"github.com/spf13/cobra"
+
 	"github.com/lxc/lxd/shared/api"
-	"github.com/lxc/lxd/shared/gnuflag"
+	cli "github.com/lxc/lxd/shared/cmd"
 	"github.com/lxc/lxd/shared/i18n"
 )
 
-type queryCmd struct {
-	respWait bool
-	respRaw  bool
-	action   string
-	data     string
-}
-
-func (c *queryCmd) showByDefault() bool {
-	return false
-}
-
-func (c *queryCmd) usage() string {
-	return i18n.G(
-		`Usage: lxc query [-X <action>] [-d <data>] [--wait] [--raw] [<remote>:]<API path>
-
-Send a raw query to LXD.
+type cmdQuery struct {
+	global *cmdGlobal
 
-*Examples*
-lxc query -X DELETE --wait /1.0/containers/c1
-    Delete local container "c1".`)
+	flagRespWait bool
+	flagRespRaw  bool
+	flagAction   string
+	flagData     string
 }
 
-func (c *queryCmd) flags() {
-	gnuflag.BoolVar(&c.respWait, "wait", false, i18n.G("Wait for the operation to complete"))
-	gnuflag.BoolVar(&c.respRaw, "raw", false, i18n.G("Print the raw response"))
-	gnuflag.StringVar(&c.action, "X", "GET", i18n.G("Action (defaults to GET)"))
-	gnuflag.StringVar(&c.data, "d", "", i18n.G("Input data"))
+func (c *cmdQuery) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("query [<remote>:]<API path>")
+	cmd.Short = i18n.G("Send a raw query to LXD")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Send a raw query to LXD`))
+	cmd.Example = cli.FormatSection("", i18n.G(
+		`lxc query -X DELETE --wait /1.0/containers/c1
+    Delete local container "c1".`))
+	cmd.Hidden = true
+
+	cmd.RunE = c.Run
+	cmd.Flags().BoolVar(&c.flagRespWait, "wait", false, i18n.G("Wait for the operation to complete"))
+	cmd.Flags().BoolVar(&c.flagRespRaw, "raw", false, i18n.G("Print the raw response"))
+	cmd.Flags().StringVar(&c.flagAction, "X", "GET", i18n.G("Action (defaults to GET)")+"``")
+	cmd.Flags().StringVar(&c.flagData, "d", "", i18n.G("Input data")+"``")
+
+	return cmd
 }
 
-func (c *queryCmd) pretty(input interface{}) string {
+func (c *cmdQuery) pretty(input interface{}) string {
 	pretty, err := json.MarshalIndent(input, "", "\t")
 	if err != nil {
 		return fmt.Sprintf("%v", input)
@@ -48,9 +49,13 @@ func (c *queryCmd) pretty(input interface{}) string {
 	return fmt.Sprintf("%s", pretty)
 }
 
-func (c *queryCmd) run(conf *config.Config, args []string) error {
-	if len(args) != 1 {
-		return errArgs
+func (c *cmdQuery) Run(cmd *cobra.Command, args []string) error {
+	conf := c.global.conf
+
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, 1)
+	if exit {
+		return err
 	}
 
 	// Parse the remote
@@ -67,18 +72,18 @@ func (c *queryCmd) run(conf *config.Config, args []string) error {
 
 	// Guess the encoding of the input
 	var data interface{}
-	err = json.Unmarshal([]byte(c.data), &data)
+	err = json.Unmarshal([]byte(c.flagData), &data)
 	if err != nil {
-		data = c.data
+		data = c.flagData
 	}
 
 	// Perform the query
-	resp, _, err := d.RawQuery(c.action, path, data, "")
+	resp, _, err := d.RawQuery(c.flagAction, path, data, "")
 	if err != nil {
 		return err
 	}
 
-	if c.respWait && resp.Operation != "" {
+	if c.flagRespWait && resp.Operation != "" {
 		resp, _, err = d.RawQuery("GET", fmt.Sprintf("%s/wait", resp.Operation), "", "")
 		if err != nil {
 			return err
@@ -91,7 +96,7 @@ func (c *queryCmd) run(conf *config.Config, args []string) error {
 		}
 	}
 
-	if c.respRaw {
+	if c.flagRespRaw {
 		fmt.Println(c.pretty(resp))
 	} else if resp.Metadata != nil && string(resp.Metadata) != "{}" {
 		var content interface{}

From 6a1cbb1952f321cbbbbc254e608a68705d1750c7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 22 Mar 2018 21:10:53 -0400
Subject: [PATCH 12/39] lxc/monitor: Port to cobra
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    |  5 +++-
 lxc/monitor.go | 88 +++++++++++++++++++++++-----------------------------------
 2 files changed, 39 insertions(+), 54 deletions(-)

diff --git a/lxc/main.go b/lxc/main.go
index f92c5abc6..a4bfee178 100644
--- a/lxc/main.go
+++ b/lxc/main.go
@@ -85,6 +85,10 @@ For help with any of those, simply call them with --help.`))
 	listCmd := cmdList{global: &globalCmd}
 	app.AddCommand(listCmd.Command())
 
+	// monitor sub-command
+	monitorCmd := cmdMonitor{global: &globalCmd}
+	app.AddCommand(monitorCmd.Command())
+
 	// query sub-command
 	queryCmd := cmdQuery{global: &globalCmd}
 	app.AddCommand(queryCmd.Command())
@@ -268,7 +272,6 @@ var commands = map[string]command{
 	"init":      &initCmd{},
 	"launch":    &launchCmd{},
 	"manpage":   &manpageCmd{},
-	"monitor":   &monitorCmd{},
 	"rename":    &renameCmd{},
 	"move":      &moveCmd{},
 	"network":   &networkCmd{},
diff --git a/lxc/monitor.go b/lxc/monitor.go
index 1c81fc4c3..a6aba202d 100644
--- a/lxc/monitor.go
+++ b/lxc/monitor.go
@@ -5,80 +5,62 @@ import (
 	"fmt"
 	"os"
 
+	"github.com/spf13/cobra"
 	"gopkg.in/yaml.v2"
 
-	"github.com/lxc/lxd/lxc/config"
 	"github.com/lxc/lxd/shared"
 	"github.com/lxc/lxd/shared/api"
-	"github.com/lxc/lxd/shared/gnuflag"
+	cli "github.com/lxc/lxd/shared/cmd"
 	"github.com/lxc/lxd/shared/i18n"
 	"github.com/lxc/lxd/shared/log15"
 	"github.com/lxc/lxd/shared/logging"
 )
 
-type typeList []string
+type cmdMonitor struct {
+	global *cmdGlobal
 
-func (f *typeList) String() string {
-	return fmt.Sprint(*f)
+	flagType     []string
+	flagPretty   bool
+	flagLogLevel string
 }
 
-func (f *typeList) Set(value string) error {
-	if value == "" {
-		return fmt.Errorf("Invalid type: %s", value)
-	}
-
-	if f == nil {
-		*f = make(typeList, 1)
-	} else {
-		*f = append(*f, value)
-	}
-	return nil
-}
-
-type monitorCmd struct {
-	typeArgs typeList
-	pretty   bool
-	logLevel string
-}
-
-func (c *monitorCmd) showByDefault() bool {
-	return false
-}
+func (c *cmdMonitor) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("monitor [<remote>:]")
+	cmd.Short = i18n.G("Monitor a local or remote LXD server")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Monitor a local or remote LXD server
 
-func (c *monitorCmd) usage() string {
-	return i18n.G(
-		`Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]
-
-Monitor a local or remote LXD server.
-
-By default the monitor will listen to all message types.
-
-Message types to listen for can be specified with --type.
-
-*Examples*
-lxc monitor --type=logging
+By default the monitor will listen to all message types.`))
+	cmd.Example = cli.FormatSection("", i18n.G(
+		`lxc monitor --type=logging
     Only show log messages.
 
 lxc monitor --pretty --type=logging --loglevel=info
     Show a pretty log of messages with info level or higher.
 
 lxc monitor --type=lifecycle
-    Only show lifecycle events.
-`)
-}
+    Only show lifecycle events.`))
+	cmd.Hidden = true
+
+	cmd.RunE = c.Run
+	cmd.Flags().BoolVar(&c.flagPretty, "pretty", false, i18n.G("Pretty rendering"))
+	cmd.Flags().StringArrayVar(&c.flagType, "type", nil, i18n.G("Event type to listen for")+"``")
+	cmd.Flags().StringVar(&c.flagLogLevel, "loglevel", "", i18n.G("Minimum level for log messages")+"``")
 
-func (c *monitorCmd) flags() {
-	gnuflag.BoolVar(&c.pretty, "pretty", false, i18n.G("Pretty rendering"))
-	gnuflag.Var(&c.typeArgs, "type", i18n.G("Event type to listen for"))
-	gnuflag.StringVar(&c.logLevel, "loglevel", "", i18n.G("Minimum level for log messages"))
+	return cmd
 }
 
-func (c *monitorCmd) run(conf *config.Config, args []string) error {
+func (c *cmdMonitor) Run(cmd *cobra.Command, args []string) error {
+	conf := c.global.conf
+
 	var err error
 	var remote string
 
-	if len(args) > 1 {
-		return errArgs
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 0, 1)
+	if exit {
+		return err
 	}
 
 	if len(args) == 0 {
@@ -104,8 +86,8 @@ func (c *monitorCmd) run(conf *config.Config, args []string) error {
 	}
 
 	logLvl := log15.LvlDebug
-	if c.logLevel != "" {
-		logLvl, err = log15.LvlFromString(c.logLevel)
+	if c.flagLogLevel != "" {
+		logLvl, err = log15.LvlFromString(c.flagLogLevel)
 		if err != nil {
 			return err
 		}
@@ -113,7 +95,7 @@ func (c *monitorCmd) run(conf *config.Config, args []string) error {
 
 	handler := func(message interface{}) {
 		// Special handling for logging only output
-		if c.pretty && len(c.typeArgs) == 1 && shared.StringInSlice("logging", c.typeArgs) {
+		if c.flagPretty && len(c.flagType) == 1 && shared.StringInSlice("logging", c.flagType) {
 			render, err := json.Marshal(&message)
 			if err != nil {
 				fmt.Printf("error: %s\n", err)
@@ -171,7 +153,7 @@ func (c *monitorCmd) run(conf *config.Config, args []string) error {
 		fmt.Printf("%s\n\n", render)
 	}
 
-	_, err = listener.AddHandler(c.typeArgs, handler)
+	_, err = listener.AddHandler(c.flagType, handler)
 	if err != nil {
 		return err
 	}

From 337254ed8b3ad08f49eca714949d301f6a2aa9b2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 22 Mar 2018 21:38:09 -0400
Subject: [PATCH 13/39] lxc/rename: Port to cobra
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   |  5 ++++-
 lxc/rename.go | 41 +++++++++++++++++++++++++----------------
 2 files changed, 29 insertions(+), 17 deletions(-)

diff --git a/lxc/main.go b/lxc/main.go
index a4bfee178..fc1cfde07 100644
--- a/lxc/main.go
+++ b/lxc/main.go
@@ -93,6 +93,10 @@ For help with any of those, simply call them with --help.`))
 	queryCmd := cmdQuery{global: &globalCmd}
 	app.AddCommand(queryCmd.Command())
 
+	// rename sub-command
+	renameCmd := cmdRename{global: &globalCmd}
+	app.AddCommand(renameCmd.Command())
+
 	// Deal with --all flag
 	err := app.ParseFlags(os.Args[1:])
 	if err == nil {
@@ -272,7 +276,6 @@ var commands = map[string]command{
 	"init":      &initCmd{},
 	"launch":    &launchCmd{},
 	"manpage":   &manpageCmd{},
-	"rename":    &renameCmd{},
 	"move":      &moveCmd{},
 	"network":   &networkCmd{},
 	"operation": &operationCmd{},
diff --git a/lxc/rename.go b/lxc/rename.go
index 70e908a62..fce0282b5 100644
--- a/lxc/rename.go
+++ b/lxc/rename.go
@@ -3,31 +3,37 @@ package main
 import (
 	"fmt"
 
-	"github.com/lxc/lxd/lxc/config"
+	"github.com/spf13/cobra"
+
+	cli "github.com/lxc/lxd/shared/cmd"
 	"github.com/lxc/lxd/shared/i18n"
 )
 
-type renameCmd struct {
-}
-
-func (c *renameCmd) showByDefault() bool {
-	return true
+type cmdRename struct {
+	global *cmdGlobal
 }
 
-func (c *renameCmd) usage() string {
-	return i18n.G(
-		`Usage: lxc rename [<remote>:]<container>[/<snapshot>] [<container>[/<snapshot>]]
+func (c *cmdRename) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("rename [<remote>:]<container>[/<snapshot>] <container>[/<snapshot>]")
+	cmd.Short = i18n.G("Rename containers and snapshots")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Rename containers and snapshots`))
+	cmd.RunE = c.Run
 
-Rename a container or snapshot.`)
+	return cmd
 }
 
-func (c *renameCmd) flags() {}
+func (c *cmdRename) Run(cmd *cobra.Command, args []string) error {
+	conf := c.global.conf
 
-func (c *renameCmd) run(conf *config.Config, args []string) error {
-	if len(args) != 2 {
-		return errArgs
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 2, 2)
+	if exit {
+		return err
 	}
 
+	// Check the remotes
 	sourceRemote, _, err := conf.ParseRemote(args[0])
 	if err != nil {
 		return err
@@ -37,9 +43,12 @@ func (c *renameCmd) run(conf *config.Config, args []string) error {
 	if err != nil {
 		return err
 	}
+
 	if sourceRemote != destRemote {
 		return fmt.Errorf(i18n.G("Can't specify a different remote for rename."))
 	}
-	move := moveCmd{}
-	return move.run(conf, args)
+
+	// Call move
+	move := cmdMove{global: c.global}
+	return move.Run(cmd, args)
 }

From dbfd523500efeecbc2736defa3b5f0d1ffc95a9c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 22 Mar 2018 23:23:34 -0400
Subject: [PATCH 14/39] lxc/delete: Port to cobra
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 | 83 +++++++++++++++++++++++++++++------------------------------
 lxc/main.go   |  6 +++--
 lxc/move.go   |  6 ++---
 3 files changed, 48 insertions(+), 47 deletions(-)

diff --git a/lxc/delete.go b/lxc/delete.go
index 12fed0d64..c9db770de 100644
--- a/lxc/delete.go
+++ b/lxc/delete.go
@@ -6,50 +6,51 @@ import (
 	"os"
 	"strings"
 
+	"github.com/spf13/cobra"
+
 	"github.com/lxc/lxd/client"
-	"github.com/lxc/lxd/lxc/config"
 	"github.com/lxc/lxd/shared"
 	"github.com/lxc/lxd/shared/api"
-	"github.com/lxc/lxd/shared/gnuflag"
+	cli "github.com/lxc/lxd/shared/cmd"
 	"github.com/lxc/lxd/shared/i18n"
 )
 
-type deleteCmd struct {
-	force       bool
-	interactive bool
-}
+type cmdDelete struct {
+	global *cmdGlobal
 
-func (c *deleteCmd) showByDefault() bool {
-	return true
+	flagForce       bool
+	flagInteractive bool
 }
 
-func (c *deleteCmd) usage() string {
-	return i18n.G(
-		`Usage: lxc delete [<remote>:]<container>[/<snapshot>] [[<remote>:]<container>[/<snapshot>]...]
+func (c *cmdDelete) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("delete [<remote>:]<container>[/<snapshot>] [[<remote>:]<container>[/<snapshot>]...]")
+	cmd.Aliases = []string{"rm"}
+	cmd.Short = i18n.G("Delete containers and snapshots")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Delete containers and snapshots`))
 
-Delete containers and snapshots.`)
-}
+	cmd.RunE = c.Run
+	cmd.Flags().BoolVarP(&c.flagForce, "force", "f", false, i18n.G("Force the removal of running containers"))
+	cmd.Flags().BoolVarP(&c.flagInteractive, "interactive", "i", false, i18n.G("Require user confirmation"))
 
-func (c *deleteCmd) flags() {
-	gnuflag.BoolVar(&c.force, "f", false, i18n.G("Force the removal of running containers"))
-	gnuflag.BoolVar(&c.force, "force", false, i18n.G("Force the removal of running containers"))
-	gnuflag.BoolVar(&c.interactive, "i", false, i18n.G("Require user confirmation"))
-	gnuflag.BoolVar(&c.interactive, "interactive", false, i18n.G("Require user confirmation"))
+	return cmd
 }
 
-func (c *deleteCmd) promptDelete(name string) error {
+func (c *cmdDelete) promptDelete(name string) error {
 	reader := bufio.NewReader(os.Stdin)
 	fmt.Printf(i18n.G("Remove %s (yes/no): "), name)
 	input, _ := reader.ReadString('\n')
 	input = strings.TrimSuffix(input, "\n")
+
 	if !shared.StringInSlice(strings.ToLower(input), []string{i18n.G("yes")}) {
-		return fmt.Errorf(i18n.G("User aborted delete operation."))
+		return fmt.Errorf(i18n.G("User aborted delete operation"))
 	}
 
 	return nil
 }
 
-func (c *deleteCmd) doDelete(d lxd.ContainerServer, name string) error {
+func (c *cmdDelete) doDelete(d lxd.ContainerServer, name string) error {
 	var op lxd.Operation
 	var err error
 
@@ -68,40 +69,38 @@ func (c *deleteCmd) doDelete(d lxd.ContainerServer, name string) error {
 	return op.Wait()
 }
 
-func (c *deleteCmd) run(conf *config.Config, args []string) error {
-	if len(args) == 0 {
-		return errArgs
+func (c *cmdDelete) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, -1)
+	if exit {
+		return err
 	}
 
-	for _, nameArg := range args {
-		remote, name, err := conf.ParseRemote(nameArg)
-		if err != nil {
-			return err
-		}
-
-		d, err := conf.GetContainerServer(remote)
-		if err != nil {
-			return err
-		}
+	// Parse remote
+	resources, err := c.global.ParseServers(args...)
+	if err != nil {
+		return err
+	}
 
-		if c.interactive {
-			err := c.promptDelete(name)
+	for _, resource := range resources {
+		if c.flagInteractive {
+			err := c.promptDelete(resource.name)
 			if err != nil {
 				return err
 			}
 		}
 
-		if shared.IsSnapshot(name) {
-			return c.doDelete(d, name)
+		if shared.IsSnapshot(resource.name) {
+			return c.doDelete(resource.server, resource.name)
 		}
 
-		ct, _, err := d.GetContainer(name)
+		ct, _, err := resource.server.GetContainer(resource.name)
 		if err != nil {
 			return err
 		}
 
 		if ct.StatusCode != 0 && ct.StatusCode != api.Stopped {
-			if !c.force {
+			if !c.flagForce {
 				return fmt.Errorf(i18n.G("The container is currently running, stop it first or pass --force."))
 			}
 
@@ -111,7 +110,7 @@ func (c *deleteCmd) run(conf *config.Config, args []string) error {
 				Force:   true,
 			}
 
-			op, err := d.UpdateContainerState(name, req, "")
+			op, err := resource.server.UpdateContainerState(resource.name, req, "")
 			if err != nil {
 				return err
 			}
@@ -126,7 +125,7 @@ func (c *deleteCmd) run(conf *config.Config, args []string) error {
 			}
 		}
 
-		if err := c.doDelete(d, name); err != nil {
+		if err := c.doDelete(resource.server, resource.name); err != nil {
 			return err
 		}
 	}
diff --git a/lxc/main.go b/lxc/main.go
index fc1cfde07..ec33403be 100644
--- a/lxc/main.go
+++ b/lxc/main.go
@@ -73,6 +73,10 @@ For help with any of those, simply call them with --help.`))
 	consoleCmd := cmdConsole{global: &globalCmd}
 	app.AddCommand(consoleCmd.Command())
 
+	// delete sub-command
+	deleteCmd := cmdDelete{global: &globalCmd}
+	app.AddCommand(deleteCmd.Command())
+
 	// exec sub-command
 	execCmd := cmdExec{global: &globalCmd}
 	app.AddCommand(execCmd.Command())
@@ -270,7 +274,6 @@ var commands = map[string]command{
 	"cluster":   &clusterCmd{},
 	"config":    &configCmd{},
 	"copy":      &copyCmd{},
-	"delete":    &deleteCmd{},
 	"file":      &fileCmd{},
 	"image":     &imageCmd{},
 	"init":      &initCmd{},
@@ -321,7 +324,6 @@ var defaultAliases = map[string]string{
 
 	"cp": "copy",
 	"mv": "move",
-	"rm": "delete",
 
 	"image cp": "image copy",
 	"image ls": "image list",
diff --git a/lxc/move.go b/lxc/move.go
index a157ffc4a..e65e4b797 100644
--- a/lxc/move.go
+++ b/lxc/move.go
@@ -142,9 +142,9 @@ func (c *moveCmd) run(conf *config.Config, args []string) error {
 		return err
 	}
 
-	del := deleteCmd{}
-	del.force = true
-	return del.run(conf, args[:1])
+	del := cmdDelete{}
+	del.flagForce = true
+	return del.Run(nil, args[:1])
 }
 
 // Helper to check if the container to be moved is backed by a ceph storage

From 0e301280ba49e6cb200b96f9f68ed23fee2c0fac Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 22 Mar 2018 23:38:13 -0400
Subject: [PATCH 15/39] lxc/move: Port to cobra
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 |  6 +++--
 lxc/move.go | 88 +++++++++++++++++++++++++++++++++++--------------------------
 2 files changed, 55 insertions(+), 39 deletions(-)

diff --git a/lxc/main.go b/lxc/main.go
index ec33403be..c42c6082e 100644
--- a/lxc/main.go
+++ b/lxc/main.go
@@ -93,6 +93,10 @@ For help with any of those, simply call them with --help.`))
 	monitorCmd := cmdMonitor{global: &globalCmd}
 	app.AddCommand(monitorCmd.Command())
 
+	// move sub-command
+	moveCmd := cmdMove{global: &globalCmd}
+	app.AddCommand(moveCmd.Command())
+
 	// query sub-command
 	queryCmd := cmdQuery{global: &globalCmd}
 	app.AddCommand(queryCmd.Command())
@@ -279,7 +283,6 @@ var commands = map[string]command{
 	"init":      &initCmd{},
 	"launch":    &launchCmd{},
 	"manpage":   &manpageCmd{},
-	"move":      &moveCmd{},
 	"network":   &networkCmd{},
 	"operation": &operationCmd{},
 	"pause": &actionCmd{
@@ -323,7 +326,6 @@ var defaultAliases = map[string]string{
 	"shell": "exec @ARGS@ -- su -l",
 
 	"cp": "copy",
-	"mv": "move",
 
 	"image cp": "image copy",
 	"image ls": "image list",
diff --git a/lxc/move.go b/lxc/move.go
index e65e4b797..a8db84667 100644
--- a/lxc/move.go
+++ b/lxc/move.go
@@ -4,57 +4,71 @@ import (
 	"fmt"
 	"strings"
 
+	"github.com/spf13/cobra"
+
 	"github.com/lxc/lxd/lxc/config"
 	"github.com/lxc/lxd/shared"
 	"github.com/lxc/lxd/shared/api"
-	"github.com/lxc/lxd/shared/gnuflag"
+	cli "github.com/lxc/lxd/shared/cmd"
 	"github.com/lxc/lxd/shared/i18n"
 	"github.com/pkg/errors"
 )
 
-type moveCmd struct {
-	containerOnly bool
-	mode          string
-	stateless     bool
-	target        string
-}
+type cmdMove struct {
+	global *cmdGlobal
 
-func (c *moveCmd) showByDefault() bool {
-	return true
+	flagContainerOnly bool
+	flagMode          string
+	flagStateless     bool
+	flagTarget        string
 }
 
-func (c *moveCmd) usage() string {
-	return i18n.G(
-		`Usage: lxc move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/<snapshot>]] [--container-only] [--target <node>]
-
-Move containers within or in between LXD instances.
-
-lxc move [<remote>:]<source container> [<remote>:][<destination container>] [--container-only]
+func (c *cmdMove) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/<snapshot>]]")
+	cmd.Aliases = []string{"mv"}
+	cmd.Short = i18n.G("Move containers within or in between LXD instances")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Move containers within or in between LXD instances`))
+	cmd.Example = cli.FormatSection("", i18n.G(
+		`lxc move [<remote>:]<source container> [<remote>:][<destination container>] [--container-only]
     Move a container between two hosts, renaming it if destination name differs.
 
 lxc move <old name> <new name> [--container-only]
     Rename a local container.
 
 lxc move <container>/<old snapshot name> <container>/<new snapshot name>
-    Rename a snapshot.`)
-}
+    Rename a snapshot.`))
+
+	cmd.RunE = c.Run
+	cmd.Flags().BoolVar(&c.flagContainerOnly, "container-only", false, i18n.G("Move the container without its snapshots"))
+	cmd.Flags().StringVar(&c.flagMode, "mode", "pull", i18n.G("Transfer mode. One of pull (default), push or relay.")+"``")
+	cmd.Flags().BoolVar(&c.flagStateless, "stateless", false, i18n.G("Copy a stateful container stateless"))
+	cmd.Flags().StringVar(&c.flagTarget, "target", "", i18n.G("Node name")+"``")
 
-func (c *moveCmd) flags() {
-	gnuflag.BoolVar(&c.containerOnly, "container-only", false, i18n.G("Move the container without its snapshots"))
-	gnuflag.StringVar(&c.mode, "mode", "pull", i18n.G("Transfer mode. One of pull (default), push or relay."))
-	gnuflag.BoolVar(&c.stateless, "stateless", false, i18n.G("Copy a stateful container stateless"))
-	gnuflag.StringVar(&c.target, "target", "", i18n.G("Node name"))
+	return cmd
 }
 
-func (c *moveCmd) run(conf *config.Config, args []string) error {
-	if len(args) != 2 && c.target == "" {
-		return errArgs
+func (c *cmdMove) Run(cmd *cobra.Command, args []string) error {
+	conf := c.global.conf
+
+	// Sanity checks
+	if c.flagTarget == "" {
+		exit, err := c.global.CheckArgs(cmd, args, 2, 2)
+		if exit {
+			return err
+		}
+	} else {
+		exit, err := c.global.CheckArgs(cmd, args, 1, 2)
+		if exit {
+			return err
+		}
 	}
 
 	// Parse the mode
 	mode := "pull"
-	if c.mode != "" {
-		mode = c.mode
+	if c.flagMode != "" {
+		mode = c.flagMode
 	}
 
 	sourceRemote, sourceName, err := conf.ParseRemote(args[0])
@@ -73,7 +87,7 @@ func (c *moveCmd) run(conf *config.Config, args []string) error {
 	}
 
 	// Target node and destination remote can't be used together.
-	if c.target != "" && sourceRemote != destRemote {
+	if c.flagTarget != "" && sourceRemote != destRemote {
 		return fmt.Errorf(i18n.G("You must use the same source and destination remote when using --target"))
 	}
 
@@ -82,7 +96,7 @@ func (c *moveCmd) run(conf *config.Config, args []string) error {
 	// running, containers that are running should be live migrated (of
 	// course, this changing of hostname isn't supported right now, so this
 	// simply won't work).
-	if sourceRemote == destRemote && c.target == "" {
+	if sourceRemote == destRemote && c.flagTarget == "" {
 		source, err := conf.GetContainerServer(sourceRemote)
 		if err != nil {
 			return err
@@ -120,8 +134,8 @@ func (c *moveCmd) run(conf *config.Config, args []string) error {
 	// cluster node to another. In case the rootfs of the container is
 	// backed by ceph, we want to re-use the same ceph volume. This assumes
 	// that the container is not running.
-	if c.target != "" {
-		moved, err := maybeMoveCephContainer(conf, sourceResource, destResource, c.target)
+	if c.flagTarget != "" {
+		moved, err := maybeMoveCephContainer(conf, sourceResource, destResource, c.flagTarget)
 		if err != nil {
 			return err
 		}
@@ -131,20 +145,20 @@ func (c *moveCmd) run(conf *config.Config, args []string) error {
 	}
 
 	cpy := copyCmd{}
-	cpy.target = c.target
+	cpy.target = c.flagTarget
 
-	stateful := !c.stateless
+	stateful := !c.flagStateless
 
 	// A move is just a copy followed by a delete; however, we want to
 	// keep the volatile entries around since we are moving the container.
-	err = cpy.copyContainer(conf, sourceResource, destResource, true, -1, stateful, c.containerOnly, mode)
+	err = cpy.copyContainer(conf, sourceResource, destResource, true, -1, stateful, c.flagContainerOnly, mode)
 	if err != nil {
 		return err
 	}
 
-	del := cmdDelete{}
+	del := cmdDelete{global: c.global}
 	del.flagForce = true
-	return del.Run(nil, args[:1])
+	return del.Run(cmd, args[:1])
 }
 
 // Helper to check if the container to be moved is backed by a ceph storage

From c93dc7ef552f9594adf389f700e25fe543e3f5eb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Fri, 23 Mar 2018 00:01:07 -0400
Subject: [PATCH 16/39] lxc/restore: Port to cobra
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    |  5 ++++-
 lxc/restore.go | 58 ++++++++++++++++++++++++++++++++--------------------------
 2 files changed, 36 insertions(+), 27 deletions(-)

diff --git a/lxc/main.go b/lxc/main.go
index c42c6082e..f65dd97d3 100644
--- a/lxc/main.go
+++ b/lxc/main.go
@@ -105,6 +105,10 @@ For help with any of those, simply call them with --help.`))
 	renameCmd := cmdRename{global: &globalCmd}
 	app.AddCommand(renameCmd.Command())
 
+	// restore sub-command
+	restoreCmd := cmdRestore{global: &globalCmd}
+	app.AddCommand(restoreCmd.Command())
+
 	// Deal with --all flag
 	err := app.ParseFlags(os.Args[1:])
 	if err == nil {
@@ -301,7 +305,6 @@ var commands = map[string]command{
 		name:        "restart",
 		timeout:     -1,
 	},
-	"restore":  &restoreCmd{},
 	"snapshot": &snapshotCmd{},
 	"start": &actionCmd{
 		action:      shared.Start,
diff --git a/lxc/restore.go b/lxc/restore.go
index abffd32ca..2bbc26065 100644
--- a/lxc/restore.go
+++ b/lxc/restore.go
@@ -3,48 +3,51 @@ package main
 import (
 	"fmt"
 
-	"github.com/lxc/lxd/lxc/config"
+	"github.com/spf13/cobra"
+
 	"github.com/lxc/lxd/shared"
 	"github.com/lxc/lxd/shared/api"
-	"github.com/lxc/lxd/shared/gnuflag"
+	cli "github.com/lxc/lxd/shared/cmd"
 	"github.com/lxc/lxd/shared/i18n"
 )
 
-type restoreCmd struct {
-	stateful bool
-}
+type cmdRestore struct {
+	global *cmdGlobal
 
-func (c *restoreCmd) showByDefault() bool {
-	return true
+	flagStateful bool
 }
 
-func (c *restoreCmd) usage() string {
-	return i18n.G(
-		`Usage: lxc restore [<remote>:]<container> <snapshot> [--stateful]
-
-Restore containers from snapshots.
+func (c *cmdRestore) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("restore [<remote>:]<container> <snapshot>")
+	cmd.Short = i18n.G("Restore containers from snapshots")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Restore containers from snapshots
 
-If --stateful is passed, then the running state will be restored too.
-
-*Examples*
-lxc snapshot u1 snap0
+If --stateful is passed, then the running state will be restored too.`))
+	cmd.Example = cli.FormatSection("", i18n.G(
+		`lxc snapshot u1 snap0
     Create the snapshot.
 
 lxc restore u1 snap0
-    Restore the snapshot.`)
-}
+    Restore the snapshot.`))
 
-func (c *restoreCmd) flags() {
-	gnuflag.BoolVar(&c.stateful, "stateful", false, i18n.G("Whether or not to restore the container's running state from snapshot (if available)"))
+	cmd.RunE = c.Run
+	cmd.Flags().BoolVar(&c.flagStateful, "stateful", false, i18n.G("Whether or not to restore the container's running state from snapshot (if available)"))
+
+	return cmd
 }
 
-func (c *restoreCmd) run(conf *config.Config, args []string) error {
-	if len(args) < 2 {
-		return errArgs
-	}
+func (c *cmdRestore) Run(cmd *cobra.Command, args []string) error {
+	conf := c.global.conf
 
-	var snapname = args[1]
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 2, 2)
+	if exit {
+		return err
+	}
 
+	// Connect to LXD
 	remote, name, err := conf.ParseRemote(args[0])
 	if err != nil {
 		return err
@@ -55,15 +58,18 @@ func (c *restoreCmd) run(conf *config.Config, args []string) error {
 		return err
 	}
 
+	// Setup the snapshot restore
+	snapname := args[1]
 	if !shared.IsSnapshot(snapname) {
 		snapname = fmt.Sprintf("%s/%s", name, snapname)
 	}
 
 	req := api.ContainerPut{
 		Restore:  snapname,
-		Stateful: c.stateful,
+		Stateful: c.flagStateful,
 	}
 
+	// Restore the snapshot
 	op, err := d.UpdateContainer(name, req, "")
 	if err != nil {
 		return err

From a9a232dbdf8ca1752beb01863d24487b6af9c345 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Fri, 23 Mar 2018 00:07:05 -0400
Subject: [PATCH 17/39] lxc/snapshot: Port to cobra
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     |  5 ++++-
 lxc/snapshot.go | 50 +++++++++++++++++++++++++++-----------------------
 2 files changed, 31 insertions(+), 24 deletions(-)

diff --git a/lxc/main.go b/lxc/main.go
index f65dd97d3..4cdaaff74 100644
--- a/lxc/main.go
+++ b/lxc/main.go
@@ -109,6 +109,10 @@ For help with any of those, simply call them with --help.`))
 	restoreCmd := cmdRestore{global: &globalCmd}
 	app.AddCommand(restoreCmd.Command())
 
+	// snapshot sub-command
+	snapshotCmd := cmdSnapshot{global: &globalCmd}
+	app.AddCommand(snapshotCmd.Command())
+
 	// Deal with --all flag
 	err := app.ParseFlags(os.Args[1:])
 	if err == nil {
@@ -305,7 +309,6 @@ var commands = map[string]command{
 		name:        "restart",
 		timeout:     -1,
 	},
-	"snapshot": &snapshotCmd{},
 	"start": &actionCmd{
 		action:      shared.Start,
 		description: i18n.G("Start containers."),
diff --git a/lxc/snapshot.go b/lxc/snapshot.go
index bcd59b8bb..4b91b02d9 100644
--- a/lxc/snapshot.go
+++ b/lxc/snapshot.go
@@ -1,41 +1,45 @@
 package main
 
 import (
-	"github.com/lxc/lxd/lxc/config"
+	"github.com/spf13/cobra"
+
 	"github.com/lxc/lxd/shared/api"
-	"github.com/lxc/lxd/shared/gnuflag"
+	cli "github.com/lxc/lxd/shared/cmd"
 	"github.com/lxc/lxd/shared/i18n"
 )
 
-type snapshotCmd struct {
-	stateful bool
-}
+type cmdSnapshot struct {
+	global *cmdGlobal
 
-func (c *snapshotCmd) showByDefault() bool {
-	return true
+	flagStateful bool
 }
 
-func (c *snapshotCmd) usage() string {
-	return i18n.G(
-		`Usage: lxc snapshot [<remote>:]<container> <snapshot name> [--stateful]
-
-Create container snapshots.
+func (c *cmdSnapshot) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("snapshot [<remote>:]<container> <snapshot name>")
+	cmd.Short = i18n.G("Create container snapshots")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Create container snapshots
 
 When --stateful is used, LXD attempts to checkpoint the container's
-running state, including process memory state, TCP connections, ...
+running state, including process memory state, TCP connections, ...`))
+	cmd.Example = cli.FormatSection("", i18n.G(
+		`lxc snapshot u1 snap0
+    Create a snapshot of "u1" called "snap0".`))
 
-*Examples*
-lxc snapshot u1 snap0
-    Create a snapshot of "u1" called "snap0".`)
-}
+	cmd.RunE = c.Run
+	cmd.Flags().BoolVar(&c.flagStateful, "stateful", false, i18n.G("Whether or not to snapshot the container's running state"))
 
-func (c *snapshotCmd) flags() {
-	gnuflag.BoolVar(&c.stateful, "stateful", false, i18n.G("Whether or not to snapshot the container's running state"))
+	return cmd
 }
 
-func (c *snapshotCmd) run(conf *config.Config, args []string) error {
-	if len(args) < 1 {
-		return errArgs
+func (c *cmdSnapshot) Run(cmd *cobra.Command, args []string) error {
+	conf := c.global.conf
+
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, 2)
+	if exit {
+		return err
 	}
 
 	var snapname string
@@ -57,7 +61,7 @@ func (c *snapshotCmd) run(conf *config.Config, args []string) error {
 
 	req := api.ContainerSnapshotsPost{
 		Name:     snapname,
-		Stateful: c.stateful,
+		Stateful: c.flagStateful,
 	}
 
 	op, err := d.CreateContainerSnapshot(name, req)

From c4c5311a27fdabb0ea3db00ce3603a7e0f14a2e6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Fri, 23 Mar 2018 00:28:28 -0400
Subject: [PATCH 18/39] lxc/publish: Port to cobra
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    |  5 ++++-
 lxc/publish.go | 64 +++++++++++++++++++++++++++++++++-------------------------
 2 files changed, 40 insertions(+), 29 deletions(-)

diff --git a/lxc/main.go b/lxc/main.go
index 4cdaaff74..e5ce09819 100644
--- a/lxc/main.go
+++ b/lxc/main.go
@@ -97,6 +97,10 @@ For help with any of those, simply call them with --help.`))
 	moveCmd := cmdMove{global: &globalCmd}
 	app.AddCommand(moveCmd.Command())
 
+	// publish sub-command
+	publishCmd := cmdPublish{global: &globalCmd}
+	app.AddCommand(publishCmd.Command())
+
 	// query sub-command
 	queryCmd := cmdQuery{global: &globalCmd}
 	app.AddCommand(queryCmd.Command())
@@ -299,7 +303,6 @@ var commands = map[string]command{
 		name:        "pause",
 	},
 	"profile": &profileCmd{},
-	"publish": &publishCmd{},
 	"remote":  &remoteCmd{},
 	"restart": &actionCmd{
 		action:      shared.Restart,
diff --git a/lxc/publish.go b/lxc/publish.go
index cea9a50f4..7ffa3340f 100644
--- a/lxc/publish.go
+++ b/lxc/publish.go
@@ -4,49 +4,57 @@ import (
 	"fmt"
 	"strings"
 
+	"github.com/spf13/cobra"
+
 	"github.com/lxc/lxd/client"
-	"github.com/lxc/lxd/lxc/config"
 	"github.com/lxc/lxd/shared/api"
-	"github.com/lxc/lxd/shared/gnuflag"
+	cli "github.com/lxc/lxd/shared/cmd"
 	"github.com/lxc/lxd/shared/i18n"
 
 	"github.com/lxc/lxd/shared"
 )
 
-type publishCmd struct {
-	pAliases             aliasList // aliasList defined in lxc/image.go
-	compressionAlgorithm string
-	makePublic           bool
-	Force                bool
+type cmdPublish struct {
+	global *cmdGlobal
+
+	flagAliases              []string
+	flagCompressionAlgorithm string
+	flagMakePublic           bool
+	flagForce                bool
 }
 
-func (c *publishCmd) showByDefault() bool {
+func (c *cmdPublish) showByDefault() bool {
 	return true
 }
 
-func (c *publishCmd) usage() string {
-	return i18n.G(
-		`Usage: lxc publish [<remote>:]<container>[/<snapshot>] [<remote>:] [--alias=ALIAS...] [prop-key=prop-value...]
+func (c *cmdPublish) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("publish [<remote>:]<container>[/<snapshot>] [<remote>:] [flags] [prop-key=prop-value...]")
+	cmd.Short = i18n.G("Publish containers as images")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Publish containers as images`))
 
-Publish containers as images.`)
-}
+	cmd.RunE = c.Run
+	cmd.Flags().BoolVar(&c.flagMakePublic, "public", false, i18n.G("Make the image public"))
+	cmd.Flags().StringArrayVar(&c.flagAliases, "alias", nil, i18n.G("New alias to define at target")+"``")
+	cmd.Flags().BoolVarP(&c.flagForce, "force", "f", false, i18n.G("Stop the container if currently running"))
+	cmd.Flags().StringVar(&c.flagCompressionAlgorithm, "compression", "", i18n.G("Define a compression algorithm: for image or none")+"``")
 
-func (c *publishCmd) flags() {
-	gnuflag.BoolVar(&c.makePublic, "public", false, i18n.G("Make the image public"))
-	gnuflag.Var(&c.pAliases, "alias", i18n.G("New alias to define at target"))
-	gnuflag.BoolVar(&c.Force, "force", false, i18n.G("Stop the container if currently running"))
-	gnuflag.BoolVar(&c.Force, "f", false, i18n.G("Stop the container if currently running"))
-	gnuflag.StringVar(&c.compressionAlgorithm, "compression", "", i18n.G("Define a compression algorithm: for image or none"))
+	return cmd
 }
 
-func (c *publishCmd) run(conf *config.Config, args []string) error {
+func (c *cmdPublish) Run(cmd *cobra.Command, args []string) error {
+	conf := c.global.conf
+
 	iName := ""
 	iRemote := ""
 	properties := map[string]string{}
 	firstprop := 1 // first property is arg[2] if arg[1] is image remote, else arg[1]
 
-	if len(args) < 1 {
-		return errArgs
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, -1)
+	if exit {
+		return err
 	}
 
 	cRemote, cName, err := conf.ParseRemote(args[0])
@@ -97,7 +105,7 @@ func (c *publishCmd) run(conf *config.Config, args []string) error {
 		wasEphemeral := ct.Ephemeral
 
 		if wasRunning {
-			if !c.Force {
+			if !c.flagForce {
 				return fmt.Errorf(i18n.G("The container is currently running. Use --force to have it stopped and restarted."))
 			}
 
@@ -164,7 +172,7 @@ func (c *publishCmd) run(conf *config.Config, args []string) error {
 	for i := firstprop; i < len(args); i++ {
 		entry := strings.SplitN(args[i], "=", 2)
 		if len(entry) < 2 {
-			return errArgs
+			return fmt.Errorf(i18n.G("Bad key=value pair: %s"), entry)
 		}
 		properties[entry[0]] = entry[1]
 	}
@@ -179,7 +187,7 @@ func (c *publishCmd) run(conf *config.Config, args []string) error {
 
 	// Reformat aliases
 	aliases := []api.ImageAlias{}
-	for _, entry := range c.pAliases {
+	for _, entry := range c.flagAliases {
 		alias := api.ImageAlias{}
 		alias.Name = entry
 		aliases = append(aliases, alias)
@@ -191,7 +199,7 @@ func (c *publishCmd) run(conf *config.Config, args []string) error {
 			Type: "container",
 			Name: cName,
 		},
-		CompressionAlgorithm: c.compressionAlgorithm,
+		CompressionAlgorithm: c.flagCompressionAlgorithm,
 	}
 	req.Properties = properties
 
@@ -200,7 +208,7 @@ func (c *publishCmd) run(conf *config.Config, args []string) error {
 	}
 
 	if cRemote == iRemote {
-		req.Public = c.makePublic
+		req.Public = c.flagMakePublic
 	}
 
 	op, err := s.CreateImage(req, nil)
@@ -229,7 +237,7 @@ func (c *publishCmd) run(conf *config.Config, args []string) error {
 
 		// Image copy arguments
 		args := lxd.ImageCopyArgs{
-			Public: c.makePublic,
+			Public: c.flagMakePublic,
 		}
 
 		// Copy the image to the destination host

From 62cca239d128c6dbc9faa74066bc1769fcd9cfbb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Fri, 23 Mar 2018 00:53:15 -0400
Subject: [PATCH 19/39] lxc/copy: Port to cobra
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 | 118 +++++++++++++++++++++++++++++++++++-------------------------
 lxc/main.go |   7 ++--
 lxc/move.go |   4 +--
 3 files changed, 75 insertions(+), 54 deletions(-)

diff --git a/lxc/copy.go b/lxc/copy.go
index 89c0e932f..d62d291ad 100644
--- a/lxc/copy.go
+++ b/lxc/copy.go
@@ -4,49 +4,51 @@ import (
 	"fmt"
 	"strings"
 
+	"github.com/spf13/cobra"
+
 	"github.com/lxc/lxd/client"
 	"github.com/lxc/lxd/lxc/config"
 	"github.com/lxc/lxd/lxc/utils"
 	"github.com/lxc/lxd/shared"
-	"github.com/lxc/lxd/shared/gnuflag"
+	cli "github.com/lxc/lxd/shared/cmd"
 	"github.com/lxc/lxd/shared/i18n"
 )
 
-type copyCmd struct {
-	profArgs      profileList
-	confArgs      configList
-	ephem         bool
-	containerOnly bool
-	mode          string
-	stateless     bool
-	target        string
-}
-
-func (c *copyCmd) showByDefault() bool {
-	return true
-}
-
-func (c *copyCmd) usage() string {
-	return i18n.G(
-		`Usage: lxc copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>] [--ephemeral|e] [--profile|-p <profile>...] [--config|-c <key=value>...] [--container-only] [--target <node>]
-
-Copy containers within or in between LXD instances.`)
+type cmdCopy struct {
+	global *cmdGlobal
+
+	flagNoProfiles    bool
+	flagProfile       []string
+	flagConfig        []string
+	flagEphemeral     bool
+	flagContainerOnly bool
+	flagMode          string
+	flagStateless     bool
+	flagTarget        string
 }
 
-func (c *copyCmd) flags() {
-	gnuflag.Var(&c.confArgs, "config", i18n.G("Config key/value to apply to the new container"))
-	gnuflag.Var(&c.confArgs, "c", i18n.G("Config key/value to apply to the new container"))
-	gnuflag.Var(&c.profArgs, "profile", i18n.G("Profile to apply to the new container"))
-	gnuflag.Var(&c.profArgs, "p", i18n.G("Profile to apply to the new container"))
-	gnuflag.BoolVar(&c.ephem, "ephemeral", false, i18n.G("Ephemeral container"))
-	gnuflag.BoolVar(&c.ephem, "e", false, i18n.G("Ephemeral container"))
-	gnuflag.StringVar(&c.mode, "mode", "pull", i18n.G("Transfer mode. One of pull (default), push or relay."))
-	gnuflag.BoolVar(&c.containerOnly, "container-only", false, i18n.G("Copy the container without its snapshots"))
-	gnuflag.BoolVar(&c.stateless, "stateless", false, i18n.G("Copy a stateful container stateless"))
-	gnuflag.StringVar(&c.target, "target", "", i18n.G("Node name"))
+func (c *cmdCopy) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>]")
+	cmd.Aliases = []string{"cp"}
+	cmd.Short = i18n.G("Copy containers within or in between LXD instances")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Copy containers within or in between LXD instances`))
+
+	cmd.RunE = c.Run
+	cmd.Flags().StringArrayVarP(&c.flagConfig, "config", "c", nil, i18n.G("Config key/value to apply to the new container")+"``")
+	cmd.Flags().StringArrayVarP(&c.flagProfile, "profile", "p", nil, i18n.G("Profile to apply to the new container")+"``")
+	cmd.Flags().BoolVarP(&c.flagEphemeral, "ephemeral", "e", false, i18n.G("Ephemeral container"))
+	cmd.Flags().StringVar(&c.flagMode, "mode", "pull", i18n.G("Transfer mode. One of pull (default), push or relay")+"``")
+	cmd.Flags().BoolVar(&c.flagContainerOnly, "container-only", false, i18n.G("Copy the container without its snapshots"))
+	cmd.Flags().BoolVar(&c.flagStateless, "stateless", false, i18n.G("Copy a stateful container stateless"))
+	cmd.Flags().StringVar(&c.flagTarget, "target", "", i18n.G("Node name")+"``")
+	cmd.Flags().BoolVar(&c.flagNoProfiles, "no-profiles", false, "Create the container with no profiles applied")
+
+	return cmd
 }
 
-func (c *copyCmd) copyContainer(conf *config.Config, sourceResource string,
+func (c *cmdCopy) copyContainer(conf *config.Config, sourceResource string,
 	destResource string, keepVolatile bool, ephemeral int, stateful bool,
 	containerOnly bool, mode string) error {
 	// Parse the source
@@ -62,7 +64,7 @@ func (c *copyCmd) copyContainer(conf *config.Config, sourceResource string,
 	}
 
 	// Target node and destination remote can't be used together.
-	if c.target != "" && sourceRemote != destRemote {
+	if c.flagTarget != "" && sourceRemote != destRemote {
 		return fmt.Errorf(i18n.G("You must use the same source and destination remote when using --target"))
 	}
 
@@ -72,7 +74,7 @@ func (c *copyCmd) copyContainer(conf *config.Config, sourceResource string,
 	}
 
 	// Check that a destination container was specified, if --target is passed.
-	if destName == "" && c.target != "" {
+	if destName == "" && c.flagTarget != "" {
 		return fmt.Errorf(i18n.G("You must specify a destination container name when using --target"))
 	}
 
@@ -86,7 +88,7 @@ func (c *copyCmd) copyContainer(conf *config.Config, sourceResource string,
 	if err != nil {
 		return err
 	}
-	source = source.UseTarget(c.target)
+	source = source.UseTarget(c.flagTarget)
 
 	// Connect to the destination host
 	var dest lxd.ContainerServer
@@ -101,6 +103,17 @@ func (c *copyCmd) copyContainer(conf *config.Config, sourceResource string,
 		}
 	}
 
+	// Parse the config overrides
+	configMap := map[string]string{}
+	for _, entry := range c.flagConfig {
+		if !strings.Contains(entry, "=") {
+			return fmt.Errorf(i18n.G("Bad key=value pair: %s"), entry)
+		}
+
+		fields := strings.SplitN(entry, "=", 2)
+		configMap[fields[0]] = fields[1]
+	}
+
 	var op lxd.RemoteOperation
 	if shared.IsSnapshot(sourceName) {
 		// Prepare the container creation request
@@ -118,8 +131,10 @@ func (c *copyCmd) copyContainer(conf *config.Config, sourceResource string,
 		}
 
 		// Allow adding additional profiles
-		if c.profArgs != nil {
-			entry.Profiles = append(entry.Profiles, c.profArgs...)
+		if c.flagProfile != nil {
+			entry.Profiles = append(entry.Profiles, c.flagProfile...)
+		} else if c.flagNoProfiles {
+			entry.Profiles = []string{}
 		}
 
 		// Allow setting additional config keys
@@ -170,8 +185,10 @@ func (c *copyCmd) copyContainer(conf *config.Config, sourceResource string,
 		}
 
 		// Allow adding additional profiles
-		if c.profArgs != nil {
-			entry.Profiles = append(entry.Profiles, c.profArgs...)
+		if c.flagProfile != nil {
+			entry.Profiles = append(entry.Profiles, c.flagProfile...)
+		} else if c.flagNoProfiles {
+			entry.Profiles = []string{}
 		}
 
 		// Allow setting additional config keys
@@ -246,33 +263,36 @@ func (c *copyCmd) copyContainer(conf *config.Config, sourceResource string,
 	return nil
 }
 
-func (c *copyCmd) run(conf *config.Config, args []string) error {
-	// We at least need a source container name
-	if len(args) < 1 {
-		return errArgs
+func (c *cmdCopy) Run(cmd *cobra.Command, args []string) error {
+	conf := c.global.conf
+
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 2, 2)
+	if exit {
+		return err
 	}
 
 	// For copies, default to non-ephemeral and allow override (move uses -1)
 	ephem := 0
-	if c.ephem {
+	if c.flagEphemeral {
 		ephem = 1
 	}
 
 	// Parse the mode
 	mode := "pull"
-	if c.mode != "" {
-		mode = c.mode
+	if c.flagMode != "" {
+		mode = c.flagMode
 	}
 
-	stateful := !c.stateless
+	stateful := !c.flagStateless
 
 	// If not target name is specified, one will be chosed by the server
 	if len(args) < 2 {
 		return c.copyContainer(conf, args[0], "", false, ephem,
-			stateful, c.containerOnly, mode)
+			stateful, c.flagContainerOnly, mode)
 	}
 
 	// Normal copy with a pre-determined name
 	return c.copyContainer(conf, args[0], args[1], false, ephem,
-		stateful, c.containerOnly, mode)
+		stateful, c.flagContainerOnly, mode)
 }
diff --git a/lxc/main.go b/lxc/main.go
index e5ce09819..85f7cca01 100644
--- a/lxc/main.go
+++ b/lxc/main.go
@@ -73,6 +73,10 @@ For help with any of those, simply call them with --help.`))
 	consoleCmd := cmdConsole{global: &globalCmd}
 	app.AddCommand(consoleCmd.Command())
 
+	// copy sub-command
+	copyCmd := cmdCopy{global: &globalCmd}
+	app.AddCommand(copyCmd.Command())
+
 	// delete sub-command
 	deleteCmd := cmdDelete{global: &globalCmd}
 	app.AddCommand(deleteCmd.Command())
@@ -289,7 +293,6 @@ var commands = map[string]command{
 	"alias":     &aliasCmd{},
 	"cluster":   &clusterCmd{},
 	"config":    &configCmd{},
-	"copy":      &copyCmd{},
 	"file":      &fileCmd{},
 	"image":     &imageCmd{},
 	"init":      &initCmd{},
@@ -334,8 +337,6 @@ var commands = map[string]command{
 var defaultAliases = map[string]string{
 	"shell": "exec @ARGS@ -- su -l",
 
-	"cp": "copy",
-
 	"image cp": "image copy",
 	"image ls": "image list",
 	"image rm": "image delete",
diff --git a/lxc/move.go b/lxc/move.go
index a8db84667..823dc463c 100644
--- a/lxc/move.go
+++ b/lxc/move.go
@@ -144,8 +144,8 @@ func (c *cmdMove) Run(cmd *cobra.Command, args []string) error {
 		}
 	}
 
-	cpy := copyCmd{}
-	cpy.target = c.flagTarget
+	cpy := cmdCopy{}
+	cpy.flagTarget = c.flagTarget
 
 	stateful := !c.flagStateless
 

From e0062ffcf6640640798d7b47a7c8d3537c7a5368 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Fri, 23 Mar 2018 01:26:59 -0400
Subject: [PATCH 20/39] lxc/{init,launch}: Port to cobra
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   | 222 +++++++++++++++++-----------------------------------------
 lxc/launch.go |  45 ++++++------
 lxc/main.go   |  10 ++-
 3 files changed, 97 insertions(+), 180 deletions(-)

diff --git a/lxc/init.go b/lxc/init.go
index 49e460b97..6e86b0bb7 100644
--- a/lxc/init.go
+++ b/lxc/init.go
@@ -5,161 +5,63 @@ import (
 	"os"
 	"strings"
 
+	"github.com/spf13/cobra"
+
 	"github.com/lxc/lxd/client"
 	"github.com/lxc/lxd/lxc/config"
 	"github.com/lxc/lxd/lxc/utils"
 	"github.com/lxc/lxd/shared/api"
-	"github.com/lxc/lxd/shared/gnuflag"
+	cli "github.com/lxc/lxd/shared/cmd"
 	"github.com/lxc/lxd/shared/i18n"
 )
 
-type profileList []string
-
-var configMap map[string]string
-
-func (f *profileList) String() string {
-	return fmt.Sprint(*f)
+type cmdInit struct {
+	global *cmdGlobal
+
+	flagConfig     []string
+	flagEphemeral  bool
+	flagNetwork    string
+	flagProfile    []string
+	flagStorage    string
+	flagTarget     string
+	flagType       string
+	flagNoProfiles bool
 }
 
-type configList []string
-
-func (f *configList) String() string {
-	return fmt.Sprint(configMap)
+func (c *cmdInit) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("init [<remote>:]<image> [<remote>:][<name>]")
+	cmd.Short = i18n.G("Create containers from images")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Create containers from images`))
+	cmd.Example = cli.FormatSection("", i18n.G(
+		`lxc init ubuntu:16.04 u1`))
+	cmd.Hidden = true
+
+	cmd.RunE = c.Run
+	cmd.Flags().StringArrayVarP(&c.flagConfig, "config", "c", nil, i18n.G("Config key/value to apply to the new container")+"``")
+	cmd.Flags().StringArrayVarP(&c.flagProfile, "profile", "p", nil, i18n.G("Profile to apply to the new container")+"``")
+	cmd.Flags().BoolVarP(&c.flagEphemeral, "ephemeral", "e", false, i18n.G("Ephemeral container"))
+	cmd.Flags().StringVarP(&c.flagNetwork, "network", "n", "", i18n.G("Network name")+"``")
+	cmd.Flags().StringVarP(&c.flagStorage, "storage", "s", "", i18n.G("Storage pool name")+"``")
+	cmd.Flags().StringVarP(&c.flagType, "type", "t", "", i18n.G("Instance type")+"``")
+	cmd.Flags().StringVar(&c.flagTarget, "target", "", i18n.G("Node name")+"``")
+
+	return cmd
 }
 
-func (f *configList) Set(value string) error {
-	if value == "" {
-		return fmt.Errorf(i18n.G("Invalid configuration key"))
-	}
-
-	items := strings.SplitN(value, "=", 2)
-	if len(items) < 2 {
-		return fmt.Errorf(i18n.G("Invalid configuration key"))
-	}
-
-	if configMap == nil {
-		configMap = map[string]string{}
+func (c *cmdInit) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, 2)
+	if exit {
+		return err
 	}
 
-	configMap[items[0]] = items[1]
-
-	return nil
-}
-
-func (f *profileList) Set(value string) error {
-	if value == "" {
-		initRequestedEmptyProfiles = true
-		return nil
-	}
-	if f == nil {
-		*f = make(profileList, 1)
-	} else {
-		*f = append(*f, value)
-	}
-	return nil
-}
-
-var initRequestedEmptyProfiles bool
-
-type initCmd struct {
-	profArgs     profileList
-	confArgs     configList
-	ephem        bool
-	network      string
-	storagePool  string
-	instanceType string
-	target       string
-}
-
-func (c *initCmd) showByDefault() bool {
-	return false
-}
-
-func (c *initCmd) usage() string {
-	return i18n.G(
-		`Usage: lxc init [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n <network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target <node>]
-
-Create containers from images.
-
-Not specifying -p will result in the default profile.
-Specifying "-p" with no argument will result in no profile.
-
-Examples:
-    lxc init ubuntu:16.04 u1`)
-}
-
-func (c *initCmd) isEphemeral(s string) bool {
-	switch s {
-	case "-e":
-		return true
-	case "--ephemeral":
-		return true
-	}
-	return false
-}
-
-func (c *initCmd) isProfile(s string) bool {
-	switch s {
-	case "-p":
-		return true
-	case "--profile":
-		return true
-	}
-	return false
-}
-
-func (c *initCmd) massageArgs() {
-	l := len(os.Args)
-	if l < 2 {
-		return
-	}
-
-	if c.isProfile(os.Args[l-1]) {
-		initRequestedEmptyProfiles = true
-		os.Args = os.Args[0 : l-1]
-		return
-	}
-
-	if l < 3 {
-		return
-	}
-
-	/* catch "lxc init ubuntu -p -e */
-	if c.isEphemeral(os.Args[l-1]) && c.isProfile(os.Args[l-2]) {
-		initRequestedEmptyProfiles = true
-		newargs := os.Args[0 : l-2]
-		newargs = append(newargs, os.Args[l-1])
-		os.Args = newargs
-		return
-	}
-}
-
-func (c *initCmd) flags() {
-	c.massageArgs()
-	gnuflag.Var(&c.confArgs, "config", i18n.G("Config key/value to apply to the new container"))
-	gnuflag.Var(&c.confArgs, "c", i18n.G("Config key/value to apply to the new container"))
-	gnuflag.Var(&c.profArgs, "profile", i18n.G("Profile to apply to the new container"))
-	gnuflag.Var(&c.profArgs, "p", i18n.G("Profile to apply to the new container"))
-	gnuflag.BoolVar(&c.ephem, "ephemeral", false, i18n.G("Ephemeral container"))
-	gnuflag.BoolVar(&c.ephem, "e", false, i18n.G("Ephemeral container"))
-	gnuflag.StringVar(&c.network, "network", "", i18n.G("Network name"))
-	gnuflag.StringVar(&c.network, "n", "", i18n.G("Network name"))
-	gnuflag.StringVar(&c.storagePool, "storage", "", i18n.G("Storage pool name"))
-	gnuflag.StringVar(&c.storagePool, "s", "", i18n.G("Storage pool name"))
-	gnuflag.StringVar(&c.instanceType, "t", "", i18n.G("Instance type"))
-	gnuflag.StringVar(&c.target, "target", "", i18n.G("Node name"))
-}
-
-func (c *initCmd) run(conf *config.Config, args []string) error {
-	_, _, err := c.create(conf, args)
+	_, _, err = c.create(c.global.conf, args)
 	return err
 }
 
-func (c *initCmd) create(conf *config.Config, args []string) (lxd.ContainerServer, string, error) {
-	if len(args) > 2 || len(args) < 1 {
-		return nil, "", errArgs
-	}
-
+func (c *cmdInit) create(conf *config.Config, args []string) (lxd.ContainerServer, string, error) {
 	iremote, image, err := conf.ParseRemote(args[0])
 	if err != nil {
 		return nil, "", err
@@ -183,14 +85,10 @@ func (c *initCmd) create(conf *config.Config, args []string) (lxd.ContainerServe
 	if err != nil {
 		return nil, "", err
 	}
-	d = d.UseTarget(c.target)
+	d = d.UseTarget(c.flagTarget)
 
-	/*
-	 * initRequestedEmptyProfiles means user requested empty
-	 * !initRequestedEmptyProfiles but len(profArgs) == 0 means use profile default
-	 */
 	profiles := []string{}
-	for _, p := range c.profArgs {
+	for _, p := range c.flagProfile {
 		profiles = append(profiles, p)
 	}
 
@@ -201,22 +99,32 @@ func (c *initCmd) create(conf *config.Config, args []string) (lxd.ContainerServe
 	}
 
 	devicesMap := map[string]map[string]string{}
-	if c.network != "" {
-		network, _, err := d.GetNetwork(c.network)
+	if c.flagNetwork != "" {
+		network, _, err := d.GetNetwork(c.flagNetwork)
 		if err != nil {
 			return nil, "", err
 		}
 
 		if network.Type == "bridge" {
-			devicesMap[c.network] = map[string]string{"type": "nic", "nictype": "bridged", "parent": c.network}
+			devicesMap[c.flagNetwork] = map[string]string{"type": "nic", "nictype": "bridged", "parent": c.flagNetwork}
 		} else {
-			devicesMap[c.network] = map[string]string{"type": "nic", "nictype": "macvlan", "parent": c.network}
+			devicesMap[c.flagNetwork] = map[string]string{"type": "nic", "nictype": "macvlan", "parent": c.flagNetwork}
+		}
+	}
+
+	configMap := map[string]string{}
+	for _, entry := range c.flagConfig {
+		if !strings.Contains(entry, "=") {
+			return nil, "", fmt.Errorf(i18n.G("Bad key=value pair: %s"), entry)
 		}
+
+		fields := strings.SplitN(entry, "=", 2)
+		configMap[fields[0]] = fields[1]
 	}
 
 	// Check if the specified storage pool exists.
-	if c.storagePool != "" {
-		_, _, err := d.GetStoragePool(c.storagePool)
+	if c.flagStorage != "" {
+		_, _, err := d.GetStoragePool(c.flagStorage)
 		if err != nil {
 			return nil, "", err
 		}
@@ -224,7 +132,7 @@ func (c *initCmd) create(conf *config.Config, args []string) (lxd.ContainerServe
 		devicesMap["root"] = map[string]string{
 			"type": "disk",
 			"path": "/",
-			"pool": c.storagePool,
+			"pool": c.flagStorage,
 		}
 	}
 
@@ -251,16 +159,16 @@ func (c *initCmd) create(conf *config.Config, args []string) (lxd.ContainerServe
 	// Setup container creation request
 	req := api.ContainersPost{
 		Name:         name,
-		InstanceType: c.instanceType,
+		InstanceType: c.flagType,
 	}
 	req.Config = configMap
 	req.Devices = devicesMap
-	if !initRequestedEmptyProfiles && len(profiles) == 0 {
+	if !c.flagNoProfiles && len(profiles) == 0 {
 		req.Profiles = nil
 	} else {
 		req.Profiles = profiles
 	}
-	req.Ephemeral = c.ephem
+	req.Ephemeral = c.flagEphemeral
 
 	// Optimisation for simplestreams
 	if conf.Remotes[iremote].Protocol == "simplestreams" {
@@ -327,7 +235,7 @@ func (c *initCmd) create(conf *config.Config, args []string) (lxd.ContainerServe
 	return d, name, nil
 }
 
-func (c *initCmd) guessImage(conf *config.Config, d lxd.ContainerServer, remote string, iremote string, image string) (string, string) {
+func (c *cmdInit) guessImage(conf *config.Config, d lxd.ContainerServer, remote string, iremote string, image string) (string, string) {
 	if remote != iremote {
 		return iremote, image
 	}
@@ -357,7 +265,7 @@ func (c *initCmd) guessImage(conf *config.Config, d lxd.ContainerServer, remote
 	return fields[0], fields[1]
 }
 
-func (c *initCmd) checkNetwork(d lxd.ContainerServer, name string) {
+func (c *cmdInit) checkNetwork(d lxd.ContainerServer, name string) {
 	ct, _, err := d.GetContainer(name)
 	if err != nil {
 		return
diff --git a/lxc/launch.go b/lxc/launch.go
index d31526844..5724af080 100644
--- a/lxc/launch.go
+++ b/lxc/launch.go
@@ -3,38 +3,41 @@ package main
 import (
 	"fmt"
 
-	"github.com/lxc/lxd/lxc/config"
+	"github.com/spf13/cobra"
+
 	"github.com/lxc/lxd/shared/api"
+	cli "github.com/lxc/lxd/shared/cmd"
 	"github.com/lxc/lxd/shared/i18n"
 )
 
-type launchCmd struct {
-	init initCmd
-}
-
-func (c *launchCmd) showByDefault() bool {
-	return true
+type cmdLaunch struct {
+	global *cmdGlobal
+	init   *cmdInit
 }
 
-func (c *launchCmd) usage() string {
-	return i18n.G(
-		`Usage: lxc launch [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n <network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target <node>]
-
-Create and start containers from images.
+func (c *cmdLaunch) Command() *cobra.Command {
+	cmd := c.init.Command()
+	cmd.Use = i18n.G("launch [<remote>:]<image> [<remote>:][<name>]")
+	cmd.Short = i18n.G("Create and start containers from images")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Create and start containers from images`))
+	cmd.Example = cli.FormatSection("", i18n.G(
+		`lxc launch ubuntu:16.04 u1`))
 
-Not specifying -p will result in the default profile.
-Specifying "-p" with no argument will result in no profile.
+	cmd.RunE = c.Run
 
-Examples:
-    lxc launch ubuntu:16.04 u1`)
+	return cmd
 }
 
-func (c *launchCmd) flags() {
-	c.init = initCmd{}
-	c.init.flags()
-}
+func (c *cmdLaunch) Run(cmd *cobra.Command, args []string) error {
+	conf := c.global.conf
+
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, 2)
+	if exit {
+		return err
+	}
 
-func (c *launchCmd) run(conf *config.Config, args []string) error {
 	// Call the matching code from init
 	d, name, err := c.init.create(conf, args)
 	if err != nil {
diff --git a/lxc/main.go b/lxc/main.go
index 85f7cca01..3432b9295 100644
--- a/lxc/main.go
+++ b/lxc/main.go
@@ -89,6 +89,14 @@ For help with any of those, simply call them with --help.`))
 	infoCmd := cmdInfo{global: &globalCmd}
 	app.AddCommand(infoCmd.Command())
 
+	// init sub-command
+	initCmd := cmdInit{global: &globalCmd}
+	app.AddCommand(initCmd.Command())
+
+	// launch sub-command
+	launchCmd := cmdLaunch{global: &globalCmd, init: &initCmd}
+	app.AddCommand(launchCmd.Command())
+
 	// list sub-command
 	listCmd := cmdList{global: &globalCmd}
 	app.AddCommand(listCmd.Command())
@@ -295,8 +303,6 @@ var commands = map[string]command{
 	"config":    &configCmd{},
 	"file":      &fileCmd{},
 	"image":     &imageCmd{},
-	"init":      &initCmd{},
-	"launch":    &launchCmd{},
 	"manpage":   &manpageCmd{},
 	"network":   &networkCmd{},
 	"operation": &operationCmd{},

From f3e4dddacffa129180bd931c0822a6a8ac0112fb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Sat, 24 Mar 2018 00:17:23 -0400
Subject: [PATCH 21/39] lxc/action: Port to cobra
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 | 167 ++++++++++++++++++++++++++++++++++++++++++----------------
 lxc/main.go   |  49 +++++++----------
 2 files changed, 142 insertions(+), 74 deletions(-)

diff --git a/lxc/action.go b/lxc/action.go
index 05eefb826..5e140c702 100644
--- a/lxc/action.go
+++ b/lxc/action.go
@@ -5,58 +5,131 @@ import (
 	"os"
 	"strings"
 
+	"github.com/spf13/cobra"
+
 	"github.com/lxc/lxd/lxc/config"
 	"github.com/lxc/lxd/shared"
 	"github.com/lxc/lxd/shared/api"
-	"github.com/lxc/lxd/shared/gnuflag"
+	cli "github.com/lxc/lxd/shared/cmd"
 	"github.com/lxc/lxd/shared/i18n"
 )
 
-type actionCmd struct {
-	action      shared.ContainerAction
-	description string
-	hasTimeout  bool
-	visible     bool
-	name        string
-	timeout     int
-	force       bool
-	stateful    bool
-	stateless   bool
-	all         bool
+// Start
+type cmdStart struct {
+	global *cmdGlobal
+	action *cmdAction
 }
 
-func (c *actionCmd) showByDefault() bool {
-	return c.visible
+func (c *cmdStart) Command() *cobra.Command {
+	cmdAction := cmdAction{global: c.global}
+	c.action = &cmdAction
+
+	cmd := c.action.Command("start")
+	cmd.Use = i18n.G("start [<remote>:]<container> [[<remote>:]<container>...]")
+	cmd.Short = i18n.G("Start containers")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Start containers`))
+
+	return cmd
 }
 
-func (c *actionCmd) usage() string {
-	extra := ""
-	if c.name == "pause" {
-		extra = "\n" + i18n.G("The opposite of \"lxc pause\" is \"lxc start\".")
-	}
+// Pause
+type cmdPause struct {
+	global *cmdGlobal
+	action *cmdAction
+}
+
+func (c *cmdPause) Command() *cobra.Command {
+	cmdAction := cmdAction{global: c.global}
+	c.action = &cmdAction
+
+	cmd := c.action.Command("pause")
+	cmd.Use = i18n.G("pause [<remote>:]<container> [[<remote>:]<container>...]")
+	cmd.Short = i18n.G("Pause containers")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Pause containers`))
+	cmd.Hidden = true
+
+	return cmd
+}
+
+// Restart
+type cmdRestart struct {
+	global *cmdGlobal
+	action *cmdAction
+}
+
+func (c *cmdRestart) Command() *cobra.Command {
+	cmdAction := cmdAction{global: c.global}
+	c.action = &cmdAction
 
-	return fmt.Sprintf(i18n.G(
-		`Usage: lxc %s [--all] [<remote>:]<container> [[<remote>:]<container>...]
+	cmd := c.action.Command("restart")
+	cmd.Use = i18n.G("restart [<remote>:]<container> [[<remote>:]<container>...]")
+	cmd.Short = i18n.G("Restart containers")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Restart containers
 
-%s%s`), c.name, c.description, extra)
+The opposite of "lxc pause" is "lxc start".`))
+	cmd.Hidden = true
+
+	return cmd
+}
+
+// Stop
+type cmdStop struct {
+	global *cmdGlobal
+	action *cmdAction
 }
 
-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"))
+func (c *cmdStop) Command() *cobra.Command {
+	cmdAction := cmdAction{global: c.global}
+	c.action = &cmdAction
+
+	cmd := c.action.Command("stop")
+	cmd.Use = i18n.G("stop [<remote>:]<container> [[<remote>:]<container>...]")
+	cmd.Short = i18n.G("Stop containers")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Stop containers`))
+	cmd.Hidden = true
+
+	return cmd
+}
+
+type cmdAction struct {
+	global *cmdGlobal
+
+	flagAll       bool
+	flagForce     bool
+	flagStateful  bool
+	flagStateless bool
+	flagTimeout   int
+}
+
+func (c *cmdAction) Command(action string) *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.RunE = c.Run
+
+	cmd.Flags().BoolVar(&c.flagAll, "all", false, i18n.G("Run command against all containers"))
+
+	if action == "stop" {
+		cmd.Flags().BoolVar(&c.flagStateful, "stateful", false, i18n.G("Store the container state"))
+	} else if action == "start" {
+		cmd.Flags().BoolVar(&c.flagStateless, "stateless", false, i18n.G("Ignore the container state"))
 	}
-	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.all, "all", false, i18n.G("Run command against all containers"))
+
+	if shared.StringInSlice(action, []string{"restart", "stop"}) {
+		cmd.Flags().BoolVarP(&c.flagForce, "force", "f", false, i18n.G("Force the container to shutdown"))
+		cmd.Flags().IntVar(&c.flagTimeout, "timeout", -1, i18n.G("Time to wait for the container before killing it")+"``")
+	}
+
+	return cmd
 }
 
-func (c *actionCmd) doAction(conf *config.Config, nameArg string) error {
+func (c *cmdAction) doAction(action string, conf *config.Config, nameArg string) error {
 	state := false
 
 	// Only store state if asked to
-	if c.action == "stop" && c.stateful {
+	if action == "stop" && c.flagStateful {
 		state = true
 	}
 
@@ -74,7 +147,7 @@ func (c *actionCmd) doAction(conf *config.Config, nameArg string) error {
 		return fmt.Errorf(i18n.G("Must supply container name for: ")+"\"%s\"", nameArg)
 	}
 
-	if c.action == shared.Start {
+	if action == "start" {
 		current, _, err := d.GetContainer(name)
 		if err != nil {
 			return err
@@ -82,19 +155,19 @@ func (c *actionCmd) doAction(conf *config.Config, nameArg string) error {
 
 		// "start" for a frozen container means "unfreeze"
 		if current.StatusCode == api.Frozen {
-			c.action = shared.Unfreeze
+			action = "unfreeze"
 		}
 
 		// Always restore state (if present) unless asked not to
-		if c.action == shared.Start && current.Stateful && !c.stateless {
+		if action == "start" && current.Stateful && !c.flagStateless {
 			state = true
 		}
 	}
 
 	req := api.ContainerStatePut{
-		Action:   string(c.action),
-		Timeout:  c.timeout,
-		Force:    c.force,
+		Action:   action,
+		Timeout:  c.flagTimeout,
+		Force:    c.flagForce,
 		Stateful: state,
 	}
 
@@ -111,32 +184,38 @@ func (c *actionCmd) doAction(conf *config.Config, nameArg string) error {
 	return nil
 }
 
-func (c *actionCmd) run(conf *config.Config, args []string) error {
+func (c *cmdAction) Run(cmd *cobra.Command, args []string) error {
+	conf := c.global.conf
+
 	var names []string
 	if len(args) == 0 {
-		if !c.all {
-			return errArgs
+		if !c.flagAll {
+			cmd.Help()
+			return nil
 		}
+
 		d, err := conf.GetContainerServer(conf.DefaultRemote)
 		if err != nil {
 			return err
 		}
+
 		ctslist, err := d.GetContainers()
 		if err != nil {
 			return err
 		}
+
 		for _, ct := range ctslist {
 			names = append(names, ct.Name)
 		}
 	} else {
-		if c.all {
+		if c.flagAll {
 			return fmt.Errorf(i18n.G("Both --all and container name given"))
 		}
 		names = args
 	}
 
 	// Run the action for every listed container
-	results := runBatch(names, func(name string) error { return c.doAction(conf, name) })
+	results := runBatch(names, func(name string) error { return c.doAction(cmd.Name(), conf, name) })
 
 	// Single container is easy
 	if len(results) == 1 {
@@ -160,7 +239,7 @@ func (c *actionCmd) run(conf *config.Config, args []string) error {
 
 	if !success {
 		fmt.Fprintln(os.Stderr, "")
-		return fmt.Errorf(i18n.G("Some containers failed to %s"), c.name)
+		return fmt.Errorf(i18n.G("Some containers failed to %s"), cmd.Name())
 	}
 
 	return nil
diff --git a/lxc/main.go b/lxc/main.go
index 3432b9295..a38b90619 100644
--- a/lxc/main.go
+++ b/lxc/main.go
@@ -109,6 +109,10 @@ For help with any of those, simply call them with --help.`))
 	moveCmd := cmdMove{global: &globalCmd}
 	app.AddCommand(moveCmd.Command())
 
+	// pause sub-command
+	pauseCmd := cmdPause{global: &globalCmd}
+	app.AddCommand(pauseCmd.Command())
+
 	// publish sub-command
 	publishCmd := cmdPublish{global: &globalCmd}
 	app.AddCommand(publishCmd.Command())
@@ -121,6 +125,10 @@ For help with any of those, simply call them with --help.`))
 	renameCmd := cmdRename{global: &globalCmd}
 	app.AddCommand(renameCmd.Command())
 
+	// restart sub-command
+	restartCmd := cmdRestart{global: &globalCmd}
+	app.AddCommand(restartCmd.Command())
+
 	// restore sub-command
 	restoreCmd := cmdRestore{global: &globalCmd}
 	app.AddCommand(restoreCmd.Command())
@@ -129,6 +137,14 @@ For help with any of those, simply call them with --help.`))
 	snapshotCmd := cmdSnapshot{global: &globalCmd}
 	app.AddCommand(snapshotCmd.Command())
 
+	// start sub-command
+	startCmd := cmdStart{global: &globalCmd}
+	app.AddCommand(startCmd.Command())
+
+	// stop sub-command
+	stopCmd := cmdStop{global: &globalCmd}
+	app.AddCommand(stopCmd.Command())
+
 	// Deal with --all flag
 	err := app.ParseFlags(os.Args[1:])
 	if err == nil {
@@ -306,36 +322,9 @@ var commands = map[string]command{
 	"manpage":   &manpageCmd{},
 	"network":   &networkCmd{},
 	"operation": &operationCmd{},
-	"pause": &actionCmd{
-		action:      shared.Freeze,
-		description: i18n.G("Pause containers."),
-		name:        "pause",
-	},
-	"profile": &profileCmd{},
-	"remote":  &remoteCmd{},
-	"restart": &actionCmd{
-		action:      shared.Restart,
-		description: i18n.G("Restart containers."),
-		hasTimeout:  true,
-		visible:     true,
-		name:        "restart",
-		timeout:     -1,
-	},
-	"start": &actionCmd{
-		action:      shared.Start,
-		description: i18n.G("Start containers."),
-		visible:     true,
-		name:        "start",
-	},
-	"stop": &actionCmd{
-		action:      shared.Stop,
-		description: i18n.G("Stop containers."),
-		hasTimeout:  true,
-		visible:     true,
-		name:        "stop",
-		timeout:     -1,
-	},
-	"storage": &storageCmd{},
+	"profile":   &profileCmd{},
+	"remote":    &remoteCmd{},
+	"storage":   &storageCmd{},
 }
 
 // defaultAliases contains LXC's built-in command line aliases.  The built-in

From 29220241f0dc867ade47032f9457fa7a37c88818 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Sat, 24 Mar 2018 13:29:46 -0400
Subject: [PATCH 22/39] lxc/operation: Port to cobra
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      |  25 ++++---
 lxc/operation.go | 210 ++++++++++++++++++++++++++++++++++---------------------
 2 files changed, 145 insertions(+), 90 deletions(-)

diff --git a/lxc/main.go b/lxc/main.go
index a38b90619..861707f65 100644
--- a/lxc/main.go
+++ b/lxc/main.go
@@ -109,6 +109,10 @@ For help with any of those, simply call them with --help.`))
 	moveCmd := cmdMove{global: &globalCmd}
 	app.AddCommand(moveCmd.Command())
 
+	// operation sub-command
+	operationCmd := cmdOperation{global: &globalCmd}
+	app.AddCommand(operationCmd.Command())
+
 	// pause sub-command
 	pauseCmd := cmdPause{global: &globalCmd}
 	app.AddCommand(pauseCmd.Command())
@@ -314,17 +318,16 @@ type command interface {
 }
 
 var commands = map[string]command{
-	"alias":     &aliasCmd{},
-	"cluster":   &clusterCmd{},
-	"config":    &configCmd{},
-	"file":      &fileCmd{},
-	"image":     &imageCmd{},
-	"manpage":   &manpageCmd{},
-	"network":   &networkCmd{},
-	"operation": &operationCmd{},
-	"profile":   &profileCmd{},
-	"remote":    &remoteCmd{},
-	"storage":   &storageCmd{},
+	"alias":   &aliasCmd{},
+	"cluster": &clusterCmd{},
+	"config":  &configCmd{},
+	"file":    &fileCmd{},
+	"image":   &imageCmd{},
+	"manpage": &manpageCmd{},
+	"network": &networkCmd{},
+	"profile": &profileCmd{},
+	"remote":  &remoteCmd{},
+	"storage": &storageCmd{},
 }
 
 // defaultAliases contains LXC's built-in command line aliases.  The built-in
diff --git a/lxc/operation.go b/lxc/operation.go
index 8fbc1421a..a38935615 100644
--- a/lxc/operation.go
+++ b/lxc/operation.go
@@ -7,133 +7,132 @@ import (
 	"strings"
 
 	"github.com/olekukonko/tablewriter"
+	"github.com/spf13/cobra"
 	"gopkg.in/yaml.v2"
 
-	"github.com/lxc/lxd/client"
-	"github.com/lxc/lxd/lxc/config"
+	cli "github.com/lxc/lxd/shared/cmd"
 	"github.com/lxc/lxd/shared/i18n"
 )
 
-type operationCmd struct {
+type cmdOperation struct {
+	global *cmdGlobal
 }
 
-func (c *operationCmd) showByDefault() bool {
-	return true
-}
-
-func (c *operationCmd) usage() string {
-	return i18n.G(
-		`Usage: lxc operation <subcommand> [options]
+func (c *cmdOperation) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("operation")
+	cmd.Short = i18n.G("List, show and delete background operations")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`List, show and delete background operations`))
 
-List, show and delete background operations.
+	// Delete
+	operationDeleteCmd := cmdOperationDelete{global: c.global, operation: c}
+	cmd.AddCommand(operationDeleteCmd.Command())
 
-lxc operation list [<remote>:]
-    List background operations.
+	// List
+	operationListCmd := cmdOperationList{global: c.global, operation: c}
+	cmd.AddCommand(operationListCmd.Command())
 
-lxc operation show [<remote>:]<operation>
-    Show details on a background operation.
+	// Show
+	operationShowCmd := cmdOperationShow{global: c.global, operation: c}
+	cmd.AddCommand(operationShowCmd.Command())
 
-lxc operation delete [<remote>:]<operation>
-    Delete a background operation (will attempt to cancel).
+	return cmd
+}
 
-*Examples*
-lxc operation show 344a79e4-d88a-45bf-9c39-c72c26f6ab8a
-    Show details on that operation UUID`)
+// Delete
+type cmdOperationDelete struct {
+	global    *cmdGlobal
+	operation *cmdOperation
 }
 
-func (c *operationCmd) flags() {}
+func (c *cmdOperationDelete) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("delete [<remote>:]<operation>")
+	cmd.Aliases = []string{"cancel", "rm"}
+	cmd.Short = i18n.G("Delete a background operation (will attempt to cancel)")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Delete a background operation (will attempt to cancel)`))
 
-func (c *operationCmd) run(conf *config.Config, args []string) error {
-	if len(args) < 1 {
-		return errUsage
-	}
+	cmd.RunE = c.Run
 
-	if args[0] == "list" {
-		return c.doOperationList(conf, args)
-	}
-
-	if len(args) < 2 {
-		return errArgs
-	}
+	return cmd
+}
 
-	remote, operation, err := conf.ParseRemote(args[1])
-	if err != nil {
+func (c *cmdOperationDelete) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, 1)
+	if exit {
 		return err
 	}
 
-	client, err := conf.GetContainerServer(remote)
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
 	if err != nil {
 		return err
 	}
 
-	switch args[0] {
-	case "delete":
-		return c.doOperationDelete(client, operation)
-	case "show":
-		return c.doOperationShow(client, operation)
-	default:
-		return errArgs
-	}
-}
+	resource := resources[0]
 
-func (c *operationCmd) doOperationDelete(client lxd.ContainerServer, name string) error {
-	err := client.DeleteOperation(name)
+	// Delete the operation
+	err = resource.server.DeleteOperation(resource.name)
 	if err != nil {
 		return err
 	}
 
-	fmt.Printf(i18n.G("Operation %s deleted")+"\n", name)
+	fmt.Printf(i18n.G("Operation %s deleted")+"\n", resource.name)
 	return nil
 }
 
-func (c *operationCmd) doOperationShow(client lxd.ContainerServer, name string) error {
-	if name == "" {
-		return errArgs
-	}
-
-	operation, _, err := client.GetOperation(name)
-	if err != nil {
-		return err
-	}
+// List
+type cmdOperationList struct {
+	global    *cmdGlobal
+	operation *cmdOperation
+}
 
-	data, err := yaml.Marshal(&operation)
-	if err != nil {
-		return err
-	}
+func (c *cmdOperationList) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("list [<remote>:]")
+	cmd.Aliases = []string{"ls"}
+	cmd.Short = i18n.G("List background operations")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`List background operations`))
 
-	fmt.Printf("%s", data)
+	cmd.RunE = c.Run
 
-	return nil
+	return cmd
 }
 
-func (c *operationCmd) doOperationList(conf *config.Config, args []string) error {
-	var remote string
-	var err error
-
-	if len(args) > 1 {
-		var name string
-		remote, name, err = conf.ParseRemote(args[1])
-		if err != nil {
-			return err
-		}
+func (c *cmdOperationList) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 0, 1)
+	if exit {
+		return err
+	}
 
-		if name != "" {
-			return fmt.Errorf(i18n.G("Filtering isn't supported yet"))
-		}
-	} else {
-		remote = conf.DefaultRemote
+	// Parse remote
+	remote := ""
+	if len(args) == 1 {
+		remote = args[0]
 	}
 
-	client, err := conf.GetContainerServer(remote)
+	resources, err := c.global.ParseServers(remote)
 	if err != nil {
 		return err
 	}
 
-	operations, err := client.GetOperations()
+	resource := resources[0]
+	if resource.name != "" {
+		return fmt.Errorf(i18n.G("Filtering isn't supported yet"))
+	}
+
+	// Get operations
+	operations, err := resource.server.GetOperations()
 	if err != nil {
 		return err
 	}
 
+	// Render the table
 	data := [][]string{}
 	for _, op := range operations {
 		cancelable := i18n.G("NO")
@@ -161,3 +160,56 @@ func (c *operationCmd) doOperationList(conf *config.Config, args []string) error
 
 	return nil
 }
+
+// Show
+type cmdOperationShow struct {
+	global    *cmdGlobal
+	operation *cmdOperation
+}
+
+func (c *cmdOperationShow) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("show [<remote>:]<operation>")
+	cmd.Short = i18n.G("Show details on a background operation")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Show details on a background operation`))
+	cmd.Example = cli.FormatSection("", i18n.G(
+		`lxc operation show 344a79e4-d88a-45bf-9c39-c72c26f6ab8a
+    Show details on that operation UUID`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdOperationShow) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, 1)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+
+	// Get the operation
+	op, _, err := resource.server.GetOperation(resource.name)
+	if err != nil {
+		return err
+	}
+
+	// Render as YAML
+	data, err := yaml.Marshal(&op)
+	if err != nil {
+		return err
+	}
+
+	fmt.Printf("%s", data)
+
+	return nil
+}

From 86908d9a1a9734c4a33cf5e889788f960736dede Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Sat, 24 Mar 2018 14:56:53 -0400
Subject: [PATCH 23/39] lxc/alias: Port to cobra
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/alias.go | 279 ++++++++++++++++++++++++++++++++++++++++++-----------------
 lxc/main.go  |   5 +-
 2 files changed, 203 insertions(+), 81 deletions(-)

diff --git a/lxc/alias.go b/lxc/alias.go
index 676042a84..f268924cf 100644
--- a/lxc/alias.go
+++ b/lxc/alias.go
@@ -6,105 +6,224 @@ import (
 	"sort"
 
 	"github.com/olekukonko/tablewriter"
+	"github.com/spf13/cobra"
 
-	"github.com/lxc/lxd/lxc/config"
+	cli "github.com/lxc/lxd/shared/cmd"
 	"github.com/lxc/lxd/shared/i18n"
 )
 
-type aliasCmd struct {
+type cmdAlias struct {
+	global *cmdGlobal
 }
 
-func (c *aliasCmd) showByDefault() bool {
-	return true
+func (c *cmdAlias) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("alias")
+	cmd.Short = i18n.G("Manage command aliases")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Manage command aliases`))
+
+	// Add
+	aliasAddCmd := cmdAliasAdd{global: c.global, alias: c}
+	cmd.AddCommand(aliasAddCmd.Command())
+
+	// List
+	aliasListCmd := cmdAliasList{global: c.global, alias: c}
+	cmd.AddCommand(aliasListCmd.Command())
+
+	// Rename
+	aliasRenameCmd := cmdAliasRename{global: c.global, alias: c}
+	cmd.AddCommand(aliasRenameCmd.Command())
+
+	// Remove
+	aliasRemoveCmd := cmdAliasRemove{global: c.global, alias: c}
+	cmd.AddCommand(aliasRemoveCmd.Command())
+
+	return cmd
+}
+
+// Add
+type cmdAliasAdd struct {
+	global *cmdGlobal
+	alias  *cmdAlias
+}
+
+func (c *cmdAliasAdd) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("add <alias> <target>")
+	cmd.Short = i18n.G("Add new aliases")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Add new aliases`))
+	cmd.Example = cli.FormatSection("", i18n.G(
+		`lxc alias add list list -c ns46S
+    Overwrite the "list" command to pass -c ns46S.`))
+
+	cmd.RunE = c.Run
+
+	return cmd
 }
 
-func (c *aliasCmd) usage() string {
-	return i18n.G(
-		`Usage: lxc alias <subcommand> [options]
+func (c *cmdAliasAdd) Run(cmd *cobra.Command, args []string) error {
+	conf := c.global.conf
 
-Manage command aliases.
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 2, 2)
+	if exit {
+		return err
+	}
 
-lxc alias add <alias> <target>
-    Add a new alias <alias> pointing to <target>.
+	// Look for an existing alias
+	_, ok := conf.Aliases[args[0]]
+	if ok {
+		return fmt.Errorf(i18n.G("Alias %s already exists"), args[0])
+	}
 
-lxc alias remove <alias>
-    Remove the alias <alias>.
+	// Add the new alias
+	conf.Aliases[args[0]] = args[1]
 
-lxc alias list
-    List all the aliases.
+	// Save the config
+	return conf.SaveConfig(c.global.confPath)
+}
 
-lxc alias rename <old alias> <new alias>
-    Rename remote <old alias> to <new alias>.`)
+// List
+type cmdAliasList struct {
+	global *cmdGlobal
+	alias  *cmdAlias
 }
 
-func (c *aliasCmd) flags() {
+func (c *cmdAliasList) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("list")
+	cmd.Aliases = []string{"ls"}
+	cmd.Short = i18n.G("List aliases")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`List aliases`))
+
+	cmd.RunE = c.Run
+
+	return cmd
 }
 
-func (c *aliasCmd) run(conf *config.Config, args []string) error {
-	if len(args) < 1 {
-		return errUsage
+func (c *cmdAliasList) Run(cmd *cobra.Command, args []string) error {
+	conf := c.global.conf
+
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 0, 0)
+	if exit {
+		return err
 	}
 
-	switch args[0] {
-	case "add":
-		if len(args) != 3 {
-			return errArgs
-		}
-
-		_, ok := conf.Aliases[args[1]]
-		if ok {
-			return fmt.Errorf(i18n.G("alias %s already exists"), args[1])
-		}
-
-		conf.Aliases[args[1]] = args[2]
-
-	case "remove":
-		if len(args) != 2 {
-			return errArgs
-		}
-
-		_, ok := conf.Aliases[args[1]]
-		if !ok {
-			return fmt.Errorf(i18n.G("alias %s doesn't exist"), args[1])
-		}
-
-		delete(conf.Aliases, args[1])
-
-	case "list":
-		data := [][]string{}
-		for k, v := range conf.Aliases {
-			data = append(data, []string{k, v})
-		}
-
-		table := tablewriter.NewWriter(os.Stdout)
-		table.SetAutoWrapText(false)
-		table.SetAlignment(tablewriter.ALIGN_LEFT)
-		table.SetRowLine(true)
-		table.SetHeader([]string{
-			i18n.G("ALIAS"),
-			i18n.G("TARGET")})
-		sort.Sort(byName(data))
-		table.AppendBulk(data)
-		table.Render()
-
-	case "rename":
-		if len(args) != 3 {
-			return errArgs
-		}
-
-		target, ok := conf.Aliases[args[1]]
-		if !ok {
-			return fmt.Errorf(i18n.G("alias %s doesn't exist"), args[1])
-		}
-
-		_, ok = conf.Aliases[args[2]]
-		if ok {
-			return fmt.Errorf(i18n.G("alias %s already exists"), args[2])
-		}
-
-		conf.Aliases[args[2]] = target
-		delete(conf.Aliases, args[1])
+	// List the aliases
+	data := [][]string{}
+	for k, v := range conf.Aliases {
+		data = append(data, []string{k, v})
 	}
 
-	return conf.SaveConfig(configPath)
+	table := tablewriter.NewWriter(os.Stdout)
+	table.SetAutoWrapText(false)
+	table.SetAlignment(tablewriter.ALIGN_LEFT)
+	table.SetRowLine(true)
+	table.SetHeader([]string{
+		i18n.G("ALIAS"),
+		i18n.G("TARGET")})
+	sort.Sort(byName(data))
+	table.AppendBulk(data)
+	table.Render()
+
+	return nil
+}
+
+// Rename
+type cmdAliasRename struct {
+	global *cmdGlobal
+	alias  *cmdAlias
+}
+
+func (c *cmdAliasRename) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("rename <old alias> <new alias>")
+	cmd.Aliases = []string{"mv"}
+	cmd.Short = i18n.G("Rename aliases")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Rename aliases`))
+	cmd.Example = cli.FormatSection("", i18n.G(
+		`lxc alias rename list my-list
+    Rename existing alias "list" to "my-list".`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdAliasRename) Run(cmd *cobra.Command, args []string) error {
+	conf := c.global.conf
+
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 2, 2)
+	if exit {
+		return err
+	}
+
+	// Check for the existing alias
+	target, ok := conf.Aliases[args[0]]
+	if !ok {
+		return fmt.Errorf(i18n.G("Alias %s doesn't exist"), args[0])
+	}
+
+	// Check for the new alias
+	_, ok = conf.Aliases[args[1]]
+	if ok {
+		return fmt.Errorf(i18n.G("Alias %s already exists"), args[1])
+	}
+
+	// Rename the alias
+	conf.Aliases[args[1]] = target
+	delete(conf.Aliases, args[0])
+
+	// Save the config
+	return conf.SaveConfig(c.global.confPath)
+}
+
+// Remove
+type cmdAliasRemove struct {
+	global *cmdGlobal
+	alias  *cmdAlias
+}
+
+func (c *cmdAliasRemove) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("remove <alias>")
+	cmd.Aliases = []string{"rm"}
+	cmd.Short = i18n.G("Remove aliases")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Remove aliases`))
+	cmd.Example = cli.FormatSection("", i18n.G(
+		`lxc alias remove my-list
+    Remove the "my-list" alias.`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdAliasRemove) Run(cmd *cobra.Command, args []string) error {
+	conf := c.global.conf
+
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, 1)
+	if exit {
+		return err
+	}
+
+	// Look for the alias
+	_, ok := conf.Aliases[args[0]]
+	if !ok {
+		return fmt.Errorf(i18n.G("Alias %s doesn't exist"), args[0])
+	}
+
+	// Delete the alias
+	delete(conf.Aliases, args[0])
+
+	// Save the config
+	return conf.SaveConfig(c.global.confPath)
 }
diff --git a/lxc/main.go b/lxc/main.go
index 861707f65..93dae06af 100644
--- a/lxc/main.go
+++ b/lxc/main.go
@@ -69,6 +69,10 @@ For help with any of those, simply call them with --help.`))
 	app.SetVersionTemplate("{{.Version}}\n")
 	app.Version = version.Version
 
+	// alias sub-command
+	aliasCmd := cmdAlias{global: &globalCmd}
+	app.AddCommand(aliasCmd.Command())
+
 	// console sub-command
 	consoleCmd := cmdConsole{global: &globalCmd}
 	app.AddCommand(consoleCmd.Command())
@@ -318,7 +322,6 @@ type command interface {
 }
 
 var commands = map[string]command{
-	"alias":   &aliasCmd{},
 	"cluster": &clusterCmd{},
 	"config":  &configCmd{},
 	"file":    &fileCmd{},

From 0b2395f5d2489b52cd3df79debf60af25c7abe04 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Sat, 24 Mar 2018 15:38:24 -0400
Subject: [PATCH 24/39] lxc/cluster: Port to cobra
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>
---
 doc/clustering.md         |   4 +-
 lxc/cluster.go            | 274 +++++++++++++++++++++++++++++-----------------
 lxc/main.go               |   5 +-
 test/suites/clustering.sh |  12 +-
 4 files changed, 187 insertions(+), 108 deletions(-)

diff --git a/doc/clustering.md b/doc/clustering.md
index bfe5c0c17..e9c4f210d 100644
--- a/doc/clustering.md
+++ b/doc/clustering.md
@@ -144,7 +144,7 @@ an individual node is available with `lxc cluster show <node name>`.
 
 ### Deleting nodes
 
-To cleanly delete a node from the cluster use `lxc cluster delete <node name>`.
+To cleanly delete a node from the cluster use `lxc cluster remove <node name>`.
 
 ### Offline nodes and fault tolerance
 
@@ -161,7 +161,7 @@ As soon as the offline node comes back online, operations will be
 available again.
 
 If you can't or don't want to bring the node back online, you can
-delete it from the cluster using `lxc cluster delete --force <node name>`.
+delete it from the cluster using `lxc cluster remove --force <node name>`.
 
 ### Upgrading nodes
 
diff --git a/lxc/cluster.go b/lxc/cluster.go
index bbb3417e2..fb86c2095 100644
--- a/lxc/cluster.go
+++ b/lxc/cluster.go
@@ -6,189 +6,265 @@ import (
 	"sort"
 	"strings"
 
+	"github.com/spf13/cobra"
 	yaml "gopkg.in/yaml.v2"
 
-	"github.com/lxc/lxd/lxc/config"
 	"github.com/lxc/lxd/shared/api"
-	"github.com/lxc/lxd/shared/gnuflag"
+	cli "github.com/lxc/lxd/shared/cmd"
 	"github.com/lxc/lxd/shared/i18n"
 	"github.com/olekukonko/tablewriter"
 )
 
-type clusterCmd struct {
-	force bool
+type cmdCluster struct {
+	global *cmdGlobal
 }
 
-func (c *clusterCmd) usage() string {
-	return i18n.G(
-		`Usage: lxc cluster <subcommand> [options]
+func (c *cmdCluster) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("cluster")
+	cmd.Short = i18n.G("Manage cluster members")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Manage cluster members`))
 
-Manage cluster nodes.
+	// List
+	clusterListCmd := cmdClusterList{global: c.global, cluster: c}
+	cmd.AddCommand(clusterListCmd.Command())
 
-lxc cluster list [<remote>:]
-    List all nodes in the cluster.
+	// Rename
+	clusterRenameCmd := cmdClusterRename{global: c.global, cluster: c}
+	cmd.AddCommand(clusterRenameCmd.Command())
 
-lxc cluster show [<remote>:]<node>
-    Show details of a node.
+	// Remove
+	clusterRemoveCmd := cmdClusterRemove{global: c.global, cluster: c}
+	cmd.AddCommand(clusterRemoveCmd.Command())
 
-lxc cluster rename [<remote>:]<node> <new-name>
-    Rename a cluster node.
+	// Show
+	clusterShowCmd := cmdClusterShow{global: c.global, cluster: c}
+	cmd.AddCommand(clusterShowCmd.Command())
 
-lxc cluster delete [<remote>:]<node> [--force]
-    Delete a node from the cluster.`)
+	return cmd
 }
 
-func (c *clusterCmd) flags() {
-	gnuflag.BoolVar(&c.force, "force", false, i18n.G("Force removing a node, even if degraded"))
+// List
+type cmdClusterList struct {
+	global  *cmdGlobal
+	cluster *cmdCluster
 }
 
-func (c *clusterCmd) showByDefault() bool {
-	return true
-}
+func (c *cmdClusterList) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("list [<remote>:]")
+	cmd.Aliases = []string{"ls"}
+	cmd.Short = i18n.G("List all the cluster members")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`List all the cluster members`))
 
-func (c *clusterCmd) run(conf *config.Config, args []string) error {
-	if len(args) < 1 {
-		return errUsage
-	}
+	cmd.RunE = c.Run
 
-	switch args[0] {
-	case "list":
-		return c.doClusterList(conf, args)
-	case "show":
-		return c.doClusterNodeShow(conf, args)
-	case "rename":
-		return c.doClusterNodeRename(conf, args)
-	case "delete":
-		return c.doClusterNodeDelete(conf, args)
-	default:
-		return errArgs
-	}
+	return cmd
 }
 
-func (c *clusterCmd) doClusterNodeShow(conf *config.Config, args []string) error {
-	if len(args) < 2 {
-		return errArgs
+func (c *cmdClusterList) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 0, 1)
+	if exit {
+		return err
 	}
 
-	remote, name, err := conf.ParseRemote(args[1])
-	if err != nil {
-		return err
+	// Parse remote
+	remote := ""
+	if len(args) == 1 {
+		remote = args[0]
 	}
 
-	client, err := conf.GetContainerServer(remote)
+	resources, err := c.global.ParseServers(remote)
 	if err != nil {
 		return err
 	}
 
-	node, _, err := client.GetClusterMember(name)
+	resource := resources[0]
+
+	// Check if clustered
+	cluster, _, err := resource.server.GetCluster()
 	if err != nil {
 		return err
 	}
 
-	data, err := yaml.Marshal(&node)
+	if !cluster.Enabled {
+		return fmt.Errorf(i18n.G("LXD server isn't part of a cluster"))
+	}
+
+	// Get the cluster members
+	members, err := resource.server.GetClusterMembers()
 	if err != nil {
 		return err
 	}
 
-	fmt.Printf("%s", data)
+	// Render the table
+	data := [][]string{}
+	for _, member := range members {
+		database := "NO"
+		if member.Database {
+			database = "YES"
+		}
+		line := []string{member.ServerName, member.URL, database, strings.ToUpper(member.Status), member.Message}
+		data = append(data, line)
+	}
+
+	table := tablewriter.NewWriter(os.Stdout)
+	table.SetAutoWrapText(false)
+	table.SetAlignment(tablewriter.ALIGN_LEFT)
+	table.SetRowLine(true)
+	table.SetHeader([]string{
+		i18n.G("NAME"),
+		i18n.G("URL"),
+		i18n.G("DATABASE"),
+		i18n.G("STATE"),
+		i18n.G("MESSAGE"),
+	})
+	sort.Sort(byName(data))
+	table.AppendBulk(data)
+	table.Render()
 
 	return nil
 }
 
-func (c *clusterCmd) doClusterNodeRename(conf *config.Config, args []string) error {
-	if len(args) < 3 {
-		return errArgs
+// Show
+type cmdClusterShow struct {
+	global  *cmdGlobal
+	cluster *cmdCluster
+}
+
+func (c *cmdClusterShow) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("show [<remote>:]<member>")
+	cmd.Short = i18n.G("Show details of a cluster member")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Show details of a cluster member`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdClusterShow) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, 1)
+	if exit {
+		return err
 	}
-	newName := args[2]
 
-	remote, name, err := conf.ParseRemote(args[1])
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
 	if err != nil {
 		return err
 	}
 
-	client, err := conf.GetContainerServer(remote)
+	resource := resources[0]
+
+	// Get the member information
+	member, _, err := resource.server.GetClusterMember(resource.name)
 	if err != nil {
 		return err
 	}
 
-	err = client.RenameClusterMember(name, api.ClusterMemberPost{ServerName: newName})
+	// Render as YAML
+	data, err := yaml.Marshal(&member)
 	if err != nil {
 		return err
 	}
 
-	fmt.Printf(i18n.G("Node %s renamed to %s")+"\n", name, newName)
+	fmt.Printf("%s", data)
 	return nil
 }
 
-func (c *clusterCmd) doClusterNodeDelete(conf *config.Config, args []string) error {
-	if len(args) < 2 {
-		return errArgs
-	}
+// Rename
+type cmdClusterRename struct {
+	global  *cmdGlobal
+	cluster *cmdCluster
+}
 
-	remote, name, err := conf.ParseRemote(args[1])
-	if err != nil {
+func (c *cmdClusterRename) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("rename [<remote>:]<member> <new-name>")
+	cmd.Aliases = []string{"mv"}
+	cmd.Short = i18n.G("Rename a cluster member")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Rename a cluster member`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdClusterRename) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 2, 2)
+	if exit {
 		return err
 	}
 
-	client, err := conf.GetContainerServer(remote)
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
 	if err != nil {
 		return err
 	}
 
-	err = client.DeleteClusterMember(name, c.force)
+	resource := resources[0]
+
+	// Perform the rename
+	err = resource.server.RenameClusterMember(resource.name, api.ClusterMemberPost{ServerName: args[1]})
 	if err != nil {
 		return err
 	}
 
-	fmt.Printf(i18n.G("Node %s removed")+"\n", name)
+	fmt.Printf(i18n.G("Node %s renamed to %s")+"\n", resource.name, args[1])
 	return nil
 }
 
-func (c *clusterCmd) doClusterList(conf *config.Config, args []string) error {
-	remote := conf.DefaultRemote
+// Remove
+type cmdClusterRemove struct {
+	global  *cmdGlobal
+	cluster *cmdCluster
 
-	if len(args) > 1 {
-		var err error
-		remote, _, err = conf.ParseRemote(args[1])
-		if err != nil {
-			return err
-		}
-	}
+	flagForce bool
+}
 
-	client, err := conf.GetContainerServer(remote)
-	if err != nil {
+func (c *cmdClusterRemove) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("remove [<remote>:]<member>")
+	cmd.Aliases = []string{"rm"}
+	cmd.Short = i18n.G("Remove a member from the cluster")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Remove a member from the cluster`))
+
+	cmd.RunE = c.Run
+	cmd.Flags().BoolVarP(&c.flagForce, "force", "f", false, i18n.G("Force removing a member, even if degraded"))
+
+	return cmd
+}
+
+func (c *cmdClusterRemove) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, 1)
+	if exit {
 		return err
 	}
 
-	nodes, err := client.GetClusterMembers()
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
 	if err != nil {
 		return err
 	}
 
-	data := [][]string{}
-	for _, node := range nodes {
-		database := "NO"
-		if node.Database {
-			database = "YES"
-		}
-		line := []string{node.ServerName, node.URL, database, strings.ToUpper(node.Status), node.Message}
-		data = append(data, line)
-	}
+	resource := resources[0]
 
-	table := tablewriter.NewWriter(os.Stdout)
-	table.SetAutoWrapText(false)
-	table.SetAlignment(tablewriter.ALIGN_LEFT)
-	table.SetRowLine(true)
-	table.SetHeader([]string{
-		i18n.G("NAME"),
-		i18n.G("URL"),
-		i18n.G("DATABASE"),
-		i18n.G("STATE"),
-		i18n.G("MESSAGE"),
-	})
-	sort.Sort(byName(data))
-	table.AppendBulk(data)
-	table.Render()
+	// Delete the cluster member
+	err = resource.server.DeleteClusterMember(resource.name, c.flagForce)
+	if err != nil {
+		return err
+	}
 
+	fmt.Printf(i18n.G("Node %s removed")+"\n", resource.name)
 	return nil
 }
diff --git a/lxc/main.go b/lxc/main.go
index 93dae06af..740814ac8 100644
--- a/lxc/main.go
+++ b/lxc/main.go
@@ -73,6 +73,10 @@ For help with any of those, simply call them with --help.`))
 	aliasCmd := cmdAlias{global: &globalCmd}
 	app.AddCommand(aliasCmd.Command())
 
+	// cluster sub-command
+	clusterCmd := cmdCluster{global: &globalCmd}
+	app.AddCommand(clusterCmd.Command())
+
 	// console sub-command
 	consoleCmd := cmdConsole{global: &globalCmd}
 	app.AddCommand(consoleCmd.Command())
@@ -322,7 +326,6 @@ type command interface {
 }
 
 var commands = map[string]command{
-	"cluster": &clusterCmd{},
 	"config":  &configCmd{},
 	"file":    &fileCmd{},
 	"image":   &imageCmd{},
diff --git a/test/suites/clustering.sh b/test/suites/clustering.sh
index b4878da12..90d5d5e48 100644
--- a/test/suites/clustering.sh
+++ b/test/suites/clustering.sh
@@ -86,7 +86,7 @@ test_clustering_membership() {
   ! LXD_DIR="${LXD_TWO_DIR}" lxc network delete "${bridge}"
 
   # Force the removal of the degraded node.
-  LXD_DIR="${LXD_THREE_DIR}" lxc cluster delete node5 --force
+  LXD_DIR="${LXD_THREE_DIR}" lxc cluster remove node5 --force
 
   # Now the preseeded network can be deleted, and all nodes are
   # notified.
@@ -98,12 +98,12 @@ test_clustering_membership() {
   # Trying to delete a container which is the only one with a copy of
   # an image results in an error
   LXD_DIR="${LXD_FOUR_DIR}" ensure_import_testimage
-  ! LXD_DIR="${LXD_FOUR_DIR}" lxc cluster delete node5
+  ! LXD_DIR="${LXD_FOUR_DIR}" lxc cluster remove node5
   LXD_DIR="${LXD_TWO_DIR}" lxc image delete testimage
 
   # Remove a node gracefully.
-  LXD_DIR="${LXD_FOUR_DIR}" lxc cluster delete node5
-  LXD_DIR="${LXD_FOUR_DIR}" lxc cluster list | grep -q "https://0.0.0.0"
+  LXD_DIR="${LXD_FOUR_DIR}" lxc cluster remove node5
+  ! LXD_DIR="${LXD_FOUR_DIR}" lxc cluster list
 
   LXD_DIR="${LXD_FOUR_DIR}" lxd shutdown
   LXD_DIR="${LXD_THREE_DIR}" lxd shutdown
@@ -166,7 +166,7 @@ test_clustering_containers() {
   LXD_DIR="${LXD_ONE_DIR}" lxc list | grep foo | grep -q RUNNING
 
   # Trying to delete a node which has container results in an error
-  ! LXD_DIR="${LXD_ONE_DIR}" lxc cluster delete node2
+  ! LXD_DIR="${LXD_ONE_DIR}" lxc cluster remove node2
 
   # Exec a command in the container via node1
   LXD_DIR="${LXD_ONE_DIR}" lxc exec foo ls / | grep -q proc
@@ -421,7 +421,7 @@ test_clustering_storage() {
     LXD_DIR="${LXD_ONE_DIR}" lxc stop bar --force
 
     LXD_DIR="${LXD_ONE_DIR}" lxc config set cluster.offline_threshold 20
-    LXD_DIR="${LXD_ONE_DIR}" lxc cluster delete node3 --force
+    LXD_DIR="${LXD_ONE_DIR}" lxc cluster remove node3 --force
 
     LXD_DIR="${LXD_ONE_DIR}" lxc delete bar
     LXD_DIR="${LXD_ONE_DIR}" lxc image delete testimage

From df106b10219f7ff56aa7bb50d8fb6c69ddf78498 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Mon, 26 Mar 2018 02:30:47 -0400
Subject: [PATCH 25/39] lxc/file: Port to cobra
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 | 757 +++++++++++++++++++++++++++++++++---------------------------
 lxc/main.go |   5 +-
 2 files changed, 417 insertions(+), 345 deletions(-)

diff --git a/lxc/file.go b/lxc/file.go
index d3e127fe4..3f1f0cd3f 100644
--- a/lxc/file.go
+++ b/lxc/file.go
@@ -12,224 +12,295 @@ import (
 	"strings"
 	"syscall"
 
+	"github.com/spf13/cobra"
+
 	"github.com/lxc/lxd/client"
-	"github.com/lxc/lxd/lxc/config"
 	"github.com/lxc/lxd/shared"
-	"github.com/lxc/lxd/shared/gnuflag"
+	cli "github.com/lxc/lxd/shared/cmd"
 	"github.com/lxc/lxd/shared/i18n"
 	"github.com/lxc/lxd/shared/logger"
 	"github.com/lxc/lxd/shared/termios"
 )
 
-type fileCmd struct {
-	uid  int
-	gid  int
-	mode string
+type cmdFile struct {
+	global *cmdGlobal
 
-	recursive bool
+	flagUID  int
+	flagGID  int
+	flagMode string
 
-	mkdirs bool
+	flagMkdir     bool
+	flagRecursive bool
 }
 
-func (c *fileCmd) showByDefault() bool {
-	return true
-}
+func (c *cmdFile) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("file")
+	cmd.Short = i18n.G("Manage files in containers")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Manage files in containers`))
 
-func (c *fileCmd) usage() string {
-	return i18n.G(
-		`Usage: lxc file <subcommand> [options]
+	// Delete
+	fileDeleteCmd := cmdFileDelete{global: c.global, file: c}
+	cmd.AddCommand(fileDeleteCmd.Command())
 
-Manage files in containers.
+	// Pull
+	filePullCmd := cmdFilePull{global: c.global, file: c}
+	cmd.AddCommand(filePullCmd.Command())
 
-lxc file pull [-r|--recursive] [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...] <target path>
-    Pull files from containers.
+	// Push
+	filePushCmd := cmdFilePush{global: c.global, file: c}
+	cmd.AddCommand(filePushCmd.Command())
 
-lxc file push [-r|--recursive] [-p|--create-dirs] [--uid=UID] [--gid=GID] [--mode=MODE] <source path> [<source path>...] [<remote>:]<container>/<path>
-    Push files into containers.
+	// Edit
+	fileEditCmd := cmdFileEdit{global: c.global, file: c, filePull: &filePullCmd, filePush: &filePushCmd}
+	cmd.AddCommand(fileEditCmd.Command())
 
-lxc file delete [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...]
-    Delete files in containers.
+	return cmd
+}
 
-lxc file edit [<remote>:]<container>/<path>
-    Edit files in containers using the default text editor.
+// Delete
+type cmdFileDelete struct {
+	global *cmdGlobal
+	file   *cmdFile
+}
 
-*Examples*
-lxc file push /etc/hosts foo/etc/hosts
-   To push /etc/hosts into the container "foo".
+func (c *cmdFileDelete) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("delete [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...]")
+	cmd.Aliases = []string{"rm"}
+	cmd.Short = i18n.G("Delete files in containers")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Delete files in containers`))
 
-lxc file pull foo/etc/hosts .
-   To pull /etc/hosts from the container and write it to the current directory.`)
-}
+	cmd.RunE = c.Run
 
-func (c *fileCmd) flags() {
-	gnuflag.IntVar(&c.uid, "uid", -1, i18n.G("Set the file's uid on push"))
-	gnuflag.IntVar(&c.gid, "gid", -1, i18n.G("Set the file's gid on push"))
-	gnuflag.StringVar(&c.mode, "mode", "", i18n.G("Set the file's perms on push"))
-	gnuflag.BoolVar(&c.recursive, "recursive", false, i18n.G("Recursively push or pull files"))
-	gnuflag.BoolVar(&c.recursive, "r", false, i18n.G("Recursively push or pull files"))
-	gnuflag.BoolVar(&c.mkdirs, "create-dirs", false, i18n.G("Create any directories necessary"))
-	gnuflag.BoolVar(&c.mkdirs, "p", false, i18n.G("Create any directories necessary"))
+	return cmd
 }
 
-func (c *fileCmd) recursivePullFile(d lxd.ContainerServer, container string, p string, targetDir string) error {
-	buf, resp, err := d.GetContainerFile(container, p)
-	if err != nil {
+func (c *cmdFileDelete) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, -1)
+	if exit {
 		return err
 	}
 
-	target := filepath.Join(targetDir, filepath.Base(p))
-	logger.Infof("Pulling %s from %s (%s)", target, p, resp.Type)
-
-	if resp.Type == "directory" {
-		err := os.Mkdir(target, os.FileMode(resp.Mode))
-		if err != nil {
-			return err
-		}
-
-		for _, ent := range resp.Entries {
-			nextP := path.Join(p, ent)
-
-			err := c.recursivePullFile(d, container, nextP, target)
-			if err != nil {
-				return err
-			}
-		}
-	} else if resp.Type == "file" {
-		f, err := os.Create(target)
-		if err != nil {
-			return err
-		}
-		defer f.Close()
-
-		err = os.Chmod(target, os.FileMode(resp.Mode))
-		if err != nil {
-			return err
-		}
+	// Parse remote
+	resources, err := c.global.ParseServers(args...)
+	if err != nil {
+		return err
+	}
 
-		_, err = io.Copy(f, buf)
-		if err != nil {
-			return err
-		}
-	} else if resp.Type == "symlink" {
-		linkTarget, err := ioutil.ReadAll(buf)
-		if err != nil {
-			return err
+	for _, resource := range resources {
+		pathSpec := strings.SplitN(resource.name, "/", 2)
+		if len(pathSpec) != 2 {
+			return fmt.Errorf(i18n.G("Invalid path %s"), resource.name)
 		}
 
-		err = os.Symlink(strings.TrimSpace(string(linkTarget)), target)
+		// Delete the file
+		err = resource.server.DeleteContainerFile(pathSpec[0], pathSpec[1])
 		if err != nil {
 			return err
 		}
-	} else {
-		return fmt.Errorf(i18n.G("Unknown file type '%s'"), resp.Type)
 	}
 
 	return nil
 }
 
-func (c *fileCmd) recursivePushFile(d lxd.ContainerServer, container string, source string, target string) error {
-	source = filepath.Clean(source)
-	sourceDir, _ := filepath.Split(source)
-	sourceLen := len(sourceDir)
+// Edit
+type cmdFileEdit struct {
+	global   *cmdGlobal
+	file     *cmdFile
+	filePull *cmdFilePull
+	filePush *cmdFilePush
+}
 
-	sendFile := func(p string, fInfo os.FileInfo, err error) error {
-		if err != nil {
-			return fmt.Errorf(i18n.G("Failed to walk path for %s: %s"), p, err)
-		}
+func (c *cmdFileEdit) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("edit [<remote>:]<container>/<path>")
+	cmd.Short = i18n.G("Edit files in containers")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Edit files in containers`))
 
-		// Detect unsupported files
-		if !fInfo.Mode().IsRegular() && !fInfo.Mode().IsDir() && fInfo.Mode()&os.ModeSymlink != os.ModeSymlink {
-			return fmt.Errorf(i18n.G("'%s' isn't a supported file type."), p)
-		}
+	cmd.RunE = c.Run
 
-		// Prepare for file transfer
-		targetPath := path.Join(target, filepath.ToSlash(p[sourceLen:]))
-		mode, uid, gid := shared.GetOwnerMode(fInfo)
-		args := lxd.ContainerFileArgs{
-			UID:  int64(uid),
-			GID:  int64(gid),
-			Mode: int(mode.Perm()),
-		}
+	return cmd
+}
 
-		if fInfo.IsDir() {
-			// Directory handling
-			args.Type = "directory"
-		} else if fInfo.Mode()&os.ModeSymlink == os.ModeSymlink {
-			// Symlink handling
-			symlinkTarget, err := os.Readlink(p)
-			if err != nil {
-				return err
-			}
+func (c *cmdFileEdit) Run(cmd *cobra.Command, args []string) error {
+	c.filePush.noModeChange = true
 
-			args.Type = "symlink"
-			args.Content = bytes.NewReader([]byte(symlinkTarget))
-		} else {
-			// File handling
-			f, err := os.Open(p)
-			if err != nil {
-				return err
-			}
-			defer f.Close()
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, 1)
+	if exit {
+		return err
+	}
 
-			args.Type = "file"
-			args.Content = f
-		}
+	// If stdin isn't a terminal, read text from it
+	if !termios.IsTerminal(int(syscall.Stdin)) {
+		return c.filePush.Run(cmd, append([]string{os.Stdin.Name()}, args[0]))
+	}
 
-		logger.Infof("Pushing %s to %s (%s)", p, targetPath, args.Type)
-		return d.CreateContainerFile(container, targetPath, args)
+	// Create temp file
+	f, err := ioutil.TempFile("", "lxd_file_edit_")
+	if err != nil {
+		return fmt.Errorf("Unable to create a temporary file: %v", err)
+	}
+	fname := f.Name()
+	f.Close()
+	os.Remove(fname)
+	defer os.Remove(shared.HostPath(fname))
+
+	// Extract current value
+	err = c.filePull.Run(cmd, append([]string{args[0]}, fname))
+	if err != nil {
+		return err
 	}
 
-	return filepath.Walk(source, sendFile)
+	// Spawn the editor
+	_, err = shared.TextEditor(shared.HostPath(fname), []byte{})
+	if err != nil {
+		return err
+	}
+
+	// Push the result
+	err = c.filePush.Run(cmd, append([]string{fname}, args[0]))
+	if err != nil {
+		return err
+	}
+
+	return nil
 }
 
-func (c *fileCmd) recursiveMkdir(d lxd.ContainerServer, container string, p string, mode *os.FileMode, uid int64, gid int64) error {
-	/* special case, every container has a /, we don't need to do anything */
-	if p == "/" {
-		return nil
+// Pull
+type cmdFilePull struct {
+	global *cmdGlobal
+	file   *cmdFile
+}
+
+func (c *cmdFilePull) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("pull [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...] <target path>")
+	cmd.Short = i18n.G("Pull files from containers")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Pull files from containers`))
+	cmd.Example = cli.FormatSection("", i18n.G(
+		`lxc file pull foo/etc/hosts .
+   To pull /etc/hosts from the container and write it to the current directory.`))
+
+	cmd.Flags().BoolVarP(&c.file.flagMkdir, "create-dirs", "p", false, i18n.G("Create any directories necessary"))
+	cmd.Flags().BoolVarP(&c.file.flagRecursive, "recursive", "r", false, i18n.G("Recursively transfer files"))
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdFilePull) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 2, -1)
+	if exit {
+		return err
 	}
 
-	// Remove trailing "/" e.g. /A/B/C/. Otherwise we will end up with an
-	// empty array entry "" which will confuse the Mkdir() loop below.
-	pclean := filepath.Clean(p)
-	parts := strings.Split(pclean, "/")
-	i := len(parts)
+	// Determine the target
+	target := shared.HostPath(filepath.Clean(args[len(args)-1]))
+	targetIsDir := false
+	sb, err := os.Stat(target)
+	if err != nil && !os.IsNotExist(err) {
+		return err
+	}
 
-	for ; i >= 1; i-- {
-		cur := filepath.Join(parts[:i]...)
-		_, resp, err := d.GetContainerFile(container, cur)
+	/*
+	 * If the path exists, just use it. If it doesn't exist, it might be a
+	 * directory in one of three cases:
+	 *   1. Someone explicitly put "/" at the end
+	 *   2. Someone provided more than one source. In this case the target
+	 *      should be a directory so we can save all the files into it.
+	 *   3. We are dealing with recursive copy
+	 */
+	if err == nil {
+		targetIsDir = sb.IsDir()
+		if !targetIsDir && len(args)-1 > 1 {
+			return fmt.Errorf(i18n.G("More than one file to download, but target is not a directory"))
+		}
+	} else if strings.HasSuffix(target, string(os.PathSeparator)) || len(args)-1 > 1 || c.file.flagRecursive {
+		err := os.MkdirAll(target, 0755)
 		if err != nil {
-			continue
+			return err
 		}
+		targetIsDir = true
+	}
 
-		if resp.Type != "directory" {
-			return fmt.Errorf(i18n.G("%s is not a directory"), cur)
+	// Parse remote
+	resources, err := c.global.ParseServers(args[:len(args)-1]...)
+	if err != nil {
+		return err
+	}
+
+	for _, resource := range resources {
+		pathSpec := strings.SplitN(resource.name, "/", 2)
+		if len(pathSpec) != 2 {
+			return fmt.Errorf(i18n.G("Invalid source %s"), resource.name)
 		}
 
-		i++
-		break
-	}
+		if c.file.flagRecursive {
+			err := c.file.recursivePullFile(resource.server, pathSpec[0], pathSpec[1], target)
+			if err != nil {
+				return err
+			}
 
-	for ; i <= len(parts); i++ {
-		cur := filepath.Join(parts[:i]...)
-		if cur == "" {
 			continue
 		}
 
-		cur = "/" + cur
+		buf, resp, err := resource.server.GetContainerFile(pathSpec[0], pathSpec[1])
+		if err != nil {
+			return err
+		}
 
-		modeArg := -1
-		if mode != nil {
-			modeArg = int(mode.Perm())
+		if resp.Type == "directory" {
+			return fmt.Errorf(i18n.G("Can't pull a directory without --recursive"))
 		}
-		args := lxd.ContainerFileArgs{
-			UID:  uid,
-			GID:  gid,
-			Mode: modeArg,
-			Type: "directory",
+
+		var targetPath string
+		if targetIsDir {
+			targetPath = path.Join(target, path.Base(pathSpec[1]))
+		} else {
+			targetPath = target
 		}
 
-		logger.Infof("Creating %s (%s)", cur, args.Type)
-		err := d.CreateContainerFile(container, cur, args)
+		logger.Infof("Pulling %s from %s (%s)", targetPath, pathSpec[1], resp.Type)
+
+		var f *os.File
+		if targetPath == "-" {
+			f = os.Stdout
+		} else {
+			if resp.Type == "symlink" {
+				linkTarget, err := ioutil.ReadAll(buf)
+				if err != nil {
+					return err
+				}
+
+				err = os.Symlink(strings.TrimSpace(string(linkTarget)), targetPath)
+				if err != nil {
+					return err
+				}
+
+				continue
+			}
+
+			f, err = os.Create(targetPath)
+			if err != nil {
+				return err
+			}
+			defer f.Close()
+
+			err = os.Chmod(targetPath, os.FileMode(resp.Mode))
+			if err != nil {
+				return err
+			}
+		}
+
+		_, err = io.Copy(f, buf)
 		if err != nil {
 			return err
 		}
@@ -238,22 +309,49 @@ func (c *fileCmd) recursiveMkdir(d lxd.ContainerServer, container string, p stri
 	return nil
 }
 
-func (c *fileCmd) push(conf *config.Config, sendFilePerms bool, args []string) error {
-	if len(args) < 2 {
-		return errArgs
+// Push
+type cmdFilePush struct {
+	global *cmdGlobal
+	file   *cmdFile
+
+	noModeChange bool
+}
+
+func (c *cmdFilePush) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("push <source path> [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...]")
+	cmd.Short = i18n.G("Push files into containers")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Push files into containers`))
+	cmd.Example = cli.FormatSection("", i18n.G(
+		`lxc file push /etc/hosts foo/etc/hosts
+   To push /etc/hosts into the container "foo".`))
+
+	cmd.Flags().BoolVarP(&c.file.flagRecursive, "recursive", "r", false, i18n.G("Recursively transfer files"))
+	cmd.Flags().BoolVarP(&c.file.flagMkdir, "create-dirs", "p", false, i18n.G("Create any directories necessary"))
+	cmd.Flags().IntVar(&c.file.flagUID, "uid", -1, i18n.G("Set the file's uid on push")+"``")
+	cmd.Flags().IntVar(&c.file.flagGID, "gid", -1, i18n.G("Set the file's gid on push")+"``")
+	cmd.Flags().StringVar(&c.file.flagMode, "mode", "", i18n.G("Set the file's perms on push")+"``")
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdFilePush) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 2, -1)
+	if exit {
+		return err
 	}
 
+	// Parse the destination
 	target := args[len(args)-1]
 	pathSpec := strings.SplitN(target, "/", 2)
 
 	if len(pathSpec) != 2 {
 		return fmt.Errorf(i18n.G("Invalid target %s"), target)
 	}
-
-	remote, container, err := conf.ParseRemote(pathSpec[0])
-	if err != nil {
-		return err
-	}
+	container := pathSpec[0]
 
 	targetIsDir := strings.HasSuffix(target, "/")
 	// re-add leading / that got stripped by the SplitN
@@ -266,37 +364,43 @@ func (c *fileCmd) push(conf *config.Config, sendFilePerms bool, args []string) e
 		targetIsDir = true
 	}
 
-	d, err := conf.GetContainerServer(remote)
+	// Parse remote
+	resources, err := c.global.ParseServers(pathSpec[0])
 	if err != nil {
 		return err
 	}
 
-	var sourcefilenames []string
+	resource := resources[0]
+
+	// Make a list of paths to transfer
+	sourcefilenames := []string{}
 	for _, fname := range args[:len(args)-1] {
-		if !strings.HasPrefix(fname, "--") {
-			sourcefilenames = append(sourcefilenames, shared.HostPath(filepath.Clean(fname)))
-		}
+		sourcefilenames = append(sourcefilenames, shared.HostPath(filepath.Clean(fname)))
 	}
 
+	// Determine the target mode
 	mode := os.FileMode(0755)
-	if c.mode != "" {
-		if len(c.mode) == 3 {
-			c.mode = "0" + c.mode
+	if c.file.flagMode != "" {
+		if len(c.file.flagMode) == 3 {
+			c.file.flagMode = "0" + c.file.flagMode
 		}
 
-		m, err := strconv.ParseInt(c.mode, 0, 0)
+		m, err := strconv.ParseInt(c.file.flagMode, 0, 0)
 		if err != nil {
 			return err
 		}
 		mode = os.FileMode(m)
 	}
 
-	if c.recursive {
-		if c.uid != -1 || c.gid != -1 || c.mode != "" {
-			return fmt.Errorf(i18n.G("can't supply uid/gid/mode in recursive mode"))
+	// Recursive calls
+	if c.file.flagRecursive {
+		// Sanity checks
+		if c.file.flagUID != -1 || c.file.flagGID != -1 || c.file.flagMode != "" {
+			return fmt.Errorf(i18n.G("Can't supply uid/gid/mode in recursive mode"))
 		}
 
-		if c.mkdirs {
+		// Create needed paths if requested
+		if c.file.flagMkdir {
 			f, err := os.Open(args[0])
 			if err != nil {
 				return err
@@ -309,14 +413,15 @@ func (c *fileCmd) push(conf *config.Config, sendFilePerms bool, args []string) e
 
 			mode, uid, gid := shared.GetOwnerMode(finfo)
 
-			err = c.recursiveMkdir(d, container, targetPath, &mode, int64(uid), int64(gid))
+			err = c.file.recursiveMkdir(resource.server, container, targetPath, &mode, int64(uid), int64(gid))
 			if err != nil {
 				return err
 			}
 		}
 
+		// Transfer the files
 		for _, fname := range sourcefilenames {
-			err := c.recursivePushFile(d, container, fname, targetPath)
+			err := c.file.recursivePushFile(resource.server, container, fname, targetPath)
 			if err != nil {
 				return err
 			}
@@ -325,22 +430,23 @@ func (c *fileCmd) push(conf *config.Config, sendFilePerms bool, args []string) e
 		return nil
 	}
 
+	// Determine the target uid
 	uid := 0
-	if c.uid >= 0 {
-		uid = c.uid
+	if c.file.flagUID >= 0 {
+		uid = c.file.flagUID
 	}
 
+	// Determine the target gid
 	gid := 0
-	if c.gid >= 0 {
-		gid = c.gid
+	if c.file.flagGID >= 0 {
+		gid = c.file.flagGID
 	}
 
 	if (len(sourcefilenames) > 1) && !targetIsDir {
-		return errArgs
+		return fmt.Errorf(i18n.G("Missing target directory"))
 	}
 
-	/* Make sure all of the files are accessible by us before trying to
-	 * push any of them. */
+	// Make sure all of the files are accessible by us before trying to push any of them
 	var files []*os.File
 	for _, f := range sourcefilenames {
 		var file *os.File
@@ -357,35 +463,38 @@ func (c *fileCmd) push(conf *config.Config, sendFilePerms bool, args []string) e
 		files = append(files, file)
 	}
 
+	// Push the files
 	for _, f := range files {
 		fpath := targetPath
 		if targetIsDir {
 			fpath = path.Join(fpath, path.Base(f.Name()))
 		}
 
-		if c.mkdirs {
+		// Create needed paths if requested
+		if c.file.flagMkdir {
 			finfo, err := f.Stat()
 			if err != nil {
 				return err
 			}
 
 			_, dUID, dGID := shared.GetOwnerMode(finfo)
-			if c.uid == -1 || c.gid == -1 {
-				if c.uid == -1 {
+			if c.file.flagUID == -1 || c.file.flagGID == -1 {
+				if c.file.flagUID == -1 {
 					uid = dUID
 				}
 
-				if c.gid == -1 {
+				if c.file.flagGID == -1 {
 					gid = dGID
 				}
 			}
 
-			err = c.recursiveMkdir(d, container, path.Dir(fpath), nil, int64(uid), int64(gid))
+			err = c.file.recursiveMkdir(resource.server, container, path.Dir(fpath), nil, int64(uid), int64(gid))
 			if err != nil {
 				return err
 			}
 		}
 
+		// Transfer the files
 		args := lxd.ContainerFileArgs{
 			Content: f,
 			UID:     -1,
@@ -393,8 +502,8 @@ func (c *fileCmd) push(conf *config.Config, sendFilePerms bool, args []string) e
 			Mode:    -1,
 		}
 
-		if sendFilePerms {
-			if c.mode == "" || c.uid == -1 || c.gid == -1 {
+		if !c.noModeChange {
+			if c.file.flagMode == "" || c.file.flagUID == -1 || c.file.flagGID == -1 {
 				finfo, err := f.Stat()
 				if err != nil {
 					return err
@@ -405,15 +514,15 @@ func (c *fileCmd) push(conf *config.Config, sendFilePerms bool, args []string) e
 					return err
 				}
 
-				if c.mode == "" {
+				if c.file.flagMode == "" {
 					mode = fMode
 				}
 
-				if c.uid == -1 {
+				if c.file.flagUID == -1 {
 					uid = fUID
 				}
 
-				if c.gid == -1 {
+				if c.file.flagGID == -1 {
 					gid = fGID
 				}
 			}
@@ -425,7 +534,7 @@ func (c *fileCmd) push(conf *config.Config, sendFilePerms bool, args []string) e
 		args.Type = "file"
 
 		logger.Infof("Pushing %s to %s (%s)", f.Name(), fpath, args.Type)
-		err = d.CreateContainerFile(container, fpath, args)
+		err = resource.server.CreateContainerFile(container, fpath, args)
 		if err != nil {
 			return err
 		}
@@ -434,209 +543,169 @@ func (c *fileCmd) push(conf *config.Config, sendFilePerms bool, args []string) e
 	return nil
 }
 
-func (c *fileCmd) pull(conf *config.Config, args []string) error {
-	if len(args) < 2 {
-		return errArgs
-	}
-
-	target := shared.HostPath(filepath.Clean(args[len(args)-1]))
-	targetIsDir := false
-	sb, err := os.Stat(target)
-	if err != nil && !os.IsNotExist(err) {
+func (c *cmdFile) recursivePullFile(d lxd.ContainerServer, container string, p string, targetDir string) error {
+	buf, resp, err := d.GetContainerFile(container, p)
+	if err != nil {
 		return err
 	}
 
-	/*
-	 * If the path exists, just use it. If it doesn't exist, it might be a
-	 * directory in one of three cases:
-	 *   1. Someone explicitly put "/" at the end
-	 *   2. Someone provided more than one source. In this case the target
-	 *      should be a directory so we can save all the files into it.
-	 *   3. We are dealing with recursive copy
-	 */
-	if err == nil {
-		targetIsDir = sb.IsDir()
-		if !targetIsDir && len(args)-1 > 1 {
-			return fmt.Errorf(i18n.G("More than one file to download, but target is not a directory"))
-		}
-	} else if strings.HasSuffix(target, string(os.PathSeparator)) || len(args)-1 > 1 || c.recursive {
-		err := os.MkdirAll(target, 0755)
+	target := filepath.Join(targetDir, filepath.Base(p))
+	logger.Infof("Pulling %s from %s (%s)", target, p, resp.Type)
+
+	if resp.Type == "directory" {
+		err := os.Mkdir(target, os.FileMode(resp.Mode))
 		if err != nil {
 			return err
 		}
-		targetIsDir = true
-	}
 
-	for _, f := range args[:len(args)-1] {
-		pathSpec := strings.SplitN(f, "/", 2)
-		if len(pathSpec) != 2 {
-			return fmt.Errorf(i18n.G("Invalid source %s"), f)
-		}
+		for _, ent := range resp.Entries {
+			nextP := path.Join(p, ent)
 
-		remote, container, err := conf.ParseRemote(pathSpec[0])
+			err := c.recursivePullFile(d, container, nextP, target)
+			if err != nil {
+				return err
+			}
+		}
+	} else if resp.Type == "file" {
+		f, err := os.Create(target)
 		if err != nil {
 			return err
 		}
+		defer f.Close()
 
-		d, err := conf.GetContainerServer(remote)
+		err = os.Chmod(target, os.FileMode(resp.Mode))
 		if err != nil {
 			return err
 		}
 
-		if c.recursive {
-			err := c.recursivePullFile(d, container, pathSpec[1], target)
-			if err != nil {
-				return err
-			}
-
-			continue
+		_, err = io.Copy(f, buf)
+		if err != nil {
+			return err
 		}
-
-		buf, resp, err := d.GetContainerFile(container, pathSpec[1])
+	} else if resp.Type == "symlink" {
+		linkTarget, err := ioutil.ReadAll(buf)
 		if err != nil {
 			return err
 		}
 
-		if resp.Type == "directory" {
-			return fmt.Errorf(i18n.G("Can't pull a directory without --recursive"))
+		err = os.Symlink(strings.TrimSpace(string(linkTarget)), target)
+		if err != nil {
+			return err
 		}
+	} else {
+		return fmt.Errorf(i18n.G("Unknown file type '%s'"), resp.Type)
+	}
 
-		var targetPath string
-		if targetIsDir {
-			targetPath = path.Join(target, path.Base(pathSpec[1]))
-		} else {
-			targetPath = target
-		}
+	return nil
+}
 
-		logger.Infof("Pulling %s from %s (%s)", targetPath, pathSpec[1], resp.Type)
+func (c *cmdFile) recursivePushFile(d lxd.ContainerServer, container string, source string, target string) error {
+	source = filepath.Clean(source)
+	sourceDir, _ := filepath.Split(source)
+	sourceLen := len(sourceDir)
 
-		var f *os.File
-		if targetPath == "-" {
-			f = os.Stdout
-		} else {
-			if resp.Type == "symlink" {
-				linkTarget, err := ioutil.ReadAll(buf)
-				if err != nil {
-					return err
-				}
+	sendFile := func(p string, fInfo os.FileInfo, err error) error {
+		if err != nil {
+			return fmt.Errorf(i18n.G("Failed to walk path for %s: %s"), p, err)
+		}
 
-				err = os.Symlink(strings.TrimSpace(string(linkTarget)), targetPath)
-				if err != nil {
-					return err
-				}
+		// Detect unsupported files
+		if !fInfo.Mode().IsRegular() && !fInfo.Mode().IsDir() && fInfo.Mode()&os.ModeSymlink != os.ModeSymlink {
+			return fmt.Errorf(i18n.G("'%s' isn't a supported file type."), p)
+		}
 
-				continue
-			}
+		// Prepare for file transfer
+		targetPath := path.Join(target, filepath.ToSlash(p[sourceLen:]))
+		mode, uid, gid := shared.GetOwnerMode(fInfo)
+		args := lxd.ContainerFileArgs{
+			UID:  int64(uid),
+			GID:  int64(gid),
+			Mode: int(mode.Perm()),
+		}
 
-			f, err = os.Create(targetPath)
+		if fInfo.IsDir() {
+			// Directory handling
+			args.Type = "directory"
+		} else if fInfo.Mode()&os.ModeSymlink == os.ModeSymlink {
+			// Symlink handling
+			symlinkTarget, err := os.Readlink(p)
 			if err != nil {
 				return err
 			}
-			defer f.Close()
 
-			err = os.Chmod(targetPath, os.FileMode(resp.Mode))
+			args.Type = "symlink"
+			args.Content = bytes.NewReader([]byte(symlinkTarget))
+		} else {
+			// File handling
+			f, err := os.Open(p)
 			if err != nil {
 				return err
 			}
-		}
+			defer f.Close()
 
-		_, err = io.Copy(f, buf)
-		if err != nil {
-			return err
+			args.Type = "file"
+			args.Content = f
 		}
+
+		logger.Infof("Pushing %s to %s (%s)", p, targetPath, args.Type)
+		return d.CreateContainerFile(container, targetPath, args)
 	}
 
-	return nil
+	return filepath.Walk(source, sendFile)
 }
 
-func (c *fileCmd) delete(conf *config.Config, args []string) error {
-	if len(args) < 1 {
-		return errArgs
+func (c *cmdFile) recursiveMkdir(d lxd.ContainerServer, container string, p string, mode *os.FileMode, uid int64, gid int64) error {
+	/* special case, every container has a /, we don't need to do anything */
+	if p == "/" {
+		return nil
 	}
 
-	for _, f := range args[:] {
-		pathSpec := strings.SplitN(f, "/", 2)
-		if len(pathSpec) != 2 {
-			return fmt.Errorf(i18n.G("Invalid path %s"), f)
-		}
-
-		remote, container, err := conf.ParseRemote(pathSpec[0])
-		if err != nil {
-			return err
-		}
+	// Remove trailing "/" e.g. /A/B/C/. Otherwise we will end up with an
+	// empty array entry "" which will confuse the Mkdir() loop below.
+	pclean := filepath.Clean(p)
+	parts := strings.Split(pclean, "/")
+	i := len(parts)
 
-		d, err := conf.GetContainerServer(remote)
+	for ; i >= 1; i-- {
+		cur := filepath.Join(parts[:i]...)
+		_, resp, err := d.GetContainerFile(container, cur)
 		if err != nil {
-			return err
+			continue
 		}
 
-		err = d.DeleteContainerFile(container, pathSpec[1])
-		if err != nil {
-			return err
+		if resp.Type != "directory" {
+			return fmt.Errorf(i18n.G("%s is not a directory"), cur)
 		}
-	}
-
-	return nil
-}
-
-func (c *fileCmd) edit(conf *config.Config, args []string) error {
-	if len(args) != 1 {
-		return errArgs
-	}
-
-	if c.recursive {
-		return fmt.Errorf(i18n.G("recursive edit doesn't make sense :("))
-	}
 
-	// If stdin isn't a terminal, read text from it
-	if !termios.IsTerminal(int(syscall.Stdin)) {
-		return c.push(conf, false, append([]string{os.Stdin.Name()}, args[0]))
+		i++
+		break
 	}
 
-	// Create temp file
-	f, err := ioutil.TempFile("", "lxd_file_edit_")
-	if err != nil {
-		return fmt.Errorf("Unable to create a temporary file: %v", err)
-	}
-	fname := f.Name()
-	f.Close()
-	os.Remove(fname)
-	defer os.Remove(shared.HostPath(fname))
+	for ; i <= len(parts); i++ {
+		cur := filepath.Join(parts[:i]...)
+		if cur == "" {
+			continue
+		}
 
-	// Extract current value
-	err = c.pull(conf, append([]string{args[0]}, fname))
-	if err != nil {
-		return err
-	}
+		cur = "/" + cur
 
-	_, err = shared.TextEditor(shared.HostPath(fname), []byte{})
-	if err != nil {
-		return err
-	}
+		modeArg := -1
+		if mode != nil {
+			modeArg = int(mode.Perm())
+		}
+		args := lxd.ContainerFileArgs{
+			UID:  uid,
+			GID:  gid,
+			Mode: modeArg,
+			Type: "directory",
+		}
 
-	err = c.push(conf, false, append([]string{fname}, args[0]))
-	if err != nil {
-		return err
+		logger.Infof("Creating %s (%s)", cur, args.Type)
+		err := d.CreateContainerFile(container, cur, args)
+		if err != nil {
+			return err
+		}
 	}
 
 	return nil
 }
-
-func (c *fileCmd) run(conf *config.Config, args []string) error {
-	if len(args) < 1 {
-		return errUsage
-	}
-
-	switch args[0] {
-	case "push":
-		return c.push(conf, true, args[1:])
-	case "pull":
-		return c.pull(conf, args[1:])
-	case "delete":
-		return c.delete(conf, args[1:])
-	case "edit":
-		return c.edit(conf, args[1:])
-	default:
-		return errArgs
-	}
-}
diff --git a/lxc/main.go b/lxc/main.go
index 740814ac8..1370615ce 100644
--- a/lxc/main.go
+++ b/lxc/main.go
@@ -93,6 +93,10 @@ For help with any of those, simply call them with --help.`))
 	execCmd := cmdExec{global: &globalCmd}
 	app.AddCommand(execCmd.Command())
 
+	// file sub-command
+	fileCmd := cmdFile{global: &globalCmd}
+	app.AddCommand(fileCmd.Command())
+
 	// info sub-command
 	infoCmd := cmdInfo{global: &globalCmd}
 	app.AddCommand(infoCmd.Command())
@@ -327,7 +331,6 @@ type command interface {
 
 var commands = map[string]command{
 	"config":  &configCmd{},
-	"file":    &fileCmd{},
 	"image":   &imageCmd{},
 	"manpage": &manpageCmd{},
 	"network": &networkCmd{},

From 5bc37c02219acc0565145c77d0c42dbb2ff8b4fe Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Tue, 27 Mar 2018 17:06:38 -0400
Subject: [PATCH 26/39] lxc/remote: Port to cobra
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   |   9 +-
 lxc/remote.go | 574 ++++++++++++++++++++++++++++++++++++++--------------------
 2 files changed, 377 insertions(+), 206 deletions(-)

diff --git a/lxc/main.go b/lxc/main.go
index 1370615ce..c6f2e4f77 100644
--- a/lxc/main.go
+++ b/lxc/main.go
@@ -145,6 +145,10 @@ For help with any of those, simply call them with --help.`))
 	restartCmd := cmdRestart{global: &globalCmd}
 	app.AddCommand(restartCmd.Command())
 
+	// remote sub-command
+	remoteCmd := cmdRemote{global: &globalCmd}
+	app.AddCommand(remoteCmd.Command())
+
 	// restore sub-command
 	restoreCmd := cmdRestore{global: &globalCmd}
 	app.AddCommand(restoreCmd.Command())
@@ -335,7 +339,6 @@ var commands = map[string]command{
 	"manpage": &manpageCmd{},
 	"network": &networkCmd{},
 	"profile": &profileCmd{},
-	"remote":  &remoteCmd{},
 	"storage": &storageCmd{},
 }
 
@@ -351,10 +354,6 @@ var defaultAliases = map[string]string{
 	"image alias ls": "image alias list",
 	"image alias rm": "image alias delete",
 
-	"remote ls": "remote list",
-	"remote mv": "remote rename",
-	"remote rm": "remote remove",
-
 	"config device ls": "config device list",
 	"config device rm": "config device remove",
 }
diff --git a/lxc/remote.go b/lxc/remote.go
index 417107733..667fe2bef 100644
--- a/lxc/remote.go
+++ b/lxc/remote.go
@@ -12,99 +12,144 @@ import (
 	"strings"
 
 	"github.com/olekukonko/tablewriter"
-
+	"github.com/spf13/cobra"
 	"golang.org/x/crypto/ssh/terminal"
 
 	"github.com/lxc/lxd/client"
 	"github.com/lxc/lxd/lxc/config"
 	"github.com/lxc/lxd/shared"
 	"github.com/lxc/lxd/shared/api"
-	"github.com/lxc/lxd/shared/gnuflag"
+	cli "github.com/lxc/lxd/shared/cmd"
 	"github.com/lxc/lxd/shared/i18n"
-	"github.com/lxc/lxd/shared/logger"
 )
 
-type remoteCmd struct {
-	acceptCert bool
-	password   string
-	public     bool
-	protocol   string
-	authType   string
+type cmdRemote struct {
+	global *cmdGlobal
 }
 
-func (c *remoteCmd) showByDefault() bool {
-	return true
-}
+func (c *cmdRemote) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("remote")
+	cmd.Short = i18n.G("Manage the list of remote servers")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Manage the list of remote servers`))
 
-func (c *remoteCmd) usage() string {
-	return i18n.G(
-		`Usage: lxc remote <subcommand> [options]
+	// Add
+	remoteAddCmd := cmdRemoteAdd{global: c.global, remote: c}
+	cmd.AddCommand(remoteAddCmd.Command())
 
-Manage the list of remote LXD servers.
+	// Get default
+	remoteGetDefaultCmd := cmdRemoteGetDefault{global: c.global, remote: c}
+	cmd.AddCommand(remoteGetDefaultCmd.Command())
 
-lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--password=PASSWORD] [--public] [--protocol=PROTOCOL] [--auth-type=AUTH_TYPE]
-    Add the remote <remote> at <url>.
+	// List
+	remoteListCmd := cmdRemoteList{global: c.global, remote: c}
+	cmd.AddCommand(remoteListCmd.Command())
 
-lxc remote remove <remote>
-    Remove the remote <remote>.
+	// Rename
+	remoteRenameCmd := cmdRemoteRename{global: c.global, remote: c}
+	cmd.AddCommand(remoteRenameCmd.Command())
 
-lxc remote list
-    List all remotes.
+	// Remove
+	remoteRemoveCmd := cmdRemoteRemove{global: c.global, remote: c}
+	cmd.AddCommand(remoteRemoveCmd.Command())
 
-lxc remote rename <old name> <new name>
-    Rename remote <old name> to <new name>.
+	// Set default
+	remoteSetDefaultCmd := cmdRemoteSetDefault{global: c.global, remote: c}
+	cmd.AddCommand(remoteSetDefaultCmd.Command())
 
-lxc remote set-url <remote> <url>
-    Update <remote>'s url to <url>.
+	// Set URL
+	remoteSetURLCmd := cmdRemoteSetURL{global: c.global, remote: c}
+	cmd.AddCommand(remoteSetURLCmd.Command())
+
+	return cmd
+}
 
-lxc remote set-default <remote>
-    Set the default remote.
+// Add
+type cmdRemoteAdd struct {
+	global *cmdGlobal
+	remote *cmdRemote
 
-lxc remote get-default
-    Print the default remote.`)
+	flagAcceptCert bool
+	flagPassword   string
+	flagPublic     bool
+	flagProtocol   string
+	flagAuthType   string
 }
 
-func (c *remoteCmd) flags() {
-	gnuflag.BoolVar(&c.acceptCert, "accept-certificate", false, i18n.G("Accept certificate"))
-	gnuflag.StringVar(&c.password, "password", "", i18n.G("Remote admin password"))
-	gnuflag.StringVar(&c.protocol, "protocol", "", i18n.G("Server protocol (lxd or simplestreams)"))
-	gnuflag.StringVar(&c.authType, "auth-type", "", i18n.G("Server authentication type (tls or macaroons)"))
-	gnuflag.BoolVar(&c.public, "public", false, i18n.G("Public image server"))
+func (c *cmdRemoteAdd) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("add [<remote>] <IP|FQDN|URL>")
+	cmd.Short = i18n.G("Add new remote servers")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Add new remote servers`))
+
+	cmd.RunE = c.Run
+	cmd.Flags().BoolVar(&c.flagAcceptCert, "accept-certificate", false, i18n.G("Accept certificate"))
+	cmd.Flags().StringVar(&c.flagPassword, "password", "", i18n.G("Remote admin password")+"``")
+	cmd.Flags().StringVar(&c.flagProtocol, "protocol", "", i18n.G("Server protocol (lxd or simplestreams)")+"``")
+	cmd.Flags().StringVar(&c.flagAuthType, "auth-type", "", i18n.G("Server authentication type (tls or macaroons)")+"``")
+	cmd.Flags().BoolVar(&c.flagPublic, "public", false, i18n.G("Public image server"))
+
+	return cmd
 }
 
-func (c *remoteCmd) addServer(conf *config.Config, server string, addr string, acceptCert bool, password string, public bool, protocol string, authType string) error {
+func (c *cmdRemoteAdd) Run(cmd *cobra.Command, args []string) error {
+	conf := c.global.conf
+
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, 2)
+	if exit {
+		return err
+	}
+
+	// Determine server name and address
+	server := args[0]
+	addr := args[0]
+	if len(args) > 1 {
+		addr = args[1]
+	}
+
+	// Check for existing remote
+	remote, ok := conf.Remotes[server]
+	if ok {
+		return fmt.Errorf(i18n.G("Remote %s exists as <%s>"), server, remote.Addr)
+	}
+
+	// Parse the URL
 	var rScheme string
 	var rHost string
 	var rPort string
 
-	if protocol == "" {
-		protocol = "lxd"
+	if c.flagProtocol == "" {
+		c.flagProtocol = "lxd"
 	}
-	if authType == "" {
-		authType = "tls"
+
+	if c.flagAuthType == "" {
+		c.flagAuthType = "tls"
 	}
 
-	// Setup the remotes list
+	// Initialize the remotes list if needed
 	if conf.Remotes == nil {
-		conf.Remotes = make(map[string]config.Remote)
+		conf.Remotes = map[string]config.Remote{}
 	}
 
-	/* Complex remote URL parsing */
+	// Complex remote URL parsing
 	remoteURL, err := url.Parse(addr)
 	if err != nil {
 		remoteURL = &url.URL{Host: addr}
 	}
 
 	// Fast track simplestreams
-	if protocol == "simplestreams" {
+	if c.flagProtocol == "simplestreams" {
 		if remoteURL.Scheme != "https" {
 			return fmt.Errorf(i18n.G("Only https URLs are supported for simplestreams"))
 		}
 
-		conf.Remotes[server] = config.Remote{Addr: addr, Public: true, Protocol: protocol}
-		return nil
-	} else if protocol != "lxd" {
-		return fmt.Errorf(i18n.G("Invalid protocol: %s"), protocol)
+		conf.Remotes[server] = config.Remote{Addr: addr, Public: true, Protocol: c.flagProtocol}
+		return conf.SaveConfig(c.global.confPath)
+	} else if c.flagProtocol != "lxd" {
+		return fmt.Errorf(i18n.G("Invalid protocol: %s"), c.flagProtocol)
 	}
 
 	// Fix broken URL parser
@@ -161,7 +206,7 @@ func (c *remoteCmd) addServer(conf *config.Config, server string, addr string, a
 	// Finally, actually add the remote, almost...  If the remote is a private
 	// HTTPS server then we need to ensure we have a client certificate before
 	// adding the remote server.
-	if rScheme != "unix" && !public && authType == "tls" {
+	if rScheme != "unix" && !c.flagPublic && c.flagAuthType == "tls" {
 		if !conf.HasClientCertificate() {
 			fmt.Fprintf(os.Stderr, i18n.G("Generating a client certificate. This may take a minute...")+"\n")
 			err = conf.GenerateClientCertificate()
@@ -170,11 +215,11 @@ func (c *remoteCmd) addServer(conf *config.Config, server string, addr string, a
 			}
 		}
 	}
-	conf.Remotes[server] = config.Remote{Addr: addr, Protocol: protocol, AuthType: authType}
+	conf.Remotes[server] = config.Remote{Addr: addr, Protocol: c.flagProtocol, AuthType: c.flagAuthType}
 
 	// Attempt to connect
 	var d lxd.ImageServer
-	if public {
+	if c.flagPublic {
 		d, err = conf.GetImageServer(server)
 	} else {
 		d, err = conf.GetContainerServer(server)
@@ -182,7 +227,11 @@ func (c *remoteCmd) addServer(conf *config.Config, server string, addr string, a
 
 	// Handle Unix socket connections
 	if strings.HasPrefix(addr, "unix:") {
-		return err
+		if err != nil {
+			return err
+		}
+
+		return conf.SaveConfig(c.global.confPath)
 	}
 
 	// Check if the system CA worked for the TLS connection
@@ -197,7 +246,7 @@ func (c *remoteCmd) addServer(conf *config.Config, server string, addr string, a
 
 	// Handle certificate prompt
 	if certificate != nil {
-		if !acceptCert {
+		if !c.flagAcceptCert {
 			digest := shared.CertFingerprint(certificate)
 
 			fmt.Printf(i18n.G("Certificate fingerprint: %s")+"\n", digest)
@@ -228,7 +277,7 @@ func (c *remoteCmd) addServer(conf *config.Config, server string, addr string, a
 		certOut.Close()
 
 		// Setup a new connection, this time with the remote certificate
-		if public {
+		if c.flagPublic {
 			d, err = conf.GetImageServer(server)
 		} else {
 			d, err = conf.GetContainerServer(server)
@@ -240,12 +289,12 @@ func (c *remoteCmd) addServer(conf *config.Config, server string, addr string, a
 	}
 
 	// Handle public remotes
-	if public {
+	if c.flagPublic {
 		conf.Remotes[server] = config.Remote{Addr: addr, Public: true}
-		return nil
+		return conf.SaveConfig(c.global.confPath)
 	}
 
-	if authType == "macaroons" {
+	if c.flagAuthType == "macaroons" {
 		d.(lxd.ContainerServer).RequireAuthenticated(false)
 	}
 
@@ -255,24 +304,24 @@ func (c *remoteCmd) addServer(conf *config.Config, server string, addr string, a
 		return err
 	}
 
-	if !srv.Public && !shared.StringInSlice(authType, srv.AuthMethods) {
-		return fmt.Errorf(i18n.G("Authentication type '%s' not supported by server"), authType)
+	if !srv.Public && !shared.StringInSlice(c.flagAuthType, srv.AuthMethods) {
+		return fmt.Errorf(i18n.G("Authentication type '%s' not supported by server"), c.flagAuthType)
 	}
 
 	// Detect public remotes
 	if srv.Public {
 		conf.Remotes[server] = config.Remote{Addr: addr, Public: true}
-		return nil
+		return conf.SaveConfig(c.global.confPath)
 	}
 
 	// Check if our cert is already trusted
 	if srv.Auth == "trusted" {
-		return nil
+		return conf.SaveConfig(c.global.confPath)
 	}
 
-	if authType == "tls" {
+	if c.flagAuthType == "tls" {
 		// Prompt for trust password
-		if password == "" {
+		if c.flagPassword == "" {
 			fmt.Printf(i18n.G("Admin password for %s: "), server)
 			pwd, err := terminal.ReadPassword(0)
 			if err != nil {
@@ -284,12 +333,12 @@ func (c *remoteCmd) addServer(conf *config.Config, server string, addr string, a
 				}
 			}
 			fmt.Println("")
-			password = string(pwd)
+			c.flagPassword = string(pwd)
 		}
 
 		// Add client certificate to trust store
 		req := api.CertificatesPost{
-			Password: password,
+			Password: c.flagPassword,
 		}
 		req.Type = "client"
 
@@ -311,184 +360,307 @@ func (c *remoteCmd) addServer(conf *config.Config, server string, addr string, a
 		return fmt.Errorf(i18n.G("Server doesn't trust us after authentication"))
 	}
 
-	if authType == "tls" {
+	if c.flagAuthType == "tls" {
 		fmt.Println(i18n.G("Client certificate stored at server: "), server)
 	}
+
+	return conf.SaveConfig(c.global.confPath)
+}
+
+// Get default
+type cmdRemoteGetDefault struct {
+	global *cmdGlobal
+	remote *cmdRemote
+}
+
+func (c *cmdRemoteGetDefault) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("get-default")
+	cmd.Short = i18n.G("Show the default remote")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Show the default remote`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdRemoteGetDefault) Run(cmd *cobra.Command, args []string) error {
+	conf := c.global.conf
+
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 0, 0)
+	if exit {
+		return err
+	}
+
+	// Show the default remote
+	fmt.Println(conf.DefaultRemote)
+
 	return nil
 }
 
-func (c *remoteCmd) removeCertificate(conf *config.Config, remote string) {
-	certf := conf.ServerCertPath(remote)
-	logger.Debugf("Trying to remove %s", certf)
+// List
+type cmdRemoteList struct {
+	global *cmdGlobal
+	remote *cmdRemote
+}
 
-	os.Remove(certf)
+func (c *cmdRemoteList) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("list")
+	cmd.Aliases = []string{"ls"}
+	cmd.Short = i18n.G("List the available remotes")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`List the available remotes`))
+
+	cmd.RunE = c.Run
+
+	return cmd
 }
 
-func (c *remoteCmd) run(conf *config.Config, args []string) error {
-	if len(args) < 1 {
-		return errUsage
+func (c *cmdRemoteList) Run(cmd *cobra.Command, args []string) error {
+	conf := c.global.conf
+
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 0, 0)
+	if exit {
+		return err
 	}
 
-	switch args[0] {
-	case "add":
-		if len(args) < 2 {
-			return errArgs
+	// List the remotes
+	data := [][]string{}
+	for name, rc := range conf.Remotes {
+		strPublic := i18n.G("NO")
+		if rc.Public {
+			strPublic = i18n.G("YES")
+		}
+
+		strStatic := i18n.G("NO")
+		if rc.Static {
+			strStatic = i18n.G("YES")
 		}
 
-		remote := args[1]
-		fqdn := args[1]
-		if len(args) > 2 {
-			fqdn = args[2]
+		if rc.Protocol == "" {
+			rc.Protocol = "lxd"
+		}
+		if rc.AuthType == "" && !rc.Public {
+			rc.AuthType = "tls"
 		}
 
-		if rc, ok := conf.Remotes[remote]; ok {
-			return fmt.Errorf(i18n.G("remote %s exists as <%s>"), remote, rc.Addr)
+		strName := name
+		if name == conf.DefaultRemote {
+			strName = fmt.Sprintf("%s (%s)", name, i18n.G("default"))
 		}
+		data = append(data, []string{strName, rc.Addr, rc.Protocol, rc.AuthType, strPublic, strStatic})
+	}
+
+	table := tablewriter.NewWriter(os.Stdout)
+	table.SetAutoWrapText(false)
+	table.SetAlignment(tablewriter.ALIGN_LEFT)
+	table.SetRowLine(true)
+	table.SetHeader([]string{
+		i18n.G("NAME"),
+		i18n.G("URL"),
+		i18n.G("PROTOCOL"),
+		i18n.G("AUTH TYPE"),
+		i18n.G("PUBLIC"),
+		i18n.G("STATIC")})
+	sort.Sort(byName(data))
+	table.AppendBulk(data)
+	table.Render()
+
+	return nil
+}
+
+// Rename
+type cmdRemoteRename struct {
+	global *cmdGlobal
+	remote *cmdRemote
+}
+
+func (c *cmdRemoteRename) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("rename <remote> <new-name>")
+	cmd.Aliases = []string{"mv"}
+	cmd.Short = i18n.G("Rename remotes")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Rename remotes`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdRemoteRename) Run(cmd *cobra.Command, args []string) error {
+	conf := c.global.conf
+
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 2, 2)
+	if exit {
+		return err
+	}
+
+	// Rename the remote
+	rc, ok := conf.Remotes[args[0]]
+	if !ok {
+		return fmt.Errorf(i18n.G("Remote %s doesn't exist"), args[0])
+	}
+
+	if rc.Static {
+		return fmt.Errorf(i18n.G("Remote %s is static and cannot be modified"), args[0])
+	}
+
+	if _, ok := conf.Remotes[args[1]]; ok {
+		return fmt.Errorf(i18n.G("Remote %s already exists"), args[1])
+	}
 
-		err := c.addServer(conf, remote, fqdn, c.acceptCert, c.password, c.public, c.protocol, c.authType)
+	// Rename the certificate file
+	oldPath := filepath.Join(conf.ConfigPath("servercerts"), fmt.Sprintf("%s.crt", args[0]))
+	newPath := filepath.Join(conf.ConfigPath("servercerts"), fmt.Sprintf("%s.crt", args[1]))
+	if shared.PathExists(oldPath) {
+		err := os.Rename(oldPath, newPath)
 		if err != nil {
-			delete(conf.Remotes, remote)
-			c.removeCertificate(conf, remote)
 			return err
 		}
+	}
 
-	case "remove":
-		if len(args) != 2 {
-			return errArgs
-		}
+	conf.Remotes[args[1]] = rc
+	delete(conf.Remotes, args[0])
 
-		rc, ok := conf.Remotes[args[1]]
-		if !ok {
-			return fmt.Errorf(i18n.G("remote %s doesn't exist"), args[1])
-		}
+	if conf.DefaultRemote == args[0] {
+		conf.DefaultRemote = args[1]
+	}
 
-		if rc.Static {
-			return fmt.Errorf(i18n.G("remote %s is static and cannot be modified"), args[1])
-		}
+	return conf.SaveConfig(c.global.confPath)
+}
 
-		if conf.DefaultRemote == args[1] {
-			return fmt.Errorf(i18n.G("can't remove the default remote"))
-		}
+// Remove
+type cmdRemoteRemove struct {
+	global *cmdGlobal
+	remote *cmdRemote
+}
 
-		delete(conf.Remotes, args[1])
+func (c *cmdRemoteRemove) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("remove <remote>")
+	cmd.Aliases = []string{"rm"}
+	cmd.Short = i18n.G("Remove remotes")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Remove remotes`))
 
-		c.removeCertificate(conf, args[1])
+	cmd.RunE = c.Run
 
-	case "list":
-		data := [][]string{}
-		for name, rc := range conf.Remotes {
-			strPublic := i18n.G("NO")
-			if rc.Public {
-				strPublic = i18n.G("YES")
-			}
+	return cmd
+}
 
-			strStatic := i18n.G("NO")
-			if rc.Static {
-				strStatic = i18n.G("YES")
-			}
+func (c *cmdRemoteRemove) Run(cmd *cobra.Command, args []string) error {
+	conf := c.global.conf
 
-			if rc.Protocol == "" {
-				rc.Protocol = "lxd"
-			}
-			if rc.AuthType == "" && !rc.Public {
-				rc.AuthType = "tls"
-			}
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, 1)
+	if exit {
+		return err
+	}
 
-			strName := name
-			if name == conf.DefaultRemote {
-				strName = fmt.Sprintf("%s (%s)", name, i18n.G("default"))
-			}
-			data = append(data, []string{strName, rc.Addr, rc.Protocol, rc.AuthType, strPublic, strStatic})
-		}
+	// Remove the remote
+	rc, ok := conf.Remotes[args[0]]
+	if !ok {
+		return fmt.Errorf(i18n.G("Remote %s doesn't exist"), args[0])
+	}
 
-		table := tablewriter.NewWriter(os.Stdout)
-		table.SetAutoWrapText(false)
-		table.SetAlignment(tablewriter.ALIGN_LEFT)
-		table.SetRowLine(true)
-		table.SetHeader([]string{
-			i18n.G("NAME"),
-			i18n.G("URL"),
-			i18n.G("PROTOCOL"),
-			i18n.G("AUTH TYPE"),
-			i18n.G("PUBLIC"),
-			i18n.G("STATIC")})
-		sort.Sort(byName(data))
-		table.AppendBulk(data)
-		table.Render()
-
-		return nil
-
-	case "rename":
-		if len(args) != 3 {
-			return errArgs
-		}
+	if rc.Static {
+		return fmt.Errorf(i18n.G("Remote %s is static and cannot be modified"), args[0])
+	}
 
-		rc, ok := conf.Remotes[args[1]]
-		if !ok {
-			return fmt.Errorf(i18n.G("remote %s doesn't exist"), args[1])
-		}
+	if conf.DefaultRemote == args[0] {
+		return fmt.Errorf(i18n.G("Can't remove the default remote"))
+	}
 
-		if rc.Static {
-			return fmt.Errorf(i18n.G("remote %s is static and cannot be modified"), args[1])
-		}
+	delete(conf.Remotes, args[0])
 
-		if _, ok := conf.Remotes[args[2]]; ok {
-			return fmt.Errorf(i18n.G("remote %s already exists"), args[2])
-		}
+	certf := conf.ServerCertPath(args[0])
+	os.Remove(certf)
 
-		// Rename the certificate file
-		oldPath := filepath.Join(conf.ConfigPath("servercerts"), fmt.Sprintf("%s.crt", args[1]))
-		newPath := filepath.Join(conf.ConfigPath("servercerts"), fmt.Sprintf("%s.crt", args[2]))
-		if shared.PathExists(oldPath) {
-			err := os.Rename(oldPath, newPath)
-			if err != nil {
-				return err
-			}
-		}
+	return conf.SaveConfig(c.global.confPath)
+}
 
-		conf.Remotes[args[2]] = rc
-		delete(conf.Remotes, args[1])
+// Set default
+type cmdRemoteSetDefault struct {
+	global *cmdGlobal
+	remote *cmdRemote
+}
 
-		if conf.DefaultRemote == args[1] {
-			conf.DefaultRemote = args[2]
-		}
+func (c *cmdRemoteSetDefault) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("set-default <remote>")
+	cmd.Short = i18n.G("Set the default remote")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Set the default remote`))
 
-	case "set-url":
-		if len(args) != 3 {
-			return errArgs
-		}
+	cmd.RunE = c.Run
 
-		rc, ok := conf.Remotes[args[1]]
-		if !ok {
-			return fmt.Errorf(i18n.G("remote %s doesn't exist"), args[1])
-		}
+	return cmd
+}
 
-		if rc.Static {
-			return fmt.Errorf(i18n.G("remote %s is static and cannot be modified"), args[1])
-		}
+func (c *cmdRemoteSetDefault) Run(cmd *cobra.Command, args []string) error {
+	conf := c.global.conf
 
-		conf.Remotes[args[1]] = config.Remote{Addr: args[2]}
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, 1)
+	if exit {
+		return err
+	}
 
-	case "set-default":
-		if len(args) != 2 {
-			return errArgs
-		}
+	// Set the default remote
+	_, ok := conf.Remotes[args[0]]
+	if !ok {
+		return fmt.Errorf(i18n.G("Remote %s doesn't exist"), args[1])
+	}
 
-		_, ok := conf.Remotes[args[1]]
-		if !ok {
-			return fmt.Errorf(i18n.G("remote %s doesn't exist"), args[1])
-		}
-		conf.DefaultRemote = args[1]
+	conf.DefaultRemote = args[0]
 
-	case "get-default":
-		if len(args) != 1 {
-			return errArgs
-		}
-		fmt.Println(conf.DefaultRemote)
-		return nil
-	default:
-		return errArgs
+	return conf.SaveConfig(c.global.confPath)
+}
+
+// Set URL
+type cmdRemoteSetURL struct {
+	global *cmdGlobal
+	remote *cmdRemote
+}
+
+func (c *cmdRemoteSetURL) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("set-url <remote> <URL>")
+	cmd.Short = i18n.G("Set the URL for the remote")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Set the URL for the remote`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdRemoteSetURL) Run(cmd *cobra.Command, args []string) error {
+	conf := c.global.conf
+
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 2, 2)
+	if exit {
+		return err
+	}
+
+	// Set the URL
+	rc, ok := conf.Remotes[args[0]]
+	if !ok {
+		return fmt.Errorf(i18n.G("Remote %s doesn't exist"), args[0])
 	}
 
-	return conf.SaveConfig(configPath)
+	if rc.Static {
+		return fmt.Errorf(i18n.G("Remote %s is static and cannot be modified"), args[0])
+	}
+
+	conf.Remotes[args[0]] = config.Remote{Addr: args[1]}
+
+	return conf.SaveConfig(c.global.confPath)
 }

From 54f6a61c3faf4d61234d634fc71e0a8781e0dbe8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Tue, 27 Mar 2018 19:46:54 -0400
Subject: [PATCH 27/39] lxc/network: Port to cobra
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    |   5 +-
 lxc/network.go | 908 +++++++++++++++++++++++++++++++++++++++++----------------
 2 files changed, 666 insertions(+), 247 deletions(-)

diff --git a/lxc/main.go b/lxc/main.go
index c6f2e4f77..c40c698a0 100644
--- a/lxc/main.go
+++ b/lxc/main.go
@@ -121,6 +121,10 @@ For help with any of those, simply call them with --help.`))
 	moveCmd := cmdMove{global: &globalCmd}
 	app.AddCommand(moveCmd.Command())
 
+	// network sub-command
+	networkCmd := cmdNetwork{global: &globalCmd}
+	app.AddCommand(networkCmd.Command())
+
 	// operation sub-command
 	operationCmd := cmdOperation{global: &globalCmd}
 	app.AddCommand(operationCmd.Command())
@@ -337,7 +341,6 @@ var commands = map[string]command{
 	"config":  &configCmd{},
 	"image":   &imageCmd{},
 	"manpage": &manpageCmd{},
-	"network": &networkCmd{},
 	"profile": &profileCmd{},
 	"storage": &storageCmd{},
 }
diff --git a/lxc/network.go b/lxc/network.go
index 590d1d409..67a0887a6 100644
--- a/lxc/network.go
+++ b/lxc/network.go
@@ -9,173 +9,133 @@ import (
 	"syscall"
 
 	"github.com/olekukonko/tablewriter"
+	"github.com/spf13/cobra"
 	"gopkg.in/yaml.v2"
 
-	"github.com/lxc/lxd/client"
-	"github.com/lxc/lxd/lxc/config"
 	"github.com/lxc/lxd/shared"
 	"github.com/lxc/lxd/shared/api"
-	"github.com/lxc/lxd/shared/gnuflag"
+	cli "github.com/lxc/lxd/shared/cmd"
 	"github.com/lxc/lxd/shared/i18n"
 	"github.com/lxc/lxd/shared/termios"
 )
 
-type networkCmd struct {
-	target string
-}
-
-func (c *networkCmd) showByDefault() bool {
-	return true
-}
+type cmdNetwork struct {
+	global *cmdGlobal
 
-func (c *networkCmd) networkEditHelp() string {
-	return i18n.G(
-		`### This is a yaml representation of the network.
-### Any line starting with a '# will be ignored.
-###
-### A network consists of a set of configuration items.
-###
-### An example would look like:
-### name: lxdbr0
-### config:
-###   ipv4.address: 10.62.42.1/24
-###   ipv4.nat: true
-###   ipv6.address: fd00:56ad:9f7a:9800::1/64
-###   ipv6.nat: true
-### managed: true
-### type: bridge
-###
-### Note that only the configuration can be changed.`)
+	flagTarget string
 }
 
-func (c *networkCmd) usage() string {
-	return i18n.G(
-		`Usage: lxc network <subcommand> [options]
-
-Manage and attach containers to networks.
+func (c *cmdNetwork) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("network")
+	cmd.Short = i18n.G("Manage and attach containers to networks")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Manage an attach containers to networks`))
 
-lxc network list [<remote>:]
-    List available networks.
+	// Attach
+	networkAttachCmd := cmdNetworkAttach{global: c.global, network: c}
+	cmd.AddCommand(networkAttachCmd.Command())
 
-lxc network list-leases [<remote>:]<network>
-    List the DHCP leases for the network
+	// Attach profile
+	networkAttachProfileCmd := cmdNetworkAttachProfile{global: c.global, network: c}
+	cmd.AddCommand(networkAttachProfileCmd.Command())
 
-lxc network show [<remote>:]<network> [--target <node>]
-    Show details of a network.
+	// Create
+	networkCreateCmd := cmdNetworkCreate{global: c.global, network: c}
+	cmd.AddCommand(networkCreateCmd.Command())
 
-lxc network create [<remote>:]<network> [key=value...] [--target <node>]
-    Create a network.
+	// Delete
+	networkDeleteCmd := cmdNetworkDelete{global: c.global, network: c}
+	cmd.AddCommand(networkDeleteCmd.Command())
 
-lxc network get [<remote>:]<network> <key> [--target <node>]
-    Get network configuration.
+	// Detach
+	networkDetachCmd := cmdNetworkDetach{global: c.global, network: c}
+	cmd.AddCommand(networkDetachCmd.Command())
 
-lxc network set [<remote>:]<network> <key> <value>
-    Set network configuration.
+	// Detach profile
+	networkDetachProfileCmd := cmdNetworkDetachProfile{global: c.global, network: c}
+	cmd.AddCommand(networkDetachProfileCmd.Command())
 
-lxc network unset [<remote>:]<network> <key>
-    Unset network configuration.
+	// Edit
+	networkEditCmd := cmdNetworkEdit{global: c.global, network: c}
+	cmd.AddCommand(networkEditCmd.Command())
 
-lxc network delete [<remote>:]<network>
-    Delete a network.
+	// Get
+	networkGetCmd := cmdNetworkGet{global: c.global, network: c}
+	cmd.AddCommand(networkGetCmd.Command())
 
-lxc network edit [<remote>:]<network>
-    Edit network, either by launching external editor or reading STDIN.
+	// List
+	networkListCmd := cmdNetworkList{global: c.global, network: c}
+	cmd.AddCommand(networkListCmd.Command())
 
-lxc network rename [<remote>:]<network> <new-name>
-    Rename a network.
+	// List leases
+	networkListLeasesCmd := cmdNetworkListLeases{global: c.global, network: c}
+	cmd.AddCommand(networkListLeasesCmd.Command())
 
-lxc network attach [<remote>:]<network> <container> [device name] [interface name]
-    Attach a network interface connecting the network to a specified container.
+	// Rename
+	networkRenameCmd := cmdNetworkRename{global: c.global, network: c}
+	cmd.AddCommand(networkRenameCmd.Command())
 
-lxc network attach-profile [<remote>:]<network> <profile> [device name] [interface name]
-    Attach a network interface connecting the network to a specified profile.
+	// Set
+	networkSetCmd := cmdNetworkSet{global: c.global, network: c}
+	cmd.AddCommand(networkSetCmd.Command())
 
-lxc network detach [<remote>:]<network> <container> [device name]
-    Remove a network interface connecting the network to a specified container.
+	// Show
+	networkShowCmd := cmdNetworkShow{global: c.global, network: c}
+	cmd.AddCommand(networkShowCmd.Command())
 
-lxc network detach-profile [<remote>:]<network> <container> [device name]
-    Remove a network interface connecting the network to a specified profile.
+	// Unset
+	networkUnsetCmd := cmdNetworkUnset{global: c.global, network: c, networkSet: &networkSetCmd}
+	cmd.AddCommand(networkUnsetCmd.Command())
 
-*Examples*
-cat network.yaml | lxc network edit <network>
-    Update a network using the content of network.yaml`)
+	return cmd
 }
 
-func (c *networkCmd) flags() {
-	gnuflag.StringVar(&c.target, "target", "", i18n.G("Node name"))
+// Attach
+type cmdNetworkAttach struct {
+	global  *cmdGlobal
+	network *cmdNetwork
 }
 
-func (c *networkCmd) run(conf *config.Config, args []string) error {
-	if len(args) < 1 {
-		return errUsage
-	}
+func (c *cmdNetworkAttach) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("attach [<remote>:]<network> <container> [device name] [interface name]")
+	cmd.Short = i18n.G("Attach network interfaces to containers")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Attach new network interfaces to containers`))
 
-	if args[0] == "list" {
-		return c.doNetworkList(conf, args)
-	}
+	cmd.RunE = c.Run
 
-	if len(args) < 2 {
-		return errArgs
-	}
+	return cmd
+}
 
-	remote, network, err := conf.ParseRemote(args[1])
-	if err != nil {
+func (c *cmdNetworkAttach) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 2, 4)
+	if exit {
 		return err
 	}
 
-	client, err := conf.GetContainerServer(remote)
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
 	if err != nil {
 		return err
 	}
 
-	switch args[0] {
-	case "attach":
-		return c.doNetworkAttach(client, network, args[2:])
-	case "attach-profile":
-		return c.doNetworkAttachProfile(client, network, args[2:])
-	case "create":
-		return c.doNetworkCreate(client, network, args[2:])
-	case "delete":
-		return c.doNetworkDelete(client, network)
-	case "detach":
-		return c.doNetworkDetach(client, network, args[2:])
-	case "detach-profile":
-		return c.doNetworkDetachProfile(client, network, args[2:])
-	case "edit":
-		return c.doNetworkEdit(client, network)
-	case "rename":
-		if len(args) != 3 {
-			return errArgs
-		}
-		return c.doNetworkRename(client, network, args[2])
-	case "get":
-		return c.doNetworkGet(client, network, args[2:])
-	case "list-leases":
-		return c.doNetworkListLeases(client, network)
-	case "set":
-		return c.doNetworkSet(client, network, args[2:])
-	case "unset":
-		return c.doNetworkSet(client, network, args[2:])
-	case "show":
-		return c.doNetworkShow(client, network)
-	default:
-		return errArgs
-	}
-}
+	resource := resources[0]
 
-func (c *networkCmd) doNetworkAttach(client lxd.ContainerServer, name string, args []string) error {
-	if len(args) < 1 || len(args) > 3 {
-		return errArgs
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing network name"))
 	}
 
 	// Default name is same as network
-	devName := name
-	if len(args) > 1 {
-		devName = args[1]
+	devName := resource.name
+	if len(args) > 2 {
+		devName = args[2]
 	}
 
 	// Get the network entry
-	network, _, err := client.GetNetwork(name)
+	network, _, err := resource.server.GetNetwork(resource.name)
 	if err != nil {
 		return err
 	}
@@ -184,19 +144,19 @@ func (c *networkCmd) doNetworkAttach(client lxd.ContainerServer, name string, ar
 	device := map[string]string{
 		"type":    "nic",
 		"nictype": "macvlan",
-		"parent":  name,
+		"parent":  resource.name,
 	}
 
 	if network.Type == "bridge" {
 		device["nictype"] = "bridged"
 	}
 
-	if len(args) > 2 {
-		device["name"] = args[2]
+	if len(args) > 3 {
+		device["name"] = args[3]
 	}
 
 	// Add the device to the container
-	err = containerDeviceAdd(client, args[0], devName, device)
+	err = containerDeviceAdd(resource.server, args[1], devName, device)
 	if err != nil {
 		return err
 	}
@@ -204,19 +164,51 @@ func (c *networkCmd) doNetworkAttach(client lxd.ContainerServer, name string, ar
 	return nil
 }
 
-func (c *networkCmd) doNetworkAttachProfile(client lxd.ContainerServer, name string, args []string) error {
-	if len(args) < 1 || len(args) > 3 {
-		return errArgs
+// Attach profile
+type cmdNetworkAttachProfile struct {
+	global  *cmdGlobal
+	network *cmdNetwork
+}
+
+func (c *cmdNetworkAttachProfile) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("attach-profile [<remote>:]<network> <profile> [device name] [interface name]")
+	cmd.Short = i18n.G("Attach network interfaces to profiles")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Attach network interfaces to profiles`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdNetworkAttachProfile) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 2, 4)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing network name"))
 	}
 
 	// Default name is same as network
-	devName := name
-	if len(args) > 1 {
-		devName = args[1]
+	devName := resource.name
+	if len(args) > 2 {
+		devName = args[2]
 	}
 
 	// Get the network entry
-	network, _, err := client.GetNetwork(name)
+	network, _, err := resource.server.GetNetwork(resource.name)
 	if err != nil {
 		return err
 	}
@@ -225,19 +217,19 @@ func (c *networkCmd) doNetworkAttachProfile(client lxd.ContainerServer, name str
 	device := map[string]string{
 		"type":    "nic",
 		"nictype": "macvlan",
-		"parent":  name,
+		"parent":  resource.name,
 	}
 
 	if network.Type == "bridge" {
 		device["nictype"] = "bridged"
 	}
 
-	if len(args) > 2 {
-		device["name"] = args[2]
+	if len(args) > 3 {
+		device["name"] = args[3]
 	}
 
 	// Add the device to the profile
-	err = profileDeviceAdd(client, args[0], devName, device)
+	err = profileDeviceAdd(resource.server, args[1], devName, device)
 	if err != nil {
 		return err
 	}
@@ -245,15 +237,50 @@ func (c *networkCmd) doNetworkAttachProfile(client lxd.ContainerServer, name str
 	return nil
 }
 
-func (c *networkCmd) doNetworkCreate(client lxd.ContainerServer, name string, args []string) error {
+// Create
+type cmdNetworkCreate struct {
+	global  *cmdGlobal
+	network *cmdNetwork
+}
+
+func (c *cmdNetworkCreate) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("create [<remote>:]<network> [key=value...]")
+	cmd.Short = i18n.G("Create new networks")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Create new networks`))
+
+	cmd.Flags().StringVar(&c.network.flagTarget, "target", "", i18n.G("Cluster member name")+"``")
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdNetworkCreate) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, -1)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+	client := resource.server
+
+	// Create the network
 	network := api.NetworksPost{}
-	network.Name = name
+	network.Name = resource.name
 	network.Config = map[string]string{}
 
-	for i := 0; i < len(args); i++ {
+	for i := 1; i < len(args); i++ {
 		entry := strings.SplitN(args[i], "=", 2)
 		if len(entry) < 2 {
-			return errArgs
+			return fmt.Errorf(i18n.G("Bad key/value pair: %s"), args[i])
 		}
 
 		network.Config[entry[0]] = entry[1]
@@ -261,36 +288,117 @@ func (c *networkCmd) doNetworkCreate(client lxd.ContainerServer, name string, ar
 
 	// If a target node was specified the API won't actually create the
 	// network, but only define it as pending in the database.
-	if c.target != "" {
-		client = client.UseTarget(c.target)
+	if c.network.flagTarget != "" {
+		client = client.UseTarget(c.network.flagTarget)
 	}
 
-	err := client.CreateNetwork(network)
+	err = client.CreateNetwork(network)
 	if err != nil {
 		return err
 	}
 
-	if c.target != "" {
-		fmt.Printf(i18n.G("Network %s pending on node %s")+"\n", name, c.target)
+	if c.network.flagTarget != "" {
+		fmt.Printf(i18n.G("Network %s pending on node %s")+"\n", resource.name, c.network.flagTarget)
 	} else {
-		fmt.Printf(i18n.G("Network %s created")+"\n", name)
+		fmt.Printf(i18n.G("Network %s created")+"\n", resource.name)
+	}
+
+	return nil
+}
+
+// Delete
+type cmdNetworkDelete struct {
+	global  *cmdGlobal
+	network *cmdNetwork
+}
+
+func (c *cmdNetworkDelete) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("delete [<remote>:]<network>")
+	cmd.Aliases = []string{"rm"}
+	cmd.Short = i18n.G("Delete networks")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Delete networks`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdNetworkDelete) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, 1)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing network name"))
+	}
+
+	// Delete the network
+	err = resource.server.DeleteNetwork(resource.name)
+	if err != nil {
+		return err
 	}
+
+	fmt.Printf(i18n.G("Network %s deleted")+"\n", resource.name)
 	return nil
 }
 
-func (c *networkCmd) doNetworkDetach(client lxd.ContainerServer, name string, args []string) error {
-	if len(args) < 1 || len(args) > 2 {
-		return errArgs
+// Detach
+type cmdNetworkDetach struct {
+	global  *cmdGlobal
+	network *cmdNetwork
+}
+
+func (c *cmdNetworkDetach) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("detach [<remote>:]<network> <container> [device name]")
+	cmd.Short = i18n.G("Detach network interfaces from containers")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Detach network interfaces from containers`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdNetworkDetach) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 2, 3)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing network name"))
 	}
 
 	// Default name is same as network
 	devName := ""
-	if len(args) > 1 {
-		devName = args[1]
+	if len(args) > 2 {
+		devName = args[2]
 	}
 
 	// Get the container entry
-	container, etag, err := client.GetContainer(args[0])
+	container, etag, err := resource.server.GetContainer(args[1])
 	if err != nil {
 		return err
 	}
@@ -298,7 +406,7 @@ func (c *networkCmd) doNetworkDetach(client lxd.ContainerServer, name string, ar
 	// Find the device
 	if devName == "" {
 		for n, d := range container.Devices {
-			if d["type"] == "nic" && d["parent"] == name {
+			if d["type"] == "nic" && d["parent"] == resource.name {
 				if devName != "" {
 					return fmt.Errorf(i18n.G("More than one device matches, specify the device name."))
 				}
@@ -317,13 +425,13 @@ func (c *networkCmd) doNetworkDetach(client lxd.ContainerServer, name string, ar
 		return fmt.Errorf(i18n.G("The specified device doesn't exist"))
 	}
 
-	if device["type"] != "nic" || device["parent"] != name {
+	if device["type"] != "nic" || device["parent"] != resource.name {
 		return fmt.Errorf(i18n.G("The specified device doesn't match the network"))
 	}
 
 	// Remove the device
 	delete(container.Devices, devName)
-	op, err := client.UpdateContainer(args[0], container.Writable(), etag)
+	op, err := resource.server.UpdateContainer(args[1], container.Writable(), etag)
 	if err != nil {
 		return err
 	}
@@ -331,19 +439,51 @@ func (c *networkCmd) doNetworkDetach(client lxd.ContainerServer, name string, ar
 	return op.Wait()
 }
 
-func (c *networkCmd) doNetworkDetachProfile(client lxd.ContainerServer, name string, args []string) error {
-	if len(args) < 1 || len(args) > 2 {
-		return errArgs
+// Detach profile
+type cmdNetworkDetachProfile struct {
+	global  *cmdGlobal
+	network *cmdNetwork
+}
+
+func (c *cmdNetworkDetachProfile) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("detach-profile [<remote>:]<network> <container> [device name]")
+	cmd.Short = i18n.G("Detach network interfaces from profiles")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Detach network interfaces from profiles`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdNetworkDetachProfile) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 2, 3)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing network name"))
 	}
 
 	// Default name is same as network
 	devName := ""
-	if len(args) > 1 {
-		devName = args[1]
+	if len(args) > 2 {
+		devName = args[2]
 	}
 
 	// Get the profile entry
-	profile, etag, err := client.GetProfile(args[0])
+	profile, etag, err := resource.server.GetProfile(args[1])
 	if err != nil {
 		return err
 	}
@@ -351,7 +491,7 @@ func (c *networkCmd) doNetworkDetachProfile(client lxd.ContainerServer, name str
 	// Find the device
 	if devName == "" {
 		for n, d := range profile.Devices {
-			if d["type"] == "nic" && d["parent"] == name {
+			if d["type"] == "nic" && d["parent"] == resource.name {
 				if devName != "" {
 					return fmt.Errorf(i18n.G("More than one device matches, specify the device name."))
 				}
@@ -370,13 +510,13 @@ func (c *networkCmd) doNetworkDetachProfile(client lxd.ContainerServer, name str
 		return fmt.Errorf(i18n.G("The specified device doesn't exist"))
 	}
 
-	if device["type"] != "nic" || device["parent"] != name {
+	if device["type"] != "nic" || device["parent"] != resource.name {
 		return fmt.Errorf(i18n.G("The specified device doesn't match the network"))
 	}
 
 	// Remove the device
 	delete(profile.Devices, devName)
-	err = client.UpdateProfile(args[0], profile.Writable(), etag)
+	err = resource.server.UpdateProfile(args[1], profile.Writable(), etag)
 	if err != nil {
 		return err
 	}
@@ -384,17 +524,63 @@ func (c *networkCmd) doNetworkDetachProfile(client lxd.ContainerServer, name str
 	return nil
 }
 
-func (c *networkCmd) doNetworkDelete(client lxd.ContainerServer, name string) error {
-	err := client.DeleteNetwork(name)
+// Edit
+type cmdNetworkEdit struct {
+	global  *cmdGlobal
+	network *cmdNetwork
+}
+
+func (c *cmdNetworkEdit) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("edit [<remote>:]<network>")
+	cmd.Short = i18n.G("Edit network configurations as YAML")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Edit network configurations as YAML`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdNetworkEdit) helpTemplate() string {
+	return i18n.G(
+		`### This is a yaml representation of the network.
+### Any line starting with a '# will be ignored.
+###
+### A network consists of a set of configuration items.
+###
+### An example would look like:
+### name: lxdbr0
+### config:
+###   ipv4.address: 10.62.42.1/24
+###   ipv4.nat: true
+###   ipv6.address: fd00:56ad:9f7a:9800::1/64
+###   ipv6.nat: true
+### managed: true
+### type: bridge
+###
+### Note that only the configuration can be changed.`)
+}
+
+func (c *cmdNetworkEdit) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, 1)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
 	if err != nil {
 		return err
 	}
 
-	fmt.Printf(i18n.G("Network %s deleted")+"\n", name)
-	return nil
-}
+	resource := resources[0]
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing network name"))
+	}
 
-func (c *networkCmd) doNetworkEdit(client lxd.ContainerServer, name string) error {
 	// If stdin isn't a terminal, read text from it
 	if !termios.IsTerminal(int(syscall.Stdin)) {
 		contents, err := ioutil.ReadAll(os.Stdin)
@@ -408,11 +594,11 @@ func (c *networkCmd) doNetworkEdit(client lxd.ContainerServer, name string) erro
 			return err
 		}
 
-		return client.UpdateNetwork(name, newdata, "")
+		return resource.server.UpdateNetwork(resource.name, newdata, "")
 	}
 
 	// Extract the current value
-	network, etag, err := client.GetNetwork(name)
+	network, etag, err := resource.server.GetNetwork(resource.name)
 	if err != nil {
 		return err
 	}
@@ -427,7 +613,7 @@ func (c *networkCmd) doNetworkEdit(client lxd.ContainerServer, name string) erro
 	}
 
 	// Spawn the editor
-	content, err := shared.TextEditor("", []byte(c.networkEditHelp()+"\n\n"+string(data)))
+	content, err := shared.TextEditor("", []byte(c.helpTemplate()+"\n\n"+string(data)))
 	if err != nil {
 		return err
 	}
@@ -437,7 +623,7 @@ func (c *networkCmd) doNetworkEdit(client lxd.ContainerServer, name string) erro
 		newdata := api.NetworkPut{}
 		err = yaml.Unmarshal(content, &newdata)
 		if err == nil {
-			err = client.UpdateNetwork(name, newdata, etag)
+			err = resource.server.UpdateNetwork(resource.name, newdata, etag)
 		}
 
 		// Respawn the editor
@@ -461,90 +647,109 @@ func (c *networkCmd) doNetworkEdit(client lxd.ContainerServer, name string) erro
 	return nil
 }
 
-func (c *networkCmd) doNetworkRename(client lxd.ContainerServer, name string, newName string) error {
-	err := client.RenameNetwork(name, api.NetworkPost{Name: newName})
+// Get
+type cmdNetworkGet struct {
+	global  *cmdGlobal
+	network *cmdNetwork
+}
+
+func (c *cmdNetworkGet) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("get [<remote>:]<network> <key>")
+	cmd.Short = i18n.G("Get values for network configuration keys")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Get values for network configuration keys`))
+
+	cmd.Flags().StringVar(&c.network.flagTarget, "target", "", i18n.G("Cluster member name")+"``")
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdNetworkGet) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 2, 2)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
 	if err != nil {
 		return err
 	}
 
-	fmt.Printf(i18n.G("Network %s renamed to %s")+"\n", name, newName)
-	return nil
-}
+	resource := resources[0]
+	client := resource.server
 
-func (c *networkCmd) doNetworkGet(client lxd.ContainerServer, name string, args []string) error {
-	// we shifted @args so so it should read "<key>"
-	if len(args) != 1 {
-		return errArgs
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing network name"))
 	}
 
-	if c.target != "" {
-		client = client.UseTarget(c.target)
+	// Get the network key
+	if c.network.flagTarget != "" {
+		client = client.UseTarget(c.network.flagTarget)
 	}
 
-	resp, _, err := client.GetNetwork(name)
+	resp, _, err := client.GetNetwork(resource.name)
 	if err != nil {
 		return err
 	}
 
 	for k, v := range resp.Config {
-		if k == args[0] {
+		if k == args[1] {
 			fmt.Printf("%s\n", v)
 		}
 	}
+
 	return nil
 }
 
-func (c *networkCmd) doNetworkListLeases(client lxd.ContainerServer, name string) error {
-	leases, err := client.GetNetworkLeases(name)
-	if err != nil {
-		return err
-	}
+// List
+type cmdNetworkList struct {
+	global  *cmdGlobal
+	network *cmdNetwork
+}
 
-	data := [][]string{}
-	for _, lease := range leases {
-		data = append(data, []string{lease.Hostname, lease.Hwaddr, lease.Address, strings.ToUpper(lease.Type)})
-	}
+func (c *cmdNetworkList) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("list [<remote>:]")
+	cmd.Aliases = []string{"ls"}
+	cmd.Short = i18n.G("List available networks")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`List available networks`))
 
-	table := tablewriter.NewWriter(os.Stdout)
-	table.SetAutoWrapText(false)
-	table.SetAlignment(tablewriter.ALIGN_LEFT)
-	table.SetRowLine(true)
-	table.SetHeader([]string{
-		i18n.G("HOSTNAME"),
-		i18n.G("MAC ADDRESS"),
-		i18n.G("IP ADDRESS"),
-		i18n.G("TYPE")})
-	sort.Sort(byName(data))
-	table.AppendBulk(data)
-	table.Render()
+	cmd.RunE = c.Run
 
-	return nil
+	return cmd
 }
 
-func (c *networkCmd) doNetworkList(conf *config.Config, args []string) error {
-	var remote string
-	var err error
-
-	if len(args) > 1 {
-		var name string
-		remote, name, err = conf.ParseRemote(args[1])
-		if err != nil {
-			return err
-		}
+func (c *cmdNetworkList) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 0, 1)
+	if exit {
+		return err
+	}
 
-		if name != "" {
-			return fmt.Errorf(i18n.G("Filtering isn't supported yet"))
-		}
-	} else {
-		remote = conf.DefaultRemote
+	// Parse remote
+	remote := ""
+	if len(args) > 0 {
+		remote = args[0]
 	}
 
-	client, err := conf.GetContainerServer(remote)
+	resources, err := c.global.ParseServers(remote)
 	if err != nil {
 		return err
 	}
 
-	networks, err := client.GetNetworks()
+	resource := resources[0]
+
+	// List the networks
+	if resource.name != "" {
+		return fmt.Errorf(i18n.G("Filtering isn't supported yet"))
+	}
+
+	networks, err := resource.server.GetNetworks()
 	if err != nil {
 		return err
 	}
@@ -562,7 +767,7 @@ func (c *networkCmd) doNetworkList(conf *config.Config, args []string) error {
 
 		strUsedBy := fmt.Sprintf("%d", len(network.UsedBy))
 		details := []string{network.Name, network.Type, strManaged, network.Description, strUsedBy}
-		if client.IsClustered() {
+		if resource.server.IsClustered() {
 			details = append(details, strings.ToUpper(network.Status))
 		}
 		data = append(data, details)
@@ -579,7 +784,7 @@ func (c *networkCmd) doNetworkList(conf *config.Config, args []string) error {
 		i18n.G("DESCRIPTION"),
 		i18n.G("USED BY"),
 	}
-	if client.IsClustered() {
+	if resource.server.IsClustered() {
 		header = append(header, i18n.G("STATE"))
 	}
 	table.SetHeader(header)
@@ -590,13 +795,163 @@ func (c *networkCmd) doNetworkList(conf *config.Config, args []string) error {
 	return nil
 }
 
-func (c *networkCmd) doNetworkSet(client lxd.ContainerServer, name string, args []string) error {
-	// we shifted @args so so it should read "<key> [<value>]"
-	if len(args) < 1 {
-		return errArgs
+// List leases
+type cmdNetworkListLeases struct {
+	global  *cmdGlobal
+	network *cmdNetwork
+}
+
+func (c *cmdNetworkListLeases) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("list-leases [<remote>:]<network>")
+	cmd.Short = i18n.G("List DHCP leases")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`List DHCP leases`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdNetworkListLeases) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, 1)
+	if exit {
+		return err
 	}
 
-	network, etag, err := client.GetNetwork(name)
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing network name"))
+	}
+
+	// List DHCP leases
+	leases, err := resource.server.GetNetworkLeases(resource.name)
+	if err != nil {
+		return err
+	}
+
+	data := [][]string{}
+	for _, lease := range leases {
+		data = append(data, []string{lease.Hostname, lease.Hwaddr, lease.Address, strings.ToUpper(lease.Type)})
+	}
+
+	table := tablewriter.NewWriter(os.Stdout)
+	table.SetAutoWrapText(false)
+	table.SetAlignment(tablewriter.ALIGN_LEFT)
+	table.SetRowLine(true)
+	table.SetHeader([]string{
+		i18n.G("HOSTNAME"),
+		i18n.G("MAC ADDRESS"),
+		i18n.G("IP ADDRESS"),
+		i18n.G("TYPE")})
+	sort.Sort(byName(data))
+	table.AppendBulk(data)
+	table.Render()
+
+	return nil
+}
+
+// Rename
+type cmdNetworkRename struct {
+	global  *cmdGlobal
+	network *cmdNetwork
+}
+
+func (c *cmdNetworkRename) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("rename [<remote>:]<network> <new-name>")
+	cmd.Aliases = []string{"mv"}
+	cmd.Short = i18n.G("Rename networks")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Rename networks`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdNetworkRename) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 2, 2)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing network name"))
+	}
+
+	// Rename the network
+	err = resource.server.RenameNetwork(resource.name, api.NetworkPost{Name: args[1]})
+	if err != nil {
+		return err
+	}
+
+	fmt.Printf(i18n.G("Network %s renamed to %s")+"\n", resource.name, args[1])
+	return nil
+}
+
+// Set
+type cmdNetworkSet struct {
+	global  *cmdGlobal
+	network *cmdNetwork
+}
+
+func (c *cmdNetworkSet) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("set [<remote>:]<network> <key> <value>")
+	cmd.Short = i18n.G("Set network configuration keys")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Set network configuration keys`))
+
+	cmd.Flags().StringVar(&c.network.flagTarget, "target", "", i18n.G("Cluster member name")+"``")
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdNetworkSet) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 3, 3)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+	client := resource.server
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing network name"))
+	}
+
+	// Set the config key
+	if c.network.flagTarget != "" {
+		client = client.UseTarget(c.network.flagTarget)
+	}
+
+	network, etag, err := client.GetNetwork(resource.name)
 	if err != nil {
 		return err
 	}
@@ -605,13 +960,8 @@ func (c *networkCmd) doNetworkSet(client lxd.ContainerServer, name string, args
 		return fmt.Errorf(i18n.G("Only managed networks can be modified."))
 	}
 
-	key := args[0]
-	var value string
-	if len(args) < 2 {
-		value = ""
-	} else {
-		value = args[1]
-	}
+	key := args[1]
+	value := args[2]
 
 	if !termios.IsTerminal(int(syscall.Stdin)) && value == "-" {
 		buf, err := ioutil.ReadAll(os.Stdin)
@@ -623,19 +973,54 @@ func (c *networkCmd) doNetworkSet(client lxd.ContainerServer, name string, args
 
 	network.Config[key] = value
 
-	return client.UpdateNetwork(name, network.Writable(), etag)
+	return client.UpdateNetwork(resource.name, network.Writable(), etag)
 }
 
-func (c *networkCmd) doNetworkShow(client lxd.ContainerServer, name string) error {
-	if name == "" {
-		return errArgs
+// Show
+type cmdNetworkShow struct {
+	global  *cmdGlobal
+	network *cmdNetwork
+}
+
+func (c *cmdNetworkShow) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("show [<remote>:]<network>")
+	cmd.Short = i18n.G("Show network configurations")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Show network configurations`))
+
+	cmd.Flags().StringVar(&c.network.flagTarget, "target", "", i18n.G("Cluster member name")+"``")
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdNetworkShow) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, 1)
+	if exit {
+		return err
 	}
 
-	if c.target != "" {
-		client = client.UseTarget(c.target)
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+	client := resource.server
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing network name"))
 	}
 
-	network, _, err := client.GetNetwork(name)
+	// Show the network config
+	if c.network.flagTarget != "" {
+		client = client.UseTarget(c.network.flagTarget)
+	}
+
+	network, _, err := client.GetNetwork(resource.name)
 	if err != nil {
 		return err
 	}
@@ -651,3 +1036,34 @@ func (c *networkCmd) doNetworkShow(client lxd.ContainerServer, name string) erro
 
 	return nil
 }
+
+// Unset
+type cmdNetworkUnset struct {
+	global     *cmdGlobal
+	network    *cmdNetwork
+	networkSet *cmdNetworkSet
+}
+
+func (c *cmdNetworkUnset) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("unset [<remote>:]<network> <key>")
+	cmd.Short = i18n.G("Unset network configuration keys")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Unset network configuration keys`))
+
+	cmd.Flags().StringVar(&c.network.flagTarget, "target", "", i18n.G("Cluster member name")+"``")
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdNetworkUnset) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 2, 2)
+	if exit {
+		return err
+	}
+
+	args = append(args, "")
+	return c.networkSet.Run(cmd, args)
+}

From caa05946959480c474a2d6fecc83db6f6701807e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Wed, 28 Mar 2018 00:04:37 -0400
Subject: [PATCH 28/39] lxc/image: Port to cobra
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       | 1866 ++++++++++++++++++++++++++--------------------------
 lxc/image_alias.go |  279 ++++++++
 lxc/main.go        |   12 +-
 3 files changed, 1223 insertions(+), 934 deletions(-)
 create mode 100644 lxc/image_alias.go

diff --git a/lxc/image.go b/lxc/image.go
index 5493687e7..151659359 100644
--- a/lxc/image.go
+++ b/lxc/image.go
@@ -14,66 +14,33 @@ import (
 	"syscall"
 
 	"github.com/olekukonko/tablewriter"
+	"github.com/spf13/cobra"
 	"gopkg.in/yaml.v2"
 
 	"github.com/lxc/lxd/client"
-	"github.com/lxc/lxd/lxc/config"
 	"github.com/lxc/lxd/lxc/utils"
 	"github.com/lxc/lxd/shared"
 	"github.com/lxc/lxd/shared/api"
-	"github.com/lxc/lxd/shared/gnuflag"
+	cli "github.com/lxc/lxd/shared/cmd"
 	"github.com/lxc/lxd/shared/i18n"
 	"github.com/lxc/lxd/shared/termios"
 )
 
-type aliasList []string
-
-func (f *aliasList) String() string {
-	return fmt.Sprint(*f)
-}
-
-func (f *aliasList) Set(value string) error {
-	if f == nil {
-		*f = make(aliasList, 1)
-	} else {
-		*f = append(*f, value)
-	}
-	return nil
-}
-
 type imageColumn struct {
 	Name string
 	Data func(api.Image) string
 }
 
-type imageCmd struct {
-	addAliases  aliasList
-	publicImage bool
-	copyAliases bool
-	autoUpdate  bool
-	format      string
-	columnsRaw  string
-}
-
-func (c *imageCmd) showByDefault() bool {
-	return true
-}
-
-func (c *imageCmd) imageEditHelp() string {
-	return i18n.G(
-		`### This is a yaml representation of the image properties.
-### Any line starting with a '# will be ignored.
-###
-### Each property is represented by a single line:
-### An example would be:
-###  description: My custom image`)
+type cmdImage struct {
+	global *cmdGlobal
 }
 
-func (c *imageCmd) usage() string {
-	return i18n.G(
-		`Usage: lxc image <subcommand> [options]
-
-Manipulate container images.
+func (c *cmdImage) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("image")
+	cmd.Short = i18n.G("Manage images")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Manage images
 
 In LXD containers are created from images. Those images were themselves
 either generated from an existing container or downloaded from an image
@@ -87,952 +54,946 @@ as a compressed tarball (or for split images, the concatenation of the
 metadata and rootfs tarballs).
 
 Images can be referenced by their full hash, shortest unique partial
-hash or alias name (if one is set).
-
-
-lxc image import <tarball>|<dir> [<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) or an image directory into the LXD image store.
-    Directory import is only available on Linux and must be performed as root.
+hash or alias name (if one is set).`))
 
-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.
+	// Alias
+	imageAliasCmd := cmdImageAlias{global: c.global, image: c}
+	cmd.AddCommand(imageAliasCmd.Command())
 
-    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.
+	// Copy
+	imageCopyCmd := cmdImageCopy{global: c.global, image: c}
+	cmd.AddCommand(imageCopyCmd.Command())
 
-lxc image delete [<remote>:]<image> [[<remote>:]<image>...]
-    Delete one or more images from the LXD image store.
+	// Delete
+	imageDeleteCmd := cmdImageDelete{global: c.global, image: c}
+	cmd.AddCommand(imageDeleteCmd.Command())
 
-lxc image refresh [<remote>:]<image> [[<remote>:]<image>...]
-    Refresh one or more images from its parent remote.
+	// Edit
+	imageEditCmd := cmdImageEdit{global: c.global, image: c}
+	cmd.AddCommand(imageEditCmd.Command())
 
-lxc image export [<remote>:]<image> [target]
-    Export an image from the LXD image store into a distributable tarball.
+	// Export
+	imageExportCmd := cmdImageExport{global: c.global, image: c}
+	cmd.AddCommand(imageExportCmd.Command())
 
-    The output target is optional and defaults to the working directory.
-    The target may be an existing directory, file name, or "-" to specify
-    stdout.  The target MUST be a directory when exporting a split image.
-    If the target is a directory, the image's name (each part's name for
-    split images) as found in the database will be used for the exported
-    image.  If the target is a file (not a directory and not stdout), then
-    the appropriate extension will be appended to the provided file name
-    based on the algorithm used to compress the image.
+	// Import
+	imageImportCmd := cmdImageImport{global: c.global, image: c}
+	cmd.AddCommand(imageImportCmd.Command())
 
-lxc image info [<remote>:]<image>
-    Print everything LXD knows about a given image.
+	// Info
+	imageInfoCmd := cmdImageInfo{global: c.global, image: c}
+	cmd.AddCommand(imageInfoCmd.Command())
 
-lxc image list [<remote>:] [filter] [--format csv|json|table|yaml] [-c <columns>]
-    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.
+	// List
+	imageListCmd := cmdImageList{global: c.global, image: c}
+	cmd.AddCommand(imageListCmd.Command())
 
-    The -c option takes a (optionally comma-separated) list of arguments that
-    control which image attributes to output when displaying in table or csv
-    format.
+	// Refresh
+	imageRefreshCmd := cmdImageRefresh{global: c.global, image: c}
+	cmd.AddCommand(imageRefreshCmd.Command())
 
-    Default column layout is: lfpdasu
+	// Show
+	imageShowCmd := cmdImageShow{global: c.global, image: c}
+	cmd.AddCommand(imageShowCmd.Command())
 
-    Column shorthand chars:
-
-        l - Shortest image alias (and optionally number of other aliases)
-
-        L - Newline-separated list of all image aliases
+	return cmd
+}
 
-        f - Fingerprint
+func (c *cmdImage) dereferenceAlias(d lxd.ImageServer, inName string) string {
+	if inName == "" {
+		inName = "default"
+	}
 
-        p - Whether image is public
+	result, _, _ := d.GetImageAlias(inName)
+	if result == nil {
+		return inName
+	}
 
-        d - Description
+	return result.Target
+}
 
-        a - Architecture
+// Copy
+type cmdImageCopy struct {
+	global *cmdGlobal
+	image  *cmdImage
 
-        s - Size
+	flagAliases     []string
+	flagPublic      bool
+	flagCopyAliases bool
+	flagAutoUpdate  bool
+}
 
-        u - Upload date
+func (c *cmdImageCopy) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("copy [<remote>:]<image> <remote>:")
+	cmd.Aliases = []string{"cp"}
+	cmd.Short = i18n.G("Copy images between servers")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Copy images between servers
 
-lxc image show [<remote>:]<image>
-    Yaml output of the user modifiable properties of an image.
+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 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
+	cmd.Flags().BoolVar(&c.flagPublic, "public", false, i18n.G("Make image public"))
+	cmd.Flags().BoolVar(&c.flagCopyAliases, "copy-aliases", false, i18n.G("Copy aliases from source"))
+	cmd.Flags().BoolVar(&c.flagAutoUpdate, "auto-update", false, i18n.G("Keep the image up to date after initial copy"))
+	cmd.Flags().StringArrayVar(&c.flagAliases, "alias", nil, i18n.G("New aliases to add to the image")+"``")
+	cmd.RunE = c.Run
 
-lxc image alias create [<remote>:]<alias> <fingerprint>
-    Create a new alias for an existing image.
+	return cmd
+}
 
-lxc image alias rename [<remote>:]<alias> <new-name>
-    Rename an alias.
+func (c *cmdImageCopy) Run(cmd *cobra.Command, args []string) error {
+	conf := c.global.conf
 
-lxc image alias delete [<remote>:]<alias>
-    Delete an alias.
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 2, 2)
+	if exit {
+		return err
+	}
 
-lxc image alias list [<remote>:] [filter]
-    List the aliases. Filters may be part of the image hash or part of the image alias name.`)
-}
+	// Parse source remote
+	remoteName, name, err := c.global.conf.ParseRemote(args[0])
+	if err != nil {
+		return err
+	}
 
-func (c *imageCmd) flags() {
-	gnuflag.StringVar(&c.columnsRaw, "c", "lfpdasu", i18n.G("Columns"))
-	gnuflag.StringVar(&c.columnsRaw, "columns", "lfpdasu", i18n.G("Columns"))
-	gnuflag.BoolVar(&c.publicImage, "public", false, i18n.G("Make image public"))
-	gnuflag.BoolVar(&c.copyAliases, "copy-aliases", false, i18n.G("Copy aliases from source"))
-	gnuflag.BoolVar(&c.autoUpdate, "auto-update", false, i18n.G("Keep the image up to date after initial copy"))
-	gnuflag.Var(&c.addAliases, "alias", i18n.G("New alias to define at target"))
-	gnuflag.StringVar(&c.format, "format", "table", i18n.G("Format (csv|json|table|yaml)"))
-}
+	sourceServer, err := c.global.conf.GetImageServer(remoteName)
+	if err != nil {
+		return err
+	}
 
-func (c *imageCmd) aliasColumnData(image api.Image) string {
-	shortest := c.shortestAlias(image.Aliases)
-	if len(image.Aliases) > 1 {
-		shortest = fmt.Sprintf(i18n.G("%s (%d more)"), shortest, len(image.Aliases)-1)
+	// Parse destination remote
+	resources, err := c.global.ParseServers(args[1])
+	if err != nil {
+		return err
 	}
 
-	return shortest
-}
+	destinationServer := resources[0].server
 
-func (c *imageCmd) aliasesColumnData(image api.Image) string {
-	aliases := []string{}
-	for _, alias := range image.Aliases {
-		aliases = append(aliases, alias.Name)
+	if resources[0].name != "" {
+		return fmt.Errorf(i18n.G("Can't provide a name for the target image"))
 	}
-	sort.Strings(aliases)
-	return strings.Join(aliases, "\n")
-}
 
-func (c *imageCmd) fingerprintColumnData(image api.Image) string {
-	return image.Fingerprint[0:12]
-}
+	// Copy the image
+	var imgInfo *api.Image
+	var fp string
+	if conf.Remotes[remoteName].Protocol == "simplestreams" && !c.flagCopyAliases && len(c.flagAliases) == 0 {
+		// All simplestreams images are always public, so unless we
+		// need the aliases list too or the real fingerprint, we can skip the otherwise very expensive
+		// alias resolution and image info retrieval step.
+		imgInfo = &api.Image{}
+		imgInfo.Fingerprint = name
+		imgInfo.Public = true
+	} else {
+		// Resolve any alias and then grab the image information from the source
+		image := c.image.dereferenceAlias(sourceServer, name)
+		imgInfo, _, err = sourceServer.GetImage(image)
+		if err != nil {
+			return err
+		}
 
-func (c *imageCmd) publicColumnData(image api.Image) string {
-	if image.Public {
-		return i18n.G("yes")
+		// Store the fingerprint for use when creating aliases later (as imgInfo.Fingerprint may be overridden)
+		fp = imgInfo.Fingerprint
 	}
-	return i18n.G("no")
-}
 
-func (c *imageCmd) descriptionColumnData(image api.Image) string {
-	return c.findDescription(image.Properties)
-}
+	if imgInfo.Public && imgInfo.Fingerprint != name && !strings.HasPrefix(imgInfo.Fingerprint, name) {
+		// If dealing with an alias, set the imgInfo fingerprint to match the provided alias (needed for auto-update)
+		imgInfo.Fingerprint = name
+	}
 
-func (c *imageCmd) architectureColumnData(image api.Image) string {
-	return image.Architecture
-}
+	copyArgs := lxd.ImageCopyArgs{
+		AutoUpdate: c.flagAutoUpdate,
+		Public:     c.flagPublic,
+	}
 
-func (c *imageCmd) sizeColumnData(image api.Image) string {
-	return fmt.Sprintf("%.2fMB", float64(image.Size)/1024.0/1024.0)
-}
+	// Do the copy
+	op, err := destinationServer.CopyImage(sourceServer, *imgInfo, &copyArgs)
+	if err != nil {
+		return err
+	}
 
-func (c *imageCmd) uploadDateColumnData(image api.Image) string {
-	return image.UploadedAt.UTC().Format("Jan 2, 2006 at 3:04pm (MST)")
-}
+	// Register progress handler
+	progress := utils.ProgressRenderer{Format: i18n.G("Copying the image: %s")}
+	_, err = op.AddHandler(progress.UpdateOp)
+	if err != nil {
+		progress.Done("")
+		return err
+	}
 
-func (c *imageCmd) parseColumns() ([]imageColumn, error) {
-	columnsShorthandMap := map[rune]imageColumn{
-		'l': {i18n.G("ALIAS"), c.aliasColumnData},
-		'L': {i18n.G("ALIASES"), c.aliasesColumnData},
-		'f': {i18n.G("FINGERPRINT"), c.fingerprintColumnData},
-		'p': {i18n.G("PUBLIC"), c.publicColumnData},
-		'd': {i18n.G("DESCRIPTION"), c.descriptionColumnData},
-		'a': {i18n.G("ARCH"), c.architectureColumnData},
-		's': {i18n.G("SIZE"), c.sizeColumnData},
-		'u': {i18n.G("UPLOAD DATE"), c.uploadDateColumnData},
+	// Wait for operation to finish
+	err = utils.CancelableWait(op, &progress)
+	if err != nil {
+		progress.Done("")
+		return err
 	}
 
-	columnList := strings.Split(c.columnsRaw, ",")
+	progress.Done(i18n.G("Image copied successfully!"))
 
-	columns := []imageColumn{}
-	for _, columnEntry := range columnList {
-		if columnEntry == "" {
-			return nil, fmt.Errorf("Empty column entry (redundant, leading or trailing command) in '%s'", c.columnsRaw)
-		}
+	// Ensure aliases
+	aliases := make([]api.ImageAlias, len(c.flagAliases))
+	for i, entry := range c.flagAliases {
+		aliases[i].Name = entry
+	}
 
-		for _, columnRune := range columnEntry {
-			if column, ok := columnsShorthandMap[columnRune]; ok {
-				columns = append(columns, column)
-			} else {
-				return nil, fmt.Errorf("Unknown column shorthand char '%c' in '%s'", columnRune, columnEntry)
-			}
+	if c.flagCopyAliases {
+		// Also add the original aliases
+		for _, alias := range imgInfo.Aliases {
+			aliases = append(aliases, alias)
 		}
 	}
 
-	return columns, nil
+	err = ensureImageAliases(destinationServer, aliases, fp)
+	return err
 }
 
-func (c *imageCmd) doImageAlias(conf *config.Config, args []string) error {
-	var remote string
-	var err error
-
-	switch args[1] {
-	case "list":
-		filters := []string{}
+// Delete
+type cmdImageDelete struct {
+	global *cmdGlobal
+	image  *cmdImage
+}
 
-		if len(args) > 2 {
-			result := strings.SplitN(args[2], ":", 2)
-			if len(result) == 1 {
-				filters = append(filters, args[2])
-				remote, _, err = conf.ParseRemote("")
-				if err != nil {
-					return err
-				}
-			} else {
-				remote, _, err = conf.ParseRemote(args[2])
-				if err != nil {
-					return err
-				}
-			}
-		} else {
-			remote, _, err = conf.ParseRemote("")
-			if err != nil {
-				return err
-			}
-		}
+func (c *cmdImageDelete) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("delete [<remote>:]<image> [[<remote>:]<image>...]")
+	cmd.Aliases = []string{"rm"}
+	cmd.Short = i18n.G("Delete images")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Delete images`))
 
-		if len(args) > 3 {
-			for _, filter := range args[3:] {
-				filters = append(filters, filter)
-			}
-		}
+	cmd.RunE = c.Run
 
-		d, err := conf.GetImageServer(remote)
-		if err != nil {
-			return err
-		}
+	return cmd
+}
 
-		resp, err := d.GetImageAliases()
-		if err != nil {
-			return err
-		}
+func (c *cmdImageDelete) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, -1)
+	if exit {
+		return err
+	}
 
-		c.showAliases(resp, filters)
+	// Parse remote
+	resources, err := c.global.ParseServers(args...)
+	if err != nil {
+		return err
+	}
 
-		return nil
-	case "create":
-		/* alias create [<remote>:]<alias> <target> */
-		if len(args) < 4 {
-			return errArgs
+	for _, resource := range resources {
+		if resource.name == "" {
+			return fmt.Errorf(i18n.G("Image identifier missing"))
 		}
 
-		remote, name, err := conf.ParseRemote(args[2])
+		image := c.image.dereferenceAlias(resource.server, resource.name)
+		op, err := resource.server.DeleteImage(image)
 		if err != nil {
 			return err
 		}
 
-		d, err := conf.GetContainerServer(remote)
+		err = op.Wait()
 		if err != nil {
 			return err
 		}
+	}
 
-		alias := api.ImageAliasesPost{}
-		alias.Name = name
-		alias.Target = args[3]
+	return nil
+}
 
-		return d.CreateImageAlias(alias)
-	case "rename":
-		/* alias rename [<remote>:]<alias> <newname> */
-		if len(args) < 4 {
-			return errArgs
-		}
-		remote, alias, err := conf.ParseRemote(args[2])
-		if err != nil {
-			return err
-		}
+// Edit
+type cmdImageEdit struct {
+	global *cmdGlobal
+	image  *cmdImage
+}
 
-		d, err := conf.GetContainerServer(remote)
-		if err != nil {
-			return err
-		}
+func (c *cmdImageEdit) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("edit [<remote>:]<image>")
+	cmd.Short = i18n.G("Edit image properties")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Edit image properties`))
+	cmd.Example = cli.FormatSection("", i18n.G(
+		`lxc image edit <image>
+    Launch a text editor to edit the properties
 
-		return d.RenameImageAlias(alias, api.ImageAliasesEntryPost{Name: args[3]})
-	case "delete":
-		/* alias delete [<remote>:]<alias> */
-		if len(args) < 3 {
-			return errArgs
-		}
+lxc image edit <image> < image.yaml
+    Load the image properties from a YAML file`))
 
-		remote, alias, err := conf.ParseRemote(args[2])
-		if err != nil {
-			return err
-		}
+	cmd.RunE = c.Run
 
-		d, err := conf.GetContainerServer(remote)
-		if err != nil {
-			return err
-		}
+	return cmd
+}
 
-		return d.DeleteImageAlias(alias)
-	}
-	return errArgs
+func (c *cmdImageEdit) helpTemplate() string {
+	return i18n.G(
+		`### This is a yaml representation of the image properties.
+### Any line starting with a '# will be ignored.
+###
+### Each property is represented by a single line:
+### An example would be:
+###  description: My custom image`)
 }
 
-func (c *imageCmd) run(conf *config.Config, args []string) error {
-	var remote string
+func (c *cmdImageEdit) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, 1)
+	if exit {
+		return err
+	}
 
-	if len(args) < 1 {
-		return errUsage
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
 	}
 
-	switch args[0] {
-	case "alias":
-		if len(args) < 2 {
-			return errArgs
-		}
-		return c.doImageAlias(conf, args)
+	resource := resources[0]
 
-	case "copy":
-		/* copy [<remote>:]<image> [<remote>:]<image> */
-		if len(args) != 3 {
-			return errArgs
-		}
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Image identifier missing: %s"), args[0])
+	}
+
+	// Resolve any aliases
+	image := c.image.dereferenceAlias(resource.server, resource.name)
+	if image == "" {
+		image = resource.name
+	}
 
-		remote, inName, err := conf.ParseRemote(args[1])
+	// If stdin isn't a terminal, read text from it
+	if !termios.IsTerminal(int(syscall.Stdin)) {
+		contents, err := ioutil.ReadAll(os.Stdin)
 		if err != nil {
 			return err
 		}
 
-		destRemote, outName, err := conf.ParseRemote(args[2])
+		newdata := api.ImagePut{}
+		err = yaml.Unmarshal(contents, &newdata)
 		if err != nil {
 			return err
 		}
 
-		if outName != "" {
-			return errArgs
-		}
+		return resource.server.UpdateImage(image, newdata, "")
+	}
 
-		d, err := conf.GetImageServer(remote)
-		if err != nil {
-			return err
+	// Extract the current value
+	imgInfo, etag, err := resource.server.GetImage(image)
+	if err != nil {
+		return err
+	}
+
+	brief := imgInfo.Writable()
+	data, err := yaml.Marshal(&brief)
+	if err != nil {
+		return err
+	}
+
+	// Spawn the editor
+	content, err := shared.TextEditor("", []byte(c.helpTemplate()+"\n\n"+string(data)))
+	if err != nil {
+		return err
+	}
+
+	for {
+		// Parse the text received from the editor
+		newdata := api.ImagePut{}
+		err = yaml.Unmarshal(content, &newdata)
+		if err == nil {
+			err = resource.server.UpdateImage(image, newdata, etag)
 		}
 
-		dest, err := conf.GetContainerServer(destRemote)
+		// Respawn the editor
 		if err != nil {
-			return err
-		}
+			fmt.Fprintf(os.Stderr, i18n.G("Config parsing error: %s")+"\n", err)
+			fmt.Println(i18n.G("Press enter to start the editor again"))
 
-		var imgInfo *api.Image
-		var fp string
-		if conf.Remotes[remote].Protocol == "simplestreams" && !c.copyAliases && len(c.addAliases) == 0 {
-			// All simplestreams images are always public, so unless we
-			// need the aliases list too or the real fingerprint, we can skip the otherwise very expensive
-			// alias resolution and image info retrieval step.
-			imgInfo = &api.Image{}
-			imgInfo.Fingerprint = inName
-			imgInfo.Public = true
-		} else {
-			// Resolve any alias and then grab the image information from the source
-			image := c.dereferenceAlias(d, inName)
-			imgInfo, _, err = d.GetImage(image)
+			_, err := os.Stdin.Read(make([]byte, 1))
 			if err != nil {
 				return err
 			}
 
-			// Store the fingerprint for use when creating aliases later (as imgInfo.Fingerprint may be overridden)
-			fp = imgInfo.Fingerprint
+			content, err = shared.TextEditor("", content)
+			if err != nil {
+				return err
+			}
+			continue
 		}
+		break
+	}
 
-		if imgInfo.Public && imgInfo.Fingerprint != inName && !strings.HasPrefix(imgInfo.Fingerprint, inName) {
-			// If dealing with an alias, set the imgInfo fingerprint to match the provided alias (needed for auto-update)
-			imgInfo.Fingerprint = inName
-		}
+	return nil
+}
 
-		args := lxd.ImageCopyArgs{
-			AutoUpdate: c.autoUpdate,
-			Public:     c.publicImage,
-		}
+// Export
+type cmdImageExport struct {
+	global *cmdGlobal
+	image  *cmdImage
+}
 
-		// Do the copy
-		op, err := dest.CopyImage(d, *imgInfo, &args)
-		if err != nil {
-			return err
-		}
+func (c *cmdImageExport) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("export [<remote>:]<image> [target]")
+	cmd.Short = i18n.G("Export and download images")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Export and download images
 
-		// Register progress handler
-		progress := utils.ProgressRenderer{Format: i18n.G("Copying the image: %s")}
-		_, err = op.AddHandler(progress.UpdateOp)
-		if err != nil {
-			progress.Done("")
-			return err
-		}
+The output target is optional and defaults to the working directory.`))
 
-		// Wait for operation to finish
-		err = utils.CancelableWait(op, &progress)
-		if err != nil {
-			progress.Done("")
-			return err
-		}
+	cmd.RunE = c.Run
 
-		progress.Done(i18n.G("Image copied successfully!"))
+	return cmd
+}
 
-		// Ensure aliases
-		aliases := make([]api.ImageAlias, len(c.addAliases))
-		for i, entry := range c.addAliases {
-			aliases[i].Name = entry
-		}
-		if c.copyAliases {
-			// Also add the original aliases
-			for _, alias := range imgInfo.Aliases {
-				aliases = append(aliases, alias)
-			}
-		}
-		err = ensureImageAliases(dest, aliases, fp)
+func (c *cmdImageExport) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, 2)
+	if exit {
 		return err
+	}
 
-	case "delete":
-		/* delete [<remote>:]<image> [<remote>:][<image>...] */
-		if len(args) < 2 {
-			return errArgs
-		}
-
-		for _, arg := range args[1:] {
-			var err error
-			remote, inName, err := conf.ParseRemote(arg)
-			if err != nil {
-				return err
-			}
+	// Parse remote
+	remoteName, name, err := c.global.conf.ParseRemote(args[0])
+	if err != nil {
+		return err
+	}
 
-			d, err := conf.GetContainerServer(remote)
-			if err != nil {
-				return err
-			}
+	remoteServer, err := c.global.conf.GetImageServer(remoteName)
+	if err != nil {
+		return err
+	}
 
-			image := c.dereferenceAlias(d, inName)
-			op, err := d.DeleteImage(image)
-			if err != nil {
-				return err
-			}
+	// Resolve aliases
+	fingerprint := c.image.dereferenceAlias(remoteServer, name)
 
-			err = op.Wait()
-			if err != nil {
-				return err
-			}
+	// Default target is current directory
+	target := "."
+	targetMeta := fingerprint
+	if len(args) > 1 {
+		target = args[1]
+		if shared.IsDir(args[1]) {
+			targetMeta = filepath.Join(args[1], targetMeta)
+		} else {
+			targetMeta = args[1]
 		}
+	}
+	targetMeta = shared.HostPath(targetMeta)
+	targetRootfs := targetMeta + ".root"
+
+	// Prepare the files
+	dest, err := os.Create(targetMeta)
+	if err != nil {
+		return err
+	}
+	defer dest.Close()
 
-		return nil
+	destRootfs, err := os.Create(targetRootfs)
+	if err != nil {
+		return err
+	}
+	defer destRootfs.Close()
+
+	// Prepare the download request
+	progress := utils.ProgressRenderer{Format: i18n.G("Exporting the image: %s")}
+	req := lxd.ImageFileRequest{
+		MetaFile:        io.WriteSeeker(dest),
+		RootfsFile:      io.WriteSeeker(destRootfs),
+		ProgressHandler: progress.UpdateProgress,
+	}
 
-	case "refresh":
-		/* refresh [<remote>:]<image> [<remote>:][<image>...] */
-		if len(args) < 2 {
-			return errArgs
+	// Download the image
+	resp, err := remoteServer.GetImageFile(fingerprint, req)
+	if err != nil {
+		os.Remove(targetMeta)
+		os.Remove(targetRootfs)
+		progress.Done("")
+		return err
+	}
+
+	// Cleanup
+	if resp.RootfsSize == 0 {
+		err := os.Remove(targetRootfs)
+		if err != nil {
+			os.Remove(targetMeta)
+			os.Remove(targetRootfs)
+			progress.Done("")
+			return err
 		}
+	}
 
-		for _, arg := range args[1:] {
-			remote, inName, err := conf.ParseRemote(arg)
+	// Rename files
+	if shared.IsDir(target) {
+		if resp.MetaName != "" {
+			err := os.Rename(targetMeta, shared.HostPath(filepath.Join(target, resp.MetaName)))
 			if err != nil {
+				os.Remove(targetMeta)
+				os.Remove(targetRootfs)
+				progress.Done("")
 				return err
 			}
+		}
 
-			d, err := conf.GetContainerServer(remote)
+		if resp.RootfsSize > 0 && resp.RootfsName != "" {
+			err := os.Rename(targetRootfs, shared.HostPath(filepath.Join(target, resp.RootfsName)))
 			if err != nil {
+				os.Remove(targetMeta)
+				os.Remove(targetRootfs)
+				progress.Done("")
 				return err
 			}
-
-			image := c.dereferenceAlias(d, inName)
-			progress := utils.ProgressRenderer{Format: i18n.G("Refreshing the image: %s")}
-			op, err := d.RefreshImage(image)
+		}
+	} else if resp.RootfsSize == 0 && len(args) > 1 {
+		if resp.MetaName != "" {
+			extension := strings.SplitN(resp.MetaName, ".", 2)[1]
+			err := os.Rename(targetMeta, fmt.Sprintf("%s.%s", targetMeta, extension))
 			if err != nil {
+				os.Remove(targetMeta)
+				progress.Done("")
 				return err
 			}
+		}
+	}
 
-			// Register progress handler
-			_, err = op.AddHandler(progress.UpdateOp)
-			if err != nil {
-				return err
-			}
+	progress.Done(i18n.G("Image exported successfully!"))
+	return nil
+}
 
-			// Wait for the refresh to happen
-			err = op.Wait()
-			if err != nil {
-				return err
-			}
-			opAPI := op.Get()
+// Import
+type cmdImageImport struct {
+	global *cmdGlobal
+	image  *cmdImage
 
-			// Check if refreshed
-			refreshed := false
-			flag, ok := opAPI.Metadata["refreshed"]
-			if ok {
-				refreshed = flag.(bool)
-			}
+	flagPublic  bool
+	flagAliases []string
+}
 
-			if refreshed {
-				progress.Done(i18n.G("Image refreshed successfully!"))
-			} else {
-				progress.Done(i18n.G("Image already up to date."))
-			}
-		}
+func (c *cmdImageImport) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("import <tarball>|<directory>|<URL> [<rootfs tarball>] [<remote>:] [key=value...]")
+	cmd.Short = i18n.G("Import images into the image store")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Import image into the image store
 
-		return nil
+Directory import is only available on Linux and must be performed as root.`))
 
-	case "info":
-		if len(args) < 2 {
-			return errArgs
-		}
+	cmd.Flags().BoolVar(&c.flagPublic, "public", false, i18n.G("Make image public"))
+	cmd.Flags().StringArrayVar(&c.flagAliases, "alias", nil, i18n.G("New aliases to add to the image")+"``")
+	cmd.RunE = c.Run
 
-		remote, inName, err := conf.ParseRemote(args[1])
-		if err != nil {
-			return err
-		}
+	return cmd
+}
 
-		d, err := conf.GetImageServer(remote)
-		if err != nil {
-			return err
-		}
+func (c *cmdImageImport) packImageDir(path string) (string, error) {
+	// Sanity checks
+	if os.Geteuid() == -1 {
+		return "", fmt.Errorf(i18n.G("Directory import is not available on this platform"))
+	} else if os.Geteuid() != 0 {
+		return "", fmt.Errorf(i18n.G("Must run as root to import from directory"))
+	}
 
-		image := c.dereferenceAlias(d, inName)
-		info, _, err := d.GetImage(image)
-		if err != nil {
-			return err
-		}
+	outFile, err := ioutil.TempFile("", "lxd_image_")
+	if err != nil {
+		return "", err
+	}
+	defer outFile.Close()
 
-		public := i18n.G("no")
-		if info.Public {
-			public = i18n.G("yes")
-		}
+	outFileName := outFile.Name()
+	shared.RunCommand("tar", "-C", path, "--numeric-owner", "-cJf", outFileName, "rootfs", "templates", "metadata.yaml")
 
-		cached := i18n.G("no")
-		if info.Cached {
-			cached = i18n.G("yes")
-		}
+	return outFileName, nil
+}
 
-		autoUpdate := i18n.G("disabled")
-		if info.AutoUpdate {
-			autoUpdate = i18n.G("enabled")
-		}
+func (c *cmdImageImport) Run(cmd *cobra.Command, args []string) error {
+	conf := c.global.conf
 
-		fmt.Printf(i18n.G("Fingerprint: %s")+"\n", info.Fingerprint)
-		fmt.Printf(i18n.G("Size: %.2fMB")+"\n", float64(info.Size)/1024.0/1024.0)
-		fmt.Printf(i18n.G("Architecture: %s")+"\n", info.Architecture)
-		fmt.Printf(i18n.G("Public: %s")+"\n", public)
-		fmt.Printf(i18n.G("Timestamps:") + "\n")
-		const layout = "2006/01/02 15:04 UTC"
-		if shared.TimeIsSet(info.CreatedAt) {
-			fmt.Printf("    "+i18n.G("Created: %s")+"\n", info.CreatedAt.UTC().Format(layout))
-		}
-		fmt.Printf("    "+i18n.G("Uploaded: %s")+"\n", info.UploadedAt.UTC().Format(layout))
-		if shared.TimeIsSet(info.ExpiresAt) {
-			fmt.Printf("    "+i18n.G("Expires: %s")+"\n", info.ExpiresAt.UTC().Format(layout))
-		} else {
-			fmt.Printf("    " + i18n.G("Expires: never") + "\n")
-		}
-		if shared.TimeIsSet(info.LastUsedAt) {
-			fmt.Printf("    "+i18n.G("Last used: %s")+"\n", info.LastUsedAt.UTC().Format(layout))
-		} else {
-			fmt.Printf("    " + i18n.G("Last used: never") + "\n")
-		}
-		fmt.Println(i18n.G("Properties:"))
-		for key, value := range info.Properties {
-			fmt.Printf("    %s: %s\n", key, value)
-		}
-		fmt.Println(i18n.G("Aliases:"))
-		for _, alias := range info.Aliases {
-			if alias.Description != "" {
-				fmt.Printf("    - %s (%s)\n", alias.Name, alias.Description)
-			} else {
-				fmt.Printf("    - %s\n", alias.Name)
-			}
-		}
-		fmt.Printf(i18n.G("Cached: %s")+"\n", cached)
-		fmt.Printf(i18n.G("Auto update: %s")+"\n", autoUpdate)
-		if info.UpdateSource != nil {
-			fmt.Println(i18n.G("Source:"))
-			fmt.Printf("    Server: %s\n", info.UpdateSource.Server)
-			fmt.Printf("    Protocol: %s\n", info.UpdateSource.Protocol)
-			fmt.Printf("    Alias: %s\n", info.UpdateSource.Alias)
-		}
-		return nil
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, -1)
+	if exit {
+		return err
+	}
 
-	case "import":
-		if len(args) < 2 {
-			return errArgs
-		}
+	// Import the image
+	var imageFile string
+	var rootfsFile string
+	var properties []string
+	var remote string
 
-		var imageFile string
-		var rootfsFile string
-		var properties []string
-		var remote string
-
-		for _, arg := range args[1:] {
-			split := strings.Split(arg, "=")
-			if len(split) == 1 || shared.PathExists(shared.HostPath(arg)) {
-				if strings.HasSuffix(arg, ":") {
-					var err error
-					remote, _, err = conf.ParseRemote(arg)
-					if err != nil {
-						return err
-					}
-				} else {
-					if imageFile == "" {
-						imageFile = args[1]
-					} else {
-						rootfsFile = arg
-					}
+	for _, arg := range args {
+		split := strings.Split(arg, "=")
+		if len(split) == 1 || shared.PathExists(shared.HostPath(arg)) {
+			if strings.HasSuffix(arg, ":") {
+				var err error
+				remote, _, err = conf.ParseRemote(arg)
+				if err != nil {
+					return err
 				}
 			} else {
-				properties = append(properties, arg)
+				if imageFile == "" {
+					imageFile = args[0]
+				} else {
+					rootfsFile = arg
+				}
 			}
+		} else {
+			properties = append(properties, arg)
 		}
+	}
 
-		if remote == "" {
-			remote = conf.DefaultRemote
-		}
-
-		if imageFile == "" {
-			imageFile = args[1]
-			properties = properties[1:]
-		}
+	if remote == "" {
+		remote = conf.DefaultRemote
+	}
 
-		if shared.PathExists(shared.HostPath(filepath.Clean(imageFile))) {
-			imageFile = shared.HostPath(filepath.Clean(imageFile))
-		}
+	if imageFile == "" {
+		imageFile = args[0]
+		properties = properties[1:]
+	}
 
-		d, err := conf.GetContainerServer(remote)
-		if err != nil {
-			return err
-		}
+	if shared.PathExists(shared.HostPath(filepath.Clean(imageFile))) {
+		imageFile = shared.HostPath(filepath.Clean(imageFile))
+	}
 
-		if strings.HasPrefix(imageFile, "http://") {
-			return fmt.Errorf(i18n.G("Only https:// is supported for remote image import."))
-		}
+	d, err := conf.GetContainerServer(remote)
+	if err != nil {
+		return err
+	}
 
-		var args *lxd.ImageCreateArgs
-		image := api.ImagesPost{}
-		image.Public = c.publicImage
+	if strings.HasPrefix(imageFile, "http://") {
+		return fmt.Errorf(i18n.G("Only https:// is supported for remote image import."))
+	}
 
-		// Handle aliases
-		aliases := []api.ImageAlias{}
-		for _, entry := range c.addAliases {
-			alias := api.ImageAlias{}
-			alias.Name = entry
-			aliases = append(aliases, alias)
-		}
+	createArgs := &lxd.ImageCreateArgs{}
+	image := api.ImagesPost{}
+	image.Public = c.flagPublic
 
-		// Handle properties
-		for _, entry := range properties {
-			fields := strings.SplitN(entry, "=", 2)
-			if len(fields) < 2 {
-				return fmt.Errorf(i18n.G("Bad property: %s"), entry)
-			}
+	// Handle aliases
+	aliases := []api.ImageAlias{}
+	for _, entry := range c.flagAliases {
+		alias := api.ImageAlias{}
+		alias.Name = entry
+		aliases = append(aliases, alias)
+	}
 
-			if image.Properties == nil {
-				image.Properties = map[string]string{}
-			}
+	// Handle properties
+	for _, entry := range properties {
+		fields := strings.SplitN(entry, "=", 2)
+		if len(fields) < 2 {
+			return fmt.Errorf(i18n.G("Bad property: %s"), entry)
+		}
 
-			image.Properties[strings.TrimSpace(fields[0])] = strings.TrimSpace(fields[1])
+		if image.Properties == nil {
+			image.Properties = map[string]string{}
 		}
 
-		progress := utils.ProgressRenderer{Format: i18n.G("Transferring image: %s")}
-		if strings.HasPrefix(imageFile, "https://") {
-			image.Source = &api.ImagesPostSource{}
-			image.Source.Type = "url"
-			image.Source.Mode = "pull"
-			image.Source.Protocol = "direct"
-			image.Source.URL = imageFile
-		} else {
-			var meta io.ReadCloser
-			var rootfs io.ReadCloser
+		image.Properties[strings.TrimSpace(fields[0])] = strings.TrimSpace(fields[1])
+	}
 
-			// Open meta
-			if shared.IsDir(imageFile) {
-				imageFile, err = packImageDir(imageFile)
-				if err != nil {
-					return err
-				}
-				// remove temp file
-				defer os.Remove(imageFile)
+	progress := utils.ProgressRenderer{Format: i18n.G("Transferring image: %s")}
+	if strings.HasPrefix(imageFile, "https://") {
+		image.Source = &api.ImagesPostSource{}
+		image.Source.Type = "url"
+		image.Source.Mode = "pull"
+		image.Source.Protocol = "direct"
+		image.Source.URL = imageFile
+	} else {
+		var meta io.ReadCloser
+		var rootfs io.ReadCloser
 
-			}
-			meta, err = os.Open(imageFile)
+		// Open meta
+		if shared.IsDir(imageFile) {
+			imageFile, err = c.packImageDir(imageFile)
 			if err != nil {
 				return err
 			}
-			defer meta.Close()
-
-			// Open rootfs
-			if rootfsFile != "" {
-				rootfs, err = os.Open(rootfsFile)
-				if err != nil {
-					return err
-				}
-				defer rootfs.Close()
-			}
-
-			args = &lxd.ImageCreateArgs{
-				MetaFile:        meta,
-				MetaName:        filepath.Base(imageFile),
-				RootfsFile:      rootfs,
-				RootfsName:      filepath.Base(rootfsFile),
-				ProgressHandler: progress.UpdateProgress,
-			}
-			image.Filename = args.MetaName
-		}
+			// remove temp file
+			defer os.Remove(imageFile)
 
-		// Start the transfer
-		op, err := d.CreateImage(image, args)
-		if err != nil {
-			progress.Done("")
-			return err
 		}
-
-		err = op.Wait()
+		meta, err = os.Open(imageFile)
 		if err != nil {
-			progress.Done("")
 			return err
 		}
-		opAPI := op.Get()
+		defer meta.Close()
 
-		// Get the fingerprint
-		fingerprint := opAPI.Metadata["fingerprint"].(string)
-		progress.Done(fmt.Sprintf(i18n.G("Image imported with fingerprint: %s"), fingerprint))
-
-		// Add the aliases
-		if len(c.addAliases) > 0 {
-			aliases := make([]api.ImageAlias, len(c.addAliases))
-			for i, entry := range c.addAliases {
-				aliases[i].Name = entry
-			}
-			err = ensureImageAliases(d, aliases, fingerprint)
+		// Open rootfs
+		if rootfsFile != "" {
+			rootfs, err = os.Open(rootfsFile)
 			if err != nil {
 				return err
 			}
+			defer rootfs.Close()
 		}
-		return nil
 
-	case "list":
-		columns, err := c.parseColumns()
-		if err != nil {
-			return err
+		createArgs = &lxd.ImageCreateArgs{
+			MetaFile:        meta,
+			MetaName:        filepath.Base(imageFile),
+			RootfsFile:      rootfs,
+			RootfsName:      filepath.Base(rootfsFile),
+			ProgressHandler: progress.UpdateProgress,
 		}
+		image.Filename = createArgs.MetaName
+	}
 
-		filters := []string{}
-		if len(args) > 1 {
-			result := strings.SplitN(args[1], ":", 2)
-			if len(result) == 1 {
-				filters = append(filters, args[1])
+	// Start the transfer
+	op, err := d.CreateImage(image, createArgs)
+	if err != nil {
+		progress.Done("")
+		return err
+	}
 
-				remote, _, err = conf.ParseRemote("")
-				if err != nil {
-					return err
-				}
-			} else {
-				var filter string
-				remote, filter, err = conf.ParseRemote(args[1])
-				if err != nil {
-					return err
-				}
+	err = op.Wait()
+	if err != nil {
+		progress.Done("")
+		return err
+	}
+	opAPI := op.Get()
 
-				if filter != "" {
-					filters = append(filters, filter)
-				}
-			}
-		} else {
-			remote, _, err = conf.ParseRemote("")
-			if err != nil {
-				return err
-			}
-		}
+	// Get the fingerprint
+	fingerprint := opAPI.Metadata["fingerprint"].(string)
+	progress.Done(fmt.Sprintf(i18n.G("Image imported with fingerprint: %s"), fingerprint))
 
-		if len(args) > 2 {
-			for _, filter := range args[2:] {
-				filters = append(filters, filter)
-			}
+	// Add the aliases
+	if len(c.flagAliases) > 0 {
+		aliases := make([]api.ImageAlias, len(c.flagAliases))
+		for i, entry := range c.flagAliases {
+			aliases[i].Name = entry
 		}
-
-		d, err := conf.GetImageServer(remote)
+		err = ensureImageAliases(d, aliases, fingerprint)
 		if err != nil {
 			return err
 		}
+	}
 
-		var images []api.Image
-		allImages, err := d.GetImages()
-		if err != nil {
-			return err
-		}
+	return nil
+}
 
-		for _, image := range allImages {
-			if !c.imageShouldShow(filters, &image) {
-				continue
-			}
+// Info
+type cmdImageInfo struct {
+	global *cmdGlobal
+	image  *cmdImage
+}
 
-			images = append(images, image)
-		}
+func (c *cmdImageInfo) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("info [<remote>:]<image>")
+	cmd.Short = i18n.G("Show useful information about images")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Show useful information about images`))
 
-		return c.showImages(images, filters, columns)
+	cmd.RunE = c.Run
 
-	case "edit":
-		if len(args) < 2 {
-			return errArgs
-		}
+	return cmd
+}
 
-		remote, inName, err := conf.ParseRemote(args[1])
-		if err != nil {
-			return err
-		}
+func (c *cmdImageInfo) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, 1)
+	if exit {
+		return err
+	}
 
-		d, err := conf.GetContainerServer(remote)
-		if err != nil {
-			return err
-		}
+	// Parse remote
+	remoteName, name, err := c.global.conf.ParseRemote(args[0])
+	if err != nil {
+		return err
+	}
 
-		image := c.dereferenceAlias(d, inName)
-		if image == "" {
-			image = inName
-		}
+	remoteServer, err := c.global.conf.GetImageServer(remoteName)
+	if err != nil {
+		return err
+	}
 
-		return c.doImageEdit(d, image)
+	// Render info
+	image := c.image.dereferenceAlias(remoteServer, name)
+	info, _, err := remoteServer.GetImage(image)
+	if err != nil {
+		return err
+	}
 
-	case "export":
-		if len(args) < 2 {
-			return errArgs
-		}
+	public := i18n.G("no")
+	if info.Public {
+		public = i18n.G("yes")
+	}
 
-		remote, inName, err := conf.ParseRemote(args[1])
-		if err != nil {
-			return err
-		}
+	cached := i18n.G("no")
+	if info.Cached {
+		cached = i18n.G("yes")
+	}
 
-		d, err := conf.GetImageServer(remote)
-		if err != nil {
-			return err
-		}
+	autoUpdate := i18n.G("disabled")
+	if info.AutoUpdate {
+		autoUpdate = i18n.G("enabled")
+	}
 
-		// Resolve aliases
-		fingerprint := c.dereferenceAlias(d, inName)
+	fmt.Printf(i18n.G("Fingerprint: %s")+"\n", info.Fingerprint)
+	fmt.Printf(i18n.G("Size: %.2fMB")+"\n", float64(info.Size)/1024.0/1024.0)
+	fmt.Printf(i18n.G("Architecture: %s")+"\n", info.Architecture)
+	fmt.Printf(i18n.G("Public: %s")+"\n", public)
+	fmt.Printf(i18n.G("Timestamps:") + "\n")
 
-		// Default target is current directory
-		target := "."
-		targetMeta := fingerprint
-		if len(args) > 2 {
-			target = args[2]
-			if shared.IsDir(args[2]) {
-				targetMeta = filepath.Join(args[2], targetMeta)
-			} else {
-				targetMeta = args[2]
-			}
-		}
-		targetMeta = shared.HostPath(targetMeta)
-		targetRootfs := targetMeta + ".root"
+	const layout = "2006/01/02 15:04 UTC"
+	if shared.TimeIsSet(info.CreatedAt) {
+		fmt.Printf("    "+i18n.G("Created: %s")+"\n", info.CreatedAt.UTC().Format(layout))
+	}
 
-		// Prepare the files
-		dest, err := os.Create(targetMeta)
-		if err != nil {
-			return err
-		}
-		defer dest.Close()
+	fmt.Printf("    "+i18n.G("Uploaded: %s")+"\n", info.UploadedAt.UTC().Format(layout))
 
-		destRootfs, err := os.Create(targetRootfs)
-		if err != nil {
-			return err
-		}
-		defer destRootfs.Close()
+	if shared.TimeIsSet(info.ExpiresAt) {
+		fmt.Printf("    "+i18n.G("Expires: %s")+"\n", info.ExpiresAt.UTC().Format(layout))
+	} else {
+		fmt.Printf("    " + i18n.G("Expires: never") + "\n")
+	}
 
-		// Prepare the download request
-		progress := utils.ProgressRenderer{Format: i18n.G("Exporting the image: %s")}
-		req := lxd.ImageFileRequest{
-			MetaFile:        io.WriteSeeker(dest),
-			RootfsFile:      io.WriteSeeker(destRootfs),
-			ProgressHandler: progress.UpdateProgress,
-		}
+	if shared.TimeIsSet(info.LastUsedAt) {
+		fmt.Printf("    "+i18n.G("Last used: %s")+"\n", info.LastUsedAt.UTC().Format(layout))
+	} else {
+		fmt.Printf("    " + i18n.G("Last used: never") + "\n")
+	}
 
-		// Download the image
-		resp, err := d.GetImageFile(fingerprint, req)
-		if err != nil {
-			os.Remove(targetMeta)
-			os.Remove(targetRootfs)
-			progress.Done("")
-			return err
-		}
+	fmt.Println(i18n.G("Properties:"))
+	for key, value := range info.Properties {
+		fmt.Printf("    %s: %s\n", key, value)
+	}
 
-		// Cleanup
-		if resp.RootfsSize == 0 {
-			err := os.Remove(targetRootfs)
-			if err != nil {
-				os.Remove(targetMeta)
-				os.Remove(targetRootfs)
-				progress.Done("")
-				return err
-			}
+	fmt.Println(i18n.G("Aliases:"))
+	for _, alias := range info.Aliases {
+		if alias.Description != "" {
+			fmt.Printf("    - %s (%s)\n", alias.Name, alias.Description)
+		} else {
+			fmt.Printf("    - %s\n", alias.Name)
 		}
+	}
 
-		// Rename files
-		if shared.IsDir(target) {
-			if resp.MetaName != "" {
-				err := os.Rename(targetMeta, shared.HostPath(filepath.Join(target, resp.MetaName)))
-				if err != nil {
-					os.Remove(targetMeta)
-					os.Remove(targetRootfs)
-					progress.Done("")
-					return err
-				}
-			}
+	fmt.Printf(i18n.G("Cached: %s")+"\n", cached)
+	fmt.Printf(i18n.G("Auto update: %s")+"\n", autoUpdate)
 
-			if resp.RootfsSize > 0 && resp.RootfsName != "" {
-				err := os.Rename(targetRootfs, shared.HostPath(filepath.Join(target, resp.RootfsName)))
-				if err != nil {
-					os.Remove(targetMeta)
-					os.Remove(targetRootfs)
-					progress.Done("")
-					return err
-				}
-			}
-		} else if resp.RootfsSize == 0 && len(args) > 2 {
-			if resp.MetaName != "" {
-				extension := strings.SplitN(resp.MetaName, ".", 2)[1]
-				err := os.Rename(targetMeta, fmt.Sprintf("%s.%s", targetMeta, extension))
-				if err != nil {
-					os.Remove(targetMeta)
-					progress.Done("")
-					return err
-				}
-			}
-		}
+	if info.UpdateSource != nil {
+		fmt.Println(i18n.G("Source:"))
+		fmt.Printf("    Server: %s\n", info.UpdateSource.Server)
+		fmt.Printf("    Protocol: %s\n", info.UpdateSource.Protocol)
+		fmt.Printf("    Alias: %s\n", info.UpdateSource.Alias)
+	}
 
-		progress.Done(i18n.G("Image exported successfully!"))
-		return nil
+	return nil
+}
 
-	case "show":
-		if len(args) < 2 {
-			return errArgs
-		}
+// List
+type cmdImageList struct {
+	global *cmdGlobal
+	image  *cmdImage
 
-		remote, inName, err := conf.ParseRemote(args[1])
-		if err != nil {
-			return err
-		}
+	flagFormat  string
+	flagColumns string
+}
 
-		d, err := conf.GetImageServer(remote)
-		if err != nil {
-			return err
+func (c *cmdImageList) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("list [<remote>:] [filter]")
+	cmd.Aliases = []string{"ls"}
+	cmd.Short = i18n.G("List images")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`List images
+
+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.
+
+The -c option takes a (optionally comma-separated) list of arguments
+that control which image attributes to output when displaying in table
+or csv format.
+
+Default column layout is: lfpdasu
+
+Column shorthand chars:
+
+    l - Shortest image alias (and optionally number of other aliases)
+    L - Newline-separated list of all image aliases
+    f - Fingerprint
+    p - Whether image is public
+    d - Description
+    a - Architecture
+    s - Size`))
+
+	cmd.Flags().StringVarP(&c.flagColumns, "columns", "c", "lfpdasu", i18n.G("Columns")+"``")
+	cmd.Flags().StringVar(&c.flagFormat, "format", "table", i18n.G("Format (csv|json|table|yaml)")+"``")
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdImageList) parseColumns() ([]imageColumn, error) {
+	columnsShorthandMap := map[rune]imageColumn{
+		'l': {i18n.G("ALIAS"), c.aliasColumnData},
+		'L': {i18n.G("ALIASES"), c.aliasesColumnData},
+		'f': {i18n.G("FINGERPRINT"), c.fingerprintColumnData},
+		'p': {i18n.G("PUBLIC"), c.publicColumnData},
+		'd': {i18n.G("DESCRIPTION"), c.descriptionColumnData},
+		'a': {i18n.G("ARCH"), c.architectureColumnData},
+		's': {i18n.G("SIZE"), c.sizeColumnData},
+		'u': {i18n.G("UPLOAD DATE"), c.uploadDateColumnData},
+	}
+
+	columnList := strings.Split(c.flagColumns, ",")
+
+	columns := []imageColumn{}
+	for _, columnEntry := range columnList {
+		if columnEntry == "" {
+			return nil, fmt.Errorf("Empty column entry (redundant, leading or trailing command) in '%s'", c.flagColumns)
 		}
 
-		image := c.dereferenceAlias(d, inName)
-		info, _, err := d.GetImage(image)
-		if err != nil {
-			return err
+		for _, columnRune := range columnEntry {
+			if column, ok := columnsShorthandMap[columnRune]; ok {
+				columns = append(columns, column)
+			} else {
+				return nil, fmt.Errorf("Unknown column shorthand char '%c' in '%s'", columnRune, columnEntry)
+			}
 		}
+	}
+
+	return columns, nil
+}
+
+func (c *cmdImageList) aliasColumnData(image api.Image) string {
+	shortest := c.shortestAlias(image.Aliases)
+	if len(image.Aliases) > 1 {
+		shortest = fmt.Sprintf(i18n.G("%s (%d more)"), shortest, len(image.Aliases)-1)
+	}
+
+	return shortest
+}
 
-		properties := info.Writable()
+func (c *cmdImageList) aliasesColumnData(image api.Image) string {
+	aliases := []string{}
+	for _, alias := range image.Aliases {
+		aliases = append(aliases, alias.Name)
+	}
+	sort.Strings(aliases)
+	return strings.Join(aliases, "\n")
+}
 
-		data, err := yaml.Marshal(&properties)
-		fmt.Printf("%s", data)
-		return err
+func (c *cmdImageList) fingerprintColumnData(image api.Image) string {
+	return image.Fingerprint[0:12]
+}
 
-	default:
-		return errArgs
+func (c *cmdImageList) publicColumnData(image api.Image) string {
+	if image.Public {
+		return i18n.G("yes")
 	}
+	return i18n.G("no")
 }
 
-func (c *imageCmd) dereferenceAlias(d lxd.ImageServer, inName string) string {
-	if inName == "" {
-		inName = "default"
-	}
+func (c *cmdImageList) descriptionColumnData(image api.Image) string {
+	return c.findDescription(image.Properties)
+}
 
-	result, _, _ := d.GetImageAlias(inName)
-	if result == nil {
-		return inName
-	}
+func (c *cmdImageList) architectureColumnData(image api.Image) string {
+	return image.Architecture
+}
 
-	return result.Target
+func (c *cmdImageList) sizeColumnData(image api.Image) string {
+	return fmt.Sprintf("%.2fMB", float64(image.Size)/1024.0/1024.0)
+}
+
+func (c *cmdImageList) uploadDateColumnData(image api.Image) string {
+	return image.UploadedAt.UTC().Format("Jan 2, 2006 at 3:04pm (MST)")
 }
 
-func (c *imageCmd) shortestAlias(list []api.ImageAlias) string {
+func (c *cmdImageList) shortestAlias(list []api.ImageAlias) string {
 	shortest := ""
 	for _, l := range list {
 		if shortest == "" {
@@ -1047,7 +1008,7 @@ func (c *imageCmd) shortestAlias(list []api.ImageAlias) string {
 	return shortest
 }
 
-func (c *imageCmd) findDescription(props map[string]string) string {
+func (c *cmdImageList) findDescription(props map[string]string) string {
 	for k, v := range props {
 		if k == "description" {
 			return v
@@ -1056,7 +1017,119 @@ func (c *imageCmd) findDescription(props map[string]string) string {
 	return ""
 }
 
-func (c *imageCmd) showImages(images []api.Image, filters []string, columns []imageColumn) error {
+func (c *cmdImageList) imageShouldShow(filters []string, state *api.Image) bool {
+	if len(filters) == 0 {
+		return true
+	}
+
+	for _, filter := range filters {
+		found := false
+		if strings.Contains(filter, "=") {
+			membs := strings.SplitN(filter, "=", 2)
+
+			key := membs[0]
+			var value string
+			if len(membs) < 2 {
+				value = ""
+			} else {
+				value = membs[1]
+			}
+
+			for configKey, configValue := range state.Properties {
+				list := cmdList{}
+				if list.dotPrefixMatch(key, configKey) {
+					//try to test filter value as a regexp
+					regexpValue := value
+					if !(strings.Contains(value, "^") || strings.Contains(value, "$")) {
+						regexpValue = "^" + regexpValue + "$"
+					}
+					r, err := regexp.Compile(regexpValue)
+					//if not regexp compatible use original value
+					if err != nil {
+						if value == configValue {
+							found = true
+							break
+						}
+					} else if r.MatchString(configValue) == true {
+						found = true
+						break
+					}
+				}
+			}
+		} else {
+			for _, alias := range state.Aliases {
+				if strings.Contains(alias.Name, filter) {
+					found = true
+					break
+				}
+			}
+			if strings.Contains(state.Fingerprint, filter) {
+				found = true
+			}
+		}
+
+		if !found {
+			return false
+		}
+	}
+
+	return true
+}
+
+func (c *cmdImageList) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 0, -1)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	remote := ""
+	if len(args) > 0 {
+		remote = args[0]
+	}
+
+	remoteName, name, err := c.global.conf.ParseRemote(remote)
+	if err != nil {
+		return err
+	}
+
+	remoteServer, err := c.global.conf.GetImageServer(remoteName)
+	if err != nil {
+		return err
+	}
+
+	// Process the filters
+	filters := []string{}
+	if name != "" {
+		filters = append(filters, name)
+	}
+
+	if len(args) > 1 {
+		filters = append(filters, args[1:]...)
+	}
+
+	// Process the columns
+	columns, err := c.parseColumns()
+	if err != nil {
+		return err
+	}
+
+	var images []api.Image
+	allImages, err := remoteServer.GetImages()
+	if err != nil {
+		return err
+	}
+
+	for _, image := range allImages {
+		if !c.imageShouldShow(filters, &image) {
+			continue
+		}
+
+		images = append(images, image)
+	}
+
+	// Render the table
 	tableData := func() [][]string {
 		data := [][]string{}
 		for _, image := range images {
@@ -1075,15 +1148,15 @@ func (c *imageCmd) showImages(images []api.Image, filters []string, columns []im
 		return data
 	}
 
-	switch c.format {
+	switch c.flagFormat {
 	case listFormatCSV:
 		w := csv.NewWriter(os.Stdout)
 		w.WriteAll(tableData())
 		if err := w.Error(); err != nil {
 			return err
 		}
-	case listFormatTable:
 
+	case listFormatTable:
 		table := tablewriter.NewWriter(os.Stdout)
 		table.SetAutoWrapText(false)
 		table.SetAlignment(tablewriter.ALIGN_LEFT)
@@ -1095,6 +1168,7 @@ func (c *imageCmd) showImages(images []api.Image, filters []string, columns []im
 		table.SetHeader(headers)
 		table.AppendBulk(tableData())
 		table.Render()
+
 	case listFormatJSON:
 		data := make([]*api.Image, len(images))
 		for i := range images {
@@ -1105,6 +1179,7 @@ func (c *imageCmd) showImages(images []api.Image, filters []string, columns []im
 		if err != nil {
 			return err
 		}
+
 	case listFormatYAML:
 		data := make([]*api.Image, len(images))
 		for i := range images {
@@ -1116,194 +1191,133 @@ func (c *imageCmd) showImages(images []api.Image, filters []string, columns []im
 			return err
 		}
 		fmt.Printf("%s", out)
+
 	default:
-		return fmt.Errorf("invalid format %q", c.format)
+		return fmt.Errorf(i18n.G("Invalid format %q"), c.flagFormat)
 	}
 
 	return nil
 }
 
-func (c *imageCmd) showAliases(aliases []api.ImageAliasesEntry, filters []string) error {
-	data := [][]string{}
-	for _, alias := range aliases {
-		if !c.aliasShouldShow(filters, &alias) {
-			continue
-		}
-
-		data = append(data, []string{alias.Name, alias.Target[0:12], alias.Description})
-	}
-
-	table := tablewriter.NewWriter(os.Stdout)
-	table.SetAutoWrapText(false)
-	table.SetAlignment(tablewriter.ALIGN_LEFT)
-	table.SetRowLine(true)
-	table.SetHeader([]string{
-		i18n.G("ALIAS"),
-		i18n.G("FINGERPRINT"),
-		i18n.G("DESCRIPTION")})
-	sort.Sort(stringList(data))
-	table.AppendBulk(data)
-	table.Render()
-
-	return nil
+// Refresh
+type cmdImageRefresh struct {
+	global *cmdGlobal
+	image  *cmdImage
 }
 
-func (c *imageCmd) doImageEdit(client lxd.ContainerServer, image string) error {
-	// If stdin isn't a terminal, read text from it
-	if !termios.IsTerminal(int(syscall.Stdin)) {
-		contents, err := ioutil.ReadAll(os.Stdin)
-		if err != nil {
-			return err
-		}
+func (c *cmdImageRefresh) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("refresh [<remote>:]<image> [[<remote>:]<image>...]")
+	cmd.Short = i18n.G("Refresh images")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Refresh images`))
 
-		newdata := api.ImagePut{}
-		err = yaml.Unmarshal(contents, &newdata)
-		if err != nil {
-			return err
-		}
+	cmd.RunE = c.Run
 
-		return client.UpdateImage(image, newdata, "")
-	}
+	return cmd
+}
 
-	// Extract the current value
-	imgInfo, etag, err := client.GetImage(image)
-	if err != nil {
+func (c *cmdImageRefresh) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, -1)
+	if exit {
 		return err
 	}
 
-	brief := imgInfo.Writable()
-	data, err := yaml.Marshal(&brief)
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
 	if err != nil {
 		return err
 	}
 
-	// Spawn the editor
-	content, err := shared.TextEditor("", []byte(c.imageEditHelp()+"\n\n"+string(data)))
-	if err != nil {
-		return err
-	}
+	for _, resource := range resources {
+		if resource.name == "" {
+			return fmt.Errorf(i18n.G("Image identifier missing"))
+		}
 
-	for {
-		// Parse the text received from the editor
-		newdata := api.ImagePut{}
-		err = yaml.Unmarshal(content, &newdata)
-		if err == nil {
-			err = client.UpdateImage(image, newdata, etag)
+		image := c.image.dereferenceAlias(resource.server, resource.name)
+		progress := utils.ProgressRenderer{Format: i18n.G("Refreshing the image: %s")}
+		op, err := resource.server.RefreshImage(image)
+		if err != nil {
+			return err
 		}
 
-		// Respawn the editor
+		// Register progress handler
+		_, err = op.AddHandler(progress.UpdateOp)
 		if err != nil {
-			fmt.Fprintf(os.Stderr, i18n.G("Config parsing error: %s")+"\n", err)
-			fmt.Println(i18n.G("Press enter to start the editor again"))
+			return err
+		}
 
-			_, err := os.Stdin.Read(make([]byte, 1))
-			if err != nil {
-				return err
-			}
+		// Wait for the refresh to happen
+		err = op.Wait()
+		if err != nil {
+			return err
+		}
+		opAPI := op.Get()
 
-			content, err = shared.TextEditor("", content)
-			if err != nil {
-				return err
-			}
-			continue
+		// Check if refreshed
+		refreshed := false
+		flag, ok := opAPI.Metadata["refreshed"]
+		if ok {
+			refreshed = flag.(bool)
 		}
-		break
-	}
-	return nil
-}
 
-func (c *imageCmd) imageShouldShow(filters []string, state *api.Image) bool {
-	if len(filters) == 0 {
-		return true
+		if refreshed {
+			progress.Done(i18n.G("Image refreshed successfully!"))
+		} else {
+			progress.Done(i18n.G("Image already up to date."))
+		}
 	}
 
-	for _, filter := range filters {
-		found := false
-		if strings.Contains(filter, "=") {
-			membs := strings.SplitN(filter, "=", 2)
+	return nil
+}
 
-			key := membs[0]
-			var value string
-			if len(membs) < 2 {
-				value = ""
-			} else {
-				value = membs[1]
-			}
+// Show
+type cmdImageShow struct {
+	global *cmdGlobal
+	image  *cmdImage
+}
 
-			for configKey, configValue := range state.Properties {
-				list := cmdList{}
-				if list.dotPrefixMatch(key, configKey) {
-					//try to test filter value as a regexp
-					regexpValue := value
-					if !(strings.Contains(value, "^") || strings.Contains(value, "$")) {
-						regexpValue = "^" + regexpValue + "$"
-					}
-					r, err := regexp.Compile(regexpValue)
-					//if not regexp compatible use original value
-					if err != nil {
-						if value == configValue {
-							found = true
-							break
-						}
-					} else if r.MatchString(configValue) == true {
-						found = true
-						break
-					}
-				}
-			}
-		} else {
-			for _, alias := range state.Aliases {
-				if strings.Contains(alias.Name, filter) {
-					found = true
-					break
-				}
-			}
-			if strings.Contains(state.Fingerprint, filter) {
-				found = true
-			}
-		}
+func (c *cmdImageShow) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("show [<remote>:]<image>")
+	cmd.Short = i18n.G("Show image properties")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Show image properties`))
 
-		if !found {
-			return false
-		}
-	}
+	cmd.RunE = c.Run
 
-	return true
+	return cmd
 }
 
-func (c *imageCmd) aliasShouldShow(filters []string, state *api.ImageAliasesEntry) bool {
-	if len(filters) == 0 {
-		return true
+func (c *cmdImageShow) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, 1)
+	if exit {
+		return err
 	}
 
-	for _, filter := range filters {
-		if strings.Contains(state.Name, filter) || strings.Contains(state.Target, filter) {
-			return true
-		}
+	// Parse remote
+	remoteName, name, err := c.global.conf.ParseRemote(args[0])
+	if err != nil {
+		return err
 	}
 
-	return false
-}
-
-// Package the image from the specified directory, if running as root.  Return
-// the image filename
-func packImageDir(path string) (string, error) {
-	switch os.Geteuid() {
-	case 0:
-	case -1:
-		return "", fmt.Errorf(
-			i18n.G("Directory import is not available on this platform"))
-	default:
-		return "", fmt.Errorf(i18n.G("Must run as root to import from directory"))
+	remoteServer, err := c.global.conf.GetImageServer(remoteName)
+	if err != nil {
+		return err
 	}
 
-	outFile, err := ioutil.TempFile("", "lxd_image_")
+	// Show properties
+	image := c.image.dereferenceAlias(remoteServer, name)
+	info, _, err := remoteServer.GetImage(image)
 	if err != nil {
-		return "", err
+		return err
 	}
-	defer outFile.Close()
-	outFileName := outFile.Name()
 
-	shared.RunCommand("tar", "-C", path, "--numeric-owner", "-cJf", outFileName, "rootfs", "templates", "metadata.yaml")
-	return outFileName, nil
+	properties := info.Writable()
+	data, err := yaml.Marshal(&properties)
+	fmt.Printf("%s", data)
+
+	return nil
 }
diff --git a/lxc/image_alias.go b/lxc/image_alias.go
new file mode 100644
index 000000000..e2b2f56ed
--- /dev/null
+++ b/lxc/image_alias.go
@@ -0,0 +1,279 @@
+package main
+
+import (
+	"fmt"
+	"os"
+	"sort"
+	"strings"
+
+	"github.com/olekukonko/tablewriter"
+	"github.com/spf13/cobra"
+
+	"github.com/lxc/lxd/shared/api"
+	cli "github.com/lxc/lxd/shared/cmd"
+	"github.com/lxc/lxd/shared/i18n"
+)
+
+type cmdImageAlias struct {
+	global *cmdGlobal
+	image  *cmdImage
+}
+
+func (c *cmdImageAlias) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("alias")
+	cmd.Short = i18n.G("Manage image aliases")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Manage image aliases`))
+
+	// Create
+	imageAliasCreateCmd := cmdImageAliasCreate{global: c.global, image: c.image, imageAlias: c}
+	cmd.AddCommand(imageAliasCreateCmd.Command())
+
+	// Delete
+	imageAliasDeleteCmd := cmdImageAliasDelete{global: c.global, image: c.image, imageAlias: c}
+	cmd.AddCommand(imageAliasDeleteCmd.Command())
+
+	// List
+	imageAliasListCmd := cmdImageAliasList{global: c.global, image: c.image, imageAlias: c}
+	cmd.AddCommand(imageAliasListCmd.Command())
+
+	// Rename
+	imageAliasRenameCmd := cmdImageAliasRename{global: c.global, image: c.image, imageAlias: c}
+	cmd.AddCommand(imageAliasRenameCmd.Command())
+
+	return cmd
+}
+
+// Create
+type cmdImageAliasCreate struct {
+	global     *cmdGlobal
+	image      *cmdImage
+	imageAlias *cmdImageAlias
+}
+
+func (c *cmdImageAliasCreate) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("create [<remote>:]<alias> <fingerprint>")
+	cmd.Short = i18n.G("Create aliases for existing images")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Create aliases for existing images`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdImageAliasCreate) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 2, 2)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Alias name missing"))
+	}
+
+	// Create the alias
+	alias := api.ImageAliasesPost{}
+	alias.Name = resource.name
+	alias.Target = args[1]
+
+	return resource.server.CreateImageAlias(alias)
+}
+
+// Delete
+type cmdImageAliasDelete struct {
+	global     *cmdGlobal
+	image      *cmdImage
+	imageAlias *cmdImageAlias
+}
+
+func (c *cmdImageAliasDelete) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("delete [<remote>:]<alias>")
+	cmd.Aliases = []string{"rm"}
+	cmd.Short = i18n.G("Delete image aliases")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Delete image aliases`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdImageAliasDelete) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, 1)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Alias name missing"))
+	}
+
+	// Delete the alias
+	return resource.server.DeleteImageAlias(resource.name)
+}
+
+// List
+type cmdImageAliasList struct {
+	global     *cmdGlobal
+	image      *cmdImage
+	imageAlias *cmdImageAlias
+}
+
+func (c *cmdImageAliasList) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("list [<remote>:] [filters...]")
+	cmd.Aliases = []string{"ls"}
+	cmd.Short = i18n.G("List image aliases")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`List image aliases
+
+Filters may be part of the image hash or part of the image alias name.
+`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdImageAliasList) aliasShouldShow(filters []string, state *api.ImageAliasesEntry) bool {
+	if len(filters) == 0 {
+		return true
+	}
+
+	for _, filter := range filters {
+		if strings.Contains(state.Name, filter) || strings.Contains(state.Target, filter) {
+			return true
+		}
+	}
+
+	return false
+}
+
+func (c *cmdImageAliasList) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 0, -1)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	remote := ""
+	if len(args) > 0 {
+		remote = args[0]
+	}
+
+	remoteName, name, err := c.global.conf.ParseRemote(remote)
+	if err != nil {
+		return err
+	}
+
+	remoteServer, err := c.global.conf.GetImageServer(remoteName)
+	if err != nil {
+		return err
+	}
+
+	// Process the filters
+	filters := []string{}
+	if name != "" {
+		filters = append(filters, name)
+	}
+
+	if len(args) > 1 {
+		filters = append(filters, args[1:]...)
+	}
+
+	// List the aliases
+	aliases, err := remoteServer.GetImageAliases()
+	if err != nil {
+		return err
+	}
+
+	// Render the table
+	data := [][]string{}
+	for _, alias := range aliases {
+		if !c.aliasShouldShow(filters, &alias) {
+			continue
+		}
+
+		data = append(data, []string{alias.Name, alias.Target[0:12], alias.Description})
+	}
+
+	table := tablewriter.NewWriter(os.Stdout)
+	table.SetAutoWrapText(false)
+	table.SetAlignment(tablewriter.ALIGN_LEFT)
+	table.SetRowLine(true)
+	table.SetHeader([]string{
+		i18n.G("ALIAS"),
+		i18n.G("FINGERPRINT"),
+		i18n.G("DESCRIPTION")})
+	sort.Sort(stringList(data))
+	table.AppendBulk(data)
+	table.Render()
+
+	return nil
+}
+
+// Rename
+type cmdImageAliasRename struct {
+	global     *cmdGlobal
+	image      *cmdImage
+	imageAlias *cmdImageAlias
+}
+
+func (c *cmdImageAliasRename) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("rename [<remote>:]<alias> <new-name>")
+	cmd.Aliases = []string{"mv"}
+	cmd.Short = i18n.G("Rename aliases")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Rename aliases`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdImageAliasRename) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 2, 2)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Alias name missing"))
+	}
+
+	// Rename the alias
+	return resource.server.RenameImageAlias(resource.name, api.ImageAliasesEntryPost{Name: args[1]})
+}
diff --git a/lxc/main.go b/lxc/main.go
index c40c698a0..64b285c88 100644
--- a/lxc/main.go
+++ b/lxc/main.go
@@ -101,6 +101,10 @@ For help with any of those, simply call them with --help.`))
 	infoCmd := cmdInfo{global: &globalCmd}
 	app.AddCommand(infoCmd.Command())
 
+	// image sub-command
+	imageCmd := cmdImage{global: &globalCmd}
+	app.AddCommand(imageCmd.Command())
+
 	// init sub-command
 	initCmd := cmdInit{global: &globalCmd}
 	app.AddCommand(initCmd.Command())
@@ -339,7 +343,6 @@ type command interface {
 
 var commands = map[string]command{
 	"config":  &configCmd{},
-	"image":   &imageCmd{},
 	"manpage": &manpageCmd{},
 	"profile": &profileCmd{},
 	"storage": &storageCmd{},
@@ -350,13 +353,6 @@ var commands = map[string]command{
 var defaultAliases = map[string]string{
 	"shell": "exec @ARGS@ -- su -l",
 
-	"image cp": "image copy",
-	"image ls": "image list",
-	"image rm": "image delete",
-
-	"image alias ls": "image alias list",
-	"image alias rm": "image alias delete",
-
 	"config device ls": "config device list",
 	"config device rm": "config device remove",
 }

From ecaa502c5089f5fd6c1fae1f0877c6b88c138a5c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Wed, 28 Mar 2018 16:06:31 -0400
Subject: [PATCH 29/39] lxc/storage: Port to cobra
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           |    5 +-
 lxc/storage.go        | 1296 ++++++++++++++-----------------------------------
 lxc/storage_volume.go | 1259 +++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 1639 insertions(+), 921 deletions(-)
 create mode 100644 lxc/storage_volume.go

diff --git a/lxc/main.go b/lxc/main.go
index 64b285c88..36de0f3b7 100644
--- a/lxc/main.go
+++ b/lxc/main.go
@@ -165,6 +165,10 @@ For help with any of those, simply call them with --help.`))
 	snapshotCmd := cmdSnapshot{global: &globalCmd}
 	app.AddCommand(snapshotCmd.Command())
 
+	// storage sub-command
+	storageCmd := cmdStorage{global: &globalCmd}
+	app.AddCommand(storageCmd.Command())
+
 	// start sub-command
 	startCmd := cmdStart{global: &globalCmd}
 	app.AddCommand(startCmd.Command())
@@ -345,7 +349,6 @@ var commands = map[string]command{
 	"config":  &configCmd{},
 	"manpage": &manpageCmd{},
 	"profile": &profileCmd{},
-	"storage": &storageCmd{},
 }
 
 // defaultAliases contains LXC's built-in command line aliases.  The built-in
diff --git a/lxc/storage.go b/lxc/storage.go
index 9ad7a9aca..fb960911b 100644
--- a/lxc/storage.go
+++ b/lxc/storage.go
@@ -10,513 +10,117 @@ import (
 	"syscall"
 
 	"github.com/olekukonko/tablewriter"
+	"github.com/spf13/cobra"
 	"gopkg.in/yaml.v2"
 
-	"github.com/lxc/lxd/client"
-	"github.com/lxc/lxd/lxc/config"
-	"github.com/lxc/lxd/lxc/utils"
 	"github.com/lxc/lxd/shared"
 	"github.com/lxc/lxd/shared/api"
-	"github.com/lxc/lxd/shared/gnuflag"
+	cli "github.com/lxc/lxd/shared/cmd"
 	"github.com/lxc/lxd/shared/i18n"
 	"github.com/lxc/lxd/shared/termios"
 )
 
-type storageCmd struct {
-	resources bool
-	byteflag  bool
-	mode      string
-	target    string
-}
+type cmdStorage struct {
+	global *cmdGlobal
 
-func (c *storageCmd) showByDefault() bool {
-	return true
+	flagTarget string
 }
 
-func (c *storageCmd) storagePoolEditHelp() string {
-	return i18n.G(
-		`### This is a yaml representation of a storage pool.
-### Any line starting with a '#' will be ignored.
-###
-### A storage pool consists of a set of configuration items.
-###
-### An example would look like:
-### name: default
-### driver: zfs
-### used_by: []
-### config:
-###   size: "61203283968"
-###   source: /home/chb/mnt/lxd_test/default.img
-###   zfs.pool_name: default`)
-}
-
-func (c *storageCmd) storagePoolVolumeEditHelp() string {
-	return i18n.G(
-		`### This is a yaml representation of a storage volume.
-### Any line starting with a '# will be ignored.
-###
-### A storage volume consists of a set of configuration items.
-###
-### name: vol1
-### type: custom
-### used_by: []
-### config:
-###   size: "61203283968"`)
-}
-
-func (c *storageCmd) usage() string {
-	return i18n.G(
-		`Usage: lxc storage <subcommand> [options]
-
-Manage storage pools and volumes.
-
-*Storage pools*
-lxc storage list [<remote>:]
-    List available storage pools.
-
-lxc storage show [<remote>:]<pool> [--resources] [--target <node>]
-    Show details of a storage pool.
-
-lxc storage info [<remote>:]<pool> [--bytes]
-    Show information of a storage pool in yaml format.
+func (c *cmdStorage) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("storage")
+	cmd.Short = i18n.G("Manage storage pools and volumes")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Manage storage pools and volumes`))
 
-lxc storage create [<remote>:]<pool> <driver> [key=value]... [--target <node>]
-    Create a storage pool.
+	// Create
+	storageCreateCmd := cmdStorageCreate{global: c.global, storage: c}
+	cmd.AddCommand(storageCreateCmd.Command())
 
-lxc storage get [<remote>:]<pool> <key>
-    Get storage pool configuration.
+	// Delete
+	storageDeleteCmd := cmdStorageDelete{global: c.global, storage: c}
+	cmd.AddCommand(storageDeleteCmd.Command())
 
-lxc storage set [<remote>:]<pool> <key> <value>
-    Set storage pool configuration.
+	// Edit
+	storageEditCmd := cmdStorageEdit{global: c.global, storage: c}
+	cmd.AddCommand(storageEditCmd.Command())
 
-lxc storage unset [<remote>:]<pool> <key>
-    Unset storage pool configuration.
+	// Get
+	storageGetCmd := cmdStorageGet{global: c.global, storage: c}
+	cmd.AddCommand(storageGetCmd.Command())
 
-lxc storage delete [<remote>:]<pool>
-    Delete a storage pool.
+	// Info
+	storageInfoCmd := cmdStorageInfo{global: c.global, storage: c}
+	cmd.AddCommand(storageInfoCmd.Command())
 
-lxc storage edit [<remote>:]<pool>
-    Edit storage pool, either by launching external editor or reading STDIN.
+	// List
+	storageListCmd := cmdStorageList{global: c.global, storage: c}
+	cmd.AddCommand(storageListCmd.Command())
 
-*Storage volumes*
-lxc storage volume list [<remote>:]<pool>
-    List available storage volumes on a storage pool.
+	// Set
+	storageSetCmd := cmdStorageSet{global: c.global, storage: c}
+	cmd.AddCommand(storageSetCmd.Command())
 
-lxc storage volume show [<remote>:]<pool> <volume> [--target <node>]
-   Show details of a storage volume on a storage pool.
+	// Show
+	storageShowCmd := cmdStorageShow{global: c.global, storage: c}
+	cmd.AddCommand(storageShowCmd.Command())
 
-lxc storage volume create [<remote>:]<pool> <volume> [key=value]... [--target <node>]
-    Create a storage volume on a storage pool.
+	// Unset
+	storageUnsetCmd := cmdStorageUnset{global: c.global, storage: c, storageSet: &storageSetCmd}
+	cmd.AddCommand(storageUnsetCmd.Command())
 
-lxc storage volume rename [<remote>:]<pool> <old name> <new name> [--target <node>]
-    Rename a storage volume on a storage pool.
+	// Volume
+	storageVolumeCmd := cmdStorageVolume{global: c.global, storage: c}
+	cmd.AddCommand(storageVolumeCmd.Command())
 
-lxc storage volume get [<remote>:]<pool> <volume> <key> [--target <node>]
-    Get storage volume configuration on a storage pool.
-
-lxc storage volume set [<remote>:]<pool> <volume> <key> <value> [--target <node>]
-    Set storage volume configuration on a storage pool.
-
-lxc storage volume unset [<remote>:]<pool> <volume> <key> [--target <node>]
-    Unset storage volume configuration on a storage pool.
-
-lxc storage volume delete [<remote>:]<pool> <volume> [--target <node>]
-    Delete a storage volume on a storage pool.
-
-lxc storage volume edit [<remote>:]<pool> <volume> [--target <node>]
-    Edit storage volume, either by launching external editor or reading STDIN.
-
-lxc storage volume attach [<remote>:]<pool> <volume> <container> [device name] <path>
-    Attach a storage volume to the specified container.
-
-lxc storage volume attach-profile [<remote:>]<pool> <volume> <profile> [device name] <path>
-    Attach a storage volume to the specified profile.
-
-lxc storage volume detach [<remote>:]<pool> <volume> <container> [device name]
-    Detach a storage volume from the specified container.
-
-lxc storage volume detach-profile [<remote:>]<pool> <volume> <profile> [device name]
-	Detach a storage volume from the specified profile.
-
-lxc storage volume copy <pool>/<volume> <pool>/<volume> [--config|-c <key=value>...]
-    Copy an existing volume to a new volume at the specified pool.
-
-lxc storage volume move [<pool>/]<volume> [<pool>/]<volume>
-    Move an existing volume to the specified pool.
-
-Unless specified through a prefix, all volume operations affect "custom" (user created) volumes.
-
-*Examples*
-cat pool.yaml | lxc storage edit [<remote>:]<pool>
-    Update a storage pool using the content of pool.yaml.
-
-cat pool.yaml | lxc storage volume edit [<remote>:]<pool> <volume>
-    Update a storage volume using the content of pool.yaml.
-
-lxc storage volume show default data
-    Will show the properties of a custom volume called "data" in the "default" pool.
-
-lxc storage volume show default container/data
-    Will show the properties of the filesystem for a container called "data" in the "default" pool.`)
+	return cmd
 }
 
-func (c *storageCmd) flags() {
-	gnuflag.BoolVar(&c.resources, "resources", false, i18n.G("Show the resources available to the storage pool"))
-	gnuflag.BoolVar(&c.byteflag, "bytes", false, i18n.G("Show the used and free space in bytes"))
-	gnuflag.StringVar(&c.mode, "mode", "pull", i18n.G("Transfer mode. One of pull (default), push or relay."))
-	gnuflag.StringVar(&c.target, "target", "", i18n.G("Node name"))
+// Create
+type cmdStorageCreate struct {
+	global  *cmdGlobal
+	storage *cmdStorage
 }
 
-func (c *storageCmd) run(conf *config.Config, args []string) error {
-	if len(args) < 1 {
-		return errUsage
-	}
-
-	if args[0] == "list" {
-		return c.doStoragePoolsList(conf, args)
-	}
-
-	if len(args) < 2 {
-		return errArgs
-	}
-
-	if args[0] == "volume" {
-		if len(args) < 3 {
-			return errArgs
-		}
+func (c *cmdStorageCreate) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("create [<remote>:]<pool> <driver> [key=value]...")
+	cmd.Short = i18n.G("Create storage pools")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Create storage pools`))
 
-		remote, sub, err := conf.ParseRemote(args[2])
-		if err != nil {
-			return err
-		}
+	cmd.Flags().StringVar(&c.storage.flagTarget, "target", "", i18n.G("Cluster member name")+"``")
+	cmd.RunE = c.Run
 
-		client, err := conf.GetContainerServer(remote)
-		if err != nil {
-			return err
-		}
-
-		switch args[1] {
-		case "attach":
-			if len(args) < 5 {
-				return errArgs
-			}
-			pool := sub
-			volume := args[3]
-			return c.doStoragePoolVolumeAttach(client, pool, volume, args[4:])
-		case "attach-profile":
-			if len(args) < 5 {
-				return errArgs
-			}
-			pool := sub
-			volume := args[3]
-			return c.doStoragePoolVolumeAttachProfile(client, pool, volume, args[4:])
-		case "create":
-			if len(args) < 4 {
-				return errArgs
-			}
-			pool := sub
-			volume := args[3]
-			return c.doStoragePoolVolumeCreate(client, pool, volume, args[4:])
-		case "delete":
-			if len(args) != 4 {
-				return errArgs
-			}
-			pool := sub
-			volume := args[3]
-			return c.doStoragePoolVolumeDelete(client, pool, volume)
-		case "detach":
-			if len(args) < 4 {
-				return errArgs
-			}
-			pool := sub
-			volume := args[3]
-			return c.doStoragePoolVolumeDetach(client, pool, volume, args[4:])
-		case "detach-profile":
-			if len(args) < 5 {
-				return errArgs
-			}
-			pool := sub
-			volume := args[3]
-			return c.doStoragePoolVolumeDetachProfile(client, pool, volume, args[4:])
-		case "edit":
-			if len(args) != 4 {
-				return errArgs
-			}
-			pool := sub
-			volume := args[3]
-			return c.doStoragePoolVolumeEdit(client, pool, volume)
-		case "get":
-			if len(args) < 4 {
-				return errArgs
-			}
-			pool := sub
-			volume := args[3]
-			return c.doStoragePoolVolumeGet(client, pool, volume, args[3:])
-		case "list":
-			if len(args) != 3 {
-				return errArgs
-			}
-			pool := sub
-			return c.doStoragePoolVolumesList(conf, remote, pool, args)
-		case "rename":
-			if len(args) != 5 {
-				return errArgs
-			}
-			pool := sub
-			volume := args[3]
-			return c.doStoragePoolVolumeRename(client, pool, volume, args)
-		case "set":
-			if len(args) < 4 {
-				return errArgs
-			}
-			pool := sub
-			volume := args[3]
-			return c.doStoragePoolVolumeSet(client, pool, volume, args[3:])
-		case "unset":
-			if len(args) < 4 {
-				return errArgs
-			}
-			pool := sub
-			volume := args[3]
-			return c.doStoragePoolVolumeSet(client, pool, volume, args[3:])
-		case "show":
-			if len(args) != 4 {
-				return errArgs
-			}
-			pool := sub
-			volume := args[3]
-			return c.doStoragePoolVolumeShow(client, pool, volume)
-		case "copy":
-			// only support non remote for now
-			if len(args) != 4 {
-				return errArgs
-			}
-			src := sub
-			dst := args[3]
-			return c.doStoragePoolVolumeCopy(client, remote, conf, src, dst, false)
-		case "move":
-			// only support non remote for now
-			if len(args) != 4 {
-				return errArgs
-			}
-			src := sub
-			dst := args[3]
-			return c.doStoragePoolVolumeCopy(client, remote, conf, src, dst, true)
-		default:
-			return errArgs
-		}
-	} else {
-		remote, sub, err := conf.ParseRemote(args[1])
-		if err != nil {
-			return err
-		}
-
-		client, err := conf.GetContainerServer(remote)
-		if err != nil {
-			return err
-		}
-
-		pool := sub
-		switch args[0] {
-		case "create":
-			if len(args) < 3 {
-				return errArgs
-			}
-			driver := args[2]
-			return c.doStoragePoolCreate(client, pool, driver, args[3:])
-		case "delete":
-			return c.doStoragePoolDelete(client, pool)
-		case "edit":
-			return c.doStoragePoolEdit(client, pool)
-		case "get":
-			if len(args) < 2 {
-				return errArgs
-			}
-			return c.doStoragePoolGet(client, pool, args[2:])
-		case "set":
-			if len(args) < 2 {
-				return errArgs
-			}
-			return c.doStoragePoolSet(client, pool, args[2:])
-		case "unset":
-			if len(args) < 2 {
-				return errArgs
-			}
-			return c.doStoragePoolSet(client, pool, args[2:])
-		case "show":
-			if len(args) < 2 {
-				return errArgs
-			}
-			return c.doStoragePoolShow(client, pool)
-		case "info":
-			if len(args) < 2 {
-				return errArgs
-			}
-			return c.doStoragePoolInfo(client, pool)
-		default:
-			return errArgs
-		}
-	}
-}
-
-func (c *storageCmd) parseVolume(defaultType string, name string) (string, string) {
-	fields := strings.SplitN(name, "/", 2)
-	if len(fields) == 1 {
-		return fields[0], defaultType
-	}
-
-	return fields[1], fields[0]
+	return cmd
 }
 
-func (c *storageCmd) doStoragePoolVolumeAttach(client lxd.ContainerServer, pool string, volume string, args []string) error {
-	if len(args) < 2 || len(args) > 3 {
-		return errArgs
-	}
-
-	devPath := ""
-	devName := ""
-	if len(args) == 2 {
-		// Only the path has been given to us.
-		devPath = args[1]
-		devName = volume
-	} else if len(args) == 3 {
-		// Path and device name have been given to us.
-		devName = args[1]
-		devPath = args[2]
-	}
-
-	volName, volType := c.parseVolume("custom", volume)
-	if volType != "custom" {
-		return fmt.Errorf(i18n.G("Only \"custom\" volumes can be attached to containers."))
-	}
-
-	// Check if the requested storage volume actually exists
-	vol, _, err := client.GetStoragePoolVolume(pool, volType, volName)
-	if err != nil {
+func (c *cmdStorageCreate) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 2, -1)
+	if exit {
 		return err
 	}
 
-	// Prepare the container's device entry
-	device := map[string]string{
-		"type":   "disk",
-		"pool":   pool,
-		"path":   devPath,
-		"source": vol.Name,
-	}
-
-	// Add the device to the container
-	err = containerDeviceAdd(client, args[0], devName, device)
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
 	if err != nil {
 		return err
 	}
 
-	return nil
-}
-
-func (c *storageCmd) doStoragePoolVolumeDetach(client lxd.ContainerServer, pool string, volume string, args []string) error {
-	if len(args) < 1 || len(args) > 2 {
-		return errArgs
-	}
-
-	devName := ""
-	if len(args) == 2 {
-		devName = args[1]
-	}
+	resource := resources[0]
+	client := resource.server
 
-	// Get the container entry
-	container, etag, err := client.GetContainer(args[0])
-	if err != nil {
-		return err
-	}
-
-	// Find the device
-	if devName == "" {
-		for n, d := range container.Devices {
-			if d["type"] == "disk" && d["pool"] == pool && d["source"] == volume {
-				if devName != "" {
-					return fmt.Errorf(i18n.G("More than one device matches, specify the device name."))
-				}
-
-				devName = n
-			}
-		}
-	}
-
-	if devName == "" {
-		return fmt.Errorf(i18n.G("No device found for this storage volume."))
-	}
-
-	_, ok := container.Devices[devName]
-	if !ok {
-		return fmt.Errorf(i18n.G("The specified device doesn't exist"))
-	}
-
-	// Remove the device
-	delete(container.Devices, devName)
-	op, err := client.UpdateContainer(args[0], container.Writable(), etag)
-	if err != nil {
-		return err
-	}
-
-	return op.Wait()
-}
-
-func (c *storageCmd) doStoragePoolVolumeAttachProfile(client lxd.ContainerServer, pool string, volume string, args []string) error {
-	if len(args) < 2 || len(args) > 3 {
-		return errArgs
-	}
-
-	devPath := ""
-	devName := ""
-	if len(args) == 2 {
-		// Only the path has been given to us.
-		devPath = args[1]
-		devName = volume
-	} else if len(args) == 3 {
-		// Path and device name have been given to us.
-		devName = args[1]
-		devPath = args[2]
-	}
-
-	volName, volType := c.parseVolume("custom", volume)
-	if volType != "custom" {
-		return fmt.Errorf(i18n.G("Only \"custom\" volumes can be attached to containers."))
-	}
-
-	// Check if the requested storage volume actually exists
-	vol, _, err := client.GetStoragePoolVolume(pool, volType, volName)
-	if err != nil {
-		return err
-	}
-
-	// Prepare the container's device entry
-	device := map[string]string{
-		"type":   "disk",
-		"pool":   pool,
-		"path":   devPath,
-		"source": vol.Name,
-	}
-
-	// Add the device to the container
-	err = profileDeviceAdd(client, args[0], devName, device)
-	if err != nil {
-		return err
-	}
-
-	return nil
-}
-
-func (c *storageCmd) doStoragePoolCreate(client lxd.ContainerServer, name string, driver string, args []string) error {
 	// Create the new storage pool entry
 	pool := api.StoragePoolsPost{}
-	pool.Name = name
+	pool.Name = resource.name
 	pool.Config = map[string]string{}
-	pool.Driver = driver
+	pool.Driver = args[1]
 
-	for i := 0; i < len(args); i++ {
+	for i := 2; i < len(args); i++ {
 		entry := strings.SplitN(args[i], "=", 2)
 		if len(entry) < 2 {
-			return errArgs
+			return fmt.Errorf(i18n.G("Bad key=value pair: %s"), entry)
 		}
 
 		pool.Config[entry[0]] = entry[1]
@@ -524,85 +128,130 @@ func (c *storageCmd) doStoragePoolCreate(client lxd.ContainerServer, name string
 
 	// If a target node was specified the API won't actually create the
 	// pool, but only define it as pending in the database.
-	if c.target != "" {
-		client = client.UseTarget(c.target)
+	if c.storage.flagTarget != "" {
+		client = client.UseTarget(c.storage.flagTarget)
 	}
 
 	// Create the pool
-	err := client.CreateStoragePool(pool)
+	err = client.CreateStoragePool(pool)
 	if err != nil {
 		return err
 	}
 
-	if c.target != "" {
-		fmt.Printf(i18n.G("Storage pool %s pending on node %s")+"\n", name, c.target)
+	if c.storage.flagTarget != "" {
+		fmt.Printf(i18n.G("Storage pool %s pending on node %s")+"\n", resource.name, c.storage.flagTarget)
 	} else {
-		fmt.Printf(i18n.G("Storage pool %s created")+"\n", name)
+		fmt.Printf(i18n.G("Storage pool %s created")+"\n", resource.name)
 	}
 
 	return nil
 }
 
-func (c *storageCmd) doStoragePoolVolumeDetachProfile(client lxd.ContainerServer, pool string, volume string, args []string) error {
-	if len(args) < 1 || len(args) > 2 {
-		return errArgs
-	}
+// Delete
+type cmdStorageDelete struct {
+	global  *cmdGlobal
+	storage *cmdStorage
+}
 
-	devName := ""
-	if len(args) > 1 {
-		devName = args[1]
-	}
+func (c *cmdStorageDelete) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("delete [<remote>:]<pool>")
+	cmd.Aliases = []string{"rm"}
+	cmd.Short = i18n.G("Delete storage pools")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Delete storage pools`))
 
-	// Get the profile entry
-	profile, etag, err := client.GetProfile(args[0])
-	if err != nil {
-		return err
-	}
+	cmd.RunE = c.Run
 
-	// Find the device
-	if devName == "" {
-		for n, d := range profile.Devices {
-			if d["type"] == "disk" && d["pool"] == pool && d["source"] == volume {
-				if devName != "" {
-					return fmt.Errorf(i18n.G("More than one device matches, specify the device name."))
-				}
+	return cmd
+}
 
-				devName = n
-			}
-		}
+func (c *cmdStorageDelete) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, 1)
+	if exit {
+		return err
 	}
 
-	if devName == "" {
-		return fmt.Errorf(i18n.G("No device found for this storage volume."))
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
 	}
 
-	_, ok := profile.Devices[devName]
-	if !ok {
-		return fmt.Errorf(i18n.G("The specified device doesn't exist"))
+	resource := resources[0]
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing pool name"))
 	}
 
-	// Remove the device
-	delete(profile.Devices, devName)
-	err = client.UpdateProfile(args[0], profile.Writable(), etag)
+	// Delete the pool
+	err = resource.server.DeleteStoragePool(resource.name)
 	if err != nil {
 		return err
 	}
 
+	fmt.Printf(i18n.G("Storage pool %s deleted")+"\n", resource.name)
 	return nil
 }
 
-func (c *storageCmd) doStoragePoolDelete(client lxd.ContainerServer, name string) error {
-	err := client.DeleteStoragePool(name)
+// Edit
+type cmdStorageEdit struct {
+	global  *cmdGlobal
+	storage *cmdStorage
+}
+
+func (c *cmdStorageEdit) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("edit [<remote>:]<pool>")
+	cmd.Short = i18n.G("Edit storage pool configurations as YAML")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Edit storage pool configurations as YAML`))
+	cmd.Example = cli.FormatSection("", i18n.G(
+		`lxc storage edit [<remote>:]<pool> < pool.yaml
+    Update a storage pool using the content of pool.yaml.`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdStorageEdit) helpTemplate() string {
+	return i18n.G(
+		`### This is a yaml representation of a storage pool.
+### Any line starting with a '#' will be ignored.
+###
+### A storage pool consists of a set of configuration items.
+###
+### An example would look like:
+### name: default
+### driver: zfs
+### used_by: []
+### config:
+###   size: "61203283968"
+###   source: /home/chb/mnt/lxd_test/default.img
+###   zfs.pool_name: default`)
+}
+
+func (c *cmdStorageEdit) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, 1)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
 	if err != nil {
 		return err
 	}
 
-	fmt.Printf(i18n.G("Storage pool %s deleted")+"\n", name)
+	resource := resources[0]
 
-	return nil
-}
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing pool name"))
+	}
 
-func (c *storageCmd) doStoragePoolEdit(client lxd.ContainerServer, name string) error {
 	// If stdin isn't a terminal, read text from it
 	if !termios.IsTerminal(int(syscall.Stdin)) {
 		contents, err := ioutil.ReadAll(os.Stdin)
@@ -616,11 +265,11 @@ func (c *storageCmd) doStoragePoolEdit(client lxd.ContainerServer, name string)
 			return err
 		}
 
-		return client.UpdateStoragePool(name, newdata, "")
+		return resource.server.UpdateStoragePool(resource.name, newdata, "")
 	}
 
 	// Extract the current value
-	pool, etag, err := client.GetStoragePool(name)
+	pool, etag, err := resource.server.GetStoragePool(resource.name)
 	if err != nil {
 		return err
 	}
@@ -631,7 +280,7 @@ func (c *storageCmd) doStoragePoolEdit(client lxd.ContainerServer, name string)
 	}
 
 	// Spawn the editor
-	content, err := shared.TextEditor("", []byte(c.storagePoolEditHelp()+"\n\n"+string(data)))
+	content, err := shared.TextEditor("", []byte(c.helpTemplate()+"\n\n"+string(data)))
 	if err != nil {
 		return err
 	}
@@ -641,7 +290,7 @@ func (c *storageCmd) doStoragePoolEdit(client lxd.ContainerServer, name string)
 		newdata := api.StoragePoolPut{}
 		err = yaml.Unmarshal(content, &newdata)
 		if err == nil {
-			err = client.UpdateStoragePool(name, newdata, etag)
+			err = resource.server.UpdateStoragePool(resource.name, newdata, etag)
 		}
 
 		// Respawn the editor
@@ -662,195 +311,119 @@ func (c *storageCmd) doStoragePoolEdit(client lxd.ContainerServer, name string)
 		}
 		break
 	}
+
 	return nil
 }
 
-func (c *storageCmd) doStoragePoolGet(client lxd.ContainerServer, name string, args []string) error {
-	// we shifted @args so so it should read "<key>"
-	if len(args) != 1 {
-		return errArgs
-	}
-
-	resp, _, err := client.GetStoragePool(name)
-	if err != nil {
-		return err
-	}
-
-	for k, v := range resp.Config {
-		if k == args[0] {
-			fmt.Printf("%s\n", v)
-		}
-	}
-	return nil
+// Get
+type cmdStorageGet struct {
+	global  *cmdGlobal
+	storage *cmdStorage
 }
 
-func (c *storageCmd) doStoragePoolsList(conf *config.Config, args []string) error {
-	var remote string
-	if len(args) > 1 {
-		var name string
-		var err error
-		remote, name, err = conf.ParseRemote(args[1])
-		if err != nil {
-			return err
-		}
+func (c *cmdStorageGet) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("get [<remote>:]<pool> <key>")
+	cmd.Short = i18n.G("Get values for storage pool configuration keys")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Get values for storage pool configuration keys`))
 
-		if name != "" {
-			return fmt.Errorf(i18n.G("Cannot provide container name to list"))
-		}
-	} else {
-		remote = conf.DefaultRemote
-	}
+	cmd.Flags().StringVar(&c.storage.flagTarget, "target", "", i18n.G("Cluster member name")+"``")
+	cmd.RunE = c.Run
 
-	client, err := conf.GetContainerServer(remote)
-	if err != nil {
+	return cmd
+}
+
+func (c *cmdStorageGet) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 2, 2)
+	if exit {
 		return err
 	}
 
-	pools, err := client.GetStoragePools()
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
 	if err != nil {
 		return err
 	}
 
-	data := [][]string{}
-	for _, pool := range pools {
-		usedby := strconv.Itoa(len(pool.UsedBy))
-		details := []string{pool.Name, pool.Description, pool.Driver}
-		if client.IsClustered() {
-			details = append(details, strings.ToUpper(pool.Status))
-		} else {
-			details = append(details, pool.Config["source"])
-		}
-		details = append(details, usedby)
-		data = append(data, details)
-	}
+	resource := resources[0]
 
-	table := tablewriter.NewWriter(os.Stdout)
-	table.SetAutoWrapText(false)
-	table.SetAlignment(tablewriter.ALIGN_LEFT)
-	table.SetRowLine(true)
-
-	header := []string{
-		i18n.G("NAME"),
-		i18n.G("DESCRIPTION"),
-		i18n.G("DRIVER"),
-	}
-	if client.IsClustered() {
-		header = append(header, i18n.G("STATE"))
-	} else {
-		header = append(header, i18n.G("SOURCE"))
-	}
-	header = append(header, i18n.G("USED BY"))
-	table.SetHeader(header)
-
-	sort.Sort(byName(data))
-	table.AppendBulk(data)
-	table.Render()
-
-	return nil
-}
-
-func (c *storageCmd) doStoragePoolSet(client lxd.ContainerServer, name string, args []string) error {
-	if len(args) < 1 {
-		return errArgs
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing pool name"))
 	}
 
-	// Get the pool entry
-	pool, etag, err := client.GetStoragePool(name)
+	// Get the property
+	resp, _, err := resource.server.GetStoragePool(resource.name)
 	if err != nil {
 		return err
 	}
 
-	// Read the value
-	var value string
-	if len(args) < 2 {
-		value = ""
-	} else {
-		value = args[1]
-	}
-
-	if !termios.IsTerminal(int(syscall.Stdin)) && value == "-" {
-		buf, err := ioutil.ReadAll(os.Stdin)
-		if err != nil {
-			return fmt.Errorf("Can't read from stdin: %s", err)
+	for k, v := range resp.Config {
+		if k == args[0] {
+			fmt.Printf("%s\n", v)
 		}
-		value = string(buf[:])
-	}
-
-	// Update the pool
-	pool.Config[args[0]] = value
-
-	err = client.UpdateStoragePool(name, pool.Writable(), etag)
-	if err != nil {
-		return err
 	}
 
 	return nil
 }
 
-func (c *storageCmd) doStoragePoolShow(client lxd.ContainerServer, name string) error {
-	if name == "" {
-		return errArgs
-	}
-
-	// If a target node was specified, we return also node-specific config values.
-	if c.target != "" {
-		client = client.UseTarget(c.target)
-	}
+// Info
+type cmdStorageInfo struct {
+	global  *cmdGlobal
+	storage *cmdStorage
 
-	if c.resources {
-		res, err := client.GetStoragePoolResources(name)
-		if err != nil {
-			return err
-		}
+	flagBytes bool
+}
 
-		data, err := yaml.Marshal(&res)
-		if err != nil {
-			return err
-		}
+func (c *cmdStorageInfo) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("info [<remote>:]<pool>")
+	cmd.Short = i18n.G("Show useful information about storage pools")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Show useful information about storage pools`))
 
-		fmt.Printf("%s", data)
+	cmd.Flags().BoolVar(&c.flagBytes, "bytes", false, i18n.G("Show the used and free space in bytes"))
+	cmd.RunE = c.Run
 
-		return nil
-	}
+	return cmd
+}
 
-	pool, _, err := client.GetStoragePool(name)
-	if err != nil {
+func (c *cmdStorageInfo) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, 1)
+	if exit {
 		return err
 	}
 
-	sort.Strings(pool.UsedBy)
-
-	data, err := yaml.Marshal(&pool)
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
 	if err != nil {
 		return err
 	}
 
-	fmt.Printf("%s", data)
-
-	return nil
-}
+	resource := resources[0]
 
-func (c *storageCmd) doStoragePoolInfo(client lxd.ContainerServer, name string) error {
-	if name == "" {
-		return errArgs
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing pool name"))
 	}
 
-	pool, _, err := client.GetStoragePool(name)
+	// Get the pool information
+	pool, _, err := resource.server.GetStoragePool(resource.name)
 	if err != nil {
 		return err
 	}
 
-	res, err := client.GetStoragePoolResources(name)
-
+	res, err := resource.server.GetStoragePoolResources(resource.name)
 	if err != nil {
 		return err
 	}
 
-	//Declare the poolinfo map of maps in order to build up the yaml.
+	// Declare the poolinfo map of maps in order to build up the yaml
 	poolinfo := make(map[string]map[string]string)
 	poolusedby := make(map[string]map[string][]string)
 
-	//Translations
+	// Translations
 	usedbystring := i18n.G("used by")
 	infostring := i18n.G("info")
 	namestring := i18n.G("name")
@@ -859,7 +432,7 @@ func (c *storageCmd) doStoragePoolInfo(client lxd.ContainerServer, name string)
 	totalspacestring := i18n.G("total space")
 	spaceusedstring := i18n.G("space used")
 
-	//Initialize the usedby map
+	// Initialize the usedby map
 	poolusedby[usedbystring] = map[string][]string{}
 
 	/* Build up the usedby map
@@ -873,14 +446,14 @@ func (c *storageCmd) doStoragePoolInfo(client lxd.ContainerServer, name string)
 		poolusedby[usedbystring][bytype] = append(poolusedby[usedbystring][bytype], bywhat)
 	}
 
-	//Initialize the info map
+	// Initialize the info map
 	poolinfo[infostring] = map[string]string{}
 
-	//Build up the info map
+	// Build up the info map
 	poolinfo[infostring][namestring] = pool.Name
 	poolinfo[infostring][driverstring] = pool.Driver
 	poolinfo[infostring][descriptionstring] = pool.Description
-	if c.byteflag {
+	if c.flagBytes {
 		poolinfo[infostring][totalspacestring] = strconv.FormatUint(res.Space.Total, 10)
 		poolinfo[infostring][spaceusedstring] = strconv.FormatUint(res.Space.Used, 10)
 	} else {
@@ -904,162 +477,140 @@ func (c *storageCmd) doStoragePoolInfo(client lxd.ContainerServer, name string)
 	return nil
 }
 
-func (c *storageCmd) doStoragePoolVolumesList(conf *config.Config, remote string, pool string, args []string) error {
-	client, err := conf.GetContainerServer(remote)
-	if err != nil {
+// List
+type cmdStorageList struct {
+	global  *cmdGlobal
+	storage *cmdStorage
+}
+
+func (c *cmdStorageList) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("list [<remote>:]")
+	cmd.Aliases = []string{"ls"}
+	cmd.Short = i18n.G("List available storage pools")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`List available storage pools`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdStorageList) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 0, 1)
+	if exit {
 		return err
 	}
 
-	if pool == "" {
-		return errArgs
+	// Parse remote
+	remote := ""
+	if len(args) > 0 {
+		remote = args[0]
 	}
 
-	volumes, err := client.GetStoragePoolVolumes(pool)
+	resources, err := c.global.ParseServers(remote)
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+
+	// Get the storage pools
+	pools, err := resource.server.GetStoragePools()
 	if err != nil {
 		return err
 	}
 
 	data := [][]string{}
-	for _, volume := range volumes {
-		usedby := strconv.Itoa(len(volume.UsedBy))
-		entry := []string{volume.Type, volume.Name, volume.Description, usedby}
-		if client.IsClustered() {
-			entry = append(entry, volume.Location)
+	for _, pool := range pools {
+		usedby := strconv.Itoa(len(pool.UsedBy))
+		details := []string{pool.Name, pool.Description, pool.Driver}
+		if resource.server.IsClustered() {
+			details = append(details, strings.ToUpper(pool.Status))
+		} else {
+			details = append(details, pool.Config["source"])
 		}
-		data = append(data, entry)
+		details = append(details, usedby)
+		data = append(data, details)
 	}
 
 	table := tablewriter.NewWriter(os.Stdout)
 	table.SetAutoWrapText(false)
 	table.SetAlignment(tablewriter.ALIGN_LEFT)
 	table.SetRowLine(true)
+
 	header := []string{
-		i18n.G("TYPE"),
 		i18n.G("NAME"),
 		i18n.G("DESCRIPTION"),
-		i18n.G("USED BY"),
+		i18n.G("DRIVER"),
 	}
-	if client.IsClustered() {
-		header = append(header, i18n.G("NODE"))
+	if resource.server.IsClustered() {
+		header = append(header, i18n.G("STATE"))
+	} else {
+		header = append(header, i18n.G("SOURCE"))
 	}
+	header = append(header, i18n.G("USED BY"))
 	table.SetHeader(header)
-	sort.Sort(byNameAndType(data))
+
+	sort.Sort(byName(data))
 	table.AppendBulk(data)
 	table.Render()
 
 	return nil
 }
 
-func (c *storageCmd) doStoragePoolVolumeCreate(client lxd.ContainerServer, pool string, volume string, args []string) error {
-	// Parse the input
-	volName, volType := c.parseVolume("custom", volume)
-
-	// Create the storage volume entry
-	vol := api.StorageVolumesPost{}
-	vol.Name = volName
-	vol.Type = volType
-	vol.Config = map[string]string{}
-
-	for i := 0; i < len(args); i++ {
-		entry := strings.SplitN(args[i], "=", 2)
-		if len(entry) < 2 {
-			return errArgs
-		}
-
-		vol.Config[entry[0]] = entry[1]
-	}
-
-	// If a target was specified, create the volume on the given node.
-	if c.target != "" {
-		client = client.UseTarget(c.target)
-	}
-
-	err := client.CreateStoragePoolVolume(pool, vol)
-	if err != nil {
-		return err
-	}
-
-	fmt.Printf(i18n.G("Storage volume %s created")+"\n", volume)
-
-	return nil
+// Set
+type cmdStorageSet struct {
+	global  *cmdGlobal
+	storage *cmdStorage
 }
 
-func (c *storageCmd) doStoragePoolVolumeDelete(client lxd.ContainerServer, pool string, volume string) error {
-	// Parse the input
-	volName, volType := c.parseVolume("custom", volume)
-
-	// If a target was specified, create the volume on the given node.
-	if c.target != "" {
-		client = client.UseTarget(c.target)
-	}
-
-	// Delete the volume
-	err := client.DeleteStoragePoolVolume(pool, volType, volName)
-	if err != nil {
-		return err
-	}
+func (c *cmdStorageSet) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("set [<remote>:]<pool> <key> <value>")
+	cmd.Short = i18n.G("Set storage pool configuration keys")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Set storage pool configuration keys`))
 
-	fmt.Printf(i18n.G("Storage volume %s deleted")+"\n", volume)
+	cmd.Flags().StringVar(&c.storage.flagTarget, "target", "", i18n.G("Cluster member name")+"``")
+	cmd.RunE = c.Run
 
-	return nil
+	return cmd
 }
 
-func (c *storageCmd) doStoragePoolVolumeGet(client lxd.ContainerServer, pool string, volume string, args []string) error {
-	if len(args) != 2 {
-		return errArgs
+func (c *cmdStorageSet) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 3, 3)
+	if exit {
+		return err
 	}
 
-	// Parse input
-	volName, volType := c.parseVolume("custom", volume)
-
-	// If a target was specified, create the volume on the given node.
-	if c.target != "" {
-		client = client.UseTarget(c.target)
+	// Parse remote
+	remote := ""
+	if len(args) > 0 {
+		remote = args[0]
 	}
 
-	// Get the storage volume entry
-	resp, _, err := client.GetStoragePoolVolume(pool, volType, volName)
+	resources, err := c.global.ParseServers(remote)
 	if err != nil {
 		return err
 	}
 
-	for k, v := range resp.Config {
-		if k == args[1] {
-			fmt.Printf("%s\n", v)
-		}
-	}
-
-	return nil
-}
-
-func (c *storageCmd) doStoragePoolVolumeSet(client lxd.ContainerServer, pool string, volume string, args []string) error {
-	if len(args) < 2 {
-		return errArgs
-	}
-
-	// Parse the input
-	volName, volType := c.parseVolume("custom", volume)
+	resource := resources[0]
 
-	// If a target was specified, create the volume on the given node.
-	if c.target != "" {
-		client = client.UseTarget(c.target)
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing pool name"))
 	}
 
-	// Get the storage volume entry
-	vol, etag, err := client.GetStoragePoolVolume(pool, volType, volName)
+	// Get the pool entry
+	pool, etag, err := resource.server.GetStoragePool(resource.name)
 	if err != nil {
 		return err
 	}
 
-	// Get the value
-	key := args[1]
-	var value string
-	if len(args) < 3 {
-		value = ""
-	} else {
-		value = args[2]
-	}
-
+	// Read the value
+	value := args[2]
 	if !termios.IsTerminal(int(syscall.Stdin)) && value == "-" {
 		buf, err := ioutil.ReadAll(os.Stdin)
 		if err != nil {
@@ -1068,9 +619,10 @@ func (c *storageCmd) doStoragePoolVolumeSet(client lxd.ContainerServer, pool str
 		value = string(buf[:])
 	}
 
-	// Update the volume
-	vol.Config[key] = value
-	err = client.UpdateStoragePoolVolume(pool, vol.Type, vol.Name, vol.Writable(), etag)
+	// Update the pool
+	pool.Config[args[1]] = value
+
+	err = resource.server.UpdateStoragePool(resource.name, pool.Writable(), etag)
 	if err != nil {
 		return err
 	}
@@ -1078,214 +630,118 @@ func (c *storageCmd) doStoragePoolVolumeSet(client lxd.ContainerServer, pool str
 	return nil
 }
 
-func (c *storageCmd) doStoragePoolVolumeShow(client lxd.ContainerServer, pool string, volume string) error {
-	// Parse the input
-	volName, volType := c.parseVolume("custom", volume)
-
-	// If a target node was specified, get the volume with the matching
-	// name on that node, if any.
-	if c.target != "" {
-		client = client.UseTarget(c.target)
-	}
-
-	// Get the storage volume entry
-	vol, _, err := client.GetStoragePoolVolume(pool, volType, volName)
-	if err != nil {
-		return err
-	}
+// Show
+type cmdStorageShow struct {
+	global  *cmdGlobal
+	storage *cmdStorage
 
-	sort.Strings(vol.UsedBy)
+	flagResources bool
+}
 
-	data, err := yaml.Marshal(&vol)
-	if err != nil {
-		return err
-	}
+func (c *cmdStorageShow) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("show [<remote>:]<pool>")
+	cmd.Short = i18n.G("Show storage pool configurations and resources")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Show storage pool configurations and resources`))
 
-	fmt.Printf("%s", data)
+	cmd.Flags().BoolVar(&c.flagResources, "resources", false, i18n.G("Show the resources available to the storage pool"))
+	cmd.Flags().StringVar(&c.storage.flagTarget, "target", "", i18n.G("Cluster member name")+"``")
+	cmd.RunE = c.Run
 
-	return nil
+	return cmd
 }
 
-func (c *storageCmd) doStoragePoolVolumeCopy(source lxd.ContainerServer, sourceRemote string, conf *config.Config, src string, dst string, move bool) error {
-	// get source pool and volume name
-	srcVolName, srcVolPool := c.parseVolume("", src)
-	if srcVolPool == "" {
-		return fmt.Errorf("No storage pool for source volume specified")
-	}
-
-	// check if requested storage volume exists
-	srcVol, _, err := source.GetStoragePoolVolume(srcVolPool, "custom", srcVolName)
-	if err != nil {
-		return err
-	}
-
-	// parse destination
-	destRemote, destName, err := conf.ParseRemote(dst)
-	if err != nil {
+func (c *cmdStorageShow) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, 1)
+	if exit {
 		return err
 	}
 
-	// get destination pool and volume name
-	dstVolName, dstVolPool := c.parseVolume("", destName)
-	if dstVolPool == "" {
-		return fmt.Errorf("No storage pool for target volume specified")
+	// Parse remote
+	remote := ""
+	if len(args) > 0 {
+		remote = args[0]
 	}
 
-	// connect to the destination host
-	var dest lxd.ContainerServer
-	if sourceRemote == destRemote {
-		// source and destination are the same
-		dest = source
-	} else {
-		// destination is different, connect to it
-		dest, err = conf.GetContainerServer(destRemote)
-		if err != nil {
-			return err
-		}
-	}
-
-	// Parse the mode
-	mode := "pull"
-	if c.mode != "" {
-		mode = c.mode
-	}
-
-	var op lxd.RemoteOperation
-	opMsg := ""
-	finalMsg := ""
-	if move && sourceRemote == destRemote {
-		args := &lxd.StoragePoolVolumeMoveArgs{}
-		args.Name = dstVolName
-		args.Mode = mode
-		op, err = dest.MoveStoragePoolVolume(dstVolPool, source, srcVolPool, *srcVol, args)
-		opMsg = i18n.G("Moving the storage volume: %s")
-		finalMsg = i18n.G("Storage volume moved successfully!")
-	} else {
-		args := &lxd.StoragePoolVolumeCopyArgs{}
-		args.Name = dstVolName
-		args.Mode = mode
-		op, err = dest.CopyStoragePoolVolume(dstVolPool, source, srcVolPool, *srcVol, args)
-		opMsg = i18n.G("Copying the storage volume: %s")
-		finalMsg = i18n.G("Storage volume copied successfully!")
-	}
+	resources, err := c.global.ParseServers(remote)
 	if err != nil {
 		return err
 	}
-	// Register progress handler
-	progress := utils.ProgressRenderer{Format: opMsg}
-	_, err = op.AddHandler(progress.UpdateOp)
-	if err != nil {
-		progress.Done("")
-		return err
-	}
 
-	progress.Done(finalMsg)
-	err = op.Wait()
-	if err != nil {
-		return err
-	}
+	resource := resources[0]
+	client := resource.server
 
-	if move && sourceRemote != destRemote {
-		err := source.DeleteStoragePoolVolume(srcVolPool, srcVol.Type, srcVolName)
-		if err != nil {
-			return err
-		}
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing pool name"))
 	}
 
-	return nil
-}
-
-func (c *storageCmd) doStoragePoolVolumeEdit(client lxd.ContainerServer, pool string, volume string) error {
-	// Parse the input
-	volName, volType := c.parseVolume("custom", volume)
+	// If a target node was specified, we return also node-specific config values.
+	if c.storage.flagTarget != "" {
+		client = client.UseTarget(c.storage.flagTarget)
+	}
 
-	// If stdin isn't a terminal, read text from it
-	if !termios.IsTerminal(int(syscall.Stdin)) {
-		contents, err := ioutil.ReadAll(os.Stdin)
+	if c.flagResources {
+		res, err := client.GetStoragePoolResources(resource.name)
 		if err != nil {
 			return err
 		}
 
-		newdata := api.StorageVolumePut{}
-		err = yaml.Unmarshal(contents, &newdata)
+		data, err := yaml.Marshal(&res)
 		if err != nil {
 			return err
 		}
 
-		return client.UpdateStoragePoolVolume(pool, volType, volName, newdata, "")
-	}
+		fmt.Printf("%s", data)
 
-	// If a target was specified, create the volume on the given node.
-	if c.target != "" {
-		client = client.UseTarget(c.target)
+		return nil
 	}
 
-	// Extract the current value
-	vol, etag, err := client.GetStoragePoolVolume(pool, volType, volName)
+	pool, _, err := client.GetStoragePool(resource.name)
 	if err != nil {
 		return err
 	}
 
-	data, err := yaml.Marshal(&vol)
-	if err != nil {
-		return err
-	}
+	sort.Strings(pool.UsedBy)
 
-	// Spawn the editor
-	content, err := shared.TextEditor("", []byte(c.storagePoolVolumeEditHelp()+"\n\n"+string(data)))
+	data, err := yaml.Marshal(&pool)
 	if err != nil {
 		return err
 	}
 
-	for {
-		// Parse the text received from the editor
-		newdata := api.StorageVolume{}
-		err = yaml.Unmarshal(content, &newdata)
-		if err == nil {
-			err = client.UpdateStoragePoolVolume(pool, vol.Type, vol.Name, newdata.Writable(), etag)
-		}
-
-		// Respawn the editor
-		if err != nil {
-			fmt.Fprintf(os.Stderr, i18n.G("Config parsing error: %s")+"\n", err)
-			fmt.Println(i18n.G("Press enter to open the editor again"))
-
-			_, err := os.Stdin.Read(make([]byte, 1))
-			if err != nil {
-				return err
-			}
+	fmt.Printf("%s", data)
 
-			content, err = shared.TextEditor("", content)
-			if err != nil {
-				return err
-			}
-			continue
-		}
-		break
-	}
 	return nil
 }
 
-func (c *storageCmd) doStoragePoolVolumeRename(client lxd.ContainerServer, pool string, volume string, args []string) error {
-	// Parse the input
-	volName, volType := c.parseVolume("custom", volume)
+// Unset
+type cmdStorageUnset struct {
+	global     *cmdGlobal
+	storage    *cmdStorage
+	storageSet *cmdStorageSet
+}
 
-	// Create the storage volume entry
-	vol := api.StorageVolumePost{}
-	vol.Name = args[4]
+func (c *cmdStorageUnset) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("unset [<remote>:]<pool> <key>")
+	cmd.Short = i18n.G("Unset storage pool configuration keys")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Unset storage pool configuration keys`))
 
-	// If a target node was specified, get the volume with the matching
-	// name on that node, if any.
-	if c.target != "" {
-		client = client.UseTarget(c.target)
-	}
+	cmd.Flags().StringVar(&c.storage.flagTarget, "target", "", i18n.G("Cluster member name")+"``")
+	cmd.RunE = c.Run
 
-	err := client.RenameStoragePoolVolume(pool, volType, volName, vol)
-	if err != nil {
+	return cmd
+}
+
+func (c *cmdStorageUnset) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 2, 2)
+	if exit {
 		return err
 	}
 
-	fmt.Printf(i18n.G(`Renamed storage volume from "%s" to "%s"`)+"\n", volName, vol.Name)
-
-	return nil
+	args = append(args, "")
+	return c.storageSet.Run(cmd, args)
 }
diff --git a/lxc/storage_volume.go b/lxc/storage_volume.go
new file mode 100644
index 000000000..cd6830890
--- /dev/null
+++ b/lxc/storage_volume.go
@@ -0,0 +1,1259 @@
+package main
+
+import (
+	"fmt"
+	"io/ioutil"
+	"os"
+	"sort"
+	"strconv"
+	"strings"
+	"syscall"
+
+	"github.com/olekukonko/tablewriter"
+	"github.com/spf13/cobra"
+	"gopkg.in/yaml.v2"
+
+	"github.com/lxc/lxd/client"
+	"github.com/lxc/lxd/lxc/utils"
+	"github.com/lxc/lxd/shared"
+	"github.com/lxc/lxd/shared/api"
+	cli "github.com/lxc/lxd/shared/cmd"
+	"github.com/lxc/lxd/shared/i18n"
+	"github.com/lxc/lxd/shared/termios"
+)
+
+type cmdStorageVolume struct {
+	global  *cmdGlobal
+	storage *cmdStorage
+}
+
+func (c *cmdStorageVolume) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("volume")
+	cmd.Short = i18n.G("Manage storage volumes")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Manage storage volumes
+
+Unless specified through a prefix, all volume operations affect "custom" (user created) volumes.`))
+
+	// Attach
+	storageVolumeAttachCmd := cmdStorageVolumeAttach{global: c.global, storage: c.storage, storageVolume: c}
+	cmd.AddCommand(storageVolumeAttachCmd.Command())
+
+	// Attach profile
+	storageVolumeAttachProfileCmd := cmdStorageVolumeAttachProfile{global: c.global, storage: c.storage, storageVolume: c}
+	cmd.AddCommand(storageVolumeAttachProfileCmd.Command())
+
+	// Copy
+	storageVolumeCopyCmd := cmdStorageVolumeCopy{global: c.global, storage: c.storage, storageVolume: c}
+	cmd.AddCommand(storageVolumeCopyCmd.Command())
+
+	// Create
+	storageVolumeCreateCmd := cmdStorageVolumeCreate{global: c.global, storage: c.storage, storageVolume: c}
+	cmd.AddCommand(storageVolumeCreateCmd.Command())
+
+	// Delete
+	storageVolumeDeleteCmd := cmdStorageVolumeDelete{global: c.global, storage: c.storage, storageVolume: c}
+	cmd.AddCommand(storageVolumeDeleteCmd.Command())
+
+	// Detach
+	storageVolumeDetachCmd := cmdStorageVolumeDetach{global: c.global, storage: c.storage, storageVolume: c}
+	cmd.AddCommand(storageVolumeDetachCmd.Command())
+
+	// Detach profile
+	storageVolumeDetachProfileCmd := cmdStorageVolumeDetachProfile{global: c.global, storage: c.storage, storageVolume: c}
+	cmd.AddCommand(storageVolumeDetachProfileCmd.Command())
+
+	// Edit
+	storageVolumeEditCmd := cmdStorageVolumeEdit{global: c.global, storage: c.storage, storageVolume: c}
+	cmd.AddCommand(storageVolumeEditCmd.Command())
+
+	// Get
+	storageVolumeGetCmd := cmdStorageVolumeGet{global: c.global, storage: c.storage, storageVolume: c}
+	cmd.AddCommand(storageVolumeGetCmd.Command())
+
+	// List
+	storageVolumeListCmd := cmdStorageVolumeList{global: c.global, storage: c.storage, storageVolume: c}
+	cmd.AddCommand(storageVolumeListCmd.Command())
+
+	// Move
+	storageVolumeMoveCmd := cmdStorageVolumeMove{global: c.global, storage: c.storage, storageVolume: c, storageVolumeCopy: &storageVolumeCopyCmd}
+	cmd.AddCommand(storageVolumeMoveCmd.Command())
+
+	// Rename
+	storageVolumeRenameCmd := cmdStorageVolumeRename{global: c.global, storage: c.storage, storageVolume: c}
+	cmd.AddCommand(storageVolumeRenameCmd.Command())
+
+	// Set
+	storageVolumeSetCmd := cmdStorageVolumeSet{global: c.global, storage: c.storage, storageVolume: c}
+	cmd.AddCommand(storageVolumeSetCmd.Command())
+
+	// Show
+	storageVolumeShowCmd := cmdStorageVolumeShow{global: c.global, storage: c.storage, storageVolume: c}
+	cmd.AddCommand(storageVolumeShowCmd.Command())
+
+	// Unset
+	storageVolumeUnsetCmd := cmdStorageVolumeUnset{global: c.global, storage: c.storage, storageVolume: c, storageVolumeSet: &storageVolumeSetCmd}
+	cmd.AddCommand(storageVolumeUnsetCmd.Command())
+
+	return cmd
+}
+
+func (c *cmdStorageVolume) parseVolume(defaultType string, name string) (string, string) {
+	fields := strings.SplitN(name, "/", 2)
+	if len(fields) == 1 {
+		return fields[0], defaultType
+	}
+
+	return fields[1], fields[0]
+}
+
+// Attach
+type cmdStorageVolumeAttach struct {
+	global        *cmdGlobal
+	storage       *cmdStorage
+	storageVolume *cmdStorageVolume
+}
+
+func (c *cmdStorageVolumeAttach) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("attach [<remote>:]<pool> <volume> <container> [device name] <path>")
+	cmd.Short = i18n.G("Attach new storage volumes to containers")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Attach new storage volumes to containers`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdStorageVolumeAttach) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 4, 5)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing pool name"))
+	}
+
+	// Attach the volume
+	devPath := ""
+	devName := ""
+	if len(args) == 4 {
+		// Only the path has been given to us.
+		devPath = args[3]
+		devName = args[1]
+	} else if len(args) == 5 {
+		// Path and device name have been given to us.
+		devName = args[3]
+		devPath = args[4]
+	}
+
+	volName, volType := c.storageVolume.parseVolume("custom", args[1])
+	if volType != "custom" {
+		return fmt.Errorf(i18n.G("Only \"custom\" volumes can be attached to containers."))
+	}
+
+	// Check if the requested storage volume actually exists
+	vol, _, err := resource.server.GetStoragePoolVolume(resource.name, volType, volName)
+	if err != nil {
+		return err
+	}
+
+	// Prepare the container's device entry
+	device := map[string]string{
+		"type":   "disk",
+		"pool":   resource.name,
+		"path":   devPath,
+		"source": vol.Name,
+	}
+
+	// Add the device to the container
+	err = containerDeviceAdd(resource.server, args[2], devName, device)
+	if err != nil {
+		return err
+	}
+
+	return nil
+}
+
+// Attach profile
+type cmdStorageVolumeAttachProfile struct {
+	global        *cmdGlobal
+	storage       *cmdStorage
+	storageVolume *cmdStorageVolume
+}
+
+func (c *cmdStorageVolumeAttachProfile) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("attach-profile [<remote:>]<pool> <volume> <profile> [device name] <path>")
+	cmd.Short = i18n.G("Attach new storage volumes to profiles")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Attach new storage volumes to profiles`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdStorageVolumeAttachProfile) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 4, 5)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing pool name"))
+	}
+
+	// Attach the volume
+	devPath := ""
+	devName := ""
+	if len(args) == 4 {
+		// Only the path has been given to us.
+		devPath = args[3]
+		devName = args[1]
+	} else if len(args) == 5 {
+		// Path and device name have been given to us.
+		devName = args[3]
+		devPath = args[4]
+	}
+
+	volName, volType := c.storageVolume.parseVolume("custom", args[1])
+	if volType != "custom" {
+		return fmt.Errorf(i18n.G("Only \"custom\" volumes can be attached to containers."))
+	}
+
+	// Check if the requested storage volume actually exists
+	vol, _, err := resource.server.GetStoragePoolVolume(resource.name, volType, volName)
+	if err != nil {
+		return err
+	}
+
+	// Prepare the container's device entry
+	device := map[string]string{
+		"type":   "disk",
+		"pool":   resource.name,
+		"path":   devPath,
+		"source": vol.Name,
+	}
+
+	// Add the device to the container
+	err = profileDeviceAdd(resource.server, args[2], devName, device)
+	if err != nil {
+		return err
+	}
+
+	return nil
+}
+
+// Copy
+type cmdStorageVolumeCopy struct {
+	global        *cmdGlobal
+	storage       *cmdStorage
+	storageVolume *cmdStorageVolume
+
+	flagMode string
+}
+
+func (c *cmdStorageVolumeCopy) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("copy <pool>/<volume> <pool>/<volume>")
+	cmd.Aliases = []string{"cp"}
+	cmd.Short = i18n.G("Copy storage volumes")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Copy storage volumes`))
+
+	cmd.Flags().StringVar(&c.flagMode, "mode", "pull", i18n.G("Transfer mode. One of pull (default), push or relay.")+"``")
+	cmd.Flags().StringVar(&c.storage.flagTarget, "target", "", i18n.G("Cluster member name")+"``")
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdStorageVolumeCopy) Run(cmd *cobra.Command, args []string) error {
+	conf := c.global.conf
+
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 2, 2)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing source volume name"))
+	}
+
+	source := resource.server
+	sourceRemote := resource.name
+	src := resource.name
+	dst := args[1]
+
+	// Get source pool and volume name
+	srcVolName, srcVolPool := c.storageVolume.parseVolume("", src)
+	if srcVolPool == "" {
+		return fmt.Errorf("No storage pool for source volume specified")
+	}
+
+	// Check if requested storage volume exists
+	srcVol, _, err := source.GetStoragePoolVolume(srcVolPool, "custom", srcVolName)
+	if err != nil {
+		return err
+	}
+
+	// Parse destination
+	destRemote, destName, err := conf.ParseRemote(dst)
+	if err != nil {
+		return err
+	}
+
+	// Get destination pool and volume name
+	dstVolName, dstVolPool := c.storageVolume.parseVolume("", destName)
+	if dstVolPool == "" {
+		return fmt.Errorf("No storage pool for target volume specified")
+	}
+
+	// Connect to the destination host
+	var dest lxd.ContainerServer
+	if sourceRemote == destRemote {
+		// Source and destination are the same
+		dest = source
+	} else {
+		// Destination is different, connect to it
+		dest, err = conf.GetContainerServer(destRemote)
+		if err != nil {
+			return err
+		}
+	}
+
+	// Parse the mode
+	mode := "pull"
+	if c.flagMode != "" {
+		mode = c.flagMode
+	}
+
+	var op lxd.RemoteOperation
+	opMsg := ""
+	finalMsg := ""
+	if cmd.Name() == "move" && sourceRemote == destRemote {
+		args := &lxd.StoragePoolVolumeMoveArgs{}
+		args.Name = dstVolName
+		args.Mode = mode
+
+		op, err = dest.MoveStoragePoolVolume(dstVolPool, source, srcVolPool, *srcVol, args)
+		if err != nil {
+			return err
+		}
+
+		opMsg = i18n.G("Moving the storage volume: %s")
+		finalMsg = i18n.G("Storage volume moved successfully!")
+	} else {
+		args := &lxd.StoragePoolVolumeCopyArgs{}
+		args.Name = dstVolName
+		args.Mode = mode
+
+		op, err = dest.CopyStoragePoolVolume(dstVolPool, source, srcVolPool, *srcVol, args)
+		if err != nil {
+			return err
+		}
+
+		opMsg = i18n.G("Copying the storage volume: %s")
+		finalMsg = i18n.G("Storage volume copied successfully!")
+	}
+
+	// Register progress handler
+	progress := utils.ProgressRenderer{Format: opMsg}
+	_, err = op.AddHandler(progress.UpdateOp)
+	if err != nil {
+		progress.Done("")
+		return err
+	}
+
+	progress.Done(finalMsg)
+	err = op.Wait()
+	if err != nil {
+		return err
+	}
+
+	if cmd.Name() == "move" && sourceRemote != destRemote {
+		err := source.DeleteStoragePoolVolume(srcVolPool, srcVol.Type, srcVolName)
+		if err != nil {
+			return err
+		}
+	}
+
+	return nil
+}
+
+// Create
+type cmdStorageVolumeCreate struct {
+	global        *cmdGlobal
+	storage       *cmdStorage
+	storageVolume *cmdStorageVolume
+}
+
+func (c *cmdStorageVolumeCreate) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("create [<remote>:]<pool> <volume> [key=value]...")
+	cmd.Short = i18n.G("Create new custom storage volumes")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Create new custom storage volumes`))
+
+	cmd.Flags().StringVar(&c.storage.flagTarget, "target", "", i18n.G("Cluster member name")+"``")
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdStorageVolumeCreate) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 2, -1)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing pool name"))
+	}
+
+	client := resource.server
+
+	// Parse the input
+	volName, volType := c.storageVolume.parseVolume("custom", args[1])
+
+	// Create the storage volume entry
+	vol := api.StorageVolumesPost{}
+	vol.Name = volName
+	vol.Type = volType
+	vol.Config = map[string]string{}
+
+	for i := 2; i < len(args); i++ {
+		entry := strings.SplitN(args[i], "=", 2)
+		if len(entry) < 2 {
+			return fmt.Errorf(i18n.G("Bad key=value pair: %s"), entry)
+		}
+
+		vol.Config[entry[0]] = entry[1]
+	}
+
+	// If a target was specified, create the volume on the given node.
+	if c.storage.flagTarget != "" {
+		client = client.UseTarget(c.storage.flagTarget)
+	}
+
+	err = client.CreateStoragePoolVolume(resource.name, vol)
+	if err != nil {
+		return err
+	}
+
+	fmt.Printf(i18n.G("Storage volume %s created")+"\n", args[1])
+
+	return nil
+}
+
+// Delete
+type cmdStorageVolumeDelete struct {
+	global        *cmdGlobal
+	storage       *cmdStorage
+	storageVolume *cmdStorageVolume
+}
+
+func (c *cmdStorageVolumeDelete) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("delete [<remote>:]<pool> <volume>")
+	cmd.Aliases = []string{"rm"}
+	cmd.Short = i18n.G("Delete storage volumes")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Delete storage volumes`))
+
+	cmd.Flags().StringVar(&c.storage.flagTarget, "target", "", i18n.G("Cluster member name")+"``")
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdStorageVolumeDelete) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 2, 2)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing pool name"))
+	}
+
+	client := resource.server
+
+	// Parse the input
+	volName, volType := c.storageVolume.parseVolume("custom", args[1])
+
+	// If a target was specified, create the volume on the given node.
+	if c.storage.flagTarget != "" {
+		client = client.UseTarget(c.storage.flagTarget)
+	}
+
+	// Delete the volume
+	err = client.DeleteStoragePoolVolume(resource.name, volType, volName)
+	if err != nil {
+		return err
+	}
+
+	fmt.Printf(i18n.G("Storage volume %s deleted")+"\n", args[1])
+
+	return nil
+}
+
+// Detach
+type cmdStorageVolumeDetach struct {
+	global        *cmdGlobal
+	storage       *cmdStorage
+	storageVolume *cmdStorageVolume
+}
+
+func (c *cmdStorageVolumeDetach) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("detach [<remote>:]<pool> <volume> <container> [device name]")
+	cmd.Short = i18n.G("Detach storage volumes from containers")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Detach storage volumes from containers`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdStorageVolumeDetach) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 3, 4)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing pool name"))
+	}
+
+	// Detach storage volumes
+	devName := ""
+	if len(args) == 4 {
+		devName = args[3]
+	}
+
+	// Get the container entry
+	container, etag, err := resource.server.GetContainer(args[2])
+	if err != nil {
+		return err
+	}
+
+	// Find the device
+	if devName == "" {
+		for n, d := range container.Devices {
+			if d["type"] == "disk" && d["pool"] == resource.name && d["source"] == args[1] {
+				if devName != "" {
+					return fmt.Errorf(i18n.G("More than one device matches, specify the device name."))
+				}
+
+				devName = n
+			}
+		}
+	}
+
+	if devName == "" {
+		return fmt.Errorf(i18n.G("No device found for this storage volume."))
+	}
+
+	_, ok := container.Devices[devName]
+	if !ok {
+		return fmt.Errorf(i18n.G("The specified device doesn't exist"))
+	}
+
+	// Remove the device
+	delete(container.Devices, devName)
+	op, err := resource.server.UpdateContainer(args[2], container.Writable(), etag)
+	if err != nil {
+		return err
+	}
+
+	return op.Wait()
+}
+
+// Detach profile
+type cmdStorageVolumeDetachProfile struct {
+	global        *cmdGlobal
+	storage       *cmdStorage
+	storageVolume *cmdStorageVolume
+}
+
+func (c *cmdStorageVolumeDetachProfile) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("detach-profile [<remote:>]<pool> <volume> <profile> [device name]")
+	cmd.Short = i18n.G("Detach storage volumes from profiles")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Detach storage volumes from profiles`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdStorageVolumeDetachProfile) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 3, 4)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing pool name"))
+	}
+
+	devName := ""
+	if len(args) > 3 {
+		devName = args[3]
+	}
+
+	// Get the profile entry
+	profile, etag, err := resource.server.GetProfile(args[2])
+	if err != nil {
+		return err
+	}
+
+	// Find the device
+	if devName == "" {
+		for n, d := range profile.Devices {
+			if d["type"] == "disk" && d["pool"] == resource.name && d["source"] == args[1] {
+				if devName != "" {
+					return fmt.Errorf(i18n.G("More than one device matches, specify the device name."))
+				}
+
+				devName = n
+			}
+		}
+	}
+
+	if devName == "" {
+		return fmt.Errorf(i18n.G("No device found for this storage volume."))
+	}
+
+	_, ok := profile.Devices[devName]
+	if !ok {
+		return fmt.Errorf(i18n.G("The specified device doesn't exist"))
+	}
+
+	// Remove the device
+	delete(profile.Devices, devName)
+	err = resource.server.UpdateProfile(args[2], profile.Writable(), etag)
+	if err != nil {
+		return err
+	}
+
+	return nil
+}
+
+// Edit
+type cmdStorageVolumeEdit struct {
+	global        *cmdGlobal
+	storage       *cmdStorage
+	storageVolume *cmdStorageVolume
+}
+
+func (c *cmdStorageVolumeEdit) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("edit [<remote>:]<pool> <volume>")
+	cmd.Short = i18n.G("Edit storage volume configurations as YAML")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Edit storage volume configurations as YAML`))
+	cmd.Example = cli.FormatSection("", i18n.G(
+		`lxc storage volume edit [<remote>:]<pool> <volume> < volume.yaml
+    Update a storage volume using the content of pool.yaml.`))
+
+	cmd.Flags().StringVar(&c.storage.flagTarget, "target", "", i18n.G("Cluster member name")+"``")
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdStorageVolumeEdit) helpTemplate() string {
+	return i18n.G(
+		`### This is a yaml representation of a storage volume.
+### Any line starting with a '# will be ignored.
+###
+### A storage volume consists of a set of configuration items.
+###
+### name: vol1
+### type: custom
+### used_by: []
+### config:
+###   size: "61203283968"`)
+}
+
+func (c *cmdStorageVolumeEdit) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 2, 2)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing pool name"))
+	}
+
+	client := resource.server
+
+	// Parse the input
+	volName, volType := c.storageVolume.parseVolume("custom", args[1])
+
+	// If stdin isn't a terminal, read text from it
+	if !termios.IsTerminal(int(syscall.Stdin)) {
+		contents, err := ioutil.ReadAll(os.Stdin)
+		if err != nil {
+			return err
+		}
+
+		newdata := api.StorageVolumePut{}
+		err = yaml.Unmarshal(contents, &newdata)
+		if err != nil {
+			return err
+		}
+
+		return client.UpdateStoragePoolVolume(resource.name, volType, volName, newdata, "")
+	}
+
+	// If a target was specified, create the volume on the given node.
+	if c.storage.flagTarget != "" {
+		client = client.UseTarget(c.storage.flagTarget)
+	}
+
+	// Extract the current value
+	vol, etag, err := client.GetStoragePoolVolume(resource.name, volType, volName)
+	if err != nil {
+		return err
+	}
+
+	data, err := yaml.Marshal(&vol)
+	if err != nil {
+		return err
+	}
+
+	// Spawn the editor
+	content, err := shared.TextEditor("", []byte(c.helpTemplate()+"\n\n"+string(data)))
+	if err != nil {
+		return err
+	}
+
+	for {
+		// Parse the text received from the editor
+		newdata := api.StorageVolume{}
+		err = yaml.Unmarshal(content, &newdata)
+		if err == nil {
+			err = client.UpdateStoragePoolVolume(resource.name, vol.Type, vol.Name, newdata.Writable(), etag)
+		}
+
+		// Respawn the editor
+		if err != nil {
+			fmt.Fprintf(os.Stderr, i18n.G("Config parsing error: %s")+"\n", err)
+			fmt.Println(i18n.G("Press enter to open the editor again"))
+
+			_, err := os.Stdin.Read(make([]byte, 1))
+			if err != nil {
+				return err
+			}
+
+			content, err = shared.TextEditor("", content)
+			if err != nil {
+				return err
+			}
+			continue
+		}
+		break
+	}
+
+	return nil
+}
+
+// Get
+type cmdStorageVolumeGet struct {
+	global        *cmdGlobal
+	storage       *cmdStorage
+	storageVolume *cmdStorageVolume
+}
+
+func (c *cmdStorageVolumeGet) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("get [<remote>:]<pool> <volume> <key>")
+	cmd.Short = i18n.G("Get values for storage volume configuration keys")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Get values for storage volume configuration keys`))
+
+	cmd.Flags().StringVar(&c.storage.flagTarget, "target", "", i18n.G("Cluster member name")+"``")
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdStorageVolumeGet) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 3, 3)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing pool name"))
+	}
+
+	client := resource.server
+
+	// Parse input
+	volName, volType := c.storageVolume.parseVolume("custom", args[1])
+
+	// If a target was specified, create the volume on the given node.
+	if c.storage.flagTarget != "" {
+		client = client.UseTarget(c.storage.flagTarget)
+	}
+
+	// Get the storage volume entry
+	resp, _, err := client.GetStoragePoolVolume(resource.name, volType, volName)
+	if err != nil {
+		return err
+	}
+
+	for k, v := range resp.Config {
+		if k == args[1] {
+			fmt.Printf("%s\n", v)
+		}
+	}
+
+	return nil
+}
+
+// List
+type cmdStorageVolumeList struct {
+	global        *cmdGlobal
+	storage       *cmdStorage
+	storageVolume *cmdStorageVolume
+}
+
+func (c *cmdStorageVolumeList) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("list [<remote>:]<pool>")
+	cmd.Aliases = []string{"ls"}
+	cmd.Short = i18n.G("List storage volumes")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`List storage volumes`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdStorageVolumeList) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, 1)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing pool name"))
+	}
+
+	volumes, err := resource.server.GetStoragePoolVolumes(resource.name)
+	if err != nil {
+		return err
+	}
+
+	data := [][]string{}
+	for _, volume := range volumes {
+		usedby := strconv.Itoa(len(volume.UsedBy))
+		entry := []string{volume.Type, volume.Name, volume.Description, usedby}
+		if resource.server.IsClustered() {
+			entry = append(entry, volume.Location)
+		}
+		data = append(data, entry)
+	}
+
+	table := tablewriter.NewWriter(os.Stdout)
+	table.SetAutoWrapText(false)
+	table.SetAlignment(tablewriter.ALIGN_LEFT)
+	table.SetRowLine(true)
+	header := []string{
+		i18n.G("TYPE"),
+		i18n.G("NAME"),
+		i18n.G("DESCRIPTION"),
+		i18n.G("USED BY"),
+	}
+	if resource.server.IsClustered() {
+		header = append(header, i18n.G("NODE"))
+	}
+	table.SetHeader(header)
+	sort.Sort(byNameAndType(data))
+	table.AppendBulk(data)
+	table.Render()
+
+	return nil
+}
+
+// Move
+type cmdStorageVolumeMove struct {
+	global            *cmdGlobal
+	storage           *cmdStorage
+	storageVolume     *cmdStorageVolume
+	storageVolumeCopy *cmdStorageVolumeCopy
+}
+
+func (c *cmdStorageVolumeMove) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("move [<pool>/]<volume> [<pool>/]<volume>")
+	cmd.Aliases = []string{"mv"}
+	cmd.Short = i18n.G("Move storage volumes between pools")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Move storage volumes between pools`))
+
+	cmd.Flags().StringVar(&c.storageVolumeCopy.flagMode, "mode", "pull", i18n.G("Transfer mode, one of pull (default), push or relay")+"``")
+	cmd.Flags().StringVar(&c.storage.flagTarget, "target", "", i18n.G("Cluster member name")+"``")
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdStorageVolumeMove) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 2, 2)
+	if exit {
+		return err
+	}
+
+	return c.storageVolumeCopy.Run(cmd, args)
+}
+
+// Rename
+type cmdStorageVolumeRename struct {
+	global        *cmdGlobal
+	storage       *cmdStorage
+	storageVolume *cmdStorageVolume
+}
+
+func (c *cmdStorageVolumeRename) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("rename [<remote>:]<pool> <old name> <new name>")
+	cmd.Short = i18n.G("Rename storage volumes")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Rename storage volumes`))
+
+	cmd.Flags().StringVar(&c.storage.flagTarget, "target", "", i18n.G("Cluster member name")+"``")
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdStorageVolumeRename) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 3, 3)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing pool name"))
+	}
+
+	client := resource.server
+
+	// Parse the input
+	volName, volType := c.storageVolume.parseVolume("custom", args[1])
+
+	// Create the storage volume entry
+	vol := api.StorageVolumePost{}
+	vol.Name = args[2]
+
+	// If a target node was specified, get the volume with the matching
+	// name on that node, if any.
+	if c.storage.flagTarget != "" {
+		client = client.UseTarget(c.storage.flagTarget)
+	}
+
+	err = client.RenameStoragePoolVolume(resource.name, volType, volName, vol)
+	if err != nil {
+		return err
+	}
+
+	fmt.Printf(i18n.G(`Renamed storage volume from "%s" to "%s"`)+"\n", volName, vol.Name)
+
+	return nil
+}
+
+// Set
+type cmdStorageVolumeSet struct {
+	global        *cmdGlobal
+	storage       *cmdStorage
+	storageVolume *cmdStorageVolume
+}
+
+func (c *cmdStorageVolumeSet) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("set [<remote>:]<pool> <volume> <key> <value>")
+	cmd.Short = i18n.G("Set storage volume configuration keys")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Set storage volume configuration keys`))
+
+	cmd.Flags().StringVar(&c.storage.flagTarget, "target", "", i18n.G("Cluster member name")+"``")
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdStorageVolumeSet) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 4, 4)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing pool name"))
+	}
+
+	client := resource.server
+
+	// Parse the input
+	volName, volType := c.storageVolume.parseVolume("custom", args[1])
+
+	// If a target was specified, create the volume on the given node.
+	if c.storage.flagTarget != "" {
+		client = client.UseTarget(c.storage.flagTarget)
+	}
+
+	// Get the storage volume entry
+	vol, etag, err := resource.server.GetStoragePoolVolume(resource.name, volType, volName)
+	if err != nil {
+		return err
+	}
+
+	// Get the value
+	key := args[2]
+	value := args[3]
+
+	if !termios.IsTerminal(int(syscall.Stdin)) && value == "-" {
+		buf, err := ioutil.ReadAll(os.Stdin)
+		if err != nil {
+			return fmt.Errorf("Can't read from stdin: %s", err)
+		}
+		value = string(buf[:])
+	}
+
+	// Update the volume
+	vol.Config[key] = value
+	err = client.UpdateStoragePoolVolume(resource.name, vol.Type, vol.Name, vol.Writable(), etag)
+	if err != nil {
+		return err
+	}
+
+	return nil
+}
+
+// Show
+type cmdStorageVolumeShow struct {
+	global        *cmdGlobal
+	storage       *cmdStorage
+	storageVolume *cmdStorageVolume
+}
+
+func (c *cmdStorageVolumeShow) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("show [<remote>:]<pool> <volume>")
+	cmd.Short = i18n.G("Show storage volum configurations")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Show storage volume configurations`))
+	cmd.Example = cli.FormatSection("", i18n.G(
+		`lxc storage volume show default data
+    Will show the properties of a custom volume called "data" in the "default" pool.
+
+lxc storage volume show default container/data
+    Will show the properties of the filesystem for a container called "data" in the "default" pool.`))
+
+	cmd.Flags().StringVar(&c.storage.flagTarget, "target", "", i18n.G("Cluster member name")+"``")
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdStorageVolumeShow) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 2, 2)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing pool name"))
+	}
+
+	client := resource.server
+
+	// Parse the input
+	volName, volType := c.storageVolume.parseVolume("custom", args[1])
+
+	// If a target node was specified, get the volume with the matching
+	// name on that node, if any.
+	if c.storage.flagTarget != "" {
+		client = client.UseTarget(c.storage.flagTarget)
+	}
+
+	// Get the storage volume entry
+	vol, _, err := client.GetStoragePoolVolume(resource.name, volType, volName)
+	if err != nil {
+		return err
+	}
+
+	sort.Strings(vol.UsedBy)
+
+	data, err := yaml.Marshal(&vol)
+	if err != nil {
+		return err
+	}
+
+	fmt.Printf("%s", data)
+
+	return nil
+}
+
+// Unset
+type cmdStorageVolumeUnset struct {
+	global           *cmdGlobal
+	storage          *cmdStorage
+	storageVolume    *cmdStorageVolume
+	storageVolumeSet *cmdStorageVolumeSet
+}
+
+func (c *cmdStorageVolumeUnset) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("unset [<remote>:]<pool> <volume> <key>")
+	cmd.Short = i18n.G("Unset storage volume configuration keys")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Unset storage volume configuration keys`))
+
+	cmd.Flags().StringVar(&c.storage.flagTarget, "target", "", i18n.G("Cluster member name")+"``")
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdStorageVolumeUnset) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 3, 3)
+	if exit {
+		return err
+	}
+
+	args = append(args, "")
+	return c.storageVolumeSet.Run(cmd, args)
+}

From 7805f7f492ceec33fb5c235939f9980f5b873e2c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Wed, 28 Mar 2018 16:14:05 -0400
Subject: [PATCH 30/39] lxc/manpage: Remove sub-command
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    |  1 -
 lxc/manpage.go | 67 ----------------------------------------------------------
 2 files changed, 68 deletions(-)
 delete mode 100644 lxc/manpage.go

diff --git a/lxc/main.go b/lxc/main.go
index 36de0f3b7..dc02b4962 100644
--- a/lxc/main.go
+++ b/lxc/main.go
@@ -347,7 +347,6 @@ type command interface {
 
 var commands = map[string]command{
 	"config":  &configCmd{},
-	"manpage": &manpageCmd{},
 	"profile": &profileCmd{},
 }
 
diff --git a/lxc/manpage.go b/lxc/manpage.go
deleted file mode 100644
index edf3ceb9e..000000000
--- a/lxc/manpage.go
+++ /dev/null
@@ -1,67 +0,0 @@
-package main
-
-import (
-	"fmt"
-	"os"
-	"os/exec"
-	"path/filepath"
-
-	"github.com/lxc/lxd/lxc/config"
-	"github.com/lxc/lxd/shared/i18n"
-)
-
-type manpageCmd struct{}
-
-func (c *manpageCmd) showByDefault() bool {
-	return false
-}
-
-func (c *manpageCmd) usage() string {
-	return i18n.G(
-		`Usage: lxc manpage <directory>
-
-Generate all the LXD manpages.`)
-}
-
-func (c *manpageCmd) flags() {
-}
-
-func (c *manpageCmd) run(conf *config.Config, args []string) error {
-	if len(args) != 1 {
-		return errArgs
-	}
-
-	_, err := exec.LookPath("help2man")
-	if err != nil {
-		return fmt.Errorf(i18n.G("Unable to find help2man."))
-	}
-
-	help2man := func(command string, title string, path string) error {
-		target, err := os.Create(path)
-		if err != nil {
-			return err
-		}
-		defer target.Close()
-
-		cmd := exec.Command("help2man", command, "-n", title, "--no-info")
-		cmd.Stdout = target
-
-		return cmd.Run()
-	}
-
-	// Generate the main manpage
-	err = help2man(fmt.Sprintf("%s --all", execName), "LXD - client", filepath.Join(args[0], fmt.Sprintf("lxc.1")))
-	if err != nil {
-		return fmt.Errorf(i18n.G("Failed to generate 'lxc.1': %v"), err)
-	}
-
-	// Generate the pages for the subcommands
-	for k, cmd := range commands {
-		err := help2man(fmt.Sprintf("%s %s", execName, k), summaryLine(cmd.usage()), filepath.Join(args[0], fmt.Sprintf("lxc.%s.1", k)))
-		if err != nil {
-			return fmt.Errorf(i18n.G("Failed to generate 'lxc.%s.1': %v"), k, err)
-		}
-	}
-
-	return nil
-}

From b8746e83a6522e33fbd317f6c18d0891c1d2d901 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Wed, 28 Mar 2018 18:44:30 -0400
Subject: [PATCH 31/39] lxc/profile: Port to cobra
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        |   4 +
 lxc/config_device.go | 617 ++++++++++++++++++++++++++++++++++
 lxc/main.go          |   7 +-
 lxc/profile.go       | 925 ++++++++++++++++++++++++++++++++++-----------------
 4 files changed, 1240 insertions(+), 313 deletions(-)
 create mode 100644 lxc/config_device.go

diff --git a/lxc/config.go b/lxc/config.go
index 8a50fb921..6a7e20822 100644
--- a/lxc/config.go
+++ b/lxc/config.go
@@ -24,6 +24,10 @@ import (
 	"github.com/lxc/lxd/shared/termios"
 )
 
+type cmdConfig struct {
+	global *cmdGlobal
+}
+
 type configCmd struct {
 	expanded bool
 }
diff --git a/lxc/config_device.go b/lxc/config_device.go
new file mode 100644
index 000000000..5da173c64
--- /dev/null
+++ b/lxc/config_device.go
@@ -0,0 +1,617 @@
+package main
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/spf13/cobra"
+	"gopkg.in/yaml.v2"
+
+	cli "github.com/lxc/lxd/shared/cmd"
+	"github.com/lxc/lxd/shared/i18n"
+)
+
+type cmdConfigDevice struct {
+	global  *cmdGlobal
+	config  *cmdConfig
+	profile *cmdProfile
+}
+
+func (c *cmdConfigDevice) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("device")
+	cmd.Short = i18n.G("Manage container devices")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Manage container devices`))
+
+	// Add
+	configDeviceAddCmd := cmdConfigDeviceAdd{global: c.global, config: c.config, profile: c.profile, configDevice: c}
+	cmd.AddCommand(configDeviceAddCmd.Command())
+
+	// Get
+	configDeviceGetCmd := cmdConfigDeviceGet{global: c.global, config: c.config, profile: c.profile, configDevice: c}
+	cmd.AddCommand(configDeviceGetCmd.Command())
+
+	// List
+	configDeviceListCmd := cmdConfigDeviceList{global: c.global, config: c.config, profile: c.profile, configDevice: c}
+	cmd.AddCommand(configDeviceListCmd.Command())
+
+	// Override
+	if c.config != nil {
+		configDeviceOverrideCmd := cmdConfigDeviceOverride{global: c.global, config: c.config, profile: c.profile, configDevice: c}
+		cmd.AddCommand(configDeviceOverrideCmd.Command())
+	}
+
+	// Remove
+	configDeviceRemoveCmd := cmdConfigDeviceRemove{global: c.global, config: c.config, profile: c.profile, configDevice: c}
+	cmd.AddCommand(configDeviceRemoveCmd.Command())
+
+	// Set
+	configDeviceSetCmd := cmdConfigDeviceSet{global: c.global, config: c.config, profile: c.profile, configDevice: c}
+	cmd.AddCommand(configDeviceSetCmd.Command())
+
+	// Show
+	configDeviceShowCmd := cmdConfigDeviceShow{global: c.global, config: c.config, profile: c.profile, configDevice: c}
+	cmd.AddCommand(configDeviceShowCmd.Command())
+
+	// Unset
+	configDeviceUnsetCmd := cmdConfigDeviceUnset{global: c.global, config: c.config, profile: c.profile, configDevice: c, configDeviceSet: &configDeviceSetCmd}
+	cmd.AddCommand(configDeviceUnsetCmd.Command())
+
+	return cmd
+}
+
+// Add
+type cmdConfigDeviceAdd struct {
+	global       *cmdGlobal
+	config       *cmdConfig
+	configDevice *cmdConfigDevice
+	profile      *cmdProfile
+}
+
+func (c *cmdConfigDeviceAdd) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("add [<remote>:]<container|profile> <device> <type> [key=value...]")
+	cmd.Short = i18n.G("Add devices to containers or profiles")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Add devices to containers or profiles`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdConfigDeviceAdd) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 3, -1)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing name"))
+	}
+
+	// Add the device
+	devname := args[2]
+	device := map[string]string{}
+	device["type"] = args[3]
+	if len(args) > 4 {
+		for _, prop := range args[4:] {
+			results := strings.SplitN(prop, "=", 2)
+			if len(results) != 2 {
+				return fmt.Errorf("No value found in %q", prop)
+			}
+			k := results[0]
+			v := results[1]
+			device[k] = v
+		}
+	}
+
+	if c.profile != nil {
+		profile, etag, err := resource.server.GetProfile(resource.name)
+		if err != nil {
+			return err
+		}
+
+		_, ok := profile.Devices[devname]
+		if ok {
+			return fmt.Errorf(i18n.G("The device already exists"))
+		}
+
+		profile.Devices[devname] = device
+
+		err = resource.server.UpdateProfile(resource.name, profile.Writable(), etag)
+		if err != nil {
+			return err
+		}
+	} else {
+		container, etag, err := resource.server.GetContainer(resource.name)
+		if err != nil {
+			return err
+		}
+
+		_, ok := container.Devices[devname]
+		if ok {
+			return fmt.Errorf(i18n.G("The device already exists"))
+		}
+
+		container.Devices[devname] = device
+
+		op, err := resource.server.UpdateContainer(resource.name, container.Writable(), etag)
+		if err != nil {
+			return err
+		}
+
+		err = op.Wait()
+		if err != nil {
+			return err
+		}
+	}
+
+	fmt.Printf(i18n.G("Device %s added to %s")+"\n", devname, resource.name)
+	return nil
+}
+
+// Get
+type cmdConfigDeviceGet struct {
+	global       *cmdGlobal
+	config       *cmdConfig
+	configDevice *cmdConfigDevice
+	profile      *cmdProfile
+}
+
+func (c *cmdConfigDeviceGet) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("get [<remote>:]<container|profile> <device> <key>")
+	cmd.Short = i18n.G("Get values for container device configuration keys")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Get values for container device configuration keys`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdConfigDeviceGet) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 3, 3)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing name"))
+	}
+
+	// Get the config key
+	devname := args[1]
+	key := args[2]
+
+	if c.profile != nil {
+		profile, _, err := resource.server.GetProfile(resource.name)
+		if err != nil {
+			return err
+		}
+
+		dev, ok := profile.Devices[devname]
+		if !ok {
+			return fmt.Errorf(i18n.G("The device doesn't exist"))
+		}
+
+		fmt.Println(dev[key])
+	} else {
+		container, _, err := resource.server.GetContainer(resource.name)
+		if err != nil {
+			return err
+		}
+
+		dev, ok := container.Devices[devname]
+		if !ok {
+			return fmt.Errorf(i18n.G("The device doesn't exist"))
+		}
+
+		fmt.Println(dev[key])
+	}
+
+	return nil
+}
+
+// List
+type cmdConfigDeviceList struct {
+	global       *cmdGlobal
+	config       *cmdConfig
+	configDevice *cmdConfigDevice
+	profile      *cmdProfile
+}
+
+func (c *cmdConfigDeviceList) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("list [<remote>:]<container|profile>")
+	cmd.Aliases = []string{"ls"}
+	cmd.Short = i18n.G("List container devices")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`List container devices`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdConfigDeviceList) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, 1)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing name"))
+	}
+
+	// List the devices
+	var devices []string
+	if c.profile != nil {
+		profile, _, err := resource.server.GetProfile(resource.name)
+		if err != nil {
+			return err
+		}
+
+		for k := range profile.Devices {
+			devices = append(devices, k)
+		}
+	} else {
+		container, _, err := resource.server.GetContainer(resource.name)
+		if err != nil {
+			return err
+		}
+
+		for k := range container.Devices {
+			devices = append(devices, k)
+		}
+	}
+
+	fmt.Printf("%s\n", strings.Join(devices, "\n"))
+
+	return nil
+}
+
+// Override
+type cmdConfigDeviceOverride struct {
+	global       *cmdGlobal
+	config       *cmdConfig
+	configDevice *cmdConfigDevice
+	profile      *cmdProfile
+}
+
+func (c *cmdConfigDeviceOverride) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("override [<remote>:]<container> <device> [key=value...]")
+	cmd.Short = i18n.G("Copy profile inherited devices and override configuration keys")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Copy profile inherited devices and override configuration keys`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdConfigDeviceOverride) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 2, -1)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing name"))
+	}
+
+	// Override the device
+	container, etag, err := resource.server.GetContainer(resource.name)
+	if err != nil {
+		return err
+	}
+
+	devname := args[1]
+	_, ok := container.Devices[devname]
+	if ok {
+		return fmt.Errorf(i18n.G("The device already exists"))
+	}
+
+	device, ok := container.ExpandedDevices[devname]
+	if !ok {
+		return fmt.Errorf(i18n.G("The profile device doesn't exist"))
+	}
+
+	if len(args) > 2 {
+		for _, prop := range args[2:] {
+			results := strings.SplitN(prop, "=", 2)
+			if len(results) != 2 {
+				return fmt.Errorf("No value found in %q", prop)
+			}
+
+			k := results[0]
+			v := results[1]
+			device[k] = v
+		}
+	}
+
+	container.Devices[devname] = device
+
+	op, err := resource.server.UpdateContainer(resource.name, container.Writable(), etag)
+	if err != nil {
+		return err
+	}
+
+	err = op.Wait()
+	if err != nil {
+		return err
+	}
+
+	fmt.Printf(i18n.G("Device %s overridden for %s")+"\n", devname, resource.name)
+
+	return nil
+}
+
+// Remove
+type cmdConfigDeviceRemove struct {
+	global       *cmdGlobal
+	config       *cmdConfig
+	configDevice *cmdConfigDevice
+	profile      *cmdProfile
+}
+
+func (c *cmdConfigDeviceRemove) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("remove [<remote>:]<container|profile> <name>...")
+	cmd.Aliases = []string{"rm"}
+	cmd.Short = i18n.G("Remove container devices")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Remove container devices`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdConfigDeviceRemove) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 2, -1)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing name"))
+	}
+
+	// Remove the device
+	if c.profile != nil {
+		profile, etag, err := resource.server.GetProfile(resource.name)
+		if err != nil {
+			return err
+		}
+
+		for _, devname := range args[1:] {
+			_, ok := profile.Devices[devname]
+			if !ok {
+				return fmt.Errorf(i18n.G("The device doesn't exist"))
+			}
+			delete(profile.Devices, devname)
+		}
+
+		err = resource.server.UpdateProfile(resource.name, profile.Writable(), etag)
+		if err != nil {
+			return err
+		}
+	} else {
+		container, etag, err := resource.server.GetContainer(resource.name)
+		if err != nil {
+			return err
+		}
+
+		for _, devname := range args[1:] {
+			_, ok := container.Devices[devname]
+			if !ok {
+				return fmt.Errorf(i18n.G("The device doesn't exist"))
+			}
+			delete(container.Devices, devname)
+		}
+
+		op, err := resource.server.UpdateContainer(resource.name, container.Writable(), etag)
+		if err != nil {
+			return err
+		}
+
+		err = op.Wait()
+		if err != nil {
+			return err
+		}
+	}
+
+	fmt.Printf(i18n.G("Device %s removed from %s")+"\n", strings.Join(args[1:], ", "), resource.name)
+
+	return nil
+}
+
+// Set
+type cmdConfigDeviceSet struct {
+	global       *cmdGlobal
+	config       *cmdConfig
+	configDevice *cmdConfigDevice
+	profile      *cmdProfile
+}
+
+func (c *cmdConfigDeviceSet) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("set [<remote>:]<container|profile> <device> <key> <value>")
+	cmd.Short = i18n.G("Set container device configuration keys")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Set container device configuration keys`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdConfigDeviceSet) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 4, 4)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing name"))
+	}
+
+	return nil
+}
+
+// Show
+type cmdConfigDeviceShow struct {
+	global       *cmdGlobal
+	config       *cmdConfig
+	configDevice *cmdConfigDevice
+	profile      *cmdProfile
+}
+
+func (c *cmdConfigDeviceShow) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("show [<remote>:]<container|profile>")
+	cmd.Short = i18n.G("Show full device configuration for containers or profiles")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Show full device configuration for containers or profiles`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdConfigDeviceShow) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, 1)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing name"))
+	}
+
+	// Show the devices
+	var devices map[string]map[string]string
+	if c.profile != nil {
+		profile, _, err := resource.server.GetProfile(resource.name)
+		if err != nil {
+			return err
+		}
+
+		devices = profile.Devices
+	} else {
+		container, _, err := resource.server.GetContainer(resource.name)
+		if err != nil {
+			return err
+		}
+
+		devices = container.Devices
+	}
+
+	data, err := yaml.Marshal(&devices)
+	if err != nil {
+		return err
+	}
+
+	fmt.Printf(string(data))
+
+	return nil
+}
+
+// Unset
+type cmdConfigDeviceUnset struct {
+	global          *cmdGlobal
+	config          *cmdConfig
+	configDevice    *cmdConfigDevice
+	configDeviceSet *cmdConfigDeviceSet
+	profile         *cmdProfile
+}
+
+func (c *cmdConfigDeviceUnset) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("unset [<remote>:]<container|profile> <device> <key>")
+	cmd.Short = i18n.G("Unset container device configuration keys")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Unset container device configuration keys`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdConfigDeviceUnset) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 3, 3)
+	if exit {
+		return err
+	}
+
+	args = append(args, "")
+	return c.configDeviceSet.Run(cmd, args)
+}
diff --git a/lxc/main.go b/lxc/main.go
index dc02b4962..2efb73b8d 100644
--- a/lxc/main.go
+++ b/lxc/main.go
@@ -141,6 +141,10 @@ For help with any of those, simply call them with --help.`))
 	publishCmd := cmdPublish{global: &globalCmd}
 	app.AddCommand(publishCmd.Command())
 
+	// profile sub-command
+	profileCmd := cmdProfile{global: &globalCmd}
+	app.AddCommand(profileCmd.Command())
+
 	// query sub-command
 	queryCmd := cmdQuery{global: &globalCmd}
 	app.AddCommand(queryCmd.Command())
@@ -346,8 +350,7 @@ type command interface {
 }
 
 var commands = map[string]command{
-	"config":  &configCmd{},
-	"profile": &profileCmd{},
+	"config": &configCmd{},
 }
 
 // defaultAliases contains LXC's built-in command line aliases.  The built-in
diff --git a/lxc/profile.go b/lxc/profile.go
index a464587a1..0ca2a9ece 100644
--- a/lxc/profile.go
+++ b/lxc/profile.go
@@ -9,226 +9,441 @@ import (
 	"syscall"
 
 	"github.com/olekukonko/tablewriter"
+	"github.com/spf13/cobra"
 	"gopkg.in/yaml.v2"
 
-	"github.com/lxc/lxd/client"
-	"github.com/lxc/lxd/lxc/config"
 	"github.com/lxc/lxd/shared"
 	"github.com/lxc/lxd/shared/api"
+	cli "github.com/lxc/lxd/shared/cmd"
 	"github.com/lxc/lxd/shared/i18n"
 	"github.com/lxc/lxd/shared/termios"
 )
 
-type profileCmd struct {
+type cmdProfile struct {
+	global *cmdGlobal
 }
 
-func (c *profileCmd) showByDefault() bool {
-	return true
-}
+func (c *cmdProfile) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("profile")
+	cmd.Short = i18n.G("Manage profiles")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Manage profiles`))
 
-func (c *profileCmd) profileEditHelp() string {
-	return i18n.G(
-		`### This is a yaml representation of the profile.
-### Any line starting with a '# will be ignored.
-###
-### A profile consists of a set of configuration items followed by a set of
-### devices.
-###
-### An example would look like:
-### name: onenic
-### config:
-###   raw.lxc: lxc.aa_profile=unconfined
-### devices:
-###   eth0:
-###     nictype: bridged
-###     parent: lxdbr0
-###     type: nic
-###
-### Note that the name is shown but cannot be changed`)
-}
+	// Add
+	profileAddCmd := cmdProfileAdd{global: c.global, profile: c}
+	cmd.AddCommand(profileAddCmd.Command())
 
-func (c *profileCmd) usage() string {
-	return i18n.G(
-		`Usage: lxc profile <subcommand> [options]
+	// Assign
+	profileAssignCmd := cmdProfileAssign{global: c.global, profile: c}
+	cmd.AddCommand(profileAssignCmd.Command())
 
-Manage container configuration profiles.
+	// Copy
+	profileCopyCmd := cmdProfileCopy{global: c.global, profile: c}
+	cmd.AddCommand(profileCopyCmd.Command())
 
-*Profile configuration*
-lxc profile list [<remote>:]
-    List available profiles.
+	// Create
+	profileCreateCmd := cmdProfileCreate{global: c.global, profile: c}
+	cmd.AddCommand(profileCreateCmd.Command())
 
-lxc profile show [<remote>:]<profile>
-    Show details of a profile.
+	// Delete
+	profileDeleteCmd := cmdProfileDelete{global: c.global, profile: c}
+	cmd.AddCommand(profileDeleteCmd.Command())
 
-lxc profile create [<remote>:]<profile>
-    Create a profile.
+	// Device
+	profileDeviceCmd := cmdConfigDevice{global: c.global, profile: c}
+	cmd.AddCommand(profileDeviceCmd.Command())
 
-lxc profile copy [<remote>:]<profile> [<remote>:]<profile>
-    Copy the profile.
+	// Edit
+	profileEditCmd := cmdProfileEdit{global: c.global, profile: c}
+	cmd.AddCommand(profileEditCmd.Command())
 
-lxc profile get [<remote>:]<profile> <key>
-    Get profile configuration.
+	// Get
+	profileGetCmd := cmdProfileGet{global: c.global, profile: c}
+	cmd.AddCommand(profileGetCmd.Command())
 
-lxc profile set [<remote>:]<profile> <key> <value>
-    Set profile configuration.
+	// List
+	profileListCmd := cmdProfileList{global: c.global, profile: c}
+	cmd.AddCommand(profileListCmd.Command())
 
-lxc profile unset [<remote>:]<profile> <key>
-    Unset profile configuration.
+	// Remove
+	profileRemoveCmd := cmdProfileRemove{global: c.global, profile: c}
+	cmd.AddCommand(profileRemoveCmd.Command())
 
-lxc profile delete [<remote>:]<profile>
-    Delete a profile.
+	// Rename
+	profileRenameCmd := cmdProfileRename{global: c.global, profile: c}
+	cmd.AddCommand(profileRenameCmd.Command())
 
-lxc profile edit [<remote>:]<profile>
-    Edit profile, either by launching external editor or reading STDIN.
+	// Set
+	profileSetCmd := cmdProfileSet{global: c.global, profile: c}
+	cmd.AddCommand(profileSetCmd.Command())
 
-lxc profile rename [<remote>:]<profile> <new-name>
-    Rename a profile.
+	// Show
+	profileShowCmd := cmdProfileShow{global: c.global, profile: c}
+	cmd.AddCommand(profileShowCmd.Command())
 
-*Profile assignment*
-lxc profile assign [<remote>:]<container> <profiles>
-    Replace the current set of profiles for the container by the one provided.
+	// Unset
+	profileUnsetCmd := cmdProfileUnset{global: c.global, profile: c, profileSet: &profileSetCmd}
+	cmd.AddCommand(profileUnsetCmd.Command())
 
-lxc profile add [<remote>:]<container> <profile>
-    Add a profile to a container
+	return cmd
+}
 
-lxc profile remove [<remote>:]<container> <profile>
-    Remove the profile from a container
+// Add
+type cmdProfileAdd struct {
+	global  *cmdGlobal
+	profile *cmdProfile
+}
 
-*Device management*
-lxc profile device list [<remote>:]<profile>
-    List devices in the given profile.
+func (c *cmdProfileAdd) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("add [<remote>:]<container> <profile>")
+	cmd.Short = i18n.G("Add profiles to containers")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Add profiles to containers`))
 
-lxc profile device show [<remote>:]<profile>
-    Show full device details in the given profile.
+	cmd.RunE = c.Run
 
-lxc profile device remove [<remote>:]<profile> <name>
-    Remove a device from a profile.
+	return cmd
+}
 
-lxc profile device get [<remote>:]<profile> <name> <key>
-    Get a device property.
+func (c *cmdProfileAdd) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 2, 2)
+	if exit {
+		return err
+	}
 
-lxc profile device set [<remote>:]<profile> <name> <key> <value>
-    Set a device property.
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
 
-lxc profile device unset [<remote>:]<profile> <name> <key>
-    Unset a device property.
+	resource := resources[0]
 
-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.
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing container.name name"))
+	}
 
-*Examples*
-cat profile.yaml | lxc profile edit <profile>
-    Update a profile using the content of profile.yaml
+	// Add the profile
+	container, etag, err := resource.server.GetContainer(resource.name)
+	if err != nil {
+		return err
+	}
 
-lxc profile assign foo default,bar
+	container.Profiles = append(container.Profiles, args[1])
+
+	op, err := resource.server.UpdateContainer(resource.name, container.Writable(), etag)
+	if err != nil {
+		return err
+	}
+
+	err = op.Wait()
+	if err != nil {
+		return err
+	}
+
+	fmt.Printf(i18n.G("Profile %s added to %s")+"\n", args[1], resource.name)
+
+	return nil
+}
+
+// Assign
+type cmdProfileAssign struct {
+	global  *cmdGlobal
+	profile *cmdProfile
+}
+
+func (c *cmdProfileAssign) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("assign [<remote>:]<container> <profiles>")
+	cmd.Aliases = []string{"apply"}
+	cmd.Short = i18n.G("Assign sets of profiles to containers")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Assign sets of profiles to containers`))
+	cmd.Example = cli.FormatSection("", i18n.G(
+		`lxc profile assign foo default,bar
     Set the profiles for "foo" to "default" and "bar".
 
 lxc profile assign foo default
     Reset "foo" to only using the "default" profile.
 
 lxc profile assign foo ''
-    Remove all profile from "foo"`)
+    Remove all profile from "foo"`))
+
+	cmd.RunE = c.Run
+
+	return cmd
 }
 
-func (c *profileCmd) flags() {}
+func (c *cmdProfileAssign) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 2, 2)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
 
-func (c *profileCmd) run(conf *config.Config, args []string) error {
-	if len(args) < 1 {
-		return errUsage
+	// Assign the profiles
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing container name"))
 	}
 
-	if args[0] == "list" {
-		return c.doProfileList(conf, args)
+	container, etag, err := resource.server.GetContainer(resource.name)
+	if err != nil {
+		return err
 	}
 
-	if len(args) < 2 {
-		return errArgs
+	if args[1] != "" {
+		container.Profiles = strings.Split(args[1], ",")
+	} else {
+		container.Profiles = nil
 	}
 
-	remote, profile, err := conf.ParseRemote(args[1])
+	op, err := resource.server.UpdateContainer(resource.name, container.Writable(), etag)
 	if err != nil {
 		return err
 	}
 
-	client, err := conf.GetContainerServer(remote)
+	err = op.Wait()
 	if err != nil {
 		return err
 	}
 
-	switch args[0] {
-	case "create":
-		return c.doProfileCreate(client, profile)
-	case "delete":
-		return c.doProfileDelete(client, profile)
-	case "device":
-		return c.doProfileDevice(conf, args)
-	case "edit":
-		return c.doProfileEdit(client, profile)
-	case "rename":
-		if len(args) != 3 {
-			return errArgs
-		}
-		return c.doProfileRename(client, profile, args[2])
-	case "apply", "assign":
-		container := profile
-		switch len(args) {
-		case 2:
-			profile = ""
-		case 3:
-			profile = args[2]
-		default:
-			return errArgs
-		}
-		return c.doProfileAssign(client, container, profile)
-	case "add":
-		container := profile
-		switch len(args) {
-		case 2:
-			profile = ""
-		case 3:
-			profile = args[2]
-		default:
-			return errArgs
-		}
-		return c.doProfileAdd(client, container, profile)
-	case "remove":
-		container := profile
-		switch len(args) {
-		case 2:
-			profile = ""
-		case 3:
-			profile = args[2]
-		default:
-			return errArgs
-		}
-		return c.doProfileRemove(client, container, profile)
-	case "get":
-		return c.doProfileGet(client, profile, args[2:])
-	case "set":
-		return c.doProfileSet(client, profile, args[2:])
-	case "unset":
-		return c.doProfileUnset(client, profile, args[2:])
-	case "copy":
-		return c.doProfileCopy(conf, client, profile, args[2:])
-	case "show":
-		return c.doProfileShow(client, profile)
-	default:
-		return errArgs
-	}
-}
-
-func (c *profileCmd) doProfileCreate(client lxd.ContainerServer, p string) error {
+	if args[1] == "" {
+		args[1] = i18n.G("(none)")
+	}
+
+	fmt.Printf(i18n.G("Profiles %s applied to %s")+"\n", args[1], resource.name)
+
+	return nil
+}
+
+// Copy
+type cmdProfileCopy struct {
+	global  *cmdGlobal
+	profile *cmdProfile
+}
+
+func (c *cmdProfileCopy) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("copy [<remote>:]<profile> [<remote>:]<profile>")
+	cmd.Aliases = []string{"cp"}
+	cmd.Short = i18n.G("Copy profiles")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Copy profiles`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdProfileCopy) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 2, 2)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args...)
+	if err != nil {
+		return err
+	}
+
+	source := resources[0]
+	dest := resources[1]
+
+	if source.name == "" {
+		return fmt.Errorf(i18n.G("Missing source profile name"))
+	}
+
+	if dest.name == "" {
+		dest.name = source.name
+	}
+
+	// Copy the profile
+	profile, _, err := source.server.GetProfile(source.name)
+	if err != nil {
+		return err
+	}
+
+	newProfile := api.ProfilesPost{
+		ProfilePut: profile.Writable(),
+		Name:       dest.name,
+	}
+
+	return dest.server.CreateProfile(newProfile)
+}
+
+// Create
+type cmdProfileCreate struct {
+	global  *cmdGlobal
+	profile *cmdProfile
+}
+
+func (c *cmdProfileCreate) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("create [<remote>:]<profile>")
+	cmd.Short = i18n.G("Create profiles")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Create profiles`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdProfileCreate) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, 1)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing profile name"))
+	}
+
+	// Create the profile
 	profile := api.ProfilesPost{}
-	profile.Name = p
+	profile.Name = resource.name
+
+	err = resource.server.CreateProfile(profile)
+	if err != nil {
+		return err
+	}
+
+	fmt.Printf(i18n.G("Profile %s created")+"\n", resource.name)
+	return nil
+}
+
+// Delete
+type cmdProfileDelete struct {
+	global  *cmdGlobal
+	profile *cmdProfile
+}
+
+func (c *cmdProfileDelete) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("delete [<remote>:]<profile>")
+	cmd.Aliases = []string{"rm"}
+	cmd.Short = i18n.G("Delete profiles")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Delete profiles`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdProfileDelete) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, 1)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing profile name"))
+	}
 
-	err := client.CreateProfile(profile)
-	if err == nil {
-		fmt.Printf(i18n.G("Profile %s created")+"\n", p)
+	// Delete the profile
+	err = resource.server.DeleteProfile(resource.name)
+	if err != nil {
+		return err
 	}
-	return err
+
+	fmt.Printf(i18n.G("Profile %s deleted")+"\n", resource.name)
+
+	return nil
+}
+
+// Edit
+type cmdProfileEdit struct {
+	global  *cmdGlobal
+	profile *cmdProfile
+}
+
+func (c *cmdProfileEdit) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("edit [<remote>:]<profile>")
+	cmd.Short = i18n.G("Edit profile configurations as YAML")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Edit profile configurations as YAML`))
+	cmd.Example = cli.FormatSection("", i18n.G(
+		`lxc profile edit <profile> < profile.yaml
+    Update a profile using the content of profile.yaml`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdProfileEdit) helpTemplate() string {
+	return i18n.G(
+		`### This is a yaml representation of the profile.
+### Any line starting with a '# will be ignored.
+###
+### A profile consists of a set of configuration items followed by a set of
+### devices.
+###
+### An example would look like:
+### name: onenic
+### config:
+###   raw.lxc: lxc.aa_profile=unconfined
+### devices:
+###   eth0:
+###     nictype: bridged
+###     parent: lxdbr0
+###     type: nic
+###
+### Note that the name is shown but cannot be changed`)
 }
 
-func (c *profileCmd) doProfileEdit(client lxd.ContainerServer, p string) error {
+func (c *cmdProfileEdit) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, 1)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing profile name"))
+	}
+
 	// If stdin isn't a terminal, read text from it
 	if !termios.IsTerminal(int(syscall.Stdin)) {
 		contents, err := ioutil.ReadAll(os.Stdin)
@@ -242,11 +457,11 @@ func (c *profileCmd) doProfileEdit(client lxd.ContainerServer, p string) error {
 			return err
 		}
 
-		return client.UpdateProfile(p, newdata, "")
+		return resource.server.UpdateProfile(resource.name, newdata, "")
 	}
 
 	// Extract the current value
-	profile, etag, err := client.GetProfile(p)
+	profile, etag, err := resource.server.GetProfile(resource.name)
 	if err != nil {
 		return err
 	}
@@ -257,7 +472,7 @@ func (c *profileCmd) doProfileEdit(client lxd.ContainerServer, p string) error {
 	}
 
 	// Spawn the editor
-	content, err := shared.TextEditor("", []byte(c.profileEditHelp()+"\n\n"+string(data)))
+	content, err := shared.TextEditor("", []byte(c.helpTemplate()+"\n\n"+string(data)))
 	if err != nil {
 		return err
 	}
@@ -267,7 +482,7 @@ func (c *profileCmd) doProfileEdit(client lxd.ContainerServer, p string) error {
 		newdata := api.ProfilePut{}
 		err = yaml.Unmarshal(content, &newdata)
 		if err == nil {
-			err = client.UpdateProfile(p, newdata, etag)
+			err = resource.server.UpdateProfile(resource.name, newdata, etag)
 		}
 
 		// Respawn the editor
@@ -288,94 +503,172 @@ func (c *profileCmd) doProfileEdit(client lxd.ContainerServer, p string) error {
 		}
 		break
 	}
+
 	return nil
 }
 
-func (c *profileCmd) doProfileRename(client lxd.ContainerServer, p string, newName string) error {
-	err := client.RenameProfile(p, api.ProfilePost{Name: newName})
+// Get
+type cmdProfileGet struct {
+	global  *cmdGlobal
+	profile *cmdProfile
+}
+
+func (c *cmdProfileGet) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("get [<remote>:]<profile> <key>")
+	cmd.Short = i18n.G("Get values for profile configuration keys")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Get values for profile configuration keys`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdProfileGet) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 2, 2)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
 	if err != nil {
 		return err
 	}
 
-	fmt.Printf(i18n.G("Profile %s renamed to %s")+"\n", p, newName)
-	return nil
-}
+	resource := resources[0]
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing profile name"))
+	}
 
-func (c *profileCmd) doProfileDelete(client lxd.ContainerServer, p string) error {
-	err := client.DeleteProfile(p)
+	// Get the configuration key
+	profile, _, err := resource.server.GetProfile(resource.name)
 	if err != nil {
 		return err
 	}
 
-	fmt.Printf(i18n.G("Profile %s deleted")+"\n", p)
+	fmt.Printf("%s\n", profile.Config[args[0]])
 	return nil
 }
 
-func (c *profileCmd) doProfileAssign(client lxd.ContainerServer, d string, p string) error {
-	container, etag, err := client.GetContainer(d)
-	if err != nil {
+// List
+type cmdProfileList struct {
+	global  *cmdGlobal
+	profile *cmdProfile
+}
+
+func (c *cmdProfileList) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("list [<remote>:]")
+	cmd.Aliases = []string{"ls"}
+	cmd.Short = i18n.G("List profiles")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`List profiles`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdProfileList) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 0, 1)
+	if exit {
 		return err
 	}
 
-	if p != "" {
-		container.Profiles = strings.Split(p, ",")
-	} else {
-		container.Profiles = nil
+	// Parse remote
+	remote := ""
+	if len(args) > 0 {
+		remote = args[0]
 	}
 
-	op, err := client.UpdateContainer(d, container.Writable(), etag)
+	resources, err := c.global.ParseServers(remote)
 	if err != nil {
 		return err
 	}
 
-	err = op.Wait()
+	resource := resources[0]
+
+	// List profiles
+	profiles, err := resource.server.GetProfiles()
 	if err != nil {
 		return err
 	}
 
-	if p == "" {
-		p = i18n.G("(none)")
+	data := [][]string{}
+	for _, profile := range profiles {
+		strUsedBy := fmt.Sprintf("%d", len(profile.UsedBy))
+		data = append(data, []string{profile.Name, strUsedBy})
 	}
-	fmt.Printf(i18n.G("Profiles %s applied to %s")+"\n", p, d)
+
+	table := tablewriter.NewWriter(os.Stdout)
+	table.SetAutoWrapText(false)
+	table.SetAlignment(tablewriter.ALIGN_LEFT)
+	table.SetRowLine(true)
+	table.SetHeader([]string{
+		i18n.G("NAME"),
+		i18n.G("USED BY")})
+	sort.Sort(byName(data))
+	table.AppendBulk(data)
+	table.Render()
 
 	return nil
 }
 
-func (c *profileCmd) doProfileAdd(client lxd.ContainerServer, d string, p string) error {
-	container, etag, err := client.GetContainer(d)
-	if err != nil {
-		return err
-	}
+// Remove
+type cmdProfileRemove struct {
+	global  *cmdGlobal
+	profile *cmdProfile
+}
 
-	container.Profiles = append(container.Profiles, p)
+func (c *cmdProfileRemove) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("remove [<remote>:]<container> <profile>")
+	cmd.Short = i18n.G("Remove profiles from containers")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Remove profiles from containers`))
 
-	op, err := client.UpdateContainer(d, container.Writable(), etag)
-	if err != nil {
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdProfileRemove) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 2, 2)
+	if exit {
 		return err
 	}
 
-	err = op.Wait()
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
 	if err != nil {
 		return err
 	}
 
-	fmt.Printf(i18n.G("Profile %s added to %s")+"\n", p, d)
-	return nil
-}
+	resource := resources[0]
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing container name"))
+	}
 
-func (c *profileCmd) doProfileRemove(client lxd.ContainerServer, d string, p string) error {
-	container, etag, err := client.GetContainer(d)
+	// Remove the profile
+	container, etag, err := resource.server.GetContainer(resource.name)
 	if err != nil {
 		return err
 	}
 
-	if !shared.StringInSlice(p, container.Profiles) {
-		return fmt.Errorf("Profile %s isn't currently applied to %s", p, d)
+	if !shared.StringInSlice(args[1], container.Profiles) {
+		return fmt.Errorf("Profile %s isn't currently applied to %s", args[1], resource.name)
 	}
 
 	profiles := []string{}
 	for _, profile := range container.Profiles {
-		if profile == p {
+		if profile == args[1] {
 			continue
 		}
 
@@ -384,7 +677,7 @@ func (c *profileCmd) doProfileRemove(client lxd.ContainerServer, d string, p str
 
 	container.Profiles = profiles
 
-	op, err := client.UpdateContainer(d, container.Writable(), etag)
+	op, err := resource.server.UpdateContainer(resource.name, container.Writable(), etag)
 	if err != nil {
 		return err
 	}
@@ -394,116 +687,99 @@ func (c *profileCmd) doProfileRemove(client lxd.ContainerServer, d string, p str
 		return err
 	}
 
-	fmt.Printf(i18n.G("Profile %s removed from %s")+"\n", p, d)
+	fmt.Printf(i18n.G("Profile %s removed from %s")+"\n", args[1], resource.name)
 	return nil
 }
 
-func (c *profileCmd) doProfileShow(client lxd.ContainerServer, p string) error {
-	profile, _, err := client.GetProfile(p)
-	if err != nil {
-		return err
-	}
+// Rename
+type cmdProfileRename struct {
+	global  *cmdGlobal
+	profile *cmdProfile
+}
 
-	data, err := yaml.Marshal(&profile)
-	if err != nil {
-		return err
-	}
+func (c *cmdProfileRename) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("rename [<remote>:]<profile> <new-name>")
+	cmd.Aliases = []string{"mv"}
+	cmd.Short = i18n.G("Rename profiles")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Rename profiles`))
 
-	fmt.Printf("%s", data)
+	cmd.RunE = c.Run
 
-	return nil
+	return cmd
 }
 
-func (c *profileCmd) doProfileCopy(conf *config.Config, client lxd.ContainerServer, p string, args []string) error {
-	if len(args) != 1 {
-		return errArgs
+func (c *cmdProfileRename) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 2, 2)
+	if exit {
+		return err
 	}
 
-	remote, newname, err := conf.ParseRemote(args[0])
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
 	if err != nil {
 		return err
 	}
 
-	if newname == "" {
-		newname = p
-	}
+	resource := resources[0]
 
-	dest, err := conf.GetContainerServer(remote)
-	if err != nil {
-		return err
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing profile name"))
 	}
 
-	profile, _, err := client.GetProfile(p)
+	// Rename the profile
+	err = resource.server.RenameProfile(resource.name, api.ProfilePost{Name: args[1]})
 	if err != nil {
 		return err
 	}
 
-	newProfile := api.ProfilesPost{
-		ProfilePut: profile.Writable(),
-		Name:       newname,
-	}
+	fmt.Printf(i18n.G("Profile %s renamed to %s")+"\n", resource.name, args[1])
 
-	return dest.CreateProfile(newProfile)
+	return nil
 }
 
-func (c *profileCmd) doProfileDevice(conf *config.Config, args []string) error {
-	// device add b1 eth0 nic type=bridged
-	// device list b1
-	// device remove b1 eth0
-	if len(args) < 3 {
-		return errArgs
-	}
+// Set
+type cmdProfileSet struct {
+	global  *cmdGlobal
+	profile *cmdProfile
+}
 
-	cfg := configCmd{}
+func (c *cmdProfileSet) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("set [<remote>:]<profile> <key> <value>")
+	cmd.Short = i18n.G("Set profile configuration keys")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Set profile configuration keys`))
 
-	switch args[1] {
-	case "add":
-		return cfg.deviceAdd(conf, "profile", args)
-	case "remove":
-		return cfg.deviceRm(conf, "profile", args)
-	case "list":
-		return cfg.deviceList(conf, "profile", args)
-	case "show":
-		return cfg.deviceShow(conf, "profile", args)
-	case "get":
-		return cfg.deviceGet(conf, "profile", args)
-	case "set":
-		return cfg.deviceSet(conf, "profile", args)
-	case "unset":
-		return cfg.deviceUnset(conf, "profile", args)
-	default:
-		return errArgs
-	}
+	cmd.RunE = c.Run
+
+	return cmd
 }
 
-func (c *profileCmd) doProfileGet(client lxd.ContainerServer, p string, args []string) error {
-	// we shifted @args so so it should read "<key>"
-	if len(args) != 1 {
-		return errArgs
+func (c *cmdProfileSet) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 3, 3)
+	if exit {
+		return err
 	}
 
-	profile, _, err := client.GetProfile(p)
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
 	if err != nil {
 		return err
 	}
 
-	fmt.Printf("%s\n", profile.Config[args[0]])
-	return nil
-}
+	resource := resources[0]
 
-func (c *profileCmd) doProfileSet(client lxd.ContainerServer, p string, args []string) error {
-	// we shifted @args so so it should read "<key> [<value>]"
-	if len(args) < 1 {
-		return errArgs
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing profile name"))
 	}
 
-	key := args[0]
-	var value string
-	if len(args) < 2 {
-		value = ""
-	} else {
-		value = args[1]
-	}
+	// Set the configuration key
+	key := args[1]
+	value := args[2]
 
 	if !termios.IsTerminal(int(syscall.Stdin)) && value == "-" {
 		buf, err := ioutil.ReadAll(os.Stdin)
@@ -513,68 +789,95 @@ func (c *profileCmd) doProfileSet(client lxd.ContainerServer, p string, args []s
 		value = string(buf[:])
 	}
 
-	profile, etag, err := client.GetProfile(p)
+	profile, etag, err := resource.server.GetProfile(resource.name)
 	if err != nil {
 		return err
 	}
 
 	profile.Config[key] = value
 
-	return client.UpdateProfile(p, profile.Writable(), etag)
+	return resource.server.UpdateProfile(resource.name, profile.Writable(), etag)
 }
 
-func (c *profileCmd) doProfileUnset(client lxd.ContainerServer, p string, args []string) error {
-	// we shifted @args so so it should read "<key> [<value>]"
-	if len(args) != 1 {
-		return errArgs
-	}
-
-	return c.doProfileSet(client, p, args)
+// Show
+type cmdProfileShow struct {
+	global  *cmdGlobal
+	profile *cmdProfile
 }
 
-func (c *profileCmd) doProfileList(conf *config.Config, args []string) error {
-	var remote string
-	if len(args) > 1 {
-		var name string
-		var err error
-		remote, name, err = conf.ParseRemote(args[1])
-		if err != nil {
-			return err
-		}
+func (c *cmdProfileShow) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("show [<remote>:]<profile>")
+	cmd.Short = i18n.G("Show profile configurations")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Show profile configurations`))
 
-		if name != "" {
-			return fmt.Errorf(i18n.G("Cannot provide container name to list"))
-		}
-	} else {
-		remote = conf.DefaultRemote
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdProfileShow) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, 1)
+	if exit {
+		return err
 	}
 
-	client, err := conf.GetContainerServer(remote)
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
 	if err != nil {
 		return err
 	}
 
-	profiles, err := client.GetProfiles()
+	resource := resources[0]
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing profile name"))
+	}
+
+	// Show the profile
+	profile, _, err := resource.server.GetProfile(resource.name)
 	if err != nil {
 		return err
 	}
 
-	data := [][]string{}
-	for _, profile := range profiles {
-		strUsedBy := fmt.Sprintf("%d", len(profile.UsedBy))
-		data = append(data, []string{profile.Name, strUsedBy})
+	data, err := yaml.Marshal(&profile)
+	if err != nil {
+		return err
 	}
 
-	table := tablewriter.NewWriter(os.Stdout)
-	table.SetAutoWrapText(false)
-	table.SetAlignment(tablewriter.ALIGN_LEFT)
-	table.SetRowLine(true)
-	table.SetHeader([]string{
-		i18n.G("NAME"),
-		i18n.G("USED BY")})
-	sort.Sort(byName(data))
-	table.AppendBulk(data)
-	table.Render()
+	fmt.Printf("%s", data)
 
 	return nil
 }
+
+// Unset
+type cmdProfileUnset struct {
+	global     *cmdGlobal
+	profile    *cmdProfile
+	profileSet *cmdProfileSet
+}
+
+func (c *cmdProfileUnset) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("unset [<remote>:]<profile> <key>")
+	cmd.Short = i18n.G("Unset profile configuration keys")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Unset profile configuration keys`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdProfileUnset) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 2, 2)
+	if exit {
+		return err
+	}
+
+	args = append(args, "")
+	return c.profileSet.Run(cmd, args)
+}

From 5ede6f62a4ee59e2544d91029194a20ba1a29e15 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Wed, 28 Mar 2018 20:37:01 -0400
Subject: [PATCH 32/39] lxc: Move alias handling to separate 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>
---
 lxc/main.go         | 116 ++++------------------------------------------------
 lxc/main_aliases.go |  92 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 101 insertions(+), 107 deletions(-)
 create mode 100644 lxc/main_aliases.go

diff --git a/lxc/main.go b/lxc/main.go
index 2efb73b8d..665d61408 100644
--- a/lxc/main.go
+++ b/lxc/main.go
@@ -3,12 +3,9 @@ package main
 import (
 	"fmt"
 	"os"
-	"os/exec"
 	"os/user"
 	"path"
 	"path/filepath"
-	"strings"
-	"syscall"
 
 	"github.com/spf13/cobra"
 	"gopkg.in/macaroon-bakery.v2/httpbakery/form"
@@ -25,11 +22,9 @@ import (
 	schemaform "gopkg.in/juju/environschema.v1/form"
 )
 
-var configPath string
-var execName string
-
 type cmdGlobal struct {
 	conf *config.Config
+	confPath string
 
 	flagForceLocal bool
 	flagHelp       bool
@@ -223,25 +218,26 @@ func (c *cmdGlobal) PreRun(cmd *cobra.Command, args []string) error {
 
 		configDir = path.Join(user.HomeDir, ".config", "lxc")
 	}
-	configPath = os.ExpandEnv(path.Join(configDir, "config.yml"))
+
+	c.confPath = os.ExpandEnv(path.Join(configDir, "config.yml"))
 
 	// Load the configuration
 	if c.flagForceLocal {
 		c.conf = config.NewConfig("", true)
-	} else if shared.PathExists(configPath) {
-		c.conf, err = config.LoadConfig(configPath)
+	} else if shared.PathExists(c.confPath) {
+		c.conf, err = config.LoadConfig(c.confPath)
 		if err != nil {
 			return err
 		}
 	} else {
-		c.conf = config.NewConfig(filepath.Dir(configPath), true)
+		c.conf = config.NewConfig(filepath.Dir(c.confPath), true)
 	}
 
 	// If the user is running a command that may attempt to connect to the local daemon
 	// and this is the first time the client has been run by the user, then check to see
 	// if LXD has been properly configured.  Don't display the message if the var path
 	// does not exist (LXD not installed), as the user may be targeting a remote daemon.
-	if shared.PathExists(shared.VarPath("")) && !shared.PathExists(configPath) {
+	if shared.PathExists(shared.VarPath("")) && !shared.PathExists(c.confPath) {
 		// Create the config dir so that we don't get in here again for this user.
 		err = os.MkdirAll(c.conf.ConfigDir, 0750)
 		if err != nil {
@@ -249,7 +245,7 @@ func (c *cmdGlobal) PreRun(cmd *cobra.Command, args []string) error {
 		}
 
 		// And save the initial configuration
-		err = c.conf.SaveConfig(configPath)
+		err = c.conf.SaveConfig(c.confPath)
 		if err != nil {
 			return err
 		}
@@ -259,7 +255,7 @@ func (c *cmdGlobal) PreRun(cmd *cobra.Command, args []string) error {
 	}
 
 	// Only setup macaroons if a config path exists (so the jar can be saved)
-	if shared.PathExists(configPath) {
+	if shared.PathExists(c.confPath) {
 		// Add interactor for external authentication
 		c.conf.SetAuthInteractor(form.Interactor{Filler: schemaform.IOFiller{}})
 	}
@@ -342,99 +338,5 @@ func (c *cmdGlobal) CheckArgs(cmd *cobra.Command, args []string, minArgs int, ma
 	return false, nil
 }
 
-type command interface {
-	usage() string
-	flags()
-	showByDefault() bool
-	run(conf *config.Config, args []string) error
-}
-
-var commands = map[string]command{
-	"config": &configCmd{},
-}
-
-// defaultAliases contains LXC's built-in command line aliases.  The built-in
-// aliases are checked only if no user-defined alias was found.
-var defaultAliases = map[string]string{
-	"shell": "exec @ARGS@ -- su -l",
-
-	"config device ls": "config device list",
-	"config device rm": "config device remove",
-}
-
 var errArgs = fmt.Errorf(i18n.G("wrong number of subcommand arguments"))
 var errUsage = fmt.Errorf("show usage")
-
-func findAlias(aliases map[string]string, origArgs []string) ([]string, []string, bool) {
-	foundAlias := false
-	aliasKey := []string{}
-	aliasValue := []string{}
-
-	for k, v := range aliases {
-		foundAlias = true
-		for i, key := range strings.Split(k, " ") {
-			if len(origArgs) <= i+1 || origArgs[i+1] != key {
-				foundAlias = false
-				break
-			}
-		}
-
-		if foundAlias {
-			aliasKey = strings.Split(k, " ")
-			aliasValue = strings.Split(v, " ")
-			break
-		}
-	}
-
-	return aliasKey, aliasValue, foundAlias
-}
-
-func expandAlias(conf *config.Config, origArgs []string) ([]string, bool) {
-	aliasKey, aliasValue, foundAlias := findAlias(conf.Aliases, origArgs)
-	if !foundAlias {
-		aliasKey, aliasValue, foundAlias = findAlias(defaultAliases, origArgs)
-		if !foundAlias {
-			return []string{}, false
-		}
-	}
-
-	newArgs := []string{origArgs[0]}
-	hasReplacedArgsVar := false
-
-	for i, aliasArg := range aliasValue {
-		if aliasArg == "@ARGS@" && len(origArgs) > i {
-			newArgs = append(newArgs, origArgs[i+1:]...)
-			hasReplacedArgsVar = true
-		} else {
-			newArgs = append(newArgs, aliasArg)
-		}
-	}
-
-	if !hasReplacedArgsVar {
-		/* add the rest of the arguments */
-		newArgs = append(newArgs, origArgs[len(aliasKey)+1:]...)
-	}
-
-	/* don't re-do aliases the next time; this allows us to have recursive
-	 * aliases, e.g. `lxc list` to `lxc list -c n`
-	 */
-	newArgs = append(newArgs[:2], append([]string{"--no-alias"}, newArgs[2:]...)...)
-
-	return newArgs, true
-}
-
-func execIfAliases(conf *config.Config, origArgs []string) {
-	newArgs, expanded := expandAlias(conf, origArgs)
-	if !expanded {
-		return
-	}
-
-	path, err := exec.LookPath(origArgs[0])
-	if err != nil {
-		fmt.Fprintf(os.Stderr, i18n.G("processing aliases failed %s\n"), err)
-		os.Exit(5)
-	}
-	ret := syscall.Exec(path, newArgs, syscall.Environ())
-	fmt.Fprintf(os.Stderr, i18n.G("processing aliases failed %s\n"), ret)
-	os.Exit(5)
-}
diff --git a/lxc/main_aliases.go b/lxc/main_aliases.go
new file mode 100644
index 000000000..7f895c28b
--- /dev/null
+++ b/lxc/main_aliases.go
@@ -0,0 +1,92 @@
+package main
+
+import (
+	"fmt"
+	"os"
+	"os/exec"
+	"strings"
+	"syscall"
+
+	"github.com/lxc/lxd/lxc/config"
+	"github.com/lxc/lxd/shared/i18n"
+)
+
+// defaultAliases contains LXC's built-in command line aliases.  The built-in
+// aliases are checked only if no user-defined alias was found.
+var defaultAliases = map[string]string{
+	"shell": "exec @ARGS@ -- su -l",
+}
+
+func findAlias(aliases map[string]string, origArgs []string) ([]string, []string, bool) {
+	foundAlias := false
+	aliasKey := []string{}
+	aliasValue := []string{}
+
+	for k, v := range aliases {
+		foundAlias = true
+		for i, key := range strings.Split(k, " ") {
+			if len(origArgs) <= i+1 || origArgs[i+1] != key {
+				foundAlias = false
+				break
+			}
+		}
+
+		if foundAlias {
+			aliasKey = strings.Split(k, " ")
+			aliasValue = strings.Split(v, " ")
+			break
+		}
+	}
+
+	return aliasKey, aliasValue, foundAlias
+}
+
+func expandAlias(conf *config.Config, origArgs []string) ([]string, bool) {
+	aliasKey, aliasValue, foundAlias := findAlias(conf.Aliases, origArgs)
+	if !foundAlias {
+		aliasKey, aliasValue, foundAlias = findAlias(defaultAliases, origArgs)
+		if !foundAlias {
+			return []string{}, false
+		}
+	}
+
+	newArgs := []string{origArgs[0]}
+	hasReplacedArgsVar := false
+
+	for i, aliasArg := range aliasValue {
+		if aliasArg == "@ARGS@" && len(origArgs) > i {
+			newArgs = append(newArgs, origArgs[i+1:]...)
+			hasReplacedArgsVar = true
+		} else {
+			newArgs = append(newArgs, aliasArg)
+		}
+	}
+
+	if !hasReplacedArgsVar {
+		/* add the rest of the arguments */
+		newArgs = append(newArgs, origArgs[len(aliasKey)+1:]...)
+	}
+
+	/* don't re-do aliases the next time; this allows us to have recursive
+	 * aliases, e.g. `lxc list` to `lxc list -c n`
+	 */
+	newArgs = append(newArgs[:2], append([]string{"--no-alias"}, newArgs[2:]...)...)
+
+	return newArgs, true
+}
+
+func execIfAliases(conf *config.Config, origArgs []string) {
+	newArgs, expanded := expandAlias(conf, origArgs)
+	if !expanded {
+		return
+	}
+
+	path, err := exec.LookPath(origArgs[0])
+	if err != nil {
+		fmt.Fprintf(os.Stderr, i18n.G("processing aliases failed %s\n"), err)
+		os.Exit(5)
+	}
+	ret := syscall.Exec(path, newArgs, syscall.Environ())
+	fmt.Fprintf(os.Stderr, i18n.G("processing aliases failed %s\n"), ret)
+	os.Exit(5)
+}

From 95ff7d0134255c83c1cb92833ef36cdedf0aaf70 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Wed, 28 Mar 2018 23:15:43 -0400
Subject: [PATCH 33/39] lxc/config: Port to cobra
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          | 1690 ++++++++++++------------------------------------
 lxc/config_device.go   |   58 +-
 lxc/config_metadata.go |  216 +++++++
 lxc/config_template.go |  339 ++++++++++
 lxc/config_trust.go    |  227 +++++++
 lxc/main.go            |    9 +-
 6 files changed, 1240 insertions(+), 1299 deletions(-)
 create mode 100644 lxc/config_metadata.go
 create mode 100644 lxc/config_template.go
 create mode 100644 lxc/config_trust.go

diff --git a/lxc/config.go b/lxc/config.go
index 6a7e20822..f04ce4199 100644
--- a/lxc/config.go
+++ b/lxc/config.go
@@ -1,25 +1,19 @@
 package main
 
 import (
-	"bytes"
-	"crypto/x509"
-	"encoding/base64"
-	"encoding/pem"
 	"fmt"
 	"io/ioutil"
 	"os"
-	"sort"
 	"strings"
 	"syscall"
 
-	"github.com/olekukonko/tablewriter"
+	"github.com/spf13/cobra"
 	"gopkg.in/yaml.v2"
 
 	"github.com/lxc/lxd/client"
-	"github.com/lxc/lxd/lxc/config"
 	"github.com/lxc/lxd/shared"
 	"github.com/lxc/lxd/shared/api"
-	"github.com/lxc/lxd/shared/gnuflag"
+	cli "github.com/lxc/lxd/shared/cmd"
 	"github.com/lxc/lxd/shared/i18n"
 	"github.com/lxc/lxd/shared/termios"
 )
@@ -28,1442 +22,556 @@ type cmdConfig struct {
 	global *cmdGlobal
 }
 
-type configCmd struct {
-	expanded bool
+func (c *cmdConfig) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("config")
+	cmd.Short = i18n.G("Manage container and server configuration options")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Manage container and server configuration options`))
+
+	// Device
+	configDeviceCmd := cmdConfigDevice{global: c.global, config: c}
+	cmd.AddCommand(configDeviceCmd.Command())
+
+	// Edit
+	configEditCmd := cmdConfigEdit{global: c.global, config: c}
+	cmd.AddCommand(configEditCmd.Command())
+
+	// Get
+	configGetCmd := cmdConfigGet{global: c.global, config: c}
+	cmd.AddCommand(configGetCmd.Command())
+
+	// Metadata
+	configMetadataCmd := cmdConfigMetadata{global: c.global, config: c}
+	cmd.AddCommand(configMetadataCmd.Command())
+
+	// Profile
+	configProfileCmd := cmdProfile{global: c.global}
+	profileCmd := configProfileCmd.Command()
+	profileCmd.Hidden = true
+	profileCmd.Deprecated = i18n.G("please use `lxc profile`")
+	cmd.AddCommand(profileCmd)
+
+	// Set
+	configSetCmd := cmdConfigSet{global: c.global, config: c}
+	cmd.AddCommand(configSetCmd.Command())
+
+	// Show
+	configShowCmd := cmdConfigShow{global: c.global, config: c}
+	cmd.AddCommand(configShowCmd.Command())
+
+	// Template
+	configTemplateCmd := cmdConfigTemplate{global: c.global, config: c}
+	cmd.AddCommand(configTemplateCmd.Command())
+
+	// Trust
+	configTrustCmd := cmdConfigTrust{global: c.global, config: c}
+	cmd.AddCommand(configTrustCmd.Command())
+
+	// Unset
+	configUnsetCmd := cmdConfigUnset{global: c.global, config: c, configSet: &configSetCmd}
+	cmd.AddCommand(configUnsetCmd.Command())
+
+	return cmd
 }
 
-func (c *configCmd) showByDefault() bool {
-	return true
-}
-
-func (c *configCmd) flags() {
-	gnuflag.BoolVar(&c.expanded, "expanded", false, i18n.G("Show the expanded configuration"))
-}
-
-func (c *configCmd) configEditHelp() string {
-	return i18n.G(
-		`### This is a yaml representation of the configuration.
-### Any line starting with a '# will be ignored.
-###
-### A sample configuration looks like:
-### name: container1
-### profiles:
-### - default
-### config:
-###   volatile.eth0.hwaddr: 00:16:3e:e9:f8:7f
-### devices:
-###   homedir:
-###     path: /extra
-###     source: /home/user
-###     type: disk
-### ephemeral: false
-###
-### Note that the name is shown but cannot be changed`)
-}
-
-func (c *configCmd) metadataEditHelp() string {
-	return i18n.G(
-		`### This is a yaml representation of the container metadata.
-### Any line starting with a '# will be ignored.
-###
-### A sample configuration looks like:
-###
-### architecture: x86_64
-### creation_date: 1477146654
-### expiry_date: 0
-### properties:
-###   architecture: x86_64
-###   description: Busybox x86_64
-###   name: busybox-x86_64
-###   os: Busybox
-### templates:
-###   /template:
-###     when:
-###     - ""
-###     create_only: false
-###     template: template.tpl
-###     properties: {}`)
-}
-
-func (c *configCmd) usage() string {
-	return i18n.G(
-		`Usage: lxc config <subcommand> [options]
-
-Change container or server configuration options.
-
-*Container configuration*
-
-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 configuration, either by launching external editor or reading STDIN.
-
-*Container metadata*
-
-lxc config metadata show [<remote>:][container]
-    Show the container metadata.yaml content.
-
-lxc config metadata edit [<remote>:][container]
-    Edit the container metadata.yaml, either by launching external editor or reading STDIN.
-
-*Container templates*
-
-lxc config template list [<remote>:][container]
-    List the names of template files for a container.
-
-lxc config template show [<remote>:][container] [template]
-    Show the content of a template file for a container.
-
-lxc config template create [<remote>:][container] [template]
-    Add an empty template file for a container.
-
-lxc config template edit [<remote>:][container] [template]
-    Edit the content of a template file for a container, either by launching external editor or reading STDIN.
-
-lxc config template delete [<remote>:][container] [template]
-    Delete a template file for a container.
-
-
-*Device management*
-
-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 override [<remote>:]<container> <device> [key=value...]
-    Copy a profile inherited device into local container config.
-
-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.
-
-*Client trust store management*
-
-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*
-
-cat config.yaml | lxc config edit <container>
-    Update the container configuration from config.yaml.
-
-lxc config device add [<remote>:]container1 <device-name> disk source=/share/c1 path=opt
-    Will mount the host's /share/c1 onto /opt in the container.
-
-lxc config set [<remote>:]<container> limits.cpu 2
-    Will set a CPU limit of "2" for the container.
-
-lxc config set core.https_address [::]:8443
-    Will have LXD listen on IPv4 and IPv6 port 8443.
-
-lxc config set core.trust_password blah
-    Will set the server's trust password to blah.`)
-}
-
-func (c *configCmd) doSet(conf *config.Config, args []string, unset bool) error {
-	if len(args) != 4 {
-		return errArgs
-	}
-
-	// [[lxc config]] set dakara:c1 limits.memory 200000
-	remote, name, err := conf.ParseRemote(args[1])
-	if err != nil {
-		return err
-	}
-
-	d, err := conf.GetContainerServer(remote)
-	if err != nil {
-		return err
-	}
-
-	key := args[2]
-	value := args[3]
-
-	if !termios.IsTerminal(int(syscall.Stdin)) && value == "-" {
-		buf, err := ioutil.ReadAll(os.Stdin)
-		if err != nil {
-			return fmt.Errorf(i18n.G("Can't read from stdin: %s"), err)
-		}
-		value = string(buf[:])
-	}
-
-	container, etag, err := d.GetContainer(name)
-	if err != nil {
-		return err
-	}
-
-	if unset {
-		_, ok := container.Config[key]
-		if !ok {
-			return fmt.Errorf(i18n.G("Can't unset key '%s', it's not currently set"), key)
-		}
-
-		delete(container.Config, key)
-	} else {
-		container.Config[key] = value
-	}
-
-	op, err := d.UpdateContainer(name, container.Writable(), etag)
-	if err != nil {
-		return err
-	}
-
-	return op.Wait()
-}
-
-func (c *configCmd) run(conf *config.Config, args []string) error {
-	if len(args) < 1 {
-		return errUsage
-	}
-
-	switch args[0] {
-
-	case "unset":
-		if len(args) < 2 {
-			return errArgs
-		}
-
-		// Deal with local server
-		if len(args) == 2 {
-			c, err := conf.GetContainerServer(conf.DefaultRemote)
-			if err != nil {
-				return err
-			}
-
-			server, etag, err := c.GetServer()
-			if err != nil {
-				return err
-			}
-
-			_, ok := server.Config[args[1]]
-			if !ok {
-				return fmt.Errorf(i18n.G("Can't unset key '%s', it's not currently set."), args[1])
-			}
-
-			delete(server.Config, args[1])
-			return c.UpdateServer(server.Writable(), etag)
-		}
-
-		// Deal with remote server
-		remote, container, err := conf.ParseRemote(args[1])
-		if err != nil {
-			return err
-		}
-
-		if container == "" {
-			c, err := conf.GetContainerServer(remote)
-			if err != nil {
-				return err
-			}
-
-			server, etag, err := c.GetServer()
-			if err != nil {
-				return err
-			}
-
-			_, ok := server.Config[args[2]]
-			if !ok {
-				return fmt.Errorf(i18n.G("Can't unset key '%s', it's not currently set."), args[1])
-			}
-
-			delete(server.Config, args[2])
-			return c.UpdateServer(server.Writable(), etag)
-		}
-
-		// Deal with container
-		args = append(args, "")
-		return c.doSet(conf, args, true)
-
-	case "set":
-		if len(args) < 3 {
-			return errArgs
-		}
-
-		// Deal with local server
-		if len(args) == 3 {
-			c, err := conf.GetContainerServer(conf.DefaultRemote)
-			if err != nil {
-				return err
-			}
-
-			server, etag, err := c.GetServer()
-			if err != nil {
-				return err
-			}
-
-			server.Config[args[1]] = args[2]
-
-			return c.UpdateServer(server.Writable(), etag)
-		}
-
-		// Deal with remote server
-		remote, container, err := conf.ParseRemote(args[1])
-		if err != nil {
-			return err
-		}
-
-		if container == "" {
-			c, err := conf.GetContainerServer(remote)
-			if err != nil {
-				return err
-			}
-
-			server, etag, err := c.GetServer()
-			if err != nil {
-				return err
-			}
-
-			server.Config[args[2]] = args[3]
-
-			return c.UpdateServer(server.Writable(), etag)
-		}
-
-		// Deal with container
-		return c.doSet(conf, args, false)
-
-	case "trust":
-		if len(args) < 2 {
-			return errArgs
-		}
-
-		switch args[1] {
-		case "list":
-			var remote string
-			if len(args) == 3 {
-				var err error
-				remote, _, err = conf.ParseRemote(args[2])
-				if err != nil {
-					return err
-				}
-			} else {
-				remote = conf.DefaultRemote
-			}
-
-			d, err := conf.GetContainerServer(remote)
-			if err != nil {
-				return err
-			}
-
-			trust, err := d.GetCertificates()
-			if err != nil {
-				return err
-			}
-
-			data := [][]string{}
-			for _, cert := range trust {
-				fp := cert.Fingerprint[0:12]
-
-				certBlock, _ := pem.Decode([]byte(cert.Certificate))
-				if certBlock == nil {
-					return fmt.Errorf(i18n.G("Invalid certificate"))
-				}
-
-				cert, err := x509.ParseCertificate(certBlock.Bytes)
-				if err != nil {
-					return err
-				}
-
-				const layout = "Jan 2, 2006 at 3:04pm (MST)"
-				issue := cert.NotBefore.Format(layout)
-				expiry := cert.NotAfter.Format(layout)
-				data = append(data, []string{fp, cert.Subject.CommonName, issue, expiry})
-			}
-
-			table := tablewriter.NewWriter(os.Stdout)
-			table.SetAutoWrapText(false)
-			table.SetAlignment(tablewriter.ALIGN_LEFT)
-			table.SetRowLine(true)
-			table.SetHeader([]string{
-				i18n.G("FINGERPRINT"),
-				i18n.G("COMMON NAME"),
-				i18n.G("ISSUE DATE"),
-				i18n.G("EXPIRY DATE")})
-			sort.Sort(stringList(data))
-			table.AppendBulk(data)
-			table.Render()
-
-			return nil
-		case "add":
-			var remote string
-			if len(args) < 3 {
-				return fmt.Errorf(i18n.G("No certificate provided to add"))
-			} else if len(args) == 4 {
-				var err error
-				remote, _, err = conf.ParseRemote(args[2])
-				if err != nil {
-					return err
-				}
-			} else {
-				remote = conf.DefaultRemote
-			}
-
-			d, err := conf.GetContainerServer(remote)
-			if err != nil {
-				return err
-			}
-
-			fname := args[len(args)-1]
-			x509Cert, err := shared.ReadCert(fname)
-			if err != nil {
-				return err
-			}
-			name, _ := shared.SplitExt(fname)
-
-			cert := api.CertificatesPost{}
-			cert.Certificate = base64.StdEncoding.EncodeToString(x509Cert.Raw)
-			cert.Name = name
-			cert.Type = "client"
-
-			return d.CreateCertificate(cert)
-		case "remove":
-			var remote string
-			if len(args) < 3 {
-				return fmt.Errorf(i18n.G("No fingerprint specified."))
-			} else if len(args) == 4 {
-				var err error
-				remote, _, err = conf.ParseRemote(args[2])
-				if err != nil {
-					return err
-				}
-			} else {
-				remote = conf.DefaultRemote
-			}
-
-			d, err := conf.GetContainerServer(remote)
-			if err != nil {
-				return err
-			}
-
-			return d.DeleteCertificate(args[len(args)-1])
-		default:
-			return errArgs
-		}
-
-	case "show":
-		remote := conf.DefaultRemote
-		container := ""
-		if len(args) > 1 {
-			var err error
-			remote, container, err = conf.ParseRemote(args[1])
-			if err != nil {
-				return err
-			}
-		}
-
-		d, err := conf.GetContainerServer(remote)
-		if err != nil {
-			return err
-		}
-
-		var data []byte
-
-		if len(args) == 1 || container == "" {
-			server, _, err := d.GetServer()
-			if err != nil {
-				return err
-			}
-
-			brief := server.Writable()
-			data, err = yaml.Marshal(&brief)
-			if err != nil {
-				return err
-			}
-		} else {
-			var brief api.ContainerPut
-			if shared.IsSnapshot(container) {
-				fields := strings.Split(container, shared.SnapshotDelimiter)
-
-				snap, _, err := d.GetContainerSnapshot(fields[0], fields[1])
-				if err != nil {
-					return err
-				}
-
-				brief = api.ContainerPut{
-					Profiles:  snap.Profiles,
-					Config:    snap.Config,
-					Devices:   snap.Devices,
-					Ephemeral: snap.Ephemeral,
-				}
-				if c.expanded {
-					brief = api.ContainerPut{
-						Profiles:  snap.Profiles,
-						Config:    snap.ExpandedConfig,
-						Devices:   snap.ExpandedDevices,
-						Ephemeral: snap.Ephemeral,
-					}
-				}
-			} else {
-				container, _, err := d.GetContainer(container)
-				if err != nil {
-					return err
-				}
-
-				brief = container.Writable()
-				if c.expanded {
-					brief.Config = container.ExpandedConfig
-					brief.Devices = container.ExpandedDevices
-				}
-			}
-
-			data, err = yaml.Marshal(&brief)
-			if err != nil {
-				return err
-			}
-		}
-
-		fmt.Printf("%s", data)
-
-		return nil
-
-	case "get":
-		if len(args) > 3 || len(args) < 2 {
-			return errArgs
-		}
-
-		remote := conf.DefaultRemote
-		container := ""
-		key := args[1]
-		if len(args) > 2 {
-			var err error
-			remote, container, err = conf.ParseRemote(args[1])
-			if err != nil {
-				return err
-			}
-			key = args[2]
-		}
-
-		d, err := conf.GetContainerServer(remote)
-		if err != nil {
-			return err
-		}
-
-		if container != "" {
-			resp, _, err := d.GetContainer(container)
-			if err != nil {
-				return err
-			}
-			fmt.Println(resp.Config[key])
-		} else {
-			resp, _, err := d.GetServer()
-			if err != nil {
-				return err
-			}
-
-			value := resp.Config[key]
-			if value == nil {
-				value = ""
-			} else if value == true {
-				value = "true"
-			} else if value == false {
-				value = "false"
-			}
-
-			fmt.Println(value)
-		}
-		return nil
-
-	case "profile":
-	case "device":
-		if len(args) < 2 {
-			return errArgs
-		}
-		switch args[1] {
-		case "list":
-			return c.deviceList(conf, "container", args)
-		case "add":
-			return c.deviceAdd(conf, "container", args)
-		case "remove":
-			return c.deviceRm(conf, "container", args)
-		case "get":
-			return c.deviceGet(conf, "container", args)
-		case "set":
-			return c.deviceSet(conf, "container", args)
-		case "unset":
-			return c.deviceUnset(conf, "container", args)
-		case "override":
-			return c.deviceOverride(conf, args)
-		case "show":
-			return c.deviceShow(conf, "container", args)
-		default:
-			return errArgs
-		}
-
-	case "edit":
-		if len(args) < 1 {
-			return errArgs
-		}
-
-		remote := conf.DefaultRemote
-		container := ""
-		if len(args) > 1 {
-			var err error
-			remote, container, err = conf.ParseRemote(args[1])
-			if err != nil {
-				return err
-			}
-		}
-
-		d, err := conf.GetContainerServer(remote)
-		if err != nil {
-			return err
-		}
-
-		if len(args) == 1 || container == "" {
-			return c.doDaemonConfigEdit(d)
-		}
-
-		return c.doContainerConfigEdit(d, container)
-
-	case "metadata":
-		if len(args) < 3 {
-			return errArgs
-		}
-
-		remote, container, err := conf.ParseRemote(args[2])
-		if err != nil {
-			return err
-		}
-
-		d, err := conf.GetContainerServer(remote)
-		if err != nil {
-			return err
-		}
-
-		switch args[1] {
-		case "show":
-			metadata, _, err := d.GetContainerMetadata(container)
-			if err != nil {
-				return err
-			}
-			content, err := yaml.Marshal(metadata)
-			if err != nil {
-				return err
-			}
-			fmt.Printf("%s", content)
-			return nil
-
-		case "edit":
-			return c.doContainerMetadataEdit(d, container)
-
-		default:
-			return errArgs
-		}
-
-	case "template":
-		if len(args) < 3 {
-			return errArgs
-		}
-
-		remote, container, err := conf.ParseRemote(args[2])
-		if err != nil {
-			return err
-		}
-
-		d, err := conf.GetContainerServer(remote)
-		if err != nil {
-			return err
-		}
-
-		switch args[1] {
-		case "list":
-			templates, err := d.GetContainerTemplateFiles(container)
-			if err != nil {
-				return err
-			}
-
-			c.listTemplateFiles(templates)
-			return nil
-
-		case "show":
-			if len(args) != 4 {
-				return errArgs
-			}
-			templateName := args[3]
-
-			template, err := d.GetContainerTemplateFile(container, templateName)
-			if err != nil {
-				return err
-			}
-			content, err := ioutil.ReadAll(template)
-			if err != nil {
-				return err
-			}
-			fmt.Printf("%s", content)
-			return nil
-
-		case "create":
-			if len(args) != 4 {
-				return errArgs
-			}
-			templateName := args[3]
-			return c.doContainerTemplateFileCreate(d, container, templateName)
-
-		case "edit":
-			if len(args) != 4 {
-				return errArgs
-			}
-			templateName := args[3]
-			return c.doContainerTemplateFileEdit(d, container, templateName)
-
-		case "delete":
-			if len(args) != 4 {
-				return errArgs
-			}
-			templateName := args[3]
-			return d.DeleteContainerTemplateFile(container, templateName)
-
-		default:
-			return errArgs
-		}
-
-	default:
-		return errArgs
-	}
-
-	return errArgs
-}
-
-func (c *configCmd) listTemplateFiles(templates []string) {
-	data := [][]string{}
-	for _, template := range templates {
-		data = append(data, []string{template})
-	}
-
-	table := tablewriter.NewWriter(os.Stdout)
-	table.SetAutoWrapText(false)
-	table.SetAlignment(tablewriter.ALIGN_LEFT)
-	table.SetRowLine(true)
-	table.SetHeader([]string{i18n.G("FILENAME")})
-	sort.Sort(byName(data))
-	table.AppendBulk(data)
-	table.Render()
-}
-
-func (c *configCmd) doContainerConfigEdit(client lxd.ContainerServer, cont string) error {
-	// If stdin isn't a terminal, read text from it
-	if !termios.IsTerminal(int(syscall.Stdin)) {
-		contents, err := ioutil.ReadAll(os.Stdin)
-		if err != nil {
-			return err
-		}
-
-		newdata := api.ContainerPut{}
-		err = yaml.Unmarshal(contents, &newdata)
-		if err != nil {
-			return err
-		}
-
-		op, err := client.UpdateContainer(cont, newdata, "")
-		if err != nil {
-			return err
-		}
-
-		return op.Wait()
-	}
-
-	// Extract the current value
-	container, etag, err := client.GetContainer(cont)
-	if err != nil {
-		return err
-	}
-
-	brief := container.Writable()
-	data, err := yaml.Marshal(&brief)
-	if err != nil {
-		return err
-	}
-
-	// Spawn the editor
-	content, err := shared.TextEditor("", []byte(c.configEditHelp()+"\n\n"+string(data)))
-	if err != nil {
-		return err
-	}
-
-	for {
-		// Parse the text received from the editor
-		newdata := api.ContainerPut{}
-		err = yaml.Unmarshal(content, &newdata)
-		if err == nil {
-			var op lxd.Operation
-			op, err = client.UpdateContainer(cont, newdata, etag)
-			if err == nil {
-				err = op.Wait()
-			}
-		}
-
-		// Respawn the editor
-		if err != nil {
-			fmt.Fprintf(os.Stderr, i18n.G("Config parsing error: %s")+"\n", err)
-			fmt.Println(i18n.G("Press enter to start the editor again"))
-
-			_, err := os.Stdin.Read(make([]byte, 1))
-			if err != nil {
-				return err
-			}
-
-			content, err = shared.TextEditor("", content)
-			if err != nil {
-				return err
-			}
-			continue
-		}
-		break
-	}
-
-	return nil
-}
-
-func (c *configCmd) doDaemonConfigEdit(client lxd.ContainerServer) error {
-	// If stdin isn't a terminal, read text from it
-	if !termios.IsTerminal(int(syscall.Stdin)) {
-		contents, err := ioutil.ReadAll(os.Stdin)
-		if err != nil {
-			return err
-		}
-
-		newdata := api.ServerPut{}
-		err = yaml.Unmarshal(contents, &newdata)
-		if err != nil {
-			return err
-		}
-
-		return client.UpdateServer(newdata, "")
-	}
-
-	// Extract the current value
-	server, etag, err := client.GetServer()
-	if err != nil {
-		return err
-	}
-
-	brief := server.Writable()
-	data, err := yaml.Marshal(&brief)
-	if err != nil {
-		return err
-	}
-
-	// Spawn the editor
-	content, err := shared.TextEditor("", []byte(c.configEditHelp()+"\n\n"+string(data)))
-	if err != nil {
-		return err
-	}
-
-	for {
-		// Parse the text received from the editor
-		newdata := api.ServerPut{}
-		err = yaml.Unmarshal(content, &newdata)
-		if err == nil {
-			err = client.UpdateServer(newdata, etag)
-		}
-
-		// Respawn the editor
-		if err != nil {
-			fmt.Fprintf(os.Stderr, i18n.G("Config parsing error: %s")+"\n", err)
-			fmt.Println(i18n.G("Press enter to start the editor again"))
-
-			_, err := os.Stdin.Read(make([]byte, 1))
-			if err != nil {
-				return err
-			}
-
-			content, err = shared.TextEditor("", content)
-			if err != nil {
-				return err
-			}
-			continue
-		}
-		break
-	}
-
-	return nil
-}
-
-func (c *configCmd) deviceAdd(conf *config.Config, which string, args []string) error {
-	if len(args) < 5 {
-		return errArgs
-	}
-
-	remote, name, err := conf.ParseRemote(args[2])
-	if err != nil {
-		return err
-	}
-
-	client, err := conf.GetContainerServer(remote)
-	if err != nil {
-		return err
-	}
-
-	devname := args[3]
-	device := map[string]string{}
-	device["type"] = args[4]
-	if len(args) > 5 {
-		for _, prop := range args[5:] {
-			results := strings.SplitN(prop, "=", 2)
-			if len(results) != 2 {
-				return fmt.Errorf("No value found in %q", prop)
-			}
-			k := results[0]
-			v := results[1]
-			device[k] = v
-		}
-	}
-
-	if which == "profile" {
-		profile, etag, err := client.GetProfile(name)
-		if err != nil {
-			return err
-		}
-
-		_, ok := profile.Devices[devname]
-		if ok {
-			return fmt.Errorf(i18n.G("The device already exists"))
-		}
-
-		profile.Devices[devname] = device
-
-		err = client.UpdateProfile(name, profile.Writable(), etag)
-		if err != nil {
-			return err
-		}
-	} else {
-		container, etag, err := client.GetContainer(name)
-		if err != nil {
-			return err
-		}
-
-		_, ok := container.Devices[devname]
-		if ok {
-			return fmt.Errorf(i18n.G("The device already exists"))
-		}
-
-		container.Devices[devname] = device
-
-		op, err := client.UpdateContainer(name, container.Writable(), etag)
-		if err != nil {
-			return err
-		}
-
-		err = op.Wait()
-		if err != nil {
-			return err
-		}
-	}
-
-	fmt.Printf(i18n.G("Device %s added to %s")+"\n", devname, name)
-	return nil
-}
-
-func (c *configCmd) deviceGet(conf *config.Config, which string, args []string) error {
-	if len(args) < 5 {
-		return errArgs
-	}
-
-	remote, name, err := conf.ParseRemote(args[2])
-	if err != nil {
-		return err
-	}
-
-	client, err := conf.GetContainerServer(remote)
-	if err != nil {
-		return err
-	}
-
-	devname := args[3]
-	key := args[4]
-
-	if which == "profile" {
-		profile, _, err := client.GetProfile(name)
-		if err != nil {
-			return err
-		}
-
-		dev, ok := profile.Devices[devname]
-		if !ok {
-			return fmt.Errorf(i18n.G("The device doesn't exist"))
-		}
-
-		fmt.Println(dev[key])
-	} else {
-		container, _, err := client.GetContainer(name)
-		if err != nil {
-			return err
-		}
-
-		dev, ok := container.Devices[devname]
-		if !ok {
-			return fmt.Errorf(i18n.G("The device doesn't exist"))
-		}
-
-		fmt.Println(dev[key])
-	}
-
-	return nil
+// Edit
+type cmdConfigEdit struct {
+	global *cmdGlobal
+	config *cmdConfig
 }
 
-func (c *configCmd) deviceSet(conf *config.Config, which string, args []string) error {
-	if len(args) < 6 {
-		return errArgs
-	}
-
-	remote, name, err := conf.ParseRemote(args[2])
-	if err != nil {
-		return err
-	}
-
-	client, err := conf.GetContainerServer(remote)
-	if err != nil {
-		return err
-	}
-
-	devname := args[3]
-	key := args[4]
-	value := args[5]
-
-	if which == "profile" {
-		profile, etag, err := client.GetProfile(name)
-		if err != nil {
-			return err
-		}
-
-		dev, ok := profile.Devices[devname]
-		if !ok {
-			return fmt.Errorf(i18n.G("The device doesn't exist"))
-		}
-
-		dev[key] = value
-		profile.Devices[devname] = dev
-
-		err = client.UpdateProfile(name, profile.Writable(), etag)
-		if err != nil {
-			return err
-		}
-	} else {
-		container, etag, err := client.GetContainer(name)
-		if err != nil {
-			return err
-		}
-
-		dev, ok := container.Devices[devname]
-		if !ok {
-			return fmt.Errorf(i18n.G("The device doesn't exist"))
-		}
-
-		dev[key] = value
-		container.Devices[devname] = dev
+func (c *cmdConfigEdit) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("edit [<remote>:][container]")
+	cmd.Short = i18n.G("Edit container or server configurations as YAML")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Edit container or server configurations as YAML`))
+	cmd.Example = cli.FormatSection("", i18n.G(
+		`lxc config edit <container> < container.yaml
+    Update the container configuration from config.yaml.`))
 
-		op, err := client.UpdateContainer(name, container.Writable(), etag)
-		if err != nil {
-			return err
-		}
+	cmd.RunE = c.Run
 
-		err = op.Wait()
-		if err != nil {
-			return err
-		}
-	}
+	return cmd
+}
 
-	return nil
+func (c *cmdConfigEdit) helpTemplate() string {
+	return i18n.G(
+		`### This is a yaml representation of the configuration.
+### Any line starting with a '# will be ignored.
+###
+### A sample configuration looks like:
+### name: container1
+### profiles:
+### - default
+### config:
+###   volatile.eth0.hwaddr: 00:16:3e:e9:f8:7f
+### devices:
+###   homedir:
+###     path: /extra
+###     source: /home/user
+###     type: disk
+### ephemeral: false
+###
+### Note that the name is shown but cannot be changed`)
 }
 
-func (c *configCmd) deviceUnset(conf *config.Config, which string, args []string) error {
-	if len(args) < 5 {
-		return errArgs
+func (c *cmdConfigEdit) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 0, 1)
+	if exit {
+		return err
 	}
 
-	remote, name, err := conf.ParseRemote(args[2])
-	if err != nil {
-		return err
+	// Parse remote
+	remote := ""
+	if len(args) > 0 {
+		remote = args[0]
 	}
 
-	client, err := conf.GetContainerServer(remote)
+	resources, err := c.global.ParseServers(remote)
 	if err != nil {
 		return err
 	}
 
-	devname := args[3]
-	key := args[4]
+	resource := resources[0]
 
-	if which == "profile" {
-		profile, etag, err := client.GetProfile(name)
-		if err != nil {
-			return err
-		}
+	// Edit the config
+	if resource.name != "" {
+		// If stdin isn't a terminal, read text from it
+		if !termios.IsTerminal(int(syscall.Stdin)) {
+			contents, err := ioutil.ReadAll(os.Stdin)
+			if err != nil {
+				return err
+			}
 
-		dev, ok := profile.Devices[devname]
-		if !ok {
-			return fmt.Errorf(i18n.G("The device doesn't exist"))
-		}
-		delete(dev, key)
-		profile.Devices[devname] = dev
+			newdata := api.ContainerPut{}
+			err = yaml.Unmarshal(contents, &newdata)
+			if err != nil {
+				return err
+			}
 
-		err = client.UpdateProfile(name, profile.Writable(), etag)
-		if err != nil {
-			return err
-		}
-	} else {
-		container, etag, err := client.GetContainer(name)
-		if err != nil {
-			return err
-		}
+			op, err := resource.server.UpdateContainer(resource.name, newdata, "")
+			if err != nil {
+				return err
+			}
 
-		dev, ok := container.Devices[devname]
-		if !ok {
-			return fmt.Errorf(i18n.G("The device doesn't exist"))
+			return op.Wait()
 		}
-		delete(dev, key)
-		container.Devices[devname] = dev
 
-		op, err := client.UpdateContainer(name, container.Writable(), etag)
+		// Extract the current value
+		container, etag, err := resource.server.GetContainer(resource.name)
 		if err != nil {
 			return err
 		}
 
-		err = op.Wait()
+		brief := container.Writable()
+		data, err := yaml.Marshal(&brief)
 		if err != nil {
 			return err
 		}
-	}
-
-	return nil
-}
-
-func (c *configCmd) deviceRm(conf *config.Config, which string, args []string) error {
-	if len(args) < 4 {
-		return errArgs
-	}
-
-	remote, name, err := conf.ParseRemote(args[2])
-	if err != nil {
-		return err
-	}
-
-	client, err := conf.GetContainerServer(remote)
-	if err != nil {
-		return err
-	}
 
-	if which == "profile" {
-		profile, etag, err := client.GetProfile(name)
+		// Spawn the editor
+		content, err := shared.TextEditor("", []byte(c.helpTemplate()+"\n\n"+string(data)))
 		if err != nil {
 			return err
 		}
 
-		for _, devname := range args[3:] {
-			_, ok := profile.Devices[devname]
-			if !ok {
-				return fmt.Errorf(i18n.G("The device doesn't exist"))
+		for {
+			// Parse the text received from the editor
+			newdata := api.ContainerPut{}
+			err = yaml.Unmarshal(content, &newdata)
+			if err == nil {
+				var op lxd.Operation
+				op, err = resource.server.UpdateContainer(resource.name, newdata, etag)
+				if err == nil {
+					err = op.Wait()
+				}
 			}
-			delete(profile.Devices, devname)
-		}
 
-		err = client.UpdateProfile(name, profile.Writable(), etag)
-		if err != nil {
-			return err
-		}
-	} else {
-		container, etag, err := client.GetContainer(name)
-		if err != nil {
-			return err
-		}
+			// Respawn the editor
+			if err != nil {
+				fmt.Fprintf(os.Stderr, i18n.G("Config parsing error: %s")+"\n", err)
+				fmt.Println(i18n.G("Press enter to start the editor again"))
 
-		for _, devname := range args[3:] {
-			_, ok := container.Devices[devname]
-			if !ok {
-				return fmt.Errorf(i18n.G("The device doesn't exist"))
+				_, err := os.Stdin.Read(make([]byte, 1))
+				if err != nil {
+					return err
+				}
+
+				content, err = shared.TextEditor("", content)
+				if err != nil {
+					return err
+				}
+				continue
 			}
-			delete(container.Devices, devname)
+			break
 		}
 
-		op, err := client.UpdateContainer(name, container.Writable(), etag)
+		return nil
+	}
+
+	// If stdin isn't a terminal, read text from it
+	if !termios.IsTerminal(int(syscall.Stdin)) {
+		contents, err := ioutil.ReadAll(os.Stdin)
 		if err != nil {
 			return err
 		}
 
-		err = op.Wait()
+		newdata := api.ServerPut{}
+		err = yaml.Unmarshal(contents, &newdata)
 		if err != nil {
 			return err
 		}
-	}
-
-	fmt.Printf(i18n.G("Device %s removed from %s")+"\n", strings.Join(args[3:], ", "), name)
-	return nil
-}
 
-func (c *configCmd) deviceOverride(conf *config.Config, args []string) error {
-	if len(args) < 4 {
-		return errArgs
+		return resource.server.UpdateServer(newdata, "")
 	}
 
-	remote, name, err := conf.ParseRemote(args[2])
+	// Extract the current value
+	server, etag, err := resource.server.GetServer()
 	if err != nil {
 		return err
 	}
 
-	client, err := conf.GetContainerServer(remote)
+	brief := server.Writable()
+	data, err := yaml.Marshal(&brief)
 	if err != nil {
 		return err
 	}
 
-	container, etag, err := client.GetContainer(name)
+	// Spawn the editor
+	content, err := shared.TextEditor("", data)
 	if err != nil {
 		return err
 	}
 
-	devname := args[3]
-	_, ok := container.Devices[devname]
-	if ok {
-		return fmt.Errorf(i18n.G("The device already exists"))
-	}
+	for {
+		// Parse the text received from the editor
+		newdata := api.ServerPut{}
+		err = yaml.Unmarshal(content, &newdata)
+		if err == nil {
+			err = resource.server.UpdateServer(newdata, etag)
+		}
 
-	device, ok := container.ExpandedDevices[devname]
-	if !ok {
-		return fmt.Errorf(i18n.G("The profile device doesn't exist"))
-	}
+		// Respawn the editor
+		if err != nil {
+			fmt.Fprintf(os.Stderr, i18n.G("Config parsing error: %s")+"\n", err)
+			fmt.Println(i18n.G("Press enter to start the editor again"))
 
-	if len(args) > 4 {
-		for _, prop := range args[4:] {
-			results := strings.SplitN(prop, "=", 2)
-			if len(results) != 2 {
-				return fmt.Errorf("No value found in %q", prop)
+			_, err := os.Stdin.Read(make([]byte, 1))
+			if err != nil {
+				return err
+			}
+
+			content, err = shared.TextEditor("", content)
+			if err != nil {
+				return err
 			}
-			k := results[0]
-			v := results[1]
-			device[k] = v
+			continue
 		}
+		break
 	}
 
-	container.Devices[devname] = device
+	return nil
+}
 
-	op, err := client.UpdateContainer(name, container.Writable(), etag)
-	if err != nil {
-		return err
-	}
+// Get
+type cmdConfigGet struct {
+	global *cmdGlobal
+	config *cmdConfig
+}
 
-	err = op.Wait()
-	if err != nil {
-		return err
-	}
+func (c *cmdConfigGet) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("get [<remote>:][container] <key>")
+	cmd.Short = i18n.G("Get values for container or server configuration keys")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Get values for container or server configuration keys`))
 
-	fmt.Printf(i18n.G("Device %s overridden for %s")+"\n", devname, name)
-	return nil
+	cmd.RunE = c.Run
+
+	return cmd
 }
 
-func (c *configCmd) deviceList(conf *config.Config, which string, args []string) error {
-	if len(args) < 3 {
-		return errArgs
+func (c *cmdConfigGet) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, 2)
+	if exit {
+		return err
 	}
 
-	remote, name, err := conf.ParseRemote(args[2])
-	if err != nil {
-		return err
+	// Parse remote
+	remote := ""
+	if len(args) > 1 {
+		remote = args[0]
 	}
 
-	client, err := conf.GetContainerServer(remote)
+	resources, err := c.global.ParseServers(remote)
 	if err != nil {
 		return err
 	}
 
-	var devices []string
-	if which == "profile" {
-		profile, _, err := client.GetProfile(name)
+	resource := resources[0]
+
+	// Get the config key
+	if resource.name != "" {
+		resp, _, err := resource.server.GetContainer(resource.name)
 		if err != nil {
 			return err
 		}
-
-		for k := range profile.Devices {
-			devices = append(devices, k)
-		}
+		fmt.Println(resp.Config[args[len(args)-1]])
 	} else {
-		container, _, err := client.GetContainer(name)
+		resp, _, err := resource.server.GetServer()
 		if err != nil {
 			return err
 		}
 
-		for k := range container.Devices {
-			devices = append(devices, k)
+		value := resp.Config[args[len(args)-1]]
+		if value == nil {
+			value = ""
+		} else if value == true {
+			value = "true"
+		} else if value == false {
+			value = "false"
 		}
+
+		fmt.Println(value)
 	}
 
-	fmt.Printf("%s\n", strings.Join(devices, "\n"))
 	return nil
 }
 
-func (c *configCmd) deviceShow(conf *config.Config, which string, args []string) error {
-	if len(args) < 3 {
-		return errArgs
-	}
+// Set
+type cmdConfigSet struct {
+	global *cmdGlobal
+	config *cmdConfig
+}
 
-	remote, name, err := conf.ParseRemote(args[2])
-	if err != nil {
+func (c *cmdConfigSet) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("set [<remote>:][container] <key> <value>")
+	cmd.Short = i18n.G("Set container or server configuration keys")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Set container or server configuration keys`))
+	cmd.Example = cli.FormatSection("", i18n.G(
+		`lxc config set [<remote>:]<container> limits.cpu 2
+    Will set a CPU limit of "2" for the container.
+
+lxc config set core.https_address [::]:8443
+    Will have LXD listen on IPv4 and IPv6 port 8443.
+
+lxc config set core.trust_password blah
+    Will set the server's trust password to blah.`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdConfigSet) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 2, 3)
+	if exit {
 		return err
 	}
 
-	client, err := conf.GetContainerServer(remote)
+	// Parse remote
+	remote := ""
+	if len(args) > 2 {
+		remote = args[0]
+	}
+
+	resources, err := c.global.ParseServers(remote)
 	if err != nil {
 		return err
 	}
 
-	var devices map[string]map[string]string
-	if which == "profile" {
-		profile, _, err := client.GetProfile(name)
+	resource := resources[0]
+
+	// Set the config key
+	if resource.name != "" {
+		key := args[len(args)-2]
+		value := args[len(args)-1]
+
+		if !termios.IsTerminal(int(syscall.Stdin)) && value == "-" {
+			buf, err := ioutil.ReadAll(os.Stdin)
+			if err != nil {
+				return fmt.Errorf(i18n.G("Can't read from stdin: %s"), err)
+			}
+			value = string(buf[:])
+		}
+
+		container, etag, err := resource.server.GetContainer(resource.name)
 		if err != nil {
 			return err
 		}
 
-		devices = profile.Devices
-	} else {
-		container, _, err := client.GetContainer(name)
+		if cmd.Name() == "unset" {
+			_, ok := container.Config[key]
+			if !ok {
+				return fmt.Errorf(i18n.G("Can't unset key '%s', it's not currently set"), key)
+			}
+
+			delete(container.Config, key)
+		} else {
+			container.Config[key] = value
+		}
+
+		op, err := resource.server.UpdateContainer(resource.name, container.Writable(), etag)
 		if err != nil {
 			return err
 		}
 
-		devices = container.Devices
+		return op.Wait()
 	}
 
-	data, err := yaml.Marshal(&devices)
+	// Server keys
+	server, etag, err := resource.server.GetServer()
 	if err != nil {
 		return err
 	}
 
-	fmt.Printf(string(data))
-	return nil
+	server.Config[args[len(args)-2]] = args[len(args)-1]
+
+	return resource.server.UpdateServer(server.Writable(), etag)
 }
 
-func (c *configCmd) doContainerMetadataEdit(client lxd.ContainerServer, name string) error {
-	if !termios.IsTerminal(int(syscall.Stdin)) {
-		metadata := api.ImageMetadata{}
-		content, err := ioutil.ReadAll(os.Stdin)
-		if err != nil {
-			return err
-		}
+// Show
+type cmdConfigShow struct {
+	global *cmdGlobal
+	config *cmdConfig
 
-		err = yaml.Unmarshal(content, &metadata)
-		if err != nil {
-			return err
-		}
-		return client.SetContainerMetadata(name, metadata, "")
-	}
+	flagExpanded bool
+}
 
-	metadata, etag, err := client.GetContainerMetadata(name)
-	if err != nil {
+func (c *cmdConfigShow) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("show [<remote>:][container]")
+	cmd.Short = i18n.G("Show container or server configurations")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Show container or server configurations`))
+
+	cmd.Flags().BoolVar(&c.flagExpanded, "expanded", false, i18n.G("Show the expanded configuration"))
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdConfigShow) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 0, 1)
+	if exit {
 		return err
 	}
-	origContent, err := yaml.Marshal(metadata)
-	if err != nil {
-		return err
+
+	// Parse remote
+	remote := ""
+	if len(args) > 0 {
+		remote = args[0]
 	}
 
-	// Spawn the editor
-	content, err := shared.TextEditor("", []byte(c.metadataEditHelp()+"\n\n"+string(origContent)))
+	resources, err := c.global.ParseServers(remote)
 	if err != nil {
 		return err
 	}
 
-	for {
-		metadata := api.ImageMetadata{}
-		err = yaml.Unmarshal(content, &metadata)
-		if err == nil {
-			err = client.SetContainerMetadata(name, metadata, etag)
+	resource := resources[0]
+
+	// Show configuration
+	var data []byte
+
+	if resource.name == "" {
+		// Server config
+		server, _, err := resource.server.GetServer()
+		if err != nil {
+			return err
 		}
 
-		// Respawn the editor
+		brief := server.Writable()
+		data, err = yaml.Marshal(&brief)
 		if err != nil {
-			fmt.Fprintf(os.Stderr, i18n.G("Config parsing error: %s")+"\n", err)
-			fmt.Println(i18n.G("Press enter to start the editor again"))
+			return err
+		}
+	} else {
+		// Container config
+		var brief api.ContainerPut
 
-			_, err := os.Stdin.Read(make([]byte, 1))
+		if shared.IsSnapshot(resource.name) {
+			// Snapshot
+			fields := strings.Split(resource.name, shared.SnapshotDelimiter)
+
+			snap, _, err := resource.server.GetContainerSnapshot(fields[0], fields[1])
 			if err != nil {
 				return err
 			}
 
-			content, err = shared.TextEditor("", content)
+			brief = api.ContainerPut{
+				Profiles:  snap.Profiles,
+				Config:    snap.Config,
+				Devices:   snap.Devices,
+				Ephemeral: snap.Ephemeral,
+			}
+
+			if c.flagExpanded {
+				brief = api.ContainerPut{
+					Profiles:  snap.Profiles,
+					Config:    snap.ExpandedConfig,
+					Devices:   snap.ExpandedDevices,
+					Ephemeral: snap.Ephemeral,
+				}
+			}
+		} else {
+			// Container
+			container, _, err := resource.server.GetContainer(resource.name)
 			if err != nil {
 				return err
 			}
-			continue
+
+			brief = container.Writable()
+			if c.flagExpanded {
+				brief.Config = container.ExpandedConfig
+				brief.Devices = container.ExpandedDevices
+			}
 		}
 
-		break
+		data, err = yaml.Marshal(&brief)
+		if err != nil {
+			return err
+		}
 	}
 
+	fmt.Printf("%s", data)
+
 	return nil
 }
 
-func (c *configCmd) doContainerTemplateFileCreate(client lxd.ContainerServer, containerName string, templateName string) error {
-	return client.CreateContainerTemplateFile(containerName, templateName, nil)
+// Unset
+type cmdConfigUnset struct {
+	global    *cmdGlobal
+	config    *cmdConfig
+	configSet *cmdConfigSet
 }
 
-func (c *configCmd) doContainerTemplateFileEdit(client lxd.ContainerServer, containerName string, templateName string) error {
-	if !termios.IsTerminal(int(syscall.Stdin)) {
-		return client.UpdateContainerTemplateFile(containerName, templateName, os.Stdin)
-	}
-
-	reader, err := client.GetContainerTemplateFile(containerName, templateName)
-	if err != nil {
-		return err
-	}
-	content, err := ioutil.ReadAll(reader)
-	if err != nil {
-		return err
-	}
-
-	// Spawn the editor
-	content, err = shared.TextEditor("", content)
-	if err != nil {
-		return err
-	}
-
-	for {
-		reader := bytes.NewReader(content)
-		err := client.UpdateContainerTemplateFile(containerName, templateName, reader)
-		// Respawn the editor
-		if err != nil {
-			fmt.Fprintf(os.Stderr, i18n.G("Error updating template file: %s")+"\n", err)
-			fmt.Println(i18n.G("Press enter to start the editor again"))
+func (c *cmdConfigUnset) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("unset [<remote>:][container] <key>")
+	cmd.Short = i18n.G("Unset container or server configuration keys")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Unset container or server configuration keys`))
 
-			_, err := os.Stdin.Read(make([]byte, 1))
-			if err != nil {
-				return err
-			}
+	cmd.RunE = c.Run
 
-			content, err = shared.TextEditor("", content)
-			if err != nil {
-				return err
-			}
-			continue
-		}
+	return cmd
+}
 
-		break
+func (c *cmdConfigUnset) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, 2)
+	if exit {
+		return err
 	}
 
-	return nil
+	args = append(args, "")
+	return c.configSet.Run(cmd, args)
 }
diff --git a/lxc/config_device.go b/lxc/config_device.go
index 5da173c64..8acaed14b 100644
--- a/lxc/config_device.go
+++ b/lxc/config_device.go
@@ -75,6 +75,9 @@ func (c *cmdConfigDeviceAdd) Command() *cobra.Command {
 	cmd.Short = i18n.G("Add devices to containers or profiles")
 	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
 		`Add devices to containers or profiles`))
+	cmd.Example = cli.FormatSection("", i18n.G(
+		`lxc config device add [<remote>:]container1 <device-name> disk source=/share/c1 path=opt
+    Will mount the host's /share/c1 onto /opt in the container.`))
 
 	cmd.RunE = c.Run
 
@@ -101,11 +104,11 @@ func (c *cmdConfigDeviceAdd) Run(cmd *cobra.Command, args []string) error {
 	}
 
 	// Add the device
-	devname := args[2]
+	devname := args[1]
 	device := map[string]string{}
-	device["type"] = args[3]
-	if len(args) > 4 {
-		for _, prop := range args[4:] {
+	device["type"] = args[2]
+	if len(args) > 3 {
+		for _, prop := range args[3:] {
 			results := strings.SplitN(prop, "=", 2)
 			if len(results) != 2 {
 				return fmt.Errorf("No value found in %q", prop)
@@ -514,6 +517,53 @@ func (c *cmdConfigDeviceSet) Run(cmd *cobra.Command, args []string) error {
 		return fmt.Errorf(i18n.G("Missing name"))
 	}
 
+	// Set the device config key
+	devname := args[1]
+	key := args[2]
+	value := args[3]
+
+	if c.profile != nil {
+		profile, etag, err := resource.server.GetProfile(resource.name)
+		if err != nil {
+			return err
+		}
+
+		dev, ok := profile.Devices[devname]
+		if !ok {
+			return fmt.Errorf(i18n.G("The device doesn't exist"))
+		}
+
+		dev[key] = value
+		profile.Devices[devname] = dev
+
+		err = resource.server.UpdateProfile(resource.name, profile.Writable(), etag)
+		if err != nil {
+			return err
+		}
+	} else {
+		container, etag, err := resource.server.GetContainer(resource.name)
+		if err != nil {
+			return err
+		}
+		dev, ok := container.Devices[devname]
+		if !ok {
+			return fmt.Errorf(i18n.G("The device doesn't exist"))
+		}
+
+		dev[key] = value
+		container.Devices[devname] = dev
+
+		op, err := resource.server.UpdateContainer(resource.name, container.Writable(), etag)
+		if err != nil {
+			return err
+		}
+
+		err = op.Wait()
+		if err != nil {
+			return err
+		}
+	}
+
 	return nil
 }
 
diff --git a/lxc/config_metadata.go b/lxc/config_metadata.go
new file mode 100644
index 000000000..07c2ecabf
--- /dev/null
+++ b/lxc/config_metadata.go
@@ -0,0 +1,216 @@
+package main
+
+import (
+	"fmt"
+	"io/ioutil"
+	"os"
+	"syscall"
+
+	"github.com/spf13/cobra"
+	"gopkg.in/yaml.v2"
+
+	"github.com/lxc/lxd/shared"
+	"github.com/lxc/lxd/shared/api"
+	cli "github.com/lxc/lxd/shared/cmd"
+	"github.com/lxc/lxd/shared/i18n"
+	"github.com/lxc/lxd/shared/termios"
+)
+
+type cmdConfigMetadata struct {
+	global  *cmdGlobal
+	config  *cmdConfig
+	profile *cmdProfile
+}
+
+func (c *cmdConfigMetadata) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("metadata")
+	cmd.Short = i18n.G("Manage container metadata files")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Manage container metadata files`))
+
+	// Edit
+	configMetadataEditCmd := cmdConfigMetadataEdit{global: c.global, config: c.config, configMetadata: c}
+	cmd.AddCommand(configMetadataEditCmd.Command())
+
+	// Show
+	configMetadataShowCmd := cmdConfigMetadataShow{global: c.global, config: c.config, configMetadata: c}
+	cmd.AddCommand(configMetadataShowCmd.Command())
+
+	return cmd
+}
+
+// Edit
+type cmdConfigMetadataEdit struct {
+	global         *cmdGlobal
+	config         *cmdConfig
+	configMetadata *cmdConfigMetadata
+}
+
+func (c *cmdConfigMetadataEdit) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("edit [<remote>:][container]")
+	cmd.Short = i18n.G("Edit container metadata files")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Edit container metadata files`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdConfigMetadataEdit) helpTemplate() string {
+	return i18n.G(
+		`### This is a yaml representation of the container metadata.
+### Any line starting with a '# will be ignored.
+###
+### A sample configuration looks like:
+###
+### architecture: x86_64
+### creation_date: 1477146654
+### expiry_date: 0
+### properties:
+###   architecture: x86_64
+###   description: Busybox x86_64
+###   name: busybox-x86_64
+###   os: Busybox
+### templates:
+###   /template:
+###     when:
+###     - ""
+###     create_only: false
+###     template: template.tpl
+###     properties: {}`)
+}
+
+func (c *cmdConfigMetadataEdit) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, 1)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing container name"))
+	}
+
+	// Edit the metadata
+	if !termios.IsTerminal(int(syscall.Stdin)) {
+		metadata := api.ImageMetadata{}
+		content, err := ioutil.ReadAll(os.Stdin)
+		if err != nil {
+			return err
+		}
+
+		err = yaml.Unmarshal(content, &metadata)
+		if err != nil {
+			return err
+		}
+		return resource.server.SetContainerMetadata(resource.name, metadata, "")
+	}
+
+	metadata, etag, err := resource.server.GetContainerMetadata(resource.name)
+	if err != nil {
+		return err
+	}
+	origContent, err := yaml.Marshal(metadata)
+	if err != nil {
+		return err
+	}
+
+	// Spawn the editor
+	content, err := shared.TextEditor("", []byte(c.helpTemplate()+"\n\n"+string(origContent)))
+	if err != nil {
+		return err
+	}
+
+	for {
+		metadata := api.ImageMetadata{}
+		err = yaml.Unmarshal(content, &metadata)
+		if err == nil {
+			err = resource.server.SetContainerMetadata(resource.name, metadata, etag)
+		}
+
+		// Respawn the editor
+		if err != nil {
+			fmt.Fprintf(os.Stderr, i18n.G("Config parsing error: %s")+"\n", err)
+			fmt.Println(i18n.G("Press enter to start the editor again"))
+
+			_, err := os.Stdin.Read(make([]byte, 1))
+			if err != nil {
+				return err
+			}
+
+			content, err = shared.TextEditor("", content)
+			if err != nil {
+				return err
+			}
+			continue
+		}
+
+		break
+	}
+
+	return nil
+}
+
+// Show
+type cmdConfigMetadataShow struct {
+	global         *cmdGlobal
+	config         *cmdConfig
+	configMetadata *cmdConfigMetadata
+}
+
+func (c *cmdConfigMetadataShow) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("show [<remote>:][container]")
+	cmd.Short = i18n.G("Show container metadata files")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Show container metadata files`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdConfigMetadataShow) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, 1)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing container name"))
+	}
+
+	// Show the container metadata
+	metadata, _, err := resource.server.GetContainerMetadata(resource.name)
+	if err != nil {
+		return err
+	}
+
+	content, err := yaml.Marshal(metadata)
+	if err != nil {
+		return err
+	}
+	fmt.Printf("%s", content)
+
+	return nil
+}
diff --git a/lxc/config_template.go b/lxc/config_template.go
new file mode 100644
index 000000000..cc52f90e2
--- /dev/null
+++ b/lxc/config_template.go
@@ -0,0 +1,339 @@
+package main
+
+import (
+	"bytes"
+	"fmt"
+	"io/ioutil"
+	"os"
+	"sort"
+	"syscall"
+
+	"github.com/olekukonko/tablewriter"
+	"github.com/spf13/cobra"
+
+	"github.com/lxc/lxd/shared"
+	cli "github.com/lxc/lxd/shared/cmd"
+	"github.com/lxc/lxd/shared/i18n"
+	"github.com/lxc/lxd/shared/termios"
+)
+
+type cmdConfigTemplate struct {
+	global  *cmdGlobal
+	config  *cmdConfig
+	profile *cmdProfile
+}
+
+func (c *cmdConfigTemplate) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("template")
+	cmd.Short = i18n.G("Manage container file templates")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Manage container file templates`))
+
+	// Create
+	configTemplateCreateCmd := cmdConfigTemplateCreate{global: c.global, config: c.config, configTemplate: c}
+	cmd.AddCommand(configTemplateCreateCmd.Command())
+
+	// Delete
+	configTemplateDeleteCmd := cmdConfigTemplateDelete{global: c.global, config: c.config, configTemplate: c}
+	cmd.AddCommand(configTemplateDeleteCmd.Command())
+
+	// Edit
+	configTemplateEditCmd := cmdConfigTemplateEdit{global: c.global, config: c.config, configTemplate: c}
+	cmd.AddCommand(configTemplateEditCmd.Command())
+
+	// List
+	configTemplateListCmd := cmdConfigTemplateList{global: c.global, config: c.config, configTemplate: c}
+	cmd.AddCommand(configTemplateListCmd.Command())
+
+	// Show
+	configTemplateShowCmd := cmdConfigTemplateShow{global: c.global, config: c.config, configTemplate: c}
+	cmd.AddCommand(configTemplateShowCmd.Command())
+
+	return cmd
+}
+
+// Create
+type cmdConfigTemplateCreate struct {
+	global         *cmdGlobal
+	config         *cmdConfig
+	configTemplate *cmdConfigTemplate
+}
+
+func (c *cmdConfigTemplateCreate) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("create [<remote>:]<container> <template>")
+	cmd.Short = i18n.G("Create new container file templates")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Create new container file templates`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdConfigTemplateCreate) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 2, 2)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing container name"))
+	}
+
+	// Create container file template
+	return resource.server.CreateContainerTemplateFile(resource.name, args[1], nil)
+}
+
+// Delete
+type cmdConfigTemplateDelete struct {
+	global         *cmdGlobal
+	config         *cmdConfig
+	configTemplate *cmdConfigTemplate
+}
+
+func (c *cmdConfigTemplateDelete) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("delete [<remote>:]<container> <template>")
+	cmd.Aliases = []string{"rm"}
+	cmd.Short = i18n.G("Delete container file templates")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Delete container file templates`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdConfigTemplateDelete) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 2, 2)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing container name"))
+	}
+
+	// Delete container file template
+	return resource.server.DeleteContainerTemplateFile(resource.name, args[1])
+}
+
+// Edit
+type cmdConfigTemplateEdit struct {
+	global         *cmdGlobal
+	config         *cmdConfig
+	configTemplate *cmdConfigTemplate
+}
+
+func (c *cmdConfigTemplateEdit) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("edit [<remote>:]<container> <template>")
+	cmd.Short = i18n.G("Edit container file templates")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Edit container file templates`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdConfigTemplateEdit) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 2, 2)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing container name"))
+	}
+
+	// Edit container file template
+	if !termios.IsTerminal(int(syscall.Stdin)) {
+		return resource.server.UpdateContainerTemplateFile(resource.name, args[1], os.Stdin)
+	}
+
+	reader, err := resource.server.GetContainerTemplateFile(resource.name, args[1])
+	if err != nil {
+		return err
+	}
+	content, err := ioutil.ReadAll(reader)
+	if err != nil {
+		return err
+	}
+
+	// Spawn the editor
+	content, err = shared.TextEditor("", content)
+	if err != nil {
+		return err
+	}
+
+	for {
+		reader := bytes.NewReader(content)
+		err := resource.server.UpdateContainerTemplateFile(resource.name, args[1], reader)
+		// Respawn the editor
+		if err != nil {
+			fmt.Fprintf(os.Stderr, i18n.G("Error updating template file: %s")+"\n", err)
+			fmt.Println(i18n.G("Press enter to start the editor again"))
+
+			_, err := os.Stdin.Read(make([]byte, 1))
+			if err != nil {
+				return err
+			}
+
+			content, err = shared.TextEditor("", content)
+			if err != nil {
+				return err
+			}
+			continue
+		}
+
+		break
+	}
+
+	return nil
+}
+
+// List
+type cmdConfigTemplateList struct {
+	global         *cmdGlobal
+	config         *cmdConfig
+	configTemplate *cmdConfigTemplate
+}
+
+func (c *cmdConfigTemplateList) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("list [<remote>:]<container>")
+	cmd.Short = i18n.G("List container file templates")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`List container file templates`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdConfigTemplateList) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, 1)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing container name"))
+	}
+
+	// List the templates
+	templates, err := resource.server.GetContainerTemplateFiles(resource.name)
+	if err != nil {
+		return err
+	}
+
+	// Render the table
+	data := [][]string{}
+	for _, template := range templates {
+		data = append(data, []string{template})
+	}
+
+	table := tablewriter.NewWriter(os.Stdout)
+	table.SetAutoWrapText(false)
+	table.SetAlignment(tablewriter.ALIGN_LEFT)
+	table.SetRowLine(true)
+	table.SetHeader([]string{i18n.G("FILENAME")})
+	sort.Sort(byName(data))
+	table.AppendBulk(data)
+	table.Render()
+
+	return nil
+}
+
+// Show
+type cmdConfigTemplateShow struct {
+	global         *cmdGlobal
+	config         *cmdConfig
+	configTemplate *cmdConfigTemplate
+}
+
+func (c *cmdConfigTemplateShow) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("show [<remote>:]<container> <template>")
+	cmd.Short = i18n.G("Show content of container file templates")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Show content of container file templates`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdConfigTemplateShow) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 2, 2)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	resources, err := c.global.ParseServers(args[0])
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+
+	if resource.name == "" {
+		return fmt.Errorf(i18n.G("Missing container name"))
+	}
+
+	// Show the template
+	template, err := resource.server.GetContainerTemplateFile(resource.name, args[1])
+	if err != nil {
+		return err
+	}
+
+	content, err := ioutil.ReadAll(template)
+	if err != nil {
+		return err
+	}
+
+	fmt.Printf("%s", content)
+
+	return nil
+}
diff --git a/lxc/config_trust.go b/lxc/config_trust.go
new file mode 100644
index 000000000..912d3da92
--- /dev/null
+++ b/lxc/config_trust.go
@@ -0,0 +1,227 @@
+package main
+
+import (
+	"crypto/x509"
+	"encoding/base64"
+	"encoding/pem"
+	"fmt"
+	"os"
+	"sort"
+
+	"github.com/olekukonko/tablewriter"
+	"github.com/spf13/cobra"
+
+	"github.com/lxc/lxd/shared"
+	"github.com/lxc/lxd/shared/api"
+	cli "github.com/lxc/lxd/shared/cmd"
+	"github.com/lxc/lxd/shared/i18n"
+)
+
+type cmdConfigTrust struct {
+	global  *cmdGlobal
+	config  *cmdConfig
+	profile *cmdProfile
+}
+
+func (c *cmdConfigTrust) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("trust")
+	cmd.Short = i18n.G("Manage trusted clients")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Manage trusted clients`))
+
+	// Add
+	configTrustAddCmd := cmdConfigTrustAdd{global: c.global, config: c.config, configTrust: c}
+	cmd.AddCommand(configTrustAddCmd.Command())
+
+	// List
+	configTrustListCmd := cmdConfigTrustList{global: c.global, config: c.config, configTrust: c}
+	cmd.AddCommand(configTrustListCmd.Command())
+
+	// Remove
+	configTrustRemoveCmd := cmdConfigTrustRemove{global: c.global, config: c.config, configTrust: c}
+	cmd.AddCommand(configTrustRemoveCmd.Command())
+
+	return cmd
+}
+
+// Add
+type cmdConfigTrustAdd struct {
+	global      *cmdGlobal
+	config      *cmdConfig
+	configTrust *cmdConfigTrust
+}
+
+func (c *cmdConfigTrustAdd) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("add [<remote>:] <cert>")
+	cmd.Short = i18n.G("Add new trusted clients")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Add new trusted clients`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdConfigTrustAdd) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, 2)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	remote := ""
+	if len(args) > 0 {
+		remote = args[0]
+	}
+
+	resources, err := c.global.ParseServers(remote)
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+
+	// Add trust relationship
+	fname := args[len(args)-1]
+	x509Cert, err := shared.ReadCert(fname)
+	if err != nil {
+		return err
+	}
+	name, _ := shared.SplitExt(fname)
+
+	cert := api.CertificatesPost{}
+	cert.Certificate = base64.StdEncoding.EncodeToString(x509Cert.Raw)
+	cert.Name = name
+	cert.Type = "client"
+
+	return resource.server.CreateCertificate(cert)
+}
+
+// List
+type cmdConfigTrustList struct {
+	global      *cmdGlobal
+	config      *cmdConfig
+	configTrust *cmdConfigTrust
+}
+
+func (c *cmdConfigTrustList) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("list [<remote>:]")
+	cmd.Aliases = []string{"ls"}
+	cmd.Short = i18n.G("List trusted clients")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`List trusted clients`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdConfigTrustList) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 0, 1)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	remote := ""
+	if len(args) > 0 {
+		remote = args[0]
+	}
+
+	resources, err := c.global.ParseServers(remote)
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+
+	// List trust relationships
+	trust, err := resource.server.GetCertificates()
+	if err != nil {
+		return err
+	}
+
+	data := [][]string{}
+	for _, cert := range trust {
+		fp := cert.Fingerprint[0:12]
+
+		certBlock, _ := pem.Decode([]byte(cert.Certificate))
+		if certBlock == nil {
+			return fmt.Errorf(i18n.G("Invalid certificate"))
+		}
+
+		cert, err := x509.ParseCertificate(certBlock.Bytes)
+		if err != nil {
+			return err
+		}
+
+		const layout = "Jan 2, 2006 at 3:04pm (MST)"
+		issue := cert.NotBefore.Format(layout)
+		expiry := cert.NotAfter.Format(layout)
+		data = append(data, []string{fp, cert.Subject.CommonName, issue, expiry})
+	}
+
+	table := tablewriter.NewWriter(os.Stdout)
+	table.SetAutoWrapText(false)
+	table.SetAlignment(tablewriter.ALIGN_LEFT)
+	table.SetRowLine(true)
+	table.SetHeader([]string{
+		i18n.G("FINGERPRINT"),
+		i18n.G("COMMON NAME"),
+		i18n.G("ISSUE DATE"),
+		i18n.G("EXPIRY DATE")})
+	sort.Sort(stringList(data))
+	table.AppendBulk(data)
+	table.Render()
+
+	return nil
+}
+
+// Remove
+type cmdConfigTrustRemove struct {
+	global      *cmdGlobal
+	config      *cmdConfig
+	configTrust *cmdConfigTrust
+}
+
+func (c *cmdConfigTrustRemove) Command() *cobra.Command {
+	cmd := &cobra.Command{}
+	cmd.Use = i18n.G("remove [<remote>:] <hostname|fingerprint>")
+	cmd.Aliases = []string{"rm"}
+	cmd.Short = i18n.G("Remove trusted clients")
+	cmd.Long = cli.FormatSection(i18n.G("Description"), i18n.G(
+		`Remove trusted clients`))
+
+	cmd.RunE = c.Run
+
+	return cmd
+}
+
+func (c *cmdConfigTrustRemove) Run(cmd *cobra.Command, args []string) error {
+	// Sanity checks
+	exit, err := c.global.CheckArgs(cmd, args, 1, 2)
+	if exit {
+		return err
+	}
+
+	// Parse remote
+	remote := ""
+	if len(args) > 0 {
+		remote = args[0]
+	}
+
+	resources, err := c.global.ParseServers(remote)
+	if err != nil {
+		return err
+	}
+
+	resource := resources[0]
+
+	// Remove trust relationship
+	return resource.server.DeleteCertificate(args[len(args)-1])
+}
diff --git a/lxc/main.go b/lxc/main.go
index 665d61408..922f4ec34 100644
--- a/lxc/main.go
+++ b/lxc/main.go
@@ -23,7 +23,7 @@ import (
 )
 
 type cmdGlobal struct {
-	conf *config.Config
+	conf     *config.Config
 	confPath string
 
 	flagForceLocal bool
@@ -72,6 +72,10 @@ For help with any of those, simply call them with --help.`))
 	clusterCmd := cmdCluster{global: &globalCmd}
 	app.AddCommand(clusterCmd.Command())
 
+	// config sub-command
+	configCmd := cmdConfig{global: &globalCmd}
+	app.AddCommand(configCmd.Command())
+
 	// console sub-command
 	consoleCmd := cmdConsole{global: &globalCmd}
 	app.AddCommand(consoleCmd.Command())
@@ -337,6 +341,3 @@ func (c *cmdGlobal) CheckArgs(cmd *cobra.Command, args []string, minArgs int, ma
 
 	return false, nil
 }
-
-var errArgs = fmt.Errorf(i18n.G("wrong number of subcommand arguments"))
-var errUsage = fmt.Errorf("show usage")

From 8758e6deec782aab5dbb7509ed070d8802b23eca Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Wed, 28 Mar 2018 23:52:21 -0400
Subject: [PATCH 34/39] lxc/utils: Drop unused functions
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/utils.go | 59 -----------------------------------------------------------
 1 file changed, 59 deletions(-)

diff --git a/lxc/utils.go b/lxc/utils.go
index 47d0573ae..5ef1c93e8 100644
--- a/lxc/utils.go
+++ b/lxc/utils.go
@@ -2,12 +2,7 @@ package main
 
 import (
 	"fmt"
-	"net"
-	"net/url"
-	"os"
 	"sort"
-	"strings"
-	"syscall"
 
 	"github.com/lxc/lxd/client"
 	"github.com/lxc/lxd/shared/api"
@@ -124,60 +119,6 @@ func runBatch(names []string, action func(name string) error) []batchResult {
 	return results
 }
 
-// summaryLine returns the first line of the help text. Conventionally, this
-// should be a one-line command summary, potentially followed by a longer
-// explanation.
-func summaryLine(usage string) string {
-	for _, line := range strings.Split(usage, "\n") {
-		if strings.HasPrefix(line, "Usage:") {
-			continue
-		}
-
-		if len(line) == 0 {
-			continue
-		}
-
-		return strings.TrimSuffix(line, ".")
-	}
-
-	return i18n.G("Missing summary.")
-}
-
-// Used to return a user friendly error
-func getLocalErr(err error) error {
-	t, ok := err.(*url.Error)
-	if !ok {
-		return nil
-	}
-
-	u, ok := t.Err.(*net.OpError)
-	if !ok {
-		return nil
-	}
-
-	if u.Op == "dial" && u.Net == "unix" {
-		var lxdErr error
-
-		sysErr, ok := u.Err.(*os.SyscallError)
-		if ok {
-			lxdErr = sysErr.Err
-		} else {
-			// syscall.Errno may be returned on some systems, e.g. CentOS
-			lxdErr, ok = u.Err.(syscall.Errno)
-			if !ok {
-				return nil
-			}
-		}
-
-		switch lxdErr {
-		case syscall.ENOENT, syscall.ECONNREFUSED, syscall.EACCES:
-			return lxdErr
-		}
-	}
-
-	return nil
-}
-
 // Add a device to a container
 func containerDeviceAdd(client lxd.ContainerServer, name string, devName string, dev map[string]string) error {
 	// Get the container entry

From 049bc87cd96a823dafb5063a3e2b92497b894bfd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Wed, 28 Mar 2018 23:53:07 -0400
Subject: [PATCH 35/39] lxc: Port aliases handling to cobra

---
 lxc/main.go         |  6 +++--
 lxc/main_aliases.go | 69 ++++++++++++++++++++++++++++++++++++++++++-----------
 2 files changed, 59 insertions(+), 16 deletions(-)

diff --git a/lxc/main.go b/lxc/main.go
index 922f4ec34..99952246e 100644
--- a/lxc/main.go
+++ b/lxc/main.go
@@ -35,6 +35,10 @@ type cmdGlobal struct {
 }
 
 func main() {
+	// Process aliases
+	execIfAliases()
+
+	// Setup the parser
 	app := &cobra.Command{}
 	app.Use = "lxc"
 	app.Short = i18n.G("Command line client for LXD")
@@ -201,8 +205,6 @@ For help with any of those, simply call them with --help.`))
 func (c *cmdGlobal) PreRun(cmd *cobra.Command, args []string) error {
 	var err error
 
-	// FIXME: deal with aliases
-
 	// If calling the help, skip pre-run
 	if cmd.Name() == "help" {
 		return nil
diff --git a/lxc/main_aliases.go b/lxc/main_aliases.go
index 7f895c28b..83c8e76fa 100644
--- a/lxc/main_aliases.go
+++ b/lxc/main_aliases.go
@@ -4,10 +4,14 @@ import (
 	"fmt"
 	"os"
 	"os/exec"
+	"os/user"
+	"path"
+	"path/filepath"
 	"strings"
 	"syscall"
 
 	"github.com/lxc/lxd/lxc/config"
+	"github.com/lxc/lxd/shared"
 	"github.com/lxc/lxd/shared/i18n"
 )
 
@@ -63,30 +67,67 @@ func expandAlias(conf *config.Config, origArgs []string) ([]string, bool) {
 	}
 
 	if !hasReplacedArgsVar {
-		/* add the rest of the arguments */
+		// Add the rest of the arguments
 		newArgs = append(newArgs, origArgs[len(aliasKey)+1:]...)
 	}
 
-	/* don't re-do aliases the next time; this allows us to have recursive
-	 * aliases, e.g. `lxc list` to `lxc list -c n`
-	 */
-	newArgs = append(newArgs[:2], append([]string{"--no-alias"}, newArgs[2:]...)...)
-
 	return newArgs, true
 }
 
-func execIfAliases(conf *config.Config, origArgs []string) {
-	newArgs, expanded := expandAlias(conf, origArgs)
+func execIfAliases() {
+	args := os.Args
+
+	// Avoid loops
+	if os.Getenv("LXC_ALIASES") == "1" {
+		return
+	}
+
+	// Figure out the config directory and config path
+	var configDir string
+	if os.Getenv("LXD_CONF") != "" {
+		configDir = os.Getenv("LXD_CONF")
+	} else if os.Getenv("HOME") != "" {
+		configDir = path.Join(os.Getenv("HOME"), ".config", "lxc")
+	} else {
+		user, err := user.Current()
+		if err != nil {
+			return
+		}
+
+		configDir = path.Join(user.HomeDir, ".config", "lxc")
+	}
+
+	confPath := os.ExpandEnv(path.Join(configDir, "config.yml"))
+
+	// Load the configuration
+	var conf *config.Config
+	var err error
+	if shared.PathExists(confPath) {
+		conf, err = config.LoadConfig(confPath)
+		if err != nil {
+			return
+		}
+	} else {
+		conf = config.NewConfig(filepath.Dir(confPath), true)
+	}
+
+	// Expand the aliases
+	newArgs, expanded := expandAlias(conf, args)
 	if !expanded {
 		return
 	}
 
-	path, err := exec.LookPath(origArgs[0])
+	// Look for the executable
+	path, err := exec.LookPath(args[0])
 	if err != nil {
-		fmt.Fprintf(os.Stderr, i18n.G("processing aliases failed %s\n"), err)
-		os.Exit(5)
+		fmt.Fprintf(os.Stderr, i18n.G("Processing aliases failed: %s\n"), err)
+		os.Exit(1)
 	}
-	ret := syscall.Exec(path, newArgs, syscall.Environ())
-	fmt.Fprintf(os.Stderr, i18n.G("processing aliases failed %s\n"), ret)
-	os.Exit(5)
+
+	// Re-exec
+	environ := syscall.Environ()
+	environ = append(environ, "LXC_ALIASES=1")
+	ret := syscall.Exec(path, newArgs, environ)
+	fmt.Fprintf(os.Stderr, i18n.G("Processing aliases failed: %s\n"), ret)
+	os.Exit(1)
 }

From e7e11cd9d01ac9ee030c7d8c1b9ddc7659881f22 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Wed, 28 Mar 2018 23:55:47 -0400
Subject: [PATCH 36/39] i18n: Update translation templates

---
 po/de.po      | 4052 +++++++++++++++++++++++++--------------
 po/el.po      | 3314 +++++++++++++++++++-------------
 po/es.po      | 3330 +++++++++++++++++++-------------
 po/fi.po      | 3314 +++++++++++++++++++-------------
 po/fr.po      | 5199 ++++++++++++++++++++++++++++++++------------------
 po/hi.po      | 3314 +++++++++++++++++++-------------
 po/id.po      | 3314 +++++++++++++++++++-------------
 po/it.po      | 3325 +++++++++++++++++++-------------
 po/ja.po      | 5896 ++++++++++++++++++++++++++++++++++++---------------------
 po/lxd.pot    | 3359 +++++++++++++++++++-------------
 po/nb_NO.po   | 3314 +++++++++++++++++++-------------
 po/nl.po      | 3314 +++++++++++++++++++-------------
 po/pa.po      | 3314 +++++++++++++++++++-------------
 po/pl.po      | 3314 +++++++++++++++++++-------------
 po/pt_BR.po   | 3314 +++++++++++++++++++-------------
 po/ru.po      | 3392 ++++++++++++++++++++-------------
 po/sr.po      | 3314 +++++++++++++++++++-------------
 po/sv.po      | 3314 +++++++++++++++++++-------------
 po/tr.po      | 3314 +++++++++++++++++++-------------
 po/uk.po      | 3314 +++++++++++++++++++-------------
 po/zh.po      | 3314 +++++++++++++++++++-------------
 po/zh_Hans.po | 3314 +++++++++++++++++++-------------
 22 files changed, 48037 insertions(+), 30226 deletions(-)

diff --git a/po/de.po b/po/de.po
index ffae7863f..825f7053b 100644
--- a/po/de.po
+++ b/po/de.po
@@ -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: 2018-02-27 22:14-0500\n"
+"POT-Creation-Date: 2018-03-29 01:45-0400\n"
 "PO-Revision-Date: 2017-02-14 17:11+0000\n"
 "Last-Translator: Tim Rose <tim at netlope.de>\n"
 "Language-Team: German <https://hosted.weblate.org/projects/linux-containers/"
@@ -19,7 +19,7 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
 "X-Generator: Weblate 2.14-dev\n"
 
-#: lxc/storage.go:36
+#: lxc/storage.go:220
 #, fuzzy
 msgid ""
 "### This is a yaml representation of a storage pool.\n"
@@ -54,7 +54,7 @@ msgstr ""
 "###\n"
 "### Der Name wird zwar angezeigt, lässt sich jedoch nicht ändern.\n"
 
-#: lxc/storage.go:53
+#: lxc/storage_volume.go:737
 #, fuzzy
 msgid ""
 "### This is a yaml representation of a storage volume.\n"
@@ -75,7 +75,7 @@ msgstr ""
 "### Zum Beispiel:\n"
 "###  description: Mein eigenes Abbild\n"
 
-#: lxc/config.go:40
+#: lxc/config.go:100
 #, fuzzy
 msgid ""
 "### This is a yaml representation of the configuration.\n"
@@ -114,7 +114,7 @@ msgstr ""
 "###\n"
 "### Der Name wird zwar angezeigt, lässt sich jedoch nicht ändern.\n"
 
-#: lxc/config.go:61
+#: lxc/config_metadata.go:63
 #, fuzzy
 msgid ""
 "### This is a yaml representation of the container metadata.\n"
@@ -156,7 +156,7 @@ msgstr ""
 "###\n"
 "### Der Name wird zwar angezeigt, lässt sich jedoch nicht ändern.\n"
 
-#: lxc/image.go:63
+#: lxc/image.go:327
 #, fuzzy
 msgid ""
 "### This is a yaml representation of the image properties.\n"
@@ -173,7 +173,7 @@ msgstr ""
 "### Zum Beispiel:\n"
 "###  description: Mein eigenes Abbild\n"
 
-#: lxc/network.go:32
+#: lxc/network.go:546
 #, fuzzy
 msgid ""
 "### This is a yaml representation of the network.\n"
@@ -211,7 +211,7 @@ msgstr ""
 "###\n"
 "### Der Name wird zwar angezeigt, lässt sich jedoch nicht ändern.\n"
 
-#: lxc/profile.go:30
+#: lxc/profile.go:408
 #, fuzzy
 msgid ""
 "### This is a yaml representation of the profile.\n"
@@ -250,12 +250,12 @@ msgstr ""
 "###\n"
 "### Der Name wird zwar angezeigt, lässt sich jedoch nicht ändern.\n"
 
-#: lxc/image.go:187
+#: lxc/image.go:954
 #, c-format
 msgid "%s (%d more)"
 msgstr ""
 
-#: lxc/file.go:205
+#: lxc/file.go:677
 #, c-format
 msgid "%s is not a directory"
 msgstr ""
@@ -265,112 +265,196 @@ msgstr ""
 msgid "%v (interrupt two more times to force)"
 msgstr ""
 
-#: lxc/file.go:142
+#: lxc/file.go:614
 #, c-format
 msgid "'%s' isn't a supported file type."
 msgstr ""
 
-#: lxc/profile.go:337
+#: lxc/profile.go:222
 msgid "(none)"
 msgstr ""
 
-#: lxc/alias.go:84 lxc/image.go:231 lxc/image.go:1136
+#: lxc/alias.go:127 lxc/image.go:921 lxc/image_alias.go:228
 msgid "ALIAS"
 msgstr ""
 
-#: lxc/image.go:232
+#: lxc/image.go:922
 msgid "ALIASES"
 msgstr ""
 
-#: lxc/image.go:236
+#: lxc/image.go:926
 msgid "ARCH"
 msgstr ""
 
-#: lxc/list.go:467
+#: lxc/list.go:464
 msgid "ARCHITECTURE"
 msgstr ""
 
-#: lxc/remote.go:412
+#: lxc/remote.go:466
 msgid "AUTH TYPE"
 msgstr ""
 
-#: lxc/remote.go:68
+#: lxc/remote.go:88
 msgid "Accept certificate"
 msgstr "Akzeptiere Zertifikat"
 
-#: lxc/query.go:38
+#: lxc/query.go:37
 msgid "Action (defaults to GET)"
 msgstr ""
 
-#: lxc/remote.go:276
+#: lxc/config_device.go:75 lxc/config_device.go:76
+msgid "Add devices to containers or profiles"
+msgstr ""
+
+#: lxc/alias.go:54 lxc/alias.go:55
+#, fuzzy
+msgid "Add new aliases"
+msgstr "Aliasse:\n"
+
+#: lxc/remote.go:83 lxc/remote.go:84
+msgid "Add new remote servers"
+msgstr ""
+
+#: lxc/config_trust.go:58 lxc/config_trust.go:59
+msgid "Add new trusted clients"
+msgstr ""
+
+#: lxc/profile.go:101 lxc/profile.go:102
+#, fuzzy
+msgid "Add profiles to containers"
+msgstr "kann nicht zum selben Container Namen kopieren"
+
+#: lxc/remote.go:325
 #, c-format
 msgid "Admin password for %s: "
 msgstr "Administrator Passwort für %s: "
 
-#: lxc/image.go:623
+#: lxc/alias.go:78 lxc/alias.go:176
+#, fuzzy, c-format
+msgid "Alias %s already exists"
+msgstr "entfernte Instanz %s existiert bereits"
+
+#: lxc/alias.go:170 lxc/alias.go:221
+#, fuzzy, c-format
+msgid "Alias %s doesn't exist"
+msgstr "entfernte Instanz %s existiert nicht"
+
+#: lxc/image_alias.go:83 lxc/image_alias.go:130 lxc/image_alias.go:274
+msgid "Alias name missing"
+msgstr ""
+
+#: lxc/image.go:854
 #, fuzzy
 msgid "Aliases:"
 msgstr "Aliasse:\n"
 
-#: lxc/image.go:601 lxc/info.go:125
+#: lxc/image.go:826 lxc/info.go:129
 #, fuzzy, c-format
 msgid "Architecture: %s"
 msgstr "Architektur: %s\n"
 
-#: lxc/remote.go:259
+#: lxc/profile.go:162 lxc/profile.go:163
+msgid "Assign sets of profiles to containers"
+msgstr ""
+
+#: lxc/network.go:103
+msgid "Attach network interfaces to containers"
+msgstr ""
+
+#: lxc/network.go:176 lxc/network.go:177
+msgid "Attach network interfaces to profiles"
+msgstr ""
+
+#: lxc/network.go:104
+msgid "Attach new network interfaces to containers"
+msgstr ""
+
+#: lxc/storage_volume.go:121 lxc/storage_volume.go:122
+msgid "Attach new storage volumes to containers"
+msgstr ""
+
+#: lxc/storage_volume.go:200 lxc/storage_volume.go:201
+msgid "Attach new storage volumes to profiles"
+msgstr ""
+
+#: lxc/console.go:31
+#, fuzzy
+msgid "Attach to container consoles"
+msgstr "Herunterfahren des Containers erzwingen."
+
+#: lxc/console.go:32
+msgid ""
+"Attach to container consoles\n"
+"\n"
+"This command allows you to interact with the boot console of a container\n"
+"as well as retrieve past log entries from it."
+msgstr ""
+
+#: lxc/remote.go:308
 #, c-format
 msgid "Authentication type '%s' not supported by server"
 msgstr ""
 
-#: lxc/image.go:632
+#: lxc/image.go:864
 #, c-format
 msgid "Auto update: %s"
 msgstr "automatisches Update: %s"
 
-#: lxc/image.go:707
+#: lxc/network.go:283
+#, c-format
+msgid "Bad key/value pair: %s"
+msgstr ""
+
+#: lxc/copy.go:110 lxc/init.go:118 lxc/publish.go:175 lxc/storage.go:123
+#: lxc/storage_volume.go:468
+#, c-format
+msgid "Bad key=value pair: %s"
+msgstr ""
+
+#: lxc/image.go:677
 #, fuzzy, c-format
 msgid "Bad property: %s"
 msgstr "Ungültige Abbild Eigenschaft: %s\n"
 
-#: lxc/action.go:133
+#: lxc/action.go:212
 msgid "Both --all and container name given"
 msgstr ""
 
-#: lxc/info.go:218
+#: lxc/info.go:222
 msgid "Bytes received"
 msgstr "Bytes empfangen"
 
-#: lxc/info.go:219
+#: lxc/info.go:223
 msgid "Bytes sent"
 msgstr "Bytes gesendet"
 
-#: lxc/operation.go:156
+#: lxc/operation.go:155
 msgid "CANCELABLE"
 msgstr ""
 
-#: lxc/config.go:403
+#: lxc/config_trust.go:175
 msgid "COMMON NAME"
 msgstr ""
 
-#: lxc/info.go:182
+#: lxc/info.go:186
 msgid "CPU usage (in seconds)"
 msgstr ""
 
-#: lxc/info.go:186
+#: lxc/info.go:190
 #, fuzzy
 msgid "CPU usage:"
 msgstr " Prozessorauslastung:"
 
-#: lxc/operation.go:157
+#: lxc/operation.go:156
 #, fuzzy
 msgid "CREATED"
 msgstr "ERSTELLT AM"
 
-#: lxc/list.go:468
+#: lxc/list.go:465
 msgid "CREATED AT"
 msgstr "ERSTELLT AM"
 
-#: lxc/image.go:631
+#: lxc/image.go:863
 #, fuzzy, c-format
 msgid "Cached: %s"
 msgstr ""
@@ -379,797 +463,1503 @@ msgstr ""
 "Optionen:\n"
 "\n"
 
-#: lxc/file.go:501
+#: lxc/image.go:175
+msgid "Can't provide a name for the target image"
+msgstr ""
+
+#: lxc/file.go:261
 msgid "Can't pull a directory without --recursive"
 msgstr ""
 
-#: lxc/config.go:210 lxc/network.go:619
+#: lxc/config.go:400 lxc/network.go:969
 #, c-format
 msgid "Can't read from stdin: %s"
 msgstr ""
 
-#: lxc/rename.go:41
+#: lxc/remote.go:577
+msgid "Can't remove the default remote"
+msgstr ""
+
+#: lxc/list.go:481
+msgid "Can't specify --fast with --columns"
+msgstr ""
+
+#: lxc/rename.go:48
 msgid "Can't specify a different remote for rename."
 msgstr ""
 
-#: lxc/config.go:223
-#, c-format
-msgid "Can't unset key '%s', it's not currently set"
+#: lxc/list.go:493
+msgid "Can't specify column L when not clustered"
 msgstr ""
 
-#: lxc/config.go:265 lxc/config.go:291
-#, c-format
-msgid "Can't unset key '%s', it's not currently set."
+#: lxc/file.go:399
+msgid "Can't supply uid/gid/mode in recursive mode"
 msgstr ""
 
-#: lxc/profile.go:546 lxc/storage.go:696
-msgid "Cannot provide container name to list"
+#: lxc/config.go:413
+#, c-format
+msgid "Can't unset key '%s', it's not currently set"
 msgstr ""
 
-#: lxc/remote.go:203
+#: lxc/remote.go:252
 #, fuzzy, c-format
 msgid "Certificate fingerprint: %s"
 msgstr "Fingerabdruck des Zertifikats: % x\n"
 
-#: lxc/remote.go:315
+#: lxc/remote.go:364
 msgid "Client certificate stored at server: "
 msgstr "Gespeichertes Nutzerzertifikat auf dem Server: "
 
-#: lxc/image.go:175 lxc/image.go:176 lxc/list.go:134 lxc/list.go:135
+#: lxc/network.go:253 lxc/network.go:663 lxc/network.go:923 lxc/network.go:992
+#: lxc/network.go:1054 lxc/storage.go:92 lxc/storage.go:331 lxc/storage.go:576
+#: lxc/storage.go:649 lxc/storage.go:732 lxc/storage_volume.go:287
+#: lxc/storage_volume.go:429 lxc/storage_volume.go:504
+#: lxc/storage_volume.go:730 lxc/storage_volume.go:856
+#: lxc/storage_volume.go:998 lxc/storage_volume.go:1028
+#: lxc/storage_volume.go:1092 lxc/storage_volume.go:1175
+#: lxc/storage_volume.go:1244
+msgid "Cluster member name"
+msgstr ""
+
+#: lxc/image.go:912 lxc/list.go:112
 msgid "Columns"
 msgstr ""
 
-#: lxc/help.go:53
-msgid "Commands:"
+#: lxc/main.go:44
+msgid "Command line client for LXD"
+msgstr ""
+
+#: lxc/main.go:45
+msgid ""
+"Command line client for LXD\n"
+"\n"
+"All of LXD's features can be driven through the various commands below.\n"
+"For help with any of those, simply call them with --help."
 msgstr ""
 
-#: lxc/copy.go:37 lxc/copy.go:38 lxc/init.go:139 lxc/init.go:140
+#: lxc/copy.go:39 lxc/init.go:42
 #, fuzzy
 msgid "Config key/value to apply to the new container"
 msgstr "kann nicht zum selben Container Namen kopieren"
 
-#: lxc/config.go:821 lxc/config.go:886 lxc/config.go:1396 lxc/image.go:1191
-#: lxc/network.go:445 lxc/profile.go:275 lxc/storage.go:647 lxc/storage.go:1209
+#: lxc/config.go:195 lxc/config.go:259 lxc/config_metadata.go:144
+#: lxc/image.go:405 lxc/network.go:631 lxc/profile.go:490 lxc/storage.go:298
+#: lxc/storage_volume.go:822
 #, fuzzy, c-format
 msgid "Config parsing error: %s"
 msgstr "YAML Analyse Fehler %v\n"
 
-#: lxc/main.go:40
-msgid "Connection refused; is LXD running?"
-msgstr ""
-
-#: lxc/console.go:132
+#: lxc/console.go:141
 msgid "Console log:"
 msgstr ""
 
-#: lxc/publish.go:71
+#: lxc/publish.go:79
 msgid "Container name is mandatory"
 msgstr ""
 
-#: lxc/copy.go:243 lxc/init.go:321
+#: lxc/copy.go:260 lxc/init.go:229
 #, c-format
 msgid "Container name is: %s"
 msgstr ""
 
-#: lxc/publish.go:250
+#: lxc/publish.go:259
 #, fuzzy, c-format
 msgid "Container published with fingerprint: %s"
 msgstr "Abbild mit Fingerabdruck %s importiert\n"
 
-#: lxc/copy.go:45 lxc/move.go:44
+#: lxc/copy.go:44 lxc/move.go:46
 msgid "Copy a stateful container stateless"
 msgstr ""
 
-#: lxc/image.go:178
+#: lxc/image.go:138
 msgid "Copy aliases from source"
 msgstr "Kopiere Aliasse von der Quelle"
 
-#: lxc/copy.go:44
+#: lxc/copy.go:34 lxc/copy.go:35
+#, fuzzy
+msgid "Copy containers within or in between LXD instances"
+msgstr "Herunterfahren des Containers erzwingen."
+
+#: lxc/image.go:130
+msgid "Copy images between servers"
+msgstr ""
+
+#: lxc/image.go:131
+msgid ""
+"Copy images between servers\n"
+"\n"
+"The auto-update flag instructs the server to keep this image up to date.\n"
+"It requires the source to be an alias and for it to be public."
+msgstr ""
+
+#: lxc/config_device.go:317 lxc/config_device.go:318
+msgid "Copy profile inherited devices and override configuration keys"
+msgstr ""
+
+#: lxc/profile.go:240 lxc/profile.go:241
+msgid "Copy profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:282 lxc/storage_volume.go:283
+#, fuzzy
+msgid "Copy storage volumes"
+msgstr "Anhalten des Containers fehlgeschlagen!"
+
+#: lxc/copy.go:43
 #, fuzzy
 msgid "Copy the container without its snapshots"
 msgstr "Herunterfahren des Containers erzwingen."
 
-#: lxc/image.go:449
+#: lxc/image.go:217
 #, c-format
 msgid "Copying the image: %s"
 msgstr ""
 
-#: lxc/storage.go:1134
+#: lxc/storage_volume.go:387
 #, fuzzy, c-format
 msgid "Copying the storage volume: %s"
 msgstr "Anhalten des Containers fehlgeschlagen!"
 
-#: lxc/remote.go:218
+#: lxc/remote.go:267
 msgid "Could not create server cert dir"
 msgstr "Kann Verzeichnis für Zertifikate auf dem Server nicht erstellen"
 
-#: lxc/file.go:70 lxc/file.go:71
+#: lxc/image_alias.go:58 lxc/image_alias.go:59
+msgid "Create aliases for existing images"
+msgstr ""
+
+#: lxc/launch.go:21 lxc/launch.go:22
+msgid "Create and start containers from images"
+msgstr ""
+
+#: lxc/file.go:191 lxc/file.go:331
 msgid "Create any directories necessary"
 msgstr ""
 
-#: lxc/image.go:606 lxc/info.go:127
+#: lxc/snapshot.go:20
+#, fuzzy
+msgid "Create container snapshots"
+msgstr "Herunterfahren des Containers erzwingen."
+
+#: lxc/snapshot.go:21
+msgid ""
+"Create container snapshots\n"
+"\n"
+"When --stateful is used, LXD attempts to checkpoint the container's\n"
+"running state, including process memory state, TCP connections, ..."
+msgstr ""
+
+#: lxc/init.go:34 lxc/init.go:35
+#, fuzzy
+msgid "Create containers from images"
+msgstr "kann nicht zum selben Container Namen kopieren"
+
+#: lxc/config_template.go:66 lxc/config_template.go:67
+#, fuzzy
+msgid "Create new container file templates"
+msgstr "Anhalten des Containers fehlgeschlagen!"
+
+#: lxc/storage_volume.go:425 lxc/storage_volume.go:426
+#, fuzzy
+msgid "Create new custom storage volumes"
+msgstr "Anhalten des Containers fehlgeschlagen!"
+
+#: lxc/network.go:249 lxc/network.go:250
+msgid "Create new networks"
+msgstr ""
+
+#: lxc/profile.go:296 lxc/profile.go:297
+#, fuzzy
+msgid "Create profiles"
+msgstr "Fehlerhafte Profil URL %s"
+
+#: lxc/storage.go:88 lxc/storage.go:89
+#, fuzzy
+msgid "Create storage pools"
+msgstr "Anhalten des Containers fehlgeschlagen!"
+
+#: lxc/image.go:832 lxc/info.go:131
 #, c-format
 msgid "Created: %s"
 msgstr ""
 
-#: lxc/init.go:200
+#: lxc/init.go:98
 #, c-format
 msgid "Creating %s"
 msgstr ""
 
-#: lxc/init.go:198
+#: lxc/init.go:96
 #, fuzzy
 msgid "Creating the container"
 msgstr "kann nicht zum selben Container Namen kopieren"
 
-#: lxc/cluster.go:185
+#: lxc/cluster.go:121
 msgid "DATABASE"
 msgstr ""
 
-#: lxc/image.go:235 lxc/image.go:1138 lxc/list.go:469 lxc/network.go:579
-#: lxc/operation.go:154 lxc/storage.go:732 lxc/storage.go:937
+#: lxc/image.go:925 lxc/image_alias.go:230 lxc/list.go:466 lxc/network.go:784
+#: lxc/operation.go:153 lxc/storage.go:545 lxc/storage_volume.go:967
 msgid "DESCRIPTION"
 msgstr ""
 
-#: lxc/storage.go:733
+#: lxc/storage.go:546
 msgid "DRIVER"
 msgstr ""
 
-#: lxc/publish.go:39
+#: lxc/publish.go:41
 msgid "Define a compression algorithm: for image or none"
 msgstr ""
 
-#: lxc/config.go:977
+#: lxc/operation.go:53 lxc/operation.go:54
+msgid "Delete a background operation (will attempt to cancel)"
+msgstr ""
+
+#: lxc/config_template.go:109 lxc/config_template.go:110
+#, fuzzy
+msgid "Delete container file templates"
+msgstr "Anhalten des Containers fehlgeschlagen!"
+
+#: lxc/delete.go:29 lxc/delete.go:30
+#, fuzzy
+msgid "Delete containers and snapshots"
+msgstr "Herunterfahren des Containers erzwingen."
+
+#: lxc/file.go:72 lxc/file.go:73
+msgid "Delete files in containers"
+msgstr ""
+
+#: lxc/image_alias.go:105 lxc/image_alias.go:106
+msgid "Delete image aliases"
+msgstr ""
+
+#: lxc/image.go:260 lxc/image.go:261
+msgid "Delete images"
+msgstr ""
+
+#: lxc/network.go:319 lxc/network.go:320
+msgid "Delete networks"
+msgstr ""
+
+#: lxc/profile.go:347 lxc/profile.go:348
+msgid "Delete profiles"
+msgstr ""
+
+#: lxc/storage.go:160 lxc/storage.go:161
+msgid "Delete storage pools"
+msgstr ""
+
+#: lxc/storage_volume.go:500 lxc/storage_volume.go:501
+#, fuzzy
+msgid "Delete storage volumes"
+msgstr "Kein Zertifikat für diese Verbindung"
+
+#: lxc/action.go:30 lxc/action.go:49 lxc/action.go:69 lxc/action.go:91
+#: lxc/alias.go:23 lxc/alias.go:55 lxc/alias.go:99 lxc/alias.go:147
+#: lxc/alias.go:198 lxc/cluster.go:26 lxc/cluster.go:59 lxc/cluster.go:142
+#: lxc/cluster.go:192 lxc/cluster.go:238 lxc/config.go:29 lxc/config.go:88
+#: lxc/config.go:289 lxc/config.go:355 lxc/config.go:452 lxc/config.go:560
+#: lxc/config_device.go:24 lxc/config_device.go:76 lxc/config_device.go:179
+#: lxc/config_device.go:252 lxc/config_device.go:318 lxc/config_device.go:405
+#: lxc/config_device.go:493 lxc/config_device.go:582 lxc/config_device.go:650
+#: lxc/config_metadata.go:29 lxc/config_metadata.go:54
+#: lxc/config_metadata.go:176 lxc/config_template.go:30
+#: lxc/config_template.go:67 lxc/config_template.go:110
+#: lxc/config_template.go:152 lxc/config_template.go:236
+#: lxc/config_template.go:298 lxc/config_trust.go:30 lxc/config_trust.go:59
+#: lxc/config_trust.go:115 lxc/config_trust.go:197 lxc/console.go:32
+#: lxc/copy.go:35 lxc/delete.go:30 lxc/exec.go:39 lxc/file.go:40 lxc/file.go:73
+#: lxc/file.go:122 lxc/file.go:185 lxc/file.go:324 lxc/image.go:42
+#: lxc/image.go:131 lxc/image.go:261 lxc/image.go:312 lxc/image.go:435
+#: lxc/image.go:571 lxc/image.go:776 lxc/image.go:890 lxc/image.go:1212
+#: lxc/image.go:1285 lxc/image_alias.go:26 lxc/image_alias.go:59
+#: lxc/image_alias.go:106 lxc/image_alias.go:149 lxc/image_alias.go:250
+#: lxc/info.go:29 lxc/init.go:35 lxc/launch.go:22 lxc/list.go:48 lxc/main.go:45
+#: lxc/monitor.go:31 lxc/move.go:31 lxc/network.go:32 lxc/network.go:104
+#: lxc/network.go:177 lxc/network.go:250 lxc/network.go:320 lxc/network.go:367
+#: lxc/network.go:452 lxc/network.go:537 lxc/network.go:660 lxc/network.go:719
+#: lxc/network.go:808 lxc/network.go:873 lxc/network.go:920 lxc/network.go:989
+#: lxc/network.go:1051 lxc/operation.go:25 lxc/operation.go:54
+#: lxc/operation.go:98 lxc/operation.go:174 lxc/profile.go:30
+#: lxc/profile.go:102 lxc/profile.go:163 lxc/profile.go:241 lxc/profile.go:297
+#: lxc/profile.go:348 lxc/profile.go:396 lxc/profile.go:520 lxc/profile.go:568
+#: lxc/profile.go:632 lxc/profile.go:705 lxc/profile.go:753 lxc/profile.go:812
+#: lxc/profile.go:866 lxc/publish.go:34 lxc/query.go:27 lxc/remote.go:34
+#: lxc/remote.go:84 lxc/remote.go:380 lxc/remote.go:414 lxc/remote.go:487
+#: lxc/remote.go:549 lxc/remote.go:598 lxc/remote.go:636 lxc/rename.go:20
+#: lxc/restore.go:24 lxc/snapshot.go:21 lxc/storage.go:33 lxc/storage.go:89
+#: lxc/storage.go:161 lxc/storage.go:208 lxc/storage.go:328 lxc/storage.go:383
+#: lxc/storage.go:491 lxc/storage.go:573 lxc/storage.go:645 lxc/storage.go:729
+#: lxc/storage_volume.go:34 lxc/storage_volume.go:122 lxc/storage_volume.go:201
+#: lxc/storage_volume.go:283 lxc/storage_volume.go:426
+#: lxc/storage_volume.go:501 lxc/storage_volume.go:561
+#: lxc/storage_volume.go:643 lxc/storage_volume.go:724
+#: lxc/storage_volume.go:853 lxc/storage_volume.go:918
+#: lxc/storage_volume.go:994 lxc/storage_volume.go:1025
+#: lxc/storage_volume.go:1089 lxc/storage_volume.go:1166
+#: lxc/storage_volume.go:1241
+msgid "Description"
+msgstr ""
+
+#: lxc/network.go:366 lxc/network.go:367
+msgid "Detach network interfaces from containers"
+msgstr ""
+
+#: lxc/network.go:451 lxc/network.go:452
+msgid "Detach network interfaces from profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:560 lxc/storage_volume.go:561
+msgid "Detach storage volumes from containers"
+msgstr ""
+
+#: lxc/storage_volume.go:642 lxc/storage_volume.go:643
+msgid "Detach storage volumes from profiles"
+msgstr ""
+
+#: lxc/config_device.go:163
 #, fuzzy, c-format
 msgid "Device %s added to %s"
 msgstr "Gerät %s wurde zu %s hinzugefügt\n"
 
-#: lxc/config.go:1272
+#: lxc/config_device.go:387
 #, fuzzy, c-format
 msgid "Device %s overridden for %s"
 msgstr "Gerät %s wurde von %s entfernt\n"
 
-#: lxc/config.go:1213
+#: lxc/config_device.go:476
 #, fuzzy, c-format
 msgid "Device %s removed from %s"
 msgstr "Gerät %s wurde von %s entfernt\n"
 
-#: lxc/utils.go:192 lxc/utils.go:216
+#: lxc/utils.go:133 lxc/utils.go:157
 #, fuzzy, c-format
 msgid "Device already exists: %s"
 msgstr "entfernte Instanz %s existiert bereits"
 
-#: lxc/image.go:1290
+#: lxc/image.go:586
 msgid "Directory import is not available on this platform"
 msgstr ""
 
-#: lxc/exec.go:71
+#: lxc/exec.go:55
 msgid "Disable pseudo-terminal allocation"
 msgstr ""
 
-#: lxc/exec.go:72
+#: lxc/exec.go:56
 msgid "Disable stdin (reads from /dev/null)"
 msgstr ""
 
-#: lxc/info.go:175
+#: lxc/info.go:179
 #, fuzzy
 msgid "Disk usage:"
 msgstr " Prozessorauslastung:"
 
-#: lxc/list.go:638
+#: lxc/list.go:635
 msgid "EPHEMERAL"
 msgstr ""
 
-#: lxc/config.go:405
+#: lxc/config_trust.go:177
 msgid "EXPIRY DATE"
 msgstr ""
 
-#: lxc/main.go:52
+#: lxc/config_template.go:151 lxc/config_template.go:152
 #, fuzzy
-msgid "Enable debug mode"
-msgstr "Aktiviert Debug Modus"
+msgid "Edit container file templates"
+msgstr "Anhalten des Containers fehlgeschlagen!"
+
+#: lxc/config_metadata.go:53 lxc/config_metadata.go:54
+msgid "Edit container metadata files"
+msgstr ""
+
+#: lxc/config.go:87 lxc/config.go:88
+msgid "Edit container or server configurations as YAML"
+msgstr ""
 
-#: lxc/main.go:51
+#: lxc/file.go:121 lxc/file.go:122
 #, fuzzy
-msgid "Enable verbose mode"
-msgstr "Aktiviert ausführliche Ausgabe"
+msgid "Edit files in containers"
+msgstr "kann nicht zum selben Container Namen kopieren"
 
-#: lxc/exec.go:68
-msgid "Environment variable to set (e.g. HOME=/home/foo)"
+#: lxc/image.go:311 lxc/image.go:312
+msgid "Edit image properties"
+msgstr ""
+
+#: lxc/network.go:536 lxc/network.go:537
+msgid "Edit network configurations as YAML"
+msgstr ""
+
+#: lxc/profile.go:395 lxc/profile.go:396
+msgid "Edit profile configurations as YAML"
+msgstr ""
+
+#: lxc/storage.go:207 lxc/storage.go:208
+msgid "Edit storage pool configurations as YAML"
 msgstr ""
 
-#: lxc/help.go:77
-msgid "Environment:"
+#: lxc/storage_volume.go:723 lxc/storage_volume.go:724
+msgid "Edit storage volume configurations as YAML"
 msgstr ""
 
-#: lxc/copy.go:41 lxc/copy.go:42 lxc/init.go:143 lxc/init.go:144
+#: lxc/list.go:504
+#, c-format
+msgid "Empty column entry (redundant, leading or trailing command) in '%s'"
+msgstr ""
+
+#: lxc/exec.go:52
+msgid "Environment variable to set (e.g. HOME=/home/foo)"
+msgstr ""
+
+#: lxc/copy.go:41 lxc/init.go:44
 msgid "Ephemeral container"
 msgstr "Flüchtiger Container"
 
-#: lxc/config.go:1446
+#: lxc/config_template.go:204
 #, fuzzy, c-format
 msgid "Error updating template file: %s"
 msgstr "Fehler beim hinzufügen des Alias %s\n"
 
-#: lxc/monitor.go:69
+#: lxc/monitor.go:48
 msgid "Event type to listen for"
 msgstr ""
 
-#: lxc/image.go:610
+#: lxc/exec.go:38
+msgid "Execute commands in containers"
+msgstr ""
+
+#: lxc/exec.go:39
+#, fuzzy
+msgid ""
+"Execute commands in containers\n"
+"\n"
+"The command is executed directly using exec, so there is no shell and\n"
+"shell patterns (variables, file redirects, ...) won't be understood.\n"
+"If you need a shell environment you need to execute the shell\n"
+"executable, passing the shell commands as arguments, for example:\n"
+"\n"
+"  lxc exec <container> -- sh -c \"cd /tmp && pwd\"\n"
+"\n"
+"Mode defaults to non-interactive, interactive mode is selected if both stdin "
+"AND stdout are terminals (stderr is ignored)."
+msgstr ""
+"Führt den angegebenen Befehl in einem Container aus.\n"
+"\n"
+"lxc exec <Container> [--env EDITOR=/usr/bin/vim]... <Befehl>\n"
+
+#: lxc/image.go:838
 #, c-format
 msgid "Expires: %s"
 msgstr ""
 
-#: lxc/image.go:612
+#: lxc/image.go:840
 msgid "Expires: never"
 msgstr ""
 
-#: lxc/image.go:922
+#: lxc/image.go:434
+msgid "Export and download images"
+msgstr ""
+
+#: lxc/image.go:435
+msgid ""
+"Export and download images\n"
+"\n"
+"The output target is optional and defaults to the working directory."
+msgstr ""
+
+#: lxc/image.go:494
 #, c-format
 msgid "Exporting the image: %s"
 msgstr ""
 
-#: lxc/config.go:761
+#: lxc/config_template.go:279
 msgid "FILENAME"
 msgstr ""
 
-#: lxc/config.go:402 lxc/image.go:233 lxc/image.go:1137
+#: lxc/config_trust.go:174 lxc/image.go:923 lxc/image_alias.go:229
 msgid "FINGERPRINT"
 msgstr ""
 
-#: lxc/utils.go:261
+#: lxc/utils.go:202
 #, c-format
 msgid "Failed to create alias %s"
 msgstr ""
 
-#: lxc/manpage.go:62
-#, c-format
-msgid "Failed to generate 'lxc.%s.1': %v"
-msgstr ""
-
-#: lxc/manpage.go:55
-#, c-format
-msgid "Failed to generate 'lxc.1': %v"
-msgstr ""
-
-#: lxc/copy.go:238
+#: lxc/copy.go:255
 #, fuzzy
 msgid "Failed to get the new container name"
 msgstr "kann nicht zum selben Container Namen kopieren"
 
-#: lxc/utils.go:251
+#: lxc/utils.go:192
 #, c-format
 msgid "Failed to remove alias %s"
 msgstr ""
 
-#: lxc/file.go:137
+#: lxc/file.go:609
 #, c-format
 msgid "Failed to walk path for %s: %s"
 msgstr ""
 
-#: lxc/list.go:137
+#: lxc/list.go:114
 msgid "Fast mode (same as --columns=nsacPt)"
 msgstr ""
 
-#: lxc/network.go:536 lxc/operation.go:121
+#: lxc/network.go:749 lxc/operation.go:126
 #, fuzzy
 msgid "Filtering isn't supported yet"
 msgstr ""
 "Anzeigen von Informationen über entfernte Instanzen wird noch nicht "
 "unterstützt\n"
 
-#: lxc/image.go:599
+#: lxc/image.go:824
 #, fuzzy, c-format
 msgid "Fingerprint: %s"
 msgstr "Fingerabdruck: %s\n"
 
-#: lxc/exec.go:70
+#: lxc/exec.go:54
 msgid "Force pseudo-terminal allocation"
 msgstr ""
 
-#: lxc/cluster.go:42
-msgid "Force removing a node, even if degraded"
+#: lxc/cluster.go:242
+msgid "Force removing a member, even if degraded"
 msgstr ""
 
-#: lxc/action.go:47 lxc/action.go:48
+#: lxc/action.go:121
 #, fuzzy
 msgid "Force the container to shutdown"
 msgstr "Herunterfahren des Containers erzwingen."
 
-#: lxc/delete.go:34 lxc/delete.go:35
+#: lxc/delete.go:34
 msgid "Force the removal of running containers"
 msgstr ""
 
-#: lxc/main.go:53
+#: lxc/main.go:56
 msgid "Force using the local unix socket"
 msgstr ""
 
-#: lxc/image.go:181 lxc/list.go:136
+#: lxc/image.go:913 lxc/list.go:113
 msgid "Format (csv|json|table|yaml)"
 msgstr ""
 
-#: lxc/remote.go:166
+#: lxc/remote.go:211
 #, fuzzy
 msgid "Generating a client certificate. This may take a minute..."
 msgstr "Generiere Nutzerzertifikat. Dies kann wenige Minuten dauern...\n"
 
-#: lxc/network.go:513
+#: lxc/config_device.go:178 lxc/config_device.go:179
+msgid "Get values for container device configuration keys"
+msgstr ""
+
+#: lxc/config.go:288 lxc/config.go:289
+msgid "Get values for container or server configuration keys"
+msgstr ""
+
+#: lxc/network.go:659 lxc/network.go:660
+msgid "Get values for network configuration keys"
+msgstr ""
+
+#: lxc/profile.go:519 lxc/profile.go:520
+msgid "Get values for profile configuration keys"
+msgstr ""
+
+#: lxc/storage.go:327 lxc/storage.go:328
+msgid "Get values for storage pool configuration keys"
+msgstr ""
+
+#: lxc/storage_volume.go:852 lxc/storage_volume.go:853
+msgid "Get values for storage volume configuration keys"
+msgstr ""
+
+#: lxc/network.go:851
 msgid "HOSTNAME"
 msgstr ""
 
-#: lxc/operation.go:152
+#: lxc/operation.go:151
 msgid "ID"
 msgstr ""
 
-#: lxc/network.go:515
+#: lxc/network.go:853
 msgid "IP ADDRESS"
 msgstr ""
 
-#: lxc/list.go:465
+#: lxc/list.go:462
 msgid "IPV4"
 msgstr ""
 
-#: lxc/list.go:466
+#: lxc/list.go:463
 msgid "IPV6"
 msgstr ""
 
-#: lxc/config.go:404
+#: lxc/config_trust.go:176
 msgid "ISSUE DATE"
 msgstr ""
 
-#: lxc/main.go:171
+#: lxc/main.go:259
 msgid ""
 "If this is your first time running LXD on this machine, you should also run: "
 "lxd init"
 msgstr ""
 
-#: lxc/main.go:54
-msgid "Ignore aliases when determining what command to run"
-msgstr ""
-
-#: lxc/action.go:51
+#: lxc/action.go:117
 #, fuzzy
-msgid "Ignore the container state (only for start)"
+msgid "Ignore the container state"
 msgstr "Herunterfahren des Containers erzwingen."
 
-#: lxc/image.go:557
+#: lxc/image.go:1268
 msgid "Image already up to date."
 msgstr ""
 
-#: lxc/image.go:463
+#: lxc/image.go:231
 msgid "Image copied successfully!"
 msgstr ""
 
-#: lxc/image.go:982
+#: lxc/image.go:554
 msgid "Image exported successfully!"
 msgstr ""
 
-#: lxc/image.go:778
+#: lxc/image.go:284 lxc/image.go:1235
+msgid "Image identifier missing"
+msgstr ""
+
+#: lxc/image.go:352
+#, fuzzy, c-format
+msgid "Image identifier missing: %s"
+msgstr "Abbild mit Fingerabdruck %s importiert\n"
+
+#: lxc/image.go:749
 #, fuzzy, c-format
 msgid "Image imported with fingerprint: %s"
 msgstr "Abbild mit Fingerabdruck %s importiert\n"
 
-#: lxc/image.go:555
+#: lxc/image.go:1266
 msgid "Image refreshed successfully!"
 msgstr ""
 
-#: lxc/query.go:39
+#: lxc/image.go:571
+msgid ""
+"Import image into the image store\n"
+"\n"
+"Directory import is only available on Linux and must be performed as root."
+msgstr ""
+
+#: lxc/image.go:570
+msgid "Import images into the image store"
+msgstr ""
+
+#: lxc/query.go:38
 msgid "Input data"
 msgstr ""
 
-#: lxc/init.go:149
+#: lxc/init.go:47
 msgid "Instance type"
 msgstr ""
 
-#: lxc/remote.go:118
+#: lxc/remote.go:163
 #, c-format
 msgid "Invalid URL scheme \"%s\" in \"%s\""
 msgstr ""
 
-#: lxc/config.go:383
+#: lxc/config_trust.go:155
 #, fuzzy
 msgid "Invalid certificate"
 msgstr "Akzeptiere Zertifikat"
 
-#: lxc/init.go:32 lxc/init.go:37
-msgid "Invalid configuration key"
+#: lxc/list.go:525
+#, c-format
+msgid "Invalid config key '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:520
+#, c-format
+msgid "Invalid config key column format (too many fields): '%s'"
+msgstr ""
+
+#: lxc/image.go:1196 lxc/list.go:386
+#, fuzzy, c-format
+msgid "Invalid format %q"
+msgstr "Ungültiges Ziel %s"
+
+#: lxc/list.go:543
+#, c-format
+msgid "Invalid max width (must -1, 0 or a positive integer) '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:540
+#, c-format
+msgid "Invalid max width (must be an integer) '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:531
+#, c-format
+msgid ""
+"Invalid name in '%s', empty string is only allowed when defining maxWidth"
 msgstr ""
 
-#: lxc/file.go:560
+#: lxc/main.go:341
+#, fuzzy
+msgid "Invalid number of arguments"
+msgstr "ungültiges Argument %s"
+
+#: lxc/file.go:97
 #, fuzzy, c-format
 msgid "Invalid path %s"
 msgstr "Ungültiges Ziel %s"
 
-#: lxc/remote.go:107
+#: lxc/remote.go:152
 #, fuzzy, c-format
 msgid "Invalid protocol: %s"
 msgstr "Ungültiges Ziel %s"
 
-#: lxc/file.go:473
+#: lxc/file.go:243
 #, c-format
 msgid "Invalid source %s"
 msgstr "Ungültige Quelle %s"
 
-#: lxc/file.go:250
+#: lxc/file.go:352
 #, c-format
 msgid "Invalid target %s"
 msgstr "Ungültiges Ziel %s"
 
-#: lxc/info.go:156
+#: lxc/info.go:160
 msgid "Ips:"
 msgstr ""
 
-#: lxc/image.go:179
+#: lxc/image.go:139
 msgid "Keep the image up to date after initial copy"
 msgstr ""
 
-#: lxc/list.go:470
+#: lxc/list.go:467
 msgid "LAST USED AT"
 msgstr ""
 
-#: lxc/list.go:492
+#: lxc/list.go:489
 msgid "LOCATION"
 msgstr ""
 
-#: lxc/main.go:38
-msgid "LXD socket not found; is LXD installed and running?"
+#: lxc/cluster.go:94
+msgid "LXD server isn't part of a cluster"
 msgstr ""
 
-#: lxc/image.go:615
+#: lxc/image.go:844
 #, c-format
 msgid "Last used: %s"
 msgstr ""
 
-#: lxc/image.go:617
+#: lxc/image.go:846
 msgid "Last used: never"
 msgstr ""
 
-#: lxc/info.go:119
-#, c-format
-msgid "Location: %s"
+#: lxc/network.go:807 lxc/network.go:808
+msgid "List DHCP leases"
 msgstr ""
 
-#: lxc/info.go:271
-msgid "Log:"
+#: lxc/alias.go:98 lxc/alias.go:99
+#, fuzzy
+msgid "List aliases"
+msgstr "Aliasse:\n"
+
+#: lxc/cluster.go:58 lxc/cluster.go:59
+msgid "List all the cluster members"
 msgstr ""
 
-#: lxc/network.go:514
-msgid "MAC ADDRESS"
+#: lxc/network.go:718 lxc/network.go:719
+msgid "List available networks"
 msgstr ""
 
-#: lxc/network.go:578
-msgid "MANAGED"
+#: lxc/storage.go:490 lxc/storage.go:491
+msgid "List available storage pools"
 msgstr ""
 
-#: lxc/cluster.go:187
-msgid "MESSAGE"
+#: lxc/operation.go:97 lxc/operation.go:98
+msgid "List background operations"
 msgstr ""
 
-#: lxc/image.go:177
-msgid "Make image public"
-msgstr "Veröffentliche Abbild"
+#: lxc/config_device.go:251 lxc/config_device.go:252
+#, fuzzy
+msgid "List container devices"
+msgstr "kann nicht zum selben Container Namen kopieren"
 
-#: lxc/publish.go:35
+#: lxc/config_template.go:235 lxc/config_template.go:236
+#, fuzzy
+msgid "List container file templates"
+msgstr "Anhalten des Containers fehlgeschlagen!"
+
+#: lxc/list.go:47
+#, fuzzy
+msgid "List containers"
+msgstr "Anhalten des Containers fehlgeschlagen!"
+
+#: lxc/list.go:48
+#, fuzzy
+msgid ""
+"List containers\n"
+"\n"
+"Default column layout: ns46tS\n"
+"Fast column layout: nsacPt\n"
+"\n"
+"== Filters ==\n"
+"A single keyword like \"web\" which will list any container with a name "
+"starting by \"web\".\n"
+"A regular expression on the container name. (e.g. .*web.*01$).\n"
+"A key/value pair referring to a configuration item. For those, the\n"
+"namespace can be abbreviated to the smallest unambiguous identifier.\n"
+"\n"
+"Examples:\n"
+"  - \"user.blah=abc\" will list all containers with the \"blah\" user "
+"property set to \"abc\".\n"
+"  - \"u.blah=abc\" will do the same\n"
+"  - \"security.privileged=true\" will list all privileged containers\n"
+"  - \"s.privileged=true\" will do the same\n"
+"\n"
+"A regular expression matching a configuration item or its value. (e.g. "
+"volatile.eth0.hwaddr=00:16:3e:.*).\n"
+"\n"
+"== Columns ==\n"
+"The -c option takes a comma separated list of arguments that control\n"
+"which container attributes to output when displaying in table or csv\n"
+"format.\n"
+"\n"
+"Column arguments are either pre-defined shorthand chars (see below),\n"
+"or (extended) config keys.\n"
+"\n"
+"Commas between consecutive shorthand chars are optional.\n"
+"\n"
+"Pre-defined column shorthand chars:\n"
+"  4 - IPv4 address\n"
+"  6 - IPv6 address\n"
+"  a - Architecture\n"
+"  b - Storage pool\n"
+"  c - Creation date\n"
+"  d - Description\n"
+"  l - Last used date\n"
+"  n - Name\n"
+"  N - Number of Processes\n"
+"  p - PID of the container's init process\n"
+"  P - Profiles\n"
+"  s - State\n"
+"  S - Number of snapshots\n"
+"  t - Type (persistent or ephemeral)\n"
+"  L - Location of the container (e.g. its node)\n"
+"\n"
+"Custom columns are defined with \"key[:name][:maxWidth]\":\n"
+"  KEY: The (extended) config key to display\n"
+"  NAME: Name to display in the column header.\n"
+"  Defaults to the key if not specified or empty.\n"
+"\n"
+"  MAXWIDTH: Max width of the column (longer results are truncated).\n"
+"  Defaults to -1 (unlimited). Use 0 to limit to the column header size."
+msgstr ""
+"Listet vorhandene Ressourcen.\n"
+"\n"
+"lxc list [Resource] [Filter]\n"
+"\n"
+"Filter sind:\n"
+"* Ein einzelnes Schlüsselwort wie \"web“, was alle Container mit \"web\" im "
+"Namen listet.\n"
+"* Ein key/value Paar bezüglich eines Konfigurationsparameters. Dafür kann "
+"der Namensraum, solange eindeutig, abgekürzt werden:\n"
+"* \"user.blah=abc\" listet alle Container mit der \"blah\" Benutzer "
+"Eigenschaft \"abc\"\n"
+"* \"u.blah=abc\" ebenfalls\n"
+"* \"security.privileged=1\" listet alle privilegierten Container\n"
+"* \"s.privileged=1\" ebenfalls\n"
+
+#: lxc/image_alias.go:148
+msgid "List image aliases"
+msgstr ""
+
+#: lxc/image_alias.go:149
+msgid ""
+"List image aliases\n"
+"\n"
+"Filters may be part of the image hash or part of the image alias name.\n"
+msgstr ""
+
+#: lxc/image.go:889
+msgid "List images"
+msgstr ""
+
+#: lxc/image.go:890
+msgid ""
+"List images\n"
+"\n"
+"Filters may be of the <key>=<value> form for property based filtering,\n"
+"or part of the image hash or part of the image alias name.\n"
+"\n"
+"The -c option takes a (optionally comma-separated) list of arguments\n"
+"that control which image attributes to output when displaying in table\n"
+"or csv format.\n"
+"\n"
+"Default column layout is: lfpdasu\n"
+"\n"
+"Column shorthand chars:\n"
+"\n"
+"    l - Shortest image alias (and optionally number of other aliases)\n"
+"    L - Newline-separated list of all image aliases\n"
+"    f - Fingerprint\n"
+"    p - Whether image is public\n"
+"    d - Description\n"
+"    a - Architecture\n"
+"    s - Size"
+msgstr ""
+
+#: lxc/profile.go:567 lxc/profile.go:568
+msgid "List profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:917 lxc/storage_volume.go:918
+#, fuzzy
+msgid "List storage volumes"
+msgstr "Kein Zertifikat für diese Verbindung"
+
+#: lxc/remote.go:413 lxc/remote.go:414
+msgid "List the available remotes"
+msgstr ""
+
+#: lxc/config_trust.go:114 lxc/config_trust.go:115
+msgid "List trusted clients"
+msgstr ""
+
+#: lxc/operation.go:24 lxc/operation.go:25
+msgid "List, show and delete background operations"
+msgstr ""
+
+#: lxc/info.go:123
+#, c-format
+msgid "Location: %s"
+msgstr ""
+
+#: lxc/info.go:275
+msgid "Log:"
+msgstr ""
+
+#: lxc/network.go:852
+msgid "MAC ADDRESS"
+msgstr ""
+
+#: lxc/network.go:783
+msgid "MANAGED"
+msgstr ""
+
+#: lxc/cluster.go:123
+msgid "MESSAGE"
+msgstr ""
+
+#: lxc/image.go:137 lxc/image.go:576
+msgid "Make image public"
+msgstr "Veröffentliche Abbild"
+
+#: lxc/publish.go:38
 #, fuzzy
 msgid "Make the image public"
 msgstr "Veröffentliche Abbild"
 
-#: lxc/info.go:193
-msgid "Memory (current)"
+#: lxc/network.go:32
+msgid "Manage an attach containers to networks"
+msgstr ""
+
+#: lxc/network.go:31
+msgid "Manage and attach containers to networks"
+msgstr ""
+
+#: lxc/cluster.go:25 lxc/cluster.go:26
+msgid "Manage cluster members"
+msgstr ""
+
+#: lxc/alias.go:22 lxc/alias.go:23
+#, fuzzy
+msgid "Manage command aliases"
+msgstr "Unbekannter Befehl %s für Abbild"
+
+#: lxc/config.go:28 lxc/config.go:29
+msgid "Manage container and server configuration options"
+msgstr ""
+
+#: lxc/config_device.go:23 lxc/config_device.go:24
+#, fuzzy
+msgid "Manage container devices"
+msgstr "kann nicht zum selben Container Namen kopieren"
+
+#: lxc/config_template.go:29 lxc/config_template.go:30
+#, fuzzy
+msgid "Manage container file templates"
+msgstr "Anhalten des Containers fehlgeschlagen!"
+
+#: lxc/config_metadata.go:28 lxc/config_metadata.go:29
+#, fuzzy
+msgid "Manage container metadata files"
+msgstr "Anhalten des Containers fehlgeschlagen!"
+
+#: lxc/file.go:39 lxc/file.go:40
+#, fuzzy
+msgid "Manage files in containers"
+msgstr "kann nicht zum selben Container Namen kopieren"
+
+#: lxc/image_alias.go:25 lxc/image_alias.go:26
+#, fuzzy
+msgid "Manage image aliases"
+msgstr "Veröffentliche Abbild"
+
+#: lxc/image.go:41
+#, fuzzy
+msgid "Manage images"
+msgstr "Veröffentliche Abbild"
+
+#: lxc/image.go:42
+msgid ""
+"Manage images\n"
+"\n"
+"In LXD containers are created from images. Those images were themselves\n"
+"either generated from an existing container or downloaded from an image\n"
+"server.\n"
+"\n"
+"When using remote images, LXD will automatically cache images for you\n"
+"and remove them upon expiration.\n"
+"\n"
+"The image unique identifier is the hash (sha-256) of its representation\n"
+"as a compressed tarball (or for split images, the concatenation of the\n"
+"metadata and rootfs tarballs).\n"
+"\n"
+"Images can be referenced by their full hash, shortest unique partial\n"
+"hash or alias name (if one is set)."
+msgstr ""
+
+#: lxc/profile.go:29 lxc/profile.go:30
+#, fuzzy
+msgid "Manage profiles"
+msgstr "Fehlerhafte Profil URL %s"
+
+#: lxc/storage.go:32 lxc/storage.go:33
+#, fuzzy
+msgid "Manage storage pools and volumes"
+msgstr "Kein Zertifikat für diese Verbindung"
+
+#: lxc/storage_volume.go:33
+#, fuzzy
+msgid "Manage storage volumes"
+msgstr "Kein Zertifikat für diese Verbindung"
+
+#: lxc/storage_volume.go:34
+msgid ""
+"Manage storage volumes\n"
+"\n"
+"Unless specified through a prefix, all volume operations affect \"custom"
+"\" (user created) volumes."
+msgstr ""
+
+#: lxc/remote.go:33 lxc/remote.go:34
+msgid "Manage the list of remote servers"
 msgstr ""
 
+#: lxc/config_trust.go:29 lxc/config_trust.go:30
+#, fuzzy
+msgid "Manage trusted clients"
+msgstr "Kein Zertifikat für diese Verbindung"
+
 #: lxc/info.go:197
+msgid "Memory (current)"
+msgstr ""
+
+#: lxc/info.go:201
 msgid "Memory (peak)"
 msgstr ""
 
-#: lxc/info.go:209
+#: lxc/info.go:213
 msgid "Memory usage:"
 msgstr ""
 
-#: lxc/monitor.go:70
+#: lxc/monitor.go:49
 msgid "Minimum level for log messages"
 msgstr ""
 
-#: lxc/utils.go:143
-msgid "Missing summary."
+#: lxc/config_metadata.go:102 lxc/config_metadata.go:200
+#: lxc/config_template.go:91 lxc/config_template.go:134
+#: lxc/config_template.go:176 lxc/config_template.go:260
+#: lxc/config_template.go:322 lxc/profile.go:197 lxc/profile.go:656
+#, fuzzy
+msgid "Missing container name"
+msgstr "der Name des Ursprung Containers muss angegeben werden"
+
+#: lxc/profile.go:126
+#, fuzzy
+msgid "Missing container.name name"
+msgstr "der Name des Ursprung Containers muss angegeben werden"
+
+#: lxc/config_device.go:103 lxc/config_device.go:203 lxc/config_device.go:276
+#: lxc/config_device.go:342 lxc/config_device.go:429 lxc/config_device.go:517
+#: lxc/config_device.go:606
+#, fuzzy
+msgid "Missing name"
 msgstr "Fehlende Zusammenfassung."
 
-#: lxc/network.go:303 lxc/network.go:356 lxc/storage.go:435 lxc/storage.go:565
+#: lxc/network.go:128 lxc/network.go:201 lxc/network.go:344 lxc/network.go:391
+#: lxc/network.go:476 lxc/network.go:581 lxc/network.go:686 lxc/network.go:832
+#: lxc/network.go:897 lxc/network.go:946 lxc/network.go:1015
+msgid "Missing network name"
+msgstr ""
+
+#: lxc/storage.go:185 lxc/storage.go:252 lxc/storage.go:353 lxc/storage.go:408
+#: lxc/storage.go:603 lxc/storage.go:677 lxc/storage_volume.go:146
+#: lxc/storage_volume.go:225 lxc/storage_volume.go:451
+#: lxc/storage_volume.go:526 lxc/storage_volume.go:585
+#: lxc/storage_volume.go:667 lxc/storage_volume.go:766
+#: lxc/storage_volume.go:878 lxc/storage_volume.go:942
+#: lxc/storage_volume.go:1050 lxc/storage_volume.go:1114
+#: lxc/storage_volume.go:1197
+#, fuzzy
+msgid "Missing pool name"
+msgstr "Profilname kann nicht geändert werden"
+
+#: lxc/profile.go:321 lxc/profile.go:372 lxc/profile.go:444 lxc/profile.go:544
+#: lxc/profile.go:729 lxc/profile.go:777 lxc/profile.go:836
+msgid "Missing profile name"
+msgstr ""
+
+#: lxc/profile.go:266
+msgid "Missing source profile name"
+msgstr ""
+
+#: lxc/storage_volume.go:311
+#, fuzzy
+msgid "Missing source volume name"
+msgstr "Kein Zertifikat für diese Verbindung"
+
+#: lxc/file.go:446
+msgid "Missing target directory"
+msgstr ""
+
+#: lxc/monitor.go:30
+msgid "Monitor a local or remote LXD server"
+msgstr ""
+
+#: lxc/monitor.go:31
+msgid ""
+"Monitor a local or remote LXD server\n"
+"\n"
+"By default the monitor will listen to all message types."
+msgstr ""
+
+#: lxc/network.go:411 lxc/network.go:496 lxc/storage_volume.go:605
+#: lxc/storage_volume.go:686
 msgid "More than one device matches, specify the device name."
 msgstr ""
 
-#: lxc/file.go:460
+#: lxc/file.go:224
 msgid "More than one file to download, but target is not a directory"
 msgstr ""
 "Mehr als eine Datei herunterzuladen, aber das Ziel ist kein Verzeichnis"
 
-#: lxc/move.go:42
+#: lxc/move.go:30 lxc/move.go:31
+#, fuzzy
+msgid "Move containers within or in between LXD instances"
+msgstr "Herunterfahren des Containers erzwingen."
+
+#: lxc/storage_volume.go:993 lxc/storage_volume.go:994
+#, fuzzy
+msgid "Move storage volumes between pools"
+msgstr "Kein Zertifikat für diese Verbindung"
+
+#: lxc/move.go:44
 #, fuzzy
 msgid "Move the container without its snapshots"
 msgstr "Herunterfahren des Containers erzwingen."
 
-#: lxc/storage.go:1128
+#: lxc/storage_volume.go:375
 #, fuzzy, c-format
 msgid "Moving the storage volume: %s"
 msgstr "Kein Zertifikat für diese Verbindung"
 
-#: lxc/image.go:1292
+#: lxc/image.go:588
 msgid "Must run as root to import from directory"
 msgstr ""
 
-#: lxc/action.go:74
+#: lxc/action.go:147
 #, fuzzy
 msgid "Must supply container name for: "
 msgstr "der Name des Ursprung Containers muss angegeben werden"
 
-#: lxc/cluster.go:183 lxc/list.go:471 lxc/network.go:576 lxc/profile.go:573
-#: lxc/remote.go:409 lxc/storage.go:731 lxc/storage.go:936
+#: lxc/cluster.go:119 lxc/list.go:468 lxc/network.go:781 lxc/profile.go:613
+#: lxc/remote.go:463 lxc/storage.go:544 lxc/storage_volume.go:966
 msgid "NAME"
 msgstr ""
 
-#: lxc/network.go:558 lxc/operation.go:139 lxc/remote.go:380 lxc/remote.go:385
+#: lxc/network.go:763 lxc/operation.go:138 lxc/remote.go:434 lxc/remote.go:439
 msgid "NO"
 msgstr ""
 
-#: lxc/storage.go:941
+#: lxc/storage_volume.go:971
 msgid "NODE"
 msgstr ""
 
-#: lxc/info.go:117
+#: lxc/info.go:121
 #, c-format
 msgid "Name: %s"
 msgstr ""
 
-#: lxc/network.go:276
+#: lxc/network.go:303
 #, fuzzy, c-format
 msgid "Network %s created"
 msgstr "Profil %s erstellt\n"
 
-#: lxc/network.go:393
+#: lxc/network.go:353
 #, fuzzy, c-format
 msgid "Network %s deleted"
 msgstr "Profil %s gelöscht\n"
 
-#: lxc/network.go:274
+#: lxc/network.go:301
 #, fuzzy, c-format
 msgid "Network %s pending on node %s"
 msgstr "Profil %s erstellt\n"
 
-#: lxc/network.go:470
+#: lxc/network.go:906
 #, fuzzy, c-format
 msgid "Network %s renamed to %s"
 msgstr "Profil %s erstellt\n"
 
-#: lxc/init.go:145 lxc/init.go:146
+#: lxc/init.go:45
 msgid "Network name"
 msgstr ""
 
-#: lxc/info.go:226
+#: lxc/info.go:230
 #, fuzzy
 msgid "Network usage:"
 msgstr "Profil %s erstellt\n"
 
-#: lxc/image.go:180 lxc/publish.go:36
+#: lxc/publish.go:39
 msgid "New alias to define at target"
 msgstr ""
 
-#: lxc/config.go:414
-#, fuzzy
-msgid "No certificate provided to add"
-msgstr "Kein Zertifikat zum hinzufügen bereitgestellt"
+#: lxc/image.go:140 lxc/image.go:577
+msgid "New aliases to add to the image"
+msgstr ""
 
-#: lxc/network.go:312 lxc/network.go:365
+#: lxc/network.go:420 lxc/network.go:505
 #, fuzzy
 msgid "No device found for this network"
 msgstr "Kein Zertifikat für diese Verbindung"
 
-#: lxc/storage.go:444 lxc/storage.go:574
+#: lxc/storage_volume.go:614 lxc/storage_volume.go:695
 #, fuzzy
 msgid "No device found for this storage volume."
 msgstr "Kein Zertifikat für diese Verbindung"
 
-#: lxc/config.go:446
-msgid "No fingerprint specified."
-msgstr "Kein Fingerabdruck angegeben."
-
-#: lxc/cluster.go:143
+#: lxc/cluster.go:268
 #, fuzzy, c-format
 msgid "Node %s removed"
 msgstr "Gerät %s wurde von %s entfernt\n"
 
-#: lxc/cluster.go:119
+#: lxc/cluster.go:221
 #, fuzzy, c-format
 msgid "Node %s renamed to %s"
 msgstr "Profil %s wurde auf %s angewandt\n"
 
-#: lxc/copy.go:46 lxc/init.go:150 lxc/move.go:45 lxc/network.go:105
-#: lxc/storage.go:165
+#: lxc/copy.go:45 lxc/init.go:48 lxc/move.go:47
 msgid "Node name"
 msgstr ""
 
-#: lxc/storage.go:388 lxc/storage.go:481
+#: lxc/storage_volume.go:164 lxc/storage_volume.go:243
 msgid "Only \"custom\" volumes can be attached to containers."
 msgstr ""
 
-#: lxc/remote.go:101
+#: lxc/remote.go:146
 msgid "Only https URLs are supported for simplestreams"
 msgstr ""
 
-#: lxc/image.go:688
+#: lxc/image.go:658
 msgid "Only https:// is supported for remote image import."
 msgstr ""
 
-#: lxc/network.go:421 lxc/network.go:605
+#: lxc/network.go:607 lxc/network.go:960
 msgid "Only managed networks can be modified."
 msgstr ""
 
-#: lxc/operation.go:85
+#: lxc/operation.go:83
 #, fuzzy, c-format
 msgid "Operation %s deleted"
 msgstr "Profil %s gelöscht\n"
 
-#: lxc/help.go:71 lxc/main.go:139 lxc/main.go:195
-msgid "Options:"
-msgstr ""
-
-#: lxc/exec.go:69
+#: lxc/exec.go:53
 msgid "Override the terminal mode (auto, interactive or non-interactive)"
 msgstr ""
 
-#: lxc/list.go:641
+#: lxc/list.go:638
 msgid "PERSISTENT"
 msgstr ""
 
-#: lxc/list.go:473
+#: lxc/list.go:470
 msgid "PID"
 msgstr ""
 
-#: lxc/list.go:472
+#: lxc/list.go:469
 msgid "PROCESSES"
 msgstr ""
 
-#: lxc/list.go:474
+#: lxc/list.go:471
 msgid "PROFILES"
 msgstr ""
 
-#: lxc/remote.go:411
+#: lxc/remote.go:465
 msgid "PROTOCOL"
 msgstr ""
 
-#: lxc/image.go:234 lxc/remote.go:413
+#: lxc/image.go:924 lxc/remote.go:467
 msgid "PUBLIC"
 msgstr ""
 
-#: lxc/info.go:220
+#: lxc/info.go:224
 msgid "Packets received"
 msgstr ""
 
-#: lxc/info.go:221
+#: lxc/info.go:225
 msgid "Packets sent"
 msgstr ""
 
-#: lxc/help.go:78
-#, fuzzy
-msgid "Path to an alternate client configuration directory"
-msgstr "Alternatives config Verzeichnis."
-
-#: lxc/help.go:79
+#: lxc/action.go:48 lxc/action.go:49
 #, fuzzy
-msgid "Path to an alternate server directory"
-msgstr "Alternatives config Verzeichnis."
-
-#: lxc/main.go:240
-#, fuzzy
-msgid "Pause containers."
+msgid "Pause containers"
 msgstr "kann nicht zum selben Container Namen kopieren"
 
-#: lxc/main.go:42
-msgid "Permission denied, are you in the lxd group?"
-msgstr ""
-
-#: lxc/info.go:138
+#: lxc/info.go:142
 #, c-format
 msgid "Pid: %d"
 msgstr ""
 
-#: lxc/network.go:446 lxc/profile.go:276 lxc/storage.go:648 lxc/storage.go:1210
+#: lxc/network.go:632 lxc/profile.go:491 lxc/storage.go:299
+#: lxc/storage_volume.go:823
 msgid "Press enter to open the editor again"
 msgstr ""
 
-#: lxc/config.go:822 lxc/config.go:887 lxc/config.go:1397 lxc/config.go:1447
-#: lxc/image.go:1192
+#: lxc/config.go:196 lxc/config.go:260 lxc/config_metadata.go:145
+#: lxc/config_template.go:205 lxc/image.go:406
 msgid "Press enter to start the editor again"
 msgstr ""
 
-#: lxc/monitor.go:68
+#: lxc/monitor.go:47
 msgid "Pretty rendering"
 msgstr ""
 
-#: lxc/help.go:73
-msgid "Print debug information"
-msgstr ""
-
-#: lxc/help.go:72
-msgid "Print less common commands"
+#: lxc/main.go:55
+msgid "Print help"
 msgstr ""
 
-#: lxc/query.go:37
+#: lxc/query.go:36
 msgid "Print the raw response"
 msgstr ""
 
-#: lxc/help.go:74
-msgid "Print verbose information"
+#: lxc/main.go:54
+msgid "Print version number"
 msgstr ""
 
-#: lxc/info.go:162
+#: lxc/info.go:166
 #, fuzzy, c-format
 msgid "Processes: %d"
 msgstr "Profil %s erstellt\n"
 
-#: lxc/profile.go:362
+#: lxc/main_aliases.go:123 lxc/main_aliases.go:131
+#, fuzzy, c-format
+msgid "Processing aliases failed: %s\n"
+msgstr "Anhalten des Containers fehlgeschlagen!"
+
+#: lxc/profile.go:147
 #, fuzzy, c-format
 msgid "Profile %s added to %s"
 msgstr "Profil %s wurde auf %s angewandt\n"
 
-#: lxc/profile.go:226
+#: lxc/profile.go:333
 #, fuzzy, c-format
 msgid "Profile %s created"
 msgstr "Profil %s erstellt\n"
 
-#: lxc/profile.go:310
+#: lxc/profile.go:381
 #, fuzzy, c-format
 msgid "Profile %s deleted"
 msgstr "Profil %s gelöscht\n"
 
-#: lxc/profile.go:397
+#: lxc/profile.go:690
 #, fuzzy, c-format
 msgid "Profile %s removed from %s"
 msgstr "Gerät %s wurde von %s entfernt\n"
 
-#: lxc/profile.go:300
+#: lxc/profile.go:738
 #, fuzzy, c-format
 msgid "Profile %s renamed to %s"
 msgstr "Profil %s wurde auf %s angewandt\n"
 
-#: lxc/copy.go:39 lxc/copy.go:40 lxc/init.go:141 lxc/init.go:142
+#: lxc/copy.go:40 lxc/init.go:43
 #, fuzzy
 msgid "Profile to apply to the new container"
 msgstr "kann nicht zum selben Container Namen kopieren"
 
-#: lxc/profile.go:339
+#: lxc/profile.go:225
 #, fuzzy, c-format
 msgid "Profiles %s applied to %s"
 msgstr "Profil %s wurde auf %s angewandt\n"
 
-#: lxc/info.go:136
+#: lxc/info.go:140
 #, fuzzy, c-format
 msgid "Profiles: %s"
 msgstr "Profil %s erstellt\n"
 
-#: lxc/image.go:619
+#: lxc/image.go:849
 #, fuzzy
 msgid "Properties:"
 msgstr "Eigenschaften:\n"
 
-#: lxc/remote.go:72
+#: lxc/remote.go:92
 msgid "Public image server"
 msgstr ""
 
-#: lxc/image.go:602
+#: lxc/image.go:827
 #, fuzzy, c-format
 msgid "Public: %s"
 msgstr "Öffentlich: %s\n"
 
-#: lxc/file.go:68 lxc/file.go:69
-msgid "Recursively push or pull files"
+#: lxc/publish.go:33 lxc/publish.go:34
+#, fuzzy
+msgid "Publish containers as images"
+msgstr "kann nicht zum selben Container Namen kopieren"
+
+#: lxc/file.go:184 lxc/file.go:185
+#, fuzzy
+msgid "Pull files from containers"
+msgstr "kann nicht zum selben Container Namen kopieren"
+
+#: lxc/file.go:323 lxc/file.go:324
+#, fuzzy
+msgid "Push files into containers"
+msgstr "kann nicht zum selben Container Namen kopieren"
+
+#: lxc/file.go:192 lxc/file.go:330
+msgid "Recursively transfer files"
 msgstr ""
 
-#: lxc/image.go:529
+#: lxc/image.go:1211 lxc/image.go:1212
+msgid "Refresh images"
+msgstr ""
+
+#: lxc/image.go:1239
 #, c-format
 msgid "Refreshing the image: %s"
 msgstr ""
 
-#: lxc/remote.go:69
+#: lxc/remote.go:515
+#, fuzzy, c-format
+msgid "Remote %s already exists"
+msgstr "entfernte Instanz %s existiert bereits"
+
+#: lxc/remote.go:507 lxc/remote.go:569 lxc/remote.go:618 lxc/remote.go:656
+#, fuzzy, c-format
+msgid "Remote %s doesn't exist"
+msgstr "entfernte Instanz %s existiert nicht"
+
+#: lxc/remote.go:116
+#, fuzzy, c-format
+msgid "Remote %s exists as <%s>"
+msgstr "entfernte Instanz %s existiert als <%s>"
+
+#: lxc/remote.go:511 lxc/remote.go:573 lxc/remote.go:660
+#, c-format
+msgid "Remote %s is static and cannot be modified"
+msgstr ""
+
+#: lxc/remote.go:89
 msgid "Remote admin password"
 msgstr "Entferntes Administrator Passwort"
 
@@ -1178,7 +1968,7 @@ msgstr "Entferntes Administrator Passwort"
 msgid "Remote operation canceled by user"
 msgstr "Server Zertifikat vom Benutzer nicht akzeptiert"
 
-#: lxc/info.go:122
+#: lxc/info.go:126
 #, c-format
 msgid "Remote: %s"
 msgstr ""
@@ -1188,1012 +1978,1104 @@ msgstr ""
 msgid "Remove %s (yes/no): "
 msgstr ""
 
-#: lxc/storage.go:1247
-#, c-format
-msgid "Renamed storage volume from \"%s\" to \"%s\""
+#: lxc/cluster.go:237 lxc/cluster.go:238
+msgid "Remove a member from the cluster"
 msgstr ""
 
-#: lxc/delete.go:36 lxc/delete.go:37
-msgid "Require user confirmation"
-msgstr ""
+#: lxc/alias.go:197 lxc/alias.go:198
+#, fuzzy
+msgid "Remove aliases"
+msgstr "Entferntes Administrator Passwort"
 
-#: lxc/info.go:159
+#: lxc/config_device.go:404 lxc/config_device.go:405
+#, fuzzy
+msgid "Remove container devices"
+msgstr "Anhalten des Containers fehlgeschlagen!"
+
+#: lxc/profile.go:631 lxc/profile.go:632
+#, fuzzy
+msgid "Remove profiles from containers"
+msgstr "kann nicht zum selben Container Namen kopieren"
+
+#: lxc/remote.go:548 lxc/remote.go:549
+msgid "Remove remotes"
+msgstr ""
+
+#: lxc/config_trust.go:196 lxc/config_trust.go:197
+msgid "Remove trusted clients"
+msgstr ""
+
+#: lxc/cluster.go:191 lxc/cluster.go:192
+msgid "Rename a cluster member"
+msgstr ""
+
+#: lxc/alias.go:146 lxc/alias.go:147 lxc/image_alias.go:249
+#: lxc/image_alias.go:250
+msgid "Rename aliases"
+msgstr ""
+
+#: lxc/rename.go:19 lxc/rename.go:20
+#, fuzzy
+msgid "Rename containers and snapshots"
+msgstr "Herunterfahren des Containers erzwingen."
+
+#: lxc/network.go:872 lxc/network.go:873
+msgid "Rename networks"
+msgstr ""
+
+#: lxc/profile.go:704 lxc/profile.go:705
+#, fuzzy
+msgid "Rename profiles"
+msgstr "Fehlerhafte Profil URL %s"
+
+#: lxc/remote.go:486 lxc/remote.go:487
+msgid "Rename remotes"
+msgstr ""
+
+#: lxc/storage_volume.go:1024 lxc/storage_volume.go:1025
+#, fuzzy
+msgid "Rename storage volumes"
+msgstr "Kein Zertifikat für diese Verbindung"
+
+#: lxc/storage_volume.go:1073
+#, c-format
+msgid "Renamed storage volume from \"%s\" to \"%s\""
+msgstr ""
+
+#: lxc/delete.go:35
+msgid "Require user confirmation"
+msgstr ""
+
+#: lxc/info.go:163
 msgid "Resources:"
 msgstr ""
 
-#: lxc/main.go:248
+#: lxc/action.go:68
 #, fuzzy
-msgid "Restart containers."
+msgid "Restart containers"
 msgstr "kann nicht zum selben Container Namen kopieren"
 
-#: lxc/console.go:38
+#: lxc/action.go:69
+msgid ""
+"Restart containers\n"
+"\n"
+"The opposite of \"lxc pause\" is \"lxc start\"."
+msgstr ""
+
+#: lxc/restore.go:23
+#, fuzzy
+msgid "Restore containers from snapshots"
+msgstr "Herunterfahren des Containers erzwingen."
+
+#: lxc/restore.go:24
+msgid ""
+"Restore containers from snapshots\n"
+"\n"
+"If --stateful is passed, then the running state will be restored too."
+msgstr ""
+
+#: lxc/console.go:39
 #, fuzzy
 msgid "Retrieve the container's console log"
 msgstr "Herunterfahren des Containers erzwingen."
 
-#: lxc/init.go:293
+#: lxc/init.go:201
 #, c-format
 msgid "Retrieving image: %s"
 msgstr ""
 
-#: lxc/action.go:52
+#: lxc/action.go:112
 msgid "Run command against all containers"
 msgstr ""
 
-#: lxc/image.go:237
+#: lxc/image.go:927
 msgid "SIZE"
 msgstr ""
 
-#: lxc/list.go:475
+#: lxc/list.go:472
 msgid "SNAPSHOTS"
 msgstr ""
 
-#: lxc/storage.go:738
+#: lxc/storage.go:551
 msgid "SOURCE"
 msgstr ""
 
-#: lxc/cluster.go:186 lxc/list.go:476 lxc/network.go:583 lxc/storage.go:736
+#: lxc/cluster.go:122 lxc/list.go:473 lxc/network.go:788 lxc/storage.go:549
 msgid "STATE"
 msgstr ""
 
-#: lxc/remote.go:414
+#: lxc/remote.go:468
 msgid "STATIC"
 msgstr ""
 
-#: lxc/operation.go:155
+#: lxc/operation.go:154
 msgid "STATUS"
 msgstr ""
 
-#: lxc/list.go:478
+#: lxc/list.go:475
 msgid "STORAGE POOL"
 msgstr ""
 
-#: lxc/remote.go:71
+#: lxc/query.go:26 lxc/query.go:27
+msgid "Send a raw query to LXD"
+msgstr ""
+
+#: lxc/remote.go:91
 msgid "Server authentication type (tls or macaroons)"
 msgstr ""
 
-#: lxc/remote.go:211
+#: lxc/remote.go:260
 msgid "Server certificate NACKed by user"
 msgstr "Server Zertifikat vom Benutzer nicht akzeptiert"
 
-#: lxc/remote.go:311
+#: lxc/remote.go:360
 #, fuzzy
 msgid "Server doesn't trust us after authentication"
 msgstr ""
 "Der Server vertraut uns nicht nachdem er unser Zertifikat hinzugefügt hat"
 
-#: lxc/remote.go:70
+#: lxc/remote.go:90
 msgid "Server protocol (lxd or simplestreams)"
 msgstr ""
 
-#: lxc/file.go:66
+#: lxc/config_device.go:492 lxc/config_device.go:493
+#, fuzzy
+msgid "Set container device configuration keys"
+msgstr "Alternatives config Verzeichnis."
+
+#: lxc/config.go:354 lxc/config.go:355
+msgid "Set container or server configuration keys"
+msgstr ""
+
+#: lxc/network.go:919 lxc/network.go:920
+msgid "Set network configuration keys"
+msgstr ""
+
+#: lxc/profile.go:752 lxc/profile.go:753
+msgid "Set profile configuration keys"
+msgstr ""
+
+#: lxc/storage.go:572 lxc/storage.go:573
+#, fuzzy
+msgid "Set storage pool configuration keys"
+msgstr "Profil %s erstellt\n"
+
+#: lxc/storage_volume.go:1088 lxc/storage_volume.go:1089
+#, fuzzy
+msgid "Set storage volume configuration keys"
+msgstr "Profil %s erstellt\n"
+
+#: lxc/remote.go:635 lxc/remote.go:636
+msgid "Set the URL for the remote"
+msgstr ""
+
+#: lxc/remote.go:597 lxc/remote.go:598
+msgid "Set the default remote"
+msgstr ""
+
+#: lxc/file.go:333
 msgid "Set the file's gid on push"
 msgstr "Setzt die gid der Datei beim Übertragen"
 
-#: lxc/file.go:67
+#: lxc/file.go:334
 msgid "Set the file's perms on push"
 msgstr "Setzt die Dateiberechtigungen beim Übertragen"
 
-#: lxc/file.go:65
+#: lxc/file.go:332
 msgid "Set the file's uid on push"
 msgstr "Setzt die uid der Datei beim Übertragen"
 
-#: lxc/help.go:29
-msgid "Show all commands (not just interesting ones)"
-msgstr "Zeigt alle Befehle (nicht nur die interessanten)"
+#: lxc/main.go:57
+msgid "Show all debug messages"
+msgstr ""
 
-#: lxc/help.go:75
-msgid "Show client version"
+#: lxc/main.go:58
+msgid "Show all information messages"
 msgstr ""
 
-#: lxc/info.go:40
+#: lxc/config_metadata.go:175 lxc/config_metadata.go:176
+#, fuzzy
+msgid "Show container metadata files"
+msgstr "Anhalten des Containers fehlgeschlagen!"
+
+#: lxc/config.go:451 lxc/config.go:452
+msgid "Show container or server configurations"
+msgstr ""
+
+#: lxc/info.go:28 lxc/info.go:29
+msgid "Show container or server information"
+msgstr ""
+
+#: lxc/config_template.go:297 lxc/config_template.go:298
+#, fuzzy
+msgid "Show content of container file templates"
+msgstr "Anhalten des Containers fehlgeschlagen!"
+
+#: lxc/cluster.go:141 lxc/cluster.go:142
+msgid "Show details of a cluster member"
+msgstr ""
+
+#: lxc/operation.go:173 lxc/operation.go:174
+msgid "Show details on a background operation"
+msgstr ""
+
+#: lxc/config_device.go:581 lxc/config_device.go:582
+msgid "Show full device configuration for containers or profiles"
+msgstr ""
+
+#: lxc/image.go:1284 lxc/image.go:1285
+msgid "Show image properties"
+msgstr ""
+
+#: lxc/main.go:61
+msgid "Show less common commands"
+msgstr ""
+
+#: lxc/network.go:988 lxc/network.go:989
+msgid "Show network configurations"
+msgstr ""
+
+#: lxc/profile.go:811 lxc/profile.go:812
+msgid "Show profile configurations"
+msgstr ""
+
+#: lxc/storage.go:644 lxc/storage.go:645
+msgid "Show storage pool configurations and resources"
+msgstr ""
+
+#: lxc/storage_volume.go:1165
+#, fuzzy
+msgid "Show storage volum configurations"
+msgstr "Profil %s erstellt\n"
+
+#: lxc/storage_volume.go:1166
+#, fuzzy
+msgid "Show storage volume configurations"
+msgstr "Profil %s erstellt\n"
+
+#: lxc/info.go:39
 msgid "Show the container's last 100 log lines?"
 msgstr "Zeige die letzten 100 Zeilen Protokoll des Containers?"
 
-#: lxc/config.go:36
+#: lxc/remote.go:379 lxc/remote.go:380
+msgid "Show the default remote"
+msgstr ""
+
+#: lxc/config.go:455
 msgid "Show the expanded configuration"
 msgstr ""
 
-#: lxc/info.go:41
+#: lxc/info.go:40
 msgid "Show the resources available to the server"
 msgstr ""
 
-#: lxc/storage.go:163
+#: lxc/storage.go:648
 msgid "Show the resources available to the storage pool"
 msgstr ""
 
-#: lxc/storage.go:164
+#: lxc/storage.go:386
 msgid "Show the used and free space in bytes"
 msgstr ""
 
-#: lxc/image.go:600
+#: lxc/image.go:775 lxc/image.go:776
+msgid "Show useful information about images"
+msgstr ""
+
+#: lxc/storage.go:382 lxc/storage.go:383
+msgid "Show useful information about storage pools"
+msgstr ""
+
+#: lxc/image.go:825
 #, fuzzy, c-format
 msgid "Size: %.2fMB"
 msgstr "Größe: %.2vMB\n"
 
-#: lxc/info.go:240
+#: lxc/info.go:244
 msgid "Snapshots:"
 msgstr ""
 
-#: lxc/action.go:163
+#: lxc/action.go:242
 #, fuzzy, c-format
 msgid "Some containers failed to %s"
 msgstr "Anhalten des Containers fehlgeschlagen!"
 
-#: lxc/image.go:634
+#: lxc/image.go:867
 msgid "Source:"
 msgstr ""
 
-#: lxc/main.go:258
+#: lxc/action.go:29 lxc/action.go:30
 #, fuzzy
-msgid "Start containers."
+msgid "Start containers"
 msgstr "kann nicht zum selben Container Namen kopieren"
 
-#: lxc/launch.go:59
+#: lxc/launch.go:62
 #, c-format
 msgid "Starting %s"
 msgstr ""
 
-#: lxc/info.go:130
+#: lxc/info.go:134
 #, c-format
 msgid "Status: %s"
 msgstr ""
 
-#: lxc/main.go:264
+#: lxc/action.go:90 lxc/action.go:91
 #, fuzzy
-msgid "Stop containers."
+msgid "Stop containers"
 msgstr "Anhalten des Containers fehlgeschlagen!"
 
-#: lxc/publish.go:37 lxc/publish.go:38
+#: lxc/publish.go:40
 msgid "Stop the container if currently running"
 msgstr ""
 
-#: lxc/publish.go:136
+#: lxc/publish.go:144
 msgid "Stopping container failed!"
 msgstr "Anhalten des Containers fehlgeschlagen!"
 
-#: lxc/delete.go:121
+#: lxc/delete.go:120
 #, fuzzy, c-format
 msgid "Stopping the container failed: %s"
 msgstr "Anhalten des Containers fehlgeschlagen!"
 
-#: lxc/storage.go:538
+#: lxc/storage.go:144
 #, fuzzy, c-format
 msgid "Storage pool %s created"
 msgstr "Profil %s erstellt\n"
 
-#: lxc/storage.go:598
+#: lxc/storage.go:194
 #, fuzzy, c-format
 msgid "Storage pool %s deleted"
 msgstr "Profil %s gelöscht\n"
 
-#: lxc/storage.go:536
+#: lxc/storage.go:142
 #, fuzzy, c-format
 msgid "Storage pool %s pending on node %s"
 msgstr "Profil %s erstellt\n"
 
-#: lxc/init.go:147 lxc/init.go:148
+#: lxc/init.go:46
 #, fuzzy
 msgid "Storage pool name"
 msgstr "Profilname kann nicht geändert werden"
 
-#: lxc/storage.go:980
+#: lxc/storage_volume.go:484
 #, fuzzy, c-format
 msgid "Storage volume %s created"
 msgstr "Profil %s erstellt\n"
 
-#: lxc/storage.go:1000
+#: lxc/storage_volume.go:545
 #, fuzzy, c-format
 msgid "Storage volume %s deleted"
 msgstr "Profil %s gelöscht\n"
 
-#: lxc/storage.go:1135
+#: lxc/storage_volume.go:388
 #, fuzzy
 msgid "Storage volume copied successfully!"
 msgstr "Profil %s erstellt\n"
 
-#: lxc/storage.go:1129
+#: lxc/storage_volume.go:376
 #, fuzzy
 msgid "Storage volume moved successfully!"
 msgstr "Profil %s erstellt\n"
 
-#: lxc/action.go:50
+#: lxc/action.go:115
 #, fuzzy
-msgid "Store the container state (only for stop)"
+msgid "Store the container state"
 msgstr "Herunterfahren des Containers erzwingen."
 
-#: lxc/info.go:201
+#: lxc/info.go:205
 msgid "Swap (current)"
 msgstr ""
 
-#: lxc/info.go:205
+#: lxc/info.go:209
 msgid "Swap (peak)"
 msgstr ""
 
-#: lxc/alias.go:85
+#: lxc/alias.go:128
 msgid "TARGET"
 msgstr ""
 
-#: lxc/list.go:477 lxc/network.go:516 lxc/network.go:577 lxc/operation.go:153
-#: lxc/storage.go:935
+#: lxc/list.go:474 lxc/network.go:782 lxc/network.go:854 lxc/operation.go:152
+#: lxc/storage_volume.go:965
 msgid "TYPE"
 msgstr ""
 
-#: lxc/delete.go:105
+#: lxc/delete.go:104
 msgid "The container is currently running, stop it first or pass --force."
 msgstr ""
 
-#: lxc/publish.go:101
+#: lxc/publish.go:109
 msgid ""
 "The container is currently running. Use --force to have it stopped and "
 "restarted."
 msgstr ""
 
-#: lxc/init.go:372
+#: lxc/init.go:280
 msgid "The container you are starting doesn't have any network attached to it."
 msgstr ""
 
-#: lxc/config.go:944 lxc/config.go:961 lxc/config.go:1240
+#: lxc/config_device.go:130 lxc/config_device.go:147 lxc/config_device.go:354
 #, fuzzy
 msgid "The device already exists"
 msgstr "entfernte Instanz %s existiert bereits"
 
-#: lxc/config.go:1007 lxc/config.go:1019 lxc/config.go:1055 lxc/config.go:1073
-#: lxc/config.go:1119 lxc/config.go:1136 lxc/config.go:1179 lxc/config.go:1197
+#: lxc/config_device.go:218 lxc/config_device.go:230 lxc/config_device.go:442
+#: lxc/config_device.go:460 lxc/config_device.go:533 lxc/config_device.go:550
 #, fuzzy
 msgid "The device doesn't exist"
 msgstr "entfernte Instanz %s existiert nicht"
 
-#: lxc/init.go:356
+#: lxc/init.go:264
 #, c-format
 msgid "The local image '%s' couldn't be found, trying '%s:%s' instead."
 msgstr ""
 
-#: lxc/init.go:352
+#: lxc/init.go:260
 #, c-format
 msgid "The local image '%s' couldn't be found, trying '%s:' instead."
 msgstr ""
 
-#: lxc/action.go:35
-msgid "The opposite of \"lxc pause\" is \"lxc start\"."
-msgstr ""
-
-#: lxc/config.go:1245
+#: lxc/config_device.go:359
 #, fuzzy
 msgid "The profile device doesn't exist"
 msgstr "entfernte Instanz %s existiert nicht"
 
-#: lxc/network.go:317 lxc/network.go:370 lxc/storage.go:449 lxc/storage.go:579
+#: lxc/network.go:425 lxc/network.go:510 lxc/storage_volume.go:619
+#: lxc/storage_volume.go:700
 #, fuzzy
 msgid "The specified device doesn't exist"
 msgstr "entfernte Instanz %s existiert nicht"
 
-#: lxc/network.go:321 lxc/network.go:374
+#: lxc/network.go:429 lxc/network.go:514
 #, fuzzy
 msgid "The specified device doesn't match the network"
 msgstr "entfernte Instanz %s existiert nicht"
 
-#: lxc/publish.go:74
+#: lxc/publish.go:82
 msgid "There is no \"image name\".  Did you want an alias?"
 msgstr ""
 
-#: lxc/help.go:47
-msgid ""
-"This is the LXD command line client.\n"
-"\n"
-"All of LXD's features can be driven through the various commands below.\n"
-"For help with any of those, simply call them with --help."
-msgstr ""
-
-#: lxc/action.go:46
+#: lxc/action.go:122
 #, fuzzy
 msgid "Time to wait for the container before killing it"
 msgstr "Wartezeit bevor der Container gestoppt wird."
 
-#: lxc/image.go:603
+#: lxc/image.go:828
 #, fuzzy
 msgid "Timestamps:"
 msgstr "Zeitstempel:\n"
 
-#: lxc/init.go:374
+#: lxc/init.go:282
 msgid "To attach a network to a container, use: lxc network attach"
 msgstr ""
 
-#: lxc/init.go:373
+#: lxc/init.go:281
 msgid "To create a new network, use: lxc network create"
 msgstr ""
 
-#: lxc/console.go:173
+#: lxc/console.go:185
 msgid "To detach from the console, press: <ctrl>+a q"
 msgstr ""
 
-#: lxc/main.go:172
+#: lxc/main.go:260
 msgid "To start your first container, try: lxc launch ubuntu:16.04"
 msgstr ""
 
-#: lxc/copy.go:43 lxc/move.go:43
+#: lxc/storage_volume.go:997
+msgid "Transfer mode, one of pull (default), push or relay"
+msgstr ""
+
+#: lxc/copy.go:42
+msgid "Transfer mode. One of pull (default), push or relay"
+msgstr ""
+
+#: lxc/move.go:45 lxc/storage_volume.go:286
 msgid "Transfer mode. One of pull (default), push or relay."
 msgstr ""
 
-#: lxc/copy.go:212
+#: lxc/copy.go:229
 #, fuzzy, c-format
 msgid "Transferring container: %s"
 msgstr "kann nicht zum selben Container Namen kopieren"
 
-#: lxc/image.go:717
+#: lxc/image.go:687
 #, c-format
 msgid "Transferring image: %s"
 msgstr ""
 
-#: lxc/action.go:108 lxc/launch.go:77
+#: lxc/action.go:181 lxc/launch.go:80
 #, c-format
 msgid "Try `lxc info --show-log %s` for more info"
 msgstr ""
 
-#: lxc/info.go:132
+#: lxc/info.go:136
 msgid "Type: ephemeral"
 msgstr ""
 
-#: lxc/info.go:134
+#: lxc/info.go:138
 msgid "Type: persistent"
 msgstr ""
 
-#: lxc/image.go:238
+#: lxc/image.go:928
 msgid "UPLOAD DATE"
 msgstr ""
 
-#: lxc/cluster.go:184 lxc/remote.go:410
+#: lxc/cluster.go:120 lxc/remote.go:464
 msgid "URL"
 msgstr ""
 
-#: lxc/network.go:580 lxc/profile.go:574 lxc/storage.go:740 lxc/storage.go:938
+#: lxc/network.go:785 lxc/profile.go:614 lxc/storage.go:553
+#: lxc/storage_volume.go:968
 msgid "USED BY"
 msgstr ""
 
-#: lxc/manpage.go:36
-msgid "Unable to find help2man."
+#: lxc/list.go:514
+#, c-format
+msgid "Unknown column shorthand char '%c' in '%s'"
 msgstr ""
 
-#: lxc/file.go:124
+#: lxc/file.go:596
 #, fuzzy, c-format
 msgid "Unknown file type '%s'"
 msgstr "Unbekannter Befehl %s für Abbild"
 
-#: lxc/image.go:608
-#, c-format
-msgid "Uploaded: %s"
+#: lxc/config_device.go:649 lxc/config_device.go:650
+msgid "Unset container device configuration keys"
 msgstr ""
 
-#: lxc/action.go:38
-#, fuzzy, c-format
-msgid ""
-"Usage: lxc %s [--all] [<remote>:]<container> [[<remote>:]<container>...]\n"
-"\n"
-"%s%s"
+#: lxc/config.go:559 lxc/config.go:560
+msgid "Unset container or server configuration keys"
 msgstr ""
-"Ändert den Laufzustand eines Containers in %s.\n"
-"\n"
-"lxd %s <Name>\n"
 
-#: lxc/help.go:45
-#, fuzzy
-msgid "Usage: lxc <command> [options]"
+#: lxc/network.go:1050 lxc/network.go:1051
+msgid "Unset network configuration keys"
 msgstr ""
-"Benutzung: lxc [Unterbefehl] [Optionen]\n"
-"Verfügbare Befehle:\n"
 
-#: lxc/alias.go:22
-msgid ""
-"Usage: lxc alias <subcommand> [options]\n"
-"\n"
-"Manage command aliases.\n"
-"\n"
-"lxc alias add <alias> <target>\n"
-"    Add a new alias <alias> pointing to <target>.\n"
-"\n"
-"lxc alias remove <alias>\n"
-"    Remove the alias <alias>.\n"
-"\n"
-"lxc alias list\n"
-"    List all the aliases.\n"
-"\n"
-"lxc alias rename <old alias> <new alias>\n"
-"    Rename remote <old alias> to <new alias>."
+#: lxc/profile.go:865 lxc/profile.go:866
+msgid "Unset profile configuration keys"
 msgstr ""
 
-#: lxc/cluster.go:23
-msgid ""
-"Usage: lxc cluster <subcommand> [options]\n"
-"\n"
-"Manage cluster nodes.\n"
-"\n"
-"lxc cluster list [<remote>:]\n"
-"    List all nodes in the cluster.\n"
-"\n"
-"lxc cluster show [<remote>:]<node>\n"
-"    Show details of a node.\n"
-"\n"
-"lxc cluster rename [<remote>:]<node> <new-name>\n"
-"    Rename a cluster node.\n"
-"\n"
-"lxc cluster delete [<remote>:]<node> [--force]\n"
-"    Delete a node from the cluster."
+#: lxc/storage.go:728 lxc/storage.go:729
+msgid "Unset storage pool configuration keys"
 msgstr ""
 
-#: lxc/config.go:85
+#: lxc/storage_volume.go:1240 lxc/storage_volume.go:1241
 #, fuzzy
-msgid ""
-"Usage: lxc config <subcommand> [options]\n"
-"\n"
-"Change container or server configuration options.\n"
-"\n"
-"*Container configuration*\n"
-"\n"
-"lxc config get [<remote>:][container] <key>\n"
-"    Get container or server configuration key.\n"
-"\n"
-"lxc config set [<remote>:][container] <key> <value>\n"
-"    Set container or server configuration key.\n"
-"\n"
-"lxc config unset [<remote>:][container] <key>\n"
-"    Unset container or server configuration key.\n"
-"\n"
-"lxc config show [<remote>:][container] [--expanded]\n"
-"    Show container or server configuration.\n"
-"\n"
-"lxc config edit [<remote>:][container]\n"
-"    Edit configuration, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"*Container metadata*\n"
-"\n"
-"lxc config metadata show [<remote>:][container]\n"
-"    Show the container metadata.yaml content.\n"
-"\n"
-"lxc config metadata edit [<remote>:][container]\n"
-"    Edit the container metadata.yaml, either by launching external editor or "
-"reading STDIN.\n"
-"\n"
-"*Container templates*\n"
-"\n"
-"lxc config template list [<remote>:][container]\n"
-"    List the names of template files for a container.\n"
-"\n"
-"lxc config template show [<remote>:][container] [template]\n"
-"    Show the content of a template file for a container.\n"
-"\n"
-"lxc config template create [<remote>:][container] [template]\n"
-"    Add an empty template file for a container.\n"
-"\n"
-"lxc config template edit [<remote>:][container] [template]\n"
-"    Edit the content of a template file for a container, either by launching "
-"external editor or reading STDIN.\n"
-"\n"
-"lxc config template delete [<remote>:][container] [template]\n"
-"    Delete a template file for a container.\n"
-"\n"
-"\n"
-"*Device management*\n"
-"\n"
-"lxc config device add [<remote>:]<container> <device> <type> [key=value...]\n"
-"    Add a device to a container.\n"
-"\n"
-"lxc config device get [<remote>:]<container> <device> <key>\n"
-"    Get a device property.\n"
-"\n"
-"lxc config device set [<remote>:]<container> <device> <key> <value>\n"
-"    Set a device property.\n"
-"\n"
-"lxc config device unset [<remote>:]<container> <device> <key>\n"
-"    Unset a device property.\n"
-"\n"
-"lxc config device override [<remote>:]<container> <device> [key=value...]\n"
-"    Copy a profile inherited device into local container config.\n"
-"\n"
-"lxc config device list [<remote>:]<container>\n"
-"    List devices for container.\n"
-"\n"
-"lxc config device show [<remote>:]<container>\n"
-"    Show full device details for container.\n"
-"\n"
-"lxc config device remove [<remote>:]<container> <name>...\n"
-"    Remove device from container.\n"
-"\n"
-"*Client trust store management*\n"
-"\n"
-"lxc config trust list [<remote>:]\n"
-"    List all trusted certs.\n"
-"\n"
-"lxc config trust add [<remote>:] <certfile.crt>\n"
-"    Add certfile.crt to trusted hosts.\n"
-"\n"
-"lxc config trust remove [<remote>:] [hostname|fingerprint]\n"
-"    Remove the cert from trusted hosts.\n"
-"\n"
-"*Examples*\n"
-"\n"
-"cat config.yaml | lxc config edit <container>\n"
-"    Update the container configuration from config.yaml.\n"
-"\n"
-"lxc config device add [<remote>:]container1 <device-name> disk source=/share/"
-"c1 path=opt\n"
-"    Will mount the host's /share/c1 onto /opt in the container.\n"
-"\n"
-"lxc config set [<remote>:]<container> limits.cpu 2\n"
-"    Will set a CPU limit of \"2\" for the container.\n"
-"\n"
-"lxc config set core.https_address [::]:8443\n"
-"    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
-"\n"
-"lxc config set core.trust_password blah\n"
-"    Will set the server's trust password to blah."
-msgstr ""
-"Verwalte Konfiguration.\n"
-"\n"
-"lxc config device add <Container> <Name> <Type> [key=value]...\n"
-"               Füge ein Gerät zu einem Container hinzu\n"
-"lxc config device list <Container>                     Listet die Geräte des "
-"Containers\n"
-"lxc config device show <Container>                     Zeigt alle Geräte "
-"Details für den Container\n"
-"lxc config device remove <Container> <Name>            Entfernt Gerät vom "
-"Container\n"
-"lxc config edit <Container>                            Bearbeite Container "
-"Konfiguration in externem Editor\n"
-"lxc config get <Container> key                         Holt "
-"Konfigurationsschlüssel\n"
-"lxc config set <Container> key [value]                 Setzt Container "
-"Konfigurationsschlüssel\n"
-"lxc config show <Container>                            Zeigt Konfiguration "
-"des Containers\n"
-"lxc config trust list [remote]                         Liste alle "
-"vertrauenswürdigen Zertifikate.\n"
-"lxc config trust add [remote] [certfile.crt]           Füge certfile.crt zu "
-"vertrauenden Instanzen hinzu.\n"
-"lxc config trust remove [remote] [hostname|fingerprint]\n"
-"               Löscht das Zertifikat aus der Liste der vertrauenswürdigen.\n"
-"\n"
-"Beispiele:\n"
-"Zum mounten von /share/c1 des Hosts nach /opt im Container:\n"
-"\tlxc config device add container1 mntdir disk source=/share/c1 path=opt\n"
-"Um einen lxc config Wert zu setzen:\n"
-"\tlxc config set <container> raw.lxc 'lxc.aa_allow_incomplete = 1'\n"
-"Um das Server Passwort zur authentifizierung zu setzen:\n"
-"\tlxc config set core.trust_password blah\n"
+msgid "Unset storage volume configuration keys"
+msgstr "Alternatives config Verzeichnis."
 
-#: lxc/console.go:31
-msgid ""
-"Usage: lxc console [<remote>:]<container> [-l]\n"
-"\n"
-"Interact with the container's console device and log."
+#: lxc/image.go:835
+#, c-format
+msgid "Uploaded: %s"
 msgstr ""
 
-#: lxc/copy.go:30
-#, fuzzy
-msgid ""
-"Usage: lxc copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>] "
-"[--ephemeral|e] [--profile|-p <profile>...] [--config|-c <key=value>...] [--"
-"container-only] [--target <node>]\n"
-"\n"
-"Copy containers within or in between LXD instances."
+#: lxc/delete.go:47
+msgid "User aborted delete operation"
 msgstr ""
-"Kopiert Container innerhalb einer oder zwischen lxd Instanzen\n"
-"\n"
-"lxc copy <Quelle> <Ziel>\n"
 
-#: lxc/delete.go:27
-#, fuzzy
+#: lxc/utils/cancel.go:40
 msgid ""
-"Usage: lxc delete [<remote>:]<container>[/<snapshot>] "
-"[[<remote>:]<container>[/<snapshot>]...]\n"
-"\n"
-"Delete containers and snapshots."
+"User signaled us three times, exiting. The remote operation will keep "
+"running."
 msgstr ""
-"Löscht einen Container oder Container Sicherungspunkt.\n"
-"\n"
-"Entfernt einen Container (oder Sicherungspunkt) und alle dazugehörigen\n"
-"Daten (Konfiguration, Sicherungspunkte, ...).\n"
 
-#: lxc/exec.go:53
-#, fuzzy
-msgid ""
-"Usage: lxc exec [<remote>:]<container> [-t] [-T] [-n] [--mode=auto|"
-"interactive|non-interactive] [--env KEY=VALUE...] [--] <command line>\n"
-"\n"
-"Execute commands in containers.\n"
-"\n"
-"The command is executed directly using exec, so there is no shell and shell "
-"patterns (variables, file redirects, ...)\n"
-"won't be understood. If you need a shell environment you need to execute the "
-"shell executable, passing the shell commands\n"
-"as arguments, for example:\n"
-"\n"
-"    lxc exec <container> -- sh -c \"cd /tmp && pwd\"\n"
-"\n"
-"Mode defaults to non-interactive, interactive mode is selected if both stdin "
-"AND stdout are terminals (stderr is ignored)."
+#: lxc/query.go:35
+msgid "Wait for the operation to complete"
 msgstr ""
-"Führt den angegebenen Befehl in einem Container aus.\n"
-"\n"
-"lxc exec <Container> [--env EDITOR=/usr/bin/vim]... <Befehl>\n"
 
-#: lxc/file.go:39
-#, fuzzy
+#: lxc/restore.go:36
 msgid ""
-"Usage: lxc file <subcommand> [options]\n"
-"\n"
-"Manage files in containers.\n"
-"\n"
-"lxc file pull [-r|--recursive] [<remote>:]<container>/<path> "
-"[[<remote>:]<container>/<path>...] <target path>\n"
-"    Pull files from containers.\n"
-"\n"
-"lxc file push [-r|--recursive] [-p|--create-dirs] [--uid=UID] [--gid=GID] [--"
-"mode=MODE] <source path> [<source path>...] [<remote>:]<container>/<path>\n"
-"    Push files into containers.\n"
-"\n"
-"lxc file delete [<remote>:]<container>/<path> [[<remote>:]<container>/"
-"<path>...]\n"
-"    Delete files in containers.\n"
-"\n"
-"lxc file edit [<remote>:]<container>/<path>\n"
-"    Edit files in containers using the default text editor.\n"
-"\n"
-"*Examples*\n"
-"lxc file push /etc/hosts foo/etc/hosts\n"
-"   To push /etc/hosts into the container \"foo\".\n"
-"\n"
-"lxc file pull foo/etc/hosts .\n"
-"   To pull /etc/hosts from the container and write it to the current "
-"directory."
+"Whether or not to restore the container's running state from snapshot (if "
+"available)"
 msgstr ""
-"Verwaltet Dateien in einem Container.\n"
-"\n"
-"lxc file pull <Quelle> [<Quelle>...] <Ziel>\n"
-"lxc file push [--uid=UID] [--gid=GID] [--mode=MODE] <Quelle> [<Quelle>...] "
-"<Ziel>\n"
-"\n"
-"<Quelle> bei pull und <Ziel> bei push sind jeweils von der Form <Container "
-"Name>/<Pfad>\n"
+"Laufenden Zustand des Containers aus dem Sicherungspunkt (falls vorhanden) "
+"wiederherstellen oder nicht"
 
-#: lxc/finger.go:15
-msgid ""
-"Usage: lxc finger [<remote>:]\n"
-"\n"
-"Check if the LXD server is alive."
+#: lxc/snapshot.go:31
+msgid "Whether or not to snapshot the container's running state"
+msgstr "Zustand des laufenden Containers sichern oder nicht"
+
+#: lxc/network.go:765 lxc/operation.go:140 lxc/remote.go:436 lxc/remote.go:441
+msgid "YES"
 msgstr ""
 
-#: lxc/help.go:22
+#: lxc/exec.go:122
+msgid "You can't pass -t and -T at the same time"
+msgstr ""
+
+#: lxc/exec.go:126
+#, fuzzy
+msgid "You can't pass -t or -T at the same time as --mode"
+msgstr "kann nicht zum selben Container Namen kopieren"
+
+#: lxc/copy.go:78
+#, fuzzy
+msgid "You must specify a destination container name when using --target"
+msgstr "der Name des Ursprung Containers muss angegeben werden"
+
+#: lxc/copy.go:73 lxc/move.go:188
+#, fuzzy
+msgid "You must specify a source container name"
+msgstr "der Name des Ursprung Containers muss angegeben werden"
+
+#: lxc/copy.go:68 lxc/move.go:91 lxc/move.go:183
+msgid "You must use the same source and destination remote when using --target"
+msgstr ""
+
+#: lxc/alias.go:53
+msgid "add <alias> <target>"
+msgstr ""
+
+#: lxc/config_trust.go:57
+msgid "add [<remote>:] <cert>"
+msgstr ""
+
+#: lxc/profile.go:100
+msgid "add [<remote>:]<container> <profile>"
+msgstr ""
+
+#: lxc/config_device.go:74
+msgid "add [<remote>:]<container|profile> <device> <type> [key=value...]"
+msgstr ""
+
+#: lxc/remote.go:82
+msgid "add [<remote>] <IP|FQDN|URL>"
+msgstr ""
+
+#: lxc/alias.go:21 lxc/image_alias.go:24
+#, fuzzy
+msgid "alias"
+msgstr "Aliasse:\n"
+
+#: lxc/profile.go:160
+msgid "assign [<remote>:]<container> <profiles>"
+msgstr ""
+
+#: lxc/network.go:102
+msgid "attach [<remote>:]<network> <container> [device name] [interface name]"
+msgstr ""
+
+#: lxc/storage_volume.go:120
+msgid "attach [<remote>:]<pool> <volume> <container> [device name] <path>"
+msgstr ""
+
+#: lxc/storage_volume.go:199
 msgid ""
-"Usage: lxc help [--all]\n"
-"\n"
-"Help page for the LXD client."
+"attach-profile [<remote:>]<pool> <volume> <profile> [device name] <path>"
 msgstr ""
 
-#: lxc/image.go:73
+#: lxc/network.go:175
 msgid ""
-"Usage: lxc image <subcommand> [options]\n"
-"\n"
-"Manipulate container images.\n"
-"\n"
-"In LXD containers are created from images. Those images were themselves\n"
-"either generated from an existing container or downloaded from an image\n"
-"server.\n"
-"\n"
-"When using remote images, LXD will automatically cache images for you\n"
-"and remove them upon expiration.\n"
-"\n"
-"The image unique identifier is the hash (sha-256) of its representation\n"
-"as a compressed tarball (or for split images, the concatenation of the\n"
-"metadata and rootfs tarballs).\n"
-"\n"
-"Images can be referenced by their full hash, shortest unique partial\n"
-"hash or alias name (if one is set).\n"
-"\n"
-"\n"
-"lxc image import <tarball>|<dir> [<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) or an image directory into the LXD "
-"image store.\n"
-"    Directory import is only available on Linux and must be performed as "
-"root.\n"
-"\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"
-"    Delete one or more images from the LXD image store.\n"
-"\n"
-"lxc image refresh [<remote>:]<image> [[<remote>:]<image>...]\n"
-"    Refresh one or more images from its parent remote.\n"
-"\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"
-"    The target may be an existing directory, file name, or \"-\" to specify\n"
-"    stdout.  The target MUST be a directory when exporting a split image.\n"
-"    If the target is a directory, the image's name (each part's name for\n"
-"    split images) as found in the database will be used for the exported\n"
-"    image.  If the target is a file (not a directory and not stdout), then\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"
-"    Print everything LXD knows about a given image.\n"
-"\n"
-"lxc image list [<remote>:] [filter] [--format csv|json|table|yaml] [-c "
-"<columns>]\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"
-"    The -c option takes a (optionally comma-separated) list of arguments "
-"that\n"
-"    control which image attributes to output when displaying in table or "
-"csv\n"
-"    format.\n"
-"\n"
-"    Default column layout is: lfpdasu\n"
-"\n"
-"    Column shorthand chars:\n"
-"\n"
-"        l - Shortest image alias (and optionally number of other aliases)\n"
-"\n"
-"        L - Newline-separated list of all image aliases\n"
-"\n"
-"        f - Fingerprint\n"
-"\n"
-"        p - Whether image is public\n"
-"\n"
-"        d - Description\n"
-"\n"
-"        a - Architecture\n"
-"\n"
-"        s - Size\n"
-"\n"
-"        u - Upload date\n"
-"\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"
-"    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"
-"    Create a new alias for an existing image.\n"
+"attach-profile [<remote>:]<network> <profile> [device name] [interface name]"
+msgstr ""
+
+#: lxc/cluster.go:24
+msgid "cluster"
+msgstr ""
+
+#: lxc/config.go:27
+msgid "config"
+msgstr ""
+
+#: lxc/console.go:30
+msgid "console [<remote>:]<container>"
+msgstr ""
+
+#: lxc/storage_volume.go:280
+msgid "copy <pool>/<volume> <pool>/<volume>"
+msgstr ""
+
+#: lxc/image.go:128
+msgid "copy [<remote>:]<image> <remote>:"
+msgstr ""
+
+#: lxc/profile.go:238
+msgid "copy [<remote>:]<profile> [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/copy.go:32
+msgid "copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>]"
+msgstr ""
+
+#: lxc/image_alias.go:57
+msgid "create [<remote>:]<alias> <fingerprint>"
+msgstr ""
+
+#: lxc/config_template.go:65
+msgid "create [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/network.go:248
+msgid "create [<remote>:]<network> [key=value...]"
+msgstr ""
+
+#: lxc/storage.go:87
+msgid "create [<remote>:]<pool> <driver> [key=value]..."
+msgstr ""
+
+#: lxc/storage_volume.go:424
+msgid "create [<remote>:]<pool> <volume> [key=value]..."
+msgstr ""
+
+#: lxc/profile.go:295
+msgid "create [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/remote.go:453
+msgid "default"
+msgstr ""
+
+#: lxc/image_alias.go:103
+msgid "delete [<remote>:]<alias>"
+msgstr ""
+
+#: lxc/config_template.go:107
+msgid "delete [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/file.go:70
+#, fuzzy
+msgid "delete [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...]"
+msgstr ""
+"Ändert den Laufzustand eines Containers in %s.\n"
 "\n"
-"lxc image alias rename [<remote>:]<alias> <new-name>\n"
-"    Rename an alias.\n"
+"lxd %s <Name>\n"
+
+#: lxc/delete.go:27
+#, fuzzy
+msgid ""
+"delete [<remote>:]<container>[/<snapshot>] [[<remote>:]<container>[/"
+"<snapshot>]...]"
+msgstr ""
+"Löscht einen Container oder Container Sicherungspunkt.\n"
 "\n"
-"lxc image alias delete [<remote>:]<alias>\n"
-"    Delete an alias.\n"
+"Entfernt einen Container (oder Sicherungspunkt) und alle dazugehörigen\n"
+"Daten (Konfiguration, Sicherungspunkte, ...).\n"
+
+#: lxc/image.go:258
+#, fuzzy
+msgid "delete [<remote>:]<image> [[<remote>:]<image>...]"
+msgstr ""
+"Ändert den Laufzustand eines Containers in %s.\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."
+"lxd %s <Name>\n"
+
+#: lxc/network.go:317
+msgid "delete [<remote>:]<network>"
+msgstr ""
+
+#: lxc/operation.go:51
+msgid "delete [<remote>:]<operation>"
+msgstr ""
+
+#: lxc/storage.go:158
+msgid "delete [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:498
+msgid "delete [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:345
+msgid "delete [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/storage.go:431
+msgid "description"
+msgstr ""
+
+#: lxc/network.go:365
+msgid "detach [<remote>:]<network> <container> [device name]"
+msgstr ""
+
+#: lxc/storage_volume.go:559
+msgid "detach [<remote>:]<pool> <volume> <container> [device name]"
+msgstr ""
+
+#: lxc/storage_volume.go:641
+msgid "detach-profile [<remote:>]<pool> <volume> <profile> [device name]"
+msgstr ""
+
+#: lxc/network.go:450
+msgid "detach-profile [<remote>:]<network> <container> [device name]"
+msgstr ""
+
+#: lxc/config_device.go:22
+msgid "device"
+msgstr ""
+
+#: lxc/init.go:223
+msgid "didn't get any affected image, container or snapshot from server"
+msgstr ""
+
+#: lxc/image.go:819
+msgid "disabled"
+msgstr ""
+
+#: lxc/storage.go:430
+msgid "driver"
+msgstr ""
+
+#: lxc/config_template.go:150
+msgid "edit [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/file.go:120
+msgid "edit [<remote>:]<container>/<path>"
+msgstr ""
+
+#: lxc/image.go:310
+msgid "edit [<remote>:]<image>"
+msgstr ""
+
+#: lxc/network.go:535
+msgid "edit [<remote>:]<network>"
+msgstr ""
+
+#: lxc/storage.go:206
+msgid "edit [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:722
+msgid "edit [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:394
+msgid "edit [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/config.go:86 lxc/config_metadata.go:52
+msgid "edit [<remote>:][container]"
+msgstr ""
+
+#: lxc/image.go:821
+msgid "enabled"
+msgstr ""
+
+#: lxc/action.go:234
+#, fuzzy, c-format
+msgid "error: %v"
+msgstr "Fehler: %v\n"
+
+#: lxc/exec.go:37
+msgid "exec [<remote>:]<container> [flags] [--] <command line>"
+msgstr ""
+
+#: lxc/image.go:433
+msgid "export [<remote>:]<image> [target]"
+msgstr ""
+
+#: lxc/file.go:38
+msgid "file"
+msgstr ""
+
+#: lxc/config_device.go:177
+msgid "get [<remote>:]<container|profile> <device> <key>"
+msgstr ""
+
+#: lxc/network.go:658
+msgid "get [<remote>:]<network> <key>"
+msgstr ""
+
+#: lxc/storage.go:326
+msgid "get [<remote>:]<pool> <key>"
+msgstr ""
+
+#: lxc/storage_volume.go:851
+msgid "get [<remote>:]<pool> <volume> <key>"
+msgstr ""
+
+#: lxc/profile.go:518
+msgid "get [<remote>:]<profile> <key>"
+msgstr ""
+
+#: lxc/config.go:287
+msgid "get [<remote>:][container] <key>"
+msgstr ""
+
+#: lxc/remote.go:378
+msgid "get-default"
+msgstr ""
+
+#: lxc/image.go:40
+msgid "image"
+msgstr ""
+
+#: lxc/image.go:569
+msgid ""
+"import <tarball>|<directory>|<URL> [<rootfs tarball>] [<remote>:] "
+"[key=value...]"
+msgstr ""
+
+#: lxc/storage.go:428
+msgid "info"
+msgstr ""
+
+#: lxc/image.go:774
+msgid "info [<remote>:]<image>"
+msgstr ""
+
+#: lxc/storage.go:381
+msgid "info [<remote>:]<pool>"
 msgstr ""
 
 #: lxc/info.go:27
+msgid "info [<remote>:][<container>]"
+msgstr ""
+
+#: lxc/init.go:33
+msgid "init [<remote>:]<image> [<remote>:][<name>]"
+msgstr ""
+
+#: lxc/launch.go:20
+msgid "launch [<remote>:]<image> [<remote>:][<name>]"
+msgstr ""
+
+#: lxc/alias.go:96 lxc/remote.go:411
+msgid "list"
+msgstr ""
+
+#: lxc/cluster.go:56 lxc/config_trust.go:112 lxc/network.go:716
+#: lxc/operation.go:95 lxc/profile.go:565 lxc/storage.go:488
+msgid "list [<remote>:]"
+msgstr ""
+
+#: lxc/image.go:887
+msgid "list [<remote>:] [filter]"
+msgstr ""
+
+#: lxc/image_alias.go:146
+msgid "list [<remote>:] [filters...]"
+msgstr ""
+
+#: lxc/list.go:45
+msgid "list [<remote>:] [filters]"
+msgstr ""
+
+#: lxc/config_template.go:234
+msgid "list [<remote>:]<container>"
+msgstr ""
+
+#: lxc/config_device.go:249
+msgid "list [<remote>:]<container|profile>"
+msgstr ""
+
+#: lxc/storage_volume.go:915
+msgid "list [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/network.go:806
+msgid "list-leases [<remote>:]<network>"
+msgstr ""
+
+#: lxc/alias.go:57
 msgid ""
-"Usage: lxc info [<remote>:][<container>] [--show-log] [--resources]\n"
-"\n"
-"Show container or server information.\n"
-"\n"
-"lxc info [<remote>:]<container> [--show-log]\n"
-"    For container information.\n"
-"\n"
-"lxc info [<remote>:] [--resources]\n"
-"    For LXD server information."
+"lxc alias add list list -c ns46S\n"
+"    Overwrite the \"list\" command to pass -c ns46S."
 msgstr ""
 
-#: lxc/init.go:79
-#, fuzzy
+#: lxc/alias.go:200
 msgid ""
-"Usage: lxc init [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
-"profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
-"<node>]\n"
-"\n"
-"Create containers from images.\n"
-"\n"
-"Not specifying -p will result in the default profile.\n"
-"Specifying \"-p\" with no argument will result in no profile.\n"
-"\n"
-"Examples:\n"
-"    lxc init ubuntu:16.04 u1"
+"lxc alias remove my-list\n"
+"    Remove the \"my-list\" alias."
 msgstr ""
-"Starte Container von gegebenem Abbild.\n"
-"\n"
-"lxc launch <Abbild> [<Name>] [—ephemeral|-e] [—profile|-p <Profile>…]\n"
-"\n"
-"Startet einen Container von gegebenem Abbild und mit Namen\n"
-"\n"
-"Ohne den -p Parameter wird das default Profil benutzt.\n"
-"Wird -p ohne Argument angegeben, wird kein Profil verwendet\n"
-"\n"
-"Beispiel:\n"
-"lxc launch ubuntu u1\n"
 
-#: lxc/launch.go:20
-#, fuzzy
+#: lxc/alias.go:149
 msgid ""
-"Usage: lxc launch [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
-"profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
-"<node>]\n"
-"\n"
-"Create and start containers from images.\n"
-"\n"
-"Not specifying -p will result in the default profile.\n"
-"Specifying \"-p\" with no argument will result in no profile.\n"
-"\n"
-"Examples:\n"
-"    lxc launch ubuntu:16.04 u1"
+"lxc alias rename list my-list\n"
+"    Rename existing alias \"list\" to \"my-list\"."
 msgstr ""
-"Starte Container von gegebenem Abbild.\n"
-"\n"
-"lxc launch <Abbild> [<Name>] [—ephemeral|-e] [—profile|-p <Profile>…]\n"
-"\n"
-"Startet einen Container von gegebenem Abbild und mit Namen\n"
-"\n"
-"Ohne den -p Parameter wird das default Profil benutzt.\n"
-"Wird -p ohne Argument angegeben, wird kein Profil verwendet\n"
-"\n"
-"Beispiel:\n"
-"lxc launch ubuntu u1\n"
 
-#: lxc/list.go:44
-#, fuzzy
+#: lxc/config_device.go:78
 msgid ""
-"Usage: lxc list [<remote>:] [filters] [--format csv|json|table|yaml] [-c "
-"<columns>] [--fast]\n"
-"\n"
-"List the existing containers.\n"
-"\n"
-"Default column layout: ns46tS\n"
-"Fast column layout: nsacPt\n"
-"\n"
-"*Filters*\n"
-"A single keyword like \"web\" which will list any container with a name "
-"starting by \"web\".\n"
-"\n"
-"A regular expression on the container name. (e.g. .*web.*01$).\n"
-"\n"
-"A key/value pair referring to a configuration item. For those, the namespace "
-"can be abbreviated to the smallest unambiguous identifier.\n"
-"\t- \"user.blah=abc\" will list all containers with the \"blah\" user "
-"property set to \"abc\".\n"
-"\n"
-"\t- \"u.blah=abc\" will do the same\n"
-"\n"
-"\t- \"security.privileged=true\" will list all privileged containers\n"
-"\n"
-"\t- \"s.privileged=true\" will do the same\n"
-"\n"
-"A regular expression matching a configuration item or its value. (e.g. "
-"volatile.eth0.hwaddr=00:16:3e:.*).\n"
-"\n"
-"*Columns*\n"
-"The -c option takes a comma separated list of arguments that control\n"
-"which container attributes to output when displaying in table or csv\n"
-"format.\n"
-"\n"
-"Column arguments are either pre-defined shorthand chars (see below),\n"
-"or (extended) config keys.\n"
-"\n"
-"Commas between consecutive shorthand chars are optional.\n"
-"\n"
-"Pre-defined column shorthand chars:\n"
-"\n"
-"\t4 - IPv4 address\n"
-"\n"
-"\t6 - IPv6 address\n"
-"\n"
-"\ta - Architecture\n"
-"\n"
-"\tb - Storage pool\n"
-"\n"
-"\tc - Creation date\n"
-"\n"
-"\td - Description\n"
-"\n"
-"\tl - Last used date\n"
-"\n"
-"\tn - Name\n"
-"\n"
-"\tN - Number of Processes\n"
-"\n"
-"\tp - PID of the container's init process\n"
-"\n"
-"\tP - Profiles\n"
-"\n"
-"\ts - State\n"
-"\n"
-"\tS - Number of snapshots\n"
-"\n"
-"\tt - Type (persistent or ephemeral)\n"
-"\n"
-"\tL - Location of the container (e.g. its node)\n"
-"\n"
-"Custom columns are defined with \"key[:name][:maxWidth]\":\n"
-"\n"
-"\tKEY: The (extended) config key to display\n"
-"\n"
-"\tNAME: Name to display in the column header.\n"
-"\tDefaults to the key if not specified or empty.\n"
-"\n"
-"\tMAXWIDTH: Max width of the column (longer results are truncated).\n"
-"\tDefaults to -1 (unlimited). Use 0 to limit to the column header size.\n"
-"\n"
-"*Examples*\n"
-"lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:"
-"MAC\n"
-"\tShows a list of containers using the \"NAME\", \"BASE IMAGE\", \"STATE\", "
-"\"IPV4\",\n"
-"\t\"IPV6\" and \"MAC\" columns.\n"
-"\n"
-"\t\"BASE IMAGE\" and \"MAC\" are custom columns generated from container "
-"configuration keys.\n"
-"\n"
-"lxc list -c ns,user.comment:comment\n"
-"\tList images with their running state and user comment. "
+"lxc config device add [<remote>:]container1 <device-name> disk source=/share/"
+"c1 path=opt\n"
+"    Will mount the host's /share/c1 onto /opt in the container."
 msgstr ""
-"Listet vorhandene Ressourcen.\n"
+
+#: lxc/config.go:90
+msgid ""
+"lxc config edit <container> < container.yaml\n"
+"    Update the container configuration from config.yaml."
+msgstr ""
+
+#: lxc/config.go:357
+msgid ""
+"lxc config set [<remote>:]<container> limits.cpu 2\n"
+"    Will set a CPU limit of \"2\" for the container.\n"
 "\n"
-"lxc list [Resource] [Filter]\n"
+"lxc config set core.https_address [::]:8443\n"
+"    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
 "\n"
-"Filter sind:\n"
-"* Ein einzelnes Schlüsselwort wie \"web“, was alle Container mit \"web\" im "
-"Namen listet.\n"
-"* Ein key/value Paar bezüglich eines Konfigurationsparameters. Dafür kann "
-"der Namensraum, solange eindeutig, abgekürzt werden:\n"
-"* \"user.blah=abc\" listet alle Container mit der \"blah\" Benutzer "
-"Eigenschaft \"abc\"\n"
-"* \"u.blah=abc\" ebenfalls\n"
-"* \"security.privileged=1\" listet alle privilegierten Container\n"
-"* \"s.privileged=1\" ebenfalls\n"
+"lxc config set core.trust_password blah\n"
+"    Will set the server's trust password to blah."
+msgstr ""
 
-#: lxc/manpage.go:20
+#: lxc/file.go:187
 msgid ""
-"Usage: lxc manpage <directory>\n"
-"\n"
-"Generate all the LXD manpages."
+"lxc file pull foo/etc/hosts .\n"
+"   To pull /etc/hosts from the container and write it to the current "
+"directory."
 msgstr ""
 
-#: lxc/monitor.go:49
+#: lxc/file.go:326
 msgid ""
-"Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
-"\n"
-"Monitor a local or remote LXD server.\n"
+"lxc file push /etc/hosts foo/etc/hosts\n"
+"   To push /etc/hosts into the container \"foo\"."
+msgstr ""
+
+#: lxc/image.go:314
+msgid ""
+"lxc image edit <image>\n"
+"    Launch a text editor to edit the properties\n"
 "\n"
-"By default the monitor will listen to all message types.\n"
+"lxc image edit <image> < image.yaml\n"
+"    Load the image properties from a YAML file"
+msgstr ""
+
+#: lxc/info.go:31
+msgid ""
+"lxc info [<remote>:]<container> [--show-log]\n"
+"    For container information.\n"
 "\n"
-"Message types to listen for can be specified with --type.\n"
+"lxc info [<remote>:] [--resources]\n"
+"    For LXD server information."
+msgstr ""
+
+#: lxc/init.go:37
+msgid "lxc init ubuntu:16.04 u1"
+msgstr ""
+
+#: lxc/launch.go:24
+msgid "lxc launch ubuntu:16.04 u1"
+msgstr ""
+
+#: lxc/list.go:103
+msgid ""
+"lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:"
+"MAC\n"
+"  Show containers using the \"NAME\", \"BASE IMAGE\", \"STATE\", \"IPV4\", "
+"\"IPV6\" and \"MAC\" columns.\n"
+"  \"BASE IMAGE\" and \"MAC\" are custom columns generated from container "
+"configuration keys.\n"
 "\n"
-"*Examples*\n"
+"lxc list -c ns,user.comment:comment\n"
+"  List images with their running state and user comment."
+msgstr ""
+
+#: lxc/monitor.go:35
+msgid ""
 "lxc monitor --type=logging\n"
 "    Only show log messages.\n"
 "\n"
 "lxc monitor --pretty --type=logging --loglevel=info\n"
 "    Show a pretty log of messages with info level or higher.\n"
+"\n"
+"lxc monitor --type=lifecycle\n"
+"    Only show lifecycle events."
 msgstr ""
 
-#: lxc/move.go:26
+#: lxc/move.go:33
 #, fuzzy
 msgid ""
-"Usage: lxc move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
-"<snapshot>]] [--container-only] [--target <node>]\n"
-"\n"
-"Move containers within or in between LXD instances.\n"
-"\n"
 "lxc move [<remote>:]<source container> [<remote>:][<destination container>] "
 "[--container-only]\n"
 "    Move a container between two hosts, renaming it if destination name "
@@ -2209,161 +3091,14 @@ msgstr ""
 "\n"
 "lxc move <Quelle> <Ziel>\n"
 
-#: lxc/network.go:52
-msgid ""
-"Usage: lxc network <subcommand> [options]\n"
-"\n"
-"Manage and attach containers to networks.\n"
-"\n"
-"lxc network list [<remote>:]\n"
-"    List available networks.\n"
-"\n"
-"lxc network list-leases [<remote>:]<network>\n"
-"    List the DHCP leases for the network\n"
-"\n"
-"lxc network show [<remote>:]<network> [--target <node>]\n"
-"    Show details of a network.\n"
-"\n"
-"lxc network create [<remote>:]<network> [key=value...] [--target <node>]\n"
-"    Create a network.\n"
-"\n"
-"lxc network get [<remote>:]<network> <key> [--target <node>]\n"
-"    Get network configuration.\n"
-"\n"
-"lxc network set [<remote>:]<network> <key> <value>\n"
-"    Set network configuration.\n"
-"\n"
-"lxc network unset [<remote>:]<network> <key>\n"
-"    Unset network configuration.\n"
-"\n"
-"lxc network delete [<remote>:]<network>\n"
-"    Delete a network.\n"
-"\n"
-"lxc network edit [<remote>:]<network>\n"
-"    Edit network, either by launching external editor or reading STDIN.\n"
-"\n"
-"lxc network rename [<remote>:]<network> <new-name>\n"
-"    Rename a network.\n"
-"\n"
-"lxc network attach [<remote>:]<network> <container> [device name] [interface "
-"name]\n"
-"    Attach a network interface connecting the network to a specified "
-"container.\n"
-"\n"
-"lxc network attach-profile [<remote>:]<network> <profile> [device name] "
-"[interface name]\n"
-"    Attach a network interface connecting the network to a specified "
-"profile.\n"
-"\n"
-"lxc network detach [<remote>:]<network> <container> [device name]\n"
-"    Remove a network interface connecting the network to a specified "
-"container.\n"
-"\n"
-"lxc network detach-profile [<remote>:]<network> <container> [device name]\n"
-"    Remove a network interface connecting the network to a specified "
-"profile.\n"
-"\n"
-"*Examples*\n"
-"cat network.yaml | lxc network edit <network>\n"
-"    Update a network using the content of network.yaml"
-msgstr ""
-
-#: lxc/operation.go:25
+#: lxc/operation.go:176
 msgid ""
-"Usage: lxc operation <subcommand> [options]\n"
-"\n"
-"List, show and delete background operations.\n"
-"\n"
-"lxc operation list [<remote>:]\n"
-"    List background operations.\n"
-"\n"
-"lxc operation show [<remote>:]<operation>\n"
-"    Show details on a background operation.\n"
-"\n"
-"lxc operation delete [<remote>:]<operation>\n"
-"    Delete a background operation (will attempt to cancel).\n"
-"\n"
-"*Examples*\n"
 "lxc operation show 344a79e4-d88a-45bf-9c39-c72c26f6ab8a\n"
 "    Show details on that operation UUID"
 msgstr ""
 
-#: lxc/profile.go:51
-#, fuzzy
+#: lxc/profile.go:165
 msgid ""
-"Usage: lxc profile <subcommand> [options]\n"
-"\n"
-"Manage container configuration profiles.\n"
-"\n"
-"*Profile configuration*\n"
-"lxc profile list [<remote>:]\n"
-"    List available profiles.\n"
-"\n"
-"lxc profile show [<remote>:]<profile>\n"
-"    Show details of a profile.\n"
-"\n"
-"lxc profile create [<remote>:]<profile>\n"
-"    Create a profile.\n"
-"\n"
-"lxc profile copy [<remote>:]<profile> [<remote>:]<profile>\n"
-"    Copy the profile.\n"
-"\n"
-"lxc profile get [<remote>:]<profile> <key>\n"
-"    Get profile configuration.\n"
-"\n"
-"lxc profile set [<remote>:]<profile> <key> <value>\n"
-"    Set profile configuration.\n"
-"\n"
-"lxc profile unset [<remote>:]<profile> <key>\n"
-"    Unset profile configuration.\n"
-"\n"
-"lxc profile delete [<remote>:]<profile>\n"
-"    Delete a profile.\n"
-"\n"
-"lxc profile edit [<remote>:]<profile>\n"
-"    Edit profile, either by launching external editor or reading STDIN.\n"
-"\n"
-"lxc profile rename [<remote>:]<profile> <new-name>\n"
-"    Rename a profile.\n"
-"\n"
-"*Profile assignment*\n"
-"lxc profile assign [<remote>:]<container> <profiles>\n"
-"    Replace the current set of profiles for the container by the one "
-"provided.\n"
-"\n"
-"lxc profile add [<remote>:]<container> <profile>\n"
-"    Add a profile to a container\n"
-"\n"
-"lxc profile remove [<remote>:]<container> <profile>\n"
-"    Remove the profile from a container\n"
-"\n"
-"*Device management*\n"
-"lxc profile device list [<remote>:]<profile>\n"
-"    List devices in the given profile.\n"
-"\n"
-"lxc profile device show [<remote>:]<profile>\n"
-"    Show full device details in the given profile.\n"
-"\n"
-"lxc profile device remove [<remote>:]<profile> <name>\n"
-"    Remove a device from a profile.\n"
-"\n"
-"lxc profile device get [<remote>:]<profile> <name> <key>\n"
-"    Get a device property.\n"
-"\n"
-"lxc profile device set [<remote>:]<profile> <name> <key> <value>\n"
-"    Set a device property.\n"
-"\n"
-"lxc profile device unset [<remote>:]<profile> <name> <key>\n"
-"    Unset a device property.\n"
-"\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.\n"
-"\n"
-"*Examples*\n"
-"cat profile.yaml | lxc profile edit <profile>\n"
-"    Update a profile using the content of profile.yaml\n"
-"\n"
 "lxc profile assign foo default,bar\n"
 "    Set the profiles for \"foo\" to \"default\" and \"bar\".\n"
 "\n"
@@ -2373,128 +3108,27 @@ msgid ""
 "lxc profile assign foo ''\n"
 "    Remove all profile from \"foo\""
 msgstr ""
-"Verwalte Konfigurationsprofile.\n"
-"\n"
-"lxc profile list [Filter]                     Listet verfügbare Profile\n"
-"lxc profile show <Profil>                     Zeigt Details zu einem Profil\n"
-"lxc profile create <Profil>                   Erstellt ein Profil\n"
-"lxc profile edit <Profil>                     Bearbeitet das Profil in "
-"externem Editor\n"
-"lxc profile copy <Profil> <remote>            Kopiert das Profil zur "
-"entfernten Instanz\n"
-"lxc profile set <Profil> <key> <value>        Setzt eine "
-"Profilkonfiguration\n"
-"lxc profile delete <Profil>                   Löscht ein Profil\n"
-"lxc profile apply <Container> <Profil>\n"
-"    Wendet eine durch Kommata getrennte Liste von Profilen,\n"
-"    in gegeben Reihenfolge, auf einen Container an.\n"
-"    Alle angegeben, und nur diese, werden auf den Container angewandt.\n"
-"    Beispiel: lxc profile apply foo default,bar # Wende default und bar an\n"
-"             lxc profile apply foo default # Nur default ist aktiv\n"
-"             lxc profile apply '' # keine Profile werden angewandt\n"
-"             lxc profile apply bar,default # Wende nun default als zweites "
-"an\n"
-"\n"
-"Geräte:\n"
-"lxc profile device list <Profil>              Listet Geräte im Profil\n"
-"lxc profile device show <Profil>              Zeigt alle Geräte Details im "
-"gegebenen Profil.\n"
-"lxc profile device remove <Profil> <name>     Entfernt ein Gerät von dem "
-"Profil.\n"
-"lxc profile device add <Profil name> <Gerätename> <Gerätetype> "
-"[key=value]...\n"
-"    Fügt ein Gerät, wie zum Beispiel eine Festplatte oder Netzwerkkarte, den "
-"Containern hinzu,\n"
-"    die dieses Profil verwenden.\n"
-
-#: lxc/publish.go:28
+
+#: lxc/profile.go:398
 msgid ""
-"Usage: lxc publish [<remote>:]<container>[/<snapshot>] [<remote>:] [--"
-"alias=ALIAS...] [prop-key=prop-value...]\n"
-"\n"
-"Publish containers as images."
+"lxc profile edit <profile> < profile.yaml\n"
+"    Update a profile using the content of profile.yaml"
 msgstr ""
 
-#: lxc/query.go:25
+#: lxc/query.go:29
 msgid ""
-"Usage: lxc query [-X <action>] [-d <data>] [--wait] [--raw] [<remote>:]<API "
-"path>\n"
-"\n"
-"Send a raw query to LXD.\n"
-"\n"
-"*Examples*\n"
 "lxc query -X DELETE --wait /1.0/containers/c1\n"
 "    Delete local container \"c1\"."
 msgstr ""
 
-#: lxc/remote.go:40
-#, fuzzy
-msgid ""
-"Usage: lxc remote <subcommand> [options]\n"
-"\n"
-"Manage the list of remote LXD servers.\n"
-"\n"
-"lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--"
-"password=PASSWORD] [--public] [--protocol=PROTOCOL] [--auth-type=AUTH_TYPE]\n"
-"    Add the remote <remote> at <url>.\n"
-"\n"
-"lxc remote remove <remote>\n"
-"    Remove the remote <remote>.\n"
-"\n"
-"lxc remote list\n"
-"    List all remotes.\n"
-"\n"
-"lxc remote rename <old name> <new name>\n"
-"    Rename remote <old name> to <new name>.\n"
-"\n"
-"lxc remote set-url <remote> <url>\n"
-"    Update <remote>'s url to <url>.\n"
-"\n"
-"lxc remote set-default <remote>\n"
-"    Set the default remote.\n"
-"\n"
-"lxc remote get-default\n"
-"    Print the default remote."
-msgstr ""
-"Verwalte entfernte LXD Server.\n"
-"\n"
-"lxc remote add <Name> <url> [--accept-certificate] [--password=PASSWORT]  "
-"Fügt die Instanz <Name> auf <URL> hinzu.\n"
-"lxc remote remove <Name>                                                  "
-"Entfernt die Instanz <Name>.\n"
-"lxc remote list                                                           "
-"Listet alle entfernte Instanzen.\n"
-"lxc remote rename <alt> <neu>                                             "
-"Benennt Instanz von <alt> nach <neu> um.\n"
-"lxc remote set-url <Name> <url>                                           "
-"Setzt die URL von <Name> auf <url>.\n"
-"lxc remote set-default <Name>                                             "
-"Setzt die Standard Instanz.\n"
-"lxc remote get-default                                                    "
-"Gibt die Standard Instanz aus.\n"
-
-#: lxc/rename.go:18
-#, fuzzy
+#: lxc/snapshot.go:26
 msgid ""
-"Usage: lxc rename [<remote>:]<container>[/<snapshot>] [<container>[/"
-"<snapshot>]]\n"
-"\n"
-"Rename a container or snapshot."
+"lxc snapshot u1 snap0\n"
+"    Create a snapshot of \"u1\" called \"snap0\"."
 msgstr ""
-"Löscht einen Container oder Container Sicherungspunkt.\n"
-"\n"
-"Entfernt einen Container (oder Sicherungspunkt) und alle dazugehörigen\n"
-"Daten (Konfiguration, Sicherungspunkte, ...).\n"
 
-#: lxc/restore.go:22
+#: lxc/restore.go:28
 msgid ""
-"Usage: lxc restore [<remote>:]<container> <snapshot> [--stateful]\n"
-"\n"
-"Restore containers from snapshots.\n"
-"\n"
-"If --stateful is passed, then the running state will be restored too.\n"
-"\n"
-"*Examples*\n"
 "lxc snapshot u1 snap0\n"
 "    Create the snapshot.\n"
 "\n"
@@ -2502,121 +3136,20 @@ msgid ""
 "    Restore the snapshot."
 msgstr ""
 
-#: lxc/snapshot.go:19
+#: lxc/storage.go:210
 msgid ""
-"Usage: lxc snapshot [<remote>:]<container> <snapshot name> [--stateful]\n"
-"\n"
-"Create container snapshots.\n"
-"\n"
-"When --stateful is used, LXD attempts to checkpoint the container's\n"
-"running state, including process memory state, TCP connections, ...\n"
-"\n"
-"*Examples*\n"
-"lxc snapshot u1 snap0\n"
-"    Create a snapshot of \"u1\" called \"snap0\"."
+"lxc storage edit [<remote>:]<pool> < pool.yaml\n"
+"    Update a storage pool using the content of pool.yaml."
 msgstr ""
 
-#: lxc/storage.go:67
+#: lxc/storage_volume.go:726
+msgid ""
+"lxc storage volume edit [<remote>:]<pool> <volume> < volume.yaml\n"
+"    Update a storage volume using the content of pool.yaml."
+msgstr ""
+
+#: lxc/storage_volume.go:1168
 msgid ""
-"Usage: lxc storage <subcommand> [options]\n"
-"\n"
-"Manage storage pools and volumes.\n"
-"\n"
-"*Storage pools*\n"
-"lxc storage list [<remote>:]\n"
-"    List available storage pools.\n"
-"\n"
-"lxc storage show [<remote>:]<pool> [--resources] [--target <node>]\n"
-"    Show details of a storage pool.\n"
-"\n"
-"lxc storage info [<remote>:]<pool> [--bytes]\n"
-"    Show information of a storage pool in yaml format.\n"
-"\n"
-"lxc storage create [<remote>:]<pool> <driver> [key=value]... [--target "
-"<node>]\n"
-"    Create a storage pool.\n"
-"\n"
-"lxc storage get [<remote>:]<pool> <key>\n"
-"    Get storage pool configuration.\n"
-"\n"
-"lxc storage set [<remote>:]<pool> <key> <value>\n"
-"    Set storage pool configuration.\n"
-"\n"
-"lxc storage unset [<remote>:]<pool> <key>\n"
-"    Unset storage pool configuration.\n"
-"\n"
-"lxc storage delete [<remote>:]<pool>\n"
-"    Delete a storage pool.\n"
-"\n"
-"lxc storage edit [<remote>:]<pool>\n"
-"    Edit storage pool, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"*Storage volumes*\n"
-"lxc storage volume list [<remote>:]<pool>\n"
-"    List available storage volumes on a storage pool.\n"
-"\n"
-"lxc storage volume show [<remote>:]<pool> <volume> [--target <node>]\n"
-"   Show details of a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume create [<remote>:]<pool> <volume> [key=value]... [--"
-"target <node>]\n"
-"    Create a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume rename [<remote>:]<pool> <old name> <new name> [--target "
-"<node>]\n"
-"    Rename a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume get [<remote>:]<pool> <volume> <key> [--target <node>]\n"
-"    Get storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume set [<remote>:]<pool> <volume> <key> <value> [--target "
-"<node>]\n"
-"    Set storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume unset [<remote>:]<pool> <volume> <key> [--target <node>]\n"
-"    Unset storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume delete [<remote>:]<pool> <volume> [--target <node>]\n"
-"    Delete a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume edit [<remote>:]<pool> <volume> [--target <node>]\n"
-"    Edit storage volume, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"lxc storage volume attach [<remote>:]<pool> <volume> <container> [device "
-"name] <path>\n"
-"    Attach a storage volume to the specified container.\n"
-"\n"
-"lxc storage volume attach-profile [<remote:>]<pool> <volume> <profile> "
-"[device name] <path>\n"
-"    Attach a storage volume to the specified profile.\n"
-"\n"
-"lxc storage volume detach [<remote>:]<pool> <volume> <container> [device "
-"name]\n"
-"    Detach a storage volume from the specified container.\n"
-"\n"
-"lxc storage volume detach-profile [<remote:>]<pool> <volume> <profile> "
-"[device name]\n"
-"\tDetach a storage volume from the specified profile.\n"
-"\n"
-"lxc storage volume copy <pool>/<volume> <pool>/<volume> [--config|-c "
-"<key=value>...]\n"
-"    Copy an existing volume to a new volume at the specified pool.\n"
-"\n"
-"lxc storage volume move [<pool>/]<volume> [<pool>/]<volume>\n"
-"    Move an existing volume to the specified pool.\n"
-"\n"
-"Unless specified through a prefix, all volume operations affect \"custom"
-"\" (user created) volumes.\n"
-"\n"
-"*Examples*\n"
-"cat pool.yaml | lxc storage edit [<remote>:]<pool>\n"
-"    Update a storage pool using the content of pool.yaml.\n"
-"\n"
-"cat pool.yaml | lxc storage volume edit [<remote>:]<pool> <volume>\n"
-"    Update a storage volume using the content of pool.yaml.\n"
-"\n"
 "lxc storage volume show default data\n"
 "    Will show the properties of a custom volume called \"data\" in the "
 "\"default\" pool.\n"
@@ -2626,205 +3159,813 @@ msgid ""
 "\" in the \"default\" pool."
 msgstr ""
 
-#: lxc/version.go:18
+#: lxc/config_metadata.go:27
+msgid "metadata"
+msgstr ""
+
+#: lxc/monitor.go:29
+msgid "monitor [<remote>:]"
+msgstr ""
+
+#: lxc/storage_volume.go:991
+msgid "move [<pool>/]<volume> [<pool>/]<volume>"
+msgstr ""
+
+#: lxc/move.go:28
+#, fuzzy
+msgid ""
+"move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
+"<snapshot>]]"
+msgstr ""
+"Löscht einen Container oder Container Sicherungspunkt.\n"
+"\n"
+"Entfernt einen Container (oder Sicherungspunkt) und alle dazugehörigen\n"
+"Daten (Konfiguration, Sicherungspunkte, ...).\n"
+
+#: lxc/storage.go:429
+msgid "name"
+msgstr ""
+
+#: lxc/network.go:30
+msgid "network"
+msgstr ""
+
+#: lxc/image.go:809 lxc/image.go:814 lxc/image.go:977
+msgid "no"
+msgstr ""
+
+#: lxc/remote.go:253
+#, fuzzy
+msgid "ok (y/n)?"
+msgstr "OK (y/n)? "
+
+#: lxc/operation.go:23
+#, fuzzy
+msgid "operation"
+msgstr "Eigenschaften:\n"
+
+#: lxc/config_device.go:316
+msgid "override [<remote>:]<container> <device> [key=value...]"
+msgstr ""
+
+#: lxc/action.go:47
+#, fuzzy
+msgid "pause [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+"Ändert den Laufzustand eines Containers in %s.\n"
+"\n"
+"lxd %s <Name>\n"
+
+#: lxc/config.go:52
+msgid "please use `lxc profile`"
+msgstr ""
+
+#: lxc/profile.go:28
+#, fuzzy
+msgid "profile"
+msgstr "Profil %s erstellt\n"
+
+#: lxc/publish.go:32
+msgid ""
+"publish [<remote>:]<container>[/<snapshot>] [<remote>:] [flags] [prop-"
+"key=prop-value...]"
+msgstr ""
+
+#: lxc/file.go:183
+#, fuzzy
+msgid ""
+"pull [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...] "
+"<target path>"
+msgstr ""
+"Löscht einen Container oder Container Sicherungspunkt.\n"
+"\n"
+"Entfernt einen Container (oder Sicherungspunkt) und alle dazugehörigen\n"
+"Daten (Konfiguration, Sicherungspunkte, ...).\n"
+
+#: lxc/file.go:322
 #, fuzzy
 msgid ""
-"Usage: lxc version\n"
+"push <source path> [<remote>:]<container>/<path> [[<remote>:]<container>/"
+"<path>...]"
+msgstr ""
+"Ändert den Laufzustand eines Containers in %s.\n"
+"\n"
+"lxd %s <Name>\n"
+
+#: lxc/query.go:25
+msgid "query [<remote>:]<API path>"
+msgstr ""
+
+#: lxc/image.go:1210
+#, fuzzy
+msgid "refresh [<remote>:]<image> [[<remote>:]<image>...]"
+msgstr ""
+"Ändert den Laufzustand eines Containers in %s.\n"
+"\n"
+"lxd %s <Name>\n"
+
+#: lxc/remote.go:32
+msgid "remote"
+msgstr ""
+
+#: lxc/alias.go:195
+msgid "remove <alias>"
+msgstr ""
+
+#: lxc/remote.go:546
+msgid "remove <remote>"
+msgstr ""
+
+#: lxc/config_trust.go:194
+msgid "remove [<remote>:] <hostname|fingerprint>"
+msgstr ""
+
+#: lxc/profile.go:630
+msgid "remove [<remote>:]<container> <profile>"
+msgstr ""
+
+#: lxc/config_device.go:402
+msgid "remove [<remote>:]<container|profile> <name>..."
+msgstr ""
+
+#: lxc/cluster.go:235
+msgid "remove [<remote>:]<member>"
+msgstr ""
+
+#: lxc/alias.go:144
+msgid "rename <old alias> <new alias>"
+msgstr ""
+
+#: lxc/remote.go:484
+msgid "rename <remote> <new-name>"
+msgstr ""
+
+#: lxc/image_alias.go:247
+msgid "rename [<remote>:]<alias> <new-name>"
+msgstr ""
+
+#: lxc/rename.go:18
+#, fuzzy
+msgid "rename [<remote>:]<container>[/<snapshot>] <container>[/<snapshot>]"
+msgstr ""
+"Löscht einen Container oder Container Sicherungspunkt.\n"
 "\n"
-"Print the version number of this client tool."
+"Entfernt einen Container (oder Sicherungspunkt) und alle dazugehörigen\n"
+"Daten (Konfiguration, Sicherungspunkte, ...).\n"
+
+#: lxc/cluster.go:189
+msgid "rename [<remote>:]<member> <new-name>"
+msgstr ""
+
+#: lxc/network.go:870
+msgid "rename [<remote>:]<network> <new-name>"
+msgstr ""
+
+#: lxc/storage_volume.go:1023
+msgid "rename [<remote>:]<pool> <old name> <new name>"
+msgstr ""
+
+#: lxc/profile.go:702
+msgid "rename [<remote>:]<profile> <new-name>"
+msgstr ""
+
+#: lxc/action.go:67
+#, fuzzy
+msgid "restart [<remote>:]<container> [[<remote>:]<container>...]"
 msgstr ""
-"Zeigt die Versionsnummer von LXD.\n"
+"Ändert den Laufzustand eines Containers in %s.\n"
 "\n"
-"lxc version\n"
+"lxd %s <Name>\n"
 
-#: lxc/delete.go:46
-msgid "User aborted delete operation."
+#: lxc/restore.go:22
+msgid "restore [<remote>:]<container> <snapshot>"
 msgstr ""
 
-#: lxc/utils/cancel.go:40
-msgid ""
-"User signaled us three times, exiting. The remote operation will keep "
-"running."
+#: lxc/config_device.go:491
+msgid "set [<remote>:]<container|profile> <device> <key> <value>"
 msgstr ""
 
-#: lxc/query.go:36
-msgid "Wait for the operation to complete"
+#: lxc/network.go:918
+msgid "set [<remote>:]<network> <key> <value>"
 msgstr ""
 
-#: lxc/restore.go:38
-msgid ""
-"Whether or not to restore the container's running state from snapshot (if "
-"available)"
+#: lxc/storage.go:571
+msgid "set [<remote>:]<pool> <key> <value>"
 msgstr ""
-"Laufenden Zustand des Containers aus dem Sicherungspunkt (falls vorhanden) "
-"wiederherstellen oder nicht"
-
-#: lxc/snapshot.go:33
-msgid "Whether or not to snapshot the container's running state"
-msgstr "Zustand des laufenden Containers sichern oder nicht"
 
-#: lxc/network.go:560 lxc/operation.go:141 lxc/remote.go:382 lxc/remote.go:387
-msgid "YES"
+#: lxc/storage_volume.go:1087
+msgid "set [<remote>:]<pool> <volume> <key> <value>"
 msgstr ""
 
-#: lxc/exec.go:132
-msgid "You can't pass -t and -T at the same time"
+#: lxc/profile.go:751
+msgid "set [<remote>:]<profile> <key> <value>"
 msgstr ""
 
-#: lxc/exec.go:136
-#, fuzzy
-msgid "You can't pass -t or -T at the same time as --mode"
-msgstr "kann nicht zum selben Container Namen kopieren"
-
-#: lxc/copy.go:76
-#, fuzzy
-msgid "You must specify a destination container name when using --target"
-msgstr "der Name des Ursprung Containers muss angegeben werden"
-
-#: lxc/copy.go:71
-#, fuzzy
-msgid "You must specify a source container name"
-msgstr "der Name des Ursprung Containers muss angegeben werden"
+#: lxc/config.go:353
+msgid "set [<remote>:][container] <key> <value>"
+msgstr ""
 
-#: lxc/copy.go:66 lxc/move.go:71
-msgid "You must use the same source and destination remote when using --target"
+#: lxc/remote.go:596
+msgid "set-default <remote>"
 msgstr ""
 
-#: lxc/main.go:72
-msgid "`lxc config profile` is deprecated, please use `lxc profile`"
+#: lxc/remote.go:634
+msgid "set-url <remote> <URL>"
 msgstr ""
 
-#: lxc/alias.go:56 lxc/alias.go:102
-#, fuzzy, c-format
-msgid "alias %s already exists"
-msgstr "entfernte Instanz %s existiert bereits"
+#: lxc/config_template.go:296
+msgid "show [<remote>:]<container> <template>"
+msgstr ""
 
-#: lxc/alias.go:68 lxc/alias.go:97
-#, fuzzy, c-format
-msgid "alias %s doesn't exist"
-msgstr "entfernte Instanz %s existiert nicht"
+#: lxc/config_device.go:580
+msgid "show [<remote>:]<container|profile>"
+msgstr ""
 
-#: lxc/remote.go:370
-msgid "can't remove the default remote"
+#: lxc/image.go:1283
+msgid "show [<remote>:]<image>"
 msgstr ""
 
-#: lxc/file.go:296
-msgid "can't supply uid/gid/mode in recursive mode"
+#: lxc/cluster.go:140
+msgid "show [<remote>:]<member>"
 msgstr ""
 
-#: lxc/remote.go:399
-msgid "default"
+#: lxc/network.go:987
+msgid "show [<remote>:]<network>"
 msgstr ""
 
-#: lxc/storage.go:856
-msgid "description"
+#: lxc/operation.go:172
+msgid "show [<remote>:]<operation>"
 msgstr ""
 
-#: lxc/init.go:315
-msgid "didn't get any affected image, container or snapshot from server"
+#: lxc/storage.go:643
+msgid "show [<remote>:]<pool>"
 msgstr ""
 
-#: lxc/image.go:594
-msgid "disabled"
+#: lxc/storage_volume.go:1164
+msgid "show [<remote>:]<pool> <volume>"
 msgstr ""
 
-#: lxc/storage.go:855
-msgid "driver"
+#: lxc/profile.go:810
+msgid "show [<remote>:]<profile>"
 msgstr ""
 
-#: lxc/image.go:596
-msgid "enabled"
+#: lxc/config.go:450 lxc/config_metadata.go:174
+msgid "show [<remote>:][container]"
 msgstr ""
 
-#: lxc/action.go:155 lxc/main.go:33 lxc/main.go:191
-#, fuzzy, c-format
-msgid "error: %v"
-msgstr "Fehler: %v\n"
+#: lxc/snapshot.go:19
+msgid "snapshot [<remote>:]<container> <snapshot name>"
+msgstr ""
 
-#: lxc/help.go:37 lxc/main.go:133
-#, fuzzy, c-format
-msgid "error: unknown command: %s"
-msgstr "Fehler: unbekannter Befehl: %s\n"
+#: lxc/storage.go:433
+msgid "space used"
+msgstr ""
 
-#: lxc/storage.go:853
-msgid "info"
+#: lxc/action.go:28
+#, fuzzy
+msgid "start [<remote>:]<container> [[<remote>:]<container>...]"
 msgstr ""
+"Ändert den Laufzustand eines Containers in %s.\n"
+"\n"
+"lxd %s <Name>\n"
 
-#: lxc/storage.go:854
-msgid "name"
+#: lxc/info.go:255
+msgid "stateful"
 msgstr ""
 
-#: lxc/image.go:210 lxc/image.go:584 lxc/image.go:589
-msgid "no"
+#: lxc/info.go:257
+msgid "stateless"
 msgstr ""
 
-#: lxc/remote.go:204
+#: lxc/action.go:89
 #, fuzzy
-msgid "ok (y/n)?"
-msgstr "OK (y/n)? "
-
-#: lxc/main.go:368 lxc/main.go:372
-#, c-format
-msgid "processing aliases failed %s\n"
+msgid "stop [<remote>:]<container> [[<remote>:]<container>...]"
 msgstr ""
+"Ändert den Laufzustand eines Containers in %s.\n"
+"\n"
+"lxd %s <Name>\n"
 
-#: lxc/file.go:588
-msgid "recursive edit doesn't make sense :("
+#: lxc/storage.go:31
+msgid "storage"
 msgstr ""
 
-#: lxc/remote.go:436
+#: lxc/info.go:251
 #, c-format
-msgid "remote %s already exists"
-msgstr "entfernte Instanz %s existiert bereits"
+msgid "taken at %s"
+msgstr ""
 
-#: lxc/remote.go:362 lxc/remote.go:428 lxc/remote.go:463 lxc/remote.go:479
-#, c-format
-msgid "remote %s doesn't exist"
-msgstr "entfernte Instanz %s existiert nicht"
+#: lxc/config_template.go:28
+msgid "template"
+msgstr ""
 
-#: lxc/remote.go:345
-#, c-format
-msgid "remote %s exists as <%s>"
-msgstr "entfernte Instanz %s existiert als <%s>"
+#: lxc/storage.go:432
+msgid "total space"
+msgstr ""
 
-#: lxc/remote.go:366 lxc/remote.go:432 lxc/remote.go:467
-#, c-format
-msgid "remote %s is static and cannot be modified"
+#: lxc/config_trust.go:28
+msgid "trust"
 msgstr ""
 
-#: lxc/storage.go:858
-msgid "space used"
+#: lxc/config_device.go:648
+msgid "unset [<remote>:]<container|profile> <device> <key>"
 msgstr ""
 
-#: lxc/info.go:251
-msgid "stateful"
+#: lxc/network.go:1049
+msgid "unset [<remote>:]<network> <key>"
 msgstr ""
 
-#: lxc/info.go:253
-msgid "stateless"
+#: lxc/storage.go:727
+msgid "unset [<remote>:]<pool> <key>"
 msgstr ""
 
-#: lxc/info.go:247
-#, c-format
-msgid "taken at %s"
+#: lxc/storage_volume.go:1239
+msgid "unset [<remote>:]<pool> <volume> <key>"
 msgstr ""
 
-#: lxc/storage.go:857
-msgid "total space"
+#: lxc/profile.go:864
+msgid "unset [<remote>:]<profile> <key>"
+msgstr ""
+
+#: lxc/config.go:558
+msgid "unset [<remote>:][container] <key>"
 msgstr ""
 
-#: lxc/storage.go:852
+#: lxc/storage.go:427
 msgid "used by"
 msgstr ""
 
-#: lxc/main.go:299
-msgid "wrong number of subcommand arguments"
-msgstr "falsche Anzahl an Parametern für Unterbefehl"
+#: lxc/storage_volume.go:32
+msgid "volume"
+msgstr ""
 
-#: lxc/delete.go:45 lxc/image.go:208 lxc/image.go:586 lxc/image.go:591
+#: lxc/delete.go:46 lxc/image.go:811 lxc/image.go:816 lxc/image.go:975
 msgid "yes"
 msgstr ""
 
+#, fuzzy
+#~ msgid "Manage container templates"
+#~ msgstr "kann nicht zum selben Container Namen kopieren"
+
+#, fuzzy
+#~ msgid "Enable debug mode"
+#~ msgstr "Aktiviert Debug Modus"
+
+#, fuzzy
+#~ msgid "Enable verbose mode"
+#~ msgstr "Aktiviert ausführliche Ausgabe"
+
+#, fuzzy
+#~ msgid "No certificate provided to add"
+#~ msgstr "Kein Zertifikat zum hinzufügen bereitgestellt"
+
+#~ msgid "No fingerprint specified."
+#~ msgstr "Kein Fingerabdruck angegeben."
+
+#, fuzzy
+#~ msgid "Path to an alternate server directory"
+#~ msgstr "Alternatives config Verzeichnis."
+
+#~ msgid "Show all commands (not just interesting ones)"
+#~ msgstr "Zeigt alle Befehle (nicht nur die interessanten)"
+
+#, fuzzy
+#~ msgid "Usage: lxc <command> [options]"
+#~ msgstr ""
+#~ "Benutzung: lxc [Unterbefehl] [Optionen]\n"
+#~ "Verfügbare Befehle:\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: lxc config <subcommand> [options]\n"
+#~ "\n"
+#~ "Change container or server configuration options.\n"
+#~ "\n"
+#~ "*Container configuration*\n"
+#~ "\n"
+#~ "lxc config get [<remote>:][container] <key>\n"
+#~ "    Get container or server configuration key.\n"
+#~ "\n"
+#~ "lxc config set [<remote>:][container] <key> <value>\n"
+#~ "    Set container or server configuration key.\n"
+#~ "\n"
+#~ "lxc config unset [<remote>:][container] <key>\n"
+#~ "    Unset container or server configuration key.\n"
+#~ "\n"
+#~ "lxc config show [<remote>:][container] [--expanded]\n"
+#~ "    Show container or server configuration.\n"
+#~ "\n"
+#~ "lxc config edit [<remote>:][container]\n"
+#~ "    Edit configuration, either by launching external editor or reading "
+#~ "STDIN.\n"
+#~ "\n"
+#~ "*Container metadata*\n"
+#~ "\n"
+#~ "lxc config metadata show [<remote>:][container]\n"
+#~ "    Show the container metadata.yaml content.\n"
+#~ "\n"
+#~ "lxc config metadata edit [<remote>:][container]\n"
+#~ "    Edit the container metadata.yaml, either by launching external editor "
+#~ "or reading STDIN.\n"
+#~ "\n"
+#~ "*Container templates*\n"
+#~ "\n"
+#~ "lxc config template list [<remote>:][container]\n"
+#~ "    List the names of template files for a container.\n"
+#~ "\n"
+#~ "lxc config template show [<remote>:][container] [template]\n"
+#~ "    Show the content of a template file for a container.\n"
+#~ "\n"
+#~ "lxc config template create [<remote>:][container] [template]\n"
+#~ "    Add an empty template file for a container.\n"
+#~ "\n"
+#~ "lxc config template edit [<remote>:][container] [template]\n"
+#~ "    Edit the content of a template file for a container, either by "
+#~ "launching external editor or reading STDIN.\n"
+#~ "\n"
+#~ "lxc config template delete [<remote>:][container] [template]\n"
+#~ "    Delete a template file for a container.\n"
+#~ "\n"
+#~ "\n"
+#~ "*Device management*\n"
+#~ "\n"
+#~ "lxc config device add [<remote>:]<container> <device> <type> "
+#~ "[key=value...]\n"
+#~ "    Add a device to a container.\n"
+#~ "\n"
+#~ "lxc config device get [<remote>:]<container> <device> <key>\n"
+#~ "    Get a device property.\n"
+#~ "\n"
+#~ "lxc config device set [<remote>:]<container> <device> <key> <value>\n"
+#~ "    Set a device property.\n"
+#~ "\n"
+#~ "lxc config device unset [<remote>:]<container> <device> <key>\n"
+#~ "    Unset a device property.\n"
+#~ "\n"
+#~ "lxc config device override [<remote>:]<container> <device> "
+#~ "[key=value...]\n"
+#~ "    Copy a profile inherited device into local container config.\n"
+#~ "\n"
+#~ "lxc config device list [<remote>:]<container>\n"
+#~ "    List devices for container.\n"
+#~ "\n"
+#~ "lxc config device show [<remote>:]<container>\n"
+#~ "    Show full device details for container.\n"
+#~ "\n"
+#~ "lxc config device remove [<remote>:]<container> <name>...\n"
+#~ "    Remove device from container.\n"
+#~ "\n"
+#~ "*Client trust store management*\n"
+#~ "\n"
+#~ "lxc config trust list [<remote>:]\n"
+#~ "    List all trusted certs.\n"
+#~ "\n"
+#~ "lxc config trust add [<remote>:] <certfile.crt>\n"
+#~ "    Add certfile.crt to trusted hosts.\n"
+#~ "\n"
+#~ "lxc config trust remove [<remote>:] [hostname|fingerprint]\n"
+#~ "    Remove the cert from trusted hosts.\n"
+#~ "\n"
+#~ "*Examples*\n"
+#~ "\n"
+#~ "cat config.yaml | lxc config edit <container>\n"
+#~ "    Update the container configuration from config.yaml.\n"
+#~ "\n"
+#~ "lxc config device add [<remote>:]container1 <device-name> disk source=/"
+#~ "share/c1 path=opt\n"
+#~ "    Will mount the host's /share/c1 onto /opt in the container.\n"
+#~ "\n"
+#~ "lxc config set [<remote>:]<container> limits.cpu 2\n"
+#~ "    Will set a CPU limit of \"2\" for the container.\n"
+#~ "\n"
+#~ "lxc config set core.https_address [::]:8443\n"
+#~ "    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
+#~ "\n"
+#~ "lxc config set core.trust_password blah\n"
+#~ "    Will set the server's trust password to blah."
+#~ msgstr ""
+#~ "Verwalte Konfiguration.\n"
+#~ "\n"
+#~ "lxc config device add <Container> <Name> <Type> [key=value]...\n"
+#~ "               Füge ein Gerät zu einem Container hinzu\n"
+#~ "lxc config device list <Container>                     Listet die Geräte "
+#~ "des Containers\n"
+#~ "lxc config device show <Container>                     Zeigt alle Geräte "
+#~ "Details für den Container\n"
+#~ "lxc config device remove <Container> <Name>            Entfernt Gerät vom "
+#~ "Container\n"
+#~ "lxc config edit <Container>                            Bearbeite "
+#~ "Container Konfiguration in externem Editor\n"
+#~ "lxc config get <Container> key                         Holt "
+#~ "Konfigurationsschlüssel\n"
+#~ "lxc config set <Container> key [value]                 Setzt Container "
+#~ "Konfigurationsschlüssel\n"
+#~ "lxc config show <Container>                            Zeigt "
+#~ "Konfiguration des Containers\n"
+#~ "lxc config trust list [remote]                         Liste alle "
+#~ "vertrauenswürdigen Zertifikate.\n"
+#~ "lxc config trust add [remote] [certfile.crt]           Füge certfile.crt "
+#~ "zu vertrauenden Instanzen hinzu.\n"
+#~ "lxc config trust remove [remote] [hostname|fingerprint]\n"
+#~ "               Löscht das Zertifikat aus der Liste der "
+#~ "vertrauenswürdigen.\n"
+#~ "\n"
+#~ "Beispiele:\n"
+#~ "Zum mounten von /share/c1 des Hosts nach /opt im Container:\n"
+#~ "\tlxc config device add container1 mntdir disk source=/share/c1 path=opt\n"
+#~ "Um einen lxc config Wert zu setzen:\n"
+#~ "\tlxc config set <container> raw.lxc 'lxc.aa_allow_incomplete = 1'\n"
+#~ "Um das Server Passwort zur authentifizierung zu setzen:\n"
+#~ "\tlxc config set core.trust_password blah\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: lxc copy [<remote>:]<source>[/<snapshot>] "
+#~ "[[<remote>:]<destination>] [--ephemeral|e] [--profile|-p <profile>...] [--"
+#~ "config|-c <key=value>...] [--container-only] [--target <node>]\n"
+#~ "\n"
+#~ "Copy containers within or in between LXD instances."
+#~ msgstr ""
+#~ "Kopiert Container innerhalb einer oder zwischen lxd Instanzen\n"
+#~ "\n"
+#~ "lxc copy <Quelle> <Ziel>\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: lxc file <subcommand> [options]\n"
+#~ "\n"
+#~ "Manage files in containers.\n"
+#~ "\n"
+#~ "lxc file pull [-r|--recursive] [<remote>:]<container>/<path> "
+#~ "[[<remote>:]<container>/<path>...] <target path>\n"
+#~ "    Pull files from containers.\n"
+#~ "\n"
+#~ "lxc file push [-r|--recursive] [-p|--create-dirs] [--uid=UID] [--gid=GID] "
+#~ "[--mode=MODE] <source path> [<source path>...] [<remote>:]<container>/"
+#~ "<path>\n"
+#~ "    Push files into containers.\n"
+#~ "\n"
+#~ "lxc file delete [<remote>:]<container>/<path> [[<remote>:]<container>/"
+#~ "<path>...]\n"
+#~ "    Delete files in containers.\n"
+#~ "\n"
+#~ "lxc file edit [<remote>:]<container>/<path>\n"
+#~ "    Edit files in containers using the default text editor.\n"
+#~ "\n"
+#~ "*Examples*\n"
+#~ "lxc file push /etc/hosts foo/etc/hosts\n"
+#~ "   To push /etc/hosts into the container \"foo\".\n"
+#~ "\n"
+#~ "lxc file pull foo/etc/hosts .\n"
+#~ "   To pull /etc/hosts from the container and write it to the current "
+#~ "directory."
+#~ msgstr ""
+#~ "Verwaltet Dateien in einem Container.\n"
+#~ "\n"
+#~ "lxc file pull <Quelle> [<Quelle>...] <Ziel>\n"
+#~ "lxc file push [--uid=UID] [--gid=GID] [--mode=MODE] <Quelle> "
+#~ "[<Quelle>...] <Ziel>\n"
+#~ "\n"
+#~ "<Quelle> bei pull und <Ziel> bei push sind jeweils von der Form "
+#~ "<Container Name>/<Pfad>\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: lxc init [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] "
+#~ "[--profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
+#~ "<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
+#~ "<node>]\n"
+#~ "\n"
+#~ "Create containers from images.\n"
+#~ "\n"
+#~ "Not specifying -p will result in the default profile.\n"
+#~ "Specifying \"-p\" with no argument will result in no profile.\n"
+#~ "\n"
+#~ "Examples:\n"
+#~ "    lxc init ubuntu:16.04 u1"
+#~ msgstr ""
+#~ "Starte Container von gegebenem Abbild.\n"
+#~ "\n"
+#~ "lxc launch <Abbild> [<Name>] [—ephemeral|-e] [—profile|-p <Profile>…]\n"
+#~ "\n"
+#~ "Startet einen Container von gegebenem Abbild und mit Namen\n"
+#~ "\n"
+#~ "Ohne den -p Parameter wird das default Profil benutzt.\n"
+#~ "Wird -p ohne Argument angegeben, wird kein Profil verwendet\n"
+#~ "\n"
+#~ "Beispiel:\n"
+#~ "lxc launch ubuntu u1\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: lxc launch [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] "
+#~ "[--profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
+#~ "<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
+#~ "<node>]\n"
+#~ "\n"
+#~ "Create and start containers from images.\n"
+#~ "\n"
+#~ "Not specifying -p will result in the default profile.\n"
+#~ "Specifying \"-p\" with no argument will result in no profile.\n"
+#~ "\n"
+#~ "Examples:\n"
+#~ "    lxc launch ubuntu:16.04 u1"
+#~ msgstr ""
+#~ "Starte Container von gegebenem Abbild.\n"
+#~ "\n"
+#~ "lxc launch <Abbild> [<Name>] [—ephemeral|-e] [—profile|-p <Profile>…]\n"
+#~ "\n"
+#~ "Startet einen Container von gegebenem Abbild und mit Namen\n"
+#~ "\n"
+#~ "Ohne den -p Parameter wird das default Profil benutzt.\n"
+#~ "Wird -p ohne Argument angegeben, wird kein Profil verwendet\n"
+#~ "\n"
+#~ "Beispiel:\n"
+#~ "lxc launch ubuntu u1\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: lxc profile <subcommand> [options]\n"
+#~ "\n"
+#~ "Manage container configuration profiles.\n"
+#~ "\n"
+#~ "*Profile configuration*\n"
+#~ "lxc profile list [<remote>:]\n"
+#~ "    List available profiles.\n"
+#~ "\n"
+#~ "lxc profile show [<remote>:]<profile>\n"
+#~ "    Show details of a profile.\n"
+#~ "\n"
+#~ "lxc profile create [<remote>:]<profile>\n"
+#~ "    Create a profile.\n"
+#~ "\n"
+#~ "lxc profile copy [<remote>:]<profile> [<remote>:]<profile>\n"
+#~ "    Copy the profile.\n"
+#~ "\n"
+#~ "lxc profile get [<remote>:]<profile> <key>\n"
+#~ "    Get profile configuration.\n"
+#~ "\n"
+#~ "lxc profile set [<remote>:]<profile> <key> <value>\n"
+#~ "    Set profile configuration.\n"
+#~ "\n"
+#~ "lxc profile unset [<remote>:]<profile> <key>\n"
+#~ "    Unset profile configuration.\n"
+#~ "\n"
+#~ "lxc profile delete [<remote>:]<profile>\n"
+#~ "    Delete a profile.\n"
+#~ "\n"
+#~ "lxc profile edit [<remote>:]<profile>\n"
+#~ "    Edit profile, either by launching external editor or reading STDIN.\n"
+#~ "\n"
+#~ "lxc profile rename [<remote>:]<profile> <new-name>\n"
+#~ "    Rename a profile.\n"
+#~ "\n"
+#~ "*Profile assignment*\n"
+#~ "lxc profile assign [<remote>:]<container> <profiles>\n"
+#~ "    Replace the current set of profiles for the container by the one "
+#~ "provided.\n"
+#~ "\n"
+#~ "lxc profile add [<remote>:]<container> <profile>\n"
+#~ "    Add a profile to a container\n"
+#~ "\n"
+#~ "lxc profile remove [<remote>:]<container> <profile>\n"
+#~ "    Remove the profile from a container\n"
+#~ "\n"
+#~ "*Device management*\n"
+#~ "lxc profile device list [<remote>:]<profile>\n"
+#~ "    List devices in the given profile.\n"
+#~ "\n"
+#~ "lxc profile device show [<remote>:]<profile>\n"
+#~ "    Show full device details in the given profile.\n"
+#~ "\n"
+#~ "lxc profile device remove [<remote>:]<profile> <name>\n"
+#~ "    Remove a device from a profile.\n"
+#~ "\n"
+#~ "lxc profile device get [<remote>:]<profile> <name> <key>\n"
+#~ "    Get a device property.\n"
+#~ "\n"
+#~ "lxc profile device set [<remote>:]<profile> <name> <key> <value>\n"
+#~ "    Set a device property.\n"
+#~ "\n"
+#~ "lxc profile device unset [<remote>:]<profile> <name> <key>\n"
+#~ "    Unset a device property.\n"
+#~ "\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.\n"
+#~ "\n"
+#~ "*Examples*\n"
+#~ "cat profile.yaml | lxc profile edit <profile>\n"
+#~ "    Update a profile using the content of profile.yaml\n"
+#~ "\n"
+#~ "lxc profile assign foo default,bar\n"
+#~ "    Set the profiles for \"foo\" to \"default\" and \"bar\".\n"
+#~ "\n"
+#~ "lxc profile assign foo default\n"
+#~ "    Reset \"foo\" to only using the \"default\" profile.\n"
+#~ "\n"
+#~ "lxc profile assign foo ''\n"
+#~ "    Remove all profile from \"foo\""
+#~ msgstr ""
+#~ "Verwalte Konfigurationsprofile.\n"
+#~ "\n"
+#~ "lxc profile list [Filter]                     Listet verfügbare Profile\n"
+#~ "lxc profile show <Profil>                     Zeigt Details zu einem "
+#~ "Profil\n"
+#~ "lxc profile create <Profil>                   Erstellt ein Profil\n"
+#~ "lxc profile edit <Profil>                     Bearbeitet das Profil in "
+#~ "externem Editor\n"
+#~ "lxc profile copy <Profil> <remote>            Kopiert das Profil zur "
+#~ "entfernten Instanz\n"
+#~ "lxc profile set <Profil> <key> <value>        Setzt eine "
+#~ "Profilkonfiguration\n"
+#~ "lxc profile delete <Profil>                   Löscht ein Profil\n"
+#~ "lxc profile apply <Container> <Profil>\n"
+#~ "    Wendet eine durch Kommata getrennte Liste von Profilen,\n"
+#~ "    in gegeben Reihenfolge, auf einen Container an.\n"
+#~ "    Alle angegeben, und nur diese, werden auf den Container angewandt.\n"
+#~ "    Beispiel: lxc profile apply foo default,bar # Wende default und bar "
+#~ "an\n"
+#~ "             lxc profile apply foo default # Nur default ist aktiv\n"
+#~ "             lxc profile apply '' # keine Profile werden angewandt\n"
+#~ "             lxc profile apply bar,default # Wende nun default als "
+#~ "zweites an\n"
+#~ "\n"
+#~ "Geräte:\n"
+#~ "lxc profile device list <Profil>              Listet Geräte im Profil\n"
+#~ "lxc profile device show <Profil>              Zeigt alle Geräte Details "
+#~ "im gegebenen Profil.\n"
+#~ "lxc profile device remove <Profil> <name>     Entfernt ein Gerät von dem "
+#~ "Profil.\n"
+#~ "lxc profile device add <Profil name> <Gerätename> <Gerätetype> "
+#~ "[key=value]...\n"
+#~ "    Fügt ein Gerät, wie zum Beispiel eine Festplatte oder Netzwerkkarte, "
+#~ "den Containern hinzu,\n"
+#~ "    die dieses Profil verwenden.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: lxc remote <subcommand> [options]\n"
+#~ "\n"
+#~ "Manage the list of remote LXD servers.\n"
+#~ "\n"
+#~ "lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--"
+#~ "password=PASSWORD] [--public] [--protocol=PROTOCOL] [--auth-"
+#~ "type=AUTH_TYPE]\n"
+#~ "    Add the remote <remote> at <url>.\n"
+#~ "\n"
+#~ "lxc remote remove <remote>\n"
+#~ "    Remove the remote <remote>.\n"
+#~ "\n"
+#~ "lxc remote list\n"
+#~ "    List all remotes.\n"
+#~ "\n"
+#~ "lxc remote rename <old name> <new name>\n"
+#~ "    Rename remote <old name> to <new name>.\n"
+#~ "\n"
+#~ "lxc remote set-url <remote> <url>\n"
+#~ "    Update <remote>'s url to <url>.\n"
+#~ "\n"
+#~ "lxc remote set-default <remote>\n"
+#~ "    Set the default remote.\n"
+#~ "\n"
+#~ "lxc remote get-default\n"
+#~ "    Print the default remote."
+#~ msgstr ""
+#~ "Verwalte entfernte LXD Server.\n"
+#~ "\n"
+#~ "lxc remote add <Name> <url> [--accept-certificate] [--password=PASSWORT]  "
+#~ "Fügt die Instanz <Name> auf <URL> hinzu.\n"
+#~ "lxc remote remove <Name>                                                  "
+#~ "Entfernt die Instanz <Name>.\n"
+#~ "lxc remote list                                                           "
+#~ "Listet alle entfernte Instanzen.\n"
+#~ "lxc remote rename <alt> <neu>                                             "
+#~ "Benennt Instanz von <alt> nach <neu> um.\n"
+#~ "lxc remote set-url <Name> <url>                                           "
+#~ "Setzt die URL von <Name> auf <url>.\n"
+#~ "lxc remote set-default <Name>                                             "
+#~ "Setzt die Standard Instanz.\n"
+#~ "lxc remote get-default                                                    "
+#~ "Gibt die Standard Instanz aus.\n"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: lxc version\n"
+#~ "\n"
+#~ "Print the version number of this client tool."
+#~ msgstr ""
+#~ "Zeigt die Versionsnummer von LXD.\n"
+#~ "\n"
+#~ "lxc version\n"
+
+#, fuzzy
+#~ msgid "error: unknown command: %s"
+#~ msgstr "Fehler: unbekannter Befehl: %s\n"
+
+#~ msgid "wrong number of subcommand arguments"
+#~ msgstr "falsche Anzahl an Parametern für Unterbefehl"
+
 #, fuzzy
 #~ msgid "'/' not allowed in snapshot name"
 #~ msgstr "'/' ist kein gültiges Zeichen im Namen eines Sicherungspunktes\n"
@@ -2982,9 +4123,6 @@ msgstr ""
 #~ msgid "api version mismatch: mine: %q, daemon: %q"
 #~ msgstr "API Versionskonflikt: meine: %q, Hintergrund Dienst: %q"
 
-#~ msgid "bad profile url %s"
-#~ msgstr "Fehlerhafte Profil URL %s"
-
 #~ msgid "bad version in profile url"
 #~ msgstr "Falsche Version in Profil URL"
 
@@ -3018,9 +4156,6 @@ msgstr ""
 #~ msgstr ""
 #~ "Informationen über entfernte Instanzen wird noch nicht unterstützt\n"
 
-#~ msgid "Unknown image command %s"
-#~ msgstr "Unbekannter Befehl %s für Abbild"
-
 #~ msgid "Unknown remote subcommand %s"
 #~ msgstr "Unbekannter Unterbefehl %s für entfernte Instanz"
 
@@ -3031,9 +4166,6 @@ msgstr ""
 #~ msgid "YAML parse error %v"
 #~ msgstr "YAML Analyse Fehler %v\n"
 
-#~ msgid "invalid argument %s"
-#~ msgstr "ungültiges Argument %s"
-
 #, fuzzy
 #~ msgid "Use an alternative config path."
 #~ msgstr "Alternatives config Verzeichnis."
diff --git a/po/el.po b/po/el.po
index d848d577f..2ea283252 100644
--- a/po/el.po
+++ b/po/el.po
@@ -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: 2018-02-27 22:14-0500\n"
+"POT-Creation-Date: 2018-03-29 01:45-0400\n"
 "PO-Revision-Date: 2017-02-14 08:00+0000\n"
 "Last-Translator: Simos Xenitellis <simos.65 at gmail.com>\n"
 "Language-Team: Greek <https://hosted.weblate.org/projects/linux-containers/"
@@ -19,7 +19,7 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
 "X-Generator: Weblate 2.12-dev\n"
 
-#: lxc/storage.go:36
+#: lxc/storage.go:220
 msgid ""
 "### This is a yaml representation of a storage pool.\n"
 "### Any line starting with a '#' will be ignored.\n"
@@ -36,7 +36,7 @@ msgid ""
 "###   zfs.pool_name: default"
 msgstr ""
 
-#: lxc/storage.go:53
+#: lxc/storage_volume.go:737
 msgid ""
 "### This is a yaml representation of a storage volume.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -50,7 +50,7 @@ msgid ""
 "###   size: \"61203283968\""
 msgstr ""
 
-#: lxc/config.go:40
+#: lxc/config.go:100
 msgid ""
 "### This is a yaml representation of the configuration.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -71,7 +71,7 @@ msgid ""
 "### Note that the name is shown but cannot be changed"
 msgstr ""
 
-#: lxc/config.go:61
+#: lxc/config_metadata.go:63
 msgid ""
 "### This is a yaml representation of the container metadata.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -95,7 +95,7 @@ msgid ""
 "###     properties: {}"
 msgstr ""
 
-#: lxc/image.go:63
+#: lxc/image.go:327
 msgid ""
 "### This is a yaml representation of the image properties.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -105,7 +105,7 @@ msgid ""
 "###  description: My custom image"
 msgstr ""
 
-#: lxc/network.go:32
+#: lxc/network.go:546
 msgid ""
 "### This is a yaml representation of the network.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -125,7 +125,7 @@ msgid ""
 "### Note that only the configuration can be changed."
 msgstr ""
 
-#: lxc/profile.go:30
+#: lxc/profile.go:408
 msgid ""
 "### This is a yaml representation of the profile.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -146,12 +146,12 @@ msgid ""
 "### Note that the name is shown but cannot be changed"
 msgstr ""
 
-#: lxc/image.go:187
+#: lxc/image.go:954
 #, c-format
 msgid "%s (%d more)"
 msgstr ""
 
-#: lxc/file.go:205
+#: lxc/file.go:677
 #, c-format
 msgid "%s is not a directory"
 msgstr ""
@@ -161,1786 +161,2677 @@ msgstr ""
 msgid "%v (interrupt two more times to force)"
 msgstr ""
 
-#: lxc/file.go:142
+#: lxc/file.go:614
 #, c-format
 msgid "'%s' isn't a supported file type."
 msgstr ""
 
-#: lxc/profile.go:337
+#: lxc/profile.go:222
 msgid "(none)"
 msgstr ""
 
-#: lxc/alias.go:84 lxc/image.go:231 lxc/image.go:1136
+#: lxc/alias.go:127 lxc/image.go:921 lxc/image_alias.go:228
 msgid "ALIAS"
 msgstr ""
 
-#: lxc/image.go:232
+#: lxc/image.go:922
 msgid "ALIASES"
 msgstr ""
 
-#: lxc/image.go:236
+#: lxc/image.go:926
 msgid "ARCH"
 msgstr ""
 
-#: lxc/list.go:467
+#: lxc/list.go:464
 msgid "ARCHITECTURE"
 msgstr ""
 
-#: lxc/remote.go:412
+#: lxc/remote.go:466
 msgid "AUTH TYPE"
 msgstr ""
 
-#: lxc/remote.go:68
+#: lxc/remote.go:88
 msgid "Accept certificate"
 msgstr ""
 
-#: lxc/query.go:38
+#: lxc/query.go:37
 msgid "Action (defaults to GET)"
 msgstr ""
 
-#: lxc/remote.go:276
+#: lxc/config_device.go:75 lxc/config_device.go:76
+msgid "Add devices to containers or profiles"
+msgstr ""
+
+#: lxc/alias.go:54 lxc/alias.go:55
+msgid "Add new aliases"
+msgstr ""
+
+#: lxc/remote.go:83 lxc/remote.go:84
+msgid "Add new remote servers"
+msgstr ""
+
+#: lxc/config_trust.go:58 lxc/config_trust.go:59
+msgid "Add new trusted clients"
+msgstr ""
+
+#: lxc/profile.go:101 lxc/profile.go:102
+msgid "Add profiles to containers"
+msgstr ""
+
+#: lxc/remote.go:325
 #, c-format
 msgid "Admin password for %s: "
 msgstr ""
 
-#: lxc/image.go:623
+#: lxc/alias.go:78 lxc/alias.go:176
+#, c-format
+msgid "Alias %s already exists"
+msgstr ""
+
+#: lxc/alias.go:170 lxc/alias.go:221
+#, c-format
+msgid "Alias %s doesn't exist"
+msgstr ""
+
+#: lxc/image_alias.go:83 lxc/image_alias.go:130 lxc/image_alias.go:274
+msgid "Alias name missing"
+msgstr ""
+
+#: lxc/image.go:854
 msgid "Aliases:"
 msgstr ""
 
-#: lxc/image.go:601 lxc/info.go:125
+#: lxc/image.go:826 lxc/info.go:129
 #, c-format
 msgid "Architecture: %s"
 msgstr ""
 
-#: lxc/remote.go:259
+#: lxc/profile.go:162 lxc/profile.go:163
+msgid "Assign sets of profiles to containers"
+msgstr ""
+
+#: lxc/network.go:103
+msgid "Attach network interfaces to containers"
+msgstr ""
+
+#: lxc/network.go:176 lxc/network.go:177
+msgid "Attach network interfaces to profiles"
+msgstr ""
+
+#: lxc/network.go:104
+msgid "Attach new network interfaces to containers"
+msgstr ""
+
+#: lxc/storage_volume.go:121 lxc/storage_volume.go:122
+msgid "Attach new storage volumes to containers"
+msgstr ""
+
+#: lxc/storage_volume.go:200 lxc/storage_volume.go:201
+msgid "Attach new storage volumes to profiles"
+msgstr ""
+
+#: lxc/console.go:31
+msgid "Attach to container consoles"
+msgstr ""
+
+#: lxc/console.go:32
+msgid ""
+"Attach to container consoles\n"
+"\n"
+"This command allows you to interact with the boot console of a container\n"
+"as well as retrieve past log entries from it."
+msgstr ""
+
+#: lxc/remote.go:308
 #, c-format
 msgid "Authentication type '%s' not supported by server"
 msgstr ""
 
-#: lxc/image.go:632
+#: lxc/image.go:864
 #, c-format
 msgid "Auto update: %s"
 msgstr ""
 
-#: lxc/image.go:707
+#: lxc/network.go:283
+#, c-format
+msgid "Bad key/value pair: %s"
+msgstr ""
+
+#: lxc/copy.go:110 lxc/init.go:118 lxc/publish.go:175 lxc/storage.go:123
+#: lxc/storage_volume.go:468
+#, c-format
+msgid "Bad key=value pair: %s"
+msgstr ""
+
+#: lxc/image.go:677
 #, c-format
 msgid "Bad property: %s"
 msgstr ""
 
-#: lxc/action.go:133
+#: lxc/action.go:212
 msgid "Both --all and container name given"
 msgstr ""
 
-#: lxc/info.go:218
+#: lxc/info.go:222
 msgid "Bytes received"
 msgstr ""
 
-#: lxc/info.go:219
+#: lxc/info.go:223
 msgid "Bytes sent"
 msgstr ""
 
-#: lxc/operation.go:156
+#: lxc/operation.go:155
 msgid "CANCELABLE"
 msgstr ""
 
-#: lxc/config.go:403
+#: lxc/config_trust.go:175
 msgid "COMMON NAME"
 msgstr ""
 
-#: lxc/info.go:182
+#: lxc/info.go:186
 msgid "CPU usage (in seconds)"
 msgstr ""
 
-#: lxc/info.go:186
+#: lxc/info.go:190
 #, fuzzy
 msgid "CPU usage:"
 msgstr "  Χρήση CPU:"
 
-#: lxc/operation.go:157
+#: lxc/operation.go:156
 msgid "CREATED"
 msgstr ""
 
-#: lxc/list.go:468
+#: lxc/list.go:465
 msgid "CREATED AT"
 msgstr ""
 
-#: lxc/image.go:631
+#: lxc/image.go:863
 #, c-format
 msgid "Cached: %s"
 msgstr ""
 
-#: lxc/file.go:501
+#: lxc/image.go:175
+msgid "Can't provide a name for the target image"
+msgstr ""
+
+#: lxc/file.go:261
 msgid "Can't pull a directory without --recursive"
 msgstr ""
 
-#: lxc/config.go:210 lxc/network.go:619
+#: lxc/config.go:400 lxc/network.go:969
 #, c-format
 msgid "Can't read from stdin: %s"
 msgstr ""
 
-#: lxc/rename.go:41
+#: lxc/remote.go:577
+msgid "Can't remove the default remote"
+msgstr ""
+
+#: lxc/list.go:481
+msgid "Can't specify --fast with --columns"
+msgstr ""
+
+#: lxc/rename.go:48
 msgid "Can't specify a different remote for rename."
 msgstr ""
 
-#: lxc/config.go:223
-#, c-format
-msgid "Can't unset key '%s', it's not currently set"
+#: lxc/list.go:493
+msgid "Can't specify column L when not clustered"
 msgstr ""
 
-#: lxc/config.go:265 lxc/config.go:291
-#, c-format
-msgid "Can't unset key '%s', it's not currently set."
+#: lxc/file.go:399
+msgid "Can't supply uid/gid/mode in recursive mode"
 msgstr ""
 
-#: lxc/profile.go:546 lxc/storage.go:696
-msgid "Cannot provide container name to list"
+#: lxc/config.go:413
+#, c-format
+msgid "Can't unset key '%s', it's not currently set"
 msgstr ""
 
-#: lxc/remote.go:203
+#: lxc/remote.go:252
 #, c-format
 msgid "Certificate fingerprint: %s"
 msgstr ""
 
-#: lxc/remote.go:315
+#: lxc/remote.go:364
 msgid "Client certificate stored at server: "
 msgstr ""
 
-#: lxc/image.go:175 lxc/image.go:176 lxc/list.go:134 lxc/list.go:135
+#: lxc/network.go:253 lxc/network.go:663 lxc/network.go:923 lxc/network.go:992
+#: lxc/network.go:1054 lxc/storage.go:92 lxc/storage.go:331 lxc/storage.go:576
+#: lxc/storage.go:649 lxc/storage.go:732 lxc/storage_volume.go:287
+#: lxc/storage_volume.go:429 lxc/storage_volume.go:504
+#: lxc/storage_volume.go:730 lxc/storage_volume.go:856
+#: lxc/storage_volume.go:998 lxc/storage_volume.go:1028
+#: lxc/storage_volume.go:1092 lxc/storage_volume.go:1175
+#: lxc/storage_volume.go:1244
+msgid "Cluster member name"
+msgstr ""
+
+#: lxc/image.go:912 lxc/list.go:112
 msgid "Columns"
 msgstr ""
 
-#: lxc/help.go:53
-msgid "Commands:"
+#: lxc/main.go:44
+msgid "Command line client for LXD"
+msgstr ""
+
+#: lxc/main.go:45
+msgid ""
+"Command line client for LXD\n"
+"\n"
+"All of LXD's features can be driven through the various commands below.\n"
+"For help with any of those, simply call them with --help."
 msgstr ""
 
-#: lxc/copy.go:37 lxc/copy.go:38 lxc/init.go:139 lxc/init.go:140
+#: lxc/copy.go:39 lxc/init.go:42
 msgid "Config key/value to apply to the new container"
 msgstr ""
 
-#: lxc/config.go:821 lxc/config.go:886 lxc/config.go:1396 lxc/image.go:1191
-#: lxc/network.go:445 lxc/profile.go:275 lxc/storage.go:647 lxc/storage.go:1209
+#: lxc/config.go:195 lxc/config.go:259 lxc/config_metadata.go:144
+#: lxc/image.go:405 lxc/network.go:631 lxc/profile.go:490 lxc/storage.go:298
+#: lxc/storage_volume.go:822
 #, c-format
 msgid "Config parsing error: %s"
 msgstr ""
 
-#: lxc/main.go:40
-msgid "Connection refused; is LXD running?"
-msgstr ""
-
-#: lxc/console.go:132
+#: lxc/console.go:141
 msgid "Console log:"
 msgstr ""
 
-#: lxc/publish.go:71
+#: lxc/publish.go:79
 msgid "Container name is mandatory"
 msgstr ""
 
-#: lxc/copy.go:243 lxc/init.go:321
+#: lxc/copy.go:260 lxc/init.go:229
 #, c-format
 msgid "Container name is: %s"
 msgstr ""
 
-#: lxc/publish.go:250
+#: lxc/publish.go:259
 #, c-format
 msgid "Container published with fingerprint: %s"
 msgstr ""
 
-#: lxc/copy.go:45 lxc/move.go:44
+#: lxc/copy.go:44 lxc/move.go:46
 msgid "Copy a stateful container stateless"
 msgstr ""
 
-#: lxc/image.go:178
+#: lxc/image.go:138
 msgid "Copy aliases from source"
 msgstr ""
 
-#: lxc/copy.go:44
+#: lxc/copy.go:34 lxc/copy.go:35
+msgid "Copy containers within or in between LXD instances"
+msgstr ""
+
+#: lxc/image.go:130
+msgid "Copy images between servers"
+msgstr ""
+
+#: lxc/image.go:131
+msgid ""
+"Copy images between servers\n"
+"\n"
+"The auto-update flag instructs the server to keep this image up to date.\n"
+"It requires the source to be an alias and for it to be public."
+msgstr ""
+
+#: lxc/config_device.go:317 lxc/config_device.go:318
+msgid "Copy profile inherited devices and override configuration keys"
+msgstr ""
+
+#: lxc/profile.go:240 lxc/profile.go:241
+msgid "Copy profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:282 lxc/storage_volume.go:283
+msgid "Copy storage volumes"
+msgstr ""
+
+#: lxc/copy.go:43
 msgid "Copy the container without its snapshots"
 msgstr ""
 
-#: lxc/image.go:449
+#: lxc/image.go:217
 #, c-format
 msgid "Copying the image: %s"
 msgstr ""
 
-#: lxc/storage.go:1134
+#: lxc/storage_volume.go:387
 #, c-format
 msgid "Copying the storage volume: %s"
 msgstr ""
 
-#: lxc/remote.go:218
+#: lxc/remote.go:267
 msgid "Could not create server cert dir"
 msgstr ""
 
-#: lxc/file.go:70 lxc/file.go:71
+#: lxc/image_alias.go:58 lxc/image_alias.go:59
+msgid "Create aliases for existing images"
+msgstr ""
+
+#: lxc/launch.go:21 lxc/launch.go:22
+msgid "Create and start containers from images"
+msgstr ""
+
+#: lxc/file.go:191 lxc/file.go:331
 msgid "Create any directories necessary"
 msgstr ""
 
-#: lxc/image.go:606 lxc/info.go:127
+#: lxc/snapshot.go:20
+msgid "Create container snapshots"
+msgstr ""
+
+#: lxc/snapshot.go:21
+msgid ""
+"Create container snapshots\n"
+"\n"
+"When --stateful is used, LXD attempts to checkpoint the container's\n"
+"running state, including process memory state, TCP connections, ..."
+msgstr ""
+
+#: lxc/init.go:34 lxc/init.go:35
+msgid "Create containers from images"
+msgstr ""
+
+#: lxc/config_template.go:66 lxc/config_template.go:67
+msgid "Create new container file templates"
+msgstr ""
+
+#: lxc/storage_volume.go:425 lxc/storage_volume.go:426
+msgid "Create new custom storage volumes"
+msgstr ""
+
+#: lxc/network.go:249 lxc/network.go:250
+msgid "Create new networks"
+msgstr ""
+
+#: lxc/profile.go:296 lxc/profile.go:297
+msgid "Create profiles"
+msgstr ""
+
+#: lxc/storage.go:88 lxc/storage.go:89
+msgid "Create storage pools"
+msgstr ""
+
+#: lxc/image.go:832 lxc/info.go:131
 #, c-format
 msgid "Created: %s"
 msgstr ""
 
-#: lxc/init.go:200
+#: lxc/init.go:98
 #, c-format
 msgid "Creating %s"
 msgstr ""
 
-#: lxc/init.go:198
+#: lxc/init.go:96
 msgid "Creating the container"
 msgstr ""
 
-#: lxc/cluster.go:185
+#: lxc/cluster.go:121
 msgid "DATABASE"
 msgstr ""
 
-#: lxc/image.go:235 lxc/image.go:1138 lxc/list.go:469 lxc/network.go:579
-#: lxc/operation.go:154 lxc/storage.go:732 lxc/storage.go:937
+#: lxc/image.go:925 lxc/image_alias.go:230 lxc/list.go:466 lxc/network.go:784
+#: lxc/operation.go:153 lxc/storage.go:545 lxc/storage_volume.go:967
 msgid "DESCRIPTION"
 msgstr ""
 
-#: lxc/storage.go:733
+#: lxc/storage.go:546
 msgid "DRIVER"
 msgstr ""
 
-#: lxc/publish.go:39
+#: lxc/publish.go:41
 msgid "Define a compression algorithm: for image or none"
 msgstr ""
 
-#: lxc/config.go:977
+#: lxc/operation.go:53 lxc/operation.go:54
+msgid "Delete a background operation (will attempt to cancel)"
+msgstr ""
+
+#: lxc/config_template.go:109 lxc/config_template.go:110
+msgid "Delete container file templates"
+msgstr ""
+
+#: lxc/delete.go:29 lxc/delete.go:30
+msgid "Delete containers and snapshots"
+msgstr ""
+
+#: lxc/file.go:72 lxc/file.go:73
+msgid "Delete files in containers"
+msgstr ""
+
+#: lxc/image_alias.go:105 lxc/image_alias.go:106
+msgid "Delete image aliases"
+msgstr ""
+
+#: lxc/image.go:260 lxc/image.go:261
+msgid "Delete images"
+msgstr ""
+
+#: lxc/network.go:319 lxc/network.go:320
+msgid "Delete networks"
+msgstr ""
+
+#: lxc/profile.go:347 lxc/profile.go:348
+msgid "Delete profiles"
+msgstr ""
+
+#: lxc/storage.go:160 lxc/storage.go:161
+msgid "Delete storage pools"
+msgstr ""
+
+#: lxc/storage_volume.go:500 lxc/storage_volume.go:501
+msgid "Delete storage volumes"
+msgstr ""
+
+#: lxc/action.go:30 lxc/action.go:49 lxc/action.go:69 lxc/action.go:91
+#: lxc/alias.go:23 lxc/alias.go:55 lxc/alias.go:99 lxc/alias.go:147
+#: lxc/alias.go:198 lxc/cluster.go:26 lxc/cluster.go:59 lxc/cluster.go:142
+#: lxc/cluster.go:192 lxc/cluster.go:238 lxc/config.go:29 lxc/config.go:88
+#: lxc/config.go:289 lxc/config.go:355 lxc/config.go:452 lxc/config.go:560
+#: lxc/config_device.go:24 lxc/config_device.go:76 lxc/config_device.go:179
+#: lxc/config_device.go:252 lxc/config_device.go:318 lxc/config_device.go:405
+#: lxc/config_device.go:493 lxc/config_device.go:582 lxc/config_device.go:650
+#: lxc/config_metadata.go:29 lxc/config_metadata.go:54
+#: lxc/config_metadata.go:176 lxc/config_template.go:30
+#: lxc/config_template.go:67 lxc/config_template.go:110
+#: lxc/config_template.go:152 lxc/config_template.go:236
+#: lxc/config_template.go:298 lxc/config_trust.go:30 lxc/config_trust.go:59
+#: lxc/config_trust.go:115 lxc/config_trust.go:197 lxc/console.go:32
+#: lxc/copy.go:35 lxc/delete.go:30 lxc/exec.go:39 lxc/file.go:40 lxc/file.go:73
+#: lxc/file.go:122 lxc/file.go:185 lxc/file.go:324 lxc/image.go:42
+#: lxc/image.go:131 lxc/image.go:261 lxc/image.go:312 lxc/image.go:435
+#: lxc/image.go:571 lxc/image.go:776 lxc/image.go:890 lxc/image.go:1212
+#: lxc/image.go:1285 lxc/image_alias.go:26 lxc/image_alias.go:59
+#: lxc/image_alias.go:106 lxc/image_alias.go:149 lxc/image_alias.go:250
+#: lxc/info.go:29 lxc/init.go:35 lxc/launch.go:22 lxc/list.go:48 lxc/main.go:45
+#: lxc/monitor.go:31 lxc/move.go:31 lxc/network.go:32 lxc/network.go:104
+#: lxc/network.go:177 lxc/network.go:250 lxc/network.go:320 lxc/network.go:367
+#: lxc/network.go:452 lxc/network.go:537 lxc/network.go:660 lxc/network.go:719
+#: lxc/network.go:808 lxc/network.go:873 lxc/network.go:920 lxc/network.go:989
+#: lxc/network.go:1051 lxc/operation.go:25 lxc/operation.go:54
+#: lxc/operation.go:98 lxc/operation.go:174 lxc/profile.go:30
+#: lxc/profile.go:102 lxc/profile.go:163 lxc/profile.go:241 lxc/profile.go:297
+#: lxc/profile.go:348 lxc/profile.go:396 lxc/profile.go:520 lxc/profile.go:568
+#: lxc/profile.go:632 lxc/profile.go:705 lxc/profile.go:753 lxc/profile.go:812
+#: lxc/profile.go:866 lxc/publish.go:34 lxc/query.go:27 lxc/remote.go:34
+#: lxc/remote.go:84 lxc/remote.go:380 lxc/remote.go:414 lxc/remote.go:487
+#: lxc/remote.go:549 lxc/remote.go:598 lxc/remote.go:636 lxc/rename.go:20
+#: lxc/restore.go:24 lxc/snapshot.go:21 lxc/storage.go:33 lxc/storage.go:89
+#: lxc/storage.go:161 lxc/storage.go:208 lxc/storage.go:328 lxc/storage.go:383
+#: lxc/storage.go:491 lxc/storage.go:573 lxc/storage.go:645 lxc/storage.go:729
+#: lxc/storage_volume.go:34 lxc/storage_volume.go:122 lxc/storage_volume.go:201
+#: lxc/storage_volume.go:283 lxc/storage_volume.go:426
+#: lxc/storage_volume.go:501 lxc/storage_volume.go:561
+#: lxc/storage_volume.go:643 lxc/storage_volume.go:724
+#: lxc/storage_volume.go:853 lxc/storage_volume.go:918
+#: lxc/storage_volume.go:994 lxc/storage_volume.go:1025
+#: lxc/storage_volume.go:1089 lxc/storage_volume.go:1166
+#: lxc/storage_volume.go:1241
+msgid "Description"
+msgstr ""
+
+#: lxc/network.go:366 lxc/network.go:367
+msgid "Detach network interfaces from containers"
+msgstr ""
+
+#: lxc/network.go:451 lxc/network.go:452
+msgid "Detach network interfaces from profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:560 lxc/storage_volume.go:561
+msgid "Detach storage volumes from containers"
+msgstr ""
+
+#: lxc/storage_volume.go:642 lxc/storage_volume.go:643
+msgid "Detach storage volumes from profiles"
+msgstr ""
+
+#: lxc/config_device.go:163
 #, c-format
 msgid "Device %s added to %s"
 msgstr ""
 
-#: lxc/config.go:1272
+#: lxc/config_device.go:387
 #, c-format
 msgid "Device %s overridden for %s"
 msgstr ""
 
-#: lxc/config.go:1213
+#: lxc/config_device.go:476
 #, c-format
 msgid "Device %s removed from %s"
 msgstr ""
 
-#: lxc/utils.go:192 lxc/utils.go:216
+#: lxc/utils.go:133 lxc/utils.go:157
 #, c-format
 msgid "Device already exists: %s"
 msgstr ""
 
-#: lxc/image.go:1290
+#: lxc/image.go:586
 msgid "Directory import is not available on this platform"
 msgstr ""
 
-#: lxc/exec.go:71
+#: lxc/exec.go:55
 msgid "Disable pseudo-terminal allocation"
 msgstr ""
 
-#: lxc/exec.go:72
+#: lxc/exec.go:56
 msgid "Disable stdin (reads from /dev/null)"
 msgstr ""
 
-#: lxc/info.go:175
+#: lxc/info.go:179
 #, fuzzy
 msgid "Disk usage:"
 msgstr "  Χρήση CPU:"
 
-#: lxc/list.go:638
+#: lxc/list.go:635
 msgid "EPHEMERAL"
 msgstr ""
 
-#: lxc/config.go:405
+#: lxc/config_trust.go:177
 msgid "EXPIRY DATE"
 msgstr ""
 
-#: lxc/main.go:52
-msgid "Enable debug mode"
+#: lxc/config_template.go:151 lxc/config_template.go:152
+msgid "Edit container file templates"
 msgstr ""
 
-#: lxc/main.go:51
-msgid "Enable verbose mode"
+#: lxc/config_metadata.go:53 lxc/config_metadata.go:54
+msgid "Edit container metadata files"
 msgstr ""
 
-#: lxc/exec.go:68
-msgid "Environment variable to set (e.g. HOME=/home/foo)"
+#: lxc/config.go:87 lxc/config.go:88
+msgid "Edit container or server configurations as YAML"
+msgstr ""
+
+#: lxc/file.go:121 lxc/file.go:122
+msgid "Edit files in containers"
+msgstr ""
+
+#: lxc/image.go:311 lxc/image.go:312
+msgid "Edit image properties"
+msgstr ""
+
+#: lxc/network.go:536 lxc/network.go:537
+msgid "Edit network configurations as YAML"
+msgstr ""
+
+#: lxc/profile.go:395 lxc/profile.go:396
+msgid "Edit profile configurations as YAML"
+msgstr ""
+
+#: lxc/storage.go:207 lxc/storage.go:208
+msgid "Edit storage pool configurations as YAML"
+msgstr ""
+
+#: lxc/storage_volume.go:723 lxc/storage_volume.go:724
+msgid "Edit storage volume configurations as YAML"
+msgstr ""
+
+#: lxc/list.go:504
+#, c-format
+msgid "Empty column entry (redundant, leading or trailing command) in '%s'"
 msgstr ""
 
-#: lxc/help.go:77
-msgid "Environment:"
+#: lxc/exec.go:52
+msgid "Environment variable to set (e.g. HOME=/home/foo)"
 msgstr ""
 
-#: lxc/copy.go:41 lxc/copy.go:42 lxc/init.go:143 lxc/init.go:144
+#: lxc/copy.go:41 lxc/init.go:44
 msgid "Ephemeral container"
 msgstr ""
 
-#: lxc/config.go:1446
+#: lxc/config_template.go:204
 #, c-format
 msgid "Error updating template file: %s"
 msgstr ""
 
-#: lxc/monitor.go:69
+#: lxc/monitor.go:48
 msgid "Event type to listen for"
 msgstr ""
 
-#: lxc/image.go:610
+#: lxc/exec.go:38
+msgid "Execute commands in containers"
+msgstr ""
+
+#: lxc/exec.go:39
+msgid ""
+"Execute commands in containers\n"
+"\n"
+"The command is executed directly using exec, so there is no shell and\n"
+"shell patterns (variables, file redirects, ...) won't be understood.\n"
+"If you need a shell environment you need to execute the shell\n"
+"executable, passing the shell commands as arguments, for example:\n"
+"\n"
+"  lxc exec <container> -- sh -c \"cd /tmp && pwd\"\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:838
 #, c-format
 msgid "Expires: %s"
 msgstr ""
 
-#: lxc/image.go:612
+#: lxc/image.go:840
 msgid "Expires: never"
 msgstr ""
 
-#: lxc/image.go:922
+#: lxc/image.go:434
+msgid "Export and download images"
+msgstr ""
+
+#: lxc/image.go:435
+msgid ""
+"Export and download images\n"
+"\n"
+"The output target is optional and defaults to the working directory."
+msgstr ""
+
+#: lxc/image.go:494
 #, c-format
 msgid "Exporting the image: %s"
 msgstr ""
 
-#: lxc/config.go:761
+#: lxc/config_template.go:279
 msgid "FILENAME"
 msgstr ""
 
-#: lxc/config.go:402 lxc/image.go:233 lxc/image.go:1137
+#: lxc/config_trust.go:174 lxc/image.go:923 lxc/image_alias.go:229
 msgid "FINGERPRINT"
 msgstr ""
 
-#: lxc/utils.go:261
+#: lxc/utils.go:202
 #, c-format
 msgid "Failed to create alias %s"
 msgstr ""
 
-#: lxc/manpage.go:62
-#, c-format
-msgid "Failed to generate 'lxc.%s.1': %v"
-msgstr ""
-
-#: lxc/manpage.go:55
-#, c-format
-msgid "Failed to generate 'lxc.1': %v"
-msgstr ""
-
-#: lxc/copy.go:238
+#: lxc/copy.go:255
 msgid "Failed to get the new container name"
 msgstr ""
 
-#: lxc/utils.go:251
+#: lxc/utils.go:192
 #, c-format
 msgid "Failed to remove alias %s"
 msgstr ""
 
-#: lxc/file.go:137
+#: lxc/file.go:609
 #, c-format
 msgid "Failed to walk path for %s: %s"
 msgstr ""
 
-#: lxc/list.go:137
+#: lxc/list.go:114
 msgid "Fast mode (same as --columns=nsacPt)"
 msgstr ""
 
-#: lxc/network.go:536 lxc/operation.go:121
+#: lxc/network.go:749 lxc/operation.go:126
 msgid "Filtering isn't supported yet"
 msgstr ""
 
-#: lxc/image.go:599
+#: lxc/image.go:824
 #, c-format
 msgid "Fingerprint: %s"
 msgstr ""
 
-#: lxc/exec.go:70
+#: lxc/exec.go:54
 msgid "Force pseudo-terminal allocation"
 msgstr ""
 
-#: lxc/cluster.go:42
-msgid "Force removing a node, even if degraded"
+#: lxc/cluster.go:242
+msgid "Force removing a member, even if degraded"
 msgstr ""
 
-#: lxc/action.go:47 lxc/action.go:48
+#: lxc/action.go:121
 msgid "Force the container to shutdown"
 msgstr ""
 
-#: lxc/delete.go:34 lxc/delete.go:35
+#: lxc/delete.go:34
 msgid "Force the removal of running containers"
 msgstr ""
 
-#: lxc/main.go:53
+#: lxc/main.go:56
 msgid "Force using the local unix socket"
 msgstr ""
 
-#: lxc/image.go:181 lxc/list.go:136
+#: lxc/image.go:913 lxc/list.go:113
 msgid "Format (csv|json|table|yaml)"
 msgstr ""
 
-#: lxc/remote.go:166
+#: lxc/remote.go:211
 msgid "Generating a client certificate. This may take a minute..."
 msgstr ""
 
-#: lxc/network.go:513
+#: lxc/config_device.go:178 lxc/config_device.go:179
+msgid "Get values for container device configuration keys"
+msgstr ""
+
+#: lxc/config.go:288 lxc/config.go:289
+msgid "Get values for container or server configuration keys"
+msgstr ""
+
+#: lxc/network.go:659 lxc/network.go:660
+msgid "Get values for network configuration keys"
+msgstr ""
+
+#: lxc/profile.go:519 lxc/profile.go:520
+msgid "Get values for profile configuration keys"
+msgstr ""
+
+#: lxc/storage.go:327 lxc/storage.go:328
+msgid "Get values for storage pool configuration keys"
+msgstr ""
+
+#: lxc/storage_volume.go:852 lxc/storage_volume.go:853
+msgid "Get values for storage volume configuration keys"
+msgstr ""
+
+#: lxc/network.go:851
 msgid "HOSTNAME"
 msgstr ""
 
-#: lxc/operation.go:152
+#: lxc/operation.go:151
 msgid "ID"
 msgstr ""
 
-#: lxc/network.go:515
+#: lxc/network.go:853
 msgid "IP ADDRESS"
 msgstr ""
 
-#: lxc/list.go:465
+#: lxc/list.go:462
 msgid "IPV4"
 msgstr ""
 
-#: lxc/list.go:466
+#: lxc/list.go:463
 msgid "IPV6"
 msgstr ""
 
-#: lxc/config.go:404
+#: lxc/config_trust.go:176
 msgid "ISSUE DATE"
 msgstr ""
 
-#: lxc/main.go:171
+#: lxc/main.go:259
 msgid ""
 "If this is your first time running LXD on this machine, you should also run: "
 "lxd init"
 msgstr ""
 
-#: lxc/main.go:54
-msgid "Ignore aliases when determining what command to run"
-msgstr ""
-
-#: lxc/action.go:51
-msgid "Ignore the container state (only for start)"
+#: lxc/action.go:117
+msgid "Ignore the container state"
 msgstr ""
 
-#: lxc/image.go:557
+#: lxc/image.go:1268
 msgid "Image already up to date."
 msgstr ""
 
-#: lxc/image.go:463
+#: lxc/image.go:231
 msgid "Image copied successfully!"
 msgstr ""
 
-#: lxc/image.go:982
+#: lxc/image.go:554
 msgid "Image exported successfully!"
 msgstr ""
 
-#: lxc/image.go:778
+#: lxc/image.go:284 lxc/image.go:1235
+msgid "Image identifier missing"
+msgstr ""
+
+#: lxc/image.go:352
+#, c-format
+msgid "Image identifier missing: %s"
+msgstr ""
+
+#: lxc/image.go:749
 #, c-format
 msgid "Image imported with fingerprint: %s"
 msgstr ""
 
-#: lxc/image.go:555
+#: lxc/image.go:1266
 msgid "Image refreshed successfully!"
 msgstr ""
 
-#: lxc/query.go:39
+#: lxc/image.go:571
+msgid ""
+"Import image into the image store\n"
+"\n"
+"Directory import is only available on Linux and must be performed as root."
+msgstr ""
+
+#: lxc/image.go:570
+msgid "Import images into the image store"
+msgstr ""
+
+#: lxc/query.go:38
 msgid "Input data"
 msgstr ""
 
-#: lxc/init.go:149
+#: lxc/init.go:47
 msgid "Instance type"
 msgstr ""
 
-#: lxc/remote.go:118
+#: lxc/remote.go:163
 #, c-format
 msgid "Invalid URL scheme \"%s\" in \"%s\""
 msgstr ""
 
-#: lxc/config.go:383
+#: lxc/config_trust.go:155
 msgid "Invalid certificate"
 msgstr ""
 
-#: lxc/init.go:32 lxc/init.go:37
-msgid "Invalid configuration key"
+#: lxc/list.go:525
+#, c-format
+msgid "Invalid config key '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:520
+#, c-format
+msgid "Invalid config key column format (too many fields): '%s'"
+msgstr ""
+
+#: lxc/image.go:1196 lxc/list.go:386
+#, c-format
+msgid "Invalid format %q"
+msgstr ""
+
+#: lxc/list.go:543
+#, c-format
+msgid "Invalid max width (must -1, 0 or a positive integer) '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:540
+#, c-format
+msgid "Invalid max width (must be an integer) '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:531
+#, c-format
+msgid ""
+"Invalid name in '%s', empty string is only allowed when defining maxWidth"
+msgstr ""
+
+#: lxc/main.go:341
+msgid "Invalid number of arguments"
 msgstr ""
 
-#: lxc/file.go:560
+#: lxc/file.go:97
 #, c-format
 msgid "Invalid path %s"
 msgstr ""
 
-#: lxc/remote.go:107
+#: lxc/remote.go:152
 #, c-format
 msgid "Invalid protocol: %s"
 msgstr ""
 
-#: lxc/file.go:473
+#: lxc/file.go:243
 #, c-format
 msgid "Invalid source %s"
 msgstr ""
 
-#: lxc/file.go:250
+#: lxc/file.go:352
 #, c-format
 msgid "Invalid target %s"
 msgstr ""
 
-#: lxc/info.go:156
+#: lxc/info.go:160
 msgid "Ips:"
 msgstr ""
 
-#: lxc/image.go:179
+#: lxc/image.go:139
 msgid "Keep the image up to date after initial copy"
 msgstr ""
 
-#: lxc/list.go:470
+#: lxc/list.go:467
 msgid "LAST USED AT"
 msgstr ""
 
-#: lxc/list.go:492
+#: lxc/list.go:489
 msgid "LOCATION"
 msgstr ""
 
-#: lxc/main.go:38
-msgid "LXD socket not found; is LXD installed and running?"
+#: lxc/cluster.go:94
+msgid "LXD server isn't part of a cluster"
 msgstr ""
 
-#: lxc/image.go:615
+#: lxc/image.go:844
 #, c-format
 msgid "Last used: %s"
 msgstr ""
 
-#: lxc/image.go:617
+#: lxc/image.go:846
 msgid "Last used: never"
 msgstr ""
 
-#: lxc/info.go:119
-#, c-format
-msgid "Location: %s"
-msgstr ""
-
-#: lxc/info.go:271
-msgid "Log:"
-msgstr ""
-
-#: lxc/network.go:514
-msgid "MAC ADDRESS"
+#: lxc/network.go:807 lxc/network.go:808
+msgid "List DHCP leases"
 msgstr ""
 
-#: lxc/network.go:578
-msgid "MANAGED"
+#: lxc/alias.go:98 lxc/alias.go:99
+msgid "List aliases"
 msgstr ""
 
-#: lxc/cluster.go:187
-msgid "MESSAGE"
+#: lxc/cluster.go:58 lxc/cluster.go:59
+msgid "List all the cluster members"
 msgstr ""
 
-#: lxc/image.go:177
-msgid "Make image public"
+#: lxc/network.go:718 lxc/network.go:719
+msgid "List available networks"
 msgstr ""
 
-#: lxc/publish.go:35
-msgid "Make the image public"
+#: lxc/storage.go:490 lxc/storage.go:491
+msgid "List available storage pools"
 msgstr ""
 
-#: lxc/info.go:193
-msgid "Memory (current)"
+#: lxc/operation.go:97 lxc/operation.go:98
+msgid "List background operations"
 msgstr ""
 
-#: lxc/info.go:197
-msgid "Memory (peak)"
+#: lxc/config_device.go:251 lxc/config_device.go:252
+msgid "List container devices"
 msgstr ""
 
-#: lxc/info.go:209
-#, fuzzy
-msgid "Memory usage:"
-msgstr "  Χρήση μνήμης:"
-
-#: lxc/monitor.go:70
-msgid "Minimum level for log messages"
+#: lxc/config_template.go:235 lxc/config_template.go:236
+msgid "List container file templates"
 msgstr ""
 
-#: lxc/utils.go:143
-msgid "Missing summary."
+#: lxc/list.go:47
+msgid "List containers"
 msgstr ""
 
-#: lxc/network.go:303 lxc/network.go:356 lxc/storage.go:435 lxc/storage.go:565
-msgid "More than one device matches, specify the device name."
+#: lxc/list.go:48
+msgid ""
+"List containers\n"
+"\n"
+"Default column layout: ns46tS\n"
+"Fast column layout: nsacPt\n"
+"\n"
+"== Filters ==\n"
+"A single keyword like \"web\" which will list any container with a name "
+"starting by \"web\".\n"
+"A regular expression on the container name. (e.g. .*web.*01$).\n"
+"A key/value pair referring to a configuration item. For those, the\n"
+"namespace can be abbreviated to the smallest unambiguous identifier.\n"
+"\n"
+"Examples:\n"
+"  - \"user.blah=abc\" will list all containers with the \"blah\" user "
+"property set to \"abc\".\n"
+"  - \"u.blah=abc\" will do the same\n"
+"  - \"security.privileged=true\" will list all privileged containers\n"
+"  - \"s.privileged=true\" will do the same\n"
+"\n"
+"A regular expression matching a configuration item or its value. (e.g. "
+"volatile.eth0.hwaddr=00:16:3e:.*).\n"
+"\n"
+"== Columns ==\n"
+"The -c option takes a comma separated list of arguments that control\n"
+"which container attributes to output when displaying in table or csv\n"
+"format.\n"
+"\n"
+"Column arguments are either pre-defined shorthand chars (see below),\n"
+"or (extended) config keys.\n"
+"\n"
+"Commas between consecutive shorthand chars are optional.\n"
+"\n"
+"Pre-defined column shorthand chars:\n"
+"  4 - IPv4 address\n"
+"  6 - IPv6 address\n"
+"  a - Architecture\n"
+"  b - Storage pool\n"
+"  c - Creation date\n"
+"  d - Description\n"
+"  l - Last used date\n"
+"  n - Name\n"
+"  N - Number of Processes\n"
+"  p - PID of the container's init process\n"
+"  P - Profiles\n"
+"  s - State\n"
+"  S - Number of snapshots\n"
+"  t - Type (persistent or ephemeral)\n"
+"  L - Location of the container (e.g. its node)\n"
+"\n"
+"Custom columns are defined with \"key[:name][:maxWidth]\":\n"
+"  KEY: The (extended) config key to display\n"
+"  NAME: Name to display in the column header.\n"
+"  Defaults to the key if not specified or empty.\n"
+"\n"
+"  MAXWIDTH: Max width of the column (longer results are truncated).\n"
+"  Defaults to -1 (unlimited). Use 0 to limit to the column header size."
+msgstr ""
+
+#: lxc/image_alias.go:148
+msgid "List image aliases"
+msgstr ""
+
+#: lxc/image_alias.go:149
+msgid ""
+"List image aliases\n"
+"\n"
+"Filters may be part of the image hash or part of the image alias name.\n"
+msgstr ""
+
+#: lxc/image.go:889
+msgid "List images"
+msgstr ""
+
+#: lxc/image.go:890
+msgid ""
+"List images\n"
+"\n"
+"Filters may be of the <key>=<value> form for property based filtering,\n"
+"or part of the image hash or part of the image alias name.\n"
+"\n"
+"The -c option takes a (optionally comma-separated) list of arguments\n"
+"that control which image attributes to output when displaying in table\n"
+"or csv format.\n"
+"\n"
+"Default column layout is: lfpdasu\n"
+"\n"
+"Column shorthand chars:\n"
+"\n"
+"    l - Shortest image alias (and optionally number of other aliases)\n"
+"    L - Newline-separated list of all image aliases\n"
+"    f - Fingerprint\n"
+"    p - Whether image is public\n"
+"    d - Description\n"
+"    a - Architecture\n"
+"    s - Size"
+msgstr ""
+
+#: lxc/profile.go:567 lxc/profile.go:568
+msgid "List profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:917 lxc/storage_volume.go:918
+msgid "List storage volumes"
+msgstr ""
+
+#: lxc/remote.go:413 lxc/remote.go:414
+msgid "List the available remotes"
+msgstr ""
+
+#: lxc/config_trust.go:114 lxc/config_trust.go:115
+msgid "List trusted clients"
+msgstr ""
+
+#: lxc/operation.go:24 lxc/operation.go:25
+msgid "List, show and delete background operations"
+msgstr ""
+
+#: lxc/info.go:123
+#, c-format
+msgid "Location: %s"
+msgstr ""
+
+#: lxc/info.go:275
+msgid "Log:"
+msgstr ""
+
+#: lxc/network.go:852
+msgid "MAC ADDRESS"
+msgstr ""
+
+#: lxc/network.go:783
+msgid "MANAGED"
+msgstr ""
+
+#: lxc/cluster.go:123
+msgid "MESSAGE"
+msgstr ""
+
+#: lxc/image.go:137 lxc/image.go:576
+msgid "Make image public"
+msgstr ""
+
+#: lxc/publish.go:38
+msgid "Make the image public"
+msgstr ""
+
+#: lxc/network.go:32
+msgid "Manage an attach containers to networks"
+msgstr ""
+
+#: lxc/network.go:31
+msgid "Manage and attach containers to networks"
+msgstr ""
+
+#: lxc/cluster.go:25 lxc/cluster.go:26
+msgid "Manage cluster members"
+msgstr ""
+
+#: lxc/alias.go:22 lxc/alias.go:23
+msgid "Manage command aliases"
+msgstr ""
+
+#: lxc/config.go:28 lxc/config.go:29
+msgid "Manage container and server configuration options"
+msgstr ""
+
+#: lxc/config_device.go:23 lxc/config_device.go:24
+msgid "Manage container devices"
+msgstr ""
+
+#: lxc/config_template.go:29 lxc/config_template.go:30
+msgid "Manage container file templates"
+msgstr ""
+
+#: lxc/config_metadata.go:28 lxc/config_metadata.go:29
+msgid "Manage container metadata files"
+msgstr ""
+
+#: lxc/file.go:39 lxc/file.go:40
+msgid "Manage files in containers"
+msgstr ""
+
+#: lxc/image_alias.go:25 lxc/image_alias.go:26
+msgid "Manage image aliases"
+msgstr ""
+
+#: lxc/image.go:41
+msgid "Manage images"
+msgstr ""
+
+#: lxc/image.go:42
+msgid ""
+"Manage images\n"
+"\n"
+"In LXD containers are created from images. Those images were themselves\n"
+"either generated from an existing container or downloaded from an image\n"
+"server.\n"
+"\n"
+"When using remote images, LXD will automatically cache images for you\n"
+"and remove them upon expiration.\n"
+"\n"
+"The image unique identifier is the hash (sha-256) of its representation\n"
+"as a compressed tarball (or for split images, the concatenation of the\n"
+"metadata and rootfs tarballs).\n"
+"\n"
+"Images can be referenced by their full hash, shortest unique partial\n"
+"hash or alias name (if one is set)."
+msgstr ""
+
+#: lxc/profile.go:29 lxc/profile.go:30
+msgid "Manage profiles"
+msgstr ""
+
+#: lxc/storage.go:32 lxc/storage.go:33
+msgid "Manage storage pools and volumes"
+msgstr ""
+
+#: lxc/storage_volume.go:33
+msgid "Manage storage volumes"
+msgstr ""
+
+#: lxc/storage_volume.go:34
+msgid ""
+"Manage storage volumes\n"
+"\n"
+"Unless specified through a prefix, all volume operations affect \"custom"
+"\" (user created) volumes."
+msgstr ""
+
+#: lxc/remote.go:33 lxc/remote.go:34
+msgid "Manage the list of remote servers"
 msgstr ""
 
-#: lxc/file.go:460
+#: lxc/config_trust.go:29 lxc/config_trust.go:30
+msgid "Manage trusted clients"
+msgstr ""
+
+#: lxc/info.go:197
+msgid "Memory (current)"
+msgstr ""
+
+#: lxc/info.go:201
+msgid "Memory (peak)"
+msgstr ""
+
+#: lxc/info.go:213
+#, fuzzy
+msgid "Memory usage:"
+msgstr "  Χρήση μνήμης:"
+
+#: lxc/monitor.go:49
+msgid "Minimum level for log messages"
+msgstr ""
+
+#: lxc/config_metadata.go:102 lxc/config_metadata.go:200
+#: lxc/config_template.go:91 lxc/config_template.go:134
+#: lxc/config_template.go:176 lxc/config_template.go:260
+#: lxc/config_template.go:322 lxc/profile.go:197 lxc/profile.go:656
+msgid "Missing container name"
+msgstr ""
+
+#: lxc/profile.go:126
+msgid "Missing container.name name"
+msgstr ""
+
+#: lxc/config_device.go:103 lxc/config_device.go:203 lxc/config_device.go:276
+#: lxc/config_device.go:342 lxc/config_device.go:429 lxc/config_device.go:517
+#: lxc/config_device.go:606
+msgid "Missing name"
+msgstr ""
+
+#: lxc/network.go:128 lxc/network.go:201 lxc/network.go:344 lxc/network.go:391
+#: lxc/network.go:476 lxc/network.go:581 lxc/network.go:686 lxc/network.go:832
+#: lxc/network.go:897 lxc/network.go:946 lxc/network.go:1015
+msgid "Missing network name"
+msgstr ""
+
+#: lxc/storage.go:185 lxc/storage.go:252 lxc/storage.go:353 lxc/storage.go:408
+#: lxc/storage.go:603 lxc/storage.go:677 lxc/storage_volume.go:146
+#: lxc/storage_volume.go:225 lxc/storage_volume.go:451
+#: lxc/storage_volume.go:526 lxc/storage_volume.go:585
+#: lxc/storage_volume.go:667 lxc/storage_volume.go:766
+#: lxc/storage_volume.go:878 lxc/storage_volume.go:942
+#: lxc/storage_volume.go:1050 lxc/storage_volume.go:1114
+#: lxc/storage_volume.go:1197
+msgid "Missing pool name"
+msgstr ""
+
+#: lxc/profile.go:321 lxc/profile.go:372 lxc/profile.go:444 lxc/profile.go:544
+#: lxc/profile.go:729 lxc/profile.go:777 lxc/profile.go:836
+msgid "Missing profile name"
+msgstr ""
+
+#: lxc/profile.go:266
+msgid "Missing source profile name"
+msgstr ""
+
+#: lxc/storage_volume.go:311
+msgid "Missing source volume name"
+msgstr ""
+
+#: lxc/file.go:446
+msgid "Missing target directory"
+msgstr ""
+
+#: lxc/monitor.go:30
+msgid "Monitor a local or remote LXD server"
+msgstr ""
+
+#: lxc/monitor.go:31
+msgid ""
+"Monitor a local or remote LXD server\n"
+"\n"
+"By default the monitor will listen to all message types."
+msgstr ""
+
+#: lxc/network.go:411 lxc/network.go:496 lxc/storage_volume.go:605
+#: lxc/storage_volume.go:686
+msgid "More than one device matches, specify the device name."
+msgstr ""
+
+#: lxc/file.go:224
 msgid "More than one file to download, but target is not a directory"
 msgstr ""
 
-#: lxc/move.go:42
+#: lxc/move.go:30 lxc/move.go:31
+msgid "Move containers within or in between LXD instances"
+msgstr ""
+
+#: lxc/storage_volume.go:993 lxc/storage_volume.go:994
+msgid "Move storage volumes between pools"
+msgstr ""
+
+#: lxc/move.go:44
 msgid "Move the container without its snapshots"
 msgstr ""
 
-#: lxc/storage.go:1128
+#: lxc/storage_volume.go:375
 #, c-format
 msgid "Moving the storage volume: %s"
 msgstr ""
 
-#: lxc/image.go:1292
+#: lxc/image.go:588
 msgid "Must run as root to import from directory"
 msgstr ""
 
-#: lxc/action.go:74
+#: lxc/action.go:147
 msgid "Must supply container name for: "
 msgstr ""
 
-#: lxc/cluster.go:183 lxc/list.go:471 lxc/network.go:576 lxc/profile.go:573
-#: lxc/remote.go:409 lxc/storage.go:731 lxc/storage.go:936
+#: lxc/cluster.go:119 lxc/list.go:468 lxc/network.go:781 lxc/profile.go:613
+#: lxc/remote.go:463 lxc/storage.go:544 lxc/storage_volume.go:966
 msgid "NAME"
 msgstr ""
 
-#: lxc/network.go:558 lxc/operation.go:139 lxc/remote.go:380 lxc/remote.go:385
+#: lxc/network.go:763 lxc/operation.go:138 lxc/remote.go:434 lxc/remote.go:439
 msgid "NO"
 msgstr ""
 
-#: lxc/storage.go:941
+#: lxc/storage_volume.go:971
 msgid "NODE"
 msgstr ""
 
-#: lxc/info.go:117
+#: lxc/info.go:121
 #, c-format
 msgid "Name: %s"
 msgstr ""
 
-#: lxc/network.go:276
+#: lxc/network.go:303
 #, c-format
 msgid "Network %s created"
 msgstr ""
 
-#: lxc/network.go:393
+#: lxc/network.go:353
 #, c-format
 msgid "Network %s deleted"
 msgstr ""
 
-#: lxc/network.go:274
+#: lxc/network.go:301
 #, c-format
 msgid "Network %s pending on node %s"
 msgstr ""
 
-#: lxc/network.go:470
+#: lxc/network.go:906
 #, c-format
 msgid "Network %s renamed to %s"
 msgstr ""
 
-#: lxc/init.go:145 lxc/init.go:146
+#: lxc/init.go:45
 msgid "Network name"
 msgstr ""
 
-#: lxc/info.go:226
+#: lxc/info.go:230
 #, fuzzy
 msgid "Network usage:"
 msgstr "  Χρήση δικτύου:"
 
-#: lxc/image.go:180 lxc/publish.go:36
+#: lxc/publish.go:39
 msgid "New alias to define at target"
 msgstr ""
 
-#: lxc/config.go:414
-msgid "No certificate provided to add"
+#: lxc/image.go:140 lxc/image.go:577
+msgid "New aliases to add to the image"
 msgstr ""
 
-#: lxc/network.go:312 lxc/network.go:365
+#: lxc/network.go:420 lxc/network.go:505
 msgid "No device found for this network"
 msgstr ""
 
-#: lxc/storage.go:444 lxc/storage.go:574
+#: lxc/storage_volume.go:614 lxc/storage_volume.go:695
 msgid "No device found for this storage volume."
 msgstr ""
 
-#: lxc/config.go:446
-msgid "No fingerprint specified."
-msgstr ""
-
-#: lxc/cluster.go:143
+#: lxc/cluster.go:268
 #, c-format
 msgid "Node %s removed"
 msgstr ""
 
-#: lxc/cluster.go:119
+#: lxc/cluster.go:221
 #, c-format
 msgid "Node %s renamed to %s"
 msgstr ""
 
-#: lxc/copy.go:46 lxc/init.go:150 lxc/move.go:45 lxc/network.go:105
-#: lxc/storage.go:165
+#: lxc/copy.go:45 lxc/init.go:48 lxc/move.go:47
 msgid "Node name"
 msgstr ""
 
-#: lxc/storage.go:388 lxc/storage.go:481
+#: lxc/storage_volume.go:164 lxc/storage_volume.go:243
 msgid "Only \"custom\" volumes can be attached to containers."
 msgstr ""
 
-#: lxc/remote.go:101
+#: lxc/remote.go:146
 msgid "Only https URLs are supported for simplestreams"
 msgstr ""
 
-#: lxc/image.go:688
+#: lxc/image.go:658
 msgid "Only https:// is supported for remote image import."
 msgstr ""
 
-#: lxc/network.go:421 lxc/network.go:605
+#: lxc/network.go:607 lxc/network.go:960
 msgid "Only managed networks can be modified."
 msgstr ""
 
-#: lxc/operation.go:85
+#: lxc/operation.go:83
 #, c-format
 msgid "Operation %s deleted"
 msgstr ""
 
-#: lxc/help.go:71 lxc/main.go:139 lxc/main.go:195
-msgid "Options:"
-msgstr ""
-
-#: lxc/exec.go:69
+#: lxc/exec.go:53
 msgid "Override the terminal mode (auto, interactive or non-interactive)"
 msgstr ""
 
-#: lxc/list.go:641
+#: lxc/list.go:638
 msgid "PERSISTENT"
 msgstr ""
 
-#: lxc/list.go:473
+#: lxc/list.go:470
 msgid "PID"
 msgstr ""
 
-#: lxc/list.go:472
+#: lxc/list.go:469
 msgid "PROCESSES"
 msgstr ""
 
-#: lxc/list.go:474
+#: lxc/list.go:471
 msgid "PROFILES"
 msgstr ""
 
-#: lxc/remote.go:411
+#: lxc/remote.go:465
 msgid "PROTOCOL"
 msgstr ""
 
-#: lxc/image.go:234 lxc/remote.go:413
+#: lxc/image.go:924 lxc/remote.go:467
 msgid "PUBLIC"
 msgstr ""
 
-#: lxc/info.go:220
+#: lxc/info.go:224
 msgid "Packets received"
 msgstr ""
 
-#: lxc/info.go:221
+#: lxc/info.go:225
 msgid "Packets sent"
 msgstr ""
 
-#: lxc/help.go:78
-msgid "Path to an alternate client configuration directory"
-msgstr ""
-
-#: lxc/help.go:79
-msgid "Path to an alternate server directory"
-msgstr ""
-
-#: lxc/main.go:240
-msgid "Pause containers."
-msgstr ""
-
-#: lxc/main.go:42
-msgid "Permission denied, are you in the lxd group?"
+#: lxc/action.go:48 lxc/action.go:49
+msgid "Pause containers"
 msgstr ""
 
-#: lxc/info.go:138
+#: lxc/info.go:142
 #, c-format
 msgid "Pid: %d"
 msgstr ""
 
-#: lxc/network.go:446 lxc/profile.go:276 lxc/storage.go:648 lxc/storage.go:1210
+#: lxc/network.go:632 lxc/profile.go:491 lxc/storage.go:299
+#: lxc/storage_volume.go:823
 msgid "Press enter to open the editor again"
 msgstr ""
 
-#: lxc/config.go:822 lxc/config.go:887 lxc/config.go:1397 lxc/config.go:1447
-#: lxc/image.go:1192
+#: lxc/config.go:196 lxc/config.go:260 lxc/config_metadata.go:145
+#: lxc/config_template.go:205 lxc/image.go:406
 msgid "Press enter to start the editor again"
 msgstr ""
 
-#: lxc/monitor.go:68
+#: lxc/monitor.go:47
 msgid "Pretty rendering"
 msgstr ""
 
-#: lxc/help.go:73
-msgid "Print debug information"
-msgstr ""
-
-#: lxc/help.go:72
-msgid "Print less common commands"
+#: lxc/main.go:55
+msgid "Print help"
 msgstr ""
 
-#: lxc/query.go:37
+#: lxc/query.go:36
 msgid "Print the raw response"
 msgstr ""
 
-#: lxc/help.go:74
-msgid "Print verbose information"
+#: lxc/main.go:54
+msgid "Print version number"
 msgstr ""
 
-#: lxc/info.go:162
+#: lxc/info.go:166
 #, c-format
 msgid "Processes: %d"
 msgstr ""
 
-#: lxc/profile.go:362
+#: lxc/main_aliases.go:123 lxc/main_aliases.go:131
+#, c-format
+msgid "Processing aliases failed: %s\n"
+msgstr ""
+
+#: lxc/profile.go:147
 #, c-format
 msgid "Profile %s added to %s"
 msgstr ""
 
-#: lxc/profile.go:226
+#: lxc/profile.go:333
 #, c-format
 msgid "Profile %s created"
 msgstr ""
 
-#: lxc/profile.go:310
+#: lxc/profile.go:381
 #, c-format
 msgid "Profile %s deleted"
 msgstr ""
 
-#: lxc/profile.go:397
+#: lxc/profile.go:690
 #, c-format
 msgid "Profile %s removed from %s"
 msgstr ""
 
-#: lxc/profile.go:300
+#: lxc/profile.go:738
 #, c-format
 msgid "Profile %s renamed to %s"
 msgstr ""
 
-#: lxc/copy.go:39 lxc/copy.go:40 lxc/init.go:141 lxc/init.go:142
+#: lxc/copy.go:40 lxc/init.go:43
 msgid "Profile to apply to the new container"
 msgstr ""
 
-#: lxc/profile.go:339
+#: lxc/profile.go:225
 #, c-format
 msgid "Profiles %s applied to %s"
 msgstr ""
 
-#: lxc/info.go:136
+#: lxc/info.go:140
 #, c-format
 msgid "Profiles: %s"
 msgstr ""
 
-#: lxc/image.go:619
+#: lxc/image.go:849
 msgid "Properties:"
 msgstr ""
 
-#: lxc/remote.go:72
+#: lxc/remote.go:92
 msgid "Public image server"
 msgstr ""
 
-#: lxc/image.go:602
+#: lxc/image.go:827
 #, c-format
 msgid "Public: %s"
 msgstr ""
 
-#: lxc/file.go:68 lxc/file.go:69
-msgid "Recursively push or pull files"
+#: lxc/publish.go:33 lxc/publish.go:34
+msgid "Publish containers as images"
 msgstr ""
 
-#: lxc/image.go:529
-#, c-format
-msgid "Refreshing the image: %s"
+#: lxc/file.go:184 lxc/file.go:185
+msgid "Pull files from containers"
 msgstr ""
 
-#: lxc/remote.go:69
-msgid "Remote admin password"
+#: lxc/file.go:323 lxc/file.go:324
+msgid "Push files into containers"
 msgstr ""
 
-#: lxc/utils/cancel.go:34
-msgid "Remote operation canceled by user"
+#: lxc/file.go:192 lxc/file.go:330
+msgid "Recursively transfer files"
+msgstr ""
+
+#: lxc/image.go:1211 lxc/image.go:1212
+msgid "Refresh images"
 msgstr ""
 
-#: lxc/info.go:122
+#: lxc/image.go:1239
 #, c-format
-msgid "Remote: %s"
+msgid "Refreshing the image: %s"
 msgstr ""
 
-#: lxc/delete.go:42
+#: lxc/remote.go:515
 #, c-format
-msgid "Remove %s (yes/no): "
+msgid "Remote %s already exists"
 msgstr ""
 
-#: lxc/storage.go:1247
+#: lxc/remote.go:507 lxc/remote.go:569 lxc/remote.go:618 lxc/remote.go:656
 #, c-format
-msgid "Renamed storage volume from \"%s\" to \"%s\""
+msgid "Remote %s doesn't exist"
 msgstr ""
 
-#: lxc/delete.go:36 lxc/delete.go:37
-msgid "Require user confirmation"
+#: lxc/remote.go:116
+#, c-format
+msgid "Remote %s exists as <%s>"
 msgstr ""
 
-#: lxc/info.go:159
-msgid "Resources:"
+#: lxc/remote.go:511 lxc/remote.go:573 lxc/remote.go:660
+#, c-format
+msgid "Remote %s is static and cannot be modified"
 msgstr ""
 
-#: lxc/main.go:248
-msgid "Restart containers."
+#: lxc/remote.go:89
+msgid "Remote admin password"
 msgstr ""
 
-#: lxc/console.go:38
-msgid "Retrieve the container's console log"
+#: lxc/utils/cancel.go:34
+msgid "Remote operation canceled by user"
 msgstr ""
 
-#: lxc/init.go:293
+#: lxc/info.go:126
 #, c-format
-msgid "Retrieving image: %s"
+msgid "Remote: %s"
 msgstr ""
 
-#: lxc/action.go:52
-msgid "Run command against all containers"
+#: lxc/delete.go:42
+#, c-format
+msgid "Remove %s (yes/no): "
 msgstr ""
 
-#: lxc/image.go:237
-msgid "SIZE"
+#: lxc/cluster.go:237 lxc/cluster.go:238
+msgid "Remove a member from the cluster"
 msgstr ""
 
-#: lxc/list.go:475
-msgid "SNAPSHOTS"
+#: lxc/alias.go:197 lxc/alias.go:198
+msgid "Remove aliases"
 msgstr ""
 
-#: lxc/storage.go:738
-msgid "SOURCE"
+#: lxc/config_device.go:404 lxc/config_device.go:405
+msgid "Remove container devices"
 msgstr ""
 
-#: lxc/cluster.go:186 lxc/list.go:476 lxc/network.go:583 lxc/storage.go:736
-msgid "STATE"
+#: lxc/profile.go:631 lxc/profile.go:632
+msgid "Remove profiles from containers"
 msgstr ""
 
-#: lxc/remote.go:414
-msgid "STATIC"
+#: lxc/remote.go:548 lxc/remote.go:549
+msgid "Remove remotes"
 msgstr ""
 
-#: lxc/operation.go:155
-msgid "STATUS"
+#: lxc/config_trust.go:196 lxc/config_trust.go:197
+msgid "Remove trusted clients"
 msgstr ""
 
-#: lxc/list.go:478
-msgid "STORAGE POOL"
+#: lxc/cluster.go:191 lxc/cluster.go:192
+msgid "Rename a cluster member"
 msgstr ""
 
-#: lxc/remote.go:71
-msgid "Server authentication type (tls or macaroons)"
+#: lxc/alias.go:146 lxc/alias.go:147 lxc/image_alias.go:249
+#: lxc/image_alias.go:250
+msgid "Rename aliases"
 msgstr ""
 
-#: lxc/remote.go:211
-msgid "Server certificate NACKed by user"
+#: lxc/rename.go:19 lxc/rename.go:20
+msgid "Rename containers and snapshots"
 msgstr ""
 
-#: lxc/remote.go:311
-msgid "Server doesn't trust us after authentication"
+#: lxc/network.go:872 lxc/network.go:873
+msgid "Rename networks"
 msgstr ""
 
-#: lxc/remote.go:70
-msgid "Server protocol (lxd or simplestreams)"
+#: lxc/profile.go:704 lxc/profile.go:705
+msgid "Rename profiles"
 msgstr ""
 
-#: lxc/file.go:66
-msgid "Set the file's gid on push"
+#: lxc/remote.go:486 lxc/remote.go:487
+msgid "Rename remotes"
 msgstr ""
 
-#: lxc/file.go:67
-msgid "Set the file's perms on push"
+#: lxc/storage_volume.go:1024 lxc/storage_volume.go:1025
+msgid "Rename storage volumes"
 msgstr ""
 
-#: lxc/file.go:65
-msgid "Set the file's uid on push"
+#: lxc/storage_volume.go:1073
+#, c-format
+msgid "Renamed storage volume from \"%s\" to \"%s\""
 msgstr ""
 
-#: lxc/help.go:29
-msgid "Show all commands (not just interesting ones)"
+#: lxc/delete.go:35
+msgid "Require user confirmation"
 msgstr ""
 
-#: lxc/help.go:75
-msgid "Show client version"
+#: lxc/info.go:163
+msgid "Resources:"
 msgstr ""
 
-#: lxc/info.go:40
-msgid "Show the container's last 100 log lines?"
+#: lxc/action.go:68
+msgid "Restart containers"
 msgstr ""
 
-#: lxc/config.go:36
-msgid "Show the expanded configuration"
+#: lxc/action.go:69
+msgid ""
+"Restart containers\n"
+"\n"
+"The opposite of \"lxc pause\" is \"lxc start\"."
 msgstr ""
 
-#: lxc/info.go:41
-msgid "Show the resources available to the server"
+#: lxc/restore.go:23
+msgid "Restore containers from snapshots"
 msgstr ""
 
-#: lxc/storage.go:163
-msgid "Show the resources available to the storage pool"
+#: lxc/restore.go:24
+msgid ""
+"Restore containers from snapshots\n"
+"\n"
+"If --stateful is passed, then the running state will be restored too."
+msgstr ""
+
+#: lxc/console.go:39
+msgid "Retrieve the container's console log"
+msgstr ""
+
+#: lxc/init.go:201
+#, c-format
+msgid "Retrieving image: %s"
+msgstr ""
+
+#: lxc/action.go:112
+msgid "Run command against all containers"
+msgstr ""
+
+#: lxc/image.go:927
+msgid "SIZE"
+msgstr ""
+
+#: lxc/list.go:472
+msgid "SNAPSHOTS"
+msgstr ""
+
+#: lxc/storage.go:551
+msgid "SOURCE"
+msgstr ""
+
+#: lxc/cluster.go:122 lxc/list.go:473 lxc/network.go:788 lxc/storage.go:549
+msgid "STATE"
+msgstr ""
+
+#: lxc/remote.go:468
+msgid "STATIC"
+msgstr ""
+
+#: lxc/operation.go:154
+msgid "STATUS"
+msgstr ""
+
+#: lxc/list.go:475
+msgid "STORAGE POOL"
+msgstr ""
+
+#: lxc/query.go:26 lxc/query.go:27
+msgid "Send a raw query to LXD"
+msgstr ""
+
+#: lxc/remote.go:91
+msgid "Server authentication type (tls or macaroons)"
+msgstr ""
+
+#: lxc/remote.go:260
+msgid "Server certificate NACKed by user"
+msgstr ""
+
+#: lxc/remote.go:360
+msgid "Server doesn't trust us after authentication"
+msgstr ""
+
+#: lxc/remote.go:90
+msgid "Server protocol (lxd or simplestreams)"
+msgstr ""
+
+#: lxc/config_device.go:492 lxc/config_device.go:493
+msgid "Set container device configuration keys"
+msgstr ""
+
+#: lxc/config.go:354 lxc/config.go:355
+msgid "Set container or server configuration keys"
+msgstr ""
+
+#: lxc/network.go:919 lxc/network.go:920
+msgid "Set network configuration keys"
+msgstr ""
+
+#: lxc/profile.go:752 lxc/profile.go:753
+msgid "Set profile configuration keys"
+msgstr ""
+
+#: lxc/storage.go:572 lxc/storage.go:573
+msgid "Set storage pool configuration keys"
+msgstr ""
+
+#: lxc/storage_volume.go:1088 lxc/storage_volume.go:1089
+msgid "Set storage volume configuration keys"
+msgstr ""
+
+#: lxc/remote.go:635 lxc/remote.go:636
+msgid "Set the URL for the remote"
+msgstr ""
+
+#: lxc/remote.go:597 lxc/remote.go:598
+msgid "Set the default remote"
+msgstr ""
+
+#: lxc/file.go:333
+msgid "Set the file's gid on push"
+msgstr ""
+
+#: lxc/file.go:334
+msgid "Set the file's perms on push"
+msgstr ""
+
+#: lxc/file.go:332
+msgid "Set the file's uid on push"
+msgstr ""
+
+#: lxc/main.go:57
+msgid "Show all debug messages"
+msgstr ""
+
+#: lxc/main.go:58
+msgid "Show all information messages"
+msgstr ""
+
+#: lxc/config_metadata.go:175 lxc/config_metadata.go:176
+msgid "Show container metadata files"
+msgstr ""
+
+#: lxc/config.go:451 lxc/config.go:452
+msgid "Show container or server configurations"
+msgstr ""
+
+#: lxc/info.go:28 lxc/info.go:29
+msgid "Show container or server information"
+msgstr ""
+
+#: lxc/config_template.go:297 lxc/config_template.go:298
+msgid "Show content of container file templates"
+msgstr ""
+
+#: lxc/cluster.go:141 lxc/cluster.go:142
+msgid "Show details of a cluster member"
+msgstr ""
+
+#: lxc/operation.go:173 lxc/operation.go:174
+msgid "Show details on a background operation"
+msgstr ""
+
+#: lxc/config_device.go:581 lxc/config_device.go:582
+msgid "Show full device configuration for containers or profiles"
+msgstr ""
+
+#: lxc/image.go:1284 lxc/image.go:1285
+msgid "Show image properties"
+msgstr ""
+
+#: lxc/main.go:61
+msgid "Show less common commands"
 msgstr ""
 
-#: lxc/storage.go:164
+#: lxc/network.go:988 lxc/network.go:989
+msgid "Show network configurations"
+msgstr ""
+
+#: lxc/profile.go:811 lxc/profile.go:812
+msgid "Show profile configurations"
+msgstr ""
+
+#: lxc/storage.go:644 lxc/storage.go:645
+msgid "Show storage pool configurations and resources"
+msgstr ""
+
+#: lxc/storage_volume.go:1165
+msgid "Show storage volum configurations"
+msgstr ""
+
+#: lxc/storage_volume.go:1166
+msgid "Show storage volume configurations"
+msgstr ""
+
+#: lxc/info.go:39
+msgid "Show the container's last 100 log lines?"
+msgstr ""
+
+#: lxc/remote.go:379 lxc/remote.go:380
+msgid "Show the default remote"
+msgstr ""
+
+#: lxc/config.go:455
+msgid "Show the expanded configuration"
+msgstr ""
+
+#: lxc/info.go:40
+msgid "Show the resources available to the server"
+msgstr ""
+
+#: lxc/storage.go:648
+msgid "Show the resources available to the storage pool"
+msgstr ""
+
+#: lxc/storage.go:386
 msgid "Show the used and free space in bytes"
 msgstr ""
 
-#: lxc/image.go:600
+#: lxc/image.go:775 lxc/image.go:776
+msgid "Show useful information about images"
+msgstr ""
+
+#: lxc/storage.go:382 lxc/storage.go:383
+msgid "Show useful information about storage pools"
+msgstr ""
+
+#: lxc/image.go:825
 #, c-format
 msgid "Size: %.2fMB"
 msgstr ""
 
-#: lxc/info.go:240
+#: lxc/info.go:244
 msgid "Snapshots:"
 msgstr ""
 
-#: lxc/action.go:163
+#: lxc/action.go:242
 #, c-format
 msgid "Some containers failed to %s"
 msgstr ""
 
-#: lxc/image.go:634
+#: lxc/image.go:867
 msgid "Source:"
 msgstr ""
 
-#: lxc/main.go:258
-msgid "Start containers."
+#: lxc/action.go:29 lxc/action.go:30
+msgid "Start containers"
 msgstr ""
 
-#: lxc/launch.go:59
+#: lxc/launch.go:62
 #, c-format
 msgid "Starting %s"
 msgstr ""
 
-#: lxc/info.go:130
+#: lxc/info.go:134
 #, c-format
 msgid "Status: %s"
 msgstr ""
 
-#: lxc/main.go:264
-msgid "Stop containers."
+#: lxc/action.go:90 lxc/action.go:91
+msgid "Stop containers"
 msgstr ""
 
-#: lxc/publish.go:37 lxc/publish.go:38
+#: lxc/publish.go:40
 msgid "Stop the container if currently running"
 msgstr ""
 
-#: lxc/publish.go:136
+#: lxc/publish.go:144
 msgid "Stopping container failed!"
 msgstr ""
 
-#: lxc/delete.go:121
+#: lxc/delete.go:120
 #, c-format
 msgid "Stopping the container failed: %s"
 msgstr ""
 
-#: lxc/storage.go:538
+#: lxc/storage.go:144
 #, c-format
 msgid "Storage pool %s created"
 msgstr ""
 
-#: lxc/storage.go:598
+#: lxc/storage.go:194
 #, c-format
 msgid "Storage pool %s deleted"
 msgstr ""
 
-#: lxc/storage.go:536
+#: lxc/storage.go:142
 #, c-format
 msgid "Storage pool %s pending on node %s"
 msgstr ""
 
-#: lxc/init.go:147 lxc/init.go:148
+#: lxc/init.go:46
 msgid "Storage pool name"
 msgstr ""
 
-#: lxc/storage.go:980
+#: lxc/storage_volume.go:484
 #, c-format
 msgid "Storage volume %s created"
 msgstr ""
 
-#: lxc/storage.go:1000
+#: lxc/storage_volume.go:545
 #, c-format
 msgid "Storage volume %s deleted"
 msgstr ""
 
-#: lxc/storage.go:1135
+#: lxc/storage_volume.go:388
 msgid "Storage volume copied successfully!"
 msgstr ""
 
-#: lxc/storage.go:1129
+#: lxc/storage_volume.go:376
 msgid "Storage volume moved successfully!"
 msgstr ""
 
-#: lxc/action.go:50
-msgid "Store the container state (only for stop)"
+#: lxc/action.go:115
+msgid "Store the container state"
 msgstr ""
 
-#: lxc/info.go:201
+#: lxc/info.go:205
 msgid "Swap (current)"
 msgstr ""
 
-#: lxc/info.go:205
+#: lxc/info.go:209
 msgid "Swap (peak)"
 msgstr ""
 
-#: lxc/alias.go:85
+#: lxc/alias.go:128
 msgid "TARGET"
 msgstr ""
 
-#: lxc/list.go:477 lxc/network.go:516 lxc/network.go:577 lxc/operation.go:153
-#: lxc/storage.go:935
+#: lxc/list.go:474 lxc/network.go:782 lxc/network.go:854 lxc/operation.go:152
+#: lxc/storage_volume.go:965
 msgid "TYPE"
 msgstr ""
 
-#: lxc/delete.go:105
+#: lxc/delete.go:104
 msgid "The container is currently running, stop it first or pass --force."
 msgstr ""
 
-#: lxc/publish.go:101
+#: lxc/publish.go:109
 msgid ""
 "The container is currently running. Use --force to have it stopped and "
 "restarted."
 msgstr ""
 
-#: lxc/init.go:372
+#: lxc/init.go:280
 msgid "The container you are starting doesn't have any network attached to it."
 msgstr ""
 
-#: lxc/config.go:944 lxc/config.go:961 lxc/config.go:1240
+#: lxc/config_device.go:130 lxc/config_device.go:147 lxc/config_device.go:354
 msgid "The device already exists"
 msgstr ""
 
-#: lxc/config.go:1007 lxc/config.go:1019 lxc/config.go:1055 lxc/config.go:1073
-#: lxc/config.go:1119 lxc/config.go:1136 lxc/config.go:1179 lxc/config.go:1197
+#: lxc/config_device.go:218 lxc/config_device.go:230 lxc/config_device.go:442
+#: lxc/config_device.go:460 lxc/config_device.go:533 lxc/config_device.go:550
 msgid "The device doesn't exist"
 msgstr ""
 
-#: lxc/init.go:356
+#: lxc/init.go:264
 #, c-format
 msgid "The local image '%s' couldn't be found, trying '%s:%s' instead."
 msgstr ""
 
-#: lxc/init.go:352
+#: lxc/init.go:260
 #, c-format
 msgid "The local image '%s' couldn't be found, trying '%s:' instead."
 msgstr ""
 
-#: lxc/action.go:35
-msgid "The opposite of \"lxc pause\" is \"lxc start\"."
-msgstr ""
-
-#: lxc/config.go:1245
+#: lxc/config_device.go:359
 msgid "The profile device doesn't exist"
 msgstr ""
 
-#: lxc/network.go:317 lxc/network.go:370 lxc/storage.go:449 lxc/storage.go:579
+#: lxc/network.go:425 lxc/network.go:510 lxc/storage_volume.go:619
+#: lxc/storage_volume.go:700
 msgid "The specified device doesn't exist"
 msgstr ""
 
-#: lxc/network.go:321 lxc/network.go:374
+#: lxc/network.go:429 lxc/network.go:514
 msgid "The specified device doesn't match the network"
 msgstr ""
 
-#: lxc/publish.go:74
+#: lxc/publish.go:82
 msgid "There is no \"image name\".  Did you want an alias?"
 msgstr ""
 
-#: lxc/help.go:47
-msgid ""
-"This is the LXD command line client.\n"
-"\n"
-"All of LXD's features can be driven through the various commands below.\n"
-"For help with any of those, simply call them with --help."
-msgstr ""
-
-#: lxc/action.go:46
+#: lxc/action.go:122
 msgid "Time to wait for the container before killing it"
 msgstr ""
 
-#: lxc/image.go:603
+#: lxc/image.go:828
 msgid "Timestamps:"
 msgstr ""
 
-#: lxc/init.go:374
+#: lxc/init.go:282
 msgid "To attach a network to a container, use: lxc network attach"
 msgstr ""
 
-#: lxc/init.go:373
+#: lxc/init.go:281
 msgid "To create a new network, use: lxc network create"
 msgstr ""
 
-#: lxc/console.go:173
+#: lxc/console.go:185
 msgid "To detach from the console, press: <ctrl>+a q"
 msgstr ""
 
-#: lxc/main.go:172
+#: lxc/main.go:260
 msgid "To start your first container, try: lxc launch ubuntu:16.04"
 msgstr ""
 
-#: lxc/copy.go:43 lxc/move.go:43
+#: lxc/storage_volume.go:997
+msgid "Transfer mode, one of pull (default), push or relay"
+msgstr ""
+
+#: lxc/copy.go:42
+msgid "Transfer mode. One of pull (default), push or relay"
+msgstr ""
+
+#: lxc/move.go:45 lxc/storage_volume.go:286
 msgid "Transfer mode. One of pull (default), push or relay."
 msgstr ""
 
-#: lxc/copy.go:212
+#: lxc/copy.go:229
 #, c-format
 msgid "Transferring container: %s"
 msgstr ""
 
-#: lxc/image.go:717
+#: lxc/image.go:687
 #, c-format
 msgid "Transferring image: %s"
 msgstr ""
 
-#: lxc/action.go:108 lxc/launch.go:77
+#: lxc/action.go:181 lxc/launch.go:80
 #, c-format
 msgid "Try `lxc info --show-log %s` for more info"
 msgstr ""
 
-#: lxc/info.go:132
+#: lxc/info.go:136
 msgid "Type: ephemeral"
 msgstr ""
 
-#: lxc/info.go:134
+#: lxc/info.go:138
 msgid "Type: persistent"
 msgstr ""
 
-#: lxc/image.go:238
+#: lxc/image.go:928
 msgid "UPLOAD DATE"
 msgstr ""
 
-#: lxc/cluster.go:184 lxc/remote.go:410
+#: lxc/cluster.go:120 lxc/remote.go:464
 msgid "URL"
 msgstr ""
 
-#: lxc/network.go:580 lxc/profile.go:574 lxc/storage.go:740 lxc/storage.go:938
+#: lxc/network.go:785 lxc/profile.go:614 lxc/storage.go:553
+#: lxc/storage_volume.go:968
 msgid "USED BY"
 msgstr ""
 
-#: lxc/manpage.go:36
-msgid "Unable to find help2man."
+#: lxc/list.go:514
+#, c-format
+msgid "Unknown column shorthand char '%c' in '%s'"
 msgstr ""
 
-#: lxc/file.go:124
+#: lxc/file.go:596
 #, c-format
 msgid "Unknown file type '%s'"
 msgstr ""
 
-#: lxc/image.go:608
-#, c-format
-msgid "Uploaded: %s"
+#: lxc/config_device.go:649 lxc/config_device.go:650
+msgid "Unset container device configuration keys"
 msgstr ""
 
-#: lxc/action.go:38
-#, c-format
-msgid ""
-"Usage: lxc %s [--all] [<remote>:]<container> [[<remote>:]<container>...]\n"
-"\n"
-"%s%s"
+#: lxc/config.go:559 lxc/config.go:560
+msgid "Unset container or server configuration keys"
 msgstr ""
 
-#: lxc/help.go:45
-msgid "Usage: lxc <command> [options]"
+#: lxc/network.go:1050 lxc/network.go:1051
+msgid "Unset network configuration keys"
 msgstr ""
 
-#: lxc/alias.go:22
-msgid ""
-"Usage: lxc alias <subcommand> [options]\n"
-"\n"
-"Manage command aliases.\n"
-"\n"
-"lxc alias add <alias> <target>\n"
-"    Add a new alias <alias> pointing to <target>.\n"
-"\n"
-"lxc alias remove <alias>\n"
-"    Remove the alias <alias>.\n"
-"\n"
-"lxc alias list\n"
-"    List all the aliases.\n"
-"\n"
-"lxc alias rename <old alias> <new alias>\n"
-"    Rename remote <old alias> to <new alias>."
+#: lxc/profile.go:865 lxc/profile.go:866
+msgid "Unset profile configuration keys"
 msgstr ""
 
-#: lxc/cluster.go:23
-msgid ""
-"Usage: lxc cluster <subcommand> [options]\n"
-"\n"
-"Manage cluster nodes.\n"
-"\n"
-"lxc cluster list [<remote>:]\n"
-"    List all nodes in the cluster.\n"
-"\n"
-"lxc cluster show [<remote>:]<node>\n"
-"    Show details of a node.\n"
-"\n"
-"lxc cluster rename [<remote>:]<node> <new-name>\n"
-"    Rename a cluster node.\n"
-"\n"
-"lxc cluster delete [<remote>:]<node> [--force]\n"
-"    Delete a node from the cluster."
+#: lxc/storage.go:728 lxc/storage.go:729
+msgid "Unset storage pool configuration keys"
 msgstr ""
 
-#: lxc/config.go:85
-msgid ""
-"Usage: lxc config <subcommand> [options]\n"
-"\n"
-"Change container or server configuration options.\n"
-"\n"
-"*Container configuration*\n"
-"\n"
-"lxc config get [<remote>:][container] <key>\n"
-"    Get container or server configuration key.\n"
-"\n"
-"lxc config set [<remote>:][container] <key> <value>\n"
-"    Set container or server configuration key.\n"
-"\n"
-"lxc config unset [<remote>:][container] <key>\n"
-"    Unset container or server configuration key.\n"
-"\n"
-"lxc config show [<remote>:][container] [--expanded]\n"
-"    Show container or server configuration.\n"
-"\n"
-"lxc config edit [<remote>:][container]\n"
-"    Edit configuration, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"*Container metadata*\n"
-"\n"
-"lxc config metadata show [<remote>:][container]\n"
-"    Show the container metadata.yaml content.\n"
-"\n"
-"lxc config metadata edit [<remote>:][container]\n"
-"    Edit the container metadata.yaml, either by launching external editor or "
-"reading STDIN.\n"
-"\n"
-"*Container templates*\n"
-"\n"
-"lxc config template list [<remote>:][container]\n"
-"    List the names of template files for a container.\n"
-"\n"
-"lxc config template show [<remote>:][container] [template]\n"
-"    Show the content of a template file for a container.\n"
-"\n"
-"lxc config template create [<remote>:][container] [template]\n"
-"    Add an empty template file for a container.\n"
-"\n"
-"lxc config template edit [<remote>:][container] [template]\n"
-"    Edit the content of a template file for a container, either by launching "
-"external editor or reading STDIN.\n"
-"\n"
-"lxc config template delete [<remote>:][container] [template]\n"
-"    Delete a template file for a container.\n"
-"\n"
-"\n"
-"*Device management*\n"
-"\n"
-"lxc config device add [<remote>:]<container> <device> <type> [key=value...]\n"
-"    Add a device to a container.\n"
-"\n"
-"lxc config device get [<remote>:]<container> <device> <key>\n"
-"    Get a device property.\n"
-"\n"
-"lxc config device set [<remote>:]<container> <device> <key> <value>\n"
-"    Set a device property.\n"
-"\n"
-"lxc config device unset [<remote>:]<container> <device> <key>\n"
-"    Unset a device property.\n"
-"\n"
-"lxc config device override [<remote>:]<container> <device> [key=value...]\n"
-"    Copy a profile inherited device into local container config.\n"
-"\n"
-"lxc config device list [<remote>:]<container>\n"
-"    List devices for container.\n"
-"\n"
-"lxc config device show [<remote>:]<container>\n"
-"    Show full device details for container.\n"
-"\n"
-"lxc config device remove [<remote>:]<container> <name>...\n"
-"    Remove device from container.\n"
-"\n"
-"*Client trust store management*\n"
-"\n"
-"lxc config trust list [<remote>:]\n"
-"    List all trusted certs.\n"
-"\n"
-"lxc config trust add [<remote>:] <certfile.crt>\n"
-"    Add certfile.crt to trusted hosts.\n"
-"\n"
-"lxc config trust remove [<remote>:] [hostname|fingerprint]\n"
-"    Remove the cert from trusted hosts.\n"
-"\n"
-"*Examples*\n"
-"\n"
-"cat config.yaml | lxc config edit <container>\n"
-"    Update the container configuration from config.yaml.\n"
-"\n"
-"lxc config device add [<remote>:]container1 <device-name> disk source=/share/"
-"c1 path=opt\n"
-"    Will mount the host's /share/c1 onto /opt in the container.\n"
-"\n"
-"lxc config set [<remote>:]<container> limits.cpu 2\n"
-"    Will set a CPU limit of \"2\" for the container.\n"
-"\n"
-"lxc config set core.https_address [::]:8443\n"
-"    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
-"\n"
-"lxc config set core.trust_password blah\n"
-"    Will set the server's trust password to blah."
+#: lxc/storage_volume.go:1240 lxc/storage_volume.go:1241
+msgid "Unset storage volume configuration keys"
 msgstr ""
 
-#: lxc/console.go:31
-msgid ""
-"Usage: lxc console [<remote>:]<container> [-l]\n"
-"\n"
-"Interact with the container's console device and log."
+#: lxc/image.go:835
+#, c-format
+msgid "Uploaded: %s"
 msgstr ""
 
-#: lxc/copy.go:30
-msgid ""
-"Usage: lxc copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>] "
-"[--ephemeral|e] [--profile|-p <profile>...] [--config|-c <key=value>...] [--"
-"container-only] [--target <node>]\n"
-"\n"
-"Copy containers within or in between LXD instances."
+#: lxc/delete.go:47
+msgid "User aborted delete operation"
 msgstr ""
 
-#: lxc/delete.go:27
+#: lxc/utils/cancel.go:40
 msgid ""
-"Usage: lxc delete [<remote>:]<container>[/<snapshot>] "
-"[[<remote>:]<container>[/<snapshot>]...]\n"
-"\n"
-"Delete containers and snapshots."
+"User signaled us three times, exiting. The remote operation will keep "
+"running."
 msgstr ""
 
-#: lxc/exec.go:53
-msgid ""
-"Usage: lxc exec [<remote>:]<container> [-t] [-T] [-n] [--mode=auto|"
-"interactive|non-interactive] [--env KEY=VALUE...] [--] <command line>\n"
-"\n"
-"Execute commands in containers.\n"
-"\n"
-"The command is executed directly using exec, so there is no shell and shell "
-"patterns (variables, file redirects, ...)\n"
-"won't be understood. If you need a shell environment you need to execute the "
-"shell executable, passing the shell commands\n"
-"as arguments, for example:\n"
-"\n"
-"    lxc exec <container> -- sh -c \"cd /tmp && pwd\"\n"
-"\n"
-"Mode defaults to non-interactive, interactive mode is selected if both stdin "
-"AND stdout are terminals (stderr is ignored)."
+#: lxc/query.go:35
+msgid "Wait for the operation to complete"
 msgstr ""
 
-#: lxc/file.go:39
+#: lxc/restore.go:36
 msgid ""
-"Usage: lxc file <subcommand> [options]\n"
-"\n"
-"Manage files in containers.\n"
-"\n"
-"lxc file pull [-r|--recursive] [<remote>:]<container>/<path> "
-"[[<remote>:]<container>/<path>...] <target path>\n"
-"    Pull files from containers.\n"
-"\n"
-"lxc file push [-r|--recursive] [-p|--create-dirs] [--uid=UID] [--gid=GID] [--"
-"mode=MODE] <source path> [<source path>...] [<remote>:]<container>/<path>\n"
-"    Push files into containers.\n"
-"\n"
-"lxc file delete [<remote>:]<container>/<path> [[<remote>:]<container>/"
-"<path>...]\n"
-"    Delete files in containers.\n"
-"\n"
-"lxc file edit [<remote>:]<container>/<path>\n"
-"    Edit files in containers using the default text editor.\n"
-"\n"
-"*Examples*\n"
-"lxc file push /etc/hosts foo/etc/hosts\n"
-"   To push /etc/hosts into the container \"foo\".\n"
-"\n"
-"lxc file pull foo/etc/hosts .\n"
-"   To pull /etc/hosts from the container and write it to the current "
-"directory."
+"Whether or not to restore the container's running state from snapshot (if "
+"available)"
 msgstr ""
 
-#: lxc/finger.go:15
-msgid ""
-"Usage: lxc finger [<remote>:]\n"
-"\n"
-"Check if the LXD server is alive."
+#: lxc/snapshot.go:31
+msgid "Whether or not to snapshot the container's running state"
 msgstr ""
 
-#: lxc/help.go:22
-msgid ""
-"Usage: lxc help [--all]\n"
-"\n"
-"Help page for the LXD client."
+#: lxc/network.go:765 lxc/operation.go:140 lxc/remote.go:436 lxc/remote.go:441
+msgid "YES"
 msgstr ""
 
-#: lxc/image.go:73
-msgid ""
-"Usage: lxc image <subcommand> [options]\n"
-"\n"
-"Manipulate container images.\n"
-"\n"
-"In LXD containers are created from images. Those images were themselves\n"
-"either generated from an existing container or downloaded from an image\n"
-"server.\n"
-"\n"
-"When using remote images, LXD will automatically cache images for you\n"
-"and remove them upon expiration.\n"
-"\n"
-"The image unique identifier is the hash (sha-256) of its representation\n"
-"as a compressed tarball (or for split images, the concatenation of the\n"
-"metadata and rootfs tarballs).\n"
-"\n"
-"Images can be referenced by their full hash, shortest unique partial\n"
-"hash or alias name (if one is set).\n"
-"\n"
-"\n"
-"lxc image import <tarball>|<dir> [<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) or an image directory into the LXD "
-"image store.\n"
-"    Directory import is only available on Linux and must be performed as "
-"root.\n"
-"\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"
-"    Delete one or more images from the LXD image store.\n"
-"\n"
-"lxc image refresh [<remote>:]<image> [[<remote>:]<image>...]\n"
-"    Refresh one or more images from its parent remote.\n"
-"\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"
-"    The target may be an existing directory, file name, or \"-\" to specify\n"
-"    stdout.  The target MUST be a directory when exporting a split image.\n"
-"    If the target is a directory, the image's name (each part's name for\n"
-"    split images) as found in the database will be used for the exported\n"
-"    image.  If the target is a file (not a directory and not stdout), then\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"
-"    Print everything LXD knows about a given image.\n"
-"\n"
-"lxc image list [<remote>:] [filter] [--format csv|json|table|yaml] [-c "
-"<columns>]\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"
-"    The -c option takes a (optionally comma-separated) list of arguments "
-"that\n"
-"    control which image attributes to output when displaying in table or "
-"csv\n"
-"    format.\n"
-"\n"
-"    Default column layout is: lfpdasu\n"
-"\n"
-"    Column shorthand chars:\n"
-"\n"
-"        l - Shortest image alias (and optionally number of other aliases)\n"
-"\n"
-"        L - Newline-separated list of all image aliases\n"
-"\n"
-"        f - Fingerprint\n"
-"\n"
-"        p - Whether image is public\n"
-"\n"
-"        d - Description\n"
-"\n"
-"        a - Architecture\n"
-"\n"
-"        s - Size\n"
-"\n"
-"        u - Upload date\n"
-"\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"
-"    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"
-"    Create a new alias for an existing image.\n"
-"\n"
-"lxc image alias rename [<remote>:]<alias> <new-name>\n"
-"    Rename an alias.\n"
-"\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."
+#: lxc/exec.go:122
+msgid "You can't pass -t and -T at the same time"
 msgstr ""
 
-#: lxc/info.go:27
+#: lxc/exec.go:126
+msgid "You can't pass -t or -T at the same time as --mode"
+msgstr ""
+
+#: lxc/copy.go:78
+msgid "You must specify a destination container name when using --target"
+msgstr ""
+
+#: lxc/copy.go:73 lxc/move.go:188
+msgid "You must specify a source container name"
+msgstr ""
+
+#: lxc/copy.go:68 lxc/move.go:91 lxc/move.go:183
+msgid "You must use the same source and destination remote when using --target"
+msgstr ""
+
+#: lxc/alias.go:53
+msgid "add <alias> <target>"
+msgstr ""
+
+#: lxc/config_trust.go:57
+msgid "add [<remote>:] <cert>"
+msgstr ""
+
+#: lxc/profile.go:100
+msgid "add [<remote>:]<container> <profile>"
+msgstr ""
+
+#: lxc/config_device.go:74
+msgid "add [<remote>:]<container|profile> <device> <type> [key=value...]"
+msgstr ""
+
+#: lxc/remote.go:82
+msgid "add [<remote>] <IP|FQDN|URL>"
+msgstr ""
+
+#: lxc/alias.go:21 lxc/image_alias.go:24
+msgid "alias"
+msgstr ""
+
+#: lxc/profile.go:160
+msgid "assign [<remote>:]<container> <profiles>"
+msgstr ""
+
+#: lxc/network.go:102
+msgid "attach [<remote>:]<network> <container> [device name] [interface name]"
+msgstr ""
+
+#: lxc/storage_volume.go:120
+msgid "attach [<remote>:]<pool> <volume> <container> [device name] <path>"
+msgstr ""
+
+#: lxc/storage_volume.go:199
 msgid ""
-"Usage: lxc info [<remote>:][<container>] [--show-log] [--resources]\n"
-"\n"
-"Show container or server information.\n"
-"\n"
-"lxc info [<remote>:]<container> [--show-log]\n"
-"    For container information.\n"
-"\n"
-"lxc info [<remote>:] [--resources]\n"
-"    For LXD server information."
+"attach-profile [<remote:>]<pool> <volume> <profile> [device name] <path>"
 msgstr ""
 
-#: lxc/init.go:79
+#: lxc/network.go:175
 msgid ""
-"Usage: lxc init [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
-"profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
-"<node>]\n"
-"\n"
-"Create containers from images.\n"
-"\n"
-"Not specifying -p will result in the default profile.\n"
-"Specifying \"-p\" with no argument will result in no profile.\n"
-"\n"
-"Examples:\n"
-"    lxc init ubuntu:16.04 u1"
+"attach-profile [<remote>:]<network> <profile> [device name] [interface name]"
+msgstr ""
+
+#: lxc/cluster.go:24
+msgid "cluster"
+msgstr ""
+
+#: lxc/config.go:27
+msgid "config"
+msgstr ""
+
+#: lxc/console.go:30
+msgid "console [<remote>:]<container>"
+msgstr ""
+
+#: lxc/storage_volume.go:280
+msgid "copy <pool>/<volume> <pool>/<volume>"
+msgstr ""
+
+#: lxc/image.go:128
+msgid "copy [<remote>:]<image> <remote>:"
+msgstr ""
+
+#: lxc/profile.go:238
+msgid "copy [<remote>:]<profile> [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/copy.go:32
+msgid "copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>]"
+msgstr ""
+
+#: lxc/image_alias.go:57
+msgid "create [<remote>:]<alias> <fingerprint>"
+msgstr ""
+
+#: lxc/config_template.go:65
+msgid "create [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/network.go:248
+msgid "create [<remote>:]<network> [key=value...]"
+msgstr ""
+
+#: lxc/storage.go:87
+msgid "create [<remote>:]<pool> <driver> [key=value]..."
+msgstr ""
+
+#: lxc/storage_volume.go:424
+msgid "create [<remote>:]<pool> <volume> [key=value]..."
+msgstr ""
+
+#: lxc/profile.go:295
+msgid "create [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/remote.go:453
+msgid "default"
+msgstr ""
+
+#: lxc/image_alias.go:103
+msgid "delete [<remote>:]<alias>"
+msgstr ""
+
+#: lxc/config_template.go:107
+msgid "delete [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/file.go:70
+msgid "delete [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...]"
+msgstr ""
+
+#: lxc/delete.go:27
+msgid ""
+"delete [<remote>:]<container>[/<snapshot>] [[<remote>:]<container>[/"
+"<snapshot>]...]"
+msgstr ""
+
+#: lxc/image.go:258
+msgid "delete [<remote>:]<image> [[<remote>:]<image>...]"
+msgstr ""
+
+#: lxc/network.go:317
+msgid "delete [<remote>:]<network>"
+msgstr ""
+
+#: lxc/operation.go:51
+msgid "delete [<remote>:]<operation>"
+msgstr ""
+
+#: lxc/storage.go:158
+msgid "delete [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:498
+msgid "delete [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:345
+msgid "delete [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/storage.go:431
+msgid "description"
+msgstr ""
+
+#: lxc/network.go:365
+msgid "detach [<remote>:]<network> <container> [device name]"
+msgstr ""
+
+#: lxc/storage_volume.go:559
+msgid "detach [<remote>:]<pool> <volume> <container> [device name]"
+msgstr ""
+
+#: lxc/storage_volume.go:641
+msgid "detach-profile [<remote:>]<pool> <volume> <profile> [device name]"
+msgstr ""
+
+#: lxc/network.go:450
+msgid "detach-profile [<remote>:]<network> <container> [device name]"
+msgstr ""
+
+#: lxc/config_device.go:22
+msgid "device"
+msgstr ""
+
+#: lxc/init.go:223
+msgid "didn't get any affected image, container or snapshot from server"
+msgstr ""
+
+#: lxc/image.go:819
+msgid "disabled"
+msgstr ""
+
+#: lxc/storage.go:430
+msgid "driver"
+msgstr ""
+
+#: lxc/config_template.go:150
+msgid "edit [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/file.go:120
+msgid "edit [<remote>:]<container>/<path>"
+msgstr ""
+
+#: lxc/image.go:310
+msgid "edit [<remote>:]<image>"
+msgstr ""
+
+#: lxc/network.go:535
+msgid "edit [<remote>:]<network>"
+msgstr ""
+
+#: lxc/storage.go:206
+msgid "edit [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:722
+msgid "edit [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:394
+msgid "edit [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/config.go:86 lxc/config_metadata.go:52
+msgid "edit [<remote>:][container]"
+msgstr ""
+
+#: lxc/image.go:821
+msgid "enabled"
+msgstr ""
+
+#: lxc/action.go:234
+#, c-format
+msgid "error: %v"
+msgstr ""
+
+#: lxc/exec.go:37
+msgid "exec [<remote>:]<container> [flags] [--] <command line>"
+msgstr ""
+
+#: lxc/image.go:433
+msgid "export [<remote>:]<image> [target]"
+msgstr ""
+
+#: lxc/file.go:38
+msgid "file"
+msgstr ""
+
+#: lxc/config_device.go:177
+msgid "get [<remote>:]<container|profile> <device> <key>"
+msgstr ""
+
+#: lxc/network.go:658
+msgid "get [<remote>:]<network> <key>"
+msgstr ""
+
+#: lxc/storage.go:326
+msgid "get [<remote>:]<pool> <key>"
+msgstr ""
+
+#: lxc/storage_volume.go:851
+msgid "get [<remote>:]<pool> <volume> <key>"
+msgstr ""
+
+#: lxc/profile.go:518
+msgid "get [<remote>:]<profile> <key>"
+msgstr ""
+
+#: lxc/config.go:287
+msgid "get [<remote>:][container] <key>"
+msgstr ""
+
+#: lxc/remote.go:378
+msgid "get-default"
+msgstr ""
+
+#: lxc/image.go:40
+msgid "image"
+msgstr ""
+
+#: lxc/image.go:569
+msgid ""
+"import <tarball>|<directory>|<URL> [<rootfs tarball>] [<remote>:] "
+"[key=value...]"
+msgstr ""
+
+#: lxc/storage.go:428
+msgid "info"
+msgstr ""
+
+#: lxc/image.go:774
+msgid "info [<remote>:]<image>"
+msgstr ""
+
+#: lxc/storage.go:381
+msgid "info [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/info.go:27
+msgid "info [<remote>:][<container>]"
+msgstr ""
+
+#: lxc/init.go:33
+msgid "init [<remote>:]<image> [<remote>:][<name>]"
 msgstr ""
 
 #: lxc/launch.go:20
+msgid "launch [<remote>:]<image> [<remote>:][<name>]"
+msgstr ""
+
+#: lxc/alias.go:96 lxc/remote.go:411
+msgid "list"
+msgstr ""
+
+#: lxc/cluster.go:56 lxc/config_trust.go:112 lxc/network.go:716
+#: lxc/operation.go:95 lxc/profile.go:565 lxc/storage.go:488
+msgid "list [<remote>:]"
+msgstr ""
+
+#: lxc/image.go:887
+msgid "list [<remote>:] [filter]"
+msgstr ""
+
+#: lxc/image_alias.go:146
+msgid "list [<remote>:] [filters...]"
+msgstr ""
+
+#: lxc/list.go:45
+msgid "list [<remote>:] [filters]"
+msgstr ""
+
+#: lxc/config_template.go:234
+msgid "list [<remote>:]<container>"
+msgstr ""
+
+#: lxc/config_device.go:249
+msgid "list [<remote>:]<container|profile>"
+msgstr ""
+
+#: lxc/storage_volume.go:915
+msgid "list [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/network.go:806
+msgid "list-leases [<remote>:]<network>"
+msgstr ""
+
+#: lxc/alias.go:57
 msgid ""
-"Usage: lxc launch [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
-"profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
-"<node>]\n"
-"\n"
-"Create and start containers from images.\n"
-"\n"
-"Not specifying -p will result in the default profile.\n"
-"Specifying \"-p\" with no argument will result in no profile.\n"
-"\n"
-"Examples:\n"
-"    lxc launch ubuntu:16.04 u1"
+"lxc alias add list list -c ns46S\n"
+"    Overwrite the \"list\" command to pass -c ns46S."
 msgstr ""
 
-#: lxc/list.go:44
+#: lxc/alias.go:200
 msgid ""
-"Usage: lxc list [<remote>:] [filters] [--format csv|json|table|yaml] [-c "
-"<columns>] [--fast]\n"
-"\n"
-"List the existing containers.\n"
-"\n"
-"Default column layout: ns46tS\n"
-"Fast column layout: nsacPt\n"
-"\n"
-"*Filters*\n"
-"A single keyword like \"web\" which will list any container with a name "
-"starting by \"web\".\n"
-"\n"
-"A regular expression on the container name. (e.g. .*web.*01$).\n"
-"\n"
-"A key/value pair referring to a configuration item. For those, the namespace "
-"can be abbreviated to the smallest unambiguous identifier.\n"
-"\t- \"user.blah=abc\" will list all containers with the \"blah\" user "
-"property set to \"abc\".\n"
-"\n"
-"\t- \"u.blah=abc\" will do the same\n"
-"\n"
-"\t- \"security.privileged=true\" will list all privileged containers\n"
-"\n"
-"\t- \"s.privileged=true\" will do the same\n"
-"\n"
-"A regular expression matching a configuration item or its value. (e.g. "
-"volatile.eth0.hwaddr=00:16:3e:.*).\n"
-"\n"
-"*Columns*\n"
-"The -c option takes a comma separated list of arguments that control\n"
-"which container attributes to output when displaying in table or csv\n"
-"format.\n"
-"\n"
-"Column arguments are either pre-defined shorthand chars (see below),\n"
-"or (extended) config keys.\n"
-"\n"
-"Commas between consecutive shorthand chars are optional.\n"
-"\n"
-"Pre-defined column shorthand chars:\n"
-"\n"
-"\t4 - IPv4 address\n"
-"\n"
-"\t6 - IPv6 address\n"
-"\n"
-"\ta - Architecture\n"
-"\n"
-"\tb - Storage pool\n"
-"\n"
-"\tc - Creation date\n"
-"\n"
-"\td - Description\n"
-"\n"
-"\tl - Last used date\n"
-"\n"
-"\tn - Name\n"
-"\n"
-"\tN - Number of Processes\n"
-"\n"
-"\tp - PID of the container's init process\n"
-"\n"
-"\tP - Profiles\n"
-"\n"
-"\ts - State\n"
-"\n"
-"\tS - Number of snapshots\n"
-"\n"
-"\tt - Type (persistent or ephemeral)\n"
-"\n"
-"\tL - Location of the container (e.g. its node)\n"
-"\n"
-"Custom columns are defined with \"key[:name][:maxWidth]\":\n"
-"\n"
-"\tKEY: The (extended) config key to display\n"
-"\n"
-"\tNAME: Name to display in the column header.\n"
-"\tDefaults to the key if not specified or empty.\n"
-"\n"
-"\tMAXWIDTH: Max width of the column (longer results are truncated).\n"
-"\tDefaults to -1 (unlimited). Use 0 to limit to the column header size.\n"
-"\n"
-"*Examples*\n"
-"lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:"
-"MAC\n"
-"\tShows a list of containers using the \"NAME\", \"BASE IMAGE\", \"STATE\", "
-"\"IPV4\",\n"
-"\t\"IPV6\" and \"MAC\" columns.\n"
+"lxc alias remove my-list\n"
+"    Remove the \"my-list\" alias."
+msgstr ""
+
+#: lxc/alias.go:149
+msgid ""
+"lxc alias rename list my-list\n"
+"    Rename existing alias \"list\" to \"my-list\"."
+msgstr ""
+
+#: lxc/config_device.go:78
+msgid ""
+"lxc config device add [<remote>:]container1 <device-name> disk source=/share/"
+"c1 path=opt\n"
+"    Will mount the host's /share/c1 onto /opt in the container."
+msgstr ""
+
+#: lxc/config.go:90
+msgid ""
+"lxc config edit <container> < container.yaml\n"
+"    Update the container configuration from config.yaml."
+msgstr ""
+
+#: lxc/config.go:357
+msgid ""
+"lxc config set [<remote>:]<container> limits.cpu 2\n"
+"    Will set a CPU limit of \"2\" for the container.\n"
 "\n"
-"\t\"BASE IMAGE\" and \"MAC\" are custom columns generated from container "
-"configuration keys.\n"
+"lxc config set core.https_address [::]:8443\n"
+"    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
 "\n"
-"lxc list -c ns,user.comment:comment\n"
-"\tList images with their running state and user comment. "
+"lxc config set core.trust_password blah\n"
+"    Will set the server's trust password to blah."
 msgstr ""
 
-#: lxc/manpage.go:20
+#: lxc/file.go:187
 msgid ""
-"Usage: lxc manpage <directory>\n"
-"\n"
-"Generate all the LXD manpages."
+"lxc file pull foo/etc/hosts .\n"
+"   To pull /etc/hosts from the container and write it to the current "
+"directory."
 msgstr ""
 
-#: lxc/monitor.go:49
+#: lxc/file.go:326
 msgid ""
-"Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
-"\n"
-"Monitor a local or remote LXD server.\n"
+"lxc file push /etc/hosts foo/etc/hosts\n"
+"   To push /etc/hosts into the container \"foo\"."
+msgstr ""
+
+#: lxc/image.go:314
+msgid ""
+"lxc image edit <image>\n"
+"    Launch a text editor to edit the properties\n"
 "\n"
-"By default the monitor will listen to all message types.\n"
+"lxc image edit <image> < image.yaml\n"
+"    Load the image properties from a YAML file"
+msgstr ""
+
+#: lxc/info.go:31
+msgid ""
+"lxc info [<remote>:]<container> [--show-log]\n"
+"    For container information.\n"
 "\n"
-"Message types to listen for can be specified with --type.\n"
+"lxc info [<remote>:] [--resources]\n"
+"    For LXD server information."
+msgstr ""
+
+#: lxc/init.go:37
+msgid "lxc init ubuntu:16.04 u1"
+msgstr ""
+
+#: lxc/launch.go:24
+msgid "lxc launch ubuntu:16.04 u1"
+msgstr ""
+
+#: lxc/list.go:103
+msgid ""
+"lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:"
+"MAC\n"
+"  Show containers using the \"NAME\", \"BASE IMAGE\", \"STATE\", \"IPV4\", "
+"\"IPV6\" and \"MAC\" columns.\n"
+"  \"BASE IMAGE\" and \"MAC\" are custom columns generated from container "
+"configuration keys.\n"
 "\n"
-"*Examples*\n"
+"lxc list -c ns,user.comment:comment\n"
+"  List images with their running state and user comment."
+msgstr ""
+
+#: lxc/monitor.go:35
+msgid ""
 "lxc monitor --type=logging\n"
 "    Only show log messages.\n"
 "\n"
 "lxc monitor --pretty --type=logging --loglevel=info\n"
 "    Show a pretty log of messages with info level or higher.\n"
+"\n"
+"lxc monitor --type=lifecycle\n"
+"    Only show lifecycle events."
 msgstr ""
 
-#: lxc/move.go:26
+#: lxc/move.go:33
 msgid ""
-"Usage: lxc move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
-"<snapshot>]] [--container-only] [--target <node>]\n"
-"\n"
-"Move containers within or in between LXD instances.\n"
-"\n"
 "lxc move [<remote>:]<source container> [<remote>:][<destination container>] "
 "[--container-only]\n"
 "    Move a container between two hosts, renaming it if destination name "
@@ -1953,160 +2844,14 @@ msgid ""
 "    Rename a snapshot."
 msgstr ""
 
-#: lxc/network.go:52
-msgid ""
-"Usage: lxc network <subcommand> [options]\n"
-"\n"
-"Manage and attach containers to networks.\n"
-"\n"
-"lxc network list [<remote>:]\n"
-"    List available networks.\n"
-"\n"
-"lxc network list-leases [<remote>:]<network>\n"
-"    List the DHCP leases for the network\n"
-"\n"
-"lxc network show [<remote>:]<network> [--target <node>]\n"
-"    Show details of a network.\n"
-"\n"
-"lxc network create [<remote>:]<network> [key=value...] [--target <node>]\n"
-"    Create a network.\n"
-"\n"
-"lxc network get [<remote>:]<network> <key> [--target <node>]\n"
-"    Get network configuration.\n"
-"\n"
-"lxc network set [<remote>:]<network> <key> <value>\n"
-"    Set network configuration.\n"
-"\n"
-"lxc network unset [<remote>:]<network> <key>\n"
-"    Unset network configuration.\n"
-"\n"
-"lxc network delete [<remote>:]<network>\n"
-"    Delete a network.\n"
-"\n"
-"lxc network edit [<remote>:]<network>\n"
-"    Edit network, either by launching external editor or reading STDIN.\n"
-"\n"
-"lxc network rename [<remote>:]<network> <new-name>\n"
-"    Rename a network.\n"
-"\n"
-"lxc network attach [<remote>:]<network> <container> [device name] [interface "
-"name]\n"
-"    Attach a network interface connecting the network to a specified "
-"container.\n"
-"\n"
-"lxc network attach-profile [<remote>:]<network> <profile> [device name] "
-"[interface name]\n"
-"    Attach a network interface connecting the network to a specified "
-"profile.\n"
-"\n"
-"lxc network detach [<remote>:]<network> <container> [device name]\n"
-"    Remove a network interface connecting the network to a specified "
-"container.\n"
-"\n"
-"lxc network detach-profile [<remote>:]<network> <container> [device name]\n"
-"    Remove a network interface connecting the network to a specified "
-"profile.\n"
-"\n"
-"*Examples*\n"
-"cat network.yaml | lxc network edit <network>\n"
-"    Update a network using the content of network.yaml"
-msgstr ""
-
-#: lxc/operation.go:25
+#: lxc/operation.go:176
 msgid ""
-"Usage: lxc operation <subcommand> [options]\n"
-"\n"
-"List, show and delete background operations.\n"
-"\n"
-"lxc operation list [<remote>:]\n"
-"    List background operations.\n"
-"\n"
-"lxc operation show [<remote>:]<operation>\n"
-"    Show details on a background operation.\n"
-"\n"
-"lxc operation delete [<remote>:]<operation>\n"
-"    Delete a background operation (will attempt to cancel).\n"
-"\n"
-"*Examples*\n"
 "lxc operation show 344a79e4-d88a-45bf-9c39-c72c26f6ab8a\n"
 "    Show details on that operation UUID"
 msgstr ""
 
-#: lxc/profile.go:51
+#: lxc/profile.go:165
 msgid ""
-"Usage: lxc profile <subcommand> [options]\n"
-"\n"
-"Manage container configuration profiles.\n"
-"\n"
-"*Profile configuration*\n"
-"lxc profile list [<remote>:]\n"
-"    List available profiles.\n"
-"\n"
-"lxc profile show [<remote>:]<profile>\n"
-"    Show details of a profile.\n"
-"\n"
-"lxc profile create [<remote>:]<profile>\n"
-"    Create a profile.\n"
-"\n"
-"lxc profile copy [<remote>:]<profile> [<remote>:]<profile>\n"
-"    Copy the profile.\n"
-"\n"
-"lxc profile get [<remote>:]<profile> <key>\n"
-"    Get profile configuration.\n"
-"\n"
-"lxc profile set [<remote>:]<profile> <key> <value>\n"
-"    Set profile configuration.\n"
-"\n"
-"lxc profile unset [<remote>:]<profile> <key>\n"
-"    Unset profile configuration.\n"
-"\n"
-"lxc profile delete [<remote>:]<profile>\n"
-"    Delete a profile.\n"
-"\n"
-"lxc profile edit [<remote>:]<profile>\n"
-"    Edit profile, either by launching external editor or reading STDIN.\n"
-"\n"
-"lxc profile rename [<remote>:]<profile> <new-name>\n"
-"    Rename a profile.\n"
-"\n"
-"*Profile assignment*\n"
-"lxc profile assign [<remote>:]<container> <profiles>\n"
-"    Replace the current set of profiles for the container by the one "
-"provided.\n"
-"\n"
-"lxc profile add [<remote>:]<container> <profile>\n"
-"    Add a profile to a container\n"
-"\n"
-"lxc profile remove [<remote>:]<container> <profile>\n"
-"    Remove the profile from a container\n"
-"\n"
-"*Device management*\n"
-"lxc profile device list [<remote>:]<profile>\n"
-"    List devices in the given profile.\n"
-"\n"
-"lxc profile device show [<remote>:]<profile>\n"
-"    Show full device details in the given profile.\n"
-"\n"
-"lxc profile device remove [<remote>:]<profile> <name>\n"
-"    Remove a device from a profile.\n"
-"\n"
-"lxc profile device get [<remote>:]<profile> <name> <key>\n"
-"    Get a device property.\n"
-"\n"
-"lxc profile device set [<remote>:]<profile> <name> <key> <value>\n"
-"    Set a device property.\n"
-"\n"
-"lxc profile device unset [<remote>:]<profile> <name> <key>\n"
-"    Unset a device property.\n"
-"\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.\n"
-"\n"
-"*Examples*\n"
-"cat profile.yaml | lxc profile edit <profile>\n"
-"    Update a profile using the content of profile.yaml\n"
-"\n"
 "lxc profile assign foo default,bar\n"
 "    Set the profiles for \"foo\" to \"default\" and \"bar\".\n"
 "\n"
@@ -2117,72 +2862,26 @@ msgid ""
 "    Remove all profile from \"foo\""
 msgstr ""
 
-#: lxc/publish.go:28
+#: lxc/profile.go:398
 msgid ""
-"Usage: lxc publish [<remote>:]<container>[/<snapshot>] [<remote>:] [--"
-"alias=ALIAS...] [prop-key=prop-value...]\n"
-"\n"
-"Publish containers as images."
+"lxc profile edit <profile> < profile.yaml\n"
+"    Update a profile using the content of profile.yaml"
 msgstr ""
 
-#: lxc/query.go:25
+#: lxc/query.go:29
 msgid ""
-"Usage: lxc query [-X <action>] [-d <data>] [--wait] [--raw] [<remote>:]<API "
-"path>\n"
-"\n"
-"Send a raw query to LXD.\n"
-"\n"
-"*Examples*\n"
 "lxc query -X DELETE --wait /1.0/containers/c1\n"
 "    Delete local container \"c1\"."
 msgstr ""
 
-#: lxc/remote.go:40
-msgid ""
-"Usage: lxc remote <subcommand> [options]\n"
-"\n"
-"Manage the list of remote LXD servers.\n"
-"\n"
-"lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--"
-"password=PASSWORD] [--public] [--protocol=PROTOCOL] [--auth-type=AUTH_TYPE]\n"
-"    Add the remote <remote> at <url>.\n"
-"\n"
-"lxc remote remove <remote>\n"
-"    Remove the remote <remote>.\n"
-"\n"
-"lxc remote list\n"
-"    List all remotes.\n"
-"\n"
-"lxc remote rename <old name> <new name>\n"
-"    Rename remote <old name> to <new name>.\n"
-"\n"
-"lxc remote set-url <remote> <url>\n"
-"    Update <remote>'s url to <url>.\n"
-"\n"
-"lxc remote set-default <remote>\n"
-"    Set the default remote.\n"
-"\n"
-"lxc remote get-default\n"
-"    Print the default remote."
-msgstr ""
-
-#: lxc/rename.go:18
+#: lxc/snapshot.go:26
 msgid ""
-"Usage: lxc rename [<remote>:]<container>[/<snapshot>] [<container>[/"
-"<snapshot>]]\n"
-"\n"
-"Rename a container or snapshot."
+"lxc snapshot u1 snap0\n"
+"    Create a snapshot of \"u1\" called \"snap0\"."
 msgstr ""
 
-#: lxc/restore.go:22
+#: lxc/restore.go:28
 msgid ""
-"Usage: lxc restore [<remote>:]<container> <snapshot> [--stateful]\n"
-"\n"
-"Restore containers from snapshots.\n"
-"\n"
-"If --stateful is passed, then the running state will be restored too.\n"
-"\n"
-"*Examples*\n"
 "lxc snapshot u1 snap0\n"
 "    Create the snapshot.\n"
 "\n"
@@ -2190,121 +2889,20 @@ msgid ""
 "    Restore the snapshot."
 msgstr ""
 
-#: lxc/snapshot.go:19
+#: lxc/storage.go:210
 msgid ""
-"Usage: lxc snapshot [<remote>:]<container> <snapshot name> [--stateful]\n"
-"\n"
-"Create container snapshots.\n"
-"\n"
-"When --stateful is used, LXD attempts to checkpoint the container's\n"
-"running state, including process memory state, TCP connections, ...\n"
-"\n"
-"*Examples*\n"
-"lxc snapshot u1 snap0\n"
-"    Create a snapshot of \"u1\" called \"snap0\"."
+"lxc storage edit [<remote>:]<pool> < pool.yaml\n"
+"    Update a storage pool using the content of pool.yaml."
 msgstr ""
 
-#: lxc/storage.go:67
+#: lxc/storage_volume.go:726
+msgid ""
+"lxc storage volume edit [<remote>:]<pool> <volume> < volume.yaml\n"
+"    Update a storage volume using the content of pool.yaml."
+msgstr ""
+
+#: lxc/storage_volume.go:1168
 msgid ""
-"Usage: lxc storage <subcommand> [options]\n"
-"\n"
-"Manage storage pools and volumes.\n"
-"\n"
-"*Storage pools*\n"
-"lxc storage list [<remote>:]\n"
-"    List available storage pools.\n"
-"\n"
-"lxc storage show [<remote>:]<pool> [--resources] [--target <node>]\n"
-"    Show details of a storage pool.\n"
-"\n"
-"lxc storage info [<remote>:]<pool> [--bytes]\n"
-"    Show information of a storage pool in yaml format.\n"
-"\n"
-"lxc storage create [<remote>:]<pool> <driver> [key=value]... [--target "
-"<node>]\n"
-"    Create a storage pool.\n"
-"\n"
-"lxc storage get [<remote>:]<pool> <key>\n"
-"    Get storage pool configuration.\n"
-"\n"
-"lxc storage set [<remote>:]<pool> <key> <value>\n"
-"    Set storage pool configuration.\n"
-"\n"
-"lxc storage unset [<remote>:]<pool> <key>\n"
-"    Unset storage pool configuration.\n"
-"\n"
-"lxc storage delete [<remote>:]<pool>\n"
-"    Delete a storage pool.\n"
-"\n"
-"lxc storage edit [<remote>:]<pool>\n"
-"    Edit storage pool, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"*Storage volumes*\n"
-"lxc storage volume list [<remote>:]<pool>\n"
-"    List available storage volumes on a storage pool.\n"
-"\n"
-"lxc storage volume show [<remote>:]<pool> <volume> [--target <node>]\n"
-"   Show details of a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume create [<remote>:]<pool> <volume> [key=value]... [--"
-"target <node>]\n"
-"    Create a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume rename [<remote>:]<pool> <old name> <new name> [--target "
-"<node>]\n"
-"    Rename a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume get [<remote>:]<pool> <volume> <key> [--target <node>]\n"
-"    Get storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume set [<remote>:]<pool> <volume> <key> <value> [--target "
-"<node>]\n"
-"    Set storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume unset [<remote>:]<pool> <volume> <key> [--target <node>]\n"
-"    Unset storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume delete [<remote>:]<pool> <volume> [--target <node>]\n"
-"    Delete a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume edit [<remote>:]<pool> <volume> [--target <node>]\n"
-"    Edit storage volume, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"lxc storage volume attach [<remote>:]<pool> <volume> <container> [device "
-"name] <path>\n"
-"    Attach a storage volume to the specified container.\n"
-"\n"
-"lxc storage volume attach-profile [<remote:>]<pool> <volume> <profile> "
-"[device name] <path>\n"
-"    Attach a storage volume to the specified profile.\n"
-"\n"
-"lxc storage volume detach [<remote>:]<pool> <volume> <container> [device "
-"name]\n"
-"    Detach a storage volume from the specified container.\n"
-"\n"
-"lxc storage volume detach-profile [<remote:>]<pool> <volume> <profile> "
-"[device name]\n"
-"\tDetach a storage volume from the specified profile.\n"
-"\n"
-"lxc storage volume copy <pool>/<volume> <pool>/<volume> [--config|-c "
-"<key=value>...]\n"
-"    Copy an existing volume to a new volume at the specified pool.\n"
-"\n"
-"lxc storage volume move [<pool>/]<volume> [<pool>/]<volume>\n"
-"    Move an existing volume to the specified pool.\n"
-"\n"
-"Unless specified through a prefix, all volume operations affect \"custom"
-"\" (user created) volumes.\n"
-"\n"
-"*Examples*\n"
-"cat pool.yaml | lxc storage edit [<remote>:]<pool>\n"
-"    Update a storage pool using the content of pool.yaml.\n"
-"\n"
-"cat pool.yaml | lxc storage volume edit [<remote>:]<pool> <volume>\n"
-"    Update a storage volume using the content of pool.yaml.\n"
-"\n"
 "lxc storage volume show default data\n"
 "    Will show the properties of a custom volume called \"data\" in the "
 "\"default\" pool.\n"
@@ -2314,191 +2912,303 @@ msgid ""
 "\" in the \"default\" pool."
 msgstr ""
 
-#: lxc/version.go:18
+#: lxc/config_metadata.go:27
+msgid "metadata"
+msgstr ""
+
+#: lxc/monitor.go:29
+msgid "monitor [<remote>:]"
+msgstr ""
+
+#: lxc/storage_volume.go:991
+msgid "move [<pool>/]<volume> [<pool>/]<volume>"
+msgstr ""
+
+#: lxc/move.go:28
 msgid ""
-"Usage: lxc version\n"
-"\n"
-"Print the version number of this client tool."
+"move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
+"<snapshot>]]"
 msgstr ""
 
-#: lxc/delete.go:46
-msgid "User aborted delete operation."
+#: lxc/storage.go:429
+msgid "name"
 msgstr ""
 
-#: lxc/utils/cancel.go:40
+#: lxc/network.go:30
+msgid "network"
+msgstr ""
+
+#: lxc/image.go:809 lxc/image.go:814 lxc/image.go:977
+msgid "no"
+msgstr ""
+
+#: lxc/remote.go:253
+msgid "ok (y/n)?"
+msgstr ""
+
+#: lxc/operation.go:23
+msgid "operation"
+msgstr ""
+
+#: lxc/config_device.go:316
+msgid "override [<remote>:]<container> <device> [key=value...]"
+msgstr ""
+
+#: lxc/action.go:47
+msgid "pause [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/config.go:52
+msgid "please use `lxc profile`"
+msgstr ""
+
+#: lxc/profile.go:28
+msgid "profile"
+msgstr ""
+
+#: lxc/publish.go:32
 msgid ""
-"User signaled us three times, exiting. The remote operation will keep "
-"running."
+"publish [<remote>:]<container>[/<snapshot>] [<remote>:] [flags] [prop-"
+"key=prop-value...]"
 msgstr ""
 
-#: lxc/query.go:36
-msgid "Wait for the operation to complete"
+#: lxc/file.go:183
+msgid ""
+"pull [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...] "
+"<target path>"
 msgstr ""
 
-#: lxc/restore.go:38
+#: lxc/file.go:322
 msgid ""
-"Whether or not to restore the container's running state from snapshot (if "
-"available)"
+"push <source path> [<remote>:]<container>/<path> [[<remote>:]<container>/"
+"<path>...]"
 msgstr ""
 
-#: lxc/snapshot.go:33
-msgid "Whether or not to snapshot the container's running state"
+#: lxc/query.go:25
+msgid "query [<remote>:]<API path>"
 msgstr ""
 
-#: lxc/network.go:560 lxc/operation.go:141 lxc/remote.go:382 lxc/remote.go:387
-msgid "YES"
+#: lxc/image.go:1210
+msgid "refresh [<remote>:]<image> [[<remote>:]<image>...]"
 msgstr ""
 
-#: lxc/exec.go:132
-msgid "You can't pass -t and -T at the same time"
+#: lxc/remote.go:32
+msgid "remote"
 msgstr ""
 
-#: lxc/exec.go:136
-msgid "You can't pass -t or -T at the same time as --mode"
+#: lxc/alias.go:195
+msgid "remove <alias>"
 msgstr ""
 
-#: lxc/copy.go:76
-msgid "You must specify a destination container name when using --target"
+#: lxc/remote.go:546
+msgid "remove <remote>"
 msgstr ""
 
-#: lxc/copy.go:71
-msgid "You must specify a source container name"
+#: lxc/config_trust.go:194
+msgid "remove [<remote>:] <hostname|fingerprint>"
 msgstr ""
 
-#: lxc/copy.go:66 lxc/move.go:71
-msgid "You must use the same source and destination remote when using --target"
+#: lxc/profile.go:630
+msgid "remove [<remote>:]<container> <profile>"
 msgstr ""
 
-#: lxc/main.go:72
-msgid "`lxc config profile` is deprecated, please use `lxc profile`"
+#: lxc/config_device.go:402
+msgid "remove [<remote>:]<container|profile> <name>..."
 msgstr ""
 
-#: lxc/alias.go:56 lxc/alias.go:102
-#, c-format
-msgid "alias %s already exists"
+#: lxc/cluster.go:235
+msgid "remove [<remote>:]<member>"
 msgstr ""
 
-#: lxc/alias.go:68 lxc/alias.go:97
-#, c-format
-msgid "alias %s doesn't exist"
+#: lxc/alias.go:144
+msgid "rename <old alias> <new alias>"
 msgstr ""
 
-#: lxc/remote.go:370
-msgid "can't remove the default remote"
+#: lxc/remote.go:484
+msgid "rename <remote> <new-name>"
 msgstr ""
 
-#: lxc/file.go:296
-msgid "can't supply uid/gid/mode in recursive mode"
+#: lxc/image_alias.go:247
+msgid "rename [<remote>:]<alias> <new-name>"
 msgstr ""
 
-#: lxc/remote.go:399
-msgid "default"
+#: lxc/rename.go:18
+msgid "rename [<remote>:]<container>[/<snapshot>] <container>[/<snapshot>]"
 msgstr ""
 
-#: lxc/storage.go:856
-msgid "description"
+#: lxc/cluster.go:189
+msgid "rename [<remote>:]<member> <new-name>"
 msgstr ""
 
-#: lxc/init.go:315
-msgid "didn't get any affected image, container or snapshot from server"
+#: lxc/network.go:870
+msgid "rename [<remote>:]<network> <new-name>"
 msgstr ""
 
-#: lxc/image.go:594
-msgid "disabled"
+#: lxc/storage_volume.go:1023
+msgid "rename [<remote>:]<pool> <old name> <new name>"
 msgstr ""
 
-#: lxc/storage.go:855
-msgid "driver"
+#: lxc/profile.go:702
+msgid "rename [<remote>:]<profile> <new-name>"
 msgstr ""
 
-#: lxc/image.go:596
-msgid "enabled"
+#: lxc/action.go:67
+msgid "restart [<remote>:]<container> [[<remote>:]<container>...]"
 msgstr ""
 
-#: lxc/action.go:155 lxc/main.go:33 lxc/main.go:191
-#, c-format
-msgid "error: %v"
+#: lxc/restore.go:22
+msgid "restore [<remote>:]<container> <snapshot>"
 msgstr ""
 
-#: lxc/help.go:37 lxc/main.go:133
-#, c-format
-msgid "error: unknown command: %s"
+#: lxc/config_device.go:491
+msgid "set [<remote>:]<container|profile> <device> <key> <value>"
 msgstr ""
 
-#: lxc/storage.go:853
-msgid "info"
+#: lxc/network.go:918
+msgid "set [<remote>:]<network> <key> <value>"
 msgstr ""
 
-#: lxc/storage.go:854
-msgid "name"
+#: lxc/storage.go:571
+msgid "set [<remote>:]<pool> <key> <value>"
 msgstr ""
 
-#: lxc/image.go:210 lxc/image.go:584 lxc/image.go:589
-msgid "no"
+#: lxc/storage_volume.go:1087
+msgid "set [<remote>:]<pool> <volume> <key> <value>"
 msgstr ""
 
-#: lxc/remote.go:204
-msgid "ok (y/n)?"
+#: lxc/profile.go:751
+msgid "set [<remote>:]<profile> <key> <value>"
 msgstr ""
 
-#: lxc/main.go:368 lxc/main.go:372
-#, c-format
-msgid "processing aliases failed %s\n"
+#: lxc/config.go:353
+msgid "set [<remote>:][container] <key> <value>"
 msgstr ""
 
-#: lxc/file.go:588
-msgid "recursive edit doesn't make sense :("
+#: lxc/remote.go:596
+msgid "set-default <remote>"
 msgstr ""
 
-#: lxc/remote.go:436
-#, c-format
-msgid "remote %s already exists"
+#: lxc/remote.go:634
+msgid "set-url <remote> <URL>"
 msgstr ""
 
-#: lxc/remote.go:362 lxc/remote.go:428 lxc/remote.go:463 lxc/remote.go:479
-#, c-format
-msgid "remote %s doesn't exist"
+#: lxc/config_template.go:296
+msgid "show [<remote>:]<container> <template>"
 msgstr ""
 
-#: lxc/remote.go:345
-#, c-format
-msgid "remote %s exists as <%s>"
+#: lxc/config_device.go:580
+msgid "show [<remote>:]<container|profile>"
 msgstr ""
 
-#: lxc/remote.go:366 lxc/remote.go:432 lxc/remote.go:467
-#, c-format
-msgid "remote %s is static and cannot be modified"
+#: lxc/image.go:1283
+msgid "show [<remote>:]<image>"
+msgstr ""
+
+#: lxc/cluster.go:140
+msgid "show [<remote>:]<member>"
+msgstr ""
+
+#: lxc/network.go:987
+msgid "show [<remote>:]<network>"
+msgstr ""
+
+#: lxc/operation.go:172
+msgid "show [<remote>:]<operation>"
+msgstr ""
+
+#: lxc/storage.go:643
+msgid "show [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:1164
+msgid "show [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:810
+msgid "show [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/config.go:450 lxc/config_metadata.go:174
+msgid "show [<remote>:][container]"
+msgstr ""
+
+#: lxc/snapshot.go:19
+msgid "snapshot [<remote>:]<container> <snapshot name>"
 msgstr ""
 
-#: lxc/storage.go:858
+#: lxc/storage.go:433
 msgid "space used"
 msgstr ""
 
-#: lxc/info.go:251
+#: lxc/action.go:28
+msgid "start [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/info.go:255
 msgid "stateful"
 msgstr ""
 
-#: lxc/info.go:253
+#: lxc/info.go:257
 msgid "stateless"
 msgstr ""
 
-#: lxc/info.go:247
+#: lxc/action.go:89
+msgid "stop [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/storage.go:31
+msgid "storage"
+msgstr ""
+
+#: lxc/info.go:251
 #, c-format
 msgid "taken at %s"
 msgstr ""
 
-#: lxc/storage.go:857
+#: lxc/config_template.go:28
+msgid "template"
+msgstr ""
+
+#: lxc/storage.go:432
 msgid "total space"
 msgstr ""
 
-#: lxc/storage.go:852
+#: lxc/config_trust.go:28
+msgid "trust"
+msgstr ""
+
+#: lxc/config_device.go:648
+msgid "unset [<remote>:]<container|profile> <device> <key>"
+msgstr ""
+
+#: lxc/network.go:1049
+msgid "unset [<remote>:]<network> <key>"
+msgstr ""
+
+#: lxc/storage.go:727
+msgid "unset [<remote>:]<pool> <key>"
+msgstr ""
+
+#: lxc/storage_volume.go:1239
+msgid "unset [<remote>:]<pool> <volume> <key>"
+msgstr ""
+
+#: lxc/profile.go:864
+msgid "unset [<remote>:]<profile> <key>"
+msgstr ""
+
+#: lxc/config.go:558
+msgid "unset [<remote>:][container] <key>"
+msgstr ""
+
+#: lxc/storage.go:427
 msgid "used by"
 msgstr ""
 
-#: lxc/main.go:299
-msgid "wrong number of subcommand arguments"
+#: lxc/storage_volume.go:32
+msgid "volume"
 msgstr ""
 
-#: lxc/delete.go:45 lxc/image.go:208 lxc/image.go:586 lxc/image.go:591
+#: lxc/delete.go:46 lxc/image.go:811 lxc/image.go:816 lxc/image.go:975
 msgid "yes"
 msgstr ""
diff --git a/po/es.po b/po/es.po
index 119b98393..3bec49e9e 100644
--- a/po/es.po
+++ b/po/es.po
@@ -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: 2018-02-27 22:14-0500\n"
+"POT-Creation-Date: 2018-03-29 01:45-0400\n"
 "PO-Revision-Date: 2018-02-10 11:39+0000\n"
 "Last-Translator: Allan Esquivel Sibaja <allan.esquivel.sibaja at gmail.com>\n"
 "Language-Team: Spanish <https://hosted.weblate.org/projects/linux-containers/"
@@ -19,7 +19,7 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
 "X-Generator: Weblate 2.19-dev\n"
 
-#: lxc/storage.go:36
+#: lxc/storage.go:220
 msgid ""
 "### This is a yaml representation of a storage pool.\n"
 "### Any line starting with a '#' will be ignored.\n"
@@ -50,7 +50,7 @@ msgstr ""
 "###   source: /home/chb/mnt/lxd_test/default.img\n"
 "###   zfs.pool_name: default"
 
-#: lxc/storage.go:53
+#: lxc/storage_volume.go:737
 msgid ""
 "### This is a yaml representation of a storage volume.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -64,7 +64,7 @@ msgid ""
 "###   size: \"61203283968\""
 msgstr ""
 
-#: lxc/config.go:40
+#: lxc/config.go:100
 msgid ""
 "### This is a yaml representation of the configuration.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -102,7 +102,7 @@ msgstr ""
 "###\n"
 "### Note que el nombre se muestra pero no puede ser cambiado"
 
-#: lxc/config.go:61
+#: lxc/config_metadata.go:63
 msgid ""
 "### This is a yaml representation of the container metadata.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -146,7 +146,7 @@ msgstr ""
 "###     template: template.tpl\n"
 "###     properties: {}"
 
-#: lxc/image.go:63
+#: lxc/image.go:327
 msgid ""
 "### This is a yaml representation of the image properties.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -162,7 +162,7 @@ msgstr ""
 "### Un ejemplo sería:\n"
 "###  description: My custom image"
 
-#: lxc/network.go:32
+#: lxc/network.go:546
 msgid ""
 "### This is a yaml representation of the network.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -182,7 +182,7 @@ msgid ""
 "### Note that only the configuration can be changed."
 msgstr ""
 
-#: lxc/profile.go:30
+#: lxc/profile.go:408
 msgid ""
 "### This is a yaml representation of the profile.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -203,12 +203,12 @@ msgid ""
 "### Note that the name is shown but cannot be changed"
 msgstr ""
 
-#: lxc/image.go:187
+#: lxc/image.go:954
 #, c-format
 msgid "%s (%d more)"
 msgstr ""
 
-#: lxc/file.go:205
+#: lxc/file.go:677
 #, c-format
 msgid "%s is not a directory"
 msgstr "%s no es un directorio"
@@ -218,1782 +218,2680 @@ msgstr "%s no es un directorio"
 msgid "%v (interrupt two more times to force)"
 msgstr "%v (interrumpe dos o más tiempos a la fuerza)"
 
-#: lxc/file.go:142
+#: lxc/file.go:614
 #, c-format
 msgid "'%s' isn't a supported file type."
 msgstr "%s no es un tipo de archivo soportado."
 
-#: lxc/profile.go:337
+#: lxc/profile.go:222
 msgid "(none)"
 msgstr "(ninguno)"
 
-#: lxc/alias.go:84 lxc/image.go:231 lxc/image.go:1136
+#: lxc/alias.go:127 lxc/image.go:921 lxc/image_alias.go:228
 msgid "ALIAS"
 msgstr "ALIAS"
 
-#: lxc/image.go:232
+#: lxc/image.go:922
 msgid "ALIASES"
 msgstr "ALIASES"
 
-#: lxc/image.go:236
+#: lxc/image.go:926
 msgid "ARCH"
 msgstr ""
 
-#: lxc/list.go:467
+#: lxc/list.go:464
 msgid "ARCHITECTURE"
 msgstr "ARQUITECTURA"
 
-#: lxc/remote.go:412
+#: lxc/remote.go:466
 msgid "AUTH TYPE"
 msgstr ""
 
-#: lxc/remote.go:68
+#: lxc/remote.go:88
 msgid "Accept certificate"
 msgstr "Acepta certificado"
 
-#: lxc/query.go:38
+#: lxc/query.go:37
 msgid "Action (defaults to GET)"
 msgstr "Accion (predeterminados a GET)"
 
-#: lxc/remote.go:276
+#: lxc/config_device.go:75 lxc/config_device.go:76
+msgid "Add devices to containers or profiles"
+msgstr ""
+
+#: lxc/alias.go:54 lxc/alias.go:55
+#, fuzzy
+msgid "Add new aliases"
+msgstr "Aliases:"
+
+#: lxc/remote.go:83 lxc/remote.go:84
+msgid "Add new remote servers"
+msgstr ""
+
+#: lxc/config_trust.go:58 lxc/config_trust.go:59
+msgid "Add new trusted clients"
+msgstr ""
+
+#: lxc/profile.go:101 lxc/profile.go:102
+msgid "Add profiles to containers"
+msgstr ""
+
+#: lxc/remote.go:325
 #, c-format
 msgid "Admin password for %s: "
 msgstr "Contraseña admin para %s:"
 
-#: lxc/image.go:623
+#: lxc/alias.go:78 lxc/alias.go:176
+#, c-format
+msgid "Alias %s already exists"
+msgstr ""
+
+#: lxc/alias.go:170 lxc/alias.go:221
+#, c-format
+msgid "Alias %s doesn't exist"
+msgstr ""
+
+#: lxc/image_alias.go:83 lxc/image_alias.go:130 lxc/image_alias.go:274
+msgid "Alias name missing"
+msgstr ""
+
+#: lxc/image.go:854
 msgid "Aliases:"
 msgstr "Aliases:"
 
-#: lxc/image.go:601 lxc/info.go:125
+#: lxc/image.go:826 lxc/info.go:129
 #, c-format
 msgid "Architecture: %s"
 msgstr "Arquitectura: %s"
 
-#: lxc/remote.go:259
+#: lxc/profile.go:162 lxc/profile.go:163
+msgid "Assign sets of profiles to containers"
+msgstr ""
+
+#: lxc/network.go:103
+msgid "Attach network interfaces to containers"
+msgstr ""
+
+#: lxc/network.go:176 lxc/network.go:177
+msgid "Attach network interfaces to profiles"
+msgstr ""
+
+#: lxc/network.go:104
+msgid "Attach new network interfaces to containers"
+msgstr ""
+
+#: lxc/storage_volume.go:121 lxc/storage_volume.go:122
+msgid "Attach new storage volumes to containers"
+msgstr ""
+
+#: lxc/storage_volume.go:200 lxc/storage_volume.go:201
+msgid "Attach new storage volumes to profiles"
+msgstr ""
+
+#: lxc/console.go:31
+msgid "Attach to container consoles"
+msgstr ""
+
+#: lxc/console.go:32
+msgid ""
+"Attach to container consoles\n"
+"\n"
+"This command allows you to interact with the boot console of a container\n"
+"as well as retrieve past log entries from it."
+msgstr ""
+
+#: lxc/remote.go:308
 #, c-format
 msgid "Authentication type '%s' not supported by server"
 msgstr "Tipo de autenticación %s no está soportada por el servidor"
 
-#: lxc/image.go:632
+#: lxc/image.go:864
 #, c-format
 msgid "Auto update: %s"
 msgstr "Auto actualización: %s"
 
-#: lxc/image.go:707
+#: lxc/network.go:283
+#, c-format
+msgid "Bad key/value pair: %s"
+msgstr ""
+
+#: lxc/copy.go:110 lxc/init.go:118 lxc/publish.go:175 lxc/storage.go:123
+#: lxc/storage_volume.go:468
+#, c-format
+msgid "Bad key=value pair: %s"
+msgstr ""
+
+#: lxc/image.go:677
 #, c-format
 msgid "Bad property: %s"
 msgstr "Propiedad mala: %s"
 
-#: lxc/action.go:133
+#: lxc/action.go:212
 msgid "Both --all and container name given"
 msgstr "Ambas: todas y el nombre del contenedor dado"
 
-#: lxc/info.go:218
+#: lxc/info.go:222
 msgid "Bytes received"
 msgstr "Bytes recibidos"
 
-#: lxc/info.go:219
+#: lxc/info.go:223
 msgid "Bytes sent"
 msgstr "Bytes enviados"
 
-#: lxc/operation.go:156
+#: lxc/operation.go:155
 msgid "CANCELABLE"
 msgstr ""
 
-#: lxc/config.go:403
+#: lxc/config_trust.go:175
 msgid "COMMON NAME"
 msgstr "NOMBRE COMÚN"
 
-#: lxc/info.go:182
+#: lxc/info.go:186
 msgid "CPU usage (in seconds)"
 msgstr "Uso de CPU (en segundos)"
 
-#: lxc/info.go:186
+#: lxc/info.go:190
 msgid "CPU usage:"
 msgstr "Uso de CPU:"
 
-#: lxc/operation.go:157
+#: lxc/operation.go:156
 msgid "CREATED"
 msgstr "CREADO"
 
-#: lxc/list.go:468
+#: lxc/list.go:465
 msgid "CREATED AT"
 msgstr "CREADO EN"
 
-#: lxc/image.go:631
+#: lxc/image.go:863
 #, c-format
 msgid "Cached: %s"
 msgstr "Cacheado: %s"
 
-#: lxc/file.go:501
+#: lxc/image.go:175
+msgid "Can't provide a name for the target image"
+msgstr ""
+
+#: lxc/file.go:261
 msgid "Can't pull a directory without --recursive"
 msgstr "No se puede jalar un directorio sin - recursivo"
 
-#: lxc/config.go:210 lxc/network.go:619
+#: lxc/config.go:400 lxc/network.go:969
 #, c-format
 msgid "Can't read from stdin: %s"
 msgstr "No se peude leer desde stdin: %s"
 
-#: lxc/rename.go:41
+#: lxc/remote.go:577
+msgid "Can't remove the default remote"
+msgstr ""
+
+#: lxc/list.go:481
+msgid "Can't specify --fast with --columns"
+msgstr ""
+
+#: lxc/rename.go:48
 msgid "Can't specify a different remote for rename."
 msgstr "No se puede especificar un remote diferente para renombrar."
 
-#: lxc/config.go:223
-#, c-format
-msgid "Can't unset key '%s', it's not currently set"
+#: lxc/list.go:493
+msgid "Can't specify column L when not clustered"
 msgstr ""
 
-#: lxc/config.go:265 lxc/config.go:291
-#, c-format
-msgid "Can't unset key '%s', it's not currently set."
+#: lxc/file.go:399
+msgid "Can't supply uid/gid/mode in recursive mode"
 msgstr ""
 
-#: lxc/profile.go:546 lxc/storage.go:696
-msgid "Cannot provide container name to list"
-msgstr "No se puede proveer el nombre del container a la lista"
+#: lxc/config.go:413
+#, c-format
+msgid "Can't unset key '%s', it's not currently set"
+msgstr ""
 
-#: lxc/remote.go:203
+#: lxc/remote.go:252
 #, c-format
 msgid "Certificate fingerprint: %s"
 msgstr "Certificado de la huella digital: %s"
 
-#: lxc/remote.go:315
+#: lxc/remote.go:364
 msgid "Client certificate stored at server: "
 msgstr "Certificado del cliente almacenado en el servidor:"
 
-#: lxc/image.go:175 lxc/image.go:176 lxc/list.go:134 lxc/list.go:135
+#: lxc/network.go:253 lxc/network.go:663 lxc/network.go:923 lxc/network.go:992
+#: lxc/network.go:1054 lxc/storage.go:92 lxc/storage.go:331 lxc/storage.go:576
+#: lxc/storage.go:649 lxc/storage.go:732 lxc/storage_volume.go:287
+#: lxc/storage_volume.go:429 lxc/storage_volume.go:504
+#: lxc/storage_volume.go:730 lxc/storage_volume.go:856
+#: lxc/storage_volume.go:998 lxc/storage_volume.go:1028
+#: lxc/storage_volume.go:1092 lxc/storage_volume.go:1175
+#: lxc/storage_volume.go:1244
+msgid "Cluster member name"
+msgstr ""
+
+#: lxc/image.go:912 lxc/list.go:112
 msgid "Columns"
 msgstr "Columnas"
 
-#: lxc/help.go:53
-msgid "Commands:"
-msgstr "Comandos:"
+#: lxc/main.go:44
+msgid "Command line client for LXD"
+msgstr ""
+
+#: lxc/main.go:45
+msgid ""
+"Command line client for LXD\n"
+"\n"
+"All of LXD's features can be driven through the various commands below.\n"
+"For help with any of those, simply call them with --help."
+msgstr ""
 
-#: lxc/copy.go:37 lxc/copy.go:38 lxc/init.go:139 lxc/init.go:140
+#: lxc/copy.go:39 lxc/init.go:42
 msgid "Config key/value to apply to the new container"
 msgstr ""
 
-#: lxc/config.go:821 lxc/config.go:886 lxc/config.go:1396 lxc/image.go:1191
-#: lxc/network.go:445 lxc/profile.go:275 lxc/storage.go:647 lxc/storage.go:1209
+#: lxc/config.go:195 lxc/config.go:259 lxc/config_metadata.go:144
+#: lxc/image.go:405 lxc/network.go:631 lxc/profile.go:490 lxc/storage.go:298
+#: lxc/storage_volume.go:822
 #, c-format
 msgid "Config parsing error: %s"
 msgstr ""
 
-#: lxc/main.go:40
-msgid "Connection refused; is LXD running?"
-msgstr "Conexión declinada; está LXD corriendo? "
-
-#: lxc/console.go:132
+#: lxc/console.go:141
 msgid "Console log:"
 msgstr "Log de la consola:"
 
-#: lxc/publish.go:71
+#: lxc/publish.go:79
 msgid "Container name is mandatory"
 msgstr "Nombre del contenedor es obligatorio"
 
-#: lxc/copy.go:243 lxc/init.go:321
+#: lxc/copy.go:260 lxc/init.go:229
 #, c-format
 msgid "Container name is: %s"
 msgstr "Nombre del contenedor es: %s"
 
-#: lxc/publish.go:250
+#: lxc/publish.go:259
 #, c-format
 msgid "Container published with fingerprint: %s"
 msgstr ""
 
-#: lxc/copy.go:45 lxc/move.go:44
+#: lxc/copy.go:44 lxc/move.go:46
 msgid "Copy a stateful container stateless"
 msgstr ""
 
-#: lxc/image.go:178
+#: lxc/image.go:138
 msgid "Copy aliases from source"
 msgstr ""
 
-#: lxc/copy.go:44
+#: lxc/copy.go:34 lxc/copy.go:35
+msgid "Copy containers within or in between LXD instances"
+msgstr ""
+
+#: lxc/image.go:130
+msgid "Copy images between servers"
+msgstr ""
+
+#: lxc/image.go:131
+msgid ""
+"Copy images between servers\n"
+"\n"
+"The auto-update flag instructs the server to keep this image up to date.\n"
+"It requires the source to be an alias and for it to be public."
+msgstr ""
+
+#: lxc/config_device.go:317 lxc/config_device.go:318
+msgid "Copy profile inherited devices and override configuration keys"
+msgstr ""
+
+#: lxc/profile.go:240 lxc/profile.go:241
+msgid "Copy profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:282 lxc/storage_volume.go:283
+msgid "Copy storage volumes"
+msgstr ""
+
+#: lxc/copy.go:43
 msgid "Copy the container without its snapshots"
 msgstr ""
 
-#: lxc/image.go:449
+#: lxc/image.go:217
 #, c-format
 msgid "Copying the image: %s"
 msgstr ""
 
-#: lxc/storage.go:1134
+#: lxc/storage_volume.go:387
 #, c-format
 msgid "Copying the storage volume: %s"
 msgstr ""
 
-#: lxc/remote.go:218
+#: lxc/remote.go:267
 msgid "Could not create server cert dir"
 msgstr ""
 
-#: lxc/file.go:70 lxc/file.go:71
+#: lxc/image_alias.go:58 lxc/image_alias.go:59
+msgid "Create aliases for existing images"
+msgstr ""
+
+#: lxc/launch.go:21 lxc/launch.go:22
+msgid "Create and start containers from images"
+msgstr ""
+
+#: lxc/file.go:191 lxc/file.go:331
 msgid "Create any directories necessary"
 msgstr ""
 
-#: lxc/image.go:606 lxc/info.go:127
+#: lxc/snapshot.go:20
+#, fuzzy
+msgid "Create container snapshots"
+msgstr "No se puede proveer el nombre del container a la lista"
+
+#: lxc/snapshot.go:21
+msgid ""
+"Create container snapshots\n"
+"\n"
+"When --stateful is used, LXD attempts to checkpoint the container's\n"
+"running state, including process memory state, TCP connections, ..."
+msgstr ""
+
+#: lxc/init.go:34 lxc/init.go:35
+msgid "Create containers from images"
+msgstr ""
+
+#: lxc/config_template.go:66 lxc/config_template.go:67
+msgid "Create new container file templates"
+msgstr ""
+
+#: lxc/storage_volume.go:425 lxc/storage_volume.go:426
+msgid "Create new custom storage volumes"
+msgstr ""
+
+#: lxc/network.go:249 lxc/network.go:250
+msgid "Create new networks"
+msgstr ""
+
+#: lxc/profile.go:296 lxc/profile.go:297
+msgid "Create profiles"
+msgstr ""
+
+#: lxc/storage.go:88 lxc/storage.go:89
+msgid "Create storage pools"
+msgstr ""
+
+#: lxc/image.go:832 lxc/info.go:131
 #, c-format
 msgid "Created: %s"
 msgstr ""
 
-#: lxc/init.go:200
+#: lxc/init.go:98
 #, c-format
 msgid "Creating %s"
 msgstr ""
 
-#: lxc/init.go:198
+#: lxc/init.go:96
 msgid "Creating the container"
 msgstr ""
 
-#: lxc/cluster.go:185
+#: lxc/cluster.go:121
 msgid "DATABASE"
 msgstr ""
 
-#: lxc/image.go:235 lxc/image.go:1138 lxc/list.go:469 lxc/network.go:579
-#: lxc/operation.go:154 lxc/storage.go:732 lxc/storage.go:937
+#: lxc/image.go:925 lxc/image_alias.go:230 lxc/list.go:466 lxc/network.go:784
+#: lxc/operation.go:153 lxc/storage.go:545 lxc/storage_volume.go:967
 msgid "DESCRIPTION"
 msgstr ""
 
-#: lxc/storage.go:733
+#: lxc/storage.go:546
 msgid "DRIVER"
 msgstr ""
 
-#: lxc/publish.go:39
+#: lxc/publish.go:41
 msgid "Define a compression algorithm: for image or none"
 msgstr ""
 
-#: lxc/config.go:977
+#: lxc/operation.go:53 lxc/operation.go:54
+msgid "Delete a background operation (will attempt to cancel)"
+msgstr ""
+
+#: lxc/config_template.go:109 lxc/config_template.go:110
+msgid "Delete container file templates"
+msgstr ""
+
+#: lxc/delete.go:29 lxc/delete.go:30
+msgid "Delete containers and snapshots"
+msgstr ""
+
+#: lxc/file.go:72 lxc/file.go:73
+msgid "Delete files in containers"
+msgstr ""
+
+#: lxc/image_alias.go:105 lxc/image_alias.go:106
+msgid "Delete image aliases"
+msgstr ""
+
+#: lxc/image.go:260 lxc/image.go:261
+msgid "Delete images"
+msgstr ""
+
+#: lxc/network.go:319 lxc/network.go:320
+msgid "Delete networks"
+msgstr ""
+
+#: lxc/profile.go:347 lxc/profile.go:348
+msgid "Delete profiles"
+msgstr ""
+
+#: lxc/storage.go:160 lxc/storage.go:161
+msgid "Delete storage pools"
+msgstr ""
+
+#: lxc/storage_volume.go:500 lxc/storage_volume.go:501
+msgid "Delete storage volumes"
+msgstr ""
+
+#: lxc/action.go:30 lxc/action.go:49 lxc/action.go:69 lxc/action.go:91
+#: lxc/alias.go:23 lxc/alias.go:55 lxc/alias.go:99 lxc/alias.go:147
+#: lxc/alias.go:198 lxc/cluster.go:26 lxc/cluster.go:59 lxc/cluster.go:142
+#: lxc/cluster.go:192 lxc/cluster.go:238 lxc/config.go:29 lxc/config.go:88
+#: lxc/config.go:289 lxc/config.go:355 lxc/config.go:452 lxc/config.go:560
+#: lxc/config_device.go:24 lxc/config_device.go:76 lxc/config_device.go:179
+#: lxc/config_device.go:252 lxc/config_device.go:318 lxc/config_device.go:405
+#: lxc/config_device.go:493 lxc/config_device.go:582 lxc/config_device.go:650
+#: lxc/config_metadata.go:29 lxc/config_metadata.go:54
+#: lxc/config_metadata.go:176 lxc/config_template.go:30
+#: lxc/config_template.go:67 lxc/config_template.go:110
+#: lxc/config_template.go:152 lxc/config_template.go:236
+#: lxc/config_template.go:298 lxc/config_trust.go:30 lxc/config_trust.go:59
+#: lxc/config_trust.go:115 lxc/config_trust.go:197 lxc/console.go:32
+#: lxc/copy.go:35 lxc/delete.go:30 lxc/exec.go:39 lxc/file.go:40 lxc/file.go:73
+#: lxc/file.go:122 lxc/file.go:185 lxc/file.go:324 lxc/image.go:42
+#: lxc/image.go:131 lxc/image.go:261 lxc/image.go:312 lxc/image.go:435
+#: lxc/image.go:571 lxc/image.go:776 lxc/image.go:890 lxc/image.go:1212
+#: lxc/image.go:1285 lxc/image_alias.go:26 lxc/image_alias.go:59
+#: lxc/image_alias.go:106 lxc/image_alias.go:149 lxc/image_alias.go:250
+#: lxc/info.go:29 lxc/init.go:35 lxc/launch.go:22 lxc/list.go:48 lxc/main.go:45
+#: lxc/monitor.go:31 lxc/move.go:31 lxc/network.go:32 lxc/network.go:104
+#: lxc/network.go:177 lxc/network.go:250 lxc/network.go:320 lxc/network.go:367
+#: lxc/network.go:452 lxc/network.go:537 lxc/network.go:660 lxc/network.go:719
+#: lxc/network.go:808 lxc/network.go:873 lxc/network.go:920 lxc/network.go:989
+#: lxc/network.go:1051 lxc/operation.go:25 lxc/operation.go:54
+#: lxc/operation.go:98 lxc/operation.go:174 lxc/profile.go:30
+#: lxc/profile.go:102 lxc/profile.go:163 lxc/profile.go:241 lxc/profile.go:297
+#: lxc/profile.go:348 lxc/profile.go:396 lxc/profile.go:520 lxc/profile.go:568
+#: lxc/profile.go:632 lxc/profile.go:705 lxc/profile.go:753 lxc/profile.go:812
+#: lxc/profile.go:866 lxc/publish.go:34 lxc/query.go:27 lxc/remote.go:34
+#: lxc/remote.go:84 lxc/remote.go:380 lxc/remote.go:414 lxc/remote.go:487
+#: lxc/remote.go:549 lxc/remote.go:598 lxc/remote.go:636 lxc/rename.go:20
+#: lxc/restore.go:24 lxc/snapshot.go:21 lxc/storage.go:33 lxc/storage.go:89
+#: lxc/storage.go:161 lxc/storage.go:208 lxc/storage.go:328 lxc/storage.go:383
+#: lxc/storage.go:491 lxc/storage.go:573 lxc/storage.go:645 lxc/storage.go:729
+#: lxc/storage_volume.go:34 lxc/storage_volume.go:122 lxc/storage_volume.go:201
+#: lxc/storage_volume.go:283 lxc/storage_volume.go:426
+#: lxc/storage_volume.go:501 lxc/storage_volume.go:561
+#: lxc/storage_volume.go:643 lxc/storage_volume.go:724
+#: lxc/storage_volume.go:853 lxc/storage_volume.go:918
+#: lxc/storage_volume.go:994 lxc/storage_volume.go:1025
+#: lxc/storage_volume.go:1089 lxc/storage_volume.go:1166
+#: lxc/storage_volume.go:1241
+msgid "Description"
+msgstr ""
+
+#: lxc/network.go:366 lxc/network.go:367
+msgid "Detach network interfaces from containers"
+msgstr ""
+
+#: lxc/network.go:451 lxc/network.go:452
+msgid "Detach network interfaces from profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:560 lxc/storage_volume.go:561
+msgid "Detach storage volumes from containers"
+msgstr ""
+
+#: lxc/storage_volume.go:642 lxc/storage_volume.go:643
+msgid "Detach storage volumes from profiles"
+msgstr ""
+
+#: lxc/config_device.go:163
 #, c-format
 msgid "Device %s added to %s"
 msgstr ""
 
-#: lxc/config.go:1272
+#: lxc/config_device.go:387
 #, c-format
 msgid "Device %s overridden for %s"
 msgstr ""
 
-#: lxc/config.go:1213
+#: lxc/config_device.go:476
 #, c-format
 msgid "Device %s removed from %s"
 msgstr ""
 
-#: lxc/utils.go:192 lxc/utils.go:216
+#: lxc/utils.go:133 lxc/utils.go:157
 #, c-format
 msgid "Device already exists: %s"
 msgstr ""
 
-#: lxc/image.go:1290
+#: lxc/image.go:586
 msgid "Directory import is not available on this platform"
 msgstr ""
 
-#: lxc/exec.go:71
+#: lxc/exec.go:55
 msgid "Disable pseudo-terminal allocation"
 msgstr ""
 
-#: lxc/exec.go:72
+#: lxc/exec.go:56
 msgid "Disable stdin (reads from /dev/null)"
 msgstr ""
 
-#: lxc/info.go:175
+#: lxc/info.go:179
 msgid "Disk usage:"
 msgstr ""
 
-#: lxc/list.go:638
+#: lxc/list.go:635
 msgid "EPHEMERAL"
 msgstr ""
 
-#: lxc/config.go:405
+#: lxc/config_trust.go:177
 msgid "EXPIRY DATE"
 msgstr ""
 
-#: lxc/main.go:52
-msgid "Enable debug mode"
+#: lxc/config_template.go:151 lxc/config_template.go:152
+msgid "Edit container file templates"
 msgstr ""
 
-#: lxc/main.go:51
-msgid "Enable verbose mode"
+#: lxc/config_metadata.go:53 lxc/config_metadata.go:54
+msgid "Edit container metadata files"
 msgstr ""
 
-#: lxc/exec.go:68
-msgid "Environment variable to set (e.g. HOME=/home/foo)"
+#: lxc/config.go:87 lxc/config.go:88
+msgid "Edit container or server configurations as YAML"
+msgstr ""
+
+#: lxc/file.go:121 lxc/file.go:122
+msgid "Edit files in containers"
+msgstr ""
+
+#: lxc/image.go:311 lxc/image.go:312
+msgid "Edit image properties"
+msgstr ""
+
+#: lxc/network.go:536 lxc/network.go:537
+msgid "Edit network configurations as YAML"
+msgstr ""
+
+#: lxc/profile.go:395 lxc/profile.go:396
+msgid "Edit profile configurations as YAML"
+msgstr ""
+
+#: lxc/storage.go:207 lxc/storage.go:208
+msgid "Edit storage pool configurations as YAML"
+msgstr ""
+
+#: lxc/storage_volume.go:723 lxc/storage_volume.go:724
+msgid "Edit storage volume configurations as YAML"
+msgstr ""
+
+#: lxc/list.go:504
+#, c-format
+msgid "Empty column entry (redundant, leading or trailing command) in '%s'"
 msgstr ""
 
-#: lxc/help.go:77
-msgid "Environment:"
+#: lxc/exec.go:52
+msgid "Environment variable to set (e.g. HOME=/home/foo)"
 msgstr ""
 
-#: lxc/copy.go:41 lxc/copy.go:42 lxc/init.go:143 lxc/init.go:144
+#: lxc/copy.go:41 lxc/init.go:44
 msgid "Ephemeral container"
 msgstr ""
 
-#: lxc/config.go:1446
+#: lxc/config_template.go:204
 #, c-format
 msgid "Error updating template file: %s"
 msgstr ""
 
-#: lxc/monitor.go:69
+#: lxc/monitor.go:48
 msgid "Event type to listen for"
 msgstr ""
 
-#: lxc/image.go:610
+#: lxc/exec.go:38
+msgid "Execute commands in containers"
+msgstr ""
+
+#: lxc/exec.go:39
+msgid ""
+"Execute commands in containers\n"
+"\n"
+"The command is executed directly using exec, so there is no shell and\n"
+"shell patterns (variables, file redirects, ...) won't be understood.\n"
+"If you need a shell environment you need to execute the shell\n"
+"executable, passing the shell commands as arguments, for example:\n"
+"\n"
+"  lxc exec <container> -- sh -c \"cd /tmp && pwd\"\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:838
 #, c-format
 msgid "Expires: %s"
 msgstr ""
 
-#: lxc/image.go:612
+#: lxc/image.go:840
 msgid "Expires: never"
 msgstr ""
 
-#: lxc/image.go:922
+#: lxc/image.go:434
+msgid "Export and download images"
+msgstr ""
+
+#: lxc/image.go:435
+msgid ""
+"Export and download images\n"
+"\n"
+"The output target is optional and defaults to the working directory."
+msgstr ""
+
+#: lxc/image.go:494
 #, c-format
 msgid "Exporting the image: %s"
 msgstr ""
 
-#: lxc/config.go:761
+#: lxc/config_template.go:279
 msgid "FILENAME"
 msgstr ""
 
-#: lxc/config.go:402 lxc/image.go:233 lxc/image.go:1137
+#: lxc/config_trust.go:174 lxc/image.go:923 lxc/image_alias.go:229
 msgid "FINGERPRINT"
 msgstr ""
 
-#: lxc/utils.go:261
+#: lxc/utils.go:202
 #, c-format
 msgid "Failed to create alias %s"
 msgstr ""
 
-#: lxc/manpage.go:62
-#, c-format
-msgid "Failed to generate 'lxc.%s.1': %v"
-msgstr ""
-
-#: lxc/manpage.go:55
-#, c-format
-msgid "Failed to generate 'lxc.1': %v"
-msgstr ""
-
-#: lxc/copy.go:238
+#: lxc/copy.go:255
 msgid "Failed to get the new container name"
 msgstr ""
 
-#: lxc/utils.go:251
+#: lxc/utils.go:192
 #, c-format
 msgid "Failed to remove alias %s"
 msgstr ""
 
-#: lxc/file.go:137
+#: lxc/file.go:609
 #, c-format
 msgid "Failed to walk path for %s: %s"
 msgstr ""
 
-#: lxc/list.go:137
+#: lxc/list.go:114
 msgid "Fast mode (same as --columns=nsacPt)"
 msgstr ""
 
-#: lxc/network.go:536 lxc/operation.go:121
+#: lxc/network.go:749 lxc/operation.go:126
 msgid "Filtering isn't supported yet"
 msgstr ""
 
-#: lxc/image.go:599
+#: lxc/image.go:824
 #, c-format
 msgid "Fingerprint: %s"
 msgstr ""
 
-#: lxc/exec.go:70
+#: lxc/exec.go:54
 msgid "Force pseudo-terminal allocation"
 msgstr ""
 
-#: lxc/cluster.go:42
-msgid "Force removing a node, even if degraded"
+#: lxc/cluster.go:242
+msgid "Force removing a member, even if degraded"
 msgstr ""
 
-#: lxc/action.go:47 lxc/action.go:48
+#: lxc/action.go:121
 msgid "Force the container to shutdown"
 msgstr ""
 
-#: lxc/delete.go:34 lxc/delete.go:35
+#: lxc/delete.go:34
 msgid "Force the removal of running containers"
 msgstr ""
 
-#: lxc/main.go:53
+#: lxc/main.go:56
 msgid "Force using the local unix socket"
 msgstr ""
 
-#: lxc/image.go:181 lxc/list.go:136
+#: lxc/image.go:913 lxc/list.go:113
 msgid "Format (csv|json|table|yaml)"
 msgstr ""
 
-#: lxc/remote.go:166
+#: lxc/remote.go:211
 msgid "Generating a client certificate. This may take a minute..."
 msgstr ""
 
-#: lxc/network.go:513
+#: lxc/config_device.go:178 lxc/config_device.go:179
+msgid "Get values for container device configuration keys"
+msgstr ""
+
+#: lxc/config.go:288 lxc/config.go:289
+msgid "Get values for container or server configuration keys"
+msgstr ""
+
+#: lxc/network.go:659 lxc/network.go:660
+msgid "Get values for network configuration keys"
+msgstr ""
+
+#: lxc/profile.go:519 lxc/profile.go:520
+msgid "Get values for profile configuration keys"
+msgstr ""
+
+#: lxc/storage.go:327 lxc/storage.go:328
+msgid "Get values for storage pool configuration keys"
+msgstr ""
+
+#: lxc/storage_volume.go:852 lxc/storage_volume.go:853
+msgid "Get values for storage volume configuration keys"
+msgstr ""
+
+#: lxc/network.go:851
 msgid "HOSTNAME"
 msgstr ""
 
-#: lxc/operation.go:152
+#: lxc/operation.go:151
 msgid "ID"
 msgstr ""
 
-#: lxc/network.go:515
+#: lxc/network.go:853
 msgid "IP ADDRESS"
 msgstr ""
 
-#: lxc/list.go:465
+#: lxc/list.go:462
 msgid "IPV4"
 msgstr ""
 
-#: lxc/list.go:466
+#: lxc/list.go:463
 msgid "IPV6"
 msgstr ""
 
-#: lxc/config.go:404
+#: lxc/config_trust.go:176
 msgid "ISSUE DATE"
 msgstr ""
 
-#: lxc/main.go:171
+#: lxc/main.go:259
 msgid ""
 "If this is your first time running LXD on this machine, you should also run: "
 "lxd init"
 msgstr ""
 
-#: lxc/main.go:54
-msgid "Ignore aliases when determining what command to run"
-msgstr ""
-
-#: lxc/action.go:51
-msgid "Ignore the container state (only for start)"
+#: lxc/action.go:117
+msgid "Ignore the container state"
 msgstr ""
 
-#: lxc/image.go:557
+#: lxc/image.go:1268
 msgid "Image already up to date."
 msgstr ""
 
-#: lxc/image.go:463
+#: lxc/image.go:231
 msgid "Image copied successfully!"
 msgstr ""
 
-#: lxc/image.go:982
+#: lxc/image.go:554
 msgid "Image exported successfully!"
 msgstr ""
 
-#: lxc/image.go:778
+#: lxc/image.go:284 lxc/image.go:1235
+msgid "Image identifier missing"
+msgstr ""
+
+#: lxc/image.go:352
+#, c-format
+msgid "Image identifier missing: %s"
+msgstr ""
+
+#: lxc/image.go:749
 #, c-format
 msgid "Image imported with fingerprint: %s"
 msgstr ""
 
-#: lxc/image.go:555
+#: lxc/image.go:1266
 msgid "Image refreshed successfully!"
 msgstr ""
 
-#: lxc/query.go:39
+#: lxc/image.go:571
+msgid ""
+"Import image into the image store\n"
+"\n"
+"Directory import is only available on Linux and must be performed as root."
+msgstr ""
+
+#: lxc/image.go:570
+msgid "Import images into the image store"
+msgstr ""
+
+#: lxc/query.go:38
 msgid "Input data"
 msgstr ""
 
-#: lxc/init.go:149
+#: lxc/init.go:47
 msgid "Instance type"
 msgstr ""
 
-#: lxc/remote.go:118
+#: lxc/remote.go:163
 #, c-format
 msgid "Invalid URL scheme \"%s\" in \"%s\""
 msgstr ""
 
-#: lxc/config.go:383
+#: lxc/config_trust.go:155
 msgid "Invalid certificate"
 msgstr ""
 
-#: lxc/init.go:32 lxc/init.go:37
-msgid "Invalid configuration key"
+#: lxc/list.go:525
+#, c-format
+msgid "Invalid config key '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:520
+#, c-format
+msgid "Invalid config key column format (too many fields): '%s'"
+msgstr ""
+
+#: lxc/image.go:1196 lxc/list.go:386
+#, c-format
+msgid "Invalid format %q"
+msgstr ""
+
+#: lxc/list.go:543
+#, c-format
+msgid "Invalid max width (must -1, 0 or a positive integer) '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:540
+#, c-format
+msgid "Invalid max width (must be an integer) '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:531
+#, c-format
+msgid ""
+"Invalid name in '%s', empty string is only allowed when defining maxWidth"
 msgstr ""
 
-#: lxc/file.go:560
+#: lxc/main.go:341
+msgid "Invalid number of arguments"
+msgstr ""
+
+#: lxc/file.go:97
 #, c-format
 msgid "Invalid path %s"
 msgstr ""
 
-#: lxc/remote.go:107
+#: lxc/remote.go:152
 #, c-format
 msgid "Invalid protocol: %s"
 msgstr ""
 
-#: lxc/file.go:473
+#: lxc/file.go:243
 #, c-format
 msgid "Invalid source %s"
 msgstr ""
 
-#: lxc/file.go:250
+#: lxc/file.go:352
 #, c-format
 msgid "Invalid target %s"
 msgstr ""
 
-#: lxc/info.go:156
+#: lxc/info.go:160
 msgid "Ips:"
 msgstr ""
 
-#: lxc/image.go:179
+#: lxc/image.go:139
 msgid "Keep the image up to date after initial copy"
 msgstr ""
 
-#: lxc/list.go:470
+#: lxc/list.go:467
 msgid "LAST USED AT"
 msgstr ""
 
-#: lxc/list.go:492
+#: lxc/list.go:489
 msgid "LOCATION"
 msgstr ""
 
-#: lxc/main.go:38
-msgid "LXD socket not found; is LXD installed and running?"
+#: lxc/cluster.go:94
+msgid "LXD server isn't part of a cluster"
 msgstr ""
 
-#: lxc/image.go:615
+#: lxc/image.go:844
 #, c-format
 msgid "Last used: %s"
 msgstr ""
 
-#: lxc/image.go:617
+#: lxc/image.go:846
 msgid "Last used: never"
 msgstr ""
 
-#: lxc/info.go:119
-#, c-format
-msgid "Location: %s"
-msgstr ""
-
-#: lxc/info.go:271
-msgid "Log:"
-msgstr ""
-
-#: lxc/network.go:514
-msgid "MAC ADDRESS"
+#: lxc/network.go:807 lxc/network.go:808
+msgid "List DHCP leases"
 msgstr ""
 
-#: lxc/network.go:578
-msgid "MANAGED"
-msgstr ""
+#: lxc/alias.go:98 lxc/alias.go:99
+#, fuzzy
+msgid "List aliases"
+msgstr "Aliases:"
 
-#: lxc/cluster.go:187
-msgid "MESSAGE"
+#: lxc/cluster.go:58 lxc/cluster.go:59
+msgid "List all the cluster members"
 msgstr ""
 
-#: lxc/image.go:177
-msgid "Make image public"
+#: lxc/network.go:718 lxc/network.go:719
+msgid "List available networks"
 msgstr ""
 
-#: lxc/publish.go:35
-msgid "Make the image public"
+#: lxc/storage.go:490 lxc/storage.go:491
+msgid "List available storage pools"
 msgstr ""
 
-#: lxc/info.go:193
-msgid "Memory (current)"
+#: lxc/operation.go:97 lxc/operation.go:98
+msgid "List background operations"
 msgstr ""
 
-#: lxc/info.go:197
-msgid "Memory (peak)"
+#: lxc/config_device.go:251 lxc/config_device.go:252
+msgid "List container devices"
 msgstr ""
 
-#: lxc/info.go:209
-msgid "Memory usage:"
+#: lxc/config_template.go:235 lxc/config_template.go:236
+msgid "List container file templates"
 msgstr ""
 
-#: lxc/monitor.go:70
-msgid "Minimum level for log messages"
+#: lxc/list.go:47
+msgid "List containers"
 msgstr ""
 
-#: lxc/utils.go:143
-msgid "Missing summary."
+#: lxc/list.go:48
+msgid ""
+"List containers\n"
+"\n"
+"Default column layout: ns46tS\n"
+"Fast column layout: nsacPt\n"
+"\n"
+"== Filters ==\n"
+"A single keyword like \"web\" which will list any container with a name "
+"starting by \"web\".\n"
+"A regular expression on the container name. (e.g. .*web.*01$).\n"
+"A key/value pair referring to a configuration item. For those, the\n"
+"namespace can be abbreviated to the smallest unambiguous identifier.\n"
+"\n"
+"Examples:\n"
+"  - \"user.blah=abc\" will list all containers with the \"blah\" user "
+"property set to \"abc\".\n"
+"  - \"u.blah=abc\" will do the same\n"
+"  - \"security.privileged=true\" will list all privileged containers\n"
+"  - \"s.privileged=true\" will do the same\n"
+"\n"
+"A regular expression matching a configuration item or its value. (e.g. "
+"volatile.eth0.hwaddr=00:16:3e:.*).\n"
+"\n"
+"== Columns ==\n"
+"The -c option takes a comma separated list of arguments that control\n"
+"which container attributes to output when displaying in table or csv\n"
+"format.\n"
+"\n"
+"Column arguments are either pre-defined shorthand chars (see below),\n"
+"or (extended) config keys.\n"
+"\n"
+"Commas between consecutive shorthand chars are optional.\n"
+"\n"
+"Pre-defined column shorthand chars:\n"
+"  4 - IPv4 address\n"
+"  6 - IPv6 address\n"
+"  a - Architecture\n"
+"  b - Storage pool\n"
+"  c - Creation date\n"
+"  d - Description\n"
+"  l - Last used date\n"
+"  n - Name\n"
+"  N - Number of Processes\n"
+"  p - PID of the container's init process\n"
+"  P - Profiles\n"
+"  s - State\n"
+"  S - Number of snapshots\n"
+"  t - Type (persistent or ephemeral)\n"
+"  L - Location of the container (e.g. its node)\n"
+"\n"
+"Custom columns are defined with \"key[:name][:maxWidth]\":\n"
+"  KEY: The (extended) config key to display\n"
+"  NAME: Name to display in the column header.\n"
+"  Defaults to the key if not specified or empty.\n"
+"\n"
+"  MAXWIDTH: Max width of the column (longer results are truncated).\n"
+"  Defaults to -1 (unlimited). Use 0 to limit to the column header size."
+msgstr ""
+
+#: lxc/image_alias.go:148
+msgid "List image aliases"
+msgstr ""
+
+#: lxc/image_alias.go:149
+msgid ""
+"List image aliases\n"
+"\n"
+"Filters may be part of the image hash or part of the image alias name.\n"
+msgstr ""
+
+#: lxc/image.go:889
+msgid "List images"
+msgstr ""
+
+#: lxc/image.go:890
+msgid ""
+"List images\n"
+"\n"
+"Filters may be of the <key>=<value> form for property based filtering,\n"
+"or part of the image hash or part of the image alias name.\n"
+"\n"
+"The -c option takes a (optionally comma-separated) list of arguments\n"
+"that control which image attributes to output when displaying in table\n"
+"or csv format.\n"
+"\n"
+"Default column layout is: lfpdasu\n"
+"\n"
+"Column shorthand chars:\n"
+"\n"
+"    l - Shortest image alias (and optionally number of other aliases)\n"
+"    L - Newline-separated list of all image aliases\n"
+"    f - Fingerprint\n"
+"    p - Whether image is public\n"
+"    d - Description\n"
+"    a - Architecture\n"
+"    s - Size"
+msgstr ""
+
+#: lxc/profile.go:567 lxc/profile.go:568
+msgid "List profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:917 lxc/storage_volume.go:918
+msgid "List storage volumes"
+msgstr ""
+
+#: lxc/remote.go:413 lxc/remote.go:414
+msgid "List the available remotes"
+msgstr ""
+
+#: lxc/config_trust.go:114 lxc/config_trust.go:115
+msgid "List trusted clients"
+msgstr ""
+
+#: lxc/operation.go:24 lxc/operation.go:25
+msgid "List, show and delete background operations"
+msgstr ""
+
+#: lxc/info.go:123
+#, c-format
+msgid "Location: %s"
+msgstr ""
+
+#: lxc/info.go:275
+msgid "Log:"
+msgstr ""
+
+#: lxc/network.go:852
+msgid "MAC ADDRESS"
+msgstr ""
+
+#: lxc/network.go:783
+msgid "MANAGED"
+msgstr ""
+
+#: lxc/cluster.go:123
+msgid "MESSAGE"
+msgstr ""
+
+#: lxc/image.go:137 lxc/image.go:576
+msgid "Make image public"
+msgstr ""
+
+#: lxc/publish.go:38
+msgid "Make the image public"
+msgstr ""
+
+#: lxc/network.go:32
+msgid "Manage an attach containers to networks"
+msgstr ""
+
+#: lxc/network.go:31
+msgid "Manage and attach containers to networks"
+msgstr ""
+
+#: lxc/cluster.go:25 lxc/cluster.go:26
+msgid "Manage cluster members"
+msgstr ""
+
+#: lxc/alias.go:22 lxc/alias.go:23
+msgid "Manage command aliases"
+msgstr ""
+
+#: lxc/config.go:28 lxc/config.go:29
+msgid "Manage container and server configuration options"
+msgstr ""
+
+#: lxc/config_device.go:23 lxc/config_device.go:24
+msgid "Manage container devices"
+msgstr ""
+
+#: lxc/config_template.go:29 lxc/config_template.go:30
+msgid "Manage container file templates"
+msgstr ""
+
+#: lxc/config_metadata.go:28 lxc/config_metadata.go:29
+#, fuzzy
+msgid "Manage container metadata files"
+msgstr "Nombre del contenedor es: %s"
+
+#: lxc/file.go:39 lxc/file.go:40
+msgid "Manage files in containers"
+msgstr ""
+
+#: lxc/image_alias.go:25 lxc/image_alias.go:26
+msgid "Manage image aliases"
+msgstr ""
+
+#: lxc/image.go:41
+msgid "Manage images"
+msgstr ""
+
+#: lxc/image.go:42
+msgid ""
+"Manage images\n"
+"\n"
+"In LXD containers are created from images. Those images were themselves\n"
+"either generated from an existing container or downloaded from an image\n"
+"server.\n"
+"\n"
+"When using remote images, LXD will automatically cache images for you\n"
+"and remove them upon expiration.\n"
+"\n"
+"The image unique identifier is the hash (sha-256) of its representation\n"
+"as a compressed tarball (or for split images, the concatenation of the\n"
+"metadata and rootfs tarballs).\n"
+"\n"
+"Images can be referenced by their full hash, shortest unique partial\n"
+"hash or alias name (if one is set)."
+msgstr ""
+
+#: lxc/profile.go:29 lxc/profile.go:30
+msgid "Manage profiles"
+msgstr ""
+
+#: lxc/storage.go:32 lxc/storage.go:33
+msgid "Manage storage pools and volumes"
+msgstr ""
+
+#: lxc/storage_volume.go:33
+msgid "Manage storage volumes"
+msgstr ""
+
+#: lxc/storage_volume.go:34
+msgid ""
+"Manage storage volumes\n"
+"\n"
+"Unless specified through a prefix, all volume operations affect \"custom"
+"\" (user created) volumes."
+msgstr ""
+
+#: lxc/remote.go:33 lxc/remote.go:34
+msgid "Manage the list of remote servers"
 msgstr ""
 
-#: lxc/network.go:303 lxc/network.go:356 lxc/storage.go:435 lxc/storage.go:565
+#: lxc/config_trust.go:29 lxc/config_trust.go:30
+msgid "Manage trusted clients"
+msgstr ""
+
+#: lxc/info.go:197
+msgid "Memory (current)"
+msgstr ""
+
+#: lxc/info.go:201
+msgid "Memory (peak)"
+msgstr ""
+
+#: lxc/info.go:213
+msgid "Memory usage:"
+msgstr ""
+
+#: lxc/monitor.go:49
+msgid "Minimum level for log messages"
+msgstr ""
+
+#: lxc/config_metadata.go:102 lxc/config_metadata.go:200
+#: lxc/config_template.go:91 lxc/config_template.go:134
+#: lxc/config_template.go:176 lxc/config_template.go:260
+#: lxc/config_template.go:322 lxc/profile.go:197 lxc/profile.go:656
+#, fuzzy
+msgid "Missing container name"
+msgstr "Nombre del contenedor es: %s"
+
+#: lxc/profile.go:126
+msgid "Missing container.name name"
+msgstr ""
+
+#: lxc/config_device.go:103 lxc/config_device.go:203 lxc/config_device.go:276
+#: lxc/config_device.go:342 lxc/config_device.go:429 lxc/config_device.go:517
+#: lxc/config_device.go:606
+msgid "Missing name"
+msgstr ""
+
+#: lxc/network.go:128 lxc/network.go:201 lxc/network.go:344 lxc/network.go:391
+#: lxc/network.go:476 lxc/network.go:581 lxc/network.go:686 lxc/network.go:832
+#: lxc/network.go:897 lxc/network.go:946 lxc/network.go:1015
+msgid "Missing network name"
+msgstr ""
+
+#: lxc/storage.go:185 lxc/storage.go:252 lxc/storage.go:353 lxc/storage.go:408
+#: lxc/storage.go:603 lxc/storage.go:677 lxc/storage_volume.go:146
+#: lxc/storage_volume.go:225 lxc/storage_volume.go:451
+#: lxc/storage_volume.go:526 lxc/storage_volume.go:585
+#: lxc/storage_volume.go:667 lxc/storage_volume.go:766
+#: lxc/storage_volume.go:878 lxc/storage_volume.go:942
+#: lxc/storage_volume.go:1050 lxc/storage_volume.go:1114
+#: lxc/storage_volume.go:1197
+msgid "Missing pool name"
+msgstr ""
+
+#: lxc/profile.go:321 lxc/profile.go:372 lxc/profile.go:444 lxc/profile.go:544
+#: lxc/profile.go:729 lxc/profile.go:777 lxc/profile.go:836
+msgid "Missing profile name"
+msgstr ""
+
+#: lxc/profile.go:266
+msgid "Missing source profile name"
+msgstr ""
+
+#: lxc/storage_volume.go:311
+msgid "Missing source volume name"
+msgstr ""
+
+#: lxc/file.go:446
+#, fuzzy
+msgid "Missing target directory"
+msgstr "%s no es un directorio"
+
+#: lxc/monitor.go:30
+msgid "Monitor a local or remote LXD server"
+msgstr ""
+
+#: lxc/monitor.go:31
+msgid ""
+"Monitor a local or remote LXD server\n"
+"\n"
+"By default the monitor will listen to all message types."
+msgstr ""
+
+#: lxc/network.go:411 lxc/network.go:496 lxc/storage_volume.go:605
+#: lxc/storage_volume.go:686
 msgid "More than one device matches, specify the device name."
 msgstr ""
 
-#: lxc/file.go:460
+#: lxc/file.go:224
 msgid "More than one file to download, but target is not a directory"
 msgstr ""
 
-#: lxc/move.go:42
+#: lxc/move.go:30 lxc/move.go:31
+msgid "Move containers within or in between LXD instances"
+msgstr ""
+
+#: lxc/storage_volume.go:993 lxc/storage_volume.go:994
+msgid "Move storage volumes between pools"
+msgstr ""
+
+#: lxc/move.go:44
 msgid "Move the container without its snapshots"
 msgstr ""
 
-#: lxc/storage.go:1128
+#: lxc/storage_volume.go:375
 #, c-format
 msgid "Moving the storage volume: %s"
 msgstr ""
 
-#: lxc/image.go:1292
+#: lxc/image.go:588
 msgid "Must run as root to import from directory"
 msgstr ""
 
-#: lxc/action.go:74
+#: lxc/action.go:147
 msgid "Must supply container name for: "
 msgstr ""
 
-#: lxc/cluster.go:183 lxc/list.go:471 lxc/network.go:576 lxc/profile.go:573
-#: lxc/remote.go:409 lxc/storage.go:731 lxc/storage.go:936
+#: lxc/cluster.go:119 lxc/list.go:468 lxc/network.go:781 lxc/profile.go:613
+#: lxc/remote.go:463 lxc/storage.go:544 lxc/storage_volume.go:966
 msgid "NAME"
 msgstr ""
 
-#: lxc/network.go:558 lxc/operation.go:139 lxc/remote.go:380 lxc/remote.go:385
+#: lxc/network.go:763 lxc/operation.go:138 lxc/remote.go:434 lxc/remote.go:439
 msgid "NO"
 msgstr ""
 
-#: lxc/storage.go:941
+#: lxc/storage_volume.go:971
 msgid "NODE"
 msgstr ""
 
-#: lxc/info.go:117
+#: lxc/info.go:121
 #, c-format
 msgid "Name: %s"
 msgstr ""
 
-#: lxc/network.go:276
+#: lxc/network.go:303
 #, c-format
 msgid "Network %s created"
 msgstr ""
 
-#: lxc/network.go:393
+#: lxc/network.go:353
 #, c-format
 msgid "Network %s deleted"
 msgstr ""
 
-#: lxc/network.go:274
+#: lxc/network.go:301
 #, c-format
 msgid "Network %s pending on node %s"
 msgstr ""
 
-#: lxc/network.go:470
+#: lxc/network.go:906
 #, c-format
 msgid "Network %s renamed to %s"
 msgstr ""
 
-#: lxc/init.go:145 lxc/init.go:146
+#: lxc/init.go:45
 msgid "Network name"
 msgstr ""
 
-#: lxc/info.go:226
+#: lxc/info.go:230
 msgid "Network usage:"
 msgstr ""
 
-#: lxc/image.go:180 lxc/publish.go:36
+#: lxc/publish.go:39
 msgid "New alias to define at target"
 msgstr ""
 
-#: lxc/config.go:414
-msgid "No certificate provided to add"
+#: lxc/image.go:140 lxc/image.go:577
+msgid "New aliases to add to the image"
 msgstr ""
 
-#: lxc/network.go:312 lxc/network.go:365
+#: lxc/network.go:420 lxc/network.go:505
 msgid "No device found for this network"
 msgstr ""
 
-#: lxc/storage.go:444 lxc/storage.go:574
+#: lxc/storage_volume.go:614 lxc/storage_volume.go:695
 msgid "No device found for this storage volume."
 msgstr ""
 
-#: lxc/config.go:446
-msgid "No fingerprint specified."
-msgstr ""
-
-#: lxc/cluster.go:143
+#: lxc/cluster.go:268
 #, c-format
 msgid "Node %s removed"
 msgstr ""
 
-#: lxc/cluster.go:119
+#: lxc/cluster.go:221
 #, c-format
 msgid "Node %s renamed to %s"
 msgstr ""
 
-#: lxc/copy.go:46 lxc/init.go:150 lxc/move.go:45 lxc/network.go:105
-#: lxc/storage.go:165
+#: lxc/copy.go:45 lxc/init.go:48 lxc/move.go:47
 msgid "Node name"
 msgstr ""
 
-#: lxc/storage.go:388 lxc/storage.go:481
+#: lxc/storage_volume.go:164 lxc/storage_volume.go:243
 msgid "Only \"custom\" volumes can be attached to containers."
 msgstr ""
 
-#: lxc/remote.go:101
+#: lxc/remote.go:146
 msgid "Only https URLs are supported for simplestreams"
 msgstr ""
 
-#: lxc/image.go:688
+#: lxc/image.go:658
 msgid "Only https:// is supported for remote image import."
 msgstr ""
 
-#: lxc/network.go:421 lxc/network.go:605
+#: lxc/network.go:607 lxc/network.go:960
 msgid "Only managed networks can be modified."
 msgstr ""
 
-#: lxc/operation.go:85
+#: lxc/operation.go:83
 #, c-format
 msgid "Operation %s deleted"
 msgstr ""
 
-#: lxc/help.go:71 lxc/main.go:139 lxc/main.go:195
-msgid "Options:"
-msgstr ""
-
-#: lxc/exec.go:69
+#: lxc/exec.go:53
 msgid "Override the terminal mode (auto, interactive or non-interactive)"
 msgstr ""
 
-#: lxc/list.go:641
+#: lxc/list.go:638
 msgid "PERSISTENT"
 msgstr ""
 
-#: lxc/list.go:473
+#: lxc/list.go:470
 msgid "PID"
 msgstr ""
 
-#: lxc/list.go:472
+#: lxc/list.go:469
 msgid "PROCESSES"
 msgstr ""
 
-#: lxc/list.go:474
+#: lxc/list.go:471
 msgid "PROFILES"
 msgstr ""
 
-#: lxc/remote.go:411
+#: lxc/remote.go:465
 msgid "PROTOCOL"
 msgstr ""
 
-#: lxc/image.go:234 lxc/remote.go:413
+#: lxc/image.go:924 lxc/remote.go:467
 msgid "PUBLIC"
 msgstr ""
 
-#: lxc/info.go:220
+#: lxc/info.go:224
 msgid "Packets received"
 msgstr ""
 
-#: lxc/info.go:221
+#: lxc/info.go:225
 msgid "Packets sent"
 msgstr ""
 
-#: lxc/help.go:78
-msgid "Path to an alternate client configuration directory"
-msgstr ""
-
-#: lxc/help.go:79
-msgid "Path to an alternate server directory"
+#: lxc/action.go:48 lxc/action.go:49
+msgid "Pause containers"
 msgstr ""
 
-#: lxc/main.go:240
-msgid "Pause containers."
-msgstr ""
-
-#: lxc/main.go:42
-msgid "Permission denied, are you in the lxd group?"
-msgstr ""
-
-#: lxc/info.go:138
+#: lxc/info.go:142
 #, c-format
 msgid "Pid: %d"
 msgstr ""
 
-#: lxc/network.go:446 lxc/profile.go:276 lxc/storage.go:648 lxc/storage.go:1210
+#: lxc/network.go:632 lxc/profile.go:491 lxc/storage.go:299
+#: lxc/storage_volume.go:823
 msgid "Press enter to open the editor again"
 msgstr ""
 
-#: lxc/config.go:822 lxc/config.go:887 lxc/config.go:1397 lxc/config.go:1447
-#: lxc/image.go:1192
+#: lxc/config.go:196 lxc/config.go:260 lxc/config_metadata.go:145
+#: lxc/config_template.go:205 lxc/image.go:406
 msgid "Press enter to start the editor again"
 msgstr ""
 
-#: lxc/monitor.go:68
+#: lxc/monitor.go:47
 msgid "Pretty rendering"
 msgstr ""
 
-#: lxc/help.go:73
-msgid "Print debug information"
-msgstr ""
-
-#: lxc/help.go:72
-msgid "Print less common commands"
+#: lxc/main.go:55
+msgid "Print help"
 msgstr ""
 
-#: lxc/query.go:37
+#: lxc/query.go:36
 msgid "Print the raw response"
 msgstr ""
 
-#: lxc/help.go:74
-msgid "Print verbose information"
+#: lxc/main.go:54
+msgid "Print version number"
 msgstr ""
 
-#: lxc/info.go:162
+#: lxc/info.go:166
 #, c-format
 msgid "Processes: %d"
 msgstr ""
 
-#: lxc/profile.go:362
+#: lxc/main_aliases.go:123 lxc/main_aliases.go:131
+#, c-format
+msgid "Processing aliases failed: %s\n"
+msgstr ""
+
+#: lxc/profile.go:147
 #, c-format
 msgid "Profile %s added to %s"
 msgstr ""
 
-#: lxc/profile.go:226
+#: lxc/profile.go:333
 #, c-format
 msgid "Profile %s created"
 msgstr ""
 
-#: lxc/profile.go:310
+#: lxc/profile.go:381
 #, c-format
 msgid "Profile %s deleted"
 msgstr ""
 
-#: lxc/profile.go:397
+#: lxc/profile.go:690
 #, c-format
 msgid "Profile %s removed from %s"
 msgstr ""
 
-#: lxc/profile.go:300
+#: lxc/profile.go:738
 #, c-format
 msgid "Profile %s renamed to %s"
 msgstr ""
 
-#: lxc/copy.go:39 lxc/copy.go:40 lxc/init.go:141 lxc/init.go:142
+#: lxc/copy.go:40 lxc/init.go:43
 msgid "Profile to apply to the new container"
 msgstr ""
 
-#: lxc/profile.go:339
+#: lxc/profile.go:225
 #, c-format
 msgid "Profiles %s applied to %s"
 msgstr ""
 
-#: lxc/info.go:136
+#: lxc/info.go:140
 #, c-format
 msgid "Profiles: %s"
 msgstr ""
 
-#: lxc/image.go:619
+#: lxc/image.go:849
 msgid "Properties:"
 msgstr ""
 
-#: lxc/remote.go:72
+#: lxc/remote.go:92
 msgid "Public image server"
 msgstr ""
 
-#: lxc/image.go:602
+#: lxc/image.go:827
 #, c-format
 msgid "Public: %s"
 msgstr ""
 
-#: lxc/file.go:68 lxc/file.go:69
-msgid "Recursively push or pull files"
+#: lxc/publish.go:33 lxc/publish.go:34
+msgid "Publish containers as images"
 msgstr ""
 
-#: lxc/image.go:529
-#, c-format
-msgid "Refreshing the image: %s"
+#: lxc/file.go:184 lxc/file.go:185
+msgid "Pull files from containers"
 msgstr ""
 
-#: lxc/remote.go:69
-msgid "Remote admin password"
+#: lxc/file.go:323 lxc/file.go:324
+msgid "Push files into containers"
 msgstr ""
 
-#: lxc/utils/cancel.go:34
-msgid "Remote operation canceled by user"
+#: lxc/file.go:192 lxc/file.go:330
+msgid "Recursively transfer files"
+msgstr ""
+
+#: lxc/image.go:1211 lxc/image.go:1212
+msgid "Refresh images"
 msgstr ""
 
-#: lxc/info.go:122
+#: lxc/image.go:1239
 #, c-format
-msgid "Remote: %s"
+msgid "Refreshing the image: %s"
 msgstr ""
 
-#: lxc/delete.go:42
+#: lxc/remote.go:515
 #, c-format
-msgid "Remove %s (yes/no): "
+msgid "Remote %s already exists"
 msgstr ""
 
-#: lxc/storage.go:1247
+#: lxc/remote.go:507 lxc/remote.go:569 lxc/remote.go:618 lxc/remote.go:656
 #, c-format
-msgid "Renamed storage volume from \"%s\" to \"%s\""
+msgid "Remote %s doesn't exist"
 msgstr ""
 
-#: lxc/delete.go:36 lxc/delete.go:37
-msgid "Require user confirmation"
+#: lxc/remote.go:116
+#, c-format
+msgid "Remote %s exists as <%s>"
 msgstr ""
 
-#: lxc/info.go:159
-msgid "Resources:"
+#: lxc/remote.go:511 lxc/remote.go:573 lxc/remote.go:660
+#, c-format
+msgid "Remote %s is static and cannot be modified"
 msgstr ""
 
-#: lxc/main.go:248
-msgid "Restart containers."
+#: lxc/remote.go:89
+msgid "Remote admin password"
 msgstr ""
 
-#: lxc/console.go:38
-msgid "Retrieve the container's console log"
+#: lxc/utils/cancel.go:34
+msgid "Remote operation canceled by user"
 msgstr ""
 
-#: lxc/init.go:293
+#: lxc/info.go:126
 #, c-format
-msgid "Retrieving image: %s"
+msgid "Remote: %s"
 msgstr ""
 
-#: lxc/action.go:52
-msgid "Run command against all containers"
+#: lxc/delete.go:42
+#, c-format
+msgid "Remove %s (yes/no): "
 msgstr ""
 
-#: lxc/image.go:237
-msgid "SIZE"
+#: lxc/cluster.go:237 lxc/cluster.go:238
+msgid "Remove a member from the cluster"
 msgstr ""
 
-#: lxc/list.go:475
-msgid "SNAPSHOTS"
+#: lxc/alias.go:197 lxc/alias.go:198
+msgid "Remove aliases"
 msgstr ""
 
-#: lxc/storage.go:738
-msgid "SOURCE"
+#: lxc/config_device.go:404 lxc/config_device.go:405
+msgid "Remove container devices"
 msgstr ""
 
-#: lxc/cluster.go:186 lxc/list.go:476 lxc/network.go:583 lxc/storage.go:736
-msgid "STATE"
+#: lxc/profile.go:631 lxc/profile.go:632
+msgid "Remove profiles from containers"
 msgstr ""
 
-#: lxc/remote.go:414
-msgid "STATIC"
+#: lxc/remote.go:548 lxc/remote.go:549
+msgid "Remove remotes"
 msgstr ""
 
-#: lxc/operation.go:155
-msgid "STATUS"
+#: lxc/config_trust.go:196 lxc/config_trust.go:197
+msgid "Remove trusted clients"
 msgstr ""
 
-#: lxc/list.go:478
-msgid "STORAGE POOL"
+#: lxc/cluster.go:191 lxc/cluster.go:192
+msgid "Rename a cluster member"
 msgstr ""
 
-#: lxc/remote.go:71
-msgid "Server authentication type (tls or macaroons)"
+#: lxc/alias.go:146 lxc/alias.go:147 lxc/image_alias.go:249
+#: lxc/image_alias.go:250
+msgid "Rename aliases"
 msgstr ""
 
-#: lxc/remote.go:211
-msgid "Server certificate NACKed by user"
+#: lxc/rename.go:19 lxc/rename.go:20
+msgid "Rename containers and snapshots"
 msgstr ""
 
-#: lxc/remote.go:311
-msgid "Server doesn't trust us after authentication"
+#: lxc/network.go:872 lxc/network.go:873
+msgid "Rename networks"
 msgstr ""
 
-#: lxc/remote.go:70
-msgid "Server protocol (lxd or simplestreams)"
+#: lxc/profile.go:704 lxc/profile.go:705
+msgid "Rename profiles"
 msgstr ""
 
-#: lxc/file.go:66
-msgid "Set the file's gid on push"
+#: lxc/remote.go:486 lxc/remote.go:487
+msgid "Rename remotes"
 msgstr ""
 
-#: lxc/file.go:67
-msgid "Set the file's perms on push"
+#: lxc/storage_volume.go:1024 lxc/storage_volume.go:1025
+msgid "Rename storage volumes"
 msgstr ""
 
-#: lxc/file.go:65
-msgid "Set the file's uid on push"
+#: lxc/storage_volume.go:1073
+#, c-format
+msgid "Renamed storage volume from \"%s\" to \"%s\""
 msgstr ""
 
-#: lxc/help.go:29
-msgid "Show all commands (not just interesting ones)"
+#: lxc/delete.go:35
+msgid "Require user confirmation"
 msgstr ""
 
-#: lxc/help.go:75
-msgid "Show client version"
+#: lxc/info.go:163
+msgid "Resources:"
 msgstr ""
 
-#: lxc/info.go:40
-msgid "Show the container's last 100 log lines?"
+#: lxc/action.go:68
+msgid "Restart containers"
 msgstr ""
 
-#: lxc/config.go:36
-msgid "Show the expanded configuration"
+#: lxc/action.go:69
+msgid ""
+"Restart containers\n"
+"\n"
+"The opposite of \"lxc pause\" is \"lxc start\"."
 msgstr ""
 
-#: lxc/info.go:41
-msgid "Show the resources available to the server"
+#: lxc/restore.go:23
+msgid "Restore containers from snapshots"
 msgstr ""
 
-#: lxc/storage.go:163
-msgid "Show the resources available to the storage pool"
+#: lxc/restore.go:24
+msgid ""
+"Restore containers from snapshots\n"
+"\n"
+"If --stateful is passed, then the running state will be restored too."
 msgstr ""
 
-#: lxc/storage.go:164
-msgid "Show the used and free space in bytes"
+#: lxc/console.go:39
+msgid "Retrieve the container's console log"
 msgstr ""
 
-#: lxc/image.go:600
+#: lxc/init.go:201
+#, c-format
+msgid "Retrieving image: %s"
+msgstr ""
+
+#: lxc/action.go:112
+msgid "Run command against all containers"
+msgstr ""
+
+#: lxc/image.go:927
+msgid "SIZE"
+msgstr ""
+
+#: lxc/list.go:472
+msgid "SNAPSHOTS"
+msgstr ""
+
+#: lxc/storage.go:551
+msgid "SOURCE"
+msgstr ""
+
+#: lxc/cluster.go:122 lxc/list.go:473 lxc/network.go:788 lxc/storage.go:549
+msgid "STATE"
+msgstr ""
+
+#: lxc/remote.go:468
+msgid "STATIC"
+msgstr ""
+
+#: lxc/operation.go:154
+msgid "STATUS"
+msgstr ""
+
+#: lxc/list.go:475
+msgid "STORAGE POOL"
+msgstr ""
+
+#: lxc/query.go:26 lxc/query.go:27
+msgid "Send a raw query to LXD"
+msgstr ""
+
+#: lxc/remote.go:91
+msgid "Server authentication type (tls or macaroons)"
+msgstr ""
+
+#: lxc/remote.go:260
+msgid "Server certificate NACKed by user"
+msgstr ""
+
+#: lxc/remote.go:360
+msgid "Server doesn't trust us after authentication"
+msgstr ""
+
+#: lxc/remote.go:90
+msgid "Server protocol (lxd or simplestreams)"
+msgstr ""
+
+#: lxc/config_device.go:492 lxc/config_device.go:493
+msgid "Set container device configuration keys"
+msgstr ""
+
+#: lxc/config.go:354 lxc/config.go:355
+msgid "Set container or server configuration keys"
+msgstr ""
+
+#: lxc/network.go:919 lxc/network.go:920
+msgid "Set network configuration keys"
+msgstr ""
+
+#: lxc/profile.go:752 lxc/profile.go:753
+msgid "Set profile configuration keys"
+msgstr ""
+
+#: lxc/storage.go:572 lxc/storage.go:573
+msgid "Set storage pool configuration keys"
+msgstr ""
+
+#: lxc/storage_volume.go:1088 lxc/storage_volume.go:1089
+msgid "Set storage volume configuration keys"
+msgstr ""
+
+#: lxc/remote.go:635 lxc/remote.go:636
+msgid "Set the URL for the remote"
+msgstr ""
+
+#: lxc/remote.go:597 lxc/remote.go:598
+msgid "Set the default remote"
+msgstr ""
+
+#: lxc/file.go:333
+msgid "Set the file's gid on push"
+msgstr ""
+
+#: lxc/file.go:334
+msgid "Set the file's perms on push"
+msgstr ""
+
+#: lxc/file.go:332
+msgid "Set the file's uid on push"
+msgstr ""
+
+#: lxc/main.go:57
+msgid "Show all debug messages"
+msgstr ""
+
+#: lxc/main.go:58
+msgid "Show all information messages"
+msgstr ""
+
+#: lxc/config_metadata.go:175 lxc/config_metadata.go:176
+msgid "Show container metadata files"
+msgstr ""
+
+#: lxc/config.go:451 lxc/config.go:452
+msgid "Show container or server configurations"
+msgstr ""
+
+#: lxc/info.go:28 lxc/info.go:29
+msgid "Show container or server information"
+msgstr ""
+
+#: lxc/config_template.go:297 lxc/config_template.go:298
+msgid "Show content of container file templates"
+msgstr ""
+
+#: lxc/cluster.go:141 lxc/cluster.go:142
+msgid "Show details of a cluster member"
+msgstr ""
+
+#: lxc/operation.go:173 lxc/operation.go:174
+msgid "Show details on a background operation"
+msgstr ""
+
+#: lxc/config_device.go:581 lxc/config_device.go:582
+msgid "Show full device configuration for containers or profiles"
+msgstr ""
+
+#: lxc/image.go:1284 lxc/image.go:1285
+msgid "Show image properties"
+msgstr ""
+
+#: lxc/main.go:61
+msgid "Show less common commands"
+msgstr ""
+
+#: lxc/network.go:988 lxc/network.go:989
+msgid "Show network configurations"
+msgstr ""
+
+#: lxc/profile.go:811 lxc/profile.go:812
+msgid "Show profile configurations"
+msgstr ""
+
+#: lxc/storage.go:644 lxc/storage.go:645
+msgid "Show storage pool configurations and resources"
+msgstr ""
+
+#: lxc/storage_volume.go:1165
+msgid "Show storage volum configurations"
+msgstr ""
+
+#: lxc/storage_volume.go:1166
+msgid "Show storage volume configurations"
+msgstr ""
+
+#: lxc/info.go:39
+msgid "Show the container's last 100 log lines?"
+msgstr ""
+
+#: lxc/remote.go:379 lxc/remote.go:380
+msgid "Show the default remote"
+msgstr ""
+
+#: lxc/config.go:455
+msgid "Show the expanded configuration"
+msgstr ""
+
+#: lxc/info.go:40
+msgid "Show the resources available to the server"
+msgstr ""
+
+#: lxc/storage.go:648
+msgid "Show the resources available to the storage pool"
+msgstr ""
+
+#: lxc/storage.go:386
+msgid "Show the used and free space in bytes"
+msgstr ""
+
+#: lxc/image.go:775 lxc/image.go:776
+msgid "Show useful information about images"
+msgstr ""
+
+#: lxc/storage.go:382 lxc/storage.go:383
+msgid "Show useful information about storage pools"
+msgstr ""
+
+#: lxc/image.go:825
 #, c-format
 msgid "Size: %.2fMB"
 msgstr ""
 
-#: lxc/info.go:240
+#: lxc/info.go:244
 msgid "Snapshots:"
 msgstr ""
 
-#: lxc/action.go:163
+#: lxc/action.go:242
 #, c-format
 msgid "Some containers failed to %s"
 msgstr ""
 
-#: lxc/image.go:634
+#: lxc/image.go:867
 msgid "Source:"
 msgstr ""
 
-#: lxc/main.go:258
-msgid "Start containers."
+#: lxc/action.go:29 lxc/action.go:30
+msgid "Start containers"
 msgstr ""
 
-#: lxc/launch.go:59
+#: lxc/launch.go:62
 #, c-format
 msgid "Starting %s"
 msgstr ""
 
-#: lxc/info.go:130
+#: lxc/info.go:134
 #, c-format
 msgid "Status: %s"
 msgstr ""
 
-#: lxc/main.go:264
-msgid "Stop containers."
+#: lxc/action.go:90 lxc/action.go:91
+msgid "Stop containers"
 msgstr ""
 
-#: lxc/publish.go:37 lxc/publish.go:38
+#: lxc/publish.go:40
 msgid "Stop the container if currently running"
 msgstr ""
 
-#: lxc/publish.go:136
+#: lxc/publish.go:144
 msgid "Stopping container failed!"
 msgstr ""
 
-#: lxc/delete.go:121
+#: lxc/delete.go:120
 #, c-format
 msgid "Stopping the container failed: %s"
 msgstr ""
 
-#: lxc/storage.go:538
+#: lxc/storage.go:144
 #, c-format
 msgid "Storage pool %s created"
 msgstr ""
 
-#: lxc/storage.go:598
+#: lxc/storage.go:194
 #, c-format
 msgid "Storage pool %s deleted"
 msgstr ""
 
-#: lxc/storage.go:536
+#: lxc/storage.go:142
 #, c-format
 msgid "Storage pool %s pending on node %s"
 msgstr ""
 
-#: lxc/init.go:147 lxc/init.go:148
+#: lxc/init.go:46
 msgid "Storage pool name"
 msgstr ""
 
-#: lxc/storage.go:980
+#: lxc/storage_volume.go:484
 #, c-format
 msgid "Storage volume %s created"
 msgstr ""
 
-#: lxc/storage.go:1000
+#: lxc/storage_volume.go:545
 #, c-format
 msgid "Storage volume %s deleted"
 msgstr ""
 
-#: lxc/storage.go:1135
+#: lxc/storage_volume.go:388
 msgid "Storage volume copied successfully!"
 msgstr ""
 
-#: lxc/storage.go:1129
+#: lxc/storage_volume.go:376
 msgid "Storage volume moved successfully!"
 msgstr ""
 
-#: lxc/action.go:50
-msgid "Store the container state (only for stop)"
+#: lxc/action.go:115
+msgid "Store the container state"
 msgstr ""
 
-#: lxc/info.go:201
+#: lxc/info.go:205
 msgid "Swap (current)"
 msgstr ""
 
-#: lxc/info.go:205
+#: lxc/info.go:209
 msgid "Swap (peak)"
 msgstr ""
 
-#: lxc/alias.go:85
+#: lxc/alias.go:128
 msgid "TARGET"
 msgstr ""
 
-#: lxc/list.go:477 lxc/network.go:516 lxc/network.go:577 lxc/operation.go:153
-#: lxc/storage.go:935
+#: lxc/list.go:474 lxc/network.go:782 lxc/network.go:854 lxc/operation.go:152
+#: lxc/storage_volume.go:965
 msgid "TYPE"
 msgstr ""
 
-#: lxc/delete.go:105
+#: lxc/delete.go:104
 msgid "The container is currently running, stop it first or pass --force."
 msgstr ""
 
-#: lxc/publish.go:101
+#: lxc/publish.go:109
 msgid ""
 "The container is currently running. Use --force to have it stopped and "
 "restarted."
 msgstr ""
 
-#: lxc/init.go:372
+#: lxc/init.go:280
 msgid "The container you are starting doesn't have any network attached to it."
 msgstr ""
 
-#: lxc/config.go:944 lxc/config.go:961 lxc/config.go:1240
+#: lxc/config_device.go:130 lxc/config_device.go:147 lxc/config_device.go:354
 msgid "The device already exists"
 msgstr ""
 
-#: lxc/config.go:1007 lxc/config.go:1019 lxc/config.go:1055 lxc/config.go:1073
-#: lxc/config.go:1119 lxc/config.go:1136 lxc/config.go:1179 lxc/config.go:1197
+#: lxc/config_device.go:218 lxc/config_device.go:230 lxc/config_device.go:442
+#: lxc/config_device.go:460 lxc/config_device.go:533 lxc/config_device.go:550
 msgid "The device doesn't exist"
 msgstr ""
 
-#: lxc/init.go:356
+#: lxc/init.go:264
 #, c-format
 msgid "The local image '%s' couldn't be found, trying '%s:%s' instead."
 msgstr ""
 
-#: lxc/init.go:352
+#: lxc/init.go:260
 #, c-format
 msgid "The local image '%s' couldn't be found, trying '%s:' instead."
 msgstr ""
 
-#: lxc/action.go:35
-msgid "The opposite of \"lxc pause\" is \"lxc start\"."
-msgstr ""
-
-#: lxc/config.go:1245
+#: lxc/config_device.go:359
 msgid "The profile device doesn't exist"
 msgstr ""
 
-#: lxc/network.go:317 lxc/network.go:370 lxc/storage.go:449 lxc/storage.go:579
+#: lxc/network.go:425 lxc/network.go:510 lxc/storage_volume.go:619
+#: lxc/storage_volume.go:700
 msgid "The specified device doesn't exist"
 msgstr ""
 
-#: lxc/network.go:321 lxc/network.go:374
+#: lxc/network.go:429 lxc/network.go:514
 msgid "The specified device doesn't match the network"
 msgstr ""
 
-#: lxc/publish.go:74
+#: lxc/publish.go:82
 msgid "There is no \"image name\".  Did you want an alias?"
 msgstr ""
 
-#: lxc/help.go:47
-msgid ""
-"This is the LXD command line client.\n"
-"\n"
-"All of LXD's features can be driven through the various commands below.\n"
-"For help with any of those, simply call them with --help."
-msgstr ""
-
-#: lxc/action.go:46
+#: lxc/action.go:122
 msgid "Time to wait for the container before killing it"
 msgstr ""
 
-#: lxc/image.go:603
+#: lxc/image.go:828
 msgid "Timestamps:"
 msgstr ""
 
-#: lxc/init.go:374
+#: lxc/init.go:282
 msgid "To attach a network to a container, use: lxc network attach"
 msgstr ""
 
-#: lxc/init.go:373
+#: lxc/init.go:281
 msgid "To create a new network, use: lxc network create"
 msgstr ""
 
-#: lxc/console.go:173
+#: lxc/console.go:185
 msgid "To detach from the console, press: <ctrl>+a q"
 msgstr ""
 
-#: lxc/main.go:172
+#: lxc/main.go:260
 msgid "To start your first container, try: lxc launch ubuntu:16.04"
 msgstr ""
 
-#: lxc/copy.go:43 lxc/move.go:43
+#: lxc/storage_volume.go:997
+msgid "Transfer mode, one of pull (default), push or relay"
+msgstr ""
+
+#: lxc/copy.go:42
+msgid "Transfer mode. One of pull (default), push or relay"
+msgstr ""
+
+#: lxc/move.go:45 lxc/storage_volume.go:286
 msgid "Transfer mode. One of pull (default), push or relay."
 msgstr ""
 
-#: lxc/copy.go:212
+#: lxc/copy.go:229
 #, c-format
 msgid "Transferring container: %s"
 msgstr ""
 
-#: lxc/image.go:717
+#: lxc/image.go:687
 #, c-format
 msgid "Transferring image: %s"
 msgstr ""
 
-#: lxc/action.go:108 lxc/launch.go:77
+#: lxc/action.go:181 lxc/launch.go:80
 #, c-format
 msgid "Try `lxc info --show-log %s` for more info"
 msgstr ""
 
-#: lxc/info.go:132
+#: lxc/info.go:136
 msgid "Type: ephemeral"
 msgstr ""
 
-#: lxc/info.go:134
+#: lxc/info.go:138
 msgid "Type: persistent"
 msgstr ""
 
-#: lxc/image.go:238
+#: lxc/image.go:928
 msgid "UPLOAD DATE"
 msgstr ""
 
-#: lxc/cluster.go:184 lxc/remote.go:410
+#: lxc/cluster.go:120 lxc/remote.go:464
 msgid "URL"
 msgstr ""
 
-#: lxc/network.go:580 lxc/profile.go:574 lxc/storage.go:740 lxc/storage.go:938
+#: lxc/network.go:785 lxc/profile.go:614 lxc/storage.go:553
+#: lxc/storage_volume.go:968
 msgid "USED BY"
 msgstr ""
 
-#: lxc/manpage.go:36
-msgid "Unable to find help2man."
+#: lxc/list.go:514
+#, c-format
+msgid "Unknown column shorthand char '%c' in '%s'"
 msgstr ""
 
-#: lxc/file.go:124
+#: lxc/file.go:596
 #, c-format
 msgid "Unknown file type '%s'"
 msgstr ""
 
-#: lxc/image.go:608
-#, c-format
-msgid "Uploaded: %s"
+#: lxc/config_device.go:649 lxc/config_device.go:650
+msgid "Unset container device configuration keys"
 msgstr ""
 
-#: lxc/action.go:38
-#, c-format
-msgid ""
-"Usage: lxc %s [--all] [<remote>:]<container> [[<remote>:]<container>...]\n"
-"\n"
-"%s%s"
+#: lxc/config.go:559 lxc/config.go:560
+msgid "Unset container or server configuration keys"
 msgstr ""
 
-#: lxc/help.go:45
-msgid "Usage: lxc <command> [options]"
+#: lxc/network.go:1050 lxc/network.go:1051
+msgid "Unset network configuration keys"
 msgstr ""
 
-#: lxc/alias.go:22
-msgid ""
-"Usage: lxc alias <subcommand> [options]\n"
-"\n"
-"Manage command aliases.\n"
-"\n"
-"lxc alias add <alias> <target>\n"
-"    Add a new alias <alias> pointing to <target>.\n"
-"\n"
-"lxc alias remove <alias>\n"
-"    Remove the alias <alias>.\n"
-"\n"
-"lxc alias list\n"
-"    List all the aliases.\n"
-"\n"
-"lxc alias rename <old alias> <new alias>\n"
-"    Rename remote <old alias> to <new alias>."
+#: lxc/profile.go:865 lxc/profile.go:866
+msgid "Unset profile configuration keys"
 msgstr ""
 
-#: lxc/cluster.go:23
-msgid ""
-"Usage: lxc cluster <subcommand> [options]\n"
-"\n"
-"Manage cluster nodes.\n"
-"\n"
-"lxc cluster list [<remote>:]\n"
-"    List all nodes in the cluster.\n"
-"\n"
-"lxc cluster show [<remote>:]<node>\n"
-"    Show details of a node.\n"
-"\n"
-"lxc cluster rename [<remote>:]<node> <new-name>\n"
-"    Rename a cluster node.\n"
-"\n"
-"lxc cluster delete [<remote>:]<node> [--force]\n"
-"    Delete a node from the cluster."
+#: lxc/storage.go:728 lxc/storage.go:729
+msgid "Unset storage pool configuration keys"
 msgstr ""
 
-#: lxc/config.go:85
-msgid ""
-"Usage: lxc config <subcommand> [options]\n"
-"\n"
-"Change container or server configuration options.\n"
-"\n"
-"*Container configuration*\n"
-"\n"
-"lxc config get [<remote>:][container] <key>\n"
-"    Get container or server configuration key.\n"
-"\n"
-"lxc config set [<remote>:][container] <key> <value>\n"
-"    Set container or server configuration key.\n"
-"\n"
-"lxc config unset [<remote>:][container] <key>\n"
-"    Unset container or server configuration key.\n"
-"\n"
-"lxc config show [<remote>:][container] [--expanded]\n"
-"    Show container or server configuration.\n"
-"\n"
-"lxc config edit [<remote>:][container]\n"
-"    Edit configuration, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"*Container metadata*\n"
-"\n"
-"lxc config metadata show [<remote>:][container]\n"
-"    Show the container metadata.yaml content.\n"
-"\n"
-"lxc config metadata edit [<remote>:][container]\n"
-"    Edit the container metadata.yaml, either by launching external editor or "
-"reading STDIN.\n"
-"\n"
-"*Container templates*\n"
-"\n"
-"lxc config template list [<remote>:][container]\n"
-"    List the names of template files for a container.\n"
-"\n"
-"lxc config template show [<remote>:][container] [template]\n"
-"    Show the content of a template file for a container.\n"
-"\n"
-"lxc config template create [<remote>:][container] [template]\n"
-"    Add an empty template file for a container.\n"
-"\n"
-"lxc config template edit [<remote>:][container] [template]\n"
-"    Edit the content of a template file for a container, either by launching "
-"external editor or reading STDIN.\n"
-"\n"
-"lxc config template delete [<remote>:][container] [template]\n"
-"    Delete a template file for a container.\n"
-"\n"
-"\n"
-"*Device management*\n"
-"\n"
-"lxc config device add [<remote>:]<container> <device> <type> [key=value...]\n"
-"    Add a device to a container.\n"
-"\n"
-"lxc config device get [<remote>:]<container> <device> <key>\n"
-"    Get a device property.\n"
-"\n"
-"lxc config device set [<remote>:]<container> <device> <key> <value>\n"
-"    Set a device property.\n"
-"\n"
-"lxc config device unset [<remote>:]<container> <device> <key>\n"
-"    Unset a device property.\n"
-"\n"
-"lxc config device override [<remote>:]<container> <device> [key=value...]\n"
-"    Copy a profile inherited device into local container config.\n"
-"\n"
-"lxc config device list [<remote>:]<container>\n"
-"    List devices for container.\n"
-"\n"
-"lxc config device show [<remote>:]<container>\n"
-"    Show full device details for container.\n"
-"\n"
-"lxc config device remove [<remote>:]<container> <name>...\n"
-"    Remove device from container.\n"
-"\n"
-"*Client trust store management*\n"
-"\n"
-"lxc config trust list [<remote>:]\n"
-"    List all trusted certs.\n"
-"\n"
-"lxc config trust add [<remote>:] <certfile.crt>\n"
-"    Add certfile.crt to trusted hosts.\n"
-"\n"
-"lxc config trust remove [<remote>:] [hostname|fingerprint]\n"
-"    Remove the cert from trusted hosts.\n"
-"\n"
-"*Examples*\n"
-"\n"
-"cat config.yaml | lxc config edit <container>\n"
-"    Update the container configuration from config.yaml.\n"
-"\n"
-"lxc config device add [<remote>:]container1 <device-name> disk source=/share/"
-"c1 path=opt\n"
-"    Will mount the host's /share/c1 onto /opt in the container.\n"
-"\n"
-"lxc config set [<remote>:]<container> limits.cpu 2\n"
-"    Will set a CPU limit of \"2\" for the container.\n"
-"\n"
-"lxc config set core.https_address [::]:8443\n"
-"    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
-"\n"
-"lxc config set core.trust_password blah\n"
-"    Will set the server's trust password to blah."
+#: lxc/storage_volume.go:1240 lxc/storage_volume.go:1241
+msgid "Unset storage volume configuration keys"
 msgstr ""
 
-#: lxc/console.go:31
-msgid ""
-"Usage: lxc console [<remote>:]<container> [-l]\n"
-"\n"
-"Interact with the container's console device and log."
+#: lxc/image.go:835
+#, c-format
+msgid "Uploaded: %s"
 msgstr ""
 
-#: lxc/copy.go:30
-msgid ""
-"Usage: lxc copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>] "
-"[--ephemeral|e] [--profile|-p <profile>...] [--config|-c <key=value>...] [--"
-"container-only] [--target <node>]\n"
-"\n"
-"Copy containers within or in between LXD instances."
+#: lxc/delete.go:47
+msgid "User aborted delete operation"
 msgstr ""
 
-#: lxc/delete.go:27
+#: lxc/utils/cancel.go:40
 msgid ""
-"Usage: lxc delete [<remote>:]<container>[/<snapshot>] "
-"[[<remote>:]<container>[/<snapshot>]...]\n"
-"\n"
-"Delete containers and snapshots."
+"User signaled us three times, exiting. The remote operation will keep "
+"running."
 msgstr ""
 
-#: lxc/exec.go:53
-msgid ""
-"Usage: lxc exec [<remote>:]<container> [-t] [-T] [-n] [--mode=auto|"
-"interactive|non-interactive] [--env KEY=VALUE...] [--] <command line>\n"
-"\n"
-"Execute commands in containers.\n"
-"\n"
-"The command is executed directly using exec, so there is no shell and shell "
-"patterns (variables, file redirects, ...)\n"
-"won't be understood. If you need a shell environment you need to execute the "
-"shell executable, passing the shell commands\n"
-"as arguments, for example:\n"
-"\n"
-"    lxc exec <container> -- sh -c \"cd /tmp && pwd\"\n"
-"\n"
-"Mode defaults to non-interactive, interactive mode is selected if both stdin "
-"AND stdout are terminals (stderr is ignored)."
+#: lxc/query.go:35
+msgid "Wait for the operation to complete"
 msgstr ""
 
-#: lxc/file.go:39
+#: lxc/restore.go:36
 msgid ""
-"Usage: lxc file <subcommand> [options]\n"
-"\n"
-"Manage files in containers.\n"
-"\n"
-"lxc file pull [-r|--recursive] [<remote>:]<container>/<path> "
-"[[<remote>:]<container>/<path>...] <target path>\n"
-"    Pull files from containers.\n"
-"\n"
-"lxc file push [-r|--recursive] [-p|--create-dirs] [--uid=UID] [--gid=GID] [--"
-"mode=MODE] <source path> [<source path>...] [<remote>:]<container>/<path>\n"
-"    Push files into containers.\n"
-"\n"
-"lxc file delete [<remote>:]<container>/<path> [[<remote>:]<container>/"
-"<path>...]\n"
-"    Delete files in containers.\n"
-"\n"
-"lxc file edit [<remote>:]<container>/<path>\n"
-"    Edit files in containers using the default text editor.\n"
-"\n"
-"*Examples*\n"
-"lxc file push /etc/hosts foo/etc/hosts\n"
-"   To push /etc/hosts into the container \"foo\".\n"
-"\n"
-"lxc file pull foo/etc/hosts .\n"
-"   To pull /etc/hosts from the container and write it to the current "
-"directory."
+"Whether or not to restore the container's running state from snapshot (if "
+"available)"
 msgstr ""
 
-#: lxc/finger.go:15
-msgid ""
-"Usage: lxc finger [<remote>:]\n"
-"\n"
-"Check if the LXD server is alive."
+#: lxc/snapshot.go:31
+msgid "Whether or not to snapshot the container's running state"
 msgstr ""
 
-#: lxc/help.go:22
-msgid ""
-"Usage: lxc help [--all]\n"
-"\n"
-"Help page for the LXD client."
+#: lxc/network.go:765 lxc/operation.go:140 lxc/remote.go:436 lxc/remote.go:441
+msgid "YES"
 msgstr ""
 
-#: lxc/image.go:73
-msgid ""
-"Usage: lxc image <subcommand> [options]\n"
-"\n"
-"Manipulate container images.\n"
-"\n"
-"In LXD containers are created from images. Those images were themselves\n"
-"either generated from an existing container or downloaded from an image\n"
-"server.\n"
-"\n"
-"When using remote images, LXD will automatically cache images for you\n"
-"and remove them upon expiration.\n"
-"\n"
-"The image unique identifier is the hash (sha-256) of its representation\n"
-"as a compressed tarball (or for split images, the concatenation of the\n"
-"metadata and rootfs tarballs).\n"
-"\n"
-"Images can be referenced by their full hash, shortest unique partial\n"
-"hash or alias name (if one is set).\n"
-"\n"
-"\n"
-"lxc image import <tarball>|<dir> [<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) or an image directory into the LXD "
-"image store.\n"
-"    Directory import is only available on Linux and must be performed as "
-"root.\n"
-"\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"
-"    Delete one or more images from the LXD image store.\n"
-"\n"
-"lxc image refresh [<remote>:]<image> [[<remote>:]<image>...]\n"
-"    Refresh one or more images from its parent remote.\n"
-"\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"
-"    The target may be an existing directory, file name, or \"-\" to specify\n"
-"    stdout.  The target MUST be a directory when exporting a split image.\n"
-"    If the target is a directory, the image's name (each part's name for\n"
-"    split images) as found in the database will be used for the exported\n"
-"    image.  If the target is a file (not a directory and not stdout), then\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"
-"    Print everything LXD knows about a given image.\n"
-"\n"
-"lxc image list [<remote>:] [filter] [--format csv|json|table|yaml] [-c "
-"<columns>]\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"
-"    The -c option takes a (optionally comma-separated) list of arguments "
-"that\n"
-"    control which image attributes to output when displaying in table or "
-"csv\n"
-"    format.\n"
-"\n"
-"    Default column layout is: lfpdasu\n"
-"\n"
-"    Column shorthand chars:\n"
-"\n"
-"        l - Shortest image alias (and optionally number of other aliases)\n"
-"\n"
-"        L - Newline-separated list of all image aliases\n"
-"\n"
-"        f - Fingerprint\n"
-"\n"
-"        p - Whether image is public\n"
-"\n"
-"        d - Description\n"
-"\n"
-"        a - Architecture\n"
-"\n"
-"        s - Size\n"
-"\n"
-"        u - Upload date\n"
-"\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"
-"    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"
-"    Create a new alias for an existing image.\n"
-"\n"
-"lxc image alias rename [<remote>:]<alias> <new-name>\n"
-"    Rename an alias.\n"
-"\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."
+#: lxc/exec.go:122
+msgid "You can't pass -t and -T at the same time"
 msgstr ""
 
-#: lxc/info.go:27
+#: lxc/exec.go:126
+msgid "You can't pass -t or -T at the same time as --mode"
+msgstr ""
+
+#: lxc/copy.go:78
+msgid "You must specify a destination container name when using --target"
+msgstr ""
+
+#: lxc/copy.go:73 lxc/move.go:188
+msgid "You must specify a source container name"
+msgstr ""
+
+#: lxc/copy.go:68 lxc/move.go:91 lxc/move.go:183
+msgid "You must use the same source and destination remote when using --target"
+msgstr ""
+
+#: lxc/alias.go:53
+msgid "add <alias> <target>"
+msgstr ""
+
+#: lxc/config_trust.go:57
+msgid "add [<remote>:] <cert>"
+msgstr ""
+
+#: lxc/profile.go:100
+msgid "add [<remote>:]<container> <profile>"
+msgstr ""
+
+#: lxc/config_device.go:74
+msgid "add [<remote>:]<container|profile> <device> <type> [key=value...]"
+msgstr ""
+
+#: lxc/remote.go:82
+msgid "add [<remote>] <IP|FQDN|URL>"
+msgstr ""
+
+#: lxc/alias.go:21 lxc/image_alias.go:24
+#, fuzzy
+msgid "alias"
+msgstr "Aliases:"
+
+#: lxc/profile.go:160
+msgid "assign [<remote>:]<container> <profiles>"
+msgstr ""
+
+#: lxc/network.go:102
+msgid "attach [<remote>:]<network> <container> [device name] [interface name]"
+msgstr ""
+
+#: lxc/storage_volume.go:120
+msgid "attach [<remote>:]<pool> <volume> <container> [device name] <path>"
+msgstr ""
+
+#: lxc/storage_volume.go:199
 msgid ""
-"Usage: lxc info [<remote>:][<container>] [--show-log] [--resources]\n"
-"\n"
-"Show container or server information.\n"
-"\n"
-"lxc info [<remote>:]<container> [--show-log]\n"
-"    For container information.\n"
-"\n"
-"lxc info [<remote>:] [--resources]\n"
-"    For LXD server information."
+"attach-profile [<remote:>]<pool> <volume> <profile> [device name] <path>"
 msgstr ""
 
-#: lxc/init.go:79
+#: lxc/network.go:175
 msgid ""
-"Usage: lxc init [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
-"profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
-"<node>]\n"
-"\n"
-"Create containers from images.\n"
-"\n"
-"Not specifying -p will result in the default profile.\n"
-"Specifying \"-p\" with no argument will result in no profile.\n"
-"\n"
-"Examples:\n"
-"    lxc init ubuntu:16.04 u1"
+"attach-profile [<remote>:]<network> <profile> [device name] [interface name]"
+msgstr ""
+
+#: lxc/cluster.go:24
+msgid "cluster"
+msgstr ""
+
+#: lxc/config.go:27
+msgid "config"
+msgstr ""
+
+#: lxc/console.go:30
+msgid "console [<remote>:]<container>"
+msgstr ""
+
+#: lxc/storage_volume.go:280
+msgid "copy <pool>/<volume> <pool>/<volume>"
+msgstr ""
+
+#: lxc/image.go:128
+msgid "copy [<remote>:]<image> <remote>:"
+msgstr ""
+
+#: lxc/profile.go:238
+msgid "copy [<remote>:]<profile> [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/copy.go:32
+msgid "copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>]"
+msgstr ""
+
+#: lxc/image_alias.go:57
+msgid "create [<remote>:]<alias> <fingerprint>"
+msgstr ""
+
+#: lxc/config_template.go:65
+msgid "create [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/network.go:248
+msgid "create [<remote>:]<network> [key=value...]"
+msgstr ""
+
+#: lxc/storage.go:87
+msgid "create [<remote>:]<pool> <driver> [key=value]..."
+msgstr ""
+
+#: lxc/storage_volume.go:424
+msgid "create [<remote>:]<pool> <volume> [key=value]..."
+msgstr ""
+
+#: lxc/profile.go:295
+msgid "create [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/remote.go:453
+msgid "default"
+msgstr ""
+
+#: lxc/image_alias.go:103
+msgid "delete [<remote>:]<alias>"
+msgstr ""
+
+#: lxc/config_template.go:107
+msgid "delete [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/file.go:70
+msgid "delete [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...]"
+msgstr ""
+
+#: lxc/delete.go:27
+msgid ""
+"delete [<remote>:]<container>[/<snapshot>] [[<remote>:]<container>[/"
+"<snapshot>]...]"
+msgstr ""
+
+#: lxc/image.go:258
+msgid "delete [<remote>:]<image> [[<remote>:]<image>...]"
+msgstr ""
+
+#: lxc/network.go:317
+msgid "delete [<remote>:]<network>"
+msgstr ""
+
+#: lxc/operation.go:51
+msgid "delete [<remote>:]<operation>"
+msgstr ""
+
+#: lxc/storage.go:158
+msgid "delete [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:498
+msgid "delete [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:345
+msgid "delete [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/storage.go:431
+msgid "description"
+msgstr ""
+
+#: lxc/network.go:365
+msgid "detach [<remote>:]<network> <container> [device name]"
+msgstr ""
+
+#: lxc/storage_volume.go:559
+msgid "detach [<remote>:]<pool> <volume> <container> [device name]"
+msgstr ""
+
+#: lxc/storage_volume.go:641
+msgid "detach-profile [<remote:>]<pool> <volume> <profile> [device name]"
+msgstr ""
+
+#: lxc/network.go:450
+msgid "detach-profile [<remote>:]<network> <container> [device name]"
+msgstr ""
+
+#: lxc/config_device.go:22
+msgid "device"
+msgstr ""
+
+#: lxc/init.go:223
+msgid "didn't get any affected image, container or snapshot from server"
+msgstr ""
+
+#: lxc/image.go:819
+msgid "disabled"
+msgstr ""
+
+#: lxc/storage.go:430
+msgid "driver"
+msgstr ""
+
+#: lxc/config_template.go:150
+msgid "edit [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/file.go:120
+msgid "edit [<remote>:]<container>/<path>"
+msgstr ""
+
+#: lxc/image.go:310
+msgid "edit [<remote>:]<image>"
+msgstr ""
+
+#: lxc/network.go:535
+msgid "edit [<remote>:]<network>"
+msgstr ""
+
+#: lxc/storage.go:206
+msgid "edit [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:722
+msgid "edit [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:394
+msgid "edit [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/config.go:86 lxc/config_metadata.go:52
+msgid "edit [<remote>:][container]"
+msgstr ""
+
+#: lxc/image.go:821
+msgid "enabled"
+msgstr ""
+
+#: lxc/action.go:234
+#, c-format
+msgid "error: %v"
+msgstr ""
+
+#: lxc/exec.go:37
+msgid "exec [<remote>:]<container> [flags] [--] <command line>"
+msgstr ""
+
+#: lxc/image.go:433
+msgid "export [<remote>:]<image> [target]"
+msgstr ""
+
+#: lxc/file.go:38
+msgid "file"
+msgstr ""
+
+#: lxc/config_device.go:177
+msgid "get [<remote>:]<container|profile> <device> <key>"
+msgstr ""
+
+#: lxc/network.go:658
+msgid "get [<remote>:]<network> <key>"
+msgstr ""
+
+#: lxc/storage.go:326
+msgid "get [<remote>:]<pool> <key>"
+msgstr ""
+
+#: lxc/storage_volume.go:851
+msgid "get [<remote>:]<pool> <volume> <key>"
+msgstr ""
+
+#: lxc/profile.go:518
+msgid "get [<remote>:]<profile> <key>"
+msgstr ""
+
+#: lxc/config.go:287
+msgid "get [<remote>:][container] <key>"
+msgstr ""
+
+#: lxc/remote.go:378
+msgid "get-default"
+msgstr ""
+
+#: lxc/image.go:40
+msgid "image"
+msgstr ""
+
+#: lxc/image.go:569
+msgid ""
+"import <tarball>|<directory>|<URL> [<rootfs tarball>] [<remote>:] "
+"[key=value...]"
+msgstr ""
+
+#: lxc/storage.go:428
+msgid "info"
+msgstr ""
+
+#: lxc/image.go:774
+msgid "info [<remote>:]<image>"
+msgstr ""
+
+#: lxc/storage.go:381
+msgid "info [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/info.go:27
+msgid "info [<remote>:][<container>]"
+msgstr ""
+
+#: lxc/init.go:33
+msgid "init [<remote>:]<image> [<remote>:][<name>]"
 msgstr ""
 
 #: lxc/launch.go:20
+msgid "launch [<remote>:]<image> [<remote>:][<name>]"
+msgstr ""
+
+#: lxc/alias.go:96 lxc/remote.go:411
+msgid "list"
+msgstr ""
+
+#: lxc/cluster.go:56 lxc/config_trust.go:112 lxc/network.go:716
+#: lxc/operation.go:95 lxc/profile.go:565 lxc/storage.go:488
+msgid "list [<remote>:]"
+msgstr ""
+
+#: lxc/image.go:887
+msgid "list [<remote>:] [filter]"
+msgstr ""
+
+#: lxc/image_alias.go:146
+msgid "list [<remote>:] [filters...]"
+msgstr ""
+
+#: lxc/list.go:45
+msgid "list [<remote>:] [filters]"
+msgstr ""
+
+#: lxc/config_template.go:234
+msgid "list [<remote>:]<container>"
+msgstr ""
+
+#: lxc/config_device.go:249
+msgid "list [<remote>:]<container|profile>"
+msgstr ""
+
+#: lxc/storage_volume.go:915
+msgid "list [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/network.go:806
+msgid "list-leases [<remote>:]<network>"
+msgstr ""
+
+#: lxc/alias.go:57
 msgid ""
-"Usage: lxc launch [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
-"profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
-"<node>]\n"
-"\n"
-"Create and start containers from images.\n"
-"\n"
-"Not specifying -p will result in the default profile.\n"
-"Specifying \"-p\" with no argument will result in no profile.\n"
-"\n"
-"Examples:\n"
-"    lxc launch ubuntu:16.04 u1"
+"lxc alias add list list -c ns46S\n"
+"    Overwrite the \"list\" command to pass -c ns46S."
 msgstr ""
 
-#: lxc/list.go:44
+#: lxc/alias.go:200
 msgid ""
-"Usage: lxc list [<remote>:] [filters] [--format csv|json|table|yaml] [-c "
-"<columns>] [--fast]\n"
-"\n"
-"List the existing containers.\n"
-"\n"
-"Default column layout: ns46tS\n"
-"Fast column layout: nsacPt\n"
-"\n"
-"*Filters*\n"
-"A single keyword like \"web\" which will list any container with a name "
-"starting by \"web\".\n"
-"\n"
-"A regular expression on the container name. (e.g. .*web.*01$).\n"
-"\n"
-"A key/value pair referring to a configuration item. For those, the namespace "
-"can be abbreviated to the smallest unambiguous identifier.\n"
-"\t- \"user.blah=abc\" will list all containers with the \"blah\" user "
-"property set to \"abc\".\n"
-"\n"
-"\t- \"u.blah=abc\" will do the same\n"
-"\n"
-"\t- \"security.privileged=true\" will list all privileged containers\n"
-"\n"
-"\t- \"s.privileged=true\" will do the same\n"
-"\n"
-"A regular expression matching a configuration item or its value. (e.g. "
-"volatile.eth0.hwaddr=00:16:3e:.*).\n"
-"\n"
-"*Columns*\n"
-"The -c option takes a comma separated list of arguments that control\n"
-"which container attributes to output when displaying in table or csv\n"
-"format.\n"
-"\n"
-"Column arguments are either pre-defined shorthand chars (see below),\n"
-"or (extended) config keys.\n"
-"\n"
-"Commas between consecutive shorthand chars are optional.\n"
-"\n"
-"Pre-defined column shorthand chars:\n"
-"\n"
-"\t4 - IPv4 address\n"
-"\n"
-"\t6 - IPv6 address\n"
-"\n"
-"\ta - Architecture\n"
-"\n"
-"\tb - Storage pool\n"
-"\n"
-"\tc - Creation date\n"
-"\n"
-"\td - Description\n"
-"\n"
-"\tl - Last used date\n"
-"\n"
-"\tn - Name\n"
-"\n"
-"\tN - Number of Processes\n"
-"\n"
-"\tp - PID of the container's init process\n"
-"\n"
-"\tP - Profiles\n"
-"\n"
-"\ts - State\n"
-"\n"
-"\tS - Number of snapshots\n"
-"\n"
-"\tt - Type (persistent or ephemeral)\n"
-"\n"
-"\tL - Location of the container (e.g. its node)\n"
-"\n"
-"Custom columns are defined with \"key[:name][:maxWidth]\":\n"
-"\n"
-"\tKEY: The (extended) config key to display\n"
-"\n"
-"\tNAME: Name to display in the column header.\n"
-"\tDefaults to the key if not specified or empty.\n"
-"\n"
-"\tMAXWIDTH: Max width of the column (longer results are truncated).\n"
-"\tDefaults to -1 (unlimited). Use 0 to limit to the column header size.\n"
-"\n"
-"*Examples*\n"
-"lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:"
-"MAC\n"
-"\tShows a list of containers using the \"NAME\", \"BASE IMAGE\", \"STATE\", "
-"\"IPV4\",\n"
-"\t\"IPV6\" and \"MAC\" columns.\n"
+"lxc alias remove my-list\n"
+"    Remove the \"my-list\" alias."
+msgstr ""
+
+#: lxc/alias.go:149
+msgid ""
+"lxc alias rename list my-list\n"
+"    Rename existing alias \"list\" to \"my-list\"."
+msgstr ""
+
+#: lxc/config_device.go:78
+msgid ""
+"lxc config device add [<remote>:]container1 <device-name> disk source=/share/"
+"c1 path=opt\n"
+"    Will mount the host's /share/c1 onto /opt in the container."
+msgstr ""
+
+#: lxc/config.go:90
+msgid ""
+"lxc config edit <container> < container.yaml\n"
+"    Update the container configuration from config.yaml."
+msgstr ""
+
+#: lxc/config.go:357
+msgid ""
+"lxc config set [<remote>:]<container> limits.cpu 2\n"
+"    Will set a CPU limit of \"2\" for the container.\n"
 "\n"
-"\t\"BASE IMAGE\" and \"MAC\" are custom columns generated from container "
-"configuration keys.\n"
+"lxc config set core.https_address [::]:8443\n"
+"    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
 "\n"
-"lxc list -c ns,user.comment:comment\n"
-"\tList images with their running state and user comment. "
+"lxc config set core.trust_password blah\n"
+"    Will set the server's trust password to blah."
 msgstr ""
 
-#: lxc/manpage.go:20
+#: lxc/file.go:187
 msgid ""
-"Usage: lxc manpage <directory>\n"
-"\n"
-"Generate all the LXD manpages."
+"lxc file pull foo/etc/hosts .\n"
+"   To pull /etc/hosts from the container and write it to the current "
+"directory."
 msgstr ""
 
-#: lxc/monitor.go:49
+#: lxc/file.go:326
 msgid ""
-"Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
-"\n"
-"Monitor a local or remote LXD server.\n"
+"lxc file push /etc/hosts foo/etc/hosts\n"
+"   To push /etc/hosts into the container \"foo\"."
+msgstr ""
+
+#: lxc/image.go:314
+msgid ""
+"lxc image edit <image>\n"
+"    Launch a text editor to edit the properties\n"
 "\n"
-"By default the monitor will listen to all message types.\n"
+"lxc image edit <image> < image.yaml\n"
+"    Load the image properties from a YAML file"
+msgstr ""
+
+#: lxc/info.go:31
+msgid ""
+"lxc info [<remote>:]<container> [--show-log]\n"
+"    For container information.\n"
 "\n"
-"Message types to listen for can be specified with --type.\n"
+"lxc info [<remote>:] [--resources]\n"
+"    For LXD server information."
+msgstr ""
+
+#: lxc/init.go:37
+msgid "lxc init ubuntu:16.04 u1"
+msgstr ""
+
+#: lxc/launch.go:24
+msgid "lxc launch ubuntu:16.04 u1"
+msgstr ""
+
+#: lxc/list.go:103
+msgid ""
+"lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:"
+"MAC\n"
+"  Show containers using the \"NAME\", \"BASE IMAGE\", \"STATE\", \"IPV4\", "
+"\"IPV6\" and \"MAC\" columns.\n"
+"  \"BASE IMAGE\" and \"MAC\" are custom columns generated from container "
+"configuration keys.\n"
 "\n"
-"*Examples*\n"
+"lxc list -c ns,user.comment:comment\n"
+"  List images with their running state and user comment."
+msgstr ""
+
+#: lxc/monitor.go:35
+msgid ""
 "lxc monitor --type=logging\n"
 "    Only show log messages.\n"
 "\n"
 "lxc monitor --pretty --type=logging --loglevel=info\n"
 "    Show a pretty log of messages with info level or higher.\n"
+"\n"
+"lxc monitor --type=lifecycle\n"
+"    Only show lifecycle events."
 msgstr ""
 
-#: lxc/move.go:26
+#: lxc/move.go:33
 msgid ""
-"Usage: lxc move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
-"<snapshot>]] [--container-only] [--target <node>]\n"
-"\n"
-"Move containers within or in between LXD instances.\n"
-"\n"
 "lxc move [<remote>:]<source container> [<remote>:][<destination container>] "
 "[--container-only]\n"
 "    Move a container between two hosts, renaming it if destination name "
@@ -2006,160 +2904,14 @@ msgid ""
 "    Rename a snapshot."
 msgstr ""
 
-#: lxc/network.go:52
-msgid ""
-"Usage: lxc network <subcommand> [options]\n"
-"\n"
-"Manage and attach containers to networks.\n"
-"\n"
-"lxc network list [<remote>:]\n"
-"    List available networks.\n"
-"\n"
-"lxc network list-leases [<remote>:]<network>\n"
-"    List the DHCP leases for the network\n"
-"\n"
-"lxc network show [<remote>:]<network> [--target <node>]\n"
-"    Show details of a network.\n"
-"\n"
-"lxc network create [<remote>:]<network> [key=value...] [--target <node>]\n"
-"    Create a network.\n"
-"\n"
-"lxc network get [<remote>:]<network> <key> [--target <node>]\n"
-"    Get network configuration.\n"
-"\n"
-"lxc network set [<remote>:]<network> <key> <value>\n"
-"    Set network configuration.\n"
-"\n"
-"lxc network unset [<remote>:]<network> <key>\n"
-"    Unset network configuration.\n"
-"\n"
-"lxc network delete [<remote>:]<network>\n"
-"    Delete a network.\n"
-"\n"
-"lxc network edit [<remote>:]<network>\n"
-"    Edit network, either by launching external editor or reading STDIN.\n"
-"\n"
-"lxc network rename [<remote>:]<network> <new-name>\n"
-"    Rename a network.\n"
-"\n"
-"lxc network attach [<remote>:]<network> <container> [device name] [interface "
-"name]\n"
-"    Attach a network interface connecting the network to a specified "
-"container.\n"
-"\n"
-"lxc network attach-profile [<remote>:]<network> <profile> [device name] "
-"[interface name]\n"
-"    Attach a network interface connecting the network to a specified "
-"profile.\n"
-"\n"
-"lxc network detach [<remote>:]<network> <container> [device name]\n"
-"    Remove a network interface connecting the network to a specified "
-"container.\n"
-"\n"
-"lxc network detach-profile [<remote>:]<network> <container> [device name]\n"
-"    Remove a network interface connecting the network to a specified "
-"profile.\n"
-"\n"
-"*Examples*\n"
-"cat network.yaml | lxc network edit <network>\n"
-"    Update a network using the content of network.yaml"
-msgstr ""
-
-#: lxc/operation.go:25
+#: lxc/operation.go:176
 msgid ""
-"Usage: lxc operation <subcommand> [options]\n"
-"\n"
-"List, show and delete background operations.\n"
-"\n"
-"lxc operation list [<remote>:]\n"
-"    List background operations.\n"
-"\n"
-"lxc operation show [<remote>:]<operation>\n"
-"    Show details on a background operation.\n"
-"\n"
-"lxc operation delete [<remote>:]<operation>\n"
-"    Delete a background operation (will attempt to cancel).\n"
-"\n"
-"*Examples*\n"
 "lxc operation show 344a79e4-d88a-45bf-9c39-c72c26f6ab8a\n"
 "    Show details on that operation UUID"
 msgstr ""
 
-#: lxc/profile.go:51
+#: lxc/profile.go:165
 msgid ""
-"Usage: lxc profile <subcommand> [options]\n"
-"\n"
-"Manage container configuration profiles.\n"
-"\n"
-"*Profile configuration*\n"
-"lxc profile list [<remote>:]\n"
-"    List available profiles.\n"
-"\n"
-"lxc profile show [<remote>:]<profile>\n"
-"    Show details of a profile.\n"
-"\n"
-"lxc profile create [<remote>:]<profile>\n"
-"    Create a profile.\n"
-"\n"
-"lxc profile copy [<remote>:]<profile> [<remote>:]<profile>\n"
-"    Copy the profile.\n"
-"\n"
-"lxc profile get [<remote>:]<profile> <key>\n"
-"    Get profile configuration.\n"
-"\n"
-"lxc profile set [<remote>:]<profile> <key> <value>\n"
-"    Set profile configuration.\n"
-"\n"
-"lxc profile unset [<remote>:]<profile> <key>\n"
-"    Unset profile configuration.\n"
-"\n"
-"lxc profile delete [<remote>:]<profile>\n"
-"    Delete a profile.\n"
-"\n"
-"lxc profile edit [<remote>:]<profile>\n"
-"    Edit profile, either by launching external editor or reading STDIN.\n"
-"\n"
-"lxc profile rename [<remote>:]<profile> <new-name>\n"
-"    Rename a profile.\n"
-"\n"
-"*Profile assignment*\n"
-"lxc profile assign [<remote>:]<container> <profiles>\n"
-"    Replace the current set of profiles for the container by the one "
-"provided.\n"
-"\n"
-"lxc profile add [<remote>:]<container> <profile>\n"
-"    Add a profile to a container\n"
-"\n"
-"lxc profile remove [<remote>:]<container> <profile>\n"
-"    Remove the profile from a container\n"
-"\n"
-"*Device management*\n"
-"lxc profile device list [<remote>:]<profile>\n"
-"    List devices in the given profile.\n"
-"\n"
-"lxc profile device show [<remote>:]<profile>\n"
-"    Show full device details in the given profile.\n"
-"\n"
-"lxc profile device remove [<remote>:]<profile> <name>\n"
-"    Remove a device from a profile.\n"
-"\n"
-"lxc profile device get [<remote>:]<profile> <name> <key>\n"
-"    Get a device property.\n"
-"\n"
-"lxc profile device set [<remote>:]<profile> <name> <key> <value>\n"
-"    Set a device property.\n"
-"\n"
-"lxc profile device unset [<remote>:]<profile> <name> <key>\n"
-"    Unset a device property.\n"
-"\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.\n"
-"\n"
-"*Examples*\n"
-"cat profile.yaml | lxc profile edit <profile>\n"
-"    Update a profile using the content of profile.yaml\n"
-"\n"
 "lxc profile assign foo default,bar\n"
 "    Set the profiles for \"foo\" to \"default\" and \"bar\".\n"
 "\n"
@@ -2170,72 +2922,26 @@ msgid ""
 "    Remove all profile from \"foo\""
 msgstr ""
 
-#: lxc/publish.go:28
+#: lxc/profile.go:398
 msgid ""
-"Usage: lxc publish [<remote>:]<container>[/<snapshot>] [<remote>:] [--"
-"alias=ALIAS...] [prop-key=prop-value...]\n"
-"\n"
-"Publish containers as images."
+"lxc profile edit <profile> < profile.yaml\n"
+"    Update a profile using the content of profile.yaml"
 msgstr ""
 
-#: lxc/query.go:25
+#: lxc/query.go:29
 msgid ""
-"Usage: lxc query [-X <action>] [-d <data>] [--wait] [--raw] [<remote>:]<API "
-"path>\n"
-"\n"
-"Send a raw query to LXD.\n"
-"\n"
-"*Examples*\n"
 "lxc query -X DELETE --wait /1.0/containers/c1\n"
 "    Delete local container \"c1\"."
 msgstr ""
 
-#: lxc/remote.go:40
-msgid ""
-"Usage: lxc remote <subcommand> [options]\n"
-"\n"
-"Manage the list of remote LXD servers.\n"
-"\n"
-"lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--"
-"password=PASSWORD] [--public] [--protocol=PROTOCOL] [--auth-type=AUTH_TYPE]\n"
-"    Add the remote <remote> at <url>.\n"
-"\n"
-"lxc remote remove <remote>\n"
-"    Remove the remote <remote>.\n"
-"\n"
-"lxc remote list\n"
-"    List all remotes.\n"
-"\n"
-"lxc remote rename <old name> <new name>\n"
-"    Rename remote <old name> to <new name>.\n"
-"\n"
-"lxc remote set-url <remote> <url>\n"
-"    Update <remote>'s url to <url>.\n"
-"\n"
-"lxc remote set-default <remote>\n"
-"    Set the default remote.\n"
-"\n"
-"lxc remote get-default\n"
-"    Print the default remote."
-msgstr ""
-
-#: lxc/rename.go:18
+#: lxc/snapshot.go:26
 msgid ""
-"Usage: lxc rename [<remote>:]<container>[/<snapshot>] [<container>[/"
-"<snapshot>]]\n"
-"\n"
-"Rename a container or snapshot."
+"lxc snapshot u1 snap0\n"
+"    Create a snapshot of \"u1\" called \"snap0\"."
 msgstr ""
 
-#: lxc/restore.go:22
+#: lxc/restore.go:28
 msgid ""
-"Usage: lxc restore [<remote>:]<container> <snapshot> [--stateful]\n"
-"\n"
-"Restore containers from snapshots.\n"
-"\n"
-"If --stateful is passed, then the running state will be restored too.\n"
-"\n"
-"*Examples*\n"
 "lxc snapshot u1 snap0\n"
 "    Create the snapshot.\n"
 "\n"
@@ -2243,121 +2949,20 @@ msgid ""
 "    Restore the snapshot."
 msgstr ""
 
-#: lxc/snapshot.go:19
+#: lxc/storage.go:210
 msgid ""
-"Usage: lxc snapshot [<remote>:]<container> <snapshot name> [--stateful]\n"
-"\n"
-"Create container snapshots.\n"
-"\n"
-"When --stateful is used, LXD attempts to checkpoint the container's\n"
-"running state, including process memory state, TCP connections, ...\n"
-"\n"
-"*Examples*\n"
-"lxc snapshot u1 snap0\n"
-"    Create a snapshot of \"u1\" called \"snap0\"."
+"lxc storage edit [<remote>:]<pool> < pool.yaml\n"
+"    Update a storage pool using the content of pool.yaml."
 msgstr ""
 
-#: lxc/storage.go:67
+#: lxc/storage_volume.go:726
+msgid ""
+"lxc storage volume edit [<remote>:]<pool> <volume> < volume.yaml\n"
+"    Update a storage volume using the content of pool.yaml."
+msgstr ""
+
+#: lxc/storage_volume.go:1168
 msgid ""
-"Usage: lxc storage <subcommand> [options]\n"
-"\n"
-"Manage storage pools and volumes.\n"
-"\n"
-"*Storage pools*\n"
-"lxc storage list [<remote>:]\n"
-"    List available storage pools.\n"
-"\n"
-"lxc storage show [<remote>:]<pool> [--resources] [--target <node>]\n"
-"    Show details of a storage pool.\n"
-"\n"
-"lxc storage info [<remote>:]<pool> [--bytes]\n"
-"    Show information of a storage pool in yaml format.\n"
-"\n"
-"lxc storage create [<remote>:]<pool> <driver> [key=value]... [--target "
-"<node>]\n"
-"    Create a storage pool.\n"
-"\n"
-"lxc storage get [<remote>:]<pool> <key>\n"
-"    Get storage pool configuration.\n"
-"\n"
-"lxc storage set [<remote>:]<pool> <key> <value>\n"
-"    Set storage pool configuration.\n"
-"\n"
-"lxc storage unset [<remote>:]<pool> <key>\n"
-"    Unset storage pool configuration.\n"
-"\n"
-"lxc storage delete [<remote>:]<pool>\n"
-"    Delete a storage pool.\n"
-"\n"
-"lxc storage edit [<remote>:]<pool>\n"
-"    Edit storage pool, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"*Storage volumes*\n"
-"lxc storage volume list [<remote>:]<pool>\n"
-"    List available storage volumes on a storage pool.\n"
-"\n"
-"lxc storage volume show [<remote>:]<pool> <volume> [--target <node>]\n"
-"   Show details of a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume create [<remote>:]<pool> <volume> [key=value]... [--"
-"target <node>]\n"
-"    Create a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume rename [<remote>:]<pool> <old name> <new name> [--target "
-"<node>]\n"
-"    Rename a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume get [<remote>:]<pool> <volume> <key> [--target <node>]\n"
-"    Get storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume set [<remote>:]<pool> <volume> <key> <value> [--target "
-"<node>]\n"
-"    Set storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume unset [<remote>:]<pool> <volume> <key> [--target <node>]\n"
-"    Unset storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume delete [<remote>:]<pool> <volume> [--target <node>]\n"
-"    Delete a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume edit [<remote>:]<pool> <volume> [--target <node>]\n"
-"    Edit storage volume, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"lxc storage volume attach [<remote>:]<pool> <volume> <container> [device "
-"name] <path>\n"
-"    Attach a storage volume to the specified container.\n"
-"\n"
-"lxc storage volume attach-profile [<remote:>]<pool> <volume> <profile> "
-"[device name] <path>\n"
-"    Attach a storage volume to the specified profile.\n"
-"\n"
-"lxc storage volume detach [<remote>:]<pool> <volume> <container> [device "
-"name]\n"
-"    Detach a storage volume from the specified container.\n"
-"\n"
-"lxc storage volume detach-profile [<remote:>]<pool> <volume> <profile> "
-"[device name]\n"
-"\tDetach a storage volume from the specified profile.\n"
-"\n"
-"lxc storage volume copy <pool>/<volume> <pool>/<volume> [--config|-c "
-"<key=value>...]\n"
-"    Copy an existing volume to a new volume at the specified pool.\n"
-"\n"
-"lxc storage volume move [<pool>/]<volume> [<pool>/]<volume>\n"
-"    Move an existing volume to the specified pool.\n"
-"\n"
-"Unless specified through a prefix, all volume operations affect \"custom"
-"\" (user created) volumes.\n"
-"\n"
-"*Examples*\n"
-"cat pool.yaml | lxc storage edit [<remote>:]<pool>\n"
-"    Update a storage pool using the content of pool.yaml.\n"
-"\n"
-"cat pool.yaml | lxc storage volume edit [<remote>:]<pool> <volume>\n"
-"    Update a storage volume using the content of pool.yaml.\n"
-"\n"
 "lxc storage volume show default data\n"
 "    Will show the properties of a custom volume called \"data\" in the "
 "\"default\" pool.\n"
@@ -2367,191 +2972,310 @@ msgid ""
 "\" in the \"default\" pool."
 msgstr ""
 
-#: lxc/version.go:18
+#: lxc/config_metadata.go:27
+msgid "metadata"
+msgstr ""
+
+#: lxc/monitor.go:29
+msgid "monitor [<remote>:]"
+msgstr ""
+
+#: lxc/storage_volume.go:991
+msgid "move [<pool>/]<volume> [<pool>/]<volume>"
+msgstr ""
+
+#: lxc/move.go:28
 msgid ""
-"Usage: lxc version\n"
-"\n"
-"Print the version number of this client tool."
+"move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
+"<snapshot>]]"
 msgstr ""
 
-#: lxc/delete.go:46
-msgid "User aborted delete operation."
+#: lxc/storage.go:429
+msgid "name"
 msgstr ""
 
-#: lxc/utils/cancel.go:40
+#: lxc/network.go:30
+msgid "network"
+msgstr ""
+
+#: lxc/image.go:809 lxc/image.go:814 lxc/image.go:977
+msgid "no"
+msgstr ""
+
+#: lxc/remote.go:253
+msgid "ok (y/n)?"
+msgstr ""
+
+#: lxc/operation.go:23
+msgid "operation"
+msgstr ""
+
+#: lxc/config_device.go:316
+msgid "override [<remote>:]<container> <device> [key=value...]"
+msgstr ""
+
+#: lxc/action.go:47
+msgid "pause [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/config.go:52
+msgid "please use `lxc profile`"
+msgstr ""
+
+#: lxc/profile.go:28
+msgid "profile"
+msgstr ""
+
+#: lxc/publish.go:32
 msgid ""
-"User signaled us three times, exiting. The remote operation will keep "
-"running."
+"publish [<remote>:]<container>[/<snapshot>] [<remote>:] [flags] [prop-"
+"key=prop-value...]"
 msgstr ""
 
-#: lxc/query.go:36
-msgid "Wait for the operation to complete"
+#: lxc/file.go:183
+msgid ""
+"pull [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...] "
+"<target path>"
 msgstr ""
 
-#: lxc/restore.go:38
+#: lxc/file.go:322
 msgid ""
-"Whether or not to restore the container's running state from snapshot (if "
-"available)"
+"push <source path> [<remote>:]<container>/<path> [[<remote>:]<container>/"
+"<path>...]"
 msgstr ""
 
-#: lxc/snapshot.go:33
-msgid "Whether or not to snapshot the container's running state"
+#: lxc/query.go:25
+msgid "query [<remote>:]<API path>"
 msgstr ""
 
-#: lxc/network.go:560 lxc/operation.go:141 lxc/remote.go:382 lxc/remote.go:387
-msgid "YES"
+#: lxc/image.go:1210
+msgid "refresh [<remote>:]<image> [[<remote>:]<image>...]"
 msgstr ""
 
-#: lxc/exec.go:132
-msgid "You can't pass -t and -T at the same time"
+#: lxc/remote.go:32
+msgid "remote"
 msgstr ""
 
-#: lxc/exec.go:136
-msgid "You can't pass -t or -T at the same time as --mode"
+#: lxc/alias.go:195
+msgid "remove <alias>"
 msgstr ""
 
-#: lxc/copy.go:76
-msgid "You must specify a destination container name when using --target"
+#: lxc/remote.go:546
+msgid "remove <remote>"
 msgstr ""
 
-#: lxc/copy.go:71
-msgid "You must specify a source container name"
+#: lxc/config_trust.go:194
+msgid "remove [<remote>:] <hostname|fingerprint>"
 msgstr ""
 
-#: lxc/copy.go:66 lxc/move.go:71
-msgid "You must use the same source and destination remote when using --target"
+#: lxc/profile.go:630
+msgid "remove [<remote>:]<container> <profile>"
 msgstr ""
 
-#: lxc/main.go:72
-msgid "`lxc config profile` is deprecated, please use `lxc profile`"
+#: lxc/config_device.go:402
+msgid "remove [<remote>:]<container|profile> <name>..."
 msgstr ""
 
-#: lxc/alias.go:56 lxc/alias.go:102
-#, c-format
-msgid "alias %s already exists"
+#: lxc/cluster.go:235
+msgid "remove [<remote>:]<member>"
 msgstr ""
 
-#: lxc/alias.go:68 lxc/alias.go:97
-#, c-format
-msgid "alias %s doesn't exist"
+#: lxc/alias.go:144
+msgid "rename <old alias> <new alias>"
 msgstr ""
 
-#: lxc/remote.go:370
-msgid "can't remove the default remote"
+#: lxc/remote.go:484
+msgid "rename <remote> <new-name>"
 msgstr ""
 
-#: lxc/file.go:296
-msgid "can't supply uid/gid/mode in recursive mode"
+#: lxc/image_alias.go:247
+msgid "rename [<remote>:]<alias> <new-name>"
 msgstr ""
 
-#: lxc/remote.go:399
-msgid "default"
+#: lxc/rename.go:18
+msgid "rename [<remote>:]<container>[/<snapshot>] <container>[/<snapshot>]"
 msgstr ""
 
-#: lxc/storage.go:856
-msgid "description"
+#: lxc/cluster.go:189
+msgid "rename [<remote>:]<member> <new-name>"
 msgstr ""
 
-#: lxc/init.go:315
-msgid "didn't get any affected image, container or snapshot from server"
+#: lxc/network.go:870
+msgid "rename [<remote>:]<network> <new-name>"
 msgstr ""
 
-#: lxc/image.go:594
-msgid "disabled"
+#: lxc/storage_volume.go:1023
+msgid "rename [<remote>:]<pool> <old name> <new name>"
 msgstr ""
 
-#: lxc/storage.go:855
-msgid "driver"
+#: lxc/profile.go:702
+msgid "rename [<remote>:]<profile> <new-name>"
 msgstr ""
 
-#: lxc/image.go:596
-msgid "enabled"
+#: lxc/action.go:67
+msgid "restart [<remote>:]<container> [[<remote>:]<container>...]"
 msgstr ""
 
-#: lxc/action.go:155 lxc/main.go:33 lxc/main.go:191
-#, c-format
-msgid "error: %v"
+#: lxc/restore.go:22
+msgid "restore [<remote>:]<container> <snapshot>"
 msgstr ""
 
-#: lxc/help.go:37 lxc/main.go:133
-#, c-format
-msgid "error: unknown command: %s"
+#: lxc/config_device.go:491
+msgid "set [<remote>:]<container|profile> <device> <key> <value>"
 msgstr ""
 
-#: lxc/storage.go:853
-msgid "info"
+#: lxc/network.go:918
+msgid "set [<remote>:]<network> <key> <value>"
 msgstr ""
 
-#: lxc/storage.go:854
-msgid "name"
+#: lxc/storage.go:571
+msgid "set [<remote>:]<pool> <key> <value>"
 msgstr ""
 
-#: lxc/image.go:210 lxc/image.go:584 lxc/image.go:589
-msgid "no"
+#: lxc/storage_volume.go:1087
+msgid "set [<remote>:]<pool> <volume> <key> <value>"
 msgstr ""
 
-#: lxc/remote.go:204
-msgid "ok (y/n)?"
+#: lxc/profile.go:751
+msgid "set [<remote>:]<profile> <key> <value>"
 msgstr ""
 
-#: lxc/main.go:368 lxc/main.go:372
-#, c-format
-msgid "processing aliases failed %s\n"
+#: lxc/config.go:353
+msgid "set [<remote>:][container] <key> <value>"
 msgstr ""
 
-#: lxc/file.go:588
-msgid "recursive edit doesn't make sense :("
+#: lxc/remote.go:596
+msgid "set-default <remote>"
 msgstr ""
 
-#: lxc/remote.go:436
-#, c-format
-msgid "remote %s already exists"
+#: lxc/remote.go:634
+msgid "set-url <remote> <URL>"
 msgstr ""
 
-#: lxc/remote.go:362 lxc/remote.go:428 lxc/remote.go:463 lxc/remote.go:479
-#, c-format
-msgid "remote %s doesn't exist"
+#: lxc/config_template.go:296
+msgid "show [<remote>:]<container> <template>"
 msgstr ""
 
-#: lxc/remote.go:345
-#, c-format
-msgid "remote %s exists as <%s>"
+#: lxc/config_device.go:580
+msgid "show [<remote>:]<container|profile>"
 msgstr ""
 
-#: lxc/remote.go:366 lxc/remote.go:432 lxc/remote.go:467
-#, c-format
-msgid "remote %s is static and cannot be modified"
+#: lxc/image.go:1283
+msgid "show [<remote>:]<image>"
+msgstr ""
+
+#: lxc/cluster.go:140
+msgid "show [<remote>:]<member>"
+msgstr ""
+
+#: lxc/network.go:987
+msgid "show [<remote>:]<network>"
+msgstr ""
+
+#: lxc/operation.go:172
+msgid "show [<remote>:]<operation>"
+msgstr ""
+
+#: lxc/storage.go:643
+msgid "show [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:1164
+msgid "show [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:810
+msgid "show [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/config.go:450 lxc/config_metadata.go:174
+msgid "show [<remote>:][container]"
+msgstr ""
+
+#: lxc/snapshot.go:19
+msgid "snapshot [<remote>:]<container> <snapshot name>"
 msgstr ""
 
-#: lxc/storage.go:858
+#: lxc/storage.go:433
 msgid "space used"
 msgstr ""
 
-#: lxc/info.go:251
+#: lxc/action.go:28
+msgid "start [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/info.go:255
 msgid "stateful"
 msgstr ""
 
-#: lxc/info.go:253
+#: lxc/info.go:257
 msgid "stateless"
 msgstr ""
 
-#: lxc/info.go:247
+#: lxc/action.go:89
+msgid "stop [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/storage.go:31
+msgid "storage"
+msgstr ""
+
+#: lxc/info.go:251
 #, c-format
 msgid "taken at %s"
 msgstr ""
 
-#: lxc/storage.go:857
+#: lxc/config_template.go:28
+msgid "template"
+msgstr ""
+
+#: lxc/storage.go:432
 msgid "total space"
 msgstr ""
 
-#: lxc/storage.go:852
-msgid "used by"
+#: lxc/config_trust.go:28
+msgid "trust"
+msgstr ""
+
+#: lxc/config_device.go:648
+msgid "unset [<remote>:]<container|profile> <device> <key>"
+msgstr ""
+
+#: lxc/network.go:1049
+msgid "unset [<remote>:]<network> <key>"
+msgstr ""
+
+#: lxc/storage.go:727
+msgid "unset [<remote>:]<pool> <key>"
+msgstr ""
+
+#: lxc/storage_volume.go:1239
+msgid "unset [<remote>:]<pool> <volume> <key>"
+msgstr ""
+
+#: lxc/profile.go:864
+msgid "unset [<remote>:]<profile> <key>"
+msgstr ""
+
+#: lxc/config.go:558
+msgid "unset [<remote>:][container] <key>"
 msgstr ""
 
-#: lxc/main.go:299
-msgid "wrong number of subcommand arguments"
+#: lxc/storage.go:427
+msgid "used by"
 msgstr ""
 
-#: lxc/delete.go:45 lxc/image.go:208 lxc/image.go:586 lxc/image.go:591
+#: lxc/storage_volume.go:32
+#, fuzzy
+msgid "volume"
+msgstr "Columnas"
+
+#: lxc/delete.go:46 lxc/image.go:811 lxc/image.go:816 lxc/image.go:975
 msgid "yes"
 msgstr ""
+
+#~ msgid "Commands:"
+#~ msgstr "Comandos:"
+
+#~ msgid "Connection refused; is LXD running?"
+#~ msgstr "Conexión declinada; está LXD corriendo? "
diff --git a/po/fi.po b/po/fi.po
index 1db7d744c..91877c641 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -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: 2018-02-27 22:14-0500\n"
+"POT-Creation-Date: 2018-03-29 01:45-0400\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
@@ -16,7 +16,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: lxc/storage.go:36
+#: lxc/storage.go:220
 msgid ""
 "### This is a yaml representation of a storage pool.\n"
 "### Any line starting with a '#' will be ignored.\n"
@@ -33,7 +33,7 @@ msgid ""
 "###   zfs.pool_name: default"
 msgstr ""
 
-#: lxc/storage.go:53
+#: lxc/storage_volume.go:737
 msgid ""
 "### This is a yaml representation of a storage volume.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -47,7 +47,7 @@ msgid ""
 "###   size: \"61203283968\""
 msgstr ""
 
-#: lxc/config.go:40
+#: lxc/config.go:100
 msgid ""
 "### This is a yaml representation of the configuration.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -68,7 +68,7 @@ msgid ""
 "### Note that the name is shown but cannot be changed"
 msgstr ""
 
-#: lxc/config.go:61
+#: lxc/config_metadata.go:63
 msgid ""
 "### This is a yaml representation of the container metadata.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -92,7 +92,7 @@ msgid ""
 "###     properties: {}"
 msgstr ""
 
-#: lxc/image.go:63
+#: lxc/image.go:327
 msgid ""
 "### This is a yaml representation of the image properties.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -102,7 +102,7 @@ msgid ""
 "###  description: My custom image"
 msgstr ""
 
-#: lxc/network.go:32
+#: lxc/network.go:546
 msgid ""
 "### This is a yaml representation of the network.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -122,7 +122,7 @@ msgid ""
 "### Note that only the configuration can be changed."
 msgstr ""
 
-#: lxc/profile.go:30
+#: lxc/profile.go:408
 msgid ""
 "### This is a yaml representation of the profile.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -143,12 +143,12 @@ msgid ""
 "### Note that the name is shown but cannot be changed"
 msgstr ""
 
-#: lxc/image.go:187
+#: lxc/image.go:954
 #, c-format
 msgid "%s (%d more)"
 msgstr ""
 
-#: lxc/file.go:205
+#: lxc/file.go:677
 #, c-format
 msgid "%s is not a directory"
 msgstr ""
@@ -158,1782 +158,2673 @@ msgstr ""
 msgid "%v (interrupt two more times to force)"
 msgstr ""
 
-#: lxc/file.go:142
+#: lxc/file.go:614
 #, c-format
 msgid "'%s' isn't a supported file type."
 msgstr ""
 
-#: lxc/profile.go:337
+#: lxc/profile.go:222
 msgid "(none)"
 msgstr ""
 
-#: lxc/alias.go:84 lxc/image.go:231 lxc/image.go:1136
+#: lxc/alias.go:127 lxc/image.go:921 lxc/image_alias.go:228
 msgid "ALIAS"
 msgstr ""
 
-#: lxc/image.go:232
+#: lxc/image.go:922
 msgid "ALIASES"
 msgstr ""
 
-#: lxc/image.go:236
+#: lxc/image.go:926
 msgid "ARCH"
 msgstr ""
 
-#: lxc/list.go:467
+#: lxc/list.go:464
 msgid "ARCHITECTURE"
 msgstr ""
 
-#: lxc/remote.go:412
+#: lxc/remote.go:466
 msgid "AUTH TYPE"
 msgstr ""
 
-#: lxc/remote.go:68
+#: lxc/remote.go:88
 msgid "Accept certificate"
 msgstr ""
 
-#: lxc/query.go:38
+#: lxc/query.go:37
 msgid "Action (defaults to GET)"
 msgstr ""
 
-#: lxc/remote.go:276
+#: lxc/config_device.go:75 lxc/config_device.go:76
+msgid "Add devices to containers or profiles"
+msgstr ""
+
+#: lxc/alias.go:54 lxc/alias.go:55
+msgid "Add new aliases"
+msgstr ""
+
+#: lxc/remote.go:83 lxc/remote.go:84
+msgid "Add new remote servers"
+msgstr ""
+
+#: lxc/config_trust.go:58 lxc/config_trust.go:59
+msgid "Add new trusted clients"
+msgstr ""
+
+#: lxc/profile.go:101 lxc/profile.go:102
+msgid "Add profiles to containers"
+msgstr ""
+
+#: lxc/remote.go:325
 #, c-format
 msgid "Admin password for %s: "
 msgstr ""
 
-#: lxc/image.go:623
+#: lxc/alias.go:78 lxc/alias.go:176
+#, c-format
+msgid "Alias %s already exists"
+msgstr ""
+
+#: lxc/alias.go:170 lxc/alias.go:221
+#, c-format
+msgid "Alias %s doesn't exist"
+msgstr ""
+
+#: lxc/image_alias.go:83 lxc/image_alias.go:130 lxc/image_alias.go:274
+msgid "Alias name missing"
+msgstr ""
+
+#: lxc/image.go:854
 msgid "Aliases:"
 msgstr ""
 
-#: lxc/image.go:601 lxc/info.go:125
+#: lxc/image.go:826 lxc/info.go:129
 #, c-format
 msgid "Architecture: %s"
 msgstr ""
 
-#: lxc/remote.go:259
+#: lxc/profile.go:162 lxc/profile.go:163
+msgid "Assign sets of profiles to containers"
+msgstr ""
+
+#: lxc/network.go:103
+msgid "Attach network interfaces to containers"
+msgstr ""
+
+#: lxc/network.go:176 lxc/network.go:177
+msgid "Attach network interfaces to profiles"
+msgstr ""
+
+#: lxc/network.go:104
+msgid "Attach new network interfaces to containers"
+msgstr ""
+
+#: lxc/storage_volume.go:121 lxc/storage_volume.go:122
+msgid "Attach new storage volumes to containers"
+msgstr ""
+
+#: lxc/storage_volume.go:200 lxc/storage_volume.go:201
+msgid "Attach new storage volumes to profiles"
+msgstr ""
+
+#: lxc/console.go:31
+msgid "Attach to container consoles"
+msgstr ""
+
+#: lxc/console.go:32
+msgid ""
+"Attach to container consoles\n"
+"\n"
+"This command allows you to interact with the boot console of a container\n"
+"as well as retrieve past log entries from it."
+msgstr ""
+
+#: lxc/remote.go:308
 #, c-format
 msgid "Authentication type '%s' not supported by server"
 msgstr ""
 
-#: lxc/image.go:632
+#: lxc/image.go:864
 #, c-format
 msgid "Auto update: %s"
 msgstr ""
 
-#: lxc/image.go:707
+#: lxc/network.go:283
+#, c-format
+msgid "Bad key/value pair: %s"
+msgstr ""
+
+#: lxc/copy.go:110 lxc/init.go:118 lxc/publish.go:175 lxc/storage.go:123
+#: lxc/storage_volume.go:468
+#, c-format
+msgid "Bad key=value pair: %s"
+msgstr ""
+
+#: lxc/image.go:677
 #, c-format
 msgid "Bad property: %s"
 msgstr ""
 
-#: lxc/action.go:133
+#: lxc/action.go:212
 msgid "Both --all and container name given"
 msgstr ""
 
-#: lxc/info.go:218
+#: lxc/info.go:222
 msgid "Bytes received"
 msgstr ""
 
-#: lxc/info.go:219
+#: lxc/info.go:223
 msgid "Bytes sent"
 msgstr ""
 
-#: lxc/operation.go:156
+#: lxc/operation.go:155
 msgid "CANCELABLE"
 msgstr ""
 
-#: lxc/config.go:403
+#: lxc/config_trust.go:175
 msgid "COMMON NAME"
 msgstr ""
 
-#: lxc/info.go:182
+#: lxc/info.go:186
 msgid "CPU usage (in seconds)"
 msgstr ""
 
-#: lxc/info.go:186
+#: lxc/info.go:190
 msgid "CPU usage:"
 msgstr ""
 
-#: lxc/operation.go:157
+#: lxc/operation.go:156
 msgid "CREATED"
 msgstr ""
 
-#: lxc/list.go:468
+#: lxc/list.go:465
 msgid "CREATED AT"
 msgstr ""
 
-#: lxc/image.go:631
+#: lxc/image.go:863
 #, c-format
 msgid "Cached: %s"
 msgstr ""
 
-#: lxc/file.go:501
+#: lxc/image.go:175
+msgid "Can't provide a name for the target image"
+msgstr ""
+
+#: lxc/file.go:261
 msgid "Can't pull a directory without --recursive"
 msgstr ""
 
-#: lxc/config.go:210 lxc/network.go:619
+#: lxc/config.go:400 lxc/network.go:969
 #, c-format
 msgid "Can't read from stdin: %s"
 msgstr ""
 
-#: lxc/rename.go:41
+#: lxc/remote.go:577
+msgid "Can't remove the default remote"
+msgstr ""
+
+#: lxc/list.go:481
+msgid "Can't specify --fast with --columns"
+msgstr ""
+
+#: lxc/rename.go:48
 msgid "Can't specify a different remote for rename."
 msgstr ""
 
-#: lxc/config.go:223
-#, c-format
-msgid "Can't unset key '%s', it's not currently set"
+#: lxc/list.go:493
+msgid "Can't specify column L when not clustered"
 msgstr ""
 
-#: lxc/config.go:265 lxc/config.go:291
-#, c-format
-msgid "Can't unset key '%s', it's not currently set."
+#: lxc/file.go:399
+msgid "Can't supply uid/gid/mode in recursive mode"
 msgstr ""
 
-#: lxc/profile.go:546 lxc/storage.go:696
-msgid "Cannot provide container name to list"
+#: lxc/config.go:413
+#, c-format
+msgid "Can't unset key '%s', it's not currently set"
 msgstr ""
 
-#: lxc/remote.go:203
+#: lxc/remote.go:252
 #, c-format
 msgid "Certificate fingerprint: %s"
 msgstr ""
 
-#: lxc/remote.go:315
+#: lxc/remote.go:364
 msgid "Client certificate stored at server: "
 msgstr ""
 
-#: lxc/image.go:175 lxc/image.go:176 lxc/list.go:134 lxc/list.go:135
+#: lxc/network.go:253 lxc/network.go:663 lxc/network.go:923 lxc/network.go:992
+#: lxc/network.go:1054 lxc/storage.go:92 lxc/storage.go:331 lxc/storage.go:576
+#: lxc/storage.go:649 lxc/storage.go:732 lxc/storage_volume.go:287
+#: lxc/storage_volume.go:429 lxc/storage_volume.go:504
+#: lxc/storage_volume.go:730 lxc/storage_volume.go:856
+#: lxc/storage_volume.go:998 lxc/storage_volume.go:1028
+#: lxc/storage_volume.go:1092 lxc/storage_volume.go:1175
+#: lxc/storage_volume.go:1244
+msgid "Cluster member name"
+msgstr ""
+
+#: lxc/image.go:912 lxc/list.go:112
 msgid "Columns"
 msgstr ""
 
-#: lxc/help.go:53
-msgid "Commands:"
+#: lxc/main.go:44
+msgid "Command line client for LXD"
+msgstr ""
+
+#: lxc/main.go:45
+msgid ""
+"Command line client for LXD\n"
+"\n"
+"All of LXD's features can be driven through the various commands below.\n"
+"For help with any of those, simply call them with --help."
 msgstr ""
 
-#: lxc/copy.go:37 lxc/copy.go:38 lxc/init.go:139 lxc/init.go:140
+#: lxc/copy.go:39 lxc/init.go:42
 msgid "Config key/value to apply to the new container"
 msgstr ""
 
-#: lxc/config.go:821 lxc/config.go:886 lxc/config.go:1396 lxc/image.go:1191
-#: lxc/network.go:445 lxc/profile.go:275 lxc/storage.go:647 lxc/storage.go:1209
+#: lxc/config.go:195 lxc/config.go:259 lxc/config_metadata.go:144
+#: lxc/image.go:405 lxc/network.go:631 lxc/profile.go:490 lxc/storage.go:298
+#: lxc/storage_volume.go:822
 #, c-format
 msgid "Config parsing error: %s"
 msgstr ""
 
-#: lxc/main.go:40
-msgid "Connection refused; is LXD running?"
-msgstr ""
-
-#: lxc/console.go:132
+#: lxc/console.go:141
 msgid "Console log:"
 msgstr ""
 
-#: lxc/publish.go:71
+#: lxc/publish.go:79
 msgid "Container name is mandatory"
 msgstr ""
 
-#: lxc/copy.go:243 lxc/init.go:321
+#: lxc/copy.go:260 lxc/init.go:229
 #, c-format
 msgid "Container name is: %s"
 msgstr ""
 
-#: lxc/publish.go:250
+#: lxc/publish.go:259
 #, c-format
 msgid "Container published with fingerprint: %s"
 msgstr ""
 
-#: lxc/copy.go:45 lxc/move.go:44
+#: lxc/copy.go:44 lxc/move.go:46
 msgid "Copy a stateful container stateless"
 msgstr ""
 
-#: lxc/image.go:178
+#: lxc/image.go:138
 msgid "Copy aliases from source"
 msgstr ""
 
-#: lxc/copy.go:44
+#: lxc/copy.go:34 lxc/copy.go:35
+msgid "Copy containers within or in between LXD instances"
+msgstr ""
+
+#: lxc/image.go:130
+msgid "Copy images between servers"
+msgstr ""
+
+#: lxc/image.go:131
+msgid ""
+"Copy images between servers\n"
+"\n"
+"The auto-update flag instructs the server to keep this image up to date.\n"
+"It requires the source to be an alias and for it to be public."
+msgstr ""
+
+#: lxc/config_device.go:317 lxc/config_device.go:318
+msgid "Copy profile inherited devices and override configuration keys"
+msgstr ""
+
+#: lxc/profile.go:240 lxc/profile.go:241
+msgid "Copy profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:282 lxc/storage_volume.go:283
+msgid "Copy storage volumes"
+msgstr ""
+
+#: lxc/copy.go:43
 msgid "Copy the container without its snapshots"
 msgstr ""
 
-#: lxc/image.go:449
+#: lxc/image.go:217
 #, c-format
 msgid "Copying the image: %s"
 msgstr ""
 
-#: lxc/storage.go:1134
+#: lxc/storage_volume.go:387
 #, c-format
 msgid "Copying the storage volume: %s"
 msgstr ""
 
-#: lxc/remote.go:218
+#: lxc/remote.go:267
 msgid "Could not create server cert dir"
 msgstr ""
 
-#: lxc/file.go:70 lxc/file.go:71
+#: lxc/image_alias.go:58 lxc/image_alias.go:59
+msgid "Create aliases for existing images"
+msgstr ""
+
+#: lxc/launch.go:21 lxc/launch.go:22
+msgid "Create and start containers from images"
+msgstr ""
+
+#: lxc/file.go:191 lxc/file.go:331
 msgid "Create any directories necessary"
 msgstr ""
 
-#: lxc/image.go:606 lxc/info.go:127
+#: lxc/snapshot.go:20
+msgid "Create container snapshots"
+msgstr ""
+
+#: lxc/snapshot.go:21
+msgid ""
+"Create container snapshots\n"
+"\n"
+"When --stateful is used, LXD attempts to checkpoint the container's\n"
+"running state, including process memory state, TCP connections, ..."
+msgstr ""
+
+#: lxc/init.go:34 lxc/init.go:35
+msgid "Create containers from images"
+msgstr ""
+
+#: lxc/config_template.go:66 lxc/config_template.go:67
+msgid "Create new container file templates"
+msgstr ""
+
+#: lxc/storage_volume.go:425 lxc/storage_volume.go:426
+msgid "Create new custom storage volumes"
+msgstr ""
+
+#: lxc/network.go:249 lxc/network.go:250
+msgid "Create new networks"
+msgstr ""
+
+#: lxc/profile.go:296 lxc/profile.go:297
+msgid "Create profiles"
+msgstr ""
+
+#: lxc/storage.go:88 lxc/storage.go:89
+msgid "Create storage pools"
+msgstr ""
+
+#: lxc/image.go:832 lxc/info.go:131
 #, c-format
 msgid "Created: %s"
 msgstr ""
 
-#: lxc/init.go:200
+#: lxc/init.go:98
 #, c-format
 msgid "Creating %s"
 msgstr ""
 
-#: lxc/init.go:198
+#: lxc/init.go:96
 msgid "Creating the container"
 msgstr ""
 
-#: lxc/cluster.go:185
+#: lxc/cluster.go:121
 msgid "DATABASE"
 msgstr ""
 
-#: lxc/image.go:235 lxc/image.go:1138 lxc/list.go:469 lxc/network.go:579
-#: lxc/operation.go:154 lxc/storage.go:732 lxc/storage.go:937
+#: lxc/image.go:925 lxc/image_alias.go:230 lxc/list.go:466 lxc/network.go:784
+#: lxc/operation.go:153 lxc/storage.go:545 lxc/storage_volume.go:967
 msgid "DESCRIPTION"
 msgstr ""
 
-#: lxc/storage.go:733
+#: lxc/storage.go:546
 msgid "DRIVER"
 msgstr ""
 
-#: lxc/publish.go:39
+#: lxc/publish.go:41
 msgid "Define a compression algorithm: for image or none"
 msgstr ""
 
-#: lxc/config.go:977
+#: lxc/operation.go:53 lxc/operation.go:54
+msgid "Delete a background operation (will attempt to cancel)"
+msgstr ""
+
+#: lxc/config_template.go:109 lxc/config_template.go:110
+msgid "Delete container file templates"
+msgstr ""
+
+#: lxc/delete.go:29 lxc/delete.go:30
+msgid "Delete containers and snapshots"
+msgstr ""
+
+#: lxc/file.go:72 lxc/file.go:73
+msgid "Delete files in containers"
+msgstr ""
+
+#: lxc/image_alias.go:105 lxc/image_alias.go:106
+msgid "Delete image aliases"
+msgstr ""
+
+#: lxc/image.go:260 lxc/image.go:261
+msgid "Delete images"
+msgstr ""
+
+#: lxc/network.go:319 lxc/network.go:320
+msgid "Delete networks"
+msgstr ""
+
+#: lxc/profile.go:347 lxc/profile.go:348
+msgid "Delete profiles"
+msgstr ""
+
+#: lxc/storage.go:160 lxc/storage.go:161
+msgid "Delete storage pools"
+msgstr ""
+
+#: lxc/storage_volume.go:500 lxc/storage_volume.go:501
+msgid "Delete storage volumes"
+msgstr ""
+
+#: lxc/action.go:30 lxc/action.go:49 lxc/action.go:69 lxc/action.go:91
+#: lxc/alias.go:23 lxc/alias.go:55 lxc/alias.go:99 lxc/alias.go:147
+#: lxc/alias.go:198 lxc/cluster.go:26 lxc/cluster.go:59 lxc/cluster.go:142
+#: lxc/cluster.go:192 lxc/cluster.go:238 lxc/config.go:29 lxc/config.go:88
+#: lxc/config.go:289 lxc/config.go:355 lxc/config.go:452 lxc/config.go:560
+#: lxc/config_device.go:24 lxc/config_device.go:76 lxc/config_device.go:179
+#: lxc/config_device.go:252 lxc/config_device.go:318 lxc/config_device.go:405
+#: lxc/config_device.go:493 lxc/config_device.go:582 lxc/config_device.go:650
+#: lxc/config_metadata.go:29 lxc/config_metadata.go:54
+#: lxc/config_metadata.go:176 lxc/config_template.go:30
+#: lxc/config_template.go:67 lxc/config_template.go:110
+#: lxc/config_template.go:152 lxc/config_template.go:236
+#: lxc/config_template.go:298 lxc/config_trust.go:30 lxc/config_trust.go:59
+#: lxc/config_trust.go:115 lxc/config_trust.go:197 lxc/console.go:32
+#: lxc/copy.go:35 lxc/delete.go:30 lxc/exec.go:39 lxc/file.go:40 lxc/file.go:73
+#: lxc/file.go:122 lxc/file.go:185 lxc/file.go:324 lxc/image.go:42
+#: lxc/image.go:131 lxc/image.go:261 lxc/image.go:312 lxc/image.go:435
+#: lxc/image.go:571 lxc/image.go:776 lxc/image.go:890 lxc/image.go:1212
+#: lxc/image.go:1285 lxc/image_alias.go:26 lxc/image_alias.go:59
+#: lxc/image_alias.go:106 lxc/image_alias.go:149 lxc/image_alias.go:250
+#: lxc/info.go:29 lxc/init.go:35 lxc/launch.go:22 lxc/list.go:48 lxc/main.go:45
+#: lxc/monitor.go:31 lxc/move.go:31 lxc/network.go:32 lxc/network.go:104
+#: lxc/network.go:177 lxc/network.go:250 lxc/network.go:320 lxc/network.go:367
+#: lxc/network.go:452 lxc/network.go:537 lxc/network.go:660 lxc/network.go:719
+#: lxc/network.go:808 lxc/network.go:873 lxc/network.go:920 lxc/network.go:989
+#: lxc/network.go:1051 lxc/operation.go:25 lxc/operation.go:54
+#: lxc/operation.go:98 lxc/operation.go:174 lxc/profile.go:30
+#: lxc/profile.go:102 lxc/profile.go:163 lxc/profile.go:241 lxc/profile.go:297
+#: lxc/profile.go:348 lxc/profile.go:396 lxc/profile.go:520 lxc/profile.go:568
+#: lxc/profile.go:632 lxc/profile.go:705 lxc/profile.go:753 lxc/profile.go:812
+#: lxc/profile.go:866 lxc/publish.go:34 lxc/query.go:27 lxc/remote.go:34
+#: lxc/remote.go:84 lxc/remote.go:380 lxc/remote.go:414 lxc/remote.go:487
+#: lxc/remote.go:549 lxc/remote.go:598 lxc/remote.go:636 lxc/rename.go:20
+#: lxc/restore.go:24 lxc/snapshot.go:21 lxc/storage.go:33 lxc/storage.go:89
+#: lxc/storage.go:161 lxc/storage.go:208 lxc/storage.go:328 lxc/storage.go:383
+#: lxc/storage.go:491 lxc/storage.go:573 lxc/storage.go:645 lxc/storage.go:729
+#: lxc/storage_volume.go:34 lxc/storage_volume.go:122 lxc/storage_volume.go:201
+#: lxc/storage_volume.go:283 lxc/storage_volume.go:426
+#: lxc/storage_volume.go:501 lxc/storage_volume.go:561
+#: lxc/storage_volume.go:643 lxc/storage_volume.go:724
+#: lxc/storage_volume.go:853 lxc/storage_volume.go:918
+#: lxc/storage_volume.go:994 lxc/storage_volume.go:1025
+#: lxc/storage_volume.go:1089 lxc/storage_volume.go:1166
+#: lxc/storage_volume.go:1241
+msgid "Description"
+msgstr ""
+
+#: lxc/network.go:366 lxc/network.go:367
+msgid "Detach network interfaces from containers"
+msgstr ""
+
+#: lxc/network.go:451 lxc/network.go:452
+msgid "Detach network interfaces from profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:560 lxc/storage_volume.go:561
+msgid "Detach storage volumes from containers"
+msgstr ""
+
+#: lxc/storage_volume.go:642 lxc/storage_volume.go:643
+msgid "Detach storage volumes from profiles"
+msgstr ""
+
+#: lxc/config_device.go:163
 #, c-format
 msgid "Device %s added to %s"
 msgstr ""
 
-#: lxc/config.go:1272
+#: lxc/config_device.go:387
 #, c-format
 msgid "Device %s overridden for %s"
 msgstr ""
 
-#: lxc/config.go:1213
+#: lxc/config_device.go:476
 #, c-format
 msgid "Device %s removed from %s"
 msgstr ""
 
-#: lxc/utils.go:192 lxc/utils.go:216
+#: lxc/utils.go:133 lxc/utils.go:157
 #, c-format
 msgid "Device already exists: %s"
 msgstr ""
 
-#: lxc/image.go:1290
+#: lxc/image.go:586
 msgid "Directory import is not available on this platform"
 msgstr ""
 
-#: lxc/exec.go:71
+#: lxc/exec.go:55
 msgid "Disable pseudo-terminal allocation"
 msgstr ""
 
-#: lxc/exec.go:72
+#: lxc/exec.go:56
 msgid "Disable stdin (reads from /dev/null)"
 msgstr ""
 
-#: lxc/info.go:175
+#: lxc/info.go:179
 msgid "Disk usage:"
 msgstr ""
 
-#: lxc/list.go:638
+#: lxc/list.go:635
 msgid "EPHEMERAL"
 msgstr ""
 
-#: lxc/config.go:405
+#: lxc/config_trust.go:177
 msgid "EXPIRY DATE"
 msgstr ""
 
-#: lxc/main.go:52
-msgid "Enable debug mode"
+#: lxc/config_template.go:151 lxc/config_template.go:152
+msgid "Edit container file templates"
 msgstr ""
 
-#: lxc/main.go:51
-msgid "Enable verbose mode"
+#: lxc/config_metadata.go:53 lxc/config_metadata.go:54
+msgid "Edit container metadata files"
 msgstr ""
 
-#: lxc/exec.go:68
-msgid "Environment variable to set (e.g. HOME=/home/foo)"
+#: lxc/config.go:87 lxc/config.go:88
+msgid "Edit container or server configurations as YAML"
+msgstr ""
+
+#: lxc/file.go:121 lxc/file.go:122
+msgid "Edit files in containers"
+msgstr ""
+
+#: lxc/image.go:311 lxc/image.go:312
+msgid "Edit image properties"
+msgstr ""
+
+#: lxc/network.go:536 lxc/network.go:537
+msgid "Edit network configurations as YAML"
+msgstr ""
+
+#: lxc/profile.go:395 lxc/profile.go:396
+msgid "Edit profile configurations as YAML"
+msgstr ""
+
+#: lxc/storage.go:207 lxc/storage.go:208
+msgid "Edit storage pool configurations as YAML"
+msgstr ""
+
+#: lxc/storage_volume.go:723 lxc/storage_volume.go:724
+msgid "Edit storage volume configurations as YAML"
+msgstr ""
+
+#: lxc/list.go:504
+#, c-format
+msgid "Empty column entry (redundant, leading or trailing command) in '%s'"
 msgstr ""
 
-#: lxc/help.go:77
-msgid "Environment:"
+#: lxc/exec.go:52
+msgid "Environment variable to set (e.g. HOME=/home/foo)"
 msgstr ""
 
-#: lxc/copy.go:41 lxc/copy.go:42 lxc/init.go:143 lxc/init.go:144
+#: lxc/copy.go:41 lxc/init.go:44
 msgid "Ephemeral container"
 msgstr ""
 
-#: lxc/config.go:1446
+#: lxc/config_template.go:204
 #, c-format
 msgid "Error updating template file: %s"
 msgstr ""
 
-#: lxc/monitor.go:69
+#: lxc/monitor.go:48
 msgid "Event type to listen for"
 msgstr ""
 
-#: lxc/image.go:610
+#: lxc/exec.go:38
+msgid "Execute commands in containers"
+msgstr ""
+
+#: lxc/exec.go:39
+msgid ""
+"Execute commands in containers\n"
+"\n"
+"The command is executed directly using exec, so there is no shell and\n"
+"shell patterns (variables, file redirects, ...) won't be understood.\n"
+"If you need a shell environment you need to execute the shell\n"
+"executable, passing the shell commands as arguments, for example:\n"
+"\n"
+"  lxc exec <container> -- sh -c \"cd /tmp && pwd\"\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:838
 #, c-format
 msgid "Expires: %s"
 msgstr ""
 
-#: lxc/image.go:612
+#: lxc/image.go:840
 msgid "Expires: never"
 msgstr ""
 
-#: lxc/image.go:922
+#: lxc/image.go:434
+msgid "Export and download images"
+msgstr ""
+
+#: lxc/image.go:435
+msgid ""
+"Export and download images\n"
+"\n"
+"The output target is optional and defaults to the working directory."
+msgstr ""
+
+#: lxc/image.go:494
 #, c-format
 msgid "Exporting the image: %s"
 msgstr ""
 
-#: lxc/config.go:761
+#: lxc/config_template.go:279
 msgid "FILENAME"
 msgstr ""
 
-#: lxc/config.go:402 lxc/image.go:233 lxc/image.go:1137
+#: lxc/config_trust.go:174 lxc/image.go:923 lxc/image_alias.go:229
 msgid "FINGERPRINT"
 msgstr ""
 
-#: lxc/utils.go:261
+#: lxc/utils.go:202
 #, c-format
 msgid "Failed to create alias %s"
 msgstr ""
 
-#: lxc/manpage.go:62
-#, c-format
-msgid "Failed to generate 'lxc.%s.1': %v"
-msgstr ""
-
-#: lxc/manpage.go:55
-#, c-format
-msgid "Failed to generate 'lxc.1': %v"
-msgstr ""
-
-#: lxc/copy.go:238
+#: lxc/copy.go:255
 msgid "Failed to get the new container name"
 msgstr ""
 
-#: lxc/utils.go:251
+#: lxc/utils.go:192
 #, c-format
 msgid "Failed to remove alias %s"
 msgstr ""
 
-#: lxc/file.go:137
+#: lxc/file.go:609
 #, c-format
 msgid "Failed to walk path for %s: %s"
 msgstr ""
 
-#: lxc/list.go:137
+#: lxc/list.go:114
 msgid "Fast mode (same as --columns=nsacPt)"
 msgstr ""
 
-#: lxc/network.go:536 lxc/operation.go:121
+#: lxc/network.go:749 lxc/operation.go:126
 msgid "Filtering isn't supported yet"
 msgstr ""
 
-#: lxc/image.go:599
+#: lxc/image.go:824
 #, c-format
 msgid "Fingerprint: %s"
 msgstr ""
 
-#: lxc/exec.go:70
+#: lxc/exec.go:54
 msgid "Force pseudo-terminal allocation"
 msgstr ""
 
-#: lxc/cluster.go:42
-msgid "Force removing a node, even if degraded"
+#: lxc/cluster.go:242
+msgid "Force removing a member, even if degraded"
 msgstr ""
 
-#: lxc/action.go:47 lxc/action.go:48
+#: lxc/action.go:121
 msgid "Force the container to shutdown"
 msgstr ""
 
-#: lxc/delete.go:34 lxc/delete.go:35
+#: lxc/delete.go:34
 msgid "Force the removal of running containers"
 msgstr ""
 
-#: lxc/main.go:53
+#: lxc/main.go:56
 msgid "Force using the local unix socket"
 msgstr ""
 
-#: lxc/image.go:181 lxc/list.go:136
+#: lxc/image.go:913 lxc/list.go:113
 msgid "Format (csv|json|table|yaml)"
 msgstr ""
 
-#: lxc/remote.go:166
+#: lxc/remote.go:211
 msgid "Generating a client certificate. This may take a minute..."
 msgstr ""
 
-#: lxc/network.go:513
+#: lxc/config_device.go:178 lxc/config_device.go:179
+msgid "Get values for container device configuration keys"
+msgstr ""
+
+#: lxc/config.go:288 lxc/config.go:289
+msgid "Get values for container or server configuration keys"
+msgstr ""
+
+#: lxc/network.go:659 lxc/network.go:660
+msgid "Get values for network configuration keys"
+msgstr ""
+
+#: lxc/profile.go:519 lxc/profile.go:520
+msgid "Get values for profile configuration keys"
+msgstr ""
+
+#: lxc/storage.go:327 lxc/storage.go:328
+msgid "Get values for storage pool configuration keys"
+msgstr ""
+
+#: lxc/storage_volume.go:852 lxc/storage_volume.go:853
+msgid "Get values for storage volume configuration keys"
+msgstr ""
+
+#: lxc/network.go:851
 msgid "HOSTNAME"
 msgstr ""
 
-#: lxc/operation.go:152
+#: lxc/operation.go:151
 msgid "ID"
 msgstr ""
 
-#: lxc/network.go:515
+#: lxc/network.go:853
 msgid "IP ADDRESS"
 msgstr ""
 
-#: lxc/list.go:465
+#: lxc/list.go:462
 msgid "IPV4"
 msgstr ""
 
-#: lxc/list.go:466
+#: lxc/list.go:463
 msgid "IPV6"
 msgstr ""
 
-#: lxc/config.go:404
+#: lxc/config_trust.go:176
 msgid "ISSUE DATE"
 msgstr ""
 
-#: lxc/main.go:171
+#: lxc/main.go:259
 msgid ""
 "If this is your first time running LXD on this machine, you should also run: "
 "lxd init"
 msgstr ""
 
-#: lxc/main.go:54
-msgid "Ignore aliases when determining what command to run"
-msgstr ""
-
-#: lxc/action.go:51
-msgid "Ignore the container state (only for start)"
+#: lxc/action.go:117
+msgid "Ignore the container state"
 msgstr ""
 
-#: lxc/image.go:557
+#: lxc/image.go:1268
 msgid "Image already up to date."
 msgstr ""
 
-#: lxc/image.go:463
+#: lxc/image.go:231
 msgid "Image copied successfully!"
 msgstr ""
 
-#: lxc/image.go:982
+#: lxc/image.go:554
 msgid "Image exported successfully!"
 msgstr ""
 
-#: lxc/image.go:778
+#: lxc/image.go:284 lxc/image.go:1235
+msgid "Image identifier missing"
+msgstr ""
+
+#: lxc/image.go:352
+#, c-format
+msgid "Image identifier missing: %s"
+msgstr ""
+
+#: lxc/image.go:749
 #, c-format
 msgid "Image imported with fingerprint: %s"
 msgstr ""
 
-#: lxc/image.go:555
+#: lxc/image.go:1266
 msgid "Image refreshed successfully!"
 msgstr ""
 
-#: lxc/query.go:39
+#: lxc/image.go:571
+msgid ""
+"Import image into the image store\n"
+"\n"
+"Directory import is only available on Linux and must be performed as root."
+msgstr ""
+
+#: lxc/image.go:570
+msgid "Import images into the image store"
+msgstr ""
+
+#: lxc/query.go:38
 msgid "Input data"
 msgstr ""
 
-#: lxc/init.go:149
+#: lxc/init.go:47
 msgid "Instance type"
 msgstr ""
 
-#: lxc/remote.go:118
+#: lxc/remote.go:163
 #, c-format
 msgid "Invalid URL scheme \"%s\" in \"%s\""
 msgstr ""
 
-#: lxc/config.go:383
+#: lxc/config_trust.go:155
 msgid "Invalid certificate"
 msgstr ""
 
-#: lxc/init.go:32 lxc/init.go:37
-msgid "Invalid configuration key"
+#: lxc/list.go:525
+#, c-format
+msgid "Invalid config key '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:520
+#, c-format
+msgid "Invalid config key column format (too many fields): '%s'"
+msgstr ""
+
+#: lxc/image.go:1196 lxc/list.go:386
+#, c-format
+msgid "Invalid format %q"
+msgstr ""
+
+#: lxc/list.go:543
+#, c-format
+msgid "Invalid max width (must -1, 0 or a positive integer) '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:540
+#, c-format
+msgid "Invalid max width (must be an integer) '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:531
+#, c-format
+msgid ""
+"Invalid name in '%s', empty string is only allowed when defining maxWidth"
+msgstr ""
+
+#: lxc/main.go:341
+msgid "Invalid number of arguments"
 msgstr ""
 
-#: lxc/file.go:560
+#: lxc/file.go:97
 #, c-format
 msgid "Invalid path %s"
 msgstr ""
 
-#: lxc/remote.go:107
+#: lxc/remote.go:152
 #, c-format
 msgid "Invalid protocol: %s"
 msgstr ""
 
-#: lxc/file.go:473
+#: lxc/file.go:243
 #, c-format
 msgid "Invalid source %s"
 msgstr ""
 
-#: lxc/file.go:250
+#: lxc/file.go:352
 #, c-format
 msgid "Invalid target %s"
 msgstr ""
 
-#: lxc/info.go:156
+#: lxc/info.go:160
 msgid "Ips:"
 msgstr ""
 
-#: lxc/image.go:179
+#: lxc/image.go:139
 msgid "Keep the image up to date after initial copy"
 msgstr ""
 
-#: lxc/list.go:470
+#: lxc/list.go:467
 msgid "LAST USED AT"
 msgstr ""
 
-#: lxc/list.go:492
+#: lxc/list.go:489
 msgid "LOCATION"
 msgstr ""
 
-#: lxc/main.go:38
-msgid "LXD socket not found; is LXD installed and running?"
+#: lxc/cluster.go:94
+msgid "LXD server isn't part of a cluster"
 msgstr ""
 
-#: lxc/image.go:615
+#: lxc/image.go:844
 #, c-format
 msgid "Last used: %s"
 msgstr ""
 
-#: lxc/image.go:617
+#: lxc/image.go:846
 msgid "Last used: never"
 msgstr ""
 
-#: lxc/info.go:119
-#, c-format
-msgid "Location: %s"
-msgstr ""
-
-#: lxc/info.go:271
-msgid "Log:"
-msgstr ""
-
-#: lxc/network.go:514
-msgid "MAC ADDRESS"
-msgstr ""
-
-#: lxc/network.go:578
-msgid "MANAGED"
+#: lxc/network.go:807 lxc/network.go:808
+msgid "List DHCP leases"
 msgstr ""
 
-#: lxc/cluster.go:187
-msgid "MESSAGE"
+#: lxc/alias.go:98 lxc/alias.go:99
+msgid "List aliases"
 msgstr ""
 
-#: lxc/image.go:177
-msgid "Make image public"
+#: lxc/cluster.go:58 lxc/cluster.go:59
+msgid "List all the cluster members"
 msgstr ""
 
-#: lxc/publish.go:35
-msgid "Make the image public"
+#: lxc/network.go:718 lxc/network.go:719
+msgid "List available networks"
 msgstr ""
 
-#: lxc/info.go:193
-msgid "Memory (current)"
+#: lxc/storage.go:490 lxc/storage.go:491
+msgid "List available storage pools"
 msgstr ""
 
-#: lxc/info.go:197
-msgid "Memory (peak)"
+#: lxc/operation.go:97 lxc/operation.go:98
+msgid "List background operations"
 msgstr ""
 
-#: lxc/info.go:209
-msgid "Memory usage:"
+#: lxc/config_device.go:251 lxc/config_device.go:252
+msgid "List container devices"
 msgstr ""
 
-#: lxc/monitor.go:70
-msgid "Minimum level for log messages"
+#: lxc/config_template.go:235 lxc/config_template.go:236
+msgid "List container file templates"
 msgstr ""
 
-#: lxc/utils.go:143
-msgid "Missing summary."
+#: lxc/list.go:47
+msgid "List containers"
 msgstr ""
 
-#: lxc/network.go:303 lxc/network.go:356 lxc/storage.go:435 lxc/storage.go:565
-msgid "More than one device matches, specify the device name."
-msgstr ""
+#: lxc/list.go:48
+msgid ""
+"List containers\n"
+"\n"
+"Default column layout: ns46tS\n"
+"Fast column layout: nsacPt\n"
+"\n"
+"== Filters ==\n"
+"A single keyword like \"web\" which will list any container with a name "
+"starting by \"web\".\n"
+"A regular expression on the container name. (e.g. .*web.*01$).\n"
+"A key/value pair referring to a configuration item. For those, the\n"
+"namespace can be abbreviated to the smallest unambiguous identifier.\n"
+"\n"
+"Examples:\n"
+"  - \"user.blah=abc\" will list all containers with the \"blah\" user "
+"property set to \"abc\".\n"
+"  - \"u.blah=abc\" will do the same\n"
+"  - \"security.privileged=true\" will list all privileged containers\n"
+"  - \"s.privileged=true\" will do the same\n"
+"\n"
+"A regular expression matching a configuration item or its value. (e.g. "
+"volatile.eth0.hwaddr=00:16:3e:.*).\n"
+"\n"
+"== Columns ==\n"
+"The -c option takes a comma separated list of arguments that control\n"
+"which container attributes to output when displaying in table or csv\n"
+"format.\n"
+"\n"
+"Column arguments are either pre-defined shorthand chars (see below),\n"
+"or (extended) config keys.\n"
+"\n"
+"Commas between consecutive shorthand chars are optional.\n"
+"\n"
+"Pre-defined column shorthand chars:\n"
+"  4 - IPv4 address\n"
+"  6 - IPv6 address\n"
+"  a - Architecture\n"
+"  b - Storage pool\n"
+"  c - Creation date\n"
+"  d - Description\n"
+"  l - Last used date\n"
+"  n - Name\n"
+"  N - Number of Processes\n"
+"  p - PID of the container's init process\n"
+"  P - Profiles\n"
+"  s - State\n"
+"  S - Number of snapshots\n"
+"  t - Type (persistent or ephemeral)\n"
+"  L - Location of the container (e.g. its node)\n"
+"\n"
+"Custom columns are defined with \"key[:name][:maxWidth]\":\n"
+"  KEY: The (extended) config key to display\n"
+"  NAME: Name to display in the column header.\n"
+"  Defaults to the key if not specified or empty.\n"
+"\n"
+"  MAXWIDTH: Max width of the column (longer results are truncated).\n"
+"  Defaults to -1 (unlimited). Use 0 to limit to the column header size."
+msgstr ""
+
+#: lxc/image_alias.go:148
+msgid "List image aliases"
+msgstr ""
+
+#: lxc/image_alias.go:149
+msgid ""
+"List image aliases\n"
+"\n"
+"Filters may be part of the image hash or part of the image alias name.\n"
+msgstr ""
+
+#: lxc/image.go:889
+msgid "List images"
+msgstr ""
+
+#: lxc/image.go:890
+msgid ""
+"List images\n"
+"\n"
+"Filters may be of the <key>=<value> form for property based filtering,\n"
+"or part of the image hash or part of the image alias name.\n"
+"\n"
+"The -c option takes a (optionally comma-separated) list of arguments\n"
+"that control which image attributes to output when displaying in table\n"
+"or csv format.\n"
+"\n"
+"Default column layout is: lfpdasu\n"
+"\n"
+"Column shorthand chars:\n"
+"\n"
+"    l - Shortest image alias (and optionally number of other aliases)\n"
+"    L - Newline-separated list of all image aliases\n"
+"    f - Fingerprint\n"
+"    p - Whether image is public\n"
+"    d - Description\n"
+"    a - Architecture\n"
+"    s - Size"
+msgstr ""
+
+#: lxc/profile.go:567 lxc/profile.go:568
+msgid "List profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:917 lxc/storage_volume.go:918
+msgid "List storage volumes"
+msgstr ""
+
+#: lxc/remote.go:413 lxc/remote.go:414
+msgid "List the available remotes"
+msgstr ""
+
+#: lxc/config_trust.go:114 lxc/config_trust.go:115
+msgid "List trusted clients"
+msgstr ""
+
+#: lxc/operation.go:24 lxc/operation.go:25
+msgid "List, show and delete background operations"
+msgstr ""
+
+#: lxc/info.go:123
+#, c-format
+msgid "Location: %s"
+msgstr ""
+
+#: lxc/info.go:275
+msgid "Log:"
+msgstr ""
+
+#: lxc/network.go:852
+msgid "MAC ADDRESS"
+msgstr ""
+
+#: lxc/network.go:783
+msgid "MANAGED"
+msgstr ""
+
+#: lxc/cluster.go:123
+msgid "MESSAGE"
+msgstr ""
+
+#: lxc/image.go:137 lxc/image.go:576
+msgid "Make image public"
+msgstr ""
+
+#: lxc/publish.go:38
+msgid "Make the image public"
+msgstr ""
+
+#: lxc/network.go:32
+msgid "Manage an attach containers to networks"
+msgstr ""
+
+#: lxc/network.go:31
+msgid "Manage and attach containers to networks"
+msgstr ""
+
+#: lxc/cluster.go:25 lxc/cluster.go:26
+msgid "Manage cluster members"
+msgstr ""
+
+#: lxc/alias.go:22 lxc/alias.go:23
+msgid "Manage command aliases"
+msgstr ""
+
+#: lxc/config.go:28 lxc/config.go:29
+msgid "Manage container and server configuration options"
+msgstr ""
+
+#: lxc/config_device.go:23 lxc/config_device.go:24
+msgid "Manage container devices"
+msgstr ""
+
+#: lxc/config_template.go:29 lxc/config_template.go:30
+msgid "Manage container file templates"
+msgstr ""
+
+#: lxc/config_metadata.go:28 lxc/config_metadata.go:29
+msgid "Manage container metadata files"
+msgstr ""
+
+#: lxc/file.go:39 lxc/file.go:40
+msgid "Manage files in containers"
+msgstr ""
+
+#: lxc/image_alias.go:25 lxc/image_alias.go:26
+msgid "Manage image aliases"
+msgstr ""
+
+#: lxc/image.go:41
+msgid "Manage images"
+msgstr ""
+
+#: lxc/image.go:42
+msgid ""
+"Manage images\n"
+"\n"
+"In LXD containers are created from images. Those images were themselves\n"
+"either generated from an existing container or downloaded from an image\n"
+"server.\n"
+"\n"
+"When using remote images, LXD will automatically cache images for you\n"
+"and remove them upon expiration.\n"
+"\n"
+"The image unique identifier is the hash (sha-256) of its representation\n"
+"as a compressed tarball (or for split images, the concatenation of the\n"
+"metadata and rootfs tarballs).\n"
+"\n"
+"Images can be referenced by their full hash, shortest unique partial\n"
+"hash or alias name (if one is set)."
+msgstr ""
+
+#: lxc/profile.go:29 lxc/profile.go:30
+msgid "Manage profiles"
+msgstr ""
+
+#: lxc/storage.go:32 lxc/storage.go:33
+msgid "Manage storage pools and volumes"
+msgstr ""
+
+#: lxc/storage_volume.go:33
+msgid "Manage storage volumes"
+msgstr ""
+
+#: lxc/storage_volume.go:34
+msgid ""
+"Manage storage volumes\n"
+"\n"
+"Unless specified through a prefix, all volume operations affect \"custom"
+"\" (user created) volumes."
+msgstr ""
+
+#: lxc/remote.go:33 lxc/remote.go:34
+msgid "Manage the list of remote servers"
+msgstr ""
+
+#: lxc/config_trust.go:29 lxc/config_trust.go:30
+msgid "Manage trusted clients"
+msgstr ""
+
+#: lxc/info.go:197
+msgid "Memory (current)"
+msgstr ""
+
+#: lxc/info.go:201
+msgid "Memory (peak)"
+msgstr ""
+
+#: lxc/info.go:213
+msgid "Memory usage:"
+msgstr ""
+
+#: lxc/monitor.go:49
+msgid "Minimum level for log messages"
+msgstr ""
+
+#: lxc/config_metadata.go:102 lxc/config_metadata.go:200
+#: lxc/config_template.go:91 lxc/config_template.go:134
+#: lxc/config_template.go:176 lxc/config_template.go:260
+#: lxc/config_template.go:322 lxc/profile.go:197 lxc/profile.go:656
+msgid "Missing container name"
+msgstr ""
+
+#: lxc/profile.go:126
+msgid "Missing container.name name"
+msgstr ""
+
+#: lxc/config_device.go:103 lxc/config_device.go:203 lxc/config_device.go:276
+#: lxc/config_device.go:342 lxc/config_device.go:429 lxc/config_device.go:517
+#: lxc/config_device.go:606
+msgid "Missing name"
+msgstr ""
+
+#: lxc/network.go:128 lxc/network.go:201 lxc/network.go:344 lxc/network.go:391
+#: lxc/network.go:476 lxc/network.go:581 lxc/network.go:686 lxc/network.go:832
+#: lxc/network.go:897 lxc/network.go:946 lxc/network.go:1015
+msgid "Missing network name"
+msgstr ""
+
+#: lxc/storage.go:185 lxc/storage.go:252 lxc/storage.go:353 lxc/storage.go:408
+#: lxc/storage.go:603 lxc/storage.go:677 lxc/storage_volume.go:146
+#: lxc/storage_volume.go:225 lxc/storage_volume.go:451
+#: lxc/storage_volume.go:526 lxc/storage_volume.go:585
+#: lxc/storage_volume.go:667 lxc/storage_volume.go:766
+#: lxc/storage_volume.go:878 lxc/storage_volume.go:942
+#: lxc/storage_volume.go:1050 lxc/storage_volume.go:1114
+#: lxc/storage_volume.go:1197
+msgid "Missing pool name"
+msgstr ""
+
+#: lxc/profile.go:321 lxc/profile.go:372 lxc/profile.go:444 lxc/profile.go:544
+#: lxc/profile.go:729 lxc/profile.go:777 lxc/profile.go:836
+msgid "Missing profile name"
+msgstr ""
+
+#: lxc/profile.go:266
+msgid "Missing source profile name"
+msgstr ""
 
-#: lxc/file.go:460
+#: lxc/storage_volume.go:311
+msgid "Missing source volume name"
+msgstr ""
+
+#: lxc/file.go:446
+msgid "Missing target directory"
+msgstr ""
+
+#: lxc/monitor.go:30
+msgid "Monitor a local or remote LXD server"
+msgstr ""
+
+#: lxc/monitor.go:31
+msgid ""
+"Monitor a local or remote LXD server\n"
+"\n"
+"By default the monitor will listen to all message types."
+msgstr ""
+
+#: lxc/network.go:411 lxc/network.go:496 lxc/storage_volume.go:605
+#: lxc/storage_volume.go:686
+msgid "More than one device matches, specify the device name."
+msgstr ""
+
+#: lxc/file.go:224
 msgid "More than one file to download, but target is not a directory"
 msgstr ""
 
-#: lxc/move.go:42
+#: lxc/move.go:30 lxc/move.go:31
+msgid "Move containers within or in between LXD instances"
+msgstr ""
+
+#: lxc/storage_volume.go:993 lxc/storage_volume.go:994
+msgid "Move storage volumes between pools"
+msgstr ""
+
+#: lxc/move.go:44
 msgid "Move the container without its snapshots"
 msgstr ""
 
-#: lxc/storage.go:1128
+#: lxc/storage_volume.go:375
 #, c-format
 msgid "Moving the storage volume: %s"
 msgstr ""
 
-#: lxc/image.go:1292
+#: lxc/image.go:588
 msgid "Must run as root to import from directory"
 msgstr ""
 
-#: lxc/action.go:74
+#: lxc/action.go:147
 msgid "Must supply container name for: "
 msgstr ""
 
-#: lxc/cluster.go:183 lxc/list.go:471 lxc/network.go:576 lxc/profile.go:573
-#: lxc/remote.go:409 lxc/storage.go:731 lxc/storage.go:936
+#: lxc/cluster.go:119 lxc/list.go:468 lxc/network.go:781 lxc/profile.go:613
+#: lxc/remote.go:463 lxc/storage.go:544 lxc/storage_volume.go:966
 msgid "NAME"
 msgstr ""
 
-#: lxc/network.go:558 lxc/operation.go:139 lxc/remote.go:380 lxc/remote.go:385
+#: lxc/network.go:763 lxc/operation.go:138 lxc/remote.go:434 lxc/remote.go:439
 msgid "NO"
 msgstr ""
 
-#: lxc/storage.go:941
+#: lxc/storage_volume.go:971
 msgid "NODE"
 msgstr ""
 
-#: lxc/info.go:117
+#: lxc/info.go:121
 #, c-format
 msgid "Name: %s"
 msgstr ""
 
-#: lxc/network.go:276
+#: lxc/network.go:303
 #, c-format
 msgid "Network %s created"
 msgstr ""
 
-#: lxc/network.go:393
+#: lxc/network.go:353
 #, c-format
 msgid "Network %s deleted"
 msgstr ""
 
-#: lxc/network.go:274
+#: lxc/network.go:301
 #, c-format
 msgid "Network %s pending on node %s"
 msgstr ""
 
-#: lxc/network.go:470
+#: lxc/network.go:906
 #, c-format
 msgid "Network %s renamed to %s"
 msgstr ""
 
-#: lxc/init.go:145 lxc/init.go:146
+#: lxc/init.go:45
 msgid "Network name"
 msgstr ""
 
-#: lxc/info.go:226
+#: lxc/info.go:230
 msgid "Network usage:"
 msgstr ""
 
-#: lxc/image.go:180 lxc/publish.go:36
+#: lxc/publish.go:39
 msgid "New alias to define at target"
 msgstr ""
 
-#: lxc/config.go:414
-msgid "No certificate provided to add"
+#: lxc/image.go:140 lxc/image.go:577
+msgid "New aliases to add to the image"
 msgstr ""
 
-#: lxc/network.go:312 lxc/network.go:365
+#: lxc/network.go:420 lxc/network.go:505
 msgid "No device found for this network"
 msgstr ""
 
-#: lxc/storage.go:444 lxc/storage.go:574
+#: lxc/storage_volume.go:614 lxc/storage_volume.go:695
 msgid "No device found for this storage volume."
 msgstr ""
 
-#: lxc/config.go:446
-msgid "No fingerprint specified."
-msgstr ""
-
-#: lxc/cluster.go:143
+#: lxc/cluster.go:268
 #, c-format
 msgid "Node %s removed"
 msgstr ""
 
-#: lxc/cluster.go:119
+#: lxc/cluster.go:221
 #, c-format
 msgid "Node %s renamed to %s"
 msgstr ""
 
-#: lxc/copy.go:46 lxc/init.go:150 lxc/move.go:45 lxc/network.go:105
-#: lxc/storage.go:165
+#: lxc/copy.go:45 lxc/init.go:48 lxc/move.go:47
 msgid "Node name"
 msgstr ""
 
-#: lxc/storage.go:388 lxc/storage.go:481
+#: lxc/storage_volume.go:164 lxc/storage_volume.go:243
 msgid "Only \"custom\" volumes can be attached to containers."
 msgstr ""
 
-#: lxc/remote.go:101
+#: lxc/remote.go:146
 msgid "Only https URLs are supported for simplestreams"
 msgstr ""
 
-#: lxc/image.go:688
+#: lxc/image.go:658
 msgid "Only https:// is supported for remote image import."
 msgstr ""
 
-#: lxc/network.go:421 lxc/network.go:605
+#: lxc/network.go:607 lxc/network.go:960
 msgid "Only managed networks can be modified."
 msgstr ""
 
-#: lxc/operation.go:85
+#: lxc/operation.go:83
 #, c-format
 msgid "Operation %s deleted"
 msgstr ""
 
-#: lxc/help.go:71 lxc/main.go:139 lxc/main.go:195
-msgid "Options:"
-msgstr ""
-
-#: lxc/exec.go:69
+#: lxc/exec.go:53
 msgid "Override the terminal mode (auto, interactive or non-interactive)"
 msgstr ""
 
-#: lxc/list.go:641
+#: lxc/list.go:638
 msgid "PERSISTENT"
 msgstr ""
 
-#: lxc/list.go:473
+#: lxc/list.go:470
 msgid "PID"
 msgstr ""
 
-#: lxc/list.go:472
+#: lxc/list.go:469
 msgid "PROCESSES"
 msgstr ""
 
-#: lxc/list.go:474
+#: lxc/list.go:471
 msgid "PROFILES"
 msgstr ""
 
-#: lxc/remote.go:411
+#: lxc/remote.go:465
 msgid "PROTOCOL"
 msgstr ""
 
-#: lxc/image.go:234 lxc/remote.go:413
+#: lxc/image.go:924 lxc/remote.go:467
 msgid "PUBLIC"
 msgstr ""
 
-#: lxc/info.go:220
+#: lxc/info.go:224
 msgid "Packets received"
 msgstr ""
 
-#: lxc/info.go:221
+#: lxc/info.go:225
 msgid "Packets sent"
 msgstr ""
 
-#: lxc/help.go:78
-msgid "Path to an alternate client configuration directory"
-msgstr ""
-
-#: lxc/help.go:79
-msgid "Path to an alternate server directory"
-msgstr ""
-
-#: lxc/main.go:240
-msgid "Pause containers."
-msgstr ""
-
-#: lxc/main.go:42
-msgid "Permission denied, are you in the lxd group?"
+#: lxc/action.go:48 lxc/action.go:49
+msgid "Pause containers"
 msgstr ""
 
-#: lxc/info.go:138
+#: lxc/info.go:142
 #, c-format
 msgid "Pid: %d"
 msgstr ""
 
-#: lxc/network.go:446 lxc/profile.go:276 lxc/storage.go:648 lxc/storage.go:1210
+#: lxc/network.go:632 lxc/profile.go:491 lxc/storage.go:299
+#: lxc/storage_volume.go:823
 msgid "Press enter to open the editor again"
 msgstr ""
 
-#: lxc/config.go:822 lxc/config.go:887 lxc/config.go:1397 lxc/config.go:1447
-#: lxc/image.go:1192
+#: lxc/config.go:196 lxc/config.go:260 lxc/config_metadata.go:145
+#: lxc/config_template.go:205 lxc/image.go:406
 msgid "Press enter to start the editor again"
 msgstr ""
 
-#: lxc/monitor.go:68
+#: lxc/monitor.go:47
 msgid "Pretty rendering"
 msgstr ""
 
-#: lxc/help.go:73
-msgid "Print debug information"
-msgstr ""
-
-#: lxc/help.go:72
-msgid "Print less common commands"
+#: lxc/main.go:55
+msgid "Print help"
 msgstr ""
 
-#: lxc/query.go:37
+#: lxc/query.go:36
 msgid "Print the raw response"
 msgstr ""
 
-#: lxc/help.go:74
-msgid "Print verbose information"
+#: lxc/main.go:54
+msgid "Print version number"
 msgstr ""
 
-#: lxc/info.go:162
+#: lxc/info.go:166
 #, c-format
 msgid "Processes: %d"
 msgstr ""
 
-#: lxc/profile.go:362
+#: lxc/main_aliases.go:123 lxc/main_aliases.go:131
+#, c-format
+msgid "Processing aliases failed: %s\n"
+msgstr ""
+
+#: lxc/profile.go:147
 #, c-format
 msgid "Profile %s added to %s"
 msgstr ""
 
-#: lxc/profile.go:226
+#: lxc/profile.go:333
 #, c-format
 msgid "Profile %s created"
 msgstr ""
 
-#: lxc/profile.go:310
+#: lxc/profile.go:381
 #, c-format
 msgid "Profile %s deleted"
 msgstr ""
 
-#: lxc/profile.go:397
+#: lxc/profile.go:690
 #, c-format
 msgid "Profile %s removed from %s"
 msgstr ""
 
-#: lxc/profile.go:300
+#: lxc/profile.go:738
 #, c-format
 msgid "Profile %s renamed to %s"
 msgstr ""
 
-#: lxc/copy.go:39 lxc/copy.go:40 lxc/init.go:141 lxc/init.go:142
+#: lxc/copy.go:40 lxc/init.go:43
 msgid "Profile to apply to the new container"
 msgstr ""
 
-#: lxc/profile.go:339
+#: lxc/profile.go:225
 #, c-format
 msgid "Profiles %s applied to %s"
 msgstr ""
 
-#: lxc/info.go:136
+#: lxc/info.go:140
 #, c-format
 msgid "Profiles: %s"
 msgstr ""
 
-#: lxc/image.go:619
+#: lxc/image.go:849
 msgid "Properties:"
 msgstr ""
 
-#: lxc/remote.go:72
+#: lxc/remote.go:92
 msgid "Public image server"
 msgstr ""
 
-#: lxc/image.go:602
+#: lxc/image.go:827
 #, c-format
 msgid "Public: %s"
 msgstr ""
 
-#: lxc/file.go:68 lxc/file.go:69
-msgid "Recursively push or pull files"
+#: lxc/publish.go:33 lxc/publish.go:34
+msgid "Publish containers as images"
 msgstr ""
 
-#: lxc/image.go:529
-#, c-format
-msgid "Refreshing the image: %s"
+#: lxc/file.go:184 lxc/file.go:185
+msgid "Pull files from containers"
 msgstr ""
 
-#: lxc/remote.go:69
-msgid "Remote admin password"
+#: lxc/file.go:323 lxc/file.go:324
+msgid "Push files into containers"
 msgstr ""
 
-#: lxc/utils/cancel.go:34
-msgid "Remote operation canceled by user"
+#: lxc/file.go:192 lxc/file.go:330
+msgid "Recursively transfer files"
+msgstr ""
+
+#: lxc/image.go:1211 lxc/image.go:1212
+msgid "Refresh images"
 msgstr ""
 
-#: lxc/info.go:122
+#: lxc/image.go:1239
 #, c-format
-msgid "Remote: %s"
+msgid "Refreshing the image: %s"
 msgstr ""
 
-#: lxc/delete.go:42
+#: lxc/remote.go:515
 #, c-format
-msgid "Remove %s (yes/no): "
+msgid "Remote %s already exists"
 msgstr ""
 
-#: lxc/storage.go:1247
+#: lxc/remote.go:507 lxc/remote.go:569 lxc/remote.go:618 lxc/remote.go:656
 #, c-format
-msgid "Renamed storage volume from \"%s\" to \"%s\""
+msgid "Remote %s doesn't exist"
 msgstr ""
 
-#: lxc/delete.go:36 lxc/delete.go:37
-msgid "Require user confirmation"
+#: lxc/remote.go:116
+#, c-format
+msgid "Remote %s exists as <%s>"
 msgstr ""
 
-#: lxc/info.go:159
-msgid "Resources:"
+#: lxc/remote.go:511 lxc/remote.go:573 lxc/remote.go:660
+#, c-format
+msgid "Remote %s is static and cannot be modified"
 msgstr ""
 
-#: lxc/main.go:248
-msgid "Restart containers."
+#: lxc/remote.go:89
+msgid "Remote admin password"
 msgstr ""
 
-#: lxc/console.go:38
-msgid "Retrieve the container's console log"
+#: lxc/utils/cancel.go:34
+msgid "Remote operation canceled by user"
 msgstr ""
 
-#: lxc/init.go:293
+#: lxc/info.go:126
 #, c-format
-msgid "Retrieving image: %s"
+msgid "Remote: %s"
 msgstr ""
 
-#: lxc/action.go:52
-msgid "Run command against all containers"
+#: lxc/delete.go:42
+#, c-format
+msgid "Remove %s (yes/no): "
 msgstr ""
 
-#: lxc/image.go:237
-msgid "SIZE"
+#: lxc/cluster.go:237 lxc/cluster.go:238
+msgid "Remove a member from the cluster"
 msgstr ""
 
-#: lxc/list.go:475
-msgid "SNAPSHOTS"
+#: lxc/alias.go:197 lxc/alias.go:198
+msgid "Remove aliases"
 msgstr ""
 
-#: lxc/storage.go:738
-msgid "SOURCE"
+#: lxc/config_device.go:404 lxc/config_device.go:405
+msgid "Remove container devices"
 msgstr ""
 
-#: lxc/cluster.go:186 lxc/list.go:476 lxc/network.go:583 lxc/storage.go:736
-msgid "STATE"
+#: lxc/profile.go:631 lxc/profile.go:632
+msgid "Remove profiles from containers"
 msgstr ""
 
-#: lxc/remote.go:414
-msgid "STATIC"
+#: lxc/remote.go:548 lxc/remote.go:549
+msgid "Remove remotes"
 msgstr ""
 
-#: lxc/operation.go:155
-msgid "STATUS"
+#: lxc/config_trust.go:196 lxc/config_trust.go:197
+msgid "Remove trusted clients"
 msgstr ""
 
-#: lxc/list.go:478
-msgid "STORAGE POOL"
+#: lxc/cluster.go:191 lxc/cluster.go:192
+msgid "Rename a cluster member"
 msgstr ""
 
-#: lxc/remote.go:71
-msgid "Server authentication type (tls or macaroons)"
+#: lxc/alias.go:146 lxc/alias.go:147 lxc/image_alias.go:249
+#: lxc/image_alias.go:250
+msgid "Rename aliases"
 msgstr ""
 
-#: lxc/remote.go:211
-msgid "Server certificate NACKed by user"
+#: lxc/rename.go:19 lxc/rename.go:20
+msgid "Rename containers and snapshots"
 msgstr ""
 
-#: lxc/remote.go:311
-msgid "Server doesn't trust us after authentication"
+#: lxc/network.go:872 lxc/network.go:873
+msgid "Rename networks"
 msgstr ""
 
-#: lxc/remote.go:70
-msgid "Server protocol (lxd or simplestreams)"
+#: lxc/profile.go:704 lxc/profile.go:705
+msgid "Rename profiles"
 msgstr ""
 
-#: lxc/file.go:66
-msgid "Set the file's gid on push"
+#: lxc/remote.go:486 lxc/remote.go:487
+msgid "Rename remotes"
 msgstr ""
 
-#: lxc/file.go:67
-msgid "Set the file's perms on push"
+#: lxc/storage_volume.go:1024 lxc/storage_volume.go:1025
+msgid "Rename storage volumes"
 msgstr ""
 
-#: lxc/file.go:65
-msgid "Set the file's uid on push"
+#: lxc/storage_volume.go:1073
+#, c-format
+msgid "Renamed storage volume from \"%s\" to \"%s\""
 msgstr ""
 
-#: lxc/help.go:29
-msgid "Show all commands (not just interesting ones)"
+#: lxc/delete.go:35
+msgid "Require user confirmation"
 msgstr ""
 
-#: lxc/help.go:75
-msgid "Show client version"
+#: lxc/info.go:163
+msgid "Resources:"
 msgstr ""
 
-#: lxc/info.go:40
-msgid "Show the container's last 100 log lines?"
+#: lxc/action.go:68
+msgid "Restart containers"
 msgstr ""
 
-#: lxc/config.go:36
-msgid "Show the expanded configuration"
+#: lxc/action.go:69
+msgid ""
+"Restart containers\n"
+"\n"
+"The opposite of \"lxc pause\" is \"lxc start\"."
 msgstr ""
 
-#: lxc/info.go:41
-msgid "Show the resources available to the server"
+#: lxc/restore.go:23
+msgid "Restore containers from snapshots"
 msgstr ""
 
-#: lxc/storage.go:163
-msgid "Show the resources available to the storage pool"
+#: lxc/restore.go:24
+msgid ""
+"Restore containers from snapshots\n"
+"\n"
+"If --stateful is passed, then the running state will be restored too."
+msgstr ""
+
+#: lxc/console.go:39
+msgid "Retrieve the container's console log"
+msgstr ""
+
+#: lxc/init.go:201
+#, c-format
+msgid "Retrieving image: %s"
+msgstr ""
+
+#: lxc/action.go:112
+msgid "Run command against all containers"
+msgstr ""
+
+#: lxc/image.go:927
+msgid "SIZE"
+msgstr ""
+
+#: lxc/list.go:472
+msgid "SNAPSHOTS"
+msgstr ""
+
+#: lxc/storage.go:551
+msgid "SOURCE"
+msgstr ""
+
+#: lxc/cluster.go:122 lxc/list.go:473 lxc/network.go:788 lxc/storage.go:549
+msgid "STATE"
+msgstr ""
+
+#: lxc/remote.go:468
+msgid "STATIC"
+msgstr ""
+
+#: lxc/operation.go:154
+msgid "STATUS"
+msgstr ""
+
+#: lxc/list.go:475
+msgid "STORAGE POOL"
+msgstr ""
+
+#: lxc/query.go:26 lxc/query.go:27
+msgid "Send a raw query to LXD"
+msgstr ""
+
+#: lxc/remote.go:91
+msgid "Server authentication type (tls or macaroons)"
+msgstr ""
+
+#: lxc/remote.go:260
+msgid "Server certificate NACKed by user"
+msgstr ""
+
+#: lxc/remote.go:360
+msgid "Server doesn't trust us after authentication"
+msgstr ""
+
+#: lxc/remote.go:90
+msgid "Server protocol (lxd or simplestreams)"
+msgstr ""
+
+#: lxc/config_device.go:492 lxc/config_device.go:493
+msgid "Set container device configuration keys"
+msgstr ""
+
+#: lxc/config.go:354 lxc/config.go:355
+msgid "Set container or server configuration keys"
+msgstr ""
+
+#: lxc/network.go:919 lxc/network.go:920
+msgid "Set network configuration keys"
+msgstr ""
+
+#: lxc/profile.go:752 lxc/profile.go:753
+msgid "Set profile configuration keys"
+msgstr ""
+
+#: lxc/storage.go:572 lxc/storage.go:573
+msgid "Set storage pool configuration keys"
+msgstr ""
+
+#: lxc/storage_volume.go:1088 lxc/storage_volume.go:1089
+msgid "Set storage volume configuration keys"
+msgstr ""
+
+#: lxc/remote.go:635 lxc/remote.go:636
+msgid "Set the URL for the remote"
+msgstr ""
+
+#: lxc/remote.go:597 lxc/remote.go:598
+msgid "Set the default remote"
+msgstr ""
+
+#: lxc/file.go:333
+msgid "Set the file's gid on push"
+msgstr ""
+
+#: lxc/file.go:334
+msgid "Set the file's perms on push"
+msgstr ""
+
+#: lxc/file.go:332
+msgid "Set the file's uid on push"
+msgstr ""
+
+#: lxc/main.go:57
+msgid "Show all debug messages"
+msgstr ""
+
+#: lxc/main.go:58
+msgid "Show all information messages"
+msgstr ""
+
+#: lxc/config_metadata.go:175 lxc/config_metadata.go:176
+msgid "Show container metadata files"
+msgstr ""
+
+#: lxc/config.go:451 lxc/config.go:452
+msgid "Show container or server configurations"
+msgstr ""
+
+#: lxc/info.go:28 lxc/info.go:29
+msgid "Show container or server information"
+msgstr ""
+
+#: lxc/config_template.go:297 lxc/config_template.go:298
+msgid "Show content of container file templates"
+msgstr ""
+
+#: lxc/cluster.go:141 lxc/cluster.go:142
+msgid "Show details of a cluster member"
+msgstr ""
+
+#: lxc/operation.go:173 lxc/operation.go:174
+msgid "Show details on a background operation"
+msgstr ""
+
+#: lxc/config_device.go:581 lxc/config_device.go:582
+msgid "Show full device configuration for containers or profiles"
+msgstr ""
+
+#: lxc/image.go:1284 lxc/image.go:1285
+msgid "Show image properties"
+msgstr ""
+
+#: lxc/main.go:61
+msgid "Show less common commands"
 msgstr ""
 
-#: lxc/storage.go:164
+#: lxc/network.go:988 lxc/network.go:989
+msgid "Show network configurations"
+msgstr ""
+
+#: lxc/profile.go:811 lxc/profile.go:812
+msgid "Show profile configurations"
+msgstr ""
+
+#: lxc/storage.go:644 lxc/storage.go:645
+msgid "Show storage pool configurations and resources"
+msgstr ""
+
+#: lxc/storage_volume.go:1165
+msgid "Show storage volum configurations"
+msgstr ""
+
+#: lxc/storage_volume.go:1166
+msgid "Show storage volume configurations"
+msgstr ""
+
+#: lxc/info.go:39
+msgid "Show the container's last 100 log lines?"
+msgstr ""
+
+#: lxc/remote.go:379 lxc/remote.go:380
+msgid "Show the default remote"
+msgstr ""
+
+#: lxc/config.go:455
+msgid "Show the expanded configuration"
+msgstr ""
+
+#: lxc/info.go:40
+msgid "Show the resources available to the server"
+msgstr ""
+
+#: lxc/storage.go:648
+msgid "Show the resources available to the storage pool"
+msgstr ""
+
+#: lxc/storage.go:386
 msgid "Show the used and free space in bytes"
 msgstr ""
 
-#: lxc/image.go:600
+#: lxc/image.go:775 lxc/image.go:776
+msgid "Show useful information about images"
+msgstr ""
+
+#: lxc/storage.go:382 lxc/storage.go:383
+msgid "Show useful information about storage pools"
+msgstr ""
+
+#: lxc/image.go:825
 #, c-format
 msgid "Size: %.2fMB"
 msgstr ""
 
-#: lxc/info.go:240
+#: lxc/info.go:244
 msgid "Snapshots:"
 msgstr ""
 
-#: lxc/action.go:163
+#: lxc/action.go:242
 #, c-format
 msgid "Some containers failed to %s"
 msgstr ""
 
-#: lxc/image.go:634
+#: lxc/image.go:867
 msgid "Source:"
 msgstr ""
 
-#: lxc/main.go:258
-msgid "Start containers."
+#: lxc/action.go:29 lxc/action.go:30
+msgid "Start containers"
 msgstr ""
 
-#: lxc/launch.go:59
+#: lxc/launch.go:62
 #, c-format
 msgid "Starting %s"
 msgstr ""
 
-#: lxc/info.go:130
+#: lxc/info.go:134
 #, c-format
 msgid "Status: %s"
 msgstr ""
 
-#: lxc/main.go:264
-msgid "Stop containers."
+#: lxc/action.go:90 lxc/action.go:91
+msgid "Stop containers"
 msgstr ""
 
-#: lxc/publish.go:37 lxc/publish.go:38
+#: lxc/publish.go:40
 msgid "Stop the container if currently running"
 msgstr ""
 
-#: lxc/publish.go:136
+#: lxc/publish.go:144
 msgid "Stopping container failed!"
 msgstr ""
 
-#: lxc/delete.go:121
+#: lxc/delete.go:120
 #, c-format
 msgid "Stopping the container failed: %s"
 msgstr ""
 
-#: lxc/storage.go:538
+#: lxc/storage.go:144
 #, c-format
 msgid "Storage pool %s created"
 msgstr ""
 
-#: lxc/storage.go:598
+#: lxc/storage.go:194
 #, c-format
 msgid "Storage pool %s deleted"
 msgstr ""
 
-#: lxc/storage.go:536
+#: lxc/storage.go:142
 #, c-format
 msgid "Storage pool %s pending on node %s"
 msgstr ""
 
-#: lxc/init.go:147 lxc/init.go:148
+#: lxc/init.go:46
 msgid "Storage pool name"
 msgstr ""
 
-#: lxc/storage.go:980
+#: lxc/storage_volume.go:484
 #, c-format
 msgid "Storage volume %s created"
 msgstr ""
 
-#: lxc/storage.go:1000
+#: lxc/storage_volume.go:545
 #, c-format
 msgid "Storage volume %s deleted"
 msgstr ""
 
-#: lxc/storage.go:1135
+#: lxc/storage_volume.go:388
 msgid "Storage volume copied successfully!"
 msgstr ""
 
-#: lxc/storage.go:1129
+#: lxc/storage_volume.go:376
 msgid "Storage volume moved successfully!"
 msgstr ""
 
-#: lxc/action.go:50
-msgid "Store the container state (only for stop)"
+#: lxc/action.go:115
+msgid "Store the container state"
 msgstr ""
 
-#: lxc/info.go:201
+#: lxc/info.go:205
 msgid "Swap (current)"
 msgstr ""
 
-#: lxc/info.go:205
+#: lxc/info.go:209
 msgid "Swap (peak)"
 msgstr ""
 
-#: lxc/alias.go:85
+#: lxc/alias.go:128
 msgid "TARGET"
 msgstr ""
 
-#: lxc/list.go:477 lxc/network.go:516 lxc/network.go:577 lxc/operation.go:153
-#: lxc/storage.go:935
+#: lxc/list.go:474 lxc/network.go:782 lxc/network.go:854 lxc/operation.go:152
+#: lxc/storage_volume.go:965
 msgid "TYPE"
 msgstr ""
 
-#: lxc/delete.go:105
+#: lxc/delete.go:104
 msgid "The container is currently running, stop it first or pass --force."
 msgstr ""
 
-#: lxc/publish.go:101
+#: lxc/publish.go:109
 msgid ""
 "The container is currently running. Use --force to have it stopped and "
 "restarted."
 msgstr ""
 
-#: lxc/init.go:372
+#: lxc/init.go:280
 msgid "The container you are starting doesn't have any network attached to it."
 msgstr ""
 
-#: lxc/config.go:944 lxc/config.go:961 lxc/config.go:1240
+#: lxc/config_device.go:130 lxc/config_device.go:147 lxc/config_device.go:354
 msgid "The device already exists"
 msgstr ""
 
-#: lxc/config.go:1007 lxc/config.go:1019 lxc/config.go:1055 lxc/config.go:1073
-#: lxc/config.go:1119 lxc/config.go:1136 lxc/config.go:1179 lxc/config.go:1197
+#: lxc/config_device.go:218 lxc/config_device.go:230 lxc/config_device.go:442
+#: lxc/config_device.go:460 lxc/config_device.go:533 lxc/config_device.go:550
 msgid "The device doesn't exist"
 msgstr ""
 
-#: lxc/init.go:356
+#: lxc/init.go:264
 #, c-format
 msgid "The local image '%s' couldn't be found, trying '%s:%s' instead."
 msgstr ""
 
-#: lxc/init.go:352
+#: lxc/init.go:260
 #, c-format
 msgid "The local image '%s' couldn't be found, trying '%s:' instead."
 msgstr ""
 
-#: lxc/action.go:35
-msgid "The opposite of \"lxc pause\" is \"lxc start\"."
-msgstr ""
-
-#: lxc/config.go:1245
+#: lxc/config_device.go:359
 msgid "The profile device doesn't exist"
 msgstr ""
 
-#: lxc/network.go:317 lxc/network.go:370 lxc/storage.go:449 lxc/storage.go:579
+#: lxc/network.go:425 lxc/network.go:510 lxc/storage_volume.go:619
+#: lxc/storage_volume.go:700
 msgid "The specified device doesn't exist"
 msgstr ""
 
-#: lxc/network.go:321 lxc/network.go:374
+#: lxc/network.go:429 lxc/network.go:514
 msgid "The specified device doesn't match the network"
 msgstr ""
 
-#: lxc/publish.go:74
+#: lxc/publish.go:82
 msgid "There is no \"image name\".  Did you want an alias?"
 msgstr ""
 
-#: lxc/help.go:47
-msgid ""
-"This is the LXD command line client.\n"
-"\n"
-"All of LXD's features can be driven through the various commands below.\n"
-"For help with any of those, simply call them with --help."
-msgstr ""
-
-#: lxc/action.go:46
+#: lxc/action.go:122
 msgid "Time to wait for the container before killing it"
 msgstr ""
 
-#: lxc/image.go:603
+#: lxc/image.go:828
 msgid "Timestamps:"
 msgstr ""
 
-#: lxc/init.go:374
+#: lxc/init.go:282
 msgid "To attach a network to a container, use: lxc network attach"
 msgstr ""
 
-#: lxc/init.go:373
+#: lxc/init.go:281
 msgid "To create a new network, use: lxc network create"
 msgstr ""
 
-#: lxc/console.go:173
+#: lxc/console.go:185
 msgid "To detach from the console, press: <ctrl>+a q"
 msgstr ""
 
-#: lxc/main.go:172
+#: lxc/main.go:260
 msgid "To start your first container, try: lxc launch ubuntu:16.04"
 msgstr ""
 
-#: lxc/copy.go:43 lxc/move.go:43
+#: lxc/storage_volume.go:997
+msgid "Transfer mode, one of pull (default), push or relay"
+msgstr ""
+
+#: lxc/copy.go:42
+msgid "Transfer mode. One of pull (default), push or relay"
+msgstr ""
+
+#: lxc/move.go:45 lxc/storage_volume.go:286
 msgid "Transfer mode. One of pull (default), push or relay."
 msgstr ""
 
-#: lxc/copy.go:212
+#: lxc/copy.go:229
 #, c-format
 msgid "Transferring container: %s"
 msgstr ""
 
-#: lxc/image.go:717
+#: lxc/image.go:687
 #, c-format
 msgid "Transferring image: %s"
 msgstr ""
 
-#: lxc/action.go:108 lxc/launch.go:77
+#: lxc/action.go:181 lxc/launch.go:80
 #, c-format
 msgid "Try `lxc info --show-log %s` for more info"
 msgstr ""
 
-#: lxc/info.go:132
+#: lxc/info.go:136
 msgid "Type: ephemeral"
 msgstr ""
 
-#: lxc/info.go:134
+#: lxc/info.go:138
 msgid "Type: persistent"
 msgstr ""
 
-#: lxc/image.go:238
+#: lxc/image.go:928
 msgid "UPLOAD DATE"
 msgstr ""
 
-#: lxc/cluster.go:184 lxc/remote.go:410
+#: lxc/cluster.go:120 lxc/remote.go:464
 msgid "URL"
 msgstr ""
 
-#: lxc/network.go:580 lxc/profile.go:574 lxc/storage.go:740 lxc/storage.go:938
+#: lxc/network.go:785 lxc/profile.go:614 lxc/storage.go:553
+#: lxc/storage_volume.go:968
 msgid "USED BY"
 msgstr ""
 
-#: lxc/manpage.go:36
-msgid "Unable to find help2man."
+#: lxc/list.go:514
+#, c-format
+msgid "Unknown column shorthand char '%c' in '%s'"
 msgstr ""
 
-#: lxc/file.go:124
+#: lxc/file.go:596
 #, c-format
 msgid "Unknown file type '%s'"
 msgstr ""
 
-#: lxc/image.go:608
-#, c-format
-msgid "Uploaded: %s"
+#: lxc/config_device.go:649 lxc/config_device.go:650
+msgid "Unset container device configuration keys"
 msgstr ""
 
-#: lxc/action.go:38
-#, c-format
-msgid ""
-"Usage: lxc %s [--all] [<remote>:]<container> [[<remote>:]<container>...]\n"
-"\n"
-"%s%s"
+#: lxc/config.go:559 lxc/config.go:560
+msgid "Unset container or server configuration keys"
 msgstr ""
 
-#: lxc/help.go:45
-msgid "Usage: lxc <command> [options]"
+#: lxc/network.go:1050 lxc/network.go:1051
+msgid "Unset network configuration keys"
 msgstr ""
 
-#: lxc/alias.go:22
-msgid ""
-"Usage: lxc alias <subcommand> [options]\n"
-"\n"
-"Manage command aliases.\n"
-"\n"
-"lxc alias add <alias> <target>\n"
-"    Add a new alias <alias> pointing to <target>.\n"
-"\n"
-"lxc alias remove <alias>\n"
-"    Remove the alias <alias>.\n"
-"\n"
-"lxc alias list\n"
-"    List all the aliases.\n"
-"\n"
-"lxc alias rename <old alias> <new alias>\n"
-"    Rename remote <old alias> to <new alias>."
+#: lxc/profile.go:865 lxc/profile.go:866
+msgid "Unset profile configuration keys"
 msgstr ""
 
-#: lxc/cluster.go:23
-msgid ""
-"Usage: lxc cluster <subcommand> [options]\n"
-"\n"
-"Manage cluster nodes.\n"
-"\n"
-"lxc cluster list [<remote>:]\n"
-"    List all nodes in the cluster.\n"
-"\n"
-"lxc cluster show [<remote>:]<node>\n"
-"    Show details of a node.\n"
-"\n"
-"lxc cluster rename [<remote>:]<node> <new-name>\n"
-"    Rename a cluster node.\n"
-"\n"
-"lxc cluster delete [<remote>:]<node> [--force]\n"
-"    Delete a node from the cluster."
+#: lxc/storage.go:728 lxc/storage.go:729
+msgid "Unset storage pool configuration keys"
 msgstr ""
 
-#: lxc/config.go:85
-msgid ""
-"Usage: lxc config <subcommand> [options]\n"
-"\n"
-"Change container or server configuration options.\n"
-"\n"
-"*Container configuration*\n"
-"\n"
-"lxc config get [<remote>:][container] <key>\n"
-"    Get container or server configuration key.\n"
-"\n"
-"lxc config set [<remote>:][container] <key> <value>\n"
-"    Set container or server configuration key.\n"
-"\n"
-"lxc config unset [<remote>:][container] <key>\n"
-"    Unset container or server configuration key.\n"
-"\n"
-"lxc config show [<remote>:][container] [--expanded]\n"
-"    Show container or server configuration.\n"
-"\n"
-"lxc config edit [<remote>:][container]\n"
-"    Edit configuration, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"*Container metadata*\n"
-"\n"
-"lxc config metadata show [<remote>:][container]\n"
-"    Show the container metadata.yaml content.\n"
-"\n"
-"lxc config metadata edit [<remote>:][container]\n"
-"    Edit the container metadata.yaml, either by launching external editor or "
-"reading STDIN.\n"
-"\n"
-"*Container templates*\n"
-"\n"
-"lxc config template list [<remote>:][container]\n"
-"    List the names of template files for a container.\n"
-"\n"
-"lxc config template show [<remote>:][container] [template]\n"
-"    Show the content of a template file for a container.\n"
-"\n"
-"lxc config template create [<remote>:][container] [template]\n"
-"    Add an empty template file for a container.\n"
-"\n"
-"lxc config template edit [<remote>:][container] [template]\n"
-"    Edit the content of a template file for a container, either by launching "
-"external editor or reading STDIN.\n"
-"\n"
-"lxc config template delete [<remote>:][container] [template]\n"
-"    Delete a template file for a container.\n"
-"\n"
-"\n"
-"*Device management*\n"
-"\n"
-"lxc config device add [<remote>:]<container> <device> <type> [key=value...]\n"
-"    Add a device to a container.\n"
-"\n"
-"lxc config device get [<remote>:]<container> <device> <key>\n"
-"    Get a device property.\n"
-"\n"
-"lxc config device set [<remote>:]<container> <device> <key> <value>\n"
-"    Set a device property.\n"
-"\n"
-"lxc config device unset [<remote>:]<container> <device> <key>\n"
-"    Unset a device property.\n"
-"\n"
-"lxc config device override [<remote>:]<container> <device> [key=value...]\n"
-"    Copy a profile inherited device into local container config.\n"
-"\n"
-"lxc config device list [<remote>:]<container>\n"
-"    List devices for container.\n"
-"\n"
-"lxc config device show [<remote>:]<container>\n"
-"    Show full device details for container.\n"
-"\n"
-"lxc config device remove [<remote>:]<container> <name>...\n"
-"    Remove device from container.\n"
-"\n"
-"*Client trust store management*\n"
-"\n"
-"lxc config trust list [<remote>:]\n"
-"    List all trusted certs.\n"
-"\n"
-"lxc config trust add [<remote>:] <certfile.crt>\n"
-"    Add certfile.crt to trusted hosts.\n"
-"\n"
-"lxc config trust remove [<remote>:] [hostname|fingerprint]\n"
-"    Remove the cert from trusted hosts.\n"
-"\n"
-"*Examples*\n"
-"\n"
-"cat config.yaml | lxc config edit <container>\n"
-"    Update the container configuration from config.yaml.\n"
-"\n"
-"lxc config device add [<remote>:]container1 <device-name> disk source=/share/"
-"c1 path=opt\n"
-"    Will mount the host's /share/c1 onto /opt in the container.\n"
-"\n"
-"lxc config set [<remote>:]<container> limits.cpu 2\n"
-"    Will set a CPU limit of \"2\" for the container.\n"
-"\n"
-"lxc config set core.https_address [::]:8443\n"
-"    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
-"\n"
-"lxc config set core.trust_password blah\n"
-"    Will set the server's trust password to blah."
+#: lxc/storage_volume.go:1240 lxc/storage_volume.go:1241
+msgid "Unset storage volume configuration keys"
 msgstr ""
 
-#: lxc/console.go:31
-msgid ""
-"Usage: lxc console [<remote>:]<container> [-l]\n"
-"\n"
-"Interact with the container's console device and log."
+#: lxc/image.go:835
+#, c-format
+msgid "Uploaded: %s"
 msgstr ""
 
-#: lxc/copy.go:30
-msgid ""
-"Usage: lxc copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>] "
-"[--ephemeral|e] [--profile|-p <profile>...] [--config|-c <key=value>...] [--"
-"container-only] [--target <node>]\n"
-"\n"
-"Copy containers within or in between LXD instances."
+#: lxc/delete.go:47
+msgid "User aborted delete operation"
 msgstr ""
 
-#: lxc/delete.go:27
+#: lxc/utils/cancel.go:40
 msgid ""
-"Usage: lxc delete [<remote>:]<container>[/<snapshot>] "
-"[[<remote>:]<container>[/<snapshot>]...]\n"
-"\n"
-"Delete containers and snapshots."
+"User signaled us three times, exiting. The remote operation will keep "
+"running."
 msgstr ""
 
-#: lxc/exec.go:53
-msgid ""
-"Usage: lxc exec [<remote>:]<container> [-t] [-T] [-n] [--mode=auto|"
-"interactive|non-interactive] [--env KEY=VALUE...] [--] <command line>\n"
-"\n"
-"Execute commands in containers.\n"
-"\n"
-"The command is executed directly using exec, so there is no shell and shell "
-"patterns (variables, file redirects, ...)\n"
-"won't be understood. If you need a shell environment you need to execute the "
-"shell executable, passing the shell commands\n"
-"as arguments, for example:\n"
-"\n"
-"    lxc exec <container> -- sh -c \"cd /tmp && pwd\"\n"
-"\n"
-"Mode defaults to non-interactive, interactive mode is selected if both stdin "
-"AND stdout are terminals (stderr is ignored)."
+#: lxc/query.go:35
+msgid "Wait for the operation to complete"
 msgstr ""
 
-#: lxc/file.go:39
+#: lxc/restore.go:36
 msgid ""
-"Usage: lxc file <subcommand> [options]\n"
-"\n"
-"Manage files in containers.\n"
-"\n"
-"lxc file pull [-r|--recursive] [<remote>:]<container>/<path> "
-"[[<remote>:]<container>/<path>...] <target path>\n"
-"    Pull files from containers.\n"
-"\n"
-"lxc file push [-r|--recursive] [-p|--create-dirs] [--uid=UID] [--gid=GID] [--"
-"mode=MODE] <source path> [<source path>...] [<remote>:]<container>/<path>\n"
-"    Push files into containers.\n"
-"\n"
-"lxc file delete [<remote>:]<container>/<path> [[<remote>:]<container>/"
-"<path>...]\n"
-"    Delete files in containers.\n"
-"\n"
-"lxc file edit [<remote>:]<container>/<path>\n"
-"    Edit files in containers using the default text editor.\n"
-"\n"
-"*Examples*\n"
-"lxc file push /etc/hosts foo/etc/hosts\n"
-"   To push /etc/hosts into the container \"foo\".\n"
-"\n"
-"lxc file pull foo/etc/hosts .\n"
-"   To pull /etc/hosts from the container and write it to the current "
-"directory."
+"Whether or not to restore the container's running state from snapshot (if "
+"available)"
 msgstr ""
 
-#: lxc/finger.go:15
-msgid ""
-"Usage: lxc finger [<remote>:]\n"
-"\n"
-"Check if the LXD server is alive."
+#: lxc/snapshot.go:31
+msgid "Whether or not to snapshot the container's running state"
 msgstr ""
 
-#: lxc/help.go:22
-msgid ""
-"Usage: lxc help [--all]\n"
-"\n"
-"Help page for the LXD client."
+#: lxc/network.go:765 lxc/operation.go:140 lxc/remote.go:436 lxc/remote.go:441
+msgid "YES"
 msgstr ""
 
-#: lxc/image.go:73
-msgid ""
-"Usage: lxc image <subcommand> [options]\n"
-"\n"
-"Manipulate container images.\n"
-"\n"
-"In LXD containers are created from images. Those images were themselves\n"
-"either generated from an existing container or downloaded from an image\n"
-"server.\n"
-"\n"
-"When using remote images, LXD will automatically cache images for you\n"
-"and remove them upon expiration.\n"
-"\n"
-"The image unique identifier is the hash (sha-256) of its representation\n"
-"as a compressed tarball (or for split images, the concatenation of the\n"
-"metadata and rootfs tarballs).\n"
-"\n"
-"Images can be referenced by their full hash, shortest unique partial\n"
-"hash or alias name (if one is set).\n"
-"\n"
-"\n"
-"lxc image import <tarball>|<dir> [<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) or an image directory into the LXD "
-"image store.\n"
-"    Directory import is only available on Linux and must be performed as "
-"root.\n"
-"\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"
-"    Delete one or more images from the LXD image store.\n"
-"\n"
-"lxc image refresh [<remote>:]<image> [[<remote>:]<image>...]\n"
-"    Refresh one or more images from its parent remote.\n"
-"\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"
-"    The target may be an existing directory, file name, or \"-\" to specify\n"
-"    stdout.  The target MUST be a directory when exporting a split image.\n"
-"    If the target is a directory, the image's name (each part's name for\n"
-"    split images) as found in the database will be used for the exported\n"
-"    image.  If the target is a file (not a directory and not stdout), then\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"
-"    Print everything LXD knows about a given image.\n"
-"\n"
-"lxc image list [<remote>:] [filter] [--format csv|json|table|yaml] [-c "
-"<columns>]\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"
-"    The -c option takes a (optionally comma-separated) list of arguments "
-"that\n"
-"    control which image attributes to output when displaying in table or "
-"csv\n"
-"    format.\n"
-"\n"
-"    Default column layout is: lfpdasu\n"
-"\n"
-"    Column shorthand chars:\n"
-"\n"
-"        l - Shortest image alias (and optionally number of other aliases)\n"
-"\n"
-"        L - Newline-separated list of all image aliases\n"
-"\n"
-"        f - Fingerprint\n"
-"\n"
-"        p - Whether image is public\n"
-"\n"
-"        d - Description\n"
-"\n"
-"        a - Architecture\n"
-"\n"
-"        s - Size\n"
-"\n"
-"        u - Upload date\n"
-"\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"
-"    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"
-"    Create a new alias for an existing image.\n"
-"\n"
-"lxc image alias rename [<remote>:]<alias> <new-name>\n"
-"    Rename an alias.\n"
-"\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."
+#: lxc/exec.go:122
+msgid "You can't pass -t and -T at the same time"
 msgstr ""
 
-#: lxc/info.go:27
+#: lxc/exec.go:126
+msgid "You can't pass -t or -T at the same time as --mode"
+msgstr ""
+
+#: lxc/copy.go:78
+msgid "You must specify a destination container name when using --target"
+msgstr ""
+
+#: lxc/copy.go:73 lxc/move.go:188
+msgid "You must specify a source container name"
+msgstr ""
+
+#: lxc/copy.go:68 lxc/move.go:91 lxc/move.go:183
+msgid "You must use the same source and destination remote when using --target"
+msgstr ""
+
+#: lxc/alias.go:53
+msgid "add <alias> <target>"
+msgstr ""
+
+#: lxc/config_trust.go:57
+msgid "add [<remote>:] <cert>"
+msgstr ""
+
+#: lxc/profile.go:100
+msgid "add [<remote>:]<container> <profile>"
+msgstr ""
+
+#: lxc/config_device.go:74
+msgid "add [<remote>:]<container|profile> <device> <type> [key=value...]"
+msgstr ""
+
+#: lxc/remote.go:82
+msgid "add [<remote>] <IP|FQDN|URL>"
+msgstr ""
+
+#: lxc/alias.go:21 lxc/image_alias.go:24
+msgid "alias"
+msgstr ""
+
+#: lxc/profile.go:160
+msgid "assign [<remote>:]<container> <profiles>"
+msgstr ""
+
+#: lxc/network.go:102
+msgid "attach [<remote>:]<network> <container> [device name] [interface name]"
+msgstr ""
+
+#: lxc/storage_volume.go:120
+msgid "attach [<remote>:]<pool> <volume> <container> [device name] <path>"
+msgstr ""
+
+#: lxc/storage_volume.go:199
 msgid ""
-"Usage: lxc info [<remote>:][<container>] [--show-log] [--resources]\n"
-"\n"
-"Show container or server information.\n"
-"\n"
-"lxc info [<remote>:]<container> [--show-log]\n"
-"    For container information.\n"
-"\n"
-"lxc info [<remote>:] [--resources]\n"
-"    For LXD server information."
+"attach-profile [<remote:>]<pool> <volume> <profile> [device name] <path>"
 msgstr ""
 
-#: lxc/init.go:79
+#: lxc/network.go:175
 msgid ""
-"Usage: lxc init [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
-"profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
-"<node>]\n"
-"\n"
-"Create containers from images.\n"
-"\n"
-"Not specifying -p will result in the default profile.\n"
-"Specifying \"-p\" with no argument will result in no profile.\n"
-"\n"
-"Examples:\n"
-"    lxc init ubuntu:16.04 u1"
+"attach-profile [<remote>:]<network> <profile> [device name] [interface name]"
+msgstr ""
+
+#: lxc/cluster.go:24
+msgid "cluster"
+msgstr ""
+
+#: lxc/config.go:27
+msgid "config"
+msgstr ""
+
+#: lxc/console.go:30
+msgid "console [<remote>:]<container>"
+msgstr ""
+
+#: lxc/storage_volume.go:280
+msgid "copy <pool>/<volume> <pool>/<volume>"
+msgstr ""
+
+#: lxc/image.go:128
+msgid "copy [<remote>:]<image> <remote>:"
+msgstr ""
+
+#: lxc/profile.go:238
+msgid "copy [<remote>:]<profile> [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/copy.go:32
+msgid "copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>]"
+msgstr ""
+
+#: lxc/image_alias.go:57
+msgid "create [<remote>:]<alias> <fingerprint>"
+msgstr ""
+
+#: lxc/config_template.go:65
+msgid "create [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/network.go:248
+msgid "create [<remote>:]<network> [key=value...]"
+msgstr ""
+
+#: lxc/storage.go:87
+msgid "create [<remote>:]<pool> <driver> [key=value]..."
+msgstr ""
+
+#: lxc/storage_volume.go:424
+msgid "create [<remote>:]<pool> <volume> [key=value]..."
+msgstr ""
+
+#: lxc/profile.go:295
+msgid "create [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/remote.go:453
+msgid "default"
+msgstr ""
+
+#: lxc/image_alias.go:103
+msgid "delete [<remote>:]<alias>"
+msgstr ""
+
+#: lxc/config_template.go:107
+msgid "delete [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/file.go:70
+msgid "delete [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...]"
+msgstr ""
+
+#: lxc/delete.go:27
+msgid ""
+"delete [<remote>:]<container>[/<snapshot>] [[<remote>:]<container>[/"
+"<snapshot>]...]"
+msgstr ""
+
+#: lxc/image.go:258
+msgid "delete [<remote>:]<image> [[<remote>:]<image>...]"
+msgstr ""
+
+#: lxc/network.go:317
+msgid "delete [<remote>:]<network>"
+msgstr ""
+
+#: lxc/operation.go:51
+msgid "delete [<remote>:]<operation>"
+msgstr ""
+
+#: lxc/storage.go:158
+msgid "delete [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:498
+msgid "delete [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:345
+msgid "delete [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/storage.go:431
+msgid "description"
+msgstr ""
+
+#: lxc/network.go:365
+msgid "detach [<remote>:]<network> <container> [device name]"
+msgstr ""
+
+#: lxc/storage_volume.go:559
+msgid "detach [<remote>:]<pool> <volume> <container> [device name]"
+msgstr ""
+
+#: lxc/storage_volume.go:641
+msgid "detach-profile [<remote:>]<pool> <volume> <profile> [device name]"
+msgstr ""
+
+#: lxc/network.go:450
+msgid "detach-profile [<remote>:]<network> <container> [device name]"
+msgstr ""
+
+#: lxc/config_device.go:22
+msgid "device"
+msgstr ""
+
+#: lxc/init.go:223
+msgid "didn't get any affected image, container or snapshot from server"
+msgstr ""
+
+#: lxc/image.go:819
+msgid "disabled"
+msgstr ""
+
+#: lxc/storage.go:430
+msgid "driver"
+msgstr ""
+
+#: lxc/config_template.go:150
+msgid "edit [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/file.go:120
+msgid "edit [<remote>:]<container>/<path>"
+msgstr ""
+
+#: lxc/image.go:310
+msgid "edit [<remote>:]<image>"
+msgstr ""
+
+#: lxc/network.go:535
+msgid "edit [<remote>:]<network>"
+msgstr ""
+
+#: lxc/storage.go:206
+msgid "edit [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:722
+msgid "edit [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:394
+msgid "edit [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/config.go:86 lxc/config_metadata.go:52
+msgid "edit [<remote>:][container]"
+msgstr ""
+
+#: lxc/image.go:821
+msgid "enabled"
+msgstr ""
+
+#: lxc/action.go:234
+#, c-format
+msgid "error: %v"
+msgstr ""
+
+#: lxc/exec.go:37
+msgid "exec [<remote>:]<container> [flags] [--] <command line>"
+msgstr ""
+
+#: lxc/image.go:433
+msgid "export [<remote>:]<image> [target]"
+msgstr ""
+
+#: lxc/file.go:38
+msgid "file"
+msgstr ""
+
+#: lxc/config_device.go:177
+msgid "get [<remote>:]<container|profile> <device> <key>"
+msgstr ""
+
+#: lxc/network.go:658
+msgid "get [<remote>:]<network> <key>"
+msgstr ""
+
+#: lxc/storage.go:326
+msgid "get [<remote>:]<pool> <key>"
+msgstr ""
+
+#: lxc/storage_volume.go:851
+msgid "get [<remote>:]<pool> <volume> <key>"
+msgstr ""
+
+#: lxc/profile.go:518
+msgid "get [<remote>:]<profile> <key>"
+msgstr ""
+
+#: lxc/config.go:287
+msgid "get [<remote>:][container] <key>"
+msgstr ""
+
+#: lxc/remote.go:378
+msgid "get-default"
+msgstr ""
+
+#: lxc/image.go:40
+msgid "image"
+msgstr ""
+
+#: lxc/image.go:569
+msgid ""
+"import <tarball>|<directory>|<URL> [<rootfs tarball>] [<remote>:] "
+"[key=value...]"
+msgstr ""
+
+#: lxc/storage.go:428
+msgid "info"
+msgstr ""
+
+#: lxc/image.go:774
+msgid "info [<remote>:]<image>"
+msgstr ""
+
+#: lxc/storage.go:381
+msgid "info [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/info.go:27
+msgid "info [<remote>:][<container>]"
+msgstr ""
+
+#: lxc/init.go:33
+msgid "init [<remote>:]<image> [<remote>:][<name>]"
 msgstr ""
 
 #: lxc/launch.go:20
+msgid "launch [<remote>:]<image> [<remote>:][<name>]"
+msgstr ""
+
+#: lxc/alias.go:96 lxc/remote.go:411
+msgid "list"
+msgstr ""
+
+#: lxc/cluster.go:56 lxc/config_trust.go:112 lxc/network.go:716
+#: lxc/operation.go:95 lxc/profile.go:565 lxc/storage.go:488
+msgid "list [<remote>:]"
+msgstr ""
+
+#: lxc/image.go:887
+msgid "list [<remote>:] [filter]"
+msgstr ""
+
+#: lxc/image_alias.go:146
+msgid "list [<remote>:] [filters...]"
+msgstr ""
+
+#: lxc/list.go:45
+msgid "list [<remote>:] [filters]"
+msgstr ""
+
+#: lxc/config_template.go:234
+msgid "list [<remote>:]<container>"
+msgstr ""
+
+#: lxc/config_device.go:249
+msgid "list [<remote>:]<container|profile>"
+msgstr ""
+
+#: lxc/storage_volume.go:915
+msgid "list [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/network.go:806
+msgid "list-leases [<remote>:]<network>"
+msgstr ""
+
+#: lxc/alias.go:57
 msgid ""
-"Usage: lxc launch [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
-"profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
-"<node>]\n"
-"\n"
-"Create and start containers from images.\n"
-"\n"
-"Not specifying -p will result in the default profile.\n"
-"Specifying \"-p\" with no argument will result in no profile.\n"
-"\n"
-"Examples:\n"
-"    lxc launch ubuntu:16.04 u1"
+"lxc alias add list list -c ns46S\n"
+"    Overwrite the \"list\" command to pass -c ns46S."
 msgstr ""
 
-#: lxc/list.go:44
+#: lxc/alias.go:200
 msgid ""
-"Usage: lxc list [<remote>:] [filters] [--format csv|json|table|yaml] [-c "
-"<columns>] [--fast]\n"
-"\n"
-"List the existing containers.\n"
-"\n"
-"Default column layout: ns46tS\n"
-"Fast column layout: nsacPt\n"
-"\n"
-"*Filters*\n"
-"A single keyword like \"web\" which will list any container with a name "
-"starting by \"web\".\n"
-"\n"
-"A regular expression on the container name. (e.g. .*web.*01$).\n"
-"\n"
-"A key/value pair referring to a configuration item. For those, the namespace "
-"can be abbreviated to the smallest unambiguous identifier.\n"
-"\t- \"user.blah=abc\" will list all containers with the \"blah\" user "
-"property set to \"abc\".\n"
-"\n"
-"\t- \"u.blah=abc\" will do the same\n"
-"\n"
-"\t- \"security.privileged=true\" will list all privileged containers\n"
-"\n"
-"\t- \"s.privileged=true\" will do the same\n"
-"\n"
-"A regular expression matching a configuration item or its value. (e.g. "
-"volatile.eth0.hwaddr=00:16:3e:.*).\n"
-"\n"
-"*Columns*\n"
-"The -c option takes a comma separated list of arguments that control\n"
-"which container attributes to output when displaying in table or csv\n"
-"format.\n"
-"\n"
-"Column arguments are either pre-defined shorthand chars (see below),\n"
-"or (extended) config keys.\n"
-"\n"
-"Commas between consecutive shorthand chars are optional.\n"
-"\n"
-"Pre-defined column shorthand chars:\n"
-"\n"
-"\t4 - IPv4 address\n"
-"\n"
-"\t6 - IPv6 address\n"
-"\n"
-"\ta - Architecture\n"
-"\n"
-"\tb - Storage pool\n"
-"\n"
-"\tc - Creation date\n"
-"\n"
-"\td - Description\n"
-"\n"
-"\tl - Last used date\n"
-"\n"
-"\tn - Name\n"
-"\n"
-"\tN - Number of Processes\n"
-"\n"
-"\tp - PID of the container's init process\n"
-"\n"
-"\tP - Profiles\n"
-"\n"
-"\ts - State\n"
-"\n"
-"\tS - Number of snapshots\n"
-"\n"
-"\tt - Type (persistent or ephemeral)\n"
-"\n"
-"\tL - Location of the container (e.g. its node)\n"
-"\n"
-"Custom columns are defined with \"key[:name][:maxWidth]\":\n"
-"\n"
-"\tKEY: The (extended) config key to display\n"
-"\n"
-"\tNAME: Name to display in the column header.\n"
-"\tDefaults to the key if not specified or empty.\n"
-"\n"
-"\tMAXWIDTH: Max width of the column (longer results are truncated).\n"
-"\tDefaults to -1 (unlimited). Use 0 to limit to the column header size.\n"
-"\n"
-"*Examples*\n"
-"lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:"
-"MAC\n"
-"\tShows a list of containers using the \"NAME\", \"BASE IMAGE\", \"STATE\", "
-"\"IPV4\",\n"
-"\t\"IPV6\" and \"MAC\" columns.\n"
+"lxc alias remove my-list\n"
+"    Remove the \"my-list\" alias."
+msgstr ""
+
+#: lxc/alias.go:149
+msgid ""
+"lxc alias rename list my-list\n"
+"    Rename existing alias \"list\" to \"my-list\"."
+msgstr ""
+
+#: lxc/config_device.go:78
+msgid ""
+"lxc config device add [<remote>:]container1 <device-name> disk source=/share/"
+"c1 path=opt\n"
+"    Will mount the host's /share/c1 onto /opt in the container."
+msgstr ""
+
+#: lxc/config.go:90
+msgid ""
+"lxc config edit <container> < container.yaml\n"
+"    Update the container configuration from config.yaml."
+msgstr ""
+
+#: lxc/config.go:357
+msgid ""
+"lxc config set [<remote>:]<container> limits.cpu 2\n"
+"    Will set a CPU limit of \"2\" for the container.\n"
 "\n"
-"\t\"BASE IMAGE\" and \"MAC\" are custom columns generated from container "
-"configuration keys.\n"
+"lxc config set core.https_address [::]:8443\n"
+"    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
 "\n"
-"lxc list -c ns,user.comment:comment\n"
-"\tList images with their running state and user comment. "
+"lxc config set core.trust_password blah\n"
+"    Will set the server's trust password to blah."
 msgstr ""
 
-#: lxc/manpage.go:20
+#: lxc/file.go:187
 msgid ""
-"Usage: lxc manpage <directory>\n"
-"\n"
-"Generate all the LXD manpages."
+"lxc file pull foo/etc/hosts .\n"
+"   To pull /etc/hosts from the container and write it to the current "
+"directory."
 msgstr ""
 
-#: lxc/monitor.go:49
+#: lxc/file.go:326
 msgid ""
-"Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
-"\n"
-"Monitor a local or remote LXD server.\n"
+"lxc file push /etc/hosts foo/etc/hosts\n"
+"   To push /etc/hosts into the container \"foo\"."
+msgstr ""
+
+#: lxc/image.go:314
+msgid ""
+"lxc image edit <image>\n"
+"    Launch a text editor to edit the properties\n"
 "\n"
-"By default the monitor will listen to all message types.\n"
+"lxc image edit <image> < image.yaml\n"
+"    Load the image properties from a YAML file"
+msgstr ""
+
+#: lxc/info.go:31
+msgid ""
+"lxc info [<remote>:]<container> [--show-log]\n"
+"    For container information.\n"
 "\n"
-"Message types to listen for can be specified with --type.\n"
+"lxc info [<remote>:] [--resources]\n"
+"    For LXD server information."
+msgstr ""
+
+#: lxc/init.go:37
+msgid "lxc init ubuntu:16.04 u1"
+msgstr ""
+
+#: lxc/launch.go:24
+msgid "lxc launch ubuntu:16.04 u1"
+msgstr ""
+
+#: lxc/list.go:103
+msgid ""
+"lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:"
+"MAC\n"
+"  Show containers using the \"NAME\", \"BASE IMAGE\", \"STATE\", \"IPV4\", "
+"\"IPV6\" and \"MAC\" columns.\n"
+"  \"BASE IMAGE\" and \"MAC\" are custom columns generated from container "
+"configuration keys.\n"
 "\n"
-"*Examples*\n"
+"lxc list -c ns,user.comment:comment\n"
+"  List images with their running state and user comment."
+msgstr ""
+
+#: lxc/monitor.go:35
+msgid ""
 "lxc monitor --type=logging\n"
 "    Only show log messages.\n"
 "\n"
 "lxc monitor --pretty --type=logging --loglevel=info\n"
 "    Show a pretty log of messages with info level or higher.\n"
+"\n"
+"lxc monitor --type=lifecycle\n"
+"    Only show lifecycle events."
 msgstr ""
 
-#: lxc/move.go:26
+#: lxc/move.go:33
 msgid ""
-"Usage: lxc move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
-"<snapshot>]] [--container-only] [--target <node>]\n"
-"\n"
-"Move containers within or in between LXD instances.\n"
-"\n"
 "lxc move [<remote>:]<source container> [<remote>:][<destination container>] "
 "[--container-only]\n"
 "    Move a container between two hosts, renaming it if destination name "
@@ -1946,160 +2837,14 @@ msgid ""
 "    Rename a snapshot."
 msgstr ""
 
-#: lxc/network.go:52
-msgid ""
-"Usage: lxc network <subcommand> [options]\n"
-"\n"
-"Manage and attach containers to networks.\n"
-"\n"
-"lxc network list [<remote>:]\n"
-"    List available networks.\n"
-"\n"
-"lxc network list-leases [<remote>:]<network>\n"
-"    List the DHCP leases for the network\n"
-"\n"
-"lxc network show [<remote>:]<network> [--target <node>]\n"
-"    Show details of a network.\n"
-"\n"
-"lxc network create [<remote>:]<network> [key=value...] [--target <node>]\n"
-"    Create a network.\n"
-"\n"
-"lxc network get [<remote>:]<network> <key> [--target <node>]\n"
-"    Get network configuration.\n"
-"\n"
-"lxc network set [<remote>:]<network> <key> <value>\n"
-"    Set network configuration.\n"
-"\n"
-"lxc network unset [<remote>:]<network> <key>\n"
-"    Unset network configuration.\n"
-"\n"
-"lxc network delete [<remote>:]<network>\n"
-"    Delete a network.\n"
-"\n"
-"lxc network edit [<remote>:]<network>\n"
-"    Edit network, either by launching external editor or reading STDIN.\n"
-"\n"
-"lxc network rename [<remote>:]<network> <new-name>\n"
-"    Rename a network.\n"
-"\n"
-"lxc network attach [<remote>:]<network> <container> [device name] [interface "
-"name]\n"
-"    Attach a network interface connecting the network to a specified "
-"container.\n"
-"\n"
-"lxc network attach-profile [<remote>:]<network> <profile> [device name] "
-"[interface name]\n"
-"    Attach a network interface connecting the network to a specified "
-"profile.\n"
-"\n"
-"lxc network detach [<remote>:]<network> <container> [device name]\n"
-"    Remove a network interface connecting the network to a specified "
-"container.\n"
-"\n"
-"lxc network detach-profile [<remote>:]<network> <container> [device name]\n"
-"    Remove a network interface connecting the network to a specified "
-"profile.\n"
-"\n"
-"*Examples*\n"
-"cat network.yaml | lxc network edit <network>\n"
-"    Update a network using the content of network.yaml"
-msgstr ""
-
-#: lxc/operation.go:25
+#: lxc/operation.go:176
 msgid ""
-"Usage: lxc operation <subcommand> [options]\n"
-"\n"
-"List, show and delete background operations.\n"
-"\n"
-"lxc operation list [<remote>:]\n"
-"    List background operations.\n"
-"\n"
-"lxc operation show [<remote>:]<operation>\n"
-"    Show details on a background operation.\n"
-"\n"
-"lxc operation delete [<remote>:]<operation>\n"
-"    Delete a background operation (will attempt to cancel).\n"
-"\n"
-"*Examples*\n"
 "lxc operation show 344a79e4-d88a-45bf-9c39-c72c26f6ab8a\n"
 "    Show details on that operation UUID"
 msgstr ""
 
-#: lxc/profile.go:51
+#: lxc/profile.go:165
 msgid ""
-"Usage: lxc profile <subcommand> [options]\n"
-"\n"
-"Manage container configuration profiles.\n"
-"\n"
-"*Profile configuration*\n"
-"lxc profile list [<remote>:]\n"
-"    List available profiles.\n"
-"\n"
-"lxc profile show [<remote>:]<profile>\n"
-"    Show details of a profile.\n"
-"\n"
-"lxc profile create [<remote>:]<profile>\n"
-"    Create a profile.\n"
-"\n"
-"lxc profile copy [<remote>:]<profile> [<remote>:]<profile>\n"
-"    Copy the profile.\n"
-"\n"
-"lxc profile get [<remote>:]<profile> <key>\n"
-"    Get profile configuration.\n"
-"\n"
-"lxc profile set [<remote>:]<profile> <key> <value>\n"
-"    Set profile configuration.\n"
-"\n"
-"lxc profile unset [<remote>:]<profile> <key>\n"
-"    Unset profile configuration.\n"
-"\n"
-"lxc profile delete [<remote>:]<profile>\n"
-"    Delete a profile.\n"
-"\n"
-"lxc profile edit [<remote>:]<profile>\n"
-"    Edit profile, either by launching external editor or reading STDIN.\n"
-"\n"
-"lxc profile rename [<remote>:]<profile> <new-name>\n"
-"    Rename a profile.\n"
-"\n"
-"*Profile assignment*\n"
-"lxc profile assign [<remote>:]<container> <profiles>\n"
-"    Replace the current set of profiles for the container by the one "
-"provided.\n"
-"\n"
-"lxc profile add [<remote>:]<container> <profile>\n"
-"    Add a profile to a container\n"
-"\n"
-"lxc profile remove [<remote>:]<container> <profile>\n"
-"    Remove the profile from a container\n"
-"\n"
-"*Device management*\n"
-"lxc profile device list [<remote>:]<profile>\n"
-"    List devices in the given profile.\n"
-"\n"
-"lxc profile device show [<remote>:]<profile>\n"
-"    Show full device details in the given profile.\n"
-"\n"
-"lxc profile device remove [<remote>:]<profile> <name>\n"
-"    Remove a device from a profile.\n"
-"\n"
-"lxc profile device get [<remote>:]<profile> <name> <key>\n"
-"    Get a device property.\n"
-"\n"
-"lxc profile device set [<remote>:]<profile> <name> <key> <value>\n"
-"    Set a device property.\n"
-"\n"
-"lxc profile device unset [<remote>:]<profile> <name> <key>\n"
-"    Unset a device property.\n"
-"\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.\n"
-"\n"
-"*Examples*\n"
-"cat profile.yaml | lxc profile edit <profile>\n"
-"    Update a profile using the content of profile.yaml\n"
-"\n"
 "lxc profile assign foo default,bar\n"
 "    Set the profiles for \"foo\" to \"default\" and \"bar\".\n"
 "\n"
@@ -2110,72 +2855,26 @@ msgid ""
 "    Remove all profile from \"foo\""
 msgstr ""
 
-#: lxc/publish.go:28
+#: lxc/profile.go:398
 msgid ""
-"Usage: lxc publish [<remote>:]<container>[/<snapshot>] [<remote>:] [--"
-"alias=ALIAS...] [prop-key=prop-value...]\n"
-"\n"
-"Publish containers as images."
+"lxc profile edit <profile> < profile.yaml\n"
+"    Update a profile using the content of profile.yaml"
 msgstr ""
 
-#: lxc/query.go:25
+#: lxc/query.go:29
 msgid ""
-"Usage: lxc query [-X <action>] [-d <data>] [--wait] [--raw] [<remote>:]<API "
-"path>\n"
-"\n"
-"Send a raw query to LXD.\n"
-"\n"
-"*Examples*\n"
 "lxc query -X DELETE --wait /1.0/containers/c1\n"
 "    Delete local container \"c1\"."
 msgstr ""
 
-#: lxc/remote.go:40
-msgid ""
-"Usage: lxc remote <subcommand> [options]\n"
-"\n"
-"Manage the list of remote LXD servers.\n"
-"\n"
-"lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--"
-"password=PASSWORD] [--public] [--protocol=PROTOCOL] [--auth-type=AUTH_TYPE]\n"
-"    Add the remote <remote> at <url>.\n"
-"\n"
-"lxc remote remove <remote>\n"
-"    Remove the remote <remote>.\n"
-"\n"
-"lxc remote list\n"
-"    List all remotes.\n"
-"\n"
-"lxc remote rename <old name> <new name>\n"
-"    Rename remote <old name> to <new name>.\n"
-"\n"
-"lxc remote set-url <remote> <url>\n"
-"    Update <remote>'s url to <url>.\n"
-"\n"
-"lxc remote set-default <remote>\n"
-"    Set the default remote.\n"
-"\n"
-"lxc remote get-default\n"
-"    Print the default remote."
-msgstr ""
-
-#: lxc/rename.go:18
+#: lxc/snapshot.go:26
 msgid ""
-"Usage: lxc rename [<remote>:]<container>[/<snapshot>] [<container>[/"
-"<snapshot>]]\n"
-"\n"
-"Rename a container or snapshot."
+"lxc snapshot u1 snap0\n"
+"    Create a snapshot of \"u1\" called \"snap0\"."
 msgstr ""
 
-#: lxc/restore.go:22
+#: lxc/restore.go:28
 msgid ""
-"Usage: lxc restore [<remote>:]<container> <snapshot> [--stateful]\n"
-"\n"
-"Restore containers from snapshots.\n"
-"\n"
-"If --stateful is passed, then the running state will be restored too.\n"
-"\n"
-"*Examples*\n"
 "lxc snapshot u1 snap0\n"
 "    Create the snapshot.\n"
 "\n"
@@ -2183,121 +2882,20 @@ msgid ""
 "    Restore the snapshot."
 msgstr ""
 
-#: lxc/snapshot.go:19
+#: lxc/storage.go:210
 msgid ""
-"Usage: lxc snapshot [<remote>:]<container> <snapshot name> [--stateful]\n"
-"\n"
-"Create container snapshots.\n"
-"\n"
-"When --stateful is used, LXD attempts to checkpoint the container's\n"
-"running state, including process memory state, TCP connections, ...\n"
-"\n"
-"*Examples*\n"
-"lxc snapshot u1 snap0\n"
-"    Create a snapshot of \"u1\" called \"snap0\"."
+"lxc storage edit [<remote>:]<pool> < pool.yaml\n"
+"    Update a storage pool using the content of pool.yaml."
 msgstr ""
 
-#: lxc/storage.go:67
+#: lxc/storage_volume.go:726
+msgid ""
+"lxc storage volume edit [<remote>:]<pool> <volume> < volume.yaml\n"
+"    Update a storage volume using the content of pool.yaml."
+msgstr ""
+
+#: lxc/storage_volume.go:1168
 msgid ""
-"Usage: lxc storage <subcommand> [options]\n"
-"\n"
-"Manage storage pools and volumes.\n"
-"\n"
-"*Storage pools*\n"
-"lxc storage list [<remote>:]\n"
-"    List available storage pools.\n"
-"\n"
-"lxc storage show [<remote>:]<pool> [--resources] [--target <node>]\n"
-"    Show details of a storage pool.\n"
-"\n"
-"lxc storage info [<remote>:]<pool> [--bytes]\n"
-"    Show information of a storage pool in yaml format.\n"
-"\n"
-"lxc storage create [<remote>:]<pool> <driver> [key=value]... [--target "
-"<node>]\n"
-"    Create a storage pool.\n"
-"\n"
-"lxc storage get [<remote>:]<pool> <key>\n"
-"    Get storage pool configuration.\n"
-"\n"
-"lxc storage set [<remote>:]<pool> <key> <value>\n"
-"    Set storage pool configuration.\n"
-"\n"
-"lxc storage unset [<remote>:]<pool> <key>\n"
-"    Unset storage pool configuration.\n"
-"\n"
-"lxc storage delete [<remote>:]<pool>\n"
-"    Delete a storage pool.\n"
-"\n"
-"lxc storage edit [<remote>:]<pool>\n"
-"    Edit storage pool, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"*Storage volumes*\n"
-"lxc storage volume list [<remote>:]<pool>\n"
-"    List available storage volumes on a storage pool.\n"
-"\n"
-"lxc storage volume show [<remote>:]<pool> <volume> [--target <node>]\n"
-"   Show details of a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume create [<remote>:]<pool> <volume> [key=value]... [--"
-"target <node>]\n"
-"    Create a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume rename [<remote>:]<pool> <old name> <new name> [--target "
-"<node>]\n"
-"    Rename a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume get [<remote>:]<pool> <volume> <key> [--target <node>]\n"
-"    Get storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume set [<remote>:]<pool> <volume> <key> <value> [--target "
-"<node>]\n"
-"    Set storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume unset [<remote>:]<pool> <volume> <key> [--target <node>]\n"
-"    Unset storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume delete [<remote>:]<pool> <volume> [--target <node>]\n"
-"    Delete a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume edit [<remote>:]<pool> <volume> [--target <node>]\n"
-"    Edit storage volume, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"lxc storage volume attach [<remote>:]<pool> <volume> <container> [device "
-"name] <path>\n"
-"    Attach a storage volume to the specified container.\n"
-"\n"
-"lxc storage volume attach-profile [<remote:>]<pool> <volume> <profile> "
-"[device name] <path>\n"
-"    Attach a storage volume to the specified profile.\n"
-"\n"
-"lxc storage volume detach [<remote>:]<pool> <volume> <container> [device "
-"name]\n"
-"    Detach a storage volume from the specified container.\n"
-"\n"
-"lxc storage volume detach-profile [<remote:>]<pool> <volume> <profile> "
-"[device name]\n"
-"\tDetach a storage volume from the specified profile.\n"
-"\n"
-"lxc storage volume copy <pool>/<volume> <pool>/<volume> [--config|-c "
-"<key=value>...]\n"
-"    Copy an existing volume to a new volume at the specified pool.\n"
-"\n"
-"lxc storage volume move [<pool>/]<volume> [<pool>/]<volume>\n"
-"    Move an existing volume to the specified pool.\n"
-"\n"
-"Unless specified through a prefix, all volume operations affect \"custom"
-"\" (user created) volumes.\n"
-"\n"
-"*Examples*\n"
-"cat pool.yaml | lxc storage edit [<remote>:]<pool>\n"
-"    Update a storage pool using the content of pool.yaml.\n"
-"\n"
-"cat pool.yaml | lxc storage volume edit [<remote>:]<pool> <volume>\n"
-"    Update a storage volume using the content of pool.yaml.\n"
-"\n"
 "lxc storage volume show default data\n"
 "    Will show the properties of a custom volume called \"data\" in the "
 "\"default\" pool.\n"
@@ -2307,191 +2905,303 @@ msgid ""
 "\" in the \"default\" pool."
 msgstr ""
 
-#: lxc/version.go:18
+#: lxc/config_metadata.go:27
+msgid "metadata"
+msgstr ""
+
+#: lxc/monitor.go:29
+msgid "monitor [<remote>:]"
+msgstr ""
+
+#: lxc/storage_volume.go:991
+msgid "move [<pool>/]<volume> [<pool>/]<volume>"
+msgstr ""
+
+#: lxc/move.go:28
 msgid ""
-"Usage: lxc version\n"
-"\n"
-"Print the version number of this client tool."
+"move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
+"<snapshot>]]"
 msgstr ""
 
-#: lxc/delete.go:46
-msgid "User aborted delete operation."
+#: lxc/storage.go:429
+msgid "name"
 msgstr ""
 
-#: lxc/utils/cancel.go:40
+#: lxc/network.go:30
+msgid "network"
+msgstr ""
+
+#: lxc/image.go:809 lxc/image.go:814 lxc/image.go:977
+msgid "no"
+msgstr ""
+
+#: lxc/remote.go:253
+msgid "ok (y/n)?"
+msgstr ""
+
+#: lxc/operation.go:23
+msgid "operation"
+msgstr ""
+
+#: lxc/config_device.go:316
+msgid "override [<remote>:]<container> <device> [key=value...]"
+msgstr ""
+
+#: lxc/action.go:47
+msgid "pause [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/config.go:52
+msgid "please use `lxc profile`"
+msgstr ""
+
+#: lxc/profile.go:28
+msgid "profile"
+msgstr ""
+
+#: lxc/publish.go:32
 msgid ""
-"User signaled us three times, exiting. The remote operation will keep "
-"running."
+"publish [<remote>:]<container>[/<snapshot>] [<remote>:] [flags] [prop-"
+"key=prop-value...]"
 msgstr ""
 
-#: lxc/query.go:36
-msgid "Wait for the operation to complete"
+#: lxc/file.go:183
+msgid ""
+"pull [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...] "
+"<target path>"
 msgstr ""
 
-#: lxc/restore.go:38
+#: lxc/file.go:322
 msgid ""
-"Whether or not to restore the container's running state from snapshot (if "
-"available)"
+"push <source path> [<remote>:]<container>/<path> [[<remote>:]<container>/"
+"<path>...]"
 msgstr ""
 
-#: lxc/snapshot.go:33
-msgid "Whether or not to snapshot the container's running state"
+#: lxc/query.go:25
+msgid "query [<remote>:]<API path>"
 msgstr ""
 
-#: lxc/network.go:560 lxc/operation.go:141 lxc/remote.go:382 lxc/remote.go:387
-msgid "YES"
+#: lxc/image.go:1210
+msgid "refresh [<remote>:]<image> [[<remote>:]<image>...]"
 msgstr ""
 
-#: lxc/exec.go:132
-msgid "You can't pass -t and -T at the same time"
+#: lxc/remote.go:32
+msgid "remote"
 msgstr ""
 
-#: lxc/exec.go:136
-msgid "You can't pass -t or -T at the same time as --mode"
+#: lxc/alias.go:195
+msgid "remove <alias>"
 msgstr ""
 
-#: lxc/copy.go:76
-msgid "You must specify a destination container name when using --target"
+#: lxc/remote.go:546
+msgid "remove <remote>"
 msgstr ""
 
-#: lxc/copy.go:71
-msgid "You must specify a source container name"
+#: lxc/config_trust.go:194
+msgid "remove [<remote>:] <hostname|fingerprint>"
 msgstr ""
 
-#: lxc/copy.go:66 lxc/move.go:71
-msgid "You must use the same source and destination remote when using --target"
+#: lxc/profile.go:630
+msgid "remove [<remote>:]<container> <profile>"
 msgstr ""
 
-#: lxc/main.go:72
-msgid "`lxc config profile` is deprecated, please use `lxc profile`"
+#: lxc/config_device.go:402
+msgid "remove [<remote>:]<container|profile> <name>..."
 msgstr ""
 
-#: lxc/alias.go:56 lxc/alias.go:102
-#, c-format
-msgid "alias %s already exists"
+#: lxc/cluster.go:235
+msgid "remove [<remote>:]<member>"
 msgstr ""
 
-#: lxc/alias.go:68 lxc/alias.go:97
-#, c-format
-msgid "alias %s doesn't exist"
+#: lxc/alias.go:144
+msgid "rename <old alias> <new alias>"
 msgstr ""
 
-#: lxc/remote.go:370
-msgid "can't remove the default remote"
+#: lxc/remote.go:484
+msgid "rename <remote> <new-name>"
 msgstr ""
 
-#: lxc/file.go:296
-msgid "can't supply uid/gid/mode in recursive mode"
+#: lxc/image_alias.go:247
+msgid "rename [<remote>:]<alias> <new-name>"
 msgstr ""
 
-#: lxc/remote.go:399
-msgid "default"
+#: lxc/rename.go:18
+msgid "rename [<remote>:]<container>[/<snapshot>] <container>[/<snapshot>]"
 msgstr ""
 
-#: lxc/storage.go:856
-msgid "description"
+#: lxc/cluster.go:189
+msgid "rename [<remote>:]<member> <new-name>"
 msgstr ""
 
-#: lxc/init.go:315
-msgid "didn't get any affected image, container or snapshot from server"
+#: lxc/network.go:870
+msgid "rename [<remote>:]<network> <new-name>"
 msgstr ""
 
-#: lxc/image.go:594
-msgid "disabled"
+#: lxc/storage_volume.go:1023
+msgid "rename [<remote>:]<pool> <old name> <new name>"
 msgstr ""
 
-#: lxc/storage.go:855
-msgid "driver"
+#: lxc/profile.go:702
+msgid "rename [<remote>:]<profile> <new-name>"
 msgstr ""
 
-#: lxc/image.go:596
-msgid "enabled"
+#: lxc/action.go:67
+msgid "restart [<remote>:]<container> [[<remote>:]<container>...]"
 msgstr ""
 
-#: lxc/action.go:155 lxc/main.go:33 lxc/main.go:191
-#, c-format
-msgid "error: %v"
+#: lxc/restore.go:22
+msgid "restore [<remote>:]<container> <snapshot>"
 msgstr ""
 
-#: lxc/help.go:37 lxc/main.go:133
-#, c-format
-msgid "error: unknown command: %s"
+#: lxc/config_device.go:491
+msgid "set [<remote>:]<container|profile> <device> <key> <value>"
 msgstr ""
 
-#: lxc/storage.go:853
-msgid "info"
+#: lxc/network.go:918
+msgid "set [<remote>:]<network> <key> <value>"
 msgstr ""
 
-#: lxc/storage.go:854
-msgid "name"
+#: lxc/storage.go:571
+msgid "set [<remote>:]<pool> <key> <value>"
 msgstr ""
 
-#: lxc/image.go:210 lxc/image.go:584 lxc/image.go:589
-msgid "no"
+#: lxc/storage_volume.go:1087
+msgid "set [<remote>:]<pool> <volume> <key> <value>"
 msgstr ""
 
-#: lxc/remote.go:204
-msgid "ok (y/n)?"
+#: lxc/profile.go:751
+msgid "set [<remote>:]<profile> <key> <value>"
 msgstr ""
 
-#: lxc/main.go:368 lxc/main.go:372
-#, c-format
-msgid "processing aliases failed %s\n"
+#: lxc/config.go:353
+msgid "set [<remote>:][container] <key> <value>"
 msgstr ""
 
-#: lxc/file.go:588
-msgid "recursive edit doesn't make sense :("
+#: lxc/remote.go:596
+msgid "set-default <remote>"
 msgstr ""
 
-#: lxc/remote.go:436
-#, c-format
-msgid "remote %s already exists"
+#: lxc/remote.go:634
+msgid "set-url <remote> <URL>"
 msgstr ""
 
-#: lxc/remote.go:362 lxc/remote.go:428 lxc/remote.go:463 lxc/remote.go:479
-#, c-format
-msgid "remote %s doesn't exist"
+#: lxc/config_template.go:296
+msgid "show [<remote>:]<container> <template>"
 msgstr ""
 
-#: lxc/remote.go:345
-#, c-format
-msgid "remote %s exists as <%s>"
+#: lxc/config_device.go:580
+msgid "show [<remote>:]<container|profile>"
 msgstr ""
 
-#: lxc/remote.go:366 lxc/remote.go:432 lxc/remote.go:467
-#, c-format
-msgid "remote %s is static and cannot be modified"
+#: lxc/image.go:1283
+msgid "show [<remote>:]<image>"
+msgstr ""
+
+#: lxc/cluster.go:140
+msgid "show [<remote>:]<member>"
+msgstr ""
+
+#: lxc/network.go:987
+msgid "show [<remote>:]<network>"
+msgstr ""
+
+#: lxc/operation.go:172
+msgid "show [<remote>:]<operation>"
+msgstr ""
+
+#: lxc/storage.go:643
+msgid "show [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:1164
+msgid "show [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:810
+msgid "show [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/config.go:450 lxc/config_metadata.go:174
+msgid "show [<remote>:][container]"
+msgstr ""
+
+#: lxc/snapshot.go:19
+msgid "snapshot [<remote>:]<container> <snapshot name>"
 msgstr ""
 
-#: lxc/storage.go:858
+#: lxc/storage.go:433
 msgid "space used"
 msgstr ""
 
-#: lxc/info.go:251
+#: lxc/action.go:28
+msgid "start [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/info.go:255
 msgid "stateful"
 msgstr ""
 
-#: lxc/info.go:253
+#: lxc/info.go:257
 msgid "stateless"
 msgstr ""
 
-#: lxc/info.go:247
+#: lxc/action.go:89
+msgid "stop [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/storage.go:31
+msgid "storage"
+msgstr ""
+
+#: lxc/info.go:251
 #, c-format
 msgid "taken at %s"
 msgstr ""
 
-#: lxc/storage.go:857
+#: lxc/config_template.go:28
+msgid "template"
+msgstr ""
+
+#: lxc/storage.go:432
 msgid "total space"
 msgstr ""
 
-#: lxc/storage.go:852
+#: lxc/config_trust.go:28
+msgid "trust"
+msgstr ""
+
+#: lxc/config_device.go:648
+msgid "unset [<remote>:]<container|profile> <device> <key>"
+msgstr ""
+
+#: lxc/network.go:1049
+msgid "unset [<remote>:]<network> <key>"
+msgstr ""
+
+#: lxc/storage.go:727
+msgid "unset [<remote>:]<pool> <key>"
+msgstr ""
+
+#: lxc/storage_volume.go:1239
+msgid "unset [<remote>:]<pool> <volume> <key>"
+msgstr ""
+
+#: lxc/profile.go:864
+msgid "unset [<remote>:]<profile> <key>"
+msgstr ""
+
+#: lxc/config.go:558
+msgid "unset [<remote>:][container] <key>"
+msgstr ""
+
+#: lxc/storage.go:427
 msgid "used by"
 msgstr ""
 
-#: lxc/main.go:299
-msgid "wrong number of subcommand arguments"
+#: lxc/storage_volume.go:32
+msgid "volume"
 msgstr ""
 
-#: lxc/delete.go:45 lxc/image.go:208 lxc/image.go:586 lxc/image.go:591
+#: lxc/delete.go:46 lxc/image.go:811 lxc/image.go:816 lxc/image.go:975
 msgid "yes"
 msgstr ""
diff --git a/po/fr.po b/po/fr.po
index a9007fef5..4c80dbe44 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -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: 2018-02-27 22:14-0500\n"
+"POT-Creation-Date: 2018-03-29 01:45-0400\n"
 "PO-Revision-Date: 2018-01-02 10:52+0000\n"
 "Last-Translator: Bruno Perel <brunoperel at gmail.com>\n"
 "Language-Team: French <https://hosted.weblate.org/projects/linux-containers/"
@@ -19,7 +19,7 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=n > 1;\n"
 "X-Generator: Weblate 2.19-dev\n"
 
-#: lxc/storage.go:36
+#: lxc/storage.go:220
 #, fuzzy
 msgid ""
 "### This is a yaml representation of a storage pool.\n"
@@ -51,7 +51,7 @@ msgstr ""
 "###   source: /home/chb/mnt/lxd_test/default.img\n"
 "###   zfs.pool_name: default"
 
-#: lxc/storage.go:53
+#: lxc/storage_volume.go:737
 #, fuzzy
 msgid ""
 "### This is a yaml representation of a storage volume.\n"
@@ -72,7 +72,7 @@ msgstr ""
 "### Un exemple serait :\n"
 "###  description: Mon image personnalisée"
 
-#: lxc/config.go:40
+#: lxc/config.go:100
 msgid ""
 "### This is a yaml representation of the configuration.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -110,7 +110,7 @@ msgstr ""
 "###\n"
 "### Notez que le nom est affiché mais ne peut être modifié"
 
-#: lxc/config.go:61
+#: lxc/config_metadata.go:63
 #, fuzzy
 msgid ""
 "### This is a yaml representation of the container metadata.\n"
@@ -152,7 +152,7 @@ msgstr ""
 "###\n"
 "### Notez que le nom est affiché mais ne peut être modifié"
 
-#: lxc/image.go:63
+#: lxc/image.go:327
 msgid ""
 "### This is a yaml representation of the image properties.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -168,7 +168,7 @@ msgstr ""
 "### Un exemple serait :\n"
 "###  description: Mon image personnalisée"
 
-#: lxc/network.go:32
+#: lxc/network.go:546
 msgid ""
 "### This is a yaml representation of the network.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -205,7 +205,7 @@ msgstr ""
 "###\n"
 "### Notez que seule la configuration peut être modifiée."
 
-#: lxc/profile.go:30
+#: lxc/profile.go:408
 msgid ""
 "### This is a yaml representation of the profile.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -242,12 +242,12 @@ msgstr ""
 "###\n"
 "### Notez que le nom est affiché mais ne peut être modifié"
 
-#: lxc/image.go:187
+#: lxc/image.go:954
 #, c-format
 msgid "%s (%d more)"
 msgstr "%s (%d de plus)"
 
-#: lxc/file.go:205
+#: lxc/file.go:677
 #, c-format
 msgid "%s is not a directory"
 msgstr "%s n'est pas un répertoire"
@@ -257,454 +257,863 @@ msgstr "%s n'est pas un répertoire"
 msgid "%v (interrupt two more times to force)"
 msgstr "%v (interrompre encore deux fois pour forcer)"
 
-#: lxc/file.go:142
+#: lxc/file.go:614
 #, c-format
 msgid "'%s' isn't a supported file type."
 msgstr "'%s' n'est pas un format de fichier pris en charge."
 
-#: lxc/profile.go:337
+#: lxc/profile.go:222
 msgid "(none)"
 msgstr "(aucun)"
 
-#: lxc/alias.go:84 lxc/image.go:231 lxc/image.go:1136
+#: lxc/alias.go:127 lxc/image.go:921 lxc/image_alias.go:228
 msgid "ALIAS"
 msgstr "ALIAS"
 
-#: lxc/image.go:232
+#: lxc/image.go:922
 #, fuzzy
 msgid "ALIASES"
 msgstr "ALIAS"
 
-#: lxc/image.go:236
+#: lxc/image.go:926
 msgid "ARCH"
 msgstr "ARCH"
 
-#: lxc/list.go:467
+#: lxc/list.go:464
 msgid "ARCHITECTURE"
 msgstr "ARCHITECTURE"
 
-#: lxc/remote.go:412
+#: lxc/remote.go:466
 #, fuzzy
 msgid "AUTH TYPE"
 msgstr "TYPE"
 
-#: lxc/remote.go:68
+#: lxc/remote.go:88
 msgid "Accept certificate"
 msgstr "Accepter le certificat"
 
-#: lxc/query.go:38
+#: lxc/query.go:37
 msgid "Action (defaults to GET)"
 msgstr ""
 
-#: lxc/remote.go:276
+#: lxc/config_device.go:75 lxc/config_device.go:76
+msgid "Add devices to containers or profiles"
+msgstr ""
+
+#: lxc/alias.go:54 lxc/alias.go:55
+#, fuzzy
+msgid "Add new aliases"
+msgstr "Alias :"
+
+#: lxc/remote.go:83 lxc/remote.go:84
+msgid "Add new remote servers"
+msgstr ""
+
+#: lxc/config_trust.go:58 lxc/config_trust.go:59
+msgid "Add new trusted clients"
+msgstr ""
+
+#: lxc/profile.go:101 lxc/profile.go:102
+#, fuzzy
+msgid "Add profiles to containers"
+msgstr "Création du conteneur"
+
+#: lxc/remote.go:325
 #, c-format
 msgid "Admin password for %s: "
 msgstr "Mot de passe administrateur pour %s : "
 
-#: lxc/image.go:623
+#: lxc/alias.go:78 lxc/alias.go:176
+#, fuzzy, c-format
+msgid "Alias %s already exists"
+msgstr "le serveur distant %s existe déjà"
+
+#: lxc/alias.go:170 lxc/alias.go:221
+#, fuzzy, c-format
+msgid "Alias %s doesn't exist"
+msgstr "le serveur distant %s n'existe pas"
+
+#: lxc/image_alias.go:83 lxc/image_alias.go:130 lxc/image_alias.go:274
+msgid "Alias name missing"
+msgstr ""
+
+#: lxc/image.go:854
 msgid "Aliases:"
 msgstr "Alias :"
 
-#: lxc/image.go:601 lxc/info.go:125
+#: lxc/image.go:826 lxc/info.go:129
 #, c-format
 msgid "Architecture: %s"
 msgstr "Architecture : %s"
 
-#: lxc/remote.go:259
+#: lxc/profile.go:162 lxc/profile.go:163
+msgid "Assign sets of profiles to containers"
+msgstr ""
+
+#: lxc/network.go:103
+msgid "Attach network interfaces to containers"
+msgstr ""
+
+#: lxc/network.go:176 lxc/network.go:177
+msgid "Attach network interfaces to profiles"
+msgstr ""
+
+#: lxc/network.go:104
+msgid "Attach new network interfaces to containers"
+msgstr ""
+
+#: lxc/storage_volume.go:121 lxc/storage_volume.go:122
+msgid "Attach new storage volumes to containers"
+msgstr ""
+
+#: lxc/storage_volume.go:200 lxc/storage_volume.go:201
+msgid "Attach new storage volumes to profiles"
+msgstr ""
+
+#: lxc/console.go:31
+#, fuzzy
+msgid "Attach to container consoles"
+msgstr "Forcer l'arrêt du conteneur (seulement pour stop)"
+
+#: lxc/console.go:32
+msgid ""
+"Attach to container consoles\n"
+"\n"
+"This command allows you to interact with the boot console of a container\n"
+"as well as retrieve past log entries from it."
+msgstr ""
+
+#: lxc/remote.go:308
 #, c-format
 msgid "Authentication type '%s' not supported by server"
 msgstr "Le type d'authentification '%s' n'est pas supporté par le serveur"
 
-#: lxc/image.go:632
+#: lxc/image.go:864
 #, c-format
 msgid "Auto update: %s"
 msgstr "Mise à jour auto. : %s"
 
-#: lxc/image.go:707
+#: lxc/network.go:283
+#, c-format
+msgid "Bad key/value pair: %s"
+msgstr ""
+
+#: lxc/copy.go:110 lxc/init.go:118 lxc/publish.go:175 lxc/storage.go:123
+#: lxc/storage_volume.go:468
+#, c-format
+msgid "Bad key=value pair: %s"
+msgstr ""
+
+#: lxc/image.go:677
 #, c-format
 msgid "Bad property: %s"
 msgstr ""
 
-#: lxc/action.go:133
+#: lxc/action.go:212
 msgid "Both --all and container name given"
 msgstr ""
 
-#: lxc/info.go:218
+#: lxc/info.go:222
 msgid "Bytes received"
 msgstr "Octets reçus"
 
-#: lxc/info.go:219
+#: lxc/info.go:223
 msgid "Bytes sent"
 msgstr "Octets émis"
 
-#: lxc/operation.go:156
+#: lxc/operation.go:155
 msgid "CANCELABLE"
 msgstr ""
 
-#: lxc/config.go:403
+#: lxc/config_trust.go:175
 msgid "COMMON NAME"
 msgstr "COMMON NAME"
 
-#: lxc/info.go:182
+#: lxc/info.go:186
 msgid "CPU usage (in seconds)"
 msgstr "CPU utilisé (en secondes)"
 
-#: lxc/info.go:186
+#: lxc/info.go:190
 msgid "CPU usage:"
 msgstr "CPU utilisé :"
 
-#: lxc/operation.go:157
+#: lxc/operation.go:156
 #, fuzzy
 msgid "CREATED"
 msgstr "CRÉÉ À"
 
-#: lxc/list.go:468
+#: lxc/list.go:465
 msgid "CREATED AT"
 msgstr "CRÉÉ À"
 
-#: lxc/image.go:631
+#: lxc/image.go:863
 #, fuzzy, c-format
 msgid "Cached: %s"
 msgstr "Créé : %s"
 
-#: lxc/file.go:501
+#: lxc/image.go:175
+msgid "Can't provide a name for the target image"
+msgstr ""
+
+#: lxc/file.go:261
 #, fuzzy
 msgid "Can't pull a directory without --recursive"
 msgstr "impossible de récupérer un répertoire sans --recursive"
 
-#: lxc/config.go:210 lxc/network.go:619
+#: lxc/config.go:400 lxc/network.go:969
 #, c-format
 msgid "Can't read from stdin: %s"
 msgstr "Impossible de lire depuis stdin : %s"
 
-#: lxc/rename.go:41
+#: lxc/remote.go:577
+#, fuzzy
+msgid "Can't remove the default remote"
+msgstr "impossible de supprimer le serveur distant par défaut"
+
+#: lxc/list.go:481
+msgid "Can't specify --fast with --columns"
+msgstr ""
+
+#: lxc/rename.go:48
 msgid "Can't specify a different remote for rename."
 msgstr ""
 
-#: lxc/config.go:223
-#, fuzzy, c-format
-msgid "Can't unset key '%s', it's not currently set"
+#: lxc/list.go:493
+msgid "Can't specify column L when not clustered"
 msgstr ""
-"Impossible de désaffecter la clé '%s', elle n'est pas définie actuellement."
 
-#: lxc/config.go:265 lxc/config.go:291
-#, c-format
-msgid "Can't unset key '%s', it's not currently set."
+#: lxc/file.go:399
+#, fuzzy
+msgid "Can't supply uid/gid/mode in recursive mode"
+msgstr "impossible de spécifier uid/gid/mode en mode récursif"
+
+#: lxc/config.go:413
+#, fuzzy, c-format
+msgid "Can't unset key '%s', it's not currently set"
 msgstr ""
 "Impossible de désaffecter la clé '%s', elle n'est pas définie actuellement."
 
-#: lxc/profile.go:546 lxc/storage.go:696
-msgid "Cannot provide container name to list"
-msgstr "Impossible de fournir le nom du conteneur à lister"
-
-#: lxc/remote.go:203
+#: lxc/remote.go:252
 #, fuzzy, c-format
 msgid "Certificate fingerprint: %s"
 msgstr "Empreinte du certificat : %x"
 
-#: lxc/remote.go:315
+#: lxc/remote.go:364
 msgid "Client certificate stored at server: "
 msgstr "Certificat client enregistré sur le serveur : "
 
-#: lxc/image.go:175 lxc/image.go:176 lxc/list.go:134 lxc/list.go:135
+#: lxc/network.go:253 lxc/network.go:663 lxc/network.go:923 lxc/network.go:992
+#: lxc/network.go:1054 lxc/storage.go:92 lxc/storage.go:331 lxc/storage.go:576
+#: lxc/storage.go:649 lxc/storage.go:732 lxc/storage_volume.go:287
+#: lxc/storage_volume.go:429 lxc/storage_volume.go:504
+#: lxc/storage_volume.go:730 lxc/storage_volume.go:856
+#: lxc/storage_volume.go:998 lxc/storage_volume.go:1028
+#: lxc/storage_volume.go:1092 lxc/storage_volume.go:1175
+#: lxc/storage_volume.go:1244
+msgid "Cluster member name"
+msgstr ""
+
+#: lxc/image.go:912 lxc/list.go:112
 msgid "Columns"
 msgstr "Colonnes"
 
-#: lxc/help.go:53
-msgid "Commands:"
-msgstr "Commandes :"
+#: lxc/main.go:44
+msgid "Command line client for LXD"
+msgstr ""
+
+#: lxc/main.go:45
+#, fuzzy
+msgid ""
+"Command line client for LXD\n"
+"\n"
+"All of LXD's features can be driven through the various commands below.\n"
+"For help with any of those, simply call them with --help."
+msgstr ""
+"Ceci est le client en ligne de commande de LXD\n"
+"\n"
+"Toutes les fonctionnalités de LXD peuvent être utilisées à l'aide des "
+"commandes ci-dessous.\n"
+"Pour de l'aide avec l'une des commandes, simplement les utiliser avec --help."
 
-#: lxc/copy.go:37 lxc/copy.go:38 lxc/init.go:139 lxc/init.go:140
+#: lxc/copy.go:39 lxc/init.go:42
 msgid "Config key/value to apply to the new container"
 msgstr "Clé/valeur de configuration à appliquer au nouveau conteneur"
 
-#: lxc/config.go:821 lxc/config.go:886 lxc/config.go:1396 lxc/image.go:1191
-#: lxc/network.go:445 lxc/profile.go:275 lxc/storage.go:647 lxc/storage.go:1209
+#: lxc/config.go:195 lxc/config.go:259 lxc/config_metadata.go:144
+#: lxc/image.go:405 lxc/network.go:631 lxc/profile.go:490 lxc/storage.go:298
+#: lxc/storage_volume.go:822
 #, c-format
 msgid "Config parsing error: %s"
 msgstr "Erreur lors de la lecture de la configuration : %s"
 
-#: lxc/main.go:40
-msgid "Connection refused; is LXD running?"
-msgstr "Connexion refusée ; LXD est-il actif ?"
-
-#: lxc/console.go:132
+#: lxc/console.go:141
 msgid "Console log:"
 msgstr ""
 
-#: lxc/publish.go:71
+#: lxc/publish.go:79
 msgid "Container name is mandatory"
 msgstr "Le nom du conteneur est obligatoire"
 
-#: lxc/copy.go:243 lxc/init.go:321
+#: lxc/copy.go:260 lxc/init.go:229
 #, c-format
 msgid "Container name is: %s"
 msgstr "Le nom du conteneur est : %s"
 
-#: lxc/publish.go:250
+#: lxc/publish.go:259
 #, c-format
 msgid "Container published with fingerprint: %s"
 msgstr "Conteneur publié avec l'empreinte : %s"
 
-#: lxc/copy.go:45 lxc/move.go:44
+#: lxc/copy.go:44 lxc/move.go:46
 msgid "Copy a stateful container stateless"
 msgstr ""
 
-#: lxc/image.go:178
+#: lxc/image.go:138
 msgid "Copy aliases from source"
 msgstr "Copier les alias depuis la source"
 
-#: lxc/copy.go:44
+#: lxc/copy.go:34 lxc/copy.go:35
+#, fuzzy
+msgid "Copy containers within or in between LXD instances"
+msgstr "Forcer le conteneur à s'arrêter"
+
+#: lxc/image.go:130
+msgid "Copy images between servers"
+msgstr ""
+
+#: lxc/image.go:131
+msgid ""
+"Copy images between servers\n"
+"\n"
+"The auto-update flag instructs the server to keep this image up to date.\n"
+"It requires the source to be an alias and for it to be public."
+msgstr ""
+
+#: lxc/config_device.go:317 lxc/config_device.go:318
+msgid "Copy profile inherited devices and override configuration keys"
+msgstr ""
+
+#: lxc/profile.go:240 lxc/profile.go:241
+msgid "Copy profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:282 lxc/storage_volume.go:283
+#, fuzzy
+msgid "Copy storage volumes"
+msgstr "Copie de l'image : %s"
+
+#: lxc/copy.go:43
 #, fuzzy
 msgid "Copy the container without its snapshots"
 msgstr "Forcer le conteneur à s'arrêter"
 
-#: lxc/image.go:449
+#: lxc/image.go:217
 #, c-format
 msgid "Copying the image: %s"
 msgstr "Copie de l'image : %s"
 
-#: lxc/storage.go:1134
+#: lxc/storage_volume.go:387
 #, fuzzy, c-format
 msgid "Copying the storage volume: %s"
 msgstr "Copie de l'image : %s"
 
-#: lxc/remote.go:218
+#: lxc/remote.go:267
 msgid "Could not create server cert dir"
 msgstr "Impossible de créer le dossier de stockage des certificats serveurs"
 
-#: lxc/file.go:70 lxc/file.go:71
+#: lxc/image_alias.go:58 lxc/image_alias.go:59
+msgid "Create aliases for existing images"
+msgstr ""
+
+#: lxc/launch.go:21 lxc/launch.go:22
+msgid "Create and start containers from images"
+msgstr ""
+
+#: lxc/file.go:191 lxc/file.go:331
 msgid "Create any directories necessary"
 msgstr "Créer tous répertoires nécessaires"
 
-#: lxc/image.go:606 lxc/info.go:127
+#: lxc/snapshot.go:20
+#, fuzzy
+msgid "Create container snapshots"
+msgstr "Forcer le conteneur à s'arrêter"
+
+#: lxc/snapshot.go:21
+#, fuzzy
+msgid ""
+"Create container snapshots\n"
+"\n"
+"When --stateful is used, LXD attempts to checkpoint the container's\n"
+"running state, including process memory state, TCP connections, ..."
+msgstr ""
+"Créer un instantané en lecture seule d'un conteneur.\n"
+"\n"
+"lxc snapshot [<remote>:]<container> <snapshot name> [--stateful]\n"
+"\n"
+"Crée un instantanté du conteneur (y compris — de manière optionnelle —\n"
+"l'état de la mémoire du conteneur).  Si --stateful est utilisé, LXD\n"
+"tente de créer un point d'arrêt de l'état d'exécution du conteneur,\n"
+"incluant l'état de la mémoire, les connexions TCP, etc. afin qu'il\n"
+"puisse être restauré (via lxc restore) ultérieurement (bien que\n"
+"certaines choses, les connexions TCP ayant expirées après que la\n"
+"fenêtre de temps se soit écoulée par exemple, ne puissent être\n"
+"restaurées avec succès).\n"
+"\n"
+"Exemple :\n"
+"    lxc snapshot u1 snap0"
+
+#: lxc/init.go:34 lxc/init.go:35
+#, fuzzy
+msgid "Create containers from images"
+msgstr "Création du conteneur"
+
+#: lxc/config_template.go:66 lxc/config_template.go:67
+#, fuzzy
+msgid "Create new container file templates"
+msgstr "L'arrêt du conteneur a échoué !"
+
+#: lxc/storage_volume.go:425 lxc/storage_volume.go:426
+#, fuzzy
+msgid "Create new custom storage volumes"
+msgstr "Copie de l'image : %s"
+
+#: lxc/network.go:249 lxc/network.go:250
+msgid "Create new networks"
+msgstr ""
+
+#: lxc/profile.go:296 lxc/profile.go:297
+#, fuzzy
+msgid "Create profiles"
+msgstr "Créé : %s"
+
+#: lxc/storage.go:88 lxc/storage.go:89
+#, fuzzy
+msgid "Create storage pools"
+msgstr "Copie de l'image : %s"
+
+#: lxc/image.go:832 lxc/info.go:131
 #, c-format
 msgid "Created: %s"
 msgstr "Créé : %s"
 
-#: lxc/init.go:200
+#: lxc/init.go:98
 #, c-format
 msgid "Creating %s"
 msgstr "Création de %s"
 
-#: lxc/init.go:198
+#: lxc/init.go:96
 msgid "Creating the container"
 msgstr "Création du conteneur"
 
-#: lxc/cluster.go:185
+#: lxc/cluster.go:121
 msgid "DATABASE"
 msgstr ""
 
-#: lxc/image.go:235 lxc/image.go:1138 lxc/list.go:469 lxc/network.go:579
-#: lxc/operation.go:154 lxc/storage.go:732 lxc/storage.go:937
+#: lxc/image.go:925 lxc/image_alias.go:230 lxc/list.go:466 lxc/network.go:784
+#: lxc/operation.go:153 lxc/storage.go:545 lxc/storage_volume.go:967
 msgid "DESCRIPTION"
 msgstr "DESCRIPTION"
 
-#: lxc/storage.go:733
+#: lxc/storage.go:546
 msgid "DRIVER"
 msgstr "PILOTE"
 
-#: lxc/publish.go:39
+#: lxc/publish.go:41
 msgid "Define a compression algorithm: for image or none"
 msgstr "Définir un algorithme de compression : pour image ou aucun"
 
-#: lxc/config.go:977
+#: lxc/operation.go:53 lxc/operation.go:54
+msgid "Delete a background operation (will attempt to cancel)"
+msgstr ""
+
+#: lxc/config_template.go:109 lxc/config_template.go:110
+#, fuzzy
+msgid "Delete container file templates"
+msgstr "L'arrêt du conteneur a échoué !"
+
+#: lxc/delete.go:29 lxc/delete.go:30
+#, fuzzy
+msgid "Delete containers and snapshots"
+msgstr "Forcer le conteneur à s'arrêter"
+
+#: lxc/file.go:72 lxc/file.go:73
+msgid "Delete files in containers"
+msgstr ""
+
+#: lxc/image_alias.go:105 lxc/image_alias.go:106
+msgid "Delete image aliases"
+msgstr ""
+
+#: lxc/image.go:260 lxc/image.go:261
+#, fuzzy
+msgid "Delete images"
+msgstr "Récupération de l'image : %s"
+
+#: lxc/network.go:319 lxc/network.go:320
+msgid "Delete networks"
+msgstr ""
+
+#: lxc/profile.go:347 lxc/profile.go:348
+msgid "Delete profiles"
+msgstr ""
+
+#: lxc/storage.go:160 lxc/storage.go:161
+msgid "Delete storage pools"
+msgstr ""
+
+#: lxc/storage_volume.go:500 lxc/storage_volume.go:501
+#, fuzzy
+msgid "Delete storage volumes"
+msgstr "Copie de l'image : %s"
+
+#: lxc/action.go:30 lxc/action.go:49 lxc/action.go:69 lxc/action.go:91
+#: lxc/alias.go:23 lxc/alias.go:55 lxc/alias.go:99 lxc/alias.go:147
+#: lxc/alias.go:198 lxc/cluster.go:26 lxc/cluster.go:59 lxc/cluster.go:142
+#: lxc/cluster.go:192 lxc/cluster.go:238 lxc/config.go:29 lxc/config.go:88
+#: lxc/config.go:289 lxc/config.go:355 lxc/config.go:452 lxc/config.go:560
+#: lxc/config_device.go:24 lxc/config_device.go:76 lxc/config_device.go:179
+#: lxc/config_device.go:252 lxc/config_device.go:318 lxc/config_device.go:405
+#: lxc/config_device.go:493 lxc/config_device.go:582 lxc/config_device.go:650
+#: lxc/config_metadata.go:29 lxc/config_metadata.go:54
+#: lxc/config_metadata.go:176 lxc/config_template.go:30
+#: lxc/config_template.go:67 lxc/config_template.go:110
+#: lxc/config_template.go:152 lxc/config_template.go:236
+#: lxc/config_template.go:298 lxc/config_trust.go:30 lxc/config_trust.go:59
+#: lxc/config_trust.go:115 lxc/config_trust.go:197 lxc/console.go:32
+#: lxc/copy.go:35 lxc/delete.go:30 lxc/exec.go:39 lxc/file.go:40 lxc/file.go:73
+#: lxc/file.go:122 lxc/file.go:185 lxc/file.go:324 lxc/image.go:42
+#: lxc/image.go:131 lxc/image.go:261 lxc/image.go:312 lxc/image.go:435
+#: lxc/image.go:571 lxc/image.go:776 lxc/image.go:890 lxc/image.go:1212
+#: lxc/image.go:1285 lxc/image_alias.go:26 lxc/image_alias.go:59
+#: lxc/image_alias.go:106 lxc/image_alias.go:149 lxc/image_alias.go:250
+#: lxc/info.go:29 lxc/init.go:35 lxc/launch.go:22 lxc/list.go:48 lxc/main.go:45
+#: lxc/monitor.go:31 lxc/move.go:31 lxc/network.go:32 lxc/network.go:104
+#: lxc/network.go:177 lxc/network.go:250 lxc/network.go:320 lxc/network.go:367
+#: lxc/network.go:452 lxc/network.go:537 lxc/network.go:660 lxc/network.go:719
+#: lxc/network.go:808 lxc/network.go:873 lxc/network.go:920 lxc/network.go:989
+#: lxc/network.go:1051 lxc/operation.go:25 lxc/operation.go:54
+#: lxc/operation.go:98 lxc/operation.go:174 lxc/profile.go:30
+#: lxc/profile.go:102 lxc/profile.go:163 lxc/profile.go:241 lxc/profile.go:297
+#: lxc/profile.go:348 lxc/profile.go:396 lxc/profile.go:520 lxc/profile.go:568
+#: lxc/profile.go:632 lxc/profile.go:705 lxc/profile.go:753 lxc/profile.go:812
+#: lxc/profile.go:866 lxc/publish.go:34 lxc/query.go:27 lxc/remote.go:34
+#: lxc/remote.go:84 lxc/remote.go:380 lxc/remote.go:414 lxc/remote.go:487
+#: lxc/remote.go:549 lxc/remote.go:598 lxc/remote.go:636 lxc/rename.go:20
+#: lxc/restore.go:24 lxc/snapshot.go:21 lxc/storage.go:33 lxc/storage.go:89
+#: lxc/storage.go:161 lxc/storage.go:208 lxc/storage.go:328 lxc/storage.go:383
+#: lxc/storage.go:491 lxc/storage.go:573 lxc/storage.go:645 lxc/storage.go:729
+#: lxc/storage_volume.go:34 lxc/storage_volume.go:122 lxc/storage_volume.go:201
+#: lxc/storage_volume.go:283 lxc/storage_volume.go:426
+#: lxc/storage_volume.go:501 lxc/storage_volume.go:561
+#: lxc/storage_volume.go:643 lxc/storage_volume.go:724
+#: lxc/storage_volume.go:853 lxc/storage_volume.go:918
+#: lxc/storage_volume.go:994 lxc/storage_volume.go:1025
+#: lxc/storage_volume.go:1089 lxc/storage_volume.go:1166
+#: lxc/storage_volume.go:1241
+msgid "Description"
+msgstr ""
+
+#: lxc/network.go:366 lxc/network.go:367
+msgid "Detach network interfaces from containers"
+msgstr ""
+
+#: lxc/network.go:451 lxc/network.go:452
+msgid "Detach network interfaces from profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:560 lxc/storage_volume.go:561
+msgid "Detach storage volumes from containers"
+msgstr ""
+
+#: lxc/storage_volume.go:642 lxc/storage_volume.go:643
+msgid "Detach storage volumes from profiles"
+msgstr ""
+
+#: lxc/config_device.go:163
 #, c-format
 msgid "Device %s added to %s"
 msgstr "Périphérique %s ajouté à %s"
 
-#: lxc/config.go:1272
+#: lxc/config_device.go:387
 #, fuzzy, c-format
 msgid "Device %s overridden for %s"
 msgstr "Périphérique %s retiré de %s"
 
-#: lxc/config.go:1213
+#: lxc/config_device.go:476
 #, c-format
 msgid "Device %s removed from %s"
 msgstr "Périphérique %s retiré de %s"
 
-#: lxc/utils.go:192 lxc/utils.go:216
+#: lxc/utils.go:133 lxc/utils.go:157
 #, fuzzy, c-format
 msgid "Device already exists: %s"
 msgstr "le serveur distant %s existe déjà"
 
-#: lxc/image.go:1290
+#: lxc/image.go:586
 msgid "Directory import is not available on this platform"
 msgstr ""
 
-#: lxc/exec.go:71
+#: lxc/exec.go:55
 msgid "Disable pseudo-terminal allocation"
 msgstr "Désactiver l'allocation pseudo-terminal"
 
-#: lxc/exec.go:72
+#: lxc/exec.go:56
 msgid "Disable stdin (reads from /dev/null)"
 msgstr "Désactiver stdin (lecture à partir de /dev/null)"
 
-#: lxc/info.go:175
+#: lxc/info.go:179
 #, fuzzy
 msgid "Disk usage:"
 msgstr "  Disque utilisé :"
 
-#: lxc/list.go:638
+#: lxc/list.go:635
 msgid "EPHEMERAL"
 msgstr "ÉPHÉMÈRE"
 
-#: lxc/config.go:405
+#: lxc/config_trust.go:177
 msgid "EXPIRY DATE"
 msgstr "DATE D'EXPIRATION"
 
-#: lxc/main.go:52
-msgid "Enable debug mode"
-msgstr "Activer le mode de débogage"
+#: lxc/config_template.go:151 lxc/config_template.go:152
+#, fuzzy
+msgid "Edit container file templates"
+msgstr "L'arrêt du conteneur a échoué !"
+
+#: lxc/config_metadata.go:53 lxc/config_metadata.go:54
+msgid "Edit container metadata files"
+msgstr ""
+
+#: lxc/config.go:87 lxc/config.go:88
+msgid "Edit container or server configurations as YAML"
+msgstr ""
+
+#: lxc/file.go:121 lxc/file.go:122
+#, fuzzy
+msgid "Edit files in containers"
+msgstr "Création du conteneur"
+
+#: lxc/image.go:311 lxc/image.go:312
+msgid "Edit image properties"
+msgstr ""
+
+#: lxc/network.go:536 lxc/network.go:537
+msgid "Edit network configurations as YAML"
+msgstr ""
 
-#: lxc/main.go:51
-msgid "Enable verbose mode"
-msgstr "Activer le mode verbeux"
+#: lxc/profile.go:395 lxc/profile.go:396
+msgid "Edit profile configurations as YAML"
+msgstr ""
+
+#: lxc/storage.go:207 lxc/storage.go:208
+msgid "Edit storage pool configurations as YAML"
+msgstr ""
+
+#: lxc/storage_volume.go:723 lxc/storage_volume.go:724
+msgid "Edit storage volume configurations as YAML"
+msgstr ""
+
+#: lxc/list.go:504
+#, c-format
+msgid "Empty column entry (redundant, leading or trailing command) in '%s'"
+msgstr ""
 
-#: lxc/exec.go:68
+#: lxc/exec.go:52
 msgid "Environment variable to set (e.g. HOME=/home/foo)"
 msgstr "Variable d'environnement (de la forme HOME=/home/foo) à positionner"
 
-#: lxc/help.go:77
-msgid "Environment:"
-msgstr "Environnement :"
-
-#: lxc/copy.go:41 lxc/copy.go:42 lxc/init.go:143 lxc/init.go:144
+#: lxc/copy.go:41 lxc/init.go:44
 msgid "Ephemeral container"
 msgstr "Conteneur éphémère"
 
-#: lxc/config.go:1446
+#: lxc/config_template.go:204
 #, fuzzy, c-format
 msgid "Error updating template file: %s"
 msgstr "Import de l'image : %s"
 
-#: lxc/monitor.go:69
+#: lxc/monitor.go:48
 msgid "Event type to listen for"
 msgstr "Type d'évènements à surveiller"
 
-#: lxc/image.go:610
+#: lxc/exec.go:38
+msgid "Execute commands in containers"
+msgstr ""
+
+#: lxc/exec.go:39
+#, fuzzy
+msgid ""
+"Execute commands in containers\n"
+"\n"
+"The command is executed directly using exec, so there is no shell and\n"
+"shell patterns (variables, file redirects, ...) won't be understood.\n"
+"If you need a shell environment you need to execute the shell\n"
+"executable, passing the shell commands as arguments, for example:\n"
+"\n"
+"  lxc exec <container> -- sh -c \"cd /tmp && pwd\"\n"
+"\n"
+"Mode defaults to non-interactive, interactive mode is selected if both stdin "
+"AND stdout are terminals (stderr is ignored)."
+msgstr ""
+"Exécuter la commande indiquée dans un conteneur.\n"
+"\n"
+"lxc exec [<remote>:]<container> [--mode=auto|interactive|non-interactive] [--"
+"env KEY=VALUE...] [--] <command line>\n"
+"\n"
+"Le mode est non-interactif par défaut, le mode interactif est\n"
+"sélectionné si à la fois stdin et stdout sont des terminaux (stderr\n"
+"est ignoré)."
+
+#: lxc/image.go:838
 #, c-format
 msgid "Expires: %s"
 msgstr "Expire : %s"
 
-#: lxc/image.go:612
+#: lxc/image.go:840
 msgid "Expires: never"
 msgstr "N'expire jamais"
 
-#: lxc/image.go:922
+#: lxc/image.go:434
+#, fuzzy
+msgid "Export and download images"
+msgstr "Import de l'image : %s"
+
+#: lxc/image.go:435
+msgid ""
+"Export and download images\n"
+"\n"
+"The output target is optional and defaults to the working directory."
+msgstr ""
+
+#: lxc/image.go:494
 #, fuzzy, c-format
 msgid "Exporting the image: %s"
 msgstr "Import de l'image : %s"
 
-#: lxc/config.go:761
+#: lxc/config_template.go:279
 #, fuzzy
 msgid "FILENAME"
 msgstr "NOM"
 
-#: lxc/config.go:402 lxc/image.go:233 lxc/image.go:1137
+#: lxc/config_trust.go:174 lxc/image.go:923 lxc/image_alias.go:229
 msgid "FINGERPRINT"
 msgstr "EMPREINTE"
 
-#: lxc/utils.go:261
+#: lxc/utils.go:202
 #, fuzzy, c-format
 msgid "Failed to create alias %s"
 msgstr "Échec lors de la génération de 'lxc.%s.1': %v"
 
-#: lxc/manpage.go:62
-#, c-format
-msgid "Failed to generate 'lxc.%s.1': %v"
-msgstr "Échec lors de la génération de 'lxc.%s.1': %v"
-
-#: lxc/manpage.go:55
-#, c-format
-msgid "Failed to generate 'lxc.1': %v"
-msgstr "Échec lors de la génération de 'lxc.1': %v"
-
-#: lxc/copy.go:238
+#: lxc/copy.go:255
 #, fuzzy
 msgid "Failed to get the new container name"
 msgstr "Profil à appliquer au nouveau conteneur"
 
-#: lxc/utils.go:251
+#: lxc/utils.go:192
 #, c-format
 msgid "Failed to remove alias %s"
 msgstr ""
 
-#: lxc/file.go:137
+#: lxc/file.go:609
 #, c-format
 msgid "Failed to walk path for %s: %s"
 msgstr ""
 
-#: lxc/list.go:137
+#: lxc/list.go:114
 #, fuzzy
 msgid "Fast mode (same as --columns=nsacPt)"
 msgstr "Mode rapide (identique à --columns=nsacPt"
 
-#: lxc/network.go:536 lxc/operation.go:121
+#: lxc/network.go:749 lxc/operation.go:126
 msgid "Filtering isn't supported yet"
 msgstr ""
 
-#: lxc/image.go:599
+#: lxc/image.go:824
 #, c-format
 msgid "Fingerprint: %s"
 msgstr "Empreinte : %s"
 
-#: lxc/exec.go:70
+#: lxc/exec.go:54
 msgid "Force pseudo-terminal allocation"
 msgstr "Forcer l'allocation de pseudo-terminal "
 
-#: lxc/cluster.go:42
-msgid "Force removing a node, even if degraded"
+#: lxc/cluster.go:242
+msgid "Force removing a member, even if degraded"
 msgstr ""
 
-#: lxc/action.go:47 lxc/action.go:48
+#: lxc/action.go:121
 msgid "Force the container to shutdown"
 msgstr "Forcer le conteneur à s'arrêter"
 
-#: lxc/delete.go:34 lxc/delete.go:35
+#: lxc/delete.go:34
 #, fuzzy
 msgid "Force the removal of running containers"
 msgstr "Forcer la suppression des conteneurs arrêtés"
 
-#: lxc/main.go:53
+#: lxc/main.go:56
 msgid "Force using the local unix socket"
 msgstr "Forcer l'utilisation de la socket unix locale"
 
-#: lxc/image.go:181 lxc/list.go:136
+#: lxc/image.go:913 lxc/list.go:113
 msgid "Format (csv|json|table|yaml)"
 msgstr ""
 
-#: lxc/remote.go:166
+#: lxc/remote.go:211
 msgid "Generating a client certificate. This may take a minute..."
 msgstr "Génération d'un certificat client. Ceci peut prendre une minute…"
 
-#: lxc/network.go:513
+#: lxc/config_device.go:178 lxc/config_device.go:179
 #, fuzzy
-msgid "HOSTNAME"
-msgstr "NOM"
+msgid "Get values for container device configuration keys"
+msgstr "Clé de configuration invalide"
+
+#: lxc/config.go:288 lxc/config.go:289
+msgid "Get values for container or server configuration keys"
+msgstr ""
 
-#: lxc/operation.go:152
+#: lxc/network.go:659 lxc/network.go:660
 #, fuzzy
-msgid "ID"
-msgstr "PID"
+msgid "Get values for network configuration keys"
+msgstr "Clé de configuration invalide"
 
-#: lxc/network.go:515
-msgid "IP ADDRESS"
+#: lxc/profile.go:519 lxc/profile.go:520
+#, fuzzy
+msgid "Get values for profile configuration keys"
+msgstr "Clé de configuration invalide"
+
+#: lxc/storage.go:327 lxc/storage.go:328
+msgid "Get values for storage pool configuration keys"
 msgstr ""
 
-#: lxc/list.go:465
-msgid "IPV4"
+#: lxc/storage_volume.go:852 lxc/storage_volume.go:853
+msgid "Get values for storage volume configuration keys"
+msgstr ""
+
+#: lxc/network.go:851
+#, fuzzy
+msgid "HOSTNAME"
+msgstr "NOM"
+
+#: lxc/operation.go:151
+#, fuzzy
+msgid "ID"
+msgstr "PID"
+
+#: lxc/network.go:853
+msgid "IP ADDRESS"
+msgstr ""
+
+#: lxc/list.go:462
+msgid "IPV4"
 msgstr "IPv4"
 
-#: lxc/list.go:466
+#: lxc/list.go:463
 msgid "IPV6"
 msgstr "IPv6"
 
-#: lxc/config.go:404
+#: lxc/config_trust.go:176
 msgid "ISSUE DATE"
 msgstr "DATE D'ÉMISSION"
 
-#: lxc/main.go:171
+#: lxc/main.go:259
 #, fuzzy
 msgid ""
 "If this is your first time running LXD on this machine, you should also run: "
@@ -713,448 +1122,917 @@ msgstr ""
 "Si c'est la première fois que vous lancez LXD, vous devriez aussi lancer : "
 "sudo lxd init"
 
-#: lxc/main.go:54
-msgid "Ignore aliases when determining what command to run"
-msgstr "Ignorer les alias pour déterminer la commande à exécuter"
-
-#: lxc/action.go:51
-msgid "Ignore the container state (only for start)"
+#: lxc/action.go:117
+#, fuzzy
+msgid "Ignore the container state"
 msgstr "Ignorer l'état du conteneur (seulement pour start)"
 
-#: lxc/image.go:557
+#: lxc/image.go:1268
 msgid "Image already up to date."
 msgstr ""
 
-#: lxc/image.go:463
+#: lxc/image.go:231
 msgid "Image copied successfully!"
 msgstr "Image copiée avec succès !"
 
-#: lxc/image.go:982
+#: lxc/image.go:554
 #, fuzzy
 msgid "Image exported successfully!"
 msgstr "Image copiée avec succès !"
 
-#: lxc/image.go:778
+#: lxc/image.go:284 lxc/image.go:1235
+msgid "Image identifier missing"
+msgstr ""
+
+#: lxc/image.go:352
+#, fuzzy, c-format
+msgid "Image identifier missing: %s"
+msgstr "Image importée avec l'empreinte : %s"
+
+#: lxc/image.go:749
 #, c-format
 msgid "Image imported with fingerprint: %s"
 msgstr "Image importée avec l'empreinte : %s"
 
-#: lxc/image.go:555
+#: lxc/image.go:1266
 #, fuzzy
 msgid "Image refreshed successfully!"
 msgstr "Image copiée avec succès !"
 
-#: lxc/query.go:39
+#: lxc/image.go:571
+msgid ""
+"Import image into the image store\n"
+"\n"
+"Directory import is only available on Linux and must be performed as root."
+msgstr ""
+
+#: lxc/image.go:570
+#, fuzzy
+msgid "Import images into the image store"
+msgstr "Import de l'image : %s"
+
+#: lxc/query.go:38
 msgid "Input data"
 msgstr ""
 
-#: lxc/init.go:149
+#: lxc/init.go:47
 msgid "Instance type"
 msgstr ""
 
-#: lxc/remote.go:118
+#: lxc/remote.go:163
 #, c-format
 msgid "Invalid URL scheme \"%s\" in \"%s\""
 msgstr "Schème d'URL invalide \"%s\" in \"%s\""
 
-#: lxc/config.go:383
+#: lxc/config_trust.go:155
 msgid "Invalid certificate"
 msgstr "Certificat invalide"
 
-#: lxc/init.go:32 lxc/init.go:37
-msgid "Invalid configuration key"
+#: lxc/list.go:525
+#, fuzzy, c-format
+msgid "Invalid config key '%s' in '%s'"
 msgstr "Clé de configuration invalide"
 
-#: lxc/file.go:560
+#: lxc/list.go:520
+#, c-format
+msgid "Invalid config key column format (too many fields): '%s'"
+msgstr ""
+
+#: lxc/image.go:1196 lxc/list.go:386
+#, fuzzy, c-format
+msgid "Invalid format %q"
+msgstr "Cible invalide %s"
+
+#: lxc/list.go:543
+#, c-format
+msgid "Invalid max width (must -1, 0 or a positive integer) '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:540
+#, c-format
+msgid "Invalid max width (must be an integer) '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:531
+#, c-format
+msgid ""
+"Invalid name in '%s', empty string is only allowed when defining maxWidth"
+msgstr ""
+
+#: lxc/main.go:341
+#, fuzzy
+msgid "Invalid number of arguments"
+msgstr "nombre d'arguments incorrect pour la sous-comande"
+
+#: lxc/file.go:97
 #, fuzzy, c-format
 msgid "Invalid path %s"
 msgstr "Cible invalide %s"
 
-#: lxc/remote.go:107
+#: lxc/remote.go:152
 #, fuzzy, c-format
 msgid "Invalid protocol: %s"
 msgstr "Cible invalide %s"
 
-#: lxc/file.go:473
+#: lxc/file.go:243
 #, c-format
 msgid "Invalid source %s"
 msgstr "Source invalide %s"
 
-#: lxc/file.go:250
+#: lxc/file.go:352
 #, c-format
 msgid "Invalid target %s"
 msgstr "Cible invalide %s"
 
-#: lxc/info.go:156
+#: lxc/info.go:160
 msgid "Ips:"
 msgstr "IPs :"
 
-#: lxc/image.go:179
+#: lxc/image.go:139
 msgid "Keep the image up to date after initial copy"
 msgstr "Garder l'image à jour après la copie initiale"
 
-#: lxc/list.go:470
+#: lxc/list.go:467
 msgid "LAST USED AT"
 msgstr "DERNIÈRE UTILISATION À"
 
-#: lxc/list.go:492
+#: lxc/list.go:489
 msgid "LOCATION"
 msgstr ""
 
-#: lxc/main.go:38
-msgid "LXD socket not found; is LXD installed and running?"
-msgstr "Socket LXD introuvable ; LXD est-il installé et actif ?"
+#: lxc/cluster.go:94
+msgid "LXD server isn't part of a cluster"
+msgstr ""
 
-#: lxc/image.go:615
+#: lxc/image.go:844
 #, c-format
 msgid "Last used: %s"
 msgstr "Dernière utilisation : %s"
 
-#: lxc/image.go:617
+#: lxc/image.go:846
 msgid "Last used: never"
 msgstr "Dernière utilisation : jamais"
 
-#: lxc/info.go:119
-#, c-format
-msgid "Location: %s"
+#: lxc/network.go:807 lxc/network.go:808
+msgid "List DHCP leases"
 msgstr ""
 
-#: lxc/info.go:271
-msgid "Log:"
-msgstr "Journal : "
+#: lxc/alias.go:98 lxc/alias.go:99
+#, fuzzy
+msgid "List aliases"
+msgstr "Alias :"
 
-#: lxc/network.go:514
-msgid "MAC ADDRESS"
+#: lxc/cluster.go:58 lxc/cluster.go:59
+msgid "List all the cluster members"
 msgstr ""
 
-#: lxc/network.go:578
-msgid "MANAGED"
-msgstr "GÉRÉ"
+#: lxc/network.go:718 lxc/network.go:719
+msgid "List available networks"
+msgstr ""
 
-#: lxc/cluster.go:187
-msgid "MESSAGE"
+#: lxc/storage.go:490 lxc/storage.go:491
+msgid "List available storage pools"
 msgstr ""
 
-#: lxc/image.go:177
-msgid "Make image public"
-msgstr "Rendre l'image publique"
+#: lxc/operation.go:97 lxc/operation.go:98
+msgid "List background operations"
+msgstr ""
 
-#: lxc/publish.go:35
-msgid "Make the image public"
-msgstr "Rendre l'image publique"
+#: lxc/config_device.go:251 lxc/config_device.go:252
+#, fuzzy
+msgid "List container devices"
+msgstr "Création du conteneur"
 
-#: lxc/info.go:193
-msgid "Memory (current)"
-msgstr "Mémoire (courante)"
+#: lxc/config_template.go:235 lxc/config_template.go:236
+#, fuzzy
+msgid "List container file templates"
+msgstr "L'arrêt du conteneur a échoué !"
 
-#: lxc/info.go:197
-msgid "Memory (peak)"
-msgstr "Mémoire (pointe)"
+#: lxc/list.go:47
+#, fuzzy
+msgid "List containers"
+msgstr "L'arrêt du conteneur a échoué !"
 
-#: lxc/info.go:209
+#: lxc/list.go:48
 #, fuzzy
-msgid "Memory usage:"
-msgstr "  Mémoire utilisée :"
+msgid ""
+"List containers\n"
+"\n"
+"Default column layout: ns46tS\n"
+"Fast column layout: nsacPt\n"
+"\n"
+"== Filters ==\n"
+"A single keyword like \"web\" which will list any container with a name "
+"starting by \"web\".\n"
+"A regular expression on the container name. (e.g. .*web.*01$).\n"
+"A key/value pair referring to a configuration item. For those, the\n"
+"namespace can be abbreviated to the smallest unambiguous identifier.\n"
+"\n"
+"Examples:\n"
+"  - \"user.blah=abc\" will list all containers with the \"blah\" user "
+"property set to \"abc\".\n"
+"  - \"u.blah=abc\" will do the same\n"
+"  - \"security.privileged=true\" will list all privileged containers\n"
+"  - \"s.privileged=true\" will do the same\n"
+"\n"
+"A regular expression matching a configuration item or its value. (e.g. "
+"volatile.eth0.hwaddr=00:16:3e:.*).\n"
+"\n"
+"== Columns ==\n"
+"The -c option takes a comma separated list of arguments that control\n"
+"which container attributes to output when displaying in table or csv\n"
+"format.\n"
+"\n"
+"Column arguments are either pre-defined shorthand chars (see below),\n"
+"or (extended) config keys.\n"
+"\n"
+"Commas between consecutive shorthand chars are optional.\n"
+"\n"
+"Pre-defined column shorthand chars:\n"
+"  4 - IPv4 address\n"
+"  6 - IPv6 address\n"
+"  a - Architecture\n"
+"  b - Storage pool\n"
+"  c - Creation date\n"
+"  d - Description\n"
+"  l - Last used date\n"
+"  n - Name\n"
+"  N - Number of Processes\n"
+"  p - PID of the container's init process\n"
+"  P - Profiles\n"
+"  s - State\n"
+"  S - Number of snapshots\n"
+"  t - Type (persistent or ephemeral)\n"
+"  L - Location of the container (e.g. its node)\n"
+"\n"
+"Custom columns are defined with \"key[:name][:maxWidth]\":\n"
+"  KEY: The (extended) config key to display\n"
+"  NAME: Name to display in the column header.\n"
+"  Defaults to the key if not specified or empty.\n"
+"\n"
+"  MAXWIDTH: Max width of the column (longer results are truncated).\n"
+"  Defaults to -1 (unlimited). Use 0 to limit to the column header size."
+msgstr ""
+"Lister les conteneurs.\n"
+"\n"
+"lxc list [<remote>:] [filters] [--format table|json] [-c <columns>] [--"
+"fast]\n"
+"\n"
+"Les filtres sont :\n"
+"* Un mot-clé unique comme \\web\\ qui listera tous les conteneurs dont le "
+"nom commence par \\web\\.\n"
+"* Une expression rationnelle sur le nom du conteneur (ex : *web.*01$)\n"
+"* Une paire de clé/valeur faisant référence à un élément de configuration.  "
+"Pour ceux-ci, l'espace de nom peut être abrégé au plus petit identifiant non "
+"ambigu :\n"
+" * \\user.blah=abc\\ listera tous les conteneurs dont la propriété "
+"utilisateur \\blah\\ est positionnée à \\abc\\.\n"
+" * \\u.blah=abc\\ fera la même chose\n"
+" * \\security.privileged=1\\ listera tous les conteneurs privilégiés\n"
+" * \\s.privileged=1\\ fera la même chose\n"
+"* Une expression rationelle correspondant à un élément de configuration ou à "
+"sa valeur (ex : volatile.eth0.hwaddr=00:16:3e:.*)\n"
+"\n"
+"L'option -c prend une liste d'arguments séparés par des virgules\n"
+"contrôlant les attributs des conteneurs à afficher au format tableau.\n"
+"Les arguments pour les colonnes sont soient des raccourcis par\n"
+"caractère prédéfinis (voir ci-dessous) ou des clés (étendues) de\n"
+"configuration.  Les virgules entre les caractères courts sont\n"
+"optionnelles.\n"
+"\n"
+"Raccourcis par caractère prédéfinis :\n"
+"* 4 - adresse IPv4\n"
+"* 6 - adresse IPv6\n"
+"* a - architecture\n"
+"* c - date de création\n"
+"* l - date de dernière utilisation\n"
+"* n - nom\n"
+"* p - pid du processus init du conteneur\n"
+"* P - profils\n"
+"* s - état\n"
+"* S - nombre d'instantanés\n"
+"* t - type (persistant ou éphémère)\n"
+"\n"
+"Syntaxe des clés de configuration : clé[:nom][:largeurMax]\n"
+"* clé        - La clé (étendue) de configuration à afficher\n"
+"* nom        - Nom à afficher dans l'entête de colonne, c'est la clé\n"
+"               par défaut si rien n'est spécifié ou vide (pour\n"
+"               permettre la définition de largeurMax sans nom\n"
+"               personnalisé, ex : user.key::0)\n"
+"* largeurMax - Largeur max de la colonne (les résultats plus longs\n"
+"               seront tronqués).\n"
+"               -1 == pas de limite\n"
+"                0 == largeur de l'entête de colonne\n"
+"               >0 == largeur maximale en caractères\n"
+"               La valeur par défaut est -1 (pas de limite)\n"
+"\n"
+"Colonnes par défaut : ns46tS\n"
+"Colonnes en mode rapide : nsacPt\n"
+"\n"
+"Exemple :\n"
+"    lxc list -c n,volatile.base_image:\\BASE IMAGE\\:0,s46,volatile.eth0."
+"hwaddr:MAC"
 
-#: lxc/monitor.go:70
-msgid "Minimum level for log messages"
+#: lxc/image_alias.go:148
+msgid "List image aliases"
 msgstr ""
 
-#: lxc/utils.go:143
-msgid "Missing summary."
-msgstr "Résumé manquant."
+#: lxc/image_alias.go:149
+msgid ""
+"List image aliases\n"
+"\n"
+"Filters may be part of the image hash or part of the image alias name.\n"
+msgstr ""
 
-#: lxc/network.go:303 lxc/network.go:356 lxc/storage.go:435 lxc/storage.go:565
-msgid "More than one device matches, specify the device name."
-msgstr "Plus d'un périphérique correspond, spécifier le nom du périphérique."
+#: lxc/image.go:889
+msgid "List images"
+msgstr ""
 
-#: lxc/file.go:460
-msgid "More than one file to download, but target is not a directory"
+#: lxc/image.go:890
+msgid ""
+"List images\n"
+"\n"
+"Filters may be of the <key>=<value> form for property based filtering,\n"
+"or part of the image hash or part of the image alias name.\n"
+"\n"
+"The -c option takes a (optionally comma-separated) list of arguments\n"
+"that control which image attributes to output when displaying in table\n"
+"or csv format.\n"
+"\n"
+"Default column layout is: lfpdasu\n"
+"\n"
+"Column shorthand chars:\n"
+"\n"
+"    l - Shortest image alias (and optionally number of other aliases)\n"
+"    L - Newline-separated list of all image aliases\n"
+"    f - Fingerprint\n"
+"    p - Whether image is public\n"
+"    d - Description\n"
+"    a - Architecture\n"
+"    s - Size"
 msgstr ""
-"Plusieurs fichiers à télécharger, mais la destination n'est pas un dossier"
 
-#: lxc/move.go:42
-#, fuzzy
-msgid "Move the container without its snapshots"
-msgstr "Forcer le conteneur à s'arrêter"
+#: lxc/profile.go:567 lxc/profile.go:568
+msgid "List profiles"
+msgstr ""
 
-#: lxc/storage.go:1128
-#, fuzzy, c-format
-msgid "Moving the storage volume: %s"
+#: lxc/storage_volume.go:917 lxc/storage_volume.go:918
+#, fuzzy
+msgid "List storage volumes"
 msgstr "Copie de l'image : %s"
 
-#: lxc/image.go:1292
-msgid "Must run as root to import from directory"
+#: lxc/remote.go:413 lxc/remote.go:414
+msgid "List the available remotes"
 msgstr ""
 
-#: lxc/action.go:74
-msgid "Must supply container name for: "
-msgstr "Vous devez fournir le nom d'un conteneur pour : "
+#: lxc/config_trust.go:114 lxc/config_trust.go:115
+msgid "List trusted clients"
+msgstr ""
 
-#: lxc/cluster.go:183 lxc/list.go:471 lxc/network.go:576 lxc/profile.go:573
-#: lxc/remote.go:409 lxc/storage.go:731 lxc/storage.go:936
-msgid "NAME"
-msgstr "NOM"
+#: lxc/operation.go:24 lxc/operation.go:25
+msgid "List, show and delete background operations"
+msgstr ""
 
-#: lxc/network.go:558 lxc/operation.go:139 lxc/remote.go:380 lxc/remote.go:385
-msgid "NO"
-msgstr "NON"
+#: lxc/info.go:123
+#, c-format
+msgid "Location: %s"
+msgstr ""
 
-#: lxc/storage.go:941
-msgid "NODE"
+#: lxc/info.go:275
+msgid "Log:"
+msgstr "Journal : "
+
+#: lxc/network.go:852
+msgid "MAC ADDRESS"
 msgstr ""
 
-#: lxc/info.go:117
-#, c-format
-msgid "Name: %s"
-msgstr "Nom : %s"
+#: lxc/network.go:783
+msgid "MANAGED"
+msgstr "GÉRÉ"
 
-#: lxc/network.go:276
-#, c-format
-msgid "Network %s created"
-msgstr "Le réseau %s a été créé"
+#: lxc/cluster.go:123
+msgid "MESSAGE"
+msgstr ""
 
-#: lxc/network.go:393
-#, c-format
-msgid "Network %s deleted"
-msgstr "Le réseau %s a été supprimé"
+#: lxc/image.go:137 lxc/image.go:576
+msgid "Make image public"
+msgstr "Rendre l'image publique"
 
-#: lxc/network.go:274
-#, fuzzy, c-format
-msgid "Network %s pending on node %s"
-msgstr "Le réseau %s a été créé"
+#: lxc/publish.go:38
+msgid "Make the image public"
+msgstr "Rendre l'image publique"
 
-#: lxc/network.go:470
-#, fuzzy, c-format
-msgid "Network %s renamed to %s"
-msgstr "Le réseau %s a été créé"
+#: lxc/network.go:32
+msgid "Manage an attach containers to networks"
+msgstr ""
 
-#: lxc/init.go:145 lxc/init.go:146
-msgid "Network name"
-msgstr "Nom du réseau"
+#: lxc/network.go:31
+msgid "Manage and attach containers to networks"
+msgstr ""
 
-#: lxc/info.go:226
-#, fuzzy
-msgid "Network usage:"
-msgstr "  Réseau utilisé :"
+#: lxc/cluster.go:25 lxc/cluster.go:26
+msgid "Manage cluster members"
+msgstr ""
 
-#: lxc/image.go:180 lxc/publish.go:36
-msgid "New alias to define at target"
-msgstr "Nouvel alias à définir sur la cible"
+#: lxc/alias.go:22 lxc/alias.go:23
+msgid "Manage command aliases"
+msgstr ""
 
-#: lxc/config.go:414
-msgid "No certificate provided to add"
-msgstr "Un certificat à ajouter n'a pas été fourni"
+#: lxc/config.go:28 lxc/config.go:29
+msgid "Manage container and server configuration options"
+msgstr ""
 
-#: lxc/network.go:312 lxc/network.go:365
-msgid "No device found for this network"
-msgstr "Aucun périphérique existant pour ce réseau"
+#: lxc/config_device.go:23 lxc/config_device.go:24
+#, fuzzy
+msgid "Manage container devices"
+msgstr "Création du conteneur"
 
-#: lxc/storage.go:444 lxc/storage.go:574
+#: lxc/config_template.go:29 lxc/config_template.go:30
 #, fuzzy
-msgid "No device found for this storage volume."
-msgstr "Aucun périphérique existant pour ce réseau"
+msgid "Manage container file templates"
+msgstr "L'arrêt du conteneur a échoué !"
 
-#: lxc/config.go:446
-msgid "No fingerprint specified."
-msgstr "Aucune empreinte n'a été indiquée."
+#: lxc/config_metadata.go:28 lxc/config_metadata.go:29
+#, fuzzy
+msgid "Manage container metadata files"
+msgstr "L'arrêt du conteneur a échoué !"
 
-#: lxc/cluster.go:143
+#: lxc/file.go:39 lxc/file.go:40
+#, fuzzy
+msgid "Manage files in containers"
+msgstr "Transfert de l'image : %s"
+
+#: lxc/image_alias.go:25 lxc/image_alias.go:26
+#, fuzzy
+msgid "Manage image aliases"
+msgstr "Rendre l'image publique"
+
+#: lxc/image.go:41
+#, fuzzy
+msgid "Manage images"
+msgstr "Rendre l'image publique"
+
+#: lxc/image.go:42
+msgid ""
+"Manage images\n"
+"\n"
+"In LXD containers are created from images. Those images were themselves\n"
+"either generated from an existing container or downloaded from an image\n"
+"server.\n"
+"\n"
+"When using remote images, LXD will automatically cache images for you\n"
+"and remove them upon expiration.\n"
+"\n"
+"The image unique identifier is the hash (sha-256) of its representation\n"
+"as a compressed tarball (or for split images, the concatenation of the\n"
+"metadata and rootfs tarballs).\n"
+"\n"
+"Images can be referenced by their full hash, shortest unique partial\n"
+"hash or alias name (if one is set)."
+msgstr ""
+
+#: lxc/profile.go:29 lxc/profile.go:30
+msgid "Manage profiles"
+msgstr ""
+
+#: lxc/storage.go:32 lxc/storage.go:33
+#, fuzzy
+msgid "Manage storage pools and volumes"
+msgstr "Copie de l'image : %s"
+
+#: lxc/storage_volume.go:33
+#, fuzzy
+msgid "Manage storage volumes"
+msgstr "Copie de l'image : %s"
+
+#: lxc/storage_volume.go:34
+msgid ""
+"Manage storage volumes\n"
+"\n"
+"Unless specified through a prefix, all volume operations affect \"custom"
+"\" (user created) volumes."
+msgstr ""
+
+#: lxc/remote.go:33 lxc/remote.go:34
+msgid "Manage the list of remote servers"
+msgstr ""
+
+#: lxc/config_trust.go:29 lxc/config_trust.go:30
+#, fuzzy
+msgid "Manage trusted clients"
+msgstr "Copie de l'image : %s"
+
+#: lxc/info.go:197
+msgid "Memory (current)"
+msgstr "Mémoire (courante)"
+
+#: lxc/info.go:201
+msgid "Memory (peak)"
+msgstr "Mémoire (pointe)"
+
+#: lxc/info.go:213
+#, fuzzy
+msgid "Memory usage:"
+msgstr "  Mémoire utilisée :"
+
+#: lxc/monitor.go:49
+msgid "Minimum level for log messages"
+msgstr ""
+
+#: lxc/config_metadata.go:102 lxc/config_metadata.go:200
+#: lxc/config_template.go:91 lxc/config_template.go:134
+#: lxc/config_template.go:176 lxc/config_template.go:260
+#: lxc/config_template.go:322 lxc/profile.go:197 lxc/profile.go:656
+#, fuzzy
+msgid "Missing container name"
+msgstr "Vous devez fournir le nom d'un conteneur pour : "
+
+#: lxc/profile.go:126
+#, fuzzy
+msgid "Missing container.name name"
+msgstr "Vous devez fournir le nom d'un conteneur pour : "
+
+#: lxc/config_device.go:103 lxc/config_device.go:203 lxc/config_device.go:276
+#: lxc/config_device.go:342 lxc/config_device.go:429 lxc/config_device.go:517
+#: lxc/config_device.go:606
+#, fuzzy
+msgid "Missing name"
+msgstr "Résumé manquant."
+
+#: lxc/network.go:128 lxc/network.go:201 lxc/network.go:344 lxc/network.go:391
+#: lxc/network.go:476 lxc/network.go:581 lxc/network.go:686 lxc/network.go:832
+#: lxc/network.go:897 lxc/network.go:946 lxc/network.go:1015
+#, fuzzy
+msgid "Missing network name"
+msgstr "Nom du réseau"
+
+#: lxc/storage.go:185 lxc/storage.go:252 lxc/storage.go:353 lxc/storage.go:408
+#: lxc/storage.go:603 lxc/storage.go:677 lxc/storage_volume.go:146
+#: lxc/storage_volume.go:225 lxc/storage_volume.go:451
+#: lxc/storage_volume.go:526 lxc/storage_volume.go:585
+#: lxc/storage_volume.go:667 lxc/storage_volume.go:766
+#: lxc/storage_volume.go:878 lxc/storage_volume.go:942
+#: lxc/storage_volume.go:1050 lxc/storage_volume.go:1114
+#: lxc/storage_volume.go:1197
+#, fuzzy
+msgid "Missing pool name"
+msgstr "Nom de l'ensemble de stockage"
+
+#: lxc/profile.go:321 lxc/profile.go:372 lxc/profile.go:444 lxc/profile.go:544
+#: lxc/profile.go:729 lxc/profile.go:777 lxc/profile.go:836
+msgid "Missing profile name"
+msgstr ""
+
+#: lxc/profile.go:266
+msgid "Missing source profile name"
+msgstr ""
+
+#: lxc/storage_volume.go:311
+#, fuzzy
+msgid "Missing source volume name"
+msgstr "Copie de l'image : %s"
+
+#: lxc/file.go:446
+#, fuzzy
+msgid "Missing target directory"
+msgstr "%s n'est pas un répertoire"
+
+#: lxc/monitor.go:30
+msgid "Monitor a local or remote LXD server"
+msgstr ""
+
+#: lxc/monitor.go:31
+msgid ""
+"Monitor a local or remote LXD server\n"
+"\n"
+"By default the monitor will listen to all message types."
+msgstr ""
+
+#: lxc/network.go:411 lxc/network.go:496 lxc/storage_volume.go:605
+#: lxc/storage_volume.go:686
+msgid "More than one device matches, specify the device name."
+msgstr "Plus d'un périphérique correspond, spécifier le nom du périphérique."
+
+#: lxc/file.go:224
+msgid "More than one file to download, but target is not a directory"
+msgstr ""
+"Plusieurs fichiers à télécharger, mais la destination n'est pas un dossier"
+
+#: lxc/move.go:30 lxc/move.go:31
+#, fuzzy
+msgid "Move containers within or in between LXD instances"
+msgstr "Forcer le conteneur à s'arrêter"
+
+#: lxc/storage_volume.go:993 lxc/storage_volume.go:994
+#, fuzzy
+msgid "Move storage volumes between pools"
+msgstr "Copie de l'image : %s"
+
+#: lxc/move.go:44
+#, fuzzy
+msgid "Move the container without its snapshots"
+msgstr "Forcer le conteneur à s'arrêter"
+
+#: lxc/storage_volume.go:375
+#, fuzzy, c-format
+msgid "Moving the storage volume: %s"
+msgstr "Copie de l'image : %s"
+
+#: lxc/image.go:588
+msgid "Must run as root to import from directory"
+msgstr ""
+
+#: lxc/action.go:147
+msgid "Must supply container name for: "
+msgstr "Vous devez fournir le nom d'un conteneur pour : "
+
+#: lxc/cluster.go:119 lxc/list.go:468 lxc/network.go:781 lxc/profile.go:613
+#: lxc/remote.go:463 lxc/storage.go:544 lxc/storage_volume.go:966
+msgid "NAME"
+msgstr "NOM"
+
+#: lxc/network.go:763 lxc/operation.go:138 lxc/remote.go:434 lxc/remote.go:439
+msgid "NO"
+msgstr "NON"
+
+#: lxc/storage_volume.go:971
+msgid "NODE"
+msgstr ""
+
+#: lxc/info.go:121
+#, c-format
+msgid "Name: %s"
+msgstr "Nom : %s"
+
+#: lxc/network.go:303
+#, c-format
+msgid "Network %s created"
+msgstr "Le réseau %s a été créé"
+
+#: lxc/network.go:353
+#, c-format
+msgid "Network %s deleted"
+msgstr "Le réseau %s a été supprimé"
+
+#: lxc/network.go:301
+#, fuzzy, c-format
+msgid "Network %s pending on node %s"
+msgstr "Le réseau %s a été créé"
+
+#: lxc/network.go:906
+#, fuzzy, c-format
+msgid "Network %s renamed to %s"
+msgstr "Le réseau %s a été créé"
+
+#: lxc/init.go:45
+msgid "Network name"
+msgstr "Nom du réseau"
+
+#: lxc/info.go:230
+#, fuzzy
+msgid "Network usage:"
+msgstr "  Réseau utilisé :"
+
+#: lxc/publish.go:39
+msgid "New alias to define at target"
+msgstr "Nouvel alias à définir sur la cible"
+
+#: lxc/image.go:140 lxc/image.go:577
+#, fuzzy
+msgid "New aliases to add to the image"
+msgstr "Nouvel alias à définir sur la cible"
+
+#: lxc/network.go:420 lxc/network.go:505
+msgid "No device found for this network"
+msgstr "Aucun périphérique existant pour ce réseau"
+
+#: lxc/storage_volume.go:614 lxc/storage_volume.go:695
+#, fuzzy
+msgid "No device found for this storage volume."
+msgstr "Aucun périphérique existant pour ce réseau"
+
+#: lxc/cluster.go:268
 #, fuzzy, c-format
 msgid "Node %s removed"
 msgstr "Profil %s supprimé de %s"
 
-#: lxc/cluster.go:119
+#: lxc/cluster.go:221
 #, fuzzy, c-format
 msgid "Node %s renamed to %s"
 msgstr "Profil %s ajouté à %s"
 
-#: lxc/copy.go:46 lxc/init.go:150 lxc/move.go:45 lxc/network.go:105
-#: lxc/storage.go:165
+#: lxc/copy.go:45 lxc/init.go:48 lxc/move.go:47
 #, fuzzy
 msgid "Node name"
 msgstr "Nom du réseau"
 
-#: lxc/storage.go:388 lxc/storage.go:481
+#: lxc/storage_volume.go:164 lxc/storage_volume.go:243
 msgid "Only \"custom\" volumes can be attached to containers."
 msgstr ""
 "Seuls les volumes \"personnalisés\" peuvent être attachés aux conteneurs."
 
-#: lxc/remote.go:101
+#: lxc/remote.go:146
 msgid "Only https URLs are supported for simplestreams"
 msgstr "Seules les URLs https sont supportées par simplestreams"
 
-#: lxc/image.go:688
+#: lxc/image.go:658
 msgid "Only https:// is supported for remote image import."
 msgstr "Seul https:// est supporté par l'import d'images distantes."
 
-#: lxc/network.go:421 lxc/network.go:605
+#: lxc/network.go:607 lxc/network.go:960
 msgid "Only managed networks can be modified."
 msgstr "Seuls les réseaux gérés par LXD peuvent être modifiés."
 
-#: lxc/operation.go:85
+#: lxc/operation.go:83
 #, fuzzy, c-format
 msgid "Operation %s deleted"
 msgstr "Le réseau %s a été supprimé"
 
-#: lxc/help.go:71 lxc/main.go:139 lxc/main.go:195
-msgid "Options:"
-msgstr "Options :"
-
-#: lxc/exec.go:69
+#: lxc/exec.go:53
 msgid "Override the terminal mode (auto, interactive or non-interactive)"
 msgstr "Surcharger le mode terminal (auto, interactif ou non-interactif)"
 
-#: lxc/list.go:641
+#: lxc/list.go:638
 msgid "PERSISTENT"
 msgstr "PERSISTANT"
 
-#: lxc/list.go:473
+#: lxc/list.go:470
 msgid "PID"
 msgstr "PID"
 
-#: lxc/list.go:472
+#: lxc/list.go:469
 msgid "PROCESSES"
 msgstr ""
 
-#: lxc/list.go:474
+#: lxc/list.go:471
 msgid "PROFILES"
 msgstr "PROFILS"
 
-#: lxc/remote.go:411
+#: lxc/remote.go:465
 msgid "PROTOCOL"
 msgstr "PROTOCOLE"
 
-#: lxc/image.go:234 lxc/remote.go:413
+#: lxc/image.go:924 lxc/remote.go:467
 msgid "PUBLIC"
 msgstr "PUBLIC"
 
-#: lxc/info.go:220
+#: lxc/info.go:224
 msgid "Packets received"
 msgstr "Paquets reçus"
 
-#: lxc/info.go:221
+#: lxc/info.go:225
 msgid "Packets sent"
 msgstr "Paquets émis"
 
-#: lxc/help.go:78
-msgid "Path to an alternate client configuration directory"
-msgstr "Chemin vers un dossier de configuration client alternatif"
-
-#: lxc/help.go:79
-msgid "Path to an alternate server directory"
-msgstr "Chemin vers un dossier de configuration serveur alternatif"
-
-#: lxc/main.go:240
+#: lxc/action.go:48 lxc/action.go:49
 #, fuzzy
-msgid "Pause containers."
+msgid "Pause containers"
 msgstr "Création du conteneur"
 
-#: lxc/main.go:42
-msgid "Permission denied, are you in the lxd group?"
-msgstr "Permission refusée, êtes-vous dans le groupe lxd ?"
-
-#: lxc/info.go:138
+#: lxc/info.go:142
 #, c-format
 msgid "Pid: %d"
 msgstr "Pid : %d"
 
-#: lxc/network.go:446 lxc/profile.go:276 lxc/storage.go:648 lxc/storage.go:1210
+#: lxc/network.go:632 lxc/profile.go:491 lxc/storage.go:299
+#: lxc/storage_volume.go:823
 msgid "Press enter to open the editor again"
 msgstr "Appuyer sur Entrée pour ouvrir à nouveau l'éditeur"
 
-#: lxc/config.go:822 lxc/config.go:887 lxc/config.go:1397 lxc/config.go:1447
-#: lxc/image.go:1192
+#: lxc/config.go:196 lxc/config.go:260 lxc/config_metadata.go:145
+#: lxc/config_template.go:205 lxc/image.go:406
 msgid "Press enter to start the editor again"
 msgstr "Appuyer sur Entrée pour lancer à nouveau l'éditeur"
 
-#: lxc/monitor.go:68
+#: lxc/monitor.go:47
 msgid "Pretty rendering"
 msgstr ""
 
-#: lxc/help.go:73
-msgid "Print debug information"
-msgstr "Afficher les informations de débogage"
-
-#: lxc/help.go:72
-msgid "Print less common commands"
-msgstr "Afficher les commandes moins communes"
+#: lxc/main.go:55
+msgid "Print help"
+msgstr ""
 
-#: lxc/query.go:37
+#: lxc/query.go:36
 msgid "Print the raw response"
 msgstr ""
 
-#: lxc/help.go:74
-msgid "Print verbose information"
-msgstr "Afficher des informations supplémentaires"
+#: lxc/main.go:54
+msgid "Print version number"
+msgstr ""
 
-#: lxc/info.go:162
+#: lxc/info.go:166
 #, c-format
 msgid "Processes: %d"
 msgstr "Processus : %d"
 
-#: lxc/profile.go:362
+#: lxc/main_aliases.go:123 lxc/main_aliases.go:131
+#, fuzzy, c-format
+msgid "Processing aliases failed: %s\n"
+msgstr "l'analyse des alias a échoué %s\n"
+
+#: lxc/profile.go:147
 #, c-format
 msgid "Profile %s added to %s"
 msgstr "Profil %s ajouté à %s"
 
-#: lxc/profile.go:226
+#: lxc/profile.go:333
 #, c-format
 msgid "Profile %s created"
 msgstr "Profil %s créé"
 
-#: lxc/profile.go:310
+#: lxc/profile.go:381
 #, c-format
 msgid "Profile %s deleted"
 msgstr "Profil %s supprimé"
 
-#: lxc/profile.go:397
+#: lxc/profile.go:690
 #, c-format
 msgid "Profile %s removed from %s"
 msgstr "Profil %s supprimé de %s"
 
-#: lxc/profile.go:300
+#: lxc/profile.go:738
 #, fuzzy, c-format
 msgid "Profile %s renamed to %s"
 msgstr "Profil %s ajouté à %s"
 
-#: lxc/copy.go:39 lxc/copy.go:40 lxc/init.go:141 lxc/init.go:142
+#: lxc/copy.go:40 lxc/init.go:43
 msgid "Profile to apply to the new container"
 msgstr "Profil à appliquer au nouveau conteneur"
 
-#: lxc/profile.go:339
+#: lxc/profile.go:225
 #, c-format
 msgid "Profiles %s applied to %s"
 msgstr "Profils %s appliqués à %s"
 
-#: lxc/info.go:136
+#: lxc/info.go:140
 #, c-format
 msgid "Profiles: %s"
 msgstr "Profils : %s"
 
-#: lxc/image.go:619
+#: lxc/image.go:849
 msgid "Properties:"
 msgstr "Propriétés :"
 
-#: lxc/remote.go:72
+#: lxc/remote.go:92
 msgid "Public image server"
 msgstr "Serveur d'images public"
 
-#: lxc/image.go:602
+#: lxc/image.go:827
 #, c-format
 msgid "Public: %s"
 msgstr "Public : %s"
 
-#: lxc/file.go:68 lxc/file.go:69
-msgid "Recursively push or pull files"
+#: lxc/publish.go:33 lxc/publish.go:34
+#, fuzzy
+msgid "Publish containers as images"
+msgstr "Création du conteneur"
+
+#: lxc/file.go:184 lxc/file.go:185
+#, fuzzy
+msgid "Pull files from containers"
+msgstr "Création du conteneur"
+
+#: lxc/file.go:323 lxc/file.go:324
+#, fuzzy
+msgid "Push files into containers"
+msgstr "Création du conteneur"
+
+#: lxc/file.go:192 lxc/file.go:330
+#, fuzzy
+msgid "Recursively transfer files"
 msgstr "Pousser ou récupérer des fichiers récursivement"
 
-#: lxc/image.go:529
+#: lxc/image.go:1211 lxc/image.go:1212
+#, fuzzy
+msgid "Refresh images"
+msgstr "Récupération de l'image : %s"
+
+#: lxc/image.go:1239
 #, fuzzy, c-format
 msgid "Refreshing the image: %s"
 msgstr "Récupération de l'image : %s"
 
-#: lxc/remote.go:69
+#: lxc/remote.go:515
+#, fuzzy, c-format
+msgid "Remote %s already exists"
+msgstr "le serveur distant %s existe déjà"
+
+#: lxc/remote.go:507 lxc/remote.go:569 lxc/remote.go:618 lxc/remote.go:656
+#, fuzzy, c-format
+msgid "Remote %s doesn't exist"
+msgstr "le serveur distant %s n'existe pas"
+
+#: lxc/remote.go:116
+#, fuzzy, c-format
+msgid "Remote %s exists as <%s>"
+msgstr "le serveur distant %s existe en tant que <%s>"
+
+#: lxc/remote.go:511 lxc/remote.go:573 lxc/remote.go:660
+#, fuzzy, c-format
+msgid "Remote %s is static and cannot be modified"
+msgstr "le serveur distant %s est statique et ne peut être modifié"
+
+#: lxc/remote.go:89
 msgid "Remote admin password"
 msgstr "Mot de passe de l'administrateur distant"
 
@@ -1163,7 +2041,7 @@ msgstr "Mot de passe de l'administrateur distant"
 msgid "Remote operation canceled by user"
 msgstr "Certificat serveur rejeté par l'utilisateur"
 
-#: lxc/info.go:122
+#: lxc/info.go:126
 #, c-format
 msgid "Remote: %s"
 msgstr "Serveur distant : %s"
@@ -1173,242 +2051,442 @@ msgstr "Serveur distant : %s"
 msgid "Remove %s (yes/no): "
 msgstr "Supprimer %s (oui/non) : "
 
-#: lxc/storage.go:1247
+#: lxc/cluster.go:237 lxc/cluster.go:238
+msgid "Remove a member from the cluster"
+msgstr ""
+
+#: lxc/alias.go:197 lxc/alias.go:198
+#, fuzzy
+msgid "Remove aliases"
+msgstr "Mot de passe de l'administrateur distant"
+
+#: lxc/config_device.go:404 lxc/config_device.go:405
+#, fuzzy
+msgid "Remove container devices"
+msgstr "L'arrêt du conteneur a échoué !"
+
+#: lxc/profile.go:631 lxc/profile.go:632
+#, fuzzy
+msgid "Remove profiles from containers"
+msgstr "Création du conteneur"
+
+#: lxc/remote.go:548 lxc/remote.go:549
+msgid "Remove remotes"
+msgstr ""
+
+#: lxc/config_trust.go:196 lxc/config_trust.go:197
+msgid "Remove trusted clients"
+msgstr ""
+
+#: lxc/cluster.go:191 lxc/cluster.go:192
+msgid "Rename a cluster member"
+msgstr ""
+
+#: lxc/alias.go:146 lxc/alias.go:147 lxc/image_alias.go:249
+#: lxc/image_alias.go:250
+msgid "Rename aliases"
+msgstr ""
+
+#: lxc/rename.go:19 lxc/rename.go:20
+#, fuzzy
+msgid "Rename containers and snapshots"
+msgstr "Forcer le conteneur à s'arrêter"
+
+#: lxc/network.go:872 lxc/network.go:873
+msgid "Rename networks"
+msgstr ""
+
+#: lxc/profile.go:704 lxc/profile.go:705
+msgid "Rename profiles"
+msgstr ""
+
+#: lxc/remote.go:486 lxc/remote.go:487
+msgid "Rename remotes"
+msgstr ""
+
+#: lxc/storage_volume.go:1024 lxc/storage_volume.go:1025
+#, fuzzy
+msgid "Rename storage volumes"
+msgstr "Copie de l'image : %s"
+
+#: lxc/storage_volume.go:1073
 #, c-format
 msgid "Renamed storage volume from \"%s\" to \"%s\""
 msgstr ""
 
-#: lxc/delete.go:36 lxc/delete.go:37
+#: lxc/delete.go:35
 msgid "Require user confirmation"
 msgstr "Requérir une confirmation de l'utilisateur"
 
-#: lxc/info.go:159
+#: lxc/info.go:163
 msgid "Resources:"
 msgstr "Ressources :"
 
-#: lxc/main.go:248
+#: lxc/action.go:68
 #, fuzzy
-msgid "Restart containers."
+msgid "Restart containers"
 msgstr "Création du conteneur"
 
-#: lxc/console.go:38
+#: lxc/action.go:69
+#, fuzzy
+msgid ""
+"Restart containers\n"
+"\n"
+"The opposite of \"lxc pause\" is \"lxc start\"."
+msgstr "Le pendant de `lxc pause` est `lxc start`."
+
+#: lxc/restore.go:23
+#, fuzzy
+msgid "Restore containers from snapshots"
+msgstr "Forcer le conteneur à s'arrêter"
+
+#: lxc/restore.go:24
+msgid ""
+"Restore containers from snapshots\n"
+"\n"
+"If --stateful is passed, then the running state will be restored too."
+msgstr ""
+
+#: lxc/console.go:39
 #, fuzzy
 msgid "Retrieve the container's console log"
 msgstr "Forcer l'arrêt du conteneur (seulement pour stop)"
 
-#: lxc/init.go:293
+#: lxc/init.go:201
 #, c-format
 msgid "Retrieving image: %s"
 msgstr "Récupération de l'image : %s"
 
-#: lxc/action.go:52
+#: lxc/action.go:112
 msgid "Run command against all containers"
 msgstr ""
 
-#: lxc/image.go:237
+#: lxc/image.go:927
 msgid "SIZE"
 msgstr "TAILLE"
 
-#: lxc/list.go:475
+#: lxc/list.go:472
 msgid "SNAPSHOTS"
 msgstr "INSTANTANÉS"
 
-#: lxc/storage.go:738
+#: lxc/storage.go:551
 msgid "SOURCE"
 msgstr "SOURCE"
 
-#: lxc/cluster.go:186 lxc/list.go:476 lxc/network.go:583 lxc/storage.go:736
+#: lxc/cluster.go:122 lxc/list.go:473 lxc/network.go:788 lxc/storage.go:549
 msgid "STATE"
 msgstr "ÉTAT"
 
-#: lxc/remote.go:414
+#: lxc/remote.go:468
 msgid "STATIC"
 msgstr "STATIQUE"
 
-#: lxc/operation.go:155
+#: lxc/operation.go:154
 #, fuzzy
 msgid "STATUS"
 msgstr "ÉTAT"
 
-#: lxc/list.go:478
+#: lxc/list.go:475
 msgid "STORAGE POOL"
 msgstr "ENSEMBLE DE STOCKAGE"
 
-#: lxc/remote.go:71
+#: lxc/query.go:26 lxc/query.go:27
+msgid "Send a raw query to LXD"
+msgstr ""
+
+#: lxc/remote.go:91
 msgid "Server authentication type (tls or macaroons)"
 msgstr ""
 
-#: lxc/remote.go:211
+#: lxc/remote.go:260
 msgid "Server certificate NACKed by user"
 msgstr "Certificat serveur rejeté par l'utilisateur"
 
-#: lxc/remote.go:311
+#: lxc/remote.go:360
 #, fuzzy
 msgid "Server doesn't trust us after authentication"
 msgstr ""
 "Le serveur ne nous fait pas confiance après l'ajout de notre certificat"
 
-#: lxc/remote.go:70
+#: lxc/remote.go:90
 msgid "Server protocol (lxd or simplestreams)"
 msgstr "Protocole du serveur (lxd ou simplestreams)"
 
-#: lxc/file.go:66
+#: lxc/config_device.go:492 lxc/config_device.go:493
+#, fuzzy
+msgid "Set container device configuration keys"
+msgstr "Clé de configuration invalide"
+
+#: lxc/config.go:354 lxc/config.go:355
+#, fuzzy
+msgid "Set container or server configuration keys"
+msgstr "Clé de configuration invalide"
+
+#: lxc/network.go:919 lxc/network.go:920
+#, fuzzy
+msgid "Set network configuration keys"
+msgstr "Clé de configuration invalide"
+
+#: lxc/profile.go:752 lxc/profile.go:753
+#, fuzzy
+msgid "Set profile configuration keys"
+msgstr "Clé de configuration invalide"
+
+#: lxc/storage.go:572 lxc/storage.go:573
+#, fuzzy
+msgid "Set storage pool configuration keys"
+msgstr "Clé de configuration invalide"
+
+#: lxc/storage_volume.go:1088 lxc/storage_volume.go:1089
+#, fuzzy
+msgid "Set storage volume configuration keys"
+msgstr "Clé de configuration invalide"
+
+#: lxc/remote.go:635 lxc/remote.go:636
+msgid "Set the URL for the remote"
+msgstr ""
+
+#: lxc/remote.go:597 lxc/remote.go:598
+#, fuzzy
+msgid "Set the default remote"
+msgstr "impossible de supprimer le serveur distant par défaut"
+
+#: lxc/file.go:333
 msgid "Set the file's gid on push"
 msgstr "Définir le gid du fichier lors de l'envoi"
 
-#: lxc/file.go:67
+#: lxc/file.go:334
 msgid "Set the file's perms on push"
 msgstr "Définir les permissions du fichier lors de l'envoi"
 
-#: lxc/file.go:65
+#: lxc/file.go:332
 msgid "Set the file's uid on push"
 msgstr "Définir l'uid du fichier lors de l'envoi"
 
-#: lxc/help.go:29
-msgid "Show all commands (not just interesting ones)"
-msgstr "Afficher toutes les comandes (pas seulement les plus intéressantes)"
+#: lxc/main.go:57
+msgid "Show all debug messages"
+msgstr ""
+
+#: lxc/main.go:58
+msgid "Show all information messages"
+msgstr ""
 
-#: lxc/help.go:75
-msgid "Show client version"
-msgstr "Afficher la version du client"
+#: lxc/config_metadata.go:175 lxc/config_metadata.go:176
+#, fuzzy
+msgid "Show container metadata files"
+msgstr "L'arrêt du conteneur a échoué !"
 
-#: lxc/info.go:40
+#: lxc/config.go:451 lxc/config.go:452
+#, fuzzy
+msgid "Show container or server configurations"
+msgstr "Afficher la configuration étendue"
+
+#: lxc/info.go:28 lxc/info.go:29
+#, fuzzy
+msgid "Show container or server information"
+msgstr "Afficher des informations supplémentaires"
+
+#: lxc/config_template.go:297 lxc/config_template.go:298
+#, fuzzy
+msgid "Show content of container file templates"
+msgstr "L'arrêt du conteneur a échoué !"
+
+#: lxc/cluster.go:141 lxc/cluster.go:142
+msgid "Show details of a cluster member"
+msgstr ""
+
+#: lxc/operation.go:173 lxc/operation.go:174
+msgid "Show details on a background operation"
+msgstr ""
+
+#: lxc/config_device.go:581 lxc/config_device.go:582
+msgid "Show full device configuration for containers or profiles"
+msgstr ""
+
+#: lxc/image.go:1284 lxc/image.go:1285
+msgid "Show image properties"
+msgstr ""
+
+#: lxc/main.go:61
+#, fuzzy
+msgid "Show less common commands"
+msgstr "Afficher les commandes moins communes"
+
+#: lxc/network.go:988 lxc/network.go:989
+#, fuzzy
+msgid "Show network configurations"
+msgstr "Afficher la configuration étendue"
+
+#: lxc/profile.go:811 lxc/profile.go:812
+#, fuzzy
+msgid "Show profile configurations"
+msgstr "Afficher la configuration étendue"
+
+#: lxc/storage.go:644 lxc/storage.go:645
+msgid "Show storage pool configurations and resources"
+msgstr ""
+
+#: lxc/storage_volume.go:1165
+#, fuzzy
+msgid "Show storage volum configurations"
+msgstr "Afficher la configuration étendue"
+
+#: lxc/storage_volume.go:1166
+#, fuzzy
+msgid "Show storage volume configurations"
+msgstr "Afficher la configuration étendue"
+
+#: lxc/info.go:39
 msgid "Show the container's last 100 log lines?"
 msgstr "Afficher les 100 dernières lignes du journal du conteneur ?"
 
-#: lxc/config.go:36
+#: lxc/remote.go:379 lxc/remote.go:380
+#, fuzzy
+msgid "Show the default remote"
+msgstr "impossible de supprimer le serveur distant par défaut"
+
+#: lxc/config.go:455
 msgid "Show the expanded configuration"
 msgstr "Afficher la configuration étendue"
 
-#: lxc/info.go:41
+#: lxc/info.go:40
 msgid "Show the resources available to the server"
 msgstr ""
 
-#: lxc/storage.go:163
+#: lxc/storage.go:648
 msgid "Show the resources available to the storage pool"
 msgstr ""
 
-#: lxc/storage.go:164
+#: lxc/storage.go:386
 msgid "Show the used and free space in bytes"
 msgstr ""
 
-#: lxc/image.go:600
+#: lxc/image.go:775 lxc/image.go:776
+msgid "Show useful information about images"
+msgstr ""
+
+#: lxc/storage.go:382 lxc/storage.go:383
+msgid "Show useful information about storage pools"
+msgstr ""
+
+#: lxc/image.go:825
 #, c-format
 msgid "Size: %.2fMB"
 msgstr "Taille : %.2f Mo"
 
-#: lxc/info.go:240
+#: lxc/info.go:244
 msgid "Snapshots:"
 msgstr "Instantanés :"
 
-#: lxc/action.go:163
+#: lxc/action.go:242
 #, fuzzy, c-format
 msgid "Some containers failed to %s"
 msgstr "L'arrêt du conteneur a échoué !"
 
-#: lxc/image.go:634
+#: lxc/image.go:867
 msgid "Source:"
 msgstr "Source :"
 
-#: lxc/main.go:258
+#: lxc/action.go:29 lxc/action.go:30
 #, fuzzy
-msgid "Start containers."
+msgid "Start containers"
 msgstr "Création du conteneur"
 
-#: lxc/launch.go:59
+#: lxc/launch.go:62
 #, c-format
 msgid "Starting %s"
 msgstr "Démarrage de %s"
 
-#: lxc/info.go:130
+#: lxc/info.go:134
 #, c-format
 msgid "Status: %s"
 msgstr "État : %s"
 
-#: lxc/main.go:264
+#: lxc/action.go:90 lxc/action.go:91
 #, fuzzy
-msgid "Stop containers."
+msgid "Stop containers"
 msgstr "L'arrêt du conteneur a échoué !"
 
-#: lxc/publish.go:37 lxc/publish.go:38
+#: lxc/publish.go:40
 msgid "Stop the container if currently running"
 msgstr "Arrêter le conteneur s'il est en cours d'exécution"
 
-#: lxc/publish.go:136
+#: lxc/publish.go:144
 msgid "Stopping container failed!"
 msgstr "L'arrêt du conteneur a échoué !"
 
-#: lxc/delete.go:121
+#: lxc/delete.go:120
 #, fuzzy, c-format
 msgid "Stopping the container failed: %s"
 msgstr "L'arrêt du conteneur a échoué !"
 
-#: lxc/storage.go:538
+#: lxc/storage.go:144
 #, fuzzy, c-format
 msgid "Storage pool %s created"
 msgstr "Le réseau %s a été créé"
 
-#: lxc/storage.go:598
+#: lxc/storage.go:194
 #, fuzzy, c-format
 msgid "Storage pool %s deleted"
 msgstr "Le réseau %s a été supprimé"
 
-#: lxc/storage.go:536
+#: lxc/storage.go:142
 #, fuzzy, c-format
 msgid "Storage pool %s pending on node %s"
 msgstr "Le réseau %s a été créé"
 
-#: lxc/init.go:147 lxc/init.go:148
+#: lxc/init.go:46
 msgid "Storage pool name"
 msgstr "Nom de l'ensemble de stockage"
 
-#: lxc/storage.go:980
+#: lxc/storage_volume.go:484
 #, fuzzy, c-format
 msgid "Storage volume %s created"
 msgstr "Profil %s créé"
 
-#: lxc/storage.go:1000
+#: lxc/storage_volume.go:545
 #, fuzzy, c-format
 msgid "Storage volume %s deleted"
 msgstr "Profil %s supprimé"
 
-#: lxc/storage.go:1135
+#: lxc/storage_volume.go:388
 #, fuzzy
 msgid "Storage volume copied successfully!"
 msgstr "Image copiée avec succès !"
 
-#: lxc/storage.go:1129
+#: lxc/storage_volume.go:376
 #, fuzzy
 msgid "Storage volume moved successfully!"
 msgstr "Image copiée avec succès !"
 
-#: lxc/action.go:50
-msgid "Store the container state (only for stop)"
+#: lxc/action.go:115
+#, fuzzy
+msgid "Store the container state"
 msgstr "Forcer l'arrêt du conteneur (seulement pour stop)"
 
-#: lxc/info.go:201
+#: lxc/info.go:205
 msgid "Swap (current)"
 msgstr "Swap (courant)"
 
-#: lxc/info.go:205
+#: lxc/info.go:209
 msgid "Swap (peak)"
 msgstr "Swap (pointe)"
 
-#: lxc/alias.go:85
+#: lxc/alias.go:128
 msgid "TARGET"
 msgstr ""
 
-#: lxc/list.go:477 lxc/network.go:516 lxc/network.go:577 lxc/operation.go:153
-#: lxc/storage.go:935
+#: lxc/list.go:474 lxc/network.go:782 lxc/network.go:854 lxc/operation.go:152
+#: lxc/storage_volume.go:965
 msgid "TYPE"
 msgstr "TYPE"
 
-#: lxc/delete.go:105
+#: lxc/delete.go:104
 msgid "The container is currently running, stop it first or pass --force."
 msgstr ""
 "Le conteneur est en cours d'exécution, l'arrêter d'abord ou ajouter --force."
 
-#: lxc/publish.go:101
+#: lxc/publish.go:109
 msgid ""
 "The container is currently running. Use --force to have it stopped and "
 "restarted."
@@ -1416,1702 +2494,2111 @@ msgstr ""
 "Le conteneur est en cours d'exécution. Utiliser --force pour qu'il soit "
 "arrêté et redémarré."
 
-#: lxc/init.go:372
+#: lxc/init.go:280
 msgid "The container you are starting doesn't have any network attached to it."
 msgstr ""
 "Le conteneur que vous démarrez n'est attaché à aucune interface réseau."
 
-#: lxc/config.go:944 lxc/config.go:961 lxc/config.go:1240
+#: lxc/config_device.go:130 lxc/config_device.go:147 lxc/config_device.go:354
 #, fuzzy
 msgid "The device already exists"
 msgstr "Le périphérique n'existe pas"
 
-#: lxc/config.go:1007 lxc/config.go:1019 lxc/config.go:1055 lxc/config.go:1073
-#: lxc/config.go:1119 lxc/config.go:1136 lxc/config.go:1179 lxc/config.go:1197
+#: lxc/config_device.go:218 lxc/config_device.go:230 lxc/config_device.go:442
+#: lxc/config_device.go:460 lxc/config_device.go:533 lxc/config_device.go:550
 msgid "The device doesn't exist"
 msgstr "Le périphérique n'existe pas"
 
-#: lxc/init.go:356
+#: lxc/init.go:264
 #, fuzzy, c-format
 msgid "The local image '%s' couldn't be found, trying '%s:%s' instead."
 msgstr "L'image locale '%s' n'a pas été trouvée, essayer '%s:' à la place."
 
-#: lxc/init.go:352
+#: lxc/init.go:260
 #, c-format
 msgid "The local image '%s' couldn't be found, trying '%s:' instead."
 msgstr "L'image locale '%s' n'a pas été trouvée, essayer '%s:' à la place."
 
-#: lxc/action.go:35
-#, fuzzy
-msgid "The opposite of \"lxc pause\" is \"lxc start\"."
-msgstr "Le pendant de `lxc pause` est `lxc start`."
-
-#: lxc/config.go:1245
+#: lxc/config_device.go:359
 #, fuzzy
 msgid "The profile device doesn't exist"
 msgstr "Le périphérique indiqué n'existe pas"
 
-#: lxc/network.go:317 lxc/network.go:370 lxc/storage.go:449 lxc/storage.go:579
+#: lxc/network.go:425 lxc/network.go:510 lxc/storage_volume.go:619
+#: lxc/storage_volume.go:700
 msgid "The specified device doesn't exist"
 msgstr "Le périphérique indiqué n'existe pas"
 
-#: lxc/network.go:321 lxc/network.go:374
+#: lxc/network.go:429 lxc/network.go:514
 msgid "The specified device doesn't match the network"
 msgstr "le périphérique indiqué ne correspond pas au réseau"
 
-#: lxc/publish.go:74
+#: lxc/publish.go:82
 msgid "There is no \"image name\".  Did you want an alias?"
 msgstr "Il n'existe pas d'\"image\".  Vouliez-vous un alias ?"
 
-#: lxc/help.go:47
-msgid ""
-"This is the LXD command line client.\n"
-"\n"
-"All of LXD's features can be driven through the various commands below.\n"
-"For help with any of those, simply call them with --help."
-msgstr ""
-"Ceci est le client en ligne de commande de LXD\n"
-"\n"
-"Toutes les fonctionnalités de LXD peuvent être utilisées à l'aide des "
-"commandes ci-dessous.\n"
-"Pour de l'aide avec l'une des commandes, simplement les utiliser avec --help."
-
-#: lxc/action.go:46
+#: lxc/action.go:122
 msgid "Time to wait for the container before killing it"
 msgstr "Temps d'attente du conteneur avant de le tuer"
 
-#: lxc/image.go:603
+#: lxc/image.go:828
 msgid "Timestamps:"
 msgstr "Horodatage :"
 
-#: lxc/init.go:374
+#: lxc/init.go:282
 msgid "To attach a network to a container, use: lxc network attach"
 msgstr "Pour attacher un réseau à un conteneur, utiliser : lxc network attach"
 
-#: lxc/init.go:373
+#: lxc/init.go:281
 msgid "To create a new network, use: lxc network create"
 msgstr "Pour créer un réseau, utiliser : lxc network create"
 
-#: lxc/console.go:173
+#: lxc/console.go:185
 msgid "To detach from the console, press: <ctrl>+a q"
 msgstr ""
 
-#: lxc/main.go:172
+#: lxc/main.go:260
 msgid "To start your first container, try: lxc launch ubuntu:16.04"
 msgstr ""
 "Pour démarrer votre premier conteneur, essayer : lxc launch ubuntu:16.04"
 
-#: lxc/copy.go:43 lxc/move.go:43
+#: lxc/storage_volume.go:997
+msgid "Transfer mode, one of pull (default), push or relay"
+msgstr ""
+
+#: lxc/copy.go:42
+msgid "Transfer mode. One of pull (default), push or relay"
+msgstr ""
+
+#: lxc/move.go:45 lxc/storage_volume.go:286
 msgid "Transfer mode. One of pull (default), push or relay."
 msgstr ""
 
-#: lxc/copy.go:212
+#: lxc/copy.go:229
 #, fuzzy, c-format
 msgid "Transferring container: %s"
 msgstr "Transfert de l'image : %s"
 
-#: lxc/image.go:717
+#: lxc/image.go:687
 #, c-format
 msgid "Transferring image: %s"
 msgstr "Transfert de l'image : %s"
 
-#: lxc/action.go:108 lxc/launch.go:77
+#: lxc/action.go:181 lxc/launch.go:80
 #, c-format
 msgid "Try `lxc info --show-log %s` for more info"
 msgstr "Essayer `lxc info --show-log %s` pour plus d'informations"
 
-#: lxc/info.go:132
+#: lxc/info.go:136
 msgid "Type: ephemeral"
 msgstr "Type : éphémère"
 
-#: lxc/info.go:134
+#: lxc/info.go:138
 msgid "Type: persistent"
 msgstr "Type : persistant"
 
-#: lxc/image.go:238
+#: lxc/image.go:928
 msgid "UPLOAD DATE"
 msgstr "DATE DE PUBLICATION"
 
-#: lxc/cluster.go:184 lxc/remote.go:410
+#: lxc/cluster.go:120 lxc/remote.go:464
 msgid "URL"
 msgstr "URL"
 
-#: lxc/network.go:580 lxc/profile.go:574 lxc/storage.go:740 lxc/storage.go:938
+#: lxc/network.go:785 lxc/profile.go:614 lxc/storage.go:553
+#: lxc/storage_volume.go:968
 msgid "USED BY"
 msgstr "UTILISÉ PAR"
 
-#: lxc/manpage.go:36
-msgid "Unable to find help2man."
-msgstr "Impossible de trouver help2man."
+#: lxc/list.go:514
+#, c-format
+msgid "Unknown column shorthand char '%c' in '%s'"
+msgstr ""
 
-#: lxc/file.go:124
+#: lxc/file.go:596
 #, c-format
 msgid "Unknown file type '%s'"
 msgstr ""
 
-#: lxc/image.go:608
+#: lxc/config_device.go:649 lxc/config_device.go:650
+#, fuzzy
+msgid "Unset container device configuration keys"
+msgstr "Clé de configuration invalide"
+
+#: lxc/config.go:559 lxc/config.go:560
+#, fuzzy
+msgid "Unset container or server configuration keys"
+msgstr "Clé de configuration invalide"
+
+#: lxc/network.go:1050 lxc/network.go:1051
+#, fuzzy
+msgid "Unset network configuration keys"
+msgstr "Clé de configuration invalide"
+
+#: lxc/profile.go:865 lxc/profile.go:866
+#, fuzzy
+msgid "Unset profile configuration keys"
+msgstr "Clé de configuration invalide"
+
+#: lxc/storage.go:728 lxc/storage.go:729
+#, fuzzy
+msgid "Unset storage pool configuration keys"
+msgstr "Clé de configuration invalide"
+
+#: lxc/storage_volume.go:1240 lxc/storage_volume.go:1241
+#, fuzzy
+msgid "Unset storage volume configuration keys"
+msgstr "Clé de configuration invalide"
+
+#: lxc/image.go:835
 #, c-format
 msgid "Uploaded: %s"
 msgstr "Publié : %s"
 
-#: lxc/action.go:38
-#, fuzzy, c-format
+#: lxc/delete.go:47
+#, fuzzy
+msgid "User aborted delete operation"
+msgstr "L'utilisateur a annulé l'opération de suppression."
+
+#: lxc/utils/cancel.go:40
 msgid ""
-"Usage: lxc %s [--all] [<remote>:]<container> [[<remote>:]<container>...]\n"
-"\n"
-"%s%s"
+"User signaled us three times, exiting. The remote operation will keep "
+"running."
 msgstr ""
-"Change l'état d'un ou plusieurs conteneurs à %s.\n"
-"\n"
-"lxc %s [<remote>:]<container> [[<remote>:]<container>...]%s"
 
-#: lxc/help.go:45
-msgid "Usage: lxc <command> [options]"
-msgstr "Utilisation : lxc <commande> [options]"
-
-#: lxc/alias.go:22
-msgid ""
-"Usage: lxc alias <subcommand> [options]\n"
-"\n"
-"Manage command aliases.\n"
-"\n"
-"lxc alias add <alias> <target>\n"
-"    Add a new alias <alias> pointing to <target>.\n"
-"\n"
-"lxc alias remove <alias>\n"
-"    Remove the alias <alias>.\n"
-"\n"
-"lxc alias list\n"
-"    List all the aliases.\n"
-"\n"
-"lxc alias rename <old alias> <new alias>\n"
-"    Rename remote <old alias> to <new alias>."
+#: lxc/query.go:35
+msgid "Wait for the operation to complete"
 msgstr ""
 
-#: lxc/cluster.go:23
+#: lxc/restore.go:36
 msgid ""
-"Usage: lxc cluster <subcommand> [options]\n"
-"\n"
-"Manage cluster nodes.\n"
-"\n"
-"lxc cluster list [<remote>:]\n"
-"    List all nodes in the cluster.\n"
-"\n"
-"lxc cluster show [<remote>:]<node>\n"
-"    Show details of a node.\n"
-"\n"
-"lxc cluster rename [<remote>:]<node> <new-name>\n"
-"    Rename a cluster node.\n"
-"\n"
-"lxc cluster delete [<remote>:]<node> [--force]\n"
-"    Delete a node from the cluster."
+"Whether or not to restore the container's running state from snapshot (if "
+"available)"
 msgstr ""
+"Restaurer ou pas l'état de fonctionnement du conteneur depuis l'instantané "
+"(s'il est disponible)"
+
+#: lxc/snapshot.go:31
+msgid "Whether or not to snapshot the container's running state"
+msgstr "Réaliser ou pas l'instantané de l'état de fonctionnement du conteneur"
+
+#: lxc/network.go:765 lxc/operation.go:140 lxc/remote.go:436 lxc/remote.go:441
+msgid "YES"
+msgstr "OUI"
+
+#: lxc/exec.go:122
+msgid "You can't pass -t and -T at the same time"
+msgstr "Il est impossible de passer -t et -T simultanément"
 
-#: lxc/config.go:85
+#: lxc/exec.go:126
 #, fuzzy
-msgid ""
-"Usage: lxc config <subcommand> [options]\n"
-"\n"
-"Change container or server configuration options.\n"
-"\n"
-"*Container configuration*\n"
-"\n"
-"lxc config get [<remote>:][container] <key>\n"
-"    Get container or server configuration key.\n"
-"\n"
-"lxc config set [<remote>:][container] <key> <value>\n"
-"    Set container or server configuration key.\n"
-"\n"
-"lxc config unset [<remote>:][container] <key>\n"
-"    Unset container or server configuration key.\n"
-"\n"
-"lxc config show [<remote>:][container] [--expanded]\n"
-"    Show container or server configuration.\n"
-"\n"
-"lxc config edit [<remote>:][container]\n"
-"    Edit configuration, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"*Container metadata*\n"
-"\n"
-"lxc config metadata show [<remote>:][container]\n"
-"    Show the container metadata.yaml content.\n"
-"\n"
-"lxc config metadata edit [<remote>:][container]\n"
-"    Edit the container metadata.yaml, either by launching external editor or "
-"reading STDIN.\n"
-"\n"
-"*Container templates*\n"
-"\n"
-"lxc config template list [<remote>:][container]\n"
-"    List the names of template files for a container.\n"
-"\n"
-"lxc config template show [<remote>:][container] [template]\n"
-"    Show the content of a template file for a container.\n"
-"\n"
-"lxc config template create [<remote>:][container] [template]\n"
-"    Add an empty template file for a container.\n"
-"\n"
-"lxc config template edit [<remote>:][container] [template]\n"
-"    Edit the content of a template file for a container, either by launching "
-"external editor or reading STDIN.\n"
-"\n"
-"lxc config template delete [<remote>:][container] [template]\n"
-"    Delete a template file for a container.\n"
-"\n"
-"\n"
-"*Device management*\n"
-"\n"
-"lxc config device add [<remote>:]<container> <device> <type> [key=value...]\n"
-"    Add a device to a container.\n"
-"\n"
-"lxc config device get [<remote>:]<container> <device> <key>\n"
-"    Get a device property.\n"
-"\n"
-"lxc config device set [<remote>:]<container> <device> <key> <value>\n"
-"    Set a device property.\n"
-"\n"
-"lxc config device unset [<remote>:]<container> <device> <key>\n"
-"    Unset a device property.\n"
-"\n"
-"lxc config device override [<remote>:]<container> <device> [key=value...]\n"
-"    Copy a profile inherited device into local container config.\n"
-"\n"
-"lxc config device list [<remote>:]<container>\n"
-"    List devices for container.\n"
-"\n"
-"lxc config device show [<remote>:]<container>\n"
-"    Show full device details for container.\n"
-"\n"
-"lxc config device remove [<remote>:]<container> <name>...\n"
-"    Remove device from container.\n"
-"\n"
-"*Client trust store management*\n"
-"\n"
-"lxc config trust list [<remote>:]\n"
-"    List all trusted certs.\n"
-"\n"
-"lxc config trust add [<remote>:] <certfile.crt>\n"
-"    Add certfile.crt to trusted hosts.\n"
-"\n"
-"lxc config trust remove [<remote>:] [hostname|fingerprint]\n"
-"    Remove the cert from trusted hosts.\n"
-"\n"
-"*Examples*\n"
-"\n"
-"cat config.yaml | lxc config edit <container>\n"
-"    Update the container configuration from config.yaml.\n"
-"\n"
-"lxc config device add [<remote>:]container1 <device-name> disk source=/share/"
-"c1 path=opt\n"
-"    Will mount the host's /share/c1 onto /opt in the container.\n"
-"\n"
-"lxc config set [<remote>:]<container> limits.cpu 2\n"
-"    Will set a CPU limit of \"2\" for the container.\n"
-"\n"
-"lxc config set core.https_address [::]:8443\n"
-"    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
-"\n"
-"lxc config set core.trust_password blah\n"
-"    Will set the server's trust password to blah."
+msgid "You can't pass -t or -T at the same time as --mode"
+msgstr "impossible de copier vers le même nom de conteneur"
+
+#: lxc/copy.go:78
+#, fuzzy
+msgid "You must specify a destination container name when using --target"
+msgstr "vous devez spécifier un nom de conteneur source"
+
+#: lxc/copy.go:73 lxc/move.go:188
+#, fuzzy
+msgid "You must specify a source container name"
+msgstr "vous devez spécifier un nom de conteneur source"
+
+#: lxc/copy.go:68 lxc/move.go:91 lxc/move.go:183
+msgid "You must use the same source and destination remote when using --target"
 msgstr ""
-"Gérer la configuration.\n"
-"\n"
-"lxc config device add [<remote>:]<container> <name> <type> [key=value]...   "
-"Ajouter un périphérique à un conteneur.\n"
-"lxc config device get [<remote>:]<container> <name> <key>                   "
-"Obtenir la propriété d'un périphérique.\n"
-"lxc config device set [<remote>:]<container> <name> <key> <value>           "
-"Positionner la propriété d'un périphérique.\n"
-"lxc config device unset [<remote>:]<container> <name> <key>                 "
-"Désaffecter la propriété d'un périphérique.\n"
-"lxc config device list [<remote>:]<container>                               "
-"Lister les périphériques d'un conteneur.\n"
-"lxc config device show [<remote>:]<container>                               "
-"Afficher les détails des périphériques d'un conteneur.\n"
-"lxc config device remove [<remote>:]<container> <name>                      "
-"Supprimer les périphériques d'un conteneur.\n"
-"\n"
-"lxc config get [<remote>:]<container> <key>                                 "
-"Obtenir une clé de configuration d'un conteneur ou d'un serveur.\n"
-"lxc config set [<remote>:]<container> <key> <value>                         "
-"Positionner une clé de configuration d'un conteneur ou d'un serveur.\n"
-"lxc config unset [<remote>:]<container> <key>                               "
-"Désaffecter une clé de configuration d'un conteneur ou d'un serveur.\n"
-"lxc config show [<remote>:]<container> [--expanded]                         "
-"Afficher la configuration d'un conteneur ou d'un serveur.\n"
-"lxc config edit [<remote>:]<container>                                      "
-"Éditer la configuration d'un conteneur ou d'un serveur dans un éditeur "
-"externe.\n"
-"    Éditer la configuration, soit en lançant un éditeur externe ou en lisant "
-"STDIN.\n"
-"    Exemple : lxc config edit <container> # nace l'éditeur\n"
-"              cat config.yaml | lxc config edit <config> # lit depuis config."
-"yaml\n"
-"\n"
-"lxc config trust list [<remote>:]                                           "
-"Lister tous les certificats de confiance.\n"
-"lxc config trust add [<remote>:] <certfile.crt>                             "
-"Ajouter certfile.crt aux hôtes de confiance.\n"
-"lxc config trust remove [<remote>:] [hostname|fingerprint]                  "
-"Supprimer le certificat des hôtes de confiance.\n"
-"\n"
-"Exemples :\n"
-"Pour monter le répertoire /share/c1 sur le répertoire /opt du conteneur :\n"
-"    lxc config device add [remote:]container1 <device-name> disk source=/"
-"share/c1 path=opt\n"
-"\n"
-"Pour positionner une clé de configuration dans la configuration lxc :\n"
-"    lxc config set [<remote>:]<container> raw.lxc 'lxc.aa_allow_incomplete = "
-"1'\n"
-"\n"
-"Pour écouter sur le port 8443 en IPv4 et IPv6 (vous pouvez omettre 8443 "
-"c'est la valeur par défaut) :\n"
-"    lxc config set core.https_address [::]:8443\n"
-"\n"
-"Pour positionner le mot de passe de confiance du serveur :\n"
-"    lxc config set core.trust_password blah"
 
-#: lxc/console.go:31
-msgid ""
-"Usage: lxc console [<remote>:]<container> [-l]\n"
-"\n"
-"Interact with the container's console device and log."
+#: lxc/alias.go:53
+msgid "add <alias> <target>"
 msgstr ""
 
-#: lxc/copy.go:30
-#, fuzzy
-msgid ""
-"Usage: lxc copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>] "
-"[--ephemeral|e] [--profile|-p <profile>...] [--config|-c <key=value>...] [--"
-"container-only] [--target <node>]\n"
-"\n"
-"Copy containers within or in between LXD instances."
+#: lxc/config_trust.go:57
+msgid "add [<remote>:] <cert>"
 msgstr ""
-"Copier les conteneurs dans ou depuis les instances LXD.\n"
-"\n"
-"lxc copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>] [--"
-"ephemeral|e] [--profile|-p <profile>...] [--config|-c <key=value>...]"
 
-#: lxc/delete.go:27
-#, fuzzy
-msgid ""
-"Usage: lxc delete [<remote>:]<container>[/<snapshot>] "
-"[[<remote>:]<container>[/<snapshot>]...]\n"
-"\n"
-"Delete containers and snapshots."
+#: lxc/profile.go:100
+msgid "add [<remote>:]<container> <profile>"
 msgstr ""
-"Supprimer des conteneurs ou des instantanés.\n"
-"\n"
-"lxc delete [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
-"<snapshot>]...]\n"
-"\n"
-"Détruit les conteneurs ou les instantanés ainsi que toute donnée associée "
-"(configuration, instantanés, …)."
 
-#: lxc/exec.go:53
-#, fuzzy
-msgid ""
-"Usage: lxc exec [<remote>:]<container> [-t] [-T] [-n] [--mode=auto|"
-"interactive|non-interactive] [--env KEY=VALUE...] [--] <command line>\n"
-"\n"
-"Execute commands in containers.\n"
-"\n"
-"The command is executed directly using exec, so there is no shell and shell "
-"patterns (variables, file redirects, ...)\n"
-"won't be understood. If you need a shell environment you need to execute the "
-"shell executable, passing the shell commands\n"
-"as arguments, for example:\n"
-"\n"
-"    lxc exec <container> -- sh -c \"cd /tmp && pwd\"\n"
-"\n"
-"Mode defaults to non-interactive, interactive mode is selected if both stdin "
-"AND stdout are terminals (stderr is ignored)."
+#: lxc/config_device.go:74
+msgid "add [<remote>:]<container|profile> <device> <type> [key=value...]"
+msgstr ""
+
+#: lxc/remote.go:82
+msgid "add [<remote>] <IP|FQDN|URL>"
 msgstr ""
-"Exécuter la commande indiquée dans un conteneur.\n"
-"\n"
-"lxc exec [<remote>:]<container> [--mode=auto|interactive|non-interactive] [--"
-"env KEY=VALUE...] [--] <command line>\n"
-"\n"
-"Le mode est non-interactif par défaut, le mode interactif est\n"
-"sélectionné si à la fois stdin et stdout sont des terminaux (stderr\n"
-"est ignoré)."
 
-#: lxc/file.go:39
+#: lxc/alias.go:21 lxc/image_alias.go:24
 #, fuzzy
+msgid "alias"
+msgstr "Alias :"
+
+#: lxc/profile.go:160
+msgid "assign [<remote>:]<container> <profiles>"
+msgstr ""
+
+#: lxc/network.go:102
+msgid "attach [<remote>:]<network> <container> [device name] [interface name]"
+msgstr ""
+
+#: lxc/storage_volume.go:120
+msgid "attach [<remote>:]<pool> <volume> <container> [device name] <path>"
+msgstr ""
+
+#: lxc/storage_volume.go:199
 msgid ""
-"Usage: lxc file <subcommand> [options]\n"
-"\n"
-"Manage files in containers.\n"
+"attach-profile [<remote:>]<pool> <volume> <profile> [device name] <path>"
+msgstr ""
+
+#: lxc/network.go:175
+msgid ""
+"attach-profile [<remote>:]<network> <profile> [device name] [interface name]"
+msgstr ""
+
+#: lxc/cluster.go:24
+msgid "cluster"
+msgstr ""
+
+#: lxc/config.go:27
+msgid "config"
+msgstr ""
+
+#: lxc/console.go:30
+msgid "console [<remote>:]<container>"
+msgstr ""
+
+#: lxc/storage_volume.go:280
+msgid "copy <pool>/<volume> <pool>/<volume>"
+msgstr ""
+
+#: lxc/image.go:128
+msgid "copy [<remote>:]<image> <remote>:"
+msgstr ""
+
+#: lxc/profile.go:238
+msgid "copy [<remote>:]<profile> [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/copy.go:32
+msgid "copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>]"
+msgstr ""
+
+#: lxc/image_alias.go:57
+msgid "create [<remote>:]<alias> <fingerprint>"
+msgstr ""
+
+#: lxc/config_template.go:65
+msgid "create [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/network.go:248
+msgid "create [<remote>:]<network> [key=value...]"
+msgstr ""
+
+#: lxc/storage.go:87
+msgid "create [<remote>:]<pool> <driver> [key=value]..."
+msgstr ""
+
+#: lxc/storage_volume.go:424
+msgid "create [<remote>:]<pool> <volume> [key=value]..."
+msgstr ""
+
+#: lxc/profile.go:295
+msgid "create [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/remote.go:453
+msgid "default"
+msgstr "par défaut"
+
+#: lxc/image_alias.go:103
+msgid "delete [<remote>:]<alias>"
+msgstr ""
+
+#: lxc/config_template.go:107
+msgid "delete [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/file.go:70
+#, fuzzy
+msgid "delete [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...]"
+msgstr ""
+"Change l'état d'un ou plusieurs conteneurs à %s.\n"
 "\n"
-"lxc file pull [-r|--recursive] [<remote>:]<container>/<path> "
-"[[<remote>:]<container>/<path>...] <target path>\n"
-"    Pull files from containers.\n"
+"lxc %s [<remote>:]<container> [[<remote>:]<container>...]%s"
+
+#: lxc/delete.go:27
+#, fuzzy
+msgid ""
+"delete [<remote>:]<container>[/<snapshot>] [[<remote>:]<container>[/"
+"<snapshot>]...]"
+msgstr ""
+"Supprimer des conteneurs ou des instantanés.\n"
 "\n"
-"lxc file push [-r|--recursive] [-p|--create-dirs] [--uid=UID] [--gid=GID] [--"
-"mode=MODE] <source path> [<source path>...] [<remote>:]<container>/<path>\n"
-"    Push files into containers.\n"
+"lxc delete [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
+"<snapshot>]...]\n"
 "\n"
-"lxc file delete [<remote>:]<container>/<path> [[<remote>:]<container>/"
-"<path>...]\n"
-"    Delete files in containers.\n"
+"Détruit les conteneurs ou les instantanés ainsi que toute donnée associée "
+"(configuration, instantanés, …)."
+
+#: lxc/image.go:258
+#, fuzzy
+msgid "delete [<remote>:]<image> [[<remote>:]<image>...]"
+msgstr ""
+"Change l'état d'un ou plusieurs conteneurs à %s.\n"
 "\n"
-"lxc file edit [<remote>:]<container>/<path>\n"
-"    Edit files in containers using the default text editor.\n"
+"lxc %s [<remote>:]<container> [[<remote>:]<container>...]%s"
+
+#: lxc/network.go:317
+msgid "delete [<remote>:]<network>"
+msgstr ""
+
+#: lxc/operation.go:51
+msgid "delete [<remote>:]<operation>"
+msgstr ""
+
+#: lxc/storage.go:158
+msgid "delete [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:498
+msgid "delete [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:345
+msgid "delete [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/storage.go:431
+msgid "description"
+msgstr ""
+
+#: lxc/network.go:365
+msgid "detach [<remote>:]<network> <container> [device name]"
+msgstr ""
+
+#: lxc/storage_volume.go:559
+msgid "detach [<remote>:]<pool> <volume> <container> [device name]"
+msgstr ""
+
+#: lxc/storage_volume.go:641
+msgid "detach-profile [<remote:>]<pool> <volume> <profile> [device name]"
+msgstr ""
+
+#: lxc/network.go:450
+msgid "detach-profile [<remote>:]<network> <container> [device name]"
+msgstr ""
+
+#: lxc/config_device.go:22
+msgid "device"
+msgstr ""
+
+#: lxc/init.go:223
+msgid "didn't get any affected image, container or snapshot from server"
+msgstr "pas d'image, conteneur ou instantané affecté sur ce serveur"
+
+#: lxc/image.go:819
+msgid "disabled"
+msgstr "désactivé"
+
+#: lxc/storage.go:430
+msgid "driver"
+msgstr ""
+
+#: lxc/config_template.go:150
+msgid "edit [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/file.go:120
+msgid "edit [<remote>:]<container>/<path>"
+msgstr ""
+
+#: lxc/image.go:310
+msgid "edit [<remote>:]<image>"
+msgstr ""
+
+#: lxc/network.go:535
+msgid "edit [<remote>:]<network>"
+msgstr ""
+
+#: lxc/storage.go:206
+msgid "edit [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:722
+msgid "edit [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:394
+msgid "edit [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/config.go:86 lxc/config_metadata.go:52
+msgid "edit [<remote>:][container]"
+msgstr ""
+
+#: lxc/image.go:821
+msgid "enabled"
+msgstr "activé"
+
+#: lxc/action.go:234
+#, c-format
+msgid "error: %v"
+msgstr "erreur : %v"
+
+#: lxc/exec.go:37
+msgid "exec [<remote>:]<container> [flags] [--] <command line>"
+msgstr ""
+
+#: lxc/image.go:433
+msgid "export [<remote>:]<image> [target]"
+msgstr ""
+
+#: lxc/file.go:38
+msgid "file"
+msgstr ""
+
+#: lxc/config_device.go:177
+msgid "get [<remote>:]<container|profile> <device> <key>"
+msgstr ""
+
+#: lxc/network.go:658
+msgid "get [<remote>:]<network> <key>"
+msgstr ""
+
+#: lxc/storage.go:326
+msgid "get [<remote>:]<pool> <key>"
+msgstr ""
+
+#: lxc/storage_volume.go:851
+msgid "get [<remote>:]<pool> <volume> <key>"
+msgstr ""
+
+#: lxc/profile.go:518
+msgid "get [<remote>:]<profile> <key>"
+msgstr ""
+
+#: lxc/config.go:287
+msgid "get [<remote>:][container] <key>"
+msgstr ""
+
+#: lxc/remote.go:378
+#, fuzzy
+msgid "get-default"
+msgstr "par défaut"
+
+#: lxc/image.go:40
+msgid "image"
+msgstr ""
+
+#: lxc/image.go:569
+msgid ""
+"import <tarball>|<directory>|<URL> [<rootfs tarball>] [<remote>:] "
+"[key=value...]"
+msgstr ""
+
+#: lxc/storage.go:428
+msgid "info"
+msgstr ""
+
+#: lxc/image.go:774
+msgid "info [<remote>:]<image>"
+msgstr ""
+
+#: lxc/storage.go:381
+msgid "info [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/info.go:27
+msgid "info [<remote>:][<container>]"
+msgstr ""
+
+#: lxc/init.go:33
+msgid "init [<remote>:]<image> [<remote>:][<name>]"
+msgstr ""
+
+#: lxc/launch.go:20
+msgid "launch [<remote>:]<image> [<remote>:][<name>]"
+msgstr ""
+
+#: lxc/alias.go:96 lxc/remote.go:411
+msgid "list"
+msgstr ""
+
+#: lxc/cluster.go:56 lxc/config_trust.go:112 lxc/network.go:716
+#: lxc/operation.go:95 lxc/profile.go:565 lxc/storage.go:488
+msgid "list [<remote>:]"
+msgstr ""
+
+#: lxc/image.go:887
+msgid "list [<remote>:] [filter]"
+msgstr ""
+
+#: lxc/image_alias.go:146
+msgid "list [<remote>:] [filters...]"
+msgstr ""
+
+#: lxc/list.go:45
+msgid "list [<remote>:] [filters]"
+msgstr ""
+
+#: lxc/config_template.go:234
+msgid "list [<remote>:]<container>"
+msgstr ""
+
+#: lxc/config_device.go:249
+msgid "list [<remote>:]<container|profile>"
+msgstr ""
+
+#: lxc/storage_volume.go:915
+msgid "list [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/network.go:806
+msgid "list-leases [<remote>:]<network>"
+msgstr ""
+
+#: lxc/alias.go:57
+msgid ""
+"lxc alias add list list -c ns46S\n"
+"    Overwrite the \"list\" command to pass -c ns46S."
+msgstr ""
+
+#: lxc/alias.go:200
+msgid ""
+"lxc alias remove my-list\n"
+"    Remove the \"my-list\" alias."
+msgstr ""
+
+#: lxc/alias.go:149
+msgid ""
+"lxc alias rename list my-list\n"
+"    Rename existing alias \"list\" to \"my-list\"."
+msgstr ""
+
+#: lxc/config_device.go:78
+msgid ""
+"lxc config device add [<remote>:]container1 <device-name> disk source=/share/"
+"c1 path=opt\n"
+"    Will mount the host's /share/c1 onto /opt in the container."
+msgstr ""
+
+#: lxc/config.go:90
+msgid ""
+"lxc config edit <container> < container.yaml\n"
+"    Update the container configuration from config.yaml."
+msgstr ""
+
+#: lxc/config.go:357
+msgid ""
+"lxc config set [<remote>:]<container> limits.cpu 2\n"
+"    Will set a CPU limit of \"2\" for the container.\n"
 "\n"
-"*Examples*\n"
-"lxc file push /etc/hosts foo/etc/hosts\n"
-"   To push /etc/hosts into the container \"foo\".\n"
+"lxc config set core.https_address [::]:8443\n"
+"    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
 "\n"
+"lxc config set core.trust_password blah\n"
+"    Will set the server's trust password to blah."
+msgstr ""
+
+#: lxc/file.go:187
+msgid ""
 "lxc file pull foo/etc/hosts .\n"
 "   To pull /etc/hosts from the container and write it to the current "
 "directory."
 msgstr ""
-"Gérer les fichiers d'un conteneur.\n"
+
+#: lxc/file.go:326
+msgid ""
+"lxc file push /etc/hosts foo/etc/hosts\n"
+"   To push /etc/hosts into the container \"foo\"."
+msgstr ""
+
+#: lxc/image.go:314
+msgid ""
+"lxc image edit <image>\n"
+"    Launch a text editor to edit the properties\n"
 "\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"
+"lxc image edit <image> < image.yaml\n"
+"    Load the image properties from a YAML file"
+msgstr ""
+
+#: lxc/info.go:31
+#, fuzzy
+msgid ""
+"lxc info [<remote>:]<container> [--show-log]\n"
+"    For container information.\n"
 "\n"
-"<source> dans le cas de pull, <target> dans le cas de push et <file> in the "
-"dans le cas d'edit sont de la forme <container name>/<path>\n"
+"lxc info [<remote>:] [--resources]\n"
+"    For LXD server information."
+msgstr ""
+"Utilisation: lxc info [<serveur distant>:][<conteneur>] [--show-log]\n"
 "\n"
-"Exemples :\n"
+"Afficher l'information du conteneur ou du serveur.\n"
 "\n"
-"Pour pousser /etc/hosts dans le conteneur foo :\n"
-"  lxc file push /etc/hosts foo/etc/hosts\n"
+"lxc info [<serveur distant>:]<conteneur> [--show-log]\n"
+"    Pour l'information du conteneur.\n"
 "\n"
-"Pour récupérer /etc/hosts du conteneur :\n"
-"  lxc file pull foo/etc/hosts ."
+"lxc info [<serveur distant>:]\n"
+"    Pour l'information du serveur LXD."
+
+#: lxc/init.go:37
+msgid "lxc init ubuntu:16.04 u1"
+msgstr ""
 
-#: lxc/finger.go:15
+#: lxc/launch.go:24
+msgid "lxc launch ubuntu:16.04 u1"
+msgstr ""
+
+#: lxc/list.go:103
 msgid ""
-"Usage: lxc finger [<remote>:]\n"
+"lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:"
+"MAC\n"
+"  Show containers using the \"NAME\", \"BASE IMAGE\", \"STATE\", \"IPV4\", "
+"\"IPV6\" and \"MAC\" columns.\n"
+"  \"BASE IMAGE\" and \"MAC\" are custom columns generated from container "
+"configuration keys.\n"
 "\n"
-"Check if the LXD server is alive."
+"lxc list -c ns,user.comment:comment\n"
+"  List images with their running state and user comment."
 msgstr ""
-"Utilisation: lxc finger [<serveur distant>:]\n"
-"\n"
-"Vérifie si le serveur LXD est actif."
 
-#: lxc/help.go:22
+#: lxc/monitor.go:35
 msgid ""
-"Usage: lxc help [--all]\n"
+"lxc monitor --type=logging\n"
+"    Only show log messages.\n"
 "\n"
-"Help page for the LXD client."
-msgstr ""
-"Utilisation: lxc help [--all]\n"
+"lxc monitor --pretty --type=logging --loglevel=info\n"
+"    Show a pretty log of messages with info level or higher.\n"
 "\n"
-"Page d'aide pour le client LXD."
+"lxc monitor --type=lifecycle\n"
+"    Only show lifecycle events."
+msgstr ""
 
-#: lxc/image.go:73
+#: lxc/move.go:33
 #, fuzzy
 msgid ""
-"Usage: lxc image <subcommand> [options]\n"
-"\n"
-"Manipulate container images.\n"
+"lxc move [<remote>:]<source container> [<remote>:][<destination container>] "
+"[--container-only]\n"
+"    Move a container between two hosts, renaming it if destination name "
+"differs.\n"
 "\n"
-"In LXD containers are created from images. Those images were themselves\n"
-"either generated from an existing container or downloaded from an image\n"
-"server.\n"
+"lxc move <old name> <new name> [--container-only]\n"
+"    Rename a local container.\n"
 "\n"
-"When using remote images, LXD will automatically cache images for you\n"
-"and remove them upon expiration.\n"
-"\n"
-"The image unique identifier is the hash (sha-256) of its representation\n"
-"as a compressed tarball (or for split images, the concatenation of the\n"
-"metadata and rootfs tarballs).\n"
-"\n"
-"Images can be referenced by their full hash, shortest unique partial\n"
-"hash or alias name (if one is set).\n"
-"\n"
-"\n"
-"lxc image import <tarball>|<dir> [<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) or an image directory into the LXD "
-"image store.\n"
-"    Directory import is only available on Linux and must be performed as "
-"root.\n"
-"\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"
-"    Delete one or more images from the LXD image store.\n"
-"\n"
-"lxc image refresh [<remote>:]<image> [[<remote>:]<image>...]\n"
-"    Refresh one or more images from its parent remote.\n"
-"\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"
-"    The target may be an existing directory, file name, or \"-\" to specify\n"
-"    stdout.  The target MUST be a directory when exporting a split image.\n"
-"    If the target is a directory, the image's name (each part's name for\n"
-"    split images) as found in the database will be used for the exported\n"
-"    image.  If the target is a file (not a directory and not stdout), then\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"
-"    Print everything LXD knows about a given image.\n"
-"\n"
-"lxc image list [<remote>:] [filter] [--format csv|json|table|yaml] [-c "
-"<columns>]\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"
-"    The -c option takes a (optionally comma-separated) list of arguments "
-"that\n"
-"    control which image attributes to output when displaying in table or "
-"csv\n"
-"    format.\n"
-"\n"
-"    Default column layout is: lfpdasu\n"
-"\n"
-"    Column shorthand chars:\n"
-"\n"
-"        l - Shortest image alias (and optionally number of other aliases)\n"
-"\n"
-"        L - Newline-separated list of all image aliases\n"
-"\n"
-"        f - Fingerprint\n"
-"\n"
-"        p - Whether image is public\n"
-"\n"
-"        d - Description\n"
-"\n"
-"        a - Architecture\n"
-"\n"
-"        s - Size\n"
-"\n"
-"        u - Upload date\n"
-"\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"
-"    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"
-"    Create a new alias for an existing image.\n"
-"\n"
-"lxc image alias rename [<remote>:]<alias> <new-name>\n"
-"    Rename an alias.\n"
-"\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."
+"lxc move <container>/<old snapshot name> <container>/<new snapshot name>\n"
+"    Rename a snapshot."
 msgstr ""
-"Manipuler les images de conteneur.\n"
-"\n"
-"Dans LXD les conteneurs sont créés depuis des images.  Ces images sont\n"
-"elles-même générées soit depuis des conteneurs existants ou téléchargées\n"
-"depuis un serveur d'image\n"
-"\n"
-"Lors de l'utilisation d'images distantes, LXD cachera automatiquement ces\n"
-"images pour vous et les supprimera à expiration.\n"
-"\n"
-"L'identifiant unique d'image est l'empreinte (sha-256) de sa représentation\n"
-"sous la forme d'une archive tar (ou pour les images fractionnées, la\n"
-"concaténation de ses métadonnées et des archives du système de fichiers\n"
-"racine).\n"
-"\n"
-"Les images sont référencées par leur empreinte complète, le préfixe unique\n"
-"le plus court ou leur alias (s'il est positionné).\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"
-"    Importer l'archive (ou les archives) tar d'une image dans le dépôt LXD.\n"
-"\n"
-"lxc image copy [<remote>:]<image> <remote>: [--alias=ALIAS].. [--copy-"
-"aliases] [--public] [--auto-update]\n"
-"    Copier une image d'un démon LXD vers un autre au travers du réseau.\n"
-"\n"
-"    Le booléen auto-update indique au serveur qu'il doit garder cette image\n"
-"    à jour.  Cela requiert que la source soit un alias et qu'elle soit\n"
-"    publique.\n"
-"\n"
-"lxc image delete [<remote>:]<image> [<remote>:][<image>...]\n"
-"    Supprimer une ou plusieurs images du dépôt LXD.\n"
-"\n"
-"lxc image export [<remote>:]<image> [<target>]\n"
-"    Exporter une image du dépôt LXD sous la forme d'une archive tar "
-"distribuable.\n"
-"\n"
-"    La cible en sortie est optionnelle et le répertoire de travail est sa\n"
-"    valeur par défaut.  La cible peut être un répertoire existant, un nom\n"
-"    de fichier, ou \\-\\ pour spécifier stdout.  La cible DOIT être un\n"
-"    répertoire lors de l'export d'une image fractionnée.  Si la cible est\n"
-"    un répertoire, le nom de l'image (le nom de chaque partie pour une\n"
-"    image fractionnée) telle que présent dans la base de données sera\n"
-"    utilisé pour l'image exportée.  Si la cible est un fichier (ni un\n"
-"    répertoire, ni stdout), alors l'extension appropriée sera ajoutée au\n"
-"    nom de fichier fourni suivant l'algorithme utilisé pour comprimer\n"
-"    l'image.\n"
+"Déplacer les conteneurs dans ou entre des instances lxd.\n"
 "\n"
-"lxc image info [<remote>:]<image>\n"
-"    Afficher toutes les informations connues concernant une image donnée.\n"
+"lxc move [<remote>:]<source container> [<remote>:][<destination container>]\n"
+"    Déplace un conteneur entre deux hôtes, en le renommant si le nom\n"
+"    de la destination diffère de l'original.\n"
 "\n"
-"lxc image list [<remote>:] [filter] [--format table|json]\n"
-"    Lister les images contenues dans le dépôt LXD.  Les filtres peuvent\n"
-"    être de la forme <clé>=<valeur> pour un filtrage sur les propriétés, ou\n"
-"    une partie de l'empreinte de l'image ou une partie de l'alias de\n"
-"    l'image.\n"
+"lxc move <old name> <new name>\n"
+"    Renomme un conteneur local.\n"
 "\n"
-"lxc image show [<remote>:]<image>\n"
-"    Sortie yaml des propriétés de l'image modifiables par l'utilisateur.\n"
+"lxc move <container>/<old snapshot name> <container>/<new snapshot name>\n"
+"    Renomme un instantané."
+
+#: lxc/operation.go:176
+msgid ""
+"lxc operation show 344a79e4-d88a-45bf-9c39-c72c26f6ab8a\n"
+"    Show details on that operation UUID"
+msgstr ""
+
+#: lxc/profile.go:165
+msgid ""
+"lxc profile assign foo default,bar\n"
+"    Set the profiles for \"foo\" to \"default\" and \"bar\".\n"
 "\n"
-"lxc image edit [<remote>:]<image>\n"
-"    Éditer l'image, soit en lançant un éditeur externe ou en lisant STDIN.\n"
-"    Exemple : lxc image edit <image> # lance l'éditeur\n"
-"              cat image.yaml | lxc image edit <image> # lit depuis image."
-"yaml\n"
+"lxc profile assign foo default\n"
+"    Reset \"foo\" to only using the \"default\" profile.\n"
 "\n"
-"lxc image alias create [<remote>:]<alias> <fingerprint>\n"
-"    Créer un nouvel alias pour une image existante.\n"
+"lxc profile assign foo ''\n"
+"    Remove all profile from \"foo\""
+msgstr ""
+
+#: lxc/profile.go:398
+msgid ""
+"lxc profile edit <profile> < profile.yaml\n"
+"    Update a profile using the content of profile.yaml"
+msgstr ""
+
+#: lxc/query.go:29
+msgid ""
+"lxc query -X DELETE --wait /1.0/containers/c1\n"
+"    Delete local container \"c1\"."
+msgstr ""
+
+#: lxc/snapshot.go:26
+msgid ""
+"lxc snapshot u1 snap0\n"
+"    Create a snapshot of \"u1\" called \"snap0\"."
+msgstr ""
+
+#: lxc/restore.go:28
+msgid ""
+"lxc snapshot u1 snap0\n"
+"    Create the snapshot.\n"
 "\n"
-"lxc image alias delete [<remote>:]<alias>\n"
-"    Supprimer un alias.\n"
+"lxc restore u1 snap0\n"
+"    Restore the snapshot."
+msgstr ""
+
+#: lxc/storage.go:210
+msgid ""
+"lxc storage edit [<remote>:]<pool> < pool.yaml\n"
+"    Update a storage pool using the content of pool.yaml."
+msgstr ""
+
+#: lxc/storage_volume.go:726
+msgid ""
+"lxc storage volume edit [<remote>:]<pool> <volume> < volume.yaml\n"
+"    Update a storage volume using the content of pool.yaml."
+msgstr ""
+
+#: lxc/storage_volume.go:1168
+msgid ""
+"lxc storage volume show default data\n"
+"    Will show the properties of a custom volume called \"data\" in the "
+"\"default\" pool.\n"
 "\n"
-"lxc image alias list [<remote>:] [<filter>]\n"
-"    Lister les alias.  Les filtres peuvent être une partie de l'empreinte\n"
-"    de l'image ou une partie de l'alias de l'image."
+"lxc storage volume show default container/data\n"
+"    Will show the properties of the filesystem for a container called \"data"
+"\" in the \"default\" pool."
+msgstr ""
 
-#: lxc/info.go:27
+#: lxc/config_metadata.go:27
+msgid "metadata"
+msgstr ""
+
+#: lxc/monitor.go:29
+msgid "monitor [<remote>:]"
+msgstr ""
+
+#: lxc/storage_volume.go:991
+msgid "move [<pool>/]<volume> [<pool>/]<volume>"
+msgstr ""
+
+#: lxc/move.go:28
 #, fuzzy
 msgid ""
-"Usage: lxc info [<remote>:][<container>] [--show-log] [--resources]\n"
-"\n"
-"Show container or server information.\n"
-"\n"
-"lxc info [<remote>:]<container> [--show-log]\n"
-"    For container information.\n"
-"\n"
-"lxc info [<remote>:] [--resources]\n"
-"    For LXD server information."
+"move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
+"<snapshot>]]"
 msgstr ""
-"Utilisation: lxc info [<serveur distant>:][<conteneur>] [--show-log]\n"
+"Supprimer des conteneurs ou des instantanés.\n"
 "\n"
-"Afficher l'information du conteneur ou du serveur.\n"
+"lxc delete [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
+"<snapshot>]...]\n"
 "\n"
-"lxc info [<serveur distant>:]<conteneur> [--show-log]\n"
-"    Pour l'information du conteneur.\n"
+"Détruit les conteneurs ou les instantanés ainsi que toute donnée associée "
+"(configuration, instantanés, …)."
+
+#: lxc/storage.go:429
+msgid "name"
+msgstr ""
+
+#: lxc/network.go:30
+#, fuzzy
+msgid "network"
+msgstr "Nom du réseau"
+
+#: lxc/image.go:809 lxc/image.go:814 lxc/image.go:977
+msgid "no"
+msgstr "non"
+
+#: lxc/remote.go:253
+msgid "ok (y/n)?"
+msgstr "ok (y/n) ?"
+
+#: lxc/operation.go:23
+#, fuzzy
+msgid "operation"
+msgstr "Propriétés :"
+
+#: lxc/config_device.go:316
+msgid "override [<remote>:]<container> <device> [key=value...]"
+msgstr ""
+
+#: lxc/action.go:47
+#, fuzzy
+msgid "pause [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+"Change l'état d'un ou plusieurs conteneurs à %s.\n"
 "\n"
-"lxc info [<serveur distant>:]\n"
-"    Pour l'information du serveur LXD."
+"lxc %s [<remote>:]<container> [[<remote>:]<container>...]%s"
+
+#: lxc/config.go:52
+msgid "please use `lxc profile`"
+msgstr ""
+
+#: lxc/profile.go:28
+#, fuzzy
+msgid "profile"
+msgstr "Profils : %s"
 
-#: lxc/init.go:79
+#: lxc/publish.go:32
 #, fuzzy
 msgid ""
-"Usage: lxc init [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
-"profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
-"<node>]\n"
-"\n"
-"Create containers from images.\n"
-"\n"
-"Not specifying -p will result in the default profile.\n"
-"Specifying \"-p\" with no argument will result in no profile.\n"
-"\n"
-"Examples:\n"
-"    lxc init ubuntu:16.04 u1"
+"publish [<remote>:]<container>[/<snapshot>] [<remote>:] [flags] [prop-"
+"key=prop-value...]"
 msgstr ""
-"Initialiser un conteneur avec une image particulière.\n"
-"\n"
-"lxc init [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--profile|-"
-"p <profile>...] [--config|-c <key=value>...] [--network|-n <network>]\n"
-"\n"
-"Initialise un conteneur en utilisant l'image et le nom indiqués.\n"
-"\n"
-"Ne pas utiliser -p résultera en l'utilisation du profil par défaut.\n"
-"Utiliser \"-p\" sans argument résultera en aucun profil.\n"
+"Publier des conteneurs en tant qu'images.\n"
 "\n"
-"Exemple :\n"
-"    lxc init ubuntu:16.04 u1"
+"lxc publish [<remote>:]<container>[/<snapshot>] [<remote>:] [--"
+"alias=ALIAS...] [prop-key=prop-value...]"
 
-#: lxc/launch.go:20
+#: lxc/file.go:183
 #, fuzzy
 msgid ""
-"Usage: lxc launch [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
-"profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
-"<node>]\n"
-"\n"
-"Create and start containers from images.\n"
-"\n"
-"Not specifying -p will result in the default profile.\n"
-"Specifying \"-p\" with no argument will result in no profile.\n"
-"\n"
-"Examples:\n"
-"    lxc launch ubuntu:16.04 u1"
+"pull [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...] "
+"<target path>"
 msgstr ""
-"Lancer le conteneur depuis une image particulière.\n"
-"\n"
-"lxc launch [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
-"profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>]\n"
-"\n"
-"Lance un conteneur en utilisant l'image et le nom indiqués.\n"
+"Supprimer des conteneurs ou des instantanés.\n"
 "\n"
-"Ne pas utiliser -p résultera en l'utilisation du profil par défaut.\n"
-"Utiliser \"-p\" sans argument résultera en aucun profil.\n"
+"lxc delete [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
+"<snapshot>]...]\n"
 "\n"
-"Exemple :\n"
-"    lxc launch ubuntu:16.04 u1"
+"Détruit les conteneurs ou les instantanés ainsi que toute donnée associée "
+"(configuration, instantanés, …)."
 
-#: lxc/list.go:44
+#: lxc/file.go:322
 #, fuzzy
 msgid ""
-"Usage: lxc list [<remote>:] [filters] [--format csv|json|table|yaml] [-c "
-"<columns>] [--fast]\n"
-"\n"
-"List the existing containers.\n"
-"\n"
-"Default column layout: ns46tS\n"
-"Fast column layout: nsacPt\n"
-"\n"
-"*Filters*\n"
-"A single keyword like \"web\" which will list any container with a name "
-"starting by \"web\".\n"
-"\n"
-"A regular expression on the container name. (e.g. .*web.*01$).\n"
-"\n"
-"A key/value pair referring to a configuration item. For those, the namespace "
-"can be abbreviated to the smallest unambiguous identifier.\n"
-"\t- \"user.blah=abc\" will list all containers with the \"blah\" user "
-"property set to \"abc\".\n"
-"\n"
-"\t- \"u.blah=abc\" will do the same\n"
-"\n"
-"\t- \"security.privileged=true\" will list all privileged containers\n"
-"\n"
-"\t- \"s.privileged=true\" will do the same\n"
+"push <source path> [<remote>:]<container>/<path> [[<remote>:]<container>/"
+"<path>...]"
+msgstr ""
+"Change l'état d'un ou plusieurs conteneurs à %s.\n"
 "\n"
-"A regular expression matching a configuration item or its value. (e.g. "
-"volatile.eth0.hwaddr=00:16:3e:.*).\n"
+"lxc %s [<remote>:]<container> [[<remote>:]<container>...]%s"
+
+#: lxc/query.go:25
+msgid "query [<remote>:]<API path>"
+msgstr ""
+
+#: lxc/image.go:1210
+#, fuzzy
+msgid "refresh [<remote>:]<image> [[<remote>:]<image>...]"
+msgstr ""
+"Change l'état d'un ou plusieurs conteneurs à %s.\n"
 "\n"
-"*Columns*\n"
-"The -c option takes a comma separated list of arguments that control\n"
-"which container attributes to output when displaying in table or csv\n"
-"format.\n"
+"lxc %s [<remote>:]<container> [[<remote>:]<container>...]%s"
+
+#: lxc/remote.go:32
+#, fuzzy
+msgid "remote"
+msgstr "Serveur distant : %s"
+
+#: lxc/alias.go:195
+msgid "remove <alias>"
+msgstr ""
+
+#: lxc/remote.go:546
+msgid "remove <remote>"
+msgstr ""
+
+#: lxc/config_trust.go:194
+msgid "remove [<remote>:] <hostname|fingerprint>"
+msgstr ""
+
+#: lxc/profile.go:630
+msgid "remove [<remote>:]<container> <profile>"
+msgstr ""
+
+#: lxc/config_device.go:402
+msgid "remove [<remote>:]<container|profile> <name>..."
+msgstr ""
+
+#: lxc/cluster.go:235
+msgid "remove [<remote>:]<member>"
+msgstr ""
+
+#: lxc/alias.go:144
+msgid "rename <old alias> <new alias>"
+msgstr ""
+
+#: lxc/remote.go:484
+msgid "rename <remote> <new-name>"
+msgstr ""
+
+#: lxc/image_alias.go:247
+msgid "rename [<remote>:]<alias> <new-name>"
+msgstr ""
+
+#: lxc/rename.go:18
+#, fuzzy
+msgid "rename [<remote>:]<container>[/<snapshot>] <container>[/<snapshot>]"
+msgstr ""
+"Supprimer des conteneurs ou des instantanés.\n"
 "\n"
-"Column arguments are either pre-defined shorthand chars (see below),\n"
-"or (extended) config keys.\n"
+"lxc delete [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
+"<snapshot>]...]\n"
 "\n"
-"Commas between consecutive shorthand chars are optional.\n"
+"Détruit les conteneurs ou les instantanés ainsi que toute donnée associée "
+"(configuration, instantanés, …)."
+
+#: lxc/cluster.go:189
+msgid "rename [<remote>:]<member> <new-name>"
+msgstr ""
+
+#: lxc/network.go:870
+msgid "rename [<remote>:]<network> <new-name>"
+msgstr ""
+
+#: lxc/storage_volume.go:1023
+msgid "rename [<remote>:]<pool> <old name> <new name>"
+msgstr ""
+
+#: lxc/profile.go:702
+msgid "rename [<remote>:]<profile> <new-name>"
+msgstr ""
+
+#: lxc/action.go:67
+#, fuzzy
+msgid "restart [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+"Change l'état d'un ou plusieurs conteneurs à %s.\n"
 "\n"
-"Pre-defined column shorthand chars:\n"
-"\n"
-"\t4 - IPv4 address\n"
-"\n"
-"\t6 - IPv6 address\n"
-"\n"
-"\ta - Architecture\n"
-"\n"
-"\tb - Storage pool\n"
-"\n"
-"\tc - Creation date\n"
-"\n"
-"\td - Description\n"
-"\n"
-"\tl - Last used date\n"
-"\n"
-"\tn - Name\n"
-"\n"
-"\tN - Number of Processes\n"
-"\n"
-"\tp - PID of the container's init process\n"
-"\n"
-"\tP - Profiles\n"
-"\n"
-"\ts - State\n"
-"\n"
-"\tS - Number of snapshots\n"
-"\n"
-"\tt - Type (persistent or ephemeral)\n"
-"\n"
-"\tL - Location of the container (e.g. its node)\n"
-"\n"
-"Custom columns are defined with \"key[:name][:maxWidth]\":\n"
-"\n"
-"\tKEY: The (extended) config key to display\n"
-"\n"
-"\tNAME: Name to display in the column header.\n"
-"\tDefaults to the key if not specified or empty.\n"
-"\n"
-"\tMAXWIDTH: Max width of the column (longer results are truncated).\n"
-"\tDefaults to -1 (unlimited). Use 0 to limit to the column header size.\n"
-"\n"
-"*Examples*\n"
-"lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:"
-"MAC\n"
-"\tShows a list of containers using the \"NAME\", \"BASE IMAGE\", \"STATE\", "
-"\"IPV4\",\n"
-"\t\"IPV6\" and \"MAC\" columns.\n"
-"\n"
-"\t\"BASE IMAGE\" and \"MAC\" are custom columns generated from container "
-"configuration keys.\n"
-"\n"
-"lxc list -c ns,user.comment:comment\n"
-"\tList images with their running state and user comment. "
+"lxc %s [<remote>:]<container> [[<remote>:]<container>...]%s"
+
+#: lxc/restore.go:22
+msgid "restore [<remote>:]<container> <snapshot>"
 msgstr ""
-"Lister les conteneurs.\n"
-"\n"
-"lxc list [<remote>:] [filters] [--format table|json] [-c <columns>] [--"
-"fast]\n"
-"\n"
-"Les filtres sont :\n"
-"* Un mot-clé unique comme \\web\\ qui listera tous les conteneurs dont le "
-"nom commence par \\web\\.\n"
-"* Une expression rationnelle sur le nom du conteneur (ex : *web.*01$)\n"
-"* Une paire de clé/valeur faisant référence à un élément de configuration.  "
-"Pour ceux-ci, l'espace de nom peut être abrégé au plus petit identifiant non "
-"ambigu :\n"
-" * \\user.blah=abc\\ listera tous les conteneurs dont la propriété "
-"utilisateur \\blah\\ est positionnée à \\abc\\.\n"
-" * \\u.blah=abc\\ fera la même chose\n"
-" * \\security.privileged=1\\ listera tous les conteneurs privilégiés\n"
-" * \\s.privileged=1\\ fera la même chose\n"
-"* Une expression rationelle correspondant à un élément de configuration ou à "
-"sa valeur (ex : volatile.eth0.hwaddr=00:16:3e:.*)\n"
-"\n"
-"L'option -c prend une liste d'arguments séparés par des virgules\n"
-"contrôlant les attributs des conteneurs à afficher au format tableau.\n"
-"Les arguments pour les colonnes sont soient des raccourcis par\n"
-"caractère prédéfinis (voir ci-dessous) ou des clés (étendues) de\n"
-"configuration.  Les virgules entre les caractères courts sont\n"
-"optionnelles.\n"
-"\n"
-"Raccourcis par caractère prédéfinis :\n"
-"* 4 - adresse IPv4\n"
-"* 6 - adresse IPv6\n"
-"* a - architecture\n"
-"* c - date de création\n"
-"* l - date de dernière utilisation\n"
-"* n - nom\n"
-"* p - pid du processus init du conteneur\n"
-"* P - profils\n"
-"* s - état\n"
-"* S - nombre d'instantanés\n"
-"* t - type (persistant ou éphémère)\n"
-"\n"
-"Syntaxe des clés de configuration : clé[:nom][:largeurMax]\n"
-"* clé        - La clé (étendue) de configuration à afficher\n"
-"* nom        - Nom à afficher dans l'entête de colonne, c'est la clé\n"
-"               par défaut si rien n'est spécifié ou vide (pour\n"
-"               permettre la définition de largeurMax sans nom\n"
-"               personnalisé, ex : user.key::0)\n"
-"* largeurMax - Largeur max de la colonne (les résultats plus longs\n"
-"               seront tronqués).\n"
-"               -1 == pas de limite\n"
-"                0 == largeur de l'entête de colonne\n"
-"               >0 == largeur maximale en caractères\n"
-"               La valeur par défaut est -1 (pas de limite)\n"
-"\n"
-"Colonnes par défaut : ns46tS\n"
-"Colonnes en mode rapide : nsacPt\n"
-"\n"
-"Exemple :\n"
-"    lxc list -c n,volatile.base_image:\\BASE IMAGE\\:0,s46,volatile.eth0."
-"hwaddr:MAC"
 
-#: lxc/manpage.go:20
-msgid ""
-"Usage: lxc manpage <directory>\n"
-"\n"
-"Generate all the LXD manpages."
+#: lxc/config_device.go:491
+msgid "set [<remote>:]<container|profile> <device> <key> <value>"
 msgstr ""
-"Utilisation: lxc manpage <dossier>\n"
-"\n"
-"Génère toutes les manpages LXD."
 
-#: lxc/monitor.go:49
-#, fuzzy
-msgid ""
-"Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
-"\n"
-"Monitor a local or remote LXD server.\n"
-"\n"
-"By default the monitor will listen to all message types.\n"
-"\n"
-"Message types to listen for can be specified with --type.\n"
-"\n"
-"*Examples*\n"
-"lxc monitor --type=logging\n"
-"    Only show log messages.\n"
-"\n"
-"lxc monitor --pretty --type=logging --loglevel=info\n"
-"    Show a pretty log of messages with info level or higher.\n"
+#: lxc/network.go:918
+msgid "set [<remote>:]<network> <key> <value>"
 msgstr ""
-"Superviser l'activité du serveur LXD.\n"
-"\n"
-"lxc monitor [<remote>:] [--type=TYPE...]\n"
-"\n"
-"Se connecte à l'interface de supervision du serveur LXD indiqué.\n"
-"\n"
-"Surveillera tous types de message ar défaut.\n"
-"Les types à surveiller peuvent être spécifiés avec --type.\n"
-"\n"
-"Exemple :\n"
-"lxc monitor --type=logging"
 
-#: lxc/move.go:26
-#, fuzzy
-msgid ""
-"Usage: lxc move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
-"<snapshot>]] [--container-only] [--target <node>]\n"
-"\n"
-"Move containers within or in between LXD instances.\n"
-"\n"
-"lxc move [<remote>:]<source container> [<remote>:][<destination container>] "
-"[--container-only]\n"
-"    Move a container between two hosts, renaming it if destination name "
-"differs.\n"
-"\n"
-"lxc move <old name> <new name> [--container-only]\n"
-"    Rename a local container.\n"
-"\n"
-"lxc move <container>/<old snapshot name> <container>/<new snapshot name>\n"
-"    Rename a snapshot."
+#: lxc/storage.go:571
+msgid "set [<remote>:]<pool> <key> <value>"
 msgstr ""
-"Déplacer les conteneurs dans ou entre des instances lxd.\n"
-"\n"
-"lxc move [<remote>:]<source container> [<remote>:][<destination container>]\n"
-"    Déplace un conteneur entre deux hôtes, en le renommant si le nom\n"
-"    de la destination diffère de l'original.\n"
-"\n"
-"lxc move <old name> <new name>\n"
-"    Renomme un conteneur local.\n"
-"\n"
-"lxc move <container>/<old snapshot name> <container>/<new snapshot name>\n"
-"    Renomme un instantané."
 
-#: lxc/network.go:52
-#, fuzzy
-msgid ""
-"Usage: lxc network <subcommand> [options]\n"
-"\n"
-"Manage and attach containers to networks.\n"
-"\n"
-"lxc network list [<remote>:]\n"
-"    List available networks.\n"
-"\n"
-"lxc network list-leases [<remote>:]<network>\n"
-"    List the DHCP leases for the network\n"
-"\n"
-"lxc network show [<remote>:]<network> [--target <node>]\n"
-"    Show details of a network.\n"
-"\n"
-"lxc network create [<remote>:]<network> [key=value...] [--target <node>]\n"
-"    Create a network.\n"
-"\n"
-"lxc network get [<remote>:]<network> <key> [--target <node>]\n"
-"    Get network configuration.\n"
-"\n"
-"lxc network set [<remote>:]<network> <key> <value>\n"
-"    Set network configuration.\n"
-"\n"
-"lxc network unset [<remote>:]<network> <key>\n"
-"    Unset network configuration.\n"
-"\n"
-"lxc network delete [<remote>:]<network>\n"
-"    Delete a network.\n"
-"\n"
-"lxc network edit [<remote>:]<network>\n"
-"    Edit network, either by launching external editor or reading STDIN.\n"
-"\n"
-"lxc network rename [<remote>:]<network> <new-name>\n"
-"    Rename a network.\n"
-"\n"
-"lxc network attach [<remote>:]<network> <container> [device name] [interface "
-"name]\n"
-"    Attach a network interface connecting the network to a specified "
-"container.\n"
-"\n"
-"lxc network attach-profile [<remote>:]<network> <profile> [device name] "
-"[interface name]\n"
-"    Attach a network interface connecting the network to a specified "
-"profile.\n"
-"\n"
-"lxc network detach [<remote>:]<network> <container> [device name]\n"
-"    Remove a network interface connecting the network to a specified "
-"container.\n"
-"\n"
-"lxc network detach-profile [<remote>:]<network> <container> [device name]\n"
-"    Remove a network interface connecting the network to a specified "
-"profile.\n"
-"\n"
-"*Examples*\n"
-"cat network.yaml | lxc network edit <network>\n"
-"    Update a network using the content of network.yaml"
+#: lxc/storage_volume.go:1087
+msgid "set [<remote>:]<pool> <volume> <key> <value>"
 msgstr ""
-"Gérer les réseaux.\n"
-"\n"
-"lxc network list [<remote>:]                              Lister les réseaux "
-"disponibles.\n"
-"lxc network show [<remote>:]<network>                     Afficher les "
-"détails d'un réseau.\n"
-"lxc network create [<remote>:]<network> [key=value]...    Créer un réseau.\n"
-"lxc network get [<remote>:]<network> <key>                Récupérer une "
-"configuration du réseau.\n"
-"lxc network set [<remote>:]<network> <key> <value>        Positionner une "
-"configuration du réseau.\n"
-"lxc network unset [<remote>:]<network> <key>              Désaffecter une "
-"configuration du réseau.\n"
-"lxc network delete [<remote>:]<network>                   Supprimer un "
-"réseau.\n"
-"lxc network edit [<remote>:]<network>\n"
-"    Éditer le réseau, soit en lançant un éditeur externe ou en lisant "
-"STDIN.\n"
-"    Exemple : lxc network edit <network> # lancer l'éditeur\n"
-"              cat network.yaml | lxc network edit <network> # lire depuis "
-"network.yaml\n"
-"\n"
-"lxc network attach [<remote>:]<network> <container> [device name]\n"
-"lxc network attach-profile [<remote>:]<network> <profile> [device name]\n"
-"\n"
-"lxc network detach [<remote>:]<network> <container> [device name]\n"
-"lxc network detach-profile [<remote>:]<network> <container> [device name]"
 
-#: lxc/operation.go:25
-msgid ""
-"Usage: lxc operation <subcommand> [options]\n"
-"\n"
-"List, show and delete background operations.\n"
-"\n"
-"lxc operation list [<remote>:]\n"
-"    List background operations.\n"
-"\n"
-"lxc operation show [<remote>:]<operation>\n"
-"    Show details on a background operation.\n"
-"\n"
-"lxc operation delete [<remote>:]<operation>\n"
-"    Delete a background operation (will attempt to cancel).\n"
-"\n"
-"*Examples*\n"
-"lxc operation show 344a79e4-d88a-45bf-9c39-c72c26f6ab8a\n"
-"    Show details on that operation UUID"
+#: lxc/profile.go:751
+msgid "set [<remote>:]<profile> <key> <value>"
 msgstr ""
 
-#: lxc/profile.go:51
-#, fuzzy
-msgid ""
-"Usage: lxc profile <subcommand> [options]\n"
-"\n"
-"Manage container configuration profiles.\n"
-"\n"
-"*Profile configuration*\n"
-"lxc profile list [<remote>:]\n"
-"    List available profiles.\n"
-"\n"
-"lxc profile show [<remote>:]<profile>\n"
-"    Show details of a profile.\n"
-"\n"
-"lxc profile create [<remote>:]<profile>\n"
-"    Create a profile.\n"
-"\n"
-"lxc profile copy [<remote>:]<profile> [<remote>:]<profile>\n"
-"    Copy the profile.\n"
-"\n"
-"lxc profile get [<remote>:]<profile> <key>\n"
-"    Get profile configuration.\n"
-"\n"
-"lxc profile set [<remote>:]<profile> <key> <value>\n"
-"    Set profile configuration.\n"
-"\n"
-"lxc profile unset [<remote>:]<profile> <key>\n"
-"    Unset profile configuration.\n"
-"\n"
-"lxc profile delete [<remote>:]<profile>\n"
-"    Delete a profile.\n"
-"\n"
-"lxc profile edit [<remote>:]<profile>\n"
-"    Edit profile, either by launching external editor or reading STDIN.\n"
-"\n"
-"lxc profile rename [<remote>:]<profile> <new-name>\n"
-"    Rename a profile.\n"
-"\n"
-"*Profile assignment*\n"
-"lxc profile assign [<remote>:]<container> <profiles>\n"
-"    Replace the current set of profiles for the container by the one "
-"provided.\n"
-"\n"
-"lxc profile add [<remote>:]<container> <profile>\n"
-"    Add a profile to a container\n"
-"\n"
-"lxc profile remove [<remote>:]<container> <profile>\n"
-"    Remove the profile from a container\n"
-"\n"
-"*Device management*\n"
-"lxc profile device list [<remote>:]<profile>\n"
-"    List devices in the given profile.\n"
-"\n"
-"lxc profile device show [<remote>:]<profile>\n"
-"    Show full device details in the given profile.\n"
-"\n"
-"lxc profile device remove [<remote>:]<profile> <name>\n"
-"    Remove a device from a profile.\n"
-"\n"
-"lxc profile device get [<remote>:]<profile> <name> <key>\n"
-"    Get a device property.\n"
-"\n"
-"lxc profile device set [<remote>:]<profile> <name> <key> <value>\n"
-"    Set a device property.\n"
-"\n"
-"lxc profile device unset [<remote>:]<profile> <name> <key>\n"
-"    Unset a device property.\n"
-"\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.\n"
-"\n"
-"*Examples*\n"
-"cat profile.yaml | lxc profile edit <profile>\n"
-"    Update a profile using the content of profile.yaml\n"
-"\n"
-"lxc profile assign foo default,bar\n"
-"    Set the profiles for \"foo\" to \"default\" and \"bar\".\n"
-"\n"
-"lxc profile assign foo default\n"
-"    Reset \"foo\" to only using the \"default\" profile.\n"
-"\n"
-"lxc profile assign foo ''\n"
-"    Remove all profile from \"foo\""
+#: lxc/config.go:353
+msgid "set [<remote>:][container] <key> <value>"
 msgstr ""
-"Gérer les profils de configuration.\n"
-"\n"
-"lxc profile list [<remote>:]                                    Lister les "
-"profils disponibles.\n"
-"lxc profile show [<remote>:]<profile>                           Afficher les "
-"détails d'un profil.\n"
-"lxc profile create [<remote>:]<profile>                         Créer un "
-"profil.\n"
-"lxc profile copy [<remote>:]<profile> [<remote>:]<remote>       Copie le "
-"profil.\n"
-"lxc profile get [<remote>:]<profile> <key>                      Obtenir une "
-"clé de la configuration du profil.\n"
-"lxc profile set [<remote>:]<profile> <key> <value>              Positionner "
-"une clé de la configuration du profil.\n"
-"lxc profile unset [<remote>:]<profile> <key>                    Désaffecter "
-"une clé de la configuration du profil.\n"
-"lxc profile delete [<remote>:]<profile>                         Supprimer un "
-"profil.\n"
-"lxc profile edit [<remote>:]<profile>\n"
-"    Editer le profil, soit en lançant un éditeur externe ou en lisant "
-"STDIN.\n"
-"    Exemple : lxc profile edit <profile> # lancer l'éditeur\n"
-"              cat profile.yaml | lxc profile edit <profile> # lire depuis "
-"profile.yaml\n"
-"\n"
-"lxc profile assign [<remote>:]<container> <profiles>\n"
-"    Assigner une liste de profils séparés par des virgules à un\n"
-"    conteneur, dans l'ordre indiqué.  Tous les profils fournis dans\n"
-"    cet appel (et seulement ceux-ci) seront appliqués au conteneur\n"
-"    indiqué, i.e. cela positionne exactement la liste de profils à\n"
-"    ceux spécifiés dans la commande.  Pour ajouter ou supprimer un\n"
-"    profil en particulier d'un conteneur, utiliser {add|remove}\n"
-"    ci-dessous.\n"
-"    Exemple : lxc profile assign foo default,bar # Applique default et bar\n"
-"              lxc profile assign foo default # Seul default est actif\n"
-"              lxc profile assign '' # Plus aucun profil n'est appliqué\n"
-"              lxc profile assign bar,default # Applique default en second\n"
-"lxc profile add [<remote>:]<container> <profile> # Ajouter un profil à un "
-"conteneur\n"
-"lxc profile remove [<remote>:]<container> <profile> # Supprimer le profil "
-"d'un conteneur\n"
-"\n"
-"Périphériques :\n"
-"lxc profile device list [<remote>:]<profile>                       Lister "
-"les périphériques d'un profil particulier.\n"
-"lxc profile device show [<remote>:]<profile>                       Afficher "
-"le détail des périphériques d'un profil donné.\n"
-"lxc profile device remove [<remote>:]<profile> <name>              Supprimer "
-"un périphérique d'un profil.\n"
-"lxc profile device get [<remote>:]<profile> <name> <key>           Obtenir "
-"la propriété d'un périphérique.\n"
-"lxc profile device set [<remote>:]<profile> <name> <key> <value>   "
-"Positionner la propriété d'un périphérique.\n"
-"lxc profile device unset [<remote>:]<profile> <name> <key>         "
-"Désaffecter la propriété d'un périphérique.\n"
-"lxc profile device add [<remote>:]<profile> <device> <type> [key=value]...\n"
-"    Ajouter un périphérique de profil, comme un disque ou une\n"
-"    interface réseau, aux conteneurs utilisant le profil indiqué."
-
-#: lxc/publish.go:28
+
+#: lxc/remote.go:596
 #, fuzzy
-msgid ""
-"Usage: lxc publish [<remote>:]<container>[/<snapshot>] [<remote>:] [--"
-"alias=ALIAS...] [prop-key=prop-value...]\n"
-"\n"
-"Publish containers as images."
+msgid "set-default <remote>"
+msgstr "impossible de supprimer le serveur distant par défaut"
+
+#: lxc/remote.go:634
+msgid "set-url <remote> <URL>"
 msgstr ""
-"Publier des conteneurs en tant qu'images.\n"
-"\n"
-"lxc publish [<remote>:]<container>[/<snapshot>] [<remote>:] [--"
-"alias=ALIAS...] [prop-key=prop-value...]"
 
-#: lxc/query.go:25
-msgid ""
-"Usage: lxc query [-X <action>] [-d <data>] [--wait] [--raw] [<remote>:]<API "
-"path>\n"
-"\n"
-"Send a raw query to LXD.\n"
-"\n"
-"*Examples*\n"
-"lxc query -X DELETE --wait /1.0/containers/c1\n"
-"    Delete local container \"c1\"."
+#: lxc/config_template.go:296
+msgid "show [<remote>:]<container> <template>"
 msgstr ""
 
-#: lxc/remote.go:40
-#, fuzzy
-msgid ""
-"Usage: lxc remote <subcommand> [options]\n"
-"\n"
-"Manage the list of remote LXD servers.\n"
-"\n"
-"lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--"
-"password=PASSWORD] [--public] [--protocol=PROTOCOL] [--auth-type=AUTH_TYPE]\n"
-"    Add the remote <remote> at <url>.\n"
-"\n"
-"lxc remote remove <remote>\n"
-"    Remove the remote <remote>.\n"
-"\n"
-"lxc remote list\n"
-"    List all remotes.\n"
-"\n"
-"lxc remote rename <old name> <new name>\n"
-"    Rename remote <old name> to <new name>.\n"
-"\n"
-"lxc remote set-url <remote> <url>\n"
-"    Update <remote>'s url to <url>.\n"
-"\n"
-"lxc remote set-default <remote>\n"
-"    Set the default remote.\n"
-"\n"
-"lxc remote get-default\n"
-"    Print the default remote."
+#: lxc/config_device.go:580
+msgid "show [<remote>:]<container|profile>"
 msgstr ""
-"Gérer les serveur LXD distants.\n"
-"\n"
-"lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--"
-"password=PASSWORD]\n"
-"                                      [--public] [--protocol=PROTOCOL]      "
-"Ajouter le serveur distant <name> accessible via <url>.\n"
-"lxc remote remove <remote>                                                  "
-"Supprimer le serveur distant <remote>.\n"
-"lxc remote list                                                             "
-"Lister tous les serveurs distants.\n"
-"lxc remote rename <old name> <new name>                                     "
-"Renommer le serveur distant de <old name> en <new name>.\n"
-"lxc remote set-url <remote> <url>                                           "
-"Mettre à jour l'url de <remote> en <url>.\n"
-"lxc remote set-default <remote>                                             "
-"Choisir le serveur distant par défaut.\n"
-"lxc remote get-default                                                      "
-"Afficher le serveur distant par défaut."
 
-#: lxc/rename.go:18
-#, fuzzy
-msgid ""
-"Usage: lxc rename [<remote>:]<container>[/<snapshot>] [<container>[/"
-"<snapshot>]]\n"
-"\n"
-"Rename a container or snapshot."
+#: lxc/image.go:1283
+msgid "show [<remote>:]<image>"
 msgstr ""
-"Supprimer des conteneurs ou des instantanés.\n"
-"\n"
-"lxc delete [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
-"<snapshot>]...]\n"
-"\n"
-"Détruit les conteneurs ou les instantanés ainsi que toute donnée associée "
-"(configuration, instantanés, …)."
 
-#: lxc/restore.go:22
-#, fuzzy
-msgid ""
-"Usage: lxc restore [<remote>:]<container> <snapshot> [--stateful]\n"
-"\n"
-"Restore containers from snapshots.\n"
-"\n"
-"If --stateful is passed, then the running state will be restored too.\n"
-"\n"
-"*Examples*\n"
-"lxc snapshot u1 snap0\n"
-"    Create the snapshot.\n"
-"\n"
-"lxc restore u1 snap0\n"
-"    Restore the snapshot."
+#: lxc/cluster.go:140
+msgid "show [<remote>:]<member>"
 msgstr ""
-"Restaurer l'état d'un conteneur depuis un instantané.\n"
-"\n"
-"lxc restore [<remote>:]<container> <snapshot> [--stateful]\n"
-"\n"
-"Restaure un conteneur depuis un instantané (éventuellement avec l'état\n"
-"d'exécution, voir snapshot help pour les détails).\n"
-"\n"
-"Par exemple :\n"
-"Créer un instantané :\n"
-"    lxc snapshot u1 snap0\n"
-"\n"
-"Restaurer un instantané :\n"
-"    lxc restore u1 snap0"
 
-#: lxc/snapshot.go:19
-#, fuzzy
-msgid ""
-"Usage: lxc snapshot [<remote>:]<container> <snapshot name> [--stateful]\n"
-"\n"
-"Create container snapshots.\n"
-"\n"
-"When --stateful is used, LXD attempts to checkpoint the container's\n"
-"running state, including process memory state, TCP connections, ...\n"
-"\n"
-"*Examples*\n"
-"lxc snapshot u1 snap0\n"
-"    Create a snapshot of \"u1\" called \"snap0\"."
+#: lxc/network.go:987
+msgid "show [<remote>:]<network>"
 msgstr ""
-"Créer un instantané en lecture seule d'un conteneur.\n"
-"\n"
-"lxc snapshot [<remote>:]<container> <snapshot name> [--stateful]\n"
-"\n"
-"Crée un instantanté du conteneur (y compris — de manière optionnelle —\n"
-"l'état de la mémoire du conteneur).  Si --stateful est utilisé, LXD\n"
-"tente de créer un point d'arrêt de l'état d'exécution du conteneur,\n"
-"incluant l'état de la mémoire, les connexions TCP, etc. afin qu'il\n"
-"puisse être restauré (via lxc restore) ultérieurement (bien que\n"
-"certaines choses, les connexions TCP ayant expirées après que la\n"
-"fenêtre de temps se soit écoulée par exemple, ne puissent être\n"
-"restaurées avec succès).\n"
-"\n"
-"Exemple :\n"
-"    lxc snapshot u1 snap0"
 
-#: lxc/storage.go:67
-msgid ""
-"Usage: lxc storage <subcommand> [options]\n"
-"\n"
-"Manage storage pools and volumes.\n"
-"\n"
-"*Storage pools*\n"
-"lxc storage list [<remote>:]\n"
-"    List available storage pools.\n"
-"\n"
-"lxc storage show [<remote>:]<pool> [--resources] [--target <node>]\n"
-"    Show details of a storage pool.\n"
-"\n"
-"lxc storage info [<remote>:]<pool> [--bytes]\n"
-"    Show information of a storage pool in yaml format.\n"
-"\n"
-"lxc storage create [<remote>:]<pool> <driver> [key=value]... [--target "
-"<node>]\n"
-"    Create a storage pool.\n"
-"\n"
-"lxc storage get [<remote>:]<pool> <key>\n"
-"    Get storage pool configuration.\n"
-"\n"
-"lxc storage set [<remote>:]<pool> <key> <value>\n"
-"    Set storage pool configuration.\n"
-"\n"
-"lxc storage unset [<remote>:]<pool> <key>\n"
-"    Unset storage pool configuration.\n"
-"\n"
-"lxc storage delete [<remote>:]<pool>\n"
-"    Delete a storage pool.\n"
-"\n"
-"lxc storage edit [<remote>:]<pool>\n"
-"    Edit storage pool, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"*Storage volumes*\n"
-"lxc storage volume list [<remote>:]<pool>\n"
-"    List available storage volumes on a storage pool.\n"
-"\n"
-"lxc storage volume show [<remote>:]<pool> <volume> [--target <node>]\n"
-"   Show details of a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume create [<remote>:]<pool> <volume> [key=value]... [--"
-"target <node>]\n"
-"    Create a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume rename [<remote>:]<pool> <old name> <new name> [--target "
-"<node>]\n"
-"    Rename a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume get [<remote>:]<pool> <volume> <key> [--target <node>]\n"
-"    Get storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume set [<remote>:]<pool> <volume> <key> <value> [--target "
-"<node>]\n"
-"    Set storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume unset [<remote>:]<pool> <volume> <key> [--target <node>]\n"
-"    Unset storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume delete [<remote>:]<pool> <volume> [--target <node>]\n"
-"    Delete a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume edit [<remote>:]<pool> <volume> [--target <node>]\n"
-"    Edit storage volume, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"lxc storage volume attach [<remote>:]<pool> <volume> <container> [device "
-"name] <path>\n"
-"    Attach a storage volume to the specified container.\n"
-"\n"
-"lxc storage volume attach-profile [<remote:>]<pool> <volume> <profile> "
-"[device name] <path>\n"
-"    Attach a storage volume to the specified profile.\n"
-"\n"
-"lxc storage volume detach [<remote>:]<pool> <volume> <container> [device "
-"name]\n"
-"    Detach a storage volume from the specified container.\n"
-"\n"
-"lxc storage volume detach-profile [<remote:>]<pool> <volume> <profile> "
-"[device name]\n"
-"\tDetach a storage volume from the specified profile.\n"
-"\n"
-"lxc storage volume copy <pool>/<volume> <pool>/<volume> [--config|-c "
-"<key=value>...]\n"
-"    Copy an existing volume to a new volume at the specified pool.\n"
-"\n"
-"lxc storage volume move [<pool>/]<volume> [<pool>/]<volume>\n"
-"    Move an existing volume to the specified pool.\n"
-"\n"
-"Unless specified through a prefix, all volume operations affect \"custom"
-"\" (user created) volumes.\n"
-"\n"
-"*Examples*\n"
-"cat pool.yaml | lxc storage edit [<remote>:]<pool>\n"
-"    Update a storage pool using the content of pool.yaml.\n"
-"\n"
-"cat pool.yaml | lxc storage volume edit [<remote>:]<pool> <volume>\n"
-"    Update a storage volume using the content of pool.yaml.\n"
-"\n"
-"lxc storage volume show default data\n"
-"    Will show the properties of a custom volume called \"data\" in the "
-"\"default\" pool.\n"
-"\n"
-"lxc storage volume show default container/data\n"
-"    Will show the properties of the filesystem for a container called \"data"
-"\" in the \"default\" pool."
+#: lxc/operation.go:172
+msgid "show [<remote>:]<operation>"
+msgstr ""
+
+#: lxc/storage.go:643
+msgid "show [<remote>:]<pool>"
 msgstr ""
 
-#: lxc/version.go:18
+#: lxc/storage_volume.go:1164
+msgid "show [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:810
+msgid "show [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/config.go:450 lxc/config_metadata.go:174
+msgid "show [<remote>:][container]"
+msgstr ""
+
+#: lxc/snapshot.go:19
+msgid "snapshot [<remote>:]<container> <snapshot name>"
+msgstr ""
+
+#: lxc/storage.go:433
+msgid "space used"
+msgstr ""
+
+#: lxc/action.go:28
 #, fuzzy
-msgid ""
-"Usage: lxc version\n"
+msgid "start [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+"Change l'état d'un ou plusieurs conteneurs à %s.\n"
 "\n"
-"Print the version number of this client tool."
+"lxc %s [<remote>:]<container> [[<remote>:]<container>...]%s"
+
+#: lxc/info.go:255
+msgid "stateful"
+msgstr "à suivi d'état"
+
+#: lxc/info.go:257
+msgid "stateless"
+msgstr "sans suivi d'état"
+
+#: lxc/action.go:89
+#, fuzzy
+msgid "stop [<remote>:]<container> [[<remote>:]<container>...]"
 msgstr ""
-"Afficher le numéro de version de cet utilitaire client.\n"
+"Change l'état d'un ou plusieurs conteneurs à %s.\n"
 "\n"
-"lxc version"
+"lxc %s [<remote>:]<container> [[<remote>:]<container>...]%s"
 
-#: lxc/delete.go:46
-msgid "User aborted delete operation."
-msgstr "L'utilisateur a annulé l'opération de suppression."
+#: lxc/storage.go:31
+msgid "storage"
+msgstr ""
 
-#: lxc/utils/cancel.go:40
-msgid ""
-"User signaled us three times, exiting. The remote operation will keep "
-"running."
+#: lxc/info.go:251
+#, c-format
+msgid "taken at %s"
+msgstr "pris à %s"
+
+#: lxc/config_template.go:28
+msgid "template"
 msgstr ""
 
-#: lxc/query.go:36
-msgid "Wait for the operation to complete"
+#: lxc/storage.go:432
+msgid "total space"
 msgstr ""
 
-#: lxc/restore.go:38
-msgid ""
-"Whether or not to restore the container's running state from snapshot (if "
-"available)"
+#: lxc/config_trust.go:28
+msgid "trust"
 msgstr ""
-"Restaurer ou pas l'état de fonctionnement du conteneur depuis l'instantané "
-"(s'il est disponible)"
 
-#: lxc/snapshot.go:33
-msgid "Whether or not to snapshot the container's running state"
-msgstr "Réaliser ou pas l'instantané de l'état de fonctionnement du conteneur"
+#: lxc/config_device.go:648
+msgid "unset [<remote>:]<container|profile> <device> <key>"
+msgstr ""
 
-#: lxc/network.go:560 lxc/operation.go:141 lxc/remote.go:382 lxc/remote.go:387
-msgid "YES"
-msgstr "OUI"
+#: lxc/network.go:1049
+msgid "unset [<remote>:]<network> <key>"
+msgstr ""
 
-#: lxc/exec.go:132
-msgid "You can't pass -t and -T at the same time"
-msgstr "Il est impossible de passer -t et -T simultanément"
+#: lxc/storage.go:727
+msgid "unset [<remote>:]<pool> <key>"
+msgstr ""
 
-#: lxc/exec.go:136
-#, fuzzy
-msgid "You can't pass -t or -T at the same time as --mode"
-msgstr "impossible de copier vers le même nom de conteneur"
+#: lxc/storage_volume.go:1239
+msgid "unset [<remote>:]<pool> <volume> <key>"
+msgstr ""
+
+#: lxc/profile.go:864
+msgid "unset [<remote>:]<profile> <key>"
+msgstr ""
+
+#: lxc/config.go:558
+msgid "unset [<remote>:][container] <key>"
+msgstr ""
 
-#: lxc/copy.go:76
+#: lxc/storage.go:427
+msgid "used by"
+msgstr ""
+
+#: lxc/storage_volume.go:32
 #, fuzzy
-msgid "You must specify a destination container name when using --target"
-msgstr "vous devez spécifier un nom de conteneur source"
+msgid "volume"
+msgstr "Colonnes"
+
+#: lxc/delete.go:46 lxc/image.go:811 lxc/image.go:816 lxc/image.go:975
+msgid "yes"
+msgstr "oui"
 
-#: lxc/copy.go:71
 #, fuzzy
-msgid "You must specify a source container name"
-msgstr "vous devez spécifier un nom de conteneur source"
+#~ msgid "Manage container templates"
+#~ msgstr "Création du conteneur"
 
-#: lxc/copy.go:66 lxc/move.go:71
-msgid "You must use the same source and destination remote when using --target"
-msgstr ""
+#~ msgid "Can't unset key '%s', it's not currently set."
+#~ msgstr ""
+#~ "Impossible de désaffecter la clé '%s', elle n'est pas définie "
+#~ "actuellement."
 
-#: lxc/main.go:72
-msgid "`lxc config profile` is deprecated, please use `lxc profile`"
-msgstr ""
-"La commande `lxc config profile` est dépréciée, merci d'utiliser `lxc "
-"profile`"
+#~ msgid "Cannot provide container name to list"
+#~ msgstr "Impossible de fournir le nom du conteneur à lister"
 
-#: lxc/alias.go:56 lxc/alias.go:102
-#, fuzzy, c-format
-msgid "alias %s already exists"
-msgstr "le serveur distant %s existe déjà"
+#~ msgid "Commands:"
+#~ msgstr "Commandes :"
 
-#: lxc/alias.go:68 lxc/alias.go:97
-#, fuzzy, c-format
-msgid "alias %s doesn't exist"
-msgstr "le serveur distant %s n'existe pas"
+#~ msgid "Connection refused; is LXD running?"
+#~ msgstr "Connexion refusée ; LXD est-il actif ?"
 
-#: lxc/remote.go:370
-msgid "can't remove the default remote"
-msgstr "impossible de supprimer le serveur distant par défaut"
+#~ msgid "Enable debug mode"
+#~ msgstr "Activer le mode de débogage"
 
-#: lxc/file.go:296
-msgid "can't supply uid/gid/mode in recursive mode"
-msgstr "impossible de spécifier uid/gid/mode en mode récursif"
+#~ msgid "Enable verbose mode"
+#~ msgstr "Activer le mode verbeux"
 
-#: lxc/remote.go:399
-msgid "default"
-msgstr "par défaut"
+#~ msgid "Environment:"
+#~ msgstr "Environnement :"
 
-#: lxc/storage.go:856
-msgid "description"
-msgstr ""
+#~ msgid "Failed to generate 'lxc.%s.1': %v"
+#~ msgstr "Échec lors de la génération de 'lxc.%s.1': %v"
 
-#: lxc/init.go:315
-msgid "didn't get any affected image, container or snapshot from server"
-msgstr "pas d'image, conteneur ou instantané affecté sur ce serveur"
+#~ msgid "Failed to generate 'lxc.1': %v"
+#~ msgstr "Échec lors de la génération de 'lxc.1': %v"
 
-#: lxc/image.go:594
-msgid "disabled"
-msgstr "désactivé"
+#~ msgid "Ignore aliases when determining what command to run"
+#~ msgstr "Ignorer les alias pour déterminer la commande à exécuter"
 
-#: lxc/storage.go:855
-msgid "driver"
-msgstr ""
+#~ msgid "LXD socket not found; is LXD installed and running?"
+#~ msgstr "Socket LXD introuvable ; LXD est-il installé et actif ?"
 
-#: lxc/image.go:596
-msgid "enabled"
-msgstr "activé"
+#~ msgid "No certificate provided to add"
+#~ msgstr "Un certificat à ajouter n'a pas été fourni"
 
-#: lxc/action.go:155 lxc/main.go:33 lxc/main.go:191
-#, c-format
-msgid "error: %v"
-msgstr "erreur : %v"
+#~ msgid "No fingerprint specified."
+#~ msgstr "Aucune empreinte n'a été indiquée."
 
-#: lxc/help.go:37 lxc/main.go:133
-#, c-format
-msgid "error: unknown command: %s"
-msgstr "erreur : commande inconnue: %s"
+#~ msgid "Options:"
+#~ msgstr "Options :"
 
-#: lxc/storage.go:853
-msgid "info"
-msgstr ""
+#~ msgid "Path to an alternate client configuration directory"
+#~ msgstr "Chemin vers un dossier de configuration client alternatif"
 
-#: lxc/storage.go:854
-msgid "name"
-msgstr ""
+#~ msgid "Path to an alternate server directory"
+#~ msgstr "Chemin vers un dossier de configuration serveur alternatif"
 
-#: lxc/image.go:210 lxc/image.go:584 lxc/image.go:589
-msgid "no"
-msgstr "non"
+#~ msgid "Permission denied, are you in the lxd group?"
+#~ msgstr "Permission refusée, êtes-vous dans le groupe lxd ?"
 
-#: lxc/remote.go:204
-msgid "ok (y/n)?"
-msgstr "ok (y/n) ?"
+#~ msgid "Print debug information"
+#~ msgstr "Afficher les informations de débogage"
 
-#: lxc/main.go:368 lxc/main.go:372
-#, c-format
-msgid "processing aliases failed %s\n"
-msgstr "l'analyse des alias a échoué %s\n"
+#~ msgid "Show all commands (not just interesting ones)"
+#~ msgstr "Afficher toutes les comandes (pas seulement les plus intéressantes)"
 
-#: lxc/file.go:588
-msgid "recursive edit doesn't make sense :("
-msgstr "l'édition récursive ne fait aucun sens :("
+#~ msgid "Show client version"
+#~ msgstr "Afficher la version du client"
 
-#: lxc/remote.go:436
-#, c-format
-msgid "remote %s already exists"
-msgstr "le serveur distant %s existe déjà"
+#~ msgid "Unable to find help2man."
+#~ msgstr "Impossible de trouver help2man."
 
-#: lxc/remote.go:362 lxc/remote.go:428 lxc/remote.go:463 lxc/remote.go:479
-#, c-format
-msgid "remote %s doesn't exist"
-msgstr "le serveur distant %s n'existe pas"
+#~ msgid "Usage: lxc <command> [options]"
+#~ msgstr "Utilisation : lxc <commande> [options]"
 
-#: lxc/remote.go:345
-#, c-format
-msgid "remote %s exists as <%s>"
-msgstr "le serveur distant %s existe en tant que <%s>"
+#, fuzzy
+#~ msgid ""
+#~ "Usage: lxc config <subcommand> [options]\n"
+#~ "\n"
+#~ "Change container or server configuration options.\n"
+#~ "\n"
+#~ "*Container configuration*\n"
+#~ "\n"
+#~ "lxc config get [<remote>:][container] <key>\n"
+#~ "    Get container or server configuration key.\n"
+#~ "\n"
+#~ "lxc config set [<remote>:][container] <key> <value>\n"
+#~ "    Set container or server configuration key.\n"
+#~ "\n"
+#~ "lxc config unset [<remote>:][container] <key>\n"
+#~ "    Unset container or server configuration key.\n"
+#~ "\n"
+#~ "lxc config show [<remote>:][container] [--expanded]\n"
+#~ "    Show container or server configuration.\n"
+#~ "\n"
+#~ "lxc config edit [<remote>:][container]\n"
+#~ "    Edit configuration, either by launching external editor or reading "
+#~ "STDIN.\n"
+#~ "\n"
+#~ "*Container metadata*\n"
+#~ "\n"
+#~ "lxc config metadata show [<remote>:][container]\n"
+#~ "    Show the container metadata.yaml content.\n"
+#~ "\n"
+#~ "lxc config metadata edit [<remote>:][container]\n"
+#~ "    Edit the container metadata.yaml, either by launching external editor "
+#~ "or reading STDIN.\n"
+#~ "\n"
+#~ "*Container templates*\n"
+#~ "\n"
+#~ "lxc config template list [<remote>:][container]\n"
+#~ "    List the names of template files for a container.\n"
+#~ "\n"
+#~ "lxc config template show [<remote>:][container] [template]\n"
+#~ "    Show the content of a template file for a container.\n"
+#~ "\n"
+#~ "lxc config template create [<remote>:][container] [template]\n"
+#~ "    Add an empty template file for a container.\n"
+#~ "\n"
+#~ "lxc config template edit [<remote>:][container] [template]\n"
+#~ "    Edit the content of a template file for a container, either by "
+#~ "launching external editor or reading STDIN.\n"
+#~ "\n"
+#~ "lxc config template delete [<remote>:][container] [template]\n"
+#~ "    Delete a template file for a container.\n"
+#~ "\n"
+#~ "\n"
+#~ "*Device management*\n"
+#~ "\n"
+#~ "lxc config device add [<remote>:]<container> <device> <type> "
+#~ "[key=value...]\n"
+#~ "    Add a device to a container.\n"
+#~ "\n"
+#~ "lxc config device get [<remote>:]<container> <device> <key>\n"
+#~ "    Get a device property.\n"
+#~ "\n"
+#~ "lxc config device set [<remote>:]<container> <device> <key> <value>\n"
+#~ "    Set a device property.\n"
+#~ "\n"
+#~ "lxc config device unset [<remote>:]<container> <device> <key>\n"
+#~ "    Unset a device property.\n"
+#~ "\n"
+#~ "lxc config device override [<remote>:]<container> <device> "
+#~ "[key=value...]\n"
+#~ "    Copy a profile inherited device into local container config.\n"
+#~ "\n"
+#~ "lxc config device list [<remote>:]<container>\n"
+#~ "    List devices for container.\n"
+#~ "\n"
+#~ "lxc config device show [<remote>:]<container>\n"
+#~ "    Show full device details for container.\n"
+#~ "\n"
+#~ "lxc config device remove [<remote>:]<container> <name>...\n"
+#~ "    Remove device from container.\n"
+#~ "\n"
+#~ "*Client trust store management*\n"
+#~ "\n"
+#~ "lxc config trust list [<remote>:]\n"
+#~ "    List all trusted certs.\n"
+#~ "\n"
+#~ "lxc config trust add [<remote>:] <certfile.crt>\n"
+#~ "    Add certfile.crt to trusted hosts.\n"
+#~ "\n"
+#~ "lxc config trust remove [<remote>:] [hostname|fingerprint]\n"
+#~ "    Remove the cert from trusted hosts.\n"
+#~ "\n"
+#~ "*Examples*\n"
+#~ "\n"
+#~ "cat config.yaml | lxc config edit <container>\n"
+#~ "    Update the container configuration from config.yaml.\n"
+#~ "\n"
+#~ "lxc config device add [<remote>:]container1 <device-name> disk source=/"
+#~ "share/c1 path=opt\n"
+#~ "    Will mount the host's /share/c1 onto /opt in the container.\n"
+#~ "\n"
+#~ "lxc config set [<remote>:]<container> limits.cpu 2\n"
+#~ "    Will set a CPU limit of \"2\" for the container.\n"
+#~ "\n"
+#~ "lxc config set core.https_address [::]:8443\n"
+#~ "    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
+#~ "\n"
+#~ "lxc config set core.trust_password blah\n"
+#~ "    Will set the server's trust password to blah."
+#~ msgstr ""
+#~ "Gérer la configuration.\n"
+#~ "\n"
+#~ "lxc config device add [<remote>:]<container> <name> <type> "
+#~ "[key=value]...   Ajouter un périphérique à un conteneur.\n"
+#~ "lxc config device get [<remote>:]<container> <name> "
+#~ "<key>                   Obtenir la propriété d'un périphérique.\n"
+#~ "lxc config device set [<remote>:]<container> <name> <key> "
+#~ "<value>           Positionner la propriété d'un périphérique.\n"
+#~ "lxc config device unset [<remote>:]<container> <name> "
+#~ "<key>                 Désaffecter la propriété d'un périphérique.\n"
+#~ "lxc config device list "
+#~ "[<remote>:]<container>                               Lister les "
+#~ "périphériques d'un conteneur.\n"
+#~ "lxc config device show "
+#~ "[<remote>:]<container>                               Afficher les détails "
+#~ "des périphériques d'un conteneur.\n"
+#~ "lxc config device remove [<remote>:]<container> "
+#~ "<name>                      Supprimer les périphériques d'un conteneur.\n"
+#~ "\n"
+#~ "lxc config get [<remote>:]<container> "
+#~ "<key>                                 Obtenir une clé de configuration "
+#~ "d'un conteneur ou d'un serveur.\n"
+#~ "lxc config set [<remote>:]<container> <key> "
+#~ "<value>                         Positionner une clé de configuration d'un "
+#~ "conteneur ou d'un serveur.\n"
+#~ "lxc config unset [<remote>:]<container> "
+#~ "<key>                               Désaffecter une clé de configuration "
+#~ "d'un conteneur ou d'un serveur.\n"
+#~ "lxc config show [<remote>:]<container> [--"
+#~ "expanded]                         Afficher la configuration d'un "
+#~ "conteneur ou d'un serveur.\n"
+#~ "lxc config edit "
+#~ "[<remote>:]<container>                                      Éditer la "
+#~ "configuration d'un conteneur ou d'un serveur dans un éditeur externe.\n"
+#~ "    Éditer la configuration, soit en lançant un éditeur externe ou en "
+#~ "lisant STDIN.\n"
+#~ "    Exemple : lxc config edit <container> # nace l'éditeur\n"
+#~ "              cat config.yaml | lxc config edit <config> # lit depuis "
+#~ "config.yaml\n"
+#~ "\n"
+#~ "lxc config trust list "
+#~ "[<remote>:]                                           Lister tous les "
+#~ "certificats de confiance.\n"
+#~ "lxc config trust add [<remote>:] <certfile."
+#~ "crt>                             Ajouter certfile.crt aux hôtes de "
+#~ "confiance.\n"
+#~ "lxc config trust remove [<remote>:] [hostname|"
+#~ "fingerprint]                  Supprimer le certificat des hôtes de "
+#~ "confiance.\n"
+#~ "\n"
+#~ "Exemples :\n"
+#~ "Pour monter le répertoire /share/c1 sur le répertoire /opt du "
+#~ "conteneur :\n"
+#~ "    lxc config device add [remote:]container1 <device-name> disk source=/"
+#~ "share/c1 path=opt\n"
+#~ "\n"
+#~ "Pour positionner une clé de configuration dans la configuration lxc :\n"
+#~ "    lxc config set [<remote>:]<container> raw.lxc 'lxc."
+#~ "aa_allow_incomplete = 1'\n"
+#~ "\n"
+#~ "Pour écouter sur le port 8443 en IPv4 et IPv6 (vous pouvez omettre 8443 "
+#~ "c'est la valeur par défaut) :\n"
+#~ "    lxc config set core.https_address [::]:8443\n"
+#~ "\n"
+#~ "Pour positionner le mot de passe de confiance du serveur :\n"
+#~ "    lxc config set core.trust_password blah"
 
-#: lxc/remote.go:366 lxc/remote.go:432 lxc/remote.go:467
-#, c-format
-msgid "remote %s is static and cannot be modified"
-msgstr "le serveur distant %s est statique et ne peut être modifié"
+#, fuzzy
+#~ msgid ""
+#~ "Usage: lxc copy [<remote>:]<source>[/<snapshot>] "
+#~ "[[<remote>:]<destination>] [--ephemeral|e] [--profile|-p <profile>...] [--"
+#~ "config|-c <key=value>...] [--container-only] [--target <node>]\n"
+#~ "\n"
+#~ "Copy containers within or in between LXD instances."
+#~ msgstr ""
+#~ "Copier les conteneurs dans ou depuis les instances LXD.\n"
+#~ "\n"
+#~ "lxc copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>] [--"
+#~ "ephemeral|e] [--profile|-p <profile>...] [--config|-c <key=value>...]"
 
-#: lxc/storage.go:858
-msgid "space used"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "Usage: lxc file <subcommand> [options]\n"
+#~ "\n"
+#~ "Manage files in containers.\n"
+#~ "\n"
+#~ "lxc file pull [-r|--recursive] [<remote>:]<container>/<path> "
+#~ "[[<remote>:]<container>/<path>...] <target path>\n"
+#~ "    Pull files from containers.\n"
+#~ "\n"
+#~ "lxc file push [-r|--recursive] [-p|--create-dirs] [--uid=UID] [--gid=GID] "
+#~ "[--mode=MODE] <source path> [<source path>...] [<remote>:]<container>/"
+#~ "<path>\n"
+#~ "    Push files into containers.\n"
+#~ "\n"
+#~ "lxc file delete [<remote>:]<container>/<path> [[<remote>:]<container>/"
+#~ "<path>...]\n"
+#~ "    Delete files in containers.\n"
+#~ "\n"
+#~ "lxc file edit [<remote>:]<container>/<path>\n"
+#~ "    Edit files in containers using the default text editor.\n"
+#~ "\n"
+#~ "*Examples*\n"
+#~ "lxc file push /etc/hosts foo/etc/hosts\n"
+#~ "   To push /etc/hosts into the container \"foo\".\n"
+#~ "\n"
+#~ "lxc file pull foo/etc/hosts .\n"
+#~ "   To pull /etc/hosts from the container and write it to the current "
+#~ "directory."
+#~ msgstr ""
+#~ "Gérer les fichiers d'un conteneur.\n"
+#~ "\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> dans le cas de pull, <target> dans le cas de push et <file> in "
+#~ "the dans le cas d'edit sont de la forme <container name>/<path>\n"
+#~ "\n"
+#~ "Exemples :\n"
+#~ "\n"
+#~ "Pour pousser /etc/hosts dans le conteneur foo :\n"
+#~ "  lxc file push /etc/hosts foo/etc/hosts\n"
+#~ "\n"
+#~ "Pour récupérer /etc/hosts du conteneur :\n"
+#~ "  lxc file pull foo/etc/hosts ."
 
-#: lxc/info.go:251
-msgid "stateful"
-msgstr "à suivi d'état"
+#~ msgid ""
+#~ "Usage: lxc finger [<remote>:]\n"
+#~ "\n"
+#~ "Check if the LXD server is alive."
+#~ msgstr ""
+#~ "Utilisation: lxc finger [<serveur distant>:]\n"
+#~ "\n"
+#~ "Vérifie si le serveur LXD est actif."
 
-#: lxc/info.go:253
-msgid "stateless"
-msgstr "sans suivi d'état"
+#~ msgid ""
+#~ "Usage: lxc help [--all]\n"
+#~ "\n"
+#~ "Help page for the LXD client."
+#~ msgstr ""
+#~ "Utilisation: lxc help [--all]\n"
+#~ "\n"
+#~ "Page d'aide pour le client LXD."
 
-#: lxc/info.go:247
-#, c-format
-msgid "taken at %s"
-msgstr "pris à %s"
+#, fuzzy
+#~ msgid ""
+#~ "Usage: lxc image <subcommand> [options]\n"
+#~ "\n"
+#~ "Manipulate container images.\n"
+#~ "\n"
+#~ "In LXD containers are created from images. Those images were themselves\n"
+#~ "either generated from an existing container or downloaded from an image\n"
+#~ "server.\n"
+#~ "\n"
+#~ "When using remote images, LXD will automatically cache images for you\n"
+#~ "and remove them upon expiration.\n"
+#~ "\n"
+#~ "The image unique identifier is the hash (sha-256) of its representation\n"
+#~ "as a compressed tarball (or for split images, the concatenation of the\n"
+#~ "metadata and rootfs tarballs).\n"
+#~ "\n"
+#~ "Images can be referenced by their full hash, shortest unique partial\n"
+#~ "hash or alias name (if one is set).\n"
+#~ "\n"
+#~ "\n"
+#~ "lxc image import <tarball>|<dir> [<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) or an image directory into the "
+#~ "LXD image store.\n"
+#~ "    Directory import is only available on Linux and must be performed as "
+#~ "root.\n"
+#~ "\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"
+#~ "    Delete one or more images from the LXD image store.\n"
+#~ "\n"
+#~ "lxc image refresh [<remote>:]<image> [[<remote>:]<image>...]\n"
+#~ "    Refresh one or more images from its parent remote.\n"
+#~ "\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"
+#~ "    The target may be an existing directory, file name, or \"-\" to "
+#~ "specify\n"
+#~ "    stdout.  The target MUST be a directory when exporting a split "
+#~ "image.\n"
+#~ "    If the target is a directory, the image's name (each part's name for\n"
+#~ "    split images) as found in the database will be used for the exported\n"
+#~ "    image.  If the target is a file (not a directory and not stdout), "
+#~ "then\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"
+#~ "    Print everything LXD knows about a given image.\n"
+#~ "\n"
+#~ "lxc image list [<remote>:] [filter] [--format csv|json|table|yaml] [-c "
+#~ "<columns>]\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"
+#~ "    The -c option takes a (optionally comma-separated) list of arguments "
+#~ "that\n"
+#~ "    control which image attributes to output when displaying in table or "
+#~ "csv\n"
+#~ "    format.\n"
+#~ "\n"
+#~ "    Default column layout is: lfpdasu\n"
+#~ "\n"
+#~ "    Column shorthand chars:\n"
+#~ "\n"
+#~ "        l - Shortest image alias (and optionally number of other "
+#~ "aliases)\n"
+#~ "\n"
+#~ "        L - Newline-separated list of all image aliases\n"
+#~ "\n"
+#~ "        f - Fingerprint\n"
+#~ "\n"
+#~ "        p - Whether image is public\n"
+#~ "\n"
+#~ "        d - Description\n"
+#~ "\n"
+#~ "        a - Architecture\n"
+#~ "\n"
+#~ "        s - Size\n"
+#~ "\n"
+#~ "        u - Upload date\n"
+#~ "\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"
+#~ "    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"
+#~ "    Create a new alias for an existing image.\n"
+#~ "\n"
+#~ "lxc image alias rename [<remote>:]<alias> <new-name>\n"
+#~ "    Rename an alias.\n"
+#~ "\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."
+#~ msgstr ""
+#~ "Manipuler les images de conteneur.\n"
+#~ "\n"
+#~ "Dans LXD les conteneurs sont créés depuis des images.  Ces images sont\n"
+#~ "elles-même générées soit depuis des conteneurs existants ou téléchargées\n"
+#~ "depuis un serveur d'image\n"
+#~ "\n"
+#~ "Lors de l'utilisation d'images distantes, LXD cachera automatiquement "
+#~ "ces\n"
+#~ "images pour vous et les supprimera à expiration.\n"
+#~ "\n"
+#~ "L'identifiant unique d'image est l'empreinte (sha-256) de sa "
+#~ "représentation\n"
+#~ "sous la forme d'une archive tar (ou pour les images fractionnées, la\n"
+#~ "concaténation de ses métadonnées et des archives du système de fichiers\n"
+#~ "racine).\n"
+#~ "\n"
+#~ "Les images sont référencées par leur empreinte complète, le préfixe "
+#~ "unique\n"
+#~ "le plus court ou leur alias (s'il est positionné).\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"
+#~ "    Importer l'archive (ou les archives) tar d'une image dans le dépôt "
+#~ "LXD.\n"
+#~ "\n"
+#~ "lxc image copy [<remote>:]<image> <remote>: [--alias=ALIAS].. [--copy-"
+#~ "aliases] [--public] [--auto-update]\n"
+#~ "    Copier une image d'un démon LXD vers un autre au travers du réseau.\n"
+#~ "\n"
+#~ "    Le booléen auto-update indique au serveur qu'il doit garder cette "
+#~ "image\n"
+#~ "    à jour.  Cela requiert que la source soit un alias et qu'elle soit\n"
+#~ "    publique.\n"
+#~ "\n"
+#~ "lxc image delete [<remote>:]<image> [<remote>:][<image>...]\n"
+#~ "    Supprimer une ou plusieurs images du dépôt LXD.\n"
+#~ "\n"
+#~ "lxc image export [<remote>:]<image> [<target>]\n"
+#~ "    Exporter une image du dépôt LXD sous la forme d'une archive tar "
+#~ "distribuable.\n"
+#~ "\n"
+#~ "    La cible en sortie est optionnelle et le répertoire de travail est "
+#~ "sa\n"
+#~ "    valeur par défaut.  La cible peut être un répertoire existant, un "
+#~ "nom\n"
+#~ "    de fichier, ou \\-\\ pour spécifier stdout.  La cible DOIT être un\n"
+#~ "    répertoire lors de l'export d'une image fractionnée.  Si la cible "
+#~ "est\n"
+#~ "    un répertoire, le nom de l'image (le nom de chaque partie pour une\n"
+#~ "    image fractionnée) telle que présent dans la base de données sera\n"
+#~ "    utilisé pour l'image exportée.  Si la cible est un fichier (ni un\n"
+#~ "    répertoire, ni stdout), alors l'extension appropriée sera ajoutée au\n"
+#~ "    nom de fichier fourni suivant l'algorithme utilisé pour comprimer\n"
+#~ "    l'image.\n"
+#~ "\n"
+#~ "lxc image info [<remote>:]<image>\n"
+#~ "    Afficher toutes les informations connues concernant une image "
+#~ "donnée.\n"
+#~ "\n"
+#~ "lxc image list [<remote>:] [filter] [--format table|json]\n"
+#~ "    Lister les images contenues dans le dépôt LXD.  Les filtres peuvent\n"
+#~ "    être de la forme <clé>=<valeur> pour un filtrage sur les propriétés, "
+#~ "ou\n"
+#~ "    une partie de l'empreinte de l'image ou une partie de l'alias de\n"
+#~ "    l'image.\n"
+#~ "\n"
+#~ "lxc image show [<remote>:]<image>\n"
+#~ "    Sortie yaml des propriétés de l'image modifiables par l'utilisateur.\n"
+#~ "\n"
+#~ "lxc image edit [<remote>:]<image>\n"
+#~ "    Éditer l'image, soit en lançant un éditeur externe ou en lisant "
+#~ "STDIN.\n"
+#~ "    Exemple : lxc image edit <image> # lance l'éditeur\n"
+#~ "              cat image.yaml | lxc image edit <image> # lit depuis image."
+#~ "yaml\n"
+#~ "\n"
+#~ "lxc image alias create [<remote>:]<alias> <fingerprint>\n"
+#~ "    Créer un nouvel alias pour une image existante.\n"
+#~ "\n"
+#~ "lxc image alias delete [<remote>:]<alias>\n"
+#~ "    Supprimer un alias.\n"
+#~ "\n"
+#~ "lxc image alias list [<remote>:] [<filter>]\n"
+#~ "    Lister les alias.  Les filtres peuvent être une partie de "
+#~ "l'empreinte\n"
+#~ "    de l'image ou une partie de l'alias de l'image."
 
-#: lxc/storage.go:857
-msgid "total space"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "Usage: lxc init [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] "
+#~ "[--profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
+#~ "<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
+#~ "<node>]\n"
+#~ "\n"
+#~ "Create containers from images.\n"
+#~ "\n"
+#~ "Not specifying -p will result in the default profile.\n"
+#~ "Specifying \"-p\" with no argument will result in no profile.\n"
+#~ "\n"
+#~ "Examples:\n"
+#~ "    lxc init ubuntu:16.04 u1"
+#~ msgstr ""
+#~ "Initialiser un conteneur avec une image particulière.\n"
+#~ "\n"
+#~ "lxc init [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
+#~ "profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
+#~ "<network>]\n"
+#~ "\n"
+#~ "Initialise un conteneur en utilisant l'image et le nom indiqués.\n"
+#~ "\n"
+#~ "Ne pas utiliser -p résultera en l'utilisation du profil par défaut.\n"
+#~ "Utiliser \"-p\" sans argument résultera en aucun profil.\n"
+#~ "\n"
+#~ "Exemple :\n"
+#~ "    lxc init ubuntu:16.04 u1"
 
-#: lxc/storage.go:852
-msgid "used by"
-msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "Usage: lxc launch [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] "
+#~ "[--profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
+#~ "<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
+#~ "<node>]\n"
+#~ "\n"
+#~ "Create and start containers from images.\n"
+#~ "\n"
+#~ "Not specifying -p will result in the default profile.\n"
+#~ "Specifying \"-p\" with no argument will result in no profile.\n"
+#~ "\n"
+#~ "Examples:\n"
+#~ "    lxc launch ubuntu:16.04 u1"
+#~ msgstr ""
+#~ "Lancer le conteneur depuis une image particulière.\n"
+#~ "\n"
+#~ "lxc launch [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
+#~ "profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
+#~ "<network>]\n"
+#~ "\n"
+#~ "Lance un conteneur en utilisant l'image et le nom indiqués.\n"
+#~ "\n"
+#~ "Ne pas utiliser -p résultera en l'utilisation du profil par défaut.\n"
+#~ "Utiliser \"-p\" sans argument résultera en aucun profil.\n"
+#~ "\n"
+#~ "Exemple :\n"
+#~ "    lxc launch ubuntu:16.04 u1"
 
-#: lxc/main.go:299
-msgid "wrong number of subcommand arguments"
-msgstr "nombre d'arguments incorrect pour la sous-comande"
+#~ msgid ""
+#~ "Usage: lxc manpage <directory>\n"
+#~ "\n"
+#~ "Generate all the LXD manpages."
+#~ msgstr ""
+#~ "Utilisation: lxc manpage <dossier>\n"
+#~ "\n"
+#~ "Génère toutes les manpages LXD."
 
-#: lxc/delete.go:45 lxc/image.go:208 lxc/image.go:586 lxc/image.go:591
-msgid "yes"
-msgstr "oui"
+#, fuzzy
+#~ msgid ""
+#~ "Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
+#~ "\n"
+#~ "Monitor a local or remote LXD server.\n"
+#~ "\n"
+#~ "By default the monitor will listen to all message types.\n"
+#~ "\n"
+#~ "Message types to listen for can be specified with --type.\n"
+#~ "\n"
+#~ "*Examples*\n"
+#~ "lxc monitor --type=logging\n"
+#~ "    Only show log messages.\n"
+#~ "\n"
+#~ "lxc monitor --pretty --type=logging --loglevel=info\n"
+#~ "    Show a pretty log of messages with info level or higher.\n"
+#~ msgstr ""
+#~ "Superviser l'activité du serveur LXD.\n"
+#~ "\n"
+#~ "lxc monitor [<remote>:] [--type=TYPE...]\n"
+#~ "\n"
+#~ "Se connecte à l'interface de supervision du serveur LXD indiqué.\n"
+#~ "\n"
+#~ "Surveillera tous types de message ar défaut.\n"
+#~ "Les types à surveiller peuvent être spécifiés avec --type.\n"
+#~ "\n"
+#~ "Exemple :\n"
+#~ "lxc monitor --type=logging"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: lxc network <subcommand> [options]\n"
+#~ "\n"
+#~ "Manage and attach containers to networks.\n"
+#~ "\n"
+#~ "lxc network list [<remote>:]\n"
+#~ "    List available networks.\n"
+#~ "\n"
+#~ "lxc network list-leases [<remote>:]<network>\n"
+#~ "    List the DHCP leases for the network\n"
+#~ "\n"
+#~ "lxc network show [<remote>:]<network> [--target <node>]\n"
+#~ "    Show details of a network.\n"
+#~ "\n"
+#~ "lxc network create [<remote>:]<network> [key=value...] [--target <node>]\n"
+#~ "    Create a network.\n"
+#~ "\n"
+#~ "lxc network get [<remote>:]<network> <key> [--target <node>]\n"
+#~ "    Get network configuration.\n"
+#~ "\n"
+#~ "lxc network set [<remote>:]<network> <key> <value>\n"
+#~ "    Set network configuration.\n"
+#~ "\n"
+#~ "lxc network unset [<remote>:]<network> <key>\n"
+#~ "    Unset network configuration.\n"
+#~ "\n"
+#~ "lxc network delete [<remote>:]<network>\n"
+#~ "    Delete a network.\n"
+#~ "\n"
+#~ "lxc network edit [<remote>:]<network>\n"
+#~ "    Edit network, either by launching external editor or reading STDIN.\n"
+#~ "\n"
+#~ "lxc network rename [<remote>:]<network> <new-name>\n"
+#~ "    Rename a network.\n"
+#~ "\n"
+#~ "lxc network attach [<remote>:]<network> <container> [device name] "
+#~ "[interface name]\n"
+#~ "    Attach a network interface connecting the network to a specified "
+#~ "container.\n"
+#~ "\n"
+#~ "lxc network attach-profile [<remote>:]<network> <profile> [device name] "
+#~ "[interface name]\n"
+#~ "    Attach a network interface connecting the network to a specified "
+#~ "profile.\n"
+#~ "\n"
+#~ "lxc network detach [<remote>:]<network> <container> [device name]\n"
+#~ "    Remove a network interface connecting the network to a specified "
+#~ "container.\n"
+#~ "\n"
+#~ "lxc network detach-profile [<remote>:]<network> <container> [device "
+#~ "name]\n"
+#~ "    Remove a network interface connecting the network to a specified "
+#~ "profile.\n"
+#~ "\n"
+#~ "*Examples*\n"
+#~ "cat network.yaml | lxc network edit <network>\n"
+#~ "    Update a network using the content of network.yaml"
+#~ msgstr ""
+#~ "Gérer les réseaux.\n"
+#~ "\n"
+#~ "lxc network list [<remote>:]                              Lister les "
+#~ "réseaux disponibles.\n"
+#~ "lxc network show [<remote>:]<network>                     Afficher les "
+#~ "détails d'un réseau.\n"
+#~ "lxc network create [<remote>:]<network> [key=value]...    Créer un "
+#~ "réseau.\n"
+#~ "lxc network get [<remote>:]<network> <key>                Récupérer une "
+#~ "configuration du réseau.\n"
+#~ "lxc network set [<remote>:]<network> <key> <value>        Positionner une "
+#~ "configuration du réseau.\n"
+#~ "lxc network unset [<remote>:]<network> <key>              Désaffecter une "
+#~ "configuration du réseau.\n"
+#~ "lxc network delete [<remote>:]<network>                   Supprimer un "
+#~ "réseau.\n"
+#~ "lxc network edit [<remote>:]<network>\n"
+#~ "    Éditer le réseau, soit en lançant un éditeur externe ou en lisant "
+#~ "STDIN.\n"
+#~ "    Exemple : lxc network edit <network> # lancer l'éditeur\n"
+#~ "              cat network.yaml | lxc network edit <network> # lire depuis "
+#~ "network.yaml\n"
+#~ "\n"
+#~ "lxc network attach [<remote>:]<network> <container> [device name]\n"
+#~ "lxc network attach-profile [<remote>:]<network> <profile> [device name]\n"
+#~ "\n"
+#~ "lxc network detach [<remote>:]<network> <container> [device name]\n"
+#~ "lxc network detach-profile [<remote>:]<network> <container> [device name]"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: lxc profile <subcommand> [options]\n"
+#~ "\n"
+#~ "Manage container configuration profiles.\n"
+#~ "\n"
+#~ "*Profile configuration*\n"
+#~ "lxc profile list [<remote>:]\n"
+#~ "    List available profiles.\n"
+#~ "\n"
+#~ "lxc profile show [<remote>:]<profile>\n"
+#~ "    Show details of a profile.\n"
+#~ "\n"
+#~ "lxc profile create [<remote>:]<profile>\n"
+#~ "    Create a profile.\n"
+#~ "\n"
+#~ "lxc profile copy [<remote>:]<profile> [<remote>:]<profile>\n"
+#~ "    Copy the profile.\n"
+#~ "\n"
+#~ "lxc profile get [<remote>:]<profile> <key>\n"
+#~ "    Get profile configuration.\n"
+#~ "\n"
+#~ "lxc profile set [<remote>:]<profile> <key> <value>\n"
+#~ "    Set profile configuration.\n"
+#~ "\n"
+#~ "lxc profile unset [<remote>:]<profile> <key>\n"
+#~ "    Unset profile configuration.\n"
+#~ "\n"
+#~ "lxc profile delete [<remote>:]<profile>\n"
+#~ "    Delete a profile.\n"
+#~ "\n"
+#~ "lxc profile edit [<remote>:]<profile>\n"
+#~ "    Edit profile, either by launching external editor or reading STDIN.\n"
+#~ "\n"
+#~ "lxc profile rename [<remote>:]<profile> <new-name>\n"
+#~ "    Rename a profile.\n"
+#~ "\n"
+#~ "*Profile assignment*\n"
+#~ "lxc profile assign [<remote>:]<container> <profiles>\n"
+#~ "    Replace the current set of profiles for the container by the one "
+#~ "provided.\n"
+#~ "\n"
+#~ "lxc profile add [<remote>:]<container> <profile>\n"
+#~ "    Add a profile to a container\n"
+#~ "\n"
+#~ "lxc profile remove [<remote>:]<container> <profile>\n"
+#~ "    Remove the profile from a container\n"
+#~ "\n"
+#~ "*Device management*\n"
+#~ "lxc profile device list [<remote>:]<profile>\n"
+#~ "    List devices in the given profile.\n"
+#~ "\n"
+#~ "lxc profile device show [<remote>:]<profile>\n"
+#~ "    Show full device details in the given profile.\n"
+#~ "\n"
+#~ "lxc profile device remove [<remote>:]<profile> <name>\n"
+#~ "    Remove a device from a profile.\n"
+#~ "\n"
+#~ "lxc profile device get [<remote>:]<profile> <name> <key>\n"
+#~ "    Get a device property.\n"
+#~ "\n"
+#~ "lxc profile device set [<remote>:]<profile> <name> <key> <value>\n"
+#~ "    Set a device property.\n"
+#~ "\n"
+#~ "lxc profile device unset [<remote>:]<profile> <name> <key>\n"
+#~ "    Unset a device property.\n"
+#~ "\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.\n"
+#~ "\n"
+#~ "*Examples*\n"
+#~ "cat profile.yaml | lxc profile edit <profile>\n"
+#~ "    Update a profile using the content of profile.yaml\n"
+#~ "\n"
+#~ "lxc profile assign foo default,bar\n"
+#~ "    Set the profiles for \"foo\" to \"default\" and \"bar\".\n"
+#~ "\n"
+#~ "lxc profile assign foo default\n"
+#~ "    Reset \"foo\" to only using the \"default\" profile.\n"
+#~ "\n"
+#~ "lxc profile assign foo ''\n"
+#~ "    Remove all profile from \"foo\""
+#~ msgstr ""
+#~ "Gérer les profils de configuration.\n"
+#~ "\n"
+#~ "lxc profile list [<remote>:]                                    Lister "
+#~ "les profils disponibles.\n"
+#~ "lxc profile show [<remote>:]<profile>                           Afficher "
+#~ "les détails d'un profil.\n"
+#~ "lxc profile create [<remote>:]<profile>                         Créer un "
+#~ "profil.\n"
+#~ "lxc profile copy [<remote>:]<profile> [<remote>:]<remote>       Copie le "
+#~ "profil.\n"
+#~ "lxc profile get [<remote>:]<profile> <key>                      Obtenir "
+#~ "une clé de la configuration du profil.\n"
+#~ "lxc profile set [<remote>:]<profile> <key> <value>              "
+#~ "Positionner une clé de la configuration du profil.\n"
+#~ "lxc profile unset [<remote>:]<profile> <key>                    "
+#~ "Désaffecter une clé de la configuration du profil.\n"
+#~ "lxc profile delete [<remote>:]<profile>                         Supprimer "
+#~ "un profil.\n"
+#~ "lxc profile edit [<remote>:]<profile>\n"
+#~ "    Editer le profil, soit en lançant un éditeur externe ou en lisant "
+#~ "STDIN.\n"
+#~ "    Exemple : lxc profile edit <profile> # lancer l'éditeur\n"
+#~ "              cat profile.yaml | lxc profile edit <profile> # lire depuis "
+#~ "profile.yaml\n"
+#~ "\n"
+#~ "lxc profile assign [<remote>:]<container> <profiles>\n"
+#~ "    Assigner une liste de profils séparés par des virgules à un\n"
+#~ "    conteneur, dans l'ordre indiqué.  Tous les profils fournis dans\n"
+#~ "    cet appel (et seulement ceux-ci) seront appliqués au conteneur\n"
+#~ "    indiqué, i.e. cela positionne exactement la liste de profils à\n"
+#~ "    ceux spécifiés dans la commande.  Pour ajouter ou supprimer un\n"
+#~ "    profil en particulier d'un conteneur, utiliser {add|remove}\n"
+#~ "    ci-dessous.\n"
+#~ "    Exemple : lxc profile assign foo default,bar # Applique default et "
+#~ "bar\n"
+#~ "              lxc profile assign foo default # Seul default est actif\n"
+#~ "              lxc profile assign '' # Plus aucun profil n'est appliqué\n"
+#~ "              lxc profile assign bar,default # Applique default en "
+#~ "second\n"
+#~ "lxc profile add [<remote>:]<container> <profile> # Ajouter un profil à un "
+#~ "conteneur\n"
+#~ "lxc profile remove [<remote>:]<container> <profile> # Supprimer le profil "
+#~ "d'un conteneur\n"
+#~ "\n"
+#~ "Périphériques :\n"
+#~ "lxc profile device list [<remote>:]<profile>                       Lister "
+#~ "les périphériques d'un profil particulier.\n"
+#~ "lxc profile device show [<remote>:]<profile>                       "
+#~ "Afficher le détail des périphériques d'un profil donné.\n"
+#~ "lxc profile device remove [<remote>:]<profile> <name>              "
+#~ "Supprimer un périphérique d'un profil.\n"
+#~ "lxc profile device get [<remote>:]<profile> <name> <key>           "
+#~ "Obtenir la propriété d'un périphérique.\n"
+#~ "lxc profile device set [<remote>:]<profile> <name> <key> <value>   "
+#~ "Positionner la propriété d'un périphérique.\n"
+#~ "lxc profile device unset [<remote>:]<profile> <name> <key>         "
+#~ "Désaffecter la propriété d'un périphérique.\n"
+#~ "lxc profile device add [<remote>:]<profile> <device> <type> "
+#~ "[key=value]...\n"
+#~ "    Ajouter un périphérique de profil, comme un disque ou une\n"
+#~ "    interface réseau, aux conteneurs utilisant le profil indiqué."
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: lxc remote <subcommand> [options]\n"
+#~ "\n"
+#~ "Manage the list of remote LXD servers.\n"
+#~ "\n"
+#~ "lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--"
+#~ "password=PASSWORD] [--public] [--protocol=PROTOCOL] [--auth-"
+#~ "type=AUTH_TYPE]\n"
+#~ "    Add the remote <remote> at <url>.\n"
+#~ "\n"
+#~ "lxc remote remove <remote>\n"
+#~ "    Remove the remote <remote>.\n"
+#~ "\n"
+#~ "lxc remote list\n"
+#~ "    List all remotes.\n"
+#~ "\n"
+#~ "lxc remote rename <old name> <new name>\n"
+#~ "    Rename remote <old name> to <new name>.\n"
+#~ "\n"
+#~ "lxc remote set-url <remote> <url>\n"
+#~ "    Update <remote>'s url to <url>.\n"
+#~ "\n"
+#~ "lxc remote set-default <remote>\n"
+#~ "    Set the default remote.\n"
+#~ "\n"
+#~ "lxc remote get-default\n"
+#~ "    Print the default remote."
+#~ msgstr ""
+#~ "Gérer les serveur LXD distants.\n"
+#~ "\n"
+#~ "lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--"
+#~ "password=PASSWORD]\n"
+#~ "                                      [--public] [--"
+#~ "protocol=PROTOCOL]      Ajouter le serveur distant <name> accessible via "
+#~ "<url>.\n"
+#~ "lxc remote remove "
+#~ "<remote>                                                  Supprimer le "
+#~ "serveur distant <remote>.\n"
+#~ "lxc remote "
+#~ "list                                                             Lister "
+#~ "tous les serveurs distants.\n"
+#~ "lxc remote rename <old name> <new "
+#~ "name>                                     Renommer le serveur distant de "
+#~ "<old name> en <new name>.\n"
+#~ "lxc remote set-url <remote> "
+#~ "<url>                                           Mettre à jour l'url de "
+#~ "<remote> en <url>.\n"
+#~ "lxc remote set-default "
+#~ "<remote>                                             Choisir le serveur "
+#~ "distant par défaut.\n"
+#~ "lxc remote get-"
+#~ "default                                                      Afficher le "
+#~ "serveur distant par défaut."
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: lxc restore [<remote>:]<container> <snapshot> [--stateful]\n"
+#~ "\n"
+#~ "Restore containers from snapshots.\n"
+#~ "\n"
+#~ "If --stateful is passed, then the running state will be restored too.\n"
+#~ "\n"
+#~ "*Examples*\n"
+#~ "lxc snapshot u1 snap0\n"
+#~ "    Create the snapshot.\n"
+#~ "\n"
+#~ "lxc restore u1 snap0\n"
+#~ "    Restore the snapshot."
+#~ msgstr ""
+#~ "Restaurer l'état d'un conteneur depuis un instantané.\n"
+#~ "\n"
+#~ "lxc restore [<remote>:]<container> <snapshot> [--stateful]\n"
+#~ "\n"
+#~ "Restaure un conteneur depuis un instantané (éventuellement avec l'état\n"
+#~ "d'exécution, voir snapshot help pour les détails).\n"
+#~ "\n"
+#~ "Par exemple :\n"
+#~ "Créer un instantané :\n"
+#~ "    lxc snapshot u1 snap0\n"
+#~ "\n"
+#~ "Restaurer un instantané :\n"
+#~ "    lxc restore u1 snap0"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: lxc version\n"
+#~ "\n"
+#~ "Print the version number of this client tool."
+#~ msgstr ""
+#~ "Afficher le numéro de version de cet utilitaire client.\n"
+#~ "\n"
+#~ "lxc version"
+
+#~ msgid "`lxc config profile` is deprecated, please use `lxc profile`"
+#~ msgstr ""
+#~ "La commande `lxc config profile` est dépréciée, merci d'utiliser `lxc "
+#~ "profile`"
+
+#~ msgid "error: unknown command: %s"
+#~ msgstr "erreur : commande inconnue: %s"
+
+#~ msgid "recursive edit doesn't make sense :("
+#~ msgstr "l'édition récursive ne fait aucun sens :("
 
 #~ msgid "'/' not allowed in snapshot name"
 #~ msgstr "'/' n'est pas autorisé dans le nom d'un instantané"
diff --git a/po/hi.po b/po/hi.po
index f6509124c..d1e6e5fda 100644
--- a/po/hi.po
+++ b/po/hi.po
@@ -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: 2018-02-27 22:14-0500\n"
+"POT-Creation-Date: 2018-03-29 01:45-0400\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
@@ -16,7 +16,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: lxc/storage.go:36
+#: lxc/storage.go:220
 msgid ""
 "### This is a yaml representation of a storage pool.\n"
 "### Any line starting with a '#' will be ignored.\n"
@@ -33,7 +33,7 @@ msgid ""
 "###   zfs.pool_name: default"
 msgstr ""
 
-#: lxc/storage.go:53
+#: lxc/storage_volume.go:737
 msgid ""
 "### This is a yaml representation of a storage volume.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -47,7 +47,7 @@ msgid ""
 "###   size: \"61203283968\""
 msgstr ""
 
-#: lxc/config.go:40
+#: lxc/config.go:100
 msgid ""
 "### This is a yaml representation of the configuration.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -68,7 +68,7 @@ msgid ""
 "### Note that the name is shown but cannot be changed"
 msgstr ""
 
-#: lxc/config.go:61
+#: lxc/config_metadata.go:63
 msgid ""
 "### This is a yaml representation of the container metadata.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -92,7 +92,7 @@ msgid ""
 "###     properties: {}"
 msgstr ""
 
-#: lxc/image.go:63
+#: lxc/image.go:327
 msgid ""
 "### This is a yaml representation of the image properties.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -102,7 +102,7 @@ msgid ""
 "###  description: My custom image"
 msgstr ""
 
-#: lxc/network.go:32
+#: lxc/network.go:546
 msgid ""
 "### This is a yaml representation of the network.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -122,7 +122,7 @@ msgid ""
 "### Note that only the configuration can be changed."
 msgstr ""
 
-#: lxc/profile.go:30
+#: lxc/profile.go:408
 msgid ""
 "### This is a yaml representation of the profile.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -143,12 +143,12 @@ msgid ""
 "### Note that the name is shown but cannot be changed"
 msgstr ""
 
-#: lxc/image.go:187
+#: lxc/image.go:954
 #, c-format
 msgid "%s (%d more)"
 msgstr ""
 
-#: lxc/file.go:205
+#: lxc/file.go:677
 #, c-format
 msgid "%s is not a directory"
 msgstr ""
@@ -158,1782 +158,2673 @@ msgstr ""
 msgid "%v (interrupt two more times to force)"
 msgstr ""
 
-#: lxc/file.go:142
+#: lxc/file.go:614
 #, c-format
 msgid "'%s' isn't a supported file type."
 msgstr ""
 
-#: lxc/profile.go:337
+#: lxc/profile.go:222
 msgid "(none)"
 msgstr ""
 
-#: lxc/alias.go:84 lxc/image.go:231 lxc/image.go:1136
+#: lxc/alias.go:127 lxc/image.go:921 lxc/image_alias.go:228
 msgid "ALIAS"
 msgstr ""
 
-#: lxc/image.go:232
+#: lxc/image.go:922
 msgid "ALIASES"
 msgstr ""
 
-#: lxc/image.go:236
+#: lxc/image.go:926
 msgid "ARCH"
 msgstr ""
 
-#: lxc/list.go:467
+#: lxc/list.go:464
 msgid "ARCHITECTURE"
 msgstr ""
 
-#: lxc/remote.go:412
+#: lxc/remote.go:466
 msgid "AUTH TYPE"
 msgstr ""
 
-#: lxc/remote.go:68
+#: lxc/remote.go:88
 msgid "Accept certificate"
 msgstr ""
 
-#: lxc/query.go:38
+#: lxc/query.go:37
 msgid "Action (defaults to GET)"
 msgstr ""
 
-#: lxc/remote.go:276
+#: lxc/config_device.go:75 lxc/config_device.go:76
+msgid "Add devices to containers or profiles"
+msgstr ""
+
+#: lxc/alias.go:54 lxc/alias.go:55
+msgid "Add new aliases"
+msgstr ""
+
+#: lxc/remote.go:83 lxc/remote.go:84
+msgid "Add new remote servers"
+msgstr ""
+
+#: lxc/config_trust.go:58 lxc/config_trust.go:59
+msgid "Add new trusted clients"
+msgstr ""
+
+#: lxc/profile.go:101 lxc/profile.go:102
+msgid "Add profiles to containers"
+msgstr ""
+
+#: lxc/remote.go:325
 #, c-format
 msgid "Admin password for %s: "
 msgstr ""
 
-#: lxc/image.go:623
+#: lxc/alias.go:78 lxc/alias.go:176
+#, c-format
+msgid "Alias %s already exists"
+msgstr ""
+
+#: lxc/alias.go:170 lxc/alias.go:221
+#, c-format
+msgid "Alias %s doesn't exist"
+msgstr ""
+
+#: lxc/image_alias.go:83 lxc/image_alias.go:130 lxc/image_alias.go:274
+msgid "Alias name missing"
+msgstr ""
+
+#: lxc/image.go:854
 msgid "Aliases:"
 msgstr ""
 
-#: lxc/image.go:601 lxc/info.go:125
+#: lxc/image.go:826 lxc/info.go:129
 #, c-format
 msgid "Architecture: %s"
 msgstr ""
 
-#: lxc/remote.go:259
+#: lxc/profile.go:162 lxc/profile.go:163
+msgid "Assign sets of profiles to containers"
+msgstr ""
+
+#: lxc/network.go:103
+msgid "Attach network interfaces to containers"
+msgstr ""
+
+#: lxc/network.go:176 lxc/network.go:177
+msgid "Attach network interfaces to profiles"
+msgstr ""
+
+#: lxc/network.go:104
+msgid "Attach new network interfaces to containers"
+msgstr ""
+
+#: lxc/storage_volume.go:121 lxc/storage_volume.go:122
+msgid "Attach new storage volumes to containers"
+msgstr ""
+
+#: lxc/storage_volume.go:200 lxc/storage_volume.go:201
+msgid "Attach new storage volumes to profiles"
+msgstr ""
+
+#: lxc/console.go:31
+msgid "Attach to container consoles"
+msgstr ""
+
+#: lxc/console.go:32
+msgid ""
+"Attach to container consoles\n"
+"\n"
+"This command allows you to interact with the boot console of a container\n"
+"as well as retrieve past log entries from it."
+msgstr ""
+
+#: lxc/remote.go:308
 #, c-format
 msgid "Authentication type '%s' not supported by server"
 msgstr ""
 
-#: lxc/image.go:632
+#: lxc/image.go:864
 #, c-format
 msgid "Auto update: %s"
 msgstr ""
 
-#: lxc/image.go:707
+#: lxc/network.go:283
+#, c-format
+msgid "Bad key/value pair: %s"
+msgstr ""
+
+#: lxc/copy.go:110 lxc/init.go:118 lxc/publish.go:175 lxc/storage.go:123
+#: lxc/storage_volume.go:468
+#, c-format
+msgid "Bad key=value pair: %s"
+msgstr ""
+
+#: lxc/image.go:677
 #, c-format
 msgid "Bad property: %s"
 msgstr ""
 
-#: lxc/action.go:133
+#: lxc/action.go:212
 msgid "Both --all and container name given"
 msgstr ""
 
-#: lxc/info.go:218
+#: lxc/info.go:222
 msgid "Bytes received"
 msgstr ""
 
-#: lxc/info.go:219
+#: lxc/info.go:223
 msgid "Bytes sent"
 msgstr ""
 
-#: lxc/operation.go:156
+#: lxc/operation.go:155
 msgid "CANCELABLE"
 msgstr ""
 
-#: lxc/config.go:403
+#: lxc/config_trust.go:175
 msgid "COMMON NAME"
 msgstr ""
 
-#: lxc/info.go:182
+#: lxc/info.go:186
 msgid "CPU usage (in seconds)"
 msgstr ""
 
-#: lxc/info.go:186
+#: lxc/info.go:190
 msgid "CPU usage:"
 msgstr ""
 
-#: lxc/operation.go:157
+#: lxc/operation.go:156
 msgid "CREATED"
 msgstr ""
 
-#: lxc/list.go:468
+#: lxc/list.go:465
 msgid "CREATED AT"
 msgstr ""
 
-#: lxc/image.go:631
+#: lxc/image.go:863
 #, c-format
 msgid "Cached: %s"
 msgstr ""
 
-#: lxc/file.go:501
+#: lxc/image.go:175
+msgid "Can't provide a name for the target image"
+msgstr ""
+
+#: lxc/file.go:261
 msgid "Can't pull a directory without --recursive"
 msgstr ""
 
-#: lxc/config.go:210 lxc/network.go:619
+#: lxc/config.go:400 lxc/network.go:969
 #, c-format
 msgid "Can't read from stdin: %s"
 msgstr ""
 
-#: lxc/rename.go:41
+#: lxc/remote.go:577
+msgid "Can't remove the default remote"
+msgstr ""
+
+#: lxc/list.go:481
+msgid "Can't specify --fast with --columns"
+msgstr ""
+
+#: lxc/rename.go:48
 msgid "Can't specify a different remote for rename."
 msgstr ""
 
-#: lxc/config.go:223
-#, c-format
-msgid "Can't unset key '%s', it's not currently set"
+#: lxc/list.go:493
+msgid "Can't specify column L when not clustered"
 msgstr ""
 
-#: lxc/config.go:265 lxc/config.go:291
-#, c-format
-msgid "Can't unset key '%s', it's not currently set."
+#: lxc/file.go:399
+msgid "Can't supply uid/gid/mode in recursive mode"
 msgstr ""
 
-#: lxc/profile.go:546 lxc/storage.go:696
-msgid "Cannot provide container name to list"
+#: lxc/config.go:413
+#, c-format
+msgid "Can't unset key '%s', it's not currently set"
 msgstr ""
 
-#: lxc/remote.go:203
+#: lxc/remote.go:252
 #, c-format
 msgid "Certificate fingerprint: %s"
 msgstr ""
 
-#: lxc/remote.go:315
+#: lxc/remote.go:364
 msgid "Client certificate stored at server: "
 msgstr ""
 
-#: lxc/image.go:175 lxc/image.go:176 lxc/list.go:134 lxc/list.go:135
+#: lxc/network.go:253 lxc/network.go:663 lxc/network.go:923 lxc/network.go:992
+#: lxc/network.go:1054 lxc/storage.go:92 lxc/storage.go:331 lxc/storage.go:576
+#: lxc/storage.go:649 lxc/storage.go:732 lxc/storage_volume.go:287
+#: lxc/storage_volume.go:429 lxc/storage_volume.go:504
+#: lxc/storage_volume.go:730 lxc/storage_volume.go:856
+#: lxc/storage_volume.go:998 lxc/storage_volume.go:1028
+#: lxc/storage_volume.go:1092 lxc/storage_volume.go:1175
+#: lxc/storage_volume.go:1244
+msgid "Cluster member name"
+msgstr ""
+
+#: lxc/image.go:912 lxc/list.go:112
 msgid "Columns"
 msgstr ""
 
-#: lxc/help.go:53
-msgid "Commands:"
+#: lxc/main.go:44
+msgid "Command line client for LXD"
+msgstr ""
+
+#: lxc/main.go:45
+msgid ""
+"Command line client for LXD\n"
+"\n"
+"All of LXD's features can be driven through the various commands below.\n"
+"For help with any of those, simply call them with --help."
 msgstr ""
 
-#: lxc/copy.go:37 lxc/copy.go:38 lxc/init.go:139 lxc/init.go:140
+#: lxc/copy.go:39 lxc/init.go:42
 msgid "Config key/value to apply to the new container"
 msgstr ""
 
-#: lxc/config.go:821 lxc/config.go:886 lxc/config.go:1396 lxc/image.go:1191
-#: lxc/network.go:445 lxc/profile.go:275 lxc/storage.go:647 lxc/storage.go:1209
+#: lxc/config.go:195 lxc/config.go:259 lxc/config_metadata.go:144
+#: lxc/image.go:405 lxc/network.go:631 lxc/profile.go:490 lxc/storage.go:298
+#: lxc/storage_volume.go:822
 #, c-format
 msgid "Config parsing error: %s"
 msgstr ""
 
-#: lxc/main.go:40
-msgid "Connection refused; is LXD running?"
-msgstr ""
-
-#: lxc/console.go:132
+#: lxc/console.go:141
 msgid "Console log:"
 msgstr ""
 
-#: lxc/publish.go:71
+#: lxc/publish.go:79
 msgid "Container name is mandatory"
 msgstr ""
 
-#: lxc/copy.go:243 lxc/init.go:321
+#: lxc/copy.go:260 lxc/init.go:229
 #, c-format
 msgid "Container name is: %s"
 msgstr ""
 
-#: lxc/publish.go:250
+#: lxc/publish.go:259
 #, c-format
 msgid "Container published with fingerprint: %s"
 msgstr ""
 
-#: lxc/copy.go:45 lxc/move.go:44
+#: lxc/copy.go:44 lxc/move.go:46
 msgid "Copy a stateful container stateless"
 msgstr ""
 
-#: lxc/image.go:178
+#: lxc/image.go:138
 msgid "Copy aliases from source"
 msgstr ""
 
-#: lxc/copy.go:44
+#: lxc/copy.go:34 lxc/copy.go:35
+msgid "Copy containers within or in between LXD instances"
+msgstr ""
+
+#: lxc/image.go:130
+msgid "Copy images between servers"
+msgstr ""
+
+#: lxc/image.go:131
+msgid ""
+"Copy images between servers\n"
+"\n"
+"The auto-update flag instructs the server to keep this image up to date.\n"
+"It requires the source to be an alias and for it to be public."
+msgstr ""
+
+#: lxc/config_device.go:317 lxc/config_device.go:318
+msgid "Copy profile inherited devices and override configuration keys"
+msgstr ""
+
+#: lxc/profile.go:240 lxc/profile.go:241
+msgid "Copy profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:282 lxc/storage_volume.go:283
+msgid "Copy storage volumes"
+msgstr ""
+
+#: lxc/copy.go:43
 msgid "Copy the container without its snapshots"
 msgstr ""
 
-#: lxc/image.go:449
+#: lxc/image.go:217
 #, c-format
 msgid "Copying the image: %s"
 msgstr ""
 
-#: lxc/storage.go:1134
+#: lxc/storage_volume.go:387
 #, c-format
 msgid "Copying the storage volume: %s"
 msgstr ""
 
-#: lxc/remote.go:218
+#: lxc/remote.go:267
 msgid "Could not create server cert dir"
 msgstr ""
 
-#: lxc/file.go:70 lxc/file.go:71
+#: lxc/image_alias.go:58 lxc/image_alias.go:59
+msgid "Create aliases for existing images"
+msgstr ""
+
+#: lxc/launch.go:21 lxc/launch.go:22
+msgid "Create and start containers from images"
+msgstr ""
+
+#: lxc/file.go:191 lxc/file.go:331
 msgid "Create any directories necessary"
 msgstr ""
 
-#: lxc/image.go:606 lxc/info.go:127
+#: lxc/snapshot.go:20
+msgid "Create container snapshots"
+msgstr ""
+
+#: lxc/snapshot.go:21
+msgid ""
+"Create container snapshots\n"
+"\n"
+"When --stateful is used, LXD attempts to checkpoint the container's\n"
+"running state, including process memory state, TCP connections, ..."
+msgstr ""
+
+#: lxc/init.go:34 lxc/init.go:35
+msgid "Create containers from images"
+msgstr ""
+
+#: lxc/config_template.go:66 lxc/config_template.go:67
+msgid "Create new container file templates"
+msgstr ""
+
+#: lxc/storage_volume.go:425 lxc/storage_volume.go:426
+msgid "Create new custom storage volumes"
+msgstr ""
+
+#: lxc/network.go:249 lxc/network.go:250
+msgid "Create new networks"
+msgstr ""
+
+#: lxc/profile.go:296 lxc/profile.go:297
+msgid "Create profiles"
+msgstr ""
+
+#: lxc/storage.go:88 lxc/storage.go:89
+msgid "Create storage pools"
+msgstr ""
+
+#: lxc/image.go:832 lxc/info.go:131
 #, c-format
 msgid "Created: %s"
 msgstr ""
 
-#: lxc/init.go:200
+#: lxc/init.go:98
 #, c-format
 msgid "Creating %s"
 msgstr ""
 
-#: lxc/init.go:198
+#: lxc/init.go:96
 msgid "Creating the container"
 msgstr ""
 
-#: lxc/cluster.go:185
+#: lxc/cluster.go:121
 msgid "DATABASE"
 msgstr ""
 
-#: lxc/image.go:235 lxc/image.go:1138 lxc/list.go:469 lxc/network.go:579
-#: lxc/operation.go:154 lxc/storage.go:732 lxc/storage.go:937
+#: lxc/image.go:925 lxc/image_alias.go:230 lxc/list.go:466 lxc/network.go:784
+#: lxc/operation.go:153 lxc/storage.go:545 lxc/storage_volume.go:967
 msgid "DESCRIPTION"
 msgstr ""
 
-#: lxc/storage.go:733
+#: lxc/storage.go:546
 msgid "DRIVER"
 msgstr ""
 
-#: lxc/publish.go:39
+#: lxc/publish.go:41
 msgid "Define a compression algorithm: for image or none"
 msgstr ""
 
-#: lxc/config.go:977
+#: lxc/operation.go:53 lxc/operation.go:54
+msgid "Delete a background operation (will attempt to cancel)"
+msgstr ""
+
+#: lxc/config_template.go:109 lxc/config_template.go:110
+msgid "Delete container file templates"
+msgstr ""
+
+#: lxc/delete.go:29 lxc/delete.go:30
+msgid "Delete containers and snapshots"
+msgstr ""
+
+#: lxc/file.go:72 lxc/file.go:73
+msgid "Delete files in containers"
+msgstr ""
+
+#: lxc/image_alias.go:105 lxc/image_alias.go:106
+msgid "Delete image aliases"
+msgstr ""
+
+#: lxc/image.go:260 lxc/image.go:261
+msgid "Delete images"
+msgstr ""
+
+#: lxc/network.go:319 lxc/network.go:320
+msgid "Delete networks"
+msgstr ""
+
+#: lxc/profile.go:347 lxc/profile.go:348
+msgid "Delete profiles"
+msgstr ""
+
+#: lxc/storage.go:160 lxc/storage.go:161
+msgid "Delete storage pools"
+msgstr ""
+
+#: lxc/storage_volume.go:500 lxc/storage_volume.go:501
+msgid "Delete storage volumes"
+msgstr ""
+
+#: lxc/action.go:30 lxc/action.go:49 lxc/action.go:69 lxc/action.go:91
+#: lxc/alias.go:23 lxc/alias.go:55 lxc/alias.go:99 lxc/alias.go:147
+#: lxc/alias.go:198 lxc/cluster.go:26 lxc/cluster.go:59 lxc/cluster.go:142
+#: lxc/cluster.go:192 lxc/cluster.go:238 lxc/config.go:29 lxc/config.go:88
+#: lxc/config.go:289 lxc/config.go:355 lxc/config.go:452 lxc/config.go:560
+#: lxc/config_device.go:24 lxc/config_device.go:76 lxc/config_device.go:179
+#: lxc/config_device.go:252 lxc/config_device.go:318 lxc/config_device.go:405
+#: lxc/config_device.go:493 lxc/config_device.go:582 lxc/config_device.go:650
+#: lxc/config_metadata.go:29 lxc/config_metadata.go:54
+#: lxc/config_metadata.go:176 lxc/config_template.go:30
+#: lxc/config_template.go:67 lxc/config_template.go:110
+#: lxc/config_template.go:152 lxc/config_template.go:236
+#: lxc/config_template.go:298 lxc/config_trust.go:30 lxc/config_trust.go:59
+#: lxc/config_trust.go:115 lxc/config_trust.go:197 lxc/console.go:32
+#: lxc/copy.go:35 lxc/delete.go:30 lxc/exec.go:39 lxc/file.go:40 lxc/file.go:73
+#: lxc/file.go:122 lxc/file.go:185 lxc/file.go:324 lxc/image.go:42
+#: lxc/image.go:131 lxc/image.go:261 lxc/image.go:312 lxc/image.go:435
+#: lxc/image.go:571 lxc/image.go:776 lxc/image.go:890 lxc/image.go:1212
+#: lxc/image.go:1285 lxc/image_alias.go:26 lxc/image_alias.go:59
+#: lxc/image_alias.go:106 lxc/image_alias.go:149 lxc/image_alias.go:250
+#: lxc/info.go:29 lxc/init.go:35 lxc/launch.go:22 lxc/list.go:48 lxc/main.go:45
+#: lxc/monitor.go:31 lxc/move.go:31 lxc/network.go:32 lxc/network.go:104
+#: lxc/network.go:177 lxc/network.go:250 lxc/network.go:320 lxc/network.go:367
+#: lxc/network.go:452 lxc/network.go:537 lxc/network.go:660 lxc/network.go:719
+#: lxc/network.go:808 lxc/network.go:873 lxc/network.go:920 lxc/network.go:989
+#: lxc/network.go:1051 lxc/operation.go:25 lxc/operation.go:54
+#: lxc/operation.go:98 lxc/operation.go:174 lxc/profile.go:30
+#: lxc/profile.go:102 lxc/profile.go:163 lxc/profile.go:241 lxc/profile.go:297
+#: lxc/profile.go:348 lxc/profile.go:396 lxc/profile.go:520 lxc/profile.go:568
+#: lxc/profile.go:632 lxc/profile.go:705 lxc/profile.go:753 lxc/profile.go:812
+#: lxc/profile.go:866 lxc/publish.go:34 lxc/query.go:27 lxc/remote.go:34
+#: lxc/remote.go:84 lxc/remote.go:380 lxc/remote.go:414 lxc/remote.go:487
+#: lxc/remote.go:549 lxc/remote.go:598 lxc/remote.go:636 lxc/rename.go:20
+#: lxc/restore.go:24 lxc/snapshot.go:21 lxc/storage.go:33 lxc/storage.go:89
+#: lxc/storage.go:161 lxc/storage.go:208 lxc/storage.go:328 lxc/storage.go:383
+#: lxc/storage.go:491 lxc/storage.go:573 lxc/storage.go:645 lxc/storage.go:729
+#: lxc/storage_volume.go:34 lxc/storage_volume.go:122 lxc/storage_volume.go:201
+#: lxc/storage_volume.go:283 lxc/storage_volume.go:426
+#: lxc/storage_volume.go:501 lxc/storage_volume.go:561
+#: lxc/storage_volume.go:643 lxc/storage_volume.go:724
+#: lxc/storage_volume.go:853 lxc/storage_volume.go:918
+#: lxc/storage_volume.go:994 lxc/storage_volume.go:1025
+#: lxc/storage_volume.go:1089 lxc/storage_volume.go:1166
+#: lxc/storage_volume.go:1241
+msgid "Description"
+msgstr ""
+
+#: lxc/network.go:366 lxc/network.go:367
+msgid "Detach network interfaces from containers"
+msgstr ""
+
+#: lxc/network.go:451 lxc/network.go:452
+msgid "Detach network interfaces from profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:560 lxc/storage_volume.go:561
+msgid "Detach storage volumes from containers"
+msgstr ""
+
+#: lxc/storage_volume.go:642 lxc/storage_volume.go:643
+msgid "Detach storage volumes from profiles"
+msgstr ""
+
+#: lxc/config_device.go:163
 #, c-format
 msgid "Device %s added to %s"
 msgstr ""
 
-#: lxc/config.go:1272
+#: lxc/config_device.go:387
 #, c-format
 msgid "Device %s overridden for %s"
 msgstr ""
 
-#: lxc/config.go:1213
+#: lxc/config_device.go:476
 #, c-format
 msgid "Device %s removed from %s"
 msgstr ""
 
-#: lxc/utils.go:192 lxc/utils.go:216
+#: lxc/utils.go:133 lxc/utils.go:157
 #, c-format
 msgid "Device already exists: %s"
 msgstr ""
 
-#: lxc/image.go:1290
+#: lxc/image.go:586
 msgid "Directory import is not available on this platform"
 msgstr ""
 
-#: lxc/exec.go:71
+#: lxc/exec.go:55
 msgid "Disable pseudo-terminal allocation"
 msgstr ""
 
-#: lxc/exec.go:72
+#: lxc/exec.go:56
 msgid "Disable stdin (reads from /dev/null)"
 msgstr ""
 
-#: lxc/info.go:175
+#: lxc/info.go:179
 msgid "Disk usage:"
 msgstr ""
 
-#: lxc/list.go:638
+#: lxc/list.go:635
 msgid "EPHEMERAL"
 msgstr ""
 
-#: lxc/config.go:405
+#: lxc/config_trust.go:177
 msgid "EXPIRY DATE"
 msgstr ""
 
-#: lxc/main.go:52
-msgid "Enable debug mode"
+#: lxc/config_template.go:151 lxc/config_template.go:152
+msgid "Edit container file templates"
 msgstr ""
 
-#: lxc/main.go:51
-msgid "Enable verbose mode"
+#: lxc/config_metadata.go:53 lxc/config_metadata.go:54
+msgid "Edit container metadata files"
 msgstr ""
 
-#: lxc/exec.go:68
-msgid "Environment variable to set (e.g. HOME=/home/foo)"
+#: lxc/config.go:87 lxc/config.go:88
+msgid "Edit container or server configurations as YAML"
+msgstr ""
+
+#: lxc/file.go:121 lxc/file.go:122
+msgid "Edit files in containers"
+msgstr ""
+
+#: lxc/image.go:311 lxc/image.go:312
+msgid "Edit image properties"
+msgstr ""
+
+#: lxc/network.go:536 lxc/network.go:537
+msgid "Edit network configurations as YAML"
+msgstr ""
+
+#: lxc/profile.go:395 lxc/profile.go:396
+msgid "Edit profile configurations as YAML"
+msgstr ""
+
+#: lxc/storage.go:207 lxc/storage.go:208
+msgid "Edit storage pool configurations as YAML"
+msgstr ""
+
+#: lxc/storage_volume.go:723 lxc/storage_volume.go:724
+msgid "Edit storage volume configurations as YAML"
+msgstr ""
+
+#: lxc/list.go:504
+#, c-format
+msgid "Empty column entry (redundant, leading or trailing command) in '%s'"
 msgstr ""
 
-#: lxc/help.go:77
-msgid "Environment:"
+#: lxc/exec.go:52
+msgid "Environment variable to set (e.g. HOME=/home/foo)"
 msgstr ""
 
-#: lxc/copy.go:41 lxc/copy.go:42 lxc/init.go:143 lxc/init.go:144
+#: lxc/copy.go:41 lxc/init.go:44
 msgid "Ephemeral container"
 msgstr ""
 
-#: lxc/config.go:1446
+#: lxc/config_template.go:204
 #, c-format
 msgid "Error updating template file: %s"
 msgstr ""
 
-#: lxc/monitor.go:69
+#: lxc/monitor.go:48
 msgid "Event type to listen for"
 msgstr ""
 
-#: lxc/image.go:610
+#: lxc/exec.go:38
+msgid "Execute commands in containers"
+msgstr ""
+
+#: lxc/exec.go:39
+msgid ""
+"Execute commands in containers\n"
+"\n"
+"The command is executed directly using exec, so there is no shell and\n"
+"shell patterns (variables, file redirects, ...) won't be understood.\n"
+"If you need a shell environment you need to execute the shell\n"
+"executable, passing the shell commands as arguments, for example:\n"
+"\n"
+"  lxc exec <container> -- sh -c \"cd /tmp && pwd\"\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:838
 #, c-format
 msgid "Expires: %s"
 msgstr ""
 
-#: lxc/image.go:612
+#: lxc/image.go:840
 msgid "Expires: never"
 msgstr ""
 
-#: lxc/image.go:922
+#: lxc/image.go:434
+msgid "Export and download images"
+msgstr ""
+
+#: lxc/image.go:435
+msgid ""
+"Export and download images\n"
+"\n"
+"The output target is optional and defaults to the working directory."
+msgstr ""
+
+#: lxc/image.go:494
 #, c-format
 msgid "Exporting the image: %s"
 msgstr ""
 
-#: lxc/config.go:761
+#: lxc/config_template.go:279
 msgid "FILENAME"
 msgstr ""
 
-#: lxc/config.go:402 lxc/image.go:233 lxc/image.go:1137
+#: lxc/config_trust.go:174 lxc/image.go:923 lxc/image_alias.go:229
 msgid "FINGERPRINT"
 msgstr ""
 
-#: lxc/utils.go:261
+#: lxc/utils.go:202
 #, c-format
 msgid "Failed to create alias %s"
 msgstr ""
 
-#: lxc/manpage.go:62
-#, c-format
-msgid "Failed to generate 'lxc.%s.1': %v"
-msgstr ""
-
-#: lxc/manpage.go:55
-#, c-format
-msgid "Failed to generate 'lxc.1': %v"
-msgstr ""
-
-#: lxc/copy.go:238
+#: lxc/copy.go:255
 msgid "Failed to get the new container name"
 msgstr ""
 
-#: lxc/utils.go:251
+#: lxc/utils.go:192
 #, c-format
 msgid "Failed to remove alias %s"
 msgstr ""
 
-#: lxc/file.go:137
+#: lxc/file.go:609
 #, c-format
 msgid "Failed to walk path for %s: %s"
 msgstr ""
 
-#: lxc/list.go:137
+#: lxc/list.go:114
 msgid "Fast mode (same as --columns=nsacPt)"
 msgstr ""
 
-#: lxc/network.go:536 lxc/operation.go:121
+#: lxc/network.go:749 lxc/operation.go:126
 msgid "Filtering isn't supported yet"
 msgstr ""
 
-#: lxc/image.go:599
+#: lxc/image.go:824
 #, c-format
 msgid "Fingerprint: %s"
 msgstr ""
 
-#: lxc/exec.go:70
+#: lxc/exec.go:54
 msgid "Force pseudo-terminal allocation"
 msgstr ""
 
-#: lxc/cluster.go:42
-msgid "Force removing a node, even if degraded"
+#: lxc/cluster.go:242
+msgid "Force removing a member, even if degraded"
 msgstr ""
 
-#: lxc/action.go:47 lxc/action.go:48
+#: lxc/action.go:121
 msgid "Force the container to shutdown"
 msgstr ""
 
-#: lxc/delete.go:34 lxc/delete.go:35
+#: lxc/delete.go:34
 msgid "Force the removal of running containers"
 msgstr ""
 
-#: lxc/main.go:53
+#: lxc/main.go:56
 msgid "Force using the local unix socket"
 msgstr ""
 
-#: lxc/image.go:181 lxc/list.go:136
+#: lxc/image.go:913 lxc/list.go:113
 msgid "Format (csv|json|table|yaml)"
 msgstr ""
 
-#: lxc/remote.go:166
+#: lxc/remote.go:211
 msgid "Generating a client certificate. This may take a minute..."
 msgstr ""
 
-#: lxc/network.go:513
+#: lxc/config_device.go:178 lxc/config_device.go:179
+msgid "Get values for container device configuration keys"
+msgstr ""
+
+#: lxc/config.go:288 lxc/config.go:289
+msgid "Get values for container or server configuration keys"
+msgstr ""
+
+#: lxc/network.go:659 lxc/network.go:660
+msgid "Get values for network configuration keys"
+msgstr ""
+
+#: lxc/profile.go:519 lxc/profile.go:520
+msgid "Get values for profile configuration keys"
+msgstr ""
+
+#: lxc/storage.go:327 lxc/storage.go:328
+msgid "Get values for storage pool configuration keys"
+msgstr ""
+
+#: lxc/storage_volume.go:852 lxc/storage_volume.go:853
+msgid "Get values for storage volume configuration keys"
+msgstr ""
+
+#: lxc/network.go:851
 msgid "HOSTNAME"
 msgstr ""
 
-#: lxc/operation.go:152
+#: lxc/operation.go:151
 msgid "ID"
 msgstr ""
 
-#: lxc/network.go:515
+#: lxc/network.go:853
 msgid "IP ADDRESS"
 msgstr ""
 
-#: lxc/list.go:465
+#: lxc/list.go:462
 msgid "IPV4"
 msgstr ""
 
-#: lxc/list.go:466
+#: lxc/list.go:463
 msgid "IPV6"
 msgstr ""
 
-#: lxc/config.go:404
+#: lxc/config_trust.go:176
 msgid "ISSUE DATE"
 msgstr ""
 
-#: lxc/main.go:171
+#: lxc/main.go:259
 msgid ""
 "If this is your first time running LXD on this machine, you should also run: "
 "lxd init"
 msgstr ""
 
-#: lxc/main.go:54
-msgid "Ignore aliases when determining what command to run"
-msgstr ""
-
-#: lxc/action.go:51
-msgid "Ignore the container state (only for start)"
+#: lxc/action.go:117
+msgid "Ignore the container state"
 msgstr ""
 
-#: lxc/image.go:557
+#: lxc/image.go:1268
 msgid "Image already up to date."
 msgstr ""
 
-#: lxc/image.go:463
+#: lxc/image.go:231
 msgid "Image copied successfully!"
 msgstr ""
 
-#: lxc/image.go:982
+#: lxc/image.go:554
 msgid "Image exported successfully!"
 msgstr ""
 
-#: lxc/image.go:778
+#: lxc/image.go:284 lxc/image.go:1235
+msgid "Image identifier missing"
+msgstr ""
+
+#: lxc/image.go:352
+#, c-format
+msgid "Image identifier missing: %s"
+msgstr ""
+
+#: lxc/image.go:749
 #, c-format
 msgid "Image imported with fingerprint: %s"
 msgstr ""
 
-#: lxc/image.go:555
+#: lxc/image.go:1266
 msgid "Image refreshed successfully!"
 msgstr ""
 
-#: lxc/query.go:39
+#: lxc/image.go:571
+msgid ""
+"Import image into the image store\n"
+"\n"
+"Directory import is only available on Linux and must be performed as root."
+msgstr ""
+
+#: lxc/image.go:570
+msgid "Import images into the image store"
+msgstr ""
+
+#: lxc/query.go:38
 msgid "Input data"
 msgstr ""
 
-#: lxc/init.go:149
+#: lxc/init.go:47
 msgid "Instance type"
 msgstr ""
 
-#: lxc/remote.go:118
+#: lxc/remote.go:163
 #, c-format
 msgid "Invalid URL scheme \"%s\" in \"%s\""
 msgstr ""
 
-#: lxc/config.go:383
+#: lxc/config_trust.go:155
 msgid "Invalid certificate"
 msgstr ""
 
-#: lxc/init.go:32 lxc/init.go:37
-msgid "Invalid configuration key"
+#: lxc/list.go:525
+#, c-format
+msgid "Invalid config key '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:520
+#, c-format
+msgid "Invalid config key column format (too many fields): '%s'"
+msgstr ""
+
+#: lxc/image.go:1196 lxc/list.go:386
+#, c-format
+msgid "Invalid format %q"
+msgstr ""
+
+#: lxc/list.go:543
+#, c-format
+msgid "Invalid max width (must -1, 0 or a positive integer) '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:540
+#, c-format
+msgid "Invalid max width (must be an integer) '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:531
+#, c-format
+msgid ""
+"Invalid name in '%s', empty string is only allowed when defining maxWidth"
+msgstr ""
+
+#: lxc/main.go:341
+msgid "Invalid number of arguments"
 msgstr ""
 
-#: lxc/file.go:560
+#: lxc/file.go:97
 #, c-format
 msgid "Invalid path %s"
 msgstr ""
 
-#: lxc/remote.go:107
+#: lxc/remote.go:152
 #, c-format
 msgid "Invalid protocol: %s"
 msgstr ""
 
-#: lxc/file.go:473
+#: lxc/file.go:243
 #, c-format
 msgid "Invalid source %s"
 msgstr ""
 
-#: lxc/file.go:250
+#: lxc/file.go:352
 #, c-format
 msgid "Invalid target %s"
 msgstr ""
 
-#: lxc/info.go:156
+#: lxc/info.go:160
 msgid "Ips:"
 msgstr ""
 
-#: lxc/image.go:179
+#: lxc/image.go:139
 msgid "Keep the image up to date after initial copy"
 msgstr ""
 
-#: lxc/list.go:470
+#: lxc/list.go:467
 msgid "LAST USED AT"
 msgstr ""
 
-#: lxc/list.go:492
+#: lxc/list.go:489
 msgid "LOCATION"
 msgstr ""
 
-#: lxc/main.go:38
-msgid "LXD socket not found; is LXD installed and running?"
+#: lxc/cluster.go:94
+msgid "LXD server isn't part of a cluster"
 msgstr ""
 
-#: lxc/image.go:615
+#: lxc/image.go:844
 #, c-format
 msgid "Last used: %s"
 msgstr ""
 
-#: lxc/image.go:617
+#: lxc/image.go:846
 msgid "Last used: never"
 msgstr ""
 
-#: lxc/info.go:119
-#, c-format
-msgid "Location: %s"
-msgstr ""
-
-#: lxc/info.go:271
-msgid "Log:"
-msgstr ""
-
-#: lxc/network.go:514
-msgid "MAC ADDRESS"
-msgstr ""
-
-#: lxc/network.go:578
-msgid "MANAGED"
+#: lxc/network.go:807 lxc/network.go:808
+msgid "List DHCP leases"
 msgstr ""
 
-#: lxc/cluster.go:187
-msgid "MESSAGE"
+#: lxc/alias.go:98 lxc/alias.go:99
+msgid "List aliases"
 msgstr ""
 
-#: lxc/image.go:177
-msgid "Make image public"
+#: lxc/cluster.go:58 lxc/cluster.go:59
+msgid "List all the cluster members"
 msgstr ""
 
-#: lxc/publish.go:35
-msgid "Make the image public"
+#: lxc/network.go:718 lxc/network.go:719
+msgid "List available networks"
 msgstr ""
 
-#: lxc/info.go:193
-msgid "Memory (current)"
+#: lxc/storage.go:490 lxc/storage.go:491
+msgid "List available storage pools"
 msgstr ""
 
-#: lxc/info.go:197
-msgid "Memory (peak)"
+#: lxc/operation.go:97 lxc/operation.go:98
+msgid "List background operations"
 msgstr ""
 
-#: lxc/info.go:209
-msgid "Memory usage:"
+#: lxc/config_device.go:251 lxc/config_device.go:252
+msgid "List container devices"
 msgstr ""
 
-#: lxc/monitor.go:70
-msgid "Minimum level for log messages"
+#: lxc/config_template.go:235 lxc/config_template.go:236
+msgid "List container file templates"
 msgstr ""
 
-#: lxc/utils.go:143
-msgid "Missing summary."
+#: lxc/list.go:47
+msgid "List containers"
 msgstr ""
 
-#: lxc/network.go:303 lxc/network.go:356 lxc/storage.go:435 lxc/storage.go:565
-msgid "More than one device matches, specify the device name."
-msgstr ""
+#: lxc/list.go:48
+msgid ""
+"List containers\n"
+"\n"
+"Default column layout: ns46tS\n"
+"Fast column layout: nsacPt\n"
+"\n"
+"== Filters ==\n"
+"A single keyword like \"web\" which will list any container with a name "
+"starting by \"web\".\n"
+"A regular expression on the container name. (e.g. .*web.*01$).\n"
+"A key/value pair referring to a configuration item. For those, the\n"
+"namespace can be abbreviated to the smallest unambiguous identifier.\n"
+"\n"
+"Examples:\n"
+"  - \"user.blah=abc\" will list all containers with the \"blah\" user "
+"property set to \"abc\".\n"
+"  - \"u.blah=abc\" will do the same\n"
+"  - \"security.privileged=true\" will list all privileged containers\n"
+"  - \"s.privileged=true\" will do the same\n"
+"\n"
+"A regular expression matching a configuration item or its value. (e.g. "
+"volatile.eth0.hwaddr=00:16:3e:.*).\n"
+"\n"
+"== Columns ==\n"
+"The -c option takes a comma separated list of arguments that control\n"
+"which container attributes to output when displaying in table or csv\n"
+"format.\n"
+"\n"
+"Column arguments are either pre-defined shorthand chars (see below),\n"
+"or (extended) config keys.\n"
+"\n"
+"Commas between consecutive shorthand chars are optional.\n"
+"\n"
+"Pre-defined column shorthand chars:\n"
+"  4 - IPv4 address\n"
+"  6 - IPv6 address\n"
+"  a - Architecture\n"
+"  b - Storage pool\n"
+"  c - Creation date\n"
+"  d - Description\n"
+"  l - Last used date\n"
+"  n - Name\n"
+"  N - Number of Processes\n"
+"  p - PID of the container's init process\n"
+"  P - Profiles\n"
+"  s - State\n"
+"  S - Number of snapshots\n"
+"  t - Type (persistent or ephemeral)\n"
+"  L - Location of the container (e.g. its node)\n"
+"\n"
+"Custom columns are defined with \"key[:name][:maxWidth]\":\n"
+"  KEY: The (extended) config key to display\n"
+"  NAME: Name to display in the column header.\n"
+"  Defaults to the key if not specified or empty.\n"
+"\n"
+"  MAXWIDTH: Max width of the column (longer results are truncated).\n"
+"  Defaults to -1 (unlimited). Use 0 to limit to the column header size."
+msgstr ""
+
+#: lxc/image_alias.go:148
+msgid "List image aliases"
+msgstr ""
+
+#: lxc/image_alias.go:149
+msgid ""
+"List image aliases\n"
+"\n"
+"Filters may be part of the image hash or part of the image alias name.\n"
+msgstr ""
+
+#: lxc/image.go:889
+msgid "List images"
+msgstr ""
+
+#: lxc/image.go:890
+msgid ""
+"List images\n"
+"\n"
+"Filters may be of the <key>=<value> form for property based filtering,\n"
+"or part of the image hash or part of the image alias name.\n"
+"\n"
+"The -c option takes a (optionally comma-separated) list of arguments\n"
+"that control which image attributes to output when displaying in table\n"
+"or csv format.\n"
+"\n"
+"Default column layout is: lfpdasu\n"
+"\n"
+"Column shorthand chars:\n"
+"\n"
+"    l - Shortest image alias (and optionally number of other aliases)\n"
+"    L - Newline-separated list of all image aliases\n"
+"    f - Fingerprint\n"
+"    p - Whether image is public\n"
+"    d - Description\n"
+"    a - Architecture\n"
+"    s - Size"
+msgstr ""
+
+#: lxc/profile.go:567 lxc/profile.go:568
+msgid "List profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:917 lxc/storage_volume.go:918
+msgid "List storage volumes"
+msgstr ""
+
+#: lxc/remote.go:413 lxc/remote.go:414
+msgid "List the available remotes"
+msgstr ""
+
+#: lxc/config_trust.go:114 lxc/config_trust.go:115
+msgid "List trusted clients"
+msgstr ""
+
+#: lxc/operation.go:24 lxc/operation.go:25
+msgid "List, show and delete background operations"
+msgstr ""
+
+#: lxc/info.go:123
+#, c-format
+msgid "Location: %s"
+msgstr ""
+
+#: lxc/info.go:275
+msgid "Log:"
+msgstr ""
+
+#: lxc/network.go:852
+msgid "MAC ADDRESS"
+msgstr ""
+
+#: lxc/network.go:783
+msgid "MANAGED"
+msgstr ""
+
+#: lxc/cluster.go:123
+msgid "MESSAGE"
+msgstr ""
+
+#: lxc/image.go:137 lxc/image.go:576
+msgid "Make image public"
+msgstr ""
+
+#: lxc/publish.go:38
+msgid "Make the image public"
+msgstr ""
+
+#: lxc/network.go:32
+msgid "Manage an attach containers to networks"
+msgstr ""
+
+#: lxc/network.go:31
+msgid "Manage and attach containers to networks"
+msgstr ""
+
+#: lxc/cluster.go:25 lxc/cluster.go:26
+msgid "Manage cluster members"
+msgstr ""
+
+#: lxc/alias.go:22 lxc/alias.go:23
+msgid "Manage command aliases"
+msgstr ""
+
+#: lxc/config.go:28 lxc/config.go:29
+msgid "Manage container and server configuration options"
+msgstr ""
+
+#: lxc/config_device.go:23 lxc/config_device.go:24
+msgid "Manage container devices"
+msgstr ""
+
+#: lxc/config_template.go:29 lxc/config_template.go:30
+msgid "Manage container file templates"
+msgstr ""
+
+#: lxc/config_metadata.go:28 lxc/config_metadata.go:29
+msgid "Manage container metadata files"
+msgstr ""
+
+#: lxc/file.go:39 lxc/file.go:40
+msgid "Manage files in containers"
+msgstr ""
+
+#: lxc/image_alias.go:25 lxc/image_alias.go:26
+msgid "Manage image aliases"
+msgstr ""
+
+#: lxc/image.go:41
+msgid "Manage images"
+msgstr ""
+
+#: lxc/image.go:42
+msgid ""
+"Manage images\n"
+"\n"
+"In LXD containers are created from images. Those images were themselves\n"
+"either generated from an existing container or downloaded from an image\n"
+"server.\n"
+"\n"
+"When using remote images, LXD will automatically cache images for you\n"
+"and remove them upon expiration.\n"
+"\n"
+"The image unique identifier is the hash (sha-256) of its representation\n"
+"as a compressed tarball (or for split images, the concatenation of the\n"
+"metadata and rootfs tarballs).\n"
+"\n"
+"Images can be referenced by their full hash, shortest unique partial\n"
+"hash or alias name (if one is set)."
+msgstr ""
+
+#: lxc/profile.go:29 lxc/profile.go:30
+msgid "Manage profiles"
+msgstr ""
+
+#: lxc/storage.go:32 lxc/storage.go:33
+msgid "Manage storage pools and volumes"
+msgstr ""
+
+#: lxc/storage_volume.go:33
+msgid "Manage storage volumes"
+msgstr ""
+
+#: lxc/storage_volume.go:34
+msgid ""
+"Manage storage volumes\n"
+"\n"
+"Unless specified through a prefix, all volume operations affect \"custom"
+"\" (user created) volumes."
+msgstr ""
+
+#: lxc/remote.go:33 lxc/remote.go:34
+msgid "Manage the list of remote servers"
+msgstr ""
+
+#: lxc/config_trust.go:29 lxc/config_trust.go:30
+msgid "Manage trusted clients"
+msgstr ""
+
+#: lxc/info.go:197
+msgid "Memory (current)"
+msgstr ""
+
+#: lxc/info.go:201
+msgid "Memory (peak)"
+msgstr ""
+
+#: lxc/info.go:213
+msgid "Memory usage:"
+msgstr ""
+
+#: lxc/monitor.go:49
+msgid "Minimum level for log messages"
+msgstr ""
+
+#: lxc/config_metadata.go:102 lxc/config_metadata.go:200
+#: lxc/config_template.go:91 lxc/config_template.go:134
+#: lxc/config_template.go:176 lxc/config_template.go:260
+#: lxc/config_template.go:322 lxc/profile.go:197 lxc/profile.go:656
+msgid "Missing container name"
+msgstr ""
+
+#: lxc/profile.go:126
+msgid "Missing container.name name"
+msgstr ""
+
+#: lxc/config_device.go:103 lxc/config_device.go:203 lxc/config_device.go:276
+#: lxc/config_device.go:342 lxc/config_device.go:429 lxc/config_device.go:517
+#: lxc/config_device.go:606
+msgid "Missing name"
+msgstr ""
+
+#: lxc/network.go:128 lxc/network.go:201 lxc/network.go:344 lxc/network.go:391
+#: lxc/network.go:476 lxc/network.go:581 lxc/network.go:686 lxc/network.go:832
+#: lxc/network.go:897 lxc/network.go:946 lxc/network.go:1015
+msgid "Missing network name"
+msgstr ""
+
+#: lxc/storage.go:185 lxc/storage.go:252 lxc/storage.go:353 lxc/storage.go:408
+#: lxc/storage.go:603 lxc/storage.go:677 lxc/storage_volume.go:146
+#: lxc/storage_volume.go:225 lxc/storage_volume.go:451
+#: lxc/storage_volume.go:526 lxc/storage_volume.go:585
+#: lxc/storage_volume.go:667 lxc/storage_volume.go:766
+#: lxc/storage_volume.go:878 lxc/storage_volume.go:942
+#: lxc/storage_volume.go:1050 lxc/storage_volume.go:1114
+#: lxc/storage_volume.go:1197
+msgid "Missing pool name"
+msgstr ""
+
+#: lxc/profile.go:321 lxc/profile.go:372 lxc/profile.go:444 lxc/profile.go:544
+#: lxc/profile.go:729 lxc/profile.go:777 lxc/profile.go:836
+msgid "Missing profile name"
+msgstr ""
+
+#: lxc/profile.go:266
+msgid "Missing source profile name"
+msgstr ""
 
-#: lxc/file.go:460
+#: lxc/storage_volume.go:311
+msgid "Missing source volume name"
+msgstr ""
+
+#: lxc/file.go:446
+msgid "Missing target directory"
+msgstr ""
+
+#: lxc/monitor.go:30
+msgid "Monitor a local or remote LXD server"
+msgstr ""
+
+#: lxc/monitor.go:31
+msgid ""
+"Monitor a local or remote LXD server\n"
+"\n"
+"By default the monitor will listen to all message types."
+msgstr ""
+
+#: lxc/network.go:411 lxc/network.go:496 lxc/storage_volume.go:605
+#: lxc/storage_volume.go:686
+msgid "More than one device matches, specify the device name."
+msgstr ""
+
+#: lxc/file.go:224
 msgid "More than one file to download, but target is not a directory"
 msgstr ""
 
-#: lxc/move.go:42
+#: lxc/move.go:30 lxc/move.go:31
+msgid "Move containers within or in between LXD instances"
+msgstr ""
+
+#: lxc/storage_volume.go:993 lxc/storage_volume.go:994
+msgid "Move storage volumes between pools"
+msgstr ""
+
+#: lxc/move.go:44
 msgid "Move the container without its snapshots"
 msgstr ""
 
-#: lxc/storage.go:1128
+#: lxc/storage_volume.go:375
 #, c-format
 msgid "Moving the storage volume: %s"
 msgstr ""
 
-#: lxc/image.go:1292
+#: lxc/image.go:588
 msgid "Must run as root to import from directory"
 msgstr ""
 
-#: lxc/action.go:74
+#: lxc/action.go:147
 msgid "Must supply container name for: "
 msgstr ""
 
-#: lxc/cluster.go:183 lxc/list.go:471 lxc/network.go:576 lxc/profile.go:573
-#: lxc/remote.go:409 lxc/storage.go:731 lxc/storage.go:936
+#: lxc/cluster.go:119 lxc/list.go:468 lxc/network.go:781 lxc/profile.go:613
+#: lxc/remote.go:463 lxc/storage.go:544 lxc/storage_volume.go:966
 msgid "NAME"
 msgstr ""
 
-#: lxc/network.go:558 lxc/operation.go:139 lxc/remote.go:380 lxc/remote.go:385
+#: lxc/network.go:763 lxc/operation.go:138 lxc/remote.go:434 lxc/remote.go:439
 msgid "NO"
 msgstr ""
 
-#: lxc/storage.go:941
+#: lxc/storage_volume.go:971
 msgid "NODE"
 msgstr ""
 
-#: lxc/info.go:117
+#: lxc/info.go:121
 #, c-format
 msgid "Name: %s"
 msgstr ""
 
-#: lxc/network.go:276
+#: lxc/network.go:303
 #, c-format
 msgid "Network %s created"
 msgstr ""
 
-#: lxc/network.go:393
+#: lxc/network.go:353
 #, c-format
 msgid "Network %s deleted"
 msgstr ""
 
-#: lxc/network.go:274
+#: lxc/network.go:301
 #, c-format
 msgid "Network %s pending on node %s"
 msgstr ""
 
-#: lxc/network.go:470
+#: lxc/network.go:906
 #, c-format
 msgid "Network %s renamed to %s"
 msgstr ""
 
-#: lxc/init.go:145 lxc/init.go:146
+#: lxc/init.go:45
 msgid "Network name"
 msgstr ""
 
-#: lxc/info.go:226
+#: lxc/info.go:230
 msgid "Network usage:"
 msgstr ""
 
-#: lxc/image.go:180 lxc/publish.go:36
+#: lxc/publish.go:39
 msgid "New alias to define at target"
 msgstr ""
 
-#: lxc/config.go:414
-msgid "No certificate provided to add"
+#: lxc/image.go:140 lxc/image.go:577
+msgid "New aliases to add to the image"
 msgstr ""
 
-#: lxc/network.go:312 lxc/network.go:365
+#: lxc/network.go:420 lxc/network.go:505
 msgid "No device found for this network"
 msgstr ""
 
-#: lxc/storage.go:444 lxc/storage.go:574
+#: lxc/storage_volume.go:614 lxc/storage_volume.go:695
 msgid "No device found for this storage volume."
 msgstr ""
 
-#: lxc/config.go:446
-msgid "No fingerprint specified."
-msgstr ""
-
-#: lxc/cluster.go:143
+#: lxc/cluster.go:268
 #, c-format
 msgid "Node %s removed"
 msgstr ""
 
-#: lxc/cluster.go:119
+#: lxc/cluster.go:221
 #, c-format
 msgid "Node %s renamed to %s"
 msgstr ""
 
-#: lxc/copy.go:46 lxc/init.go:150 lxc/move.go:45 lxc/network.go:105
-#: lxc/storage.go:165
+#: lxc/copy.go:45 lxc/init.go:48 lxc/move.go:47
 msgid "Node name"
 msgstr ""
 
-#: lxc/storage.go:388 lxc/storage.go:481
+#: lxc/storage_volume.go:164 lxc/storage_volume.go:243
 msgid "Only \"custom\" volumes can be attached to containers."
 msgstr ""
 
-#: lxc/remote.go:101
+#: lxc/remote.go:146
 msgid "Only https URLs are supported for simplestreams"
 msgstr ""
 
-#: lxc/image.go:688
+#: lxc/image.go:658
 msgid "Only https:// is supported for remote image import."
 msgstr ""
 
-#: lxc/network.go:421 lxc/network.go:605
+#: lxc/network.go:607 lxc/network.go:960
 msgid "Only managed networks can be modified."
 msgstr ""
 
-#: lxc/operation.go:85
+#: lxc/operation.go:83
 #, c-format
 msgid "Operation %s deleted"
 msgstr ""
 
-#: lxc/help.go:71 lxc/main.go:139 lxc/main.go:195
-msgid "Options:"
-msgstr ""
-
-#: lxc/exec.go:69
+#: lxc/exec.go:53
 msgid "Override the terminal mode (auto, interactive or non-interactive)"
 msgstr ""
 
-#: lxc/list.go:641
+#: lxc/list.go:638
 msgid "PERSISTENT"
 msgstr ""
 
-#: lxc/list.go:473
+#: lxc/list.go:470
 msgid "PID"
 msgstr ""
 
-#: lxc/list.go:472
+#: lxc/list.go:469
 msgid "PROCESSES"
 msgstr ""
 
-#: lxc/list.go:474
+#: lxc/list.go:471
 msgid "PROFILES"
 msgstr ""
 
-#: lxc/remote.go:411
+#: lxc/remote.go:465
 msgid "PROTOCOL"
 msgstr ""
 
-#: lxc/image.go:234 lxc/remote.go:413
+#: lxc/image.go:924 lxc/remote.go:467
 msgid "PUBLIC"
 msgstr ""
 
-#: lxc/info.go:220
+#: lxc/info.go:224
 msgid "Packets received"
 msgstr ""
 
-#: lxc/info.go:221
+#: lxc/info.go:225
 msgid "Packets sent"
 msgstr ""
 
-#: lxc/help.go:78
-msgid "Path to an alternate client configuration directory"
-msgstr ""
-
-#: lxc/help.go:79
-msgid "Path to an alternate server directory"
-msgstr ""
-
-#: lxc/main.go:240
-msgid "Pause containers."
-msgstr ""
-
-#: lxc/main.go:42
-msgid "Permission denied, are you in the lxd group?"
+#: lxc/action.go:48 lxc/action.go:49
+msgid "Pause containers"
 msgstr ""
 
-#: lxc/info.go:138
+#: lxc/info.go:142
 #, c-format
 msgid "Pid: %d"
 msgstr ""
 
-#: lxc/network.go:446 lxc/profile.go:276 lxc/storage.go:648 lxc/storage.go:1210
+#: lxc/network.go:632 lxc/profile.go:491 lxc/storage.go:299
+#: lxc/storage_volume.go:823
 msgid "Press enter to open the editor again"
 msgstr ""
 
-#: lxc/config.go:822 lxc/config.go:887 lxc/config.go:1397 lxc/config.go:1447
-#: lxc/image.go:1192
+#: lxc/config.go:196 lxc/config.go:260 lxc/config_metadata.go:145
+#: lxc/config_template.go:205 lxc/image.go:406
 msgid "Press enter to start the editor again"
 msgstr ""
 
-#: lxc/monitor.go:68
+#: lxc/monitor.go:47
 msgid "Pretty rendering"
 msgstr ""
 
-#: lxc/help.go:73
-msgid "Print debug information"
-msgstr ""
-
-#: lxc/help.go:72
-msgid "Print less common commands"
+#: lxc/main.go:55
+msgid "Print help"
 msgstr ""
 
-#: lxc/query.go:37
+#: lxc/query.go:36
 msgid "Print the raw response"
 msgstr ""
 
-#: lxc/help.go:74
-msgid "Print verbose information"
+#: lxc/main.go:54
+msgid "Print version number"
 msgstr ""
 
-#: lxc/info.go:162
+#: lxc/info.go:166
 #, c-format
 msgid "Processes: %d"
 msgstr ""
 
-#: lxc/profile.go:362
+#: lxc/main_aliases.go:123 lxc/main_aliases.go:131
+#, c-format
+msgid "Processing aliases failed: %s\n"
+msgstr ""
+
+#: lxc/profile.go:147
 #, c-format
 msgid "Profile %s added to %s"
 msgstr ""
 
-#: lxc/profile.go:226
+#: lxc/profile.go:333
 #, c-format
 msgid "Profile %s created"
 msgstr ""
 
-#: lxc/profile.go:310
+#: lxc/profile.go:381
 #, c-format
 msgid "Profile %s deleted"
 msgstr ""
 
-#: lxc/profile.go:397
+#: lxc/profile.go:690
 #, c-format
 msgid "Profile %s removed from %s"
 msgstr ""
 
-#: lxc/profile.go:300
+#: lxc/profile.go:738
 #, c-format
 msgid "Profile %s renamed to %s"
 msgstr ""
 
-#: lxc/copy.go:39 lxc/copy.go:40 lxc/init.go:141 lxc/init.go:142
+#: lxc/copy.go:40 lxc/init.go:43
 msgid "Profile to apply to the new container"
 msgstr ""
 
-#: lxc/profile.go:339
+#: lxc/profile.go:225
 #, c-format
 msgid "Profiles %s applied to %s"
 msgstr ""
 
-#: lxc/info.go:136
+#: lxc/info.go:140
 #, c-format
 msgid "Profiles: %s"
 msgstr ""
 
-#: lxc/image.go:619
+#: lxc/image.go:849
 msgid "Properties:"
 msgstr ""
 
-#: lxc/remote.go:72
+#: lxc/remote.go:92
 msgid "Public image server"
 msgstr ""
 
-#: lxc/image.go:602
+#: lxc/image.go:827
 #, c-format
 msgid "Public: %s"
 msgstr ""
 
-#: lxc/file.go:68 lxc/file.go:69
-msgid "Recursively push or pull files"
+#: lxc/publish.go:33 lxc/publish.go:34
+msgid "Publish containers as images"
 msgstr ""
 
-#: lxc/image.go:529
-#, c-format
-msgid "Refreshing the image: %s"
+#: lxc/file.go:184 lxc/file.go:185
+msgid "Pull files from containers"
 msgstr ""
 
-#: lxc/remote.go:69
-msgid "Remote admin password"
+#: lxc/file.go:323 lxc/file.go:324
+msgid "Push files into containers"
 msgstr ""
 
-#: lxc/utils/cancel.go:34
-msgid "Remote operation canceled by user"
+#: lxc/file.go:192 lxc/file.go:330
+msgid "Recursively transfer files"
+msgstr ""
+
+#: lxc/image.go:1211 lxc/image.go:1212
+msgid "Refresh images"
 msgstr ""
 
-#: lxc/info.go:122
+#: lxc/image.go:1239
 #, c-format
-msgid "Remote: %s"
+msgid "Refreshing the image: %s"
 msgstr ""
 
-#: lxc/delete.go:42
+#: lxc/remote.go:515
 #, c-format
-msgid "Remove %s (yes/no): "
+msgid "Remote %s already exists"
 msgstr ""
 
-#: lxc/storage.go:1247
+#: lxc/remote.go:507 lxc/remote.go:569 lxc/remote.go:618 lxc/remote.go:656
 #, c-format
-msgid "Renamed storage volume from \"%s\" to \"%s\""
+msgid "Remote %s doesn't exist"
 msgstr ""
 
-#: lxc/delete.go:36 lxc/delete.go:37
-msgid "Require user confirmation"
+#: lxc/remote.go:116
+#, c-format
+msgid "Remote %s exists as <%s>"
 msgstr ""
 
-#: lxc/info.go:159
-msgid "Resources:"
+#: lxc/remote.go:511 lxc/remote.go:573 lxc/remote.go:660
+#, c-format
+msgid "Remote %s is static and cannot be modified"
 msgstr ""
 
-#: lxc/main.go:248
-msgid "Restart containers."
+#: lxc/remote.go:89
+msgid "Remote admin password"
 msgstr ""
 
-#: lxc/console.go:38
-msgid "Retrieve the container's console log"
+#: lxc/utils/cancel.go:34
+msgid "Remote operation canceled by user"
 msgstr ""
 
-#: lxc/init.go:293
+#: lxc/info.go:126
 #, c-format
-msgid "Retrieving image: %s"
+msgid "Remote: %s"
 msgstr ""
 
-#: lxc/action.go:52
-msgid "Run command against all containers"
+#: lxc/delete.go:42
+#, c-format
+msgid "Remove %s (yes/no): "
 msgstr ""
 
-#: lxc/image.go:237
-msgid "SIZE"
+#: lxc/cluster.go:237 lxc/cluster.go:238
+msgid "Remove a member from the cluster"
 msgstr ""
 
-#: lxc/list.go:475
-msgid "SNAPSHOTS"
+#: lxc/alias.go:197 lxc/alias.go:198
+msgid "Remove aliases"
 msgstr ""
 
-#: lxc/storage.go:738
-msgid "SOURCE"
+#: lxc/config_device.go:404 lxc/config_device.go:405
+msgid "Remove container devices"
 msgstr ""
 
-#: lxc/cluster.go:186 lxc/list.go:476 lxc/network.go:583 lxc/storage.go:736
-msgid "STATE"
+#: lxc/profile.go:631 lxc/profile.go:632
+msgid "Remove profiles from containers"
 msgstr ""
 
-#: lxc/remote.go:414
-msgid "STATIC"
+#: lxc/remote.go:548 lxc/remote.go:549
+msgid "Remove remotes"
 msgstr ""
 
-#: lxc/operation.go:155
-msgid "STATUS"
+#: lxc/config_trust.go:196 lxc/config_trust.go:197
+msgid "Remove trusted clients"
 msgstr ""
 
-#: lxc/list.go:478
-msgid "STORAGE POOL"
+#: lxc/cluster.go:191 lxc/cluster.go:192
+msgid "Rename a cluster member"
 msgstr ""
 
-#: lxc/remote.go:71
-msgid "Server authentication type (tls or macaroons)"
+#: lxc/alias.go:146 lxc/alias.go:147 lxc/image_alias.go:249
+#: lxc/image_alias.go:250
+msgid "Rename aliases"
 msgstr ""
 
-#: lxc/remote.go:211
-msgid "Server certificate NACKed by user"
+#: lxc/rename.go:19 lxc/rename.go:20
+msgid "Rename containers and snapshots"
 msgstr ""
 
-#: lxc/remote.go:311
-msgid "Server doesn't trust us after authentication"
+#: lxc/network.go:872 lxc/network.go:873
+msgid "Rename networks"
 msgstr ""
 
-#: lxc/remote.go:70
-msgid "Server protocol (lxd or simplestreams)"
+#: lxc/profile.go:704 lxc/profile.go:705
+msgid "Rename profiles"
 msgstr ""
 
-#: lxc/file.go:66
-msgid "Set the file's gid on push"
+#: lxc/remote.go:486 lxc/remote.go:487
+msgid "Rename remotes"
 msgstr ""
 
-#: lxc/file.go:67
-msgid "Set the file's perms on push"
+#: lxc/storage_volume.go:1024 lxc/storage_volume.go:1025
+msgid "Rename storage volumes"
 msgstr ""
 
-#: lxc/file.go:65
-msgid "Set the file's uid on push"
+#: lxc/storage_volume.go:1073
+#, c-format
+msgid "Renamed storage volume from \"%s\" to \"%s\""
 msgstr ""
 
-#: lxc/help.go:29
-msgid "Show all commands (not just interesting ones)"
+#: lxc/delete.go:35
+msgid "Require user confirmation"
 msgstr ""
 
-#: lxc/help.go:75
-msgid "Show client version"
+#: lxc/info.go:163
+msgid "Resources:"
 msgstr ""
 
-#: lxc/info.go:40
-msgid "Show the container's last 100 log lines?"
+#: lxc/action.go:68
+msgid "Restart containers"
 msgstr ""
 
-#: lxc/config.go:36
-msgid "Show the expanded configuration"
+#: lxc/action.go:69
+msgid ""
+"Restart containers\n"
+"\n"
+"The opposite of \"lxc pause\" is \"lxc start\"."
 msgstr ""
 
-#: lxc/info.go:41
-msgid "Show the resources available to the server"
+#: lxc/restore.go:23
+msgid "Restore containers from snapshots"
 msgstr ""
 
-#: lxc/storage.go:163
-msgid "Show the resources available to the storage pool"
+#: lxc/restore.go:24
+msgid ""
+"Restore containers from snapshots\n"
+"\n"
+"If --stateful is passed, then the running state will be restored too."
+msgstr ""
+
+#: lxc/console.go:39
+msgid "Retrieve the container's console log"
+msgstr ""
+
+#: lxc/init.go:201
+#, c-format
+msgid "Retrieving image: %s"
+msgstr ""
+
+#: lxc/action.go:112
+msgid "Run command against all containers"
+msgstr ""
+
+#: lxc/image.go:927
+msgid "SIZE"
+msgstr ""
+
+#: lxc/list.go:472
+msgid "SNAPSHOTS"
+msgstr ""
+
+#: lxc/storage.go:551
+msgid "SOURCE"
+msgstr ""
+
+#: lxc/cluster.go:122 lxc/list.go:473 lxc/network.go:788 lxc/storage.go:549
+msgid "STATE"
+msgstr ""
+
+#: lxc/remote.go:468
+msgid "STATIC"
+msgstr ""
+
+#: lxc/operation.go:154
+msgid "STATUS"
+msgstr ""
+
+#: lxc/list.go:475
+msgid "STORAGE POOL"
+msgstr ""
+
+#: lxc/query.go:26 lxc/query.go:27
+msgid "Send a raw query to LXD"
+msgstr ""
+
+#: lxc/remote.go:91
+msgid "Server authentication type (tls or macaroons)"
+msgstr ""
+
+#: lxc/remote.go:260
+msgid "Server certificate NACKed by user"
+msgstr ""
+
+#: lxc/remote.go:360
+msgid "Server doesn't trust us after authentication"
+msgstr ""
+
+#: lxc/remote.go:90
+msgid "Server protocol (lxd or simplestreams)"
+msgstr ""
+
+#: lxc/config_device.go:492 lxc/config_device.go:493
+msgid "Set container device configuration keys"
+msgstr ""
+
+#: lxc/config.go:354 lxc/config.go:355
+msgid "Set container or server configuration keys"
+msgstr ""
+
+#: lxc/network.go:919 lxc/network.go:920
+msgid "Set network configuration keys"
+msgstr ""
+
+#: lxc/profile.go:752 lxc/profile.go:753
+msgid "Set profile configuration keys"
+msgstr ""
+
+#: lxc/storage.go:572 lxc/storage.go:573
+msgid "Set storage pool configuration keys"
+msgstr ""
+
+#: lxc/storage_volume.go:1088 lxc/storage_volume.go:1089
+msgid "Set storage volume configuration keys"
+msgstr ""
+
+#: lxc/remote.go:635 lxc/remote.go:636
+msgid "Set the URL for the remote"
+msgstr ""
+
+#: lxc/remote.go:597 lxc/remote.go:598
+msgid "Set the default remote"
+msgstr ""
+
+#: lxc/file.go:333
+msgid "Set the file's gid on push"
+msgstr ""
+
+#: lxc/file.go:334
+msgid "Set the file's perms on push"
+msgstr ""
+
+#: lxc/file.go:332
+msgid "Set the file's uid on push"
+msgstr ""
+
+#: lxc/main.go:57
+msgid "Show all debug messages"
+msgstr ""
+
+#: lxc/main.go:58
+msgid "Show all information messages"
+msgstr ""
+
+#: lxc/config_metadata.go:175 lxc/config_metadata.go:176
+msgid "Show container metadata files"
+msgstr ""
+
+#: lxc/config.go:451 lxc/config.go:452
+msgid "Show container or server configurations"
+msgstr ""
+
+#: lxc/info.go:28 lxc/info.go:29
+msgid "Show container or server information"
+msgstr ""
+
+#: lxc/config_template.go:297 lxc/config_template.go:298
+msgid "Show content of container file templates"
+msgstr ""
+
+#: lxc/cluster.go:141 lxc/cluster.go:142
+msgid "Show details of a cluster member"
+msgstr ""
+
+#: lxc/operation.go:173 lxc/operation.go:174
+msgid "Show details on a background operation"
+msgstr ""
+
+#: lxc/config_device.go:581 lxc/config_device.go:582
+msgid "Show full device configuration for containers or profiles"
+msgstr ""
+
+#: lxc/image.go:1284 lxc/image.go:1285
+msgid "Show image properties"
+msgstr ""
+
+#: lxc/main.go:61
+msgid "Show less common commands"
 msgstr ""
 
-#: lxc/storage.go:164
+#: lxc/network.go:988 lxc/network.go:989
+msgid "Show network configurations"
+msgstr ""
+
+#: lxc/profile.go:811 lxc/profile.go:812
+msgid "Show profile configurations"
+msgstr ""
+
+#: lxc/storage.go:644 lxc/storage.go:645
+msgid "Show storage pool configurations and resources"
+msgstr ""
+
+#: lxc/storage_volume.go:1165
+msgid "Show storage volum configurations"
+msgstr ""
+
+#: lxc/storage_volume.go:1166
+msgid "Show storage volume configurations"
+msgstr ""
+
+#: lxc/info.go:39
+msgid "Show the container's last 100 log lines?"
+msgstr ""
+
+#: lxc/remote.go:379 lxc/remote.go:380
+msgid "Show the default remote"
+msgstr ""
+
+#: lxc/config.go:455
+msgid "Show the expanded configuration"
+msgstr ""
+
+#: lxc/info.go:40
+msgid "Show the resources available to the server"
+msgstr ""
+
+#: lxc/storage.go:648
+msgid "Show the resources available to the storage pool"
+msgstr ""
+
+#: lxc/storage.go:386
 msgid "Show the used and free space in bytes"
 msgstr ""
 
-#: lxc/image.go:600
+#: lxc/image.go:775 lxc/image.go:776
+msgid "Show useful information about images"
+msgstr ""
+
+#: lxc/storage.go:382 lxc/storage.go:383
+msgid "Show useful information about storage pools"
+msgstr ""
+
+#: lxc/image.go:825
 #, c-format
 msgid "Size: %.2fMB"
 msgstr ""
 
-#: lxc/info.go:240
+#: lxc/info.go:244
 msgid "Snapshots:"
 msgstr ""
 
-#: lxc/action.go:163
+#: lxc/action.go:242
 #, c-format
 msgid "Some containers failed to %s"
 msgstr ""
 
-#: lxc/image.go:634
+#: lxc/image.go:867
 msgid "Source:"
 msgstr ""
 
-#: lxc/main.go:258
-msgid "Start containers."
+#: lxc/action.go:29 lxc/action.go:30
+msgid "Start containers"
 msgstr ""
 
-#: lxc/launch.go:59
+#: lxc/launch.go:62
 #, c-format
 msgid "Starting %s"
 msgstr ""
 
-#: lxc/info.go:130
+#: lxc/info.go:134
 #, c-format
 msgid "Status: %s"
 msgstr ""
 
-#: lxc/main.go:264
-msgid "Stop containers."
+#: lxc/action.go:90 lxc/action.go:91
+msgid "Stop containers"
 msgstr ""
 
-#: lxc/publish.go:37 lxc/publish.go:38
+#: lxc/publish.go:40
 msgid "Stop the container if currently running"
 msgstr ""
 
-#: lxc/publish.go:136
+#: lxc/publish.go:144
 msgid "Stopping container failed!"
 msgstr ""
 
-#: lxc/delete.go:121
+#: lxc/delete.go:120
 #, c-format
 msgid "Stopping the container failed: %s"
 msgstr ""
 
-#: lxc/storage.go:538
+#: lxc/storage.go:144
 #, c-format
 msgid "Storage pool %s created"
 msgstr ""
 
-#: lxc/storage.go:598
+#: lxc/storage.go:194
 #, c-format
 msgid "Storage pool %s deleted"
 msgstr ""
 
-#: lxc/storage.go:536
+#: lxc/storage.go:142
 #, c-format
 msgid "Storage pool %s pending on node %s"
 msgstr ""
 
-#: lxc/init.go:147 lxc/init.go:148
+#: lxc/init.go:46
 msgid "Storage pool name"
 msgstr ""
 
-#: lxc/storage.go:980
+#: lxc/storage_volume.go:484
 #, c-format
 msgid "Storage volume %s created"
 msgstr ""
 
-#: lxc/storage.go:1000
+#: lxc/storage_volume.go:545
 #, c-format
 msgid "Storage volume %s deleted"
 msgstr ""
 
-#: lxc/storage.go:1135
+#: lxc/storage_volume.go:388
 msgid "Storage volume copied successfully!"
 msgstr ""
 
-#: lxc/storage.go:1129
+#: lxc/storage_volume.go:376
 msgid "Storage volume moved successfully!"
 msgstr ""
 
-#: lxc/action.go:50
-msgid "Store the container state (only for stop)"
+#: lxc/action.go:115
+msgid "Store the container state"
 msgstr ""
 
-#: lxc/info.go:201
+#: lxc/info.go:205
 msgid "Swap (current)"
 msgstr ""
 
-#: lxc/info.go:205
+#: lxc/info.go:209
 msgid "Swap (peak)"
 msgstr ""
 
-#: lxc/alias.go:85
+#: lxc/alias.go:128
 msgid "TARGET"
 msgstr ""
 
-#: lxc/list.go:477 lxc/network.go:516 lxc/network.go:577 lxc/operation.go:153
-#: lxc/storage.go:935
+#: lxc/list.go:474 lxc/network.go:782 lxc/network.go:854 lxc/operation.go:152
+#: lxc/storage_volume.go:965
 msgid "TYPE"
 msgstr ""
 
-#: lxc/delete.go:105
+#: lxc/delete.go:104
 msgid "The container is currently running, stop it first or pass --force."
 msgstr ""
 
-#: lxc/publish.go:101
+#: lxc/publish.go:109
 msgid ""
 "The container is currently running. Use --force to have it stopped and "
 "restarted."
 msgstr ""
 
-#: lxc/init.go:372
+#: lxc/init.go:280
 msgid "The container you are starting doesn't have any network attached to it."
 msgstr ""
 
-#: lxc/config.go:944 lxc/config.go:961 lxc/config.go:1240
+#: lxc/config_device.go:130 lxc/config_device.go:147 lxc/config_device.go:354
 msgid "The device already exists"
 msgstr ""
 
-#: lxc/config.go:1007 lxc/config.go:1019 lxc/config.go:1055 lxc/config.go:1073
-#: lxc/config.go:1119 lxc/config.go:1136 lxc/config.go:1179 lxc/config.go:1197
+#: lxc/config_device.go:218 lxc/config_device.go:230 lxc/config_device.go:442
+#: lxc/config_device.go:460 lxc/config_device.go:533 lxc/config_device.go:550
 msgid "The device doesn't exist"
 msgstr ""
 
-#: lxc/init.go:356
+#: lxc/init.go:264
 #, c-format
 msgid "The local image '%s' couldn't be found, trying '%s:%s' instead."
 msgstr ""
 
-#: lxc/init.go:352
+#: lxc/init.go:260
 #, c-format
 msgid "The local image '%s' couldn't be found, trying '%s:' instead."
 msgstr ""
 
-#: lxc/action.go:35
-msgid "The opposite of \"lxc pause\" is \"lxc start\"."
-msgstr ""
-
-#: lxc/config.go:1245
+#: lxc/config_device.go:359
 msgid "The profile device doesn't exist"
 msgstr ""
 
-#: lxc/network.go:317 lxc/network.go:370 lxc/storage.go:449 lxc/storage.go:579
+#: lxc/network.go:425 lxc/network.go:510 lxc/storage_volume.go:619
+#: lxc/storage_volume.go:700
 msgid "The specified device doesn't exist"
 msgstr ""
 
-#: lxc/network.go:321 lxc/network.go:374
+#: lxc/network.go:429 lxc/network.go:514
 msgid "The specified device doesn't match the network"
 msgstr ""
 
-#: lxc/publish.go:74
+#: lxc/publish.go:82
 msgid "There is no \"image name\".  Did you want an alias?"
 msgstr ""
 
-#: lxc/help.go:47
-msgid ""
-"This is the LXD command line client.\n"
-"\n"
-"All of LXD's features can be driven through the various commands below.\n"
-"For help with any of those, simply call them with --help."
-msgstr ""
-
-#: lxc/action.go:46
+#: lxc/action.go:122
 msgid "Time to wait for the container before killing it"
 msgstr ""
 
-#: lxc/image.go:603
+#: lxc/image.go:828
 msgid "Timestamps:"
 msgstr ""
 
-#: lxc/init.go:374
+#: lxc/init.go:282
 msgid "To attach a network to a container, use: lxc network attach"
 msgstr ""
 
-#: lxc/init.go:373
+#: lxc/init.go:281
 msgid "To create a new network, use: lxc network create"
 msgstr ""
 
-#: lxc/console.go:173
+#: lxc/console.go:185
 msgid "To detach from the console, press: <ctrl>+a q"
 msgstr ""
 
-#: lxc/main.go:172
+#: lxc/main.go:260
 msgid "To start your first container, try: lxc launch ubuntu:16.04"
 msgstr ""
 
-#: lxc/copy.go:43 lxc/move.go:43
+#: lxc/storage_volume.go:997
+msgid "Transfer mode, one of pull (default), push or relay"
+msgstr ""
+
+#: lxc/copy.go:42
+msgid "Transfer mode. One of pull (default), push or relay"
+msgstr ""
+
+#: lxc/move.go:45 lxc/storage_volume.go:286
 msgid "Transfer mode. One of pull (default), push or relay."
 msgstr ""
 
-#: lxc/copy.go:212
+#: lxc/copy.go:229
 #, c-format
 msgid "Transferring container: %s"
 msgstr ""
 
-#: lxc/image.go:717
+#: lxc/image.go:687
 #, c-format
 msgid "Transferring image: %s"
 msgstr ""
 
-#: lxc/action.go:108 lxc/launch.go:77
+#: lxc/action.go:181 lxc/launch.go:80
 #, c-format
 msgid "Try `lxc info --show-log %s` for more info"
 msgstr ""
 
-#: lxc/info.go:132
+#: lxc/info.go:136
 msgid "Type: ephemeral"
 msgstr ""
 
-#: lxc/info.go:134
+#: lxc/info.go:138
 msgid "Type: persistent"
 msgstr ""
 
-#: lxc/image.go:238
+#: lxc/image.go:928
 msgid "UPLOAD DATE"
 msgstr ""
 
-#: lxc/cluster.go:184 lxc/remote.go:410
+#: lxc/cluster.go:120 lxc/remote.go:464
 msgid "URL"
 msgstr ""
 
-#: lxc/network.go:580 lxc/profile.go:574 lxc/storage.go:740 lxc/storage.go:938
+#: lxc/network.go:785 lxc/profile.go:614 lxc/storage.go:553
+#: lxc/storage_volume.go:968
 msgid "USED BY"
 msgstr ""
 
-#: lxc/manpage.go:36
-msgid "Unable to find help2man."
+#: lxc/list.go:514
+#, c-format
+msgid "Unknown column shorthand char '%c' in '%s'"
 msgstr ""
 
-#: lxc/file.go:124
+#: lxc/file.go:596
 #, c-format
 msgid "Unknown file type '%s'"
 msgstr ""
 
-#: lxc/image.go:608
-#, c-format
-msgid "Uploaded: %s"
+#: lxc/config_device.go:649 lxc/config_device.go:650
+msgid "Unset container device configuration keys"
 msgstr ""
 
-#: lxc/action.go:38
-#, c-format
-msgid ""
-"Usage: lxc %s [--all] [<remote>:]<container> [[<remote>:]<container>...]\n"
-"\n"
-"%s%s"
+#: lxc/config.go:559 lxc/config.go:560
+msgid "Unset container or server configuration keys"
 msgstr ""
 
-#: lxc/help.go:45
-msgid "Usage: lxc <command> [options]"
+#: lxc/network.go:1050 lxc/network.go:1051
+msgid "Unset network configuration keys"
 msgstr ""
 
-#: lxc/alias.go:22
-msgid ""
-"Usage: lxc alias <subcommand> [options]\n"
-"\n"
-"Manage command aliases.\n"
-"\n"
-"lxc alias add <alias> <target>\n"
-"    Add a new alias <alias> pointing to <target>.\n"
-"\n"
-"lxc alias remove <alias>\n"
-"    Remove the alias <alias>.\n"
-"\n"
-"lxc alias list\n"
-"    List all the aliases.\n"
-"\n"
-"lxc alias rename <old alias> <new alias>\n"
-"    Rename remote <old alias> to <new alias>."
+#: lxc/profile.go:865 lxc/profile.go:866
+msgid "Unset profile configuration keys"
 msgstr ""
 
-#: lxc/cluster.go:23
-msgid ""
-"Usage: lxc cluster <subcommand> [options]\n"
-"\n"
-"Manage cluster nodes.\n"
-"\n"
-"lxc cluster list [<remote>:]\n"
-"    List all nodes in the cluster.\n"
-"\n"
-"lxc cluster show [<remote>:]<node>\n"
-"    Show details of a node.\n"
-"\n"
-"lxc cluster rename [<remote>:]<node> <new-name>\n"
-"    Rename a cluster node.\n"
-"\n"
-"lxc cluster delete [<remote>:]<node> [--force]\n"
-"    Delete a node from the cluster."
+#: lxc/storage.go:728 lxc/storage.go:729
+msgid "Unset storage pool configuration keys"
 msgstr ""
 
-#: lxc/config.go:85
-msgid ""
-"Usage: lxc config <subcommand> [options]\n"
-"\n"
-"Change container or server configuration options.\n"
-"\n"
-"*Container configuration*\n"
-"\n"
-"lxc config get [<remote>:][container] <key>\n"
-"    Get container or server configuration key.\n"
-"\n"
-"lxc config set [<remote>:][container] <key> <value>\n"
-"    Set container or server configuration key.\n"
-"\n"
-"lxc config unset [<remote>:][container] <key>\n"
-"    Unset container or server configuration key.\n"
-"\n"
-"lxc config show [<remote>:][container] [--expanded]\n"
-"    Show container or server configuration.\n"
-"\n"
-"lxc config edit [<remote>:][container]\n"
-"    Edit configuration, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"*Container metadata*\n"
-"\n"
-"lxc config metadata show [<remote>:][container]\n"
-"    Show the container metadata.yaml content.\n"
-"\n"
-"lxc config metadata edit [<remote>:][container]\n"
-"    Edit the container metadata.yaml, either by launching external editor or "
-"reading STDIN.\n"
-"\n"
-"*Container templates*\n"
-"\n"
-"lxc config template list [<remote>:][container]\n"
-"    List the names of template files for a container.\n"
-"\n"
-"lxc config template show [<remote>:][container] [template]\n"
-"    Show the content of a template file for a container.\n"
-"\n"
-"lxc config template create [<remote>:][container] [template]\n"
-"    Add an empty template file for a container.\n"
-"\n"
-"lxc config template edit [<remote>:][container] [template]\n"
-"    Edit the content of a template file for a container, either by launching "
-"external editor or reading STDIN.\n"
-"\n"
-"lxc config template delete [<remote>:][container] [template]\n"
-"    Delete a template file for a container.\n"
-"\n"
-"\n"
-"*Device management*\n"
-"\n"
-"lxc config device add [<remote>:]<container> <device> <type> [key=value...]\n"
-"    Add a device to a container.\n"
-"\n"
-"lxc config device get [<remote>:]<container> <device> <key>\n"
-"    Get a device property.\n"
-"\n"
-"lxc config device set [<remote>:]<container> <device> <key> <value>\n"
-"    Set a device property.\n"
-"\n"
-"lxc config device unset [<remote>:]<container> <device> <key>\n"
-"    Unset a device property.\n"
-"\n"
-"lxc config device override [<remote>:]<container> <device> [key=value...]\n"
-"    Copy a profile inherited device into local container config.\n"
-"\n"
-"lxc config device list [<remote>:]<container>\n"
-"    List devices for container.\n"
-"\n"
-"lxc config device show [<remote>:]<container>\n"
-"    Show full device details for container.\n"
-"\n"
-"lxc config device remove [<remote>:]<container> <name>...\n"
-"    Remove device from container.\n"
-"\n"
-"*Client trust store management*\n"
-"\n"
-"lxc config trust list [<remote>:]\n"
-"    List all trusted certs.\n"
-"\n"
-"lxc config trust add [<remote>:] <certfile.crt>\n"
-"    Add certfile.crt to trusted hosts.\n"
-"\n"
-"lxc config trust remove [<remote>:] [hostname|fingerprint]\n"
-"    Remove the cert from trusted hosts.\n"
-"\n"
-"*Examples*\n"
-"\n"
-"cat config.yaml | lxc config edit <container>\n"
-"    Update the container configuration from config.yaml.\n"
-"\n"
-"lxc config device add [<remote>:]container1 <device-name> disk source=/share/"
-"c1 path=opt\n"
-"    Will mount the host's /share/c1 onto /opt in the container.\n"
-"\n"
-"lxc config set [<remote>:]<container> limits.cpu 2\n"
-"    Will set a CPU limit of \"2\" for the container.\n"
-"\n"
-"lxc config set core.https_address [::]:8443\n"
-"    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
-"\n"
-"lxc config set core.trust_password blah\n"
-"    Will set the server's trust password to blah."
+#: lxc/storage_volume.go:1240 lxc/storage_volume.go:1241
+msgid "Unset storage volume configuration keys"
 msgstr ""
 
-#: lxc/console.go:31
-msgid ""
-"Usage: lxc console [<remote>:]<container> [-l]\n"
-"\n"
-"Interact with the container's console device and log."
+#: lxc/image.go:835
+#, c-format
+msgid "Uploaded: %s"
 msgstr ""
 
-#: lxc/copy.go:30
-msgid ""
-"Usage: lxc copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>] "
-"[--ephemeral|e] [--profile|-p <profile>...] [--config|-c <key=value>...] [--"
-"container-only] [--target <node>]\n"
-"\n"
-"Copy containers within or in between LXD instances."
+#: lxc/delete.go:47
+msgid "User aborted delete operation"
 msgstr ""
 
-#: lxc/delete.go:27
+#: lxc/utils/cancel.go:40
 msgid ""
-"Usage: lxc delete [<remote>:]<container>[/<snapshot>] "
-"[[<remote>:]<container>[/<snapshot>]...]\n"
-"\n"
-"Delete containers and snapshots."
+"User signaled us three times, exiting. The remote operation will keep "
+"running."
 msgstr ""
 
-#: lxc/exec.go:53
-msgid ""
-"Usage: lxc exec [<remote>:]<container> [-t] [-T] [-n] [--mode=auto|"
-"interactive|non-interactive] [--env KEY=VALUE...] [--] <command line>\n"
-"\n"
-"Execute commands in containers.\n"
-"\n"
-"The command is executed directly using exec, so there is no shell and shell "
-"patterns (variables, file redirects, ...)\n"
-"won't be understood. If you need a shell environment you need to execute the "
-"shell executable, passing the shell commands\n"
-"as arguments, for example:\n"
-"\n"
-"    lxc exec <container> -- sh -c \"cd /tmp && pwd\"\n"
-"\n"
-"Mode defaults to non-interactive, interactive mode is selected if both stdin "
-"AND stdout are terminals (stderr is ignored)."
+#: lxc/query.go:35
+msgid "Wait for the operation to complete"
 msgstr ""
 
-#: lxc/file.go:39
+#: lxc/restore.go:36
 msgid ""
-"Usage: lxc file <subcommand> [options]\n"
-"\n"
-"Manage files in containers.\n"
-"\n"
-"lxc file pull [-r|--recursive] [<remote>:]<container>/<path> "
-"[[<remote>:]<container>/<path>...] <target path>\n"
-"    Pull files from containers.\n"
-"\n"
-"lxc file push [-r|--recursive] [-p|--create-dirs] [--uid=UID] [--gid=GID] [--"
-"mode=MODE] <source path> [<source path>...] [<remote>:]<container>/<path>\n"
-"    Push files into containers.\n"
-"\n"
-"lxc file delete [<remote>:]<container>/<path> [[<remote>:]<container>/"
-"<path>...]\n"
-"    Delete files in containers.\n"
-"\n"
-"lxc file edit [<remote>:]<container>/<path>\n"
-"    Edit files in containers using the default text editor.\n"
-"\n"
-"*Examples*\n"
-"lxc file push /etc/hosts foo/etc/hosts\n"
-"   To push /etc/hosts into the container \"foo\".\n"
-"\n"
-"lxc file pull foo/etc/hosts .\n"
-"   To pull /etc/hosts from the container and write it to the current "
-"directory."
+"Whether or not to restore the container's running state from snapshot (if "
+"available)"
 msgstr ""
 
-#: lxc/finger.go:15
-msgid ""
-"Usage: lxc finger [<remote>:]\n"
-"\n"
-"Check if the LXD server is alive."
+#: lxc/snapshot.go:31
+msgid "Whether or not to snapshot the container's running state"
 msgstr ""
 
-#: lxc/help.go:22
-msgid ""
-"Usage: lxc help [--all]\n"
-"\n"
-"Help page for the LXD client."
+#: lxc/network.go:765 lxc/operation.go:140 lxc/remote.go:436 lxc/remote.go:441
+msgid "YES"
 msgstr ""
 
-#: lxc/image.go:73
-msgid ""
-"Usage: lxc image <subcommand> [options]\n"
-"\n"
-"Manipulate container images.\n"
-"\n"
-"In LXD containers are created from images. Those images were themselves\n"
-"either generated from an existing container or downloaded from an image\n"
-"server.\n"
-"\n"
-"When using remote images, LXD will automatically cache images for you\n"
-"and remove them upon expiration.\n"
-"\n"
-"The image unique identifier is the hash (sha-256) of its representation\n"
-"as a compressed tarball (or for split images, the concatenation of the\n"
-"metadata and rootfs tarballs).\n"
-"\n"
-"Images can be referenced by their full hash, shortest unique partial\n"
-"hash or alias name (if one is set).\n"
-"\n"
-"\n"
-"lxc image import <tarball>|<dir> [<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) or an image directory into the LXD "
-"image store.\n"
-"    Directory import is only available on Linux and must be performed as "
-"root.\n"
-"\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"
-"    Delete one or more images from the LXD image store.\n"
-"\n"
-"lxc image refresh [<remote>:]<image> [[<remote>:]<image>...]\n"
-"    Refresh one or more images from its parent remote.\n"
-"\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"
-"    The target may be an existing directory, file name, or \"-\" to specify\n"
-"    stdout.  The target MUST be a directory when exporting a split image.\n"
-"    If the target is a directory, the image's name (each part's name for\n"
-"    split images) as found in the database will be used for the exported\n"
-"    image.  If the target is a file (not a directory and not stdout), then\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"
-"    Print everything LXD knows about a given image.\n"
-"\n"
-"lxc image list [<remote>:] [filter] [--format csv|json|table|yaml] [-c "
-"<columns>]\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"
-"    The -c option takes a (optionally comma-separated) list of arguments "
-"that\n"
-"    control which image attributes to output when displaying in table or "
-"csv\n"
-"    format.\n"
-"\n"
-"    Default column layout is: lfpdasu\n"
-"\n"
-"    Column shorthand chars:\n"
-"\n"
-"        l - Shortest image alias (and optionally number of other aliases)\n"
-"\n"
-"        L - Newline-separated list of all image aliases\n"
-"\n"
-"        f - Fingerprint\n"
-"\n"
-"        p - Whether image is public\n"
-"\n"
-"        d - Description\n"
-"\n"
-"        a - Architecture\n"
-"\n"
-"        s - Size\n"
-"\n"
-"        u - Upload date\n"
-"\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"
-"    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"
-"    Create a new alias for an existing image.\n"
-"\n"
-"lxc image alias rename [<remote>:]<alias> <new-name>\n"
-"    Rename an alias.\n"
-"\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."
+#: lxc/exec.go:122
+msgid "You can't pass -t and -T at the same time"
 msgstr ""
 
-#: lxc/info.go:27
+#: lxc/exec.go:126
+msgid "You can't pass -t or -T at the same time as --mode"
+msgstr ""
+
+#: lxc/copy.go:78
+msgid "You must specify a destination container name when using --target"
+msgstr ""
+
+#: lxc/copy.go:73 lxc/move.go:188
+msgid "You must specify a source container name"
+msgstr ""
+
+#: lxc/copy.go:68 lxc/move.go:91 lxc/move.go:183
+msgid "You must use the same source and destination remote when using --target"
+msgstr ""
+
+#: lxc/alias.go:53
+msgid "add <alias> <target>"
+msgstr ""
+
+#: lxc/config_trust.go:57
+msgid "add [<remote>:] <cert>"
+msgstr ""
+
+#: lxc/profile.go:100
+msgid "add [<remote>:]<container> <profile>"
+msgstr ""
+
+#: lxc/config_device.go:74
+msgid "add [<remote>:]<container|profile> <device> <type> [key=value...]"
+msgstr ""
+
+#: lxc/remote.go:82
+msgid "add [<remote>] <IP|FQDN|URL>"
+msgstr ""
+
+#: lxc/alias.go:21 lxc/image_alias.go:24
+msgid "alias"
+msgstr ""
+
+#: lxc/profile.go:160
+msgid "assign [<remote>:]<container> <profiles>"
+msgstr ""
+
+#: lxc/network.go:102
+msgid "attach [<remote>:]<network> <container> [device name] [interface name]"
+msgstr ""
+
+#: lxc/storage_volume.go:120
+msgid "attach [<remote>:]<pool> <volume> <container> [device name] <path>"
+msgstr ""
+
+#: lxc/storage_volume.go:199
 msgid ""
-"Usage: lxc info [<remote>:][<container>] [--show-log] [--resources]\n"
-"\n"
-"Show container or server information.\n"
-"\n"
-"lxc info [<remote>:]<container> [--show-log]\n"
-"    For container information.\n"
-"\n"
-"lxc info [<remote>:] [--resources]\n"
-"    For LXD server information."
+"attach-profile [<remote:>]<pool> <volume> <profile> [device name] <path>"
 msgstr ""
 
-#: lxc/init.go:79
+#: lxc/network.go:175
 msgid ""
-"Usage: lxc init [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
-"profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
-"<node>]\n"
-"\n"
-"Create containers from images.\n"
-"\n"
-"Not specifying -p will result in the default profile.\n"
-"Specifying \"-p\" with no argument will result in no profile.\n"
-"\n"
-"Examples:\n"
-"    lxc init ubuntu:16.04 u1"
+"attach-profile [<remote>:]<network> <profile> [device name] [interface name]"
+msgstr ""
+
+#: lxc/cluster.go:24
+msgid "cluster"
+msgstr ""
+
+#: lxc/config.go:27
+msgid "config"
+msgstr ""
+
+#: lxc/console.go:30
+msgid "console [<remote>:]<container>"
+msgstr ""
+
+#: lxc/storage_volume.go:280
+msgid "copy <pool>/<volume> <pool>/<volume>"
+msgstr ""
+
+#: lxc/image.go:128
+msgid "copy [<remote>:]<image> <remote>:"
+msgstr ""
+
+#: lxc/profile.go:238
+msgid "copy [<remote>:]<profile> [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/copy.go:32
+msgid "copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>]"
+msgstr ""
+
+#: lxc/image_alias.go:57
+msgid "create [<remote>:]<alias> <fingerprint>"
+msgstr ""
+
+#: lxc/config_template.go:65
+msgid "create [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/network.go:248
+msgid "create [<remote>:]<network> [key=value...]"
+msgstr ""
+
+#: lxc/storage.go:87
+msgid "create [<remote>:]<pool> <driver> [key=value]..."
+msgstr ""
+
+#: lxc/storage_volume.go:424
+msgid "create [<remote>:]<pool> <volume> [key=value]..."
+msgstr ""
+
+#: lxc/profile.go:295
+msgid "create [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/remote.go:453
+msgid "default"
+msgstr ""
+
+#: lxc/image_alias.go:103
+msgid "delete [<remote>:]<alias>"
+msgstr ""
+
+#: lxc/config_template.go:107
+msgid "delete [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/file.go:70
+msgid "delete [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...]"
+msgstr ""
+
+#: lxc/delete.go:27
+msgid ""
+"delete [<remote>:]<container>[/<snapshot>] [[<remote>:]<container>[/"
+"<snapshot>]...]"
+msgstr ""
+
+#: lxc/image.go:258
+msgid "delete [<remote>:]<image> [[<remote>:]<image>...]"
+msgstr ""
+
+#: lxc/network.go:317
+msgid "delete [<remote>:]<network>"
+msgstr ""
+
+#: lxc/operation.go:51
+msgid "delete [<remote>:]<operation>"
+msgstr ""
+
+#: lxc/storage.go:158
+msgid "delete [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:498
+msgid "delete [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:345
+msgid "delete [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/storage.go:431
+msgid "description"
+msgstr ""
+
+#: lxc/network.go:365
+msgid "detach [<remote>:]<network> <container> [device name]"
+msgstr ""
+
+#: lxc/storage_volume.go:559
+msgid "detach [<remote>:]<pool> <volume> <container> [device name]"
+msgstr ""
+
+#: lxc/storage_volume.go:641
+msgid "detach-profile [<remote:>]<pool> <volume> <profile> [device name]"
+msgstr ""
+
+#: lxc/network.go:450
+msgid "detach-profile [<remote>:]<network> <container> [device name]"
+msgstr ""
+
+#: lxc/config_device.go:22
+msgid "device"
+msgstr ""
+
+#: lxc/init.go:223
+msgid "didn't get any affected image, container or snapshot from server"
+msgstr ""
+
+#: lxc/image.go:819
+msgid "disabled"
+msgstr ""
+
+#: lxc/storage.go:430
+msgid "driver"
+msgstr ""
+
+#: lxc/config_template.go:150
+msgid "edit [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/file.go:120
+msgid "edit [<remote>:]<container>/<path>"
+msgstr ""
+
+#: lxc/image.go:310
+msgid "edit [<remote>:]<image>"
+msgstr ""
+
+#: lxc/network.go:535
+msgid "edit [<remote>:]<network>"
+msgstr ""
+
+#: lxc/storage.go:206
+msgid "edit [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:722
+msgid "edit [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:394
+msgid "edit [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/config.go:86 lxc/config_metadata.go:52
+msgid "edit [<remote>:][container]"
+msgstr ""
+
+#: lxc/image.go:821
+msgid "enabled"
+msgstr ""
+
+#: lxc/action.go:234
+#, c-format
+msgid "error: %v"
+msgstr ""
+
+#: lxc/exec.go:37
+msgid "exec [<remote>:]<container> [flags] [--] <command line>"
+msgstr ""
+
+#: lxc/image.go:433
+msgid "export [<remote>:]<image> [target]"
+msgstr ""
+
+#: lxc/file.go:38
+msgid "file"
+msgstr ""
+
+#: lxc/config_device.go:177
+msgid "get [<remote>:]<container|profile> <device> <key>"
+msgstr ""
+
+#: lxc/network.go:658
+msgid "get [<remote>:]<network> <key>"
+msgstr ""
+
+#: lxc/storage.go:326
+msgid "get [<remote>:]<pool> <key>"
+msgstr ""
+
+#: lxc/storage_volume.go:851
+msgid "get [<remote>:]<pool> <volume> <key>"
+msgstr ""
+
+#: lxc/profile.go:518
+msgid "get [<remote>:]<profile> <key>"
+msgstr ""
+
+#: lxc/config.go:287
+msgid "get [<remote>:][container] <key>"
+msgstr ""
+
+#: lxc/remote.go:378
+msgid "get-default"
+msgstr ""
+
+#: lxc/image.go:40
+msgid "image"
+msgstr ""
+
+#: lxc/image.go:569
+msgid ""
+"import <tarball>|<directory>|<URL> [<rootfs tarball>] [<remote>:] "
+"[key=value...]"
+msgstr ""
+
+#: lxc/storage.go:428
+msgid "info"
+msgstr ""
+
+#: lxc/image.go:774
+msgid "info [<remote>:]<image>"
+msgstr ""
+
+#: lxc/storage.go:381
+msgid "info [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/info.go:27
+msgid "info [<remote>:][<container>]"
+msgstr ""
+
+#: lxc/init.go:33
+msgid "init [<remote>:]<image> [<remote>:][<name>]"
 msgstr ""
 
 #: lxc/launch.go:20
+msgid "launch [<remote>:]<image> [<remote>:][<name>]"
+msgstr ""
+
+#: lxc/alias.go:96 lxc/remote.go:411
+msgid "list"
+msgstr ""
+
+#: lxc/cluster.go:56 lxc/config_trust.go:112 lxc/network.go:716
+#: lxc/operation.go:95 lxc/profile.go:565 lxc/storage.go:488
+msgid "list [<remote>:]"
+msgstr ""
+
+#: lxc/image.go:887
+msgid "list [<remote>:] [filter]"
+msgstr ""
+
+#: lxc/image_alias.go:146
+msgid "list [<remote>:] [filters...]"
+msgstr ""
+
+#: lxc/list.go:45
+msgid "list [<remote>:] [filters]"
+msgstr ""
+
+#: lxc/config_template.go:234
+msgid "list [<remote>:]<container>"
+msgstr ""
+
+#: lxc/config_device.go:249
+msgid "list [<remote>:]<container|profile>"
+msgstr ""
+
+#: lxc/storage_volume.go:915
+msgid "list [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/network.go:806
+msgid "list-leases [<remote>:]<network>"
+msgstr ""
+
+#: lxc/alias.go:57
 msgid ""
-"Usage: lxc launch [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
-"profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
-"<node>]\n"
-"\n"
-"Create and start containers from images.\n"
-"\n"
-"Not specifying -p will result in the default profile.\n"
-"Specifying \"-p\" with no argument will result in no profile.\n"
-"\n"
-"Examples:\n"
-"    lxc launch ubuntu:16.04 u1"
+"lxc alias add list list -c ns46S\n"
+"    Overwrite the \"list\" command to pass -c ns46S."
 msgstr ""
 
-#: lxc/list.go:44
+#: lxc/alias.go:200
 msgid ""
-"Usage: lxc list [<remote>:] [filters] [--format csv|json|table|yaml] [-c "
-"<columns>] [--fast]\n"
-"\n"
-"List the existing containers.\n"
-"\n"
-"Default column layout: ns46tS\n"
-"Fast column layout: nsacPt\n"
-"\n"
-"*Filters*\n"
-"A single keyword like \"web\" which will list any container with a name "
-"starting by \"web\".\n"
-"\n"
-"A regular expression on the container name. (e.g. .*web.*01$).\n"
-"\n"
-"A key/value pair referring to a configuration item. For those, the namespace "
-"can be abbreviated to the smallest unambiguous identifier.\n"
-"\t- \"user.blah=abc\" will list all containers with the \"blah\" user "
-"property set to \"abc\".\n"
-"\n"
-"\t- \"u.blah=abc\" will do the same\n"
-"\n"
-"\t- \"security.privileged=true\" will list all privileged containers\n"
-"\n"
-"\t- \"s.privileged=true\" will do the same\n"
-"\n"
-"A regular expression matching a configuration item or its value. (e.g. "
-"volatile.eth0.hwaddr=00:16:3e:.*).\n"
-"\n"
-"*Columns*\n"
-"The -c option takes a comma separated list of arguments that control\n"
-"which container attributes to output when displaying in table or csv\n"
-"format.\n"
-"\n"
-"Column arguments are either pre-defined shorthand chars (see below),\n"
-"or (extended) config keys.\n"
-"\n"
-"Commas between consecutive shorthand chars are optional.\n"
-"\n"
-"Pre-defined column shorthand chars:\n"
-"\n"
-"\t4 - IPv4 address\n"
-"\n"
-"\t6 - IPv6 address\n"
-"\n"
-"\ta - Architecture\n"
-"\n"
-"\tb - Storage pool\n"
-"\n"
-"\tc - Creation date\n"
-"\n"
-"\td - Description\n"
-"\n"
-"\tl - Last used date\n"
-"\n"
-"\tn - Name\n"
-"\n"
-"\tN - Number of Processes\n"
-"\n"
-"\tp - PID of the container's init process\n"
-"\n"
-"\tP - Profiles\n"
-"\n"
-"\ts - State\n"
-"\n"
-"\tS - Number of snapshots\n"
-"\n"
-"\tt - Type (persistent or ephemeral)\n"
-"\n"
-"\tL - Location of the container (e.g. its node)\n"
-"\n"
-"Custom columns are defined with \"key[:name][:maxWidth]\":\n"
-"\n"
-"\tKEY: The (extended) config key to display\n"
-"\n"
-"\tNAME: Name to display in the column header.\n"
-"\tDefaults to the key if not specified or empty.\n"
-"\n"
-"\tMAXWIDTH: Max width of the column (longer results are truncated).\n"
-"\tDefaults to -1 (unlimited). Use 0 to limit to the column header size.\n"
-"\n"
-"*Examples*\n"
-"lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:"
-"MAC\n"
-"\tShows a list of containers using the \"NAME\", \"BASE IMAGE\", \"STATE\", "
-"\"IPV4\",\n"
-"\t\"IPV6\" and \"MAC\" columns.\n"
+"lxc alias remove my-list\n"
+"    Remove the \"my-list\" alias."
+msgstr ""
+
+#: lxc/alias.go:149
+msgid ""
+"lxc alias rename list my-list\n"
+"    Rename existing alias \"list\" to \"my-list\"."
+msgstr ""
+
+#: lxc/config_device.go:78
+msgid ""
+"lxc config device add [<remote>:]container1 <device-name> disk source=/share/"
+"c1 path=opt\n"
+"    Will mount the host's /share/c1 onto /opt in the container."
+msgstr ""
+
+#: lxc/config.go:90
+msgid ""
+"lxc config edit <container> < container.yaml\n"
+"    Update the container configuration from config.yaml."
+msgstr ""
+
+#: lxc/config.go:357
+msgid ""
+"lxc config set [<remote>:]<container> limits.cpu 2\n"
+"    Will set a CPU limit of \"2\" for the container.\n"
 "\n"
-"\t\"BASE IMAGE\" and \"MAC\" are custom columns generated from container "
-"configuration keys.\n"
+"lxc config set core.https_address [::]:8443\n"
+"    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
 "\n"
-"lxc list -c ns,user.comment:comment\n"
-"\tList images with their running state and user comment. "
+"lxc config set core.trust_password blah\n"
+"    Will set the server's trust password to blah."
 msgstr ""
 
-#: lxc/manpage.go:20
+#: lxc/file.go:187
 msgid ""
-"Usage: lxc manpage <directory>\n"
-"\n"
-"Generate all the LXD manpages."
+"lxc file pull foo/etc/hosts .\n"
+"   To pull /etc/hosts from the container and write it to the current "
+"directory."
 msgstr ""
 
-#: lxc/monitor.go:49
+#: lxc/file.go:326
 msgid ""
-"Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
-"\n"
-"Monitor a local or remote LXD server.\n"
+"lxc file push /etc/hosts foo/etc/hosts\n"
+"   To push /etc/hosts into the container \"foo\"."
+msgstr ""
+
+#: lxc/image.go:314
+msgid ""
+"lxc image edit <image>\n"
+"    Launch a text editor to edit the properties\n"
 "\n"
-"By default the monitor will listen to all message types.\n"
+"lxc image edit <image> < image.yaml\n"
+"    Load the image properties from a YAML file"
+msgstr ""
+
+#: lxc/info.go:31
+msgid ""
+"lxc info [<remote>:]<container> [--show-log]\n"
+"    For container information.\n"
 "\n"
-"Message types to listen for can be specified with --type.\n"
+"lxc info [<remote>:] [--resources]\n"
+"    For LXD server information."
+msgstr ""
+
+#: lxc/init.go:37
+msgid "lxc init ubuntu:16.04 u1"
+msgstr ""
+
+#: lxc/launch.go:24
+msgid "lxc launch ubuntu:16.04 u1"
+msgstr ""
+
+#: lxc/list.go:103
+msgid ""
+"lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:"
+"MAC\n"
+"  Show containers using the \"NAME\", \"BASE IMAGE\", \"STATE\", \"IPV4\", "
+"\"IPV6\" and \"MAC\" columns.\n"
+"  \"BASE IMAGE\" and \"MAC\" are custom columns generated from container "
+"configuration keys.\n"
 "\n"
-"*Examples*\n"
+"lxc list -c ns,user.comment:comment\n"
+"  List images with their running state and user comment."
+msgstr ""
+
+#: lxc/monitor.go:35
+msgid ""
 "lxc monitor --type=logging\n"
 "    Only show log messages.\n"
 "\n"
 "lxc monitor --pretty --type=logging --loglevel=info\n"
 "    Show a pretty log of messages with info level or higher.\n"
+"\n"
+"lxc monitor --type=lifecycle\n"
+"    Only show lifecycle events."
 msgstr ""
 
-#: lxc/move.go:26
+#: lxc/move.go:33
 msgid ""
-"Usage: lxc move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
-"<snapshot>]] [--container-only] [--target <node>]\n"
-"\n"
-"Move containers within or in between LXD instances.\n"
-"\n"
 "lxc move [<remote>:]<source container> [<remote>:][<destination container>] "
 "[--container-only]\n"
 "    Move a container between two hosts, renaming it if destination name "
@@ -1946,160 +2837,14 @@ msgid ""
 "    Rename a snapshot."
 msgstr ""
 
-#: lxc/network.go:52
-msgid ""
-"Usage: lxc network <subcommand> [options]\n"
-"\n"
-"Manage and attach containers to networks.\n"
-"\n"
-"lxc network list [<remote>:]\n"
-"    List available networks.\n"
-"\n"
-"lxc network list-leases [<remote>:]<network>\n"
-"    List the DHCP leases for the network\n"
-"\n"
-"lxc network show [<remote>:]<network> [--target <node>]\n"
-"    Show details of a network.\n"
-"\n"
-"lxc network create [<remote>:]<network> [key=value...] [--target <node>]\n"
-"    Create a network.\n"
-"\n"
-"lxc network get [<remote>:]<network> <key> [--target <node>]\n"
-"    Get network configuration.\n"
-"\n"
-"lxc network set [<remote>:]<network> <key> <value>\n"
-"    Set network configuration.\n"
-"\n"
-"lxc network unset [<remote>:]<network> <key>\n"
-"    Unset network configuration.\n"
-"\n"
-"lxc network delete [<remote>:]<network>\n"
-"    Delete a network.\n"
-"\n"
-"lxc network edit [<remote>:]<network>\n"
-"    Edit network, either by launching external editor or reading STDIN.\n"
-"\n"
-"lxc network rename [<remote>:]<network> <new-name>\n"
-"    Rename a network.\n"
-"\n"
-"lxc network attach [<remote>:]<network> <container> [device name] [interface "
-"name]\n"
-"    Attach a network interface connecting the network to a specified "
-"container.\n"
-"\n"
-"lxc network attach-profile [<remote>:]<network> <profile> [device name] "
-"[interface name]\n"
-"    Attach a network interface connecting the network to a specified "
-"profile.\n"
-"\n"
-"lxc network detach [<remote>:]<network> <container> [device name]\n"
-"    Remove a network interface connecting the network to a specified "
-"container.\n"
-"\n"
-"lxc network detach-profile [<remote>:]<network> <container> [device name]\n"
-"    Remove a network interface connecting the network to a specified "
-"profile.\n"
-"\n"
-"*Examples*\n"
-"cat network.yaml | lxc network edit <network>\n"
-"    Update a network using the content of network.yaml"
-msgstr ""
-
-#: lxc/operation.go:25
+#: lxc/operation.go:176
 msgid ""
-"Usage: lxc operation <subcommand> [options]\n"
-"\n"
-"List, show and delete background operations.\n"
-"\n"
-"lxc operation list [<remote>:]\n"
-"    List background operations.\n"
-"\n"
-"lxc operation show [<remote>:]<operation>\n"
-"    Show details on a background operation.\n"
-"\n"
-"lxc operation delete [<remote>:]<operation>\n"
-"    Delete a background operation (will attempt to cancel).\n"
-"\n"
-"*Examples*\n"
 "lxc operation show 344a79e4-d88a-45bf-9c39-c72c26f6ab8a\n"
 "    Show details on that operation UUID"
 msgstr ""
 
-#: lxc/profile.go:51
+#: lxc/profile.go:165
 msgid ""
-"Usage: lxc profile <subcommand> [options]\n"
-"\n"
-"Manage container configuration profiles.\n"
-"\n"
-"*Profile configuration*\n"
-"lxc profile list [<remote>:]\n"
-"    List available profiles.\n"
-"\n"
-"lxc profile show [<remote>:]<profile>\n"
-"    Show details of a profile.\n"
-"\n"
-"lxc profile create [<remote>:]<profile>\n"
-"    Create a profile.\n"
-"\n"
-"lxc profile copy [<remote>:]<profile> [<remote>:]<profile>\n"
-"    Copy the profile.\n"
-"\n"
-"lxc profile get [<remote>:]<profile> <key>\n"
-"    Get profile configuration.\n"
-"\n"
-"lxc profile set [<remote>:]<profile> <key> <value>\n"
-"    Set profile configuration.\n"
-"\n"
-"lxc profile unset [<remote>:]<profile> <key>\n"
-"    Unset profile configuration.\n"
-"\n"
-"lxc profile delete [<remote>:]<profile>\n"
-"    Delete a profile.\n"
-"\n"
-"lxc profile edit [<remote>:]<profile>\n"
-"    Edit profile, either by launching external editor or reading STDIN.\n"
-"\n"
-"lxc profile rename [<remote>:]<profile> <new-name>\n"
-"    Rename a profile.\n"
-"\n"
-"*Profile assignment*\n"
-"lxc profile assign [<remote>:]<container> <profiles>\n"
-"    Replace the current set of profiles for the container by the one "
-"provided.\n"
-"\n"
-"lxc profile add [<remote>:]<container> <profile>\n"
-"    Add a profile to a container\n"
-"\n"
-"lxc profile remove [<remote>:]<container> <profile>\n"
-"    Remove the profile from a container\n"
-"\n"
-"*Device management*\n"
-"lxc profile device list [<remote>:]<profile>\n"
-"    List devices in the given profile.\n"
-"\n"
-"lxc profile device show [<remote>:]<profile>\n"
-"    Show full device details in the given profile.\n"
-"\n"
-"lxc profile device remove [<remote>:]<profile> <name>\n"
-"    Remove a device from a profile.\n"
-"\n"
-"lxc profile device get [<remote>:]<profile> <name> <key>\n"
-"    Get a device property.\n"
-"\n"
-"lxc profile device set [<remote>:]<profile> <name> <key> <value>\n"
-"    Set a device property.\n"
-"\n"
-"lxc profile device unset [<remote>:]<profile> <name> <key>\n"
-"    Unset a device property.\n"
-"\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.\n"
-"\n"
-"*Examples*\n"
-"cat profile.yaml | lxc profile edit <profile>\n"
-"    Update a profile using the content of profile.yaml\n"
-"\n"
 "lxc profile assign foo default,bar\n"
 "    Set the profiles for \"foo\" to \"default\" and \"bar\".\n"
 "\n"
@@ -2110,72 +2855,26 @@ msgid ""
 "    Remove all profile from \"foo\""
 msgstr ""
 
-#: lxc/publish.go:28
+#: lxc/profile.go:398
 msgid ""
-"Usage: lxc publish [<remote>:]<container>[/<snapshot>] [<remote>:] [--"
-"alias=ALIAS...] [prop-key=prop-value...]\n"
-"\n"
-"Publish containers as images."
+"lxc profile edit <profile> < profile.yaml\n"
+"    Update a profile using the content of profile.yaml"
 msgstr ""
 
-#: lxc/query.go:25
+#: lxc/query.go:29
 msgid ""
-"Usage: lxc query [-X <action>] [-d <data>] [--wait] [--raw] [<remote>:]<API "
-"path>\n"
-"\n"
-"Send a raw query to LXD.\n"
-"\n"
-"*Examples*\n"
 "lxc query -X DELETE --wait /1.0/containers/c1\n"
 "    Delete local container \"c1\"."
 msgstr ""
 
-#: lxc/remote.go:40
-msgid ""
-"Usage: lxc remote <subcommand> [options]\n"
-"\n"
-"Manage the list of remote LXD servers.\n"
-"\n"
-"lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--"
-"password=PASSWORD] [--public] [--protocol=PROTOCOL] [--auth-type=AUTH_TYPE]\n"
-"    Add the remote <remote> at <url>.\n"
-"\n"
-"lxc remote remove <remote>\n"
-"    Remove the remote <remote>.\n"
-"\n"
-"lxc remote list\n"
-"    List all remotes.\n"
-"\n"
-"lxc remote rename <old name> <new name>\n"
-"    Rename remote <old name> to <new name>.\n"
-"\n"
-"lxc remote set-url <remote> <url>\n"
-"    Update <remote>'s url to <url>.\n"
-"\n"
-"lxc remote set-default <remote>\n"
-"    Set the default remote.\n"
-"\n"
-"lxc remote get-default\n"
-"    Print the default remote."
-msgstr ""
-
-#: lxc/rename.go:18
+#: lxc/snapshot.go:26
 msgid ""
-"Usage: lxc rename [<remote>:]<container>[/<snapshot>] [<container>[/"
-"<snapshot>]]\n"
-"\n"
-"Rename a container or snapshot."
+"lxc snapshot u1 snap0\n"
+"    Create a snapshot of \"u1\" called \"snap0\"."
 msgstr ""
 
-#: lxc/restore.go:22
+#: lxc/restore.go:28
 msgid ""
-"Usage: lxc restore [<remote>:]<container> <snapshot> [--stateful]\n"
-"\n"
-"Restore containers from snapshots.\n"
-"\n"
-"If --stateful is passed, then the running state will be restored too.\n"
-"\n"
-"*Examples*\n"
 "lxc snapshot u1 snap0\n"
 "    Create the snapshot.\n"
 "\n"
@@ -2183,121 +2882,20 @@ msgid ""
 "    Restore the snapshot."
 msgstr ""
 
-#: lxc/snapshot.go:19
+#: lxc/storage.go:210
 msgid ""
-"Usage: lxc snapshot [<remote>:]<container> <snapshot name> [--stateful]\n"
-"\n"
-"Create container snapshots.\n"
-"\n"
-"When --stateful is used, LXD attempts to checkpoint the container's\n"
-"running state, including process memory state, TCP connections, ...\n"
-"\n"
-"*Examples*\n"
-"lxc snapshot u1 snap0\n"
-"    Create a snapshot of \"u1\" called \"snap0\"."
+"lxc storage edit [<remote>:]<pool> < pool.yaml\n"
+"    Update a storage pool using the content of pool.yaml."
 msgstr ""
 
-#: lxc/storage.go:67
+#: lxc/storage_volume.go:726
+msgid ""
+"lxc storage volume edit [<remote>:]<pool> <volume> < volume.yaml\n"
+"    Update a storage volume using the content of pool.yaml."
+msgstr ""
+
+#: lxc/storage_volume.go:1168
 msgid ""
-"Usage: lxc storage <subcommand> [options]\n"
-"\n"
-"Manage storage pools and volumes.\n"
-"\n"
-"*Storage pools*\n"
-"lxc storage list [<remote>:]\n"
-"    List available storage pools.\n"
-"\n"
-"lxc storage show [<remote>:]<pool> [--resources] [--target <node>]\n"
-"    Show details of a storage pool.\n"
-"\n"
-"lxc storage info [<remote>:]<pool> [--bytes]\n"
-"    Show information of a storage pool in yaml format.\n"
-"\n"
-"lxc storage create [<remote>:]<pool> <driver> [key=value]... [--target "
-"<node>]\n"
-"    Create a storage pool.\n"
-"\n"
-"lxc storage get [<remote>:]<pool> <key>\n"
-"    Get storage pool configuration.\n"
-"\n"
-"lxc storage set [<remote>:]<pool> <key> <value>\n"
-"    Set storage pool configuration.\n"
-"\n"
-"lxc storage unset [<remote>:]<pool> <key>\n"
-"    Unset storage pool configuration.\n"
-"\n"
-"lxc storage delete [<remote>:]<pool>\n"
-"    Delete a storage pool.\n"
-"\n"
-"lxc storage edit [<remote>:]<pool>\n"
-"    Edit storage pool, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"*Storage volumes*\n"
-"lxc storage volume list [<remote>:]<pool>\n"
-"    List available storage volumes on a storage pool.\n"
-"\n"
-"lxc storage volume show [<remote>:]<pool> <volume> [--target <node>]\n"
-"   Show details of a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume create [<remote>:]<pool> <volume> [key=value]... [--"
-"target <node>]\n"
-"    Create a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume rename [<remote>:]<pool> <old name> <new name> [--target "
-"<node>]\n"
-"    Rename a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume get [<remote>:]<pool> <volume> <key> [--target <node>]\n"
-"    Get storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume set [<remote>:]<pool> <volume> <key> <value> [--target "
-"<node>]\n"
-"    Set storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume unset [<remote>:]<pool> <volume> <key> [--target <node>]\n"
-"    Unset storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume delete [<remote>:]<pool> <volume> [--target <node>]\n"
-"    Delete a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume edit [<remote>:]<pool> <volume> [--target <node>]\n"
-"    Edit storage volume, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"lxc storage volume attach [<remote>:]<pool> <volume> <container> [device "
-"name] <path>\n"
-"    Attach a storage volume to the specified container.\n"
-"\n"
-"lxc storage volume attach-profile [<remote:>]<pool> <volume> <profile> "
-"[device name] <path>\n"
-"    Attach a storage volume to the specified profile.\n"
-"\n"
-"lxc storage volume detach [<remote>:]<pool> <volume> <container> [device "
-"name]\n"
-"    Detach a storage volume from the specified container.\n"
-"\n"
-"lxc storage volume detach-profile [<remote:>]<pool> <volume> <profile> "
-"[device name]\n"
-"\tDetach a storage volume from the specified profile.\n"
-"\n"
-"lxc storage volume copy <pool>/<volume> <pool>/<volume> [--config|-c "
-"<key=value>...]\n"
-"    Copy an existing volume to a new volume at the specified pool.\n"
-"\n"
-"lxc storage volume move [<pool>/]<volume> [<pool>/]<volume>\n"
-"    Move an existing volume to the specified pool.\n"
-"\n"
-"Unless specified through a prefix, all volume operations affect \"custom"
-"\" (user created) volumes.\n"
-"\n"
-"*Examples*\n"
-"cat pool.yaml | lxc storage edit [<remote>:]<pool>\n"
-"    Update a storage pool using the content of pool.yaml.\n"
-"\n"
-"cat pool.yaml | lxc storage volume edit [<remote>:]<pool> <volume>\n"
-"    Update a storage volume using the content of pool.yaml.\n"
-"\n"
 "lxc storage volume show default data\n"
 "    Will show the properties of a custom volume called \"data\" in the "
 "\"default\" pool.\n"
@@ -2307,191 +2905,303 @@ msgid ""
 "\" in the \"default\" pool."
 msgstr ""
 
-#: lxc/version.go:18
+#: lxc/config_metadata.go:27
+msgid "metadata"
+msgstr ""
+
+#: lxc/monitor.go:29
+msgid "monitor [<remote>:]"
+msgstr ""
+
+#: lxc/storage_volume.go:991
+msgid "move [<pool>/]<volume> [<pool>/]<volume>"
+msgstr ""
+
+#: lxc/move.go:28
 msgid ""
-"Usage: lxc version\n"
-"\n"
-"Print the version number of this client tool."
+"move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
+"<snapshot>]]"
 msgstr ""
 
-#: lxc/delete.go:46
-msgid "User aborted delete operation."
+#: lxc/storage.go:429
+msgid "name"
 msgstr ""
 
-#: lxc/utils/cancel.go:40
+#: lxc/network.go:30
+msgid "network"
+msgstr ""
+
+#: lxc/image.go:809 lxc/image.go:814 lxc/image.go:977
+msgid "no"
+msgstr ""
+
+#: lxc/remote.go:253
+msgid "ok (y/n)?"
+msgstr ""
+
+#: lxc/operation.go:23
+msgid "operation"
+msgstr ""
+
+#: lxc/config_device.go:316
+msgid "override [<remote>:]<container> <device> [key=value...]"
+msgstr ""
+
+#: lxc/action.go:47
+msgid "pause [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/config.go:52
+msgid "please use `lxc profile`"
+msgstr ""
+
+#: lxc/profile.go:28
+msgid "profile"
+msgstr ""
+
+#: lxc/publish.go:32
 msgid ""
-"User signaled us three times, exiting. The remote operation will keep "
-"running."
+"publish [<remote>:]<container>[/<snapshot>] [<remote>:] [flags] [prop-"
+"key=prop-value...]"
 msgstr ""
 
-#: lxc/query.go:36
-msgid "Wait for the operation to complete"
+#: lxc/file.go:183
+msgid ""
+"pull [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...] "
+"<target path>"
 msgstr ""
 
-#: lxc/restore.go:38
+#: lxc/file.go:322
 msgid ""
-"Whether or not to restore the container's running state from snapshot (if "
-"available)"
+"push <source path> [<remote>:]<container>/<path> [[<remote>:]<container>/"
+"<path>...]"
 msgstr ""
 
-#: lxc/snapshot.go:33
-msgid "Whether or not to snapshot the container's running state"
+#: lxc/query.go:25
+msgid "query [<remote>:]<API path>"
 msgstr ""
 
-#: lxc/network.go:560 lxc/operation.go:141 lxc/remote.go:382 lxc/remote.go:387
-msgid "YES"
+#: lxc/image.go:1210
+msgid "refresh [<remote>:]<image> [[<remote>:]<image>...]"
 msgstr ""
 
-#: lxc/exec.go:132
-msgid "You can't pass -t and -T at the same time"
+#: lxc/remote.go:32
+msgid "remote"
 msgstr ""
 
-#: lxc/exec.go:136
-msgid "You can't pass -t or -T at the same time as --mode"
+#: lxc/alias.go:195
+msgid "remove <alias>"
 msgstr ""
 
-#: lxc/copy.go:76
-msgid "You must specify a destination container name when using --target"
+#: lxc/remote.go:546
+msgid "remove <remote>"
 msgstr ""
 
-#: lxc/copy.go:71
-msgid "You must specify a source container name"
+#: lxc/config_trust.go:194
+msgid "remove [<remote>:] <hostname|fingerprint>"
 msgstr ""
 
-#: lxc/copy.go:66 lxc/move.go:71
-msgid "You must use the same source and destination remote when using --target"
+#: lxc/profile.go:630
+msgid "remove [<remote>:]<container> <profile>"
 msgstr ""
 
-#: lxc/main.go:72
-msgid "`lxc config profile` is deprecated, please use `lxc profile`"
+#: lxc/config_device.go:402
+msgid "remove [<remote>:]<container|profile> <name>..."
 msgstr ""
 
-#: lxc/alias.go:56 lxc/alias.go:102
-#, c-format
-msgid "alias %s already exists"
+#: lxc/cluster.go:235
+msgid "remove [<remote>:]<member>"
 msgstr ""
 
-#: lxc/alias.go:68 lxc/alias.go:97
-#, c-format
-msgid "alias %s doesn't exist"
+#: lxc/alias.go:144
+msgid "rename <old alias> <new alias>"
 msgstr ""
 
-#: lxc/remote.go:370
-msgid "can't remove the default remote"
+#: lxc/remote.go:484
+msgid "rename <remote> <new-name>"
 msgstr ""
 
-#: lxc/file.go:296
-msgid "can't supply uid/gid/mode in recursive mode"
+#: lxc/image_alias.go:247
+msgid "rename [<remote>:]<alias> <new-name>"
 msgstr ""
 
-#: lxc/remote.go:399
-msgid "default"
+#: lxc/rename.go:18
+msgid "rename [<remote>:]<container>[/<snapshot>] <container>[/<snapshot>]"
 msgstr ""
 
-#: lxc/storage.go:856
-msgid "description"
+#: lxc/cluster.go:189
+msgid "rename [<remote>:]<member> <new-name>"
 msgstr ""
 
-#: lxc/init.go:315
-msgid "didn't get any affected image, container or snapshot from server"
+#: lxc/network.go:870
+msgid "rename [<remote>:]<network> <new-name>"
 msgstr ""
 
-#: lxc/image.go:594
-msgid "disabled"
+#: lxc/storage_volume.go:1023
+msgid "rename [<remote>:]<pool> <old name> <new name>"
 msgstr ""
 
-#: lxc/storage.go:855
-msgid "driver"
+#: lxc/profile.go:702
+msgid "rename [<remote>:]<profile> <new-name>"
 msgstr ""
 
-#: lxc/image.go:596
-msgid "enabled"
+#: lxc/action.go:67
+msgid "restart [<remote>:]<container> [[<remote>:]<container>...]"
 msgstr ""
 
-#: lxc/action.go:155 lxc/main.go:33 lxc/main.go:191
-#, c-format
-msgid "error: %v"
+#: lxc/restore.go:22
+msgid "restore [<remote>:]<container> <snapshot>"
 msgstr ""
 
-#: lxc/help.go:37 lxc/main.go:133
-#, c-format
-msgid "error: unknown command: %s"
+#: lxc/config_device.go:491
+msgid "set [<remote>:]<container|profile> <device> <key> <value>"
 msgstr ""
 
-#: lxc/storage.go:853
-msgid "info"
+#: lxc/network.go:918
+msgid "set [<remote>:]<network> <key> <value>"
 msgstr ""
 
-#: lxc/storage.go:854
-msgid "name"
+#: lxc/storage.go:571
+msgid "set [<remote>:]<pool> <key> <value>"
 msgstr ""
 
-#: lxc/image.go:210 lxc/image.go:584 lxc/image.go:589
-msgid "no"
+#: lxc/storage_volume.go:1087
+msgid "set [<remote>:]<pool> <volume> <key> <value>"
 msgstr ""
 
-#: lxc/remote.go:204
-msgid "ok (y/n)?"
+#: lxc/profile.go:751
+msgid "set [<remote>:]<profile> <key> <value>"
 msgstr ""
 
-#: lxc/main.go:368 lxc/main.go:372
-#, c-format
-msgid "processing aliases failed %s\n"
+#: lxc/config.go:353
+msgid "set [<remote>:][container] <key> <value>"
 msgstr ""
 
-#: lxc/file.go:588
-msgid "recursive edit doesn't make sense :("
+#: lxc/remote.go:596
+msgid "set-default <remote>"
 msgstr ""
 
-#: lxc/remote.go:436
-#, c-format
-msgid "remote %s already exists"
+#: lxc/remote.go:634
+msgid "set-url <remote> <URL>"
 msgstr ""
 
-#: lxc/remote.go:362 lxc/remote.go:428 lxc/remote.go:463 lxc/remote.go:479
-#, c-format
-msgid "remote %s doesn't exist"
+#: lxc/config_template.go:296
+msgid "show [<remote>:]<container> <template>"
 msgstr ""
 
-#: lxc/remote.go:345
-#, c-format
-msgid "remote %s exists as <%s>"
+#: lxc/config_device.go:580
+msgid "show [<remote>:]<container|profile>"
 msgstr ""
 
-#: lxc/remote.go:366 lxc/remote.go:432 lxc/remote.go:467
-#, c-format
-msgid "remote %s is static and cannot be modified"
+#: lxc/image.go:1283
+msgid "show [<remote>:]<image>"
+msgstr ""
+
+#: lxc/cluster.go:140
+msgid "show [<remote>:]<member>"
+msgstr ""
+
+#: lxc/network.go:987
+msgid "show [<remote>:]<network>"
+msgstr ""
+
+#: lxc/operation.go:172
+msgid "show [<remote>:]<operation>"
+msgstr ""
+
+#: lxc/storage.go:643
+msgid "show [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:1164
+msgid "show [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:810
+msgid "show [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/config.go:450 lxc/config_metadata.go:174
+msgid "show [<remote>:][container]"
+msgstr ""
+
+#: lxc/snapshot.go:19
+msgid "snapshot [<remote>:]<container> <snapshot name>"
 msgstr ""
 
-#: lxc/storage.go:858
+#: lxc/storage.go:433
 msgid "space used"
 msgstr ""
 
-#: lxc/info.go:251
+#: lxc/action.go:28
+msgid "start [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/info.go:255
 msgid "stateful"
 msgstr ""
 
-#: lxc/info.go:253
+#: lxc/info.go:257
 msgid "stateless"
 msgstr ""
 
-#: lxc/info.go:247
+#: lxc/action.go:89
+msgid "stop [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/storage.go:31
+msgid "storage"
+msgstr ""
+
+#: lxc/info.go:251
 #, c-format
 msgid "taken at %s"
 msgstr ""
 
-#: lxc/storage.go:857
+#: lxc/config_template.go:28
+msgid "template"
+msgstr ""
+
+#: lxc/storage.go:432
 msgid "total space"
 msgstr ""
 
-#: lxc/storage.go:852
+#: lxc/config_trust.go:28
+msgid "trust"
+msgstr ""
+
+#: lxc/config_device.go:648
+msgid "unset [<remote>:]<container|profile> <device> <key>"
+msgstr ""
+
+#: lxc/network.go:1049
+msgid "unset [<remote>:]<network> <key>"
+msgstr ""
+
+#: lxc/storage.go:727
+msgid "unset [<remote>:]<pool> <key>"
+msgstr ""
+
+#: lxc/storage_volume.go:1239
+msgid "unset [<remote>:]<pool> <volume> <key>"
+msgstr ""
+
+#: lxc/profile.go:864
+msgid "unset [<remote>:]<profile> <key>"
+msgstr ""
+
+#: lxc/config.go:558
+msgid "unset [<remote>:][container] <key>"
+msgstr ""
+
+#: lxc/storage.go:427
 msgid "used by"
 msgstr ""
 
-#: lxc/main.go:299
-msgid "wrong number of subcommand arguments"
+#: lxc/storage_volume.go:32
+msgid "volume"
 msgstr ""
 
-#: lxc/delete.go:45 lxc/image.go:208 lxc/image.go:586 lxc/image.go:591
+#: lxc/delete.go:46 lxc/image.go:811 lxc/image.go:816 lxc/image.go:975
 msgid "yes"
 msgstr ""
diff --git a/po/id.po b/po/id.po
index 71138decd..206b93c01 100644
--- a/po/id.po
+++ b/po/id.po
@@ -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: 2018-02-27 22:14-0500\n"
+"POT-Creation-Date: 2018-03-29 01:45-0400\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
@@ -16,7 +16,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: lxc/storage.go:36
+#: lxc/storage.go:220
 msgid ""
 "### This is a yaml representation of a storage pool.\n"
 "### Any line starting with a '#' will be ignored.\n"
@@ -33,7 +33,7 @@ msgid ""
 "###   zfs.pool_name: default"
 msgstr ""
 
-#: lxc/storage.go:53
+#: lxc/storage_volume.go:737
 msgid ""
 "### This is a yaml representation of a storage volume.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -47,7 +47,7 @@ msgid ""
 "###   size: \"61203283968\""
 msgstr ""
 
-#: lxc/config.go:40
+#: lxc/config.go:100
 msgid ""
 "### This is a yaml representation of the configuration.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -68,7 +68,7 @@ msgid ""
 "### Note that the name is shown but cannot be changed"
 msgstr ""
 
-#: lxc/config.go:61
+#: lxc/config_metadata.go:63
 msgid ""
 "### This is a yaml representation of the container metadata.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -92,7 +92,7 @@ msgid ""
 "###     properties: {}"
 msgstr ""
 
-#: lxc/image.go:63
+#: lxc/image.go:327
 msgid ""
 "### This is a yaml representation of the image properties.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -102,7 +102,7 @@ msgid ""
 "###  description: My custom image"
 msgstr ""
 
-#: lxc/network.go:32
+#: lxc/network.go:546
 msgid ""
 "### This is a yaml representation of the network.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -122,7 +122,7 @@ msgid ""
 "### Note that only the configuration can be changed."
 msgstr ""
 
-#: lxc/profile.go:30
+#: lxc/profile.go:408
 msgid ""
 "### This is a yaml representation of the profile.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -143,12 +143,12 @@ msgid ""
 "### Note that the name is shown but cannot be changed"
 msgstr ""
 
-#: lxc/image.go:187
+#: lxc/image.go:954
 #, c-format
 msgid "%s (%d more)"
 msgstr ""
 
-#: lxc/file.go:205
+#: lxc/file.go:677
 #, c-format
 msgid "%s is not a directory"
 msgstr ""
@@ -158,1782 +158,2673 @@ msgstr ""
 msgid "%v (interrupt two more times to force)"
 msgstr ""
 
-#: lxc/file.go:142
+#: lxc/file.go:614
 #, c-format
 msgid "'%s' isn't a supported file type."
 msgstr ""
 
-#: lxc/profile.go:337
+#: lxc/profile.go:222
 msgid "(none)"
 msgstr ""
 
-#: lxc/alias.go:84 lxc/image.go:231 lxc/image.go:1136
+#: lxc/alias.go:127 lxc/image.go:921 lxc/image_alias.go:228
 msgid "ALIAS"
 msgstr ""
 
-#: lxc/image.go:232
+#: lxc/image.go:922
 msgid "ALIASES"
 msgstr ""
 
-#: lxc/image.go:236
+#: lxc/image.go:926
 msgid "ARCH"
 msgstr ""
 
-#: lxc/list.go:467
+#: lxc/list.go:464
 msgid "ARCHITECTURE"
 msgstr ""
 
-#: lxc/remote.go:412
+#: lxc/remote.go:466
 msgid "AUTH TYPE"
 msgstr ""
 
-#: lxc/remote.go:68
+#: lxc/remote.go:88
 msgid "Accept certificate"
 msgstr ""
 
-#: lxc/query.go:38
+#: lxc/query.go:37
 msgid "Action (defaults to GET)"
 msgstr ""
 
-#: lxc/remote.go:276
+#: lxc/config_device.go:75 lxc/config_device.go:76
+msgid "Add devices to containers or profiles"
+msgstr ""
+
+#: lxc/alias.go:54 lxc/alias.go:55
+msgid "Add new aliases"
+msgstr ""
+
+#: lxc/remote.go:83 lxc/remote.go:84
+msgid "Add new remote servers"
+msgstr ""
+
+#: lxc/config_trust.go:58 lxc/config_trust.go:59
+msgid "Add new trusted clients"
+msgstr ""
+
+#: lxc/profile.go:101 lxc/profile.go:102
+msgid "Add profiles to containers"
+msgstr ""
+
+#: lxc/remote.go:325
 #, c-format
 msgid "Admin password for %s: "
 msgstr ""
 
-#: lxc/image.go:623
+#: lxc/alias.go:78 lxc/alias.go:176
+#, c-format
+msgid "Alias %s already exists"
+msgstr ""
+
+#: lxc/alias.go:170 lxc/alias.go:221
+#, c-format
+msgid "Alias %s doesn't exist"
+msgstr ""
+
+#: lxc/image_alias.go:83 lxc/image_alias.go:130 lxc/image_alias.go:274
+msgid "Alias name missing"
+msgstr ""
+
+#: lxc/image.go:854
 msgid "Aliases:"
 msgstr ""
 
-#: lxc/image.go:601 lxc/info.go:125
+#: lxc/image.go:826 lxc/info.go:129
 #, c-format
 msgid "Architecture: %s"
 msgstr ""
 
-#: lxc/remote.go:259
+#: lxc/profile.go:162 lxc/profile.go:163
+msgid "Assign sets of profiles to containers"
+msgstr ""
+
+#: lxc/network.go:103
+msgid "Attach network interfaces to containers"
+msgstr ""
+
+#: lxc/network.go:176 lxc/network.go:177
+msgid "Attach network interfaces to profiles"
+msgstr ""
+
+#: lxc/network.go:104
+msgid "Attach new network interfaces to containers"
+msgstr ""
+
+#: lxc/storage_volume.go:121 lxc/storage_volume.go:122
+msgid "Attach new storage volumes to containers"
+msgstr ""
+
+#: lxc/storage_volume.go:200 lxc/storage_volume.go:201
+msgid "Attach new storage volumes to profiles"
+msgstr ""
+
+#: lxc/console.go:31
+msgid "Attach to container consoles"
+msgstr ""
+
+#: lxc/console.go:32
+msgid ""
+"Attach to container consoles\n"
+"\n"
+"This command allows you to interact with the boot console of a container\n"
+"as well as retrieve past log entries from it."
+msgstr ""
+
+#: lxc/remote.go:308
 #, c-format
 msgid "Authentication type '%s' not supported by server"
 msgstr ""
 
-#: lxc/image.go:632
+#: lxc/image.go:864
 #, c-format
 msgid "Auto update: %s"
 msgstr ""
 
-#: lxc/image.go:707
+#: lxc/network.go:283
+#, c-format
+msgid "Bad key/value pair: %s"
+msgstr ""
+
+#: lxc/copy.go:110 lxc/init.go:118 lxc/publish.go:175 lxc/storage.go:123
+#: lxc/storage_volume.go:468
+#, c-format
+msgid "Bad key=value pair: %s"
+msgstr ""
+
+#: lxc/image.go:677
 #, c-format
 msgid "Bad property: %s"
 msgstr ""
 
-#: lxc/action.go:133
+#: lxc/action.go:212
 msgid "Both --all and container name given"
 msgstr ""
 
-#: lxc/info.go:218
+#: lxc/info.go:222
 msgid "Bytes received"
 msgstr ""
 
-#: lxc/info.go:219
+#: lxc/info.go:223
 msgid "Bytes sent"
 msgstr ""
 
-#: lxc/operation.go:156
+#: lxc/operation.go:155
 msgid "CANCELABLE"
 msgstr ""
 
-#: lxc/config.go:403
+#: lxc/config_trust.go:175
 msgid "COMMON NAME"
 msgstr ""
 
-#: lxc/info.go:182
+#: lxc/info.go:186
 msgid "CPU usage (in seconds)"
 msgstr ""
 
-#: lxc/info.go:186
+#: lxc/info.go:190
 msgid "CPU usage:"
 msgstr ""
 
-#: lxc/operation.go:157
+#: lxc/operation.go:156
 msgid "CREATED"
 msgstr ""
 
-#: lxc/list.go:468
+#: lxc/list.go:465
 msgid "CREATED AT"
 msgstr ""
 
-#: lxc/image.go:631
+#: lxc/image.go:863
 #, c-format
 msgid "Cached: %s"
 msgstr ""
 
-#: lxc/file.go:501
+#: lxc/image.go:175
+msgid "Can't provide a name for the target image"
+msgstr ""
+
+#: lxc/file.go:261
 msgid "Can't pull a directory without --recursive"
 msgstr ""
 
-#: lxc/config.go:210 lxc/network.go:619
+#: lxc/config.go:400 lxc/network.go:969
 #, c-format
 msgid "Can't read from stdin: %s"
 msgstr ""
 
-#: lxc/rename.go:41
+#: lxc/remote.go:577
+msgid "Can't remove the default remote"
+msgstr ""
+
+#: lxc/list.go:481
+msgid "Can't specify --fast with --columns"
+msgstr ""
+
+#: lxc/rename.go:48
 msgid "Can't specify a different remote for rename."
 msgstr ""
 
-#: lxc/config.go:223
-#, c-format
-msgid "Can't unset key '%s', it's not currently set"
+#: lxc/list.go:493
+msgid "Can't specify column L when not clustered"
 msgstr ""
 
-#: lxc/config.go:265 lxc/config.go:291
-#, c-format
-msgid "Can't unset key '%s', it's not currently set."
+#: lxc/file.go:399
+msgid "Can't supply uid/gid/mode in recursive mode"
 msgstr ""
 
-#: lxc/profile.go:546 lxc/storage.go:696
-msgid "Cannot provide container name to list"
+#: lxc/config.go:413
+#, c-format
+msgid "Can't unset key '%s', it's not currently set"
 msgstr ""
 
-#: lxc/remote.go:203
+#: lxc/remote.go:252
 #, c-format
 msgid "Certificate fingerprint: %s"
 msgstr ""
 
-#: lxc/remote.go:315
+#: lxc/remote.go:364
 msgid "Client certificate stored at server: "
 msgstr ""
 
-#: lxc/image.go:175 lxc/image.go:176 lxc/list.go:134 lxc/list.go:135
+#: lxc/network.go:253 lxc/network.go:663 lxc/network.go:923 lxc/network.go:992
+#: lxc/network.go:1054 lxc/storage.go:92 lxc/storage.go:331 lxc/storage.go:576
+#: lxc/storage.go:649 lxc/storage.go:732 lxc/storage_volume.go:287
+#: lxc/storage_volume.go:429 lxc/storage_volume.go:504
+#: lxc/storage_volume.go:730 lxc/storage_volume.go:856
+#: lxc/storage_volume.go:998 lxc/storage_volume.go:1028
+#: lxc/storage_volume.go:1092 lxc/storage_volume.go:1175
+#: lxc/storage_volume.go:1244
+msgid "Cluster member name"
+msgstr ""
+
+#: lxc/image.go:912 lxc/list.go:112
 msgid "Columns"
 msgstr ""
 
-#: lxc/help.go:53
-msgid "Commands:"
+#: lxc/main.go:44
+msgid "Command line client for LXD"
+msgstr ""
+
+#: lxc/main.go:45
+msgid ""
+"Command line client for LXD\n"
+"\n"
+"All of LXD's features can be driven through the various commands below.\n"
+"For help with any of those, simply call them with --help."
 msgstr ""
 
-#: lxc/copy.go:37 lxc/copy.go:38 lxc/init.go:139 lxc/init.go:140
+#: lxc/copy.go:39 lxc/init.go:42
 msgid "Config key/value to apply to the new container"
 msgstr ""
 
-#: lxc/config.go:821 lxc/config.go:886 lxc/config.go:1396 lxc/image.go:1191
-#: lxc/network.go:445 lxc/profile.go:275 lxc/storage.go:647 lxc/storage.go:1209
+#: lxc/config.go:195 lxc/config.go:259 lxc/config_metadata.go:144
+#: lxc/image.go:405 lxc/network.go:631 lxc/profile.go:490 lxc/storage.go:298
+#: lxc/storage_volume.go:822
 #, c-format
 msgid "Config parsing error: %s"
 msgstr ""
 
-#: lxc/main.go:40
-msgid "Connection refused; is LXD running?"
-msgstr ""
-
-#: lxc/console.go:132
+#: lxc/console.go:141
 msgid "Console log:"
 msgstr ""
 
-#: lxc/publish.go:71
+#: lxc/publish.go:79
 msgid "Container name is mandatory"
 msgstr ""
 
-#: lxc/copy.go:243 lxc/init.go:321
+#: lxc/copy.go:260 lxc/init.go:229
 #, c-format
 msgid "Container name is: %s"
 msgstr ""
 
-#: lxc/publish.go:250
+#: lxc/publish.go:259
 #, c-format
 msgid "Container published with fingerprint: %s"
 msgstr ""
 
-#: lxc/copy.go:45 lxc/move.go:44
+#: lxc/copy.go:44 lxc/move.go:46
 msgid "Copy a stateful container stateless"
 msgstr ""
 
-#: lxc/image.go:178
+#: lxc/image.go:138
 msgid "Copy aliases from source"
 msgstr ""
 
-#: lxc/copy.go:44
+#: lxc/copy.go:34 lxc/copy.go:35
+msgid "Copy containers within or in between LXD instances"
+msgstr ""
+
+#: lxc/image.go:130
+msgid "Copy images between servers"
+msgstr ""
+
+#: lxc/image.go:131
+msgid ""
+"Copy images between servers\n"
+"\n"
+"The auto-update flag instructs the server to keep this image up to date.\n"
+"It requires the source to be an alias and for it to be public."
+msgstr ""
+
+#: lxc/config_device.go:317 lxc/config_device.go:318
+msgid "Copy profile inherited devices and override configuration keys"
+msgstr ""
+
+#: lxc/profile.go:240 lxc/profile.go:241
+msgid "Copy profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:282 lxc/storage_volume.go:283
+msgid "Copy storage volumes"
+msgstr ""
+
+#: lxc/copy.go:43
 msgid "Copy the container without its snapshots"
 msgstr ""
 
-#: lxc/image.go:449
+#: lxc/image.go:217
 #, c-format
 msgid "Copying the image: %s"
 msgstr ""
 
-#: lxc/storage.go:1134
+#: lxc/storage_volume.go:387
 #, c-format
 msgid "Copying the storage volume: %s"
 msgstr ""
 
-#: lxc/remote.go:218
+#: lxc/remote.go:267
 msgid "Could not create server cert dir"
 msgstr ""
 
-#: lxc/file.go:70 lxc/file.go:71
+#: lxc/image_alias.go:58 lxc/image_alias.go:59
+msgid "Create aliases for existing images"
+msgstr ""
+
+#: lxc/launch.go:21 lxc/launch.go:22
+msgid "Create and start containers from images"
+msgstr ""
+
+#: lxc/file.go:191 lxc/file.go:331
 msgid "Create any directories necessary"
 msgstr ""
 
-#: lxc/image.go:606 lxc/info.go:127
+#: lxc/snapshot.go:20
+msgid "Create container snapshots"
+msgstr ""
+
+#: lxc/snapshot.go:21
+msgid ""
+"Create container snapshots\n"
+"\n"
+"When --stateful is used, LXD attempts to checkpoint the container's\n"
+"running state, including process memory state, TCP connections, ..."
+msgstr ""
+
+#: lxc/init.go:34 lxc/init.go:35
+msgid "Create containers from images"
+msgstr ""
+
+#: lxc/config_template.go:66 lxc/config_template.go:67
+msgid "Create new container file templates"
+msgstr ""
+
+#: lxc/storage_volume.go:425 lxc/storage_volume.go:426
+msgid "Create new custom storage volumes"
+msgstr ""
+
+#: lxc/network.go:249 lxc/network.go:250
+msgid "Create new networks"
+msgstr ""
+
+#: lxc/profile.go:296 lxc/profile.go:297
+msgid "Create profiles"
+msgstr ""
+
+#: lxc/storage.go:88 lxc/storage.go:89
+msgid "Create storage pools"
+msgstr ""
+
+#: lxc/image.go:832 lxc/info.go:131
 #, c-format
 msgid "Created: %s"
 msgstr ""
 
-#: lxc/init.go:200
+#: lxc/init.go:98
 #, c-format
 msgid "Creating %s"
 msgstr ""
 
-#: lxc/init.go:198
+#: lxc/init.go:96
 msgid "Creating the container"
 msgstr ""
 
-#: lxc/cluster.go:185
+#: lxc/cluster.go:121
 msgid "DATABASE"
 msgstr ""
 
-#: lxc/image.go:235 lxc/image.go:1138 lxc/list.go:469 lxc/network.go:579
-#: lxc/operation.go:154 lxc/storage.go:732 lxc/storage.go:937
+#: lxc/image.go:925 lxc/image_alias.go:230 lxc/list.go:466 lxc/network.go:784
+#: lxc/operation.go:153 lxc/storage.go:545 lxc/storage_volume.go:967
 msgid "DESCRIPTION"
 msgstr ""
 
-#: lxc/storage.go:733
+#: lxc/storage.go:546
 msgid "DRIVER"
 msgstr ""
 
-#: lxc/publish.go:39
+#: lxc/publish.go:41
 msgid "Define a compression algorithm: for image or none"
 msgstr ""
 
-#: lxc/config.go:977
+#: lxc/operation.go:53 lxc/operation.go:54
+msgid "Delete a background operation (will attempt to cancel)"
+msgstr ""
+
+#: lxc/config_template.go:109 lxc/config_template.go:110
+msgid "Delete container file templates"
+msgstr ""
+
+#: lxc/delete.go:29 lxc/delete.go:30
+msgid "Delete containers and snapshots"
+msgstr ""
+
+#: lxc/file.go:72 lxc/file.go:73
+msgid "Delete files in containers"
+msgstr ""
+
+#: lxc/image_alias.go:105 lxc/image_alias.go:106
+msgid "Delete image aliases"
+msgstr ""
+
+#: lxc/image.go:260 lxc/image.go:261
+msgid "Delete images"
+msgstr ""
+
+#: lxc/network.go:319 lxc/network.go:320
+msgid "Delete networks"
+msgstr ""
+
+#: lxc/profile.go:347 lxc/profile.go:348
+msgid "Delete profiles"
+msgstr ""
+
+#: lxc/storage.go:160 lxc/storage.go:161
+msgid "Delete storage pools"
+msgstr ""
+
+#: lxc/storage_volume.go:500 lxc/storage_volume.go:501
+msgid "Delete storage volumes"
+msgstr ""
+
+#: lxc/action.go:30 lxc/action.go:49 lxc/action.go:69 lxc/action.go:91
+#: lxc/alias.go:23 lxc/alias.go:55 lxc/alias.go:99 lxc/alias.go:147
+#: lxc/alias.go:198 lxc/cluster.go:26 lxc/cluster.go:59 lxc/cluster.go:142
+#: lxc/cluster.go:192 lxc/cluster.go:238 lxc/config.go:29 lxc/config.go:88
+#: lxc/config.go:289 lxc/config.go:355 lxc/config.go:452 lxc/config.go:560
+#: lxc/config_device.go:24 lxc/config_device.go:76 lxc/config_device.go:179
+#: lxc/config_device.go:252 lxc/config_device.go:318 lxc/config_device.go:405
+#: lxc/config_device.go:493 lxc/config_device.go:582 lxc/config_device.go:650
+#: lxc/config_metadata.go:29 lxc/config_metadata.go:54
+#: lxc/config_metadata.go:176 lxc/config_template.go:30
+#: lxc/config_template.go:67 lxc/config_template.go:110
+#: lxc/config_template.go:152 lxc/config_template.go:236
+#: lxc/config_template.go:298 lxc/config_trust.go:30 lxc/config_trust.go:59
+#: lxc/config_trust.go:115 lxc/config_trust.go:197 lxc/console.go:32
+#: lxc/copy.go:35 lxc/delete.go:30 lxc/exec.go:39 lxc/file.go:40 lxc/file.go:73
+#: lxc/file.go:122 lxc/file.go:185 lxc/file.go:324 lxc/image.go:42
+#: lxc/image.go:131 lxc/image.go:261 lxc/image.go:312 lxc/image.go:435
+#: lxc/image.go:571 lxc/image.go:776 lxc/image.go:890 lxc/image.go:1212
+#: lxc/image.go:1285 lxc/image_alias.go:26 lxc/image_alias.go:59
+#: lxc/image_alias.go:106 lxc/image_alias.go:149 lxc/image_alias.go:250
+#: lxc/info.go:29 lxc/init.go:35 lxc/launch.go:22 lxc/list.go:48 lxc/main.go:45
+#: lxc/monitor.go:31 lxc/move.go:31 lxc/network.go:32 lxc/network.go:104
+#: lxc/network.go:177 lxc/network.go:250 lxc/network.go:320 lxc/network.go:367
+#: lxc/network.go:452 lxc/network.go:537 lxc/network.go:660 lxc/network.go:719
+#: lxc/network.go:808 lxc/network.go:873 lxc/network.go:920 lxc/network.go:989
+#: lxc/network.go:1051 lxc/operation.go:25 lxc/operation.go:54
+#: lxc/operation.go:98 lxc/operation.go:174 lxc/profile.go:30
+#: lxc/profile.go:102 lxc/profile.go:163 lxc/profile.go:241 lxc/profile.go:297
+#: lxc/profile.go:348 lxc/profile.go:396 lxc/profile.go:520 lxc/profile.go:568
+#: lxc/profile.go:632 lxc/profile.go:705 lxc/profile.go:753 lxc/profile.go:812
+#: lxc/profile.go:866 lxc/publish.go:34 lxc/query.go:27 lxc/remote.go:34
+#: lxc/remote.go:84 lxc/remote.go:380 lxc/remote.go:414 lxc/remote.go:487
+#: lxc/remote.go:549 lxc/remote.go:598 lxc/remote.go:636 lxc/rename.go:20
+#: lxc/restore.go:24 lxc/snapshot.go:21 lxc/storage.go:33 lxc/storage.go:89
+#: lxc/storage.go:161 lxc/storage.go:208 lxc/storage.go:328 lxc/storage.go:383
+#: lxc/storage.go:491 lxc/storage.go:573 lxc/storage.go:645 lxc/storage.go:729
+#: lxc/storage_volume.go:34 lxc/storage_volume.go:122 lxc/storage_volume.go:201
+#: lxc/storage_volume.go:283 lxc/storage_volume.go:426
+#: lxc/storage_volume.go:501 lxc/storage_volume.go:561
+#: lxc/storage_volume.go:643 lxc/storage_volume.go:724
+#: lxc/storage_volume.go:853 lxc/storage_volume.go:918
+#: lxc/storage_volume.go:994 lxc/storage_volume.go:1025
+#: lxc/storage_volume.go:1089 lxc/storage_volume.go:1166
+#: lxc/storage_volume.go:1241
+msgid "Description"
+msgstr ""
+
+#: lxc/network.go:366 lxc/network.go:367
+msgid "Detach network interfaces from containers"
+msgstr ""
+
+#: lxc/network.go:451 lxc/network.go:452
+msgid "Detach network interfaces from profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:560 lxc/storage_volume.go:561
+msgid "Detach storage volumes from containers"
+msgstr ""
+
+#: lxc/storage_volume.go:642 lxc/storage_volume.go:643
+msgid "Detach storage volumes from profiles"
+msgstr ""
+
+#: lxc/config_device.go:163
 #, c-format
 msgid "Device %s added to %s"
 msgstr ""
 
-#: lxc/config.go:1272
+#: lxc/config_device.go:387
 #, c-format
 msgid "Device %s overridden for %s"
 msgstr ""
 
-#: lxc/config.go:1213
+#: lxc/config_device.go:476
 #, c-format
 msgid "Device %s removed from %s"
 msgstr ""
 
-#: lxc/utils.go:192 lxc/utils.go:216
+#: lxc/utils.go:133 lxc/utils.go:157
 #, c-format
 msgid "Device already exists: %s"
 msgstr ""
 
-#: lxc/image.go:1290
+#: lxc/image.go:586
 msgid "Directory import is not available on this platform"
 msgstr ""
 
-#: lxc/exec.go:71
+#: lxc/exec.go:55
 msgid "Disable pseudo-terminal allocation"
 msgstr ""
 
-#: lxc/exec.go:72
+#: lxc/exec.go:56
 msgid "Disable stdin (reads from /dev/null)"
 msgstr ""
 
-#: lxc/info.go:175
+#: lxc/info.go:179
 msgid "Disk usage:"
 msgstr ""
 
-#: lxc/list.go:638
+#: lxc/list.go:635
 msgid "EPHEMERAL"
 msgstr ""
 
-#: lxc/config.go:405
+#: lxc/config_trust.go:177
 msgid "EXPIRY DATE"
 msgstr ""
 
-#: lxc/main.go:52
-msgid "Enable debug mode"
+#: lxc/config_template.go:151 lxc/config_template.go:152
+msgid "Edit container file templates"
 msgstr ""
 
-#: lxc/main.go:51
-msgid "Enable verbose mode"
+#: lxc/config_metadata.go:53 lxc/config_metadata.go:54
+msgid "Edit container metadata files"
 msgstr ""
 
-#: lxc/exec.go:68
-msgid "Environment variable to set (e.g. HOME=/home/foo)"
+#: lxc/config.go:87 lxc/config.go:88
+msgid "Edit container or server configurations as YAML"
+msgstr ""
+
+#: lxc/file.go:121 lxc/file.go:122
+msgid "Edit files in containers"
+msgstr ""
+
+#: lxc/image.go:311 lxc/image.go:312
+msgid "Edit image properties"
+msgstr ""
+
+#: lxc/network.go:536 lxc/network.go:537
+msgid "Edit network configurations as YAML"
+msgstr ""
+
+#: lxc/profile.go:395 lxc/profile.go:396
+msgid "Edit profile configurations as YAML"
+msgstr ""
+
+#: lxc/storage.go:207 lxc/storage.go:208
+msgid "Edit storage pool configurations as YAML"
+msgstr ""
+
+#: lxc/storage_volume.go:723 lxc/storage_volume.go:724
+msgid "Edit storage volume configurations as YAML"
+msgstr ""
+
+#: lxc/list.go:504
+#, c-format
+msgid "Empty column entry (redundant, leading or trailing command) in '%s'"
 msgstr ""
 
-#: lxc/help.go:77
-msgid "Environment:"
+#: lxc/exec.go:52
+msgid "Environment variable to set (e.g. HOME=/home/foo)"
 msgstr ""
 
-#: lxc/copy.go:41 lxc/copy.go:42 lxc/init.go:143 lxc/init.go:144
+#: lxc/copy.go:41 lxc/init.go:44
 msgid "Ephemeral container"
 msgstr ""
 
-#: lxc/config.go:1446
+#: lxc/config_template.go:204
 #, c-format
 msgid "Error updating template file: %s"
 msgstr ""
 
-#: lxc/monitor.go:69
+#: lxc/monitor.go:48
 msgid "Event type to listen for"
 msgstr ""
 
-#: lxc/image.go:610
+#: lxc/exec.go:38
+msgid "Execute commands in containers"
+msgstr ""
+
+#: lxc/exec.go:39
+msgid ""
+"Execute commands in containers\n"
+"\n"
+"The command is executed directly using exec, so there is no shell and\n"
+"shell patterns (variables, file redirects, ...) won't be understood.\n"
+"If you need a shell environment you need to execute the shell\n"
+"executable, passing the shell commands as arguments, for example:\n"
+"\n"
+"  lxc exec <container> -- sh -c \"cd /tmp && pwd\"\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:838
 #, c-format
 msgid "Expires: %s"
 msgstr ""
 
-#: lxc/image.go:612
+#: lxc/image.go:840
 msgid "Expires: never"
 msgstr ""
 
-#: lxc/image.go:922
+#: lxc/image.go:434
+msgid "Export and download images"
+msgstr ""
+
+#: lxc/image.go:435
+msgid ""
+"Export and download images\n"
+"\n"
+"The output target is optional and defaults to the working directory."
+msgstr ""
+
+#: lxc/image.go:494
 #, c-format
 msgid "Exporting the image: %s"
 msgstr ""
 
-#: lxc/config.go:761
+#: lxc/config_template.go:279
 msgid "FILENAME"
 msgstr ""
 
-#: lxc/config.go:402 lxc/image.go:233 lxc/image.go:1137
+#: lxc/config_trust.go:174 lxc/image.go:923 lxc/image_alias.go:229
 msgid "FINGERPRINT"
 msgstr ""
 
-#: lxc/utils.go:261
+#: lxc/utils.go:202
 #, c-format
 msgid "Failed to create alias %s"
 msgstr ""
 
-#: lxc/manpage.go:62
-#, c-format
-msgid "Failed to generate 'lxc.%s.1': %v"
-msgstr ""
-
-#: lxc/manpage.go:55
-#, c-format
-msgid "Failed to generate 'lxc.1': %v"
-msgstr ""
-
-#: lxc/copy.go:238
+#: lxc/copy.go:255
 msgid "Failed to get the new container name"
 msgstr ""
 
-#: lxc/utils.go:251
+#: lxc/utils.go:192
 #, c-format
 msgid "Failed to remove alias %s"
 msgstr ""
 
-#: lxc/file.go:137
+#: lxc/file.go:609
 #, c-format
 msgid "Failed to walk path for %s: %s"
 msgstr ""
 
-#: lxc/list.go:137
+#: lxc/list.go:114
 msgid "Fast mode (same as --columns=nsacPt)"
 msgstr ""
 
-#: lxc/network.go:536 lxc/operation.go:121
+#: lxc/network.go:749 lxc/operation.go:126
 msgid "Filtering isn't supported yet"
 msgstr ""
 
-#: lxc/image.go:599
+#: lxc/image.go:824
 #, c-format
 msgid "Fingerprint: %s"
 msgstr ""
 
-#: lxc/exec.go:70
+#: lxc/exec.go:54
 msgid "Force pseudo-terminal allocation"
 msgstr ""
 
-#: lxc/cluster.go:42
-msgid "Force removing a node, even if degraded"
+#: lxc/cluster.go:242
+msgid "Force removing a member, even if degraded"
 msgstr ""
 
-#: lxc/action.go:47 lxc/action.go:48
+#: lxc/action.go:121
 msgid "Force the container to shutdown"
 msgstr ""
 
-#: lxc/delete.go:34 lxc/delete.go:35
+#: lxc/delete.go:34
 msgid "Force the removal of running containers"
 msgstr ""
 
-#: lxc/main.go:53
+#: lxc/main.go:56
 msgid "Force using the local unix socket"
 msgstr ""
 
-#: lxc/image.go:181 lxc/list.go:136
+#: lxc/image.go:913 lxc/list.go:113
 msgid "Format (csv|json|table|yaml)"
 msgstr ""
 
-#: lxc/remote.go:166
+#: lxc/remote.go:211
 msgid "Generating a client certificate. This may take a minute..."
 msgstr ""
 
-#: lxc/network.go:513
+#: lxc/config_device.go:178 lxc/config_device.go:179
+msgid "Get values for container device configuration keys"
+msgstr ""
+
+#: lxc/config.go:288 lxc/config.go:289
+msgid "Get values for container or server configuration keys"
+msgstr ""
+
+#: lxc/network.go:659 lxc/network.go:660
+msgid "Get values for network configuration keys"
+msgstr ""
+
+#: lxc/profile.go:519 lxc/profile.go:520
+msgid "Get values for profile configuration keys"
+msgstr ""
+
+#: lxc/storage.go:327 lxc/storage.go:328
+msgid "Get values for storage pool configuration keys"
+msgstr ""
+
+#: lxc/storage_volume.go:852 lxc/storage_volume.go:853
+msgid "Get values for storage volume configuration keys"
+msgstr ""
+
+#: lxc/network.go:851
 msgid "HOSTNAME"
 msgstr ""
 
-#: lxc/operation.go:152
+#: lxc/operation.go:151
 msgid "ID"
 msgstr ""
 
-#: lxc/network.go:515
+#: lxc/network.go:853
 msgid "IP ADDRESS"
 msgstr ""
 
-#: lxc/list.go:465
+#: lxc/list.go:462
 msgid "IPV4"
 msgstr ""
 
-#: lxc/list.go:466
+#: lxc/list.go:463
 msgid "IPV6"
 msgstr ""
 
-#: lxc/config.go:404
+#: lxc/config_trust.go:176
 msgid "ISSUE DATE"
 msgstr ""
 
-#: lxc/main.go:171
+#: lxc/main.go:259
 msgid ""
 "If this is your first time running LXD on this machine, you should also run: "
 "lxd init"
 msgstr ""
 
-#: lxc/main.go:54
-msgid "Ignore aliases when determining what command to run"
-msgstr ""
-
-#: lxc/action.go:51
-msgid "Ignore the container state (only for start)"
+#: lxc/action.go:117
+msgid "Ignore the container state"
 msgstr ""
 
-#: lxc/image.go:557
+#: lxc/image.go:1268
 msgid "Image already up to date."
 msgstr ""
 
-#: lxc/image.go:463
+#: lxc/image.go:231
 msgid "Image copied successfully!"
 msgstr ""
 
-#: lxc/image.go:982
+#: lxc/image.go:554
 msgid "Image exported successfully!"
 msgstr ""
 
-#: lxc/image.go:778
+#: lxc/image.go:284 lxc/image.go:1235
+msgid "Image identifier missing"
+msgstr ""
+
+#: lxc/image.go:352
+#, c-format
+msgid "Image identifier missing: %s"
+msgstr ""
+
+#: lxc/image.go:749
 #, c-format
 msgid "Image imported with fingerprint: %s"
 msgstr ""
 
-#: lxc/image.go:555
+#: lxc/image.go:1266
 msgid "Image refreshed successfully!"
 msgstr ""
 
-#: lxc/query.go:39
+#: lxc/image.go:571
+msgid ""
+"Import image into the image store\n"
+"\n"
+"Directory import is only available on Linux and must be performed as root."
+msgstr ""
+
+#: lxc/image.go:570
+msgid "Import images into the image store"
+msgstr ""
+
+#: lxc/query.go:38
 msgid "Input data"
 msgstr ""
 
-#: lxc/init.go:149
+#: lxc/init.go:47
 msgid "Instance type"
 msgstr ""
 
-#: lxc/remote.go:118
+#: lxc/remote.go:163
 #, c-format
 msgid "Invalid URL scheme \"%s\" in \"%s\""
 msgstr ""
 
-#: lxc/config.go:383
+#: lxc/config_trust.go:155
 msgid "Invalid certificate"
 msgstr ""
 
-#: lxc/init.go:32 lxc/init.go:37
-msgid "Invalid configuration key"
+#: lxc/list.go:525
+#, c-format
+msgid "Invalid config key '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:520
+#, c-format
+msgid "Invalid config key column format (too many fields): '%s'"
+msgstr ""
+
+#: lxc/image.go:1196 lxc/list.go:386
+#, c-format
+msgid "Invalid format %q"
+msgstr ""
+
+#: lxc/list.go:543
+#, c-format
+msgid "Invalid max width (must -1, 0 or a positive integer) '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:540
+#, c-format
+msgid "Invalid max width (must be an integer) '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:531
+#, c-format
+msgid ""
+"Invalid name in '%s', empty string is only allowed when defining maxWidth"
+msgstr ""
+
+#: lxc/main.go:341
+msgid "Invalid number of arguments"
 msgstr ""
 
-#: lxc/file.go:560
+#: lxc/file.go:97
 #, c-format
 msgid "Invalid path %s"
 msgstr ""
 
-#: lxc/remote.go:107
+#: lxc/remote.go:152
 #, c-format
 msgid "Invalid protocol: %s"
 msgstr ""
 
-#: lxc/file.go:473
+#: lxc/file.go:243
 #, c-format
 msgid "Invalid source %s"
 msgstr ""
 
-#: lxc/file.go:250
+#: lxc/file.go:352
 #, c-format
 msgid "Invalid target %s"
 msgstr ""
 
-#: lxc/info.go:156
+#: lxc/info.go:160
 msgid "Ips:"
 msgstr ""
 
-#: lxc/image.go:179
+#: lxc/image.go:139
 msgid "Keep the image up to date after initial copy"
 msgstr ""
 
-#: lxc/list.go:470
+#: lxc/list.go:467
 msgid "LAST USED AT"
 msgstr ""
 
-#: lxc/list.go:492
+#: lxc/list.go:489
 msgid "LOCATION"
 msgstr ""
 
-#: lxc/main.go:38
-msgid "LXD socket not found; is LXD installed and running?"
+#: lxc/cluster.go:94
+msgid "LXD server isn't part of a cluster"
 msgstr ""
 
-#: lxc/image.go:615
+#: lxc/image.go:844
 #, c-format
 msgid "Last used: %s"
 msgstr ""
 
-#: lxc/image.go:617
+#: lxc/image.go:846
 msgid "Last used: never"
 msgstr ""
 
-#: lxc/info.go:119
-#, c-format
-msgid "Location: %s"
-msgstr ""
-
-#: lxc/info.go:271
-msgid "Log:"
-msgstr ""
-
-#: lxc/network.go:514
-msgid "MAC ADDRESS"
-msgstr ""
-
-#: lxc/network.go:578
-msgid "MANAGED"
+#: lxc/network.go:807 lxc/network.go:808
+msgid "List DHCP leases"
 msgstr ""
 
-#: lxc/cluster.go:187
-msgid "MESSAGE"
+#: lxc/alias.go:98 lxc/alias.go:99
+msgid "List aliases"
 msgstr ""
 
-#: lxc/image.go:177
-msgid "Make image public"
+#: lxc/cluster.go:58 lxc/cluster.go:59
+msgid "List all the cluster members"
 msgstr ""
 
-#: lxc/publish.go:35
-msgid "Make the image public"
+#: lxc/network.go:718 lxc/network.go:719
+msgid "List available networks"
 msgstr ""
 
-#: lxc/info.go:193
-msgid "Memory (current)"
+#: lxc/storage.go:490 lxc/storage.go:491
+msgid "List available storage pools"
 msgstr ""
 
-#: lxc/info.go:197
-msgid "Memory (peak)"
+#: lxc/operation.go:97 lxc/operation.go:98
+msgid "List background operations"
 msgstr ""
 
-#: lxc/info.go:209
-msgid "Memory usage:"
+#: lxc/config_device.go:251 lxc/config_device.go:252
+msgid "List container devices"
 msgstr ""
 
-#: lxc/monitor.go:70
-msgid "Minimum level for log messages"
+#: lxc/config_template.go:235 lxc/config_template.go:236
+msgid "List container file templates"
 msgstr ""
 
-#: lxc/utils.go:143
-msgid "Missing summary."
+#: lxc/list.go:47
+msgid "List containers"
 msgstr ""
 
-#: lxc/network.go:303 lxc/network.go:356 lxc/storage.go:435 lxc/storage.go:565
-msgid "More than one device matches, specify the device name."
-msgstr ""
+#: lxc/list.go:48
+msgid ""
+"List containers\n"
+"\n"
+"Default column layout: ns46tS\n"
+"Fast column layout: nsacPt\n"
+"\n"
+"== Filters ==\n"
+"A single keyword like \"web\" which will list any container with a name "
+"starting by \"web\".\n"
+"A regular expression on the container name. (e.g. .*web.*01$).\n"
+"A key/value pair referring to a configuration item. For those, the\n"
+"namespace can be abbreviated to the smallest unambiguous identifier.\n"
+"\n"
+"Examples:\n"
+"  - \"user.blah=abc\" will list all containers with the \"blah\" user "
+"property set to \"abc\".\n"
+"  - \"u.blah=abc\" will do the same\n"
+"  - \"security.privileged=true\" will list all privileged containers\n"
+"  - \"s.privileged=true\" will do the same\n"
+"\n"
+"A regular expression matching a configuration item or its value. (e.g. "
+"volatile.eth0.hwaddr=00:16:3e:.*).\n"
+"\n"
+"== Columns ==\n"
+"The -c option takes a comma separated list of arguments that control\n"
+"which container attributes to output when displaying in table or csv\n"
+"format.\n"
+"\n"
+"Column arguments are either pre-defined shorthand chars (see below),\n"
+"or (extended) config keys.\n"
+"\n"
+"Commas between consecutive shorthand chars are optional.\n"
+"\n"
+"Pre-defined column shorthand chars:\n"
+"  4 - IPv4 address\n"
+"  6 - IPv6 address\n"
+"  a - Architecture\n"
+"  b - Storage pool\n"
+"  c - Creation date\n"
+"  d - Description\n"
+"  l - Last used date\n"
+"  n - Name\n"
+"  N - Number of Processes\n"
+"  p - PID of the container's init process\n"
+"  P - Profiles\n"
+"  s - State\n"
+"  S - Number of snapshots\n"
+"  t - Type (persistent or ephemeral)\n"
+"  L - Location of the container (e.g. its node)\n"
+"\n"
+"Custom columns are defined with \"key[:name][:maxWidth]\":\n"
+"  KEY: The (extended) config key to display\n"
+"  NAME: Name to display in the column header.\n"
+"  Defaults to the key if not specified or empty.\n"
+"\n"
+"  MAXWIDTH: Max width of the column (longer results are truncated).\n"
+"  Defaults to -1 (unlimited). Use 0 to limit to the column header size."
+msgstr ""
+
+#: lxc/image_alias.go:148
+msgid "List image aliases"
+msgstr ""
+
+#: lxc/image_alias.go:149
+msgid ""
+"List image aliases\n"
+"\n"
+"Filters may be part of the image hash or part of the image alias name.\n"
+msgstr ""
+
+#: lxc/image.go:889
+msgid "List images"
+msgstr ""
+
+#: lxc/image.go:890
+msgid ""
+"List images\n"
+"\n"
+"Filters may be of the <key>=<value> form for property based filtering,\n"
+"or part of the image hash or part of the image alias name.\n"
+"\n"
+"The -c option takes a (optionally comma-separated) list of arguments\n"
+"that control which image attributes to output when displaying in table\n"
+"or csv format.\n"
+"\n"
+"Default column layout is: lfpdasu\n"
+"\n"
+"Column shorthand chars:\n"
+"\n"
+"    l - Shortest image alias (and optionally number of other aliases)\n"
+"    L - Newline-separated list of all image aliases\n"
+"    f - Fingerprint\n"
+"    p - Whether image is public\n"
+"    d - Description\n"
+"    a - Architecture\n"
+"    s - Size"
+msgstr ""
+
+#: lxc/profile.go:567 lxc/profile.go:568
+msgid "List profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:917 lxc/storage_volume.go:918
+msgid "List storage volumes"
+msgstr ""
+
+#: lxc/remote.go:413 lxc/remote.go:414
+msgid "List the available remotes"
+msgstr ""
+
+#: lxc/config_trust.go:114 lxc/config_trust.go:115
+msgid "List trusted clients"
+msgstr ""
+
+#: lxc/operation.go:24 lxc/operation.go:25
+msgid "List, show and delete background operations"
+msgstr ""
+
+#: lxc/info.go:123
+#, c-format
+msgid "Location: %s"
+msgstr ""
+
+#: lxc/info.go:275
+msgid "Log:"
+msgstr ""
+
+#: lxc/network.go:852
+msgid "MAC ADDRESS"
+msgstr ""
+
+#: lxc/network.go:783
+msgid "MANAGED"
+msgstr ""
+
+#: lxc/cluster.go:123
+msgid "MESSAGE"
+msgstr ""
+
+#: lxc/image.go:137 lxc/image.go:576
+msgid "Make image public"
+msgstr ""
+
+#: lxc/publish.go:38
+msgid "Make the image public"
+msgstr ""
+
+#: lxc/network.go:32
+msgid "Manage an attach containers to networks"
+msgstr ""
+
+#: lxc/network.go:31
+msgid "Manage and attach containers to networks"
+msgstr ""
+
+#: lxc/cluster.go:25 lxc/cluster.go:26
+msgid "Manage cluster members"
+msgstr ""
+
+#: lxc/alias.go:22 lxc/alias.go:23
+msgid "Manage command aliases"
+msgstr ""
+
+#: lxc/config.go:28 lxc/config.go:29
+msgid "Manage container and server configuration options"
+msgstr ""
+
+#: lxc/config_device.go:23 lxc/config_device.go:24
+msgid "Manage container devices"
+msgstr ""
+
+#: lxc/config_template.go:29 lxc/config_template.go:30
+msgid "Manage container file templates"
+msgstr ""
+
+#: lxc/config_metadata.go:28 lxc/config_metadata.go:29
+msgid "Manage container metadata files"
+msgstr ""
+
+#: lxc/file.go:39 lxc/file.go:40
+msgid "Manage files in containers"
+msgstr ""
+
+#: lxc/image_alias.go:25 lxc/image_alias.go:26
+msgid "Manage image aliases"
+msgstr ""
+
+#: lxc/image.go:41
+msgid "Manage images"
+msgstr ""
+
+#: lxc/image.go:42
+msgid ""
+"Manage images\n"
+"\n"
+"In LXD containers are created from images. Those images were themselves\n"
+"either generated from an existing container or downloaded from an image\n"
+"server.\n"
+"\n"
+"When using remote images, LXD will automatically cache images for you\n"
+"and remove them upon expiration.\n"
+"\n"
+"The image unique identifier is the hash (sha-256) of its representation\n"
+"as a compressed tarball (or for split images, the concatenation of the\n"
+"metadata and rootfs tarballs).\n"
+"\n"
+"Images can be referenced by their full hash, shortest unique partial\n"
+"hash or alias name (if one is set)."
+msgstr ""
+
+#: lxc/profile.go:29 lxc/profile.go:30
+msgid "Manage profiles"
+msgstr ""
+
+#: lxc/storage.go:32 lxc/storage.go:33
+msgid "Manage storage pools and volumes"
+msgstr ""
+
+#: lxc/storage_volume.go:33
+msgid "Manage storage volumes"
+msgstr ""
+
+#: lxc/storage_volume.go:34
+msgid ""
+"Manage storage volumes\n"
+"\n"
+"Unless specified through a prefix, all volume operations affect \"custom"
+"\" (user created) volumes."
+msgstr ""
+
+#: lxc/remote.go:33 lxc/remote.go:34
+msgid "Manage the list of remote servers"
+msgstr ""
+
+#: lxc/config_trust.go:29 lxc/config_trust.go:30
+msgid "Manage trusted clients"
+msgstr ""
+
+#: lxc/info.go:197
+msgid "Memory (current)"
+msgstr ""
+
+#: lxc/info.go:201
+msgid "Memory (peak)"
+msgstr ""
+
+#: lxc/info.go:213
+msgid "Memory usage:"
+msgstr ""
+
+#: lxc/monitor.go:49
+msgid "Minimum level for log messages"
+msgstr ""
+
+#: lxc/config_metadata.go:102 lxc/config_metadata.go:200
+#: lxc/config_template.go:91 lxc/config_template.go:134
+#: lxc/config_template.go:176 lxc/config_template.go:260
+#: lxc/config_template.go:322 lxc/profile.go:197 lxc/profile.go:656
+msgid "Missing container name"
+msgstr ""
+
+#: lxc/profile.go:126
+msgid "Missing container.name name"
+msgstr ""
+
+#: lxc/config_device.go:103 lxc/config_device.go:203 lxc/config_device.go:276
+#: lxc/config_device.go:342 lxc/config_device.go:429 lxc/config_device.go:517
+#: lxc/config_device.go:606
+msgid "Missing name"
+msgstr ""
+
+#: lxc/network.go:128 lxc/network.go:201 lxc/network.go:344 lxc/network.go:391
+#: lxc/network.go:476 lxc/network.go:581 lxc/network.go:686 lxc/network.go:832
+#: lxc/network.go:897 lxc/network.go:946 lxc/network.go:1015
+msgid "Missing network name"
+msgstr ""
+
+#: lxc/storage.go:185 lxc/storage.go:252 lxc/storage.go:353 lxc/storage.go:408
+#: lxc/storage.go:603 lxc/storage.go:677 lxc/storage_volume.go:146
+#: lxc/storage_volume.go:225 lxc/storage_volume.go:451
+#: lxc/storage_volume.go:526 lxc/storage_volume.go:585
+#: lxc/storage_volume.go:667 lxc/storage_volume.go:766
+#: lxc/storage_volume.go:878 lxc/storage_volume.go:942
+#: lxc/storage_volume.go:1050 lxc/storage_volume.go:1114
+#: lxc/storage_volume.go:1197
+msgid "Missing pool name"
+msgstr ""
+
+#: lxc/profile.go:321 lxc/profile.go:372 lxc/profile.go:444 lxc/profile.go:544
+#: lxc/profile.go:729 lxc/profile.go:777 lxc/profile.go:836
+msgid "Missing profile name"
+msgstr ""
+
+#: lxc/profile.go:266
+msgid "Missing source profile name"
+msgstr ""
 
-#: lxc/file.go:460
+#: lxc/storage_volume.go:311
+msgid "Missing source volume name"
+msgstr ""
+
+#: lxc/file.go:446
+msgid "Missing target directory"
+msgstr ""
+
+#: lxc/monitor.go:30
+msgid "Monitor a local or remote LXD server"
+msgstr ""
+
+#: lxc/monitor.go:31
+msgid ""
+"Monitor a local or remote LXD server\n"
+"\n"
+"By default the monitor will listen to all message types."
+msgstr ""
+
+#: lxc/network.go:411 lxc/network.go:496 lxc/storage_volume.go:605
+#: lxc/storage_volume.go:686
+msgid "More than one device matches, specify the device name."
+msgstr ""
+
+#: lxc/file.go:224
 msgid "More than one file to download, but target is not a directory"
 msgstr ""
 
-#: lxc/move.go:42
+#: lxc/move.go:30 lxc/move.go:31
+msgid "Move containers within or in between LXD instances"
+msgstr ""
+
+#: lxc/storage_volume.go:993 lxc/storage_volume.go:994
+msgid "Move storage volumes between pools"
+msgstr ""
+
+#: lxc/move.go:44
 msgid "Move the container without its snapshots"
 msgstr ""
 
-#: lxc/storage.go:1128
+#: lxc/storage_volume.go:375
 #, c-format
 msgid "Moving the storage volume: %s"
 msgstr ""
 
-#: lxc/image.go:1292
+#: lxc/image.go:588
 msgid "Must run as root to import from directory"
 msgstr ""
 
-#: lxc/action.go:74
+#: lxc/action.go:147
 msgid "Must supply container name for: "
 msgstr ""
 
-#: lxc/cluster.go:183 lxc/list.go:471 lxc/network.go:576 lxc/profile.go:573
-#: lxc/remote.go:409 lxc/storage.go:731 lxc/storage.go:936
+#: lxc/cluster.go:119 lxc/list.go:468 lxc/network.go:781 lxc/profile.go:613
+#: lxc/remote.go:463 lxc/storage.go:544 lxc/storage_volume.go:966
 msgid "NAME"
 msgstr ""
 
-#: lxc/network.go:558 lxc/operation.go:139 lxc/remote.go:380 lxc/remote.go:385
+#: lxc/network.go:763 lxc/operation.go:138 lxc/remote.go:434 lxc/remote.go:439
 msgid "NO"
 msgstr ""
 
-#: lxc/storage.go:941
+#: lxc/storage_volume.go:971
 msgid "NODE"
 msgstr ""
 
-#: lxc/info.go:117
+#: lxc/info.go:121
 #, c-format
 msgid "Name: %s"
 msgstr ""
 
-#: lxc/network.go:276
+#: lxc/network.go:303
 #, c-format
 msgid "Network %s created"
 msgstr ""
 
-#: lxc/network.go:393
+#: lxc/network.go:353
 #, c-format
 msgid "Network %s deleted"
 msgstr ""
 
-#: lxc/network.go:274
+#: lxc/network.go:301
 #, c-format
 msgid "Network %s pending on node %s"
 msgstr ""
 
-#: lxc/network.go:470
+#: lxc/network.go:906
 #, c-format
 msgid "Network %s renamed to %s"
 msgstr ""
 
-#: lxc/init.go:145 lxc/init.go:146
+#: lxc/init.go:45
 msgid "Network name"
 msgstr ""
 
-#: lxc/info.go:226
+#: lxc/info.go:230
 msgid "Network usage:"
 msgstr ""
 
-#: lxc/image.go:180 lxc/publish.go:36
+#: lxc/publish.go:39
 msgid "New alias to define at target"
 msgstr ""
 
-#: lxc/config.go:414
-msgid "No certificate provided to add"
+#: lxc/image.go:140 lxc/image.go:577
+msgid "New aliases to add to the image"
 msgstr ""
 
-#: lxc/network.go:312 lxc/network.go:365
+#: lxc/network.go:420 lxc/network.go:505
 msgid "No device found for this network"
 msgstr ""
 
-#: lxc/storage.go:444 lxc/storage.go:574
+#: lxc/storage_volume.go:614 lxc/storage_volume.go:695
 msgid "No device found for this storage volume."
 msgstr ""
 
-#: lxc/config.go:446
-msgid "No fingerprint specified."
-msgstr ""
-
-#: lxc/cluster.go:143
+#: lxc/cluster.go:268
 #, c-format
 msgid "Node %s removed"
 msgstr ""
 
-#: lxc/cluster.go:119
+#: lxc/cluster.go:221
 #, c-format
 msgid "Node %s renamed to %s"
 msgstr ""
 
-#: lxc/copy.go:46 lxc/init.go:150 lxc/move.go:45 lxc/network.go:105
-#: lxc/storage.go:165
+#: lxc/copy.go:45 lxc/init.go:48 lxc/move.go:47
 msgid "Node name"
 msgstr ""
 
-#: lxc/storage.go:388 lxc/storage.go:481
+#: lxc/storage_volume.go:164 lxc/storage_volume.go:243
 msgid "Only \"custom\" volumes can be attached to containers."
 msgstr ""
 
-#: lxc/remote.go:101
+#: lxc/remote.go:146
 msgid "Only https URLs are supported for simplestreams"
 msgstr ""
 
-#: lxc/image.go:688
+#: lxc/image.go:658
 msgid "Only https:// is supported for remote image import."
 msgstr ""
 
-#: lxc/network.go:421 lxc/network.go:605
+#: lxc/network.go:607 lxc/network.go:960
 msgid "Only managed networks can be modified."
 msgstr ""
 
-#: lxc/operation.go:85
+#: lxc/operation.go:83
 #, c-format
 msgid "Operation %s deleted"
 msgstr ""
 
-#: lxc/help.go:71 lxc/main.go:139 lxc/main.go:195
-msgid "Options:"
-msgstr ""
-
-#: lxc/exec.go:69
+#: lxc/exec.go:53
 msgid "Override the terminal mode (auto, interactive or non-interactive)"
 msgstr ""
 
-#: lxc/list.go:641
+#: lxc/list.go:638
 msgid "PERSISTENT"
 msgstr ""
 
-#: lxc/list.go:473
+#: lxc/list.go:470
 msgid "PID"
 msgstr ""
 
-#: lxc/list.go:472
+#: lxc/list.go:469
 msgid "PROCESSES"
 msgstr ""
 
-#: lxc/list.go:474
+#: lxc/list.go:471
 msgid "PROFILES"
 msgstr ""
 
-#: lxc/remote.go:411
+#: lxc/remote.go:465
 msgid "PROTOCOL"
 msgstr ""
 
-#: lxc/image.go:234 lxc/remote.go:413
+#: lxc/image.go:924 lxc/remote.go:467
 msgid "PUBLIC"
 msgstr ""
 
-#: lxc/info.go:220
+#: lxc/info.go:224
 msgid "Packets received"
 msgstr ""
 
-#: lxc/info.go:221
+#: lxc/info.go:225
 msgid "Packets sent"
 msgstr ""
 
-#: lxc/help.go:78
-msgid "Path to an alternate client configuration directory"
-msgstr ""
-
-#: lxc/help.go:79
-msgid "Path to an alternate server directory"
-msgstr ""
-
-#: lxc/main.go:240
-msgid "Pause containers."
-msgstr ""
-
-#: lxc/main.go:42
-msgid "Permission denied, are you in the lxd group?"
+#: lxc/action.go:48 lxc/action.go:49
+msgid "Pause containers"
 msgstr ""
 
-#: lxc/info.go:138
+#: lxc/info.go:142
 #, c-format
 msgid "Pid: %d"
 msgstr ""
 
-#: lxc/network.go:446 lxc/profile.go:276 lxc/storage.go:648 lxc/storage.go:1210
+#: lxc/network.go:632 lxc/profile.go:491 lxc/storage.go:299
+#: lxc/storage_volume.go:823
 msgid "Press enter to open the editor again"
 msgstr ""
 
-#: lxc/config.go:822 lxc/config.go:887 lxc/config.go:1397 lxc/config.go:1447
-#: lxc/image.go:1192
+#: lxc/config.go:196 lxc/config.go:260 lxc/config_metadata.go:145
+#: lxc/config_template.go:205 lxc/image.go:406
 msgid "Press enter to start the editor again"
 msgstr ""
 
-#: lxc/monitor.go:68
+#: lxc/monitor.go:47
 msgid "Pretty rendering"
 msgstr ""
 
-#: lxc/help.go:73
-msgid "Print debug information"
-msgstr ""
-
-#: lxc/help.go:72
-msgid "Print less common commands"
+#: lxc/main.go:55
+msgid "Print help"
 msgstr ""
 
-#: lxc/query.go:37
+#: lxc/query.go:36
 msgid "Print the raw response"
 msgstr ""
 
-#: lxc/help.go:74
-msgid "Print verbose information"
+#: lxc/main.go:54
+msgid "Print version number"
 msgstr ""
 
-#: lxc/info.go:162
+#: lxc/info.go:166
 #, c-format
 msgid "Processes: %d"
 msgstr ""
 
-#: lxc/profile.go:362
+#: lxc/main_aliases.go:123 lxc/main_aliases.go:131
+#, c-format
+msgid "Processing aliases failed: %s\n"
+msgstr ""
+
+#: lxc/profile.go:147
 #, c-format
 msgid "Profile %s added to %s"
 msgstr ""
 
-#: lxc/profile.go:226
+#: lxc/profile.go:333
 #, c-format
 msgid "Profile %s created"
 msgstr ""
 
-#: lxc/profile.go:310
+#: lxc/profile.go:381
 #, c-format
 msgid "Profile %s deleted"
 msgstr ""
 
-#: lxc/profile.go:397
+#: lxc/profile.go:690
 #, c-format
 msgid "Profile %s removed from %s"
 msgstr ""
 
-#: lxc/profile.go:300
+#: lxc/profile.go:738
 #, c-format
 msgid "Profile %s renamed to %s"
 msgstr ""
 
-#: lxc/copy.go:39 lxc/copy.go:40 lxc/init.go:141 lxc/init.go:142
+#: lxc/copy.go:40 lxc/init.go:43
 msgid "Profile to apply to the new container"
 msgstr ""
 
-#: lxc/profile.go:339
+#: lxc/profile.go:225
 #, c-format
 msgid "Profiles %s applied to %s"
 msgstr ""
 
-#: lxc/info.go:136
+#: lxc/info.go:140
 #, c-format
 msgid "Profiles: %s"
 msgstr ""
 
-#: lxc/image.go:619
+#: lxc/image.go:849
 msgid "Properties:"
 msgstr ""
 
-#: lxc/remote.go:72
+#: lxc/remote.go:92
 msgid "Public image server"
 msgstr ""
 
-#: lxc/image.go:602
+#: lxc/image.go:827
 #, c-format
 msgid "Public: %s"
 msgstr ""
 
-#: lxc/file.go:68 lxc/file.go:69
-msgid "Recursively push or pull files"
+#: lxc/publish.go:33 lxc/publish.go:34
+msgid "Publish containers as images"
 msgstr ""
 
-#: lxc/image.go:529
-#, c-format
-msgid "Refreshing the image: %s"
+#: lxc/file.go:184 lxc/file.go:185
+msgid "Pull files from containers"
 msgstr ""
 
-#: lxc/remote.go:69
-msgid "Remote admin password"
+#: lxc/file.go:323 lxc/file.go:324
+msgid "Push files into containers"
 msgstr ""
 
-#: lxc/utils/cancel.go:34
-msgid "Remote operation canceled by user"
+#: lxc/file.go:192 lxc/file.go:330
+msgid "Recursively transfer files"
+msgstr ""
+
+#: lxc/image.go:1211 lxc/image.go:1212
+msgid "Refresh images"
 msgstr ""
 
-#: lxc/info.go:122
+#: lxc/image.go:1239
 #, c-format
-msgid "Remote: %s"
+msgid "Refreshing the image: %s"
 msgstr ""
 
-#: lxc/delete.go:42
+#: lxc/remote.go:515
 #, c-format
-msgid "Remove %s (yes/no): "
+msgid "Remote %s already exists"
 msgstr ""
 
-#: lxc/storage.go:1247
+#: lxc/remote.go:507 lxc/remote.go:569 lxc/remote.go:618 lxc/remote.go:656
 #, c-format
-msgid "Renamed storage volume from \"%s\" to \"%s\""
+msgid "Remote %s doesn't exist"
 msgstr ""
 
-#: lxc/delete.go:36 lxc/delete.go:37
-msgid "Require user confirmation"
+#: lxc/remote.go:116
+#, c-format
+msgid "Remote %s exists as <%s>"
 msgstr ""
 
-#: lxc/info.go:159
-msgid "Resources:"
+#: lxc/remote.go:511 lxc/remote.go:573 lxc/remote.go:660
+#, c-format
+msgid "Remote %s is static and cannot be modified"
 msgstr ""
 
-#: lxc/main.go:248
-msgid "Restart containers."
+#: lxc/remote.go:89
+msgid "Remote admin password"
 msgstr ""
 
-#: lxc/console.go:38
-msgid "Retrieve the container's console log"
+#: lxc/utils/cancel.go:34
+msgid "Remote operation canceled by user"
 msgstr ""
 
-#: lxc/init.go:293
+#: lxc/info.go:126
 #, c-format
-msgid "Retrieving image: %s"
+msgid "Remote: %s"
 msgstr ""
 
-#: lxc/action.go:52
-msgid "Run command against all containers"
+#: lxc/delete.go:42
+#, c-format
+msgid "Remove %s (yes/no): "
 msgstr ""
 
-#: lxc/image.go:237
-msgid "SIZE"
+#: lxc/cluster.go:237 lxc/cluster.go:238
+msgid "Remove a member from the cluster"
 msgstr ""
 
-#: lxc/list.go:475
-msgid "SNAPSHOTS"
+#: lxc/alias.go:197 lxc/alias.go:198
+msgid "Remove aliases"
 msgstr ""
 
-#: lxc/storage.go:738
-msgid "SOURCE"
+#: lxc/config_device.go:404 lxc/config_device.go:405
+msgid "Remove container devices"
 msgstr ""
 
-#: lxc/cluster.go:186 lxc/list.go:476 lxc/network.go:583 lxc/storage.go:736
-msgid "STATE"
+#: lxc/profile.go:631 lxc/profile.go:632
+msgid "Remove profiles from containers"
 msgstr ""
 
-#: lxc/remote.go:414
-msgid "STATIC"
+#: lxc/remote.go:548 lxc/remote.go:549
+msgid "Remove remotes"
 msgstr ""
 
-#: lxc/operation.go:155
-msgid "STATUS"
+#: lxc/config_trust.go:196 lxc/config_trust.go:197
+msgid "Remove trusted clients"
 msgstr ""
 
-#: lxc/list.go:478
-msgid "STORAGE POOL"
+#: lxc/cluster.go:191 lxc/cluster.go:192
+msgid "Rename a cluster member"
 msgstr ""
 
-#: lxc/remote.go:71
-msgid "Server authentication type (tls or macaroons)"
+#: lxc/alias.go:146 lxc/alias.go:147 lxc/image_alias.go:249
+#: lxc/image_alias.go:250
+msgid "Rename aliases"
 msgstr ""
 
-#: lxc/remote.go:211
-msgid "Server certificate NACKed by user"
+#: lxc/rename.go:19 lxc/rename.go:20
+msgid "Rename containers and snapshots"
 msgstr ""
 
-#: lxc/remote.go:311
-msgid "Server doesn't trust us after authentication"
+#: lxc/network.go:872 lxc/network.go:873
+msgid "Rename networks"
 msgstr ""
 
-#: lxc/remote.go:70
-msgid "Server protocol (lxd or simplestreams)"
+#: lxc/profile.go:704 lxc/profile.go:705
+msgid "Rename profiles"
 msgstr ""
 
-#: lxc/file.go:66
-msgid "Set the file's gid on push"
+#: lxc/remote.go:486 lxc/remote.go:487
+msgid "Rename remotes"
 msgstr ""
 
-#: lxc/file.go:67
-msgid "Set the file's perms on push"
+#: lxc/storage_volume.go:1024 lxc/storage_volume.go:1025
+msgid "Rename storage volumes"
 msgstr ""
 
-#: lxc/file.go:65
-msgid "Set the file's uid on push"
+#: lxc/storage_volume.go:1073
+#, c-format
+msgid "Renamed storage volume from \"%s\" to \"%s\""
 msgstr ""
 
-#: lxc/help.go:29
-msgid "Show all commands (not just interesting ones)"
+#: lxc/delete.go:35
+msgid "Require user confirmation"
 msgstr ""
 
-#: lxc/help.go:75
-msgid "Show client version"
+#: lxc/info.go:163
+msgid "Resources:"
 msgstr ""
 
-#: lxc/info.go:40
-msgid "Show the container's last 100 log lines?"
+#: lxc/action.go:68
+msgid "Restart containers"
 msgstr ""
 
-#: lxc/config.go:36
-msgid "Show the expanded configuration"
+#: lxc/action.go:69
+msgid ""
+"Restart containers\n"
+"\n"
+"The opposite of \"lxc pause\" is \"lxc start\"."
 msgstr ""
 
-#: lxc/info.go:41
-msgid "Show the resources available to the server"
+#: lxc/restore.go:23
+msgid "Restore containers from snapshots"
 msgstr ""
 
-#: lxc/storage.go:163
-msgid "Show the resources available to the storage pool"
+#: lxc/restore.go:24
+msgid ""
+"Restore containers from snapshots\n"
+"\n"
+"If --stateful is passed, then the running state will be restored too."
+msgstr ""
+
+#: lxc/console.go:39
+msgid "Retrieve the container's console log"
+msgstr ""
+
+#: lxc/init.go:201
+#, c-format
+msgid "Retrieving image: %s"
+msgstr ""
+
+#: lxc/action.go:112
+msgid "Run command against all containers"
+msgstr ""
+
+#: lxc/image.go:927
+msgid "SIZE"
+msgstr ""
+
+#: lxc/list.go:472
+msgid "SNAPSHOTS"
+msgstr ""
+
+#: lxc/storage.go:551
+msgid "SOURCE"
+msgstr ""
+
+#: lxc/cluster.go:122 lxc/list.go:473 lxc/network.go:788 lxc/storage.go:549
+msgid "STATE"
+msgstr ""
+
+#: lxc/remote.go:468
+msgid "STATIC"
+msgstr ""
+
+#: lxc/operation.go:154
+msgid "STATUS"
+msgstr ""
+
+#: lxc/list.go:475
+msgid "STORAGE POOL"
+msgstr ""
+
+#: lxc/query.go:26 lxc/query.go:27
+msgid "Send a raw query to LXD"
+msgstr ""
+
+#: lxc/remote.go:91
+msgid "Server authentication type (tls or macaroons)"
+msgstr ""
+
+#: lxc/remote.go:260
+msgid "Server certificate NACKed by user"
+msgstr ""
+
+#: lxc/remote.go:360
+msgid "Server doesn't trust us after authentication"
+msgstr ""
+
+#: lxc/remote.go:90
+msgid "Server protocol (lxd or simplestreams)"
+msgstr ""
+
+#: lxc/config_device.go:492 lxc/config_device.go:493
+msgid "Set container device configuration keys"
+msgstr ""
+
+#: lxc/config.go:354 lxc/config.go:355
+msgid "Set container or server configuration keys"
+msgstr ""
+
+#: lxc/network.go:919 lxc/network.go:920
+msgid "Set network configuration keys"
+msgstr ""
+
+#: lxc/profile.go:752 lxc/profile.go:753
+msgid "Set profile configuration keys"
+msgstr ""
+
+#: lxc/storage.go:572 lxc/storage.go:573
+msgid "Set storage pool configuration keys"
+msgstr ""
+
+#: lxc/storage_volume.go:1088 lxc/storage_volume.go:1089
+msgid "Set storage volume configuration keys"
+msgstr ""
+
+#: lxc/remote.go:635 lxc/remote.go:636
+msgid "Set the URL for the remote"
+msgstr ""
+
+#: lxc/remote.go:597 lxc/remote.go:598
+msgid "Set the default remote"
+msgstr ""
+
+#: lxc/file.go:333
+msgid "Set the file's gid on push"
+msgstr ""
+
+#: lxc/file.go:334
+msgid "Set the file's perms on push"
+msgstr ""
+
+#: lxc/file.go:332
+msgid "Set the file's uid on push"
+msgstr ""
+
+#: lxc/main.go:57
+msgid "Show all debug messages"
+msgstr ""
+
+#: lxc/main.go:58
+msgid "Show all information messages"
+msgstr ""
+
+#: lxc/config_metadata.go:175 lxc/config_metadata.go:176
+msgid "Show container metadata files"
+msgstr ""
+
+#: lxc/config.go:451 lxc/config.go:452
+msgid "Show container or server configurations"
+msgstr ""
+
+#: lxc/info.go:28 lxc/info.go:29
+msgid "Show container or server information"
+msgstr ""
+
+#: lxc/config_template.go:297 lxc/config_template.go:298
+msgid "Show content of container file templates"
+msgstr ""
+
+#: lxc/cluster.go:141 lxc/cluster.go:142
+msgid "Show details of a cluster member"
+msgstr ""
+
+#: lxc/operation.go:173 lxc/operation.go:174
+msgid "Show details on a background operation"
+msgstr ""
+
+#: lxc/config_device.go:581 lxc/config_device.go:582
+msgid "Show full device configuration for containers or profiles"
+msgstr ""
+
+#: lxc/image.go:1284 lxc/image.go:1285
+msgid "Show image properties"
+msgstr ""
+
+#: lxc/main.go:61
+msgid "Show less common commands"
 msgstr ""
 
-#: lxc/storage.go:164
+#: lxc/network.go:988 lxc/network.go:989
+msgid "Show network configurations"
+msgstr ""
+
+#: lxc/profile.go:811 lxc/profile.go:812
+msgid "Show profile configurations"
+msgstr ""
+
+#: lxc/storage.go:644 lxc/storage.go:645
+msgid "Show storage pool configurations and resources"
+msgstr ""
+
+#: lxc/storage_volume.go:1165
+msgid "Show storage volum configurations"
+msgstr ""
+
+#: lxc/storage_volume.go:1166
+msgid "Show storage volume configurations"
+msgstr ""
+
+#: lxc/info.go:39
+msgid "Show the container's last 100 log lines?"
+msgstr ""
+
+#: lxc/remote.go:379 lxc/remote.go:380
+msgid "Show the default remote"
+msgstr ""
+
+#: lxc/config.go:455
+msgid "Show the expanded configuration"
+msgstr ""
+
+#: lxc/info.go:40
+msgid "Show the resources available to the server"
+msgstr ""
+
+#: lxc/storage.go:648
+msgid "Show the resources available to the storage pool"
+msgstr ""
+
+#: lxc/storage.go:386
 msgid "Show the used and free space in bytes"
 msgstr ""
 
-#: lxc/image.go:600
+#: lxc/image.go:775 lxc/image.go:776
+msgid "Show useful information about images"
+msgstr ""
+
+#: lxc/storage.go:382 lxc/storage.go:383
+msgid "Show useful information about storage pools"
+msgstr ""
+
+#: lxc/image.go:825
 #, c-format
 msgid "Size: %.2fMB"
 msgstr ""
 
-#: lxc/info.go:240
+#: lxc/info.go:244
 msgid "Snapshots:"
 msgstr ""
 
-#: lxc/action.go:163
+#: lxc/action.go:242
 #, c-format
 msgid "Some containers failed to %s"
 msgstr ""
 
-#: lxc/image.go:634
+#: lxc/image.go:867
 msgid "Source:"
 msgstr ""
 
-#: lxc/main.go:258
-msgid "Start containers."
+#: lxc/action.go:29 lxc/action.go:30
+msgid "Start containers"
 msgstr ""
 
-#: lxc/launch.go:59
+#: lxc/launch.go:62
 #, c-format
 msgid "Starting %s"
 msgstr ""
 
-#: lxc/info.go:130
+#: lxc/info.go:134
 #, c-format
 msgid "Status: %s"
 msgstr ""
 
-#: lxc/main.go:264
-msgid "Stop containers."
+#: lxc/action.go:90 lxc/action.go:91
+msgid "Stop containers"
 msgstr ""
 
-#: lxc/publish.go:37 lxc/publish.go:38
+#: lxc/publish.go:40
 msgid "Stop the container if currently running"
 msgstr ""
 
-#: lxc/publish.go:136
+#: lxc/publish.go:144
 msgid "Stopping container failed!"
 msgstr ""
 
-#: lxc/delete.go:121
+#: lxc/delete.go:120
 #, c-format
 msgid "Stopping the container failed: %s"
 msgstr ""
 
-#: lxc/storage.go:538
+#: lxc/storage.go:144
 #, c-format
 msgid "Storage pool %s created"
 msgstr ""
 
-#: lxc/storage.go:598
+#: lxc/storage.go:194
 #, c-format
 msgid "Storage pool %s deleted"
 msgstr ""
 
-#: lxc/storage.go:536
+#: lxc/storage.go:142
 #, c-format
 msgid "Storage pool %s pending on node %s"
 msgstr ""
 
-#: lxc/init.go:147 lxc/init.go:148
+#: lxc/init.go:46
 msgid "Storage pool name"
 msgstr ""
 
-#: lxc/storage.go:980
+#: lxc/storage_volume.go:484
 #, c-format
 msgid "Storage volume %s created"
 msgstr ""
 
-#: lxc/storage.go:1000
+#: lxc/storage_volume.go:545
 #, c-format
 msgid "Storage volume %s deleted"
 msgstr ""
 
-#: lxc/storage.go:1135
+#: lxc/storage_volume.go:388
 msgid "Storage volume copied successfully!"
 msgstr ""
 
-#: lxc/storage.go:1129
+#: lxc/storage_volume.go:376
 msgid "Storage volume moved successfully!"
 msgstr ""
 
-#: lxc/action.go:50
-msgid "Store the container state (only for stop)"
+#: lxc/action.go:115
+msgid "Store the container state"
 msgstr ""
 
-#: lxc/info.go:201
+#: lxc/info.go:205
 msgid "Swap (current)"
 msgstr ""
 
-#: lxc/info.go:205
+#: lxc/info.go:209
 msgid "Swap (peak)"
 msgstr ""
 
-#: lxc/alias.go:85
+#: lxc/alias.go:128
 msgid "TARGET"
 msgstr ""
 
-#: lxc/list.go:477 lxc/network.go:516 lxc/network.go:577 lxc/operation.go:153
-#: lxc/storage.go:935
+#: lxc/list.go:474 lxc/network.go:782 lxc/network.go:854 lxc/operation.go:152
+#: lxc/storage_volume.go:965
 msgid "TYPE"
 msgstr ""
 
-#: lxc/delete.go:105
+#: lxc/delete.go:104
 msgid "The container is currently running, stop it first or pass --force."
 msgstr ""
 
-#: lxc/publish.go:101
+#: lxc/publish.go:109
 msgid ""
 "The container is currently running. Use --force to have it stopped and "
 "restarted."
 msgstr ""
 
-#: lxc/init.go:372
+#: lxc/init.go:280
 msgid "The container you are starting doesn't have any network attached to it."
 msgstr ""
 
-#: lxc/config.go:944 lxc/config.go:961 lxc/config.go:1240
+#: lxc/config_device.go:130 lxc/config_device.go:147 lxc/config_device.go:354
 msgid "The device already exists"
 msgstr ""
 
-#: lxc/config.go:1007 lxc/config.go:1019 lxc/config.go:1055 lxc/config.go:1073
-#: lxc/config.go:1119 lxc/config.go:1136 lxc/config.go:1179 lxc/config.go:1197
+#: lxc/config_device.go:218 lxc/config_device.go:230 lxc/config_device.go:442
+#: lxc/config_device.go:460 lxc/config_device.go:533 lxc/config_device.go:550
 msgid "The device doesn't exist"
 msgstr ""
 
-#: lxc/init.go:356
+#: lxc/init.go:264
 #, c-format
 msgid "The local image '%s' couldn't be found, trying '%s:%s' instead."
 msgstr ""
 
-#: lxc/init.go:352
+#: lxc/init.go:260
 #, c-format
 msgid "The local image '%s' couldn't be found, trying '%s:' instead."
 msgstr ""
 
-#: lxc/action.go:35
-msgid "The opposite of \"lxc pause\" is \"lxc start\"."
-msgstr ""
-
-#: lxc/config.go:1245
+#: lxc/config_device.go:359
 msgid "The profile device doesn't exist"
 msgstr ""
 
-#: lxc/network.go:317 lxc/network.go:370 lxc/storage.go:449 lxc/storage.go:579
+#: lxc/network.go:425 lxc/network.go:510 lxc/storage_volume.go:619
+#: lxc/storage_volume.go:700
 msgid "The specified device doesn't exist"
 msgstr ""
 
-#: lxc/network.go:321 lxc/network.go:374
+#: lxc/network.go:429 lxc/network.go:514
 msgid "The specified device doesn't match the network"
 msgstr ""
 
-#: lxc/publish.go:74
+#: lxc/publish.go:82
 msgid "There is no \"image name\".  Did you want an alias?"
 msgstr ""
 
-#: lxc/help.go:47
-msgid ""
-"This is the LXD command line client.\n"
-"\n"
-"All of LXD's features can be driven through the various commands below.\n"
-"For help with any of those, simply call them with --help."
-msgstr ""
-
-#: lxc/action.go:46
+#: lxc/action.go:122
 msgid "Time to wait for the container before killing it"
 msgstr ""
 
-#: lxc/image.go:603
+#: lxc/image.go:828
 msgid "Timestamps:"
 msgstr ""
 
-#: lxc/init.go:374
+#: lxc/init.go:282
 msgid "To attach a network to a container, use: lxc network attach"
 msgstr ""
 
-#: lxc/init.go:373
+#: lxc/init.go:281
 msgid "To create a new network, use: lxc network create"
 msgstr ""
 
-#: lxc/console.go:173
+#: lxc/console.go:185
 msgid "To detach from the console, press: <ctrl>+a q"
 msgstr ""
 
-#: lxc/main.go:172
+#: lxc/main.go:260
 msgid "To start your first container, try: lxc launch ubuntu:16.04"
 msgstr ""
 
-#: lxc/copy.go:43 lxc/move.go:43
+#: lxc/storage_volume.go:997
+msgid "Transfer mode, one of pull (default), push or relay"
+msgstr ""
+
+#: lxc/copy.go:42
+msgid "Transfer mode. One of pull (default), push or relay"
+msgstr ""
+
+#: lxc/move.go:45 lxc/storage_volume.go:286
 msgid "Transfer mode. One of pull (default), push or relay."
 msgstr ""
 
-#: lxc/copy.go:212
+#: lxc/copy.go:229
 #, c-format
 msgid "Transferring container: %s"
 msgstr ""
 
-#: lxc/image.go:717
+#: lxc/image.go:687
 #, c-format
 msgid "Transferring image: %s"
 msgstr ""
 
-#: lxc/action.go:108 lxc/launch.go:77
+#: lxc/action.go:181 lxc/launch.go:80
 #, c-format
 msgid "Try `lxc info --show-log %s` for more info"
 msgstr ""
 
-#: lxc/info.go:132
+#: lxc/info.go:136
 msgid "Type: ephemeral"
 msgstr ""
 
-#: lxc/info.go:134
+#: lxc/info.go:138
 msgid "Type: persistent"
 msgstr ""
 
-#: lxc/image.go:238
+#: lxc/image.go:928
 msgid "UPLOAD DATE"
 msgstr ""
 
-#: lxc/cluster.go:184 lxc/remote.go:410
+#: lxc/cluster.go:120 lxc/remote.go:464
 msgid "URL"
 msgstr ""
 
-#: lxc/network.go:580 lxc/profile.go:574 lxc/storage.go:740 lxc/storage.go:938
+#: lxc/network.go:785 lxc/profile.go:614 lxc/storage.go:553
+#: lxc/storage_volume.go:968
 msgid "USED BY"
 msgstr ""
 
-#: lxc/manpage.go:36
-msgid "Unable to find help2man."
+#: lxc/list.go:514
+#, c-format
+msgid "Unknown column shorthand char '%c' in '%s'"
 msgstr ""
 
-#: lxc/file.go:124
+#: lxc/file.go:596
 #, c-format
 msgid "Unknown file type '%s'"
 msgstr ""
 
-#: lxc/image.go:608
-#, c-format
-msgid "Uploaded: %s"
+#: lxc/config_device.go:649 lxc/config_device.go:650
+msgid "Unset container device configuration keys"
 msgstr ""
 
-#: lxc/action.go:38
-#, c-format
-msgid ""
-"Usage: lxc %s [--all] [<remote>:]<container> [[<remote>:]<container>...]\n"
-"\n"
-"%s%s"
+#: lxc/config.go:559 lxc/config.go:560
+msgid "Unset container or server configuration keys"
 msgstr ""
 
-#: lxc/help.go:45
-msgid "Usage: lxc <command> [options]"
+#: lxc/network.go:1050 lxc/network.go:1051
+msgid "Unset network configuration keys"
 msgstr ""
 
-#: lxc/alias.go:22
-msgid ""
-"Usage: lxc alias <subcommand> [options]\n"
-"\n"
-"Manage command aliases.\n"
-"\n"
-"lxc alias add <alias> <target>\n"
-"    Add a new alias <alias> pointing to <target>.\n"
-"\n"
-"lxc alias remove <alias>\n"
-"    Remove the alias <alias>.\n"
-"\n"
-"lxc alias list\n"
-"    List all the aliases.\n"
-"\n"
-"lxc alias rename <old alias> <new alias>\n"
-"    Rename remote <old alias> to <new alias>."
+#: lxc/profile.go:865 lxc/profile.go:866
+msgid "Unset profile configuration keys"
 msgstr ""
 
-#: lxc/cluster.go:23
-msgid ""
-"Usage: lxc cluster <subcommand> [options]\n"
-"\n"
-"Manage cluster nodes.\n"
-"\n"
-"lxc cluster list [<remote>:]\n"
-"    List all nodes in the cluster.\n"
-"\n"
-"lxc cluster show [<remote>:]<node>\n"
-"    Show details of a node.\n"
-"\n"
-"lxc cluster rename [<remote>:]<node> <new-name>\n"
-"    Rename a cluster node.\n"
-"\n"
-"lxc cluster delete [<remote>:]<node> [--force]\n"
-"    Delete a node from the cluster."
+#: lxc/storage.go:728 lxc/storage.go:729
+msgid "Unset storage pool configuration keys"
 msgstr ""
 
-#: lxc/config.go:85
-msgid ""
-"Usage: lxc config <subcommand> [options]\n"
-"\n"
-"Change container or server configuration options.\n"
-"\n"
-"*Container configuration*\n"
-"\n"
-"lxc config get [<remote>:][container] <key>\n"
-"    Get container or server configuration key.\n"
-"\n"
-"lxc config set [<remote>:][container] <key> <value>\n"
-"    Set container or server configuration key.\n"
-"\n"
-"lxc config unset [<remote>:][container] <key>\n"
-"    Unset container or server configuration key.\n"
-"\n"
-"lxc config show [<remote>:][container] [--expanded]\n"
-"    Show container or server configuration.\n"
-"\n"
-"lxc config edit [<remote>:][container]\n"
-"    Edit configuration, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"*Container metadata*\n"
-"\n"
-"lxc config metadata show [<remote>:][container]\n"
-"    Show the container metadata.yaml content.\n"
-"\n"
-"lxc config metadata edit [<remote>:][container]\n"
-"    Edit the container metadata.yaml, either by launching external editor or "
-"reading STDIN.\n"
-"\n"
-"*Container templates*\n"
-"\n"
-"lxc config template list [<remote>:][container]\n"
-"    List the names of template files for a container.\n"
-"\n"
-"lxc config template show [<remote>:][container] [template]\n"
-"    Show the content of a template file for a container.\n"
-"\n"
-"lxc config template create [<remote>:][container] [template]\n"
-"    Add an empty template file for a container.\n"
-"\n"
-"lxc config template edit [<remote>:][container] [template]\n"
-"    Edit the content of a template file for a container, either by launching "
-"external editor or reading STDIN.\n"
-"\n"
-"lxc config template delete [<remote>:][container] [template]\n"
-"    Delete a template file for a container.\n"
-"\n"
-"\n"
-"*Device management*\n"
-"\n"
-"lxc config device add [<remote>:]<container> <device> <type> [key=value...]\n"
-"    Add a device to a container.\n"
-"\n"
-"lxc config device get [<remote>:]<container> <device> <key>\n"
-"    Get a device property.\n"
-"\n"
-"lxc config device set [<remote>:]<container> <device> <key> <value>\n"
-"    Set a device property.\n"
-"\n"
-"lxc config device unset [<remote>:]<container> <device> <key>\n"
-"    Unset a device property.\n"
-"\n"
-"lxc config device override [<remote>:]<container> <device> [key=value...]\n"
-"    Copy a profile inherited device into local container config.\n"
-"\n"
-"lxc config device list [<remote>:]<container>\n"
-"    List devices for container.\n"
-"\n"
-"lxc config device show [<remote>:]<container>\n"
-"    Show full device details for container.\n"
-"\n"
-"lxc config device remove [<remote>:]<container> <name>...\n"
-"    Remove device from container.\n"
-"\n"
-"*Client trust store management*\n"
-"\n"
-"lxc config trust list [<remote>:]\n"
-"    List all trusted certs.\n"
-"\n"
-"lxc config trust add [<remote>:] <certfile.crt>\n"
-"    Add certfile.crt to trusted hosts.\n"
-"\n"
-"lxc config trust remove [<remote>:] [hostname|fingerprint]\n"
-"    Remove the cert from trusted hosts.\n"
-"\n"
-"*Examples*\n"
-"\n"
-"cat config.yaml | lxc config edit <container>\n"
-"    Update the container configuration from config.yaml.\n"
-"\n"
-"lxc config device add [<remote>:]container1 <device-name> disk source=/share/"
-"c1 path=opt\n"
-"    Will mount the host's /share/c1 onto /opt in the container.\n"
-"\n"
-"lxc config set [<remote>:]<container> limits.cpu 2\n"
-"    Will set a CPU limit of \"2\" for the container.\n"
-"\n"
-"lxc config set core.https_address [::]:8443\n"
-"    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
-"\n"
-"lxc config set core.trust_password blah\n"
-"    Will set the server's trust password to blah."
+#: lxc/storage_volume.go:1240 lxc/storage_volume.go:1241
+msgid "Unset storage volume configuration keys"
 msgstr ""
 
-#: lxc/console.go:31
-msgid ""
-"Usage: lxc console [<remote>:]<container> [-l]\n"
-"\n"
-"Interact with the container's console device and log."
+#: lxc/image.go:835
+#, c-format
+msgid "Uploaded: %s"
 msgstr ""
 
-#: lxc/copy.go:30
-msgid ""
-"Usage: lxc copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>] "
-"[--ephemeral|e] [--profile|-p <profile>...] [--config|-c <key=value>...] [--"
-"container-only] [--target <node>]\n"
-"\n"
-"Copy containers within or in between LXD instances."
+#: lxc/delete.go:47
+msgid "User aborted delete operation"
 msgstr ""
 
-#: lxc/delete.go:27
+#: lxc/utils/cancel.go:40
 msgid ""
-"Usage: lxc delete [<remote>:]<container>[/<snapshot>] "
-"[[<remote>:]<container>[/<snapshot>]...]\n"
-"\n"
-"Delete containers and snapshots."
+"User signaled us three times, exiting. The remote operation will keep "
+"running."
 msgstr ""
 
-#: lxc/exec.go:53
-msgid ""
-"Usage: lxc exec [<remote>:]<container> [-t] [-T] [-n] [--mode=auto|"
-"interactive|non-interactive] [--env KEY=VALUE...] [--] <command line>\n"
-"\n"
-"Execute commands in containers.\n"
-"\n"
-"The command is executed directly using exec, so there is no shell and shell "
-"patterns (variables, file redirects, ...)\n"
-"won't be understood. If you need a shell environment you need to execute the "
-"shell executable, passing the shell commands\n"
-"as arguments, for example:\n"
-"\n"
-"    lxc exec <container> -- sh -c \"cd /tmp && pwd\"\n"
-"\n"
-"Mode defaults to non-interactive, interactive mode is selected if both stdin "
-"AND stdout are terminals (stderr is ignored)."
+#: lxc/query.go:35
+msgid "Wait for the operation to complete"
 msgstr ""
 
-#: lxc/file.go:39
+#: lxc/restore.go:36
 msgid ""
-"Usage: lxc file <subcommand> [options]\n"
-"\n"
-"Manage files in containers.\n"
-"\n"
-"lxc file pull [-r|--recursive] [<remote>:]<container>/<path> "
-"[[<remote>:]<container>/<path>...] <target path>\n"
-"    Pull files from containers.\n"
-"\n"
-"lxc file push [-r|--recursive] [-p|--create-dirs] [--uid=UID] [--gid=GID] [--"
-"mode=MODE] <source path> [<source path>...] [<remote>:]<container>/<path>\n"
-"    Push files into containers.\n"
-"\n"
-"lxc file delete [<remote>:]<container>/<path> [[<remote>:]<container>/"
-"<path>...]\n"
-"    Delete files in containers.\n"
-"\n"
-"lxc file edit [<remote>:]<container>/<path>\n"
-"    Edit files in containers using the default text editor.\n"
-"\n"
-"*Examples*\n"
-"lxc file push /etc/hosts foo/etc/hosts\n"
-"   To push /etc/hosts into the container \"foo\".\n"
-"\n"
-"lxc file pull foo/etc/hosts .\n"
-"   To pull /etc/hosts from the container and write it to the current "
-"directory."
+"Whether or not to restore the container's running state from snapshot (if "
+"available)"
 msgstr ""
 
-#: lxc/finger.go:15
-msgid ""
-"Usage: lxc finger [<remote>:]\n"
-"\n"
-"Check if the LXD server is alive."
+#: lxc/snapshot.go:31
+msgid "Whether or not to snapshot the container's running state"
 msgstr ""
 
-#: lxc/help.go:22
-msgid ""
-"Usage: lxc help [--all]\n"
-"\n"
-"Help page for the LXD client."
+#: lxc/network.go:765 lxc/operation.go:140 lxc/remote.go:436 lxc/remote.go:441
+msgid "YES"
 msgstr ""
 
-#: lxc/image.go:73
-msgid ""
-"Usage: lxc image <subcommand> [options]\n"
-"\n"
-"Manipulate container images.\n"
-"\n"
-"In LXD containers are created from images. Those images were themselves\n"
-"either generated from an existing container or downloaded from an image\n"
-"server.\n"
-"\n"
-"When using remote images, LXD will automatically cache images for you\n"
-"and remove them upon expiration.\n"
-"\n"
-"The image unique identifier is the hash (sha-256) of its representation\n"
-"as a compressed tarball (or for split images, the concatenation of the\n"
-"metadata and rootfs tarballs).\n"
-"\n"
-"Images can be referenced by their full hash, shortest unique partial\n"
-"hash or alias name (if one is set).\n"
-"\n"
-"\n"
-"lxc image import <tarball>|<dir> [<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) or an image directory into the LXD "
-"image store.\n"
-"    Directory import is only available on Linux and must be performed as "
-"root.\n"
-"\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"
-"    Delete one or more images from the LXD image store.\n"
-"\n"
-"lxc image refresh [<remote>:]<image> [[<remote>:]<image>...]\n"
-"    Refresh one or more images from its parent remote.\n"
-"\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"
-"    The target may be an existing directory, file name, or \"-\" to specify\n"
-"    stdout.  The target MUST be a directory when exporting a split image.\n"
-"    If the target is a directory, the image's name (each part's name for\n"
-"    split images) as found in the database will be used for the exported\n"
-"    image.  If the target is a file (not a directory and not stdout), then\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"
-"    Print everything LXD knows about a given image.\n"
-"\n"
-"lxc image list [<remote>:] [filter] [--format csv|json|table|yaml] [-c "
-"<columns>]\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"
-"    The -c option takes a (optionally comma-separated) list of arguments "
-"that\n"
-"    control which image attributes to output when displaying in table or "
-"csv\n"
-"    format.\n"
-"\n"
-"    Default column layout is: lfpdasu\n"
-"\n"
-"    Column shorthand chars:\n"
-"\n"
-"        l - Shortest image alias (and optionally number of other aliases)\n"
-"\n"
-"        L - Newline-separated list of all image aliases\n"
-"\n"
-"        f - Fingerprint\n"
-"\n"
-"        p - Whether image is public\n"
-"\n"
-"        d - Description\n"
-"\n"
-"        a - Architecture\n"
-"\n"
-"        s - Size\n"
-"\n"
-"        u - Upload date\n"
-"\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"
-"    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"
-"    Create a new alias for an existing image.\n"
-"\n"
-"lxc image alias rename [<remote>:]<alias> <new-name>\n"
-"    Rename an alias.\n"
-"\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."
+#: lxc/exec.go:122
+msgid "You can't pass -t and -T at the same time"
 msgstr ""
 
-#: lxc/info.go:27
+#: lxc/exec.go:126
+msgid "You can't pass -t or -T at the same time as --mode"
+msgstr ""
+
+#: lxc/copy.go:78
+msgid "You must specify a destination container name when using --target"
+msgstr ""
+
+#: lxc/copy.go:73 lxc/move.go:188
+msgid "You must specify a source container name"
+msgstr ""
+
+#: lxc/copy.go:68 lxc/move.go:91 lxc/move.go:183
+msgid "You must use the same source and destination remote when using --target"
+msgstr ""
+
+#: lxc/alias.go:53
+msgid "add <alias> <target>"
+msgstr ""
+
+#: lxc/config_trust.go:57
+msgid "add [<remote>:] <cert>"
+msgstr ""
+
+#: lxc/profile.go:100
+msgid "add [<remote>:]<container> <profile>"
+msgstr ""
+
+#: lxc/config_device.go:74
+msgid "add [<remote>:]<container|profile> <device> <type> [key=value...]"
+msgstr ""
+
+#: lxc/remote.go:82
+msgid "add [<remote>] <IP|FQDN|URL>"
+msgstr ""
+
+#: lxc/alias.go:21 lxc/image_alias.go:24
+msgid "alias"
+msgstr ""
+
+#: lxc/profile.go:160
+msgid "assign [<remote>:]<container> <profiles>"
+msgstr ""
+
+#: lxc/network.go:102
+msgid "attach [<remote>:]<network> <container> [device name] [interface name]"
+msgstr ""
+
+#: lxc/storage_volume.go:120
+msgid "attach [<remote>:]<pool> <volume> <container> [device name] <path>"
+msgstr ""
+
+#: lxc/storage_volume.go:199
 msgid ""
-"Usage: lxc info [<remote>:][<container>] [--show-log] [--resources]\n"
-"\n"
-"Show container or server information.\n"
-"\n"
-"lxc info [<remote>:]<container> [--show-log]\n"
-"    For container information.\n"
-"\n"
-"lxc info [<remote>:] [--resources]\n"
-"    For LXD server information."
+"attach-profile [<remote:>]<pool> <volume> <profile> [device name] <path>"
 msgstr ""
 
-#: lxc/init.go:79
+#: lxc/network.go:175
 msgid ""
-"Usage: lxc init [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
-"profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
-"<node>]\n"
-"\n"
-"Create containers from images.\n"
-"\n"
-"Not specifying -p will result in the default profile.\n"
-"Specifying \"-p\" with no argument will result in no profile.\n"
-"\n"
-"Examples:\n"
-"    lxc init ubuntu:16.04 u1"
+"attach-profile [<remote>:]<network> <profile> [device name] [interface name]"
+msgstr ""
+
+#: lxc/cluster.go:24
+msgid "cluster"
+msgstr ""
+
+#: lxc/config.go:27
+msgid "config"
+msgstr ""
+
+#: lxc/console.go:30
+msgid "console [<remote>:]<container>"
+msgstr ""
+
+#: lxc/storage_volume.go:280
+msgid "copy <pool>/<volume> <pool>/<volume>"
+msgstr ""
+
+#: lxc/image.go:128
+msgid "copy [<remote>:]<image> <remote>:"
+msgstr ""
+
+#: lxc/profile.go:238
+msgid "copy [<remote>:]<profile> [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/copy.go:32
+msgid "copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>]"
+msgstr ""
+
+#: lxc/image_alias.go:57
+msgid "create [<remote>:]<alias> <fingerprint>"
+msgstr ""
+
+#: lxc/config_template.go:65
+msgid "create [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/network.go:248
+msgid "create [<remote>:]<network> [key=value...]"
+msgstr ""
+
+#: lxc/storage.go:87
+msgid "create [<remote>:]<pool> <driver> [key=value]..."
+msgstr ""
+
+#: lxc/storage_volume.go:424
+msgid "create [<remote>:]<pool> <volume> [key=value]..."
+msgstr ""
+
+#: lxc/profile.go:295
+msgid "create [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/remote.go:453
+msgid "default"
+msgstr ""
+
+#: lxc/image_alias.go:103
+msgid "delete [<remote>:]<alias>"
+msgstr ""
+
+#: lxc/config_template.go:107
+msgid "delete [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/file.go:70
+msgid "delete [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...]"
+msgstr ""
+
+#: lxc/delete.go:27
+msgid ""
+"delete [<remote>:]<container>[/<snapshot>] [[<remote>:]<container>[/"
+"<snapshot>]...]"
+msgstr ""
+
+#: lxc/image.go:258
+msgid "delete [<remote>:]<image> [[<remote>:]<image>...]"
+msgstr ""
+
+#: lxc/network.go:317
+msgid "delete [<remote>:]<network>"
+msgstr ""
+
+#: lxc/operation.go:51
+msgid "delete [<remote>:]<operation>"
+msgstr ""
+
+#: lxc/storage.go:158
+msgid "delete [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:498
+msgid "delete [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:345
+msgid "delete [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/storage.go:431
+msgid "description"
+msgstr ""
+
+#: lxc/network.go:365
+msgid "detach [<remote>:]<network> <container> [device name]"
+msgstr ""
+
+#: lxc/storage_volume.go:559
+msgid "detach [<remote>:]<pool> <volume> <container> [device name]"
+msgstr ""
+
+#: lxc/storage_volume.go:641
+msgid "detach-profile [<remote:>]<pool> <volume> <profile> [device name]"
+msgstr ""
+
+#: lxc/network.go:450
+msgid "detach-profile [<remote>:]<network> <container> [device name]"
+msgstr ""
+
+#: lxc/config_device.go:22
+msgid "device"
+msgstr ""
+
+#: lxc/init.go:223
+msgid "didn't get any affected image, container or snapshot from server"
+msgstr ""
+
+#: lxc/image.go:819
+msgid "disabled"
+msgstr ""
+
+#: lxc/storage.go:430
+msgid "driver"
+msgstr ""
+
+#: lxc/config_template.go:150
+msgid "edit [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/file.go:120
+msgid "edit [<remote>:]<container>/<path>"
+msgstr ""
+
+#: lxc/image.go:310
+msgid "edit [<remote>:]<image>"
+msgstr ""
+
+#: lxc/network.go:535
+msgid "edit [<remote>:]<network>"
+msgstr ""
+
+#: lxc/storage.go:206
+msgid "edit [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:722
+msgid "edit [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:394
+msgid "edit [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/config.go:86 lxc/config_metadata.go:52
+msgid "edit [<remote>:][container]"
+msgstr ""
+
+#: lxc/image.go:821
+msgid "enabled"
+msgstr ""
+
+#: lxc/action.go:234
+#, c-format
+msgid "error: %v"
+msgstr ""
+
+#: lxc/exec.go:37
+msgid "exec [<remote>:]<container> [flags] [--] <command line>"
+msgstr ""
+
+#: lxc/image.go:433
+msgid "export [<remote>:]<image> [target]"
+msgstr ""
+
+#: lxc/file.go:38
+msgid "file"
+msgstr ""
+
+#: lxc/config_device.go:177
+msgid "get [<remote>:]<container|profile> <device> <key>"
+msgstr ""
+
+#: lxc/network.go:658
+msgid "get [<remote>:]<network> <key>"
+msgstr ""
+
+#: lxc/storage.go:326
+msgid "get [<remote>:]<pool> <key>"
+msgstr ""
+
+#: lxc/storage_volume.go:851
+msgid "get [<remote>:]<pool> <volume> <key>"
+msgstr ""
+
+#: lxc/profile.go:518
+msgid "get [<remote>:]<profile> <key>"
+msgstr ""
+
+#: lxc/config.go:287
+msgid "get [<remote>:][container] <key>"
+msgstr ""
+
+#: lxc/remote.go:378
+msgid "get-default"
+msgstr ""
+
+#: lxc/image.go:40
+msgid "image"
+msgstr ""
+
+#: lxc/image.go:569
+msgid ""
+"import <tarball>|<directory>|<URL> [<rootfs tarball>] [<remote>:] "
+"[key=value...]"
+msgstr ""
+
+#: lxc/storage.go:428
+msgid "info"
+msgstr ""
+
+#: lxc/image.go:774
+msgid "info [<remote>:]<image>"
+msgstr ""
+
+#: lxc/storage.go:381
+msgid "info [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/info.go:27
+msgid "info [<remote>:][<container>]"
+msgstr ""
+
+#: lxc/init.go:33
+msgid "init [<remote>:]<image> [<remote>:][<name>]"
 msgstr ""
 
 #: lxc/launch.go:20
+msgid "launch [<remote>:]<image> [<remote>:][<name>]"
+msgstr ""
+
+#: lxc/alias.go:96 lxc/remote.go:411
+msgid "list"
+msgstr ""
+
+#: lxc/cluster.go:56 lxc/config_trust.go:112 lxc/network.go:716
+#: lxc/operation.go:95 lxc/profile.go:565 lxc/storage.go:488
+msgid "list [<remote>:]"
+msgstr ""
+
+#: lxc/image.go:887
+msgid "list [<remote>:] [filter]"
+msgstr ""
+
+#: lxc/image_alias.go:146
+msgid "list [<remote>:] [filters...]"
+msgstr ""
+
+#: lxc/list.go:45
+msgid "list [<remote>:] [filters]"
+msgstr ""
+
+#: lxc/config_template.go:234
+msgid "list [<remote>:]<container>"
+msgstr ""
+
+#: lxc/config_device.go:249
+msgid "list [<remote>:]<container|profile>"
+msgstr ""
+
+#: lxc/storage_volume.go:915
+msgid "list [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/network.go:806
+msgid "list-leases [<remote>:]<network>"
+msgstr ""
+
+#: lxc/alias.go:57
 msgid ""
-"Usage: lxc launch [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
-"profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
-"<node>]\n"
-"\n"
-"Create and start containers from images.\n"
-"\n"
-"Not specifying -p will result in the default profile.\n"
-"Specifying \"-p\" with no argument will result in no profile.\n"
-"\n"
-"Examples:\n"
-"    lxc launch ubuntu:16.04 u1"
+"lxc alias add list list -c ns46S\n"
+"    Overwrite the \"list\" command to pass -c ns46S."
 msgstr ""
 
-#: lxc/list.go:44
+#: lxc/alias.go:200
 msgid ""
-"Usage: lxc list [<remote>:] [filters] [--format csv|json|table|yaml] [-c "
-"<columns>] [--fast]\n"
-"\n"
-"List the existing containers.\n"
-"\n"
-"Default column layout: ns46tS\n"
-"Fast column layout: nsacPt\n"
-"\n"
-"*Filters*\n"
-"A single keyword like \"web\" which will list any container with a name "
-"starting by \"web\".\n"
-"\n"
-"A regular expression on the container name. (e.g. .*web.*01$).\n"
-"\n"
-"A key/value pair referring to a configuration item. For those, the namespace "
-"can be abbreviated to the smallest unambiguous identifier.\n"
-"\t- \"user.blah=abc\" will list all containers with the \"blah\" user "
-"property set to \"abc\".\n"
-"\n"
-"\t- \"u.blah=abc\" will do the same\n"
-"\n"
-"\t- \"security.privileged=true\" will list all privileged containers\n"
-"\n"
-"\t- \"s.privileged=true\" will do the same\n"
-"\n"
-"A regular expression matching a configuration item or its value. (e.g. "
-"volatile.eth0.hwaddr=00:16:3e:.*).\n"
-"\n"
-"*Columns*\n"
-"The -c option takes a comma separated list of arguments that control\n"
-"which container attributes to output when displaying in table or csv\n"
-"format.\n"
-"\n"
-"Column arguments are either pre-defined shorthand chars (see below),\n"
-"or (extended) config keys.\n"
-"\n"
-"Commas between consecutive shorthand chars are optional.\n"
-"\n"
-"Pre-defined column shorthand chars:\n"
-"\n"
-"\t4 - IPv4 address\n"
-"\n"
-"\t6 - IPv6 address\n"
-"\n"
-"\ta - Architecture\n"
-"\n"
-"\tb - Storage pool\n"
-"\n"
-"\tc - Creation date\n"
-"\n"
-"\td - Description\n"
-"\n"
-"\tl - Last used date\n"
-"\n"
-"\tn - Name\n"
-"\n"
-"\tN - Number of Processes\n"
-"\n"
-"\tp - PID of the container's init process\n"
-"\n"
-"\tP - Profiles\n"
-"\n"
-"\ts - State\n"
-"\n"
-"\tS - Number of snapshots\n"
-"\n"
-"\tt - Type (persistent or ephemeral)\n"
-"\n"
-"\tL - Location of the container (e.g. its node)\n"
-"\n"
-"Custom columns are defined with \"key[:name][:maxWidth]\":\n"
-"\n"
-"\tKEY: The (extended) config key to display\n"
-"\n"
-"\tNAME: Name to display in the column header.\n"
-"\tDefaults to the key if not specified or empty.\n"
-"\n"
-"\tMAXWIDTH: Max width of the column (longer results are truncated).\n"
-"\tDefaults to -1 (unlimited). Use 0 to limit to the column header size.\n"
-"\n"
-"*Examples*\n"
-"lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:"
-"MAC\n"
-"\tShows a list of containers using the \"NAME\", \"BASE IMAGE\", \"STATE\", "
-"\"IPV4\",\n"
-"\t\"IPV6\" and \"MAC\" columns.\n"
+"lxc alias remove my-list\n"
+"    Remove the \"my-list\" alias."
+msgstr ""
+
+#: lxc/alias.go:149
+msgid ""
+"lxc alias rename list my-list\n"
+"    Rename existing alias \"list\" to \"my-list\"."
+msgstr ""
+
+#: lxc/config_device.go:78
+msgid ""
+"lxc config device add [<remote>:]container1 <device-name> disk source=/share/"
+"c1 path=opt\n"
+"    Will mount the host's /share/c1 onto /opt in the container."
+msgstr ""
+
+#: lxc/config.go:90
+msgid ""
+"lxc config edit <container> < container.yaml\n"
+"    Update the container configuration from config.yaml."
+msgstr ""
+
+#: lxc/config.go:357
+msgid ""
+"lxc config set [<remote>:]<container> limits.cpu 2\n"
+"    Will set a CPU limit of \"2\" for the container.\n"
 "\n"
-"\t\"BASE IMAGE\" and \"MAC\" are custom columns generated from container "
-"configuration keys.\n"
+"lxc config set core.https_address [::]:8443\n"
+"    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
 "\n"
-"lxc list -c ns,user.comment:comment\n"
-"\tList images with their running state and user comment. "
+"lxc config set core.trust_password blah\n"
+"    Will set the server's trust password to blah."
 msgstr ""
 
-#: lxc/manpage.go:20
+#: lxc/file.go:187
 msgid ""
-"Usage: lxc manpage <directory>\n"
-"\n"
-"Generate all the LXD manpages."
+"lxc file pull foo/etc/hosts .\n"
+"   To pull /etc/hosts from the container and write it to the current "
+"directory."
 msgstr ""
 
-#: lxc/monitor.go:49
+#: lxc/file.go:326
 msgid ""
-"Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
-"\n"
-"Monitor a local or remote LXD server.\n"
+"lxc file push /etc/hosts foo/etc/hosts\n"
+"   To push /etc/hosts into the container \"foo\"."
+msgstr ""
+
+#: lxc/image.go:314
+msgid ""
+"lxc image edit <image>\n"
+"    Launch a text editor to edit the properties\n"
 "\n"
-"By default the monitor will listen to all message types.\n"
+"lxc image edit <image> < image.yaml\n"
+"    Load the image properties from a YAML file"
+msgstr ""
+
+#: lxc/info.go:31
+msgid ""
+"lxc info [<remote>:]<container> [--show-log]\n"
+"    For container information.\n"
 "\n"
-"Message types to listen for can be specified with --type.\n"
+"lxc info [<remote>:] [--resources]\n"
+"    For LXD server information."
+msgstr ""
+
+#: lxc/init.go:37
+msgid "lxc init ubuntu:16.04 u1"
+msgstr ""
+
+#: lxc/launch.go:24
+msgid "lxc launch ubuntu:16.04 u1"
+msgstr ""
+
+#: lxc/list.go:103
+msgid ""
+"lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:"
+"MAC\n"
+"  Show containers using the \"NAME\", \"BASE IMAGE\", \"STATE\", \"IPV4\", "
+"\"IPV6\" and \"MAC\" columns.\n"
+"  \"BASE IMAGE\" and \"MAC\" are custom columns generated from container "
+"configuration keys.\n"
 "\n"
-"*Examples*\n"
+"lxc list -c ns,user.comment:comment\n"
+"  List images with their running state and user comment."
+msgstr ""
+
+#: lxc/monitor.go:35
+msgid ""
 "lxc monitor --type=logging\n"
 "    Only show log messages.\n"
 "\n"
 "lxc monitor --pretty --type=logging --loglevel=info\n"
 "    Show a pretty log of messages with info level or higher.\n"
+"\n"
+"lxc monitor --type=lifecycle\n"
+"    Only show lifecycle events."
 msgstr ""
 
-#: lxc/move.go:26
+#: lxc/move.go:33
 msgid ""
-"Usage: lxc move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
-"<snapshot>]] [--container-only] [--target <node>]\n"
-"\n"
-"Move containers within or in between LXD instances.\n"
-"\n"
 "lxc move [<remote>:]<source container> [<remote>:][<destination container>] "
 "[--container-only]\n"
 "    Move a container between two hosts, renaming it if destination name "
@@ -1946,160 +2837,14 @@ msgid ""
 "    Rename a snapshot."
 msgstr ""
 
-#: lxc/network.go:52
-msgid ""
-"Usage: lxc network <subcommand> [options]\n"
-"\n"
-"Manage and attach containers to networks.\n"
-"\n"
-"lxc network list [<remote>:]\n"
-"    List available networks.\n"
-"\n"
-"lxc network list-leases [<remote>:]<network>\n"
-"    List the DHCP leases for the network\n"
-"\n"
-"lxc network show [<remote>:]<network> [--target <node>]\n"
-"    Show details of a network.\n"
-"\n"
-"lxc network create [<remote>:]<network> [key=value...] [--target <node>]\n"
-"    Create a network.\n"
-"\n"
-"lxc network get [<remote>:]<network> <key> [--target <node>]\n"
-"    Get network configuration.\n"
-"\n"
-"lxc network set [<remote>:]<network> <key> <value>\n"
-"    Set network configuration.\n"
-"\n"
-"lxc network unset [<remote>:]<network> <key>\n"
-"    Unset network configuration.\n"
-"\n"
-"lxc network delete [<remote>:]<network>\n"
-"    Delete a network.\n"
-"\n"
-"lxc network edit [<remote>:]<network>\n"
-"    Edit network, either by launching external editor or reading STDIN.\n"
-"\n"
-"lxc network rename [<remote>:]<network> <new-name>\n"
-"    Rename a network.\n"
-"\n"
-"lxc network attach [<remote>:]<network> <container> [device name] [interface "
-"name]\n"
-"    Attach a network interface connecting the network to a specified "
-"container.\n"
-"\n"
-"lxc network attach-profile [<remote>:]<network> <profile> [device name] "
-"[interface name]\n"
-"    Attach a network interface connecting the network to a specified "
-"profile.\n"
-"\n"
-"lxc network detach [<remote>:]<network> <container> [device name]\n"
-"    Remove a network interface connecting the network to a specified "
-"container.\n"
-"\n"
-"lxc network detach-profile [<remote>:]<network> <container> [device name]\n"
-"    Remove a network interface connecting the network to a specified "
-"profile.\n"
-"\n"
-"*Examples*\n"
-"cat network.yaml | lxc network edit <network>\n"
-"    Update a network using the content of network.yaml"
-msgstr ""
-
-#: lxc/operation.go:25
+#: lxc/operation.go:176
 msgid ""
-"Usage: lxc operation <subcommand> [options]\n"
-"\n"
-"List, show and delete background operations.\n"
-"\n"
-"lxc operation list [<remote>:]\n"
-"    List background operations.\n"
-"\n"
-"lxc operation show [<remote>:]<operation>\n"
-"    Show details on a background operation.\n"
-"\n"
-"lxc operation delete [<remote>:]<operation>\n"
-"    Delete a background operation (will attempt to cancel).\n"
-"\n"
-"*Examples*\n"
 "lxc operation show 344a79e4-d88a-45bf-9c39-c72c26f6ab8a\n"
 "    Show details on that operation UUID"
 msgstr ""
 
-#: lxc/profile.go:51
+#: lxc/profile.go:165
 msgid ""
-"Usage: lxc profile <subcommand> [options]\n"
-"\n"
-"Manage container configuration profiles.\n"
-"\n"
-"*Profile configuration*\n"
-"lxc profile list [<remote>:]\n"
-"    List available profiles.\n"
-"\n"
-"lxc profile show [<remote>:]<profile>\n"
-"    Show details of a profile.\n"
-"\n"
-"lxc profile create [<remote>:]<profile>\n"
-"    Create a profile.\n"
-"\n"
-"lxc profile copy [<remote>:]<profile> [<remote>:]<profile>\n"
-"    Copy the profile.\n"
-"\n"
-"lxc profile get [<remote>:]<profile> <key>\n"
-"    Get profile configuration.\n"
-"\n"
-"lxc profile set [<remote>:]<profile> <key> <value>\n"
-"    Set profile configuration.\n"
-"\n"
-"lxc profile unset [<remote>:]<profile> <key>\n"
-"    Unset profile configuration.\n"
-"\n"
-"lxc profile delete [<remote>:]<profile>\n"
-"    Delete a profile.\n"
-"\n"
-"lxc profile edit [<remote>:]<profile>\n"
-"    Edit profile, either by launching external editor or reading STDIN.\n"
-"\n"
-"lxc profile rename [<remote>:]<profile> <new-name>\n"
-"    Rename a profile.\n"
-"\n"
-"*Profile assignment*\n"
-"lxc profile assign [<remote>:]<container> <profiles>\n"
-"    Replace the current set of profiles for the container by the one "
-"provided.\n"
-"\n"
-"lxc profile add [<remote>:]<container> <profile>\n"
-"    Add a profile to a container\n"
-"\n"
-"lxc profile remove [<remote>:]<container> <profile>\n"
-"    Remove the profile from a container\n"
-"\n"
-"*Device management*\n"
-"lxc profile device list [<remote>:]<profile>\n"
-"    List devices in the given profile.\n"
-"\n"
-"lxc profile device show [<remote>:]<profile>\n"
-"    Show full device details in the given profile.\n"
-"\n"
-"lxc profile device remove [<remote>:]<profile> <name>\n"
-"    Remove a device from a profile.\n"
-"\n"
-"lxc profile device get [<remote>:]<profile> <name> <key>\n"
-"    Get a device property.\n"
-"\n"
-"lxc profile device set [<remote>:]<profile> <name> <key> <value>\n"
-"    Set a device property.\n"
-"\n"
-"lxc profile device unset [<remote>:]<profile> <name> <key>\n"
-"    Unset a device property.\n"
-"\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.\n"
-"\n"
-"*Examples*\n"
-"cat profile.yaml | lxc profile edit <profile>\n"
-"    Update a profile using the content of profile.yaml\n"
-"\n"
 "lxc profile assign foo default,bar\n"
 "    Set the profiles for \"foo\" to \"default\" and \"bar\".\n"
 "\n"
@@ -2110,72 +2855,26 @@ msgid ""
 "    Remove all profile from \"foo\""
 msgstr ""
 
-#: lxc/publish.go:28
+#: lxc/profile.go:398
 msgid ""
-"Usage: lxc publish [<remote>:]<container>[/<snapshot>] [<remote>:] [--"
-"alias=ALIAS...] [prop-key=prop-value...]\n"
-"\n"
-"Publish containers as images."
+"lxc profile edit <profile> < profile.yaml\n"
+"    Update a profile using the content of profile.yaml"
 msgstr ""
 
-#: lxc/query.go:25
+#: lxc/query.go:29
 msgid ""
-"Usage: lxc query [-X <action>] [-d <data>] [--wait] [--raw] [<remote>:]<API "
-"path>\n"
-"\n"
-"Send a raw query to LXD.\n"
-"\n"
-"*Examples*\n"
 "lxc query -X DELETE --wait /1.0/containers/c1\n"
 "    Delete local container \"c1\"."
 msgstr ""
 
-#: lxc/remote.go:40
-msgid ""
-"Usage: lxc remote <subcommand> [options]\n"
-"\n"
-"Manage the list of remote LXD servers.\n"
-"\n"
-"lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--"
-"password=PASSWORD] [--public] [--protocol=PROTOCOL] [--auth-type=AUTH_TYPE]\n"
-"    Add the remote <remote> at <url>.\n"
-"\n"
-"lxc remote remove <remote>\n"
-"    Remove the remote <remote>.\n"
-"\n"
-"lxc remote list\n"
-"    List all remotes.\n"
-"\n"
-"lxc remote rename <old name> <new name>\n"
-"    Rename remote <old name> to <new name>.\n"
-"\n"
-"lxc remote set-url <remote> <url>\n"
-"    Update <remote>'s url to <url>.\n"
-"\n"
-"lxc remote set-default <remote>\n"
-"    Set the default remote.\n"
-"\n"
-"lxc remote get-default\n"
-"    Print the default remote."
-msgstr ""
-
-#: lxc/rename.go:18
+#: lxc/snapshot.go:26
 msgid ""
-"Usage: lxc rename [<remote>:]<container>[/<snapshot>] [<container>[/"
-"<snapshot>]]\n"
-"\n"
-"Rename a container or snapshot."
+"lxc snapshot u1 snap0\n"
+"    Create a snapshot of \"u1\" called \"snap0\"."
 msgstr ""
 
-#: lxc/restore.go:22
+#: lxc/restore.go:28
 msgid ""
-"Usage: lxc restore [<remote>:]<container> <snapshot> [--stateful]\n"
-"\n"
-"Restore containers from snapshots.\n"
-"\n"
-"If --stateful is passed, then the running state will be restored too.\n"
-"\n"
-"*Examples*\n"
 "lxc snapshot u1 snap0\n"
 "    Create the snapshot.\n"
 "\n"
@@ -2183,121 +2882,20 @@ msgid ""
 "    Restore the snapshot."
 msgstr ""
 
-#: lxc/snapshot.go:19
+#: lxc/storage.go:210
 msgid ""
-"Usage: lxc snapshot [<remote>:]<container> <snapshot name> [--stateful]\n"
-"\n"
-"Create container snapshots.\n"
-"\n"
-"When --stateful is used, LXD attempts to checkpoint the container's\n"
-"running state, including process memory state, TCP connections, ...\n"
-"\n"
-"*Examples*\n"
-"lxc snapshot u1 snap0\n"
-"    Create a snapshot of \"u1\" called \"snap0\"."
+"lxc storage edit [<remote>:]<pool> < pool.yaml\n"
+"    Update a storage pool using the content of pool.yaml."
 msgstr ""
 
-#: lxc/storage.go:67
+#: lxc/storage_volume.go:726
+msgid ""
+"lxc storage volume edit [<remote>:]<pool> <volume> < volume.yaml\n"
+"    Update a storage volume using the content of pool.yaml."
+msgstr ""
+
+#: lxc/storage_volume.go:1168
 msgid ""
-"Usage: lxc storage <subcommand> [options]\n"
-"\n"
-"Manage storage pools and volumes.\n"
-"\n"
-"*Storage pools*\n"
-"lxc storage list [<remote>:]\n"
-"    List available storage pools.\n"
-"\n"
-"lxc storage show [<remote>:]<pool> [--resources] [--target <node>]\n"
-"    Show details of a storage pool.\n"
-"\n"
-"lxc storage info [<remote>:]<pool> [--bytes]\n"
-"    Show information of a storage pool in yaml format.\n"
-"\n"
-"lxc storage create [<remote>:]<pool> <driver> [key=value]... [--target "
-"<node>]\n"
-"    Create a storage pool.\n"
-"\n"
-"lxc storage get [<remote>:]<pool> <key>\n"
-"    Get storage pool configuration.\n"
-"\n"
-"lxc storage set [<remote>:]<pool> <key> <value>\n"
-"    Set storage pool configuration.\n"
-"\n"
-"lxc storage unset [<remote>:]<pool> <key>\n"
-"    Unset storage pool configuration.\n"
-"\n"
-"lxc storage delete [<remote>:]<pool>\n"
-"    Delete a storage pool.\n"
-"\n"
-"lxc storage edit [<remote>:]<pool>\n"
-"    Edit storage pool, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"*Storage volumes*\n"
-"lxc storage volume list [<remote>:]<pool>\n"
-"    List available storage volumes on a storage pool.\n"
-"\n"
-"lxc storage volume show [<remote>:]<pool> <volume> [--target <node>]\n"
-"   Show details of a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume create [<remote>:]<pool> <volume> [key=value]... [--"
-"target <node>]\n"
-"    Create a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume rename [<remote>:]<pool> <old name> <new name> [--target "
-"<node>]\n"
-"    Rename a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume get [<remote>:]<pool> <volume> <key> [--target <node>]\n"
-"    Get storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume set [<remote>:]<pool> <volume> <key> <value> [--target "
-"<node>]\n"
-"    Set storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume unset [<remote>:]<pool> <volume> <key> [--target <node>]\n"
-"    Unset storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume delete [<remote>:]<pool> <volume> [--target <node>]\n"
-"    Delete a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume edit [<remote>:]<pool> <volume> [--target <node>]\n"
-"    Edit storage volume, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"lxc storage volume attach [<remote>:]<pool> <volume> <container> [device "
-"name] <path>\n"
-"    Attach a storage volume to the specified container.\n"
-"\n"
-"lxc storage volume attach-profile [<remote:>]<pool> <volume> <profile> "
-"[device name] <path>\n"
-"    Attach a storage volume to the specified profile.\n"
-"\n"
-"lxc storage volume detach [<remote>:]<pool> <volume> <container> [device "
-"name]\n"
-"    Detach a storage volume from the specified container.\n"
-"\n"
-"lxc storage volume detach-profile [<remote:>]<pool> <volume> <profile> "
-"[device name]\n"
-"\tDetach a storage volume from the specified profile.\n"
-"\n"
-"lxc storage volume copy <pool>/<volume> <pool>/<volume> [--config|-c "
-"<key=value>...]\n"
-"    Copy an existing volume to a new volume at the specified pool.\n"
-"\n"
-"lxc storage volume move [<pool>/]<volume> [<pool>/]<volume>\n"
-"    Move an existing volume to the specified pool.\n"
-"\n"
-"Unless specified through a prefix, all volume operations affect \"custom"
-"\" (user created) volumes.\n"
-"\n"
-"*Examples*\n"
-"cat pool.yaml | lxc storage edit [<remote>:]<pool>\n"
-"    Update a storage pool using the content of pool.yaml.\n"
-"\n"
-"cat pool.yaml | lxc storage volume edit [<remote>:]<pool> <volume>\n"
-"    Update a storage volume using the content of pool.yaml.\n"
-"\n"
 "lxc storage volume show default data\n"
 "    Will show the properties of a custom volume called \"data\" in the "
 "\"default\" pool.\n"
@@ -2307,191 +2905,303 @@ msgid ""
 "\" in the \"default\" pool."
 msgstr ""
 
-#: lxc/version.go:18
+#: lxc/config_metadata.go:27
+msgid "metadata"
+msgstr ""
+
+#: lxc/monitor.go:29
+msgid "monitor [<remote>:]"
+msgstr ""
+
+#: lxc/storage_volume.go:991
+msgid "move [<pool>/]<volume> [<pool>/]<volume>"
+msgstr ""
+
+#: lxc/move.go:28
 msgid ""
-"Usage: lxc version\n"
-"\n"
-"Print the version number of this client tool."
+"move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
+"<snapshot>]]"
 msgstr ""
 
-#: lxc/delete.go:46
-msgid "User aborted delete operation."
+#: lxc/storage.go:429
+msgid "name"
 msgstr ""
 
-#: lxc/utils/cancel.go:40
+#: lxc/network.go:30
+msgid "network"
+msgstr ""
+
+#: lxc/image.go:809 lxc/image.go:814 lxc/image.go:977
+msgid "no"
+msgstr ""
+
+#: lxc/remote.go:253
+msgid "ok (y/n)?"
+msgstr ""
+
+#: lxc/operation.go:23
+msgid "operation"
+msgstr ""
+
+#: lxc/config_device.go:316
+msgid "override [<remote>:]<container> <device> [key=value...]"
+msgstr ""
+
+#: lxc/action.go:47
+msgid "pause [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/config.go:52
+msgid "please use `lxc profile`"
+msgstr ""
+
+#: lxc/profile.go:28
+msgid "profile"
+msgstr ""
+
+#: lxc/publish.go:32
 msgid ""
-"User signaled us three times, exiting. The remote operation will keep "
-"running."
+"publish [<remote>:]<container>[/<snapshot>] [<remote>:] [flags] [prop-"
+"key=prop-value...]"
 msgstr ""
 
-#: lxc/query.go:36
-msgid "Wait for the operation to complete"
+#: lxc/file.go:183
+msgid ""
+"pull [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...] "
+"<target path>"
 msgstr ""
 
-#: lxc/restore.go:38
+#: lxc/file.go:322
 msgid ""
-"Whether or not to restore the container's running state from snapshot (if "
-"available)"
+"push <source path> [<remote>:]<container>/<path> [[<remote>:]<container>/"
+"<path>...]"
 msgstr ""
 
-#: lxc/snapshot.go:33
-msgid "Whether or not to snapshot the container's running state"
+#: lxc/query.go:25
+msgid "query [<remote>:]<API path>"
 msgstr ""
 
-#: lxc/network.go:560 lxc/operation.go:141 lxc/remote.go:382 lxc/remote.go:387
-msgid "YES"
+#: lxc/image.go:1210
+msgid "refresh [<remote>:]<image> [[<remote>:]<image>...]"
 msgstr ""
 
-#: lxc/exec.go:132
-msgid "You can't pass -t and -T at the same time"
+#: lxc/remote.go:32
+msgid "remote"
 msgstr ""
 
-#: lxc/exec.go:136
-msgid "You can't pass -t or -T at the same time as --mode"
+#: lxc/alias.go:195
+msgid "remove <alias>"
 msgstr ""
 
-#: lxc/copy.go:76
-msgid "You must specify a destination container name when using --target"
+#: lxc/remote.go:546
+msgid "remove <remote>"
 msgstr ""
 
-#: lxc/copy.go:71
-msgid "You must specify a source container name"
+#: lxc/config_trust.go:194
+msgid "remove [<remote>:] <hostname|fingerprint>"
 msgstr ""
 
-#: lxc/copy.go:66 lxc/move.go:71
-msgid "You must use the same source and destination remote when using --target"
+#: lxc/profile.go:630
+msgid "remove [<remote>:]<container> <profile>"
 msgstr ""
 
-#: lxc/main.go:72
-msgid "`lxc config profile` is deprecated, please use `lxc profile`"
+#: lxc/config_device.go:402
+msgid "remove [<remote>:]<container|profile> <name>..."
 msgstr ""
 
-#: lxc/alias.go:56 lxc/alias.go:102
-#, c-format
-msgid "alias %s already exists"
+#: lxc/cluster.go:235
+msgid "remove [<remote>:]<member>"
 msgstr ""
 
-#: lxc/alias.go:68 lxc/alias.go:97
-#, c-format
-msgid "alias %s doesn't exist"
+#: lxc/alias.go:144
+msgid "rename <old alias> <new alias>"
 msgstr ""
 
-#: lxc/remote.go:370
-msgid "can't remove the default remote"
+#: lxc/remote.go:484
+msgid "rename <remote> <new-name>"
 msgstr ""
 
-#: lxc/file.go:296
-msgid "can't supply uid/gid/mode in recursive mode"
+#: lxc/image_alias.go:247
+msgid "rename [<remote>:]<alias> <new-name>"
 msgstr ""
 
-#: lxc/remote.go:399
-msgid "default"
+#: lxc/rename.go:18
+msgid "rename [<remote>:]<container>[/<snapshot>] <container>[/<snapshot>]"
 msgstr ""
 
-#: lxc/storage.go:856
-msgid "description"
+#: lxc/cluster.go:189
+msgid "rename [<remote>:]<member> <new-name>"
 msgstr ""
 
-#: lxc/init.go:315
-msgid "didn't get any affected image, container or snapshot from server"
+#: lxc/network.go:870
+msgid "rename [<remote>:]<network> <new-name>"
 msgstr ""
 
-#: lxc/image.go:594
-msgid "disabled"
+#: lxc/storage_volume.go:1023
+msgid "rename [<remote>:]<pool> <old name> <new name>"
 msgstr ""
 
-#: lxc/storage.go:855
-msgid "driver"
+#: lxc/profile.go:702
+msgid "rename [<remote>:]<profile> <new-name>"
 msgstr ""
 
-#: lxc/image.go:596
-msgid "enabled"
+#: lxc/action.go:67
+msgid "restart [<remote>:]<container> [[<remote>:]<container>...]"
 msgstr ""
 
-#: lxc/action.go:155 lxc/main.go:33 lxc/main.go:191
-#, c-format
-msgid "error: %v"
+#: lxc/restore.go:22
+msgid "restore [<remote>:]<container> <snapshot>"
 msgstr ""
 
-#: lxc/help.go:37 lxc/main.go:133
-#, c-format
-msgid "error: unknown command: %s"
+#: lxc/config_device.go:491
+msgid "set [<remote>:]<container|profile> <device> <key> <value>"
 msgstr ""
 
-#: lxc/storage.go:853
-msgid "info"
+#: lxc/network.go:918
+msgid "set [<remote>:]<network> <key> <value>"
 msgstr ""
 
-#: lxc/storage.go:854
-msgid "name"
+#: lxc/storage.go:571
+msgid "set [<remote>:]<pool> <key> <value>"
 msgstr ""
 
-#: lxc/image.go:210 lxc/image.go:584 lxc/image.go:589
-msgid "no"
+#: lxc/storage_volume.go:1087
+msgid "set [<remote>:]<pool> <volume> <key> <value>"
 msgstr ""
 
-#: lxc/remote.go:204
-msgid "ok (y/n)?"
+#: lxc/profile.go:751
+msgid "set [<remote>:]<profile> <key> <value>"
 msgstr ""
 
-#: lxc/main.go:368 lxc/main.go:372
-#, c-format
-msgid "processing aliases failed %s\n"
+#: lxc/config.go:353
+msgid "set [<remote>:][container] <key> <value>"
 msgstr ""
 
-#: lxc/file.go:588
-msgid "recursive edit doesn't make sense :("
+#: lxc/remote.go:596
+msgid "set-default <remote>"
 msgstr ""
 
-#: lxc/remote.go:436
-#, c-format
-msgid "remote %s already exists"
+#: lxc/remote.go:634
+msgid "set-url <remote> <URL>"
 msgstr ""
 
-#: lxc/remote.go:362 lxc/remote.go:428 lxc/remote.go:463 lxc/remote.go:479
-#, c-format
-msgid "remote %s doesn't exist"
+#: lxc/config_template.go:296
+msgid "show [<remote>:]<container> <template>"
 msgstr ""
 
-#: lxc/remote.go:345
-#, c-format
-msgid "remote %s exists as <%s>"
+#: lxc/config_device.go:580
+msgid "show [<remote>:]<container|profile>"
 msgstr ""
 
-#: lxc/remote.go:366 lxc/remote.go:432 lxc/remote.go:467
-#, c-format
-msgid "remote %s is static and cannot be modified"
+#: lxc/image.go:1283
+msgid "show [<remote>:]<image>"
+msgstr ""
+
+#: lxc/cluster.go:140
+msgid "show [<remote>:]<member>"
+msgstr ""
+
+#: lxc/network.go:987
+msgid "show [<remote>:]<network>"
+msgstr ""
+
+#: lxc/operation.go:172
+msgid "show [<remote>:]<operation>"
+msgstr ""
+
+#: lxc/storage.go:643
+msgid "show [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:1164
+msgid "show [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:810
+msgid "show [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/config.go:450 lxc/config_metadata.go:174
+msgid "show [<remote>:][container]"
+msgstr ""
+
+#: lxc/snapshot.go:19
+msgid "snapshot [<remote>:]<container> <snapshot name>"
 msgstr ""
 
-#: lxc/storage.go:858
+#: lxc/storage.go:433
 msgid "space used"
 msgstr ""
 
-#: lxc/info.go:251
+#: lxc/action.go:28
+msgid "start [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/info.go:255
 msgid "stateful"
 msgstr ""
 
-#: lxc/info.go:253
+#: lxc/info.go:257
 msgid "stateless"
 msgstr ""
 
-#: lxc/info.go:247
+#: lxc/action.go:89
+msgid "stop [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/storage.go:31
+msgid "storage"
+msgstr ""
+
+#: lxc/info.go:251
 #, c-format
 msgid "taken at %s"
 msgstr ""
 
-#: lxc/storage.go:857
+#: lxc/config_template.go:28
+msgid "template"
+msgstr ""
+
+#: lxc/storage.go:432
 msgid "total space"
 msgstr ""
 
-#: lxc/storage.go:852
+#: lxc/config_trust.go:28
+msgid "trust"
+msgstr ""
+
+#: lxc/config_device.go:648
+msgid "unset [<remote>:]<container|profile> <device> <key>"
+msgstr ""
+
+#: lxc/network.go:1049
+msgid "unset [<remote>:]<network> <key>"
+msgstr ""
+
+#: lxc/storage.go:727
+msgid "unset [<remote>:]<pool> <key>"
+msgstr ""
+
+#: lxc/storage_volume.go:1239
+msgid "unset [<remote>:]<pool> <volume> <key>"
+msgstr ""
+
+#: lxc/profile.go:864
+msgid "unset [<remote>:]<profile> <key>"
+msgstr ""
+
+#: lxc/config.go:558
+msgid "unset [<remote>:][container] <key>"
+msgstr ""
+
+#: lxc/storage.go:427
 msgid "used by"
 msgstr ""
 
-#: lxc/main.go:299
-msgid "wrong number of subcommand arguments"
+#: lxc/storage_volume.go:32
+msgid "volume"
 msgstr ""
 
-#: lxc/delete.go:45 lxc/image.go:208 lxc/image.go:586 lxc/image.go:591
+#: lxc/delete.go:46 lxc/image.go:811 lxc/image.go:816 lxc/image.go:975
 msgid "yes"
 msgstr ""
diff --git a/po/it.po b/po/it.po
index 5f9107718..43e5b0fea 100644
--- a/po/it.po
+++ b/po/it.po
@@ -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: 2018-02-27 22:14-0500\n"
+"POT-Creation-Date: 2018-03-29 01:45-0400\n"
 "PO-Revision-Date: 2017-08-18 14:22+0000\n"
 "Last-Translator: Alberto Donato <alberto.donato at gmail.com>\n"
 "Language-Team: Italian <https://hosted.weblate.org/projects/linux-containers/"
@@ -19,7 +19,7 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
 "X-Generator: Weblate 2.17-dev\n"
 
-#: lxc/storage.go:36
+#: lxc/storage.go:220
 #, fuzzy
 msgid ""
 "### This is a yaml representation of a storage pool.\n"
@@ -51,7 +51,7 @@ msgstr ""
 "###   source: /home/chb/mnt/lxd_test/default.img\n"
 "###   zfs.pool_name: default"
 
-#: lxc/storage.go:53
+#: lxc/storage_volume.go:737
 msgid ""
 "### This is a yaml representation of a storage volume.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -65,7 +65,7 @@ msgid ""
 "###   size: \"61203283968\""
 msgstr ""
 
-#: lxc/config.go:40
+#: lxc/config.go:100
 msgid ""
 "### This is a yaml representation of the configuration.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -86,7 +86,7 @@ msgid ""
 "### Note that the name is shown but cannot be changed"
 msgstr ""
 
-#: lxc/config.go:61
+#: lxc/config_metadata.go:63
 msgid ""
 "### This is a yaml representation of the container metadata.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -110,7 +110,7 @@ msgid ""
 "###     properties: {}"
 msgstr ""
 
-#: lxc/image.go:63
+#: lxc/image.go:327
 msgid ""
 "### This is a yaml representation of the image properties.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -127,7 +127,7 @@ msgstr ""
 "### Un esempio è il seguente:\n"
 "###  description: My custom image"
 
-#: lxc/network.go:32
+#: lxc/network.go:546
 msgid ""
 "### This is a yaml representation of the network.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -147,7 +147,7 @@ msgid ""
 "### Note that only the configuration can be changed."
 msgstr ""
 
-#: lxc/profile.go:30
+#: lxc/profile.go:408
 msgid ""
 "### This is a yaml representation of the profile.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -168,12 +168,12 @@ msgid ""
 "### Note that the name is shown but cannot be changed"
 msgstr ""
 
-#: lxc/image.go:187
+#: lxc/image.go:954
 #, c-format
 msgid "%s (%d more)"
 msgstr "%s (altri %d)"
 
-#: lxc/file.go:205
+#: lxc/file.go:677
 #, c-format
 msgid "%s is not a directory"
 msgstr ""
@@ -183,879 +183,1624 @@ msgstr ""
 msgid "%v (interrupt two more times to force)"
 msgstr "%v (interrompi altre due volte per forzare)"
 
-#: lxc/file.go:142
+#: lxc/file.go:614
 #, c-format
 msgid "'%s' isn't a supported file type."
 msgstr "'%s' non è un tipo di file supportato."
 
-#: lxc/profile.go:337
+#: lxc/profile.go:222
 msgid "(none)"
 msgstr "(nessuno)"
 
-#: lxc/alias.go:84 lxc/image.go:231 lxc/image.go:1136
+#: lxc/alias.go:127 lxc/image.go:921 lxc/image_alias.go:228
 msgid "ALIAS"
 msgstr "ALIAS"
 
-#: lxc/image.go:232
+#: lxc/image.go:922
 msgid "ALIASES"
 msgstr "ALIAS"
 
-#: lxc/image.go:236
+#: lxc/image.go:926
 msgid "ARCH"
 msgstr "ARCH"
 
-#: lxc/list.go:467
+#: lxc/list.go:464
 msgid "ARCHITECTURE"
 msgstr "ARCHITETTURA"
 
-#: lxc/remote.go:412
+#: lxc/remote.go:466
 msgid "AUTH TYPE"
 msgstr ""
 
-#: lxc/remote.go:68
+#: lxc/remote.go:88
 msgid "Accept certificate"
 msgstr "Accetta certificato"
 
-#: lxc/query.go:38
+#: lxc/query.go:37
 msgid "Action (defaults to GET)"
 msgstr "Azione (default a GET)"
 
-#: lxc/remote.go:276
+#: lxc/config_device.go:75 lxc/config_device.go:76
+msgid "Add devices to containers or profiles"
+msgstr ""
+
+#: lxc/alias.go:54 lxc/alias.go:55
+#, fuzzy
+msgid "Add new aliases"
+msgstr "Alias:"
+
+#: lxc/remote.go:83 lxc/remote.go:84
+msgid "Add new remote servers"
+msgstr ""
+
+#: lxc/config_trust.go:58 lxc/config_trust.go:59
+msgid "Add new trusted clients"
+msgstr ""
+
+#: lxc/profile.go:101 lxc/profile.go:102
+msgid "Add profiles to containers"
+msgstr ""
+
+#: lxc/remote.go:325
 #, c-format
 msgid "Admin password for %s: "
 msgstr "Password amministratore per %s: "
 
-#: lxc/image.go:623
+#: lxc/alias.go:78 lxc/alias.go:176
+#, fuzzy, c-format
+msgid "Alias %s already exists"
+msgstr "il remote %s esiste già"
+
+#: lxc/alias.go:170 lxc/alias.go:221
+#, fuzzy, c-format
+msgid "Alias %s doesn't exist"
+msgstr "il remote %s non esiste"
+
+#: lxc/image_alias.go:83 lxc/image_alias.go:130 lxc/image_alias.go:274
+msgid "Alias name missing"
+msgstr ""
+
+#: lxc/image.go:854
 msgid "Aliases:"
 msgstr "Alias:"
 
-#: lxc/image.go:601 lxc/info.go:125
+#: lxc/image.go:826 lxc/info.go:129
 #, c-format
 msgid "Architecture: %s"
 msgstr "Architettura: %s"
 
-#: lxc/remote.go:259
+#: lxc/profile.go:162 lxc/profile.go:163
+msgid "Assign sets of profiles to containers"
+msgstr ""
+
+#: lxc/network.go:103
+msgid "Attach network interfaces to containers"
+msgstr ""
+
+#: lxc/network.go:176 lxc/network.go:177
+msgid "Attach network interfaces to profiles"
+msgstr ""
+
+#: lxc/network.go:104
+msgid "Attach new network interfaces to containers"
+msgstr ""
+
+#: lxc/storage_volume.go:121 lxc/storage_volume.go:122
+msgid "Attach new storage volumes to containers"
+msgstr ""
+
+#: lxc/storage_volume.go:200 lxc/storage_volume.go:201
+msgid "Attach new storage volumes to profiles"
+msgstr ""
+
+#: lxc/console.go:31
+msgid "Attach to container consoles"
+msgstr ""
+
+#: lxc/console.go:32
+msgid ""
+"Attach to container consoles\n"
+"\n"
+"This command allows you to interact with the boot console of a container\n"
+"as well as retrieve past log entries from it."
+msgstr ""
+
+#: lxc/remote.go:308
 #, c-format
 msgid "Authentication type '%s' not supported by server"
 msgstr ""
 
-#: lxc/image.go:632
+#: lxc/image.go:864
 #, c-format
 msgid "Auto update: %s"
 msgstr "Aggiornamento automatico: %s"
 
-#: lxc/image.go:707
+#: lxc/network.go:283
+#, c-format
+msgid "Bad key/value pair: %s"
+msgstr ""
+
+#: lxc/copy.go:110 lxc/init.go:118 lxc/publish.go:175 lxc/storage.go:123
+#: lxc/storage_volume.go:468
+#, c-format
+msgid "Bad key=value pair: %s"
+msgstr ""
+
+#: lxc/image.go:677
 #, c-format
 msgid "Bad property: %s"
 msgstr "Proprietà errata: %s"
 
-#: lxc/action.go:133
+#: lxc/action.go:212
 msgid "Both --all and container name given"
 msgstr ""
 
-#: lxc/info.go:218
+#: lxc/info.go:222
 msgid "Bytes received"
 msgstr "Bytes ricevuti"
 
-#: lxc/info.go:219
+#: lxc/info.go:223
 msgid "Bytes sent"
 msgstr "Byte inviati"
 
-#: lxc/operation.go:156
+#: lxc/operation.go:155
 msgid "CANCELABLE"
 msgstr ""
 
-#: lxc/config.go:403
+#: lxc/config_trust.go:175
 msgid "COMMON NAME"
 msgstr "NOME COMUNE"
 
-#: lxc/info.go:182
+#: lxc/info.go:186
 msgid "CPU usage (in seconds)"
 msgstr "Utilizzo CPU (in secondi)"
 
-#: lxc/info.go:186
+#: lxc/info.go:190
 msgid "CPU usage:"
 msgstr "Utilizzo CPU:"
 
-#: lxc/operation.go:157
+#: lxc/operation.go:156
 #, fuzzy
 msgid "CREATED"
 msgstr "CREATO IL"
 
-#: lxc/list.go:468
+#: lxc/list.go:465
 msgid "CREATED AT"
 msgstr "CREATO IL"
 
-#: lxc/image.go:631
+#: lxc/image.go:863
 #, c-format
 msgid "Cached: %s"
 msgstr ""
 
-#: lxc/file.go:501
+#: lxc/image.go:175
+msgid "Can't provide a name for the target image"
+msgstr ""
+
+#: lxc/file.go:261
 msgid "Can't pull a directory without --recursive"
 msgstr "Impossibile effettuare il pull di una directory senza --recursive"
 
-#: lxc/config.go:210 lxc/network.go:619
+#: lxc/config.go:400 lxc/network.go:969
 #, c-format
 msgid "Can't read from stdin: %s"
 msgstr "Impossible leggere da stdin: %s"
 
-#: lxc/rename.go:41
+#: lxc/remote.go:577
+msgid "Can't remove the default remote"
+msgstr ""
+
+#: lxc/list.go:481
+msgid "Can't specify --fast with --columns"
+msgstr ""
+
+#: lxc/rename.go:48
 msgid "Can't specify a different remote for rename."
 msgstr ""
 
-#: lxc/config.go:223
-#, c-format
-msgid "Can't unset key '%s', it's not currently set"
+#: lxc/list.go:493
+msgid "Can't specify column L when not clustered"
 msgstr ""
 
-#: lxc/config.go:265 lxc/config.go:291
-#, c-format
-msgid "Can't unset key '%s', it's not currently set."
+#: lxc/file.go:399
+msgid "Can't supply uid/gid/mode in recursive mode"
 msgstr ""
 
-#: lxc/profile.go:546 lxc/storage.go:696
-msgid "Cannot provide container name to list"
+#: lxc/config.go:413
+#, c-format
+msgid "Can't unset key '%s', it's not currently set"
 msgstr ""
 
-#: lxc/remote.go:203
+#: lxc/remote.go:252
 #, c-format
 msgid "Certificate fingerprint: %s"
 msgstr ""
 
-#: lxc/remote.go:315
+#: lxc/remote.go:364
 msgid "Client certificate stored at server: "
 msgstr "Certificato del client salvato dal server: "
 
-#: lxc/image.go:175 lxc/image.go:176 lxc/list.go:134 lxc/list.go:135
+#: lxc/network.go:253 lxc/network.go:663 lxc/network.go:923 lxc/network.go:992
+#: lxc/network.go:1054 lxc/storage.go:92 lxc/storage.go:331 lxc/storage.go:576
+#: lxc/storage.go:649 lxc/storage.go:732 lxc/storage_volume.go:287
+#: lxc/storage_volume.go:429 lxc/storage_volume.go:504
+#: lxc/storage_volume.go:730 lxc/storage_volume.go:856
+#: lxc/storage_volume.go:998 lxc/storage_volume.go:1028
+#: lxc/storage_volume.go:1092 lxc/storage_volume.go:1175
+#: lxc/storage_volume.go:1244
+msgid "Cluster member name"
+msgstr ""
+
+#: lxc/image.go:912 lxc/list.go:112
 msgid "Columns"
 msgstr "Colonne"
 
-#: lxc/help.go:53
-msgid "Commands:"
-msgstr "Comandi:"
+#: lxc/main.go:44
+msgid "Command line client for LXD"
+msgstr ""
+
+#: lxc/main.go:45
+msgid ""
+"Command line client for LXD\n"
+"\n"
+"All of LXD's features can be driven through the various commands below.\n"
+"For help with any of those, simply call them with --help."
+msgstr ""
 
-#: lxc/copy.go:37 lxc/copy.go:38 lxc/init.go:139 lxc/init.go:140
+#: lxc/copy.go:39 lxc/init.go:42
 msgid "Config key/value to apply to the new container"
 msgstr ""
 
-#: lxc/config.go:821 lxc/config.go:886 lxc/config.go:1396 lxc/image.go:1191
-#: lxc/network.go:445 lxc/profile.go:275 lxc/storage.go:647 lxc/storage.go:1209
+#: lxc/config.go:195 lxc/config.go:259 lxc/config_metadata.go:144
+#: lxc/image.go:405 lxc/network.go:631 lxc/profile.go:490 lxc/storage.go:298
+#: lxc/storage_volume.go:822
 #, c-format
 msgid "Config parsing error: %s"
 msgstr ""
 
-#: lxc/main.go:40
-msgid "Connection refused; is LXD running?"
-msgstr ""
-
-#: lxc/console.go:132
+#: lxc/console.go:141
 msgid "Console log:"
 msgstr ""
 
-#: lxc/publish.go:71
+#: lxc/publish.go:79
 msgid "Container name is mandatory"
 msgstr ""
 
-#: lxc/copy.go:243 lxc/init.go:321
+#: lxc/copy.go:260 lxc/init.go:229
 #, c-format
 msgid "Container name is: %s"
 msgstr "Il nome del container è: %s"
 
-#: lxc/publish.go:250
+#: lxc/publish.go:259
 #, c-format
 msgid "Container published with fingerprint: %s"
 msgstr ""
 
-#: lxc/copy.go:45 lxc/move.go:44
+#: lxc/copy.go:44 lxc/move.go:46
 msgid "Copy a stateful container stateless"
 msgstr ""
 
-#: lxc/image.go:178
+#: lxc/image.go:138
 msgid "Copy aliases from source"
 msgstr ""
 
-#: lxc/copy.go:44
+#: lxc/copy.go:34 lxc/copy.go:35
+msgid "Copy containers within or in between LXD instances"
+msgstr ""
+
+#: lxc/image.go:130
+msgid "Copy images between servers"
+msgstr ""
+
+#: lxc/image.go:131
+msgid ""
+"Copy images between servers\n"
+"\n"
+"The auto-update flag instructs the server to keep this image up to date.\n"
+"It requires the source to be an alias and for it to be public."
+msgstr ""
+
+#: lxc/config_device.go:317 lxc/config_device.go:318
+msgid "Copy profile inherited devices and override configuration keys"
+msgstr ""
+
+#: lxc/profile.go:240 lxc/profile.go:241
+msgid "Copy profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:282 lxc/storage_volume.go:283
+msgid "Copy storage volumes"
+msgstr ""
+
+#: lxc/copy.go:43
 msgid "Copy the container without its snapshots"
 msgstr ""
 
-#: lxc/image.go:449
+#: lxc/image.go:217
 #, c-format
 msgid "Copying the image: %s"
 msgstr ""
 
-#: lxc/storage.go:1134
+#: lxc/storage_volume.go:387
 #, c-format
 msgid "Copying the storage volume: %s"
 msgstr ""
 
-#: lxc/remote.go:218
+#: lxc/remote.go:267
 msgid "Could not create server cert dir"
 msgstr ""
 
-#: lxc/file.go:70 lxc/file.go:71
+#: lxc/image_alias.go:58 lxc/image_alias.go:59
+msgid "Create aliases for existing images"
+msgstr ""
+
+#: lxc/launch.go:21 lxc/launch.go:22
+msgid "Create and start containers from images"
+msgstr ""
+
+#: lxc/file.go:191 lxc/file.go:331
 msgid "Create any directories necessary"
 msgstr ""
 
-#: lxc/image.go:606 lxc/info.go:127
+#: lxc/snapshot.go:20
+#, fuzzy
+msgid "Create container snapshots"
+msgstr "Creazione del container in corso"
+
+#: lxc/snapshot.go:21
+msgid ""
+"Create container snapshots\n"
+"\n"
+"When --stateful is used, LXD attempts to checkpoint the container's\n"
+"running state, including process memory state, TCP connections, ..."
+msgstr ""
+
+#: lxc/init.go:34 lxc/init.go:35
+#, fuzzy
+msgid "Create containers from images"
+msgstr "Creazione del container in corso"
+
+#: lxc/config_template.go:66 lxc/config_template.go:67
+msgid "Create new container file templates"
+msgstr ""
+
+#: lxc/storage_volume.go:425 lxc/storage_volume.go:426
+msgid "Create new custom storage volumes"
+msgstr ""
+
+#: lxc/network.go:249 lxc/network.go:250
+msgid "Create new networks"
+msgstr ""
+
+#: lxc/profile.go:296 lxc/profile.go:297
+msgid "Create profiles"
+msgstr ""
+
+#: lxc/storage.go:88 lxc/storage.go:89
+msgid "Create storage pools"
+msgstr ""
+
+#: lxc/image.go:832 lxc/info.go:131
 #, c-format
 msgid "Created: %s"
 msgstr ""
 
-#: lxc/init.go:200
+#: lxc/init.go:98
 #, c-format
 msgid "Creating %s"
 msgstr "Creazione di %s in corso"
 
-#: lxc/init.go:198
+#: lxc/init.go:96
 msgid "Creating the container"
 msgstr "Creazione del container in corso"
 
-#: lxc/cluster.go:185
+#: lxc/cluster.go:121
 msgid "DATABASE"
 msgstr ""
 
-#: lxc/image.go:235 lxc/image.go:1138 lxc/list.go:469 lxc/network.go:579
-#: lxc/operation.go:154 lxc/storage.go:732 lxc/storage.go:937
+#: lxc/image.go:925 lxc/image_alias.go:230 lxc/list.go:466 lxc/network.go:784
+#: lxc/operation.go:153 lxc/storage.go:545 lxc/storage_volume.go:967
 msgid "DESCRIPTION"
 msgstr "DESCRIZIONE"
 
-#: lxc/storage.go:733
+#: lxc/storage.go:546
 msgid "DRIVER"
 msgstr "DRIVER"
 
-#: lxc/publish.go:39
+#: lxc/publish.go:41
 msgid "Define a compression algorithm: for image or none"
 msgstr ""
 
-#: lxc/config.go:977
+#: lxc/operation.go:53 lxc/operation.go:54
+msgid "Delete a background operation (will attempt to cancel)"
+msgstr ""
+
+#: lxc/config_template.go:109 lxc/config_template.go:110
+msgid "Delete container file templates"
+msgstr ""
+
+#: lxc/delete.go:29 lxc/delete.go:30
+msgid "Delete containers and snapshots"
+msgstr ""
+
+#: lxc/file.go:72 lxc/file.go:73
+msgid "Delete files in containers"
+msgstr ""
+
+#: lxc/image_alias.go:105 lxc/image_alias.go:106
+msgid "Delete image aliases"
+msgstr ""
+
+#: lxc/image.go:260 lxc/image.go:261
+msgid "Delete images"
+msgstr ""
+
+#: lxc/network.go:319 lxc/network.go:320
+msgid "Delete networks"
+msgstr ""
+
+#: lxc/profile.go:347 lxc/profile.go:348
+msgid "Delete profiles"
+msgstr ""
+
+#: lxc/storage.go:160 lxc/storage.go:161
+msgid "Delete storage pools"
+msgstr ""
+
+#: lxc/storage_volume.go:500 lxc/storage_volume.go:501
+msgid "Delete storage volumes"
+msgstr ""
+
+#: lxc/action.go:30 lxc/action.go:49 lxc/action.go:69 lxc/action.go:91
+#: lxc/alias.go:23 lxc/alias.go:55 lxc/alias.go:99 lxc/alias.go:147
+#: lxc/alias.go:198 lxc/cluster.go:26 lxc/cluster.go:59 lxc/cluster.go:142
+#: lxc/cluster.go:192 lxc/cluster.go:238 lxc/config.go:29 lxc/config.go:88
+#: lxc/config.go:289 lxc/config.go:355 lxc/config.go:452 lxc/config.go:560
+#: lxc/config_device.go:24 lxc/config_device.go:76 lxc/config_device.go:179
+#: lxc/config_device.go:252 lxc/config_device.go:318 lxc/config_device.go:405
+#: lxc/config_device.go:493 lxc/config_device.go:582 lxc/config_device.go:650
+#: lxc/config_metadata.go:29 lxc/config_metadata.go:54
+#: lxc/config_metadata.go:176 lxc/config_template.go:30
+#: lxc/config_template.go:67 lxc/config_template.go:110
+#: lxc/config_template.go:152 lxc/config_template.go:236
+#: lxc/config_template.go:298 lxc/config_trust.go:30 lxc/config_trust.go:59
+#: lxc/config_trust.go:115 lxc/config_trust.go:197 lxc/console.go:32
+#: lxc/copy.go:35 lxc/delete.go:30 lxc/exec.go:39 lxc/file.go:40 lxc/file.go:73
+#: lxc/file.go:122 lxc/file.go:185 lxc/file.go:324 lxc/image.go:42
+#: lxc/image.go:131 lxc/image.go:261 lxc/image.go:312 lxc/image.go:435
+#: lxc/image.go:571 lxc/image.go:776 lxc/image.go:890 lxc/image.go:1212
+#: lxc/image.go:1285 lxc/image_alias.go:26 lxc/image_alias.go:59
+#: lxc/image_alias.go:106 lxc/image_alias.go:149 lxc/image_alias.go:250
+#: lxc/info.go:29 lxc/init.go:35 lxc/launch.go:22 lxc/list.go:48 lxc/main.go:45
+#: lxc/monitor.go:31 lxc/move.go:31 lxc/network.go:32 lxc/network.go:104
+#: lxc/network.go:177 lxc/network.go:250 lxc/network.go:320 lxc/network.go:367
+#: lxc/network.go:452 lxc/network.go:537 lxc/network.go:660 lxc/network.go:719
+#: lxc/network.go:808 lxc/network.go:873 lxc/network.go:920 lxc/network.go:989
+#: lxc/network.go:1051 lxc/operation.go:25 lxc/operation.go:54
+#: lxc/operation.go:98 lxc/operation.go:174 lxc/profile.go:30
+#: lxc/profile.go:102 lxc/profile.go:163 lxc/profile.go:241 lxc/profile.go:297
+#: lxc/profile.go:348 lxc/profile.go:396 lxc/profile.go:520 lxc/profile.go:568
+#: lxc/profile.go:632 lxc/profile.go:705 lxc/profile.go:753 lxc/profile.go:812
+#: lxc/profile.go:866 lxc/publish.go:34 lxc/query.go:27 lxc/remote.go:34
+#: lxc/remote.go:84 lxc/remote.go:380 lxc/remote.go:414 lxc/remote.go:487
+#: lxc/remote.go:549 lxc/remote.go:598 lxc/remote.go:636 lxc/rename.go:20
+#: lxc/restore.go:24 lxc/snapshot.go:21 lxc/storage.go:33 lxc/storage.go:89
+#: lxc/storage.go:161 lxc/storage.go:208 lxc/storage.go:328 lxc/storage.go:383
+#: lxc/storage.go:491 lxc/storage.go:573 lxc/storage.go:645 lxc/storage.go:729
+#: lxc/storage_volume.go:34 lxc/storage_volume.go:122 lxc/storage_volume.go:201
+#: lxc/storage_volume.go:283 lxc/storage_volume.go:426
+#: lxc/storage_volume.go:501 lxc/storage_volume.go:561
+#: lxc/storage_volume.go:643 lxc/storage_volume.go:724
+#: lxc/storage_volume.go:853 lxc/storage_volume.go:918
+#: lxc/storage_volume.go:994 lxc/storage_volume.go:1025
+#: lxc/storage_volume.go:1089 lxc/storage_volume.go:1166
+#: lxc/storage_volume.go:1241
+msgid "Description"
+msgstr ""
+
+#: lxc/network.go:366 lxc/network.go:367
+msgid "Detach network interfaces from containers"
+msgstr ""
+
+#: lxc/network.go:451 lxc/network.go:452
+msgid "Detach network interfaces from profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:560 lxc/storage_volume.go:561
+msgid "Detach storage volumes from containers"
+msgstr ""
+
+#: lxc/storage_volume.go:642 lxc/storage_volume.go:643
+msgid "Detach storage volumes from profiles"
+msgstr ""
+
+#: lxc/config_device.go:163
 #, c-format
 msgid "Device %s added to %s"
 msgstr ""
 
-#: lxc/config.go:1272
+#: lxc/config_device.go:387
 #, c-format
 msgid "Device %s overridden for %s"
 msgstr ""
 
-#: lxc/config.go:1213
+#: lxc/config_device.go:476
 #, c-format
 msgid "Device %s removed from %s"
 msgstr ""
 
-#: lxc/utils.go:192 lxc/utils.go:216
+#: lxc/utils.go:133 lxc/utils.go:157
 #, c-format
 msgid "Device already exists: %s"
 msgstr "La periferica esiste già: %s"
 
-#: lxc/image.go:1290
+#: lxc/image.go:586
 msgid "Directory import is not available on this platform"
 msgstr "Import da directory non disponibile su questa piattaforma"
 
-#: lxc/exec.go:71
+#: lxc/exec.go:55
 msgid "Disable pseudo-terminal allocation"
 msgstr ""
 
-#: lxc/exec.go:72
+#: lxc/exec.go:56
 msgid "Disable stdin (reads from /dev/null)"
 msgstr ""
 
-#: lxc/info.go:175
+#: lxc/info.go:179
 msgid "Disk usage:"
 msgstr "Utilizzo disco:"
 
-#: lxc/list.go:638
+#: lxc/list.go:635
 msgid "EPHEMERAL"
 msgstr ""
 
-#: lxc/config.go:405
+#: lxc/config_trust.go:177
 msgid "EXPIRY DATE"
 msgstr "DATA DI SCADENZA"
 
-#: lxc/main.go:52
-msgid "Enable debug mode"
+#: lxc/config_template.go:151 lxc/config_template.go:152
+msgid "Edit container file templates"
 msgstr ""
 
-#: lxc/main.go:51
-msgid "Enable verbose mode"
-msgstr "Abilita modalità verbosa"
+#: lxc/config_metadata.go:53 lxc/config_metadata.go:54
+msgid "Edit container metadata files"
+msgstr ""
 
-#: lxc/exec.go:68
-msgid "Environment variable to set (e.g. HOME=/home/foo)"
+#: lxc/config.go:87 lxc/config.go:88
+msgid "Edit container or server configurations as YAML"
+msgstr ""
+
+#: lxc/file.go:121 lxc/file.go:122
+msgid "Edit files in containers"
+msgstr ""
+
+#: lxc/image.go:311 lxc/image.go:312
+msgid "Edit image properties"
+msgstr ""
+
+#: lxc/network.go:536 lxc/network.go:537
+msgid "Edit network configurations as YAML"
+msgstr ""
+
+#: lxc/profile.go:395 lxc/profile.go:396
+msgid "Edit profile configurations as YAML"
+msgstr ""
+
+#: lxc/storage.go:207 lxc/storage.go:208
+msgid "Edit storage pool configurations as YAML"
 msgstr ""
 
-#: lxc/help.go:77
-msgid "Environment:"
+#: lxc/storage_volume.go:723 lxc/storage_volume.go:724
+msgid "Edit storage volume configurations as YAML"
 msgstr ""
 
-#: lxc/copy.go:41 lxc/copy.go:42 lxc/init.go:143 lxc/init.go:144
+#: lxc/list.go:504
+#, c-format
+msgid "Empty column entry (redundant, leading or trailing command) in '%s'"
+msgstr ""
+
+#: lxc/exec.go:52
+msgid "Environment variable to set (e.g. HOME=/home/foo)"
+msgstr ""
+
+#: lxc/copy.go:41 lxc/init.go:44
 msgid "Ephemeral container"
 msgstr ""
 
-#: lxc/config.go:1446
+#: lxc/config_template.go:204
 #, c-format
 msgid "Error updating template file: %s"
 msgstr ""
 
-#: lxc/monitor.go:69
+#: lxc/monitor.go:48
 msgid "Event type to listen for"
 msgstr ""
 
-#: lxc/image.go:610
+#: lxc/exec.go:38
+msgid "Execute commands in containers"
+msgstr ""
+
+#: lxc/exec.go:39
+msgid ""
+"Execute commands in containers\n"
+"\n"
+"The command is executed directly using exec, so there is no shell and\n"
+"shell patterns (variables, file redirects, ...) won't be understood.\n"
+"If you need a shell environment you need to execute the shell\n"
+"executable, passing the shell commands as arguments, for example:\n"
+"\n"
+"  lxc exec <container> -- sh -c \"cd /tmp && pwd\"\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:838
 #, c-format
 msgid "Expires: %s"
 msgstr ""
 
-#: lxc/image.go:612
+#: lxc/image.go:840
 msgid "Expires: never"
 msgstr ""
 
-#: lxc/image.go:922
+#: lxc/image.go:434
+msgid "Export and download images"
+msgstr ""
+
+#: lxc/image.go:435
+msgid ""
+"Export and download images\n"
+"\n"
+"The output target is optional and defaults to the working directory."
+msgstr ""
+
+#: lxc/image.go:494
 #, c-format
 msgid "Exporting the image: %s"
 msgstr ""
 
-#: lxc/config.go:761
+#: lxc/config_template.go:279
 msgid "FILENAME"
 msgstr ""
 
-#: lxc/config.go:402 lxc/image.go:233 lxc/image.go:1137
+#: lxc/config_trust.go:174 lxc/image.go:923 lxc/image_alias.go:229
 msgid "FINGERPRINT"
 msgstr ""
 
-#: lxc/utils.go:261
+#: lxc/utils.go:202
 #, c-format
 msgid "Failed to create alias %s"
 msgstr ""
 
-#: lxc/manpage.go:62
-#, c-format
-msgid "Failed to generate 'lxc.%s.1': %v"
-msgstr ""
-
-#: lxc/manpage.go:55
-#, c-format
-msgid "Failed to generate 'lxc.1': %v"
-msgstr ""
-
-#: lxc/copy.go:238
+#: lxc/copy.go:255
 msgid "Failed to get the new container name"
 msgstr ""
 
-#: lxc/utils.go:251
+#: lxc/utils.go:192
 #, c-format
 msgid "Failed to remove alias %s"
 msgstr ""
 
-#: lxc/file.go:137
+#: lxc/file.go:609
 #, c-format
 msgid "Failed to walk path for %s: %s"
 msgstr ""
 
-#: lxc/list.go:137
+#: lxc/list.go:114
 msgid "Fast mode (same as --columns=nsacPt)"
 msgstr ""
 
-#: lxc/network.go:536 lxc/operation.go:121
+#: lxc/network.go:749 lxc/operation.go:126
 #, fuzzy
 msgid "Filtering isn't supported yet"
 msgstr "'%s' non è un tipo di file supportato."
 
-#: lxc/image.go:599
+#: lxc/image.go:824
 #, c-format
 msgid "Fingerprint: %s"
 msgstr ""
 
-#: lxc/exec.go:70
+#: lxc/exec.go:54
 msgid "Force pseudo-terminal allocation"
 msgstr ""
 
-#: lxc/cluster.go:42
-msgid "Force removing a node, even if degraded"
+#: lxc/cluster.go:242
+msgid "Force removing a member, even if degraded"
 msgstr ""
 
-#: lxc/action.go:47 lxc/action.go:48
+#: lxc/action.go:121
 msgid "Force the container to shutdown"
 msgstr ""
 
-#: lxc/delete.go:34 lxc/delete.go:35
+#: lxc/delete.go:34
 msgid "Force the removal of running containers"
 msgstr ""
 
-#: lxc/main.go:53
+#: lxc/main.go:56
 msgid "Force using the local unix socket"
 msgstr ""
 
-#: lxc/image.go:181 lxc/list.go:136
+#: lxc/image.go:913 lxc/list.go:113
 msgid "Format (csv|json|table|yaml)"
 msgstr ""
 
-#: lxc/remote.go:166
+#: lxc/remote.go:211
 msgid "Generating a client certificate. This may take a minute..."
 msgstr ""
 
-#: lxc/network.go:513
+#: lxc/config_device.go:178 lxc/config_device.go:179
+msgid "Get values for container device configuration keys"
+msgstr ""
+
+#: lxc/config.go:288 lxc/config.go:289
+msgid "Get values for container or server configuration keys"
+msgstr ""
+
+#: lxc/network.go:659 lxc/network.go:660
+msgid "Get values for network configuration keys"
+msgstr ""
+
+#: lxc/profile.go:519 lxc/profile.go:520
+msgid "Get values for profile configuration keys"
+msgstr ""
+
+#: lxc/storage.go:327 lxc/storage.go:328
+msgid "Get values for storage pool configuration keys"
+msgstr ""
+
+#: lxc/storage_volume.go:852 lxc/storage_volume.go:853
+msgid "Get values for storage volume configuration keys"
+msgstr ""
+
+#: lxc/network.go:851
 msgid "HOSTNAME"
 msgstr ""
 
-#: lxc/operation.go:152
+#: lxc/operation.go:151
 msgid "ID"
 msgstr ""
 
-#: lxc/network.go:515
+#: lxc/network.go:853
 msgid "IP ADDRESS"
 msgstr ""
 
-#: lxc/list.go:465
+#: lxc/list.go:462
 msgid "IPV4"
 msgstr ""
 
-#: lxc/list.go:466
+#: lxc/list.go:463
 msgid "IPV6"
 msgstr ""
 
-#: lxc/config.go:404
+#: lxc/config_trust.go:176
 msgid "ISSUE DATE"
 msgstr ""
 
-#: lxc/main.go:171
+#: lxc/main.go:259
 msgid ""
 "If this is your first time running LXD on this machine, you should also run: "
 "lxd init"
 msgstr ""
 
-#: lxc/main.go:54
-msgid "Ignore aliases when determining what command to run"
-msgstr ""
-
-#: lxc/action.go:51
-msgid "Ignore the container state (only for start)"
-msgstr ""
+#: lxc/action.go:117
+#, fuzzy
+msgid "Ignore the container state"
+msgstr "Creazione del container in corso"
 
-#: lxc/image.go:557
+#: lxc/image.go:1268
 msgid "Image already up to date."
 msgstr ""
 
-#: lxc/image.go:463
+#: lxc/image.go:231
 msgid "Image copied successfully!"
 msgstr ""
 
-#: lxc/image.go:982
+#: lxc/image.go:554
 msgid "Image exported successfully!"
 msgstr ""
 
-#: lxc/image.go:778
+#: lxc/image.go:284 lxc/image.go:1235
+msgid "Image identifier missing"
+msgstr ""
+
+#: lxc/image.go:352
+#, c-format
+msgid "Image identifier missing: %s"
+msgstr ""
+
+#: lxc/image.go:749
 #, c-format
 msgid "Image imported with fingerprint: %s"
 msgstr ""
 
-#: lxc/image.go:555
+#: lxc/image.go:1266
 msgid "Image refreshed successfully!"
 msgstr ""
 
-#: lxc/query.go:39
+#: lxc/image.go:571
+msgid ""
+"Import image into the image store\n"
+"\n"
+"Directory import is only available on Linux and must be performed as root."
+msgstr ""
+
+#: lxc/image.go:570
+msgid "Import images into the image store"
+msgstr ""
+
+#: lxc/query.go:38
 msgid "Input data"
 msgstr ""
 
-#: lxc/init.go:149
+#: lxc/init.go:47
 msgid "Instance type"
 msgstr ""
 
-#: lxc/remote.go:118
+#: lxc/remote.go:163
 #, c-format
 msgid "Invalid URL scheme \"%s\" in \"%s\""
 msgstr ""
 
-#: lxc/config.go:383
+#: lxc/config_trust.go:155
 msgid "Invalid certificate"
 msgstr ""
 
-#: lxc/init.go:32 lxc/init.go:37
-msgid "Invalid configuration key"
+#: lxc/list.go:525
+#, c-format
+msgid "Invalid config key '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:520
+#, c-format
+msgid "Invalid config key column format (too many fields): '%s'"
+msgstr ""
+
+#: lxc/image.go:1196 lxc/list.go:386
+#, fuzzy, c-format
+msgid "Invalid format %q"
+msgstr "Proprietà errata: %s"
+
+#: lxc/list.go:543
+#, c-format
+msgid "Invalid max width (must -1, 0 or a positive integer) '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:540
+#, c-format
+msgid "Invalid max width (must be an integer) '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:531
+#, c-format
+msgid ""
+"Invalid name in '%s', empty string is only allowed when defining maxWidth"
 msgstr ""
 
-#: lxc/file.go:560
+#: lxc/main.go:341
+#, fuzzy
+msgid "Invalid number of arguments"
+msgstr "numero errato di argomenti del sottocomando"
+
+#: lxc/file.go:97
 #, c-format
 msgid "Invalid path %s"
 msgstr ""
 
-#: lxc/remote.go:107
+#: lxc/remote.go:152
 #, fuzzy, c-format
 msgid "Invalid protocol: %s"
 msgstr "Proprietà errata: %s"
 
-#: lxc/file.go:473
+#: lxc/file.go:243
 #, c-format
 msgid "Invalid source %s"
 msgstr ""
 
-#: lxc/file.go:250
+#: lxc/file.go:352
 #, c-format
 msgid "Invalid target %s"
 msgstr ""
 
-#: lxc/info.go:156
+#: lxc/info.go:160
 msgid "Ips:"
 msgstr ""
 
-#: lxc/image.go:179
+#: lxc/image.go:139
 msgid "Keep the image up to date after initial copy"
 msgstr ""
 
-#: lxc/list.go:470
+#: lxc/list.go:467
 msgid "LAST USED AT"
 msgstr ""
 
-#: lxc/list.go:492
+#: lxc/list.go:489
 msgid "LOCATION"
 msgstr ""
 
-#: lxc/main.go:38
-msgid "LXD socket not found; is LXD installed and running?"
+#: lxc/cluster.go:94
+msgid "LXD server isn't part of a cluster"
 msgstr ""
 
-#: lxc/image.go:615
+#: lxc/image.go:844
 #, c-format
 msgid "Last used: %s"
 msgstr ""
 
-#: lxc/image.go:617
+#: lxc/image.go:846
 msgid "Last used: never"
 msgstr ""
 
-#: lxc/info.go:119
-#, c-format
-msgid "Location: %s"
+#: lxc/network.go:807 lxc/network.go:808
+msgid "List DHCP leases"
 msgstr ""
 
-#: lxc/info.go:271
-msgid "Log:"
-msgstr ""
+#: lxc/alias.go:98 lxc/alias.go:99
+#, fuzzy
+msgid "List aliases"
+msgstr "Alias:"
 
-#: lxc/network.go:514
-msgid "MAC ADDRESS"
+#: lxc/cluster.go:58 lxc/cluster.go:59
+msgid "List all the cluster members"
 msgstr ""
 
-#: lxc/network.go:578
-msgid "MANAGED"
+#: lxc/network.go:718 lxc/network.go:719
+msgid "List available networks"
 msgstr ""
 
-#: lxc/cluster.go:187
-msgid "MESSAGE"
+#: lxc/storage.go:490 lxc/storage.go:491
+msgid "List available storage pools"
 msgstr ""
 
-#: lxc/image.go:177
-msgid "Make image public"
+#: lxc/operation.go:97 lxc/operation.go:98
+msgid "List background operations"
 msgstr ""
 
-#: lxc/publish.go:35
-msgid "Make the image public"
+#: lxc/config_device.go:251 lxc/config_device.go:252
+msgid "List container devices"
 msgstr ""
 
-#: lxc/info.go:193
-msgid "Memory (current)"
+#: lxc/config_template.go:235 lxc/config_template.go:236
+msgid "List container file templates"
 msgstr ""
 
-#: lxc/info.go:197
+#: lxc/list.go:47
+#, fuzzy
+msgid "List containers"
+msgstr "Creazione del container in corso"
+
+#: lxc/list.go:48
+msgid ""
+"List containers\n"
+"\n"
+"Default column layout: ns46tS\n"
+"Fast column layout: nsacPt\n"
+"\n"
+"== Filters ==\n"
+"A single keyword like \"web\" which will list any container with a name "
+"starting by \"web\".\n"
+"A regular expression on the container name. (e.g. .*web.*01$).\n"
+"A key/value pair referring to a configuration item. For those, the\n"
+"namespace can be abbreviated to the smallest unambiguous identifier.\n"
+"\n"
+"Examples:\n"
+"  - \"user.blah=abc\" will list all containers with the \"blah\" user "
+"property set to \"abc\".\n"
+"  - \"u.blah=abc\" will do the same\n"
+"  - \"security.privileged=true\" will list all privileged containers\n"
+"  - \"s.privileged=true\" will do the same\n"
+"\n"
+"A regular expression matching a configuration item or its value. (e.g. "
+"volatile.eth0.hwaddr=00:16:3e:.*).\n"
+"\n"
+"== Columns ==\n"
+"The -c option takes a comma separated list of arguments that control\n"
+"which container attributes to output when displaying in table or csv\n"
+"format.\n"
+"\n"
+"Column arguments are either pre-defined shorthand chars (see below),\n"
+"or (extended) config keys.\n"
+"\n"
+"Commas between consecutive shorthand chars are optional.\n"
+"\n"
+"Pre-defined column shorthand chars:\n"
+"  4 - IPv4 address\n"
+"  6 - IPv6 address\n"
+"  a - Architecture\n"
+"  b - Storage pool\n"
+"  c - Creation date\n"
+"  d - Description\n"
+"  l - Last used date\n"
+"  n - Name\n"
+"  N - Number of Processes\n"
+"  p - PID of the container's init process\n"
+"  P - Profiles\n"
+"  s - State\n"
+"  S - Number of snapshots\n"
+"  t - Type (persistent or ephemeral)\n"
+"  L - Location of the container (e.g. its node)\n"
+"\n"
+"Custom columns are defined with \"key[:name][:maxWidth]\":\n"
+"  KEY: The (extended) config key to display\n"
+"  NAME: Name to display in the column header.\n"
+"  Defaults to the key if not specified or empty.\n"
+"\n"
+"  MAXWIDTH: Max width of the column (longer results are truncated).\n"
+"  Defaults to -1 (unlimited). Use 0 to limit to the column header size."
+msgstr ""
+
+#: lxc/image_alias.go:148
+msgid "List image aliases"
+msgstr ""
+
+#: lxc/image_alias.go:149
+msgid ""
+"List image aliases\n"
+"\n"
+"Filters may be part of the image hash or part of the image alias name.\n"
+msgstr ""
+
+#: lxc/image.go:889
+msgid "List images"
+msgstr ""
+
+#: lxc/image.go:890
+msgid ""
+"List images\n"
+"\n"
+"Filters may be of the <key>=<value> form for property based filtering,\n"
+"or part of the image hash or part of the image alias name.\n"
+"\n"
+"The -c option takes a (optionally comma-separated) list of arguments\n"
+"that control which image attributes to output when displaying in table\n"
+"or csv format.\n"
+"\n"
+"Default column layout is: lfpdasu\n"
+"\n"
+"Column shorthand chars:\n"
+"\n"
+"    l - Shortest image alias (and optionally number of other aliases)\n"
+"    L - Newline-separated list of all image aliases\n"
+"    f - Fingerprint\n"
+"    p - Whether image is public\n"
+"    d - Description\n"
+"    a - Architecture\n"
+"    s - Size"
+msgstr ""
+
+#: lxc/profile.go:567 lxc/profile.go:568
+msgid "List profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:917 lxc/storage_volume.go:918
+msgid "List storage volumes"
+msgstr ""
+
+#: lxc/remote.go:413 lxc/remote.go:414
+msgid "List the available remotes"
+msgstr ""
+
+#: lxc/config_trust.go:114 lxc/config_trust.go:115
+msgid "List trusted clients"
+msgstr ""
+
+#: lxc/operation.go:24 lxc/operation.go:25
+msgid "List, show and delete background operations"
+msgstr ""
+
+#: lxc/info.go:123
+#, c-format
+msgid "Location: %s"
+msgstr ""
+
+#: lxc/info.go:275
+msgid "Log:"
+msgstr ""
+
+#: lxc/network.go:852
+msgid "MAC ADDRESS"
+msgstr ""
+
+#: lxc/network.go:783
+msgid "MANAGED"
+msgstr ""
+
+#: lxc/cluster.go:123
+msgid "MESSAGE"
+msgstr ""
+
+#: lxc/image.go:137 lxc/image.go:576
+msgid "Make image public"
+msgstr ""
+
+#: lxc/publish.go:38
+msgid "Make the image public"
+msgstr ""
+
+#: lxc/network.go:32
+msgid "Manage an attach containers to networks"
+msgstr ""
+
+#: lxc/network.go:31
+msgid "Manage and attach containers to networks"
+msgstr ""
+
+#: lxc/cluster.go:25 lxc/cluster.go:26
+msgid "Manage cluster members"
+msgstr ""
+
+#: lxc/alias.go:22 lxc/alias.go:23
+msgid "Manage command aliases"
+msgstr ""
+
+#: lxc/config.go:28 lxc/config.go:29
+msgid "Manage container and server configuration options"
+msgstr ""
+
+#: lxc/config_device.go:23 lxc/config_device.go:24
+#, fuzzy
+msgid "Manage container devices"
+msgstr "Creazione del container in corso"
+
+#: lxc/config_template.go:29 lxc/config_template.go:30
+msgid "Manage container file templates"
+msgstr ""
+
+#: lxc/config_metadata.go:28 lxc/config_metadata.go:29
+#, fuzzy
+msgid "Manage container metadata files"
+msgstr "Creazione del container in corso"
+
+#: lxc/file.go:39 lxc/file.go:40
+#, fuzzy
+msgid "Manage files in containers"
+msgstr "Creazione del container in corso"
+
+#: lxc/image_alias.go:25 lxc/image_alias.go:26
+msgid "Manage image aliases"
+msgstr ""
+
+#: lxc/image.go:41
+msgid "Manage images"
+msgstr ""
+
+#: lxc/image.go:42
+msgid ""
+"Manage images\n"
+"\n"
+"In LXD containers are created from images. Those images were themselves\n"
+"either generated from an existing container or downloaded from an image\n"
+"server.\n"
+"\n"
+"When using remote images, LXD will automatically cache images for you\n"
+"and remove them upon expiration.\n"
+"\n"
+"The image unique identifier is the hash (sha-256) of its representation\n"
+"as a compressed tarball (or for split images, the concatenation of the\n"
+"metadata and rootfs tarballs).\n"
+"\n"
+"Images can be referenced by their full hash, shortest unique partial\n"
+"hash or alias name (if one is set)."
+msgstr ""
+
+#: lxc/profile.go:29 lxc/profile.go:30
+msgid "Manage profiles"
+msgstr ""
+
+#: lxc/storage.go:32 lxc/storage.go:33
+msgid "Manage storage pools and volumes"
+msgstr ""
+
+#: lxc/storage_volume.go:33
+msgid "Manage storage volumes"
+msgstr ""
+
+#: lxc/storage_volume.go:34
+msgid ""
+"Manage storage volumes\n"
+"\n"
+"Unless specified through a prefix, all volume operations affect \"custom"
+"\" (user created) volumes."
+msgstr ""
+
+#: lxc/remote.go:33 lxc/remote.go:34
+msgid "Manage the list of remote servers"
+msgstr ""
+
+#: lxc/config_trust.go:29 lxc/config_trust.go:30
+msgid "Manage trusted clients"
+msgstr ""
+
+#: lxc/info.go:197
+msgid "Memory (current)"
+msgstr ""
+
+#: lxc/info.go:201
 msgid "Memory (peak)"
 msgstr ""
 
-#: lxc/info.go:209
+#: lxc/info.go:213
 msgid "Memory usage:"
 msgstr ""
 
-#: lxc/monitor.go:70
+#: lxc/monitor.go:49
 msgid "Minimum level for log messages"
 msgstr ""
 
-#: lxc/utils.go:143
-msgid "Missing summary."
+#: lxc/config_metadata.go:102 lxc/config_metadata.go:200
+#: lxc/config_template.go:91 lxc/config_template.go:134
+#: lxc/config_template.go:176 lxc/config_template.go:260
+#: lxc/config_template.go:322 lxc/profile.go:197 lxc/profile.go:656
+#, fuzzy
+msgid "Missing container name"
+msgstr "Il nome del container è: %s"
+
+#: lxc/profile.go:126
+msgid "Missing container.name name"
+msgstr ""
+
+#: lxc/config_device.go:103 lxc/config_device.go:203 lxc/config_device.go:276
+#: lxc/config_device.go:342 lxc/config_device.go:429 lxc/config_device.go:517
+#: lxc/config_device.go:606
+msgid "Missing name"
+msgstr ""
+
+#: lxc/network.go:128 lxc/network.go:201 lxc/network.go:344 lxc/network.go:391
+#: lxc/network.go:476 lxc/network.go:581 lxc/network.go:686 lxc/network.go:832
+#: lxc/network.go:897 lxc/network.go:946 lxc/network.go:1015
+msgid "Missing network name"
+msgstr ""
+
+#: lxc/storage.go:185 lxc/storage.go:252 lxc/storage.go:353 lxc/storage.go:408
+#: lxc/storage.go:603 lxc/storage.go:677 lxc/storage_volume.go:146
+#: lxc/storage_volume.go:225 lxc/storage_volume.go:451
+#: lxc/storage_volume.go:526 lxc/storage_volume.go:585
+#: lxc/storage_volume.go:667 lxc/storage_volume.go:766
+#: lxc/storage_volume.go:878 lxc/storage_volume.go:942
+#: lxc/storage_volume.go:1050 lxc/storage_volume.go:1114
+#: lxc/storage_volume.go:1197
+msgid "Missing pool name"
+msgstr ""
+
+#: lxc/profile.go:321 lxc/profile.go:372 lxc/profile.go:444 lxc/profile.go:544
+#: lxc/profile.go:729 lxc/profile.go:777 lxc/profile.go:836
+msgid "Missing profile name"
+msgstr ""
+
+#: lxc/profile.go:266
+msgid "Missing source profile name"
+msgstr ""
+
+#: lxc/storage_volume.go:311
+msgid "Missing source volume name"
 msgstr ""
 
-#: lxc/network.go:303 lxc/network.go:356 lxc/storage.go:435 lxc/storage.go:565
+#: lxc/file.go:446
+msgid "Missing target directory"
+msgstr ""
+
+#: lxc/monitor.go:30
+msgid "Monitor a local or remote LXD server"
+msgstr ""
+
+#: lxc/monitor.go:31
+msgid ""
+"Monitor a local or remote LXD server\n"
+"\n"
+"By default the monitor will listen to all message types."
+msgstr ""
+
+#: lxc/network.go:411 lxc/network.go:496 lxc/storage_volume.go:605
+#: lxc/storage_volume.go:686
 msgid "More than one device matches, specify the device name."
 msgstr ""
 
-#: lxc/file.go:460
+#: lxc/file.go:224
 msgid "More than one file to download, but target is not a directory"
 msgstr ""
 
-#: lxc/move.go:42
+#: lxc/move.go:30 lxc/move.go:31
+msgid "Move containers within or in between LXD instances"
+msgstr ""
+
+#: lxc/storage_volume.go:993 lxc/storage_volume.go:994
+msgid "Move storage volumes between pools"
+msgstr ""
+
+#: lxc/move.go:44
 msgid "Move the container without its snapshots"
 msgstr ""
 
-#: lxc/storage.go:1128
+#: lxc/storage_volume.go:375
 #, c-format
 msgid "Moving the storage volume: %s"
 msgstr ""
 
-#: lxc/image.go:1292
+#: lxc/image.go:588
 msgid "Must run as root to import from directory"
 msgstr ""
 
-#: lxc/action.go:74
+#: lxc/action.go:147
 msgid "Must supply container name for: "
 msgstr ""
 
-#: lxc/cluster.go:183 lxc/list.go:471 lxc/network.go:576 lxc/profile.go:573
-#: lxc/remote.go:409 lxc/storage.go:731 lxc/storage.go:936
+#: lxc/cluster.go:119 lxc/list.go:468 lxc/network.go:781 lxc/profile.go:613
+#: lxc/remote.go:463 lxc/storage.go:544 lxc/storage_volume.go:966
 msgid "NAME"
 msgstr ""
 
-#: lxc/network.go:558 lxc/operation.go:139 lxc/remote.go:380 lxc/remote.go:385
+#: lxc/network.go:763 lxc/operation.go:138 lxc/remote.go:434 lxc/remote.go:439
 msgid "NO"
 msgstr ""
 
-#: lxc/storage.go:941
+#: lxc/storage_volume.go:971
 msgid "NODE"
 msgstr ""
 
-#: lxc/info.go:117
+#: lxc/info.go:121
 #, c-format
 msgid "Name: %s"
 msgstr ""
 
-#: lxc/network.go:276
+#: lxc/network.go:303
 #, c-format
 msgid "Network %s created"
 msgstr ""
 
-#: lxc/network.go:393
+#: lxc/network.go:353
 #, c-format
 msgid "Network %s deleted"
 msgstr ""
 
-#: lxc/network.go:274
+#: lxc/network.go:301
 #, c-format
 msgid "Network %s pending on node %s"
 msgstr ""
 
-#: lxc/network.go:470
+#: lxc/network.go:906
 #, c-format
 msgid "Network %s renamed to %s"
 msgstr ""
 
-#: lxc/init.go:145 lxc/init.go:146
+#: lxc/init.go:45
 msgid "Network name"
 msgstr ""
 
-#: lxc/info.go:226
+#: lxc/info.go:230
 msgid "Network usage:"
 msgstr ""
 
-#: lxc/image.go:180 lxc/publish.go:36
+#: lxc/publish.go:39
 msgid "New alias to define at target"
 msgstr ""
 
-#: lxc/config.go:414
-msgid "No certificate provided to add"
+#: lxc/image.go:140 lxc/image.go:577
+msgid "New aliases to add to the image"
 msgstr ""
 
-#: lxc/network.go:312 lxc/network.go:365
+#: lxc/network.go:420 lxc/network.go:505
 msgid "No device found for this network"
 msgstr ""
 
-#: lxc/storage.go:444 lxc/storage.go:574
+#: lxc/storage_volume.go:614 lxc/storage_volume.go:695
 msgid "No device found for this storage volume."
 msgstr ""
 
-#: lxc/config.go:446
-msgid "No fingerprint specified."
-msgstr ""
-
-#: lxc/cluster.go:143
+#: lxc/cluster.go:268
 #, c-format
 msgid "Node %s removed"
 msgstr ""
 
-#: lxc/cluster.go:119
+#: lxc/cluster.go:221
 #, c-format
 msgid "Node %s renamed to %s"
 msgstr ""
 
-#: lxc/copy.go:46 lxc/init.go:150 lxc/move.go:45 lxc/network.go:105
-#: lxc/storage.go:165
+#: lxc/copy.go:45 lxc/init.go:48 lxc/move.go:47
 msgid "Node name"
 msgstr ""
 
-#: lxc/storage.go:388 lxc/storage.go:481
+#: lxc/storage_volume.go:164 lxc/storage_volume.go:243
 msgid "Only \"custom\" volumes can be attached to containers."
 msgstr ""
 
-#: lxc/remote.go:101
+#: lxc/remote.go:146
 msgid "Only https URLs are supported for simplestreams"
 msgstr ""
 
-#: lxc/image.go:688
+#: lxc/image.go:658
 msgid "Only https:// is supported for remote image import."
 msgstr ""
 
-#: lxc/network.go:421 lxc/network.go:605
+#: lxc/network.go:607 lxc/network.go:960
 msgid "Only managed networks can be modified."
 msgstr ""
 
-#: lxc/operation.go:85
+#: lxc/operation.go:83
 #, c-format
 msgid "Operation %s deleted"
 msgstr ""
 
-#: lxc/help.go:71 lxc/main.go:139 lxc/main.go:195
-msgid "Options:"
-msgstr ""
-
-#: lxc/exec.go:69
+#: lxc/exec.go:53
 msgid "Override the terminal mode (auto, interactive or non-interactive)"
 msgstr ""
 
-#: lxc/list.go:641
+#: lxc/list.go:638
 msgid "PERSISTENT"
 msgstr ""
 
-#: lxc/list.go:473
+#: lxc/list.go:470
 msgid "PID"
 msgstr ""
 
-#: lxc/list.go:472
+#: lxc/list.go:469
 msgid "PROCESSES"
 msgstr ""
 
-#: lxc/list.go:474
+#: lxc/list.go:471
 msgid "PROFILES"
 msgstr ""
 
-#: lxc/remote.go:411
+#: lxc/remote.go:465
 msgid "PROTOCOL"
 msgstr ""
 
-#: lxc/image.go:234 lxc/remote.go:413
+#: lxc/image.go:924 lxc/remote.go:467
 msgid "PUBLIC"
 msgstr ""
 
-#: lxc/info.go:220
+#: lxc/info.go:224
 msgid "Packets received"
 msgstr ""
 
-#: lxc/info.go:221
+#: lxc/info.go:225
 msgid "Packets sent"
 msgstr ""
 
-#: lxc/help.go:78
-msgid "Path to an alternate client configuration directory"
-msgstr ""
-
-#: lxc/help.go:79
-msgid "Path to an alternate server directory"
-msgstr ""
-
-#: lxc/main.go:240
-msgid "Pause containers."
-msgstr ""
-
-#: lxc/main.go:42
-msgid "Permission denied, are you in the lxd group?"
-msgstr ""
+#: lxc/action.go:48 lxc/action.go:49
+#, fuzzy
+msgid "Pause containers"
+msgstr "Creazione del container in corso"
 
-#: lxc/info.go:138
+#: lxc/info.go:142
 #, c-format
 msgid "Pid: %d"
 msgstr ""
 
-#: lxc/network.go:446 lxc/profile.go:276 lxc/storage.go:648 lxc/storage.go:1210
+#: lxc/network.go:632 lxc/profile.go:491 lxc/storage.go:299
+#: lxc/storage_volume.go:823
 msgid "Press enter to open the editor again"
 msgstr ""
 
-#: lxc/config.go:822 lxc/config.go:887 lxc/config.go:1397 lxc/config.go:1447
-#: lxc/image.go:1192
+#: lxc/config.go:196 lxc/config.go:260 lxc/config_metadata.go:145
+#: lxc/config_template.go:205 lxc/image.go:406
 msgid "Press enter to start the editor again"
 msgstr ""
 
-#: lxc/monitor.go:68
+#: lxc/monitor.go:47
 msgid "Pretty rendering"
 msgstr ""
 
-#: lxc/help.go:73
-msgid "Print debug information"
-msgstr ""
-
-#: lxc/help.go:72
-msgid "Print less common commands"
+#: lxc/main.go:55
+msgid "Print help"
 msgstr ""
 
-#: lxc/query.go:37
+#: lxc/query.go:36
 msgid "Print the raw response"
 msgstr ""
 
-#: lxc/help.go:74
-msgid "Print verbose information"
+#: lxc/main.go:54
+msgid "Print version number"
 msgstr ""
 
-#: lxc/info.go:162
+#: lxc/info.go:166
 #, c-format
 msgid "Processes: %d"
 msgstr ""
 
-#: lxc/profile.go:362
+#: lxc/main_aliases.go:123 lxc/main_aliases.go:131
+#, fuzzy, c-format
+msgid "Processing aliases failed: %s\n"
+msgstr "errore di processamento degli alias %s\n"
+
+#: lxc/profile.go:147
 #, c-format
 msgid "Profile %s added to %s"
 msgstr ""
 
-#: lxc/profile.go:226
+#: lxc/profile.go:333
 #, c-format
 msgid "Profile %s created"
 msgstr ""
 
-#: lxc/profile.go:310
+#: lxc/profile.go:381
 #, c-format
 msgid "Profile %s deleted"
 msgstr ""
 
-#: lxc/profile.go:397
+#: lxc/profile.go:690
 #, c-format
 msgid "Profile %s removed from %s"
 msgstr ""
 
-#: lxc/profile.go:300
+#: lxc/profile.go:738
 #, c-format
 msgid "Profile %s renamed to %s"
 msgstr ""
 
-#: lxc/copy.go:39 lxc/copy.go:40 lxc/init.go:141 lxc/init.go:142
+#: lxc/copy.go:40 lxc/init.go:43
 msgid "Profile to apply to the new container"
 msgstr ""
 
-#: lxc/profile.go:339
+#: lxc/profile.go:225
 #, c-format
 msgid "Profiles %s applied to %s"
 msgstr ""
 
-#: lxc/info.go:136
+#: lxc/info.go:140
 #, c-format
 msgid "Profiles: %s"
 msgstr ""
 
-#: lxc/image.go:619
+#: lxc/image.go:849
 msgid "Properties:"
 msgstr ""
 
-#: lxc/remote.go:72
+#: lxc/remote.go:92
 msgid "Public image server"
 msgstr ""
 
-#: lxc/image.go:602
+#: lxc/image.go:827
 #, c-format
 msgid "Public: %s"
 msgstr ""
 
-#: lxc/file.go:68 lxc/file.go:69
-msgid "Recursively push or pull files"
+#: lxc/publish.go:33 lxc/publish.go:34
+msgid "Publish containers as images"
+msgstr ""
+
+#: lxc/file.go:184 lxc/file.go:185
+msgid "Pull files from containers"
+msgstr ""
+
+#: lxc/file.go:323 lxc/file.go:324
+msgid "Push files into containers"
+msgstr ""
+
+#: lxc/file.go:192 lxc/file.go:330
+msgid "Recursively transfer files"
+msgstr ""
+
+#: lxc/image.go:1211 lxc/image.go:1212
+msgid "Refresh images"
 msgstr ""
 
-#: lxc/image.go:529
+#: lxc/image.go:1239
 #, c-format
 msgid "Refreshing the image: %s"
 msgstr ""
 
-#: lxc/remote.go:69
+#: lxc/remote.go:515
+#, fuzzy, c-format
+msgid "Remote %s already exists"
+msgstr "il remote %s esiste già"
+
+#: lxc/remote.go:507 lxc/remote.go:569 lxc/remote.go:618 lxc/remote.go:656
+#, fuzzy, c-format
+msgid "Remote %s doesn't exist"
+msgstr "il remote %s non esiste"
+
+#: lxc/remote.go:116
+#, fuzzy, c-format
+msgid "Remote %s exists as <%s>"
+msgstr "il remote %s esiste come %s"
+
+#: lxc/remote.go:511 lxc/remote.go:573 lxc/remote.go:660
+#, fuzzy, c-format
+msgid "Remote %s is static and cannot be modified"
+msgstr "il remote %s è statico e non può essere modificato"
+
+#: lxc/remote.go:89
 msgid "Remote admin password"
 msgstr ""
 
@@ -1063,7 +1808,7 @@ msgstr ""
 msgid "Remote operation canceled by user"
 msgstr ""
 
-#: lxc/info.go:122
+#: lxc/info.go:126
 #, c-format
 msgid "Remote: %s"
 msgstr ""
@@ -1073,728 +1818,1016 @@ msgstr ""
 msgid "Remove %s (yes/no): "
 msgstr ""
 
-#: lxc/storage.go:1247
-#, c-format
-msgid "Renamed storage volume from \"%s\" to \"%s\""
+#: lxc/cluster.go:237 lxc/cluster.go:238
+msgid "Remove a member from the cluster"
 msgstr ""
 
-#: lxc/delete.go:36 lxc/delete.go:37
-msgid "Require user confirmation"
+#: lxc/alias.go:197 lxc/alias.go:198
+msgid "Remove aliases"
 msgstr ""
 
-#: lxc/info.go:159
-msgid "Resources:"
+#: lxc/config_device.go:404 lxc/config_device.go:405
+msgid "Remove container devices"
 msgstr ""
 
-#: lxc/main.go:248
-msgid "Restart containers."
+#: lxc/profile.go:631 lxc/profile.go:632
+msgid "Remove profiles from containers"
 msgstr ""
 
-#: lxc/console.go:38
-msgid "Retrieve the container's console log"
+#: lxc/remote.go:548 lxc/remote.go:549
+msgid "Remove remotes"
 msgstr ""
 
-#: lxc/init.go:293
-#, c-format
-msgid "Retrieving image: %s"
+#: lxc/config_trust.go:196 lxc/config_trust.go:197
+msgid "Remove trusted clients"
 msgstr ""
 
-#: lxc/action.go:52
-msgid "Run command against all containers"
+#: lxc/cluster.go:191 lxc/cluster.go:192
+msgid "Rename a cluster member"
 msgstr ""
 
-#: lxc/image.go:237
-msgid "SIZE"
+#: lxc/alias.go:146 lxc/alias.go:147 lxc/image_alias.go:249
+#: lxc/image_alias.go:250
+msgid "Rename aliases"
 msgstr ""
 
-#: lxc/list.go:475
-msgid "SNAPSHOTS"
+#: lxc/rename.go:19 lxc/rename.go:20
+msgid "Rename containers and snapshots"
 msgstr ""
 
-#: lxc/storage.go:738
-msgid "SOURCE"
+#: lxc/network.go:872 lxc/network.go:873
+msgid "Rename networks"
 msgstr ""
 
-#: lxc/cluster.go:186 lxc/list.go:476 lxc/network.go:583 lxc/storage.go:736
-msgid "STATE"
+#: lxc/profile.go:704 lxc/profile.go:705
+msgid "Rename profiles"
 msgstr ""
 
-#: lxc/remote.go:414
-msgid "STATIC"
+#: lxc/remote.go:486 lxc/remote.go:487
+msgid "Rename remotes"
 msgstr ""
 
-#: lxc/operation.go:155
-msgid "STATUS"
+#: lxc/storage_volume.go:1024 lxc/storage_volume.go:1025
+msgid "Rename storage volumes"
 msgstr ""
 
-#: lxc/list.go:478
-msgid "STORAGE POOL"
+#: lxc/storage_volume.go:1073
+#, c-format
+msgid "Renamed storage volume from \"%s\" to \"%s\""
 msgstr ""
 
-#: lxc/remote.go:71
-msgid "Server authentication type (tls or macaroons)"
+#: lxc/delete.go:35
+msgid "Require user confirmation"
 msgstr ""
 
-#: lxc/remote.go:211
-msgid "Server certificate NACKed by user"
+#: lxc/info.go:163
+msgid "Resources:"
 msgstr ""
 
-#: lxc/remote.go:311
-msgid "Server doesn't trust us after authentication"
+#: lxc/action.go:68
+#, fuzzy
+msgid "Restart containers"
+msgstr "Creazione del container in corso"
+
+#: lxc/action.go:69
+msgid ""
+"Restart containers\n"
+"\n"
+"The opposite of \"lxc pause\" is \"lxc start\"."
 msgstr ""
 
-#: lxc/remote.go:70
-msgid "Server protocol (lxd or simplestreams)"
+#: lxc/restore.go:23
+msgid "Restore containers from snapshots"
 msgstr ""
 
-#: lxc/file.go:66
-msgid "Set the file's gid on push"
+#: lxc/restore.go:24
+msgid ""
+"Restore containers from snapshots\n"
+"\n"
+"If --stateful is passed, then the running state will be restored too."
 msgstr ""
 
-#: lxc/file.go:67
-msgid "Set the file's perms on push"
+#: lxc/console.go:39
+msgid "Retrieve the container's console log"
 msgstr ""
 
-#: lxc/file.go:65
+#: lxc/init.go:201
+#, c-format
+msgid "Retrieving image: %s"
+msgstr ""
+
+#: lxc/action.go:112
+msgid "Run command against all containers"
+msgstr ""
+
+#: lxc/image.go:927
+msgid "SIZE"
+msgstr ""
+
+#: lxc/list.go:472
+msgid "SNAPSHOTS"
+msgstr ""
+
+#: lxc/storage.go:551
+msgid "SOURCE"
+msgstr ""
+
+#: lxc/cluster.go:122 lxc/list.go:473 lxc/network.go:788 lxc/storage.go:549
+msgid "STATE"
+msgstr ""
+
+#: lxc/remote.go:468
+msgid "STATIC"
+msgstr ""
+
+#: lxc/operation.go:154
+msgid "STATUS"
+msgstr ""
+
+#: lxc/list.go:475
+msgid "STORAGE POOL"
+msgstr ""
+
+#: lxc/query.go:26 lxc/query.go:27
+msgid "Send a raw query to LXD"
+msgstr ""
+
+#: lxc/remote.go:91
+msgid "Server authentication type (tls or macaroons)"
+msgstr ""
+
+#: lxc/remote.go:260
+msgid "Server certificate NACKed by user"
+msgstr ""
+
+#: lxc/remote.go:360
+msgid "Server doesn't trust us after authentication"
+msgstr ""
+
+#: lxc/remote.go:90
+msgid "Server protocol (lxd or simplestreams)"
+msgstr ""
+
+#: lxc/config_device.go:492 lxc/config_device.go:493
+msgid "Set container device configuration keys"
+msgstr ""
+
+#: lxc/config.go:354 lxc/config.go:355
+msgid "Set container or server configuration keys"
+msgstr ""
+
+#: lxc/network.go:919 lxc/network.go:920
+msgid "Set network configuration keys"
+msgstr ""
+
+#: lxc/profile.go:752 lxc/profile.go:753
+msgid "Set profile configuration keys"
+msgstr ""
+
+#: lxc/storage.go:572 lxc/storage.go:573
+msgid "Set storage pool configuration keys"
+msgstr ""
+
+#: lxc/storage_volume.go:1088 lxc/storage_volume.go:1089
+msgid "Set storage volume configuration keys"
+msgstr ""
+
+#: lxc/remote.go:635 lxc/remote.go:636
+msgid "Set the URL for the remote"
+msgstr ""
+
+#: lxc/remote.go:597 lxc/remote.go:598
+msgid "Set the default remote"
+msgstr ""
+
+#: lxc/file.go:333
+msgid "Set the file's gid on push"
+msgstr ""
+
+#: lxc/file.go:334
+msgid "Set the file's perms on push"
+msgstr ""
+
+#: lxc/file.go:332
 msgid "Set the file's uid on push"
 msgstr ""
 
-#: lxc/help.go:29
-msgid "Show all commands (not just interesting ones)"
+#: lxc/main.go:57
+msgid "Show all debug messages"
 msgstr ""
 
-#: lxc/help.go:75
-msgid "Show client version"
+#: lxc/main.go:58
+msgid "Show all information messages"
 msgstr ""
 
-#: lxc/info.go:40
+#: lxc/config_metadata.go:175 lxc/config_metadata.go:176
+msgid "Show container metadata files"
+msgstr ""
+
+#: lxc/config.go:451 lxc/config.go:452
+msgid "Show container or server configurations"
+msgstr ""
+
+#: lxc/info.go:28 lxc/info.go:29
+msgid "Show container or server information"
+msgstr ""
+
+#: lxc/config_template.go:297 lxc/config_template.go:298
+msgid "Show content of container file templates"
+msgstr ""
+
+#: lxc/cluster.go:141 lxc/cluster.go:142
+msgid "Show details of a cluster member"
+msgstr ""
+
+#: lxc/operation.go:173 lxc/operation.go:174
+msgid "Show details on a background operation"
+msgstr ""
+
+#: lxc/config_device.go:581 lxc/config_device.go:582
+msgid "Show full device configuration for containers or profiles"
+msgstr ""
+
+#: lxc/image.go:1284 lxc/image.go:1285
+msgid "Show image properties"
+msgstr ""
+
+#: lxc/main.go:61
+msgid "Show less common commands"
+msgstr ""
+
+#: lxc/network.go:988 lxc/network.go:989
+msgid "Show network configurations"
+msgstr ""
+
+#: lxc/profile.go:811 lxc/profile.go:812
+msgid "Show profile configurations"
+msgstr ""
+
+#: lxc/storage.go:644 lxc/storage.go:645
+msgid "Show storage pool configurations and resources"
+msgstr ""
+
+#: lxc/storage_volume.go:1165
+msgid "Show storage volum configurations"
+msgstr ""
+
+#: lxc/storage_volume.go:1166
+msgid "Show storage volume configurations"
+msgstr ""
+
+#: lxc/info.go:39
 msgid "Show the container's last 100 log lines?"
 msgstr ""
 
-#: lxc/config.go:36
+#: lxc/remote.go:379 lxc/remote.go:380
+msgid "Show the default remote"
+msgstr ""
+
+#: lxc/config.go:455
 msgid "Show the expanded configuration"
 msgstr ""
 
-#: lxc/info.go:41
+#: lxc/info.go:40
 msgid "Show the resources available to the server"
 msgstr ""
 
-#: lxc/storage.go:163
+#: lxc/storage.go:648
 msgid "Show the resources available to the storage pool"
 msgstr ""
 
-#: lxc/storage.go:164
+#: lxc/storage.go:386
 msgid "Show the used and free space in bytes"
 msgstr ""
 
-#: lxc/image.go:600
+#: lxc/image.go:775 lxc/image.go:776
+msgid "Show useful information about images"
+msgstr ""
+
+#: lxc/storage.go:382 lxc/storage.go:383
+msgid "Show useful information about storage pools"
+msgstr ""
+
+#: lxc/image.go:825
 #, c-format
 msgid "Size: %.2fMB"
 msgstr ""
 
-#: lxc/info.go:240
+#: lxc/info.go:244
 msgid "Snapshots:"
 msgstr ""
 
-#: lxc/action.go:163
+#: lxc/action.go:242
 #, c-format
 msgid "Some containers failed to %s"
 msgstr ""
 
-#: lxc/image.go:634
+#: lxc/image.go:867
 msgid "Source:"
 msgstr ""
 
-#: lxc/main.go:258
-msgid "Start containers."
-msgstr ""
+#: lxc/action.go:29 lxc/action.go:30
+#, fuzzy
+msgid "Start containers"
+msgstr "Creazione del container in corso"
 
-#: lxc/launch.go:59
+#: lxc/launch.go:62
 #, c-format
 msgid "Starting %s"
 msgstr ""
 
-#: lxc/info.go:130
+#: lxc/info.go:134
 #, c-format
 msgid "Status: %s"
 msgstr ""
 
-#: lxc/main.go:264
-msgid "Stop containers."
+#: lxc/action.go:90 lxc/action.go:91
+msgid "Stop containers"
 msgstr ""
 
-#: lxc/publish.go:37 lxc/publish.go:38
+#: lxc/publish.go:40
 msgid "Stop the container if currently running"
 msgstr ""
 
-#: lxc/publish.go:136
+#: lxc/publish.go:144
 msgid "Stopping container failed!"
 msgstr ""
 
-#: lxc/delete.go:121
+#: lxc/delete.go:120
 #, c-format
 msgid "Stopping the container failed: %s"
 msgstr ""
 
-#: lxc/storage.go:538
+#: lxc/storage.go:144
 #, c-format
 msgid "Storage pool %s created"
 msgstr ""
 
-#: lxc/storage.go:598
+#: lxc/storage.go:194
 #, c-format
 msgid "Storage pool %s deleted"
 msgstr ""
 
-#: lxc/storage.go:536
+#: lxc/storage.go:142
 #, c-format
 msgid "Storage pool %s pending on node %s"
 msgstr ""
 
-#: lxc/init.go:147 lxc/init.go:148
+#: lxc/init.go:46
 msgid "Storage pool name"
 msgstr ""
 
-#: lxc/storage.go:980
+#: lxc/storage_volume.go:484
 #, c-format
 msgid "Storage volume %s created"
 msgstr ""
 
-#: lxc/storage.go:1000
+#: lxc/storage_volume.go:545
 #, c-format
 msgid "Storage volume %s deleted"
 msgstr ""
 
-#: lxc/storage.go:1135
+#: lxc/storage_volume.go:388
 msgid "Storage volume copied successfully!"
 msgstr ""
 
-#: lxc/storage.go:1129
+#: lxc/storage_volume.go:376
 msgid "Storage volume moved successfully!"
 msgstr ""
 
-#: lxc/action.go:50
-msgid "Store the container state (only for stop)"
-msgstr ""
+#: lxc/action.go:115
+#, fuzzy
+msgid "Store the container state"
+msgstr "Creazione del container in corso"
 
-#: lxc/info.go:201
+#: lxc/info.go:205
 msgid "Swap (current)"
 msgstr ""
 
-#: lxc/info.go:205
+#: lxc/info.go:209
 msgid "Swap (peak)"
 msgstr ""
 
-#: lxc/alias.go:85
+#: lxc/alias.go:128
 msgid "TARGET"
 msgstr ""
 
-#: lxc/list.go:477 lxc/network.go:516 lxc/network.go:577 lxc/operation.go:153
-#: lxc/storage.go:935
+#: lxc/list.go:474 lxc/network.go:782 lxc/network.go:854 lxc/operation.go:152
+#: lxc/storage_volume.go:965
 msgid "TYPE"
 msgstr ""
 
-#: lxc/delete.go:105
+#: lxc/delete.go:104
 msgid "The container is currently running, stop it first or pass --force."
 msgstr ""
 
-#: lxc/publish.go:101
+#: lxc/publish.go:109
 msgid ""
 "The container is currently running. Use --force to have it stopped and "
 "restarted."
 msgstr ""
 
-#: lxc/init.go:372
+#: lxc/init.go:280
 msgid "The container you are starting doesn't have any network attached to it."
 msgstr ""
 
-#: lxc/config.go:944 lxc/config.go:961 lxc/config.go:1240
+#: lxc/config_device.go:130 lxc/config_device.go:147 lxc/config_device.go:354
 msgid "The device already exists"
 msgstr "La periferica esiste già"
 
-#: lxc/config.go:1007 lxc/config.go:1019 lxc/config.go:1055 lxc/config.go:1073
-#: lxc/config.go:1119 lxc/config.go:1136 lxc/config.go:1179 lxc/config.go:1197
+#: lxc/config_device.go:218 lxc/config_device.go:230 lxc/config_device.go:442
+#: lxc/config_device.go:460 lxc/config_device.go:533 lxc/config_device.go:550
 msgid "The device doesn't exist"
 msgstr ""
 
-#: lxc/init.go:356
+#: lxc/init.go:264
 #, c-format
 msgid "The local image '%s' couldn't be found, trying '%s:%s' instead."
 msgstr ""
 
-#: lxc/init.go:352
+#: lxc/init.go:260
 #, c-format
 msgid "The local image '%s' couldn't be found, trying '%s:' instead."
 msgstr ""
 
-#: lxc/action.go:35
-msgid "The opposite of \"lxc pause\" is \"lxc start\"."
-msgstr ""
-
-#: lxc/config.go:1245
+#: lxc/config_device.go:359
 #, fuzzy
 msgid "The profile device doesn't exist"
 msgstr "il remote %s non esiste"
 
-#: lxc/network.go:317 lxc/network.go:370 lxc/storage.go:449 lxc/storage.go:579
+#: lxc/network.go:425 lxc/network.go:510 lxc/storage_volume.go:619
+#: lxc/storage_volume.go:700
 msgid "The specified device doesn't exist"
 msgstr ""
 
-#: lxc/network.go:321 lxc/network.go:374
+#: lxc/network.go:429 lxc/network.go:514
 msgid "The specified device doesn't match the network"
 msgstr ""
 
-#: lxc/publish.go:74
+#: lxc/publish.go:82
 msgid "There is no \"image name\".  Did you want an alias?"
 msgstr ""
 
-#: lxc/help.go:47
-msgid ""
-"This is the LXD command line client.\n"
-"\n"
-"All of LXD's features can be driven through the various commands below.\n"
-"For help with any of those, simply call them with --help."
-msgstr ""
-
-#: lxc/action.go:46
+#: lxc/action.go:122
 msgid "Time to wait for the container before killing it"
 msgstr ""
 
-#: lxc/image.go:603
+#: lxc/image.go:828
 msgid "Timestamps:"
 msgstr ""
 
-#: lxc/init.go:374
+#: lxc/init.go:282
 msgid "To attach a network to a container, use: lxc network attach"
 msgstr ""
 
-#: lxc/init.go:373
+#: lxc/init.go:281
 msgid "To create a new network, use: lxc network create"
 msgstr ""
 
-#: lxc/console.go:173
+#: lxc/console.go:185
 msgid "To detach from the console, press: <ctrl>+a q"
 msgstr ""
 
-#: lxc/main.go:172
+#: lxc/main.go:260
 msgid "To start your first container, try: lxc launch ubuntu:16.04"
 msgstr ""
 
-#: lxc/copy.go:43 lxc/move.go:43
+#: lxc/storage_volume.go:997
+msgid "Transfer mode, one of pull (default), push or relay"
+msgstr ""
+
+#: lxc/copy.go:42
+msgid "Transfer mode. One of pull (default), push or relay"
+msgstr ""
+
+#: lxc/move.go:45 lxc/storage_volume.go:286
 msgid "Transfer mode. One of pull (default), push or relay."
 msgstr ""
 
-#: lxc/copy.go:212
+#: lxc/copy.go:229
 #, c-format
 msgid "Transferring container: %s"
 msgstr ""
 
-#: lxc/image.go:717
+#: lxc/image.go:687
 #, c-format
 msgid "Transferring image: %s"
 msgstr ""
 
-#: lxc/action.go:108 lxc/launch.go:77
+#: lxc/action.go:181 lxc/launch.go:80
 #, c-format
 msgid "Try `lxc info --show-log %s` for more info"
 msgstr ""
 
-#: lxc/info.go:132
+#: lxc/info.go:136
 msgid "Type: ephemeral"
 msgstr ""
 
-#: lxc/info.go:134
+#: lxc/info.go:138
 msgid "Type: persistent"
 msgstr ""
 
-#: lxc/image.go:238
+#: lxc/image.go:928
 msgid "UPLOAD DATE"
 msgstr ""
 
-#: lxc/cluster.go:184 lxc/remote.go:410
+#: lxc/cluster.go:120 lxc/remote.go:464
 msgid "URL"
 msgstr ""
 
-#: lxc/network.go:580 lxc/profile.go:574 lxc/storage.go:740 lxc/storage.go:938
+#: lxc/network.go:785 lxc/profile.go:614 lxc/storage.go:553
+#: lxc/storage_volume.go:968
 msgid "USED BY"
 msgstr ""
 
-#: lxc/manpage.go:36
-msgid "Unable to find help2man."
+#: lxc/list.go:514
+#, c-format
+msgid "Unknown column shorthand char '%c' in '%s'"
 msgstr ""
 
-#: lxc/file.go:124
+#: lxc/file.go:596
 #, c-format
 msgid "Unknown file type '%s'"
 msgstr ""
 
-#: lxc/image.go:608
+#: lxc/config_device.go:649 lxc/config_device.go:650
+msgid "Unset container device configuration keys"
+msgstr ""
+
+#: lxc/config.go:559 lxc/config.go:560
+msgid "Unset container or server configuration keys"
+msgstr ""
+
+#: lxc/network.go:1050 lxc/network.go:1051
+msgid "Unset network configuration keys"
+msgstr ""
+
+#: lxc/profile.go:865 lxc/profile.go:866
+msgid "Unset profile configuration keys"
+msgstr ""
+
+#: lxc/storage.go:728 lxc/storage.go:729
+msgid "Unset storage pool configuration keys"
+msgstr ""
+
+#: lxc/storage_volume.go:1240 lxc/storage_volume.go:1241
+msgid "Unset storage volume configuration keys"
+msgstr ""
+
+#: lxc/image.go:835
 #, c-format
 msgid "Uploaded: %s"
 msgstr ""
 
-#: lxc/action.go:38
-#, c-format
+#: lxc/delete.go:47
+msgid "User aborted delete operation"
+msgstr ""
+
+#: lxc/utils/cancel.go:40
 msgid ""
-"Usage: lxc %s [--all] [<remote>:]<container> [[<remote>:]<container>...]\n"
-"\n"
-"%s%s"
+"User signaled us three times, exiting. The remote operation will keep "
+"running."
 msgstr ""
 
-#: lxc/help.go:45
-msgid "Usage: lxc <command> [options]"
+#: lxc/query.go:35
+msgid "Wait for the operation to complete"
 msgstr ""
 
-#: lxc/alias.go:22
+#: lxc/restore.go:36
 msgid ""
-"Usage: lxc alias <subcommand> [options]\n"
-"\n"
-"Manage command aliases.\n"
-"\n"
-"lxc alias add <alias> <target>\n"
-"    Add a new alias <alias> pointing to <target>.\n"
-"\n"
-"lxc alias remove <alias>\n"
-"    Remove the alias <alias>.\n"
-"\n"
-"lxc alias list\n"
-"    List all the aliases.\n"
-"\n"
-"lxc alias rename <old alias> <new alias>\n"
-"    Rename remote <old alias> to <new alias>."
+"Whether or not to restore the container's running state from snapshot (if "
+"available)"
 msgstr ""
 
-#: lxc/cluster.go:23
-msgid ""
-"Usage: lxc cluster <subcommand> [options]\n"
-"\n"
-"Manage cluster nodes.\n"
-"\n"
-"lxc cluster list [<remote>:]\n"
-"    List all nodes in the cluster.\n"
-"\n"
-"lxc cluster show [<remote>:]<node>\n"
-"    Show details of a node.\n"
-"\n"
-"lxc cluster rename [<remote>:]<node> <new-name>\n"
-"    Rename a cluster node.\n"
-"\n"
-"lxc cluster delete [<remote>:]<node> [--force]\n"
-"    Delete a node from the cluster."
+#: lxc/snapshot.go:31
+msgid "Whether or not to snapshot the container's running state"
 msgstr ""
 
-#: lxc/config.go:85
-msgid ""
-"Usage: lxc config <subcommand> [options]\n"
-"\n"
-"Change container or server configuration options.\n"
-"\n"
-"*Container configuration*\n"
-"\n"
-"lxc config get [<remote>:][container] <key>\n"
-"    Get container or server configuration key.\n"
-"\n"
-"lxc config set [<remote>:][container] <key> <value>\n"
-"    Set container or server configuration key.\n"
-"\n"
-"lxc config unset [<remote>:][container] <key>\n"
-"    Unset container or server configuration key.\n"
-"\n"
-"lxc config show [<remote>:][container] [--expanded]\n"
-"    Show container or server configuration.\n"
-"\n"
-"lxc config edit [<remote>:][container]\n"
-"    Edit configuration, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"*Container metadata*\n"
-"\n"
-"lxc config metadata show [<remote>:][container]\n"
-"    Show the container metadata.yaml content.\n"
-"\n"
-"lxc config metadata edit [<remote>:][container]\n"
-"    Edit the container metadata.yaml, either by launching external editor or "
-"reading STDIN.\n"
-"\n"
-"*Container templates*\n"
-"\n"
-"lxc config template list [<remote>:][container]\n"
-"    List the names of template files for a container.\n"
-"\n"
-"lxc config template show [<remote>:][container] [template]\n"
-"    Show the content of a template file for a container.\n"
-"\n"
-"lxc config template create [<remote>:][container] [template]\n"
-"    Add an empty template file for a container.\n"
-"\n"
-"lxc config template edit [<remote>:][container] [template]\n"
-"    Edit the content of a template file for a container, either by launching "
-"external editor or reading STDIN.\n"
-"\n"
-"lxc config template delete [<remote>:][container] [template]\n"
-"    Delete a template file for a container.\n"
-"\n"
-"\n"
-"*Device management*\n"
-"\n"
-"lxc config device add [<remote>:]<container> <device> <type> [key=value...]\n"
-"    Add a device to a container.\n"
-"\n"
-"lxc config device get [<remote>:]<container> <device> <key>\n"
-"    Get a device property.\n"
-"\n"
-"lxc config device set [<remote>:]<container> <device> <key> <value>\n"
-"    Set a device property.\n"
-"\n"
-"lxc config device unset [<remote>:]<container> <device> <key>\n"
-"    Unset a device property.\n"
-"\n"
-"lxc config device override [<remote>:]<container> <device> [key=value...]\n"
-"    Copy a profile inherited device into local container config.\n"
-"\n"
-"lxc config device list [<remote>:]<container>\n"
-"    List devices for container.\n"
-"\n"
-"lxc config device show [<remote>:]<container>\n"
-"    Show full device details for container.\n"
-"\n"
-"lxc config device remove [<remote>:]<container> <name>...\n"
-"    Remove device from container.\n"
-"\n"
-"*Client trust store management*\n"
-"\n"
-"lxc config trust list [<remote>:]\n"
-"    List all trusted certs.\n"
-"\n"
-"lxc config trust add [<remote>:] <certfile.crt>\n"
-"    Add certfile.crt to trusted hosts.\n"
-"\n"
-"lxc config trust remove [<remote>:] [hostname|fingerprint]\n"
-"    Remove the cert from trusted hosts.\n"
-"\n"
-"*Examples*\n"
-"\n"
-"cat config.yaml | lxc config edit <container>\n"
-"    Update the container configuration from config.yaml.\n"
-"\n"
-"lxc config device add [<remote>:]container1 <device-name> disk source=/share/"
-"c1 path=opt\n"
-"    Will mount the host's /share/c1 onto /opt in the container.\n"
-"\n"
-"lxc config set [<remote>:]<container> limits.cpu 2\n"
-"    Will set a CPU limit of \"2\" for the container.\n"
-"\n"
-"lxc config set core.https_address [::]:8443\n"
-"    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
-"\n"
-"lxc config set core.trust_password blah\n"
-"    Will set the server's trust password to blah."
+#: lxc/network.go:765 lxc/operation.go:140 lxc/remote.go:436 lxc/remote.go:441
+msgid "YES"
 msgstr ""
 
-#: lxc/console.go:31
-msgid ""
-"Usage: lxc console [<remote>:]<container> [-l]\n"
-"\n"
-"Interact with the container's console device and log."
+#: lxc/exec.go:122
+msgid "You can't pass -t and -T at the same time"
 msgstr ""
 
-#: lxc/copy.go:30
-msgid ""
-"Usage: lxc copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>] "
-"[--ephemeral|e] [--profile|-p <profile>...] [--config|-c <key=value>...] [--"
-"container-only] [--target <node>]\n"
-"\n"
-"Copy containers within or in between LXD instances."
+#: lxc/exec.go:126
+msgid "You can't pass -t or -T at the same time as --mode"
 msgstr ""
 
-#: lxc/delete.go:27
-msgid ""
-"Usage: lxc delete [<remote>:]<container>[/<snapshot>] "
-"[[<remote>:]<container>[/<snapshot>]...]\n"
-"\n"
-"Delete containers and snapshots."
+#: lxc/copy.go:78
+#, fuzzy
+msgid "You must specify a destination container name when using --target"
+msgstr "Occorre specificare un nome di container come origine"
+
+#: lxc/copy.go:73 lxc/move.go:188
+msgid "You must specify a source container name"
+msgstr "Occorre specificare un nome di container come origine"
+
+#: lxc/copy.go:68 lxc/move.go:91 lxc/move.go:183
+msgid "You must use the same source and destination remote when using --target"
 msgstr ""
 
-#: lxc/exec.go:53
-msgid ""
-"Usage: lxc exec [<remote>:]<container> [-t] [-T] [-n] [--mode=auto|"
-"interactive|non-interactive] [--env KEY=VALUE...] [--] <command line>\n"
-"\n"
-"Execute commands in containers.\n"
-"\n"
-"The command is executed directly using exec, so there is no shell and shell "
-"patterns (variables, file redirects, ...)\n"
-"won't be understood. If you need a shell environment you need to execute the "
-"shell executable, passing the shell commands\n"
-"as arguments, for example:\n"
-"\n"
-"    lxc exec <container> -- sh -c \"cd /tmp && pwd\"\n"
-"\n"
-"Mode defaults to non-interactive, interactive mode is selected if both stdin "
-"AND stdout are terminals (stderr is ignored)."
+#: lxc/alias.go:53
+msgid "add <alias> <target>"
 msgstr ""
 
-#: lxc/file.go:39
-msgid ""
-"Usage: lxc file <subcommand> [options]\n"
-"\n"
-"Manage files in containers.\n"
-"\n"
-"lxc file pull [-r|--recursive] [<remote>:]<container>/<path> "
-"[[<remote>:]<container>/<path>...] <target path>\n"
-"    Pull files from containers.\n"
-"\n"
-"lxc file push [-r|--recursive] [-p|--create-dirs] [--uid=UID] [--gid=GID] [--"
-"mode=MODE] <source path> [<source path>...] [<remote>:]<container>/<path>\n"
-"    Push files into containers.\n"
-"\n"
-"lxc file delete [<remote>:]<container>/<path> [[<remote>:]<container>/"
-"<path>...]\n"
-"    Delete files in containers.\n"
-"\n"
-"lxc file edit [<remote>:]<container>/<path>\n"
-"    Edit files in containers using the default text editor.\n"
-"\n"
-"*Examples*\n"
-"lxc file push /etc/hosts foo/etc/hosts\n"
-"   To push /etc/hosts into the container \"foo\".\n"
-"\n"
-"lxc file pull foo/etc/hosts .\n"
-"   To pull /etc/hosts from the container and write it to the current "
-"directory."
+#: lxc/config_trust.go:57
+msgid "add [<remote>:] <cert>"
 msgstr ""
 
-#: lxc/finger.go:15
-msgid ""
-"Usage: lxc finger [<remote>:]\n"
-"\n"
-"Check if the LXD server is alive."
+#: lxc/profile.go:100
+msgid "add [<remote>:]<container> <profile>"
 msgstr ""
 
-#: lxc/help.go:22
-msgid ""
-"Usage: lxc help [--all]\n"
-"\n"
-"Help page for the LXD client."
+#: lxc/config_device.go:74
+msgid "add [<remote>:]<container|profile> <device> <type> [key=value...]"
 msgstr ""
 
-#: lxc/image.go:73
-msgid ""
-"Usage: lxc image <subcommand> [options]\n"
-"\n"
-"Manipulate container images.\n"
-"\n"
-"In LXD containers are created from images. Those images were themselves\n"
-"either generated from an existing container or downloaded from an image\n"
-"server.\n"
-"\n"
-"When using remote images, LXD will automatically cache images for you\n"
-"and remove them upon expiration.\n"
-"\n"
-"The image unique identifier is the hash (sha-256) of its representation\n"
-"as a compressed tarball (or for split images, the concatenation of the\n"
-"metadata and rootfs tarballs).\n"
-"\n"
-"Images can be referenced by their full hash, shortest unique partial\n"
-"hash or alias name (if one is set).\n"
-"\n"
-"\n"
-"lxc image import <tarball>|<dir> [<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) or an image directory into the LXD "
-"image store.\n"
-"    Directory import is only available on Linux and must be performed as "
-"root.\n"
-"\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"
-"    Delete one or more images from the LXD image store.\n"
-"\n"
-"lxc image refresh [<remote>:]<image> [[<remote>:]<image>...]\n"
-"    Refresh one or more images from its parent remote.\n"
-"\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"
-"    The target may be an existing directory, file name, or \"-\" to specify\n"
-"    stdout.  The target MUST be a directory when exporting a split image.\n"
-"    If the target is a directory, the image's name (each part's name for\n"
-"    split images) as found in the database will be used for the exported\n"
-"    image.  If the target is a file (not a directory and not stdout), then\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"
-"    Print everything LXD knows about a given image.\n"
-"\n"
-"lxc image list [<remote>:] [filter] [--format csv|json|table|yaml] [-c "
-"<columns>]\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"
-"    The -c option takes a (optionally comma-separated) list of arguments "
-"that\n"
-"    control which image attributes to output when displaying in table or "
-"csv\n"
-"    format.\n"
-"\n"
-"    Default column layout is: lfpdasu\n"
-"\n"
-"    Column shorthand chars:\n"
-"\n"
-"        l - Shortest image alias (and optionally number of other aliases)\n"
-"\n"
-"        L - Newline-separated list of all image aliases\n"
-"\n"
-"        f - Fingerprint\n"
-"\n"
-"        p - Whether image is public\n"
-"\n"
-"        d - Description\n"
-"\n"
-"        a - Architecture\n"
-"\n"
-"        s - Size\n"
-"\n"
-"        u - Upload date\n"
-"\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"
-"    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"
-"    Create a new alias for an existing image.\n"
-"\n"
-"lxc image alias rename [<remote>:]<alias> <new-name>\n"
-"    Rename an alias.\n"
-"\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."
+#: lxc/remote.go:82
+msgid "add [<remote>] <IP|FQDN|URL>"
+msgstr ""
+
+#: lxc/alias.go:21 lxc/image_alias.go:24
+#, fuzzy
+msgid "alias"
+msgstr "Alias:"
+
+#: lxc/profile.go:160
+msgid "assign [<remote>:]<container> <profiles>"
+msgstr ""
+
+#: lxc/network.go:102
+msgid "attach [<remote>:]<network> <container> [device name] [interface name]"
+msgstr ""
+
+#: lxc/storage_volume.go:120
+msgid "attach [<remote>:]<pool> <volume> <container> [device name] <path>"
+msgstr ""
+
+#: lxc/storage_volume.go:199
+msgid ""
+"attach-profile [<remote:>]<pool> <volume> <profile> [device name] <path>"
+msgstr ""
+
+#: lxc/network.go:175
+msgid ""
+"attach-profile [<remote>:]<network> <profile> [device name] [interface name]"
+msgstr ""
+
+#: lxc/cluster.go:24
+msgid "cluster"
+msgstr ""
+
+#: lxc/config.go:27
+msgid "config"
+msgstr ""
+
+#: lxc/console.go:30
+msgid "console [<remote>:]<container>"
+msgstr ""
+
+#: lxc/storage_volume.go:280
+msgid "copy <pool>/<volume> <pool>/<volume>"
+msgstr ""
+
+#: lxc/image.go:128
+msgid "copy [<remote>:]<image> <remote>:"
+msgstr ""
+
+#: lxc/profile.go:238
+msgid "copy [<remote>:]<profile> [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/copy.go:32
+msgid "copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>]"
+msgstr ""
+
+#: lxc/image_alias.go:57
+msgid "create [<remote>:]<alias> <fingerprint>"
+msgstr ""
+
+#: lxc/config_template.go:65
+msgid "create [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/network.go:248
+msgid "create [<remote>:]<network> [key=value...]"
+msgstr ""
+
+#: lxc/storage.go:87
+msgid "create [<remote>:]<pool> <driver> [key=value]..."
+msgstr ""
+
+#: lxc/storage_volume.go:424
+msgid "create [<remote>:]<pool> <volume> [key=value]..."
+msgstr ""
+
+#: lxc/profile.go:295
+msgid "create [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/remote.go:453
+msgid "default"
+msgstr ""
+
+#: lxc/image_alias.go:103
+msgid "delete [<remote>:]<alias>"
+msgstr ""
+
+#: lxc/config_template.go:107
+msgid "delete [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/file.go:70
+msgid "delete [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...]"
+msgstr ""
+
+#: lxc/delete.go:27
+msgid ""
+"delete [<remote>:]<container>[/<snapshot>] [[<remote>:]<container>[/"
+"<snapshot>]...]"
+msgstr ""
+
+#: lxc/image.go:258
+msgid "delete [<remote>:]<image> [[<remote>:]<image>...]"
+msgstr ""
+
+#: lxc/network.go:317
+msgid "delete [<remote>:]<network>"
+msgstr ""
+
+#: lxc/operation.go:51
+msgid "delete [<remote>:]<operation>"
+msgstr ""
+
+#: lxc/storage.go:158
+msgid "delete [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:498
+msgid "delete [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:345
+msgid "delete [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/storage.go:431
+msgid "description"
+msgstr ""
+
+#: lxc/network.go:365
+msgid "detach [<remote>:]<network> <container> [device name]"
+msgstr ""
+
+#: lxc/storage_volume.go:559
+msgid "detach [<remote>:]<pool> <volume> <container> [device name]"
+msgstr ""
+
+#: lxc/storage_volume.go:641
+msgid "detach-profile [<remote:>]<pool> <volume> <profile> [device name]"
+msgstr ""
+
+#: lxc/network.go:450
+msgid "detach-profile [<remote>:]<network> <container> [device name]"
+msgstr ""
+
+#: lxc/config_device.go:22
+msgid "device"
+msgstr ""
+
+#: lxc/init.go:223
+msgid "didn't get any affected image, container or snapshot from server"
+msgstr ""
+
+#: lxc/image.go:819
+msgid "disabled"
+msgstr ""
+
+#: lxc/storage.go:430
+msgid "driver"
+msgstr ""
+
+#: lxc/config_template.go:150
+msgid "edit [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/file.go:120
+msgid "edit [<remote>:]<container>/<path>"
+msgstr ""
+
+#: lxc/image.go:310
+msgid "edit [<remote>:]<image>"
+msgstr ""
+
+#: lxc/network.go:535
+msgid "edit [<remote>:]<network>"
+msgstr ""
+
+#: lxc/storage.go:206
+msgid "edit [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:722
+msgid "edit [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:394
+msgid "edit [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/config.go:86 lxc/config_metadata.go:52
+msgid "edit [<remote>:][container]"
+msgstr ""
+
+#: lxc/image.go:821
+msgid "enabled"
+msgstr ""
+
+#: lxc/action.go:234
+#, c-format
+msgid "error: %v"
+msgstr ""
+
+#: lxc/exec.go:37
+msgid "exec [<remote>:]<container> [flags] [--] <command line>"
+msgstr ""
+
+#: lxc/image.go:433
+msgid "export [<remote>:]<image> [target]"
+msgstr ""
+
+#: lxc/file.go:38
+msgid "file"
+msgstr ""
+
+#: lxc/config_device.go:177
+msgid "get [<remote>:]<container|profile> <device> <key>"
+msgstr ""
+
+#: lxc/network.go:658
+msgid "get [<remote>:]<network> <key>"
+msgstr ""
+
+#: lxc/storage.go:326
+msgid "get [<remote>:]<pool> <key>"
+msgstr ""
+
+#: lxc/storage_volume.go:851
+msgid "get [<remote>:]<pool> <volume> <key>"
+msgstr ""
+
+#: lxc/profile.go:518
+msgid "get [<remote>:]<profile> <key>"
+msgstr ""
+
+#: lxc/config.go:287
+msgid "get [<remote>:][container] <key>"
+msgstr ""
+
+#: lxc/remote.go:378
+msgid "get-default"
+msgstr ""
+
+#: lxc/image.go:40
+msgid "image"
+msgstr ""
+
+#: lxc/image.go:569
+msgid ""
+"import <tarball>|<directory>|<URL> [<rootfs tarball>] [<remote>:] "
+"[key=value...]"
+msgstr ""
+
+#: lxc/storage.go:428
+msgid "info"
+msgstr ""
+
+#: lxc/image.go:774
+msgid "info [<remote>:]<image>"
+msgstr ""
+
+#: lxc/storage.go:381
+msgid "info [<remote>:]<pool>"
 msgstr ""
 
 #: lxc/info.go:27
+msgid "info [<remote>:][<container>]"
+msgstr ""
+
+#: lxc/init.go:33
+msgid "init [<remote>:]<image> [<remote>:][<name>]"
+msgstr ""
+
+#: lxc/launch.go:20
+msgid "launch [<remote>:]<image> [<remote>:][<name>]"
+msgstr ""
+
+#: lxc/alias.go:96 lxc/remote.go:411
+msgid "list"
+msgstr ""
+
+#: lxc/cluster.go:56 lxc/config_trust.go:112 lxc/network.go:716
+#: lxc/operation.go:95 lxc/profile.go:565 lxc/storage.go:488
+msgid "list [<remote>:]"
+msgstr ""
+
+#: lxc/image.go:887
+msgid "list [<remote>:] [filter]"
+msgstr ""
+
+#: lxc/image_alias.go:146
+msgid "list [<remote>:] [filters...]"
+msgstr ""
+
+#: lxc/list.go:45
+msgid "list [<remote>:] [filters]"
+msgstr ""
+
+#: lxc/config_template.go:234
+msgid "list [<remote>:]<container>"
+msgstr ""
+
+#: lxc/config_device.go:249
+msgid "list [<remote>:]<container|profile>"
+msgstr ""
+
+#: lxc/storage_volume.go:915
+msgid "list [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/network.go:806
+msgid "list-leases [<remote>:]<network>"
+msgstr ""
+
+#: lxc/alias.go:57
+msgid ""
+"lxc alias add list list -c ns46S\n"
+"    Overwrite the \"list\" command to pass -c ns46S."
+msgstr ""
+
+#: lxc/alias.go:200
+msgid ""
+"lxc alias remove my-list\n"
+"    Remove the \"my-list\" alias."
+msgstr ""
+
+#: lxc/alias.go:149
+msgid ""
+"lxc alias rename list my-list\n"
+"    Rename existing alias \"list\" to \"my-list\"."
+msgstr ""
+
+#: lxc/config_device.go:78
+msgid ""
+"lxc config device add [<remote>:]container1 <device-name> disk source=/share/"
+"c1 path=opt\n"
+"    Will mount the host's /share/c1 onto /opt in the container."
+msgstr ""
+
+#: lxc/config.go:90
 msgid ""
-"Usage: lxc info [<remote>:][<container>] [--show-log] [--resources]\n"
+"lxc config edit <container> < container.yaml\n"
+"    Update the container configuration from config.yaml."
+msgstr ""
+
+#: lxc/config.go:357
+msgid ""
+"lxc config set [<remote>:]<container> limits.cpu 2\n"
+"    Will set a CPU limit of \"2\" for the container.\n"
 "\n"
-"Show container or server information.\n"
+"lxc config set core.https_address [::]:8443\n"
+"    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
+"\n"
+"lxc config set core.trust_password blah\n"
+"    Will set the server's trust password to blah."
+msgstr ""
+
+#: lxc/file.go:187
+msgid ""
+"lxc file pull foo/etc/hosts .\n"
+"   To pull /etc/hosts from the container and write it to the current "
+"directory."
+msgstr ""
+
+#: lxc/file.go:326
+msgid ""
+"lxc file push /etc/hosts foo/etc/hosts\n"
+"   To push /etc/hosts into the container \"foo\"."
+msgstr ""
+
+#: lxc/image.go:314
+msgid ""
+"lxc image edit <image>\n"
+"    Launch a text editor to edit the properties\n"
 "\n"
+"lxc image edit <image> < image.yaml\n"
+"    Load the image properties from a YAML file"
+msgstr ""
+
+#: lxc/info.go:31
+msgid ""
 "lxc info [<remote>:]<container> [--show-log]\n"
 "    For container information.\n"
 "\n"
@@ -1802,166 +2835,41 @@ msgid ""
 "    For LXD server information."
 msgstr ""
 
-#: lxc/init.go:79
-msgid ""
-"Usage: lxc init [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
-"profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
-"<node>]\n"
-"\n"
-"Create containers from images.\n"
-"\n"
-"Not specifying -p will result in the default profile.\n"
-"Specifying \"-p\" with no argument will result in no profile.\n"
-"\n"
-"Examples:\n"
-"    lxc init ubuntu:16.04 u1"
+#: lxc/init.go:37
+msgid "lxc init ubuntu:16.04 u1"
 msgstr ""
 
-#: lxc/launch.go:20
-msgid ""
-"Usage: lxc launch [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
-"profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
-"<node>]\n"
-"\n"
-"Create and start containers from images.\n"
-"\n"
-"Not specifying -p will result in the default profile.\n"
-"Specifying \"-p\" with no argument will result in no profile.\n"
-"\n"
-"Examples:\n"
-"    lxc launch ubuntu:16.04 u1"
+#: lxc/launch.go:24
+msgid "lxc launch ubuntu:16.04 u1"
 msgstr ""
 
-#: lxc/list.go:44
+#: lxc/list.go:103
 msgid ""
-"Usage: lxc list [<remote>:] [filters] [--format csv|json|table|yaml] [-c "
-"<columns>] [--fast]\n"
-"\n"
-"List the existing containers.\n"
-"\n"
-"Default column layout: ns46tS\n"
-"Fast column layout: nsacPt\n"
-"\n"
-"*Filters*\n"
-"A single keyword like \"web\" which will list any container with a name "
-"starting by \"web\".\n"
-"\n"
-"A regular expression on the container name. (e.g. .*web.*01$).\n"
-"\n"
-"A key/value pair referring to a configuration item. For those, the namespace "
-"can be abbreviated to the smallest unambiguous identifier.\n"
-"\t- \"user.blah=abc\" will list all containers with the \"blah\" user "
-"property set to \"abc\".\n"
-"\n"
-"\t- \"u.blah=abc\" will do the same\n"
-"\n"
-"\t- \"security.privileged=true\" will list all privileged containers\n"
-"\n"
-"\t- \"s.privileged=true\" will do the same\n"
-"\n"
-"A regular expression matching a configuration item or its value. (e.g. "
-"volatile.eth0.hwaddr=00:16:3e:.*).\n"
-"\n"
-"*Columns*\n"
-"The -c option takes a comma separated list of arguments that control\n"
-"which container attributes to output when displaying in table or csv\n"
-"format.\n"
-"\n"
-"Column arguments are either pre-defined shorthand chars (see below),\n"
-"or (extended) config keys.\n"
-"\n"
-"Commas between consecutive shorthand chars are optional.\n"
-"\n"
-"Pre-defined column shorthand chars:\n"
-"\n"
-"\t4 - IPv4 address\n"
-"\n"
-"\t6 - IPv6 address\n"
-"\n"
-"\ta - Architecture\n"
-"\n"
-"\tb - Storage pool\n"
-"\n"
-"\tc - Creation date\n"
-"\n"
-"\td - Description\n"
-"\n"
-"\tl - Last used date\n"
-"\n"
-"\tn - Name\n"
-"\n"
-"\tN - Number of Processes\n"
-"\n"
-"\tp - PID of the container's init process\n"
-"\n"
-"\tP - Profiles\n"
-"\n"
-"\ts - State\n"
-"\n"
-"\tS - Number of snapshots\n"
-"\n"
-"\tt - Type (persistent or ephemeral)\n"
-"\n"
-"\tL - Location of the container (e.g. its node)\n"
-"\n"
-"Custom columns are defined with \"key[:name][:maxWidth]\":\n"
-"\n"
-"\tKEY: The (extended) config key to display\n"
-"\n"
-"\tNAME: Name to display in the column header.\n"
-"\tDefaults to the key if not specified or empty.\n"
-"\n"
-"\tMAXWIDTH: Max width of the column (longer results are truncated).\n"
-"\tDefaults to -1 (unlimited). Use 0 to limit to the column header size.\n"
-"\n"
-"*Examples*\n"
 "lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:"
 "MAC\n"
-"\tShows a list of containers using the \"NAME\", \"BASE IMAGE\", \"STATE\", "
-"\"IPV4\",\n"
-"\t\"IPV6\" and \"MAC\" columns.\n"
-"\n"
-"\t\"BASE IMAGE\" and \"MAC\" are custom columns generated from container "
+"  Show containers using the \"NAME\", \"BASE IMAGE\", \"STATE\", \"IPV4\", "
+"\"IPV6\" and \"MAC\" columns.\n"
+"  \"BASE IMAGE\" and \"MAC\" are custom columns generated from container "
 "configuration keys.\n"
 "\n"
 "lxc list -c ns,user.comment:comment\n"
-"\tList images with their running state and user comment. "
-msgstr ""
-
-#: lxc/manpage.go:20
-msgid ""
-"Usage: lxc manpage <directory>\n"
-"\n"
-"Generate all the LXD manpages."
+"  List images with their running state and user comment."
 msgstr ""
 
-#: lxc/monitor.go:49
+#: lxc/monitor.go:35
 msgid ""
-"Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
-"\n"
-"Monitor a local or remote LXD server.\n"
-"\n"
-"By default the monitor will listen to all message types.\n"
-"\n"
-"Message types to listen for can be specified with --type.\n"
-"\n"
-"*Examples*\n"
 "lxc monitor --type=logging\n"
 "    Only show log messages.\n"
 "\n"
 "lxc monitor --pretty --type=logging --loglevel=info\n"
 "    Show a pretty log of messages with info level or higher.\n"
+"\n"
+"lxc monitor --type=lifecycle\n"
+"    Only show lifecycle events."
 msgstr ""
 
-#: lxc/move.go:26
+#: lxc/move.go:33
 msgid ""
-"Usage: lxc move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
-"<snapshot>]] [--container-only] [--target <node>]\n"
-"\n"
-"Move containers within or in between LXD instances.\n"
-"\n"
 "lxc move [<remote>:]<source container> [<remote>:][<destination container>] "
 "[--container-only]\n"
 "    Move a container between two hosts, renaming it if destination name "
@@ -1974,160 +2882,14 @@ msgid ""
 "    Rename a snapshot."
 msgstr ""
 
-#: lxc/network.go:52
-msgid ""
-"Usage: lxc network <subcommand> [options]\n"
-"\n"
-"Manage and attach containers to networks.\n"
-"\n"
-"lxc network list [<remote>:]\n"
-"    List available networks.\n"
-"\n"
-"lxc network list-leases [<remote>:]<network>\n"
-"    List the DHCP leases for the network\n"
-"\n"
-"lxc network show [<remote>:]<network> [--target <node>]\n"
-"    Show details of a network.\n"
-"\n"
-"lxc network create [<remote>:]<network> [key=value...] [--target <node>]\n"
-"    Create a network.\n"
-"\n"
-"lxc network get [<remote>:]<network> <key> [--target <node>]\n"
-"    Get network configuration.\n"
-"\n"
-"lxc network set [<remote>:]<network> <key> <value>\n"
-"    Set network configuration.\n"
-"\n"
-"lxc network unset [<remote>:]<network> <key>\n"
-"    Unset network configuration.\n"
-"\n"
-"lxc network delete [<remote>:]<network>\n"
-"    Delete a network.\n"
-"\n"
-"lxc network edit [<remote>:]<network>\n"
-"    Edit network, either by launching external editor or reading STDIN.\n"
-"\n"
-"lxc network rename [<remote>:]<network> <new-name>\n"
-"    Rename a network.\n"
-"\n"
-"lxc network attach [<remote>:]<network> <container> [device name] [interface "
-"name]\n"
-"    Attach a network interface connecting the network to a specified "
-"container.\n"
-"\n"
-"lxc network attach-profile [<remote>:]<network> <profile> [device name] "
-"[interface name]\n"
-"    Attach a network interface connecting the network to a specified "
-"profile.\n"
-"\n"
-"lxc network detach [<remote>:]<network> <container> [device name]\n"
-"    Remove a network interface connecting the network to a specified "
-"container.\n"
-"\n"
-"lxc network detach-profile [<remote>:]<network> <container> [device name]\n"
-"    Remove a network interface connecting the network to a specified "
-"profile.\n"
-"\n"
-"*Examples*\n"
-"cat network.yaml | lxc network edit <network>\n"
-"    Update a network using the content of network.yaml"
-msgstr ""
-
-#: lxc/operation.go:25
+#: lxc/operation.go:176
 msgid ""
-"Usage: lxc operation <subcommand> [options]\n"
-"\n"
-"List, show and delete background operations.\n"
-"\n"
-"lxc operation list [<remote>:]\n"
-"    List background operations.\n"
-"\n"
-"lxc operation show [<remote>:]<operation>\n"
-"    Show details on a background operation.\n"
-"\n"
-"lxc operation delete [<remote>:]<operation>\n"
-"    Delete a background operation (will attempt to cancel).\n"
-"\n"
-"*Examples*\n"
 "lxc operation show 344a79e4-d88a-45bf-9c39-c72c26f6ab8a\n"
 "    Show details on that operation UUID"
 msgstr ""
 
-#: lxc/profile.go:51
+#: lxc/profile.go:165
 msgid ""
-"Usage: lxc profile <subcommand> [options]\n"
-"\n"
-"Manage container configuration profiles.\n"
-"\n"
-"*Profile configuration*\n"
-"lxc profile list [<remote>:]\n"
-"    List available profiles.\n"
-"\n"
-"lxc profile show [<remote>:]<profile>\n"
-"    Show details of a profile.\n"
-"\n"
-"lxc profile create [<remote>:]<profile>\n"
-"    Create a profile.\n"
-"\n"
-"lxc profile copy [<remote>:]<profile> [<remote>:]<profile>\n"
-"    Copy the profile.\n"
-"\n"
-"lxc profile get [<remote>:]<profile> <key>\n"
-"    Get profile configuration.\n"
-"\n"
-"lxc profile set [<remote>:]<profile> <key> <value>\n"
-"    Set profile configuration.\n"
-"\n"
-"lxc profile unset [<remote>:]<profile> <key>\n"
-"    Unset profile configuration.\n"
-"\n"
-"lxc profile delete [<remote>:]<profile>\n"
-"    Delete a profile.\n"
-"\n"
-"lxc profile edit [<remote>:]<profile>\n"
-"    Edit profile, either by launching external editor or reading STDIN.\n"
-"\n"
-"lxc profile rename [<remote>:]<profile> <new-name>\n"
-"    Rename a profile.\n"
-"\n"
-"*Profile assignment*\n"
-"lxc profile assign [<remote>:]<container> <profiles>\n"
-"    Replace the current set of profiles for the container by the one "
-"provided.\n"
-"\n"
-"lxc profile add [<remote>:]<container> <profile>\n"
-"    Add a profile to a container\n"
-"\n"
-"lxc profile remove [<remote>:]<container> <profile>\n"
-"    Remove the profile from a container\n"
-"\n"
-"*Device management*\n"
-"lxc profile device list [<remote>:]<profile>\n"
-"    List devices in the given profile.\n"
-"\n"
-"lxc profile device show [<remote>:]<profile>\n"
-"    Show full device details in the given profile.\n"
-"\n"
-"lxc profile device remove [<remote>:]<profile> <name>\n"
-"    Remove a device from a profile.\n"
-"\n"
-"lxc profile device get [<remote>:]<profile> <name> <key>\n"
-"    Get a device property.\n"
-"\n"
-"lxc profile device set [<remote>:]<profile> <name> <key> <value>\n"
-"    Set a device property.\n"
-"\n"
-"lxc profile device unset [<remote>:]<profile> <name> <key>\n"
-"    Unset a device property.\n"
-"\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.\n"
-"\n"
-"*Examples*\n"
-"cat profile.yaml | lxc profile edit <profile>\n"
-"    Update a profile using the content of profile.yaml\n"
-"\n"
 "lxc profile assign foo default,bar\n"
 "    Set the profiles for \"foo\" to \"default\" and \"bar\".\n"
 "\n"
@@ -2138,72 +2900,26 @@ msgid ""
 "    Remove all profile from \"foo\""
 msgstr ""
 
-#: lxc/publish.go:28
+#: lxc/profile.go:398
 msgid ""
-"Usage: lxc publish [<remote>:]<container>[/<snapshot>] [<remote>:] [--"
-"alias=ALIAS...] [prop-key=prop-value...]\n"
-"\n"
-"Publish containers as images."
+"lxc profile edit <profile> < profile.yaml\n"
+"    Update a profile using the content of profile.yaml"
 msgstr ""
 
-#: lxc/query.go:25
+#: lxc/query.go:29
 msgid ""
-"Usage: lxc query [-X <action>] [-d <data>] [--wait] [--raw] [<remote>:]<API "
-"path>\n"
-"\n"
-"Send a raw query to LXD.\n"
-"\n"
-"*Examples*\n"
 "lxc query -X DELETE --wait /1.0/containers/c1\n"
 "    Delete local container \"c1\"."
 msgstr ""
 
-#: lxc/remote.go:40
+#: lxc/snapshot.go:26
 msgid ""
-"Usage: lxc remote <subcommand> [options]\n"
-"\n"
-"Manage the list of remote LXD servers.\n"
-"\n"
-"lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--"
-"password=PASSWORD] [--public] [--protocol=PROTOCOL] [--auth-type=AUTH_TYPE]\n"
-"    Add the remote <remote> at <url>.\n"
-"\n"
-"lxc remote remove <remote>\n"
-"    Remove the remote <remote>.\n"
-"\n"
-"lxc remote list\n"
-"    List all remotes.\n"
-"\n"
-"lxc remote rename <old name> <new name>\n"
-"    Rename remote <old name> to <new name>.\n"
-"\n"
-"lxc remote set-url <remote> <url>\n"
-"    Update <remote>'s url to <url>.\n"
-"\n"
-"lxc remote set-default <remote>\n"
-"    Set the default remote.\n"
-"\n"
-"lxc remote get-default\n"
-"    Print the default remote."
-msgstr ""
-
-#: lxc/rename.go:18
-msgid ""
-"Usage: lxc rename [<remote>:]<container>[/<snapshot>] [<container>[/"
-"<snapshot>]]\n"
-"\n"
-"Rename a container or snapshot."
+"lxc snapshot u1 snap0\n"
+"    Create a snapshot of \"u1\" called \"snap0\"."
 msgstr ""
 
-#: lxc/restore.go:22
+#: lxc/restore.go:28
 msgid ""
-"Usage: lxc restore [<remote>:]<container> <snapshot> [--stateful]\n"
-"\n"
-"Restore containers from snapshots.\n"
-"\n"
-"If --stateful is passed, then the running state will be restored too.\n"
-"\n"
-"*Examples*\n"
 "lxc snapshot u1 snap0\n"
 "    Create the snapshot.\n"
 "\n"
@@ -2211,121 +2927,20 @@ msgid ""
 "    Restore the snapshot."
 msgstr ""
 
-#: lxc/snapshot.go:19
+#: lxc/storage.go:210
 msgid ""
-"Usage: lxc snapshot [<remote>:]<container> <snapshot name> [--stateful]\n"
-"\n"
-"Create container snapshots.\n"
-"\n"
-"When --stateful is used, LXD attempts to checkpoint the container's\n"
-"running state, including process memory state, TCP connections, ...\n"
-"\n"
-"*Examples*\n"
-"lxc snapshot u1 snap0\n"
-"    Create a snapshot of \"u1\" called \"snap0\"."
+"lxc storage edit [<remote>:]<pool> < pool.yaml\n"
+"    Update a storage pool using the content of pool.yaml."
 msgstr ""
 
-#: lxc/storage.go:67
+#: lxc/storage_volume.go:726
+msgid ""
+"lxc storage volume edit [<remote>:]<pool> <volume> < volume.yaml\n"
+"    Update a storage volume using the content of pool.yaml."
+msgstr ""
+
+#: lxc/storage_volume.go:1168
 msgid ""
-"Usage: lxc storage <subcommand> [options]\n"
-"\n"
-"Manage storage pools and volumes.\n"
-"\n"
-"*Storage pools*\n"
-"lxc storage list [<remote>:]\n"
-"    List available storage pools.\n"
-"\n"
-"lxc storage show [<remote>:]<pool> [--resources] [--target <node>]\n"
-"    Show details of a storage pool.\n"
-"\n"
-"lxc storage info [<remote>:]<pool> [--bytes]\n"
-"    Show information of a storage pool in yaml format.\n"
-"\n"
-"lxc storage create [<remote>:]<pool> <driver> [key=value]... [--target "
-"<node>]\n"
-"    Create a storage pool.\n"
-"\n"
-"lxc storage get [<remote>:]<pool> <key>\n"
-"    Get storage pool configuration.\n"
-"\n"
-"lxc storage set [<remote>:]<pool> <key> <value>\n"
-"    Set storage pool configuration.\n"
-"\n"
-"lxc storage unset [<remote>:]<pool> <key>\n"
-"    Unset storage pool configuration.\n"
-"\n"
-"lxc storage delete [<remote>:]<pool>\n"
-"    Delete a storage pool.\n"
-"\n"
-"lxc storage edit [<remote>:]<pool>\n"
-"    Edit storage pool, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"*Storage volumes*\n"
-"lxc storage volume list [<remote>:]<pool>\n"
-"    List available storage volumes on a storage pool.\n"
-"\n"
-"lxc storage volume show [<remote>:]<pool> <volume> [--target <node>]\n"
-"   Show details of a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume create [<remote>:]<pool> <volume> [key=value]... [--"
-"target <node>]\n"
-"    Create a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume rename [<remote>:]<pool> <old name> <new name> [--target "
-"<node>]\n"
-"    Rename a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume get [<remote>:]<pool> <volume> <key> [--target <node>]\n"
-"    Get storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume set [<remote>:]<pool> <volume> <key> <value> [--target "
-"<node>]\n"
-"    Set storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume unset [<remote>:]<pool> <volume> <key> [--target <node>]\n"
-"    Unset storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume delete [<remote>:]<pool> <volume> [--target <node>]\n"
-"    Delete a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume edit [<remote>:]<pool> <volume> [--target <node>]\n"
-"    Edit storage volume, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"lxc storage volume attach [<remote>:]<pool> <volume> <container> [device "
-"name] <path>\n"
-"    Attach a storage volume to the specified container.\n"
-"\n"
-"lxc storage volume attach-profile [<remote:>]<pool> <volume> <profile> "
-"[device name] <path>\n"
-"    Attach a storage volume to the specified profile.\n"
-"\n"
-"lxc storage volume detach [<remote>:]<pool> <volume> <container> [device "
-"name]\n"
-"    Detach a storage volume from the specified container.\n"
-"\n"
-"lxc storage volume detach-profile [<remote:>]<pool> <volume> <profile> "
-"[device name]\n"
-"\tDetach a storage volume from the specified profile.\n"
-"\n"
-"lxc storage volume copy <pool>/<volume> <pool>/<volume> [--config|-c "
-"<key=value>...]\n"
-"    Copy an existing volume to a new volume at the specified pool.\n"
-"\n"
-"lxc storage volume move [<pool>/]<volume> [<pool>/]<volume>\n"
-"    Move an existing volume to the specified pool.\n"
-"\n"
-"Unless specified through a prefix, all volume operations affect \"custom"
-"\" (user created) volumes.\n"
-"\n"
-"*Examples*\n"
-"cat pool.yaml | lxc storage edit [<remote>:]<pool>\n"
-"    Update a storage pool using the content of pool.yaml.\n"
-"\n"
-"cat pool.yaml | lxc storage volume edit [<remote>:]<pool> <volume>\n"
-"    Update a storage volume using the content of pool.yaml.\n"
-"\n"
 "lxc storage volume show default data\n"
 "    Will show the properties of a custom volume called \"data\" in the "
 "\"default\" pool.\n"
@@ -2335,196 +2950,314 @@ msgid ""
 "\" in the \"default\" pool."
 msgstr ""
 
-#: lxc/version.go:18
+#: lxc/config_metadata.go:27
+msgid "metadata"
+msgstr ""
+
+#: lxc/monitor.go:29
+msgid "monitor [<remote>:]"
+msgstr ""
+
+#: lxc/storage_volume.go:991
+msgid "move [<pool>/]<volume> [<pool>/]<volume>"
+msgstr ""
+
+#: lxc/move.go:28
 msgid ""
-"Usage: lxc version\n"
-"\n"
-"Print the version number of this client tool."
+"move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
+"<snapshot>]]"
 msgstr ""
 
-#: lxc/delete.go:46
-msgid "User aborted delete operation."
+#: lxc/storage.go:429
+msgid "name"
 msgstr ""
 
-#: lxc/utils/cancel.go:40
+#: lxc/network.go:30
+msgid "network"
+msgstr ""
+
+#: lxc/image.go:809 lxc/image.go:814 lxc/image.go:977
+msgid "no"
+msgstr "no"
+
+#: lxc/remote.go:253
+msgid "ok (y/n)?"
+msgstr "ok (y/n)?"
+
+#: lxc/operation.go:23
+msgid "operation"
+msgstr ""
+
+#: lxc/config_device.go:316
+msgid "override [<remote>:]<container> <device> [key=value...]"
+msgstr ""
+
+#: lxc/action.go:47
+msgid "pause [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/config.go:52
+msgid "please use `lxc profile`"
+msgstr ""
+
+#: lxc/profile.go:28
+msgid "profile"
+msgstr ""
+
+#: lxc/publish.go:32
 msgid ""
-"User signaled us three times, exiting. The remote operation will keep "
-"running."
+"publish [<remote>:]<container>[/<snapshot>] [<remote>:] [flags] [prop-"
+"key=prop-value...]"
 msgstr ""
 
-#: lxc/query.go:36
-msgid "Wait for the operation to complete"
+#: lxc/file.go:183
+msgid ""
+"pull [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...] "
+"<target path>"
 msgstr ""
 
-#: lxc/restore.go:38
+#: lxc/file.go:322
 msgid ""
-"Whether or not to restore the container's running state from snapshot (if "
-"available)"
+"push <source path> [<remote>:]<container>/<path> [[<remote>:]<container>/"
+"<path>...]"
 msgstr ""
 
-#: lxc/snapshot.go:33
-msgid "Whether or not to snapshot the container's running state"
+#: lxc/query.go:25
+msgid "query [<remote>:]<API path>"
 msgstr ""
 
-#: lxc/network.go:560 lxc/operation.go:141 lxc/remote.go:382 lxc/remote.go:387
-msgid "YES"
+#: lxc/image.go:1210
+msgid "refresh [<remote>:]<image> [[<remote>:]<image>...]"
 msgstr ""
 
-#: lxc/exec.go:132
-msgid "You can't pass -t and -T at the same time"
+#: lxc/remote.go:32
+msgid "remote"
 msgstr ""
 
-#: lxc/exec.go:136
-msgid "You can't pass -t or -T at the same time as --mode"
+#: lxc/alias.go:195
+msgid "remove <alias>"
 msgstr ""
 
-#: lxc/copy.go:76
-#, fuzzy
-msgid "You must specify a destination container name when using --target"
-msgstr "Occorre specificare un nome di container come origine"
+#: lxc/remote.go:546
+msgid "remove <remote>"
+msgstr ""
 
-#: lxc/copy.go:71
-msgid "You must specify a source container name"
-msgstr "Occorre specificare un nome di container come origine"
+#: lxc/config_trust.go:194
+msgid "remove [<remote>:] <hostname|fingerprint>"
+msgstr ""
 
-#: lxc/copy.go:66 lxc/move.go:71
-msgid "You must use the same source and destination remote when using --target"
+#: lxc/profile.go:630
+msgid "remove [<remote>:]<container> <profile>"
 msgstr ""
 
-#: lxc/main.go:72
-msgid "`lxc config profile` is deprecated, please use `lxc profile`"
+#: lxc/config_device.go:402
+msgid "remove [<remote>:]<container|profile> <name>..."
 msgstr ""
 
-#: lxc/alias.go:56 lxc/alias.go:102
-#, fuzzy, c-format
-msgid "alias %s already exists"
-msgstr "il remote %s esiste già"
+#: lxc/cluster.go:235
+msgid "remove [<remote>:]<member>"
+msgstr ""
 
-#: lxc/alias.go:68 lxc/alias.go:97
-#, fuzzy, c-format
-msgid "alias %s doesn't exist"
-msgstr "il remote %s non esiste"
+#: lxc/alias.go:144
+msgid "rename <old alias> <new alias>"
+msgstr ""
 
-#: lxc/remote.go:370
-msgid "can't remove the default remote"
+#: lxc/remote.go:484
+msgid "rename <remote> <new-name>"
 msgstr ""
 
-#: lxc/file.go:296
-msgid "can't supply uid/gid/mode in recursive mode"
+#: lxc/image_alias.go:247
+msgid "rename [<remote>:]<alias> <new-name>"
 msgstr ""
 
-#: lxc/remote.go:399
-msgid "default"
+#: lxc/rename.go:18
+msgid "rename [<remote>:]<container>[/<snapshot>] <container>[/<snapshot>]"
 msgstr ""
 
-#: lxc/storage.go:856
-msgid "description"
+#: lxc/cluster.go:189
+msgid "rename [<remote>:]<member> <new-name>"
 msgstr ""
 
-#: lxc/init.go:315
-msgid "didn't get any affected image, container or snapshot from server"
+#: lxc/network.go:870
+msgid "rename [<remote>:]<network> <new-name>"
 msgstr ""
 
-#: lxc/image.go:594
-msgid "disabled"
+#: lxc/storage_volume.go:1023
+msgid "rename [<remote>:]<pool> <old name> <new name>"
 msgstr ""
 
-#: lxc/storage.go:855
-msgid "driver"
+#: lxc/profile.go:702
+msgid "rename [<remote>:]<profile> <new-name>"
 msgstr ""
 
-#: lxc/image.go:596
-msgid "enabled"
+#: lxc/action.go:67
+msgid "restart [<remote>:]<container> [[<remote>:]<container>...]"
 msgstr ""
 
-#: lxc/action.go:155 lxc/main.go:33 lxc/main.go:191
-#, c-format
-msgid "error: %v"
+#: lxc/restore.go:22
+msgid "restore [<remote>:]<container> <snapshot>"
 msgstr ""
 
-#: lxc/help.go:37 lxc/main.go:133
-#, c-format
-msgid "error: unknown command: %s"
+#: lxc/config_device.go:491
+msgid "set [<remote>:]<container|profile> <device> <key> <value>"
 msgstr ""
 
-#: lxc/storage.go:853
-msgid "info"
+#: lxc/network.go:918
+msgid "set [<remote>:]<network> <key> <value>"
 msgstr ""
 
-#: lxc/storage.go:854
-msgid "name"
+#: lxc/storage.go:571
+msgid "set [<remote>:]<pool> <key> <value>"
 msgstr ""
 
-#: lxc/image.go:210 lxc/image.go:584 lxc/image.go:589
-msgid "no"
-msgstr "no"
+#: lxc/storage_volume.go:1087
+msgid "set [<remote>:]<pool> <volume> <key> <value>"
+msgstr ""
 
-#: lxc/remote.go:204
-msgid "ok (y/n)?"
-msgstr "ok (y/n)?"
+#: lxc/profile.go:751
+msgid "set [<remote>:]<profile> <key> <value>"
+msgstr ""
 
-#: lxc/main.go:368 lxc/main.go:372
-#, c-format
-msgid "processing aliases failed %s\n"
-msgstr "errore di processamento degli alias %s\n"
+#: lxc/config.go:353
+msgid "set [<remote>:][container] <key> <value>"
+msgstr ""
 
-#: lxc/file.go:588
-msgid "recursive edit doesn't make sense :("
+#: lxc/remote.go:596
+msgid "set-default <remote>"
 msgstr ""
 
-#: lxc/remote.go:436
-#, c-format
-msgid "remote %s already exists"
-msgstr "il remote %s esiste già"
+#: lxc/remote.go:634
+msgid "set-url <remote> <URL>"
+msgstr ""
 
-#: lxc/remote.go:362 lxc/remote.go:428 lxc/remote.go:463 lxc/remote.go:479
-#, c-format
-msgid "remote %s doesn't exist"
-msgstr "il remote %s non esiste"
+#: lxc/config_template.go:296
+msgid "show [<remote>:]<container> <template>"
+msgstr ""
 
-#: lxc/remote.go:345
-#, c-format
-msgid "remote %s exists as <%s>"
-msgstr "il remote %s esiste come %s"
+#: lxc/config_device.go:580
+msgid "show [<remote>:]<container|profile>"
+msgstr ""
 
-#: lxc/remote.go:366 lxc/remote.go:432 lxc/remote.go:467
-#, c-format
-msgid "remote %s is static and cannot be modified"
-msgstr "il remote %s è statico e non può essere modificato"
+#: lxc/image.go:1283
+msgid "show [<remote>:]<image>"
+msgstr ""
+
+#: lxc/cluster.go:140
+msgid "show [<remote>:]<member>"
+msgstr ""
+
+#: lxc/network.go:987
+msgid "show [<remote>:]<network>"
+msgstr ""
+
+#: lxc/operation.go:172
+msgid "show [<remote>:]<operation>"
+msgstr ""
+
+#: lxc/storage.go:643
+msgid "show [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:1164
+msgid "show [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:810
+msgid "show [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/config.go:450 lxc/config_metadata.go:174
+msgid "show [<remote>:][container]"
+msgstr ""
 
-#: lxc/storage.go:858
+#: lxc/snapshot.go:19
+msgid "snapshot [<remote>:]<container> <snapshot name>"
+msgstr ""
+
+#: lxc/storage.go:433
 msgid "space used"
 msgstr ""
 
-#: lxc/info.go:251
+#: lxc/action.go:28
+msgid "start [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/info.go:255
 msgid "stateful"
 msgstr ""
 
-#: lxc/info.go:253
+#: lxc/info.go:257
 msgid "stateless"
 msgstr "senza stato"
 
-#: lxc/info.go:247
+#: lxc/action.go:89
+msgid "stop [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/storage.go:31
+msgid "storage"
+msgstr ""
+
+#: lxc/info.go:251
 #, c-format
 msgid "taken at %s"
 msgstr "salvato alle %s"
 
-#: lxc/storage.go:857
+#: lxc/config_template.go:28
+msgid "template"
+msgstr ""
+
+#: lxc/storage.go:432
 msgid "total space"
 msgstr ""
 
-#: lxc/storage.go:852
+#: lxc/config_trust.go:28
+msgid "trust"
+msgstr ""
+
+#: lxc/config_device.go:648
+msgid "unset [<remote>:]<container|profile> <device> <key>"
+msgstr ""
+
+#: lxc/network.go:1049
+msgid "unset [<remote>:]<network> <key>"
+msgstr ""
+
+#: lxc/storage.go:727
+msgid "unset [<remote>:]<pool> <key>"
+msgstr ""
+
+#: lxc/storage_volume.go:1239
+msgid "unset [<remote>:]<pool> <volume> <key>"
+msgstr ""
+
+#: lxc/profile.go:864
+msgid "unset [<remote>:]<profile> <key>"
+msgstr ""
+
+#: lxc/config.go:558
+msgid "unset [<remote>:][container] <key>"
+msgstr ""
+
+#: lxc/storage.go:427
 msgid "used by"
 msgstr ""
 
-#: lxc/main.go:299
-msgid "wrong number of subcommand arguments"
-msgstr "numero errato di argomenti del sottocomando"
+#: lxc/storage_volume.go:32
+#, fuzzy
+msgid "volume"
+msgstr "Colonne"
 
-#: lxc/delete.go:45 lxc/image.go:208 lxc/image.go:586 lxc/image.go:591
+#: lxc/delete.go:46 lxc/image.go:811 lxc/image.go:816 lxc/image.go:975
 msgid "yes"
 msgstr "si"
 
+#~ msgid "Commands:"
+#~ msgstr "Comandi:"
+
+#~ msgid "Enable verbose mode"
+#~ msgstr "Abilita modalità verbosa"
+
 #~ msgid "'/' not allowed in snapshot name"
 #~ msgstr "'/' non è permesso nel nome di uno snapshot"
 
diff --git a/po/ja.po b/po/ja.po
index 2a88d7234..4847608d8 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -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: 2018-02-27 22:14-0500\n"
+"POT-Creation-Date: 2018-03-29 01:45-0400\n"
 "PO-Revision-Date: 2018-02-27 18:12+0000\n"
 "Last-Translator: KATOH Yasufumi <karma at jazz.email.ne.jp>\n"
 "Language-Team: Japanese <https://hosted.weblate.org/projects/linux-"
@@ -19,7 +19,7 @@ msgstr ""
 "Plural-Forms: nplurals=1; plural=0;\n"
 "X-Generator: Weblate 2.20-dev\n"
 
-#: lxc/storage.go:36
+#: lxc/storage.go:220
 msgid ""
 "### This is a yaml representation of a storage pool.\n"
 "### Any line starting with a '#' will be ignored.\n"
@@ -36,7 +36,7 @@ msgid ""
 "###   zfs.pool_name: default"
 msgstr ""
 
-#: lxc/storage.go:53
+#: lxc/storage_volume.go:737
 msgid ""
 "### This is a yaml representation of a storage volume.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -50,7 +50,7 @@ msgid ""
 "###   size: \"61203283968\""
 msgstr ""
 
-#: lxc/config.go:40
+#: lxc/config.go:100
 msgid ""
 "### This is a yaml representation of the configuration.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -71,7 +71,7 @@ msgid ""
 "### Note that the name is shown but cannot be changed"
 msgstr ""
 
-#: lxc/config.go:61
+#: lxc/config_metadata.go:63
 msgid ""
 "### This is a yaml representation of the container metadata.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -95,7 +95,7 @@ msgid ""
 "###     properties: {}"
 msgstr ""
 
-#: lxc/image.go:63
+#: lxc/image.go:327
 msgid ""
 "### This is a yaml representation of the image properties.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -105,7 +105,7 @@ msgid ""
 "###  description: My custom image"
 msgstr ""
 
-#: lxc/network.go:32
+#: lxc/network.go:546
 msgid ""
 "### This is a yaml representation of the network.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -125,7 +125,7 @@ msgid ""
 "### Note that only the configuration can be changed."
 msgstr ""
 
-#: lxc/profile.go:30
+#: lxc/profile.go:408
 msgid ""
 "### This is a yaml representation of the profile.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -146,12 +146,12 @@ msgid ""
 "### Note that the name is shown but cannot be changed"
 msgstr ""
 
-#: lxc/image.go:187
+#: lxc/image.go:954
 #, c-format
 msgid "%s (%d more)"
 msgstr "%s (他%d個)"
 
-#: lxc/file.go:205
+#: lxc/file.go:677
 #, c-format
 msgid "%s is not a directory"
 msgstr "%s はディレクトリではありません"
@@ -162,881 +162,1805 @@ msgid "%v (interrupt two more times to force)"
 msgstr ""
 "%v (強制的に中断したい場合はあと2回Ctrl-Cを入力/SIGINTを送出してください)"
 
-#: lxc/file.go:142
+#: lxc/file.go:614
 #, c-format
 msgid "'%s' isn't a supported file type."
 msgstr "'%s' はサポートされないタイプのファイルです。"
 
-#: lxc/profile.go:337
+#: lxc/profile.go:222
 msgid "(none)"
 msgstr ""
 
-#: lxc/alias.go:84 lxc/image.go:231 lxc/image.go:1136
+#: lxc/alias.go:127 lxc/image.go:921 lxc/image_alias.go:228
 msgid "ALIAS"
 msgstr ""
 
-#: lxc/image.go:232
+#: lxc/image.go:922
 msgid "ALIASES"
 msgstr ""
 
-#: lxc/image.go:236
+#: lxc/image.go:926
 msgid "ARCH"
 msgstr ""
 
-#: lxc/list.go:467
+#: lxc/list.go:464
 msgid "ARCHITECTURE"
 msgstr ""
 
-#: lxc/remote.go:412
+#: lxc/remote.go:466
 msgid "AUTH TYPE"
 msgstr ""
 
-#: lxc/remote.go:68
+#: lxc/remote.go:88
 msgid "Accept certificate"
 msgstr "証明書を受け入れます"
 
-#: lxc/query.go:38
+#: lxc/query.go:37
 msgid "Action (defaults to GET)"
 msgstr "使用するHTTPのメソッド (デフォルト: GET)"
 
-#: lxc/remote.go:276
+#: lxc/config_device.go:75 lxc/config_device.go:76
+msgid "Add devices to containers or profiles"
+msgstr ""
+
+#: lxc/alias.go:54 lxc/alias.go:55
+#, fuzzy
+msgid "Add new aliases"
+msgstr "エイリアス:"
+
+#: lxc/remote.go:83 lxc/remote.go:84
+#, fuzzy
+msgid "Add new remote servers"
+msgstr "リモートのlxcサーバを管理します。\n"
+
+#: lxc/config_trust.go:58 lxc/config_trust.go:59
+msgid "Add new trusted clients"
+msgstr ""
+
+#: lxc/profile.go:101 lxc/profile.go:102
+#, fuzzy
+msgid "Add profiles to containers"
+msgstr "コンテナ上のファイルを管理します。\n"
+
+#: lxc/remote.go:325
 #, c-format
 msgid "Admin password for %s: "
 msgstr "%s の管理者パスワード: "
 
-#: lxc/image.go:623
+#: lxc/alias.go:78 lxc/alias.go:176
+#, fuzzy, c-format
+msgid "Alias %s already exists"
+msgstr "エイリアス %s は既に存在します"
+
+#: lxc/alias.go:170 lxc/alias.go:221
+#, fuzzy, c-format
+msgid "Alias %s doesn't exist"
+msgstr "エイリアス %s は存在しません"
+
+#: lxc/image_alias.go:83 lxc/image_alias.go:130 lxc/image_alias.go:274
+msgid "Alias name missing"
+msgstr ""
+
+#: lxc/image.go:854
 msgid "Aliases:"
 msgstr "エイリアス:"
 
-#: lxc/image.go:601 lxc/info.go:125
+#: lxc/image.go:826 lxc/info.go:129
 #, c-format
 msgid "Architecture: %s"
 msgstr "アーキテクチャ: %s"
 
-#: lxc/remote.go:259
+#: lxc/profile.go:162 lxc/profile.go:163
+#, fuzzy
+msgid "Assign sets of profiles to containers"
+msgstr "コンテナ上のファイルを管理します。\n"
+
+#: lxc/network.go:103
+msgid "Attach network interfaces to containers"
+msgstr ""
+
+#: lxc/network.go:176 lxc/network.go:177
+msgid "Attach network interfaces to profiles"
+msgstr ""
+
+#: lxc/network.go:104
+msgid "Attach new network interfaces to containers"
+msgstr ""
+
+#: lxc/storage_volume.go:121 lxc/storage_volume.go:122
+#, fuzzy
+msgid "Attach new storage volumes to containers"
+msgstr "コンテナ上のファイルを管理します。\n"
+
+#: lxc/storage_volume.go:200 lxc/storage_volume.go:201
+msgid "Attach new storage volumes to profiles"
+msgstr ""
+
+#: lxc/console.go:31
+#, fuzzy
+msgid "Attach to container consoles"
+msgstr "コンテナのコンソールログを取得します"
+
+#: lxc/console.go:32
+msgid ""
+"Attach to container consoles\n"
+"\n"
+"This command allows you to interact with the boot console of a container\n"
+"as well as retrieve past log entries from it."
+msgstr ""
+
+#: lxc/remote.go:308
 #, c-format
 msgid "Authentication type '%s' not supported by server"
 msgstr "認証タイプ '%s' はサーバではサポートされていません"
 
-#: lxc/image.go:632
+#: lxc/image.go:864
 #, c-format
 msgid "Auto update: %s"
 msgstr "自動更新: %s"
 
-#: lxc/image.go:707
+#: lxc/network.go:283
+#, c-format
+msgid "Bad key/value pair: %s"
+msgstr ""
+
+#: lxc/copy.go:110 lxc/init.go:118 lxc/publish.go:175 lxc/storage.go:123
+#: lxc/storage_volume.go:468
+#, c-format
+msgid "Bad key=value pair: %s"
+msgstr ""
+
+#: lxc/image.go:677
 #, c-format
 msgid "Bad property: %s"
 msgstr "不正なイメージプロパティ形式: %s"
 
-#: lxc/action.go:133
+#: lxc/action.go:212
 msgid "Both --all and container name given"
 msgstr "--all とコンテナ名を両方同時に指定することはできません"
 
-#: lxc/info.go:218
+#: lxc/info.go:222
 msgid "Bytes received"
 msgstr "受信バイト数"
 
-#: lxc/info.go:219
+#: lxc/info.go:223
 msgid "Bytes sent"
 msgstr "送信バイト数"
 
-#: lxc/operation.go:156
+#: lxc/operation.go:155
 msgid "CANCELABLE"
 msgstr ""
 
-#: lxc/config.go:403
+#: lxc/config_trust.go:175
 msgid "COMMON NAME"
 msgstr ""
 
-#: lxc/info.go:182
+#: lxc/info.go:186
 msgid "CPU usage (in seconds)"
 msgstr "CPU使用量(秒)"
 
-#: lxc/info.go:186
+#: lxc/info.go:190
 msgid "CPU usage:"
 msgstr "CPU使用量:"
 
-#: lxc/operation.go:157
+#: lxc/operation.go:156
 msgid "CREATED"
 msgstr ""
 
-#: lxc/list.go:468
+#: lxc/list.go:465
 msgid "CREATED AT"
 msgstr ""
 
-#: lxc/image.go:631
+#: lxc/image.go:863
 #, c-format
 msgid "Cached: %s"
 msgstr "キャッシュ済: %s"
 
-#: lxc/file.go:501
+#: lxc/image.go:175
+msgid "Can't provide a name for the target image"
+msgstr ""
+
+#: lxc/file.go:261
 msgid "Can't pull a directory without --recursive"
 msgstr ""
 "ディレクトリを pull する場合は --recursive オプションを使用してください"
 
-#: lxc/config.go:210 lxc/network.go:619
+#: lxc/config.go:400 lxc/network.go:969
 #, c-format
 msgid "Can't read from stdin: %s"
 msgstr "標準入力から読み込めません: %s"
 
-#: lxc/rename.go:41
+#: lxc/remote.go:577
+#, fuzzy
+msgid "Can't remove the default remote"
+msgstr "デフォルトのリモートは削除できません"
+
+#: lxc/list.go:481
+msgid "Can't specify --fast with --columns"
+msgstr ""
+
+#: lxc/rename.go:48
 msgid "Can't specify a different remote for rename."
 msgstr "リネームの場合は異なるリモートを指定できません。"
 
-#: lxc/config.go:223
+#: lxc/list.go:493
+msgid "Can't specify column L when not clustered"
+msgstr ""
+
+#: lxc/file.go:399
+#, fuzzy
+msgid "Can't supply uid/gid/mode in recursive mode"
+msgstr "再帰 (recursive) モードでは uid/gid/mode を指定できません"
+
+#: lxc/config.go:413
 #, c-format
 msgid "Can't unset key '%s', it's not currently set"
 msgstr "キー '%s' が設定されていないので削除できません"
 
-#: lxc/config.go:265 lxc/config.go:291
-#, c-format
-msgid "Can't unset key '%s', it's not currently set."
-msgstr "キー '%s' が指定されていないので削除できません。"
-
-#: lxc/profile.go:546 lxc/storage.go:696
-msgid "Cannot provide container name to list"
-msgstr "コンテナ名を取得できません"
-
-#: lxc/remote.go:203
+#: lxc/remote.go:252
 #, c-format
 msgid "Certificate fingerprint: %s"
 msgstr "証明書のフィンガープリント: %s"
 
-#: lxc/remote.go:315
+#: lxc/remote.go:364
 msgid "Client certificate stored at server: "
 msgstr "クライアント証明書がサーバに格納されました: "
 
-#: lxc/image.go:175 lxc/image.go:176 lxc/list.go:134 lxc/list.go:135
+#: lxc/network.go:253 lxc/network.go:663 lxc/network.go:923 lxc/network.go:992
+#: lxc/network.go:1054 lxc/storage.go:92 lxc/storage.go:331 lxc/storage.go:576
+#: lxc/storage.go:649 lxc/storage.go:732 lxc/storage_volume.go:287
+#: lxc/storage_volume.go:429 lxc/storage_volume.go:504
+#: lxc/storage_volume.go:730 lxc/storage_volume.go:856
+#: lxc/storage_volume.go:998 lxc/storage_volume.go:1028
+#: lxc/storage_volume.go:1092 lxc/storage_volume.go:1175
+#: lxc/storage_volume.go:1244
+msgid "Cluster member name"
+msgstr ""
+
+#: lxc/image.go:912 lxc/list.go:112
 msgid "Columns"
 msgstr "カラムレイアウト"
 
-#: lxc/help.go:53
-msgid "Commands:"
-msgstr "コマンド:"
+#: lxc/main.go:44
+msgid "Command line client for LXD"
+msgstr ""
+
+#: lxc/main.go:45
+#, fuzzy
+msgid ""
+"Command line client for LXD\n"
+"\n"
+"All of LXD's features can be driven through the various commands below.\n"
+"For help with any of those, simply call them with --help."
+msgstr ""
+"これは LXD のコマンドラインクライアントです。\n"
+"\n"
+"LXD の機能のすべてが、以下の色々なコマンドから操作できます。\n"
+"コマンドのヘルプは、--help をコマンドに付けて実行するだけです。"
 
-#: lxc/copy.go:37 lxc/copy.go:38 lxc/init.go:139 lxc/init.go:140
+#: lxc/copy.go:39 lxc/init.go:42
 msgid "Config key/value to apply to the new container"
 msgstr "新しいコンテナに適用するキー/値の設定"
 
-#: lxc/config.go:821 lxc/config.go:886 lxc/config.go:1396 lxc/image.go:1191
-#: lxc/network.go:445 lxc/profile.go:275 lxc/storage.go:647 lxc/storage.go:1209
+#: lxc/config.go:195 lxc/config.go:259 lxc/config_metadata.go:144
+#: lxc/image.go:405 lxc/network.go:631 lxc/profile.go:490 lxc/storage.go:298
+#: lxc/storage_volume.go:822
 #, c-format
 msgid "Config parsing error: %s"
 msgstr "設定の構文エラー: %s"
 
-#: lxc/main.go:40
-msgid "Connection refused; is LXD running?"
-msgstr "接続が拒否されました。LXDが実行されていますか?"
-
-#: lxc/console.go:132
+#: lxc/console.go:141
 msgid "Console log:"
 msgstr ""
 
-#: lxc/publish.go:71
+#: lxc/publish.go:79
 msgid "Container name is mandatory"
 msgstr "コンテナ名を指定する必要があります"
 
-#: lxc/copy.go:243 lxc/init.go:321
+#: lxc/copy.go:260 lxc/init.go:229
 #, c-format
 msgid "Container name is: %s"
 msgstr "コンテナ名: %s"
 
-#: lxc/publish.go:250
+#: lxc/publish.go:259
 #, c-format
 msgid "Container published with fingerprint: %s"
 msgstr "コンテナは以下のフィンガープリントで publish されます: %s"
 
-#: lxc/copy.go:45 lxc/move.go:44
+#: lxc/copy.go:44 lxc/move.go:46
 msgid "Copy a stateful container stateless"
 msgstr "ステートフルなコンテナをステートレスにコピーします"
 
-#: lxc/image.go:178
+#: lxc/image.go:138
 msgid "Copy aliases from source"
 msgstr "ソースからエイリアスをコピーしました"
 
-#: lxc/copy.go:44
+#: lxc/copy.go:34 lxc/copy.go:35
+#, fuzzy
+msgid "Copy containers within or in between LXD instances"
+msgstr "コンテナをコピーします (スナップショットはコピーしません)"
+
+#: lxc/image.go:130
+msgid "Copy images between servers"
+msgstr ""
+
+#: lxc/image.go:131
+msgid ""
+"Copy images between servers\n"
+"\n"
+"The auto-update flag instructs the server to keep this image up to date.\n"
+"It requires the source to be an alias and for it to be public."
+msgstr ""
+
+#: lxc/config_device.go:317 lxc/config_device.go:318
+msgid "Copy profile inherited devices and override configuration keys"
+msgstr ""
+
+#: lxc/profile.go:240 lxc/profile.go:241
+msgid "Copy profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:282 lxc/storage_volume.go:283
+#, fuzzy
+msgid "Copy storage volumes"
+msgstr "ストレージボリュームのコピー中: %s"
+
+#: lxc/copy.go:43
 msgid "Copy the container without its snapshots"
 msgstr "コンテナをコピーします (スナップショットはコピーしません)"
 
-#: lxc/image.go:449
+#: lxc/image.go:217
 #, c-format
 msgid "Copying the image: %s"
 msgstr "イメージのコピー中: %s"
 
-#: lxc/storage.go:1134
+#: lxc/storage_volume.go:387
 #, c-format
 msgid "Copying the storage volume: %s"
 msgstr "ストレージボリュームのコピー中: %s"
 
-#: lxc/remote.go:218
+#: lxc/remote.go:267
 msgid "Could not create server cert dir"
 msgstr "サーバ証明書格納用のディレクトリを作成できません"
 
-#: lxc/file.go:70 lxc/file.go:71
+#: lxc/image_alias.go:58 lxc/image_alias.go:59
+msgid "Create aliases for existing images"
+msgstr ""
+
+#: lxc/launch.go:21 lxc/launch.go:22
+msgid "Create and start containers from images"
+msgstr ""
+
+#: lxc/file.go:191 lxc/file.go:331
 msgid "Create any directories necessary"
 msgstr "必要なディレクトリをすべて作成します"
 
-#: lxc/image.go:606 lxc/info.go:127
+#: lxc/snapshot.go:20
+#, fuzzy
+msgid "Create container snapshots"
+msgstr "コンテナをコピーします (スナップショットはコピーしません)"
+
+#: lxc/snapshot.go:21
+#, fuzzy
+msgid ""
+"Create container snapshots\n"
+"\n"
+"When --stateful is used, LXD attempts to checkpoint the container's\n"
+"running state, including process memory state, TCP connections, ..."
+msgstr ""
+"使い方: lxc snapshot [<remote>:]<container> <snapshot name> [--stateful]\n"
+"\n"
+"コンテナのスナップショットを作成します。\n"
+"\n"
+"--stateful を指定すると、LXD はプロセスのメモリ状態、TCP 接続などを含\n"
+"む、コンテナの実行状態をチェックポイントしようとします。\n"
+"\n"
+"*例*\n"
+"lxc snapshot u1 snap0\n"
+"    \"u1\" のスナップショットを \"snap0\" という名前で作成します。"
+
+#: lxc/init.go:34 lxc/init.go:35
+#, fuzzy
+msgid "Create containers from images"
+msgstr "コンテナを作成中"
+
+#: lxc/config_template.go:66 lxc/config_template.go:67
+#, fuzzy
+msgid "Create new container file templates"
+msgstr "一部のコンテナで %s が失敗しました"
+
+#: lxc/storage_volume.go:425 lxc/storage_volume.go:426
+#, fuzzy
+msgid "Create new custom storage volumes"
+msgstr "ストレージボリュームのコピー中: %s"
+
+#: lxc/network.go:249 lxc/network.go:250
+msgid "Create new networks"
+msgstr ""
+
+#: lxc/profile.go:296 lxc/profile.go:297
+#, fuzzy
+msgid "Create profiles"
+msgstr "作成日時: %s"
+
+#: lxc/storage.go:88 lxc/storage.go:89
+#, fuzzy
+msgid "Create storage pools"
+msgstr "ストレージボリュームのコピー中: %s"
+
+#: lxc/image.go:832 lxc/info.go:131
 #, c-format
 msgid "Created: %s"
 msgstr "作成日時: %s"
 
-#: lxc/init.go:200
+#: lxc/init.go:98
 #, c-format
 msgid "Creating %s"
 msgstr "%s を作成中"
 
-#: lxc/init.go:198
+#: lxc/init.go:96
 msgid "Creating the container"
 msgstr "コンテナを作成中"
 
-#: lxc/cluster.go:185
+#: lxc/cluster.go:121
 msgid "DATABASE"
 msgstr ""
 
-#: lxc/image.go:235 lxc/image.go:1138 lxc/list.go:469 lxc/network.go:579
-#: lxc/operation.go:154 lxc/storage.go:732 lxc/storage.go:937
+#: lxc/image.go:925 lxc/image_alias.go:230 lxc/list.go:466 lxc/network.go:784
+#: lxc/operation.go:153 lxc/storage.go:545 lxc/storage_volume.go:967
 msgid "DESCRIPTION"
 msgstr ""
 
-#: lxc/storage.go:733
+#: lxc/storage.go:546
 msgid "DRIVER"
 msgstr ""
 
-#: lxc/publish.go:39
+#: lxc/publish.go:41
 msgid "Define a compression algorithm: for image or none"
 msgstr "圧縮アルゴリズムを指定します: 圧縮アルゴリズム名 or none"
 
-#: lxc/config.go:977
+#: lxc/operation.go:53 lxc/operation.go:54
+msgid "Delete a background operation (will attempt to cancel)"
+msgstr ""
+
+#: lxc/config_template.go:109 lxc/config_template.go:110
+#, fuzzy
+msgid "Delete container file templates"
+msgstr "一部のコンテナで %s が失敗しました"
+
+#: lxc/delete.go:29 lxc/delete.go:30
+#, fuzzy
+msgid "Delete containers and snapshots"
+msgstr "コンテナまたはコンテナのスナップショットを削除します。\n"
+
+#: lxc/file.go:72 lxc/file.go:73
+#, fuzzy
+msgid "Delete files in containers"
+msgstr "コンテナ上のファイルを管理します。\n"
+
+#: lxc/image_alias.go:105 lxc/image_alias.go:106
+msgid "Delete image aliases"
+msgstr ""
+
+#: lxc/image.go:260 lxc/image.go:261
+#, fuzzy
+msgid "Delete images"
+msgstr "イメージの取得中: %s"
+
+#: lxc/network.go:319 lxc/network.go:320
+msgid "Delete networks"
+msgstr ""
+
+#: lxc/profile.go:347 lxc/profile.go:348
+msgid "Delete profiles"
+msgstr ""
+
+#: lxc/storage.go:160 lxc/storage.go:161
+msgid "Delete storage pools"
+msgstr ""
+
+#: lxc/storage_volume.go:500 lxc/storage_volume.go:501
+#, fuzzy
+msgid "Delete storage volumes"
+msgstr "ストレージボリュームの移動中: %s"
+
+#: lxc/action.go:30 lxc/action.go:49 lxc/action.go:69 lxc/action.go:91
+#: lxc/alias.go:23 lxc/alias.go:55 lxc/alias.go:99 lxc/alias.go:147
+#: lxc/alias.go:198 lxc/cluster.go:26 lxc/cluster.go:59 lxc/cluster.go:142
+#: lxc/cluster.go:192 lxc/cluster.go:238 lxc/config.go:29 lxc/config.go:88
+#: lxc/config.go:289 lxc/config.go:355 lxc/config.go:452 lxc/config.go:560
+#: lxc/config_device.go:24 lxc/config_device.go:76 lxc/config_device.go:179
+#: lxc/config_device.go:252 lxc/config_device.go:318 lxc/config_device.go:405
+#: lxc/config_device.go:493 lxc/config_device.go:582 lxc/config_device.go:650
+#: lxc/config_metadata.go:29 lxc/config_metadata.go:54
+#: lxc/config_metadata.go:176 lxc/config_template.go:30
+#: lxc/config_template.go:67 lxc/config_template.go:110
+#: lxc/config_template.go:152 lxc/config_template.go:236
+#: lxc/config_template.go:298 lxc/config_trust.go:30 lxc/config_trust.go:59
+#: lxc/config_trust.go:115 lxc/config_trust.go:197 lxc/console.go:32
+#: lxc/copy.go:35 lxc/delete.go:30 lxc/exec.go:39 lxc/file.go:40 lxc/file.go:73
+#: lxc/file.go:122 lxc/file.go:185 lxc/file.go:324 lxc/image.go:42
+#: lxc/image.go:131 lxc/image.go:261 lxc/image.go:312 lxc/image.go:435
+#: lxc/image.go:571 lxc/image.go:776 lxc/image.go:890 lxc/image.go:1212
+#: lxc/image.go:1285 lxc/image_alias.go:26 lxc/image_alias.go:59
+#: lxc/image_alias.go:106 lxc/image_alias.go:149 lxc/image_alias.go:250
+#: lxc/info.go:29 lxc/init.go:35 lxc/launch.go:22 lxc/list.go:48 lxc/main.go:45
+#: lxc/monitor.go:31 lxc/move.go:31 lxc/network.go:32 lxc/network.go:104
+#: lxc/network.go:177 lxc/network.go:250 lxc/network.go:320 lxc/network.go:367
+#: lxc/network.go:452 lxc/network.go:537 lxc/network.go:660 lxc/network.go:719
+#: lxc/network.go:808 lxc/network.go:873 lxc/network.go:920 lxc/network.go:989
+#: lxc/network.go:1051 lxc/operation.go:25 lxc/operation.go:54
+#: lxc/operation.go:98 lxc/operation.go:174 lxc/profile.go:30
+#: lxc/profile.go:102 lxc/profile.go:163 lxc/profile.go:241 lxc/profile.go:297
+#: lxc/profile.go:348 lxc/profile.go:396 lxc/profile.go:520 lxc/profile.go:568
+#: lxc/profile.go:632 lxc/profile.go:705 lxc/profile.go:753 lxc/profile.go:812
+#: lxc/profile.go:866 lxc/publish.go:34 lxc/query.go:27 lxc/remote.go:34
+#: lxc/remote.go:84 lxc/remote.go:380 lxc/remote.go:414 lxc/remote.go:487
+#: lxc/remote.go:549 lxc/remote.go:598 lxc/remote.go:636 lxc/rename.go:20
+#: lxc/restore.go:24 lxc/snapshot.go:21 lxc/storage.go:33 lxc/storage.go:89
+#: lxc/storage.go:161 lxc/storage.go:208 lxc/storage.go:328 lxc/storage.go:383
+#: lxc/storage.go:491 lxc/storage.go:573 lxc/storage.go:645 lxc/storage.go:729
+#: lxc/storage_volume.go:34 lxc/storage_volume.go:122 lxc/storage_volume.go:201
+#: lxc/storage_volume.go:283 lxc/storage_volume.go:426
+#: lxc/storage_volume.go:501 lxc/storage_volume.go:561
+#: lxc/storage_volume.go:643 lxc/storage_volume.go:724
+#: lxc/storage_volume.go:853 lxc/storage_volume.go:918
+#: lxc/storage_volume.go:994 lxc/storage_volume.go:1025
+#: lxc/storage_volume.go:1089 lxc/storage_volume.go:1166
+#: lxc/storage_volume.go:1241
+msgid "Description"
+msgstr ""
+
+#: lxc/network.go:366 lxc/network.go:367
+msgid "Detach network interfaces from containers"
+msgstr ""
+
+#: lxc/network.go:451 lxc/network.go:452
+msgid "Detach network interfaces from profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:560 lxc/storage_volume.go:561
+#, fuzzy
+msgid "Detach storage volumes from containers"
+msgstr "ストレージボリューム名 \"%s\" を \"%s\" に変更しました"
+
+#: lxc/storage_volume.go:642 lxc/storage_volume.go:643
+#, fuzzy
+msgid "Detach storage volumes from profiles"
+msgstr "ストレージボリューム名 \"%s\" を \"%s\" に変更しました"
+
+#: lxc/config_device.go:163
 #, c-format
 msgid "Device %s added to %s"
 msgstr "デバイス %s が %s に追加されました"
 
-#: lxc/config.go:1272
+#: lxc/config_device.go:387
 #, c-format
 msgid "Device %s overridden for %s"
 msgstr "デバイス %s が %s で上書きされました"
 
-#: lxc/config.go:1213
+#: lxc/config_device.go:476
 #, c-format
 msgid "Device %s removed from %s"
 msgstr "デバイス %s が %s から削除されました"
 
-#: lxc/utils.go:192 lxc/utils.go:216
+#: lxc/utils.go:133 lxc/utils.go:157
 #, c-format
 msgid "Device already exists: %s"
 msgstr "デバイスは既に存在します: %s"
 
-#: lxc/image.go:1290
+#: lxc/image.go:586
 msgid "Directory import is not available on this platform"
 msgstr "このプラットフォーム上ではディレクトリのインポートは利用できません"
 
-#: lxc/exec.go:71
+#: lxc/exec.go:55
 msgid "Disable pseudo-terminal allocation"
 msgstr "擬似端末の割り当てを無効にします"
 
-#: lxc/exec.go:72
+#: lxc/exec.go:56
 msgid "Disable stdin (reads from /dev/null)"
 msgstr "標準入力を無効にします (/dev/null から読み込みます)"
 
-#: lxc/info.go:175
+#: lxc/info.go:179
 msgid "Disk usage:"
 msgstr "ディスク使用量:"
 
-#: lxc/list.go:638
+#: lxc/list.go:635
 msgid "EPHEMERAL"
 msgstr ""
 
-#: lxc/config.go:405
+#: lxc/config_trust.go:177
 msgid "EXPIRY DATE"
 msgstr ""
 
-#: lxc/main.go:52
-msgid "Enable debug mode"
-msgstr "デバッグモードを有効にします"
+#: lxc/config_template.go:151 lxc/config_template.go:152
+#, fuzzy
+msgid "Edit container file templates"
+msgstr "一部のコンテナで %s が失敗しました"
+
+#: lxc/config_metadata.go:53 lxc/config_metadata.go:54
+msgid "Edit container metadata files"
+msgstr ""
+
+#: lxc/config.go:87 lxc/config.go:88
+msgid "Edit container or server configurations as YAML"
+msgstr ""
+
+#: lxc/file.go:121 lxc/file.go:122
+#, fuzzy
+msgid "Edit files in containers"
+msgstr "コンテナ上のファイルを管理します。\n"
+
+#: lxc/image.go:311 lxc/image.go:312
+msgid "Edit image properties"
+msgstr ""
+
+#: lxc/network.go:536 lxc/network.go:537
+msgid "Edit network configurations as YAML"
+msgstr ""
+
+#: lxc/profile.go:395 lxc/profile.go:396
+msgid "Edit profile configurations as YAML"
+msgstr ""
+
+#: lxc/storage.go:207 lxc/storage.go:208
+msgid "Edit storage pool configurations as YAML"
+msgstr ""
+
+#: lxc/storage_volume.go:723 lxc/storage_volume.go:724
+msgid "Edit storage volume configurations as YAML"
+msgstr ""
 
-#: lxc/main.go:51
-msgid "Enable verbose mode"
-msgstr "詳細モードを有効にします"
+#: lxc/list.go:504
+#, c-format
+msgid "Empty column entry (redundant, leading or trailing command) in '%s'"
+msgstr ""
 
-#: lxc/exec.go:68
+#: lxc/exec.go:52
 msgid "Environment variable to set (e.g. HOME=/home/foo)"
 msgstr "環境変数を設定します (例: HOME=/home/foo)"
 
-#: lxc/help.go:77
-msgid "Environment:"
-msgstr "環境変数:"
-
-#: lxc/copy.go:41 lxc/copy.go:42 lxc/init.go:143 lxc/init.go:144
+#: lxc/copy.go:41 lxc/init.go:44
 msgid "Ephemeral container"
 msgstr "Ephemeral コンテナ"
 
-#: lxc/config.go:1446
+#: lxc/config_template.go:204
 #, c-format
 msgid "Error updating template file: %s"
 msgstr "テンプレートファイル更新のエラー: %s"
 
-#: lxc/monitor.go:69
+#: lxc/monitor.go:48
 msgid "Event type to listen for"
 msgstr "Listenするイベントタイプ"
 
-#: lxc/image.go:610
+#: lxc/exec.go:38
+#, fuzzy
+msgid "Execute commands in containers"
+msgstr "すべてのコンテナに対してコマンドを実行します"
+
+#: lxc/exec.go:39
+#, fuzzy
+msgid ""
+"Execute commands in containers\n"
+"\n"
+"The command is executed directly using exec, so there is no shell and\n"
+"shell patterns (variables, file redirects, ...) won't be understood.\n"
+"If you need a shell environment you need to execute the shell\n"
+"executable, passing the shell commands as arguments, for example:\n"
+"\n"
+"  lxc exec <container> -- sh -c \"cd /tmp && pwd\"\n"
+"\n"
+"Mode defaults to non-interactive, interactive mode is selected if both stdin "
+"AND stdout are terminals (stderr is ignored)."
+msgstr ""
+"使い方: lxc exec [<remote>:]<container> [-t] [-T] [-n] [--mode=auto|"
+"interactive|non-interactive] [--env KEY=VALUE...] [--] <command line>\n"
+"\n"
+"指定したコマンドをコンテナ内で実行します。\n"
+"\n"
+"コマンドは exec を使って直接実行するので、シェルは使わず、シェルパターン (変"
+"数、ファイルリダイレクタなど) は受け入れられません。シェル環境が必要な場合"
+"は、シェルを実行し、引数としてコマンドを渡す必要があります。例えば:\n"
+"\n"
+"    lxc exec <container> -- sh -c \"cd /tmp && pwd\"\n"
+"\n"
+"デフォルトのモードは non-interactive です。もし標準入出力が両方ともターミナル"
+"の場合は interactive モードが選択されます (標準エラー出力は無視されます)。"
+
+#: lxc/image.go:838
 #, c-format
 msgid "Expires: %s"
 msgstr "失効日時: %s"
 
-#: lxc/image.go:612
+#: lxc/image.go:840
 msgid "Expires: never"
 msgstr "失効日時: 失効しない"
 
-#: lxc/image.go:922
+#: lxc/image.go:434
+#, fuzzy
+msgid "Export and download images"
+msgstr "イメージのエクスポート中: %s"
+
+#: lxc/image.go:435
+msgid ""
+"Export and download images\n"
+"\n"
+"The output target is optional and defaults to the working directory."
+msgstr ""
+
+#: lxc/image.go:494
 #, c-format
 msgid "Exporting the image: %s"
 msgstr "イメージのエクスポート中: %s"
 
-#: lxc/config.go:761
+#: lxc/config_template.go:279
 msgid "FILENAME"
 msgstr ""
 
-#: lxc/config.go:402 lxc/image.go:233 lxc/image.go:1137
+#: lxc/config_trust.go:174 lxc/image.go:923 lxc/image_alias.go:229
 msgid "FINGERPRINT"
 msgstr ""
 
-#: lxc/utils.go:261
+#: lxc/utils.go:202
 #, c-format
 msgid "Failed to create alias %s"
 msgstr "エイリアス %s の作成に失敗しました"
 
-#: lxc/manpage.go:62
-#, c-format
-msgid "Failed to generate 'lxc.%s.1': %v"
-msgstr "'lxc.%s.1' の生成が失敗しました: %v"
-
-#: lxc/manpage.go:55
-#, c-format
-msgid "Failed to generate 'lxc.1': %v"
-msgstr "'lxc.1' の生成が失敗しました: %v"
-
-#: lxc/copy.go:238
+#: lxc/copy.go:255
 msgid "Failed to get the new container name"
 msgstr "新しいコンテナ名が取得できません"
 
-#: lxc/utils.go:251
+#: lxc/utils.go:192
 #, c-format
 msgid "Failed to remove alias %s"
 msgstr "エイリアス %s の削除に失敗しました"
 
-#: lxc/file.go:137
+#: lxc/file.go:609
 #, c-format
 msgid "Failed to walk path for %s: %s"
 msgstr "パス %s にアクセスできませんでした: %s"
 
-#: lxc/list.go:137
+#: lxc/list.go:114
 msgid "Fast mode (same as --columns=nsacPt)"
 msgstr "Fast モード (--columns=nsacPt と同じ)"
 
-#: lxc/network.go:536 lxc/operation.go:121
+#: lxc/network.go:749 lxc/operation.go:126
 msgid "Filtering isn't supported yet"
 msgstr "情報表示のフィルタリングはまだサポートされていません"
 
-#: lxc/image.go:599
+#: lxc/image.go:824
 #, c-format
 msgid "Fingerprint: %s"
 msgstr "証明書のフィンガープリント: %s"
 
-#: lxc/exec.go:70
+#: lxc/exec.go:54
 msgid "Force pseudo-terminal allocation"
 msgstr "強制的に擬似端末を割り当てます"
 
-#: lxc/cluster.go:42
-msgid "Force removing a node, even if degraded"
+#: lxc/cluster.go:242
+msgid "Force removing a member, even if degraded"
 msgstr ""
 
-#: lxc/action.go:47 lxc/action.go:48
+#: lxc/action.go:121
 msgid "Force the container to shutdown"
 msgstr "コンテナを強制シャットダウンします"
 
-#: lxc/delete.go:34 lxc/delete.go:35
+#: lxc/delete.go:34
 msgid "Force the removal of running containers"
 msgstr "稼働中のコンテナを強制的に削除します"
 
-#: lxc/main.go:53
+#: lxc/main.go:56
 msgid "Force using the local unix socket"
 msgstr "強制的にローカルのUNIXソケットを使います"
 
-#: lxc/image.go:181 lxc/list.go:136
+#: lxc/image.go:913 lxc/list.go:113
 msgid "Format (csv|json|table|yaml)"
 msgstr "フォーマット (csv|json|table|yaml)"
 
-#: lxc/remote.go:166
+#: lxc/remote.go:211
 msgid "Generating a client certificate. This may take a minute..."
 msgstr "クライアント証明書を生成します。1分ぐらいかかります..."
 
-#: lxc/network.go:513
+#: lxc/config_device.go:178 lxc/config_device.go:179
+#, fuzzy
+msgid "Get values for container device configuration keys"
+msgstr "正しくない設定項目 (key) です"
+
+#: lxc/config.go:288 lxc/config.go:289
+msgid "Get values for container or server configuration keys"
+msgstr ""
+
+#: lxc/network.go:659 lxc/network.go:660
+#, fuzzy
+msgid "Get values for network configuration keys"
+msgstr "正しくない設定項目 (key) です"
+
+#: lxc/profile.go:519 lxc/profile.go:520
+#, fuzzy
+msgid "Get values for profile configuration keys"
+msgstr "正しくない設定項目 (key) です"
+
+#: lxc/storage.go:327 lxc/storage.go:328
+msgid "Get values for storage pool configuration keys"
+msgstr ""
+
+#: lxc/storage_volume.go:852 lxc/storage_volume.go:853
+msgid "Get values for storage volume configuration keys"
+msgstr ""
+
+#: lxc/network.go:851
 msgid "HOSTNAME"
 msgstr ""
 
-#: lxc/operation.go:152
+#: lxc/operation.go:151
 msgid "ID"
 msgstr "ID"
 
-#: lxc/network.go:515
+#: lxc/network.go:853
 msgid "IP ADDRESS"
 msgstr ""
 
-#: lxc/list.go:465
+#: lxc/list.go:462
 msgid "IPV4"
 msgstr "IPV4"
 
-#: lxc/list.go:466
+#: lxc/list.go:463
 msgid "IPV6"
 msgstr "IPV6"
 
-#: lxc/config.go:404
+#: lxc/config_trust.go:176
 msgid "ISSUE DATE"
 msgstr ""
 
-#: lxc/main.go:171
+#: lxc/main.go:259
 msgid ""
 "If this is your first time running LXD on this machine, you should also run: "
 "lxd init"
 msgstr "初めてこのマシンで LXD を使う場合、lxd init と実行する必要があります"
 
-#: lxc/main.go:54
-msgid "Ignore aliases when determining what command to run"
-msgstr "どのコマンドを実行するか決める際にエイリアスを無視します"
-
-#: lxc/action.go:51
-msgid "Ignore the container state (only for start)"
+#: lxc/action.go:117
+#, fuzzy
+msgid "Ignore the container state"
 msgstr "コンテナの状態を無視します (startのみ)"
 
-#: lxc/image.go:557
+#: lxc/image.go:1268
 msgid "Image already up to date."
 msgstr "イメージは更新済みです。"
 
-#: lxc/image.go:463
+#: lxc/image.go:231
 msgid "Image copied successfully!"
 msgstr "イメージのコピーが成功しました!"
 
-#: lxc/image.go:982
+#: lxc/image.go:554
 msgid "Image exported successfully!"
 msgstr "イメージのエクスポートが成功しました!"
 
-#: lxc/image.go:778
+#: lxc/image.go:284 lxc/image.go:1235
+msgid "Image identifier missing"
+msgstr ""
+
+#: lxc/image.go:352
+#, fuzzy, c-format
+msgid "Image identifier missing: %s"
+msgstr "イメージは以下のフィンガープリントでインポートされました: %s"
+
+#: lxc/image.go:749
 #, c-format
 msgid "Image imported with fingerprint: %s"
 msgstr "イメージは以下のフィンガープリントでインポートされました: %s"
 
-#: lxc/image.go:555
+#: lxc/image.go:1266
 msgid "Image refreshed successfully!"
 msgstr "イメージの更新が成功しました!"
 
-#: lxc/query.go:39
+#: lxc/image.go:571
+msgid ""
+"Import image into the image store\n"
+"\n"
+"Directory import is only available on Linux and must be performed as root."
+msgstr ""
+
+#: lxc/image.go:570
+#, fuzzy
+msgid "Import images into the image store"
+msgstr "イメージのエクスポート中: %s"
+
+#: lxc/query.go:38
 msgid "Input data"
 msgstr "入力するデータ"
 
-#: lxc/init.go:149
+#: lxc/init.go:47
 msgid "Instance type"
 msgstr "インスタンスタイプ"
 
-#: lxc/remote.go:118
+#: lxc/remote.go:163
 #, c-format
 msgid "Invalid URL scheme \"%s\" in \"%s\""
 msgstr "不正な URL スキーム \"%s\" (\"%s\" 内)"
 
-#: lxc/config.go:383
+#: lxc/config_trust.go:155
 msgid "Invalid certificate"
 msgstr "不正な証明書です"
 
-#: lxc/init.go:32 lxc/init.go:37
-msgid "Invalid configuration key"
+#: lxc/list.go:525
+#, fuzzy, c-format
+msgid "Invalid config key '%s' in '%s'"
 msgstr "正しくない設定項目 (key) です"
 
-#: lxc/file.go:560
+#: lxc/list.go:520
+#, c-format
+msgid "Invalid config key column format (too many fields): '%s'"
+msgstr ""
+
+#: lxc/image.go:1196 lxc/list.go:386
+#, fuzzy, c-format
+msgid "Invalid format %q"
+msgstr "不正なパス %s"
+
+#: lxc/list.go:543
+#, c-format
+msgid "Invalid max width (must -1, 0 or a positive integer) '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:540
+#, c-format
+msgid "Invalid max width (must be an integer) '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:531
+#, c-format
+msgid ""
+"Invalid name in '%s', empty string is only allowed when defining maxWidth"
+msgstr ""
+
+#: lxc/main.go:341
+#, fuzzy
+msgid "Invalid number of arguments"
+msgstr "不正な引数 %s"
+
+#: lxc/file.go:97
 #, c-format
 msgid "Invalid path %s"
 msgstr "不正なパス %s"
 
-#: lxc/remote.go:107
+#: lxc/remote.go:152
 #, c-format
 msgid "Invalid protocol: %s"
 msgstr "不正なプロトコル: %s"
 
-#: lxc/file.go:473
+#: lxc/file.go:243
 #, c-format
 msgid "Invalid source %s"
 msgstr "不正なソース %s"
 
-#: lxc/file.go:250
+#: lxc/file.go:352
 #, c-format
 msgid "Invalid target %s"
 msgstr "不正な送り先 %s"
 
-#: lxc/info.go:156
+#: lxc/info.go:160
 msgid "Ips:"
 msgstr "IPアドレス:"
 
-#: lxc/image.go:179
+#: lxc/image.go:139
 msgid "Keep the image up to date after initial copy"
 msgstr "最初にコピーした後も常にイメージを最新の状態に保つ"
 
-#: lxc/list.go:470
+#: lxc/list.go:467
 msgid "LAST USED AT"
 msgstr ""
 
-#: lxc/list.go:492
+#: lxc/list.go:489
 msgid "LOCATION"
 msgstr ""
 
-#: lxc/main.go:38
-msgid "LXD socket not found; is LXD installed and running?"
-msgstr "LXD のソケットが見つかりません。LXD が実行されていますか?"
+#: lxc/cluster.go:94
+msgid "LXD server isn't part of a cluster"
+msgstr ""
 
-#: lxc/image.go:615
+#: lxc/image.go:844
 #, c-format
 msgid "Last used: %s"
 msgstr "最終使用: %s"
 
-#: lxc/image.go:617
+#: lxc/image.go:846
 msgid "Last used: never"
 msgstr "最終使用: 未使用"
 
-#: lxc/info.go:119
-#, c-format
-msgid "Location: %s"
+#: lxc/network.go:807 lxc/network.go:808
+msgid "List DHCP leases"
 msgstr ""
 
-#: lxc/info.go:271
-msgid "Log:"
-msgstr "ログ:"
+#: lxc/alias.go:98 lxc/alias.go:99
+#, fuzzy
+msgid "List aliases"
+msgstr "エイリアス:"
 
-#: lxc/network.go:514
-msgid "MAC ADDRESS"
+#: lxc/cluster.go:58 lxc/cluster.go:59
+msgid "List all the cluster members"
 msgstr ""
 
-#: lxc/network.go:578
-msgid "MANAGED"
-msgstr ""
+#: lxc/network.go:718 lxc/network.go:719
+#, fuzzy
+msgid "List available networks"
+msgstr "利用可能なリソースを一覧表示します。\n"
 
-#: lxc/cluster.go:187
-msgid "MESSAGE"
-msgstr ""
+#: lxc/storage.go:490 lxc/storage.go:491
+#, fuzzy
+msgid "List available storage pools"
+msgstr "利用可能なリソースを一覧表示します。\n"
 
-#: lxc/image.go:177
-msgid "Make image public"
-msgstr "イメージを public にする"
+#: lxc/operation.go:97 lxc/operation.go:98
+msgid "List background operations"
+msgstr ""
 
-#: lxc/publish.go:35
-msgid "Make the image public"
-msgstr "イメージを public にする"
+#: lxc/config_device.go:251 lxc/config_device.go:252
+#, fuzzy
+msgid "List container devices"
+msgstr "コンテナを再起動します。"
 
-#: lxc/info.go:193
-msgid "Memory (current)"
-msgstr "メモリ (現在値)"
+#: lxc/config_template.go:235 lxc/config_template.go:236
+#, fuzzy
+msgid "List container file templates"
+msgstr "一部のコンテナで %s が失敗しました"
 
-#: lxc/info.go:197
-msgid "Memory (peak)"
-msgstr "メモリ (ピーク)"
+#: lxc/list.go:47
+#, fuzzy
+msgid "List containers"
+msgstr "コンテナを停止します。"
 
-#: lxc/info.go:209
-msgid "Memory usage:"
-msgstr "メモリ消費量:"
+#: lxc/list.go:48
+#, fuzzy
+msgid ""
+"List containers\n"
+"\n"
+"Default column layout: ns46tS\n"
+"Fast column layout: nsacPt\n"
+"\n"
+"== Filters ==\n"
+"A single keyword like \"web\" which will list any container with a name "
+"starting by \"web\".\n"
+"A regular expression on the container name. (e.g. .*web.*01$).\n"
+"A key/value pair referring to a configuration item. For those, the\n"
+"namespace can be abbreviated to the smallest unambiguous identifier.\n"
+"\n"
+"Examples:\n"
+"  - \"user.blah=abc\" will list all containers with the \"blah\" user "
+"property set to \"abc\".\n"
+"  - \"u.blah=abc\" will do the same\n"
+"  - \"security.privileged=true\" will list all privileged containers\n"
+"  - \"s.privileged=true\" will do the same\n"
+"\n"
+"A regular expression matching a configuration item or its value. (e.g. "
+"volatile.eth0.hwaddr=00:16:3e:.*).\n"
+"\n"
+"== Columns ==\n"
+"The -c option takes a comma separated list of arguments that control\n"
+"which container attributes to output when displaying in table or csv\n"
+"format.\n"
+"\n"
+"Column arguments are either pre-defined shorthand chars (see below),\n"
+"or (extended) config keys.\n"
+"\n"
+"Commas between consecutive shorthand chars are optional.\n"
+"\n"
+"Pre-defined column shorthand chars:\n"
+"  4 - IPv4 address\n"
+"  6 - IPv6 address\n"
+"  a - Architecture\n"
+"  b - Storage pool\n"
+"  c - Creation date\n"
+"  d - Description\n"
+"  l - Last used date\n"
+"  n - Name\n"
+"  N - Number of Processes\n"
+"  p - PID of the container's init process\n"
+"  P - Profiles\n"
+"  s - State\n"
+"  S - Number of snapshots\n"
+"  t - Type (persistent or ephemeral)\n"
+"  L - Location of the container (e.g. its node)\n"
+"\n"
+"Custom columns are defined with \"key[:name][:maxWidth]\":\n"
+"  KEY: The (extended) config key to display\n"
+"  NAME: Name to display in the column header.\n"
+"  Defaults to the key if not specified or empty.\n"
+"\n"
+"  MAXWIDTH: Max width of the column (longer results are truncated).\n"
+"  Defaults to -1 (unlimited). Use 0 to limit to the column header size."
+msgstr ""
+"使い方: lxc list [<remote>:] [filters] [--format csv|json|table|yaml] [-c "
+"<columns>] [--fast]\n"
+"\n"
+"コンテナを一覧表示します。\n"
+"\n"
+"デフォルトのカラムレイアウト: ns46tS\n"
+"Fast モードのカラムレイアウト: nsacPt\n"
+"\n"
+"*フィルタ*\n"
+"単一の \"web\" のようなキーワードを指定すると、名前が \"web\" ではじまるコン"
+"テナが一覧表示されます。\n"
+"\n"
+"コンテナ名の正規表現 (例: .*web.*01$)\n"
+"\n"
+"設定項目のキーと値。キーの名前空間は一意に識別できる場合は短縮することができ"
+"ます:\n"
+" - \"user.blah=abc\" は \"blah\" という user プロパティが \"abc\" に設定され"
+"ているコンテナをすべて一覧表示します。\n"
+"\n"
+" - \"u.blah=abc\" は上記と同じ意味になります。\n"
+"\n"
+" - \"security.privileged=1\" は特権コンテナをすべて一覧表示します。\n"
+"\n"
+" - \"s.privilaged=1\" は上記と同じ意味になります。\n"
+"\n"
+"設定項目もしくは値とマッチする正規表現 (例:volatile.eth0.hwaddr=00:16:3e:."
+"*)\n"
+"\n"
+"*カラム*\n"
+"\n"
+"-c オプションには、表形式もしくは csv 形式で表示する際にどのコンテナの\n"
+"属性を表示するかを指定するコンマ区切りのリストを指定します。\n"
+"\n"
+"カラムの指定は、定義済みの短縮形 (以下を参照) もしくは (拡張された)\n"
+"設定キーのどちらかを指定します。\n"
+"\n"
+"連続する短縮形の間のコンマは省略できます。\n"
+"\n"
+"短縮形で指定できる文字:\n"
+"\n"
+"    4 - IPv4 アドレス\n"
+"\n"
+"    6 - IPv6 アドレス\n"
+"\n"
+"    a - アーキテクチャ\n"
+"\n"
+"    b - ストレージプール\n"
+"\n"
+"    c - 作成日\n"
+"\n"
+"    d - 説明\n"
+"\n"
+"    l - 最終使用日\n"
+"\n"
+"    n - 名前\n"
+"\n"
+"    N - プロセス数\n"
+"\n"
+"    p - コンテナの init プロセスの pid\n"
+"\n"
+"    P - プロファイル\n"
+"\n"
+"    s - 状態\n"
+"\n"
+"    S - スナップショットの数\n"
+"\n"
+"    t - タイプ (persistent or ephemeral)\n"
+"\n"
+"設定キーの文法: key[:name][:maxWidth]\n"
+"\n"
+"    KEY: 表示する (拡張された) 設定キー\n"
+"\n"
+"    NAME: カラムのヘッダに表示する名前。指定しない場合、もしくは空\n"
+"          の場合のデフォルトはキー。\n"
+"\n"
+"    MAXWIDTH: カラムの最大幅 (結果がこれより長い場合は切り詰められます)\n"
+"              デフォルトは -1 (制限なし)。0 はカラムのヘッダサイズに制限しま"
+"す。\n"
+"\n"
+"*例*\n"
+"lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:"
+"MAC\n"
+"    コンテナの \"NAME\"、\"BASE IMAGE\"、\"STATE\"、\"IPV4\"、\"IPV6\"、\"MAC"
+"\" を\n"
+"    一覧表示します。\n"
+"\n"
+"    \"BASE IMAGE\" と \"MAC\" はコンテナの設定キーから生成したカスタムのカ\n"
+"    ラムです。\n"
+"\n"
+"lxc list -c ns,user.comment:comment\n"
+"    コンテナ名と起動状態とユーザコメントを一覧表示します。"
 
-#: lxc/monitor.go:70
-msgid "Minimum level for log messages"
+#: lxc/image_alias.go:148
+msgid "List image aliases"
 msgstr ""
 
-#: lxc/utils.go:143
-msgid "Missing summary."
-msgstr "サマリーはありません。"
+#: lxc/image_alias.go:149
+msgid ""
+"List image aliases\n"
+"\n"
+"Filters may be part of the image hash or part of the image alias name.\n"
+msgstr ""
 
-#: lxc/network.go:303 lxc/network.go:356 lxc/storage.go:435 lxc/storage.go:565
-msgid "More than one device matches, specify the device name."
-msgstr "複数のデバイスとマッチします。デバイス名を指定してください。"
+#: lxc/image.go:889
+msgid "List images"
+msgstr ""
 
-#: lxc/file.go:460
-msgid "More than one file to download, but target is not a directory"
+#: lxc/image.go:890
+msgid ""
+"List images\n"
+"\n"
+"Filters may be of the <key>=<value> form for property based filtering,\n"
+"or part of the image hash or part of the image alias name.\n"
+"\n"
+"The -c option takes a (optionally comma-separated) list of arguments\n"
+"that control which image attributes to output when displaying in table\n"
+"or csv format.\n"
+"\n"
+"Default column layout is: lfpdasu\n"
+"\n"
+"Column shorthand chars:\n"
+"\n"
+"    l - Shortest image alias (and optionally number of other aliases)\n"
+"    L - Newline-separated list of all image aliases\n"
+"    f - Fingerprint\n"
+"    p - Whether image is public\n"
+"    d - Description\n"
+"    a - Architecture\n"
+"    s - Size"
 msgstr ""
-"ダウンロード対象のファイルが複数ありますが、コピー先がディレクトリではありま"
-"せん"
 
-#: lxc/move.go:42
-msgid "Move the container without its snapshots"
-msgstr "コンテナを移動します (スナップショットは移動しません)"
+#: lxc/profile.go:567 lxc/profile.go:568
+msgid "List profiles"
+msgstr ""
 
-#: lxc/storage.go:1128
-#, c-format
-msgid "Moving the storage volume: %s"
+#: lxc/storage_volume.go:917 lxc/storage_volume.go:918
+#, fuzzy
+msgid "List storage volumes"
 msgstr "ストレージボリュームの移動中: %s"
 
-#: lxc/image.go:1292
-msgid "Must run as root to import from directory"
-msgstr "ディレクトリからのインポートは root で実行する必要があります"
-
-#: lxc/action.go:74
-msgid "Must supply container name for: "
-msgstr "コンテナ名を指定する必要があります: "
+#: lxc/remote.go:413 lxc/remote.go:414
+#, fuzzy
+msgid "List the available remotes"
+msgstr "利用可能なリソースを一覧表示します。\n"
 
-#: lxc/cluster.go:183 lxc/list.go:471 lxc/network.go:576 lxc/profile.go:573
-#: lxc/remote.go:409 lxc/storage.go:731 lxc/storage.go:936
-msgid "NAME"
+#: lxc/config_trust.go:114 lxc/config_trust.go:115
+msgid "List trusted clients"
 msgstr ""
 
-#: lxc/network.go:558 lxc/operation.go:139 lxc/remote.go:380 lxc/remote.go:385
-msgid "NO"
+#: lxc/operation.go:24 lxc/operation.go:25
+msgid "List, show and delete background operations"
 msgstr ""
 
-#: lxc/storage.go:941
-msgid "NODE"
+#: lxc/info.go:123
+#, c-format
+msgid "Location: %s"
 msgstr ""
 
-#: lxc/info.go:117
-#, c-format
-msgid "Name: %s"
-msgstr "コンテナ名: %s"
+#: lxc/info.go:275
+msgid "Log:"
+msgstr "ログ:"
 
-#: lxc/network.go:276
-#, c-format
-msgid "Network %s created"
-msgstr "ネットワーク %s を作成しました"
+#: lxc/network.go:852
+msgid "MAC ADDRESS"
+msgstr ""
 
-#: lxc/network.go:393
-#, c-format
-msgid "Network %s deleted"
-msgstr "ネットワーク %s を削除しました"
+#: lxc/network.go:783
+msgid "MANAGED"
+msgstr ""
 
-#: lxc/network.go:274
-#, fuzzy, c-format
-msgid "Network %s pending on node %s"
-msgstr "ネットワーク名 %s を %s に変更しました"
+#: lxc/cluster.go:123
+msgid "MESSAGE"
+msgstr ""
 
-#: lxc/network.go:470
-#, c-format
-msgid "Network %s renamed to %s"
-msgstr "ネットワーク名 %s を %s に変更しました"
+#: lxc/image.go:137 lxc/image.go:576
+msgid "Make image public"
+msgstr "イメージを public にする"
 
-#: lxc/init.go:145 lxc/init.go:146
-msgid "Network name"
-msgstr "ネットワーク名:"
+#: lxc/publish.go:38
+msgid "Make the image public"
+msgstr "イメージを public にする"
 
-#: lxc/info.go:226
-msgid "Network usage:"
-msgstr "ネットワーク使用状況:"
+#: lxc/network.go:32
+msgid "Manage an attach containers to networks"
+msgstr ""
 
-#: lxc/image.go:180 lxc/publish.go:36
+#: lxc/network.go:31
+msgid "Manage and attach containers to networks"
+msgstr ""
+
+#: lxc/cluster.go:25 lxc/cluster.go:26
+msgid "Manage cluster members"
+msgstr ""
+
+#: lxc/alias.go:22 lxc/alias.go:23
+#, fuzzy
+msgid "Manage command aliases"
+msgstr "未知のイメージコマンド %s"
+
+#: lxc/config.go:28 lxc/config.go:29
+msgid "Manage container and server configuration options"
+msgstr ""
+
+#: lxc/config_device.go:23 lxc/config_device.go:24
+#, fuzzy
+msgid "Manage container devices"
+msgstr "コンテナを一時停止します。"
+
+#: lxc/config_template.go:29 lxc/config_template.go:30
+#, fuzzy
+msgid "Manage container file templates"
+msgstr "一部のコンテナで %s が失敗しました"
+
+#: lxc/config_metadata.go:28 lxc/config_metadata.go:29
+#, fuzzy
+msgid "Manage container metadata files"
+msgstr "一部のコンテナで %s が失敗しました"
+
+#: lxc/file.go:39 lxc/file.go:40
+#, fuzzy
+msgid "Manage files in containers"
+msgstr "コンテナ上のファイルを管理します。\n"
+
+#: lxc/image_alias.go:25 lxc/image_alias.go:26
+#, fuzzy
+msgid "Manage image aliases"
+msgstr "イメージを public にする"
+
+#: lxc/image.go:41
+#, fuzzy
+msgid "Manage images"
+msgstr "イメージを public にする"
+
+#: lxc/image.go:42
+msgid ""
+"Manage images\n"
+"\n"
+"In LXD containers are created from images. Those images were themselves\n"
+"either generated from an existing container or downloaded from an image\n"
+"server.\n"
+"\n"
+"When using remote images, LXD will automatically cache images for you\n"
+"and remove them upon expiration.\n"
+"\n"
+"The image unique identifier is the hash (sha-256) of its representation\n"
+"as a compressed tarball (or for split images, the concatenation of the\n"
+"metadata and rootfs tarballs).\n"
+"\n"
+"Images can be referenced by their full hash, shortest unique partial\n"
+"hash or alias name (if one is set)."
+msgstr ""
+
+#: lxc/profile.go:29 lxc/profile.go:30
+#, fuzzy
+msgid "Manage profiles"
+msgstr "プロファイルURLが不正 %s"
+
+#: lxc/storage.go:32 lxc/storage.go:33
+#, fuzzy
+msgid "Manage storage pools and volumes"
+msgstr "ストレージボリュームの移動中: %s"
+
+#: lxc/storage_volume.go:33
+#, fuzzy
+msgid "Manage storage volumes"
+msgstr "ストレージボリュームの移動中: %s"
+
+#: lxc/storage_volume.go:34
+msgid ""
+"Manage storage volumes\n"
+"\n"
+"Unless specified through a prefix, all volume operations affect \"custom"
+"\" (user created) volumes."
+msgstr ""
+
+#: lxc/remote.go:33 lxc/remote.go:34
+#, fuzzy
+msgid "Manage the list of remote servers"
+msgstr "リモートのlxcサーバを管理します。\n"
+
+#: lxc/config_trust.go:29 lxc/config_trust.go:30
+#, fuzzy
+msgid "Manage trusted clients"
+msgstr "ストレージボリュームの移動中: %s"
+
+#: lxc/info.go:197
+msgid "Memory (current)"
+msgstr "メモリ (現在値)"
+
+#: lxc/info.go:201
+msgid "Memory (peak)"
+msgstr "メモリ (ピーク)"
+
+#: lxc/info.go:213
+msgid "Memory usage:"
+msgstr "メモリ消費量:"
+
+#: lxc/monitor.go:49
+msgid "Minimum level for log messages"
+msgstr ""
+
+#: lxc/config_metadata.go:102 lxc/config_metadata.go:200
+#: lxc/config_template.go:91 lxc/config_template.go:134
+#: lxc/config_template.go:176 lxc/config_template.go:260
+#: lxc/config_template.go:322 lxc/profile.go:197 lxc/profile.go:656
+#, fuzzy
+msgid "Missing container name"
+msgstr "コンテナ名を指定する必要があります: "
+
+#: lxc/profile.go:126
+#, fuzzy
+msgid "Missing container.name name"
+msgstr "コンテナ名を指定する必要があります: "
+
+#: lxc/config_device.go:103 lxc/config_device.go:203 lxc/config_device.go:276
+#: lxc/config_device.go:342 lxc/config_device.go:429 lxc/config_device.go:517
+#: lxc/config_device.go:606
+#, fuzzy
+msgid "Missing name"
+msgstr "サマリーはありません。"
+
+#: lxc/network.go:128 lxc/network.go:201 lxc/network.go:344 lxc/network.go:391
+#: lxc/network.go:476 lxc/network.go:581 lxc/network.go:686 lxc/network.go:832
+#: lxc/network.go:897 lxc/network.go:946 lxc/network.go:1015
+#, fuzzy
+msgid "Missing network name"
+msgstr "ネットワーク名:"
+
+#: lxc/storage.go:185 lxc/storage.go:252 lxc/storage.go:353 lxc/storage.go:408
+#: lxc/storage.go:603 lxc/storage.go:677 lxc/storage_volume.go:146
+#: lxc/storage_volume.go:225 lxc/storage_volume.go:451
+#: lxc/storage_volume.go:526 lxc/storage_volume.go:585
+#: lxc/storage_volume.go:667 lxc/storage_volume.go:766
+#: lxc/storage_volume.go:878 lxc/storage_volume.go:942
+#: lxc/storage_volume.go:1050 lxc/storage_volume.go:1114
+#: lxc/storage_volume.go:1197
+#, fuzzy
+msgid "Missing pool name"
+msgstr "ストレージプール名"
+
+#: lxc/profile.go:321 lxc/profile.go:372 lxc/profile.go:444 lxc/profile.go:544
+#: lxc/profile.go:729 lxc/profile.go:777 lxc/profile.go:836
+msgid "Missing profile name"
+msgstr ""
+
+#: lxc/profile.go:266
+msgid "Missing source profile name"
+msgstr ""
+
+#: lxc/storage_volume.go:311
+#, fuzzy
+msgid "Missing source volume name"
+msgstr "ストレージボリュームの移動中: %s"
+
+#: lxc/file.go:446
+#, fuzzy
+msgid "Missing target directory"
+msgstr "%s はディレクトリではありません"
+
+#: lxc/monitor.go:30
+msgid "Monitor a local or remote LXD server"
+msgstr ""
+
+#: lxc/monitor.go:31
+msgid ""
+"Monitor a local or remote LXD server\n"
+"\n"
+"By default the monitor will listen to all message types."
+msgstr ""
+
+#: lxc/network.go:411 lxc/network.go:496 lxc/storage_volume.go:605
+#: lxc/storage_volume.go:686
+msgid "More than one device matches, specify the device name."
+msgstr "複数のデバイスとマッチします。デバイス名を指定してください。"
+
+#: lxc/file.go:224
+msgid "More than one file to download, but target is not a directory"
+msgstr ""
+"ダウンロード対象のファイルが複数ありますが、コピー先がディレクトリではありま"
+"せん"
+
+#: lxc/move.go:30 lxc/move.go:31
+#, fuzzy
+msgid "Move containers within or in between LXD instances"
+msgstr "コンテナを移動します (スナップショットは移動しません)"
+
+#: lxc/storage_volume.go:993 lxc/storage_volume.go:994
+#, fuzzy
+msgid "Move storage volumes between pools"
+msgstr "ストレージボリュームの移動中: %s"
+
+#: lxc/move.go:44
+msgid "Move the container without its snapshots"
+msgstr "コンテナを移動します (スナップショットは移動しません)"
+
+#: lxc/storage_volume.go:375
+#, c-format
+msgid "Moving the storage volume: %s"
+msgstr "ストレージボリュームの移動中: %s"
+
+#: lxc/image.go:588
+msgid "Must run as root to import from directory"
+msgstr "ディレクトリからのインポートは root で実行する必要があります"
+
+#: lxc/action.go:147
+msgid "Must supply container name for: "
+msgstr "コンテナ名を指定する必要があります: "
+
+#: lxc/cluster.go:119 lxc/list.go:468 lxc/network.go:781 lxc/profile.go:613
+#: lxc/remote.go:463 lxc/storage.go:544 lxc/storage_volume.go:966
+msgid "NAME"
+msgstr ""
+
+#: lxc/network.go:763 lxc/operation.go:138 lxc/remote.go:434 lxc/remote.go:439
+msgid "NO"
+msgstr ""
+
+#: lxc/storage_volume.go:971
+msgid "NODE"
+msgstr ""
+
+#: lxc/info.go:121
+#, c-format
+msgid "Name: %s"
+msgstr "コンテナ名: %s"
+
+#: lxc/network.go:303
+#, c-format
+msgid "Network %s created"
+msgstr "ネットワーク %s を作成しました"
+
+#: lxc/network.go:353
+#, c-format
+msgid "Network %s deleted"
+msgstr "ネットワーク %s を削除しました"
+
+#: lxc/network.go:301
+#, fuzzy, c-format
+msgid "Network %s pending on node %s"
+msgstr "ネットワーク名 %s を %s に変更しました"
+
+#: lxc/network.go:906
+#, c-format
+msgid "Network %s renamed to %s"
+msgstr "ネットワーク名 %s を %s に変更しました"
+
+#: lxc/init.go:45
+msgid "Network name"
+msgstr "ネットワーク名:"
+
+#: lxc/info.go:230
+msgid "Network usage:"
+msgstr "ネットワーク使用状況:"
+
+#: lxc/publish.go:39
 msgid "New alias to define at target"
 msgstr "新しいエイリアスを定義する"
 
-#: lxc/config.go:414
-msgid "No certificate provided to add"
-msgstr "追加すべき証明書が提供されていません"
+#: lxc/image.go:140 lxc/image.go:577
+#, fuzzy
+msgid "New aliases to add to the image"
+msgstr "新しいエイリアスを定義する"
 
-#: lxc/network.go:312 lxc/network.go:365
+#: lxc/network.go:420 lxc/network.go:505
 msgid "No device found for this network"
 msgstr "このネットワークに対するデバイスがありません"
 
-#: lxc/storage.go:444 lxc/storage.go:574
+#: lxc/storage_volume.go:614 lxc/storage_volume.go:695
 msgid "No device found for this storage volume."
 msgstr "このストレージボリュームに対するデバイスがありません。"
 
-#: lxc/config.go:446
-msgid "No fingerprint specified."
-msgstr "フィンガープリントが指定されていません。"
-
-#: lxc/cluster.go:143
+#: lxc/cluster.go:268
 #, fuzzy, c-format
 msgid "Node %s removed"
 msgstr "プロファイル %s が %s から削除されました"
 
-#: lxc/cluster.go:119
+#: lxc/cluster.go:221
 #, fuzzy, c-format
 msgid "Node %s renamed to %s"
 msgstr "プロファイル名 %s を %s に変更しました"
 
-#: lxc/copy.go:46 lxc/init.go:150 lxc/move.go:45 lxc/network.go:105
-#: lxc/storage.go:165
+#: lxc/copy.go:45 lxc/init.go:48 lxc/move.go:47
 #, fuzzy
 msgid "Node name"
 msgstr "ネットワーク名:"
 
-#: lxc/storage.go:388 lxc/storage.go:481
+#: lxc/storage_volume.go:164 lxc/storage_volume.go:243
 msgid "Only \"custom\" volumes can be attached to containers."
 msgstr "\"カスタム\" のボリュームのみがコンテナにアタッチできます。"
 
-#: lxc/remote.go:101
+#: lxc/remote.go:146
 msgid "Only https URLs are supported for simplestreams"
 msgstr "simplestreams は https の URL のみサポートします"
 
-#: lxc/image.go:688
+#: lxc/image.go:658
 msgid "Only https:// is supported for remote image import."
 msgstr "リモートイメージのインポートは https:// のみをサポートします。"
 
-#: lxc/network.go:421 lxc/network.go:605
+#: lxc/network.go:607 lxc/network.go:960
 msgid "Only managed networks can be modified."
 msgstr "管理対象のネットワークのみ変更できます。"
 
-#: lxc/operation.go:85
+#: lxc/operation.go:83
 #, c-format
 msgid "Operation %s deleted"
 msgstr "バックグラウンド操作 %s を削除しました"
 
-#: lxc/help.go:71 lxc/main.go:139 lxc/main.go:195
-msgid "Options:"
-msgstr "オプション:"
-
-#: lxc/exec.go:69
+#: lxc/exec.go:53
 msgid "Override the terminal mode (auto, interactive or non-interactive)"
 msgstr "ターミナルモードを上書きします (auto, interactive, non-interactive)"
 
-#: lxc/list.go:641
+#: lxc/list.go:638
 msgid "PERSISTENT"
 msgstr ""
 
-#: lxc/list.go:473
+#: lxc/list.go:470
 msgid "PID"
 msgstr "PID"
 
-#: lxc/list.go:472
+#: lxc/list.go:469
 msgid "PROCESSES"
 msgstr ""
 
-#: lxc/list.go:474
+#: lxc/list.go:471
 msgid "PROFILES"
 msgstr ""
 
-#: lxc/remote.go:411
+#: lxc/remote.go:465
 msgid "PROTOCOL"
 msgstr ""
 
-#: lxc/image.go:234 lxc/remote.go:413
+#: lxc/image.go:924 lxc/remote.go:467
 msgid "PUBLIC"
 msgstr ""
 
-#: lxc/info.go:220
+#: lxc/info.go:224
 msgid "Packets received"
 msgstr "受信パケット"
 
-#: lxc/info.go:221
+#: lxc/info.go:225
 msgid "Packets sent"
 msgstr "送信パケット"
 
-#: lxc/help.go:78
-msgid "Path to an alternate client configuration directory"
-msgstr "別のクライアント用設定ディレクトリ"
-
-#: lxc/help.go:79
-msgid "Path to an alternate server directory"
-msgstr "別のサーバ用設定ディレクトリ"
-
-#: lxc/main.go:240
-msgid "Pause containers."
+#: lxc/action.go:48 lxc/action.go:49
+#, fuzzy
+msgid "Pause containers"
 msgstr "コンテナを一時停止します。"
 
-#: lxc/main.go:42
-msgid "Permission denied, are you in the lxd group?"
-msgstr "アクセスが拒否されました。lxd グループに所属していますか?"
-
-#: lxc/info.go:138
+#: lxc/info.go:142
 #, c-format
 msgid "Pid: %d"
 msgstr "Pid: %d"
 
-#: lxc/network.go:446 lxc/profile.go:276 lxc/storage.go:648 lxc/storage.go:1210
+#: lxc/network.go:632 lxc/profile.go:491 lxc/storage.go:299
+#: lxc/storage_volume.go:823
 msgid "Press enter to open the editor again"
 msgstr "再度エディタを開くためには Enter キーを押します"
 
-#: lxc/config.go:822 lxc/config.go:887 lxc/config.go:1397 lxc/config.go:1447
-#: lxc/image.go:1192
+#: lxc/config.go:196 lxc/config.go:260 lxc/config_metadata.go:145
+#: lxc/config_template.go:205 lxc/image.go:406
 msgid "Press enter to start the editor again"
 msgstr "再度エディタを起動するには Enter キーを押します"
 
-#: lxc/monitor.go:68
+#: lxc/monitor.go:47
 msgid "Pretty rendering"
 msgstr ""
 
-#: lxc/help.go:73
-msgid "Print debug information"
-msgstr "デバッグ情報を表示します"
-
-#: lxc/help.go:72
-msgid "Print less common commands"
-msgstr "全てのコマンドを表示します (主なコマンドだけではなく)"
+#: lxc/main.go:55
+msgid "Print help"
+msgstr ""
 
-#: lxc/query.go:37
+#: lxc/query.go:36
 msgid "Print the raw response"
 msgstr "レスポンスをそのまま表示します"
 
-#: lxc/help.go:74
-msgid "Print verbose information"
-msgstr "詳細情報を表示します"
+#: lxc/main.go:54
+msgid "Print version number"
+msgstr ""
 
-#: lxc/info.go:162
+#: lxc/info.go:166
 #, c-format
 msgid "Processes: %d"
 msgstr "プロセス数: %d"
 
-#: lxc/profile.go:362
+#: lxc/main_aliases.go:123 lxc/main_aliases.go:131
+#, fuzzy, c-format
+msgid "Processing aliases failed: %s\n"
+msgstr "エイリアスの処理が失敗しました %s\n"
+
+#: lxc/profile.go:147
 #, c-format
 msgid "Profile %s added to %s"
 msgstr "プロファイル %s が %s に追加されました"
 
-#: lxc/profile.go:226
+#: lxc/profile.go:333
 #, c-format
 msgid "Profile %s created"
 msgstr "プロファイル %s を作成しました"
 
-#: lxc/profile.go:310
+#: lxc/profile.go:381
 #, c-format
 msgid "Profile %s deleted"
 msgstr "プロファイル %s を削除しました"
 
-#: lxc/profile.go:397
+#: lxc/profile.go:690
 #, c-format
 msgid "Profile %s removed from %s"
 msgstr "プロファイル %s が %s から削除されました"
 
-#: lxc/profile.go:300
+#: lxc/profile.go:738
 #, c-format
 msgid "Profile %s renamed to %s"
 msgstr "プロファイル名 %s を %s に変更しました"
 
-#: lxc/copy.go:39 lxc/copy.go:40 lxc/init.go:141 lxc/init.go:142
+#: lxc/copy.go:40 lxc/init.go:43
 msgid "Profile to apply to the new container"
 msgstr "新しいコンテナに適用するプロファイル"
 
-#: lxc/profile.go:339
+#: lxc/profile.go:225
 #, c-format
 msgid "Profiles %s applied to %s"
 msgstr "プロファイル %s が %s に追加されました"
 
-#: lxc/info.go:136
+#: lxc/info.go:140
 #, c-format
 msgid "Profiles: %s"
 msgstr "プロファイル: %s"
 
-#: lxc/image.go:619
+#: lxc/image.go:849
 msgid "Properties:"
 msgstr "プロパティ:"
 
-#: lxc/remote.go:72
+#: lxc/remote.go:92
 msgid "Public image server"
 msgstr "Public なイメージサーバとして設定します"
 
-#: lxc/image.go:602
+#: lxc/image.go:827
 #, c-format
 msgid "Public: %s"
 msgstr "パブリック: %s"
 
-#: lxc/file.go:68 lxc/file.go:69
-msgid "Recursively push or pull files"
+#: lxc/publish.go:33 lxc/publish.go:34
+#, fuzzy
+msgid "Publish containers as images"
+msgstr "コンテナを一時停止します。"
+
+#: lxc/file.go:184 lxc/file.go:185
+#, fuzzy
+msgid "Pull files from containers"
+msgstr "コンテナ上のファイルを管理します。\n"
+
+#: lxc/file.go:323 lxc/file.go:324
+#, fuzzy
+msgid "Push files into containers"
+msgstr "コンテナを一時停止します。"
+
+#: lxc/file.go:192 lxc/file.go:330
+#, fuzzy
+msgid "Recursively transfer files"
 msgstr "再帰的にファイルをpush/pullします"
 
-#: lxc/image.go:529
+#: lxc/image.go:1211 lxc/image.go:1212
+#, fuzzy
+msgid "Refresh images"
+msgstr "イメージの更新中: %s"
+
+#: lxc/image.go:1239
 #, c-format
 msgid "Refreshing the image: %s"
 msgstr "イメージの更新中: %s"
 
-#: lxc/remote.go:69
+#: lxc/remote.go:515
+#, fuzzy, c-format
+msgid "Remote %s already exists"
+msgstr "リモート %s は既に存在します"
+
+#: lxc/remote.go:507 lxc/remote.go:569 lxc/remote.go:618 lxc/remote.go:656
+#, fuzzy, c-format
+msgid "Remote %s doesn't exist"
+msgstr "リモート %s は存在しません"
+
+#: lxc/remote.go:116
+#, fuzzy, c-format
+msgid "Remote %s exists as <%s>"
+msgstr "リモート %s は <%s> として存在します"
+
+#: lxc/remote.go:511 lxc/remote.go:573 lxc/remote.go:660
+#, fuzzy, c-format
+msgid "Remote %s is static and cannot be modified"
+msgstr "リモート %s は static ですので変更できません"
+
+#: lxc/remote.go:89
 msgid "Remote admin password"
 msgstr "リモートの管理者パスワード"
 
@@ -1044,7 +1968,7 @@ msgstr "リモートの管理者パスワード"
 msgid "Remote operation canceled by user"
 msgstr "リモート操作がユーザによってキャンセルされました"
 
-#: lxc/info.go:122
+#: lxc/info.go:126
 #, c-format
 msgid "Remote: %s"
 msgstr "リモート名: %s"
@@ -1054,232 +1978,437 @@ msgstr "リモート名: %s"
 msgid "Remove %s (yes/no): "
 msgstr "%s を消去しますか (yes/no): "
 
-#: lxc/storage.go:1247
-#, c-format
-msgid "Renamed storage volume from \"%s\" to \"%s\""
-msgstr "ストレージボリューム名 \"%s\" を \"%s\" に変更しました"
-
-#: lxc/delete.go:36 lxc/delete.go:37
-msgid "Require user confirmation"
-msgstr "ユーザの確認を要求する"
-
-#: lxc/info.go:159
-msgid "Resources:"
-msgstr "リソース:"
-
-#: lxc/main.go:248
-msgid "Restart containers."
-msgstr "コンテナを再起動します。"
+#: lxc/cluster.go:237 lxc/cluster.go:238
+msgid "Remove a member from the cluster"
+msgstr ""
 
-#: lxc/console.go:38
-msgid "Retrieve the container's console log"
-msgstr "コンテナのコンソールログを取得します"
+#: lxc/alias.go:197 lxc/alias.go:198
+#, fuzzy
+msgid "Remove aliases"
+msgstr "リモートの管理者パスワード"
 
-#: lxc/init.go:293
-#, c-format
-msgid "Retrieving image: %s"
-msgstr "イメージの取得中: %s"
+#: lxc/config_device.go:404 lxc/config_device.go:405
+#, fuzzy
+msgid "Remove container devices"
+msgstr "一部のコンテナで %s が失敗しました"
 
-#: lxc/action.go:52
-msgid "Run command against all containers"
-msgstr "すべてのコンテナに対してコマンドを実行します"
+#: lxc/profile.go:631 lxc/profile.go:632
+#, fuzzy
+msgid "Remove profiles from containers"
+msgstr "コンテナ上のファイルを管理します。\n"
 
-#: lxc/image.go:237
-msgid "SIZE"
+#: lxc/remote.go:548 lxc/remote.go:549
+msgid "Remove remotes"
 msgstr ""
 
-#: lxc/list.go:475
-msgid "SNAPSHOTS"
+#: lxc/config_trust.go:196 lxc/config_trust.go:197
+msgid "Remove trusted clients"
 msgstr ""
 
-#: lxc/storage.go:738
-msgid "SOURCE"
+#: lxc/cluster.go:191 lxc/cluster.go:192
+msgid "Rename a cluster member"
 msgstr ""
 
-#: lxc/cluster.go:186 lxc/list.go:476 lxc/network.go:583 lxc/storage.go:736
-msgid "STATE"
+#: lxc/alias.go:146 lxc/alias.go:147 lxc/image_alias.go:249
+#: lxc/image_alias.go:250
+msgid "Rename aliases"
 msgstr ""
 
-#: lxc/remote.go:414
-msgid "STATIC"
-msgstr ""
+#: lxc/rename.go:19 lxc/rename.go:20
+#, fuzzy
+msgid "Rename containers and snapshots"
+msgstr "コンテナまたはコンテナのスナップショットを削除します。\n"
 
-#: lxc/operation.go:155
-msgid "STATUS"
+#: lxc/network.go:872 lxc/network.go:873
+msgid "Rename networks"
 msgstr ""
 
-#: lxc/list.go:478
-msgid "STORAGE POOL"
+#: lxc/profile.go:704 lxc/profile.go:705
+#, fuzzy
+msgid "Rename profiles"
+msgstr "プロファイルURLが不正 %s"
+
+#: lxc/remote.go:486 lxc/remote.go:487
+msgid "Rename remotes"
 msgstr ""
 
-#: lxc/remote.go:71
-msgid "Server authentication type (tls or macaroons)"
-msgstr "サーバの認証タイプ (tls もしくは macaroons)"
+#: lxc/storage_volume.go:1024 lxc/storage_volume.go:1025
+#, fuzzy
+msgid "Rename storage volumes"
+msgstr "ストレージボリューム名 \"%s\" を \"%s\" に変更しました"
 
-#: lxc/remote.go:211
+#: lxc/storage_volume.go:1073
+#, c-format
+msgid "Renamed storage volume from \"%s\" to \"%s\""
+msgstr "ストレージボリューム名 \"%s\" を \"%s\" に変更しました"
+
+#: lxc/delete.go:35
+msgid "Require user confirmation"
+msgstr "ユーザの確認を要求する"
+
+#: lxc/info.go:163
+msgid "Resources:"
+msgstr "リソース:"
+
+#: lxc/action.go:68
+#, fuzzy
+msgid "Restart containers"
+msgstr "コンテナを再起動します。"
+
+#: lxc/action.go:69
+#, fuzzy
+msgid ""
+"Restart containers\n"
+"\n"
+"The opposite of \"lxc pause\" is \"lxc start\"."
+msgstr "\"lxc pause\" の反対のコマンドは \"lxc start\" です。"
+
+#: lxc/restore.go:23
+#, fuzzy
+msgid "Restore containers from snapshots"
+msgstr "コンテナを移動します (スナップショットは移動しません)"
+
+#: lxc/restore.go:24
+msgid ""
+"Restore containers from snapshots\n"
+"\n"
+"If --stateful is passed, then the running state will be restored too."
+msgstr ""
+
+#: lxc/console.go:39
+msgid "Retrieve the container's console log"
+msgstr "コンテナのコンソールログを取得します"
+
+#: lxc/init.go:201
+#, c-format
+msgid "Retrieving image: %s"
+msgstr "イメージの取得中: %s"
+
+#: lxc/action.go:112
+msgid "Run command against all containers"
+msgstr "すべてのコンテナに対してコマンドを実行します"
+
+#: lxc/image.go:927
+msgid "SIZE"
+msgstr ""
+
+#: lxc/list.go:472
+msgid "SNAPSHOTS"
+msgstr ""
+
+#: lxc/storage.go:551
+msgid "SOURCE"
+msgstr ""
+
+#: lxc/cluster.go:122 lxc/list.go:473 lxc/network.go:788 lxc/storage.go:549
+msgid "STATE"
+msgstr ""
+
+#: lxc/remote.go:468
+msgid "STATIC"
+msgstr ""
+
+#: lxc/operation.go:154
+msgid "STATUS"
+msgstr ""
+
+#: lxc/list.go:475
+msgid "STORAGE POOL"
+msgstr ""
+
+#: lxc/query.go:26 lxc/query.go:27
+msgid "Send a raw query to LXD"
+msgstr ""
+
+#: lxc/remote.go:91
+msgid "Server authentication type (tls or macaroons)"
+msgstr "サーバの認証タイプ (tls もしくは macaroons)"
+
+#: lxc/remote.go:260
 msgid "Server certificate NACKed by user"
 msgstr "ユーザによりサーバ証明書が拒否されました"
 
-#: lxc/remote.go:311
+#: lxc/remote.go:360
 msgid "Server doesn't trust us after authentication"
 msgstr "認証後、サーバが我々を信用していません"
 
-#: lxc/remote.go:70
+#: lxc/remote.go:90
 msgid "Server protocol (lxd or simplestreams)"
 msgstr "サーバのプロトコル (lxd or simplestreams)"
 
-#: lxc/file.go:66
+#: lxc/config_device.go:492 lxc/config_device.go:493
+#, fuzzy
+msgid "Set container device configuration keys"
+msgstr "正しくない設定項目 (key) です"
+
+#: lxc/config.go:354 lxc/config.go:355
+#, fuzzy
+msgid "Set container or server configuration keys"
+msgstr "正しくない設定項目 (key) です"
+
+#: lxc/network.go:919 lxc/network.go:920
+#, fuzzy
+msgid "Set network configuration keys"
+msgstr "正しくない設定項目 (key) です"
+
+#: lxc/profile.go:752 lxc/profile.go:753
+#, fuzzy
+msgid "Set profile configuration keys"
+msgstr "正しくない設定項目 (key) です"
+
+#: lxc/storage.go:572 lxc/storage.go:573
+#, fuzzy
+msgid "Set storage pool configuration keys"
+msgstr "正しくない設定項目 (key) です"
+
+#: lxc/storage_volume.go:1088 lxc/storage_volume.go:1089
+#, fuzzy
+msgid "Set storage volume configuration keys"
+msgstr "正しくない設定項目 (key) です"
+
+#: lxc/remote.go:635 lxc/remote.go:636
+msgid "Set the URL for the remote"
+msgstr ""
+
+#: lxc/remote.go:597 lxc/remote.go:598
+#, fuzzy
+msgid "Set the default remote"
+msgstr "デフォルトのリモートは削除できません"
+
+#: lxc/file.go:333
 msgid "Set the file's gid on push"
 msgstr "プッシュ時にファイルのgidを設定します"
 
-#: lxc/file.go:67
+#: lxc/file.go:334
 msgid "Set the file's perms on push"
 msgstr "プッシュ時にファイルのパーミションを設定します"
 
-#: lxc/file.go:65
+#: lxc/file.go:332
 msgid "Set the file's uid on push"
 msgstr "プッシュ時にファイルのuidを設定します"
 
-#: lxc/help.go:29
-msgid "Show all commands (not just interesting ones)"
-msgstr "全てコマンドを表示します (主なコマンドだけではなく)"
+#: lxc/main.go:57
+msgid "Show all debug messages"
+msgstr ""
 
-#: lxc/help.go:75
-msgid "Show client version"
-msgstr "クライアントのバージョンを表示します"
+#: lxc/main.go:58
+msgid "Show all information messages"
+msgstr ""
 
-#: lxc/info.go:40
+#: lxc/config_metadata.go:175 lxc/config_metadata.go:176
+#, fuzzy
+msgid "Show container metadata files"
+msgstr "一部のコンテナで %s が失敗しました"
+
+#: lxc/config.go:451 lxc/config.go:452
+#, fuzzy
+msgid "Show container or server configurations"
+msgstr "拡張した設定を表示する"
+
+#: lxc/info.go:28 lxc/info.go:29
+#, fuzzy
+msgid "Show container or server information"
+msgstr "詳細情報を表示します"
+
+#: lxc/config_template.go:297 lxc/config_template.go:298
+#, fuzzy
+msgid "Show content of container file templates"
+msgstr "一部のコンテナで %s が失敗しました"
+
+#: lxc/cluster.go:141 lxc/cluster.go:142
+msgid "Show details of a cluster member"
+msgstr ""
+
+#: lxc/operation.go:173 lxc/operation.go:174
+msgid "Show details on a background operation"
+msgstr ""
+
+#: lxc/config_device.go:581 lxc/config_device.go:582
+msgid "Show full device configuration for containers or profiles"
+msgstr ""
+
+#: lxc/image.go:1284 lxc/image.go:1285
+msgid "Show image properties"
+msgstr ""
+
+#: lxc/main.go:61
+#, fuzzy
+msgid "Show less common commands"
+msgstr "全てのコマンドを表示します (主なコマンドだけではなく)"
+
+#: lxc/network.go:988 lxc/network.go:989
+#, fuzzy
+msgid "Show network configurations"
+msgstr "拡張した設定を表示する"
+
+#: lxc/profile.go:811 lxc/profile.go:812
+#, fuzzy
+msgid "Show profile configurations"
+msgstr "拡張した設定を表示する"
+
+#: lxc/storage.go:644 lxc/storage.go:645
+msgid "Show storage pool configurations and resources"
+msgstr ""
+
+#: lxc/storage_volume.go:1165
+#, fuzzy
+msgid "Show storage volum configurations"
+msgstr "拡張した設定を表示する"
+
+#: lxc/storage_volume.go:1166
+#, fuzzy
+msgid "Show storage volume configurations"
+msgstr "拡張した設定を表示する"
+
+#: lxc/info.go:39
 msgid "Show the container's last 100 log lines?"
 msgstr "コンテナログの最後の 100 行を表示しますか?"
 
-#: lxc/config.go:36
+#: lxc/remote.go:379 lxc/remote.go:380
+#, fuzzy
+msgid "Show the default remote"
+msgstr "デフォルトのリモートは削除できません"
+
+#: lxc/config.go:455
 msgid "Show the expanded configuration"
 msgstr "拡張した設定を表示する"
 
-#: lxc/info.go:41
+#: lxc/info.go:40
 msgid "Show the resources available to the server"
 msgstr "サーバで使用可能なリソースを表示します"
 
-#: lxc/storage.go:163
+#: lxc/storage.go:648
 msgid "Show the resources available to the storage pool"
 msgstr "ストレージプールで利用可能なリソースを表示します"
 
-#: lxc/storage.go:164
+#: lxc/storage.go:386
 msgid "Show the used and free space in bytes"
 msgstr ""
 
-#: lxc/image.go:600
+#: lxc/image.go:775 lxc/image.go:776
+msgid "Show useful information about images"
+msgstr ""
+
+#: lxc/storage.go:382 lxc/storage.go:383
+#, fuzzy
+msgid "Show useful information about storage pools"
+msgstr "ストレージプールで利用可能なリソースを表示します"
+
+#: lxc/image.go:825
 #, c-format
 msgid "Size: %.2fMB"
 msgstr "サイズ: %.2fMB"
 
-#: lxc/info.go:240
+#: lxc/info.go:244
 msgid "Snapshots:"
 msgstr "スナップショット:"
 
-#: lxc/action.go:163
+#: lxc/action.go:242
 #, c-format
 msgid "Some containers failed to %s"
 msgstr "一部のコンテナで %s が失敗しました"
 
-#: lxc/image.go:634
+#: lxc/image.go:867
 msgid "Source:"
 msgstr "取得元:"
 
-#: lxc/main.go:258
-msgid "Start containers."
+#: lxc/action.go:29 lxc/action.go:30
+#, fuzzy
+msgid "Start containers"
 msgstr "コンテナを起動します。"
 
-#: lxc/launch.go:59
+#: lxc/launch.go:62
 #, c-format
 msgid "Starting %s"
 msgstr "%s を起動中"
 
-#: lxc/info.go:130
+#: lxc/info.go:134
 #, c-format
 msgid "Status: %s"
 msgstr "状態: %s"
 
-#: lxc/main.go:264
-msgid "Stop containers."
+#: lxc/action.go:90 lxc/action.go:91
+#, fuzzy
+msgid "Stop containers"
 msgstr "コンテナを停止します。"
 
-#: lxc/publish.go:37 lxc/publish.go:38
+#: lxc/publish.go:40
 msgid "Stop the container if currently running"
 msgstr "実行中の場合、コンテナを停止します"
 
-#: lxc/publish.go:136
+#: lxc/publish.go:144
 msgid "Stopping container failed!"
 msgstr "コンテナの停止に失敗しました!"
 
-#: lxc/delete.go:121
+#: lxc/delete.go:120
 #, c-format
 msgid "Stopping the container failed: %s"
 msgstr "コンテナの停止に失敗しました: %s"
 
-#: lxc/storage.go:538
+#: lxc/storage.go:144
 #, c-format
 msgid "Storage pool %s created"
 msgstr "ストレージプール %s を作成しました"
 
-#: lxc/storage.go:598
+#: lxc/storage.go:194
 #, c-format
 msgid "Storage pool %s deleted"
 msgstr "ストレージプール %s を削除しました"
 
-#: lxc/storage.go:536
+#: lxc/storage.go:142
 #, fuzzy, c-format
 msgid "Storage pool %s pending on node %s"
 msgstr "ストレージプール %s を作成しました"
 
-#: lxc/init.go:147 lxc/init.go:148
+#: lxc/init.go:46
 msgid "Storage pool name"
 msgstr "ストレージプール名"
 
-#: lxc/storage.go:980
+#: lxc/storage_volume.go:484
 #, c-format
 msgid "Storage volume %s created"
 msgstr "ストレージボリューム %s を作成しました"
 
-#: lxc/storage.go:1000
+#: lxc/storage_volume.go:545
 #, c-format
 msgid "Storage volume %s deleted"
 msgstr "ストレージボリューム %s を削除しました"
 
-#: lxc/storage.go:1135
+#: lxc/storage_volume.go:388
 msgid "Storage volume copied successfully!"
 msgstr "ストレージボリュームのコピーが成功しました!"
 
-#: lxc/storage.go:1129
+#: lxc/storage_volume.go:376
 msgid "Storage volume moved successfully!"
 msgstr "ストレージボリュームの移動が成功しました!"
 
-#: lxc/action.go:50
-msgid "Store the container state (only for stop)"
+#: lxc/action.go:115
+#, fuzzy
+msgid "Store the container state"
 msgstr "コンテナの状態を保存します (stopのみ)"
 
-#: lxc/info.go:201
+#: lxc/info.go:205
 msgid "Swap (current)"
 msgstr "Swap (現在値)"
 
-#: lxc/info.go:205
+#: lxc/info.go:209
 msgid "Swap (peak)"
 msgstr "Swap (ピーク)"
 
-#: lxc/alias.go:85
+#: lxc/alias.go:128
 msgid "TARGET"
 msgstr ""
 
-#: lxc/list.go:477 lxc/network.go:516 lxc/network.go:577 lxc/operation.go:153
-#: lxc/storage.go:935
+#: lxc/list.go:474 lxc/network.go:782 lxc/network.go:854 lxc/operation.go:152
+#: lxc/storage_volume.go:965
 msgid "TYPE"
 msgstr ""
 
-#: lxc/delete.go:105
+#: lxc/delete.go:104
 msgid "The container is currently running, stop it first or pass --force."
 msgstr "コンテナは実行中です。先に停止させるか、--force を指定してください。"
 
-#: lxc/publish.go:101
+#: lxc/publish.go:109
 msgid ""
 "The container is currently running. Use --force to have it stopped and "
 "restarted."
@@ -1287,1089 +2416,697 @@ msgstr ""
 "コンテナは現在実行中です。停止して、再起動するために --force を使用してくだ\n"
 "さい。"
 
-#: lxc/init.go:372
+#: lxc/init.go:280
 msgid "The container you are starting doesn't have any network attached to it."
 msgstr "起動しようとしたコンテナに接続されているネットワークがありません。"
 
-#: lxc/config.go:944 lxc/config.go:961 lxc/config.go:1240
+#: lxc/config_device.go:130 lxc/config_device.go:147 lxc/config_device.go:354
 msgid "The device already exists"
 msgstr "デバイスはすでに存在します"
 
-#: lxc/config.go:1007 lxc/config.go:1019 lxc/config.go:1055 lxc/config.go:1073
-#: lxc/config.go:1119 lxc/config.go:1136 lxc/config.go:1179 lxc/config.go:1197
+#: lxc/config_device.go:218 lxc/config_device.go:230 lxc/config_device.go:442
+#: lxc/config_device.go:460 lxc/config_device.go:533 lxc/config_device.go:550
 msgid "The device doesn't exist"
 msgstr "デバイスが存在しません"
 
-#: lxc/init.go:356
+#: lxc/init.go:264
 #, c-format
 msgid "The local image '%s' couldn't be found, trying '%s:%s' instead."
 msgstr ""
 "ローカルイメージ '%s' が見つかりません。代わりに '%s:%s' を試してみてくださ"
 "い。"
 
-#: lxc/init.go:352
+#: lxc/init.go:260
 #, c-format
 msgid "The local image '%s' couldn't be found, trying '%s:' instead."
 msgstr ""
 "ローカルイメージ '%s' が見つかりません。代わりに '%s:' を試してみてください。"
 
-#: lxc/action.go:35
-msgid "The opposite of \"lxc pause\" is \"lxc start\"."
-msgstr "\"lxc pause\" の反対のコマンドは \"lxc start\" です。"
-
-#: lxc/config.go:1245
+#: lxc/config_device.go:359
 msgid "The profile device doesn't exist"
 msgstr "プロファイルのデバイスが存在しません"
 
-#: lxc/network.go:317 lxc/network.go:370 lxc/storage.go:449 lxc/storage.go:579
+#: lxc/network.go:425 lxc/network.go:510 lxc/storage_volume.go:619
+#: lxc/storage_volume.go:700
 msgid "The specified device doesn't exist"
 msgstr "指定したデバイスが存在しません"
 
-#: lxc/network.go:321 lxc/network.go:374
+#: lxc/network.go:429 lxc/network.go:514
 msgid "The specified device doesn't match the network"
 msgstr "指定したデバイスはネットワークとマッチしません"
 
-#: lxc/publish.go:74
+#: lxc/publish.go:82
 msgid "There is no \"image name\".  Did you want an alias?"
 msgstr ""
 "publish 先にはイメージ名は指定できません。\"--alias\" オプションを使ってくだ"
 "さい。"
 
-#: lxc/help.go:47
-msgid ""
-"This is the LXD command line client.\n"
-"\n"
-"All of LXD's features can be driven through the various commands below.\n"
-"For help with any of those, simply call them with --help."
-msgstr ""
-"これは LXD のコマンドラインクライアントです。\n"
-"\n"
-"LXD の機能のすべてが、以下の色々なコマンドから操作できます。\n"
-"コマンドのヘルプは、--help をコマンドに付けて実行するだけです。"
-
-#: lxc/action.go:46
+#: lxc/action.go:122
 msgid "Time to wait for the container before killing it"
 msgstr "コンテナを強制停止するまでの時間"
 
-#: lxc/image.go:603
+#: lxc/image.go:828
 msgid "Timestamps:"
 msgstr "タイムスタンプ:"
 
-#: lxc/init.go:374
+#: lxc/init.go:282
 msgid "To attach a network to a container, use: lxc network attach"
 msgstr ""
 "コンテナにネットワークを接続するには、lxc network attach を使用してください"
 
-#: lxc/init.go:373
+#: lxc/init.go:281
 msgid "To create a new network, use: lxc network create"
 msgstr ""
 "新しいネットワークを作成するには、lxc network create を使用してください"
 
-#: lxc/console.go:173
+#: lxc/console.go:185
 msgid "To detach from the console, press: <ctrl>+a q"
 msgstr "コンソールから切り離すには <ctrl>+a q を押します"
 
-#: lxc/main.go:172
+#: lxc/main.go:260
 msgid "To start your first container, try: lxc launch ubuntu:16.04"
 msgstr ""
 "初めてコンテナを起動するには、\"lxc launch ubuntu:16.04\" と実行してみてくだ"
 "さい"
 
-#: lxc/copy.go:43 lxc/move.go:43
+#: lxc/storage_volume.go:997
+#, fuzzy
+msgid "Transfer mode, one of pull (default), push or relay"
+msgstr "転送モード。pull, push, relay のいずれか(デフォルトはpull)。"
+
+#: lxc/copy.go:42
+#, fuzzy
+msgid "Transfer mode. One of pull (default), push or relay"
+msgstr "転送モード。pull, push, relay のいずれか(デフォルトはpull)。"
+
+#: lxc/move.go:45 lxc/storage_volume.go:286
 msgid "Transfer mode. One of pull (default), push or relay."
 msgstr "転送モード。pull, push, relay のいずれか(デフォルトはpull)。"
 
-#: lxc/copy.go:212
+#: lxc/copy.go:229
 #, c-format
 msgid "Transferring container: %s"
 msgstr "コンテナを転送中: %s"
 
-#: lxc/image.go:717
+#: lxc/image.go:687
 #, c-format
 msgid "Transferring image: %s"
 msgstr "イメージを転送中: %s"
 
-#: lxc/action.go:108 lxc/launch.go:77
+#: lxc/action.go:181 lxc/launch.go:80
 #, c-format
 msgid "Try `lxc info --show-log %s` for more info"
 msgstr "更に情報を得るために `lxc info --show-log %s` を実行してみてください"
 
-#: lxc/info.go:132
+#: lxc/info.go:136
 msgid "Type: ephemeral"
 msgstr "タイプ: ephemeral"
 
-#: lxc/info.go:134
+#: lxc/info.go:138
 msgid "Type: persistent"
 msgstr "タイプ: persistent"
 
-#: lxc/image.go:238
+#: lxc/image.go:928
 msgid "UPLOAD DATE"
 msgstr ""
 
-#: lxc/cluster.go:184 lxc/remote.go:410
+#: lxc/cluster.go:120 lxc/remote.go:464
 msgid "URL"
 msgstr ""
 
-#: lxc/network.go:580 lxc/profile.go:574 lxc/storage.go:740 lxc/storage.go:938
+#: lxc/network.go:785 lxc/profile.go:614 lxc/storage.go:553
+#: lxc/storage_volume.go:968
 msgid "USED BY"
 msgstr ""
 
-#: lxc/manpage.go:36
-msgid "Unable to find help2man."
-msgstr "help2man が見つかりません。"
+#: lxc/list.go:514
+#, c-format
+msgid "Unknown column shorthand char '%c' in '%s'"
+msgstr ""
 
-#: lxc/file.go:124
+#: lxc/file.go:596
 #, c-format
 msgid "Unknown file type '%s'"
 msgstr "未知のファイルタイプ '%s'"
 
-#: lxc/image.go:608
+#: lxc/config_device.go:649 lxc/config_device.go:650
+#, fuzzy
+msgid "Unset container device configuration keys"
+msgstr "正しくない設定項目 (key) です"
+
+#: lxc/config.go:559 lxc/config.go:560
+#, fuzzy
+msgid "Unset container or server configuration keys"
+msgstr "正しくない設定項目 (key) です"
+
+#: lxc/network.go:1050 lxc/network.go:1051
+#, fuzzy
+msgid "Unset network configuration keys"
+msgstr "正しくない設定項目 (key) です"
+
+#: lxc/profile.go:865 lxc/profile.go:866
+#, fuzzy
+msgid "Unset profile configuration keys"
+msgstr "正しくない設定項目 (key) です"
+
+#: lxc/storage.go:728 lxc/storage.go:729
+#, fuzzy
+msgid "Unset storage pool configuration keys"
+msgstr "正しくない設定項目 (key) です"
+
+#: lxc/storage_volume.go:1240 lxc/storage_volume.go:1241
+#, fuzzy
+msgid "Unset storage volume configuration keys"
+msgstr "正しくない設定項目 (key) です"
+
+#: lxc/image.go:835
 #, c-format
 msgid "Uploaded: %s"
 msgstr "アップロード日時: %s"
 
-#: lxc/action.go:38
-#, c-format
+#: lxc/delete.go:47
+#, fuzzy
+msgid "User aborted delete operation"
+msgstr "ユーザが削除操作を中断しました。"
+
+#: lxc/utils/cancel.go:40
 msgid ""
-"Usage: lxc %s [--all] [<remote>:]<container> [[<remote>:]<container>...]\n"
-"\n"
-"%s%s"
+"User signaled us three times, exiting. The remote operation will keep "
+"running."
 msgstr ""
-"使い方: lxc %s [--all] [<remote>:]<container> [[<remote>:]<container>...]\n"
-"\n"
-"%s%s"
+"ユーザからのシグナルを 3 度受信したので exit しました。リモート操作は実行し続"
+"けます。"
 
-#: lxc/help.go:45
-msgid "Usage: lxc <command> [options]"
-msgstr "使い方: lxc <コマンド> [オプション]"
+#: lxc/query.go:35
+msgid "Wait for the operation to complete"
+msgstr "処理が完全に終わるまで待ちます"
 
-#: lxc/alias.go:22
+#: lxc/restore.go:36
 msgid ""
-"Usage: lxc alias <subcommand> [options]\n"
-"\n"
-"Manage command aliases.\n"
-"\n"
-"lxc alias add <alias> <target>\n"
-"    Add a new alias <alias> pointing to <target>.\n"
-"\n"
-"lxc alias remove <alias>\n"
-"    Remove the alias <alias>.\n"
-"\n"
-"lxc alias list\n"
-"    List all the aliases.\n"
-"\n"
-"lxc alias rename <old alias> <new alias>\n"
-"    Rename remote <old alias> to <new alias>."
+"Whether or not to restore the container's running state from snapshot (if "
+"available)"
 msgstr ""
+"スナップショットからコンテナの稼動状態をリストアするかどうか (取得可能な場合)"
 
-#: lxc/cluster.go:23
-msgid ""
-"Usage: lxc cluster <subcommand> [options]\n"
-"\n"
-"Manage cluster nodes.\n"
-"\n"
-"lxc cluster list [<remote>:]\n"
-"    List all nodes in the cluster.\n"
-"\n"
-"lxc cluster show [<remote>:]<node>\n"
-"    Show details of a node.\n"
-"\n"
-"lxc cluster rename [<remote>:]<node> <new-name>\n"
-"    Rename a cluster node.\n"
-"\n"
-"lxc cluster delete [<remote>:]<node> [--force]\n"
-"    Delete a node from the cluster."
+#: lxc/snapshot.go:31
+msgid "Whether or not to snapshot the container's running state"
+msgstr "コンテナの稼動状態のスナップショットを取得するかどうか"
+
+#: lxc/network.go:765 lxc/operation.go:140 lxc/remote.go:436 lxc/remote.go:441
+msgid "YES"
+msgstr ""
+
+#: lxc/exec.go:122
+msgid "You can't pass -t and -T at the same time"
+msgstr "-t と -T は同時に指定できません"
+
+#: lxc/exec.go:126
+msgid "You can't pass -t or -T at the same time as --mode"
+msgstr "--mode と同時に -t または -T は指定できません"
+
+#: lxc/copy.go:78
+#, fuzzy
+msgid "You must specify a destination container name when using --target"
+msgstr "コピー元のコンテナ名を指定してください"
+
+#: lxc/copy.go:73 lxc/move.go:188
+msgid "You must specify a source container name"
+msgstr "コピー元のコンテナ名を指定してください"
+
+#: lxc/copy.go:68 lxc/move.go:91 lxc/move.go:183
+msgid "You must use the same source and destination remote when using --target"
+msgstr ""
+
+#: lxc/alias.go:53
+msgid "add <alias> <target>"
+msgstr ""
+
+#: lxc/config_trust.go:57
+msgid "add [<remote>:] <cert>"
+msgstr ""
+
+#: lxc/profile.go:100
+msgid "add [<remote>:]<container> <profile>"
+msgstr ""
+
+#: lxc/config_device.go:74
+msgid "add [<remote>:]<container|profile> <device> <type> [key=value...]"
+msgstr ""
+
+#: lxc/remote.go:82
+msgid "add [<remote>] <IP|FQDN|URL>"
 msgstr ""
 
-#: lxc/config.go:85
+#: lxc/alias.go:21 lxc/image_alias.go:24
 #, fuzzy
+msgid "alias"
+msgstr "エイリアス:"
+
+#: lxc/profile.go:160
+msgid "assign [<remote>:]<container> <profiles>"
+msgstr ""
+
+#: lxc/network.go:102
+msgid "attach [<remote>:]<network> <container> [device name] [interface name]"
+msgstr ""
+
+#: lxc/storage_volume.go:120
+msgid "attach [<remote>:]<pool> <volume> <container> [device name] <path>"
+msgstr ""
+
+#: lxc/storage_volume.go:199
 msgid ""
-"Usage: lxc config <subcommand> [options]\n"
-"\n"
-"Change container or server configuration options.\n"
-"\n"
-"*Container configuration*\n"
-"\n"
-"lxc config get [<remote>:][container] <key>\n"
-"    Get container or server configuration key.\n"
-"\n"
-"lxc config set [<remote>:][container] <key> <value>\n"
-"    Set container or server configuration key.\n"
-"\n"
-"lxc config unset [<remote>:][container] <key>\n"
-"    Unset container or server configuration key.\n"
-"\n"
-"lxc config show [<remote>:][container] [--expanded]\n"
-"    Show container or server configuration.\n"
-"\n"
-"lxc config edit [<remote>:][container]\n"
-"    Edit configuration, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"*Container metadata*\n"
-"\n"
-"lxc config metadata show [<remote>:][container]\n"
-"    Show the container metadata.yaml content.\n"
-"\n"
-"lxc config metadata edit [<remote>:][container]\n"
-"    Edit the container metadata.yaml, either by launching external editor or "
-"reading STDIN.\n"
-"\n"
-"*Container templates*\n"
-"\n"
-"lxc config template list [<remote>:][container]\n"
-"    List the names of template files for a container.\n"
-"\n"
-"lxc config template show [<remote>:][container] [template]\n"
-"    Show the content of a template file for a container.\n"
-"\n"
-"lxc config template create [<remote>:][container] [template]\n"
-"    Add an empty template file for a container.\n"
-"\n"
-"lxc config template edit [<remote>:][container] [template]\n"
-"    Edit the content of a template file for a container, either by launching "
-"external editor or reading STDIN.\n"
-"\n"
-"lxc config template delete [<remote>:][container] [template]\n"
-"    Delete a template file for a container.\n"
-"\n"
-"\n"
-"*Device management*\n"
-"\n"
-"lxc config device add [<remote>:]<container> <device> <type> [key=value...]\n"
-"    Add a device to a container.\n"
-"\n"
-"lxc config device get [<remote>:]<container> <device> <key>\n"
-"    Get a device property.\n"
-"\n"
-"lxc config device set [<remote>:]<container> <device> <key> <value>\n"
-"    Set a device property.\n"
-"\n"
-"lxc config device unset [<remote>:]<container> <device> <key>\n"
-"    Unset a device property.\n"
-"\n"
-"lxc config device override [<remote>:]<container> <device> [key=value...]\n"
-"    Copy a profile inherited device into local container config.\n"
-"\n"
-"lxc config device list [<remote>:]<container>\n"
-"    List devices for container.\n"
-"\n"
-"lxc config device show [<remote>:]<container>\n"
-"    Show full device details for container.\n"
-"\n"
-"lxc config device remove [<remote>:]<container> <name>...\n"
-"    Remove device from container.\n"
-"\n"
-"*Client trust store management*\n"
-"\n"
-"lxc config trust list [<remote>:]\n"
-"    List all trusted certs.\n"
-"\n"
-"lxc config trust add [<remote>:] <certfile.crt>\n"
-"    Add certfile.crt to trusted hosts.\n"
-"\n"
-"lxc config trust remove [<remote>:] [hostname|fingerprint]\n"
-"    Remove the cert from trusted hosts.\n"
-"\n"
-"*Examples*\n"
-"\n"
-"cat config.yaml | lxc config edit <container>\n"
-"    Update the container configuration from config.yaml.\n"
-"\n"
-"lxc config device add [<remote>:]container1 <device-name> disk source=/share/"
-"c1 path=opt\n"
-"    Will mount the host's /share/c1 onto /opt in the container.\n"
-"\n"
-"lxc config set [<remote>:]<container> limits.cpu 2\n"
-"    Will set a CPU limit of \"2\" for the container.\n"
-"\n"
-"lxc config set core.https_address [::]:8443\n"
-"    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
-"\n"
-"lxc config set core.trust_password blah\n"
-"    Will set the server's trust password to blah."
+"attach-profile [<remote:>]<pool> <volume> <profile> [device name] <path>"
 msgstr ""
-"使い方: lxc config <subcommand> [options]\n"
-"\n"
-"コンテナもしくはサーバの設定オプションを変更します。\n"
-"\n"
-"*コンテナの設定*\n"
-"\n"
-"lxc config get [<remote>:][container] <key>\n"
-"    コンテナもしくはサーバの設定項目の値を取得します。\n"
-"\n"
-"lxc config set [<remote>:][container] <key> <value>\n"
-"    コンテナもしくはサーバの設定項目に値を設定します。\n"
-"\n"
-"lxc config unset [<remote>:][container] <key>\n"
-"    コンテナもしくはサーバの設定項目を削除します。\n"
-"\n"
-"lxc config show [<remote>:][container] [--expanded]\n"
-"    コンテナもしくはサーバの設定を表示します。\n"
-"\n"
-"lxc config edit [<remote>:][container]\n"
-"    外部エディタを起動するか、標準入力から読み込むことにより、設定を編集しま"
-"す。\n"
-"\n"
-"*コンテナのメタデータ*\n"
-"\n"
-"lxc config metadata show [<remote>:][container]\n"
-"    コンテナの metadata.yaml の内容を表示します。\n"
-"\n"
-"lxc config metadata edit [<remote>:][container]\n"
-"    外部エディアを起動するか、標準入力から読み込むことにより、コンテナの "
-"metadata.yaml を編集します。\n"
-"\n"
-"*コンテナテンプレート*\n"
-"\n"
-"lxc config template list [<remote>:][container]\n"
-"    コンテナのテンプレートファイルの名前をリスト表示します。\n"
-"\n"
-"lxc config template show [<remote>:][container] [template]\n"
-"    Show the content of a template file for a container.\n"
-"    コンテナのテンプレートファイルの内容を表示します。\n"
-"\n"
-"lxc config template create [<remote>:][container] [template]\n"
-"    Add an empty template file for a container.\n"
-"    コンテナに空のテンプレートファイルを追加します。\n"
-"\n"
-"lxc config template edit [<remote>:][container] [template]\n"
-"    外部エディタを起動するか、標準入力から読み込むことにより、コンテナのテン"
-"プレートファイルの内容を編集します。\n"
-"\n"
-"lxc config template delete [<remote>:][container] [template]\n"
-"    コンテナのテンプレートファイルを削除します。\n"
-"\n"
-"\n"
-"*デバイスの管理*\n"
-"\n"
-"lxc config device add [<remote>:]<container> <device> <type> [key=value...]\n"
-"    コンテナにデバイスを追加します。\n"
-"\n"
-"lxc config device get [<remote>:]<container> <device> <key>\n"
-"    デバイスのプロパティを取得します。\n"
-"\n"
-"lxc config device set [<remote>:]<container> <device> <key> <value>\n"
-"    デバイスのプロパティを設定します。\n"
-"\n"
-"lxc config device unset [<remote>:]<container> <device> <key>\n"
-"    デバイスのプロパティを削除します。\n"
-"\n"
-"lxc config device list [<remote>:]<container>\n"
-"    コンテナのデバイスを一覧表示します。\n"
-"\n"
-"lxc config device show [<remote>:]<container>\n"
-"    全てのデバイスの詳細を表示します。\n"
-"\n"
-"lxc config device remove [<remote>:]<container> <name>\n"
-"    コンテナからデバイスを削除します。\n"
-"\n"
-"*クライアントの証明書ストアの管理*\n"
-"\n"
-"lxc config trust list [<remote>:]\n"
-"    信頼する証明書を全て表示します。\n"
-"\n"
-"lxc config trust add [<remote>:] <certfile.crt>\n"
-"    certfile.crt を信頼するホストに追加します。\n"
-"\n"
-"lxc config trust remove [<remote>:] [hostname|fingerprint]\n"
-"    信頼するホストから証明書を消去します。\n"
-"\n"
-"*例*\n"
-"\n"
-"cat config.yaml | lxc config edit <container>\n"
-"    config.yaml から読み込んで、コンテナの設定を更新します。\n"
-"\n"
-"lxc config device add [<remote>:]container1 <device-name> disk source=/share/"
-"c1 path=opt\n"
-"    ホストの /share/c1 をコンテナ内の /opt にマウントする。\n"
-"\n"
-"lxc config set [<remote>:]<container> limits.cpu 2\n"
-"    コンテナの CPU 制限値を \"2\" に設定する。\n"
-"\n"
-"lxc config set core.https_address [::]:8443\n"
-"    IPv4 と IPv6 のポート 8443 で Listen するよう設定する。\n"
-"\n"
-"lxc config set core.trust_password blah\n"
-"    サーバのパスワードを blah に設定する。"
 
-#: lxc/console.go:31
+#: lxc/network.go:175
 msgid ""
-"Usage: lxc console [<remote>:]<container> [-l]\n"
-"\n"
-"Interact with the container's console device and log."
+"attach-profile [<remote>:]<network> <profile> [device name] [interface name]"
+msgstr ""
+
+#: lxc/cluster.go:24
+msgid "cluster"
+msgstr ""
+
+#: lxc/config.go:27
+msgid "config"
+msgstr ""
+
+#: lxc/console.go:30
+msgid "console [<remote>:]<container>"
+msgstr ""
+
+#: lxc/storage_volume.go:280
+msgid "copy <pool>/<volume> <pool>/<volume>"
 msgstr ""
-"使い方: lxc console [<remote>:]<container> [-l]\n"
-"\n"
-"コンテナのコンソールデバイスとログに接続します。"
 
-#: lxc/copy.go:30
+#: lxc/image.go:128
+msgid "copy [<remote>:]<image> <remote>:"
+msgstr ""
+
+#: lxc/profile.go:238
+msgid "copy [<remote>:]<profile> [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/copy.go:32
+msgid "copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>]"
+msgstr ""
+
+#: lxc/image_alias.go:57
+msgid "create [<remote>:]<alias> <fingerprint>"
+msgstr ""
+
+#: lxc/config_template.go:65
+msgid "create [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/network.go:248
+msgid "create [<remote>:]<network> [key=value...]"
+msgstr ""
+
+#: lxc/storage.go:87
+msgid "create [<remote>:]<pool> <driver> [key=value]..."
+msgstr ""
+
+#: lxc/storage_volume.go:424
+msgid "create [<remote>:]<pool> <volume> [key=value]..."
+msgstr ""
+
+#: lxc/profile.go:295
+msgid "create [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/remote.go:453
+msgid "default"
+msgstr ""
+
+#: lxc/image_alias.go:103
+msgid "delete [<remote>:]<alias>"
+msgstr ""
+
+#: lxc/config_template.go:107
+msgid "delete [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/file.go:70
 #, fuzzy
-msgid ""
-"Usage: lxc copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>] "
-"[--ephemeral|e] [--profile|-p <profile>...] [--config|-c <key=value>...] [--"
-"container-only] [--target <node>]\n"
-"\n"
-"Copy containers within or in between LXD instances."
+msgid "delete [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...]"
 msgstr ""
-"使い方: lxc copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>] "
-"[--ephemeral|e] [--profile|-p <profile>...] [--config|-c <key=value>...]\n"
+"使い方: lxc %s [--all] [<remote>:]<container> [[<remote>:]<container>...]\n"
 "\n"
-"LXDインスタンス内もしくはLXDインスタンス間でコンテナをコピーします。"
+"%s%s"
 
 #: lxc/delete.go:27
+#, fuzzy
 msgid ""
-"Usage: lxc delete [<remote>:]<container>[/<snapshot>] "
-"[[<remote>:]<container>[/<snapshot>]...]\n"
-"\n"
-"Delete containers and snapshots."
+"delete [<remote>:]<container>[/<snapshot>] [[<remote>:]<container>[/"
+"<snapshot>]...]"
 msgstr ""
 "使い方: lxc delete [<remote>:]<container>[/<snapshot>] "
 "[[<remote>:]<container>[/<snapshot>]...]\n"
 "\n"
 "コンテナとコンテナのスナップショットを消去します。"
 
-#: lxc/exec.go:53
-msgid ""
-"Usage: lxc exec [<remote>:]<container> [-t] [-T] [-n] [--mode=auto|"
-"interactive|non-interactive] [--env KEY=VALUE...] [--] <command line>\n"
-"\n"
-"Execute commands in containers.\n"
-"\n"
-"The command is executed directly using exec, so there is no shell and shell "
-"patterns (variables, file redirects, ...)\n"
-"won't be understood. If you need a shell environment you need to execute the "
-"shell executable, passing the shell commands\n"
-"as arguments, for example:\n"
-"\n"
-"    lxc exec <container> -- sh -c \"cd /tmp && pwd\"\n"
-"\n"
-"Mode defaults to non-interactive, interactive mode is selected if both stdin "
-"AND stdout are terminals (stderr is ignored)."
+#: lxc/image.go:258
+#, fuzzy
+msgid "delete [<remote>:]<image> [[<remote>:]<image>...]"
 msgstr ""
-"使い方: lxc exec [<remote>:]<container> [-t] [-T] [-n] [--mode=auto|"
-"interactive|non-interactive] [--env KEY=VALUE...] [--] <command line>\n"
-"\n"
-"指定したコマンドをコンテナ内で実行します。\n"
-"\n"
-"コマンドは exec を使って直接実行するので、シェルは使わず、シェルパターン (変"
-"数、ファイルリダイレクタなど) は受け入れられません。シェル環境が必要な場合"
-"は、シェルを実行し、引数としてコマンドを渡す必要があります。例えば:\n"
-"\n"
-"    lxc exec <container> -- sh -c \"cd /tmp && pwd\"\n"
+"使い方: lxc %s [--all] [<remote>:]<container> [[<remote>:]<container>...]\n"
 "\n"
-"デフォルトのモードは non-interactive です。もし標準入出力が両方ともターミナル"
-"の場合は interactive モードが選択されます (標準エラー出力は無視されます)。"
+"%s%s"
 
-#: lxc/file.go:39
-msgid ""
-"Usage: lxc file <subcommand> [options]\n"
-"\n"
-"Manage files in containers.\n"
-"\n"
-"lxc file pull [-r|--recursive] [<remote>:]<container>/<path> "
-"[[<remote>:]<container>/<path>...] <target path>\n"
-"    Pull files from containers.\n"
-"\n"
-"lxc file push [-r|--recursive] [-p|--create-dirs] [--uid=UID] [--gid=GID] [--"
-"mode=MODE] <source path> [<source path>...] [<remote>:]<container>/<path>\n"
-"    Push files into containers.\n"
-"\n"
-"lxc file delete [<remote>:]<container>/<path> [[<remote>:]<container>/"
-"<path>...]\n"
-"    Delete files in containers.\n"
-"\n"
-"lxc file edit [<remote>:]<container>/<path>\n"
-"    Edit files in containers using the default text editor.\n"
-"\n"
-"*Examples*\n"
-"lxc file push /etc/hosts foo/etc/hosts\n"
-"   To push /etc/hosts into the container \"foo\".\n"
-"\n"
-"lxc file pull foo/etc/hosts .\n"
-"   To pull /etc/hosts from the container and write it to the current "
-"directory."
+#: lxc/network.go:317
+msgid "delete [<remote>:]<network>"
 msgstr ""
-"使い方: lxc file <subcommand> [options]\n"
-"\n"
-"コンテナ内のファイルを管理します。\n"
-"\n"
-"lxc file pull [-r|--recursive] [<remote>:]<container>/<path> "
-"[[<remote>:]<container>/<path>...] <target path>\n"
-"    コンテナからファイルを取得します。\n"
-"\n"
-"lxc file push [-r|--recursive] [-p|--create-dirs] [--uid=UID] [--gid=GID] [--"
-"mode=MODE] <source path> [<source path>...] [<remote>:]<container>/<path>\n"
-"    コンテナにファイルを設置します。\n"
-"\n"
-"lxc file delete [<remote>:]<container>/<path> [[<remote>:]<container>/"
-"<path>...]\n"
-"    コンテナ内のファイルを削除します。\n"
-"\n"
-"lxc file edit [<remote>:]<container>/<path>\n"
-"    デフォルトのテキストエディタを使用してコンテナ内のファイルを編集しま"
-"す。\n"
-"\n"
-"*例*\n"
-"lxc file push /etc/hosts foo/etc/hosts\n"
-"   /etc/hosts を \"foo\" コンテナ内に設置します。\n"
-"\n"
-"lxc file pull foo/etc/hosts .\n"
-"   コンテナから /etc/hosts を取得し、カレントディレクトリに置きます。"
 
-#: lxc/finger.go:15
-msgid ""
-"Usage: lxc finger [<remote>:]\n"
-"\n"
-"Check if the LXD server is alive."
+#: lxc/operation.go:51
+msgid "delete [<remote>:]<operation>"
 msgstr ""
-"使い方: lxc finger [<remote>:]\n"
-"\n"
-"LXD サーバが動作しているかチェックします。"
 
-#: lxc/help.go:22
-msgid ""
-"Usage: lxc help [--all]\n"
-"\n"
-"Help page for the LXD client."
+#: lxc/storage.go:158
+msgid "delete [<remote>:]<pool>"
 msgstr ""
-"Usage: lxc help [--all]\n"
-"\n"
-"LXD クライアントのヘルプを表示します。"
 
-#: lxc/image.go:73
-msgid ""
-"Usage: lxc image <subcommand> [options]\n"
-"\n"
-"Manipulate container images.\n"
-"\n"
-"In LXD containers are created from images. Those images were themselves\n"
-"either generated from an existing container or downloaded from an image\n"
-"server.\n"
-"\n"
-"When using remote images, LXD will automatically cache images for you\n"
-"and remove them upon expiration.\n"
-"\n"
-"The image unique identifier is the hash (sha-256) of its representation\n"
-"as a compressed tarball (or for split images, the concatenation of the\n"
-"metadata and rootfs tarballs).\n"
-"\n"
-"Images can be referenced by their full hash, shortest unique partial\n"
-"hash or alias name (if one is set).\n"
-"\n"
-"\n"
-"lxc image import <tarball>|<dir> [<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) or an image directory into the LXD "
-"image store.\n"
-"    Directory import is only available on Linux and must be performed as "
-"root.\n"
-"\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"
-"    Delete one or more images from the LXD image store.\n"
-"\n"
-"lxc image refresh [<remote>:]<image> [[<remote>:]<image>...]\n"
-"    Refresh one or more images from its parent remote.\n"
-"\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"
-"    The target may be an existing directory, file name, or \"-\" to specify\n"
-"    stdout.  The target MUST be a directory when exporting a split image.\n"
-"    If the target is a directory, the image's name (each part's name for\n"
-"    split images) as found in the database will be used for the exported\n"
-"    image.  If the target is a file (not a directory and not stdout), then\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"
-"    Print everything LXD knows about a given image.\n"
-"\n"
-"lxc image list [<remote>:] [filter] [--format csv|json|table|yaml] [-c "
-"<columns>]\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"
-"    The -c option takes a (optionally comma-separated) list of arguments "
-"that\n"
-"    control which image attributes to output when displaying in table or "
-"csv\n"
-"    format.\n"
-"\n"
-"    Default column layout is: lfpdasu\n"
-"\n"
-"    Column shorthand chars:\n"
-"\n"
-"        l - Shortest image alias (and optionally number of other aliases)\n"
-"\n"
-"        L - Newline-separated list of all image aliases\n"
-"\n"
-"        f - Fingerprint\n"
-"\n"
-"        p - Whether image is public\n"
-"\n"
-"        d - Description\n"
-"\n"
-"        a - Architecture\n"
-"\n"
-"        s - Size\n"
-"\n"
-"        u - Upload date\n"
-"\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"
-"    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"
-"    Create a new alias for an existing image.\n"
-"\n"
-"lxc image alias rename [<remote>:]<alias> <new-name>\n"
-"    Rename an alias.\n"
-"\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."
+#: lxc/storage_volume.go:498
+msgid "delete [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:345
+msgid "delete [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/storage.go:431
+msgid "description"
+msgstr ""
+
+#: lxc/network.go:365
+msgid "detach [<remote>:]<network> <container> [device name]"
+msgstr ""
+
+#: lxc/storage_volume.go:559
+msgid "detach [<remote>:]<pool> <volume> <container> [device name]"
+msgstr ""
+
+#: lxc/storage_volume.go:641
+msgid "detach-profile [<remote:>]<pool> <volume> <profile> [device name]"
+msgstr ""
+
+#: lxc/network.go:450
+msgid "detach-profile [<remote>:]<network> <container> [device name]"
+msgstr ""
+
+#: lxc/config_device.go:22
+msgid "device"
+msgstr ""
+
+#: lxc/init.go:223
+msgid "didn't get any affected image, container or snapshot from server"
+msgstr ""
+"サーバから変更されたイメージ、コンテナ、スナップショットを取得できませんで\n"
+"した"
+
+#: lxc/image.go:819
+msgid "disabled"
+msgstr "無効"
+
+#: lxc/storage.go:430
+msgid "driver"
+msgstr ""
+
+#: lxc/config_template.go:150
+msgid "edit [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/file.go:120
+msgid "edit [<remote>:]<container>/<path>"
+msgstr ""
+
+#: lxc/image.go:310
+msgid "edit [<remote>:]<image>"
+msgstr ""
+
+#: lxc/network.go:535
+msgid "edit [<remote>:]<network>"
+msgstr ""
+
+#: lxc/storage.go:206
+msgid "edit [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:722
+msgid "edit [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:394
+msgid "edit [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/config.go:86 lxc/config_metadata.go:52
+msgid "edit [<remote>:][container]"
+msgstr ""
+
+#: lxc/image.go:821
+msgid "enabled"
+msgstr "有効"
+
+#: lxc/action.go:234
+#, c-format
+msgid "error: %v"
+msgstr "エラー: %v"
+
+#: lxc/exec.go:37
+msgid "exec [<remote>:]<container> [flags] [--] <command line>"
+msgstr ""
+
+#: lxc/image.go:433
+msgid "export [<remote>:]<image> [target]"
+msgstr ""
+
+#: lxc/file.go:38
+msgid "file"
+msgstr ""
+
+#: lxc/config_device.go:177
+msgid "get [<remote>:]<container|profile> <device> <key>"
+msgstr ""
+
+#: lxc/network.go:658
+msgid "get [<remote>:]<network> <key>"
+msgstr ""
+
+#: lxc/storage.go:326
+msgid "get [<remote>:]<pool> <key>"
+msgstr ""
+
+#: lxc/storage_volume.go:851
+msgid "get [<remote>:]<pool> <volume> <key>"
+msgstr ""
+
+#: lxc/profile.go:518
+msgid "get [<remote>:]<profile> <key>"
+msgstr ""
+
+#: lxc/config.go:287
+msgid "get [<remote>:][container] <key>"
+msgstr ""
+
+#: lxc/remote.go:378
+msgid "get-default"
+msgstr ""
+
+#: lxc/image.go:40
+msgid "image"
+msgstr ""
+
+#: lxc/image.go:569
+msgid ""
+"import <tarball>|<directory>|<URL> [<rootfs tarball>] [<remote>:] "
+"[key=value...]"
+msgstr ""
+
+#: lxc/storage.go:428
+msgid "info"
+msgstr ""
+
+#: lxc/image.go:774
+msgid "info [<remote>:]<image>"
+msgstr ""
+
+#: lxc/storage.go:381
+msgid "info [<remote>:]<pool>"
 msgstr ""
-"使い方: lxc image <subcommand> [options]\n"
-"\n"
-"コンテナイメージを操作します。\n"
-"\n"
-"LXD では、コンテナはイメージから作られます。このイメージは、既存のコンテナ\n"
-"やイメージサーバからダウンロードしたイメージから作られます。\n"
-"\n"
-"リモートのイメージを使う場合、LXD は自動的にイメージをキャッシュします。そ\n"
-"して、イメージの期限が切れるとキャッシュを削除します。\n"
-"\n"
-"イメージ固有の識別子は圧縮された tarball (分割イメージの場合は、メタデータ\n"
-"と rootfs tarball を結合したもの) のハッシュ (sha-256) です。\n"
-"\n"
-"イメージは全ハッシュ文字列、一意に定まるハッシュの短縮表現、(設定されてい\n"
-"る場合は) エイリアスで参照できます。\n"
-"\n"
-"\n"
-"lxc image import <tarball>|<dir> [<rootfs tarball>|<URL>] [<remote>:] [--"
-"public] [--created-at=ISO-8601] [--expires-at=ISO-8601] [--"
-"fingerprint=FINGERPRINT] [--alias=ALIAS...] [prop=value]\n"
-"    イメージの tarball (複数も可能) を LXD のイメージストアにインポートしま\n"
-"    す。ディレクトリのインポートは Linux 上でのみ可能で、root で実行する必"
-"要\n"
-"    があります。\n"
-"\n"
-"lxc image copy [<remote>:]<image> <remote>: [--alias=ALIAS...] [--copy-"
-"aliases] [--public] [--auto-update]\n"
-"    ネットワーク経由である LXD デーモンから他の LXD デーモンへイメージを\n"
-"    コピーします。\n"
-"\n"
-"    auto-update フラグは、サーバがイメージを最新に保つように指示します。イ\n"
-"    メージのソースがエイリアスであり、public である必要があります。\n"
-"\n"
-"lxc image delete [<remote>:]<image> [[<remote>:]<image>...]\n"
-"    LXD のイメージストアからイメージを削除します。\n"
-"\n"
-"lxc image refresh [<remote>:]<image> [[<remote>:]<image>...]\n"
-"    ひとつ以上のイメージを取得元から更新します。\n"
-"\n"
-"lxc image export [<remote>:]<image> [target]\n"
-"    LXD のイメージストアから配布可能な tarball としてイメージをエクスポート\n"
-"    します。\n"
-"\n"
-"    出力先の指定はオプションで、デフォルトでは現在のディレクトリです。\n"
-"    出力先は存在するディレクトリ、ファイル名、標準出力を示す \"-\" のい\n"
-"    ずれかです。分割イメージをエクスポートする際は、出力先はディレクト\n"
-"    リでなければなりません。出力先がディレクトリの場合、データベースで\n"
-"    見つかったイメージ名 (分割イメージの部分それぞれの名前) をエクスポー\n"
-"    トするイメージに使用します。出力先がファイルの場合 (ディレクトリで\n"
-"    も標準出力でもない場合)、イメージを圧縮するアルゴリズムにもとづい\n"
-"    た適切な拡張子が対象のファイル名に追加されます。\n"
-"\n"
-"lxc image info [<remote>:]<image>\n"
-"    指定したイメージについてのすべての情報を表示します。\n"
-"\n"
-"lxc image list [<remote>:] [filter] [--format csv|json|table|yaml] [-c "
-"<columns>]\n"
-"    LXD のイメージストア内のイメージを一覧表示します。プロパティでフィルタ\n"
-"    を行う場合は、フィルタは <key>=<value> の形になります。フィルタはイメー\n"
-"    ジハッシュの一部やイメージエイリアス名の一部も指定できます。\n"
-"\n"
-"    -c オプションは、表形式もしくは csv で出力する際のイメージ属性の出\n"
-"    力形式を制御します。引数のリスト (カンマ区切りも可能) を指定します。\n"
-"\n"
-"    デフォルトのカラムレイアウト: lfpdasu\n"
-"\n"
-"    カラムの指定文字:\n"
-"\n"
-"        l - もっとも短いイメージのエイリアス (他の指定されているエイリアスの"
-"数も表示します)\n"
-"\n"
-"        L - イメージのエイリアスすべて (改行区切り)\n"
-"\n"
-"        f - フィンガープリント\n"
-"\n"
-"        p - イメージがパブリックかどうか\n"
-"\n"
-"        d - 説明\n"
-"\n"
-"        a - アーキテクチャ\n"
-"\n"
-"        s - サイズ\n"
-"\n"
-"        u - アップロード日\n"
-"\n"
-"lxc image show [<remote>:]<image>\n"
-"    ユーザが変更できるプロパティの YAML 形式の出力を行います。\n"
-"\n"
-"lxc image edit [<remote>:]<image>\n"
-"    外部エディタまたは標準入力からの読み込みにより、イメージを編集します。\n"
-"    例: lxc image edit <image> # エディタの起動\n"
-"        cat image.yaml | lxc image edit <image> # image.yaml から読み込み\n"
-"\n"
-"lxc image alias create [<remote>:]<alias> <fingerprint>\n"
-"    既存のイメージに新たにエイリアスを作成します。\n"
-"\n"
-"lxc image alias rename [<remote>:]<alias> <new-name>\n"
-"    エイリアスの名前を変更します。\n"
-"\n"
-"lxc image alias delete [<remote>:]<alias>\n"
-"    エイリアスを削除します。\n"
-"\n"
-"lxc image alias list [<remote>:] [filter]\n"
-"    エイリアスを一覧表示します。イメージハッシュの一部やイメージのエイリア"
-"ス\n"
-"    名の一部をフィルタとして指定できます。"
 
 #: lxc/info.go:27
+msgid "info [<remote>:][<container>]"
+msgstr ""
+
+#: lxc/init.go:33
+msgid "init [<remote>:]<image> [<remote>:][<name>]"
+msgstr ""
+
+#: lxc/launch.go:20
+msgid "launch [<remote>:]<image> [<remote>:][<name>]"
+msgstr ""
+
+#: lxc/alias.go:96 lxc/remote.go:411
+msgid "list"
+msgstr ""
+
+#: lxc/cluster.go:56 lxc/config_trust.go:112 lxc/network.go:716
+#: lxc/operation.go:95 lxc/profile.go:565 lxc/storage.go:488
+msgid "list [<remote>:]"
+msgstr ""
+
+#: lxc/image.go:887
+msgid "list [<remote>:] [filter]"
+msgstr ""
+
+#: lxc/image_alias.go:146
+msgid "list [<remote>:] [filters...]"
+msgstr ""
+
+#: lxc/list.go:45
+msgid "list [<remote>:] [filters]"
+msgstr ""
+
+#: lxc/config_template.go:234
+msgid "list [<remote>:]<container>"
+msgstr ""
+
+#: lxc/config_device.go:249
+msgid "list [<remote>:]<container|profile>"
+msgstr ""
+
+#: lxc/storage_volume.go:915
+msgid "list [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/network.go:806
+msgid "list-leases [<remote>:]<network>"
+msgstr ""
+
+#: lxc/alias.go:57
 msgid ""
-"Usage: lxc info [<remote>:][<container>] [--show-log] [--resources]\n"
-"\n"
-"Show container or server information.\n"
-"\n"
-"lxc info [<remote>:]<container> [--show-log]\n"
-"    For container information.\n"
-"\n"
-"lxc info [<remote>:] [--resources]\n"
-"    For LXD server information."
+"lxc alias add list list -c ns46S\n"
+"    Overwrite the \"list\" command to pass -c ns46S."
 msgstr ""
-"使い方: lxc info [<remote>:][<container>] [--show-log] [--resources]\n"
-"\n"
-"コンテナもしくはサーバの情報を表示します。\n"
-"\n"
-"lxc info [<remote>:]<container> [--show-log]\n"
-"    コンテナの情報を表示します。\n"
-"\n"
-"lxc info [<remote>:] [--resources]\n"
-"    LXD サーバの情報を表示します。"
 
-#: lxc/init.go:79
-#, fuzzy
+#: lxc/alias.go:200
 msgid ""
-"Usage: lxc init [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
-"profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
-"<node>]\n"
-"\n"
-"Create containers from images.\n"
-"\n"
-"Not specifying -p will result in the default profile.\n"
-"Specifying \"-p\" with no argument will result in no profile.\n"
-"\n"
-"Examples:\n"
-"    lxc init ubuntu:16.04 u1"
+"lxc alias remove my-list\n"
+"    Remove the \"my-list\" alias."
 msgstr ""
-"使い方: lxc init [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
-"profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>] [--storage|-s <pool>] [--type|-t <instance type>]\n"
-"\n"
-"指定したイメージからコンテナを初期化します。\n"
-"\n"
-"-p を指定しない場合はデフォルトのプロファイルを使います。\n"
-"\"-p\" のように引数なしで -p を使うとプロファイルなしとなります。\n"
-"\n"
-"例:\n"
-"    lxc init ubuntu:16.04 u1"
 
-#: lxc/launch.go:20
-#, fuzzy
+#: lxc/alias.go:149
 msgid ""
-"Usage: lxc launch [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
-"profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
-"<node>]\n"
-"\n"
-"Create and start containers from images.\n"
-"\n"
-"Not specifying -p will result in the default profile.\n"
-"Specifying \"-p\" with no argument will result in no profile.\n"
-"\n"
-"Examples:\n"
-"    lxc launch ubuntu:16.04 u1"
+"lxc alias rename list my-list\n"
+"    Rename existing alias \"list\" to \"my-list\"."
 msgstr ""
-"使い方: lxc launch [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] "
-"[--profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>] [--storage|-s <pool>] [--type|-t <instance type>]\n"
-"\n"
-"指定したイメージからコンテナを起動します。\n"
-"\n"
-"-p を指定しない場合はデフォルトのプロファイルを使います。\n"
-"\"-p\" のように引数なしで -p を使うとプロファイルなしとなります。\n"
-"\n"
-"例:\n"
-"    lxc launch ubuntu:16.04 u1"
 
-#: lxc/list.go:44
-#, fuzzy
+#: lxc/config_device.go:78
 msgid ""
-"Usage: lxc list [<remote>:] [filters] [--format csv|json|table|yaml] [-c "
-"<columns>] [--fast]\n"
-"\n"
-"List the existing containers.\n"
-"\n"
-"Default column layout: ns46tS\n"
-"Fast column layout: nsacPt\n"
-"\n"
-"*Filters*\n"
-"A single keyword like \"web\" which will list any container with a name "
-"starting by \"web\".\n"
-"\n"
-"A regular expression on the container name. (e.g. .*web.*01$).\n"
-"\n"
-"A key/value pair referring to a configuration item. For those, the namespace "
-"can be abbreviated to the smallest unambiguous identifier.\n"
-"\t- \"user.blah=abc\" will list all containers with the \"blah\" user "
-"property set to \"abc\".\n"
-"\n"
-"\t- \"u.blah=abc\" will do the same\n"
-"\n"
-"\t- \"security.privileged=true\" will list all privileged containers\n"
-"\n"
-"\t- \"s.privileged=true\" will do the same\n"
-"\n"
-"A regular expression matching a configuration item or its value. (e.g. "
-"volatile.eth0.hwaddr=00:16:3e:.*).\n"
-"\n"
-"*Columns*\n"
-"The -c option takes a comma separated list of arguments that control\n"
-"which container attributes to output when displaying in table or csv\n"
-"format.\n"
-"\n"
-"Column arguments are either pre-defined shorthand chars (see below),\n"
-"or (extended) config keys.\n"
-"\n"
-"Commas between consecutive shorthand chars are optional.\n"
-"\n"
-"Pre-defined column shorthand chars:\n"
-"\n"
-"\t4 - IPv4 address\n"
-"\n"
-"\t6 - IPv6 address\n"
-"\n"
-"\ta - Architecture\n"
-"\n"
-"\tb - Storage pool\n"
-"\n"
-"\tc - Creation date\n"
-"\n"
-"\td - Description\n"
-"\n"
-"\tl - Last used date\n"
-"\n"
-"\tn - Name\n"
-"\n"
-"\tN - Number of Processes\n"
-"\n"
-"\tp - PID of the container's init process\n"
-"\n"
-"\tP - Profiles\n"
-"\n"
-"\ts - State\n"
-"\n"
-"\tS - Number of snapshots\n"
-"\n"
-"\tt - Type (persistent or ephemeral)\n"
-"\n"
-"\tL - Location of the container (e.g. its node)\n"
-"\n"
-"Custom columns are defined with \"key[:name][:maxWidth]\":\n"
-"\n"
-"\tKEY: The (extended) config key to display\n"
-"\n"
-"\tNAME: Name to display in the column header.\n"
-"\tDefaults to the key if not specified or empty.\n"
-"\n"
-"\tMAXWIDTH: Max width of the column (longer results are truncated).\n"
-"\tDefaults to -1 (unlimited). Use 0 to limit to the column header size.\n"
-"\n"
-"*Examples*\n"
-"lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:"
-"MAC\n"
-"\tShows a list of containers using the \"NAME\", \"BASE IMAGE\", \"STATE\", "
-"\"IPV4\",\n"
-"\t\"IPV6\" and \"MAC\" columns.\n"
-"\n"
-"\t\"BASE IMAGE\" and \"MAC\" are custom columns generated from container "
-"configuration keys.\n"
-"\n"
-"lxc list -c ns,user.comment:comment\n"
-"\tList images with their running state and user comment. "
+"lxc config device add [<remote>:]container1 <device-name> disk source=/share/"
+"c1 path=opt\n"
+"    Will mount the host's /share/c1 onto /opt in the container."
 msgstr ""
-"使い方: lxc list [<remote>:] [filters] [--format csv|json|table|yaml] [-c "
-"<columns>] [--fast]\n"
-"\n"
-"コンテナを一覧表示します。\n"
-"\n"
-"デフォルトのカラムレイアウト: ns46tS\n"
-"Fast モードのカラムレイアウト: nsacPt\n"
-"\n"
-"*フィルタ*\n"
-"単一の \"web\" のようなキーワードを指定すると、名前が \"web\" ではじまるコン"
-"テナが一覧表示されます。\n"
-"\n"
-"コンテナ名の正規表現 (例: .*web.*01$)\n"
-"\n"
-"設定項目のキーと値。キーの名前空間は一意に識別できる場合は短縮することができ"
-"ます:\n"
-" - \"user.blah=abc\" は \"blah\" という user プロパティが \"abc\" に設定され"
-"ているコンテナをすべて一覧表示します。\n"
-"\n"
-" - \"u.blah=abc\" は上記と同じ意味になります。\n"
-"\n"
-" - \"security.privileged=1\" は特権コンテナをすべて一覧表示します。\n"
-"\n"
-" - \"s.privilaged=1\" は上記と同じ意味になります。\n"
-"\n"
-"設定項目もしくは値とマッチする正規表現 (例:volatile.eth0.hwaddr=00:16:3e:."
-"*)\n"
-"\n"
-"*カラム*\n"
-"\n"
-"-c オプションには、表形式もしくは csv 形式で表示する際にどのコンテナの\n"
-"属性を表示するかを指定するコンマ区切りのリストを指定します。\n"
-"\n"
-"カラムの指定は、定義済みの短縮形 (以下を参照) もしくは (拡張された)\n"
-"設定キーのどちらかを指定します。\n"
-"\n"
-"連続する短縮形の間のコンマは省略できます。\n"
-"\n"
-"短縮形で指定できる文字:\n"
-"\n"
-"    4 - IPv4 アドレス\n"
-"\n"
-"    6 - IPv6 アドレス\n"
-"\n"
-"    a - アーキテクチャ\n"
-"\n"
-"    b - ストレージプール\n"
-"\n"
-"    c - 作成日\n"
-"\n"
-"    d - 説明\n"
-"\n"
-"    l - 最終使用日\n"
-"\n"
-"    n - 名前\n"
-"\n"
-"    N - プロセス数\n"
-"\n"
-"    p - コンテナの init プロセスの pid\n"
-"\n"
-"    P - プロファイル\n"
-"\n"
-"    s - 状態\n"
+
+#: lxc/config.go:90
+msgid ""
+"lxc config edit <container> < container.yaml\n"
+"    Update the container configuration from config.yaml."
+msgstr ""
+
+#: lxc/config.go:357
+msgid ""
+"lxc config set [<remote>:]<container> limits.cpu 2\n"
+"    Will set a CPU limit of \"2\" for the container.\n"
 "\n"
-"    S - スナップショットの数\n"
+"lxc config set core.https_address [::]:8443\n"
+"    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
 "\n"
-"    t - タイプ (persistent or ephemeral)\n"
+"lxc config set core.trust_password blah\n"
+"    Will set the server's trust password to blah."
+msgstr ""
+
+#: lxc/file.go:187
+msgid ""
+"lxc file pull foo/etc/hosts .\n"
+"   To pull /etc/hosts from the container and write it to the current "
+"directory."
+msgstr ""
+
+#: lxc/file.go:326
+msgid ""
+"lxc file push /etc/hosts foo/etc/hosts\n"
+"   To push /etc/hosts into the container \"foo\"."
+msgstr ""
+
+#: lxc/image.go:314
+msgid ""
+"lxc image edit <image>\n"
+"    Launch a text editor to edit the properties\n"
 "\n"
-"設定キーの文法: key[:name][:maxWidth]\n"
+"lxc image edit <image> < image.yaml\n"
+"    Load the image properties from a YAML file"
+msgstr ""
+
+#: lxc/info.go:31
+#, fuzzy
+msgid ""
+"lxc info [<remote>:]<container> [--show-log]\n"
+"    For container information.\n"
 "\n"
-"    KEY: 表示する (拡張された) 設定キー\n"
+"lxc info [<remote>:] [--resources]\n"
+"    For LXD server information."
+msgstr ""
+"使い方: lxc info [<remote>:][<container>] [--show-log] [--resources]\n"
 "\n"
-"    NAME: カラムのヘッダに表示する名前。指定しない場合、もしくは空\n"
-"          の場合のデフォルトはキー。\n"
+"コンテナもしくはサーバの情報を表示します。\n"
 "\n"
-"    MAXWIDTH: カラムの最大幅 (結果がこれより長い場合は切り詰められます)\n"
-"              デフォルトは -1 (制限なし)。0 はカラムのヘッダサイズに制限しま"
-"す。\n"
+"lxc info [<remote>:]<container> [--show-log]\n"
+"    コンテナの情報を表示します。\n"
 "\n"
-"*例*\n"
+"lxc info [<remote>:] [--resources]\n"
+"    LXD サーバの情報を表示します。"
+
+#: lxc/init.go:37
+#, fuzzy
+msgid "lxc init ubuntu:16.04 u1"
+msgstr "lxc init ubuntu [<nom>]\n"
+
+#: lxc/launch.go:24
+#, fuzzy
+msgid "lxc launch ubuntu:16.04 u1"
+msgstr "lxc launch ubuntu [<nom>]\n"
+
+#: lxc/list.go:103
+msgid ""
 "lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:"
 "MAC\n"
-"    コンテナの \"NAME\"、\"BASE IMAGE\"、\"STATE\"、\"IPV4\"、\"IPV6\"、\"MAC"
-"\" を\n"
-"    一覧表示します。\n"
-"\n"
-"    \"BASE IMAGE\" と \"MAC\" はコンテナの設定キーから生成したカスタムのカ\n"
-"    ラムです。\n"
+"  Show containers using the \"NAME\", \"BASE IMAGE\", \"STATE\", \"IPV4\", "
+"\"IPV6\" and \"MAC\" columns.\n"
+"  \"BASE IMAGE\" and \"MAC\" are custom columns generated from container "
+"configuration keys.\n"
 "\n"
 "lxc list -c ns,user.comment:comment\n"
-"    コンテナ名と起動状態とユーザコメントを一覧表示します。"
-
-#: lxc/manpage.go:20
-msgid ""
-"Usage: lxc manpage <directory>\n"
-"\n"
-"Generate all the LXD manpages."
+"  List images with their running state and user comment."
 msgstr ""
-"使い方: lxc manpage <directory>\n"
-"\n"
-"LXD の manpage をすべて生成します。"
 
-#: lxc/monitor.go:49
+#: lxc/monitor.go:35
 msgid ""
-"Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
-"\n"
-"Monitor a local or remote LXD server.\n"
-"\n"
-"By default the monitor will listen to all message types.\n"
-"\n"
-"Message types to listen for can be specified with --type.\n"
-"\n"
-"*Examples*\n"
 "lxc monitor --type=logging\n"
 "    Only show log messages.\n"
 "\n"
 "lxc monitor --pretty --type=logging --loglevel=info\n"
 "    Show a pretty log of messages with info level or higher.\n"
-msgstr ""
-"使い方: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
-"\n"
-"ローカルまたはリモートの LXD サーバの動作をモニタリングします。\n"
 "\n"
-"デフォルトでは全てのメッセージタイプをモニタリングします。\n"
-"\n"
-"--type により、モニタリングするメッセージタイプを指定できます。\n"
-"\n"
-"*例*\n"
-"lxc monitor --type=logging\n"
-"    ログメッセージのみ表示します。\n"
-"\n"
-"lxc monitor --pretty --type=logging --loglevel=info\n"
-"    info レベルかそれ以上のメッセージの pretty ログを表示します。"
+"lxc monitor --type=lifecycle\n"
+"    Only show lifecycle events."
+msgstr ""
 
-#: lxc/move.go:26
+#: lxc/move.go:33
 #, fuzzy
 msgid ""
-"Usage: lxc move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
-"<snapshot>]] [--container-only] [--target <node>]\n"
-"\n"
-"Move containers within or in between LXD instances.\n"
-"\n"
 "lxc move [<remote>:]<source container> [<remote>:][<destination container>] "
 "[--container-only]\n"
 "    Move a container between two hosts, renaming it if destination name "
@@ -2396,230 +3133,14 @@ msgstr ""
 "lxc move <container>/<old snapshot name> <container>/<new snapshot name>\n"
 "    スナップショットをリネームします。"
 
-#: lxc/network.go:52
-#, fuzzy
-msgid ""
-"Usage: lxc network <subcommand> [options]\n"
-"\n"
-"Manage and attach containers to networks.\n"
-"\n"
-"lxc network list [<remote>:]\n"
-"    List available networks.\n"
-"\n"
-"lxc network list-leases [<remote>:]<network>\n"
-"    List the DHCP leases for the network\n"
-"\n"
-"lxc network show [<remote>:]<network> [--target <node>]\n"
-"    Show details of a network.\n"
-"\n"
-"lxc network create [<remote>:]<network> [key=value...] [--target <node>]\n"
-"    Create a network.\n"
-"\n"
-"lxc network get [<remote>:]<network> <key> [--target <node>]\n"
-"    Get network configuration.\n"
-"\n"
-"lxc network set [<remote>:]<network> <key> <value>\n"
-"    Set network configuration.\n"
-"\n"
-"lxc network unset [<remote>:]<network> <key>\n"
-"    Unset network configuration.\n"
-"\n"
-"lxc network delete [<remote>:]<network>\n"
-"    Delete a network.\n"
-"\n"
-"lxc network edit [<remote>:]<network>\n"
-"    Edit network, either by launching external editor or reading STDIN.\n"
-"\n"
-"lxc network rename [<remote>:]<network> <new-name>\n"
-"    Rename a network.\n"
-"\n"
-"lxc network attach [<remote>:]<network> <container> [device name] [interface "
-"name]\n"
-"    Attach a network interface connecting the network to a specified "
-"container.\n"
-"\n"
-"lxc network attach-profile [<remote>:]<network> <profile> [device name] "
-"[interface name]\n"
-"    Attach a network interface connecting the network to a specified "
-"profile.\n"
-"\n"
-"lxc network detach [<remote>:]<network> <container> [device name]\n"
-"    Remove a network interface connecting the network to a specified "
-"container.\n"
-"\n"
-"lxc network detach-profile [<remote>:]<network> <container> [device name]\n"
-"    Remove a network interface connecting the network to a specified "
-"profile.\n"
-"\n"
-"*Examples*\n"
-"cat network.yaml | lxc network edit <network>\n"
-"    Update a network using the content of network.yaml"
-msgstr ""
-"使い方: lxc network <subcommand> [options]\n"
-"\n"
-"ネットワークを管理し、コンテナをネットワークに接続します。\n"
-"\n"
-"lxc network list [<remote>:]\n"
-"    利用できるネットワークを一覧します。\n"
-"\n"
-"lxc network show [<remote>:]<network>\n"
-"    ネットワークの詳細を表示します。\n"
-"\n"
-"lxc network create [<remote>:]<network> [key=value...]\n"
-"    ネットワークを作成します。\n"
-"\n"
-"lxc network get [<remote>:]<network> <key>\n"
-"    ネットワークの設定を取得します。\n"
-"\n"
-"lxc network set [<remote>:]<network> <key> <value>\n"
-"    ネットワークを設定します。\n"
-"\n"
-"lxc network unset [<remote>:]<network> <key>\n"
-"    ネットワークの設定を削除します。\n"
-"\n"
-"lxc network delete [<remote>:]<network>\n"
-"    ネットワークを削除します。\n"
-"\n"
-"lxc network edit [<remote>:]<network>\n"
-"    外部エディタもしくは標準入力から読み込むことでネットワークを編集しま"
-"す。\n"
-"\n"
-"lxc network rename [<remote>:]<network> <new-name>\n"
-"    ネットワーク名を変更します。\n"
-"\n"
-"lxc network attach [<remote>:]<network> <container> [device name] [interface "
-"name]\n"
-"    指定したコンテナにネットワークに接続しているネットワークインター\n"
-"    フェースを接続します。\n"
-"\n"
-"lxc network attach-profile [<remote>:]<network> <profile> [device name] "
-"[interface name]\n"
-"    指定したプロファイルにネットワークに接続しているネットワークインター\n"
-"    フェースを接続します。\n"
-"\n"
-"lxc network detach [<remote>:]<network> <container> [device name]\n"
-"    指定したコンテナをネットワークに接続しているネットワークインター\n"
-"    フェースから切断します。\n"
-"\n"
-"lxc network detach-profile [<remote>:]<network> <container> [device name]\n"
-"    指定したプロファイルをネットワークに接続しているネットワークインター\n"
-"    フェースから削除します。\n"
-"\n"
-"*例*\n"
-"cat network.yaml | lxc network edit <network>\n"
-"    network.yaml の内容でネットワークを更新します。"
-
-#: lxc/operation.go:25
+#: lxc/operation.go:176
 msgid ""
-"Usage: lxc operation <subcommand> [options]\n"
-"\n"
-"List, show and delete background operations.\n"
-"\n"
-"lxc operation list [<remote>:]\n"
-"    List background operations.\n"
-"\n"
-"lxc operation show [<remote>:]<operation>\n"
-"    Show details on a background operation.\n"
-"\n"
-"lxc operation delete [<remote>:]<operation>\n"
-"    Delete a background operation (will attempt to cancel).\n"
-"\n"
-"*Examples*\n"
 "lxc operation show 344a79e4-d88a-45bf-9c39-c72c26f6ab8a\n"
 "    Show details on that operation UUID"
 msgstr ""
-"使い方: lxc operation <subcommand> [options]\n"
-"\n"
-"バックグラウンドの操作の一覧表示、確認、削除を行います。\n"
-"\n"
-"lxc operation list [<remote>:]\n"
-"    バックグラウンド操作の一覧を表示します。\n"
-"\n"
-"lxc operation show [<remote>:]<operation>\n"
-"    バックグラウンド操作の詳細を表示します。\n"
-"\n"
-"lxc operation delete [<remote>:]<operation>\n"
-"    バックグラウンド操作の削除を行います (キャンセルを試みます)。\n"
-"\n"
-"*例*\n"
-"lxc operation show 344a79e4-d88a-45bf-9c39-c72c26f6ab8a\n"
-"    指定した UUID を持つ操作の詳細を表示します"
 
-#: lxc/profile.go:51
+#: lxc/profile.go:165
 msgid ""
-"Usage: lxc profile <subcommand> [options]\n"
-"\n"
-"Manage container configuration profiles.\n"
-"\n"
-"*Profile configuration*\n"
-"lxc profile list [<remote>:]\n"
-"    List available profiles.\n"
-"\n"
-"lxc profile show [<remote>:]<profile>\n"
-"    Show details of a profile.\n"
-"\n"
-"lxc profile create [<remote>:]<profile>\n"
-"    Create a profile.\n"
-"\n"
-"lxc profile copy [<remote>:]<profile> [<remote>:]<profile>\n"
-"    Copy the profile.\n"
-"\n"
-"lxc profile get [<remote>:]<profile> <key>\n"
-"    Get profile configuration.\n"
-"\n"
-"lxc profile set [<remote>:]<profile> <key> <value>\n"
-"    Set profile configuration.\n"
-"\n"
-"lxc profile unset [<remote>:]<profile> <key>\n"
-"    Unset profile configuration.\n"
-"\n"
-"lxc profile delete [<remote>:]<profile>\n"
-"    Delete a profile.\n"
-"\n"
-"lxc profile edit [<remote>:]<profile>\n"
-"    Edit profile, either by launching external editor or reading STDIN.\n"
-"\n"
-"lxc profile rename [<remote>:]<profile> <new-name>\n"
-"    Rename a profile.\n"
-"\n"
-"*Profile assignment*\n"
-"lxc profile assign [<remote>:]<container> <profiles>\n"
-"    Replace the current set of profiles for the container by the one "
-"provided.\n"
-"\n"
-"lxc profile add [<remote>:]<container> <profile>\n"
-"    Add a profile to a container\n"
-"\n"
-"lxc profile remove [<remote>:]<container> <profile>\n"
-"    Remove the profile from a container\n"
-"\n"
-"*Device management*\n"
-"lxc profile device list [<remote>:]<profile>\n"
-"    List devices in the given profile.\n"
-"\n"
-"lxc profile device show [<remote>:]<profile>\n"
-"    Show full device details in the given profile.\n"
-"\n"
-"lxc profile device remove [<remote>:]<profile> <name>\n"
-"    Remove a device from a profile.\n"
-"\n"
-"lxc profile device get [<remote>:]<profile> <name> <key>\n"
-"    Get a device property.\n"
-"\n"
-"lxc profile device set [<remote>:]<profile> <name> <key> <value>\n"
-"    Set a device property.\n"
-"\n"
-"lxc profile device unset [<remote>:]<profile> <name> <key>\n"
-"    Unset a device property.\n"
-"\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.\n"
-"\n"
-"*Examples*\n"
-"cat profile.yaml | lxc profile edit <profile>\n"
-"    Update a profile using the content of profile.yaml\n"
-"\n"
 "lxc profile assign foo default,bar\n"
 "    Set the profiles for \"foo\" to \"default\" and \"bar\".\n"
 "\n"
@@ -2629,641 +3150,1770 @@ msgid ""
 "lxc profile assign foo ''\n"
 "    Remove all profile from \"foo\""
 msgstr ""
-"使い方: lxc profile <subcommand> [options]\n"
-"\n"
-"設定プロファイルを管理します。\n"
-"\n"
-"*プロファイル設定*\n"
-"lxc profile list [<remote>:]\n"
-"    利用可能なプロファイルを一覧します。\n"
-"\n"
-"lxc profile show [<remote>:]<profile>\n"
-"    プロファイルの詳細を表示します。\n"
-"\n"
-"lxc profile create [<remote>:]<profile>\n"
-"    プロファイルを作成します。\n"
-"\n"
-"lxc profile copy [<remote>:]<profile> [<remote>:]<profile>\n"
-"    プロファイルをコピーします。\n"
-"\n"
-"lxc profile get [<remote>:]<profile> <key>\n"
-"    プロファイルの設定を取得します。\n"
-"\n"
-"lxc profile set [<remote>:]<profile> <key> <value>\n"
-"    プロファイルの設定を設定します。\n"
-"\n"
-"lxc profile unset [<remote>:]<profile> <key>\n"
-"    プロファイルから設定項目を削除します。\n"
-"\n"
-"lxc profile delete [<remote>:]<profile>\n"
-"    プロファイルを削除します。\n"
-"\n"
-"lxc profile edit [<remote>:]<profile>\n"
-"    プロファイルを編集します。外部エディタもしくはSTDINから読み込みます。\n"
-"\n"
-"lxc profile rename [<remote>:]<profile> <new-name>\n"
-"    プロファイル名を変更します。\n"
-"\n"
-"*プロファイルの割り当て*\n"
-"lxc profile assign [<remote>:]<container> <profiles>\n"
-"    コンテナの現在のプロファイルを指定したプロファイルで置き換えます。\n"
-"\n"
-"lxc profile add [<remote>:]<container> <profile>\n"
-"    コンテナにプロファイルを追加します。\n"
-"\n"
-"lxc profile remove [<remote>:]<container> <profile>\n"
-"    コンテナからプロファイルを削除します。\n"
-"\n"
-"*デバイス管理*\n"
-"lxc profile device list [<remote>:]<profile>\n"
-"    指定したプロファイル内のデバイスを一覧表示します\n"
-"\n"
-"lxc profile device show [<remote>:]<profile>\n"
-"    指定したプロファイル内の全デバイスの詳細を表示します\n"
-"\n"
-"lxc profile device remove [<remote>:]<profile> <name>\n"
-"    プロファイルからデバイスを削除します\n"
-"\n"
-"lxc profile device get [<remote>:]<profile> <name> <key>\n"
-"    デバイスプロパティを取得します\n"
-"\n"
-"lxc profile device set [<remote>:]<profile> <name> <key> <value>\n"
-"    デバイスプロパティを設定します\n"
-"\n"
-"lxc profile device unset <[remote:]profile> <name> <key>\n"
-"    デバイスプロパティを削除します\n"
-"\n"
-"lxc profile device add [<remote>:]<profile> <device> <type> [key=value...]\n"
-"    ディスクやNICのようなプロファイルデバイスを指定したプロファイルを使って\n"
-"    コンテナに追加します。\n"
+
+#: lxc/profile.go:398
+msgid ""
+"lxc profile edit <profile> < profile.yaml\n"
+"    Update a profile using the content of profile.yaml"
+msgstr ""
+
+#: lxc/query.go:29
+msgid ""
+"lxc query -X DELETE --wait /1.0/containers/c1\n"
+"    Delete local container \"c1\"."
+msgstr ""
+
+#: lxc/snapshot.go:26
+msgid ""
+"lxc snapshot u1 snap0\n"
+"    Create a snapshot of \"u1\" called \"snap0\"."
+msgstr ""
+
+#: lxc/restore.go:28
+msgid ""
+"lxc snapshot u1 snap0\n"
+"    Create the snapshot.\n"
 "\n"
-"*例*\n"
-"cat profile.yaml | lxc profile edit <profile>\n"
-"    profile.yaml の内容でプロファイルを更新します。\n"
+"lxc restore u1 snap0\n"
+"    Restore the snapshot."
+msgstr ""
+
+#: lxc/storage.go:210
+msgid ""
+"lxc storage edit [<remote>:]<pool> < pool.yaml\n"
+"    Update a storage pool using the content of pool.yaml."
+msgstr ""
+
+#: lxc/storage_volume.go:726
+msgid ""
+"lxc storage volume edit [<remote>:]<pool> <volume> < volume.yaml\n"
+"    Update a storage volume using the content of pool.yaml."
+msgstr ""
+
+#: lxc/storage_volume.go:1168
+msgid ""
+"lxc storage volume show default data\n"
+"    Will show the properties of a custom volume called \"data\" in the "
+"\"default\" pool.\n"
 "\n"
-"lxc profile assign foo default,bar\n"
-"    \"default\" と \"bar\" をプロファイル \"foo\" に設定します。\n"
+"lxc storage volume show default container/data\n"
+"    Will show the properties of the filesystem for a container called \"data"
+"\" in the \"default\" pool."
+msgstr ""
+
+#: lxc/config_metadata.go:27
+msgid "metadata"
+msgstr ""
+
+#: lxc/monitor.go:29
+msgid "monitor [<remote>:]"
+msgstr ""
+
+#: lxc/storage_volume.go:991
+msgid "move [<pool>/]<volume> [<pool>/]<volume>"
+msgstr ""
+
+#: lxc/move.go:28
+#, fuzzy
+msgid ""
+"move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
+"<snapshot>]]"
+msgstr ""
+"使い方: lxc delete [<remote>:]<container>[/<snapshot>] "
+"[[<remote>:]<container>[/<snapshot>]...]\n"
 "\n"
-"lxc profile assign foo default\n"
-"    \"foo\" プロファイルを \"default\" プロファイルの内容のみにリセットし\n"
-"    ます。\n"
+"コンテナとコンテナのスナップショットを消去します。"
+
+#: lxc/storage.go:429
+msgid "name"
+msgstr ""
+
+#: lxc/network.go:30
+#, fuzzy
+msgid "network"
+msgstr "ネットワーク名:"
+
+#: lxc/image.go:809 lxc/image.go:814 lxc/image.go:977
+msgid "no"
+msgstr ""
+
+#: lxc/remote.go:253
+msgid "ok (y/n)?"
+msgstr "ok (y/n)?"
+
+#: lxc/operation.go:23
+#, fuzzy
+msgid "operation"
+msgstr "プロパティ:"
+
+#: lxc/config_device.go:316
+msgid "override [<remote>:]<container> <device> [key=value...]"
+msgstr ""
+
+#: lxc/action.go:47
+#, fuzzy
+msgid "pause [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+"使い方: lxc %s [--all] [<remote>:]<container> [[<remote>:]<container>...]\n"
 "\n"
-"lxc profile assign foo ''\n"
-"    \"foo\" からすべてのプロファイルを削除します。"
+"%s%s"
 
-#: lxc/publish.go:28
+#: lxc/config.go:52
+msgid "please use `lxc profile`"
+msgstr ""
+
+#: lxc/profile.go:28
+#, fuzzy
+msgid "profile"
+msgstr "プロファイル: %s"
+
+#: lxc/publish.go:32
+#, fuzzy
 msgid ""
-"Usage: lxc publish [<remote>:]<container>[/<snapshot>] [<remote>:] [--"
-"alias=ALIAS...] [prop-key=prop-value...]\n"
-"\n"
-"Publish containers as images."
+"publish [<remote>:]<container>[/<snapshot>] [<remote>:] [flags] [prop-"
+"key=prop-value...]"
 msgstr ""
 "使い方: lxc publish [<remote>:]<container>[/<snapshot>] [<remote>:] [--"
 "alias=ALIAS...] [prop-key=prop-value...]\n"
 "\n"
 "イメージとしてコンテナを publish します。"
 
-#: lxc/query.go:25
+#: lxc/file.go:183
+#, fuzzy
 msgid ""
-"Usage: lxc query [-X <action>] [-d <data>] [--wait] [--raw] [<remote>:]<API "
-"path>\n"
-"\n"
-"Send a raw query to LXD.\n"
-"\n"
-"*Examples*\n"
-"lxc query -X DELETE --wait /1.0/containers/c1\n"
-"    Delete local container \"c1\"."
+"pull [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...] "
+"<target path>"
 msgstr ""
-"使い方: lxc query [-X <action>] [-d <data>] [--wait] [--raw] [<remote>:]<API "
-"path>\n"
-"\n"
-"LXD に対して直接 API を指定してリクエストを送ります。\n"
+"使い方: lxc delete [<remote>:]<container>[/<snapshot>] "
+"[[<remote>:]<container>[/<snapshot>]...]\n"
 "\n"
-"*例*\n"
-"lxc query -X DELETE --wait /1.0/containers/c1\n"
-"    ローカルのコンテナ \"c1\" を削除します。"
+"コンテナとコンテナのスナップショットを消去します。"
 
-#: lxc/remote.go:40
+#: lxc/file.go:322
+#, fuzzy
 msgid ""
-"Usage: lxc remote <subcommand> [options]\n"
-"\n"
-"Manage the list of remote LXD servers.\n"
-"\n"
-"lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--"
-"password=PASSWORD] [--public] [--protocol=PROTOCOL] [--auth-type=AUTH_TYPE]\n"
-"    Add the remote <remote> at <url>.\n"
-"\n"
-"lxc remote remove <remote>\n"
-"    Remove the remote <remote>.\n"
-"\n"
-"lxc remote list\n"
-"    List all remotes.\n"
-"\n"
-"lxc remote rename <old name> <new name>\n"
-"    Rename remote <old name> to <new name>.\n"
-"\n"
-"lxc remote set-url <remote> <url>\n"
-"    Update <remote>'s url to <url>.\n"
-"\n"
-"lxc remote set-default <remote>\n"
-"    Set the default remote.\n"
-"\n"
-"lxc remote get-default\n"
-"    Print the default remote."
+"push <source path> [<remote>:]<container>/<path> [[<remote>:]<container>/"
+"<path>...]"
 msgstr ""
-"使い方: lxc remote <subcommand> [options]\n"
-"\n"
-"リモートの LXD サーバのリストを管理します。\n"
-"\n"
-"lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--"
-"password=PASSWORD] [--public] [--protocol=PROTOCOL] [--auth-type=AUTH_TYPE]\n"
-"    <url> をリモートホスト <remote> として追加します。\n"
-"\n"
-"lxc remote remove <remote>\n"
-"    リモートホスト <remote> を削除します。\n"
-"\n"
-"lxc remote list\n"
-"    リモートホストを全て一覧表示します。\n"
-"\n"
-"lxc remote rename <old name> <new name>\n"
-"    リモートホストの名前を <old name> から <new name> に変更します。\n"
-"\n"
-"lxc remote set-url <remote> <url>\n"
-"    <remote> の url を <url> に更新します。\n"
+"使い方: lxc %s [--all] [<remote>:]<container> [[<remote>:]<container>...]\n"
 "\n"
-"lxc remote set-default <remote>\n"
-"    <remote> をデフォルトのリモートホストに設定します。\n"
+"%s%s"
+
+#: lxc/query.go:25
+msgid "query [<remote>:]<API path>"
+msgstr ""
+
+#: lxc/image.go:1210
+#, fuzzy
+msgid "refresh [<remote>:]<image> [[<remote>:]<image>...]"
+msgstr ""
+"使い方: lxc %s [--all] [<remote>:]<container> [[<remote>:]<container>...]\n"
 "\n"
-"lxc remote get-default\n"
-"    デフォルトに設定されているリモートホストを表示します。"
+"%s%s"
+
+#: lxc/remote.go:32
+#, fuzzy
+msgid "remote"
+msgstr "リモート名: %s"
+
+#: lxc/alias.go:195
+#, fuzzy
+msgid "remove <alias>"
+msgstr "エイリアス %s の削除に失敗しました"
+
+#: lxc/remote.go:546
+msgid "remove <remote>"
+msgstr ""
+
+#: lxc/config_trust.go:194
+msgid "remove [<remote>:] <hostname|fingerprint>"
+msgstr ""
+
+#: lxc/profile.go:630
+msgid "remove [<remote>:]<container> <profile>"
+msgstr ""
+
+#: lxc/config_device.go:402
+msgid "remove [<remote>:]<container|profile> <name>..."
+msgstr ""
+
+#: lxc/cluster.go:235
+msgid "remove [<remote>:]<member>"
+msgstr ""
+
+#: lxc/alias.go:144
+msgid "rename <old alias> <new alias>"
+msgstr ""
+
+#: lxc/remote.go:484
+msgid "rename <remote> <new-name>"
+msgstr ""
+
+#: lxc/image_alias.go:247
+msgid "rename [<remote>:]<alias> <new-name>"
+msgstr ""
 
 #: lxc/rename.go:18
-msgid ""
-"Usage: lxc rename [<remote>:]<container>[/<snapshot>] [<container>[/"
-"<snapshot>]]\n"
-"\n"
-"Rename a container or snapshot."
+#, fuzzy
+msgid "rename [<remote>:]<container>[/<snapshot>] <container>[/<snapshot>]"
 msgstr ""
 "Usage: lxc rename [<remote>:]<container>[/<snapshot>] [<container>[/"
 "<snapshot>]]\n"
 "\n"
 "コンテナ名もしくはスナップショット名を変更します。"
 
-#: lxc/restore.go:22
-msgid ""
-"Usage: lxc restore [<remote>:]<container> <snapshot> [--stateful]\n"
-"\n"
-"Restore containers from snapshots.\n"
-"\n"
-"If --stateful is passed, then the running state will be restored too.\n"
-"\n"
-"*Examples*\n"
-"lxc snapshot u1 snap0\n"
-"    Create the snapshot.\n"
-"\n"
-"lxc restore u1 snap0\n"
-"    Restore the snapshot."
+#: lxc/cluster.go:189
+msgid "rename [<remote>:]<member> <new-name>"
 msgstr ""
-"使い方: lxc restore [<remote>:]<container> <snapshot> [--stateful]\n"
-"\n"
-"スナップショットからコンテナをリストアします。\n"
-"\n"
-"--stateful を指定すると、実行状態もリストアされます。\n"
-"\n"
-"*例*\n"
-"lxc snapshot u1 snap0\n"
-"    スナップショットを作成します。\n"
+
+#: lxc/network.go:870
+msgid "rename [<remote>:]<network> <new-name>"
+msgstr ""
+
+#: lxc/storage_volume.go:1023
+msgid "rename [<remote>:]<pool> <old name> <new name>"
+msgstr ""
+
+#: lxc/profile.go:702
+msgid "rename [<remote>:]<profile> <new-name>"
+msgstr ""
+
+#: lxc/action.go:67
+#, fuzzy
+msgid "restart [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+"使い方: lxc %s [--all] [<remote>:]<container> [[<remote>:]<container>...]\n"
 "\n"
-"lxc restore u1 snap0\n"
-"    スナップショットからリストアします。"
+"%s%s"
+
+#: lxc/restore.go:22
+#, fuzzy
+msgid "restore [<remote>:]<container> <snapshot>"
+msgstr "コンテナまたはコンテナのスナップショットを削除します。\n"
+
+#: lxc/config_device.go:491
+msgid "set [<remote>:]<container|profile> <device> <key> <value>"
+msgstr ""
+
+#: lxc/network.go:918
+msgid "set [<remote>:]<network> <key> <value>"
+msgstr ""
+
+#: lxc/storage.go:571
+msgid "set [<remote>:]<pool> <key> <value>"
+msgstr ""
+
+#: lxc/storage_volume.go:1087
+msgid "set [<remote>:]<pool> <volume> <key> <value>"
+msgstr ""
+
+#: lxc/profile.go:751
+msgid "set [<remote>:]<profile> <key> <value>"
+msgstr ""
+
+#: lxc/config.go:353
+msgid "set [<remote>:][container] <key> <value>"
+msgstr ""
+
+#: lxc/remote.go:596
+#, fuzzy
+msgid "set-default <remote>"
+msgstr "デフォルトのリモートは削除できません"
+
+#: lxc/remote.go:634
+msgid "set-url <remote> <URL>"
+msgstr ""
+
+#: lxc/config_template.go:296
+msgid "show [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/config_device.go:580
+msgid "show [<remote>:]<container|profile>"
+msgstr ""
+
+#: lxc/image.go:1283
+msgid "show [<remote>:]<image>"
+msgstr ""
+
+#: lxc/cluster.go:140
+msgid "show [<remote>:]<member>"
+msgstr ""
+
+#: lxc/network.go:987
+msgid "show [<remote>:]<network>"
+msgstr ""
+
+#: lxc/operation.go:172
+msgid "show [<remote>:]<operation>"
+msgstr ""
+
+#: lxc/storage.go:643
+msgid "show [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:1164
+msgid "show [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:810
+msgid "show [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/config.go:450 lxc/config_metadata.go:174
+msgid "show [<remote>:][container]"
+msgstr ""
 
 #: lxc/snapshot.go:19
-msgid ""
-"Usage: lxc snapshot [<remote>:]<container> <snapshot name> [--stateful]\n"
-"\n"
-"Create container snapshots.\n"
-"\n"
-"When --stateful is used, LXD attempts to checkpoint the container's\n"
-"running state, including process memory state, TCP connections, ...\n"
-"\n"
-"*Examples*\n"
-"lxc snapshot u1 snap0\n"
-"    Create a snapshot of \"u1\" called \"snap0\"."
+msgid "snapshot [<remote>:]<container> <snapshot name>"
 msgstr ""
-"使い方: lxc snapshot [<remote>:]<container> <snapshot name> [--stateful]\n"
-"\n"
-"コンテナのスナップショットを作成します。\n"
-"\n"
-"--stateful を指定すると、LXD はプロセスのメモリ状態、TCP 接続などを含\n"
-"む、コンテナの実行状態をチェックポイントしようとします。\n"
-"\n"
-"*例*\n"
-"lxc snapshot u1 snap0\n"
-"    \"u1\" のスナップショットを \"snap0\" という名前で作成します。"
 
-#: lxc/storage.go:67
+#: lxc/storage.go:433
+msgid "space used"
+msgstr ""
+
+#: lxc/action.go:28
 #, fuzzy
-msgid ""
-"Usage: lxc storage <subcommand> [options]\n"
-"\n"
-"Manage storage pools and volumes.\n"
-"\n"
-"*Storage pools*\n"
-"lxc storage list [<remote>:]\n"
-"    List available storage pools.\n"
-"\n"
-"lxc storage show [<remote>:]<pool> [--resources] [--target <node>]\n"
-"    Show details of a storage pool.\n"
-"\n"
-"lxc storage info [<remote>:]<pool> [--bytes]\n"
-"    Show information of a storage pool in yaml format.\n"
-"\n"
-"lxc storage create [<remote>:]<pool> <driver> [key=value]... [--target "
-"<node>]\n"
-"    Create a storage pool.\n"
-"\n"
-"lxc storage get [<remote>:]<pool> <key>\n"
-"    Get storage pool configuration.\n"
-"\n"
-"lxc storage set [<remote>:]<pool> <key> <value>\n"
-"    Set storage pool configuration.\n"
-"\n"
-"lxc storage unset [<remote>:]<pool> <key>\n"
-"    Unset storage pool configuration.\n"
-"\n"
-"lxc storage delete [<remote>:]<pool>\n"
-"    Delete a storage pool.\n"
-"\n"
-"lxc storage edit [<remote>:]<pool>\n"
-"    Edit storage pool, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"*Storage volumes*\n"
-"lxc storage volume list [<remote>:]<pool>\n"
-"    List available storage volumes on a storage pool.\n"
-"\n"
-"lxc storage volume show [<remote>:]<pool> <volume> [--target <node>]\n"
-"   Show details of a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume create [<remote>:]<pool> <volume> [key=value]... [--"
-"target <node>]\n"
-"    Create a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume rename [<remote>:]<pool> <old name> <new name> [--target "
-"<node>]\n"
-"    Rename a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume get [<remote>:]<pool> <volume> <key> [--target <node>]\n"
-"    Get storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume set [<remote>:]<pool> <volume> <key> <value> [--target "
-"<node>]\n"
-"    Set storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume unset [<remote>:]<pool> <volume> <key> [--target <node>]\n"
-"    Unset storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume delete [<remote>:]<pool> <volume> [--target <node>]\n"
-"    Delete a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume edit [<remote>:]<pool> <volume> [--target <node>]\n"
-"    Edit storage volume, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"lxc storage volume attach [<remote>:]<pool> <volume> <container> [device "
-"name] <path>\n"
-"    Attach a storage volume to the specified container.\n"
-"\n"
-"lxc storage volume attach-profile [<remote:>]<pool> <volume> <profile> "
-"[device name] <path>\n"
-"    Attach a storage volume to the specified profile.\n"
-"\n"
-"lxc storage volume detach [<remote>:]<pool> <volume> <container> [device "
-"name]\n"
-"    Detach a storage volume from the specified container.\n"
-"\n"
-"lxc storage volume detach-profile [<remote:>]<pool> <volume> <profile> "
-"[device name]\n"
-"\tDetach a storage volume from the specified profile.\n"
-"\n"
-"lxc storage volume copy <pool>/<volume> <pool>/<volume> [--config|-c "
-"<key=value>...]\n"
-"    Copy an existing volume to a new volume at the specified pool.\n"
-"\n"
-"lxc storage volume move [<pool>/]<volume> [<pool>/]<volume>\n"
-"    Move an existing volume to the specified pool.\n"
-"\n"
-"Unless specified through a prefix, all volume operations affect \"custom"
-"\" (user created) volumes.\n"
-"\n"
-"*Examples*\n"
-"cat pool.yaml | lxc storage edit [<remote>:]<pool>\n"
-"    Update a storage pool using the content of pool.yaml.\n"
-"\n"
-"cat pool.yaml | lxc storage volume edit [<remote>:]<pool> <volume>\n"
-"    Update a storage volume using the content of pool.yaml.\n"
-"\n"
-"lxc storage volume show default data\n"
-"    Will show the properties of a custom volume called \"data\" in the "
-"\"default\" pool.\n"
-"\n"
-"lxc storage volume show default container/data\n"
-"    Will show the properties of the filesystem for a container called \"data"
-"\" in the \"default\" pool."
+msgid "start [<remote>:]<container> [[<remote>:]<container>...]"
 msgstr ""
-"使い方: lxc storage <subcommand> [options]\n"
-"\n"
-"ストレージプールとボリュームを管理します。\n"
-"\n"
-"*ストレージプール*\n"
-"lxc storage list [<remote>:]\n"
-"    利用可能なストレージプールを一覧表示します。\n"
-"\n"
-"lxc storage show [<remote>:]<pool> [--resources]\n"
-"    ストレージプールの詳細を表示します。\n"
-"\n"
-"lxc storage info [<remote>:]<pool> [--bytes]\n"
-"    YAML フォーマットでストレージプールの情報を表示します。\n"
-"\n"
-"lxc storage create [<remote>:]<pool> <driver> [key=value]...\n"
-"    ストレージプールを作成します。\n"
-"\n"
-"lxc storage get [<remote>:]<pool> <key>\n"
-"    ストレージプールの設定を取得します。\n"
-"\n"
-"lxc storage set [<remote>:]<pool> <key> <value>\n"
-"    ストレージプールの設定項目を設定します。\n"
-"\n"
-"lxc storage unset [<remote>:]<pool> <key>\n"
-"    ストレージプールの設定を削除します。\n"
-"\n"
-"lxc storage delete [<remote>:]<pool>\n"
-"    ストレージプールを削除します。\n"
-"\n"
-"lxc storage edit [<remote>:]<pool>\n"
-"    外部エディタを起動するか、標準入力から読み込むことにより、ストレー\n"
-"    ジプールを編集します。\n"
-"\n"
-"*ストレージボリューム*\n"
-"lxc storage volume list [<remote>:]<pool>\n"
-"    ストレージプール上の利用可能なストレージボリュームを一覧表示します。\n"
-"\n"
-"lxc storage volume show [<remote>:]<pool> <volume>\n"
-"    ストレージプール上のストレージボリュームの詳細を表示します。\n"
-"\n"
-"lxc storage volume create [<remote>:]<pool> <volume> [key=value]...\n"
-"    ストレージプール上にストレージボリュームを作成します。\n"
-"\n"
-"lxc storage volume rename [<remote>:]<pool> <old name> <new name>\n"
-"    ストレージプール上のストレージボリューム名を変更します。\n"
-"\n"
-"lxc storage volume get [<remote>:]<pool> <volume> <key>\n"
-"    ストレージプール上のストレージボリュームの設定を取得します。\n"
-"\n"
-"lxc storage volume set [<remote>:]<pool> <volume> <key> <value>\n"
-"    ストレージプール上のストレージボリュームの設定項目を設定します。\n"
-"\n"
-"lxc storage volume unset [<remote>:]<pool> <volume> <key>\n"
-"    ストレージプール上のストレージボリュームの設定を削除します。\n"
-"\n"
-"lxc storage volume delete [<remote>:]<pool> <volume>\n"
-"    ストレージプール上のストレージボリュームを削除します。\n"
-"\n"
-"lxc storage volume edit [<remote>:]<pool> <volume>\n"
-"    外部エディタを起動するか、標準入力から読み込むことにより、ストレー\n"
-"    ジボリュームを編集します。\n"
-"\n"
-"lxc storage volume attach [<remote>:]<pool> <volume> <container> [device "
-"name] <path>\n"
-"    指定したコンテナにストレージボリュームを接続します。\n"
-"\n"
-"lxc storage volume attach-profile [<remote:>]<pool> <volume> <profile> "
-"[device name] <path>\n"
-"    指定したプロファイルにストレージボリュームを接続します。\n"
-"\n"
-"lxc storage volume detach [<remote>:]<pool> <volume> <container> [device "
-"name]\n"
-"    指定したコンテナからストレージボリュームを切り離します。\n"
-"\n"
-"lxc storage volume detach-profile [<remote:>]<pool> <volume> <profile> "
-"[device name]\n"
-"    指定したプロファイルからストレージボリュームを切り離します。\n"
-"\n"
-"プレフィックスを指定しない限り、すべてのボリューム操作は (ユーザが作成\n"
-"した) \"custom\" ボリュームに影響します。\n"
-"\n"
-"*例*\n"
-"cat pool.yaml | lxc storage edit [<remote>:]<pool>\n"
-"    pool.yaml の内容を使ってストレージプールを更新します。\n"
-"\n"
-"cat pool.yaml | lxc storage volume edit [<remote>:]<pool> <volume>\n"
-"    pool.yaml の内容を使ってストレージボリュームを更新します。\n"
-"\n"
-"lxc storage volume show default data\n"
-"    \"default\" プール内の \"data\" という名前のカスタムボリュームのプロパ\n"
-"    ティを表示します。\n"
+"使い方: lxc %s [--all] [<remote>:]<container> [[<remote>:]<container>...]\n"
 "\n"
-"lxc storage volume show default container/data\n"
-"    \"default\" プール内の \"data\" という名前のコンテナのファイルシステム\n"
-"    のプロパティを表示します。"
+"%s%s"
 
-#: lxc/version.go:18
-msgid ""
-"Usage: lxc version\n"
-"\n"
-"Print the version number of this client tool."
+#: lxc/info.go:255
+msgid "stateful"
+msgstr "ステートフル"
+
+#: lxc/info.go:257
+msgid "stateless"
+msgstr "ステートレス"
+
+#: lxc/action.go:89
+#, fuzzy
+msgid "stop [<remote>:]<container> [[<remote>:]<container>...]"
 msgstr ""
-"使い方: lxc version\n"
+"使い方: lxc %s [--all] [<remote>:]<container> [[<remote>:]<container>...]\n"
 "\n"
-"お使いのクライアントのバージョン番号を表示します。"
+"%s%s"
 
-#: lxc/delete.go:46
-msgid "User aborted delete operation."
-msgstr "ユーザが削除操作を中断しました。"
+#: lxc/storage.go:31
+msgid "storage"
+msgstr ""
 
-#: lxc/utils/cancel.go:40
-msgid ""
-"User signaled us three times, exiting. The remote operation will keep "
-"running."
+#: lxc/info.go:251
+#, c-format
+msgid "taken at %s"
+msgstr "%s に取得しました"
+
+#: lxc/config_template.go:28
+msgid "template"
+msgstr ""
+
+#: lxc/storage.go:432
+msgid "total space"
+msgstr ""
+
+#: lxc/config_trust.go:28
+msgid "trust"
+msgstr ""
+
+#: lxc/config_device.go:648
+msgid "unset [<remote>:]<container|profile> <device> <key>"
+msgstr ""
+
+#: lxc/network.go:1049
+msgid "unset [<remote>:]<network> <key>"
+msgstr ""
+
+#: lxc/storage.go:727
+msgid "unset [<remote>:]<pool> <key>"
 msgstr ""
-"ユーザからのシグナルを 3 度受信したので exit しました。リモート操作は実行し続"
-"けます。"
 
-#: lxc/query.go:36
-msgid "Wait for the operation to complete"
-msgstr "処理が完全に終わるまで待ちます"
+#: lxc/storage_volume.go:1239
+msgid "unset [<remote>:]<pool> <volume> <key>"
+msgstr ""
 
-#: lxc/restore.go:38
-msgid ""
-"Whether or not to restore the container's running state from snapshot (if "
-"available)"
+#: lxc/profile.go:864
+msgid "unset [<remote>:]<profile> <key>"
 msgstr ""
-"スナップショットからコンテナの稼動状態をリストアするかどうか (取得可能な場合)"
 
-#: lxc/snapshot.go:33
-msgid "Whether or not to snapshot the container's running state"
-msgstr "コンテナの稼動状態のスナップショットを取得するかどうか"
+#: lxc/config.go:558
+msgid "unset [<remote>:][container] <key>"
+msgstr ""
 
-#: lxc/network.go:560 lxc/operation.go:141 lxc/remote.go:382 lxc/remote.go:387
-msgid "YES"
+#: lxc/storage.go:427
+msgid "used by"
 msgstr ""
 
-#: lxc/exec.go:132
-msgid "You can't pass -t and -T at the same time"
-msgstr "-t と -T は同時に指定できません"
+#: lxc/storage_volume.go:32
+#, fuzzy
+msgid "volume"
+msgstr "カラムレイアウト"
 
-#: lxc/exec.go:136
-msgid "You can't pass -t or -T at the same time as --mode"
-msgstr "--mode と同時に -t または -T は指定できません"
+#: lxc/delete.go:46 lxc/image.go:811 lxc/image.go:816 lxc/image.go:975
+msgid "yes"
+msgstr ""
 
-#: lxc/copy.go:76
 #, fuzzy
-msgid "You must specify a destination container name when using --target"
-msgstr "コピー元のコンテナ名を指定してください"
+#~ msgid "Manage container templates"
+#~ msgstr "ステートフルなコンテナをステートレスにコピーします"
 
-#: lxc/copy.go:71
-msgid "You must specify a source container name"
-msgstr "コピー元のコンテナ名を指定してください"
+#~ msgid "Can't unset key '%s', it's not currently set."
+#~ msgstr "キー '%s' が指定されていないので削除できません。"
 
-#: lxc/copy.go:66 lxc/move.go:71
-msgid "You must use the same source and destination remote when using --target"
-msgstr ""
+#~ msgid "Cannot provide container name to list"
+#~ msgstr "コンテナ名を取得できません"
 
-#: lxc/main.go:72
-msgid "`lxc config profile` is deprecated, please use `lxc profile`"
-msgstr "`lxc config profile` は廃止されました。`lxc profile` を使ってください"
+#~ msgid "Commands:"
+#~ msgstr "コマンド:"
 
-#: lxc/alias.go:56 lxc/alias.go:102
-#, c-format
-msgid "alias %s already exists"
-msgstr "エイリアス %s は既に存在します"
+#~ msgid "Connection refused; is LXD running?"
+#~ msgstr "接続が拒否されました。LXDが実行されていますか?"
 
-#: lxc/alias.go:68 lxc/alias.go:97
-#, c-format
-msgid "alias %s doesn't exist"
-msgstr "エイリアス %s は存在しません"
+#~ msgid "Enable debug mode"
+#~ msgstr "デバッグモードを有効にします"
 
-#: lxc/remote.go:370
-msgid "can't remove the default remote"
-msgstr "デフォルトのリモートは削除できません"
+#~ msgid "Enable verbose mode"
+#~ msgstr "詳細モードを有効にします"
 
-#: lxc/file.go:296
-msgid "can't supply uid/gid/mode in recursive mode"
-msgstr "再帰 (recursive) モードでは uid/gid/mode を指定できません"
+#~ msgid "Environment:"
+#~ msgstr "環境変数:"
 
-#: lxc/remote.go:399
-msgid "default"
-msgstr ""
+#~ msgid "Failed to generate 'lxc.%s.1': %v"
+#~ msgstr "'lxc.%s.1' の生成が失敗しました: %v"
 
-#: lxc/storage.go:856
-msgid "description"
-msgstr ""
+#~ msgid "Failed to generate 'lxc.1': %v"
+#~ msgstr "'lxc.1' の生成が失敗しました: %v"
 
-#: lxc/init.go:315
-msgid "didn't get any affected image, container or snapshot from server"
-msgstr ""
-"サーバから変更されたイメージ、コンテナ、スナップショットを取得できませんで\n"
-"した"
+#~ msgid "Ignore aliases when determining what command to run"
+#~ msgstr "どのコマンドを実行するか決める際にエイリアスを無視します"
 
-#: lxc/image.go:594
-msgid "disabled"
-msgstr "無効"
+#~ msgid "LXD socket not found; is LXD installed and running?"
+#~ msgstr "LXD のソケットが見つかりません。LXD が実行されていますか?"
 
-#: lxc/storage.go:855
-msgid "driver"
-msgstr ""
+#~ msgid "No certificate provided to add"
+#~ msgstr "追加すべき証明書が提供されていません"
 
-#: lxc/image.go:596
-msgid "enabled"
-msgstr "有効"
+#~ msgid "No fingerprint specified."
+#~ msgstr "フィンガープリントが指定されていません。"
 
-#: lxc/action.go:155 lxc/main.go:33 lxc/main.go:191
-#, c-format
-msgid "error: %v"
-msgstr "エラー: %v"
+#~ msgid "Options:"
+#~ msgstr "オプション:"
 
-#: lxc/help.go:37 lxc/main.go:133
-#, c-format
-msgid "error: unknown command: %s"
-msgstr "エラー: 未知のコマンド: %s"
+#~ msgid "Path to an alternate client configuration directory"
+#~ msgstr "別のクライアント用設定ディレクトリ"
 
-#: lxc/storage.go:853
-msgid "info"
-msgstr ""
+#~ msgid "Path to an alternate server directory"
+#~ msgstr "別のサーバ用設定ディレクトリ"
 
-#: lxc/storage.go:854
-msgid "name"
-msgstr ""
+#~ msgid "Permission denied, are you in the lxd group?"
+#~ msgstr "アクセスが拒否されました。lxd グループに所属していますか?"
 
-#: lxc/image.go:210 lxc/image.go:584 lxc/image.go:589
-msgid "no"
-msgstr ""
+#~ msgid "Print debug information"
+#~ msgstr "デバッグ情報を表示します"
 
-#: lxc/remote.go:204
-msgid "ok (y/n)?"
-msgstr "ok (y/n)?"
+#~ msgid "Show all commands (not just interesting ones)"
+#~ msgstr "全てコマンドを表示します (主なコマンドだけではなく)"
+
+#~ msgid "Show client version"
+#~ msgstr "クライアントのバージョンを表示します"
+
+#~ msgid "Unable to find help2man."
+#~ msgstr "help2man が見つかりません。"
+
+#~ msgid "Usage: lxc <command> [options]"
+#~ msgstr "使い方: lxc <コマンド> [オプション]"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: lxc config <subcommand> [options]\n"
+#~ "\n"
+#~ "Change container or server configuration options.\n"
+#~ "\n"
+#~ "*Container configuration*\n"
+#~ "\n"
+#~ "lxc config get [<remote>:][container] <key>\n"
+#~ "    Get container or server configuration key.\n"
+#~ "\n"
+#~ "lxc config set [<remote>:][container] <key> <value>\n"
+#~ "    Set container or server configuration key.\n"
+#~ "\n"
+#~ "lxc config unset [<remote>:][container] <key>\n"
+#~ "    Unset container or server configuration key.\n"
+#~ "\n"
+#~ "lxc config show [<remote>:][container] [--expanded]\n"
+#~ "    Show container or server configuration.\n"
+#~ "\n"
+#~ "lxc config edit [<remote>:][container]\n"
+#~ "    Edit configuration, either by launching external editor or reading "
+#~ "STDIN.\n"
+#~ "\n"
+#~ "*Container metadata*\n"
+#~ "\n"
+#~ "lxc config metadata show [<remote>:][container]\n"
+#~ "    Show the container metadata.yaml content.\n"
+#~ "\n"
+#~ "lxc config metadata edit [<remote>:][container]\n"
+#~ "    Edit the container metadata.yaml, either by launching external editor "
+#~ "or reading STDIN.\n"
+#~ "\n"
+#~ "*Container templates*\n"
+#~ "\n"
+#~ "lxc config template list [<remote>:][container]\n"
+#~ "    List the names of template files for a container.\n"
+#~ "\n"
+#~ "lxc config template show [<remote>:][container] [template]\n"
+#~ "    Show the content of a template file for a container.\n"
+#~ "\n"
+#~ "lxc config template create [<remote>:][container] [template]\n"
+#~ "    Add an empty template file for a container.\n"
+#~ "\n"
+#~ "lxc config template edit [<remote>:][container] [template]\n"
+#~ "    Edit the content of a template file for a container, either by "
+#~ "launching external editor or reading STDIN.\n"
+#~ "\n"
+#~ "lxc config template delete [<remote>:][container] [template]\n"
+#~ "    Delete a template file for a container.\n"
+#~ "\n"
+#~ "\n"
+#~ "*Device management*\n"
+#~ "\n"
+#~ "lxc config device add [<remote>:]<container> <device> <type> "
+#~ "[key=value...]\n"
+#~ "    Add a device to a container.\n"
+#~ "\n"
+#~ "lxc config device get [<remote>:]<container> <device> <key>\n"
+#~ "    Get a device property.\n"
+#~ "\n"
+#~ "lxc config device set [<remote>:]<container> <device> <key> <value>\n"
+#~ "    Set a device property.\n"
+#~ "\n"
+#~ "lxc config device unset [<remote>:]<container> <device> <key>\n"
+#~ "    Unset a device property.\n"
+#~ "\n"
+#~ "lxc config device override [<remote>:]<container> <device> "
+#~ "[key=value...]\n"
+#~ "    Copy a profile inherited device into local container config.\n"
+#~ "\n"
+#~ "lxc config device list [<remote>:]<container>\n"
+#~ "    List devices for container.\n"
+#~ "\n"
+#~ "lxc config device show [<remote>:]<container>\n"
+#~ "    Show full device details for container.\n"
+#~ "\n"
+#~ "lxc config device remove [<remote>:]<container> <name>...\n"
+#~ "    Remove device from container.\n"
+#~ "\n"
+#~ "*Client trust store management*\n"
+#~ "\n"
+#~ "lxc config trust list [<remote>:]\n"
+#~ "    List all trusted certs.\n"
+#~ "\n"
+#~ "lxc config trust add [<remote>:] <certfile.crt>\n"
+#~ "    Add certfile.crt to trusted hosts.\n"
+#~ "\n"
+#~ "lxc config trust remove [<remote>:] [hostname|fingerprint]\n"
+#~ "    Remove the cert from trusted hosts.\n"
+#~ "\n"
+#~ "*Examples*\n"
+#~ "\n"
+#~ "cat config.yaml | lxc config edit <container>\n"
+#~ "    Update the container configuration from config.yaml.\n"
+#~ "\n"
+#~ "lxc config device add [<remote>:]container1 <device-name> disk source=/"
+#~ "share/c1 path=opt\n"
+#~ "    Will mount the host's /share/c1 onto /opt in the container.\n"
+#~ "\n"
+#~ "lxc config set [<remote>:]<container> limits.cpu 2\n"
+#~ "    Will set a CPU limit of \"2\" for the container.\n"
+#~ "\n"
+#~ "lxc config set core.https_address [::]:8443\n"
+#~ "    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
+#~ "\n"
+#~ "lxc config set core.trust_password blah\n"
+#~ "    Will set the server's trust password to blah."
+#~ msgstr ""
+#~ "使い方: lxc config <subcommand> [options]\n"
+#~ "\n"
+#~ "コンテナもしくはサーバの設定オプションを変更します。\n"
+#~ "\n"
+#~ "*コンテナの設定*\n"
+#~ "\n"
+#~ "lxc config get [<remote>:][container] <key>\n"
+#~ "    コンテナもしくはサーバの設定項目の値を取得します。\n"
+#~ "\n"
+#~ "lxc config set [<remote>:][container] <key> <value>\n"
+#~ "    コンテナもしくはサーバの設定項目に値を設定します。\n"
+#~ "\n"
+#~ "lxc config unset [<remote>:][container] <key>\n"
+#~ "    コンテナもしくはサーバの設定項目を削除します。\n"
+#~ "\n"
+#~ "lxc config show [<remote>:][container] [--expanded]\n"
+#~ "    コンテナもしくはサーバの設定を表示します。\n"
+#~ "\n"
+#~ "lxc config edit [<remote>:][container]\n"
+#~ "    外部エディタを起動するか、標準入力から読み込むことにより、設定を編集し"
+#~ "ます。\n"
+#~ "\n"
+#~ "*コンテナのメタデータ*\n"
+#~ "\n"
+#~ "lxc config metadata show [<remote>:][container]\n"
+#~ "    コンテナの metadata.yaml の内容を表示します。\n"
+#~ "\n"
+#~ "lxc config metadata edit [<remote>:][container]\n"
+#~ "    外部エディアを起動するか、標準入力から読み込むことにより、コンテナの "
+#~ "metadata.yaml を編集します。\n"
+#~ "\n"
+#~ "*コンテナテンプレート*\n"
+#~ "\n"
+#~ "lxc config template list [<remote>:][container]\n"
+#~ "    コンテナのテンプレートファイルの名前をリスト表示します。\n"
+#~ "\n"
+#~ "lxc config template show [<remote>:][container] [template]\n"
+#~ "    Show the content of a template file for a container.\n"
+#~ "    コンテナのテンプレートファイルの内容を表示します。\n"
+#~ "\n"
+#~ "lxc config template create [<remote>:][container] [template]\n"
+#~ "    Add an empty template file for a container.\n"
+#~ "    コンテナに空のテンプレートファイルを追加します。\n"
+#~ "\n"
+#~ "lxc config template edit [<remote>:][container] [template]\n"
+#~ "    外部エディタを起動するか、標準入力から読み込むことにより、コンテナのテ"
+#~ "ンプレートファイルの内容を編集します。\n"
+#~ "\n"
+#~ "lxc config template delete [<remote>:][container] [template]\n"
+#~ "    コンテナのテンプレートファイルを削除します。\n"
+#~ "\n"
+#~ "\n"
+#~ "*デバイスの管理*\n"
+#~ "\n"
+#~ "lxc config device add [<remote>:]<container> <device> <type> "
+#~ "[key=value...]\n"
+#~ "    コンテナにデバイスを追加します。\n"
+#~ "\n"
+#~ "lxc config device get [<remote>:]<container> <device> <key>\n"
+#~ "    デバイスのプロパティを取得します。\n"
+#~ "\n"
+#~ "lxc config device set [<remote>:]<container> <device> <key> <value>\n"
+#~ "    デバイスのプロパティを設定します。\n"
+#~ "\n"
+#~ "lxc config device unset [<remote>:]<container> <device> <key>\n"
+#~ "    デバイスのプロパティを削除します。\n"
+#~ "\n"
+#~ "lxc config device list [<remote>:]<container>\n"
+#~ "    コンテナのデバイスを一覧表示します。\n"
+#~ "\n"
+#~ "lxc config device show [<remote>:]<container>\n"
+#~ "    全てのデバイスの詳細を表示します。\n"
+#~ "\n"
+#~ "lxc config device remove [<remote>:]<container> <name>\n"
+#~ "    コンテナからデバイスを削除します。\n"
+#~ "\n"
+#~ "*クライアントの証明書ストアの管理*\n"
+#~ "\n"
+#~ "lxc config trust list [<remote>:]\n"
+#~ "    信頼する証明書を全て表示します。\n"
+#~ "\n"
+#~ "lxc config trust add [<remote>:] <certfile.crt>\n"
+#~ "    certfile.crt を信頼するホストに追加します。\n"
+#~ "\n"
+#~ "lxc config trust remove [<remote>:] [hostname|fingerprint]\n"
+#~ "    信頼するホストから証明書を消去します。\n"
+#~ "\n"
+#~ "*例*\n"
+#~ "\n"
+#~ "cat config.yaml | lxc config edit <container>\n"
+#~ "    config.yaml から読み込んで、コンテナの設定を更新します。\n"
+#~ "\n"
+#~ "lxc config device add [<remote>:]container1 <device-name> disk source=/"
+#~ "share/c1 path=opt\n"
+#~ "    ホストの /share/c1 をコンテナ内の /opt にマウントする。\n"
+#~ "\n"
+#~ "lxc config set [<remote>:]<container> limits.cpu 2\n"
+#~ "    コンテナの CPU 制限値を \"2\" に設定する。\n"
+#~ "\n"
+#~ "lxc config set core.https_address [::]:8443\n"
+#~ "    IPv4 と IPv6 のポート 8443 で Listen するよう設定する。\n"
+#~ "\n"
+#~ "lxc config set core.trust_password blah\n"
+#~ "    サーバのパスワードを blah に設定する。"
+
+#~ msgid ""
+#~ "Usage: lxc console [<remote>:]<container> [-l]\n"
+#~ "\n"
+#~ "Interact with the container's console device and log."
+#~ msgstr ""
+#~ "使い方: lxc console [<remote>:]<container> [-l]\n"
+#~ "\n"
+#~ "コンテナのコンソールデバイスとログに接続します。"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: lxc copy [<remote>:]<source>[/<snapshot>] "
+#~ "[[<remote>:]<destination>] [--ephemeral|e] [--profile|-p <profile>...] [--"
+#~ "config|-c <key=value>...] [--container-only] [--target <node>]\n"
+#~ "\n"
+#~ "Copy containers within or in between LXD instances."
+#~ msgstr ""
+#~ "使い方: lxc copy [<remote>:]<source>[/<snapshot>] "
+#~ "[[<remote>:]<destination>] [--ephemeral|e] [--profile|-p <profile>...] [--"
+#~ "config|-c <key=value>...]\n"
+#~ "\n"
+#~ "LXDインスタンス内もしくはLXDインスタンス間でコンテナをコピーします。"
+
+#~ msgid ""
+#~ "Usage: lxc file <subcommand> [options]\n"
+#~ "\n"
+#~ "Manage files in containers.\n"
+#~ "\n"
+#~ "lxc file pull [-r|--recursive] [<remote>:]<container>/<path> "
+#~ "[[<remote>:]<container>/<path>...] <target path>\n"
+#~ "    Pull files from containers.\n"
+#~ "\n"
+#~ "lxc file push [-r|--recursive] [-p|--create-dirs] [--uid=UID] [--gid=GID] "
+#~ "[--mode=MODE] <source path> [<source path>...] [<remote>:]<container>/"
+#~ "<path>\n"
+#~ "    Push files into containers.\n"
+#~ "\n"
+#~ "lxc file delete [<remote>:]<container>/<path> [[<remote>:]<container>/"
+#~ "<path>...]\n"
+#~ "    Delete files in containers.\n"
+#~ "\n"
+#~ "lxc file edit [<remote>:]<container>/<path>\n"
+#~ "    Edit files in containers using the default text editor.\n"
+#~ "\n"
+#~ "*Examples*\n"
+#~ "lxc file push /etc/hosts foo/etc/hosts\n"
+#~ "   To push /etc/hosts into the container \"foo\".\n"
+#~ "\n"
+#~ "lxc file pull foo/etc/hosts .\n"
+#~ "   To pull /etc/hosts from the container and write it to the current "
+#~ "directory."
+#~ msgstr ""
+#~ "使い方: lxc file <subcommand> [options]\n"
+#~ "\n"
+#~ "コンテナ内のファイルを管理します。\n"
+#~ "\n"
+#~ "lxc file pull [-r|--recursive] [<remote>:]<container>/<path> "
+#~ "[[<remote>:]<container>/<path>...] <target path>\n"
+#~ "    コンテナからファイルを取得します。\n"
+#~ "\n"
+#~ "lxc file push [-r|--recursive] [-p|--create-dirs] [--uid=UID] [--gid=GID] "
+#~ "[--mode=MODE] <source path> [<source path>...] [<remote>:]<container>/"
+#~ "<path>\n"
+#~ "    コンテナにファイルを設置します。\n"
+#~ "\n"
+#~ "lxc file delete [<remote>:]<container>/<path> [[<remote>:]<container>/"
+#~ "<path>...]\n"
+#~ "    コンテナ内のファイルを削除します。\n"
+#~ "\n"
+#~ "lxc file edit [<remote>:]<container>/<path>\n"
+#~ "    デフォルトのテキストエディタを使用してコンテナ内のファイルを編集しま"
+#~ "す。\n"
+#~ "\n"
+#~ "*例*\n"
+#~ "lxc file push /etc/hosts foo/etc/hosts\n"
+#~ "   /etc/hosts を \"foo\" コンテナ内に設置します。\n"
+#~ "\n"
+#~ "lxc file pull foo/etc/hosts .\n"
+#~ "   コンテナから /etc/hosts を取得し、カレントディレクトリに置きます。"
+
+#~ msgid ""
+#~ "Usage: lxc finger [<remote>:]\n"
+#~ "\n"
+#~ "Check if the LXD server is alive."
+#~ msgstr ""
+#~ "使い方: lxc finger [<remote>:]\n"
+#~ "\n"
+#~ "LXD サーバが動作しているかチェックします。"
+
+#~ msgid ""
+#~ "Usage: lxc help [--all]\n"
+#~ "\n"
+#~ "Help page for the LXD client."
+#~ msgstr ""
+#~ "Usage: lxc help [--all]\n"
+#~ "\n"
+#~ "LXD クライアントのヘルプを表示します。"
+
+#~ msgid ""
+#~ "Usage: lxc image <subcommand> [options]\n"
+#~ "\n"
+#~ "Manipulate container images.\n"
+#~ "\n"
+#~ "In LXD containers are created from images. Those images were themselves\n"
+#~ "either generated from an existing container or downloaded from an image\n"
+#~ "server.\n"
+#~ "\n"
+#~ "When using remote images, LXD will automatically cache images for you\n"
+#~ "and remove them upon expiration.\n"
+#~ "\n"
+#~ "The image unique identifier is the hash (sha-256) of its representation\n"
+#~ "as a compressed tarball (or for split images, the concatenation of the\n"
+#~ "metadata and rootfs tarballs).\n"
+#~ "\n"
+#~ "Images can be referenced by their full hash, shortest unique partial\n"
+#~ "hash or alias name (if one is set).\n"
+#~ "\n"
+#~ "\n"
+#~ "lxc image import <tarball>|<dir> [<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) or an image directory into the "
+#~ "LXD image store.\n"
+#~ "    Directory import is only available on Linux and must be performed as "
+#~ "root.\n"
+#~ "\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"
+#~ "    Delete one or more images from the LXD image store.\n"
+#~ "\n"
+#~ "lxc image refresh [<remote>:]<image> [[<remote>:]<image>...]\n"
+#~ "    Refresh one or more images from its parent remote.\n"
+#~ "\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"
+#~ "    The target may be an existing directory, file name, or \"-\" to "
+#~ "specify\n"
+#~ "    stdout.  The target MUST be a directory when exporting a split "
+#~ "image.\n"
+#~ "    If the target is a directory, the image's name (each part's name for\n"
+#~ "    split images) as found in the database will be used for the exported\n"
+#~ "    image.  If the target is a file (not a directory and not stdout), "
+#~ "then\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"
+#~ "    Print everything LXD knows about a given image.\n"
+#~ "\n"
+#~ "lxc image list [<remote>:] [filter] [--format csv|json|table|yaml] [-c "
+#~ "<columns>]\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"
+#~ "    The -c option takes a (optionally comma-separated) list of arguments "
+#~ "that\n"
+#~ "    control which image attributes to output when displaying in table or "
+#~ "csv\n"
+#~ "    format.\n"
+#~ "\n"
+#~ "    Default column layout is: lfpdasu\n"
+#~ "\n"
+#~ "    Column shorthand chars:\n"
+#~ "\n"
+#~ "        l - Shortest image alias (and optionally number of other "
+#~ "aliases)\n"
+#~ "\n"
+#~ "        L - Newline-separated list of all image aliases\n"
+#~ "\n"
+#~ "        f - Fingerprint\n"
+#~ "\n"
+#~ "        p - Whether image is public\n"
+#~ "\n"
+#~ "        d - Description\n"
+#~ "\n"
+#~ "        a - Architecture\n"
+#~ "\n"
+#~ "        s - Size\n"
+#~ "\n"
+#~ "        u - Upload date\n"
+#~ "\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"
+#~ "    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"
+#~ "    Create a new alias for an existing image.\n"
+#~ "\n"
+#~ "lxc image alias rename [<remote>:]<alias> <new-name>\n"
+#~ "    Rename an alias.\n"
+#~ "\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."
+#~ msgstr ""
+#~ "使い方: lxc image <subcommand> [options]\n"
+#~ "\n"
+#~ "コンテナイメージを操作します。\n"
+#~ "\n"
+#~ "LXD では、コンテナはイメージから作られます。このイメージは、既存のコンテ"
+#~ "ナ\n"
+#~ "やイメージサーバからダウンロードしたイメージから作られます。\n"
+#~ "\n"
+#~ "リモートのイメージを使う場合、LXD は自動的にイメージをキャッシュします。"
+#~ "そ\n"
+#~ "して、イメージの期限が切れるとキャッシュを削除します。\n"
+#~ "\n"
+#~ "イメージ固有の識別子は圧縮された tarball (分割イメージの場合は、メタデー"
+#~ "タ\n"
+#~ "と rootfs tarball を結合したもの) のハッシュ (sha-256) です。\n"
+#~ "\n"
+#~ "イメージは全ハッシュ文字列、一意に定まるハッシュの短縮表現、(設定されて"
+#~ "い\n"
+#~ "る場合は) エイリアスで参照できます。\n"
+#~ "\n"
+#~ "\n"
+#~ "lxc image import <tarball>|<dir> [<rootfs tarball>|<URL>] [<remote>:] [--"
+#~ "public] [--created-at=ISO-8601] [--expires-at=ISO-8601] [--"
+#~ "fingerprint=FINGERPRINT] [--alias=ALIAS...] [prop=value]\n"
+#~ "    イメージの tarball (複数も可能) を LXD のイメージストアにインポートし"
+#~ "ま\n"
+#~ "    す。ディレクトリのインポートは Linux 上でのみ可能で、root で実行する必"
+#~ "要\n"
+#~ "    があります。\n"
+#~ "\n"
+#~ "lxc image copy [<remote>:]<image> <remote>: [--alias=ALIAS...] [--copy-"
+#~ "aliases] [--public] [--auto-update]\n"
+#~ "    ネットワーク経由である LXD デーモンから他の LXD デーモンへイメージを\n"
+#~ "    コピーします。\n"
+#~ "\n"
+#~ "    auto-update フラグは、サーバがイメージを最新に保つように指示します。"
+#~ "イ\n"
+#~ "    メージのソースがエイリアスであり、public である必要があります。\n"
+#~ "\n"
+#~ "lxc image delete [<remote>:]<image> [[<remote>:]<image>...]\n"
+#~ "    LXD のイメージストアからイメージを削除します。\n"
+#~ "\n"
+#~ "lxc image refresh [<remote>:]<image> [[<remote>:]<image>...]\n"
+#~ "    ひとつ以上のイメージを取得元から更新します。\n"
+#~ "\n"
+#~ "lxc image export [<remote>:]<image> [target]\n"
+#~ "    LXD のイメージストアから配布可能な tarball としてイメージをエクスポー"
+#~ "ト\n"
+#~ "    します。\n"
+#~ "\n"
+#~ "    出力先の指定はオプションで、デフォルトでは現在のディレクトリです。\n"
+#~ "    出力先は存在するディレクトリ、ファイル名、標準出力を示す \"-\" のい\n"
+#~ "    ずれかです。分割イメージをエクスポートする際は、出力先はディレクト\n"
+#~ "    リでなければなりません。出力先がディレクトリの場合、データベースで\n"
+#~ "    見つかったイメージ名 (分割イメージの部分それぞれの名前) をエクスポー\n"
+#~ "    トするイメージに使用します。出力先がファイルの場合 (ディレクトリで\n"
+#~ "    も標準出力でもない場合)、イメージを圧縮するアルゴリズムにもとづい\n"
+#~ "    た適切な拡張子が対象のファイル名に追加されます。\n"
+#~ "\n"
+#~ "lxc image info [<remote>:]<image>\n"
+#~ "    指定したイメージについてのすべての情報を表示します。\n"
+#~ "\n"
+#~ "lxc image list [<remote>:] [filter] [--format csv|json|table|yaml] [-c "
+#~ "<columns>]\n"
+#~ "    LXD のイメージストア内のイメージを一覧表示します。プロパティでフィル"
+#~ "タ\n"
+#~ "    を行う場合は、フィルタは <key>=<value> の形になります。フィルタはイ"
+#~ "メー\n"
+#~ "    ジハッシュの一部やイメージエイリアス名の一部も指定できます。\n"
+#~ "\n"
+#~ "    -c オプションは、表形式もしくは csv で出力する際のイメージ属性の出\n"
+#~ "    力形式を制御します。引数のリスト (カンマ区切りも可能) を指定します。\n"
+#~ "\n"
+#~ "    デフォルトのカラムレイアウト: lfpdasu\n"
+#~ "\n"
+#~ "    カラムの指定文字:\n"
+#~ "\n"
+#~ "        l - もっとも短いイメージのエイリアス (他の指定されているエイリアス"
+#~ "の数も表示します)\n"
+#~ "\n"
+#~ "        L - イメージのエイリアスすべて (改行区切り)\n"
+#~ "\n"
+#~ "        f - フィンガープリント\n"
+#~ "\n"
+#~ "        p - イメージがパブリックかどうか\n"
+#~ "\n"
+#~ "        d - 説明\n"
+#~ "\n"
+#~ "        a - アーキテクチャ\n"
+#~ "\n"
+#~ "        s - サイズ\n"
+#~ "\n"
+#~ "        u - アップロード日\n"
+#~ "\n"
+#~ "lxc image show [<remote>:]<image>\n"
+#~ "    ユーザが変更できるプロパティの YAML 形式の出力を行います。\n"
+#~ "\n"
+#~ "lxc image edit [<remote>:]<image>\n"
+#~ "    外部エディタまたは標準入力からの読み込みにより、イメージを編集しま"
+#~ "す。\n"
+#~ "    例: lxc image edit <image> # エディタの起動\n"
+#~ "        cat image.yaml | lxc image edit <image> # image.yaml から読み込"
+#~ "み\n"
+#~ "\n"
+#~ "lxc image alias create [<remote>:]<alias> <fingerprint>\n"
+#~ "    既存のイメージに新たにエイリアスを作成します。\n"
+#~ "\n"
+#~ "lxc image alias rename [<remote>:]<alias> <new-name>\n"
+#~ "    エイリアスの名前を変更します。\n"
+#~ "\n"
+#~ "lxc image alias delete [<remote>:]<alias>\n"
+#~ "    エイリアスを削除します。\n"
+#~ "\n"
+#~ "lxc image alias list [<remote>:] [filter]\n"
+#~ "    エイリアスを一覧表示します。イメージハッシュの一部やイメージのエイリア"
+#~ "ス\n"
+#~ "    名の一部をフィルタとして指定できます。"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: lxc init [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] "
+#~ "[--profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
+#~ "<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
+#~ "<node>]\n"
+#~ "\n"
+#~ "Create containers from images.\n"
+#~ "\n"
+#~ "Not specifying -p will result in the default profile.\n"
+#~ "Specifying \"-p\" with no argument will result in no profile.\n"
+#~ "\n"
+#~ "Examples:\n"
+#~ "    lxc init ubuntu:16.04 u1"
+#~ msgstr ""
+#~ "使い方: lxc init [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] "
+#~ "[--profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
+#~ "<network>] [--storage|-s <pool>] [--type|-t <instance type>]\n"
+#~ "\n"
+#~ "指定したイメージからコンテナを初期化します。\n"
+#~ "\n"
+#~ "-p を指定しない場合はデフォルトのプロファイルを使います。\n"
+#~ "\"-p\" のように引数なしで -p を使うとプロファイルなしとなります。\n"
+#~ "\n"
+#~ "例:\n"
+#~ "    lxc init ubuntu:16.04 u1"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: lxc launch [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] "
+#~ "[--profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
+#~ "<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
+#~ "<node>]\n"
+#~ "\n"
+#~ "Create and start containers from images.\n"
+#~ "\n"
+#~ "Not specifying -p will result in the default profile.\n"
+#~ "Specifying \"-p\" with no argument will result in no profile.\n"
+#~ "\n"
+#~ "Examples:\n"
+#~ "    lxc launch ubuntu:16.04 u1"
+#~ msgstr ""
+#~ "使い方: lxc launch [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-"
+#~ "e] [--profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
+#~ "<network>] [--storage|-s <pool>] [--type|-t <instance type>]\n"
+#~ "\n"
+#~ "指定したイメージからコンテナを起動します。\n"
+#~ "\n"
+#~ "-p を指定しない場合はデフォルトのプロファイルを使います。\n"
+#~ "\"-p\" のように引数なしで -p を使うとプロファイルなしとなります。\n"
+#~ "\n"
+#~ "例:\n"
+#~ "    lxc launch ubuntu:16.04 u1"
 
-#: lxc/main.go:368 lxc/main.go:372
-#, c-format
-msgid "processing aliases failed %s\n"
-msgstr "エイリアスの処理が失敗しました %s\n"
+#~ msgid ""
+#~ "Usage: lxc manpage <directory>\n"
+#~ "\n"
+#~ "Generate all the LXD manpages."
+#~ msgstr ""
+#~ "使い方: lxc manpage <directory>\n"
+#~ "\n"
+#~ "LXD の manpage をすべて生成します。"
 
-#: lxc/file.go:588
-msgid "recursive edit doesn't make sense :("
-msgstr "再帰的な edit は意味がありません :("
+#~ msgid ""
+#~ "Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
+#~ "\n"
+#~ "Monitor a local or remote LXD server.\n"
+#~ "\n"
+#~ "By default the monitor will listen to all message types.\n"
+#~ "\n"
+#~ "Message types to listen for can be specified with --type.\n"
+#~ "\n"
+#~ "*Examples*\n"
+#~ "lxc monitor --type=logging\n"
+#~ "    Only show log messages.\n"
+#~ "\n"
+#~ "lxc monitor --pretty --type=logging --loglevel=info\n"
+#~ "    Show a pretty log of messages with info level or higher.\n"
+#~ msgstr ""
+#~ "使い方: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
+#~ "\n"
+#~ "ローカルまたはリモートの LXD サーバの動作をモニタリングします。\n"
+#~ "\n"
+#~ "デフォルトでは全てのメッセージタイプをモニタリングします。\n"
+#~ "\n"
+#~ "--type により、モニタリングするメッセージタイプを指定できます。\n"
+#~ "\n"
+#~ "*例*\n"
+#~ "lxc monitor --type=logging\n"
+#~ "    ログメッセージのみ表示します。\n"
+#~ "\n"
+#~ "lxc monitor --pretty --type=logging --loglevel=info\n"
+#~ "    info レベルかそれ以上のメッセージの pretty ログを表示します。"
 
-#: lxc/remote.go:436
-#, c-format
-msgid "remote %s already exists"
-msgstr "リモート %s は既に存在します"
+#, fuzzy
+#~ msgid ""
+#~ "Usage: lxc network <subcommand> [options]\n"
+#~ "\n"
+#~ "Manage and attach containers to networks.\n"
+#~ "\n"
+#~ "lxc network list [<remote>:]\n"
+#~ "    List available networks.\n"
+#~ "\n"
+#~ "lxc network list-leases [<remote>:]<network>\n"
+#~ "    List the DHCP leases for the network\n"
+#~ "\n"
+#~ "lxc network show [<remote>:]<network> [--target <node>]\n"
+#~ "    Show details of a network.\n"
+#~ "\n"
+#~ "lxc network create [<remote>:]<network> [key=value...] [--target <node>]\n"
+#~ "    Create a network.\n"
+#~ "\n"
+#~ "lxc network get [<remote>:]<network> <key> [--target <node>]\n"
+#~ "    Get network configuration.\n"
+#~ "\n"
+#~ "lxc network set [<remote>:]<network> <key> <value>\n"
+#~ "    Set network configuration.\n"
+#~ "\n"
+#~ "lxc network unset [<remote>:]<network> <key>\n"
+#~ "    Unset network configuration.\n"
+#~ "\n"
+#~ "lxc network delete [<remote>:]<network>\n"
+#~ "    Delete a network.\n"
+#~ "\n"
+#~ "lxc network edit [<remote>:]<network>\n"
+#~ "    Edit network, either by launching external editor or reading STDIN.\n"
+#~ "\n"
+#~ "lxc network rename [<remote>:]<network> <new-name>\n"
+#~ "    Rename a network.\n"
+#~ "\n"
+#~ "lxc network attach [<remote>:]<network> <container> [device name] "
+#~ "[interface name]\n"
+#~ "    Attach a network interface connecting the network to a specified "
+#~ "container.\n"
+#~ "\n"
+#~ "lxc network attach-profile [<remote>:]<network> <profile> [device name] "
+#~ "[interface name]\n"
+#~ "    Attach a network interface connecting the network to a specified "
+#~ "profile.\n"
+#~ "\n"
+#~ "lxc network detach [<remote>:]<network> <container> [device name]\n"
+#~ "    Remove a network interface connecting the network to a specified "
+#~ "container.\n"
+#~ "\n"
+#~ "lxc network detach-profile [<remote>:]<network> <container> [device "
+#~ "name]\n"
+#~ "    Remove a network interface connecting the network to a specified "
+#~ "profile.\n"
+#~ "\n"
+#~ "*Examples*\n"
+#~ "cat network.yaml | lxc network edit <network>\n"
+#~ "    Update a network using the content of network.yaml"
+#~ msgstr ""
+#~ "使い方: lxc network <subcommand> [options]\n"
+#~ "\n"
+#~ "ネットワークを管理し、コンテナをネットワークに接続します。\n"
+#~ "\n"
+#~ "lxc network list [<remote>:]\n"
+#~ "    利用できるネットワークを一覧します。\n"
+#~ "\n"
+#~ "lxc network show [<remote>:]<network>\n"
+#~ "    ネットワークの詳細を表示します。\n"
+#~ "\n"
+#~ "lxc network create [<remote>:]<network> [key=value...]\n"
+#~ "    ネットワークを作成します。\n"
+#~ "\n"
+#~ "lxc network get [<remote>:]<network> <key>\n"
+#~ "    ネットワークの設定を取得します。\n"
+#~ "\n"
+#~ "lxc network set [<remote>:]<network> <key> <value>\n"
+#~ "    ネットワークを設定します。\n"
+#~ "\n"
+#~ "lxc network unset [<remote>:]<network> <key>\n"
+#~ "    ネットワークの設定を削除します。\n"
+#~ "\n"
+#~ "lxc network delete [<remote>:]<network>\n"
+#~ "    ネットワークを削除します。\n"
+#~ "\n"
+#~ "lxc network edit [<remote>:]<network>\n"
+#~ "    外部エディタもしくは標準入力から読み込むことでネットワークを編集しま"
+#~ "す。\n"
+#~ "\n"
+#~ "lxc network rename [<remote>:]<network> <new-name>\n"
+#~ "    ネットワーク名を変更します。\n"
+#~ "\n"
+#~ "lxc network attach [<remote>:]<network> <container> [device name] "
+#~ "[interface name]\n"
+#~ "    指定したコンテナにネットワークに接続しているネットワークインター\n"
+#~ "    フェースを接続します。\n"
+#~ "\n"
+#~ "lxc network attach-profile [<remote>:]<network> <profile> [device name] "
+#~ "[interface name]\n"
+#~ "    指定したプロファイルにネットワークに接続しているネットワークインター\n"
+#~ "    フェースを接続します。\n"
+#~ "\n"
+#~ "lxc network detach [<remote>:]<network> <container> [device name]\n"
+#~ "    指定したコンテナをネットワークに接続しているネットワークインター\n"
+#~ "    フェースから切断します。\n"
+#~ "\n"
+#~ "lxc network detach-profile [<remote>:]<network> <container> [device "
+#~ "name]\n"
+#~ "    指定したプロファイルをネットワークに接続しているネットワークインター\n"
+#~ "    フェースから削除します。\n"
+#~ "\n"
+#~ "*例*\n"
+#~ "cat network.yaml | lxc network edit <network>\n"
+#~ "    network.yaml の内容でネットワークを更新します。"
 
-#: lxc/remote.go:362 lxc/remote.go:428 lxc/remote.go:463 lxc/remote.go:479
-#, c-format
-msgid "remote %s doesn't exist"
-msgstr "リモート %s は存在しません"
+#~ msgid ""
+#~ "Usage: lxc operation <subcommand> [options]\n"
+#~ "\n"
+#~ "List, show and delete background operations.\n"
+#~ "\n"
+#~ "lxc operation list [<remote>:]\n"
+#~ "    List background operations.\n"
+#~ "\n"
+#~ "lxc operation show [<remote>:]<operation>\n"
+#~ "    Show details on a background operation.\n"
+#~ "\n"
+#~ "lxc operation delete [<remote>:]<operation>\n"
+#~ "    Delete a background operation (will attempt to cancel).\n"
+#~ "\n"
+#~ "*Examples*\n"
+#~ "lxc operation show 344a79e4-d88a-45bf-9c39-c72c26f6ab8a\n"
+#~ "    Show details on that operation UUID"
+#~ msgstr ""
+#~ "使い方: lxc operation <subcommand> [options]\n"
+#~ "\n"
+#~ "バックグラウンドの操作の一覧表示、確認、削除を行います。\n"
+#~ "\n"
+#~ "lxc operation list [<remote>:]\n"
+#~ "    バックグラウンド操作の一覧を表示します。\n"
+#~ "\n"
+#~ "lxc operation show [<remote>:]<operation>\n"
+#~ "    バックグラウンド操作の詳細を表示します。\n"
+#~ "\n"
+#~ "lxc operation delete [<remote>:]<operation>\n"
+#~ "    バックグラウンド操作の削除を行います (キャンセルを試みます)。\n"
+#~ "\n"
+#~ "*例*\n"
+#~ "lxc operation show 344a79e4-d88a-45bf-9c39-c72c26f6ab8a\n"
+#~ "    指定した UUID を持つ操作の詳細を表示します"
 
-#: lxc/remote.go:345
-#, c-format
-msgid "remote %s exists as <%s>"
-msgstr "リモート %s は <%s> として存在します"
+#~ msgid ""
+#~ "Usage: lxc profile <subcommand> [options]\n"
+#~ "\n"
+#~ "Manage container configuration profiles.\n"
+#~ "\n"
+#~ "*Profile configuration*\n"
+#~ "lxc profile list [<remote>:]\n"
+#~ "    List available profiles.\n"
+#~ "\n"
+#~ "lxc profile show [<remote>:]<profile>\n"
+#~ "    Show details of a profile.\n"
+#~ "\n"
+#~ "lxc profile create [<remote>:]<profile>\n"
+#~ "    Create a profile.\n"
+#~ "\n"
+#~ "lxc profile copy [<remote>:]<profile> [<remote>:]<profile>\n"
+#~ "    Copy the profile.\n"
+#~ "\n"
+#~ "lxc profile get [<remote>:]<profile> <key>\n"
+#~ "    Get profile configuration.\n"
+#~ "\n"
+#~ "lxc profile set [<remote>:]<profile> <key> <value>\n"
+#~ "    Set profile configuration.\n"
+#~ "\n"
+#~ "lxc profile unset [<remote>:]<profile> <key>\n"
+#~ "    Unset profile configuration.\n"
+#~ "\n"
+#~ "lxc profile delete [<remote>:]<profile>\n"
+#~ "    Delete a profile.\n"
+#~ "\n"
+#~ "lxc profile edit [<remote>:]<profile>\n"
+#~ "    Edit profile, either by launching external editor or reading STDIN.\n"
+#~ "\n"
+#~ "lxc profile rename [<remote>:]<profile> <new-name>\n"
+#~ "    Rename a profile.\n"
+#~ "\n"
+#~ "*Profile assignment*\n"
+#~ "lxc profile assign [<remote>:]<container> <profiles>\n"
+#~ "    Replace the current set of profiles for the container by the one "
+#~ "provided.\n"
+#~ "\n"
+#~ "lxc profile add [<remote>:]<container> <profile>\n"
+#~ "    Add a profile to a container\n"
+#~ "\n"
+#~ "lxc profile remove [<remote>:]<container> <profile>\n"
+#~ "    Remove the profile from a container\n"
+#~ "\n"
+#~ "*Device management*\n"
+#~ "lxc profile device list [<remote>:]<profile>\n"
+#~ "    List devices in the given profile.\n"
+#~ "\n"
+#~ "lxc profile device show [<remote>:]<profile>\n"
+#~ "    Show full device details in the given profile.\n"
+#~ "\n"
+#~ "lxc profile device remove [<remote>:]<profile> <name>\n"
+#~ "    Remove a device from a profile.\n"
+#~ "\n"
+#~ "lxc profile device get [<remote>:]<profile> <name> <key>\n"
+#~ "    Get a device property.\n"
+#~ "\n"
+#~ "lxc profile device set [<remote>:]<profile> <name> <key> <value>\n"
+#~ "    Set a device property.\n"
+#~ "\n"
+#~ "lxc profile device unset [<remote>:]<profile> <name> <key>\n"
+#~ "    Unset a device property.\n"
+#~ "\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.\n"
+#~ "\n"
+#~ "*Examples*\n"
+#~ "cat profile.yaml | lxc profile edit <profile>\n"
+#~ "    Update a profile using the content of profile.yaml\n"
+#~ "\n"
+#~ "lxc profile assign foo default,bar\n"
+#~ "    Set the profiles for \"foo\" to \"default\" and \"bar\".\n"
+#~ "\n"
+#~ "lxc profile assign foo default\n"
+#~ "    Reset \"foo\" to only using the \"default\" profile.\n"
+#~ "\n"
+#~ "lxc profile assign foo ''\n"
+#~ "    Remove all profile from \"foo\""
+#~ msgstr ""
+#~ "使い方: lxc profile <subcommand> [options]\n"
+#~ "\n"
+#~ "設定プロファイルを管理します。\n"
+#~ "\n"
+#~ "*プロファイル設定*\n"
+#~ "lxc profile list [<remote>:]\n"
+#~ "    利用可能なプロファイルを一覧します。\n"
+#~ "\n"
+#~ "lxc profile show [<remote>:]<profile>\n"
+#~ "    プロファイルの詳細を表示します。\n"
+#~ "\n"
+#~ "lxc profile create [<remote>:]<profile>\n"
+#~ "    プロファイルを作成します。\n"
+#~ "\n"
+#~ "lxc profile copy [<remote>:]<profile> [<remote>:]<profile>\n"
+#~ "    プロファイルをコピーします。\n"
+#~ "\n"
+#~ "lxc profile get [<remote>:]<profile> <key>\n"
+#~ "    プロファイルの設定を取得します。\n"
+#~ "\n"
+#~ "lxc profile set [<remote>:]<profile> <key> <value>\n"
+#~ "    プロファイルの設定を設定します。\n"
+#~ "\n"
+#~ "lxc profile unset [<remote>:]<profile> <key>\n"
+#~ "    プロファイルから設定項目を削除します。\n"
+#~ "\n"
+#~ "lxc profile delete [<remote>:]<profile>\n"
+#~ "    プロファイルを削除します。\n"
+#~ "\n"
+#~ "lxc profile edit [<remote>:]<profile>\n"
+#~ "    プロファイルを編集します。外部エディタもしくはSTDINから読み込みま"
+#~ "す。\n"
+#~ "\n"
+#~ "lxc profile rename [<remote>:]<profile> <new-name>\n"
+#~ "    プロファイル名を変更します。\n"
+#~ "\n"
+#~ "*プロファイルの割り当て*\n"
+#~ "lxc profile assign [<remote>:]<container> <profiles>\n"
+#~ "    コンテナの現在のプロファイルを指定したプロファイルで置き換えます。\n"
+#~ "\n"
+#~ "lxc profile add [<remote>:]<container> <profile>\n"
+#~ "    コンテナにプロファイルを追加します。\n"
+#~ "\n"
+#~ "lxc profile remove [<remote>:]<container> <profile>\n"
+#~ "    コンテナからプロファイルを削除します。\n"
+#~ "\n"
+#~ "*デバイス管理*\n"
+#~ "lxc profile device list [<remote>:]<profile>\n"
+#~ "    指定したプロファイル内のデバイスを一覧表示します\n"
+#~ "\n"
+#~ "lxc profile device show [<remote>:]<profile>\n"
+#~ "    指定したプロファイル内の全デバイスの詳細を表示します\n"
+#~ "\n"
+#~ "lxc profile device remove [<remote>:]<profile> <name>\n"
+#~ "    プロファイルからデバイスを削除します\n"
+#~ "\n"
+#~ "lxc profile device get [<remote>:]<profile> <name> <key>\n"
+#~ "    デバイスプロパティを取得します\n"
+#~ "\n"
+#~ "lxc profile device set [<remote>:]<profile> <name> <key> <value>\n"
+#~ "    デバイスプロパティを設定します\n"
+#~ "\n"
+#~ "lxc profile device unset <[remote:]profile> <name> <key>\n"
+#~ "    デバイスプロパティを削除します\n"
+#~ "\n"
+#~ "lxc profile device add [<remote>:]<profile> <device> <type> "
+#~ "[key=value...]\n"
+#~ "    ディスクやNICのようなプロファイルデバイスを指定したプロファイルを使っ"
+#~ "て\n"
+#~ "    コンテナに追加します。\n"
+#~ "\n"
+#~ "*例*\n"
+#~ "cat profile.yaml | lxc profile edit <profile>\n"
+#~ "    profile.yaml の内容でプロファイルを更新します。\n"
+#~ "\n"
+#~ "lxc profile assign foo default,bar\n"
+#~ "    \"default\" と \"bar\" をプロファイル \"foo\" に設定します。\n"
+#~ "\n"
+#~ "lxc profile assign foo default\n"
+#~ "    \"foo\" プロファイルを \"default\" プロファイルの内容のみにリセット"
+#~ "し\n"
+#~ "    ます。\n"
+#~ "\n"
+#~ "lxc profile assign foo ''\n"
+#~ "    \"foo\" からすべてのプロファイルを削除します。"
 
-#: lxc/remote.go:366 lxc/remote.go:432 lxc/remote.go:467
-#, c-format
-msgid "remote %s is static and cannot be modified"
-msgstr "リモート %s は static ですので変更できません"
+#~ msgid ""
+#~ "Usage: lxc query [-X <action>] [-d <data>] [--wait] [--raw] "
+#~ "[<remote>:]<API path>\n"
+#~ "\n"
+#~ "Send a raw query to LXD.\n"
+#~ "\n"
+#~ "*Examples*\n"
+#~ "lxc query -X DELETE --wait /1.0/containers/c1\n"
+#~ "    Delete local container \"c1\"."
+#~ msgstr ""
+#~ "使い方: lxc query [-X <action>] [-d <data>] [--wait] [--raw] "
+#~ "[<remote>:]<API path>\n"
+#~ "\n"
+#~ "LXD に対して直接 API を指定してリクエストを送ります。\n"
+#~ "\n"
+#~ "*例*\n"
+#~ "lxc query -X DELETE --wait /1.0/containers/c1\n"
+#~ "    ローカルのコンテナ \"c1\" を削除します。"
 
-#: lxc/storage.go:858
-msgid "space used"
-msgstr ""
+#~ msgid ""
+#~ "Usage: lxc remote <subcommand> [options]\n"
+#~ "\n"
+#~ "Manage the list of remote LXD servers.\n"
+#~ "\n"
+#~ "lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--"
+#~ "password=PASSWORD] [--public] [--protocol=PROTOCOL] [--auth-"
+#~ "type=AUTH_TYPE]\n"
+#~ "    Add the remote <remote> at <url>.\n"
+#~ "\n"
+#~ "lxc remote remove <remote>\n"
+#~ "    Remove the remote <remote>.\n"
+#~ "\n"
+#~ "lxc remote list\n"
+#~ "    List all remotes.\n"
+#~ "\n"
+#~ "lxc remote rename <old name> <new name>\n"
+#~ "    Rename remote <old name> to <new name>.\n"
+#~ "\n"
+#~ "lxc remote set-url <remote> <url>\n"
+#~ "    Update <remote>'s url to <url>.\n"
+#~ "\n"
+#~ "lxc remote set-default <remote>\n"
+#~ "    Set the default remote.\n"
+#~ "\n"
+#~ "lxc remote get-default\n"
+#~ "    Print the default remote."
+#~ msgstr ""
+#~ "使い方: lxc remote <subcommand> [options]\n"
+#~ "\n"
+#~ "リモートの LXD サーバのリストを管理します。\n"
+#~ "\n"
+#~ "lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--"
+#~ "password=PASSWORD] [--public] [--protocol=PROTOCOL] [--auth-"
+#~ "type=AUTH_TYPE]\n"
+#~ "    <url> をリモートホスト <remote> として追加します。\n"
+#~ "\n"
+#~ "lxc remote remove <remote>\n"
+#~ "    リモートホスト <remote> を削除します。\n"
+#~ "\n"
+#~ "lxc remote list\n"
+#~ "    リモートホストを全て一覧表示します。\n"
+#~ "\n"
+#~ "lxc remote rename <old name> <new name>\n"
+#~ "    リモートホストの名前を <old name> から <new name> に変更します。\n"
+#~ "\n"
+#~ "lxc remote set-url <remote> <url>\n"
+#~ "    <remote> の url を <url> に更新します。\n"
+#~ "\n"
+#~ "lxc remote set-default <remote>\n"
+#~ "    <remote> をデフォルトのリモートホストに設定します。\n"
+#~ "\n"
+#~ "lxc remote get-default\n"
+#~ "    デフォルトに設定されているリモートホストを表示します。"
 
-#: lxc/info.go:251
-msgid "stateful"
-msgstr "ステートフル"
+#~ msgid ""
+#~ "Usage: lxc restore [<remote>:]<container> <snapshot> [--stateful]\n"
+#~ "\n"
+#~ "Restore containers from snapshots.\n"
+#~ "\n"
+#~ "If --stateful is passed, then the running state will be restored too.\n"
+#~ "\n"
+#~ "*Examples*\n"
+#~ "lxc snapshot u1 snap0\n"
+#~ "    Create the snapshot.\n"
+#~ "\n"
+#~ "lxc restore u1 snap0\n"
+#~ "    Restore the snapshot."
+#~ msgstr ""
+#~ "使い方: lxc restore [<remote>:]<container> <snapshot> [--stateful]\n"
+#~ "\n"
+#~ "スナップショットからコンテナをリストアします。\n"
+#~ "\n"
+#~ "--stateful を指定すると、実行状態もリストアされます。\n"
+#~ "\n"
+#~ "*例*\n"
+#~ "lxc snapshot u1 snap0\n"
+#~ "    スナップショットを作成します。\n"
+#~ "\n"
+#~ "lxc restore u1 snap0\n"
+#~ "    スナップショットからリストアします。"
 
-#: lxc/info.go:253
-msgid "stateless"
-msgstr "ステートレス"
+#, fuzzy
+#~ msgid ""
+#~ "Usage: lxc storage <subcommand> [options]\n"
+#~ "\n"
+#~ "Manage storage pools and volumes.\n"
+#~ "\n"
+#~ "*Storage pools*\n"
+#~ "lxc storage list [<remote>:]\n"
+#~ "    List available storage pools.\n"
+#~ "\n"
+#~ "lxc storage show [<remote>:]<pool> [--resources] [--target <node>]\n"
+#~ "    Show details of a storage pool.\n"
+#~ "\n"
+#~ "lxc storage info [<remote>:]<pool> [--bytes]\n"
+#~ "    Show information of a storage pool in yaml format.\n"
+#~ "\n"
+#~ "lxc storage create [<remote>:]<pool> <driver> [key=value]... [--target "
+#~ "<node>]\n"
+#~ "    Create a storage pool.\n"
+#~ "\n"
+#~ "lxc storage get [<remote>:]<pool> <key>\n"
+#~ "    Get storage pool configuration.\n"
+#~ "\n"
+#~ "lxc storage set [<remote>:]<pool> <key> <value>\n"
+#~ "    Set storage pool configuration.\n"
+#~ "\n"
+#~ "lxc storage unset [<remote>:]<pool> <key>\n"
+#~ "    Unset storage pool configuration.\n"
+#~ "\n"
+#~ "lxc storage delete [<remote>:]<pool>\n"
+#~ "    Delete a storage pool.\n"
+#~ "\n"
+#~ "lxc storage edit [<remote>:]<pool>\n"
+#~ "    Edit storage pool, either by launching external editor or reading "
+#~ "STDIN.\n"
+#~ "\n"
+#~ "*Storage volumes*\n"
+#~ "lxc storage volume list [<remote>:]<pool>\n"
+#~ "    List available storage volumes on a storage pool.\n"
+#~ "\n"
+#~ "lxc storage volume show [<remote>:]<pool> <volume> [--target <node>]\n"
+#~ "   Show details of a storage volume on a storage pool.\n"
+#~ "\n"
+#~ "lxc storage volume create [<remote>:]<pool> <volume> [key=value]... [--"
+#~ "target <node>]\n"
+#~ "    Create a storage volume on a storage pool.\n"
+#~ "\n"
+#~ "lxc storage volume rename [<remote>:]<pool> <old name> <new name> [--"
+#~ "target <node>]\n"
+#~ "    Rename a storage volume on a storage pool.\n"
+#~ "\n"
+#~ "lxc storage volume get [<remote>:]<pool> <volume> <key> [--target "
+#~ "<node>]\n"
+#~ "    Get storage volume configuration on a storage pool.\n"
+#~ "\n"
+#~ "lxc storage volume set [<remote>:]<pool> <volume> <key> <value> [--target "
+#~ "<node>]\n"
+#~ "    Set storage volume configuration on a storage pool.\n"
+#~ "\n"
+#~ "lxc storage volume unset [<remote>:]<pool> <volume> <key> [--target "
+#~ "<node>]\n"
+#~ "    Unset storage volume configuration on a storage pool.\n"
+#~ "\n"
+#~ "lxc storage volume delete [<remote>:]<pool> <volume> [--target <node>]\n"
+#~ "    Delete a storage volume on a storage pool.\n"
+#~ "\n"
+#~ "lxc storage volume edit [<remote>:]<pool> <volume> [--target <node>]\n"
+#~ "    Edit storage volume, either by launching external editor or reading "
+#~ "STDIN.\n"
+#~ "\n"
+#~ "lxc storage volume attach [<remote>:]<pool> <volume> <container> [device "
+#~ "name] <path>\n"
+#~ "    Attach a storage volume to the specified container.\n"
+#~ "\n"
+#~ "lxc storage volume attach-profile [<remote:>]<pool> <volume> <profile> "
+#~ "[device name] <path>\n"
+#~ "    Attach a storage volume to the specified profile.\n"
+#~ "\n"
+#~ "lxc storage volume detach [<remote>:]<pool> <volume> <container> [device "
+#~ "name]\n"
+#~ "    Detach a storage volume from the specified container.\n"
+#~ "\n"
+#~ "lxc storage volume detach-profile [<remote:>]<pool> <volume> <profile> "
+#~ "[device name]\n"
+#~ "\tDetach a storage volume from the specified profile.\n"
+#~ "\n"
+#~ "lxc storage volume copy <pool>/<volume> <pool>/<volume> [--config|-c "
+#~ "<key=value>...]\n"
+#~ "    Copy an existing volume to a new volume at the specified pool.\n"
+#~ "\n"
+#~ "lxc storage volume move [<pool>/]<volume> [<pool>/]<volume>\n"
+#~ "    Move an existing volume to the specified pool.\n"
+#~ "\n"
+#~ "Unless specified through a prefix, all volume operations affect \"custom"
+#~ "\" (user created) volumes.\n"
+#~ "\n"
+#~ "*Examples*\n"
+#~ "cat pool.yaml | lxc storage edit [<remote>:]<pool>\n"
+#~ "    Update a storage pool using the content of pool.yaml.\n"
+#~ "\n"
+#~ "cat pool.yaml | lxc storage volume edit [<remote>:]<pool> <volume>\n"
+#~ "    Update a storage volume using the content of pool.yaml.\n"
+#~ "\n"
+#~ "lxc storage volume show default data\n"
+#~ "    Will show the properties of a custom volume called \"data\" in the "
+#~ "\"default\" pool.\n"
+#~ "\n"
+#~ "lxc storage volume show default container/data\n"
+#~ "    Will show the properties of the filesystem for a container called "
+#~ "\"data\" in the \"default\" pool."
+#~ msgstr ""
+#~ "使い方: lxc storage <subcommand> [options]\n"
+#~ "\n"
+#~ "ストレージプールとボリュームを管理します。\n"
+#~ "\n"
+#~ "*ストレージプール*\n"
+#~ "lxc storage list [<remote>:]\n"
+#~ "    利用可能なストレージプールを一覧表示します。\n"
+#~ "\n"
+#~ "lxc storage show [<remote>:]<pool> [--resources]\n"
+#~ "    ストレージプールの詳細を表示します。\n"
+#~ "\n"
+#~ "lxc storage info [<remote>:]<pool> [--bytes]\n"
+#~ "    YAML フォーマットでストレージプールの情報を表示します。\n"
+#~ "\n"
+#~ "lxc storage create [<remote>:]<pool> <driver> [key=value]...\n"
+#~ "    ストレージプールを作成します。\n"
+#~ "\n"
+#~ "lxc storage get [<remote>:]<pool> <key>\n"
+#~ "    ストレージプールの設定を取得します。\n"
+#~ "\n"
+#~ "lxc storage set [<remote>:]<pool> <key> <value>\n"
+#~ "    ストレージプールの設定項目を設定します。\n"
+#~ "\n"
+#~ "lxc storage unset [<remote>:]<pool> <key>\n"
+#~ "    ストレージプールの設定を削除します。\n"
+#~ "\n"
+#~ "lxc storage delete [<remote>:]<pool>\n"
+#~ "    ストレージプールを削除します。\n"
+#~ "\n"
+#~ "lxc storage edit [<remote>:]<pool>\n"
+#~ "    外部エディタを起動するか、標準入力から読み込むことにより、ストレー\n"
+#~ "    ジプールを編集します。\n"
+#~ "\n"
+#~ "*ストレージボリューム*\n"
+#~ "lxc storage volume list [<remote>:]<pool>\n"
+#~ "    ストレージプール上の利用可能なストレージボリュームを一覧表示します。\n"
+#~ "\n"
+#~ "lxc storage volume show [<remote>:]<pool> <volume>\n"
+#~ "    ストレージプール上のストレージボリュームの詳細を表示します。\n"
+#~ "\n"
+#~ "lxc storage volume create [<remote>:]<pool> <volume> [key=value]...\n"
+#~ "    ストレージプール上にストレージボリュームを作成します。\n"
+#~ "\n"
+#~ "lxc storage volume rename [<remote>:]<pool> <old name> <new name>\n"
+#~ "    ストレージプール上のストレージボリューム名を変更します。\n"
+#~ "\n"
+#~ "lxc storage volume get [<remote>:]<pool> <volume> <key>\n"
+#~ "    ストレージプール上のストレージボリュームの設定を取得します。\n"
+#~ "\n"
+#~ "lxc storage volume set [<remote>:]<pool> <volume> <key> <value>\n"
+#~ "    ストレージプール上のストレージボリュームの設定項目を設定します。\n"
+#~ "\n"
+#~ "lxc storage volume unset [<remote>:]<pool> <volume> <key>\n"
+#~ "    ストレージプール上のストレージボリュームの設定を削除します。\n"
+#~ "\n"
+#~ "lxc storage volume delete [<remote>:]<pool> <volume>\n"
+#~ "    ストレージプール上のストレージボリュームを削除します。\n"
+#~ "\n"
+#~ "lxc storage volume edit [<remote>:]<pool> <volume>\n"
+#~ "    外部エディタを起動するか、標準入力から読み込むことにより、ストレー\n"
+#~ "    ジボリュームを編集します。\n"
+#~ "\n"
+#~ "lxc storage volume attach [<remote>:]<pool> <volume> <container> [device "
+#~ "name] <path>\n"
+#~ "    指定したコンテナにストレージボリュームを接続します。\n"
+#~ "\n"
+#~ "lxc storage volume attach-profile [<remote:>]<pool> <volume> <profile> "
+#~ "[device name] <path>\n"
+#~ "    指定したプロファイルにストレージボリュームを接続します。\n"
+#~ "\n"
+#~ "lxc storage volume detach [<remote>:]<pool> <volume> <container> [device "
+#~ "name]\n"
+#~ "    指定したコンテナからストレージボリュームを切り離します。\n"
+#~ "\n"
+#~ "lxc storage volume detach-profile [<remote:>]<pool> <volume> <profile> "
+#~ "[device name]\n"
+#~ "    指定したプロファイルからストレージボリュームを切り離します。\n"
+#~ "\n"
+#~ "プレフィックスを指定しない限り、すべてのボリューム操作は (ユーザが作成\n"
+#~ "した) \"custom\" ボリュームに影響します。\n"
+#~ "\n"
+#~ "*例*\n"
+#~ "cat pool.yaml | lxc storage edit [<remote>:]<pool>\n"
+#~ "    pool.yaml の内容を使ってストレージプールを更新します。\n"
+#~ "\n"
+#~ "cat pool.yaml | lxc storage volume edit [<remote>:]<pool> <volume>\n"
+#~ "    pool.yaml の内容を使ってストレージボリュームを更新します。\n"
+#~ "\n"
+#~ "lxc storage volume show default data\n"
+#~ "    \"default\" プール内の \"data\" という名前のカスタムボリュームのプロ"
+#~ "パ\n"
+#~ "    ティを表示します。\n"
+#~ "\n"
+#~ "lxc storage volume show default container/data\n"
+#~ "    \"default\" プール内の \"data\" という名前のコンテナのファイルシステ"
+#~ "ム\n"
+#~ "    のプロパティを表示します。"
 
-#: lxc/info.go:247
-#, c-format
-msgid "taken at %s"
-msgstr "%s に取得しました"
+#~ msgid ""
+#~ "Usage: lxc version\n"
+#~ "\n"
+#~ "Print the version number of this client tool."
+#~ msgstr ""
+#~ "使い方: lxc version\n"
+#~ "\n"
+#~ "お使いのクライアントのバージョン番号を表示します。"
 
-#: lxc/storage.go:857
-msgid "total space"
-msgstr ""
+#~ msgid "`lxc config profile` is deprecated, please use `lxc profile`"
+#~ msgstr ""
+#~ "`lxc config profile` は廃止されました。`lxc profile` を使ってください"
 
-#: lxc/storage.go:852
-msgid "used by"
-msgstr ""
+#~ msgid "error: unknown command: %s"
+#~ msgstr "エラー: 未知のコマンド: %s"
 
-#: lxc/main.go:299
-msgid "wrong number of subcommand arguments"
-msgstr "サブコマンドの引数の数が正しくありません"
+#~ msgid "recursive edit doesn't make sense :("
+#~ msgstr "再帰的な edit は意味がありません :("
 
-#: lxc/delete.go:45 lxc/image.go:208 lxc/image.go:586 lxc/image.go:591
-msgid "yes"
-msgstr ""
+#~ msgid "wrong number of subcommand arguments"
+#~ msgstr "サブコマンドの引数の数が正しくありません"
 
 #~ msgid "'/' not allowed in snapshot name"
 #~ msgstr "'/' はスナップショットの名前には使用できません"
@@ -3371,10 +5021,6 @@ msgstr ""
 #~ msgid "api version mismatch: mine: %q, daemon: %q"
 #~ msgstr "APIのバージョン不一致: クライアント: %q, サーバ: %q"
 
-#, fuzzy
-#~ msgid "bad profile url %s"
-#~ msgstr "プロファイルURLが不正 %s"
-
 #, fuzzy
 #~ msgid "bad version in profile url"
 #~ msgstr "プロファイルURL内のバージョンが不正"
@@ -3414,9 +5060,6 @@ msgstr ""
 #~ msgid "Information about remotes not yet supported"
 #~ msgstr "リモートの情報表示はまだサポートされていません。\n"
 
-#~ msgid "Unknown image command %s"
-#~ msgstr "未知のイメージコマンド %s"
-
 #~ msgid "Unknown remote subcommand %s"
 #~ msgstr "未知のリモートサブコマンド %s"
 
@@ -3427,9 +5070,6 @@ msgstr ""
 #~ msgid "YAML parse error %v"
 #~ msgstr "エラー: %v\n"
 
-#~ msgid "invalid argument %s"
-#~ msgstr "不正な引数 %s"
-
 #, fuzzy
 #~ msgid "Use an alternative config path."
 #~ msgstr "別の設定ディレクトリ"
@@ -3493,21 +5133,9 @@ msgstr ""
 #~ msgid "got non-sync response from containers get!"
 #~ msgstr "コンテナから不正な(非同期でない)応答を得ました!"
 
-#~ msgid "Delete a container or container snapshot.\n"
-#~ msgstr "コンテナまたはコンテナのスナップショットを削除します。\n"
-
 #~ msgid "List information on containers.\n"
 #~ msgstr "コンテナの情報を一覧表示します。\n"
 
-#~ msgid "Lists the available resources.\n"
-#~ msgstr "利用可能なリソースを一覧表示します。\n"
-
-#~ msgid "Manage files on a container.\n"
-#~ msgstr "コンテナ上のファイルを管理します。\n"
-
-#~ msgid "Manage remote lxc servers.\n"
-#~ msgstr "リモートのlxcサーバを管理します。\n"
-
 #~ msgid "Non-async response from create!"
 #~ msgstr "作成コマンドからのレスポンスが不正(非同期でない)!"
 
@@ -3520,9 +5148,3 @@ msgstr ""
 #~ msgstr ""
 #~ "lxc image import <tarball> [destination] [--created-at=ISO-8601] [--"
 #~ "expires-at=ISO-8601] [--fingerprint=HASH] [proprit=valeur]\n"
-
-#~ msgid "lxc init ubuntu [<name>]\n"
-#~ msgstr "lxc init ubuntu [<nom>]\n"
-
-#~ msgid "lxc launch ubuntu [<name>]\n"
-#~ msgstr "lxc launch ubuntu [<nom>]\n"
diff --git a/po/lxd.pot b/po/lxd.pot
index f97730dd7..a3e3623de 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: 2018-03-22 16:04+0100\n"
+        "POT-Creation-Date: 2018-03-29 01:45-0400\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"
@@ -16,7 +16,7 @@ msgstr  "Project-Id-Version: lxd\n"
         "Content-Type: text/plain; charset=CHARSET\n"
         "Content-Transfer-Encoding: 8bit\n"
 
-#: lxc/storage.go:36
+#: lxc/storage.go:220
 msgid   "### This is a yaml representation of a storage pool.\n"
         "### Any line starting with a '#' will be ignored.\n"
         "###\n"
@@ -32,7 +32,7 @@ msgid   "### This is a yaml representation of a storage pool.\n"
         "###   zfs.pool_name: default"
 msgstr  ""
 
-#: lxc/storage.go:53
+#: lxc/storage_volume.go:737
 msgid   "### This is a yaml representation of a storage volume.\n"
         "### Any line starting with a '# will be ignored.\n"
         "###\n"
@@ -45,7 +45,7 @@ msgid   "### This is a yaml representation of a storage volume.\n"
         "###   size: \"61203283968\""
 msgstr  ""
 
-#: lxc/config.go:40
+#: lxc/config.go:100
 msgid   "### This is a yaml representation of the configuration.\n"
         "### Any line starting with a '# will be ignored.\n"
         "###\n"
@@ -65,7 +65,7 @@ msgid   "### This is a yaml representation of the configuration.\n"
         "### Note that the name is shown but cannot be changed"
 msgstr  ""
 
-#: lxc/config.go:61
+#: lxc/config_metadata.go:63
 msgid   "### This is a yaml representation of the container metadata.\n"
         "### Any line starting with a '# will be ignored.\n"
         "###\n"
@@ -88,7 +88,7 @@ msgid   "### This is a yaml representation of the container metadata.\n"
         "###     properties: {}"
 msgstr  ""
 
-#: lxc/image.go:63
+#: lxc/image.go:327
 msgid   "### This is a yaml representation of the image properties.\n"
         "### Any line starting with a '# will be ignored.\n"
         "###\n"
@@ -97,7 +97,7 @@ msgid   "### This is a yaml representation of the image properties.\n"
         "###  description: My custom image"
 msgstr  ""
 
-#: lxc/network.go:32
+#: lxc/network.go:546
 msgid   "### This is a yaml representation of the network.\n"
         "### Any line starting with a '# will be ignored.\n"
         "###\n"
@@ -116,7 +116,7 @@ msgid   "### This is a yaml representation of the network.\n"
         "### Note that only the configuration can be changed."
 msgstr  ""
 
-#: lxc/profile.go:30
+#: lxc/profile.go:408
 msgid   "### This is a yaml representation of the profile.\n"
         "### Any line starting with a '# will be ignored.\n"
         "###\n"
@@ -136,12 +136,12 @@ msgid   "### This is a yaml representation of the profile.\n"
         "### Note that the name is shown but cannot be changed"
 msgstr  ""
 
-#: lxc/image.go:187
+#: lxc/image.go:954
 #, c-format
 msgid   "%s (%d more)"
 msgstr  ""
 
-#: lxc/file.go:205
+#: lxc/file.go:677
 #, c-format
 msgid   "%s is not a directory"
 msgstr  ""
@@ -151,1716 +151,2542 @@ msgstr  ""
 msgid   "%v (interrupt two more times to force)"
 msgstr  ""
 
-#: lxc/file.go:142
+#: lxc/file.go:614
 #, c-format
 msgid   "'%s' isn't a supported file type."
 msgstr  ""
 
-#: lxc/profile.go:337
+#: lxc/profile.go:222
 msgid   "(none)"
 msgstr  ""
 
-#: lxc/alias.go:84 lxc/image.go:231 lxc/image.go:1136
+#: lxc/alias.go:127 lxc/image.go:921 lxc/image_alias.go:228
 msgid   "ALIAS"
 msgstr  ""
 
-#: lxc/image.go:232
+#: lxc/image.go:922
 msgid   "ALIASES"
 msgstr  ""
 
-#: lxc/image.go:236
+#: lxc/image.go:926
 msgid   "ARCH"
 msgstr  ""
 
-#: lxc/list.go:477
+#: lxc/list.go:464
 msgid   "ARCHITECTURE"
 msgstr  ""
 
-#: lxc/remote.go:412
+#: lxc/remote.go:466
 msgid   "AUTH TYPE"
 msgstr  ""
 
-#: lxc/remote.go:68
+#: lxc/remote.go:88
 msgid   "Accept certificate"
 msgstr  ""
 
-#: lxc/query.go:38
+#: lxc/query.go:37
 msgid   "Action (defaults to GET)"
 msgstr  ""
 
-#: lxc/remote.go:276
+#: lxc/config_device.go:75 lxc/config_device.go:76
+msgid   "Add devices to containers or profiles"
+msgstr  ""
+
+#: lxc/alias.go:54 lxc/alias.go:55
+msgid   "Add new aliases"
+msgstr  ""
+
+#: lxc/remote.go:83 lxc/remote.go:84
+msgid   "Add new remote servers"
+msgstr  ""
+
+#: lxc/config_trust.go:58 lxc/config_trust.go:59
+msgid   "Add new trusted clients"
+msgstr  ""
+
+#: lxc/profile.go:101 lxc/profile.go:102
+msgid   "Add profiles to containers"
+msgstr  ""
+
+#: lxc/remote.go:325
 #, c-format
 msgid   "Admin password for %s: "
 msgstr  ""
 
-#: lxc/image.go:623
+#: lxc/alias.go:78 lxc/alias.go:176
+#, c-format
+msgid   "Alias %s already exists"
+msgstr  ""
+
+#: lxc/alias.go:170 lxc/alias.go:221
+#, c-format
+msgid   "Alias %s doesn't exist"
+msgstr  ""
+
+#: lxc/image_alias.go:83 lxc/image_alias.go:130 lxc/image_alias.go:274
+msgid   "Alias name missing"
+msgstr  ""
+
+#: lxc/image.go:854
 msgid   "Aliases:"
 msgstr  ""
 
-#: lxc/image.go:601 lxc/info.go:125
+#: lxc/image.go:826 lxc/info.go:129
 #, c-format
 msgid   "Architecture: %s"
 msgstr  ""
 
-#: lxc/remote.go:259
+#: lxc/profile.go:162 lxc/profile.go:163
+msgid   "Assign sets of profiles to containers"
+msgstr  ""
+
+#: lxc/network.go:103
+msgid   "Attach network interfaces to containers"
+msgstr  ""
+
+#: lxc/network.go:176 lxc/network.go:177
+msgid   "Attach network interfaces to profiles"
+msgstr  ""
+
+#: lxc/network.go:104
+msgid   "Attach new network interfaces to containers"
+msgstr  ""
+
+#: lxc/storage_volume.go:121 lxc/storage_volume.go:122
+msgid   "Attach new storage volumes to containers"
+msgstr  ""
+
+#: lxc/storage_volume.go:200 lxc/storage_volume.go:201
+msgid   "Attach new storage volumes to profiles"
+msgstr  ""
+
+#: lxc/console.go:31
+msgid   "Attach to container consoles"
+msgstr  ""
+
+#: lxc/console.go:32
+msgid   "Attach to container consoles\n"
+        "\n"
+        "This command allows you to interact with the boot console of a container\n"
+        "as well as retrieve past log entries from it."
+msgstr  ""
+
+#: lxc/remote.go:308
 #, c-format
 msgid   "Authentication type '%s' not supported by server"
 msgstr  ""
 
-#: lxc/image.go:632
+#: lxc/image.go:864
 #, c-format
 msgid   "Auto update: %s"
 msgstr  ""
 
-#: lxc/image.go:707
+#: lxc/network.go:283
+#, c-format
+msgid   "Bad key/value pair: %s"
+msgstr  ""
+
+#: lxc/copy.go:110 lxc/init.go:118 lxc/publish.go:175 lxc/storage.go:123 lxc/storage_volume.go:468
+#, c-format
+msgid   "Bad key=value pair: %s"
+msgstr  ""
+
+#: lxc/image.go:677
 #, c-format
 msgid   "Bad property: %s"
 msgstr  ""
 
-#: lxc/action.go:133
+#: lxc/action.go:212
 msgid   "Both --all and container name given"
 msgstr  ""
 
-#: lxc/info.go:218
+#: lxc/info.go:222
 msgid   "Bytes received"
 msgstr  ""
 
-#: lxc/info.go:219
+#: lxc/info.go:223
 msgid   "Bytes sent"
 msgstr  ""
 
-#: lxc/operation.go:156
+#: lxc/operation.go:155
 msgid   "CANCELABLE"
 msgstr  ""
 
-#: lxc/config.go:403
+#: lxc/config_trust.go:175
 msgid   "COMMON NAME"
 msgstr  ""
 
-#: lxc/info.go:182
+#: lxc/info.go:186
 msgid   "CPU usage (in seconds)"
 msgstr  ""
 
-#: lxc/info.go:186
+#: lxc/info.go:190
 msgid   "CPU usage:"
 msgstr  ""
 
-#: lxc/operation.go:157
+#: lxc/operation.go:156
 msgid   "CREATED"
 msgstr  ""
 
-#: lxc/list.go:478
+#: lxc/list.go:465
 msgid   "CREATED AT"
 msgstr  ""
 
-#: lxc/image.go:631
+#: lxc/image.go:863
 #, c-format
 msgid   "Cached: %s"
 msgstr  ""
 
-#: lxc/file.go:501
+#: lxc/image.go:175
+msgid   "Can't provide a name for the target image"
+msgstr  ""
+
+#: lxc/file.go:261
 msgid   "Can't pull a directory without --recursive"
 msgstr  ""
 
-#: lxc/config.go:210 lxc/network.go:619
+#: lxc/config.go:400 lxc/network.go:969
 #, c-format
 msgid   "Can't read from stdin: %s"
 msgstr  ""
 
-#: lxc/rename.go:41
+#: lxc/remote.go:577
+msgid   "Can't remove the default remote"
+msgstr  ""
+
+#: lxc/list.go:481
+msgid   "Can't specify --fast with --columns"
+msgstr  ""
+
+#: lxc/rename.go:48
 msgid   "Can't specify a different remote for rename."
 msgstr  ""
 
-#: lxc/config.go:223
-#, c-format
-msgid   "Can't unset key '%s', it's not currently set"
+#: lxc/list.go:493
+msgid   "Can't specify column L when not clustered"
 msgstr  ""
 
-#: lxc/config.go:265 lxc/config.go:291
-#, c-format
-msgid   "Can't unset key '%s', it's not currently set."
+#: lxc/file.go:399
+msgid   "Can't supply uid/gid/mode in recursive mode"
 msgstr  ""
 
-#: lxc/profile.go:546 lxc/storage.go:696
-msgid   "Cannot provide container name to list"
+#: lxc/config.go:413
+#, c-format
+msgid   "Can't unset key '%s', it's not currently set"
 msgstr  ""
 
-#: lxc/remote.go:203
+#: lxc/remote.go:252
 #, c-format
 msgid   "Certificate fingerprint: %s"
 msgstr  ""
 
-#: lxc/remote.go:315
+#: lxc/remote.go:364
 msgid   "Client certificate stored at server: "
 msgstr  ""
 
-#: lxc/image.go:175 lxc/image.go:176 lxc/list.go:135 lxc/list.go:136
+#: lxc/network.go:253 lxc/network.go:663 lxc/network.go:923 lxc/network.go:992 lxc/network.go:1054 lxc/storage.go:92 lxc/storage.go:331 lxc/storage.go:576 lxc/storage.go:649 lxc/storage.go:732 lxc/storage_volume.go:287 lxc/storage_volume.go:429 lxc/storage_volume.go:504 lxc/storage_volume.go:730 lxc/storage_volume.go:856 lxc/storage_volume.go:998 lxc/storage_volume.go:1028 lxc/storage_volume.go:1092 lxc/storage_volume.go:1175 lxc/storage_volume.go:1244
+msgid   "Cluster member name"
+msgstr  ""
+
+#: lxc/image.go:912 lxc/list.go:112
 msgid   "Columns"
 msgstr  ""
 
-#: lxc/help.go:53
-msgid   "Commands:"
+#: lxc/main.go:44
+msgid   "Command line client for LXD"
 msgstr  ""
 
-#: lxc/copy.go:37 lxc/copy.go:38 lxc/init.go:139 lxc/init.go:140
+#: lxc/main.go:45
+msgid   "Command line client for LXD\n"
+        "\n"
+        "All of LXD's features can be driven through the various commands below.\n"
+        "For help with any of those, simply call them with --help."
+msgstr  ""
+
+#: lxc/copy.go:39 lxc/init.go:42
 msgid   "Config key/value to apply to the new container"
 msgstr  ""
 
-#: lxc/config.go:821 lxc/config.go:886 lxc/config.go:1396 lxc/image.go:1191 lxc/network.go:445 lxc/profile.go:275 lxc/storage.go:647 lxc/storage.go:1209
+#: lxc/config.go:195 lxc/config.go:259 lxc/config_metadata.go:144 lxc/image.go:405 lxc/network.go:631 lxc/profile.go:490 lxc/storage.go:298 lxc/storage_volume.go:822
 #, c-format
 msgid   "Config parsing error: %s"
 msgstr  ""
 
-#: lxc/main.go:40
-msgid   "Connection refused; is LXD running?"
-msgstr  ""
-
-#: lxc/console.go:132
+#: lxc/console.go:141
 msgid   "Console log:"
 msgstr  ""
 
-#: lxc/publish.go:71
+#: lxc/publish.go:79
 msgid   "Container name is mandatory"
 msgstr  ""
 
-#: lxc/copy.go:243 lxc/init.go:321
+#: lxc/copy.go:260 lxc/init.go:229
 #, c-format
 msgid   "Container name is: %s"
 msgstr  ""
 
-#: lxc/publish.go:250
+#: lxc/publish.go:259
 #, c-format
 msgid   "Container published with fingerprint: %s"
 msgstr  ""
 
-#: lxc/copy.go:45 lxc/move.go:45
+#: lxc/copy.go:44 lxc/move.go:46
 msgid   "Copy a stateful container stateless"
 msgstr  ""
 
-#: lxc/image.go:178
+#: lxc/image.go:138
 msgid   "Copy aliases from source"
 msgstr  ""
 
-#: lxc/copy.go:44
+#: lxc/copy.go:34 lxc/copy.go:35
+msgid   "Copy containers within or in between LXD instances"
+msgstr  ""
+
+#: lxc/image.go:130
+msgid   "Copy images between servers"
+msgstr  ""
+
+#: lxc/image.go:131
+msgid   "Copy images between servers\n"
+        "\n"
+        "The auto-update flag instructs the server to keep this image up to date.\n"
+        "It requires the source to be an alias and for it to be public."
+msgstr  ""
+
+#: lxc/config_device.go:317 lxc/config_device.go:318
+msgid   "Copy profile inherited devices and override configuration keys"
+msgstr  ""
+
+#: lxc/profile.go:240 lxc/profile.go:241
+msgid   "Copy profiles"
+msgstr  ""
+
+#: lxc/storage_volume.go:282 lxc/storage_volume.go:283
+msgid   "Copy storage volumes"
+msgstr  ""
+
+#: lxc/copy.go:43
 msgid   "Copy the container without its snapshots"
 msgstr  ""
 
-#: lxc/image.go:449
+#: lxc/image.go:217
 #, c-format
 msgid   "Copying the image: %s"
 msgstr  ""
 
-#: lxc/storage.go:1134
+#: lxc/storage_volume.go:387
 #, c-format
 msgid   "Copying the storage volume: %s"
 msgstr  ""
 
-#: lxc/remote.go:218
+#: lxc/remote.go:267
 msgid   "Could not create server cert dir"
 msgstr  ""
 
-#: lxc/file.go:70 lxc/file.go:71
+#: lxc/image_alias.go:58 lxc/image_alias.go:59
+msgid   "Create aliases for existing images"
+msgstr  ""
+
+#: lxc/launch.go:21 lxc/launch.go:22
+msgid   "Create and start containers from images"
+msgstr  ""
+
+#: lxc/file.go:191 lxc/file.go:331
 msgid   "Create any directories necessary"
 msgstr  ""
 
-#: lxc/image.go:606 lxc/info.go:127
+#: lxc/snapshot.go:20
+msgid   "Create container snapshots"
+msgstr  ""
+
+#: lxc/snapshot.go:21
+msgid   "Create container snapshots\n"
+        "\n"
+        "When --stateful is used, LXD attempts to checkpoint the container's\n"
+        "running state, including process memory state, TCP connections, ..."
+msgstr  ""
+
+#: lxc/init.go:34 lxc/init.go:35
+msgid   "Create containers from images"
+msgstr  ""
+
+#: lxc/config_template.go:66 lxc/config_template.go:67
+msgid   "Create new container file templates"
+msgstr  ""
+
+#: lxc/storage_volume.go:425 lxc/storage_volume.go:426
+msgid   "Create new custom storage volumes"
+msgstr  ""
+
+#: lxc/network.go:249 lxc/network.go:250
+msgid   "Create new networks"
+msgstr  ""
+
+#: lxc/profile.go:296 lxc/profile.go:297
+msgid   "Create profiles"
+msgstr  ""
+
+#: lxc/storage.go:88 lxc/storage.go:89
+msgid   "Create storage pools"
+msgstr  ""
+
+#: lxc/image.go:832 lxc/info.go:131
 #, c-format
 msgid   "Created: %s"
 msgstr  ""
 
-#: lxc/init.go:200
+#: lxc/init.go:98
 #, c-format
 msgid   "Creating %s"
 msgstr  ""
 
-#: lxc/init.go:198
+#: lxc/init.go:96
 msgid   "Creating the container"
 msgstr  ""
 
-#: lxc/cluster.go:185
+#: lxc/cluster.go:121
 msgid   "DATABASE"
 msgstr  ""
 
-#: lxc/image.go:235 lxc/image.go:1138 lxc/list.go:479 lxc/network.go:579 lxc/operation.go:154 lxc/storage.go:732 lxc/storage.go:937
+#: lxc/image.go:925 lxc/image_alias.go:230 lxc/list.go:466 lxc/network.go:784 lxc/operation.go:153 lxc/storage.go:545 lxc/storage_volume.go:967
 msgid   "DESCRIPTION"
 msgstr  ""
 
-#: lxc/storage.go:733
+#: lxc/storage.go:546
 msgid   "DRIVER"
 msgstr  ""
 
-#: lxc/publish.go:39
+#: lxc/publish.go:41
 msgid   "Define a compression algorithm: for image or none"
 msgstr  ""
 
-#: lxc/config.go:977
+#: lxc/operation.go:53 lxc/operation.go:54
+msgid   "Delete a background operation (will attempt to cancel)"
+msgstr  ""
+
+#: lxc/config_template.go:109 lxc/config_template.go:110
+msgid   "Delete container file templates"
+msgstr  ""
+
+#: lxc/delete.go:29 lxc/delete.go:30
+msgid   "Delete containers and snapshots"
+msgstr  ""
+
+#: lxc/file.go:72 lxc/file.go:73
+msgid   "Delete files in containers"
+msgstr  ""
+
+#: lxc/image_alias.go:105 lxc/image_alias.go:106
+msgid   "Delete image aliases"
+msgstr  ""
+
+#: lxc/image.go:260 lxc/image.go:261
+msgid   "Delete images"
+msgstr  ""
+
+#: lxc/network.go:319 lxc/network.go:320
+msgid   "Delete networks"
+msgstr  ""
+
+#: lxc/profile.go:347 lxc/profile.go:348
+msgid   "Delete profiles"
+msgstr  ""
+
+#: lxc/storage.go:160 lxc/storage.go:161
+msgid   "Delete storage pools"
+msgstr  ""
+
+#: lxc/storage_volume.go:500 lxc/storage_volume.go:501
+msgid   "Delete storage volumes"
+msgstr  ""
+
+#: lxc/action.go:30 lxc/action.go:49 lxc/action.go:69 lxc/action.go:91 lxc/alias.go:23 lxc/alias.go:55 lxc/alias.go:99 lxc/alias.go:147 lxc/alias.go:198 lxc/cluster.go:26 lxc/cluster.go:59 lxc/cluster.go:142 lxc/cluster.go:192 lxc/cluster.go:238 lxc/config.go:29 lxc/config.go:88 lxc/config.go:289 lxc/config.go:355 lxc/config.go:452 lxc/config.go:560 lxc/config_device.go:24 lxc/config_device.go:76 lxc/config_device.go:179 lxc/config_device.go:252 lxc/config_device.go:318 lxc/config_device.go:405 lxc/config_device.go:493 lxc/config_device.go:582 lxc/config_device.go:650 lxc/config_metadata.go:29 lxc/config_metadata.go:54 lxc/config_metadata.go:176 lxc/config_template.go:30 lxc/config_template.go:67 lxc/config_template.go:110 lxc/config_template.go:152 lxc/config_template.go:236 lxc/config_template.go:298 lxc/config_trust.go:30 lxc/config_trust.go:59 lxc/config_trust.go:115 lxc/config_trust.go:197 lxc/console.go:32 lxc/copy.go:35 lxc/delete.go:30 lxc/exec.go:39 lxc/file.go:40 lxc/file.go:73 lxc/file.go:122 lxc/file.go:185 lxc/file.go:324 lxc/image.go:42 lxc/image.go:131 lxc/image.go:261 lxc/image.go:312 lxc/image.go:435 lxc/image.go:571 lxc/image.go:776 lxc/image.go:890 lxc/image.go:1212 lxc/image.go:1285 lxc/image_alias.go:26 lxc/image_alias.go:59 lxc/image_alias.go:106 lxc/image_alias.go:149 lxc/image_alias.go:250 lxc/info.go:29 lxc/init.go:35 lxc/launch.go:22 lxc/list.go:48 lxc/main.go:45 lxc/monitor.go:31 lxc/move.go:31 lxc/network.go:32 lxc/network.go:104 lxc/network.go:177 lxc/network.go:250 lxc/network.go:320 lxc/network.go:367 lxc/network.go:452 lxc/network.go:537 lxc/network.go:660 lxc/network.go:719 lxc/network.go:808 lxc/network.go:873 lxc/network.go:920 lxc/network.go:989 lxc/network.go:1051 lxc/operation.go:25 lxc/operation.go:54 lxc/operation.go:98 lxc/operation.go:174 lxc/profile.go:30 lxc/profile.go:102 lxc/profile.go:163 lxc/profile.go:241 lxc/profile.go:297 lxc/profile.go:348 lxc/profile.go:396 lxc/profile.go:520 lxc/profile.go:568 lxc/profile.go:632 lxc/profile.go:705 lxc/profile.go:753 lxc/profile.go:812 lxc/profile.go:866 lxc/publish.go:34 lxc/query.go:27 lxc/remote.go:34 lxc/remote.go:84 lxc/remote.go:380 lxc/remote.go:414 lxc/remote.go:487 lxc/remote.go:549 lxc/remote.go:598 lxc/remote.go:636 lxc/rename.go:20 lxc/restore.go:24 lxc/snapshot.go:21 lxc/storage.go:33 lxc/storage.go:89 lxc/storage.go:161 lxc/storage.go:208 lxc/storage.go:328 lxc/storage.go:383 lxc/storage.go:491 lxc/storage.go:573 lxc/storage.go:645 lxc/storage.go:729 lxc/storage_volume.go:34 lxc/storage_volume.go:122 lxc/storage_volume.go:201 lxc/storage_volume.go:283 lxc/storage_volume.go:426 lxc/storage_volume.go:501 lxc/storage_volume.go:561 lxc/storage_volume.go:643 lxc/storage_volume.go:724 lxc/storage_volume.go:853 lxc/storage_volume.go:918 lxc/storage_volume.go:994 lxc/storage_volume.go:1025 lxc/storage_volume.go:1089 lxc/storage_volume.go:1166 lxc/storage_volume.go:1241
+msgid   "Description"
+msgstr  ""
+
+#: lxc/network.go:366 lxc/network.go:367
+msgid   "Detach network interfaces from containers"
+msgstr  ""
+
+#: lxc/network.go:451 lxc/network.go:452
+msgid   "Detach network interfaces from profiles"
+msgstr  ""
+
+#: lxc/storage_volume.go:560 lxc/storage_volume.go:561
+msgid   "Detach storage volumes from containers"
+msgstr  ""
+
+#: lxc/storage_volume.go:642 lxc/storage_volume.go:643
+msgid   "Detach storage volumes from profiles"
+msgstr  ""
+
+#: lxc/config_device.go:163
 #, c-format
 msgid   "Device %s added to %s"
 msgstr  ""
 
-#: lxc/config.go:1272
+#: lxc/config_device.go:387
 #, c-format
 msgid   "Device %s overridden for %s"
 msgstr  ""
 
-#: lxc/config.go:1213
+#: lxc/config_device.go:476
 #, c-format
 msgid   "Device %s removed from %s"
 msgstr  ""
 
-#: lxc/utils.go:192 lxc/utils.go:216
+#: lxc/utils.go:133 lxc/utils.go:157
 #, c-format
 msgid   "Device already exists: %s"
 msgstr  ""
 
-#: lxc/image.go:1290
+#: lxc/image.go:586
 msgid   "Directory import is not available on this platform"
 msgstr  ""
 
-#: lxc/exec.go:71
+#: lxc/exec.go:55
 msgid   "Disable pseudo-terminal allocation"
 msgstr  ""
 
-#: lxc/exec.go:72
+#: lxc/exec.go:56
 msgid   "Disable stdin (reads from /dev/null)"
 msgstr  ""
 
-#: lxc/info.go:175
+#: lxc/info.go:179
 msgid   "Disk usage:"
 msgstr  ""
 
-#: lxc/list.go:648
+#: lxc/list.go:635
 msgid   "EPHEMERAL"
 msgstr  ""
 
-#: lxc/config.go:405
+#: lxc/config_trust.go:177
 msgid   "EXPIRY DATE"
 msgstr  ""
 
-#: lxc/main.go:52
-msgid   "Enable debug mode"
+#: lxc/config_template.go:151 lxc/config_template.go:152
+msgid   "Edit container file templates"
 msgstr  ""
 
-#: lxc/main.go:51
-msgid   "Enable verbose mode"
+#: lxc/config_metadata.go:53 lxc/config_metadata.go:54
+msgid   "Edit container metadata files"
 msgstr  ""
 
-#: lxc/exec.go:68
-msgid   "Environment variable to set (e.g. HOME=/home/foo)"
+#: lxc/config.go:87 lxc/config.go:88
+msgid   "Edit container or server configurations as YAML"
+msgstr  ""
+
+#: lxc/file.go:121 lxc/file.go:122
+msgid   "Edit files in containers"
+msgstr  ""
+
+#: lxc/image.go:311 lxc/image.go:312
+msgid   "Edit image properties"
+msgstr  ""
+
+#: lxc/network.go:536 lxc/network.go:537
+msgid   "Edit network configurations as YAML"
 msgstr  ""
 
-#: lxc/help.go:77
-msgid   "Environment:"
+#: lxc/profile.go:395 lxc/profile.go:396
+msgid   "Edit profile configurations as YAML"
 msgstr  ""
 
-#: lxc/copy.go:41 lxc/copy.go:42 lxc/init.go:143 lxc/init.go:144
+#: lxc/storage.go:207 lxc/storage.go:208
+msgid   "Edit storage pool configurations as YAML"
+msgstr  ""
+
+#: lxc/storage_volume.go:723 lxc/storage_volume.go:724
+msgid   "Edit storage volume configurations as YAML"
+msgstr  ""
+
+#: lxc/list.go:504
+#, c-format
+msgid   "Empty column entry (redundant, leading or trailing command) in '%s'"
+msgstr  ""
+
+#: lxc/exec.go:52
+msgid   "Environment variable to set (e.g. HOME=/home/foo)"
+msgstr  ""
+
+#: lxc/copy.go:41 lxc/init.go:44
 msgid   "Ephemeral container"
 msgstr  ""
 
-#: lxc/config.go:1446
+#: lxc/config_template.go:204
 #, c-format
 msgid   "Error updating template file: %s"
 msgstr  ""
 
-#: lxc/monitor.go:72
+#: lxc/monitor.go:48
 msgid   "Event type to listen for"
 msgstr  ""
 
-#: lxc/image.go:610
+#: lxc/exec.go:38
+msgid   "Execute commands in containers"
+msgstr  ""
+
+#: lxc/exec.go:39
+msgid   "Execute commands in containers\n"
+        "\n"
+        "The command is executed directly using exec, so there is no shell and\n"
+        "shell patterns (variables, file redirects, ...) won't be understood.\n"
+        "If you need a shell environment you need to execute the shell\n"
+        "executable, passing the shell commands as arguments, for example:\n"
+        "\n"
+        "  lxc exec <container> -- sh -c \"cd /tmp && pwd\"\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:838
 #, c-format
 msgid   "Expires: %s"
 msgstr  ""
 
-#: lxc/image.go:612
+#: lxc/image.go:840
 msgid   "Expires: never"
 msgstr  ""
 
-#: lxc/image.go:922
+#: lxc/image.go:434
+msgid   "Export and download images"
+msgstr  ""
+
+#: lxc/image.go:435
+msgid   "Export and download images\n"
+        "\n"
+        "The output target is optional and defaults to the working directory."
+msgstr  ""
+
+#: lxc/image.go:494
 #, c-format
 msgid   "Exporting the image: %s"
 msgstr  ""
 
-#: lxc/config.go:761
+#: lxc/config_template.go:279
 msgid   "FILENAME"
 msgstr  ""
 
-#: lxc/config.go:402 lxc/image.go:233 lxc/image.go:1137
+#: lxc/config_trust.go:174 lxc/image.go:923 lxc/image_alias.go:229
 msgid   "FINGERPRINT"
 msgstr  ""
 
-#: lxc/utils.go:261
+#: lxc/utils.go:202
 #, c-format
 msgid   "Failed to create alias %s"
 msgstr  ""
 
-#: lxc/manpage.go:62
-#, c-format
-msgid   "Failed to generate 'lxc.%s.1': %v"
-msgstr  ""
-
-#: lxc/manpage.go:55
-#, c-format
-msgid   "Failed to generate 'lxc.1': %v"
-msgstr  ""
-
-#: lxc/copy.go:238
+#: lxc/copy.go:255
 msgid   "Failed to get the new container name"
 msgstr  ""
 
-#: lxc/utils.go:251
+#: lxc/utils.go:192
 #, c-format
 msgid   "Failed to remove alias %s"
 msgstr  ""
 
-#: lxc/file.go:137
+#: lxc/file.go:609
 #, c-format
 msgid   "Failed to walk path for %s: %s"
 msgstr  ""
 
-#: lxc/list.go:138
+#: lxc/list.go:114
 msgid   "Fast mode (same as --columns=nsacPt)"
 msgstr  ""
 
-#: lxc/network.go:536 lxc/operation.go:121
+#: lxc/network.go:749 lxc/operation.go:126
 msgid   "Filtering isn't supported yet"
 msgstr  ""
 
-#: lxc/image.go:599
+#: lxc/image.go:824
 #, c-format
 msgid   "Fingerprint: %s"
 msgstr  ""
 
-#: lxc/exec.go:70
+#: lxc/exec.go:54
 msgid   "Force pseudo-terminal allocation"
 msgstr  ""
 
-#: lxc/cluster.go:42
-msgid   "Force removing a node, even if degraded"
+#: lxc/cluster.go:242
+msgid   "Force removing a member, even if degraded"
 msgstr  ""
 
-#: lxc/action.go:47 lxc/action.go:48
+#: lxc/action.go:121
 msgid   "Force the container to shutdown"
 msgstr  ""
 
-#: lxc/delete.go:34 lxc/delete.go:35
+#: lxc/delete.go:34
 msgid   "Force the removal of running containers"
 msgstr  ""
 
-#: lxc/main.go:53
+#: lxc/main.go:56
 msgid   "Force using the local unix socket"
 msgstr  ""
 
-#: lxc/image.go:181 lxc/list.go:137
+#: lxc/image.go:913 lxc/list.go:113
 msgid   "Format (csv|json|table|yaml)"
 msgstr  ""
 
-#: lxc/remote.go:166
+#: lxc/remote.go:211
 msgid   "Generating a client certificate. This may take a minute..."
 msgstr  ""
 
-#: lxc/network.go:513
+#: lxc/config_device.go:178 lxc/config_device.go:179
+msgid   "Get values for container device configuration keys"
+msgstr  ""
+
+#: lxc/config.go:288 lxc/config.go:289
+msgid   "Get values for container or server configuration keys"
+msgstr  ""
+
+#: lxc/network.go:659 lxc/network.go:660
+msgid   "Get values for network configuration keys"
+msgstr  ""
+
+#: lxc/profile.go:519 lxc/profile.go:520
+msgid   "Get values for profile configuration keys"
+msgstr  ""
+
+#: lxc/storage.go:327 lxc/storage.go:328
+msgid   "Get values for storage pool configuration keys"
+msgstr  ""
+
+#: lxc/storage_volume.go:852 lxc/storage_volume.go:853
+msgid   "Get values for storage volume configuration keys"
+msgstr  ""
+
+#: lxc/network.go:851
 msgid   "HOSTNAME"
 msgstr  ""
 
-#: lxc/operation.go:152
+#: lxc/operation.go:151
 msgid   "ID"
 msgstr  ""
 
-#: lxc/network.go:515
+#: lxc/network.go:853
 msgid   "IP ADDRESS"
 msgstr  ""
 
-#: lxc/list.go:475
+#: lxc/list.go:462
 msgid   "IPV4"
 msgstr  ""
 
-#: lxc/list.go:476
+#: lxc/list.go:463
 msgid   "IPV6"
 msgstr  ""
 
-#: lxc/config.go:404
+#: lxc/config_trust.go:176
 msgid   "ISSUE DATE"
 msgstr  ""
 
-#: lxc/main.go:171
+#: lxc/main.go:259
 msgid   "If this is your first time running LXD on this machine, you should also run: lxd init"
 msgstr  ""
 
-#: lxc/main.go:54
-msgid   "Ignore aliases when determining what command to run"
-msgstr  ""
-
-#: lxc/action.go:51
-msgid   "Ignore the container state (only for start)"
+#: lxc/action.go:117
+msgid   "Ignore the container state"
 msgstr  ""
 
-#: lxc/image.go:557
+#: lxc/image.go:1268
 msgid   "Image already up to date."
 msgstr  ""
 
-#: lxc/image.go:463
+#: lxc/image.go:231
 msgid   "Image copied successfully!"
 msgstr  ""
 
-#: lxc/image.go:982
+#: lxc/image.go:554
 msgid   "Image exported successfully!"
 msgstr  ""
 
-#: lxc/image.go:778
+#: lxc/image.go:284 lxc/image.go:1235
+msgid   "Image identifier missing"
+msgstr  ""
+
+#: lxc/image.go:352
+#, c-format
+msgid   "Image identifier missing: %s"
+msgstr  ""
+
+#: lxc/image.go:749
 #, c-format
 msgid   "Image imported with fingerprint: %s"
 msgstr  ""
 
-#: lxc/image.go:555
+#: lxc/image.go:1266
 msgid   "Image refreshed successfully!"
 msgstr  ""
 
-#: lxc/query.go:39
+#: lxc/image.go:571
+msgid   "Import image into the image store\n"
+        "\n"
+        "Directory import is only available on Linux and must be performed as root."
+msgstr  ""
+
+#: lxc/image.go:570
+msgid   "Import images into the image store"
+msgstr  ""
+
+#: lxc/query.go:38
 msgid   "Input data"
 msgstr  ""
 
-#: lxc/init.go:149
+#: lxc/init.go:47
 msgid   "Instance type"
 msgstr  ""
 
-#: lxc/remote.go:118
+#: lxc/remote.go:163
 #, c-format
 msgid   "Invalid URL scheme \"%s\" in \"%s\""
 msgstr  ""
 
-#: lxc/config.go:383
+#: lxc/config_trust.go:155
 msgid   "Invalid certificate"
 msgstr  ""
 
-#: lxc/init.go:32 lxc/init.go:37
-msgid   "Invalid configuration key"
-msgstr  ""
-
-#: lxc/file.go:560
+#: lxc/list.go:525
 #, c-format
-msgid   "Invalid path %s"
+msgid   "Invalid config key '%s' in '%s'"
 msgstr  ""
 
-#: lxc/remote.go:107
+#: lxc/list.go:520
 #, c-format
-msgid   "Invalid protocol: %s"
+msgid   "Invalid config key column format (too many fields): '%s'"
 msgstr  ""
 
-#: lxc/file.go:473
+#: lxc/image.go:1196 lxc/list.go:386
 #, c-format
-msgid   "Invalid source %s"
+msgid   "Invalid format %q"
 msgstr  ""
 
-#: lxc/file.go:250
+#: lxc/list.go:543
 #, c-format
-msgid   "Invalid target %s"
+msgid   "Invalid max width (must -1, 0 or a positive integer) '%s' in '%s'"
 msgstr  ""
 
-#: lxc/info.go:156
-msgid   "Ips:"
-msgstr  ""
-
-#: lxc/image.go:179
-msgid   "Keep the image up to date after initial copy"
-msgstr  ""
-
-#: lxc/list.go:480
-msgid   "LAST USED AT"
+#: lxc/list.go:540
+#, c-format
+msgid   "Invalid max width (must be an integer) '%s' in '%s'"
 msgstr  ""
 
-#: lxc/list.go:502
-msgid   "LOCATION"
+#: lxc/list.go:531
+#, c-format
+msgid   "Invalid name in '%s', empty string is only allowed when defining maxWidth"
 msgstr  ""
 
-#: lxc/main.go:38
-msgid   "LXD socket not found; is LXD installed and running?"
+#: lxc/main.go:341
+msgid   "Invalid number of arguments"
 msgstr  ""
 
-#: lxc/image.go:615
+#: lxc/file.go:97
 #, c-format
-msgid   "Last used: %s"
-msgstr  ""
-
-#: lxc/image.go:617
-msgid   "Last used: never"
+msgid   "Invalid path %s"
 msgstr  ""
 
-#: lxc/info.go:119
+#: lxc/remote.go:152
 #, c-format
-msgid   "Location: %s"
+msgid   "Invalid protocol: %s"
 msgstr  ""
 
-#: lxc/info.go:271
-msgid   "Log:"
+#: lxc/file.go:243
+#, c-format
+msgid   "Invalid source %s"
 msgstr  ""
 
-#: lxc/network.go:514
-msgid   "MAC ADDRESS"
+#: lxc/file.go:352
+#, c-format
+msgid   "Invalid target %s"
 msgstr  ""
 
-#: lxc/network.go:578
-msgid   "MANAGED"
+#: lxc/info.go:160
+msgid   "Ips:"
 msgstr  ""
 
-#: lxc/cluster.go:187
-msgid   "MESSAGE"
+#: lxc/image.go:139
+msgid   "Keep the image up to date after initial copy"
 msgstr  ""
 
-#: lxc/image.go:177
-msgid   "Make image public"
+#: lxc/list.go:467
+msgid   "LAST USED AT"
 msgstr  ""
 
-#: lxc/publish.go:35
-msgid   "Make the image public"
+#: lxc/list.go:489
+msgid   "LOCATION"
 msgstr  ""
 
-#: lxc/info.go:193
-msgid   "Memory (current)"
+#: lxc/cluster.go:94
+msgid   "LXD server isn't part of a cluster"
 msgstr  ""
 
-#: lxc/info.go:197
-msgid   "Memory (peak)"
+#: lxc/image.go:844
+#, c-format
+msgid   "Last used: %s"
 msgstr  ""
 
-#: lxc/info.go:209
-msgid   "Memory usage:"
+#: lxc/image.go:846
+msgid   "Last used: never"
 msgstr  ""
 
-#: lxc/monitor.go:73
-msgid   "Minimum level for log messages"
+#: lxc/network.go:807 lxc/network.go:808
+msgid   "List DHCP leases"
 msgstr  ""
 
-#: lxc/utils.go:143
-msgid   "Missing summary."
+#: lxc/alias.go:98 lxc/alias.go:99
+msgid   "List aliases"
 msgstr  ""
 
-#: lxc/network.go:303 lxc/network.go:356 lxc/storage.go:435 lxc/storage.go:565
-msgid   "More than one device matches, specify the device name."
+#: lxc/cluster.go:58 lxc/cluster.go:59
+msgid   "List all the cluster members"
 msgstr  ""
 
-#: lxc/file.go:460
-msgid   "More than one file to download, but target is not a directory"
+#: lxc/network.go:718 lxc/network.go:719
+msgid   "List available networks"
 msgstr  ""
 
-#: lxc/move.go:43
-msgid   "Move the container without its snapshots"
+#: lxc/storage.go:490 lxc/storage.go:491
+msgid   "List available storage pools"
 msgstr  ""
 
-#: lxc/storage.go:1128
-#, c-format
-msgid   "Moving the storage volume: %s"
+#: lxc/operation.go:97 lxc/operation.go:98
+msgid   "List background operations"
 msgstr  ""
 
-#: lxc/image.go:1292
-msgid   "Must run as root to import from directory"
+#: lxc/config_device.go:251 lxc/config_device.go:252
+msgid   "List container devices"
 msgstr  ""
 
-#: lxc/action.go:74
-msgid   "Must supply container name for: "
+#: lxc/config_template.go:235 lxc/config_template.go:236
+msgid   "List container file templates"
 msgstr  ""
 
-#: lxc/cluster.go:183 lxc/list.go:481 lxc/network.go:576 lxc/profile.go:573 lxc/remote.go:409 lxc/storage.go:731 lxc/storage.go:936
-msgid   "NAME"
+#: lxc/list.go:47
+msgid   "List containers"
 msgstr  ""
 
-#: lxc/network.go:558 lxc/operation.go:139 lxc/remote.go:380 lxc/remote.go:385
-msgid   "NO"
+#: lxc/list.go:48
+msgid   "List containers\n"
+        "\n"
+        "Default column layout: ns46tS\n"
+        "Fast column layout: nsacPt\n"
+        "\n"
+        "== Filters ==\n"
+        "A single keyword like \"web\" which will list any container with a name starting by \"web\".\n"
+        "A regular expression on the container name. (e.g. .*web.*01$).\n"
+        "A key/value pair referring to a configuration item. For those, the\n"
+        "namespace can be abbreviated to the smallest unambiguous identifier.\n"
+        "\n"
+        "Examples:\n"
+        "  - \"user.blah=abc\" will list all containers with the \"blah\" user property set to \"abc\".\n"
+        "  - \"u.blah=abc\" will do the same\n"
+        "  - \"security.privileged=true\" will list all privileged containers\n"
+        "  - \"s.privileged=true\" will do the same\n"
+        "\n"
+        "A regular expression matching a configuration item or its value. (e.g. volatile.eth0.hwaddr=00:16:3e:.*).\n"
+        "\n"
+        "== Columns ==\n"
+        "The -c option takes a comma separated list of arguments that control\n"
+        "which container attributes to output when displaying in table or csv\n"
+        "format.\n"
+        "\n"
+        "Column arguments are either pre-defined shorthand chars (see below),\n"
+        "or (extended) config keys.\n"
+        "\n"
+        "Commas between consecutive shorthand chars are optional.\n"
+        "\n"
+        "Pre-defined column shorthand chars:\n"
+        "  4 - IPv4 address\n"
+        "  6 - IPv6 address\n"
+        "  a - Architecture\n"
+        "  b - Storage pool\n"
+        "  c - Creation date\n"
+        "  d - Description\n"
+        "  l - Last used date\n"
+        "  n - Name\n"
+        "  N - Number of Processes\n"
+        "  p - PID of the container's init process\n"
+        "  P - Profiles\n"
+        "  s - State\n"
+        "  S - Number of snapshots\n"
+        "  t - Type (persistent or ephemeral)\n"
+        "  L - Location of the container (e.g. its node)\n"
+        "\n"
+        "Custom columns are defined with \"key[:name][:maxWidth]\":\n"
+        "  KEY: The (extended) config key to display\n"
+        "  NAME: Name to display in the column header.\n"
+        "  Defaults to the key if not specified or empty.\n"
+        "\n"
+        "  MAXWIDTH: Max width of the column (longer results are truncated).\n"
+        "  Defaults to -1 (unlimited). Use 0 to limit to the column header size."
 msgstr  ""
 
-#: lxc/storage.go:941
-msgid   "NODE"
+#: lxc/image_alias.go:148
+msgid   "List image aliases"
 msgstr  ""
 
-#: lxc/info.go:117
-#, c-format
-msgid   "Name: %s"
+#: lxc/image_alias.go:149
+msgid   "List image aliases\n"
+        "\n"
+        "Filters may be part of the image hash or part of the image alias name.\n"
 msgstr  ""
 
-#: lxc/network.go:276
-#, c-format
-msgid   "Network %s created"
+#: lxc/image.go:889
+msgid   "List images"
 msgstr  ""
 
-#: lxc/network.go:393
-#, c-format
-msgid   "Network %s deleted"
+#: lxc/image.go:890
+msgid   "List images\n"
+        "\n"
+        "Filters may be of the <key>=<value> form for property based filtering,\n"
+        "or part of the image hash or part of the image alias name.\n"
+        "\n"
+        "The -c option takes a (optionally comma-separated) list of arguments\n"
+        "that control which image attributes to output when displaying in table\n"
+        "or csv format.\n"
+        "\n"
+        "Default column layout is: lfpdasu\n"
+        "\n"
+        "Column shorthand chars:\n"
+        "\n"
+        "    l - Shortest image alias (and optionally number of other aliases)\n"
+        "    L - Newline-separated list of all image aliases\n"
+        "    f - Fingerprint\n"
+        "    p - Whether image is public\n"
+        "    d - Description\n"
+        "    a - Architecture\n"
+        "    s - Size"
 msgstr  ""
 
-#: lxc/network.go:274
-#, c-format
-msgid   "Network %s pending on node %s"
+#: lxc/profile.go:567 lxc/profile.go:568
+msgid   "List profiles"
 msgstr  ""
 
-#: lxc/network.go:470
-#, c-format
-msgid   "Network %s renamed to %s"
+#: lxc/storage_volume.go:917 lxc/storage_volume.go:918
+msgid   "List storage volumes"
 msgstr  ""
 
-#: lxc/init.go:145 lxc/init.go:146
-msgid   "Network name"
+#: lxc/remote.go:413 lxc/remote.go:414
+msgid   "List the available remotes"
 msgstr  ""
 
-#: lxc/info.go:226
-msgid   "Network usage:"
+#: lxc/config_trust.go:114 lxc/config_trust.go:115
+msgid   "List trusted clients"
 msgstr  ""
 
-#: lxc/image.go:180 lxc/publish.go:36
-msgid   "New alias to define at target"
+#: lxc/operation.go:24 lxc/operation.go:25
+msgid   "List, show and delete background operations"
 msgstr  ""
 
-#: lxc/config.go:414
-msgid   "No certificate provided to add"
+#: lxc/info.go:123
+#, c-format
+msgid   "Location: %s"
 msgstr  ""
 
-#: lxc/network.go:312 lxc/network.go:365
-msgid   "No device found for this network"
+#: lxc/info.go:275
+msgid   "Log:"
 msgstr  ""
 
-#: lxc/storage.go:444 lxc/storage.go:574
-msgid   "No device found for this storage volume."
+#: lxc/network.go:852
+msgid   "MAC ADDRESS"
 msgstr  ""
 
-#: lxc/config.go:446
-msgid   "No fingerprint specified."
+#: lxc/network.go:783
+msgid   "MANAGED"
 msgstr  ""
 
-#: lxc/cluster.go:143
-#, c-format
-msgid   "Node %s removed"
+#: lxc/cluster.go:123
+msgid   "MESSAGE"
 msgstr  ""
 
-#: lxc/cluster.go:119
-#, c-format
-msgid   "Node %s renamed to %s"
+#: lxc/image.go:137 lxc/image.go:576
+msgid   "Make image public"
 msgstr  ""
 
-#: lxc/copy.go:46 lxc/init.go:150 lxc/move.go:46 lxc/network.go:105 lxc/storage.go:165
-msgid   "Node name"
+#: lxc/publish.go:38
+msgid   "Make the image public"
 msgstr  ""
 
-#: lxc/storage.go:388 lxc/storage.go:481
-msgid   "Only \"custom\" volumes can be attached to containers."
+#: lxc/network.go:32
+msgid   "Manage an attach containers to networks"
 msgstr  ""
 
-#: lxc/remote.go:101
-msgid   "Only https URLs are supported for simplestreams"
+#: lxc/network.go:31
+msgid   "Manage and attach containers to networks"
 msgstr  ""
 
-#: lxc/image.go:688
-msgid   "Only https:// is supported for remote image import."
+#: lxc/cluster.go:25 lxc/cluster.go:26
+msgid   "Manage cluster members"
 msgstr  ""
 
-#: lxc/network.go:421 lxc/network.go:605
-msgid   "Only managed networks can be modified."
+#: lxc/alias.go:22 lxc/alias.go:23
+msgid   "Manage command aliases"
 msgstr  ""
 
-#: lxc/operation.go:85
-#, c-format
-msgid   "Operation %s deleted"
+#: lxc/config.go:28 lxc/config.go:29
+msgid   "Manage container and server configuration options"
 msgstr  ""
 
-#: lxc/help.go:71 lxc/main.go:139 lxc/main.go:195
-msgid   "Options:"
+#: lxc/config_device.go:23 lxc/config_device.go:24
+msgid   "Manage container devices"
 msgstr  ""
 
-#: lxc/exec.go:69
-msgid   "Override the terminal mode (auto, interactive or non-interactive)"
+#: lxc/config_template.go:29 lxc/config_template.go:30
+msgid   "Manage container file templates"
 msgstr  ""
 
-#: lxc/list.go:651
-msgid   "PERSISTENT"
+#: lxc/config_metadata.go:28 lxc/config_metadata.go:29
+msgid   "Manage container metadata files"
 msgstr  ""
 
-#: lxc/list.go:483
-msgid   "PID"
+#: lxc/file.go:39 lxc/file.go:40
+msgid   "Manage files in containers"
 msgstr  ""
 
-#: lxc/list.go:482
-msgid   "PROCESSES"
+#: lxc/image_alias.go:25 lxc/image_alias.go:26
+msgid   "Manage image aliases"
 msgstr  ""
 
-#: lxc/list.go:484
-msgid   "PROFILES"
+#: lxc/image.go:41
+msgid   "Manage images"
 msgstr  ""
 
-#: lxc/remote.go:411
-msgid   "PROTOCOL"
+#: lxc/image.go:42
+msgid   "Manage images\n"
+        "\n"
+        "In LXD containers are created from images. Those images were themselves\n"
+        "either generated from an existing container or downloaded from an image\n"
+        "server.\n"
+        "\n"
+        "When using remote images, LXD will automatically cache images for you\n"
+        "and remove them upon expiration.\n"
+        "\n"
+        "The image unique identifier is the hash (sha-256) of its representation\n"
+        "as a compressed tarball (or for split images, the concatenation of the\n"
+        "metadata and rootfs tarballs).\n"
+        "\n"
+        "Images can be referenced by their full hash, shortest unique partial\n"
+        "hash or alias name (if one is set)."
 msgstr  ""
 
-#: lxc/image.go:234 lxc/remote.go:413
-msgid   "PUBLIC"
+#: lxc/profile.go:29 lxc/profile.go:30
+msgid   "Manage profiles"
 msgstr  ""
 
-#: lxc/info.go:220
-msgid   "Packets received"
+#: lxc/storage.go:32 lxc/storage.go:33
+msgid   "Manage storage pools and volumes"
 msgstr  ""
 
-#: lxc/info.go:221
-msgid   "Packets sent"
+#: lxc/storage_volume.go:33
+msgid   "Manage storage volumes"
 msgstr  ""
 
-#: lxc/help.go:78
-msgid   "Path to an alternate client configuration directory"
+#: lxc/storage_volume.go:34
+msgid   "Manage storage volumes\n"
+        "\n"
+        "Unless specified through a prefix, all volume operations affect \"custom\" (user created) volumes."
 msgstr  ""
 
-#: lxc/help.go:79
-msgid   "Path to an alternate server directory"
+#: lxc/remote.go:33 lxc/remote.go:34
+msgid   "Manage the list of remote servers"
 msgstr  ""
 
-#: lxc/main.go:240
-msgid   "Pause containers."
+#: lxc/config_trust.go:29 lxc/config_trust.go:30
+msgid   "Manage trusted clients"
 msgstr  ""
 
-#: lxc/main.go:42
-msgid   "Permission denied, are you in the lxd group?"
+#: lxc/info.go:197
+msgid   "Memory (current)"
 msgstr  ""
 
-#: lxc/info.go:138
-#, c-format
-msgid   "Pid: %d"
+#: lxc/info.go:201
+msgid   "Memory (peak)"
 msgstr  ""
 
-#: lxc/network.go:446 lxc/profile.go:276 lxc/storage.go:648 lxc/storage.go:1210
-msgid   "Press enter to open the editor again"
+#: lxc/info.go:213
+msgid   "Memory usage:"
 msgstr  ""
 
-#: lxc/config.go:822 lxc/config.go:887 lxc/config.go:1397 lxc/config.go:1447 lxc/image.go:1192
-msgid   "Press enter to start the editor again"
+#: lxc/monitor.go:49
+msgid   "Minimum level for log messages"
 msgstr  ""
 
-#: lxc/monitor.go:71
-msgid   "Pretty rendering"
+#: lxc/config_metadata.go:102 lxc/config_metadata.go:200 lxc/config_template.go:91 lxc/config_template.go:134 lxc/config_template.go:176 lxc/config_template.go:260 lxc/config_template.go:322 lxc/profile.go:197 lxc/profile.go:656
+msgid   "Missing container name"
 msgstr  ""
 
-#: lxc/help.go:73
-msgid   "Print debug information"
+#: lxc/profile.go:126
+msgid   "Missing container.name name"
 msgstr  ""
 
-#: lxc/help.go:72
-msgid   "Print less common commands"
+#: lxc/config_device.go:103 lxc/config_device.go:203 lxc/config_device.go:276 lxc/config_device.go:342 lxc/config_device.go:429 lxc/config_device.go:517 lxc/config_device.go:606
+msgid   "Missing name"
 msgstr  ""
 
-#: lxc/query.go:37
-msgid   "Print the raw response"
+#: lxc/network.go:128 lxc/network.go:201 lxc/network.go:344 lxc/network.go:391 lxc/network.go:476 lxc/network.go:581 lxc/network.go:686 lxc/network.go:832 lxc/network.go:897 lxc/network.go:946 lxc/network.go:1015
+msgid   "Missing network name"
 msgstr  ""
 
-#: lxc/help.go:74
-msgid   "Print verbose information"
+#: lxc/storage.go:185 lxc/storage.go:252 lxc/storage.go:353 lxc/storage.go:408 lxc/storage.go:603 lxc/storage.go:677 lxc/storage_volume.go:146 lxc/storage_volume.go:225 lxc/storage_volume.go:451 lxc/storage_volume.go:526 lxc/storage_volume.go:585 lxc/storage_volume.go:667 lxc/storage_volume.go:766 lxc/storage_volume.go:878 lxc/storage_volume.go:942 lxc/storage_volume.go:1050 lxc/storage_volume.go:1114 lxc/storage_volume.go:1197
+msgid   "Missing pool name"
 msgstr  ""
 
-#: lxc/info.go:162
-#, c-format
-msgid   "Processes: %d"
+#: lxc/profile.go:321 lxc/profile.go:372 lxc/profile.go:444 lxc/profile.go:544 lxc/profile.go:729 lxc/profile.go:777 lxc/profile.go:836
+msgid   "Missing profile name"
 msgstr  ""
 
-#: lxc/profile.go:362
-#, c-format
-msgid   "Profile %s added to %s"
+#: lxc/profile.go:266
+msgid   "Missing source profile name"
 msgstr  ""
 
-#: lxc/profile.go:226
-#, c-format
-msgid   "Profile %s created"
+#: lxc/storage_volume.go:311
+msgid   "Missing source volume name"
 msgstr  ""
 
-#: lxc/profile.go:310
-#, c-format
-msgid   "Profile %s deleted"
+#: lxc/file.go:446
+msgid   "Missing target directory"
 msgstr  ""
 
-#: lxc/profile.go:397
-#, c-format
-msgid   "Profile %s removed from %s"
+#: lxc/monitor.go:30
+msgid   "Monitor a local or remote LXD server"
 msgstr  ""
 
-#: lxc/profile.go:300
-#, c-format
-msgid   "Profile %s renamed to %s"
+#: lxc/monitor.go:31
+msgid   "Monitor a local or remote LXD server\n"
+        "\n"
+        "By default the monitor will listen to all message types."
 msgstr  ""
 
-#: lxc/copy.go:39 lxc/copy.go:40 lxc/init.go:141 lxc/init.go:142
-msgid   "Profile to apply to the new container"
+#: lxc/network.go:411 lxc/network.go:496 lxc/storage_volume.go:605 lxc/storage_volume.go:686
+msgid   "More than one device matches, specify the device name."
 msgstr  ""
 
-#: lxc/profile.go:339
-#, c-format
-msgid   "Profiles %s applied to %s"
+#: lxc/file.go:224
+msgid   "More than one file to download, but target is not a directory"
 msgstr  ""
 
-#: lxc/info.go:136
-#, c-format
-msgid   "Profiles: %s"
+#: lxc/move.go:30 lxc/move.go:31
+msgid   "Move containers within or in between LXD instances"
 msgstr  ""
 
-#: lxc/image.go:619
-msgid   "Properties:"
+#: lxc/storage_volume.go:993 lxc/storage_volume.go:994
+msgid   "Move storage volumes between pools"
 msgstr  ""
 
-#: lxc/remote.go:72
-msgid   "Public image server"
+#: lxc/move.go:44
+msgid   "Move the container without its snapshots"
 msgstr  ""
 
-#: lxc/image.go:602
+#: lxc/storage_volume.go:375
 #, c-format
-msgid   "Public: %s"
+msgid   "Moving the storage volume: %s"
 msgstr  ""
 
-#: lxc/file.go:68 lxc/file.go:69
-msgid   "Recursively push or pull files"
+#: lxc/image.go:588
+msgid   "Must run as root to import from directory"
 msgstr  ""
 
-#: lxc/image.go:529
-#, c-format
-msgid   "Refreshing the image: %s"
+#: lxc/action.go:147
+msgid   "Must supply container name for: "
 msgstr  ""
 
-#: lxc/remote.go:69
-msgid   "Remote admin password"
+#: lxc/cluster.go:119 lxc/list.go:468 lxc/network.go:781 lxc/profile.go:613 lxc/remote.go:463 lxc/storage.go:544 lxc/storage_volume.go:966
+msgid   "NAME"
 msgstr  ""
 
-#: lxc/utils/cancel.go:34
-msgid   "Remote operation canceled by user"
+#: lxc/network.go:763 lxc/operation.go:138 lxc/remote.go:434 lxc/remote.go:439
+msgid   "NO"
 msgstr  ""
 
-#: lxc/info.go:122
-#, c-format
-msgid   "Remote: %s"
+#: lxc/storage_volume.go:971
+msgid   "NODE"
 msgstr  ""
 
-#: lxc/delete.go:42
+#: lxc/info.go:121
 #, c-format
-msgid   "Remove %s (yes/no): "
+msgid   "Name: %s"
 msgstr  ""
 
-#: lxc/storage.go:1247
+#: lxc/network.go:303
 #, c-format
-msgid   "Renamed storage volume from \"%s\" to \"%s\""
+msgid   "Network %s created"
 msgstr  ""
 
-#: lxc/delete.go:36 lxc/delete.go:37
-msgid   "Require user confirmation"
+#: lxc/network.go:353
+#, c-format
+msgid   "Network %s deleted"
 msgstr  ""
 
-#: lxc/info.go:159
-msgid   "Resources:"
+#: lxc/network.go:301
+#, c-format
+msgid   "Network %s pending on node %s"
 msgstr  ""
 
-#: lxc/main.go:248
-msgid   "Restart containers."
+#: lxc/network.go:906
+#, c-format
+msgid   "Network %s renamed to %s"
 msgstr  ""
 
-#: lxc/console.go:38
-msgid   "Retrieve the container's console log"
+#: lxc/init.go:45
+msgid   "Network name"
 msgstr  ""
 
-#: lxc/init.go:293
-#, c-format
-msgid   "Retrieving image: %s"
+#: lxc/info.go:230
+msgid   "Network usage:"
 msgstr  ""
 
-#: lxc/action.go:52
-msgid   "Run command against all containers"
+#: lxc/publish.go:39
+msgid   "New alias to define at target"
 msgstr  ""
 
-#: lxc/image.go:237
-msgid   "SIZE"
+#: lxc/image.go:140 lxc/image.go:577
+msgid   "New aliases to add to the image"
 msgstr  ""
 
-#: lxc/list.go:485
-msgid   "SNAPSHOTS"
+#: lxc/network.go:420 lxc/network.go:505
+msgid   "No device found for this network"
 msgstr  ""
 
-#: lxc/storage.go:738
-msgid   "SOURCE"
+#: lxc/storage_volume.go:614 lxc/storage_volume.go:695
+msgid   "No device found for this storage volume."
 msgstr  ""
 
-#: lxc/cluster.go:186 lxc/list.go:486 lxc/network.go:583 lxc/storage.go:736
-msgid   "STATE"
+#: lxc/cluster.go:268
+#, c-format
+msgid   "Node %s removed"
 msgstr  ""
 
-#: lxc/remote.go:414
-msgid   "STATIC"
+#: lxc/cluster.go:221
+#, c-format
+msgid   "Node %s renamed to %s"
 msgstr  ""
 
-#: lxc/operation.go:155
-msgid   "STATUS"
+#: lxc/copy.go:45 lxc/init.go:48 lxc/move.go:47
+msgid   "Node name"
 msgstr  ""
 
-#: lxc/list.go:488
-msgid   "STORAGE POOL"
+#: lxc/storage_volume.go:164 lxc/storage_volume.go:243
+msgid   "Only \"custom\" volumes can be attached to containers."
 msgstr  ""
 
-#: lxc/remote.go:71
-msgid   "Server authentication type (tls or macaroons)"
+#: lxc/remote.go:146
+msgid   "Only https URLs are supported for simplestreams"
 msgstr  ""
 
-#: lxc/remote.go:211
-msgid   "Server certificate NACKed by user"
+#: lxc/image.go:658
+msgid   "Only https:// is supported for remote image import."
 msgstr  ""
 
-#: lxc/remote.go:311
-msgid   "Server doesn't trust us after authentication"
+#: lxc/network.go:607 lxc/network.go:960
+msgid   "Only managed networks can be modified."
 msgstr  ""
 
-#: lxc/remote.go:70
-msgid   "Server protocol (lxd or simplestreams)"
+#: lxc/operation.go:83
+#, c-format
+msgid   "Operation %s deleted"
 msgstr  ""
 
-#: lxc/file.go:66
-msgid   "Set the file's gid on push"
+#: lxc/exec.go:53
+msgid   "Override the terminal mode (auto, interactive or non-interactive)"
 msgstr  ""
 
-#: lxc/file.go:67
-msgid   "Set the file's perms on push"
+#: lxc/list.go:638
+msgid   "PERSISTENT"
 msgstr  ""
 
-#: lxc/file.go:65
-msgid   "Set the file's uid on push"
+#: lxc/list.go:470
+msgid   "PID"
 msgstr  ""
 
-#: lxc/help.go:29
-msgid   "Show all commands (not just interesting ones)"
+#: lxc/list.go:469
+msgid   "PROCESSES"
 msgstr  ""
 
-#: lxc/help.go:75
-msgid   "Show client version"
+#: lxc/list.go:471
+msgid   "PROFILES"
 msgstr  ""
 
-#: lxc/info.go:40
-msgid   "Show the container's last 100 log lines?"
+#: lxc/remote.go:465
+msgid   "PROTOCOL"
 msgstr  ""
 
-#: lxc/config.go:36
-msgid   "Show the expanded configuration"
+#: lxc/image.go:924 lxc/remote.go:467
+msgid   "PUBLIC"
 msgstr  ""
 
-#: lxc/info.go:41
-msgid   "Show the resources available to the server"
+#: lxc/info.go:224
+msgid   "Packets received"
 msgstr  ""
 
-#: lxc/storage.go:163
-msgid   "Show the resources available to the storage pool"
+#: lxc/info.go:225
+msgid   "Packets sent"
 msgstr  ""
 
-#: lxc/storage.go:164
-msgid   "Show the used and free space in bytes"
+#: lxc/action.go:48 lxc/action.go:49
+msgid   "Pause containers"
 msgstr  ""
 
-#: lxc/image.go:600
+#: lxc/info.go:142
 #, c-format
-msgid   "Size: %.2fMB"
+msgid   "Pid: %d"
 msgstr  ""
 
-#: lxc/info.go:240
-msgid   "Snapshots:"
+#: lxc/network.go:632 lxc/profile.go:491 lxc/storage.go:299 lxc/storage_volume.go:823
+msgid   "Press enter to open the editor again"
 msgstr  ""
 
-#: lxc/action.go:163
-#, c-format
-msgid   "Some containers failed to %s"
+#: lxc/config.go:196 lxc/config.go:260 lxc/config_metadata.go:145 lxc/config_template.go:205 lxc/image.go:406
+msgid   "Press enter to start the editor again"
 msgstr  ""
 
-#: lxc/image.go:634
-msgid   "Source:"
+#: lxc/monitor.go:47
+msgid   "Pretty rendering"
 msgstr  ""
 
-#: lxc/main.go:258
-msgid   "Start containers."
+#: lxc/main.go:55
+msgid   "Print help"
 msgstr  ""
 
-#: lxc/launch.go:59
-#, c-format
-msgid   "Starting %s"
+#: lxc/query.go:36
+msgid   "Print the raw response"
 msgstr  ""
 
-#: lxc/info.go:130
-#, c-format
-msgid   "Status: %s"
+#: lxc/main.go:54
+msgid   "Print version number"
 msgstr  ""
 
-#: lxc/main.go:264
-msgid   "Stop containers."
+#: lxc/info.go:166
+#, c-format
+msgid   "Processes: %d"
 msgstr  ""
 
-#: lxc/publish.go:37 lxc/publish.go:38
-msgid   "Stop the container if currently running"
+#: lxc/main_aliases.go:123 lxc/main_aliases.go:131
+#, c-format
+msgid   "Processing aliases failed: %s\n"
 msgstr  ""
 
-#: lxc/publish.go:136
-msgid   "Stopping container failed!"
+#: lxc/profile.go:147
+#, c-format
+msgid   "Profile %s added to %s"
 msgstr  ""
 
-#: lxc/delete.go:121
+#: lxc/profile.go:333
 #, c-format
-msgid   "Stopping the container failed: %s"
+msgid   "Profile %s created"
 msgstr  ""
 
-#: lxc/storage.go:538
+#: lxc/profile.go:381
 #, c-format
-msgid   "Storage pool %s created"
+msgid   "Profile %s deleted"
 msgstr  ""
 
-#: lxc/storage.go:598
+#: lxc/profile.go:690
 #, c-format
-msgid   "Storage pool %s deleted"
+msgid   "Profile %s removed from %s"
 msgstr  ""
 
-#: lxc/storage.go:536
+#: lxc/profile.go:738
 #, c-format
-msgid   "Storage pool %s pending on node %s"
+msgid   "Profile %s renamed to %s"
 msgstr  ""
 
-#: lxc/init.go:147 lxc/init.go:148
-msgid   "Storage pool name"
+#: lxc/copy.go:40 lxc/init.go:43
+msgid   "Profile to apply to the new container"
 msgstr  ""
 
-#: lxc/storage.go:980
+#: lxc/profile.go:225
 #, c-format
-msgid   "Storage volume %s created"
+msgid   "Profiles %s applied to %s"
 msgstr  ""
 
-#: lxc/storage.go:1000
+#: lxc/info.go:140
 #, c-format
-msgid   "Storage volume %s deleted"
+msgid   "Profiles: %s"
 msgstr  ""
 
-#: lxc/storage.go:1135
-msgid   "Storage volume copied successfully!"
+#: lxc/image.go:849
+msgid   "Properties:"
 msgstr  ""
 
-#: lxc/storage.go:1129
-msgid   "Storage volume moved successfully!"
+#: lxc/remote.go:92
+msgid   "Public image server"
 msgstr  ""
 
-#: lxc/action.go:50
-msgid   "Store the container state (only for stop)"
+#: lxc/image.go:827
+#, c-format
+msgid   "Public: %s"
 msgstr  ""
 
-#: lxc/info.go:201
-msgid   "Swap (current)"
+#: lxc/publish.go:33 lxc/publish.go:34
+msgid   "Publish containers as images"
 msgstr  ""
 
-#: lxc/info.go:205
-msgid   "Swap (peak)"
+#: lxc/file.go:184 lxc/file.go:185
+msgid   "Pull files from containers"
 msgstr  ""
 
-#: lxc/alias.go:85
-msgid   "TARGET"
+#: lxc/file.go:323 lxc/file.go:324
+msgid   "Push files into containers"
 msgstr  ""
 
-#: lxc/list.go:487 lxc/network.go:516 lxc/network.go:577 lxc/operation.go:153 lxc/storage.go:935
-msgid   "TYPE"
+#: lxc/file.go:192 lxc/file.go:330
+msgid   "Recursively transfer files"
 msgstr  ""
 
-#: lxc/delete.go:105
-msgid   "The container is currently running, stop it first or pass --force."
+#: lxc/image.go:1211 lxc/image.go:1212
+msgid   "Refresh images"
 msgstr  ""
 
-#: lxc/publish.go:101
-msgid   "The container is currently running. Use --force to have it stopped and restarted."
+#: lxc/image.go:1239
+#, c-format
+msgid   "Refreshing the image: %s"
 msgstr  ""
 
-#: lxc/init.go:372
-msgid   "The container you are starting doesn't have any network attached to it."
+#: lxc/remote.go:515
+#, c-format
+msgid   "Remote %s already exists"
 msgstr  ""
 
-#: lxc/config.go:944 lxc/config.go:961 lxc/config.go:1240
-msgid   "The device already exists"
+#: lxc/remote.go:507 lxc/remote.go:569 lxc/remote.go:618 lxc/remote.go:656
+#, c-format
+msgid   "Remote %s doesn't exist"
 msgstr  ""
 
-#: lxc/config.go:1007 lxc/config.go:1019 lxc/config.go:1055 lxc/config.go:1073 lxc/config.go:1119 lxc/config.go:1136 lxc/config.go:1179 lxc/config.go:1197
-msgid   "The device doesn't exist"
+#: lxc/remote.go:116
+#, c-format
+msgid   "Remote %s exists as <%s>"
 msgstr  ""
 
-#: lxc/init.go:356
+#: lxc/remote.go:511 lxc/remote.go:573 lxc/remote.go:660
 #, c-format
-msgid   "The local image '%s' couldn't be found, trying '%s:%s' instead."
+msgid   "Remote %s is static and cannot be modified"
+msgstr  ""
+
+#: lxc/remote.go:89
+msgid   "Remote admin password"
 msgstr  ""
 
-#: lxc/init.go:352
+#: lxc/utils/cancel.go:34
+msgid   "Remote operation canceled by user"
+msgstr  ""
+
+#: lxc/info.go:126
 #, c-format
-msgid   "The local image '%s' couldn't be found, trying '%s:' instead."
+msgid   "Remote: %s"
 msgstr  ""
 
-#: lxc/action.go:35
-msgid   "The opposite of \"lxc pause\" is \"lxc start\"."
+#: lxc/delete.go:42
+#, c-format
+msgid   "Remove %s (yes/no): "
 msgstr  ""
 
-#: lxc/config.go:1245
-msgid   "The profile device doesn't exist"
+#: lxc/cluster.go:237 lxc/cluster.go:238
+msgid   "Remove a member from the cluster"
 msgstr  ""
 
-#: lxc/network.go:317 lxc/network.go:370 lxc/storage.go:449 lxc/storage.go:579
-msgid   "The specified device doesn't exist"
+#: lxc/alias.go:197 lxc/alias.go:198
+msgid   "Remove aliases"
 msgstr  ""
 
-#: lxc/network.go:321 lxc/network.go:374
-msgid   "The specified device doesn't match the network"
+#: lxc/config_device.go:404 lxc/config_device.go:405
+msgid   "Remove container devices"
 msgstr  ""
 
-#: lxc/publish.go:74
-msgid   "There is no \"image name\".  Did you want an alias?"
+#: lxc/profile.go:631 lxc/profile.go:632
+msgid   "Remove profiles from containers"
 msgstr  ""
 
-#: lxc/help.go:47
-msgid   "This is the LXD command line client.\n"
-        "\n"
-        "All of LXD's features can be driven through the various commands below.\n"
-        "For help with any of those, simply call them with --help."
+#: lxc/remote.go:548 lxc/remote.go:549
+msgid   "Remove remotes"
 msgstr  ""
 
-#: lxc/action.go:46
-msgid   "Time to wait for the container before killing it"
+#: lxc/config_trust.go:196 lxc/config_trust.go:197
+msgid   "Remove trusted clients"
 msgstr  ""
 
-#: lxc/image.go:603
-msgid   "Timestamps:"
+#: lxc/cluster.go:191 lxc/cluster.go:192
+msgid   "Rename a cluster member"
 msgstr  ""
 
-#: lxc/init.go:374
-msgid   "To attach a network to a container, use: lxc network attach"
+#: lxc/alias.go:146 lxc/alias.go:147 lxc/image_alias.go:249 lxc/image_alias.go:250
+msgid   "Rename aliases"
 msgstr  ""
 
-#: lxc/init.go:373
-msgid   "To create a new network, use: lxc network create"
+#: lxc/rename.go:19 lxc/rename.go:20
+msgid   "Rename containers and snapshots"
 msgstr  ""
 
-#: lxc/console.go:173
-msgid   "To detach from the console, press: <ctrl>+a q"
+#: lxc/network.go:872 lxc/network.go:873
+msgid   "Rename networks"
 msgstr  ""
 
-#: lxc/main.go:172
-msgid   "To start your first container, try: lxc launch ubuntu:16.04"
+#: lxc/profile.go:704 lxc/profile.go:705
+msgid   "Rename profiles"
 msgstr  ""
 
-#: lxc/copy.go:43 lxc/move.go:44
-msgid   "Transfer mode. One of pull (default), push or relay."
+#: lxc/remote.go:486 lxc/remote.go:487
+msgid   "Rename remotes"
 msgstr  ""
 
-#: lxc/copy.go:212
-#, c-format
-msgid   "Transferring container: %s"
+#: lxc/storage_volume.go:1024 lxc/storage_volume.go:1025
+msgid   "Rename storage volumes"
 msgstr  ""
 
-#: lxc/image.go:717
+#: lxc/storage_volume.go:1073
 #, c-format
-msgid   "Transferring image: %s"
+msgid   "Renamed storage volume from \"%s\" to \"%s\""
 msgstr  ""
 
-#: lxc/action.go:108 lxc/launch.go:77
-#, c-format
-msgid   "Try `lxc info --show-log %s` for more info"
+#: lxc/delete.go:35
+msgid   "Require user confirmation"
 msgstr  ""
 
-#: lxc/info.go:132
-msgid   "Type: ephemeral"
+#: lxc/info.go:163
+msgid   "Resources:"
 msgstr  ""
 
-#: lxc/info.go:134
-msgid   "Type: persistent"
+#: lxc/action.go:68
+msgid   "Restart containers"
 msgstr  ""
 
-#: lxc/image.go:238
-msgid   "UPLOAD DATE"
+#: lxc/action.go:69
+msgid   "Restart containers\n"
+        "\n"
+        "The opposite of \"lxc pause\" is \"lxc start\"."
 msgstr  ""
 
-#: lxc/cluster.go:184 lxc/remote.go:410
-msgid   "URL"
+#: lxc/restore.go:23
+msgid   "Restore containers from snapshots"
 msgstr  ""
 
-#: lxc/network.go:580 lxc/profile.go:574 lxc/storage.go:740 lxc/storage.go:938
-msgid   "USED BY"
+#: lxc/restore.go:24
+msgid   "Restore containers from snapshots\n"
+        "\n"
+        "If --stateful is passed, then the running state will be restored too."
 msgstr  ""
 
-#: lxc/manpage.go:36
-msgid   "Unable to find help2man."
+#: lxc/console.go:39
+msgid   "Retrieve the container's console log"
 msgstr  ""
 
-#: lxc/file.go:124
+#: lxc/init.go:201
 #, c-format
-msgid   "Unknown file type '%s'"
+msgid   "Retrieving image: %s"
 msgstr  ""
 
-#: lxc/image.go:608
-#, c-format
-msgid   "Uploaded: %s"
+#: lxc/action.go:112
+msgid   "Run command against all containers"
 msgstr  ""
 
-#: lxc/action.go:38
-#, c-format
-msgid   "Usage: lxc %s [--all] [<remote>:]<container> [[<remote>:]<container>...]\n"
-        "\n"
-        "%s%s"
+#: lxc/image.go:927
+msgid   "SIZE"
 msgstr  ""
 
-#: lxc/help.go:45
-msgid   "Usage: lxc <command> [options]"
+#: lxc/list.go:472
+msgid   "SNAPSHOTS"
 msgstr  ""
 
-#: lxc/alias.go:22
-msgid   "Usage: lxc alias <subcommand> [options]\n"
-        "\n"
-        "Manage command aliases.\n"
-        "\n"
-        "lxc alias add <alias> <target>\n"
-        "    Add a new alias <alias> pointing to <target>.\n"
-        "\n"
-        "lxc alias remove <alias>\n"
-        "    Remove the alias <alias>.\n"
-        "\n"
-        "lxc alias list\n"
-        "    List all the aliases.\n"
-        "\n"
-        "lxc alias rename <old alias> <new alias>\n"
-        "    Rename remote <old alias> to <new alias>."
+#: lxc/storage.go:551
+msgid   "SOURCE"
 msgstr  ""
 
-#: lxc/cluster.go:23
-msgid   "Usage: lxc cluster <subcommand> [options]\n"
-        "\n"
-        "Manage cluster nodes.\n"
-        "\n"
-        "lxc cluster list [<remote>:]\n"
-        "    List all nodes in the cluster.\n"
-        "\n"
-        "lxc cluster show [<remote>:]<node>\n"
-        "    Show details of a node.\n"
-        "\n"
-        "lxc cluster rename [<remote>:]<node> <new-name>\n"
-        "    Rename a cluster node.\n"
-        "\n"
-        "lxc cluster delete [<remote>:]<node> [--force]\n"
-        "    Delete a node from the cluster."
+#: lxc/cluster.go:122 lxc/list.go:473 lxc/network.go:788 lxc/storage.go:549
+msgid   "STATE"
 msgstr  ""
 
-#: lxc/config.go:85
-msgid   "Usage: lxc config <subcommand> [options]\n"
-        "\n"
-        "Change container or server configuration options.\n"
-        "\n"
-        "*Container configuration*\n"
-        "\n"
-        "lxc config get [<remote>:][container] <key>\n"
-        "    Get container or server configuration key.\n"
-        "\n"
-        "lxc config set [<remote>:][container] <key> <value>\n"
-        "    Set container or server configuration key.\n"
-        "\n"
-        "lxc config unset [<remote>:][container] <key>\n"
-        "    Unset container or server configuration key.\n"
-        "\n"
-        "lxc config show [<remote>:][container] [--expanded]\n"
-        "    Show container or server configuration.\n"
-        "\n"
-        "lxc config edit [<remote>:][container]\n"
-        "    Edit configuration, either by launching external editor or reading STDIN.\n"
-        "\n"
-        "*Container metadata*\n"
-        "\n"
-        "lxc config metadata show [<remote>:][container]\n"
-        "    Show the container metadata.yaml content.\n"
-        "\n"
-        "lxc config metadata edit [<remote>:][container]\n"
-        "    Edit the container metadata.yaml, either by launching external editor or reading STDIN.\n"
-        "\n"
-        "*Container templates*\n"
-        "\n"
-        "lxc config template list [<remote>:][container]\n"
-        "    List the names of template files for a container.\n"
-        "\n"
-        "lxc config template show [<remote>:][container] [template]\n"
-        "    Show the content of a template file for a container.\n"
-        "\n"
-        "lxc config template create [<remote>:][container] [template]\n"
-        "    Add an empty template file for a container.\n"
-        "\n"
-        "lxc config template edit [<remote>:][container] [template]\n"
-        "    Edit the content of a template file for a container, either by launching external editor or reading STDIN.\n"
-        "\n"
-        "lxc config template delete [<remote>:][container] [template]\n"
-        "    Delete a template file for a container.\n"
-        "\n"
-        "\n"
-        "*Device management*\n"
-        "\n"
-        "lxc config device add [<remote>:]<container> <device> <type> [key=value...]\n"
-        "    Add a device to a container.\n"
-        "\n"
-        "lxc config device get [<remote>:]<container> <device> <key>\n"
-        "    Get a device property.\n"
-        "\n"
-        "lxc config device set [<remote>:]<container> <device> <key> <value>\n"
-        "    Set a device property.\n"
-        "\n"
-        "lxc config device unset [<remote>:]<container> <device> <key>\n"
-        "    Unset a device property.\n"
-        "\n"
-        "lxc config device override [<remote>:]<container> <device> [key=value...]\n"
-        "    Copy a profile inherited device into local container config.\n"
-        "\n"
-        "lxc config device list [<remote>:]<container>\n"
-        "    List devices for container.\n"
-        "\n"
-        "lxc config device show [<remote>:]<container>\n"
-        "    Show full device details for container.\n"
-        "\n"
-        "lxc config device remove [<remote>:]<container> <name>...\n"
-        "    Remove device from container.\n"
-        "\n"
-        "*Client trust store management*\n"
-        "\n"
-        "lxc config trust list [<remote>:]\n"
-        "    List all trusted certs.\n"
-        "\n"
-        "lxc config trust add [<remote>:] <certfile.crt>\n"
-        "    Add certfile.crt to trusted hosts.\n"
-        "\n"
-        "lxc config trust remove [<remote>:] [hostname|fingerprint]\n"
-        "    Remove the cert from trusted hosts.\n"
-        "\n"
-        "*Examples*\n"
-        "\n"
-        "cat config.yaml | lxc config edit <container>\n"
-        "    Update the container configuration from config.yaml.\n"
-        "\n"
-        "lxc config device add [<remote>:]container1 <device-name> disk source=/share/c1 path=opt\n"
-        "    Will mount the host's /share/c1 onto /opt in the container.\n"
-        "\n"
-        "lxc config set [<remote>:]<container> limits.cpu 2\n"
-        "    Will set a CPU limit of \"2\" for the container.\n"
-        "\n"
-        "lxc config set core.https_address [::]:8443\n"
-        "    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
-        "\n"
-        "lxc config set core.trust_password blah\n"
-        "    Will set the server's trust password to blah."
+#: lxc/remote.go:468
+msgid   "STATIC"
 msgstr  ""
 
-#: lxc/console.go:31
-msgid   "Usage: lxc console [<remote>:]<container> [-l]\n"
-        "\n"
-        "Interact with the container's console device and log."
+#: lxc/operation.go:154
+msgid   "STATUS"
 msgstr  ""
 
-#: lxc/copy.go:30
-msgid   "Usage: lxc copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>] [--ephemeral|e] [--profile|-p <profile>...] [--config|-c <key=value>...] [--container-only] [--target <node>]\n"
-        "\n"
-        "Copy containers within or in between LXD instances."
+#: lxc/list.go:475
+msgid   "STORAGE POOL"
 msgstr  ""
 
-#: lxc/delete.go:27
-msgid   "Usage: lxc delete [<remote>:]<container>[/<snapshot>] [[<remote>:]<container>[/<snapshot>]...]\n"
-        "\n"
-        "Delete containers and snapshots."
+#: lxc/query.go:26 lxc/query.go:27
+msgid   "Send a raw query to LXD"
 msgstr  ""
 
-#: lxc/exec.go:53
-msgid   "Usage: lxc exec [<remote>:]<container> [-t] [-T] [-n] [--mode=auto|interactive|non-interactive] [--env KEY=VALUE...] [--] <command line>\n"
-        "\n"
-        "Execute commands in containers.\n"
-        "\n"
-        "The command is executed directly using exec, so there is no shell and shell patterns (variables, file redirects, ...)\n"
-        "won't be understood. If you need a shell environment you need to execute the shell executable, passing the shell commands\n"
-        "as arguments, for example:\n"
-        "\n"
-        "    lxc exec <container> -- sh -c \"cd /tmp && pwd\"\n"
-        "\n"
-        "Mode defaults to non-interactive, interactive mode is selected if both stdin AND stdout are terminals (stderr is ignored)."
+#: lxc/remote.go:91
+msgid   "Server authentication type (tls or macaroons)"
 msgstr  ""
 
-#: lxc/file.go:39
-msgid   "Usage: lxc file <subcommand> [options]\n"
-        "\n"
-        "Manage files in containers.\n"
-        "\n"
-        "lxc file pull [-r|--recursive] [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...] <target path>\n"
-        "    Pull files from containers.\n"
-        "\n"
-        "lxc file push [-r|--recursive] [-p|--create-dirs] [--uid=UID] [--gid=GID] [--mode=MODE] <source path> [<source path>...] [<remote>:]<container>/<path>\n"
-        "    Push files into containers.\n"
-        "\n"
-        "lxc file delete [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...]\n"
-        "    Delete files in containers.\n"
-        "\n"
-        "lxc file edit [<remote>:]<container>/<path>\n"
-        "    Edit files in containers using the default text editor.\n"
-        "\n"
-        "*Examples*\n"
-        "lxc file push /etc/hosts foo/etc/hosts\n"
-        "   To push /etc/hosts into the container \"foo\".\n"
-        "\n"
-        "lxc file pull foo/etc/hosts .\n"
-        "   To pull /etc/hosts from the container and write it to the current directory."
+#: lxc/remote.go:260
+msgid   "Server certificate NACKed by user"
 msgstr  ""
 
-#: lxc/finger.go:15
-msgid   "Usage: lxc finger [<remote>:]\n"
-        "\n"
-        "Check if the LXD server is alive."
+#: lxc/remote.go:360
+msgid   "Server doesn't trust us after authentication"
 msgstr  ""
 
-#: lxc/help.go:22
-msgid   "Usage: lxc help [--all]\n"
-        "\n"
-        "Help page for the LXD client."
+#: lxc/remote.go:90
+msgid   "Server protocol (lxd or simplestreams)"
 msgstr  ""
 
-#: lxc/image.go:73
-msgid   "Usage: lxc image <subcommand> [options]\n"
-        "\n"
-        "Manipulate container images.\n"
-        "\n"
-        "In LXD containers are created from images. Those images were themselves\n"
-        "either generated from an existing container or downloaded from an image\n"
-        "server.\n"
-        "\n"
-        "When using remote images, LXD will automatically cache images for you\n"
-        "and remove them upon expiration.\n"
-        "\n"
-        "The image unique identifier is the hash (sha-256) of its representation\n"
-        "as a compressed tarball (or for split images, the concatenation of the\n"
-        "metadata and rootfs tarballs).\n"
-        "\n"
-        "Images can be referenced by their full hash, shortest unique partial\n"
-        "hash or alias name (if one is set).\n"
-        "\n"
-        "\n"
-        "lxc image import <tarball>|<dir> [<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) or an image directory into the LXD image store.\n"
-        "    Directory import is only available on Linux and must be performed as root.\n"
-        "\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"
-        "    Delete one or more images from the LXD image store.\n"
-        "\n"
-        "lxc image refresh [<remote>:]<image> [[<remote>:]<image>...]\n"
-        "    Refresh one or more images from its parent remote.\n"
-        "\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"
-        "    The target may be an existing directory, file name, or \"-\" to specify\n"
-        "    stdout.  The target MUST be a directory when exporting a split image.\n"
-        "    If the target is a directory, the image's name (each part's name for\n"
-        "    split images) as found in the database will be used for the exported\n"
-        "    image.  If the target is a file (not a directory and not stdout), then\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"
-        "    Print everything LXD knows about a given image.\n"
-        "\n"
-        "lxc image list [<remote>:] [filter] [--format csv|json|table|yaml] [-c <columns>]\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"
-        "    The -c option takes a (optionally comma-separated) list of arguments that\n"
-        "    control which image attributes to output when displaying in table or csv\n"
-        "    format.\n"
-        "\n"
-        "    Default column layout is: lfpdasu\n"
-        "\n"
-        "    Column shorthand chars:\n"
-        "\n"
-        "        l - Shortest image alias (and optionally number of other aliases)\n"
-        "\n"
-        "        L - Newline-separated list of all image aliases\n"
-        "\n"
-        "        f - Fingerprint\n"
-        "\n"
-        "        p - Whether image is public\n"
-        "\n"
-        "        d - Description\n"
-        "\n"
-        "        a - Architecture\n"
-        "\n"
-        "        s - Size\n"
-        "\n"
-        "        u - Upload date\n"
-        "\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"
-        "    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"
-        "    Create a new alias for an existing image.\n"
-        "\n"
-        "lxc image alias rename [<remote>:]<alias> <new-name>\n"
-        "    Rename an alias.\n"
-        "\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."
+#: lxc/config_device.go:492 lxc/config_device.go:493
+msgid   "Set container device configuration keys"
 msgstr  ""
 
-#: lxc/info.go:27
-msgid   "Usage: lxc info [<remote>:][<container>] [--show-log] [--resources]\n"
-        "\n"
-        "Show container or server information.\n"
-        "\n"
-        "lxc info [<remote>:]<container> [--show-log]\n"
-        "    For container information.\n"
-        "\n"
-        "lxc info [<remote>:] [--resources]\n"
-        "    For LXD server information."
+#: lxc/config.go:354 lxc/config.go:355
+msgid   "Set container or server configuration keys"
 msgstr  ""
 
-#: lxc/init.go:79
-msgid   "Usage: lxc init [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n <network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target <node>]\n"
-        "\n"
-        "Create containers from images.\n"
-        "\n"
-        "Not specifying -p will result in the default profile.\n"
-        "Specifying \"-p\" with no argument will result in no profile.\n"
-        "\n"
-        "Examples:\n"
-        "    lxc init ubuntu:16.04 u1"
+#: lxc/network.go:919 lxc/network.go:920
+msgid   "Set network configuration keys"
 msgstr  ""
 
-#: lxc/launch.go:20
-msgid   "Usage: lxc launch [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n <network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target <node>]\n"
-        "\n"
-        "Create and start containers from images.\n"
-        "\n"
-        "Not specifying -p will result in the default profile.\n"
-        "Specifying \"-p\" with no argument will result in no profile.\n"
-        "\n"
-        "Examples:\n"
-        "    lxc launch ubuntu:16.04 u1"
+#: lxc/profile.go:752 lxc/profile.go:753
+msgid   "Set profile configuration keys"
 msgstr  ""
 
-#: lxc/list.go:45
-msgid   "Usage: lxc list [<remote>:] [filters] [--format csv|json|table|yaml] [-c <columns>] [--fast]\n"
-        "\n"
-        "List the existing containers.\n"
-        "\n"
-        "Default column layout: ns46tS\n"
-        "Fast column layout: nsacPt\n"
-        "\n"
-        "*Filters*\n"
-        "A single keyword like \"web\" which will list any container with a name starting by \"web\".\n"
-        "\n"
-        "A regular expression on the container name. (e.g. .*web.*01$).\n"
-        "\n"
-        "A key/value pair referring to a configuration item. For those, the namespace can be abbreviated to the smallest unambiguous identifier.\n"
-        "	- \"user.blah=abc\" will list all containers with the \"blah\" user property set to \"abc\".\n"
-        "\n"
-        "	- \"u.blah=abc\" will do the same\n"
-        "\n"
-        "	- \"security.privileged=true\" will list all privileged containers\n"
-        "\n"
-        "	- \"s.privileged=true\" will do the same\n"
-        "\n"
-        "A regular expression matching a configuration item or its value. (e.g. volatile.eth0.hwaddr=00:16:3e:.*).\n"
-        "\n"
-        "*Columns*\n"
-        "The -c option takes a comma separated list of arguments that control\n"
-        "which container attributes to output when displaying in table or csv\n"
-        "format.\n"
-        "\n"
-        "Column arguments are either pre-defined shorthand chars (see below),\n"
-        "or (extended) config keys.\n"
-        "\n"
-        "Commas between consecutive shorthand chars are optional.\n"
-        "\n"
-        "Pre-defined column shorthand chars:\n"
-        "\n"
-        "	4 - IPv4 address\n"
-        "\n"
-        "	6 - IPv6 address\n"
-        "\n"
-        "	a - Architecture\n"
-        "\n"
-        "	b - Storage pool\n"
-        "\n"
-        "	c - Creation date\n"
-        "\n"
-        "	d - Description\n"
-        "\n"
-        "	l - Last used date\n"
-        "\n"
-        "	n - Name\n"
-        "\n"
-        "	N - Number of Processes\n"
-        "\n"
-        "	p - PID of the container's init process\n"
-        "\n"
-        "	P - Profiles\n"
-        "\n"
-        "	s - State\n"
-        "\n"
-        "	S - Number of snapshots\n"
-        "\n"
-        "	t - Type (persistent or ephemeral)\n"
-        "\n"
-        "	L - Location of the container (e.g. its node)\n"
-        "\n"
-        "Custom columns are defined with \"key[:name][:maxWidth]\":\n"
-        "\n"
-        "	KEY: The (extended) config key to display\n"
-        "\n"
-        "	NAME: Name to display in the column header.\n"
-        "	Defaults to the key if not specified or empty.\n"
-        "\n"
-        "	MAXWIDTH: Max width of the column (longer results are truncated).\n"
-        "	Defaults to -1 (unlimited). Use 0 to limit to the column header size.\n"
-        "\n"
-        "*Examples*\n"
-        "lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:MAC\n"
-        "	Shows a list of containers using the \"NAME\", \"BASE IMAGE\", \"STATE\", \"IPV4\",\n"
-        "	\"IPV6\" and \"MAC\" columns.\n"
+#: lxc/storage.go:572 lxc/storage.go:573
+msgid   "Set storage pool configuration keys"
+msgstr  ""
+
+#: lxc/storage_volume.go:1088 lxc/storage_volume.go:1089
+msgid   "Set storage volume configuration keys"
+msgstr  ""
+
+#: lxc/remote.go:635 lxc/remote.go:636
+msgid   "Set the URL for the remote"
+msgstr  ""
+
+#: lxc/remote.go:597 lxc/remote.go:598
+msgid   "Set the default remote"
+msgstr  ""
+
+#: lxc/file.go:333
+msgid   "Set the file's gid on push"
+msgstr  ""
+
+#: lxc/file.go:334
+msgid   "Set the file's perms on push"
+msgstr  ""
+
+#: lxc/file.go:332
+msgid   "Set the file's uid on push"
+msgstr  ""
+
+#: lxc/main.go:57
+msgid   "Show all debug messages"
+msgstr  ""
+
+#: lxc/main.go:58
+msgid   "Show all information messages"
+msgstr  ""
+
+#: lxc/config_metadata.go:175 lxc/config_metadata.go:176
+msgid   "Show container metadata files"
+msgstr  ""
+
+#: lxc/config.go:451 lxc/config.go:452
+msgid   "Show container or server configurations"
+msgstr  ""
+
+#: lxc/info.go:28 lxc/info.go:29
+msgid   "Show container or server information"
+msgstr  ""
+
+#: lxc/config_template.go:297 lxc/config_template.go:298
+msgid   "Show content of container file templates"
+msgstr  ""
+
+#: lxc/cluster.go:141 lxc/cluster.go:142
+msgid   "Show details of a cluster member"
+msgstr  ""
+
+#: lxc/operation.go:173 lxc/operation.go:174
+msgid   "Show details on a background operation"
+msgstr  ""
+
+#: lxc/config_device.go:581 lxc/config_device.go:582
+msgid   "Show full device configuration for containers or profiles"
+msgstr  ""
+
+#: lxc/image.go:1284 lxc/image.go:1285
+msgid   "Show image properties"
+msgstr  ""
+
+#: lxc/main.go:61
+msgid   "Show less common commands"
+msgstr  ""
+
+#: lxc/network.go:988 lxc/network.go:989
+msgid   "Show network configurations"
+msgstr  ""
+
+#: lxc/profile.go:811 lxc/profile.go:812
+msgid   "Show profile configurations"
+msgstr  ""
+
+#: lxc/storage.go:644 lxc/storage.go:645
+msgid   "Show storage pool configurations and resources"
+msgstr  ""
+
+#: lxc/storage_volume.go:1165
+msgid   "Show storage volum configurations"
+msgstr  ""
+
+#: lxc/storage_volume.go:1166
+msgid   "Show storage volume configurations"
+msgstr  ""
+
+#: lxc/info.go:39
+msgid   "Show the container's last 100 log lines?"
+msgstr  ""
+
+#: lxc/remote.go:379 lxc/remote.go:380
+msgid   "Show the default remote"
+msgstr  ""
+
+#: lxc/config.go:455
+msgid   "Show the expanded configuration"
+msgstr  ""
+
+#: lxc/info.go:40
+msgid   "Show the resources available to the server"
+msgstr  ""
+
+#: lxc/storage.go:648
+msgid   "Show the resources available to the storage pool"
+msgstr  ""
+
+#: lxc/storage.go:386
+msgid   "Show the used and free space in bytes"
+msgstr  ""
+
+#: lxc/image.go:775 lxc/image.go:776
+msgid   "Show useful information about images"
+msgstr  ""
+
+#: lxc/storage.go:382 lxc/storage.go:383
+msgid   "Show useful information about storage pools"
+msgstr  ""
+
+#: lxc/image.go:825
+#, c-format
+msgid   "Size: %.2fMB"
+msgstr  ""
+
+#: lxc/info.go:244
+msgid   "Snapshots:"
+msgstr  ""
+
+#: lxc/action.go:242
+#, c-format
+msgid   "Some containers failed to %s"
+msgstr  ""
+
+#: lxc/image.go:867
+msgid   "Source:"
+msgstr  ""
+
+#: lxc/action.go:29 lxc/action.go:30
+msgid   "Start containers"
+msgstr  ""
+
+#: lxc/launch.go:62
+#, c-format
+msgid   "Starting %s"
+msgstr  ""
+
+#: lxc/info.go:134
+#, c-format
+msgid   "Status: %s"
+msgstr  ""
+
+#: lxc/action.go:90 lxc/action.go:91
+msgid   "Stop containers"
+msgstr  ""
+
+#: lxc/publish.go:40
+msgid   "Stop the container if currently running"
+msgstr  ""
+
+#: lxc/publish.go:144
+msgid   "Stopping container failed!"
+msgstr  ""
+
+#: lxc/delete.go:120
+#, c-format
+msgid   "Stopping the container failed: %s"
+msgstr  ""
+
+#: lxc/storage.go:144
+#, c-format
+msgid   "Storage pool %s created"
+msgstr  ""
+
+#: lxc/storage.go:194
+#, c-format
+msgid   "Storage pool %s deleted"
+msgstr  ""
+
+#: lxc/storage.go:142
+#, c-format
+msgid   "Storage pool %s pending on node %s"
+msgstr  ""
+
+#: lxc/init.go:46
+msgid   "Storage pool name"
+msgstr  ""
+
+#: lxc/storage_volume.go:484
+#, c-format
+msgid   "Storage volume %s created"
+msgstr  ""
+
+#: lxc/storage_volume.go:545
+#, c-format
+msgid   "Storage volume %s deleted"
+msgstr  ""
+
+#: lxc/storage_volume.go:388
+msgid   "Storage volume copied successfully!"
+msgstr  ""
+
+#: lxc/storage_volume.go:376
+msgid   "Storage volume moved successfully!"
+msgstr  ""
+
+#: lxc/action.go:115
+msgid   "Store the container state"
+msgstr  ""
+
+#: lxc/info.go:205
+msgid   "Swap (current)"
+msgstr  ""
+
+#: lxc/info.go:209
+msgid   "Swap (peak)"
+msgstr  ""
+
+#: lxc/alias.go:128
+msgid   "TARGET"
+msgstr  ""
+
+#: lxc/list.go:474 lxc/network.go:782 lxc/network.go:854 lxc/operation.go:152 lxc/storage_volume.go:965
+msgid   "TYPE"
+msgstr  ""
+
+#: lxc/delete.go:104
+msgid   "The container is currently running, stop it first or pass --force."
+msgstr  ""
+
+#: lxc/publish.go:109
+msgid   "The container is currently running. Use --force to have it stopped and restarted."
+msgstr  ""
+
+#: lxc/init.go:280
+msgid   "The container you are starting doesn't have any network attached to it."
+msgstr  ""
+
+#: lxc/config_device.go:130 lxc/config_device.go:147 lxc/config_device.go:354
+msgid   "The device already exists"
+msgstr  ""
+
+#: lxc/config_device.go:218 lxc/config_device.go:230 lxc/config_device.go:442 lxc/config_device.go:460 lxc/config_device.go:533 lxc/config_device.go:550
+msgid   "The device doesn't exist"
+msgstr  ""
+
+#: lxc/init.go:264
+#, c-format
+msgid   "The local image '%s' couldn't be found, trying '%s:%s' instead."
+msgstr  ""
+
+#: lxc/init.go:260
+#, c-format
+msgid   "The local image '%s' couldn't be found, trying '%s:' instead."
+msgstr  ""
+
+#: lxc/config_device.go:359
+msgid   "The profile device doesn't exist"
+msgstr  ""
+
+#: lxc/network.go:425 lxc/network.go:510 lxc/storage_volume.go:619 lxc/storage_volume.go:700
+msgid   "The specified device doesn't exist"
+msgstr  ""
+
+#: lxc/network.go:429 lxc/network.go:514
+msgid   "The specified device doesn't match the network"
+msgstr  ""
+
+#: lxc/publish.go:82
+msgid   "There is no \"image name\".  Did you want an alias?"
+msgstr  ""
+
+#: lxc/action.go:122
+msgid   "Time to wait for the container before killing it"
+msgstr  ""
+
+#: lxc/image.go:828
+msgid   "Timestamps:"
+msgstr  ""
+
+#: lxc/init.go:282
+msgid   "To attach a network to a container, use: lxc network attach"
+msgstr  ""
+
+#: lxc/init.go:281
+msgid   "To create a new network, use: lxc network create"
+msgstr  ""
+
+#: lxc/console.go:185
+msgid   "To detach from the console, press: <ctrl>+a q"
+msgstr  ""
+
+#: lxc/main.go:260
+msgid   "To start your first container, try: lxc launch ubuntu:16.04"
+msgstr  ""
+
+#: lxc/storage_volume.go:997
+msgid   "Transfer mode, one of pull (default), push or relay"
+msgstr  ""
+
+#: lxc/copy.go:42
+msgid   "Transfer mode. One of pull (default), push or relay"
+msgstr  ""
+
+#: lxc/move.go:45 lxc/storage_volume.go:286
+msgid   "Transfer mode. One of pull (default), push or relay."
+msgstr  ""
+
+#: lxc/copy.go:229
+#, c-format
+msgid   "Transferring container: %s"
+msgstr  ""
+
+#: lxc/image.go:687
+#, c-format
+msgid   "Transferring image: %s"
+msgstr  ""
+
+#: lxc/action.go:181 lxc/launch.go:80
+#, c-format
+msgid   "Try `lxc info --show-log %s` for more info"
+msgstr  ""
+
+#: lxc/info.go:136
+msgid   "Type: ephemeral"
+msgstr  ""
+
+#: lxc/info.go:138
+msgid   "Type: persistent"
+msgstr  ""
+
+#: lxc/image.go:928
+msgid   "UPLOAD DATE"
+msgstr  ""
+
+#: lxc/cluster.go:120 lxc/remote.go:464
+msgid   "URL"
+msgstr  ""
+
+#: lxc/network.go:785 lxc/profile.go:614 lxc/storage.go:553 lxc/storage_volume.go:968
+msgid   "USED BY"
+msgstr  ""
+
+#: lxc/list.go:514
+#, c-format
+msgid   "Unknown column shorthand char '%c' in '%s'"
+msgstr  ""
+
+#: lxc/file.go:596
+#, c-format
+msgid   "Unknown file type '%s'"
+msgstr  ""
+
+#: lxc/config_device.go:649 lxc/config_device.go:650
+msgid   "Unset container device configuration keys"
+msgstr  ""
+
+#: lxc/config.go:559 lxc/config.go:560
+msgid   "Unset container or server configuration keys"
+msgstr  ""
+
+#: lxc/network.go:1050 lxc/network.go:1051
+msgid   "Unset network configuration keys"
+msgstr  ""
+
+#: lxc/profile.go:865 lxc/profile.go:866
+msgid   "Unset profile configuration keys"
+msgstr  ""
+
+#: lxc/storage.go:728 lxc/storage.go:729
+msgid   "Unset storage pool configuration keys"
+msgstr  ""
+
+#: lxc/storage_volume.go:1240 lxc/storage_volume.go:1241
+msgid   "Unset storage volume configuration keys"
+msgstr  ""
+
+#: lxc/image.go:835
+#, c-format
+msgid   "Uploaded: %s"
+msgstr  ""
+
+#: lxc/delete.go:47
+msgid   "User aborted delete operation"
+msgstr  ""
+
+#: lxc/utils/cancel.go:40
+msgid   "User signaled us three times, exiting. The remote operation will keep running."
+msgstr  ""
+
+#: lxc/query.go:35
+msgid   "Wait for the operation to complete"
+msgstr  ""
+
+#: lxc/restore.go:36
+msgid   "Whether or not to restore the container's running state from snapshot (if available)"
+msgstr  ""
+
+#: lxc/snapshot.go:31
+msgid   "Whether or not to snapshot the container's running state"
+msgstr  ""
+
+#: lxc/network.go:765 lxc/operation.go:140 lxc/remote.go:436 lxc/remote.go:441
+msgid   "YES"
+msgstr  ""
+
+#: lxc/exec.go:122
+msgid   "You can't pass -t and -T at the same time"
+msgstr  ""
+
+#: lxc/exec.go:126
+msgid   "You can't pass -t or -T at the same time as --mode"
+msgstr  ""
+
+#: lxc/copy.go:78
+msgid   "You must specify a destination container name when using --target"
+msgstr  ""
+
+#: lxc/copy.go:73 lxc/move.go:188
+msgid   "You must specify a source container name"
+msgstr  ""
+
+#: lxc/copy.go:68 lxc/move.go:91 lxc/move.go:183
+msgid   "You must use the same source and destination remote when using --target"
+msgstr  ""
+
+#: lxc/alias.go:53
+msgid   "add <alias> <target>"
+msgstr  ""
+
+#: lxc/config_trust.go:57
+msgid   "add [<remote>:] <cert>"
+msgstr  ""
+
+#: lxc/profile.go:100
+msgid   "add [<remote>:]<container> <profile>"
+msgstr  ""
+
+#: lxc/config_device.go:74
+msgid   "add [<remote>:]<container|profile> <device> <type> [key=value...]"
+msgstr  ""
+
+#: lxc/remote.go:82
+msgid   "add [<remote>] <IP|FQDN|URL>"
+msgstr  ""
+
+#: lxc/alias.go:21 lxc/image_alias.go:24
+msgid   "alias"
+msgstr  ""
+
+#: lxc/profile.go:160
+msgid   "assign [<remote>:]<container> <profiles>"
+msgstr  ""
+
+#: lxc/network.go:102
+msgid   "attach [<remote>:]<network> <container> [device name] [interface name]"
+msgstr  ""
+
+#: lxc/storage_volume.go:120
+msgid   "attach [<remote>:]<pool> <volume> <container> [device name] <path>"
+msgstr  ""
+
+#: lxc/storage_volume.go:199
+msgid   "attach-profile [<remote:>]<pool> <volume> <profile> [device name] <path>"
+msgstr  ""
+
+#: lxc/network.go:175
+msgid   "attach-profile [<remote>:]<network> <profile> [device name] [interface name]"
+msgstr  ""
+
+#: lxc/cluster.go:24
+msgid   "cluster"
+msgstr  ""
+
+#: lxc/config.go:27
+msgid   "config"
+msgstr  ""
+
+#: lxc/console.go:30
+msgid   "console [<remote>:]<container>"
+msgstr  ""
+
+#: lxc/storage_volume.go:280
+msgid   "copy <pool>/<volume> <pool>/<volume>"
+msgstr  ""
+
+#: lxc/image.go:128
+msgid   "copy [<remote>:]<image> <remote>:"
+msgstr  ""
+
+#: lxc/profile.go:238
+msgid   "copy [<remote>:]<profile> [<remote>:]<profile>"
+msgstr  ""
+
+#: lxc/copy.go:32
+msgid   "copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>]"
+msgstr  ""
+
+#: lxc/image_alias.go:57
+msgid   "create [<remote>:]<alias> <fingerprint>"
+msgstr  ""
+
+#: lxc/config_template.go:65
+msgid   "create [<remote>:]<container> <template>"
+msgstr  ""
+
+#: lxc/network.go:248
+msgid   "create [<remote>:]<network> [key=value...]"
+msgstr  ""
+
+#: lxc/storage.go:87
+msgid   "create [<remote>:]<pool> <driver> [key=value]..."
+msgstr  ""
+
+#: lxc/storage_volume.go:424
+msgid   "create [<remote>:]<pool> <volume> [key=value]..."
+msgstr  ""
+
+#: lxc/profile.go:295
+msgid   "create [<remote>:]<profile>"
+msgstr  ""
+
+#: lxc/remote.go:453
+msgid   "default"
+msgstr  ""
+
+#: lxc/image_alias.go:103
+msgid   "delete [<remote>:]<alias>"
+msgstr  ""
+
+#: lxc/config_template.go:107
+msgid   "delete [<remote>:]<container> <template>"
+msgstr  ""
+
+#: lxc/file.go:70
+msgid   "delete [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...]"
+msgstr  ""
+
+#: lxc/delete.go:27
+msgid   "delete [<remote>:]<container>[/<snapshot>] [[<remote>:]<container>[/<snapshot>]...]"
+msgstr  ""
+
+#: lxc/image.go:258
+msgid   "delete [<remote>:]<image> [[<remote>:]<image>...]"
+msgstr  ""
+
+#: lxc/network.go:317
+msgid   "delete [<remote>:]<network>"
+msgstr  ""
+
+#: lxc/operation.go:51
+msgid   "delete [<remote>:]<operation>"
+msgstr  ""
+
+#: lxc/storage.go:158
+msgid   "delete [<remote>:]<pool>"
+msgstr  ""
+
+#: lxc/storage_volume.go:498
+msgid   "delete [<remote>:]<pool> <volume>"
+msgstr  ""
+
+#: lxc/profile.go:345
+msgid   "delete [<remote>:]<profile>"
+msgstr  ""
+
+#: lxc/storage.go:431
+msgid   "description"
+msgstr  ""
+
+#: lxc/network.go:365
+msgid   "detach [<remote>:]<network> <container> [device name]"
+msgstr  ""
+
+#: lxc/storage_volume.go:559
+msgid   "detach [<remote>:]<pool> <volume> <container> [device name]"
+msgstr  ""
+
+#: lxc/storage_volume.go:641
+msgid   "detach-profile [<remote:>]<pool> <volume> <profile> [device name]"
+msgstr  ""
+
+#: lxc/network.go:450
+msgid   "detach-profile [<remote>:]<network> <container> [device name]"
+msgstr  ""
+
+#: lxc/config_device.go:22
+msgid   "device"
+msgstr  ""
+
+#: lxc/init.go:223
+msgid   "didn't get any affected image, container or snapshot from server"
+msgstr  ""
+
+#: lxc/image.go:819
+msgid   "disabled"
+msgstr  ""
+
+#: lxc/storage.go:430
+msgid   "driver"
+msgstr  ""
+
+#: lxc/config_template.go:150
+msgid   "edit [<remote>:]<container> <template>"
+msgstr  ""
+
+#: lxc/file.go:120
+msgid   "edit [<remote>:]<container>/<path>"
+msgstr  ""
+
+#: lxc/image.go:310
+msgid   "edit [<remote>:]<image>"
+msgstr  ""
+
+#: lxc/network.go:535
+msgid   "edit [<remote>:]<network>"
+msgstr  ""
+
+#: lxc/storage.go:206
+msgid   "edit [<remote>:]<pool>"
+msgstr  ""
+
+#: lxc/storage_volume.go:722
+msgid   "edit [<remote>:]<pool> <volume>"
+msgstr  ""
+
+#: lxc/profile.go:394
+msgid   "edit [<remote>:]<profile>"
+msgstr  ""
+
+#: lxc/config.go:86 lxc/config_metadata.go:52
+msgid   "edit [<remote>:][container]"
+msgstr  ""
+
+#: lxc/image.go:821
+msgid   "enabled"
+msgstr  ""
+
+#: lxc/action.go:234
+#, c-format
+msgid   "error: %v"
+msgstr  ""
+
+#: lxc/exec.go:37
+msgid   "exec [<remote>:]<container> [flags] [--] <command line>"
+msgstr  ""
+
+#: lxc/image.go:433
+msgid   "export [<remote>:]<image> [target]"
+msgstr  ""
+
+#: lxc/file.go:38
+msgid   "file"
+msgstr  ""
+
+#: lxc/config_device.go:177
+msgid   "get [<remote>:]<container|profile> <device> <key>"
+msgstr  ""
+
+#: lxc/network.go:658
+msgid   "get [<remote>:]<network> <key>"
+msgstr  ""
+
+#: lxc/storage.go:326
+msgid   "get [<remote>:]<pool> <key>"
+msgstr  ""
+
+#: lxc/storage_volume.go:851
+msgid   "get [<remote>:]<pool> <volume> <key>"
+msgstr  ""
+
+#: lxc/profile.go:518
+msgid   "get [<remote>:]<profile> <key>"
+msgstr  ""
+
+#: lxc/config.go:287
+msgid   "get [<remote>:][container] <key>"
+msgstr  ""
+
+#: lxc/remote.go:378
+msgid   "get-default"
+msgstr  ""
+
+#: lxc/image.go:40
+msgid   "image"
+msgstr  ""
+
+#: lxc/image.go:569
+msgid   "import <tarball>|<directory>|<URL> [<rootfs tarball>] [<remote>:] [key=value...]"
+msgstr  ""
+
+#: lxc/storage.go:428
+msgid   "info"
+msgstr  ""
+
+#: lxc/image.go:774
+msgid   "info [<remote>:]<image>"
+msgstr  ""
+
+#: lxc/storage.go:381
+msgid   "info [<remote>:]<pool>"
+msgstr  ""
+
+#: lxc/info.go:27
+msgid   "info [<remote>:][<container>]"
+msgstr  ""
+
+#: lxc/init.go:33
+msgid   "init [<remote>:]<image> [<remote>:][<name>]"
+msgstr  ""
+
+#: lxc/launch.go:20
+msgid   "launch [<remote>:]<image> [<remote>:][<name>]"
+msgstr  ""
+
+#: lxc/alias.go:96 lxc/remote.go:411
+msgid   "list"
+msgstr  ""
+
+#: lxc/cluster.go:56 lxc/config_trust.go:112 lxc/network.go:716 lxc/operation.go:95 lxc/profile.go:565 lxc/storage.go:488
+msgid   "list [<remote>:]"
+msgstr  ""
+
+#: lxc/image.go:887
+msgid   "list [<remote>:] [filter]"
+msgstr  ""
+
+#: lxc/image_alias.go:146
+msgid   "list [<remote>:] [filters...]"
+msgstr  ""
+
+#: lxc/list.go:45
+msgid   "list [<remote>:] [filters]"
+msgstr  ""
+
+#: lxc/config_template.go:234
+msgid   "list [<remote>:]<container>"
+msgstr  ""
+
+#: lxc/config_device.go:249
+msgid   "list [<remote>:]<container|profile>"
+msgstr  ""
+
+#: lxc/storage_volume.go:915
+msgid   "list [<remote>:]<pool>"
+msgstr  ""
+
+#: lxc/network.go:806
+msgid   "list-leases [<remote>:]<network>"
+msgstr  ""
+
+#: lxc/alias.go:57
+msgid   "lxc alias add list list -c ns46S\n"
+        "    Overwrite the \"list\" command to pass -c ns46S."
+msgstr  ""
+
+#: lxc/alias.go:200
+msgid   "lxc alias remove my-list\n"
+        "    Remove the \"my-list\" alias."
+msgstr  ""
+
+#: lxc/alias.go:149
+msgid   "lxc alias rename list my-list\n"
+        "    Rename existing alias \"list\" to \"my-list\"."
+msgstr  ""
+
+#: lxc/config_device.go:78
+msgid   "lxc config device add [<remote>:]container1 <device-name> disk source=/share/c1 path=opt\n"
+        "    Will mount the host's /share/c1 onto /opt in the container."
+msgstr  ""
+
+#: lxc/config.go:90
+msgid   "lxc config edit <container> < container.yaml\n"
+        "    Update the container configuration from config.yaml."
+msgstr  ""
+
+#: lxc/config.go:357
+msgid   "lxc config set [<remote>:]<container> limits.cpu 2\n"
+        "    Will set a CPU limit of \"2\" for the container.\n"
         "\n"
-        "	\"BASE IMAGE\" and \"MAC\" are custom columns generated from container configuration keys.\n"
+        "lxc config set core.https_address [::]:8443\n"
+        "    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
         "\n"
-        "lxc list -c ns,user.comment:comment\n"
-        "	List images with their running state and user comment. "
+        "lxc config set core.trust_password blah\n"
+        "    Will set the server's trust password to blah."
 msgstr  ""
 
-#: lxc/manpage.go:20
-msgid   "Usage: lxc manpage <directory>\n"
-        "\n"
-        "Generate all the LXD manpages."
+#: lxc/file.go:187
+msgid   "lxc file pull foo/etc/hosts .\n"
+        "   To pull /etc/hosts from the container and write it to the current directory."
 msgstr  ""
 
-#: lxc/monitor.go:49
-msgid   "Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
-        "\n"
-        "Monitor a local or remote LXD server.\n"
+#: lxc/file.go:326
+msgid   "lxc file push /etc/hosts foo/etc/hosts\n"
+        "   To push /etc/hosts into the container \"foo\"."
+msgstr  ""
+
+#: lxc/image.go:314
+msgid   "lxc image edit <image>\n"
+        "    Launch a text editor to edit the properties\n"
         "\n"
-        "By default the monitor will listen to all message types.\n"
+        "lxc image edit <image> < image.yaml\n"
+        "    Load the image properties from a YAML file"
+msgstr  ""
+
+#: lxc/info.go:31
+msgid   "lxc info [<remote>:]<container> [--show-log]\n"
+        "    For container information.\n"
         "\n"
-        "Message types to listen for can be specified with --type.\n"
+        "lxc info [<remote>:] [--resources]\n"
+        "    For LXD server information."
+msgstr  ""
+
+#: lxc/init.go:37
+msgid   "lxc init ubuntu:16.04 u1"
+msgstr  ""
+
+#: lxc/launch.go:24
+msgid   "lxc launch ubuntu:16.04 u1"
+msgstr  ""
+
+#: lxc/list.go:103
+msgid   "lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:MAC\n"
+        "  Show containers using the \"NAME\", \"BASE IMAGE\", \"STATE\", \"IPV4\", \"IPV6\" and \"MAC\" columns.\n"
+        "  \"BASE IMAGE\" and \"MAC\" are custom columns generated from container configuration keys.\n"
         "\n"
-        "*Examples*\n"
-        "lxc monitor --type=logging\n"
+        "lxc list -c ns,user.comment:comment\n"
+        "  List images with their running state and user comment."
+msgstr  ""
+
+#: lxc/monitor.go:35
+msgid   "lxc monitor --type=logging\n"
         "    Only show log messages.\n"
         "\n"
         "lxc monitor --pretty --type=logging --loglevel=info\n"
         "    Show a pretty log of messages with info level or higher.\n"
         "\n"
         "lxc monitor --type=lifecycle\n"
-        "    Only show lifecycle events.\n"
+        "    Only show lifecycle events."
 msgstr  ""
 
-#: lxc/move.go:27
-msgid   "Usage: lxc move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/<snapshot>]] [--container-only] [--target <node>]\n"
-        "\n"
-        "Move containers within or in between LXD instances.\n"
-        "\n"
-        "lxc move [<remote>:]<source container> [<remote>:][<destination container>] [--container-only]\n"
+#: lxc/move.go:33
+msgid   "lxc move [<remote>:]<source container> [<remote>:][<destination container>] [--container-only]\n"
         "    Move a container between two hosts, renaming it if destination name differs.\n"
         "\n"
         "lxc move <old name> <new name> [--container-only]\n"
@@ -1870,150 +2696,13 @@ msgid   "Usage: lxc move [<remote>:]<container>[/<snapshot>] [<remote>:][<contai
         "    Rename a snapshot."
 msgstr  ""
 
-#: lxc/network.go:52
-msgid   "Usage: lxc network <subcommand> [options]\n"
-        "\n"
-        "Manage and attach containers to networks.\n"
-        "\n"
-        "lxc network list [<remote>:]\n"
-        "    List available networks.\n"
-        "\n"
-        "lxc network list-leases [<remote>:]<network>\n"
-        "    List the DHCP leases for the network\n"
-        "\n"
-        "lxc network show [<remote>:]<network> [--target <node>]\n"
-        "    Show details of a network.\n"
-        "\n"
-        "lxc network create [<remote>:]<network> [key=value...] [--target <node>]\n"
-        "    Create a network.\n"
-        "\n"
-        "lxc network get [<remote>:]<network> <key> [--target <node>]\n"
-        "    Get network configuration.\n"
-        "\n"
-        "lxc network set [<remote>:]<network> <key> <value>\n"
-        "    Set network configuration.\n"
-        "\n"
-        "lxc network unset [<remote>:]<network> <key>\n"
-        "    Unset network configuration.\n"
-        "\n"
-        "lxc network delete [<remote>:]<network>\n"
-        "    Delete a network.\n"
-        "\n"
-        "lxc network edit [<remote>:]<network>\n"
-        "    Edit network, either by launching external editor or reading STDIN.\n"
-        "\n"
-        "lxc network rename [<remote>:]<network> <new-name>\n"
-        "    Rename a network.\n"
-        "\n"
-        "lxc network attach [<remote>:]<network> <container> [device name] [interface name]\n"
-        "    Attach a network interface connecting the network to a specified container.\n"
-        "\n"
-        "lxc network attach-profile [<remote>:]<network> <profile> [device name] [interface name]\n"
-        "    Attach a network interface connecting the network to a specified profile.\n"
-        "\n"
-        "lxc network detach [<remote>:]<network> <container> [device name]\n"
-        "    Remove a network interface connecting the network to a specified container.\n"
-        "\n"
-        "lxc network detach-profile [<remote>:]<network> <container> [device name]\n"
-        "    Remove a network interface connecting the network to a specified profile.\n"
-        "\n"
-        "*Examples*\n"
-        "cat network.yaml | lxc network edit <network>\n"
-        "    Update a network using the content of network.yaml"
-msgstr  ""
-
-#: lxc/operation.go:25
-msgid   "Usage: lxc operation <subcommand> [options]\n"
-        "\n"
-        "List, show and delete background operations.\n"
-        "\n"
-        "lxc operation list [<remote>:]\n"
-        "    List background operations.\n"
-        "\n"
-        "lxc operation show [<remote>:]<operation>\n"
-        "    Show details on a background operation.\n"
-        "\n"
-        "lxc operation delete [<remote>:]<operation>\n"
-        "    Delete a background operation (will attempt to cancel).\n"
-        "\n"
-        "*Examples*\n"
-        "lxc operation show 344a79e4-d88a-45bf-9c39-c72c26f6ab8a\n"
+#: lxc/operation.go:176
+msgid   "lxc operation show 344a79e4-d88a-45bf-9c39-c72c26f6ab8a\n"
         "    Show details on that operation UUID"
 msgstr  ""
 
-#: lxc/profile.go:51
-msgid   "Usage: lxc profile <subcommand> [options]\n"
-        "\n"
-        "Manage container configuration profiles.\n"
-        "\n"
-        "*Profile configuration*\n"
-        "lxc profile list [<remote>:]\n"
-        "    List available profiles.\n"
-        "\n"
-        "lxc profile show [<remote>:]<profile>\n"
-        "    Show details of a profile.\n"
-        "\n"
-        "lxc profile create [<remote>:]<profile>\n"
-        "    Create a profile.\n"
-        "\n"
-        "lxc profile copy [<remote>:]<profile> [<remote>:]<profile>\n"
-        "    Copy the profile.\n"
-        "\n"
-        "lxc profile get [<remote>:]<profile> <key>\n"
-        "    Get profile configuration.\n"
-        "\n"
-        "lxc profile set [<remote>:]<profile> <key> <value>\n"
-        "    Set profile configuration.\n"
-        "\n"
-        "lxc profile unset [<remote>:]<profile> <key>\n"
-        "    Unset profile configuration.\n"
-        "\n"
-        "lxc profile delete [<remote>:]<profile>\n"
-        "    Delete a profile.\n"
-        "\n"
-        "lxc profile edit [<remote>:]<profile>\n"
-        "    Edit profile, either by launching external editor or reading STDIN.\n"
-        "\n"
-        "lxc profile rename [<remote>:]<profile> <new-name>\n"
-        "    Rename a profile.\n"
-        "\n"
-        "*Profile assignment*\n"
-        "lxc profile assign [<remote>:]<container> <profiles>\n"
-        "    Replace the current set of profiles for the container by the one provided.\n"
-        "\n"
-        "lxc profile add [<remote>:]<container> <profile>\n"
-        "    Add a profile to a container\n"
-        "\n"
-        "lxc profile remove [<remote>:]<container> <profile>\n"
-        "    Remove the profile from a container\n"
-        "\n"
-        "*Device management*\n"
-        "lxc profile device list [<remote>:]<profile>\n"
-        "    List devices in the given profile.\n"
-        "\n"
-        "lxc profile device show [<remote>:]<profile>\n"
-        "    Show full device details in the given profile.\n"
-        "\n"
-        "lxc profile device remove [<remote>:]<profile> <name>\n"
-        "    Remove a device from a profile.\n"
-        "\n"
-        "lxc profile device get [<remote>:]<profile> <name> <key>\n"
-        "    Get a device property.\n"
-        "\n"
-        "lxc profile device set [<remote>:]<profile> <name> <key> <value>\n"
-        "    Set a device property.\n"
-        "\n"
-        "lxc profile device unset [<remote>:]<profile> <name> <key>\n"
-        "    Unset a device property.\n"
-        "\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.\n"
-        "\n"
-        "*Examples*\n"
-        "cat profile.yaml | lxc profile edit <profile>\n"
-        "    Update a profile using the content of profile.yaml\n"
-        "\n"
-        "lxc profile assign foo default,bar\n"
+#: lxc/profile.go:165
+msgid   "lxc profile assign foo default,bar\n"
         "    Set the profiles for \"foo\" to \"default\" and \"bar\".\n"
         "\n"
         "lxc profile assign foo default\n"
@@ -2023,359 +2712,337 @@ msgid   "Usage: lxc profile <subcommand> [options]\n"
         "    Remove all profile from \"foo\""
 msgstr  ""
 
-#: lxc/publish.go:28
-msgid   "Usage: lxc publish [<remote>:]<container>[/<snapshot>] [<remote>:] [--alias=ALIAS...] [prop-key=prop-value...]\n"
-        "\n"
-        "Publish containers as images."
+#: lxc/profile.go:398
+msgid   "lxc profile edit <profile> < profile.yaml\n"
+        "    Update a profile using the content of profile.yaml"
 msgstr  ""
 
-#: lxc/query.go:25
-msgid   "Usage: lxc query [-X <action>] [-d <data>] [--wait] [--raw] [<remote>:]<API path>\n"
-        "\n"
-        "Send a raw query to LXD.\n"
-        "\n"
-        "*Examples*\n"
-        "lxc query -X DELETE --wait /1.0/containers/c1\n"
+#: lxc/query.go:29
+msgid   "lxc query -X DELETE --wait /1.0/containers/c1\n"
         "    Delete local container \"c1\"."
 msgstr  ""
 
-#: lxc/remote.go:40
-msgid   "Usage: lxc remote <subcommand> [options]\n"
-        "\n"
-        "Manage the list of remote LXD servers.\n"
-        "\n"
-        "lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--password=PASSWORD] [--public] [--protocol=PROTOCOL] [--auth-type=AUTH_TYPE]\n"
-        "    Add the remote <remote> at <url>.\n"
-        "\n"
-        "lxc remote remove <remote>\n"
-        "    Remove the remote <remote>.\n"
-        "\n"
-        "lxc remote list\n"
-        "    List all remotes.\n"
-        "\n"
-        "lxc remote rename <old name> <new name>\n"
-        "    Rename remote <old name> to <new name>.\n"
-        "\n"
-        "lxc remote set-url <remote> <url>\n"
-        "    Update <remote>'s url to <url>.\n"
-        "\n"
-        "lxc remote set-default <remote>\n"
-        "    Set the default remote.\n"
-        "\n"
-        "lxc remote get-default\n"
-        "    Print the default remote."
-msgstr  ""
-
-#: lxc/rename.go:18
-msgid   "Usage: lxc rename [<remote>:]<container>[/<snapshot>] [<container>[/<snapshot>]]\n"
-        "\n"
-        "Rename a container or snapshot."
+#: lxc/snapshot.go:26
+msgid   "lxc snapshot u1 snap0\n"
+        "    Create a snapshot of \"u1\" called \"snap0\"."
 msgstr  ""
 
-#: lxc/restore.go:22
-msgid   "Usage: lxc restore [<remote>:]<container> <snapshot> [--stateful]\n"
-        "\n"
-        "Restore containers from snapshots.\n"
-        "\n"
-        "If --stateful is passed, then the running state will be restored too.\n"
-        "\n"
-        "*Examples*\n"
-        "lxc snapshot u1 snap0\n"
+#: lxc/restore.go:28
+msgid   "lxc snapshot u1 snap0\n"
         "    Create the snapshot.\n"
         "\n"
         "lxc restore u1 snap0\n"
         "    Restore the snapshot."
 msgstr  ""
 
-#: lxc/snapshot.go:19
-msgid   "Usage: lxc snapshot [<remote>:]<container> <snapshot name> [--stateful]\n"
-        "\n"
-        "Create container snapshots.\n"
-        "\n"
-        "When --stateful is used, LXD attempts to checkpoint the container's\n"
-        "running state, including process memory state, TCP connections, ...\n"
-        "\n"
-        "*Examples*\n"
-        "lxc snapshot u1 snap0\n"
-        "    Create a snapshot of \"u1\" called \"snap0\"."
+#: lxc/storage.go:210
+msgid   "lxc storage edit [<remote>:]<pool> < pool.yaml\n"
+        "    Update a storage pool using the content of pool.yaml."
 msgstr  ""
 
-#: lxc/storage.go:67
-msgid   "Usage: lxc storage <subcommand> [options]\n"
-        "\n"
-        "Manage storage pools and volumes.\n"
-        "\n"
-        "*Storage pools*\n"
-        "lxc storage list [<remote>:]\n"
-        "    List available storage pools.\n"
-        "\n"
-        "lxc storage show [<remote>:]<pool> [--resources] [--target <node>]\n"
-        "    Show details of a storage pool.\n"
-        "\n"
-        "lxc storage info [<remote>:]<pool> [--bytes]\n"
-        "    Show information of a storage pool in yaml format.\n"
-        "\n"
-        "lxc storage create [<remote>:]<pool> <driver> [key=value]... [--target <node>]\n"
-        "    Create a storage pool.\n"
-        "\n"
-        "lxc storage get [<remote>:]<pool> <key>\n"
-        "    Get storage pool configuration.\n"
-        "\n"
-        "lxc storage set [<remote>:]<pool> <key> <value>\n"
-        "    Set storage pool configuration.\n"
-        "\n"
-        "lxc storage unset [<remote>:]<pool> <key>\n"
-        "    Unset storage pool configuration.\n"
-        "\n"
-        "lxc storage delete [<remote>:]<pool>\n"
-        "    Delete a storage pool.\n"
-        "\n"
-        "lxc storage edit [<remote>:]<pool>\n"
-        "    Edit storage pool, either by launching external editor or reading STDIN.\n"
-        "\n"
-        "*Storage volumes*\n"
-        "lxc storage volume list [<remote>:]<pool>\n"
-        "    List available storage volumes on a storage pool.\n"
-        "\n"
-        "lxc storage volume show [<remote>:]<pool> <volume> [--target <node>]\n"
-        "   Show details of a storage volume on a storage pool.\n"
-        "\n"
-        "lxc storage volume create [<remote>:]<pool> <volume> [key=value]... [--target <node>]\n"
-        "    Create a storage volume on a storage pool.\n"
-        "\n"
-        "lxc storage volume rename [<remote>:]<pool> <old name> <new name> [--target <node>]\n"
-        "    Rename a storage volume on a storage pool.\n"
-        "\n"
-        "lxc storage volume get [<remote>:]<pool> <volume> <key> [--target <node>]\n"
-        "    Get storage volume configuration on a storage pool.\n"
-        "\n"
-        "lxc storage volume set [<remote>:]<pool> <volume> <key> <value> [--target <node>]\n"
-        "    Set storage volume configuration on a storage pool.\n"
-        "\n"
-        "lxc storage volume unset [<remote>:]<pool> <volume> <key> [--target <node>]\n"
-        "    Unset storage volume configuration on a storage pool.\n"
-        "\n"
-        "lxc storage volume delete [<remote>:]<pool> <volume> [--target <node>]\n"
-        "    Delete a storage volume on a storage pool.\n"
-        "\n"
-        "lxc storage volume edit [<remote>:]<pool> <volume> [--target <node>]\n"
-        "    Edit storage volume, either by launching external editor or reading STDIN.\n"
-        "\n"
-        "lxc storage volume attach [<remote>:]<pool> <volume> <container> [device name] <path>\n"
-        "    Attach a storage volume to the specified container.\n"
-        "\n"
-        "lxc storage volume attach-profile [<remote:>]<pool> <volume> <profile> [device name] <path>\n"
-        "    Attach a storage volume to the specified profile.\n"
-        "\n"
-        "lxc storage volume detach [<remote>:]<pool> <volume> <container> [device name]\n"
-        "    Detach a storage volume from the specified container.\n"
-        "\n"
-        "lxc storage volume detach-profile [<remote:>]<pool> <volume> <profile> [device name]\n"
-        "	Detach a storage volume from the specified profile.\n"
-        "\n"
-        "lxc storage volume copy <pool>/<volume> <pool>/<volume> [--config|-c <key=value>...]\n"
-        "    Copy an existing volume to a new volume at the specified pool.\n"
-        "\n"
-        "lxc storage volume move [<pool>/]<volume> [<pool>/]<volume>\n"
-        "    Move an existing volume to the specified pool.\n"
-        "\n"
-        "Unless specified through a prefix, all volume operations affect \"custom\" (user created) volumes.\n"
-        "\n"
-        "*Examples*\n"
-        "cat pool.yaml | lxc storage edit [<remote>:]<pool>\n"
-        "    Update a storage pool using the content of pool.yaml.\n"
-        "\n"
-        "cat pool.yaml | lxc storage volume edit [<remote>:]<pool> <volume>\n"
-        "    Update a storage volume using the content of pool.yaml.\n"
-        "\n"
-        "lxc storage volume show default data\n"
+#: lxc/storage_volume.go:726
+msgid   "lxc storage volume edit [<remote>:]<pool> <volume> < volume.yaml\n"
+        "    Update a storage volume using the content of pool.yaml."
+msgstr  ""
+
+#: lxc/storage_volume.go:1168
+msgid   "lxc storage volume show default data\n"
         "    Will show the properties of a custom volume called \"data\" in the \"default\" pool.\n"
         "\n"
         "lxc storage volume show default container/data\n"
         "    Will show the properties of the filesystem for a container called \"data\" in the \"default\" pool."
 msgstr  ""
 
-#: lxc/version.go:18
-msgid   "Usage: lxc version\n"
-        "\n"
-        "Print the version number of this client tool."
+#: lxc/config_metadata.go:27
+msgid   "metadata"
 msgstr  ""
 
-#: lxc/delete.go:46
-msgid   "User aborted delete operation."
+#: lxc/monitor.go:29
+msgid   "monitor [<remote>:]"
 msgstr  ""
 
-#: lxc/utils/cancel.go:40
-msgid   "User signaled us three times, exiting. The remote operation will keep running."
+#: lxc/storage_volume.go:991
+msgid   "move [<pool>/]<volume> [<pool>/]<volume>"
 msgstr  ""
 
-#: lxc/query.go:36
-msgid   "Wait for the operation to complete"
+#: lxc/move.go:28
+msgid   "move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/<snapshot>]]"
 msgstr  ""
 
-#: lxc/restore.go:38
-msgid   "Whether or not to restore the container's running state from snapshot (if available)"
+#: lxc/storage.go:429
+msgid   "name"
 msgstr  ""
 
-#: lxc/snapshot.go:33
-msgid   "Whether or not to snapshot the container's running state"
+#: lxc/network.go:30
+msgid   "network"
 msgstr  ""
 
-#: lxc/network.go:560 lxc/operation.go:141 lxc/remote.go:382 lxc/remote.go:387
-msgid   "YES"
+#: lxc/image.go:809 lxc/image.go:814 lxc/image.go:977
+msgid   "no"
 msgstr  ""
 
-#: lxc/exec.go:132
-msgid   "You can't pass -t and -T at the same time"
+#: lxc/remote.go:253
+msgid   "ok (y/n)?"
 msgstr  ""
 
-#: lxc/exec.go:136
-msgid   "You can't pass -t or -T at the same time as --mode"
+#: lxc/operation.go:23
+msgid   "operation"
 msgstr  ""
 
-#: lxc/copy.go:76
-msgid   "You must specify a destination container name when using --target"
+#: lxc/config_device.go:316
+msgid   "override [<remote>:]<container> <device> [key=value...]"
 msgstr  ""
 
-#: lxc/copy.go:71 lxc/move.go:174
-msgid   "You must specify a source container name"
+#: lxc/action.go:47
+msgid   "pause [<remote>:]<container> [[<remote>:]<container>...]"
 msgstr  ""
 
-#: lxc/copy.go:66 lxc/move.go:77 lxc/move.go:169
-msgid   "You must use the same source and destination remote when using --target"
+#: lxc/config.go:52
+msgid   "please use `lxc profile`"
 msgstr  ""
 
-#: lxc/main.go:72
-msgid   "`lxc config profile` is deprecated, please use `lxc profile`"
+#: lxc/profile.go:28
+msgid   "profile"
 msgstr  ""
 
-#: lxc/alias.go:56 lxc/alias.go:102
-#, c-format
-msgid   "alias %s already exists"
+#: lxc/publish.go:32
+msgid   "publish [<remote>:]<container>[/<snapshot>] [<remote>:] [flags] [prop-key=prop-value...]"
 msgstr  ""
 
-#: lxc/alias.go:68 lxc/alias.go:97
-#, c-format
-msgid   "alias %s doesn't exist"
+#: lxc/file.go:183
+msgid   "pull [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...] <target path>"
 msgstr  ""
 
-#: lxc/remote.go:370
-msgid   "can't remove the default remote"
+#: lxc/file.go:322
+msgid   "push <source path> [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...]"
 msgstr  ""
 
-#: lxc/file.go:296
-msgid   "can't supply uid/gid/mode in recursive mode"
+#: lxc/query.go:25
+msgid   "query [<remote>:]<API path>"
 msgstr  ""
 
-#: lxc/remote.go:399
-msgid   "default"
+#: lxc/image.go:1210
+msgid   "refresh [<remote>:]<image> [[<remote>:]<image>...]"
 msgstr  ""
 
-#: lxc/storage.go:856
-msgid   "description"
+#: lxc/remote.go:32
+msgid   "remote"
 msgstr  ""
 
-#: lxc/init.go:315
-msgid   "didn't get any affected image, container or snapshot from server"
+#: lxc/alias.go:195
+msgid   "remove <alias>"
 msgstr  ""
 
-#: lxc/image.go:594
-msgid   "disabled"
+#: lxc/remote.go:546
+msgid   "remove <remote>"
 msgstr  ""
 
-#: lxc/storage.go:855
-msgid   "driver"
+#: lxc/config_trust.go:194
+msgid   "remove [<remote>:] <hostname|fingerprint>"
 msgstr  ""
 
-#: lxc/image.go:596
-msgid   "enabled"
+#: lxc/profile.go:630
+msgid   "remove [<remote>:]<container> <profile>"
 msgstr  ""
 
-#: lxc/action.go:155 lxc/main.go:33 lxc/main.go:191
-#, c-format
-msgid   "error: %v"
+#: lxc/config_device.go:402
+msgid   "remove [<remote>:]<container|profile> <name>..."
 msgstr  ""
 
-#: lxc/help.go:37 lxc/main.go:133
-#, c-format
-msgid   "error: unknown command: %s"
+#: lxc/cluster.go:235
+msgid   "remove [<remote>:]<member>"
 msgstr  ""
 
-#: lxc/storage.go:853
-msgid   "info"
+#: lxc/alias.go:144
+msgid   "rename <old alias> <new alias>"
 msgstr  ""
 
-#: lxc/storage.go:854
-msgid   "name"
+#: lxc/remote.go:484
+msgid   "rename <remote> <new-name>"
 msgstr  ""
 
-#: lxc/image.go:210 lxc/image.go:584 lxc/image.go:589
-msgid   "no"
+#: lxc/image_alias.go:247
+msgid   "rename [<remote>:]<alias> <new-name>"
 msgstr  ""
 
-#: lxc/remote.go:204
-msgid   "ok (y/n)?"
+#: lxc/rename.go:18
+msgid   "rename [<remote>:]<container>[/<snapshot>] <container>[/<snapshot>]"
 msgstr  ""
 
-#: lxc/main.go:368 lxc/main.go:372
-#, c-format
-msgid   "processing aliases failed %s\n"
+#: lxc/cluster.go:189
+msgid   "rename [<remote>:]<member> <new-name>"
 msgstr  ""
 
-#: lxc/file.go:588
-msgid   "recursive edit doesn't make sense :("
+#: lxc/network.go:870
+msgid   "rename [<remote>:]<network> <new-name>"
 msgstr  ""
 
-#: lxc/remote.go:436
-#, c-format
-msgid   "remote %s already exists"
+#: lxc/storage_volume.go:1023
+msgid   "rename [<remote>:]<pool> <old name> <new name>"
 msgstr  ""
 
-#: lxc/remote.go:362 lxc/remote.go:428 lxc/remote.go:463 lxc/remote.go:479
-#, c-format
-msgid   "remote %s doesn't exist"
+#: lxc/profile.go:702
+msgid   "rename [<remote>:]<profile> <new-name>"
 msgstr  ""
 
-#: lxc/remote.go:345
-#, c-format
-msgid   "remote %s exists as <%s>"
+#: lxc/action.go:67
+msgid   "restart [<remote>:]<container> [[<remote>:]<container>...]"
 msgstr  ""
 
-#: lxc/remote.go:366 lxc/remote.go:432 lxc/remote.go:467
-#, c-format
-msgid   "remote %s is static and cannot be modified"
+#: lxc/restore.go:22
+msgid   "restore [<remote>:]<container> <snapshot>"
+msgstr  ""
+
+#: lxc/config_device.go:491
+msgid   "set [<remote>:]<container|profile> <device> <key> <value>"
+msgstr  ""
+
+#: lxc/network.go:918
+msgid   "set [<remote>:]<network> <key> <value>"
+msgstr  ""
+
+#: lxc/storage.go:571
+msgid   "set [<remote>:]<pool> <key> <value>"
+msgstr  ""
+
+#: lxc/storage_volume.go:1087
+msgid   "set [<remote>:]<pool> <volume> <key> <value>"
+msgstr  ""
+
+#: lxc/profile.go:751
+msgid   "set [<remote>:]<profile> <key> <value>"
+msgstr  ""
+
+#: lxc/config.go:353
+msgid   "set [<remote>:][container] <key> <value>"
+msgstr  ""
+
+#: lxc/remote.go:596
+msgid   "set-default <remote>"
+msgstr  ""
+
+#: lxc/remote.go:634
+msgid   "set-url <remote> <URL>"
+msgstr  ""
+
+#: lxc/config_template.go:296
+msgid   "show [<remote>:]<container> <template>"
+msgstr  ""
+
+#: lxc/config_device.go:580
+msgid   "show [<remote>:]<container|profile>"
+msgstr  ""
+
+#: lxc/image.go:1283
+msgid   "show [<remote>:]<image>"
+msgstr  ""
+
+#: lxc/cluster.go:140
+msgid   "show [<remote>:]<member>"
+msgstr  ""
+
+#: lxc/network.go:987
+msgid   "show [<remote>:]<network>"
+msgstr  ""
+
+#: lxc/operation.go:172
+msgid   "show [<remote>:]<operation>"
+msgstr  ""
+
+#: lxc/storage.go:643
+msgid   "show [<remote>:]<pool>"
+msgstr  ""
+
+#: lxc/storage_volume.go:1164
+msgid   "show [<remote>:]<pool> <volume>"
+msgstr  ""
+
+#: lxc/profile.go:810
+msgid   "show [<remote>:]<profile>"
+msgstr  ""
+
+#: lxc/config.go:450 lxc/config_metadata.go:174
+msgid   "show [<remote>:][container]"
+msgstr  ""
+
+#: lxc/snapshot.go:19
+msgid   "snapshot [<remote>:]<container> <snapshot name>"
 msgstr  ""
 
-#: lxc/storage.go:858
+#: lxc/storage.go:433
 msgid   "space used"
 msgstr  ""
 
-#: lxc/info.go:251
+#: lxc/action.go:28
+msgid   "start [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr  ""
+
+#: lxc/info.go:255
 msgid   "stateful"
 msgstr  ""
 
-#: lxc/info.go:253
+#: lxc/info.go:257
 msgid   "stateless"
 msgstr  ""
 
-#: lxc/info.go:247
+#: lxc/action.go:89
+msgid   "stop [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr  ""
+
+#: lxc/storage.go:31
+msgid   "storage"
+msgstr  ""
+
+#: lxc/info.go:251
 #, c-format
 msgid   "taken at %s"
 msgstr  ""
 
-#: lxc/storage.go:857
+#: lxc/config_template.go:28
+msgid   "template"
+msgstr  ""
+
+#: lxc/storage.go:432
 msgid   "total space"
 msgstr  ""
 
-#: lxc/storage.go:852
+#: lxc/config_trust.go:28
+msgid   "trust"
+msgstr  ""
+
+#: lxc/config_device.go:648
+msgid   "unset [<remote>:]<container|profile> <device> <key>"
+msgstr  ""
+
+#: lxc/network.go:1049
+msgid   "unset [<remote>:]<network> <key>"
+msgstr  ""
+
+#: lxc/storage.go:727
+msgid   "unset [<remote>:]<pool> <key>"
+msgstr  ""
+
+#: lxc/storage_volume.go:1239
+msgid   "unset [<remote>:]<pool> <volume> <key>"
+msgstr  ""
+
+#: lxc/profile.go:864
+msgid   "unset [<remote>:]<profile> <key>"
+msgstr  ""
+
+#: lxc/config.go:558
+msgid   "unset [<remote>:][container] <key>"
+msgstr  ""
+
+#: lxc/storage.go:427
 msgid   "used by"
 msgstr  ""
 
-#: lxc/main.go:299
-msgid   "wrong number of subcommand arguments"
+#: lxc/storage_volume.go:32
+msgid   "volume"
 msgstr  ""
 
-#: lxc/delete.go:45 lxc/image.go:208 lxc/image.go:586 lxc/image.go:591
+#: lxc/delete.go:46 lxc/image.go:811 lxc/image.go:816 lxc/image.go:975
 msgid   "yes"
 msgstr  ""
 
diff --git a/po/nb_NO.po b/po/nb_NO.po
index 3eb97371c..5006d3dba 100644
--- a/po/nb_NO.po
+++ b/po/nb_NO.po
@@ -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: 2018-02-27 22:14-0500\n"
+"POT-Creation-Date: 2018-03-29 01:45-0400\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
@@ -16,7 +16,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: lxc/storage.go:36
+#: lxc/storage.go:220
 msgid ""
 "### This is a yaml representation of a storage pool.\n"
 "### Any line starting with a '#' will be ignored.\n"
@@ -33,7 +33,7 @@ msgid ""
 "###   zfs.pool_name: default"
 msgstr ""
 
-#: lxc/storage.go:53
+#: lxc/storage_volume.go:737
 msgid ""
 "### This is a yaml representation of a storage volume.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -47,7 +47,7 @@ msgid ""
 "###   size: \"61203283968\""
 msgstr ""
 
-#: lxc/config.go:40
+#: lxc/config.go:100
 msgid ""
 "### This is a yaml representation of the configuration.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -68,7 +68,7 @@ msgid ""
 "### Note that the name is shown but cannot be changed"
 msgstr ""
 
-#: lxc/config.go:61
+#: lxc/config_metadata.go:63
 msgid ""
 "### This is a yaml representation of the container metadata.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -92,7 +92,7 @@ msgid ""
 "###     properties: {}"
 msgstr ""
 
-#: lxc/image.go:63
+#: lxc/image.go:327
 msgid ""
 "### This is a yaml representation of the image properties.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -102,7 +102,7 @@ msgid ""
 "###  description: My custom image"
 msgstr ""
 
-#: lxc/network.go:32
+#: lxc/network.go:546
 msgid ""
 "### This is a yaml representation of the network.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -122,7 +122,7 @@ msgid ""
 "### Note that only the configuration can be changed."
 msgstr ""
 
-#: lxc/profile.go:30
+#: lxc/profile.go:408
 msgid ""
 "### This is a yaml representation of the profile.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -143,12 +143,12 @@ msgid ""
 "### Note that the name is shown but cannot be changed"
 msgstr ""
 
-#: lxc/image.go:187
+#: lxc/image.go:954
 #, c-format
 msgid "%s (%d more)"
 msgstr ""
 
-#: lxc/file.go:205
+#: lxc/file.go:677
 #, c-format
 msgid "%s is not a directory"
 msgstr ""
@@ -158,1782 +158,2673 @@ msgstr ""
 msgid "%v (interrupt two more times to force)"
 msgstr ""
 
-#: lxc/file.go:142
+#: lxc/file.go:614
 #, c-format
 msgid "'%s' isn't a supported file type."
 msgstr ""
 
-#: lxc/profile.go:337
+#: lxc/profile.go:222
 msgid "(none)"
 msgstr ""
 
-#: lxc/alias.go:84 lxc/image.go:231 lxc/image.go:1136
+#: lxc/alias.go:127 lxc/image.go:921 lxc/image_alias.go:228
 msgid "ALIAS"
 msgstr ""
 
-#: lxc/image.go:232
+#: lxc/image.go:922
 msgid "ALIASES"
 msgstr ""
 
-#: lxc/image.go:236
+#: lxc/image.go:926
 msgid "ARCH"
 msgstr ""
 
-#: lxc/list.go:467
+#: lxc/list.go:464
 msgid "ARCHITECTURE"
 msgstr ""
 
-#: lxc/remote.go:412
+#: lxc/remote.go:466
 msgid "AUTH TYPE"
 msgstr ""
 
-#: lxc/remote.go:68
+#: lxc/remote.go:88
 msgid "Accept certificate"
 msgstr ""
 
-#: lxc/query.go:38
+#: lxc/query.go:37
 msgid "Action (defaults to GET)"
 msgstr ""
 
-#: lxc/remote.go:276
+#: lxc/config_device.go:75 lxc/config_device.go:76
+msgid "Add devices to containers or profiles"
+msgstr ""
+
+#: lxc/alias.go:54 lxc/alias.go:55
+msgid "Add new aliases"
+msgstr ""
+
+#: lxc/remote.go:83 lxc/remote.go:84
+msgid "Add new remote servers"
+msgstr ""
+
+#: lxc/config_trust.go:58 lxc/config_trust.go:59
+msgid "Add new trusted clients"
+msgstr ""
+
+#: lxc/profile.go:101 lxc/profile.go:102
+msgid "Add profiles to containers"
+msgstr ""
+
+#: lxc/remote.go:325
 #, c-format
 msgid "Admin password for %s: "
 msgstr ""
 
-#: lxc/image.go:623
+#: lxc/alias.go:78 lxc/alias.go:176
+#, c-format
+msgid "Alias %s already exists"
+msgstr ""
+
+#: lxc/alias.go:170 lxc/alias.go:221
+#, c-format
+msgid "Alias %s doesn't exist"
+msgstr ""
+
+#: lxc/image_alias.go:83 lxc/image_alias.go:130 lxc/image_alias.go:274
+msgid "Alias name missing"
+msgstr ""
+
+#: lxc/image.go:854
 msgid "Aliases:"
 msgstr ""
 
-#: lxc/image.go:601 lxc/info.go:125
+#: lxc/image.go:826 lxc/info.go:129
 #, c-format
 msgid "Architecture: %s"
 msgstr ""
 
-#: lxc/remote.go:259
+#: lxc/profile.go:162 lxc/profile.go:163
+msgid "Assign sets of profiles to containers"
+msgstr ""
+
+#: lxc/network.go:103
+msgid "Attach network interfaces to containers"
+msgstr ""
+
+#: lxc/network.go:176 lxc/network.go:177
+msgid "Attach network interfaces to profiles"
+msgstr ""
+
+#: lxc/network.go:104
+msgid "Attach new network interfaces to containers"
+msgstr ""
+
+#: lxc/storage_volume.go:121 lxc/storage_volume.go:122
+msgid "Attach new storage volumes to containers"
+msgstr ""
+
+#: lxc/storage_volume.go:200 lxc/storage_volume.go:201
+msgid "Attach new storage volumes to profiles"
+msgstr ""
+
+#: lxc/console.go:31
+msgid "Attach to container consoles"
+msgstr ""
+
+#: lxc/console.go:32
+msgid ""
+"Attach to container consoles\n"
+"\n"
+"This command allows you to interact with the boot console of a container\n"
+"as well as retrieve past log entries from it."
+msgstr ""
+
+#: lxc/remote.go:308
 #, c-format
 msgid "Authentication type '%s' not supported by server"
 msgstr ""
 
-#: lxc/image.go:632
+#: lxc/image.go:864
 #, c-format
 msgid "Auto update: %s"
 msgstr ""
 
-#: lxc/image.go:707
+#: lxc/network.go:283
+#, c-format
+msgid "Bad key/value pair: %s"
+msgstr ""
+
+#: lxc/copy.go:110 lxc/init.go:118 lxc/publish.go:175 lxc/storage.go:123
+#: lxc/storage_volume.go:468
+#, c-format
+msgid "Bad key=value pair: %s"
+msgstr ""
+
+#: lxc/image.go:677
 #, c-format
 msgid "Bad property: %s"
 msgstr ""
 
-#: lxc/action.go:133
+#: lxc/action.go:212
 msgid "Both --all and container name given"
 msgstr ""
 
-#: lxc/info.go:218
+#: lxc/info.go:222
 msgid "Bytes received"
 msgstr ""
 
-#: lxc/info.go:219
+#: lxc/info.go:223
 msgid "Bytes sent"
 msgstr ""
 
-#: lxc/operation.go:156
+#: lxc/operation.go:155
 msgid "CANCELABLE"
 msgstr ""
 
-#: lxc/config.go:403
+#: lxc/config_trust.go:175
 msgid "COMMON NAME"
 msgstr ""
 
-#: lxc/info.go:182
+#: lxc/info.go:186
 msgid "CPU usage (in seconds)"
 msgstr ""
 
-#: lxc/info.go:186
+#: lxc/info.go:190
 msgid "CPU usage:"
 msgstr ""
 
-#: lxc/operation.go:157
+#: lxc/operation.go:156
 msgid "CREATED"
 msgstr ""
 
-#: lxc/list.go:468
+#: lxc/list.go:465
 msgid "CREATED AT"
 msgstr ""
 
-#: lxc/image.go:631
+#: lxc/image.go:863
 #, c-format
 msgid "Cached: %s"
 msgstr ""
 
-#: lxc/file.go:501
+#: lxc/image.go:175
+msgid "Can't provide a name for the target image"
+msgstr ""
+
+#: lxc/file.go:261
 msgid "Can't pull a directory without --recursive"
 msgstr ""
 
-#: lxc/config.go:210 lxc/network.go:619
+#: lxc/config.go:400 lxc/network.go:969
 #, c-format
 msgid "Can't read from stdin: %s"
 msgstr ""
 
-#: lxc/rename.go:41
+#: lxc/remote.go:577
+msgid "Can't remove the default remote"
+msgstr ""
+
+#: lxc/list.go:481
+msgid "Can't specify --fast with --columns"
+msgstr ""
+
+#: lxc/rename.go:48
 msgid "Can't specify a different remote for rename."
 msgstr ""
 
-#: lxc/config.go:223
-#, c-format
-msgid "Can't unset key '%s', it's not currently set"
+#: lxc/list.go:493
+msgid "Can't specify column L when not clustered"
 msgstr ""
 
-#: lxc/config.go:265 lxc/config.go:291
-#, c-format
-msgid "Can't unset key '%s', it's not currently set."
+#: lxc/file.go:399
+msgid "Can't supply uid/gid/mode in recursive mode"
 msgstr ""
 
-#: lxc/profile.go:546 lxc/storage.go:696
-msgid "Cannot provide container name to list"
+#: lxc/config.go:413
+#, c-format
+msgid "Can't unset key '%s', it's not currently set"
 msgstr ""
 
-#: lxc/remote.go:203
+#: lxc/remote.go:252
 #, c-format
 msgid "Certificate fingerprint: %s"
 msgstr ""
 
-#: lxc/remote.go:315
+#: lxc/remote.go:364
 msgid "Client certificate stored at server: "
 msgstr ""
 
-#: lxc/image.go:175 lxc/image.go:176 lxc/list.go:134 lxc/list.go:135
+#: lxc/network.go:253 lxc/network.go:663 lxc/network.go:923 lxc/network.go:992
+#: lxc/network.go:1054 lxc/storage.go:92 lxc/storage.go:331 lxc/storage.go:576
+#: lxc/storage.go:649 lxc/storage.go:732 lxc/storage_volume.go:287
+#: lxc/storage_volume.go:429 lxc/storage_volume.go:504
+#: lxc/storage_volume.go:730 lxc/storage_volume.go:856
+#: lxc/storage_volume.go:998 lxc/storage_volume.go:1028
+#: lxc/storage_volume.go:1092 lxc/storage_volume.go:1175
+#: lxc/storage_volume.go:1244
+msgid "Cluster member name"
+msgstr ""
+
+#: lxc/image.go:912 lxc/list.go:112
 msgid "Columns"
 msgstr ""
 
-#: lxc/help.go:53
-msgid "Commands:"
+#: lxc/main.go:44
+msgid "Command line client for LXD"
+msgstr ""
+
+#: lxc/main.go:45
+msgid ""
+"Command line client for LXD\n"
+"\n"
+"All of LXD's features can be driven through the various commands below.\n"
+"For help with any of those, simply call them with --help."
 msgstr ""
 
-#: lxc/copy.go:37 lxc/copy.go:38 lxc/init.go:139 lxc/init.go:140
+#: lxc/copy.go:39 lxc/init.go:42
 msgid "Config key/value to apply to the new container"
 msgstr ""
 
-#: lxc/config.go:821 lxc/config.go:886 lxc/config.go:1396 lxc/image.go:1191
-#: lxc/network.go:445 lxc/profile.go:275 lxc/storage.go:647 lxc/storage.go:1209
+#: lxc/config.go:195 lxc/config.go:259 lxc/config_metadata.go:144
+#: lxc/image.go:405 lxc/network.go:631 lxc/profile.go:490 lxc/storage.go:298
+#: lxc/storage_volume.go:822
 #, c-format
 msgid "Config parsing error: %s"
 msgstr ""
 
-#: lxc/main.go:40
-msgid "Connection refused; is LXD running?"
-msgstr ""
-
-#: lxc/console.go:132
+#: lxc/console.go:141
 msgid "Console log:"
 msgstr ""
 
-#: lxc/publish.go:71
+#: lxc/publish.go:79
 msgid "Container name is mandatory"
 msgstr ""
 
-#: lxc/copy.go:243 lxc/init.go:321
+#: lxc/copy.go:260 lxc/init.go:229
 #, c-format
 msgid "Container name is: %s"
 msgstr ""
 
-#: lxc/publish.go:250
+#: lxc/publish.go:259
 #, c-format
 msgid "Container published with fingerprint: %s"
 msgstr ""
 
-#: lxc/copy.go:45 lxc/move.go:44
+#: lxc/copy.go:44 lxc/move.go:46
 msgid "Copy a stateful container stateless"
 msgstr ""
 
-#: lxc/image.go:178
+#: lxc/image.go:138
 msgid "Copy aliases from source"
 msgstr ""
 
-#: lxc/copy.go:44
+#: lxc/copy.go:34 lxc/copy.go:35
+msgid "Copy containers within or in between LXD instances"
+msgstr ""
+
+#: lxc/image.go:130
+msgid "Copy images between servers"
+msgstr ""
+
+#: lxc/image.go:131
+msgid ""
+"Copy images between servers\n"
+"\n"
+"The auto-update flag instructs the server to keep this image up to date.\n"
+"It requires the source to be an alias and for it to be public."
+msgstr ""
+
+#: lxc/config_device.go:317 lxc/config_device.go:318
+msgid "Copy profile inherited devices and override configuration keys"
+msgstr ""
+
+#: lxc/profile.go:240 lxc/profile.go:241
+msgid "Copy profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:282 lxc/storage_volume.go:283
+msgid "Copy storage volumes"
+msgstr ""
+
+#: lxc/copy.go:43
 msgid "Copy the container without its snapshots"
 msgstr ""
 
-#: lxc/image.go:449
+#: lxc/image.go:217
 #, c-format
 msgid "Copying the image: %s"
 msgstr ""
 
-#: lxc/storage.go:1134
+#: lxc/storage_volume.go:387
 #, c-format
 msgid "Copying the storage volume: %s"
 msgstr ""
 
-#: lxc/remote.go:218
+#: lxc/remote.go:267
 msgid "Could not create server cert dir"
 msgstr ""
 
-#: lxc/file.go:70 lxc/file.go:71
+#: lxc/image_alias.go:58 lxc/image_alias.go:59
+msgid "Create aliases for existing images"
+msgstr ""
+
+#: lxc/launch.go:21 lxc/launch.go:22
+msgid "Create and start containers from images"
+msgstr ""
+
+#: lxc/file.go:191 lxc/file.go:331
 msgid "Create any directories necessary"
 msgstr ""
 
-#: lxc/image.go:606 lxc/info.go:127
+#: lxc/snapshot.go:20
+msgid "Create container snapshots"
+msgstr ""
+
+#: lxc/snapshot.go:21
+msgid ""
+"Create container snapshots\n"
+"\n"
+"When --stateful is used, LXD attempts to checkpoint the container's\n"
+"running state, including process memory state, TCP connections, ..."
+msgstr ""
+
+#: lxc/init.go:34 lxc/init.go:35
+msgid "Create containers from images"
+msgstr ""
+
+#: lxc/config_template.go:66 lxc/config_template.go:67
+msgid "Create new container file templates"
+msgstr ""
+
+#: lxc/storage_volume.go:425 lxc/storage_volume.go:426
+msgid "Create new custom storage volumes"
+msgstr ""
+
+#: lxc/network.go:249 lxc/network.go:250
+msgid "Create new networks"
+msgstr ""
+
+#: lxc/profile.go:296 lxc/profile.go:297
+msgid "Create profiles"
+msgstr ""
+
+#: lxc/storage.go:88 lxc/storage.go:89
+msgid "Create storage pools"
+msgstr ""
+
+#: lxc/image.go:832 lxc/info.go:131
 #, c-format
 msgid "Created: %s"
 msgstr ""
 
-#: lxc/init.go:200
+#: lxc/init.go:98
 #, c-format
 msgid "Creating %s"
 msgstr ""
 
-#: lxc/init.go:198
+#: lxc/init.go:96
 msgid "Creating the container"
 msgstr ""
 
-#: lxc/cluster.go:185
+#: lxc/cluster.go:121
 msgid "DATABASE"
 msgstr ""
 
-#: lxc/image.go:235 lxc/image.go:1138 lxc/list.go:469 lxc/network.go:579
-#: lxc/operation.go:154 lxc/storage.go:732 lxc/storage.go:937
+#: lxc/image.go:925 lxc/image_alias.go:230 lxc/list.go:466 lxc/network.go:784
+#: lxc/operation.go:153 lxc/storage.go:545 lxc/storage_volume.go:967
 msgid "DESCRIPTION"
 msgstr ""
 
-#: lxc/storage.go:733
+#: lxc/storage.go:546
 msgid "DRIVER"
 msgstr ""
 
-#: lxc/publish.go:39
+#: lxc/publish.go:41
 msgid "Define a compression algorithm: for image or none"
 msgstr ""
 
-#: lxc/config.go:977
+#: lxc/operation.go:53 lxc/operation.go:54
+msgid "Delete a background operation (will attempt to cancel)"
+msgstr ""
+
+#: lxc/config_template.go:109 lxc/config_template.go:110
+msgid "Delete container file templates"
+msgstr ""
+
+#: lxc/delete.go:29 lxc/delete.go:30
+msgid "Delete containers and snapshots"
+msgstr ""
+
+#: lxc/file.go:72 lxc/file.go:73
+msgid "Delete files in containers"
+msgstr ""
+
+#: lxc/image_alias.go:105 lxc/image_alias.go:106
+msgid "Delete image aliases"
+msgstr ""
+
+#: lxc/image.go:260 lxc/image.go:261
+msgid "Delete images"
+msgstr ""
+
+#: lxc/network.go:319 lxc/network.go:320
+msgid "Delete networks"
+msgstr ""
+
+#: lxc/profile.go:347 lxc/profile.go:348
+msgid "Delete profiles"
+msgstr ""
+
+#: lxc/storage.go:160 lxc/storage.go:161
+msgid "Delete storage pools"
+msgstr ""
+
+#: lxc/storage_volume.go:500 lxc/storage_volume.go:501
+msgid "Delete storage volumes"
+msgstr ""
+
+#: lxc/action.go:30 lxc/action.go:49 lxc/action.go:69 lxc/action.go:91
+#: lxc/alias.go:23 lxc/alias.go:55 lxc/alias.go:99 lxc/alias.go:147
+#: lxc/alias.go:198 lxc/cluster.go:26 lxc/cluster.go:59 lxc/cluster.go:142
+#: lxc/cluster.go:192 lxc/cluster.go:238 lxc/config.go:29 lxc/config.go:88
+#: lxc/config.go:289 lxc/config.go:355 lxc/config.go:452 lxc/config.go:560
+#: lxc/config_device.go:24 lxc/config_device.go:76 lxc/config_device.go:179
+#: lxc/config_device.go:252 lxc/config_device.go:318 lxc/config_device.go:405
+#: lxc/config_device.go:493 lxc/config_device.go:582 lxc/config_device.go:650
+#: lxc/config_metadata.go:29 lxc/config_metadata.go:54
+#: lxc/config_metadata.go:176 lxc/config_template.go:30
+#: lxc/config_template.go:67 lxc/config_template.go:110
+#: lxc/config_template.go:152 lxc/config_template.go:236
+#: lxc/config_template.go:298 lxc/config_trust.go:30 lxc/config_trust.go:59
+#: lxc/config_trust.go:115 lxc/config_trust.go:197 lxc/console.go:32
+#: lxc/copy.go:35 lxc/delete.go:30 lxc/exec.go:39 lxc/file.go:40 lxc/file.go:73
+#: lxc/file.go:122 lxc/file.go:185 lxc/file.go:324 lxc/image.go:42
+#: lxc/image.go:131 lxc/image.go:261 lxc/image.go:312 lxc/image.go:435
+#: lxc/image.go:571 lxc/image.go:776 lxc/image.go:890 lxc/image.go:1212
+#: lxc/image.go:1285 lxc/image_alias.go:26 lxc/image_alias.go:59
+#: lxc/image_alias.go:106 lxc/image_alias.go:149 lxc/image_alias.go:250
+#: lxc/info.go:29 lxc/init.go:35 lxc/launch.go:22 lxc/list.go:48 lxc/main.go:45
+#: lxc/monitor.go:31 lxc/move.go:31 lxc/network.go:32 lxc/network.go:104
+#: lxc/network.go:177 lxc/network.go:250 lxc/network.go:320 lxc/network.go:367
+#: lxc/network.go:452 lxc/network.go:537 lxc/network.go:660 lxc/network.go:719
+#: lxc/network.go:808 lxc/network.go:873 lxc/network.go:920 lxc/network.go:989
+#: lxc/network.go:1051 lxc/operation.go:25 lxc/operation.go:54
+#: lxc/operation.go:98 lxc/operation.go:174 lxc/profile.go:30
+#: lxc/profile.go:102 lxc/profile.go:163 lxc/profile.go:241 lxc/profile.go:297
+#: lxc/profile.go:348 lxc/profile.go:396 lxc/profile.go:520 lxc/profile.go:568
+#: lxc/profile.go:632 lxc/profile.go:705 lxc/profile.go:753 lxc/profile.go:812
+#: lxc/profile.go:866 lxc/publish.go:34 lxc/query.go:27 lxc/remote.go:34
+#: lxc/remote.go:84 lxc/remote.go:380 lxc/remote.go:414 lxc/remote.go:487
+#: lxc/remote.go:549 lxc/remote.go:598 lxc/remote.go:636 lxc/rename.go:20
+#: lxc/restore.go:24 lxc/snapshot.go:21 lxc/storage.go:33 lxc/storage.go:89
+#: lxc/storage.go:161 lxc/storage.go:208 lxc/storage.go:328 lxc/storage.go:383
+#: lxc/storage.go:491 lxc/storage.go:573 lxc/storage.go:645 lxc/storage.go:729
+#: lxc/storage_volume.go:34 lxc/storage_volume.go:122 lxc/storage_volume.go:201
+#: lxc/storage_volume.go:283 lxc/storage_volume.go:426
+#: lxc/storage_volume.go:501 lxc/storage_volume.go:561
+#: lxc/storage_volume.go:643 lxc/storage_volume.go:724
+#: lxc/storage_volume.go:853 lxc/storage_volume.go:918
+#: lxc/storage_volume.go:994 lxc/storage_volume.go:1025
+#: lxc/storage_volume.go:1089 lxc/storage_volume.go:1166
+#: lxc/storage_volume.go:1241
+msgid "Description"
+msgstr ""
+
+#: lxc/network.go:366 lxc/network.go:367
+msgid "Detach network interfaces from containers"
+msgstr ""
+
+#: lxc/network.go:451 lxc/network.go:452
+msgid "Detach network interfaces from profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:560 lxc/storage_volume.go:561
+msgid "Detach storage volumes from containers"
+msgstr ""
+
+#: lxc/storage_volume.go:642 lxc/storage_volume.go:643
+msgid "Detach storage volumes from profiles"
+msgstr ""
+
+#: lxc/config_device.go:163
 #, c-format
 msgid "Device %s added to %s"
 msgstr ""
 
-#: lxc/config.go:1272
+#: lxc/config_device.go:387
 #, c-format
 msgid "Device %s overridden for %s"
 msgstr ""
 
-#: lxc/config.go:1213
+#: lxc/config_device.go:476
 #, c-format
 msgid "Device %s removed from %s"
 msgstr ""
 
-#: lxc/utils.go:192 lxc/utils.go:216
+#: lxc/utils.go:133 lxc/utils.go:157
 #, c-format
 msgid "Device already exists: %s"
 msgstr ""
 
-#: lxc/image.go:1290
+#: lxc/image.go:586
 msgid "Directory import is not available on this platform"
 msgstr ""
 
-#: lxc/exec.go:71
+#: lxc/exec.go:55
 msgid "Disable pseudo-terminal allocation"
 msgstr ""
 
-#: lxc/exec.go:72
+#: lxc/exec.go:56
 msgid "Disable stdin (reads from /dev/null)"
 msgstr ""
 
-#: lxc/info.go:175
+#: lxc/info.go:179
 msgid "Disk usage:"
 msgstr ""
 
-#: lxc/list.go:638
+#: lxc/list.go:635
 msgid "EPHEMERAL"
 msgstr ""
 
-#: lxc/config.go:405
+#: lxc/config_trust.go:177
 msgid "EXPIRY DATE"
 msgstr ""
 
-#: lxc/main.go:52
-msgid "Enable debug mode"
+#: lxc/config_template.go:151 lxc/config_template.go:152
+msgid "Edit container file templates"
 msgstr ""
 
-#: lxc/main.go:51
-msgid "Enable verbose mode"
+#: lxc/config_metadata.go:53 lxc/config_metadata.go:54
+msgid "Edit container metadata files"
 msgstr ""
 
-#: lxc/exec.go:68
-msgid "Environment variable to set (e.g. HOME=/home/foo)"
+#: lxc/config.go:87 lxc/config.go:88
+msgid "Edit container or server configurations as YAML"
+msgstr ""
+
+#: lxc/file.go:121 lxc/file.go:122
+msgid "Edit files in containers"
+msgstr ""
+
+#: lxc/image.go:311 lxc/image.go:312
+msgid "Edit image properties"
+msgstr ""
+
+#: lxc/network.go:536 lxc/network.go:537
+msgid "Edit network configurations as YAML"
+msgstr ""
+
+#: lxc/profile.go:395 lxc/profile.go:396
+msgid "Edit profile configurations as YAML"
+msgstr ""
+
+#: lxc/storage.go:207 lxc/storage.go:208
+msgid "Edit storage pool configurations as YAML"
+msgstr ""
+
+#: lxc/storage_volume.go:723 lxc/storage_volume.go:724
+msgid "Edit storage volume configurations as YAML"
+msgstr ""
+
+#: lxc/list.go:504
+#, c-format
+msgid "Empty column entry (redundant, leading or trailing command) in '%s'"
 msgstr ""
 
-#: lxc/help.go:77
-msgid "Environment:"
+#: lxc/exec.go:52
+msgid "Environment variable to set (e.g. HOME=/home/foo)"
 msgstr ""
 
-#: lxc/copy.go:41 lxc/copy.go:42 lxc/init.go:143 lxc/init.go:144
+#: lxc/copy.go:41 lxc/init.go:44
 msgid "Ephemeral container"
 msgstr ""
 
-#: lxc/config.go:1446
+#: lxc/config_template.go:204
 #, c-format
 msgid "Error updating template file: %s"
 msgstr ""
 
-#: lxc/monitor.go:69
+#: lxc/monitor.go:48
 msgid "Event type to listen for"
 msgstr ""
 
-#: lxc/image.go:610
+#: lxc/exec.go:38
+msgid "Execute commands in containers"
+msgstr ""
+
+#: lxc/exec.go:39
+msgid ""
+"Execute commands in containers\n"
+"\n"
+"The command is executed directly using exec, so there is no shell and\n"
+"shell patterns (variables, file redirects, ...) won't be understood.\n"
+"If you need a shell environment you need to execute the shell\n"
+"executable, passing the shell commands as arguments, for example:\n"
+"\n"
+"  lxc exec <container> -- sh -c \"cd /tmp && pwd\"\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:838
 #, c-format
 msgid "Expires: %s"
 msgstr ""
 
-#: lxc/image.go:612
+#: lxc/image.go:840
 msgid "Expires: never"
 msgstr ""
 
-#: lxc/image.go:922
+#: lxc/image.go:434
+msgid "Export and download images"
+msgstr ""
+
+#: lxc/image.go:435
+msgid ""
+"Export and download images\n"
+"\n"
+"The output target is optional and defaults to the working directory."
+msgstr ""
+
+#: lxc/image.go:494
 #, c-format
 msgid "Exporting the image: %s"
 msgstr ""
 
-#: lxc/config.go:761
+#: lxc/config_template.go:279
 msgid "FILENAME"
 msgstr ""
 
-#: lxc/config.go:402 lxc/image.go:233 lxc/image.go:1137
+#: lxc/config_trust.go:174 lxc/image.go:923 lxc/image_alias.go:229
 msgid "FINGERPRINT"
 msgstr ""
 
-#: lxc/utils.go:261
+#: lxc/utils.go:202
 #, c-format
 msgid "Failed to create alias %s"
 msgstr ""
 
-#: lxc/manpage.go:62
-#, c-format
-msgid "Failed to generate 'lxc.%s.1': %v"
-msgstr ""
-
-#: lxc/manpage.go:55
-#, c-format
-msgid "Failed to generate 'lxc.1': %v"
-msgstr ""
-
-#: lxc/copy.go:238
+#: lxc/copy.go:255
 msgid "Failed to get the new container name"
 msgstr ""
 
-#: lxc/utils.go:251
+#: lxc/utils.go:192
 #, c-format
 msgid "Failed to remove alias %s"
 msgstr ""
 
-#: lxc/file.go:137
+#: lxc/file.go:609
 #, c-format
 msgid "Failed to walk path for %s: %s"
 msgstr ""
 
-#: lxc/list.go:137
+#: lxc/list.go:114
 msgid "Fast mode (same as --columns=nsacPt)"
 msgstr ""
 
-#: lxc/network.go:536 lxc/operation.go:121
+#: lxc/network.go:749 lxc/operation.go:126
 msgid "Filtering isn't supported yet"
 msgstr ""
 
-#: lxc/image.go:599
+#: lxc/image.go:824
 #, c-format
 msgid "Fingerprint: %s"
 msgstr ""
 
-#: lxc/exec.go:70
+#: lxc/exec.go:54
 msgid "Force pseudo-terminal allocation"
 msgstr ""
 
-#: lxc/cluster.go:42
-msgid "Force removing a node, even if degraded"
+#: lxc/cluster.go:242
+msgid "Force removing a member, even if degraded"
 msgstr ""
 
-#: lxc/action.go:47 lxc/action.go:48
+#: lxc/action.go:121
 msgid "Force the container to shutdown"
 msgstr ""
 
-#: lxc/delete.go:34 lxc/delete.go:35
+#: lxc/delete.go:34
 msgid "Force the removal of running containers"
 msgstr ""
 
-#: lxc/main.go:53
+#: lxc/main.go:56
 msgid "Force using the local unix socket"
 msgstr ""
 
-#: lxc/image.go:181 lxc/list.go:136
+#: lxc/image.go:913 lxc/list.go:113
 msgid "Format (csv|json|table|yaml)"
 msgstr ""
 
-#: lxc/remote.go:166
+#: lxc/remote.go:211
 msgid "Generating a client certificate. This may take a minute..."
 msgstr ""
 
-#: lxc/network.go:513
+#: lxc/config_device.go:178 lxc/config_device.go:179
+msgid "Get values for container device configuration keys"
+msgstr ""
+
+#: lxc/config.go:288 lxc/config.go:289
+msgid "Get values for container or server configuration keys"
+msgstr ""
+
+#: lxc/network.go:659 lxc/network.go:660
+msgid "Get values for network configuration keys"
+msgstr ""
+
+#: lxc/profile.go:519 lxc/profile.go:520
+msgid "Get values for profile configuration keys"
+msgstr ""
+
+#: lxc/storage.go:327 lxc/storage.go:328
+msgid "Get values for storage pool configuration keys"
+msgstr ""
+
+#: lxc/storage_volume.go:852 lxc/storage_volume.go:853
+msgid "Get values for storage volume configuration keys"
+msgstr ""
+
+#: lxc/network.go:851
 msgid "HOSTNAME"
 msgstr ""
 
-#: lxc/operation.go:152
+#: lxc/operation.go:151
 msgid "ID"
 msgstr ""
 
-#: lxc/network.go:515
+#: lxc/network.go:853
 msgid "IP ADDRESS"
 msgstr ""
 
-#: lxc/list.go:465
+#: lxc/list.go:462
 msgid "IPV4"
 msgstr ""
 
-#: lxc/list.go:466
+#: lxc/list.go:463
 msgid "IPV6"
 msgstr ""
 
-#: lxc/config.go:404
+#: lxc/config_trust.go:176
 msgid "ISSUE DATE"
 msgstr ""
 
-#: lxc/main.go:171
+#: lxc/main.go:259
 msgid ""
 "If this is your first time running LXD on this machine, you should also run: "
 "lxd init"
 msgstr ""
 
-#: lxc/main.go:54
-msgid "Ignore aliases when determining what command to run"
-msgstr ""
-
-#: lxc/action.go:51
-msgid "Ignore the container state (only for start)"
+#: lxc/action.go:117
+msgid "Ignore the container state"
 msgstr ""
 
-#: lxc/image.go:557
+#: lxc/image.go:1268
 msgid "Image already up to date."
 msgstr ""
 
-#: lxc/image.go:463
+#: lxc/image.go:231
 msgid "Image copied successfully!"
 msgstr ""
 
-#: lxc/image.go:982
+#: lxc/image.go:554
 msgid "Image exported successfully!"
 msgstr ""
 
-#: lxc/image.go:778
+#: lxc/image.go:284 lxc/image.go:1235
+msgid "Image identifier missing"
+msgstr ""
+
+#: lxc/image.go:352
+#, c-format
+msgid "Image identifier missing: %s"
+msgstr ""
+
+#: lxc/image.go:749
 #, c-format
 msgid "Image imported with fingerprint: %s"
 msgstr ""
 
-#: lxc/image.go:555
+#: lxc/image.go:1266
 msgid "Image refreshed successfully!"
 msgstr ""
 
-#: lxc/query.go:39
+#: lxc/image.go:571
+msgid ""
+"Import image into the image store\n"
+"\n"
+"Directory import is only available on Linux and must be performed as root."
+msgstr ""
+
+#: lxc/image.go:570
+msgid "Import images into the image store"
+msgstr ""
+
+#: lxc/query.go:38
 msgid "Input data"
 msgstr ""
 
-#: lxc/init.go:149
+#: lxc/init.go:47
 msgid "Instance type"
 msgstr ""
 
-#: lxc/remote.go:118
+#: lxc/remote.go:163
 #, c-format
 msgid "Invalid URL scheme \"%s\" in \"%s\""
 msgstr ""
 
-#: lxc/config.go:383
+#: lxc/config_trust.go:155
 msgid "Invalid certificate"
 msgstr ""
 
-#: lxc/init.go:32 lxc/init.go:37
-msgid "Invalid configuration key"
+#: lxc/list.go:525
+#, c-format
+msgid "Invalid config key '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:520
+#, c-format
+msgid "Invalid config key column format (too many fields): '%s'"
+msgstr ""
+
+#: lxc/image.go:1196 lxc/list.go:386
+#, c-format
+msgid "Invalid format %q"
+msgstr ""
+
+#: lxc/list.go:543
+#, c-format
+msgid "Invalid max width (must -1, 0 or a positive integer) '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:540
+#, c-format
+msgid "Invalid max width (must be an integer) '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:531
+#, c-format
+msgid ""
+"Invalid name in '%s', empty string is only allowed when defining maxWidth"
+msgstr ""
+
+#: lxc/main.go:341
+msgid "Invalid number of arguments"
 msgstr ""
 
-#: lxc/file.go:560
+#: lxc/file.go:97
 #, c-format
 msgid "Invalid path %s"
 msgstr ""
 
-#: lxc/remote.go:107
+#: lxc/remote.go:152
 #, c-format
 msgid "Invalid protocol: %s"
 msgstr ""
 
-#: lxc/file.go:473
+#: lxc/file.go:243
 #, c-format
 msgid "Invalid source %s"
 msgstr ""
 
-#: lxc/file.go:250
+#: lxc/file.go:352
 #, c-format
 msgid "Invalid target %s"
 msgstr ""
 
-#: lxc/info.go:156
+#: lxc/info.go:160
 msgid "Ips:"
 msgstr ""
 
-#: lxc/image.go:179
+#: lxc/image.go:139
 msgid "Keep the image up to date after initial copy"
 msgstr ""
 
-#: lxc/list.go:470
+#: lxc/list.go:467
 msgid "LAST USED AT"
 msgstr ""
 
-#: lxc/list.go:492
+#: lxc/list.go:489
 msgid "LOCATION"
 msgstr ""
 
-#: lxc/main.go:38
-msgid "LXD socket not found; is LXD installed and running?"
+#: lxc/cluster.go:94
+msgid "LXD server isn't part of a cluster"
 msgstr ""
 
-#: lxc/image.go:615
+#: lxc/image.go:844
 #, c-format
 msgid "Last used: %s"
 msgstr ""
 
-#: lxc/image.go:617
+#: lxc/image.go:846
 msgid "Last used: never"
 msgstr ""
 
-#: lxc/info.go:119
-#, c-format
-msgid "Location: %s"
-msgstr ""
-
-#: lxc/info.go:271
-msgid "Log:"
-msgstr ""
-
-#: lxc/network.go:514
-msgid "MAC ADDRESS"
-msgstr ""
-
-#: lxc/network.go:578
-msgid "MANAGED"
+#: lxc/network.go:807 lxc/network.go:808
+msgid "List DHCP leases"
 msgstr ""
 
-#: lxc/cluster.go:187
-msgid "MESSAGE"
+#: lxc/alias.go:98 lxc/alias.go:99
+msgid "List aliases"
 msgstr ""
 
-#: lxc/image.go:177
-msgid "Make image public"
+#: lxc/cluster.go:58 lxc/cluster.go:59
+msgid "List all the cluster members"
 msgstr ""
 
-#: lxc/publish.go:35
-msgid "Make the image public"
+#: lxc/network.go:718 lxc/network.go:719
+msgid "List available networks"
 msgstr ""
 
-#: lxc/info.go:193
-msgid "Memory (current)"
+#: lxc/storage.go:490 lxc/storage.go:491
+msgid "List available storage pools"
 msgstr ""
 
-#: lxc/info.go:197
-msgid "Memory (peak)"
+#: lxc/operation.go:97 lxc/operation.go:98
+msgid "List background operations"
 msgstr ""
 
-#: lxc/info.go:209
-msgid "Memory usage:"
+#: lxc/config_device.go:251 lxc/config_device.go:252
+msgid "List container devices"
 msgstr ""
 
-#: lxc/monitor.go:70
-msgid "Minimum level for log messages"
+#: lxc/config_template.go:235 lxc/config_template.go:236
+msgid "List container file templates"
 msgstr ""
 
-#: lxc/utils.go:143
-msgid "Missing summary."
+#: lxc/list.go:47
+msgid "List containers"
 msgstr ""
 
-#: lxc/network.go:303 lxc/network.go:356 lxc/storage.go:435 lxc/storage.go:565
-msgid "More than one device matches, specify the device name."
-msgstr ""
+#: lxc/list.go:48
+msgid ""
+"List containers\n"
+"\n"
+"Default column layout: ns46tS\n"
+"Fast column layout: nsacPt\n"
+"\n"
+"== Filters ==\n"
+"A single keyword like \"web\" which will list any container with a name "
+"starting by \"web\".\n"
+"A regular expression on the container name. (e.g. .*web.*01$).\n"
+"A key/value pair referring to a configuration item. For those, the\n"
+"namespace can be abbreviated to the smallest unambiguous identifier.\n"
+"\n"
+"Examples:\n"
+"  - \"user.blah=abc\" will list all containers with the \"blah\" user "
+"property set to \"abc\".\n"
+"  - \"u.blah=abc\" will do the same\n"
+"  - \"security.privileged=true\" will list all privileged containers\n"
+"  - \"s.privileged=true\" will do the same\n"
+"\n"
+"A regular expression matching a configuration item or its value. (e.g. "
+"volatile.eth0.hwaddr=00:16:3e:.*).\n"
+"\n"
+"== Columns ==\n"
+"The -c option takes a comma separated list of arguments that control\n"
+"which container attributes to output when displaying in table or csv\n"
+"format.\n"
+"\n"
+"Column arguments are either pre-defined shorthand chars (see below),\n"
+"or (extended) config keys.\n"
+"\n"
+"Commas between consecutive shorthand chars are optional.\n"
+"\n"
+"Pre-defined column shorthand chars:\n"
+"  4 - IPv4 address\n"
+"  6 - IPv6 address\n"
+"  a - Architecture\n"
+"  b - Storage pool\n"
+"  c - Creation date\n"
+"  d - Description\n"
+"  l - Last used date\n"
+"  n - Name\n"
+"  N - Number of Processes\n"
+"  p - PID of the container's init process\n"
+"  P - Profiles\n"
+"  s - State\n"
+"  S - Number of snapshots\n"
+"  t - Type (persistent or ephemeral)\n"
+"  L - Location of the container (e.g. its node)\n"
+"\n"
+"Custom columns are defined with \"key[:name][:maxWidth]\":\n"
+"  KEY: The (extended) config key to display\n"
+"  NAME: Name to display in the column header.\n"
+"  Defaults to the key if not specified or empty.\n"
+"\n"
+"  MAXWIDTH: Max width of the column (longer results are truncated).\n"
+"  Defaults to -1 (unlimited). Use 0 to limit to the column header size."
+msgstr ""
+
+#: lxc/image_alias.go:148
+msgid "List image aliases"
+msgstr ""
+
+#: lxc/image_alias.go:149
+msgid ""
+"List image aliases\n"
+"\n"
+"Filters may be part of the image hash or part of the image alias name.\n"
+msgstr ""
+
+#: lxc/image.go:889
+msgid "List images"
+msgstr ""
+
+#: lxc/image.go:890
+msgid ""
+"List images\n"
+"\n"
+"Filters may be of the <key>=<value> form for property based filtering,\n"
+"or part of the image hash or part of the image alias name.\n"
+"\n"
+"The -c option takes a (optionally comma-separated) list of arguments\n"
+"that control which image attributes to output when displaying in table\n"
+"or csv format.\n"
+"\n"
+"Default column layout is: lfpdasu\n"
+"\n"
+"Column shorthand chars:\n"
+"\n"
+"    l - Shortest image alias (and optionally number of other aliases)\n"
+"    L - Newline-separated list of all image aliases\n"
+"    f - Fingerprint\n"
+"    p - Whether image is public\n"
+"    d - Description\n"
+"    a - Architecture\n"
+"    s - Size"
+msgstr ""
+
+#: lxc/profile.go:567 lxc/profile.go:568
+msgid "List profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:917 lxc/storage_volume.go:918
+msgid "List storage volumes"
+msgstr ""
+
+#: lxc/remote.go:413 lxc/remote.go:414
+msgid "List the available remotes"
+msgstr ""
+
+#: lxc/config_trust.go:114 lxc/config_trust.go:115
+msgid "List trusted clients"
+msgstr ""
+
+#: lxc/operation.go:24 lxc/operation.go:25
+msgid "List, show and delete background operations"
+msgstr ""
+
+#: lxc/info.go:123
+#, c-format
+msgid "Location: %s"
+msgstr ""
+
+#: lxc/info.go:275
+msgid "Log:"
+msgstr ""
+
+#: lxc/network.go:852
+msgid "MAC ADDRESS"
+msgstr ""
+
+#: lxc/network.go:783
+msgid "MANAGED"
+msgstr ""
+
+#: lxc/cluster.go:123
+msgid "MESSAGE"
+msgstr ""
+
+#: lxc/image.go:137 lxc/image.go:576
+msgid "Make image public"
+msgstr ""
+
+#: lxc/publish.go:38
+msgid "Make the image public"
+msgstr ""
+
+#: lxc/network.go:32
+msgid "Manage an attach containers to networks"
+msgstr ""
+
+#: lxc/network.go:31
+msgid "Manage and attach containers to networks"
+msgstr ""
+
+#: lxc/cluster.go:25 lxc/cluster.go:26
+msgid "Manage cluster members"
+msgstr ""
+
+#: lxc/alias.go:22 lxc/alias.go:23
+msgid "Manage command aliases"
+msgstr ""
+
+#: lxc/config.go:28 lxc/config.go:29
+msgid "Manage container and server configuration options"
+msgstr ""
+
+#: lxc/config_device.go:23 lxc/config_device.go:24
+msgid "Manage container devices"
+msgstr ""
+
+#: lxc/config_template.go:29 lxc/config_template.go:30
+msgid "Manage container file templates"
+msgstr ""
+
+#: lxc/config_metadata.go:28 lxc/config_metadata.go:29
+msgid "Manage container metadata files"
+msgstr ""
+
+#: lxc/file.go:39 lxc/file.go:40
+msgid "Manage files in containers"
+msgstr ""
+
+#: lxc/image_alias.go:25 lxc/image_alias.go:26
+msgid "Manage image aliases"
+msgstr ""
+
+#: lxc/image.go:41
+msgid "Manage images"
+msgstr ""
+
+#: lxc/image.go:42
+msgid ""
+"Manage images\n"
+"\n"
+"In LXD containers are created from images. Those images were themselves\n"
+"either generated from an existing container or downloaded from an image\n"
+"server.\n"
+"\n"
+"When using remote images, LXD will automatically cache images for you\n"
+"and remove them upon expiration.\n"
+"\n"
+"The image unique identifier is the hash (sha-256) of its representation\n"
+"as a compressed tarball (or for split images, the concatenation of the\n"
+"metadata and rootfs tarballs).\n"
+"\n"
+"Images can be referenced by their full hash, shortest unique partial\n"
+"hash or alias name (if one is set)."
+msgstr ""
+
+#: lxc/profile.go:29 lxc/profile.go:30
+msgid "Manage profiles"
+msgstr ""
+
+#: lxc/storage.go:32 lxc/storage.go:33
+msgid "Manage storage pools and volumes"
+msgstr ""
+
+#: lxc/storage_volume.go:33
+msgid "Manage storage volumes"
+msgstr ""
+
+#: lxc/storage_volume.go:34
+msgid ""
+"Manage storage volumes\n"
+"\n"
+"Unless specified through a prefix, all volume operations affect \"custom"
+"\" (user created) volumes."
+msgstr ""
+
+#: lxc/remote.go:33 lxc/remote.go:34
+msgid "Manage the list of remote servers"
+msgstr ""
+
+#: lxc/config_trust.go:29 lxc/config_trust.go:30
+msgid "Manage trusted clients"
+msgstr ""
+
+#: lxc/info.go:197
+msgid "Memory (current)"
+msgstr ""
+
+#: lxc/info.go:201
+msgid "Memory (peak)"
+msgstr ""
+
+#: lxc/info.go:213
+msgid "Memory usage:"
+msgstr ""
+
+#: lxc/monitor.go:49
+msgid "Minimum level for log messages"
+msgstr ""
+
+#: lxc/config_metadata.go:102 lxc/config_metadata.go:200
+#: lxc/config_template.go:91 lxc/config_template.go:134
+#: lxc/config_template.go:176 lxc/config_template.go:260
+#: lxc/config_template.go:322 lxc/profile.go:197 lxc/profile.go:656
+msgid "Missing container name"
+msgstr ""
+
+#: lxc/profile.go:126
+msgid "Missing container.name name"
+msgstr ""
+
+#: lxc/config_device.go:103 lxc/config_device.go:203 lxc/config_device.go:276
+#: lxc/config_device.go:342 lxc/config_device.go:429 lxc/config_device.go:517
+#: lxc/config_device.go:606
+msgid "Missing name"
+msgstr ""
+
+#: lxc/network.go:128 lxc/network.go:201 lxc/network.go:344 lxc/network.go:391
+#: lxc/network.go:476 lxc/network.go:581 lxc/network.go:686 lxc/network.go:832
+#: lxc/network.go:897 lxc/network.go:946 lxc/network.go:1015
+msgid "Missing network name"
+msgstr ""
+
+#: lxc/storage.go:185 lxc/storage.go:252 lxc/storage.go:353 lxc/storage.go:408
+#: lxc/storage.go:603 lxc/storage.go:677 lxc/storage_volume.go:146
+#: lxc/storage_volume.go:225 lxc/storage_volume.go:451
+#: lxc/storage_volume.go:526 lxc/storage_volume.go:585
+#: lxc/storage_volume.go:667 lxc/storage_volume.go:766
+#: lxc/storage_volume.go:878 lxc/storage_volume.go:942
+#: lxc/storage_volume.go:1050 lxc/storage_volume.go:1114
+#: lxc/storage_volume.go:1197
+msgid "Missing pool name"
+msgstr ""
+
+#: lxc/profile.go:321 lxc/profile.go:372 lxc/profile.go:444 lxc/profile.go:544
+#: lxc/profile.go:729 lxc/profile.go:777 lxc/profile.go:836
+msgid "Missing profile name"
+msgstr ""
+
+#: lxc/profile.go:266
+msgid "Missing source profile name"
+msgstr ""
 
-#: lxc/file.go:460
+#: lxc/storage_volume.go:311
+msgid "Missing source volume name"
+msgstr ""
+
+#: lxc/file.go:446
+msgid "Missing target directory"
+msgstr ""
+
+#: lxc/monitor.go:30
+msgid "Monitor a local or remote LXD server"
+msgstr ""
+
+#: lxc/monitor.go:31
+msgid ""
+"Monitor a local or remote LXD server\n"
+"\n"
+"By default the monitor will listen to all message types."
+msgstr ""
+
+#: lxc/network.go:411 lxc/network.go:496 lxc/storage_volume.go:605
+#: lxc/storage_volume.go:686
+msgid "More than one device matches, specify the device name."
+msgstr ""
+
+#: lxc/file.go:224
 msgid "More than one file to download, but target is not a directory"
 msgstr ""
 
-#: lxc/move.go:42
+#: lxc/move.go:30 lxc/move.go:31
+msgid "Move containers within or in between LXD instances"
+msgstr ""
+
+#: lxc/storage_volume.go:993 lxc/storage_volume.go:994
+msgid "Move storage volumes between pools"
+msgstr ""
+
+#: lxc/move.go:44
 msgid "Move the container without its snapshots"
 msgstr ""
 
-#: lxc/storage.go:1128
+#: lxc/storage_volume.go:375
 #, c-format
 msgid "Moving the storage volume: %s"
 msgstr ""
 
-#: lxc/image.go:1292
+#: lxc/image.go:588
 msgid "Must run as root to import from directory"
 msgstr ""
 
-#: lxc/action.go:74
+#: lxc/action.go:147
 msgid "Must supply container name for: "
 msgstr ""
 
-#: lxc/cluster.go:183 lxc/list.go:471 lxc/network.go:576 lxc/profile.go:573
-#: lxc/remote.go:409 lxc/storage.go:731 lxc/storage.go:936
+#: lxc/cluster.go:119 lxc/list.go:468 lxc/network.go:781 lxc/profile.go:613
+#: lxc/remote.go:463 lxc/storage.go:544 lxc/storage_volume.go:966
 msgid "NAME"
 msgstr ""
 
-#: lxc/network.go:558 lxc/operation.go:139 lxc/remote.go:380 lxc/remote.go:385
+#: lxc/network.go:763 lxc/operation.go:138 lxc/remote.go:434 lxc/remote.go:439
 msgid "NO"
 msgstr ""
 
-#: lxc/storage.go:941
+#: lxc/storage_volume.go:971
 msgid "NODE"
 msgstr ""
 
-#: lxc/info.go:117
+#: lxc/info.go:121
 #, c-format
 msgid "Name: %s"
 msgstr ""
 
-#: lxc/network.go:276
+#: lxc/network.go:303
 #, c-format
 msgid "Network %s created"
 msgstr ""
 
-#: lxc/network.go:393
+#: lxc/network.go:353
 #, c-format
 msgid "Network %s deleted"
 msgstr ""
 
-#: lxc/network.go:274
+#: lxc/network.go:301
 #, c-format
 msgid "Network %s pending on node %s"
 msgstr ""
 
-#: lxc/network.go:470
+#: lxc/network.go:906
 #, c-format
 msgid "Network %s renamed to %s"
 msgstr ""
 
-#: lxc/init.go:145 lxc/init.go:146
+#: lxc/init.go:45
 msgid "Network name"
 msgstr ""
 
-#: lxc/info.go:226
+#: lxc/info.go:230
 msgid "Network usage:"
 msgstr ""
 
-#: lxc/image.go:180 lxc/publish.go:36
+#: lxc/publish.go:39
 msgid "New alias to define at target"
 msgstr ""
 
-#: lxc/config.go:414
-msgid "No certificate provided to add"
+#: lxc/image.go:140 lxc/image.go:577
+msgid "New aliases to add to the image"
 msgstr ""
 
-#: lxc/network.go:312 lxc/network.go:365
+#: lxc/network.go:420 lxc/network.go:505
 msgid "No device found for this network"
 msgstr ""
 
-#: lxc/storage.go:444 lxc/storage.go:574
+#: lxc/storage_volume.go:614 lxc/storage_volume.go:695
 msgid "No device found for this storage volume."
 msgstr ""
 
-#: lxc/config.go:446
-msgid "No fingerprint specified."
-msgstr ""
-
-#: lxc/cluster.go:143
+#: lxc/cluster.go:268
 #, c-format
 msgid "Node %s removed"
 msgstr ""
 
-#: lxc/cluster.go:119
+#: lxc/cluster.go:221
 #, c-format
 msgid "Node %s renamed to %s"
 msgstr ""
 
-#: lxc/copy.go:46 lxc/init.go:150 lxc/move.go:45 lxc/network.go:105
-#: lxc/storage.go:165
+#: lxc/copy.go:45 lxc/init.go:48 lxc/move.go:47
 msgid "Node name"
 msgstr ""
 
-#: lxc/storage.go:388 lxc/storage.go:481
+#: lxc/storage_volume.go:164 lxc/storage_volume.go:243
 msgid "Only \"custom\" volumes can be attached to containers."
 msgstr ""
 
-#: lxc/remote.go:101
+#: lxc/remote.go:146
 msgid "Only https URLs are supported for simplestreams"
 msgstr ""
 
-#: lxc/image.go:688
+#: lxc/image.go:658
 msgid "Only https:// is supported for remote image import."
 msgstr ""
 
-#: lxc/network.go:421 lxc/network.go:605
+#: lxc/network.go:607 lxc/network.go:960
 msgid "Only managed networks can be modified."
 msgstr ""
 
-#: lxc/operation.go:85
+#: lxc/operation.go:83
 #, c-format
 msgid "Operation %s deleted"
 msgstr ""
 
-#: lxc/help.go:71 lxc/main.go:139 lxc/main.go:195
-msgid "Options:"
-msgstr ""
-
-#: lxc/exec.go:69
+#: lxc/exec.go:53
 msgid "Override the terminal mode (auto, interactive or non-interactive)"
 msgstr ""
 
-#: lxc/list.go:641
+#: lxc/list.go:638
 msgid "PERSISTENT"
 msgstr ""
 
-#: lxc/list.go:473
+#: lxc/list.go:470
 msgid "PID"
 msgstr ""
 
-#: lxc/list.go:472
+#: lxc/list.go:469
 msgid "PROCESSES"
 msgstr ""
 
-#: lxc/list.go:474
+#: lxc/list.go:471
 msgid "PROFILES"
 msgstr ""
 
-#: lxc/remote.go:411
+#: lxc/remote.go:465
 msgid "PROTOCOL"
 msgstr ""
 
-#: lxc/image.go:234 lxc/remote.go:413
+#: lxc/image.go:924 lxc/remote.go:467
 msgid "PUBLIC"
 msgstr ""
 
-#: lxc/info.go:220
+#: lxc/info.go:224
 msgid "Packets received"
 msgstr ""
 
-#: lxc/info.go:221
+#: lxc/info.go:225
 msgid "Packets sent"
 msgstr ""
 
-#: lxc/help.go:78
-msgid "Path to an alternate client configuration directory"
-msgstr ""
-
-#: lxc/help.go:79
-msgid "Path to an alternate server directory"
-msgstr ""
-
-#: lxc/main.go:240
-msgid "Pause containers."
-msgstr ""
-
-#: lxc/main.go:42
-msgid "Permission denied, are you in the lxd group?"
+#: lxc/action.go:48 lxc/action.go:49
+msgid "Pause containers"
 msgstr ""
 
-#: lxc/info.go:138
+#: lxc/info.go:142
 #, c-format
 msgid "Pid: %d"
 msgstr ""
 
-#: lxc/network.go:446 lxc/profile.go:276 lxc/storage.go:648 lxc/storage.go:1210
+#: lxc/network.go:632 lxc/profile.go:491 lxc/storage.go:299
+#: lxc/storage_volume.go:823
 msgid "Press enter to open the editor again"
 msgstr ""
 
-#: lxc/config.go:822 lxc/config.go:887 lxc/config.go:1397 lxc/config.go:1447
-#: lxc/image.go:1192
+#: lxc/config.go:196 lxc/config.go:260 lxc/config_metadata.go:145
+#: lxc/config_template.go:205 lxc/image.go:406
 msgid "Press enter to start the editor again"
 msgstr ""
 
-#: lxc/monitor.go:68
+#: lxc/monitor.go:47
 msgid "Pretty rendering"
 msgstr ""
 
-#: lxc/help.go:73
-msgid "Print debug information"
-msgstr ""
-
-#: lxc/help.go:72
-msgid "Print less common commands"
+#: lxc/main.go:55
+msgid "Print help"
 msgstr ""
 
-#: lxc/query.go:37
+#: lxc/query.go:36
 msgid "Print the raw response"
 msgstr ""
 
-#: lxc/help.go:74
-msgid "Print verbose information"
+#: lxc/main.go:54
+msgid "Print version number"
 msgstr ""
 
-#: lxc/info.go:162
+#: lxc/info.go:166
 #, c-format
 msgid "Processes: %d"
 msgstr ""
 
-#: lxc/profile.go:362
+#: lxc/main_aliases.go:123 lxc/main_aliases.go:131
+#, c-format
+msgid "Processing aliases failed: %s\n"
+msgstr ""
+
+#: lxc/profile.go:147
 #, c-format
 msgid "Profile %s added to %s"
 msgstr ""
 
-#: lxc/profile.go:226
+#: lxc/profile.go:333
 #, c-format
 msgid "Profile %s created"
 msgstr ""
 
-#: lxc/profile.go:310
+#: lxc/profile.go:381
 #, c-format
 msgid "Profile %s deleted"
 msgstr ""
 
-#: lxc/profile.go:397
+#: lxc/profile.go:690
 #, c-format
 msgid "Profile %s removed from %s"
 msgstr ""
 
-#: lxc/profile.go:300
+#: lxc/profile.go:738
 #, c-format
 msgid "Profile %s renamed to %s"
 msgstr ""
 
-#: lxc/copy.go:39 lxc/copy.go:40 lxc/init.go:141 lxc/init.go:142
+#: lxc/copy.go:40 lxc/init.go:43
 msgid "Profile to apply to the new container"
 msgstr ""
 
-#: lxc/profile.go:339
+#: lxc/profile.go:225
 #, c-format
 msgid "Profiles %s applied to %s"
 msgstr ""
 
-#: lxc/info.go:136
+#: lxc/info.go:140
 #, c-format
 msgid "Profiles: %s"
 msgstr ""
 
-#: lxc/image.go:619
+#: lxc/image.go:849
 msgid "Properties:"
 msgstr ""
 
-#: lxc/remote.go:72
+#: lxc/remote.go:92
 msgid "Public image server"
 msgstr ""
 
-#: lxc/image.go:602
+#: lxc/image.go:827
 #, c-format
 msgid "Public: %s"
 msgstr ""
 
-#: lxc/file.go:68 lxc/file.go:69
-msgid "Recursively push or pull files"
+#: lxc/publish.go:33 lxc/publish.go:34
+msgid "Publish containers as images"
 msgstr ""
 
-#: lxc/image.go:529
-#, c-format
-msgid "Refreshing the image: %s"
+#: lxc/file.go:184 lxc/file.go:185
+msgid "Pull files from containers"
 msgstr ""
 
-#: lxc/remote.go:69
-msgid "Remote admin password"
+#: lxc/file.go:323 lxc/file.go:324
+msgid "Push files into containers"
 msgstr ""
 
-#: lxc/utils/cancel.go:34
-msgid "Remote operation canceled by user"
+#: lxc/file.go:192 lxc/file.go:330
+msgid "Recursively transfer files"
+msgstr ""
+
+#: lxc/image.go:1211 lxc/image.go:1212
+msgid "Refresh images"
 msgstr ""
 
-#: lxc/info.go:122
+#: lxc/image.go:1239
 #, c-format
-msgid "Remote: %s"
+msgid "Refreshing the image: %s"
 msgstr ""
 
-#: lxc/delete.go:42
+#: lxc/remote.go:515
 #, c-format
-msgid "Remove %s (yes/no): "
+msgid "Remote %s already exists"
 msgstr ""
 
-#: lxc/storage.go:1247
+#: lxc/remote.go:507 lxc/remote.go:569 lxc/remote.go:618 lxc/remote.go:656
 #, c-format
-msgid "Renamed storage volume from \"%s\" to \"%s\""
+msgid "Remote %s doesn't exist"
 msgstr ""
 
-#: lxc/delete.go:36 lxc/delete.go:37
-msgid "Require user confirmation"
+#: lxc/remote.go:116
+#, c-format
+msgid "Remote %s exists as <%s>"
 msgstr ""
 
-#: lxc/info.go:159
-msgid "Resources:"
+#: lxc/remote.go:511 lxc/remote.go:573 lxc/remote.go:660
+#, c-format
+msgid "Remote %s is static and cannot be modified"
 msgstr ""
 
-#: lxc/main.go:248
-msgid "Restart containers."
+#: lxc/remote.go:89
+msgid "Remote admin password"
 msgstr ""
 
-#: lxc/console.go:38
-msgid "Retrieve the container's console log"
+#: lxc/utils/cancel.go:34
+msgid "Remote operation canceled by user"
 msgstr ""
 
-#: lxc/init.go:293
+#: lxc/info.go:126
 #, c-format
-msgid "Retrieving image: %s"
+msgid "Remote: %s"
 msgstr ""
 
-#: lxc/action.go:52
-msgid "Run command against all containers"
+#: lxc/delete.go:42
+#, c-format
+msgid "Remove %s (yes/no): "
 msgstr ""
 
-#: lxc/image.go:237
-msgid "SIZE"
+#: lxc/cluster.go:237 lxc/cluster.go:238
+msgid "Remove a member from the cluster"
 msgstr ""
 
-#: lxc/list.go:475
-msgid "SNAPSHOTS"
+#: lxc/alias.go:197 lxc/alias.go:198
+msgid "Remove aliases"
 msgstr ""
 
-#: lxc/storage.go:738
-msgid "SOURCE"
+#: lxc/config_device.go:404 lxc/config_device.go:405
+msgid "Remove container devices"
 msgstr ""
 
-#: lxc/cluster.go:186 lxc/list.go:476 lxc/network.go:583 lxc/storage.go:736
-msgid "STATE"
+#: lxc/profile.go:631 lxc/profile.go:632
+msgid "Remove profiles from containers"
 msgstr ""
 
-#: lxc/remote.go:414
-msgid "STATIC"
+#: lxc/remote.go:548 lxc/remote.go:549
+msgid "Remove remotes"
 msgstr ""
 
-#: lxc/operation.go:155
-msgid "STATUS"
+#: lxc/config_trust.go:196 lxc/config_trust.go:197
+msgid "Remove trusted clients"
 msgstr ""
 
-#: lxc/list.go:478
-msgid "STORAGE POOL"
+#: lxc/cluster.go:191 lxc/cluster.go:192
+msgid "Rename a cluster member"
 msgstr ""
 
-#: lxc/remote.go:71
-msgid "Server authentication type (tls or macaroons)"
+#: lxc/alias.go:146 lxc/alias.go:147 lxc/image_alias.go:249
+#: lxc/image_alias.go:250
+msgid "Rename aliases"
 msgstr ""
 
-#: lxc/remote.go:211
-msgid "Server certificate NACKed by user"
+#: lxc/rename.go:19 lxc/rename.go:20
+msgid "Rename containers and snapshots"
 msgstr ""
 
-#: lxc/remote.go:311
-msgid "Server doesn't trust us after authentication"
+#: lxc/network.go:872 lxc/network.go:873
+msgid "Rename networks"
 msgstr ""
 
-#: lxc/remote.go:70
-msgid "Server protocol (lxd or simplestreams)"
+#: lxc/profile.go:704 lxc/profile.go:705
+msgid "Rename profiles"
 msgstr ""
 
-#: lxc/file.go:66
-msgid "Set the file's gid on push"
+#: lxc/remote.go:486 lxc/remote.go:487
+msgid "Rename remotes"
 msgstr ""
 
-#: lxc/file.go:67
-msgid "Set the file's perms on push"
+#: lxc/storage_volume.go:1024 lxc/storage_volume.go:1025
+msgid "Rename storage volumes"
 msgstr ""
 
-#: lxc/file.go:65
-msgid "Set the file's uid on push"
+#: lxc/storage_volume.go:1073
+#, c-format
+msgid "Renamed storage volume from \"%s\" to \"%s\""
 msgstr ""
 
-#: lxc/help.go:29
-msgid "Show all commands (not just interesting ones)"
+#: lxc/delete.go:35
+msgid "Require user confirmation"
 msgstr ""
 
-#: lxc/help.go:75
-msgid "Show client version"
+#: lxc/info.go:163
+msgid "Resources:"
 msgstr ""
 
-#: lxc/info.go:40
-msgid "Show the container's last 100 log lines?"
+#: lxc/action.go:68
+msgid "Restart containers"
 msgstr ""
 
-#: lxc/config.go:36
-msgid "Show the expanded configuration"
+#: lxc/action.go:69
+msgid ""
+"Restart containers\n"
+"\n"
+"The opposite of \"lxc pause\" is \"lxc start\"."
 msgstr ""
 
-#: lxc/info.go:41
-msgid "Show the resources available to the server"
+#: lxc/restore.go:23
+msgid "Restore containers from snapshots"
 msgstr ""
 
-#: lxc/storage.go:163
-msgid "Show the resources available to the storage pool"
+#: lxc/restore.go:24
+msgid ""
+"Restore containers from snapshots\n"
+"\n"
+"If --stateful is passed, then the running state will be restored too."
+msgstr ""
+
+#: lxc/console.go:39
+msgid "Retrieve the container's console log"
+msgstr ""
+
+#: lxc/init.go:201
+#, c-format
+msgid "Retrieving image: %s"
+msgstr ""
+
+#: lxc/action.go:112
+msgid "Run command against all containers"
+msgstr ""
+
+#: lxc/image.go:927
+msgid "SIZE"
+msgstr ""
+
+#: lxc/list.go:472
+msgid "SNAPSHOTS"
+msgstr ""
+
+#: lxc/storage.go:551
+msgid "SOURCE"
+msgstr ""
+
+#: lxc/cluster.go:122 lxc/list.go:473 lxc/network.go:788 lxc/storage.go:549
+msgid "STATE"
+msgstr ""
+
+#: lxc/remote.go:468
+msgid "STATIC"
+msgstr ""
+
+#: lxc/operation.go:154
+msgid "STATUS"
+msgstr ""
+
+#: lxc/list.go:475
+msgid "STORAGE POOL"
+msgstr ""
+
+#: lxc/query.go:26 lxc/query.go:27
+msgid "Send a raw query to LXD"
+msgstr ""
+
+#: lxc/remote.go:91
+msgid "Server authentication type (tls or macaroons)"
+msgstr ""
+
+#: lxc/remote.go:260
+msgid "Server certificate NACKed by user"
+msgstr ""
+
+#: lxc/remote.go:360
+msgid "Server doesn't trust us after authentication"
+msgstr ""
+
+#: lxc/remote.go:90
+msgid "Server protocol (lxd or simplestreams)"
+msgstr ""
+
+#: lxc/config_device.go:492 lxc/config_device.go:493
+msgid "Set container device configuration keys"
+msgstr ""
+
+#: lxc/config.go:354 lxc/config.go:355
+msgid "Set container or server configuration keys"
+msgstr ""
+
+#: lxc/network.go:919 lxc/network.go:920
+msgid "Set network configuration keys"
+msgstr ""
+
+#: lxc/profile.go:752 lxc/profile.go:753
+msgid "Set profile configuration keys"
+msgstr ""
+
+#: lxc/storage.go:572 lxc/storage.go:573
+msgid "Set storage pool configuration keys"
+msgstr ""
+
+#: lxc/storage_volume.go:1088 lxc/storage_volume.go:1089
+msgid "Set storage volume configuration keys"
+msgstr ""
+
+#: lxc/remote.go:635 lxc/remote.go:636
+msgid "Set the URL for the remote"
+msgstr ""
+
+#: lxc/remote.go:597 lxc/remote.go:598
+msgid "Set the default remote"
+msgstr ""
+
+#: lxc/file.go:333
+msgid "Set the file's gid on push"
+msgstr ""
+
+#: lxc/file.go:334
+msgid "Set the file's perms on push"
+msgstr ""
+
+#: lxc/file.go:332
+msgid "Set the file's uid on push"
+msgstr ""
+
+#: lxc/main.go:57
+msgid "Show all debug messages"
+msgstr ""
+
+#: lxc/main.go:58
+msgid "Show all information messages"
+msgstr ""
+
+#: lxc/config_metadata.go:175 lxc/config_metadata.go:176
+msgid "Show container metadata files"
+msgstr ""
+
+#: lxc/config.go:451 lxc/config.go:452
+msgid "Show container or server configurations"
+msgstr ""
+
+#: lxc/info.go:28 lxc/info.go:29
+msgid "Show container or server information"
+msgstr ""
+
+#: lxc/config_template.go:297 lxc/config_template.go:298
+msgid "Show content of container file templates"
+msgstr ""
+
+#: lxc/cluster.go:141 lxc/cluster.go:142
+msgid "Show details of a cluster member"
+msgstr ""
+
+#: lxc/operation.go:173 lxc/operation.go:174
+msgid "Show details on a background operation"
+msgstr ""
+
+#: lxc/config_device.go:581 lxc/config_device.go:582
+msgid "Show full device configuration for containers or profiles"
+msgstr ""
+
+#: lxc/image.go:1284 lxc/image.go:1285
+msgid "Show image properties"
+msgstr ""
+
+#: lxc/main.go:61
+msgid "Show less common commands"
 msgstr ""
 
-#: lxc/storage.go:164
+#: lxc/network.go:988 lxc/network.go:989
+msgid "Show network configurations"
+msgstr ""
+
+#: lxc/profile.go:811 lxc/profile.go:812
+msgid "Show profile configurations"
+msgstr ""
+
+#: lxc/storage.go:644 lxc/storage.go:645
+msgid "Show storage pool configurations and resources"
+msgstr ""
+
+#: lxc/storage_volume.go:1165
+msgid "Show storage volum configurations"
+msgstr ""
+
+#: lxc/storage_volume.go:1166
+msgid "Show storage volume configurations"
+msgstr ""
+
+#: lxc/info.go:39
+msgid "Show the container's last 100 log lines?"
+msgstr ""
+
+#: lxc/remote.go:379 lxc/remote.go:380
+msgid "Show the default remote"
+msgstr ""
+
+#: lxc/config.go:455
+msgid "Show the expanded configuration"
+msgstr ""
+
+#: lxc/info.go:40
+msgid "Show the resources available to the server"
+msgstr ""
+
+#: lxc/storage.go:648
+msgid "Show the resources available to the storage pool"
+msgstr ""
+
+#: lxc/storage.go:386
 msgid "Show the used and free space in bytes"
 msgstr ""
 
-#: lxc/image.go:600
+#: lxc/image.go:775 lxc/image.go:776
+msgid "Show useful information about images"
+msgstr ""
+
+#: lxc/storage.go:382 lxc/storage.go:383
+msgid "Show useful information about storage pools"
+msgstr ""
+
+#: lxc/image.go:825
 #, c-format
 msgid "Size: %.2fMB"
 msgstr ""
 
-#: lxc/info.go:240
+#: lxc/info.go:244
 msgid "Snapshots:"
 msgstr ""
 
-#: lxc/action.go:163
+#: lxc/action.go:242
 #, c-format
 msgid "Some containers failed to %s"
 msgstr ""
 
-#: lxc/image.go:634
+#: lxc/image.go:867
 msgid "Source:"
 msgstr ""
 
-#: lxc/main.go:258
-msgid "Start containers."
+#: lxc/action.go:29 lxc/action.go:30
+msgid "Start containers"
 msgstr ""
 
-#: lxc/launch.go:59
+#: lxc/launch.go:62
 #, c-format
 msgid "Starting %s"
 msgstr ""
 
-#: lxc/info.go:130
+#: lxc/info.go:134
 #, c-format
 msgid "Status: %s"
 msgstr ""
 
-#: lxc/main.go:264
-msgid "Stop containers."
+#: lxc/action.go:90 lxc/action.go:91
+msgid "Stop containers"
 msgstr ""
 
-#: lxc/publish.go:37 lxc/publish.go:38
+#: lxc/publish.go:40
 msgid "Stop the container if currently running"
 msgstr ""
 
-#: lxc/publish.go:136
+#: lxc/publish.go:144
 msgid "Stopping container failed!"
 msgstr ""
 
-#: lxc/delete.go:121
+#: lxc/delete.go:120
 #, c-format
 msgid "Stopping the container failed: %s"
 msgstr ""
 
-#: lxc/storage.go:538
+#: lxc/storage.go:144
 #, c-format
 msgid "Storage pool %s created"
 msgstr ""
 
-#: lxc/storage.go:598
+#: lxc/storage.go:194
 #, c-format
 msgid "Storage pool %s deleted"
 msgstr ""
 
-#: lxc/storage.go:536
+#: lxc/storage.go:142
 #, c-format
 msgid "Storage pool %s pending on node %s"
 msgstr ""
 
-#: lxc/init.go:147 lxc/init.go:148
+#: lxc/init.go:46
 msgid "Storage pool name"
 msgstr ""
 
-#: lxc/storage.go:980
+#: lxc/storage_volume.go:484
 #, c-format
 msgid "Storage volume %s created"
 msgstr ""
 
-#: lxc/storage.go:1000
+#: lxc/storage_volume.go:545
 #, c-format
 msgid "Storage volume %s deleted"
 msgstr ""
 
-#: lxc/storage.go:1135
+#: lxc/storage_volume.go:388
 msgid "Storage volume copied successfully!"
 msgstr ""
 
-#: lxc/storage.go:1129
+#: lxc/storage_volume.go:376
 msgid "Storage volume moved successfully!"
 msgstr ""
 
-#: lxc/action.go:50
-msgid "Store the container state (only for stop)"
+#: lxc/action.go:115
+msgid "Store the container state"
 msgstr ""
 
-#: lxc/info.go:201
+#: lxc/info.go:205
 msgid "Swap (current)"
 msgstr ""
 
-#: lxc/info.go:205
+#: lxc/info.go:209
 msgid "Swap (peak)"
 msgstr ""
 
-#: lxc/alias.go:85
+#: lxc/alias.go:128
 msgid "TARGET"
 msgstr ""
 
-#: lxc/list.go:477 lxc/network.go:516 lxc/network.go:577 lxc/operation.go:153
-#: lxc/storage.go:935
+#: lxc/list.go:474 lxc/network.go:782 lxc/network.go:854 lxc/operation.go:152
+#: lxc/storage_volume.go:965
 msgid "TYPE"
 msgstr ""
 
-#: lxc/delete.go:105
+#: lxc/delete.go:104
 msgid "The container is currently running, stop it first or pass --force."
 msgstr ""
 
-#: lxc/publish.go:101
+#: lxc/publish.go:109
 msgid ""
 "The container is currently running. Use --force to have it stopped and "
 "restarted."
 msgstr ""
 
-#: lxc/init.go:372
+#: lxc/init.go:280
 msgid "The container you are starting doesn't have any network attached to it."
 msgstr ""
 
-#: lxc/config.go:944 lxc/config.go:961 lxc/config.go:1240
+#: lxc/config_device.go:130 lxc/config_device.go:147 lxc/config_device.go:354
 msgid "The device already exists"
 msgstr ""
 
-#: lxc/config.go:1007 lxc/config.go:1019 lxc/config.go:1055 lxc/config.go:1073
-#: lxc/config.go:1119 lxc/config.go:1136 lxc/config.go:1179 lxc/config.go:1197
+#: lxc/config_device.go:218 lxc/config_device.go:230 lxc/config_device.go:442
+#: lxc/config_device.go:460 lxc/config_device.go:533 lxc/config_device.go:550
 msgid "The device doesn't exist"
 msgstr ""
 
-#: lxc/init.go:356
+#: lxc/init.go:264
 #, c-format
 msgid "The local image '%s' couldn't be found, trying '%s:%s' instead."
 msgstr ""
 
-#: lxc/init.go:352
+#: lxc/init.go:260
 #, c-format
 msgid "The local image '%s' couldn't be found, trying '%s:' instead."
 msgstr ""
 
-#: lxc/action.go:35
-msgid "The opposite of \"lxc pause\" is \"lxc start\"."
-msgstr ""
-
-#: lxc/config.go:1245
+#: lxc/config_device.go:359
 msgid "The profile device doesn't exist"
 msgstr ""
 
-#: lxc/network.go:317 lxc/network.go:370 lxc/storage.go:449 lxc/storage.go:579
+#: lxc/network.go:425 lxc/network.go:510 lxc/storage_volume.go:619
+#: lxc/storage_volume.go:700
 msgid "The specified device doesn't exist"
 msgstr ""
 
-#: lxc/network.go:321 lxc/network.go:374
+#: lxc/network.go:429 lxc/network.go:514
 msgid "The specified device doesn't match the network"
 msgstr ""
 
-#: lxc/publish.go:74
+#: lxc/publish.go:82
 msgid "There is no \"image name\".  Did you want an alias?"
 msgstr ""
 
-#: lxc/help.go:47
-msgid ""
-"This is the LXD command line client.\n"
-"\n"
-"All of LXD's features can be driven through the various commands below.\n"
-"For help with any of those, simply call them with --help."
-msgstr ""
-
-#: lxc/action.go:46
+#: lxc/action.go:122
 msgid "Time to wait for the container before killing it"
 msgstr ""
 
-#: lxc/image.go:603
+#: lxc/image.go:828
 msgid "Timestamps:"
 msgstr ""
 
-#: lxc/init.go:374
+#: lxc/init.go:282
 msgid "To attach a network to a container, use: lxc network attach"
 msgstr ""
 
-#: lxc/init.go:373
+#: lxc/init.go:281
 msgid "To create a new network, use: lxc network create"
 msgstr ""
 
-#: lxc/console.go:173
+#: lxc/console.go:185
 msgid "To detach from the console, press: <ctrl>+a q"
 msgstr ""
 
-#: lxc/main.go:172
+#: lxc/main.go:260
 msgid "To start your first container, try: lxc launch ubuntu:16.04"
 msgstr ""
 
-#: lxc/copy.go:43 lxc/move.go:43
+#: lxc/storage_volume.go:997
+msgid "Transfer mode, one of pull (default), push or relay"
+msgstr ""
+
+#: lxc/copy.go:42
+msgid "Transfer mode. One of pull (default), push or relay"
+msgstr ""
+
+#: lxc/move.go:45 lxc/storage_volume.go:286
 msgid "Transfer mode. One of pull (default), push or relay."
 msgstr ""
 
-#: lxc/copy.go:212
+#: lxc/copy.go:229
 #, c-format
 msgid "Transferring container: %s"
 msgstr ""
 
-#: lxc/image.go:717
+#: lxc/image.go:687
 #, c-format
 msgid "Transferring image: %s"
 msgstr ""
 
-#: lxc/action.go:108 lxc/launch.go:77
+#: lxc/action.go:181 lxc/launch.go:80
 #, c-format
 msgid "Try `lxc info --show-log %s` for more info"
 msgstr ""
 
-#: lxc/info.go:132
+#: lxc/info.go:136
 msgid "Type: ephemeral"
 msgstr ""
 
-#: lxc/info.go:134
+#: lxc/info.go:138
 msgid "Type: persistent"
 msgstr ""
 
-#: lxc/image.go:238
+#: lxc/image.go:928
 msgid "UPLOAD DATE"
 msgstr ""
 
-#: lxc/cluster.go:184 lxc/remote.go:410
+#: lxc/cluster.go:120 lxc/remote.go:464
 msgid "URL"
 msgstr ""
 
-#: lxc/network.go:580 lxc/profile.go:574 lxc/storage.go:740 lxc/storage.go:938
+#: lxc/network.go:785 lxc/profile.go:614 lxc/storage.go:553
+#: lxc/storage_volume.go:968
 msgid "USED BY"
 msgstr ""
 
-#: lxc/manpage.go:36
-msgid "Unable to find help2man."
+#: lxc/list.go:514
+#, c-format
+msgid "Unknown column shorthand char '%c' in '%s'"
 msgstr ""
 
-#: lxc/file.go:124
+#: lxc/file.go:596
 #, c-format
 msgid "Unknown file type '%s'"
 msgstr ""
 
-#: lxc/image.go:608
-#, c-format
-msgid "Uploaded: %s"
+#: lxc/config_device.go:649 lxc/config_device.go:650
+msgid "Unset container device configuration keys"
 msgstr ""
 
-#: lxc/action.go:38
-#, c-format
-msgid ""
-"Usage: lxc %s [--all] [<remote>:]<container> [[<remote>:]<container>...]\n"
-"\n"
-"%s%s"
+#: lxc/config.go:559 lxc/config.go:560
+msgid "Unset container or server configuration keys"
 msgstr ""
 
-#: lxc/help.go:45
-msgid "Usage: lxc <command> [options]"
+#: lxc/network.go:1050 lxc/network.go:1051
+msgid "Unset network configuration keys"
 msgstr ""
 
-#: lxc/alias.go:22
-msgid ""
-"Usage: lxc alias <subcommand> [options]\n"
-"\n"
-"Manage command aliases.\n"
-"\n"
-"lxc alias add <alias> <target>\n"
-"    Add a new alias <alias> pointing to <target>.\n"
-"\n"
-"lxc alias remove <alias>\n"
-"    Remove the alias <alias>.\n"
-"\n"
-"lxc alias list\n"
-"    List all the aliases.\n"
-"\n"
-"lxc alias rename <old alias> <new alias>\n"
-"    Rename remote <old alias> to <new alias>."
+#: lxc/profile.go:865 lxc/profile.go:866
+msgid "Unset profile configuration keys"
 msgstr ""
 
-#: lxc/cluster.go:23
-msgid ""
-"Usage: lxc cluster <subcommand> [options]\n"
-"\n"
-"Manage cluster nodes.\n"
-"\n"
-"lxc cluster list [<remote>:]\n"
-"    List all nodes in the cluster.\n"
-"\n"
-"lxc cluster show [<remote>:]<node>\n"
-"    Show details of a node.\n"
-"\n"
-"lxc cluster rename [<remote>:]<node> <new-name>\n"
-"    Rename a cluster node.\n"
-"\n"
-"lxc cluster delete [<remote>:]<node> [--force]\n"
-"    Delete a node from the cluster."
+#: lxc/storage.go:728 lxc/storage.go:729
+msgid "Unset storage pool configuration keys"
 msgstr ""
 
-#: lxc/config.go:85
-msgid ""
-"Usage: lxc config <subcommand> [options]\n"
-"\n"
-"Change container or server configuration options.\n"
-"\n"
-"*Container configuration*\n"
-"\n"
-"lxc config get [<remote>:][container] <key>\n"
-"    Get container or server configuration key.\n"
-"\n"
-"lxc config set [<remote>:][container] <key> <value>\n"
-"    Set container or server configuration key.\n"
-"\n"
-"lxc config unset [<remote>:][container] <key>\n"
-"    Unset container or server configuration key.\n"
-"\n"
-"lxc config show [<remote>:][container] [--expanded]\n"
-"    Show container or server configuration.\n"
-"\n"
-"lxc config edit [<remote>:][container]\n"
-"    Edit configuration, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"*Container metadata*\n"
-"\n"
-"lxc config metadata show [<remote>:][container]\n"
-"    Show the container metadata.yaml content.\n"
-"\n"
-"lxc config metadata edit [<remote>:][container]\n"
-"    Edit the container metadata.yaml, either by launching external editor or "
-"reading STDIN.\n"
-"\n"
-"*Container templates*\n"
-"\n"
-"lxc config template list [<remote>:][container]\n"
-"    List the names of template files for a container.\n"
-"\n"
-"lxc config template show [<remote>:][container] [template]\n"
-"    Show the content of a template file for a container.\n"
-"\n"
-"lxc config template create [<remote>:][container] [template]\n"
-"    Add an empty template file for a container.\n"
-"\n"
-"lxc config template edit [<remote>:][container] [template]\n"
-"    Edit the content of a template file for a container, either by launching "
-"external editor or reading STDIN.\n"
-"\n"
-"lxc config template delete [<remote>:][container] [template]\n"
-"    Delete a template file for a container.\n"
-"\n"
-"\n"
-"*Device management*\n"
-"\n"
-"lxc config device add [<remote>:]<container> <device> <type> [key=value...]\n"
-"    Add a device to a container.\n"
-"\n"
-"lxc config device get [<remote>:]<container> <device> <key>\n"
-"    Get a device property.\n"
-"\n"
-"lxc config device set [<remote>:]<container> <device> <key> <value>\n"
-"    Set a device property.\n"
-"\n"
-"lxc config device unset [<remote>:]<container> <device> <key>\n"
-"    Unset a device property.\n"
-"\n"
-"lxc config device override [<remote>:]<container> <device> [key=value...]\n"
-"    Copy a profile inherited device into local container config.\n"
-"\n"
-"lxc config device list [<remote>:]<container>\n"
-"    List devices for container.\n"
-"\n"
-"lxc config device show [<remote>:]<container>\n"
-"    Show full device details for container.\n"
-"\n"
-"lxc config device remove [<remote>:]<container> <name>...\n"
-"    Remove device from container.\n"
-"\n"
-"*Client trust store management*\n"
-"\n"
-"lxc config trust list [<remote>:]\n"
-"    List all trusted certs.\n"
-"\n"
-"lxc config trust add [<remote>:] <certfile.crt>\n"
-"    Add certfile.crt to trusted hosts.\n"
-"\n"
-"lxc config trust remove [<remote>:] [hostname|fingerprint]\n"
-"    Remove the cert from trusted hosts.\n"
-"\n"
-"*Examples*\n"
-"\n"
-"cat config.yaml | lxc config edit <container>\n"
-"    Update the container configuration from config.yaml.\n"
-"\n"
-"lxc config device add [<remote>:]container1 <device-name> disk source=/share/"
-"c1 path=opt\n"
-"    Will mount the host's /share/c1 onto /opt in the container.\n"
-"\n"
-"lxc config set [<remote>:]<container> limits.cpu 2\n"
-"    Will set a CPU limit of \"2\" for the container.\n"
-"\n"
-"lxc config set core.https_address [::]:8443\n"
-"    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
-"\n"
-"lxc config set core.trust_password blah\n"
-"    Will set the server's trust password to blah."
+#: lxc/storage_volume.go:1240 lxc/storage_volume.go:1241
+msgid "Unset storage volume configuration keys"
 msgstr ""
 
-#: lxc/console.go:31
-msgid ""
-"Usage: lxc console [<remote>:]<container> [-l]\n"
-"\n"
-"Interact with the container's console device and log."
+#: lxc/image.go:835
+#, c-format
+msgid "Uploaded: %s"
 msgstr ""
 
-#: lxc/copy.go:30
-msgid ""
-"Usage: lxc copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>] "
-"[--ephemeral|e] [--profile|-p <profile>...] [--config|-c <key=value>...] [--"
-"container-only] [--target <node>]\n"
-"\n"
-"Copy containers within or in between LXD instances."
+#: lxc/delete.go:47
+msgid "User aborted delete operation"
 msgstr ""
 
-#: lxc/delete.go:27
+#: lxc/utils/cancel.go:40
 msgid ""
-"Usage: lxc delete [<remote>:]<container>[/<snapshot>] "
-"[[<remote>:]<container>[/<snapshot>]...]\n"
-"\n"
-"Delete containers and snapshots."
+"User signaled us three times, exiting. The remote operation will keep "
+"running."
 msgstr ""
 
-#: lxc/exec.go:53
-msgid ""
-"Usage: lxc exec [<remote>:]<container> [-t] [-T] [-n] [--mode=auto|"
-"interactive|non-interactive] [--env KEY=VALUE...] [--] <command line>\n"
-"\n"
-"Execute commands in containers.\n"
-"\n"
-"The command is executed directly using exec, so there is no shell and shell "
-"patterns (variables, file redirects, ...)\n"
-"won't be understood. If you need a shell environment you need to execute the "
-"shell executable, passing the shell commands\n"
-"as arguments, for example:\n"
-"\n"
-"    lxc exec <container> -- sh -c \"cd /tmp && pwd\"\n"
-"\n"
-"Mode defaults to non-interactive, interactive mode is selected if both stdin "
-"AND stdout are terminals (stderr is ignored)."
+#: lxc/query.go:35
+msgid "Wait for the operation to complete"
 msgstr ""
 
-#: lxc/file.go:39
+#: lxc/restore.go:36
 msgid ""
-"Usage: lxc file <subcommand> [options]\n"
-"\n"
-"Manage files in containers.\n"
-"\n"
-"lxc file pull [-r|--recursive] [<remote>:]<container>/<path> "
-"[[<remote>:]<container>/<path>...] <target path>\n"
-"    Pull files from containers.\n"
-"\n"
-"lxc file push [-r|--recursive] [-p|--create-dirs] [--uid=UID] [--gid=GID] [--"
-"mode=MODE] <source path> [<source path>...] [<remote>:]<container>/<path>\n"
-"    Push files into containers.\n"
-"\n"
-"lxc file delete [<remote>:]<container>/<path> [[<remote>:]<container>/"
-"<path>...]\n"
-"    Delete files in containers.\n"
-"\n"
-"lxc file edit [<remote>:]<container>/<path>\n"
-"    Edit files in containers using the default text editor.\n"
-"\n"
-"*Examples*\n"
-"lxc file push /etc/hosts foo/etc/hosts\n"
-"   To push /etc/hosts into the container \"foo\".\n"
-"\n"
-"lxc file pull foo/etc/hosts .\n"
-"   To pull /etc/hosts from the container and write it to the current "
-"directory."
+"Whether or not to restore the container's running state from snapshot (if "
+"available)"
 msgstr ""
 
-#: lxc/finger.go:15
-msgid ""
-"Usage: lxc finger [<remote>:]\n"
-"\n"
-"Check if the LXD server is alive."
+#: lxc/snapshot.go:31
+msgid "Whether or not to snapshot the container's running state"
 msgstr ""
 
-#: lxc/help.go:22
-msgid ""
-"Usage: lxc help [--all]\n"
-"\n"
-"Help page for the LXD client."
+#: lxc/network.go:765 lxc/operation.go:140 lxc/remote.go:436 lxc/remote.go:441
+msgid "YES"
 msgstr ""
 
-#: lxc/image.go:73
-msgid ""
-"Usage: lxc image <subcommand> [options]\n"
-"\n"
-"Manipulate container images.\n"
-"\n"
-"In LXD containers are created from images. Those images were themselves\n"
-"either generated from an existing container or downloaded from an image\n"
-"server.\n"
-"\n"
-"When using remote images, LXD will automatically cache images for you\n"
-"and remove them upon expiration.\n"
-"\n"
-"The image unique identifier is the hash (sha-256) of its representation\n"
-"as a compressed tarball (or for split images, the concatenation of the\n"
-"metadata and rootfs tarballs).\n"
-"\n"
-"Images can be referenced by their full hash, shortest unique partial\n"
-"hash or alias name (if one is set).\n"
-"\n"
-"\n"
-"lxc image import <tarball>|<dir> [<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) or an image directory into the LXD "
-"image store.\n"
-"    Directory import is only available on Linux and must be performed as "
-"root.\n"
-"\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"
-"    Delete one or more images from the LXD image store.\n"
-"\n"
-"lxc image refresh [<remote>:]<image> [[<remote>:]<image>...]\n"
-"    Refresh one or more images from its parent remote.\n"
-"\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"
-"    The target may be an existing directory, file name, or \"-\" to specify\n"
-"    stdout.  The target MUST be a directory when exporting a split image.\n"
-"    If the target is a directory, the image's name (each part's name for\n"
-"    split images) as found in the database will be used for the exported\n"
-"    image.  If the target is a file (not a directory and not stdout), then\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"
-"    Print everything LXD knows about a given image.\n"
-"\n"
-"lxc image list [<remote>:] [filter] [--format csv|json|table|yaml] [-c "
-"<columns>]\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"
-"    The -c option takes a (optionally comma-separated) list of arguments "
-"that\n"
-"    control which image attributes to output when displaying in table or "
-"csv\n"
-"    format.\n"
-"\n"
-"    Default column layout is: lfpdasu\n"
-"\n"
-"    Column shorthand chars:\n"
-"\n"
-"        l - Shortest image alias (and optionally number of other aliases)\n"
-"\n"
-"        L - Newline-separated list of all image aliases\n"
-"\n"
-"        f - Fingerprint\n"
-"\n"
-"        p - Whether image is public\n"
-"\n"
-"        d - Description\n"
-"\n"
-"        a - Architecture\n"
-"\n"
-"        s - Size\n"
-"\n"
-"        u - Upload date\n"
-"\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"
-"    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"
-"    Create a new alias for an existing image.\n"
-"\n"
-"lxc image alias rename [<remote>:]<alias> <new-name>\n"
-"    Rename an alias.\n"
-"\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."
+#: lxc/exec.go:122
+msgid "You can't pass -t and -T at the same time"
 msgstr ""
 
-#: lxc/info.go:27
+#: lxc/exec.go:126
+msgid "You can't pass -t or -T at the same time as --mode"
+msgstr ""
+
+#: lxc/copy.go:78
+msgid "You must specify a destination container name when using --target"
+msgstr ""
+
+#: lxc/copy.go:73 lxc/move.go:188
+msgid "You must specify a source container name"
+msgstr ""
+
+#: lxc/copy.go:68 lxc/move.go:91 lxc/move.go:183
+msgid "You must use the same source and destination remote when using --target"
+msgstr ""
+
+#: lxc/alias.go:53
+msgid "add <alias> <target>"
+msgstr ""
+
+#: lxc/config_trust.go:57
+msgid "add [<remote>:] <cert>"
+msgstr ""
+
+#: lxc/profile.go:100
+msgid "add [<remote>:]<container> <profile>"
+msgstr ""
+
+#: lxc/config_device.go:74
+msgid "add [<remote>:]<container|profile> <device> <type> [key=value...]"
+msgstr ""
+
+#: lxc/remote.go:82
+msgid "add [<remote>] <IP|FQDN|URL>"
+msgstr ""
+
+#: lxc/alias.go:21 lxc/image_alias.go:24
+msgid "alias"
+msgstr ""
+
+#: lxc/profile.go:160
+msgid "assign [<remote>:]<container> <profiles>"
+msgstr ""
+
+#: lxc/network.go:102
+msgid "attach [<remote>:]<network> <container> [device name] [interface name]"
+msgstr ""
+
+#: lxc/storage_volume.go:120
+msgid "attach [<remote>:]<pool> <volume> <container> [device name] <path>"
+msgstr ""
+
+#: lxc/storage_volume.go:199
 msgid ""
-"Usage: lxc info [<remote>:][<container>] [--show-log] [--resources]\n"
-"\n"
-"Show container or server information.\n"
-"\n"
-"lxc info [<remote>:]<container> [--show-log]\n"
-"    For container information.\n"
-"\n"
-"lxc info [<remote>:] [--resources]\n"
-"    For LXD server information."
+"attach-profile [<remote:>]<pool> <volume> <profile> [device name] <path>"
 msgstr ""
 
-#: lxc/init.go:79
+#: lxc/network.go:175
 msgid ""
-"Usage: lxc init [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
-"profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
-"<node>]\n"
-"\n"
-"Create containers from images.\n"
-"\n"
-"Not specifying -p will result in the default profile.\n"
-"Specifying \"-p\" with no argument will result in no profile.\n"
-"\n"
-"Examples:\n"
-"    lxc init ubuntu:16.04 u1"
+"attach-profile [<remote>:]<network> <profile> [device name] [interface name]"
+msgstr ""
+
+#: lxc/cluster.go:24
+msgid "cluster"
+msgstr ""
+
+#: lxc/config.go:27
+msgid "config"
+msgstr ""
+
+#: lxc/console.go:30
+msgid "console [<remote>:]<container>"
+msgstr ""
+
+#: lxc/storage_volume.go:280
+msgid "copy <pool>/<volume> <pool>/<volume>"
+msgstr ""
+
+#: lxc/image.go:128
+msgid "copy [<remote>:]<image> <remote>:"
+msgstr ""
+
+#: lxc/profile.go:238
+msgid "copy [<remote>:]<profile> [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/copy.go:32
+msgid "copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>]"
+msgstr ""
+
+#: lxc/image_alias.go:57
+msgid "create [<remote>:]<alias> <fingerprint>"
+msgstr ""
+
+#: lxc/config_template.go:65
+msgid "create [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/network.go:248
+msgid "create [<remote>:]<network> [key=value...]"
+msgstr ""
+
+#: lxc/storage.go:87
+msgid "create [<remote>:]<pool> <driver> [key=value]..."
+msgstr ""
+
+#: lxc/storage_volume.go:424
+msgid "create [<remote>:]<pool> <volume> [key=value]..."
+msgstr ""
+
+#: lxc/profile.go:295
+msgid "create [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/remote.go:453
+msgid "default"
+msgstr ""
+
+#: lxc/image_alias.go:103
+msgid "delete [<remote>:]<alias>"
+msgstr ""
+
+#: lxc/config_template.go:107
+msgid "delete [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/file.go:70
+msgid "delete [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...]"
+msgstr ""
+
+#: lxc/delete.go:27
+msgid ""
+"delete [<remote>:]<container>[/<snapshot>] [[<remote>:]<container>[/"
+"<snapshot>]...]"
+msgstr ""
+
+#: lxc/image.go:258
+msgid "delete [<remote>:]<image> [[<remote>:]<image>...]"
+msgstr ""
+
+#: lxc/network.go:317
+msgid "delete [<remote>:]<network>"
+msgstr ""
+
+#: lxc/operation.go:51
+msgid "delete [<remote>:]<operation>"
+msgstr ""
+
+#: lxc/storage.go:158
+msgid "delete [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:498
+msgid "delete [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:345
+msgid "delete [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/storage.go:431
+msgid "description"
+msgstr ""
+
+#: lxc/network.go:365
+msgid "detach [<remote>:]<network> <container> [device name]"
+msgstr ""
+
+#: lxc/storage_volume.go:559
+msgid "detach [<remote>:]<pool> <volume> <container> [device name]"
+msgstr ""
+
+#: lxc/storage_volume.go:641
+msgid "detach-profile [<remote:>]<pool> <volume> <profile> [device name]"
+msgstr ""
+
+#: lxc/network.go:450
+msgid "detach-profile [<remote>:]<network> <container> [device name]"
+msgstr ""
+
+#: lxc/config_device.go:22
+msgid "device"
+msgstr ""
+
+#: lxc/init.go:223
+msgid "didn't get any affected image, container or snapshot from server"
+msgstr ""
+
+#: lxc/image.go:819
+msgid "disabled"
+msgstr ""
+
+#: lxc/storage.go:430
+msgid "driver"
+msgstr ""
+
+#: lxc/config_template.go:150
+msgid "edit [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/file.go:120
+msgid "edit [<remote>:]<container>/<path>"
+msgstr ""
+
+#: lxc/image.go:310
+msgid "edit [<remote>:]<image>"
+msgstr ""
+
+#: lxc/network.go:535
+msgid "edit [<remote>:]<network>"
+msgstr ""
+
+#: lxc/storage.go:206
+msgid "edit [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:722
+msgid "edit [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:394
+msgid "edit [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/config.go:86 lxc/config_metadata.go:52
+msgid "edit [<remote>:][container]"
+msgstr ""
+
+#: lxc/image.go:821
+msgid "enabled"
+msgstr ""
+
+#: lxc/action.go:234
+#, c-format
+msgid "error: %v"
+msgstr ""
+
+#: lxc/exec.go:37
+msgid "exec [<remote>:]<container> [flags] [--] <command line>"
+msgstr ""
+
+#: lxc/image.go:433
+msgid "export [<remote>:]<image> [target]"
+msgstr ""
+
+#: lxc/file.go:38
+msgid "file"
+msgstr ""
+
+#: lxc/config_device.go:177
+msgid "get [<remote>:]<container|profile> <device> <key>"
+msgstr ""
+
+#: lxc/network.go:658
+msgid "get [<remote>:]<network> <key>"
+msgstr ""
+
+#: lxc/storage.go:326
+msgid "get [<remote>:]<pool> <key>"
+msgstr ""
+
+#: lxc/storage_volume.go:851
+msgid "get [<remote>:]<pool> <volume> <key>"
+msgstr ""
+
+#: lxc/profile.go:518
+msgid "get [<remote>:]<profile> <key>"
+msgstr ""
+
+#: lxc/config.go:287
+msgid "get [<remote>:][container] <key>"
+msgstr ""
+
+#: lxc/remote.go:378
+msgid "get-default"
+msgstr ""
+
+#: lxc/image.go:40
+msgid "image"
+msgstr ""
+
+#: lxc/image.go:569
+msgid ""
+"import <tarball>|<directory>|<URL> [<rootfs tarball>] [<remote>:] "
+"[key=value...]"
+msgstr ""
+
+#: lxc/storage.go:428
+msgid "info"
+msgstr ""
+
+#: lxc/image.go:774
+msgid "info [<remote>:]<image>"
+msgstr ""
+
+#: lxc/storage.go:381
+msgid "info [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/info.go:27
+msgid "info [<remote>:][<container>]"
+msgstr ""
+
+#: lxc/init.go:33
+msgid "init [<remote>:]<image> [<remote>:][<name>]"
 msgstr ""
 
 #: lxc/launch.go:20
+msgid "launch [<remote>:]<image> [<remote>:][<name>]"
+msgstr ""
+
+#: lxc/alias.go:96 lxc/remote.go:411
+msgid "list"
+msgstr ""
+
+#: lxc/cluster.go:56 lxc/config_trust.go:112 lxc/network.go:716
+#: lxc/operation.go:95 lxc/profile.go:565 lxc/storage.go:488
+msgid "list [<remote>:]"
+msgstr ""
+
+#: lxc/image.go:887
+msgid "list [<remote>:] [filter]"
+msgstr ""
+
+#: lxc/image_alias.go:146
+msgid "list [<remote>:] [filters...]"
+msgstr ""
+
+#: lxc/list.go:45
+msgid "list [<remote>:] [filters]"
+msgstr ""
+
+#: lxc/config_template.go:234
+msgid "list [<remote>:]<container>"
+msgstr ""
+
+#: lxc/config_device.go:249
+msgid "list [<remote>:]<container|profile>"
+msgstr ""
+
+#: lxc/storage_volume.go:915
+msgid "list [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/network.go:806
+msgid "list-leases [<remote>:]<network>"
+msgstr ""
+
+#: lxc/alias.go:57
 msgid ""
-"Usage: lxc launch [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
-"profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
-"<node>]\n"
-"\n"
-"Create and start containers from images.\n"
-"\n"
-"Not specifying -p will result in the default profile.\n"
-"Specifying \"-p\" with no argument will result in no profile.\n"
-"\n"
-"Examples:\n"
-"    lxc launch ubuntu:16.04 u1"
+"lxc alias add list list -c ns46S\n"
+"    Overwrite the \"list\" command to pass -c ns46S."
 msgstr ""
 
-#: lxc/list.go:44
+#: lxc/alias.go:200
 msgid ""
-"Usage: lxc list [<remote>:] [filters] [--format csv|json|table|yaml] [-c "
-"<columns>] [--fast]\n"
-"\n"
-"List the existing containers.\n"
-"\n"
-"Default column layout: ns46tS\n"
-"Fast column layout: nsacPt\n"
-"\n"
-"*Filters*\n"
-"A single keyword like \"web\" which will list any container with a name "
-"starting by \"web\".\n"
-"\n"
-"A regular expression on the container name. (e.g. .*web.*01$).\n"
-"\n"
-"A key/value pair referring to a configuration item. For those, the namespace "
-"can be abbreviated to the smallest unambiguous identifier.\n"
-"\t- \"user.blah=abc\" will list all containers with the \"blah\" user "
-"property set to \"abc\".\n"
-"\n"
-"\t- \"u.blah=abc\" will do the same\n"
-"\n"
-"\t- \"security.privileged=true\" will list all privileged containers\n"
-"\n"
-"\t- \"s.privileged=true\" will do the same\n"
-"\n"
-"A regular expression matching a configuration item or its value. (e.g. "
-"volatile.eth0.hwaddr=00:16:3e:.*).\n"
-"\n"
-"*Columns*\n"
-"The -c option takes a comma separated list of arguments that control\n"
-"which container attributes to output when displaying in table or csv\n"
-"format.\n"
-"\n"
-"Column arguments are either pre-defined shorthand chars (see below),\n"
-"or (extended) config keys.\n"
-"\n"
-"Commas between consecutive shorthand chars are optional.\n"
-"\n"
-"Pre-defined column shorthand chars:\n"
-"\n"
-"\t4 - IPv4 address\n"
-"\n"
-"\t6 - IPv6 address\n"
-"\n"
-"\ta - Architecture\n"
-"\n"
-"\tb - Storage pool\n"
-"\n"
-"\tc - Creation date\n"
-"\n"
-"\td - Description\n"
-"\n"
-"\tl - Last used date\n"
-"\n"
-"\tn - Name\n"
-"\n"
-"\tN - Number of Processes\n"
-"\n"
-"\tp - PID of the container's init process\n"
-"\n"
-"\tP - Profiles\n"
-"\n"
-"\ts - State\n"
-"\n"
-"\tS - Number of snapshots\n"
-"\n"
-"\tt - Type (persistent or ephemeral)\n"
-"\n"
-"\tL - Location of the container (e.g. its node)\n"
-"\n"
-"Custom columns are defined with \"key[:name][:maxWidth]\":\n"
-"\n"
-"\tKEY: The (extended) config key to display\n"
-"\n"
-"\tNAME: Name to display in the column header.\n"
-"\tDefaults to the key if not specified or empty.\n"
-"\n"
-"\tMAXWIDTH: Max width of the column (longer results are truncated).\n"
-"\tDefaults to -1 (unlimited). Use 0 to limit to the column header size.\n"
-"\n"
-"*Examples*\n"
-"lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:"
-"MAC\n"
-"\tShows a list of containers using the \"NAME\", \"BASE IMAGE\", \"STATE\", "
-"\"IPV4\",\n"
-"\t\"IPV6\" and \"MAC\" columns.\n"
+"lxc alias remove my-list\n"
+"    Remove the \"my-list\" alias."
+msgstr ""
+
+#: lxc/alias.go:149
+msgid ""
+"lxc alias rename list my-list\n"
+"    Rename existing alias \"list\" to \"my-list\"."
+msgstr ""
+
+#: lxc/config_device.go:78
+msgid ""
+"lxc config device add [<remote>:]container1 <device-name> disk source=/share/"
+"c1 path=opt\n"
+"    Will mount the host's /share/c1 onto /opt in the container."
+msgstr ""
+
+#: lxc/config.go:90
+msgid ""
+"lxc config edit <container> < container.yaml\n"
+"    Update the container configuration from config.yaml."
+msgstr ""
+
+#: lxc/config.go:357
+msgid ""
+"lxc config set [<remote>:]<container> limits.cpu 2\n"
+"    Will set a CPU limit of \"2\" for the container.\n"
 "\n"
-"\t\"BASE IMAGE\" and \"MAC\" are custom columns generated from container "
-"configuration keys.\n"
+"lxc config set core.https_address [::]:8443\n"
+"    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
 "\n"
-"lxc list -c ns,user.comment:comment\n"
-"\tList images with their running state and user comment. "
+"lxc config set core.trust_password blah\n"
+"    Will set the server's trust password to blah."
 msgstr ""
 
-#: lxc/manpage.go:20
+#: lxc/file.go:187
 msgid ""
-"Usage: lxc manpage <directory>\n"
-"\n"
-"Generate all the LXD manpages."
+"lxc file pull foo/etc/hosts .\n"
+"   To pull /etc/hosts from the container and write it to the current "
+"directory."
 msgstr ""
 
-#: lxc/monitor.go:49
+#: lxc/file.go:326
 msgid ""
-"Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
-"\n"
-"Monitor a local or remote LXD server.\n"
+"lxc file push /etc/hosts foo/etc/hosts\n"
+"   To push /etc/hosts into the container \"foo\"."
+msgstr ""
+
+#: lxc/image.go:314
+msgid ""
+"lxc image edit <image>\n"
+"    Launch a text editor to edit the properties\n"
 "\n"
-"By default the monitor will listen to all message types.\n"
+"lxc image edit <image> < image.yaml\n"
+"    Load the image properties from a YAML file"
+msgstr ""
+
+#: lxc/info.go:31
+msgid ""
+"lxc info [<remote>:]<container> [--show-log]\n"
+"    For container information.\n"
 "\n"
-"Message types to listen for can be specified with --type.\n"
+"lxc info [<remote>:] [--resources]\n"
+"    For LXD server information."
+msgstr ""
+
+#: lxc/init.go:37
+msgid "lxc init ubuntu:16.04 u1"
+msgstr ""
+
+#: lxc/launch.go:24
+msgid "lxc launch ubuntu:16.04 u1"
+msgstr ""
+
+#: lxc/list.go:103
+msgid ""
+"lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:"
+"MAC\n"
+"  Show containers using the \"NAME\", \"BASE IMAGE\", \"STATE\", \"IPV4\", "
+"\"IPV6\" and \"MAC\" columns.\n"
+"  \"BASE IMAGE\" and \"MAC\" are custom columns generated from container "
+"configuration keys.\n"
 "\n"
-"*Examples*\n"
+"lxc list -c ns,user.comment:comment\n"
+"  List images with their running state and user comment."
+msgstr ""
+
+#: lxc/monitor.go:35
+msgid ""
 "lxc monitor --type=logging\n"
 "    Only show log messages.\n"
 "\n"
 "lxc monitor --pretty --type=logging --loglevel=info\n"
 "    Show a pretty log of messages with info level or higher.\n"
+"\n"
+"lxc monitor --type=lifecycle\n"
+"    Only show lifecycle events."
 msgstr ""
 
-#: lxc/move.go:26
+#: lxc/move.go:33
 msgid ""
-"Usage: lxc move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
-"<snapshot>]] [--container-only] [--target <node>]\n"
-"\n"
-"Move containers within or in between LXD instances.\n"
-"\n"
 "lxc move [<remote>:]<source container> [<remote>:][<destination container>] "
 "[--container-only]\n"
 "    Move a container between two hosts, renaming it if destination name "
@@ -1946,160 +2837,14 @@ msgid ""
 "    Rename a snapshot."
 msgstr ""
 
-#: lxc/network.go:52
-msgid ""
-"Usage: lxc network <subcommand> [options]\n"
-"\n"
-"Manage and attach containers to networks.\n"
-"\n"
-"lxc network list [<remote>:]\n"
-"    List available networks.\n"
-"\n"
-"lxc network list-leases [<remote>:]<network>\n"
-"    List the DHCP leases for the network\n"
-"\n"
-"lxc network show [<remote>:]<network> [--target <node>]\n"
-"    Show details of a network.\n"
-"\n"
-"lxc network create [<remote>:]<network> [key=value...] [--target <node>]\n"
-"    Create a network.\n"
-"\n"
-"lxc network get [<remote>:]<network> <key> [--target <node>]\n"
-"    Get network configuration.\n"
-"\n"
-"lxc network set [<remote>:]<network> <key> <value>\n"
-"    Set network configuration.\n"
-"\n"
-"lxc network unset [<remote>:]<network> <key>\n"
-"    Unset network configuration.\n"
-"\n"
-"lxc network delete [<remote>:]<network>\n"
-"    Delete a network.\n"
-"\n"
-"lxc network edit [<remote>:]<network>\n"
-"    Edit network, either by launching external editor or reading STDIN.\n"
-"\n"
-"lxc network rename [<remote>:]<network> <new-name>\n"
-"    Rename a network.\n"
-"\n"
-"lxc network attach [<remote>:]<network> <container> [device name] [interface "
-"name]\n"
-"    Attach a network interface connecting the network to a specified "
-"container.\n"
-"\n"
-"lxc network attach-profile [<remote>:]<network> <profile> [device name] "
-"[interface name]\n"
-"    Attach a network interface connecting the network to a specified "
-"profile.\n"
-"\n"
-"lxc network detach [<remote>:]<network> <container> [device name]\n"
-"    Remove a network interface connecting the network to a specified "
-"container.\n"
-"\n"
-"lxc network detach-profile [<remote>:]<network> <container> [device name]\n"
-"    Remove a network interface connecting the network to a specified "
-"profile.\n"
-"\n"
-"*Examples*\n"
-"cat network.yaml | lxc network edit <network>\n"
-"    Update a network using the content of network.yaml"
-msgstr ""
-
-#: lxc/operation.go:25
+#: lxc/operation.go:176
 msgid ""
-"Usage: lxc operation <subcommand> [options]\n"
-"\n"
-"List, show and delete background operations.\n"
-"\n"
-"lxc operation list [<remote>:]\n"
-"    List background operations.\n"
-"\n"
-"lxc operation show [<remote>:]<operation>\n"
-"    Show details on a background operation.\n"
-"\n"
-"lxc operation delete [<remote>:]<operation>\n"
-"    Delete a background operation (will attempt to cancel).\n"
-"\n"
-"*Examples*\n"
 "lxc operation show 344a79e4-d88a-45bf-9c39-c72c26f6ab8a\n"
 "    Show details on that operation UUID"
 msgstr ""
 
-#: lxc/profile.go:51
+#: lxc/profile.go:165
 msgid ""
-"Usage: lxc profile <subcommand> [options]\n"
-"\n"
-"Manage container configuration profiles.\n"
-"\n"
-"*Profile configuration*\n"
-"lxc profile list [<remote>:]\n"
-"    List available profiles.\n"
-"\n"
-"lxc profile show [<remote>:]<profile>\n"
-"    Show details of a profile.\n"
-"\n"
-"lxc profile create [<remote>:]<profile>\n"
-"    Create a profile.\n"
-"\n"
-"lxc profile copy [<remote>:]<profile> [<remote>:]<profile>\n"
-"    Copy the profile.\n"
-"\n"
-"lxc profile get [<remote>:]<profile> <key>\n"
-"    Get profile configuration.\n"
-"\n"
-"lxc profile set [<remote>:]<profile> <key> <value>\n"
-"    Set profile configuration.\n"
-"\n"
-"lxc profile unset [<remote>:]<profile> <key>\n"
-"    Unset profile configuration.\n"
-"\n"
-"lxc profile delete [<remote>:]<profile>\n"
-"    Delete a profile.\n"
-"\n"
-"lxc profile edit [<remote>:]<profile>\n"
-"    Edit profile, either by launching external editor or reading STDIN.\n"
-"\n"
-"lxc profile rename [<remote>:]<profile> <new-name>\n"
-"    Rename a profile.\n"
-"\n"
-"*Profile assignment*\n"
-"lxc profile assign [<remote>:]<container> <profiles>\n"
-"    Replace the current set of profiles for the container by the one "
-"provided.\n"
-"\n"
-"lxc profile add [<remote>:]<container> <profile>\n"
-"    Add a profile to a container\n"
-"\n"
-"lxc profile remove [<remote>:]<container> <profile>\n"
-"    Remove the profile from a container\n"
-"\n"
-"*Device management*\n"
-"lxc profile device list [<remote>:]<profile>\n"
-"    List devices in the given profile.\n"
-"\n"
-"lxc profile device show [<remote>:]<profile>\n"
-"    Show full device details in the given profile.\n"
-"\n"
-"lxc profile device remove [<remote>:]<profile> <name>\n"
-"    Remove a device from a profile.\n"
-"\n"
-"lxc profile device get [<remote>:]<profile> <name> <key>\n"
-"    Get a device property.\n"
-"\n"
-"lxc profile device set [<remote>:]<profile> <name> <key> <value>\n"
-"    Set a device property.\n"
-"\n"
-"lxc profile device unset [<remote>:]<profile> <name> <key>\n"
-"    Unset a device property.\n"
-"\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.\n"
-"\n"
-"*Examples*\n"
-"cat profile.yaml | lxc profile edit <profile>\n"
-"    Update a profile using the content of profile.yaml\n"
-"\n"
 "lxc profile assign foo default,bar\n"
 "    Set the profiles for \"foo\" to \"default\" and \"bar\".\n"
 "\n"
@@ -2110,72 +2855,26 @@ msgid ""
 "    Remove all profile from \"foo\""
 msgstr ""
 
-#: lxc/publish.go:28
+#: lxc/profile.go:398
 msgid ""
-"Usage: lxc publish [<remote>:]<container>[/<snapshot>] [<remote>:] [--"
-"alias=ALIAS...] [prop-key=prop-value...]\n"
-"\n"
-"Publish containers as images."
+"lxc profile edit <profile> < profile.yaml\n"
+"    Update a profile using the content of profile.yaml"
 msgstr ""
 
-#: lxc/query.go:25
+#: lxc/query.go:29
 msgid ""
-"Usage: lxc query [-X <action>] [-d <data>] [--wait] [--raw] [<remote>:]<API "
-"path>\n"
-"\n"
-"Send a raw query to LXD.\n"
-"\n"
-"*Examples*\n"
 "lxc query -X DELETE --wait /1.0/containers/c1\n"
 "    Delete local container \"c1\"."
 msgstr ""
 
-#: lxc/remote.go:40
-msgid ""
-"Usage: lxc remote <subcommand> [options]\n"
-"\n"
-"Manage the list of remote LXD servers.\n"
-"\n"
-"lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--"
-"password=PASSWORD] [--public] [--protocol=PROTOCOL] [--auth-type=AUTH_TYPE]\n"
-"    Add the remote <remote> at <url>.\n"
-"\n"
-"lxc remote remove <remote>\n"
-"    Remove the remote <remote>.\n"
-"\n"
-"lxc remote list\n"
-"    List all remotes.\n"
-"\n"
-"lxc remote rename <old name> <new name>\n"
-"    Rename remote <old name> to <new name>.\n"
-"\n"
-"lxc remote set-url <remote> <url>\n"
-"    Update <remote>'s url to <url>.\n"
-"\n"
-"lxc remote set-default <remote>\n"
-"    Set the default remote.\n"
-"\n"
-"lxc remote get-default\n"
-"    Print the default remote."
-msgstr ""
-
-#: lxc/rename.go:18
+#: lxc/snapshot.go:26
 msgid ""
-"Usage: lxc rename [<remote>:]<container>[/<snapshot>] [<container>[/"
-"<snapshot>]]\n"
-"\n"
-"Rename a container or snapshot."
+"lxc snapshot u1 snap0\n"
+"    Create a snapshot of \"u1\" called \"snap0\"."
 msgstr ""
 
-#: lxc/restore.go:22
+#: lxc/restore.go:28
 msgid ""
-"Usage: lxc restore [<remote>:]<container> <snapshot> [--stateful]\n"
-"\n"
-"Restore containers from snapshots.\n"
-"\n"
-"If --stateful is passed, then the running state will be restored too.\n"
-"\n"
-"*Examples*\n"
 "lxc snapshot u1 snap0\n"
 "    Create the snapshot.\n"
 "\n"
@@ -2183,121 +2882,20 @@ msgid ""
 "    Restore the snapshot."
 msgstr ""
 
-#: lxc/snapshot.go:19
+#: lxc/storage.go:210
 msgid ""
-"Usage: lxc snapshot [<remote>:]<container> <snapshot name> [--stateful]\n"
-"\n"
-"Create container snapshots.\n"
-"\n"
-"When --stateful is used, LXD attempts to checkpoint the container's\n"
-"running state, including process memory state, TCP connections, ...\n"
-"\n"
-"*Examples*\n"
-"lxc snapshot u1 snap0\n"
-"    Create a snapshot of \"u1\" called \"snap0\"."
+"lxc storage edit [<remote>:]<pool> < pool.yaml\n"
+"    Update a storage pool using the content of pool.yaml."
 msgstr ""
 
-#: lxc/storage.go:67
+#: lxc/storage_volume.go:726
+msgid ""
+"lxc storage volume edit [<remote>:]<pool> <volume> < volume.yaml\n"
+"    Update a storage volume using the content of pool.yaml."
+msgstr ""
+
+#: lxc/storage_volume.go:1168
 msgid ""
-"Usage: lxc storage <subcommand> [options]\n"
-"\n"
-"Manage storage pools and volumes.\n"
-"\n"
-"*Storage pools*\n"
-"lxc storage list [<remote>:]\n"
-"    List available storage pools.\n"
-"\n"
-"lxc storage show [<remote>:]<pool> [--resources] [--target <node>]\n"
-"    Show details of a storage pool.\n"
-"\n"
-"lxc storage info [<remote>:]<pool> [--bytes]\n"
-"    Show information of a storage pool in yaml format.\n"
-"\n"
-"lxc storage create [<remote>:]<pool> <driver> [key=value]... [--target "
-"<node>]\n"
-"    Create a storage pool.\n"
-"\n"
-"lxc storage get [<remote>:]<pool> <key>\n"
-"    Get storage pool configuration.\n"
-"\n"
-"lxc storage set [<remote>:]<pool> <key> <value>\n"
-"    Set storage pool configuration.\n"
-"\n"
-"lxc storage unset [<remote>:]<pool> <key>\n"
-"    Unset storage pool configuration.\n"
-"\n"
-"lxc storage delete [<remote>:]<pool>\n"
-"    Delete a storage pool.\n"
-"\n"
-"lxc storage edit [<remote>:]<pool>\n"
-"    Edit storage pool, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"*Storage volumes*\n"
-"lxc storage volume list [<remote>:]<pool>\n"
-"    List available storage volumes on a storage pool.\n"
-"\n"
-"lxc storage volume show [<remote>:]<pool> <volume> [--target <node>]\n"
-"   Show details of a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume create [<remote>:]<pool> <volume> [key=value]... [--"
-"target <node>]\n"
-"    Create a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume rename [<remote>:]<pool> <old name> <new name> [--target "
-"<node>]\n"
-"    Rename a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume get [<remote>:]<pool> <volume> <key> [--target <node>]\n"
-"    Get storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume set [<remote>:]<pool> <volume> <key> <value> [--target "
-"<node>]\n"
-"    Set storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume unset [<remote>:]<pool> <volume> <key> [--target <node>]\n"
-"    Unset storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume delete [<remote>:]<pool> <volume> [--target <node>]\n"
-"    Delete a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume edit [<remote>:]<pool> <volume> [--target <node>]\n"
-"    Edit storage volume, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"lxc storage volume attach [<remote>:]<pool> <volume> <container> [device "
-"name] <path>\n"
-"    Attach a storage volume to the specified container.\n"
-"\n"
-"lxc storage volume attach-profile [<remote:>]<pool> <volume> <profile> "
-"[device name] <path>\n"
-"    Attach a storage volume to the specified profile.\n"
-"\n"
-"lxc storage volume detach [<remote>:]<pool> <volume> <container> [device "
-"name]\n"
-"    Detach a storage volume from the specified container.\n"
-"\n"
-"lxc storage volume detach-profile [<remote:>]<pool> <volume> <profile> "
-"[device name]\n"
-"\tDetach a storage volume from the specified profile.\n"
-"\n"
-"lxc storage volume copy <pool>/<volume> <pool>/<volume> [--config|-c "
-"<key=value>...]\n"
-"    Copy an existing volume to a new volume at the specified pool.\n"
-"\n"
-"lxc storage volume move [<pool>/]<volume> [<pool>/]<volume>\n"
-"    Move an existing volume to the specified pool.\n"
-"\n"
-"Unless specified through a prefix, all volume operations affect \"custom"
-"\" (user created) volumes.\n"
-"\n"
-"*Examples*\n"
-"cat pool.yaml | lxc storage edit [<remote>:]<pool>\n"
-"    Update a storage pool using the content of pool.yaml.\n"
-"\n"
-"cat pool.yaml | lxc storage volume edit [<remote>:]<pool> <volume>\n"
-"    Update a storage volume using the content of pool.yaml.\n"
-"\n"
 "lxc storage volume show default data\n"
 "    Will show the properties of a custom volume called \"data\" in the "
 "\"default\" pool.\n"
@@ -2307,191 +2905,303 @@ msgid ""
 "\" in the \"default\" pool."
 msgstr ""
 
-#: lxc/version.go:18
+#: lxc/config_metadata.go:27
+msgid "metadata"
+msgstr ""
+
+#: lxc/monitor.go:29
+msgid "monitor [<remote>:]"
+msgstr ""
+
+#: lxc/storage_volume.go:991
+msgid "move [<pool>/]<volume> [<pool>/]<volume>"
+msgstr ""
+
+#: lxc/move.go:28
 msgid ""
-"Usage: lxc version\n"
-"\n"
-"Print the version number of this client tool."
+"move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
+"<snapshot>]]"
 msgstr ""
 
-#: lxc/delete.go:46
-msgid "User aborted delete operation."
+#: lxc/storage.go:429
+msgid "name"
 msgstr ""
 
-#: lxc/utils/cancel.go:40
+#: lxc/network.go:30
+msgid "network"
+msgstr ""
+
+#: lxc/image.go:809 lxc/image.go:814 lxc/image.go:977
+msgid "no"
+msgstr ""
+
+#: lxc/remote.go:253
+msgid "ok (y/n)?"
+msgstr ""
+
+#: lxc/operation.go:23
+msgid "operation"
+msgstr ""
+
+#: lxc/config_device.go:316
+msgid "override [<remote>:]<container> <device> [key=value...]"
+msgstr ""
+
+#: lxc/action.go:47
+msgid "pause [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/config.go:52
+msgid "please use `lxc profile`"
+msgstr ""
+
+#: lxc/profile.go:28
+msgid "profile"
+msgstr ""
+
+#: lxc/publish.go:32
 msgid ""
-"User signaled us three times, exiting. The remote operation will keep "
-"running."
+"publish [<remote>:]<container>[/<snapshot>] [<remote>:] [flags] [prop-"
+"key=prop-value...]"
 msgstr ""
 
-#: lxc/query.go:36
-msgid "Wait for the operation to complete"
+#: lxc/file.go:183
+msgid ""
+"pull [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...] "
+"<target path>"
 msgstr ""
 
-#: lxc/restore.go:38
+#: lxc/file.go:322
 msgid ""
-"Whether or not to restore the container's running state from snapshot (if "
-"available)"
+"push <source path> [<remote>:]<container>/<path> [[<remote>:]<container>/"
+"<path>...]"
 msgstr ""
 
-#: lxc/snapshot.go:33
-msgid "Whether or not to snapshot the container's running state"
+#: lxc/query.go:25
+msgid "query [<remote>:]<API path>"
 msgstr ""
 
-#: lxc/network.go:560 lxc/operation.go:141 lxc/remote.go:382 lxc/remote.go:387
-msgid "YES"
+#: lxc/image.go:1210
+msgid "refresh [<remote>:]<image> [[<remote>:]<image>...]"
 msgstr ""
 
-#: lxc/exec.go:132
-msgid "You can't pass -t and -T at the same time"
+#: lxc/remote.go:32
+msgid "remote"
 msgstr ""
 
-#: lxc/exec.go:136
-msgid "You can't pass -t or -T at the same time as --mode"
+#: lxc/alias.go:195
+msgid "remove <alias>"
 msgstr ""
 
-#: lxc/copy.go:76
-msgid "You must specify a destination container name when using --target"
+#: lxc/remote.go:546
+msgid "remove <remote>"
 msgstr ""
 
-#: lxc/copy.go:71
-msgid "You must specify a source container name"
+#: lxc/config_trust.go:194
+msgid "remove [<remote>:] <hostname|fingerprint>"
 msgstr ""
 
-#: lxc/copy.go:66 lxc/move.go:71
-msgid "You must use the same source and destination remote when using --target"
+#: lxc/profile.go:630
+msgid "remove [<remote>:]<container> <profile>"
 msgstr ""
 
-#: lxc/main.go:72
-msgid "`lxc config profile` is deprecated, please use `lxc profile`"
+#: lxc/config_device.go:402
+msgid "remove [<remote>:]<container|profile> <name>..."
 msgstr ""
 
-#: lxc/alias.go:56 lxc/alias.go:102
-#, c-format
-msgid "alias %s already exists"
+#: lxc/cluster.go:235
+msgid "remove [<remote>:]<member>"
 msgstr ""
 
-#: lxc/alias.go:68 lxc/alias.go:97
-#, c-format
-msgid "alias %s doesn't exist"
+#: lxc/alias.go:144
+msgid "rename <old alias> <new alias>"
 msgstr ""
 
-#: lxc/remote.go:370
-msgid "can't remove the default remote"
+#: lxc/remote.go:484
+msgid "rename <remote> <new-name>"
 msgstr ""
 
-#: lxc/file.go:296
-msgid "can't supply uid/gid/mode in recursive mode"
+#: lxc/image_alias.go:247
+msgid "rename [<remote>:]<alias> <new-name>"
 msgstr ""
 
-#: lxc/remote.go:399
-msgid "default"
+#: lxc/rename.go:18
+msgid "rename [<remote>:]<container>[/<snapshot>] <container>[/<snapshot>]"
 msgstr ""
 
-#: lxc/storage.go:856
-msgid "description"
+#: lxc/cluster.go:189
+msgid "rename [<remote>:]<member> <new-name>"
 msgstr ""
 
-#: lxc/init.go:315
-msgid "didn't get any affected image, container or snapshot from server"
+#: lxc/network.go:870
+msgid "rename [<remote>:]<network> <new-name>"
 msgstr ""
 
-#: lxc/image.go:594
-msgid "disabled"
+#: lxc/storage_volume.go:1023
+msgid "rename [<remote>:]<pool> <old name> <new name>"
 msgstr ""
 
-#: lxc/storage.go:855
-msgid "driver"
+#: lxc/profile.go:702
+msgid "rename [<remote>:]<profile> <new-name>"
 msgstr ""
 
-#: lxc/image.go:596
-msgid "enabled"
+#: lxc/action.go:67
+msgid "restart [<remote>:]<container> [[<remote>:]<container>...]"
 msgstr ""
 
-#: lxc/action.go:155 lxc/main.go:33 lxc/main.go:191
-#, c-format
-msgid "error: %v"
+#: lxc/restore.go:22
+msgid "restore [<remote>:]<container> <snapshot>"
 msgstr ""
 
-#: lxc/help.go:37 lxc/main.go:133
-#, c-format
-msgid "error: unknown command: %s"
+#: lxc/config_device.go:491
+msgid "set [<remote>:]<container|profile> <device> <key> <value>"
 msgstr ""
 
-#: lxc/storage.go:853
-msgid "info"
+#: lxc/network.go:918
+msgid "set [<remote>:]<network> <key> <value>"
 msgstr ""
 
-#: lxc/storage.go:854
-msgid "name"
+#: lxc/storage.go:571
+msgid "set [<remote>:]<pool> <key> <value>"
 msgstr ""
 
-#: lxc/image.go:210 lxc/image.go:584 lxc/image.go:589
-msgid "no"
+#: lxc/storage_volume.go:1087
+msgid "set [<remote>:]<pool> <volume> <key> <value>"
 msgstr ""
 
-#: lxc/remote.go:204
-msgid "ok (y/n)?"
+#: lxc/profile.go:751
+msgid "set [<remote>:]<profile> <key> <value>"
 msgstr ""
 
-#: lxc/main.go:368 lxc/main.go:372
-#, c-format
-msgid "processing aliases failed %s\n"
+#: lxc/config.go:353
+msgid "set [<remote>:][container] <key> <value>"
 msgstr ""
 
-#: lxc/file.go:588
-msgid "recursive edit doesn't make sense :("
+#: lxc/remote.go:596
+msgid "set-default <remote>"
 msgstr ""
 
-#: lxc/remote.go:436
-#, c-format
-msgid "remote %s already exists"
+#: lxc/remote.go:634
+msgid "set-url <remote> <URL>"
 msgstr ""
 
-#: lxc/remote.go:362 lxc/remote.go:428 lxc/remote.go:463 lxc/remote.go:479
-#, c-format
-msgid "remote %s doesn't exist"
+#: lxc/config_template.go:296
+msgid "show [<remote>:]<container> <template>"
 msgstr ""
 
-#: lxc/remote.go:345
-#, c-format
-msgid "remote %s exists as <%s>"
+#: lxc/config_device.go:580
+msgid "show [<remote>:]<container|profile>"
 msgstr ""
 
-#: lxc/remote.go:366 lxc/remote.go:432 lxc/remote.go:467
-#, c-format
-msgid "remote %s is static and cannot be modified"
+#: lxc/image.go:1283
+msgid "show [<remote>:]<image>"
+msgstr ""
+
+#: lxc/cluster.go:140
+msgid "show [<remote>:]<member>"
+msgstr ""
+
+#: lxc/network.go:987
+msgid "show [<remote>:]<network>"
+msgstr ""
+
+#: lxc/operation.go:172
+msgid "show [<remote>:]<operation>"
+msgstr ""
+
+#: lxc/storage.go:643
+msgid "show [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:1164
+msgid "show [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:810
+msgid "show [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/config.go:450 lxc/config_metadata.go:174
+msgid "show [<remote>:][container]"
+msgstr ""
+
+#: lxc/snapshot.go:19
+msgid "snapshot [<remote>:]<container> <snapshot name>"
 msgstr ""
 
-#: lxc/storage.go:858
+#: lxc/storage.go:433
 msgid "space used"
 msgstr ""
 
-#: lxc/info.go:251
+#: lxc/action.go:28
+msgid "start [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/info.go:255
 msgid "stateful"
 msgstr ""
 
-#: lxc/info.go:253
+#: lxc/info.go:257
 msgid "stateless"
 msgstr ""
 
-#: lxc/info.go:247
+#: lxc/action.go:89
+msgid "stop [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/storage.go:31
+msgid "storage"
+msgstr ""
+
+#: lxc/info.go:251
 #, c-format
 msgid "taken at %s"
 msgstr ""
 
-#: lxc/storage.go:857
+#: lxc/config_template.go:28
+msgid "template"
+msgstr ""
+
+#: lxc/storage.go:432
 msgid "total space"
 msgstr ""
 
-#: lxc/storage.go:852
+#: lxc/config_trust.go:28
+msgid "trust"
+msgstr ""
+
+#: lxc/config_device.go:648
+msgid "unset [<remote>:]<container|profile> <device> <key>"
+msgstr ""
+
+#: lxc/network.go:1049
+msgid "unset [<remote>:]<network> <key>"
+msgstr ""
+
+#: lxc/storage.go:727
+msgid "unset [<remote>:]<pool> <key>"
+msgstr ""
+
+#: lxc/storage_volume.go:1239
+msgid "unset [<remote>:]<pool> <volume> <key>"
+msgstr ""
+
+#: lxc/profile.go:864
+msgid "unset [<remote>:]<profile> <key>"
+msgstr ""
+
+#: lxc/config.go:558
+msgid "unset [<remote>:][container] <key>"
+msgstr ""
+
+#: lxc/storage.go:427
 msgid "used by"
 msgstr ""
 
-#: lxc/main.go:299
-msgid "wrong number of subcommand arguments"
+#: lxc/storage_volume.go:32
+msgid "volume"
 msgstr ""
 
-#: lxc/delete.go:45 lxc/image.go:208 lxc/image.go:586 lxc/image.go:591
+#: lxc/delete.go:46 lxc/image.go:811 lxc/image.go:816 lxc/image.go:975
 msgid "yes"
 msgstr ""
diff --git a/po/nl.po b/po/nl.po
index 241427a08..75579024c 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -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: 2018-02-27 22:14-0500\n"
+"POT-Creation-Date: 2018-03-29 01:45-0400\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
@@ -16,7 +16,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: lxc/storage.go:36
+#: lxc/storage.go:220
 msgid ""
 "### This is a yaml representation of a storage pool.\n"
 "### Any line starting with a '#' will be ignored.\n"
@@ -33,7 +33,7 @@ msgid ""
 "###   zfs.pool_name: default"
 msgstr ""
 
-#: lxc/storage.go:53
+#: lxc/storage_volume.go:737
 msgid ""
 "### This is a yaml representation of a storage volume.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -47,7 +47,7 @@ msgid ""
 "###   size: \"61203283968\""
 msgstr ""
 
-#: lxc/config.go:40
+#: lxc/config.go:100
 msgid ""
 "### This is a yaml representation of the configuration.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -68,7 +68,7 @@ msgid ""
 "### Note that the name is shown but cannot be changed"
 msgstr ""
 
-#: lxc/config.go:61
+#: lxc/config_metadata.go:63
 msgid ""
 "### This is a yaml representation of the container metadata.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -92,7 +92,7 @@ msgid ""
 "###     properties: {}"
 msgstr ""
 
-#: lxc/image.go:63
+#: lxc/image.go:327
 msgid ""
 "### This is a yaml representation of the image properties.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -102,7 +102,7 @@ msgid ""
 "###  description: My custom image"
 msgstr ""
 
-#: lxc/network.go:32
+#: lxc/network.go:546
 msgid ""
 "### This is a yaml representation of the network.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -122,7 +122,7 @@ msgid ""
 "### Note that only the configuration can be changed."
 msgstr ""
 
-#: lxc/profile.go:30
+#: lxc/profile.go:408
 msgid ""
 "### This is a yaml representation of the profile.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -143,12 +143,12 @@ msgid ""
 "### Note that the name is shown but cannot be changed"
 msgstr ""
 
-#: lxc/image.go:187
+#: lxc/image.go:954
 #, c-format
 msgid "%s (%d more)"
 msgstr ""
 
-#: lxc/file.go:205
+#: lxc/file.go:677
 #, c-format
 msgid "%s is not a directory"
 msgstr ""
@@ -158,1782 +158,2673 @@ msgstr ""
 msgid "%v (interrupt two more times to force)"
 msgstr ""
 
-#: lxc/file.go:142
+#: lxc/file.go:614
 #, c-format
 msgid "'%s' isn't a supported file type."
 msgstr ""
 
-#: lxc/profile.go:337
+#: lxc/profile.go:222
 msgid "(none)"
 msgstr ""
 
-#: lxc/alias.go:84 lxc/image.go:231 lxc/image.go:1136
+#: lxc/alias.go:127 lxc/image.go:921 lxc/image_alias.go:228
 msgid "ALIAS"
 msgstr ""
 
-#: lxc/image.go:232
+#: lxc/image.go:922
 msgid "ALIASES"
 msgstr ""
 
-#: lxc/image.go:236
+#: lxc/image.go:926
 msgid "ARCH"
 msgstr ""
 
-#: lxc/list.go:467
+#: lxc/list.go:464
 msgid "ARCHITECTURE"
 msgstr ""
 
-#: lxc/remote.go:412
+#: lxc/remote.go:466
 msgid "AUTH TYPE"
 msgstr ""
 
-#: lxc/remote.go:68
+#: lxc/remote.go:88
 msgid "Accept certificate"
 msgstr ""
 
-#: lxc/query.go:38
+#: lxc/query.go:37
 msgid "Action (defaults to GET)"
 msgstr ""
 
-#: lxc/remote.go:276
+#: lxc/config_device.go:75 lxc/config_device.go:76
+msgid "Add devices to containers or profiles"
+msgstr ""
+
+#: lxc/alias.go:54 lxc/alias.go:55
+msgid "Add new aliases"
+msgstr ""
+
+#: lxc/remote.go:83 lxc/remote.go:84
+msgid "Add new remote servers"
+msgstr ""
+
+#: lxc/config_trust.go:58 lxc/config_trust.go:59
+msgid "Add new trusted clients"
+msgstr ""
+
+#: lxc/profile.go:101 lxc/profile.go:102
+msgid "Add profiles to containers"
+msgstr ""
+
+#: lxc/remote.go:325
 #, c-format
 msgid "Admin password for %s: "
 msgstr ""
 
-#: lxc/image.go:623
+#: lxc/alias.go:78 lxc/alias.go:176
+#, c-format
+msgid "Alias %s already exists"
+msgstr ""
+
+#: lxc/alias.go:170 lxc/alias.go:221
+#, c-format
+msgid "Alias %s doesn't exist"
+msgstr ""
+
+#: lxc/image_alias.go:83 lxc/image_alias.go:130 lxc/image_alias.go:274
+msgid "Alias name missing"
+msgstr ""
+
+#: lxc/image.go:854
 msgid "Aliases:"
 msgstr ""
 
-#: lxc/image.go:601 lxc/info.go:125
+#: lxc/image.go:826 lxc/info.go:129
 #, c-format
 msgid "Architecture: %s"
 msgstr ""
 
-#: lxc/remote.go:259
+#: lxc/profile.go:162 lxc/profile.go:163
+msgid "Assign sets of profiles to containers"
+msgstr ""
+
+#: lxc/network.go:103
+msgid "Attach network interfaces to containers"
+msgstr ""
+
+#: lxc/network.go:176 lxc/network.go:177
+msgid "Attach network interfaces to profiles"
+msgstr ""
+
+#: lxc/network.go:104
+msgid "Attach new network interfaces to containers"
+msgstr ""
+
+#: lxc/storage_volume.go:121 lxc/storage_volume.go:122
+msgid "Attach new storage volumes to containers"
+msgstr ""
+
+#: lxc/storage_volume.go:200 lxc/storage_volume.go:201
+msgid "Attach new storage volumes to profiles"
+msgstr ""
+
+#: lxc/console.go:31
+msgid "Attach to container consoles"
+msgstr ""
+
+#: lxc/console.go:32
+msgid ""
+"Attach to container consoles\n"
+"\n"
+"This command allows you to interact with the boot console of a container\n"
+"as well as retrieve past log entries from it."
+msgstr ""
+
+#: lxc/remote.go:308
 #, c-format
 msgid "Authentication type '%s' not supported by server"
 msgstr ""
 
-#: lxc/image.go:632
+#: lxc/image.go:864
 #, c-format
 msgid "Auto update: %s"
 msgstr ""
 
-#: lxc/image.go:707
+#: lxc/network.go:283
+#, c-format
+msgid "Bad key/value pair: %s"
+msgstr ""
+
+#: lxc/copy.go:110 lxc/init.go:118 lxc/publish.go:175 lxc/storage.go:123
+#: lxc/storage_volume.go:468
+#, c-format
+msgid "Bad key=value pair: %s"
+msgstr ""
+
+#: lxc/image.go:677
 #, c-format
 msgid "Bad property: %s"
 msgstr ""
 
-#: lxc/action.go:133
+#: lxc/action.go:212
 msgid "Both --all and container name given"
 msgstr ""
 
-#: lxc/info.go:218
+#: lxc/info.go:222
 msgid "Bytes received"
 msgstr ""
 
-#: lxc/info.go:219
+#: lxc/info.go:223
 msgid "Bytes sent"
 msgstr ""
 
-#: lxc/operation.go:156
+#: lxc/operation.go:155
 msgid "CANCELABLE"
 msgstr ""
 
-#: lxc/config.go:403
+#: lxc/config_trust.go:175
 msgid "COMMON NAME"
 msgstr ""
 
-#: lxc/info.go:182
+#: lxc/info.go:186
 msgid "CPU usage (in seconds)"
 msgstr ""
 
-#: lxc/info.go:186
+#: lxc/info.go:190
 msgid "CPU usage:"
 msgstr ""
 
-#: lxc/operation.go:157
+#: lxc/operation.go:156
 msgid "CREATED"
 msgstr ""
 
-#: lxc/list.go:468
+#: lxc/list.go:465
 msgid "CREATED AT"
 msgstr ""
 
-#: lxc/image.go:631
+#: lxc/image.go:863
 #, c-format
 msgid "Cached: %s"
 msgstr ""
 
-#: lxc/file.go:501
+#: lxc/image.go:175
+msgid "Can't provide a name for the target image"
+msgstr ""
+
+#: lxc/file.go:261
 msgid "Can't pull a directory without --recursive"
 msgstr ""
 
-#: lxc/config.go:210 lxc/network.go:619
+#: lxc/config.go:400 lxc/network.go:969
 #, c-format
 msgid "Can't read from stdin: %s"
 msgstr ""
 
-#: lxc/rename.go:41
+#: lxc/remote.go:577
+msgid "Can't remove the default remote"
+msgstr ""
+
+#: lxc/list.go:481
+msgid "Can't specify --fast with --columns"
+msgstr ""
+
+#: lxc/rename.go:48
 msgid "Can't specify a different remote for rename."
 msgstr ""
 
-#: lxc/config.go:223
-#, c-format
-msgid "Can't unset key '%s', it's not currently set"
+#: lxc/list.go:493
+msgid "Can't specify column L when not clustered"
 msgstr ""
 
-#: lxc/config.go:265 lxc/config.go:291
-#, c-format
-msgid "Can't unset key '%s', it's not currently set."
+#: lxc/file.go:399
+msgid "Can't supply uid/gid/mode in recursive mode"
 msgstr ""
 
-#: lxc/profile.go:546 lxc/storage.go:696
-msgid "Cannot provide container name to list"
+#: lxc/config.go:413
+#, c-format
+msgid "Can't unset key '%s', it's not currently set"
 msgstr ""
 
-#: lxc/remote.go:203
+#: lxc/remote.go:252
 #, c-format
 msgid "Certificate fingerprint: %s"
 msgstr ""
 
-#: lxc/remote.go:315
+#: lxc/remote.go:364
 msgid "Client certificate stored at server: "
 msgstr ""
 
-#: lxc/image.go:175 lxc/image.go:176 lxc/list.go:134 lxc/list.go:135
+#: lxc/network.go:253 lxc/network.go:663 lxc/network.go:923 lxc/network.go:992
+#: lxc/network.go:1054 lxc/storage.go:92 lxc/storage.go:331 lxc/storage.go:576
+#: lxc/storage.go:649 lxc/storage.go:732 lxc/storage_volume.go:287
+#: lxc/storage_volume.go:429 lxc/storage_volume.go:504
+#: lxc/storage_volume.go:730 lxc/storage_volume.go:856
+#: lxc/storage_volume.go:998 lxc/storage_volume.go:1028
+#: lxc/storage_volume.go:1092 lxc/storage_volume.go:1175
+#: lxc/storage_volume.go:1244
+msgid "Cluster member name"
+msgstr ""
+
+#: lxc/image.go:912 lxc/list.go:112
 msgid "Columns"
 msgstr ""
 
-#: lxc/help.go:53
-msgid "Commands:"
+#: lxc/main.go:44
+msgid "Command line client for LXD"
+msgstr ""
+
+#: lxc/main.go:45
+msgid ""
+"Command line client for LXD\n"
+"\n"
+"All of LXD's features can be driven through the various commands below.\n"
+"For help with any of those, simply call them with --help."
 msgstr ""
 
-#: lxc/copy.go:37 lxc/copy.go:38 lxc/init.go:139 lxc/init.go:140
+#: lxc/copy.go:39 lxc/init.go:42
 msgid "Config key/value to apply to the new container"
 msgstr ""
 
-#: lxc/config.go:821 lxc/config.go:886 lxc/config.go:1396 lxc/image.go:1191
-#: lxc/network.go:445 lxc/profile.go:275 lxc/storage.go:647 lxc/storage.go:1209
+#: lxc/config.go:195 lxc/config.go:259 lxc/config_metadata.go:144
+#: lxc/image.go:405 lxc/network.go:631 lxc/profile.go:490 lxc/storage.go:298
+#: lxc/storage_volume.go:822
 #, c-format
 msgid "Config parsing error: %s"
 msgstr ""
 
-#: lxc/main.go:40
-msgid "Connection refused; is LXD running?"
-msgstr ""
-
-#: lxc/console.go:132
+#: lxc/console.go:141
 msgid "Console log:"
 msgstr ""
 
-#: lxc/publish.go:71
+#: lxc/publish.go:79
 msgid "Container name is mandatory"
 msgstr ""
 
-#: lxc/copy.go:243 lxc/init.go:321
+#: lxc/copy.go:260 lxc/init.go:229
 #, c-format
 msgid "Container name is: %s"
 msgstr ""
 
-#: lxc/publish.go:250
+#: lxc/publish.go:259
 #, c-format
 msgid "Container published with fingerprint: %s"
 msgstr ""
 
-#: lxc/copy.go:45 lxc/move.go:44
+#: lxc/copy.go:44 lxc/move.go:46
 msgid "Copy a stateful container stateless"
 msgstr ""
 
-#: lxc/image.go:178
+#: lxc/image.go:138
 msgid "Copy aliases from source"
 msgstr ""
 
-#: lxc/copy.go:44
+#: lxc/copy.go:34 lxc/copy.go:35
+msgid "Copy containers within or in between LXD instances"
+msgstr ""
+
+#: lxc/image.go:130
+msgid "Copy images between servers"
+msgstr ""
+
+#: lxc/image.go:131
+msgid ""
+"Copy images between servers\n"
+"\n"
+"The auto-update flag instructs the server to keep this image up to date.\n"
+"It requires the source to be an alias and for it to be public."
+msgstr ""
+
+#: lxc/config_device.go:317 lxc/config_device.go:318
+msgid "Copy profile inherited devices and override configuration keys"
+msgstr ""
+
+#: lxc/profile.go:240 lxc/profile.go:241
+msgid "Copy profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:282 lxc/storage_volume.go:283
+msgid "Copy storage volumes"
+msgstr ""
+
+#: lxc/copy.go:43
 msgid "Copy the container without its snapshots"
 msgstr ""
 
-#: lxc/image.go:449
+#: lxc/image.go:217
 #, c-format
 msgid "Copying the image: %s"
 msgstr ""
 
-#: lxc/storage.go:1134
+#: lxc/storage_volume.go:387
 #, c-format
 msgid "Copying the storage volume: %s"
 msgstr ""
 
-#: lxc/remote.go:218
+#: lxc/remote.go:267
 msgid "Could not create server cert dir"
 msgstr ""
 
-#: lxc/file.go:70 lxc/file.go:71
+#: lxc/image_alias.go:58 lxc/image_alias.go:59
+msgid "Create aliases for existing images"
+msgstr ""
+
+#: lxc/launch.go:21 lxc/launch.go:22
+msgid "Create and start containers from images"
+msgstr ""
+
+#: lxc/file.go:191 lxc/file.go:331
 msgid "Create any directories necessary"
 msgstr ""
 
-#: lxc/image.go:606 lxc/info.go:127
+#: lxc/snapshot.go:20
+msgid "Create container snapshots"
+msgstr ""
+
+#: lxc/snapshot.go:21
+msgid ""
+"Create container snapshots\n"
+"\n"
+"When --stateful is used, LXD attempts to checkpoint the container's\n"
+"running state, including process memory state, TCP connections, ..."
+msgstr ""
+
+#: lxc/init.go:34 lxc/init.go:35
+msgid "Create containers from images"
+msgstr ""
+
+#: lxc/config_template.go:66 lxc/config_template.go:67
+msgid "Create new container file templates"
+msgstr ""
+
+#: lxc/storage_volume.go:425 lxc/storage_volume.go:426
+msgid "Create new custom storage volumes"
+msgstr ""
+
+#: lxc/network.go:249 lxc/network.go:250
+msgid "Create new networks"
+msgstr ""
+
+#: lxc/profile.go:296 lxc/profile.go:297
+msgid "Create profiles"
+msgstr ""
+
+#: lxc/storage.go:88 lxc/storage.go:89
+msgid "Create storage pools"
+msgstr ""
+
+#: lxc/image.go:832 lxc/info.go:131
 #, c-format
 msgid "Created: %s"
 msgstr ""
 
-#: lxc/init.go:200
+#: lxc/init.go:98
 #, c-format
 msgid "Creating %s"
 msgstr ""
 
-#: lxc/init.go:198
+#: lxc/init.go:96
 msgid "Creating the container"
 msgstr ""
 
-#: lxc/cluster.go:185
+#: lxc/cluster.go:121
 msgid "DATABASE"
 msgstr ""
 
-#: lxc/image.go:235 lxc/image.go:1138 lxc/list.go:469 lxc/network.go:579
-#: lxc/operation.go:154 lxc/storage.go:732 lxc/storage.go:937
+#: lxc/image.go:925 lxc/image_alias.go:230 lxc/list.go:466 lxc/network.go:784
+#: lxc/operation.go:153 lxc/storage.go:545 lxc/storage_volume.go:967
 msgid "DESCRIPTION"
 msgstr ""
 
-#: lxc/storage.go:733
+#: lxc/storage.go:546
 msgid "DRIVER"
 msgstr ""
 
-#: lxc/publish.go:39
+#: lxc/publish.go:41
 msgid "Define a compression algorithm: for image or none"
 msgstr ""
 
-#: lxc/config.go:977
+#: lxc/operation.go:53 lxc/operation.go:54
+msgid "Delete a background operation (will attempt to cancel)"
+msgstr ""
+
+#: lxc/config_template.go:109 lxc/config_template.go:110
+msgid "Delete container file templates"
+msgstr ""
+
+#: lxc/delete.go:29 lxc/delete.go:30
+msgid "Delete containers and snapshots"
+msgstr ""
+
+#: lxc/file.go:72 lxc/file.go:73
+msgid "Delete files in containers"
+msgstr ""
+
+#: lxc/image_alias.go:105 lxc/image_alias.go:106
+msgid "Delete image aliases"
+msgstr ""
+
+#: lxc/image.go:260 lxc/image.go:261
+msgid "Delete images"
+msgstr ""
+
+#: lxc/network.go:319 lxc/network.go:320
+msgid "Delete networks"
+msgstr ""
+
+#: lxc/profile.go:347 lxc/profile.go:348
+msgid "Delete profiles"
+msgstr ""
+
+#: lxc/storage.go:160 lxc/storage.go:161
+msgid "Delete storage pools"
+msgstr ""
+
+#: lxc/storage_volume.go:500 lxc/storage_volume.go:501
+msgid "Delete storage volumes"
+msgstr ""
+
+#: lxc/action.go:30 lxc/action.go:49 lxc/action.go:69 lxc/action.go:91
+#: lxc/alias.go:23 lxc/alias.go:55 lxc/alias.go:99 lxc/alias.go:147
+#: lxc/alias.go:198 lxc/cluster.go:26 lxc/cluster.go:59 lxc/cluster.go:142
+#: lxc/cluster.go:192 lxc/cluster.go:238 lxc/config.go:29 lxc/config.go:88
+#: lxc/config.go:289 lxc/config.go:355 lxc/config.go:452 lxc/config.go:560
+#: lxc/config_device.go:24 lxc/config_device.go:76 lxc/config_device.go:179
+#: lxc/config_device.go:252 lxc/config_device.go:318 lxc/config_device.go:405
+#: lxc/config_device.go:493 lxc/config_device.go:582 lxc/config_device.go:650
+#: lxc/config_metadata.go:29 lxc/config_metadata.go:54
+#: lxc/config_metadata.go:176 lxc/config_template.go:30
+#: lxc/config_template.go:67 lxc/config_template.go:110
+#: lxc/config_template.go:152 lxc/config_template.go:236
+#: lxc/config_template.go:298 lxc/config_trust.go:30 lxc/config_trust.go:59
+#: lxc/config_trust.go:115 lxc/config_trust.go:197 lxc/console.go:32
+#: lxc/copy.go:35 lxc/delete.go:30 lxc/exec.go:39 lxc/file.go:40 lxc/file.go:73
+#: lxc/file.go:122 lxc/file.go:185 lxc/file.go:324 lxc/image.go:42
+#: lxc/image.go:131 lxc/image.go:261 lxc/image.go:312 lxc/image.go:435
+#: lxc/image.go:571 lxc/image.go:776 lxc/image.go:890 lxc/image.go:1212
+#: lxc/image.go:1285 lxc/image_alias.go:26 lxc/image_alias.go:59
+#: lxc/image_alias.go:106 lxc/image_alias.go:149 lxc/image_alias.go:250
+#: lxc/info.go:29 lxc/init.go:35 lxc/launch.go:22 lxc/list.go:48 lxc/main.go:45
+#: lxc/monitor.go:31 lxc/move.go:31 lxc/network.go:32 lxc/network.go:104
+#: lxc/network.go:177 lxc/network.go:250 lxc/network.go:320 lxc/network.go:367
+#: lxc/network.go:452 lxc/network.go:537 lxc/network.go:660 lxc/network.go:719
+#: lxc/network.go:808 lxc/network.go:873 lxc/network.go:920 lxc/network.go:989
+#: lxc/network.go:1051 lxc/operation.go:25 lxc/operation.go:54
+#: lxc/operation.go:98 lxc/operation.go:174 lxc/profile.go:30
+#: lxc/profile.go:102 lxc/profile.go:163 lxc/profile.go:241 lxc/profile.go:297
+#: lxc/profile.go:348 lxc/profile.go:396 lxc/profile.go:520 lxc/profile.go:568
+#: lxc/profile.go:632 lxc/profile.go:705 lxc/profile.go:753 lxc/profile.go:812
+#: lxc/profile.go:866 lxc/publish.go:34 lxc/query.go:27 lxc/remote.go:34
+#: lxc/remote.go:84 lxc/remote.go:380 lxc/remote.go:414 lxc/remote.go:487
+#: lxc/remote.go:549 lxc/remote.go:598 lxc/remote.go:636 lxc/rename.go:20
+#: lxc/restore.go:24 lxc/snapshot.go:21 lxc/storage.go:33 lxc/storage.go:89
+#: lxc/storage.go:161 lxc/storage.go:208 lxc/storage.go:328 lxc/storage.go:383
+#: lxc/storage.go:491 lxc/storage.go:573 lxc/storage.go:645 lxc/storage.go:729
+#: lxc/storage_volume.go:34 lxc/storage_volume.go:122 lxc/storage_volume.go:201
+#: lxc/storage_volume.go:283 lxc/storage_volume.go:426
+#: lxc/storage_volume.go:501 lxc/storage_volume.go:561
+#: lxc/storage_volume.go:643 lxc/storage_volume.go:724
+#: lxc/storage_volume.go:853 lxc/storage_volume.go:918
+#: lxc/storage_volume.go:994 lxc/storage_volume.go:1025
+#: lxc/storage_volume.go:1089 lxc/storage_volume.go:1166
+#: lxc/storage_volume.go:1241
+msgid "Description"
+msgstr ""
+
+#: lxc/network.go:366 lxc/network.go:367
+msgid "Detach network interfaces from containers"
+msgstr ""
+
+#: lxc/network.go:451 lxc/network.go:452
+msgid "Detach network interfaces from profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:560 lxc/storage_volume.go:561
+msgid "Detach storage volumes from containers"
+msgstr ""
+
+#: lxc/storage_volume.go:642 lxc/storage_volume.go:643
+msgid "Detach storage volumes from profiles"
+msgstr ""
+
+#: lxc/config_device.go:163
 #, c-format
 msgid "Device %s added to %s"
 msgstr ""
 
-#: lxc/config.go:1272
+#: lxc/config_device.go:387
 #, c-format
 msgid "Device %s overridden for %s"
 msgstr ""
 
-#: lxc/config.go:1213
+#: lxc/config_device.go:476
 #, c-format
 msgid "Device %s removed from %s"
 msgstr ""
 
-#: lxc/utils.go:192 lxc/utils.go:216
+#: lxc/utils.go:133 lxc/utils.go:157
 #, c-format
 msgid "Device already exists: %s"
 msgstr ""
 
-#: lxc/image.go:1290
+#: lxc/image.go:586
 msgid "Directory import is not available on this platform"
 msgstr ""
 
-#: lxc/exec.go:71
+#: lxc/exec.go:55
 msgid "Disable pseudo-terminal allocation"
 msgstr ""
 
-#: lxc/exec.go:72
+#: lxc/exec.go:56
 msgid "Disable stdin (reads from /dev/null)"
 msgstr ""
 
-#: lxc/info.go:175
+#: lxc/info.go:179
 msgid "Disk usage:"
 msgstr ""
 
-#: lxc/list.go:638
+#: lxc/list.go:635
 msgid "EPHEMERAL"
 msgstr ""
 
-#: lxc/config.go:405
+#: lxc/config_trust.go:177
 msgid "EXPIRY DATE"
 msgstr ""
 
-#: lxc/main.go:52
-msgid "Enable debug mode"
+#: lxc/config_template.go:151 lxc/config_template.go:152
+msgid "Edit container file templates"
 msgstr ""
 
-#: lxc/main.go:51
-msgid "Enable verbose mode"
+#: lxc/config_metadata.go:53 lxc/config_metadata.go:54
+msgid "Edit container metadata files"
 msgstr ""
 
-#: lxc/exec.go:68
-msgid "Environment variable to set (e.g. HOME=/home/foo)"
+#: lxc/config.go:87 lxc/config.go:88
+msgid "Edit container or server configurations as YAML"
+msgstr ""
+
+#: lxc/file.go:121 lxc/file.go:122
+msgid "Edit files in containers"
+msgstr ""
+
+#: lxc/image.go:311 lxc/image.go:312
+msgid "Edit image properties"
+msgstr ""
+
+#: lxc/network.go:536 lxc/network.go:537
+msgid "Edit network configurations as YAML"
+msgstr ""
+
+#: lxc/profile.go:395 lxc/profile.go:396
+msgid "Edit profile configurations as YAML"
+msgstr ""
+
+#: lxc/storage.go:207 lxc/storage.go:208
+msgid "Edit storage pool configurations as YAML"
+msgstr ""
+
+#: lxc/storage_volume.go:723 lxc/storage_volume.go:724
+msgid "Edit storage volume configurations as YAML"
+msgstr ""
+
+#: lxc/list.go:504
+#, c-format
+msgid "Empty column entry (redundant, leading or trailing command) in '%s'"
 msgstr ""
 
-#: lxc/help.go:77
-msgid "Environment:"
+#: lxc/exec.go:52
+msgid "Environment variable to set (e.g. HOME=/home/foo)"
 msgstr ""
 
-#: lxc/copy.go:41 lxc/copy.go:42 lxc/init.go:143 lxc/init.go:144
+#: lxc/copy.go:41 lxc/init.go:44
 msgid "Ephemeral container"
 msgstr ""
 
-#: lxc/config.go:1446
+#: lxc/config_template.go:204
 #, c-format
 msgid "Error updating template file: %s"
 msgstr ""
 
-#: lxc/monitor.go:69
+#: lxc/monitor.go:48
 msgid "Event type to listen for"
 msgstr ""
 
-#: lxc/image.go:610
+#: lxc/exec.go:38
+msgid "Execute commands in containers"
+msgstr ""
+
+#: lxc/exec.go:39
+msgid ""
+"Execute commands in containers\n"
+"\n"
+"The command is executed directly using exec, so there is no shell and\n"
+"shell patterns (variables, file redirects, ...) won't be understood.\n"
+"If you need a shell environment you need to execute the shell\n"
+"executable, passing the shell commands as arguments, for example:\n"
+"\n"
+"  lxc exec <container> -- sh -c \"cd /tmp && pwd\"\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:838
 #, c-format
 msgid "Expires: %s"
 msgstr ""
 
-#: lxc/image.go:612
+#: lxc/image.go:840
 msgid "Expires: never"
 msgstr ""
 
-#: lxc/image.go:922
+#: lxc/image.go:434
+msgid "Export and download images"
+msgstr ""
+
+#: lxc/image.go:435
+msgid ""
+"Export and download images\n"
+"\n"
+"The output target is optional and defaults to the working directory."
+msgstr ""
+
+#: lxc/image.go:494
 #, c-format
 msgid "Exporting the image: %s"
 msgstr ""
 
-#: lxc/config.go:761
+#: lxc/config_template.go:279
 msgid "FILENAME"
 msgstr ""
 
-#: lxc/config.go:402 lxc/image.go:233 lxc/image.go:1137
+#: lxc/config_trust.go:174 lxc/image.go:923 lxc/image_alias.go:229
 msgid "FINGERPRINT"
 msgstr ""
 
-#: lxc/utils.go:261
+#: lxc/utils.go:202
 #, c-format
 msgid "Failed to create alias %s"
 msgstr ""
 
-#: lxc/manpage.go:62
-#, c-format
-msgid "Failed to generate 'lxc.%s.1': %v"
-msgstr ""
-
-#: lxc/manpage.go:55
-#, c-format
-msgid "Failed to generate 'lxc.1': %v"
-msgstr ""
-
-#: lxc/copy.go:238
+#: lxc/copy.go:255
 msgid "Failed to get the new container name"
 msgstr ""
 
-#: lxc/utils.go:251
+#: lxc/utils.go:192
 #, c-format
 msgid "Failed to remove alias %s"
 msgstr ""
 
-#: lxc/file.go:137
+#: lxc/file.go:609
 #, c-format
 msgid "Failed to walk path for %s: %s"
 msgstr ""
 
-#: lxc/list.go:137
+#: lxc/list.go:114
 msgid "Fast mode (same as --columns=nsacPt)"
 msgstr ""
 
-#: lxc/network.go:536 lxc/operation.go:121
+#: lxc/network.go:749 lxc/operation.go:126
 msgid "Filtering isn't supported yet"
 msgstr ""
 
-#: lxc/image.go:599
+#: lxc/image.go:824
 #, c-format
 msgid "Fingerprint: %s"
 msgstr ""
 
-#: lxc/exec.go:70
+#: lxc/exec.go:54
 msgid "Force pseudo-terminal allocation"
 msgstr ""
 
-#: lxc/cluster.go:42
-msgid "Force removing a node, even if degraded"
+#: lxc/cluster.go:242
+msgid "Force removing a member, even if degraded"
 msgstr ""
 
-#: lxc/action.go:47 lxc/action.go:48
+#: lxc/action.go:121
 msgid "Force the container to shutdown"
 msgstr ""
 
-#: lxc/delete.go:34 lxc/delete.go:35
+#: lxc/delete.go:34
 msgid "Force the removal of running containers"
 msgstr ""
 
-#: lxc/main.go:53
+#: lxc/main.go:56
 msgid "Force using the local unix socket"
 msgstr ""
 
-#: lxc/image.go:181 lxc/list.go:136
+#: lxc/image.go:913 lxc/list.go:113
 msgid "Format (csv|json|table|yaml)"
 msgstr ""
 
-#: lxc/remote.go:166
+#: lxc/remote.go:211
 msgid "Generating a client certificate. This may take a minute..."
 msgstr ""
 
-#: lxc/network.go:513
+#: lxc/config_device.go:178 lxc/config_device.go:179
+msgid "Get values for container device configuration keys"
+msgstr ""
+
+#: lxc/config.go:288 lxc/config.go:289
+msgid "Get values for container or server configuration keys"
+msgstr ""
+
+#: lxc/network.go:659 lxc/network.go:660
+msgid "Get values for network configuration keys"
+msgstr ""
+
+#: lxc/profile.go:519 lxc/profile.go:520
+msgid "Get values for profile configuration keys"
+msgstr ""
+
+#: lxc/storage.go:327 lxc/storage.go:328
+msgid "Get values for storage pool configuration keys"
+msgstr ""
+
+#: lxc/storage_volume.go:852 lxc/storage_volume.go:853
+msgid "Get values for storage volume configuration keys"
+msgstr ""
+
+#: lxc/network.go:851
 msgid "HOSTNAME"
 msgstr ""
 
-#: lxc/operation.go:152
+#: lxc/operation.go:151
 msgid "ID"
 msgstr ""
 
-#: lxc/network.go:515
+#: lxc/network.go:853
 msgid "IP ADDRESS"
 msgstr ""
 
-#: lxc/list.go:465
+#: lxc/list.go:462
 msgid "IPV4"
 msgstr ""
 
-#: lxc/list.go:466
+#: lxc/list.go:463
 msgid "IPV6"
 msgstr ""
 
-#: lxc/config.go:404
+#: lxc/config_trust.go:176
 msgid "ISSUE DATE"
 msgstr ""
 
-#: lxc/main.go:171
+#: lxc/main.go:259
 msgid ""
 "If this is your first time running LXD on this machine, you should also run: "
 "lxd init"
 msgstr ""
 
-#: lxc/main.go:54
-msgid "Ignore aliases when determining what command to run"
-msgstr ""
-
-#: lxc/action.go:51
-msgid "Ignore the container state (only for start)"
+#: lxc/action.go:117
+msgid "Ignore the container state"
 msgstr ""
 
-#: lxc/image.go:557
+#: lxc/image.go:1268
 msgid "Image already up to date."
 msgstr ""
 
-#: lxc/image.go:463
+#: lxc/image.go:231
 msgid "Image copied successfully!"
 msgstr ""
 
-#: lxc/image.go:982
+#: lxc/image.go:554
 msgid "Image exported successfully!"
 msgstr ""
 
-#: lxc/image.go:778
+#: lxc/image.go:284 lxc/image.go:1235
+msgid "Image identifier missing"
+msgstr ""
+
+#: lxc/image.go:352
+#, c-format
+msgid "Image identifier missing: %s"
+msgstr ""
+
+#: lxc/image.go:749
 #, c-format
 msgid "Image imported with fingerprint: %s"
 msgstr ""
 
-#: lxc/image.go:555
+#: lxc/image.go:1266
 msgid "Image refreshed successfully!"
 msgstr ""
 
-#: lxc/query.go:39
+#: lxc/image.go:571
+msgid ""
+"Import image into the image store\n"
+"\n"
+"Directory import is only available on Linux and must be performed as root."
+msgstr ""
+
+#: lxc/image.go:570
+msgid "Import images into the image store"
+msgstr ""
+
+#: lxc/query.go:38
 msgid "Input data"
 msgstr ""
 
-#: lxc/init.go:149
+#: lxc/init.go:47
 msgid "Instance type"
 msgstr ""
 
-#: lxc/remote.go:118
+#: lxc/remote.go:163
 #, c-format
 msgid "Invalid URL scheme \"%s\" in \"%s\""
 msgstr ""
 
-#: lxc/config.go:383
+#: lxc/config_trust.go:155
 msgid "Invalid certificate"
 msgstr ""
 
-#: lxc/init.go:32 lxc/init.go:37
-msgid "Invalid configuration key"
+#: lxc/list.go:525
+#, c-format
+msgid "Invalid config key '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:520
+#, c-format
+msgid "Invalid config key column format (too many fields): '%s'"
+msgstr ""
+
+#: lxc/image.go:1196 lxc/list.go:386
+#, c-format
+msgid "Invalid format %q"
+msgstr ""
+
+#: lxc/list.go:543
+#, c-format
+msgid "Invalid max width (must -1, 0 or a positive integer) '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:540
+#, c-format
+msgid "Invalid max width (must be an integer) '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:531
+#, c-format
+msgid ""
+"Invalid name in '%s', empty string is only allowed when defining maxWidth"
+msgstr ""
+
+#: lxc/main.go:341
+msgid "Invalid number of arguments"
 msgstr ""
 
-#: lxc/file.go:560
+#: lxc/file.go:97
 #, c-format
 msgid "Invalid path %s"
 msgstr ""
 
-#: lxc/remote.go:107
+#: lxc/remote.go:152
 #, c-format
 msgid "Invalid protocol: %s"
 msgstr ""
 
-#: lxc/file.go:473
+#: lxc/file.go:243
 #, c-format
 msgid "Invalid source %s"
 msgstr ""
 
-#: lxc/file.go:250
+#: lxc/file.go:352
 #, c-format
 msgid "Invalid target %s"
 msgstr ""
 
-#: lxc/info.go:156
+#: lxc/info.go:160
 msgid "Ips:"
 msgstr ""
 
-#: lxc/image.go:179
+#: lxc/image.go:139
 msgid "Keep the image up to date after initial copy"
 msgstr ""
 
-#: lxc/list.go:470
+#: lxc/list.go:467
 msgid "LAST USED AT"
 msgstr ""
 
-#: lxc/list.go:492
+#: lxc/list.go:489
 msgid "LOCATION"
 msgstr ""
 
-#: lxc/main.go:38
-msgid "LXD socket not found; is LXD installed and running?"
+#: lxc/cluster.go:94
+msgid "LXD server isn't part of a cluster"
 msgstr ""
 
-#: lxc/image.go:615
+#: lxc/image.go:844
 #, c-format
 msgid "Last used: %s"
 msgstr ""
 
-#: lxc/image.go:617
+#: lxc/image.go:846
 msgid "Last used: never"
 msgstr ""
 
-#: lxc/info.go:119
-#, c-format
-msgid "Location: %s"
-msgstr ""
-
-#: lxc/info.go:271
-msgid "Log:"
-msgstr ""
-
-#: lxc/network.go:514
-msgid "MAC ADDRESS"
-msgstr ""
-
-#: lxc/network.go:578
-msgid "MANAGED"
+#: lxc/network.go:807 lxc/network.go:808
+msgid "List DHCP leases"
 msgstr ""
 
-#: lxc/cluster.go:187
-msgid "MESSAGE"
+#: lxc/alias.go:98 lxc/alias.go:99
+msgid "List aliases"
 msgstr ""
 
-#: lxc/image.go:177
-msgid "Make image public"
+#: lxc/cluster.go:58 lxc/cluster.go:59
+msgid "List all the cluster members"
 msgstr ""
 
-#: lxc/publish.go:35
-msgid "Make the image public"
+#: lxc/network.go:718 lxc/network.go:719
+msgid "List available networks"
 msgstr ""
 
-#: lxc/info.go:193
-msgid "Memory (current)"
+#: lxc/storage.go:490 lxc/storage.go:491
+msgid "List available storage pools"
 msgstr ""
 
-#: lxc/info.go:197
-msgid "Memory (peak)"
+#: lxc/operation.go:97 lxc/operation.go:98
+msgid "List background operations"
 msgstr ""
 
-#: lxc/info.go:209
-msgid "Memory usage:"
+#: lxc/config_device.go:251 lxc/config_device.go:252
+msgid "List container devices"
 msgstr ""
 
-#: lxc/monitor.go:70
-msgid "Minimum level for log messages"
+#: lxc/config_template.go:235 lxc/config_template.go:236
+msgid "List container file templates"
 msgstr ""
 
-#: lxc/utils.go:143
-msgid "Missing summary."
+#: lxc/list.go:47
+msgid "List containers"
 msgstr ""
 
-#: lxc/network.go:303 lxc/network.go:356 lxc/storage.go:435 lxc/storage.go:565
-msgid "More than one device matches, specify the device name."
-msgstr ""
+#: lxc/list.go:48
+msgid ""
+"List containers\n"
+"\n"
+"Default column layout: ns46tS\n"
+"Fast column layout: nsacPt\n"
+"\n"
+"== Filters ==\n"
+"A single keyword like \"web\" which will list any container with a name "
+"starting by \"web\".\n"
+"A regular expression on the container name. (e.g. .*web.*01$).\n"
+"A key/value pair referring to a configuration item. For those, the\n"
+"namespace can be abbreviated to the smallest unambiguous identifier.\n"
+"\n"
+"Examples:\n"
+"  - \"user.blah=abc\" will list all containers with the \"blah\" user "
+"property set to \"abc\".\n"
+"  - \"u.blah=abc\" will do the same\n"
+"  - \"security.privileged=true\" will list all privileged containers\n"
+"  - \"s.privileged=true\" will do the same\n"
+"\n"
+"A regular expression matching a configuration item or its value. (e.g. "
+"volatile.eth0.hwaddr=00:16:3e:.*).\n"
+"\n"
+"== Columns ==\n"
+"The -c option takes a comma separated list of arguments that control\n"
+"which container attributes to output when displaying in table or csv\n"
+"format.\n"
+"\n"
+"Column arguments are either pre-defined shorthand chars (see below),\n"
+"or (extended) config keys.\n"
+"\n"
+"Commas between consecutive shorthand chars are optional.\n"
+"\n"
+"Pre-defined column shorthand chars:\n"
+"  4 - IPv4 address\n"
+"  6 - IPv6 address\n"
+"  a - Architecture\n"
+"  b - Storage pool\n"
+"  c - Creation date\n"
+"  d - Description\n"
+"  l - Last used date\n"
+"  n - Name\n"
+"  N - Number of Processes\n"
+"  p - PID of the container's init process\n"
+"  P - Profiles\n"
+"  s - State\n"
+"  S - Number of snapshots\n"
+"  t - Type (persistent or ephemeral)\n"
+"  L - Location of the container (e.g. its node)\n"
+"\n"
+"Custom columns are defined with \"key[:name][:maxWidth]\":\n"
+"  KEY: The (extended) config key to display\n"
+"  NAME: Name to display in the column header.\n"
+"  Defaults to the key if not specified or empty.\n"
+"\n"
+"  MAXWIDTH: Max width of the column (longer results are truncated).\n"
+"  Defaults to -1 (unlimited). Use 0 to limit to the column header size."
+msgstr ""
+
+#: lxc/image_alias.go:148
+msgid "List image aliases"
+msgstr ""
+
+#: lxc/image_alias.go:149
+msgid ""
+"List image aliases\n"
+"\n"
+"Filters may be part of the image hash or part of the image alias name.\n"
+msgstr ""
+
+#: lxc/image.go:889
+msgid "List images"
+msgstr ""
+
+#: lxc/image.go:890
+msgid ""
+"List images\n"
+"\n"
+"Filters may be of the <key>=<value> form for property based filtering,\n"
+"or part of the image hash or part of the image alias name.\n"
+"\n"
+"The -c option takes a (optionally comma-separated) list of arguments\n"
+"that control which image attributes to output when displaying in table\n"
+"or csv format.\n"
+"\n"
+"Default column layout is: lfpdasu\n"
+"\n"
+"Column shorthand chars:\n"
+"\n"
+"    l - Shortest image alias (and optionally number of other aliases)\n"
+"    L - Newline-separated list of all image aliases\n"
+"    f - Fingerprint\n"
+"    p - Whether image is public\n"
+"    d - Description\n"
+"    a - Architecture\n"
+"    s - Size"
+msgstr ""
+
+#: lxc/profile.go:567 lxc/profile.go:568
+msgid "List profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:917 lxc/storage_volume.go:918
+msgid "List storage volumes"
+msgstr ""
+
+#: lxc/remote.go:413 lxc/remote.go:414
+msgid "List the available remotes"
+msgstr ""
+
+#: lxc/config_trust.go:114 lxc/config_trust.go:115
+msgid "List trusted clients"
+msgstr ""
+
+#: lxc/operation.go:24 lxc/operation.go:25
+msgid "List, show and delete background operations"
+msgstr ""
+
+#: lxc/info.go:123
+#, c-format
+msgid "Location: %s"
+msgstr ""
+
+#: lxc/info.go:275
+msgid "Log:"
+msgstr ""
+
+#: lxc/network.go:852
+msgid "MAC ADDRESS"
+msgstr ""
+
+#: lxc/network.go:783
+msgid "MANAGED"
+msgstr ""
+
+#: lxc/cluster.go:123
+msgid "MESSAGE"
+msgstr ""
+
+#: lxc/image.go:137 lxc/image.go:576
+msgid "Make image public"
+msgstr ""
+
+#: lxc/publish.go:38
+msgid "Make the image public"
+msgstr ""
+
+#: lxc/network.go:32
+msgid "Manage an attach containers to networks"
+msgstr ""
+
+#: lxc/network.go:31
+msgid "Manage and attach containers to networks"
+msgstr ""
+
+#: lxc/cluster.go:25 lxc/cluster.go:26
+msgid "Manage cluster members"
+msgstr ""
+
+#: lxc/alias.go:22 lxc/alias.go:23
+msgid "Manage command aliases"
+msgstr ""
+
+#: lxc/config.go:28 lxc/config.go:29
+msgid "Manage container and server configuration options"
+msgstr ""
+
+#: lxc/config_device.go:23 lxc/config_device.go:24
+msgid "Manage container devices"
+msgstr ""
+
+#: lxc/config_template.go:29 lxc/config_template.go:30
+msgid "Manage container file templates"
+msgstr ""
+
+#: lxc/config_metadata.go:28 lxc/config_metadata.go:29
+msgid "Manage container metadata files"
+msgstr ""
+
+#: lxc/file.go:39 lxc/file.go:40
+msgid "Manage files in containers"
+msgstr ""
+
+#: lxc/image_alias.go:25 lxc/image_alias.go:26
+msgid "Manage image aliases"
+msgstr ""
+
+#: lxc/image.go:41
+msgid "Manage images"
+msgstr ""
+
+#: lxc/image.go:42
+msgid ""
+"Manage images\n"
+"\n"
+"In LXD containers are created from images. Those images were themselves\n"
+"either generated from an existing container or downloaded from an image\n"
+"server.\n"
+"\n"
+"When using remote images, LXD will automatically cache images for you\n"
+"and remove them upon expiration.\n"
+"\n"
+"The image unique identifier is the hash (sha-256) of its representation\n"
+"as a compressed tarball (or for split images, the concatenation of the\n"
+"metadata and rootfs tarballs).\n"
+"\n"
+"Images can be referenced by their full hash, shortest unique partial\n"
+"hash or alias name (if one is set)."
+msgstr ""
+
+#: lxc/profile.go:29 lxc/profile.go:30
+msgid "Manage profiles"
+msgstr ""
+
+#: lxc/storage.go:32 lxc/storage.go:33
+msgid "Manage storage pools and volumes"
+msgstr ""
+
+#: lxc/storage_volume.go:33
+msgid "Manage storage volumes"
+msgstr ""
+
+#: lxc/storage_volume.go:34
+msgid ""
+"Manage storage volumes\n"
+"\n"
+"Unless specified through a prefix, all volume operations affect \"custom"
+"\" (user created) volumes."
+msgstr ""
+
+#: lxc/remote.go:33 lxc/remote.go:34
+msgid "Manage the list of remote servers"
+msgstr ""
+
+#: lxc/config_trust.go:29 lxc/config_trust.go:30
+msgid "Manage trusted clients"
+msgstr ""
+
+#: lxc/info.go:197
+msgid "Memory (current)"
+msgstr ""
+
+#: lxc/info.go:201
+msgid "Memory (peak)"
+msgstr ""
+
+#: lxc/info.go:213
+msgid "Memory usage:"
+msgstr ""
+
+#: lxc/monitor.go:49
+msgid "Minimum level for log messages"
+msgstr ""
+
+#: lxc/config_metadata.go:102 lxc/config_metadata.go:200
+#: lxc/config_template.go:91 lxc/config_template.go:134
+#: lxc/config_template.go:176 lxc/config_template.go:260
+#: lxc/config_template.go:322 lxc/profile.go:197 lxc/profile.go:656
+msgid "Missing container name"
+msgstr ""
+
+#: lxc/profile.go:126
+msgid "Missing container.name name"
+msgstr ""
+
+#: lxc/config_device.go:103 lxc/config_device.go:203 lxc/config_device.go:276
+#: lxc/config_device.go:342 lxc/config_device.go:429 lxc/config_device.go:517
+#: lxc/config_device.go:606
+msgid "Missing name"
+msgstr ""
+
+#: lxc/network.go:128 lxc/network.go:201 lxc/network.go:344 lxc/network.go:391
+#: lxc/network.go:476 lxc/network.go:581 lxc/network.go:686 lxc/network.go:832
+#: lxc/network.go:897 lxc/network.go:946 lxc/network.go:1015
+msgid "Missing network name"
+msgstr ""
+
+#: lxc/storage.go:185 lxc/storage.go:252 lxc/storage.go:353 lxc/storage.go:408
+#: lxc/storage.go:603 lxc/storage.go:677 lxc/storage_volume.go:146
+#: lxc/storage_volume.go:225 lxc/storage_volume.go:451
+#: lxc/storage_volume.go:526 lxc/storage_volume.go:585
+#: lxc/storage_volume.go:667 lxc/storage_volume.go:766
+#: lxc/storage_volume.go:878 lxc/storage_volume.go:942
+#: lxc/storage_volume.go:1050 lxc/storage_volume.go:1114
+#: lxc/storage_volume.go:1197
+msgid "Missing pool name"
+msgstr ""
+
+#: lxc/profile.go:321 lxc/profile.go:372 lxc/profile.go:444 lxc/profile.go:544
+#: lxc/profile.go:729 lxc/profile.go:777 lxc/profile.go:836
+msgid "Missing profile name"
+msgstr ""
+
+#: lxc/profile.go:266
+msgid "Missing source profile name"
+msgstr ""
 
-#: lxc/file.go:460
+#: lxc/storage_volume.go:311
+msgid "Missing source volume name"
+msgstr ""
+
+#: lxc/file.go:446
+msgid "Missing target directory"
+msgstr ""
+
+#: lxc/monitor.go:30
+msgid "Monitor a local or remote LXD server"
+msgstr ""
+
+#: lxc/monitor.go:31
+msgid ""
+"Monitor a local or remote LXD server\n"
+"\n"
+"By default the monitor will listen to all message types."
+msgstr ""
+
+#: lxc/network.go:411 lxc/network.go:496 lxc/storage_volume.go:605
+#: lxc/storage_volume.go:686
+msgid "More than one device matches, specify the device name."
+msgstr ""
+
+#: lxc/file.go:224
 msgid "More than one file to download, but target is not a directory"
 msgstr ""
 
-#: lxc/move.go:42
+#: lxc/move.go:30 lxc/move.go:31
+msgid "Move containers within or in between LXD instances"
+msgstr ""
+
+#: lxc/storage_volume.go:993 lxc/storage_volume.go:994
+msgid "Move storage volumes between pools"
+msgstr ""
+
+#: lxc/move.go:44
 msgid "Move the container without its snapshots"
 msgstr ""
 
-#: lxc/storage.go:1128
+#: lxc/storage_volume.go:375
 #, c-format
 msgid "Moving the storage volume: %s"
 msgstr ""
 
-#: lxc/image.go:1292
+#: lxc/image.go:588
 msgid "Must run as root to import from directory"
 msgstr ""
 
-#: lxc/action.go:74
+#: lxc/action.go:147
 msgid "Must supply container name for: "
 msgstr ""
 
-#: lxc/cluster.go:183 lxc/list.go:471 lxc/network.go:576 lxc/profile.go:573
-#: lxc/remote.go:409 lxc/storage.go:731 lxc/storage.go:936
+#: lxc/cluster.go:119 lxc/list.go:468 lxc/network.go:781 lxc/profile.go:613
+#: lxc/remote.go:463 lxc/storage.go:544 lxc/storage_volume.go:966
 msgid "NAME"
 msgstr ""
 
-#: lxc/network.go:558 lxc/operation.go:139 lxc/remote.go:380 lxc/remote.go:385
+#: lxc/network.go:763 lxc/operation.go:138 lxc/remote.go:434 lxc/remote.go:439
 msgid "NO"
 msgstr ""
 
-#: lxc/storage.go:941
+#: lxc/storage_volume.go:971
 msgid "NODE"
 msgstr ""
 
-#: lxc/info.go:117
+#: lxc/info.go:121
 #, c-format
 msgid "Name: %s"
 msgstr ""
 
-#: lxc/network.go:276
+#: lxc/network.go:303
 #, c-format
 msgid "Network %s created"
 msgstr ""
 
-#: lxc/network.go:393
+#: lxc/network.go:353
 #, c-format
 msgid "Network %s deleted"
 msgstr ""
 
-#: lxc/network.go:274
+#: lxc/network.go:301
 #, c-format
 msgid "Network %s pending on node %s"
 msgstr ""
 
-#: lxc/network.go:470
+#: lxc/network.go:906
 #, c-format
 msgid "Network %s renamed to %s"
 msgstr ""
 
-#: lxc/init.go:145 lxc/init.go:146
+#: lxc/init.go:45
 msgid "Network name"
 msgstr ""
 
-#: lxc/info.go:226
+#: lxc/info.go:230
 msgid "Network usage:"
 msgstr ""
 
-#: lxc/image.go:180 lxc/publish.go:36
+#: lxc/publish.go:39
 msgid "New alias to define at target"
 msgstr ""
 
-#: lxc/config.go:414
-msgid "No certificate provided to add"
+#: lxc/image.go:140 lxc/image.go:577
+msgid "New aliases to add to the image"
 msgstr ""
 
-#: lxc/network.go:312 lxc/network.go:365
+#: lxc/network.go:420 lxc/network.go:505
 msgid "No device found for this network"
 msgstr ""
 
-#: lxc/storage.go:444 lxc/storage.go:574
+#: lxc/storage_volume.go:614 lxc/storage_volume.go:695
 msgid "No device found for this storage volume."
 msgstr ""
 
-#: lxc/config.go:446
-msgid "No fingerprint specified."
-msgstr ""
-
-#: lxc/cluster.go:143
+#: lxc/cluster.go:268
 #, c-format
 msgid "Node %s removed"
 msgstr ""
 
-#: lxc/cluster.go:119
+#: lxc/cluster.go:221
 #, c-format
 msgid "Node %s renamed to %s"
 msgstr ""
 
-#: lxc/copy.go:46 lxc/init.go:150 lxc/move.go:45 lxc/network.go:105
-#: lxc/storage.go:165
+#: lxc/copy.go:45 lxc/init.go:48 lxc/move.go:47
 msgid "Node name"
 msgstr ""
 
-#: lxc/storage.go:388 lxc/storage.go:481
+#: lxc/storage_volume.go:164 lxc/storage_volume.go:243
 msgid "Only \"custom\" volumes can be attached to containers."
 msgstr ""
 
-#: lxc/remote.go:101
+#: lxc/remote.go:146
 msgid "Only https URLs are supported for simplestreams"
 msgstr ""
 
-#: lxc/image.go:688
+#: lxc/image.go:658
 msgid "Only https:// is supported for remote image import."
 msgstr ""
 
-#: lxc/network.go:421 lxc/network.go:605
+#: lxc/network.go:607 lxc/network.go:960
 msgid "Only managed networks can be modified."
 msgstr ""
 
-#: lxc/operation.go:85
+#: lxc/operation.go:83
 #, c-format
 msgid "Operation %s deleted"
 msgstr ""
 
-#: lxc/help.go:71 lxc/main.go:139 lxc/main.go:195
-msgid "Options:"
-msgstr ""
-
-#: lxc/exec.go:69
+#: lxc/exec.go:53
 msgid "Override the terminal mode (auto, interactive or non-interactive)"
 msgstr ""
 
-#: lxc/list.go:641
+#: lxc/list.go:638
 msgid "PERSISTENT"
 msgstr ""
 
-#: lxc/list.go:473
+#: lxc/list.go:470
 msgid "PID"
 msgstr ""
 
-#: lxc/list.go:472
+#: lxc/list.go:469
 msgid "PROCESSES"
 msgstr ""
 
-#: lxc/list.go:474
+#: lxc/list.go:471
 msgid "PROFILES"
 msgstr ""
 
-#: lxc/remote.go:411
+#: lxc/remote.go:465
 msgid "PROTOCOL"
 msgstr ""
 
-#: lxc/image.go:234 lxc/remote.go:413
+#: lxc/image.go:924 lxc/remote.go:467
 msgid "PUBLIC"
 msgstr ""
 
-#: lxc/info.go:220
+#: lxc/info.go:224
 msgid "Packets received"
 msgstr ""
 
-#: lxc/info.go:221
+#: lxc/info.go:225
 msgid "Packets sent"
 msgstr ""
 
-#: lxc/help.go:78
-msgid "Path to an alternate client configuration directory"
-msgstr ""
-
-#: lxc/help.go:79
-msgid "Path to an alternate server directory"
-msgstr ""
-
-#: lxc/main.go:240
-msgid "Pause containers."
-msgstr ""
-
-#: lxc/main.go:42
-msgid "Permission denied, are you in the lxd group?"
+#: lxc/action.go:48 lxc/action.go:49
+msgid "Pause containers"
 msgstr ""
 
-#: lxc/info.go:138
+#: lxc/info.go:142
 #, c-format
 msgid "Pid: %d"
 msgstr ""
 
-#: lxc/network.go:446 lxc/profile.go:276 lxc/storage.go:648 lxc/storage.go:1210
+#: lxc/network.go:632 lxc/profile.go:491 lxc/storage.go:299
+#: lxc/storage_volume.go:823
 msgid "Press enter to open the editor again"
 msgstr ""
 
-#: lxc/config.go:822 lxc/config.go:887 lxc/config.go:1397 lxc/config.go:1447
-#: lxc/image.go:1192
+#: lxc/config.go:196 lxc/config.go:260 lxc/config_metadata.go:145
+#: lxc/config_template.go:205 lxc/image.go:406
 msgid "Press enter to start the editor again"
 msgstr ""
 
-#: lxc/monitor.go:68
+#: lxc/monitor.go:47
 msgid "Pretty rendering"
 msgstr ""
 
-#: lxc/help.go:73
-msgid "Print debug information"
-msgstr ""
-
-#: lxc/help.go:72
-msgid "Print less common commands"
+#: lxc/main.go:55
+msgid "Print help"
 msgstr ""
 
-#: lxc/query.go:37
+#: lxc/query.go:36
 msgid "Print the raw response"
 msgstr ""
 
-#: lxc/help.go:74
-msgid "Print verbose information"
+#: lxc/main.go:54
+msgid "Print version number"
 msgstr ""
 
-#: lxc/info.go:162
+#: lxc/info.go:166
 #, c-format
 msgid "Processes: %d"
 msgstr ""
 
-#: lxc/profile.go:362
+#: lxc/main_aliases.go:123 lxc/main_aliases.go:131
+#, c-format
+msgid "Processing aliases failed: %s\n"
+msgstr ""
+
+#: lxc/profile.go:147
 #, c-format
 msgid "Profile %s added to %s"
 msgstr ""
 
-#: lxc/profile.go:226
+#: lxc/profile.go:333
 #, c-format
 msgid "Profile %s created"
 msgstr ""
 
-#: lxc/profile.go:310
+#: lxc/profile.go:381
 #, c-format
 msgid "Profile %s deleted"
 msgstr ""
 
-#: lxc/profile.go:397
+#: lxc/profile.go:690
 #, c-format
 msgid "Profile %s removed from %s"
 msgstr ""
 
-#: lxc/profile.go:300
+#: lxc/profile.go:738
 #, c-format
 msgid "Profile %s renamed to %s"
 msgstr ""
 
-#: lxc/copy.go:39 lxc/copy.go:40 lxc/init.go:141 lxc/init.go:142
+#: lxc/copy.go:40 lxc/init.go:43
 msgid "Profile to apply to the new container"
 msgstr ""
 
-#: lxc/profile.go:339
+#: lxc/profile.go:225
 #, c-format
 msgid "Profiles %s applied to %s"
 msgstr ""
 
-#: lxc/info.go:136
+#: lxc/info.go:140
 #, c-format
 msgid "Profiles: %s"
 msgstr ""
 
-#: lxc/image.go:619
+#: lxc/image.go:849
 msgid "Properties:"
 msgstr ""
 
-#: lxc/remote.go:72
+#: lxc/remote.go:92
 msgid "Public image server"
 msgstr ""
 
-#: lxc/image.go:602
+#: lxc/image.go:827
 #, c-format
 msgid "Public: %s"
 msgstr ""
 
-#: lxc/file.go:68 lxc/file.go:69
-msgid "Recursively push or pull files"
+#: lxc/publish.go:33 lxc/publish.go:34
+msgid "Publish containers as images"
 msgstr ""
 
-#: lxc/image.go:529
-#, c-format
-msgid "Refreshing the image: %s"
+#: lxc/file.go:184 lxc/file.go:185
+msgid "Pull files from containers"
 msgstr ""
 
-#: lxc/remote.go:69
-msgid "Remote admin password"
+#: lxc/file.go:323 lxc/file.go:324
+msgid "Push files into containers"
 msgstr ""
 
-#: lxc/utils/cancel.go:34
-msgid "Remote operation canceled by user"
+#: lxc/file.go:192 lxc/file.go:330
+msgid "Recursively transfer files"
+msgstr ""
+
+#: lxc/image.go:1211 lxc/image.go:1212
+msgid "Refresh images"
 msgstr ""
 
-#: lxc/info.go:122
+#: lxc/image.go:1239
 #, c-format
-msgid "Remote: %s"
+msgid "Refreshing the image: %s"
 msgstr ""
 
-#: lxc/delete.go:42
+#: lxc/remote.go:515
 #, c-format
-msgid "Remove %s (yes/no): "
+msgid "Remote %s already exists"
 msgstr ""
 
-#: lxc/storage.go:1247
+#: lxc/remote.go:507 lxc/remote.go:569 lxc/remote.go:618 lxc/remote.go:656
 #, c-format
-msgid "Renamed storage volume from \"%s\" to \"%s\""
+msgid "Remote %s doesn't exist"
 msgstr ""
 
-#: lxc/delete.go:36 lxc/delete.go:37
-msgid "Require user confirmation"
+#: lxc/remote.go:116
+#, c-format
+msgid "Remote %s exists as <%s>"
 msgstr ""
 
-#: lxc/info.go:159
-msgid "Resources:"
+#: lxc/remote.go:511 lxc/remote.go:573 lxc/remote.go:660
+#, c-format
+msgid "Remote %s is static and cannot be modified"
 msgstr ""
 
-#: lxc/main.go:248
-msgid "Restart containers."
+#: lxc/remote.go:89
+msgid "Remote admin password"
 msgstr ""
 
-#: lxc/console.go:38
-msgid "Retrieve the container's console log"
+#: lxc/utils/cancel.go:34
+msgid "Remote operation canceled by user"
 msgstr ""
 
-#: lxc/init.go:293
+#: lxc/info.go:126
 #, c-format
-msgid "Retrieving image: %s"
+msgid "Remote: %s"
 msgstr ""
 
-#: lxc/action.go:52
-msgid "Run command against all containers"
+#: lxc/delete.go:42
+#, c-format
+msgid "Remove %s (yes/no): "
 msgstr ""
 
-#: lxc/image.go:237
-msgid "SIZE"
+#: lxc/cluster.go:237 lxc/cluster.go:238
+msgid "Remove a member from the cluster"
 msgstr ""
 
-#: lxc/list.go:475
-msgid "SNAPSHOTS"
+#: lxc/alias.go:197 lxc/alias.go:198
+msgid "Remove aliases"
 msgstr ""
 
-#: lxc/storage.go:738
-msgid "SOURCE"
+#: lxc/config_device.go:404 lxc/config_device.go:405
+msgid "Remove container devices"
 msgstr ""
 
-#: lxc/cluster.go:186 lxc/list.go:476 lxc/network.go:583 lxc/storage.go:736
-msgid "STATE"
+#: lxc/profile.go:631 lxc/profile.go:632
+msgid "Remove profiles from containers"
 msgstr ""
 
-#: lxc/remote.go:414
-msgid "STATIC"
+#: lxc/remote.go:548 lxc/remote.go:549
+msgid "Remove remotes"
 msgstr ""
 
-#: lxc/operation.go:155
-msgid "STATUS"
+#: lxc/config_trust.go:196 lxc/config_trust.go:197
+msgid "Remove trusted clients"
 msgstr ""
 
-#: lxc/list.go:478
-msgid "STORAGE POOL"
+#: lxc/cluster.go:191 lxc/cluster.go:192
+msgid "Rename a cluster member"
 msgstr ""
 
-#: lxc/remote.go:71
-msgid "Server authentication type (tls or macaroons)"
+#: lxc/alias.go:146 lxc/alias.go:147 lxc/image_alias.go:249
+#: lxc/image_alias.go:250
+msgid "Rename aliases"
 msgstr ""
 
-#: lxc/remote.go:211
-msgid "Server certificate NACKed by user"
+#: lxc/rename.go:19 lxc/rename.go:20
+msgid "Rename containers and snapshots"
 msgstr ""
 
-#: lxc/remote.go:311
-msgid "Server doesn't trust us after authentication"
+#: lxc/network.go:872 lxc/network.go:873
+msgid "Rename networks"
 msgstr ""
 
-#: lxc/remote.go:70
-msgid "Server protocol (lxd or simplestreams)"
+#: lxc/profile.go:704 lxc/profile.go:705
+msgid "Rename profiles"
 msgstr ""
 
-#: lxc/file.go:66
-msgid "Set the file's gid on push"
+#: lxc/remote.go:486 lxc/remote.go:487
+msgid "Rename remotes"
 msgstr ""
 
-#: lxc/file.go:67
-msgid "Set the file's perms on push"
+#: lxc/storage_volume.go:1024 lxc/storage_volume.go:1025
+msgid "Rename storage volumes"
 msgstr ""
 
-#: lxc/file.go:65
-msgid "Set the file's uid on push"
+#: lxc/storage_volume.go:1073
+#, c-format
+msgid "Renamed storage volume from \"%s\" to \"%s\""
 msgstr ""
 
-#: lxc/help.go:29
-msgid "Show all commands (not just interesting ones)"
+#: lxc/delete.go:35
+msgid "Require user confirmation"
 msgstr ""
 
-#: lxc/help.go:75
-msgid "Show client version"
+#: lxc/info.go:163
+msgid "Resources:"
 msgstr ""
 
-#: lxc/info.go:40
-msgid "Show the container's last 100 log lines?"
+#: lxc/action.go:68
+msgid "Restart containers"
 msgstr ""
 
-#: lxc/config.go:36
-msgid "Show the expanded configuration"
+#: lxc/action.go:69
+msgid ""
+"Restart containers\n"
+"\n"
+"The opposite of \"lxc pause\" is \"lxc start\"."
 msgstr ""
 
-#: lxc/info.go:41
-msgid "Show the resources available to the server"
+#: lxc/restore.go:23
+msgid "Restore containers from snapshots"
 msgstr ""
 
-#: lxc/storage.go:163
-msgid "Show the resources available to the storage pool"
+#: lxc/restore.go:24
+msgid ""
+"Restore containers from snapshots\n"
+"\n"
+"If --stateful is passed, then the running state will be restored too."
+msgstr ""
+
+#: lxc/console.go:39
+msgid "Retrieve the container's console log"
+msgstr ""
+
+#: lxc/init.go:201
+#, c-format
+msgid "Retrieving image: %s"
+msgstr ""
+
+#: lxc/action.go:112
+msgid "Run command against all containers"
+msgstr ""
+
+#: lxc/image.go:927
+msgid "SIZE"
+msgstr ""
+
+#: lxc/list.go:472
+msgid "SNAPSHOTS"
+msgstr ""
+
+#: lxc/storage.go:551
+msgid "SOURCE"
+msgstr ""
+
+#: lxc/cluster.go:122 lxc/list.go:473 lxc/network.go:788 lxc/storage.go:549
+msgid "STATE"
+msgstr ""
+
+#: lxc/remote.go:468
+msgid "STATIC"
+msgstr ""
+
+#: lxc/operation.go:154
+msgid "STATUS"
+msgstr ""
+
+#: lxc/list.go:475
+msgid "STORAGE POOL"
+msgstr ""
+
+#: lxc/query.go:26 lxc/query.go:27
+msgid "Send a raw query to LXD"
+msgstr ""
+
+#: lxc/remote.go:91
+msgid "Server authentication type (tls or macaroons)"
+msgstr ""
+
+#: lxc/remote.go:260
+msgid "Server certificate NACKed by user"
+msgstr ""
+
+#: lxc/remote.go:360
+msgid "Server doesn't trust us after authentication"
+msgstr ""
+
+#: lxc/remote.go:90
+msgid "Server protocol (lxd or simplestreams)"
+msgstr ""
+
+#: lxc/config_device.go:492 lxc/config_device.go:493
+msgid "Set container device configuration keys"
+msgstr ""
+
+#: lxc/config.go:354 lxc/config.go:355
+msgid "Set container or server configuration keys"
+msgstr ""
+
+#: lxc/network.go:919 lxc/network.go:920
+msgid "Set network configuration keys"
+msgstr ""
+
+#: lxc/profile.go:752 lxc/profile.go:753
+msgid "Set profile configuration keys"
+msgstr ""
+
+#: lxc/storage.go:572 lxc/storage.go:573
+msgid "Set storage pool configuration keys"
+msgstr ""
+
+#: lxc/storage_volume.go:1088 lxc/storage_volume.go:1089
+msgid "Set storage volume configuration keys"
+msgstr ""
+
+#: lxc/remote.go:635 lxc/remote.go:636
+msgid "Set the URL for the remote"
+msgstr ""
+
+#: lxc/remote.go:597 lxc/remote.go:598
+msgid "Set the default remote"
+msgstr ""
+
+#: lxc/file.go:333
+msgid "Set the file's gid on push"
+msgstr ""
+
+#: lxc/file.go:334
+msgid "Set the file's perms on push"
+msgstr ""
+
+#: lxc/file.go:332
+msgid "Set the file's uid on push"
+msgstr ""
+
+#: lxc/main.go:57
+msgid "Show all debug messages"
+msgstr ""
+
+#: lxc/main.go:58
+msgid "Show all information messages"
+msgstr ""
+
+#: lxc/config_metadata.go:175 lxc/config_metadata.go:176
+msgid "Show container metadata files"
+msgstr ""
+
+#: lxc/config.go:451 lxc/config.go:452
+msgid "Show container or server configurations"
+msgstr ""
+
+#: lxc/info.go:28 lxc/info.go:29
+msgid "Show container or server information"
+msgstr ""
+
+#: lxc/config_template.go:297 lxc/config_template.go:298
+msgid "Show content of container file templates"
+msgstr ""
+
+#: lxc/cluster.go:141 lxc/cluster.go:142
+msgid "Show details of a cluster member"
+msgstr ""
+
+#: lxc/operation.go:173 lxc/operation.go:174
+msgid "Show details on a background operation"
+msgstr ""
+
+#: lxc/config_device.go:581 lxc/config_device.go:582
+msgid "Show full device configuration for containers or profiles"
+msgstr ""
+
+#: lxc/image.go:1284 lxc/image.go:1285
+msgid "Show image properties"
+msgstr ""
+
+#: lxc/main.go:61
+msgid "Show less common commands"
 msgstr ""
 
-#: lxc/storage.go:164
+#: lxc/network.go:988 lxc/network.go:989
+msgid "Show network configurations"
+msgstr ""
+
+#: lxc/profile.go:811 lxc/profile.go:812
+msgid "Show profile configurations"
+msgstr ""
+
+#: lxc/storage.go:644 lxc/storage.go:645
+msgid "Show storage pool configurations and resources"
+msgstr ""
+
+#: lxc/storage_volume.go:1165
+msgid "Show storage volum configurations"
+msgstr ""
+
+#: lxc/storage_volume.go:1166
+msgid "Show storage volume configurations"
+msgstr ""
+
+#: lxc/info.go:39
+msgid "Show the container's last 100 log lines?"
+msgstr ""
+
+#: lxc/remote.go:379 lxc/remote.go:380
+msgid "Show the default remote"
+msgstr ""
+
+#: lxc/config.go:455
+msgid "Show the expanded configuration"
+msgstr ""
+
+#: lxc/info.go:40
+msgid "Show the resources available to the server"
+msgstr ""
+
+#: lxc/storage.go:648
+msgid "Show the resources available to the storage pool"
+msgstr ""
+
+#: lxc/storage.go:386
 msgid "Show the used and free space in bytes"
 msgstr ""
 
-#: lxc/image.go:600
+#: lxc/image.go:775 lxc/image.go:776
+msgid "Show useful information about images"
+msgstr ""
+
+#: lxc/storage.go:382 lxc/storage.go:383
+msgid "Show useful information about storage pools"
+msgstr ""
+
+#: lxc/image.go:825
 #, c-format
 msgid "Size: %.2fMB"
 msgstr ""
 
-#: lxc/info.go:240
+#: lxc/info.go:244
 msgid "Snapshots:"
 msgstr ""
 
-#: lxc/action.go:163
+#: lxc/action.go:242
 #, c-format
 msgid "Some containers failed to %s"
 msgstr ""
 
-#: lxc/image.go:634
+#: lxc/image.go:867
 msgid "Source:"
 msgstr ""
 
-#: lxc/main.go:258
-msgid "Start containers."
+#: lxc/action.go:29 lxc/action.go:30
+msgid "Start containers"
 msgstr ""
 
-#: lxc/launch.go:59
+#: lxc/launch.go:62
 #, c-format
 msgid "Starting %s"
 msgstr ""
 
-#: lxc/info.go:130
+#: lxc/info.go:134
 #, c-format
 msgid "Status: %s"
 msgstr ""
 
-#: lxc/main.go:264
-msgid "Stop containers."
+#: lxc/action.go:90 lxc/action.go:91
+msgid "Stop containers"
 msgstr ""
 
-#: lxc/publish.go:37 lxc/publish.go:38
+#: lxc/publish.go:40
 msgid "Stop the container if currently running"
 msgstr ""
 
-#: lxc/publish.go:136
+#: lxc/publish.go:144
 msgid "Stopping container failed!"
 msgstr ""
 
-#: lxc/delete.go:121
+#: lxc/delete.go:120
 #, c-format
 msgid "Stopping the container failed: %s"
 msgstr ""
 
-#: lxc/storage.go:538
+#: lxc/storage.go:144
 #, c-format
 msgid "Storage pool %s created"
 msgstr ""
 
-#: lxc/storage.go:598
+#: lxc/storage.go:194
 #, c-format
 msgid "Storage pool %s deleted"
 msgstr ""
 
-#: lxc/storage.go:536
+#: lxc/storage.go:142
 #, c-format
 msgid "Storage pool %s pending on node %s"
 msgstr ""
 
-#: lxc/init.go:147 lxc/init.go:148
+#: lxc/init.go:46
 msgid "Storage pool name"
 msgstr ""
 
-#: lxc/storage.go:980
+#: lxc/storage_volume.go:484
 #, c-format
 msgid "Storage volume %s created"
 msgstr ""
 
-#: lxc/storage.go:1000
+#: lxc/storage_volume.go:545
 #, c-format
 msgid "Storage volume %s deleted"
 msgstr ""
 
-#: lxc/storage.go:1135
+#: lxc/storage_volume.go:388
 msgid "Storage volume copied successfully!"
 msgstr ""
 
-#: lxc/storage.go:1129
+#: lxc/storage_volume.go:376
 msgid "Storage volume moved successfully!"
 msgstr ""
 
-#: lxc/action.go:50
-msgid "Store the container state (only for stop)"
+#: lxc/action.go:115
+msgid "Store the container state"
 msgstr ""
 
-#: lxc/info.go:201
+#: lxc/info.go:205
 msgid "Swap (current)"
 msgstr ""
 
-#: lxc/info.go:205
+#: lxc/info.go:209
 msgid "Swap (peak)"
 msgstr ""
 
-#: lxc/alias.go:85
+#: lxc/alias.go:128
 msgid "TARGET"
 msgstr ""
 
-#: lxc/list.go:477 lxc/network.go:516 lxc/network.go:577 lxc/operation.go:153
-#: lxc/storage.go:935
+#: lxc/list.go:474 lxc/network.go:782 lxc/network.go:854 lxc/operation.go:152
+#: lxc/storage_volume.go:965
 msgid "TYPE"
 msgstr ""
 
-#: lxc/delete.go:105
+#: lxc/delete.go:104
 msgid "The container is currently running, stop it first or pass --force."
 msgstr ""
 
-#: lxc/publish.go:101
+#: lxc/publish.go:109
 msgid ""
 "The container is currently running. Use --force to have it stopped and "
 "restarted."
 msgstr ""
 
-#: lxc/init.go:372
+#: lxc/init.go:280
 msgid "The container you are starting doesn't have any network attached to it."
 msgstr ""
 
-#: lxc/config.go:944 lxc/config.go:961 lxc/config.go:1240
+#: lxc/config_device.go:130 lxc/config_device.go:147 lxc/config_device.go:354
 msgid "The device already exists"
 msgstr ""
 
-#: lxc/config.go:1007 lxc/config.go:1019 lxc/config.go:1055 lxc/config.go:1073
-#: lxc/config.go:1119 lxc/config.go:1136 lxc/config.go:1179 lxc/config.go:1197
+#: lxc/config_device.go:218 lxc/config_device.go:230 lxc/config_device.go:442
+#: lxc/config_device.go:460 lxc/config_device.go:533 lxc/config_device.go:550
 msgid "The device doesn't exist"
 msgstr ""
 
-#: lxc/init.go:356
+#: lxc/init.go:264
 #, c-format
 msgid "The local image '%s' couldn't be found, trying '%s:%s' instead."
 msgstr ""
 
-#: lxc/init.go:352
+#: lxc/init.go:260
 #, c-format
 msgid "The local image '%s' couldn't be found, trying '%s:' instead."
 msgstr ""
 
-#: lxc/action.go:35
-msgid "The opposite of \"lxc pause\" is \"lxc start\"."
-msgstr ""
-
-#: lxc/config.go:1245
+#: lxc/config_device.go:359
 msgid "The profile device doesn't exist"
 msgstr ""
 
-#: lxc/network.go:317 lxc/network.go:370 lxc/storage.go:449 lxc/storage.go:579
+#: lxc/network.go:425 lxc/network.go:510 lxc/storage_volume.go:619
+#: lxc/storage_volume.go:700
 msgid "The specified device doesn't exist"
 msgstr ""
 
-#: lxc/network.go:321 lxc/network.go:374
+#: lxc/network.go:429 lxc/network.go:514
 msgid "The specified device doesn't match the network"
 msgstr ""
 
-#: lxc/publish.go:74
+#: lxc/publish.go:82
 msgid "There is no \"image name\".  Did you want an alias?"
 msgstr ""
 
-#: lxc/help.go:47
-msgid ""
-"This is the LXD command line client.\n"
-"\n"
-"All of LXD's features can be driven through the various commands below.\n"
-"For help with any of those, simply call them with --help."
-msgstr ""
-
-#: lxc/action.go:46
+#: lxc/action.go:122
 msgid "Time to wait for the container before killing it"
 msgstr ""
 
-#: lxc/image.go:603
+#: lxc/image.go:828
 msgid "Timestamps:"
 msgstr ""
 
-#: lxc/init.go:374
+#: lxc/init.go:282
 msgid "To attach a network to a container, use: lxc network attach"
 msgstr ""
 
-#: lxc/init.go:373
+#: lxc/init.go:281
 msgid "To create a new network, use: lxc network create"
 msgstr ""
 
-#: lxc/console.go:173
+#: lxc/console.go:185
 msgid "To detach from the console, press: <ctrl>+a q"
 msgstr ""
 
-#: lxc/main.go:172
+#: lxc/main.go:260
 msgid "To start your first container, try: lxc launch ubuntu:16.04"
 msgstr ""
 
-#: lxc/copy.go:43 lxc/move.go:43
+#: lxc/storage_volume.go:997
+msgid "Transfer mode, one of pull (default), push or relay"
+msgstr ""
+
+#: lxc/copy.go:42
+msgid "Transfer mode. One of pull (default), push or relay"
+msgstr ""
+
+#: lxc/move.go:45 lxc/storage_volume.go:286
 msgid "Transfer mode. One of pull (default), push or relay."
 msgstr ""
 
-#: lxc/copy.go:212
+#: lxc/copy.go:229
 #, c-format
 msgid "Transferring container: %s"
 msgstr ""
 
-#: lxc/image.go:717
+#: lxc/image.go:687
 #, c-format
 msgid "Transferring image: %s"
 msgstr ""
 
-#: lxc/action.go:108 lxc/launch.go:77
+#: lxc/action.go:181 lxc/launch.go:80
 #, c-format
 msgid "Try `lxc info --show-log %s` for more info"
 msgstr ""
 
-#: lxc/info.go:132
+#: lxc/info.go:136
 msgid "Type: ephemeral"
 msgstr ""
 
-#: lxc/info.go:134
+#: lxc/info.go:138
 msgid "Type: persistent"
 msgstr ""
 
-#: lxc/image.go:238
+#: lxc/image.go:928
 msgid "UPLOAD DATE"
 msgstr ""
 
-#: lxc/cluster.go:184 lxc/remote.go:410
+#: lxc/cluster.go:120 lxc/remote.go:464
 msgid "URL"
 msgstr ""
 
-#: lxc/network.go:580 lxc/profile.go:574 lxc/storage.go:740 lxc/storage.go:938
+#: lxc/network.go:785 lxc/profile.go:614 lxc/storage.go:553
+#: lxc/storage_volume.go:968
 msgid "USED BY"
 msgstr ""
 
-#: lxc/manpage.go:36
-msgid "Unable to find help2man."
+#: lxc/list.go:514
+#, c-format
+msgid "Unknown column shorthand char '%c' in '%s'"
 msgstr ""
 
-#: lxc/file.go:124
+#: lxc/file.go:596
 #, c-format
 msgid "Unknown file type '%s'"
 msgstr ""
 
-#: lxc/image.go:608
-#, c-format
-msgid "Uploaded: %s"
+#: lxc/config_device.go:649 lxc/config_device.go:650
+msgid "Unset container device configuration keys"
 msgstr ""
 
-#: lxc/action.go:38
-#, c-format
-msgid ""
-"Usage: lxc %s [--all] [<remote>:]<container> [[<remote>:]<container>...]\n"
-"\n"
-"%s%s"
+#: lxc/config.go:559 lxc/config.go:560
+msgid "Unset container or server configuration keys"
 msgstr ""
 
-#: lxc/help.go:45
-msgid "Usage: lxc <command> [options]"
+#: lxc/network.go:1050 lxc/network.go:1051
+msgid "Unset network configuration keys"
 msgstr ""
 
-#: lxc/alias.go:22
-msgid ""
-"Usage: lxc alias <subcommand> [options]\n"
-"\n"
-"Manage command aliases.\n"
-"\n"
-"lxc alias add <alias> <target>\n"
-"    Add a new alias <alias> pointing to <target>.\n"
-"\n"
-"lxc alias remove <alias>\n"
-"    Remove the alias <alias>.\n"
-"\n"
-"lxc alias list\n"
-"    List all the aliases.\n"
-"\n"
-"lxc alias rename <old alias> <new alias>\n"
-"    Rename remote <old alias> to <new alias>."
+#: lxc/profile.go:865 lxc/profile.go:866
+msgid "Unset profile configuration keys"
 msgstr ""
 
-#: lxc/cluster.go:23
-msgid ""
-"Usage: lxc cluster <subcommand> [options]\n"
-"\n"
-"Manage cluster nodes.\n"
-"\n"
-"lxc cluster list [<remote>:]\n"
-"    List all nodes in the cluster.\n"
-"\n"
-"lxc cluster show [<remote>:]<node>\n"
-"    Show details of a node.\n"
-"\n"
-"lxc cluster rename [<remote>:]<node> <new-name>\n"
-"    Rename a cluster node.\n"
-"\n"
-"lxc cluster delete [<remote>:]<node> [--force]\n"
-"    Delete a node from the cluster."
+#: lxc/storage.go:728 lxc/storage.go:729
+msgid "Unset storage pool configuration keys"
 msgstr ""
 
-#: lxc/config.go:85
-msgid ""
-"Usage: lxc config <subcommand> [options]\n"
-"\n"
-"Change container or server configuration options.\n"
-"\n"
-"*Container configuration*\n"
-"\n"
-"lxc config get [<remote>:][container] <key>\n"
-"    Get container or server configuration key.\n"
-"\n"
-"lxc config set [<remote>:][container] <key> <value>\n"
-"    Set container or server configuration key.\n"
-"\n"
-"lxc config unset [<remote>:][container] <key>\n"
-"    Unset container or server configuration key.\n"
-"\n"
-"lxc config show [<remote>:][container] [--expanded]\n"
-"    Show container or server configuration.\n"
-"\n"
-"lxc config edit [<remote>:][container]\n"
-"    Edit configuration, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"*Container metadata*\n"
-"\n"
-"lxc config metadata show [<remote>:][container]\n"
-"    Show the container metadata.yaml content.\n"
-"\n"
-"lxc config metadata edit [<remote>:][container]\n"
-"    Edit the container metadata.yaml, either by launching external editor or "
-"reading STDIN.\n"
-"\n"
-"*Container templates*\n"
-"\n"
-"lxc config template list [<remote>:][container]\n"
-"    List the names of template files for a container.\n"
-"\n"
-"lxc config template show [<remote>:][container] [template]\n"
-"    Show the content of a template file for a container.\n"
-"\n"
-"lxc config template create [<remote>:][container] [template]\n"
-"    Add an empty template file for a container.\n"
-"\n"
-"lxc config template edit [<remote>:][container] [template]\n"
-"    Edit the content of a template file for a container, either by launching "
-"external editor or reading STDIN.\n"
-"\n"
-"lxc config template delete [<remote>:][container] [template]\n"
-"    Delete a template file for a container.\n"
-"\n"
-"\n"
-"*Device management*\n"
-"\n"
-"lxc config device add [<remote>:]<container> <device> <type> [key=value...]\n"
-"    Add a device to a container.\n"
-"\n"
-"lxc config device get [<remote>:]<container> <device> <key>\n"
-"    Get a device property.\n"
-"\n"
-"lxc config device set [<remote>:]<container> <device> <key> <value>\n"
-"    Set a device property.\n"
-"\n"
-"lxc config device unset [<remote>:]<container> <device> <key>\n"
-"    Unset a device property.\n"
-"\n"
-"lxc config device override [<remote>:]<container> <device> [key=value...]\n"
-"    Copy a profile inherited device into local container config.\n"
-"\n"
-"lxc config device list [<remote>:]<container>\n"
-"    List devices for container.\n"
-"\n"
-"lxc config device show [<remote>:]<container>\n"
-"    Show full device details for container.\n"
-"\n"
-"lxc config device remove [<remote>:]<container> <name>...\n"
-"    Remove device from container.\n"
-"\n"
-"*Client trust store management*\n"
-"\n"
-"lxc config trust list [<remote>:]\n"
-"    List all trusted certs.\n"
-"\n"
-"lxc config trust add [<remote>:] <certfile.crt>\n"
-"    Add certfile.crt to trusted hosts.\n"
-"\n"
-"lxc config trust remove [<remote>:] [hostname|fingerprint]\n"
-"    Remove the cert from trusted hosts.\n"
-"\n"
-"*Examples*\n"
-"\n"
-"cat config.yaml | lxc config edit <container>\n"
-"    Update the container configuration from config.yaml.\n"
-"\n"
-"lxc config device add [<remote>:]container1 <device-name> disk source=/share/"
-"c1 path=opt\n"
-"    Will mount the host's /share/c1 onto /opt in the container.\n"
-"\n"
-"lxc config set [<remote>:]<container> limits.cpu 2\n"
-"    Will set a CPU limit of \"2\" for the container.\n"
-"\n"
-"lxc config set core.https_address [::]:8443\n"
-"    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
-"\n"
-"lxc config set core.trust_password blah\n"
-"    Will set the server's trust password to blah."
+#: lxc/storage_volume.go:1240 lxc/storage_volume.go:1241
+msgid "Unset storage volume configuration keys"
 msgstr ""
 
-#: lxc/console.go:31
-msgid ""
-"Usage: lxc console [<remote>:]<container> [-l]\n"
-"\n"
-"Interact with the container's console device and log."
+#: lxc/image.go:835
+#, c-format
+msgid "Uploaded: %s"
 msgstr ""
 
-#: lxc/copy.go:30
-msgid ""
-"Usage: lxc copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>] "
-"[--ephemeral|e] [--profile|-p <profile>...] [--config|-c <key=value>...] [--"
-"container-only] [--target <node>]\n"
-"\n"
-"Copy containers within or in between LXD instances."
+#: lxc/delete.go:47
+msgid "User aborted delete operation"
 msgstr ""
 
-#: lxc/delete.go:27
+#: lxc/utils/cancel.go:40
 msgid ""
-"Usage: lxc delete [<remote>:]<container>[/<snapshot>] "
-"[[<remote>:]<container>[/<snapshot>]...]\n"
-"\n"
-"Delete containers and snapshots."
+"User signaled us three times, exiting. The remote operation will keep "
+"running."
 msgstr ""
 
-#: lxc/exec.go:53
-msgid ""
-"Usage: lxc exec [<remote>:]<container> [-t] [-T] [-n] [--mode=auto|"
-"interactive|non-interactive] [--env KEY=VALUE...] [--] <command line>\n"
-"\n"
-"Execute commands in containers.\n"
-"\n"
-"The command is executed directly using exec, so there is no shell and shell "
-"patterns (variables, file redirects, ...)\n"
-"won't be understood. If you need a shell environment you need to execute the "
-"shell executable, passing the shell commands\n"
-"as arguments, for example:\n"
-"\n"
-"    lxc exec <container> -- sh -c \"cd /tmp && pwd\"\n"
-"\n"
-"Mode defaults to non-interactive, interactive mode is selected if both stdin "
-"AND stdout are terminals (stderr is ignored)."
+#: lxc/query.go:35
+msgid "Wait for the operation to complete"
 msgstr ""
 
-#: lxc/file.go:39
+#: lxc/restore.go:36
 msgid ""
-"Usage: lxc file <subcommand> [options]\n"
-"\n"
-"Manage files in containers.\n"
-"\n"
-"lxc file pull [-r|--recursive] [<remote>:]<container>/<path> "
-"[[<remote>:]<container>/<path>...] <target path>\n"
-"    Pull files from containers.\n"
-"\n"
-"lxc file push [-r|--recursive] [-p|--create-dirs] [--uid=UID] [--gid=GID] [--"
-"mode=MODE] <source path> [<source path>...] [<remote>:]<container>/<path>\n"
-"    Push files into containers.\n"
-"\n"
-"lxc file delete [<remote>:]<container>/<path> [[<remote>:]<container>/"
-"<path>...]\n"
-"    Delete files in containers.\n"
-"\n"
-"lxc file edit [<remote>:]<container>/<path>\n"
-"    Edit files in containers using the default text editor.\n"
-"\n"
-"*Examples*\n"
-"lxc file push /etc/hosts foo/etc/hosts\n"
-"   To push /etc/hosts into the container \"foo\".\n"
-"\n"
-"lxc file pull foo/etc/hosts .\n"
-"   To pull /etc/hosts from the container and write it to the current "
-"directory."
+"Whether or not to restore the container's running state from snapshot (if "
+"available)"
 msgstr ""
 
-#: lxc/finger.go:15
-msgid ""
-"Usage: lxc finger [<remote>:]\n"
-"\n"
-"Check if the LXD server is alive."
+#: lxc/snapshot.go:31
+msgid "Whether or not to snapshot the container's running state"
 msgstr ""
 
-#: lxc/help.go:22
-msgid ""
-"Usage: lxc help [--all]\n"
-"\n"
-"Help page for the LXD client."
+#: lxc/network.go:765 lxc/operation.go:140 lxc/remote.go:436 lxc/remote.go:441
+msgid "YES"
 msgstr ""
 
-#: lxc/image.go:73
-msgid ""
-"Usage: lxc image <subcommand> [options]\n"
-"\n"
-"Manipulate container images.\n"
-"\n"
-"In LXD containers are created from images. Those images were themselves\n"
-"either generated from an existing container or downloaded from an image\n"
-"server.\n"
-"\n"
-"When using remote images, LXD will automatically cache images for you\n"
-"and remove them upon expiration.\n"
-"\n"
-"The image unique identifier is the hash (sha-256) of its representation\n"
-"as a compressed tarball (or for split images, the concatenation of the\n"
-"metadata and rootfs tarballs).\n"
-"\n"
-"Images can be referenced by their full hash, shortest unique partial\n"
-"hash or alias name (if one is set).\n"
-"\n"
-"\n"
-"lxc image import <tarball>|<dir> [<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) or an image directory into the LXD "
-"image store.\n"
-"    Directory import is only available on Linux and must be performed as "
-"root.\n"
-"\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"
-"    Delete one or more images from the LXD image store.\n"
-"\n"
-"lxc image refresh [<remote>:]<image> [[<remote>:]<image>...]\n"
-"    Refresh one or more images from its parent remote.\n"
-"\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"
-"    The target may be an existing directory, file name, or \"-\" to specify\n"
-"    stdout.  The target MUST be a directory when exporting a split image.\n"
-"    If the target is a directory, the image's name (each part's name for\n"
-"    split images) as found in the database will be used for the exported\n"
-"    image.  If the target is a file (not a directory and not stdout), then\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"
-"    Print everything LXD knows about a given image.\n"
-"\n"
-"lxc image list [<remote>:] [filter] [--format csv|json|table|yaml] [-c "
-"<columns>]\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"
-"    The -c option takes a (optionally comma-separated) list of arguments "
-"that\n"
-"    control which image attributes to output when displaying in table or "
-"csv\n"
-"    format.\n"
-"\n"
-"    Default column layout is: lfpdasu\n"
-"\n"
-"    Column shorthand chars:\n"
-"\n"
-"        l - Shortest image alias (and optionally number of other aliases)\n"
-"\n"
-"        L - Newline-separated list of all image aliases\n"
-"\n"
-"        f - Fingerprint\n"
-"\n"
-"        p - Whether image is public\n"
-"\n"
-"        d - Description\n"
-"\n"
-"        a - Architecture\n"
-"\n"
-"        s - Size\n"
-"\n"
-"        u - Upload date\n"
-"\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"
-"    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"
-"    Create a new alias for an existing image.\n"
-"\n"
-"lxc image alias rename [<remote>:]<alias> <new-name>\n"
-"    Rename an alias.\n"
-"\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."
+#: lxc/exec.go:122
+msgid "You can't pass -t and -T at the same time"
 msgstr ""
 
-#: lxc/info.go:27
+#: lxc/exec.go:126
+msgid "You can't pass -t or -T at the same time as --mode"
+msgstr ""
+
+#: lxc/copy.go:78
+msgid "You must specify a destination container name when using --target"
+msgstr ""
+
+#: lxc/copy.go:73 lxc/move.go:188
+msgid "You must specify a source container name"
+msgstr ""
+
+#: lxc/copy.go:68 lxc/move.go:91 lxc/move.go:183
+msgid "You must use the same source and destination remote when using --target"
+msgstr ""
+
+#: lxc/alias.go:53
+msgid "add <alias> <target>"
+msgstr ""
+
+#: lxc/config_trust.go:57
+msgid "add [<remote>:] <cert>"
+msgstr ""
+
+#: lxc/profile.go:100
+msgid "add [<remote>:]<container> <profile>"
+msgstr ""
+
+#: lxc/config_device.go:74
+msgid "add [<remote>:]<container|profile> <device> <type> [key=value...]"
+msgstr ""
+
+#: lxc/remote.go:82
+msgid "add [<remote>] <IP|FQDN|URL>"
+msgstr ""
+
+#: lxc/alias.go:21 lxc/image_alias.go:24
+msgid "alias"
+msgstr ""
+
+#: lxc/profile.go:160
+msgid "assign [<remote>:]<container> <profiles>"
+msgstr ""
+
+#: lxc/network.go:102
+msgid "attach [<remote>:]<network> <container> [device name] [interface name]"
+msgstr ""
+
+#: lxc/storage_volume.go:120
+msgid "attach [<remote>:]<pool> <volume> <container> [device name] <path>"
+msgstr ""
+
+#: lxc/storage_volume.go:199
 msgid ""
-"Usage: lxc info [<remote>:][<container>] [--show-log] [--resources]\n"
-"\n"
-"Show container or server information.\n"
-"\n"
-"lxc info [<remote>:]<container> [--show-log]\n"
-"    For container information.\n"
-"\n"
-"lxc info [<remote>:] [--resources]\n"
-"    For LXD server information."
+"attach-profile [<remote:>]<pool> <volume> <profile> [device name] <path>"
 msgstr ""
 
-#: lxc/init.go:79
+#: lxc/network.go:175
 msgid ""
-"Usage: lxc init [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
-"profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
-"<node>]\n"
-"\n"
-"Create containers from images.\n"
-"\n"
-"Not specifying -p will result in the default profile.\n"
-"Specifying \"-p\" with no argument will result in no profile.\n"
-"\n"
-"Examples:\n"
-"    lxc init ubuntu:16.04 u1"
+"attach-profile [<remote>:]<network> <profile> [device name] [interface name]"
+msgstr ""
+
+#: lxc/cluster.go:24
+msgid "cluster"
+msgstr ""
+
+#: lxc/config.go:27
+msgid "config"
+msgstr ""
+
+#: lxc/console.go:30
+msgid "console [<remote>:]<container>"
+msgstr ""
+
+#: lxc/storage_volume.go:280
+msgid "copy <pool>/<volume> <pool>/<volume>"
+msgstr ""
+
+#: lxc/image.go:128
+msgid "copy [<remote>:]<image> <remote>:"
+msgstr ""
+
+#: lxc/profile.go:238
+msgid "copy [<remote>:]<profile> [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/copy.go:32
+msgid "copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>]"
+msgstr ""
+
+#: lxc/image_alias.go:57
+msgid "create [<remote>:]<alias> <fingerprint>"
+msgstr ""
+
+#: lxc/config_template.go:65
+msgid "create [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/network.go:248
+msgid "create [<remote>:]<network> [key=value...]"
+msgstr ""
+
+#: lxc/storage.go:87
+msgid "create [<remote>:]<pool> <driver> [key=value]..."
+msgstr ""
+
+#: lxc/storage_volume.go:424
+msgid "create [<remote>:]<pool> <volume> [key=value]..."
+msgstr ""
+
+#: lxc/profile.go:295
+msgid "create [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/remote.go:453
+msgid "default"
+msgstr ""
+
+#: lxc/image_alias.go:103
+msgid "delete [<remote>:]<alias>"
+msgstr ""
+
+#: lxc/config_template.go:107
+msgid "delete [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/file.go:70
+msgid "delete [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...]"
+msgstr ""
+
+#: lxc/delete.go:27
+msgid ""
+"delete [<remote>:]<container>[/<snapshot>] [[<remote>:]<container>[/"
+"<snapshot>]...]"
+msgstr ""
+
+#: lxc/image.go:258
+msgid "delete [<remote>:]<image> [[<remote>:]<image>...]"
+msgstr ""
+
+#: lxc/network.go:317
+msgid "delete [<remote>:]<network>"
+msgstr ""
+
+#: lxc/operation.go:51
+msgid "delete [<remote>:]<operation>"
+msgstr ""
+
+#: lxc/storage.go:158
+msgid "delete [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:498
+msgid "delete [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:345
+msgid "delete [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/storage.go:431
+msgid "description"
+msgstr ""
+
+#: lxc/network.go:365
+msgid "detach [<remote>:]<network> <container> [device name]"
+msgstr ""
+
+#: lxc/storage_volume.go:559
+msgid "detach [<remote>:]<pool> <volume> <container> [device name]"
+msgstr ""
+
+#: lxc/storage_volume.go:641
+msgid "detach-profile [<remote:>]<pool> <volume> <profile> [device name]"
+msgstr ""
+
+#: lxc/network.go:450
+msgid "detach-profile [<remote>:]<network> <container> [device name]"
+msgstr ""
+
+#: lxc/config_device.go:22
+msgid "device"
+msgstr ""
+
+#: lxc/init.go:223
+msgid "didn't get any affected image, container or snapshot from server"
+msgstr ""
+
+#: lxc/image.go:819
+msgid "disabled"
+msgstr ""
+
+#: lxc/storage.go:430
+msgid "driver"
+msgstr ""
+
+#: lxc/config_template.go:150
+msgid "edit [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/file.go:120
+msgid "edit [<remote>:]<container>/<path>"
+msgstr ""
+
+#: lxc/image.go:310
+msgid "edit [<remote>:]<image>"
+msgstr ""
+
+#: lxc/network.go:535
+msgid "edit [<remote>:]<network>"
+msgstr ""
+
+#: lxc/storage.go:206
+msgid "edit [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:722
+msgid "edit [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:394
+msgid "edit [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/config.go:86 lxc/config_metadata.go:52
+msgid "edit [<remote>:][container]"
+msgstr ""
+
+#: lxc/image.go:821
+msgid "enabled"
+msgstr ""
+
+#: lxc/action.go:234
+#, c-format
+msgid "error: %v"
+msgstr ""
+
+#: lxc/exec.go:37
+msgid "exec [<remote>:]<container> [flags] [--] <command line>"
+msgstr ""
+
+#: lxc/image.go:433
+msgid "export [<remote>:]<image> [target]"
+msgstr ""
+
+#: lxc/file.go:38
+msgid "file"
+msgstr ""
+
+#: lxc/config_device.go:177
+msgid "get [<remote>:]<container|profile> <device> <key>"
+msgstr ""
+
+#: lxc/network.go:658
+msgid "get [<remote>:]<network> <key>"
+msgstr ""
+
+#: lxc/storage.go:326
+msgid "get [<remote>:]<pool> <key>"
+msgstr ""
+
+#: lxc/storage_volume.go:851
+msgid "get [<remote>:]<pool> <volume> <key>"
+msgstr ""
+
+#: lxc/profile.go:518
+msgid "get [<remote>:]<profile> <key>"
+msgstr ""
+
+#: lxc/config.go:287
+msgid "get [<remote>:][container] <key>"
+msgstr ""
+
+#: lxc/remote.go:378
+msgid "get-default"
+msgstr ""
+
+#: lxc/image.go:40
+msgid "image"
+msgstr ""
+
+#: lxc/image.go:569
+msgid ""
+"import <tarball>|<directory>|<URL> [<rootfs tarball>] [<remote>:] "
+"[key=value...]"
+msgstr ""
+
+#: lxc/storage.go:428
+msgid "info"
+msgstr ""
+
+#: lxc/image.go:774
+msgid "info [<remote>:]<image>"
+msgstr ""
+
+#: lxc/storage.go:381
+msgid "info [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/info.go:27
+msgid "info [<remote>:][<container>]"
+msgstr ""
+
+#: lxc/init.go:33
+msgid "init [<remote>:]<image> [<remote>:][<name>]"
 msgstr ""
 
 #: lxc/launch.go:20
+msgid "launch [<remote>:]<image> [<remote>:][<name>]"
+msgstr ""
+
+#: lxc/alias.go:96 lxc/remote.go:411
+msgid "list"
+msgstr ""
+
+#: lxc/cluster.go:56 lxc/config_trust.go:112 lxc/network.go:716
+#: lxc/operation.go:95 lxc/profile.go:565 lxc/storage.go:488
+msgid "list [<remote>:]"
+msgstr ""
+
+#: lxc/image.go:887
+msgid "list [<remote>:] [filter]"
+msgstr ""
+
+#: lxc/image_alias.go:146
+msgid "list [<remote>:] [filters...]"
+msgstr ""
+
+#: lxc/list.go:45
+msgid "list [<remote>:] [filters]"
+msgstr ""
+
+#: lxc/config_template.go:234
+msgid "list [<remote>:]<container>"
+msgstr ""
+
+#: lxc/config_device.go:249
+msgid "list [<remote>:]<container|profile>"
+msgstr ""
+
+#: lxc/storage_volume.go:915
+msgid "list [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/network.go:806
+msgid "list-leases [<remote>:]<network>"
+msgstr ""
+
+#: lxc/alias.go:57
 msgid ""
-"Usage: lxc launch [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
-"profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
-"<node>]\n"
-"\n"
-"Create and start containers from images.\n"
-"\n"
-"Not specifying -p will result in the default profile.\n"
-"Specifying \"-p\" with no argument will result in no profile.\n"
-"\n"
-"Examples:\n"
-"    lxc launch ubuntu:16.04 u1"
+"lxc alias add list list -c ns46S\n"
+"    Overwrite the \"list\" command to pass -c ns46S."
 msgstr ""
 
-#: lxc/list.go:44
+#: lxc/alias.go:200
 msgid ""
-"Usage: lxc list [<remote>:] [filters] [--format csv|json|table|yaml] [-c "
-"<columns>] [--fast]\n"
-"\n"
-"List the existing containers.\n"
-"\n"
-"Default column layout: ns46tS\n"
-"Fast column layout: nsacPt\n"
-"\n"
-"*Filters*\n"
-"A single keyword like \"web\" which will list any container with a name "
-"starting by \"web\".\n"
-"\n"
-"A regular expression on the container name. (e.g. .*web.*01$).\n"
-"\n"
-"A key/value pair referring to a configuration item. For those, the namespace "
-"can be abbreviated to the smallest unambiguous identifier.\n"
-"\t- \"user.blah=abc\" will list all containers with the \"blah\" user "
-"property set to \"abc\".\n"
-"\n"
-"\t- \"u.blah=abc\" will do the same\n"
-"\n"
-"\t- \"security.privileged=true\" will list all privileged containers\n"
-"\n"
-"\t- \"s.privileged=true\" will do the same\n"
-"\n"
-"A regular expression matching a configuration item or its value. (e.g. "
-"volatile.eth0.hwaddr=00:16:3e:.*).\n"
-"\n"
-"*Columns*\n"
-"The -c option takes a comma separated list of arguments that control\n"
-"which container attributes to output when displaying in table or csv\n"
-"format.\n"
-"\n"
-"Column arguments are either pre-defined shorthand chars (see below),\n"
-"or (extended) config keys.\n"
-"\n"
-"Commas between consecutive shorthand chars are optional.\n"
-"\n"
-"Pre-defined column shorthand chars:\n"
-"\n"
-"\t4 - IPv4 address\n"
-"\n"
-"\t6 - IPv6 address\n"
-"\n"
-"\ta - Architecture\n"
-"\n"
-"\tb - Storage pool\n"
-"\n"
-"\tc - Creation date\n"
-"\n"
-"\td - Description\n"
-"\n"
-"\tl - Last used date\n"
-"\n"
-"\tn - Name\n"
-"\n"
-"\tN - Number of Processes\n"
-"\n"
-"\tp - PID of the container's init process\n"
-"\n"
-"\tP - Profiles\n"
-"\n"
-"\ts - State\n"
-"\n"
-"\tS - Number of snapshots\n"
-"\n"
-"\tt - Type (persistent or ephemeral)\n"
-"\n"
-"\tL - Location of the container (e.g. its node)\n"
-"\n"
-"Custom columns are defined with \"key[:name][:maxWidth]\":\n"
-"\n"
-"\tKEY: The (extended) config key to display\n"
-"\n"
-"\tNAME: Name to display in the column header.\n"
-"\tDefaults to the key if not specified or empty.\n"
-"\n"
-"\tMAXWIDTH: Max width of the column (longer results are truncated).\n"
-"\tDefaults to -1 (unlimited). Use 0 to limit to the column header size.\n"
-"\n"
-"*Examples*\n"
-"lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:"
-"MAC\n"
-"\tShows a list of containers using the \"NAME\", \"BASE IMAGE\", \"STATE\", "
-"\"IPV4\",\n"
-"\t\"IPV6\" and \"MAC\" columns.\n"
+"lxc alias remove my-list\n"
+"    Remove the \"my-list\" alias."
+msgstr ""
+
+#: lxc/alias.go:149
+msgid ""
+"lxc alias rename list my-list\n"
+"    Rename existing alias \"list\" to \"my-list\"."
+msgstr ""
+
+#: lxc/config_device.go:78
+msgid ""
+"lxc config device add [<remote>:]container1 <device-name> disk source=/share/"
+"c1 path=opt\n"
+"    Will mount the host's /share/c1 onto /opt in the container."
+msgstr ""
+
+#: lxc/config.go:90
+msgid ""
+"lxc config edit <container> < container.yaml\n"
+"    Update the container configuration from config.yaml."
+msgstr ""
+
+#: lxc/config.go:357
+msgid ""
+"lxc config set [<remote>:]<container> limits.cpu 2\n"
+"    Will set a CPU limit of \"2\" for the container.\n"
 "\n"
-"\t\"BASE IMAGE\" and \"MAC\" are custom columns generated from container "
-"configuration keys.\n"
+"lxc config set core.https_address [::]:8443\n"
+"    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
 "\n"
-"lxc list -c ns,user.comment:comment\n"
-"\tList images with their running state and user comment. "
+"lxc config set core.trust_password blah\n"
+"    Will set the server's trust password to blah."
 msgstr ""
 
-#: lxc/manpage.go:20
+#: lxc/file.go:187
 msgid ""
-"Usage: lxc manpage <directory>\n"
-"\n"
-"Generate all the LXD manpages."
+"lxc file pull foo/etc/hosts .\n"
+"   To pull /etc/hosts from the container and write it to the current "
+"directory."
 msgstr ""
 
-#: lxc/monitor.go:49
+#: lxc/file.go:326
 msgid ""
-"Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
-"\n"
-"Monitor a local or remote LXD server.\n"
+"lxc file push /etc/hosts foo/etc/hosts\n"
+"   To push /etc/hosts into the container \"foo\"."
+msgstr ""
+
+#: lxc/image.go:314
+msgid ""
+"lxc image edit <image>\n"
+"    Launch a text editor to edit the properties\n"
 "\n"
-"By default the monitor will listen to all message types.\n"
+"lxc image edit <image> < image.yaml\n"
+"    Load the image properties from a YAML file"
+msgstr ""
+
+#: lxc/info.go:31
+msgid ""
+"lxc info [<remote>:]<container> [--show-log]\n"
+"    For container information.\n"
 "\n"
-"Message types to listen for can be specified with --type.\n"
+"lxc info [<remote>:] [--resources]\n"
+"    For LXD server information."
+msgstr ""
+
+#: lxc/init.go:37
+msgid "lxc init ubuntu:16.04 u1"
+msgstr ""
+
+#: lxc/launch.go:24
+msgid "lxc launch ubuntu:16.04 u1"
+msgstr ""
+
+#: lxc/list.go:103
+msgid ""
+"lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:"
+"MAC\n"
+"  Show containers using the \"NAME\", \"BASE IMAGE\", \"STATE\", \"IPV4\", "
+"\"IPV6\" and \"MAC\" columns.\n"
+"  \"BASE IMAGE\" and \"MAC\" are custom columns generated from container "
+"configuration keys.\n"
 "\n"
-"*Examples*\n"
+"lxc list -c ns,user.comment:comment\n"
+"  List images with their running state and user comment."
+msgstr ""
+
+#: lxc/monitor.go:35
+msgid ""
 "lxc monitor --type=logging\n"
 "    Only show log messages.\n"
 "\n"
 "lxc monitor --pretty --type=logging --loglevel=info\n"
 "    Show a pretty log of messages with info level or higher.\n"
+"\n"
+"lxc monitor --type=lifecycle\n"
+"    Only show lifecycle events."
 msgstr ""
 
-#: lxc/move.go:26
+#: lxc/move.go:33
 msgid ""
-"Usage: lxc move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
-"<snapshot>]] [--container-only] [--target <node>]\n"
-"\n"
-"Move containers within or in between LXD instances.\n"
-"\n"
 "lxc move [<remote>:]<source container> [<remote>:][<destination container>] "
 "[--container-only]\n"
 "    Move a container between two hosts, renaming it if destination name "
@@ -1946,160 +2837,14 @@ msgid ""
 "    Rename a snapshot."
 msgstr ""
 
-#: lxc/network.go:52
-msgid ""
-"Usage: lxc network <subcommand> [options]\n"
-"\n"
-"Manage and attach containers to networks.\n"
-"\n"
-"lxc network list [<remote>:]\n"
-"    List available networks.\n"
-"\n"
-"lxc network list-leases [<remote>:]<network>\n"
-"    List the DHCP leases for the network\n"
-"\n"
-"lxc network show [<remote>:]<network> [--target <node>]\n"
-"    Show details of a network.\n"
-"\n"
-"lxc network create [<remote>:]<network> [key=value...] [--target <node>]\n"
-"    Create a network.\n"
-"\n"
-"lxc network get [<remote>:]<network> <key> [--target <node>]\n"
-"    Get network configuration.\n"
-"\n"
-"lxc network set [<remote>:]<network> <key> <value>\n"
-"    Set network configuration.\n"
-"\n"
-"lxc network unset [<remote>:]<network> <key>\n"
-"    Unset network configuration.\n"
-"\n"
-"lxc network delete [<remote>:]<network>\n"
-"    Delete a network.\n"
-"\n"
-"lxc network edit [<remote>:]<network>\n"
-"    Edit network, either by launching external editor or reading STDIN.\n"
-"\n"
-"lxc network rename [<remote>:]<network> <new-name>\n"
-"    Rename a network.\n"
-"\n"
-"lxc network attach [<remote>:]<network> <container> [device name] [interface "
-"name]\n"
-"    Attach a network interface connecting the network to a specified "
-"container.\n"
-"\n"
-"lxc network attach-profile [<remote>:]<network> <profile> [device name] "
-"[interface name]\n"
-"    Attach a network interface connecting the network to a specified "
-"profile.\n"
-"\n"
-"lxc network detach [<remote>:]<network> <container> [device name]\n"
-"    Remove a network interface connecting the network to a specified "
-"container.\n"
-"\n"
-"lxc network detach-profile [<remote>:]<network> <container> [device name]\n"
-"    Remove a network interface connecting the network to a specified "
-"profile.\n"
-"\n"
-"*Examples*\n"
-"cat network.yaml | lxc network edit <network>\n"
-"    Update a network using the content of network.yaml"
-msgstr ""
-
-#: lxc/operation.go:25
+#: lxc/operation.go:176
 msgid ""
-"Usage: lxc operation <subcommand> [options]\n"
-"\n"
-"List, show and delete background operations.\n"
-"\n"
-"lxc operation list [<remote>:]\n"
-"    List background operations.\n"
-"\n"
-"lxc operation show [<remote>:]<operation>\n"
-"    Show details on a background operation.\n"
-"\n"
-"lxc operation delete [<remote>:]<operation>\n"
-"    Delete a background operation (will attempt to cancel).\n"
-"\n"
-"*Examples*\n"
 "lxc operation show 344a79e4-d88a-45bf-9c39-c72c26f6ab8a\n"
 "    Show details on that operation UUID"
 msgstr ""
 
-#: lxc/profile.go:51
+#: lxc/profile.go:165
 msgid ""
-"Usage: lxc profile <subcommand> [options]\n"
-"\n"
-"Manage container configuration profiles.\n"
-"\n"
-"*Profile configuration*\n"
-"lxc profile list [<remote>:]\n"
-"    List available profiles.\n"
-"\n"
-"lxc profile show [<remote>:]<profile>\n"
-"    Show details of a profile.\n"
-"\n"
-"lxc profile create [<remote>:]<profile>\n"
-"    Create a profile.\n"
-"\n"
-"lxc profile copy [<remote>:]<profile> [<remote>:]<profile>\n"
-"    Copy the profile.\n"
-"\n"
-"lxc profile get [<remote>:]<profile> <key>\n"
-"    Get profile configuration.\n"
-"\n"
-"lxc profile set [<remote>:]<profile> <key> <value>\n"
-"    Set profile configuration.\n"
-"\n"
-"lxc profile unset [<remote>:]<profile> <key>\n"
-"    Unset profile configuration.\n"
-"\n"
-"lxc profile delete [<remote>:]<profile>\n"
-"    Delete a profile.\n"
-"\n"
-"lxc profile edit [<remote>:]<profile>\n"
-"    Edit profile, either by launching external editor or reading STDIN.\n"
-"\n"
-"lxc profile rename [<remote>:]<profile> <new-name>\n"
-"    Rename a profile.\n"
-"\n"
-"*Profile assignment*\n"
-"lxc profile assign [<remote>:]<container> <profiles>\n"
-"    Replace the current set of profiles for the container by the one "
-"provided.\n"
-"\n"
-"lxc profile add [<remote>:]<container> <profile>\n"
-"    Add a profile to a container\n"
-"\n"
-"lxc profile remove [<remote>:]<container> <profile>\n"
-"    Remove the profile from a container\n"
-"\n"
-"*Device management*\n"
-"lxc profile device list [<remote>:]<profile>\n"
-"    List devices in the given profile.\n"
-"\n"
-"lxc profile device show [<remote>:]<profile>\n"
-"    Show full device details in the given profile.\n"
-"\n"
-"lxc profile device remove [<remote>:]<profile> <name>\n"
-"    Remove a device from a profile.\n"
-"\n"
-"lxc profile device get [<remote>:]<profile> <name> <key>\n"
-"    Get a device property.\n"
-"\n"
-"lxc profile device set [<remote>:]<profile> <name> <key> <value>\n"
-"    Set a device property.\n"
-"\n"
-"lxc profile device unset [<remote>:]<profile> <name> <key>\n"
-"    Unset a device property.\n"
-"\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.\n"
-"\n"
-"*Examples*\n"
-"cat profile.yaml | lxc profile edit <profile>\n"
-"    Update a profile using the content of profile.yaml\n"
-"\n"
 "lxc profile assign foo default,bar\n"
 "    Set the profiles for \"foo\" to \"default\" and \"bar\".\n"
 "\n"
@@ -2110,72 +2855,26 @@ msgid ""
 "    Remove all profile from \"foo\""
 msgstr ""
 
-#: lxc/publish.go:28
+#: lxc/profile.go:398
 msgid ""
-"Usage: lxc publish [<remote>:]<container>[/<snapshot>] [<remote>:] [--"
-"alias=ALIAS...] [prop-key=prop-value...]\n"
-"\n"
-"Publish containers as images."
+"lxc profile edit <profile> < profile.yaml\n"
+"    Update a profile using the content of profile.yaml"
 msgstr ""
 
-#: lxc/query.go:25
+#: lxc/query.go:29
 msgid ""
-"Usage: lxc query [-X <action>] [-d <data>] [--wait] [--raw] [<remote>:]<API "
-"path>\n"
-"\n"
-"Send a raw query to LXD.\n"
-"\n"
-"*Examples*\n"
 "lxc query -X DELETE --wait /1.0/containers/c1\n"
 "    Delete local container \"c1\"."
 msgstr ""
 
-#: lxc/remote.go:40
-msgid ""
-"Usage: lxc remote <subcommand> [options]\n"
-"\n"
-"Manage the list of remote LXD servers.\n"
-"\n"
-"lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--"
-"password=PASSWORD] [--public] [--protocol=PROTOCOL] [--auth-type=AUTH_TYPE]\n"
-"    Add the remote <remote> at <url>.\n"
-"\n"
-"lxc remote remove <remote>\n"
-"    Remove the remote <remote>.\n"
-"\n"
-"lxc remote list\n"
-"    List all remotes.\n"
-"\n"
-"lxc remote rename <old name> <new name>\n"
-"    Rename remote <old name> to <new name>.\n"
-"\n"
-"lxc remote set-url <remote> <url>\n"
-"    Update <remote>'s url to <url>.\n"
-"\n"
-"lxc remote set-default <remote>\n"
-"    Set the default remote.\n"
-"\n"
-"lxc remote get-default\n"
-"    Print the default remote."
-msgstr ""
-
-#: lxc/rename.go:18
+#: lxc/snapshot.go:26
 msgid ""
-"Usage: lxc rename [<remote>:]<container>[/<snapshot>] [<container>[/"
-"<snapshot>]]\n"
-"\n"
-"Rename a container or snapshot."
+"lxc snapshot u1 snap0\n"
+"    Create a snapshot of \"u1\" called \"snap0\"."
 msgstr ""
 
-#: lxc/restore.go:22
+#: lxc/restore.go:28
 msgid ""
-"Usage: lxc restore [<remote>:]<container> <snapshot> [--stateful]\n"
-"\n"
-"Restore containers from snapshots.\n"
-"\n"
-"If --stateful is passed, then the running state will be restored too.\n"
-"\n"
-"*Examples*\n"
 "lxc snapshot u1 snap0\n"
 "    Create the snapshot.\n"
 "\n"
@@ -2183,121 +2882,20 @@ msgid ""
 "    Restore the snapshot."
 msgstr ""
 
-#: lxc/snapshot.go:19
+#: lxc/storage.go:210
 msgid ""
-"Usage: lxc snapshot [<remote>:]<container> <snapshot name> [--stateful]\n"
-"\n"
-"Create container snapshots.\n"
-"\n"
-"When --stateful is used, LXD attempts to checkpoint the container's\n"
-"running state, including process memory state, TCP connections, ...\n"
-"\n"
-"*Examples*\n"
-"lxc snapshot u1 snap0\n"
-"    Create a snapshot of \"u1\" called \"snap0\"."
+"lxc storage edit [<remote>:]<pool> < pool.yaml\n"
+"    Update a storage pool using the content of pool.yaml."
 msgstr ""
 
-#: lxc/storage.go:67
+#: lxc/storage_volume.go:726
+msgid ""
+"lxc storage volume edit [<remote>:]<pool> <volume> < volume.yaml\n"
+"    Update a storage volume using the content of pool.yaml."
+msgstr ""
+
+#: lxc/storage_volume.go:1168
 msgid ""
-"Usage: lxc storage <subcommand> [options]\n"
-"\n"
-"Manage storage pools and volumes.\n"
-"\n"
-"*Storage pools*\n"
-"lxc storage list [<remote>:]\n"
-"    List available storage pools.\n"
-"\n"
-"lxc storage show [<remote>:]<pool> [--resources] [--target <node>]\n"
-"    Show details of a storage pool.\n"
-"\n"
-"lxc storage info [<remote>:]<pool> [--bytes]\n"
-"    Show information of a storage pool in yaml format.\n"
-"\n"
-"lxc storage create [<remote>:]<pool> <driver> [key=value]... [--target "
-"<node>]\n"
-"    Create a storage pool.\n"
-"\n"
-"lxc storage get [<remote>:]<pool> <key>\n"
-"    Get storage pool configuration.\n"
-"\n"
-"lxc storage set [<remote>:]<pool> <key> <value>\n"
-"    Set storage pool configuration.\n"
-"\n"
-"lxc storage unset [<remote>:]<pool> <key>\n"
-"    Unset storage pool configuration.\n"
-"\n"
-"lxc storage delete [<remote>:]<pool>\n"
-"    Delete a storage pool.\n"
-"\n"
-"lxc storage edit [<remote>:]<pool>\n"
-"    Edit storage pool, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"*Storage volumes*\n"
-"lxc storage volume list [<remote>:]<pool>\n"
-"    List available storage volumes on a storage pool.\n"
-"\n"
-"lxc storage volume show [<remote>:]<pool> <volume> [--target <node>]\n"
-"   Show details of a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume create [<remote>:]<pool> <volume> [key=value]... [--"
-"target <node>]\n"
-"    Create a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume rename [<remote>:]<pool> <old name> <new name> [--target "
-"<node>]\n"
-"    Rename a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume get [<remote>:]<pool> <volume> <key> [--target <node>]\n"
-"    Get storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume set [<remote>:]<pool> <volume> <key> <value> [--target "
-"<node>]\n"
-"    Set storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume unset [<remote>:]<pool> <volume> <key> [--target <node>]\n"
-"    Unset storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume delete [<remote>:]<pool> <volume> [--target <node>]\n"
-"    Delete a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume edit [<remote>:]<pool> <volume> [--target <node>]\n"
-"    Edit storage volume, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"lxc storage volume attach [<remote>:]<pool> <volume> <container> [device "
-"name] <path>\n"
-"    Attach a storage volume to the specified container.\n"
-"\n"
-"lxc storage volume attach-profile [<remote:>]<pool> <volume> <profile> "
-"[device name] <path>\n"
-"    Attach a storage volume to the specified profile.\n"
-"\n"
-"lxc storage volume detach [<remote>:]<pool> <volume> <container> [device "
-"name]\n"
-"    Detach a storage volume from the specified container.\n"
-"\n"
-"lxc storage volume detach-profile [<remote:>]<pool> <volume> <profile> "
-"[device name]\n"
-"\tDetach a storage volume from the specified profile.\n"
-"\n"
-"lxc storage volume copy <pool>/<volume> <pool>/<volume> [--config|-c "
-"<key=value>...]\n"
-"    Copy an existing volume to a new volume at the specified pool.\n"
-"\n"
-"lxc storage volume move [<pool>/]<volume> [<pool>/]<volume>\n"
-"    Move an existing volume to the specified pool.\n"
-"\n"
-"Unless specified through a prefix, all volume operations affect \"custom"
-"\" (user created) volumes.\n"
-"\n"
-"*Examples*\n"
-"cat pool.yaml | lxc storage edit [<remote>:]<pool>\n"
-"    Update a storage pool using the content of pool.yaml.\n"
-"\n"
-"cat pool.yaml | lxc storage volume edit [<remote>:]<pool> <volume>\n"
-"    Update a storage volume using the content of pool.yaml.\n"
-"\n"
 "lxc storage volume show default data\n"
 "    Will show the properties of a custom volume called \"data\" in the "
 "\"default\" pool.\n"
@@ -2307,191 +2905,303 @@ msgid ""
 "\" in the \"default\" pool."
 msgstr ""
 
-#: lxc/version.go:18
+#: lxc/config_metadata.go:27
+msgid "metadata"
+msgstr ""
+
+#: lxc/monitor.go:29
+msgid "monitor [<remote>:]"
+msgstr ""
+
+#: lxc/storage_volume.go:991
+msgid "move [<pool>/]<volume> [<pool>/]<volume>"
+msgstr ""
+
+#: lxc/move.go:28
 msgid ""
-"Usage: lxc version\n"
-"\n"
-"Print the version number of this client tool."
+"move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
+"<snapshot>]]"
 msgstr ""
 
-#: lxc/delete.go:46
-msgid "User aborted delete operation."
+#: lxc/storage.go:429
+msgid "name"
 msgstr ""
 
-#: lxc/utils/cancel.go:40
+#: lxc/network.go:30
+msgid "network"
+msgstr ""
+
+#: lxc/image.go:809 lxc/image.go:814 lxc/image.go:977
+msgid "no"
+msgstr ""
+
+#: lxc/remote.go:253
+msgid "ok (y/n)?"
+msgstr ""
+
+#: lxc/operation.go:23
+msgid "operation"
+msgstr ""
+
+#: lxc/config_device.go:316
+msgid "override [<remote>:]<container> <device> [key=value...]"
+msgstr ""
+
+#: lxc/action.go:47
+msgid "pause [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/config.go:52
+msgid "please use `lxc profile`"
+msgstr ""
+
+#: lxc/profile.go:28
+msgid "profile"
+msgstr ""
+
+#: lxc/publish.go:32
 msgid ""
-"User signaled us three times, exiting. The remote operation will keep "
-"running."
+"publish [<remote>:]<container>[/<snapshot>] [<remote>:] [flags] [prop-"
+"key=prop-value...]"
 msgstr ""
 
-#: lxc/query.go:36
-msgid "Wait for the operation to complete"
+#: lxc/file.go:183
+msgid ""
+"pull [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...] "
+"<target path>"
 msgstr ""
 
-#: lxc/restore.go:38
+#: lxc/file.go:322
 msgid ""
-"Whether or not to restore the container's running state from snapshot (if "
-"available)"
+"push <source path> [<remote>:]<container>/<path> [[<remote>:]<container>/"
+"<path>...]"
 msgstr ""
 
-#: lxc/snapshot.go:33
-msgid "Whether or not to snapshot the container's running state"
+#: lxc/query.go:25
+msgid "query [<remote>:]<API path>"
 msgstr ""
 
-#: lxc/network.go:560 lxc/operation.go:141 lxc/remote.go:382 lxc/remote.go:387
-msgid "YES"
+#: lxc/image.go:1210
+msgid "refresh [<remote>:]<image> [[<remote>:]<image>...]"
 msgstr ""
 
-#: lxc/exec.go:132
-msgid "You can't pass -t and -T at the same time"
+#: lxc/remote.go:32
+msgid "remote"
 msgstr ""
 
-#: lxc/exec.go:136
-msgid "You can't pass -t or -T at the same time as --mode"
+#: lxc/alias.go:195
+msgid "remove <alias>"
 msgstr ""
 
-#: lxc/copy.go:76
-msgid "You must specify a destination container name when using --target"
+#: lxc/remote.go:546
+msgid "remove <remote>"
 msgstr ""
 
-#: lxc/copy.go:71
-msgid "You must specify a source container name"
+#: lxc/config_trust.go:194
+msgid "remove [<remote>:] <hostname|fingerprint>"
 msgstr ""
 
-#: lxc/copy.go:66 lxc/move.go:71
-msgid "You must use the same source and destination remote when using --target"
+#: lxc/profile.go:630
+msgid "remove [<remote>:]<container> <profile>"
 msgstr ""
 
-#: lxc/main.go:72
-msgid "`lxc config profile` is deprecated, please use `lxc profile`"
+#: lxc/config_device.go:402
+msgid "remove [<remote>:]<container|profile> <name>..."
 msgstr ""
 
-#: lxc/alias.go:56 lxc/alias.go:102
-#, c-format
-msgid "alias %s already exists"
+#: lxc/cluster.go:235
+msgid "remove [<remote>:]<member>"
 msgstr ""
 
-#: lxc/alias.go:68 lxc/alias.go:97
-#, c-format
-msgid "alias %s doesn't exist"
+#: lxc/alias.go:144
+msgid "rename <old alias> <new alias>"
 msgstr ""
 
-#: lxc/remote.go:370
-msgid "can't remove the default remote"
+#: lxc/remote.go:484
+msgid "rename <remote> <new-name>"
 msgstr ""
 
-#: lxc/file.go:296
-msgid "can't supply uid/gid/mode in recursive mode"
+#: lxc/image_alias.go:247
+msgid "rename [<remote>:]<alias> <new-name>"
 msgstr ""
 
-#: lxc/remote.go:399
-msgid "default"
+#: lxc/rename.go:18
+msgid "rename [<remote>:]<container>[/<snapshot>] <container>[/<snapshot>]"
 msgstr ""
 
-#: lxc/storage.go:856
-msgid "description"
+#: lxc/cluster.go:189
+msgid "rename [<remote>:]<member> <new-name>"
 msgstr ""
 
-#: lxc/init.go:315
-msgid "didn't get any affected image, container or snapshot from server"
+#: lxc/network.go:870
+msgid "rename [<remote>:]<network> <new-name>"
 msgstr ""
 
-#: lxc/image.go:594
-msgid "disabled"
+#: lxc/storage_volume.go:1023
+msgid "rename [<remote>:]<pool> <old name> <new name>"
 msgstr ""
 
-#: lxc/storage.go:855
-msgid "driver"
+#: lxc/profile.go:702
+msgid "rename [<remote>:]<profile> <new-name>"
 msgstr ""
 
-#: lxc/image.go:596
-msgid "enabled"
+#: lxc/action.go:67
+msgid "restart [<remote>:]<container> [[<remote>:]<container>...]"
 msgstr ""
 
-#: lxc/action.go:155 lxc/main.go:33 lxc/main.go:191
-#, c-format
-msgid "error: %v"
+#: lxc/restore.go:22
+msgid "restore [<remote>:]<container> <snapshot>"
 msgstr ""
 
-#: lxc/help.go:37 lxc/main.go:133
-#, c-format
-msgid "error: unknown command: %s"
+#: lxc/config_device.go:491
+msgid "set [<remote>:]<container|profile> <device> <key> <value>"
 msgstr ""
 
-#: lxc/storage.go:853
-msgid "info"
+#: lxc/network.go:918
+msgid "set [<remote>:]<network> <key> <value>"
 msgstr ""
 
-#: lxc/storage.go:854
-msgid "name"
+#: lxc/storage.go:571
+msgid "set [<remote>:]<pool> <key> <value>"
 msgstr ""
 
-#: lxc/image.go:210 lxc/image.go:584 lxc/image.go:589
-msgid "no"
+#: lxc/storage_volume.go:1087
+msgid "set [<remote>:]<pool> <volume> <key> <value>"
 msgstr ""
 
-#: lxc/remote.go:204
-msgid "ok (y/n)?"
+#: lxc/profile.go:751
+msgid "set [<remote>:]<profile> <key> <value>"
 msgstr ""
 
-#: lxc/main.go:368 lxc/main.go:372
-#, c-format
-msgid "processing aliases failed %s\n"
+#: lxc/config.go:353
+msgid "set [<remote>:][container] <key> <value>"
 msgstr ""
 
-#: lxc/file.go:588
-msgid "recursive edit doesn't make sense :("
+#: lxc/remote.go:596
+msgid "set-default <remote>"
 msgstr ""
 
-#: lxc/remote.go:436
-#, c-format
-msgid "remote %s already exists"
+#: lxc/remote.go:634
+msgid "set-url <remote> <URL>"
 msgstr ""
 
-#: lxc/remote.go:362 lxc/remote.go:428 lxc/remote.go:463 lxc/remote.go:479
-#, c-format
-msgid "remote %s doesn't exist"
+#: lxc/config_template.go:296
+msgid "show [<remote>:]<container> <template>"
 msgstr ""
 
-#: lxc/remote.go:345
-#, c-format
-msgid "remote %s exists as <%s>"
+#: lxc/config_device.go:580
+msgid "show [<remote>:]<container|profile>"
 msgstr ""
 
-#: lxc/remote.go:366 lxc/remote.go:432 lxc/remote.go:467
-#, c-format
-msgid "remote %s is static and cannot be modified"
+#: lxc/image.go:1283
+msgid "show [<remote>:]<image>"
+msgstr ""
+
+#: lxc/cluster.go:140
+msgid "show [<remote>:]<member>"
+msgstr ""
+
+#: lxc/network.go:987
+msgid "show [<remote>:]<network>"
+msgstr ""
+
+#: lxc/operation.go:172
+msgid "show [<remote>:]<operation>"
+msgstr ""
+
+#: lxc/storage.go:643
+msgid "show [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:1164
+msgid "show [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:810
+msgid "show [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/config.go:450 lxc/config_metadata.go:174
+msgid "show [<remote>:][container]"
+msgstr ""
+
+#: lxc/snapshot.go:19
+msgid "snapshot [<remote>:]<container> <snapshot name>"
 msgstr ""
 
-#: lxc/storage.go:858
+#: lxc/storage.go:433
 msgid "space used"
 msgstr ""
 
-#: lxc/info.go:251
+#: lxc/action.go:28
+msgid "start [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/info.go:255
 msgid "stateful"
 msgstr ""
 
-#: lxc/info.go:253
+#: lxc/info.go:257
 msgid "stateless"
 msgstr ""
 
-#: lxc/info.go:247
+#: lxc/action.go:89
+msgid "stop [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/storage.go:31
+msgid "storage"
+msgstr ""
+
+#: lxc/info.go:251
 #, c-format
 msgid "taken at %s"
 msgstr ""
 
-#: lxc/storage.go:857
+#: lxc/config_template.go:28
+msgid "template"
+msgstr ""
+
+#: lxc/storage.go:432
 msgid "total space"
 msgstr ""
 
-#: lxc/storage.go:852
+#: lxc/config_trust.go:28
+msgid "trust"
+msgstr ""
+
+#: lxc/config_device.go:648
+msgid "unset [<remote>:]<container|profile> <device> <key>"
+msgstr ""
+
+#: lxc/network.go:1049
+msgid "unset [<remote>:]<network> <key>"
+msgstr ""
+
+#: lxc/storage.go:727
+msgid "unset [<remote>:]<pool> <key>"
+msgstr ""
+
+#: lxc/storage_volume.go:1239
+msgid "unset [<remote>:]<pool> <volume> <key>"
+msgstr ""
+
+#: lxc/profile.go:864
+msgid "unset [<remote>:]<profile> <key>"
+msgstr ""
+
+#: lxc/config.go:558
+msgid "unset [<remote>:][container] <key>"
+msgstr ""
+
+#: lxc/storage.go:427
 msgid "used by"
 msgstr ""
 
-#: lxc/main.go:299
-msgid "wrong number of subcommand arguments"
+#: lxc/storage_volume.go:32
+msgid "volume"
 msgstr ""
 
-#: lxc/delete.go:45 lxc/image.go:208 lxc/image.go:586 lxc/image.go:591
+#: lxc/delete.go:46 lxc/image.go:811 lxc/image.go:816 lxc/image.go:975
 msgid "yes"
 msgstr ""
diff --git a/po/pa.po b/po/pa.po
index b2b155dfc..2da978260 100644
--- a/po/pa.po
+++ b/po/pa.po
@@ -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: 2018-02-27 22:14-0500\n"
+"POT-Creation-Date: 2018-03-29 01:45-0400\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
@@ -16,7 +16,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: lxc/storage.go:36
+#: lxc/storage.go:220
 msgid ""
 "### This is a yaml representation of a storage pool.\n"
 "### Any line starting with a '#' will be ignored.\n"
@@ -33,7 +33,7 @@ msgid ""
 "###   zfs.pool_name: default"
 msgstr ""
 
-#: lxc/storage.go:53
+#: lxc/storage_volume.go:737
 msgid ""
 "### This is a yaml representation of a storage volume.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -47,7 +47,7 @@ msgid ""
 "###   size: \"61203283968\""
 msgstr ""
 
-#: lxc/config.go:40
+#: lxc/config.go:100
 msgid ""
 "### This is a yaml representation of the configuration.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -68,7 +68,7 @@ msgid ""
 "### Note that the name is shown but cannot be changed"
 msgstr ""
 
-#: lxc/config.go:61
+#: lxc/config_metadata.go:63
 msgid ""
 "### This is a yaml representation of the container metadata.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -92,7 +92,7 @@ msgid ""
 "###     properties: {}"
 msgstr ""
 
-#: lxc/image.go:63
+#: lxc/image.go:327
 msgid ""
 "### This is a yaml representation of the image properties.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -102,7 +102,7 @@ msgid ""
 "###  description: My custom image"
 msgstr ""
 
-#: lxc/network.go:32
+#: lxc/network.go:546
 msgid ""
 "### This is a yaml representation of the network.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -122,7 +122,7 @@ msgid ""
 "### Note that only the configuration can be changed."
 msgstr ""
 
-#: lxc/profile.go:30
+#: lxc/profile.go:408
 msgid ""
 "### This is a yaml representation of the profile.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -143,12 +143,12 @@ msgid ""
 "### Note that the name is shown but cannot be changed"
 msgstr ""
 
-#: lxc/image.go:187
+#: lxc/image.go:954
 #, c-format
 msgid "%s (%d more)"
 msgstr ""
 
-#: lxc/file.go:205
+#: lxc/file.go:677
 #, c-format
 msgid "%s is not a directory"
 msgstr ""
@@ -158,1782 +158,2673 @@ msgstr ""
 msgid "%v (interrupt two more times to force)"
 msgstr ""
 
-#: lxc/file.go:142
+#: lxc/file.go:614
 #, c-format
 msgid "'%s' isn't a supported file type."
 msgstr ""
 
-#: lxc/profile.go:337
+#: lxc/profile.go:222
 msgid "(none)"
 msgstr ""
 
-#: lxc/alias.go:84 lxc/image.go:231 lxc/image.go:1136
+#: lxc/alias.go:127 lxc/image.go:921 lxc/image_alias.go:228
 msgid "ALIAS"
 msgstr ""
 
-#: lxc/image.go:232
+#: lxc/image.go:922
 msgid "ALIASES"
 msgstr ""
 
-#: lxc/image.go:236
+#: lxc/image.go:926
 msgid "ARCH"
 msgstr ""
 
-#: lxc/list.go:467
+#: lxc/list.go:464
 msgid "ARCHITECTURE"
 msgstr ""
 
-#: lxc/remote.go:412
+#: lxc/remote.go:466
 msgid "AUTH TYPE"
 msgstr ""
 
-#: lxc/remote.go:68
+#: lxc/remote.go:88
 msgid "Accept certificate"
 msgstr ""
 
-#: lxc/query.go:38
+#: lxc/query.go:37
 msgid "Action (defaults to GET)"
 msgstr ""
 
-#: lxc/remote.go:276
+#: lxc/config_device.go:75 lxc/config_device.go:76
+msgid "Add devices to containers or profiles"
+msgstr ""
+
+#: lxc/alias.go:54 lxc/alias.go:55
+msgid "Add new aliases"
+msgstr ""
+
+#: lxc/remote.go:83 lxc/remote.go:84
+msgid "Add new remote servers"
+msgstr ""
+
+#: lxc/config_trust.go:58 lxc/config_trust.go:59
+msgid "Add new trusted clients"
+msgstr ""
+
+#: lxc/profile.go:101 lxc/profile.go:102
+msgid "Add profiles to containers"
+msgstr ""
+
+#: lxc/remote.go:325
 #, c-format
 msgid "Admin password for %s: "
 msgstr ""
 
-#: lxc/image.go:623
+#: lxc/alias.go:78 lxc/alias.go:176
+#, c-format
+msgid "Alias %s already exists"
+msgstr ""
+
+#: lxc/alias.go:170 lxc/alias.go:221
+#, c-format
+msgid "Alias %s doesn't exist"
+msgstr ""
+
+#: lxc/image_alias.go:83 lxc/image_alias.go:130 lxc/image_alias.go:274
+msgid "Alias name missing"
+msgstr ""
+
+#: lxc/image.go:854
 msgid "Aliases:"
 msgstr ""
 
-#: lxc/image.go:601 lxc/info.go:125
+#: lxc/image.go:826 lxc/info.go:129
 #, c-format
 msgid "Architecture: %s"
 msgstr ""
 
-#: lxc/remote.go:259
+#: lxc/profile.go:162 lxc/profile.go:163
+msgid "Assign sets of profiles to containers"
+msgstr ""
+
+#: lxc/network.go:103
+msgid "Attach network interfaces to containers"
+msgstr ""
+
+#: lxc/network.go:176 lxc/network.go:177
+msgid "Attach network interfaces to profiles"
+msgstr ""
+
+#: lxc/network.go:104
+msgid "Attach new network interfaces to containers"
+msgstr ""
+
+#: lxc/storage_volume.go:121 lxc/storage_volume.go:122
+msgid "Attach new storage volumes to containers"
+msgstr ""
+
+#: lxc/storage_volume.go:200 lxc/storage_volume.go:201
+msgid "Attach new storage volumes to profiles"
+msgstr ""
+
+#: lxc/console.go:31
+msgid "Attach to container consoles"
+msgstr ""
+
+#: lxc/console.go:32
+msgid ""
+"Attach to container consoles\n"
+"\n"
+"This command allows you to interact with the boot console of a container\n"
+"as well as retrieve past log entries from it."
+msgstr ""
+
+#: lxc/remote.go:308
 #, c-format
 msgid "Authentication type '%s' not supported by server"
 msgstr ""
 
-#: lxc/image.go:632
+#: lxc/image.go:864
 #, c-format
 msgid "Auto update: %s"
 msgstr ""
 
-#: lxc/image.go:707
+#: lxc/network.go:283
+#, c-format
+msgid "Bad key/value pair: %s"
+msgstr ""
+
+#: lxc/copy.go:110 lxc/init.go:118 lxc/publish.go:175 lxc/storage.go:123
+#: lxc/storage_volume.go:468
+#, c-format
+msgid "Bad key=value pair: %s"
+msgstr ""
+
+#: lxc/image.go:677
 #, c-format
 msgid "Bad property: %s"
 msgstr ""
 
-#: lxc/action.go:133
+#: lxc/action.go:212
 msgid "Both --all and container name given"
 msgstr ""
 
-#: lxc/info.go:218
+#: lxc/info.go:222
 msgid "Bytes received"
 msgstr ""
 
-#: lxc/info.go:219
+#: lxc/info.go:223
 msgid "Bytes sent"
 msgstr ""
 
-#: lxc/operation.go:156
+#: lxc/operation.go:155
 msgid "CANCELABLE"
 msgstr ""
 
-#: lxc/config.go:403
+#: lxc/config_trust.go:175
 msgid "COMMON NAME"
 msgstr ""
 
-#: lxc/info.go:182
+#: lxc/info.go:186
 msgid "CPU usage (in seconds)"
 msgstr ""
 
-#: lxc/info.go:186
+#: lxc/info.go:190
 msgid "CPU usage:"
 msgstr ""
 
-#: lxc/operation.go:157
+#: lxc/operation.go:156
 msgid "CREATED"
 msgstr ""
 
-#: lxc/list.go:468
+#: lxc/list.go:465
 msgid "CREATED AT"
 msgstr ""
 
-#: lxc/image.go:631
+#: lxc/image.go:863
 #, c-format
 msgid "Cached: %s"
 msgstr ""
 
-#: lxc/file.go:501
+#: lxc/image.go:175
+msgid "Can't provide a name for the target image"
+msgstr ""
+
+#: lxc/file.go:261
 msgid "Can't pull a directory without --recursive"
 msgstr ""
 
-#: lxc/config.go:210 lxc/network.go:619
+#: lxc/config.go:400 lxc/network.go:969
 #, c-format
 msgid "Can't read from stdin: %s"
 msgstr ""
 
-#: lxc/rename.go:41
+#: lxc/remote.go:577
+msgid "Can't remove the default remote"
+msgstr ""
+
+#: lxc/list.go:481
+msgid "Can't specify --fast with --columns"
+msgstr ""
+
+#: lxc/rename.go:48
 msgid "Can't specify a different remote for rename."
 msgstr ""
 
-#: lxc/config.go:223
-#, c-format
-msgid "Can't unset key '%s', it's not currently set"
+#: lxc/list.go:493
+msgid "Can't specify column L when not clustered"
 msgstr ""
 
-#: lxc/config.go:265 lxc/config.go:291
-#, c-format
-msgid "Can't unset key '%s', it's not currently set."
+#: lxc/file.go:399
+msgid "Can't supply uid/gid/mode in recursive mode"
 msgstr ""
 
-#: lxc/profile.go:546 lxc/storage.go:696
-msgid "Cannot provide container name to list"
+#: lxc/config.go:413
+#, c-format
+msgid "Can't unset key '%s', it's not currently set"
 msgstr ""
 
-#: lxc/remote.go:203
+#: lxc/remote.go:252
 #, c-format
 msgid "Certificate fingerprint: %s"
 msgstr ""
 
-#: lxc/remote.go:315
+#: lxc/remote.go:364
 msgid "Client certificate stored at server: "
 msgstr ""
 
-#: lxc/image.go:175 lxc/image.go:176 lxc/list.go:134 lxc/list.go:135
+#: lxc/network.go:253 lxc/network.go:663 lxc/network.go:923 lxc/network.go:992
+#: lxc/network.go:1054 lxc/storage.go:92 lxc/storage.go:331 lxc/storage.go:576
+#: lxc/storage.go:649 lxc/storage.go:732 lxc/storage_volume.go:287
+#: lxc/storage_volume.go:429 lxc/storage_volume.go:504
+#: lxc/storage_volume.go:730 lxc/storage_volume.go:856
+#: lxc/storage_volume.go:998 lxc/storage_volume.go:1028
+#: lxc/storage_volume.go:1092 lxc/storage_volume.go:1175
+#: lxc/storage_volume.go:1244
+msgid "Cluster member name"
+msgstr ""
+
+#: lxc/image.go:912 lxc/list.go:112
 msgid "Columns"
 msgstr ""
 
-#: lxc/help.go:53
-msgid "Commands:"
+#: lxc/main.go:44
+msgid "Command line client for LXD"
+msgstr ""
+
+#: lxc/main.go:45
+msgid ""
+"Command line client for LXD\n"
+"\n"
+"All of LXD's features can be driven through the various commands below.\n"
+"For help with any of those, simply call them with --help."
 msgstr ""
 
-#: lxc/copy.go:37 lxc/copy.go:38 lxc/init.go:139 lxc/init.go:140
+#: lxc/copy.go:39 lxc/init.go:42
 msgid "Config key/value to apply to the new container"
 msgstr ""
 
-#: lxc/config.go:821 lxc/config.go:886 lxc/config.go:1396 lxc/image.go:1191
-#: lxc/network.go:445 lxc/profile.go:275 lxc/storage.go:647 lxc/storage.go:1209
+#: lxc/config.go:195 lxc/config.go:259 lxc/config_metadata.go:144
+#: lxc/image.go:405 lxc/network.go:631 lxc/profile.go:490 lxc/storage.go:298
+#: lxc/storage_volume.go:822
 #, c-format
 msgid "Config parsing error: %s"
 msgstr ""
 
-#: lxc/main.go:40
-msgid "Connection refused; is LXD running?"
-msgstr ""
-
-#: lxc/console.go:132
+#: lxc/console.go:141
 msgid "Console log:"
 msgstr ""
 
-#: lxc/publish.go:71
+#: lxc/publish.go:79
 msgid "Container name is mandatory"
 msgstr ""
 
-#: lxc/copy.go:243 lxc/init.go:321
+#: lxc/copy.go:260 lxc/init.go:229
 #, c-format
 msgid "Container name is: %s"
 msgstr ""
 
-#: lxc/publish.go:250
+#: lxc/publish.go:259
 #, c-format
 msgid "Container published with fingerprint: %s"
 msgstr ""
 
-#: lxc/copy.go:45 lxc/move.go:44
+#: lxc/copy.go:44 lxc/move.go:46
 msgid "Copy a stateful container stateless"
 msgstr ""
 
-#: lxc/image.go:178
+#: lxc/image.go:138
 msgid "Copy aliases from source"
 msgstr ""
 
-#: lxc/copy.go:44
+#: lxc/copy.go:34 lxc/copy.go:35
+msgid "Copy containers within or in between LXD instances"
+msgstr ""
+
+#: lxc/image.go:130
+msgid "Copy images between servers"
+msgstr ""
+
+#: lxc/image.go:131
+msgid ""
+"Copy images between servers\n"
+"\n"
+"The auto-update flag instructs the server to keep this image up to date.\n"
+"It requires the source to be an alias and for it to be public."
+msgstr ""
+
+#: lxc/config_device.go:317 lxc/config_device.go:318
+msgid "Copy profile inherited devices and override configuration keys"
+msgstr ""
+
+#: lxc/profile.go:240 lxc/profile.go:241
+msgid "Copy profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:282 lxc/storage_volume.go:283
+msgid "Copy storage volumes"
+msgstr ""
+
+#: lxc/copy.go:43
 msgid "Copy the container without its snapshots"
 msgstr ""
 
-#: lxc/image.go:449
+#: lxc/image.go:217
 #, c-format
 msgid "Copying the image: %s"
 msgstr ""
 
-#: lxc/storage.go:1134
+#: lxc/storage_volume.go:387
 #, c-format
 msgid "Copying the storage volume: %s"
 msgstr ""
 
-#: lxc/remote.go:218
+#: lxc/remote.go:267
 msgid "Could not create server cert dir"
 msgstr ""
 
-#: lxc/file.go:70 lxc/file.go:71
+#: lxc/image_alias.go:58 lxc/image_alias.go:59
+msgid "Create aliases for existing images"
+msgstr ""
+
+#: lxc/launch.go:21 lxc/launch.go:22
+msgid "Create and start containers from images"
+msgstr ""
+
+#: lxc/file.go:191 lxc/file.go:331
 msgid "Create any directories necessary"
 msgstr ""
 
-#: lxc/image.go:606 lxc/info.go:127
+#: lxc/snapshot.go:20
+msgid "Create container snapshots"
+msgstr ""
+
+#: lxc/snapshot.go:21
+msgid ""
+"Create container snapshots\n"
+"\n"
+"When --stateful is used, LXD attempts to checkpoint the container's\n"
+"running state, including process memory state, TCP connections, ..."
+msgstr ""
+
+#: lxc/init.go:34 lxc/init.go:35
+msgid "Create containers from images"
+msgstr ""
+
+#: lxc/config_template.go:66 lxc/config_template.go:67
+msgid "Create new container file templates"
+msgstr ""
+
+#: lxc/storage_volume.go:425 lxc/storage_volume.go:426
+msgid "Create new custom storage volumes"
+msgstr ""
+
+#: lxc/network.go:249 lxc/network.go:250
+msgid "Create new networks"
+msgstr ""
+
+#: lxc/profile.go:296 lxc/profile.go:297
+msgid "Create profiles"
+msgstr ""
+
+#: lxc/storage.go:88 lxc/storage.go:89
+msgid "Create storage pools"
+msgstr ""
+
+#: lxc/image.go:832 lxc/info.go:131
 #, c-format
 msgid "Created: %s"
 msgstr ""
 
-#: lxc/init.go:200
+#: lxc/init.go:98
 #, c-format
 msgid "Creating %s"
 msgstr ""
 
-#: lxc/init.go:198
+#: lxc/init.go:96
 msgid "Creating the container"
 msgstr ""
 
-#: lxc/cluster.go:185
+#: lxc/cluster.go:121
 msgid "DATABASE"
 msgstr ""
 
-#: lxc/image.go:235 lxc/image.go:1138 lxc/list.go:469 lxc/network.go:579
-#: lxc/operation.go:154 lxc/storage.go:732 lxc/storage.go:937
+#: lxc/image.go:925 lxc/image_alias.go:230 lxc/list.go:466 lxc/network.go:784
+#: lxc/operation.go:153 lxc/storage.go:545 lxc/storage_volume.go:967
 msgid "DESCRIPTION"
 msgstr ""
 
-#: lxc/storage.go:733
+#: lxc/storage.go:546
 msgid "DRIVER"
 msgstr ""
 
-#: lxc/publish.go:39
+#: lxc/publish.go:41
 msgid "Define a compression algorithm: for image or none"
 msgstr ""
 
-#: lxc/config.go:977
+#: lxc/operation.go:53 lxc/operation.go:54
+msgid "Delete a background operation (will attempt to cancel)"
+msgstr ""
+
+#: lxc/config_template.go:109 lxc/config_template.go:110
+msgid "Delete container file templates"
+msgstr ""
+
+#: lxc/delete.go:29 lxc/delete.go:30
+msgid "Delete containers and snapshots"
+msgstr ""
+
+#: lxc/file.go:72 lxc/file.go:73
+msgid "Delete files in containers"
+msgstr ""
+
+#: lxc/image_alias.go:105 lxc/image_alias.go:106
+msgid "Delete image aliases"
+msgstr ""
+
+#: lxc/image.go:260 lxc/image.go:261
+msgid "Delete images"
+msgstr ""
+
+#: lxc/network.go:319 lxc/network.go:320
+msgid "Delete networks"
+msgstr ""
+
+#: lxc/profile.go:347 lxc/profile.go:348
+msgid "Delete profiles"
+msgstr ""
+
+#: lxc/storage.go:160 lxc/storage.go:161
+msgid "Delete storage pools"
+msgstr ""
+
+#: lxc/storage_volume.go:500 lxc/storage_volume.go:501
+msgid "Delete storage volumes"
+msgstr ""
+
+#: lxc/action.go:30 lxc/action.go:49 lxc/action.go:69 lxc/action.go:91
+#: lxc/alias.go:23 lxc/alias.go:55 lxc/alias.go:99 lxc/alias.go:147
+#: lxc/alias.go:198 lxc/cluster.go:26 lxc/cluster.go:59 lxc/cluster.go:142
+#: lxc/cluster.go:192 lxc/cluster.go:238 lxc/config.go:29 lxc/config.go:88
+#: lxc/config.go:289 lxc/config.go:355 lxc/config.go:452 lxc/config.go:560
+#: lxc/config_device.go:24 lxc/config_device.go:76 lxc/config_device.go:179
+#: lxc/config_device.go:252 lxc/config_device.go:318 lxc/config_device.go:405
+#: lxc/config_device.go:493 lxc/config_device.go:582 lxc/config_device.go:650
+#: lxc/config_metadata.go:29 lxc/config_metadata.go:54
+#: lxc/config_metadata.go:176 lxc/config_template.go:30
+#: lxc/config_template.go:67 lxc/config_template.go:110
+#: lxc/config_template.go:152 lxc/config_template.go:236
+#: lxc/config_template.go:298 lxc/config_trust.go:30 lxc/config_trust.go:59
+#: lxc/config_trust.go:115 lxc/config_trust.go:197 lxc/console.go:32
+#: lxc/copy.go:35 lxc/delete.go:30 lxc/exec.go:39 lxc/file.go:40 lxc/file.go:73
+#: lxc/file.go:122 lxc/file.go:185 lxc/file.go:324 lxc/image.go:42
+#: lxc/image.go:131 lxc/image.go:261 lxc/image.go:312 lxc/image.go:435
+#: lxc/image.go:571 lxc/image.go:776 lxc/image.go:890 lxc/image.go:1212
+#: lxc/image.go:1285 lxc/image_alias.go:26 lxc/image_alias.go:59
+#: lxc/image_alias.go:106 lxc/image_alias.go:149 lxc/image_alias.go:250
+#: lxc/info.go:29 lxc/init.go:35 lxc/launch.go:22 lxc/list.go:48 lxc/main.go:45
+#: lxc/monitor.go:31 lxc/move.go:31 lxc/network.go:32 lxc/network.go:104
+#: lxc/network.go:177 lxc/network.go:250 lxc/network.go:320 lxc/network.go:367
+#: lxc/network.go:452 lxc/network.go:537 lxc/network.go:660 lxc/network.go:719
+#: lxc/network.go:808 lxc/network.go:873 lxc/network.go:920 lxc/network.go:989
+#: lxc/network.go:1051 lxc/operation.go:25 lxc/operation.go:54
+#: lxc/operation.go:98 lxc/operation.go:174 lxc/profile.go:30
+#: lxc/profile.go:102 lxc/profile.go:163 lxc/profile.go:241 lxc/profile.go:297
+#: lxc/profile.go:348 lxc/profile.go:396 lxc/profile.go:520 lxc/profile.go:568
+#: lxc/profile.go:632 lxc/profile.go:705 lxc/profile.go:753 lxc/profile.go:812
+#: lxc/profile.go:866 lxc/publish.go:34 lxc/query.go:27 lxc/remote.go:34
+#: lxc/remote.go:84 lxc/remote.go:380 lxc/remote.go:414 lxc/remote.go:487
+#: lxc/remote.go:549 lxc/remote.go:598 lxc/remote.go:636 lxc/rename.go:20
+#: lxc/restore.go:24 lxc/snapshot.go:21 lxc/storage.go:33 lxc/storage.go:89
+#: lxc/storage.go:161 lxc/storage.go:208 lxc/storage.go:328 lxc/storage.go:383
+#: lxc/storage.go:491 lxc/storage.go:573 lxc/storage.go:645 lxc/storage.go:729
+#: lxc/storage_volume.go:34 lxc/storage_volume.go:122 lxc/storage_volume.go:201
+#: lxc/storage_volume.go:283 lxc/storage_volume.go:426
+#: lxc/storage_volume.go:501 lxc/storage_volume.go:561
+#: lxc/storage_volume.go:643 lxc/storage_volume.go:724
+#: lxc/storage_volume.go:853 lxc/storage_volume.go:918
+#: lxc/storage_volume.go:994 lxc/storage_volume.go:1025
+#: lxc/storage_volume.go:1089 lxc/storage_volume.go:1166
+#: lxc/storage_volume.go:1241
+msgid "Description"
+msgstr ""
+
+#: lxc/network.go:366 lxc/network.go:367
+msgid "Detach network interfaces from containers"
+msgstr ""
+
+#: lxc/network.go:451 lxc/network.go:452
+msgid "Detach network interfaces from profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:560 lxc/storage_volume.go:561
+msgid "Detach storage volumes from containers"
+msgstr ""
+
+#: lxc/storage_volume.go:642 lxc/storage_volume.go:643
+msgid "Detach storage volumes from profiles"
+msgstr ""
+
+#: lxc/config_device.go:163
 #, c-format
 msgid "Device %s added to %s"
 msgstr ""
 
-#: lxc/config.go:1272
+#: lxc/config_device.go:387
 #, c-format
 msgid "Device %s overridden for %s"
 msgstr ""
 
-#: lxc/config.go:1213
+#: lxc/config_device.go:476
 #, c-format
 msgid "Device %s removed from %s"
 msgstr ""
 
-#: lxc/utils.go:192 lxc/utils.go:216
+#: lxc/utils.go:133 lxc/utils.go:157
 #, c-format
 msgid "Device already exists: %s"
 msgstr ""
 
-#: lxc/image.go:1290
+#: lxc/image.go:586
 msgid "Directory import is not available on this platform"
 msgstr ""
 
-#: lxc/exec.go:71
+#: lxc/exec.go:55
 msgid "Disable pseudo-terminal allocation"
 msgstr ""
 
-#: lxc/exec.go:72
+#: lxc/exec.go:56
 msgid "Disable stdin (reads from /dev/null)"
 msgstr ""
 
-#: lxc/info.go:175
+#: lxc/info.go:179
 msgid "Disk usage:"
 msgstr ""
 
-#: lxc/list.go:638
+#: lxc/list.go:635
 msgid "EPHEMERAL"
 msgstr ""
 
-#: lxc/config.go:405
+#: lxc/config_trust.go:177
 msgid "EXPIRY DATE"
 msgstr ""
 
-#: lxc/main.go:52
-msgid "Enable debug mode"
+#: lxc/config_template.go:151 lxc/config_template.go:152
+msgid "Edit container file templates"
 msgstr ""
 
-#: lxc/main.go:51
-msgid "Enable verbose mode"
+#: lxc/config_metadata.go:53 lxc/config_metadata.go:54
+msgid "Edit container metadata files"
 msgstr ""
 
-#: lxc/exec.go:68
-msgid "Environment variable to set (e.g. HOME=/home/foo)"
+#: lxc/config.go:87 lxc/config.go:88
+msgid "Edit container or server configurations as YAML"
+msgstr ""
+
+#: lxc/file.go:121 lxc/file.go:122
+msgid "Edit files in containers"
+msgstr ""
+
+#: lxc/image.go:311 lxc/image.go:312
+msgid "Edit image properties"
+msgstr ""
+
+#: lxc/network.go:536 lxc/network.go:537
+msgid "Edit network configurations as YAML"
+msgstr ""
+
+#: lxc/profile.go:395 lxc/profile.go:396
+msgid "Edit profile configurations as YAML"
+msgstr ""
+
+#: lxc/storage.go:207 lxc/storage.go:208
+msgid "Edit storage pool configurations as YAML"
+msgstr ""
+
+#: lxc/storage_volume.go:723 lxc/storage_volume.go:724
+msgid "Edit storage volume configurations as YAML"
+msgstr ""
+
+#: lxc/list.go:504
+#, c-format
+msgid "Empty column entry (redundant, leading or trailing command) in '%s'"
 msgstr ""
 
-#: lxc/help.go:77
-msgid "Environment:"
+#: lxc/exec.go:52
+msgid "Environment variable to set (e.g. HOME=/home/foo)"
 msgstr ""
 
-#: lxc/copy.go:41 lxc/copy.go:42 lxc/init.go:143 lxc/init.go:144
+#: lxc/copy.go:41 lxc/init.go:44
 msgid "Ephemeral container"
 msgstr ""
 
-#: lxc/config.go:1446
+#: lxc/config_template.go:204
 #, c-format
 msgid "Error updating template file: %s"
 msgstr ""
 
-#: lxc/monitor.go:69
+#: lxc/monitor.go:48
 msgid "Event type to listen for"
 msgstr ""
 
-#: lxc/image.go:610
+#: lxc/exec.go:38
+msgid "Execute commands in containers"
+msgstr ""
+
+#: lxc/exec.go:39
+msgid ""
+"Execute commands in containers\n"
+"\n"
+"The command is executed directly using exec, so there is no shell and\n"
+"shell patterns (variables, file redirects, ...) won't be understood.\n"
+"If you need a shell environment you need to execute the shell\n"
+"executable, passing the shell commands as arguments, for example:\n"
+"\n"
+"  lxc exec <container> -- sh -c \"cd /tmp && pwd\"\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:838
 #, c-format
 msgid "Expires: %s"
 msgstr ""
 
-#: lxc/image.go:612
+#: lxc/image.go:840
 msgid "Expires: never"
 msgstr ""
 
-#: lxc/image.go:922
+#: lxc/image.go:434
+msgid "Export and download images"
+msgstr ""
+
+#: lxc/image.go:435
+msgid ""
+"Export and download images\n"
+"\n"
+"The output target is optional and defaults to the working directory."
+msgstr ""
+
+#: lxc/image.go:494
 #, c-format
 msgid "Exporting the image: %s"
 msgstr ""
 
-#: lxc/config.go:761
+#: lxc/config_template.go:279
 msgid "FILENAME"
 msgstr ""
 
-#: lxc/config.go:402 lxc/image.go:233 lxc/image.go:1137
+#: lxc/config_trust.go:174 lxc/image.go:923 lxc/image_alias.go:229
 msgid "FINGERPRINT"
 msgstr ""
 
-#: lxc/utils.go:261
+#: lxc/utils.go:202
 #, c-format
 msgid "Failed to create alias %s"
 msgstr ""
 
-#: lxc/manpage.go:62
-#, c-format
-msgid "Failed to generate 'lxc.%s.1': %v"
-msgstr ""
-
-#: lxc/manpage.go:55
-#, c-format
-msgid "Failed to generate 'lxc.1': %v"
-msgstr ""
-
-#: lxc/copy.go:238
+#: lxc/copy.go:255
 msgid "Failed to get the new container name"
 msgstr ""
 
-#: lxc/utils.go:251
+#: lxc/utils.go:192
 #, c-format
 msgid "Failed to remove alias %s"
 msgstr ""
 
-#: lxc/file.go:137
+#: lxc/file.go:609
 #, c-format
 msgid "Failed to walk path for %s: %s"
 msgstr ""
 
-#: lxc/list.go:137
+#: lxc/list.go:114
 msgid "Fast mode (same as --columns=nsacPt)"
 msgstr ""
 
-#: lxc/network.go:536 lxc/operation.go:121
+#: lxc/network.go:749 lxc/operation.go:126
 msgid "Filtering isn't supported yet"
 msgstr ""
 
-#: lxc/image.go:599
+#: lxc/image.go:824
 #, c-format
 msgid "Fingerprint: %s"
 msgstr ""
 
-#: lxc/exec.go:70
+#: lxc/exec.go:54
 msgid "Force pseudo-terminal allocation"
 msgstr ""
 
-#: lxc/cluster.go:42
-msgid "Force removing a node, even if degraded"
+#: lxc/cluster.go:242
+msgid "Force removing a member, even if degraded"
 msgstr ""
 
-#: lxc/action.go:47 lxc/action.go:48
+#: lxc/action.go:121
 msgid "Force the container to shutdown"
 msgstr ""
 
-#: lxc/delete.go:34 lxc/delete.go:35
+#: lxc/delete.go:34
 msgid "Force the removal of running containers"
 msgstr ""
 
-#: lxc/main.go:53
+#: lxc/main.go:56
 msgid "Force using the local unix socket"
 msgstr ""
 
-#: lxc/image.go:181 lxc/list.go:136
+#: lxc/image.go:913 lxc/list.go:113
 msgid "Format (csv|json|table|yaml)"
 msgstr ""
 
-#: lxc/remote.go:166
+#: lxc/remote.go:211
 msgid "Generating a client certificate. This may take a minute..."
 msgstr ""
 
-#: lxc/network.go:513
+#: lxc/config_device.go:178 lxc/config_device.go:179
+msgid "Get values for container device configuration keys"
+msgstr ""
+
+#: lxc/config.go:288 lxc/config.go:289
+msgid "Get values for container or server configuration keys"
+msgstr ""
+
+#: lxc/network.go:659 lxc/network.go:660
+msgid "Get values for network configuration keys"
+msgstr ""
+
+#: lxc/profile.go:519 lxc/profile.go:520
+msgid "Get values for profile configuration keys"
+msgstr ""
+
+#: lxc/storage.go:327 lxc/storage.go:328
+msgid "Get values for storage pool configuration keys"
+msgstr ""
+
+#: lxc/storage_volume.go:852 lxc/storage_volume.go:853
+msgid "Get values for storage volume configuration keys"
+msgstr ""
+
+#: lxc/network.go:851
 msgid "HOSTNAME"
 msgstr ""
 
-#: lxc/operation.go:152
+#: lxc/operation.go:151
 msgid "ID"
 msgstr ""
 
-#: lxc/network.go:515
+#: lxc/network.go:853
 msgid "IP ADDRESS"
 msgstr ""
 
-#: lxc/list.go:465
+#: lxc/list.go:462
 msgid "IPV4"
 msgstr ""
 
-#: lxc/list.go:466
+#: lxc/list.go:463
 msgid "IPV6"
 msgstr ""
 
-#: lxc/config.go:404
+#: lxc/config_trust.go:176
 msgid "ISSUE DATE"
 msgstr ""
 
-#: lxc/main.go:171
+#: lxc/main.go:259
 msgid ""
 "If this is your first time running LXD on this machine, you should also run: "
 "lxd init"
 msgstr ""
 
-#: lxc/main.go:54
-msgid "Ignore aliases when determining what command to run"
-msgstr ""
-
-#: lxc/action.go:51
-msgid "Ignore the container state (only for start)"
+#: lxc/action.go:117
+msgid "Ignore the container state"
 msgstr ""
 
-#: lxc/image.go:557
+#: lxc/image.go:1268
 msgid "Image already up to date."
 msgstr ""
 
-#: lxc/image.go:463
+#: lxc/image.go:231
 msgid "Image copied successfully!"
 msgstr ""
 
-#: lxc/image.go:982
+#: lxc/image.go:554
 msgid "Image exported successfully!"
 msgstr ""
 
-#: lxc/image.go:778
+#: lxc/image.go:284 lxc/image.go:1235
+msgid "Image identifier missing"
+msgstr ""
+
+#: lxc/image.go:352
+#, c-format
+msgid "Image identifier missing: %s"
+msgstr ""
+
+#: lxc/image.go:749
 #, c-format
 msgid "Image imported with fingerprint: %s"
 msgstr ""
 
-#: lxc/image.go:555
+#: lxc/image.go:1266
 msgid "Image refreshed successfully!"
 msgstr ""
 
-#: lxc/query.go:39
+#: lxc/image.go:571
+msgid ""
+"Import image into the image store\n"
+"\n"
+"Directory import is only available on Linux and must be performed as root."
+msgstr ""
+
+#: lxc/image.go:570
+msgid "Import images into the image store"
+msgstr ""
+
+#: lxc/query.go:38
 msgid "Input data"
 msgstr ""
 
-#: lxc/init.go:149
+#: lxc/init.go:47
 msgid "Instance type"
 msgstr ""
 
-#: lxc/remote.go:118
+#: lxc/remote.go:163
 #, c-format
 msgid "Invalid URL scheme \"%s\" in \"%s\""
 msgstr ""
 
-#: lxc/config.go:383
+#: lxc/config_trust.go:155
 msgid "Invalid certificate"
 msgstr ""
 
-#: lxc/init.go:32 lxc/init.go:37
-msgid "Invalid configuration key"
+#: lxc/list.go:525
+#, c-format
+msgid "Invalid config key '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:520
+#, c-format
+msgid "Invalid config key column format (too many fields): '%s'"
+msgstr ""
+
+#: lxc/image.go:1196 lxc/list.go:386
+#, c-format
+msgid "Invalid format %q"
+msgstr ""
+
+#: lxc/list.go:543
+#, c-format
+msgid "Invalid max width (must -1, 0 or a positive integer) '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:540
+#, c-format
+msgid "Invalid max width (must be an integer) '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:531
+#, c-format
+msgid ""
+"Invalid name in '%s', empty string is only allowed when defining maxWidth"
+msgstr ""
+
+#: lxc/main.go:341
+msgid "Invalid number of arguments"
 msgstr ""
 
-#: lxc/file.go:560
+#: lxc/file.go:97
 #, c-format
 msgid "Invalid path %s"
 msgstr ""
 
-#: lxc/remote.go:107
+#: lxc/remote.go:152
 #, c-format
 msgid "Invalid protocol: %s"
 msgstr ""
 
-#: lxc/file.go:473
+#: lxc/file.go:243
 #, c-format
 msgid "Invalid source %s"
 msgstr ""
 
-#: lxc/file.go:250
+#: lxc/file.go:352
 #, c-format
 msgid "Invalid target %s"
 msgstr ""
 
-#: lxc/info.go:156
+#: lxc/info.go:160
 msgid "Ips:"
 msgstr ""
 
-#: lxc/image.go:179
+#: lxc/image.go:139
 msgid "Keep the image up to date after initial copy"
 msgstr ""
 
-#: lxc/list.go:470
+#: lxc/list.go:467
 msgid "LAST USED AT"
 msgstr ""
 
-#: lxc/list.go:492
+#: lxc/list.go:489
 msgid "LOCATION"
 msgstr ""
 
-#: lxc/main.go:38
-msgid "LXD socket not found; is LXD installed and running?"
+#: lxc/cluster.go:94
+msgid "LXD server isn't part of a cluster"
 msgstr ""
 
-#: lxc/image.go:615
+#: lxc/image.go:844
 #, c-format
 msgid "Last used: %s"
 msgstr ""
 
-#: lxc/image.go:617
+#: lxc/image.go:846
 msgid "Last used: never"
 msgstr ""
 
-#: lxc/info.go:119
-#, c-format
-msgid "Location: %s"
-msgstr ""
-
-#: lxc/info.go:271
-msgid "Log:"
-msgstr ""
-
-#: lxc/network.go:514
-msgid "MAC ADDRESS"
-msgstr ""
-
-#: lxc/network.go:578
-msgid "MANAGED"
+#: lxc/network.go:807 lxc/network.go:808
+msgid "List DHCP leases"
 msgstr ""
 
-#: lxc/cluster.go:187
-msgid "MESSAGE"
+#: lxc/alias.go:98 lxc/alias.go:99
+msgid "List aliases"
 msgstr ""
 
-#: lxc/image.go:177
-msgid "Make image public"
+#: lxc/cluster.go:58 lxc/cluster.go:59
+msgid "List all the cluster members"
 msgstr ""
 
-#: lxc/publish.go:35
-msgid "Make the image public"
+#: lxc/network.go:718 lxc/network.go:719
+msgid "List available networks"
 msgstr ""
 
-#: lxc/info.go:193
-msgid "Memory (current)"
+#: lxc/storage.go:490 lxc/storage.go:491
+msgid "List available storage pools"
 msgstr ""
 
-#: lxc/info.go:197
-msgid "Memory (peak)"
+#: lxc/operation.go:97 lxc/operation.go:98
+msgid "List background operations"
 msgstr ""
 
-#: lxc/info.go:209
-msgid "Memory usage:"
+#: lxc/config_device.go:251 lxc/config_device.go:252
+msgid "List container devices"
 msgstr ""
 
-#: lxc/monitor.go:70
-msgid "Minimum level for log messages"
+#: lxc/config_template.go:235 lxc/config_template.go:236
+msgid "List container file templates"
 msgstr ""
 
-#: lxc/utils.go:143
-msgid "Missing summary."
+#: lxc/list.go:47
+msgid "List containers"
 msgstr ""
 
-#: lxc/network.go:303 lxc/network.go:356 lxc/storage.go:435 lxc/storage.go:565
-msgid "More than one device matches, specify the device name."
-msgstr ""
+#: lxc/list.go:48
+msgid ""
+"List containers\n"
+"\n"
+"Default column layout: ns46tS\n"
+"Fast column layout: nsacPt\n"
+"\n"
+"== Filters ==\n"
+"A single keyword like \"web\" which will list any container with a name "
+"starting by \"web\".\n"
+"A regular expression on the container name. (e.g. .*web.*01$).\n"
+"A key/value pair referring to a configuration item. For those, the\n"
+"namespace can be abbreviated to the smallest unambiguous identifier.\n"
+"\n"
+"Examples:\n"
+"  - \"user.blah=abc\" will list all containers with the \"blah\" user "
+"property set to \"abc\".\n"
+"  - \"u.blah=abc\" will do the same\n"
+"  - \"security.privileged=true\" will list all privileged containers\n"
+"  - \"s.privileged=true\" will do the same\n"
+"\n"
+"A regular expression matching a configuration item or its value. (e.g. "
+"volatile.eth0.hwaddr=00:16:3e:.*).\n"
+"\n"
+"== Columns ==\n"
+"The -c option takes a comma separated list of arguments that control\n"
+"which container attributes to output when displaying in table or csv\n"
+"format.\n"
+"\n"
+"Column arguments are either pre-defined shorthand chars (see below),\n"
+"or (extended) config keys.\n"
+"\n"
+"Commas between consecutive shorthand chars are optional.\n"
+"\n"
+"Pre-defined column shorthand chars:\n"
+"  4 - IPv4 address\n"
+"  6 - IPv6 address\n"
+"  a - Architecture\n"
+"  b - Storage pool\n"
+"  c - Creation date\n"
+"  d - Description\n"
+"  l - Last used date\n"
+"  n - Name\n"
+"  N - Number of Processes\n"
+"  p - PID of the container's init process\n"
+"  P - Profiles\n"
+"  s - State\n"
+"  S - Number of snapshots\n"
+"  t - Type (persistent or ephemeral)\n"
+"  L - Location of the container (e.g. its node)\n"
+"\n"
+"Custom columns are defined with \"key[:name][:maxWidth]\":\n"
+"  KEY: The (extended) config key to display\n"
+"  NAME: Name to display in the column header.\n"
+"  Defaults to the key if not specified or empty.\n"
+"\n"
+"  MAXWIDTH: Max width of the column (longer results are truncated).\n"
+"  Defaults to -1 (unlimited). Use 0 to limit to the column header size."
+msgstr ""
+
+#: lxc/image_alias.go:148
+msgid "List image aliases"
+msgstr ""
+
+#: lxc/image_alias.go:149
+msgid ""
+"List image aliases\n"
+"\n"
+"Filters may be part of the image hash or part of the image alias name.\n"
+msgstr ""
+
+#: lxc/image.go:889
+msgid "List images"
+msgstr ""
+
+#: lxc/image.go:890
+msgid ""
+"List images\n"
+"\n"
+"Filters may be of the <key>=<value> form for property based filtering,\n"
+"or part of the image hash or part of the image alias name.\n"
+"\n"
+"The -c option takes a (optionally comma-separated) list of arguments\n"
+"that control which image attributes to output when displaying in table\n"
+"or csv format.\n"
+"\n"
+"Default column layout is: lfpdasu\n"
+"\n"
+"Column shorthand chars:\n"
+"\n"
+"    l - Shortest image alias (and optionally number of other aliases)\n"
+"    L - Newline-separated list of all image aliases\n"
+"    f - Fingerprint\n"
+"    p - Whether image is public\n"
+"    d - Description\n"
+"    a - Architecture\n"
+"    s - Size"
+msgstr ""
+
+#: lxc/profile.go:567 lxc/profile.go:568
+msgid "List profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:917 lxc/storage_volume.go:918
+msgid "List storage volumes"
+msgstr ""
+
+#: lxc/remote.go:413 lxc/remote.go:414
+msgid "List the available remotes"
+msgstr ""
+
+#: lxc/config_trust.go:114 lxc/config_trust.go:115
+msgid "List trusted clients"
+msgstr ""
+
+#: lxc/operation.go:24 lxc/operation.go:25
+msgid "List, show and delete background operations"
+msgstr ""
+
+#: lxc/info.go:123
+#, c-format
+msgid "Location: %s"
+msgstr ""
+
+#: lxc/info.go:275
+msgid "Log:"
+msgstr ""
+
+#: lxc/network.go:852
+msgid "MAC ADDRESS"
+msgstr ""
+
+#: lxc/network.go:783
+msgid "MANAGED"
+msgstr ""
+
+#: lxc/cluster.go:123
+msgid "MESSAGE"
+msgstr ""
+
+#: lxc/image.go:137 lxc/image.go:576
+msgid "Make image public"
+msgstr ""
+
+#: lxc/publish.go:38
+msgid "Make the image public"
+msgstr ""
+
+#: lxc/network.go:32
+msgid "Manage an attach containers to networks"
+msgstr ""
+
+#: lxc/network.go:31
+msgid "Manage and attach containers to networks"
+msgstr ""
+
+#: lxc/cluster.go:25 lxc/cluster.go:26
+msgid "Manage cluster members"
+msgstr ""
+
+#: lxc/alias.go:22 lxc/alias.go:23
+msgid "Manage command aliases"
+msgstr ""
+
+#: lxc/config.go:28 lxc/config.go:29
+msgid "Manage container and server configuration options"
+msgstr ""
+
+#: lxc/config_device.go:23 lxc/config_device.go:24
+msgid "Manage container devices"
+msgstr ""
+
+#: lxc/config_template.go:29 lxc/config_template.go:30
+msgid "Manage container file templates"
+msgstr ""
+
+#: lxc/config_metadata.go:28 lxc/config_metadata.go:29
+msgid "Manage container metadata files"
+msgstr ""
+
+#: lxc/file.go:39 lxc/file.go:40
+msgid "Manage files in containers"
+msgstr ""
+
+#: lxc/image_alias.go:25 lxc/image_alias.go:26
+msgid "Manage image aliases"
+msgstr ""
+
+#: lxc/image.go:41
+msgid "Manage images"
+msgstr ""
+
+#: lxc/image.go:42
+msgid ""
+"Manage images\n"
+"\n"
+"In LXD containers are created from images. Those images were themselves\n"
+"either generated from an existing container or downloaded from an image\n"
+"server.\n"
+"\n"
+"When using remote images, LXD will automatically cache images for you\n"
+"and remove them upon expiration.\n"
+"\n"
+"The image unique identifier is the hash (sha-256) of its representation\n"
+"as a compressed tarball (or for split images, the concatenation of the\n"
+"metadata and rootfs tarballs).\n"
+"\n"
+"Images can be referenced by their full hash, shortest unique partial\n"
+"hash or alias name (if one is set)."
+msgstr ""
+
+#: lxc/profile.go:29 lxc/profile.go:30
+msgid "Manage profiles"
+msgstr ""
+
+#: lxc/storage.go:32 lxc/storage.go:33
+msgid "Manage storage pools and volumes"
+msgstr ""
+
+#: lxc/storage_volume.go:33
+msgid "Manage storage volumes"
+msgstr ""
+
+#: lxc/storage_volume.go:34
+msgid ""
+"Manage storage volumes\n"
+"\n"
+"Unless specified through a prefix, all volume operations affect \"custom"
+"\" (user created) volumes."
+msgstr ""
+
+#: lxc/remote.go:33 lxc/remote.go:34
+msgid "Manage the list of remote servers"
+msgstr ""
+
+#: lxc/config_trust.go:29 lxc/config_trust.go:30
+msgid "Manage trusted clients"
+msgstr ""
+
+#: lxc/info.go:197
+msgid "Memory (current)"
+msgstr ""
+
+#: lxc/info.go:201
+msgid "Memory (peak)"
+msgstr ""
+
+#: lxc/info.go:213
+msgid "Memory usage:"
+msgstr ""
+
+#: lxc/monitor.go:49
+msgid "Minimum level for log messages"
+msgstr ""
+
+#: lxc/config_metadata.go:102 lxc/config_metadata.go:200
+#: lxc/config_template.go:91 lxc/config_template.go:134
+#: lxc/config_template.go:176 lxc/config_template.go:260
+#: lxc/config_template.go:322 lxc/profile.go:197 lxc/profile.go:656
+msgid "Missing container name"
+msgstr ""
+
+#: lxc/profile.go:126
+msgid "Missing container.name name"
+msgstr ""
+
+#: lxc/config_device.go:103 lxc/config_device.go:203 lxc/config_device.go:276
+#: lxc/config_device.go:342 lxc/config_device.go:429 lxc/config_device.go:517
+#: lxc/config_device.go:606
+msgid "Missing name"
+msgstr ""
+
+#: lxc/network.go:128 lxc/network.go:201 lxc/network.go:344 lxc/network.go:391
+#: lxc/network.go:476 lxc/network.go:581 lxc/network.go:686 lxc/network.go:832
+#: lxc/network.go:897 lxc/network.go:946 lxc/network.go:1015
+msgid "Missing network name"
+msgstr ""
+
+#: lxc/storage.go:185 lxc/storage.go:252 lxc/storage.go:353 lxc/storage.go:408
+#: lxc/storage.go:603 lxc/storage.go:677 lxc/storage_volume.go:146
+#: lxc/storage_volume.go:225 lxc/storage_volume.go:451
+#: lxc/storage_volume.go:526 lxc/storage_volume.go:585
+#: lxc/storage_volume.go:667 lxc/storage_volume.go:766
+#: lxc/storage_volume.go:878 lxc/storage_volume.go:942
+#: lxc/storage_volume.go:1050 lxc/storage_volume.go:1114
+#: lxc/storage_volume.go:1197
+msgid "Missing pool name"
+msgstr ""
+
+#: lxc/profile.go:321 lxc/profile.go:372 lxc/profile.go:444 lxc/profile.go:544
+#: lxc/profile.go:729 lxc/profile.go:777 lxc/profile.go:836
+msgid "Missing profile name"
+msgstr ""
+
+#: lxc/profile.go:266
+msgid "Missing source profile name"
+msgstr ""
 
-#: lxc/file.go:460
+#: lxc/storage_volume.go:311
+msgid "Missing source volume name"
+msgstr ""
+
+#: lxc/file.go:446
+msgid "Missing target directory"
+msgstr ""
+
+#: lxc/monitor.go:30
+msgid "Monitor a local or remote LXD server"
+msgstr ""
+
+#: lxc/monitor.go:31
+msgid ""
+"Monitor a local or remote LXD server\n"
+"\n"
+"By default the monitor will listen to all message types."
+msgstr ""
+
+#: lxc/network.go:411 lxc/network.go:496 lxc/storage_volume.go:605
+#: lxc/storage_volume.go:686
+msgid "More than one device matches, specify the device name."
+msgstr ""
+
+#: lxc/file.go:224
 msgid "More than one file to download, but target is not a directory"
 msgstr ""
 
-#: lxc/move.go:42
+#: lxc/move.go:30 lxc/move.go:31
+msgid "Move containers within or in between LXD instances"
+msgstr ""
+
+#: lxc/storage_volume.go:993 lxc/storage_volume.go:994
+msgid "Move storage volumes between pools"
+msgstr ""
+
+#: lxc/move.go:44
 msgid "Move the container without its snapshots"
 msgstr ""
 
-#: lxc/storage.go:1128
+#: lxc/storage_volume.go:375
 #, c-format
 msgid "Moving the storage volume: %s"
 msgstr ""
 
-#: lxc/image.go:1292
+#: lxc/image.go:588
 msgid "Must run as root to import from directory"
 msgstr ""
 
-#: lxc/action.go:74
+#: lxc/action.go:147
 msgid "Must supply container name for: "
 msgstr ""
 
-#: lxc/cluster.go:183 lxc/list.go:471 lxc/network.go:576 lxc/profile.go:573
-#: lxc/remote.go:409 lxc/storage.go:731 lxc/storage.go:936
+#: lxc/cluster.go:119 lxc/list.go:468 lxc/network.go:781 lxc/profile.go:613
+#: lxc/remote.go:463 lxc/storage.go:544 lxc/storage_volume.go:966
 msgid "NAME"
 msgstr ""
 
-#: lxc/network.go:558 lxc/operation.go:139 lxc/remote.go:380 lxc/remote.go:385
+#: lxc/network.go:763 lxc/operation.go:138 lxc/remote.go:434 lxc/remote.go:439
 msgid "NO"
 msgstr ""
 
-#: lxc/storage.go:941
+#: lxc/storage_volume.go:971
 msgid "NODE"
 msgstr ""
 
-#: lxc/info.go:117
+#: lxc/info.go:121
 #, c-format
 msgid "Name: %s"
 msgstr ""
 
-#: lxc/network.go:276
+#: lxc/network.go:303
 #, c-format
 msgid "Network %s created"
 msgstr ""
 
-#: lxc/network.go:393
+#: lxc/network.go:353
 #, c-format
 msgid "Network %s deleted"
 msgstr ""
 
-#: lxc/network.go:274
+#: lxc/network.go:301
 #, c-format
 msgid "Network %s pending on node %s"
 msgstr ""
 
-#: lxc/network.go:470
+#: lxc/network.go:906
 #, c-format
 msgid "Network %s renamed to %s"
 msgstr ""
 
-#: lxc/init.go:145 lxc/init.go:146
+#: lxc/init.go:45
 msgid "Network name"
 msgstr ""
 
-#: lxc/info.go:226
+#: lxc/info.go:230
 msgid "Network usage:"
 msgstr ""
 
-#: lxc/image.go:180 lxc/publish.go:36
+#: lxc/publish.go:39
 msgid "New alias to define at target"
 msgstr ""
 
-#: lxc/config.go:414
-msgid "No certificate provided to add"
+#: lxc/image.go:140 lxc/image.go:577
+msgid "New aliases to add to the image"
 msgstr ""
 
-#: lxc/network.go:312 lxc/network.go:365
+#: lxc/network.go:420 lxc/network.go:505
 msgid "No device found for this network"
 msgstr ""
 
-#: lxc/storage.go:444 lxc/storage.go:574
+#: lxc/storage_volume.go:614 lxc/storage_volume.go:695
 msgid "No device found for this storage volume."
 msgstr ""
 
-#: lxc/config.go:446
-msgid "No fingerprint specified."
-msgstr ""
-
-#: lxc/cluster.go:143
+#: lxc/cluster.go:268
 #, c-format
 msgid "Node %s removed"
 msgstr ""
 
-#: lxc/cluster.go:119
+#: lxc/cluster.go:221
 #, c-format
 msgid "Node %s renamed to %s"
 msgstr ""
 
-#: lxc/copy.go:46 lxc/init.go:150 lxc/move.go:45 lxc/network.go:105
-#: lxc/storage.go:165
+#: lxc/copy.go:45 lxc/init.go:48 lxc/move.go:47
 msgid "Node name"
 msgstr ""
 
-#: lxc/storage.go:388 lxc/storage.go:481
+#: lxc/storage_volume.go:164 lxc/storage_volume.go:243
 msgid "Only \"custom\" volumes can be attached to containers."
 msgstr ""
 
-#: lxc/remote.go:101
+#: lxc/remote.go:146
 msgid "Only https URLs are supported for simplestreams"
 msgstr ""
 
-#: lxc/image.go:688
+#: lxc/image.go:658
 msgid "Only https:// is supported for remote image import."
 msgstr ""
 
-#: lxc/network.go:421 lxc/network.go:605
+#: lxc/network.go:607 lxc/network.go:960
 msgid "Only managed networks can be modified."
 msgstr ""
 
-#: lxc/operation.go:85
+#: lxc/operation.go:83
 #, c-format
 msgid "Operation %s deleted"
 msgstr ""
 
-#: lxc/help.go:71 lxc/main.go:139 lxc/main.go:195
-msgid "Options:"
-msgstr ""
-
-#: lxc/exec.go:69
+#: lxc/exec.go:53
 msgid "Override the terminal mode (auto, interactive or non-interactive)"
 msgstr ""
 
-#: lxc/list.go:641
+#: lxc/list.go:638
 msgid "PERSISTENT"
 msgstr ""
 
-#: lxc/list.go:473
+#: lxc/list.go:470
 msgid "PID"
 msgstr ""
 
-#: lxc/list.go:472
+#: lxc/list.go:469
 msgid "PROCESSES"
 msgstr ""
 
-#: lxc/list.go:474
+#: lxc/list.go:471
 msgid "PROFILES"
 msgstr ""
 
-#: lxc/remote.go:411
+#: lxc/remote.go:465
 msgid "PROTOCOL"
 msgstr ""
 
-#: lxc/image.go:234 lxc/remote.go:413
+#: lxc/image.go:924 lxc/remote.go:467
 msgid "PUBLIC"
 msgstr ""
 
-#: lxc/info.go:220
+#: lxc/info.go:224
 msgid "Packets received"
 msgstr ""
 
-#: lxc/info.go:221
+#: lxc/info.go:225
 msgid "Packets sent"
 msgstr ""
 
-#: lxc/help.go:78
-msgid "Path to an alternate client configuration directory"
-msgstr ""
-
-#: lxc/help.go:79
-msgid "Path to an alternate server directory"
-msgstr ""
-
-#: lxc/main.go:240
-msgid "Pause containers."
-msgstr ""
-
-#: lxc/main.go:42
-msgid "Permission denied, are you in the lxd group?"
+#: lxc/action.go:48 lxc/action.go:49
+msgid "Pause containers"
 msgstr ""
 
-#: lxc/info.go:138
+#: lxc/info.go:142
 #, c-format
 msgid "Pid: %d"
 msgstr ""
 
-#: lxc/network.go:446 lxc/profile.go:276 lxc/storage.go:648 lxc/storage.go:1210
+#: lxc/network.go:632 lxc/profile.go:491 lxc/storage.go:299
+#: lxc/storage_volume.go:823
 msgid "Press enter to open the editor again"
 msgstr ""
 
-#: lxc/config.go:822 lxc/config.go:887 lxc/config.go:1397 lxc/config.go:1447
-#: lxc/image.go:1192
+#: lxc/config.go:196 lxc/config.go:260 lxc/config_metadata.go:145
+#: lxc/config_template.go:205 lxc/image.go:406
 msgid "Press enter to start the editor again"
 msgstr ""
 
-#: lxc/monitor.go:68
+#: lxc/monitor.go:47
 msgid "Pretty rendering"
 msgstr ""
 
-#: lxc/help.go:73
-msgid "Print debug information"
-msgstr ""
-
-#: lxc/help.go:72
-msgid "Print less common commands"
+#: lxc/main.go:55
+msgid "Print help"
 msgstr ""
 
-#: lxc/query.go:37
+#: lxc/query.go:36
 msgid "Print the raw response"
 msgstr ""
 
-#: lxc/help.go:74
-msgid "Print verbose information"
+#: lxc/main.go:54
+msgid "Print version number"
 msgstr ""
 
-#: lxc/info.go:162
+#: lxc/info.go:166
 #, c-format
 msgid "Processes: %d"
 msgstr ""
 
-#: lxc/profile.go:362
+#: lxc/main_aliases.go:123 lxc/main_aliases.go:131
+#, c-format
+msgid "Processing aliases failed: %s\n"
+msgstr ""
+
+#: lxc/profile.go:147
 #, c-format
 msgid "Profile %s added to %s"
 msgstr ""
 
-#: lxc/profile.go:226
+#: lxc/profile.go:333
 #, c-format
 msgid "Profile %s created"
 msgstr ""
 
-#: lxc/profile.go:310
+#: lxc/profile.go:381
 #, c-format
 msgid "Profile %s deleted"
 msgstr ""
 
-#: lxc/profile.go:397
+#: lxc/profile.go:690
 #, c-format
 msgid "Profile %s removed from %s"
 msgstr ""
 
-#: lxc/profile.go:300
+#: lxc/profile.go:738
 #, c-format
 msgid "Profile %s renamed to %s"
 msgstr ""
 
-#: lxc/copy.go:39 lxc/copy.go:40 lxc/init.go:141 lxc/init.go:142
+#: lxc/copy.go:40 lxc/init.go:43
 msgid "Profile to apply to the new container"
 msgstr ""
 
-#: lxc/profile.go:339
+#: lxc/profile.go:225
 #, c-format
 msgid "Profiles %s applied to %s"
 msgstr ""
 
-#: lxc/info.go:136
+#: lxc/info.go:140
 #, c-format
 msgid "Profiles: %s"
 msgstr ""
 
-#: lxc/image.go:619
+#: lxc/image.go:849
 msgid "Properties:"
 msgstr ""
 
-#: lxc/remote.go:72
+#: lxc/remote.go:92
 msgid "Public image server"
 msgstr ""
 
-#: lxc/image.go:602
+#: lxc/image.go:827
 #, c-format
 msgid "Public: %s"
 msgstr ""
 
-#: lxc/file.go:68 lxc/file.go:69
-msgid "Recursively push or pull files"
+#: lxc/publish.go:33 lxc/publish.go:34
+msgid "Publish containers as images"
 msgstr ""
 
-#: lxc/image.go:529
-#, c-format
-msgid "Refreshing the image: %s"
+#: lxc/file.go:184 lxc/file.go:185
+msgid "Pull files from containers"
 msgstr ""
 
-#: lxc/remote.go:69
-msgid "Remote admin password"
+#: lxc/file.go:323 lxc/file.go:324
+msgid "Push files into containers"
 msgstr ""
 
-#: lxc/utils/cancel.go:34
-msgid "Remote operation canceled by user"
+#: lxc/file.go:192 lxc/file.go:330
+msgid "Recursively transfer files"
+msgstr ""
+
+#: lxc/image.go:1211 lxc/image.go:1212
+msgid "Refresh images"
 msgstr ""
 
-#: lxc/info.go:122
+#: lxc/image.go:1239
 #, c-format
-msgid "Remote: %s"
+msgid "Refreshing the image: %s"
 msgstr ""
 
-#: lxc/delete.go:42
+#: lxc/remote.go:515
 #, c-format
-msgid "Remove %s (yes/no): "
+msgid "Remote %s already exists"
 msgstr ""
 
-#: lxc/storage.go:1247
+#: lxc/remote.go:507 lxc/remote.go:569 lxc/remote.go:618 lxc/remote.go:656
 #, c-format
-msgid "Renamed storage volume from \"%s\" to \"%s\""
+msgid "Remote %s doesn't exist"
 msgstr ""
 
-#: lxc/delete.go:36 lxc/delete.go:37
-msgid "Require user confirmation"
+#: lxc/remote.go:116
+#, c-format
+msgid "Remote %s exists as <%s>"
 msgstr ""
 
-#: lxc/info.go:159
-msgid "Resources:"
+#: lxc/remote.go:511 lxc/remote.go:573 lxc/remote.go:660
+#, c-format
+msgid "Remote %s is static and cannot be modified"
 msgstr ""
 
-#: lxc/main.go:248
-msgid "Restart containers."
+#: lxc/remote.go:89
+msgid "Remote admin password"
 msgstr ""
 
-#: lxc/console.go:38
-msgid "Retrieve the container's console log"
+#: lxc/utils/cancel.go:34
+msgid "Remote operation canceled by user"
 msgstr ""
 
-#: lxc/init.go:293
+#: lxc/info.go:126
 #, c-format
-msgid "Retrieving image: %s"
+msgid "Remote: %s"
 msgstr ""
 
-#: lxc/action.go:52
-msgid "Run command against all containers"
+#: lxc/delete.go:42
+#, c-format
+msgid "Remove %s (yes/no): "
 msgstr ""
 
-#: lxc/image.go:237
-msgid "SIZE"
+#: lxc/cluster.go:237 lxc/cluster.go:238
+msgid "Remove a member from the cluster"
 msgstr ""
 
-#: lxc/list.go:475
-msgid "SNAPSHOTS"
+#: lxc/alias.go:197 lxc/alias.go:198
+msgid "Remove aliases"
 msgstr ""
 
-#: lxc/storage.go:738
-msgid "SOURCE"
+#: lxc/config_device.go:404 lxc/config_device.go:405
+msgid "Remove container devices"
 msgstr ""
 
-#: lxc/cluster.go:186 lxc/list.go:476 lxc/network.go:583 lxc/storage.go:736
-msgid "STATE"
+#: lxc/profile.go:631 lxc/profile.go:632
+msgid "Remove profiles from containers"
 msgstr ""
 
-#: lxc/remote.go:414
-msgid "STATIC"
+#: lxc/remote.go:548 lxc/remote.go:549
+msgid "Remove remotes"
 msgstr ""
 
-#: lxc/operation.go:155
-msgid "STATUS"
+#: lxc/config_trust.go:196 lxc/config_trust.go:197
+msgid "Remove trusted clients"
 msgstr ""
 
-#: lxc/list.go:478
-msgid "STORAGE POOL"
+#: lxc/cluster.go:191 lxc/cluster.go:192
+msgid "Rename a cluster member"
 msgstr ""
 
-#: lxc/remote.go:71
-msgid "Server authentication type (tls or macaroons)"
+#: lxc/alias.go:146 lxc/alias.go:147 lxc/image_alias.go:249
+#: lxc/image_alias.go:250
+msgid "Rename aliases"
 msgstr ""
 
-#: lxc/remote.go:211
-msgid "Server certificate NACKed by user"
+#: lxc/rename.go:19 lxc/rename.go:20
+msgid "Rename containers and snapshots"
 msgstr ""
 
-#: lxc/remote.go:311
-msgid "Server doesn't trust us after authentication"
+#: lxc/network.go:872 lxc/network.go:873
+msgid "Rename networks"
 msgstr ""
 
-#: lxc/remote.go:70
-msgid "Server protocol (lxd or simplestreams)"
+#: lxc/profile.go:704 lxc/profile.go:705
+msgid "Rename profiles"
 msgstr ""
 
-#: lxc/file.go:66
-msgid "Set the file's gid on push"
+#: lxc/remote.go:486 lxc/remote.go:487
+msgid "Rename remotes"
 msgstr ""
 
-#: lxc/file.go:67
-msgid "Set the file's perms on push"
+#: lxc/storage_volume.go:1024 lxc/storage_volume.go:1025
+msgid "Rename storage volumes"
 msgstr ""
 
-#: lxc/file.go:65
-msgid "Set the file's uid on push"
+#: lxc/storage_volume.go:1073
+#, c-format
+msgid "Renamed storage volume from \"%s\" to \"%s\""
 msgstr ""
 
-#: lxc/help.go:29
-msgid "Show all commands (not just interesting ones)"
+#: lxc/delete.go:35
+msgid "Require user confirmation"
 msgstr ""
 
-#: lxc/help.go:75
-msgid "Show client version"
+#: lxc/info.go:163
+msgid "Resources:"
 msgstr ""
 
-#: lxc/info.go:40
-msgid "Show the container's last 100 log lines?"
+#: lxc/action.go:68
+msgid "Restart containers"
 msgstr ""
 
-#: lxc/config.go:36
-msgid "Show the expanded configuration"
+#: lxc/action.go:69
+msgid ""
+"Restart containers\n"
+"\n"
+"The opposite of \"lxc pause\" is \"lxc start\"."
 msgstr ""
 
-#: lxc/info.go:41
-msgid "Show the resources available to the server"
+#: lxc/restore.go:23
+msgid "Restore containers from snapshots"
 msgstr ""
 
-#: lxc/storage.go:163
-msgid "Show the resources available to the storage pool"
+#: lxc/restore.go:24
+msgid ""
+"Restore containers from snapshots\n"
+"\n"
+"If --stateful is passed, then the running state will be restored too."
+msgstr ""
+
+#: lxc/console.go:39
+msgid "Retrieve the container's console log"
+msgstr ""
+
+#: lxc/init.go:201
+#, c-format
+msgid "Retrieving image: %s"
+msgstr ""
+
+#: lxc/action.go:112
+msgid "Run command against all containers"
+msgstr ""
+
+#: lxc/image.go:927
+msgid "SIZE"
+msgstr ""
+
+#: lxc/list.go:472
+msgid "SNAPSHOTS"
+msgstr ""
+
+#: lxc/storage.go:551
+msgid "SOURCE"
+msgstr ""
+
+#: lxc/cluster.go:122 lxc/list.go:473 lxc/network.go:788 lxc/storage.go:549
+msgid "STATE"
+msgstr ""
+
+#: lxc/remote.go:468
+msgid "STATIC"
+msgstr ""
+
+#: lxc/operation.go:154
+msgid "STATUS"
+msgstr ""
+
+#: lxc/list.go:475
+msgid "STORAGE POOL"
+msgstr ""
+
+#: lxc/query.go:26 lxc/query.go:27
+msgid "Send a raw query to LXD"
+msgstr ""
+
+#: lxc/remote.go:91
+msgid "Server authentication type (tls or macaroons)"
+msgstr ""
+
+#: lxc/remote.go:260
+msgid "Server certificate NACKed by user"
+msgstr ""
+
+#: lxc/remote.go:360
+msgid "Server doesn't trust us after authentication"
+msgstr ""
+
+#: lxc/remote.go:90
+msgid "Server protocol (lxd or simplestreams)"
+msgstr ""
+
+#: lxc/config_device.go:492 lxc/config_device.go:493
+msgid "Set container device configuration keys"
+msgstr ""
+
+#: lxc/config.go:354 lxc/config.go:355
+msgid "Set container or server configuration keys"
+msgstr ""
+
+#: lxc/network.go:919 lxc/network.go:920
+msgid "Set network configuration keys"
+msgstr ""
+
+#: lxc/profile.go:752 lxc/profile.go:753
+msgid "Set profile configuration keys"
+msgstr ""
+
+#: lxc/storage.go:572 lxc/storage.go:573
+msgid "Set storage pool configuration keys"
+msgstr ""
+
+#: lxc/storage_volume.go:1088 lxc/storage_volume.go:1089
+msgid "Set storage volume configuration keys"
+msgstr ""
+
+#: lxc/remote.go:635 lxc/remote.go:636
+msgid "Set the URL for the remote"
+msgstr ""
+
+#: lxc/remote.go:597 lxc/remote.go:598
+msgid "Set the default remote"
+msgstr ""
+
+#: lxc/file.go:333
+msgid "Set the file's gid on push"
+msgstr ""
+
+#: lxc/file.go:334
+msgid "Set the file's perms on push"
+msgstr ""
+
+#: lxc/file.go:332
+msgid "Set the file's uid on push"
+msgstr ""
+
+#: lxc/main.go:57
+msgid "Show all debug messages"
+msgstr ""
+
+#: lxc/main.go:58
+msgid "Show all information messages"
+msgstr ""
+
+#: lxc/config_metadata.go:175 lxc/config_metadata.go:176
+msgid "Show container metadata files"
+msgstr ""
+
+#: lxc/config.go:451 lxc/config.go:452
+msgid "Show container or server configurations"
+msgstr ""
+
+#: lxc/info.go:28 lxc/info.go:29
+msgid "Show container or server information"
+msgstr ""
+
+#: lxc/config_template.go:297 lxc/config_template.go:298
+msgid "Show content of container file templates"
+msgstr ""
+
+#: lxc/cluster.go:141 lxc/cluster.go:142
+msgid "Show details of a cluster member"
+msgstr ""
+
+#: lxc/operation.go:173 lxc/operation.go:174
+msgid "Show details on a background operation"
+msgstr ""
+
+#: lxc/config_device.go:581 lxc/config_device.go:582
+msgid "Show full device configuration for containers or profiles"
+msgstr ""
+
+#: lxc/image.go:1284 lxc/image.go:1285
+msgid "Show image properties"
+msgstr ""
+
+#: lxc/main.go:61
+msgid "Show less common commands"
 msgstr ""
 
-#: lxc/storage.go:164
+#: lxc/network.go:988 lxc/network.go:989
+msgid "Show network configurations"
+msgstr ""
+
+#: lxc/profile.go:811 lxc/profile.go:812
+msgid "Show profile configurations"
+msgstr ""
+
+#: lxc/storage.go:644 lxc/storage.go:645
+msgid "Show storage pool configurations and resources"
+msgstr ""
+
+#: lxc/storage_volume.go:1165
+msgid "Show storage volum configurations"
+msgstr ""
+
+#: lxc/storage_volume.go:1166
+msgid "Show storage volume configurations"
+msgstr ""
+
+#: lxc/info.go:39
+msgid "Show the container's last 100 log lines?"
+msgstr ""
+
+#: lxc/remote.go:379 lxc/remote.go:380
+msgid "Show the default remote"
+msgstr ""
+
+#: lxc/config.go:455
+msgid "Show the expanded configuration"
+msgstr ""
+
+#: lxc/info.go:40
+msgid "Show the resources available to the server"
+msgstr ""
+
+#: lxc/storage.go:648
+msgid "Show the resources available to the storage pool"
+msgstr ""
+
+#: lxc/storage.go:386
 msgid "Show the used and free space in bytes"
 msgstr ""
 
-#: lxc/image.go:600
+#: lxc/image.go:775 lxc/image.go:776
+msgid "Show useful information about images"
+msgstr ""
+
+#: lxc/storage.go:382 lxc/storage.go:383
+msgid "Show useful information about storage pools"
+msgstr ""
+
+#: lxc/image.go:825
 #, c-format
 msgid "Size: %.2fMB"
 msgstr ""
 
-#: lxc/info.go:240
+#: lxc/info.go:244
 msgid "Snapshots:"
 msgstr ""
 
-#: lxc/action.go:163
+#: lxc/action.go:242
 #, c-format
 msgid "Some containers failed to %s"
 msgstr ""
 
-#: lxc/image.go:634
+#: lxc/image.go:867
 msgid "Source:"
 msgstr ""
 
-#: lxc/main.go:258
-msgid "Start containers."
+#: lxc/action.go:29 lxc/action.go:30
+msgid "Start containers"
 msgstr ""
 
-#: lxc/launch.go:59
+#: lxc/launch.go:62
 #, c-format
 msgid "Starting %s"
 msgstr ""
 
-#: lxc/info.go:130
+#: lxc/info.go:134
 #, c-format
 msgid "Status: %s"
 msgstr ""
 
-#: lxc/main.go:264
-msgid "Stop containers."
+#: lxc/action.go:90 lxc/action.go:91
+msgid "Stop containers"
 msgstr ""
 
-#: lxc/publish.go:37 lxc/publish.go:38
+#: lxc/publish.go:40
 msgid "Stop the container if currently running"
 msgstr ""
 
-#: lxc/publish.go:136
+#: lxc/publish.go:144
 msgid "Stopping container failed!"
 msgstr ""
 
-#: lxc/delete.go:121
+#: lxc/delete.go:120
 #, c-format
 msgid "Stopping the container failed: %s"
 msgstr ""
 
-#: lxc/storage.go:538
+#: lxc/storage.go:144
 #, c-format
 msgid "Storage pool %s created"
 msgstr ""
 
-#: lxc/storage.go:598
+#: lxc/storage.go:194
 #, c-format
 msgid "Storage pool %s deleted"
 msgstr ""
 
-#: lxc/storage.go:536
+#: lxc/storage.go:142
 #, c-format
 msgid "Storage pool %s pending on node %s"
 msgstr ""
 
-#: lxc/init.go:147 lxc/init.go:148
+#: lxc/init.go:46
 msgid "Storage pool name"
 msgstr ""
 
-#: lxc/storage.go:980
+#: lxc/storage_volume.go:484
 #, c-format
 msgid "Storage volume %s created"
 msgstr ""
 
-#: lxc/storage.go:1000
+#: lxc/storage_volume.go:545
 #, c-format
 msgid "Storage volume %s deleted"
 msgstr ""
 
-#: lxc/storage.go:1135
+#: lxc/storage_volume.go:388
 msgid "Storage volume copied successfully!"
 msgstr ""
 
-#: lxc/storage.go:1129
+#: lxc/storage_volume.go:376
 msgid "Storage volume moved successfully!"
 msgstr ""
 
-#: lxc/action.go:50
-msgid "Store the container state (only for stop)"
+#: lxc/action.go:115
+msgid "Store the container state"
 msgstr ""
 
-#: lxc/info.go:201
+#: lxc/info.go:205
 msgid "Swap (current)"
 msgstr ""
 
-#: lxc/info.go:205
+#: lxc/info.go:209
 msgid "Swap (peak)"
 msgstr ""
 
-#: lxc/alias.go:85
+#: lxc/alias.go:128
 msgid "TARGET"
 msgstr ""
 
-#: lxc/list.go:477 lxc/network.go:516 lxc/network.go:577 lxc/operation.go:153
-#: lxc/storage.go:935
+#: lxc/list.go:474 lxc/network.go:782 lxc/network.go:854 lxc/operation.go:152
+#: lxc/storage_volume.go:965
 msgid "TYPE"
 msgstr ""
 
-#: lxc/delete.go:105
+#: lxc/delete.go:104
 msgid "The container is currently running, stop it first or pass --force."
 msgstr ""
 
-#: lxc/publish.go:101
+#: lxc/publish.go:109
 msgid ""
 "The container is currently running. Use --force to have it stopped and "
 "restarted."
 msgstr ""
 
-#: lxc/init.go:372
+#: lxc/init.go:280
 msgid "The container you are starting doesn't have any network attached to it."
 msgstr ""
 
-#: lxc/config.go:944 lxc/config.go:961 lxc/config.go:1240
+#: lxc/config_device.go:130 lxc/config_device.go:147 lxc/config_device.go:354
 msgid "The device already exists"
 msgstr ""
 
-#: lxc/config.go:1007 lxc/config.go:1019 lxc/config.go:1055 lxc/config.go:1073
-#: lxc/config.go:1119 lxc/config.go:1136 lxc/config.go:1179 lxc/config.go:1197
+#: lxc/config_device.go:218 lxc/config_device.go:230 lxc/config_device.go:442
+#: lxc/config_device.go:460 lxc/config_device.go:533 lxc/config_device.go:550
 msgid "The device doesn't exist"
 msgstr ""
 
-#: lxc/init.go:356
+#: lxc/init.go:264
 #, c-format
 msgid "The local image '%s' couldn't be found, trying '%s:%s' instead."
 msgstr ""
 
-#: lxc/init.go:352
+#: lxc/init.go:260
 #, c-format
 msgid "The local image '%s' couldn't be found, trying '%s:' instead."
 msgstr ""
 
-#: lxc/action.go:35
-msgid "The opposite of \"lxc pause\" is \"lxc start\"."
-msgstr ""
-
-#: lxc/config.go:1245
+#: lxc/config_device.go:359
 msgid "The profile device doesn't exist"
 msgstr ""
 
-#: lxc/network.go:317 lxc/network.go:370 lxc/storage.go:449 lxc/storage.go:579
+#: lxc/network.go:425 lxc/network.go:510 lxc/storage_volume.go:619
+#: lxc/storage_volume.go:700
 msgid "The specified device doesn't exist"
 msgstr ""
 
-#: lxc/network.go:321 lxc/network.go:374
+#: lxc/network.go:429 lxc/network.go:514
 msgid "The specified device doesn't match the network"
 msgstr ""
 
-#: lxc/publish.go:74
+#: lxc/publish.go:82
 msgid "There is no \"image name\".  Did you want an alias?"
 msgstr ""
 
-#: lxc/help.go:47
-msgid ""
-"This is the LXD command line client.\n"
-"\n"
-"All of LXD's features can be driven through the various commands below.\n"
-"For help with any of those, simply call them with --help."
-msgstr ""
-
-#: lxc/action.go:46
+#: lxc/action.go:122
 msgid "Time to wait for the container before killing it"
 msgstr ""
 
-#: lxc/image.go:603
+#: lxc/image.go:828
 msgid "Timestamps:"
 msgstr ""
 
-#: lxc/init.go:374
+#: lxc/init.go:282
 msgid "To attach a network to a container, use: lxc network attach"
 msgstr ""
 
-#: lxc/init.go:373
+#: lxc/init.go:281
 msgid "To create a new network, use: lxc network create"
 msgstr ""
 
-#: lxc/console.go:173
+#: lxc/console.go:185
 msgid "To detach from the console, press: <ctrl>+a q"
 msgstr ""
 
-#: lxc/main.go:172
+#: lxc/main.go:260
 msgid "To start your first container, try: lxc launch ubuntu:16.04"
 msgstr ""
 
-#: lxc/copy.go:43 lxc/move.go:43
+#: lxc/storage_volume.go:997
+msgid "Transfer mode, one of pull (default), push or relay"
+msgstr ""
+
+#: lxc/copy.go:42
+msgid "Transfer mode. One of pull (default), push or relay"
+msgstr ""
+
+#: lxc/move.go:45 lxc/storage_volume.go:286
 msgid "Transfer mode. One of pull (default), push or relay."
 msgstr ""
 
-#: lxc/copy.go:212
+#: lxc/copy.go:229
 #, c-format
 msgid "Transferring container: %s"
 msgstr ""
 
-#: lxc/image.go:717
+#: lxc/image.go:687
 #, c-format
 msgid "Transferring image: %s"
 msgstr ""
 
-#: lxc/action.go:108 lxc/launch.go:77
+#: lxc/action.go:181 lxc/launch.go:80
 #, c-format
 msgid "Try `lxc info --show-log %s` for more info"
 msgstr ""
 
-#: lxc/info.go:132
+#: lxc/info.go:136
 msgid "Type: ephemeral"
 msgstr ""
 
-#: lxc/info.go:134
+#: lxc/info.go:138
 msgid "Type: persistent"
 msgstr ""
 
-#: lxc/image.go:238
+#: lxc/image.go:928
 msgid "UPLOAD DATE"
 msgstr ""
 
-#: lxc/cluster.go:184 lxc/remote.go:410
+#: lxc/cluster.go:120 lxc/remote.go:464
 msgid "URL"
 msgstr ""
 
-#: lxc/network.go:580 lxc/profile.go:574 lxc/storage.go:740 lxc/storage.go:938
+#: lxc/network.go:785 lxc/profile.go:614 lxc/storage.go:553
+#: lxc/storage_volume.go:968
 msgid "USED BY"
 msgstr ""
 
-#: lxc/manpage.go:36
-msgid "Unable to find help2man."
+#: lxc/list.go:514
+#, c-format
+msgid "Unknown column shorthand char '%c' in '%s'"
 msgstr ""
 
-#: lxc/file.go:124
+#: lxc/file.go:596
 #, c-format
 msgid "Unknown file type '%s'"
 msgstr ""
 
-#: lxc/image.go:608
-#, c-format
-msgid "Uploaded: %s"
+#: lxc/config_device.go:649 lxc/config_device.go:650
+msgid "Unset container device configuration keys"
 msgstr ""
 
-#: lxc/action.go:38
-#, c-format
-msgid ""
-"Usage: lxc %s [--all] [<remote>:]<container> [[<remote>:]<container>...]\n"
-"\n"
-"%s%s"
+#: lxc/config.go:559 lxc/config.go:560
+msgid "Unset container or server configuration keys"
 msgstr ""
 
-#: lxc/help.go:45
-msgid "Usage: lxc <command> [options]"
+#: lxc/network.go:1050 lxc/network.go:1051
+msgid "Unset network configuration keys"
 msgstr ""
 
-#: lxc/alias.go:22
-msgid ""
-"Usage: lxc alias <subcommand> [options]\n"
-"\n"
-"Manage command aliases.\n"
-"\n"
-"lxc alias add <alias> <target>\n"
-"    Add a new alias <alias> pointing to <target>.\n"
-"\n"
-"lxc alias remove <alias>\n"
-"    Remove the alias <alias>.\n"
-"\n"
-"lxc alias list\n"
-"    List all the aliases.\n"
-"\n"
-"lxc alias rename <old alias> <new alias>\n"
-"    Rename remote <old alias> to <new alias>."
+#: lxc/profile.go:865 lxc/profile.go:866
+msgid "Unset profile configuration keys"
 msgstr ""
 
-#: lxc/cluster.go:23
-msgid ""
-"Usage: lxc cluster <subcommand> [options]\n"
-"\n"
-"Manage cluster nodes.\n"
-"\n"
-"lxc cluster list [<remote>:]\n"
-"    List all nodes in the cluster.\n"
-"\n"
-"lxc cluster show [<remote>:]<node>\n"
-"    Show details of a node.\n"
-"\n"
-"lxc cluster rename [<remote>:]<node> <new-name>\n"
-"    Rename a cluster node.\n"
-"\n"
-"lxc cluster delete [<remote>:]<node> [--force]\n"
-"    Delete a node from the cluster."
+#: lxc/storage.go:728 lxc/storage.go:729
+msgid "Unset storage pool configuration keys"
 msgstr ""
 
-#: lxc/config.go:85
-msgid ""
-"Usage: lxc config <subcommand> [options]\n"
-"\n"
-"Change container or server configuration options.\n"
-"\n"
-"*Container configuration*\n"
-"\n"
-"lxc config get [<remote>:][container] <key>\n"
-"    Get container or server configuration key.\n"
-"\n"
-"lxc config set [<remote>:][container] <key> <value>\n"
-"    Set container or server configuration key.\n"
-"\n"
-"lxc config unset [<remote>:][container] <key>\n"
-"    Unset container or server configuration key.\n"
-"\n"
-"lxc config show [<remote>:][container] [--expanded]\n"
-"    Show container or server configuration.\n"
-"\n"
-"lxc config edit [<remote>:][container]\n"
-"    Edit configuration, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"*Container metadata*\n"
-"\n"
-"lxc config metadata show [<remote>:][container]\n"
-"    Show the container metadata.yaml content.\n"
-"\n"
-"lxc config metadata edit [<remote>:][container]\n"
-"    Edit the container metadata.yaml, either by launching external editor or "
-"reading STDIN.\n"
-"\n"
-"*Container templates*\n"
-"\n"
-"lxc config template list [<remote>:][container]\n"
-"    List the names of template files for a container.\n"
-"\n"
-"lxc config template show [<remote>:][container] [template]\n"
-"    Show the content of a template file for a container.\n"
-"\n"
-"lxc config template create [<remote>:][container] [template]\n"
-"    Add an empty template file for a container.\n"
-"\n"
-"lxc config template edit [<remote>:][container] [template]\n"
-"    Edit the content of a template file for a container, either by launching "
-"external editor or reading STDIN.\n"
-"\n"
-"lxc config template delete [<remote>:][container] [template]\n"
-"    Delete a template file for a container.\n"
-"\n"
-"\n"
-"*Device management*\n"
-"\n"
-"lxc config device add [<remote>:]<container> <device> <type> [key=value...]\n"
-"    Add a device to a container.\n"
-"\n"
-"lxc config device get [<remote>:]<container> <device> <key>\n"
-"    Get a device property.\n"
-"\n"
-"lxc config device set [<remote>:]<container> <device> <key> <value>\n"
-"    Set a device property.\n"
-"\n"
-"lxc config device unset [<remote>:]<container> <device> <key>\n"
-"    Unset a device property.\n"
-"\n"
-"lxc config device override [<remote>:]<container> <device> [key=value...]\n"
-"    Copy a profile inherited device into local container config.\n"
-"\n"
-"lxc config device list [<remote>:]<container>\n"
-"    List devices for container.\n"
-"\n"
-"lxc config device show [<remote>:]<container>\n"
-"    Show full device details for container.\n"
-"\n"
-"lxc config device remove [<remote>:]<container> <name>...\n"
-"    Remove device from container.\n"
-"\n"
-"*Client trust store management*\n"
-"\n"
-"lxc config trust list [<remote>:]\n"
-"    List all trusted certs.\n"
-"\n"
-"lxc config trust add [<remote>:] <certfile.crt>\n"
-"    Add certfile.crt to trusted hosts.\n"
-"\n"
-"lxc config trust remove [<remote>:] [hostname|fingerprint]\n"
-"    Remove the cert from trusted hosts.\n"
-"\n"
-"*Examples*\n"
-"\n"
-"cat config.yaml | lxc config edit <container>\n"
-"    Update the container configuration from config.yaml.\n"
-"\n"
-"lxc config device add [<remote>:]container1 <device-name> disk source=/share/"
-"c1 path=opt\n"
-"    Will mount the host's /share/c1 onto /opt in the container.\n"
-"\n"
-"lxc config set [<remote>:]<container> limits.cpu 2\n"
-"    Will set a CPU limit of \"2\" for the container.\n"
-"\n"
-"lxc config set core.https_address [::]:8443\n"
-"    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
-"\n"
-"lxc config set core.trust_password blah\n"
-"    Will set the server's trust password to blah."
+#: lxc/storage_volume.go:1240 lxc/storage_volume.go:1241
+msgid "Unset storage volume configuration keys"
 msgstr ""
 
-#: lxc/console.go:31
-msgid ""
-"Usage: lxc console [<remote>:]<container> [-l]\n"
-"\n"
-"Interact with the container's console device and log."
+#: lxc/image.go:835
+#, c-format
+msgid "Uploaded: %s"
 msgstr ""
 
-#: lxc/copy.go:30
-msgid ""
-"Usage: lxc copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>] "
-"[--ephemeral|e] [--profile|-p <profile>...] [--config|-c <key=value>...] [--"
-"container-only] [--target <node>]\n"
-"\n"
-"Copy containers within or in between LXD instances."
+#: lxc/delete.go:47
+msgid "User aborted delete operation"
 msgstr ""
 
-#: lxc/delete.go:27
+#: lxc/utils/cancel.go:40
 msgid ""
-"Usage: lxc delete [<remote>:]<container>[/<snapshot>] "
-"[[<remote>:]<container>[/<snapshot>]...]\n"
-"\n"
-"Delete containers and snapshots."
+"User signaled us three times, exiting. The remote operation will keep "
+"running."
 msgstr ""
 
-#: lxc/exec.go:53
-msgid ""
-"Usage: lxc exec [<remote>:]<container> [-t] [-T] [-n] [--mode=auto|"
-"interactive|non-interactive] [--env KEY=VALUE...] [--] <command line>\n"
-"\n"
-"Execute commands in containers.\n"
-"\n"
-"The command is executed directly using exec, so there is no shell and shell "
-"patterns (variables, file redirects, ...)\n"
-"won't be understood. If you need a shell environment you need to execute the "
-"shell executable, passing the shell commands\n"
-"as arguments, for example:\n"
-"\n"
-"    lxc exec <container> -- sh -c \"cd /tmp && pwd\"\n"
-"\n"
-"Mode defaults to non-interactive, interactive mode is selected if both stdin "
-"AND stdout are terminals (stderr is ignored)."
+#: lxc/query.go:35
+msgid "Wait for the operation to complete"
 msgstr ""
 
-#: lxc/file.go:39
+#: lxc/restore.go:36
 msgid ""
-"Usage: lxc file <subcommand> [options]\n"
-"\n"
-"Manage files in containers.\n"
-"\n"
-"lxc file pull [-r|--recursive] [<remote>:]<container>/<path> "
-"[[<remote>:]<container>/<path>...] <target path>\n"
-"    Pull files from containers.\n"
-"\n"
-"lxc file push [-r|--recursive] [-p|--create-dirs] [--uid=UID] [--gid=GID] [--"
-"mode=MODE] <source path> [<source path>...] [<remote>:]<container>/<path>\n"
-"    Push files into containers.\n"
-"\n"
-"lxc file delete [<remote>:]<container>/<path> [[<remote>:]<container>/"
-"<path>...]\n"
-"    Delete files in containers.\n"
-"\n"
-"lxc file edit [<remote>:]<container>/<path>\n"
-"    Edit files in containers using the default text editor.\n"
-"\n"
-"*Examples*\n"
-"lxc file push /etc/hosts foo/etc/hosts\n"
-"   To push /etc/hosts into the container \"foo\".\n"
-"\n"
-"lxc file pull foo/etc/hosts .\n"
-"   To pull /etc/hosts from the container and write it to the current "
-"directory."
+"Whether or not to restore the container's running state from snapshot (if "
+"available)"
 msgstr ""
 
-#: lxc/finger.go:15
-msgid ""
-"Usage: lxc finger [<remote>:]\n"
-"\n"
-"Check if the LXD server is alive."
+#: lxc/snapshot.go:31
+msgid "Whether or not to snapshot the container's running state"
 msgstr ""
 
-#: lxc/help.go:22
-msgid ""
-"Usage: lxc help [--all]\n"
-"\n"
-"Help page for the LXD client."
+#: lxc/network.go:765 lxc/operation.go:140 lxc/remote.go:436 lxc/remote.go:441
+msgid "YES"
 msgstr ""
 
-#: lxc/image.go:73
-msgid ""
-"Usage: lxc image <subcommand> [options]\n"
-"\n"
-"Manipulate container images.\n"
-"\n"
-"In LXD containers are created from images. Those images were themselves\n"
-"either generated from an existing container or downloaded from an image\n"
-"server.\n"
-"\n"
-"When using remote images, LXD will automatically cache images for you\n"
-"and remove them upon expiration.\n"
-"\n"
-"The image unique identifier is the hash (sha-256) of its representation\n"
-"as a compressed tarball (or for split images, the concatenation of the\n"
-"metadata and rootfs tarballs).\n"
-"\n"
-"Images can be referenced by their full hash, shortest unique partial\n"
-"hash or alias name (if one is set).\n"
-"\n"
-"\n"
-"lxc image import <tarball>|<dir> [<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) or an image directory into the LXD "
-"image store.\n"
-"    Directory import is only available on Linux and must be performed as "
-"root.\n"
-"\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"
-"    Delete one or more images from the LXD image store.\n"
-"\n"
-"lxc image refresh [<remote>:]<image> [[<remote>:]<image>...]\n"
-"    Refresh one or more images from its parent remote.\n"
-"\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"
-"    The target may be an existing directory, file name, or \"-\" to specify\n"
-"    stdout.  The target MUST be a directory when exporting a split image.\n"
-"    If the target is a directory, the image's name (each part's name for\n"
-"    split images) as found in the database will be used for the exported\n"
-"    image.  If the target is a file (not a directory and not stdout), then\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"
-"    Print everything LXD knows about a given image.\n"
-"\n"
-"lxc image list [<remote>:] [filter] [--format csv|json|table|yaml] [-c "
-"<columns>]\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"
-"    The -c option takes a (optionally comma-separated) list of arguments "
-"that\n"
-"    control which image attributes to output when displaying in table or "
-"csv\n"
-"    format.\n"
-"\n"
-"    Default column layout is: lfpdasu\n"
-"\n"
-"    Column shorthand chars:\n"
-"\n"
-"        l - Shortest image alias (and optionally number of other aliases)\n"
-"\n"
-"        L - Newline-separated list of all image aliases\n"
-"\n"
-"        f - Fingerprint\n"
-"\n"
-"        p - Whether image is public\n"
-"\n"
-"        d - Description\n"
-"\n"
-"        a - Architecture\n"
-"\n"
-"        s - Size\n"
-"\n"
-"        u - Upload date\n"
-"\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"
-"    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"
-"    Create a new alias for an existing image.\n"
-"\n"
-"lxc image alias rename [<remote>:]<alias> <new-name>\n"
-"    Rename an alias.\n"
-"\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."
+#: lxc/exec.go:122
+msgid "You can't pass -t and -T at the same time"
 msgstr ""
 
-#: lxc/info.go:27
+#: lxc/exec.go:126
+msgid "You can't pass -t or -T at the same time as --mode"
+msgstr ""
+
+#: lxc/copy.go:78
+msgid "You must specify a destination container name when using --target"
+msgstr ""
+
+#: lxc/copy.go:73 lxc/move.go:188
+msgid "You must specify a source container name"
+msgstr ""
+
+#: lxc/copy.go:68 lxc/move.go:91 lxc/move.go:183
+msgid "You must use the same source and destination remote when using --target"
+msgstr ""
+
+#: lxc/alias.go:53
+msgid "add <alias> <target>"
+msgstr ""
+
+#: lxc/config_trust.go:57
+msgid "add [<remote>:] <cert>"
+msgstr ""
+
+#: lxc/profile.go:100
+msgid "add [<remote>:]<container> <profile>"
+msgstr ""
+
+#: lxc/config_device.go:74
+msgid "add [<remote>:]<container|profile> <device> <type> [key=value...]"
+msgstr ""
+
+#: lxc/remote.go:82
+msgid "add [<remote>] <IP|FQDN|URL>"
+msgstr ""
+
+#: lxc/alias.go:21 lxc/image_alias.go:24
+msgid "alias"
+msgstr ""
+
+#: lxc/profile.go:160
+msgid "assign [<remote>:]<container> <profiles>"
+msgstr ""
+
+#: lxc/network.go:102
+msgid "attach [<remote>:]<network> <container> [device name] [interface name]"
+msgstr ""
+
+#: lxc/storage_volume.go:120
+msgid "attach [<remote>:]<pool> <volume> <container> [device name] <path>"
+msgstr ""
+
+#: lxc/storage_volume.go:199
 msgid ""
-"Usage: lxc info [<remote>:][<container>] [--show-log] [--resources]\n"
-"\n"
-"Show container or server information.\n"
-"\n"
-"lxc info [<remote>:]<container> [--show-log]\n"
-"    For container information.\n"
-"\n"
-"lxc info [<remote>:] [--resources]\n"
-"    For LXD server information."
+"attach-profile [<remote:>]<pool> <volume> <profile> [device name] <path>"
 msgstr ""
 
-#: lxc/init.go:79
+#: lxc/network.go:175
 msgid ""
-"Usage: lxc init [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
-"profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
-"<node>]\n"
-"\n"
-"Create containers from images.\n"
-"\n"
-"Not specifying -p will result in the default profile.\n"
-"Specifying \"-p\" with no argument will result in no profile.\n"
-"\n"
-"Examples:\n"
-"    lxc init ubuntu:16.04 u1"
+"attach-profile [<remote>:]<network> <profile> [device name] [interface name]"
+msgstr ""
+
+#: lxc/cluster.go:24
+msgid "cluster"
+msgstr ""
+
+#: lxc/config.go:27
+msgid "config"
+msgstr ""
+
+#: lxc/console.go:30
+msgid "console [<remote>:]<container>"
+msgstr ""
+
+#: lxc/storage_volume.go:280
+msgid "copy <pool>/<volume> <pool>/<volume>"
+msgstr ""
+
+#: lxc/image.go:128
+msgid "copy [<remote>:]<image> <remote>:"
+msgstr ""
+
+#: lxc/profile.go:238
+msgid "copy [<remote>:]<profile> [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/copy.go:32
+msgid "copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>]"
+msgstr ""
+
+#: lxc/image_alias.go:57
+msgid "create [<remote>:]<alias> <fingerprint>"
+msgstr ""
+
+#: lxc/config_template.go:65
+msgid "create [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/network.go:248
+msgid "create [<remote>:]<network> [key=value...]"
+msgstr ""
+
+#: lxc/storage.go:87
+msgid "create [<remote>:]<pool> <driver> [key=value]..."
+msgstr ""
+
+#: lxc/storage_volume.go:424
+msgid "create [<remote>:]<pool> <volume> [key=value]..."
+msgstr ""
+
+#: lxc/profile.go:295
+msgid "create [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/remote.go:453
+msgid "default"
+msgstr ""
+
+#: lxc/image_alias.go:103
+msgid "delete [<remote>:]<alias>"
+msgstr ""
+
+#: lxc/config_template.go:107
+msgid "delete [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/file.go:70
+msgid "delete [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...]"
+msgstr ""
+
+#: lxc/delete.go:27
+msgid ""
+"delete [<remote>:]<container>[/<snapshot>] [[<remote>:]<container>[/"
+"<snapshot>]...]"
+msgstr ""
+
+#: lxc/image.go:258
+msgid "delete [<remote>:]<image> [[<remote>:]<image>...]"
+msgstr ""
+
+#: lxc/network.go:317
+msgid "delete [<remote>:]<network>"
+msgstr ""
+
+#: lxc/operation.go:51
+msgid "delete [<remote>:]<operation>"
+msgstr ""
+
+#: lxc/storage.go:158
+msgid "delete [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:498
+msgid "delete [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:345
+msgid "delete [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/storage.go:431
+msgid "description"
+msgstr ""
+
+#: lxc/network.go:365
+msgid "detach [<remote>:]<network> <container> [device name]"
+msgstr ""
+
+#: lxc/storage_volume.go:559
+msgid "detach [<remote>:]<pool> <volume> <container> [device name]"
+msgstr ""
+
+#: lxc/storage_volume.go:641
+msgid "detach-profile [<remote:>]<pool> <volume> <profile> [device name]"
+msgstr ""
+
+#: lxc/network.go:450
+msgid "detach-profile [<remote>:]<network> <container> [device name]"
+msgstr ""
+
+#: lxc/config_device.go:22
+msgid "device"
+msgstr ""
+
+#: lxc/init.go:223
+msgid "didn't get any affected image, container or snapshot from server"
+msgstr ""
+
+#: lxc/image.go:819
+msgid "disabled"
+msgstr ""
+
+#: lxc/storage.go:430
+msgid "driver"
+msgstr ""
+
+#: lxc/config_template.go:150
+msgid "edit [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/file.go:120
+msgid "edit [<remote>:]<container>/<path>"
+msgstr ""
+
+#: lxc/image.go:310
+msgid "edit [<remote>:]<image>"
+msgstr ""
+
+#: lxc/network.go:535
+msgid "edit [<remote>:]<network>"
+msgstr ""
+
+#: lxc/storage.go:206
+msgid "edit [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:722
+msgid "edit [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:394
+msgid "edit [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/config.go:86 lxc/config_metadata.go:52
+msgid "edit [<remote>:][container]"
+msgstr ""
+
+#: lxc/image.go:821
+msgid "enabled"
+msgstr ""
+
+#: lxc/action.go:234
+#, c-format
+msgid "error: %v"
+msgstr ""
+
+#: lxc/exec.go:37
+msgid "exec [<remote>:]<container> [flags] [--] <command line>"
+msgstr ""
+
+#: lxc/image.go:433
+msgid "export [<remote>:]<image> [target]"
+msgstr ""
+
+#: lxc/file.go:38
+msgid "file"
+msgstr ""
+
+#: lxc/config_device.go:177
+msgid "get [<remote>:]<container|profile> <device> <key>"
+msgstr ""
+
+#: lxc/network.go:658
+msgid "get [<remote>:]<network> <key>"
+msgstr ""
+
+#: lxc/storage.go:326
+msgid "get [<remote>:]<pool> <key>"
+msgstr ""
+
+#: lxc/storage_volume.go:851
+msgid "get [<remote>:]<pool> <volume> <key>"
+msgstr ""
+
+#: lxc/profile.go:518
+msgid "get [<remote>:]<profile> <key>"
+msgstr ""
+
+#: lxc/config.go:287
+msgid "get [<remote>:][container] <key>"
+msgstr ""
+
+#: lxc/remote.go:378
+msgid "get-default"
+msgstr ""
+
+#: lxc/image.go:40
+msgid "image"
+msgstr ""
+
+#: lxc/image.go:569
+msgid ""
+"import <tarball>|<directory>|<URL> [<rootfs tarball>] [<remote>:] "
+"[key=value...]"
+msgstr ""
+
+#: lxc/storage.go:428
+msgid "info"
+msgstr ""
+
+#: lxc/image.go:774
+msgid "info [<remote>:]<image>"
+msgstr ""
+
+#: lxc/storage.go:381
+msgid "info [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/info.go:27
+msgid "info [<remote>:][<container>]"
+msgstr ""
+
+#: lxc/init.go:33
+msgid "init [<remote>:]<image> [<remote>:][<name>]"
 msgstr ""
 
 #: lxc/launch.go:20
+msgid "launch [<remote>:]<image> [<remote>:][<name>]"
+msgstr ""
+
+#: lxc/alias.go:96 lxc/remote.go:411
+msgid "list"
+msgstr ""
+
+#: lxc/cluster.go:56 lxc/config_trust.go:112 lxc/network.go:716
+#: lxc/operation.go:95 lxc/profile.go:565 lxc/storage.go:488
+msgid "list [<remote>:]"
+msgstr ""
+
+#: lxc/image.go:887
+msgid "list [<remote>:] [filter]"
+msgstr ""
+
+#: lxc/image_alias.go:146
+msgid "list [<remote>:] [filters...]"
+msgstr ""
+
+#: lxc/list.go:45
+msgid "list [<remote>:] [filters]"
+msgstr ""
+
+#: lxc/config_template.go:234
+msgid "list [<remote>:]<container>"
+msgstr ""
+
+#: lxc/config_device.go:249
+msgid "list [<remote>:]<container|profile>"
+msgstr ""
+
+#: lxc/storage_volume.go:915
+msgid "list [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/network.go:806
+msgid "list-leases [<remote>:]<network>"
+msgstr ""
+
+#: lxc/alias.go:57
 msgid ""
-"Usage: lxc launch [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
-"profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
-"<node>]\n"
-"\n"
-"Create and start containers from images.\n"
-"\n"
-"Not specifying -p will result in the default profile.\n"
-"Specifying \"-p\" with no argument will result in no profile.\n"
-"\n"
-"Examples:\n"
-"    lxc launch ubuntu:16.04 u1"
+"lxc alias add list list -c ns46S\n"
+"    Overwrite the \"list\" command to pass -c ns46S."
 msgstr ""
 
-#: lxc/list.go:44
+#: lxc/alias.go:200
 msgid ""
-"Usage: lxc list [<remote>:] [filters] [--format csv|json|table|yaml] [-c "
-"<columns>] [--fast]\n"
-"\n"
-"List the existing containers.\n"
-"\n"
-"Default column layout: ns46tS\n"
-"Fast column layout: nsacPt\n"
-"\n"
-"*Filters*\n"
-"A single keyword like \"web\" which will list any container with a name "
-"starting by \"web\".\n"
-"\n"
-"A regular expression on the container name. (e.g. .*web.*01$).\n"
-"\n"
-"A key/value pair referring to a configuration item. For those, the namespace "
-"can be abbreviated to the smallest unambiguous identifier.\n"
-"\t- \"user.blah=abc\" will list all containers with the \"blah\" user "
-"property set to \"abc\".\n"
-"\n"
-"\t- \"u.blah=abc\" will do the same\n"
-"\n"
-"\t- \"security.privileged=true\" will list all privileged containers\n"
-"\n"
-"\t- \"s.privileged=true\" will do the same\n"
-"\n"
-"A regular expression matching a configuration item or its value. (e.g. "
-"volatile.eth0.hwaddr=00:16:3e:.*).\n"
-"\n"
-"*Columns*\n"
-"The -c option takes a comma separated list of arguments that control\n"
-"which container attributes to output when displaying in table or csv\n"
-"format.\n"
-"\n"
-"Column arguments are either pre-defined shorthand chars (see below),\n"
-"or (extended) config keys.\n"
-"\n"
-"Commas between consecutive shorthand chars are optional.\n"
-"\n"
-"Pre-defined column shorthand chars:\n"
-"\n"
-"\t4 - IPv4 address\n"
-"\n"
-"\t6 - IPv6 address\n"
-"\n"
-"\ta - Architecture\n"
-"\n"
-"\tb - Storage pool\n"
-"\n"
-"\tc - Creation date\n"
-"\n"
-"\td - Description\n"
-"\n"
-"\tl - Last used date\n"
-"\n"
-"\tn - Name\n"
-"\n"
-"\tN - Number of Processes\n"
-"\n"
-"\tp - PID of the container's init process\n"
-"\n"
-"\tP - Profiles\n"
-"\n"
-"\ts - State\n"
-"\n"
-"\tS - Number of snapshots\n"
-"\n"
-"\tt - Type (persistent or ephemeral)\n"
-"\n"
-"\tL - Location of the container (e.g. its node)\n"
-"\n"
-"Custom columns are defined with \"key[:name][:maxWidth]\":\n"
-"\n"
-"\tKEY: The (extended) config key to display\n"
-"\n"
-"\tNAME: Name to display in the column header.\n"
-"\tDefaults to the key if not specified or empty.\n"
-"\n"
-"\tMAXWIDTH: Max width of the column (longer results are truncated).\n"
-"\tDefaults to -1 (unlimited). Use 0 to limit to the column header size.\n"
-"\n"
-"*Examples*\n"
-"lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:"
-"MAC\n"
-"\tShows a list of containers using the \"NAME\", \"BASE IMAGE\", \"STATE\", "
-"\"IPV4\",\n"
-"\t\"IPV6\" and \"MAC\" columns.\n"
+"lxc alias remove my-list\n"
+"    Remove the \"my-list\" alias."
+msgstr ""
+
+#: lxc/alias.go:149
+msgid ""
+"lxc alias rename list my-list\n"
+"    Rename existing alias \"list\" to \"my-list\"."
+msgstr ""
+
+#: lxc/config_device.go:78
+msgid ""
+"lxc config device add [<remote>:]container1 <device-name> disk source=/share/"
+"c1 path=opt\n"
+"    Will mount the host's /share/c1 onto /opt in the container."
+msgstr ""
+
+#: lxc/config.go:90
+msgid ""
+"lxc config edit <container> < container.yaml\n"
+"    Update the container configuration from config.yaml."
+msgstr ""
+
+#: lxc/config.go:357
+msgid ""
+"lxc config set [<remote>:]<container> limits.cpu 2\n"
+"    Will set a CPU limit of \"2\" for the container.\n"
 "\n"
-"\t\"BASE IMAGE\" and \"MAC\" are custom columns generated from container "
-"configuration keys.\n"
+"lxc config set core.https_address [::]:8443\n"
+"    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
 "\n"
-"lxc list -c ns,user.comment:comment\n"
-"\tList images with their running state and user comment. "
+"lxc config set core.trust_password blah\n"
+"    Will set the server's trust password to blah."
 msgstr ""
 
-#: lxc/manpage.go:20
+#: lxc/file.go:187
 msgid ""
-"Usage: lxc manpage <directory>\n"
-"\n"
-"Generate all the LXD manpages."
+"lxc file pull foo/etc/hosts .\n"
+"   To pull /etc/hosts from the container and write it to the current "
+"directory."
 msgstr ""
 
-#: lxc/monitor.go:49
+#: lxc/file.go:326
 msgid ""
-"Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
-"\n"
-"Monitor a local or remote LXD server.\n"
+"lxc file push /etc/hosts foo/etc/hosts\n"
+"   To push /etc/hosts into the container \"foo\"."
+msgstr ""
+
+#: lxc/image.go:314
+msgid ""
+"lxc image edit <image>\n"
+"    Launch a text editor to edit the properties\n"
 "\n"
-"By default the monitor will listen to all message types.\n"
+"lxc image edit <image> < image.yaml\n"
+"    Load the image properties from a YAML file"
+msgstr ""
+
+#: lxc/info.go:31
+msgid ""
+"lxc info [<remote>:]<container> [--show-log]\n"
+"    For container information.\n"
 "\n"
-"Message types to listen for can be specified with --type.\n"
+"lxc info [<remote>:] [--resources]\n"
+"    For LXD server information."
+msgstr ""
+
+#: lxc/init.go:37
+msgid "lxc init ubuntu:16.04 u1"
+msgstr ""
+
+#: lxc/launch.go:24
+msgid "lxc launch ubuntu:16.04 u1"
+msgstr ""
+
+#: lxc/list.go:103
+msgid ""
+"lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:"
+"MAC\n"
+"  Show containers using the \"NAME\", \"BASE IMAGE\", \"STATE\", \"IPV4\", "
+"\"IPV6\" and \"MAC\" columns.\n"
+"  \"BASE IMAGE\" and \"MAC\" are custom columns generated from container "
+"configuration keys.\n"
 "\n"
-"*Examples*\n"
+"lxc list -c ns,user.comment:comment\n"
+"  List images with their running state and user comment."
+msgstr ""
+
+#: lxc/monitor.go:35
+msgid ""
 "lxc monitor --type=logging\n"
 "    Only show log messages.\n"
 "\n"
 "lxc monitor --pretty --type=logging --loglevel=info\n"
 "    Show a pretty log of messages with info level or higher.\n"
+"\n"
+"lxc monitor --type=lifecycle\n"
+"    Only show lifecycle events."
 msgstr ""
 
-#: lxc/move.go:26
+#: lxc/move.go:33
 msgid ""
-"Usage: lxc move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
-"<snapshot>]] [--container-only] [--target <node>]\n"
-"\n"
-"Move containers within or in between LXD instances.\n"
-"\n"
 "lxc move [<remote>:]<source container> [<remote>:][<destination container>] "
 "[--container-only]\n"
 "    Move a container between two hosts, renaming it if destination name "
@@ -1946,160 +2837,14 @@ msgid ""
 "    Rename a snapshot."
 msgstr ""
 
-#: lxc/network.go:52
-msgid ""
-"Usage: lxc network <subcommand> [options]\n"
-"\n"
-"Manage and attach containers to networks.\n"
-"\n"
-"lxc network list [<remote>:]\n"
-"    List available networks.\n"
-"\n"
-"lxc network list-leases [<remote>:]<network>\n"
-"    List the DHCP leases for the network\n"
-"\n"
-"lxc network show [<remote>:]<network> [--target <node>]\n"
-"    Show details of a network.\n"
-"\n"
-"lxc network create [<remote>:]<network> [key=value...] [--target <node>]\n"
-"    Create a network.\n"
-"\n"
-"lxc network get [<remote>:]<network> <key> [--target <node>]\n"
-"    Get network configuration.\n"
-"\n"
-"lxc network set [<remote>:]<network> <key> <value>\n"
-"    Set network configuration.\n"
-"\n"
-"lxc network unset [<remote>:]<network> <key>\n"
-"    Unset network configuration.\n"
-"\n"
-"lxc network delete [<remote>:]<network>\n"
-"    Delete a network.\n"
-"\n"
-"lxc network edit [<remote>:]<network>\n"
-"    Edit network, either by launching external editor or reading STDIN.\n"
-"\n"
-"lxc network rename [<remote>:]<network> <new-name>\n"
-"    Rename a network.\n"
-"\n"
-"lxc network attach [<remote>:]<network> <container> [device name] [interface "
-"name]\n"
-"    Attach a network interface connecting the network to a specified "
-"container.\n"
-"\n"
-"lxc network attach-profile [<remote>:]<network> <profile> [device name] "
-"[interface name]\n"
-"    Attach a network interface connecting the network to a specified "
-"profile.\n"
-"\n"
-"lxc network detach [<remote>:]<network> <container> [device name]\n"
-"    Remove a network interface connecting the network to a specified "
-"container.\n"
-"\n"
-"lxc network detach-profile [<remote>:]<network> <container> [device name]\n"
-"    Remove a network interface connecting the network to a specified "
-"profile.\n"
-"\n"
-"*Examples*\n"
-"cat network.yaml | lxc network edit <network>\n"
-"    Update a network using the content of network.yaml"
-msgstr ""
-
-#: lxc/operation.go:25
+#: lxc/operation.go:176
 msgid ""
-"Usage: lxc operation <subcommand> [options]\n"
-"\n"
-"List, show and delete background operations.\n"
-"\n"
-"lxc operation list [<remote>:]\n"
-"    List background operations.\n"
-"\n"
-"lxc operation show [<remote>:]<operation>\n"
-"    Show details on a background operation.\n"
-"\n"
-"lxc operation delete [<remote>:]<operation>\n"
-"    Delete a background operation (will attempt to cancel).\n"
-"\n"
-"*Examples*\n"
 "lxc operation show 344a79e4-d88a-45bf-9c39-c72c26f6ab8a\n"
 "    Show details on that operation UUID"
 msgstr ""
 
-#: lxc/profile.go:51
+#: lxc/profile.go:165
 msgid ""
-"Usage: lxc profile <subcommand> [options]\n"
-"\n"
-"Manage container configuration profiles.\n"
-"\n"
-"*Profile configuration*\n"
-"lxc profile list [<remote>:]\n"
-"    List available profiles.\n"
-"\n"
-"lxc profile show [<remote>:]<profile>\n"
-"    Show details of a profile.\n"
-"\n"
-"lxc profile create [<remote>:]<profile>\n"
-"    Create a profile.\n"
-"\n"
-"lxc profile copy [<remote>:]<profile> [<remote>:]<profile>\n"
-"    Copy the profile.\n"
-"\n"
-"lxc profile get [<remote>:]<profile> <key>\n"
-"    Get profile configuration.\n"
-"\n"
-"lxc profile set [<remote>:]<profile> <key> <value>\n"
-"    Set profile configuration.\n"
-"\n"
-"lxc profile unset [<remote>:]<profile> <key>\n"
-"    Unset profile configuration.\n"
-"\n"
-"lxc profile delete [<remote>:]<profile>\n"
-"    Delete a profile.\n"
-"\n"
-"lxc profile edit [<remote>:]<profile>\n"
-"    Edit profile, either by launching external editor or reading STDIN.\n"
-"\n"
-"lxc profile rename [<remote>:]<profile> <new-name>\n"
-"    Rename a profile.\n"
-"\n"
-"*Profile assignment*\n"
-"lxc profile assign [<remote>:]<container> <profiles>\n"
-"    Replace the current set of profiles for the container by the one "
-"provided.\n"
-"\n"
-"lxc profile add [<remote>:]<container> <profile>\n"
-"    Add a profile to a container\n"
-"\n"
-"lxc profile remove [<remote>:]<container> <profile>\n"
-"    Remove the profile from a container\n"
-"\n"
-"*Device management*\n"
-"lxc profile device list [<remote>:]<profile>\n"
-"    List devices in the given profile.\n"
-"\n"
-"lxc profile device show [<remote>:]<profile>\n"
-"    Show full device details in the given profile.\n"
-"\n"
-"lxc profile device remove [<remote>:]<profile> <name>\n"
-"    Remove a device from a profile.\n"
-"\n"
-"lxc profile device get [<remote>:]<profile> <name> <key>\n"
-"    Get a device property.\n"
-"\n"
-"lxc profile device set [<remote>:]<profile> <name> <key> <value>\n"
-"    Set a device property.\n"
-"\n"
-"lxc profile device unset [<remote>:]<profile> <name> <key>\n"
-"    Unset a device property.\n"
-"\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.\n"
-"\n"
-"*Examples*\n"
-"cat profile.yaml | lxc profile edit <profile>\n"
-"    Update a profile using the content of profile.yaml\n"
-"\n"
 "lxc profile assign foo default,bar\n"
 "    Set the profiles for \"foo\" to \"default\" and \"bar\".\n"
 "\n"
@@ -2110,72 +2855,26 @@ msgid ""
 "    Remove all profile from \"foo\""
 msgstr ""
 
-#: lxc/publish.go:28
+#: lxc/profile.go:398
 msgid ""
-"Usage: lxc publish [<remote>:]<container>[/<snapshot>] [<remote>:] [--"
-"alias=ALIAS...] [prop-key=prop-value...]\n"
-"\n"
-"Publish containers as images."
+"lxc profile edit <profile> < profile.yaml\n"
+"    Update a profile using the content of profile.yaml"
 msgstr ""
 
-#: lxc/query.go:25
+#: lxc/query.go:29
 msgid ""
-"Usage: lxc query [-X <action>] [-d <data>] [--wait] [--raw] [<remote>:]<API "
-"path>\n"
-"\n"
-"Send a raw query to LXD.\n"
-"\n"
-"*Examples*\n"
 "lxc query -X DELETE --wait /1.0/containers/c1\n"
 "    Delete local container \"c1\"."
 msgstr ""
 
-#: lxc/remote.go:40
-msgid ""
-"Usage: lxc remote <subcommand> [options]\n"
-"\n"
-"Manage the list of remote LXD servers.\n"
-"\n"
-"lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--"
-"password=PASSWORD] [--public] [--protocol=PROTOCOL] [--auth-type=AUTH_TYPE]\n"
-"    Add the remote <remote> at <url>.\n"
-"\n"
-"lxc remote remove <remote>\n"
-"    Remove the remote <remote>.\n"
-"\n"
-"lxc remote list\n"
-"    List all remotes.\n"
-"\n"
-"lxc remote rename <old name> <new name>\n"
-"    Rename remote <old name> to <new name>.\n"
-"\n"
-"lxc remote set-url <remote> <url>\n"
-"    Update <remote>'s url to <url>.\n"
-"\n"
-"lxc remote set-default <remote>\n"
-"    Set the default remote.\n"
-"\n"
-"lxc remote get-default\n"
-"    Print the default remote."
-msgstr ""
-
-#: lxc/rename.go:18
+#: lxc/snapshot.go:26
 msgid ""
-"Usage: lxc rename [<remote>:]<container>[/<snapshot>] [<container>[/"
-"<snapshot>]]\n"
-"\n"
-"Rename a container or snapshot."
+"lxc snapshot u1 snap0\n"
+"    Create a snapshot of \"u1\" called \"snap0\"."
 msgstr ""
 
-#: lxc/restore.go:22
+#: lxc/restore.go:28
 msgid ""
-"Usage: lxc restore [<remote>:]<container> <snapshot> [--stateful]\n"
-"\n"
-"Restore containers from snapshots.\n"
-"\n"
-"If --stateful is passed, then the running state will be restored too.\n"
-"\n"
-"*Examples*\n"
 "lxc snapshot u1 snap0\n"
 "    Create the snapshot.\n"
 "\n"
@@ -2183,121 +2882,20 @@ msgid ""
 "    Restore the snapshot."
 msgstr ""
 
-#: lxc/snapshot.go:19
+#: lxc/storage.go:210
 msgid ""
-"Usage: lxc snapshot [<remote>:]<container> <snapshot name> [--stateful]\n"
-"\n"
-"Create container snapshots.\n"
-"\n"
-"When --stateful is used, LXD attempts to checkpoint the container's\n"
-"running state, including process memory state, TCP connections, ...\n"
-"\n"
-"*Examples*\n"
-"lxc snapshot u1 snap0\n"
-"    Create a snapshot of \"u1\" called \"snap0\"."
+"lxc storage edit [<remote>:]<pool> < pool.yaml\n"
+"    Update a storage pool using the content of pool.yaml."
 msgstr ""
 
-#: lxc/storage.go:67
+#: lxc/storage_volume.go:726
+msgid ""
+"lxc storage volume edit [<remote>:]<pool> <volume> < volume.yaml\n"
+"    Update a storage volume using the content of pool.yaml."
+msgstr ""
+
+#: lxc/storage_volume.go:1168
 msgid ""
-"Usage: lxc storage <subcommand> [options]\n"
-"\n"
-"Manage storage pools and volumes.\n"
-"\n"
-"*Storage pools*\n"
-"lxc storage list [<remote>:]\n"
-"    List available storage pools.\n"
-"\n"
-"lxc storage show [<remote>:]<pool> [--resources] [--target <node>]\n"
-"    Show details of a storage pool.\n"
-"\n"
-"lxc storage info [<remote>:]<pool> [--bytes]\n"
-"    Show information of a storage pool in yaml format.\n"
-"\n"
-"lxc storage create [<remote>:]<pool> <driver> [key=value]... [--target "
-"<node>]\n"
-"    Create a storage pool.\n"
-"\n"
-"lxc storage get [<remote>:]<pool> <key>\n"
-"    Get storage pool configuration.\n"
-"\n"
-"lxc storage set [<remote>:]<pool> <key> <value>\n"
-"    Set storage pool configuration.\n"
-"\n"
-"lxc storage unset [<remote>:]<pool> <key>\n"
-"    Unset storage pool configuration.\n"
-"\n"
-"lxc storage delete [<remote>:]<pool>\n"
-"    Delete a storage pool.\n"
-"\n"
-"lxc storage edit [<remote>:]<pool>\n"
-"    Edit storage pool, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"*Storage volumes*\n"
-"lxc storage volume list [<remote>:]<pool>\n"
-"    List available storage volumes on a storage pool.\n"
-"\n"
-"lxc storage volume show [<remote>:]<pool> <volume> [--target <node>]\n"
-"   Show details of a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume create [<remote>:]<pool> <volume> [key=value]... [--"
-"target <node>]\n"
-"    Create a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume rename [<remote>:]<pool> <old name> <new name> [--target "
-"<node>]\n"
-"    Rename a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume get [<remote>:]<pool> <volume> <key> [--target <node>]\n"
-"    Get storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume set [<remote>:]<pool> <volume> <key> <value> [--target "
-"<node>]\n"
-"    Set storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume unset [<remote>:]<pool> <volume> <key> [--target <node>]\n"
-"    Unset storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume delete [<remote>:]<pool> <volume> [--target <node>]\n"
-"    Delete a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume edit [<remote>:]<pool> <volume> [--target <node>]\n"
-"    Edit storage volume, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"lxc storage volume attach [<remote>:]<pool> <volume> <container> [device "
-"name] <path>\n"
-"    Attach a storage volume to the specified container.\n"
-"\n"
-"lxc storage volume attach-profile [<remote:>]<pool> <volume> <profile> "
-"[device name] <path>\n"
-"    Attach a storage volume to the specified profile.\n"
-"\n"
-"lxc storage volume detach [<remote>:]<pool> <volume> <container> [device "
-"name]\n"
-"    Detach a storage volume from the specified container.\n"
-"\n"
-"lxc storage volume detach-profile [<remote:>]<pool> <volume> <profile> "
-"[device name]\n"
-"\tDetach a storage volume from the specified profile.\n"
-"\n"
-"lxc storage volume copy <pool>/<volume> <pool>/<volume> [--config|-c "
-"<key=value>...]\n"
-"    Copy an existing volume to a new volume at the specified pool.\n"
-"\n"
-"lxc storage volume move [<pool>/]<volume> [<pool>/]<volume>\n"
-"    Move an existing volume to the specified pool.\n"
-"\n"
-"Unless specified through a prefix, all volume operations affect \"custom"
-"\" (user created) volumes.\n"
-"\n"
-"*Examples*\n"
-"cat pool.yaml | lxc storage edit [<remote>:]<pool>\n"
-"    Update a storage pool using the content of pool.yaml.\n"
-"\n"
-"cat pool.yaml | lxc storage volume edit [<remote>:]<pool> <volume>\n"
-"    Update a storage volume using the content of pool.yaml.\n"
-"\n"
 "lxc storage volume show default data\n"
 "    Will show the properties of a custom volume called \"data\" in the "
 "\"default\" pool.\n"
@@ -2307,191 +2905,303 @@ msgid ""
 "\" in the \"default\" pool."
 msgstr ""
 
-#: lxc/version.go:18
+#: lxc/config_metadata.go:27
+msgid "metadata"
+msgstr ""
+
+#: lxc/monitor.go:29
+msgid "monitor [<remote>:]"
+msgstr ""
+
+#: lxc/storage_volume.go:991
+msgid "move [<pool>/]<volume> [<pool>/]<volume>"
+msgstr ""
+
+#: lxc/move.go:28
 msgid ""
-"Usage: lxc version\n"
-"\n"
-"Print the version number of this client tool."
+"move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
+"<snapshot>]]"
 msgstr ""
 
-#: lxc/delete.go:46
-msgid "User aborted delete operation."
+#: lxc/storage.go:429
+msgid "name"
 msgstr ""
 
-#: lxc/utils/cancel.go:40
+#: lxc/network.go:30
+msgid "network"
+msgstr ""
+
+#: lxc/image.go:809 lxc/image.go:814 lxc/image.go:977
+msgid "no"
+msgstr ""
+
+#: lxc/remote.go:253
+msgid "ok (y/n)?"
+msgstr ""
+
+#: lxc/operation.go:23
+msgid "operation"
+msgstr ""
+
+#: lxc/config_device.go:316
+msgid "override [<remote>:]<container> <device> [key=value...]"
+msgstr ""
+
+#: lxc/action.go:47
+msgid "pause [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/config.go:52
+msgid "please use `lxc profile`"
+msgstr ""
+
+#: lxc/profile.go:28
+msgid "profile"
+msgstr ""
+
+#: lxc/publish.go:32
 msgid ""
-"User signaled us three times, exiting. The remote operation will keep "
-"running."
+"publish [<remote>:]<container>[/<snapshot>] [<remote>:] [flags] [prop-"
+"key=prop-value...]"
 msgstr ""
 
-#: lxc/query.go:36
-msgid "Wait for the operation to complete"
+#: lxc/file.go:183
+msgid ""
+"pull [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...] "
+"<target path>"
 msgstr ""
 
-#: lxc/restore.go:38
+#: lxc/file.go:322
 msgid ""
-"Whether or not to restore the container's running state from snapshot (if "
-"available)"
+"push <source path> [<remote>:]<container>/<path> [[<remote>:]<container>/"
+"<path>...]"
 msgstr ""
 
-#: lxc/snapshot.go:33
-msgid "Whether or not to snapshot the container's running state"
+#: lxc/query.go:25
+msgid "query [<remote>:]<API path>"
 msgstr ""
 
-#: lxc/network.go:560 lxc/operation.go:141 lxc/remote.go:382 lxc/remote.go:387
-msgid "YES"
+#: lxc/image.go:1210
+msgid "refresh [<remote>:]<image> [[<remote>:]<image>...]"
 msgstr ""
 
-#: lxc/exec.go:132
-msgid "You can't pass -t and -T at the same time"
+#: lxc/remote.go:32
+msgid "remote"
 msgstr ""
 
-#: lxc/exec.go:136
-msgid "You can't pass -t or -T at the same time as --mode"
+#: lxc/alias.go:195
+msgid "remove <alias>"
 msgstr ""
 
-#: lxc/copy.go:76
-msgid "You must specify a destination container name when using --target"
+#: lxc/remote.go:546
+msgid "remove <remote>"
 msgstr ""
 
-#: lxc/copy.go:71
-msgid "You must specify a source container name"
+#: lxc/config_trust.go:194
+msgid "remove [<remote>:] <hostname|fingerprint>"
 msgstr ""
 
-#: lxc/copy.go:66 lxc/move.go:71
-msgid "You must use the same source and destination remote when using --target"
+#: lxc/profile.go:630
+msgid "remove [<remote>:]<container> <profile>"
 msgstr ""
 
-#: lxc/main.go:72
-msgid "`lxc config profile` is deprecated, please use `lxc profile`"
+#: lxc/config_device.go:402
+msgid "remove [<remote>:]<container|profile> <name>..."
 msgstr ""
 
-#: lxc/alias.go:56 lxc/alias.go:102
-#, c-format
-msgid "alias %s already exists"
+#: lxc/cluster.go:235
+msgid "remove [<remote>:]<member>"
 msgstr ""
 
-#: lxc/alias.go:68 lxc/alias.go:97
-#, c-format
-msgid "alias %s doesn't exist"
+#: lxc/alias.go:144
+msgid "rename <old alias> <new alias>"
 msgstr ""
 
-#: lxc/remote.go:370
-msgid "can't remove the default remote"
+#: lxc/remote.go:484
+msgid "rename <remote> <new-name>"
 msgstr ""
 
-#: lxc/file.go:296
-msgid "can't supply uid/gid/mode in recursive mode"
+#: lxc/image_alias.go:247
+msgid "rename [<remote>:]<alias> <new-name>"
 msgstr ""
 
-#: lxc/remote.go:399
-msgid "default"
+#: lxc/rename.go:18
+msgid "rename [<remote>:]<container>[/<snapshot>] <container>[/<snapshot>]"
 msgstr ""
 
-#: lxc/storage.go:856
-msgid "description"
+#: lxc/cluster.go:189
+msgid "rename [<remote>:]<member> <new-name>"
 msgstr ""
 
-#: lxc/init.go:315
-msgid "didn't get any affected image, container or snapshot from server"
+#: lxc/network.go:870
+msgid "rename [<remote>:]<network> <new-name>"
 msgstr ""
 
-#: lxc/image.go:594
-msgid "disabled"
+#: lxc/storage_volume.go:1023
+msgid "rename [<remote>:]<pool> <old name> <new name>"
 msgstr ""
 
-#: lxc/storage.go:855
-msgid "driver"
+#: lxc/profile.go:702
+msgid "rename [<remote>:]<profile> <new-name>"
 msgstr ""
 
-#: lxc/image.go:596
-msgid "enabled"
+#: lxc/action.go:67
+msgid "restart [<remote>:]<container> [[<remote>:]<container>...]"
 msgstr ""
 
-#: lxc/action.go:155 lxc/main.go:33 lxc/main.go:191
-#, c-format
-msgid "error: %v"
+#: lxc/restore.go:22
+msgid "restore [<remote>:]<container> <snapshot>"
 msgstr ""
 
-#: lxc/help.go:37 lxc/main.go:133
-#, c-format
-msgid "error: unknown command: %s"
+#: lxc/config_device.go:491
+msgid "set [<remote>:]<container|profile> <device> <key> <value>"
 msgstr ""
 
-#: lxc/storage.go:853
-msgid "info"
+#: lxc/network.go:918
+msgid "set [<remote>:]<network> <key> <value>"
 msgstr ""
 
-#: lxc/storage.go:854
-msgid "name"
+#: lxc/storage.go:571
+msgid "set [<remote>:]<pool> <key> <value>"
 msgstr ""
 
-#: lxc/image.go:210 lxc/image.go:584 lxc/image.go:589
-msgid "no"
+#: lxc/storage_volume.go:1087
+msgid "set [<remote>:]<pool> <volume> <key> <value>"
 msgstr ""
 
-#: lxc/remote.go:204
-msgid "ok (y/n)?"
+#: lxc/profile.go:751
+msgid "set [<remote>:]<profile> <key> <value>"
 msgstr ""
 
-#: lxc/main.go:368 lxc/main.go:372
-#, c-format
-msgid "processing aliases failed %s\n"
+#: lxc/config.go:353
+msgid "set [<remote>:][container] <key> <value>"
 msgstr ""
 
-#: lxc/file.go:588
-msgid "recursive edit doesn't make sense :("
+#: lxc/remote.go:596
+msgid "set-default <remote>"
 msgstr ""
 
-#: lxc/remote.go:436
-#, c-format
-msgid "remote %s already exists"
+#: lxc/remote.go:634
+msgid "set-url <remote> <URL>"
 msgstr ""
 
-#: lxc/remote.go:362 lxc/remote.go:428 lxc/remote.go:463 lxc/remote.go:479
-#, c-format
-msgid "remote %s doesn't exist"
+#: lxc/config_template.go:296
+msgid "show [<remote>:]<container> <template>"
 msgstr ""
 
-#: lxc/remote.go:345
-#, c-format
-msgid "remote %s exists as <%s>"
+#: lxc/config_device.go:580
+msgid "show [<remote>:]<container|profile>"
 msgstr ""
 
-#: lxc/remote.go:366 lxc/remote.go:432 lxc/remote.go:467
-#, c-format
-msgid "remote %s is static and cannot be modified"
+#: lxc/image.go:1283
+msgid "show [<remote>:]<image>"
+msgstr ""
+
+#: lxc/cluster.go:140
+msgid "show [<remote>:]<member>"
+msgstr ""
+
+#: lxc/network.go:987
+msgid "show [<remote>:]<network>"
+msgstr ""
+
+#: lxc/operation.go:172
+msgid "show [<remote>:]<operation>"
+msgstr ""
+
+#: lxc/storage.go:643
+msgid "show [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:1164
+msgid "show [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:810
+msgid "show [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/config.go:450 lxc/config_metadata.go:174
+msgid "show [<remote>:][container]"
+msgstr ""
+
+#: lxc/snapshot.go:19
+msgid "snapshot [<remote>:]<container> <snapshot name>"
 msgstr ""
 
-#: lxc/storage.go:858
+#: lxc/storage.go:433
 msgid "space used"
 msgstr ""
 
-#: lxc/info.go:251
+#: lxc/action.go:28
+msgid "start [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/info.go:255
 msgid "stateful"
 msgstr ""
 
-#: lxc/info.go:253
+#: lxc/info.go:257
 msgid "stateless"
 msgstr ""
 
-#: lxc/info.go:247
+#: lxc/action.go:89
+msgid "stop [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/storage.go:31
+msgid "storage"
+msgstr ""
+
+#: lxc/info.go:251
 #, c-format
 msgid "taken at %s"
 msgstr ""
 
-#: lxc/storage.go:857
+#: lxc/config_template.go:28
+msgid "template"
+msgstr ""
+
+#: lxc/storage.go:432
 msgid "total space"
 msgstr ""
 
-#: lxc/storage.go:852
+#: lxc/config_trust.go:28
+msgid "trust"
+msgstr ""
+
+#: lxc/config_device.go:648
+msgid "unset [<remote>:]<container|profile> <device> <key>"
+msgstr ""
+
+#: lxc/network.go:1049
+msgid "unset [<remote>:]<network> <key>"
+msgstr ""
+
+#: lxc/storage.go:727
+msgid "unset [<remote>:]<pool> <key>"
+msgstr ""
+
+#: lxc/storage_volume.go:1239
+msgid "unset [<remote>:]<pool> <volume> <key>"
+msgstr ""
+
+#: lxc/profile.go:864
+msgid "unset [<remote>:]<profile> <key>"
+msgstr ""
+
+#: lxc/config.go:558
+msgid "unset [<remote>:][container] <key>"
+msgstr ""
+
+#: lxc/storage.go:427
 msgid "used by"
 msgstr ""
 
-#: lxc/main.go:299
-msgid "wrong number of subcommand arguments"
+#: lxc/storage_volume.go:32
+msgid "volume"
 msgstr ""
 
-#: lxc/delete.go:45 lxc/image.go:208 lxc/image.go:586 lxc/image.go:591
+#: lxc/delete.go:46 lxc/image.go:811 lxc/image.go:816 lxc/image.go:975
 msgid "yes"
 msgstr ""
diff --git a/po/pl.po b/po/pl.po
index 12e5ee898..1d86acb17 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -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: 2018-02-27 22:14-0500\n"
+"POT-Creation-Date: 2018-03-29 01:45-0400\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
@@ -16,7 +16,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: lxc/storage.go:36
+#: lxc/storage.go:220
 msgid ""
 "### This is a yaml representation of a storage pool.\n"
 "### Any line starting with a '#' will be ignored.\n"
@@ -33,7 +33,7 @@ msgid ""
 "###   zfs.pool_name: default"
 msgstr ""
 
-#: lxc/storage.go:53
+#: lxc/storage_volume.go:737
 msgid ""
 "### This is a yaml representation of a storage volume.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -47,7 +47,7 @@ msgid ""
 "###   size: \"61203283968\""
 msgstr ""
 
-#: lxc/config.go:40
+#: lxc/config.go:100
 msgid ""
 "### This is a yaml representation of the configuration.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -68,7 +68,7 @@ msgid ""
 "### Note that the name is shown but cannot be changed"
 msgstr ""
 
-#: lxc/config.go:61
+#: lxc/config_metadata.go:63
 msgid ""
 "### This is a yaml representation of the container metadata.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -92,7 +92,7 @@ msgid ""
 "###     properties: {}"
 msgstr ""
 
-#: lxc/image.go:63
+#: lxc/image.go:327
 msgid ""
 "### This is a yaml representation of the image properties.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -102,7 +102,7 @@ msgid ""
 "###  description: My custom image"
 msgstr ""
 
-#: lxc/network.go:32
+#: lxc/network.go:546
 msgid ""
 "### This is a yaml representation of the network.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -122,7 +122,7 @@ msgid ""
 "### Note that only the configuration can be changed."
 msgstr ""
 
-#: lxc/profile.go:30
+#: lxc/profile.go:408
 msgid ""
 "### This is a yaml representation of the profile.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -143,12 +143,12 @@ msgid ""
 "### Note that the name is shown but cannot be changed"
 msgstr ""
 
-#: lxc/image.go:187
+#: lxc/image.go:954
 #, c-format
 msgid "%s (%d more)"
 msgstr ""
 
-#: lxc/file.go:205
+#: lxc/file.go:677
 #, c-format
 msgid "%s is not a directory"
 msgstr ""
@@ -158,1782 +158,2673 @@ msgstr ""
 msgid "%v (interrupt two more times to force)"
 msgstr ""
 
-#: lxc/file.go:142
+#: lxc/file.go:614
 #, c-format
 msgid "'%s' isn't a supported file type."
 msgstr ""
 
-#: lxc/profile.go:337
+#: lxc/profile.go:222
 msgid "(none)"
 msgstr ""
 
-#: lxc/alias.go:84 lxc/image.go:231 lxc/image.go:1136
+#: lxc/alias.go:127 lxc/image.go:921 lxc/image_alias.go:228
 msgid "ALIAS"
 msgstr ""
 
-#: lxc/image.go:232
+#: lxc/image.go:922
 msgid "ALIASES"
 msgstr ""
 
-#: lxc/image.go:236
+#: lxc/image.go:926
 msgid "ARCH"
 msgstr ""
 
-#: lxc/list.go:467
+#: lxc/list.go:464
 msgid "ARCHITECTURE"
 msgstr ""
 
-#: lxc/remote.go:412
+#: lxc/remote.go:466
 msgid "AUTH TYPE"
 msgstr ""
 
-#: lxc/remote.go:68
+#: lxc/remote.go:88
 msgid "Accept certificate"
 msgstr ""
 
-#: lxc/query.go:38
+#: lxc/query.go:37
 msgid "Action (defaults to GET)"
 msgstr ""
 
-#: lxc/remote.go:276
+#: lxc/config_device.go:75 lxc/config_device.go:76
+msgid "Add devices to containers or profiles"
+msgstr ""
+
+#: lxc/alias.go:54 lxc/alias.go:55
+msgid "Add new aliases"
+msgstr ""
+
+#: lxc/remote.go:83 lxc/remote.go:84
+msgid "Add new remote servers"
+msgstr ""
+
+#: lxc/config_trust.go:58 lxc/config_trust.go:59
+msgid "Add new trusted clients"
+msgstr ""
+
+#: lxc/profile.go:101 lxc/profile.go:102
+msgid "Add profiles to containers"
+msgstr ""
+
+#: lxc/remote.go:325
 #, c-format
 msgid "Admin password for %s: "
 msgstr ""
 
-#: lxc/image.go:623
+#: lxc/alias.go:78 lxc/alias.go:176
+#, c-format
+msgid "Alias %s already exists"
+msgstr ""
+
+#: lxc/alias.go:170 lxc/alias.go:221
+#, c-format
+msgid "Alias %s doesn't exist"
+msgstr ""
+
+#: lxc/image_alias.go:83 lxc/image_alias.go:130 lxc/image_alias.go:274
+msgid "Alias name missing"
+msgstr ""
+
+#: lxc/image.go:854
 msgid "Aliases:"
 msgstr ""
 
-#: lxc/image.go:601 lxc/info.go:125
+#: lxc/image.go:826 lxc/info.go:129
 #, c-format
 msgid "Architecture: %s"
 msgstr ""
 
-#: lxc/remote.go:259
+#: lxc/profile.go:162 lxc/profile.go:163
+msgid "Assign sets of profiles to containers"
+msgstr ""
+
+#: lxc/network.go:103
+msgid "Attach network interfaces to containers"
+msgstr ""
+
+#: lxc/network.go:176 lxc/network.go:177
+msgid "Attach network interfaces to profiles"
+msgstr ""
+
+#: lxc/network.go:104
+msgid "Attach new network interfaces to containers"
+msgstr ""
+
+#: lxc/storage_volume.go:121 lxc/storage_volume.go:122
+msgid "Attach new storage volumes to containers"
+msgstr ""
+
+#: lxc/storage_volume.go:200 lxc/storage_volume.go:201
+msgid "Attach new storage volumes to profiles"
+msgstr ""
+
+#: lxc/console.go:31
+msgid "Attach to container consoles"
+msgstr ""
+
+#: lxc/console.go:32
+msgid ""
+"Attach to container consoles\n"
+"\n"
+"This command allows you to interact with the boot console of a container\n"
+"as well as retrieve past log entries from it."
+msgstr ""
+
+#: lxc/remote.go:308
 #, c-format
 msgid "Authentication type '%s' not supported by server"
 msgstr ""
 
-#: lxc/image.go:632
+#: lxc/image.go:864
 #, c-format
 msgid "Auto update: %s"
 msgstr ""
 
-#: lxc/image.go:707
+#: lxc/network.go:283
+#, c-format
+msgid "Bad key/value pair: %s"
+msgstr ""
+
+#: lxc/copy.go:110 lxc/init.go:118 lxc/publish.go:175 lxc/storage.go:123
+#: lxc/storage_volume.go:468
+#, c-format
+msgid "Bad key=value pair: %s"
+msgstr ""
+
+#: lxc/image.go:677
 #, c-format
 msgid "Bad property: %s"
 msgstr ""
 
-#: lxc/action.go:133
+#: lxc/action.go:212
 msgid "Both --all and container name given"
 msgstr ""
 
-#: lxc/info.go:218
+#: lxc/info.go:222
 msgid "Bytes received"
 msgstr ""
 
-#: lxc/info.go:219
+#: lxc/info.go:223
 msgid "Bytes sent"
 msgstr ""
 
-#: lxc/operation.go:156
+#: lxc/operation.go:155
 msgid "CANCELABLE"
 msgstr ""
 
-#: lxc/config.go:403
+#: lxc/config_trust.go:175
 msgid "COMMON NAME"
 msgstr ""
 
-#: lxc/info.go:182
+#: lxc/info.go:186
 msgid "CPU usage (in seconds)"
 msgstr ""
 
-#: lxc/info.go:186
+#: lxc/info.go:190
 msgid "CPU usage:"
 msgstr ""
 
-#: lxc/operation.go:157
+#: lxc/operation.go:156
 msgid "CREATED"
 msgstr ""
 
-#: lxc/list.go:468
+#: lxc/list.go:465
 msgid "CREATED AT"
 msgstr ""
 
-#: lxc/image.go:631
+#: lxc/image.go:863
 #, c-format
 msgid "Cached: %s"
 msgstr ""
 
-#: lxc/file.go:501
+#: lxc/image.go:175
+msgid "Can't provide a name for the target image"
+msgstr ""
+
+#: lxc/file.go:261
 msgid "Can't pull a directory without --recursive"
 msgstr ""
 
-#: lxc/config.go:210 lxc/network.go:619
+#: lxc/config.go:400 lxc/network.go:969
 #, c-format
 msgid "Can't read from stdin: %s"
 msgstr ""
 
-#: lxc/rename.go:41
+#: lxc/remote.go:577
+msgid "Can't remove the default remote"
+msgstr ""
+
+#: lxc/list.go:481
+msgid "Can't specify --fast with --columns"
+msgstr ""
+
+#: lxc/rename.go:48
 msgid "Can't specify a different remote for rename."
 msgstr ""
 
-#: lxc/config.go:223
-#, c-format
-msgid "Can't unset key '%s', it's not currently set"
+#: lxc/list.go:493
+msgid "Can't specify column L when not clustered"
 msgstr ""
 
-#: lxc/config.go:265 lxc/config.go:291
-#, c-format
-msgid "Can't unset key '%s', it's not currently set."
+#: lxc/file.go:399
+msgid "Can't supply uid/gid/mode in recursive mode"
 msgstr ""
 
-#: lxc/profile.go:546 lxc/storage.go:696
-msgid "Cannot provide container name to list"
+#: lxc/config.go:413
+#, c-format
+msgid "Can't unset key '%s', it's not currently set"
 msgstr ""
 
-#: lxc/remote.go:203
+#: lxc/remote.go:252
 #, c-format
 msgid "Certificate fingerprint: %s"
 msgstr ""
 
-#: lxc/remote.go:315
+#: lxc/remote.go:364
 msgid "Client certificate stored at server: "
 msgstr ""
 
-#: lxc/image.go:175 lxc/image.go:176 lxc/list.go:134 lxc/list.go:135
+#: lxc/network.go:253 lxc/network.go:663 lxc/network.go:923 lxc/network.go:992
+#: lxc/network.go:1054 lxc/storage.go:92 lxc/storage.go:331 lxc/storage.go:576
+#: lxc/storage.go:649 lxc/storage.go:732 lxc/storage_volume.go:287
+#: lxc/storage_volume.go:429 lxc/storage_volume.go:504
+#: lxc/storage_volume.go:730 lxc/storage_volume.go:856
+#: lxc/storage_volume.go:998 lxc/storage_volume.go:1028
+#: lxc/storage_volume.go:1092 lxc/storage_volume.go:1175
+#: lxc/storage_volume.go:1244
+msgid "Cluster member name"
+msgstr ""
+
+#: lxc/image.go:912 lxc/list.go:112
 msgid "Columns"
 msgstr ""
 
-#: lxc/help.go:53
-msgid "Commands:"
+#: lxc/main.go:44
+msgid "Command line client for LXD"
+msgstr ""
+
+#: lxc/main.go:45
+msgid ""
+"Command line client for LXD\n"
+"\n"
+"All of LXD's features can be driven through the various commands below.\n"
+"For help with any of those, simply call them with --help."
 msgstr ""
 
-#: lxc/copy.go:37 lxc/copy.go:38 lxc/init.go:139 lxc/init.go:140
+#: lxc/copy.go:39 lxc/init.go:42
 msgid "Config key/value to apply to the new container"
 msgstr ""
 
-#: lxc/config.go:821 lxc/config.go:886 lxc/config.go:1396 lxc/image.go:1191
-#: lxc/network.go:445 lxc/profile.go:275 lxc/storage.go:647 lxc/storage.go:1209
+#: lxc/config.go:195 lxc/config.go:259 lxc/config_metadata.go:144
+#: lxc/image.go:405 lxc/network.go:631 lxc/profile.go:490 lxc/storage.go:298
+#: lxc/storage_volume.go:822
 #, c-format
 msgid "Config parsing error: %s"
 msgstr ""
 
-#: lxc/main.go:40
-msgid "Connection refused; is LXD running?"
-msgstr ""
-
-#: lxc/console.go:132
+#: lxc/console.go:141
 msgid "Console log:"
 msgstr ""
 
-#: lxc/publish.go:71
+#: lxc/publish.go:79
 msgid "Container name is mandatory"
 msgstr ""
 
-#: lxc/copy.go:243 lxc/init.go:321
+#: lxc/copy.go:260 lxc/init.go:229
 #, c-format
 msgid "Container name is: %s"
 msgstr ""
 
-#: lxc/publish.go:250
+#: lxc/publish.go:259
 #, c-format
 msgid "Container published with fingerprint: %s"
 msgstr ""
 
-#: lxc/copy.go:45 lxc/move.go:44
+#: lxc/copy.go:44 lxc/move.go:46
 msgid "Copy a stateful container stateless"
 msgstr ""
 
-#: lxc/image.go:178
+#: lxc/image.go:138
 msgid "Copy aliases from source"
 msgstr ""
 
-#: lxc/copy.go:44
+#: lxc/copy.go:34 lxc/copy.go:35
+msgid "Copy containers within or in between LXD instances"
+msgstr ""
+
+#: lxc/image.go:130
+msgid "Copy images between servers"
+msgstr ""
+
+#: lxc/image.go:131
+msgid ""
+"Copy images between servers\n"
+"\n"
+"The auto-update flag instructs the server to keep this image up to date.\n"
+"It requires the source to be an alias and for it to be public."
+msgstr ""
+
+#: lxc/config_device.go:317 lxc/config_device.go:318
+msgid "Copy profile inherited devices and override configuration keys"
+msgstr ""
+
+#: lxc/profile.go:240 lxc/profile.go:241
+msgid "Copy profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:282 lxc/storage_volume.go:283
+msgid "Copy storage volumes"
+msgstr ""
+
+#: lxc/copy.go:43
 msgid "Copy the container without its snapshots"
 msgstr ""
 
-#: lxc/image.go:449
+#: lxc/image.go:217
 #, c-format
 msgid "Copying the image: %s"
 msgstr ""
 
-#: lxc/storage.go:1134
+#: lxc/storage_volume.go:387
 #, c-format
 msgid "Copying the storage volume: %s"
 msgstr ""
 
-#: lxc/remote.go:218
+#: lxc/remote.go:267
 msgid "Could not create server cert dir"
 msgstr ""
 
-#: lxc/file.go:70 lxc/file.go:71
+#: lxc/image_alias.go:58 lxc/image_alias.go:59
+msgid "Create aliases for existing images"
+msgstr ""
+
+#: lxc/launch.go:21 lxc/launch.go:22
+msgid "Create and start containers from images"
+msgstr ""
+
+#: lxc/file.go:191 lxc/file.go:331
 msgid "Create any directories necessary"
 msgstr ""
 
-#: lxc/image.go:606 lxc/info.go:127
+#: lxc/snapshot.go:20
+msgid "Create container snapshots"
+msgstr ""
+
+#: lxc/snapshot.go:21
+msgid ""
+"Create container snapshots\n"
+"\n"
+"When --stateful is used, LXD attempts to checkpoint the container's\n"
+"running state, including process memory state, TCP connections, ..."
+msgstr ""
+
+#: lxc/init.go:34 lxc/init.go:35
+msgid "Create containers from images"
+msgstr ""
+
+#: lxc/config_template.go:66 lxc/config_template.go:67
+msgid "Create new container file templates"
+msgstr ""
+
+#: lxc/storage_volume.go:425 lxc/storage_volume.go:426
+msgid "Create new custom storage volumes"
+msgstr ""
+
+#: lxc/network.go:249 lxc/network.go:250
+msgid "Create new networks"
+msgstr ""
+
+#: lxc/profile.go:296 lxc/profile.go:297
+msgid "Create profiles"
+msgstr ""
+
+#: lxc/storage.go:88 lxc/storage.go:89
+msgid "Create storage pools"
+msgstr ""
+
+#: lxc/image.go:832 lxc/info.go:131
 #, c-format
 msgid "Created: %s"
 msgstr ""
 
-#: lxc/init.go:200
+#: lxc/init.go:98
 #, c-format
 msgid "Creating %s"
 msgstr ""
 
-#: lxc/init.go:198
+#: lxc/init.go:96
 msgid "Creating the container"
 msgstr ""
 
-#: lxc/cluster.go:185
+#: lxc/cluster.go:121
 msgid "DATABASE"
 msgstr ""
 
-#: lxc/image.go:235 lxc/image.go:1138 lxc/list.go:469 lxc/network.go:579
-#: lxc/operation.go:154 lxc/storage.go:732 lxc/storage.go:937
+#: lxc/image.go:925 lxc/image_alias.go:230 lxc/list.go:466 lxc/network.go:784
+#: lxc/operation.go:153 lxc/storage.go:545 lxc/storage_volume.go:967
 msgid "DESCRIPTION"
 msgstr ""
 
-#: lxc/storage.go:733
+#: lxc/storage.go:546
 msgid "DRIVER"
 msgstr ""
 
-#: lxc/publish.go:39
+#: lxc/publish.go:41
 msgid "Define a compression algorithm: for image or none"
 msgstr ""
 
-#: lxc/config.go:977
+#: lxc/operation.go:53 lxc/operation.go:54
+msgid "Delete a background operation (will attempt to cancel)"
+msgstr ""
+
+#: lxc/config_template.go:109 lxc/config_template.go:110
+msgid "Delete container file templates"
+msgstr ""
+
+#: lxc/delete.go:29 lxc/delete.go:30
+msgid "Delete containers and snapshots"
+msgstr ""
+
+#: lxc/file.go:72 lxc/file.go:73
+msgid "Delete files in containers"
+msgstr ""
+
+#: lxc/image_alias.go:105 lxc/image_alias.go:106
+msgid "Delete image aliases"
+msgstr ""
+
+#: lxc/image.go:260 lxc/image.go:261
+msgid "Delete images"
+msgstr ""
+
+#: lxc/network.go:319 lxc/network.go:320
+msgid "Delete networks"
+msgstr ""
+
+#: lxc/profile.go:347 lxc/profile.go:348
+msgid "Delete profiles"
+msgstr ""
+
+#: lxc/storage.go:160 lxc/storage.go:161
+msgid "Delete storage pools"
+msgstr ""
+
+#: lxc/storage_volume.go:500 lxc/storage_volume.go:501
+msgid "Delete storage volumes"
+msgstr ""
+
+#: lxc/action.go:30 lxc/action.go:49 lxc/action.go:69 lxc/action.go:91
+#: lxc/alias.go:23 lxc/alias.go:55 lxc/alias.go:99 lxc/alias.go:147
+#: lxc/alias.go:198 lxc/cluster.go:26 lxc/cluster.go:59 lxc/cluster.go:142
+#: lxc/cluster.go:192 lxc/cluster.go:238 lxc/config.go:29 lxc/config.go:88
+#: lxc/config.go:289 lxc/config.go:355 lxc/config.go:452 lxc/config.go:560
+#: lxc/config_device.go:24 lxc/config_device.go:76 lxc/config_device.go:179
+#: lxc/config_device.go:252 lxc/config_device.go:318 lxc/config_device.go:405
+#: lxc/config_device.go:493 lxc/config_device.go:582 lxc/config_device.go:650
+#: lxc/config_metadata.go:29 lxc/config_metadata.go:54
+#: lxc/config_metadata.go:176 lxc/config_template.go:30
+#: lxc/config_template.go:67 lxc/config_template.go:110
+#: lxc/config_template.go:152 lxc/config_template.go:236
+#: lxc/config_template.go:298 lxc/config_trust.go:30 lxc/config_trust.go:59
+#: lxc/config_trust.go:115 lxc/config_trust.go:197 lxc/console.go:32
+#: lxc/copy.go:35 lxc/delete.go:30 lxc/exec.go:39 lxc/file.go:40 lxc/file.go:73
+#: lxc/file.go:122 lxc/file.go:185 lxc/file.go:324 lxc/image.go:42
+#: lxc/image.go:131 lxc/image.go:261 lxc/image.go:312 lxc/image.go:435
+#: lxc/image.go:571 lxc/image.go:776 lxc/image.go:890 lxc/image.go:1212
+#: lxc/image.go:1285 lxc/image_alias.go:26 lxc/image_alias.go:59
+#: lxc/image_alias.go:106 lxc/image_alias.go:149 lxc/image_alias.go:250
+#: lxc/info.go:29 lxc/init.go:35 lxc/launch.go:22 lxc/list.go:48 lxc/main.go:45
+#: lxc/monitor.go:31 lxc/move.go:31 lxc/network.go:32 lxc/network.go:104
+#: lxc/network.go:177 lxc/network.go:250 lxc/network.go:320 lxc/network.go:367
+#: lxc/network.go:452 lxc/network.go:537 lxc/network.go:660 lxc/network.go:719
+#: lxc/network.go:808 lxc/network.go:873 lxc/network.go:920 lxc/network.go:989
+#: lxc/network.go:1051 lxc/operation.go:25 lxc/operation.go:54
+#: lxc/operation.go:98 lxc/operation.go:174 lxc/profile.go:30
+#: lxc/profile.go:102 lxc/profile.go:163 lxc/profile.go:241 lxc/profile.go:297
+#: lxc/profile.go:348 lxc/profile.go:396 lxc/profile.go:520 lxc/profile.go:568
+#: lxc/profile.go:632 lxc/profile.go:705 lxc/profile.go:753 lxc/profile.go:812
+#: lxc/profile.go:866 lxc/publish.go:34 lxc/query.go:27 lxc/remote.go:34
+#: lxc/remote.go:84 lxc/remote.go:380 lxc/remote.go:414 lxc/remote.go:487
+#: lxc/remote.go:549 lxc/remote.go:598 lxc/remote.go:636 lxc/rename.go:20
+#: lxc/restore.go:24 lxc/snapshot.go:21 lxc/storage.go:33 lxc/storage.go:89
+#: lxc/storage.go:161 lxc/storage.go:208 lxc/storage.go:328 lxc/storage.go:383
+#: lxc/storage.go:491 lxc/storage.go:573 lxc/storage.go:645 lxc/storage.go:729
+#: lxc/storage_volume.go:34 lxc/storage_volume.go:122 lxc/storage_volume.go:201
+#: lxc/storage_volume.go:283 lxc/storage_volume.go:426
+#: lxc/storage_volume.go:501 lxc/storage_volume.go:561
+#: lxc/storage_volume.go:643 lxc/storage_volume.go:724
+#: lxc/storage_volume.go:853 lxc/storage_volume.go:918
+#: lxc/storage_volume.go:994 lxc/storage_volume.go:1025
+#: lxc/storage_volume.go:1089 lxc/storage_volume.go:1166
+#: lxc/storage_volume.go:1241
+msgid "Description"
+msgstr ""
+
+#: lxc/network.go:366 lxc/network.go:367
+msgid "Detach network interfaces from containers"
+msgstr ""
+
+#: lxc/network.go:451 lxc/network.go:452
+msgid "Detach network interfaces from profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:560 lxc/storage_volume.go:561
+msgid "Detach storage volumes from containers"
+msgstr ""
+
+#: lxc/storage_volume.go:642 lxc/storage_volume.go:643
+msgid "Detach storage volumes from profiles"
+msgstr ""
+
+#: lxc/config_device.go:163
 #, c-format
 msgid "Device %s added to %s"
 msgstr ""
 
-#: lxc/config.go:1272
+#: lxc/config_device.go:387
 #, c-format
 msgid "Device %s overridden for %s"
 msgstr ""
 
-#: lxc/config.go:1213
+#: lxc/config_device.go:476
 #, c-format
 msgid "Device %s removed from %s"
 msgstr ""
 
-#: lxc/utils.go:192 lxc/utils.go:216
+#: lxc/utils.go:133 lxc/utils.go:157
 #, c-format
 msgid "Device already exists: %s"
 msgstr ""
 
-#: lxc/image.go:1290
+#: lxc/image.go:586
 msgid "Directory import is not available on this platform"
 msgstr ""
 
-#: lxc/exec.go:71
+#: lxc/exec.go:55
 msgid "Disable pseudo-terminal allocation"
 msgstr ""
 
-#: lxc/exec.go:72
+#: lxc/exec.go:56
 msgid "Disable stdin (reads from /dev/null)"
 msgstr ""
 
-#: lxc/info.go:175
+#: lxc/info.go:179
 msgid "Disk usage:"
 msgstr ""
 
-#: lxc/list.go:638
+#: lxc/list.go:635
 msgid "EPHEMERAL"
 msgstr ""
 
-#: lxc/config.go:405
+#: lxc/config_trust.go:177
 msgid "EXPIRY DATE"
 msgstr ""
 
-#: lxc/main.go:52
-msgid "Enable debug mode"
+#: lxc/config_template.go:151 lxc/config_template.go:152
+msgid "Edit container file templates"
 msgstr ""
 
-#: lxc/main.go:51
-msgid "Enable verbose mode"
+#: lxc/config_metadata.go:53 lxc/config_metadata.go:54
+msgid "Edit container metadata files"
 msgstr ""
 
-#: lxc/exec.go:68
-msgid "Environment variable to set (e.g. HOME=/home/foo)"
+#: lxc/config.go:87 lxc/config.go:88
+msgid "Edit container or server configurations as YAML"
+msgstr ""
+
+#: lxc/file.go:121 lxc/file.go:122
+msgid "Edit files in containers"
+msgstr ""
+
+#: lxc/image.go:311 lxc/image.go:312
+msgid "Edit image properties"
+msgstr ""
+
+#: lxc/network.go:536 lxc/network.go:537
+msgid "Edit network configurations as YAML"
+msgstr ""
+
+#: lxc/profile.go:395 lxc/profile.go:396
+msgid "Edit profile configurations as YAML"
+msgstr ""
+
+#: lxc/storage.go:207 lxc/storage.go:208
+msgid "Edit storage pool configurations as YAML"
+msgstr ""
+
+#: lxc/storage_volume.go:723 lxc/storage_volume.go:724
+msgid "Edit storage volume configurations as YAML"
+msgstr ""
+
+#: lxc/list.go:504
+#, c-format
+msgid "Empty column entry (redundant, leading or trailing command) in '%s'"
 msgstr ""
 
-#: lxc/help.go:77
-msgid "Environment:"
+#: lxc/exec.go:52
+msgid "Environment variable to set (e.g. HOME=/home/foo)"
 msgstr ""
 
-#: lxc/copy.go:41 lxc/copy.go:42 lxc/init.go:143 lxc/init.go:144
+#: lxc/copy.go:41 lxc/init.go:44
 msgid "Ephemeral container"
 msgstr ""
 
-#: lxc/config.go:1446
+#: lxc/config_template.go:204
 #, c-format
 msgid "Error updating template file: %s"
 msgstr ""
 
-#: lxc/monitor.go:69
+#: lxc/monitor.go:48
 msgid "Event type to listen for"
 msgstr ""
 
-#: lxc/image.go:610
+#: lxc/exec.go:38
+msgid "Execute commands in containers"
+msgstr ""
+
+#: lxc/exec.go:39
+msgid ""
+"Execute commands in containers\n"
+"\n"
+"The command is executed directly using exec, so there is no shell and\n"
+"shell patterns (variables, file redirects, ...) won't be understood.\n"
+"If you need a shell environment you need to execute the shell\n"
+"executable, passing the shell commands as arguments, for example:\n"
+"\n"
+"  lxc exec <container> -- sh -c \"cd /tmp && pwd\"\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:838
 #, c-format
 msgid "Expires: %s"
 msgstr ""
 
-#: lxc/image.go:612
+#: lxc/image.go:840
 msgid "Expires: never"
 msgstr ""
 
-#: lxc/image.go:922
+#: lxc/image.go:434
+msgid "Export and download images"
+msgstr ""
+
+#: lxc/image.go:435
+msgid ""
+"Export and download images\n"
+"\n"
+"The output target is optional and defaults to the working directory."
+msgstr ""
+
+#: lxc/image.go:494
 #, c-format
 msgid "Exporting the image: %s"
 msgstr ""
 
-#: lxc/config.go:761
+#: lxc/config_template.go:279
 msgid "FILENAME"
 msgstr ""
 
-#: lxc/config.go:402 lxc/image.go:233 lxc/image.go:1137
+#: lxc/config_trust.go:174 lxc/image.go:923 lxc/image_alias.go:229
 msgid "FINGERPRINT"
 msgstr ""
 
-#: lxc/utils.go:261
+#: lxc/utils.go:202
 #, c-format
 msgid "Failed to create alias %s"
 msgstr ""
 
-#: lxc/manpage.go:62
-#, c-format
-msgid "Failed to generate 'lxc.%s.1': %v"
-msgstr ""
-
-#: lxc/manpage.go:55
-#, c-format
-msgid "Failed to generate 'lxc.1': %v"
-msgstr ""
-
-#: lxc/copy.go:238
+#: lxc/copy.go:255
 msgid "Failed to get the new container name"
 msgstr ""
 
-#: lxc/utils.go:251
+#: lxc/utils.go:192
 #, c-format
 msgid "Failed to remove alias %s"
 msgstr ""
 
-#: lxc/file.go:137
+#: lxc/file.go:609
 #, c-format
 msgid "Failed to walk path for %s: %s"
 msgstr ""
 
-#: lxc/list.go:137
+#: lxc/list.go:114
 msgid "Fast mode (same as --columns=nsacPt)"
 msgstr ""
 
-#: lxc/network.go:536 lxc/operation.go:121
+#: lxc/network.go:749 lxc/operation.go:126
 msgid "Filtering isn't supported yet"
 msgstr ""
 
-#: lxc/image.go:599
+#: lxc/image.go:824
 #, c-format
 msgid "Fingerprint: %s"
 msgstr ""
 
-#: lxc/exec.go:70
+#: lxc/exec.go:54
 msgid "Force pseudo-terminal allocation"
 msgstr ""
 
-#: lxc/cluster.go:42
-msgid "Force removing a node, even if degraded"
+#: lxc/cluster.go:242
+msgid "Force removing a member, even if degraded"
 msgstr ""
 
-#: lxc/action.go:47 lxc/action.go:48
+#: lxc/action.go:121
 msgid "Force the container to shutdown"
 msgstr ""
 
-#: lxc/delete.go:34 lxc/delete.go:35
+#: lxc/delete.go:34
 msgid "Force the removal of running containers"
 msgstr ""
 
-#: lxc/main.go:53
+#: lxc/main.go:56
 msgid "Force using the local unix socket"
 msgstr ""
 
-#: lxc/image.go:181 lxc/list.go:136
+#: lxc/image.go:913 lxc/list.go:113
 msgid "Format (csv|json|table|yaml)"
 msgstr ""
 
-#: lxc/remote.go:166
+#: lxc/remote.go:211
 msgid "Generating a client certificate. This may take a minute..."
 msgstr ""
 
-#: lxc/network.go:513
+#: lxc/config_device.go:178 lxc/config_device.go:179
+msgid "Get values for container device configuration keys"
+msgstr ""
+
+#: lxc/config.go:288 lxc/config.go:289
+msgid "Get values for container or server configuration keys"
+msgstr ""
+
+#: lxc/network.go:659 lxc/network.go:660
+msgid "Get values for network configuration keys"
+msgstr ""
+
+#: lxc/profile.go:519 lxc/profile.go:520
+msgid "Get values for profile configuration keys"
+msgstr ""
+
+#: lxc/storage.go:327 lxc/storage.go:328
+msgid "Get values for storage pool configuration keys"
+msgstr ""
+
+#: lxc/storage_volume.go:852 lxc/storage_volume.go:853
+msgid "Get values for storage volume configuration keys"
+msgstr ""
+
+#: lxc/network.go:851
 msgid "HOSTNAME"
 msgstr ""
 
-#: lxc/operation.go:152
+#: lxc/operation.go:151
 msgid "ID"
 msgstr ""
 
-#: lxc/network.go:515
+#: lxc/network.go:853
 msgid "IP ADDRESS"
 msgstr ""
 
-#: lxc/list.go:465
+#: lxc/list.go:462
 msgid "IPV4"
 msgstr ""
 
-#: lxc/list.go:466
+#: lxc/list.go:463
 msgid "IPV6"
 msgstr ""
 
-#: lxc/config.go:404
+#: lxc/config_trust.go:176
 msgid "ISSUE DATE"
 msgstr ""
 
-#: lxc/main.go:171
+#: lxc/main.go:259
 msgid ""
 "If this is your first time running LXD on this machine, you should also run: "
 "lxd init"
 msgstr ""
 
-#: lxc/main.go:54
-msgid "Ignore aliases when determining what command to run"
-msgstr ""
-
-#: lxc/action.go:51
-msgid "Ignore the container state (only for start)"
+#: lxc/action.go:117
+msgid "Ignore the container state"
 msgstr ""
 
-#: lxc/image.go:557
+#: lxc/image.go:1268
 msgid "Image already up to date."
 msgstr ""
 
-#: lxc/image.go:463
+#: lxc/image.go:231
 msgid "Image copied successfully!"
 msgstr ""
 
-#: lxc/image.go:982
+#: lxc/image.go:554
 msgid "Image exported successfully!"
 msgstr ""
 
-#: lxc/image.go:778
+#: lxc/image.go:284 lxc/image.go:1235
+msgid "Image identifier missing"
+msgstr ""
+
+#: lxc/image.go:352
+#, c-format
+msgid "Image identifier missing: %s"
+msgstr ""
+
+#: lxc/image.go:749
 #, c-format
 msgid "Image imported with fingerprint: %s"
 msgstr ""
 
-#: lxc/image.go:555
+#: lxc/image.go:1266
 msgid "Image refreshed successfully!"
 msgstr ""
 
-#: lxc/query.go:39
+#: lxc/image.go:571
+msgid ""
+"Import image into the image store\n"
+"\n"
+"Directory import is only available on Linux and must be performed as root."
+msgstr ""
+
+#: lxc/image.go:570
+msgid "Import images into the image store"
+msgstr ""
+
+#: lxc/query.go:38
 msgid "Input data"
 msgstr ""
 
-#: lxc/init.go:149
+#: lxc/init.go:47
 msgid "Instance type"
 msgstr ""
 
-#: lxc/remote.go:118
+#: lxc/remote.go:163
 #, c-format
 msgid "Invalid URL scheme \"%s\" in \"%s\""
 msgstr ""
 
-#: lxc/config.go:383
+#: lxc/config_trust.go:155
 msgid "Invalid certificate"
 msgstr ""
 
-#: lxc/init.go:32 lxc/init.go:37
-msgid "Invalid configuration key"
+#: lxc/list.go:525
+#, c-format
+msgid "Invalid config key '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:520
+#, c-format
+msgid "Invalid config key column format (too many fields): '%s'"
+msgstr ""
+
+#: lxc/image.go:1196 lxc/list.go:386
+#, c-format
+msgid "Invalid format %q"
+msgstr ""
+
+#: lxc/list.go:543
+#, c-format
+msgid "Invalid max width (must -1, 0 or a positive integer) '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:540
+#, c-format
+msgid "Invalid max width (must be an integer) '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:531
+#, c-format
+msgid ""
+"Invalid name in '%s', empty string is only allowed when defining maxWidth"
+msgstr ""
+
+#: lxc/main.go:341
+msgid "Invalid number of arguments"
 msgstr ""
 
-#: lxc/file.go:560
+#: lxc/file.go:97
 #, c-format
 msgid "Invalid path %s"
 msgstr ""
 
-#: lxc/remote.go:107
+#: lxc/remote.go:152
 #, c-format
 msgid "Invalid protocol: %s"
 msgstr ""
 
-#: lxc/file.go:473
+#: lxc/file.go:243
 #, c-format
 msgid "Invalid source %s"
 msgstr ""
 
-#: lxc/file.go:250
+#: lxc/file.go:352
 #, c-format
 msgid "Invalid target %s"
 msgstr ""
 
-#: lxc/info.go:156
+#: lxc/info.go:160
 msgid "Ips:"
 msgstr ""
 
-#: lxc/image.go:179
+#: lxc/image.go:139
 msgid "Keep the image up to date after initial copy"
 msgstr ""
 
-#: lxc/list.go:470
+#: lxc/list.go:467
 msgid "LAST USED AT"
 msgstr ""
 
-#: lxc/list.go:492
+#: lxc/list.go:489
 msgid "LOCATION"
 msgstr ""
 
-#: lxc/main.go:38
-msgid "LXD socket not found; is LXD installed and running?"
+#: lxc/cluster.go:94
+msgid "LXD server isn't part of a cluster"
 msgstr ""
 
-#: lxc/image.go:615
+#: lxc/image.go:844
 #, c-format
 msgid "Last used: %s"
 msgstr ""
 
-#: lxc/image.go:617
+#: lxc/image.go:846
 msgid "Last used: never"
 msgstr ""
 
-#: lxc/info.go:119
-#, c-format
-msgid "Location: %s"
-msgstr ""
-
-#: lxc/info.go:271
-msgid "Log:"
-msgstr ""
-
-#: lxc/network.go:514
-msgid "MAC ADDRESS"
-msgstr ""
-
-#: lxc/network.go:578
-msgid "MANAGED"
+#: lxc/network.go:807 lxc/network.go:808
+msgid "List DHCP leases"
 msgstr ""
 
-#: lxc/cluster.go:187
-msgid "MESSAGE"
+#: lxc/alias.go:98 lxc/alias.go:99
+msgid "List aliases"
 msgstr ""
 
-#: lxc/image.go:177
-msgid "Make image public"
+#: lxc/cluster.go:58 lxc/cluster.go:59
+msgid "List all the cluster members"
 msgstr ""
 
-#: lxc/publish.go:35
-msgid "Make the image public"
+#: lxc/network.go:718 lxc/network.go:719
+msgid "List available networks"
 msgstr ""
 
-#: lxc/info.go:193
-msgid "Memory (current)"
+#: lxc/storage.go:490 lxc/storage.go:491
+msgid "List available storage pools"
 msgstr ""
 
-#: lxc/info.go:197
-msgid "Memory (peak)"
+#: lxc/operation.go:97 lxc/operation.go:98
+msgid "List background operations"
 msgstr ""
 
-#: lxc/info.go:209
-msgid "Memory usage:"
+#: lxc/config_device.go:251 lxc/config_device.go:252
+msgid "List container devices"
 msgstr ""
 
-#: lxc/monitor.go:70
-msgid "Minimum level for log messages"
+#: lxc/config_template.go:235 lxc/config_template.go:236
+msgid "List container file templates"
 msgstr ""
 
-#: lxc/utils.go:143
-msgid "Missing summary."
+#: lxc/list.go:47
+msgid "List containers"
 msgstr ""
 
-#: lxc/network.go:303 lxc/network.go:356 lxc/storage.go:435 lxc/storage.go:565
-msgid "More than one device matches, specify the device name."
-msgstr ""
+#: lxc/list.go:48
+msgid ""
+"List containers\n"
+"\n"
+"Default column layout: ns46tS\n"
+"Fast column layout: nsacPt\n"
+"\n"
+"== Filters ==\n"
+"A single keyword like \"web\" which will list any container with a name "
+"starting by \"web\".\n"
+"A regular expression on the container name. (e.g. .*web.*01$).\n"
+"A key/value pair referring to a configuration item. For those, the\n"
+"namespace can be abbreviated to the smallest unambiguous identifier.\n"
+"\n"
+"Examples:\n"
+"  - \"user.blah=abc\" will list all containers with the \"blah\" user "
+"property set to \"abc\".\n"
+"  - \"u.blah=abc\" will do the same\n"
+"  - \"security.privileged=true\" will list all privileged containers\n"
+"  - \"s.privileged=true\" will do the same\n"
+"\n"
+"A regular expression matching a configuration item or its value. (e.g. "
+"volatile.eth0.hwaddr=00:16:3e:.*).\n"
+"\n"
+"== Columns ==\n"
+"The -c option takes a comma separated list of arguments that control\n"
+"which container attributes to output when displaying in table or csv\n"
+"format.\n"
+"\n"
+"Column arguments are either pre-defined shorthand chars (see below),\n"
+"or (extended) config keys.\n"
+"\n"
+"Commas between consecutive shorthand chars are optional.\n"
+"\n"
+"Pre-defined column shorthand chars:\n"
+"  4 - IPv4 address\n"
+"  6 - IPv6 address\n"
+"  a - Architecture\n"
+"  b - Storage pool\n"
+"  c - Creation date\n"
+"  d - Description\n"
+"  l - Last used date\n"
+"  n - Name\n"
+"  N - Number of Processes\n"
+"  p - PID of the container's init process\n"
+"  P - Profiles\n"
+"  s - State\n"
+"  S - Number of snapshots\n"
+"  t - Type (persistent or ephemeral)\n"
+"  L - Location of the container (e.g. its node)\n"
+"\n"
+"Custom columns are defined with \"key[:name][:maxWidth]\":\n"
+"  KEY: The (extended) config key to display\n"
+"  NAME: Name to display in the column header.\n"
+"  Defaults to the key if not specified or empty.\n"
+"\n"
+"  MAXWIDTH: Max width of the column (longer results are truncated).\n"
+"  Defaults to -1 (unlimited). Use 0 to limit to the column header size."
+msgstr ""
+
+#: lxc/image_alias.go:148
+msgid "List image aliases"
+msgstr ""
+
+#: lxc/image_alias.go:149
+msgid ""
+"List image aliases\n"
+"\n"
+"Filters may be part of the image hash or part of the image alias name.\n"
+msgstr ""
+
+#: lxc/image.go:889
+msgid "List images"
+msgstr ""
+
+#: lxc/image.go:890
+msgid ""
+"List images\n"
+"\n"
+"Filters may be of the <key>=<value> form for property based filtering,\n"
+"or part of the image hash or part of the image alias name.\n"
+"\n"
+"The -c option takes a (optionally comma-separated) list of arguments\n"
+"that control which image attributes to output when displaying in table\n"
+"or csv format.\n"
+"\n"
+"Default column layout is: lfpdasu\n"
+"\n"
+"Column shorthand chars:\n"
+"\n"
+"    l - Shortest image alias (and optionally number of other aliases)\n"
+"    L - Newline-separated list of all image aliases\n"
+"    f - Fingerprint\n"
+"    p - Whether image is public\n"
+"    d - Description\n"
+"    a - Architecture\n"
+"    s - Size"
+msgstr ""
+
+#: lxc/profile.go:567 lxc/profile.go:568
+msgid "List profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:917 lxc/storage_volume.go:918
+msgid "List storage volumes"
+msgstr ""
+
+#: lxc/remote.go:413 lxc/remote.go:414
+msgid "List the available remotes"
+msgstr ""
+
+#: lxc/config_trust.go:114 lxc/config_trust.go:115
+msgid "List trusted clients"
+msgstr ""
+
+#: lxc/operation.go:24 lxc/operation.go:25
+msgid "List, show and delete background operations"
+msgstr ""
+
+#: lxc/info.go:123
+#, c-format
+msgid "Location: %s"
+msgstr ""
+
+#: lxc/info.go:275
+msgid "Log:"
+msgstr ""
+
+#: lxc/network.go:852
+msgid "MAC ADDRESS"
+msgstr ""
+
+#: lxc/network.go:783
+msgid "MANAGED"
+msgstr ""
+
+#: lxc/cluster.go:123
+msgid "MESSAGE"
+msgstr ""
+
+#: lxc/image.go:137 lxc/image.go:576
+msgid "Make image public"
+msgstr ""
+
+#: lxc/publish.go:38
+msgid "Make the image public"
+msgstr ""
+
+#: lxc/network.go:32
+msgid "Manage an attach containers to networks"
+msgstr ""
+
+#: lxc/network.go:31
+msgid "Manage and attach containers to networks"
+msgstr ""
+
+#: lxc/cluster.go:25 lxc/cluster.go:26
+msgid "Manage cluster members"
+msgstr ""
+
+#: lxc/alias.go:22 lxc/alias.go:23
+msgid "Manage command aliases"
+msgstr ""
+
+#: lxc/config.go:28 lxc/config.go:29
+msgid "Manage container and server configuration options"
+msgstr ""
+
+#: lxc/config_device.go:23 lxc/config_device.go:24
+msgid "Manage container devices"
+msgstr ""
+
+#: lxc/config_template.go:29 lxc/config_template.go:30
+msgid "Manage container file templates"
+msgstr ""
+
+#: lxc/config_metadata.go:28 lxc/config_metadata.go:29
+msgid "Manage container metadata files"
+msgstr ""
+
+#: lxc/file.go:39 lxc/file.go:40
+msgid "Manage files in containers"
+msgstr ""
+
+#: lxc/image_alias.go:25 lxc/image_alias.go:26
+msgid "Manage image aliases"
+msgstr ""
+
+#: lxc/image.go:41
+msgid "Manage images"
+msgstr ""
+
+#: lxc/image.go:42
+msgid ""
+"Manage images\n"
+"\n"
+"In LXD containers are created from images. Those images were themselves\n"
+"either generated from an existing container or downloaded from an image\n"
+"server.\n"
+"\n"
+"When using remote images, LXD will automatically cache images for you\n"
+"and remove them upon expiration.\n"
+"\n"
+"The image unique identifier is the hash (sha-256) of its representation\n"
+"as a compressed tarball (or for split images, the concatenation of the\n"
+"metadata and rootfs tarballs).\n"
+"\n"
+"Images can be referenced by their full hash, shortest unique partial\n"
+"hash or alias name (if one is set)."
+msgstr ""
+
+#: lxc/profile.go:29 lxc/profile.go:30
+msgid "Manage profiles"
+msgstr ""
+
+#: lxc/storage.go:32 lxc/storage.go:33
+msgid "Manage storage pools and volumes"
+msgstr ""
+
+#: lxc/storage_volume.go:33
+msgid "Manage storage volumes"
+msgstr ""
+
+#: lxc/storage_volume.go:34
+msgid ""
+"Manage storage volumes\n"
+"\n"
+"Unless specified through a prefix, all volume operations affect \"custom"
+"\" (user created) volumes."
+msgstr ""
+
+#: lxc/remote.go:33 lxc/remote.go:34
+msgid "Manage the list of remote servers"
+msgstr ""
+
+#: lxc/config_trust.go:29 lxc/config_trust.go:30
+msgid "Manage trusted clients"
+msgstr ""
+
+#: lxc/info.go:197
+msgid "Memory (current)"
+msgstr ""
+
+#: lxc/info.go:201
+msgid "Memory (peak)"
+msgstr ""
+
+#: lxc/info.go:213
+msgid "Memory usage:"
+msgstr ""
+
+#: lxc/monitor.go:49
+msgid "Minimum level for log messages"
+msgstr ""
+
+#: lxc/config_metadata.go:102 lxc/config_metadata.go:200
+#: lxc/config_template.go:91 lxc/config_template.go:134
+#: lxc/config_template.go:176 lxc/config_template.go:260
+#: lxc/config_template.go:322 lxc/profile.go:197 lxc/profile.go:656
+msgid "Missing container name"
+msgstr ""
+
+#: lxc/profile.go:126
+msgid "Missing container.name name"
+msgstr ""
+
+#: lxc/config_device.go:103 lxc/config_device.go:203 lxc/config_device.go:276
+#: lxc/config_device.go:342 lxc/config_device.go:429 lxc/config_device.go:517
+#: lxc/config_device.go:606
+msgid "Missing name"
+msgstr ""
+
+#: lxc/network.go:128 lxc/network.go:201 lxc/network.go:344 lxc/network.go:391
+#: lxc/network.go:476 lxc/network.go:581 lxc/network.go:686 lxc/network.go:832
+#: lxc/network.go:897 lxc/network.go:946 lxc/network.go:1015
+msgid "Missing network name"
+msgstr ""
+
+#: lxc/storage.go:185 lxc/storage.go:252 lxc/storage.go:353 lxc/storage.go:408
+#: lxc/storage.go:603 lxc/storage.go:677 lxc/storage_volume.go:146
+#: lxc/storage_volume.go:225 lxc/storage_volume.go:451
+#: lxc/storage_volume.go:526 lxc/storage_volume.go:585
+#: lxc/storage_volume.go:667 lxc/storage_volume.go:766
+#: lxc/storage_volume.go:878 lxc/storage_volume.go:942
+#: lxc/storage_volume.go:1050 lxc/storage_volume.go:1114
+#: lxc/storage_volume.go:1197
+msgid "Missing pool name"
+msgstr ""
+
+#: lxc/profile.go:321 lxc/profile.go:372 lxc/profile.go:444 lxc/profile.go:544
+#: lxc/profile.go:729 lxc/profile.go:777 lxc/profile.go:836
+msgid "Missing profile name"
+msgstr ""
+
+#: lxc/profile.go:266
+msgid "Missing source profile name"
+msgstr ""
 
-#: lxc/file.go:460
+#: lxc/storage_volume.go:311
+msgid "Missing source volume name"
+msgstr ""
+
+#: lxc/file.go:446
+msgid "Missing target directory"
+msgstr ""
+
+#: lxc/monitor.go:30
+msgid "Monitor a local or remote LXD server"
+msgstr ""
+
+#: lxc/monitor.go:31
+msgid ""
+"Monitor a local or remote LXD server\n"
+"\n"
+"By default the monitor will listen to all message types."
+msgstr ""
+
+#: lxc/network.go:411 lxc/network.go:496 lxc/storage_volume.go:605
+#: lxc/storage_volume.go:686
+msgid "More than one device matches, specify the device name."
+msgstr ""
+
+#: lxc/file.go:224
 msgid "More than one file to download, but target is not a directory"
 msgstr ""
 
-#: lxc/move.go:42
+#: lxc/move.go:30 lxc/move.go:31
+msgid "Move containers within or in between LXD instances"
+msgstr ""
+
+#: lxc/storage_volume.go:993 lxc/storage_volume.go:994
+msgid "Move storage volumes between pools"
+msgstr ""
+
+#: lxc/move.go:44
 msgid "Move the container without its snapshots"
 msgstr ""
 
-#: lxc/storage.go:1128
+#: lxc/storage_volume.go:375
 #, c-format
 msgid "Moving the storage volume: %s"
 msgstr ""
 
-#: lxc/image.go:1292
+#: lxc/image.go:588
 msgid "Must run as root to import from directory"
 msgstr ""
 
-#: lxc/action.go:74
+#: lxc/action.go:147
 msgid "Must supply container name for: "
 msgstr ""
 
-#: lxc/cluster.go:183 lxc/list.go:471 lxc/network.go:576 lxc/profile.go:573
-#: lxc/remote.go:409 lxc/storage.go:731 lxc/storage.go:936
+#: lxc/cluster.go:119 lxc/list.go:468 lxc/network.go:781 lxc/profile.go:613
+#: lxc/remote.go:463 lxc/storage.go:544 lxc/storage_volume.go:966
 msgid "NAME"
 msgstr ""
 
-#: lxc/network.go:558 lxc/operation.go:139 lxc/remote.go:380 lxc/remote.go:385
+#: lxc/network.go:763 lxc/operation.go:138 lxc/remote.go:434 lxc/remote.go:439
 msgid "NO"
 msgstr ""
 
-#: lxc/storage.go:941
+#: lxc/storage_volume.go:971
 msgid "NODE"
 msgstr ""
 
-#: lxc/info.go:117
+#: lxc/info.go:121
 #, c-format
 msgid "Name: %s"
 msgstr ""
 
-#: lxc/network.go:276
+#: lxc/network.go:303
 #, c-format
 msgid "Network %s created"
 msgstr ""
 
-#: lxc/network.go:393
+#: lxc/network.go:353
 #, c-format
 msgid "Network %s deleted"
 msgstr ""
 
-#: lxc/network.go:274
+#: lxc/network.go:301
 #, c-format
 msgid "Network %s pending on node %s"
 msgstr ""
 
-#: lxc/network.go:470
+#: lxc/network.go:906
 #, c-format
 msgid "Network %s renamed to %s"
 msgstr ""
 
-#: lxc/init.go:145 lxc/init.go:146
+#: lxc/init.go:45
 msgid "Network name"
 msgstr ""
 
-#: lxc/info.go:226
+#: lxc/info.go:230
 msgid "Network usage:"
 msgstr ""
 
-#: lxc/image.go:180 lxc/publish.go:36
+#: lxc/publish.go:39
 msgid "New alias to define at target"
 msgstr ""
 
-#: lxc/config.go:414
-msgid "No certificate provided to add"
+#: lxc/image.go:140 lxc/image.go:577
+msgid "New aliases to add to the image"
 msgstr ""
 
-#: lxc/network.go:312 lxc/network.go:365
+#: lxc/network.go:420 lxc/network.go:505
 msgid "No device found for this network"
 msgstr ""
 
-#: lxc/storage.go:444 lxc/storage.go:574
+#: lxc/storage_volume.go:614 lxc/storage_volume.go:695
 msgid "No device found for this storage volume."
 msgstr ""
 
-#: lxc/config.go:446
-msgid "No fingerprint specified."
-msgstr ""
-
-#: lxc/cluster.go:143
+#: lxc/cluster.go:268
 #, c-format
 msgid "Node %s removed"
 msgstr ""
 
-#: lxc/cluster.go:119
+#: lxc/cluster.go:221
 #, c-format
 msgid "Node %s renamed to %s"
 msgstr ""
 
-#: lxc/copy.go:46 lxc/init.go:150 lxc/move.go:45 lxc/network.go:105
-#: lxc/storage.go:165
+#: lxc/copy.go:45 lxc/init.go:48 lxc/move.go:47
 msgid "Node name"
 msgstr ""
 
-#: lxc/storage.go:388 lxc/storage.go:481
+#: lxc/storage_volume.go:164 lxc/storage_volume.go:243
 msgid "Only \"custom\" volumes can be attached to containers."
 msgstr ""
 
-#: lxc/remote.go:101
+#: lxc/remote.go:146
 msgid "Only https URLs are supported for simplestreams"
 msgstr ""
 
-#: lxc/image.go:688
+#: lxc/image.go:658
 msgid "Only https:// is supported for remote image import."
 msgstr ""
 
-#: lxc/network.go:421 lxc/network.go:605
+#: lxc/network.go:607 lxc/network.go:960
 msgid "Only managed networks can be modified."
 msgstr ""
 
-#: lxc/operation.go:85
+#: lxc/operation.go:83
 #, c-format
 msgid "Operation %s deleted"
 msgstr ""
 
-#: lxc/help.go:71 lxc/main.go:139 lxc/main.go:195
-msgid "Options:"
-msgstr ""
-
-#: lxc/exec.go:69
+#: lxc/exec.go:53
 msgid "Override the terminal mode (auto, interactive or non-interactive)"
 msgstr ""
 
-#: lxc/list.go:641
+#: lxc/list.go:638
 msgid "PERSISTENT"
 msgstr ""
 
-#: lxc/list.go:473
+#: lxc/list.go:470
 msgid "PID"
 msgstr ""
 
-#: lxc/list.go:472
+#: lxc/list.go:469
 msgid "PROCESSES"
 msgstr ""
 
-#: lxc/list.go:474
+#: lxc/list.go:471
 msgid "PROFILES"
 msgstr ""
 
-#: lxc/remote.go:411
+#: lxc/remote.go:465
 msgid "PROTOCOL"
 msgstr ""
 
-#: lxc/image.go:234 lxc/remote.go:413
+#: lxc/image.go:924 lxc/remote.go:467
 msgid "PUBLIC"
 msgstr ""
 
-#: lxc/info.go:220
+#: lxc/info.go:224
 msgid "Packets received"
 msgstr ""
 
-#: lxc/info.go:221
+#: lxc/info.go:225
 msgid "Packets sent"
 msgstr ""
 
-#: lxc/help.go:78
-msgid "Path to an alternate client configuration directory"
-msgstr ""
-
-#: lxc/help.go:79
-msgid "Path to an alternate server directory"
-msgstr ""
-
-#: lxc/main.go:240
-msgid "Pause containers."
-msgstr ""
-
-#: lxc/main.go:42
-msgid "Permission denied, are you in the lxd group?"
+#: lxc/action.go:48 lxc/action.go:49
+msgid "Pause containers"
 msgstr ""
 
-#: lxc/info.go:138
+#: lxc/info.go:142
 #, c-format
 msgid "Pid: %d"
 msgstr ""
 
-#: lxc/network.go:446 lxc/profile.go:276 lxc/storage.go:648 lxc/storage.go:1210
+#: lxc/network.go:632 lxc/profile.go:491 lxc/storage.go:299
+#: lxc/storage_volume.go:823
 msgid "Press enter to open the editor again"
 msgstr ""
 
-#: lxc/config.go:822 lxc/config.go:887 lxc/config.go:1397 lxc/config.go:1447
-#: lxc/image.go:1192
+#: lxc/config.go:196 lxc/config.go:260 lxc/config_metadata.go:145
+#: lxc/config_template.go:205 lxc/image.go:406
 msgid "Press enter to start the editor again"
 msgstr ""
 
-#: lxc/monitor.go:68
+#: lxc/monitor.go:47
 msgid "Pretty rendering"
 msgstr ""
 
-#: lxc/help.go:73
-msgid "Print debug information"
-msgstr ""
-
-#: lxc/help.go:72
-msgid "Print less common commands"
+#: lxc/main.go:55
+msgid "Print help"
 msgstr ""
 
-#: lxc/query.go:37
+#: lxc/query.go:36
 msgid "Print the raw response"
 msgstr ""
 
-#: lxc/help.go:74
-msgid "Print verbose information"
+#: lxc/main.go:54
+msgid "Print version number"
 msgstr ""
 
-#: lxc/info.go:162
+#: lxc/info.go:166
 #, c-format
 msgid "Processes: %d"
 msgstr ""
 
-#: lxc/profile.go:362
+#: lxc/main_aliases.go:123 lxc/main_aliases.go:131
+#, c-format
+msgid "Processing aliases failed: %s\n"
+msgstr ""
+
+#: lxc/profile.go:147
 #, c-format
 msgid "Profile %s added to %s"
 msgstr ""
 
-#: lxc/profile.go:226
+#: lxc/profile.go:333
 #, c-format
 msgid "Profile %s created"
 msgstr ""
 
-#: lxc/profile.go:310
+#: lxc/profile.go:381
 #, c-format
 msgid "Profile %s deleted"
 msgstr ""
 
-#: lxc/profile.go:397
+#: lxc/profile.go:690
 #, c-format
 msgid "Profile %s removed from %s"
 msgstr ""
 
-#: lxc/profile.go:300
+#: lxc/profile.go:738
 #, c-format
 msgid "Profile %s renamed to %s"
 msgstr ""
 
-#: lxc/copy.go:39 lxc/copy.go:40 lxc/init.go:141 lxc/init.go:142
+#: lxc/copy.go:40 lxc/init.go:43
 msgid "Profile to apply to the new container"
 msgstr ""
 
-#: lxc/profile.go:339
+#: lxc/profile.go:225
 #, c-format
 msgid "Profiles %s applied to %s"
 msgstr ""
 
-#: lxc/info.go:136
+#: lxc/info.go:140
 #, c-format
 msgid "Profiles: %s"
 msgstr ""
 
-#: lxc/image.go:619
+#: lxc/image.go:849
 msgid "Properties:"
 msgstr ""
 
-#: lxc/remote.go:72
+#: lxc/remote.go:92
 msgid "Public image server"
 msgstr ""
 
-#: lxc/image.go:602
+#: lxc/image.go:827
 #, c-format
 msgid "Public: %s"
 msgstr ""
 
-#: lxc/file.go:68 lxc/file.go:69
-msgid "Recursively push or pull files"
+#: lxc/publish.go:33 lxc/publish.go:34
+msgid "Publish containers as images"
 msgstr ""
 
-#: lxc/image.go:529
-#, c-format
-msgid "Refreshing the image: %s"
+#: lxc/file.go:184 lxc/file.go:185
+msgid "Pull files from containers"
 msgstr ""
 
-#: lxc/remote.go:69
-msgid "Remote admin password"
+#: lxc/file.go:323 lxc/file.go:324
+msgid "Push files into containers"
 msgstr ""
 
-#: lxc/utils/cancel.go:34
-msgid "Remote operation canceled by user"
+#: lxc/file.go:192 lxc/file.go:330
+msgid "Recursively transfer files"
+msgstr ""
+
+#: lxc/image.go:1211 lxc/image.go:1212
+msgid "Refresh images"
 msgstr ""
 
-#: lxc/info.go:122
+#: lxc/image.go:1239
 #, c-format
-msgid "Remote: %s"
+msgid "Refreshing the image: %s"
 msgstr ""
 
-#: lxc/delete.go:42
+#: lxc/remote.go:515
 #, c-format
-msgid "Remove %s (yes/no): "
+msgid "Remote %s already exists"
 msgstr ""
 
-#: lxc/storage.go:1247
+#: lxc/remote.go:507 lxc/remote.go:569 lxc/remote.go:618 lxc/remote.go:656
 #, c-format
-msgid "Renamed storage volume from \"%s\" to \"%s\""
+msgid "Remote %s doesn't exist"
 msgstr ""
 
-#: lxc/delete.go:36 lxc/delete.go:37
-msgid "Require user confirmation"
+#: lxc/remote.go:116
+#, c-format
+msgid "Remote %s exists as <%s>"
 msgstr ""
 
-#: lxc/info.go:159
-msgid "Resources:"
+#: lxc/remote.go:511 lxc/remote.go:573 lxc/remote.go:660
+#, c-format
+msgid "Remote %s is static and cannot be modified"
 msgstr ""
 
-#: lxc/main.go:248
-msgid "Restart containers."
+#: lxc/remote.go:89
+msgid "Remote admin password"
 msgstr ""
 
-#: lxc/console.go:38
-msgid "Retrieve the container's console log"
+#: lxc/utils/cancel.go:34
+msgid "Remote operation canceled by user"
 msgstr ""
 
-#: lxc/init.go:293
+#: lxc/info.go:126
 #, c-format
-msgid "Retrieving image: %s"
+msgid "Remote: %s"
 msgstr ""
 
-#: lxc/action.go:52
-msgid "Run command against all containers"
+#: lxc/delete.go:42
+#, c-format
+msgid "Remove %s (yes/no): "
 msgstr ""
 
-#: lxc/image.go:237
-msgid "SIZE"
+#: lxc/cluster.go:237 lxc/cluster.go:238
+msgid "Remove a member from the cluster"
 msgstr ""
 
-#: lxc/list.go:475
-msgid "SNAPSHOTS"
+#: lxc/alias.go:197 lxc/alias.go:198
+msgid "Remove aliases"
 msgstr ""
 
-#: lxc/storage.go:738
-msgid "SOURCE"
+#: lxc/config_device.go:404 lxc/config_device.go:405
+msgid "Remove container devices"
 msgstr ""
 
-#: lxc/cluster.go:186 lxc/list.go:476 lxc/network.go:583 lxc/storage.go:736
-msgid "STATE"
+#: lxc/profile.go:631 lxc/profile.go:632
+msgid "Remove profiles from containers"
 msgstr ""
 
-#: lxc/remote.go:414
-msgid "STATIC"
+#: lxc/remote.go:548 lxc/remote.go:549
+msgid "Remove remotes"
 msgstr ""
 
-#: lxc/operation.go:155
-msgid "STATUS"
+#: lxc/config_trust.go:196 lxc/config_trust.go:197
+msgid "Remove trusted clients"
 msgstr ""
 
-#: lxc/list.go:478
-msgid "STORAGE POOL"
+#: lxc/cluster.go:191 lxc/cluster.go:192
+msgid "Rename a cluster member"
 msgstr ""
 
-#: lxc/remote.go:71
-msgid "Server authentication type (tls or macaroons)"
+#: lxc/alias.go:146 lxc/alias.go:147 lxc/image_alias.go:249
+#: lxc/image_alias.go:250
+msgid "Rename aliases"
 msgstr ""
 
-#: lxc/remote.go:211
-msgid "Server certificate NACKed by user"
+#: lxc/rename.go:19 lxc/rename.go:20
+msgid "Rename containers and snapshots"
 msgstr ""
 
-#: lxc/remote.go:311
-msgid "Server doesn't trust us after authentication"
+#: lxc/network.go:872 lxc/network.go:873
+msgid "Rename networks"
 msgstr ""
 
-#: lxc/remote.go:70
-msgid "Server protocol (lxd or simplestreams)"
+#: lxc/profile.go:704 lxc/profile.go:705
+msgid "Rename profiles"
 msgstr ""
 
-#: lxc/file.go:66
-msgid "Set the file's gid on push"
+#: lxc/remote.go:486 lxc/remote.go:487
+msgid "Rename remotes"
 msgstr ""
 
-#: lxc/file.go:67
-msgid "Set the file's perms on push"
+#: lxc/storage_volume.go:1024 lxc/storage_volume.go:1025
+msgid "Rename storage volumes"
 msgstr ""
 
-#: lxc/file.go:65
-msgid "Set the file's uid on push"
+#: lxc/storage_volume.go:1073
+#, c-format
+msgid "Renamed storage volume from \"%s\" to \"%s\""
 msgstr ""
 
-#: lxc/help.go:29
-msgid "Show all commands (not just interesting ones)"
+#: lxc/delete.go:35
+msgid "Require user confirmation"
 msgstr ""
 
-#: lxc/help.go:75
-msgid "Show client version"
+#: lxc/info.go:163
+msgid "Resources:"
 msgstr ""
 
-#: lxc/info.go:40
-msgid "Show the container's last 100 log lines?"
+#: lxc/action.go:68
+msgid "Restart containers"
 msgstr ""
 
-#: lxc/config.go:36
-msgid "Show the expanded configuration"
+#: lxc/action.go:69
+msgid ""
+"Restart containers\n"
+"\n"
+"The opposite of \"lxc pause\" is \"lxc start\"."
 msgstr ""
 
-#: lxc/info.go:41
-msgid "Show the resources available to the server"
+#: lxc/restore.go:23
+msgid "Restore containers from snapshots"
 msgstr ""
 
-#: lxc/storage.go:163
-msgid "Show the resources available to the storage pool"
+#: lxc/restore.go:24
+msgid ""
+"Restore containers from snapshots\n"
+"\n"
+"If --stateful is passed, then the running state will be restored too."
+msgstr ""
+
+#: lxc/console.go:39
+msgid "Retrieve the container's console log"
+msgstr ""
+
+#: lxc/init.go:201
+#, c-format
+msgid "Retrieving image: %s"
+msgstr ""
+
+#: lxc/action.go:112
+msgid "Run command against all containers"
+msgstr ""
+
+#: lxc/image.go:927
+msgid "SIZE"
+msgstr ""
+
+#: lxc/list.go:472
+msgid "SNAPSHOTS"
+msgstr ""
+
+#: lxc/storage.go:551
+msgid "SOURCE"
+msgstr ""
+
+#: lxc/cluster.go:122 lxc/list.go:473 lxc/network.go:788 lxc/storage.go:549
+msgid "STATE"
+msgstr ""
+
+#: lxc/remote.go:468
+msgid "STATIC"
+msgstr ""
+
+#: lxc/operation.go:154
+msgid "STATUS"
+msgstr ""
+
+#: lxc/list.go:475
+msgid "STORAGE POOL"
+msgstr ""
+
+#: lxc/query.go:26 lxc/query.go:27
+msgid "Send a raw query to LXD"
+msgstr ""
+
+#: lxc/remote.go:91
+msgid "Server authentication type (tls or macaroons)"
+msgstr ""
+
+#: lxc/remote.go:260
+msgid "Server certificate NACKed by user"
+msgstr ""
+
+#: lxc/remote.go:360
+msgid "Server doesn't trust us after authentication"
+msgstr ""
+
+#: lxc/remote.go:90
+msgid "Server protocol (lxd or simplestreams)"
+msgstr ""
+
+#: lxc/config_device.go:492 lxc/config_device.go:493
+msgid "Set container device configuration keys"
+msgstr ""
+
+#: lxc/config.go:354 lxc/config.go:355
+msgid "Set container or server configuration keys"
+msgstr ""
+
+#: lxc/network.go:919 lxc/network.go:920
+msgid "Set network configuration keys"
+msgstr ""
+
+#: lxc/profile.go:752 lxc/profile.go:753
+msgid "Set profile configuration keys"
+msgstr ""
+
+#: lxc/storage.go:572 lxc/storage.go:573
+msgid "Set storage pool configuration keys"
+msgstr ""
+
+#: lxc/storage_volume.go:1088 lxc/storage_volume.go:1089
+msgid "Set storage volume configuration keys"
+msgstr ""
+
+#: lxc/remote.go:635 lxc/remote.go:636
+msgid "Set the URL for the remote"
+msgstr ""
+
+#: lxc/remote.go:597 lxc/remote.go:598
+msgid "Set the default remote"
+msgstr ""
+
+#: lxc/file.go:333
+msgid "Set the file's gid on push"
+msgstr ""
+
+#: lxc/file.go:334
+msgid "Set the file's perms on push"
+msgstr ""
+
+#: lxc/file.go:332
+msgid "Set the file's uid on push"
+msgstr ""
+
+#: lxc/main.go:57
+msgid "Show all debug messages"
+msgstr ""
+
+#: lxc/main.go:58
+msgid "Show all information messages"
+msgstr ""
+
+#: lxc/config_metadata.go:175 lxc/config_metadata.go:176
+msgid "Show container metadata files"
+msgstr ""
+
+#: lxc/config.go:451 lxc/config.go:452
+msgid "Show container or server configurations"
+msgstr ""
+
+#: lxc/info.go:28 lxc/info.go:29
+msgid "Show container or server information"
+msgstr ""
+
+#: lxc/config_template.go:297 lxc/config_template.go:298
+msgid "Show content of container file templates"
+msgstr ""
+
+#: lxc/cluster.go:141 lxc/cluster.go:142
+msgid "Show details of a cluster member"
+msgstr ""
+
+#: lxc/operation.go:173 lxc/operation.go:174
+msgid "Show details on a background operation"
+msgstr ""
+
+#: lxc/config_device.go:581 lxc/config_device.go:582
+msgid "Show full device configuration for containers or profiles"
+msgstr ""
+
+#: lxc/image.go:1284 lxc/image.go:1285
+msgid "Show image properties"
+msgstr ""
+
+#: lxc/main.go:61
+msgid "Show less common commands"
 msgstr ""
 
-#: lxc/storage.go:164
+#: lxc/network.go:988 lxc/network.go:989
+msgid "Show network configurations"
+msgstr ""
+
+#: lxc/profile.go:811 lxc/profile.go:812
+msgid "Show profile configurations"
+msgstr ""
+
+#: lxc/storage.go:644 lxc/storage.go:645
+msgid "Show storage pool configurations and resources"
+msgstr ""
+
+#: lxc/storage_volume.go:1165
+msgid "Show storage volum configurations"
+msgstr ""
+
+#: lxc/storage_volume.go:1166
+msgid "Show storage volume configurations"
+msgstr ""
+
+#: lxc/info.go:39
+msgid "Show the container's last 100 log lines?"
+msgstr ""
+
+#: lxc/remote.go:379 lxc/remote.go:380
+msgid "Show the default remote"
+msgstr ""
+
+#: lxc/config.go:455
+msgid "Show the expanded configuration"
+msgstr ""
+
+#: lxc/info.go:40
+msgid "Show the resources available to the server"
+msgstr ""
+
+#: lxc/storage.go:648
+msgid "Show the resources available to the storage pool"
+msgstr ""
+
+#: lxc/storage.go:386
 msgid "Show the used and free space in bytes"
 msgstr ""
 
-#: lxc/image.go:600
+#: lxc/image.go:775 lxc/image.go:776
+msgid "Show useful information about images"
+msgstr ""
+
+#: lxc/storage.go:382 lxc/storage.go:383
+msgid "Show useful information about storage pools"
+msgstr ""
+
+#: lxc/image.go:825
 #, c-format
 msgid "Size: %.2fMB"
 msgstr ""
 
-#: lxc/info.go:240
+#: lxc/info.go:244
 msgid "Snapshots:"
 msgstr ""
 
-#: lxc/action.go:163
+#: lxc/action.go:242
 #, c-format
 msgid "Some containers failed to %s"
 msgstr ""
 
-#: lxc/image.go:634
+#: lxc/image.go:867
 msgid "Source:"
 msgstr ""
 
-#: lxc/main.go:258
-msgid "Start containers."
+#: lxc/action.go:29 lxc/action.go:30
+msgid "Start containers"
 msgstr ""
 
-#: lxc/launch.go:59
+#: lxc/launch.go:62
 #, c-format
 msgid "Starting %s"
 msgstr ""
 
-#: lxc/info.go:130
+#: lxc/info.go:134
 #, c-format
 msgid "Status: %s"
 msgstr ""
 
-#: lxc/main.go:264
-msgid "Stop containers."
+#: lxc/action.go:90 lxc/action.go:91
+msgid "Stop containers"
 msgstr ""
 
-#: lxc/publish.go:37 lxc/publish.go:38
+#: lxc/publish.go:40
 msgid "Stop the container if currently running"
 msgstr ""
 
-#: lxc/publish.go:136
+#: lxc/publish.go:144
 msgid "Stopping container failed!"
 msgstr ""
 
-#: lxc/delete.go:121
+#: lxc/delete.go:120
 #, c-format
 msgid "Stopping the container failed: %s"
 msgstr ""
 
-#: lxc/storage.go:538
+#: lxc/storage.go:144
 #, c-format
 msgid "Storage pool %s created"
 msgstr ""
 
-#: lxc/storage.go:598
+#: lxc/storage.go:194
 #, c-format
 msgid "Storage pool %s deleted"
 msgstr ""
 
-#: lxc/storage.go:536
+#: lxc/storage.go:142
 #, c-format
 msgid "Storage pool %s pending on node %s"
 msgstr ""
 
-#: lxc/init.go:147 lxc/init.go:148
+#: lxc/init.go:46
 msgid "Storage pool name"
 msgstr ""
 
-#: lxc/storage.go:980
+#: lxc/storage_volume.go:484
 #, c-format
 msgid "Storage volume %s created"
 msgstr ""
 
-#: lxc/storage.go:1000
+#: lxc/storage_volume.go:545
 #, c-format
 msgid "Storage volume %s deleted"
 msgstr ""
 
-#: lxc/storage.go:1135
+#: lxc/storage_volume.go:388
 msgid "Storage volume copied successfully!"
 msgstr ""
 
-#: lxc/storage.go:1129
+#: lxc/storage_volume.go:376
 msgid "Storage volume moved successfully!"
 msgstr ""
 
-#: lxc/action.go:50
-msgid "Store the container state (only for stop)"
+#: lxc/action.go:115
+msgid "Store the container state"
 msgstr ""
 
-#: lxc/info.go:201
+#: lxc/info.go:205
 msgid "Swap (current)"
 msgstr ""
 
-#: lxc/info.go:205
+#: lxc/info.go:209
 msgid "Swap (peak)"
 msgstr ""
 
-#: lxc/alias.go:85
+#: lxc/alias.go:128
 msgid "TARGET"
 msgstr ""
 
-#: lxc/list.go:477 lxc/network.go:516 lxc/network.go:577 lxc/operation.go:153
-#: lxc/storage.go:935
+#: lxc/list.go:474 lxc/network.go:782 lxc/network.go:854 lxc/operation.go:152
+#: lxc/storage_volume.go:965
 msgid "TYPE"
 msgstr ""
 
-#: lxc/delete.go:105
+#: lxc/delete.go:104
 msgid "The container is currently running, stop it first or pass --force."
 msgstr ""
 
-#: lxc/publish.go:101
+#: lxc/publish.go:109
 msgid ""
 "The container is currently running. Use --force to have it stopped and "
 "restarted."
 msgstr ""
 
-#: lxc/init.go:372
+#: lxc/init.go:280
 msgid "The container you are starting doesn't have any network attached to it."
 msgstr ""
 
-#: lxc/config.go:944 lxc/config.go:961 lxc/config.go:1240
+#: lxc/config_device.go:130 lxc/config_device.go:147 lxc/config_device.go:354
 msgid "The device already exists"
 msgstr ""
 
-#: lxc/config.go:1007 lxc/config.go:1019 lxc/config.go:1055 lxc/config.go:1073
-#: lxc/config.go:1119 lxc/config.go:1136 lxc/config.go:1179 lxc/config.go:1197
+#: lxc/config_device.go:218 lxc/config_device.go:230 lxc/config_device.go:442
+#: lxc/config_device.go:460 lxc/config_device.go:533 lxc/config_device.go:550
 msgid "The device doesn't exist"
 msgstr ""
 
-#: lxc/init.go:356
+#: lxc/init.go:264
 #, c-format
 msgid "The local image '%s' couldn't be found, trying '%s:%s' instead."
 msgstr ""
 
-#: lxc/init.go:352
+#: lxc/init.go:260
 #, c-format
 msgid "The local image '%s' couldn't be found, trying '%s:' instead."
 msgstr ""
 
-#: lxc/action.go:35
-msgid "The opposite of \"lxc pause\" is \"lxc start\"."
-msgstr ""
-
-#: lxc/config.go:1245
+#: lxc/config_device.go:359
 msgid "The profile device doesn't exist"
 msgstr ""
 
-#: lxc/network.go:317 lxc/network.go:370 lxc/storage.go:449 lxc/storage.go:579
+#: lxc/network.go:425 lxc/network.go:510 lxc/storage_volume.go:619
+#: lxc/storage_volume.go:700
 msgid "The specified device doesn't exist"
 msgstr ""
 
-#: lxc/network.go:321 lxc/network.go:374
+#: lxc/network.go:429 lxc/network.go:514
 msgid "The specified device doesn't match the network"
 msgstr ""
 
-#: lxc/publish.go:74
+#: lxc/publish.go:82
 msgid "There is no \"image name\".  Did you want an alias?"
 msgstr ""
 
-#: lxc/help.go:47
-msgid ""
-"This is the LXD command line client.\n"
-"\n"
-"All of LXD's features can be driven through the various commands below.\n"
-"For help with any of those, simply call them with --help."
-msgstr ""
-
-#: lxc/action.go:46
+#: lxc/action.go:122
 msgid "Time to wait for the container before killing it"
 msgstr ""
 
-#: lxc/image.go:603
+#: lxc/image.go:828
 msgid "Timestamps:"
 msgstr ""
 
-#: lxc/init.go:374
+#: lxc/init.go:282
 msgid "To attach a network to a container, use: lxc network attach"
 msgstr ""
 
-#: lxc/init.go:373
+#: lxc/init.go:281
 msgid "To create a new network, use: lxc network create"
 msgstr ""
 
-#: lxc/console.go:173
+#: lxc/console.go:185
 msgid "To detach from the console, press: <ctrl>+a q"
 msgstr ""
 
-#: lxc/main.go:172
+#: lxc/main.go:260
 msgid "To start your first container, try: lxc launch ubuntu:16.04"
 msgstr ""
 
-#: lxc/copy.go:43 lxc/move.go:43
+#: lxc/storage_volume.go:997
+msgid "Transfer mode, one of pull (default), push or relay"
+msgstr ""
+
+#: lxc/copy.go:42
+msgid "Transfer mode. One of pull (default), push or relay"
+msgstr ""
+
+#: lxc/move.go:45 lxc/storage_volume.go:286
 msgid "Transfer mode. One of pull (default), push or relay."
 msgstr ""
 
-#: lxc/copy.go:212
+#: lxc/copy.go:229
 #, c-format
 msgid "Transferring container: %s"
 msgstr ""
 
-#: lxc/image.go:717
+#: lxc/image.go:687
 #, c-format
 msgid "Transferring image: %s"
 msgstr ""
 
-#: lxc/action.go:108 lxc/launch.go:77
+#: lxc/action.go:181 lxc/launch.go:80
 #, c-format
 msgid "Try `lxc info --show-log %s` for more info"
 msgstr ""
 
-#: lxc/info.go:132
+#: lxc/info.go:136
 msgid "Type: ephemeral"
 msgstr ""
 
-#: lxc/info.go:134
+#: lxc/info.go:138
 msgid "Type: persistent"
 msgstr ""
 
-#: lxc/image.go:238
+#: lxc/image.go:928
 msgid "UPLOAD DATE"
 msgstr ""
 
-#: lxc/cluster.go:184 lxc/remote.go:410
+#: lxc/cluster.go:120 lxc/remote.go:464
 msgid "URL"
 msgstr ""
 
-#: lxc/network.go:580 lxc/profile.go:574 lxc/storage.go:740 lxc/storage.go:938
+#: lxc/network.go:785 lxc/profile.go:614 lxc/storage.go:553
+#: lxc/storage_volume.go:968
 msgid "USED BY"
 msgstr ""
 
-#: lxc/manpage.go:36
-msgid "Unable to find help2man."
+#: lxc/list.go:514
+#, c-format
+msgid "Unknown column shorthand char '%c' in '%s'"
 msgstr ""
 
-#: lxc/file.go:124
+#: lxc/file.go:596
 #, c-format
 msgid "Unknown file type '%s'"
 msgstr ""
 
-#: lxc/image.go:608
-#, c-format
-msgid "Uploaded: %s"
+#: lxc/config_device.go:649 lxc/config_device.go:650
+msgid "Unset container device configuration keys"
 msgstr ""
 
-#: lxc/action.go:38
-#, c-format
-msgid ""
-"Usage: lxc %s [--all] [<remote>:]<container> [[<remote>:]<container>...]\n"
-"\n"
-"%s%s"
+#: lxc/config.go:559 lxc/config.go:560
+msgid "Unset container or server configuration keys"
 msgstr ""
 
-#: lxc/help.go:45
-msgid "Usage: lxc <command> [options]"
+#: lxc/network.go:1050 lxc/network.go:1051
+msgid "Unset network configuration keys"
 msgstr ""
 
-#: lxc/alias.go:22
-msgid ""
-"Usage: lxc alias <subcommand> [options]\n"
-"\n"
-"Manage command aliases.\n"
-"\n"
-"lxc alias add <alias> <target>\n"
-"    Add a new alias <alias> pointing to <target>.\n"
-"\n"
-"lxc alias remove <alias>\n"
-"    Remove the alias <alias>.\n"
-"\n"
-"lxc alias list\n"
-"    List all the aliases.\n"
-"\n"
-"lxc alias rename <old alias> <new alias>\n"
-"    Rename remote <old alias> to <new alias>."
+#: lxc/profile.go:865 lxc/profile.go:866
+msgid "Unset profile configuration keys"
 msgstr ""
 
-#: lxc/cluster.go:23
-msgid ""
-"Usage: lxc cluster <subcommand> [options]\n"
-"\n"
-"Manage cluster nodes.\n"
-"\n"
-"lxc cluster list [<remote>:]\n"
-"    List all nodes in the cluster.\n"
-"\n"
-"lxc cluster show [<remote>:]<node>\n"
-"    Show details of a node.\n"
-"\n"
-"lxc cluster rename [<remote>:]<node> <new-name>\n"
-"    Rename a cluster node.\n"
-"\n"
-"lxc cluster delete [<remote>:]<node> [--force]\n"
-"    Delete a node from the cluster."
+#: lxc/storage.go:728 lxc/storage.go:729
+msgid "Unset storage pool configuration keys"
 msgstr ""
 
-#: lxc/config.go:85
-msgid ""
-"Usage: lxc config <subcommand> [options]\n"
-"\n"
-"Change container or server configuration options.\n"
-"\n"
-"*Container configuration*\n"
-"\n"
-"lxc config get [<remote>:][container] <key>\n"
-"    Get container or server configuration key.\n"
-"\n"
-"lxc config set [<remote>:][container] <key> <value>\n"
-"    Set container or server configuration key.\n"
-"\n"
-"lxc config unset [<remote>:][container] <key>\n"
-"    Unset container or server configuration key.\n"
-"\n"
-"lxc config show [<remote>:][container] [--expanded]\n"
-"    Show container or server configuration.\n"
-"\n"
-"lxc config edit [<remote>:][container]\n"
-"    Edit configuration, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"*Container metadata*\n"
-"\n"
-"lxc config metadata show [<remote>:][container]\n"
-"    Show the container metadata.yaml content.\n"
-"\n"
-"lxc config metadata edit [<remote>:][container]\n"
-"    Edit the container metadata.yaml, either by launching external editor or "
-"reading STDIN.\n"
-"\n"
-"*Container templates*\n"
-"\n"
-"lxc config template list [<remote>:][container]\n"
-"    List the names of template files for a container.\n"
-"\n"
-"lxc config template show [<remote>:][container] [template]\n"
-"    Show the content of a template file for a container.\n"
-"\n"
-"lxc config template create [<remote>:][container] [template]\n"
-"    Add an empty template file for a container.\n"
-"\n"
-"lxc config template edit [<remote>:][container] [template]\n"
-"    Edit the content of a template file for a container, either by launching "
-"external editor or reading STDIN.\n"
-"\n"
-"lxc config template delete [<remote>:][container] [template]\n"
-"    Delete a template file for a container.\n"
-"\n"
-"\n"
-"*Device management*\n"
-"\n"
-"lxc config device add [<remote>:]<container> <device> <type> [key=value...]\n"
-"    Add a device to a container.\n"
-"\n"
-"lxc config device get [<remote>:]<container> <device> <key>\n"
-"    Get a device property.\n"
-"\n"
-"lxc config device set [<remote>:]<container> <device> <key> <value>\n"
-"    Set a device property.\n"
-"\n"
-"lxc config device unset [<remote>:]<container> <device> <key>\n"
-"    Unset a device property.\n"
-"\n"
-"lxc config device override [<remote>:]<container> <device> [key=value...]\n"
-"    Copy a profile inherited device into local container config.\n"
-"\n"
-"lxc config device list [<remote>:]<container>\n"
-"    List devices for container.\n"
-"\n"
-"lxc config device show [<remote>:]<container>\n"
-"    Show full device details for container.\n"
-"\n"
-"lxc config device remove [<remote>:]<container> <name>...\n"
-"    Remove device from container.\n"
-"\n"
-"*Client trust store management*\n"
-"\n"
-"lxc config trust list [<remote>:]\n"
-"    List all trusted certs.\n"
-"\n"
-"lxc config trust add [<remote>:] <certfile.crt>\n"
-"    Add certfile.crt to trusted hosts.\n"
-"\n"
-"lxc config trust remove [<remote>:] [hostname|fingerprint]\n"
-"    Remove the cert from trusted hosts.\n"
-"\n"
-"*Examples*\n"
-"\n"
-"cat config.yaml | lxc config edit <container>\n"
-"    Update the container configuration from config.yaml.\n"
-"\n"
-"lxc config device add [<remote>:]container1 <device-name> disk source=/share/"
-"c1 path=opt\n"
-"    Will mount the host's /share/c1 onto /opt in the container.\n"
-"\n"
-"lxc config set [<remote>:]<container> limits.cpu 2\n"
-"    Will set a CPU limit of \"2\" for the container.\n"
-"\n"
-"lxc config set core.https_address [::]:8443\n"
-"    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
-"\n"
-"lxc config set core.trust_password blah\n"
-"    Will set the server's trust password to blah."
+#: lxc/storage_volume.go:1240 lxc/storage_volume.go:1241
+msgid "Unset storage volume configuration keys"
 msgstr ""
 
-#: lxc/console.go:31
-msgid ""
-"Usage: lxc console [<remote>:]<container> [-l]\n"
-"\n"
-"Interact with the container's console device and log."
+#: lxc/image.go:835
+#, c-format
+msgid "Uploaded: %s"
 msgstr ""
 
-#: lxc/copy.go:30
-msgid ""
-"Usage: lxc copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>] "
-"[--ephemeral|e] [--profile|-p <profile>...] [--config|-c <key=value>...] [--"
-"container-only] [--target <node>]\n"
-"\n"
-"Copy containers within or in between LXD instances."
+#: lxc/delete.go:47
+msgid "User aborted delete operation"
 msgstr ""
 
-#: lxc/delete.go:27
+#: lxc/utils/cancel.go:40
 msgid ""
-"Usage: lxc delete [<remote>:]<container>[/<snapshot>] "
-"[[<remote>:]<container>[/<snapshot>]...]\n"
-"\n"
-"Delete containers and snapshots."
+"User signaled us three times, exiting. The remote operation will keep "
+"running."
 msgstr ""
 
-#: lxc/exec.go:53
-msgid ""
-"Usage: lxc exec [<remote>:]<container> [-t] [-T] [-n] [--mode=auto|"
-"interactive|non-interactive] [--env KEY=VALUE...] [--] <command line>\n"
-"\n"
-"Execute commands in containers.\n"
-"\n"
-"The command is executed directly using exec, so there is no shell and shell "
-"patterns (variables, file redirects, ...)\n"
-"won't be understood. If you need a shell environment you need to execute the "
-"shell executable, passing the shell commands\n"
-"as arguments, for example:\n"
-"\n"
-"    lxc exec <container> -- sh -c \"cd /tmp && pwd\"\n"
-"\n"
-"Mode defaults to non-interactive, interactive mode is selected if both stdin "
-"AND stdout are terminals (stderr is ignored)."
+#: lxc/query.go:35
+msgid "Wait for the operation to complete"
 msgstr ""
 
-#: lxc/file.go:39
+#: lxc/restore.go:36
 msgid ""
-"Usage: lxc file <subcommand> [options]\n"
-"\n"
-"Manage files in containers.\n"
-"\n"
-"lxc file pull [-r|--recursive] [<remote>:]<container>/<path> "
-"[[<remote>:]<container>/<path>...] <target path>\n"
-"    Pull files from containers.\n"
-"\n"
-"lxc file push [-r|--recursive] [-p|--create-dirs] [--uid=UID] [--gid=GID] [--"
-"mode=MODE] <source path> [<source path>...] [<remote>:]<container>/<path>\n"
-"    Push files into containers.\n"
-"\n"
-"lxc file delete [<remote>:]<container>/<path> [[<remote>:]<container>/"
-"<path>...]\n"
-"    Delete files in containers.\n"
-"\n"
-"lxc file edit [<remote>:]<container>/<path>\n"
-"    Edit files in containers using the default text editor.\n"
-"\n"
-"*Examples*\n"
-"lxc file push /etc/hosts foo/etc/hosts\n"
-"   To push /etc/hosts into the container \"foo\".\n"
-"\n"
-"lxc file pull foo/etc/hosts .\n"
-"   To pull /etc/hosts from the container and write it to the current "
-"directory."
+"Whether or not to restore the container's running state from snapshot (if "
+"available)"
 msgstr ""
 
-#: lxc/finger.go:15
-msgid ""
-"Usage: lxc finger [<remote>:]\n"
-"\n"
-"Check if the LXD server is alive."
+#: lxc/snapshot.go:31
+msgid "Whether or not to snapshot the container's running state"
 msgstr ""
 
-#: lxc/help.go:22
-msgid ""
-"Usage: lxc help [--all]\n"
-"\n"
-"Help page for the LXD client."
+#: lxc/network.go:765 lxc/operation.go:140 lxc/remote.go:436 lxc/remote.go:441
+msgid "YES"
 msgstr ""
 
-#: lxc/image.go:73
-msgid ""
-"Usage: lxc image <subcommand> [options]\n"
-"\n"
-"Manipulate container images.\n"
-"\n"
-"In LXD containers are created from images. Those images were themselves\n"
-"either generated from an existing container or downloaded from an image\n"
-"server.\n"
-"\n"
-"When using remote images, LXD will automatically cache images for you\n"
-"and remove them upon expiration.\n"
-"\n"
-"The image unique identifier is the hash (sha-256) of its representation\n"
-"as a compressed tarball (or for split images, the concatenation of the\n"
-"metadata and rootfs tarballs).\n"
-"\n"
-"Images can be referenced by their full hash, shortest unique partial\n"
-"hash or alias name (if one is set).\n"
-"\n"
-"\n"
-"lxc image import <tarball>|<dir> [<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) or an image directory into the LXD "
-"image store.\n"
-"    Directory import is only available on Linux and must be performed as "
-"root.\n"
-"\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"
-"    Delete one or more images from the LXD image store.\n"
-"\n"
-"lxc image refresh [<remote>:]<image> [[<remote>:]<image>...]\n"
-"    Refresh one or more images from its parent remote.\n"
-"\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"
-"    The target may be an existing directory, file name, or \"-\" to specify\n"
-"    stdout.  The target MUST be a directory when exporting a split image.\n"
-"    If the target is a directory, the image's name (each part's name for\n"
-"    split images) as found in the database will be used for the exported\n"
-"    image.  If the target is a file (not a directory and not stdout), then\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"
-"    Print everything LXD knows about a given image.\n"
-"\n"
-"lxc image list [<remote>:] [filter] [--format csv|json|table|yaml] [-c "
-"<columns>]\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"
-"    The -c option takes a (optionally comma-separated) list of arguments "
-"that\n"
-"    control which image attributes to output when displaying in table or "
-"csv\n"
-"    format.\n"
-"\n"
-"    Default column layout is: lfpdasu\n"
-"\n"
-"    Column shorthand chars:\n"
-"\n"
-"        l - Shortest image alias (and optionally number of other aliases)\n"
-"\n"
-"        L - Newline-separated list of all image aliases\n"
-"\n"
-"        f - Fingerprint\n"
-"\n"
-"        p - Whether image is public\n"
-"\n"
-"        d - Description\n"
-"\n"
-"        a - Architecture\n"
-"\n"
-"        s - Size\n"
-"\n"
-"        u - Upload date\n"
-"\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"
-"    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"
-"    Create a new alias for an existing image.\n"
-"\n"
-"lxc image alias rename [<remote>:]<alias> <new-name>\n"
-"    Rename an alias.\n"
-"\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."
+#: lxc/exec.go:122
+msgid "You can't pass -t and -T at the same time"
 msgstr ""
 
-#: lxc/info.go:27
+#: lxc/exec.go:126
+msgid "You can't pass -t or -T at the same time as --mode"
+msgstr ""
+
+#: lxc/copy.go:78
+msgid "You must specify a destination container name when using --target"
+msgstr ""
+
+#: lxc/copy.go:73 lxc/move.go:188
+msgid "You must specify a source container name"
+msgstr ""
+
+#: lxc/copy.go:68 lxc/move.go:91 lxc/move.go:183
+msgid "You must use the same source and destination remote when using --target"
+msgstr ""
+
+#: lxc/alias.go:53
+msgid "add <alias> <target>"
+msgstr ""
+
+#: lxc/config_trust.go:57
+msgid "add [<remote>:] <cert>"
+msgstr ""
+
+#: lxc/profile.go:100
+msgid "add [<remote>:]<container> <profile>"
+msgstr ""
+
+#: lxc/config_device.go:74
+msgid "add [<remote>:]<container|profile> <device> <type> [key=value...]"
+msgstr ""
+
+#: lxc/remote.go:82
+msgid "add [<remote>] <IP|FQDN|URL>"
+msgstr ""
+
+#: lxc/alias.go:21 lxc/image_alias.go:24
+msgid "alias"
+msgstr ""
+
+#: lxc/profile.go:160
+msgid "assign [<remote>:]<container> <profiles>"
+msgstr ""
+
+#: lxc/network.go:102
+msgid "attach [<remote>:]<network> <container> [device name] [interface name]"
+msgstr ""
+
+#: lxc/storage_volume.go:120
+msgid "attach [<remote>:]<pool> <volume> <container> [device name] <path>"
+msgstr ""
+
+#: lxc/storage_volume.go:199
 msgid ""
-"Usage: lxc info [<remote>:][<container>] [--show-log] [--resources]\n"
-"\n"
-"Show container or server information.\n"
-"\n"
-"lxc info [<remote>:]<container> [--show-log]\n"
-"    For container information.\n"
-"\n"
-"lxc info [<remote>:] [--resources]\n"
-"    For LXD server information."
+"attach-profile [<remote:>]<pool> <volume> <profile> [device name] <path>"
 msgstr ""
 
-#: lxc/init.go:79
+#: lxc/network.go:175
 msgid ""
-"Usage: lxc init [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
-"profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
-"<node>]\n"
-"\n"
-"Create containers from images.\n"
-"\n"
-"Not specifying -p will result in the default profile.\n"
-"Specifying \"-p\" with no argument will result in no profile.\n"
-"\n"
-"Examples:\n"
-"    lxc init ubuntu:16.04 u1"
+"attach-profile [<remote>:]<network> <profile> [device name] [interface name]"
+msgstr ""
+
+#: lxc/cluster.go:24
+msgid "cluster"
+msgstr ""
+
+#: lxc/config.go:27
+msgid "config"
+msgstr ""
+
+#: lxc/console.go:30
+msgid "console [<remote>:]<container>"
+msgstr ""
+
+#: lxc/storage_volume.go:280
+msgid "copy <pool>/<volume> <pool>/<volume>"
+msgstr ""
+
+#: lxc/image.go:128
+msgid "copy [<remote>:]<image> <remote>:"
+msgstr ""
+
+#: lxc/profile.go:238
+msgid "copy [<remote>:]<profile> [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/copy.go:32
+msgid "copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>]"
+msgstr ""
+
+#: lxc/image_alias.go:57
+msgid "create [<remote>:]<alias> <fingerprint>"
+msgstr ""
+
+#: lxc/config_template.go:65
+msgid "create [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/network.go:248
+msgid "create [<remote>:]<network> [key=value...]"
+msgstr ""
+
+#: lxc/storage.go:87
+msgid "create [<remote>:]<pool> <driver> [key=value]..."
+msgstr ""
+
+#: lxc/storage_volume.go:424
+msgid "create [<remote>:]<pool> <volume> [key=value]..."
+msgstr ""
+
+#: lxc/profile.go:295
+msgid "create [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/remote.go:453
+msgid "default"
+msgstr ""
+
+#: lxc/image_alias.go:103
+msgid "delete [<remote>:]<alias>"
+msgstr ""
+
+#: lxc/config_template.go:107
+msgid "delete [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/file.go:70
+msgid "delete [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...]"
+msgstr ""
+
+#: lxc/delete.go:27
+msgid ""
+"delete [<remote>:]<container>[/<snapshot>] [[<remote>:]<container>[/"
+"<snapshot>]...]"
+msgstr ""
+
+#: lxc/image.go:258
+msgid "delete [<remote>:]<image> [[<remote>:]<image>...]"
+msgstr ""
+
+#: lxc/network.go:317
+msgid "delete [<remote>:]<network>"
+msgstr ""
+
+#: lxc/operation.go:51
+msgid "delete [<remote>:]<operation>"
+msgstr ""
+
+#: lxc/storage.go:158
+msgid "delete [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:498
+msgid "delete [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:345
+msgid "delete [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/storage.go:431
+msgid "description"
+msgstr ""
+
+#: lxc/network.go:365
+msgid "detach [<remote>:]<network> <container> [device name]"
+msgstr ""
+
+#: lxc/storage_volume.go:559
+msgid "detach [<remote>:]<pool> <volume> <container> [device name]"
+msgstr ""
+
+#: lxc/storage_volume.go:641
+msgid "detach-profile [<remote:>]<pool> <volume> <profile> [device name]"
+msgstr ""
+
+#: lxc/network.go:450
+msgid "detach-profile [<remote>:]<network> <container> [device name]"
+msgstr ""
+
+#: lxc/config_device.go:22
+msgid "device"
+msgstr ""
+
+#: lxc/init.go:223
+msgid "didn't get any affected image, container or snapshot from server"
+msgstr ""
+
+#: lxc/image.go:819
+msgid "disabled"
+msgstr ""
+
+#: lxc/storage.go:430
+msgid "driver"
+msgstr ""
+
+#: lxc/config_template.go:150
+msgid "edit [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/file.go:120
+msgid "edit [<remote>:]<container>/<path>"
+msgstr ""
+
+#: lxc/image.go:310
+msgid "edit [<remote>:]<image>"
+msgstr ""
+
+#: lxc/network.go:535
+msgid "edit [<remote>:]<network>"
+msgstr ""
+
+#: lxc/storage.go:206
+msgid "edit [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:722
+msgid "edit [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:394
+msgid "edit [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/config.go:86 lxc/config_metadata.go:52
+msgid "edit [<remote>:][container]"
+msgstr ""
+
+#: lxc/image.go:821
+msgid "enabled"
+msgstr ""
+
+#: lxc/action.go:234
+#, c-format
+msgid "error: %v"
+msgstr ""
+
+#: lxc/exec.go:37
+msgid "exec [<remote>:]<container> [flags] [--] <command line>"
+msgstr ""
+
+#: lxc/image.go:433
+msgid "export [<remote>:]<image> [target]"
+msgstr ""
+
+#: lxc/file.go:38
+msgid "file"
+msgstr ""
+
+#: lxc/config_device.go:177
+msgid "get [<remote>:]<container|profile> <device> <key>"
+msgstr ""
+
+#: lxc/network.go:658
+msgid "get [<remote>:]<network> <key>"
+msgstr ""
+
+#: lxc/storage.go:326
+msgid "get [<remote>:]<pool> <key>"
+msgstr ""
+
+#: lxc/storage_volume.go:851
+msgid "get [<remote>:]<pool> <volume> <key>"
+msgstr ""
+
+#: lxc/profile.go:518
+msgid "get [<remote>:]<profile> <key>"
+msgstr ""
+
+#: lxc/config.go:287
+msgid "get [<remote>:][container] <key>"
+msgstr ""
+
+#: lxc/remote.go:378
+msgid "get-default"
+msgstr ""
+
+#: lxc/image.go:40
+msgid "image"
+msgstr ""
+
+#: lxc/image.go:569
+msgid ""
+"import <tarball>|<directory>|<URL> [<rootfs tarball>] [<remote>:] "
+"[key=value...]"
+msgstr ""
+
+#: lxc/storage.go:428
+msgid "info"
+msgstr ""
+
+#: lxc/image.go:774
+msgid "info [<remote>:]<image>"
+msgstr ""
+
+#: lxc/storage.go:381
+msgid "info [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/info.go:27
+msgid "info [<remote>:][<container>]"
+msgstr ""
+
+#: lxc/init.go:33
+msgid "init [<remote>:]<image> [<remote>:][<name>]"
 msgstr ""
 
 #: lxc/launch.go:20
+msgid "launch [<remote>:]<image> [<remote>:][<name>]"
+msgstr ""
+
+#: lxc/alias.go:96 lxc/remote.go:411
+msgid "list"
+msgstr ""
+
+#: lxc/cluster.go:56 lxc/config_trust.go:112 lxc/network.go:716
+#: lxc/operation.go:95 lxc/profile.go:565 lxc/storage.go:488
+msgid "list [<remote>:]"
+msgstr ""
+
+#: lxc/image.go:887
+msgid "list [<remote>:] [filter]"
+msgstr ""
+
+#: lxc/image_alias.go:146
+msgid "list [<remote>:] [filters...]"
+msgstr ""
+
+#: lxc/list.go:45
+msgid "list [<remote>:] [filters]"
+msgstr ""
+
+#: lxc/config_template.go:234
+msgid "list [<remote>:]<container>"
+msgstr ""
+
+#: lxc/config_device.go:249
+msgid "list [<remote>:]<container|profile>"
+msgstr ""
+
+#: lxc/storage_volume.go:915
+msgid "list [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/network.go:806
+msgid "list-leases [<remote>:]<network>"
+msgstr ""
+
+#: lxc/alias.go:57
 msgid ""
-"Usage: lxc launch [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
-"profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
-"<node>]\n"
-"\n"
-"Create and start containers from images.\n"
-"\n"
-"Not specifying -p will result in the default profile.\n"
-"Specifying \"-p\" with no argument will result in no profile.\n"
-"\n"
-"Examples:\n"
-"    lxc launch ubuntu:16.04 u1"
+"lxc alias add list list -c ns46S\n"
+"    Overwrite the \"list\" command to pass -c ns46S."
 msgstr ""
 
-#: lxc/list.go:44
+#: lxc/alias.go:200
 msgid ""
-"Usage: lxc list [<remote>:] [filters] [--format csv|json|table|yaml] [-c "
-"<columns>] [--fast]\n"
-"\n"
-"List the existing containers.\n"
-"\n"
-"Default column layout: ns46tS\n"
-"Fast column layout: nsacPt\n"
-"\n"
-"*Filters*\n"
-"A single keyword like \"web\" which will list any container with a name "
-"starting by \"web\".\n"
-"\n"
-"A regular expression on the container name. (e.g. .*web.*01$).\n"
-"\n"
-"A key/value pair referring to a configuration item. For those, the namespace "
-"can be abbreviated to the smallest unambiguous identifier.\n"
-"\t- \"user.blah=abc\" will list all containers with the \"blah\" user "
-"property set to \"abc\".\n"
-"\n"
-"\t- \"u.blah=abc\" will do the same\n"
-"\n"
-"\t- \"security.privileged=true\" will list all privileged containers\n"
-"\n"
-"\t- \"s.privileged=true\" will do the same\n"
-"\n"
-"A regular expression matching a configuration item or its value. (e.g. "
-"volatile.eth0.hwaddr=00:16:3e:.*).\n"
-"\n"
-"*Columns*\n"
-"The -c option takes a comma separated list of arguments that control\n"
-"which container attributes to output when displaying in table or csv\n"
-"format.\n"
-"\n"
-"Column arguments are either pre-defined shorthand chars (see below),\n"
-"or (extended) config keys.\n"
-"\n"
-"Commas between consecutive shorthand chars are optional.\n"
-"\n"
-"Pre-defined column shorthand chars:\n"
-"\n"
-"\t4 - IPv4 address\n"
-"\n"
-"\t6 - IPv6 address\n"
-"\n"
-"\ta - Architecture\n"
-"\n"
-"\tb - Storage pool\n"
-"\n"
-"\tc - Creation date\n"
-"\n"
-"\td - Description\n"
-"\n"
-"\tl - Last used date\n"
-"\n"
-"\tn - Name\n"
-"\n"
-"\tN - Number of Processes\n"
-"\n"
-"\tp - PID of the container's init process\n"
-"\n"
-"\tP - Profiles\n"
-"\n"
-"\ts - State\n"
-"\n"
-"\tS - Number of snapshots\n"
-"\n"
-"\tt - Type (persistent or ephemeral)\n"
-"\n"
-"\tL - Location of the container (e.g. its node)\n"
-"\n"
-"Custom columns are defined with \"key[:name][:maxWidth]\":\n"
-"\n"
-"\tKEY: The (extended) config key to display\n"
-"\n"
-"\tNAME: Name to display in the column header.\n"
-"\tDefaults to the key if not specified or empty.\n"
-"\n"
-"\tMAXWIDTH: Max width of the column (longer results are truncated).\n"
-"\tDefaults to -1 (unlimited). Use 0 to limit to the column header size.\n"
-"\n"
-"*Examples*\n"
-"lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:"
-"MAC\n"
-"\tShows a list of containers using the \"NAME\", \"BASE IMAGE\", \"STATE\", "
-"\"IPV4\",\n"
-"\t\"IPV6\" and \"MAC\" columns.\n"
+"lxc alias remove my-list\n"
+"    Remove the \"my-list\" alias."
+msgstr ""
+
+#: lxc/alias.go:149
+msgid ""
+"lxc alias rename list my-list\n"
+"    Rename existing alias \"list\" to \"my-list\"."
+msgstr ""
+
+#: lxc/config_device.go:78
+msgid ""
+"lxc config device add [<remote>:]container1 <device-name> disk source=/share/"
+"c1 path=opt\n"
+"    Will mount the host's /share/c1 onto /opt in the container."
+msgstr ""
+
+#: lxc/config.go:90
+msgid ""
+"lxc config edit <container> < container.yaml\n"
+"    Update the container configuration from config.yaml."
+msgstr ""
+
+#: lxc/config.go:357
+msgid ""
+"lxc config set [<remote>:]<container> limits.cpu 2\n"
+"    Will set a CPU limit of \"2\" for the container.\n"
 "\n"
-"\t\"BASE IMAGE\" and \"MAC\" are custom columns generated from container "
-"configuration keys.\n"
+"lxc config set core.https_address [::]:8443\n"
+"    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
 "\n"
-"lxc list -c ns,user.comment:comment\n"
-"\tList images with their running state and user comment. "
+"lxc config set core.trust_password blah\n"
+"    Will set the server's trust password to blah."
 msgstr ""
 
-#: lxc/manpage.go:20
+#: lxc/file.go:187
 msgid ""
-"Usage: lxc manpage <directory>\n"
-"\n"
-"Generate all the LXD manpages."
+"lxc file pull foo/etc/hosts .\n"
+"   To pull /etc/hosts from the container and write it to the current "
+"directory."
 msgstr ""
 
-#: lxc/monitor.go:49
+#: lxc/file.go:326
 msgid ""
-"Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
-"\n"
-"Monitor a local or remote LXD server.\n"
+"lxc file push /etc/hosts foo/etc/hosts\n"
+"   To push /etc/hosts into the container \"foo\"."
+msgstr ""
+
+#: lxc/image.go:314
+msgid ""
+"lxc image edit <image>\n"
+"    Launch a text editor to edit the properties\n"
 "\n"
-"By default the monitor will listen to all message types.\n"
+"lxc image edit <image> < image.yaml\n"
+"    Load the image properties from a YAML file"
+msgstr ""
+
+#: lxc/info.go:31
+msgid ""
+"lxc info [<remote>:]<container> [--show-log]\n"
+"    For container information.\n"
 "\n"
-"Message types to listen for can be specified with --type.\n"
+"lxc info [<remote>:] [--resources]\n"
+"    For LXD server information."
+msgstr ""
+
+#: lxc/init.go:37
+msgid "lxc init ubuntu:16.04 u1"
+msgstr ""
+
+#: lxc/launch.go:24
+msgid "lxc launch ubuntu:16.04 u1"
+msgstr ""
+
+#: lxc/list.go:103
+msgid ""
+"lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:"
+"MAC\n"
+"  Show containers using the \"NAME\", \"BASE IMAGE\", \"STATE\", \"IPV4\", "
+"\"IPV6\" and \"MAC\" columns.\n"
+"  \"BASE IMAGE\" and \"MAC\" are custom columns generated from container "
+"configuration keys.\n"
 "\n"
-"*Examples*\n"
+"lxc list -c ns,user.comment:comment\n"
+"  List images with their running state and user comment."
+msgstr ""
+
+#: lxc/monitor.go:35
+msgid ""
 "lxc monitor --type=logging\n"
 "    Only show log messages.\n"
 "\n"
 "lxc monitor --pretty --type=logging --loglevel=info\n"
 "    Show a pretty log of messages with info level or higher.\n"
+"\n"
+"lxc monitor --type=lifecycle\n"
+"    Only show lifecycle events."
 msgstr ""
 
-#: lxc/move.go:26
+#: lxc/move.go:33
 msgid ""
-"Usage: lxc move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
-"<snapshot>]] [--container-only] [--target <node>]\n"
-"\n"
-"Move containers within or in between LXD instances.\n"
-"\n"
 "lxc move [<remote>:]<source container> [<remote>:][<destination container>] "
 "[--container-only]\n"
 "    Move a container between two hosts, renaming it if destination name "
@@ -1946,160 +2837,14 @@ msgid ""
 "    Rename a snapshot."
 msgstr ""
 
-#: lxc/network.go:52
-msgid ""
-"Usage: lxc network <subcommand> [options]\n"
-"\n"
-"Manage and attach containers to networks.\n"
-"\n"
-"lxc network list [<remote>:]\n"
-"    List available networks.\n"
-"\n"
-"lxc network list-leases [<remote>:]<network>\n"
-"    List the DHCP leases for the network\n"
-"\n"
-"lxc network show [<remote>:]<network> [--target <node>]\n"
-"    Show details of a network.\n"
-"\n"
-"lxc network create [<remote>:]<network> [key=value...] [--target <node>]\n"
-"    Create a network.\n"
-"\n"
-"lxc network get [<remote>:]<network> <key> [--target <node>]\n"
-"    Get network configuration.\n"
-"\n"
-"lxc network set [<remote>:]<network> <key> <value>\n"
-"    Set network configuration.\n"
-"\n"
-"lxc network unset [<remote>:]<network> <key>\n"
-"    Unset network configuration.\n"
-"\n"
-"lxc network delete [<remote>:]<network>\n"
-"    Delete a network.\n"
-"\n"
-"lxc network edit [<remote>:]<network>\n"
-"    Edit network, either by launching external editor or reading STDIN.\n"
-"\n"
-"lxc network rename [<remote>:]<network> <new-name>\n"
-"    Rename a network.\n"
-"\n"
-"lxc network attach [<remote>:]<network> <container> [device name] [interface "
-"name]\n"
-"    Attach a network interface connecting the network to a specified "
-"container.\n"
-"\n"
-"lxc network attach-profile [<remote>:]<network> <profile> [device name] "
-"[interface name]\n"
-"    Attach a network interface connecting the network to a specified "
-"profile.\n"
-"\n"
-"lxc network detach [<remote>:]<network> <container> [device name]\n"
-"    Remove a network interface connecting the network to a specified "
-"container.\n"
-"\n"
-"lxc network detach-profile [<remote>:]<network> <container> [device name]\n"
-"    Remove a network interface connecting the network to a specified "
-"profile.\n"
-"\n"
-"*Examples*\n"
-"cat network.yaml | lxc network edit <network>\n"
-"    Update a network using the content of network.yaml"
-msgstr ""
-
-#: lxc/operation.go:25
+#: lxc/operation.go:176
 msgid ""
-"Usage: lxc operation <subcommand> [options]\n"
-"\n"
-"List, show and delete background operations.\n"
-"\n"
-"lxc operation list [<remote>:]\n"
-"    List background operations.\n"
-"\n"
-"lxc operation show [<remote>:]<operation>\n"
-"    Show details on a background operation.\n"
-"\n"
-"lxc operation delete [<remote>:]<operation>\n"
-"    Delete a background operation (will attempt to cancel).\n"
-"\n"
-"*Examples*\n"
 "lxc operation show 344a79e4-d88a-45bf-9c39-c72c26f6ab8a\n"
 "    Show details on that operation UUID"
 msgstr ""
 
-#: lxc/profile.go:51
+#: lxc/profile.go:165
 msgid ""
-"Usage: lxc profile <subcommand> [options]\n"
-"\n"
-"Manage container configuration profiles.\n"
-"\n"
-"*Profile configuration*\n"
-"lxc profile list [<remote>:]\n"
-"    List available profiles.\n"
-"\n"
-"lxc profile show [<remote>:]<profile>\n"
-"    Show details of a profile.\n"
-"\n"
-"lxc profile create [<remote>:]<profile>\n"
-"    Create a profile.\n"
-"\n"
-"lxc profile copy [<remote>:]<profile> [<remote>:]<profile>\n"
-"    Copy the profile.\n"
-"\n"
-"lxc profile get [<remote>:]<profile> <key>\n"
-"    Get profile configuration.\n"
-"\n"
-"lxc profile set [<remote>:]<profile> <key> <value>\n"
-"    Set profile configuration.\n"
-"\n"
-"lxc profile unset [<remote>:]<profile> <key>\n"
-"    Unset profile configuration.\n"
-"\n"
-"lxc profile delete [<remote>:]<profile>\n"
-"    Delete a profile.\n"
-"\n"
-"lxc profile edit [<remote>:]<profile>\n"
-"    Edit profile, either by launching external editor or reading STDIN.\n"
-"\n"
-"lxc profile rename [<remote>:]<profile> <new-name>\n"
-"    Rename a profile.\n"
-"\n"
-"*Profile assignment*\n"
-"lxc profile assign [<remote>:]<container> <profiles>\n"
-"    Replace the current set of profiles for the container by the one "
-"provided.\n"
-"\n"
-"lxc profile add [<remote>:]<container> <profile>\n"
-"    Add a profile to a container\n"
-"\n"
-"lxc profile remove [<remote>:]<container> <profile>\n"
-"    Remove the profile from a container\n"
-"\n"
-"*Device management*\n"
-"lxc profile device list [<remote>:]<profile>\n"
-"    List devices in the given profile.\n"
-"\n"
-"lxc profile device show [<remote>:]<profile>\n"
-"    Show full device details in the given profile.\n"
-"\n"
-"lxc profile device remove [<remote>:]<profile> <name>\n"
-"    Remove a device from a profile.\n"
-"\n"
-"lxc profile device get [<remote>:]<profile> <name> <key>\n"
-"    Get a device property.\n"
-"\n"
-"lxc profile device set [<remote>:]<profile> <name> <key> <value>\n"
-"    Set a device property.\n"
-"\n"
-"lxc profile device unset [<remote>:]<profile> <name> <key>\n"
-"    Unset a device property.\n"
-"\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.\n"
-"\n"
-"*Examples*\n"
-"cat profile.yaml | lxc profile edit <profile>\n"
-"    Update a profile using the content of profile.yaml\n"
-"\n"
 "lxc profile assign foo default,bar\n"
 "    Set the profiles for \"foo\" to \"default\" and \"bar\".\n"
 "\n"
@@ -2110,72 +2855,26 @@ msgid ""
 "    Remove all profile from \"foo\""
 msgstr ""
 
-#: lxc/publish.go:28
+#: lxc/profile.go:398
 msgid ""
-"Usage: lxc publish [<remote>:]<container>[/<snapshot>] [<remote>:] [--"
-"alias=ALIAS...] [prop-key=prop-value...]\n"
-"\n"
-"Publish containers as images."
+"lxc profile edit <profile> < profile.yaml\n"
+"    Update a profile using the content of profile.yaml"
 msgstr ""
 
-#: lxc/query.go:25
+#: lxc/query.go:29
 msgid ""
-"Usage: lxc query [-X <action>] [-d <data>] [--wait] [--raw] [<remote>:]<API "
-"path>\n"
-"\n"
-"Send a raw query to LXD.\n"
-"\n"
-"*Examples*\n"
 "lxc query -X DELETE --wait /1.0/containers/c1\n"
 "    Delete local container \"c1\"."
 msgstr ""
 
-#: lxc/remote.go:40
-msgid ""
-"Usage: lxc remote <subcommand> [options]\n"
-"\n"
-"Manage the list of remote LXD servers.\n"
-"\n"
-"lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--"
-"password=PASSWORD] [--public] [--protocol=PROTOCOL] [--auth-type=AUTH_TYPE]\n"
-"    Add the remote <remote> at <url>.\n"
-"\n"
-"lxc remote remove <remote>\n"
-"    Remove the remote <remote>.\n"
-"\n"
-"lxc remote list\n"
-"    List all remotes.\n"
-"\n"
-"lxc remote rename <old name> <new name>\n"
-"    Rename remote <old name> to <new name>.\n"
-"\n"
-"lxc remote set-url <remote> <url>\n"
-"    Update <remote>'s url to <url>.\n"
-"\n"
-"lxc remote set-default <remote>\n"
-"    Set the default remote.\n"
-"\n"
-"lxc remote get-default\n"
-"    Print the default remote."
-msgstr ""
-
-#: lxc/rename.go:18
+#: lxc/snapshot.go:26
 msgid ""
-"Usage: lxc rename [<remote>:]<container>[/<snapshot>] [<container>[/"
-"<snapshot>]]\n"
-"\n"
-"Rename a container or snapshot."
+"lxc snapshot u1 snap0\n"
+"    Create a snapshot of \"u1\" called \"snap0\"."
 msgstr ""
 
-#: lxc/restore.go:22
+#: lxc/restore.go:28
 msgid ""
-"Usage: lxc restore [<remote>:]<container> <snapshot> [--stateful]\n"
-"\n"
-"Restore containers from snapshots.\n"
-"\n"
-"If --stateful is passed, then the running state will be restored too.\n"
-"\n"
-"*Examples*\n"
 "lxc snapshot u1 snap0\n"
 "    Create the snapshot.\n"
 "\n"
@@ -2183,121 +2882,20 @@ msgid ""
 "    Restore the snapshot."
 msgstr ""
 
-#: lxc/snapshot.go:19
+#: lxc/storage.go:210
 msgid ""
-"Usage: lxc snapshot [<remote>:]<container> <snapshot name> [--stateful]\n"
-"\n"
-"Create container snapshots.\n"
-"\n"
-"When --stateful is used, LXD attempts to checkpoint the container's\n"
-"running state, including process memory state, TCP connections, ...\n"
-"\n"
-"*Examples*\n"
-"lxc snapshot u1 snap0\n"
-"    Create a snapshot of \"u1\" called \"snap0\"."
+"lxc storage edit [<remote>:]<pool> < pool.yaml\n"
+"    Update a storage pool using the content of pool.yaml."
 msgstr ""
 
-#: lxc/storage.go:67
+#: lxc/storage_volume.go:726
+msgid ""
+"lxc storage volume edit [<remote>:]<pool> <volume> < volume.yaml\n"
+"    Update a storage volume using the content of pool.yaml."
+msgstr ""
+
+#: lxc/storage_volume.go:1168
 msgid ""
-"Usage: lxc storage <subcommand> [options]\n"
-"\n"
-"Manage storage pools and volumes.\n"
-"\n"
-"*Storage pools*\n"
-"lxc storage list [<remote>:]\n"
-"    List available storage pools.\n"
-"\n"
-"lxc storage show [<remote>:]<pool> [--resources] [--target <node>]\n"
-"    Show details of a storage pool.\n"
-"\n"
-"lxc storage info [<remote>:]<pool> [--bytes]\n"
-"    Show information of a storage pool in yaml format.\n"
-"\n"
-"lxc storage create [<remote>:]<pool> <driver> [key=value]... [--target "
-"<node>]\n"
-"    Create a storage pool.\n"
-"\n"
-"lxc storage get [<remote>:]<pool> <key>\n"
-"    Get storage pool configuration.\n"
-"\n"
-"lxc storage set [<remote>:]<pool> <key> <value>\n"
-"    Set storage pool configuration.\n"
-"\n"
-"lxc storage unset [<remote>:]<pool> <key>\n"
-"    Unset storage pool configuration.\n"
-"\n"
-"lxc storage delete [<remote>:]<pool>\n"
-"    Delete a storage pool.\n"
-"\n"
-"lxc storage edit [<remote>:]<pool>\n"
-"    Edit storage pool, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"*Storage volumes*\n"
-"lxc storage volume list [<remote>:]<pool>\n"
-"    List available storage volumes on a storage pool.\n"
-"\n"
-"lxc storage volume show [<remote>:]<pool> <volume> [--target <node>]\n"
-"   Show details of a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume create [<remote>:]<pool> <volume> [key=value]... [--"
-"target <node>]\n"
-"    Create a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume rename [<remote>:]<pool> <old name> <new name> [--target "
-"<node>]\n"
-"    Rename a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume get [<remote>:]<pool> <volume> <key> [--target <node>]\n"
-"    Get storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume set [<remote>:]<pool> <volume> <key> <value> [--target "
-"<node>]\n"
-"    Set storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume unset [<remote>:]<pool> <volume> <key> [--target <node>]\n"
-"    Unset storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume delete [<remote>:]<pool> <volume> [--target <node>]\n"
-"    Delete a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume edit [<remote>:]<pool> <volume> [--target <node>]\n"
-"    Edit storage volume, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"lxc storage volume attach [<remote>:]<pool> <volume> <container> [device "
-"name] <path>\n"
-"    Attach a storage volume to the specified container.\n"
-"\n"
-"lxc storage volume attach-profile [<remote:>]<pool> <volume> <profile> "
-"[device name] <path>\n"
-"    Attach a storage volume to the specified profile.\n"
-"\n"
-"lxc storage volume detach [<remote>:]<pool> <volume> <container> [device "
-"name]\n"
-"    Detach a storage volume from the specified container.\n"
-"\n"
-"lxc storage volume detach-profile [<remote:>]<pool> <volume> <profile> "
-"[device name]\n"
-"\tDetach a storage volume from the specified profile.\n"
-"\n"
-"lxc storage volume copy <pool>/<volume> <pool>/<volume> [--config|-c "
-"<key=value>...]\n"
-"    Copy an existing volume to a new volume at the specified pool.\n"
-"\n"
-"lxc storage volume move [<pool>/]<volume> [<pool>/]<volume>\n"
-"    Move an existing volume to the specified pool.\n"
-"\n"
-"Unless specified through a prefix, all volume operations affect \"custom"
-"\" (user created) volumes.\n"
-"\n"
-"*Examples*\n"
-"cat pool.yaml | lxc storage edit [<remote>:]<pool>\n"
-"    Update a storage pool using the content of pool.yaml.\n"
-"\n"
-"cat pool.yaml | lxc storage volume edit [<remote>:]<pool> <volume>\n"
-"    Update a storage volume using the content of pool.yaml.\n"
-"\n"
 "lxc storage volume show default data\n"
 "    Will show the properties of a custom volume called \"data\" in the "
 "\"default\" pool.\n"
@@ -2307,191 +2905,303 @@ msgid ""
 "\" in the \"default\" pool."
 msgstr ""
 
-#: lxc/version.go:18
+#: lxc/config_metadata.go:27
+msgid "metadata"
+msgstr ""
+
+#: lxc/monitor.go:29
+msgid "monitor [<remote>:]"
+msgstr ""
+
+#: lxc/storage_volume.go:991
+msgid "move [<pool>/]<volume> [<pool>/]<volume>"
+msgstr ""
+
+#: lxc/move.go:28
 msgid ""
-"Usage: lxc version\n"
-"\n"
-"Print the version number of this client tool."
+"move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
+"<snapshot>]]"
 msgstr ""
 
-#: lxc/delete.go:46
-msgid "User aborted delete operation."
+#: lxc/storage.go:429
+msgid "name"
 msgstr ""
 
-#: lxc/utils/cancel.go:40
+#: lxc/network.go:30
+msgid "network"
+msgstr ""
+
+#: lxc/image.go:809 lxc/image.go:814 lxc/image.go:977
+msgid "no"
+msgstr ""
+
+#: lxc/remote.go:253
+msgid "ok (y/n)?"
+msgstr ""
+
+#: lxc/operation.go:23
+msgid "operation"
+msgstr ""
+
+#: lxc/config_device.go:316
+msgid "override [<remote>:]<container> <device> [key=value...]"
+msgstr ""
+
+#: lxc/action.go:47
+msgid "pause [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/config.go:52
+msgid "please use `lxc profile`"
+msgstr ""
+
+#: lxc/profile.go:28
+msgid "profile"
+msgstr ""
+
+#: lxc/publish.go:32
 msgid ""
-"User signaled us three times, exiting. The remote operation will keep "
-"running."
+"publish [<remote>:]<container>[/<snapshot>] [<remote>:] [flags] [prop-"
+"key=prop-value...]"
 msgstr ""
 
-#: lxc/query.go:36
-msgid "Wait for the operation to complete"
+#: lxc/file.go:183
+msgid ""
+"pull [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...] "
+"<target path>"
 msgstr ""
 
-#: lxc/restore.go:38
+#: lxc/file.go:322
 msgid ""
-"Whether or not to restore the container's running state from snapshot (if "
-"available)"
+"push <source path> [<remote>:]<container>/<path> [[<remote>:]<container>/"
+"<path>...]"
 msgstr ""
 
-#: lxc/snapshot.go:33
-msgid "Whether or not to snapshot the container's running state"
+#: lxc/query.go:25
+msgid "query [<remote>:]<API path>"
 msgstr ""
 
-#: lxc/network.go:560 lxc/operation.go:141 lxc/remote.go:382 lxc/remote.go:387
-msgid "YES"
+#: lxc/image.go:1210
+msgid "refresh [<remote>:]<image> [[<remote>:]<image>...]"
 msgstr ""
 
-#: lxc/exec.go:132
-msgid "You can't pass -t and -T at the same time"
+#: lxc/remote.go:32
+msgid "remote"
 msgstr ""
 
-#: lxc/exec.go:136
-msgid "You can't pass -t or -T at the same time as --mode"
+#: lxc/alias.go:195
+msgid "remove <alias>"
 msgstr ""
 
-#: lxc/copy.go:76
-msgid "You must specify a destination container name when using --target"
+#: lxc/remote.go:546
+msgid "remove <remote>"
 msgstr ""
 
-#: lxc/copy.go:71
-msgid "You must specify a source container name"
+#: lxc/config_trust.go:194
+msgid "remove [<remote>:] <hostname|fingerprint>"
 msgstr ""
 
-#: lxc/copy.go:66 lxc/move.go:71
-msgid "You must use the same source and destination remote when using --target"
+#: lxc/profile.go:630
+msgid "remove [<remote>:]<container> <profile>"
 msgstr ""
 
-#: lxc/main.go:72
-msgid "`lxc config profile` is deprecated, please use `lxc profile`"
+#: lxc/config_device.go:402
+msgid "remove [<remote>:]<container|profile> <name>..."
 msgstr ""
 
-#: lxc/alias.go:56 lxc/alias.go:102
-#, c-format
-msgid "alias %s already exists"
+#: lxc/cluster.go:235
+msgid "remove [<remote>:]<member>"
 msgstr ""
 
-#: lxc/alias.go:68 lxc/alias.go:97
-#, c-format
-msgid "alias %s doesn't exist"
+#: lxc/alias.go:144
+msgid "rename <old alias> <new alias>"
 msgstr ""
 
-#: lxc/remote.go:370
-msgid "can't remove the default remote"
+#: lxc/remote.go:484
+msgid "rename <remote> <new-name>"
 msgstr ""
 
-#: lxc/file.go:296
-msgid "can't supply uid/gid/mode in recursive mode"
+#: lxc/image_alias.go:247
+msgid "rename [<remote>:]<alias> <new-name>"
 msgstr ""
 
-#: lxc/remote.go:399
-msgid "default"
+#: lxc/rename.go:18
+msgid "rename [<remote>:]<container>[/<snapshot>] <container>[/<snapshot>]"
 msgstr ""
 
-#: lxc/storage.go:856
-msgid "description"
+#: lxc/cluster.go:189
+msgid "rename [<remote>:]<member> <new-name>"
 msgstr ""
 
-#: lxc/init.go:315
-msgid "didn't get any affected image, container or snapshot from server"
+#: lxc/network.go:870
+msgid "rename [<remote>:]<network> <new-name>"
 msgstr ""
 
-#: lxc/image.go:594
-msgid "disabled"
+#: lxc/storage_volume.go:1023
+msgid "rename [<remote>:]<pool> <old name> <new name>"
 msgstr ""
 
-#: lxc/storage.go:855
-msgid "driver"
+#: lxc/profile.go:702
+msgid "rename [<remote>:]<profile> <new-name>"
 msgstr ""
 
-#: lxc/image.go:596
-msgid "enabled"
+#: lxc/action.go:67
+msgid "restart [<remote>:]<container> [[<remote>:]<container>...]"
 msgstr ""
 
-#: lxc/action.go:155 lxc/main.go:33 lxc/main.go:191
-#, c-format
-msgid "error: %v"
+#: lxc/restore.go:22
+msgid "restore [<remote>:]<container> <snapshot>"
 msgstr ""
 
-#: lxc/help.go:37 lxc/main.go:133
-#, c-format
-msgid "error: unknown command: %s"
+#: lxc/config_device.go:491
+msgid "set [<remote>:]<container|profile> <device> <key> <value>"
 msgstr ""
 
-#: lxc/storage.go:853
-msgid "info"
+#: lxc/network.go:918
+msgid "set [<remote>:]<network> <key> <value>"
 msgstr ""
 
-#: lxc/storage.go:854
-msgid "name"
+#: lxc/storage.go:571
+msgid "set [<remote>:]<pool> <key> <value>"
 msgstr ""
 
-#: lxc/image.go:210 lxc/image.go:584 lxc/image.go:589
-msgid "no"
+#: lxc/storage_volume.go:1087
+msgid "set [<remote>:]<pool> <volume> <key> <value>"
 msgstr ""
 
-#: lxc/remote.go:204
-msgid "ok (y/n)?"
+#: lxc/profile.go:751
+msgid "set [<remote>:]<profile> <key> <value>"
 msgstr ""
 
-#: lxc/main.go:368 lxc/main.go:372
-#, c-format
-msgid "processing aliases failed %s\n"
+#: lxc/config.go:353
+msgid "set [<remote>:][container] <key> <value>"
 msgstr ""
 
-#: lxc/file.go:588
-msgid "recursive edit doesn't make sense :("
+#: lxc/remote.go:596
+msgid "set-default <remote>"
 msgstr ""
 
-#: lxc/remote.go:436
-#, c-format
-msgid "remote %s already exists"
+#: lxc/remote.go:634
+msgid "set-url <remote> <URL>"
 msgstr ""
 
-#: lxc/remote.go:362 lxc/remote.go:428 lxc/remote.go:463 lxc/remote.go:479
-#, c-format
-msgid "remote %s doesn't exist"
+#: lxc/config_template.go:296
+msgid "show [<remote>:]<container> <template>"
 msgstr ""
 
-#: lxc/remote.go:345
-#, c-format
-msgid "remote %s exists as <%s>"
+#: lxc/config_device.go:580
+msgid "show [<remote>:]<container|profile>"
 msgstr ""
 
-#: lxc/remote.go:366 lxc/remote.go:432 lxc/remote.go:467
-#, c-format
-msgid "remote %s is static and cannot be modified"
+#: lxc/image.go:1283
+msgid "show [<remote>:]<image>"
+msgstr ""
+
+#: lxc/cluster.go:140
+msgid "show [<remote>:]<member>"
+msgstr ""
+
+#: lxc/network.go:987
+msgid "show [<remote>:]<network>"
+msgstr ""
+
+#: lxc/operation.go:172
+msgid "show [<remote>:]<operation>"
+msgstr ""
+
+#: lxc/storage.go:643
+msgid "show [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:1164
+msgid "show [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:810
+msgid "show [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/config.go:450 lxc/config_metadata.go:174
+msgid "show [<remote>:][container]"
+msgstr ""
+
+#: lxc/snapshot.go:19
+msgid "snapshot [<remote>:]<container> <snapshot name>"
 msgstr ""
 
-#: lxc/storage.go:858
+#: lxc/storage.go:433
 msgid "space used"
 msgstr ""
 
-#: lxc/info.go:251
+#: lxc/action.go:28
+msgid "start [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/info.go:255
 msgid "stateful"
 msgstr ""
 
-#: lxc/info.go:253
+#: lxc/info.go:257
 msgid "stateless"
 msgstr ""
 
-#: lxc/info.go:247
+#: lxc/action.go:89
+msgid "stop [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/storage.go:31
+msgid "storage"
+msgstr ""
+
+#: lxc/info.go:251
 #, c-format
 msgid "taken at %s"
 msgstr ""
 
-#: lxc/storage.go:857
+#: lxc/config_template.go:28
+msgid "template"
+msgstr ""
+
+#: lxc/storage.go:432
 msgid "total space"
 msgstr ""
 
-#: lxc/storage.go:852
+#: lxc/config_trust.go:28
+msgid "trust"
+msgstr ""
+
+#: lxc/config_device.go:648
+msgid "unset [<remote>:]<container|profile> <device> <key>"
+msgstr ""
+
+#: lxc/network.go:1049
+msgid "unset [<remote>:]<network> <key>"
+msgstr ""
+
+#: lxc/storage.go:727
+msgid "unset [<remote>:]<pool> <key>"
+msgstr ""
+
+#: lxc/storage_volume.go:1239
+msgid "unset [<remote>:]<pool> <volume> <key>"
+msgstr ""
+
+#: lxc/profile.go:864
+msgid "unset [<remote>:]<profile> <key>"
+msgstr ""
+
+#: lxc/config.go:558
+msgid "unset [<remote>:][container] <key>"
+msgstr ""
+
+#: lxc/storage.go:427
 msgid "used by"
 msgstr ""
 
-#: lxc/main.go:299
-msgid "wrong number of subcommand arguments"
+#: lxc/storage_volume.go:32
+msgid "volume"
 msgstr ""
 
-#: lxc/delete.go:45 lxc/image.go:208 lxc/image.go:586 lxc/image.go:591
+#: lxc/delete.go:46 lxc/image.go:811 lxc/image.go:816 lxc/image.go:975
 msgid "yes"
 msgstr ""
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 51fa9acb5..6c93ba25a 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -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: 2018-02-27 22:14-0500\n"
+"POT-Creation-Date: 2018-03-29 01:45-0400\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
@@ -16,7 +16,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: lxc/storage.go:36
+#: lxc/storage.go:220
 msgid ""
 "### This is a yaml representation of a storage pool.\n"
 "### Any line starting with a '#' will be ignored.\n"
@@ -33,7 +33,7 @@ msgid ""
 "###   zfs.pool_name: default"
 msgstr ""
 
-#: lxc/storage.go:53
+#: lxc/storage_volume.go:737
 msgid ""
 "### This is a yaml representation of a storage volume.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -47,7 +47,7 @@ msgid ""
 "###   size: \"61203283968\""
 msgstr ""
 
-#: lxc/config.go:40
+#: lxc/config.go:100
 msgid ""
 "### This is a yaml representation of the configuration.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -68,7 +68,7 @@ msgid ""
 "### Note that the name is shown but cannot be changed"
 msgstr ""
 
-#: lxc/config.go:61
+#: lxc/config_metadata.go:63
 msgid ""
 "### This is a yaml representation of the container metadata.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -92,7 +92,7 @@ msgid ""
 "###     properties: {}"
 msgstr ""
 
-#: lxc/image.go:63
+#: lxc/image.go:327
 msgid ""
 "### This is a yaml representation of the image properties.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -102,7 +102,7 @@ msgid ""
 "###  description: My custom image"
 msgstr ""
 
-#: lxc/network.go:32
+#: lxc/network.go:546
 msgid ""
 "### This is a yaml representation of the network.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -122,7 +122,7 @@ msgid ""
 "### Note that only the configuration can be changed."
 msgstr ""
 
-#: lxc/profile.go:30
+#: lxc/profile.go:408
 msgid ""
 "### This is a yaml representation of the profile.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -143,12 +143,12 @@ msgid ""
 "### Note that the name is shown but cannot be changed"
 msgstr ""
 
-#: lxc/image.go:187
+#: lxc/image.go:954
 #, c-format
 msgid "%s (%d more)"
 msgstr ""
 
-#: lxc/file.go:205
+#: lxc/file.go:677
 #, c-format
 msgid "%s is not a directory"
 msgstr ""
@@ -158,1782 +158,2673 @@ msgstr ""
 msgid "%v (interrupt two more times to force)"
 msgstr ""
 
-#: lxc/file.go:142
+#: lxc/file.go:614
 #, c-format
 msgid "'%s' isn't a supported file type."
 msgstr ""
 
-#: lxc/profile.go:337
+#: lxc/profile.go:222
 msgid "(none)"
 msgstr ""
 
-#: lxc/alias.go:84 lxc/image.go:231 lxc/image.go:1136
+#: lxc/alias.go:127 lxc/image.go:921 lxc/image_alias.go:228
 msgid "ALIAS"
 msgstr ""
 
-#: lxc/image.go:232
+#: lxc/image.go:922
 msgid "ALIASES"
 msgstr ""
 
-#: lxc/image.go:236
+#: lxc/image.go:926
 msgid "ARCH"
 msgstr ""
 
-#: lxc/list.go:467
+#: lxc/list.go:464
 msgid "ARCHITECTURE"
 msgstr ""
 
-#: lxc/remote.go:412
+#: lxc/remote.go:466
 msgid "AUTH TYPE"
 msgstr ""
 
-#: lxc/remote.go:68
+#: lxc/remote.go:88
 msgid "Accept certificate"
 msgstr ""
 
-#: lxc/query.go:38
+#: lxc/query.go:37
 msgid "Action (defaults to GET)"
 msgstr ""
 
-#: lxc/remote.go:276
+#: lxc/config_device.go:75 lxc/config_device.go:76
+msgid "Add devices to containers or profiles"
+msgstr ""
+
+#: lxc/alias.go:54 lxc/alias.go:55
+msgid "Add new aliases"
+msgstr ""
+
+#: lxc/remote.go:83 lxc/remote.go:84
+msgid "Add new remote servers"
+msgstr ""
+
+#: lxc/config_trust.go:58 lxc/config_trust.go:59
+msgid "Add new trusted clients"
+msgstr ""
+
+#: lxc/profile.go:101 lxc/profile.go:102
+msgid "Add profiles to containers"
+msgstr ""
+
+#: lxc/remote.go:325
 #, c-format
 msgid "Admin password for %s: "
 msgstr ""
 
-#: lxc/image.go:623
+#: lxc/alias.go:78 lxc/alias.go:176
+#, c-format
+msgid "Alias %s already exists"
+msgstr ""
+
+#: lxc/alias.go:170 lxc/alias.go:221
+#, c-format
+msgid "Alias %s doesn't exist"
+msgstr ""
+
+#: lxc/image_alias.go:83 lxc/image_alias.go:130 lxc/image_alias.go:274
+msgid "Alias name missing"
+msgstr ""
+
+#: lxc/image.go:854
 msgid "Aliases:"
 msgstr ""
 
-#: lxc/image.go:601 lxc/info.go:125
+#: lxc/image.go:826 lxc/info.go:129
 #, c-format
 msgid "Architecture: %s"
 msgstr ""
 
-#: lxc/remote.go:259
+#: lxc/profile.go:162 lxc/profile.go:163
+msgid "Assign sets of profiles to containers"
+msgstr ""
+
+#: lxc/network.go:103
+msgid "Attach network interfaces to containers"
+msgstr ""
+
+#: lxc/network.go:176 lxc/network.go:177
+msgid "Attach network interfaces to profiles"
+msgstr ""
+
+#: lxc/network.go:104
+msgid "Attach new network interfaces to containers"
+msgstr ""
+
+#: lxc/storage_volume.go:121 lxc/storage_volume.go:122
+msgid "Attach new storage volumes to containers"
+msgstr ""
+
+#: lxc/storage_volume.go:200 lxc/storage_volume.go:201
+msgid "Attach new storage volumes to profiles"
+msgstr ""
+
+#: lxc/console.go:31
+msgid "Attach to container consoles"
+msgstr ""
+
+#: lxc/console.go:32
+msgid ""
+"Attach to container consoles\n"
+"\n"
+"This command allows you to interact with the boot console of a container\n"
+"as well as retrieve past log entries from it."
+msgstr ""
+
+#: lxc/remote.go:308
 #, c-format
 msgid "Authentication type '%s' not supported by server"
 msgstr ""
 
-#: lxc/image.go:632
+#: lxc/image.go:864
 #, c-format
 msgid "Auto update: %s"
 msgstr ""
 
-#: lxc/image.go:707
+#: lxc/network.go:283
+#, c-format
+msgid "Bad key/value pair: %s"
+msgstr ""
+
+#: lxc/copy.go:110 lxc/init.go:118 lxc/publish.go:175 lxc/storage.go:123
+#: lxc/storage_volume.go:468
+#, c-format
+msgid "Bad key=value pair: %s"
+msgstr ""
+
+#: lxc/image.go:677
 #, c-format
 msgid "Bad property: %s"
 msgstr ""
 
-#: lxc/action.go:133
+#: lxc/action.go:212
 msgid "Both --all and container name given"
 msgstr ""
 
-#: lxc/info.go:218
+#: lxc/info.go:222
 msgid "Bytes received"
 msgstr ""
 
-#: lxc/info.go:219
+#: lxc/info.go:223
 msgid "Bytes sent"
 msgstr ""
 
-#: lxc/operation.go:156
+#: lxc/operation.go:155
 msgid "CANCELABLE"
 msgstr ""
 
-#: lxc/config.go:403
+#: lxc/config_trust.go:175
 msgid "COMMON NAME"
 msgstr ""
 
-#: lxc/info.go:182
+#: lxc/info.go:186
 msgid "CPU usage (in seconds)"
 msgstr ""
 
-#: lxc/info.go:186
+#: lxc/info.go:190
 msgid "CPU usage:"
 msgstr ""
 
-#: lxc/operation.go:157
+#: lxc/operation.go:156
 msgid "CREATED"
 msgstr ""
 
-#: lxc/list.go:468
+#: lxc/list.go:465
 msgid "CREATED AT"
 msgstr ""
 
-#: lxc/image.go:631
+#: lxc/image.go:863
 #, c-format
 msgid "Cached: %s"
 msgstr ""
 
-#: lxc/file.go:501
+#: lxc/image.go:175
+msgid "Can't provide a name for the target image"
+msgstr ""
+
+#: lxc/file.go:261
 msgid "Can't pull a directory without --recursive"
 msgstr ""
 
-#: lxc/config.go:210 lxc/network.go:619
+#: lxc/config.go:400 lxc/network.go:969
 #, c-format
 msgid "Can't read from stdin: %s"
 msgstr ""
 
-#: lxc/rename.go:41
+#: lxc/remote.go:577
+msgid "Can't remove the default remote"
+msgstr ""
+
+#: lxc/list.go:481
+msgid "Can't specify --fast with --columns"
+msgstr ""
+
+#: lxc/rename.go:48
 msgid "Can't specify a different remote for rename."
 msgstr ""
 
-#: lxc/config.go:223
-#, c-format
-msgid "Can't unset key '%s', it's not currently set"
+#: lxc/list.go:493
+msgid "Can't specify column L when not clustered"
 msgstr ""
 
-#: lxc/config.go:265 lxc/config.go:291
-#, c-format
-msgid "Can't unset key '%s', it's not currently set."
+#: lxc/file.go:399
+msgid "Can't supply uid/gid/mode in recursive mode"
 msgstr ""
 
-#: lxc/profile.go:546 lxc/storage.go:696
-msgid "Cannot provide container name to list"
+#: lxc/config.go:413
+#, c-format
+msgid "Can't unset key '%s', it's not currently set"
 msgstr ""
 
-#: lxc/remote.go:203
+#: lxc/remote.go:252
 #, c-format
 msgid "Certificate fingerprint: %s"
 msgstr ""
 
-#: lxc/remote.go:315
+#: lxc/remote.go:364
 msgid "Client certificate stored at server: "
 msgstr ""
 
-#: lxc/image.go:175 lxc/image.go:176 lxc/list.go:134 lxc/list.go:135
+#: lxc/network.go:253 lxc/network.go:663 lxc/network.go:923 lxc/network.go:992
+#: lxc/network.go:1054 lxc/storage.go:92 lxc/storage.go:331 lxc/storage.go:576
+#: lxc/storage.go:649 lxc/storage.go:732 lxc/storage_volume.go:287
+#: lxc/storage_volume.go:429 lxc/storage_volume.go:504
+#: lxc/storage_volume.go:730 lxc/storage_volume.go:856
+#: lxc/storage_volume.go:998 lxc/storage_volume.go:1028
+#: lxc/storage_volume.go:1092 lxc/storage_volume.go:1175
+#: lxc/storage_volume.go:1244
+msgid "Cluster member name"
+msgstr ""
+
+#: lxc/image.go:912 lxc/list.go:112
 msgid "Columns"
 msgstr ""
 
-#: lxc/help.go:53
-msgid "Commands:"
+#: lxc/main.go:44
+msgid "Command line client for LXD"
+msgstr ""
+
+#: lxc/main.go:45
+msgid ""
+"Command line client for LXD\n"
+"\n"
+"All of LXD's features can be driven through the various commands below.\n"
+"For help with any of those, simply call them with --help."
 msgstr ""
 
-#: lxc/copy.go:37 lxc/copy.go:38 lxc/init.go:139 lxc/init.go:140
+#: lxc/copy.go:39 lxc/init.go:42
 msgid "Config key/value to apply to the new container"
 msgstr ""
 
-#: lxc/config.go:821 lxc/config.go:886 lxc/config.go:1396 lxc/image.go:1191
-#: lxc/network.go:445 lxc/profile.go:275 lxc/storage.go:647 lxc/storage.go:1209
+#: lxc/config.go:195 lxc/config.go:259 lxc/config_metadata.go:144
+#: lxc/image.go:405 lxc/network.go:631 lxc/profile.go:490 lxc/storage.go:298
+#: lxc/storage_volume.go:822
 #, c-format
 msgid "Config parsing error: %s"
 msgstr ""
 
-#: lxc/main.go:40
-msgid "Connection refused; is LXD running?"
-msgstr ""
-
-#: lxc/console.go:132
+#: lxc/console.go:141
 msgid "Console log:"
 msgstr ""
 
-#: lxc/publish.go:71
+#: lxc/publish.go:79
 msgid "Container name is mandatory"
 msgstr ""
 
-#: lxc/copy.go:243 lxc/init.go:321
+#: lxc/copy.go:260 lxc/init.go:229
 #, c-format
 msgid "Container name is: %s"
 msgstr ""
 
-#: lxc/publish.go:250
+#: lxc/publish.go:259
 #, c-format
 msgid "Container published with fingerprint: %s"
 msgstr ""
 
-#: lxc/copy.go:45 lxc/move.go:44
+#: lxc/copy.go:44 lxc/move.go:46
 msgid "Copy a stateful container stateless"
 msgstr ""
 
-#: lxc/image.go:178
+#: lxc/image.go:138
 msgid "Copy aliases from source"
 msgstr ""
 
-#: lxc/copy.go:44
+#: lxc/copy.go:34 lxc/copy.go:35
+msgid "Copy containers within or in between LXD instances"
+msgstr ""
+
+#: lxc/image.go:130
+msgid "Copy images between servers"
+msgstr ""
+
+#: lxc/image.go:131
+msgid ""
+"Copy images between servers\n"
+"\n"
+"The auto-update flag instructs the server to keep this image up to date.\n"
+"It requires the source to be an alias and for it to be public."
+msgstr ""
+
+#: lxc/config_device.go:317 lxc/config_device.go:318
+msgid "Copy profile inherited devices and override configuration keys"
+msgstr ""
+
+#: lxc/profile.go:240 lxc/profile.go:241
+msgid "Copy profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:282 lxc/storage_volume.go:283
+msgid "Copy storage volumes"
+msgstr ""
+
+#: lxc/copy.go:43
 msgid "Copy the container without its snapshots"
 msgstr ""
 
-#: lxc/image.go:449
+#: lxc/image.go:217
 #, c-format
 msgid "Copying the image: %s"
 msgstr ""
 
-#: lxc/storage.go:1134
+#: lxc/storage_volume.go:387
 #, c-format
 msgid "Copying the storage volume: %s"
 msgstr ""
 
-#: lxc/remote.go:218
+#: lxc/remote.go:267
 msgid "Could not create server cert dir"
 msgstr ""
 
-#: lxc/file.go:70 lxc/file.go:71
+#: lxc/image_alias.go:58 lxc/image_alias.go:59
+msgid "Create aliases for existing images"
+msgstr ""
+
+#: lxc/launch.go:21 lxc/launch.go:22
+msgid "Create and start containers from images"
+msgstr ""
+
+#: lxc/file.go:191 lxc/file.go:331
 msgid "Create any directories necessary"
 msgstr ""
 
-#: lxc/image.go:606 lxc/info.go:127
+#: lxc/snapshot.go:20
+msgid "Create container snapshots"
+msgstr ""
+
+#: lxc/snapshot.go:21
+msgid ""
+"Create container snapshots\n"
+"\n"
+"When --stateful is used, LXD attempts to checkpoint the container's\n"
+"running state, including process memory state, TCP connections, ..."
+msgstr ""
+
+#: lxc/init.go:34 lxc/init.go:35
+msgid "Create containers from images"
+msgstr ""
+
+#: lxc/config_template.go:66 lxc/config_template.go:67
+msgid "Create new container file templates"
+msgstr ""
+
+#: lxc/storage_volume.go:425 lxc/storage_volume.go:426
+msgid "Create new custom storage volumes"
+msgstr ""
+
+#: lxc/network.go:249 lxc/network.go:250
+msgid "Create new networks"
+msgstr ""
+
+#: lxc/profile.go:296 lxc/profile.go:297
+msgid "Create profiles"
+msgstr ""
+
+#: lxc/storage.go:88 lxc/storage.go:89
+msgid "Create storage pools"
+msgstr ""
+
+#: lxc/image.go:832 lxc/info.go:131
 #, c-format
 msgid "Created: %s"
 msgstr ""
 
-#: lxc/init.go:200
+#: lxc/init.go:98
 #, c-format
 msgid "Creating %s"
 msgstr ""
 
-#: lxc/init.go:198
+#: lxc/init.go:96
 msgid "Creating the container"
 msgstr ""
 
-#: lxc/cluster.go:185
+#: lxc/cluster.go:121
 msgid "DATABASE"
 msgstr ""
 
-#: lxc/image.go:235 lxc/image.go:1138 lxc/list.go:469 lxc/network.go:579
-#: lxc/operation.go:154 lxc/storage.go:732 lxc/storage.go:937
+#: lxc/image.go:925 lxc/image_alias.go:230 lxc/list.go:466 lxc/network.go:784
+#: lxc/operation.go:153 lxc/storage.go:545 lxc/storage_volume.go:967
 msgid "DESCRIPTION"
 msgstr ""
 
-#: lxc/storage.go:733
+#: lxc/storage.go:546
 msgid "DRIVER"
 msgstr ""
 
-#: lxc/publish.go:39
+#: lxc/publish.go:41
 msgid "Define a compression algorithm: for image or none"
 msgstr ""
 
-#: lxc/config.go:977
+#: lxc/operation.go:53 lxc/operation.go:54
+msgid "Delete a background operation (will attempt to cancel)"
+msgstr ""
+
+#: lxc/config_template.go:109 lxc/config_template.go:110
+msgid "Delete container file templates"
+msgstr ""
+
+#: lxc/delete.go:29 lxc/delete.go:30
+msgid "Delete containers and snapshots"
+msgstr ""
+
+#: lxc/file.go:72 lxc/file.go:73
+msgid "Delete files in containers"
+msgstr ""
+
+#: lxc/image_alias.go:105 lxc/image_alias.go:106
+msgid "Delete image aliases"
+msgstr ""
+
+#: lxc/image.go:260 lxc/image.go:261
+msgid "Delete images"
+msgstr ""
+
+#: lxc/network.go:319 lxc/network.go:320
+msgid "Delete networks"
+msgstr ""
+
+#: lxc/profile.go:347 lxc/profile.go:348
+msgid "Delete profiles"
+msgstr ""
+
+#: lxc/storage.go:160 lxc/storage.go:161
+msgid "Delete storage pools"
+msgstr ""
+
+#: lxc/storage_volume.go:500 lxc/storage_volume.go:501
+msgid "Delete storage volumes"
+msgstr ""
+
+#: lxc/action.go:30 lxc/action.go:49 lxc/action.go:69 lxc/action.go:91
+#: lxc/alias.go:23 lxc/alias.go:55 lxc/alias.go:99 lxc/alias.go:147
+#: lxc/alias.go:198 lxc/cluster.go:26 lxc/cluster.go:59 lxc/cluster.go:142
+#: lxc/cluster.go:192 lxc/cluster.go:238 lxc/config.go:29 lxc/config.go:88
+#: lxc/config.go:289 lxc/config.go:355 lxc/config.go:452 lxc/config.go:560
+#: lxc/config_device.go:24 lxc/config_device.go:76 lxc/config_device.go:179
+#: lxc/config_device.go:252 lxc/config_device.go:318 lxc/config_device.go:405
+#: lxc/config_device.go:493 lxc/config_device.go:582 lxc/config_device.go:650
+#: lxc/config_metadata.go:29 lxc/config_metadata.go:54
+#: lxc/config_metadata.go:176 lxc/config_template.go:30
+#: lxc/config_template.go:67 lxc/config_template.go:110
+#: lxc/config_template.go:152 lxc/config_template.go:236
+#: lxc/config_template.go:298 lxc/config_trust.go:30 lxc/config_trust.go:59
+#: lxc/config_trust.go:115 lxc/config_trust.go:197 lxc/console.go:32
+#: lxc/copy.go:35 lxc/delete.go:30 lxc/exec.go:39 lxc/file.go:40 lxc/file.go:73
+#: lxc/file.go:122 lxc/file.go:185 lxc/file.go:324 lxc/image.go:42
+#: lxc/image.go:131 lxc/image.go:261 lxc/image.go:312 lxc/image.go:435
+#: lxc/image.go:571 lxc/image.go:776 lxc/image.go:890 lxc/image.go:1212
+#: lxc/image.go:1285 lxc/image_alias.go:26 lxc/image_alias.go:59
+#: lxc/image_alias.go:106 lxc/image_alias.go:149 lxc/image_alias.go:250
+#: lxc/info.go:29 lxc/init.go:35 lxc/launch.go:22 lxc/list.go:48 lxc/main.go:45
+#: lxc/monitor.go:31 lxc/move.go:31 lxc/network.go:32 lxc/network.go:104
+#: lxc/network.go:177 lxc/network.go:250 lxc/network.go:320 lxc/network.go:367
+#: lxc/network.go:452 lxc/network.go:537 lxc/network.go:660 lxc/network.go:719
+#: lxc/network.go:808 lxc/network.go:873 lxc/network.go:920 lxc/network.go:989
+#: lxc/network.go:1051 lxc/operation.go:25 lxc/operation.go:54
+#: lxc/operation.go:98 lxc/operation.go:174 lxc/profile.go:30
+#: lxc/profile.go:102 lxc/profile.go:163 lxc/profile.go:241 lxc/profile.go:297
+#: lxc/profile.go:348 lxc/profile.go:396 lxc/profile.go:520 lxc/profile.go:568
+#: lxc/profile.go:632 lxc/profile.go:705 lxc/profile.go:753 lxc/profile.go:812
+#: lxc/profile.go:866 lxc/publish.go:34 lxc/query.go:27 lxc/remote.go:34
+#: lxc/remote.go:84 lxc/remote.go:380 lxc/remote.go:414 lxc/remote.go:487
+#: lxc/remote.go:549 lxc/remote.go:598 lxc/remote.go:636 lxc/rename.go:20
+#: lxc/restore.go:24 lxc/snapshot.go:21 lxc/storage.go:33 lxc/storage.go:89
+#: lxc/storage.go:161 lxc/storage.go:208 lxc/storage.go:328 lxc/storage.go:383
+#: lxc/storage.go:491 lxc/storage.go:573 lxc/storage.go:645 lxc/storage.go:729
+#: lxc/storage_volume.go:34 lxc/storage_volume.go:122 lxc/storage_volume.go:201
+#: lxc/storage_volume.go:283 lxc/storage_volume.go:426
+#: lxc/storage_volume.go:501 lxc/storage_volume.go:561
+#: lxc/storage_volume.go:643 lxc/storage_volume.go:724
+#: lxc/storage_volume.go:853 lxc/storage_volume.go:918
+#: lxc/storage_volume.go:994 lxc/storage_volume.go:1025
+#: lxc/storage_volume.go:1089 lxc/storage_volume.go:1166
+#: lxc/storage_volume.go:1241
+msgid "Description"
+msgstr ""
+
+#: lxc/network.go:366 lxc/network.go:367
+msgid "Detach network interfaces from containers"
+msgstr ""
+
+#: lxc/network.go:451 lxc/network.go:452
+msgid "Detach network interfaces from profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:560 lxc/storage_volume.go:561
+msgid "Detach storage volumes from containers"
+msgstr ""
+
+#: lxc/storage_volume.go:642 lxc/storage_volume.go:643
+msgid "Detach storage volumes from profiles"
+msgstr ""
+
+#: lxc/config_device.go:163
 #, c-format
 msgid "Device %s added to %s"
 msgstr ""
 
-#: lxc/config.go:1272
+#: lxc/config_device.go:387
 #, c-format
 msgid "Device %s overridden for %s"
 msgstr ""
 
-#: lxc/config.go:1213
+#: lxc/config_device.go:476
 #, c-format
 msgid "Device %s removed from %s"
 msgstr ""
 
-#: lxc/utils.go:192 lxc/utils.go:216
+#: lxc/utils.go:133 lxc/utils.go:157
 #, c-format
 msgid "Device already exists: %s"
 msgstr ""
 
-#: lxc/image.go:1290
+#: lxc/image.go:586
 msgid "Directory import is not available on this platform"
 msgstr ""
 
-#: lxc/exec.go:71
+#: lxc/exec.go:55
 msgid "Disable pseudo-terminal allocation"
 msgstr ""
 
-#: lxc/exec.go:72
+#: lxc/exec.go:56
 msgid "Disable stdin (reads from /dev/null)"
 msgstr ""
 
-#: lxc/info.go:175
+#: lxc/info.go:179
 msgid "Disk usage:"
 msgstr ""
 
-#: lxc/list.go:638
+#: lxc/list.go:635
 msgid "EPHEMERAL"
 msgstr ""
 
-#: lxc/config.go:405
+#: lxc/config_trust.go:177
 msgid "EXPIRY DATE"
 msgstr ""
 
-#: lxc/main.go:52
-msgid "Enable debug mode"
+#: lxc/config_template.go:151 lxc/config_template.go:152
+msgid "Edit container file templates"
 msgstr ""
 
-#: lxc/main.go:51
-msgid "Enable verbose mode"
+#: lxc/config_metadata.go:53 lxc/config_metadata.go:54
+msgid "Edit container metadata files"
 msgstr ""
 
-#: lxc/exec.go:68
-msgid "Environment variable to set (e.g. HOME=/home/foo)"
+#: lxc/config.go:87 lxc/config.go:88
+msgid "Edit container or server configurations as YAML"
+msgstr ""
+
+#: lxc/file.go:121 lxc/file.go:122
+msgid "Edit files in containers"
+msgstr ""
+
+#: lxc/image.go:311 lxc/image.go:312
+msgid "Edit image properties"
+msgstr ""
+
+#: lxc/network.go:536 lxc/network.go:537
+msgid "Edit network configurations as YAML"
+msgstr ""
+
+#: lxc/profile.go:395 lxc/profile.go:396
+msgid "Edit profile configurations as YAML"
+msgstr ""
+
+#: lxc/storage.go:207 lxc/storage.go:208
+msgid "Edit storage pool configurations as YAML"
+msgstr ""
+
+#: lxc/storage_volume.go:723 lxc/storage_volume.go:724
+msgid "Edit storage volume configurations as YAML"
+msgstr ""
+
+#: lxc/list.go:504
+#, c-format
+msgid "Empty column entry (redundant, leading or trailing command) in '%s'"
 msgstr ""
 
-#: lxc/help.go:77
-msgid "Environment:"
+#: lxc/exec.go:52
+msgid "Environment variable to set (e.g. HOME=/home/foo)"
 msgstr ""
 
-#: lxc/copy.go:41 lxc/copy.go:42 lxc/init.go:143 lxc/init.go:144
+#: lxc/copy.go:41 lxc/init.go:44
 msgid "Ephemeral container"
 msgstr ""
 
-#: lxc/config.go:1446
+#: lxc/config_template.go:204
 #, c-format
 msgid "Error updating template file: %s"
 msgstr ""
 
-#: lxc/monitor.go:69
+#: lxc/monitor.go:48
 msgid "Event type to listen for"
 msgstr ""
 
-#: lxc/image.go:610
+#: lxc/exec.go:38
+msgid "Execute commands in containers"
+msgstr ""
+
+#: lxc/exec.go:39
+msgid ""
+"Execute commands in containers\n"
+"\n"
+"The command is executed directly using exec, so there is no shell and\n"
+"shell patterns (variables, file redirects, ...) won't be understood.\n"
+"If you need a shell environment you need to execute the shell\n"
+"executable, passing the shell commands as arguments, for example:\n"
+"\n"
+"  lxc exec <container> -- sh -c \"cd /tmp && pwd\"\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:838
 #, c-format
 msgid "Expires: %s"
 msgstr ""
 
-#: lxc/image.go:612
+#: lxc/image.go:840
 msgid "Expires: never"
 msgstr ""
 
-#: lxc/image.go:922
+#: lxc/image.go:434
+msgid "Export and download images"
+msgstr ""
+
+#: lxc/image.go:435
+msgid ""
+"Export and download images\n"
+"\n"
+"The output target is optional and defaults to the working directory."
+msgstr ""
+
+#: lxc/image.go:494
 #, c-format
 msgid "Exporting the image: %s"
 msgstr ""
 
-#: lxc/config.go:761
+#: lxc/config_template.go:279
 msgid "FILENAME"
 msgstr ""
 
-#: lxc/config.go:402 lxc/image.go:233 lxc/image.go:1137
+#: lxc/config_trust.go:174 lxc/image.go:923 lxc/image_alias.go:229
 msgid "FINGERPRINT"
 msgstr ""
 
-#: lxc/utils.go:261
+#: lxc/utils.go:202
 #, c-format
 msgid "Failed to create alias %s"
 msgstr ""
 
-#: lxc/manpage.go:62
-#, c-format
-msgid "Failed to generate 'lxc.%s.1': %v"
-msgstr ""
-
-#: lxc/manpage.go:55
-#, c-format
-msgid "Failed to generate 'lxc.1': %v"
-msgstr ""
-
-#: lxc/copy.go:238
+#: lxc/copy.go:255
 msgid "Failed to get the new container name"
 msgstr ""
 
-#: lxc/utils.go:251
+#: lxc/utils.go:192
 #, c-format
 msgid "Failed to remove alias %s"
 msgstr ""
 
-#: lxc/file.go:137
+#: lxc/file.go:609
 #, c-format
 msgid "Failed to walk path for %s: %s"
 msgstr ""
 
-#: lxc/list.go:137
+#: lxc/list.go:114
 msgid "Fast mode (same as --columns=nsacPt)"
 msgstr ""
 
-#: lxc/network.go:536 lxc/operation.go:121
+#: lxc/network.go:749 lxc/operation.go:126
 msgid "Filtering isn't supported yet"
 msgstr ""
 
-#: lxc/image.go:599
+#: lxc/image.go:824
 #, c-format
 msgid "Fingerprint: %s"
 msgstr ""
 
-#: lxc/exec.go:70
+#: lxc/exec.go:54
 msgid "Force pseudo-terminal allocation"
 msgstr ""
 
-#: lxc/cluster.go:42
-msgid "Force removing a node, even if degraded"
+#: lxc/cluster.go:242
+msgid "Force removing a member, even if degraded"
 msgstr ""
 
-#: lxc/action.go:47 lxc/action.go:48
+#: lxc/action.go:121
 msgid "Force the container to shutdown"
 msgstr ""
 
-#: lxc/delete.go:34 lxc/delete.go:35
+#: lxc/delete.go:34
 msgid "Force the removal of running containers"
 msgstr ""
 
-#: lxc/main.go:53
+#: lxc/main.go:56
 msgid "Force using the local unix socket"
 msgstr ""
 
-#: lxc/image.go:181 lxc/list.go:136
+#: lxc/image.go:913 lxc/list.go:113
 msgid "Format (csv|json|table|yaml)"
 msgstr ""
 
-#: lxc/remote.go:166
+#: lxc/remote.go:211
 msgid "Generating a client certificate. This may take a minute..."
 msgstr ""
 
-#: lxc/network.go:513
+#: lxc/config_device.go:178 lxc/config_device.go:179
+msgid "Get values for container device configuration keys"
+msgstr ""
+
+#: lxc/config.go:288 lxc/config.go:289
+msgid "Get values for container or server configuration keys"
+msgstr ""
+
+#: lxc/network.go:659 lxc/network.go:660
+msgid "Get values for network configuration keys"
+msgstr ""
+
+#: lxc/profile.go:519 lxc/profile.go:520
+msgid "Get values for profile configuration keys"
+msgstr ""
+
+#: lxc/storage.go:327 lxc/storage.go:328
+msgid "Get values for storage pool configuration keys"
+msgstr ""
+
+#: lxc/storage_volume.go:852 lxc/storage_volume.go:853
+msgid "Get values for storage volume configuration keys"
+msgstr ""
+
+#: lxc/network.go:851
 msgid "HOSTNAME"
 msgstr ""
 
-#: lxc/operation.go:152
+#: lxc/operation.go:151
 msgid "ID"
 msgstr ""
 
-#: lxc/network.go:515
+#: lxc/network.go:853
 msgid "IP ADDRESS"
 msgstr ""
 
-#: lxc/list.go:465
+#: lxc/list.go:462
 msgid "IPV4"
 msgstr ""
 
-#: lxc/list.go:466
+#: lxc/list.go:463
 msgid "IPV6"
 msgstr ""
 
-#: lxc/config.go:404
+#: lxc/config_trust.go:176
 msgid "ISSUE DATE"
 msgstr ""
 
-#: lxc/main.go:171
+#: lxc/main.go:259
 msgid ""
 "If this is your first time running LXD on this machine, you should also run: "
 "lxd init"
 msgstr ""
 
-#: lxc/main.go:54
-msgid "Ignore aliases when determining what command to run"
-msgstr ""
-
-#: lxc/action.go:51
-msgid "Ignore the container state (only for start)"
+#: lxc/action.go:117
+msgid "Ignore the container state"
 msgstr ""
 
-#: lxc/image.go:557
+#: lxc/image.go:1268
 msgid "Image already up to date."
 msgstr ""
 
-#: lxc/image.go:463
+#: lxc/image.go:231
 msgid "Image copied successfully!"
 msgstr ""
 
-#: lxc/image.go:982
+#: lxc/image.go:554
 msgid "Image exported successfully!"
 msgstr ""
 
-#: lxc/image.go:778
+#: lxc/image.go:284 lxc/image.go:1235
+msgid "Image identifier missing"
+msgstr ""
+
+#: lxc/image.go:352
+#, c-format
+msgid "Image identifier missing: %s"
+msgstr ""
+
+#: lxc/image.go:749
 #, c-format
 msgid "Image imported with fingerprint: %s"
 msgstr ""
 
-#: lxc/image.go:555
+#: lxc/image.go:1266
 msgid "Image refreshed successfully!"
 msgstr ""
 
-#: lxc/query.go:39
+#: lxc/image.go:571
+msgid ""
+"Import image into the image store\n"
+"\n"
+"Directory import is only available on Linux and must be performed as root."
+msgstr ""
+
+#: lxc/image.go:570
+msgid "Import images into the image store"
+msgstr ""
+
+#: lxc/query.go:38
 msgid "Input data"
 msgstr ""
 
-#: lxc/init.go:149
+#: lxc/init.go:47
 msgid "Instance type"
 msgstr ""
 
-#: lxc/remote.go:118
+#: lxc/remote.go:163
 #, c-format
 msgid "Invalid URL scheme \"%s\" in \"%s\""
 msgstr ""
 
-#: lxc/config.go:383
+#: lxc/config_trust.go:155
 msgid "Invalid certificate"
 msgstr ""
 
-#: lxc/init.go:32 lxc/init.go:37
-msgid "Invalid configuration key"
+#: lxc/list.go:525
+#, c-format
+msgid "Invalid config key '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:520
+#, c-format
+msgid "Invalid config key column format (too many fields): '%s'"
+msgstr ""
+
+#: lxc/image.go:1196 lxc/list.go:386
+#, c-format
+msgid "Invalid format %q"
+msgstr ""
+
+#: lxc/list.go:543
+#, c-format
+msgid "Invalid max width (must -1, 0 or a positive integer) '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:540
+#, c-format
+msgid "Invalid max width (must be an integer) '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:531
+#, c-format
+msgid ""
+"Invalid name in '%s', empty string is only allowed when defining maxWidth"
+msgstr ""
+
+#: lxc/main.go:341
+msgid "Invalid number of arguments"
 msgstr ""
 
-#: lxc/file.go:560
+#: lxc/file.go:97
 #, c-format
 msgid "Invalid path %s"
 msgstr ""
 
-#: lxc/remote.go:107
+#: lxc/remote.go:152
 #, c-format
 msgid "Invalid protocol: %s"
 msgstr ""
 
-#: lxc/file.go:473
+#: lxc/file.go:243
 #, c-format
 msgid "Invalid source %s"
 msgstr ""
 
-#: lxc/file.go:250
+#: lxc/file.go:352
 #, c-format
 msgid "Invalid target %s"
 msgstr ""
 
-#: lxc/info.go:156
+#: lxc/info.go:160
 msgid "Ips:"
 msgstr ""
 
-#: lxc/image.go:179
+#: lxc/image.go:139
 msgid "Keep the image up to date after initial copy"
 msgstr ""
 
-#: lxc/list.go:470
+#: lxc/list.go:467
 msgid "LAST USED AT"
 msgstr ""
 
-#: lxc/list.go:492
+#: lxc/list.go:489
 msgid "LOCATION"
 msgstr ""
 
-#: lxc/main.go:38
-msgid "LXD socket not found; is LXD installed and running?"
+#: lxc/cluster.go:94
+msgid "LXD server isn't part of a cluster"
 msgstr ""
 
-#: lxc/image.go:615
+#: lxc/image.go:844
 #, c-format
 msgid "Last used: %s"
 msgstr ""
 
-#: lxc/image.go:617
+#: lxc/image.go:846
 msgid "Last used: never"
 msgstr ""
 
-#: lxc/info.go:119
-#, c-format
-msgid "Location: %s"
-msgstr ""
-
-#: lxc/info.go:271
-msgid "Log:"
-msgstr ""
-
-#: lxc/network.go:514
-msgid "MAC ADDRESS"
-msgstr ""
-
-#: lxc/network.go:578
-msgid "MANAGED"
+#: lxc/network.go:807 lxc/network.go:808
+msgid "List DHCP leases"
 msgstr ""
 
-#: lxc/cluster.go:187
-msgid "MESSAGE"
+#: lxc/alias.go:98 lxc/alias.go:99
+msgid "List aliases"
 msgstr ""
 
-#: lxc/image.go:177
-msgid "Make image public"
+#: lxc/cluster.go:58 lxc/cluster.go:59
+msgid "List all the cluster members"
 msgstr ""
 
-#: lxc/publish.go:35
-msgid "Make the image public"
+#: lxc/network.go:718 lxc/network.go:719
+msgid "List available networks"
 msgstr ""
 
-#: lxc/info.go:193
-msgid "Memory (current)"
+#: lxc/storage.go:490 lxc/storage.go:491
+msgid "List available storage pools"
 msgstr ""
 
-#: lxc/info.go:197
-msgid "Memory (peak)"
+#: lxc/operation.go:97 lxc/operation.go:98
+msgid "List background operations"
 msgstr ""
 
-#: lxc/info.go:209
-msgid "Memory usage:"
+#: lxc/config_device.go:251 lxc/config_device.go:252
+msgid "List container devices"
 msgstr ""
 
-#: lxc/monitor.go:70
-msgid "Minimum level for log messages"
+#: lxc/config_template.go:235 lxc/config_template.go:236
+msgid "List container file templates"
 msgstr ""
 
-#: lxc/utils.go:143
-msgid "Missing summary."
+#: lxc/list.go:47
+msgid "List containers"
 msgstr ""
 
-#: lxc/network.go:303 lxc/network.go:356 lxc/storage.go:435 lxc/storage.go:565
-msgid "More than one device matches, specify the device name."
-msgstr ""
+#: lxc/list.go:48
+msgid ""
+"List containers\n"
+"\n"
+"Default column layout: ns46tS\n"
+"Fast column layout: nsacPt\n"
+"\n"
+"== Filters ==\n"
+"A single keyword like \"web\" which will list any container with a name "
+"starting by \"web\".\n"
+"A regular expression on the container name. (e.g. .*web.*01$).\n"
+"A key/value pair referring to a configuration item. For those, the\n"
+"namespace can be abbreviated to the smallest unambiguous identifier.\n"
+"\n"
+"Examples:\n"
+"  - \"user.blah=abc\" will list all containers with the \"blah\" user "
+"property set to \"abc\".\n"
+"  - \"u.blah=abc\" will do the same\n"
+"  - \"security.privileged=true\" will list all privileged containers\n"
+"  - \"s.privileged=true\" will do the same\n"
+"\n"
+"A regular expression matching a configuration item or its value. (e.g. "
+"volatile.eth0.hwaddr=00:16:3e:.*).\n"
+"\n"
+"== Columns ==\n"
+"The -c option takes a comma separated list of arguments that control\n"
+"which container attributes to output when displaying in table or csv\n"
+"format.\n"
+"\n"
+"Column arguments are either pre-defined shorthand chars (see below),\n"
+"or (extended) config keys.\n"
+"\n"
+"Commas between consecutive shorthand chars are optional.\n"
+"\n"
+"Pre-defined column shorthand chars:\n"
+"  4 - IPv4 address\n"
+"  6 - IPv6 address\n"
+"  a - Architecture\n"
+"  b - Storage pool\n"
+"  c - Creation date\n"
+"  d - Description\n"
+"  l - Last used date\n"
+"  n - Name\n"
+"  N - Number of Processes\n"
+"  p - PID of the container's init process\n"
+"  P - Profiles\n"
+"  s - State\n"
+"  S - Number of snapshots\n"
+"  t - Type (persistent or ephemeral)\n"
+"  L - Location of the container (e.g. its node)\n"
+"\n"
+"Custom columns are defined with \"key[:name][:maxWidth]\":\n"
+"  KEY: The (extended) config key to display\n"
+"  NAME: Name to display in the column header.\n"
+"  Defaults to the key if not specified or empty.\n"
+"\n"
+"  MAXWIDTH: Max width of the column (longer results are truncated).\n"
+"  Defaults to -1 (unlimited). Use 0 to limit to the column header size."
+msgstr ""
+
+#: lxc/image_alias.go:148
+msgid "List image aliases"
+msgstr ""
+
+#: lxc/image_alias.go:149
+msgid ""
+"List image aliases\n"
+"\n"
+"Filters may be part of the image hash or part of the image alias name.\n"
+msgstr ""
+
+#: lxc/image.go:889
+msgid "List images"
+msgstr ""
+
+#: lxc/image.go:890
+msgid ""
+"List images\n"
+"\n"
+"Filters may be of the <key>=<value> form for property based filtering,\n"
+"or part of the image hash or part of the image alias name.\n"
+"\n"
+"The -c option takes a (optionally comma-separated) list of arguments\n"
+"that control which image attributes to output when displaying in table\n"
+"or csv format.\n"
+"\n"
+"Default column layout is: lfpdasu\n"
+"\n"
+"Column shorthand chars:\n"
+"\n"
+"    l - Shortest image alias (and optionally number of other aliases)\n"
+"    L - Newline-separated list of all image aliases\n"
+"    f - Fingerprint\n"
+"    p - Whether image is public\n"
+"    d - Description\n"
+"    a - Architecture\n"
+"    s - Size"
+msgstr ""
+
+#: lxc/profile.go:567 lxc/profile.go:568
+msgid "List profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:917 lxc/storage_volume.go:918
+msgid "List storage volumes"
+msgstr ""
+
+#: lxc/remote.go:413 lxc/remote.go:414
+msgid "List the available remotes"
+msgstr ""
+
+#: lxc/config_trust.go:114 lxc/config_trust.go:115
+msgid "List trusted clients"
+msgstr ""
+
+#: lxc/operation.go:24 lxc/operation.go:25
+msgid "List, show and delete background operations"
+msgstr ""
+
+#: lxc/info.go:123
+#, c-format
+msgid "Location: %s"
+msgstr ""
+
+#: lxc/info.go:275
+msgid "Log:"
+msgstr ""
+
+#: lxc/network.go:852
+msgid "MAC ADDRESS"
+msgstr ""
+
+#: lxc/network.go:783
+msgid "MANAGED"
+msgstr ""
+
+#: lxc/cluster.go:123
+msgid "MESSAGE"
+msgstr ""
+
+#: lxc/image.go:137 lxc/image.go:576
+msgid "Make image public"
+msgstr ""
+
+#: lxc/publish.go:38
+msgid "Make the image public"
+msgstr ""
+
+#: lxc/network.go:32
+msgid "Manage an attach containers to networks"
+msgstr ""
+
+#: lxc/network.go:31
+msgid "Manage and attach containers to networks"
+msgstr ""
+
+#: lxc/cluster.go:25 lxc/cluster.go:26
+msgid "Manage cluster members"
+msgstr ""
+
+#: lxc/alias.go:22 lxc/alias.go:23
+msgid "Manage command aliases"
+msgstr ""
+
+#: lxc/config.go:28 lxc/config.go:29
+msgid "Manage container and server configuration options"
+msgstr ""
+
+#: lxc/config_device.go:23 lxc/config_device.go:24
+msgid "Manage container devices"
+msgstr ""
+
+#: lxc/config_template.go:29 lxc/config_template.go:30
+msgid "Manage container file templates"
+msgstr ""
+
+#: lxc/config_metadata.go:28 lxc/config_metadata.go:29
+msgid "Manage container metadata files"
+msgstr ""
+
+#: lxc/file.go:39 lxc/file.go:40
+msgid "Manage files in containers"
+msgstr ""
+
+#: lxc/image_alias.go:25 lxc/image_alias.go:26
+msgid "Manage image aliases"
+msgstr ""
+
+#: lxc/image.go:41
+msgid "Manage images"
+msgstr ""
+
+#: lxc/image.go:42
+msgid ""
+"Manage images\n"
+"\n"
+"In LXD containers are created from images. Those images were themselves\n"
+"either generated from an existing container or downloaded from an image\n"
+"server.\n"
+"\n"
+"When using remote images, LXD will automatically cache images for you\n"
+"and remove them upon expiration.\n"
+"\n"
+"The image unique identifier is the hash (sha-256) of its representation\n"
+"as a compressed tarball (or for split images, the concatenation of the\n"
+"metadata and rootfs tarballs).\n"
+"\n"
+"Images can be referenced by their full hash, shortest unique partial\n"
+"hash or alias name (if one is set)."
+msgstr ""
+
+#: lxc/profile.go:29 lxc/profile.go:30
+msgid "Manage profiles"
+msgstr ""
+
+#: lxc/storage.go:32 lxc/storage.go:33
+msgid "Manage storage pools and volumes"
+msgstr ""
+
+#: lxc/storage_volume.go:33
+msgid "Manage storage volumes"
+msgstr ""
+
+#: lxc/storage_volume.go:34
+msgid ""
+"Manage storage volumes\n"
+"\n"
+"Unless specified through a prefix, all volume operations affect \"custom"
+"\" (user created) volumes."
+msgstr ""
+
+#: lxc/remote.go:33 lxc/remote.go:34
+msgid "Manage the list of remote servers"
+msgstr ""
+
+#: lxc/config_trust.go:29 lxc/config_trust.go:30
+msgid "Manage trusted clients"
+msgstr ""
+
+#: lxc/info.go:197
+msgid "Memory (current)"
+msgstr ""
+
+#: lxc/info.go:201
+msgid "Memory (peak)"
+msgstr ""
+
+#: lxc/info.go:213
+msgid "Memory usage:"
+msgstr ""
+
+#: lxc/monitor.go:49
+msgid "Minimum level for log messages"
+msgstr ""
+
+#: lxc/config_metadata.go:102 lxc/config_metadata.go:200
+#: lxc/config_template.go:91 lxc/config_template.go:134
+#: lxc/config_template.go:176 lxc/config_template.go:260
+#: lxc/config_template.go:322 lxc/profile.go:197 lxc/profile.go:656
+msgid "Missing container name"
+msgstr ""
+
+#: lxc/profile.go:126
+msgid "Missing container.name name"
+msgstr ""
+
+#: lxc/config_device.go:103 lxc/config_device.go:203 lxc/config_device.go:276
+#: lxc/config_device.go:342 lxc/config_device.go:429 lxc/config_device.go:517
+#: lxc/config_device.go:606
+msgid "Missing name"
+msgstr ""
+
+#: lxc/network.go:128 lxc/network.go:201 lxc/network.go:344 lxc/network.go:391
+#: lxc/network.go:476 lxc/network.go:581 lxc/network.go:686 lxc/network.go:832
+#: lxc/network.go:897 lxc/network.go:946 lxc/network.go:1015
+msgid "Missing network name"
+msgstr ""
+
+#: lxc/storage.go:185 lxc/storage.go:252 lxc/storage.go:353 lxc/storage.go:408
+#: lxc/storage.go:603 lxc/storage.go:677 lxc/storage_volume.go:146
+#: lxc/storage_volume.go:225 lxc/storage_volume.go:451
+#: lxc/storage_volume.go:526 lxc/storage_volume.go:585
+#: lxc/storage_volume.go:667 lxc/storage_volume.go:766
+#: lxc/storage_volume.go:878 lxc/storage_volume.go:942
+#: lxc/storage_volume.go:1050 lxc/storage_volume.go:1114
+#: lxc/storage_volume.go:1197
+msgid "Missing pool name"
+msgstr ""
+
+#: lxc/profile.go:321 lxc/profile.go:372 lxc/profile.go:444 lxc/profile.go:544
+#: lxc/profile.go:729 lxc/profile.go:777 lxc/profile.go:836
+msgid "Missing profile name"
+msgstr ""
+
+#: lxc/profile.go:266
+msgid "Missing source profile name"
+msgstr ""
 
-#: lxc/file.go:460
+#: lxc/storage_volume.go:311
+msgid "Missing source volume name"
+msgstr ""
+
+#: lxc/file.go:446
+msgid "Missing target directory"
+msgstr ""
+
+#: lxc/monitor.go:30
+msgid "Monitor a local or remote LXD server"
+msgstr ""
+
+#: lxc/monitor.go:31
+msgid ""
+"Monitor a local or remote LXD server\n"
+"\n"
+"By default the monitor will listen to all message types."
+msgstr ""
+
+#: lxc/network.go:411 lxc/network.go:496 lxc/storage_volume.go:605
+#: lxc/storage_volume.go:686
+msgid "More than one device matches, specify the device name."
+msgstr ""
+
+#: lxc/file.go:224
 msgid "More than one file to download, but target is not a directory"
 msgstr ""
 
-#: lxc/move.go:42
+#: lxc/move.go:30 lxc/move.go:31
+msgid "Move containers within or in between LXD instances"
+msgstr ""
+
+#: lxc/storage_volume.go:993 lxc/storage_volume.go:994
+msgid "Move storage volumes between pools"
+msgstr ""
+
+#: lxc/move.go:44
 msgid "Move the container without its snapshots"
 msgstr ""
 
-#: lxc/storage.go:1128
+#: lxc/storage_volume.go:375
 #, c-format
 msgid "Moving the storage volume: %s"
 msgstr ""
 
-#: lxc/image.go:1292
+#: lxc/image.go:588
 msgid "Must run as root to import from directory"
 msgstr ""
 
-#: lxc/action.go:74
+#: lxc/action.go:147
 msgid "Must supply container name for: "
 msgstr ""
 
-#: lxc/cluster.go:183 lxc/list.go:471 lxc/network.go:576 lxc/profile.go:573
-#: lxc/remote.go:409 lxc/storage.go:731 lxc/storage.go:936
+#: lxc/cluster.go:119 lxc/list.go:468 lxc/network.go:781 lxc/profile.go:613
+#: lxc/remote.go:463 lxc/storage.go:544 lxc/storage_volume.go:966
 msgid "NAME"
 msgstr ""
 
-#: lxc/network.go:558 lxc/operation.go:139 lxc/remote.go:380 lxc/remote.go:385
+#: lxc/network.go:763 lxc/operation.go:138 lxc/remote.go:434 lxc/remote.go:439
 msgid "NO"
 msgstr ""
 
-#: lxc/storage.go:941
+#: lxc/storage_volume.go:971
 msgid "NODE"
 msgstr ""
 
-#: lxc/info.go:117
+#: lxc/info.go:121
 #, c-format
 msgid "Name: %s"
 msgstr ""
 
-#: lxc/network.go:276
+#: lxc/network.go:303
 #, c-format
 msgid "Network %s created"
 msgstr ""
 
-#: lxc/network.go:393
+#: lxc/network.go:353
 #, c-format
 msgid "Network %s deleted"
 msgstr ""
 
-#: lxc/network.go:274
+#: lxc/network.go:301
 #, c-format
 msgid "Network %s pending on node %s"
 msgstr ""
 
-#: lxc/network.go:470
+#: lxc/network.go:906
 #, c-format
 msgid "Network %s renamed to %s"
 msgstr ""
 
-#: lxc/init.go:145 lxc/init.go:146
+#: lxc/init.go:45
 msgid "Network name"
 msgstr ""
 
-#: lxc/info.go:226
+#: lxc/info.go:230
 msgid "Network usage:"
 msgstr ""
 
-#: lxc/image.go:180 lxc/publish.go:36
+#: lxc/publish.go:39
 msgid "New alias to define at target"
 msgstr ""
 
-#: lxc/config.go:414
-msgid "No certificate provided to add"
+#: lxc/image.go:140 lxc/image.go:577
+msgid "New aliases to add to the image"
 msgstr ""
 
-#: lxc/network.go:312 lxc/network.go:365
+#: lxc/network.go:420 lxc/network.go:505
 msgid "No device found for this network"
 msgstr ""
 
-#: lxc/storage.go:444 lxc/storage.go:574
+#: lxc/storage_volume.go:614 lxc/storage_volume.go:695
 msgid "No device found for this storage volume."
 msgstr ""
 
-#: lxc/config.go:446
-msgid "No fingerprint specified."
-msgstr ""
-
-#: lxc/cluster.go:143
+#: lxc/cluster.go:268
 #, c-format
 msgid "Node %s removed"
 msgstr ""
 
-#: lxc/cluster.go:119
+#: lxc/cluster.go:221
 #, c-format
 msgid "Node %s renamed to %s"
 msgstr ""
 
-#: lxc/copy.go:46 lxc/init.go:150 lxc/move.go:45 lxc/network.go:105
-#: lxc/storage.go:165
+#: lxc/copy.go:45 lxc/init.go:48 lxc/move.go:47
 msgid "Node name"
 msgstr ""
 
-#: lxc/storage.go:388 lxc/storage.go:481
+#: lxc/storage_volume.go:164 lxc/storage_volume.go:243
 msgid "Only \"custom\" volumes can be attached to containers."
 msgstr ""
 
-#: lxc/remote.go:101
+#: lxc/remote.go:146
 msgid "Only https URLs are supported for simplestreams"
 msgstr ""
 
-#: lxc/image.go:688
+#: lxc/image.go:658
 msgid "Only https:// is supported for remote image import."
 msgstr ""
 
-#: lxc/network.go:421 lxc/network.go:605
+#: lxc/network.go:607 lxc/network.go:960
 msgid "Only managed networks can be modified."
 msgstr ""
 
-#: lxc/operation.go:85
+#: lxc/operation.go:83
 #, c-format
 msgid "Operation %s deleted"
 msgstr ""
 
-#: lxc/help.go:71 lxc/main.go:139 lxc/main.go:195
-msgid "Options:"
-msgstr ""
-
-#: lxc/exec.go:69
+#: lxc/exec.go:53
 msgid "Override the terminal mode (auto, interactive or non-interactive)"
 msgstr ""
 
-#: lxc/list.go:641
+#: lxc/list.go:638
 msgid "PERSISTENT"
 msgstr ""
 
-#: lxc/list.go:473
+#: lxc/list.go:470
 msgid "PID"
 msgstr ""
 
-#: lxc/list.go:472
+#: lxc/list.go:469
 msgid "PROCESSES"
 msgstr ""
 
-#: lxc/list.go:474
+#: lxc/list.go:471
 msgid "PROFILES"
 msgstr ""
 
-#: lxc/remote.go:411
+#: lxc/remote.go:465
 msgid "PROTOCOL"
 msgstr ""
 
-#: lxc/image.go:234 lxc/remote.go:413
+#: lxc/image.go:924 lxc/remote.go:467
 msgid "PUBLIC"
 msgstr ""
 
-#: lxc/info.go:220
+#: lxc/info.go:224
 msgid "Packets received"
 msgstr ""
 
-#: lxc/info.go:221
+#: lxc/info.go:225
 msgid "Packets sent"
 msgstr ""
 
-#: lxc/help.go:78
-msgid "Path to an alternate client configuration directory"
-msgstr ""
-
-#: lxc/help.go:79
-msgid "Path to an alternate server directory"
-msgstr ""
-
-#: lxc/main.go:240
-msgid "Pause containers."
-msgstr ""
-
-#: lxc/main.go:42
-msgid "Permission denied, are you in the lxd group?"
+#: lxc/action.go:48 lxc/action.go:49
+msgid "Pause containers"
 msgstr ""
 
-#: lxc/info.go:138
+#: lxc/info.go:142
 #, c-format
 msgid "Pid: %d"
 msgstr ""
 
-#: lxc/network.go:446 lxc/profile.go:276 lxc/storage.go:648 lxc/storage.go:1210
+#: lxc/network.go:632 lxc/profile.go:491 lxc/storage.go:299
+#: lxc/storage_volume.go:823
 msgid "Press enter to open the editor again"
 msgstr ""
 
-#: lxc/config.go:822 lxc/config.go:887 lxc/config.go:1397 lxc/config.go:1447
-#: lxc/image.go:1192
+#: lxc/config.go:196 lxc/config.go:260 lxc/config_metadata.go:145
+#: lxc/config_template.go:205 lxc/image.go:406
 msgid "Press enter to start the editor again"
 msgstr ""
 
-#: lxc/monitor.go:68
+#: lxc/monitor.go:47
 msgid "Pretty rendering"
 msgstr ""
 
-#: lxc/help.go:73
-msgid "Print debug information"
-msgstr ""
-
-#: lxc/help.go:72
-msgid "Print less common commands"
+#: lxc/main.go:55
+msgid "Print help"
 msgstr ""
 
-#: lxc/query.go:37
+#: lxc/query.go:36
 msgid "Print the raw response"
 msgstr ""
 
-#: lxc/help.go:74
-msgid "Print verbose information"
+#: lxc/main.go:54
+msgid "Print version number"
 msgstr ""
 
-#: lxc/info.go:162
+#: lxc/info.go:166
 #, c-format
 msgid "Processes: %d"
 msgstr ""
 
-#: lxc/profile.go:362
+#: lxc/main_aliases.go:123 lxc/main_aliases.go:131
+#, c-format
+msgid "Processing aliases failed: %s\n"
+msgstr ""
+
+#: lxc/profile.go:147
 #, c-format
 msgid "Profile %s added to %s"
 msgstr ""
 
-#: lxc/profile.go:226
+#: lxc/profile.go:333
 #, c-format
 msgid "Profile %s created"
 msgstr ""
 
-#: lxc/profile.go:310
+#: lxc/profile.go:381
 #, c-format
 msgid "Profile %s deleted"
 msgstr ""
 
-#: lxc/profile.go:397
+#: lxc/profile.go:690
 #, c-format
 msgid "Profile %s removed from %s"
 msgstr ""
 
-#: lxc/profile.go:300
+#: lxc/profile.go:738
 #, c-format
 msgid "Profile %s renamed to %s"
 msgstr ""
 
-#: lxc/copy.go:39 lxc/copy.go:40 lxc/init.go:141 lxc/init.go:142
+#: lxc/copy.go:40 lxc/init.go:43
 msgid "Profile to apply to the new container"
 msgstr ""
 
-#: lxc/profile.go:339
+#: lxc/profile.go:225
 #, c-format
 msgid "Profiles %s applied to %s"
 msgstr ""
 
-#: lxc/info.go:136
+#: lxc/info.go:140
 #, c-format
 msgid "Profiles: %s"
 msgstr ""
 
-#: lxc/image.go:619
+#: lxc/image.go:849
 msgid "Properties:"
 msgstr ""
 
-#: lxc/remote.go:72
+#: lxc/remote.go:92
 msgid "Public image server"
 msgstr ""
 
-#: lxc/image.go:602
+#: lxc/image.go:827
 #, c-format
 msgid "Public: %s"
 msgstr ""
 
-#: lxc/file.go:68 lxc/file.go:69
-msgid "Recursively push or pull files"
+#: lxc/publish.go:33 lxc/publish.go:34
+msgid "Publish containers as images"
 msgstr ""
 
-#: lxc/image.go:529
-#, c-format
-msgid "Refreshing the image: %s"
+#: lxc/file.go:184 lxc/file.go:185
+msgid "Pull files from containers"
 msgstr ""
 
-#: lxc/remote.go:69
-msgid "Remote admin password"
+#: lxc/file.go:323 lxc/file.go:324
+msgid "Push files into containers"
 msgstr ""
 
-#: lxc/utils/cancel.go:34
-msgid "Remote operation canceled by user"
+#: lxc/file.go:192 lxc/file.go:330
+msgid "Recursively transfer files"
+msgstr ""
+
+#: lxc/image.go:1211 lxc/image.go:1212
+msgid "Refresh images"
 msgstr ""
 
-#: lxc/info.go:122
+#: lxc/image.go:1239
 #, c-format
-msgid "Remote: %s"
+msgid "Refreshing the image: %s"
 msgstr ""
 
-#: lxc/delete.go:42
+#: lxc/remote.go:515
 #, c-format
-msgid "Remove %s (yes/no): "
+msgid "Remote %s already exists"
 msgstr ""
 
-#: lxc/storage.go:1247
+#: lxc/remote.go:507 lxc/remote.go:569 lxc/remote.go:618 lxc/remote.go:656
 #, c-format
-msgid "Renamed storage volume from \"%s\" to \"%s\""
+msgid "Remote %s doesn't exist"
 msgstr ""
 
-#: lxc/delete.go:36 lxc/delete.go:37
-msgid "Require user confirmation"
+#: lxc/remote.go:116
+#, c-format
+msgid "Remote %s exists as <%s>"
 msgstr ""
 
-#: lxc/info.go:159
-msgid "Resources:"
+#: lxc/remote.go:511 lxc/remote.go:573 lxc/remote.go:660
+#, c-format
+msgid "Remote %s is static and cannot be modified"
 msgstr ""
 
-#: lxc/main.go:248
-msgid "Restart containers."
+#: lxc/remote.go:89
+msgid "Remote admin password"
 msgstr ""
 
-#: lxc/console.go:38
-msgid "Retrieve the container's console log"
+#: lxc/utils/cancel.go:34
+msgid "Remote operation canceled by user"
 msgstr ""
 
-#: lxc/init.go:293
+#: lxc/info.go:126
 #, c-format
-msgid "Retrieving image: %s"
+msgid "Remote: %s"
 msgstr ""
 
-#: lxc/action.go:52
-msgid "Run command against all containers"
+#: lxc/delete.go:42
+#, c-format
+msgid "Remove %s (yes/no): "
 msgstr ""
 
-#: lxc/image.go:237
-msgid "SIZE"
+#: lxc/cluster.go:237 lxc/cluster.go:238
+msgid "Remove a member from the cluster"
 msgstr ""
 
-#: lxc/list.go:475
-msgid "SNAPSHOTS"
+#: lxc/alias.go:197 lxc/alias.go:198
+msgid "Remove aliases"
 msgstr ""
 
-#: lxc/storage.go:738
-msgid "SOURCE"
+#: lxc/config_device.go:404 lxc/config_device.go:405
+msgid "Remove container devices"
 msgstr ""
 
-#: lxc/cluster.go:186 lxc/list.go:476 lxc/network.go:583 lxc/storage.go:736
-msgid "STATE"
+#: lxc/profile.go:631 lxc/profile.go:632
+msgid "Remove profiles from containers"
 msgstr ""
 
-#: lxc/remote.go:414
-msgid "STATIC"
+#: lxc/remote.go:548 lxc/remote.go:549
+msgid "Remove remotes"
 msgstr ""
 
-#: lxc/operation.go:155
-msgid "STATUS"
+#: lxc/config_trust.go:196 lxc/config_trust.go:197
+msgid "Remove trusted clients"
 msgstr ""
 
-#: lxc/list.go:478
-msgid "STORAGE POOL"
+#: lxc/cluster.go:191 lxc/cluster.go:192
+msgid "Rename a cluster member"
 msgstr ""
 
-#: lxc/remote.go:71
-msgid "Server authentication type (tls or macaroons)"
+#: lxc/alias.go:146 lxc/alias.go:147 lxc/image_alias.go:249
+#: lxc/image_alias.go:250
+msgid "Rename aliases"
 msgstr ""
 
-#: lxc/remote.go:211
-msgid "Server certificate NACKed by user"
+#: lxc/rename.go:19 lxc/rename.go:20
+msgid "Rename containers and snapshots"
 msgstr ""
 
-#: lxc/remote.go:311
-msgid "Server doesn't trust us after authentication"
+#: lxc/network.go:872 lxc/network.go:873
+msgid "Rename networks"
 msgstr ""
 
-#: lxc/remote.go:70
-msgid "Server protocol (lxd or simplestreams)"
+#: lxc/profile.go:704 lxc/profile.go:705
+msgid "Rename profiles"
 msgstr ""
 
-#: lxc/file.go:66
-msgid "Set the file's gid on push"
+#: lxc/remote.go:486 lxc/remote.go:487
+msgid "Rename remotes"
 msgstr ""
 
-#: lxc/file.go:67
-msgid "Set the file's perms on push"
+#: lxc/storage_volume.go:1024 lxc/storage_volume.go:1025
+msgid "Rename storage volumes"
 msgstr ""
 
-#: lxc/file.go:65
-msgid "Set the file's uid on push"
+#: lxc/storage_volume.go:1073
+#, c-format
+msgid "Renamed storage volume from \"%s\" to \"%s\""
 msgstr ""
 
-#: lxc/help.go:29
-msgid "Show all commands (not just interesting ones)"
+#: lxc/delete.go:35
+msgid "Require user confirmation"
 msgstr ""
 
-#: lxc/help.go:75
-msgid "Show client version"
+#: lxc/info.go:163
+msgid "Resources:"
 msgstr ""
 
-#: lxc/info.go:40
-msgid "Show the container's last 100 log lines?"
+#: lxc/action.go:68
+msgid "Restart containers"
 msgstr ""
 
-#: lxc/config.go:36
-msgid "Show the expanded configuration"
+#: lxc/action.go:69
+msgid ""
+"Restart containers\n"
+"\n"
+"The opposite of \"lxc pause\" is \"lxc start\"."
 msgstr ""
 
-#: lxc/info.go:41
-msgid "Show the resources available to the server"
+#: lxc/restore.go:23
+msgid "Restore containers from snapshots"
 msgstr ""
 
-#: lxc/storage.go:163
-msgid "Show the resources available to the storage pool"
+#: lxc/restore.go:24
+msgid ""
+"Restore containers from snapshots\n"
+"\n"
+"If --stateful is passed, then the running state will be restored too."
+msgstr ""
+
+#: lxc/console.go:39
+msgid "Retrieve the container's console log"
+msgstr ""
+
+#: lxc/init.go:201
+#, c-format
+msgid "Retrieving image: %s"
+msgstr ""
+
+#: lxc/action.go:112
+msgid "Run command against all containers"
+msgstr ""
+
+#: lxc/image.go:927
+msgid "SIZE"
+msgstr ""
+
+#: lxc/list.go:472
+msgid "SNAPSHOTS"
+msgstr ""
+
+#: lxc/storage.go:551
+msgid "SOURCE"
+msgstr ""
+
+#: lxc/cluster.go:122 lxc/list.go:473 lxc/network.go:788 lxc/storage.go:549
+msgid "STATE"
+msgstr ""
+
+#: lxc/remote.go:468
+msgid "STATIC"
+msgstr ""
+
+#: lxc/operation.go:154
+msgid "STATUS"
+msgstr ""
+
+#: lxc/list.go:475
+msgid "STORAGE POOL"
+msgstr ""
+
+#: lxc/query.go:26 lxc/query.go:27
+msgid "Send a raw query to LXD"
+msgstr ""
+
+#: lxc/remote.go:91
+msgid "Server authentication type (tls or macaroons)"
+msgstr ""
+
+#: lxc/remote.go:260
+msgid "Server certificate NACKed by user"
+msgstr ""
+
+#: lxc/remote.go:360
+msgid "Server doesn't trust us after authentication"
+msgstr ""
+
+#: lxc/remote.go:90
+msgid "Server protocol (lxd or simplestreams)"
+msgstr ""
+
+#: lxc/config_device.go:492 lxc/config_device.go:493
+msgid "Set container device configuration keys"
+msgstr ""
+
+#: lxc/config.go:354 lxc/config.go:355
+msgid "Set container or server configuration keys"
+msgstr ""
+
+#: lxc/network.go:919 lxc/network.go:920
+msgid "Set network configuration keys"
+msgstr ""
+
+#: lxc/profile.go:752 lxc/profile.go:753
+msgid "Set profile configuration keys"
+msgstr ""
+
+#: lxc/storage.go:572 lxc/storage.go:573
+msgid "Set storage pool configuration keys"
+msgstr ""
+
+#: lxc/storage_volume.go:1088 lxc/storage_volume.go:1089
+msgid "Set storage volume configuration keys"
+msgstr ""
+
+#: lxc/remote.go:635 lxc/remote.go:636
+msgid "Set the URL for the remote"
+msgstr ""
+
+#: lxc/remote.go:597 lxc/remote.go:598
+msgid "Set the default remote"
+msgstr ""
+
+#: lxc/file.go:333
+msgid "Set the file's gid on push"
+msgstr ""
+
+#: lxc/file.go:334
+msgid "Set the file's perms on push"
+msgstr ""
+
+#: lxc/file.go:332
+msgid "Set the file's uid on push"
+msgstr ""
+
+#: lxc/main.go:57
+msgid "Show all debug messages"
+msgstr ""
+
+#: lxc/main.go:58
+msgid "Show all information messages"
+msgstr ""
+
+#: lxc/config_metadata.go:175 lxc/config_metadata.go:176
+msgid "Show container metadata files"
+msgstr ""
+
+#: lxc/config.go:451 lxc/config.go:452
+msgid "Show container or server configurations"
+msgstr ""
+
+#: lxc/info.go:28 lxc/info.go:29
+msgid "Show container or server information"
+msgstr ""
+
+#: lxc/config_template.go:297 lxc/config_template.go:298
+msgid "Show content of container file templates"
+msgstr ""
+
+#: lxc/cluster.go:141 lxc/cluster.go:142
+msgid "Show details of a cluster member"
+msgstr ""
+
+#: lxc/operation.go:173 lxc/operation.go:174
+msgid "Show details on a background operation"
+msgstr ""
+
+#: lxc/config_device.go:581 lxc/config_device.go:582
+msgid "Show full device configuration for containers or profiles"
+msgstr ""
+
+#: lxc/image.go:1284 lxc/image.go:1285
+msgid "Show image properties"
+msgstr ""
+
+#: lxc/main.go:61
+msgid "Show less common commands"
 msgstr ""
 
-#: lxc/storage.go:164
+#: lxc/network.go:988 lxc/network.go:989
+msgid "Show network configurations"
+msgstr ""
+
+#: lxc/profile.go:811 lxc/profile.go:812
+msgid "Show profile configurations"
+msgstr ""
+
+#: lxc/storage.go:644 lxc/storage.go:645
+msgid "Show storage pool configurations and resources"
+msgstr ""
+
+#: lxc/storage_volume.go:1165
+msgid "Show storage volum configurations"
+msgstr ""
+
+#: lxc/storage_volume.go:1166
+msgid "Show storage volume configurations"
+msgstr ""
+
+#: lxc/info.go:39
+msgid "Show the container's last 100 log lines?"
+msgstr ""
+
+#: lxc/remote.go:379 lxc/remote.go:380
+msgid "Show the default remote"
+msgstr ""
+
+#: lxc/config.go:455
+msgid "Show the expanded configuration"
+msgstr ""
+
+#: lxc/info.go:40
+msgid "Show the resources available to the server"
+msgstr ""
+
+#: lxc/storage.go:648
+msgid "Show the resources available to the storage pool"
+msgstr ""
+
+#: lxc/storage.go:386
 msgid "Show the used and free space in bytes"
 msgstr ""
 
-#: lxc/image.go:600
+#: lxc/image.go:775 lxc/image.go:776
+msgid "Show useful information about images"
+msgstr ""
+
+#: lxc/storage.go:382 lxc/storage.go:383
+msgid "Show useful information about storage pools"
+msgstr ""
+
+#: lxc/image.go:825
 #, c-format
 msgid "Size: %.2fMB"
 msgstr ""
 
-#: lxc/info.go:240
+#: lxc/info.go:244
 msgid "Snapshots:"
 msgstr ""
 
-#: lxc/action.go:163
+#: lxc/action.go:242
 #, c-format
 msgid "Some containers failed to %s"
 msgstr ""
 
-#: lxc/image.go:634
+#: lxc/image.go:867
 msgid "Source:"
 msgstr ""
 
-#: lxc/main.go:258
-msgid "Start containers."
+#: lxc/action.go:29 lxc/action.go:30
+msgid "Start containers"
 msgstr ""
 
-#: lxc/launch.go:59
+#: lxc/launch.go:62
 #, c-format
 msgid "Starting %s"
 msgstr ""
 
-#: lxc/info.go:130
+#: lxc/info.go:134
 #, c-format
 msgid "Status: %s"
 msgstr ""
 
-#: lxc/main.go:264
-msgid "Stop containers."
+#: lxc/action.go:90 lxc/action.go:91
+msgid "Stop containers"
 msgstr ""
 
-#: lxc/publish.go:37 lxc/publish.go:38
+#: lxc/publish.go:40
 msgid "Stop the container if currently running"
 msgstr ""
 
-#: lxc/publish.go:136
+#: lxc/publish.go:144
 msgid "Stopping container failed!"
 msgstr ""
 
-#: lxc/delete.go:121
+#: lxc/delete.go:120
 #, c-format
 msgid "Stopping the container failed: %s"
 msgstr ""
 
-#: lxc/storage.go:538
+#: lxc/storage.go:144
 #, c-format
 msgid "Storage pool %s created"
 msgstr ""
 
-#: lxc/storage.go:598
+#: lxc/storage.go:194
 #, c-format
 msgid "Storage pool %s deleted"
 msgstr ""
 
-#: lxc/storage.go:536
+#: lxc/storage.go:142
 #, c-format
 msgid "Storage pool %s pending on node %s"
 msgstr ""
 
-#: lxc/init.go:147 lxc/init.go:148
+#: lxc/init.go:46
 msgid "Storage pool name"
 msgstr ""
 
-#: lxc/storage.go:980
+#: lxc/storage_volume.go:484
 #, c-format
 msgid "Storage volume %s created"
 msgstr ""
 
-#: lxc/storage.go:1000
+#: lxc/storage_volume.go:545
 #, c-format
 msgid "Storage volume %s deleted"
 msgstr ""
 
-#: lxc/storage.go:1135
+#: lxc/storage_volume.go:388
 msgid "Storage volume copied successfully!"
 msgstr ""
 
-#: lxc/storage.go:1129
+#: lxc/storage_volume.go:376
 msgid "Storage volume moved successfully!"
 msgstr ""
 
-#: lxc/action.go:50
-msgid "Store the container state (only for stop)"
+#: lxc/action.go:115
+msgid "Store the container state"
 msgstr ""
 
-#: lxc/info.go:201
+#: lxc/info.go:205
 msgid "Swap (current)"
 msgstr ""
 
-#: lxc/info.go:205
+#: lxc/info.go:209
 msgid "Swap (peak)"
 msgstr ""
 
-#: lxc/alias.go:85
+#: lxc/alias.go:128
 msgid "TARGET"
 msgstr ""
 
-#: lxc/list.go:477 lxc/network.go:516 lxc/network.go:577 lxc/operation.go:153
-#: lxc/storage.go:935
+#: lxc/list.go:474 lxc/network.go:782 lxc/network.go:854 lxc/operation.go:152
+#: lxc/storage_volume.go:965
 msgid "TYPE"
 msgstr ""
 
-#: lxc/delete.go:105
+#: lxc/delete.go:104
 msgid "The container is currently running, stop it first or pass --force."
 msgstr ""
 
-#: lxc/publish.go:101
+#: lxc/publish.go:109
 msgid ""
 "The container is currently running. Use --force to have it stopped and "
 "restarted."
 msgstr ""
 
-#: lxc/init.go:372
+#: lxc/init.go:280
 msgid "The container you are starting doesn't have any network attached to it."
 msgstr ""
 
-#: lxc/config.go:944 lxc/config.go:961 lxc/config.go:1240
+#: lxc/config_device.go:130 lxc/config_device.go:147 lxc/config_device.go:354
 msgid "The device already exists"
 msgstr ""
 
-#: lxc/config.go:1007 lxc/config.go:1019 lxc/config.go:1055 lxc/config.go:1073
-#: lxc/config.go:1119 lxc/config.go:1136 lxc/config.go:1179 lxc/config.go:1197
+#: lxc/config_device.go:218 lxc/config_device.go:230 lxc/config_device.go:442
+#: lxc/config_device.go:460 lxc/config_device.go:533 lxc/config_device.go:550
 msgid "The device doesn't exist"
 msgstr ""
 
-#: lxc/init.go:356
+#: lxc/init.go:264
 #, c-format
 msgid "The local image '%s' couldn't be found, trying '%s:%s' instead."
 msgstr ""
 
-#: lxc/init.go:352
+#: lxc/init.go:260
 #, c-format
 msgid "The local image '%s' couldn't be found, trying '%s:' instead."
 msgstr ""
 
-#: lxc/action.go:35
-msgid "The opposite of \"lxc pause\" is \"lxc start\"."
-msgstr ""
-
-#: lxc/config.go:1245
+#: lxc/config_device.go:359
 msgid "The profile device doesn't exist"
 msgstr ""
 
-#: lxc/network.go:317 lxc/network.go:370 lxc/storage.go:449 lxc/storage.go:579
+#: lxc/network.go:425 lxc/network.go:510 lxc/storage_volume.go:619
+#: lxc/storage_volume.go:700
 msgid "The specified device doesn't exist"
 msgstr ""
 
-#: lxc/network.go:321 lxc/network.go:374
+#: lxc/network.go:429 lxc/network.go:514
 msgid "The specified device doesn't match the network"
 msgstr ""
 
-#: lxc/publish.go:74
+#: lxc/publish.go:82
 msgid "There is no \"image name\".  Did you want an alias?"
 msgstr ""
 
-#: lxc/help.go:47
-msgid ""
-"This is the LXD command line client.\n"
-"\n"
-"All of LXD's features can be driven through the various commands below.\n"
-"For help with any of those, simply call them with --help."
-msgstr ""
-
-#: lxc/action.go:46
+#: lxc/action.go:122
 msgid "Time to wait for the container before killing it"
 msgstr ""
 
-#: lxc/image.go:603
+#: lxc/image.go:828
 msgid "Timestamps:"
 msgstr ""
 
-#: lxc/init.go:374
+#: lxc/init.go:282
 msgid "To attach a network to a container, use: lxc network attach"
 msgstr ""
 
-#: lxc/init.go:373
+#: lxc/init.go:281
 msgid "To create a new network, use: lxc network create"
 msgstr ""
 
-#: lxc/console.go:173
+#: lxc/console.go:185
 msgid "To detach from the console, press: <ctrl>+a q"
 msgstr ""
 
-#: lxc/main.go:172
+#: lxc/main.go:260
 msgid "To start your first container, try: lxc launch ubuntu:16.04"
 msgstr ""
 
-#: lxc/copy.go:43 lxc/move.go:43
+#: lxc/storage_volume.go:997
+msgid "Transfer mode, one of pull (default), push or relay"
+msgstr ""
+
+#: lxc/copy.go:42
+msgid "Transfer mode. One of pull (default), push or relay"
+msgstr ""
+
+#: lxc/move.go:45 lxc/storage_volume.go:286
 msgid "Transfer mode. One of pull (default), push or relay."
 msgstr ""
 
-#: lxc/copy.go:212
+#: lxc/copy.go:229
 #, c-format
 msgid "Transferring container: %s"
 msgstr ""
 
-#: lxc/image.go:717
+#: lxc/image.go:687
 #, c-format
 msgid "Transferring image: %s"
 msgstr ""
 
-#: lxc/action.go:108 lxc/launch.go:77
+#: lxc/action.go:181 lxc/launch.go:80
 #, c-format
 msgid "Try `lxc info --show-log %s` for more info"
 msgstr ""
 
-#: lxc/info.go:132
+#: lxc/info.go:136
 msgid "Type: ephemeral"
 msgstr ""
 
-#: lxc/info.go:134
+#: lxc/info.go:138
 msgid "Type: persistent"
 msgstr ""
 
-#: lxc/image.go:238
+#: lxc/image.go:928
 msgid "UPLOAD DATE"
 msgstr ""
 
-#: lxc/cluster.go:184 lxc/remote.go:410
+#: lxc/cluster.go:120 lxc/remote.go:464
 msgid "URL"
 msgstr ""
 
-#: lxc/network.go:580 lxc/profile.go:574 lxc/storage.go:740 lxc/storage.go:938
+#: lxc/network.go:785 lxc/profile.go:614 lxc/storage.go:553
+#: lxc/storage_volume.go:968
 msgid "USED BY"
 msgstr ""
 
-#: lxc/manpage.go:36
-msgid "Unable to find help2man."
+#: lxc/list.go:514
+#, c-format
+msgid "Unknown column shorthand char '%c' in '%s'"
 msgstr ""
 
-#: lxc/file.go:124
+#: lxc/file.go:596
 #, c-format
 msgid "Unknown file type '%s'"
 msgstr ""
 
-#: lxc/image.go:608
-#, c-format
-msgid "Uploaded: %s"
+#: lxc/config_device.go:649 lxc/config_device.go:650
+msgid "Unset container device configuration keys"
 msgstr ""
 
-#: lxc/action.go:38
-#, c-format
-msgid ""
-"Usage: lxc %s [--all] [<remote>:]<container> [[<remote>:]<container>...]\n"
-"\n"
-"%s%s"
+#: lxc/config.go:559 lxc/config.go:560
+msgid "Unset container or server configuration keys"
 msgstr ""
 
-#: lxc/help.go:45
-msgid "Usage: lxc <command> [options]"
+#: lxc/network.go:1050 lxc/network.go:1051
+msgid "Unset network configuration keys"
 msgstr ""
 
-#: lxc/alias.go:22
-msgid ""
-"Usage: lxc alias <subcommand> [options]\n"
-"\n"
-"Manage command aliases.\n"
-"\n"
-"lxc alias add <alias> <target>\n"
-"    Add a new alias <alias> pointing to <target>.\n"
-"\n"
-"lxc alias remove <alias>\n"
-"    Remove the alias <alias>.\n"
-"\n"
-"lxc alias list\n"
-"    List all the aliases.\n"
-"\n"
-"lxc alias rename <old alias> <new alias>\n"
-"    Rename remote <old alias> to <new alias>."
+#: lxc/profile.go:865 lxc/profile.go:866
+msgid "Unset profile configuration keys"
 msgstr ""
 
-#: lxc/cluster.go:23
-msgid ""
-"Usage: lxc cluster <subcommand> [options]\n"
-"\n"
-"Manage cluster nodes.\n"
-"\n"
-"lxc cluster list [<remote>:]\n"
-"    List all nodes in the cluster.\n"
-"\n"
-"lxc cluster show [<remote>:]<node>\n"
-"    Show details of a node.\n"
-"\n"
-"lxc cluster rename [<remote>:]<node> <new-name>\n"
-"    Rename a cluster node.\n"
-"\n"
-"lxc cluster delete [<remote>:]<node> [--force]\n"
-"    Delete a node from the cluster."
+#: lxc/storage.go:728 lxc/storage.go:729
+msgid "Unset storage pool configuration keys"
 msgstr ""
 
-#: lxc/config.go:85
-msgid ""
-"Usage: lxc config <subcommand> [options]\n"
-"\n"
-"Change container or server configuration options.\n"
-"\n"
-"*Container configuration*\n"
-"\n"
-"lxc config get [<remote>:][container] <key>\n"
-"    Get container or server configuration key.\n"
-"\n"
-"lxc config set [<remote>:][container] <key> <value>\n"
-"    Set container or server configuration key.\n"
-"\n"
-"lxc config unset [<remote>:][container] <key>\n"
-"    Unset container or server configuration key.\n"
-"\n"
-"lxc config show [<remote>:][container] [--expanded]\n"
-"    Show container or server configuration.\n"
-"\n"
-"lxc config edit [<remote>:][container]\n"
-"    Edit configuration, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"*Container metadata*\n"
-"\n"
-"lxc config metadata show [<remote>:][container]\n"
-"    Show the container metadata.yaml content.\n"
-"\n"
-"lxc config metadata edit [<remote>:][container]\n"
-"    Edit the container metadata.yaml, either by launching external editor or "
-"reading STDIN.\n"
-"\n"
-"*Container templates*\n"
-"\n"
-"lxc config template list [<remote>:][container]\n"
-"    List the names of template files for a container.\n"
-"\n"
-"lxc config template show [<remote>:][container] [template]\n"
-"    Show the content of a template file for a container.\n"
-"\n"
-"lxc config template create [<remote>:][container] [template]\n"
-"    Add an empty template file for a container.\n"
-"\n"
-"lxc config template edit [<remote>:][container] [template]\n"
-"    Edit the content of a template file for a container, either by launching "
-"external editor or reading STDIN.\n"
-"\n"
-"lxc config template delete [<remote>:][container] [template]\n"
-"    Delete a template file for a container.\n"
-"\n"
-"\n"
-"*Device management*\n"
-"\n"
-"lxc config device add [<remote>:]<container> <device> <type> [key=value...]\n"
-"    Add a device to a container.\n"
-"\n"
-"lxc config device get [<remote>:]<container> <device> <key>\n"
-"    Get a device property.\n"
-"\n"
-"lxc config device set [<remote>:]<container> <device> <key> <value>\n"
-"    Set a device property.\n"
-"\n"
-"lxc config device unset [<remote>:]<container> <device> <key>\n"
-"    Unset a device property.\n"
-"\n"
-"lxc config device override [<remote>:]<container> <device> [key=value...]\n"
-"    Copy a profile inherited device into local container config.\n"
-"\n"
-"lxc config device list [<remote>:]<container>\n"
-"    List devices for container.\n"
-"\n"
-"lxc config device show [<remote>:]<container>\n"
-"    Show full device details for container.\n"
-"\n"
-"lxc config device remove [<remote>:]<container> <name>...\n"
-"    Remove device from container.\n"
-"\n"
-"*Client trust store management*\n"
-"\n"
-"lxc config trust list [<remote>:]\n"
-"    List all trusted certs.\n"
-"\n"
-"lxc config trust add [<remote>:] <certfile.crt>\n"
-"    Add certfile.crt to trusted hosts.\n"
-"\n"
-"lxc config trust remove [<remote>:] [hostname|fingerprint]\n"
-"    Remove the cert from trusted hosts.\n"
-"\n"
-"*Examples*\n"
-"\n"
-"cat config.yaml | lxc config edit <container>\n"
-"    Update the container configuration from config.yaml.\n"
-"\n"
-"lxc config device add [<remote>:]container1 <device-name> disk source=/share/"
-"c1 path=opt\n"
-"    Will mount the host's /share/c1 onto /opt in the container.\n"
-"\n"
-"lxc config set [<remote>:]<container> limits.cpu 2\n"
-"    Will set a CPU limit of \"2\" for the container.\n"
-"\n"
-"lxc config set core.https_address [::]:8443\n"
-"    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
-"\n"
-"lxc config set core.trust_password blah\n"
-"    Will set the server's trust password to blah."
+#: lxc/storage_volume.go:1240 lxc/storage_volume.go:1241
+msgid "Unset storage volume configuration keys"
 msgstr ""
 
-#: lxc/console.go:31
-msgid ""
-"Usage: lxc console [<remote>:]<container> [-l]\n"
-"\n"
-"Interact with the container's console device and log."
+#: lxc/image.go:835
+#, c-format
+msgid "Uploaded: %s"
 msgstr ""
 
-#: lxc/copy.go:30
-msgid ""
-"Usage: lxc copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>] "
-"[--ephemeral|e] [--profile|-p <profile>...] [--config|-c <key=value>...] [--"
-"container-only] [--target <node>]\n"
-"\n"
-"Copy containers within or in between LXD instances."
+#: lxc/delete.go:47
+msgid "User aborted delete operation"
 msgstr ""
 
-#: lxc/delete.go:27
+#: lxc/utils/cancel.go:40
 msgid ""
-"Usage: lxc delete [<remote>:]<container>[/<snapshot>] "
-"[[<remote>:]<container>[/<snapshot>]...]\n"
-"\n"
-"Delete containers and snapshots."
+"User signaled us three times, exiting. The remote operation will keep "
+"running."
 msgstr ""
 
-#: lxc/exec.go:53
-msgid ""
-"Usage: lxc exec [<remote>:]<container> [-t] [-T] [-n] [--mode=auto|"
-"interactive|non-interactive] [--env KEY=VALUE...] [--] <command line>\n"
-"\n"
-"Execute commands in containers.\n"
-"\n"
-"The command is executed directly using exec, so there is no shell and shell "
-"patterns (variables, file redirects, ...)\n"
-"won't be understood. If you need a shell environment you need to execute the "
-"shell executable, passing the shell commands\n"
-"as arguments, for example:\n"
-"\n"
-"    lxc exec <container> -- sh -c \"cd /tmp && pwd\"\n"
-"\n"
-"Mode defaults to non-interactive, interactive mode is selected if both stdin "
-"AND stdout are terminals (stderr is ignored)."
+#: lxc/query.go:35
+msgid "Wait for the operation to complete"
 msgstr ""
 
-#: lxc/file.go:39
+#: lxc/restore.go:36
 msgid ""
-"Usage: lxc file <subcommand> [options]\n"
-"\n"
-"Manage files in containers.\n"
-"\n"
-"lxc file pull [-r|--recursive] [<remote>:]<container>/<path> "
-"[[<remote>:]<container>/<path>...] <target path>\n"
-"    Pull files from containers.\n"
-"\n"
-"lxc file push [-r|--recursive] [-p|--create-dirs] [--uid=UID] [--gid=GID] [--"
-"mode=MODE] <source path> [<source path>...] [<remote>:]<container>/<path>\n"
-"    Push files into containers.\n"
-"\n"
-"lxc file delete [<remote>:]<container>/<path> [[<remote>:]<container>/"
-"<path>...]\n"
-"    Delete files in containers.\n"
-"\n"
-"lxc file edit [<remote>:]<container>/<path>\n"
-"    Edit files in containers using the default text editor.\n"
-"\n"
-"*Examples*\n"
-"lxc file push /etc/hosts foo/etc/hosts\n"
-"   To push /etc/hosts into the container \"foo\".\n"
-"\n"
-"lxc file pull foo/etc/hosts .\n"
-"   To pull /etc/hosts from the container and write it to the current "
-"directory."
+"Whether or not to restore the container's running state from snapshot (if "
+"available)"
 msgstr ""
 
-#: lxc/finger.go:15
-msgid ""
-"Usage: lxc finger [<remote>:]\n"
-"\n"
-"Check if the LXD server is alive."
+#: lxc/snapshot.go:31
+msgid "Whether or not to snapshot the container's running state"
 msgstr ""
 
-#: lxc/help.go:22
-msgid ""
-"Usage: lxc help [--all]\n"
-"\n"
-"Help page for the LXD client."
+#: lxc/network.go:765 lxc/operation.go:140 lxc/remote.go:436 lxc/remote.go:441
+msgid "YES"
 msgstr ""
 
-#: lxc/image.go:73
-msgid ""
-"Usage: lxc image <subcommand> [options]\n"
-"\n"
-"Manipulate container images.\n"
-"\n"
-"In LXD containers are created from images. Those images were themselves\n"
-"either generated from an existing container or downloaded from an image\n"
-"server.\n"
-"\n"
-"When using remote images, LXD will automatically cache images for you\n"
-"and remove them upon expiration.\n"
-"\n"
-"The image unique identifier is the hash (sha-256) of its representation\n"
-"as a compressed tarball (or for split images, the concatenation of the\n"
-"metadata and rootfs tarballs).\n"
-"\n"
-"Images can be referenced by their full hash, shortest unique partial\n"
-"hash or alias name (if one is set).\n"
-"\n"
-"\n"
-"lxc image import <tarball>|<dir> [<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) or an image directory into the LXD "
-"image store.\n"
-"    Directory import is only available on Linux and must be performed as "
-"root.\n"
-"\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"
-"    Delete one or more images from the LXD image store.\n"
-"\n"
-"lxc image refresh [<remote>:]<image> [[<remote>:]<image>...]\n"
-"    Refresh one or more images from its parent remote.\n"
-"\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"
-"    The target may be an existing directory, file name, or \"-\" to specify\n"
-"    stdout.  The target MUST be a directory when exporting a split image.\n"
-"    If the target is a directory, the image's name (each part's name for\n"
-"    split images) as found in the database will be used for the exported\n"
-"    image.  If the target is a file (not a directory and not stdout), then\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"
-"    Print everything LXD knows about a given image.\n"
-"\n"
-"lxc image list [<remote>:] [filter] [--format csv|json|table|yaml] [-c "
-"<columns>]\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"
-"    The -c option takes a (optionally comma-separated) list of arguments "
-"that\n"
-"    control which image attributes to output when displaying in table or "
-"csv\n"
-"    format.\n"
-"\n"
-"    Default column layout is: lfpdasu\n"
-"\n"
-"    Column shorthand chars:\n"
-"\n"
-"        l - Shortest image alias (and optionally number of other aliases)\n"
-"\n"
-"        L - Newline-separated list of all image aliases\n"
-"\n"
-"        f - Fingerprint\n"
-"\n"
-"        p - Whether image is public\n"
-"\n"
-"        d - Description\n"
-"\n"
-"        a - Architecture\n"
-"\n"
-"        s - Size\n"
-"\n"
-"        u - Upload date\n"
-"\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"
-"    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"
-"    Create a new alias for an existing image.\n"
-"\n"
-"lxc image alias rename [<remote>:]<alias> <new-name>\n"
-"    Rename an alias.\n"
-"\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."
+#: lxc/exec.go:122
+msgid "You can't pass -t and -T at the same time"
 msgstr ""
 
-#: lxc/info.go:27
+#: lxc/exec.go:126
+msgid "You can't pass -t or -T at the same time as --mode"
+msgstr ""
+
+#: lxc/copy.go:78
+msgid "You must specify a destination container name when using --target"
+msgstr ""
+
+#: lxc/copy.go:73 lxc/move.go:188
+msgid "You must specify a source container name"
+msgstr ""
+
+#: lxc/copy.go:68 lxc/move.go:91 lxc/move.go:183
+msgid "You must use the same source and destination remote when using --target"
+msgstr ""
+
+#: lxc/alias.go:53
+msgid "add <alias> <target>"
+msgstr ""
+
+#: lxc/config_trust.go:57
+msgid "add [<remote>:] <cert>"
+msgstr ""
+
+#: lxc/profile.go:100
+msgid "add [<remote>:]<container> <profile>"
+msgstr ""
+
+#: lxc/config_device.go:74
+msgid "add [<remote>:]<container|profile> <device> <type> [key=value...]"
+msgstr ""
+
+#: lxc/remote.go:82
+msgid "add [<remote>] <IP|FQDN|URL>"
+msgstr ""
+
+#: lxc/alias.go:21 lxc/image_alias.go:24
+msgid "alias"
+msgstr ""
+
+#: lxc/profile.go:160
+msgid "assign [<remote>:]<container> <profiles>"
+msgstr ""
+
+#: lxc/network.go:102
+msgid "attach [<remote>:]<network> <container> [device name] [interface name]"
+msgstr ""
+
+#: lxc/storage_volume.go:120
+msgid "attach [<remote>:]<pool> <volume> <container> [device name] <path>"
+msgstr ""
+
+#: lxc/storage_volume.go:199
 msgid ""
-"Usage: lxc info [<remote>:][<container>] [--show-log] [--resources]\n"
-"\n"
-"Show container or server information.\n"
-"\n"
-"lxc info [<remote>:]<container> [--show-log]\n"
-"    For container information.\n"
-"\n"
-"lxc info [<remote>:] [--resources]\n"
-"    For LXD server information."
+"attach-profile [<remote:>]<pool> <volume> <profile> [device name] <path>"
 msgstr ""
 
-#: lxc/init.go:79
+#: lxc/network.go:175
 msgid ""
-"Usage: lxc init [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
-"profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
-"<node>]\n"
-"\n"
-"Create containers from images.\n"
-"\n"
-"Not specifying -p will result in the default profile.\n"
-"Specifying \"-p\" with no argument will result in no profile.\n"
-"\n"
-"Examples:\n"
-"    lxc init ubuntu:16.04 u1"
+"attach-profile [<remote>:]<network> <profile> [device name] [interface name]"
+msgstr ""
+
+#: lxc/cluster.go:24
+msgid "cluster"
+msgstr ""
+
+#: lxc/config.go:27
+msgid "config"
+msgstr ""
+
+#: lxc/console.go:30
+msgid "console [<remote>:]<container>"
+msgstr ""
+
+#: lxc/storage_volume.go:280
+msgid "copy <pool>/<volume> <pool>/<volume>"
+msgstr ""
+
+#: lxc/image.go:128
+msgid "copy [<remote>:]<image> <remote>:"
+msgstr ""
+
+#: lxc/profile.go:238
+msgid "copy [<remote>:]<profile> [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/copy.go:32
+msgid "copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>]"
+msgstr ""
+
+#: lxc/image_alias.go:57
+msgid "create [<remote>:]<alias> <fingerprint>"
+msgstr ""
+
+#: lxc/config_template.go:65
+msgid "create [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/network.go:248
+msgid "create [<remote>:]<network> [key=value...]"
+msgstr ""
+
+#: lxc/storage.go:87
+msgid "create [<remote>:]<pool> <driver> [key=value]..."
+msgstr ""
+
+#: lxc/storage_volume.go:424
+msgid "create [<remote>:]<pool> <volume> [key=value]..."
+msgstr ""
+
+#: lxc/profile.go:295
+msgid "create [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/remote.go:453
+msgid "default"
+msgstr ""
+
+#: lxc/image_alias.go:103
+msgid "delete [<remote>:]<alias>"
+msgstr ""
+
+#: lxc/config_template.go:107
+msgid "delete [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/file.go:70
+msgid "delete [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...]"
+msgstr ""
+
+#: lxc/delete.go:27
+msgid ""
+"delete [<remote>:]<container>[/<snapshot>] [[<remote>:]<container>[/"
+"<snapshot>]...]"
+msgstr ""
+
+#: lxc/image.go:258
+msgid "delete [<remote>:]<image> [[<remote>:]<image>...]"
+msgstr ""
+
+#: lxc/network.go:317
+msgid "delete [<remote>:]<network>"
+msgstr ""
+
+#: lxc/operation.go:51
+msgid "delete [<remote>:]<operation>"
+msgstr ""
+
+#: lxc/storage.go:158
+msgid "delete [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:498
+msgid "delete [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:345
+msgid "delete [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/storage.go:431
+msgid "description"
+msgstr ""
+
+#: lxc/network.go:365
+msgid "detach [<remote>:]<network> <container> [device name]"
+msgstr ""
+
+#: lxc/storage_volume.go:559
+msgid "detach [<remote>:]<pool> <volume> <container> [device name]"
+msgstr ""
+
+#: lxc/storage_volume.go:641
+msgid "detach-profile [<remote:>]<pool> <volume> <profile> [device name]"
+msgstr ""
+
+#: lxc/network.go:450
+msgid "detach-profile [<remote>:]<network> <container> [device name]"
+msgstr ""
+
+#: lxc/config_device.go:22
+msgid "device"
+msgstr ""
+
+#: lxc/init.go:223
+msgid "didn't get any affected image, container or snapshot from server"
+msgstr ""
+
+#: lxc/image.go:819
+msgid "disabled"
+msgstr ""
+
+#: lxc/storage.go:430
+msgid "driver"
+msgstr ""
+
+#: lxc/config_template.go:150
+msgid "edit [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/file.go:120
+msgid "edit [<remote>:]<container>/<path>"
+msgstr ""
+
+#: lxc/image.go:310
+msgid "edit [<remote>:]<image>"
+msgstr ""
+
+#: lxc/network.go:535
+msgid "edit [<remote>:]<network>"
+msgstr ""
+
+#: lxc/storage.go:206
+msgid "edit [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:722
+msgid "edit [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:394
+msgid "edit [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/config.go:86 lxc/config_metadata.go:52
+msgid "edit [<remote>:][container]"
+msgstr ""
+
+#: lxc/image.go:821
+msgid "enabled"
+msgstr ""
+
+#: lxc/action.go:234
+#, c-format
+msgid "error: %v"
+msgstr ""
+
+#: lxc/exec.go:37
+msgid "exec [<remote>:]<container> [flags] [--] <command line>"
+msgstr ""
+
+#: lxc/image.go:433
+msgid "export [<remote>:]<image> [target]"
+msgstr ""
+
+#: lxc/file.go:38
+msgid "file"
+msgstr ""
+
+#: lxc/config_device.go:177
+msgid "get [<remote>:]<container|profile> <device> <key>"
+msgstr ""
+
+#: lxc/network.go:658
+msgid "get [<remote>:]<network> <key>"
+msgstr ""
+
+#: lxc/storage.go:326
+msgid "get [<remote>:]<pool> <key>"
+msgstr ""
+
+#: lxc/storage_volume.go:851
+msgid "get [<remote>:]<pool> <volume> <key>"
+msgstr ""
+
+#: lxc/profile.go:518
+msgid "get [<remote>:]<profile> <key>"
+msgstr ""
+
+#: lxc/config.go:287
+msgid "get [<remote>:][container] <key>"
+msgstr ""
+
+#: lxc/remote.go:378
+msgid "get-default"
+msgstr ""
+
+#: lxc/image.go:40
+msgid "image"
+msgstr ""
+
+#: lxc/image.go:569
+msgid ""
+"import <tarball>|<directory>|<URL> [<rootfs tarball>] [<remote>:] "
+"[key=value...]"
+msgstr ""
+
+#: lxc/storage.go:428
+msgid "info"
+msgstr ""
+
+#: lxc/image.go:774
+msgid "info [<remote>:]<image>"
+msgstr ""
+
+#: lxc/storage.go:381
+msgid "info [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/info.go:27
+msgid "info [<remote>:][<container>]"
+msgstr ""
+
+#: lxc/init.go:33
+msgid "init [<remote>:]<image> [<remote>:][<name>]"
 msgstr ""
 
 #: lxc/launch.go:20
+msgid "launch [<remote>:]<image> [<remote>:][<name>]"
+msgstr ""
+
+#: lxc/alias.go:96 lxc/remote.go:411
+msgid "list"
+msgstr ""
+
+#: lxc/cluster.go:56 lxc/config_trust.go:112 lxc/network.go:716
+#: lxc/operation.go:95 lxc/profile.go:565 lxc/storage.go:488
+msgid "list [<remote>:]"
+msgstr ""
+
+#: lxc/image.go:887
+msgid "list [<remote>:] [filter]"
+msgstr ""
+
+#: lxc/image_alias.go:146
+msgid "list [<remote>:] [filters...]"
+msgstr ""
+
+#: lxc/list.go:45
+msgid "list [<remote>:] [filters]"
+msgstr ""
+
+#: lxc/config_template.go:234
+msgid "list [<remote>:]<container>"
+msgstr ""
+
+#: lxc/config_device.go:249
+msgid "list [<remote>:]<container|profile>"
+msgstr ""
+
+#: lxc/storage_volume.go:915
+msgid "list [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/network.go:806
+msgid "list-leases [<remote>:]<network>"
+msgstr ""
+
+#: lxc/alias.go:57
 msgid ""
-"Usage: lxc launch [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
-"profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
-"<node>]\n"
-"\n"
-"Create and start containers from images.\n"
-"\n"
-"Not specifying -p will result in the default profile.\n"
-"Specifying \"-p\" with no argument will result in no profile.\n"
-"\n"
-"Examples:\n"
-"    lxc launch ubuntu:16.04 u1"
+"lxc alias add list list -c ns46S\n"
+"    Overwrite the \"list\" command to pass -c ns46S."
 msgstr ""
 
-#: lxc/list.go:44
+#: lxc/alias.go:200
 msgid ""
-"Usage: lxc list [<remote>:] [filters] [--format csv|json|table|yaml] [-c "
-"<columns>] [--fast]\n"
-"\n"
-"List the existing containers.\n"
-"\n"
-"Default column layout: ns46tS\n"
-"Fast column layout: nsacPt\n"
-"\n"
-"*Filters*\n"
-"A single keyword like \"web\" which will list any container with a name "
-"starting by \"web\".\n"
-"\n"
-"A regular expression on the container name. (e.g. .*web.*01$).\n"
-"\n"
-"A key/value pair referring to a configuration item. For those, the namespace "
-"can be abbreviated to the smallest unambiguous identifier.\n"
-"\t- \"user.blah=abc\" will list all containers with the \"blah\" user "
-"property set to \"abc\".\n"
-"\n"
-"\t- \"u.blah=abc\" will do the same\n"
-"\n"
-"\t- \"security.privileged=true\" will list all privileged containers\n"
-"\n"
-"\t- \"s.privileged=true\" will do the same\n"
-"\n"
-"A regular expression matching a configuration item or its value. (e.g. "
-"volatile.eth0.hwaddr=00:16:3e:.*).\n"
-"\n"
-"*Columns*\n"
-"The -c option takes a comma separated list of arguments that control\n"
-"which container attributes to output when displaying in table or csv\n"
-"format.\n"
-"\n"
-"Column arguments are either pre-defined shorthand chars (see below),\n"
-"or (extended) config keys.\n"
-"\n"
-"Commas between consecutive shorthand chars are optional.\n"
-"\n"
-"Pre-defined column shorthand chars:\n"
-"\n"
-"\t4 - IPv4 address\n"
-"\n"
-"\t6 - IPv6 address\n"
-"\n"
-"\ta - Architecture\n"
-"\n"
-"\tb - Storage pool\n"
-"\n"
-"\tc - Creation date\n"
-"\n"
-"\td - Description\n"
-"\n"
-"\tl - Last used date\n"
-"\n"
-"\tn - Name\n"
-"\n"
-"\tN - Number of Processes\n"
-"\n"
-"\tp - PID of the container's init process\n"
-"\n"
-"\tP - Profiles\n"
-"\n"
-"\ts - State\n"
-"\n"
-"\tS - Number of snapshots\n"
-"\n"
-"\tt - Type (persistent or ephemeral)\n"
-"\n"
-"\tL - Location of the container (e.g. its node)\n"
-"\n"
-"Custom columns are defined with \"key[:name][:maxWidth]\":\n"
-"\n"
-"\tKEY: The (extended) config key to display\n"
-"\n"
-"\tNAME: Name to display in the column header.\n"
-"\tDefaults to the key if not specified or empty.\n"
-"\n"
-"\tMAXWIDTH: Max width of the column (longer results are truncated).\n"
-"\tDefaults to -1 (unlimited). Use 0 to limit to the column header size.\n"
-"\n"
-"*Examples*\n"
-"lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:"
-"MAC\n"
-"\tShows a list of containers using the \"NAME\", \"BASE IMAGE\", \"STATE\", "
-"\"IPV4\",\n"
-"\t\"IPV6\" and \"MAC\" columns.\n"
+"lxc alias remove my-list\n"
+"    Remove the \"my-list\" alias."
+msgstr ""
+
+#: lxc/alias.go:149
+msgid ""
+"lxc alias rename list my-list\n"
+"    Rename existing alias \"list\" to \"my-list\"."
+msgstr ""
+
+#: lxc/config_device.go:78
+msgid ""
+"lxc config device add [<remote>:]container1 <device-name> disk source=/share/"
+"c1 path=opt\n"
+"    Will mount the host's /share/c1 onto /opt in the container."
+msgstr ""
+
+#: lxc/config.go:90
+msgid ""
+"lxc config edit <container> < container.yaml\n"
+"    Update the container configuration from config.yaml."
+msgstr ""
+
+#: lxc/config.go:357
+msgid ""
+"lxc config set [<remote>:]<container> limits.cpu 2\n"
+"    Will set a CPU limit of \"2\" for the container.\n"
 "\n"
-"\t\"BASE IMAGE\" and \"MAC\" are custom columns generated from container "
-"configuration keys.\n"
+"lxc config set core.https_address [::]:8443\n"
+"    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
 "\n"
-"lxc list -c ns,user.comment:comment\n"
-"\tList images with their running state and user comment. "
+"lxc config set core.trust_password blah\n"
+"    Will set the server's trust password to blah."
 msgstr ""
 
-#: lxc/manpage.go:20
+#: lxc/file.go:187
 msgid ""
-"Usage: lxc manpage <directory>\n"
-"\n"
-"Generate all the LXD manpages."
+"lxc file pull foo/etc/hosts .\n"
+"   To pull /etc/hosts from the container and write it to the current "
+"directory."
 msgstr ""
 
-#: lxc/monitor.go:49
+#: lxc/file.go:326
 msgid ""
-"Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
-"\n"
-"Monitor a local or remote LXD server.\n"
+"lxc file push /etc/hosts foo/etc/hosts\n"
+"   To push /etc/hosts into the container \"foo\"."
+msgstr ""
+
+#: lxc/image.go:314
+msgid ""
+"lxc image edit <image>\n"
+"    Launch a text editor to edit the properties\n"
 "\n"
-"By default the monitor will listen to all message types.\n"
+"lxc image edit <image> < image.yaml\n"
+"    Load the image properties from a YAML file"
+msgstr ""
+
+#: lxc/info.go:31
+msgid ""
+"lxc info [<remote>:]<container> [--show-log]\n"
+"    For container information.\n"
 "\n"
-"Message types to listen for can be specified with --type.\n"
+"lxc info [<remote>:] [--resources]\n"
+"    For LXD server information."
+msgstr ""
+
+#: lxc/init.go:37
+msgid "lxc init ubuntu:16.04 u1"
+msgstr ""
+
+#: lxc/launch.go:24
+msgid "lxc launch ubuntu:16.04 u1"
+msgstr ""
+
+#: lxc/list.go:103
+msgid ""
+"lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:"
+"MAC\n"
+"  Show containers using the \"NAME\", \"BASE IMAGE\", \"STATE\", \"IPV4\", "
+"\"IPV6\" and \"MAC\" columns.\n"
+"  \"BASE IMAGE\" and \"MAC\" are custom columns generated from container "
+"configuration keys.\n"
 "\n"
-"*Examples*\n"
+"lxc list -c ns,user.comment:comment\n"
+"  List images with their running state and user comment."
+msgstr ""
+
+#: lxc/monitor.go:35
+msgid ""
 "lxc monitor --type=logging\n"
 "    Only show log messages.\n"
 "\n"
 "lxc monitor --pretty --type=logging --loglevel=info\n"
 "    Show a pretty log of messages with info level or higher.\n"
+"\n"
+"lxc monitor --type=lifecycle\n"
+"    Only show lifecycle events."
 msgstr ""
 
-#: lxc/move.go:26
+#: lxc/move.go:33
 msgid ""
-"Usage: lxc move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
-"<snapshot>]] [--container-only] [--target <node>]\n"
-"\n"
-"Move containers within or in between LXD instances.\n"
-"\n"
 "lxc move [<remote>:]<source container> [<remote>:][<destination container>] "
 "[--container-only]\n"
 "    Move a container between two hosts, renaming it if destination name "
@@ -1946,160 +2837,14 @@ msgid ""
 "    Rename a snapshot."
 msgstr ""
 
-#: lxc/network.go:52
-msgid ""
-"Usage: lxc network <subcommand> [options]\n"
-"\n"
-"Manage and attach containers to networks.\n"
-"\n"
-"lxc network list [<remote>:]\n"
-"    List available networks.\n"
-"\n"
-"lxc network list-leases [<remote>:]<network>\n"
-"    List the DHCP leases for the network\n"
-"\n"
-"lxc network show [<remote>:]<network> [--target <node>]\n"
-"    Show details of a network.\n"
-"\n"
-"lxc network create [<remote>:]<network> [key=value...] [--target <node>]\n"
-"    Create a network.\n"
-"\n"
-"lxc network get [<remote>:]<network> <key> [--target <node>]\n"
-"    Get network configuration.\n"
-"\n"
-"lxc network set [<remote>:]<network> <key> <value>\n"
-"    Set network configuration.\n"
-"\n"
-"lxc network unset [<remote>:]<network> <key>\n"
-"    Unset network configuration.\n"
-"\n"
-"lxc network delete [<remote>:]<network>\n"
-"    Delete a network.\n"
-"\n"
-"lxc network edit [<remote>:]<network>\n"
-"    Edit network, either by launching external editor or reading STDIN.\n"
-"\n"
-"lxc network rename [<remote>:]<network> <new-name>\n"
-"    Rename a network.\n"
-"\n"
-"lxc network attach [<remote>:]<network> <container> [device name] [interface "
-"name]\n"
-"    Attach a network interface connecting the network to a specified "
-"container.\n"
-"\n"
-"lxc network attach-profile [<remote>:]<network> <profile> [device name] "
-"[interface name]\n"
-"    Attach a network interface connecting the network to a specified "
-"profile.\n"
-"\n"
-"lxc network detach [<remote>:]<network> <container> [device name]\n"
-"    Remove a network interface connecting the network to a specified "
-"container.\n"
-"\n"
-"lxc network detach-profile [<remote>:]<network> <container> [device name]\n"
-"    Remove a network interface connecting the network to a specified "
-"profile.\n"
-"\n"
-"*Examples*\n"
-"cat network.yaml | lxc network edit <network>\n"
-"    Update a network using the content of network.yaml"
-msgstr ""
-
-#: lxc/operation.go:25
+#: lxc/operation.go:176
 msgid ""
-"Usage: lxc operation <subcommand> [options]\n"
-"\n"
-"List, show and delete background operations.\n"
-"\n"
-"lxc operation list [<remote>:]\n"
-"    List background operations.\n"
-"\n"
-"lxc operation show [<remote>:]<operation>\n"
-"    Show details on a background operation.\n"
-"\n"
-"lxc operation delete [<remote>:]<operation>\n"
-"    Delete a background operation (will attempt to cancel).\n"
-"\n"
-"*Examples*\n"
 "lxc operation show 344a79e4-d88a-45bf-9c39-c72c26f6ab8a\n"
 "    Show details on that operation UUID"
 msgstr ""
 
-#: lxc/profile.go:51
+#: lxc/profile.go:165
 msgid ""
-"Usage: lxc profile <subcommand> [options]\n"
-"\n"
-"Manage container configuration profiles.\n"
-"\n"
-"*Profile configuration*\n"
-"lxc profile list [<remote>:]\n"
-"    List available profiles.\n"
-"\n"
-"lxc profile show [<remote>:]<profile>\n"
-"    Show details of a profile.\n"
-"\n"
-"lxc profile create [<remote>:]<profile>\n"
-"    Create a profile.\n"
-"\n"
-"lxc profile copy [<remote>:]<profile> [<remote>:]<profile>\n"
-"    Copy the profile.\n"
-"\n"
-"lxc profile get [<remote>:]<profile> <key>\n"
-"    Get profile configuration.\n"
-"\n"
-"lxc profile set [<remote>:]<profile> <key> <value>\n"
-"    Set profile configuration.\n"
-"\n"
-"lxc profile unset [<remote>:]<profile> <key>\n"
-"    Unset profile configuration.\n"
-"\n"
-"lxc profile delete [<remote>:]<profile>\n"
-"    Delete a profile.\n"
-"\n"
-"lxc profile edit [<remote>:]<profile>\n"
-"    Edit profile, either by launching external editor or reading STDIN.\n"
-"\n"
-"lxc profile rename [<remote>:]<profile> <new-name>\n"
-"    Rename a profile.\n"
-"\n"
-"*Profile assignment*\n"
-"lxc profile assign [<remote>:]<container> <profiles>\n"
-"    Replace the current set of profiles for the container by the one "
-"provided.\n"
-"\n"
-"lxc profile add [<remote>:]<container> <profile>\n"
-"    Add a profile to a container\n"
-"\n"
-"lxc profile remove [<remote>:]<container> <profile>\n"
-"    Remove the profile from a container\n"
-"\n"
-"*Device management*\n"
-"lxc profile device list [<remote>:]<profile>\n"
-"    List devices in the given profile.\n"
-"\n"
-"lxc profile device show [<remote>:]<profile>\n"
-"    Show full device details in the given profile.\n"
-"\n"
-"lxc profile device remove [<remote>:]<profile> <name>\n"
-"    Remove a device from a profile.\n"
-"\n"
-"lxc profile device get [<remote>:]<profile> <name> <key>\n"
-"    Get a device property.\n"
-"\n"
-"lxc profile device set [<remote>:]<profile> <name> <key> <value>\n"
-"    Set a device property.\n"
-"\n"
-"lxc profile device unset [<remote>:]<profile> <name> <key>\n"
-"    Unset a device property.\n"
-"\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.\n"
-"\n"
-"*Examples*\n"
-"cat profile.yaml | lxc profile edit <profile>\n"
-"    Update a profile using the content of profile.yaml\n"
-"\n"
 "lxc profile assign foo default,bar\n"
 "    Set the profiles for \"foo\" to \"default\" and \"bar\".\n"
 "\n"
@@ -2110,72 +2855,26 @@ msgid ""
 "    Remove all profile from \"foo\""
 msgstr ""
 
-#: lxc/publish.go:28
+#: lxc/profile.go:398
 msgid ""
-"Usage: lxc publish [<remote>:]<container>[/<snapshot>] [<remote>:] [--"
-"alias=ALIAS...] [prop-key=prop-value...]\n"
-"\n"
-"Publish containers as images."
+"lxc profile edit <profile> < profile.yaml\n"
+"    Update a profile using the content of profile.yaml"
 msgstr ""
 
-#: lxc/query.go:25
+#: lxc/query.go:29
 msgid ""
-"Usage: lxc query [-X <action>] [-d <data>] [--wait] [--raw] [<remote>:]<API "
-"path>\n"
-"\n"
-"Send a raw query to LXD.\n"
-"\n"
-"*Examples*\n"
 "lxc query -X DELETE --wait /1.0/containers/c1\n"
 "    Delete local container \"c1\"."
 msgstr ""
 
-#: lxc/remote.go:40
-msgid ""
-"Usage: lxc remote <subcommand> [options]\n"
-"\n"
-"Manage the list of remote LXD servers.\n"
-"\n"
-"lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--"
-"password=PASSWORD] [--public] [--protocol=PROTOCOL] [--auth-type=AUTH_TYPE]\n"
-"    Add the remote <remote> at <url>.\n"
-"\n"
-"lxc remote remove <remote>\n"
-"    Remove the remote <remote>.\n"
-"\n"
-"lxc remote list\n"
-"    List all remotes.\n"
-"\n"
-"lxc remote rename <old name> <new name>\n"
-"    Rename remote <old name> to <new name>.\n"
-"\n"
-"lxc remote set-url <remote> <url>\n"
-"    Update <remote>'s url to <url>.\n"
-"\n"
-"lxc remote set-default <remote>\n"
-"    Set the default remote.\n"
-"\n"
-"lxc remote get-default\n"
-"    Print the default remote."
-msgstr ""
-
-#: lxc/rename.go:18
+#: lxc/snapshot.go:26
 msgid ""
-"Usage: lxc rename [<remote>:]<container>[/<snapshot>] [<container>[/"
-"<snapshot>]]\n"
-"\n"
-"Rename a container or snapshot."
+"lxc snapshot u1 snap0\n"
+"    Create a snapshot of \"u1\" called \"snap0\"."
 msgstr ""
 
-#: lxc/restore.go:22
+#: lxc/restore.go:28
 msgid ""
-"Usage: lxc restore [<remote>:]<container> <snapshot> [--stateful]\n"
-"\n"
-"Restore containers from snapshots.\n"
-"\n"
-"If --stateful is passed, then the running state will be restored too.\n"
-"\n"
-"*Examples*\n"
 "lxc snapshot u1 snap0\n"
 "    Create the snapshot.\n"
 "\n"
@@ -2183,121 +2882,20 @@ msgid ""
 "    Restore the snapshot."
 msgstr ""
 
-#: lxc/snapshot.go:19
+#: lxc/storage.go:210
 msgid ""
-"Usage: lxc snapshot [<remote>:]<container> <snapshot name> [--stateful]\n"
-"\n"
-"Create container snapshots.\n"
-"\n"
-"When --stateful is used, LXD attempts to checkpoint the container's\n"
-"running state, including process memory state, TCP connections, ...\n"
-"\n"
-"*Examples*\n"
-"lxc snapshot u1 snap0\n"
-"    Create a snapshot of \"u1\" called \"snap0\"."
+"lxc storage edit [<remote>:]<pool> < pool.yaml\n"
+"    Update a storage pool using the content of pool.yaml."
 msgstr ""
 
-#: lxc/storage.go:67
+#: lxc/storage_volume.go:726
+msgid ""
+"lxc storage volume edit [<remote>:]<pool> <volume> < volume.yaml\n"
+"    Update a storage volume using the content of pool.yaml."
+msgstr ""
+
+#: lxc/storage_volume.go:1168
 msgid ""
-"Usage: lxc storage <subcommand> [options]\n"
-"\n"
-"Manage storage pools and volumes.\n"
-"\n"
-"*Storage pools*\n"
-"lxc storage list [<remote>:]\n"
-"    List available storage pools.\n"
-"\n"
-"lxc storage show [<remote>:]<pool> [--resources] [--target <node>]\n"
-"    Show details of a storage pool.\n"
-"\n"
-"lxc storage info [<remote>:]<pool> [--bytes]\n"
-"    Show information of a storage pool in yaml format.\n"
-"\n"
-"lxc storage create [<remote>:]<pool> <driver> [key=value]... [--target "
-"<node>]\n"
-"    Create a storage pool.\n"
-"\n"
-"lxc storage get [<remote>:]<pool> <key>\n"
-"    Get storage pool configuration.\n"
-"\n"
-"lxc storage set [<remote>:]<pool> <key> <value>\n"
-"    Set storage pool configuration.\n"
-"\n"
-"lxc storage unset [<remote>:]<pool> <key>\n"
-"    Unset storage pool configuration.\n"
-"\n"
-"lxc storage delete [<remote>:]<pool>\n"
-"    Delete a storage pool.\n"
-"\n"
-"lxc storage edit [<remote>:]<pool>\n"
-"    Edit storage pool, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"*Storage volumes*\n"
-"lxc storage volume list [<remote>:]<pool>\n"
-"    List available storage volumes on a storage pool.\n"
-"\n"
-"lxc storage volume show [<remote>:]<pool> <volume> [--target <node>]\n"
-"   Show details of a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume create [<remote>:]<pool> <volume> [key=value]... [--"
-"target <node>]\n"
-"    Create a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume rename [<remote>:]<pool> <old name> <new name> [--target "
-"<node>]\n"
-"    Rename a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume get [<remote>:]<pool> <volume> <key> [--target <node>]\n"
-"    Get storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume set [<remote>:]<pool> <volume> <key> <value> [--target "
-"<node>]\n"
-"    Set storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume unset [<remote>:]<pool> <volume> <key> [--target <node>]\n"
-"    Unset storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume delete [<remote>:]<pool> <volume> [--target <node>]\n"
-"    Delete a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume edit [<remote>:]<pool> <volume> [--target <node>]\n"
-"    Edit storage volume, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"lxc storage volume attach [<remote>:]<pool> <volume> <container> [device "
-"name] <path>\n"
-"    Attach a storage volume to the specified container.\n"
-"\n"
-"lxc storage volume attach-profile [<remote:>]<pool> <volume> <profile> "
-"[device name] <path>\n"
-"    Attach a storage volume to the specified profile.\n"
-"\n"
-"lxc storage volume detach [<remote>:]<pool> <volume> <container> [device "
-"name]\n"
-"    Detach a storage volume from the specified container.\n"
-"\n"
-"lxc storage volume detach-profile [<remote:>]<pool> <volume> <profile> "
-"[device name]\n"
-"\tDetach a storage volume from the specified profile.\n"
-"\n"
-"lxc storage volume copy <pool>/<volume> <pool>/<volume> [--config|-c "
-"<key=value>...]\n"
-"    Copy an existing volume to a new volume at the specified pool.\n"
-"\n"
-"lxc storage volume move [<pool>/]<volume> [<pool>/]<volume>\n"
-"    Move an existing volume to the specified pool.\n"
-"\n"
-"Unless specified through a prefix, all volume operations affect \"custom"
-"\" (user created) volumes.\n"
-"\n"
-"*Examples*\n"
-"cat pool.yaml | lxc storage edit [<remote>:]<pool>\n"
-"    Update a storage pool using the content of pool.yaml.\n"
-"\n"
-"cat pool.yaml | lxc storage volume edit [<remote>:]<pool> <volume>\n"
-"    Update a storage volume using the content of pool.yaml.\n"
-"\n"
 "lxc storage volume show default data\n"
 "    Will show the properties of a custom volume called \"data\" in the "
 "\"default\" pool.\n"
@@ -2307,191 +2905,303 @@ msgid ""
 "\" in the \"default\" pool."
 msgstr ""
 
-#: lxc/version.go:18
+#: lxc/config_metadata.go:27
+msgid "metadata"
+msgstr ""
+
+#: lxc/monitor.go:29
+msgid "monitor [<remote>:]"
+msgstr ""
+
+#: lxc/storage_volume.go:991
+msgid "move [<pool>/]<volume> [<pool>/]<volume>"
+msgstr ""
+
+#: lxc/move.go:28
 msgid ""
-"Usage: lxc version\n"
-"\n"
-"Print the version number of this client tool."
+"move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
+"<snapshot>]]"
 msgstr ""
 
-#: lxc/delete.go:46
-msgid "User aborted delete operation."
+#: lxc/storage.go:429
+msgid "name"
 msgstr ""
 
-#: lxc/utils/cancel.go:40
+#: lxc/network.go:30
+msgid "network"
+msgstr ""
+
+#: lxc/image.go:809 lxc/image.go:814 lxc/image.go:977
+msgid "no"
+msgstr ""
+
+#: lxc/remote.go:253
+msgid "ok (y/n)?"
+msgstr ""
+
+#: lxc/operation.go:23
+msgid "operation"
+msgstr ""
+
+#: lxc/config_device.go:316
+msgid "override [<remote>:]<container> <device> [key=value...]"
+msgstr ""
+
+#: lxc/action.go:47
+msgid "pause [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/config.go:52
+msgid "please use `lxc profile`"
+msgstr ""
+
+#: lxc/profile.go:28
+msgid "profile"
+msgstr ""
+
+#: lxc/publish.go:32
 msgid ""
-"User signaled us three times, exiting. The remote operation will keep "
-"running."
+"publish [<remote>:]<container>[/<snapshot>] [<remote>:] [flags] [prop-"
+"key=prop-value...]"
 msgstr ""
 
-#: lxc/query.go:36
-msgid "Wait for the operation to complete"
+#: lxc/file.go:183
+msgid ""
+"pull [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...] "
+"<target path>"
 msgstr ""
 
-#: lxc/restore.go:38
+#: lxc/file.go:322
 msgid ""
-"Whether or not to restore the container's running state from snapshot (if "
-"available)"
+"push <source path> [<remote>:]<container>/<path> [[<remote>:]<container>/"
+"<path>...]"
 msgstr ""
 
-#: lxc/snapshot.go:33
-msgid "Whether or not to snapshot the container's running state"
+#: lxc/query.go:25
+msgid "query [<remote>:]<API path>"
 msgstr ""
 
-#: lxc/network.go:560 lxc/operation.go:141 lxc/remote.go:382 lxc/remote.go:387
-msgid "YES"
+#: lxc/image.go:1210
+msgid "refresh [<remote>:]<image> [[<remote>:]<image>...]"
 msgstr ""
 
-#: lxc/exec.go:132
-msgid "You can't pass -t and -T at the same time"
+#: lxc/remote.go:32
+msgid "remote"
 msgstr ""
 
-#: lxc/exec.go:136
-msgid "You can't pass -t or -T at the same time as --mode"
+#: lxc/alias.go:195
+msgid "remove <alias>"
 msgstr ""
 
-#: lxc/copy.go:76
-msgid "You must specify a destination container name when using --target"
+#: lxc/remote.go:546
+msgid "remove <remote>"
 msgstr ""
 
-#: lxc/copy.go:71
-msgid "You must specify a source container name"
+#: lxc/config_trust.go:194
+msgid "remove [<remote>:] <hostname|fingerprint>"
 msgstr ""
 
-#: lxc/copy.go:66 lxc/move.go:71
-msgid "You must use the same source and destination remote when using --target"
+#: lxc/profile.go:630
+msgid "remove [<remote>:]<container> <profile>"
 msgstr ""
 
-#: lxc/main.go:72
-msgid "`lxc config profile` is deprecated, please use `lxc profile`"
+#: lxc/config_device.go:402
+msgid "remove [<remote>:]<container|profile> <name>..."
 msgstr ""
 
-#: lxc/alias.go:56 lxc/alias.go:102
-#, c-format
-msgid "alias %s already exists"
+#: lxc/cluster.go:235
+msgid "remove [<remote>:]<member>"
 msgstr ""
 
-#: lxc/alias.go:68 lxc/alias.go:97
-#, c-format
-msgid "alias %s doesn't exist"
+#: lxc/alias.go:144
+msgid "rename <old alias> <new alias>"
 msgstr ""
 
-#: lxc/remote.go:370
-msgid "can't remove the default remote"
+#: lxc/remote.go:484
+msgid "rename <remote> <new-name>"
 msgstr ""
 
-#: lxc/file.go:296
-msgid "can't supply uid/gid/mode in recursive mode"
+#: lxc/image_alias.go:247
+msgid "rename [<remote>:]<alias> <new-name>"
 msgstr ""
 
-#: lxc/remote.go:399
-msgid "default"
+#: lxc/rename.go:18
+msgid "rename [<remote>:]<container>[/<snapshot>] <container>[/<snapshot>]"
 msgstr ""
 
-#: lxc/storage.go:856
-msgid "description"
+#: lxc/cluster.go:189
+msgid "rename [<remote>:]<member> <new-name>"
 msgstr ""
 
-#: lxc/init.go:315
-msgid "didn't get any affected image, container or snapshot from server"
+#: lxc/network.go:870
+msgid "rename [<remote>:]<network> <new-name>"
 msgstr ""
 
-#: lxc/image.go:594
-msgid "disabled"
+#: lxc/storage_volume.go:1023
+msgid "rename [<remote>:]<pool> <old name> <new name>"
 msgstr ""
 
-#: lxc/storage.go:855
-msgid "driver"
+#: lxc/profile.go:702
+msgid "rename [<remote>:]<profile> <new-name>"
 msgstr ""
 
-#: lxc/image.go:596
-msgid "enabled"
+#: lxc/action.go:67
+msgid "restart [<remote>:]<container> [[<remote>:]<container>...]"
 msgstr ""
 
-#: lxc/action.go:155 lxc/main.go:33 lxc/main.go:191
-#, c-format
-msgid "error: %v"
+#: lxc/restore.go:22
+msgid "restore [<remote>:]<container> <snapshot>"
 msgstr ""
 
-#: lxc/help.go:37 lxc/main.go:133
-#, c-format
-msgid "error: unknown command: %s"
+#: lxc/config_device.go:491
+msgid "set [<remote>:]<container|profile> <device> <key> <value>"
 msgstr ""
 
-#: lxc/storage.go:853
-msgid "info"
+#: lxc/network.go:918
+msgid "set [<remote>:]<network> <key> <value>"
 msgstr ""
 
-#: lxc/storage.go:854
-msgid "name"
+#: lxc/storage.go:571
+msgid "set [<remote>:]<pool> <key> <value>"
 msgstr ""
 
-#: lxc/image.go:210 lxc/image.go:584 lxc/image.go:589
-msgid "no"
+#: lxc/storage_volume.go:1087
+msgid "set [<remote>:]<pool> <volume> <key> <value>"
 msgstr ""
 
-#: lxc/remote.go:204
-msgid "ok (y/n)?"
+#: lxc/profile.go:751
+msgid "set [<remote>:]<profile> <key> <value>"
 msgstr ""
 
-#: lxc/main.go:368 lxc/main.go:372
-#, c-format
-msgid "processing aliases failed %s\n"
+#: lxc/config.go:353
+msgid "set [<remote>:][container] <key> <value>"
 msgstr ""
 
-#: lxc/file.go:588
-msgid "recursive edit doesn't make sense :("
+#: lxc/remote.go:596
+msgid "set-default <remote>"
 msgstr ""
 
-#: lxc/remote.go:436
-#, c-format
-msgid "remote %s already exists"
+#: lxc/remote.go:634
+msgid "set-url <remote> <URL>"
 msgstr ""
 
-#: lxc/remote.go:362 lxc/remote.go:428 lxc/remote.go:463 lxc/remote.go:479
-#, c-format
-msgid "remote %s doesn't exist"
+#: lxc/config_template.go:296
+msgid "show [<remote>:]<container> <template>"
 msgstr ""
 
-#: lxc/remote.go:345
-#, c-format
-msgid "remote %s exists as <%s>"
+#: lxc/config_device.go:580
+msgid "show [<remote>:]<container|profile>"
 msgstr ""
 
-#: lxc/remote.go:366 lxc/remote.go:432 lxc/remote.go:467
-#, c-format
-msgid "remote %s is static and cannot be modified"
+#: lxc/image.go:1283
+msgid "show [<remote>:]<image>"
+msgstr ""
+
+#: lxc/cluster.go:140
+msgid "show [<remote>:]<member>"
+msgstr ""
+
+#: lxc/network.go:987
+msgid "show [<remote>:]<network>"
+msgstr ""
+
+#: lxc/operation.go:172
+msgid "show [<remote>:]<operation>"
+msgstr ""
+
+#: lxc/storage.go:643
+msgid "show [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:1164
+msgid "show [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:810
+msgid "show [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/config.go:450 lxc/config_metadata.go:174
+msgid "show [<remote>:][container]"
+msgstr ""
+
+#: lxc/snapshot.go:19
+msgid "snapshot [<remote>:]<container> <snapshot name>"
 msgstr ""
 
-#: lxc/storage.go:858
+#: lxc/storage.go:433
 msgid "space used"
 msgstr ""
 
-#: lxc/info.go:251
+#: lxc/action.go:28
+msgid "start [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/info.go:255
 msgid "stateful"
 msgstr ""
 
-#: lxc/info.go:253
+#: lxc/info.go:257
 msgid "stateless"
 msgstr ""
 
-#: lxc/info.go:247
+#: lxc/action.go:89
+msgid "stop [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/storage.go:31
+msgid "storage"
+msgstr ""
+
+#: lxc/info.go:251
 #, c-format
 msgid "taken at %s"
 msgstr ""
 
-#: lxc/storage.go:857
+#: lxc/config_template.go:28
+msgid "template"
+msgstr ""
+
+#: lxc/storage.go:432
 msgid "total space"
 msgstr ""
 
-#: lxc/storage.go:852
+#: lxc/config_trust.go:28
+msgid "trust"
+msgstr ""
+
+#: lxc/config_device.go:648
+msgid "unset [<remote>:]<container|profile> <device> <key>"
+msgstr ""
+
+#: lxc/network.go:1049
+msgid "unset [<remote>:]<network> <key>"
+msgstr ""
+
+#: lxc/storage.go:727
+msgid "unset [<remote>:]<pool> <key>"
+msgstr ""
+
+#: lxc/storage_volume.go:1239
+msgid "unset [<remote>:]<pool> <volume> <key>"
+msgstr ""
+
+#: lxc/profile.go:864
+msgid "unset [<remote>:]<profile> <key>"
+msgstr ""
+
+#: lxc/config.go:558
+msgid "unset [<remote>:][container] <key>"
+msgstr ""
+
+#: lxc/storage.go:427
 msgid "used by"
 msgstr ""
 
-#: lxc/main.go:299
-msgid "wrong number of subcommand arguments"
+#: lxc/storage_volume.go:32
+msgid "volume"
 msgstr ""
 
-#: lxc/delete.go:45 lxc/image.go:208 lxc/image.go:586 lxc/image.go:591
+#: lxc/delete.go:46 lxc/image.go:811 lxc/image.go:816 lxc/image.go:975
 msgid "yes"
 msgstr ""
diff --git a/po/ru.po b/po/ru.po
index 7c374fa8f..cf6f5338f 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -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: 2018-02-27 22:14-0500\n"
+"POT-Creation-Date: 2018-03-29 01:45-0400\n"
 "PO-Revision-Date: 2017-09-05 16:48+0000\n"
 "Last-Translator: Ilya Yakimavets <ilya.yakimavets at backend.expert>\n"
 "Language-Team: Russian <https://hosted.weblate.org/projects/linux-containers/"
@@ -20,7 +20,7 @@ msgstr ""
 "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
 "X-Generator: Weblate 2.17-dev\n"
 
-#: lxc/storage.go:36
+#: lxc/storage.go:220
 #, fuzzy
 msgid ""
 "### This is a yaml representation of a storage pool.\n"
@@ -51,7 +51,7 @@ msgstr ""
 "###   source: /home/chb/mnt/lxd_test/default.img\n"
 "###   zfs.pool_name: default"
 
-#: lxc/storage.go:53
+#: lxc/storage_volume.go:737
 msgid ""
 "### This is a yaml representation of a storage volume.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -65,7 +65,7 @@ msgid ""
 "###   size: \"61203283968\""
 msgstr ""
 
-#: lxc/config.go:40
+#: lxc/config.go:100
 msgid ""
 "### This is a yaml representation of the configuration.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -103,7 +103,7 @@ msgstr ""
 "###\n"
 "### Обратите внимание, что имя отображается, но не может быть изменено"
 
-#: lxc/config.go:61
+#: lxc/config_metadata.go:63
 #, fuzzy
 msgid ""
 "### This is a yaml representation of the container metadata.\n"
@@ -145,7 +145,7 @@ msgstr ""
 "###\n"
 "### Обратите внимание, что имя отображается, но не может быть изменено"
 
-#: lxc/image.go:63
+#: lxc/image.go:327
 msgid ""
 "### This is a yaml representation of the image properties.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -155,7 +155,7 @@ msgid ""
 "###  description: My custom image"
 msgstr ""
 
-#: lxc/network.go:32
+#: lxc/network.go:546
 msgid ""
 "### This is a yaml representation of the network.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -191,7 +191,7 @@ msgstr ""
 "###\n"
 "### Обратите внимание, что только конфигурация может быть изменена."
 
-#: lxc/profile.go:30
+#: lxc/profile.go:408
 msgid ""
 "### This is a yaml representation of the profile.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -229,12 +229,12 @@ msgstr ""
 "###\n"
 "### Обратите внимание, что имя отображается, но не может быть изменено"
 
-#: lxc/image.go:187
+#: lxc/image.go:954
 #, c-format
 msgid "%s (%d more)"
 msgstr ""
 
-#: lxc/file.go:205
+#: lxc/file.go:677
 #, c-format
 msgid "%s is not a directory"
 msgstr ""
@@ -244,883 +244,1641 @@ msgstr ""
 msgid "%v (interrupt two more times to force)"
 msgstr ""
 
-#: lxc/file.go:142
+#: lxc/file.go:614
 #, c-format
 msgid "'%s' isn't a supported file type."
 msgstr ""
 
-#: lxc/profile.go:337
+#: lxc/profile.go:222
 msgid "(none)"
 msgstr "(пусто)"
 
-#: lxc/alias.go:84 lxc/image.go:231 lxc/image.go:1136
+#: lxc/alias.go:127 lxc/image.go:921 lxc/image_alias.go:228
 msgid "ALIAS"
 msgstr "ПСЕВДОНИМ"
 
-#: lxc/image.go:232
+#: lxc/image.go:922
 #, fuzzy
 msgid "ALIASES"
 msgstr "ПСЕВДОНИМ"
 
-#: lxc/image.go:236
+#: lxc/image.go:926
 msgid "ARCH"
 msgstr "ARCH"
 
-#: lxc/list.go:467
+#: lxc/list.go:464
 msgid "ARCHITECTURE"
 msgstr "АРХИТЕКТУРА"
 
-#: lxc/remote.go:412
+#: lxc/remote.go:466
 msgid "AUTH TYPE"
 msgstr ""
 
-#: lxc/remote.go:68
+#: lxc/remote.go:88
 msgid "Accept certificate"
 msgstr "Принять сертификат"
 
-#: lxc/query.go:38
+#: lxc/query.go:37
 msgid "Action (defaults to GET)"
 msgstr ""
 
-#: lxc/remote.go:276
+#: lxc/config_device.go:75 lxc/config_device.go:76
+msgid "Add devices to containers or profiles"
+msgstr ""
+
+#: lxc/alias.go:54 lxc/alias.go:55
+#, fuzzy
+msgid "Add new aliases"
+msgstr "Псевдонимы:"
+
+#: lxc/remote.go:83 lxc/remote.go:84
+msgid "Add new remote servers"
+msgstr ""
+
+#: lxc/config_trust.go:58 lxc/config_trust.go:59
+msgid "Add new trusted clients"
+msgstr ""
+
+#: lxc/profile.go:101 lxc/profile.go:102
+msgid "Add profiles to containers"
+msgstr ""
+
+#: lxc/remote.go:325
 #, c-format
 msgid "Admin password for %s: "
 msgstr "Пароль администратора для %s: "
 
-#: lxc/image.go:623
+#: lxc/alias.go:78 lxc/alias.go:176
+#, c-format
+msgid "Alias %s already exists"
+msgstr ""
+
+#: lxc/alias.go:170 lxc/alias.go:221
+#, c-format
+msgid "Alias %s doesn't exist"
+msgstr ""
+
+#: lxc/image_alias.go:83 lxc/image_alias.go:130 lxc/image_alias.go:274
+msgid "Alias name missing"
+msgstr ""
+
+#: lxc/image.go:854
 msgid "Aliases:"
 msgstr "Псевдонимы:"
 
-#: lxc/image.go:601 lxc/info.go:125
+#: lxc/image.go:826 lxc/info.go:129
 #, c-format
 msgid "Architecture: %s"
 msgstr "Архитектура: %s"
 
-#: lxc/remote.go:259
+#: lxc/profile.go:162 lxc/profile.go:163
+msgid "Assign sets of profiles to containers"
+msgstr ""
+
+#: lxc/network.go:103
+msgid "Attach network interfaces to containers"
+msgstr ""
+
+#: lxc/network.go:176 lxc/network.go:177
+msgid "Attach network interfaces to profiles"
+msgstr ""
+
+#: lxc/network.go:104
+msgid "Attach new network interfaces to containers"
+msgstr ""
+
+#: lxc/storage_volume.go:121 lxc/storage_volume.go:122
+msgid "Attach new storage volumes to containers"
+msgstr ""
+
+#: lxc/storage_volume.go:200 lxc/storage_volume.go:201
+msgid "Attach new storage volumes to profiles"
+msgstr ""
+
+#: lxc/console.go:31
+msgid "Attach to container consoles"
+msgstr ""
+
+#: lxc/console.go:32
+msgid ""
+"Attach to container consoles\n"
+"\n"
+"This command allows you to interact with the boot console of a container\n"
+"as well as retrieve past log entries from it."
+msgstr ""
+
+#: lxc/remote.go:308
 #, c-format
 msgid "Authentication type '%s' not supported by server"
 msgstr ""
 
-#: lxc/image.go:632
+#: lxc/image.go:864
 #, c-format
 msgid "Auto update: %s"
 msgstr "Авто-обновление: %s"
 
-#: lxc/image.go:707
+#: lxc/network.go:283
+#, c-format
+msgid "Bad key/value pair: %s"
+msgstr ""
+
+#: lxc/copy.go:110 lxc/init.go:118 lxc/publish.go:175 lxc/storage.go:123
+#: lxc/storage_volume.go:468
+#, c-format
+msgid "Bad key=value pair: %s"
+msgstr ""
+
+#: lxc/image.go:677
 #, c-format
 msgid "Bad property: %s"
 msgstr ""
 
-#: lxc/action.go:133
+#: lxc/action.go:212
 msgid "Both --all and container name given"
 msgstr ""
 
-#: lxc/info.go:218
+#: lxc/info.go:222
 msgid "Bytes received"
 msgstr "Получено байтов"
 
-#: lxc/info.go:219
+#: lxc/info.go:223
 msgid "Bytes sent"
 msgstr "Отправлено байтов"
 
-#: lxc/operation.go:156
+#: lxc/operation.go:155
 msgid "CANCELABLE"
 msgstr ""
 
-#: lxc/config.go:403
+#: lxc/config_trust.go:175
 msgid "COMMON NAME"
 msgstr "ОБЩЕЕ ИМЯ"
 
-#: lxc/info.go:182
+#: lxc/info.go:186
 msgid "CPU usage (in seconds)"
 msgstr "Использование ЦП (в секундах)"
 
-#: lxc/info.go:186
+#: lxc/info.go:190
 #, fuzzy
 msgid "CPU usage:"
 msgstr " Использование ЦП:"
 
-#: lxc/operation.go:157
+#: lxc/operation.go:156
 #, fuzzy
 msgid "CREATED"
 msgstr "СОЗДАН"
 
-#: lxc/list.go:468
+#: lxc/list.go:465
 msgid "CREATED AT"
 msgstr "СОЗДАН"
 
-#: lxc/image.go:631
+#: lxc/image.go:863
 #, c-format
 msgid "Cached: %s"
 msgstr ""
 
-#: lxc/file.go:501
+#: lxc/image.go:175
+msgid "Can't provide a name for the target image"
+msgstr ""
+
+#: lxc/file.go:261
 msgid "Can't pull a directory without --recursive"
 msgstr ""
 
-#: lxc/config.go:210 lxc/network.go:619
+#: lxc/config.go:400 lxc/network.go:969
 #, c-format
 msgid "Can't read from stdin: %s"
 msgstr "Невозможно прочитать из стандартного ввода: %s"
 
-#: lxc/rename.go:41
+#: lxc/remote.go:577
+msgid "Can't remove the default remote"
+msgstr ""
+
+#: lxc/list.go:481
+msgid "Can't specify --fast with --columns"
+msgstr ""
+
+#: lxc/rename.go:48
 msgid "Can't specify a different remote for rename."
 msgstr ""
 
-#: lxc/config.go:223
-#, c-format
-msgid "Can't unset key '%s', it's not currently set"
+#: lxc/list.go:493
+msgid "Can't specify column L when not clustered"
 msgstr ""
 
-#: lxc/config.go:265 lxc/config.go:291
-#, c-format
-msgid "Can't unset key '%s', it's not currently set."
+#: lxc/file.go:399
+msgid "Can't supply uid/gid/mode in recursive mode"
 msgstr ""
 
-#: lxc/profile.go:546 lxc/storage.go:696
-msgid "Cannot provide container name to list"
-msgstr "Невозможно добавить имя контейнера в список"
+#: lxc/config.go:413
+#, c-format
+msgid "Can't unset key '%s', it's not currently set"
+msgstr ""
 
-#: lxc/remote.go:203
+#: lxc/remote.go:252
 #, c-format
 msgid "Certificate fingerprint: %s"
 msgstr ""
 
-#: lxc/remote.go:315
+#: lxc/remote.go:364
 msgid "Client certificate stored at server: "
 msgstr "Сертификат клиента хранится на сервере: "
 
-#: lxc/image.go:175 lxc/image.go:176 lxc/list.go:134 lxc/list.go:135
+#: lxc/network.go:253 lxc/network.go:663 lxc/network.go:923 lxc/network.go:992
+#: lxc/network.go:1054 lxc/storage.go:92 lxc/storage.go:331 lxc/storage.go:576
+#: lxc/storage.go:649 lxc/storage.go:732 lxc/storage_volume.go:287
+#: lxc/storage_volume.go:429 lxc/storage_volume.go:504
+#: lxc/storage_volume.go:730 lxc/storage_volume.go:856
+#: lxc/storage_volume.go:998 lxc/storage_volume.go:1028
+#: lxc/storage_volume.go:1092 lxc/storage_volume.go:1175
+#: lxc/storage_volume.go:1244
+msgid "Cluster member name"
+msgstr ""
+
+#: lxc/image.go:912 lxc/list.go:112
 msgid "Columns"
 msgstr "Столбцы"
 
-#: lxc/help.go:53
-msgid "Commands:"
+#: lxc/main.go:44
+msgid "Command line client for LXD"
+msgstr ""
+
+#: lxc/main.go:45
+msgid ""
+"Command line client for LXD\n"
+"\n"
+"All of LXD's features can be driven through the various commands below.\n"
+"For help with any of those, simply call them with --help."
 msgstr ""
 
-#: lxc/copy.go:37 lxc/copy.go:38 lxc/init.go:139 lxc/init.go:140
+#: lxc/copy.go:39 lxc/init.go:42
 msgid "Config key/value to apply to the new container"
 msgstr ""
 
-#: lxc/config.go:821 lxc/config.go:886 lxc/config.go:1396 lxc/image.go:1191
-#: lxc/network.go:445 lxc/profile.go:275 lxc/storage.go:647 lxc/storage.go:1209
+#: lxc/config.go:195 lxc/config.go:259 lxc/config_metadata.go:144
+#: lxc/image.go:405 lxc/network.go:631 lxc/profile.go:490 lxc/storage.go:298
+#: lxc/storage_volume.go:822
 #, c-format
 msgid "Config parsing error: %s"
 msgstr ""
 
-#: lxc/main.go:40
-msgid "Connection refused; is LXD running?"
-msgstr "В соединении отказано; LXD запущен?"
-
-#: lxc/console.go:132
+#: lxc/console.go:141
 msgid "Console log:"
 msgstr ""
 
-#: lxc/publish.go:71
+#: lxc/publish.go:79
 msgid "Container name is mandatory"
 msgstr "Имя контейнера является обязательным"
 
-#: lxc/copy.go:243 lxc/init.go:321
+#: lxc/copy.go:260 lxc/init.go:229
 #, c-format
 msgid "Container name is: %s"
 msgstr "Имя контейнера: %s"
 
-#: lxc/publish.go:250
+#: lxc/publish.go:259
 #, c-format
 msgid "Container published with fingerprint: %s"
 msgstr ""
 
-#: lxc/copy.go:45 lxc/move.go:44
+#: lxc/copy.go:44 lxc/move.go:46
 msgid "Copy a stateful container stateless"
 msgstr ""
 
-#: lxc/image.go:178
+#: lxc/image.go:138
 msgid "Copy aliases from source"
 msgstr "Копировать псевдонимы из источника"
 
-#: lxc/copy.go:44
+#: lxc/copy.go:34 lxc/copy.go:35
+msgid "Copy containers within or in between LXD instances"
+msgstr ""
+
+#: lxc/image.go:130
+msgid "Copy images between servers"
+msgstr ""
+
+#: lxc/image.go:131
+msgid ""
+"Copy images between servers\n"
+"\n"
+"The auto-update flag instructs the server to keep this image up to date.\n"
+"It requires the source to be an alias and for it to be public."
+msgstr ""
+
+#: lxc/config_device.go:317 lxc/config_device.go:318
+msgid "Copy profile inherited devices and override configuration keys"
+msgstr ""
+
+#: lxc/profile.go:240 lxc/profile.go:241
+msgid "Copy profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:282 lxc/storage_volume.go:283
+#, fuzzy
+msgid "Copy storage volumes"
+msgstr "Копирование образа: %s"
+
+#: lxc/copy.go:43
 msgid "Copy the container without its snapshots"
 msgstr ""
 
-#: lxc/image.go:449
+#: lxc/image.go:217
 #, c-format
 msgid "Copying the image: %s"
 msgstr "Копирование образа: %s"
 
-#: lxc/storage.go:1134
+#: lxc/storage_volume.go:387
 #, fuzzy, c-format
 msgid "Copying the storage volume: %s"
 msgstr "Копирование образа: %s"
 
-#: lxc/remote.go:218
+#: lxc/remote.go:267
 msgid "Could not create server cert dir"
 msgstr "Не удалось создать каталог сертификата сервера"
 
-#: lxc/file.go:70 lxc/file.go:71
+#: lxc/image_alias.go:58 lxc/image_alias.go:59
+msgid "Create aliases for existing images"
+msgstr ""
+
+#: lxc/launch.go:21 lxc/launch.go:22
+msgid "Create and start containers from images"
+msgstr ""
+
+#: lxc/file.go:191 lxc/file.go:331
 msgid "Create any directories necessary"
 msgstr ""
 
-#: lxc/image.go:606 lxc/info.go:127
+#: lxc/snapshot.go:20
+#, fuzzy
+msgid "Create container snapshots"
+msgstr "Невозможно добавить имя контейнера в список"
+
+#: lxc/snapshot.go:21
+msgid ""
+"Create container snapshots\n"
+"\n"
+"When --stateful is used, LXD attempts to checkpoint the container's\n"
+"running state, including process memory state, TCP connections, ..."
+msgstr ""
+
+#: lxc/init.go:34 lxc/init.go:35
+msgid "Create containers from images"
+msgstr ""
+
+#: lxc/config_template.go:66 lxc/config_template.go:67
+#, fuzzy
+msgid "Create new container file templates"
+msgstr "Невозможно добавить имя контейнера в список"
+
+#: lxc/storage_volume.go:425 lxc/storage_volume.go:426
+#, fuzzy
+msgid "Create new custom storage volumes"
+msgstr "Копирование образа: %s"
+
+#: lxc/network.go:249 lxc/network.go:250
+msgid "Create new networks"
+msgstr ""
+
+#: lxc/profile.go:296 lxc/profile.go:297
+msgid "Create profiles"
+msgstr ""
+
+#: lxc/storage.go:88 lxc/storage.go:89
+#, fuzzy
+msgid "Create storage pools"
+msgstr "Копирование образа: %s"
+
+#: lxc/image.go:832 lxc/info.go:131
 #, c-format
 msgid "Created: %s"
 msgstr ""
 
-#: lxc/init.go:200
+#: lxc/init.go:98
 #, c-format
 msgid "Creating %s"
 msgstr ""
 
-#: lxc/init.go:198
+#: lxc/init.go:96
 msgid "Creating the container"
 msgstr ""
 
-#: lxc/cluster.go:185
+#: lxc/cluster.go:121
 msgid "DATABASE"
 msgstr ""
 
-#: lxc/image.go:235 lxc/image.go:1138 lxc/list.go:469 lxc/network.go:579
-#: lxc/operation.go:154 lxc/storage.go:732 lxc/storage.go:937
+#: lxc/image.go:925 lxc/image_alias.go:230 lxc/list.go:466 lxc/network.go:784
+#: lxc/operation.go:153 lxc/storage.go:545 lxc/storage_volume.go:967
 msgid "DESCRIPTION"
 msgstr ""
 
-#: lxc/storage.go:733
+#: lxc/storage.go:546
 msgid "DRIVER"
 msgstr ""
 
-#: lxc/publish.go:39
+#: lxc/publish.go:41
 msgid "Define a compression algorithm: for image or none"
 msgstr ""
 
-#: lxc/config.go:977
+#: lxc/operation.go:53 lxc/operation.go:54
+msgid "Delete a background operation (will attempt to cancel)"
+msgstr ""
+
+#: lxc/config_template.go:109 lxc/config_template.go:110
+#, fuzzy
+msgid "Delete container file templates"
+msgstr "Невозможно добавить имя контейнера в список"
+
+#: lxc/delete.go:29 lxc/delete.go:30
+#, fuzzy
+msgid "Delete containers and snapshots"
+msgstr "Невозможно добавить имя контейнера в список"
+
+#: lxc/file.go:72 lxc/file.go:73
+msgid "Delete files in containers"
+msgstr ""
+
+#: lxc/image_alias.go:105 lxc/image_alias.go:106
+msgid "Delete image aliases"
+msgstr ""
+
+#: lxc/image.go:260 lxc/image.go:261
+msgid "Delete images"
+msgstr ""
+
+#: lxc/network.go:319 lxc/network.go:320
+msgid "Delete networks"
+msgstr ""
+
+#: lxc/profile.go:347 lxc/profile.go:348
+msgid "Delete profiles"
+msgstr ""
+
+#: lxc/storage.go:160 lxc/storage.go:161
+msgid "Delete storage pools"
+msgstr ""
+
+#: lxc/storage_volume.go:500 lxc/storage_volume.go:501
+#, fuzzy
+msgid "Delete storage volumes"
+msgstr "Копирование образа: %s"
+
+#: lxc/action.go:30 lxc/action.go:49 lxc/action.go:69 lxc/action.go:91
+#: lxc/alias.go:23 lxc/alias.go:55 lxc/alias.go:99 lxc/alias.go:147
+#: lxc/alias.go:198 lxc/cluster.go:26 lxc/cluster.go:59 lxc/cluster.go:142
+#: lxc/cluster.go:192 lxc/cluster.go:238 lxc/config.go:29 lxc/config.go:88
+#: lxc/config.go:289 lxc/config.go:355 lxc/config.go:452 lxc/config.go:560
+#: lxc/config_device.go:24 lxc/config_device.go:76 lxc/config_device.go:179
+#: lxc/config_device.go:252 lxc/config_device.go:318 lxc/config_device.go:405
+#: lxc/config_device.go:493 lxc/config_device.go:582 lxc/config_device.go:650
+#: lxc/config_metadata.go:29 lxc/config_metadata.go:54
+#: lxc/config_metadata.go:176 lxc/config_template.go:30
+#: lxc/config_template.go:67 lxc/config_template.go:110
+#: lxc/config_template.go:152 lxc/config_template.go:236
+#: lxc/config_template.go:298 lxc/config_trust.go:30 lxc/config_trust.go:59
+#: lxc/config_trust.go:115 lxc/config_trust.go:197 lxc/console.go:32
+#: lxc/copy.go:35 lxc/delete.go:30 lxc/exec.go:39 lxc/file.go:40 lxc/file.go:73
+#: lxc/file.go:122 lxc/file.go:185 lxc/file.go:324 lxc/image.go:42
+#: lxc/image.go:131 lxc/image.go:261 lxc/image.go:312 lxc/image.go:435
+#: lxc/image.go:571 lxc/image.go:776 lxc/image.go:890 lxc/image.go:1212
+#: lxc/image.go:1285 lxc/image_alias.go:26 lxc/image_alias.go:59
+#: lxc/image_alias.go:106 lxc/image_alias.go:149 lxc/image_alias.go:250
+#: lxc/info.go:29 lxc/init.go:35 lxc/launch.go:22 lxc/list.go:48 lxc/main.go:45
+#: lxc/monitor.go:31 lxc/move.go:31 lxc/network.go:32 lxc/network.go:104
+#: lxc/network.go:177 lxc/network.go:250 lxc/network.go:320 lxc/network.go:367
+#: lxc/network.go:452 lxc/network.go:537 lxc/network.go:660 lxc/network.go:719
+#: lxc/network.go:808 lxc/network.go:873 lxc/network.go:920 lxc/network.go:989
+#: lxc/network.go:1051 lxc/operation.go:25 lxc/operation.go:54
+#: lxc/operation.go:98 lxc/operation.go:174 lxc/profile.go:30
+#: lxc/profile.go:102 lxc/profile.go:163 lxc/profile.go:241 lxc/profile.go:297
+#: lxc/profile.go:348 lxc/profile.go:396 lxc/profile.go:520 lxc/profile.go:568
+#: lxc/profile.go:632 lxc/profile.go:705 lxc/profile.go:753 lxc/profile.go:812
+#: lxc/profile.go:866 lxc/publish.go:34 lxc/query.go:27 lxc/remote.go:34
+#: lxc/remote.go:84 lxc/remote.go:380 lxc/remote.go:414 lxc/remote.go:487
+#: lxc/remote.go:549 lxc/remote.go:598 lxc/remote.go:636 lxc/rename.go:20
+#: lxc/restore.go:24 lxc/snapshot.go:21 lxc/storage.go:33 lxc/storage.go:89
+#: lxc/storage.go:161 lxc/storage.go:208 lxc/storage.go:328 lxc/storage.go:383
+#: lxc/storage.go:491 lxc/storage.go:573 lxc/storage.go:645 lxc/storage.go:729
+#: lxc/storage_volume.go:34 lxc/storage_volume.go:122 lxc/storage_volume.go:201
+#: lxc/storage_volume.go:283 lxc/storage_volume.go:426
+#: lxc/storage_volume.go:501 lxc/storage_volume.go:561
+#: lxc/storage_volume.go:643 lxc/storage_volume.go:724
+#: lxc/storage_volume.go:853 lxc/storage_volume.go:918
+#: lxc/storage_volume.go:994 lxc/storage_volume.go:1025
+#: lxc/storage_volume.go:1089 lxc/storage_volume.go:1166
+#: lxc/storage_volume.go:1241
+msgid "Description"
+msgstr ""
+
+#: lxc/network.go:366 lxc/network.go:367
+msgid "Detach network interfaces from containers"
+msgstr ""
+
+#: lxc/network.go:451 lxc/network.go:452
+msgid "Detach network interfaces from profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:560 lxc/storage_volume.go:561
+msgid "Detach storage volumes from containers"
+msgstr ""
+
+#: lxc/storage_volume.go:642 lxc/storage_volume.go:643
+msgid "Detach storage volumes from profiles"
+msgstr ""
+
+#: lxc/config_device.go:163
 #, c-format
 msgid "Device %s added to %s"
 msgstr ""
 
-#: lxc/config.go:1272
+#: lxc/config_device.go:387
 #, c-format
 msgid "Device %s overridden for %s"
 msgstr ""
 
-#: lxc/config.go:1213
+#: lxc/config_device.go:476
 #, c-format
 msgid "Device %s removed from %s"
 msgstr ""
 
-#: lxc/utils.go:192 lxc/utils.go:216
+#: lxc/utils.go:133 lxc/utils.go:157
 #, c-format
 msgid "Device already exists: %s"
 msgstr ""
 
-#: lxc/image.go:1290
+#: lxc/image.go:586
 msgid "Directory import is not available on this platform"
 msgstr ""
 
-#: lxc/exec.go:71
+#: lxc/exec.go:55
 msgid "Disable pseudo-terminal allocation"
 msgstr ""
 
-#: lxc/exec.go:72
+#: lxc/exec.go:56
 msgid "Disable stdin (reads from /dev/null)"
 msgstr ""
 
-#: lxc/info.go:175
+#: lxc/info.go:179
 #, fuzzy
 msgid "Disk usage:"
 msgstr " Использование диска:"
 
-#: lxc/list.go:638
+#: lxc/list.go:635
 msgid "EPHEMERAL"
 msgstr ""
 
-#: lxc/config.go:405
+#: lxc/config_trust.go:177
 msgid "EXPIRY DATE"
 msgstr ""
 
-#: lxc/main.go:52
-msgid "Enable debug mode"
+#: lxc/config_template.go:151 lxc/config_template.go:152
+#, fuzzy
+msgid "Edit container file templates"
+msgstr "Невозможно добавить имя контейнера в список"
+
+#: lxc/config_metadata.go:53 lxc/config_metadata.go:54
+msgid "Edit container metadata files"
 msgstr ""
 
-#: lxc/main.go:51
-msgid "Enable verbose mode"
+#: lxc/config.go:87 lxc/config.go:88
+msgid "Edit container or server configurations as YAML"
 msgstr ""
 
-#: lxc/exec.go:68
-msgid "Environment variable to set (e.g. HOME=/home/foo)"
+#: lxc/file.go:121 lxc/file.go:122
+msgid "Edit files in containers"
+msgstr ""
+
+#: lxc/image.go:311 lxc/image.go:312
+msgid "Edit image properties"
+msgstr ""
+
+#: lxc/network.go:536 lxc/network.go:537
+msgid "Edit network configurations as YAML"
+msgstr ""
+
+#: lxc/profile.go:395 lxc/profile.go:396
+msgid "Edit profile configurations as YAML"
+msgstr ""
+
+#: lxc/storage.go:207 lxc/storage.go:208
+msgid "Edit storage pool configurations as YAML"
+msgstr ""
+
+#: lxc/storage_volume.go:723 lxc/storage_volume.go:724
+msgid "Edit storage volume configurations as YAML"
+msgstr ""
+
+#: lxc/list.go:504
+#, c-format
+msgid "Empty column entry (redundant, leading or trailing command) in '%s'"
 msgstr ""
 
-#: lxc/help.go:77
-msgid "Environment:"
+#: lxc/exec.go:52
+msgid "Environment variable to set (e.g. HOME=/home/foo)"
 msgstr ""
 
-#: lxc/copy.go:41 lxc/copy.go:42 lxc/init.go:143 lxc/init.go:144
+#: lxc/copy.go:41 lxc/init.go:44
 msgid "Ephemeral container"
 msgstr ""
 
-#: lxc/config.go:1446
+#: lxc/config_template.go:204
 #, fuzzy, c-format
 msgid "Error updating template file: %s"
 msgstr "Копирование образа: %s"
 
-#: lxc/monitor.go:69
+#: lxc/monitor.go:48
 msgid "Event type to listen for"
 msgstr ""
 
-#: lxc/image.go:610
+#: lxc/exec.go:38
+msgid "Execute commands in containers"
+msgstr ""
+
+#: lxc/exec.go:39
+msgid ""
+"Execute commands in containers\n"
+"\n"
+"The command is executed directly using exec, so there is no shell and\n"
+"shell patterns (variables, file redirects, ...) won't be understood.\n"
+"If you need a shell environment you need to execute the shell\n"
+"executable, passing the shell commands as arguments, for example:\n"
+"\n"
+"  lxc exec <container> -- sh -c \"cd /tmp && pwd\"\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:838
 #, c-format
 msgid "Expires: %s"
 msgstr ""
 
-#: lxc/image.go:612
+#: lxc/image.go:840
 msgid "Expires: never"
 msgstr ""
 
-#: lxc/image.go:922
+#: lxc/image.go:434
+#, fuzzy
+msgid "Export and download images"
+msgstr "Копирование образа: %s"
+
+#: lxc/image.go:435
+msgid ""
+"Export and download images\n"
+"\n"
+"The output target is optional and defaults to the working directory."
+msgstr ""
+
+#: lxc/image.go:494
 #, fuzzy, c-format
 msgid "Exporting the image: %s"
 msgstr "Копирование образа: %s"
 
-#: lxc/config.go:761
+#: lxc/config_template.go:279
 msgid "FILENAME"
 msgstr ""
 
-#: lxc/config.go:402 lxc/image.go:233 lxc/image.go:1137
+#: lxc/config_trust.go:174 lxc/image.go:923 lxc/image_alias.go:229
 msgid "FINGERPRINT"
 msgstr ""
 
-#: lxc/utils.go:261
+#: lxc/utils.go:202
 #, c-format
 msgid "Failed to create alias %s"
 msgstr ""
 
-#: lxc/manpage.go:62
-#, c-format
-msgid "Failed to generate 'lxc.%s.1': %v"
-msgstr ""
-
-#: lxc/manpage.go:55
-#, c-format
-msgid "Failed to generate 'lxc.1': %v"
-msgstr ""
-
-#: lxc/copy.go:238
+#: lxc/copy.go:255
 msgid "Failed to get the new container name"
 msgstr ""
 
-#: lxc/utils.go:251
+#: lxc/utils.go:192
 #, c-format
 msgid "Failed to remove alias %s"
 msgstr ""
 
-#: lxc/file.go:137
+#: lxc/file.go:609
 #, c-format
 msgid "Failed to walk path for %s: %s"
 msgstr ""
 
-#: lxc/list.go:137
+#: lxc/list.go:114
 msgid "Fast mode (same as --columns=nsacPt)"
 msgstr ""
 
-#: lxc/network.go:536 lxc/operation.go:121
+#: lxc/network.go:749 lxc/operation.go:126
 msgid "Filtering isn't supported yet"
 msgstr ""
 
-#: lxc/image.go:599
+#: lxc/image.go:824
 #, c-format
 msgid "Fingerprint: %s"
 msgstr ""
 
-#: lxc/exec.go:70
+#: lxc/exec.go:54
 msgid "Force pseudo-terminal allocation"
 msgstr ""
 
-#: lxc/cluster.go:42
-msgid "Force removing a node, even if degraded"
+#: lxc/cluster.go:242
+msgid "Force removing a member, even if degraded"
 msgstr ""
 
-#: lxc/action.go:47 lxc/action.go:48
+#: lxc/action.go:121
 msgid "Force the container to shutdown"
 msgstr ""
 
-#: lxc/delete.go:34 lxc/delete.go:35
+#: lxc/delete.go:34
 msgid "Force the removal of running containers"
 msgstr ""
 
-#: lxc/main.go:53
+#: lxc/main.go:56
 msgid "Force using the local unix socket"
 msgstr ""
 
-#: lxc/image.go:181 lxc/list.go:136
+#: lxc/image.go:913 lxc/list.go:113
 msgid "Format (csv|json|table|yaml)"
 msgstr ""
 
-#: lxc/remote.go:166
+#: lxc/remote.go:211
 msgid "Generating a client certificate. This may take a minute..."
 msgstr ""
 
-#: lxc/network.go:513
+#: lxc/config_device.go:178 lxc/config_device.go:179
+msgid "Get values for container device configuration keys"
+msgstr ""
+
+#: lxc/config.go:288 lxc/config.go:289
+msgid "Get values for container or server configuration keys"
+msgstr ""
+
+#: lxc/network.go:659 lxc/network.go:660
+msgid "Get values for network configuration keys"
+msgstr ""
+
+#: lxc/profile.go:519 lxc/profile.go:520
+msgid "Get values for profile configuration keys"
+msgstr ""
+
+#: lxc/storage.go:327 lxc/storage.go:328
+msgid "Get values for storage pool configuration keys"
+msgstr ""
+
+#: lxc/storage_volume.go:852 lxc/storage_volume.go:853
+msgid "Get values for storage volume configuration keys"
+msgstr ""
+
+#: lxc/network.go:851
 msgid "HOSTNAME"
 msgstr ""
 
-#: lxc/operation.go:152
+#: lxc/operation.go:151
 msgid "ID"
 msgstr ""
 
-#: lxc/network.go:515
+#: lxc/network.go:853
 msgid "IP ADDRESS"
 msgstr ""
 
-#: lxc/list.go:465
+#: lxc/list.go:462
 msgid "IPV4"
 msgstr ""
 
-#: lxc/list.go:466
+#: lxc/list.go:463
 msgid "IPV6"
 msgstr ""
 
-#: lxc/config.go:404
+#: lxc/config_trust.go:176
 msgid "ISSUE DATE"
 msgstr ""
 
-#: lxc/main.go:171
+#: lxc/main.go:259
 msgid ""
 "If this is your first time running LXD on this machine, you should also run: "
 "lxd init"
 msgstr ""
 
-#: lxc/main.go:54
-msgid "Ignore aliases when determining what command to run"
-msgstr ""
-
-#: lxc/action.go:51
-msgid "Ignore the container state (only for start)"
-msgstr ""
+#: lxc/action.go:117
+#, fuzzy
+msgid "Ignore the container state"
+msgstr "Невозможно добавить имя контейнера в список"
 
-#: lxc/image.go:557
+#: lxc/image.go:1268
 msgid "Image already up to date."
 msgstr ""
 
-#: lxc/image.go:463
+#: lxc/image.go:231
 msgid "Image copied successfully!"
 msgstr ""
 
-#: lxc/image.go:982
+#: lxc/image.go:554
 msgid "Image exported successfully!"
 msgstr ""
 
-#: lxc/image.go:778
+#: lxc/image.go:284 lxc/image.go:1235
+msgid "Image identifier missing"
+msgstr ""
+
+#: lxc/image.go:352
+#, c-format
+msgid "Image identifier missing: %s"
+msgstr ""
+
+#: lxc/image.go:749
 #, c-format
 msgid "Image imported with fingerprint: %s"
 msgstr ""
 
-#: lxc/image.go:555
+#: lxc/image.go:1266
 msgid "Image refreshed successfully!"
 msgstr ""
 
-#: lxc/query.go:39
+#: lxc/image.go:571
+msgid ""
+"Import image into the image store\n"
+"\n"
+"Directory import is only available on Linux and must be performed as root."
+msgstr ""
+
+#: lxc/image.go:570
+#, fuzzy
+msgid "Import images into the image store"
+msgstr "Копирование образа: %s"
+
+#: lxc/query.go:38
 msgid "Input data"
 msgstr ""
 
-#: lxc/init.go:149
+#: lxc/init.go:47
 msgid "Instance type"
 msgstr ""
 
-#: lxc/remote.go:118
+#: lxc/remote.go:163
 #, c-format
 msgid "Invalid URL scheme \"%s\" in \"%s\""
 msgstr ""
 
-#: lxc/config.go:383
+#: lxc/config_trust.go:155
 msgid "Invalid certificate"
 msgstr ""
 
-#: lxc/init.go:32 lxc/init.go:37
-msgid "Invalid configuration key"
+#: lxc/list.go:525
+#, c-format
+msgid "Invalid config key '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:520
+#, c-format
+msgid "Invalid config key column format (too many fields): '%s'"
+msgstr ""
+
+#: lxc/image.go:1196 lxc/list.go:386
+#, c-format
+msgid "Invalid format %q"
+msgstr ""
+
+#: lxc/list.go:543
+#, c-format
+msgid "Invalid max width (must -1, 0 or a positive integer) '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:540
+#, c-format
+msgid "Invalid max width (must be an integer) '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:531
+#, c-format
+msgid ""
+"Invalid name in '%s', empty string is only allowed when defining maxWidth"
+msgstr ""
+
+#: lxc/main.go:341
+msgid "Invalid number of arguments"
 msgstr ""
 
-#: lxc/file.go:560
+#: lxc/file.go:97
 #, c-format
 msgid "Invalid path %s"
 msgstr ""
 
-#: lxc/remote.go:107
+#: lxc/remote.go:152
 #, c-format
 msgid "Invalid protocol: %s"
 msgstr ""
 
-#: lxc/file.go:473
+#: lxc/file.go:243
 #, c-format
 msgid "Invalid source %s"
 msgstr ""
 
-#: lxc/file.go:250
+#: lxc/file.go:352
 #, c-format
 msgid "Invalid target %s"
 msgstr ""
 
-#: lxc/info.go:156
+#: lxc/info.go:160
 msgid "Ips:"
 msgstr ""
 
-#: lxc/image.go:179
+#: lxc/image.go:139
 msgid "Keep the image up to date after initial copy"
 msgstr ""
 
-#: lxc/list.go:470
+#: lxc/list.go:467
 msgid "LAST USED AT"
 msgstr ""
 
-#: lxc/list.go:492
+#: lxc/list.go:489
 msgid "LOCATION"
 msgstr ""
 
-#: lxc/main.go:38
-msgid "LXD socket not found; is LXD installed and running?"
+#: lxc/cluster.go:94
+msgid "LXD server isn't part of a cluster"
 msgstr ""
 
-#: lxc/image.go:615
+#: lxc/image.go:844
 #, c-format
 msgid "Last used: %s"
 msgstr ""
 
-#: lxc/image.go:617
+#: lxc/image.go:846
 msgid "Last used: never"
 msgstr ""
 
-#: lxc/info.go:119
-#, c-format
-msgid "Location: %s"
+#: lxc/network.go:807 lxc/network.go:808
+msgid "List DHCP leases"
 msgstr ""
 
-#: lxc/info.go:271
-msgid "Log:"
-msgstr ""
+#: lxc/alias.go:98 lxc/alias.go:99
+#, fuzzy
+msgid "List aliases"
+msgstr "Псевдонимы:"
 
-#: lxc/network.go:514
-msgid "MAC ADDRESS"
+#: lxc/cluster.go:58 lxc/cluster.go:59
+msgid "List all the cluster members"
 msgstr ""
 
-#: lxc/network.go:578
-msgid "MANAGED"
+#: lxc/network.go:718 lxc/network.go:719
+msgid "List available networks"
 msgstr ""
 
-#: lxc/cluster.go:187
-msgid "MESSAGE"
+#: lxc/storage.go:490 lxc/storage.go:491
+msgid "List available storage pools"
 msgstr ""
 
-#: lxc/image.go:177
-msgid "Make image public"
+#: lxc/operation.go:97 lxc/operation.go:98
+msgid "List background operations"
 msgstr ""
 
-#: lxc/publish.go:35
-msgid "Make the image public"
+#: lxc/config_device.go:251 lxc/config_device.go:252
+msgid "List container devices"
 msgstr ""
 
-#: lxc/info.go:193
-msgid "Memory (current)"
+#: lxc/config_template.go:235 lxc/config_template.go:236
+#, fuzzy
+msgid "List container file templates"
+msgstr "Невозможно добавить имя контейнера в список"
+
+#: lxc/list.go:47
+msgid "List containers"
 msgstr ""
 
-#: lxc/info.go:197
+#: lxc/list.go:48
+msgid ""
+"List containers\n"
+"\n"
+"Default column layout: ns46tS\n"
+"Fast column layout: nsacPt\n"
+"\n"
+"== Filters ==\n"
+"A single keyword like \"web\" which will list any container with a name "
+"starting by \"web\".\n"
+"A regular expression on the container name. (e.g. .*web.*01$).\n"
+"A key/value pair referring to a configuration item. For those, the\n"
+"namespace can be abbreviated to the smallest unambiguous identifier.\n"
+"\n"
+"Examples:\n"
+"  - \"user.blah=abc\" will list all containers with the \"blah\" user "
+"property set to \"abc\".\n"
+"  - \"u.blah=abc\" will do the same\n"
+"  - \"security.privileged=true\" will list all privileged containers\n"
+"  - \"s.privileged=true\" will do the same\n"
+"\n"
+"A regular expression matching a configuration item or its value. (e.g. "
+"volatile.eth0.hwaddr=00:16:3e:.*).\n"
+"\n"
+"== Columns ==\n"
+"The -c option takes a comma separated list of arguments that control\n"
+"which container attributes to output when displaying in table or csv\n"
+"format.\n"
+"\n"
+"Column arguments are either pre-defined shorthand chars (see below),\n"
+"or (extended) config keys.\n"
+"\n"
+"Commas between consecutive shorthand chars are optional.\n"
+"\n"
+"Pre-defined column shorthand chars:\n"
+"  4 - IPv4 address\n"
+"  6 - IPv6 address\n"
+"  a - Architecture\n"
+"  b - Storage pool\n"
+"  c - Creation date\n"
+"  d - Description\n"
+"  l - Last used date\n"
+"  n - Name\n"
+"  N - Number of Processes\n"
+"  p - PID of the container's init process\n"
+"  P - Profiles\n"
+"  s - State\n"
+"  S - Number of snapshots\n"
+"  t - Type (persistent or ephemeral)\n"
+"  L - Location of the container (e.g. its node)\n"
+"\n"
+"Custom columns are defined with \"key[:name][:maxWidth]\":\n"
+"  KEY: The (extended) config key to display\n"
+"  NAME: Name to display in the column header.\n"
+"  Defaults to the key if not specified or empty.\n"
+"\n"
+"  MAXWIDTH: Max width of the column (longer results are truncated).\n"
+"  Defaults to -1 (unlimited). Use 0 to limit to the column header size."
+msgstr ""
+
+#: lxc/image_alias.go:148
+msgid "List image aliases"
+msgstr ""
+
+#: lxc/image_alias.go:149
+msgid ""
+"List image aliases\n"
+"\n"
+"Filters may be part of the image hash or part of the image alias name.\n"
+msgstr ""
+
+#: lxc/image.go:889
+msgid "List images"
+msgstr ""
+
+#: lxc/image.go:890
+msgid ""
+"List images\n"
+"\n"
+"Filters may be of the <key>=<value> form for property based filtering,\n"
+"or part of the image hash or part of the image alias name.\n"
+"\n"
+"The -c option takes a (optionally comma-separated) list of arguments\n"
+"that control which image attributes to output when displaying in table\n"
+"or csv format.\n"
+"\n"
+"Default column layout is: lfpdasu\n"
+"\n"
+"Column shorthand chars:\n"
+"\n"
+"    l - Shortest image alias (and optionally number of other aliases)\n"
+"    L - Newline-separated list of all image aliases\n"
+"    f - Fingerprint\n"
+"    p - Whether image is public\n"
+"    d - Description\n"
+"    a - Architecture\n"
+"    s - Size"
+msgstr ""
+
+#: lxc/profile.go:567 lxc/profile.go:568
+msgid "List profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:917 lxc/storage_volume.go:918
+#, fuzzy
+msgid "List storage volumes"
+msgstr "Копирование образа: %s"
+
+#: lxc/remote.go:413 lxc/remote.go:414
+msgid "List the available remotes"
+msgstr ""
+
+#: lxc/config_trust.go:114 lxc/config_trust.go:115
+msgid "List trusted clients"
+msgstr ""
+
+#: lxc/operation.go:24 lxc/operation.go:25
+msgid "List, show and delete background operations"
+msgstr ""
+
+#: lxc/info.go:123
+#, c-format
+msgid "Location: %s"
+msgstr ""
+
+#: lxc/info.go:275
+msgid "Log:"
+msgstr ""
+
+#: lxc/network.go:852
+msgid "MAC ADDRESS"
+msgstr ""
+
+#: lxc/network.go:783
+msgid "MANAGED"
+msgstr ""
+
+#: lxc/cluster.go:123
+msgid "MESSAGE"
+msgstr ""
+
+#: lxc/image.go:137 lxc/image.go:576
+msgid "Make image public"
+msgstr ""
+
+#: lxc/publish.go:38
+msgid "Make the image public"
+msgstr ""
+
+#: lxc/network.go:32
+msgid "Manage an attach containers to networks"
+msgstr ""
+
+#: lxc/network.go:31
+msgid "Manage and attach containers to networks"
+msgstr ""
+
+#: lxc/cluster.go:25 lxc/cluster.go:26
+msgid "Manage cluster members"
+msgstr ""
+
+#: lxc/alias.go:22 lxc/alias.go:23
+msgid "Manage command aliases"
+msgstr ""
+
+#: lxc/config.go:28 lxc/config.go:29
+msgid "Manage container and server configuration options"
+msgstr ""
+
+#: lxc/config_device.go:23 lxc/config_device.go:24
+msgid "Manage container devices"
+msgstr ""
+
+#: lxc/config_template.go:29 lxc/config_template.go:30
+#, fuzzy
+msgid "Manage container file templates"
+msgstr "Невозможно добавить имя контейнера в список"
+
+#: lxc/config_metadata.go:28 lxc/config_metadata.go:29
+#, fuzzy
+msgid "Manage container metadata files"
+msgstr "Невозможно добавить имя контейнера в список"
+
+#: lxc/file.go:39 lxc/file.go:40
+msgid "Manage files in containers"
+msgstr ""
+
+#: lxc/image_alias.go:25 lxc/image_alias.go:26
+msgid "Manage image aliases"
+msgstr ""
+
+#: lxc/image.go:41
+msgid "Manage images"
+msgstr ""
+
+#: lxc/image.go:42
+msgid ""
+"Manage images\n"
+"\n"
+"In LXD containers are created from images. Those images were themselves\n"
+"either generated from an existing container or downloaded from an image\n"
+"server.\n"
+"\n"
+"When using remote images, LXD will automatically cache images for you\n"
+"and remove them upon expiration.\n"
+"\n"
+"The image unique identifier is the hash (sha-256) of its representation\n"
+"as a compressed tarball (or for split images, the concatenation of the\n"
+"metadata and rootfs tarballs).\n"
+"\n"
+"Images can be referenced by their full hash, shortest unique partial\n"
+"hash or alias name (if one is set)."
+msgstr ""
+
+#: lxc/profile.go:29 lxc/profile.go:30
+msgid "Manage profiles"
+msgstr ""
+
+#: lxc/storage.go:32 lxc/storage.go:33
+#, fuzzy
+msgid "Manage storage pools and volumes"
+msgstr "Копирование образа: %s"
+
+#: lxc/storage_volume.go:33
+#, fuzzy
+msgid "Manage storage volumes"
+msgstr "Копирование образа: %s"
+
+#: lxc/storage_volume.go:34
+msgid ""
+"Manage storage volumes\n"
+"\n"
+"Unless specified through a prefix, all volume operations affect \"custom"
+"\" (user created) volumes."
+msgstr ""
+
+#: lxc/remote.go:33 lxc/remote.go:34
+msgid "Manage the list of remote servers"
+msgstr ""
+
+#: lxc/config_trust.go:29 lxc/config_trust.go:30
+#, fuzzy
+msgid "Manage trusted clients"
+msgstr "Копирование образа: %s"
+
+#: lxc/info.go:197
+msgid "Memory (current)"
+msgstr ""
+
+#: lxc/info.go:201
 msgid "Memory (peak)"
 msgstr ""
 
-#: lxc/info.go:209
+#: lxc/info.go:213
 #, fuzzy
 msgid "Memory usage:"
 msgstr " Использование памяти:"
 
-#: lxc/monitor.go:70
+#: lxc/monitor.go:49
 msgid "Minimum level for log messages"
 msgstr ""
 
-#: lxc/utils.go:143
-msgid "Missing summary."
+#: lxc/config_metadata.go:102 lxc/config_metadata.go:200
+#: lxc/config_template.go:91 lxc/config_template.go:134
+#: lxc/config_template.go:176 lxc/config_template.go:260
+#: lxc/config_template.go:322 lxc/profile.go:197 lxc/profile.go:656
+#, fuzzy
+msgid "Missing container name"
+msgstr "Имя контейнера: %s"
+
+#: lxc/profile.go:126
+msgid "Missing container.name name"
+msgstr ""
+
+#: lxc/config_device.go:103 lxc/config_device.go:203 lxc/config_device.go:276
+#: lxc/config_device.go:342 lxc/config_device.go:429 lxc/config_device.go:517
+#: lxc/config_device.go:606
+msgid "Missing name"
+msgstr ""
+
+#: lxc/network.go:128 lxc/network.go:201 lxc/network.go:344 lxc/network.go:391
+#: lxc/network.go:476 lxc/network.go:581 lxc/network.go:686 lxc/network.go:832
+#: lxc/network.go:897 lxc/network.go:946 lxc/network.go:1015
+msgid "Missing network name"
+msgstr ""
+
+#: lxc/storage.go:185 lxc/storage.go:252 lxc/storage.go:353 lxc/storage.go:408
+#: lxc/storage.go:603 lxc/storage.go:677 lxc/storage_volume.go:146
+#: lxc/storage_volume.go:225 lxc/storage_volume.go:451
+#: lxc/storage_volume.go:526 lxc/storage_volume.go:585
+#: lxc/storage_volume.go:667 lxc/storage_volume.go:766
+#: lxc/storage_volume.go:878 lxc/storage_volume.go:942
+#: lxc/storage_volume.go:1050 lxc/storage_volume.go:1114
+#: lxc/storage_volume.go:1197
+msgid "Missing pool name"
+msgstr ""
+
+#: lxc/profile.go:321 lxc/profile.go:372 lxc/profile.go:444 lxc/profile.go:544
+#: lxc/profile.go:729 lxc/profile.go:777 lxc/profile.go:836
+msgid "Missing profile name"
+msgstr ""
+
+#: lxc/profile.go:266
+msgid "Missing source profile name"
+msgstr ""
+
+#: lxc/storage_volume.go:311
+#, fuzzy
+msgid "Missing source volume name"
+msgstr "Копирование образа: %s"
+
+#: lxc/file.go:446
+msgid "Missing target directory"
+msgstr ""
+
+#: lxc/monitor.go:30
+msgid "Monitor a local or remote LXD server"
+msgstr ""
+
+#: lxc/monitor.go:31
+msgid ""
+"Monitor a local or remote LXD server\n"
+"\n"
+"By default the monitor will listen to all message types."
 msgstr ""
 
-#: lxc/network.go:303 lxc/network.go:356 lxc/storage.go:435 lxc/storage.go:565
+#: lxc/network.go:411 lxc/network.go:496 lxc/storage_volume.go:605
+#: lxc/storage_volume.go:686
 msgid "More than one device matches, specify the device name."
 msgstr ""
 
-#: lxc/file.go:460
+#: lxc/file.go:224
 msgid "More than one file to download, but target is not a directory"
 msgstr ""
 
-#: lxc/move.go:42
+#: lxc/move.go:30 lxc/move.go:31
+msgid "Move containers within or in between LXD instances"
+msgstr ""
+
+#: lxc/storage_volume.go:993 lxc/storage_volume.go:994
+#, fuzzy
+msgid "Move storage volumes between pools"
+msgstr "Копирование образа: %s"
+
+#: lxc/move.go:44
 msgid "Move the container without its snapshots"
 msgstr ""
 
-#: lxc/storage.go:1128
+#: lxc/storage_volume.go:375
 #, fuzzy, c-format
 msgid "Moving the storage volume: %s"
 msgstr "Копирование образа: %s"
 
-#: lxc/image.go:1292
+#: lxc/image.go:588
 msgid "Must run as root to import from directory"
 msgstr ""
 
-#: lxc/action.go:74
+#: lxc/action.go:147
 msgid "Must supply container name for: "
 msgstr ""
 
-#: lxc/cluster.go:183 lxc/list.go:471 lxc/network.go:576 lxc/profile.go:573
-#: lxc/remote.go:409 lxc/storage.go:731 lxc/storage.go:936
+#: lxc/cluster.go:119 lxc/list.go:468 lxc/network.go:781 lxc/profile.go:613
+#: lxc/remote.go:463 lxc/storage.go:544 lxc/storage_volume.go:966
 msgid "NAME"
 msgstr ""
 
-#: lxc/network.go:558 lxc/operation.go:139 lxc/remote.go:380 lxc/remote.go:385
+#: lxc/network.go:763 lxc/operation.go:138 lxc/remote.go:434 lxc/remote.go:439
 msgid "NO"
 msgstr ""
 
-#: lxc/storage.go:941
+#: lxc/storage_volume.go:971
 msgid "NODE"
 msgstr ""
 
-#: lxc/info.go:117
+#: lxc/info.go:121
 #, c-format
 msgid "Name: %s"
 msgstr ""
 
-#: lxc/network.go:276
+#: lxc/network.go:303
 #, c-format
 msgid "Network %s created"
 msgstr ""
 
-#: lxc/network.go:393
+#: lxc/network.go:353
 #, c-format
 msgid "Network %s deleted"
 msgstr ""
 
-#: lxc/network.go:274
+#: lxc/network.go:301
 #, c-format
 msgid "Network %s pending on node %s"
 msgstr ""
 
-#: lxc/network.go:470
+#: lxc/network.go:906
 #, c-format
 msgid "Network %s renamed to %s"
 msgstr ""
 
-#: lxc/init.go:145 lxc/init.go:146
+#: lxc/init.go:45
 msgid "Network name"
 msgstr ""
 
-#: lxc/info.go:226
+#: lxc/info.go:230
 #, fuzzy
 msgid "Network usage:"
 msgstr " Использование сети:"
 
-#: lxc/image.go:180 lxc/publish.go:36
+#: lxc/publish.go:39
 msgid "New alias to define at target"
 msgstr ""
 
-#: lxc/config.go:414
-msgid "No certificate provided to add"
+#: lxc/image.go:140 lxc/image.go:577
+msgid "New aliases to add to the image"
 msgstr ""
 
-#: lxc/network.go:312 lxc/network.go:365
+#: lxc/network.go:420 lxc/network.go:505
 msgid "No device found for this network"
 msgstr ""
 
-#: lxc/storage.go:444 lxc/storage.go:574
+#: lxc/storage_volume.go:614 lxc/storage_volume.go:695
 msgid "No device found for this storage volume."
 msgstr ""
 
-#: lxc/config.go:446
-msgid "No fingerprint specified."
-msgstr ""
-
-#: lxc/cluster.go:143
+#: lxc/cluster.go:268
 #, c-format
 msgid "Node %s removed"
 msgstr ""
 
-#: lxc/cluster.go:119
+#: lxc/cluster.go:221
 #, c-format
 msgid "Node %s renamed to %s"
 msgstr ""
 
-#: lxc/copy.go:46 lxc/init.go:150 lxc/move.go:45 lxc/network.go:105
-#: lxc/storage.go:165
+#: lxc/copy.go:45 lxc/init.go:48 lxc/move.go:47
 msgid "Node name"
 msgstr ""
 
-#: lxc/storage.go:388 lxc/storage.go:481
+#: lxc/storage_volume.go:164 lxc/storage_volume.go:243
 msgid "Only \"custom\" volumes can be attached to containers."
 msgstr ""
 
-#: lxc/remote.go:101
+#: lxc/remote.go:146
 msgid "Only https URLs are supported for simplestreams"
 msgstr ""
 
-#: lxc/image.go:688
+#: lxc/image.go:658
 msgid "Only https:// is supported for remote image import."
 msgstr ""
 
-#: lxc/network.go:421 lxc/network.go:605
+#: lxc/network.go:607 lxc/network.go:960
 msgid "Only managed networks can be modified."
 msgstr ""
 
-#: lxc/operation.go:85
+#: lxc/operation.go:83
 #, c-format
 msgid "Operation %s deleted"
 msgstr ""
 
-#: lxc/help.go:71 lxc/main.go:139 lxc/main.go:195
-msgid "Options:"
-msgstr ""
-
-#: lxc/exec.go:69
+#: lxc/exec.go:53
 msgid "Override the terminal mode (auto, interactive or non-interactive)"
 msgstr ""
 
-#: lxc/list.go:641
+#: lxc/list.go:638
 msgid "PERSISTENT"
 msgstr ""
 
-#: lxc/list.go:473
+#: lxc/list.go:470
 msgid "PID"
 msgstr ""
 
-#: lxc/list.go:472
+#: lxc/list.go:469
 msgid "PROCESSES"
 msgstr ""
 
-#: lxc/list.go:474
+#: lxc/list.go:471
 msgid "PROFILES"
 msgstr ""
 
-#: lxc/remote.go:411
+#: lxc/remote.go:465
 msgid "PROTOCOL"
 msgstr ""
 
-#: lxc/image.go:234 lxc/remote.go:413
+#: lxc/image.go:924 lxc/remote.go:467
 msgid "PUBLIC"
 msgstr ""
 
-#: lxc/info.go:220
+#: lxc/info.go:224
 msgid "Packets received"
 msgstr ""
 
-#: lxc/info.go:221
+#: lxc/info.go:225
 msgid "Packets sent"
 msgstr ""
 
-#: lxc/help.go:78
-msgid "Path to an alternate client configuration directory"
-msgstr ""
-
-#: lxc/help.go:79
-msgid "Path to an alternate server directory"
-msgstr ""
-
-#: lxc/main.go:240
-msgid "Pause containers."
-msgstr ""
-
-#: lxc/main.go:42
-msgid "Permission denied, are you in the lxd group?"
+#: lxc/action.go:48 lxc/action.go:49
+msgid "Pause containers"
 msgstr ""
 
-#: lxc/info.go:138
+#: lxc/info.go:142
 #, c-format
 msgid "Pid: %d"
 msgstr ""
 
-#: lxc/network.go:446 lxc/profile.go:276 lxc/storage.go:648 lxc/storage.go:1210
+#: lxc/network.go:632 lxc/profile.go:491 lxc/storage.go:299
+#: lxc/storage_volume.go:823
 msgid "Press enter to open the editor again"
 msgstr ""
 
-#: lxc/config.go:822 lxc/config.go:887 lxc/config.go:1397 lxc/config.go:1447
-#: lxc/image.go:1192
+#: lxc/config.go:196 lxc/config.go:260 lxc/config_metadata.go:145
+#: lxc/config_template.go:205 lxc/image.go:406
 msgid "Press enter to start the editor again"
 msgstr ""
 
-#: lxc/monitor.go:68
+#: lxc/monitor.go:47
 msgid "Pretty rendering"
 msgstr ""
 
-#: lxc/help.go:73
-msgid "Print debug information"
-msgstr ""
-
-#: lxc/help.go:72
-msgid "Print less common commands"
+#: lxc/main.go:55
+msgid "Print help"
 msgstr ""
 
-#: lxc/query.go:37
+#: lxc/query.go:36
 msgid "Print the raw response"
 msgstr ""
 
-#: lxc/help.go:74
-msgid "Print verbose information"
+#: lxc/main.go:54
+msgid "Print version number"
 msgstr ""
 
-#: lxc/info.go:162
+#: lxc/info.go:166
 #, c-format
 msgid "Processes: %d"
 msgstr ""
 
-#: lxc/profile.go:362
+#: lxc/main_aliases.go:123 lxc/main_aliases.go:131
+#, fuzzy, c-format
+msgid "Processing aliases failed: %s\n"
+msgstr "Невозможно добавить имя контейнера в список"
+
+#: lxc/profile.go:147
 #, c-format
 msgid "Profile %s added to %s"
 msgstr ""
 
-#: lxc/profile.go:226
+#: lxc/profile.go:333
 #, c-format
 msgid "Profile %s created"
 msgstr ""
 
-#: lxc/profile.go:310
+#: lxc/profile.go:381
 #, c-format
 msgid "Profile %s deleted"
 msgstr ""
 
-#: lxc/profile.go:397
+#: lxc/profile.go:690
 #, c-format
 msgid "Profile %s removed from %s"
 msgstr ""
 
-#: lxc/profile.go:300
+#: lxc/profile.go:738
 #, c-format
 msgid "Profile %s renamed to %s"
 msgstr ""
 
-#: lxc/copy.go:39 lxc/copy.go:40 lxc/init.go:141 lxc/init.go:142
+#: lxc/copy.go:40 lxc/init.go:43
 msgid "Profile to apply to the new container"
 msgstr ""
 
-#: lxc/profile.go:339
+#: lxc/profile.go:225
 #, c-format
 msgid "Profiles %s applied to %s"
 msgstr ""
 
-#: lxc/info.go:136
+#: lxc/info.go:140
 #, c-format
 msgid "Profiles: %s"
 msgstr ""
 
-#: lxc/image.go:619
+#: lxc/image.go:849
 msgid "Properties:"
 msgstr ""
 
-#: lxc/remote.go:72
+#: lxc/remote.go:92
 msgid "Public image server"
 msgstr ""
 
-#: lxc/image.go:602
+#: lxc/image.go:827
 #, c-format
 msgid "Public: %s"
 msgstr ""
 
-#: lxc/file.go:68 lxc/file.go:69
-msgid "Recursively push or pull files"
+#: lxc/publish.go:33 lxc/publish.go:34
+msgid "Publish containers as images"
+msgstr ""
+
+#: lxc/file.go:184 lxc/file.go:185
+msgid "Pull files from containers"
+msgstr ""
+
+#: lxc/file.go:323 lxc/file.go:324
+msgid "Push files into containers"
+msgstr ""
+
+#: lxc/file.go:192 lxc/file.go:330
+msgid "Recursively transfer files"
 msgstr ""
 
-#: lxc/image.go:529
+#: lxc/image.go:1211 lxc/image.go:1212
+#, fuzzy
+msgid "Refresh images"
+msgstr "Копирование образа: %s"
+
+#: lxc/image.go:1239
 #, fuzzy, c-format
 msgid "Refreshing the image: %s"
 msgstr "Копирование образа: %s"
 
-#: lxc/remote.go:69
+#: lxc/remote.go:515
+#, c-format
+msgid "Remote %s already exists"
+msgstr ""
+
+#: lxc/remote.go:507 lxc/remote.go:569 lxc/remote.go:618 lxc/remote.go:656
+#, c-format
+msgid "Remote %s doesn't exist"
+msgstr ""
+
+#: lxc/remote.go:116
+#, c-format
+msgid "Remote %s exists as <%s>"
+msgstr ""
+
+#: lxc/remote.go:511 lxc/remote.go:573 lxc/remote.go:660
+#, c-format
+msgid "Remote %s is static and cannot be modified"
+msgstr ""
+
+#: lxc/remote.go:89
 msgid "Remote admin password"
 msgstr ""
 
@@ -1128,7 +1886,7 @@ msgstr ""
 msgid "Remote operation canceled by user"
 msgstr ""
 
-#: lxc/info.go:122
+#: lxc/info.go:126
 #, c-format
 msgid "Remote: %s"
 msgstr ""
@@ -1138,1068 +1896,1092 @@ msgstr ""
 msgid "Remove %s (yes/no): "
 msgstr ""
 
-#: lxc/storage.go:1247
-#, c-format
-msgid "Renamed storage volume from \"%s\" to \"%s\""
+#: lxc/cluster.go:237 lxc/cluster.go:238
+msgid "Remove a member from the cluster"
 msgstr ""
 
-#: lxc/delete.go:36 lxc/delete.go:37
-msgid "Require user confirmation"
+#: lxc/alias.go:197 lxc/alias.go:198
+msgid "Remove aliases"
 msgstr ""
 
-#: lxc/info.go:159
-msgid "Resources:"
-msgstr ""
+#: lxc/config_device.go:404 lxc/config_device.go:405
+#, fuzzy
+msgid "Remove container devices"
+msgstr "Невозможно добавить имя контейнера в список"
 
-#: lxc/main.go:248
-msgid "Restart containers."
+#: lxc/profile.go:631 lxc/profile.go:632
+msgid "Remove profiles from containers"
 msgstr ""
 
-#: lxc/console.go:38
-msgid "Retrieve the container's console log"
+#: lxc/remote.go:548 lxc/remote.go:549
+msgid "Remove remotes"
 msgstr ""
 
-#: lxc/init.go:293
-#, c-format
-msgid "Retrieving image: %s"
+#: lxc/config_trust.go:196 lxc/config_trust.go:197
+msgid "Remove trusted clients"
 msgstr ""
 
-#: lxc/action.go:52
-msgid "Run command against all containers"
+#: lxc/cluster.go:191 lxc/cluster.go:192
+msgid "Rename a cluster member"
 msgstr ""
 
-#: lxc/image.go:237
-msgid "SIZE"
+#: lxc/alias.go:146 lxc/alias.go:147 lxc/image_alias.go:249
+#: lxc/image_alias.go:250
+msgid "Rename aliases"
 msgstr ""
 
-#: lxc/list.go:475
-msgid "SNAPSHOTS"
+#: lxc/rename.go:19 lxc/rename.go:20
+#, fuzzy
+msgid "Rename containers and snapshots"
+msgstr "Невозможно добавить имя контейнера в список"
+
+#: lxc/network.go:872 lxc/network.go:873
+msgid "Rename networks"
 msgstr ""
 
-#: lxc/storage.go:738
-msgid "SOURCE"
+#: lxc/profile.go:704 lxc/profile.go:705
+msgid "Rename profiles"
 msgstr ""
 
-#: lxc/cluster.go:186 lxc/list.go:476 lxc/network.go:583 lxc/storage.go:736
-msgid "STATE"
+#: lxc/remote.go:486 lxc/remote.go:487
+msgid "Rename remotes"
 msgstr ""
 
-#: lxc/remote.go:414
-msgid "STATIC"
+#: lxc/storage_volume.go:1024 lxc/storage_volume.go:1025
+#, fuzzy
+msgid "Rename storage volumes"
+msgstr "Копирование образа: %s"
+
+#: lxc/storage_volume.go:1073
+#, c-format
+msgid "Renamed storage volume from \"%s\" to \"%s\""
 msgstr ""
 
-#: lxc/operation.go:155
-msgid "STATUS"
+#: lxc/delete.go:35
+msgid "Require user confirmation"
 msgstr ""
 
-#: lxc/list.go:478
-msgid "STORAGE POOL"
+#: lxc/info.go:163
+msgid "Resources:"
 msgstr ""
 
-#: lxc/remote.go:71
-msgid "Server authentication type (tls or macaroons)"
+#: lxc/action.go:68
+msgid "Restart containers"
 msgstr ""
 
-#: lxc/remote.go:211
-msgid "Server certificate NACKed by user"
+#: lxc/action.go:69
+msgid ""
+"Restart containers\n"
+"\n"
+"The opposite of \"lxc pause\" is \"lxc start\"."
 msgstr ""
 
-#: lxc/remote.go:311
-msgid "Server doesn't trust us after authentication"
+#: lxc/restore.go:23
+msgid "Restore containers from snapshots"
 msgstr ""
 
-#: lxc/remote.go:70
+#: lxc/restore.go:24
+msgid ""
+"Restore containers from snapshots\n"
+"\n"
+"If --stateful is passed, then the running state will be restored too."
+msgstr ""
+
+#: lxc/console.go:39
+msgid "Retrieve the container's console log"
+msgstr ""
+
+#: lxc/init.go:201
+#, c-format
+msgid "Retrieving image: %s"
+msgstr ""
+
+#: lxc/action.go:112
+msgid "Run command against all containers"
+msgstr ""
+
+#: lxc/image.go:927
+msgid "SIZE"
+msgstr ""
+
+#: lxc/list.go:472
+msgid "SNAPSHOTS"
+msgstr ""
+
+#: lxc/storage.go:551
+msgid "SOURCE"
+msgstr ""
+
+#: lxc/cluster.go:122 lxc/list.go:473 lxc/network.go:788 lxc/storage.go:549
+msgid "STATE"
+msgstr ""
+
+#: lxc/remote.go:468
+msgid "STATIC"
+msgstr ""
+
+#: lxc/operation.go:154
+msgid "STATUS"
+msgstr ""
+
+#: lxc/list.go:475
+msgid "STORAGE POOL"
+msgstr ""
+
+#: lxc/query.go:26 lxc/query.go:27
+msgid "Send a raw query to LXD"
+msgstr ""
+
+#: lxc/remote.go:91
+msgid "Server authentication type (tls or macaroons)"
+msgstr ""
+
+#: lxc/remote.go:260
+msgid "Server certificate NACKed by user"
+msgstr ""
+
+#: lxc/remote.go:360
+msgid "Server doesn't trust us after authentication"
+msgstr ""
+
+#: lxc/remote.go:90
 msgid "Server protocol (lxd or simplestreams)"
 msgstr ""
 
-#: lxc/file.go:66
+#: lxc/config_device.go:492 lxc/config_device.go:493
+msgid "Set container device configuration keys"
+msgstr ""
+
+#: lxc/config.go:354 lxc/config.go:355
+msgid "Set container or server configuration keys"
+msgstr ""
+
+#: lxc/network.go:919 lxc/network.go:920
+msgid "Set network configuration keys"
+msgstr ""
+
+#: lxc/profile.go:752 lxc/profile.go:753
+msgid "Set profile configuration keys"
+msgstr ""
+
+#: lxc/storage.go:572 lxc/storage.go:573
+msgid "Set storage pool configuration keys"
+msgstr ""
+
+#: lxc/storage_volume.go:1088 lxc/storage_volume.go:1089
+msgid "Set storage volume configuration keys"
+msgstr ""
+
+#: lxc/remote.go:635 lxc/remote.go:636
+msgid "Set the URL for the remote"
+msgstr ""
+
+#: lxc/remote.go:597 lxc/remote.go:598
+msgid "Set the default remote"
+msgstr ""
+
+#: lxc/file.go:333
 msgid "Set the file's gid on push"
 msgstr ""
 
-#: lxc/file.go:67
+#: lxc/file.go:334
 msgid "Set the file's perms on push"
 msgstr ""
 
-#: lxc/file.go:65
+#: lxc/file.go:332
 msgid "Set the file's uid on push"
 msgstr ""
 
-#: lxc/help.go:29
-msgid "Show all commands (not just interesting ones)"
+#: lxc/main.go:57
+msgid "Show all debug messages"
 msgstr ""
 
-#: lxc/help.go:75
-msgid "Show client version"
+#: lxc/main.go:58
+msgid "Show all information messages"
 msgstr ""
 
-#: lxc/info.go:40
+#: lxc/config_metadata.go:175 lxc/config_metadata.go:176
+#, fuzzy
+msgid "Show container metadata files"
+msgstr "Невозможно добавить имя контейнера в список"
+
+#: lxc/config.go:451 lxc/config.go:452
+msgid "Show container or server configurations"
+msgstr ""
+
+#: lxc/info.go:28 lxc/info.go:29
+msgid "Show container or server information"
+msgstr ""
+
+#: lxc/config_template.go:297 lxc/config_template.go:298
+#, fuzzy
+msgid "Show content of container file templates"
+msgstr "Невозможно добавить имя контейнера в список"
+
+#: lxc/cluster.go:141 lxc/cluster.go:142
+msgid "Show details of a cluster member"
+msgstr ""
+
+#: lxc/operation.go:173 lxc/operation.go:174
+msgid "Show details on a background operation"
+msgstr ""
+
+#: lxc/config_device.go:581 lxc/config_device.go:582
+msgid "Show full device configuration for containers or profiles"
+msgstr ""
+
+#: lxc/image.go:1284 lxc/image.go:1285
+msgid "Show image properties"
+msgstr ""
+
+#: lxc/main.go:61
+msgid "Show less common commands"
+msgstr ""
+
+#: lxc/network.go:988 lxc/network.go:989
+msgid "Show network configurations"
+msgstr ""
+
+#: lxc/profile.go:811 lxc/profile.go:812
+msgid "Show profile configurations"
+msgstr ""
+
+#: lxc/storage.go:644 lxc/storage.go:645
+msgid "Show storage pool configurations and resources"
+msgstr ""
+
+#: lxc/storage_volume.go:1165
+msgid "Show storage volum configurations"
+msgstr ""
+
+#: lxc/storage_volume.go:1166
+msgid "Show storage volume configurations"
+msgstr ""
+
+#: lxc/info.go:39
 msgid "Show the container's last 100 log lines?"
 msgstr ""
 
-#: lxc/config.go:36
+#: lxc/remote.go:379 lxc/remote.go:380
+msgid "Show the default remote"
+msgstr ""
+
+#: lxc/config.go:455
 msgid "Show the expanded configuration"
 msgstr ""
 
-#: lxc/info.go:41
+#: lxc/info.go:40
 msgid "Show the resources available to the server"
 msgstr ""
 
-#: lxc/storage.go:163
+#: lxc/storage.go:648
 msgid "Show the resources available to the storage pool"
 msgstr ""
 
-#: lxc/storage.go:164
+#: lxc/storage.go:386
 msgid "Show the used and free space in bytes"
 msgstr ""
 
-#: lxc/image.go:600
+#: lxc/image.go:775 lxc/image.go:776
+msgid "Show useful information about images"
+msgstr ""
+
+#: lxc/storage.go:382 lxc/storage.go:383
+msgid "Show useful information about storage pools"
+msgstr ""
+
+#: lxc/image.go:825
 #, c-format
 msgid "Size: %.2fMB"
 msgstr ""
 
-#: lxc/info.go:240
+#: lxc/info.go:244
 msgid "Snapshots:"
 msgstr ""
 
-#: lxc/action.go:163
+#: lxc/action.go:242
 #, fuzzy, c-format
 msgid "Some containers failed to %s"
 msgstr "Невозможно добавить имя контейнера в список"
 
-#: lxc/image.go:634
+#: lxc/image.go:867
 msgid "Source:"
 msgstr ""
 
-#: lxc/main.go:258
-msgid "Start containers."
+#: lxc/action.go:29 lxc/action.go:30
+msgid "Start containers"
 msgstr ""
 
-#: lxc/launch.go:59
+#: lxc/launch.go:62
 #, c-format
 msgid "Starting %s"
 msgstr ""
 
-#: lxc/info.go:130
+#: lxc/info.go:134
 #, c-format
 msgid "Status: %s"
 msgstr ""
 
-#: lxc/main.go:264
-msgid "Stop containers."
-msgstr ""
+#: lxc/action.go:90 lxc/action.go:91
+#, fuzzy
+msgid "Stop containers"
+msgstr "Невозможно добавить имя контейнера в список"
 
-#: lxc/publish.go:37 lxc/publish.go:38
+#: lxc/publish.go:40
 msgid "Stop the container if currently running"
 msgstr ""
 
-#: lxc/publish.go:136
+#: lxc/publish.go:144
 msgid "Stopping container failed!"
 msgstr ""
 
-#: lxc/delete.go:121
+#: lxc/delete.go:120
 #, fuzzy, c-format
 msgid "Stopping the container failed: %s"
 msgstr "Невозможно добавить имя контейнера в список"
 
-#: lxc/storage.go:538
+#: lxc/storage.go:144
 #, c-format
 msgid "Storage pool %s created"
 msgstr ""
 
-#: lxc/storage.go:598
+#: lxc/storage.go:194
 #, c-format
 msgid "Storage pool %s deleted"
 msgstr ""
 
-#: lxc/storage.go:536
+#: lxc/storage.go:142
 #, c-format
 msgid "Storage pool %s pending on node %s"
 msgstr ""
 
-#: lxc/init.go:147 lxc/init.go:148
+#: lxc/init.go:46
 msgid "Storage pool name"
 msgstr ""
 
-#: lxc/storage.go:980
+#: lxc/storage_volume.go:484
 #, c-format
 msgid "Storage volume %s created"
 msgstr ""
 
-#: lxc/storage.go:1000
+#: lxc/storage_volume.go:545
 #, c-format
 msgid "Storage volume %s deleted"
 msgstr ""
 
-#: lxc/storage.go:1135
+#: lxc/storage_volume.go:388
 msgid "Storage volume copied successfully!"
 msgstr ""
 
-#: lxc/storage.go:1129
+#: lxc/storage_volume.go:376
 msgid "Storage volume moved successfully!"
 msgstr ""
 
-#: lxc/action.go:50
-msgid "Store the container state (only for stop)"
-msgstr ""
+#: lxc/action.go:115
+#, fuzzy
+msgid "Store the container state"
+msgstr "Невозможно добавить имя контейнера в список"
 
-#: lxc/info.go:201
+#: lxc/info.go:205
 msgid "Swap (current)"
 msgstr ""
 
-#: lxc/info.go:205
+#: lxc/info.go:209
 msgid "Swap (peak)"
 msgstr ""
 
-#: lxc/alias.go:85
+#: lxc/alias.go:128
 msgid "TARGET"
 msgstr ""
 
-#: lxc/list.go:477 lxc/network.go:516 lxc/network.go:577 lxc/operation.go:153
-#: lxc/storage.go:935
+#: lxc/list.go:474 lxc/network.go:782 lxc/network.go:854 lxc/operation.go:152
+#: lxc/storage_volume.go:965
 msgid "TYPE"
 msgstr ""
 
-#: lxc/delete.go:105
+#: lxc/delete.go:104
 msgid "The container is currently running, stop it first or pass --force."
 msgstr ""
 
-#: lxc/publish.go:101
+#: lxc/publish.go:109
 msgid ""
 "The container is currently running. Use --force to have it stopped and "
 "restarted."
 msgstr ""
 
-#: lxc/init.go:372
+#: lxc/init.go:280
 msgid "The container you are starting doesn't have any network attached to it."
 msgstr ""
 
-#: lxc/config.go:944 lxc/config.go:961 lxc/config.go:1240
+#: lxc/config_device.go:130 lxc/config_device.go:147 lxc/config_device.go:354
 msgid "The device already exists"
 msgstr ""
 
-#: lxc/config.go:1007 lxc/config.go:1019 lxc/config.go:1055 lxc/config.go:1073
-#: lxc/config.go:1119 lxc/config.go:1136 lxc/config.go:1179 lxc/config.go:1197
+#: lxc/config_device.go:218 lxc/config_device.go:230 lxc/config_device.go:442
+#: lxc/config_device.go:460 lxc/config_device.go:533 lxc/config_device.go:550
 msgid "The device doesn't exist"
 msgstr ""
 
-#: lxc/init.go:356
+#: lxc/init.go:264
 #, c-format
 msgid "The local image '%s' couldn't be found, trying '%s:%s' instead."
 msgstr ""
 
-#: lxc/init.go:352
+#: lxc/init.go:260
 #, c-format
 msgid "The local image '%s' couldn't be found, trying '%s:' instead."
 msgstr ""
 
-#: lxc/action.go:35
-msgid "The opposite of \"lxc pause\" is \"lxc start\"."
-msgstr ""
-
-#: lxc/config.go:1245
+#: lxc/config_device.go:359
 msgid "The profile device doesn't exist"
 msgstr ""
 
-#: lxc/network.go:317 lxc/network.go:370 lxc/storage.go:449 lxc/storage.go:579
+#: lxc/network.go:425 lxc/network.go:510 lxc/storage_volume.go:619
+#: lxc/storage_volume.go:700
 msgid "The specified device doesn't exist"
 msgstr ""
 
-#: lxc/network.go:321 lxc/network.go:374
+#: lxc/network.go:429 lxc/network.go:514
 msgid "The specified device doesn't match the network"
 msgstr ""
 
-#: lxc/publish.go:74
+#: lxc/publish.go:82
 msgid "There is no \"image name\".  Did you want an alias?"
 msgstr ""
 
-#: lxc/help.go:47
-msgid ""
-"This is the LXD command line client.\n"
-"\n"
-"All of LXD's features can be driven through the various commands below.\n"
-"For help with any of those, simply call them with --help."
-msgstr ""
-
-#: lxc/action.go:46
+#: lxc/action.go:122
 msgid "Time to wait for the container before killing it"
 msgstr ""
 
-#: lxc/image.go:603
+#: lxc/image.go:828
 msgid "Timestamps:"
 msgstr ""
 
-#: lxc/init.go:374
+#: lxc/init.go:282
 msgid "To attach a network to a container, use: lxc network attach"
 msgstr ""
 
-#: lxc/init.go:373
+#: lxc/init.go:281
 msgid "To create a new network, use: lxc network create"
 msgstr ""
 
-#: lxc/console.go:173
+#: lxc/console.go:185
 msgid "To detach from the console, press: <ctrl>+a q"
 msgstr ""
 
-#: lxc/main.go:172
+#: lxc/main.go:260
 msgid "To start your first container, try: lxc launch ubuntu:16.04"
 msgstr ""
 
-#: lxc/copy.go:43 lxc/move.go:43
+#: lxc/storage_volume.go:997
+msgid "Transfer mode, one of pull (default), push or relay"
+msgstr ""
+
+#: lxc/copy.go:42
+msgid "Transfer mode. One of pull (default), push or relay"
+msgstr ""
+
+#: lxc/move.go:45 lxc/storage_volume.go:286
 msgid "Transfer mode. One of pull (default), push or relay."
 msgstr ""
 
-#: lxc/copy.go:212
+#: lxc/copy.go:229
 #, c-format
 msgid "Transferring container: %s"
 msgstr ""
 
-#: lxc/image.go:717
+#: lxc/image.go:687
 #, c-format
 msgid "Transferring image: %s"
 msgstr ""
 
-#: lxc/action.go:108 lxc/launch.go:77
+#: lxc/action.go:181 lxc/launch.go:80
 #, c-format
 msgid "Try `lxc info --show-log %s` for more info"
 msgstr ""
 
-#: lxc/info.go:132
+#: lxc/info.go:136
 msgid "Type: ephemeral"
 msgstr ""
 
-#: lxc/info.go:134
+#: lxc/info.go:138
 msgid "Type: persistent"
 msgstr ""
 
-#: lxc/image.go:238
+#: lxc/image.go:928
 msgid "UPLOAD DATE"
 msgstr ""
 
-#: lxc/cluster.go:184 lxc/remote.go:410
+#: lxc/cluster.go:120 lxc/remote.go:464
 msgid "URL"
 msgstr ""
 
-#: lxc/network.go:580 lxc/profile.go:574 lxc/storage.go:740 lxc/storage.go:938
+#: lxc/network.go:785 lxc/profile.go:614 lxc/storage.go:553
+#: lxc/storage_volume.go:968
 msgid "USED BY"
 msgstr ""
 
-#: lxc/manpage.go:36
-msgid "Unable to find help2man."
+#: lxc/list.go:514
+#, c-format
+msgid "Unknown column shorthand char '%c' in '%s'"
 msgstr ""
 
-#: lxc/file.go:124
+#: lxc/file.go:596
 #, c-format
 msgid "Unknown file type '%s'"
 msgstr ""
 
-#: lxc/image.go:608
+#: lxc/config_device.go:649 lxc/config_device.go:650
+msgid "Unset container device configuration keys"
+msgstr ""
+
+#: lxc/config.go:559 lxc/config.go:560
+msgid "Unset container or server configuration keys"
+msgstr ""
+
+#: lxc/network.go:1050 lxc/network.go:1051
+msgid "Unset network configuration keys"
+msgstr ""
+
+#: lxc/profile.go:865 lxc/profile.go:866
+msgid "Unset profile configuration keys"
+msgstr ""
+
+#: lxc/storage.go:728 lxc/storage.go:729
+msgid "Unset storage pool configuration keys"
+msgstr ""
+
+#: lxc/storage_volume.go:1240 lxc/storage_volume.go:1241
+msgid "Unset storage volume configuration keys"
+msgstr ""
+
+#: lxc/image.go:835
 #, c-format
 msgid "Uploaded: %s"
 msgstr ""
 
-#: lxc/action.go:38
-#, fuzzy, c-format
+#: lxc/delete.go:47
+msgid "User aborted delete operation"
+msgstr ""
+
+#: lxc/utils/cancel.go:40
 msgid ""
-"Usage: lxc %s [--all] [<remote>:]<container> [[<remote>:]<container>...]\n"
-"\n"
-"%s%s"
+"User signaled us three times, exiting. The remote operation will keep "
+"running."
 msgstr ""
-"Изменение состояния одного или нескольких контейнеров %s.\n"
-"\n"
-"lxc %s [<remote>:]<container> [[<remote>:]<container>...]%s"
 
-#: lxc/help.go:45
-msgid "Usage: lxc <command> [options]"
+#: lxc/query.go:35
+msgid "Wait for the operation to complete"
 msgstr ""
 
-#: lxc/alias.go:22
+#: lxc/restore.go:36
 msgid ""
-"Usage: lxc alias <subcommand> [options]\n"
-"\n"
-"Manage command aliases.\n"
-"\n"
-"lxc alias add <alias> <target>\n"
-"    Add a new alias <alias> pointing to <target>.\n"
-"\n"
-"lxc alias remove <alias>\n"
-"    Remove the alias <alias>.\n"
-"\n"
-"lxc alias list\n"
-"    List all the aliases.\n"
-"\n"
-"lxc alias rename <old alias> <new alias>\n"
-"    Rename remote <old alias> to <new alias>."
+"Whether or not to restore the container's running state from snapshot (if "
+"available)"
 msgstr ""
 
-#: lxc/cluster.go:23
-msgid ""
-"Usage: lxc cluster <subcommand> [options]\n"
-"\n"
-"Manage cluster nodes.\n"
-"\n"
-"lxc cluster list [<remote>:]\n"
-"    List all nodes in the cluster.\n"
-"\n"
-"lxc cluster show [<remote>:]<node>\n"
-"    Show details of a node.\n"
-"\n"
-"lxc cluster rename [<remote>:]<node> <new-name>\n"
-"    Rename a cluster node.\n"
-"\n"
-"lxc cluster delete [<remote>:]<node> [--force]\n"
-"    Delete a node from the cluster."
+#: lxc/snapshot.go:31
+msgid "Whether or not to snapshot the container's running state"
 msgstr ""
 
-#: lxc/config.go:85
-msgid ""
-"Usage: lxc config <subcommand> [options]\n"
-"\n"
-"Change container or server configuration options.\n"
-"\n"
-"*Container configuration*\n"
-"\n"
-"lxc config get [<remote>:][container] <key>\n"
-"    Get container or server configuration key.\n"
-"\n"
-"lxc config set [<remote>:][container] <key> <value>\n"
-"    Set container or server configuration key.\n"
-"\n"
-"lxc config unset [<remote>:][container] <key>\n"
-"    Unset container or server configuration key.\n"
-"\n"
-"lxc config show [<remote>:][container] [--expanded]\n"
-"    Show container or server configuration.\n"
-"\n"
-"lxc config edit [<remote>:][container]\n"
-"    Edit configuration, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"*Container metadata*\n"
-"\n"
-"lxc config metadata show [<remote>:][container]\n"
-"    Show the container metadata.yaml content.\n"
-"\n"
-"lxc config metadata edit [<remote>:][container]\n"
-"    Edit the container metadata.yaml, either by launching external editor or "
-"reading STDIN.\n"
-"\n"
-"*Container templates*\n"
-"\n"
-"lxc config template list [<remote>:][container]\n"
-"    List the names of template files for a container.\n"
-"\n"
-"lxc config template show [<remote>:][container] [template]\n"
-"    Show the content of a template file for a container.\n"
-"\n"
-"lxc config template create [<remote>:][container] [template]\n"
-"    Add an empty template file for a container.\n"
-"\n"
-"lxc config template edit [<remote>:][container] [template]\n"
-"    Edit the content of a template file for a container, either by launching "
-"external editor or reading STDIN.\n"
-"\n"
-"lxc config template delete [<remote>:][container] [template]\n"
-"    Delete a template file for a container.\n"
-"\n"
-"\n"
-"*Device management*\n"
-"\n"
-"lxc config device add [<remote>:]<container> <device> <type> [key=value...]\n"
-"    Add a device to a container.\n"
-"\n"
-"lxc config device get [<remote>:]<container> <device> <key>\n"
-"    Get a device property.\n"
-"\n"
-"lxc config device set [<remote>:]<container> <device> <key> <value>\n"
-"    Set a device property.\n"
-"\n"
-"lxc config device unset [<remote>:]<container> <device> <key>\n"
-"    Unset a device property.\n"
-"\n"
-"lxc config device override [<remote>:]<container> <device> [key=value...]\n"
-"    Copy a profile inherited device into local container config.\n"
-"\n"
-"lxc config device list [<remote>:]<container>\n"
-"    List devices for container.\n"
-"\n"
-"lxc config device show [<remote>:]<container>\n"
-"    Show full device details for container.\n"
-"\n"
-"lxc config device remove [<remote>:]<container> <name>...\n"
-"    Remove device from container.\n"
-"\n"
-"*Client trust store management*\n"
-"\n"
-"lxc config trust list [<remote>:]\n"
-"    List all trusted certs.\n"
-"\n"
-"lxc config trust add [<remote>:] <certfile.crt>\n"
-"    Add certfile.crt to trusted hosts.\n"
-"\n"
-"lxc config trust remove [<remote>:] [hostname|fingerprint]\n"
-"    Remove the cert from trusted hosts.\n"
-"\n"
-"*Examples*\n"
-"\n"
-"cat config.yaml | lxc config edit <container>\n"
-"    Update the container configuration from config.yaml.\n"
-"\n"
-"lxc config device add [<remote>:]container1 <device-name> disk source=/share/"
-"c1 path=opt\n"
-"    Will mount the host's /share/c1 onto /opt in the container.\n"
-"\n"
-"lxc config set [<remote>:]<container> limits.cpu 2\n"
-"    Will set a CPU limit of \"2\" for the container.\n"
-"\n"
-"lxc config set core.https_address [::]:8443\n"
-"    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
-"\n"
-"lxc config set core.trust_password blah\n"
-"    Will set the server's trust password to blah."
+#: lxc/network.go:765 lxc/operation.go:140 lxc/remote.go:436 lxc/remote.go:441
+msgid "YES"
 msgstr ""
 
-#: lxc/console.go:31
-msgid ""
-"Usage: lxc console [<remote>:]<container> [-l]\n"
-"\n"
-"Interact with the container's console device and log."
+#: lxc/exec.go:122
+msgid "You can't pass -t and -T at the same time"
 msgstr ""
 
-#: lxc/copy.go:30
-#, fuzzy
-msgid ""
-"Usage: lxc copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>] "
-"[--ephemeral|e] [--profile|-p <profile>...] [--config|-c <key=value>...] [--"
-"container-only] [--target <node>]\n"
-"\n"
-"Copy containers within or in between LXD instances."
+#: lxc/exec.go:126
+msgid "You can't pass -t or -T at the same time as --mode"
 msgstr ""
-"Копирование контейнеров внутри или в между экземплярами LXD.\n"
-"\n"
-"lxc copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>] [--"
-"ephemeral|e] [--profile|-p <profile>...] [--config|-c <key=value>...]"
 
-#: lxc/delete.go:27
-msgid ""
-"Usage: lxc delete [<remote>:]<container>[/<snapshot>] "
-"[[<remote>:]<container>[/<snapshot>]...]\n"
-"\n"
-"Delete containers and snapshots."
+#: lxc/copy.go:78
+msgid "You must specify a destination container name when using --target"
 msgstr ""
 
-#: lxc/exec.go:53
-msgid ""
-"Usage: lxc exec [<remote>:]<container> [-t] [-T] [-n] [--mode=auto|"
-"interactive|non-interactive] [--env KEY=VALUE...] [--] <command line>\n"
-"\n"
-"Execute commands in containers.\n"
-"\n"
-"The command is executed directly using exec, so there is no shell and shell "
-"patterns (variables, file redirects, ...)\n"
-"won't be understood. If you need a shell environment you need to execute the "
-"shell executable, passing the shell commands\n"
-"as arguments, for example:\n"
-"\n"
-"    lxc exec <container> -- sh -c \"cd /tmp && pwd\"\n"
-"\n"
-"Mode defaults to non-interactive, interactive mode is selected if both stdin "
-"AND stdout are terminals (stderr is ignored)."
+#: lxc/copy.go:73 lxc/move.go:188
+msgid "You must specify a source container name"
 msgstr ""
 
-#: lxc/file.go:39
-msgid ""
-"Usage: lxc file <subcommand> [options]\n"
-"\n"
-"Manage files in containers.\n"
-"\n"
-"lxc file pull [-r|--recursive] [<remote>:]<container>/<path> "
-"[[<remote>:]<container>/<path>...] <target path>\n"
-"    Pull files from containers.\n"
-"\n"
-"lxc file push [-r|--recursive] [-p|--create-dirs] [--uid=UID] [--gid=GID] [--"
-"mode=MODE] <source path> [<source path>...] [<remote>:]<container>/<path>\n"
-"    Push files into containers.\n"
-"\n"
-"lxc file delete [<remote>:]<container>/<path> [[<remote>:]<container>/"
-"<path>...]\n"
-"    Delete files in containers.\n"
-"\n"
-"lxc file edit [<remote>:]<container>/<path>\n"
-"    Edit files in containers using the default text editor.\n"
-"\n"
-"*Examples*\n"
-"lxc file push /etc/hosts foo/etc/hosts\n"
-"   To push /etc/hosts into the container \"foo\".\n"
-"\n"
-"lxc file pull foo/etc/hosts .\n"
-"   To pull /etc/hosts from the container and write it to the current "
-"directory."
+#: lxc/copy.go:68 lxc/move.go:91 lxc/move.go:183
+msgid "You must use the same source and destination remote when using --target"
 msgstr ""
 
-#: lxc/finger.go:15
-msgid ""
-"Usage: lxc finger [<remote>:]\n"
-"\n"
-"Check if the LXD server is alive."
+#: lxc/alias.go:53
+msgid "add <alias> <target>"
 msgstr ""
 
-#: lxc/help.go:22
-msgid ""
-"Usage: lxc help [--all]\n"
-"\n"
-"Help page for the LXD client."
+#: lxc/config_trust.go:57
+msgid "add [<remote>:] <cert>"
 msgstr ""
 
-#: lxc/image.go:73
-msgid ""
-"Usage: lxc image <subcommand> [options]\n"
-"\n"
-"Manipulate container images.\n"
-"\n"
-"In LXD containers are created from images. Those images were themselves\n"
-"either generated from an existing container or downloaded from an image\n"
-"server.\n"
-"\n"
-"When using remote images, LXD will automatically cache images for you\n"
-"and remove them upon expiration.\n"
-"\n"
-"The image unique identifier is the hash (sha-256) of its representation\n"
-"as a compressed tarball (or for split images, the concatenation of the\n"
-"metadata and rootfs tarballs).\n"
-"\n"
-"Images can be referenced by their full hash, shortest unique partial\n"
-"hash or alias name (if one is set).\n"
-"\n"
-"\n"
-"lxc image import <tarball>|<dir> [<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) or an image directory into the LXD "
-"image store.\n"
-"    Directory import is only available on Linux and must be performed as "
-"root.\n"
-"\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"
-"    Delete one or more images from the LXD image store.\n"
-"\n"
-"lxc image refresh [<remote>:]<image> [[<remote>:]<image>...]\n"
-"    Refresh one or more images from its parent remote.\n"
-"\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"
-"    The target may be an existing directory, file name, or \"-\" to specify\n"
-"    stdout.  The target MUST be a directory when exporting a split image.\n"
-"    If the target is a directory, the image's name (each part's name for\n"
-"    split images) as found in the database will be used for the exported\n"
-"    image.  If the target is a file (not a directory and not stdout), then\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"
-"    Print everything LXD knows about a given image.\n"
-"\n"
-"lxc image list [<remote>:] [filter] [--format csv|json|table|yaml] [-c "
-"<columns>]\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"
-"    The -c option takes a (optionally comma-separated) list of arguments "
-"that\n"
-"    control which image attributes to output when displaying in table or "
-"csv\n"
-"    format.\n"
-"\n"
-"    Default column layout is: lfpdasu\n"
-"\n"
-"    Column shorthand chars:\n"
-"\n"
-"        l - Shortest image alias (and optionally number of other aliases)\n"
-"\n"
-"        L - Newline-separated list of all image aliases\n"
-"\n"
-"        f - Fingerprint\n"
-"\n"
-"        p - Whether image is public\n"
-"\n"
-"        d - Description\n"
-"\n"
-"        a - Architecture\n"
-"\n"
-"        s - Size\n"
-"\n"
-"        u - Upload date\n"
-"\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"
-"    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"
-"    Create a new alias for an existing image.\n"
-"\n"
-"lxc image alias rename [<remote>:]<alias> <new-name>\n"
-"    Rename an alias.\n"
-"\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."
+#: lxc/profile.go:100
+msgid "add [<remote>:]<container> <profile>"
 msgstr ""
 
-#: lxc/info.go:27
+#: lxc/config_device.go:74
+msgid "add [<remote>:]<container|profile> <device> <type> [key=value...]"
+msgstr ""
+
+#: lxc/remote.go:82
+msgid "add [<remote>] <IP|FQDN|URL>"
+msgstr ""
+
+#: lxc/alias.go:21 lxc/image_alias.go:24
+#, fuzzy
+msgid "alias"
+msgstr "Псевдонимы:"
+
+#: lxc/profile.go:160
+msgid "assign [<remote>:]<container> <profiles>"
+msgstr ""
+
+#: lxc/network.go:102
+msgid "attach [<remote>:]<network> <container> [device name] [interface name]"
+msgstr ""
+
+#: lxc/storage_volume.go:120
+msgid "attach [<remote>:]<pool> <volume> <container> [device name] <path>"
+msgstr ""
+
+#: lxc/storage_volume.go:199
 msgid ""
-"Usage: lxc info [<remote>:][<container>] [--show-log] [--resources]\n"
-"\n"
-"Show container or server information.\n"
-"\n"
-"lxc info [<remote>:]<container> [--show-log]\n"
-"    For container information.\n"
-"\n"
-"lxc info [<remote>:] [--resources]\n"
-"    For LXD server information."
+"attach-profile [<remote:>]<pool> <volume> <profile> [device name] <path>"
 msgstr ""
 
-#: lxc/init.go:79
+#: lxc/network.go:175
 msgid ""
-"Usage: lxc init [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
-"profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
-"<node>]\n"
+"attach-profile [<remote>:]<network> <profile> [device name] [interface name]"
+msgstr ""
+
+#: lxc/cluster.go:24
+msgid "cluster"
+msgstr ""
+
+#: lxc/config.go:27
+msgid "config"
+msgstr ""
+
+#: lxc/console.go:30
+msgid "console [<remote>:]<container>"
+msgstr ""
+
+#: lxc/storage_volume.go:280
+msgid "copy <pool>/<volume> <pool>/<volume>"
+msgstr ""
+
+#: lxc/image.go:128
+msgid "copy [<remote>:]<image> <remote>:"
+msgstr ""
+
+#: lxc/profile.go:238
+msgid "copy [<remote>:]<profile> [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/copy.go:32
+msgid "copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>]"
+msgstr ""
+
+#: lxc/image_alias.go:57
+msgid "create [<remote>:]<alias> <fingerprint>"
+msgstr ""
+
+#: lxc/config_template.go:65
+msgid "create [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/network.go:248
+msgid "create [<remote>:]<network> [key=value...]"
+msgstr ""
+
+#: lxc/storage.go:87
+msgid "create [<remote>:]<pool> <driver> [key=value]..."
+msgstr ""
+
+#: lxc/storage_volume.go:424
+msgid "create [<remote>:]<pool> <volume> [key=value]..."
+msgstr ""
+
+#: lxc/profile.go:295
+msgid "create [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/remote.go:453
+msgid "default"
+msgstr ""
+
+#: lxc/image_alias.go:103
+msgid "delete [<remote>:]<alias>"
+msgstr ""
+
+#: lxc/config_template.go:107
+msgid "delete [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/file.go:70
+#, fuzzy
+msgid "delete [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...]"
+msgstr ""
+"Изменение состояния одного или нескольких контейнеров %s.\n"
 "\n"
-"Create containers from images.\n"
+"lxc %s [<remote>:]<container> [[<remote>:]<container>...]%s"
+
+#: lxc/delete.go:27
+#, fuzzy
+msgid ""
+"delete [<remote>:]<container>[/<snapshot>] [[<remote>:]<container>[/"
+"<snapshot>]...]"
+msgstr ""
+"Изменение состояния одного или нескольких контейнеров %s.\n"
 "\n"
-"Not specifying -p will result in the default profile.\n"
-"Specifying \"-p\" with no argument will result in no profile.\n"
+"lxc %s [<remote>:]<container> [[<remote>:]<container>...]%s"
+
+#: lxc/image.go:258
+#, fuzzy
+msgid "delete [<remote>:]<image> [[<remote>:]<image>...]"
+msgstr ""
+"Изменение состояния одного или нескольких контейнеров %s.\n"
 "\n"
-"Examples:\n"
-"    lxc init ubuntu:16.04 u1"
+"lxc %s [<remote>:]<container> [[<remote>:]<container>...]%s"
+
+#: lxc/network.go:317
+msgid "delete [<remote>:]<network>"
+msgstr ""
+
+#: lxc/operation.go:51
+msgid "delete [<remote>:]<operation>"
+msgstr ""
+
+#: lxc/storage.go:158
+msgid "delete [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:498
+msgid "delete [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:345
+msgid "delete [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/storage.go:431
+msgid "description"
+msgstr ""
+
+#: lxc/network.go:365
+msgid "detach [<remote>:]<network> <container> [device name]"
+msgstr ""
+
+#: lxc/storage_volume.go:559
+msgid "detach [<remote>:]<pool> <volume> <container> [device name]"
+msgstr ""
+
+#: lxc/storage_volume.go:641
+msgid "detach-profile [<remote:>]<pool> <volume> <profile> [device name]"
+msgstr ""
+
+#: lxc/network.go:450
+msgid "detach-profile [<remote>:]<network> <container> [device name]"
+msgstr ""
+
+#: lxc/config_device.go:22
+msgid "device"
+msgstr ""
+
+#: lxc/init.go:223
+msgid "didn't get any affected image, container or snapshot from server"
+msgstr ""
+
+#: lxc/image.go:819
+msgid "disabled"
+msgstr ""
+
+#: lxc/storage.go:430
+msgid "driver"
+msgstr ""
+
+#: lxc/config_template.go:150
+msgid "edit [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/file.go:120
+msgid "edit [<remote>:]<container>/<path>"
+msgstr ""
+
+#: lxc/image.go:310
+msgid "edit [<remote>:]<image>"
+msgstr ""
+
+#: lxc/network.go:535
+msgid "edit [<remote>:]<network>"
+msgstr ""
+
+#: lxc/storage.go:206
+msgid "edit [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:722
+msgid "edit [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:394
+msgid "edit [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/config.go:86 lxc/config_metadata.go:52
+msgid "edit [<remote>:][container]"
+msgstr ""
+
+#: lxc/image.go:821
+msgid "enabled"
+msgstr ""
+
+#: lxc/action.go:234
+#, c-format
+msgid "error: %v"
+msgstr ""
+
+#: lxc/exec.go:37
+msgid "exec [<remote>:]<container> [flags] [--] <command line>"
+msgstr ""
+
+#: lxc/image.go:433
+msgid "export [<remote>:]<image> [target]"
+msgstr ""
+
+#: lxc/file.go:38
+msgid "file"
+msgstr ""
+
+#: lxc/config_device.go:177
+msgid "get [<remote>:]<container|profile> <device> <key>"
+msgstr ""
+
+#: lxc/network.go:658
+msgid "get [<remote>:]<network> <key>"
+msgstr ""
+
+#: lxc/storage.go:326
+msgid "get [<remote>:]<pool> <key>"
+msgstr ""
+
+#: lxc/storage_volume.go:851
+msgid "get [<remote>:]<pool> <volume> <key>"
+msgstr ""
+
+#: lxc/profile.go:518
+msgid "get [<remote>:]<profile> <key>"
+msgstr ""
+
+#: lxc/config.go:287
+msgid "get [<remote>:][container] <key>"
+msgstr ""
+
+#: lxc/remote.go:378
+msgid "get-default"
+msgstr ""
+
+#: lxc/image.go:40
+msgid "image"
+msgstr ""
+
+#: lxc/image.go:569
+msgid ""
+"import <tarball>|<directory>|<URL> [<rootfs tarball>] [<remote>:] "
+"[key=value...]"
+msgstr ""
+
+#: lxc/storage.go:428
+msgid "info"
+msgstr ""
+
+#: lxc/image.go:774
+msgid "info [<remote>:]<image>"
+msgstr ""
+
+#: lxc/storage.go:381
+msgid "info [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/info.go:27
+msgid "info [<remote>:][<container>]"
+msgstr ""
+
+#: lxc/init.go:33
+msgid "init [<remote>:]<image> [<remote>:][<name>]"
 msgstr ""
 
 #: lxc/launch.go:20
+msgid "launch [<remote>:]<image> [<remote>:][<name>]"
+msgstr ""
+
+#: lxc/alias.go:96 lxc/remote.go:411
+msgid "list"
+msgstr ""
+
+#: lxc/cluster.go:56 lxc/config_trust.go:112 lxc/network.go:716
+#: lxc/operation.go:95 lxc/profile.go:565 lxc/storage.go:488
+msgid "list [<remote>:]"
+msgstr ""
+
+#: lxc/image.go:887
+msgid "list [<remote>:] [filter]"
+msgstr ""
+
+#: lxc/image_alias.go:146
+msgid "list [<remote>:] [filters...]"
+msgstr ""
+
+#: lxc/list.go:45
+msgid "list [<remote>:] [filters]"
+msgstr ""
+
+#: lxc/config_template.go:234
+msgid "list [<remote>:]<container>"
+msgstr ""
+
+#: lxc/config_device.go:249
+msgid "list [<remote>:]<container|profile>"
+msgstr ""
+
+#: lxc/storage_volume.go:915
+msgid "list [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/network.go:806
+msgid "list-leases [<remote>:]<network>"
+msgstr ""
+
+#: lxc/alias.go:57
 msgid ""
-"Usage: lxc launch [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
-"profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
-"<node>]\n"
-"\n"
-"Create and start containers from images.\n"
-"\n"
-"Not specifying -p will result in the default profile.\n"
-"Specifying \"-p\" with no argument will result in no profile.\n"
-"\n"
-"Examples:\n"
-"    lxc launch ubuntu:16.04 u1"
+"lxc alias add list list -c ns46S\n"
+"    Overwrite the \"list\" command to pass -c ns46S."
 msgstr ""
 
-#: lxc/list.go:44
+#: lxc/alias.go:200
 msgid ""
-"Usage: lxc list [<remote>:] [filters] [--format csv|json|table|yaml] [-c "
-"<columns>] [--fast]\n"
-"\n"
-"List the existing containers.\n"
-"\n"
-"Default column layout: ns46tS\n"
-"Fast column layout: nsacPt\n"
-"\n"
-"*Filters*\n"
-"A single keyword like \"web\" which will list any container with a name "
-"starting by \"web\".\n"
-"\n"
-"A regular expression on the container name. (e.g. .*web.*01$).\n"
-"\n"
-"A key/value pair referring to a configuration item. For those, the namespace "
-"can be abbreviated to the smallest unambiguous identifier.\n"
-"\t- \"user.blah=abc\" will list all containers with the \"blah\" user "
-"property set to \"abc\".\n"
-"\n"
-"\t- \"u.blah=abc\" will do the same\n"
-"\n"
-"\t- \"security.privileged=true\" will list all privileged containers\n"
-"\n"
-"\t- \"s.privileged=true\" will do the same\n"
-"\n"
-"A regular expression matching a configuration item or its value. (e.g. "
-"volatile.eth0.hwaddr=00:16:3e:.*).\n"
-"\n"
-"*Columns*\n"
-"The -c option takes a comma separated list of arguments that control\n"
-"which container attributes to output when displaying in table or csv\n"
-"format.\n"
-"\n"
-"Column arguments are either pre-defined shorthand chars (see below),\n"
-"or (extended) config keys.\n"
-"\n"
-"Commas between consecutive shorthand chars are optional.\n"
-"\n"
-"Pre-defined column shorthand chars:\n"
-"\n"
-"\t4 - IPv4 address\n"
-"\n"
-"\t6 - IPv6 address\n"
-"\n"
-"\ta - Architecture\n"
-"\n"
-"\tb - Storage pool\n"
-"\n"
-"\tc - Creation date\n"
-"\n"
-"\td - Description\n"
-"\n"
-"\tl - Last used date\n"
-"\n"
-"\tn - Name\n"
-"\n"
-"\tN - Number of Processes\n"
-"\n"
-"\tp - PID of the container's init process\n"
-"\n"
-"\tP - Profiles\n"
-"\n"
-"\ts - State\n"
-"\n"
-"\tS - Number of snapshots\n"
-"\n"
-"\tt - Type (persistent or ephemeral)\n"
-"\n"
-"\tL - Location of the container (e.g. its node)\n"
-"\n"
-"Custom columns are defined with \"key[:name][:maxWidth]\":\n"
-"\n"
-"\tKEY: The (extended) config key to display\n"
-"\n"
-"\tNAME: Name to display in the column header.\n"
-"\tDefaults to the key if not specified or empty.\n"
-"\n"
-"\tMAXWIDTH: Max width of the column (longer results are truncated).\n"
-"\tDefaults to -1 (unlimited). Use 0 to limit to the column header size.\n"
-"\n"
-"*Examples*\n"
-"lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:"
-"MAC\n"
-"\tShows a list of containers using the \"NAME\", \"BASE IMAGE\", \"STATE\", "
-"\"IPV4\",\n"
-"\t\"IPV6\" and \"MAC\" columns.\n"
-"\n"
-"\t\"BASE IMAGE\" and \"MAC\" are custom columns generated from container "
-"configuration keys.\n"
-"\n"
-"lxc list -c ns,user.comment:comment\n"
-"\tList images with their running state and user comment. "
+"lxc alias remove my-list\n"
+"    Remove the \"my-list\" alias."
 msgstr ""
 
-#: lxc/manpage.go:20
+#: lxc/alias.go:149
 msgid ""
-"Usage: lxc manpage <directory>\n"
-"\n"
-"Generate all the LXD manpages."
+"lxc alias rename list my-list\n"
+"    Rename existing alias \"list\" to \"my-list\"."
 msgstr ""
 
-#: lxc/monitor.go:49
+#: lxc/config_device.go:78
 msgid ""
-"Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
-"\n"
-"Monitor a local or remote LXD server.\n"
-"\n"
-"By default the monitor will listen to all message types.\n"
-"\n"
-"Message types to listen for can be specified with --type.\n"
-"\n"
-"*Examples*\n"
-"lxc monitor --type=logging\n"
-"    Only show log messages.\n"
-"\n"
-"lxc monitor --pretty --type=logging --loglevel=info\n"
-"    Show a pretty log of messages with info level or higher.\n"
+"lxc config device add [<remote>:]container1 <device-name> disk source=/share/"
+"c1 path=opt\n"
+"    Will mount the host's /share/c1 onto /opt in the container."
 msgstr ""
 
-#: lxc/move.go:26
+#: lxc/config.go:90
 msgid ""
-"Usage: lxc move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
-"<snapshot>]] [--container-only] [--target <node>]\n"
-"\n"
-"Move containers within or in between LXD instances.\n"
-"\n"
-"lxc move [<remote>:]<source container> [<remote>:][<destination container>] "
-"[--container-only]\n"
-"    Move a container between two hosts, renaming it if destination name "
-"differs.\n"
-"\n"
-"lxc move <old name> <new name> [--container-only]\n"
-"    Rename a local container.\n"
-"\n"
-"lxc move <container>/<old snapshot name> <container>/<new snapshot name>\n"
-"    Rename a snapshot."
+"lxc config edit <container> < container.yaml\n"
+"    Update the container configuration from config.yaml."
 msgstr ""
 
-#: lxc/network.go:52
+#: lxc/config.go:357
 msgid ""
-"Usage: lxc network <subcommand> [options]\n"
-"\n"
-"Manage and attach containers to networks.\n"
-"\n"
-"lxc network list [<remote>:]\n"
-"    List available networks.\n"
-"\n"
-"lxc network list-leases [<remote>:]<network>\n"
-"    List the DHCP leases for the network\n"
-"\n"
-"lxc network show [<remote>:]<network> [--target <node>]\n"
-"    Show details of a network.\n"
-"\n"
-"lxc network create [<remote>:]<network> [key=value...] [--target <node>]\n"
-"    Create a network.\n"
-"\n"
-"lxc network get [<remote>:]<network> <key> [--target <node>]\n"
-"    Get network configuration.\n"
-"\n"
-"lxc network set [<remote>:]<network> <key> <value>\n"
-"    Set network configuration.\n"
-"\n"
-"lxc network unset [<remote>:]<network> <key>\n"
-"    Unset network configuration.\n"
-"\n"
-"lxc network delete [<remote>:]<network>\n"
-"    Delete a network.\n"
+"lxc config set [<remote>:]<container> limits.cpu 2\n"
+"    Will set a CPU limit of \"2\" for the container.\n"
 "\n"
-"lxc network edit [<remote>:]<network>\n"
-"    Edit network, either by launching external editor or reading STDIN.\n"
+"lxc config set core.https_address [::]:8443\n"
+"    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
 "\n"
-"lxc network rename [<remote>:]<network> <new-name>\n"
-"    Rename a network.\n"
+"lxc config set core.trust_password blah\n"
+"    Will set the server's trust password to blah."
+msgstr ""
+
+#: lxc/file.go:187
+msgid ""
+"lxc file pull foo/etc/hosts .\n"
+"   To pull /etc/hosts from the container and write it to the current "
+"directory."
+msgstr ""
+
+#: lxc/file.go:326
+msgid ""
+"lxc file push /etc/hosts foo/etc/hosts\n"
+"   To push /etc/hosts into the container \"foo\"."
+msgstr ""
+
+#: lxc/image.go:314
+msgid ""
+"lxc image edit <image>\n"
+"    Launch a text editor to edit the properties\n"
 "\n"
-"lxc network attach [<remote>:]<network> <container> [device name] [interface "
-"name]\n"
-"    Attach a network interface connecting the network to a specified "
-"container.\n"
+"lxc image edit <image> < image.yaml\n"
+"    Load the image properties from a YAML file"
+msgstr ""
+
+#: lxc/info.go:31
+msgid ""
+"lxc info [<remote>:]<container> [--show-log]\n"
+"    For container information.\n"
 "\n"
-"lxc network attach-profile [<remote>:]<network> <profile> [device name] "
-"[interface name]\n"
-"    Attach a network interface connecting the network to a specified "
-"profile.\n"
+"lxc info [<remote>:] [--resources]\n"
+"    For LXD server information."
+msgstr ""
+
+#: lxc/init.go:37
+msgid "lxc init ubuntu:16.04 u1"
+msgstr ""
+
+#: lxc/launch.go:24
+msgid "lxc launch ubuntu:16.04 u1"
+msgstr ""
+
+#: lxc/list.go:103
+msgid ""
+"lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:"
+"MAC\n"
+"  Show containers using the \"NAME\", \"BASE IMAGE\", \"STATE\", \"IPV4\", "
+"\"IPV6\" and \"MAC\" columns.\n"
+"  \"BASE IMAGE\" and \"MAC\" are custom columns generated from container "
+"configuration keys.\n"
 "\n"
-"lxc network detach [<remote>:]<network> <container> [device name]\n"
-"    Remove a network interface connecting the network to a specified "
-"container.\n"
+"lxc list -c ns,user.comment:comment\n"
+"  List images with their running state and user comment."
+msgstr ""
+
+#: lxc/monitor.go:35
+msgid ""
+"lxc monitor --type=logging\n"
+"    Only show log messages.\n"
 "\n"
-"lxc network detach-profile [<remote>:]<network> <container> [device name]\n"
-"    Remove a network interface connecting the network to a specified "
-"profile.\n"
+"lxc monitor --pretty --type=logging --loglevel=info\n"
+"    Show a pretty log of messages with info level or higher.\n"
 "\n"
-"*Examples*\n"
-"cat network.yaml | lxc network edit <network>\n"
-"    Update a network using the content of network.yaml"
+"lxc monitor --type=lifecycle\n"
+"    Only show lifecycle events."
 msgstr ""
 
-#: lxc/operation.go:25
+#: lxc/move.go:33
 msgid ""
-"Usage: lxc operation <subcommand> [options]\n"
-"\n"
-"List, show and delete background operations.\n"
-"\n"
-"lxc operation list [<remote>:]\n"
-"    List background operations.\n"
-"\n"
-"lxc operation show [<remote>:]<operation>\n"
-"    Show details on a background operation.\n"
+"lxc move [<remote>:]<source container> [<remote>:][<destination container>] "
+"[--container-only]\n"
+"    Move a container between two hosts, renaming it if destination name "
+"differs.\n"
 "\n"
-"lxc operation delete [<remote>:]<operation>\n"
-"    Delete a background operation (will attempt to cancel).\n"
+"lxc move <old name> <new name> [--container-only]\n"
+"    Rename a local container.\n"
 "\n"
-"*Examples*\n"
+"lxc move <container>/<old snapshot name> <container>/<new snapshot name>\n"
+"    Rename a snapshot."
+msgstr ""
+
+#: lxc/operation.go:176
+msgid ""
 "lxc operation show 344a79e4-d88a-45bf-9c39-c72c26f6ab8a\n"
 "    Show details on that operation UUID"
 msgstr ""
 
-#: lxc/profile.go:51
+#: lxc/profile.go:165
 msgid ""
-"Usage: lxc profile <subcommand> [options]\n"
-"\n"
-"Manage container configuration profiles.\n"
-"\n"
-"*Profile configuration*\n"
-"lxc profile list [<remote>:]\n"
-"    List available profiles.\n"
-"\n"
-"lxc profile show [<remote>:]<profile>\n"
-"    Show details of a profile.\n"
-"\n"
-"lxc profile create [<remote>:]<profile>\n"
-"    Create a profile.\n"
-"\n"
-"lxc profile copy [<remote>:]<profile> [<remote>:]<profile>\n"
-"    Copy the profile.\n"
-"\n"
-"lxc profile get [<remote>:]<profile> <key>\n"
-"    Get profile configuration.\n"
-"\n"
-"lxc profile set [<remote>:]<profile> <key> <value>\n"
-"    Set profile configuration.\n"
-"\n"
-"lxc profile unset [<remote>:]<profile> <key>\n"
-"    Unset profile configuration.\n"
-"\n"
-"lxc profile delete [<remote>:]<profile>\n"
-"    Delete a profile.\n"
-"\n"
-"lxc profile edit [<remote>:]<profile>\n"
-"    Edit profile, either by launching external editor or reading STDIN.\n"
-"\n"
-"lxc profile rename [<remote>:]<profile> <new-name>\n"
-"    Rename a profile.\n"
-"\n"
-"*Profile assignment*\n"
-"lxc profile assign [<remote>:]<container> <profiles>\n"
-"    Replace the current set of profiles for the container by the one "
-"provided.\n"
-"\n"
-"lxc profile add [<remote>:]<container> <profile>\n"
-"    Add a profile to a container\n"
-"\n"
-"lxc profile remove [<remote>:]<container> <profile>\n"
-"    Remove the profile from a container\n"
-"\n"
-"*Device management*\n"
-"lxc profile device list [<remote>:]<profile>\n"
-"    List devices in the given profile.\n"
-"\n"
-"lxc profile device show [<remote>:]<profile>\n"
-"    Show full device details in the given profile.\n"
-"\n"
-"lxc profile device remove [<remote>:]<profile> <name>\n"
-"    Remove a device from a profile.\n"
-"\n"
-"lxc profile device get [<remote>:]<profile> <name> <key>\n"
-"    Get a device property.\n"
-"\n"
-"lxc profile device set [<remote>:]<profile> <name> <key> <value>\n"
-"    Set a device property.\n"
-"\n"
-"lxc profile device unset [<remote>:]<profile> <name> <key>\n"
-"    Unset a device property.\n"
-"\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.\n"
-"\n"
-"*Examples*\n"
-"cat profile.yaml | lxc profile edit <profile>\n"
-"    Update a profile using the content of profile.yaml\n"
-"\n"
 "lxc profile assign foo default,bar\n"
 "    Set the profiles for \"foo\" to \"default\" and \"bar\".\n"
 "\n"
@@ -2210,76 +2992,26 @@ msgid ""
 "    Remove all profile from \"foo\""
 msgstr ""
 
-#: lxc/publish.go:28
+#: lxc/profile.go:398
 msgid ""
-"Usage: lxc publish [<remote>:]<container>[/<snapshot>] [<remote>:] [--"
-"alias=ALIAS...] [prop-key=prop-value...]\n"
-"\n"
-"Publish containers as images."
+"lxc profile edit <profile> < profile.yaml\n"
+"    Update a profile using the content of profile.yaml"
 msgstr ""
 
-#: lxc/query.go:25
+#: lxc/query.go:29
 msgid ""
-"Usage: lxc query [-X <action>] [-d <data>] [--wait] [--raw] [<remote>:]<API "
-"path>\n"
-"\n"
-"Send a raw query to LXD.\n"
-"\n"
-"*Examples*\n"
 "lxc query -X DELETE --wait /1.0/containers/c1\n"
 "    Delete local container \"c1\"."
 msgstr ""
 
-#: lxc/remote.go:40
-msgid ""
-"Usage: lxc remote <subcommand> [options]\n"
-"\n"
-"Manage the list of remote LXD servers.\n"
-"\n"
-"lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--"
-"password=PASSWORD] [--public] [--protocol=PROTOCOL] [--auth-type=AUTH_TYPE]\n"
-"    Add the remote <remote> at <url>.\n"
-"\n"
-"lxc remote remove <remote>\n"
-"    Remove the remote <remote>.\n"
-"\n"
-"lxc remote list\n"
-"    List all remotes.\n"
-"\n"
-"lxc remote rename <old name> <new name>\n"
-"    Rename remote <old name> to <new name>.\n"
-"\n"
-"lxc remote set-url <remote> <url>\n"
-"    Update <remote>'s url to <url>.\n"
-"\n"
-"lxc remote set-default <remote>\n"
-"    Set the default remote.\n"
-"\n"
-"lxc remote get-default\n"
-"    Print the default remote."
-msgstr ""
-
-#: lxc/rename.go:18
-#, fuzzy
+#: lxc/snapshot.go:26
 msgid ""
-"Usage: lxc rename [<remote>:]<container>[/<snapshot>] [<container>[/"
-"<snapshot>]]\n"
-"\n"
-"Rename a container or snapshot."
+"lxc snapshot u1 snap0\n"
+"    Create a snapshot of \"u1\" called \"snap0\"."
 msgstr ""
-"Изменение состояния одного или нескольких контейнеров %s.\n"
-"\n"
-"lxc %s [<remote>:]<container> [[<remote>:]<container>...]%s"
 
-#: lxc/restore.go:22
+#: lxc/restore.go:28
 msgid ""
-"Usage: lxc restore [<remote>:]<container> <snapshot> [--stateful]\n"
-"\n"
-"Restore containers from snapshots.\n"
-"\n"
-"If --stateful is passed, then the running state will be restored too.\n"
-"\n"
-"*Examples*\n"
 "lxc snapshot u1 snap0\n"
 "    Create the snapshot.\n"
 "\n"
@@ -2287,121 +3019,20 @@ msgid ""
 "    Restore the snapshot."
 msgstr ""
 
-#: lxc/snapshot.go:19
+#: lxc/storage.go:210
 msgid ""
-"Usage: lxc snapshot [<remote>:]<container> <snapshot name> [--stateful]\n"
-"\n"
-"Create container snapshots.\n"
-"\n"
-"When --stateful is used, LXD attempts to checkpoint the container's\n"
-"running state, including process memory state, TCP connections, ...\n"
-"\n"
-"*Examples*\n"
-"lxc snapshot u1 snap0\n"
-"    Create a snapshot of \"u1\" called \"snap0\"."
+"lxc storage edit [<remote>:]<pool> < pool.yaml\n"
+"    Update a storage pool using the content of pool.yaml."
 msgstr ""
 
-#: lxc/storage.go:67
+#: lxc/storage_volume.go:726
+msgid ""
+"lxc storage volume edit [<remote>:]<pool> <volume> < volume.yaml\n"
+"    Update a storage volume using the content of pool.yaml."
+msgstr ""
+
+#: lxc/storage_volume.go:1168
 msgid ""
-"Usage: lxc storage <subcommand> [options]\n"
-"\n"
-"Manage storage pools and volumes.\n"
-"\n"
-"*Storage pools*\n"
-"lxc storage list [<remote>:]\n"
-"    List available storage pools.\n"
-"\n"
-"lxc storage show [<remote>:]<pool> [--resources] [--target <node>]\n"
-"    Show details of a storage pool.\n"
-"\n"
-"lxc storage info [<remote>:]<pool> [--bytes]\n"
-"    Show information of a storage pool in yaml format.\n"
-"\n"
-"lxc storage create [<remote>:]<pool> <driver> [key=value]... [--target "
-"<node>]\n"
-"    Create a storage pool.\n"
-"\n"
-"lxc storage get [<remote>:]<pool> <key>\n"
-"    Get storage pool configuration.\n"
-"\n"
-"lxc storage set [<remote>:]<pool> <key> <value>\n"
-"    Set storage pool configuration.\n"
-"\n"
-"lxc storage unset [<remote>:]<pool> <key>\n"
-"    Unset storage pool configuration.\n"
-"\n"
-"lxc storage delete [<remote>:]<pool>\n"
-"    Delete a storage pool.\n"
-"\n"
-"lxc storage edit [<remote>:]<pool>\n"
-"    Edit storage pool, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"*Storage volumes*\n"
-"lxc storage volume list [<remote>:]<pool>\n"
-"    List available storage volumes on a storage pool.\n"
-"\n"
-"lxc storage volume show [<remote>:]<pool> <volume> [--target <node>]\n"
-"   Show details of a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume create [<remote>:]<pool> <volume> [key=value]... [--"
-"target <node>]\n"
-"    Create a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume rename [<remote>:]<pool> <old name> <new name> [--target "
-"<node>]\n"
-"    Rename a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume get [<remote>:]<pool> <volume> <key> [--target <node>]\n"
-"    Get storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume set [<remote>:]<pool> <volume> <key> <value> [--target "
-"<node>]\n"
-"    Set storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume unset [<remote>:]<pool> <volume> <key> [--target <node>]\n"
-"    Unset storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume delete [<remote>:]<pool> <volume> [--target <node>]\n"
-"    Delete a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume edit [<remote>:]<pool> <volume> [--target <node>]\n"
-"    Edit storage volume, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"lxc storage volume attach [<remote>:]<pool> <volume> <container> [device "
-"name] <path>\n"
-"    Attach a storage volume to the specified container.\n"
-"\n"
-"lxc storage volume attach-profile [<remote:>]<pool> <volume> <profile> "
-"[device name] <path>\n"
-"    Attach a storage volume to the specified profile.\n"
-"\n"
-"lxc storage volume detach [<remote>:]<pool> <volume> <container> [device "
-"name]\n"
-"    Detach a storage volume from the specified container.\n"
-"\n"
-"lxc storage volume detach-profile [<remote:>]<pool> <volume> <profile> "
-"[device name]\n"
-"\tDetach a storage volume from the specified profile.\n"
-"\n"
-"lxc storage volume copy <pool>/<volume> <pool>/<volume> [--config|-c "
-"<key=value>...]\n"
-"    Copy an existing volume to a new volume at the specified pool.\n"
-"\n"
-"lxc storage volume move [<pool>/]<volume> [<pool>/]<volume>\n"
-"    Move an existing volume to the specified pool.\n"
-"\n"
-"Unless specified through a prefix, all volume operations affect \"custom"
-"\" (user created) volumes.\n"
-"\n"
-"*Examples*\n"
-"cat pool.yaml | lxc storage edit [<remote>:]<pool>\n"
-"    Update a storage pool using the content of pool.yaml.\n"
-"\n"
-"cat pool.yaml | lxc storage volume edit [<remote>:]<pool> <volume>\n"
-"    Update a storage volume using the content of pool.yaml.\n"
-"\n"
 "lxc storage volume show default data\n"
 "    Will show the properties of a custom volume called \"data\" in the "
 "\"default\" pool.\n"
@@ -2411,195 +3042,360 @@ msgid ""
 "\" in the \"default\" pool."
 msgstr ""
 
-#: lxc/version.go:18
+#: lxc/config_metadata.go:27
+msgid "metadata"
+msgstr ""
+
+#: lxc/monitor.go:29
+msgid "monitor [<remote>:]"
+msgstr ""
+
+#: lxc/storage_volume.go:991
+msgid "move [<pool>/]<volume> [<pool>/]<volume>"
+msgstr ""
+
+#: lxc/move.go:28
+#, fuzzy
 msgid ""
-"Usage: lxc version\n"
+"move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
+"<snapshot>]]"
+msgstr ""
+"Изменение состояния одного или нескольких контейнеров %s.\n"
 "\n"
-"Print the version number of this client tool."
+"lxc %s [<remote>:]<container> [[<remote>:]<container>...]%s"
+
+#: lxc/storage.go:429
+msgid "name"
 msgstr ""
 
-#: lxc/delete.go:46
-msgid "User aborted delete operation."
+#: lxc/network.go:30
+msgid "network"
 msgstr ""
 
-#: lxc/utils/cancel.go:40
+#: lxc/image.go:809 lxc/image.go:814 lxc/image.go:977
+msgid "no"
+msgstr ""
+
+#: lxc/remote.go:253
+msgid "ok (y/n)?"
+msgstr ""
+
+#: lxc/operation.go:23
+msgid "operation"
+msgstr ""
+
+#: lxc/config_device.go:316
+msgid "override [<remote>:]<container> <device> [key=value...]"
+msgstr ""
+
+#: lxc/action.go:47
+#, fuzzy
+msgid "pause [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+"Изменение состояния одного или нескольких контейнеров %s.\n"
+"\n"
+"lxc %s [<remote>:]<container> [[<remote>:]<container>...]%s"
+
+#: lxc/config.go:52
+msgid "please use `lxc profile`"
+msgstr ""
+
+#: lxc/profile.go:28
+msgid "profile"
+msgstr ""
+
+#: lxc/publish.go:32
 msgid ""
-"User signaled us three times, exiting. The remote operation will keep "
-"running."
+"publish [<remote>:]<container>[/<snapshot>] [<remote>:] [flags] [prop-"
+"key=prop-value...]"
 msgstr ""
 
-#: lxc/query.go:36
-msgid "Wait for the operation to complete"
+#: lxc/file.go:183
+#, fuzzy
+msgid ""
+"pull [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...] "
+"<target path>"
 msgstr ""
+"Изменение состояния одного или нескольких контейнеров %s.\n"
+"\n"
+"lxc %s [<remote>:]<container> [[<remote>:]<container>...]%s"
 
-#: lxc/restore.go:38
+#: lxc/file.go:322
+#, fuzzy
 msgid ""
-"Whether or not to restore the container's running state from snapshot (if "
-"available)"
+"push <source path> [<remote>:]<container>/<path> [[<remote>:]<container>/"
+"<path>...]"
 msgstr ""
+"Изменение состояния одного или нескольких контейнеров %s.\n"
+"\n"
+"lxc %s [<remote>:]<container> [[<remote>:]<container>...]%s"
 
-#: lxc/snapshot.go:33
-msgid "Whether or not to snapshot the container's running state"
+#: lxc/query.go:25
+msgid "query [<remote>:]<API path>"
 msgstr ""
 
-#: lxc/network.go:560 lxc/operation.go:141 lxc/remote.go:382 lxc/remote.go:387
-msgid "YES"
+#: lxc/image.go:1210
+#, fuzzy
+msgid "refresh [<remote>:]<image> [[<remote>:]<image>...]"
 msgstr ""
+"Изменение состояния одного или нескольких контейнеров %s.\n"
+"\n"
+"lxc %s [<remote>:]<container> [[<remote>:]<container>...]%s"
 
-#: lxc/exec.go:132
-msgid "You can't pass -t and -T at the same time"
+#: lxc/remote.go:32
+msgid "remote"
 msgstr ""
 
-#: lxc/exec.go:136
-msgid "You can't pass -t or -T at the same time as --mode"
+#: lxc/alias.go:195
+msgid "remove <alias>"
 msgstr ""
 
-#: lxc/copy.go:76
-msgid "You must specify a destination container name when using --target"
+#: lxc/remote.go:546
+msgid "remove <remote>"
 msgstr ""
 
-#: lxc/copy.go:71
-msgid "You must specify a source container name"
+#: lxc/config_trust.go:194
+msgid "remove [<remote>:] <hostname|fingerprint>"
 msgstr ""
 
-#: lxc/copy.go:66 lxc/move.go:71
-msgid "You must use the same source and destination remote when using --target"
+#: lxc/profile.go:630
+msgid "remove [<remote>:]<container> <profile>"
 msgstr ""
 
-#: lxc/main.go:72
-msgid "`lxc config profile` is deprecated, please use `lxc profile`"
+#: lxc/config_device.go:402
+msgid "remove [<remote>:]<container|profile> <name>..."
 msgstr ""
 
-#: lxc/alias.go:56 lxc/alias.go:102
-#, c-format
-msgid "alias %s already exists"
+#: lxc/cluster.go:235
+msgid "remove [<remote>:]<member>"
 msgstr ""
 
-#: lxc/alias.go:68 lxc/alias.go:97
-#, c-format
-msgid "alias %s doesn't exist"
+#: lxc/alias.go:144
+msgid "rename <old alias> <new alias>"
 msgstr ""
 
-#: lxc/remote.go:370
-msgid "can't remove the default remote"
+#: lxc/remote.go:484
+msgid "rename <remote> <new-name>"
 msgstr ""
 
-#: lxc/file.go:296
-msgid "can't supply uid/gid/mode in recursive mode"
+#: lxc/image_alias.go:247
+msgid "rename [<remote>:]<alias> <new-name>"
 msgstr ""
 
-#: lxc/remote.go:399
-msgid "default"
+#: lxc/rename.go:18
+#, fuzzy
+msgid "rename [<remote>:]<container>[/<snapshot>] <container>[/<snapshot>]"
 msgstr ""
+"Изменение состояния одного или нескольких контейнеров %s.\n"
+"\n"
+"lxc %s [<remote>:]<container> [[<remote>:]<container>...]%s"
 
-#: lxc/storage.go:856
-msgid "description"
+#: lxc/cluster.go:189
+msgid "rename [<remote>:]<member> <new-name>"
 msgstr ""
 
-#: lxc/init.go:315
-msgid "didn't get any affected image, container or snapshot from server"
+#: lxc/network.go:870
+msgid "rename [<remote>:]<network> <new-name>"
 msgstr ""
 
-#: lxc/image.go:594
-msgid "disabled"
+#: lxc/storage_volume.go:1023
+msgid "rename [<remote>:]<pool> <old name> <new name>"
 msgstr ""
 
-#: lxc/storage.go:855
-msgid "driver"
+#: lxc/profile.go:702
+msgid "rename [<remote>:]<profile> <new-name>"
 msgstr ""
 
-#: lxc/image.go:596
-msgid "enabled"
+#: lxc/action.go:67
+#, fuzzy
+msgid "restart [<remote>:]<container> [[<remote>:]<container>...]"
 msgstr ""
+"Изменение состояния одного или нескольких контейнеров %s.\n"
+"\n"
+"lxc %s [<remote>:]<container> [[<remote>:]<container>...]%s"
 
-#: lxc/action.go:155 lxc/main.go:33 lxc/main.go:191
-#, c-format
-msgid "error: %v"
+#: lxc/restore.go:22
+msgid "restore [<remote>:]<container> <snapshot>"
 msgstr ""
 
-#: lxc/help.go:37 lxc/main.go:133
-#, c-format
-msgid "error: unknown command: %s"
+#: lxc/config_device.go:491
+msgid "set [<remote>:]<container|profile> <device> <key> <value>"
 msgstr ""
 
-#: lxc/storage.go:853
-msgid "info"
+#: lxc/network.go:918
+msgid "set [<remote>:]<network> <key> <value>"
 msgstr ""
 
-#: lxc/storage.go:854
-msgid "name"
+#: lxc/storage.go:571
+msgid "set [<remote>:]<pool> <key> <value>"
 msgstr ""
 
-#: lxc/image.go:210 lxc/image.go:584 lxc/image.go:589
-msgid "no"
+#: lxc/storage_volume.go:1087
+msgid "set [<remote>:]<pool> <volume> <key> <value>"
 msgstr ""
 
-#: lxc/remote.go:204
-msgid "ok (y/n)?"
+#: lxc/profile.go:751
+msgid "set [<remote>:]<profile> <key> <value>"
 msgstr ""
 
-#: lxc/main.go:368 lxc/main.go:372
-#, c-format
-msgid "processing aliases failed %s\n"
+#: lxc/config.go:353
+msgid "set [<remote>:][container] <key> <value>"
 msgstr ""
 
-#: lxc/file.go:588
-msgid "recursive edit doesn't make sense :("
+#: lxc/remote.go:596
+msgid "set-default <remote>"
 msgstr ""
 
-#: lxc/remote.go:436
-#, c-format
-msgid "remote %s already exists"
+#: lxc/remote.go:634
+msgid "set-url <remote> <URL>"
 msgstr ""
 
-#: lxc/remote.go:362 lxc/remote.go:428 lxc/remote.go:463 lxc/remote.go:479
-#, c-format
-msgid "remote %s doesn't exist"
+#: lxc/config_template.go:296
+msgid "show [<remote>:]<container> <template>"
 msgstr ""
 
-#: lxc/remote.go:345
-#, c-format
-msgid "remote %s exists as <%s>"
+#: lxc/config_device.go:580
+msgid "show [<remote>:]<container|profile>"
 msgstr ""
 
-#: lxc/remote.go:366 lxc/remote.go:432 lxc/remote.go:467
-#, c-format
-msgid "remote %s is static and cannot be modified"
+#: lxc/image.go:1283
+msgid "show [<remote>:]<image>"
+msgstr ""
+
+#: lxc/cluster.go:140
+msgid "show [<remote>:]<member>"
+msgstr ""
+
+#: lxc/network.go:987
+msgid "show [<remote>:]<network>"
+msgstr ""
+
+#: lxc/operation.go:172
+msgid "show [<remote>:]<operation>"
+msgstr ""
+
+#: lxc/storage.go:643
+msgid "show [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:1164
+msgid "show [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:810
+msgid "show [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/config.go:450 lxc/config_metadata.go:174
+msgid "show [<remote>:][container]"
+msgstr ""
+
+#: lxc/snapshot.go:19
+msgid "snapshot [<remote>:]<container> <snapshot name>"
 msgstr ""
 
-#: lxc/storage.go:858
+#: lxc/storage.go:433
 msgid "space used"
 msgstr ""
 
-#: lxc/info.go:251
+#: lxc/action.go:28
+#, fuzzy
+msgid "start [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+"Изменение состояния одного или нескольких контейнеров %s.\n"
+"\n"
+"lxc %s [<remote>:]<container> [[<remote>:]<container>...]%s"
+
+#: lxc/info.go:255
 msgid "stateful"
 msgstr ""
 
-#: lxc/info.go:253
+#: lxc/info.go:257
 msgid "stateless"
 msgstr ""
 
-#: lxc/info.go:247
+#: lxc/action.go:89
+#, fuzzy
+msgid "stop [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+"Изменение состояния одного или нескольких контейнеров %s.\n"
+"\n"
+"lxc %s [<remote>:]<container> [[<remote>:]<container>...]%s"
+
+#: lxc/storage.go:31
+msgid "storage"
+msgstr ""
+
+#: lxc/info.go:251
 #, c-format
 msgid "taken at %s"
 msgstr ""
 
-#: lxc/storage.go:857
+#: lxc/config_template.go:28
+msgid "template"
+msgstr ""
+
+#: lxc/storage.go:432
 msgid "total space"
 msgstr ""
 
-#: lxc/storage.go:852
-msgid "used by"
+#: lxc/config_trust.go:28
+msgid "trust"
+msgstr ""
+
+#: lxc/config_device.go:648
+msgid "unset [<remote>:]<container|profile> <device> <key>"
+msgstr ""
+
+#: lxc/network.go:1049
+msgid "unset [<remote>:]<network> <key>"
+msgstr ""
+
+#: lxc/storage.go:727
+msgid "unset [<remote>:]<pool> <key>"
+msgstr ""
+
+#: lxc/storage_volume.go:1239
+msgid "unset [<remote>:]<pool> <volume> <key>"
+msgstr ""
+
+#: lxc/profile.go:864
+msgid "unset [<remote>:]<profile> <key>"
+msgstr ""
+
+#: lxc/config.go:558
+msgid "unset [<remote>:][container] <key>"
 msgstr ""
 
-#: lxc/main.go:299
-msgid "wrong number of subcommand arguments"
+#: lxc/storage.go:427
+msgid "used by"
 msgstr ""
 
-#: lxc/delete.go:45 lxc/image.go:208 lxc/image.go:586 lxc/image.go:591
+#: lxc/storage_volume.go:32
+#, fuzzy
+msgid "volume"
+msgstr "Столбцы"
+
+#: lxc/delete.go:46 lxc/image.go:811 lxc/image.go:816 lxc/image.go:975
 msgid "yes"
 msgstr "да"
 
+#~ msgid "Connection refused; is LXD running?"
+#~ msgstr "В соединении отказано; LXD запущен?"
+
+#, fuzzy
+#~ msgid ""
+#~ "Usage: lxc copy [<remote>:]<source>[/<snapshot>] "
+#~ "[[<remote>:]<destination>] [--ephemeral|e] [--profile|-p <profile>...] [--"
+#~ "config|-c <key=value>...] [--container-only] [--target <node>]\n"
+#~ "\n"
+#~ "Copy containers within or in between LXD instances."
+#~ msgstr ""
+#~ "Копирование контейнеров внутри или в между экземплярами LXD.\n"
+#~ "\n"
+#~ "lxc copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>] [--"
+#~ "ephemeral|e] [--profile|-p <profile>...] [--config|-c <key=value>...]"
+
 #~ msgid "'/' not allowed in snapshot name"
 #~ msgstr "Нельзя использовать '/' в имени снимка"
 
diff --git a/po/sr.po b/po/sr.po
index 3f6d0195d..316404ece 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -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: 2018-02-27 22:14-0500\n"
+"POT-Creation-Date: 2018-03-29 01:45-0400\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
@@ -16,7 +16,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: lxc/storage.go:36
+#: lxc/storage.go:220
 msgid ""
 "### This is a yaml representation of a storage pool.\n"
 "### Any line starting with a '#' will be ignored.\n"
@@ -33,7 +33,7 @@ msgid ""
 "###   zfs.pool_name: default"
 msgstr ""
 
-#: lxc/storage.go:53
+#: lxc/storage_volume.go:737
 msgid ""
 "### This is a yaml representation of a storage volume.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -47,7 +47,7 @@ msgid ""
 "###   size: \"61203283968\""
 msgstr ""
 
-#: lxc/config.go:40
+#: lxc/config.go:100
 msgid ""
 "### This is a yaml representation of the configuration.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -68,7 +68,7 @@ msgid ""
 "### Note that the name is shown but cannot be changed"
 msgstr ""
 
-#: lxc/config.go:61
+#: lxc/config_metadata.go:63
 msgid ""
 "### This is a yaml representation of the container metadata.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -92,7 +92,7 @@ msgid ""
 "###     properties: {}"
 msgstr ""
 
-#: lxc/image.go:63
+#: lxc/image.go:327
 msgid ""
 "### This is a yaml representation of the image properties.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -102,7 +102,7 @@ msgid ""
 "###  description: My custom image"
 msgstr ""
 
-#: lxc/network.go:32
+#: lxc/network.go:546
 msgid ""
 "### This is a yaml representation of the network.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -122,7 +122,7 @@ msgid ""
 "### Note that only the configuration can be changed."
 msgstr ""
 
-#: lxc/profile.go:30
+#: lxc/profile.go:408
 msgid ""
 "### This is a yaml representation of the profile.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -143,12 +143,12 @@ msgid ""
 "### Note that the name is shown but cannot be changed"
 msgstr ""
 
-#: lxc/image.go:187
+#: lxc/image.go:954
 #, c-format
 msgid "%s (%d more)"
 msgstr ""
 
-#: lxc/file.go:205
+#: lxc/file.go:677
 #, c-format
 msgid "%s is not a directory"
 msgstr ""
@@ -158,1782 +158,2673 @@ msgstr ""
 msgid "%v (interrupt two more times to force)"
 msgstr ""
 
-#: lxc/file.go:142
+#: lxc/file.go:614
 #, c-format
 msgid "'%s' isn't a supported file type."
 msgstr ""
 
-#: lxc/profile.go:337
+#: lxc/profile.go:222
 msgid "(none)"
 msgstr ""
 
-#: lxc/alias.go:84 lxc/image.go:231 lxc/image.go:1136
+#: lxc/alias.go:127 lxc/image.go:921 lxc/image_alias.go:228
 msgid "ALIAS"
 msgstr ""
 
-#: lxc/image.go:232
+#: lxc/image.go:922
 msgid "ALIASES"
 msgstr ""
 
-#: lxc/image.go:236
+#: lxc/image.go:926
 msgid "ARCH"
 msgstr ""
 
-#: lxc/list.go:467
+#: lxc/list.go:464
 msgid "ARCHITECTURE"
 msgstr ""
 
-#: lxc/remote.go:412
+#: lxc/remote.go:466
 msgid "AUTH TYPE"
 msgstr ""
 
-#: lxc/remote.go:68
+#: lxc/remote.go:88
 msgid "Accept certificate"
 msgstr ""
 
-#: lxc/query.go:38
+#: lxc/query.go:37
 msgid "Action (defaults to GET)"
 msgstr ""
 
-#: lxc/remote.go:276
+#: lxc/config_device.go:75 lxc/config_device.go:76
+msgid "Add devices to containers or profiles"
+msgstr ""
+
+#: lxc/alias.go:54 lxc/alias.go:55
+msgid "Add new aliases"
+msgstr ""
+
+#: lxc/remote.go:83 lxc/remote.go:84
+msgid "Add new remote servers"
+msgstr ""
+
+#: lxc/config_trust.go:58 lxc/config_trust.go:59
+msgid "Add new trusted clients"
+msgstr ""
+
+#: lxc/profile.go:101 lxc/profile.go:102
+msgid "Add profiles to containers"
+msgstr ""
+
+#: lxc/remote.go:325
 #, c-format
 msgid "Admin password for %s: "
 msgstr ""
 
-#: lxc/image.go:623
+#: lxc/alias.go:78 lxc/alias.go:176
+#, c-format
+msgid "Alias %s already exists"
+msgstr ""
+
+#: lxc/alias.go:170 lxc/alias.go:221
+#, c-format
+msgid "Alias %s doesn't exist"
+msgstr ""
+
+#: lxc/image_alias.go:83 lxc/image_alias.go:130 lxc/image_alias.go:274
+msgid "Alias name missing"
+msgstr ""
+
+#: lxc/image.go:854
 msgid "Aliases:"
 msgstr ""
 
-#: lxc/image.go:601 lxc/info.go:125
+#: lxc/image.go:826 lxc/info.go:129
 #, c-format
 msgid "Architecture: %s"
 msgstr ""
 
-#: lxc/remote.go:259
+#: lxc/profile.go:162 lxc/profile.go:163
+msgid "Assign sets of profiles to containers"
+msgstr ""
+
+#: lxc/network.go:103
+msgid "Attach network interfaces to containers"
+msgstr ""
+
+#: lxc/network.go:176 lxc/network.go:177
+msgid "Attach network interfaces to profiles"
+msgstr ""
+
+#: lxc/network.go:104
+msgid "Attach new network interfaces to containers"
+msgstr ""
+
+#: lxc/storage_volume.go:121 lxc/storage_volume.go:122
+msgid "Attach new storage volumes to containers"
+msgstr ""
+
+#: lxc/storage_volume.go:200 lxc/storage_volume.go:201
+msgid "Attach new storage volumes to profiles"
+msgstr ""
+
+#: lxc/console.go:31
+msgid "Attach to container consoles"
+msgstr ""
+
+#: lxc/console.go:32
+msgid ""
+"Attach to container consoles\n"
+"\n"
+"This command allows you to interact with the boot console of a container\n"
+"as well as retrieve past log entries from it."
+msgstr ""
+
+#: lxc/remote.go:308
 #, c-format
 msgid "Authentication type '%s' not supported by server"
 msgstr ""
 
-#: lxc/image.go:632
+#: lxc/image.go:864
 #, c-format
 msgid "Auto update: %s"
 msgstr ""
 
-#: lxc/image.go:707
+#: lxc/network.go:283
+#, c-format
+msgid "Bad key/value pair: %s"
+msgstr ""
+
+#: lxc/copy.go:110 lxc/init.go:118 lxc/publish.go:175 lxc/storage.go:123
+#: lxc/storage_volume.go:468
+#, c-format
+msgid "Bad key=value pair: %s"
+msgstr ""
+
+#: lxc/image.go:677
 #, c-format
 msgid "Bad property: %s"
 msgstr ""
 
-#: lxc/action.go:133
+#: lxc/action.go:212
 msgid "Both --all and container name given"
 msgstr ""
 
-#: lxc/info.go:218
+#: lxc/info.go:222
 msgid "Bytes received"
 msgstr ""
 
-#: lxc/info.go:219
+#: lxc/info.go:223
 msgid "Bytes sent"
 msgstr ""
 
-#: lxc/operation.go:156
+#: lxc/operation.go:155
 msgid "CANCELABLE"
 msgstr ""
 
-#: lxc/config.go:403
+#: lxc/config_trust.go:175
 msgid "COMMON NAME"
 msgstr ""
 
-#: lxc/info.go:182
+#: lxc/info.go:186
 msgid "CPU usage (in seconds)"
 msgstr ""
 
-#: lxc/info.go:186
+#: lxc/info.go:190
 msgid "CPU usage:"
 msgstr ""
 
-#: lxc/operation.go:157
+#: lxc/operation.go:156
 msgid "CREATED"
 msgstr ""
 
-#: lxc/list.go:468
+#: lxc/list.go:465
 msgid "CREATED AT"
 msgstr ""
 
-#: lxc/image.go:631
+#: lxc/image.go:863
 #, c-format
 msgid "Cached: %s"
 msgstr ""
 
-#: lxc/file.go:501
+#: lxc/image.go:175
+msgid "Can't provide a name for the target image"
+msgstr ""
+
+#: lxc/file.go:261
 msgid "Can't pull a directory without --recursive"
 msgstr ""
 
-#: lxc/config.go:210 lxc/network.go:619
+#: lxc/config.go:400 lxc/network.go:969
 #, c-format
 msgid "Can't read from stdin: %s"
 msgstr ""
 
-#: lxc/rename.go:41
+#: lxc/remote.go:577
+msgid "Can't remove the default remote"
+msgstr ""
+
+#: lxc/list.go:481
+msgid "Can't specify --fast with --columns"
+msgstr ""
+
+#: lxc/rename.go:48
 msgid "Can't specify a different remote for rename."
 msgstr ""
 
-#: lxc/config.go:223
-#, c-format
-msgid "Can't unset key '%s', it's not currently set"
+#: lxc/list.go:493
+msgid "Can't specify column L when not clustered"
 msgstr ""
 
-#: lxc/config.go:265 lxc/config.go:291
-#, c-format
-msgid "Can't unset key '%s', it's not currently set."
+#: lxc/file.go:399
+msgid "Can't supply uid/gid/mode in recursive mode"
 msgstr ""
 
-#: lxc/profile.go:546 lxc/storage.go:696
-msgid "Cannot provide container name to list"
+#: lxc/config.go:413
+#, c-format
+msgid "Can't unset key '%s', it's not currently set"
 msgstr ""
 
-#: lxc/remote.go:203
+#: lxc/remote.go:252
 #, c-format
 msgid "Certificate fingerprint: %s"
 msgstr ""
 
-#: lxc/remote.go:315
+#: lxc/remote.go:364
 msgid "Client certificate stored at server: "
 msgstr ""
 
-#: lxc/image.go:175 lxc/image.go:176 lxc/list.go:134 lxc/list.go:135
+#: lxc/network.go:253 lxc/network.go:663 lxc/network.go:923 lxc/network.go:992
+#: lxc/network.go:1054 lxc/storage.go:92 lxc/storage.go:331 lxc/storage.go:576
+#: lxc/storage.go:649 lxc/storage.go:732 lxc/storage_volume.go:287
+#: lxc/storage_volume.go:429 lxc/storage_volume.go:504
+#: lxc/storage_volume.go:730 lxc/storage_volume.go:856
+#: lxc/storage_volume.go:998 lxc/storage_volume.go:1028
+#: lxc/storage_volume.go:1092 lxc/storage_volume.go:1175
+#: lxc/storage_volume.go:1244
+msgid "Cluster member name"
+msgstr ""
+
+#: lxc/image.go:912 lxc/list.go:112
 msgid "Columns"
 msgstr ""
 
-#: lxc/help.go:53
-msgid "Commands:"
+#: lxc/main.go:44
+msgid "Command line client for LXD"
+msgstr ""
+
+#: lxc/main.go:45
+msgid ""
+"Command line client for LXD\n"
+"\n"
+"All of LXD's features can be driven through the various commands below.\n"
+"For help with any of those, simply call them with --help."
 msgstr ""
 
-#: lxc/copy.go:37 lxc/copy.go:38 lxc/init.go:139 lxc/init.go:140
+#: lxc/copy.go:39 lxc/init.go:42
 msgid "Config key/value to apply to the new container"
 msgstr ""
 
-#: lxc/config.go:821 lxc/config.go:886 lxc/config.go:1396 lxc/image.go:1191
-#: lxc/network.go:445 lxc/profile.go:275 lxc/storage.go:647 lxc/storage.go:1209
+#: lxc/config.go:195 lxc/config.go:259 lxc/config_metadata.go:144
+#: lxc/image.go:405 lxc/network.go:631 lxc/profile.go:490 lxc/storage.go:298
+#: lxc/storage_volume.go:822
 #, c-format
 msgid "Config parsing error: %s"
 msgstr ""
 
-#: lxc/main.go:40
-msgid "Connection refused; is LXD running?"
-msgstr ""
-
-#: lxc/console.go:132
+#: lxc/console.go:141
 msgid "Console log:"
 msgstr ""
 
-#: lxc/publish.go:71
+#: lxc/publish.go:79
 msgid "Container name is mandatory"
 msgstr ""
 
-#: lxc/copy.go:243 lxc/init.go:321
+#: lxc/copy.go:260 lxc/init.go:229
 #, c-format
 msgid "Container name is: %s"
 msgstr ""
 
-#: lxc/publish.go:250
+#: lxc/publish.go:259
 #, c-format
 msgid "Container published with fingerprint: %s"
 msgstr ""
 
-#: lxc/copy.go:45 lxc/move.go:44
+#: lxc/copy.go:44 lxc/move.go:46
 msgid "Copy a stateful container stateless"
 msgstr ""
 
-#: lxc/image.go:178
+#: lxc/image.go:138
 msgid "Copy aliases from source"
 msgstr ""
 
-#: lxc/copy.go:44
+#: lxc/copy.go:34 lxc/copy.go:35
+msgid "Copy containers within or in between LXD instances"
+msgstr ""
+
+#: lxc/image.go:130
+msgid "Copy images between servers"
+msgstr ""
+
+#: lxc/image.go:131
+msgid ""
+"Copy images between servers\n"
+"\n"
+"The auto-update flag instructs the server to keep this image up to date.\n"
+"It requires the source to be an alias and for it to be public."
+msgstr ""
+
+#: lxc/config_device.go:317 lxc/config_device.go:318
+msgid "Copy profile inherited devices and override configuration keys"
+msgstr ""
+
+#: lxc/profile.go:240 lxc/profile.go:241
+msgid "Copy profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:282 lxc/storage_volume.go:283
+msgid "Copy storage volumes"
+msgstr ""
+
+#: lxc/copy.go:43
 msgid "Copy the container without its snapshots"
 msgstr ""
 
-#: lxc/image.go:449
+#: lxc/image.go:217
 #, c-format
 msgid "Copying the image: %s"
 msgstr ""
 
-#: lxc/storage.go:1134
+#: lxc/storage_volume.go:387
 #, c-format
 msgid "Copying the storage volume: %s"
 msgstr ""
 
-#: lxc/remote.go:218
+#: lxc/remote.go:267
 msgid "Could not create server cert dir"
 msgstr ""
 
-#: lxc/file.go:70 lxc/file.go:71
+#: lxc/image_alias.go:58 lxc/image_alias.go:59
+msgid "Create aliases for existing images"
+msgstr ""
+
+#: lxc/launch.go:21 lxc/launch.go:22
+msgid "Create and start containers from images"
+msgstr ""
+
+#: lxc/file.go:191 lxc/file.go:331
 msgid "Create any directories necessary"
 msgstr ""
 
-#: lxc/image.go:606 lxc/info.go:127
+#: lxc/snapshot.go:20
+msgid "Create container snapshots"
+msgstr ""
+
+#: lxc/snapshot.go:21
+msgid ""
+"Create container snapshots\n"
+"\n"
+"When --stateful is used, LXD attempts to checkpoint the container's\n"
+"running state, including process memory state, TCP connections, ..."
+msgstr ""
+
+#: lxc/init.go:34 lxc/init.go:35
+msgid "Create containers from images"
+msgstr ""
+
+#: lxc/config_template.go:66 lxc/config_template.go:67
+msgid "Create new container file templates"
+msgstr ""
+
+#: lxc/storage_volume.go:425 lxc/storage_volume.go:426
+msgid "Create new custom storage volumes"
+msgstr ""
+
+#: lxc/network.go:249 lxc/network.go:250
+msgid "Create new networks"
+msgstr ""
+
+#: lxc/profile.go:296 lxc/profile.go:297
+msgid "Create profiles"
+msgstr ""
+
+#: lxc/storage.go:88 lxc/storage.go:89
+msgid "Create storage pools"
+msgstr ""
+
+#: lxc/image.go:832 lxc/info.go:131
 #, c-format
 msgid "Created: %s"
 msgstr ""
 
-#: lxc/init.go:200
+#: lxc/init.go:98
 #, c-format
 msgid "Creating %s"
 msgstr ""
 
-#: lxc/init.go:198
+#: lxc/init.go:96
 msgid "Creating the container"
 msgstr ""
 
-#: lxc/cluster.go:185
+#: lxc/cluster.go:121
 msgid "DATABASE"
 msgstr ""
 
-#: lxc/image.go:235 lxc/image.go:1138 lxc/list.go:469 lxc/network.go:579
-#: lxc/operation.go:154 lxc/storage.go:732 lxc/storage.go:937
+#: lxc/image.go:925 lxc/image_alias.go:230 lxc/list.go:466 lxc/network.go:784
+#: lxc/operation.go:153 lxc/storage.go:545 lxc/storage_volume.go:967
 msgid "DESCRIPTION"
 msgstr ""
 
-#: lxc/storage.go:733
+#: lxc/storage.go:546
 msgid "DRIVER"
 msgstr ""
 
-#: lxc/publish.go:39
+#: lxc/publish.go:41
 msgid "Define a compression algorithm: for image or none"
 msgstr ""
 
-#: lxc/config.go:977
+#: lxc/operation.go:53 lxc/operation.go:54
+msgid "Delete a background operation (will attempt to cancel)"
+msgstr ""
+
+#: lxc/config_template.go:109 lxc/config_template.go:110
+msgid "Delete container file templates"
+msgstr ""
+
+#: lxc/delete.go:29 lxc/delete.go:30
+msgid "Delete containers and snapshots"
+msgstr ""
+
+#: lxc/file.go:72 lxc/file.go:73
+msgid "Delete files in containers"
+msgstr ""
+
+#: lxc/image_alias.go:105 lxc/image_alias.go:106
+msgid "Delete image aliases"
+msgstr ""
+
+#: lxc/image.go:260 lxc/image.go:261
+msgid "Delete images"
+msgstr ""
+
+#: lxc/network.go:319 lxc/network.go:320
+msgid "Delete networks"
+msgstr ""
+
+#: lxc/profile.go:347 lxc/profile.go:348
+msgid "Delete profiles"
+msgstr ""
+
+#: lxc/storage.go:160 lxc/storage.go:161
+msgid "Delete storage pools"
+msgstr ""
+
+#: lxc/storage_volume.go:500 lxc/storage_volume.go:501
+msgid "Delete storage volumes"
+msgstr ""
+
+#: lxc/action.go:30 lxc/action.go:49 lxc/action.go:69 lxc/action.go:91
+#: lxc/alias.go:23 lxc/alias.go:55 lxc/alias.go:99 lxc/alias.go:147
+#: lxc/alias.go:198 lxc/cluster.go:26 lxc/cluster.go:59 lxc/cluster.go:142
+#: lxc/cluster.go:192 lxc/cluster.go:238 lxc/config.go:29 lxc/config.go:88
+#: lxc/config.go:289 lxc/config.go:355 lxc/config.go:452 lxc/config.go:560
+#: lxc/config_device.go:24 lxc/config_device.go:76 lxc/config_device.go:179
+#: lxc/config_device.go:252 lxc/config_device.go:318 lxc/config_device.go:405
+#: lxc/config_device.go:493 lxc/config_device.go:582 lxc/config_device.go:650
+#: lxc/config_metadata.go:29 lxc/config_metadata.go:54
+#: lxc/config_metadata.go:176 lxc/config_template.go:30
+#: lxc/config_template.go:67 lxc/config_template.go:110
+#: lxc/config_template.go:152 lxc/config_template.go:236
+#: lxc/config_template.go:298 lxc/config_trust.go:30 lxc/config_trust.go:59
+#: lxc/config_trust.go:115 lxc/config_trust.go:197 lxc/console.go:32
+#: lxc/copy.go:35 lxc/delete.go:30 lxc/exec.go:39 lxc/file.go:40 lxc/file.go:73
+#: lxc/file.go:122 lxc/file.go:185 lxc/file.go:324 lxc/image.go:42
+#: lxc/image.go:131 lxc/image.go:261 lxc/image.go:312 lxc/image.go:435
+#: lxc/image.go:571 lxc/image.go:776 lxc/image.go:890 lxc/image.go:1212
+#: lxc/image.go:1285 lxc/image_alias.go:26 lxc/image_alias.go:59
+#: lxc/image_alias.go:106 lxc/image_alias.go:149 lxc/image_alias.go:250
+#: lxc/info.go:29 lxc/init.go:35 lxc/launch.go:22 lxc/list.go:48 lxc/main.go:45
+#: lxc/monitor.go:31 lxc/move.go:31 lxc/network.go:32 lxc/network.go:104
+#: lxc/network.go:177 lxc/network.go:250 lxc/network.go:320 lxc/network.go:367
+#: lxc/network.go:452 lxc/network.go:537 lxc/network.go:660 lxc/network.go:719
+#: lxc/network.go:808 lxc/network.go:873 lxc/network.go:920 lxc/network.go:989
+#: lxc/network.go:1051 lxc/operation.go:25 lxc/operation.go:54
+#: lxc/operation.go:98 lxc/operation.go:174 lxc/profile.go:30
+#: lxc/profile.go:102 lxc/profile.go:163 lxc/profile.go:241 lxc/profile.go:297
+#: lxc/profile.go:348 lxc/profile.go:396 lxc/profile.go:520 lxc/profile.go:568
+#: lxc/profile.go:632 lxc/profile.go:705 lxc/profile.go:753 lxc/profile.go:812
+#: lxc/profile.go:866 lxc/publish.go:34 lxc/query.go:27 lxc/remote.go:34
+#: lxc/remote.go:84 lxc/remote.go:380 lxc/remote.go:414 lxc/remote.go:487
+#: lxc/remote.go:549 lxc/remote.go:598 lxc/remote.go:636 lxc/rename.go:20
+#: lxc/restore.go:24 lxc/snapshot.go:21 lxc/storage.go:33 lxc/storage.go:89
+#: lxc/storage.go:161 lxc/storage.go:208 lxc/storage.go:328 lxc/storage.go:383
+#: lxc/storage.go:491 lxc/storage.go:573 lxc/storage.go:645 lxc/storage.go:729
+#: lxc/storage_volume.go:34 lxc/storage_volume.go:122 lxc/storage_volume.go:201
+#: lxc/storage_volume.go:283 lxc/storage_volume.go:426
+#: lxc/storage_volume.go:501 lxc/storage_volume.go:561
+#: lxc/storage_volume.go:643 lxc/storage_volume.go:724
+#: lxc/storage_volume.go:853 lxc/storage_volume.go:918
+#: lxc/storage_volume.go:994 lxc/storage_volume.go:1025
+#: lxc/storage_volume.go:1089 lxc/storage_volume.go:1166
+#: lxc/storage_volume.go:1241
+msgid "Description"
+msgstr ""
+
+#: lxc/network.go:366 lxc/network.go:367
+msgid "Detach network interfaces from containers"
+msgstr ""
+
+#: lxc/network.go:451 lxc/network.go:452
+msgid "Detach network interfaces from profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:560 lxc/storage_volume.go:561
+msgid "Detach storage volumes from containers"
+msgstr ""
+
+#: lxc/storage_volume.go:642 lxc/storage_volume.go:643
+msgid "Detach storage volumes from profiles"
+msgstr ""
+
+#: lxc/config_device.go:163
 #, c-format
 msgid "Device %s added to %s"
 msgstr ""
 
-#: lxc/config.go:1272
+#: lxc/config_device.go:387
 #, c-format
 msgid "Device %s overridden for %s"
 msgstr ""
 
-#: lxc/config.go:1213
+#: lxc/config_device.go:476
 #, c-format
 msgid "Device %s removed from %s"
 msgstr ""
 
-#: lxc/utils.go:192 lxc/utils.go:216
+#: lxc/utils.go:133 lxc/utils.go:157
 #, c-format
 msgid "Device already exists: %s"
 msgstr ""
 
-#: lxc/image.go:1290
+#: lxc/image.go:586
 msgid "Directory import is not available on this platform"
 msgstr ""
 
-#: lxc/exec.go:71
+#: lxc/exec.go:55
 msgid "Disable pseudo-terminal allocation"
 msgstr ""
 
-#: lxc/exec.go:72
+#: lxc/exec.go:56
 msgid "Disable stdin (reads from /dev/null)"
 msgstr ""
 
-#: lxc/info.go:175
+#: lxc/info.go:179
 msgid "Disk usage:"
 msgstr ""
 
-#: lxc/list.go:638
+#: lxc/list.go:635
 msgid "EPHEMERAL"
 msgstr ""
 
-#: lxc/config.go:405
+#: lxc/config_trust.go:177
 msgid "EXPIRY DATE"
 msgstr ""
 
-#: lxc/main.go:52
-msgid "Enable debug mode"
+#: lxc/config_template.go:151 lxc/config_template.go:152
+msgid "Edit container file templates"
 msgstr ""
 
-#: lxc/main.go:51
-msgid "Enable verbose mode"
+#: lxc/config_metadata.go:53 lxc/config_metadata.go:54
+msgid "Edit container metadata files"
 msgstr ""
 
-#: lxc/exec.go:68
-msgid "Environment variable to set (e.g. HOME=/home/foo)"
+#: lxc/config.go:87 lxc/config.go:88
+msgid "Edit container or server configurations as YAML"
+msgstr ""
+
+#: lxc/file.go:121 lxc/file.go:122
+msgid "Edit files in containers"
+msgstr ""
+
+#: lxc/image.go:311 lxc/image.go:312
+msgid "Edit image properties"
+msgstr ""
+
+#: lxc/network.go:536 lxc/network.go:537
+msgid "Edit network configurations as YAML"
+msgstr ""
+
+#: lxc/profile.go:395 lxc/profile.go:396
+msgid "Edit profile configurations as YAML"
+msgstr ""
+
+#: lxc/storage.go:207 lxc/storage.go:208
+msgid "Edit storage pool configurations as YAML"
+msgstr ""
+
+#: lxc/storage_volume.go:723 lxc/storage_volume.go:724
+msgid "Edit storage volume configurations as YAML"
+msgstr ""
+
+#: lxc/list.go:504
+#, c-format
+msgid "Empty column entry (redundant, leading or trailing command) in '%s'"
 msgstr ""
 
-#: lxc/help.go:77
-msgid "Environment:"
+#: lxc/exec.go:52
+msgid "Environment variable to set (e.g. HOME=/home/foo)"
 msgstr ""
 
-#: lxc/copy.go:41 lxc/copy.go:42 lxc/init.go:143 lxc/init.go:144
+#: lxc/copy.go:41 lxc/init.go:44
 msgid "Ephemeral container"
 msgstr ""
 
-#: lxc/config.go:1446
+#: lxc/config_template.go:204
 #, c-format
 msgid "Error updating template file: %s"
 msgstr ""
 
-#: lxc/monitor.go:69
+#: lxc/monitor.go:48
 msgid "Event type to listen for"
 msgstr ""
 
-#: lxc/image.go:610
+#: lxc/exec.go:38
+msgid "Execute commands in containers"
+msgstr ""
+
+#: lxc/exec.go:39
+msgid ""
+"Execute commands in containers\n"
+"\n"
+"The command is executed directly using exec, so there is no shell and\n"
+"shell patterns (variables, file redirects, ...) won't be understood.\n"
+"If you need a shell environment you need to execute the shell\n"
+"executable, passing the shell commands as arguments, for example:\n"
+"\n"
+"  lxc exec <container> -- sh -c \"cd /tmp && pwd\"\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:838
 #, c-format
 msgid "Expires: %s"
 msgstr ""
 
-#: lxc/image.go:612
+#: lxc/image.go:840
 msgid "Expires: never"
 msgstr ""
 
-#: lxc/image.go:922
+#: lxc/image.go:434
+msgid "Export and download images"
+msgstr ""
+
+#: lxc/image.go:435
+msgid ""
+"Export and download images\n"
+"\n"
+"The output target is optional and defaults to the working directory."
+msgstr ""
+
+#: lxc/image.go:494
 #, c-format
 msgid "Exporting the image: %s"
 msgstr ""
 
-#: lxc/config.go:761
+#: lxc/config_template.go:279
 msgid "FILENAME"
 msgstr ""
 
-#: lxc/config.go:402 lxc/image.go:233 lxc/image.go:1137
+#: lxc/config_trust.go:174 lxc/image.go:923 lxc/image_alias.go:229
 msgid "FINGERPRINT"
 msgstr ""
 
-#: lxc/utils.go:261
+#: lxc/utils.go:202
 #, c-format
 msgid "Failed to create alias %s"
 msgstr ""
 
-#: lxc/manpage.go:62
-#, c-format
-msgid "Failed to generate 'lxc.%s.1': %v"
-msgstr ""
-
-#: lxc/manpage.go:55
-#, c-format
-msgid "Failed to generate 'lxc.1': %v"
-msgstr ""
-
-#: lxc/copy.go:238
+#: lxc/copy.go:255
 msgid "Failed to get the new container name"
 msgstr ""
 
-#: lxc/utils.go:251
+#: lxc/utils.go:192
 #, c-format
 msgid "Failed to remove alias %s"
 msgstr ""
 
-#: lxc/file.go:137
+#: lxc/file.go:609
 #, c-format
 msgid "Failed to walk path for %s: %s"
 msgstr ""
 
-#: lxc/list.go:137
+#: lxc/list.go:114
 msgid "Fast mode (same as --columns=nsacPt)"
 msgstr ""
 
-#: lxc/network.go:536 lxc/operation.go:121
+#: lxc/network.go:749 lxc/operation.go:126
 msgid "Filtering isn't supported yet"
 msgstr ""
 
-#: lxc/image.go:599
+#: lxc/image.go:824
 #, c-format
 msgid "Fingerprint: %s"
 msgstr ""
 
-#: lxc/exec.go:70
+#: lxc/exec.go:54
 msgid "Force pseudo-terminal allocation"
 msgstr ""
 
-#: lxc/cluster.go:42
-msgid "Force removing a node, even if degraded"
+#: lxc/cluster.go:242
+msgid "Force removing a member, even if degraded"
 msgstr ""
 
-#: lxc/action.go:47 lxc/action.go:48
+#: lxc/action.go:121
 msgid "Force the container to shutdown"
 msgstr ""
 
-#: lxc/delete.go:34 lxc/delete.go:35
+#: lxc/delete.go:34
 msgid "Force the removal of running containers"
 msgstr ""
 
-#: lxc/main.go:53
+#: lxc/main.go:56
 msgid "Force using the local unix socket"
 msgstr ""
 
-#: lxc/image.go:181 lxc/list.go:136
+#: lxc/image.go:913 lxc/list.go:113
 msgid "Format (csv|json|table|yaml)"
 msgstr ""
 
-#: lxc/remote.go:166
+#: lxc/remote.go:211
 msgid "Generating a client certificate. This may take a minute..."
 msgstr ""
 
-#: lxc/network.go:513
+#: lxc/config_device.go:178 lxc/config_device.go:179
+msgid "Get values for container device configuration keys"
+msgstr ""
+
+#: lxc/config.go:288 lxc/config.go:289
+msgid "Get values for container or server configuration keys"
+msgstr ""
+
+#: lxc/network.go:659 lxc/network.go:660
+msgid "Get values for network configuration keys"
+msgstr ""
+
+#: lxc/profile.go:519 lxc/profile.go:520
+msgid "Get values for profile configuration keys"
+msgstr ""
+
+#: lxc/storage.go:327 lxc/storage.go:328
+msgid "Get values for storage pool configuration keys"
+msgstr ""
+
+#: lxc/storage_volume.go:852 lxc/storage_volume.go:853
+msgid "Get values for storage volume configuration keys"
+msgstr ""
+
+#: lxc/network.go:851
 msgid "HOSTNAME"
 msgstr ""
 
-#: lxc/operation.go:152
+#: lxc/operation.go:151
 msgid "ID"
 msgstr ""
 
-#: lxc/network.go:515
+#: lxc/network.go:853
 msgid "IP ADDRESS"
 msgstr ""
 
-#: lxc/list.go:465
+#: lxc/list.go:462
 msgid "IPV4"
 msgstr ""
 
-#: lxc/list.go:466
+#: lxc/list.go:463
 msgid "IPV6"
 msgstr ""
 
-#: lxc/config.go:404
+#: lxc/config_trust.go:176
 msgid "ISSUE DATE"
 msgstr ""
 
-#: lxc/main.go:171
+#: lxc/main.go:259
 msgid ""
 "If this is your first time running LXD on this machine, you should also run: "
 "lxd init"
 msgstr ""
 
-#: lxc/main.go:54
-msgid "Ignore aliases when determining what command to run"
-msgstr ""
-
-#: lxc/action.go:51
-msgid "Ignore the container state (only for start)"
+#: lxc/action.go:117
+msgid "Ignore the container state"
 msgstr ""
 
-#: lxc/image.go:557
+#: lxc/image.go:1268
 msgid "Image already up to date."
 msgstr ""
 
-#: lxc/image.go:463
+#: lxc/image.go:231
 msgid "Image copied successfully!"
 msgstr ""
 
-#: lxc/image.go:982
+#: lxc/image.go:554
 msgid "Image exported successfully!"
 msgstr ""
 
-#: lxc/image.go:778
+#: lxc/image.go:284 lxc/image.go:1235
+msgid "Image identifier missing"
+msgstr ""
+
+#: lxc/image.go:352
+#, c-format
+msgid "Image identifier missing: %s"
+msgstr ""
+
+#: lxc/image.go:749
 #, c-format
 msgid "Image imported with fingerprint: %s"
 msgstr ""
 
-#: lxc/image.go:555
+#: lxc/image.go:1266
 msgid "Image refreshed successfully!"
 msgstr ""
 
-#: lxc/query.go:39
+#: lxc/image.go:571
+msgid ""
+"Import image into the image store\n"
+"\n"
+"Directory import is only available on Linux and must be performed as root."
+msgstr ""
+
+#: lxc/image.go:570
+msgid "Import images into the image store"
+msgstr ""
+
+#: lxc/query.go:38
 msgid "Input data"
 msgstr ""
 
-#: lxc/init.go:149
+#: lxc/init.go:47
 msgid "Instance type"
 msgstr ""
 
-#: lxc/remote.go:118
+#: lxc/remote.go:163
 #, c-format
 msgid "Invalid URL scheme \"%s\" in \"%s\""
 msgstr ""
 
-#: lxc/config.go:383
+#: lxc/config_trust.go:155
 msgid "Invalid certificate"
 msgstr ""
 
-#: lxc/init.go:32 lxc/init.go:37
-msgid "Invalid configuration key"
+#: lxc/list.go:525
+#, c-format
+msgid "Invalid config key '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:520
+#, c-format
+msgid "Invalid config key column format (too many fields): '%s'"
+msgstr ""
+
+#: lxc/image.go:1196 lxc/list.go:386
+#, c-format
+msgid "Invalid format %q"
+msgstr ""
+
+#: lxc/list.go:543
+#, c-format
+msgid "Invalid max width (must -1, 0 or a positive integer) '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:540
+#, c-format
+msgid "Invalid max width (must be an integer) '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:531
+#, c-format
+msgid ""
+"Invalid name in '%s', empty string is only allowed when defining maxWidth"
+msgstr ""
+
+#: lxc/main.go:341
+msgid "Invalid number of arguments"
 msgstr ""
 
-#: lxc/file.go:560
+#: lxc/file.go:97
 #, c-format
 msgid "Invalid path %s"
 msgstr ""
 
-#: lxc/remote.go:107
+#: lxc/remote.go:152
 #, c-format
 msgid "Invalid protocol: %s"
 msgstr ""
 
-#: lxc/file.go:473
+#: lxc/file.go:243
 #, c-format
 msgid "Invalid source %s"
 msgstr ""
 
-#: lxc/file.go:250
+#: lxc/file.go:352
 #, c-format
 msgid "Invalid target %s"
 msgstr ""
 
-#: lxc/info.go:156
+#: lxc/info.go:160
 msgid "Ips:"
 msgstr ""
 
-#: lxc/image.go:179
+#: lxc/image.go:139
 msgid "Keep the image up to date after initial copy"
 msgstr ""
 
-#: lxc/list.go:470
+#: lxc/list.go:467
 msgid "LAST USED AT"
 msgstr ""
 
-#: lxc/list.go:492
+#: lxc/list.go:489
 msgid "LOCATION"
 msgstr ""
 
-#: lxc/main.go:38
-msgid "LXD socket not found; is LXD installed and running?"
+#: lxc/cluster.go:94
+msgid "LXD server isn't part of a cluster"
 msgstr ""
 
-#: lxc/image.go:615
+#: lxc/image.go:844
 #, c-format
 msgid "Last used: %s"
 msgstr ""
 
-#: lxc/image.go:617
+#: lxc/image.go:846
 msgid "Last used: never"
 msgstr ""
 
-#: lxc/info.go:119
-#, c-format
-msgid "Location: %s"
-msgstr ""
-
-#: lxc/info.go:271
-msgid "Log:"
-msgstr ""
-
-#: lxc/network.go:514
-msgid "MAC ADDRESS"
-msgstr ""
-
-#: lxc/network.go:578
-msgid "MANAGED"
+#: lxc/network.go:807 lxc/network.go:808
+msgid "List DHCP leases"
 msgstr ""
 
-#: lxc/cluster.go:187
-msgid "MESSAGE"
+#: lxc/alias.go:98 lxc/alias.go:99
+msgid "List aliases"
 msgstr ""
 
-#: lxc/image.go:177
-msgid "Make image public"
+#: lxc/cluster.go:58 lxc/cluster.go:59
+msgid "List all the cluster members"
 msgstr ""
 
-#: lxc/publish.go:35
-msgid "Make the image public"
+#: lxc/network.go:718 lxc/network.go:719
+msgid "List available networks"
 msgstr ""
 
-#: lxc/info.go:193
-msgid "Memory (current)"
+#: lxc/storage.go:490 lxc/storage.go:491
+msgid "List available storage pools"
 msgstr ""
 
-#: lxc/info.go:197
-msgid "Memory (peak)"
+#: lxc/operation.go:97 lxc/operation.go:98
+msgid "List background operations"
 msgstr ""
 
-#: lxc/info.go:209
-msgid "Memory usage:"
+#: lxc/config_device.go:251 lxc/config_device.go:252
+msgid "List container devices"
 msgstr ""
 
-#: lxc/monitor.go:70
-msgid "Minimum level for log messages"
+#: lxc/config_template.go:235 lxc/config_template.go:236
+msgid "List container file templates"
 msgstr ""
 
-#: lxc/utils.go:143
-msgid "Missing summary."
+#: lxc/list.go:47
+msgid "List containers"
 msgstr ""
 
-#: lxc/network.go:303 lxc/network.go:356 lxc/storage.go:435 lxc/storage.go:565
-msgid "More than one device matches, specify the device name."
-msgstr ""
+#: lxc/list.go:48
+msgid ""
+"List containers\n"
+"\n"
+"Default column layout: ns46tS\n"
+"Fast column layout: nsacPt\n"
+"\n"
+"== Filters ==\n"
+"A single keyword like \"web\" which will list any container with a name "
+"starting by \"web\".\n"
+"A regular expression on the container name. (e.g. .*web.*01$).\n"
+"A key/value pair referring to a configuration item. For those, the\n"
+"namespace can be abbreviated to the smallest unambiguous identifier.\n"
+"\n"
+"Examples:\n"
+"  - \"user.blah=abc\" will list all containers with the \"blah\" user "
+"property set to \"abc\".\n"
+"  - \"u.blah=abc\" will do the same\n"
+"  - \"security.privileged=true\" will list all privileged containers\n"
+"  - \"s.privileged=true\" will do the same\n"
+"\n"
+"A regular expression matching a configuration item or its value. (e.g. "
+"volatile.eth0.hwaddr=00:16:3e:.*).\n"
+"\n"
+"== Columns ==\n"
+"The -c option takes a comma separated list of arguments that control\n"
+"which container attributes to output when displaying in table or csv\n"
+"format.\n"
+"\n"
+"Column arguments are either pre-defined shorthand chars (see below),\n"
+"or (extended) config keys.\n"
+"\n"
+"Commas between consecutive shorthand chars are optional.\n"
+"\n"
+"Pre-defined column shorthand chars:\n"
+"  4 - IPv4 address\n"
+"  6 - IPv6 address\n"
+"  a - Architecture\n"
+"  b - Storage pool\n"
+"  c - Creation date\n"
+"  d - Description\n"
+"  l - Last used date\n"
+"  n - Name\n"
+"  N - Number of Processes\n"
+"  p - PID of the container's init process\n"
+"  P - Profiles\n"
+"  s - State\n"
+"  S - Number of snapshots\n"
+"  t - Type (persistent or ephemeral)\n"
+"  L - Location of the container (e.g. its node)\n"
+"\n"
+"Custom columns are defined with \"key[:name][:maxWidth]\":\n"
+"  KEY: The (extended) config key to display\n"
+"  NAME: Name to display in the column header.\n"
+"  Defaults to the key if not specified or empty.\n"
+"\n"
+"  MAXWIDTH: Max width of the column (longer results are truncated).\n"
+"  Defaults to -1 (unlimited). Use 0 to limit to the column header size."
+msgstr ""
+
+#: lxc/image_alias.go:148
+msgid "List image aliases"
+msgstr ""
+
+#: lxc/image_alias.go:149
+msgid ""
+"List image aliases\n"
+"\n"
+"Filters may be part of the image hash or part of the image alias name.\n"
+msgstr ""
+
+#: lxc/image.go:889
+msgid "List images"
+msgstr ""
+
+#: lxc/image.go:890
+msgid ""
+"List images\n"
+"\n"
+"Filters may be of the <key>=<value> form for property based filtering,\n"
+"or part of the image hash or part of the image alias name.\n"
+"\n"
+"The -c option takes a (optionally comma-separated) list of arguments\n"
+"that control which image attributes to output when displaying in table\n"
+"or csv format.\n"
+"\n"
+"Default column layout is: lfpdasu\n"
+"\n"
+"Column shorthand chars:\n"
+"\n"
+"    l - Shortest image alias (and optionally number of other aliases)\n"
+"    L - Newline-separated list of all image aliases\n"
+"    f - Fingerprint\n"
+"    p - Whether image is public\n"
+"    d - Description\n"
+"    a - Architecture\n"
+"    s - Size"
+msgstr ""
+
+#: lxc/profile.go:567 lxc/profile.go:568
+msgid "List profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:917 lxc/storage_volume.go:918
+msgid "List storage volumes"
+msgstr ""
+
+#: lxc/remote.go:413 lxc/remote.go:414
+msgid "List the available remotes"
+msgstr ""
+
+#: lxc/config_trust.go:114 lxc/config_trust.go:115
+msgid "List trusted clients"
+msgstr ""
+
+#: lxc/operation.go:24 lxc/operation.go:25
+msgid "List, show and delete background operations"
+msgstr ""
+
+#: lxc/info.go:123
+#, c-format
+msgid "Location: %s"
+msgstr ""
+
+#: lxc/info.go:275
+msgid "Log:"
+msgstr ""
+
+#: lxc/network.go:852
+msgid "MAC ADDRESS"
+msgstr ""
+
+#: lxc/network.go:783
+msgid "MANAGED"
+msgstr ""
+
+#: lxc/cluster.go:123
+msgid "MESSAGE"
+msgstr ""
+
+#: lxc/image.go:137 lxc/image.go:576
+msgid "Make image public"
+msgstr ""
+
+#: lxc/publish.go:38
+msgid "Make the image public"
+msgstr ""
+
+#: lxc/network.go:32
+msgid "Manage an attach containers to networks"
+msgstr ""
+
+#: lxc/network.go:31
+msgid "Manage and attach containers to networks"
+msgstr ""
+
+#: lxc/cluster.go:25 lxc/cluster.go:26
+msgid "Manage cluster members"
+msgstr ""
+
+#: lxc/alias.go:22 lxc/alias.go:23
+msgid "Manage command aliases"
+msgstr ""
+
+#: lxc/config.go:28 lxc/config.go:29
+msgid "Manage container and server configuration options"
+msgstr ""
+
+#: lxc/config_device.go:23 lxc/config_device.go:24
+msgid "Manage container devices"
+msgstr ""
+
+#: lxc/config_template.go:29 lxc/config_template.go:30
+msgid "Manage container file templates"
+msgstr ""
+
+#: lxc/config_metadata.go:28 lxc/config_metadata.go:29
+msgid "Manage container metadata files"
+msgstr ""
+
+#: lxc/file.go:39 lxc/file.go:40
+msgid "Manage files in containers"
+msgstr ""
+
+#: lxc/image_alias.go:25 lxc/image_alias.go:26
+msgid "Manage image aliases"
+msgstr ""
+
+#: lxc/image.go:41
+msgid "Manage images"
+msgstr ""
+
+#: lxc/image.go:42
+msgid ""
+"Manage images\n"
+"\n"
+"In LXD containers are created from images. Those images were themselves\n"
+"either generated from an existing container or downloaded from an image\n"
+"server.\n"
+"\n"
+"When using remote images, LXD will automatically cache images for you\n"
+"and remove them upon expiration.\n"
+"\n"
+"The image unique identifier is the hash (sha-256) of its representation\n"
+"as a compressed tarball (or for split images, the concatenation of the\n"
+"metadata and rootfs tarballs).\n"
+"\n"
+"Images can be referenced by their full hash, shortest unique partial\n"
+"hash or alias name (if one is set)."
+msgstr ""
+
+#: lxc/profile.go:29 lxc/profile.go:30
+msgid "Manage profiles"
+msgstr ""
+
+#: lxc/storage.go:32 lxc/storage.go:33
+msgid "Manage storage pools and volumes"
+msgstr ""
+
+#: lxc/storage_volume.go:33
+msgid "Manage storage volumes"
+msgstr ""
+
+#: lxc/storage_volume.go:34
+msgid ""
+"Manage storage volumes\n"
+"\n"
+"Unless specified through a prefix, all volume operations affect \"custom"
+"\" (user created) volumes."
+msgstr ""
+
+#: lxc/remote.go:33 lxc/remote.go:34
+msgid "Manage the list of remote servers"
+msgstr ""
+
+#: lxc/config_trust.go:29 lxc/config_trust.go:30
+msgid "Manage trusted clients"
+msgstr ""
+
+#: lxc/info.go:197
+msgid "Memory (current)"
+msgstr ""
+
+#: lxc/info.go:201
+msgid "Memory (peak)"
+msgstr ""
+
+#: lxc/info.go:213
+msgid "Memory usage:"
+msgstr ""
+
+#: lxc/monitor.go:49
+msgid "Minimum level for log messages"
+msgstr ""
+
+#: lxc/config_metadata.go:102 lxc/config_metadata.go:200
+#: lxc/config_template.go:91 lxc/config_template.go:134
+#: lxc/config_template.go:176 lxc/config_template.go:260
+#: lxc/config_template.go:322 lxc/profile.go:197 lxc/profile.go:656
+msgid "Missing container name"
+msgstr ""
+
+#: lxc/profile.go:126
+msgid "Missing container.name name"
+msgstr ""
+
+#: lxc/config_device.go:103 lxc/config_device.go:203 lxc/config_device.go:276
+#: lxc/config_device.go:342 lxc/config_device.go:429 lxc/config_device.go:517
+#: lxc/config_device.go:606
+msgid "Missing name"
+msgstr ""
+
+#: lxc/network.go:128 lxc/network.go:201 lxc/network.go:344 lxc/network.go:391
+#: lxc/network.go:476 lxc/network.go:581 lxc/network.go:686 lxc/network.go:832
+#: lxc/network.go:897 lxc/network.go:946 lxc/network.go:1015
+msgid "Missing network name"
+msgstr ""
+
+#: lxc/storage.go:185 lxc/storage.go:252 lxc/storage.go:353 lxc/storage.go:408
+#: lxc/storage.go:603 lxc/storage.go:677 lxc/storage_volume.go:146
+#: lxc/storage_volume.go:225 lxc/storage_volume.go:451
+#: lxc/storage_volume.go:526 lxc/storage_volume.go:585
+#: lxc/storage_volume.go:667 lxc/storage_volume.go:766
+#: lxc/storage_volume.go:878 lxc/storage_volume.go:942
+#: lxc/storage_volume.go:1050 lxc/storage_volume.go:1114
+#: lxc/storage_volume.go:1197
+msgid "Missing pool name"
+msgstr ""
+
+#: lxc/profile.go:321 lxc/profile.go:372 lxc/profile.go:444 lxc/profile.go:544
+#: lxc/profile.go:729 lxc/profile.go:777 lxc/profile.go:836
+msgid "Missing profile name"
+msgstr ""
+
+#: lxc/profile.go:266
+msgid "Missing source profile name"
+msgstr ""
 
-#: lxc/file.go:460
+#: lxc/storage_volume.go:311
+msgid "Missing source volume name"
+msgstr ""
+
+#: lxc/file.go:446
+msgid "Missing target directory"
+msgstr ""
+
+#: lxc/monitor.go:30
+msgid "Monitor a local or remote LXD server"
+msgstr ""
+
+#: lxc/monitor.go:31
+msgid ""
+"Monitor a local or remote LXD server\n"
+"\n"
+"By default the monitor will listen to all message types."
+msgstr ""
+
+#: lxc/network.go:411 lxc/network.go:496 lxc/storage_volume.go:605
+#: lxc/storage_volume.go:686
+msgid "More than one device matches, specify the device name."
+msgstr ""
+
+#: lxc/file.go:224
 msgid "More than one file to download, but target is not a directory"
 msgstr ""
 
-#: lxc/move.go:42
+#: lxc/move.go:30 lxc/move.go:31
+msgid "Move containers within or in between LXD instances"
+msgstr ""
+
+#: lxc/storage_volume.go:993 lxc/storage_volume.go:994
+msgid "Move storage volumes between pools"
+msgstr ""
+
+#: lxc/move.go:44
 msgid "Move the container without its snapshots"
 msgstr ""
 
-#: lxc/storage.go:1128
+#: lxc/storage_volume.go:375
 #, c-format
 msgid "Moving the storage volume: %s"
 msgstr ""
 
-#: lxc/image.go:1292
+#: lxc/image.go:588
 msgid "Must run as root to import from directory"
 msgstr ""
 
-#: lxc/action.go:74
+#: lxc/action.go:147
 msgid "Must supply container name for: "
 msgstr ""
 
-#: lxc/cluster.go:183 lxc/list.go:471 lxc/network.go:576 lxc/profile.go:573
-#: lxc/remote.go:409 lxc/storage.go:731 lxc/storage.go:936
+#: lxc/cluster.go:119 lxc/list.go:468 lxc/network.go:781 lxc/profile.go:613
+#: lxc/remote.go:463 lxc/storage.go:544 lxc/storage_volume.go:966
 msgid "NAME"
 msgstr ""
 
-#: lxc/network.go:558 lxc/operation.go:139 lxc/remote.go:380 lxc/remote.go:385
+#: lxc/network.go:763 lxc/operation.go:138 lxc/remote.go:434 lxc/remote.go:439
 msgid "NO"
 msgstr ""
 
-#: lxc/storage.go:941
+#: lxc/storage_volume.go:971
 msgid "NODE"
 msgstr ""
 
-#: lxc/info.go:117
+#: lxc/info.go:121
 #, c-format
 msgid "Name: %s"
 msgstr ""
 
-#: lxc/network.go:276
+#: lxc/network.go:303
 #, c-format
 msgid "Network %s created"
 msgstr ""
 
-#: lxc/network.go:393
+#: lxc/network.go:353
 #, c-format
 msgid "Network %s deleted"
 msgstr ""
 
-#: lxc/network.go:274
+#: lxc/network.go:301
 #, c-format
 msgid "Network %s pending on node %s"
 msgstr ""
 
-#: lxc/network.go:470
+#: lxc/network.go:906
 #, c-format
 msgid "Network %s renamed to %s"
 msgstr ""
 
-#: lxc/init.go:145 lxc/init.go:146
+#: lxc/init.go:45
 msgid "Network name"
 msgstr ""
 
-#: lxc/info.go:226
+#: lxc/info.go:230
 msgid "Network usage:"
 msgstr ""
 
-#: lxc/image.go:180 lxc/publish.go:36
+#: lxc/publish.go:39
 msgid "New alias to define at target"
 msgstr ""
 
-#: lxc/config.go:414
-msgid "No certificate provided to add"
+#: lxc/image.go:140 lxc/image.go:577
+msgid "New aliases to add to the image"
 msgstr ""
 
-#: lxc/network.go:312 lxc/network.go:365
+#: lxc/network.go:420 lxc/network.go:505
 msgid "No device found for this network"
 msgstr ""
 
-#: lxc/storage.go:444 lxc/storage.go:574
+#: lxc/storage_volume.go:614 lxc/storage_volume.go:695
 msgid "No device found for this storage volume."
 msgstr ""
 
-#: lxc/config.go:446
-msgid "No fingerprint specified."
-msgstr ""
-
-#: lxc/cluster.go:143
+#: lxc/cluster.go:268
 #, c-format
 msgid "Node %s removed"
 msgstr ""
 
-#: lxc/cluster.go:119
+#: lxc/cluster.go:221
 #, c-format
 msgid "Node %s renamed to %s"
 msgstr ""
 
-#: lxc/copy.go:46 lxc/init.go:150 lxc/move.go:45 lxc/network.go:105
-#: lxc/storage.go:165
+#: lxc/copy.go:45 lxc/init.go:48 lxc/move.go:47
 msgid "Node name"
 msgstr ""
 
-#: lxc/storage.go:388 lxc/storage.go:481
+#: lxc/storage_volume.go:164 lxc/storage_volume.go:243
 msgid "Only \"custom\" volumes can be attached to containers."
 msgstr ""
 
-#: lxc/remote.go:101
+#: lxc/remote.go:146
 msgid "Only https URLs are supported for simplestreams"
 msgstr ""
 
-#: lxc/image.go:688
+#: lxc/image.go:658
 msgid "Only https:// is supported for remote image import."
 msgstr ""
 
-#: lxc/network.go:421 lxc/network.go:605
+#: lxc/network.go:607 lxc/network.go:960
 msgid "Only managed networks can be modified."
 msgstr ""
 
-#: lxc/operation.go:85
+#: lxc/operation.go:83
 #, c-format
 msgid "Operation %s deleted"
 msgstr ""
 
-#: lxc/help.go:71 lxc/main.go:139 lxc/main.go:195
-msgid "Options:"
-msgstr ""
-
-#: lxc/exec.go:69
+#: lxc/exec.go:53
 msgid "Override the terminal mode (auto, interactive or non-interactive)"
 msgstr ""
 
-#: lxc/list.go:641
+#: lxc/list.go:638
 msgid "PERSISTENT"
 msgstr ""
 
-#: lxc/list.go:473
+#: lxc/list.go:470
 msgid "PID"
 msgstr ""
 
-#: lxc/list.go:472
+#: lxc/list.go:469
 msgid "PROCESSES"
 msgstr ""
 
-#: lxc/list.go:474
+#: lxc/list.go:471
 msgid "PROFILES"
 msgstr ""
 
-#: lxc/remote.go:411
+#: lxc/remote.go:465
 msgid "PROTOCOL"
 msgstr ""
 
-#: lxc/image.go:234 lxc/remote.go:413
+#: lxc/image.go:924 lxc/remote.go:467
 msgid "PUBLIC"
 msgstr ""
 
-#: lxc/info.go:220
+#: lxc/info.go:224
 msgid "Packets received"
 msgstr ""
 
-#: lxc/info.go:221
+#: lxc/info.go:225
 msgid "Packets sent"
 msgstr ""
 
-#: lxc/help.go:78
-msgid "Path to an alternate client configuration directory"
-msgstr ""
-
-#: lxc/help.go:79
-msgid "Path to an alternate server directory"
-msgstr ""
-
-#: lxc/main.go:240
-msgid "Pause containers."
-msgstr ""
-
-#: lxc/main.go:42
-msgid "Permission denied, are you in the lxd group?"
+#: lxc/action.go:48 lxc/action.go:49
+msgid "Pause containers"
 msgstr ""
 
-#: lxc/info.go:138
+#: lxc/info.go:142
 #, c-format
 msgid "Pid: %d"
 msgstr ""
 
-#: lxc/network.go:446 lxc/profile.go:276 lxc/storage.go:648 lxc/storage.go:1210
+#: lxc/network.go:632 lxc/profile.go:491 lxc/storage.go:299
+#: lxc/storage_volume.go:823
 msgid "Press enter to open the editor again"
 msgstr ""
 
-#: lxc/config.go:822 lxc/config.go:887 lxc/config.go:1397 lxc/config.go:1447
-#: lxc/image.go:1192
+#: lxc/config.go:196 lxc/config.go:260 lxc/config_metadata.go:145
+#: lxc/config_template.go:205 lxc/image.go:406
 msgid "Press enter to start the editor again"
 msgstr ""
 
-#: lxc/monitor.go:68
+#: lxc/monitor.go:47
 msgid "Pretty rendering"
 msgstr ""
 
-#: lxc/help.go:73
-msgid "Print debug information"
-msgstr ""
-
-#: lxc/help.go:72
-msgid "Print less common commands"
+#: lxc/main.go:55
+msgid "Print help"
 msgstr ""
 
-#: lxc/query.go:37
+#: lxc/query.go:36
 msgid "Print the raw response"
 msgstr ""
 
-#: lxc/help.go:74
-msgid "Print verbose information"
+#: lxc/main.go:54
+msgid "Print version number"
 msgstr ""
 
-#: lxc/info.go:162
+#: lxc/info.go:166
 #, c-format
 msgid "Processes: %d"
 msgstr ""
 
-#: lxc/profile.go:362
+#: lxc/main_aliases.go:123 lxc/main_aliases.go:131
+#, c-format
+msgid "Processing aliases failed: %s\n"
+msgstr ""
+
+#: lxc/profile.go:147
 #, c-format
 msgid "Profile %s added to %s"
 msgstr ""
 
-#: lxc/profile.go:226
+#: lxc/profile.go:333
 #, c-format
 msgid "Profile %s created"
 msgstr ""
 
-#: lxc/profile.go:310
+#: lxc/profile.go:381
 #, c-format
 msgid "Profile %s deleted"
 msgstr ""
 
-#: lxc/profile.go:397
+#: lxc/profile.go:690
 #, c-format
 msgid "Profile %s removed from %s"
 msgstr ""
 
-#: lxc/profile.go:300
+#: lxc/profile.go:738
 #, c-format
 msgid "Profile %s renamed to %s"
 msgstr ""
 
-#: lxc/copy.go:39 lxc/copy.go:40 lxc/init.go:141 lxc/init.go:142
+#: lxc/copy.go:40 lxc/init.go:43
 msgid "Profile to apply to the new container"
 msgstr ""
 
-#: lxc/profile.go:339
+#: lxc/profile.go:225
 #, c-format
 msgid "Profiles %s applied to %s"
 msgstr ""
 
-#: lxc/info.go:136
+#: lxc/info.go:140
 #, c-format
 msgid "Profiles: %s"
 msgstr ""
 
-#: lxc/image.go:619
+#: lxc/image.go:849
 msgid "Properties:"
 msgstr ""
 
-#: lxc/remote.go:72
+#: lxc/remote.go:92
 msgid "Public image server"
 msgstr ""
 
-#: lxc/image.go:602
+#: lxc/image.go:827
 #, c-format
 msgid "Public: %s"
 msgstr ""
 
-#: lxc/file.go:68 lxc/file.go:69
-msgid "Recursively push or pull files"
+#: lxc/publish.go:33 lxc/publish.go:34
+msgid "Publish containers as images"
 msgstr ""
 
-#: lxc/image.go:529
-#, c-format
-msgid "Refreshing the image: %s"
+#: lxc/file.go:184 lxc/file.go:185
+msgid "Pull files from containers"
 msgstr ""
 
-#: lxc/remote.go:69
-msgid "Remote admin password"
+#: lxc/file.go:323 lxc/file.go:324
+msgid "Push files into containers"
 msgstr ""
 
-#: lxc/utils/cancel.go:34
-msgid "Remote operation canceled by user"
+#: lxc/file.go:192 lxc/file.go:330
+msgid "Recursively transfer files"
+msgstr ""
+
+#: lxc/image.go:1211 lxc/image.go:1212
+msgid "Refresh images"
 msgstr ""
 
-#: lxc/info.go:122
+#: lxc/image.go:1239
 #, c-format
-msgid "Remote: %s"
+msgid "Refreshing the image: %s"
 msgstr ""
 
-#: lxc/delete.go:42
+#: lxc/remote.go:515
 #, c-format
-msgid "Remove %s (yes/no): "
+msgid "Remote %s already exists"
 msgstr ""
 
-#: lxc/storage.go:1247
+#: lxc/remote.go:507 lxc/remote.go:569 lxc/remote.go:618 lxc/remote.go:656
 #, c-format
-msgid "Renamed storage volume from \"%s\" to \"%s\""
+msgid "Remote %s doesn't exist"
 msgstr ""
 
-#: lxc/delete.go:36 lxc/delete.go:37
-msgid "Require user confirmation"
+#: lxc/remote.go:116
+#, c-format
+msgid "Remote %s exists as <%s>"
 msgstr ""
 
-#: lxc/info.go:159
-msgid "Resources:"
+#: lxc/remote.go:511 lxc/remote.go:573 lxc/remote.go:660
+#, c-format
+msgid "Remote %s is static and cannot be modified"
 msgstr ""
 
-#: lxc/main.go:248
-msgid "Restart containers."
+#: lxc/remote.go:89
+msgid "Remote admin password"
 msgstr ""
 
-#: lxc/console.go:38
-msgid "Retrieve the container's console log"
+#: lxc/utils/cancel.go:34
+msgid "Remote operation canceled by user"
 msgstr ""
 
-#: lxc/init.go:293
+#: lxc/info.go:126
 #, c-format
-msgid "Retrieving image: %s"
+msgid "Remote: %s"
 msgstr ""
 
-#: lxc/action.go:52
-msgid "Run command against all containers"
+#: lxc/delete.go:42
+#, c-format
+msgid "Remove %s (yes/no): "
 msgstr ""
 
-#: lxc/image.go:237
-msgid "SIZE"
+#: lxc/cluster.go:237 lxc/cluster.go:238
+msgid "Remove a member from the cluster"
 msgstr ""
 
-#: lxc/list.go:475
-msgid "SNAPSHOTS"
+#: lxc/alias.go:197 lxc/alias.go:198
+msgid "Remove aliases"
 msgstr ""
 
-#: lxc/storage.go:738
-msgid "SOURCE"
+#: lxc/config_device.go:404 lxc/config_device.go:405
+msgid "Remove container devices"
 msgstr ""
 
-#: lxc/cluster.go:186 lxc/list.go:476 lxc/network.go:583 lxc/storage.go:736
-msgid "STATE"
+#: lxc/profile.go:631 lxc/profile.go:632
+msgid "Remove profiles from containers"
 msgstr ""
 
-#: lxc/remote.go:414
-msgid "STATIC"
+#: lxc/remote.go:548 lxc/remote.go:549
+msgid "Remove remotes"
 msgstr ""
 
-#: lxc/operation.go:155
-msgid "STATUS"
+#: lxc/config_trust.go:196 lxc/config_trust.go:197
+msgid "Remove trusted clients"
 msgstr ""
 
-#: lxc/list.go:478
-msgid "STORAGE POOL"
+#: lxc/cluster.go:191 lxc/cluster.go:192
+msgid "Rename a cluster member"
 msgstr ""
 
-#: lxc/remote.go:71
-msgid "Server authentication type (tls or macaroons)"
+#: lxc/alias.go:146 lxc/alias.go:147 lxc/image_alias.go:249
+#: lxc/image_alias.go:250
+msgid "Rename aliases"
 msgstr ""
 
-#: lxc/remote.go:211
-msgid "Server certificate NACKed by user"
+#: lxc/rename.go:19 lxc/rename.go:20
+msgid "Rename containers and snapshots"
 msgstr ""
 
-#: lxc/remote.go:311
-msgid "Server doesn't trust us after authentication"
+#: lxc/network.go:872 lxc/network.go:873
+msgid "Rename networks"
 msgstr ""
 
-#: lxc/remote.go:70
-msgid "Server protocol (lxd or simplestreams)"
+#: lxc/profile.go:704 lxc/profile.go:705
+msgid "Rename profiles"
 msgstr ""
 
-#: lxc/file.go:66
-msgid "Set the file's gid on push"
+#: lxc/remote.go:486 lxc/remote.go:487
+msgid "Rename remotes"
 msgstr ""
 
-#: lxc/file.go:67
-msgid "Set the file's perms on push"
+#: lxc/storage_volume.go:1024 lxc/storage_volume.go:1025
+msgid "Rename storage volumes"
 msgstr ""
 
-#: lxc/file.go:65
-msgid "Set the file's uid on push"
+#: lxc/storage_volume.go:1073
+#, c-format
+msgid "Renamed storage volume from \"%s\" to \"%s\""
 msgstr ""
 
-#: lxc/help.go:29
-msgid "Show all commands (not just interesting ones)"
+#: lxc/delete.go:35
+msgid "Require user confirmation"
 msgstr ""
 
-#: lxc/help.go:75
-msgid "Show client version"
+#: lxc/info.go:163
+msgid "Resources:"
 msgstr ""
 
-#: lxc/info.go:40
-msgid "Show the container's last 100 log lines?"
+#: lxc/action.go:68
+msgid "Restart containers"
 msgstr ""
 
-#: lxc/config.go:36
-msgid "Show the expanded configuration"
+#: lxc/action.go:69
+msgid ""
+"Restart containers\n"
+"\n"
+"The opposite of \"lxc pause\" is \"lxc start\"."
 msgstr ""
 
-#: lxc/info.go:41
-msgid "Show the resources available to the server"
+#: lxc/restore.go:23
+msgid "Restore containers from snapshots"
 msgstr ""
 
-#: lxc/storage.go:163
-msgid "Show the resources available to the storage pool"
+#: lxc/restore.go:24
+msgid ""
+"Restore containers from snapshots\n"
+"\n"
+"If --stateful is passed, then the running state will be restored too."
+msgstr ""
+
+#: lxc/console.go:39
+msgid "Retrieve the container's console log"
+msgstr ""
+
+#: lxc/init.go:201
+#, c-format
+msgid "Retrieving image: %s"
+msgstr ""
+
+#: lxc/action.go:112
+msgid "Run command against all containers"
+msgstr ""
+
+#: lxc/image.go:927
+msgid "SIZE"
+msgstr ""
+
+#: lxc/list.go:472
+msgid "SNAPSHOTS"
+msgstr ""
+
+#: lxc/storage.go:551
+msgid "SOURCE"
+msgstr ""
+
+#: lxc/cluster.go:122 lxc/list.go:473 lxc/network.go:788 lxc/storage.go:549
+msgid "STATE"
+msgstr ""
+
+#: lxc/remote.go:468
+msgid "STATIC"
+msgstr ""
+
+#: lxc/operation.go:154
+msgid "STATUS"
+msgstr ""
+
+#: lxc/list.go:475
+msgid "STORAGE POOL"
+msgstr ""
+
+#: lxc/query.go:26 lxc/query.go:27
+msgid "Send a raw query to LXD"
+msgstr ""
+
+#: lxc/remote.go:91
+msgid "Server authentication type (tls or macaroons)"
+msgstr ""
+
+#: lxc/remote.go:260
+msgid "Server certificate NACKed by user"
+msgstr ""
+
+#: lxc/remote.go:360
+msgid "Server doesn't trust us after authentication"
+msgstr ""
+
+#: lxc/remote.go:90
+msgid "Server protocol (lxd or simplestreams)"
+msgstr ""
+
+#: lxc/config_device.go:492 lxc/config_device.go:493
+msgid "Set container device configuration keys"
+msgstr ""
+
+#: lxc/config.go:354 lxc/config.go:355
+msgid "Set container or server configuration keys"
+msgstr ""
+
+#: lxc/network.go:919 lxc/network.go:920
+msgid "Set network configuration keys"
+msgstr ""
+
+#: lxc/profile.go:752 lxc/profile.go:753
+msgid "Set profile configuration keys"
+msgstr ""
+
+#: lxc/storage.go:572 lxc/storage.go:573
+msgid "Set storage pool configuration keys"
+msgstr ""
+
+#: lxc/storage_volume.go:1088 lxc/storage_volume.go:1089
+msgid "Set storage volume configuration keys"
+msgstr ""
+
+#: lxc/remote.go:635 lxc/remote.go:636
+msgid "Set the URL for the remote"
+msgstr ""
+
+#: lxc/remote.go:597 lxc/remote.go:598
+msgid "Set the default remote"
+msgstr ""
+
+#: lxc/file.go:333
+msgid "Set the file's gid on push"
+msgstr ""
+
+#: lxc/file.go:334
+msgid "Set the file's perms on push"
+msgstr ""
+
+#: lxc/file.go:332
+msgid "Set the file's uid on push"
+msgstr ""
+
+#: lxc/main.go:57
+msgid "Show all debug messages"
+msgstr ""
+
+#: lxc/main.go:58
+msgid "Show all information messages"
+msgstr ""
+
+#: lxc/config_metadata.go:175 lxc/config_metadata.go:176
+msgid "Show container metadata files"
+msgstr ""
+
+#: lxc/config.go:451 lxc/config.go:452
+msgid "Show container or server configurations"
+msgstr ""
+
+#: lxc/info.go:28 lxc/info.go:29
+msgid "Show container or server information"
+msgstr ""
+
+#: lxc/config_template.go:297 lxc/config_template.go:298
+msgid "Show content of container file templates"
+msgstr ""
+
+#: lxc/cluster.go:141 lxc/cluster.go:142
+msgid "Show details of a cluster member"
+msgstr ""
+
+#: lxc/operation.go:173 lxc/operation.go:174
+msgid "Show details on a background operation"
+msgstr ""
+
+#: lxc/config_device.go:581 lxc/config_device.go:582
+msgid "Show full device configuration for containers or profiles"
+msgstr ""
+
+#: lxc/image.go:1284 lxc/image.go:1285
+msgid "Show image properties"
+msgstr ""
+
+#: lxc/main.go:61
+msgid "Show less common commands"
 msgstr ""
 
-#: lxc/storage.go:164
+#: lxc/network.go:988 lxc/network.go:989
+msgid "Show network configurations"
+msgstr ""
+
+#: lxc/profile.go:811 lxc/profile.go:812
+msgid "Show profile configurations"
+msgstr ""
+
+#: lxc/storage.go:644 lxc/storage.go:645
+msgid "Show storage pool configurations and resources"
+msgstr ""
+
+#: lxc/storage_volume.go:1165
+msgid "Show storage volum configurations"
+msgstr ""
+
+#: lxc/storage_volume.go:1166
+msgid "Show storage volume configurations"
+msgstr ""
+
+#: lxc/info.go:39
+msgid "Show the container's last 100 log lines?"
+msgstr ""
+
+#: lxc/remote.go:379 lxc/remote.go:380
+msgid "Show the default remote"
+msgstr ""
+
+#: lxc/config.go:455
+msgid "Show the expanded configuration"
+msgstr ""
+
+#: lxc/info.go:40
+msgid "Show the resources available to the server"
+msgstr ""
+
+#: lxc/storage.go:648
+msgid "Show the resources available to the storage pool"
+msgstr ""
+
+#: lxc/storage.go:386
 msgid "Show the used and free space in bytes"
 msgstr ""
 
-#: lxc/image.go:600
+#: lxc/image.go:775 lxc/image.go:776
+msgid "Show useful information about images"
+msgstr ""
+
+#: lxc/storage.go:382 lxc/storage.go:383
+msgid "Show useful information about storage pools"
+msgstr ""
+
+#: lxc/image.go:825
 #, c-format
 msgid "Size: %.2fMB"
 msgstr ""
 
-#: lxc/info.go:240
+#: lxc/info.go:244
 msgid "Snapshots:"
 msgstr ""
 
-#: lxc/action.go:163
+#: lxc/action.go:242
 #, c-format
 msgid "Some containers failed to %s"
 msgstr ""
 
-#: lxc/image.go:634
+#: lxc/image.go:867
 msgid "Source:"
 msgstr ""
 
-#: lxc/main.go:258
-msgid "Start containers."
+#: lxc/action.go:29 lxc/action.go:30
+msgid "Start containers"
 msgstr ""
 
-#: lxc/launch.go:59
+#: lxc/launch.go:62
 #, c-format
 msgid "Starting %s"
 msgstr ""
 
-#: lxc/info.go:130
+#: lxc/info.go:134
 #, c-format
 msgid "Status: %s"
 msgstr ""
 
-#: lxc/main.go:264
-msgid "Stop containers."
+#: lxc/action.go:90 lxc/action.go:91
+msgid "Stop containers"
 msgstr ""
 
-#: lxc/publish.go:37 lxc/publish.go:38
+#: lxc/publish.go:40
 msgid "Stop the container if currently running"
 msgstr ""
 
-#: lxc/publish.go:136
+#: lxc/publish.go:144
 msgid "Stopping container failed!"
 msgstr ""
 
-#: lxc/delete.go:121
+#: lxc/delete.go:120
 #, c-format
 msgid "Stopping the container failed: %s"
 msgstr ""
 
-#: lxc/storage.go:538
+#: lxc/storage.go:144
 #, c-format
 msgid "Storage pool %s created"
 msgstr ""
 
-#: lxc/storage.go:598
+#: lxc/storage.go:194
 #, c-format
 msgid "Storage pool %s deleted"
 msgstr ""
 
-#: lxc/storage.go:536
+#: lxc/storage.go:142
 #, c-format
 msgid "Storage pool %s pending on node %s"
 msgstr ""
 
-#: lxc/init.go:147 lxc/init.go:148
+#: lxc/init.go:46
 msgid "Storage pool name"
 msgstr ""
 
-#: lxc/storage.go:980
+#: lxc/storage_volume.go:484
 #, c-format
 msgid "Storage volume %s created"
 msgstr ""
 
-#: lxc/storage.go:1000
+#: lxc/storage_volume.go:545
 #, c-format
 msgid "Storage volume %s deleted"
 msgstr ""
 
-#: lxc/storage.go:1135
+#: lxc/storage_volume.go:388
 msgid "Storage volume copied successfully!"
 msgstr ""
 
-#: lxc/storage.go:1129
+#: lxc/storage_volume.go:376
 msgid "Storage volume moved successfully!"
 msgstr ""
 
-#: lxc/action.go:50
-msgid "Store the container state (only for stop)"
+#: lxc/action.go:115
+msgid "Store the container state"
 msgstr ""
 
-#: lxc/info.go:201
+#: lxc/info.go:205
 msgid "Swap (current)"
 msgstr ""
 
-#: lxc/info.go:205
+#: lxc/info.go:209
 msgid "Swap (peak)"
 msgstr ""
 
-#: lxc/alias.go:85
+#: lxc/alias.go:128
 msgid "TARGET"
 msgstr ""
 
-#: lxc/list.go:477 lxc/network.go:516 lxc/network.go:577 lxc/operation.go:153
-#: lxc/storage.go:935
+#: lxc/list.go:474 lxc/network.go:782 lxc/network.go:854 lxc/operation.go:152
+#: lxc/storage_volume.go:965
 msgid "TYPE"
 msgstr ""
 
-#: lxc/delete.go:105
+#: lxc/delete.go:104
 msgid "The container is currently running, stop it first or pass --force."
 msgstr ""
 
-#: lxc/publish.go:101
+#: lxc/publish.go:109
 msgid ""
 "The container is currently running. Use --force to have it stopped and "
 "restarted."
 msgstr ""
 
-#: lxc/init.go:372
+#: lxc/init.go:280
 msgid "The container you are starting doesn't have any network attached to it."
 msgstr ""
 
-#: lxc/config.go:944 lxc/config.go:961 lxc/config.go:1240
+#: lxc/config_device.go:130 lxc/config_device.go:147 lxc/config_device.go:354
 msgid "The device already exists"
 msgstr ""
 
-#: lxc/config.go:1007 lxc/config.go:1019 lxc/config.go:1055 lxc/config.go:1073
-#: lxc/config.go:1119 lxc/config.go:1136 lxc/config.go:1179 lxc/config.go:1197
+#: lxc/config_device.go:218 lxc/config_device.go:230 lxc/config_device.go:442
+#: lxc/config_device.go:460 lxc/config_device.go:533 lxc/config_device.go:550
 msgid "The device doesn't exist"
 msgstr ""
 
-#: lxc/init.go:356
+#: lxc/init.go:264
 #, c-format
 msgid "The local image '%s' couldn't be found, trying '%s:%s' instead."
 msgstr ""
 
-#: lxc/init.go:352
+#: lxc/init.go:260
 #, c-format
 msgid "The local image '%s' couldn't be found, trying '%s:' instead."
 msgstr ""
 
-#: lxc/action.go:35
-msgid "The opposite of \"lxc pause\" is \"lxc start\"."
-msgstr ""
-
-#: lxc/config.go:1245
+#: lxc/config_device.go:359
 msgid "The profile device doesn't exist"
 msgstr ""
 
-#: lxc/network.go:317 lxc/network.go:370 lxc/storage.go:449 lxc/storage.go:579
+#: lxc/network.go:425 lxc/network.go:510 lxc/storage_volume.go:619
+#: lxc/storage_volume.go:700
 msgid "The specified device doesn't exist"
 msgstr ""
 
-#: lxc/network.go:321 lxc/network.go:374
+#: lxc/network.go:429 lxc/network.go:514
 msgid "The specified device doesn't match the network"
 msgstr ""
 
-#: lxc/publish.go:74
+#: lxc/publish.go:82
 msgid "There is no \"image name\".  Did you want an alias?"
 msgstr ""
 
-#: lxc/help.go:47
-msgid ""
-"This is the LXD command line client.\n"
-"\n"
-"All of LXD's features can be driven through the various commands below.\n"
-"For help with any of those, simply call them with --help."
-msgstr ""
-
-#: lxc/action.go:46
+#: lxc/action.go:122
 msgid "Time to wait for the container before killing it"
 msgstr ""
 
-#: lxc/image.go:603
+#: lxc/image.go:828
 msgid "Timestamps:"
 msgstr ""
 
-#: lxc/init.go:374
+#: lxc/init.go:282
 msgid "To attach a network to a container, use: lxc network attach"
 msgstr ""
 
-#: lxc/init.go:373
+#: lxc/init.go:281
 msgid "To create a new network, use: lxc network create"
 msgstr ""
 
-#: lxc/console.go:173
+#: lxc/console.go:185
 msgid "To detach from the console, press: <ctrl>+a q"
 msgstr ""
 
-#: lxc/main.go:172
+#: lxc/main.go:260
 msgid "To start your first container, try: lxc launch ubuntu:16.04"
 msgstr ""
 
-#: lxc/copy.go:43 lxc/move.go:43
+#: lxc/storage_volume.go:997
+msgid "Transfer mode, one of pull (default), push or relay"
+msgstr ""
+
+#: lxc/copy.go:42
+msgid "Transfer mode. One of pull (default), push or relay"
+msgstr ""
+
+#: lxc/move.go:45 lxc/storage_volume.go:286
 msgid "Transfer mode. One of pull (default), push or relay."
 msgstr ""
 
-#: lxc/copy.go:212
+#: lxc/copy.go:229
 #, c-format
 msgid "Transferring container: %s"
 msgstr ""
 
-#: lxc/image.go:717
+#: lxc/image.go:687
 #, c-format
 msgid "Transferring image: %s"
 msgstr ""
 
-#: lxc/action.go:108 lxc/launch.go:77
+#: lxc/action.go:181 lxc/launch.go:80
 #, c-format
 msgid "Try `lxc info --show-log %s` for more info"
 msgstr ""
 
-#: lxc/info.go:132
+#: lxc/info.go:136
 msgid "Type: ephemeral"
 msgstr ""
 
-#: lxc/info.go:134
+#: lxc/info.go:138
 msgid "Type: persistent"
 msgstr ""
 
-#: lxc/image.go:238
+#: lxc/image.go:928
 msgid "UPLOAD DATE"
 msgstr ""
 
-#: lxc/cluster.go:184 lxc/remote.go:410
+#: lxc/cluster.go:120 lxc/remote.go:464
 msgid "URL"
 msgstr ""
 
-#: lxc/network.go:580 lxc/profile.go:574 lxc/storage.go:740 lxc/storage.go:938
+#: lxc/network.go:785 lxc/profile.go:614 lxc/storage.go:553
+#: lxc/storage_volume.go:968
 msgid "USED BY"
 msgstr ""
 
-#: lxc/manpage.go:36
-msgid "Unable to find help2man."
+#: lxc/list.go:514
+#, c-format
+msgid "Unknown column shorthand char '%c' in '%s'"
 msgstr ""
 
-#: lxc/file.go:124
+#: lxc/file.go:596
 #, c-format
 msgid "Unknown file type '%s'"
 msgstr ""
 
-#: lxc/image.go:608
-#, c-format
-msgid "Uploaded: %s"
+#: lxc/config_device.go:649 lxc/config_device.go:650
+msgid "Unset container device configuration keys"
 msgstr ""
 
-#: lxc/action.go:38
-#, c-format
-msgid ""
-"Usage: lxc %s [--all] [<remote>:]<container> [[<remote>:]<container>...]\n"
-"\n"
-"%s%s"
+#: lxc/config.go:559 lxc/config.go:560
+msgid "Unset container or server configuration keys"
 msgstr ""
 
-#: lxc/help.go:45
-msgid "Usage: lxc <command> [options]"
+#: lxc/network.go:1050 lxc/network.go:1051
+msgid "Unset network configuration keys"
 msgstr ""
 
-#: lxc/alias.go:22
-msgid ""
-"Usage: lxc alias <subcommand> [options]\n"
-"\n"
-"Manage command aliases.\n"
-"\n"
-"lxc alias add <alias> <target>\n"
-"    Add a new alias <alias> pointing to <target>.\n"
-"\n"
-"lxc alias remove <alias>\n"
-"    Remove the alias <alias>.\n"
-"\n"
-"lxc alias list\n"
-"    List all the aliases.\n"
-"\n"
-"lxc alias rename <old alias> <new alias>\n"
-"    Rename remote <old alias> to <new alias>."
+#: lxc/profile.go:865 lxc/profile.go:866
+msgid "Unset profile configuration keys"
 msgstr ""
 
-#: lxc/cluster.go:23
-msgid ""
-"Usage: lxc cluster <subcommand> [options]\n"
-"\n"
-"Manage cluster nodes.\n"
-"\n"
-"lxc cluster list [<remote>:]\n"
-"    List all nodes in the cluster.\n"
-"\n"
-"lxc cluster show [<remote>:]<node>\n"
-"    Show details of a node.\n"
-"\n"
-"lxc cluster rename [<remote>:]<node> <new-name>\n"
-"    Rename a cluster node.\n"
-"\n"
-"lxc cluster delete [<remote>:]<node> [--force]\n"
-"    Delete a node from the cluster."
+#: lxc/storage.go:728 lxc/storage.go:729
+msgid "Unset storage pool configuration keys"
 msgstr ""
 
-#: lxc/config.go:85
-msgid ""
-"Usage: lxc config <subcommand> [options]\n"
-"\n"
-"Change container or server configuration options.\n"
-"\n"
-"*Container configuration*\n"
-"\n"
-"lxc config get [<remote>:][container] <key>\n"
-"    Get container or server configuration key.\n"
-"\n"
-"lxc config set [<remote>:][container] <key> <value>\n"
-"    Set container or server configuration key.\n"
-"\n"
-"lxc config unset [<remote>:][container] <key>\n"
-"    Unset container or server configuration key.\n"
-"\n"
-"lxc config show [<remote>:][container] [--expanded]\n"
-"    Show container or server configuration.\n"
-"\n"
-"lxc config edit [<remote>:][container]\n"
-"    Edit configuration, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"*Container metadata*\n"
-"\n"
-"lxc config metadata show [<remote>:][container]\n"
-"    Show the container metadata.yaml content.\n"
-"\n"
-"lxc config metadata edit [<remote>:][container]\n"
-"    Edit the container metadata.yaml, either by launching external editor or "
-"reading STDIN.\n"
-"\n"
-"*Container templates*\n"
-"\n"
-"lxc config template list [<remote>:][container]\n"
-"    List the names of template files for a container.\n"
-"\n"
-"lxc config template show [<remote>:][container] [template]\n"
-"    Show the content of a template file for a container.\n"
-"\n"
-"lxc config template create [<remote>:][container] [template]\n"
-"    Add an empty template file for a container.\n"
-"\n"
-"lxc config template edit [<remote>:][container] [template]\n"
-"    Edit the content of a template file for a container, either by launching "
-"external editor or reading STDIN.\n"
-"\n"
-"lxc config template delete [<remote>:][container] [template]\n"
-"    Delete a template file for a container.\n"
-"\n"
-"\n"
-"*Device management*\n"
-"\n"
-"lxc config device add [<remote>:]<container> <device> <type> [key=value...]\n"
-"    Add a device to a container.\n"
-"\n"
-"lxc config device get [<remote>:]<container> <device> <key>\n"
-"    Get a device property.\n"
-"\n"
-"lxc config device set [<remote>:]<container> <device> <key> <value>\n"
-"    Set a device property.\n"
-"\n"
-"lxc config device unset [<remote>:]<container> <device> <key>\n"
-"    Unset a device property.\n"
-"\n"
-"lxc config device override [<remote>:]<container> <device> [key=value...]\n"
-"    Copy a profile inherited device into local container config.\n"
-"\n"
-"lxc config device list [<remote>:]<container>\n"
-"    List devices for container.\n"
-"\n"
-"lxc config device show [<remote>:]<container>\n"
-"    Show full device details for container.\n"
-"\n"
-"lxc config device remove [<remote>:]<container> <name>...\n"
-"    Remove device from container.\n"
-"\n"
-"*Client trust store management*\n"
-"\n"
-"lxc config trust list [<remote>:]\n"
-"    List all trusted certs.\n"
-"\n"
-"lxc config trust add [<remote>:] <certfile.crt>\n"
-"    Add certfile.crt to trusted hosts.\n"
-"\n"
-"lxc config trust remove [<remote>:] [hostname|fingerprint]\n"
-"    Remove the cert from trusted hosts.\n"
-"\n"
-"*Examples*\n"
-"\n"
-"cat config.yaml | lxc config edit <container>\n"
-"    Update the container configuration from config.yaml.\n"
-"\n"
-"lxc config device add [<remote>:]container1 <device-name> disk source=/share/"
-"c1 path=opt\n"
-"    Will mount the host's /share/c1 onto /opt in the container.\n"
-"\n"
-"lxc config set [<remote>:]<container> limits.cpu 2\n"
-"    Will set a CPU limit of \"2\" for the container.\n"
-"\n"
-"lxc config set core.https_address [::]:8443\n"
-"    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
-"\n"
-"lxc config set core.trust_password blah\n"
-"    Will set the server's trust password to blah."
+#: lxc/storage_volume.go:1240 lxc/storage_volume.go:1241
+msgid "Unset storage volume configuration keys"
 msgstr ""
 
-#: lxc/console.go:31
-msgid ""
-"Usage: lxc console [<remote>:]<container> [-l]\n"
-"\n"
-"Interact with the container's console device and log."
+#: lxc/image.go:835
+#, c-format
+msgid "Uploaded: %s"
 msgstr ""
 
-#: lxc/copy.go:30
-msgid ""
-"Usage: lxc copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>] "
-"[--ephemeral|e] [--profile|-p <profile>...] [--config|-c <key=value>...] [--"
-"container-only] [--target <node>]\n"
-"\n"
-"Copy containers within or in between LXD instances."
+#: lxc/delete.go:47
+msgid "User aborted delete operation"
 msgstr ""
 
-#: lxc/delete.go:27
+#: lxc/utils/cancel.go:40
 msgid ""
-"Usage: lxc delete [<remote>:]<container>[/<snapshot>] "
-"[[<remote>:]<container>[/<snapshot>]...]\n"
-"\n"
-"Delete containers and snapshots."
+"User signaled us three times, exiting. The remote operation will keep "
+"running."
 msgstr ""
 
-#: lxc/exec.go:53
-msgid ""
-"Usage: lxc exec [<remote>:]<container> [-t] [-T] [-n] [--mode=auto|"
-"interactive|non-interactive] [--env KEY=VALUE...] [--] <command line>\n"
-"\n"
-"Execute commands in containers.\n"
-"\n"
-"The command is executed directly using exec, so there is no shell and shell "
-"patterns (variables, file redirects, ...)\n"
-"won't be understood. If you need a shell environment you need to execute the "
-"shell executable, passing the shell commands\n"
-"as arguments, for example:\n"
-"\n"
-"    lxc exec <container> -- sh -c \"cd /tmp && pwd\"\n"
-"\n"
-"Mode defaults to non-interactive, interactive mode is selected if both stdin "
-"AND stdout are terminals (stderr is ignored)."
+#: lxc/query.go:35
+msgid "Wait for the operation to complete"
 msgstr ""
 
-#: lxc/file.go:39
+#: lxc/restore.go:36
 msgid ""
-"Usage: lxc file <subcommand> [options]\n"
-"\n"
-"Manage files in containers.\n"
-"\n"
-"lxc file pull [-r|--recursive] [<remote>:]<container>/<path> "
-"[[<remote>:]<container>/<path>...] <target path>\n"
-"    Pull files from containers.\n"
-"\n"
-"lxc file push [-r|--recursive] [-p|--create-dirs] [--uid=UID] [--gid=GID] [--"
-"mode=MODE] <source path> [<source path>...] [<remote>:]<container>/<path>\n"
-"    Push files into containers.\n"
-"\n"
-"lxc file delete [<remote>:]<container>/<path> [[<remote>:]<container>/"
-"<path>...]\n"
-"    Delete files in containers.\n"
-"\n"
-"lxc file edit [<remote>:]<container>/<path>\n"
-"    Edit files in containers using the default text editor.\n"
-"\n"
-"*Examples*\n"
-"lxc file push /etc/hosts foo/etc/hosts\n"
-"   To push /etc/hosts into the container \"foo\".\n"
-"\n"
-"lxc file pull foo/etc/hosts .\n"
-"   To pull /etc/hosts from the container and write it to the current "
-"directory."
+"Whether or not to restore the container's running state from snapshot (if "
+"available)"
 msgstr ""
 
-#: lxc/finger.go:15
-msgid ""
-"Usage: lxc finger [<remote>:]\n"
-"\n"
-"Check if the LXD server is alive."
+#: lxc/snapshot.go:31
+msgid "Whether or not to snapshot the container's running state"
 msgstr ""
 
-#: lxc/help.go:22
-msgid ""
-"Usage: lxc help [--all]\n"
-"\n"
-"Help page for the LXD client."
+#: lxc/network.go:765 lxc/operation.go:140 lxc/remote.go:436 lxc/remote.go:441
+msgid "YES"
 msgstr ""
 
-#: lxc/image.go:73
-msgid ""
-"Usage: lxc image <subcommand> [options]\n"
-"\n"
-"Manipulate container images.\n"
-"\n"
-"In LXD containers are created from images. Those images were themselves\n"
-"either generated from an existing container or downloaded from an image\n"
-"server.\n"
-"\n"
-"When using remote images, LXD will automatically cache images for you\n"
-"and remove them upon expiration.\n"
-"\n"
-"The image unique identifier is the hash (sha-256) of its representation\n"
-"as a compressed tarball (or for split images, the concatenation of the\n"
-"metadata and rootfs tarballs).\n"
-"\n"
-"Images can be referenced by their full hash, shortest unique partial\n"
-"hash or alias name (if one is set).\n"
-"\n"
-"\n"
-"lxc image import <tarball>|<dir> [<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) or an image directory into the LXD "
-"image store.\n"
-"    Directory import is only available on Linux and must be performed as "
-"root.\n"
-"\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"
-"    Delete one or more images from the LXD image store.\n"
-"\n"
-"lxc image refresh [<remote>:]<image> [[<remote>:]<image>...]\n"
-"    Refresh one or more images from its parent remote.\n"
-"\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"
-"    The target may be an existing directory, file name, or \"-\" to specify\n"
-"    stdout.  The target MUST be a directory when exporting a split image.\n"
-"    If the target is a directory, the image's name (each part's name for\n"
-"    split images) as found in the database will be used for the exported\n"
-"    image.  If the target is a file (not a directory and not stdout), then\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"
-"    Print everything LXD knows about a given image.\n"
-"\n"
-"lxc image list [<remote>:] [filter] [--format csv|json|table|yaml] [-c "
-"<columns>]\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"
-"    The -c option takes a (optionally comma-separated) list of arguments "
-"that\n"
-"    control which image attributes to output when displaying in table or "
-"csv\n"
-"    format.\n"
-"\n"
-"    Default column layout is: lfpdasu\n"
-"\n"
-"    Column shorthand chars:\n"
-"\n"
-"        l - Shortest image alias (and optionally number of other aliases)\n"
-"\n"
-"        L - Newline-separated list of all image aliases\n"
-"\n"
-"        f - Fingerprint\n"
-"\n"
-"        p - Whether image is public\n"
-"\n"
-"        d - Description\n"
-"\n"
-"        a - Architecture\n"
-"\n"
-"        s - Size\n"
-"\n"
-"        u - Upload date\n"
-"\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"
-"    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"
-"    Create a new alias for an existing image.\n"
-"\n"
-"lxc image alias rename [<remote>:]<alias> <new-name>\n"
-"    Rename an alias.\n"
-"\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."
+#: lxc/exec.go:122
+msgid "You can't pass -t and -T at the same time"
 msgstr ""
 
-#: lxc/info.go:27
+#: lxc/exec.go:126
+msgid "You can't pass -t or -T at the same time as --mode"
+msgstr ""
+
+#: lxc/copy.go:78
+msgid "You must specify a destination container name when using --target"
+msgstr ""
+
+#: lxc/copy.go:73 lxc/move.go:188
+msgid "You must specify a source container name"
+msgstr ""
+
+#: lxc/copy.go:68 lxc/move.go:91 lxc/move.go:183
+msgid "You must use the same source and destination remote when using --target"
+msgstr ""
+
+#: lxc/alias.go:53
+msgid "add <alias> <target>"
+msgstr ""
+
+#: lxc/config_trust.go:57
+msgid "add [<remote>:] <cert>"
+msgstr ""
+
+#: lxc/profile.go:100
+msgid "add [<remote>:]<container> <profile>"
+msgstr ""
+
+#: lxc/config_device.go:74
+msgid "add [<remote>:]<container|profile> <device> <type> [key=value...]"
+msgstr ""
+
+#: lxc/remote.go:82
+msgid "add [<remote>] <IP|FQDN|URL>"
+msgstr ""
+
+#: lxc/alias.go:21 lxc/image_alias.go:24
+msgid "alias"
+msgstr ""
+
+#: lxc/profile.go:160
+msgid "assign [<remote>:]<container> <profiles>"
+msgstr ""
+
+#: lxc/network.go:102
+msgid "attach [<remote>:]<network> <container> [device name] [interface name]"
+msgstr ""
+
+#: lxc/storage_volume.go:120
+msgid "attach [<remote>:]<pool> <volume> <container> [device name] <path>"
+msgstr ""
+
+#: lxc/storage_volume.go:199
 msgid ""
-"Usage: lxc info [<remote>:][<container>] [--show-log] [--resources]\n"
-"\n"
-"Show container or server information.\n"
-"\n"
-"lxc info [<remote>:]<container> [--show-log]\n"
-"    For container information.\n"
-"\n"
-"lxc info [<remote>:] [--resources]\n"
-"    For LXD server information."
+"attach-profile [<remote:>]<pool> <volume> <profile> [device name] <path>"
 msgstr ""
 
-#: lxc/init.go:79
+#: lxc/network.go:175
 msgid ""
-"Usage: lxc init [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
-"profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
-"<node>]\n"
-"\n"
-"Create containers from images.\n"
-"\n"
-"Not specifying -p will result in the default profile.\n"
-"Specifying \"-p\" with no argument will result in no profile.\n"
-"\n"
-"Examples:\n"
-"    lxc init ubuntu:16.04 u1"
+"attach-profile [<remote>:]<network> <profile> [device name] [interface name]"
+msgstr ""
+
+#: lxc/cluster.go:24
+msgid "cluster"
+msgstr ""
+
+#: lxc/config.go:27
+msgid "config"
+msgstr ""
+
+#: lxc/console.go:30
+msgid "console [<remote>:]<container>"
+msgstr ""
+
+#: lxc/storage_volume.go:280
+msgid "copy <pool>/<volume> <pool>/<volume>"
+msgstr ""
+
+#: lxc/image.go:128
+msgid "copy [<remote>:]<image> <remote>:"
+msgstr ""
+
+#: lxc/profile.go:238
+msgid "copy [<remote>:]<profile> [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/copy.go:32
+msgid "copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>]"
+msgstr ""
+
+#: lxc/image_alias.go:57
+msgid "create [<remote>:]<alias> <fingerprint>"
+msgstr ""
+
+#: lxc/config_template.go:65
+msgid "create [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/network.go:248
+msgid "create [<remote>:]<network> [key=value...]"
+msgstr ""
+
+#: lxc/storage.go:87
+msgid "create [<remote>:]<pool> <driver> [key=value]..."
+msgstr ""
+
+#: lxc/storage_volume.go:424
+msgid "create [<remote>:]<pool> <volume> [key=value]..."
+msgstr ""
+
+#: lxc/profile.go:295
+msgid "create [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/remote.go:453
+msgid "default"
+msgstr ""
+
+#: lxc/image_alias.go:103
+msgid "delete [<remote>:]<alias>"
+msgstr ""
+
+#: lxc/config_template.go:107
+msgid "delete [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/file.go:70
+msgid "delete [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...]"
+msgstr ""
+
+#: lxc/delete.go:27
+msgid ""
+"delete [<remote>:]<container>[/<snapshot>] [[<remote>:]<container>[/"
+"<snapshot>]...]"
+msgstr ""
+
+#: lxc/image.go:258
+msgid "delete [<remote>:]<image> [[<remote>:]<image>...]"
+msgstr ""
+
+#: lxc/network.go:317
+msgid "delete [<remote>:]<network>"
+msgstr ""
+
+#: lxc/operation.go:51
+msgid "delete [<remote>:]<operation>"
+msgstr ""
+
+#: lxc/storage.go:158
+msgid "delete [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:498
+msgid "delete [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:345
+msgid "delete [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/storage.go:431
+msgid "description"
+msgstr ""
+
+#: lxc/network.go:365
+msgid "detach [<remote>:]<network> <container> [device name]"
+msgstr ""
+
+#: lxc/storage_volume.go:559
+msgid "detach [<remote>:]<pool> <volume> <container> [device name]"
+msgstr ""
+
+#: lxc/storage_volume.go:641
+msgid "detach-profile [<remote:>]<pool> <volume> <profile> [device name]"
+msgstr ""
+
+#: lxc/network.go:450
+msgid "detach-profile [<remote>:]<network> <container> [device name]"
+msgstr ""
+
+#: lxc/config_device.go:22
+msgid "device"
+msgstr ""
+
+#: lxc/init.go:223
+msgid "didn't get any affected image, container or snapshot from server"
+msgstr ""
+
+#: lxc/image.go:819
+msgid "disabled"
+msgstr ""
+
+#: lxc/storage.go:430
+msgid "driver"
+msgstr ""
+
+#: lxc/config_template.go:150
+msgid "edit [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/file.go:120
+msgid "edit [<remote>:]<container>/<path>"
+msgstr ""
+
+#: lxc/image.go:310
+msgid "edit [<remote>:]<image>"
+msgstr ""
+
+#: lxc/network.go:535
+msgid "edit [<remote>:]<network>"
+msgstr ""
+
+#: lxc/storage.go:206
+msgid "edit [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:722
+msgid "edit [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:394
+msgid "edit [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/config.go:86 lxc/config_metadata.go:52
+msgid "edit [<remote>:][container]"
+msgstr ""
+
+#: lxc/image.go:821
+msgid "enabled"
+msgstr ""
+
+#: lxc/action.go:234
+#, c-format
+msgid "error: %v"
+msgstr ""
+
+#: lxc/exec.go:37
+msgid "exec [<remote>:]<container> [flags] [--] <command line>"
+msgstr ""
+
+#: lxc/image.go:433
+msgid "export [<remote>:]<image> [target]"
+msgstr ""
+
+#: lxc/file.go:38
+msgid "file"
+msgstr ""
+
+#: lxc/config_device.go:177
+msgid "get [<remote>:]<container|profile> <device> <key>"
+msgstr ""
+
+#: lxc/network.go:658
+msgid "get [<remote>:]<network> <key>"
+msgstr ""
+
+#: lxc/storage.go:326
+msgid "get [<remote>:]<pool> <key>"
+msgstr ""
+
+#: lxc/storage_volume.go:851
+msgid "get [<remote>:]<pool> <volume> <key>"
+msgstr ""
+
+#: lxc/profile.go:518
+msgid "get [<remote>:]<profile> <key>"
+msgstr ""
+
+#: lxc/config.go:287
+msgid "get [<remote>:][container] <key>"
+msgstr ""
+
+#: lxc/remote.go:378
+msgid "get-default"
+msgstr ""
+
+#: lxc/image.go:40
+msgid "image"
+msgstr ""
+
+#: lxc/image.go:569
+msgid ""
+"import <tarball>|<directory>|<URL> [<rootfs tarball>] [<remote>:] "
+"[key=value...]"
+msgstr ""
+
+#: lxc/storage.go:428
+msgid "info"
+msgstr ""
+
+#: lxc/image.go:774
+msgid "info [<remote>:]<image>"
+msgstr ""
+
+#: lxc/storage.go:381
+msgid "info [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/info.go:27
+msgid "info [<remote>:][<container>]"
+msgstr ""
+
+#: lxc/init.go:33
+msgid "init [<remote>:]<image> [<remote>:][<name>]"
 msgstr ""
 
 #: lxc/launch.go:20
+msgid "launch [<remote>:]<image> [<remote>:][<name>]"
+msgstr ""
+
+#: lxc/alias.go:96 lxc/remote.go:411
+msgid "list"
+msgstr ""
+
+#: lxc/cluster.go:56 lxc/config_trust.go:112 lxc/network.go:716
+#: lxc/operation.go:95 lxc/profile.go:565 lxc/storage.go:488
+msgid "list [<remote>:]"
+msgstr ""
+
+#: lxc/image.go:887
+msgid "list [<remote>:] [filter]"
+msgstr ""
+
+#: lxc/image_alias.go:146
+msgid "list [<remote>:] [filters...]"
+msgstr ""
+
+#: lxc/list.go:45
+msgid "list [<remote>:] [filters]"
+msgstr ""
+
+#: lxc/config_template.go:234
+msgid "list [<remote>:]<container>"
+msgstr ""
+
+#: lxc/config_device.go:249
+msgid "list [<remote>:]<container|profile>"
+msgstr ""
+
+#: lxc/storage_volume.go:915
+msgid "list [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/network.go:806
+msgid "list-leases [<remote>:]<network>"
+msgstr ""
+
+#: lxc/alias.go:57
 msgid ""
-"Usage: lxc launch [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
-"profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
-"<node>]\n"
-"\n"
-"Create and start containers from images.\n"
-"\n"
-"Not specifying -p will result in the default profile.\n"
-"Specifying \"-p\" with no argument will result in no profile.\n"
-"\n"
-"Examples:\n"
-"    lxc launch ubuntu:16.04 u1"
+"lxc alias add list list -c ns46S\n"
+"    Overwrite the \"list\" command to pass -c ns46S."
 msgstr ""
 
-#: lxc/list.go:44
+#: lxc/alias.go:200
 msgid ""
-"Usage: lxc list [<remote>:] [filters] [--format csv|json|table|yaml] [-c "
-"<columns>] [--fast]\n"
-"\n"
-"List the existing containers.\n"
-"\n"
-"Default column layout: ns46tS\n"
-"Fast column layout: nsacPt\n"
-"\n"
-"*Filters*\n"
-"A single keyword like \"web\" which will list any container with a name "
-"starting by \"web\".\n"
-"\n"
-"A regular expression on the container name. (e.g. .*web.*01$).\n"
-"\n"
-"A key/value pair referring to a configuration item. For those, the namespace "
-"can be abbreviated to the smallest unambiguous identifier.\n"
-"\t- \"user.blah=abc\" will list all containers with the \"blah\" user "
-"property set to \"abc\".\n"
-"\n"
-"\t- \"u.blah=abc\" will do the same\n"
-"\n"
-"\t- \"security.privileged=true\" will list all privileged containers\n"
-"\n"
-"\t- \"s.privileged=true\" will do the same\n"
-"\n"
-"A regular expression matching a configuration item or its value. (e.g. "
-"volatile.eth0.hwaddr=00:16:3e:.*).\n"
-"\n"
-"*Columns*\n"
-"The -c option takes a comma separated list of arguments that control\n"
-"which container attributes to output when displaying in table or csv\n"
-"format.\n"
-"\n"
-"Column arguments are either pre-defined shorthand chars (see below),\n"
-"or (extended) config keys.\n"
-"\n"
-"Commas between consecutive shorthand chars are optional.\n"
-"\n"
-"Pre-defined column shorthand chars:\n"
-"\n"
-"\t4 - IPv4 address\n"
-"\n"
-"\t6 - IPv6 address\n"
-"\n"
-"\ta - Architecture\n"
-"\n"
-"\tb - Storage pool\n"
-"\n"
-"\tc - Creation date\n"
-"\n"
-"\td - Description\n"
-"\n"
-"\tl - Last used date\n"
-"\n"
-"\tn - Name\n"
-"\n"
-"\tN - Number of Processes\n"
-"\n"
-"\tp - PID of the container's init process\n"
-"\n"
-"\tP - Profiles\n"
-"\n"
-"\ts - State\n"
-"\n"
-"\tS - Number of snapshots\n"
-"\n"
-"\tt - Type (persistent or ephemeral)\n"
-"\n"
-"\tL - Location of the container (e.g. its node)\n"
-"\n"
-"Custom columns are defined with \"key[:name][:maxWidth]\":\n"
-"\n"
-"\tKEY: The (extended) config key to display\n"
-"\n"
-"\tNAME: Name to display in the column header.\n"
-"\tDefaults to the key if not specified or empty.\n"
-"\n"
-"\tMAXWIDTH: Max width of the column (longer results are truncated).\n"
-"\tDefaults to -1 (unlimited). Use 0 to limit to the column header size.\n"
-"\n"
-"*Examples*\n"
-"lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:"
-"MAC\n"
-"\tShows a list of containers using the \"NAME\", \"BASE IMAGE\", \"STATE\", "
-"\"IPV4\",\n"
-"\t\"IPV6\" and \"MAC\" columns.\n"
+"lxc alias remove my-list\n"
+"    Remove the \"my-list\" alias."
+msgstr ""
+
+#: lxc/alias.go:149
+msgid ""
+"lxc alias rename list my-list\n"
+"    Rename existing alias \"list\" to \"my-list\"."
+msgstr ""
+
+#: lxc/config_device.go:78
+msgid ""
+"lxc config device add [<remote>:]container1 <device-name> disk source=/share/"
+"c1 path=opt\n"
+"    Will mount the host's /share/c1 onto /opt in the container."
+msgstr ""
+
+#: lxc/config.go:90
+msgid ""
+"lxc config edit <container> < container.yaml\n"
+"    Update the container configuration from config.yaml."
+msgstr ""
+
+#: lxc/config.go:357
+msgid ""
+"lxc config set [<remote>:]<container> limits.cpu 2\n"
+"    Will set a CPU limit of \"2\" for the container.\n"
 "\n"
-"\t\"BASE IMAGE\" and \"MAC\" are custom columns generated from container "
-"configuration keys.\n"
+"lxc config set core.https_address [::]:8443\n"
+"    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
 "\n"
-"lxc list -c ns,user.comment:comment\n"
-"\tList images with their running state and user comment. "
+"lxc config set core.trust_password blah\n"
+"    Will set the server's trust password to blah."
 msgstr ""
 
-#: lxc/manpage.go:20
+#: lxc/file.go:187
 msgid ""
-"Usage: lxc manpage <directory>\n"
-"\n"
-"Generate all the LXD manpages."
+"lxc file pull foo/etc/hosts .\n"
+"   To pull /etc/hosts from the container and write it to the current "
+"directory."
 msgstr ""
 
-#: lxc/monitor.go:49
+#: lxc/file.go:326
 msgid ""
-"Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
-"\n"
-"Monitor a local or remote LXD server.\n"
+"lxc file push /etc/hosts foo/etc/hosts\n"
+"   To push /etc/hosts into the container \"foo\"."
+msgstr ""
+
+#: lxc/image.go:314
+msgid ""
+"lxc image edit <image>\n"
+"    Launch a text editor to edit the properties\n"
 "\n"
-"By default the monitor will listen to all message types.\n"
+"lxc image edit <image> < image.yaml\n"
+"    Load the image properties from a YAML file"
+msgstr ""
+
+#: lxc/info.go:31
+msgid ""
+"lxc info [<remote>:]<container> [--show-log]\n"
+"    For container information.\n"
 "\n"
-"Message types to listen for can be specified with --type.\n"
+"lxc info [<remote>:] [--resources]\n"
+"    For LXD server information."
+msgstr ""
+
+#: lxc/init.go:37
+msgid "lxc init ubuntu:16.04 u1"
+msgstr ""
+
+#: lxc/launch.go:24
+msgid "lxc launch ubuntu:16.04 u1"
+msgstr ""
+
+#: lxc/list.go:103
+msgid ""
+"lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:"
+"MAC\n"
+"  Show containers using the \"NAME\", \"BASE IMAGE\", \"STATE\", \"IPV4\", "
+"\"IPV6\" and \"MAC\" columns.\n"
+"  \"BASE IMAGE\" and \"MAC\" are custom columns generated from container "
+"configuration keys.\n"
 "\n"
-"*Examples*\n"
+"lxc list -c ns,user.comment:comment\n"
+"  List images with their running state and user comment."
+msgstr ""
+
+#: lxc/monitor.go:35
+msgid ""
 "lxc monitor --type=logging\n"
 "    Only show log messages.\n"
 "\n"
 "lxc monitor --pretty --type=logging --loglevel=info\n"
 "    Show a pretty log of messages with info level or higher.\n"
+"\n"
+"lxc monitor --type=lifecycle\n"
+"    Only show lifecycle events."
 msgstr ""
 
-#: lxc/move.go:26
+#: lxc/move.go:33
 msgid ""
-"Usage: lxc move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
-"<snapshot>]] [--container-only] [--target <node>]\n"
-"\n"
-"Move containers within or in between LXD instances.\n"
-"\n"
 "lxc move [<remote>:]<source container> [<remote>:][<destination container>] "
 "[--container-only]\n"
 "    Move a container between two hosts, renaming it if destination name "
@@ -1946,160 +2837,14 @@ msgid ""
 "    Rename a snapshot."
 msgstr ""
 
-#: lxc/network.go:52
-msgid ""
-"Usage: lxc network <subcommand> [options]\n"
-"\n"
-"Manage and attach containers to networks.\n"
-"\n"
-"lxc network list [<remote>:]\n"
-"    List available networks.\n"
-"\n"
-"lxc network list-leases [<remote>:]<network>\n"
-"    List the DHCP leases for the network\n"
-"\n"
-"lxc network show [<remote>:]<network> [--target <node>]\n"
-"    Show details of a network.\n"
-"\n"
-"lxc network create [<remote>:]<network> [key=value...] [--target <node>]\n"
-"    Create a network.\n"
-"\n"
-"lxc network get [<remote>:]<network> <key> [--target <node>]\n"
-"    Get network configuration.\n"
-"\n"
-"lxc network set [<remote>:]<network> <key> <value>\n"
-"    Set network configuration.\n"
-"\n"
-"lxc network unset [<remote>:]<network> <key>\n"
-"    Unset network configuration.\n"
-"\n"
-"lxc network delete [<remote>:]<network>\n"
-"    Delete a network.\n"
-"\n"
-"lxc network edit [<remote>:]<network>\n"
-"    Edit network, either by launching external editor or reading STDIN.\n"
-"\n"
-"lxc network rename [<remote>:]<network> <new-name>\n"
-"    Rename a network.\n"
-"\n"
-"lxc network attach [<remote>:]<network> <container> [device name] [interface "
-"name]\n"
-"    Attach a network interface connecting the network to a specified "
-"container.\n"
-"\n"
-"lxc network attach-profile [<remote>:]<network> <profile> [device name] "
-"[interface name]\n"
-"    Attach a network interface connecting the network to a specified "
-"profile.\n"
-"\n"
-"lxc network detach [<remote>:]<network> <container> [device name]\n"
-"    Remove a network interface connecting the network to a specified "
-"container.\n"
-"\n"
-"lxc network detach-profile [<remote>:]<network> <container> [device name]\n"
-"    Remove a network interface connecting the network to a specified "
-"profile.\n"
-"\n"
-"*Examples*\n"
-"cat network.yaml | lxc network edit <network>\n"
-"    Update a network using the content of network.yaml"
-msgstr ""
-
-#: lxc/operation.go:25
+#: lxc/operation.go:176
 msgid ""
-"Usage: lxc operation <subcommand> [options]\n"
-"\n"
-"List, show and delete background operations.\n"
-"\n"
-"lxc operation list [<remote>:]\n"
-"    List background operations.\n"
-"\n"
-"lxc operation show [<remote>:]<operation>\n"
-"    Show details on a background operation.\n"
-"\n"
-"lxc operation delete [<remote>:]<operation>\n"
-"    Delete a background operation (will attempt to cancel).\n"
-"\n"
-"*Examples*\n"
 "lxc operation show 344a79e4-d88a-45bf-9c39-c72c26f6ab8a\n"
 "    Show details on that operation UUID"
 msgstr ""
 
-#: lxc/profile.go:51
+#: lxc/profile.go:165
 msgid ""
-"Usage: lxc profile <subcommand> [options]\n"
-"\n"
-"Manage container configuration profiles.\n"
-"\n"
-"*Profile configuration*\n"
-"lxc profile list [<remote>:]\n"
-"    List available profiles.\n"
-"\n"
-"lxc profile show [<remote>:]<profile>\n"
-"    Show details of a profile.\n"
-"\n"
-"lxc profile create [<remote>:]<profile>\n"
-"    Create a profile.\n"
-"\n"
-"lxc profile copy [<remote>:]<profile> [<remote>:]<profile>\n"
-"    Copy the profile.\n"
-"\n"
-"lxc profile get [<remote>:]<profile> <key>\n"
-"    Get profile configuration.\n"
-"\n"
-"lxc profile set [<remote>:]<profile> <key> <value>\n"
-"    Set profile configuration.\n"
-"\n"
-"lxc profile unset [<remote>:]<profile> <key>\n"
-"    Unset profile configuration.\n"
-"\n"
-"lxc profile delete [<remote>:]<profile>\n"
-"    Delete a profile.\n"
-"\n"
-"lxc profile edit [<remote>:]<profile>\n"
-"    Edit profile, either by launching external editor or reading STDIN.\n"
-"\n"
-"lxc profile rename [<remote>:]<profile> <new-name>\n"
-"    Rename a profile.\n"
-"\n"
-"*Profile assignment*\n"
-"lxc profile assign [<remote>:]<container> <profiles>\n"
-"    Replace the current set of profiles for the container by the one "
-"provided.\n"
-"\n"
-"lxc profile add [<remote>:]<container> <profile>\n"
-"    Add a profile to a container\n"
-"\n"
-"lxc profile remove [<remote>:]<container> <profile>\n"
-"    Remove the profile from a container\n"
-"\n"
-"*Device management*\n"
-"lxc profile device list [<remote>:]<profile>\n"
-"    List devices in the given profile.\n"
-"\n"
-"lxc profile device show [<remote>:]<profile>\n"
-"    Show full device details in the given profile.\n"
-"\n"
-"lxc profile device remove [<remote>:]<profile> <name>\n"
-"    Remove a device from a profile.\n"
-"\n"
-"lxc profile device get [<remote>:]<profile> <name> <key>\n"
-"    Get a device property.\n"
-"\n"
-"lxc profile device set [<remote>:]<profile> <name> <key> <value>\n"
-"    Set a device property.\n"
-"\n"
-"lxc profile device unset [<remote>:]<profile> <name> <key>\n"
-"    Unset a device property.\n"
-"\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.\n"
-"\n"
-"*Examples*\n"
-"cat profile.yaml | lxc profile edit <profile>\n"
-"    Update a profile using the content of profile.yaml\n"
-"\n"
 "lxc profile assign foo default,bar\n"
 "    Set the profiles for \"foo\" to \"default\" and \"bar\".\n"
 "\n"
@@ -2110,72 +2855,26 @@ msgid ""
 "    Remove all profile from \"foo\""
 msgstr ""
 
-#: lxc/publish.go:28
+#: lxc/profile.go:398
 msgid ""
-"Usage: lxc publish [<remote>:]<container>[/<snapshot>] [<remote>:] [--"
-"alias=ALIAS...] [prop-key=prop-value...]\n"
-"\n"
-"Publish containers as images."
+"lxc profile edit <profile> < profile.yaml\n"
+"    Update a profile using the content of profile.yaml"
 msgstr ""
 
-#: lxc/query.go:25
+#: lxc/query.go:29
 msgid ""
-"Usage: lxc query [-X <action>] [-d <data>] [--wait] [--raw] [<remote>:]<API "
-"path>\n"
-"\n"
-"Send a raw query to LXD.\n"
-"\n"
-"*Examples*\n"
 "lxc query -X DELETE --wait /1.0/containers/c1\n"
 "    Delete local container \"c1\"."
 msgstr ""
 
-#: lxc/remote.go:40
-msgid ""
-"Usage: lxc remote <subcommand> [options]\n"
-"\n"
-"Manage the list of remote LXD servers.\n"
-"\n"
-"lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--"
-"password=PASSWORD] [--public] [--protocol=PROTOCOL] [--auth-type=AUTH_TYPE]\n"
-"    Add the remote <remote> at <url>.\n"
-"\n"
-"lxc remote remove <remote>\n"
-"    Remove the remote <remote>.\n"
-"\n"
-"lxc remote list\n"
-"    List all remotes.\n"
-"\n"
-"lxc remote rename <old name> <new name>\n"
-"    Rename remote <old name> to <new name>.\n"
-"\n"
-"lxc remote set-url <remote> <url>\n"
-"    Update <remote>'s url to <url>.\n"
-"\n"
-"lxc remote set-default <remote>\n"
-"    Set the default remote.\n"
-"\n"
-"lxc remote get-default\n"
-"    Print the default remote."
-msgstr ""
-
-#: lxc/rename.go:18
+#: lxc/snapshot.go:26
 msgid ""
-"Usage: lxc rename [<remote>:]<container>[/<snapshot>] [<container>[/"
-"<snapshot>]]\n"
-"\n"
-"Rename a container or snapshot."
+"lxc snapshot u1 snap0\n"
+"    Create a snapshot of \"u1\" called \"snap0\"."
 msgstr ""
 
-#: lxc/restore.go:22
+#: lxc/restore.go:28
 msgid ""
-"Usage: lxc restore [<remote>:]<container> <snapshot> [--stateful]\n"
-"\n"
-"Restore containers from snapshots.\n"
-"\n"
-"If --stateful is passed, then the running state will be restored too.\n"
-"\n"
-"*Examples*\n"
 "lxc snapshot u1 snap0\n"
 "    Create the snapshot.\n"
 "\n"
@@ -2183,121 +2882,20 @@ msgid ""
 "    Restore the snapshot."
 msgstr ""
 
-#: lxc/snapshot.go:19
+#: lxc/storage.go:210
 msgid ""
-"Usage: lxc snapshot [<remote>:]<container> <snapshot name> [--stateful]\n"
-"\n"
-"Create container snapshots.\n"
-"\n"
-"When --stateful is used, LXD attempts to checkpoint the container's\n"
-"running state, including process memory state, TCP connections, ...\n"
-"\n"
-"*Examples*\n"
-"lxc snapshot u1 snap0\n"
-"    Create a snapshot of \"u1\" called \"snap0\"."
+"lxc storage edit [<remote>:]<pool> < pool.yaml\n"
+"    Update a storage pool using the content of pool.yaml."
 msgstr ""
 
-#: lxc/storage.go:67
+#: lxc/storage_volume.go:726
+msgid ""
+"lxc storage volume edit [<remote>:]<pool> <volume> < volume.yaml\n"
+"    Update a storage volume using the content of pool.yaml."
+msgstr ""
+
+#: lxc/storage_volume.go:1168
 msgid ""
-"Usage: lxc storage <subcommand> [options]\n"
-"\n"
-"Manage storage pools and volumes.\n"
-"\n"
-"*Storage pools*\n"
-"lxc storage list [<remote>:]\n"
-"    List available storage pools.\n"
-"\n"
-"lxc storage show [<remote>:]<pool> [--resources] [--target <node>]\n"
-"    Show details of a storage pool.\n"
-"\n"
-"lxc storage info [<remote>:]<pool> [--bytes]\n"
-"    Show information of a storage pool in yaml format.\n"
-"\n"
-"lxc storage create [<remote>:]<pool> <driver> [key=value]... [--target "
-"<node>]\n"
-"    Create a storage pool.\n"
-"\n"
-"lxc storage get [<remote>:]<pool> <key>\n"
-"    Get storage pool configuration.\n"
-"\n"
-"lxc storage set [<remote>:]<pool> <key> <value>\n"
-"    Set storage pool configuration.\n"
-"\n"
-"lxc storage unset [<remote>:]<pool> <key>\n"
-"    Unset storage pool configuration.\n"
-"\n"
-"lxc storage delete [<remote>:]<pool>\n"
-"    Delete a storage pool.\n"
-"\n"
-"lxc storage edit [<remote>:]<pool>\n"
-"    Edit storage pool, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"*Storage volumes*\n"
-"lxc storage volume list [<remote>:]<pool>\n"
-"    List available storage volumes on a storage pool.\n"
-"\n"
-"lxc storage volume show [<remote>:]<pool> <volume> [--target <node>]\n"
-"   Show details of a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume create [<remote>:]<pool> <volume> [key=value]... [--"
-"target <node>]\n"
-"    Create a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume rename [<remote>:]<pool> <old name> <new name> [--target "
-"<node>]\n"
-"    Rename a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume get [<remote>:]<pool> <volume> <key> [--target <node>]\n"
-"    Get storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume set [<remote>:]<pool> <volume> <key> <value> [--target "
-"<node>]\n"
-"    Set storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume unset [<remote>:]<pool> <volume> <key> [--target <node>]\n"
-"    Unset storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume delete [<remote>:]<pool> <volume> [--target <node>]\n"
-"    Delete a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume edit [<remote>:]<pool> <volume> [--target <node>]\n"
-"    Edit storage volume, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"lxc storage volume attach [<remote>:]<pool> <volume> <container> [device "
-"name] <path>\n"
-"    Attach a storage volume to the specified container.\n"
-"\n"
-"lxc storage volume attach-profile [<remote:>]<pool> <volume> <profile> "
-"[device name] <path>\n"
-"    Attach a storage volume to the specified profile.\n"
-"\n"
-"lxc storage volume detach [<remote>:]<pool> <volume> <container> [device "
-"name]\n"
-"    Detach a storage volume from the specified container.\n"
-"\n"
-"lxc storage volume detach-profile [<remote:>]<pool> <volume> <profile> "
-"[device name]\n"
-"\tDetach a storage volume from the specified profile.\n"
-"\n"
-"lxc storage volume copy <pool>/<volume> <pool>/<volume> [--config|-c "
-"<key=value>...]\n"
-"    Copy an existing volume to a new volume at the specified pool.\n"
-"\n"
-"lxc storage volume move [<pool>/]<volume> [<pool>/]<volume>\n"
-"    Move an existing volume to the specified pool.\n"
-"\n"
-"Unless specified through a prefix, all volume operations affect \"custom"
-"\" (user created) volumes.\n"
-"\n"
-"*Examples*\n"
-"cat pool.yaml | lxc storage edit [<remote>:]<pool>\n"
-"    Update a storage pool using the content of pool.yaml.\n"
-"\n"
-"cat pool.yaml | lxc storage volume edit [<remote>:]<pool> <volume>\n"
-"    Update a storage volume using the content of pool.yaml.\n"
-"\n"
 "lxc storage volume show default data\n"
 "    Will show the properties of a custom volume called \"data\" in the "
 "\"default\" pool.\n"
@@ -2307,191 +2905,303 @@ msgid ""
 "\" in the \"default\" pool."
 msgstr ""
 
-#: lxc/version.go:18
+#: lxc/config_metadata.go:27
+msgid "metadata"
+msgstr ""
+
+#: lxc/monitor.go:29
+msgid "monitor [<remote>:]"
+msgstr ""
+
+#: lxc/storage_volume.go:991
+msgid "move [<pool>/]<volume> [<pool>/]<volume>"
+msgstr ""
+
+#: lxc/move.go:28
 msgid ""
-"Usage: lxc version\n"
-"\n"
-"Print the version number of this client tool."
+"move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
+"<snapshot>]]"
 msgstr ""
 
-#: lxc/delete.go:46
-msgid "User aborted delete operation."
+#: lxc/storage.go:429
+msgid "name"
 msgstr ""
 
-#: lxc/utils/cancel.go:40
+#: lxc/network.go:30
+msgid "network"
+msgstr ""
+
+#: lxc/image.go:809 lxc/image.go:814 lxc/image.go:977
+msgid "no"
+msgstr ""
+
+#: lxc/remote.go:253
+msgid "ok (y/n)?"
+msgstr ""
+
+#: lxc/operation.go:23
+msgid "operation"
+msgstr ""
+
+#: lxc/config_device.go:316
+msgid "override [<remote>:]<container> <device> [key=value...]"
+msgstr ""
+
+#: lxc/action.go:47
+msgid "pause [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/config.go:52
+msgid "please use `lxc profile`"
+msgstr ""
+
+#: lxc/profile.go:28
+msgid "profile"
+msgstr ""
+
+#: lxc/publish.go:32
 msgid ""
-"User signaled us three times, exiting. The remote operation will keep "
-"running."
+"publish [<remote>:]<container>[/<snapshot>] [<remote>:] [flags] [prop-"
+"key=prop-value...]"
 msgstr ""
 
-#: lxc/query.go:36
-msgid "Wait for the operation to complete"
+#: lxc/file.go:183
+msgid ""
+"pull [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...] "
+"<target path>"
 msgstr ""
 
-#: lxc/restore.go:38
+#: lxc/file.go:322
 msgid ""
-"Whether or not to restore the container's running state from snapshot (if "
-"available)"
+"push <source path> [<remote>:]<container>/<path> [[<remote>:]<container>/"
+"<path>...]"
 msgstr ""
 
-#: lxc/snapshot.go:33
-msgid "Whether or not to snapshot the container's running state"
+#: lxc/query.go:25
+msgid "query [<remote>:]<API path>"
 msgstr ""
 
-#: lxc/network.go:560 lxc/operation.go:141 lxc/remote.go:382 lxc/remote.go:387
-msgid "YES"
+#: lxc/image.go:1210
+msgid "refresh [<remote>:]<image> [[<remote>:]<image>...]"
 msgstr ""
 
-#: lxc/exec.go:132
-msgid "You can't pass -t and -T at the same time"
+#: lxc/remote.go:32
+msgid "remote"
 msgstr ""
 
-#: lxc/exec.go:136
-msgid "You can't pass -t or -T at the same time as --mode"
+#: lxc/alias.go:195
+msgid "remove <alias>"
 msgstr ""
 
-#: lxc/copy.go:76
-msgid "You must specify a destination container name when using --target"
+#: lxc/remote.go:546
+msgid "remove <remote>"
 msgstr ""
 
-#: lxc/copy.go:71
-msgid "You must specify a source container name"
+#: lxc/config_trust.go:194
+msgid "remove [<remote>:] <hostname|fingerprint>"
 msgstr ""
 
-#: lxc/copy.go:66 lxc/move.go:71
-msgid "You must use the same source and destination remote when using --target"
+#: lxc/profile.go:630
+msgid "remove [<remote>:]<container> <profile>"
 msgstr ""
 
-#: lxc/main.go:72
-msgid "`lxc config profile` is deprecated, please use `lxc profile`"
+#: lxc/config_device.go:402
+msgid "remove [<remote>:]<container|profile> <name>..."
 msgstr ""
 
-#: lxc/alias.go:56 lxc/alias.go:102
-#, c-format
-msgid "alias %s already exists"
+#: lxc/cluster.go:235
+msgid "remove [<remote>:]<member>"
 msgstr ""
 
-#: lxc/alias.go:68 lxc/alias.go:97
-#, c-format
-msgid "alias %s doesn't exist"
+#: lxc/alias.go:144
+msgid "rename <old alias> <new alias>"
 msgstr ""
 
-#: lxc/remote.go:370
-msgid "can't remove the default remote"
+#: lxc/remote.go:484
+msgid "rename <remote> <new-name>"
 msgstr ""
 
-#: lxc/file.go:296
-msgid "can't supply uid/gid/mode in recursive mode"
+#: lxc/image_alias.go:247
+msgid "rename [<remote>:]<alias> <new-name>"
 msgstr ""
 
-#: lxc/remote.go:399
-msgid "default"
+#: lxc/rename.go:18
+msgid "rename [<remote>:]<container>[/<snapshot>] <container>[/<snapshot>]"
 msgstr ""
 
-#: lxc/storage.go:856
-msgid "description"
+#: lxc/cluster.go:189
+msgid "rename [<remote>:]<member> <new-name>"
 msgstr ""
 
-#: lxc/init.go:315
-msgid "didn't get any affected image, container or snapshot from server"
+#: lxc/network.go:870
+msgid "rename [<remote>:]<network> <new-name>"
 msgstr ""
 
-#: lxc/image.go:594
-msgid "disabled"
+#: lxc/storage_volume.go:1023
+msgid "rename [<remote>:]<pool> <old name> <new name>"
 msgstr ""
 
-#: lxc/storage.go:855
-msgid "driver"
+#: lxc/profile.go:702
+msgid "rename [<remote>:]<profile> <new-name>"
 msgstr ""
 
-#: lxc/image.go:596
-msgid "enabled"
+#: lxc/action.go:67
+msgid "restart [<remote>:]<container> [[<remote>:]<container>...]"
 msgstr ""
 
-#: lxc/action.go:155 lxc/main.go:33 lxc/main.go:191
-#, c-format
-msgid "error: %v"
+#: lxc/restore.go:22
+msgid "restore [<remote>:]<container> <snapshot>"
 msgstr ""
 
-#: lxc/help.go:37 lxc/main.go:133
-#, c-format
-msgid "error: unknown command: %s"
+#: lxc/config_device.go:491
+msgid "set [<remote>:]<container|profile> <device> <key> <value>"
 msgstr ""
 
-#: lxc/storage.go:853
-msgid "info"
+#: lxc/network.go:918
+msgid "set [<remote>:]<network> <key> <value>"
 msgstr ""
 
-#: lxc/storage.go:854
-msgid "name"
+#: lxc/storage.go:571
+msgid "set [<remote>:]<pool> <key> <value>"
 msgstr ""
 
-#: lxc/image.go:210 lxc/image.go:584 lxc/image.go:589
-msgid "no"
+#: lxc/storage_volume.go:1087
+msgid "set [<remote>:]<pool> <volume> <key> <value>"
 msgstr ""
 
-#: lxc/remote.go:204
-msgid "ok (y/n)?"
+#: lxc/profile.go:751
+msgid "set [<remote>:]<profile> <key> <value>"
 msgstr ""
 
-#: lxc/main.go:368 lxc/main.go:372
-#, c-format
-msgid "processing aliases failed %s\n"
+#: lxc/config.go:353
+msgid "set [<remote>:][container] <key> <value>"
 msgstr ""
 
-#: lxc/file.go:588
-msgid "recursive edit doesn't make sense :("
+#: lxc/remote.go:596
+msgid "set-default <remote>"
 msgstr ""
 
-#: lxc/remote.go:436
-#, c-format
-msgid "remote %s already exists"
+#: lxc/remote.go:634
+msgid "set-url <remote> <URL>"
 msgstr ""
 
-#: lxc/remote.go:362 lxc/remote.go:428 lxc/remote.go:463 lxc/remote.go:479
-#, c-format
-msgid "remote %s doesn't exist"
+#: lxc/config_template.go:296
+msgid "show [<remote>:]<container> <template>"
 msgstr ""
 
-#: lxc/remote.go:345
-#, c-format
-msgid "remote %s exists as <%s>"
+#: lxc/config_device.go:580
+msgid "show [<remote>:]<container|profile>"
 msgstr ""
 
-#: lxc/remote.go:366 lxc/remote.go:432 lxc/remote.go:467
-#, c-format
-msgid "remote %s is static and cannot be modified"
+#: lxc/image.go:1283
+msgid "show [<remote>:]<image>"
+msgstr ""
+
+#: lxc/cluster.go:140
+msgid "show [<remote>:]<member>"
+msgstr ""
+
+#: lxc/network.go:987
+msgid "show [<remote>:]<network>"
+msgstr ""
+
+#: lxc/operation.go:172
+msgid "show [<remote>:]<operation>"
+msgstr ""
+
+#: lxc/storage.go:643
+msgid "show [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:1164
+msgid "show [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:810
+msgid "show [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/config.go:450 lxc/config_metadata.go:174
+msgid "show [<remote>:][container]"
+msgstr ""
+
+#: lxc/snapshot.go:19
+msgid "snapshot [<remote>:]<container> <snapshot name>"
 msgstr ""
 
-#: lxc/storage.go:858
+#: lxc/storage.go:433
 msgid "space used"
 msgstr ""
 
-#: lxc/info.go:251
+#: lxc/action.go:28
+msgid "start [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/info.go:255
 msgid "stateful"
 msgstr ""
 
-#: lxc/info.go:253
+#: lxc/info.go:257
 msgid "stateless"
 msgstr ""
 
-#: lxc/info.go:247
+#: lxc/action.go:89
+msgid "stop [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/storage.go:31
+msgid "storage"
+msgstr ""
+
+#: lxc/info.go:251
 #, c-format
 msgid "taken at %s"
 msgstr ""
 
-#: lxc/storage.go:857
+#: lxc/config_template.go:28
+msgid "template"
+msgstr ""
+
+#: lxc/storage.go:432
 msgid "total space"
 msgstr ""
 
-#: lxc/storage.go:852
+#: lxc/config_trust.go:28
+msgid "trust"
+msgstr ""
+
+#: lxc/config_device.go:648
+msgid "unset [<remote>:]<container|profile> <device> <key>"
+msgstr ""
+
+#: lxc/network.go:1049
+msgid "unset [<remote>:]<network> <key>"
+msgstr ""
+
+#: lxc/storage.go:727
+msgid "unset [<remote>:]<pool> <key>"
+msgstr ""
+
+#: lxc/storage_volume.go:1239
+msgid "unset [<remote>:]<pool> <volume> <key>"
+msgstr ""
+
+#: lxc/profile.go:864
+msgid "unset [<remote>:]<profile> <key>"
+msgstr ""
+
+#: lxc/config.go:558
+msgid "unset [<remote>:][container] <key>"
+msgstr ""
+
+#: lxc/storage.go:427
 msgid "used by"
 msgstr ""
 
-#: lxc/main.go:299
-msgid "wrong number of subcommand arguments"
+#: lxc/storage_volume.go:32
+msgid "volume"
 msgstr ""
 
-#: lxc/delete.go:45 lxc/image.go:208 lxc/image.go:586 lxc/image.go:591
+#: lxc/delete.go:46 lxc/image.go:811 lxc/image.go:816 lxc/image.go:975
 msgid "yes"
 msgstr ""
diff --git a/po/sv.po b/po/sv.po
index c361aff84..69ed7eea6 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -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: 2018-02-27 22:14-0500\n"
+"POT-Creation-Date: 2018-03-29 01:45-0400\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
@@ -16,7 +16,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: lxc/storage.go:36
+#: lxc/storage.go:220
 msgid ""
 "### This is a yaml representation of a storage pool.\n"
 "### Any line starting with a '#' will be ignored.\n"
@@ -33,7 +33,7 @@ msgid ""
 "###   zfs.pool_name: default"
 msgstr ""
 
-#: lxc/storage.go:53
+#: lxc/storage_volume.go:737
 msgid ""
 "### This is a yaml representation of a storage volume.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -47,7 +47,7 @@ msgid ""
 "###   size: \"61203283968\""
 msgstr ""
 
-#: lxc/config.go:40
+#: lxc/config.go:100
 msgid ""
 "### This is a yaml representation of the configuration.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -68,7 +68,7 @@ msgid ""
 "### Note that the name is shown but cannot be changed"
 msgstr ""
 
-#: lxc/config.go:61
+#: lxc/config_metadata.go:63
 msgid ""
 "### This is a yaml representation of the container metadata.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -92,7 +92,7 @@ msgid ""
 "###     properties: {}"
 msgstr ""
 
-#: lxc/image.go:63
+#: lxc/image.go:327
 msgid ""
 "### This is a yaml representation of the image properties.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -102,7 +102,7 @@ msgid ""
 "###  description: My custom image"
 msgstr ""
 
-#: lxc/network.go:32
+#: lxc/network.go:546
 msgid ""
 "### This is a yaml representation of the network.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -122,7 +122,7 @@ msgid ""
 "### Note that only the configuration can be changed."
 msgstr ""
 
-#: lxc/profile.go:30
+#: lxc/profile.go:408
 msgid ""
 "### This is a yaml representation of the profile.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -143,12 +143,12 @@ msgid ""
 "### Note that the name is shown but cannot be changed"
 msgstr ""
 
-#: lxc/image.go:187
+#: lxc/image.go:954
 #, c-format
 msgid "%s (%d more)"
 msgstr ""
 
-#: lxc/file.go:205
+#: lxc/file.go:677
 #, c-format
 msgid "%s is not a directory"
 msgstr ""
@@ -158,1782 +158,2673 @@ msgstr ""
 msgid "%v (interrupt two more times to force)"
 msgstr ""
 
-#: lxc/file.go:142
+#: lxc/file.go:614
 #, c-format
 msgid "'%s' isn't a supported file type."
 msgstr ""
 
-#: lxc/profile.go:337
+#: lxc/profile.go:222
 msgid "(none)"
 msgstr ""
 
-#: lxc/alias.go:84 lxc/image.go:231 lxc/image.go:1136
+#: lxc/alias.go:127 lxc/image.go:921 lxc/image_alias.go:228
 msgid "ALIAS"
 msgstr ""
 
-#: lxc/image.go:232
+#: lxc/image.go:922
 msgid "ALIASES"
 msgstr ""
 
-#: lxc/image.go:236
+#: lxc/image.go:926
 msgid "ARCH"
 msgstr ""
 
-#: lxc/list.go:467
+#: lxc/list.go:464
 msgid "ARCHITECTURE"
 msgstr ""
 
-#: lxc/remote.go:412
+#: lxc/remote.go:466
 msgid "AUTH TYPE"
 msgstr ""
 
-#: lxc/remote.go:68
+#: lxc/remote.go:88
 msgid "Accept certificate"
 msgstr ""
 
-#: lxc/query.go:38
+#: lxc/query.go:37
 msgid "Action (defaults to GET)"
 msgstr ""
 
-#: lxc/remote.go:276
+#: lxc/config_device.go:75 lxc/config_device.go:76
+msgid "Add devices to containers or profiles"
+msgstr ""
+
+#: lxc/alias.go:54 lxc/alias.go:55
+msgid "Add new aliases"
+msgstr ""
+
+#: lxc/remote.go:83 lxc/remote.go:84
+msgid "Add new remote servers"
+msgstr ""
+
+#: lxc/config_trust.go:58 lxc/config_trust.go:59
+msgid "Add new trusted clients"
+msgstr ""
+
+#: lxc/profile.go:101 lxc/profile.go:102
+msgid "Add profiles to containers"
+msgstr ""
+
+#: lxc/remote.go:325
 #, c-format
 msgid "Admin password for %s: "
 msgstr ""
 
-#: lxc/image.go:623
+#: lxc/alias.go:78 lxc/alias.go:176
+#, c-format
+msgid "Alias %s already exists"
+msgstr ""
+
+#: lxc/alias.go:170 lxc/alias.go:221
+#, c-format
+msgid "Alias %s doesn't exist"
+msgstr ""
+
+#: lxc/image_alias.go:83 lxc/image_alias.go:130 lxc/image_alias.go:274
+msgid "Alias name missing"
+msgstr ""
+
+#: lxc/image.go:854
 msgid "Aliases:"
 msgstr ""
 
-#: lxc/image.go:601 lxc/info.go:125
+#: lxc/image.go:826 lxc/info.go:129
 #, c-format
 msgid "Architecture: %s"
 msgstr ""
 
-#: lxc/remote.go:259
+#: lxc/profile.go:162 lxc/profile.go:163
+msgid "Assign sets of profiles to containers"
+msgstr ""
+
+#: lxc/network.go:103
+msgid "Attach network interfaces to containers"
+msgstr ""
+
+#: lxc/network.go:176 lxc/network.go:177
+msgid "Attach network interfaces to profiles"
+msgstr ""
+
+#: lxc/network.go:104
+msgid "Attach new network interfaces to containers"
+msgstr ""
+
+#: lxc/storage_volume.go:121 lxc/storage_volume.go:122
+msgid "Attach new storage volumes to containers"
+msgstr ""
+
+#: lxc/storage_volume.go:200 lxc/storage_volume.go:201
+msgid "Attach new storage volumes to profiles"
+msgstr ""
+
+#: lxc/console.go:31
+msgid "Attach to container consoles"
+msgstr ""
+
+#: lxc/console.go:32
+msgid ""
+"Attach to container consoles\n"
+"\n"
+"This command allows you to interact with the boot console of a container\n"
+"as well as retrieve past log entries from it."
+msgstr ""
+
+#: lxc/remote.go:308
 #, c-format
 msgid "Authentication type '%s' not supported by server"
 msgstr ""
 
-#: lxc/image.go:632
+#: lxc/image.go:864
 #, c-format
 msgid "Auto update: %s"
 msgstr ""
 
-#: lxc/image.go:707
+#: lxc/network.go:283
+#, c-format
+msgid "Bad key/value pair: %s"
+msgstr ""
+
+#: lxc/copy.go:110 lxc/init.go:118 lxc/publish.go:175 lxc/storage.go:123
+#: lxc/storage_volume.go:468
+#, c-format
+msgid "Bad key=value pair: %s"
+msgstr ""
+
+#: lxc/image.go:677
 #, c-format
 msgid "Bad property: %s"
 msgstr ""
 
-#: lxc/action.go:133
+#: lxc/action.go:212
 msgid "Both --all and container name given"
 msgstr ""
 
-#: lxc/info.go:218
+#: lxc/info.go:222
 msgid "Bytes received"
 msgstr ""
 
-#: lxc/info.go:219
+#: lxc/info.go:223
 msgid "Bytes sent"
 msgstr ""
 
-#: lxc/operation.go:156
+#: lxc/operation.go:155
 msgid "CANCELABLE"
 msgstr ""
 
-#: lxc/config.go:403
+#: lxc/config_trust.go:175
 msgid "COMMON NAME"
 msgstr ""
 
-#: lxc/info.go:182
+#: lxc/info.go:186
 msgid "CPU usage (in seconds)"
 msgstr ""
 
-#: lxc/info.go:186
+#: lxc/info.go:190
 msgid "CPU usage:"
 msgstr ""
 
-#: lxc/operation.go:157
+#: lxc/operation.go:156
 msgid "CREATED"
 msgstr ""
 
-#: lxc/list.go:468
+#: lxc/list.go:465
 msgid "CREATED AT"
 msgstr ""
 
-#: lxc/image.go:631
+#: lxc/image.go:863
 #, c-format
 msgid "Cached: %s"
 msgstr ""
 
-#: lxc/file.go:501
+#: lxc/image.go:175
+msgid "Can't provide a name for the target image"
+msgstr ""
+
+#: lxc/file.go:261
 msgid "Can't pull a directory without --recursive"
 msgstr ""
 
-#: lxc/config.go:210 lxc/network.go:619
+#: lxc/config.go:400 lxc/network.go:969
 #, c-format
 msgid "Can't read from stdin: %s"
 msgstr ""
 
-#: lxc/rename.go:41
+#: lxc/remote.go:577
+msgid "Can't remove the default remote"
+msgstr ""
+
+#: lxc/list.go:481
+msgid "Can't specify --fast with --columns"
+msgstr ""
+
+#: lxc/rename.go:48
 msgid "Can't specify a different remote for rename."
 msgstr ""
 
-#: lxc/config.go:223
-#, c-format
-msgid "Can't unset key '%s', it's not currently set"
+#: lxc/list.go:493
+msgid "Can't specify column L when not clustered"
 msgstr ""
 
-#: lxc/config.go:265 lxc/config.go:291
-#, c-format
-msgid "Can't unset key '%s', it's not currently set."
+#: lxc/file.go:399
+msgid "Can't supply uid/gid/mode in recursive mode"
 msgstr ""
 
-#: lxc/profile.go:546 lxc/storage.go:696
-msgid "Cannot provide container name to list"
+#: lxc/config.go:413
+#, c-format
+msgid "Can't unset key '%s', it's not currently set"
 msgstr ""
 
-#: lxc/remote.go:203
+#: lxc/remote.go:252
 #, c-format
 msgid "Certificate fingerprint: %s"
 msgstr ""
 
-#: lxc/remote.go:315
+#: lxc/remote.go:364
 msgid "Client certificate stored at server: "
 msgstr ""
 
-#: lxc/image.go:175 lxc/image.go:176 lxc/list.go:134 lxc/list.go:135
+#: lxc/network.go:253 lxc/network.go:663 lxc/network.go:923 lxc/network.go:992
+#: lxc/network.go:1054 lxc/storage.go:92 lxc/storage.go:331 lxc/storage.go:576
+#: lxc/storage.go:649 lxc/storage.go:732 lxc/storage_volume.go:287
+#: lxc/storage_volume.go:429 lxc/storage_volume.go:504
+#: lxc/storage_volume.go:730 lxc/storage_volume.go:856
+#: lxc/storage_volume.go:998 lxc/storage_volume.go:1028
+#: lxc/storage_volume.go:1092 lxc/storage_volume.go:1175
+#: lxc/storage_volume.go:1244
+msgid "Cluster member name"
+msgstr ""
+
+#: lxc/image.go:912 lxc/list.go:112
 msgid "Columns"
 msgstr ""
 
-#: lxc/help.go:53
-msgid "Commands:"
+#: lxc/main.go:44
+msgid "Command line client for LXD"
+msgstr ""
+
+#: lxc/main.go:45
+msgid ""
+"Command line client for LXD\n"
+"\n"
+"All of LXD's features can be driven through the various commands below.\n"
+"For help with any of those, simply call them with --help."
 msgstr ""
 
-#: lxc/copy.go:37 lxc/copy.go:38 lxc/init.go:139 lxc/init.go:140
+#: lxc/copy.go:39 lxc/init.go:42
 msgid "Config key/value to apply to the new container"
 msgstr ""
 
-#: lxc/config.go:821 lxc/config.go:886 lxc/config.go:1396 lxc/image.go:1191
-#: lxc/network.go:445 lxc/profile.go:275 lxc/storage.go:647 lxc/storage.go:1209
+#: lxc/config.go:195 lxc/config.go:259 lxc/config_metadata.go:144
+#: lxc/image.go:405 lxc/network.go:631 lxc/profile.go:490 lxc/storage.go:298
+#: lxc/storage_volume.go:822
 #, c-format
 msgid "Config parsing error: %s"
 msgstr ""
 
-#: lxc/main.go:40
-msgid "Connection refused; is LXD running?"
-msgstr ""
-
-#: lxc/console.go:132
+#: lxc/console.go:141
 msgid "Console log:"
 msgstr ""
 
-#: lxc/publish.go:71
+#: lxc/publish.go:79
 msgid "Container name is mandatory"
 msgstr ""
 
-#: lxc/copy.go:243 lxc/init.go:321
+#: lxc/copy.go:260 lxc/init.go:229
 #, c-format
 msgid "Container name is: %s"
 msgstr ""
 
-#: lxc/publish.go:250
+#: lxc/publish.go:259
 #, c-format
 msgid "Container published with fingerprint: %s"
 msgstr ""
 
-#: lxc/copy.go:45 lxc/move.go:44
+#: lxc/copy.go:44 lxc/move.go:46
 msgid "Copy a stateful container stateless"
 msgstr ""
 
-#: lxc/image.go:178
+#: lxc/image.go:138
 msgid "Copy aliases from source"
 msgstr ""
 
-#: lxc/copy.go:44
+#: lxc/copy.go:34 lxc/copy.go:35
+msgid "Copy containers within or in between LXD instances"
+msgstr ""
+
+#: lxc/image.go:130
+msgid "Copy images between servers"
+msgstr ""
+
+#: lxc/image.go:131
+msgid ""
+"Copy images between servers\n"
+"\n"
+"The auto-update flag instructs the server to keep this image up to date.\n"
+"It requires the source to be an alias and for it to be public."
+msgstr ""
+
+#: lxc/config_device.go:317 lxc/config_device.go:318
+msgid "Copy profile inherited devices and override configuration keys"
+msgstr ""
+
+#: lxc/profile.go:240 lxc/profile.go:241
+msgid "Copy profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:282 lxc/storage_volume.go:283
+msgid "Copy storage volumes"
+msgstr ""
+
+#: lxc/copy.go:43
 msgid "Copy the container without its snapshots"
 msgstr ""
 
-#: lxc/image.go:449
+#: lxc/image.go:217
 #, c-format
 msgid "Copying the image: %s"
 msgstr ""
 
-#: lxc/storage.go:1134
+#: lxc/storage_volume.go:387
 #, c-format
 msgid "Copying the storage volume: %s"
 msgstr ""
 
-#: lxc/remote.go:218
+#: lxc/remote.go:267
 msgid "Could not create server cert dir"
 msgstr ""
 
-#: lxc/file.go:70 lxc/file.go:71
+#: lxc/image_alias.go:58 lxc/image_alias.go:59
+msgid "Create aliases for existing images"
+msgstr ""
+
+#: lxc/launch.go:21 lxc/launch.go:22
+msgid "Create and start containers from images"
+msgstr ""
+
+#: lxc/file.go:191 lxc/file.go:331
 msgid "Create any directories necessary"
 msgstr ""
 
-#: lxc/image.go:606 lxc/info.go:127
+#: lxc/snapshot.go:20
+msgid "Create container snapshots"
+msgstr ""
+
+#: lxc/snapshot.go:21
+msgid ""
+"Create container snapshots\n"
+"\n"
+"When --stateful is used, LXD attempts to checkpoint the container's\n"
+"running state, including process memory state, TCP connections, ..."
+msgstr ""
+
+#: lxc/init.go:34 lxc/init.go:35
+msgid "Create containers from images"
+msgstr ""
+
+#: lxc/config_template.go:66 lxc/config_template.go:67
+msgid "Create new container file templates"
+msgstr ""
+
+#: lxc/storage_volume.go:425 lxc/storage_volume.go:426
+msgid "Create new custom storage volumes"
+msgstr ""
+
+#: lxc/network.go:249 lxc/network.go:250
+msgid "Create new networks"
+msgstr ""
+
+#: lxc/profile.go:296 lxc/profile.go:297
+msgid "Create profiles"
+msgstr ""
+
+#: lxc/storage.go:88 lxc/storage.go:89
+msgid "Create storage pools"
+msgstr ""
+
+#: lxc/image.go:832 lxc/info.go:131
 #, c-format
 msgid "Created: %s"
 msgstr ""
 
-#: lxc/init.go:200
+#: lxc/init.go:98
 #, c-format
 msgid "Creating %s"
 msgstr ""
 
-#: lxc/init.go:198
+#: lxc/init.go:96
 msgid "Creating the container"
 msgstr ""
 
-#: lxc/cluster.go:185
+#: lxc/cluster.go:121
 msgid "DATABASE"
 msgstr ""
 
-#: lxc/image.go:235 lxc/image.go:1138 lxc/list.go:469 lxc/network.go:579
-#: lxc/operation.go:154 lxc/storage.go:732 lxc/storage.go:937
+#: lxc/image.go:925 lxc/image_alias.go:230 lxc/list.go:466 lxc/network.go:784
+#: lxc/operation.go:153 lxc/storage.go:545 lxc/storage_volume.go:967
 msgid "DESCRIPTION"
 msgstr ""
 
-#: lxc/storage.go:733
+#: lxc/storage.go:546
 msgid "DRIVER"
 msgstr ""
 
-#: lxc/publish.go:39
+#: lxc/publish.go:41
 msgid "Define a compression algorithm: for image or none"
 msgstr ""
 
-#: lxc/config.go:977
+#: lxc/operation.go:53 lxc/operation.go:54
+msgid "Delete a background operation (will attempt to cancel)"
+msgstr ""
+
+#: lxc/config_template.go:109 lxc/config_template.go:110
+msgid "Delete container file templates"
+msgstr ""
+
+#: lxc/delete.go:29 lxc/delete.go:30
+msgid "Delete containers and snapshots"
+msgstr ""
+
+#: lxc/file.go:72 lxc/file.go:73
+msgid "Delete files in containers"
+msgstr ""
+
+#: lxc/image_alias.go:105 lxc/image_alias.go:106
+msgid "Delete image aliases"
+msgstr ""
+
+#: lxc/image.go:260 lxc/image.go:261
+msgid "Delete images"
+msgstr ""
+
+#: lxc/network.go:319 lxc/network.go:320
+msgid "Delete networks"
+msgstr ""
+
+#: lxc/profile.go:347 lxc/profile.go:348
+msgid "Delete profiles"
+msgstr ""
+
+#: lxc/storage.go:160 lxc/storage.go:161
+msgid "Delete storage pools"
+msgstr ""
+
+#: lxc/storage_volume.go:500 lxc/storage_volume.go:501
+msgid "Delete storage volumes"
+msgstr ""
+
+#: lxc/action.go:30 lxc/action.go:49 lxc/action.go:69 lxc/action.go:91
+#: lxc/alias.go:23 lxc/alias.go:55 lxc/alias.go:99 lxc/alias.go:147
+#: lxc/alias.go:198 lxc/cluster.go:26 lxc/cluster.go:59 lxc/cluster.go:142
+#: lxc/cluster.go:192 lxc/cluster.go:238 lxc/config.go:29 lxc/config.go:88
+#: lxc/config.go:289 lxc/config.go:355 lxc/config.go:452 lxc/config.go:560
+#: lxc/config_device.go:24 lxc/config_device.go:76 lxc/config_device.go:179
+#: lxc/config_device.go:252 lxc/config_device.go:318 lxc/config_device.go:405
+#: lxc/config_device.go:493 lxc/config_device.go:582 lxc/config_device.go:650
+#: lxc/config_metadata.go:29 lxc/config_metadata.go:54
+#: lxc/config_metadata.go:176 lxc/config_template.go:30
+#: lxc/config_template.go:67 lxc/config_template.go:110
+#: lxc/config_template.go:152 lxc/config_template.go:236
+#: lxc/config_template.go:298 lxc/config_trust.go:30 lxc/config_trust.go:59
+#: lxc/config_trust.go:115 lxc/config_trust.go:197 lxc/console.go:32
+#: lxc/copy.go:35 lxc/delete.go:30 lxc/exec.go:39 lxc/file.go:40 lxc/file.go:73
+#: lxc/file.go:122 lxc/file.go:185 lxc/file.go:324 lxc/image.go:42
+#: lxc/image.go:131 lxc/image.go:261 lxc/image.go:312 lxc/image.go:435
+#: lxc/image.go:571 lxc/image.go:776 lxc/image.go:890 lxc/image.go:1212
+#: lxc/image.go:1285 lxc/image_alias.go:26 lxc/image_alias.go:59
+#: lxc/image_alias.go:106 lxc/image_alias.go:149 lxc/image_alias.go:250
+#: lxc/info.go:29 lxc/init.go:35 lxc/launch.go:22 lxc/list.go:48 lxc/main.go:45
+#: lxc/monitor.go:31 lxc/move.go:31 lxc/network.go:32 lxc/network.go:104
+#: lxc/network.go:177 lxc/network.go:250 lxc/network.go:320 lxc/network.go:367
+#: lxc/network.go:452 lxc/network.go:537 lxc/network.go:660 lxc/network.go:719
+#: lxc/network.go:808 lxc/network.go:873 lxc/network.go:920 lxc/network.go:989
+#: lxc/network.go:1051 lxc/operation.go:25 lxc/operation.go:54
+#: lxc/operation.go:98 lxc/operation.go:174 lxc/profile.go:30
+#: lxc/profile.go:102 lxc/profile.go:163 lxc/profile.go:241 lxc/profile.go:297
+#: lxc/profile.go:348 lxc/profile.go:396 lxc/profile.go:520 lxc/profile.go:568
+#: lxc/profile.go:632 lxc/profile.go:705 lxc/profile.go:753 lxc/profile.go:812
+#: lxc/profile.go:866 lxc/publish.go:34 lxc/query.go:27 lxc/remote.go:34
+#: lxc/remote.go:84 lxc/remote.go:380 lxc/remote.go:414 lxc/remote.go:487
+#: lxc/remote.go:549 lxc/remote.go:598 lxc/remote.go:636 lxc/rename.go:20
+#: lxc/restore.go:24 lxc/snapshot.go:21 lxc/storage.go:33 lxc/storage.go:89
+#: lxc/storage.go:161 lxc/storage.go:208 lxc/storage.go:328 lxc/storage.go:383
+#: lxc/storage.go:491 lxc/storage.go:573 lxc/storage.go:645 lxc/storage.go:729
+#: lxc/storage_volume.go:34 lxc/storage_volume.go:122 lxc/storage_volume.go:201
+#: lxc/storage_volume.go:283 lxc/storage_volume.go:426
+#: lxc/storage_volume.go:501 lxc/storage_volume.go:561
+#: lxc/storage_volume.go:643 lxc/storage_volume.go:724
+#: lxc/storage_volume.go:853 lxc/storage_volume.go:918
+#: lxc/storage_volume.go:994 lxc/storage_volume.go:1025
+#: lxc/storage_volume.go:1089 lxc/storage_volume.go:1166
+#: lxc/storage_volume.go:1241
+msgid "Description"
+msgstr ""
+
+#: lxc/network.go:366 lxc/network.go:367
+msgid "Detach network interfaces from containers"
+msgstr ""
+
+#: lxc/network.go:451 lxc/network.go:452
+msgid "Detach network interfaces from profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:560 lxc/storage_volume.go:561
+msgid "Detach storage volumes from containers"
+msgstr ""
+
+#: lxc/storage_volume.go:642 lxc/storage_volume.go:643
+msgid "Detach storage volumes from profiles"
+msgstr ""
+
+#: lxc/config_device.go:163
 #, c-format
 msgid "Device %s added to %s"
 msgstr ""
 
-#: lxc/config.go:1272
+#: lxc/config_device.go:387
 #, c-format
 msgid "Device %s overridden for %s"
 msgstr ""
 
-#: lxc/config.go:1213
+#: lxc/config_device.go:476
 #, c-format
 msgid "Device %s removed from %s"
 msgstr ""
 
-#: lxc/utils.go:192 lxc/utils.go:216
+#: lxc/utils.go:133 lxc/utils.go:157
 #, c-format
 msgid "Device already exists: %s"
 msgstr ""
 
-#: lxc/image.go:1290
+#: lxc/image.go:586
 msgid "Directory import is not available on this platform"
 msgstr ""
 
-#: lxc/exec.go:71
+#: lxc/exec.go:55
 msgid "Disable pseudo-terminal allocation"
 msgstr ""
 
-#: lxc/exec.go:72
+#: lxc/exec.go:56
 msgid "Disable stdin (reads from /dev/null)"
 msgstr ""
 
-#: lxc/info.go:175
+#: lxc/info.go:179
 msgid "Disk usage:"
 msgstr ""
 
-#: lxc/list.go:638
+#: lxc/list.go:635
 msgid "EPHEMERAL"
 msgstr ""
 
-#: lxc/config.go:405
+#: lxc/config_trust.go:177
 msgid "EXPIRY DATE"
 msgstr ""
 
-#: lxc/main.go:52
-msgid "Enable debug mode"
+#: lxc/config_template.go:151 lxc/config_template.go:152
+msgid "Edit container file templates"
 msgstr ""
 
-#: lxc/main.go:51
-msgid "Enable verbose mode"
+#: lxc/config_metadata.go:53 lxc/config_metadata.go:54
+msgid "Edit container metadata files"
 msgstr ""
 
-#: lxc/exec.go:68
-msgid "Environment variable to set (e.g. HOME=/home/foo)"
+#: lxc/config.go:87 lxc/config.go:88
+msgid "Edit container or server configurations as YAML"
+msgstr ""
+
+#: lxc/file.go:121 lxc/file.go:122
+msgid "Edit files in containers"
+msgstr ""
+
+#: lxc/image.go:311 lxc/image.go:312
+msgid "Edit image properties"
+msgstr ""
+
+#: lxc/network.go:536 lxc/network.go:537
+msgid "Edit network configurations as YAML"
+msgstr ""
+
+#: lxc/profile.go:395 lxc/profile.go:396
+msgid "Edit profile configurations as YAML"
+msgstr ""
+
+#: lxc/storage.go:207 lxc/storage.go:208
+msgid "Edit storage pool configurations as YAML"
+msgstr ""
+
+#: lxc/storage_volume.go:723 lxc/storage_volume.go:724
+msgid "Edit storage volume configurations as YAML"
+msgstr ""
+
+#: lxc/list.go:504
+#, c-format
+msgid "Empty column entry (redundant, leading or trailing command) in '%s'"
 msgstr ""
 
-#: lxc/help.go:77
-msgid "Environment:"
+#: lxc/exec.go:52
+msgid "Environment variable to set (e.g. HOME=/home/foo)"
 msgstr ""
 
-#: lxc/copy.go:41 lxc/copy.go:42 lxc/init.go:143 lxc/init.go:144
+#: lxc/copy.go:41 lxc/init.go:44
 msgid "Ephemeral container"
 msgstr ""
 
-#: lxc/config.go:1446
+#: lxc/config_template.go:204
 #, c-format
 msgid "Error updating template file: %s"
 msgstr ""
 
-#: lxc/monitor.go:69
+#: lxc/monitor.go:48
 msgid "Event type to listen for"
 msgstr ""
 
-#: lxc/image.go:610
+#: lxc/exec.go:38
+msgid "Execute commands in containers"
+msgstr ""
+
+#: lxc/exec.go:39
+msgid ""
+"Execute commands in containers\n"
+"\n"
+"The command is executed directly using exec, so there is no shell and\n"
+"shell patterns (variables, file redirects, ...) won't be understood.\n"
+"If you need a shell environment you need to execute the shell\n"
+"executable, passing the shell commands as arguments, for example:\n"
+"\n"
+"  lxc exec <container> -- sh -c \"cd /tmp && pwd\"\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:838
 #, c-format
 msgid "Expires: %s"
 msgstr ""
 
-#: lxc/image.go:612
+#: lxc/image.go:840
 msgid "Expires: never"
 msgstr ""
 
-#: lxc/image.go:922
+#: lxc/image.go:434
+msgid "Export and download images"
+msgstr ""
+
+#: lxc/image.go:435
+msgid ""
+"Export and download images\n"
+"\n"
+"The output target is optional and defaults to the working directory."
+msgstr ""
+
+#: lxc/image.go:494
 #, c-format
 msgid "Exporting the image: %s"
 msgstr ""
 
-#: lxc/config.go:761
+#: lxc/config_template.go:279
 msgid "FILENAME"
 msgstr ""
 
-#: lxc/config.go:402 lxc/image.go:233 lxc/image.go:1137
+#: lxc/config_trust.go:174 lxc/image.go:923 lxc/image_alias.go:229
 msgid "FINGERPRINT"
 msgstr ""
 
-#: lxc/utils.go:261
+#: lxc/utils.go:202
 #, c-format
 msgid "Failed to create alias %s"
 msgstr ""
 
-#: lxc/manpage.go:62
-#, c-format
-msgid "Failed to generate 'lxc.%s.1': %v"
-msgstr ""
-
-#: lxc/manpage.go:55
-#, c-format
-msgid "Failed to generate 'lxc.1': %v"
-msgstr ""
-
-#: lxc/copy.go:238
+#: lxc/copy.go:255
 msgid "Failed to get the new container name"
 msgstr ""
 
-#: lxc/utils.go:251
+#: lxc/utils.go:192
 #, c-format
 msgid "Failed to remove alias %s"
 msgstr ""
 
-#: lxc/file.go:137
+#: lxc/file.go:609
 #, c-format
 msgid "Failed to walk path for %s: %s"
 msgstr ""
 
-#: lxc/list.go:137
+#: lxc/list.go:114
 msgid "Fast mode (same as --columns=nsacPt)"
 msgstr ""
 
-#: lxc/network.go:536 lxc/operation.go:121
+#: lxc/network.go:749 lxc/operation.go:126
 msgid "Filtering isn't supported yet"
 msgstr ""
 
-#: lxc/image.go:599
+#: lxc/image.go:824
 #, c-format
 msgid "Fingerprint: %s"
 msgstr ""
 
-#: lxc/exec.go:70
+#: lxc/exec.go:54
 msgid "Force pseudo-terminal allocation"
 msgstr ""
 
-#: lxc/cluster.go:42
-msgid "Force removing a node, even if degraded"
+#: lxc/cluster.go:242
+msgid "Force removing a member, even if degraded"
 msgstr ""
 
-#: lxc/action.go:47 lxc/action.go:48
+#: lxc/action.go:121
 msgid "Force the container to shutdown"
 msgstr ""
 
-#: lxc/delete.go:34 lxc/delete.go:35
+#: lxc/delete.go:34
 msgid "Force the removal of running containers"
 msgstr ""
 
-#: lxc/main.go:53
+#: lxc/main.go:56
 msgid "Force using the local unix socket"
 msgstr ""
 
-#: lxc/image.go:181 lxc/list.go:136
+#: lxc/image.go:913 lxc/list.go:113
 msgid "Format (csv|json|table|yaml)"
 msgstr ""
 
-#: lxc/remote.go:166
+#: lxc/remote.go:211
 msgid "Generating a client certificate. This may take a minute..."
 msgstr ""
 
-#: lxc/network.go:513
+#: lxc/config_device.go:178 lxc/config_device.go:179
+msgid "Get values for container device configuration keys"
+msgstr ""
+
+#: lxc/config.go:288 lxc/config.go:289
+msgid "Get values for container or server configuration keys"
+msgstr ""
+
+#: lxc/network.go:659 lxc/network.go:660
+msgid "Get values for network configuration keys"
+msgstr ""
+
+#: lxc/profile.go:519 lxc/profile.go:520
+msgid "Get values for profile configuration keys"
+msgstr ""
+
+#: lxc/storage.go:327 lxc/storage.go:328
+msgid "Get values for storage pool configuration keys"
+msgstr ""
+
+#: lxc/storage_volume.go:852 lxc/storage_volume.go:853
+msgid "Get values for storage volume configuration keys"
+msgstr ""
+
+#: lxc/network.go:851
 msgid "HOSTNAME"
 msgstr ""
 
-#: lxc/operation.go:152
+#: lxc/operation.go:151
 msgid "ID"
 msgstr ""
 
-#: lxc/network.go:515
+#: lxc/network.go:853
 msgid "IP ADDRESS"
 msgstr ""
 
-#: lxc/list.go:465
+#: lxc/list.go:462
 msgid "IPV4"
 msgstr ""
 
-#: lxc/list.go:466
+#: lxc/list.go:463
 msgid "IPV6"
 msgstr ""
 
-#: lxc/config.go:404
+#: lxc/config_trust.go:176
 msgid "ISSUE DATE"
 msgstr ""
 
-#: lxc/main.go:171
+#: lxc/main.go:259
 msgid ""
 "If this is your first time running LXD on this machine, you should also run: "
 "lxd init"
 msgstr ""
 
-#: lxc/main.go:54
-msgid "Ignore aliases when determining what command to run"
-msgstr ""
-
-#: lxc/action.go:51
-msgid "Ignore the container state (only for start)"
+#: lxc/action.go:117
+msgid "Ignore the container state"
 msgstr ""
 
-#: lxc/image.go:557
+#: lxc/image.go:1268
 msgid "Image already up to date."
 msgstr ""
 
-#: lxc/image.go:463
+#: lxc/image.go:231
 msgid "Image copied successfully!"
 msgstr ""
 
-#: lxc/image.go:982
+#: lxc/image.go:554
 msgid "Image exported successfully!"
 msgstr ""
 
-#: lxc/image.go:778
+#: lxc/image.go:284 lxc/image.go:1235
+msgid "Image identifier missing"
+msgstr ""
+
+#: lxc/image.go:352
+#, c-format
+msgid "Image identifier missing: %s"
+msgstr ""
+
+#: lxc/image.go:749
 #, c-format
 msgid "Image imported with fingerprint: %s"
 msgstr ""
 
-#: lxc/image.go:555
+#: lxc/image.go:1266
 msgid "Image refreshed successfully!"
 msgstr ""
 
-#: lxc/query.go:39
+#: lxc/image.go:571
+msgid ""
+"Import image into the image store\n"
+"\n"
+"Directory import is only available on Linux and must be performed as root."
+msgstr ""
+
+#: lxc/image.go:570
+msgid "Import images into the image store"
+msgstr ""
+
+#: lxc/query.go:38
 msgid "Input data"
 msgstr ""
 
-#: lxc/init.go:149
+#: lxc/init.go:47
 msgid "Instance type"
 msgstr ""
 
-#: lxc/remote.go:118
+#: lxc/remote.go:163
 #, c-format
 msgid "Invalid URL scheme \"%s\" in \"%s\""
 msgstr ""
 
-#: lxc/config.go:383
+#: lxc/config_trust.go:155
 msgid "Invalid certificate"
 msgstr ""
 
-#: lxc/init.go:32 lxc/init.go:37
-msgid "Invalid configuration key"
+#: lxc/list.go:525
+#, c-format
+msgid "Invalid config key '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:520
+#, c-format
+msgid "Invalid config key column format (too many fields): '%s'"
+msgstr ""
+
+#: lxc/image.go:1196 lxc/list.go:386
+#, c-format
+msgid "Invalid format %q"
+msgstr ""
+
+#: lxc/list.go:543
+#, c-format
+msgid "Invalid max width (must -1, 0 or a positive integer) '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:540
+#, c-format
+msgid "Invalid max width (must be an integer) '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:531
+#, c-format
+msgid ""
+"Invalid name in '%s', empty string is only allowed when defining maxWidth"
+msgstr ""
+
+#: lxc/main.go:341
+msgid "Invalid number of arguments"
 msgstr ""
 
-#: lxc/file.go:560
+#: lxc/file.go:97
 #, c-format
 msgid "Invalid path %s"
 msgstr ""
 
-#: lxc/remote.go:107
+#: lxc/remote.go:152
 #, c-format
 msgid "Invalid protocol: %s"
 msgstr ""
 
-#: lxc/file.go:473
+#: lxc/file.go:243
 #, c-format
 msgid "Invalid source %s"
 msgstr ""
 
-#: lxc/file.go:250
+#: lxc/file.go:352
 #, c-format
 msgid "Invalid target %s"
 msgstr ""
 
-#: lxc/info.go:156
+#: lxc/info.go:160
 msgid "Ips:"
 msgstr ""
 
-#: lxc/image.go:179
+#: lxc/image.go:139
 msgid "Keep the image up to date after initial copy"
 msgstr ""
 
-#: lxc/list.go:470
+#: lxc/list.go:467
 msgid "LAST USED AT"
 msgstr ""
 
-#: lxc/list.go:492
+#: lxc/list.go:489
 msgid "LOCATION"
 msgstr ""
 
-#: lxc/main.go:38
-msgid "LXD socket not found; is LXD installed and running?"
+#: lxc/cluster.go:94
+msgid "LXD server isn't part of a cluster"
 msgstr ""
 
-#: lxc/image.go:615
+#: lxc/image.go:844
 #, c-format
 msgid "Last used: %s"
 msgstr ""
 
-#: lxc/image.go:617
+#: lxc/image.go:846
 msgid "Last used: never"
 msgstr ""
 
-#: lxc/info.go:119
-#, c-format
-msgid "Location: %s"
-msgstr ""
-
-#: lxc/info.go:271
-msgid "Log:"
-msgstr ""
-
-#: lxc/network.go:514
-msgid "MAC ADDRESS"
-msgstr ""
-
-#: lxc/network.go:578
-msgid "MANAGED"
+#: lxc/network.go:807 lxc/network.go:808
+msgid "List DHCP leases"
 msgstr ""
 
-#: lxc/cluster.go:187
-msgid "MESSAGE"
+#: lxc/alias.go:98 lxc/alias.go:99
+msgid "List aliases"
 msgstr ""
 
-#: lxc/image.go:177
-msgid "Make image public"
+#: lxc/cluster.go:58 lxc/cluster.go:59
+msgid "List all the cluster members"
 msgstr ""
 
-#: lxc/publish.go:35
-msgid "Make the image public"
+#: lxc/network.go:718 lxc/network.go:719
+msgid "List available networks"
 msgstr ""
 
-#: lxc/info.go:193
-msgid "Memory (current)"
+#: lxc/storage.go:490 lxc/storage.go:491
+msgid "List available storage pools"
 msgstr ""
 
-#: lxc/info.go:197
-msgid "Memory (peak)"
+#: lxc/operation.go:97 lxc/operation.go:98
+msgid "List background operations"
 msgstr ""
 
-#: lxc/info.go:209
-msgid "Memory usage:"
+#: lxc/config_device.go:251 lxc/config_device.go:252
+msgid "List container devices"
 msgstr ""
 
-#: lxc/monitor.go:70
-msgid "Minimum level for log messages"
+#: lxc/config_template.go:235 lxc/config_template.go:236
+msgid "List container file templates"
 msgstr ""
 
-#: lxc/utils.go:143
-msgid "Missing summary."
+#: lxc/list.go:47
+msgid "List containers"
 msgstr ""
 
-#: lxc/network.go:303 lxc/network.go:356 lxc/storage.go:435 lxc/storage.go:565
-msgid "More than one device matches, specify the device name."
-msgstr ""
+#: lxc/list.go:48
+msgid ""
+"List containers\n"
+"\n"
+"Default column layout: ns46tS\n"
+"Fast column layout: nsacPt\n"
+"\n"
+"== Filters ==\n"
+"A single keyword like \"web\" which will list any container with a name "
+"starting by \"web\".\n"
+"A regular expression on the container name. (e.g. .*web.*01$).\n"
+"A key/value pair referring to a configuration item. For those, the\n"
+"namespace can be abbreviated to the smallest unambiguous identifier.\n"
+"\n"
+"Examples:\n"
+"  - \"user.blah=abc\" will list all containers with the \"blah\" user "
+"property set to \"abc\".\n"
+"  - \"u.blah=abc\" will do the same\n"
+"  - \"security.privileged=true\" will list all privileged containers\n"
+"  - \"s.privileged=true\" will do the same\n"
+"\n"
+"A regular expression matching a configuration item or its value. (e.g. "
+"volatile.eth0.hwaddr=00:16:3e:.*).\n"
+"\n"
+"== Columns ==\n"
+"The -c option takes a comma separated list of arguments that control\n"
+"which container attributes to output when displaying in table or csv\n"
+"format.\n"
+"\n"
+"Column arguments are either pre-defined shorthand chars (see below),\n"
+"or (extended) config keys.\n"
+"\n"
+"Commas between consecutive shorthand chars are optional.\n"
+"\n"
+"Pre-defined column shorthand chars:\n"
+"  4 - IPv4 address\n"
+"  6 - IPv6 address\n"
+"  a - Architecture\n"
+"  b - Storage pool\n"
+"  c - Creation date\n"
+"  d - Description\n"
+"  l - Last used date\n"
+"  n - Name\n"
+"  N - Number of Processes\n"
+"  p - PID of the container's init process\n"
+"  P - Profiles\n"
+"  s - State\n"
+"  S - Number of snapshots\n"
+"  t - Type (persistent or ephemeral)\n"
+"  L - Location of the container (e.g. its node)\n"
+"\n"
+"Custom columns are defined with \"key[:name][:maxWidth]\":\n"
+"  KEY: The (extended) config key to display\n"
+"  NAME: Name to display in the column header.\n"
+"  Defaults to the key if not specified or empty.\n"
+"\n"
+"  MAXWIDTH: Max width of the column (longer results are truncated).\n"
+"  Defaults to -1 (unlimited). Use 0 to limit to the column header size."
+msgstr ""
+
+#: lxc/image_alias.go:148
+msgid "List image aliases"
+msgstr ""
+
+#: lxc/image_alias.go:149
+msgid ""
+"List image aliases\n"
+"\n"
+"Filters may be part of the image hash or part of the image alias name.\n"
+msgstr ""
+
+#: lxc/image.go:889
+msgid "List images"
+msgstr ""
+
+#: lxc/image.go:890
+msgid ""
+"List images\n"
+"\n"
+"Filters may be of the <key>=<value> form for property based filtering,\n"
+"or part of the image hash or part of the image alias name.\n"
+"\n"
+"The -c option takes a (optionally comma-separated) list of arguments\n"
+"that control which image attributes to output when displaying in table\n"
+"or csv format.\n"
+"\n"
+"Default column layout is: lfpdasu\n"
+"\n"
+"Column shorthand chars:\n"
+"\n"
+"    l - Shortest image alias (and optionally number of other aliases)\n"
+"    L - Newline-separated list of all image aliases\n"
+"    f - Fingerprint\n"
+"    p - Whether image is public\n"
+"    d - Description\n"
+"    a - Architecture\n"
+"    s - Size"
+msgstr ""
+
+#: lxc/profile.go:567 lxc/profile.go:568
+msgid "List profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:917 lxc/storage_volume.go:918
+msgid "List storage volumes"
+msgstr ""
+
+#: lxc/remote.go:413 lxc/remote.go:414
+msgid "List the available remotes"
+msgstr ""
+
+#: lxc/config_trust.go:114 lxc/config_trust.go:115
+msgid "List trusted clients"
+msgstr ""
+
+#: lxc/operation.go:24 lxc/operation.go:25
+msgid "List, show and delete background operations"
+msgstr ""
+
+#: lxc/info.go:123
+#, c-format
+msgid "Location: %s"
+msgstr ""
+
+#: lxc/info.go:275
+msgid "Log:"
+msgstr ""
+
+#: lxc/network.go:852
+msgid "MAC ADDRESS"
+msgstr ""
+
+#: lxc/network.go:783
+msgid "MANAGED"
+msgstr ""
+
+#: lxc/cluster.go:123
+msgid "MESSAGE"
+msgstr ""
+
+#: lxc/image.go:137 lxc/image.go:576
+msgid "Make image public"
+msgstr ""
+
+#: lxc/publish.go:38
+msgid "Make the image public"
+msgstr ""
+
+#: lxc/network.go:32
+msgid "Manage an attach containers to networks"
+msgstr ""
+
+#: lxc/network.go:31
+msgid "Manage and attach containers to networks"
+msgstr ""
+
+#: lxc/cluster.go:25 lxc/cluster.go:26
+msgid "Manage cluster members"
+msgstr ""
+
+#: lxc/alias.go:22 lxc/alias.go:23
+msgid "Manage command aliases"
+msgstr ""
+
+#: lxc/config.go:28 lxc/config.go:29
+msgid "Manage container and server configuration options"
+msgstr ""
+
+#: lxc/config_device.go:23 lxc/config_device.go:24
+msgid "Manage container devices"
+msgstr ""
+
+#: lxc/config_template.go:29 lxc/config_template.go:30
+msgid "Manage container file templates"
+msgstr ""
+
+#: lxc/config_metadata.go:28 lxc/config_metadata.go:29
+msgid "Manage container metadata files"
+msgstr ""
+
+#: lxc/file.go:39 lxc/file.go:40
+msgid "Manage files in containers"
+msgstr ""
+
+#: lxc/image_alias.go:25 lxc/image_alias.go:26
+msgid "Manage image aliases"
+msgstr ""
+
+#: lxc/image.go:41
+msgid "Manage images"
+msgstr ""
+
+#: lxc/image.go:42
+msgid ""
+"Manage images\n"
+"\n"
+"In LXD containers are created from images. Those images were themselves\n"
+"either generated from an existing container or downloaded from an image\n"
+"server.\n"
+"\n"
+"When using remote images, LXD will automatically cache images for you\n"
+"and remove them upon expiration.\n"
+"\n"
+"The image unique identifier is the hash (sha-256) of its representation\n"
+"as a compressed tarball (or for split images, the concatenation of the\n"
+"metadata and rootfs tarballs).\n"
+"\n"
+"Images can be referenced by their full hash, shortest unique partial\n"
+"hash or alias name (if one is set)."
+msgstr ""
+
+#: lxc/profile.go:29 lxc/profile.go:30
+msgid "Manage profiles"
+msgstr ""
+
+#: lxc/storage.go:32 lxc/storage.go:33
+msgid "Manage storage pools and volumes"
+msgstr ""
+
+#: lxc/storage_volume.go:33
+msgid "Manage storage volumes"
+msgstr ""
+
+#: lxc/storage_volume.go:34
+msgid ""
+"Manage storage volumes\n"
+"\n"
+"Unless specified through a prefix, all volume operations affect \"custom"
+"\" (user created) volumes."
+msgstr ""
+
+#: lxc/remote.go:33 lxc/remote.go:34
+msgid "Manage the list of remote servers"
+msgstr ""
+
+#: lxc/config_trust.go:29 lxc/config_trust.go:30
+msgid "Manage trusted clients"
+msgstr ""
+
+#: lxc/info.go:197
+msgid "Memory (current)"
+msgstr ""
+
+#: lxc/info.go:201
+msgid "Memory (peak)"
+msgstr ""
+
+#: lxc/info.go:213
+msgid "Memory usage:"
+msgstr ""
+
+#: lxc/monitor.go:49
+msgid "Minimum level for log messages"
+msgstr ""
+
+#: lxc/config_metadata.go:102 lxc/config_metadata.go:200
+#: lxc/config_template.go:91 lxc/config_template.go:134
+#: lxc/config_template.go:176 lxc/config_template.go:260
+#: lxc/config_template.go:322 lxc/profile.go:197 lxc/profile.go:656
+msgid "Missing container name"
+msgstr ""
+
+#: lxc/profile.go:126
+msgid "Missing container.name name"
+msgstr ""
+
+#: lxc/config_device.go:103 lxc/config_device.go:203 lxc/config_device.go:276
+#: lxc/config_device.go:342 lxc/config_device.go:429 lxc/config_device.go:517
+#: lxc/config_device.go:606
+msgid "Missing name"
+msgstr ""
+
+#: lxc/network.go:128 lxc/network.go:201 lxc/network.go:344 lxc/network.go:391
+#: lxc/network.go:476 lxc/network.go:581 lxc/network.go:686 lxc/network.go:832
+#: lxc/network.go:897 lxc/network.go:946 lxc/network.go:1015
+msgid "Missing network name"
+msgstr ""
+
+#: lxc/storage.go:185 lxc/storage.go:252 lxc/storage.go:353 lxc/storage.go:408
+#: lxc/storage.go:603 lxc/storage.go:677 lxc/storage_volume.go:146
+#: lxc/storage_volume.go:225 lxc/storage_volume.go:451
+#: lxc/storage_volume.go:526 lxc/storage_volume.go:585
+#: lxc/storage_volume.go:667 lxc/storage_volume.go:766
+#: lxc/storage_volume.go:878 lxc/storage_volume.go:942
+#: lxc/storage_volume.go:1050 lxc/storage_volume.go:1114
+#: lxc/storage_volume.go:1197
+msgid "Missing pool name"
+msgstr ""
+
+#: lxc/profile.go:321 lxc/profile.go:372 lxc/profile.go:444 lxc/profile.go:544
+#: lxc/profile.go:729 lxc/profile.go:777 lxc/profile.go:836
+msgid "Missing profile name"
+msgstr ""
+
+#: lxc/profile.go:266
+msgid "Missing source profile name"
+msgstr ""
 
-#: lxc/file.go:460
+#: lxc/storage_volume.go:311
+msgid "Missing source volume name"
+msgstr ""
+
+#: lxc/file.go:446
+msgid "Missing target directory"
+msgstr ""
+
+#: lxc/monitor.go:30
+msgid "Monitor a local or remote LXD server"
+msgstr ""
+
+#: lxc/monitor.go:31
+msgid ""
+"Monitor a local or remote LXD server\n"
+"\n"
+"By default the monitor will listen to all message types."
+msgstr ""
+
+#: lxc/network.go:411 lxc/network.go:496 lxc/storage_volume.go:605
+#: lxc/storage_volume.go:686
+msgid "More than one device matches, specify the device name."
+msgstr ""
+
+#: lxc/file.go:224
 msgid "More than one file to download, but target is not a directory"
 msgstr ""
 
-#: lxc/move.go:42
+#: lxc/move.go:30 lxc/move.go:31
+msgid "Move containers within or in between LXD instances"
+msgstr ""
+
+#: lxc/storage_volume.go:993 lxc/storage_volume.go:994
+msgid "Move storage volumes between pools"
+msgstr ""
+
+#: lxc/move.go:44
 msgid "Move the container without its snapshots"
 msgstr ""
 
-#: lxc/storage.go:1128
+#: lxc/storage_volume.go:375
 #, c-format
 msgid "Moving the storage volume: %s"
 msgstr ""
 
-#: lxc/image.go:1292
+#: lxc/image.go:588
 msgid "Must run as root to import from directory"
 msgstr ""
 
-#: lxc/action.go:74
+#: lxc/action.go:147
 msgid "Must supply container name for: "
 msgstr ""
 
-#: lxc/cluster.go:183 lxc/list.go:471 lxc/network.go:576 lxc/profile.go:573
-#: lxc/remote.go:409 lxc/storage.go:731 lxc/storage.go:936
+#: lxc/cluster.go:119 lxc/list.go:468 lxc/network.go:781 lxc/profile.go:613
+#: lxc/remote.go:463 lxc/storage.go:544 lxc/storage_volume.go:966
 msgid "NAME"
 msgstr ""
 
-#: lxc/network.go:558 lxc/operation.go:139 lxc/remote.go:380 lxc/remote.go:385
+#: lxc/network.go:763 lxc/operation.go:138 lxc/remote.go:434 lxc/remote.go:439
 msgid "NO"
 msgstr ""
 
-#: lxc/storage.go:941
+#: lxc/storage_volume.go:971
 msgid "NODE"
 msgstr ""
 
-#: lxc/info.go:117
+#: lxc/info.go:121
 #, c-format
 msgid "Name: %s"
 msgstr ""
 
-#: lxc/network.go:276
+#: lxc/network.go:303
 #, c-format
 msgid "Network %s created"
 msgstr ""
 
-#: lxc/network.go:393
+#: lxc/network.go:353
 #, c-format
 msgid "Network %s deleted"
 msgstr ""
 
-#: lxc/network.go:274
+#: lxc/network.go:301
 #, c-format
 msgid "Network %s pending on node %s"
 msgstr ""
 
-#: lxc/network.go:470
+#: lxc/network.go:906
 #, c-format
 msgid "Network %s renamed to %s"
 msgstr ""
 
-#: lxc/init.go:145 lxc/init.go:146
+#: lxc/init.go:45
 msgid "Network name"
 msgstr ""
 
-#: lxc/info.go:226
+#: lxc/info.go:230
 msgid "Network usage:"
 msgstr ""
 
-#: lxc/image.go:180 lxc/publish.go:36
+#: lxc/publish.go:39
 msgid "New alias to define at target"
 msgstr ""
 
-#: lxc/config.go:414
-msgid "No certificate provided to add"
+#: lxc/image.go:140 lxc/image.go:577
+msgid "New aliases to add to the image"
 msgstr ""
 
-#: lxc/network.go:312 lxc/network.go:365
+#: lxc/network.go:420 lxc/network.go:505
 msgid "No device found for this network"
 msgstr ""
 
-#: lxc/storage.go:444 lxc/storage.go:574
+#: lxc/storage_volume.go:614 lxc/storage_volume.go:695
 msgid "No device found for this storage volume."
 msgstr ""
 
-#: lxc/config.go:446
-msgid "No fingerprint specified."
-msgstr ""
-
-#: lxc/cluster.go:143
+#: lxc/cluster.go:268
 #, c-format
 msgid "Node %s removed"
 msgstr ""
 
-#: lxc/cluster.go:119
+#: lxc/cluster.go:221
 #, c-format
 msgid "Node %s renamed to %s"
 msgstr ""
 
-#: lxc/copy.go:46 lxc/init.go:150 lxc/move.go:45 lxc/network.go:105
-#: lxc/storage.go:165
+#: lxc/copy.go:45 lxc/init.go:48 lxc/move.go:47
 msgid "Node name"
 msgstr ""
 
-#: lxc/storage.go:388 lxc/storage.go:481
+#: lxc/storage_volume.go:164 lxc/storage_volume.go:243
 msgid "Only \"custom\" volumes can be attached to containers."
 msgstr ""
 
-#: lxc/remote.go:101
+#: lxc/remote.go:146
 msgid "Only https URLs are supported for simplestreams"
 msgstr ""
 
-#: lxc/image.go:688
+#: lxc/image.go:658
 msgid "Only https:// is supported for remote image import."
 msgstr ""
 
-#: lxc/network.go:421 lxc/network.go:605
+#: lxc/network.go:607 lxc/network.go:960
 msgid "Only managed networks can be modified."
 msgstr ""
 
-#: lxc/operation.go:85
+#: lxc/operation.go:83
 #, c-format
 msgid "Operation %s deleted"
 msgstr ""
 
-#: lxc/help.go:71 lxc/main.go:139 lxc/main.go:195
-msgid "Options:"
-msgstr ""
-
-#: lxc/exec.go:69
+#: lxc/exec.go:53
 msgid "Override the terminal mode (auto, interactive or non-interactive)"
 msgstr ""
 
-#: lxc/list.go:641
+#: lxc/list.go:638
 msgid "PERSISTENT"
 msgstr ""
 
-#: lxc/list.go:473
+#: lxc/list.go:470
 msgid "PID"
 msgstr ""
 
-#: lxc/list.go:472
+#: lxc/list.go:469
 msgid "PROCESSES"
 msgstr ""
 
-#: lxc/list.go:474
+#: lxc/list.go:471
 msgid "PROFILES"
 msgstr ""
 
-#: lxc/remote.go:411
+#: lxc/remote.go:465
 msgid "PROTOCOL"
 msgstr ""
 
-#: lxc/image.go:234 lxc/remote.go:413
+#: lxc/image.go:924 lxc/remote.go:467
 msgid "PUBLIC"
 msgstr ""
 
-#: lxc/info.go:220
+#: lxc/info.go:224
 msgid "Packets received"
 msgstr ""
 
-#: lxc/info.go:221
+#: lxc/info.go:225
 msgid "Packets sent"
 msgstr ""
 
-#: lxc/help.go:78
-msgid "Path to an alternate client configuration directory"
-msgstr ""
-
-#: lxc/help.go:79
-msgid "Path to an alternate server directory"
-msgstr ""
-
-#: lxc/main.go:240
-msgid "Pause containers."
-msgstr ""
-
-#: lxc/main.go:42
-msgid "Permission denied, are you in the lxd group?"
+#: lxc/action.go:48 lxc/action.go:49
+msgid "Pause containers"
 msgstr ""
 
-#: lxc/info.go:138
+#: lxc/info.go:142
 #, c-format
 msgid "Pid: %d"
 msgstr ""
 
-#: lxc/network.go:446 lxc/profile.go:276 lxc/storage.go:648 lxc/storage.go:1210
+#: lxc/network.go:632 lxc/profile.go:491 lxc/storage.go:299
+#: lxc/storage_volume.go:823
 msgid "Press enter to open the editor again"
 msgstr ""
 
-#: lxc/config.go:822 lxc/config.go:887 lxc/config.go:1397 lxc/config.go:1447
-#: lxc/image.go:1192
+#: lxc/config.go:196 lxc/config.go:260 lxc/config_metadata.go:145
+#: lxc/config_template.go:205 lxc/image.go:406
 msgid "Press enter to start the editor again"
 msgstr ""
 
-#: lxc/monitor.go:68
+#: lxc/monitor.go:47
 msgid "Pretty rendering"
 msgstr ""
 
-#: lxc/help.go:73
-msgid "Print debug information"
-msgstr ""
-
-#: lxc/help.go:72
-msgid "Print less common commands"
+#: lxc/main.go:55
+msgid "Print help"
 msgstr ""
 
-#: lxc/query.go:37
+#: lxc/query.go:36
 msgid "Print the raw response"
 msgstr ""
 
-#: lxc/help.go:74
-msgid "Print verbose information"
+#: lxc/main.go:54
+msgid "Print version number"
 msgstr ""
 
-#: lxc/info.go:162
+#: lxc/info.go:166
 #, c-format
 msgid "Processes: %d"
 msgstr ""
 
-#: lxc/profile.go:362
+#: lxc/main_aliases.go:123 lxc/main_aliases.go:131
+#, c-format
+msgid "Processing aliases failed: %s\n"
+msgstr ""
+
+#: lxc/profile.go:147
 #, c-format
 msgid "Profile %s added to %s"
 msgstr ""
 
-#: lxc/profile.go:226
+#: lxc/profile.go:333
 #, c-format
 msgid "Profile %s created"
 msgstr ""
 
-#: lxc/profile.go:310
+#: lxc/profile.go:381
 #, c-format
 msgid "Profile %s deleted"
 msgstr ""
 
-#: lxc/profile.go:397
+#: lxc/profile.go:690
 #, c-format
 msgid "Profile %s removed from %s"
 msgstr ""
 
-#: lxc/profile.go:300
+#: lxc/profile.go:738
 #, c-format
 msgid "Profile %s renamed to %s"
 msgstr ""
 
-#: lxc/copy.go:39 lxc/copy.go:40 lxc/init.go:141 lxc/init.go:142
+#: lxc/copy.go:40 lxc/init.go:43
 msgid "Profile to apply to the new container"
 msgstr ""
 
-#: lxc/profile.go:339
+#: lxc/profile.go:225
 #, c-format
 msgid "Profiles %s applied to %s"
 msgstr ""
 
-#: lxc/info.go:136
+#: lxc/info.go:140
 #, c-format
 msgid "Profiles: %s"
 msgstr ""
 
-#: lxc/image.go:619
+#: lxc/image.go:849
 msgid "Properties:"
 msgstr ""
 
-#: lxc/remote.go:72
+#: lxc/remote.go:92
 msgid "Public image server"
 msgstr ""
 
-#: lxc/image.go:602
+#: lxc/image.go:827
 #, c-format
 msgid "Public: %s"
 msgstr ""
 
-#: lxc/file.go:68 lxc/file.go:69
-msgid "Recursively push or pull files"
+#: lxc/publish.go:33 lxc/publish.go:34
+msgid "Publish containers as images"
 msgstr ""
 
-#: lxc/image.go:529
-#, c-format
-msgid "Refreshing the image: %s"
+#: lxc/file.go:184 lxc/file.go:185
+msgid "Pull files from containers"
 msgstr ""
 
-#: lxc/remote.go:69
-msgid "Remote admin password"
+#: lxc/file.go:323 lxc/file.go:324
+msgid "Push files into containers"
 msgstr ""
 
-#: lxc/utils/cancel.go:34
-msgid "Remote operation canceled by user"
+#: lxc/file.go:192 lxc/file.go:330
+msgid "Recursively transfer files"
+msgstr ""
+
+#: lxc/image.go:1211 lxc/image.go:1212
+msgid "Refresh images"
 msgstr ""
 
-#: lxc/info.go:122
+#: lxc/image.go:1239
 #, c-format
-msgid "Remote: %s"
+msgid "Refreshing the image: %s"
 msgstr ""
 
-#: lxc/delete.go:42
+#: lxc/remote.go:515
 #, c-format
-msgid "Remove %s (yes/no): "
+msgid "Remote %s already exists"
 msgstr ""
 
-#: lxc/storage.go:1247
+#: lxc/remote.go:507 lxc/remote.go:569 lxc/remote.go:618 lxc/remote.go:656
 #, c-format
-msgid "Renamed storage volume from \"%s\" to \"%s\""
+msgid "Remote %s doesn't exist"
 msgstr ""
 
-#: lxc/delete.go:36 lxc/delete.go:37
-msgid "Require user confirmation"
+#: lxc/remote.go:116
+#, c-format
+msgid "Remote %s exists as <%s>"
 msgstr ""
 
-#: lxc/info.go:159
-msgid "Resources:"
+#: lxc/remote.go:511 lxc/remote.go:573 lxc/remote.go:660
+#, c-format
+msgid "Remote %s is static and cannot be modified"
 msgstr ""
 
-#: lxc/main.go:248
-msgid "Restart containers."
+#: lxc/remote.go:89
+msgid "Remote admin password"
 msgstr ""
 
-#: lxc/console.go:38
-msgid "Retrieve the container's console log"
+#: lxc/utils/cancel.go:34
+msgid "Remote operation canceled by user"
 msgstr ""
 
-#: lxc/init.go:293
+#: lxc/info.go:126
 #, c-format
-msgid "Retrieving image: %s"
+msgid "Remote: %s"
 msgstr ""
 
-#: lxc/action.go:52
-msgid "Run command against all containers"
+#: lxc/delete.go:42
+#, c-format
+msgid "Remove %s (yes/no): "
 msgstr ""
 
-#: lxc/image.go:237
-msgid "SIZE"
+#: lxc/cluster.go:237 lxc/cluster.go:238
+msgid "Remove a member from the cluster"
 msgstr ""
 
-#: lxc/list.go:475
-msgid "SNAPSHOTS"
+#: lxc/alias.go:197 lxc/alias.go:198
+msgid "Remove aliases"
 msgstr ""
 
-#: lxc/storage.go:738
-msgid "SOURCE"
+#: lxc/config_device.go:404 lxc/config_device.go:405
+msgid "Remove container devices"
 msgstr ""
 
-#: lxc/cluster.go:186 lxc/list.go:476 lxc/network.go:583 lxc/storage.go:736
-msgid "STATE"
+#: lxc/profile.go:631 lxc/profile.go:632
+msgid "Remove profiles from containers"
 msgstr ""
 
-#: lxc/remote.go:414
-msgid "STATIC"
+#: lxc/remote.go:548 lxc/remote.go:549
+msgid "Remove remotes"
 msgstr ""
 
-#: lxc/operation.go:155
-msgid "STATUS"
+#: lxc/config_trust.go:196 lxc/config_trust.go:197
+msgid "Remove trusted clients"
 msgstr ""
 
-#: lxc/list.go:478
-msgid "STORAGE POOL"
+#: lxc/cluster.go:191 lxc/cluster.go:192
+msgid "Rename a cluster member"
 msgstr ""
 
-#: lxc/remote.go:71
-msgid "Server authentication type (tls or macaroons)"
+#: lxc/alias.go:146 lxc/alias.go:147 lxc/image_alias.go:249
+#: lxc/image_alias.go:250
+msgid "Rename aliases"
 msgstr ""
 
-#: lxc/remote.go:211
-msgid "Server certificate NACKed by user"
+#: lxc/rename.go:19 lxc/rename.go:20
+msgid "Rename containers and snapshots"
 msgstr ""
 
-#: lxc/remote.go:311
-msgid "Server doesn't trust us after authentication"
+#: lxc/network.go:872 lxc/network.go:873
+msgid "Rename networks"
 msgstr ""
 
-#: lxc/remote.go:70
-msgid "Server protocol (lxd or simplestreams)"
+#: lxc/profile.go:704 lxc/profile.go:705
+msgid "Rename profiles"
 msgstr ""
 
-#: lxc/file.go:66
-msgid "Set the file's gid on push"
+#: lxc/remote.go:486 lxc/remote.go:487
+msgid "Rename remotes"
 msgstr ""
 
-#: lxc/file.go:67
-msgid "Set the file's perms on push"
+#: lxc/storage_volume.go:1024 lxc/storage_volume.go:1025
+msgid "Rename storage volumes"
 msgstr ""
 
-#: lxc/file.go:65
-msgid "Set the file's uid on push"
+#: lxc/storage_volume.go:1073
+#, c-format
+msgid "Renamed storage volume from \"%s\" to \"%s\""
 msgstr ""
 
-#: lxc/help.go:29
-msgid "Show all commands (not just interesting ones)"
+#: lxc/delete.go:35
+msgid "Require user confirmation"
 msgstr ""
 
-#: lxc/help.go:75
-msgid "Show client version"
+#: lxc/info.go:163
+msgid "Resources:"
 msgstr ""
 
-#: lxc/info.go:40
-msgid "Show the container's last 100 log lines?"
+#: lxc/action.go:68
+msgid "Restart containers"
 msgstr ""
 
-#: lxc/config.go:36
-msgid "Show the expanded configuration"
+#: lxc/action.go:69
+msgid ""
+"Restart containers\n"
+"\n"
+"The opposite of \"lxc pause\" is \"lxc start\"."
 msgstr ""
 
-#: lxc/info.go:41
-msgid "Show the resources available to the server"
+#: lxc/restore.go:23
+msgid "Restore containers from snapshots"
 msgstr ""
 
-#: lxc/storage.go:163
-msgid "Show the resources available to the storage pool"
+#: lxc/restore.go:24
+msgid ""
+"Restore containers from snapshots\n"
+"\n"
+"If --stateful is passed, then the running state will be restored too."
+msgstr ""
+
+#: lxc/console.go:39
+msgid "Retrieve the container's console log"
+msgstr ""
+
+#: lxc/init.go:201
+#, c-format
+msgid "Retrieving image: %s"
+msgstr ""
+
+#: lxc/action.go:112
+msgid "Run command against all containers"
+msgstr ""
+
+#: lxc/image.go:927
+msgid "SIZE"
+msgstr ""
+
+#: lxc/list.go:472
+msgid "SNAPSHOTS"
+msgstr ""
+
+#: lxc/storage.go:551
+msgid "SOURCE"
+msgstr ""
+
+#: lxc/cluster.go:122 lxc/list.go:473 lxc/network.go:788 lxc/storage.go:549
+msgid "STATE"
+msgstr ""
+
+#: lxc/remote.go:468
+msgid "STATIC"
+msgstr ""
+
+#: lxc/operation.go:154
+msgid "STATUS"
+msgstr ""
+
+#: lxc/list.go:475
+msgid "STORAGE POOL"
+msgstr ""
+
+#: lxc/query.go:26 lxc/query.go:27
+msgid "Send a raw query to LXD"
+msgstr ""
+
+#: lxc/remote.go:91
+msgid "Server authentication type (tls or macaroons)"
+msgstr ""
+
+#: lxc/remote.go:260
+msgid "Server certificate NACKed by user"
+msgstr ""
+
+#: lxc/remote.go:360
+msgid "Server doesn't trust us after authentication"
+msgstr ""
+
+#: lxc/remote.go:90
+msgid "Server protocol (lxd or simplestreams)"
+msgstr ""
+
+#: lxc/config_device.go:492 lxc/config_device.go:493
+msgid "Set container device configuration keys"
+msgstr ""
+
+#: lxc/config.go:354 lxc/config.go:355
+msgid "Set container or server configuration keys"
+msgstr ""
+
+#: lxc/network.go:919 lxc/network.go:920
+msgid "Set network configuration keys"
+msgstr ""
+
+#: lxc/profile.go:752 lxc/profile.go:753
+msgid "Set profile configuration keys"
+msgstr ""
+
+#: lxc/storage.go:572 lxc/storage.go:573
+msgid "Set storage pool configuration keys"
+msgstr ""
+
+#: lxc/storage_volume.go:1088 lxc/storage_volume.go:1089
+msgid "Set storage volume configuration keys"
+msgstr ""
+
+#: lxc/remote.go:635 lxc/remote.go:636
+msgid "Set the URL for the remote"
+msgstr ""
+
+#: lxc/remote.go:597 lxc/remote.go:598
+msgid "Set the default remote"
+msgstr ""
+
+#: lxc/file.go:333
+msgid "Set the file's gid on push"
+msgstr ""
+
+#: lxc/file.go:334
+msgid "Set the file's perms on push"
+msgstr ""
+
+#: lxc/file.go:332
+msgid "Set the file's uid on push"
+msgstr ""
+
+#: lxc/main.go:57
+msgid "Show all debug messages"
+msgstr ""
+
+#: lxc/main.go:58
+msgid "Show all information messages"
+msgstr ""
+
+#: lxc/config_metadata.go:175 lxc/config_metadata.go:176
+msgid "Show container metadata files"
+msgstr ""
+
+#: lxc/config.go:451 lxc/config.go:452
+msgid "Show container or server configurations"
+msgstr ""
+
+#: lxc/info.go:28 lxc/info.go:29
+msgid "Show container or server information"
+msgstr ""
+
+#: lxc/config_template.go:297 lxc/config_template.go:298
+msgid "Show content of container file templates"
+msgstr ""
+
+#: lxc/cluster.go:141 lxc/cluster.go:142
+msgid "Show details of a cluster member"
+msgstr ""
+
+#: lxc/operation.go:173 lxc/operation.go:174
+msgid "Show details on a background operation"
+msgstr ""
+
+#: lxc/config_device.go:581 lxc/config_device.go:582
+msgid "Show full device configuration for containers or profiles"
+msgstr ""
+
+#: lxc/image.go:1284 lxc/image.go:1285
+msgid "Show image properties"
+msgstr ""
+
+#: lxc/main.go:61
+msgid "Show less common commands"
 msgstr ""
 
-#: lxc/storage.go:164
+#: lxc/network.go:988 lxc/network.go:989
+msgid "Show network configurations"
+msgstr ""
+
+#: lxc/profile.go:811 lxc/profile.go:812
+msgid "Show profile configurations"
+msgstr ""
+
+#: lxc/storage.go:644 lxc/storage.go:645
+msgid "Show storage pool configurations and resources"
+msgstr ""
+
+#: lxc/storage_volume.go:1165
+msgid "Show storage volum configurations"
+msgstr ""
+
+#: lxc/storage_volume.go:1166
+msgid "Show storage volume configurations"
+msgstr ""
+
+#: lxc/info.go:39
+msgid "Show the container's last 100 log lines?"
+msgstr ""
+
+#: lxc/remote.go:379 lxc/remote.go:380
+msgid "Show the default remote"
+msgstr ""
+
+#: lxc/config.go:455
+msgid "Show the expanded configuration"
+msgstr ""
+
+#: lxc/info.go:40
+msgid "Show the resources available to the server"
+msgstr ""
+
+#: lxc/storage.go:648
+msgid "Show the resources available to the storage pool"
+msgstr ""
+
+#: lxc/storage.go:386
 msgid "Show the used and free space in bytes"
 msgstr ""
 
-#: lxc/image.go:600
+#: lxc/image.go:775 lxc/image.go:776
+msgid "Show useful information about images"
+msgstr ""
+
+#: lxc/storage.go:382 lxc/storage.go:383
+msgid "Show useful information about storage pools"
+msgstr ""
+
+#: lxc/image.go:825
 #, c-format
 msgid "Size: %.2fMB"
 msgstr ""
 
-#: lxc/info.go:240
+#: lxc/info.go:244
 msgid "Snapshots:"
 msgstr ""
 
-#: lxc/action.go:163
+#: lxc/action.go:242
 #, c-format
 msgid "Some containers failed to %s"
 msgstr ""
 
-#: lxc/image.go:634
+#: lxc/image.go:867
 msgid "Source:"
 msgstr ""
 
-#: lxc/main.go:258
-msgid "Start containers."
+#: lxc/action.go:29 lxc/action.go:30
+msgid "Start containers"
 msgstr ""
 
-#: lxc/launch.go:59
+#: lxc/launch.go:62
 #, c-format
 msgid "Starting %s"
 msgstr ""
 
-#: lxc/info.go:130
+#: lxc/info.go:134
 #, c-format
 msgid "Status: %s"
 msgstr ""
 
-#: lxc/main.go:264
-msgid "Stop containers."
+#: lxc/action.go:90 lxc/action.go:91
+msgid "Stop containers"
 msgstr ""
 
-#: lxc/publish.go:37 lxc/publish.go:38
+#: lxc/publish.go:40
 msgid "Stop the container if currently running"
 msgstr ""
 
-#: lxc/publish.go:136
+#: lxc/publish.go:144
 msgid "Stopping container failed!"
 msgstr ""
 
-#: lxc/delete.go:121
+#: lxc/delete.go:120
 #, c-format
 msgid "Stopping the container failed: %s"
 msgstr ""
 
-#: lxc/storage.go:538
+#: lxc/storage.go:144
 #, c-format
 msgid "Storage pool %s created"
 msgstr ""
 
-#: lxc/storage.go:598
+#: lxc/storage.go:194
 #, c-format
 msgid "Storage pool %s deleted"
 msgstr ""
 
-#: lxc/storage.go:536
+#: lxc/storage.go:142
 #, c-format
 msgid "Storage pool %s pending on node %s"
 msgstr ""
 
-#: lxc/init.go:147 lxc/init.go:148
+#: lxc/init.go:46
 msgid "Storage pool name"
 msgstr ""
 
-#: lxc/storage.go:980
+#: lxc/storage_volume.go:484
 #, c-format
 msgid "Storage volume %s created"
 msgstr ""
 
-#: lxc/storage.go:1000
+#: lxc/storage_volume.go:545
 #, c-format
 msgid "Storage volume %s deleted"
 msgstr ""
 
-#: lxc/storage.go:1135
+#: lxc/storage_volume.go:388
 msgid "Storage volume copied successfully!"
 msgstr ""
 
-#: lxc/storage.go:1129
+#: lxc/storage_volume.go:376
 msgid "Storage volume moved successfully!"
 msgstr ""
 
-#: lxc/action.go:50
-msgid "Store the container state (only for stop)"
+#: lxc/action.go:115
+msgid "Store the container state"
 msgstr ""
 
-#: lxc/info.go:201
+#: lxc/info.go:205
 msgid "Swap (current)"
 msgstr ""
 
-#: lxc/info.go:205
+#: lxc/info.go:209
 msgid "Swap (peak)"
 msgstr ""
 
-#: lxc/alias.go:85
+#: lxc/alias.go:128
 msgid "TARGET"
 msgstr ""
 
-#: lxc/list.go:477 lxc/network.go:516 lxc/network.go:577 lxc/operation.go:153
-#: lxc/storage.go:935
+#: lxc/list.go:474 lxc/network.go:782 lxc/network.go:854 lxc/operation.go:152
+#: lxc/storage_volume.go:965
 msgid "TYPE"
 msgstr ""
 
-#: lxc/delete.go:105
+#: lxc/delete.go:104
 msgid "The container is currently running, stop it first or pass --force."
 msgstr ""
 
-#: lxc/publish.go:101
+#: lxc/publish.go:109
 msgid ""
 "The container is currently running. Use --force to have it stopped and "
 "restarted."
 msgstr ""
 
-#: lxc/init.go:372
+#: lxc/init.go:280
 msgid "The container you are starting doesn't have any network attached to it."
 msgstr ""
 
-#: lxc/config.go:944 lxc/config.go:961 lxc/config.go:1240
+#: lxc/config_device.go:130 lxc/config_device.go:147 lxc/config_device.go:354
 msgid "The device already exists"
 msgstr ""
 
-#: lxc/config.go:1007 lxc/config.go:1019 lxc/config.go:1055 lxc/config.go:1073
-#: lxc/config.go:1119 lxc/config.go:1136 lxc/config.go:1179 lxc/config.go:1197
+#: lxc/config_device.go:218 lxc/config_device.go:230 lxc/config_device.go:442
+#: lxc/config_device.go:460 lxc/config_device.go:533 lxc/config_device.go:550
 msgid "The device doesn't exist"
 msgstr ""
 
-#: lxc/init.go:356
+#: lxc/init.go:264
 #, c-format
 msgid "The local image '%s' couldn't be found, trying '%s:%s' instead."
 msgstr ""
 
-#: lxc/init.go:352
+#: lxc/init.go:260
 #, c-format
 msgid "The local image '%s' couldn't be found, trying '%s:' instead."
 msgstr ""
 
-#: lxc/action.go:35
-msgid "The opposite of \"lxc pause\" is \"lxc start\"."
-msgstr ""
-
-#: lxc/config.go:1245
+#: lxc/config_device.go:359
 msgid "The profile device doesn't exist"
 msgstr ""
 
-#: lxc/network.go:317 lxc/network.go:370 lxc/storage.go:449 lxc/storage.go:579
+#: lxc/network.go:425 lxc/network.go:510 lxc/storage_volume.go:619
+#: lxc/storage_volume.go:700
 msgid "The specified device doesn't exist"
 msgstr ""
 
-#: lxc/network.go:321 lxc/network.go:374
+#: lxc/network.go:429 lxc/network.go:514
 msgid "The specified device doesn't match the network"
 msgstr ""
 
-#: lxc/publish.go:74
+#: lxc/publish.go:82
 msgid "There is no \"image name\".  Did you want an alias?"
 msgstr ""
 
-#: lxc/help.go:47
-msgid ""
-"This is the LXD command line client.\n"
-"\n"
-"All of LXD's features can be driven through the various commands below.\n"
-"For help with any of those, simply call them with --help."
-msgstr ""
-
-#: lxc/action.go:46
+#: lxc/action.go:122
 msgid "Time to wait for the container before killing it"
 msgstr ""
 
-#: lxc/image.go:603
+#: lxc/image.go:828
 msgid "Timestamps:"
 msgstr ""
 
-#: lxc/init.go:374
+#: lxc/init.go:282
 msgid "To attach a network to a container, use: lxc network attach"
 msgstr ""
 
-#: lxc/init.go:373
+#: lxc/init.go:281
 msgid "To create a new network, use: lxc network create"
 msgstr ""
 
-#: lxc/console.go:173
+#: lxc/console.go:185
 msgid "To detach from the console, press: <ctrl>+a q"
 msgstr ""
 
-#: lxc/main.go:172
+#: lxc/main.go:260
 msgid "To start your first container, try: lxc launch ubuntu:16.04"
 msgstr ""
 
-#: lxc/copy.go:43 lxc/move.go:43
+#: lxc/storage_volume.go:997
+msgid "Transfer mode, one of pull (default), push or relay"
+msgstr ""
+
+#: lxc/copy.go:42
+msgid "Transfer mode. One of pull (default), push or relay"
+msgstr ""
+
+#: lxc/move.go:45 lxc/storage_volume.go:286
 msgid "Transfer mode. One of pull (default), push or relay."
 msgstr ""
 
-#: lxc/copy.go:212
+#: lxc/copy.go:229
 #, c-format
 msgid "Transferring container: %s"
 msgstr ""
 
-#: lxc/image.go:717
+#: lxc/image.go:687
 #, c-format
 msgid "Transferring image: %s"
 msgstr ""
 
-#: lxc/action.go:108 lxc/launch.go:77
+#: lxc/action.go:181 lxc/launch.go:80
 #, c-format
 msgid "Try `lxc info --show-log %s` for more info"
 msgstr ""
 
-#: lxc/info.go:132
+#: lxc/info.go:136
 msgid "Type: ephemeral"
 msgstr ""
 
-#: lxc/info.go:134
+#: lxc/info.go:138
 msgid "Type: persistent"
 msgstr ""
 
-#: lxc/image.go:238
+#: lxc/image.go:928
 msgid "UPLOAD DATE"
 msgstr ""
 
-#: lxc/cluster.go:184 lxc/remote.go:410
+#: lxc/cluster.go:120 lxc/remote.go:464
 msgid "URL"
 msgstr ""
 
-#: lxc/network.go:580 lxc/profile.go:574 lxc/storage.go:740 lxc/storage.go:938
+#: lxc/network.go:785 lxc/profile.go:614 lxc/storage.go:553
+#: lxc/storage_volume.go:968
 msgid "USED BY"
 msgstr ""
 
-#: lxc/manpage.go:36
-msgid "Unable to find help2man."
+#: lxc/list.go:514
+#, c-format
+msgid "Unknown column shorthand char '%c' in '%s'"
 msgstr ""
 
-#: lxc/file.go:124
+#: lxc/file.go:596
 #, c-format
 msgid "Unknown file type '%s'"
 msgstr ""
 
-#: lxc/image.go:608
-#, c-format
-msgid "Uploaded: %s"
+#: lxc/config_device.go:649 lxc/config_device.go:650
+msgid "Unset container device configuration keys"
 msgstr ""
 
-#: lxc/action.go:38
-#, c-format
-msgid ""
-"Usage: lxc %s [--all] [<remote>:]<container> [[<remote>:]<container>...]\n"
-"\n"
-"%s%s"
+#: lxc/config.go:559 lxc/config.go:560
+msgid "Unset container or server configuration keys"
 msgstr ""
 
-#: lxc/help.go:45
-msgid "Usage: lxc <command> [options]"
+#: lxc/network.go:1050 lxc/network.go:1051
+msgid "Unset network configuration keys"
 msgstr ""
 
-#: lxc/alias.go:22
-msgid ""
-"Usage: lxc alias <subcommand> [options]\n"
-"\n"
-"Manage command aliases.\n"
-"\n"
-"lxc alias add <alias> <target>\n"
-"    Add a new alias <alias> pointing to <target>.\n"
-"\n"
-"lxc alias remove <alias>\n"
-"    Remove the alias <alias>.\n"
-"\n"
-"lxc alias list\n"
-"    List all the aliases.\n"
-"\n"
-"lxc alias rename <old alias> <new alias>\n"
-"    Rename remote <old alias> to <new alias>."
+#: lxc/profile.go:865 lxc/profile.go:866
+msgid "Unset profile configuration keys"
 msgstr ""
 
-#: lxc/cluster.go:23
-msgid ""
-"Usage: lxc cluster <subcommand> [options]\n"
-"\n"
-"Manage cluster nodes.\n"
-"\n"
-"lxc cluster list [<remote>:]\n"
-"    List all nodes in the cluster.\n"
-"\n"
-"lxc cluster show [<remote>:]<node>\n"
-"    Show details of a node.\n"
-"\n"
-"lxc cluster rename [<remote>:]<node> <new-name>\n"
-"    Rename a cluster node.\n"
-"\n"
-"lxc cluster delete [<remote>:]<node> [--force]\n"
-"    Delete a node from the cluster."
+#: lxc/storage.go:728 lxc/storage.go:729
+msgid "Unset storage pool configuration keys"
 msgstr ""
 
-#: lxc/config.go:85
-msgid ""
-"Usage: lxc config <subcommand> [options]\n"
-"\n"
-"Change container or server configuration options.\n"
-"\n"
-"*Container configuration*\n"
-"\n"
-"lxc config get [<remote>:][container] <key>\n"
-"    Get container or server configuration key.\n"
-"\n"
-"lxc config set [<remote>:][container] <key> <value>\n"
-"    Set container or server configuration key.\n"
-"\n"
-"lxc config unset [<remote>:][container] <key>\n"
-"    Unset container or server configuration key.\n"
-"\n"
-"lxc config show [<remote>:][container] [--expanded]\n"
-"    Show container or server configuration.\n"
-"\n"
-"lxc config edit [<remote>:][container]\n"
-"    Edit configuration, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"*Container metadata*\n"
-"\n"
-"lxc config metadata show [<remote>:][container]\n"
-"    Show the container metadata.yaml content.\n"
-"\n"
-"lxc config metadata edit [<remote>:][container]\n"
-"    Edit the container metadata.yaml, either by launching external editor or "
-"reading STDIN.\n"
-"\n"
-"*Container templates*\n"
-"\n"
-"lxc config template list [<remote>:][container]\n"
-"    List the names of template files for a container.\n"
-"\n"
-"lxc config template show [<remote>:][container] [template]\n"
-"    Show the content of a template file for a container.\n"
-"\n"
-"lxc config template create [<remote>:][container] [template]\n"
-"    Add an empty template file for a container.\n"
-"\n"
-"lxc config template edit [<remote>:][container] [template]\n"
-"    Edit the content of a template file for a container, either by launching "
-"external editor or reading STDIN.\n"
-"\n"
-"lxc config template delete [<remote>:][container] [template]\n"
-"    Delete a template file for a container.\n"
-"\n"
-"\n"
-"*Device management*\n"
-"\n"
-"lxc config device add [<remote>:]<container> <device> <type> [key=value...]\n"
-"    Add a device to a container.\n"
-"\n"
-"lxc config device get [<remote>:]<container> <device> <key>\n"
-"    Get a device property.\n"
-"\n"
-"lxc config device set [<remote>:]<container> <device> <key> <value>\n"
-"    Set a device property.\n"
-"\n"
-"lxc config device unset [<remote>:]<container> <device> <key>\n"
-"    Unset a device property.\n"
-"\n"
-"lxc config device override [<remote>:]<container> <device> [key=value...]\n"
-"    Copy a profile inherited device into local container config.\n"
-"\n"
-"lxc config device list [<remote>:]<container>\n"
-"    List devices for container.\n"
-"\n"
-"lxc config device show [<remote>:]<container>\n"
-"    Show full device details for container.\n"
-"\n"
-"lxc config device remove [<remote>:]<container> <name>...\n"
-"    Remove device from container.\n"
-"\n"
-"*Client trust store management*\n"
-"\n"
-"lxc config trust list [<remote>:]\n"
-"    List all trusted certs.\n"
-"\n"
-"lxc config trust add [<remote>:] <certfile.crt>\n"
-"    Add certfile.crt to trusted hosts.\n"
-"\n"
-"lxc config trust remove [<remote>:] [hostname|fingerprint]\n"
-"    Remove the cert from trusted hosts.\n"
-"\n"
-"*Examples*\n"
-"\n"
-"cat config.yaml | lxc config edit <container>\n"
-"    Update the container configuration from config.yaml.\n"
-"\n"
-"lxc config device add [<remote>:]container1 <device-name> disk source=/share/"
-"c1 path=opt\n"
-"    Will mount the host's /share/c1 onto /opt in the container.\n"
-"\n"
-"lxc config set [<remote>:]<container> limits.cpu 2\n"
-"    Will set a CPU limit of \"2\" for the container.\n"
-"\n"
-"lxc config set core.https_address [::]:8443\n"
-"    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
-"\n"
-"lxc config set core.trust_password blah\n"
-"    Will set the server's trust password to blah."
+#: lxc/storage_volume.go:1240 lxc/storage_volume.go:1241
+msgid "Unset storage volume configuration keys"
 msgstr ""
 
-#: lxc/console.go:31
-msgid ""
-"Usage: lxc console [<remote>:]<container> [-l]\n"
-"\n"
-"Interact with the container's console device and log."
+#: lxc/image.go:835
+#, c-format
+msgid "Uploaded: %s"
 msgstr ""
 
-#: lxc/copy.go:30
-msgid ""
-"Usage: lxc copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>] "
-"[--ephemeral|e] [--profile|-p <profile>...] [--config|-c <key=value>...] [--"
-"container-only] [--target <node>]\n"
-"\n"
-"Copy containers within or in between LXD instances."
+#: lxc/delete.go:47
+msgid "User aborted delete operation"
 msgstr ""
 
-#: lxc/delete.go:27
+#: lxc/utils/cancel.go:40
 msgid ""
-"Usage: lxc delete [<remote>:]<container>[/<snapshot>] "
-"[[<remote>:]<container>[/<snapshot>]...]\n"
-"\n"
-"Delete containers and snapshots."
+"User signaled us three times, exiting. The remote operation will keep "
+"running."
 msgstr ""
 
-#: lxc/exec.go:53
-msgid ""
-"Usage: lxc exec [<remote>:]<container> [-t] [-T] [-n] [--mode=auto|"
-"interactive|non-interactive] [--env KEY=VALUE...] [--] <command line>\n"
-"\n"
-"Execute commands in containers.\n"
-"\n"
-"The command is executed directly using exec, so there is no shell and shell "
-"patterns (variables, file redirects, ...)\n"
-"won't be understood. If you need a shell environment you need to execute the "
-"shell executable, passing the shell commands\n"
-"as arguments, for example:\n"
-"\n"
-"    lxc exec <container> -- sh -c \"cd /tmp && pwd\"\n"
-"\n"
-"Mode defaults to non-interactive, interactive mode is selected if both stdin "
-"AND stdout are terminals (stderr is ignored)."
+#: lxc/query.go:35
+msgid "Wait for the operation to complete"
 msgstr ""
 
-#: lxc/file.go:39
+#: lxc/restore.go:36
 msgid ""
-"Usage: lxc file <subcommand> [options]\n"
-"\n"
-"Manage files in containers.\n"
-"\n"
-"lxc file pull [-r|--recursive] [<remote>:]<container>/<path> "
-"[[<remote>:]<container>/<path>...] <target path>\n"
-"    Pull files from containers.\n"
-"\n"
-"lxc file push [-r|--recursive] [-p|--create-dirs] [--uid=UID] [--gid=GID] [--"
-"mode=MODE] <source path> [<source path>...] [<remote>:]<container>/<path>\n"
-"    Push files into containers.\n"
-"\n"
-"lxc file delete [<remote>:]<container>/<path> [[<remote>:]<container>/"
-"<path>...]\n"
-"    Delete files in containers.\n"
-"\n"
-"lxc file edit [<remote>:]<container>/<path>\n"
-"    Edit files in containers using the default text editor.\n"
-"\n"
-"*Examples*\n"
-"lxc file push /etc/hosts foo/etc/hosts\n"
-"   To push /etc/hosts into the container \"foo\".\n"
-"\n"
-"lxc file pull foo/etc/hosts .\n"
-"   To pull /etc/hosts from the container and write it to the current "
-"directory."
+"Whether or not to restore the container's running state from snapshot (if "
+"available)"
 msgstr ""
 
-#: lxc/finger.go:15
-msgid ""
-"Usage: lxc finger [<remote>:]\n"
-"\n"
-"Check if the LXD server is alive."
+#: lxc/snapshot.go:31
+msgid "Whether or not to snapshot the container's running state"
 msgstr ""
 
-#: lxc/help.go:22
-msgid ""
-"Usage: lxc help [--all]\n"
-"\n"
-"Help page for the LXD client."
+#: lxc/network.go:765 lxc/operation.go:140 lxc/remote.go:436 lxc/remote.go:441
+msgid "YES"
 msgstr ""
 
-#: lxc/image.go:73
-msgid ""
-"Usage: lxc image <subcommand> [options]\n"
-"\n"
-"Manipulate container images.\n"
-"\n"
-"In LXD containers are created from images. Those images were themselves\n"
-"either generated from an existing container or downloaded from an image\n"
-"server.\n"
-"\n"
-"When using remote images, LXD will automatically cache images for you\n"
-"and remove them upon expiration.\n"
-"\n"
-"The image unique identifier is the hash (sha-256) of its representation\n"
-"as a compressed tarball (or for split images, the concatenation of the\n"
-"metadata and rootfs tarballs).\n"
-"\n"
-"Images can be referenced by their full hash, shortest unique partial\n"
-"hash or alias name (if one is set).\n"
-"\n"
-"\n"
-"lxc image import <tarball>|<dir> [<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) or an image directory into the LXD "
-"image store.\n"
-"    Directory import is only available on Linux and must be performed as "
-"root.\n"
-"\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"
-"    Delete one or more images from the LXD image store.\n"
-"\n"
-"lxc image refresh [<remote>:]<image> [[<remote>:]<image>...]\n"
-"    Refresh one or more images from its parent remote.\n"
-"\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"
-"    The target may be an existing directory, file name, or \"-\" to specify\n"
-"    stdout.  The target MUST be a directory when exporting a split image.\n"
-"    If the target is a directory, the image's name (each part's name for\n"
-"    split images) as found in the database will be used for the exported\n"
-"    image.  If the target is a file (not a directory and not stdout), then\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"
-"    Print everything LXD knows about a given image.\n"
-"\n"
-"lxc image list [<remote>:] [filter] [--format csv|json|table|yaml] [-c "
-"<columns>]\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"
-"    The -c option takes a (optionally comma-separated) list of arguments "
-"that\n"
-"    control which image attributes to output when displaying in table or "
-"csv\n"
-"    format.\n"
-"\n"
-"    Default column layout is: lfpdasu\n"
-"\n"
-"    Column shorthand chars:\n"
-"\n"
-"        l - Shortest image alias (and optionally number of other aliases)\n"
-"\n"
-"        L - Newline-separated list of all image aliases\n"
-"\n"
-"        f - Fingerprint\n"
-"\n"
-"        p - Whether image is public\n"
-"\n"
-"        d - Description\n"
-"\n"
-"        a - Architecture\n"
-"\n"
-"        s - Size\n"
-"\n"
-"        u - Upload date\n"
-"\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"
-"    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"
-"    Create a new alias for an existing image.\n"
-"\n"
-"lxc image alias rename [<remote>:]<alias> <new-name>\n"
-"    Rename an alias.\n"
-"\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."
+#: lxc/exec.go:122
+msgid "You can't pass -t and -T at the same time"
 msgstr ""
 
-#: lxc/info.go:27
+#: lxc/exec.go:126
+msgid "You can't pass -t or -T at the same time as --mode"
+msgstr ""
+
+#: lxc/copy.go:78
+msgid "You must specify a destination container name when using --target"
+msgstr ""
+
+#: lxc/copy.go:73 lxc/move.go:188
+msgid "You must specify a source container name"
+msgstr ""
+
+#: lxc/copy.go:68 lxc/move.go:91 lxc/move.go:183
+msgid "You must use the same source and destination remote when using --target"
+msgstr ""
+
+#: lxc/alias.go:53
+msgid "add <alias> <target>"
+msgstr ""
+
+#: lxc/config_trust.go:57
+msgid "add [<remote>:] <cert>"
+msgstr ""
+
+#: lxc/profile.go:100
+msgid "add [<remote>:]<container> <profile>"
+msgstr ""
+
+#: lxc/config_device.go:74
+msgid "add [<remote>:]<container|profile> <device> <type> [key=value...]"
+msgstr ""
+
+#: lxc/remote.go:82
+msgid "add [<remote>] <IP|FQDN|URL>"
+msgstr ""
+
+#: lxc/alias.go:21 lxc/image_alias.go:24
+msgid "alias"
+msgstr ""
+
+#: lxc/profile.go:160
+msgid "assign [<remote>:]<container> <profiles>"
+msgstr ""
+
+#: lxc/network.go:102
+msgid "attach [<remote>:]<network> <container> [device name] [interface name]"
+msgstr ""
+
+#: lxc/storage_volume.go:120
+msgid "attach [<remote>:]<pool> <volume> <container> [device name] <path>"
+msgstr ""
+
+#: lxc/storage_volume.go:199
 msgid ""
-"Usage: lxc info [<remote>:][<container>] [--show-log] [--resources]\n"
-"\n"
-"Show container or server information.\n"
-"\n"
-"lxc info [<remote>:]<container> [--show-log]\n"
-"    For container information.\n"
-"\n"
-"lxc info [<remote>:] [--resources]\n"
-"    For LXD server information."
+"attach-profile [<remote:>]<pool> <volume> <profile> [device name] <path>"
 msgstr ""
 
-#: lxc/init.go:79
+#: lxc/network.go:175
 msgid ""
-"Usage: lxc init [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
-"profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
-"<node>]\n"
-"\n"
-"Create containers from images.\n"
-"\n"
-"Not specifying -p will result in the default profile.\n"
-"Specifying \"-p\" with no argument will result in no profile.\n"
-"\n"
-"Examples:\n"
-"    lxc init ubuntu:16.04 u1"
+"attach-profile [<remote>:]<network> <profile> [device name] [interface name]"
+msgstr ""
+
+#: lxc/cluster.go:24
+msgid "cluster"
+msgstr ""
+
+#: lxc/config.go:27
+msgid "config"
+msgstr ""
+
+#: lxc/console.go:30
+msgid "console [<remote>:]<container>"
+msgstr ""
+
+#: lxc/storage_volume.go:280
+msgid "copy <pool>/<volume> <pool>/<volume>"
+msgstr ""
+
+#: lxc/image.go:128
+msgid "copy [<remote>:]<image> <remote>:"
+msgstr ""
+
+#: lxc/profile.go:238
+msgid "copy [<remote>:]<profile> [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/copy.go:32
+msgid "copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>]"
+msgstr ""
+
+#: lxc/image_alias.go:57
+msgid "create [<remote>:]<alias> <fingerprint>"
+msgstr ""
+
+#: lxc/config_template.go:65
+msgid "create [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/network.go:248
+msgid "create [<remote>:]<network> [key=value...]"
+msgstr ""
+
+#: lxc/storage.go:87
+msgid "create [<remote>:]<pool> <driver> [key=value]..."
+msgstr ""
+
+#: lxc/storage_volume.go:424
+msgid "create [<remote>:]<pool> <volume> [key=value]..."
+msgstr ""
+
+#: lxc/profile.go:295
+msgid "create [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/remote.go:453
+msgid "default"
+msgstr ""
+
+#: lxc/image_alias.go:103
+msgid "delete [<remote>:]<alias>"
+msgstr ""
+
+#: lxc/config_template.go:107
+msgid "delete [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/file.go:70
+msgid "delete [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...]"
+msgstr ""
+
+#: lxc/delete.go:27
+msgid ""
+"delete [<remote>:]<container>[/<snapshot>] [[<remote>:]<container>[/"
+"<snapshot>]...]"
+msgstr ""
+
+#: lxc/image.go:258
+msgid "delete [<remote>:]<image> [[<remote>:]<image>...]"
+msgstr ""
+
+#: lxc/network.go:317
+msgid "delete [<remote>:]<network>"
+msgstr ""
+
+#: lxc/operation.go:51
+msgid "delete [<remote>:]<operation>"
+msgstr ""
+
+#: lxc/storage.go:158
+msgid "delete [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:498
+msgid "delete [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:345
+msgid "delete [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/storage.go:431
+msgid "description"
+msgstr ""
+
+#: lxc/network.go:365
+msgid "detach [<remote>:]<network> <container> [device name]"
+msgstr ""
+
+#: lxc/storage_volume.go:559
+msgid "detach [<remote>:]<pool> <volume> <container> [device name]"
+msgstr ""
+
+#: lxc/storage_volume.go:641
+msgid "detach-profile [<remote:>]<pool> <volume> <profile> [device name]"
+msgstr ""
+
+#: lxc/network.go:450
+msgid "detach-profile [<remote>:]<network> <container> [device name]"
+msgstr ""
+
+#: lxc/config_device.go:22
+msgid "device"
+msgstr ""
+
+#: lxc/init.go:223
+msgid "didn't get any affected image, container or snapshot from server"
+msgstr ""
+
+#: lxc/image.go:819
+msgid "disabled"
+msgstr ""
+
+#: lxc/storage.go:430
+msgid "driver"
+msgstr ""
+
+#: lxc/config_template.go:150
+msgid "edit [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/file.go:120
+msgid "edit [<remote>:]<container>/<path>"
+msgstr ""
+
+#: lxc/image.go:310
+msgid "edit [<remote>:]<image>"
+msgstr ""
+
+#: lxc/network.go:535
+msgid "edit [<remote>:]<network>"
+msgstr ""
+
+#: lxc/storage.go:206
+msgid "edit [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:722
+msgid "edit [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:394
+msgid "edit [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/config.go:86 lxc/config_metadata.go:52
+msgid "edit [<remote>:][container]"
+msgstr ""
+
+#: lxc/image.go:821
+msgid "enabled"
+msgstr ""
+
+#: lxc/action.go:234
+#, c-format
+msgid "error: %v"
+msgstr ""
+
+#: lxc/exec.go:37
+msgid "exec [<remote>:]<container> [flags] [--] <command line>"
+msgstr ""
+
+#: lxc/image.go:433
+msgid "export [<remote>:]<image> [target]"
+msgstr ""
+
+#: lxc/file.go:38
+msgid "file"
+msgstr ""
+
+#: lxc/config_device.go:177
+msgid "get [<remote>:]<container|profile> <device> <key>"
+msgstr ""
+
+#: lxc/network.go:658
+msgid "get [<remote>:]<network> <key>"
+msgstr ""
+
+#: lxc/storage.go:326
+msgid "get [<remote>:]<pool> <key>"
+msgstr ""
+
+#: lxc/storage_volume.go:851
+msgid "get [<remote>:]<pool> <volume> <key>"
+msgstr ""
+
+#: lxc/profile.go:518
+msgid "get [<remote>:]<profile> <key>"
+msgstr ""
+
+#: lxc/config.go:287
+msgid "get [<remote>:][container] <key>"
+msgstr ""
+
+#: lxc/remote.go:378
+msgid "get-default"
+msgstr ""
+
+#: lxc/image.go:40
+msgid "image"
+msgstr ""
+
+#: lxc/image.go:569
+msgid ""
+"import <tarball>|<directory>|<URL> [<rootfs tarball>] [<remote>:] "
+"[key=value...]"
+msgstr ""
+
+#: lxc/storage.go:428
+msgid "info"
+msgstr ""
+
+#: lxc/image.go:774
+msgid "info [<remote>:]<image>"
+msgstr ""
+
+#: lxc/storage.go:381
+msgid "info [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/info.go:27
+msgid "info [<remote>:][<container>]"
+msgstr ""
+
+#: lxc/init.go:33
+msgid "init [<remote>:]<image> [<remote>:][<name>]"
 msgstr ""
 
 #: lxc/launch.go:20
+msgid "launch [<remote>:]<image> [<remote>:][<name>]"
+msgstr ""
+
+#: lxc/alias.go:96 lxc/remote.go:411
+msgid "list"
+msgstr ""
+
+#: lxc/cluster.go:56 lxc/config_trust.go:112 lxc/network.go:716
+#: lxc/operation.go:95 lxc/profile.go:565 lxc/storage.go:488
+msgid "list [<remote>:]"
+msgstr ""
+
+#: lxc/image.go:887
+msgid "list [<remote>:] [filter]"
+msgstr ""
+
+#: lxc/image_alias.go:146
+msgid "list [<remote>:] [filters...]"
+msgstr ""
+
+#: lxc/list.go:45
+msgid "list [<remote>:] [filters]"
+msgstr ""
+
+#: lxc/config_template.go:234
+msgid "list [<remote>:]<container>"
+msgstr ""
+
+#: lxc/config_device.go:249
+msgid "list [<remote>:]<container|profile>"
+msgstr ""
+
+#: lxc/storage_volume.go:915
+msgid "list [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/network.go:806
+msgid "list-leases [<remote>:]<network>"
+msgstr ""
+
+#: lxc/alias.go:57
 msgid ""
-"Usage: lxc launch [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
-"profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
-"<node>]\n"
-"\n"
-"Create and start containers from images.\n"
-"\n"
-"Not specifying -p will result in the default profile.\n"
-"Specifying \"-p\" with no argument will result in no profile.\n"
-"\n"
-"Examples:\n"
-"    lxc launch ubuntu:16.04 u1"
+"lxc alias add list list -c ns46S\n"
+"    Overwrite the \"list\" command to pass -c ns46S."
 msgstr ""
 
-#: lxc/list.go:44
+#: lxc/alias.go:200
 msgid ""
-"Usage: lxc list [<remote>:] [filters] [--format csv|json|table|yaml] [-c "
-"<columns>] [--fast]\n"
-"\n"
-"List the existing containers.\n"
-"\n"
-"Default column layout: ns46tS\n"
-"Fast column layout: nsacPt\n"
-"\n"
-"*Filters*\n"
-"A single keyword like \"web\" which will list any container with a name "
-"starting by \"web\".\n"
-"\n"
-"A regular expression on the container name. (e.g. .*web.*01$).\n"
-"\n"
-"A key/value pair referring to a configuration item. For those, the namespace "
-"can be abbreviated to the smallest unambiguous identifier.\n"
-"\t- \"user.blah=abc\" will list all containers with the \"blah\" user "
-"property set to \"abc\".\n"
-"\n"
-"\t- \"u.blah=abc\" will do the same\n"
-"\n"
-"\t- \"security.privileged=true\" will list all privileged containers\n"
-"\n"
-"\t- \"s.privileged=true\" will do the same\n"
-"\n"
-"A regular expression matching a configuration item or its value. (e.g. "
-"volatile.eth0.hwaddr=00:16:3e:.*).\n"
-"\n"
-"*Columns*\n"
-"The -c option takes a comma separated list of arguments that control\n"
-"which container attributes to output when displaying in table or csv\n"
-"format.\n"
-"\n"
-"Column arguments are either pre-defined shorthand chars (see below),\n"
-"or (extended) config keys.\n"
-"\n"
-"Commas between consecutive shorthand chars are optional.\n"
-"\n"
-"Pre-defined column shorthand chars:\n"
-"\n"
-"\t4 - IPv4 address\n"
-"\n"
-"\t6 - IPv6 address\n"
-"\n"
-"\ta - Architecture\n"
-"\n"
-"\tb - Storage pool\n"
-"\n"
-"\tc - Creation date\n"
-"\n"
-"\td - Description\n"
-"\n"
-"\tl - Last used date\n"
-"\n"
-"\tn - Name\n"
-"\n"
-"\tN - Number of Processes\n"
-"\n"
-"\tp - PID of the container's init process\n"
-"\n"
-"\tP - Profiles\n"
-"\n"
-"\ts - State\n"
-"\n"
-"\tS - Number of snapshots\n"
-"\n"
-"\tt - Type (persistent or ephemeral)\n"
-"\n"
-"\tL - Location of the container (e.g. its node)\n"
-"\n"
-"Custom columns are defined with \"key[:name][:maxWidth]\":\n"
-"\n"
-"\tKEY: The (extended) config key to display\n"
-"\n"
-"\tNAME: Name to display in the column header.\n"
-"\tDefaults to the key if not specified or empty.\n"
-"\n"
-"\tMAXWIDTH: Max width of the column (longer results are truncated).\n"
-"\tDefaults to -1 (unlimited). Use 0 to limit to the column header size.\n"
-"\n"
-"*Examples*\n"
-"lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:"
-"MAC\n"
-"\tShows a list of containers using the \"NAME\", \"BASE IMAGE\", \"STATE\", "
-"\"IPV4\",\n"
-"\t\"IPV6\" and \"MAC\" columns.\n"
+"lxc alias remove my-list\n"
+"    Remove the \"my-list\" alias."
+msgstr ""
+
+#: lxc/alias.go:149
+msgid ""
+"lxc alias rename list my-list\n"
+"    Rename existing alias \"list\" to \"my-list\"."
+msgstr ""
+
+#: lxc/config_device.go:78
+msgid ""
+"lxc config device add [<remote>:]container1 <device-name> disk source=/share/"
+"c1 path=opt\n"
+"    Will mount the host's /share/c1 onto /opt in the container."
+msgstr ""
+
+#: lxc/config.go:90
+msgid ""
+"lxc config edit <container> < container.yaml\n"
+"    Update the container configuration from config.yaml."
+msgstr ""
+
+#: lxc/config.go:357
+msgid ""
+"lxc config set [<remote>:]<container> limits.cpu 2\n"
+"    Will set a CPU limit of \"2\" for the container.\n"
 "\n"
-"\t\"BASE IMAGE\" and \"MAC\" are custom columns generated from container "
-"configuration keys.\n"
+"lxc config set core.https_address [::]:8443\n"
+"    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
 "\n"
-"lxc list -c ns,user.comment:comment\n"
-"\tList images with their running state and user comment. "
+"lxc config set core.trust_password blah\n"
+"    Will set the server's trust password to blah."
 msgstr ""
 
-#: lxc/manpage.go:20
+#: lxc/file.go:187
 msgid ""
-"Usage: lxc manpage <directory>\n"
-"\n"
-"Generate all the LXD manpages."
+"lxc file pull foo/etc/hosts .\n"
+"   To pull /etc/hosts from the container and write it to the current "
+"directory."
 msgstr ""
 
-#: lxc/monitor.go:49
+#: lxc/file.go:326
 msgid ""
-"Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
-"\n"
-"Monitor a local or remote LXD server.\n"
+"lxc file push /etc/hosts foo/etc/hosts\n"
+"   To push /etc/hosts into the container \"foo\"."
+msgstr ""
+
+#: lxc/image.go:314
+msgid ""
+"lxc image edit <image>\n"
+"    Launch a text editor to edit the properties\n"
 "\n"
-"By default the monitor will listen to all message types.\n"
+"lxc image edit <image> < image.yaml\n"
+"    Load the image properties from a YAML file"
+msgstr ""
+
+#: lxc/info.go:31
+msgid ""
+"lxc info [<remote>:]<container> [--show-log]\n"
+"    For container information.\n"
 "\n"
-"Message types to listen for can be specified with --type.\n"
+"lxc info [<remote>:] [--resources]\n"
+"    For LXD server information."
+msgstr ""
+
+#: lxc/init.go:37
+msgid "lxc init ubuntu:16.04 u1"
+msgstr ""
+
+#: lxc/launch.go:24
+msgid "lxc launch ubuntu:16.04 u1"
+msgstr ""
+
+#: lxc/list.go:103
+msgid ""
+"lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:"
+"MAC\n"
+"  Show containers using the \"NAME\", \"BASE IMAGE\", \"STATE\", \"IPV4\", "
+"\"IPV6\" and \"MAC\" columns.\n"
+"  \"BASE IMAGE\" and \"MAC\" are custom columns generated from container "
+"configuration keys.\n"
 "\n"
-"*Examples*\n"
+"lxc list -c ns,user.comment:comment\n"
+"  List images with their running state and user comment."
+msgstr ""
+
+#: lxc/monitor.go:35
+msgid ""
 "lxc monitor --type=logging\n"
 "    Only show log messages.\n"
 "\n"
 "lxc monitor --pretty --type=logging --loglevel=info\n"
 "    Show a pretty log of messages with info level or higher.\n"
+"\n"
+"lxc monitor --type=lifecycle\n"
+"    Only show lifecycle events."
 msgstr ""
 
-#: lxc/move.go:26
+#: lxc/move.go:33
 msgid ""
-"Usage: lxc move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
-"<snapshot>]] [--container-only] [--target <node>]\n"
-"\n"
-"Move containers within or in between LXD instances.\n"
-"\n"
 "lxc move [<remote>:]<source container> [<remote>:][<destination container>] "
 "[--container-only]\n"
 "    Move a container between two hosts, renaming it if destination name "
@@ -1946,160 +2837,14 @@ msgid ""
 "    Rename a snapshot."
 msgstr ""
 
-#: lxc/network.go:52
-msgid ""
-"Usage: lxc network <subcommand> [options]\n"
-"\n"
-"Manage and attach containers to networks.\n"
-"\n"
-"lxc network list [<remote>:]\n"
-"    List available networks.\n"
-"\n"
-"lxc network list-leases [<remote>:]<network>\n"
-"    List the DHCP leases for the network\n"
-"\n"
-"lxc network show [<remote>:]<network> [--target <node>]\n"
-"    Show details of a network.\n"
-"\n"
-"lxc network create [<remote>:]<network> [key=value...] [--target <node>]\n"
-"    Create a network.\n"
-"\n"
-"lxc network get [<remote>:]<network> <key> [--target <node>]\n"
-"    Get network configuration.\n"
-"\n"
-"lxc network set [<remote>:]<network> <key> <value>\n"
-"    Set network configuration.\n"
-"\n"
-"lxc network unset [<remote>:]<network> <key>\n"
-"    Unset network configuration.\n"
-"\n"
-"lxc network delete [<remote>:]<network>\n"
-"    Delete a network.\n"
-"\n"
-"lxc network edit [<remote>:]<network>\n"
-"    Edit network, either by launching external editor or reading STDIN.\n"
-"\n"
-"lxc network rename [<remote>:]<network> <new-name>\n"
-"    Rename a network.\n"
-"\n"
-"lxc network attach [<remote>:]<network> <container> [device name] [interface "
-"name]\n"
-"    Attach a network interface connecting the network to a specified "
-"container.\n"
-"\n"
-"lxc network attach-profile [<remote>:]<network> <profile> [device name] "
-"[interface name]\n"
-"    Attach a network interface connecting the network to a specified "
-"profile.\n"
-"\n"
-"lxc network detach [<remote>:]<network> <container> [device name]\n"
-"    Remove a network interface connecting the network to a specified "
-"container.\n"
-"\n"
-"lxc network detach-profile [<remote>:]<network> <container> [device name]\n"
-"    Remove a network interface connecting the network to a specified "
-"profile.\n"
-"\n"
-"*Examples*\n"
-"cat network.yaml | lxc network edit <network>\n"
-"    Update a network using the content of network.yaml"
-msgstr ""
-
-#: lxc/operation.go:25
+#: lxc/operation.go:176
 msgid ""
-"Usage: lxc operation <subcommand> [options]\n"
-"\n"
-"List, show and delete background operations.\n"
-"\n"
-"lxc operation list [<remote>:]\n"
-"    List background operations.\n"
-"\n"
-"lxc operation show [<remote>:]<operation>\n"
-"    Show details on a background operation.\n"
-"\n"
-"lxc operation delete [<remote>:]<operation>\n"
-"    Delete a background operation (will attempt to cancel).\n"
-"\n"
-"*Examples*\n"
 "lxc operation show 344a79e4-d88a-45bf-9c39-c72c26f6ab8a\n"
 "    Show details on that operation UUID"
 msgstr ""
 
-#: lxc/profile.go:51
+#: lxc/profile.go:165
 msgid ""
-"Usage: lxc profile <subcommand> [options]\n"
-"\n"
-"Manage container configuration profiles.\n"
-"\n"
-"*Profile configuration*\n"
-"lxc profile list [<remote>:]\n"
-"    List available profiles.\n"
-"\n"
-"lxc profile show [<remote>:]<profile>\n"
-"    Show details of a profile.\n"
-"\n"
-"lxc profile create [<remote>:]<profile>\n"
-"    Create a profile.\n"
-"\n"
-"lxc profile copy [<remote>:]<profile> [<remote>:]<profile>\n"
-"    Copy the profile.\n"
-"\n"
-"lxc profile get [<remote>:]<profile> <key>\n"
-"    Get profile configuration.\n"
-"\n"
-"lxc profile set [<remote>:]<profile> <key> <value>\n"
-"    Set profile configuration.\n"
-"\n"
-"lxc profile unset [<remote>:]<profile> <key>\n"
-"    Unset profile configuration.\n"
-"\n"
-"lxc profile delete [<remote>:]<profile>\n"
-"    Delete a profile.\n"
-"\n"
-"lxc profile edit [<remote>:]<profile>\n"
-"    Edit profile, either by launching external editor or reading STDIN.\n"
-"\n"
-"lxc profile rename [<remote>:]<profile> <new-name>\n"
-"    Rename a profile.\n"
-"\n"
-"*Profile assignment*\n"
-"lxc profile assign [<remote>:]<container> <profiles>\n"
-"    Replace the current set of profiles for the container by the one "
-"provided.\n"
-"\n"
-"lxc profile add [<remote>:]<container> <profile>\n"
-"    Add a profile to a container\n"
-"\n"
-"lxc profile remove [<remote>:]<container> <profile>\n"
-"    Remove the profile from a container\n"
-"\n"
-"*Device management*\n"
-"lxc profile device list [<remote>:]<profile>\n"
-"    List devices in the given profile.\n"
-"\n"
-"lxc profile device show [<remote>:]<profile>\n"
-"    Show full device details in the given profile.\n"
-"\n"
-"lxc profile device remove [<remote>:]<profile> <name>\n"
-"    Remove a device from a profile.\n"
-"\n"
-"lxc profile device get [<remote>:]<profile> <name> <key>\n"
-"    Get a device property.\n"
-"\n"
-"lxc profile device set [<remote>:]<profile> <name> <key> <value>\n"
-"    Set a device property.\n"
-"\n"
-"lxc profile device unset [<remote>:]<profile> <name> <key>\n"
-"    Unset a device property.\n"
-"\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.\n"
-"\n"
-"*Examples*\n"
-"cat profile.yaml | lxc profile edit <profile>\n"
-"    Update a profile using the content of profile.yaml\n"
-"\n"
 "lxc profile assign foo default,bar\n"
 "    Set the profiles for \"foo\" to \"default\" and \"bar\".\n"
 "\n"
@@ -2110,72 +2855,26 @@ msgid ""
 "    Remove all profile from \"foo\""
 msgstr ""
 
-#: lxc/publish.go:28
+#: lxc/profile.go:398
 msgid ""
-"Usage: lxc publish [<remote>:]<container>[/<snapshot>] [<remote>:] [--"
-"alias=ALIAS...] [prop-key=prop-value...]\n"
-"\n"
-"Publish containers as images."
+"lxc profile edit <profile> < profile.yaml\n"
+"    Update a profile using the content of profile.yaml"
 msgstr ""
 
-#: lxc/query.go:25
+#: lxc/query.go:29
 msgid ""
-"Usage: lxc query [-X <action>] [-d <data>] [--wait] [--raw] [<remote>:]<API "
-"path>\n"
-"\n"
-"Send a raw query to LXD.\n"
-"\n"
-"*Examples*\n"
 "lxc query -X DELETE --wait /1.0/containers/c1\n"
 "    Delete local container \"c1\"."
 msgstr ""
 
-#: lxc/remote.go:40
-msgid ""
-"Usage: lxc remote <subcommand> [options]\n"
-"\n"
-"Manage the list of remote LXD servers.\n"
-"\n"
-"lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--"
-"password=PASSWORD] [--public] [--protocol=PROTOCOL] [--auth-type=AUTH_TYPE]\n"
-"    Add the remote <remote> at <url>.\n"
-"\n"
-"lxc remote remove <remote>\n"
-"    Remove the remote <remote>.\n"
-"\n"
-"lxc remote list\n"
-"    List all remotes.\n"
-"\n"
-"lxc remote rename <old name> <new name>\n"
-"    Rename remote <old name> to <new name>.\n"
-"\n"
-"lxc remote set-url <remote> <url>\n"
-"    Update <remote>'s url to <url>.\n"
-"\n"
-"lxc remote set-default <remote>\n"
-"    Set the default remote.\n"
-"\n"
-"lxc remote get-default\n"
-"    Print the default remote."
-msgstr ""
-
-#: lxc/rename.go:18
+#: lxc/snapshot.go:26
 msgid ""
-"Usage: lxc rename [<remote>:]<container>[/<snapshot>] [<container>[/"
-"<snapshot>]]\n"
-"\n"
-"Rename a container or snapshot."
+"lxc snapshot u1 snap0\n"
+"    Create a snapshot of \"u1\" called \"snap0\"."
 msgstr ""
 
-#: lxc/restore.go:22
+#: lxc/restore.go:28
 msgid ""
-"Usage: lxc restore [<remote>:]<container> <snapshot> [--stateful]\n"
-"\n"
-"Restore containers from snapshots.\n"
-"\n"
-"If --stateful is passed, then the running state will be restored too.\n"
-"\n"
-"*Examples*\n"
 "lxc snapshot u1 snap0\n"
 "    Create the snapshot.\n"
 "\n"
@@ -2183,121 +2882,20 @@ msgid ""
 "    Restore the snapshot."
 msgstr ""
 
-#: lxc/snapshot.go:19
+#: lxc/storage.go:210
 msgid ""
-"Usage: lxc snapshot [<remote>:]<container> <snapshot name> [--stateful]\n"
-"\n"
-"Create container snapshots.\n"
-"\n"
-"When --stateful is used, LXD attempts to checkpoint the container's\n"
-"running state, including process memory state, TCP connections, ...\n"
-"\n"
-"*Examples*\n"
-"lxc snapshot u1 snap0\n"
-"    Create a snapshot of \"u1\" called \"snap0\"."
+"lxc storage edit [<remote>:]<pool> < pool.yaml\n"
+"    Update a storage pool using the content of pool.yaml."
 msgstr ""
 
-#: lxc/storage.go:67
+#: lxc/storage_volume.go:726
+msgid ""
+"lxc storage volume edit [<remote>:]<pool> <volume> < volume.yaml\n"
+"    Update a storage volume using the content of pool.yaml."
+msgstr ""
+
+#: lxc/storage_volume.go:1168
 msgid ""
-"Usage: lxc storage <subcommand> [options]\n"
-"\n"
-"Manage storage pools and volumes.\n"
-"\n"
-"*Storage pools*\n"
-"lxc storage list [<remote>:]\n"
-"    List available storage pools.\n"
-"\n"
-"lxc storage show [<remote>:]<pool> [--resources] [--target <node>]\n"
-"    Show details of a storage pool.\n"
-"\n"
-"lxc storage info [<remote>:]<pool> [--bytes]\n"
-"    Show information of a storage pool in yaml format.\n"
-"\n"
-"lxc storage create [<remote>:]<pool> <driver> [key=value]... [--target "
-"<node>]\n"
-"    Create a storage pool.\n"
-"\n"
-"lxc storage get [<remote>:]<pool> <key>\n"
-"    Get storage pool configuration.\n"
-"\n"
-"lxc storage set [<remote>:]<pool> <key> <value>\n"
-"    Set storage pool configuration.\n"
-"\n"
-"lxc storage unset [<remote>:]<pool> <key>\n"
-"    Unset storage pool configuration.\n"
-"\n"
-"lxc storage delete [<remote>:]<pool>\n"
-"    Delete a storage pool.\n"
-"\n"
-"lxc storage edit [<remote>:]<pool>\n"
-"    Edit storage pool, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"*Storage volumes*\n"
-"lxc storage volume list [<remote>:]<pool>\n"
-"    List available storage volumes on a storage pool.\n"
-"\n"
-"lxc storage volume show [<remote>:]<pool> <volume> [--target <node>]\n"
-"   Show details of a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume create [<remote>:]<pool> <volume> [key=value]... [--"
-"target <node>]\n"
-"    Create a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume rename [<remote>:]<pool> <old name> <new name> [--target "
-"<node>]\n"
-"    Rename a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume get [<remote>:]<pool> <volume> <key> [--target <node>]\n"
-"    Get storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume set [<remote>:]<pool> <volume> <key> <value> [--target "
-"<node>]\n"
-"    Set storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume unset [<remote>:]<pool> <volume> <key> [--target <node>]\n"
-"    Unset storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume delete [<remote>:]<pool> <volume> [--target <node>]\n"
-"    Delete a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume edit [<remote>:]<pool> <volume> [--target <node>]\n"
-"    Edit storage volume, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"lxc storage volume attach [<remote>:]<pool> <volume> <container> [device "
-"name] <path>\n"
-"    Attach a storage volume to the specified container.\n"
-"\n"
-"lxc storage volume attach-profile [<remote:>]<pool> <volume> <profile> "
-"[device name] <path>\n"
-"    Attach a storage volume to the specified profile.\n"
-"\n"
-"lxc storage volume detach [<remote>:]<pool> <volume> <container> [device "
-"name]\n"
-"    Detach a storage volume from the specified container.\n"
-"\n"
-"lxc storage volume detach-profile [<remote:>]<pool> <volume> <profile> "
-"[device name]\n"
-"\tDetach a storage volume from the specified profile.\n"
-"\n"
-"lxc storage volume copy <pool>/<volume> <pool>/<volume> [--config|-c "
-"<key=value>...]\n"
-"    Copy an existing volume to a new volume at the specified pool.\n"
-"\n"
-"lxc storage volume move [<pool>/]<volume> [<pool>/]<volume>\n"
-"    Move an existing volume to the specified pool.\n"
-"\n"
-"Unless specified through a prefix, all volume operations affect \"custom"
-"\" (user created) volumes.\n"
-"\n"
-"*Examples*\n"
-"cat pool.yaml | lxc storage edit [<remote>:]<pool>\n"
-"    Update a storage pool using the content of pool.yaml.\n"
-"\n"
-"cat pool.yaml | lxc storage volume edit [<remote>:]<pool> <volume>\n"
-"    Update a storage volume using the content of pool.yaml.\n"
-"\n"
 "lxc storage volume show default data\n"
 "    Will show the properties of a custom volume called \"data\" in the "
 "\"default\" pool.\n"
@@ -2307,191 +2905,303 @@ msgid ""
 "\" in the \"default\" pool."
 msgstr ""
 
-#: lxc/version.go:18
+#: lxc/config_metadata.go:27
+msgid "metadata"
+msgstr ""
+
+#: lxc/monitor.go:29
+msgid "monitor [<remote>:]"
+msgstr ""
+
+#: lxc/storage_volume.go:991
+msgid "move [<pool>/]<volume> [<pool>/]<volume>"
+msgstr ""
+
+#: lxc/move.go:28
 msgid ""
-"Usage: lxc version\n"
-"\n"
-"Print the version number of this client tool."
+"move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
+"<snapshot>]]"
 msgstr ""
 
-#: lxc/delete.go:46
-msgid "User aborted delete operation."
+#: lxc/storage.go:429
+msgid "name"
 msgstr ""
 
-#: lxc/utils/cancel.go:40
+#: lxc/network.go:30
+msgid "network"
+msgstr ""
+
+#: lxc/image.go:809 lxc/image.go:814 lxc/image.go:977
+msgid "no"
+msgstr ""
+
+#: lxc/remote.go:253
+msgid "ok (y/n)?"
+msgstr ""
+
+#: lxc/operation.go:23
+msgid "operation"
+msgstr ""
+
+#: lxc/config_device.go:316
+msgid "override [<remote>:]<container> <device> [key=value...]"
+msgstr ""
+
+#: lxc/action.go:47
+msgid "pause [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/config.go:52
+msgid "please use `lxc profile`"
+msgstr ""
+
+#: lxc/profile.go:28
+msgid "profile"
+msgstr ""
+
+#: lxc/publish.go:32
 msgid ""
-"User signaled us three times, exiting. The remote operation will keep "
-"running."
+"publish [<remote>:]<container>[/<snapshot>] [<remote>:] [flags] [prop-"
+"key=prop-value...]"
 msgstr ""
 
-#: lxc/query.go:36
-msgid "Wait for the operation to complete"
+#: lxc/file.go:183
+msgid ""
+"pull [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...] "
+"<target path>"
 msgstr ""
 
-#: lxc/restore.go:38
+#: lxc/file.go:322
 msgid ""
-"Whether or not to restore the container's running state from snapshot (if "
-"available)"
+"push <source path> [<remote>:]<container>/<path> [[<remote>:]<container>/"
+"<path>...]"
 msgstr ""
 
-#: lxc/snapshot.go:33
-msgid "Whether or not to snapshot the container's running state"
+#: lxc/query.go:25
+msgid "query [<remote>:]<API path>"
 msgstr ""
 
-#: lxc/network.go:560 lxc/operation.go:141 lxc/remote.go:382 lxc/remote.go:387
-msgid "YES"
+#: lxc/image.go:1210
+msgid "refresh [<remote>:]<image> [[<remote>:]<image>...]"
 msgstr ""
 
-#: lxc/exec.go:132
-msgid "You can't pass -t and -T at the same time"
+#: lxc/remote.go:32
+msgid "remote"
 msgstr ""
 
-#: lxc/exec.go:136
-msgid "You can't pass -t or -T at the same time as --mode"
+#: lxc/alias.go:195
+msgid "remove <alias>"
 msgstr ""
 
-#: lxc/copy.go:76
-msgid "You must specify a destination container name when using --target"
+#: lxc/remote.go:546
+msgid "remove <remote>"
 msgstr ""
 
-#: lxc/copy.go:71
-msgid "You must specify a source container name"
+#: lxc/config_trust.go:194
+msgid "remove [<remote>:] <hostname|fingerprint>"
 msgstr ""
 
-#: lxc/copy.go:66 lxc/move.go:71
-msgid "You must use the same source and destination remote when using --target"
+#: lxc/profile.go:630
+msgid "remove [<remote>:]<container> <profile>"
 msgstr ""
 
-#: lxc/main.go:72
-msgid "`lxc config profile` is deprecated, please use `lxc profile`"
+#: lxc/config_device.go:402
+msgid "remove [<remote>:]<container|profile> <name>..."
 msgstr ""
 
-#: lxc/alias.go:56 lxc/alias.go:102
-#, c-format
-msgid "alias %s already exists"
+#: lxc/cluster.go:235
+msgid "remove [<remote>:]<member>"
 msgstr ""
 
-#: lxc/alias.go:68 lxc/alias.go:97
-#, c-format
-msgid "alias %s doesn't exist"
+#: lxc/alias.go:144
+msgid "rename <old alias> <new alias>"
 msgstr ""
 
-#: lxc/remote.go:370
-msgid "can't remove the default remote"
+#: lxc/remote.go:484
+msgid "rename <remote> <new-name>"
 msgstr ""
 
-#: lxc/file.go:296
-msgid "can't supply uid/gid/mode in recursive mode"
+#: lxc/image_alias.go:247
+msgid "rename [<remote>:]<alias> <new-name>"
 msgstr ""
 
-#: lxc/remote.go:399
-msgid "default"
+#: lxc/rename.go:18
+msgid "rename [<remote>:]<container>[/<snapshot>] <container>[/<snapshot>]"
 msgstr ""
 
-#: lxc/storage.go:856
-msgid "description"
+#: lxc/cluster.go:189
+msgid "rename [<remote>:]<member> <new-name>"
 msgstr ""
 
-#: lxc/init.go:315
-msgid "didn't get any affected image, container or snapshot from server"
+#: lxc/network.go:870
+msgid "rename [<remote>:]<network> <new-name>"
 msgstr ""
 
-#: lxc/image.go:594
-msgid "disabled"
+#: lxc/storage_volume.go:1023
+msgid "rename [<remote>:]<pool> <old name> <new name>"
 msgstr ""
 
-#: lxc/storage.go:855
-msgid "driver"
+#: lxc/profile.go:702
+msgid "rename [<remote>:]<profile> <new-name>"
 msgstr ""
 
-#: lxc/image.go:596
-msgid "enabled"
+#: lxc/action.go:67
+msgid "restart [<remote>:]<container> [[<remote>:]<container>...]"
 msgstr ""
 
-#: lxc/action.go:155 lxc/main.go:33 lxc/main.go:191
-#, c-format
-msgid "error: %v"
+#: lxc/restore.go:22
+msgid "restore [<remote>:]<container> <snapshot>"
 msgstr ""
 
-#: lxc/help.go:37 lxc/main.go:133
-#, c-format
-msgid "error: unknown command: %s"
+#: lxc/config_device.go:491
+msgid "set [<remote>:]<container|profile> <device> <key> <value>"
 msgstr ""
 
-#: lxc/storage.go:853
-msgid "info"
+#: lxc/network.go:918
+msgid "set [<remote>:]<network> <key> <value>"
 msgstr ""
 
-#: lxc/storage.go:854
-msgid "name"
+#: lxc/storage.go:571
+msgid "set [<remote>:]<pool> <key> <value>"
 msgstr ""
 
-#: lxc/image.go:210 lxc/image.go:584 lxc/image.go:589
-msgid "no"
+#: lxc/storage_volume.go:1087
+msgid "set [<remote>:]<pool> <volume> <key> <value>"
 msgstr ""
 
-#: lxc/remote.go:204
-msgid "ok (y/n)?"
+#: lxc/profile.go:751
+msgid "set [<remote>:]<profile> <key> <value>"
 msgstr ""
 
-#: lxc/main.go:368 lxc/main.go:372
-#, c-format
-msgid "processing aliases failed %s\n"
+#: lxc/config.go:353
+msgid "set [<remote>:][container] <key> <value>"
 msgstr ""
 
-#: lxc/file.go:588
-msgid "recursive edit doesn't make sense :("
+#: lxc/remote.go:596
+msgid "set-default <remote>"
 msgstr ""
 
-#: lxc/remote.go:436
-#, c-format
-msgid "remote %s already exists"
+#: lxc/remote.go:634
+msgid "set-url <remote> <URL>"
 msgstr ""
 
-#: lxc/remote.go:362 lxc/remote.go:428 lxc/remote.go:463 lxc/remote.go:479
-#, c-format
-msgid "remote %s doesn't exist"
+#: lxc/config_template.go:296
+msgid "show [<remote>:]<container> <template>"
 msgstr ""
 
-#: lxc/remote.go:345
-#, c-format
-msgid "remote %s exists as <%s>"
+#: lxc/config_device.go:580
+msgid "show [<remote>:]<container|profile>"
 msgstr ""
 
-#: lxc/remote.go:366 lxc/remote.go:432 lxc/remote.go:467
-#, c-format
-msgid "remote %s is static and cannot be modified"
+#: lxc/image.go:1283
+msgid "show [<remote>:]<image>"
+msgstr ""
+
+#: lxc/cluster.go:140
+msgid "show [<remote>:]<member>"
+msgstr ""
+
+#: lxc/network.go:987
+msgid "show [<remote>:]<network>"
+msgstr ""
+
+#: lxc/operation.go:172
+msgid "show [<remote>:]<operation>"
+msgstr ""
+
+#: lxc/storage.go:643
+msgid "show [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:1164
+msgid "show [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:810
+msgid "show [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/config.go:450 lxc/config_metadata.go:174
+msgid "show [<remote>:][container]"
+msgstr ""
+
+#: lxc/snapshot.go:19
+msgid "snapshot [<remote>:]<container> <snapshot name>"
 msgstr ""
 
-#: lxc/storage.go:858
+#: lxc/storage.go:433
 msgid "space used"
 msgstr ""
 
-#: lxc/info.go:251
+#: lxc/action.go:28
+msgid "start [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/info.go:255
 msgid "stateful"
 msgstr ""
 
-#: lxc/info.go:253
+#: lxc/info.go:257
 msgid "stateless"
 msgstr ""
 
-#: lxc/info.go:247
+#: lxc/action.go:89
+msgid "stop [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/storage.go:31
+msgid "storage"
+msgstr ""
+
+#: lxc/info.go:251
 #, c-format
 msgid "taken at %s"
 msgstr ""
 
-#: lxc/storage.go:857
+#: lxc/config_template.go:28
+msgid "template"
+msgstr ""
+
+#: lxc/storage.go:432
 msgid "total space"
 msgstr ""
 
-#: lxc/storage.go:852
+#: lxc/config_trust.go:28
+msgid "trust"
+msgstr ""
+
+#: lxc/config_device.go:648
+msgid "unset [<remote>:]<container|profile> <device> <key>"
+msgstr ""
+
+#: lxc/network.go:1049
+msgid "unset [<remote>:]<network> <key>"
+msgstr ""
+
+#: lxc/storage.go:727
+msgid "unset [<remote>:]<pool> <key>"
+msgstr ""
+
+#: lxc/storage_volume.go:1239
+msgid "unset [<remote>:]<pool> <volume> <key>"
+msgstr ""
+
+#: lxc/profile.go:864
+msgid "unset [<remote>:]<profile> <key>"
+msgstr ""
+
+#: lxc/config.go:558
+msgid "unset [<remote>:][container] <key>"
+msgstr ""
+
+#: lxc/storage.go:427
 msgid "used by"
 msgstr ""
 
-#: lxc/main.go:299
-msgid "wrong number of subcommand arguments"
+#: lxc/storage_volume.go:32
+msgid "volume"
 msgstr ""
 
-#: lxc/delete.go:45 lxc/image.go:208 lxc/image.go:586 lxc/image.go:591
+#: lxc/delete.go:46 lxc/image.go:811 lxc/image.go:816 lxc/image.go:975
 msgid "yes"
 msgstr ""
diff --git a/po/tr.po b/po/tr.po
index ba9cc1abb..e6e6faa14 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -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: 2018-02-27 22:14-0500\n"
+"POT-Creation-Date: 2018-03-29 01:45-0400\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
@@ -16,7 +16,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: lxc/storage.go:36
+#: lxc/storage.go:220
 msgid ""
 "### This is a yaml representation of a storage pool.\n"
 "### Any line starting with a '#' will be ignored.\n"
@@ -33,7 +33,7 @@ msgid ""
 "###   zfs.pool_name: default"
 msgstr ""
 
-#: lxc/storage.go:53
+#: lxc/storage_volume.go:737
 msgid ""
 "### This is a yaml representation of a storage volume.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -47,7 +47,7 @@ msgid ""
 "###   size: \"61203283968\""
 msgstr ""
 
-#: lxc/config.go:40
+#: lxc/config.go:100
 msgid ""
 "### This is a yaml representation of the configuration.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -68,7 +68,7 @@ msgid ""
 "### Note that the name is shown but cannot be changed"
 msgstr ""
 
-#: lxc/config.go:61
+#: lxc/config_metadata.go:63
 msgid ""
 "### This is a yaml representation of the container metadata.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -92,7 +92,7 @@ msgid ""
 "###     properties: {}"
 msgstr ""
 
-#: lxc/image.go:63
+#: lxc/image.go:327
 msgid ""
 "### This is a yaml representation of the image properties.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -102,7 +102,7 @@ msgid ""
 "###  description: My custom image"
 msgstr ""
 
-#: lxc/network.go:32
+#: lxc/network.go:546
 msgid ""
 "### This is a yaml representation of the network.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -122,7 +122,7 @@ msgid ""
 "### Note that only the configuration can be changed."
 msgstr ""
 
-#: lxc/profile.go:30
+#: lxc/profile.go:408
 msgid ""
 "### This is a yaml representation of the profile.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -143,12 +143,12 @@ msgid ""
 "### Note that the name is shown but cannot be changed"
 msgstr ""
 
-#: lxc/image.go:187
+#: lxc/image.go:954
 #, c-format
 msgid "%s (%d more)"
 msgstr ""
 
-#: lxc/file.go:205
+#: lxc/file.go:677
 #, c-format
 msgid "%s is not a directory"
 msgstr ""
@@ -158,1782 +158,2673 @@ msgstr ""
 msgid "%v (interrupt two more times to force)"
 msgstr ""
 
-#: lxc/file.go:142
+#: lxc/file.go:614
 #, c-format
 msgid "'%s' isn't a supported file type."
 msgstr ""
 
-#: lxc/profile.go:337
+#: lxc/profile.go:222
 msgid "(none)"
 msgstr ""
 
-#: lxc/alias.go:84 lxc/image.go:231 lxc/image.go:1136
+#: lxc/alias.go:127 lxc/image.go:921 lxc/image_alias.go:228
 msgid "ALIAS"
 msgstr ""
 
-#: lxc/image.go:232
+#: lxc/image.go:922
 msgid "ALIASES"
 msgstr ""
 
-#: lxc/image.go:236
+#: lxc/image.go:926
 msgid "ARCH"
 msgstr ""
 
-#: lxc/list.go:467
+#: lxc/list.go:464
 msgid "ARCHITECTURE"
 msgstr ""
 
-#: lxc/remote.go:412
+#: lxc/remote.go:466
 msgid "AUTH TYPE"
 msgstr ""
 
-#: lxc/remote.go:68
+#: lxc/remote.go:88
 msgid "Accept certificate"
 msgstr ""
 
-#: lxc/query.go:38
+#: lxc/query.go:37
 msgid "Action (defaults to GET)"
 msgstr ""
 
-#: lxc/remote.go:276
+#: lxc/config_device.go:75 lxc/config_device.go:76
+msgid "Add devices to containers or profiles"
+msgstr ""
+
+#: lxc/alias.go:54 lxc/alias.go:55
+msgid "Add new aliases"
+msgstr ""
+
+#: lxc/remote.go:83 lxc/remote.go:84
+msgid "Add new remote servers"
+msgstr ""
+
+#: lxc/config_trust.go:58 lxc/config_trust.go:59
+msgid "Add new trusted clients"
+msgstr ""
+
+#: lxc/profile.go:101 lxc/profile.go:102
+msgid "Add profiles to containers"
+msgstr ""
+
+#: lxc/remote.go:325
 #, c-format
 msgid "Admin password for %s: "
 msgstr ""
 
-#: lxc/image.go:623
+#: lxc/alias.go:78 lxc/alias.go:176
+#, c-format
+msgid "Alias %s already exists"
+msgstr ""
+
+#: lxc/alias.go:170 lxc/alias.go:221
+#, c-format
+msgid "Alias %s doesn't exist"
+msgstr ""
+
+#: lxc/image_alias.go:83 lxc/image_alias.go:130 lxc/image_alias.go:274
+msgid "Alias name missing"
+msgstr ""
+
+#: lxc/image.go:854
 msgid "Aliases:"
 msgstr ""
 
-#: lxc/image.go:601 lxc/info.go:125
+#: lxc/image.go:826 lxc/info.go:129
 #, c-format
 msgid "Architecture: %s"
 msgstr ""
 
-#: lxc/remote.go:259
+#: lxc/profile.go:162 lxc/profile.go:163
+msgid "Assign sets of profiles to containers"
+msgstr ""
+
+#: lxc/network.go:103
+msgid "Attach network interfaces to containers"
+msgstr ""
+
+#: lxc/network.go:176 lxc/network.go:177
+msgid "Attach network interfaces to profiles"
+msgstr ""
+
+#: lxc/network.go:104
+msgid "Attach new network interfaces to containers"
+msgstr ""
+
+#: lxc/storage_volume.go:121 lxc/storage_volume.go:122
+msgid "Attach new storage volumes to containers"
+msgstr ""
+
+#: lxc/storage_volume.go:200 lxc/storage_volume.go:201
+msgid "Attach new storage volumes to profiles"
+msgstr ""
+
+#: lxc/console.go:31
+msgid "Attach to container consoles"
+msgstr ""
+
+#: lxc/console.go:32
+msgid ""
+"Attach to container consoles\n"
+"\n"
+"This command allows you to interact with the boot console of a container\n"
+"as well as retrieve past log entries from it."
+msgstr ""
+
+#: lxc/remote.go:308
 #, c-format
 msgid "Authentication type '%s' not supported by server"
 msgstr ""
 
-#: lxc/image.go:632
+#: lxc/image.go:864
 #, c-format
 msgid "Auto update: %s"
 msgstr ""
 
-#: lxc/image.go:707
+#: lxc/network.go:283
+#, c-format
+msgid "Bad key/value pair: %s"
+msgstr ""
+
+#: lxc/copy.go:110 lxc/init.go:118 lxc/publish.go:175 lxc/storage.go:123
+#: lxc/storage_volume.go:468
+#, c-format
+msgid "Bad key=value pair: %s"
+msgstr ""
+
+#: lxc/image.go:677
 #, c-format
 msgid "Bad property: %s"
 msgstr ""
 
-#: lxc/action.go:133
+#: lxc/action.go:212
 msgid "Both --all and container name given"
 msgstr ""
 
-#: lxc/info.go:218
+#: lxc/info.go:222
 msgid "Bytes received"
 msgstr ""
 
-#: lxc/info.go:219
+#: lxc/info.go:223
 msgid "Bytes sent"
 msgstr ""
 
-#: lxc/operation.go:156
+#: lxc/operation.go:155
 msgid "CANCELABLE"
 msgstr ""
 
-#: lxc/config.go:403
+#: lxc/config_trust.go:175
 msgid "COMMON NAME"
 msgstr ""
 
-#: lxc/info.go:182
+#: lxc/info.go:186
 msgid "CPU usage (in seconds)"
 msgstr ""
 
-#: lxc/info.go:186
+#: lxc/info.go:190
 msgid "CPU usage:"
 msgstr ""
 
-#: lxc/operation.go:157
+#: lxc/operation.go:156
 msgid "CREATED"
 msgstr ""
 
-#: lxc/list.go:468
+#: lxc/list.go:465
 msgid "CREATED AT"
 msgstr ""
 
-#: lxc/image.go:631
+#: lxc/image.go:863
 #, c-format
 msgid "Cached: %s"
 msgstr ""
 
-#: lxc/file.go:501
+#: lxc/image.go:175
+msgid "Can't provide a name for the target image"
+msgstr ""
+
+#: lxc/file.go:261
 msgid "Can't pull a directory without --recursive"
 msgstr ""
 
-#: lxc/config.go:210 lxc/network.go:619
+#: lxc/config.go:400 lxc/network.go:969
 #, c-format
 msgid "Can't read from stdin: %s"
 msgstr ""
 
-#: lxc/rename.go:41
+#: lxc/remote.go:577
+msgid "Can't remove the default remote"
+msgstr ""
+
+#: lxc/list.go:481
+msgid "Can't specify --fast with --columns"
+msgstr ""
+
+#: lxc/rename.go:48
 msgid "Can't specify a different remote for rename."
 msgstr ""
 
-#: lxc/config.go:223
-#, c-format
-msgid "Can't unset key '%s', it's not currently set"
+#: lxc/list.go:493
+msgid "Can't specify column L when not clustered"
 msgstr ""
 
-#: lxc/config.go:265 lxc/config.go:291
-#, c-format
-msgid "Can't unset key '%s', it's not currently set."
+#: lxc/file.go:399
+msgid "Can't supply uid/gid/mode in recursive mode"
 msgstr ""
 
-#: lxc/profile.go:546 lxc/storage.go:696
-msgid "Cannot provide container name to list"
+#: lxc/config.go:413
+#, c-format
+msgid "Can't unset key '%s', it's not currently set"
 msgstr ""
 
-#: lxc/remote.go:203
+#: lxc/remote.go:252
 #, c-format
 msgid "Certificate fingerprint: %s"
 msgstr ""
 
-#: lxc/remote.go:315
+#: lxc/remote.go:364
 msgid "Client certificate stored at server: "
 msgstr ""
 
-#: lxc/image.go:175 lxc/image.go:176 lxc/list.go:134 lxc/list.go:135
+#: lxc/network.go:253 lxc/network.go:663 lxc/network.go:923 lxc/network.go:992
+#: lxc/network.go:1054 lxc/storage.go:92 lxc/storage.go:331 lxc/storage.go:576
+#: lxc/storage.go:649 lxc/storage.go:732 lxc/storage_volume.go:287
+#: lxc/storage_volume.go:429 lxc/storage_volume.go:504
+#: lxc/storage_volume.go:730 lxc/storage_volume.go:856
+#: lxc/storage_volume.go:998 lxc/storage_volume.go:1028
+#: lxc/storage_volume.go:1092 lxc/storage_volume.go:1175
+#: lxc/storage_volume.go:1244
+msgid "Cluster member name"
+msgstr ""
+
+#: lxc/image.go:912 lxc/list.go:112
 msgid "Columns"
 msgstr ""
 
-#: lxc/help.go:53
-msgid "Commands:"
+#: lxc/main.go:44
+msgid "Command line client for LXD"
+msgstr ""
+
+#: lxc/main.go:45
+msgid ""
+"Command line client for LXD\n"
+"\n"
+"All of LXD's features can be driven through the various commands below.\n"
+"For help with any of those, simply call them with --help."
 msgstr ""
 
-#: lxc/copy.go:37 lxc/copy.go:38 lxc/init.go:139 lxc/init.go:140
+#: lxc/copy.go:39 lxc/init.go:42
 msgid "Config key/value to apply to the new container"
 msgstr ""
 
-#: lxc/config.go:821 lxc/config.go:886 lxc/config.go:1396 lxc/image.go:1191
-#: lxc/network.go:445 lxc/profile.go:275 lxc/storage.go:647 lxc/storage.go:1209
+#: lxc/config.go:195 lxc/config.go:259 lxc/config_metadata.go:144
+#: lxc/image.go:405 lxc/network.go:631 lxc/profile.go:490 lxc/storage.go:298
+#: lxc/storage_volume.go:822
 #, c-format
 msgid "Config parsing error: %s"
 msgstr ""
 
-#: lxc/main.go:40
-msgid "Connection refused; is LXD running?"
-msgstr ""
-
-#: lxc/console.go:132
+#: lxc/console.go:141
 msgid "Console log:"
 msgstr ""
 
-#: lxc/publish.go:71
+#: lxc/publish.go:79
 msgid "Container name is mandatory"
 msgstr ""
 
-#: lxc/copy.go:243 lxc/init.go:321
+#: lxc/copy.go:260 lxc/init.go:229
 #, c-format
 msgid "Container name is: %s"
 msgstr ""
 
-#: lxc/publish.go:250
+#: lxc/publish.go:259
 #, c-format
 msgid "Container published with fingerprint: %s"
 msgstr ""
 
-#: lxc/copy.go:45 lxc/move.go:44
+#: lxc/copy.go:44 lxc/move.go:46
 msgid "Copy a stateful container stateless"
 msgstr ""
 
-#: lxc/image.go:178
+#: lxc/image.go:138
 msgid "Copy aliases from source"
 msgstr ""
 
-#: lxc/copy.go:44
+#: lxc/copy.go:34 lxc/copy.go:35
+msgid "Copy containers within or in between LXD instances"
+msgstr ""
+
+#: lxc/image.go:130
+msgid "Copy images between servers"
+msgstr ""
+
+#: lxc/image.go:131
+msgid ""
+"Copy images between servers\n"
+"\n"
+"The auto-update flag instructs the server to keep this image up to date.\n"
+"It requires the source to be an alias and for it to be public."
+msgstr ""
+
+#: lxc/config_device.go:317 lxc/config_device.go:318
+msgid "Copy profile inherited devices and override configuration keys"
+msgstr ""
+
+#: lxc/profile.go:240 lxc/profile.go:241
+msgid "Copy profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:282 lxc/storage_volume.go:283
+msgid "Copy storage volumes"
+msgstr ""
+
+#: lxc/copy.go:43
 msgid "Copy the container without its snapshots"
 msgstr ""
 
-#: lxc/image.go:449
+#: lxc/image.go:217
 #, c-format
 msgid "Copying the image: %s"
 msgstr ""
 
-#: lxc/storage.go:1134
+#: lxc/storage_volume.go:387
 #, c-format
 msgid "Copying the storage volume: %s"
 msgstr ""
 
-#: lxc/remote.go:218
+#: lxc/remote.go:267
 msgid "Could not create server cert dir"
 msgstr ""
 
-#: lxc/file.go:70 lxc/file.go:71
+#: lxc/image_alias.go:58 lxc/image_alias.go:59
+msgid "Create aliases for existing images"
+msgstr ""
+
+#: lxc/launch.go:21 lxc/launch.go:22
+msgid "Create and start containers from images"
+msgstr ""
+
+#: lxc/file.go:191 lxc/file.go:331
 msgid "Create any directories necessary"
 msgstr ""
 
-#: lxc/image.go:606 lxc/info.go:127
+#: lxc/snapshot.go:20
+msgid "Create container snapshots"
+msgstr ""
+
+#: lxc/snapshot.go:21
+msgid ""
+"Create container snapshots\n"
+"\n"
+"When --stateful is used, LXD attempts to checkpoint the container's\n"
+"running state, including process memory state, TCP connections, ..."
+msgstr ""
+
+#: lxc/init.go:34 lxc/init.go:35
+msgid "Create containers from images"
+msgstr ""
+
+#: lxc/config_template.go:66 lxc/config_template.go:67
+msgid "Create new container file templates"
+msgstr ""
+
+#: lxc/storage_volume.go:425 lxc/storage_volume.go:426
+msgid "Create new custom storage volumes"
+msgstr ""
+
+#: lxc/network.go:249 lxc/network.go:250
+msgid "Create new networks"
+msgstr ""
+
+#: lxc/profile.go:296 lxc/profile.go:297
+msgid "Create profiles"
+msgstr ""
+
+#: lxc/storage.go:88 lxc/storage.go:89
+msgid "Create storage pools"
+msgstr ""
+
+#: lxc/image.go:832 lxc/info.go:131
 #, c-format
 msgid "Created: %s"
 msgstr ""
 
-#: lxc/init.go:200
+#: lxc/init.go:98
 #, c-format
 msgid "Creating %s"
 msgstr ""
 
-#: lxc/init.go:198
+#: lxc/init.go:96
 msgid "Creating the container"
 msgstr ""
 
-#: lxc/cluster.go:185
+#: lxc/cluster.go:121
 msgid "DATABASE"
 msgstr ""
 
-#: lxc/image.go:235 lxc/image.go:1138 lxc/list.go:469 lxc/network.go:579
-#: lxc/operation.go:154 lxc/storage.go:732 lxc/storage.go:937
+#: lxc/image.go:925 lxc/image_alias.go:230 lxc/list.go:466 lxc/network.go:784
+#: lxc/operation.go:153 lxc/storage.go:545 lxc/storage_volume.go:967
 msgid "DESCRIPTION"
 msgstr ""
 
-#: lxc/storage.go:733
+#: lxc/storage.go:546
 msgid "DRIVER"
 msgstr ""
 
-#: lxc/publish.go:39
+#: lxc/publish.go:41
 msgid "Define a compression algorithm: for image or none"
 msgstr ""
 
-#: lxc/config.go:977
+#: lxc/operation.go:53 lxc/operation.go:54
+msgid "Delete a background operation (will attempt to cancel)"
+msgstr ""
+
+#: lxc/config_template.go:109 lxc/config_template.go:110
+msgid "Delete container file templates"
+msgstr ""
+
+#: lxc/delete.go:29 lxc/delete.go:30
+msgid "Delete containers and snapshots"
+msgstr ""
+
+#: lxc/file.go:72 lxc/file.go:73
+msgid "Delete files in containers"
+msgstr ""
+
+#: lxc/image_alias.go:105 lxc/image_alias.go:106
+msgid "Delete image aliases"
+msgstr ""
+
+#: lxc/image.go:260 lxc/image.go:261
+msgid "Delete images"
+msgstr ""
+
+#: lxc/network.go:319 lxc/network.go:320
+msgid "Delete networks"
+msgstr ""
+
+#: lxc/profile.go:347 lxc/profile.go:348
+msgid "Delete profiles"
+msgstr ""
+
+#: lxc/storage.go:160 lxc/storage.go:161
+msgid "Delete storage pools"
+msgstr ""
+
+#: lxc/storage_volume.go:500 lxc/storage_volume.go:501
+msgid "Delete storage volumes"
+msgstr ""
+
+#: lxc/action.go:30 lxc/action.go:49 lxc/action.go:69 lxc/action.go:91
+#: lxc/alias.go:23 lxc/alias.go:55 lxc/alias.go:99 lxc/alias.go:147
+#: lxc/alias.go:198 lxc/cluster.go:26 lxc/cluster.go:59 lxc/cluster.go:142
+#: lxc/cluster.go:192 lxc/cluster.go:238 lxc/config.go:29 lxc/config.go:88
+#: lxc/config.go:289 lxc/config.go:355 lxc/config.go:452 lxc/config.go:560
+#: lxc/config_device.go:24 lxc/config_device.go:76 lxc/config_device.go:179
+#: lxc/config_device.go:252 lxc/config_device.go:318 lxc/config_device.go:405
+#: lxc/config_device.go:493 lxc/config_device.go:582 lxc/config_device.go:650
+#: lxc/config_metadata.go:29 lxc/config_metadata.go:54
+#: lxc/config_metadata.go:176 lxc/config_template.go:30
+#: lxc/config_template.go:67 lxc/config_template.go:110
+#: lxc/config_template.go:152 lxc/config_template.go:236
+#: lxc/config_template.go:298 lxc/config_trust.go:30 lxc/config_trust.go:59
+#: lxc/config_trust.go:115 lxc/config_trust.go:197 lxc/console.go:32
+#: lxc/copy.go:35 lxc/delete.go:30 lxc/exec.go:39 lxc/file.go:40 lxc/file.go:73
+#: lxc/file.go:122 lxc/file.go:185 lxc/file.go:324 lxc/image.go:42
+#: lxc/image.go:131 lxc/image.go:261 lxc/image.go:312 lxc/image.go:435
+#: lxc/image.go:571 lxc/image.go:776 lxc/image.go:890 lxc/image.go:1212
+#: lxc/image.go:1285 lxc/image_alias.go:26 lxc/image_alias.go:59
+#: lxc/image_alias.go:106 lxc/image_alias.go:149 lxc/image_alias.go:250
+#: lxc/info.go:29 lxc/init.go:35 lxc/launch.go:22 lxc/list.go:48 lxc/main.go:45
+#: lxc/monitor.go:31 lxc/move.go:31 lxc/network.go:32 lxc/network.go:104
+#: lxc/network.go:177 lxc/network.go:250 lxc/network.go:320 lxc/network.go:367
+#: lxc/network.go:452 lxc/network.go:537 lxc/network.go:660 lxc/network.go:719
+#: lxc/network.go:808 lxc/network.go:873 lxc/network.go:920 lxc/network.go:989
+#: lxc/network.go:1051 lxc/operation.go:25 lxc/operation.go:54
+#: lxc/operation.go:98 lxc/operation.go:174 lxc/profile.go:30
+#: lxc/profile.go:102 lxc/profile.go:163 lxc/profile.go:241 lxc/profile.go:297
+#: lxc/profile.go:348 lxc/profile.go:396 lxc/profile.go:520 lxc/profile.go:568
+#: lxc/profile.go:632 lxc/profile.go:705 lxc/profile.go:753 lxc/profile.go:812
+#: lxc/profile.go:866 lxc/publish.go:34 lxc/query.go:27 lxc/remote.go:34
+#: lxc/remote.go:84 lxc/remote.go:380 lxc/remote.go:414 lxc/remote.go:487
+#: lxc/remote.go:549 lxc/remote.go:598 lxc/remote.go:636 lxc/rename.go:20
+#: lxc/restore.go:24 lxc/snapshot.go:21 lxc/storage.go:33 lxc/storage.go:89
+#: lxc/storage.go:161 lxc/storage.go:208 lxc/storage.go:328 lxc/storage.go:383
+#: lxc/storage.go:491 lxc/storage.go:573 lxc/storage.go:645 lxc/storage.go:729
+#: lxc/storage_volume.go:34 lxc/storage_volume.go:122 lxc/storage_volume.go:201
+#: lxc/storage_volume.go:283 lxc/storage_volume.go:426
+#: lxc/storage_volume.go:501 lxc/storage_volume.go:561
+#: lxc/storage_volume.go:643 lxc/storage_volume.go:724
+#: lxc/storage_volume.go:853 lxc/storage_volume.go:918
+#: lxc/storage_volume.go:994 lxc/storage_volume.go:1025
+#: lxc/storage_volume.go:1089 lxc/storage_volume.go:1166
+#: lxc/storage_volume.go:1241
+msgid "Description"
+msgstr ""
+
+#: lxc/network.go:366 lxc/network.go:367
+msgid "Detach network interfaces from containers"
+msgstr ""
+
+#: lxc/network.go:451 lxc/network.go:452
+msgid "Detach network interfaces from profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:560 lxc/storage_volume.go:561
+msgid "Detach storage volumes from containers"
+msgstr ""
+
+#: lxc/storage_volume.go:642 lxc/storage_volume.go:643
+msgid "Detach storage volumes from profiles"
+msgstr ""
+
+#: lxc/config_device.go:163
 #, c-format
 msgid "Device %s added to %s"
 msgstr ""
 
-#: lxc/config.go:1272
+#: lxc/config_device.go:387
 #, c-format
 msgid "Device %s overridden for %s"
 msgstr ""
 
-#: lxc/config.go:1213
+#: lxc/config_device.go:476
 #, c-format
 msgid "Device %s removed from %s"
 msgstr ""
 
-#: lxc/utils.go:192 lxc/utils.go:216
+#: lxc/utils.go:133 lxc/utils.go:157
 #, c-format
 msgid "Device already exists: %s"
 msgstr ""
 
-#: lxc/image.go:1290
+#: lxc/image.go:586
 msgid "Directory import is not available on this platform"
 msgstr ""
 
-#: lxc/exec.go:71
+#: lxc/exec.go:55
 msgid "Disable pseudo-terminal allocation"
 msgstr ""
 
-#: lxc/exec.go:72
+#: lxc/exec.go:56
 msgid "Disable stdin (reads from /dev/null)"
 msgstr ""
 
-#: lxc/info.go:175
+#: lxc/info.go:179
 msgid "Disk usage:"
 msgstr ""
 
-#: lxc/list.go:638
+#: lxc/list.go:635
 msgid "EPHEMERAL"
 msgstr ""
 
-#: lxc/config.go:405
+#: lxc/config_trust.go:177
 msgid "EXPIRY DATE"
 msgstr ""
 
-#: lxc/main.go:52
-msgid "Enable debug mode"
+#: lxc/config_template.go:151 lxc/config_template.go:152
+msgid "Edit container file templates"
 msgstr ""
 
-#: lxc/main.go:51
-msgid "Enable verbose mode"
+#: lxc/config_metadata.go:53 lxc/config_metadata.go:54
+msgid "Edit container metadata files"
 msgstr ""
 
-#: lxc/exec.go:68
-msgid "Environment variable to set (e.g. HOME=/home/foo)"
+#: lxc/config.go:87 lxc/config.go:88
+msgid "Edit container or server configurations as YAML"
+msgstr ""
+
+#: lxc/file.go:121 lxc/file.go:122
+msgid "Edit files in containers"
+msgstr ""
+
+#: lxc/image.go:311 lxc/image.go:312
+msgid "Edit image properties"
+msgstr ""
+
+#: lxc/network.go:536 lxc/network.go:537
+msgid "Edit network configurations as YAML"
+msgstr ""
+
+#: lxc/profile.go:395 lxc/profile.go:396
+msgid "Edit profile configurations as YAML"
+msgstr ""
+
+#: lxc/storage.go:207 lxc/storage.go:208
+msgid "Edit storage pool configurations as YAML"
+msgstr ""
+
+#: lxc/storage_volume.go:723 lxc/storage_volume.go:724
+msgid "Edit storage volume configurations as YAML"
+msgstr ""
+
+#: lxc/list.go:504
+#, c-format
+msgid "Empty column entry (redundant, leading or trailing command) in '%s'"
 msgstr ""
 
-#: lxc/help.go:77
-msgid "Environment:"
+#: lxc/exec.go:52
+msgid "Environment variable to set (e.g. HOME=/home/foo)"
 msgstr ""
 
-#: lxc/copy.go:41 lxc/copy.go:42 lxc/init.go:143 lxc/init.go:144
+#: lxc/copy.go:41 lxc/init.go:44
 msgid "Ephemeral container"
 msgstr ""
 
-#: lxc/config.go:1446
+#: lxc/config_template.go:204
 #, c-format
 msgid "Error updating template file: %s"
 msgstr ""
 
-#: lxc/monitor.go:69
+#: lxc/monitor.go:48
 msgid "Event type to listen for"
 msgstr ""
 
-#: lxc/image.go:610
+#: lxc/exec.go:38
+msgid "Execute commands in containers"
+msgstr ""
+
+#: lxc/exec.go:39
+msgid ""
+"Execute commands in containers\n"
+"\n"
+"The command is executed directly using exec, so there is no shell and\n"
+"shell patterns (variables, file redirects, ...) won't be understood.\n"
+"If you need a shell environment you need to execute the shell\n"
+"executable, passing the shell commands as arguments, for example:\n"
+"\n"
+"  lxc exec <container> -- sh -c \"cd /tmp && pwd\"\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:838
 #, c-format
 msgid "Expires: %s"
 msgstr ""
 
-#: lxc/image.go:612
+#: lxc/image.go:840
 msgid "Expires: never"
 msgstr ""
 
-#: lxc/image.go:922
+#: lxc/image.go:434
+msgid "Export and download images"
+msgstr ""
+
+#: lxc/image.go:435
+msgid ""
+"Export and download images\n"
+"\n"
+"The output target is optional and defaults to the working directory."
+msgstr ""
+
+#: lxc/image.go:494
 #, c-format
 msgid "Exporting the image: %s"
 msgstr ""
 
-#: lxc/config.go:761
+#: lxc/config_template.go:279
 msgid "FILENAME"
 msgstr ""
 
-#: lxc/config.go:402 lxc/image.go:233 lxc/image.go:1137
+#: lxc/config_trust.go:174 lxc/image.go:923 lxc/image_alias.go:229
 msgid "FINGERPRINT"
 msgstr ""
 
-#: lxc/utils.go:261
+#: lxc/utils.go:202
 #, c-format
 msgid "Failed to create alias %s"
 msgstr ""
 
-#: lxc/manpage.go:62
-#, c-format
-msgid "Failed to generate 'lxc.%s.1': %v"
-msgstr ""
-
-#: lxc/manpage.go:55
-#, c-format
-msgid "Failed to generate 'lxc.1': %v"
-msgstr ""
-
-#: lxc/copy.go:238
+#: lxc/copy.go:255
 msgid "Failed to get the new container name"
 msgstr ""
 
-#: lxc/utils.go:251
+#: lxc/utils.go:192
 #, c-format
 msgid "Failed to remove alias %s"
 msgstr ""
 
-#: lxc/file.go:137
+#: lxc/file.go:609
 #, c-format
 msgid "Failed to walk path for %s: %s"
 msgstr ""
 
-#: lxc/list.go:137
+#: lxc/list.go:114
 msgid "Fast mode (same as --columns=nsacPt)"
 msgstr ""
 
-#: lxc/network.go:536 lxc/operation.go:121
+#: lxc/network.go:749 lxc/operation.go:126
 msgid "Filtering isn't supported yet"
 msgstr ""
 
-#: lxc/image.go:599
+#: lxc/image.go:824
 #, c-format
 msgid "Fingerprint: %s"
 msgstr ""
 
-#: lxc/exec.go:70
+#: lxc/exec.go:54
 msgid "Force pseudo-terminal allocation"
 msgstr ""
 
-#: lxc/cluster.go:42
-msgid "Force removing a node, even if degraded"
+#: lxc/cluster.go:242
+msgid "Force removing a member, even if degraded"
 msgstr ""
 
-#: lxc/action.go:47 lxc/action.go:48
+#: lxc/action.go:121
 msgid "Force the container to shutdown"
 msgstr ""
 
-#: lxc/delete.go:34 lxc/delete.go:35
+#: lxc/delete.go:34
 msgid "Force the removal of running containers"
 msgstr ""
 
-#: lxc/main.go:53
+#: lxc/main.go:56
 msgid "Force using the local unix socket"
 msgstr ""
 
-#: lxc/image.go:181 lxc/list.go:136
+#: lxc/image.go:913 lxc/list.go:113
 msgid "Format (csv|json|table|yaml)"
 msgstr ""
 
-#: lxc/remote.go:166
+#: lxc/remote.go:211
 msgid "Generating a client certificate. This may take a minute..."
 msgstr ""
 
-#: lxc/network.go:513
+#: lxc/config_device.go:178 lxc/config_device.go:179
+msgid "Get values for container device configuration keys"
+msgstr ""
+
+#: lxc/config.go:288 lxc/config.go:289
+msgid "Get values for container or server configuration keys"
+msgstr ""
+
+#: lxc/network.go:659 lxc/network.go:660
+msgid "Get values for network configuration keys"
+msgstr ""
+
+#: lxc/profile.go:519 lxc/profile.go:520
+msgid "Get values for profile configuration keys"
+msgstr ""
+
+#: lxc/storage.go:327 lxc/storage.go:328
+msgid "Get values for storage pool configuration keys"
+msgstr ""
+
+#: lxc/storage_volume.go:852 lxc/storage_volume.go:853
+msgid "Get values for storage volume configuration keys"
+msgstr ""
+
+#: lxc/network.go:851
 msgid "HOSTNAME"
 msgstr ""
 
-#: lxc/operation.go:152
+#: lxc/operation.go:151
 msgid "ID"
 msgstr ""
 
-#: lxc/network.go:515
+#: lxc/network.go:853
 msgid "IP ADDRESS"
 msgstr ""
 
-#: lxc/list.go:465
+#: lxc/list.go:462
 msgid "IPV4"
 msgstr ""
 
-#: lxc/list.go:466
+#: lxc/list.go:463
 msgid "IPV6"
 msgstr ""
 
-#: lxc/config.go:404
+#: lxc/config_trust.go:176
 msgid "ISSUE DATE"
 msgstr ""
 
-#: lxc/main.go:171
+#: lxc/main.go:259
 msgid ""
 "If this is your first time running LXD on this machine, you should also run: "
 "lxd init"
 msgstr ""
 
-#: lxc/main.go:54
-msgid "Ignore aliases when determining what command to run"
-msgstr ""
-
-#: lxc/action.go:51
-msgid "Ignore the container state (only for start)"
+#: lxc/action.go:117
+msgid "Ignore the container state"
 msgstr ""
 
-#: lxc/image.go:557
+#: lxc/image.go:1268
 msgid "Image already up to date."
 msgstr ""
 
-#: lxc/image.go:463
+#: lxc/image.go:231
 msgid "Image copied successfully!"
 msgstr ""
 
-#: lxc/image.go:982
+#: lxc/image.go:554
 msgid "Image exported successfully!"
 msgstr ""
 
-#: lxc/image.go:778
+#: lxc/image.go:284 lxc/image.go:1235
+msgid "Image identifier missing"
+msgstr ""
+
+#: lxc/image.go:352
+#, c-format
+msgid "Image identifier missing: %s"
+msgstr ""
+
+#: lxc/image.go:749
 #, c-format
 msgid "Image imported with fingerprint: %s"
 msgstr ""
 
-#: lxc/image.go:555
+#: lxc/image.go:1266
 msgid "Image refreshed successfully!"
 msgstr ""
 
-#: lxc/query.go:39
+#: lxc/image.go:571
+msgid ""
+"Import image into the image store\n"
+"\n"
+"Directory import is only available on Linux and must be performed as root."
+msgstr ""
+
+#: lxc/image.go:570
+msgid "Import images into the image store"
+msgstr ""
+
+#: lxc/query.go:38
 msgid "Input data"
 msgstr ""
 
-#: lxc/init.go:149
+#: lxc/init.go:47
 msgid "Instance type"
 msgstr ""
 
-#: lxc/remote.go:118
+#: lxc/remote.go:163
 #, c-format
 msgid "Invalid URL scheme \"%s\" in \"%s\""
 msgstr ""
 
-#: lxc/config.go:383
+#: lxc/config_trust.go:155
 msgid "Invalid certificate"
 msgstr ""
 
-#: lxc/init.go:32 lxc/init.go:37
-msgid "Invalid configuration key"
+#: lxc/list.go:525
+#, c-format
+msgid "Invalid config key '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:520
+#, c-format
+msgid "Invalid config key column format (too many fields): '%s'"
+msgstr ""
+
+#: lxc/image.go:1196 lxc/list.go:386
+#, c-format
+msgid "Invalid format %q"
+msgstr ""
+
+#: lxc/list.go:543
+#, c-format
+msgid "Invalid max width (must -1, 0 or a positive integer) '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:540
+#, c-format
+msgid "Invalid max width (must be an integer) '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:531
+#, c-format
+msgid ""
+"Invalid name in '%s', empty string is only allowed when defining maxWidth"
+msgstr ""
+
+#: lxc/main.go:341
+msgid "Invalid number of arguments"
 msgstr ""
 
-#: lxc/file.go:560
+#: lxc/file.go:97
 #, c-format
 msgid "Invalid path %s"
 msgstr ""
 
-#: lxc/remote.go:107
+#: lxc/remote.go:152
 #, c-format
 msgid "Invalid protocol: %s"
 msgstr ""
 
-#: lxc/file.go:473
+#: lxc/file.go:243
 #, c-format
 msgid "Invalid source %s"
 msgstr ""
 
-#: lxc/file.go:250
+#: lxc/file.go:352
 #, c-format
 msgid "Invalid target %s"
 msgstr ""
 
-#: lxc/info.go:156
+#: lxc/info.go:160
 msgid "Ips:"
 msgstr ""
 
-#: lxc/image.go:179
+#: lxc/image.go:139
 msgid "Keep the image up to date after initial copy"
 msgstr ""
 
-#: lxc/list.go:470
+#: lxc/list.go:467
 msgid "LAST USED AT"
 msgstr ""
 
-#: lxc/list.go:492
+#: lxc/list.go:489
 msgid "LOCATION"
 msgstr ""
 
-#: lxc/main.go:38
-msgid "LXD socket not found; is LXD installed and running?"
+#: lxc/cluster.go:94
+msgid "LXD server isn't part of a cluster"
 msgstr ""
 
-#: lxc/image.go:615
+#: lxc/image.go:844
 #, c-format
 msgid "Last used: %s"
 msgstr ""
 
-#: lxc/image.go:617
+#: lxc/image.go:846
 msgid "Last used: never"
 msgstr ""
 
-#: lxc/info.go:119
-#, c-format
-msgid "Location: %s"
-msgstr ""
-
-#: lxc/info.go:271
-msgid "Log:"
-msgstr ""
-
-#: lxc/network.go:514
-msgid "MAC ADDRESS"
-msgstr ""
-
-#: lxc/network.go:578
-msgid "MANAGED"
+#: lxc/network.go:807 lxc/network.go:808
+msgid "List DHCP leases"
 msgstr ""
 
-#: lxc/cluster.go:187
-msgid "MESSAGE"
+#: lxc/alias.go:98 lxc/alias.go:99
+msgid "List aliases"
 msgstr ""
 
-#: lxc/image.go:177
-msgid "Make image public"
+#: lxc/cluster.go:58 lxc/cluster.go:59
+msgid "List all the cluster members"
 msgstr ""
 
-#: lxc/publish.go:35
-msgid "Make the image public"
+#: lxc/network.go:718 lxc/network.go:719
+msgid "List available networks"
 msgstr ""
 
-#: lxc/info.go:193
-msgid "Memory (current)"
+#: lxc/storage.go:490 lxc/storage.go:491
+msgid "List available storage pools"
 msgstr ""
 
-#: lxc/info.go:197
-msgid "Memory (peak)"
+#: lxc/operation.go:97 lxc/operation.go:98
+msgid "List background operations"
 msgstr ""
 
-#: lxc/info.go:209
-msgid "Memory usage:"
+#: lxc/config_device.go:251 lxc/config_device.go:252
+msgid "List container devices"
 msgstr ""
 
-#: lxc/monitor.go:70
-msgid "Minimum level for log messages"
+#: lxc/config_template.go:235 lxc/config_template.go:236
+msgid "List container file templates"
 msgstr ""
 
-#: lxc/utils.go:143
-msgid "Missing summary."
+#: lxc/list.go:47
+msgid "List containers"
 msgstr ""
 
-#: lxc/network.go:303 lxc/network.go:356 lxc/storage.go:435 lxc/storage.go:565
-msgid "More than one device matches, specify the device name."
-msgstr ""
+#: lxc/list.go:48
+msgid ""
+"List containers\n"
+"\n"
+"Default column layout: ns46tS\n"
+"Fast column layout: nsacPt\n"
+"\n"
+"== Filters ==\n"
+"A single keyword like \"web\" which will list any container with a name "
+"starting by \"web\".\n"
+"A regular expression on the container name. (e.g. .*web.*01$).\n"
+"A key/value pair referring to a configuration item. For those, the\n"
+"namespace can be abbreviated to the smallest unambiguous identifier.\n"
+"\n"
+"Examples:\n"
+"  - \"user.blah=abc\" will list all containers with the \"blah\" user "
+"property set to \"abc\".\n"
+"  - \"u.blah=abc\" will do the same\n"
+"  - \"security.privileged=true\" will list all privileged containers\n"
+"  - \"s.privileged=true\" will do the same\n"
+"\n"
+"A regular expression matching a configuration item or its value. (e.g. "
+"volatile.eth0.hwaddr=00:16:3e:.*).\n"
+"\n"
+"== Columns ==\n"
+"The -c option takes a comma separated list of arguments that control\n"
+"which container attributes to output when displaying in table or csv\n"
+"format.\n"
+"\n"
+"Column arguments are either pre-defined shorthand chars (see below),\n"
+"or (extended) config keys.\n"
+"\n"
+"Commas between consecutive shorthand chars are optional.\n"
+"\n"
+"Pre-defined column shorthand chars:\n"
+"  4 - IPv4 address\n"
+"  6 - IPv6 address\n"
+"  a - Architecture\n"
+"  b - Storage pool\n"
+"  c - Creation date\n"
+"  d - Description\n"
+"  l - Last used date\n"
+"  n - Name\n"
+"  N - Number of Processes\n"
+"  p - PID of the container's init process\n"
+"  P - Profiles\n"
+"  s - State\n"
+"  S - Number of snapshots\n"
+"  t - Type (persistent or ephemeral)\n"
+"  L - Location of the container (e.g. its node)\n"
+"\n"
+"Custom columns are defined with \"key[:name][:maxWidth]\":\n"
+"  KEY: The (extended) config key to display\n"
+"  NAME: Name to display in the column header.\n"
+"  Defaults to the key if not specified or empty.\n"
+"\n"
+"  MAXWIDTH: Max width of the column (longer results are truncated).\n"
+"  Defaults to -1 (unlimited). Use 0 to limit to the column header size."
+msgstr ""
+
+#: lxc/image_alias.go:148
+msgid "List image aliases"
+msgstr ""
+
+#: lxc/image_alias.go:149
+msgid ""
+"List image aliases\n"
+"\n"
+"Filters may be part of the image hash or part of the image alias name.\n"
+msgstr ""
+
+#: lxc/image.go:889
+msgid "List images"
+msgstr ""
+
+#: lxc/image.go:890
+msgid ""
+"List images\n"
+"\n"
+"Filters may be of the <key>=<value> form for property based filtering,\n"
+"or part of the image hash or part of the image alias name.\n"
+"\n"
+"The -c option takes a (optionally comma-separated) list of arguments\n"
+"that control which image attributes to output when displaying in table\n"
+"or csv format.\n"
+"\n"
+"Default column layout is: lfpdasu\n"
+"\n"
+"Column shorthand chars:\n"
+"\n"
+"    l - Shortest image alias (and optionally number of other aliases)\n"
+"    L - Newline-separated list of all image aliases\n"
+"    f - Fingerprint\n"
+"    p - Whether image is public\n"
+"    d - Description\n"
+"    a - Architecture\n"
+"    s - Size"
+msgstr ""
+
+#: lxc/profile.go:567 lxc/profile.go:568
+msgid "List profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:917 lxc/storage_volume.go:918
+msgid "List storage volumes"
+msgstr ""
+
+#: lxc/remote.go:413 lxc/remote.go:414
+msgid "List the available remotes"
+msgstr ""
+
+#: lxc/config_trust.go:114 lxc/config_trust.go:115
+msgid "List trusted clients"
+msgstr ""
+
+#: lxc/operation.go:24 lxc/operation.go:25
+msgid "List, show and delete background operations"
+msgstr ""
+
+#: lxc/info.go:123
+#, c-format
+msgid "Location: %s"
+msgstr ""
+
+#: lxc/info.go:275
+msgid "Log:"
+msgstr ""
+
+#: lxc/network.go:852
+msgid "MAC ADDRESS"
+msgstr ""
+
+#: lxc/network.go:783
+msgid "MANAGED"
+msgstr ""
+
+#: lxc/cluster.go:123
+msgid "MESSAGE"
+msgstr ""
+
+#: lxc/image.go:137 lxc/image.go:576
+msgid "Make image public"
+msgstr ""
+
+#: lxc/publish.go:38
+msgid "Make the image public"
+msgstr ""
+
+#: lxc/network.go:32
+msgid "Manage an attach containers to networks"
+msgstr ""
+
+#: lxc/network.go:31
+msgid "Manage and attach containers to networks"
+msgstr ""
+
+#: lxc/cluster.go:25 lxc/cluster.go:26
+msgid "Manage cluster members"
+msgstr ""
+
+#: lxc/alias.go:22 lxc/alias.go:23
+msgid "Manage command aliases"
+msgstr ""
+
+#: lxc/config.go:28 lxc/config.go:29
+msgid "Manage container and server configuration options"
+msgstr ""
+
+#: lxc/config_device.go:23 lxc/config_device.go:24
+msgid "Manage container devices"
+msgstr ""
+
+#: lxc/config_template.go:29 lxc/config_template.go:30
+msgid "Manage container file templates"
+msgstr ""
+
+#: lxc/config_metadata.go:28 lxc/config_metadata.go:29
+msgid "Manage container metadata files"
+msgstr ""
+
+#: lxc/file.go:39 lxc/file.go:40
+msgid "Manage files in containers"
+msgstr ""
+
+#: lxc/image_alias.go:25 lxc/image_alias.go:26
+msgid "Manage image aliases"
+msgstr ""
+
+#: lxc/image.go:41
+msgid "Manage images"
+msgstr ""
+
+#: lxc/image.go:42
+msgid ""
+"Manage images\n"
+"\n"
+"In LXD containers are created from images. Those images were themselves\n"
+"either generated from an existing container or downloaded from an image\n"
+"server.\n"
+"\n"
+"When using remote images, LXD will automatically cache images for you\n"
+"and remove them upon expiration.\n"
+"\n"
+"The image unique identifier is the hash (sha-256) of its representation\n"
+"as a compressed tarball (or for split images, the concatenation of the\n"
+"metadata and rootfs tarballs).\n"
+"\n"
+"Images can be referenced by their full hash, shortest unique partial\n"
+"hash or alias name (if one is set)."
+msgstr ""
+
+#: lxc/profile.go:29 lxc/profile.go:30
+msgid "Manage profiles"
+msgstr ""
+
+#: lxc/storage.go:32 lxc/storage.go:33
+msgid "Manage storage pools and volumes"
+msgstr ""
+
+#: lxc/storage_volume.go:33
+msgid "Manage storage volumes"
+msgstr ""
+
+#: lxc/storage_volume.go:34
+msgid ""
+"Manage storage volumes\n"
+"\n"
+"Unless specified through a prefix, all volume operations affect \"custom"
+"\" (user created) volumes."
+msgstr ""
+
+#: lxc/remote.go:33 lxc/remote.go:34
+msgid "Manage the list of remote servers"
+msgstr ""
+
+#: lxc/config_trust.go:29 lxc/config_trust.go:30
+msgid "Manage trusted clients"
+msgstr ""
+
+#: lxc/info.go:197
+msgid "Memory (current)"
+msgstr ""
+
+#: lxc/info.go:201
+msgid "Memory (peak)"
+msgstr ""
+
+#: lxc/info.go:213
+msgid "Memory usage:"
+msgstr ""
+
+#: lxc/monitor.go:49
+msgid "Minimum level for log messages"
+msgstr ""
+
+#: lxc/config_metadata.go:102 lxc/config_metadata.go:200
+#: lxc/config_template.go:91 lxc/config_template.go:134
+#: lxc/config_template.go:176 lxc/config_template.go:260
+#: lxc/config_template.go:322 lxc/profile.go:197 lxc/profile.go:656
+msgid "Missing container name"
+msgstr ""
+
+#: lxc/profile.go:126
+msgid "Missing container.name name"
+msgstr ""
+
+#: lxc/config_device.go:103 lxc/config_device.go:203 lxc/config_device.go:276
+#: lxc/config_device.go:342 lxc/config_device.go:429 lxc/config_device.go:517
+#: lxc/config_device.go:606
+msgid "Missing name"
+msgstr ""
+
+#: lxc/network.go:128 lxc/network.go:201 lxc/network.go:344 lxc/network.go:391
+#: lxc/network.go:476 lxc/network.go:581 lxc/network.go:686 lxc/network.go:832
+#: lxc/network.go:897 lxc/network.go:946 lxc/network.go:1015
+msgid "Missing network name"
+msgstr ""
+
+#: lxc/storage.go:185 lxc/storage.go:252 lxc/storage.go:353 lxc/storage.go:408
+#: lxc/storage.go:603 lxc/storage.go:677 lxc/storage_volume.go:146
+#: lxc/storage_volume.go:225 lxc/storage_volume.go:451
+#: lxc/storage_volume.go:526 lxc/storage_volume.go:585
+#: lxc/storage_volume.go:667 lxc/storage_volume.go:766
+#: lxc/storage_volume.go:878 lxc/storage_volume.go:942
+#: lxc/storage_volume.go:1050 lxc/storage_volume.go:1114
+#: lxc/storage_volume.go:1197
+msgid "Missing pool name"
+msgstr ""
+
+#: lxc/profile.go:321 lxc/profile.go:372 lxc/profile.go:444 lxc/profile.go:544
+#: lxc/profile.go:729 lxc/profile.go:777 lxc/profile.go:836
+msgid "Missing profile name"
+msgstr ""
+
+#: lxc/profile.go:266
+msgid "Missing source profile name"
+msgstr ""
 
-#: lxc/file.go:460
+#: lxc/storage_volume.go:311
+msgid "Missing source volume name"
+msgstr ""
+
+#: lxc/file.go:446
+msgid "Missing target directory"
+msgstr ""
+
+#: lxc/monitor.go:30
+msgid "Monitor a local or remote LXD server"
+msgstr ""
+
+#: lxc/monitor.go:31
+msgid ""
+"Monitor a local or remote LXD server\n"
+"\n"
+"By default the monitor will listen to all message types."
+msgstr ""
+
+#: lxc/network.go:411 lxc/network.go:496 lxc/storage_volume.go:605
+#: lxc/storage_volume.go:686
+msgid "More than one device matches, specify the device name."
+msgstr ""
+
+#: lxc/file.go:224
 msgid "More than one file to download, but target is not a directory"
 msgstr ""
 
-#: lxc/move.go:42
+#: lxc/move.go:30 lxc/move.go:31
+msgid "Move containers within or in between LXD instances"
+msgstr ""
+
+#: lxc/storage_volume.go:993 lxc/storage_volume.go:994
+msgid "Move storage volumes between pools"
+msgstr ""
+
+#: lxc/move.go:44
 msgid "Move the container without its snapshots"
 msgstr ""
 
-#: lxc/storage.go:1128
+#: lxc/storage_volume.go:375
 #, c-format
 msgid "Moving the storage volume: %s"
 msgstr ""
 
-#: lxc/image.go:1292
+#: lxc/image.go:588
 msgid "Must run as root to import from directory"
 msgstr ""
 
-#: lxc/action.go:74
+#: lxc/action.go:147
 msgid "Must supply container name for: "
 msgstr ""
 
-#: lxc/cluster.go:183 lxc/list.go:471 lxc/network.go:576 lxc/profile.go:573
-#: lxc/remote.go:409 lxc/storage.go:731 lxc/storage.go:936
+#: lxc/cluster.go:119 lxc/list.go:468 lxc/network.go:781 lxc/profile.go:613
+#: lxc/remote.go:463 lxc/storage.go:544 lxc/storage_volume.go:966
 msgid "NAME"
 msgstr ""
 
-#: lxc/network.go:558 lxc/operation.go:139 lxc/remote.go:380 lxc/remote.go:385
+#: lxc/network.go:763 lxc/operation.go:138 lxc/remote.go:434 lxc/remote.go:439
 msgid "NO"
 msgstr ""
 
-#: lxc/storage.go:941
+#: lxc/storage_volume.go:971
 msgid "NODE"
 msgstr ""
 
-#: lxc/info.go:117
+#: lxc/info.go:121
 #, c-format
 msgid "Name: %s"
 msgstr ""
 
-#: lxc/network.go:276
+#: lxc/network.go:303
 #, c-format
 msgid "Network %s created"
 msgstr ""
 
-#: lxc/network.go:393
+#: lxc/network.go:353
 #, c-format
 msgid "Network %s deleted"
 msgstr ""
 
-#: lxc/network.go:274
+#: lxc/network.go:301
 #, c-format
 msgid "Network %s pending on node %s"
 msgstr ""
 
-#: lxc/network.go:470
+#: lxc/network.go:906
 #, c-format
 msgid "Network %s renamed to %s"
 msgstr ""
 
-#: lxc/init.go:145 lxc/init.go:146
+#: lxc/init.go:45
 msgid "Network name"
 msgstr ""
 
-#: lxc/info.go:226
+#: lxc/info.go:230
 msgid "Network usage:"
 msgstr ""
 
-#: lxc/image.go:180 lxc/publish.go:36
+#: lxc/publish.go:39
 msgid "New alias to define at target"
 msgstr ""
 
-#: lxc/config.go:414
-msgid "No certificate provided to add"
+#: lxc/image.go:140 lxc/image.go:577
+msgid "New aliases to add to the image"
 msgstr ""
 
-#: lxc/network.go:312 lxc/network.go:365
+#: lxc/network.go:420 lxc/network.go:505
 msgid "No device found for this network"
 msgstr ""
 
-#: lxc/storage.go:444 lxc/storage.go:574
+#: lxc/storage_volume.go:614 lxc/storage_volume.go:695
 msgid "No device found for this storage volume."
 msgstr ""
 
-#: lxc/config.go:446
-msgid "No fingerprint specified."
-msgstr ""
-
-#: lxc/cluster.go:143
+#: lxc/cluster.go:268
 #, c-format
 msgid "Node %s removed"
 msgstr ""
 
-#: lxc/cluster.go:119
+#: lxc/cluster.go:221
 #, c-format
 msgid "Node %s renamed to %s"
 msgstr ""
 
-#: lxc/copy.go:46 lxc/init.go:150 lxc/move.go:45 lxc/network.go:105
-#: lxc/storage.go:165
+#: lxc/copy.go:45 lxc/init.go:48 lxc/move.go:47
 msgid "Node name"
 msgstr ""
 
-#: lxc/storage.go:388 lxc/storage.go:481
+#: lxc/storage_volume.go:164 lxc/storage_volume.go:243
 msgid "Only \"custom\" volumes can be attached to containers."
 msgstr ""
 
-#: lxc/remote.go:101
+#: lxc/remote.go:146
 msgid "Only https URLs are supported for simplestreams"
 msgstr ""
 
-#: lxc/image.go:688
+#: lxc/image.go:658
 msgid "Only https:// is supported for remote image import."
 msgstr ""
 
-#: lxc/network.go:421 lxc/network.go:605
+#: lxc/network.go:607 lxc/network.go:960
 msgid "Only managed networks can be modified."
 msgstr ""
 
-#: lxc/operation.go:85
+#: lxc/operation.go:83
 #, c-format
 msgid "Operation %s deleted"
 msgstr ""
 
-#: lxc/help.go:71 lxc/main.go:139 lxc/main.go:195
-msgid "Options:"
-msgstr ""
-
-#: lxc/exec.go:69
+#: lxc/exec.go:53
 msgid "Override the terminal mode (auto, interactive or non-interactive)"
 msgstr ""
 
-#: lxc/list.go:641
+#: lxc/list.go:638
 msgid "PERSISTENT"
 msgstr ""
 
-#: lxc/list.go:473
+#: lxc/list.go:470
 msgid "PID"
 msgstr ""
 
-#: lxc/list.go:472
+#: lxc/list.go:469
 msgid "PROCESSES"
 msgstr ""
 
-#: lxc/list.go:474
+#: lxc/list.go:471
 msgid "PROFILES"
 msgstr ""
 
-#: lxc/remote.go:411
+#: lxc/remote.go:465
 msgid "PROTOCOL"
 msgstr ""
 
-#: lxc/image.go:234 lxc/remote.go:413
+#: lxc/image.go:924 lxc/remote.go:467
 msgid "PUBLIC"
 msgstr ""
 
-#: lxc/info.go:220
+#: lxc/info.go:224
 msgid "Packets received"
 msgstr ""
 
-#: lxc/info.go:221
+#: lxc/info.go:225
 msgid "Packets sent"
 msgstr ""
 
-#: lxc/help.go:78
-msgid "Path to an alternate client configuration directory"
-msgstr ""
-
-#: lxc/help.go:79
-msgid "Path to an alternate server directory"
-msgstr ""
-
-#: lxc/main.go:240
-msgid "Pause containers."
-msgstr ""
-
-#: lxc/main.go:42
-msgid "Permission denied, are you in the lxd group?"
+#: lxc/action.go:48 lxc/action.go:49
+msgid "Pause containers"
 msgstr ""
 
-#: lxc/info.go:138
+#: lxc/info.go:142
 #, c-format
 msgid "Pid: %d"
 msgstr ""
 
-#: lxc/network.go:446 lxc/profile.go:276 lxc/storage.go:648 lxc/storage.go:1210
+#: lxc/network.go:632 lxc/profile.go:491 lxc/storage.go:299
+#: lxc/storage_volume.go:823
 msgid "Press enter to open the editor again"
 msgstr ""
 
-#: lxc/config.go:822 lxc/config.go:887 lxc/config.go:1397 lxc/config.go:1447
-#: lxc/image.go:1192
+#: lxc/config.go:196 lxc/config.go:260 lxc/config_metadata.go:145
+#: lxc/config_template.go:205 lxc/image.go:406
 msgid "Press enter to start the editor again"
 msgstr ""
 
-#: lxc/monitor.go:68
+#: lxc/monitor.go:47
 msgid "Pretty rendering"
 msgstr ""
 
-#: lxc/help.go:73
-msgid "Print debug information"
-msgstr ""
-
-#: lxc/help.go:72
-msgid "Print less common commands"
+#: lxc/main.go:55
+msgid "Print help"
 msgstr ""
 
-#: lxc/query.go:37
+#: lxc/query.go:36
 msgid "Print the raw response"
 msgstr ""
 
-#: lxc/help.go:74
-msgid "Print verbose information"
+#: lxc/main.go:54
+msgid "Print version number"
 msgstr ""
 
-#: lxc/info.go:162
+#: lxc/info.go:166
 #, c-format
 msgid "Processes: %d"
 msgstr ""
 
-#: lxc/profile.go:362
+#: lxc/main_aliases.go:123 lxc/main_aliases.go:131
+#, c-format
+msgid "Processing aliases failed: %s\n"
+msgstr ""
+
+#: lxc/profile.go:147
 #, c-format
 msgid "Profile %s added to %s"
 msgstr ""
 
-#: lxc/profile.go:226
+#: lxc/profile.go:333
 #, c-format
 msgid "Profile %s created"
 msgstr ""
 
-#: lxc/profile.go:310
+#: lxc/profile.go:381
 #, c-format
 msgid "Profile %s deleted"
 msgstr ""
 
-#: lxc/profile.go:397
+#: lxc/profile.go:690
 #, c-format
 msgid "Profile %s removed from %s"
 msgstr ""
 
-#: lxc/profile.go:300
+#: lxc/profile.go:738
 #, c-format
 msgid "Profile %s renamed to %s"
 msgstr ""
 
-#: lxc/copy.go:39 lxc/copy.go:40 lxc/init.go:141 lxc/init.go:142
+#: lxc/copy.go:40 lxc/init.go:43
 msgid "Profile to apply to the new container"
 msgstr ""
 
-#: lxc/profile.go:339
+#: lxc/profile.go:225
 #, c-format
 msgid "Profiles %s applied to %s"
 msgstr ""
 
-#: lxc/info.go:136
+#: lxc/info.go:140
 #, c-format
 msgid "Profiles: %s"
 msgstr ""
 
-#: lxc/image.go:619
+#: lxc/image.go:849
 msgid "Properties:"
 msgstr ""
 
-#: lxc/remote.go:72
+#: lxc/remote.go:92
 msgid "Public image server"
 msgstr ""
 
-#: lxc/image.go:602
+#: lxc/image.go:827
 #, c-format
 msgid "Public: %s"
 msgstr ""
 
-#: lxc/file.go:68 lxc/file.go:69
-msgid "Recursively push or pull files"
+#: lxc/publish.go:33 lxc/publish.go:34
+msgid "Publish containers as images"
 msgstr ""
 
-#: lxc/image.go:529
-#, c-format
-msgid "Refreshing the image: %s"
+#: lxc/file.go:184 lxc/file.go:185
+msgid "Pull files from containers"
 msgstr ""
 
-#: lxc/remote.go:69
-msgid "Remote admin password"
+#: lxc/file.go:323 lxc/file.go:324
+msgid "Push files into containers"
 msgstr ""
 
-#: lxc/utils/cancel.go:34
-msgid "Remote operation canceled by user"
+#: lxc/file.go:192 lxc/file.go:330
+msgid "Recursively transfer files"
+msgstr ""
+
+#: lxc/image.go:1211 lxc/image.go:1212
+msgid "Refresh images"
 msgstr ""
 
-#: lxc/info.go:122
+#: lxc/image.go:1239
 #, c-format
-msgid "Remote: %s"
+msgid "Refreshing the image: %s"
 msgstr ""
 
-#: lxc/delete.go:42
+#: lxc/remote.go:515
 #, c-format
-msgid "Remove %s (yes/no): "
+msgid "Remote %s already exists"
 msgstr ""
 
-#: lxc/storage.go:1247
+#: lxc/remote.go:507 lxc/remote.go:569 lxc/remote.go:618 lxc/remote.go:656
 #, c-format
-msgid "Renamed storage volume from \"%s\" to \"%s\""
+msgid "Remote %s doesn't exist"
 msgstr ""
 
-#: lxc/delete.go:36 lxc/delete.go:37
-msgid "Require user confirmation"
+#: lxc/remote.go:116
+#, c-format
+msgid "Remote %s exists as <%s>"
 msgstr ""
 
-#: lxc/info.go:159
-msgid "Resources:"
+#: lxc/remote.go:511 lxc/remote.go:573 lxc/remote.go:660
+#, c-format
+msgid "Remote %s is static and cannot be modified"
 msgstr ""
 
-#: lxc/main.go:248
-msgid "Restart containers."
+#: lxc/remote.go:89
+msgid "Remote admin password"
 msgstr ""
 
-#: lxc/console.go:38
-msgid "Retrieve the container's console log"
+#: lxc/utils/cancel.go:34
+msgid "Remote operation canceled by user"
 msgstr ""
 
-#: lxc/init.go:293
+#: lxc/info.go:126
 #, c-format
-msgid "Retrieving image: %s"
+msgid "Remote: %s"
 msgstr ""
 
-#: lxc/action.go:52
-msgid "Run command against all containers"
+#: lxc/delete.go:42
+#, c-format
+msgid "Remove %s (yes/no): "
 msgstr ""
 
-#: lxc/image.go:237
-msgid "SIZE"
+#: lxc/cluster.go:237 lxc/cluster.go:238
+msgid "Remove a member from the cluster"
 msgstr ""
 
-#: lxc/list.go:475
-msgid "SNAPSHOTS"
+#: lxc/alias.go:197 lxc/alias.go:198
+msgid "Remove aliases"
 msgstr ""
 
-#: lxc/storage.go:738
-msgid "SOURCE"
+#: lxc/config_device.go:404 lxc/config_device.go:405
+msgid "Remove container devices"
 msgstr ""
 
-#: lxc/cluster.go:186 lxc/list.go:476 lxc/network.go:583 lxc/storage.go:736
-msgid "STATE"
+#: lxc/profile.go:631 lxc/profile.go:632
+msgid "Remove profiles from containers"
 msgstr ""
 
-#: lxc/remote.go:414
-msgid "STATIC"
+#: lxc/remote.go:548 lxc/remote.go:549
+msgid "Remove remotes"
 msgstr ""
 
-#: lxc/operation.go:155
-msgid "STATUS"
+#: lxc/config_trust.go:196 lxc/config_trust.go:197
+msgid "Remove trusted clients"
 msgstr ""
 
-#: lxc/list.go:478
-msgid "STORAGE POOL"
+#: lxc/cluster.go:191 lxc/cluster.go:192
+msgid "Rename a cluster member"
 msgstr ""
 
-#: lxc/remote.go:71
-msgid "Server authentication type (tls or macaroons)"
+#: lxc/alias.go:146 lxc/alias.go:147 lxc/image_alias.go:249
+#: lxc/image_alias.go:250
+msgid "Rename aliases"
 msgstr ""
 
-#: lxc/remote.go:211
-msgid "Server certificate NACKed by user"
+#: lxc/rename.go:19 lxc/rename.go:20
+msgid "Rename containers and snapshots"
 msgstr ""
 
-#: lxc/remote.go:311
-msgid "Server doesn't trust us after authentication"
+#: lxc/network.go:872 lxc/network.go:873
+msgid "Rename networks"
 msgstr ""
 
-#: lxc/remote.go:70
-msgid "Server protocol (lxd or simplestreams)"
+#: lxc/profile.go:704 lxc/profile.go:705
+msgid "Rename profiles"
 msgstr ""
 
-#: lxc/file.go:66
-msgid "Set the file's gid on push"
+#: lxc/remote.go:486 lxc/remote.go:487
+msgid "Rename remotes"
 msgstr ""
 
-#: lxc/file.go:67
-msgid "Set the file's perms on push"
+#: lxc/storage_volume.go:1024 lxc/storage_volume.go:1025
+msgid "Rename storage volumes"
 msgstr ""
 
-#: lxc/file.go:65
-msgid "Set the file's uid on push"
+#: lxc/storage_volume.go:1073
+#, c-format
+msgid "Renamed storage volume from \"%s\" to \"%s\""
 msgstr ""
 
-#: lxc/help.go:29
-msgid "Show all commands (not just interesting ones)"
+#: lxc/delete.go:35
+msgid "Require user confirmation"
 msgstr ""
 
-#: lxc/help.go:75
-msgid "Show client version"
+#: lxc/info.go:163
+msgid "Resources:"
 msgstr ""
 
-#: lxc/info.go:40
-msgid "Show the container's last 100 log lines?"
+#: lxc/action.go:68
+msgid "Restart containers"
 msgstr ""
 
-#: lxc/config.go:36
-msgid "Show the expanded configuration"
+#: lxc/action.go:69
+msgid ""
+"Restart containers\n"
+"\n"
+"The opposite of \"lxc pause\" is \"lxc start\"."
 msgstr ""
 
-#: lxc/info.go:41
-msgid "Show the resources available to the server"
+#: lxc/restore.go:23
+msgid "Restore containers from snapshots"
 msgstr ""
 
-#: lxc/storage.go:163
-msgid "Show the resources available to the storage pool"
+#: lxc/restore.go:24
+msgid ""
+"Restore containers from snapshots\n"
+"\n"
+"If --stateful is passed, then the running state will be restored too."
+msgstr ""
+
+#: lxc/console.go:39
+msgid "Retrieve the container's console log"
+msgstr ""
+
+#: lxc/init.go:201
+#, c-format
+msgid "Retrieving image: %s"
+msgstr ""
+
+#: lxc/action.go:112
+msgid "Run command against all containers"
+msgstr ""
+
+#: lxc/image.go:927
+msgid "SIZE"
+msgstr ""
+
+#: lxc/list.go:472
+msgid "SNAPSHOTS"
+msgstr ""
+
+#: lxc/storage.go:551
+msgid "SOURCE"
+msgstr ""
+
+#: lxc/cluster.go:122 lxc/list.go:473 lxc/network.go:788 lxc/storage.go:549
+msgid "STATE"
+msgstr ""
+
+#: lxc/remote.go:468
+msgid "STATIC"
+msgstr ""
+
+#: lxc/operation.go:154
+msgid "STATUS"
+msgstr ""
+
+#: lxc/list.go:475
+msgid "STORAGE POOL"
+msgstr ""
+
+#: lxc/query.go:26 lxc/query.go:27
+msgid "Send a raw query to LXD"
+msgstr ""
+
+#: lxc/remote.go:91
+msgid "Server authentication type (tls or macaroons)"
+msgstr ""
+
+#: lxc/remote.go:260
+msgid "Server certificate NACKed by user"
+msgstr ""
+
+#: lxc/remote.go:360
+msgid "Server doesn't trust us after authentication"
+msgstr ""
+
+#: lxc/remote.go:90
+msgid "Server protocol (lxd or simplestreams)"
+msgstr ""
+
+#: lxc/config_device.go:492 lxc/config_device.go:493
+msgid "Set container device configuration keys"
+msgstr ""
+
+#: lxc/config.go:354 lxc/config.go:355
+msgid "Set container or server configuration keys"
+msgstr ""
+
+#: lxc/network.go:919 lxc/network.go:920
+msgid "Set network configuration keys"
+msgstr ""
+
+#: lxc/profile.go:752 lxc/profile.go:753
+msgid "Set profile configuration keys"
+msgstr ""
+
+#: lxc/storage.go:572 lxc/storage.go:573
+msgid "Set storage pool configuration keys"
+msgstr ""
+
+#: lxc/storage_volume.go:1088 lxc/storage_volume.go:1089
+msgid "Set storage volume configuration keys"
+msgstr ""
+
+#: lxc/remote.go:635 lxc/remote.go:636
+msgid "Set the URL for the remote"
+msgstr ""
+
+#: lxc/remote.go:597 lxc/remote.go:598
+msgid "Set the default remote"
+msgstr ""
+
+#: lxc/file.go:333
+msgid "Set the file's gid on push"
+msgstr ""
+
+#: lxc/file.go:334
+msgid "Set the file's perms on push"
+msgstr ""
+
+#: lxc/file.go:332
+msgid "Set the file's uid on push"
+msgstr ""
+
+#: lxc/main.go:57
+msgid "Show all debug messages"
+msgstr ""
+
+#: lxc/main.go:58
+msgid "Show all information messages"
+msgstr ""
+
+#: lxc/config_metadata.go:175 lxc/config_metadata.go:176
+msgid "Show container metadata files"
+msgstr ""
+
+#: lxc/config.go:451 lxc/config.go:452
+msgid "Show container or server configurations"
+msgstr ""
+
+#: lxc/info.go:28 lxc/info.go:29
+msgid "Show container or server information"
+msgstr ""
+
+#: lxc/config_template.go:297 lxc/config_template.go:298
+msgid "Show content of container file templates"
+msgstr ""
+
+#: lxc/cluster.go:141 lxc/cluster.go:142
+msgid "Show details of a cluster member"
+msgstr ""
+
+#: lxc/operation.go:173 lxc/operation.go:174
+msgid "Show details on a background operation"
+msgstr ""
+
+#: lxc/config_device.go:581 lxc/config_device.go:582
+msgid "Show full device configuration for containers or profiles"
+msgstr ""
+
+#: lxc/image.go:1284 lxc/image.go:1285
+msgid "Show image properties"
+msgstr ""
+
+#: lxc/main.go:61
+msgid "Show less common commands"
 msgstr ""
 
-#: lxc/storage.go:164
+#: lxc/network.go:988 lxc/network.go:989
+msgid "Show network configurations"
+msgstr ""
+
+#: lxc/profile.go:811 lxc/profile.go:812
+msgid "Show profile configurations"
+msgstr ""
+
+#: lxc/storage.go:644 lxc/storage.go:645
+msgid "Show storage pool configurations and resources"
+msgstr ""
+
+#: lxc/storage_volume.go:1165
+msgid "Show storage volum configurations"
+msgstr ""
+
+#: lxc/storage_volume.go:1166
+msgid "Show storage volume configurations"
+msgstr ""
+
+#: lxc/info.go:39
+msgid "Show the container's last 100 log lines?"
+msgstr ""
+
+#: lxc/remote.go:379 lxc/remote.go:380
+msgid "Show the default remote"
+msgstr ""
+
+#: lxc/config.go:455
+msgid "Show the expanded configuration"
+msgstr ""
+
+#: lxc/info.go:40
+msgid "Show the resources available to the server"
+msgstr ""
+
+#: lxc/storage.go:648
+msgid "Show the resources available to the storage pool"
+msgstr ""
+
+#: lxc/storage.go:386
 msgid "Show the used and free space in bytes"
 msgstr ""
 
-#: lxc/image.go:600
+#: lxc/image.go:775 lxc/image.go:776
+msgid "Show useful information about images"
+msgstr ""
+
+#: lxc/storage.go:382 lxc/storage.go:383
+msgid "Show useful information about storage pools"
+msgstr ""
+
+#: lxc/image.go:825
 #, c-format
 msgid "Size: %.2fMB"
 msgstr ""
 
-#: lxc/info.go:240
+#: lxc/info.go:244
 msgid "Snapshots:"
 msgstr ""
 
-#: lxc/action.go:163
+#: lxc/action.go:242
 #, c-format
 msgid "Some containers failed to %s"
 msgstr ""
 
-#: lxc/image.go:634
+#: lxc/image.go:867
 msgid "Source:"
 msgstr ""
 
-#: lxc/main.go:258
-msgid "Start containers."
+#: lxc/action.go:29 lxc/action.go:30
+msgid "Start containers"
 msgstr ""
 
-#: lxc/launch.go:59
+#: lxc/launch.go:62
 #, c-format
 msgid "Starting %s"
 msgstr ""
 
-#: lxc/info.go:130
+#: lxc/info.go:134
 #, c-format
 msgid "Status: %s"
 msgstr ""
 
-#: lxc/main.go:264
-msgid "Stop containers."
+#: lxc/action.go:90 lxc/action.go:91
+msgid "Stop containers"
 msgstr ""
 
-#: lxc/publish.go:37 lxc/publish.go:38
+#: lxc/publish.go:40
 msgid "Stop the container if currently running"
 msgstr ""
 
-#: lxc/publish.go:136
+#: lxc/publish.go:144
 msgid "Stopping container failed!"
 msgstr ""
 
-#: lxc/delete.go:121
+#: lxc/delete.go:120
 #, c-format
 msgid "Stopping the container failed: %s"
 msgstr ""
 
-#: lxc/storage.go:538
+#: lxc/storage.go:144
 #, c-format
 msgid "Storage pool %s created"
 msgstr ""
 
-#: lxc/storage.go:598
+#: lxc/storage.go:194
 #, c-format
 msgid "Storage pool %s deleted"
 msgstr ""
 
-#: lxc/storage.go:536
+#: lxc/storage.go:142
 #, c-format
 msgid "Storage pool %s pending on node %s"
 msgstr ""
 
-#: lxc/init.go:147 lxc/init.go:148
+#: lxc/init.go:46
 msgid "Storage pool name"
 msgstr ""
 
-#: lxc/storage.go:980
+#: lxc/storage_volume.go:484
 #, c-format
 msgid "Storage volume %s created"
 msgstr ""
 
-#: lxc/storage.go:1000
+#: lxc/storage_volume.go:545
 #, c-format
 msgid "Storage volume %s deleted"
 msgstr ""
 
-#: lxc/storage.go:1135
+#: lxc/storage_volume.go:388
 msgid "Storage volume copied successfully!"
 msgstr ""
 
-#: lxc/storage.go:1129
+#: lxc/storage_volume.go:376
 msgid "Storage volume moved successfully!"
 msgstr ""
 
-#: lxc/action.go:50
-msgid "Store the container state (only for stop)"
+#: lxc/action.go:115
+msgid "Store the container state"
 msgstr ""
 
-#: lxc/info.go:201
+#: lxc/info.go:205
 msgid "Swap (current)"
 msgstr ""
 
-#: lxc/info.go:205
+#: lxc/info.go:209
 msgid "Swap (peak)"
 msgstr ""
 
-#: lxc/alias.go:85
+#: lxc/alias.go:128
 msgid "TARGET"
 msgstr ""
 
-#: lxc/list.go:477 lxc/network.go:516 lxc/network.go:577 lxc/operation.go:153
-#: lxc/storage.go:935
+#: lxc/list.go:474 lxc/network.go:782 lxc/network.go:854 lxc/operation.go:152
+#: lxc/storage_volume.go:965
 msgid "TYPE"
 msgstr ""
 
-#: lxc/delete.go:105
+#: lxc/delete.go:104
 msgid "The container is currently running, stop it first or pass --force."
 msgstr ""
 
-#: lxc/publish.go:101
+#: lxc/publish.go:109
 msgid ""
 "The container is currently running. Use --force to have it stopped and "
 "restarted."
 msgstr ""
 
-#: lxc/init.go:372
+#: lxc/init.go:280
 msgid "The container you are starting doesn't have any network attached to it."
 msgstr ""
 
-#: lxc/config.go:944 lxc/config.go:961 lxc/config.go:1240
+#: lxc/config_device.go:130 lxc/config_device.go:147 lxc/config_device.go:354
 msgid "The device already exists"
 msgstr ""
 
-#: lxc/config.go:1007 lxc/config.go:1019 lxc/config.go:1055 lxc/config.go:1073
-#: lxc/config.go:1119 lxc/config.go:1136 lxc/config.go:1179 lxc/config.go:1197
+#: lxc/config_device.go:218 lxc/config_device.go:230 lxc/config_device.go:442
+#: lxc/config_device.go:460 lxc/config_device.go:533 lxc/config_device.go:550
 msgid "The device doesn't exist"
 msgstr ""
 
-#: lxc/init.go:356
+#: lxc/init.go:264
 #, c-format
 msgid "The local image '%s' couldn't be found, trying '%s:%s' instead."
 msgstr ""
 
-#: lxc/init.go:352
+#: lxc/init.go:260
 #, c-format
 msgid "The local image '%s' couldn't be found, trying '%s:' instead."
 msgstr ""
 
-#: lxc/action.go:35
-msgid "The opposite of \"lxc pause\" is \"lxc start\"."
-msgstr ""
-
-#: lxc/config.go:1245
+#: lxc/config_device.go:359
 msgid "The profile device doesn't exist"
 msgstr ""
 
-#: lxc/network.go:317 lxc/network.go:370 lxc/storage.go:449 lxc/storage.go:579
+#: lxc/network.go:425 lxc/network.go:510 lxc/storage_volume.go:619
+#: lxc/storage_volume.go:700
 msgid "The specified device doesn't exist"
 msgstr ""
 
-#: lxc/network.go:321 lxc/network.go:374
+#: lxc/network.go:429 lxc/network.go:514
 msgid "The specified device doesn't match the network"
 msgstr ""
 
-#: lxc/publish.go:74
+#: lxc/publish.go:82
 msgid "There is no \"image name\".  Did you want an alias?"
 msgstr ""
 
-#: lxc/help.go:47
-msgid ""
-"This is the LXD command line client.\n"
-"\n"
-"All of LXD's features can be driven through the various commands below.\n"
-"For help with any of those, simply call them with --help."
-msgstr ""
-
-#: lxc/action.go:46
+#: lxc/action.go:122
 msgid "Time to wait for the container before killing it"
 msgstr ""
 
-#: lxc/image.go:603
+#: lxc/image.go:828
 msgid "Timestamps:"
 msgstr ""
 
-#: lxc/init.go:374
+#: lxc/init.go:282
 msgid "To attach a network to a container, use: lxc network attach"
 msgstr ""
 
-#: lxc/init.go:373
+#: lxc/init.go:281
 msgid "To create a new network, use: lxc network create"
 msgstr ""
 
-#: lxc/console.go:173
+#: lxc/console.go:185
 msgid "To detach from the console, press: <ctrl>+a q"
 msgstr ""
 
-#: lxc/main.go:172
+#: lxc/main.go:260
 msgid "To start your first container, try: lxc launch ubuntu:16.04"
 msgstr ""
 
-#: lxc/copy.go:43 lxc/move.go:43
+#: lxc/storage_volume.go:997
+msgid "Transfer mode, one of pull (default), push or relay"
+msgstr ""
+
+#: lxc/copy.go:42
+msgid "Transfer mode. One of pull (default), push or relay"
+msgstr ""
+
+#: lxc/move.go:45 lxc/storage_volume.go:286
 msgid "Transfer mode. One of pull (default), push or relay."
 msgstr ""
 
-#: lxc/copy.go:212
+#: lxc/copy.go:229
 #, c-format
 msgid "Transferring container: %s"
 msgstr ""
 
-#: lxc/image.go:717
+#: lxc/image.go:687
 #, c-format
 msgid "Transferring image: %s"
 msgstr ""
 
-#: lxc/action.go:108 lxc/launch.go:77
+#: lxc/action.go:181 lxc/launch.go:80
 #, c-format
 msgid "Try `lxc info --show-log %s` for more info"
 msgstr ""
 
-#: lxc/info.go:132
+#: lxc/info.go:136
 msgid "Type: ephemeral"
 msgstr ""
 
-#: lxc/info.go:134
+#: lxc/info.go:138
 msgid "Type: persistent"
 msgstr ""
 
-#: lxc/image.go:238
+#: lxc/image.go:928
 msgid "UPLOAD DATE"
 msgstr ""
 
-#: lxc/cluster.go:184 lxc/remote.go:410
+#: lxc/cluster.go:120 lxc/remote.go:464
 msgid "URL"
 msgstr ""
 
-#: lxc/network.go:580 lxc/profile.go:574 lxc/storage.go:740 lxc/storage.go:938
+#: lxc/network.go:785 lxc/profile.go:614 lxc/storage.go:553
+#: lxc/storage_volume.go:968
 msgid "USED BY"
 msgstr ""
 
-#: lxc/manpage.go:36
-msgid "Unable to find help2man."
+#: lxc/list.go:514
+#, c-format
+msgid "Unknown column shorthand char '%c' in '%s'"
 msgstr ""
 
-#: lxc/file.go:124
+#: lxc/file.go:596
 #, c-format
 msgid "Unknown file type '%s'"
 msgstr ""
 
-#: lxc/image.go:608
-#, c-format
-msgid "Uploaded: %s"
+#: lxc/config_device.go:649 lxc/config_device.go:650
+msgid "Unset container device configuration keys"
 msgstr ""
 
-#: lxc/action.go:38
-#, c-format
-msgid ""
-"Usage: lxc %s [--all] [<remote>:]<container> [[<remote>:]<container>...]\n"
-"\n"
-"%s%s"
+#: lxc/config.go:559 lxc/config.go:560
+msgid "Unset container or server configuration keys"
 msgstr ""
 
-#: lxc/help.go:45
-msgid "Usage: lxc <command> [options]"
+#: lxc/network.go:1050 lxc/network.go:1051
+msgid "Unset network configuration keys"
 msgstr ""
 
-#: lxc/alias.go:22
-msgid ""
-"Usage: lxc alias <subcommand> [options]\n"
-"\n"
-"Manage command aliases.\n"
-"\n"
-"lxc alias add <alias> <target>\n"
-"    Add a new alias <alias> pointing to <target>.\n"
-"\n"
-"lxc alias remove <alias>\n"
-"    Remove the alias <alias>.\n"
-"\n"
-"lxc alias list\n"
-"    List all the aliases.\n"
-"\n"
-"lxc alias rename <old alias> <new alias>\n"
-"    Rename remote <old alias> to <new alias>."
+#: lxc/profile.go:865 lxc/profile.go:866
+msgid "Unset profile configuration keys"
 msgstr ""
 
-#: lxc/cluster.go:23
-msgid ""
-"Usage: lxc cluster <subcommand> [options]\n"
-"\n"
-"Manage cluster nodes.\n"
-"\n"
-"lxc cluster list [<remote>:]\n"
-"    List all nodes in the cluster.\n"
-"\n"
-"lxc cluster show [<remote>:]<node>\n"
-"    Show details of a node.\n"
-"\n"
-"lxc cluster rename [<remote>:]<node> <new-name>\n"
-"    Rename a cluster node.\n"
-"\n"
-"lxc cluster delete [<remote>:]<node> [--force]\n"
-"    Delete a node from the cluster."
+#: lxc/storage.go:728 lxc/storage.go:729
+msgid "Unset storage pool configuration keys"
 msgstr ""
 
-#: lxc/config.go:85
-msgid ""
-"Usage: lxc config <subcommand> [options]\n"
-"\n"
-"Change container or server configuration options.\n"
-"\n"
-"*Container configuration*\n"
-"\n"
-"lxc config get [<remote>:][container] <key>\n"
-"    Get container or server configuration key.\n"
-"\n"
-"lxc config set [<remote>:][container] <key> <value>\n"
-"    Set container or server configuration key.\n"
-"\n"
-"lxc config unset [<remote>:][container] <key>\n"
-"    Unset container or server configuration key.\n"
-"\n"
-"lxc config show [<remote>:][container] [--expanded]\n"
-"    Show container or server configuration.\n"
-"\n"
-"lxc config edit [<remote>:][container]\n"
-"    Edit configuration, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"*Container metadata*\n"
-"\n"
-"lxc config metadata show [<remote>:][container]\n"
-"    Show the container metadata.yaml content.\n"
-"\n"
-"lxc config metadata edit [<remote>:][container]\n"
-"    Edit the container metadata.yaml, either by launching external editor or "
-"reading STDIN.\n"
-"\n"
-"*Container templates*\n"
-"\n"
-"lxc config template list [<remote>:][container]\n"
-"    List the names of template files for a container.\n"
-"\n"
-"lxc config template show [<remote>:][container] [template]\n"
-"    Show the content of a template file for a container.\n"
-"\n"
-"lxc config template create [<remote>:][container] [template]\n"
-"    Add an empty template file for a container.\n"
-"\n"
-"lxc config template edit [<remote>:][container] [template]\n"
-"    Edit the content of a template file for a container, either by launching "
-"external editor or reading STDIN.\n"
-"\n"
-"lxc config template delete [<remote>:][container] [template]\n"
-"    Delete a template file for a container.\n"
-"\n"
-"\n"
-"*Device management*\n"
-"\n"
-"lxc config device add [<remote>:]<container> <device> <type> [key=value...]\n"
-"    Add a device to a container.\n"
-"\n"
-"lxc config device get [<remote>:]<container> <device> <key>\n"
-"    Get a device property.\n"
-"\n"
-"lxc config device set [<remote>:]<container> <device> <key> <value>\n"
-"    Set a device property.\n"
-"\n"
-"lxc config device unset [<remote>:]<container> <device> <key>\n"
-"    Unset a device property.\n"
-"\n"
-"lxc config device override [<remote>:]<container> <device> [key=value...]\n"
-"    Copy a profile inherited device into local container config.\n"
-"\n"
-"lxc config device list [<remote>:]<container>\n"
-"    List devices for container.\n"
-"\n"
-"lxc config device show [<remote>:]<container>\n"
-"    Show full device details for container.\n"
-"\n"
-"lxc config device remove [<remote>:]<container> <name>...\n"
-"    Remove device from container.\n"
-"\n"
-"*Client trust store management*\n"
-"\n"
-"lxc config trust list [<remote>:]\n"
-"    List all trusted certs.\n"
-"\n"
-"lxc config trust add [<remote>:] <certfile.crt>\n"
-"    Add certfile.crt to trusted hosts.\n"
-"\n"
-"lxc config trust remove [<remote>:] [hostname|fingerprint]\n"
-"    Remove the cert from trusted hosts.\n"
-"\n"
-"*Examples*\n"
-"\n"
-"cat config.yaml | lxc config edit <container>\n"
-"    Update the container configuration from config.yaml.\n"
-"\n"
-"lxc config device add [<remote>:]container1 <device-name> disk source=/share/"
-"c1 path=opt\n"
-"    Will mount the host's /share/c1 onto /opt in the container.\n"
-"\n"
-"lxc config set [<remote>:]<container> limits.cpu 2\n"
-"    Will set a CPU limit of \"2\" for the container.\n"
-"\n"
-"lxc config set core.https_address [::]:8443\n"
-"    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
-"\n"
-"lxc config set core.trust_password blah\n"
-"    Will set the server's trust password to blah."
+#: lxc/storage_volume.go:1240 lxc/storage_volume.go:1241
+msgid "Unset storage volume configuration keys"
 msgstr ""
 
-#: lxc/console.go:31
-msgid ""
-"Usage: lxc console [<remote>:]<container> [-l]\n"
-"\n"
-"Interact with the container's console device and log."
+#: lxc/image.go:835
+#, c-format
+msgid "Uploaded: %s"
 msgstr ""
 
-#: lxc/copy.go:30
-msgid ""
-"Usage: lxc copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>] "
-"[--ephemeral|e] [--profile|-p <profile>...] [--config|-c <key=value>...] [--"
-"container-only] [--target <node>]\n"
-"\n"
-"Copy containers within or in between LXD instances."
+#: lxc/delete.go:47
+msgid "User aborted delete operation"
 msgstr ""
 
-#: lxc/delete.go:27
+#: lxc/utils/cancel.go:40
 msgid ""
-"Usage: lxc delete [<remote>:]<container>[/<snapshot>] "
-"[[<remote>:]<container>[/<snapshot>]...]\n"
-"\n"
-"Delete containers and snapshots."
+"User signaled us three times, exiting. The remote operation will keep "
+"running."
 msgstr ""
 
-#: lxc/exec.go:53
-msgid ""
-"Usage: lxc exec [<remote>:]<container> [-t] [-T] [-n] [--mode=auto|"
-"interactive|non-interactive] [--env KEY=VALUE...] [--] <command line>\n"
-"\n"
-"Execute commands in containers.\n"
-"\n"
-"The command is executed directly using exec, so there is no shell and shell "
-"patterns (variables, file redirects, ...)\n"
-"won't be understood. If you need a shell environment you need to execute the "
-"shell executable, passing the shell commands\n"
-"as arguments, for example:\n"
-"\n"
-"    lxc exec <container> -- sh -c \"cd /tmp && pwd\"\n"
-"\n"
-"Mode defaults to non-interactive, interactive mode is selected if both stdin "
-"AND stdout are terminals (stderr is ignored)."
+#: lxc/query.go:35
+msgid "Wait for the operation to complete"
 msgstr ""
 
-#: lxc/file.go:39
+#: lxc/restore.go:36
 msgid ""
-"Usage: lxc file <subcommand> [options]\n"
-"\n"
-"Manage files in containers.\n"
-"\n"
-"lxc file pull [-r|--recursive] [<remote>:]<container>/<path> "
-"[[<remote>:]<container>/<path>...] <target path>\n"
-"    Pull files from containers.\n"
-"\n"
-"lxc file push [-r|--recursive] [-p|--create-dirs] [--uid=UID] [--gid=GID] [--"
-"mode=MODE] <source path> [<source path>...] [<remote>:]<container>/<path>\n"
-"    Push files into containers.\n"
-"\n"
-"lxc file delete [<remote>:]<container>/<path> [[<remote>:]<container>/"
-"<path>...]\n"
-"    Delete files in containers.\n"
-"\n"
-"lxc file edit [<remote>:]<container>/<path>\n"
-"    Edit files in containers using the default text editor.\n"
-"\n"
-"*Examples*\n"
-"lxc file push /etc/hosts foo/etc/hosts\n"
-"   To push /etc/hosts into the container \"foo\".\n"
-"\n"
-"lxc file pull foo/etc/hosts .\n"
-"   To pull /etc/hosts from the container and write it to the current "
-"directory."
+"Whether or not to restore the container's running state from snapshot (if "
+"available)"
 msgstr ""
 
-#: lxc/finger.go:15
-msgid ""
-"Usage: lxc finger [<remote>:]\n"
-"\n"
-"Check if the LXD server is alive."
+#: lxc/snapshot.go:31
+msgid "Whether or not to snapshot the container's running state"
 msgstr ""
 
-#: lxc/help.go:22
-msgid ""
-"Usage: lxc help [--all]\n"
-"\n"
-"Help page for the LXD client."
+#: lxc/network.go:765 lxc/operation.go:140 lxc/remote.go:436 lxc/remote.go:441
+msgid "YES"
 msgstr ""
 
-#: lxc/image.go:73
-msgid ""
-"Usage: lxc image <subcommand> [options]\n"
-"\n"
-"Manipulate container images.\n"
-"\n"
-"In LXD containers are created from images. Those images were themselves\n"
-"either generated from an existing container or downloaded from an image\n"
-"server.\n"
-"\n"
-"When using remote images, LXD will automatically cache images for you\n"
-"and remove them upon expiration.\n"
-"\n"
-"The image unique identifier is the hash (sha-256) of its representation\n"
-"as a compressed tarball (or for split images, the concatenation of the\n"
-"metadata and rootfs tarballs).\n"
-"\n"
-"Images can be referenced by their full hash, shortest unique partial\n"
-"hash or alias name (if one is set).\n"
-"\n"
-"\n"
-"lxc image import <tarball>|<dir> [<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) or an image directory into the LXD "
-"image store.\n"
-"    Directory import is only available on Linux and must be performed as "
-"root.\n"
-"\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"
-"    Delete one or more images from the LXD image store.\n"
-"\n"
-"lxc image refresh [<remote>:]<image> [[<remote>:]<image>...]\n"
-"    Refresh one or more images from its parent remote.\n"
-"\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"
-"    The target may be an existing directory, file name, or \"-\" to specify\n"
-"    stdout.  The target MUST be a directory when exporting a split image.\n"
-"    If the target is a directory, the image's name (each part's name for\n"
-"    split images) as found in the database will be used for the exported\n"
-"    image.  If the target is a file (not a directory and not stdout), then\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"
-"    Print everything LXD knows about a given image.\n"
-"\n"
-"lxc image list [<remote>:] [filter] [--format csv|json|table|yaml] [-c "
-"<columns>]\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"
-"    The -c option takes a (optionally comma-separated) list of arguments "
-"that\n"
-"    control which image attributes to output when displaying in table or "
-"csv\n"
-"    format.\n"
-"\n"
-"    Default column layout is: lfpdasu\n"
-"\n"
-"    Column shorthand chars:\n"
-"\n"
-"        l - Shortest image alias (and optionally number of other aliases)\n"
-"\n"
-"        L - Newline-separated list of all image aliases\n"
-"\n"
-"        f - Fingerprint\n"
-"\n"
-"        p - Whether image is public\n"
-"\n"
-"        d - Description\n"
-"\n"
-"        a - Architecture\n"
-"\n"
-"        s - Size\n"
-"\n"
-"        u - Upload date\n"
-"\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"
-"    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"
-"    Create a new alias for an existing image.\n"
-"\n"
-"lxc image alias rename [<remote>:]<alias> <new-name>\n"
-"    Rename an alias.\n"
-"\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."
+#: lxc/exec.go:122
+msgid "You can't pass -t and -T at the same time"
 msgstr ""
 
-#: lxc/info.go:27
+#: lxc/exec.go:126
+msgid "You can't pass -t or -T at the same time as --mode"
+msgstr ""
+
+#: lxc/copy.go:78
+msgid "You must specify a destination container name when using --target"
+msgstr ""
+
+#: lxc/copy.go:73 lxc/move.go:188
+msgid "You must specify a source container name"
+msgstr ""
+
+#: lxc/copy.go:68 lxc/move.go:91 lxc/move.go:183
+msgid "You must use the same source and destination remote when using --target"
+msgstr ""
+
+#: lxc/alias.go:53
+msgid "add <alias> <target>"
+msgstr ""
+
+#: lxc/config_trust.go:57
+msgid "add [<remote>:] <cert>"
+msgstr ""
+
+#: lxc/profile.go:100
+msgid "add [<remote>:]<container> <profile>"
+msgstr ""
+
+#: lxc/config_device.go:74
+msgid "add [<remote>:]<container|profile> <device> <type> [key=value...]"
+msgstr ""
+
+#: lxc/remote.go:82
+msgid "add [<remote>] <IP|FQDN|URL>"
+msgstr ""
+
+#: lxc/alias.go:21 lxc/image_alias.go:24
+msgid "alias"
+msgstr ""
+
+#: lxc/profile.go:160
+msgid "assign [<remote>:]<container> <profiles>"
+msgstr ""
+
+#: lxc/network.go:102
+msgid "attach [<remote>:]<network> <container> [device name] [interface name]"
+msgstr ""
+
+#: lxc/storage_volume.go:120
+msgid "attach [<remote>:]<pool> <volume> <container> [device name] <path>"
+msgstr ""
+
+#: lxc/storage_volume.go:199
 msgid ""
-"Usage: lxc info [<remote>:][<container>] [--show-log] [--resources]\n"
-"\n"
-"Show container or server information.\n"
-"\n"
-"lxc info [<remote>:]<container> [--show-log]\n"
-"    For container information.\n"
-"\n"
-"lxc info [<remote>:] [--resources]\n"
-"    For LXD server information."
+"attach-profile [<remote:>]<pool> <volume> <profile> [device name] <path>"
 msgstr ""
 
-#: lxc/init.go:79
+#: lxc/network.go:175
 msgid ""
-"Usage: lxc init [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
-"profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
-"<node>]\n"
-"\n"
-"Create containers from images.\n"
-"\n"
-"Not specifying -p will result in the default profile.\n"
-"Specifying \"-p\" with no argument will result in no profile.\n"
-"\n"
-"Examples:\n"
-"    lxc init ubuntu:16.04 u1"
+"attach-profile [<remote>:]<network> <profile> [device name] [interface name]"
+msgstr ""
+
+#: lxc/cluster.go:24
+msgid "cluster"
+msgstr ""
+
+#: lxc/config.go:27
+msgid "config"
+msgstr ""
+
+#: lxc/console.go:30
+msgid "console [<remote>:]<container>"
+msgstr ""
+
+#: lxc/storage_volume.go:280
+msgid "copy <pool>/<volume> <pool>/<volume>"
+msgstr ""
+
+#: lxc/image.go:128
+msgid "copy [<remote>:]<image> <remote>:"
+msgstr ""
+
+#: lxc/profile.go:238
+msgid "copy [<remote>:]<profile> [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/copy.go:32
+msgid "copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>]"
+msgstr ""
+
+#: lxc/image_alias.go:57
+msgid "create [<remote>:]<alias> <fingerprint>"
+msgstr ""
+
+#: lxc/config_template.go:65
+msgid "create [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/network.go:248
+msgid "create [<remote>:]<network> [key=value...]"
+msgstr ""
+
+#: lxc/storage.go:87
+msgid "create [<remote>:]<pool> <driver> [key=value]..."
+msgstr ""
+
+#: lxc/storage_volume.go:424
+msgid "create [<remote>:]<pool> <volume> [key=value]..."
+msgstr ""
+
+#: lxc/profile.go:295
+msgid "create [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/remote.go:453
+msgid "default"
+msgstr ""
+
+#: lxc/image_alias.go:103
+msgid "delete [<remote>:]<alias>"
+msgstr ""
+
+#: lxc/config_template.go:107
+msgid "delete [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/file.go:70
+msgid "delete [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...]"
+msgstr ""
+
+#: lxc/delete.go:27
+msgid ""
+"delete [<remote>:]<container>[/<snapshot>] [[<remote>:]<container>[/"
+"<snapshot>]...]"
+msgstr ""
+
+#: lxc/image.go:258
+msgid "delete [<remote>:]<image> [[<remote>:]<image>...]"
+msgstr ""
+
+#: lxc/network.go:317
+msgid "delete [<remote>:]<network>"
+msgstr ""
+
+#: lxc/operation.go:51
+msgid "delete [<remote>:]<operation>"
+msgstr ""
+
+#: lxc/storage.go:158
+msgid "delete [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:498
+msgid "delete [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:345
+msgid "delete [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/storage.go:431
+msgid "description"
+msgstr ""
+
+#: lxc/network.go:365
+msgid "detach [<remote>:]<network> <container> [device name]"
+msgstr ""
+
+#: lxc/storage_volume.go:559
+msgid "detach [<remote>:]<pool> <volume> <container> [device name]"
+msgstr ""
+
+#: lxc/storage_volume.go:641
+msgid "detach-profile [<remote:>]<pool> <volume> <profile> [device name]"
+msgstr ""
+
+#: lxc/network.go:450
+msgid "detach-profile [<remote>:]<network> <container> [device name]"
+msgstr ""
+
+#: lxc/config_device.go:22
+msgid "device"
+msgstr ""
+
+#: lxc/init.go:223
+msgid "didn't get any affected image, container or snapshot from server"
+msgstr ""
+
+#: lxc/image.go:819
+msgid "disabled"
+msgstr ""
+
+#: lxc/storage.go:430
+msgid "driver"
+msgstr ""
+
+#: lxc/config_template.go:150
+msgid "edit [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/file.go:120
+msgid "edit [<remote>:]<container>/<path>"
+msgstr ""
+
+#: lxc/image.go:310
+msgid "edit [<remote>:]<image>"
+msgstr ""
+
+#: lxc/network.go:535
+msgid "edit [<remote>:]<network>"
+msgstr ""
+
+#: lxc/storage.go:206
+msgid "edit [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:722
+msgid "edit [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:394
+msgid "edit [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/config.go:86 lxc/config_metadata.go:52
+msgid "edit [<remote>:][container]"
+msgstr ""
+
+#: lxc/image.go:821
+msgid "enabled"
+msgstr ""
+
+#: lxc/action.go:234
+#, c-format
+msgid "error: %v"
+msgstr ""
+
+#: lxc/exec.go:37
+msgid "exec [<remote>:]<container> [flags] [--] <command line>"
+msgstr ""
+
+#: lxc/image.go:433
+msgid "export [<remote>:]<image> [target]"
+msgstr ""
+
+#: lxc/file.go:38
+msgid "file"
+msgstr ""
+
+#: lxc/config_device.go:177
+msgid "get [<remote>:]<container|profile> <device> <key>"
+msgstr ""
+
+#: lxc/network.go:658
+msgid "get [<remote>:]<network> <key>"
+msgstr ""
+
+#: lxc/storage.go:326
+msgid "get [<remote>:]<pool> <key>"
+msgstr ""
+
+#: lxc/storage_volume.go:851
+msgid "get [<remote>:]<pool> <volume> <key>"
+msgstr ""
+
+#: lxc/profile.go:518
+msgid "get [<remote>:]<profile> <key>"
+msgstr ""
+
+#: lxc/config.go:287
+msgid "get [<remote>:][container] <key>"
+msgstr ""
+
+#: lxc/remote.go:378
+msgid "get-default"
+msgstr ""
+
+#: lxc/image.go:40
+msgid "image"
+msgstr ""
+
+#: lxc/image.go:569
+msgid ""
+"import <tarball>|<directory>|<URL> [<rootfs tarball>] [<remote>:] "
+"[key=value...]"
+msgstr ""
+
+#: lxc/storage.go:428
+msgid "info"
+msgstr ""
+
+#: lxc/image.go:774
+msgid "info [<remote>:]<image>"
+msgstr ""
+
+#: lxc/storage.go:381
+msgid "info [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/info.go:27
+msgid "info [<remote>:][<container>]"
+msgstr ""
+
+#: lxc/init.go:33
+msgid "init [<remote>:]<image> [<remote>:][<name>]"
 msgstr ""
 
 #: lxc/launch.go:20
+msgid "launch [<remote>:]<image> [<remote>:][<name>]"
+msgstr ""
+
+#: lxc/alias.go:96 lxc/remote.go:411
+msgid "list"
+msgstr ""
+
+#: lxc/cluster.go:56 lxc/config_trust.go:112 lxc/network.go:716
+#: lxc/operation.go:95 lxc/profile.go:565 lxc/storage.go:488
+msgid "list [<remote>:]"
+msgstr ""
+
+#: lxc/image.go:887
+msgid "list [<remote>:] [filter]"
+msgstr ""
+
+#: lxc/image_alias.go:146
+msgid "list [<remote>:] [filters...]"
+msgstr ""
+
+#: lxc/list.go:45
+msgid "list [<remote>:] [filters]"
+msgstr ""
+
+#: lxc/config_template.go:234
+msgid "list [<remote>:]<container>"
+msgstr ""
+
+#: lxc/config_device.go:249
+msgid "list [<remote>:]<container|profile>"
+msgstr ""
+
+#: lxc/storage_volume.go:915
+msgid "list [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/network.go:806
+msgid "list-leases [<remote>:]<network>"
+msgstr ""
+
+#: lxc/alias.go:57
 msgid ""
-"Usage: lxc launch [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
-"profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
-"<node>]\n"
-"\n"
-"Create and start containers from images.\n"
-"\n"
-"Not specifying -p will result in the default profile.\n"
-"Specifying \"-p\" with no argument will result in no profile.\n"
-"\n"
-"Examples:\n"
-"    lxc launch ubuntu:16.04 u1"
+"lxc alias add list list -c ns46S\n"
+"    Overwrite the \"list\" command to pass -c ns46S."
 msgstr ""
 
-#: lxc/list.go:44
+#: lxc/alias.go:200
 msgid ""
-"Usage: lxc list [<remote>:] [filters] [--format csv|json|table|yaml] [-c "
-"<columns>] [--fast]\n"
-"\n"
-"List the existing containers.\n"
-"\n"
-"Default column layout: ns46tS\n"
-"Fast column layout: nsacPt\n"
-"\n"
-"*Filters*\n"
-"A single keyword like \"web\" which will list any container with a name "
-"starting by \"web\".\n"
-"\n"
-"A regular expression on the container name. (e.g. .*web.*01$).\n"
-"\n"
-"A key/value pair referring to a configuration item. For those, the namespace "
-"can be abbreviated to the smallest unambiguous identifier.\n"
-"\t- \"user.blah=abc\" will list all containers with the \"blah\" user "
-"property set to \"abc\".\n"
-"\n"
-"\t- \"u.blah=abc\" will do the same\n"
-"\n"
-"\t- \"security.privileged=true\" will list all privileged containers\n"
-"\n"
-"\t- \"s.privileged=true\" will do the same\n"
-"\n"
-"A regular expression matching a configuration item or its value. (e.g. "
-"volatile.eth0.hwaddr=00:16:3e:.*).\n"
-"\n"
-"*Columns*\n"
-"The -c option takes a comma separated list of arguments that control\n"
-"which container attributes to output when displaying in table or csv\n"
-"format.\n"
-"\n"
-"Column arguments are either pre-defined shorthand chars (see below),\n"
-"or (extended) config keys.\n"
-"\n"
-"Commas between consecutive shorthand chars are optional.\n"
-"\n"
-"Pre-defined column shorthand chars:\n"
-"\n"
-"\t4 - IPv4 address\n"
-"\n"
-"\t6 - IPv6 address\n"
-"\n"
-"\ta - Architecture\n"
-"\n"
-"\tb - Storage pool\n"
-"\n"
-"\tc - Creation date\n"
-"\n"
-"\td - Description\n"
-"\n"
-"\tl - Last used date\n"
-"\n"
-"\tn - Name\n"
-"\n"
-"\tN - Number of Processes\n"
-"\n"
-"\tp - PID of the container's init process\n"
-"\n"
-"\tP - Profiles\n"
-"\n"
-"\ts - State\n"
-"\n"
-"\tS - Number of snapshots\n"
-"\n"
-"\tt - Type (persistent or ephemeral)\n"
-"\n"
-"\tL - Location of the container (e.g. its node)\n"
-"\n"
-"Custom columns are defined with \"key[:name][:maxWidth]\":\n"
-"\n"
-"\tKEY: The (extended) config key to display\n"
-"\n"
-"\tNAME: Name to display in the column header.\n"
-"\tDefaults to the key if not specified or empty.\n"
-"\n"
-"\tMAXWIDTH: Max width of the column (longer results are truncated).\n"
-"\tDefaults to -1 (unlimited). Use 0 to limit to the column header size.\n"
-"\n"
-"*Examples*\n"
-"lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:"
-"MAC\n"
-"\tShows a list of containers using the \"NAME\", \"BASE IMAGE\", \"STATE\", "
-"\"IPV4\",\n"
-"\t\"IPV6\" and \"MAC\" columns.\n"
+"lxc alias remove my-list\n"
+"    Remove the \"my-list\" alias."
+msgstr ""
+
+#: lxc/alias.go:149
+msgid ""
+"lxc alias rename list my-list\n"
+"    Rename existing alias \"list\" to \"my-list\"."
+msgstr ""
+
+#: lxc/config_device.go:78
+msgid ""
+"lxc config device add [<remote>:]container1 <device-name> disk source=/share/"
+"c1 path=opt\n"
+"    Will mount the host's /share/c1 onto /opt in the container."
+msgstr ""
+
+#: lxc/config.go:90
+msgid ""
+"lxc config edit <container> < container.yaml\n"
+"    Update the container configuration from config.yaml."
+msgstr ""
+
+#: lxc/config.go:357
+msgid ""
+"lxc config set [<remote>:]<container> limits.cpu 2\n"
+"    Will set a CPU limit of \"2\" for the container.\n"
 "\n"
-"\t\"BASE IMAGE\" and \"MAC\" are custom columns generated from container "
-"configuration keys.\n"
+"lxc config set core.https_address [::]:8443\n"
+"    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
 "\n"
-"lxc list -c ns,user.comment:comment\n"
-"\tList images with their running state and user comment. "
+"lxc config set core.trust_password blah\n"
+"    Will set the server's trust password to blah."
 msgstr ""
 
-#: lxc/manpage.go:20
+#: lxc/file.go:187
 msgid ""
-"Usage: lxc manpage <directory>\n"
-"\n"
-"Generate all the LXD manpages."
+"lxc file pull foo/etc/hosts .\n"
+"   To pull /etc/hosts from the container and write it to the current "
+"directory."
 msgstr ""
 
-#: lxc/monitor.go:49
+#: lxc/file.go:326
 msgid ""
-"Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
-"\n"
-"Monitor a local or remote LXD server.\n"
+"lxc file push /etc/hosts foo/etc/hosts\n"
+"   To push /etc/hosts into the container \"foo\"."
+msgstr ""
+
+#: lxc/image.go:314
+msgid ""
+"lxc image edit <image>\n"
+"    Launch a text editor to edit the properties\n"
 "\n"
-"By default the monitor will listen to all message types.\n"
+"lxc image edit <image> < image.yaml\n"
+"    Load the image properties from a YAML file"
+msgstr ""
+
+#: lxc/info.go:31
+msgid ""
+"lxc info [<remote>:]<container> [--show-log]\n"
+"    For container information.\n"
 "\n"
-"Message types to listen for can be specified with --type.\n"
+"lxc info [<remote>:] [--resources]\n"
+"    For LXD server information."
+msgstr ""
+
+#: lxc/init.go:37
+msgid "lxc init ubuntu:16.04 u1"
+msgstr ""
+
+#: lxc/launch.go:24
+msgid "lxc launch ubuntu:16.04 u1"
+msgstr ""
+
+#: lxc/list.go:103
+msgid ""
+"lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:"
+"MAC\n"
+"  Show containers using the \"NAME\", \"BASE IMAGE\", \"STATE\", \"IPV4\", "
+"\"IPV6\" and \"MAC\" columns.\n"
+"  \"BASE IMAGE\" and \"MAC\" are custom columns generated from container "
+"configuration keys.\n"
 "\n"
-"*Examples*\n"
+"lxc list -c ns,user.comment:comment\n"
+"  List images with their running state and user comment."
+msgstr ""
+
+#: lxc/monitor.go:35
+msgid ""
 "lxc monitor --type=logging\n"
 "    Only show log messages.\n"
 "\n"
 "lxc monitor --pretty --type=logging --loglevel=info\n"
 "    Show a pretty log of messages with info level or higher.\n"
+"\n"
+"lxc monitor --type=lifecycle\n"
+"    Only show lifecycle events."
 msgstr ""
 
-#: lxc/move.go:26
+#: lxc/move.go:33
 msgid ""
-"Usage: lxc move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
-"<snapshot>]] [--container-only] [--target <node>]\n"
-"\n"
-"Move containers within or in between LXD instances.\n"
-"\n"
 "lxc move [<remote>:]<source container> [<remote>:][<destination container>] "
 "[--container-only]\n"
 "    Move a container between two hosts, renaming it if destination name "
@@ -1946,160 +2837,14 @@ msgid ""
 "    Rename a snapshot."
 msgstr ""
 
-#: lxc/network.go:52
-msgid ""
-"Usage: lxc network <subcommand> [options]\n"
-"\n"
-"Manage and attach containers to networks.\n"
-"\n"
-"lxc network list [<remote>:]\n"
-"    List available networks.\n"
-"\n"
-"lxc network list-leases [<remote>:]<network>\n"
-"    List the DHCP leases for the network\n"
-"\n"
-"lxc network show [<remote>:]<network> [--target <node>]\n"
-"    Show details of a network.\n"
-"\n"
-"lxc network create [<remote>:]<network> [key=value...] [--target <node>]\n"
-"    Create a network.\n"
-"\n"
-"lxc network get [<remote>:]<network> <key> [--target <node>]\n"
-"    Get network configuration.\n"
-"\n"
-"lxc network set [<remote>:]<network> <key> <value>\n"
-"    Set network configuration.\n"
-"\n"
-"lxc network unset [<remote>:]<network> <key>\n"
-"    Unset network configuration.\n"
-"\n"
-"lxc network delete [<remote>:]<network>\n"
-"    Delete a network.\n"
-"\n"
-"lxc network edit [<remote>:]<network>\n"
-"    Edit network, either by launching external editor or reading STDIN.\n"
-"\n"
-"lxc network rename [<remote>:]<network> <new-name>\n"
-"    Rename a network.\n"
-"\n"
-"lxc network attach [<remote>:]<network> <container> [device name] [interface "
-"name]\n"
-"    Attach a network interface connecting the network to a specified "
-"container.\n"
-"\n"
-"lxc network attach-profile [<remote>:]<network> <profile> [device name] "
-"[interface name]\n"
-"    Attach a network interface connecting the network to a specified "
-"profile.\n"
-"\n"
-"lxc network detach [<remote>:]<network> <container> [device name]\n"
-"    Remove a network interface connecting the network to a specified "
-"container.\n"
-"\n"
-"lxc network detach-profile [<remote>:]<network> <container> [device name]\n"
-"    Remove a network interface connecting the network to a specified "
-"profile.\n"
-"\n"
-"*Examples*\n"
-"cat network.yaml | lxc network edit <network>\n"
-"    Update a network using the content of network.yaml"
-msgstr ""
-
-#: lxc/operation.go:25
+#: lxc/operation.go:176
 msgid ""
-"Usage: lxc operation <subcommand> [options]\n"
-"\n"
-"List, show and delete background operations.\n"
-"\n"
-"lxc operation list [<remote>:]\n"
-"    List background operations.\n"
-"\n"
-"lxc operation show [<remote>:]<operation>\n"
-"    Show details on a background operation.\n"
-"\n"
-"lxc operation delete [<remote>:]<operation>\n"
-"    Delete a background operation (will attempt to cancel).\n"
-"\n"
-"*Examples*\n"
 "lxc operation show 344a79e4-d88a-45bf-9c39-c72c26f6ab8a\n"
 "    Show details on that operation UUID"
 msgstr ""
 
-#: lxc/profile.go:51
+#: lxc/profile.go:165
 msgid ""
-"Usage: lxc profile <subcommand> [options]\n"
-"\n"
-"Manage container configuration profiles.\n"
-"\n"
-"*Profile configuration*\n"
-"lxc profile list [<remote>:]\n"
-"    List available profiles.\n"
-"\n"
-"lxc profile show [<remote>:]<profile>\n"
-"    Show details of a profile.\n"
-"\n"
-"lxc profile create [<remote>:]<profile>\n"
-"    Create a profile.\n"
-"\n"
-"lxc profile copy [<remote>:]<profile> [<remote>:]<profile>\n"
-"    Copy the profile.\n"
-"\n"
-"lxc profile get [<remote>:]<profile> <key>\n"
-"    Get profile configuration.\n"
-"\n"
-"lxc profile set [<remote>:]<profile> <key> <value>\n"
-"    Set profile configuration.\n"
-"\n"
-"lxc profile unset [<remote>:]<profile> <key>\n"
-"    Unset profile configuration.\n"
-"\n"
-"lxc profile delete [<remote>:]<profile>\n"
-"    Delete a profile.\n"
-"\n"
-"lxc profile edit [<remote>:]<profile>\n"
-"    Edit profile, either by launching external editor or reading STDIN.\n"
-"\n"
-"lxc profile rename [<remote>:]<profile> <new-name>\n"
-"    Rename a profile.\n"
-"\n"
-"*Profile assignment*\n"
-"lxc profile assign [<remote>:]<container> <profiles>\n"
-"    Replace the current set of profiles for the container by the one "
-"provided.\n"
-"\n"
-"lxc profile add [<remote>:]<container> <profile>\n"
-"    Add a profile to a container\n"
-"\n"
-"lxc profile remove [<remote>:]<container> <profile>\n"
-"    Remove the profile from a container\n"
-"\n"
-"*Device management*\n"
-"lxc profile device list [<remote>:]<profile>\n"
-"    List devices in the given profile.\n"
-"\n"
-"lxc profile device show [<remote>:]<profile>\n"
-"    Show full device details in the given profile.\n"
-"\n"
-"lxc profile device remove [<remote>:]<profile> <name>\n"
-"    Remove a device from a profile.\n"
-"\n"
-"lxc profile device get [<remote>:]<profile> <name> <key>\n"
-"    Get a device property.\n"
-"\n"
-"lxc profile device set [<remote>:]<profile> <name> <key> <value>\n"
-"    Set a device property.\n"
-"\n"
-"lxc profile device unset [<remote>:]<profile> <name> <key>\n"
-"    Unset a device property.\n"
-"\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.\n"
-"\n"
-"*Examples*\n"
-"cat profile.yaml | lxc profile edit <profile>\n"
-"    Update a profile using the content of profile.yaml\n"
-"\n"
 "lxc profile assign foo default,bar\n"
 "    Set the profiles for \"foo\" to \"default\" and \"bar\".\n"
 "\n"
@@ -2110,72 +2855,26 @@ msgid ""
 "    Remove all profile from \"foo\""
 msgstr ""
 
-#: lxc/publish.go:28
+#: lxc/profile.go:398
 msgid ""
-"Usage: lxc publish [<remote>:]<container>[/<snapshot>] [<remote>:] [--"
-"alias=ALIAS...] [prop-key=prop-value...]\n"
-"\n"
-"Publish containers as images."
+"lxc profile edit <profile> < profile.yaml\n"
+"    Update a profile using the content of profile.yaml"
 msgstr ""
 
-#: lxc/query.go:25
+#: lxc/query.go:29
 msgid ""
-"Usage: lxc query [-X <action>] [-d <data>] [--wait] [--raw] [<remote>:]<API "
-"path>\n"
-"\n"
-"Send a raw query to LXD.\n"
-"\n"
-"*Examples*\n"
 "lxc query -X DELETE --wait /1.0/containers/c1\n"
 "    Delete local container \"c1\"."
 msgstr ""
 
-#: lxc/remote.go:40
-msgid ""
-"Usage: lxc remote <subcommand> [options]\n"
-"\n"
-"Manage the list of remote LXD servers.\n"
-"\n"
-"lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--"
-"password=PASSWORD] [--public] [--protocol=PROTOCOL] [--auth-type=AUTH_TYPE]\n"
-"    Add the remote <remote> at <url>.\n"
-"\n"
-"lxc remote remove <remote>\n"
-"    Remove the remote <remote>.\n"
-"\n"
-"lxc remote list\n"
-"    List all remotes.\n"
-"\n"
-"lxc remote rename <old name> <new name>\n"
-"    Rename remote <old name> to <new name>.\n"
-"\n"
-"lxc remote set-url <remote> <url>\n"
-"    Update <remote>'s url to <url>.\n"
-"\n"
-"lxc remote set-default <remote>\n"
-"    Set the default remote.\n"
-"\n"
-"lxc remote get-default\n"
-"    Print the default remote."
-msgstr ""
-
-#: lxc/rename.go:18
+#: lxc/snapshot.go:26
 msgid ""
-"Usage: lxc rename [<remote>:]<container>[/<snapshot>] [<container>[/"
-"<snapshot>]]\n"
-"\n"
-"Rename a container or snapshot."
+"lxc snapshot u1 snap0\n"
+"    Create a snapshot of \"u1\" called \"snap0\"."
 msgstr ""
 
-#: lxc/restore.go:22
+#: lxc/restore.go:28
 msgid ""
-"Usage: lxc restore [<remote>:]<container> <snapshot> [--stateful]\n"
-"\n"
-"Restore containers from snapshots.\n"
-"\n"
-"If --stateful is passed, then the running state will be restored too.\n"
-"\n"
-"*Examples*\n"
 "lxc snapshot u1 snap0\n"
 "    Create the snapshot.\n"
 "\n"
@@ -2183,121 +2882,20 @@ msgid ""
 "    Restore the snapshot."
 msgstr ""
 
-#: lxc/snapshot.go:19
+#: lxc/storage.go:210
 msgid ""
-"Usage: lxc snapshot [<remote>:]<container> <snapshot name> [--stateful]\n"
-"\n"
-"Create container snapshots.\n"
-"\n"
-"When --stateful is used, LXD attempts to checkpoint the container's\n"
-"running state, including process memory state, TCP connections, ...\n"
-"\n"
-"*Examples*\n"
-"lxc snapshot u1 snap0\n"
-"    Create a snapshot of \"u1\" called \"snap0\"."
+"lxc storage edit [<remote>:]<pool> < pool.yaml\n"
+"    Update a storage pool using the content of pool.yaml."
 msgstr ""
 
-#: lxc/storage.go:67
+#: lxc/storage_volume.go:726
+msgid ""
+"lxc storage volume edit [<remote>:]<pool> <volume> < volume.yaml\n"
+"    Update a storage volume using the content of pool.yaml."
+msgstr ""
+
+#: lxc/storage_volume.go:1168
 msgid ""
-"Usage: lxc storage <subcommand> [options]\n"
-"\n"
-"Manage storage pools and volumes.\n"
-"\n"
-"*Storage pools*\n"
-"lxc storage list [<remote>:]\n"
-"    List available storage pools.\n"
-"\n"
-"lxc storage show [<remote>:]<pool> [--resources] [--target <node>]\n"
-"    Show details of a storage pool.\n"
-"\n"
-"lxc storage info [<remote>:]<pool> [--bytes]\n"
-"    Show information of a storage pool in yaml format.\n"
-"\n"
-"lxc storage create [<remote>:]<pool> <driver> [key=value]... [--target "
-"<node>]\n"
-"    Create a storage pool.\n"
-"\n"
-"lxc storage get [<remote>:]<pool> <key>\n"
-"    Get storage pool configuration.\n"
-"\n"
-"lxc storage set [<remote>:]<pool> <key> <value>\n"
-"    Set storage pool configuration.\n"
-"\n"
-"lxc storage unset [<remote>:]<pool> <key>\n"
-"    Unset storage pool configuration.\n"
-"\n"
-"lxc storage delete [<remote>:]<pool>\n"
-"    Delete a storage pool.\n"
-"\n"
-"lxc storage edit [<remote>:]<pool>\n"
-"    Edit storage pool, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"*Storage volumes*\n"
-"lxc storage volume list [<remote>:]<pool>\n"
-"    List available storage volumes on a storage pool.\n"
-"\n"
-"lxc storage volume show [<remote>:]<pool> <volume> [--target <node>]\n"
-"   Show details of a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume create [<remote>:]<pool> <volume> [key=value]... [--"
-"target <node>]\n"
-"    Create a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume rename [<remote>:]<pool> <old name> <new name> [--target "
-"<node>]\n"
-"    Rename a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume get [<remote>:]<pool> <volume> <key> [--target <node>]\n"
-"    Get storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume set [<remote>:]<pool> <volume> <key> <value> [--target "
-"<node>]\n"
-"    Set storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume unset [<remote>:]<pool> <volume> <key> [--target <node>]\n"
-"    Unset storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume delete [<remote>:]<pool> <volume> [--target <node>]\n"
-"    Delete a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume edit [<remote>:]<pool> <volume> [--target <node>]\n"
-"    Edit storage volume, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"lxc storage volume attach [<remote>:]<pool> <volume> <container> [device "
-"name] <path>\n"
-"    Attach a storage volume to the specified container.\n"
-"\n"
-"lxc storage volume attach-profile [<remote:>]<pool> <volume> <profile> "
-"[device name] <path>\n"
-"    Attach a storage volume to the specified profile.\n"
-"\n"
-"lxc storage volume detach [<remote>:]<pool> <volume> <container> [device "
-"name]\n"
-"    Detach a storage volume from the specified container.\n"
-"\n"
-"lxc storage volume detach-profile [<remote:>]<pool> <volume> <profile> "
-"[device name]\n"
-"\tDetach a storage volume from the specified profile.\n"
-"\n"
-"lxc storage volume copy <pool>/<volume> <pool>/<volume> [--config|-c "
-"<key=value>...]\n"
-"    Copy an existing volume to a new volume at the specified pool.\n"
-"\n"
-"lxc storage volume move [<pool>/]<volume> [<pool>/]<volume>\n"
-"    Move an existing volume to the specified pool.\n"
-"\n"
-"Unless specified through a prefix, all volume operations affect \"custom"
-"\" (user created) volumes.\n"
-"\n"
-"*Examples*\n"
-"cat pool.yaml | lxc storage edit [<remote>:]<pool>\n"
-"    Update a storage pool using the content of pool.yaml.\n"
-"\n"
-"cat pool.yaml | lxc storage volume edit [<remote>:]<pool> <volume>\n"
-"    Update a storage volume using the content of pool.yaml.\n"
-"\n"
 "lxc storage volume show default data\n"
 "    Will show the properties of a custom volume called \"data\" in the "
 "\"default\" pool.\n"
@@ -2307,191 +2905,303 @@ msgid ""
 "\" in the \"default\" pool."
 msgstr ""
 
-#: lxc/version.go:18
+#: lxc/config_metadata.go:27
+msgid "metadata"
+msgstr ""
+
+#: lxc/monitor.go:29
+msgid "monitor [<remote>:]"
+msgstr ""
+
+#: lxc/storage_volume.go:991
+msgid "move [<pool>/]<volume> [<pool>/]<volume>"
+msgstr ""
+
+#: lxc/move.go:28
 msgid ""
-"Usage: lxc version\n"
-"\n"
-"Print the version number of this client tool."
+"move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
+"<snapshot>]]"
 msgstr ""
 
-#: lxc/delete.go:46
-msgid "User aborted delete operation."
+#: lxc/storage.go:429
+msgid "name"
 msgstr ""
 
-#: lxc/utils/cancel.go:40
+#: lxc/network.go:30
+msgid "network"
+msgstr ""
+
+#: lxc/image.go:809 lxc/image.go:814 lxc/image.go:977
+msgid "no"
+msgstr ""
+
+#: lxc/remote.go:253
+msgid "ok (y/n)?"
+msgstr ""
+
+#: lxc/operation.go:23
+msgid "operation"
+msgstr ""
+
+#: lxc/config_device.go:316
+msgid "override [<remote>:]<container> <device> [key=value...]"
+msgstr ""
+
+#: lxc/action.go:47
+msgid "pause [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/config.go:52
+msgid "please use `lxc profile`"
+msgstr ""
+
+#: lxc/profile.go:28
+msgid "profile"
+msgstr ""
+
+#: lxc/publish.go:32
 msgid ""
-"User signaled us three times, exiting. The remote operation will keep "
-"running."
+"publish [<remote>:]<container>[/<snapshot>] [<remote>:] [flags] [prop-"
+"key=prop-value...]"
 msgstr ""
 
-#: lxc/query.go:36
-msgid "Wait for the operation to complete"
+#: lxc/file.go:183
+msgid ""
+"pull [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...] "
+"<target path>"
 msgstr ""
 
-#: lxc/restore.go:38
+#: lxc/file.go:322
 msgid ""
-"Whether or not to restore the container's running state from snapshot (if "
-"available)"
+"push <source path> [<remote>:]<container>/<path> [[<remote>:]<container>/"
+"<path>...]"
 msgstr ""
 
-#: lxc/snapshot.go:33
-msgid "Whether or not to snapshot the container's running state"
+#: lxc/query.go:25
+msgid "query [<remote>:]<API path>"
 msgstr ""
 
-#: lxc/network.go:560 lxc/operation.go:141 lxc/remote.go:382 lxc/remote.go:387
-msgid "YES"
+#: lxc/image.go:1210
+msgid "refresh [<remote>:]<image> [[<remote>:]<image>...]"
 msgstr ""
 
-#: lxc/exec.go:132
-msgid "You can't pass -t and -T at the same time"
+#: lxc/remote.go:32
+msgid "remote"
 msgstr ""
 
-#: lxc/exec.go:136
-msgid "You can't pass -t or -T at the same time as --mode"
+#: lxc/alias.go:195
+msgid "remove <alias>"
 msgstr ""
 
-#: lxc/copy.go:76
-msgid "You must specify a destination container name when using --target"
+#: lxc/remote.go:546
+msgid "remove <remote>"
 msgstr ""
 
-#: lxc/copy.go:71
-msgid "You must specify a source container name"
+#: lxc/config_trust.go:194
+msgid "remove [<remote>:] <hostname|fingerprint>"
 msgstr ""
 
-#: lxc/copy.go:66 lxc/move.go:71
-msgid "You must use the same source and destination remote when using --target"
+#: lxc/profile.go:630
+msgid "remove [<remote>:]<container> <profile>"
 msgstr ""
 
-#: lxc/main.go:72
-msgid "`lxc config profile` is deprecated, please use `lxc profile`"
+#: lxc/config_device.go:402
+msgid "remove [<remote>:]<container|profile> <name>..."
 msgstr ""
 
-#: lxc/alias.go:56 lxc/alias.go:102
-#, c-format
-msgid "alias %s already exists"
+#: lxc/cluster.go:235
+msgid "remove [<remote>:]<member>"
 msgstr ""
 
-#: lxc/alias.go:68 lxc/alias.go:97
-#, c-format
-msgid "alias %s doesn't exist"
+#: lxc/alias.go:144
+msgid "rename <old alias> <new alias>"
 msgstr ""
 
-#: lxc/remote.go:370
-msgid "can't remove the default remote"
+#: lxc/remote.go:484
+msgid "rename <remote> <new-name>"
 msgstr ""
 
-#: lxc/file.go:296
-msgid "can't supply uid/gid/mode in recursive mode"
+#: lxc/image_alias.go:247
+msgid "rename [<remote>:]<alias> <new-name>"
 msgstr ""
 
-#: lxc/remote.go:399
-msgid "default"
+#: lxc/rename.go:18
+msgid "rename [<remote>:]<container>[/<snapshot>] <container>[/<snapshot>]"
 msgstr ""
 
-#: lxc/storage.go:856
-msgid "description"
+#: lxc/cluster.go:189
+msgid "rename [<remote>:]<member> <new-name>"
 msgstr ""
 
-#: lxc/init.go:315
-msgid "didn't get any affected image, container or snapshot from server"
+#: lxc/network.go:870
+msgid "rename [<remote>:]<network> <new-name>"
 msgstr ""
 
-#: lxc/image.go:594
-msgid "disabled"
+#: lxc/storage_volume.go:1023
+msgid "rename [<remote>:]<pool> <old name> <new name>"
 msgstr ""
 
-#: lxc/storage.go:855
-msgid "driver"
+#: lxc/profile.go:702
+msgid "rename [<remote>:]<profile> <new-name>"
 msgstr ""
 
-#: lxc/image.go:596
-msgid "enabled"
+#: lxc/action.go:67
+msgid "restart [<remote>:]<container> [[<remote>:]<container>...]"
 msgstr ""
 
-#: lxc/action.go:155 lxc/main.go:33 lxc/main.go:191
-#, c-format
-msgid "error: %v"
+#: lxc/restore.go:22
+msgid "restore [<remote>:]<container> <snapshot>"
 msgstr ""
 
-#: lxc/help.go:37 lxc/main.go:133
-#, c-format
-msgid "error: unknown command: %s"
+#: lxc/config_device.go:491
+msgid "set [<remote>:]<container|profile> <device> <key> <value>"
 msgstr ""
 
-#: lxc/storage.go:853
-msgid "info"
+#: lxc/network.go:918
+msgid "set [<remote>:]<network> <key> <value>"
 msgstr ""
 
-#: lxc/storage.go:854
-msgid "name"
+#: lxc/storage.go:571
+msgid "set [<remote>:]<pool> <key> <value>"
 msgstr ""
 
-#: lxc/image.go:210 lxc/image.go:584 lxc/image.go:589
-msgid "no"
+#: lxc/storage_volume.go:1087
+msgid "set [<remote>:]<pool> <volume> <key> <value>"
 msgstr ""
 
-#: lxc/remote.go:204
-msgid "ok (y/n)?"
+#: lxc/profile.go:751
+msgid "set [<remote>:]<profile> <key> <value>"
 msgstr ""
 
-#: lxc/main.go:368 lxc/main.go:372
-#, c-format
-msgid "processing aliases failed %s\n"
+#: lxc/config.go:353
+msgid "set [<remote>:][container] <key> <value>"
 msgstr ""
 
-#: lxc/file.go:588
-msgid "recursive edit doesn't make sense :("
+#: lxc/remote.go:596
+msgid "set-default <remote>"
 msgstr ""
 
-#: lxc/remote.go:436
-#, c-format
-msgid "remote %s already exists"
+#: lxc/remote.go:634
+msgid "set-url <remote> <URL>"
 msgstr ""
 
-#: lxc/remote.go:362 lxc/remote.go:428 lxc/remote.go:463 lxc/remote.go:479
-#, c-format
-msgid "remote %s doesn't exist"
+#: lxc/config_template.go:296
+msgid "show [<remote>:]<container> <template>"
 msgstr ""
 
-#: lxc/remote.go:345
-#, c-format
-msgid "remote %s exists as <%s>"
+#: lxc/config_device.go:580
+msgid "show [<remote>:]<container|profile>"
 msgstr ""
 
-#: lxc/remote.go:366 lxc/remote.go:432 lxc/remote.go:467
-#, c-format
-msgid "remote %s is static and cannot be modified"
+#: lxc/image.go:1283
+msgid "show [<remote>:]<image>"
+msgstr ""
+
+#: lxc/cluster.go:140
+msgid "show [<remote>:]<member>"
+msgstr ""
+
+#: lxc/network.go:987
+msgid "show [<remote>:]<network>"
+msgstr ""
+
+#: lxc/operation.go:172
+msgid "show [<remote>:]<operation>"
+msgstr ""
+
+#: lxc/storage.go:643
+msgid "show [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:1164
+msgid "show [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:810
+msgid "show [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/config.go:450 lxc/config_metadata.go:174
+msgid "show [<remote>:][container]"
+msgstr ""
+
+#: lxc/snapshot.go:19
+msgid "snapshot [<remote>:]<container> <snapshot name>"
 msgstr ""
 
-#: lxc/storage.go:858
+#: lxc/storage.go:433
 msgid "space used"
 msgstr ""
 
-#: lxc/info.go:251
+#: lxc/action.go:28
+msgid "start [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/info.go:255
 msgid "stateful"
 msgstr ""
 
-#: lxc/info.go:253
+#: lxc/info.go:257
 msgid "stateless"
 msgstr ""
 
-#: lxc/info.go:247
+#: lxc/action.go:89
+msgid "stop [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/storage.go:31
+msgid "storage"
+msgstr ""
+
+#: lxc/info.go:251
 #, c-format
 msgid "taken at %s"
 msgstr ""
 
-#: lxc/storage.go:857
+#: lxc/config_template.go:28
+msgid "template"
+msgstr ""
+
+#: lxc/storage.go:432
 msgid "total space"
 msgstr ""
 
-#: lxc/storage.go:852
+#: lxc/config_trust.go:28
+msgid "trust"
+msgstr ""
+
+#: lxc/config_device.go:648
+msgid "unset [<remote>:]<container|profile> <device> <key>"
+msgstr ""
+
+#: lxc/network.go:1049
+msgid "unset [<remote>:]<network> <key>"
+msgstr ""
+
+#: lxc/storage.go:727
+msgid "unset [<remote>:]<pool> <key>"
+msgstr ""
+
+#: lxc/storage_volume.go:1239
+msgid "unset [<remote>:]<pool> <volume> <key>"
+msgstr ""
+
+#: lxc/profile.go:864
+msgid "unset [<remote>:]<profile> <key>"
+msgstr ""
+
+#: lxc/config.go:558
+msgid "unset [<remote>:][container] <key>"
+msgstr ""
+
+#: lxc/storage.go:427
 msgid "used by"
 msgstr ""
 
-#: lxc/main.go:299
-msgid "wrong number of subcommand arguments"
+#: lxc/storage_volume.go:32
+msgid "volume"
 msgstr ""
 
-#: lxc/delete.go:45 lxc/image.go:208 lxc/image.go:586 lxc/image.go:591
+#: lxc/delete.go:46 lxc/image.go:811 lxc/image.go:816 lxc/image.go:975
 msgid "yes"
 msgstr ""
diff --git a/po/uk.po b/po/uk.po
index ff7433935..33b54de70 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -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: 2018-02-27 22:14-0500\n"
+"POT-Creation-Date: 2018-03-29 01:45-0400\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
@@ -16,7 +16,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: lxc/storage.go:36
+#: lxc/storage.go:220
 msgid ""
 "### This is a yaml representation of a storage pool.\n"
 "### Any line starting with a '#' will be ignored.\n"
@@ -33,7 +33,7 @@ msgid ""
 "###   zfs.pool_name: default"
 msgstr ""
 
-#: lxc/storage.go:53
+#: lxc/storage_volume.go:737
 msgid ""
 "### This is a yaml representation of a storage volume.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -47,7 +47,7 @@ msgid ""
 "###   size: \"61203283968\""
 msgstr ""
 
-#: lxc/config.go:40
+#: lxc/config.go:100
 msgid ""
 "### This is a yaml representation of the configuration.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -68,7 +68,7 @@ msgid ""
 "### Note that the name is shown but cannot be changed"
 msgstr ""
 
-#: lxc/config.go:61
+#: lxc/config_metadata.go:63
 msgid ""
 "### This is a yaml representation of the container metadata.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -92,7 +92,7 @@ msgid ""
 "###     properties: {}"
 msgstr ""
 
-#: lxc/image.go:63
+#: lxc/image.go:327
 msgid ""
 "### This is a yaml representation of the image properties.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -102,7 +102,7 @@ msgid ""
 "###  description: My custom image"
 msgstr ""
 
-#: lxc/network.go:32
+#: lxc/network.go:546
 msgid ""
 "### This is a yaml representation of the network.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -122,7 +122,7 @@ msgid ""
 "### Note that only the configuration can be changed."
 msgstr ""
 
-#: lxc/profile.go:30
+#: lxc/profile.go:408
 msgid ""
 "### This is a yaml representation of the profile.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -143,12 +143,12 @@ msgid ""
 "### Note that the name is shown but cannot be changed"
 msgstr ""
 
-#: lxc/image.go:187
+#: lxc/image.go:954
 #, c-format
 msgid "%s (%d more)"
 msgstr ""
 
-#: lxc/file.go:205
+#: lxc/file.go:677
 #, c-format
 msgid "%s is not a directory"
 msgstr ""
@@ -158,1782 +158,2673 @@ msgstr ""
 msgid "%v (interrupt two more times to force)"
 msgstr ""
 
-#: lxc/file.go:142
+#: lxc/file.go:614
 #, c-format
 msgid "'%s' isn't a supported file type."
 msgstr ""
 
-#: lxc/profile.go:337
+#: lxc/profile.go:222
 msgid "(none)"
 msgstr ""
 
-#: lxc/alias.go:84 lxc/image.go:231 lxc/image.go:1136
+#: lxc/alias.go:127 lxc/image.go:921 lxc/image_alias.go:228
 msgid "ALIAS"
 msgstr ""
 
-#: lxc/image.go:232
+#: lxc/image.go:922
 msgid "ALIASES"
 msgstr ""
 
-#: lxc/image.go:236
+#: lxc/image.go:926
 msgid "ARCH"
 msgstr ""
 
-#: lxc/list.go:467
+#: lxc/list.go:464
 msgid "ARCHITECTURE"
 msgstr ""
 
-#: lxc/remote.go:412
+#: lxc/remote.go:466
 msgid "AUTH TYPE"
 msgstr ""
 
-#: lxc/remote.go:68
+#: lxc/remote.go:88
 msgid "Accept certificate"
 msgstr ""
 
-#: lxc/query.go:38
+#: lxc/query.go:37
 msgid "Action (defaults to GET)"
 msgstr ""
 
-#: lxc/remote.go:276
+#: lxc/config_device.go:75 lxc/config_device.go:76
+msgid "Add devices to containers or profiles"
+msgstr ""
+
+#: lxc/alias.go:54 lxc/alias.go:55
+msgid "Add new aliases"
+msgstr ""
+
+#: lxc/remote.go:83 lxc/remote.go:84
+msgid "Add new remote servers"
+msgstr ""
+
+#: lxc/config_trust.go:58 lxc/config_trust.go:59
+msgid "Add new trusted clients"
+msgstr ""
+
+#: lxc/profile.go:101 lxc/profile.go:102
+msgid "Add profiles to containers"
+msgstr ""
+
+#: lxc/remote.go:325
 #, c-format
 msgid "Admin password for %s: "
 msgstr ""
 
-#: lxc/image.go:623
+#: lxc/alias.go:78 lxc/alias.go:176
+#, c-format
+msgid "Alias %s already exists"
+msgstr ""
+
+#: lxc/alias.go:170 lxc/alias.go:221
+#, c-format
+msgid "Alias %s doesn't exist"
+msgstr ""
+
+#: lxc/image_alias.go:83 lxc/image_alias.go:130 lxc/image_alias.go:274
+msgid "Alias name missing"
+msgstr ""
+
+#: lxc/image.go:854
 msgid "Aliases:"
 msgstr ""
 
-#: lxc/image.go:601 lxc/info.go:125
+#: lxc/image.go:826 lxc/info.go:129
 #, c-format
 msgid "Architecture: %s"
 msgstr ""
 
-#: lxc/remote.go:259
+#: lxc/profile.go:162 lxc/profile.go:163
+msgid "Assign sets of profiles to containers"
+msgstr ""
+
+#: lxc/network.go:103
+msgid "Attach network interfaces to containers"
+msgstr ""
+
+#: lxc/network.go:176 lxc/network.go:177
+msgid "Attach network interfaces to profiles"
+msgstr ""
+
+#: lxc/network.go:104
+msgid "Attach new network interfaces to containers"
+msgstr ""
+
+#: lxc/storage_volume.go:121 lxc/storage_volume.go:122
+msgid "Attach new storage volumes to containers"
+msgstr ""
+
+#: lxc/storage_volume.go:200 lxc/storage_volume.go:201
+msgid "Attach new storage volumes to profiles"
+msgstr ""
+
+#: lxc/console.go:31
+msgid "Attach to container consoles"
+msgstr ""
+
+#: lxc/console.go:32
+msgid ""
+"Attach to container consoles\n"
+"\n"
+"This command allows you to interact with the boot console of a container\n"
+"as well as retrieve past log entries from it."
+msgstr ""
+
+#: lxc/remote.go:308
 #, c-format
 msgid "Authentication type '%s' not supported by server"
 msgstr ""
 
-#: lxc/image.go:632
+#: lxc/image.go:864
 #, c-format
 msgid "Auto update: %s"
 msgstr ""
 
-#: lxc/image.go:707
+#: lxc/network.go:283
+#, c-format
+msgid "Bad key/value pair: %s"
+msgstr ""
+
+#: lxc/copy.go:110 lxc/init.go:118 lxc/publish.go:175 lxc/storage.go:123
+#: lxc/storage_volume.go:468
+#, c-format
+msgid "Bad key=value pair: %s"
+msgstr ""
+
+#: lxc/image.go:677
 #, c-format
 msgid "Bad property: %s"
 msgstr ""
 
-#: lxc/action.go:133
+#: lxc/action.go:212
 msgid "Both --all and container name given"
 msgstr ""
 
-#: lxc/info.go:218
+#: lxc/info.go:222
 msgid "Bytes received"
 msgstr ""
 
-#: lxc/info.go:219
+#: lxc/info.go:223
 msgid "Bytes sent"
 msgstr ""
 
-#: lxc/operation.go:156
+#: lxc/operation.go:155
 msgid "CANCELABLE"
 msgstr ""
 
-#: lxc/config.go:403
+#: lxc/config_trust.go:175
 msgid "COMMON NAME"
 msgstr ""
 
-#: lxc/info.go:182
+#: lxc/info.go:186
 msgid "CPU usage (in seconds)"
 msgstr ""
 
-#: lxc/info.go:186
+#: lxc/info.go:190
 msgid "CPU usage:"
 msgstr ""
 
-#: lxc/operation.go:157
+#: lxc/operation.go:156
 msgid "CREATED"
 msgstr ""
 
-#: lxc/list.go:468
+#: lxc/list.go:465
 msgid "CREATED AT"
 msgstr ""
 
-#: lxc/image.go:631
+#: lxc/image.go:863
 #, c-format
 msgid "Cached: %s"
 msgstr ""
 
-#: lxc/file.go:501
+#: lxc/image.go:175
+msgid "Can't provide a name for the target image"
+msgstr ""
+
+#: lxc/file.go:261
 msgid "Can't pull a directory without --recursive"
 msgstr ""
 
-#: lxc/config.go:210 lxc/network.go:619
+#: lxc/config.go:400 lxc/network.go:969
 #, c-format
 msgid "Can't read from stdin: %s"
 msgstr ""
 
-#: lxc/rename.go:41
+#: lxc/remote.go:577
+msgid "Can't remove the default remote"
+msgstr ""
+
+#: lxc/list.go:481
+msgid "Can't specify --fast with --columns"
+msgstr ""
+
+#: lxc/rename.go:48
 msgid "Can't specify a different remote for rename."
 msgstr ""
 
-#: lxc/config.go:223
-#, c-format
-msgid "Can't unset key '%s', it's not currently set"
+#: lxc/list.go:493
+msgid "Can't specify column L when not clustered"
 msgstr ""
 
-#: lxc/config.go:265 lxc/config.go:291
-#, c-format
-msgid "Can't unset key '%s', it's not currently set."
+#: lxc/file.go:399
+msgid "Can't supply uid/gid/mode in recursive mode"
 msgstr ""
 
-#: lxc/profile.go:546 lxc/storage.go:696
-msgid "Cannot provide container name to list"
+#: lxc/config.go:413
+#, c-format
+msgid "Can't unset key '%s', it's not currently set"
 msgstr ""
 
-#: lxc/remote.go:203
+#: lxc/remote.go:252
 #, c-format
 msgid "Certificate fingerprint: %s"
 msgstr ""
 
-#: lxc/remote.go:315
+#: lxc/remote.go:364
 msgid "Client certificate stored at server: "
 msgstr ""
 
-#: lxc/image.go:175 lxc/image.go:176 lxc/list.go:134 lxc/list.go:135
+#: lxc/network.go:253 lxc/network.go:663 lxc/network.go:923 lxc/network.go:992
+#: lxc/network.go:1054 lxc/storage.go:92 lxc/storage.go:331 lxc/storage.go:576
+#: lxc/storage.go:649 lxc/storage.go:732 lxc/storage_volume.go:287
+#: lxc/storage_volume.go:429 lxc/storage_volume.go:504
+#: lxc/storage_volume.go:730 lxc/storage_volume.go:856
+#: lxc/storage_volume.go:998 lxc/storage_volume.go:1028
+#: lxc/storage_volume.go:1092 lxc/storage_volume.go:1175
+#: lxc/storage_volume.go:1244
+msgid "Cluster member name"
+msgstr ""
+
+#: lxc/image.go:912 lxc/list.go:112
 msgid "Columns"
 msgstr ""
 
-#: lxc/help.go:53
-msgid "Commands:"
+#: lxc/main.go:44
+msgid "Command line client for LXD"
+msgstr ""
+
+#: lxc/main.go:45
+msgid ""
+"Command line client for LXD\n"
+"\n"
+"All of LXD's features can be driven through the various commands below.\n"
+"For help with any of those, simply call them with --help."
 msgstr ""
 
-#: lxc/copy.go:37 lxc/copy.go:38 lxc/init.go:139 lxc/init.go:140
+#: lxc/copy.go:39 lxc/init.go:42
 msgid "Config key/value to apply to the new container"
 msgstr ""
 
-#: lxc/config.go:821 lxc/config.go:886 lxc/config.go:1396 lxc/image.go:1191
-#: lxc/network.go:445 lxc/profile.go:275 lxc/storage.go:647 lxc/storage.go:1209
+#: lxc/config.go:195 lxc/config.go:259 lxc/config_metadata.go:144
+#: lxc/image.go:405 lxc/network.go:631 lxc/profile.go:490 lxc/storage.go:298
+#: lxc/storage_volume.go:822
 #, c-format
 msgid "Config parsing error: %s"
 msgstr ""
 
-#: lxc/main.go:40
-msgid "Connection refused; is LXD running?"
-msgstr ""
-
-#: lxc/console.go:132
+#: lxc/console.go:141
 msgid "Console log:"
 msgstr ""
 
-#: lxc/publish.go:71
+#: lxc/publish.go:79
 msgid "Container name is mandatory"
 msgstr ""
 
-#: lxc/copy.go:243 lxc/init.go:321
+#: lxc/copy.go:260 lxc/init.go:229
 #, c-format
 msgid "Container name is: %s"
 msgstr ""
 
-#: lxc/publish.go:250
+#: lxc/publish.go:259
 #, c-format
 msgid "Container published with fingerprint: %s"
 msgstr ""
 
-#: lxc/copy.go:45 lxc/move.go:44
+#: lxc/copy.go:44 lxc/move.go:46
 msgid "Copy a stateful container stateless"
 msgstr ""
 
-#: lxc/image.go:178
+#: lxc/image.go:138
 msgid "Copy aliases from source"
 msgstr ""
 
-#: lxc/copy.go:44
+#: lxc/copy.go:34 lxc/copy.go:35
+msgid "Copy containers within or in between LXD instances"
+msgstr ""
+
+#: lxc/image.go:130
+msgid "Copy images between servers"
+msgstr ""
+
+#: lxc/image.go:131
+msgid ""
+"Copy images between servers\n"
+"\n"
+"The auto-update flag instructs the server to keep this image up to date.\n"
+"It requires the source to be an alias and for it to be public."
+msgstr ""
+
+#: lxc/config_device.go:317 lxc/config_device.go:318
+msgid "Copy profile inherited devices and override configuration keys"
+msgstr ""
+
+#: lxc/profile.go:240 lxc/profile.go:241
+msgid "Copy profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:282 lxc/storage_volume.go:283
+msgid "Copy storage volumes"
+msgstr ""
+
+#: lxc/copy.go:43
 msgid "Copy the container without its snapshots"
 msgstr ""
 
-#: lxc/image.go:449
+#: lxc/image.go:217
 #, c-format
 msgid "Copying the image: %s"
 msgstr ""
 
-#: lxc/storage.go:1134
+#: lxc/storage_volume.go:387
 #, c-format
 msgid "Copying the storage volume: %s"
 msgstr ""
 
-#: lxc/remote.go:218
+#: lxc/remote.go:267
 msgid "Could not create server cert dir"
 msgstr ""
 
-#: lxc/file.go:70 lxc/file.go:71
+#: lxc/image_alias.go:58 lxc/image_alias.go:59
+msgid "Create aliases for existing images"
+msgstr ""
+
+#: lxc/launch.go:21 lxc/launch.go:22
+msgid "Create and start containers from images"
+msgstr ""
+
+#: lxc/file.go:191 lxc/file.go:331
 msgid "Create any directories necessary"
 msgstr ""
 
-#: lxc/image.go:606 lxc/info.go:127
+#: lxc/snapshot.go:20
+msgid "Create container snapshots"
+msgstr ""
+
+#: lxc/snapshot.go:21
+msgid ""
+"Create container snapshots\n"
+"\n"
+"When --stateful is used, LXD attempts to checkpoint the container's\n"
+"running state, including process memory state, TCP connections, ..."
+msgstr ""
+
+#: lxc/init.go:34 lxc/init.go:35
+msgid "Create containers from images"
+msgstr ""
+
+#: lxc/config_template.go:66 lxc/config_template.go:67
+msgid "Create new container file templates"
+msgstr ""
+
+#: lxc/storage_volume.go:425 lxc/storage_volume.go:426
+msgid "Create new custom storage volumes"
+msgstr ""
+
+#: lxc/network.go:249 lxc/network.go:250
+msgid "Create new networks"
+msgstr ""
+
+#: lxc/profile.go:296 lxc/profile.go:297
+msgid "Create profiles"
+msgstr ""
+
+#: lxc/storage.go:88 lxc/storage.go:89
+msgid "Create storage pools"
+msgstr ""
+
+#: lxc/image.go:832 lxc/info.go:131
 #, c-format
 msgid "Created: %s"
 msgstr ""
 
-#: lxc/init.go:200
+#: lxc/init.go:98
 #, c-format
 msgid "Creating %s"
 msgstr ""
 
-#: lxc/init.go:198
+#: lxc/init.go:96
 msgid "Creating the container"
 msgstr ""
 
-#: lxc/cluster.go:185
+#: lxc/cluster.go:121
 msgid "DATABASE"
 msgstr ""
 
-#: lxc/image.go:235 lxc/image.go:1138 lxc/list.go:469 lxc/network.go:579
-#: lxc/operation.go:154 lxc/storage.go:732 lxc/storage.go:937
+#: lxc/image.go:925 lxc/image_alias.go:230 lxc/list.go:466 lxc/network.go:784
+#: lxc/operation.go:153 lxc/storage.go:545 lxc/storage_volume.go:967
 msgid "DESCRIPTION"
 msgstr ""
 
-#: lxc/storage.go:733
+#: lxc/storage.go:546
 msgid "DRIVER"
 msgstr ""
 
-#: lxc/publish.go:39
+#: lxc/publish.go:41
 msgid "Define a compression algorithm: for image or none"
 msgstr ""
 
-#: lxc/config.go:977
+#: lxc/operation.go:53 lxc/operation.go:54
+msgid "Delete a background operation (will attempt to cancel)"
+msgstr ""
+
+#: lxc/config_template.go:109 lxc/config_template.go:110
+msgid "Delete container file templates"
+msgstr ""
+
+#: lxc/delete.go:29 lxc/delete.go:30
+msgid "Delete containers and snapshots"
+msgstr ""
+
+#: lxc/file.go:72 lxc/file.go:73
+msgid "Delete files in containers"
+msgstr ""
+
+#: lxc/image_alias.go:105 lxc/image_alias.go:106
+msgid "Delete image aliases"
+msgstr ""
+
+#: lxc/image.go:260 lxc/image.go:261
+msgid "Delete images"
+msgstr ""
+
+#: lxc/network.go:319 lxc/network.go:320
+msgid "Delete networks"
+msgstr ""
+
+#: lxc/profile.go:347 lxc/profile.go:348
+msgid "Delete profiles"
+msgstr ""
+
+#: lxc/storage.go:160 lxc/storage.go:161
+msgid "Delete storage pools"
+msgstr ""
+
+#: lxc/storage_volume.go:500 lxc/storage_volume.go:501
+msgid "Delete storage volumes"
+msgstr ""
+
+#: lxc/action.go:30 lxc/action.go:49 lxc/action.go:69 lxc/action.go:91
+#: lxc/alias.go:23 lxc/alias.go:55 lxc/alias.go:99 lxc/alias.go:147
+#: lxc/alias.go:198 lxc/cluster.go:26 lxc/cluster.go:59 lxc/cluster.go:142
+#: lxc/cluster.go:192 lxc/cluster.go:238 lxc/config.go:29 lxc/config.go:88
+#: lxc/config.go:289 lxc/config.go:355 lxc/config.go:452 lxc/config.go:560
+#: lxc/config_device.go:24 lxc/config_device.go:76 lxc/config_device.go:179
+#: lxc/config_device.go:252 lxc/config_device.go:318 lxc/config_device.go:405
+#: lxc/config_device.go:493 lxc/config_device.go:582 lxc/config_device.go:650
+#: lxc/config_metadata.go:29 lxc/config_metadata.go:54
+#: lxc/config_metadata.go:176 lxc/config_template.go:30
+#: lxc/config_template.go:67 lxc/config_template.go:110
+#: lxc/config_template.go:152 lxc/config_template.go:236
+#: lxc/config_template.go:298 lxc/config_trust.go:30 lxc/config_trust.go:59
+#: lxc/config_trust.go:115 lxc/config_trust.go:197 lxc/console.go:32
+#: lxc/copy.go:35 lxc/delete.go:30 lxc/exec.go:39 lxc/file.go:40 lxc/file.go:73
+#: lxc/file.go:122 lxc/file.go:185 lxc/file.go:324 lxc/image.go:42
+#: lxc/image.go:131 lxc/image.go:261 lxc/image.go:312 lxc/image.go:435
+#: lxc/image.go:571 lxc/image.go:776 lxc/image.go:890 lxc/image.go:1212
+#: lxc/image.go:1285 lxc/image_alias.go:26 lxc/image_alias.go:59
+#: lxc/image_alias.go:106 lxc/image_alias.go:149 lxc/image_alias.go:250
+#: lxc/info.go:29 lxc/init.go:35 lxc/launch.go:22 lxc/list.go:48 lxc/main.go:45
+#: lxc/monitor.go:31 lxc/move.go:31 lxc/network.go:32 lxc/network.go:104
+#: lxc/network.go:177 lxc/network.go:250 lxc/network.go:320 lxc/network.go:367
+#: lxc/network.go:452 lxc/network.go:537 lxc/network.go:660 lxc/network.go:719
+#: lxc/network.go:808 lxc/network.go:873 lxc/network.go:920 lxc/network.go:989
+#: lxc/network.go:1051 lxc/operation.go:25 lxc/operation.go:54
+#: lxc/operation.go:98 lxc/operation.go:174 lxc/profile.go:30
+#: lxc/profile.go:102 lxc/profile.go:163 lxc/profile.go:241 lxc/profile.go:297
+#: lxc/profile.go:348 lxc/profile.go:396 lxc/profile.go:520 lxc/profile.go:568
+#: lxc/profile.go:632 lxc/profile.go:705 lxc/profile.go:753 lxc/profile.go:812
+#: lxc/profile.go:866 lxc/publish.go:34 lxc/query.go:27 lxc/remote.go:34
+#: lxc/remote.go:84 lxc/remote.go:380 lxc/remote.go:414 lxc/remote.go:487
+#: lxc/remote.go:549 lxc/remote.go:598 lxc/remote.go:636 lxc/rename.go:20
+#: lxc/restore.go:24 lxc/snapshot.go:21 lxc/storage.go:33 lxc/storage.go:89
+#: lxc/storage.go:161 lxc/storage.go:208 lxc/storage.go:328 lxc/storage.go:383
+#: lxc/storage.go:491 lxc/storage.go:573 lxc/storage.go:645 lxc/storage.go:729
+#: lxc/storage_volume.go:34 lxc/storage_volume.go:122 lxc/storage_volume.go:201
+#: lxc/storage_volume.go:283 lxc/storage_volume.go:426
+#: lxc/storage_volume.go:501 lxc/storage_volume.go:561
+#: lxc/storage_volume.go:643 lxc/storage_volume.go:724
+#: lxc/storage_volume.go:853 lxc/storage_volume.go:918
+#: lxc/storage_volume.go:994 lxc/storage_volume.go:1025
+#: lxc/storage_volume.go:1089 lxc/storage_volume.go:1166
+#: lxc/storage_volume.go:1241
+msgid "Description"
+msgstr ""
+
+#: lxc/network.go:366 lxc/network.go:367
+msgid "Detach network interfaces from containers"
+msgstr ""
+
+#: lxc/network.go:451 lxc/network.go:452
+msgid "Detach network interfaces from profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:560 lxc/storage_volume.go:561
+msgid "Detach storage volumes from containers"
+msgstr ""
+
+#: lxc/storage_volume.go:642 lxc/storage_volume.go:643
+msgid "Detach storage volumes from profiles"
+msgstr ""
+
+#: lxc/config_device.go:163
 #, c-format
 msgid "Device %s added to %s"
 msgstr ""
 
-#: lxc/config.go:1272
+#: lxc/config_device.go:387
 #, c-format
 msgid "Device %s overridden for %s"
 msgstr ""
 
-#: lxc/config.go:1213
+#: lxc/config_device.go:476
 #, c-format
 msgid "Device %s removed from %s"
 msgstr ""
 
-#: lxc/utils.go:192 lxc/utils.go:216
+#: lxc/utils.go:133 lxc/utils.go:157
 #, c-format
 msgid "Device already exists: %s"
 msgstr ""
 
-#: lxc/image.go:1290
+#: lxc/image.go:586
 msgid "Directory import is not available on this platform"
 msgstr ""
 
-#: lxc/exec.go:71
+#: lxc/exec.go:55
 msgid "Disable pseudo-terminal allocation"
 msgstr ""
 
-#: lxc/exec.go:72
+#: lxc/exec.go:56
 msgid "Disable stdin (reads from /dev/null)"
 msgstr ""
 
-#: lxc/info.go:175
+#: lxc/info.go:179
 msgid "Disk usage:"
 msgstr ""
 
-#: lxc/list.go:638
+#: lxc/list.go:635
 msgid "EPHEMERAL"
 msgstr ""
 
-#: lxc/config.go:405
+#: lxc/config_trust.go:177
 msgid "EXPIRY DATE"
 msgstr ""
 
-#: lxc/main.go:52
-msgid "Enable debug mode"
+#: lxc/config_template.go:151 lxc/config_template.go:152
+msgid "Edit container file templates"
 msgstr ""
 
-#: lxc/main.go:51
-msgid "Enable verbose mode"
+#: lxc/config_metadata.go:53 lxc/config_metadata.go:54
+msgid "Edit container metadata files"
 msgstr ""
 
-#: lxc/exec.go:68
-msgid "Environment variable to set (e.g. HOME=/home/foo)"
+#: lxc/config.go:87 lxc/config.go:88
+msgid "Edit container or server configurations as YAML"
+msgstr ""
+
+#: lxc/file.go:121 lxc/file.go:122
+msgid "Edit files in containers"
+msgstr ""
+
+#: lxc/image.go:311 lxc/image.go:312
+msgid "Edit image properties"
+msgstr ""
+
+#: lxc/network.go:536 lxc/network.go:537
+msgid "Edit network configurations as YAML"
+msgstr ""
+
+#: lxc/profile.go:395 lxc/profile.go:396
+msgid "Edit profile configurations as YAML"
+msgstr ""
+
+#: lxc/storage.go:207 lxc/storage.go:208
+msgid "Edit storage pool configurations as YAML"
+msgstr ""
+
+#: lxc/storage_volume.go:723 lxc/storage_volume.go:724
+msgid "Edit storage volume configurations as YAML"
+msgstr ""
+
+#: lxc/list.go:504
+#, c-format
+msgid "Empty column entry (redundant, leading or trailing command) in '%s'"
 msgstr ""
 
-#: lxc/help.go:77
-msgid "Environment:"
+#: lxc/exec.go:52
+msgid "Environment variable to set (e.g. HOME=/home/foo)"
 msgstr ""
 
-#: lxc/copy.go:41 lxc/copy.go:42 lxc/init.go:143 lxc/init.go:144
+#: lxc/copy.go:41 lxc/init.go:44
 msgid "Ephemeral container"
 msgstr ""
 
-#: lxc/config.go:1446
+#: lxc/config_template.go:204
 #, c-format
 msgid "Error updating template file: %s"
 msgstr ""
 
-#: lxc/monitor.go:69
+#: lxc/monitor.go:48
 msgid "Event type to listen for"
 msgstr ""
 
-#: lxc/image.go:610
+#: lxc/exec.go:38
+msgid "Execute commands in containers"
+msgstr ""
+
+#: lxc/exec.go:39
+msgid ""
+"Execute commands in containers\n"
+"\n"
+"The command is executed directly using exec, so there is no shell and\n"
+"shell patterns (variables, file redirects, ...) won't be understood.\n"
+"If you need a shell environment you need to execute the shell\n"
+"executable, passing the shell commands as arguments, for example:\n"
+"\n"
+"  lxc exec <container> -- sh -c \"cd /tmp && pwd\"\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:838
 #, c-format
 msgid "Expires: %s"
 msgstr ""
 
-#: lxc/image.go:612
+#: lxc/image.go:840
 msgid "Expires: never"
 msgstr ""
 
-#: lxc/image.go:922
+#: lxc/image.go:434
+msgid "Export and download images"
+msgstr ""
+
+#: lxc/image.go:435
+msgid ""
+"Export and download images\n"
+"\n"
+"The output target is optional and defaults to the working directory."
+msgstr ""
+
+#: lxc/image.go:494
 #, c-format
 msgid "Exporting the image: %s"
 msgstr ""
 
-#: lxc/config.go:761
+#: lxc/config_template.go:279
 msgid "FILENAME"
 msgstr ""
 
-#: lxc/config.go:402 lxc/image.go:233 lxc/image.go:1137
+#: lxc/config_trust.go:174 lxc/image.go:923 lxc/image_alias.go:229
 msgid "FINGERPRINT"
 msgstr ""
 
-#: lxc/utils.go:261
+#: lxc/utils.go:202
 #, c-format
 msgid "Failed to create alias %s"
 msgstr ""
 
-#: lxc/manpage.go:62
-#, c-format
-msgid "Failed to generate 'lxc.%s.1': %v"
-msgstr ""
-
-#: lxc/manpage.go:55
-#, c-format
-msgid "Failed to generate 'lxc.1': %v"
-msgstr ""
-
-#: lxc/copy.go:238
+#: lxc/copy.go:255
 msgid "Failed to get the new container name"
 msgstr ""
 
-#: lxc/utils.go:251
+#: lxc/utils.go:192
 #, c-format
 msgid "Failed to remove alias %s"
 msgstr ""
 
-#: lxc/file.go:137
+#: lxc/file.go:609
 #, c-format
 msgid "Failed to walk path for %s: %s"
 msgstr ""
 
-#: lxc/list.go:137
+#: lxc/list.go:114
 msgid "Fast mode (same as --columns=nsacPt)"
 msgstr ""
 
-#: lxc/network.go:536 lxc/operation.go:121
+#: lxc/network.go:749 lxc/operation.go:126
 msgid "Filtering isn't supported yet"
 msgstr ""
 
-#: lxc/image.go:599
+#: lxc/image.go:824
 #, c-format
 msgid "Fingerprint: %s"
 msgstr ""
 
-#: lxc/exec.go:70
+#: lxc/exec.go:54
 msgid "Force pseudo-terminal allocation"
 msgstr ""
 
-#: lxc/cluster.go:42
-msgid "Force removing a node, even if degraded"
+#: lxc/cluster.go:242
+msgid "Force removing a member, even if degraded"
 msgstr ""
 
-#: lxc/action.go:47 lxc/action.go:48
+#: lxc/action.go:121
 msgid "Force the container to shutdown"
 msgstr ""
 
-#: lxc/delete.go:34 lxc/delete.go:35
+#: lxc/delete.go:34
 msgid "Force the removal of running containers"
 msgstr ""
 
-#: lxc/main.go:53
+#: lxc/main.go:56
 msgid "Force using the local unix socket"
 msgstr ""
 
-#: lxc/image.go:181 lxc/list.go:136
+#: lxc/image.go:913 lxc/list.go:113
 msgid "Format (csv|json|table|yaml)"
 msgstr ""
 
-#: lxc/remote.go:166
+#: lxc/remote.go:211
 msgid "Generating a client certificate. This may take a minute..."
 msgstr ""
 
-#: lxc/network.go:513
+#: lxc/config_device.go:178 lxc/config_device.go:179
+msgid "Get values for container device configuration keys"
+msgstr ""
+
+#: lxc/config.go:288 lxc/config.go:289
+msgid "Get values for container or server configuration keys"
+msgstr ""
+
+#: lxc/network.go:659 lxc/network.go:660
+msgid "Get values for network configuration keys"
+msgstr ""
+
+#: lxc/profile.go:519 lxc/profile.go:520
+msgid "Get values for profile configuration keys"
+msgstr ""
+
+#: lxc/storage.go:327 lxc/storage.go:328
+msgid "Get values for storage pool configuration keys"
+msgstr ""
+
+#: lxc/storage_volume.go:852 lxc/storage_volume.go:853
+msgid "Get values for storage volume configuration keys"
+msgstr ""
+
+#: lxc/network.go:851
 msgid "HOSTNAME"
 msgstr ""
 
-#: lxc/operation.go:152
+#: lxc/operation.go:151
 msgid "ID"
 msgstr ""
 
-#: lxc/network.go:515
+#: lxc/network.go:853
 msgid "IP ADDRESS"
 msgstr ""
 
-#: lxc/list.go:465
+#: lxc/list.go:462
 msgid "IPV4"
 msgstr ""
 
-#: lxc/list.go:466
+#: lxc/list.go:463
 msgid "IPV6"
 msgstr ""
 
-#: lxc/config.go:404
+#: lxc/config_trust.go:176
 msgid "ISSUE DATE"
 msgstr ""
 
-#: lxc/main.go:171
+#: lxc/main.go:259
 msgid ""
 "If this is your first time running LXD on this machine, you should also run: "
 "lxd init"
 msgstr ""
 
-#: lxc/main.go:54
-msgid "Ignore aliases when determining what command to run"
-msgstr ""
-
-#: lxc/action.go:51
-msgid "Ignore the container state (only for start)"
+#: lxc/action.go:117
+msgid "Ignore the container state"
 msgstr ""
 
-#: lxc/image.go:557
+#: lxc/image.go:1268
 msgid "Image already up to date."
 msgstr ""
 
-#: lxc/image.go:463
+#: lxc/image.go:231
 msgid "Image copied successfully!"
 msgstr ""
 
-#: lxc/image.go:982
+#: lxc/image.go:554
 msgid "Image exported successfully!"
 msgstr ""
 
-#: lxc/image.go:778
+#: lxc/image.go:284 lxc/image.go:1235
+msgid "Image identifier missing"
+msgstr ""
+
+#: lxc/image.go:352
+#, c-format
+msgid "Image identifier missing: %s"
+msgstr ""
+
+#: lxc/image.go:749
 #, c-format
 msgid "Image imported with fingerprint: %s"
 msgstr ""
 
-#: lxc/image.go:555
+#: lxc/image.go:1266
 msgid "Image refreshed successfully!"
 msgstr ""
 
-#: lxc/query.go:39
+#: lxc/image.go:571
+msgid ""
+"Import image into the image store\n"
+"\n"
+"Directory import is only available on Linux and must be performed as root."
+msgstr ""
+
+#: lxc/image.go:570
+msgid "Import images into the image store"
+msgstr ""
+
+#: lxc/query.go:38
 msgid "Input data"
 msgstr ""
 
-#: lxc/init.go:149
+#: lxc/init.go:47
 msgid "Instance type"
 msgstr ""
 
-#: lxc/remote.go:118
+#: lxc/remote.go:163
 #, c-format
 msgid "Invalid URL scheme \"%s\" in \"%s\""
 msgstr ""
 
-#: lxc/config.go:383
+#: lxc/config_trust.go:155
 msgid "Invalid certificate"
 msgstr ""
 
-#: lxc/init.go:32 lxc/init.go:37
-msgid "Invalid configuration key"
+#: lxc/list.go:525
+#, c-format
+msgid "Invalid config key '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:520
+#, c-format
+msgid "Invalid config key column format (too many fields): '%s'"
+msgstr ""
+
+#: lxc/image.go:1196 lxc/list.go:386
+#, c-format
+msgid "Invalid format %q"
+msgstr ""
+
+#: lxc/list.go:543
+#, c-format
+msgid "Invalid max width (must -1, 0 or a positive integer) '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:540
+#, c-format
+msgid "Invalid max width (must be an integer) '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:531
+#, c-format
+msgid ""
+"Invalid name in '%s', empty string is only allowed when defining maxWidth"
+msgstr ""
+
+#: lxc/main.go:341
+msgid "Invalid number of arguments"
 msgstr ""
 
-#: lxc/file.go:560
+#: lxc/file.go:97
 #, c-format
 msgid "Invalid path %s"
 msgstr ""
 
-#: lxc/remote.go:107
+#: lxc/remote.go:152
 #, c-format
 msgid "Invalid protocol: %s"
 msgstr ""
 
-#: lxc/file.go:473
+#: lxc/file.go:243
 #, c-format
 msgid "Invalid source %s"
 msgstr ""
 
-#: lxc/file.go:250
+#: lxc/file.go:352
 #, c-format
 msgid "Invalid target %s"
 msgstr ""
 
-#: lxc/info.go:156
+#: lxc/info.go:160
 msgid "Ips:"
 msgstr ""
 
-#: lxc/image.go:179
+#: lxc/image.go:139
 msgid "Keep the image up to date after initial copy"
 msgstr ""
 
-#: lxc/list.go:470
+#: lxc/list.go:467
 msgid "LAST USED AT"
 msgstr ""
 
-#: lxc/list.go:492
+#: lxc/list.go:489
 msgid "LOCATION"
 msgstr ""
 
-#: lxc/main.go:38
-msgid "LXD socket not found; is LXD installed and running?"
+#: lxc/cluster.go:94
+msgid "LXD server isn't part of a cluster"
 msgstr ""
 
-#: lxc/image.go:615
+#: lxc/image.go:844
 #, c-format
 msgid "Last used: %s"
 msgstr ""
 
-#: lxc/image.go:617
+#: lxc/image.go:846
 msgid "Last used: never"
 msgstr ""
 
-#: lxc/info.go:119
-#, c-format
-msgid "Location: %s"
-msgstr ""
-
-#: lxc/info.go:271
-msgid "Log:"
-msgstr ""
-
-#: lxc/network.go:514
-msgid "MAC ADDRESS"
-msgstr ""
-
-#: lxc/network.go:578
-msgid "MANAGED"
+#: lxc/network.go:807 lxc/network.go:808
+msgid "List DHCP leases"
 msgstr ""
 
-#: lxc/cluster.go:187
-msgid "MESSAGE"
+#: lxc/alias.go:98 lxc/alias.go:99
+msgid "List aliases"
 msgstr ""
 
-#: lxc/image.go:177
-msgid "Make image public"
+#: lxc/cluster.go:58 lxc/cluster.go:59
+msgid "List all the cluster members"
 msgstr ""
 
-#: lxc/publish.go:35
-msgid "Make the image public"
+#: lxc/network.go:718 lxc/network.go:719
+msgid "List available networks"
 msgstr ""
 
-#: lxc/info.go:193
-msgid "Memory (current)"
+#: lxc/storage.go:490 lxc/storage.go:491
+msgid "List available storage pools"
 msgstr ""
 
-#: lxc/info.go:197
-msgid "Memory (peak)"
+#: lxc/operation.go:97 lxc/operation.go:98
+msgid "List background operations"
 msgstr ""
 
-#: lxc/info.go:209
-msgid "Memory usage:"
+#: lxc/config_device.go:251 lxc/config_device.go:252
+msgid "List container devices"
 msgstr ""
 
-#: lxc/monitor.go:70
-msgid "Minimum level for log messages"
+#: lxc/config_template.go:235 lxc/config_template.go:236
+msgid "List container file templates"
 msgstr ""
 
-#: lxc/utils.go:143
-msgid "Missing summary."
+#: lxc/list.go:47
+msgid "List containers"
 msgstr ""
 
-#: lxc/network.go:303 lxc/network.go:356 lxc/storage.go:435 lxc/storage.go:565
-msgid "More than one device matches, specify the device name."
-msgstr ""
+#: lxc/list.go:48
+msgid ""
+"List containers\n"
+"\n"
+"Default column layout: ns46tS\n"
+"Fast column layout: nsacPt\n"
+"\n"
+"== Filters ==\n"
+"A single keyword like \"web\" which will list any container with a name "
+"starting by \"web\".\n"
+"A regular expression on the container name. (e.g. .*web.*01$).\n"
+"A key/value pair referring to a configuration item. For those, the\n"
+"namespace can be abbreviated to the smallest unambiguous identifier.\n"
+"\n"
+"Examples:\n"
+"  - \"user.blah=abc\" will list all containers with the \"blah\" user "
+"property set to \"abc\".\n"
+"  - \"u.blah=abc\" will do the same\n"
+"  - \"security.privileged=true\" will list all privileged containers\n"
+"  - \"s.privileged=true\" will do the same\n"
+"\n"
+"A regular expression matching a configuration item or its value. (e.g. "
+"volatile.eth0.hwaddr=00:16:3e:.*).\n"
+"\n"
+"== Columns ==\n"
+"The -c option takes a comma separated list of arguments that control\n"
+"which container attributes to output when displaying in table or csv\n"
+"format.\n"
+"\n"
+"Column arguments are either pre-defined shorthand chars (see below),\n"
+"or (extended) config keys.\n"
+"\n"
+"Commas between consecutive shorthand chars are optional.\n"
+"\n"
+"Pre-defined column shorthand chars:\n"
+"  4 - IPv4 address\n"
+"  6 - IPv6 address\n"
+"  a - Architecture\n"
+"  b - Storage pool\n"
+"  c - Creation date\n"
+"  d - Description\n"
+"  l - Last used date\n"
+"  n - Name\n"
+"  N - Number of Processes\n"
+"  p - PID of the container's init process\n"
+"  P - Profiles\n"
+"  s - State\n"
+"  S - Number of snapshots\n"
+"  t - Type (persistent or ephemeral)\n"
+"  L - Location of the container (e.g. its node)\n"
+"\n"
+"Custom columns are defined with \"key[:name][:maxWidth]\":\n"
+"  KEY: The (extended) config key to display\n"
+"  NAME: Name to display in the column header.\n"
+"  Defaults to the key if not specified or empty.\n"
+"\n"
+"  MAXWIDTH: Max width of the column (longer results are truncated).\n"
+"  Defaults to -1 (unlimited). Use 0 to limit to the column header size."
+msgstr ""
+
+#: lxc/image_alias.go:148
+msgid "List image aliases"
+msgstr ""
+
+#: lxc/image_alias.go:149
+msgid ""
+"List image aliases\n"
+"\n"
+"Filters may be part of the image hash or part of the image alias name.\n"
+msgstr ""
+
+#: lxc/image.go:889
+msgid "List images"
+msgstr ""
+
+#: lxc/image.go:890
+msgid ""
+"List images\n"
+"\n"
+"Filters may be of the <key>=<value> form for property based filtering,\n"
+"or part of the image hash or part of the image alias name.\n"
+"\n"
+"The -c option takes a (optionally comma-separated) list of arguments\n"
+"that control which image attributes to output when displaying in table\n"
+"or csv format.\n"
+"\n"
+"Default column layout is: lfpdasu\n"
+"\n"
+"Column shorthand chars:\n"
+"\n"
+"    l - Shortest image alias (and optionally number of other aliases)\n"
+"    L - Newline-separated list of all image aliases\n"
+"    f - Fingerprint\n"
+"    p - Whether image is public\n"
+"    d - Description\n"
+"    a - Architecture\n"
+"    s - Size"
+msgstr ""
+
+#: lxc/profile.go:567 lxc/profile.go:568
+msgid "List profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:917 lxc/storage_volume.go:918
+msgid "List storage volumes"
+msgstr ""
+
+#: lxc/remote.go:413 lxc/remote.go:414
+msgid "List the available remotes"
+msgstr ""
+
+#: lxc/config_trust.go:114 lxc/config_trust.go:115
+msgid "List trusted clients"
+msgstr ""
+
+#: lxc/operation.go:24 lxc/operation.go:25
+msgid "List, show and delete background operations"
+msgstr ""
+
+#: lxc/info.go:123
+#, c-format
+msgid "Location: %s"
+msgstr ""
+
+#: lxc/info.go:275
+msgid "Log:"
+msgstr ""
+
+#: lxc/network.go:852
+msgid "MAC ADDRESS"
+msgstr ""
+
+#: lxc/network.go:783
+msgid "MANAGED"
+msgstr ""
+
+#: lxc/cluster.go:123
+msgid "MESSAGE"
+msgstr ""
+
+#: lxc/image.go:137 lxc/image.go:576
+msgid "Make image public"
+msgstr ""
+
+#: lxc/publish.go:38
+msgid "Make the image public"
+msgstr ""
+
+#: lxc/network.go:32
+msgid "Manage an attach containers to networks"
+msgstr ""
+
+#: lxc/network.go:31
+msgid "Manage and attach containers to networks"
+msgstr ""
+
+#: lxc/cluster.go:25 lxc/cluster.go:26
+msgid "Manage cluster members"
+msgstr ""
+
+#: lxc/alias.go:22 lxc/alias.go:23
+msgid "Manage command aliases"
+msgstr ""
+
+#: lxc/config.go:28 lxc/config.go:29
+msgid "Manage container and server configuration options"
+msgstr ""
+
+#: lxc/config_device.go:23 lxc/config_device.go:24
+msgid "Manage container devices"
+msgstr ""
+
+#: lxc/config_template.go:29 lxc/config_template.go:30
+msgid "Manage container file templates"
+msgstr ""
+
+#: lxc/config_metadata.go:28 lxc/config_metadata.go:29
+msgid "Manage container metadata files"
+msgstr ""
+
+#: lxc/file.go:39 lxc/file.go:40
+msgid "Manage files in containers"
+msgstr ""
+
+#: lxc/image_alias.go:25 lxc/image_alias.go:26
+msgid "Manage image aliases"
+msgstr ""
+
+#: lxc/image.go:41
+msgid "Manage images"
+msgstr ""
+
+#: lxc/image.go:42
+msgid ""
+"Manage images\n"
+"\n"
+"In LXD containers are created from images. Those images were themselves\n"
+"either generated from an existing container or downloaded from an image\n"
+"server.\n"
+"\n"
+"When using remote images, LXD will automatically cache images for you\n"
+"and remove them upon expiration.\n"
+"\n"
+"The image unique identifier is the hash (sha-256) of its representation\n"
+"as a compressed tarball (or for split images, the concatenation of the\n"
+"metadata and rootfs tarballs).\n"
+"\n"
+"Images can be referenced by their full hash, shortest unique partial\n"
+"hash or alias name (if one is set)."
+msgstr ""
+
+#: lxc/profile.go:29 lxc/profile.go:30
+msgid "Manage profiles"
+msgstr ""
+
+#: lxc/storage.go:32 lxc/storage.go:33
+msgid "Manage storage pools and volumes"
+msgstr ""
+
+#: lxc/storage_volume.go:33
+msgid "Manage storage volumes"
+msgstr ""
+
+#: lxc/storage_volume.go:34
+msgid ""
+"Manage storage volumes\n"
+"\n"
+"Unless specified through a prefix, all volume operations affect \"custom"
+"\" (user created) volumes."
+msgstr ""
+
+#: lxc/remote.go:33 lxc/remote.go:34
+msgid "Manage the list of remote servers"
+msgstr ""
+
+#: lxc/config_trust.go:29 lxc/config_trust.go:30
+msgid "Manage trusted clients"
+msgstr ""
+
+#: lxc/info.go:197
+msgid "Memory (current)"
+msgstr ""
+
+#: lxc/info.go:201
+msgid "Memory (peak)"
+msgstr ""
+
+#: lxc/info.go:213
+msgid "Memory usage:"
+msgstr ""
+
+#: lxc/monitor.go:49
+msgid "Minimum level for log messages"
+msgstr ""
+
+#: lxc/config_metadata.go:102 lxc/config_metadata.go:200
+#: lxc/config_template.go:91 lxc/config_template.go:134
+#: lxc/config_template.go:176 lxc/config_template.go:260
+#: lxc/config_template.go:322 lxc/profile.go:197 lxc/profile.go:656
+msgid "Missing container name"
+msgstr ""
+
+#: lxc/profile.go:126
+msgid "Missing container.name name"
+msgstr ""
+
+#: lxc/config_device.go:103 lxc/config_device.go:203 lxc/config_device.go:276
+#: lxc/config_device.go:342 lxc/config_device.go:429 lxc/config_device.go:517
+#: lxc/config_device.go:606
+msgid "Missing name"
+msgstr ""
+
+#: lxc/network.go:128 lxc/network.go:201 lxc/network.go:344 lxc/network.go:391
+#: lxc/network.go:476 lxc/network.go:581 lxc/network.go:686 lxc/network.go:832
+#: lxc/network.go:897 lxc/network.go:946 lxc/network.go:1015
+msgid "Missing network name"
+msgstr ""
+
+#: lxc/storage.go:185 lxc/storage.go:252 lxc/storage.go:353 lxc/storage.go:408
+#: lxc/storage.go:603 lxc/storage.go:677 lxc/storage_volume.go:146
+#: lxc/storage_volume.go:225 lxc/storage_volume.go:451
+#: lxc/storage_volume.go:526 lxc/storage_volume.go:585
+#: lxc/storage_volume.go:667 lxc/storage_volume.go:766
+#: lxc/storage_volume.go:878 lxc/storage_volume.go:942
+#: lxc/storage_volume.go:1050 lxc/storage_volume.go:1114
+#: lxc/storage_volume.go:1197
+msgid "Missing pool name"
+msgstr ""
+
+#: lxc/profile.go:321 lxc/profile.go:372 lxc/profile.go:444 lxc/profile.go:544
+#: lxc/profile.go:729 lxc/profile.go:777 lxc/profile.go:836
+msgid "Missing profile name"
+msgstr ""
+
+#: lxc/profile.go:266
+msgid "Missing source profile name"
+msgstr ""
 
-#: lxc/file.go:460
+#: lxc/storage_volume.go:311
+msgid "Missing source volume name"
+msgstr ""
+
+#: lxc/file.go:446
+msgid "Missing target directory"
+msgstr ""
+
+#: lxc/monitor.go:30
+msgid "Monitor a local or remote LXD server"
+msgstr ""
+
+#: lxc/monitor.go:31
+msgid ""
+"Monitor a local or remote LXD server\n"
+"\n"
+"By default the monitor will listen to all message types."
+msgstr ""
+
+#: lxc/network.go:411 lxc/network.go:496 lxc/storage_volume.go:605
+#: lxc/storage_volume.go:686
+msgid "More than one device matches, specify the device name."
+msgstr ""
+
+#: lxc/file.go:224
 msgid "More than one file to download, but target is not a directory"
 msgstr ""
 
-#: lxc/move.go:42
+#: lxc/move.go:30 lxc/move.go:31
+msgid "Move containers within or in between LXD instances"
+msgstr ""
+
+#: lxc/storage_volume.go:993 lxc/storage_volume.go:994
+msgid "Move storage volumes between pools"
+msgstr ""
+
+#: lxc/move.go:44
 msgid "Move the container without its snapshots"
 msgstr ""
 
-#: lxc/storage.go:1128
+#: lxc/storage_volume.go:375
 #, c-format
 msgid "Moving the storage volume: %s"
 msgstr ""
 
-#: lxc/image.go:1292
+#: lxc/image.go:588
 msgid "Must run as root to import from directory"
 msgstr ""
 
-#: lxc/action.go:74
+#: lxc/action.go:147
 msgid "Must supply container name for: "
 msgstr ""
 
-#: lxc/cluster.go:183 lxc/list.go:471 lxc/network.go:576 lxc/profile.go:573
-#: lxc/remote.go:409 lxc/storage.go:731 lxc/storage.go:936
+#: lxc/cluster.go:119 lxc/list.go:468 lxc/network.go:781 lxc/profile.go:613
+#: lxc/remote.go:463 lxc/storage.go:544 lxc/storage_volume.go:966
 msgid "NAME"
 msgstr ""
 
-#: lxc/network.go:558 lxc/operation.go:139 lxc/remote.go:380 lxc/remote.go:385
+#: lxc/network.go:763 lxc/operation.go:138 lxc/remote.go:434 lxc/remote.go:439
 msgid "NO"
 msgstr ""
 
-#: lxc/storage.go:941
+#: lxc/storage_volume.go:971
 msgid "NODE"
 msgstr ""
 
-#: lxc/info.go:117
+#: lxc/info.go:121
 #, c-format
 msgid "Name: %s"
 msgstr ""
 
-#: lxc/network.go:276
+#: lxc/network.go:303
 #, c-format
 msgid "Network %s created"
 msgstr ""
 
-#: lxc/network.go:393
+#: lxc/network.go:353
 #, c-format
 msgid "Network %s deleted"
 msgstr ""
 
-#: lxc/network.go:274
+#: lxc/network.go:301
 #, c-format
 msgid "Network %s pending on node %s"
 msgstr ""
 
-#: lxc/network.go:470
+#: lxc/network.go:906
 #, c-format
 msgid "Network %s renamed to %s"
 msgstr ""
 
-#: lxc/init.go:145 lxc/init.go:146
+#: lxc/init.go:45
 msgid "Network name"
 msgstr ""
 
-#: lxc/info.go:226
+#: lxc/info.go:230
 msgid "Network usage:"
 msgstr ""
 
-#: lxc/image.go:180 lxc/publish.go:36
+#: lxc/publish.go:39
 msgid "New alias to define at target"
 msgstr ""
 
-#: lxc/config.go:414
-msgid "No certificate provided to add"
+#: lxc/image.go:140 lxc/image.go:577
+msgid "New aliases to add to the image"
 msgstr ""
 
-#: lxc/network.go:312 lxc/network.go:365
+#: lxc/network.go:420 lxc/network.go:505
 msgid "No device found for this network"
 msgstr ""
 
-#: lxc/storage.go:444 lxc/storage.go:574
+#: lxc/storage_volume.go:614 lxc/storage_volume.go:695
 msgid "No device found for this storage volume."
 msgstr ""
 
-#: lxc/config.go:446
-msgid "No fingerprint specified."
-msgstr ""
-
-#: lxc/cluster.go:143
+#: lxc/cluster.go:268
 #, c-format
 msgid "Node %s removed"
 msgstr ""
 
-#: lxc/cluster.go:119
+#: lxc/cluster.go:221
 #, c-format
 msgid "Node %s renamed to %s"
 msgstr ""
 
-#: lxc/copy.go:46 lxc/init.go:150 lxc/move.go:45 lxc/network.go:105
-#: lxc/storage.go:165
+#: lxc/copy.go:45 lxc/init.go:48 lxc/move.go:47
 msgid "Node name"
 msgstr ""
 
-#: lxc/storage.go:388 lxc/storage.go:481
+#: lxc/storage_volume.go:164 lxc/storage_volume.go:243
 msgid "Only \"custom\" volumes can be attached to containers."
 msgstr ""
 
-#: lxc/remote.go:101
+#: lxc/remote.go:146
 msgid "Only https URLs are supported for simplestreams"
 msgstr ""
 
-#: lxc/image.go:688
+#: lxc/image.go:658
 msgid "Only https:// is supported for remote image import."
 msgstr ""
 
-#: lxc/network.go:421 lxc/network.go:605
+#: lxc/network.go:607 lxc/network.go:960
 msgid "Only managed networks can be modified."
 msgstr ""
 
-#: lxc/operation.go:85
+#: lxc/operation.go:83
 #, c-format
 msgid "Operation %s deleted"
 msgstr ""
 
-#: lxc/help.go:71 lxc/main.go:139 lxc/main.go:195
-msgid "Options:"
-msgstr ""
-
-#: lxc/exec.go:69
+#: lxc/exec.go:53
 msgid "Override the terminal mode (auto, interactive or non-interactive)"
 msgstr ""
 
-#: lxc/list.go:641
+#: lxc/list.go:638
 msgid "PERSISTENT"
 msgstr ""
 
-#: lxc/list.go:473
+#: lxc/list.go:470
 msgid "PID"
 msgstr ""
 
-#: lxc/list.go:472
+#: lxc/list.go:469
 msgid "PROCESSES"
 msgstr ""
 
-#: lxc/list.go:474
+#: lxc/list.go:471
 msgid "PROFILES"
 msgstr ""
 
-#: lxc/remote.go:411
+#: lxc/remote.go:465
 msgid "PROTOCOL"
 msgstr ""
 
-#: lxc/image.go:234 lxc/remote.go:413
+#: lxc/image.go:924 lxc/remote.go:467
 msgid "PUBLIC"
 msgstr ""
 
-#: lxc/info.go:220
+#: lxc/info.go:224
 msgid "Packets received"
 msgstr ""
 
-#: lxc/info.go:221
+#: lxc/info.go:225
 msgid "Packets sent"
 msgstr ""
 
-#: lxc/help.go:78
-msgid "Path to an alternate client configuration directory"
-msgstr ""
-
-#: lxc/help.go:79
-msgid "Path to an alternate server directory"
-msgstr ""
-
-#: lxc/main.go:240
-msgid "Pause containers."
-msgstr ""
-
-#: lxc/main.go:42
-msgid "Permission denied, are you in the lxd group?"
+#: lxc/action.go:48 lxc/action.go:49
+msgid "Pause containers"
 msgstr ""
 
-#: lxc/info.go:138
+#: lxc/info.go:142
 #, c-format
 msgid "Pid: %d"
 msgstr ""
 
-#: lxc/network.go:446 lxc/profile.go:276 lxc/storage.go:648 lxc/storage.go:1210
+#: lxc/network.go:632 lxc/profile.go:491 lxc/storage.go:299
+#: lxc/storage_volume.go:823
 msgid "Press enter to open the editor again"
 msgstr ""
 
-#: lxc/config.go:822 lxc/config.go:887 lxc/config.go:1397 lxc/config.go:1447
-#: lxc/image.go:1192
+#: lxc/config.go:196 lxc/config.go:260 lxc/config_metadata.go:145
+#: lxc/config_template.go:205 lxc/image.go:406
 msgid "Press enter to start the editor again"
 msgstr ""
 
-#: lxc/monitor.go:68
+#: lxc/monitor.go:47
 msgid "Pretty rendering"
 msgstr ""
 
-#: lxc/help.go:73
-msgid "Print debug information"
-msgstr ""
-
-#: lxc/help.go:72
-msgid "Print less common commands"
+#: lxc/main.go:55
+msgid "Print help"
 msgstr ""
 
-#: lxc/query.go:37
+#: lxc/query.go:36
 msgid "Print the raw response"
 msgstr ""
 
-#: lxc/help.go:74
-msgid "Print verbose information"
+#: lxc/main.go:54
+msgid "Print version number"
 msgstr ""
 
-#: lxc/info.go:162
+#: lxc/info.go:166
 #, c-format
 msgid "Processes: %d"
 msgstr ""
 
-#: lxc/profile.go:362
+#: lxc/main_aliases.go:123 lxc/main_aliases.go:131
+#, c-format
+msgid "Processing aliases failed: %s\n"
+msgstr ""
+
+#: lxc/profile.go:147
 #, c-format
 msgid "Profile %s added to %s"
 msgstr ""
 
-#: lxc/profile.go:226
+#: lxc/profile.go:333
 #, c-format
 msgid "Profile %s created"
 msgstr ""
 
-#: lxc/profile.go:310
+#: lxc/profile.go:381
 #, c-format
 msgid "Profile %s deleted"
 msgstr ""
 
-#: lxc/profile.go:397
+#: lxc/profile.go:690
 #, c-format
 msgid "Profile %s removed from %s"
 msgstr ""
 
-#: lxc/profile.go:300
+#: lxc/profile.go:738
 #, c-format
 msgid "Profile %s renamed to %s"
 msgstr ""
 
-#: lxc/copy.go:39 lxc/copy.go:40 lxc/init.go:141 lxc/init.go:142
+#: lxc/copy.go:40 lxc/init.go:43
 msgid "Profile to apply to the new container"
 msgstr ""
 
-#: lxc/profile.go:339
+#: lxc/profile.go:225
 #, c-format
 msgid "Profiles %s applied to %s"
 msgstr ""
 
-#: lxc/info.go:136
+#: lxc/info.go:140
 #, c-format
 msgid "Profiles: %s"
 msgstr ""
 
-#: lxc/image.go:619
+#: lxc/image.go:849
 msgid "Properties:"
 msgstr ""
 
-#: lxc/remote.go:72
+#: lxc/remote.go:92
 msgid "Public image server"
 msgstr ""
 
-#: lxc/image.go:602
+#: lxc/image.go:827
 #, c-format
 msgid "Public: %s"
 msgstr ""
 
-#: lxc/file.go:68 lxc/file.go:69
-msgid "Recursively push or pull files"
+#: lxc/publish.go:33 lxc/publish.go:34
+msgid "Publish containers as images"
 msgstr ""
 
-#: lxc/image.go:529
-#, c-format
-msgid "Refreshing the image: %s"
+#: lxc/file.go:184 lxc/file.go:185
+msgid "Pull files from containers"
 msgstr ""
 
-#: lxc/remote.go:69
-msgid "Remote admin password"
+#: lxc/file.go:323 lxc/file.go:324
+msgid "Push files into containers"
 msgstr ""
 
-#: lxc/utils/cancel.go:34
-msgid "Remote operation canceled by user"
+#: lxc/file.go:192 lxc/file.go:330
+msgid "Recursively transfer files"
+msgstr ""
+
+#: lxc/image.go:1211 lxc/image.go:1212
+msgid "Refresh images"
 msgstr ""
 
-#: lxc/info.go:122
+#: lxc/image.go:1239
 #, c-format
-msgid "Remote: %s"
+msgid "Refreshing the image: %s"
 msgstr ""
 
-#: lxc/delete.go:42
+#: lxc/remote.go:515
 #, c-format
-msgid "Remove %s (yes/no): "
+msgid "Remote %s already exists"
 msgstr ""
 
-#: lxc/storage.go:1247
+#: lxc/remote.go:507 lxc/remote.go:569 lxc/remote.go:618 lxc/remote.go:656
 #, c-format
-msgid "Renamed storage volume from \"%s\" to \"%s\""
+msgid "Remote %s doesn't exist"
 msgstr ""
 
-#: lxc/delete.go:36 lxc/delete.go:37
-msgid "Require user confirmation"
+#: lxc/remote.go:116
+#, c-format
+msgid "Remote %s exists as <%s>"
 msgstr ""
 
-#: lxc/info.go:159
-msgid "Resources:"
+#: lxc/remote.go:511 lxc/remote.go:573 lxc/remote.go:660
+#, c-format
+msgid "Remote %s is static and cannot be modified"
 msgstr ""
 
-#: lxc/main.go:248
-msgid "Restart containers."
+#: lxc/remote.go:89
+msgid "Remote admin password"
 msgstr ""
 
-#: lxc/console.go:38
-msgid "Retrieve the container's console log"
+#: lxc/utils/cancel.go:34
+msgid "Remote operation canceled by user"
 msgstr ""
 
-#: lxc/init.go:293
+#: lxc/info.go:126
 #, c-format
-msgid "Retrieving image: %s"
+msgid "Remote: %s"
 msgstr ""
 
-#: lxc/action.go:52
-msgid "Run command against all containers"
+#: lxc/delete.go:42
+#, c-format
+msgid "Remove %s (yes/no): "
 msgstr ""
 
-#: lxc/image.go:237
-msgid "SIZE"
+#: lxc/cluster.go:237 lxc/cluster.go:238
+msgid "Remove a member from the cluster"
 msgstr ""
 
-#: lxc/list.go:475
-msgid "SNAPSHOTS"
+#: lxc/alias.go:197 lxc/alias.go:198
+msgid "Remove aliases"
 msgstr ""
 
-#: lxc/storage.go:738
-msgid "SOURCE"
+#: lxc/config_device.go:404 lxc/config_device.go:405
+msgid "Remove container devices"
 msgstr ""
 
-#: lxc/cluster.go:186 lxc/list.go:476 lxc/network.go:583 lxc/storage.go:736
-msgid "STATE"
+#: lxc/profile.go:631 lxc/profile.go:632
+msgid "Remove profiles from containers"
 msgstr ""
 
-#: lxc/remote.go:414
-msgid "STATIC"
+#: lxc/remote.go:548 lxc/remote.go:549
+msgid "Remove remotes"
 msgstr ""
 
-#: lxc/operation.go:155
-msgid "STATUS"
+#: lxc/config_trust.go:196 lxc/config_trust.go:197
+msgid "Remove trusted clients"
 msgstr ""
 
-#: lxc/list.go:478
-msgid "STORAGE POOL"
+#: lxc/cluster.go:191 lxc/cluster.go:192
+msgid "Rename a cluster member"
 msgstr ""
 
-#: lxc/remote.go:71
-msgid "Server authentication type (tls or macaroons)"
+#: lxc/alias.go:146 lxc/alias.go:147 lxc/image_alias.go:249
+#: lxc/image_alias.go:250
+msgid "Rename aliases"
 msgstr ""
 
-#: lxc/remote.go:211
-msgid "Server certificate NACKed by user"
+#: lxc/rename.go:19 lxc/rename.go:20
+msgid "Rename containers and snapshots"
 msgstr ""
 
-#: lxc/remote.go:311
-msgid "Server doesn't trust us after authentication"
+#: lxc/network.go:872 lxc/network.go:873
+msgid "Rename networks"
 msgstr ""
 
-#: lxc/remote.go:70
-msgid "Server protocol (lxd or simplestreams)"
+#: lxc/profile.go:704 lxc/profile.go:705
+msgid "Rename profiles"
 msgstr ""
 
-#: lxc/file.go:66
-msgid "Set the file's gid on push"
+#: lxc/remote.go:486 lxc/remote.go:487
+msgid "Rename remotes"
 msgstr ""
 
-#: lxc/file.go:67
-msgid "Set the file's perms on push"
+#: lxc/storage_volume.go:1024 lxc/storage_volume.go:1025
+msgid "Rename storage volumes"
 msgstr ""
 
-#: lxc/file.go:65
-msgid "Set the file's uid on push"
+#: lxc/storage_volume.go:1073
+#, c-format
+msgid "Renamed storage volume from \"%s\" to \"%s\""
 msgstr ""
 
-#: lxc/help.go:29
-msgid "Show all commands (not just interesting ones)"
+#: lxc/delete.go:35
+msgid "Require user confirmation"
 msgstr ""
 
-#: lxc/help.go:75
-msgid "Show client version"
+#: lxc/info.go:163
+msgid "Resources:"
 msgstr ""
 
-#: lxc/info.go:40
-msgid "Show the container's last 100 log lines?"
+#: lxc/action.go:68
+msgid "Restart containers"
 msgstr ""
 
-#: lxc/config.go:36
-msgid "Show the expanded configuration"
+#: lxc/action.go:69
+msgid ""
+"Restart containers\n"
+"\n"
+"The opposite of \"lxc pause\" is \"lxc start\"."
 msgstr ""
 
-#: lxc/info.go:41
-msgid "Show the resources available to the server"
+#: lxc/restore.go:23
+msgid "Restore containers from snapshots"
 msgstr ""
 
-#: lxc/storage.go:163
-msgid "Show the resources available to the storage pool"
+#: lxc/restore.go:24
+msgid ""
+"Restore containers from snapshots\n"
+"\n"
+"If --stateful is passed, then the running state will be restored too."
+msgstr ""
+
+#: lxc/console.go:39
+msgid "Retrieve the container's console log"
+msgstr ""
+
+#: lxc/init.go:201
+#, c-format
+msgid "Retrieving image: %s"
+msgstr ""
+
+#: lxc/action.go:112
+msgid "Run command against all containers"
+msgstr ""
+
+#: lxc/image.go:927
+msgid "SIZE"
+msgstr ""
+
+#: lxc/list.go:472
+msgid "SNAPSHOTS"
+msgstr ""
+
+#: lxc/storage.go:551
+msgid "SOURCE"
+msgstr ""
+
+#: lxc/cluster.go:122 lxc/list.go:473 lxc/network.go:788 lxc/storage.go:549
+msgid "STATE"
+msgstr ""
+
+#: lxc/remote.go:468
+msgid "STATIC"
+msgstr ""
+
+#: lxc/operation.go:154
+msgid "STATUS"
+msgstr ""
+
+#: lxc/list.go:475
+msgid "STORAGE POOL"
+msgstr ""
+
+#: lxc/query.go:26 lxc/query.go:27
+msgid "Send a raw query to LXD"
+msgstr ""
+
+#: lxc/remote.go:91
+msgid "Server authentication type (tls or macaroons)"
+msgstr ""
+
+#: lxc/remote.go:260
+msgid "Server certificate NACKed by user"
+msgstr ""
+
+#: lxc/remote.go:360
+msgid "Server doesn't trust us after authentication"
+msgstr ""
+
+#: lxc/remote.go:90
+msgid "Server protocol (lxd or simplestreams)"
+msgstr ""
+
+#: lxc/config_device.go:492 lxc/config_device.go:493
+msgid "Set container device configuration keys"
+msgstr ""
+
+#: lxc/config.go:354 lxc/config.go:355
+msgid "Set container or server configuration keys"
+msgstr ""
+
+#: lxc/network.go:919 lxc/network.go:920
+msgid "Set network configuration keys"
+msgstr ""
+
+#: lxc/profile.go:752 lxc/profile.go:753
+msgid "Set profile configuration keys"
+msgstr ""
+
+#: lxc/storage.go:572 lxc/storage.go:573
+msgid "Set storage pool configuration keys"
+msgstr ""
+
+#: lxc/storage_volume.go:1088 lxc/storage_volume.go:1089
+msgid "Set storage volume configuration keys"
+msgstr ""
+
+#: lxc/remote.go:635 lxc/remote.go:636
+msgid "Set the URL for the remote"
+msgstr ""
+
+#: lxc/remote.go:597 lxc/remote.go:598
+msgid "Set the default remote"
+msgstr ""
+
+#: lxc/file.go:333
+msgid "Set the file's gid on push"
+msgstr ""
+
+#: lxc/file.go:334
+msgid "Set the file's perms on push"
+msgstr ""
+
+#: lxc/file.go:332
+msgid "Set the file's uid on push"
+msgstr ""
+
+#: lxc/main.go:57
+msgid "Show all debug messages"
+msgstr ""
+
+#: lxc/main.go:58
+msgid "Show all information messages"
+msgstr ""
+
+#: lxc/config_metadata.go:175 lxc/config_metadata.go:176
+msgid "Show container metadata files"
+msgstr ""
+
+#: lxc/config.go:451 lxc/config.go:452
+msgid "Show container or server configurations"
+msgstr ""
+
+#: lxc/info.go:28 lxc/info.go:29
+msgid "Show container or server information"
+msgstr ""
+
+#: lxc/config_template.go:297 lxc/config_template.go:298
+msgid "Show content of container file templates"
+msgstr ""
+
+#: lxc/cluster.go:141 lxc/cluster.go:142
+msgid "Show details of a cluster member"
+msgstr ""
+
+#: lxc/operation.go:173 lxc/operation.go:174
+msgid "Show details on a background operation"
+msgstr ""
+
+#: lxc/config_device.go:581 lxc/config_device.go:582
+msgid "Show full device configuration for containers or profiles"
+msgstr ""
+
+#: lxc/image.go:1284 lxc/image.go:1285
+msgid "Show image properties"
+msgstr ""
+
+#: lxc/main.go:61
+msgid "Show less common commands"
 msgstr ""
 
-#: lxc/storage.go:164
+#: lxc/network.go:988 lxc/network.go:989
+msgid "Show network configurations"
+msgstr ""
+
+#: lxc/profile.go:811 lxc/profile.go:812
+msgid "Show profile configurations"
+msgstr ""
+
+#: lxc/storage.go:644 lxc/storage.go:645
+msgid "Show storage pool configurations and resources"
+msgstr ""
+
+#: lxc/storage_volume.go:1165
+msgid "Show storage volum configurations"
+msgstr ""
+
+#: lxc/storage_volume.go:1166
+msgid "Show storage volume configurations"
+msgstr ""
+
+#: lxc/info.go:39
+msgid "Show the container's last 100 log lines?"
+msgstr ""
+
+#: lxc/remote.go:379 lxc/remote.go:380
+msgid "Show the default remote"
+msgstr ""
+
+#: lxc/config.go:455
+msgid "Show the expanded configuration"
+msgstr ""
+
+#: lxc/info.go:40
+msgid "Show the resources available to the server"
+msgstr ""
+
+#: lxc/storage.go:648
+msgid "Show the resources available to the storage pool"
+msgstr ""
+
+#: lxc/storage.go:386
 msgid "Show the used and free space in bytes"
 msgstr ""
 
-#: lxc/image.go:600
+#: lxc/image.go:775 lxc/image.go:776
+msgid "Show useful information about images"
+msgstr ""
+
+#: lxc/storage.go:382 lxc/storage.go:383
+msgid "Show useful information about storage pools"
+msgstr ""
+
+#: lxc/image.go:825
 #, c-format
 msgid "Size: %.2fMB"
 msgstr ""
 
-#: lxc/info.go:240
+#: lxc/info.go:244
 msgid "Snapshots:"
 msgstr ""
 
-#: lxc/action.go:163
+#: lxc/action.go:242
 #, c-format
 msgid "Some containers failed to %s"
 msgstr ""
 
-#: lxc/image.go:634
+#: lxc/image.go:867
 msgid "Source:"
 msgstr ""
 
-#: lxc/main.go:258
-msgid "Start containers."
+#: lxc/action.go:29 lxc/action.go:30
+msgid "Start containers"
 msgstr ""
 
-#: lxc/launch.go:59
+#: lxc/launch.go:62
 #, c-format
 msgid "Starting %s"
 msgstr ""
 
-#: lxc/info.go:130
+#: lxc/info.go:134
 #, c-format
 msgid "Status: %s"
 msgstr ""
 
-#: lxc/main.go:264
-msgid "Stop containers."
+#: lxc/action.go:90 lxc/action.go:91
+msgid "Stop containers"
 msgstr ""
 
-#: lxc/publish.go:37 lxc/publish.go:38
+#: lxc/publish.go:40
 msgid "Stop the container if currently running"
 msgstr ""
 
-#: lxc/publish.go:136
+#: lxc/publish.go:144
 msgid "Stopping container failed!"
 msgstr ""
 
-#: lxc/delete.go:121
+#: lxc/delete.go:120
 #, c-format
 msgid "Stopping the container failed: %s"
 msgstr ""
 
-#: lxc/storage.go:538
+#: lxc/storage.go:144
 #, c-format
 msgid "Storage pool %s created"
 msgstr ""
 
-#: lxc/storage.go:598
+#: lxc/storage.go:194
 #, c-format
 msgid "Storage pool %s deleted"
 msgstr ""
 
-#: lxc/storage.go:536
+#: lxc/storage.go:142
 #, c-format
 msgid "Storage pool %s pending on node %s"
 msgstr ""
 
-#: lxc/init.go:147 lxc/init.go:148
+#: lxc/init.go:46
 msgid "Storage pool name"
 msgstr ""
 
-#: lxc/storage.go:980
+#: lxc/storage_volume.go:484
 #, c-format
 msgid "Storage volume %s created"
 msgstr ""
 
-#: lxc/storage.go:1000
+#: lxc/storage_volume.go:545
 #, c-format
 msgid "Storage volume %s deleted"
 msgstr ""
 
-#: lxc/storage.go:1135
+#: lxc/storage_volume.go:388
 msgid "Storage volume copied successfully!"
 msgstr ""
 
-#: lxc/storage.go:1129
+#: lxc/storage_volume.go:376
 msgid "Storage volume moved successfully!"
 msgstr ""
 
-#: lxc/action.go:50
-msgid "Store the container state (only for stop)"
+#: lxc/action.go:115
+msgid "Store the container state"
 msgstr ""
 
-#: lxc/info.go:201
+#: lxc/info.go:205
 msgid "Swap (current)"
 msgstr ""
 
-#: lxc/info.go:205
+#: lxc/info.go:209
 msgid "Swap (peak)"
 msgstr ""
 
-#: lxc/alias.go:85
+#: lxc/alias.go:128
 msgid "TARGET"
 msgstr ""
 
-#: lxc/list.go:477 lxc/network.go:516 lxc/network.go:577 lxc/operation.go:153
-#: lxc/storage.go:935
+#: lxc/list.go:474 lxc/network.go:782 lxc/network.go:854 lxc/operation.go:152
+#: lxc/storage_volume.go:965
 msgid "TYPE"
 msgstr ""
 
-#: lxc/delete.go:105
+#: lxc/delete.go:104
 msgid "The container is currently running, stop it first or pass --force."
 msgstr ""
 
-#: lxc/publish.go:101
+#: lxc/publish.go:109
 msgid ""
 "The container is currently running. Use --force to have it stopped and "
 "restarted."
 msgstr ""
 
-#: lxc/init.go:372
+#: lxc/init.go:280
 msgid "The container you are starting doesn't have any network attached to it."
 msgstr ""
 
-#: lxc/config.go:944 lxc/config.go:961 lxc/config.go:1240
+#: lxc/config_device.go:130 lxc/config_device.go:147 lxc/config_device.go:354
 msgid "The device already exists"
 msgstr ""
 
-#: lxc/config.go:1007 lxc/config.go:1019 lxc/config.go:1055 lxc/config.go:1073
-#: lxc/config.go:1119 lxc/config.go:1136 lxc/config.go:1179 lxc/config.go:1197
+#: lxc/config_device.go:218 lxc/config_device.go:230 lxc/config_device.go:442
+#: lxc/config_device.go:460 lxc/config_device.go:533 lxc/config_device.go:550
 msgid "The device doesn't exist"
 msgstr ""
 
-#: lxc/init.go:356
+#: lxc/init.go:264
 #, c-format
 msgid "The local image '%s' couldn't be found, trying '%s:%s' instead."
 msgstr ""
 
-#: lxc/init.go:352
+#: lxc/init.go:260
 #, c-format
 msgid "The local image '%s' couldn't be found, trying '%s:' instead."
 msgstr ""
 
-#: lxc/action.go:35
-msgid "The opposite of \"lxc pause\" is \"lxc start\"."
-msgstr ""
-
-#: lxc/config.go:1245
+#: lxc/config_device.go:359
 msgid "The profile device doesn't exist"
 msgstr ""
 
-#: lxc/network.go:317 lxc/network.go:370 lxc/storage.go:449 lxc/storage.go:579
+#: lxc/network.go:425 lxc/network.go:510 lxc/storage_volume.go:619
+#: lxc/storage_volume.go:700
 msgid "The specified device doesn't exist"
 msgstr ""
 
-#: lxc/network.go:321 lxc/network.go:374
+#: lxc/network.go:429 lxc/network.go:514
 msgid "The specified device doesn't match the network"
 msgstr ""
 
-#: lxc/publish.go:74
+#: lxc/publish.go:82
 msgid "There is no \"image name\".  Did you want an alias?"
 msgstr ""
 
-#: lxc/help.go:47
-msgid ""
-"This is the LXD command line client.\n"
-"\n"
-"All of LXD's features can be driven through the various commands below.\n"
-"For help with any of those, simply call them with --help."
-msgstr ""
-
-#: lxc/action.go:46
+#: lxc/action.go:122
 msgid "Time to wait for the container before killing it"
 msgstr ""
 
-#: lxc/image.go:603
+#: lxc/image.go:828
 msgid "Timestamps:"
 msgstr ""
 
-#: lxc/init.go:374
+#: lxc/init.go:282
 msgid "To attach a network to a container, use: lxc network attach"
 msgstr ""
 
-#: lxc/init.go:373
+#: lxc/init.go:281
 msgid "To create a new network, use: lxc network create"
 msgstr ""
 
-#: lxc/console.go:173
+#: lxc/console.go:185
 msgid "To detach from the console, press: <ctrl>+a q"
 msgstr ""
 
-#: lxc/main.go:172
+#: lxc/main.go:260
 msgid "To start your first container, try: lxc launch ubuntu:16.04"
 msgstr ""
 
-#: lxc/copy.go:43 lxc/move.go:43
+#: lxc/storage_volume.go:997
+msgid "Transfer mode, one of pull (default), push or relay"
+msgstr ""
+
+#: lxc/copy.go:42
+msgid "Transfer mode. One of pull (default), push or relay"
+msgstr ""
+
+#: lxc/move.go:45 lxc/storage_volume.go:286
 msgid "Transfer mode. One of pull (default), push or relay."
 msgstr ""
 
-#: lxc/copy.go:212
+#: lxc/copy.go:229
 #, c-format
 msgid "Transferring container: %s"
 msgstr ""
 
-#: lxc/image.go:717
+#: lxc/image.go:687
 #, c-format
 msgid "Transferring image: %s"
 msgstr ""
 
-#: lxc/action.go:108 lxc/launch.go:77
+#: lxc/action.go:181 lxc/launch.go:80
 #, c-format
 msgid "Try `lxc info --show-log %s` for more info"
 msgstr ""
 
-#: lxc/info.go:132
+#: lxc/info.go:136
 msgid "Type: ephemeral"
 msgstr ""
 
-#: lxc/info.go:134
+#: lxc/info.go:138
 msgid "Type: persistent"
 msgstr ""
 
-#: lxc/image.go:238
+#: lxc/image.go:928
 msgid "UPLOAD DATE"
 msgstr ""
 
-#: lxc/cluster.go:184 lxc/remote.go:410
+#: lxc/cluster.go:120 lxc/remote.go:464
 msgid "URL"
 msgstr ""
 
-#: lxc/network.go:580 lxc/profile.go:574 lxc/storage.go:740 lxc/storage.go:938
+#: lxc/network.go:785 lxc/profile.go:614 lxc/storage.go:553
+#: lxc/storage_volume.go:968
 msgid "USED BY"
 msgstr ""
 
-#: lxc/manpage.go:36
-msgid "Unable to find help2man."
+#: lxc/list.go:514
+#, c-format
+msgid "Unknown column shorthand char '%c' in '%s'"
 msgstr ""
 
-#: lxc/file.go:124
+#: lxc/file.go:596
 #, c-format
 msgid "Unknown file type '%s'"
 msgstr ""
 
-#: lxc/image.go:608
-#, c-format
-msgid "Uploaded: %s"
+#: lxc/config_device.go:649 lxc/config_device.go:650
+msgid "Unset container device configuration keys"
 msgstr ""
 
-#: lxc/action.go:38
-#, c-format
-msgid ""
-"Usage: lxc %s [--all] [<remote>:]<container> [[<remote>:]<container>...]\n"
-"\n"
-"%s%s"
+#: lxc/config.go:559 lxc/config.go:560
+msgid "Unset container or server configuration keys"
 msgstr ""
 
-#: lxc/help.go:45
-msgid "Usage: lxc <command> [options]"
+#: lxc/network.go:1050 lxc/network.go:1051
+msgid "Unset network configuration keys"
 msgstr ""
 
-#: lxc/alias.go:22
-msgid ""
-"Usage: lxc alias <subcommand> [options]\n"
-"\n"
-"Manage command aliases.\n"
-"\n"
-"lxc alias add <alias> <target>\n"
-"    Add a new alias <alias> pointing to <target>.\n"
-"\n"
-"lxc alias remove <alias>\n"
-"    Remove the alias <alias>.\n"
-"\n"
-"lxc alias list\n"
-"    List all the aliases.\n"
-"\n"
-"lxc alias rename <old alias> <new alias>\n"
-"    Rename remote <old alias> to <new alias>."
+#: lxc/profile.go:865 lxc/profile.go:866
+msgid "Unset profile configuration keys"
 msgstr ""
 
-#: lxc/cluster.go:23
-msgid ""
-"Usage: lxc cluster <subcommand> [options]\n"
-"\n"
-"Manage cluster nodes.\n"
-"\n"
-"lxc cluster list [<remote>:]\n"
-"    List all nodes in the cluster.\n"
-"\n"
-"lxc cluster show [<remote>:]<node>\n"
-"    Show details of a node.\n"
-"\n"
-"lxc cluster rename [<remote>:]<node> <new-name>\n"
-"    Rename a cluster node.\n"
-"\n"
-"lxc cluster delete [<remote>:]<node> [--force]\n"
-"    Delete a node from the cluster."
+#: lxc/storage.go:728 lxc/storage.go:729
+msgid "Unset storage pool configuration keys"
 msgstr ""
 
-#: lxc/config.go:85
-msgid ""
-"Usage: lxc config <subcommand> [options]\n"
-"\n"
-"Change container or server configuration options.\n"
-"\n"
-"*Container configuration*\n"
-"\n"
-"lxc config get [<remote>:][container] <key>\n"
-"    Get container or server configuration key.\n"
-"\n"
-"lxc config set [<remote>:][container] <key> <value>\n"
-"    Set container or server configuration key.\n"
-"\n"
-"lxc config unset [<remote>:][container] <key>\n"
-"    Unset container or server configuration key.\n"
-"\n"
-"lxc config show [<remote>:][container] [--expanded]\n"
-"    Show container or server configuration.\n"
-"\n"
-"lxc config edit [<remote>:][container]\n"
-"    Edit configuration, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"*Container metadata*\n"
-"\n"
-"lxc config metadata show [<remote>:][container]\n"
-"    Show the container metadata.yaml content.\n"
-"\n"
-"lxc config metadata edit [<remote>:][container]\n"
-"    Edit the container metadata.yaml, either by launching external editor or "
-"reading STDIN.\n"
-"\n"
-"*Container templates*\n"
-"\n"
-"lxc config template list [<remote>:][container]\n"
-"    List the names of template files for a container.\n"
-"\n"
-"lxc config template show [<remote>:][container] [template]\n"
-"    Show the content of a template file for a container.\n"
-"\n"
-"lxc config template create [<remote>:][container] [template]\n"
-"    Add an empty template file for a container.\n"
-"\n"
-"lxc config template edit [<remote>:][container] [template]\n"
-"    Edit the content of a template file for a container, either by launching "
-"external editor or reading STDIN.\n"
-"\n"
-"lxc config template delete [<remote>:][container] [template]\n"
-"    Delete a template file for a container.\n"
-"\n"
-"\n"
-"*Device management*\n"
-"\n"
-"lxc config device add [<remote>:]<container> <device> <type> [key=value...]\n"
-"    Add a device to a container.\n"
-"\n"
-"lxc config device get [<remote>:]<container> <device> <key>\n"
-"    Get a device property.\n"
-"\n"
-"lxc config device set [<remote>:]<container> <device> <key> <value>\n"
-"    Set a device property.\n"
-"\n"
-"lxc config device unset [<remote>:]<container> <device> <key>\n"
-"    Unset a device property.\n"
-"\n"
-"lxc config device override [<remote>:]<container> <device> [key=value...]\n"
-"    Copy a profile inherited device into local container config.\n"
-"\n"
-"lxc config device list [<remote>:]<container>\n"
-"    List devices for container.\n"
-"\n"
-"lxc config device show [<remote>:]<container>\n"
-"    Show full device details for container.\n"
-"\n"
-"lxc config device remove [<remote>:]<container> <name>...\n"
-"    Remove device from container.\n"
-"\n"
-"*Client trust store management*\n"
-"\n"
-"lxc config trust list [<remote>:]\n"
-"    List all trusted certs.\n"
-"\n"
-"lxc config trust add [<remote>:] <certfile.crt>\n"
-"    Add certfile.crt to trusted hosts.\n"
-"\n"
-"lxc config trust remove [<remote>:] [hostname|fingerprint]\n"
-"    Remove the cert from trusted hosts.\n"
-"\n"
-"*Examples*\n"
-"\n"
-"cat config.yaml | lxc config edit <container>\n"
-"    Update the container configuration from config.yaml.\n"
-"\n"
-"lxc config device add [<remote>:]container1 <device-name> disk source=/share/"
-"c1 path=opt\n"
-"    Will mount the host's /share/c1 onto /opt in the container.\n"
-"\n"
-"lxc config set [<remote>:]<container> limits.cpu 2\n"
-"    Will set a CPU limit of \"2\" for the container.\n"
-"\n"
-"lxc config set core.https_address [::]:8443\n"
-"    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
-"\n"
-"lxc config set core.trust_password blah\n"
-"    Will set the server's trust password to blah."
+#: lxc/storage_volume.go:1240 lxc/storage_volume.go:1241
+msgid "Unset storage volume configuration keys"
 msgstr ""
 
-#: lxc/console.go:31
-msgid ""
-"Usage: lxc console [<remote>:]<container> [-l]\n"
-"\n"
-"Interact with the container's console device and log."
+#: lxc/image.go:835
+#, c-format
+msgid "Uploaded: %s"
 msgstr ""
 
-#: lxc/copy.go:30
-msgid ""
-"Usage: lxc copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>] "
-"[--ephemeral|e] [--profile|-p <profile>...] [--config|-c <key=value>...] [--"
-"container-only] [--target <node>]\n"
-"\n"
-"Copy containers within or in between LXD instances."
+#: lxc/delete.go:47
+msgid "User aborted delete operation"
 msgstr ""
 
-#: lxc/delete.go:27
+#: lxc/utils/cancel.go:40
 msgid ""
-"Usage: lxc delete [<remote>:]<container>[/<snapshot>] "
-"[[<remote>:]<container>[/<snapshot>]...]\n"
-"\n"
-"Delete containers and snapshots."
+"User signaled us three times, exiting. The remote operation will keep "
+"running."
 msgstr ""
 
-#: lxc/exec.go:53
-msgid ""
-"Usage: lxc exec [<remote>:]<container> [-t] [-T] [-n] [--mode=auto|"
-"interactive|non-interactive] [--env KEY=VALUE...] [--] <command line>\n"
-"\n"
-"Execute commands in containers.\n"
-"\n"
-"The command is executed directly using exec, so there is no shell and shell "
-"patterns (variables, file redirects, ...)\n"
-"won't be understood. If you need a shell environment you need to execute the "
-"shell executable, passing the shell commands\n"
-"as arguments, for example:\n"
-"\n"
-"    lxc exec <container> -- sh -c \"cd /tmp && pwd\"\n"
-"\n"
-"Mode defaults to non-interactive, interactive mode is selected if both stdin "
-"AND stdout are terminals (stderr is ignored)."
+#: lxc/query.go:35
+msgid "Wait for the operation to complete"
 msgstr ""
 
-#: lxc/file.go:39
+#: lxc/restore.go:36
 msgid ""
-"Usage: lxc file <subcommand> [options]\n"
-"\n"
-"Manage files in containers.\n"
-"\n"
-"lxc file pull [-r|--recursive] [<remote>:]<container>/<path> "
-"[[<remote>:]<container>/<path>...] <target path>\n"
-"    Pull files from containers.\n"
-"\n"
-"lxc file push [-r|--recursive] [-p|--create-dirs] [--uid=UID] [--gid=GID] [--"
-"mode=MODE] <source path> [<source path>...] [<remote>:]<container>/<path>\n"
-"    Push files into containers.\n"
-"\n"
-"lxc file delete [<remote>:]<container>/<path> [[<remote>:]<container>/"
-"<path>...]\n"
-"    Delete files in containers.\n"
-"\n"
-"lxc file edit [<remote>:]<container>/<path>\n"
-"    Edit files in containers using the default text editor.\n"
-"\n"
-"*Examples*\n"
-"lxc file push /etc/hosts foo/etc/hosts\n"
-"   To push /etc/hosts into the container \"foo\".\n"
-"\n"
-"lxc file pull foo/etc/hosts .\n"
-"   To pull /etc/hosts from the container and write it to the current "
-"directory."
+"Whether or not to restore the container's running state from snapshot (if "
+"available)"
 msgstr ""
 
-#: lxc/finger.go:15
-msgid ""
-"Usage: lxc finger [<remote>:]\n"
-"\n"
-"Check if the LXD server is alive."
+#: lxc/snapshot.go:31
+msgid "Whether or not to snapshot the container's running state"
 msgstr ""
 
-#: lxc/help.go:22
-msgid ""
-"Usage: lxc help [--all]\n"
-"\n"
-"Help page for the LXD client."
+#: lxc/network.go:765 lxc/operation.go:140 lxc/remote.go:436 lxc/remote.go:441
+msgid "YES"
 msgstr ""
 
-#: lxc/image.go:73
-msgid ""
-"Usage: lxc image <subcommand> [options]\n"
-"\n"
-"Manipulate container images.\n"
-"\n"
-"In LXD containers are created from images. Those images were themselves\n"
-"either generated from an existing container or downloaded from an image\n"
-"server.\n"
-"\n"
-"When using remote images, LXD will automatically cache images for you\n"
-"and remove them upon expiration.\n"
-"\n"
-"The image unique identifier is the hash (sha-256) of its representation\n"
-"as a compressed tarball (or for split images, the concatenation of the\n"
-"metadata and rootfs tarballs).\n"
-"\n"
-"Images can be referenced by their full hash, shortest unique partial\n"
-"hash or alias name (if one is set).\n"
-"\n"
-"\n"
-"lxc image import <tarball>|<dir> [<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) or an image directory into the LXD "
-"image store.\n"
-"    Directory import is only available on Linux and must be performed as "
-"root.\n"
-"\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"
-"    Delete one or more images from the LXD image store.\n"
-"\n"
-"lxc image refresh [<remote>:]<image> [[<remote>:]<image>...]\n"
-"    Refresh one or more images from its parent remote.\n"
-"\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"
-"    The target may be an existing directory, file name, or \"-\" to specify\n"
-"    stdout.  The target MUST be a directory when exporting a split image.\n"
-"    If the target is a directory, the image's name (each part's name for\n"
-"    split images) as found in the database will be used for the exported\n"
-"    image.  If the target is a file (not a directory and not stdout), then\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"
-"    Print everything LXD knows about a given image.\n"
-"\n"
-"lxc image list [<remote>:] [filter] [--format csv|json|table|yaml] [-c "
-"<columns>]\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"
-"    The -c option takes a (optionally comma-separated) list of arguments "
-"that\n"
-"    control which image attributes to output when displaying in table or "
-"csv\n"
-"    format.\n"
-"\n"
-"    Default column layout is: lfpdasu\n"
-"\n"
-"    Column shorthand chars:\n"
-"\n"
-"        l - Shortest image alias (and optionally number of other aliases)\n"
-"\n"
-"        L - Newline-separated list of all image aliases\n"
-"\n"
-"        f - Fingerprint\n"
-"\n"
-"        p - Whether image is public\n"
-"\n"
-"        d - Description\n"
-"\n"
-"        a - Architecture\n"
-"\n"
-"        s - Size\n"
-"\n"
-"        u - Upload date\n"
-"\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"
-"    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"
-"    Create a new alias for an existing image.\n"
-"\n"
-"lxc image alias rename [<remote>:]<alias> <new-name>\n"
-"    Rename an alias.\n"
-"\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."
+#: lxc/exec.go:122
+msgid "You can't pass -t and -T at the same time"
 msgstr ""
 
-#: lxc/info.go:27
+#: lxc/exec.go:126
+msgid "You can't pass -t or -T at the same time as --mode"
+msgstr ""
+
+#: lxc/copy.go:78
+msgid "You must specify a destination container name when using --target"
+msgstr ""
+
+#: lxc/copy.go:73 lxc/move.go:188
+msgid "You must specify a source container name"
+msgstr ""
+
+#: lxc/copy.go:68 lxc/move.go:91 lxc/move.go:183
+msgid "You must use the same source and destination remote when using --target"
+msgstr ""
+
+#: lxc/alias.go:53
+msgid "add <alias> <target>"
+msgstr ""
+
+#: lxc/config_trust.go:57
+msgid "add [<remote>:] <cert>"
+msgstr ""
+
+#: lxc/profile.go:100
+msgid "add [<remote>:]<container> <profile>"
+msgstr ""
+
+#: lxc/config_device.go:74
+msgid "add [<remote>:]<container|profile> <device> <type> [key=value...]"
+msgstr ""
+
+#: lxc/remote.go:82
+msgid "add [<remote>] <IP|FQDN|URL>"
+msgstr ""
+
+#: lxc/alias.go:21 lxc/image_alias.go:24
+msgid "alias"
+msgstr ""
+
+#: lxc/profile.go:160
+msgid "assign [<remote>:]<container> <profiles>"
+msgstr ""
+
+#: lxc/network.go:102
+msgid "attach [<remote>:]<network> <container> [device name] [interface name]"
+msgstr ""
+
+#: lxc/storage_volume.go:120
+msgid "attach [<remote>:]<pool> <volume> <container> [device name] <path>"
+msgstr ""
+
+#: lxc/storage_volume.go:199
 msgid ""
-"Usage: lxc info [<remote>:][<container>] [--show-log] [--resources]\n"
-"\n"
-"Show container or server information.\n"
-"\n"
-"lxc info [<remote>:]<container> [--show-log]\n"
-"    For container information.\n"
-"\n"
-"lxc info [<remote>:] [--resources]\n"
-"    For LXD server information."
+"attach-profile [<remote:>]<pool> <volume> <profile> [device name] <path>"
 msgstr ""
 
-#: lxc/init.go:79
+#: lxc/network.go:175
 msgid ""
-"Usage: lxc init [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
-"profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
-"<node>]\n"
-"\n"
-"Create containers from images.\n"
-"\n"
-"Not specifying -p will result in the default profile.\n"
-"Specifying \"-p\" with no argument will result in no profile.\n"
-"\n"
-"Examples:\n"
-"    lxc init ubuntu:16.04 u1"
+"attach-profile [<remote>:]<network> <profile> [device name] [interface name]"
+msgstr ""
+
+#: lxc/cluster.go:24
+msgid "cluster"
+msgstr ""
+
+#: lxc/config.go:27
+msgid "config"
+msgstr ""
+
+#: lxc/console.go:30
+msgid "console [<remote>:]<container>"
+msgstr ""
+
+#: lxc/storage_volume.go:280
+msgid "copy <pool>/<volume> <pool>/<volume>"
+msgstr ""
+
+#: lxc/image.go:128
+msgid "copy [<remote>:]<image> <remote>:"
+msgstr ""
+
+#: lxc/profile.go:238
+msgid "copy [<remote>:]<profile> [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/copy.go:32
+msgid "copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>]"
+msgstr ""
+
+#: lxc/image_alias.go:57
+msgid "create [<remote>:]<alias> <fingerprint>"
+msgstr ""
+
+#: lxc/config_template.go:65
+msgid "create [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/network.go:248
+msgid "create [<remote>:]<network> [key=value...]"
+msgstr ""
+
+#: lxc/storage.go:87
+msgid "create [<remote>:]<pool> <driver> [key=value]..."
+msgstr ""
+
+#: lxc/storage_volume.go:424
+msgid "create [<remote>:]<pool> <volume> [key=value]..."
+msgstr ""
+
+#: lxc/profile.go:295
+msgid "create [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/remote.go:453
+msgid "default"
+msgstr ""
+
+#: lxc/image_alias.go:103
+msgid "delete [<remote>:]<alias>"
+msgstr ""
+
+#: lxc/config_template.go:107
+msgid "delete [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/file.go:70
+msgid "delete [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...]"
+msgstr ""
+
+#: lxc/delete.go:27
+msgid ""
+"delete [<remote>:]<container>[/<snapshot>] [[<remote>:]<container>[/"
+"<snapshot>]...]"
+msgstr ""
+
+#: lxc/image.go:258
+msgid "delete [<remote>:]<image> [[<remote>:]<image>...]"
+msgstr ""
+
+#: lxc/network.go:317
+msgid "delete [<remote>:]<network>"
+msgstr ""
+
+#: lxc/operation.go:51
+msgid "delete [<remote>:]<operation>"
+msgstr ""
+
+#: lxc/storage.go:158
+msgid "delete [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:498
+msgid "delete [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:345
+msgid "delete [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/storage.go:431
+msgid "description"
+msgstr ""
+
+#: lxc/network.go:365
+msgid "detach [<remote>:]<network> <container> [device name]"
+msgstr ""
+
+#: lxc/storage_volume.go:559
+msgid "detach [<remote>:]<pool> <volume> <container> [device name]"
+msgstr ""
+
+#: lxc/storage_volume.go:641
+msgid "detach-profile [<remote:>]<pool> <volume> <profile> [device name]"
+msgstr ""
+
+#: lxc/network.go:450
+msgid "detach-profile [<remote>:]<network> <container> [device name]"
+msgstr ""
+
+#: lxc/config_device.go:22
+msgid "device"
+msgstr ""
+
+#: lxc/init.go:223
+msgid "didn't get any affected image, container or snapshot from server"
+msgstr ""
+
+#: lxc/image.go:819
+msgid "disabled"
+msgstr ""
+
+#: lxc/storage.go:430
+msgid "driver"
+msgstr ""
+
+#: lxc/config_template.go:150
+msgid "edit [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/file.go:120
+msgid "edit [<remote>:]<container>/<path>"
+msgstr ""
+
+#: lxc/image.go:310
+msgid "edit [<remote>:]<image>"
+msgstr ""
+
+#: lxc/network.go:535
+msgid "edit [<remote>:]<network>"
+msgstr ""
+
+#: lxc/storage.go:206
+msgid "edit [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:722
+msgid "edit [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:394
+msgid "edit [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/config.go:86 lxc/config_metadata.go:52
+msgid "edit [<remote>:][container]"
+msgstr ""
+
+#: lxc/image.go:821
+msgid "enabled"
+msgstr ""
+
+#: lxc/action.go:234
+#, c-format
+msgid "error: %v"
+msgstr ""
+
+#: lxc/exec.go:37
+msgid "exec [<remote>:]<container> [flags] [--] <command line>"
+msgstr ""
+
+#: lxc/image.go:433
+msgid "export [<remote>:]<image> [target]"
+msgstr ""
+
+#: lxc/file.go:38
+msgid "file"
+msgstr ""
+
+#: lxc/config_device.go:177
+msgid "get [<remote>:]<container|profile> <device> <key>"
+msgstr ""
+
+#: lxc/network.go:658
+msgid "get [<remote>:]<network> <key>"
+msgstr ""
+
+#: lxc/storage.go:326
+msgid "get [<remote>:]<pool> <key>"
+msgstr ""
+
+#: lxc/storage_volume.go:851
+msgid "get [<remote>:]<pool> <volume> <key>"
+msgstr ""
+
+#: lxc/profile.go:518
+msgid "get [<remote>:]<profile> <key>"
+msgstr ""
+
+#: lxc/config.go:287
+msgid "get [<remote>:][container] <key>"
+msgstr ""
+
+#: lxc/remote.go:378
+msgid "get-default"
+msgstr ""
+
+#: lxc/image.go:40
+msgid "image"
+msgstr ""
+
+#: lxc/image.go:569
+msgid ""
+"import <tarball>|<directory>|<URL> [<rootfs tarball>] [<remote>:] "
+"[key=value...]"
+msgstr ""
+
+#: lxc/storage.go:428
+msgid "info"
+msgstr ""
+
+#: lxc/image.go:774
+msgid "info [<remote>:]<image>"
+msgstr ""
+
+#: lxc/storage.go:381
+msgid "info [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/info.go:27
+msgid "info [<remote>:][<container>]"
+msgstr ""
+
+#: lxc/init.go:33
+msgid "init [<remote>:]<image> [<remote>:][<name>]"
 msgstr ""
 
 #: lxc/launch.go:20
+msgid "launch [<remote>:]<image> [<remote>:][<name>]"
+msgstr ""
+
+#: lxc/alias.go:96 lxc/remote.go:411
+msgid "list"
+msgstr ""
+
+#: lxc/cluster.go:56 lxc/config_trust.go:112 lxc/network.go:716
+#: lxc/operation.go:95 lxc/profile.go:565 lxc/storage.go:488
+msgid "list [<remote>:]"
+msgstr ""
+
+#: lxc/image.go:887
+msgid "list [<remote>:] [filter]"
+msgstr ""
+
+#: lxc/image_alias.go:146
+msgid "list [<remote>:] [filters...]"
+msgstr ""
+
+#: lxc/list.go:45
+msgid "list [<remote>:] [filters]"
+msgstr ""
+
+#: lxc/config_template.go:234
+msgid "list [<remote>:]<container>"
+msgstr ""
+
+#: lxc/config_device.go:249
+msgid "list [<remote>:]<container|profile>"
+msgstr ""
+
+#: lxc/storage_volume.go:915
+msgid "list [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/network.go:806
+msgid "list-leases [<remote>:]<network>"
+msgstr ""
+
+#: lxc/alias.go:57
 msgid ""
-"Usage: lxc launch [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
-"profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
-"<node>]\n"
-"\n"
-"Create and start containers from images.\n"
-"\n"
-"Not specifying -p will result in the default profile.\n"
-"Specifying \"-p\" with no argument will result in no profile.\n"
-"\n"
-"Examples:\n"
-"    lxc launch ubuntu:16.04 u1"
+"lxc alias add list list -c ns46S\n"
+"    Overwrite the \"list\" command to pass -c ns46S."
 msgstr ""
 
-#: lxc/list.go:44
+#: lxc/alias.go:200
 msgid ""
-"Usage: lxc list [<remote>:] [filters] [--format csv|json|table|yaml] [-c "
-"<columns>] [--fast]\n"
-"\n"
-"List the existing containers.\n"
-"\n"
-"Default column layout: ns46tS\n"
-"Fast column layout: nsacPt\n"
-"\n"
-"*Filters*\n"
-"A single keyword like \"web\" which will list any container with a name "
-"starting by \"web\".\n"
-"\n"
-"A regular expression on the container name. (e.g. .*web.*01$).\n"
-"\n"
-"A key/value pair referring to a configuration item. For those, the namespace "
-"can be abbreviated to the smallest unambiguous identifier.\n"
-"\t- \"user.blah=abc\" will list all containers with the \"blah\" user "
-"property set to \"abc\".\n"
-"\n"
-"\t- \"u.blah=abc\" will do the same\n"
-"\n"
-"\t- \"security.privileged=true\" will list all privileged containers\n"
-"\n"
-"\t- \"s.privileged=true\" will do the same\n"
-"\n"
-"A regular expression matching a configuration item or its value. (e.g. "
-"volatile.eth0.hwaddr=00:16:3e:.*).\n"
-"\n"
-"*Columns*\n"
-"The -c option takes a comma separated list of arguments that control\n"
-"which container attributes to output when displaying in table or csv\n"
-"format.\n"
-"\n"
-"Column arguments are either pre-defined shorthand chars (see below),\n"
-"or (extended) config keys.\n"
-"\n"
-"Commas between consecutive shorthand chars are optional.\n"
-"\n"
-"Pre-defined column shorthand chars:\n"
-"\n"
-"\t4 - IPv4 address\n"
-"\n"
-"\t6 - IPv6 address\n"
-"\n"
-"\ta - Architecture\n"
-"\n"
-"\tb - Storage pool\n"
-"\n"
-"\tc - Creation date\n"
-"\n"
-"\td - Description\n"
-"\n"
-"\tl - Last used date\n"
-"\n"
-"\tn - Name\n"
-"\n"
-"\tN - Number of Processes\n"
-"\n"
-"\tp - PID of the container's init process\n"
-"\n"
-"\tP - Profiles\n"
-"\n"
-"\ts - State\n"
-"\n"
-"\tS - Number of snapshots\n"
-"\n"
-"\tt - Type (persistent or ephemeral)\n"
-"\n"
-"\tL - Location of the container (e.g. its node)\n"
-"\n"
-"Custom columns are defined with \"key[:name][:maxWidth]\":\n"
-"\n"
-"\tKEY: The (extended) config key to display\n"
-"\n"
-"\tNAME: Name to display in the column header.\n"
-"\tDefaults to the key if not specified or empty.\n"
-"\n"
-"\tMAXWIDTH: Max width of the column (longer results are truncated).\n"
-"\tDefaults to -1 (unlimited). Use 0 to limit to the column header size.\n"
-"\n"
-"*Examples*\n"
-"lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:"
-"MAC\n"
-"\tShows a list of containers using the \"NAME\", \"BASE IMAGE\", \"STATE\", "
-"\"IPV4\",\n"
-"\t\"IPV6\" and \"MAC\" columns.\n"
+"lxc alias remove my-list\n"
+"    Remove the \"my-list\" alias."
+msgstr ""
+
+#: lxc/alias.go:149
+msgid ""
+"lxc alias rename list my-list\n"
+"    Rename existing alias \"list\" to \"my-list\"."
+msgstr ""
+
+#: lxc/config_device.go:78
+msgid ""
+"lxc config device add [<remote>:]container1 <device-name> disk source=/share/"
+"c1 path=opt\n"
+"    Will mount the host's /share/c1 onto /opt in the container."
+msgstr ""
+
+#: lxc/config.go:90
+msgid ""
+"lxc config edit <container> < container.yaml\n"
+"    Update the container configuration from config.yaml."
+msgstr ""
+
+#: lxc/config.go:357
+msgid ""
+"lxc config set [<remote>:]<container> limits.cpu 2\n"
+"    Will set a CPU limit of \"2\" for the container.\n"
 "\n"
-"\t\"BASE IMAGE\" and \"MAC\" are custom columns generated from container "
-"configuration keys.\n"
+"lxc config set core.https_address [::]:8443\n"
+"    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
 "\n"
-"lxc list -c ns,user.comment:comment\n"
-"\tList images with their running state and user comment. "
+"lxc config set core.trust_password blah\n"
+"    Will set the server's trust password to blah."
 msgstr ""
 
-#: lxc/manpage.go:20
+#: lxc/file.go:187
 msgid ""
-"Usage: lxc manpage <directory>\n"
-"\n"
-"Generate all the LXD manpages."
+"lxc file pull foo/etc/hosts .\n"
+"   To pull /etc/hosts from the container and write it to the current "
+"directory."
 msgstr ""
 
-#: lxc/monitor.go:49
+#: lxc/file.go:326
 msgid ""
-"Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
-"\n"
-"Monitor a local or remote LXD server.\n"
+"lxc file push /etc/hosts foo/etc/hosts\n"
+"   To push /etc/hosts into the container \"foo\"."
+msgstr ""
+
+#: lxc/image.go:314
+msgid ""
+"lxc image edit <image>\n"
+"    Launch a text editor to edit the properties\n"
 "\n"
-"By default the monitor will listen to all message types.\n"
+"lxc image edit <image> < image.yaml\n"
+"    Load the image properties from a YAML file"
+msgstr ""
+
+#: lxc/info.go:31
+msgid ""
+"lxc info [<remote>:]<container> [--show-log]\n"
+"    For container information.\n"
 "\n"
-"Message types to listen for can be specified with --type.\n"
+"lxc info [<remote>:] [--resources]\n"
+"    For LXD server information."
+msgstr ""
+
+#: lxc/init.go:37
+msgid "lxc init ubuntu:16.04 u1"
+msgstr ""
+
+#: lxc/launch.go:24
+msgid "lxc launch ubuntu:16.04 u1"
+msgstr ""
+
+#: lxc/list.go:103
+msgid ""
+"lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:"
+"MAC\n"
+"  Show containers using the \"NAME\", \"BASE IMAGE\", \"STATE\", \"IPV4\", "
+"\"IPV6\" and \"MAC\" columns.\n"
+"  \"BASE IMAGE\" and \"MAC\" are custom columns generated from container "
+"configuration keys.\n"
 "\n"
-"*Examples*\n"
+"lxc list -c ns,user.comment:comment\n"
+"  List images with their running state and user comment."
+msgstr ""
+
+#: lxc/monitor.go:35
+msgid ""
 "lxc monitor --type=logging\n"
 "    Only show log messages.\n"
 "\n"
 "lxc monitor --pretty --type=logging --loglevel=info\n"
 "    Show a pretty log of messages with info level or higher.\n"
+"\n"
+"lxc monitor --type=lifecycle\n"
+"    Only show lifecycle events."
 msgstr ""
 
-#: lxc/move.go:26
+#: lxc/move.go:33
 msgid ""
-"Usage: lxc move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
-"<snapshot>]] [--container-only] [--target <node>]\n"
-"\n"
-"Move containers within or in between LXD instances.\n"
-"\n"
 "lxc move [<remote>:]<source container> [<remote>:][<destination container>] "
 "[--container-only]\n"
 "    Move a container between two hosts, renaming it if destination name "
@@ -1946,160 +2837,14 @@ msgid ""
 "    Rename a snapshot."
 msgstr ""
 
-#: lxc/network.go:52
-msgid ""
-"Usage: lxc network <subcommand> [options]\n"
-"\n"
-"Manage and attach containers to networks.\n"
-"\n"
-"lxc network list [<remote>:]\n"
-"    List available networks.\n"
-"\n"
-"lxc network list-leases [<remote>:]<network>\n"
-"    List the DHCP leases for the network\n"
-"\n"
-"lxc network show [<remote>:]<network> [--target <node>]\n"
-"    Show details of a network.\n"
-"\n"
-"lxc network create [<remote>:]<network> [key=value...] [--target <node>]\n"
-"    Create a network.\n"
-"\n"
-"lxc network get [<remote>:]<network> <key> [--target <node>]\n"
-"    Get network configuration.\n"
-"\n"
-"lxc network set [<remote>:]<network> <key> <value>\n"
-"    Set network configuration.\n"
-"\n"
-"lxc network unset [<remote>:]<network> <key>\n"
-"    Unset network configuration.\n"
-"\n"
-"lxc network delete [<remote>:]<network>\n"
-"    Delete a network.\n"
-"\n"
-"lxc network edit [<remote>:]<network>\n"
-"    Edit network, either by launching external editor or reading STDIN.\n"
-"\n"
-"lxc network rename [<remote>:]<network> <new-name>\n"
-"    Rename a network.\n"
-"\n"
-"lxc network attach [<remote>:]<network> <container> [device name] [interface "
-"name]\n"
-"    Attach a network interface connecting the network to a specified "
-"container.\n"
-"\n"
-"lxc network attach-profile [<remote>:]<network> <profile> [device name] "
-"[interface name]\n"
-"    Attach a network interface connecting the network to a specified "
-"profile.\n"
-"\n"
-"lxc network detach [<remote>:]<network> <container> [device name]\n"
-"    Remove a network interface connecting the network to a specified "
-"container.\n"
-"\n"
-"lxc network detach-profile [<remote>:]<network> <container> [device name]\n"
-"    Remove a network interface connecting the network to a specified "
-"profile.\n"
-"\n"
-"*Examples*\n"
-"cat network.yaml | lxc network edit <network>\n"
-"    Update a network using the content of network.yaml"
-msgstr ""
-
-#: lxc/operation.go:25
+#: lxc/operation.go:176
 msgid ""
-"Usage: lxc operation <subcommand> [options]\n"
-"\n"
-"List, show and delete background operations.\n"
-"\n"
-"lxc operation list [<remote>:]\n"
-"    List background operations.\n"
-"\n"
-"lxc operation show [<remote>:]<operation>\n"
-"    Show details on a background operation.\n"
-"\n"
-"lxc operation delete [<remote>:]<operation>\n"
-"    Delete a background operation (will attempt to cancel).\n"
-"\n"
-"*Examples*\n"
 "lxc operation show 344a79e4-d88a-45bf-9c39-c72c26f6ab8a\n"
 "    Show details on that operation UUID"
 msgstr ""
 
-#: lxc/profile.go:51
+#: lxc/profile.go:165
 msgid ""
-"Usage: lxc profile <subcommand> [options]\n"
-"\n"
-"Manage container configuration profiles.\n"
-"\n"
-"*Profile configuration*\n"
-"lxc profile list [<remote>:]\n"
-"    List available profiles.\n"
-"\n"
-"lxc profile show [<remote>:]<profile>\n"
-"    Show details of a profile.\n"
-"\n"
-"lxc profile create [<remote>:]<profile>\n"
-"    Create a profile.\n"
-"\n"
-"lxc profile copy [<remote>:]<profile> [<remote>:]<profile>\n"
-"    Copy the profile.\n"
-"\n"
-"lxc profile get [<remote>:]<profile> <key>\n"
-"    Get profile configuration.\n"
-"\n"
-"lxc profile set [<remote>:]<profile> <key> <value>\n"
-"    Set profile configuration.\n"
-"\n"
-"lxc profile unset [<remote>:]<profile> <key>\n"
-"    Unset profile configuration.\n"
-"\n"
-"lxc profile delete [<remote>:]<profile>\n"
-"    Delete a profile.\n"
-"\n"
-"lxc profile edit [<remote>:]<profile>\n"
-"    Edit profile, either by launching external editor or reading STDIN.\n"
-"\n"
-"lxc profile rename [<remote>:]<profile> <new-name>\n"
-"    Rename a profile.\n"
-"\n"
-"*Profile assignment*\n"
-"lxc profile assign [<remote>:]<container> <profiles>\n"
-"    Replace the current set of profiles for the container by the one "
-"provided.\n"
-"\n"
-"lxc profile add [<remote>:]<container> <profile>\n"
-"    Add a profile to a container\n"
-"\n"
-"lxc profile remove [<remote>:]<container> <profile>\n"
-"    Remove the profile from a container\n"
-"\n"
-"*Device management*\n"
-"lxc profile device list [<remote>:]<profile>\n"
-"    List devices in the given profile.\n"
-"\n"
-"lxc profile device show [<remote>:]<profile>\n"
-"    Show full device details in the given profile.\n"
-"\n"
-"lxc profile device remove [<remote>:]<profile> <name>\n"
-"    Remove a device from a profile.\n"
-"\n"
-"lxc profile device get [<remote>:]<profile> <name> <key>\n"
-"    Get a device property.\n"
-"\n"
-"lxc profile device set [<remote>:]<profile> <name> <key> <value>\n"
-"    Set a device property.\n"
-"\n"
-"lxc profile device unset [<remote>:]<profile> <name> <key>\n"
-"    Unset a device property.\n"
-"\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.\n"
-"\n"
-"*Examples*\n"
-"cat profile.yaml | lxc profile edit <profile>\n"
-"    Update a profile using the content of profile.yaml\n"
-"\n"
 "lxc profile assign foo default,bar\n"
 "    Set the profiles for \"foo\" to \"default\" and \"bar\".\n"
 "\n"
@@ -2110,72 +2855,26 @@ msgid ""
 "    Remove all profile from \"foo\""
 msgstr ""
 
-#: lxc/publish.go:28
+#: lxc/profile.go:398
 msgid ""
-"Usage: lxc publish [<remote>:]<container>[/<snapshot>] [<remote>:] [--"
-"alias=ALIAS...] [prop-key=prop-value...]\n"
-"\n"
-"Publish containers as images."
+"lxc profile edit <profile> < profile.yaml\n"
+"    Update a profile using the content of profile.yaml"
 msgstr ""
 
-#: lxc/query.go:25
+#: lxc/query.go:29
 msgid ""
-"Usage: lxc query [-X <action>] [-d <data>] [--wait] [--raw] [<remote>:]<API "
-"path>\n"
-"\n"
-"Send a raw query to LXD.\n"
-"\n"
-"*Examples*\n"
 "lxc query -X DELETE --wait /1.0/containers/c1\n"
 "    Delete local container \"c1\"."
 msgstr ""
 
-#: lxc/remote.go:40
-msgid ""
-"Usage: lxc remote <subcommand> [options]\n"
-"\n"
-"Manage the list of remote LXD servers.\n"
-"\n"
-"lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--"
-"password=PASSWORD] [--public] [--protocol=PROTOCOL] [--auth-type=AUTH_TYPE]\n"
-"    Add the remote <remote> at <url>.\n"
-"\n"
-"lxc remote remove <remote>\n"
-"    Remove the remote <remote>.\n"
-"\n"
-"lxc remote list\n"
-"    List all remotes.\n"
-"\n"
-"lxc remote rename <old name> <new name>\n"
-"    Rename remote <old name> to <new name>.\n"
-"\n"
-"lxc remote set-url <remote> <url>\n"
-"    Update <remote>'s url to <url>.\n"
-"\n"
-"lxc remote set-default <remote>\n"
-"    Set the default remote.\n"
-"\n"
-"lxc remote get-default\n"
-"    Print the default remote."
-msgstr ""
-
-#: lxc/rename.go:18
+#: lxc/snapshot.go:26
 msgid ""
-"Usage: lxc rename [<remote>:]<container>[/<snapshot>] [<container>[/"
-"<snapshot>]]\n"
-"\n"
-"Rename a container or snapshot."
+"lxc snapshot u1 snap0\n"
+"    Create a snapshot of \"u1\" called \"snap0\"."
 msgstr ""
 
-#: lxc/restore.go:22
+#: lxc/restore.go:28
 msgid ""
-"Usage: lxc restore [<remote>:]<container> <snapshot> [--stateful]\n"
-"\n"
-"Restore containers from snapshots.\n"
-"\n"
-"If --stateful is passed, then the running state will be restored too.\n"
-"\n"
-"*Examples*\n"
 "lxc snapshot u1 snap0\n"
 "    Create the snapshot.\n"
 "\n"
@@ -2183,121 +2882,20 @@ msgid ""
 "    Restore the snapshot."
 msgstr ""
 
-#: lxc/snapshot.go:19
+#: lxc/storage.go:210
 msgid ""
-"Usage: lxc snapshot [<remote>:]<container> <snapshot name> [--stateful]\n"
-"\n"
-"Create container snapshots.\n"
-"\n"
-"When --stateful is used, LXD attempts to checkpoint the container's\n"
-"running state, including process memory state, TCP connections, ...\n"
-"\n"
-"*Examples*\n"
-"lxc snapshot u1 snap0\n"
-"    Create a snapshot of \"u1\" called \"snap0\"."
+"lxc storage edit [<remote>:]<pool> < pool.yaml\n"
+"    Update a storage pool using the content of pool.yaml."
 msgstr ""
 
-#: lxc/storage.go:67
+#: lxc/storage_volume.go:726
+msgid ""
+"lxc storage volume edit [<remote>:]<pool> <volume> < volume.yaml\n"
+"    Update a storage volume using the content of pool.yaml."
+msgstr ""
+
+#: lxc/storage_volume.go:1168
 msgid ""
-"Usage: lxc storage <subcommand> [options]\n"
-"\n"
-"Manage storage pools and volumes.\n"
-"\n"
-"*Storage pools*\n"
-"lxc storage list [<remote>:]\n"
-"    List available storage pools.\n"
-"\n"
-"lxc storage show [<remote>:]<pool> [--resources] [--target <node>]\n"
-"    Show details of a storage pool.\n"
-"\n"
-"lxc storage info [<remote>:]<pool> [--bytes]\n"
-"    Show information of a storage pool in yaml format.\n"
-"\n"
-"lxc storage create [<remote>:]<pool> <driver> [key=value]... [--target "
-"<node>]\n"
-"    Create a storage pool.\n"
-"\n"
-"lxc storage get [<remote>:]<pool> <key>\n"
-"    Get storage pool configuration.\n"
-"\n"
-"lxc storage set [<remote>:]<pool> <key> <value>\n"
-"    Set storage pool configuration.\n"
-"\n"
-"lxc storage unset [<remote>:]<pool> <key>\n"
-"    Unset storage pool configuration.\n"
-"\n"
-"lxc storage delete [<remote>:]<pool>\n"
-"    Delete a storage pool.\n"
-"\n"
-"lxc storage edit [<remote>:]<pool>\n"
-"    Edit storage pool, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"*Storage volumes*\n"
-"lxc storage volume list [<remote>:]<pool>\n"
-"    List available storage volumes on a storage pool.\n"
-"\n"
-"lxc storage volume show [<remote>:]<pool> <volume> [--target <node>]\n"
-"   Show details of a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume create [<remote>:]<pool> <volume> [key=value]... [--"
-"target <node>]\n"
-"    Create a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume rename [<remote>:]<pool> <old name> <new name> [--target "
-"<node>]\n"
-"    Rename a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume get [<remote>:]<pool> <volume> <key> [--target <node>]\n"
-"    Get storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume set [<remote>:]<pool> <volume> <key> <value> [--target "
-"<node>]\n"
-"    Set storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume unset [<remote>:]<pool> <volume> <key> [--target <node>]\n"
-"    Unset storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume delete [<remote>:]<pool> <volume> [--target <node>]\n"
-"    Delete a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume edit [<remote>:]<pool> <volume> [--target <node>]\n"
-"    Edit storage volume, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"lxc storage volume attach [<remote>:]<pool> <volume> <container> [device "
-"name] <path>\n"
-"    Attach a storage volume to the specified container.\n"
-"\n"
-"lxc storage volume attach-profile [<remote:>]<pool> <volume> <profile> "
-"[device name] <path>\n"
-"    Attach a storage volume to the specified profile.\n"
-"\n"
-"lxc storage volume detach [<remote>:]<pool> <volume> <container> [device "
-"name]\n"
-"    Detach a storage volume from the specified container.\n"
-"\n"
-"lxc storage volume detach-profile [<remote:>]<pool> <volume> <profile> "
-"[device name]\n"
-"\tDetach a storage volume from the specified profile.\n"
-"\n"
-"lxc storage volume copy <pool>/<volume> <pool>/<volume> [--config|-c "
-"<key=value>...]\n"
-"    Copy an existing volume to a new volume at the specified pool.\n"
-"\n"
-"lxc storage volume move [<pool>/]<volume> [<pool>/]<volume>\n"
-"    Move an existing volume to the specified pool.\n"
-"\n"
-"Unless specified through a prefix, all volume operations affect \"custom"
-"\" (user created) volumes.\n"
-"\n"
-"*Examples*\n"
-"cat pool.yaml | lxc storage edit [<remote>:]<pool>\n"
-"    Update a storage pool using the content of pool.yaml.\n"
-"\n"
-"cat pool.yaml | lxc storage volume edit [<remote>:]<pool> <volume>\n"
-"    Update a storage volume using the content of pool.yaml.\n"
-"\n"
 "lxc storage volume show default data\n"
 "    Will show the properties of a custom volume called \"data\" in the "
 "\"default\" pool.\n"
@@ -2307,191 +2905,303 @@ msgid ""
 "\" in the \"default\" pool."
 msgstr ""
 
-#: lxc/version.go:18
+#: lxc/config_metadata.go:27
+msgid "metadata"
+msgstr ""
+
+#: lxc/monitor.go:29
+msgid "monitor [<remote>:]"
+msgstr ""
+
+#: lxc/storage_volume.go:991
+msgid "move [<pool>/]<volume> [<pool>/]<volume>"
+msgstr ""
+
+#: lxc/move.go:28
 msgid ""
-"Usage: lxc version\n"
-"\n"
-"Print the version number of this client tool."
+"move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
+"<snapshot>]]"
 msgstr ""
 
-#: lxc/delete.go:46
-msgid "User aborted delete operation."
+#: lxc/storage.go:429
+msgid "name"
 msgstr ""
 
-#: lxc/utils/cancel.go:40
+#: lxc/network.go:30
+msgid "network"
+msgstr ""
+
+#: lxc/image.go:809 lxc/image.go:814 lxc/image.go:977
+msgid "no"
+msgstr ""
+
+#: lxc/remote.go:253
+msgid "ok (y/n)?"
+msgstr ""
+
+#: lxc/operation.go:23
+msgid "operation"
+msgstr ""
+
+#: lxc/config_device.go:316
+msgid "override [<remote>:]<container> <device> [key=value...]"
+msgstr ""
+
+#: lxc/action.go:47
+msgid "pause [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/config.go:52
+msgid "please use `lxc profile`"
+msgstr ""
+
+#: lxc/profile.go:28
+msgid "profile"
+msgstr ""
+
+#: lxc/publish.go:32
 msgid ""
-"User signaled us three times, exiting. The remote operation will keep "
-"running."
+"publish [<remote>:]<container>[/<snapshot>] [<remote>:] [flags] [prop-"
+"key=prop-value...]"
 msgstr ""
 
-#: lxc/query.go:36
-msgid "Wait for the operation to complete"
+#: lxc/file.go:183
+msgid ""
+"pull [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...] "
+"<target path>"
 msgstr ""
 
-#: lxc/restore.go:38
+#: lxc/file.go:322
 msgid ""
-"Whether or not to restore the container's running state from snapshot (if "
-"available)"
+"push <source path> [<remote>:]<container>/<path> [[<remote>:]<container>/"
+"<path>...]"
 msgstr ""
 
-#: lxc/snapshot.go:33
-msgid "Whether or not to snapshot the container's running state"
+#: lxc/query.go:25
+msgid "query [<remote>:]<API path>"
 msgstr ""
 
-#: lxc/network.go:560 lxc/operation.go:141 lxc/remote.go:382 lxc/remote.go:387
-msgid "YES"
+#: lxc/image.go:1210
+msgid "refresh [<remote>:]<image> [[<remote>:]<image>...]"
 msgstr ""
 
-#: lxc/exec.go:132
-msgid "You can't pass -t and -T at the same time"
+#: lxc/remote.go:32
+msgid "remote"
 msgstr ""
 
-#: lxc/exec.go:136
-msgid "You can't pass -t or -T at the same time as --mode"
+#: lxc/alias.go:195
+msgid "remove <alias>"
 msgstr ""
 
-#: lxc/copy.go:76
-msgid "You must specify a destination container name when using --target"
+#: lxc/remote.go:546
+msgid "remove <remote>"
 msgstr ""
 
-#: lxc/copy.go:71
-msgid "You must specify a source container name"
+#: lxc/config_trust.go:194
+msgid "remove [<remote>:] <hostname|fingerprint>"
 msgstr ""
 
-#: lxc/copy.go:66 lxc/move.go:71
-msgid "You must use the same source and destination remote when using --target"
+#: lxc/profile.go:630
+msgid "remove [<remote>:]<container> <profile>"
 msgstr ""
 
-#: lxc/main.go:72
-msgid "`lxc config profile` is deprecated, please use `lxc profile`"
+#: lxc/config_device.go:402
+msgid "remove [<remote>:]<container|profile> <name>..."
 msgstr ""
 
-#: lxc/alias.go:56 lxc/alias.go:102
-#, c-format
-msgid "alias %s already exists"
+#: lxc/cluster.go:235
+msgid "remove [<remote>:]<member>"
 msgstr ""
 
-#: lxc/alias.go:68 lxc/alias.go:97
-#, c-format
-msgid "alias %s doesn't exist"
+#: lxc/alias.go:144
+msgid "rename <old alias> <new alias>"
 msgstr ""
 
-#: lxc/remote.go:370
-msgid "can't remove the default remote"
+#: lxc/remote.go:484
+msgid "rename <remote> <new-name>"
 msgstr ""
 
-#: lxc/file.go:296
-msgid "can't supply uid/gid/mode in recursive mode"
+#: lxc/image_alias.go:247
+msgid "rename [<remote>:]<alias> <new-name>"
 msgstr ""
 
-#: lxc/remote.go:399
-msgid "default"
+#: lxc/rename.go:18
+msgid "rename [<remote>:]<container>[/<snapshot>] <container>[/<snapshot>]"
 msgstr ""
 
-#: lxc/storage.go:856
-msgid "description"
+#: lxc/cluster.go:189
+msgid "rename [<remote>:]<member> <new-name>"
 msgstr ""
 
-#: lxc/init.go:315
-msgid "didn't get any affected image, container or snapshot from server"
+#: lxc/network.go:870
+msgid "rename [<remote>:]<network> <new-name>"
 msgstr ""
 
-#: lxc/image.go:594
-msgid "disabled"
+#: lxc/storage_volume.go:1023
+msgid "rename [<remote>:]<pool> <old name> <new name>"
 msgstr ""
 
-#: lxc/storage.go:855
-msgid "driver"
+#: lxc/profile.go:702
+msgid "rename [<remote>:]<profile> <new-name>"
 msgstr ""
 
-#: lxc/image.go:596
-msgid "enabled"
+#: lxc/action.go:67
+msgid "restart [<remote>:]<container> [[<remote>:]<container>...]"
 msgstr ""
 
-#: lxc/action.go:155 lxc/main.go:33 lxc/main.go:191
-#, c-format
-msgid "error: %v"
+#: lxc/restore.go:22
+msgid "restore [<remote>:]<container> <snapshot>"
 msgstr ""
 
-#: lxc/help.go:37 lxc/main.go:133
-#, c-format
-msgid "error: unknown command: %s"
+#: lxc/config_device.go:491
+msgid "set [<remote>:]<container|profile> <device> <key> <value>"
 msgstr ""
 
-#: lxc/storage.go:853
-msgid "info"
+#: lxc/network.go:918
+msgid "set [<remote>:]<network> <key> <value>"
 msgstr ""
 
-#: lxc/storage.go:854
-msgid "name"
+#: lxc/storage.go:571
+msgid "set [<remote>:]<pool> <key> <value>"
 msgstr ""
 
-#: lxc/image.go:210 lxc/image.go:584 lxc/image.go:589
-msgid "no"
+#: lxc/storage_volume.go:1087
+msgid "set [<remote>:]<pool> <volume> <key> <value>"
 msgstr ""
 
-#: lxc/remote.go:204
-msgid "ok (y/n)?"
+#: lxc/profile.go:751
+msgid "set [<remote>:]<profile> <key> <value>"
 msgstr ""
 
-#: lxc/main.go:368 lxc/main.go:372
-#, c-format
-msgid "processing aliases failed %s\n"
+#: lxc/config.go:353
+msgid "set [<remote>:][container] <key> <value>"
 msgstr ""
 
-#: lxc/file.go:588
-msgid "recursive edit doesn't make sense :("
+#: lxc/remote.go:596
+msgid "set-default <remote>"
 msgstr ""
 
-#: lxc/remote.go:436
-#, c-format
-msgid "remote %s already exists"
+#: lxc/remote.go:634
+msgid "set-url <remote> <URL>"
 msgstr ""
 
-#: lxc/remote.go:362 lxc/remote.go:428 lxc/remote.go:463 lxc/remote.go:479
-#, c-format
-msgid "remote %s doesn't exist"
+#: lxc/config_template.go:296
+msgid "show [<remote>:]<container> <template>"
 msgstr ""
 
-#: lxc/remote.go:345
-#, c-format
-msgid "remote %s exists as <%s>"
+#: lxc/config_device.go:580
+msgid "show [<remote>:]<container|profile>"
 msgstr ""
 
-#: lxc/remote.go:366 lxc/remote.go:432 lxc/remote.go:467
-#, c-format
-msgid "remote %s is static and cannot be modified"
+#: lxc/image.go:1283
+msgid "show [<remote>:]<image>"
+msgstr ""
+
+#: lxc/cluster.go:140
+msgid "show [<remote>:]<member>"
+msgstr ""
+
+#: lxc/network.go:987
+msgid "show [<remote>:]<network>"
+msgstr ""
+
+#: lxc/operation.go:172
+msgid "show [<remote>:]<operation>"
+msgstr ""
+
+#: lxc/storage.go:643
+msgid "show [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:1164
+msgid "show [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:810
+msgid "show [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/config.go:450 lxc/config_metadata.go:174
+msgid "show [<remote>:][container]"
+msgstr ""
+
+#: lxc/snapshot.go:19
+msgid "snapshot [<remote>:]<container> <snapshot name>"
 msgstr ""
 
-#: lxc/storage.go:858
+#: lxc/storage.go:433
 msgid "space used"
 msgstr ""
 
-#: lxc/info.go:251
+#: lxc/action.go:28
+msgid "start [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/info.go:255
 msgid "stateful"
 msgstr ""
 
-#: lxc/info.go:253
+#: lxc/info.go:257
 msgid "stateless"
 msgstr ""
 
-#: lxc/info.go:247
+#: lxc/action.go:89
+msgid "stop [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/storage.go:31
+msgid "storage"
+msgstr ""
+
+#: lxc/info.go:251
 #, c-format
 msgid "taken at %s"
 msgstr ""
 
-#: lxc/storage.go:857
+#: lxc/config_template.go:28
+msgid "template"
+msgstr ""
+
+#: lxc/storage.go:432
 msgid "total space"
 msgstr ""
 
-#: lxc/storage.go:852
+#: lxc/config_trust.go:28
+msgid "trust"
+msgstr ""
+
+#: lxc/config_device.go:648
+msgid "unset [<remote>:]<container|profile> <device> <key>"
+msgstr ""
+
+#: lxc/network.go:1049
+msgid "unset [<remote>:]<network> <key>"
+msgstr ""
+
+#: lxc/storage.go:727
+msgid "unset [<remote>:]<pool> <key>"
+msgstr ""
+
+#: lxc/storage_volume.go:1239
+msgid "unset [<remote>:]<pool> <volume> <key>"
+msgstr ""
+
+#: lxc/profile.go:864
+msgid "unset [<remote>:]<profile> <key>"
+msgstr ""
+
+#: lxc/config.go:558
+msgid "unset [<remote>:][container] <key>"
+msgstr ""
+
+#: lxc/storage.go:427
 msgid "used by"
 msgstr ""
 
-#: lxc/main.go:299
-msgid "wrong number of subcommand arguments"
+#: lxc/storage_volume.go:32
+msgid "volume"
 msgstr ""
 
-#: lxc/delete.go:45 lxc/image.go:208 lxc/image.go:586 lxc/image.go:591
+#: lxc/delete.go:46 lxc/image.go:811 lxc/image.go:816 lxc/image.go:975
 msgid "yes"
 msgstr ""
diff --git a/po/zh.po b/po/zh.po
index 22ea1e0d6..7b6f333d0 100644
--- a/po/zh.po
+++ b/po/zh.po
@@ -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: 2018-02-27 22:14-0500\n"
+"POT-Creation-Date: 2018-03-29 01:45-0400\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
@@ -16,7 +16,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: lxc/storage.go:36
+#: lxc/storage.go:220
 msgid ""
 "### This is a yaml representation of a storage pool.\n"
 "### Any line starting with a '#' will be ignored.\n"
@@ -33,7 +33,7 @@ msgid ""
 "###   zfs.pool_name: default"
 msgstr ""
 
-#: lxc/storage.go:53
+#: lxc/storage_volume.go:737
 msgid ""
 "### This is a yaml representation of a storage volume.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -47,7 +47,7 @@ msgid ""
 "###   size: \"61203283968\""
 msgstr ""
 
-#: lxc/config.go:40
+#: lxc/config.go:100
 msgid ""
 "### This is a yaml representation of the configuration.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -68,7 +68,7 @@ msgid ""
 "### Note that the name is shown but cannot be changed"
 msgstr ""
 
-#: lxc/config.go:61
+#: lxc/config_metadata.go:63
 msgid ""
 "### This is a yaml representation of the container metadata.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -92,7 +92,7 @@ msgid ""
 "###     properties: {}"
 msgstr ""
 
-#: lxc/image.go:63
+#: lxc/image.go:327
 msgid ""
 "### This is a yaml representation of the image properties.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -102,7 +102,7 @@ msgid ""
 "###  description: My custom image"
 msgstr ""
 
-#: lxc/network.go:32
+#: lxc/network.go:546
 msgid ""
 "### This is a yaml representation of the network.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -122,7 +122,7 @@ msgid ""
 "### Note that only the configuration can be changed."
 msgstr ""
 
-#: lxc/profile.go:30
+#: lxc/profile.go:408
 msgid ""
 "### This is a yaml representation of the profile.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -143,12 +143,12 @@ msgid ""
 "### Note that the name is shown but cannot be changed"
 msgstr ""
 
-#: lxc/image.go:187
+#: lxc/image.go:954
 #, c-format
 msgid "%s (%d more)"
 msgstr ""
 
-#: lxc/file.go:205
+#: lxc/file.go:677
 #, c-format
 msgid "%s is not a directory"
 msgstr ""
@@ -158,1782 +158,2673 @@ msgstr ""
 msgid "%v (interrupt two more times to force)"
 msgstr ""
 
-#: lxc/file.go:142
+#: lxc/file.go:614
 #, c-format
 msgid "'%s' isn't a supported file type."
 msgstr ""
 
-#: lxc/profile.go:337
+#: lxc/profile.go:222
 msgid "(none)"
 msgstr ""
 
-#: lxc/alias.go:84 lxc/image.go:231 lxc/image.go:1136
+#: lxc/alias.go:127 lxc/image.go:921 lxc/image_alias.go:228
 msgid "ALIAS"
 msgstr ""
 
-#: lxc/image.go:232
+#: lxc/image.go:922
 msgid "ALIASES"
 msgstr ""
 
-#: lxc/image.go:236
+#: lxc/image.go:926
 msgid "ARCH"
 msgstr ""
 
-#: lxc/list.go:467
+#: lxc/list.go:464
 msgid "ARCHITECTURE"
 msgstr ""
 
-#: lxc/remote.go:412
+#: lxc/remote.go:466
 msgid "AUTH TYPE"
 msgstr ""
 
-#: lxc/remote.go:68
+#: lxc/remote.go:88
 msgid "Accept certificate"
 msgstr ""
 
-#: lxc/query.go:38
+#: lxc/query.go:37
 msgid "Action (defaults to GET)"
 msgstr ""
 
-#: lxc/remote.go:276
+#: lxc/config_device.go:75 lxc/config_device.go:76
+msgid "Add devices to containers or profiles"
+msgstr ""
+
+#: lxc/alias.go:54 lxc/alias.go:55
+msgid "Add new aliases"
+msgstr ""
+
+#: lxc/remote.go:83 lxc/remote.go:84
+msgid "Add new remote servers"
+msgstr ""
+
+#: lxc/config_trust.go:58 lxc/config_trust.go:59
+msgid "Add new trusted clients"
+msgstr ""
+
+#: lxc/profile.go:101 lxc/profile.go:102
+msgid "Add profiles to containers"
+msgstr ""
+
+#: lxc/remote.go:325
 #, c-format
 msgid "Admin password for %s: "
 msgstr ""
 
-#: lxc/image.go:623
+#: lxc/alias.go:78 lxc/alias.go:176
+#, c-format
+msgid "Alias %s already exists"
+msgstr ""
+
+#: lxc/alias.go:170 lxc/alias.go:221
+#, c-format
+msgid "Alias %s doesn't exist"
+msgstr ""
+
+#: lxc/image_alias.go:83 lxc/image_alias.go:130 lxc/image_alias.go:274
+msgid "Alias name missing"
+msgstr ""
+
+#: lxc/image.go:854
 msgid "Aliases:"
 msgstr ""
 
-#: lxc/image.go:601 lxc/info.go:125
+#: lxc/image.go:826 lxc/info.go:129
 #, c-format
 msgid "Architecture: %s"
 msgstr ""
 
-#: lxc/remote.go:259
+#: lxc/profile.go:162 lxc/profile.go:163
+msgid "Assign sets of profiles to containers"
+msgstr ""
+
+#: lxc/network.go:103
+msgid "Attach network interfaces to containers"
+msgstr ""
+
+#: lxc/network.go:176 lxc/network.go:177
+msgid "Attach network interfaces to profiles"
+msgstr ""
+
+#: lxc/network.go:104
+msgid "Attach new network interfaces to containers"
+msgstr ""
+
+#: lxc/storage_volume.go:121 lxc/storage_volume.go:122
+msgid "Attach new storage volumes to containers"
+msgstr ""
+
+#: lxc/storage_volume.go:200 lxc/storage_volume.go:201
+msgid "Attach new storage volumes to profiles"
+msgstr ""
+
+#: lxc/console.go:31
+msgid "Attach to container consoles"
+msgstr ""
+
+#: lxc/console.go:32
+msgid ""
+"Attach to container consoles\n"
+"\n"
+"This command allows you to interact with the boot console of a container\n"
+"as well as retrieve past log entries from it."
+msgstr ""
+
+#: lxc/remote.go:308
 #, c-format
 msgid "Authentication type '%s' not supported by server"
 msgstr ""
 
-#: lxc/image.go:632
+#: lxc/image.go:864
 #, c-format
 msgid "Auto update: %s"
 msgstr ""
 
-#: lxc/image.go:707
+#: lxc/network.go:283
+#, c-format
+msgid "Bad key/value pair: %s"
+msgstr ""
+
+#: lxc/copy.go:110 lxc/init.go:118 lxc/publish.go:175 lxc/storage.go:123
+#: lxc/storage_volume.go:468
+#, c-format
+msgid "Bad key=value pair: %s"
+msgstr ""
+
+#: lxc/image.go:677
 #, c-format
 msgid "Bad property: %s"
 msgstr ""
 
-#: lxc/action.go:133
+#: lxc/action.go:212
 msgid "Both --all and container name given"
 msgstr ""
 
-#: lxc/info.go:218
+#: lxc/info.go:222
 msgid "Bytes received"
 msgstr ""
 
-#: lxc/info.go:219
+#: lxc/info.go:223
 msgid "Bytes sent"
 msgstr ""
 
-#: lxc/operation.go:156
+#: lxc/operation.go:155
 msgid "CANCELABLE"
 msgstr ""
 
-#: lxc/config.go:403
+#: lxc/config_trust.go:175
 msgid "COMMON NAME"
 msgstr ""
 
-#: lxc/info.go:182
+#: lxc/info.go:186
 msgid "CPU usage (in seconds)"
 msgstr ""
 
-#: lxc/info.go:186
+#: lxc/info.go:190
 msgid "CPU usage:"
 msgstr ""
 
-#: lxc/operation.go:157
+#: lxc/operation.go:156
 msgid "CREATED"
 msgstr ""
 
-#: lxc/list.go:468
+#: lxc/list.go:465
 msgid "CREATED AT"
 msgstr ""
 
-#: lxc/image.go:631
+#: lxc/image.go:863
 #, c-format
 msgid "Cached: %s"
 msgstr ""
 
-#: lxc/file.go:501
+#: lxc/image.go:175
+msgid "Can't provide a name for the target image"
+msgstr ""
+
+#: lxc/file.go:261
 msgid "Can't pull a directory without --recursive"
 msgstr ""
 
-#: lxc/config.go:210 lxc/network.go:619
+#: lxc/config.go:400 lxc/network.go:969
 #, c-format
 msgid "Can't read from stdin: %s"
 msgstr ""
 
-#: lxc/rename.go:41
+#: lxc/remote.go:577
+msgid "Can't remove the default remote"
+msgstr ""
+
+#: lxc/list.go:481
+msgid "Can't specify --fast with --columns"
+msgstr ""
+
+#: lxc/rename.go:48
 msgid "Can't specify a different remote for rename."
 msgstr ""
 
-#: lxc/config.go:223
-#, c-format
-msgid "Can't unset key '%s', it's not currently set"
+#: lxc/list.go:493
+msgid "Can't specify column L when not clustered"
 msgstr ""
 
-#: lxc/config.go:265 lxc/config.go:291
-#, c-format
-msgid "Can't unset key '%s', it's not currently set."
+#: lxc/file.go:399
+msgid "Can't supply uid/gid/mode in recursive mode"
 msgstr ""
 
-#: lxc/profile.go:546 lxc/storage.go:696
-msgid "Cannot provide container name to list"
+#: lxc/config.go:413
+#, c-format
+msgid "Can't unset key '%s', it's not currently set"
 msgstr ""
 
-#: lxc/remote.go:203
+#: lxc/remote.go:252
 #, c-format
 msgid "Certificate fingerprint: %s"
 msgstr ""
 
-#: lxc/remote.go:315
+#: lxc/remote.go:364
 msgid "Client certificate stored at server: "
 msgstr ""
 
-#: lxc/image.go:175 lxc/image.go:176 lxc/list.go:134 lxc/list.go:135
+#: lxc/network.go:253 lxc/network.go:663 lxc/network.go:923 lxc/network.go:992
+#: lxc/network.go:1054 lxc/storage.go:92 lxc/storage.go:331 lxc/storage.go:576
+#: lxc/storage.go:649 lxc/storage.go:732 lxc/storage_volume.go:287
+#: lxc/storage_volume.go:429 lxc/storage_volume.go:504
+#: lxc/storage_volume.go:730 lxc/storage_volume.go:856
+#: lxc/storage_volume.go:998 lxc/storage_volume.go:1028
+#: lxc/storage_volume.go:1092 lxc/storage_volume.go:1175
+#: lxc/storage_volume.go:1244
+msgid "Cluster member name"
+msgstr ""
+
+#: lxc/image.go:912 lxc/list.go:112
 msgid "Columns"
 msgstr ""
 
-#: lxc/help.go:53
-msgid "Commands:"
+#: lxc/main.go:44
+msgid "Command line client for LXD"
+msgstr ""
+
+#: lxc/main.go:45
+msgid ""
+"Command line client for LXD\n"
+"\n"
+"All of LXD's features can be driven through the various commands below.\n"
+"For help with any of those, simply call them with --help."
 msgstr ""
 
-#: lxc/copy.go:37 lxc/copy.go:38 lxc/init.go:139 lxc/init.go:140
+#: lxc/copy.go:39 lxc/init.go:42
 msgid "Config key/value to apply to the new container"
 msgstr ""
 
-#: lxc/config.go:821 lxc/config.go:886 lxc/config.go:1396 lxc/image.go:1191
-#: lxc/network.go:445 lxc/profile.go:275 lxc/storage.go:647 lxc/storage.go:1209
+#: lxc/config.go:195 lxc/config.go:259 lxc/config_metadata.go:144
+#: lxc/image.go:405 lxc/network.go:631 lxc/profile.go:490 lxc/storage.go:298
+#: lxc/storage_volume.go:822
 #, c-format
 msgid "Config parsing error: %s"
 msgstr ""
 
-#: lxc/main.go:40
-msgid "Connection refused; is LXD running?"
-msgstr ""
-
-#: lxc/console.go:132
+#: lxc/console.go:141
 msgid "Console log:"
 msgstr ""
 
-#: lxc/publish.go:71
+#: lxc/publish.go:79
 msgid "Container name is mandatory"
 msgstr ""
 
-#: lxc/copy.go:243 lxc/init.go:321
+#: lxc/copy.go:260 lxc/init.go:229
 #, c-format
 msgid "Container name is: %s"
 msgstr ""
 
-#: lxc/publish.go:250
+#: lxc/publish.go:259
 #, c-format
 msgid "Container published with fingerprint: %s"
 msgstr ""
 
-#: lxc/copy.go:45 lxc/move.go:44
+#: lxc/copy.go:44 lxc/move.go:46
 msgid "Copy a stateful container stateless"
 msgstr ""
 
-#: lxc/image.go:178
+#: lxc/image.go:138
 msgid "Copy aliases from source"
 msgstr ""
 
-#: lxc/copy.go:44
+#: lxc/copy.go:34 lxc/copy.go:35
+msgid "Copy containers within or in between LXD instances"
+msgstr ""
+
+#: lxc/image.go:130
+msgid "Copy images between servers"
+msgstr ""
+
+#: lxc/image.go:131
+msgid ""
+"Copy images between servers\n"
+"\n"
+"The auto-update flag instructs the server to keep this image up to date.\n"
+"It requires the source to be an alias and for it to be public."
+msgstr ""
+
+#: lxc/config_device.go:317 lxc/config_device.go:318
+msgid "Copy profile inherited devices and override configuration keys"
+msgstr ""
+
+#: lxc/profile.go:240 lxc/profile.go:241
+msgid "Copy profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:282 lxc/storage_volume.go:283
+msgid "Copy storage volumes"
+msgstr ""
+
+#: lxc/copy.go:43
 msgid "Copy the container without its snapshots"
 msgstr ""
 
-#: lxc/image.go:449
+#: lxc/image.go:217
 #, c-format
 msgid "Copying the image: %s"
 msgstr ""
 
-#: lxc/storage.go:1134
+#: lxc/storage_volume.go:387
 #, c-format
 msgid "Copying the storage volume: %s"
 msgstr ""
 
-#: lxc/remote.go:218
+#: lxc/remote.go:267
 msgid "Could not create server cert dir"
 msgstr ""
 
-#: lxc/file.go:70 lxc/file.go:71
+#: lxc/image_alias.go:58 lxc/image_alias.go:59
+msgid "Create aliases for existing images"
+msgstr ""
+
+#: lxc/launch.go:21 lxc/launch.go:22
+msgid "Create and start containers from images"
+msgstr ""
+
+#: lxc/file.go:191 lxc/file.go:331
 msgid "Create any directories necessary"
 msgstr ""
 
-#: lxc/image.go:606 lxc/info.go:127
+#: lxc/snapshot.go:20
+msgid "Create container snapshots"
+msgstr ""
+
+#: lxc/snapshot.go:21
+msgid ""
+"Create container snapshots\n"
+"\n"
+"When --stateful is used, LXD attempts to checkpoint the container's\n"
+"running state, including process memory state, TCP connections, ..."
+msgstr ""
+
+#: lxc/init.go:34 lxc/init.go:35
+msgid "Create containers from images"
+msgstr ""
+
+#: lxc/config_template.go:66 lxc/config_template.go:67
+msgid "Create new container file templates"
+msgstr ""
+
+#: lxc/storage_volume.go:425 lxc/storage_volume.go:426
+msgid "Create new custom storage volumes"
+msgstr ""
+
+#: lxc/network.go:249 lxc/network.go:250
+msgid "Create new networks"
+msgstr ""
+
+#: lxc/profile.go:296 lxc/profile.go:297
+msgid "Create profiles"
+msgstr ""
+
+#: lxc/storage.go:88 lxc/storage.go:89
+msgid "Create storage pools"
+msgstr ""
+
+#: lxc/image.go:832 lxc/info.go:131
 #, c-format
 msgid "Created: %s"
 msgstr ""
 
-#: lxc/init.go:200
+#: lxc/init.go:98
 #, c-format
 msgid "Creating %s"
 msgstr ""
 
-#: lxc/init.go:198
+#: lxc/init.go:96
 msgid "Creating the container"
 msgstr ""
 
-#: lxc/cluster.go:185
+#: lxc/cluster.go:121
 msgid "DATABASE"
 msgstr ""
 
-#: lxc/image.go:235 lxc/image.go:1138 lxc/list.go:469 lxc/network.go:579
-#: lxc/operation.go:154 lxc/storage.go:732 lxc/storage.go:937
+#: lxc/image.go:925 lxc/image_alias.go:230 lxc/list.go:466 lxc/network.go:784
+#: lxc/operation.go:153 lxc/storage.go:545 lxc/storage_volume.go:967
 msgid "DESCRIPTION"
 msgstr ""
 
-#: lxc/storage.go:733
+#: lxc/storage.go:546
 msgid "DRIVER"
 msgstr ""
 
-#: lxc/publish.go:39
+#: lxc/publish.go:41
 msgid "Define a compression algorithm: for image or none"
 msgstr ""
 
-#: lxc/config.go:977
+#: lxc/operation.go:53 lxc/operation.go:54
+msgid "Delete a background operation (will attempt to cancel)"
+msgstr ""
+
+#: lxc/config_template.go:109 lxc/config_template.go:110
+msgid "Delete container file templates"
+msgstr ""
+
+#: lxc/delete.go:29 lxc/delete.go:30
+msgid "Delete containers and snapshots"
+msgstr ""
+
+#: lxc/file.go:72 lxc/file.go:73
+msgid "Delete files in containers"
+msgstr ""
+
+#: lxc/image_alias.go:105 lxc/image_alias.go:106
+msgid "Delete image aliases"
+msgstr ""
+
+#: lxc/image.go:260 lxc/image.go:261
+msgid "Delete images"
+msgstr ""
+
+#: lxc/network.go:319 lxc/network.go:320
+msgid "Delete networks"
+msgstr ""
+
+#: lxc/profile.go:347 lxc/profile.go:348
+msgid "Delete profiles"
+msgstr ""
+
+#: lxc/storage.go:160 lxc/storage.go:161
+msgid "Delete storage pools"
+msgstr ""
+
+#: lxc/storage_volume.go:500 lxc/storage_volume.go:501
+msgid "Delete storage volumes"
+msgstr ""
+
+#: lxc/action.go:30 lxc/action.go:49 lxc/action.go:69 lxc/action.go:91
+#: lxc/alias.go:23 lxc/alias.go:55 lxc/alias.go:99 lxc/alias.go:147
+#: lxc/alias.go:198 lxc/cluster.go:26 lxc/cluster.go:59 lxc/cluster.go:142
+#: lxc/cluster.go:192 lxc/cluster.go:238 lxc/config.go:29 lxc/config.go:88
+#: lxc/config.go:289 lxc/config.go:355 lxc/config.go:452 lxc/config.go:560
+#: lxc/config_device.go:24 lxc/config_device.go:76 lxc/config_device.go:179
+#: lxc/config_device.go:252 lxc/config_device.go:318 lxc/config_device.go:405
+#: lxc/config_device.go:493 lxc/config_device.go:582 lxc/config_device.go:650
+#: lxc/config_metadata.go:29 lxc/config_metadata.go:54
+#: lxc/config_metadata.go:176 lxc/config_template.go:30
+#: lxc/config_template.go:67 lxc/config_template.go:110
+#: lxc/config_template.go:152 lxc/config_template.go:236
+#: lxc/config_template.go:298 lxc/config_trust.go:30 lxc/config_trust.go:59
+#: lxc/config_trust.go:115 lxc/config_trust.go:197 lxc/console.go:32
+#: lxc/copy.go:35 lxc/delete.go:30 lxc/exec.go:39 lxc/file.go:40 lxc/file.go:73
+#: lxc/file.go:122 lxc/file.go:185 lxc/file.go:324 lxc/image.go:42
+#: lxc/image.go:131 lxc/image.go:261 lxc/image.go:312 lxc/image.go:435
+#: lxc/image.go:571 lxc/image.go:776 lxc/image.go:890 lxc/image.go:1212
+#: lxc/image.go:1285 lxc/image_alias.go:26 lxc/image_alias.go:59
+#: lxc/image_alias.go:106 lxc/image_alias.go:149 lxc/image_alias.go:250
+#: lxc/info.go:29 lxc/init.go:35 lxc/launch.go:22 lxc/list.go:48 lxc/main.go:45
+#: lxc/monitor.go:31 lxc/move.go:31 lxc/network.go:32 lxc/network.go:104
+#: lxc/network.go:177 lxc/network.go:250 lxc/network.go:320 lxc/network.go:367
+#: lxc/network.go:452 lxc/network.go:537 lxc/network.go:660 lxc/network.go:719
+#: lxc/network.go:808 lxc/network.go:873 lxc/network.go:920 lxc/network.go:989
+#: lxc/network.go:1051 lxc/operation.go:25 lxc/operation.go:54
+#: lxc/operation.go:98 lxc/operation.go:174 lxc/profile.go:30
+#: lxc/profile.go:102 lxc/profile.go:163 lxc/profile.go:241 lxc/profile.go:297
+#: lxc/profile.go:348 lxc/profile.go:396 lxc/profile.go:520 lxc/profile.go:568
+#: lxc/profile.go:632 lxc/profile.go:705 lxc/profile.go:753 lxc/profile.go:812
+#: lxc/profile.go:866 lxc/publish.go:34 lxc/query.go:27 lxc/remote.go:34
+#: lxc/remote.go:84 lxc/remote.go:380 lxc/remote.go:414 lxc/remote.go:487
+#: lxc/remote.go:549 lxc/remote.go:598 lxc/remote.go:636 lxc/rename.go:20
+#: lxc/restore.go:24 lxc/snapshot.go:21 lxc/storage.go:33 lxc/storage.go:89
+#: lxc/storage.go:161 lxc/storage.go:208 lxc/storage.go:328 lxc/storage.go:383
+#: lxc/storage.go:491 lxc/storage.go:573 lxc/storage.go:645 lxc/storage.go:729
+#: lxc/storage_volume.go:34 lxc/storage_volume.go:122 lxc/storage_volume.go:201
+#: lxc/storage_volume.go:283 lxc/storage_volume.go:426
+#: lxc/storage_volume.go:501 lxc/storage_volume.go:561
+#: lxc/storage_volume.go:643 lxc/storage_volume.go:724
+#: lxc/storage_volume.go:853 lxc/storage_volume.go:918
+#: lxc/storage_volume.go:994 lxc/storage_volume.go:1025
+#: lxc/storage_volume.go:1089 lxc/storage_volume.go:1166
+#: lxc/storage_volume.go:1241
+msgid "Description"
+msgstr ""
+
+#: lxc/network.go:366 lxc/network.go:367
+msgid "Detach network interfaces from containers"
+msgstr ""
+
+#: lxc/network.go:451 lxc/network.go:452
+msgid "Detach network interfaces from profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:560 lxc/storage_volume.go:561
+msgid "Detach storage volumes from containers"
+msgstr ""
+
+#: lxc/storage_volume.go:642 lxc/storage_volume.go:643
+msgid "Detach storage volumes from profiles"
+msgstr ""
+
+#: lxc/config_device.go:163
 #, c-format
 msgid "Device %s added to %s"
 msgstr ""
 
-#: lxc/config.go:1272
+#: lxc/config_device.go:387
 #, c-format
 msgid "Device %s overridden for %s"
 msgstr ""
 
-#: lxc/config.go:1213
+#: lxc/config_device.go:476
 #, c-format
 msgid "Device %s removed from %s"
 msgstr ""
 
-#: lxc/utils.go:192 lxc/utils.go:216
+#: lxc/utils.go:133 lxc/utils.go:157
 #, c-format
 msgid "Device already exists: %s"
 msgstr ""
 
-#: lxc/image.go:1290
+#: lxc/image.go:586
 msgid "Directory import is not available on this platform"
 msgstr ""
 
-#: lxc/exec.go:71
+#: lxc/exec.go:55
 msgid "Disable pseudo-terminal allocation"
 msgstr ""
 
-#: lxc/exec.go:72
+#: lxc/exec.go:56
 msgid "Disable stdin (reads from /dev/null)"
 msgstr ""
 
-#: lxc/info.go:175
+#: lxc/info.go:179
 msgid "Disk usage:"
 msgstr ""
 
-#: lxc/list.go:638
+#: lxc/list.go:635
 msgid "EPHEMERAL"
 msgstr ""
 
-#: lxc/config.go:405
+#: lxc/config_trust.go:177
 msgid "EXPIRY DATE"
 msgstr ""
 
-#: lxc/main.go:52
-msgid "Enable debug mode"
+#: lxc/config_template.go:151 lxc/config_template.go:152
+msgid "Edit container file templates"
 msgstr ""
 
-#: lxc/main.go:51
-msgid "Enable verbose mode"
+#: lxc/config_metadata.go:53 lxc/config_metadata.go:54
+msgid "Edit container metadata files"
 msgstr ""
 
-#: lxc/exec.go:68
-msgid "Environment variable to set (e.g. HOME=/home/foo)"
+#: lxc/config.go:87 lxc/config.go:88
+msgid "Edit container or server configurations as YAML"
+msgstr ""
+
+#: lxc/file.go:121 lxc/file.go:122
+msgid "Edit files in containers"
+msgstr ""
+
+#: lxc/image.go:311 lxc/image.go:312
+msgid "Edit image properties"
+msgstr ""
+
+#: lxc/network.go:536 lxc/network.go:537
+msgid "Edit network configurations as YAML"
+msgstr ""
+
+#: lxc/profile.go:395 lxc/profile.go:396
+msgid "Edit profile configurations as YAML"
+msgstr ""
+
+#: lxc/storage.go:207 lxc/storage.go:208
+msgid "Edit storage pool configurations as YAML"
+msgstr ""
+
+#: lxc/storage_volume.go:723 lxc/storage_volume.go:724
+msgid "Edit storage volume configurations as YAML"
+msgstr ""
+
+#: lxc/list.go:504
+#, c-format
+msgid "Empty column entry (redundant, leading or trailing command) in '%s'"
 msgstr ""
 
-#: lxc/help.go:77
-msgid "Environment:"
+#: lxc/exec.go:52
+msgid "Environment variable to set (e.g. HOME=/home/foo)"
 msgstr ""
 
-#: lxc/copy.go:41 lxc/copy.go:42 lxc/init.go:143 lxc/init.go:144
+#: lxc/copy.go:41 lxc/init.go:44
 msgid "Ephemeral container"
 msgstr ""
 
-#: lxc/config.go:1446
+#: lxc/config_template.go:204
 #, c-format
 msgid "Error updating template file: %s"
 msgstr ""
 
-#: lxc/monitor.go:69
+#: lxc/monitor.go:48
 msgid "Event type to listen for"
 msgstr ""
 
-#: lxc/image.go:610
+#: lxc/exec.go:38
+msgid "Execute commands in containers"
+msgstr ""
+
+#: lxc/exec.go:39
+msgid ""
+"Execute commands in containers\n"
+"\n"
+"The command is executed directly using exec, so there is no shell and\n"
+"shell patterns (variables, file redirects, ...) won't be understood.\n"
+"If you need a shell environment you need to execute the shell\n"
+"executable, passing the shell commands as arguments, for example:\n"
+"\n"
+"  lxc exec <container> -- sh -c \"cd /tmp && pwd\"\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:838
 #, c-format
 msgid "Expires: %s"
 msgstr ""
 
-#: lxc/image.go:612
+#: lxc/image.go:840
 msgid "Expires: never"
 msgstr ""
 
-#: lxc/image.go:922
+#: lxc/image.go:434
+msgid "Export and download images"
+msgstr ""
+
+#: lxc/image.go:435
+msgid ""
+"Export and download images\n"
+"\n"
+"The output target is optional and defaults to the working directory."
+msgstr ""
+
+#: lxc/image.go:494
 #, c-format
 msgid "Exporting the image: %s"
 msgstr ""
 
-#: lxc/config.go:761
+#: lxc/config_template.go:279
 msgid "FILENAME"
 msgstr ""
 
-#: lxc/config.go:402 lxc/image.go:233 lxc/image.go:1137
+#: lxc/config_trust.go:174 lxc/image.go:923 lxc/image_alias.go:229
 msgid "FINGERPRINT"
 msgstr ""
 
-#: lxc/utils.go:261
+#: lxc/utils.go:202
 #, c-format
 msgid "Failed to create alias %s"
 msgstr ""
 
-#: lxc/manpage.go:62
-#, c-format
-msgid "Failed to generate 'lxc.%s.1': %v"
-msgstr ""
-
-#: lxc/manpage.go:55
-#, c-format
-msgid "Failed to generate 'lxc.1': %v"
-msgstr ""
-
-#: lxc/copy.go:238
+#: lxc/copy.go:255
 msgid "Failed to get the new container name"
 msgstr ""
 
-#: lxc/utils.go:251
+#: lxc/utils.go:192
 #, c-format
 msgid "Failed to remove alias %s"
 msgstr ""
 
-#: lxc/file.go:137
+#: lxc/file.go:609
 #, c-format
 msgid "Failed to walk path for %s: %s"
 msgstr ""
 
-#: lxc/list.go:137
+#: lxc/list.go:114
 msgid "Fast mode (same as --columns=nsacPt)"
 msgstr ""
 
-#: lxc/network.go:536 lxc/operation.go:121
+#: lxc/network.go:749 lxc/operation.go:126
 msgid "Filtering isn't supported yet"
 msgstr ""
 
-#: lxc/image.go:599
+#: lxc/image.go:824
 #, c-format
 msgid "Fingerprint: %s"
 msgstr ""
 
-#: lxc/exec.go:70
+#: lxc/exec.go:54
 msgid "Force pseudo-terminal allocation"
 msgstr ""
 
-#: lxc/cluster.go:42
-msgid "Force removing a node, even if degraded"
+#: lxc/cluster.go:242
+msgid "Force removing a member, even if degraded"
 msgstr ""
 
-#: lxc/action.go:47 lxc/action.go:48
+#: lxc/action.go:121
 msgid "Force the container to shutdown"
 msgstr ""
 
-#: lxc/delete.go:34 lxc/delete.go:35
+#: lxc/delete.go:34
 msgid "Force the removal of running containers"
 msgstr ""
 
-#: lxc/main.go:53
+#: lxc/main.go:56
 msgid "Force using the local unix socket"
 msgstr ""
 
-#: lxc/image.go:181 lxc/list.go:136
+#: lxc/image.go:913 lxc/list.go:113
 msgid "Format (csv|json|table|yaml)"
 msgstr ""
 
-#: lxc/remote.go:166
+#: lxc/remote.go:211
 msgid "Generating a client certificate. This may take a minute..."
 msgstr ""
 
-#: lxc/network.go:513
+#: lxc/config_device.go:178 lxc/config_device.go:179
+msgid "Get values for container device configuration keys"
+msgstr ""
+
+#: lxc/config.go:288 lxc/config.go:289
+msgid "Get values for container or server configuration keys"
+msgstr ""
+
+#: lxc/network.go:659 lxc/network.go:660
+msgid "Get values for network configuration keys"
+msgstr ""
+
+#: lxc/profile.go:519 lxc/profile.go:520
+msgid "Get values for profile configuration keys"
+msgstr ""
+
+#: lxc/storage.go:327 lxc/storage.go:328
+msgid "Get values for storage pool configuration keys"
+msgstr ""
+
+#: lxc/storage_volume.go:852 lxc/storage_volume.go:853
+msgid "Get values for storage volume configuration keys"
+msgstr ""
+
+#: lxc/network.go:851
 msgid "HOSTNAME"
 msgstr ""
 
-#: lxc/operation.go:152
+#: lxc/operation.go:151
 msgid "ID"
 msgstr ""
 
-#: lxc/network.go:515
+#: lxc/network.go:853
 msgid "IP ADDRESS"
 msgstr ""
 
-#: lxc/list.go:465
+#: lxc/list.go:462
 msgid "IPV4"
 msgstr ""
 
-#: lxc/list.go:466
+#: lxc/list.go:463
 msgid "IPV6"
 msgstr ""
 
-#: lxc/config.go:404
+#: lxc/config_trust.go:176
 msgid "ISSUE DATE"
 msgstr ""
 
-#: lxc/main.go:171
+#: lxc/main.go:259
 msgid ""
 "If this is your first time running LXD on this machine, you should also run: "
 "lxd init"
 msgstr ""
 
-#: lxc/main.go:54
-msgid "Ignore aliases when determining what command to run"
-msgstr ""
-
-#: lxc/action.go:51
-msgid "Ignore the container state (only for start)"
+#: lxc/action.go:117
+msgid "Ignore the container state"
 msgstr ""
 
-#: lxc/image.go:557
+#: lxc/image.go:1268
 msgid "Image already up to date."
 msgstr ""
 
-#: lxc/image.go:463
+#: lxc/image.go:231
 msgid "Image copied successfully!"
 msgstr ""
 
-#: lxc/image.go:982
+#: lxc/image.go:554
 msgid "Image exported successfully!"
 msgstr ""
 
-#: lxc/image.go:778
+#: lxc/image.go:284 lxc/image.go:1235
+msgid "Image identifier missing"
+msgstr ""
+
+#: lxc/image.go:352
+#, c-format
+msgid "Image identifier missing: %s"
+msgstr ""
+
+#: lxc/image.go:749
 #, c-format
 msgid "Image imported with fingerprint: %s"
 msgstr ""
 
-#: lxc/image.go:555
+#: lxc/image.go:1266
 msgid "Image refreshed successfully!"
 msgstr ""
 
-#: lxc/query.go:39
+#: lxc/image.go:571
+msgid ""
+"Import image into the image store\n"
+"\n"
+"Directory import is only available on Linux and must be performed as root."
+msgstr ""
+
+#: lxc/image.go:570
+msgid "Import images into the image store"
+msgstr ""
+
+#: lxc/query.go:38
 msgid "Input data"
 msgstr ""
 
-#: lxc/init.go:149
+#: lxc/init.go:47
 msgid "Instance type"
 msgstr ""
 
-#: lxc/remote.go:118
+#: lxc/remote.go:163
 #, c-format
 msgid "Invalid URL scheme \"%s\" in \"%s\""
 msgstr ""
 
-#: lxc/config.go:383
+#: lxc/config_trust.go:155
 msgid "Invalid certificate"
 msgstr ""
 
-#: lxc/init.go:32 lxc/init.go:37
-msgid "Invalid configuration key"
+#: lxc/list.go:525
+#, c-format
+msgid "Invalid config key '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:520
+#, c-format
+msgid "Invalid config key column format (too many fields): '%s'"
+msgstr ""
+
+#: lxc/image.go:1196 lxc/list.go:386
+#, c-format
+msgid "Invalid format %q"
+msgstr ""
+
+#: lxc/list.go:543
+#, c-format
+msgid "Invalid max width (must -1, 0 or a positive integer) '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:540
+#, c-format
+msgid "Invalid max width (must be an integer) '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:531
+#, c-format
+msgid ""
+"Invalid name in '%s', empty string is only allowed when defining maxWidth"
+msgstr ""
+
+#: lxc/main.go:341
+msgid "Invalid number of arguments"
 msgstr ""
 
-#: lxc/file.go:560
+#: lxc/file.go:97
 #, c-format
 msgid "Invalid path %s"
 msgstr ""
 
-#: lxc/remote.go:107
+#: lxc/remote.go:152
 #, c-format
 msgid "Invalid protocol: %s"
 msgstr ""
 
-#: lxc/file.go:473
+#: lxc/file.go:243
 #, c-format
 msgid "Invalid source %s"
 msgstr ""
 
-#: lxc/file.go:250
+#: lxc/file.go:352
 #, c-format
 msgid "Invalid target %s"
 msgstr ""
 
-#: lxc/info.go:156
+#: lxc/info.go:160
 msgid "Ips:"
 msgstr ""
 
-#: lxc/image.go:179
+#: lxc/image.go:139
 msgid "Keep the image up to date after initial copy"
 msgstr ""
 
-#: lxc/list.go:470
+#: lxc/list.go:467
 msgid "LAST USED AT"
 msgstr ""
 
-#: lxc/list.go:492
+#: lxc/list.go:489
 msgid "LOCATION"
 msgstr ""
 
-#: lxc/main.go:38
-msgid "LXD socket not found; is LXD installed and running?"
+#: lxc/cluster.go:94
+msgid "LXD server isn't part of a cluster"
 msgstr ""
 
-#: lxc/image.go:615
+#: lxc/image.go:844
 #, c-format
 msgid "Last used: %s"
 msgstr ""
 
-#: lxc/image.go:617
+#: lxc/image.go:846
 msgid "Last used: never"
 msgstr ""
 
-#: lxc/info.go:119
-#, c-format
-msgid "Location: %s"
-msgstr ""
-
-#: lxc/info.go:271
-msgid "Log:"
-msgstr ""
-
-#: lxc/network.go:514
-msgid "MAC ADDRESS"
-msgstr ""
-
-#: lxc/network.go:578
-msgid "MANAGED"
+#: lxc/network.go:807 lxc/network.go:808
+msgid "List DHCP leases"
 msgstr ""
 
-#: lxc/cluster.go:187
-msgid "MESSAGE"
+#: lxc/alias.go:98 lxc/alias.go:99
+msgid "List aliases"
 msgstr ""
 
-#: lxc/image.go:177
-msgid "Make image public"
+#: lxc/cluster.go:58 lxc/cluster.go:59
+msgid "List all the cluster members"
 msgstr ""
 
-#: lxc/publish.go:35
-msgid "Make the image public"
+#: lxc/network.go:718 lxc/network.go:719
+msgid "List available networks"
 msgstr ""
 
-#: lxc/info.go:193
-msgid "Memory (current)"
+#: lxc/storage.go:490 lxc/storage.go:491
+msgid "List available storage pools"
 msgstr ""
 
-#: lxc/info.go:197
-msgid "Memory (peak)"
+#: lxc/operation.go:97 lxc/operation.go:98
+msgid "List background operations"
 msgstr ""
 
-#: lxc/info.go:209
-msgid "Memory usage:"
+#: lxc/config_device.go:251 lxc/config_device.go:252
+msgid "List container devices"
 msgstr ""
 
-#: lxc/monitor.go:70
-msgid "Minimum level for log messages"
+#: lxc/config_template.go:235 lxc/config_template.go:236
+msgid "List container file templates"
 msgstr ""
 
-#: lxc/utils.go:143
-msgid "Missing summary."
+#: lxc/list.go:47
+msgid "List containers"
 msgstr ""
 
-#: lxc/network.go:303 lxc/network.go:356 lxc/storage.go:435 lxc/storage.go:565
-msgid "More than one device matches, specify the device name."
-msgstr ""
+#: lxc/list.go:48
+msgid ""
+"List containers\n"
+"\n"
+"Default column layout: ns46tS\n"
+"Fast column layout: nsacPt\n"
+"\n"
+"== Filters ==\n"
+"A single keyword like \"web\" which will list any container with a name "
+"starting by \"web\".\n"
+"A regular expression on the container name. (e.g. .*web.*01$).\n"
+"A key/value pair referring to a configuration item. For those, the\n"
+"namespace can be abbreviated to the smallest unambiguous identifier.\n"
+"\n"
+"Examples:\n"
+"  - \"user.blah=abc\" will list all containers with the \"blah\" user "
+"property set to \"abc\".\n"
+"  - \"u.blah=abc\" will do the same\n"
+"  - \"security.privileged=true\" will list all privileged containers\n"
+"  - \"s.privileged=true\" will do the same\n"
+"\n"
+"A regular expression matching a configuration item or its value. (e.g. "
+"volatile.eth0.hwaddr=00:16:3e:.*).\n"
+"\n"
+"== Columns ==\n"
+"The -c option takes a comma separated list of arguments that control\n"
+"which container attributes to output when displaying in table or csv\n"
+"format.\n"
+"\n"
+"Column arguments are either pre-defined shorthand chars (see below),\n"
+"or (extended) config keys.\n"
+"\n"
+"Commas between consecutive shorthand chars are optional.\n"
+"\n"
+"Pre-defined column shorthand chars:\n"
+"  4 - IPv4 address\n"
+"  6 - IPv6 address\n"
+"  a - Architecture\n"
+"  b - Storage pool\n"
+"  c - Creation date\n"
+"  d - Description\n"
+"  l - Last used date\n"
+"  n - Name\n"
+"  N - Number of Processes\n"
+"  p - PID of the container's init process\n"
+"  P - Profiles\n"
+"  s - State\n"
+"  S - Number of snapshots\n"
+"  t - Type (persistent or ephemeral)\n"
+"  L - Location of the container (e.g. its node)\n"
+"\n"
+"Custom columns are defined with \"key[:name][:maxWidth]\":\n"
+"  KEY: The (extended) config key to display\n"
+"  NAME: Name to display in the column header.\n"
+"  Defaults to the key if not specified or empty.\n"
+"\n"
+"  MAXWIDTH: Max width of the column (longer results are truncated).\n"
+"  Defaults to -1 (unlimited). Use 0 to limit to the column header size."
+msgstr ""
+
+#: lxc/image_alias.go:148
+msgid "List image aliases"
+msgstr ""
+
+#: lxc/image_alias.go:149
+msgid ""
+"List image aliases\n"
+"\n"
+"Filters may be part of the image hash or part of the image alias name.\n"
+msgstr ""
+
+#: lxc/image.go:889
+msgid "List images"
+msgstr ""
+
+#: lxc/image.go:890
+msgid ""
+"List images\n"
+"\n"
+"Filters may be of the <key>=<value> form for property based filtering,\n"
+"or part of the image hash or part of the image alias name.\n"
+"\n"
+"The -c option takes a (optionally comma-separated) list of arguments\n"
+"that control which image attributes to output when displaying in table\n"
+"or csv format.\n"
+"\n"
+"Default column layout is: lfpdasu\n"
+"\n"
+"Column shorthand chars:\n"
+"\n"
+"    l - Shortest image alias (and optionally number of other aliases)\n"
+"    L - Newline-separated list of all image aliases\n"
+"    f - Fingerprint\n"
+"    p - Whether image is public\n"
+"    d - Description\n"
+"    a - Architecture\n"
+"    s - Size"
+msgstr ""
+
+#: lxc/profile.go:567 lxc/profile.go:568
+msgid "List profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:917 lxc/storage_volume.go:918
+msgid "List storage volumes"
+msgstr ""
+
+#: lxc/remote.go:413 lxc/remote.go:414
+msgid "List the available remotes"
+msgstr ""
+
+#: lxc/config_trust.go:114 lxc/config_trust.go:115
+msgid "List trusted clients"
+msgstr ""
+
+#: lxc/operation.go:24 lxc/operation.go:25
+msgid "List, show and delete background operations"
+msgstr ""
+
+#: lxc/info.go:123
+#, c-format
+msgid "Location: %s"
+msgstr ""
+
+#: lxc/info.go:275
+msgid "Log:"
+msgstr ""
+
+#: lxc/network.go:852
+msgid "MAC ADDRESS"
+msgstr ""
+
+#: lxc/network.go:783
+msgid "MANAGED"
+msgstr ""
+
+#: lxc/cluster.go:123
+msgid "MESSAGE"
+msgstr ""
+
+#: lxc/image.go:137 lxc/image.go:576
+msgid "Make image public"
+msgstr ""
+
+#: lxc/publish.go:38
+msgid "Make the image public"
+msgstr ""
+
+#: lxc/network.go:32
+msgid "Manage an attach containers to networks"
+msgstr ""
+
+#: lxc/network.go:31
+msgid "Manage and attach containers to networks"
+msgstr ""
+
+#: lxc/cluster.go:25 lxc/cluster.go:26
+msgid "Manage cluster members"
+msgstr ""
+
+#: lxc/alias.go:22 lxc/alias.go:23
+msgid "Manage command aliases"
+msgstr ""
+
+#: lxc/config.go:28 lxc/config.go:29
+msgid "Manage container and server configuration options"
+msgstr ""
+
+#: lxc/config_device.go:23 lxc/config_device.go:24
+msgid "Manage container devices"
+msgstr ""
+
+#: lxc/config_template.go:29 lxc/config_template.go:30
+msgid "Manage container file templates"
+msgstr ""
+
+#: lxc/config_metadata.go:28 lxc/config_metadata.go:29
+msgid "Manage container metadata files"
+msgstr ""
+
+#: lxc/file.go:39 lxc/file.go:40
+msgid "Manage files in containers"
+msgstr ""
+
+#: lxc/image_alias.go:25 lxc/image_alias.go:26
+msgid "Manage image aliases"
+msgstr ""
+
+#: lxc/image.go:41
+msgid "Manage images"
+msgstr ""
+
+#: lxc/image.go:42
+msgid ""
+"Manage images\n"
+"\n"
+"In LXD containers are created from images. Those images were themselves\n"
+"either generated from an existing container or downloaded from an image\n"
+"server.\n"
+"\n"
+"When using remote images, LXD will automatically cache images for you\n"
+"and remove them upon expiration.\n"
+"\n"
+"The image unique identifier is the hash (sha-256) of its representation\n"
+"as a compressed tarball (or for split images, the concatenation of the\n"
+"metadata and rootfs tarballs).\n"
+"\n"
+"Images can be referenced by their full hash, shortest unique partial\n"
+"hash or alias name (if one is set)."
+msgstr ""
+
+#: lxc/profile.go:29 lxc/profile.go:30
+msgid "Manage profiles"
+msgstr ""
+
+#: lxc/storage.go:32 lxc/storage.go:33
+msgid "Manage storage pools and volumes"
+msgstr ""
+
+#: lxc/storage_volume.go:33
+msgid "Manage storage volumes"
+msgstr ""
+
+#: lxc/storage_volume.go:34
+msgid ""
+"Manage storage volumes\n"
+"\n"
+"Unless specified through a prefix, all volume operations affect \"custom"
+"\" (user created) volumes."
+msgstr ""
+
+#: lxc/remote.go:33 lxc/remote.go:34
+msgid "Manage the list of remote servers"
+msgstr ""
+
+#: lxc/config_trust.go:29 lxc/config_trust.go:30
+msgid "Manage trusted clients"
+msgstr ""
+
+#: lxc/info.go:197
+msgid "Memory (current)"
+msgstr ""
+
+#: lxc/info.go:201
+msgid "Memory (peak)"
+msgstr ""
+
+#: lxc/info.go:213
+msgid "Memory usage:"
+msgstr ""
+
+#: lxc/monitor.go:49
+msgid "Minimum level for log messages"
+msgstr ""
+
+#: lxc/config_metadata.go:102 lxc/config_metadata.go:200
+#: lxc/config_template.go:91 lxc/config_template.go:134
+#: lxc/config_template.go:176 lxc/config_template.go:260
+#: lxc/config_template.go:322 lxc/profile.go:197 lxc/profile.go:656
+msgid "Missing container name"
+msgstr ""
+
+#: lxc/profile.go:126
+msgid "Missing container.name name"
+msgstr ""
+
+#: lxc/config_device.go:103 lxc/config_device.go:203 lxc/config_device.go:276
+#: lxc/config_device.go:342 lxc/config_device.go:429 lxc/config_device.go:517
+#: lxc/config_device.go:606
+msgid "Missing name"
+msgstr ""
+
+#: lxc/network.go:128 lxc/network.go:201 lxc/network.go:344 lxc/network.go:391
+#: lxc/network.go:476 lxc/network.go:581 lxc/network.go:686 lxc/network.go:832
+#: lxc/network.go:897 lxc/network.go:946 lxc/network.go:1015
+msgid "Missing network name"
+msgstr ""
+
+#: lxc/storage.go:185 lxc/storage.go:252 lxc/storage.go:353 lxc/storage.go:408
+#: lxc/storage.go:603 lxc/storage.go:677 lxc/storage_volume.go:146
+#: lxc/storage_volume.go:225 lxc/storage_volume.go:451
+#: lxc/storage_volume.go:526 lxc/storage_volume.go:585
+#: lxc/storage_volume.go:667 lxc/storage_volume.go:766
+#: lxc/storage_volume.go:878 lxc/storage_volume.go:942
+#: lxc/storage_volume.go:1050 lxc/storage_volume.go:1114
+#: lxc/storage_volume.go:1197
+msgid "Missing pool name"
+msgstr ""
+
+#: lxc/profile.go:321 lxc/profile.go:372 lxc/profile.go:444 lxc/profile.go:544
+#: lxc/profile.go:729 lxc/profile.go:777 lxc/profile.go:836
+msgid "Missing profile name"
+msgstr ""
+
+#: lxc/profile.go:266
+msgid "Missing source profile name"
+msgstr ""
 
-#: lxc/file.go:460
+#: lxc/storage_volume.go:311
+msgid "Missing source volume name"
+msgstr ""
+
+#: lxc/file.go:446
+msgid "Missing target directory"
+msgstr ""
+
+#: lxc/monitor.go:30
+msgid "Monitor a local or remote LXD server"
+msgstr ""
+
+#: lxc/monitor.go:31
+msgid ""
+"Monitor a local or remote LXD server\n"
+"\n"
+"By default the monitor will listen to all message types."
+msgstr ""
+
+#: lxc/network.go:411 lxc/network.go:496 lxc/storage_volume.go:605
+#: lxc/storage_volume.go:686
+msgid "More than one device matches, specify the device name."
+msgstr ""
+
+#: lxc/file.go:224
 msgid "More than one file to download, but target is not a directory"
 msgstr ""
 
-#: lxc/move.go:42
+#: lxc/move.go:30 lxc/move.go:31
+msgid "Move containers within or in between LXD instances"
+msgstr ""
+
+#: lxc/storage_volume.go:993 lxc/storage_volume.go:994
+msgid "Move storage volumes between pools"
+msgstr ""
+
+#: lxc/move.go:44
 msgid "Move the container without its snapshots"
 msgstr ""
 
-#: lxc/storage.go:1128
+#: lxc/storage_volume.go:375
 #, c-format
 msgid "Moving the storage volume: %s"
 msgstr ""
 
-#: lxc/image.go:1292
+#: lxc/image.go:588
 msgid "Must run as root to import from directory"
 msgstr ""
 
-#: lxc/action.go:74
+#: lxc/action.go:147
 msgid "Must supply container name for: "
 msgstr ""
 
-#: lxc/cluster.go:183 lxc/list.go:471 lxc/network.go:576 lxc/profile.go:573
-#: lxc/remote.go:409 lxc/storage.go:731 lxc/storage.go:936
+#: lxc/cluster.go:119 lxc/list.go:468 lxc/network.go:781 lxc/profile.go:613
+#: lxc/remote.go:463 lxc/storage.go:544 lxc/storage_volume.go:966
 msgid "NAME"
 msgstr ""
 
-#: lxc/network.go:558 lxc/operation.go:139 lxc/remote.go:380 lxc/remote.go:385
+#: lxc/network.go:763 lxc/operation.go:138 lxc/remote.go:434 lxc/remote.go:439
 msgid "NO"
 msgstr ""
 
-#: lxc/storage.go:941
+#: lxc/storage_volume.go:971
 msgid "NODE"
 msgstr ""
 
-#: lxc/info.go:117
+#: lxc/info.go:121
 #, c-format
 msgid "Name: %s"
 msgstr ""
 
-#: lxc/network.go:276
+#: lxc/network.go:303
 #, c-format
 msgid "Network %s created"
 msgstr ""
 
-#: lxc/network.go:393
+#: lxc/network.go:353
 #, c-format
 msgid "Network %s deleted"
 msgstr ""
 
-#: lxc/network.go:274
+#: lxc/network.go:301
 #, c-format
 msgid "Network %s pending on node %s"
 msgstr ""
 
-#: lxc/network.go:470
+#: lxc/network.go:906
 #, c-format
 msgid "Network %s renamed to %s"
 msgstr ""
 
-#: lxc/init.go:145 lxc/init.go:146
+#: lxc/init.go:45
 msgid "Network name"
 msgstr ""
 
-#: lxc/info.go:226
+#: lxc/info.go:230
 msgid "Network usage:"
 msgstr ""
 
-#: lxc/image.go:180 lxc/publish.go:36
+#: lxc/publish.go:39
 msgid "New alias to define at target"
 msgstr ""
 
-#: lxc/config.go:414
-msgid "No certificate provided to add"
+#: lxc/image.go:140 lxc/image.go:577
+msgid "New aliases to add to the image"
 msgstr ""
 
-#: lxc/network.go:312 lxc/network.go:365
+#: lxc/network.go:420 lxc/network.go:505
 msgid "No device found for this network"
 msgstr ""
 
-#: lxc/storage.go:444 lxc/storage.go:574
+#: lxc/storage_volume.go:614 lxc/storage_volume.go:695
 msgid "No device found for this storage volume."
 msgstr ""
 
-#: lxc/config.go:446
-msgid "No fingerprint specified."
-msgstr ""
-
-#: lxc/cluster.go:143
+#: lxc/cluster.go:268
 #, c-format
 msgid "Node %s removed"
 msgstr ""
 
-#: lxc/cluster.go:119
+#: lxc/cluster.go:221
 #, c-format
 msgid "Node %s renamed to %s"
 msgstr ""
 
-#: lxc/copy.go:46 lxc/init.go:150 lxc/move.go:45 lxc/network.go:105
-#: lxc/storage.go:165
+#: lxc/copy.go:45 lxc/init.go:48 lxc/move.go:47
 msgid "Node name"
 msgstr ""
 
-#: lxc/storage.go:388 lxc/storage.go:481
+#: lxc/storage_volume.go:164 lxc/storage_volume.go:243
 msgid "Only \"custom\" volumes can be attached to containers."
 msgstr ""
 
-#: lxc/remote.go:101
+#: lxc/remote.go:146
 msgid "Only https URLs are supported for simplestreams"
 msgstr ""
 
-#: lxc/image.go:688
+#: lxc/image.go:658
 msgid "Only https:// is supported for remote image import."
 msgstr ""
 
-#: lxc/network.go:421 lxc/network.go:605
+#: lxc/network.go:607 lxc/network.go:960
 msgid "Only managed networks can be modified."
 msgstr ""
 
-#: lxc/operation.go:85
+#: lxc/operation.go:83
 #, c-format
 msgid "Operation %s deleted"
 msgstr ""
 
-#: lxc/help.go:71 lxc/main.go:139 lxc/main.go:195
-msgid "Options:"
-msgstr ""
-
-#: lxc/exec.go:69
+#: lxc/exec.go:53
 msgid "Override the terminal mode (auto, interactive or non-interactive)"
 msgstr ""
 
-#: lxc/list.go:641
+#: lxc/list.go:638
 msgid "PERSISTENT"
 msgstr ""
 
-#: lxc/list.go:473
+#: lxc/list.go:470
 msgid "PID"
 msgstr ""
 
-#: lxc/list.go:472
+#: lxc/list.go:469
 msgid "PROCESSES"
 msgstr ""
 
-#: lxc/list.go:474
+#: lxc/list.go:471
 msgid "PROFILES"
 msgstr ""
 
-#: lxc/remote.go:411
+#: lxc/remote.go:465
 msgid "PROTOCOL"
 msgstr ""
 
-#: lxc/image.go:234 lxc/remote.go:413
+#: lxc/image.go:924 lxc/remote.go:467
 msgid "PUBLIC"
 msgstr ""
 
-#: lxc/info.go:220
+#: lxc/info.go:224
 msgid "Packets received"
 msgstr ""
 
-#: lxc/info.go:221
+#: lxc/info.go:225
 msgid "Packets sent"
 msgstr ""
 
-#: lxc/help.go:78
-msgid "Path to an alternate client configuration directory"
-msgstr ""
-
-#: lxc/help.go:79
-msgid "Path to an alternate server directory"
-msgstr ""
-
-#: lxc/main.go:240
-msgid "Pause containers."
-msgstr ""
-
-#: lxc/main.go:42
-msgid "Permission denied, are you in the lxd group?"
+#: lxc/action.go:48 lxc/action.go:49
+msgid "Pause containers"
 msgstr ""
 
-#: lxc/info.go:138
+#: lxc/info.go:142
 #, c-format
 msgid "Pid: %d"
 msgstr ""
 
-#: lxc/network.go:446 lxc/profile.go:276 lxc/storage.go:648 lxc/storage.go:1210
+#: lxc/network.go:632 lxc/profile.go:491 lxc/storage.go:299
+#: lxc/storage_volume.go:823
 msgid "Press enter to open the editor again"
 msgstr ""
 
-#: lxc/config.go:822 lxc/config.go:887 lxc/config.go:1397 lxc/config.go:1447
-#: lxc/image.go:1192
+#: lxc/config.go:196 lxc/config.go:260 lxc/config_metadata.go:145
+#: lxc/config_template.go:205 lxc/image.go:406
 msgid "Press enter to start the editor again"
 msgstr ""
 
-#: lxc/monitor.go:68
+#: lxc/monitor.go:47
 msgid "Pretty rendering"
 msgstr ""
 
-#: lxc/help.go:73
-msgid "Print debug information"
-msgstr ""
-
-#: lxc/help.go:72
-msgid "Print less common commands"
+#: lxc/main.go:55
+msgid "Print help"
 msgstr ""
 
-#: lxc/query.go:37
+#: lxc/query.go:36
 msgid "Print the raw response"
 msgstr ""
 
-#: lxc/help.go:74
-msgid "Print verbose information"
+#: lxc/main.go:54
+msgid "Print version number"
 msgstr ""
 
-#: lxc/info.go:162
+#: lxc/info.go:166
 #, c-format
 msgid "Processes: %d"
 msgstr ""
 
-#: lxc/profile.go:362
+#: lxc/main_aliases.go:123 lxc/main_aliases.go:131
+#, c-format
+msgid "Processing aliases failed: %s\n"
+msgstr ""
+
+#: lxc/profile.go:147
 #, c-format
 msgid "Profile %s added to %s"
 msgstr ""
 
-#: lxc/profile.go:226
+#: lxc/profile.go:333
 #, c-format
 msgid "Profile %s created"
 msgstr ""
 
-#: lxc/profile.go:310
+#: lxc/profile.go:381
 #, c-format
 msgid "Profile %s deleted"
 msgstr ""
 
-#: lxc/profile.go:397
+#: lxc/profile.go:690
 #, c-format
 msgid "Profile %s removed from %s"
 msgstr ""
 
-#: lxc/profile.go:300
+#: lxc/profile.go:738
 #, c-format
 msgid "Profile %s renamed to %s"
 msgstr ""
 
-#: lxc/copy.go:39 lxc/copy.go:40 lxc/init.go:141 lxc/init.go:142
+#: lxc/copy.go:40 lxc/init.go:43
 msgid "Profile to apply to the new container"
 msgstr ""
 
-#: lxc/profile.go:339
+#: lxc/profile.go:225
 #, c-format
 msgid "Profiles %s applied to %s"
 msgstr ""
 
-#: lxc/info.go:136
+#: lxc/info.go:140
 #, c-format
 msgid "Profiles: %s"
 msgstr ""
 
-#: lxc/image.go:619
+#: lxc/image.go:849
 msgid "Properties:"
 msgstr ""
 
-#: lxc/remote.go:72
+#: lxc/remote.go:92
 msgid "Public image server"
 msgstr ""
 
-#: lxc/image.go:602
+#: lxc/image.go:827
 #, c-format
 msgid "Public: %s"
 msgstr ""
 
-#: lxc/file.go:68 lxc/file.go:69
-msgid "Recursively push or pull files"
+#: lxc/publish.go:33 lxc/publish.go:34
+msgid "Publish containers as images"
 msgstr ""
 
-#: lxc/image.go:529
-#, c-format
-msgid "Refreshing the image: %s"
+#: lxc/file.go:184 lxc/file.go:185
+msgid "Pull files from containers"
 msgstr ""
 
-#: lxc/remote.go:69
-msgid "Remote admin password"
+#: lxc/file.go:323 lxc/file.go:324
+msgid "Push files into containers"
 msgstr ""
 
-#: lxc/utils/cancel.go:34
-msgid "Remote operation canceled by user"
+#: lxc/file.go:192 lxc/file.go:330
+msgid "Recursively transfer files"
+msgstr ""
+
+#: lxc/image.go:1211 lxc/image.go:1212
+msgid "Refresh images"
 msgstr ""
 
-#: lxc/info.go:122
+#: lxc/image.go:1239
 #, c-format
-msgid "Remote: %s"
+msgid "Refreshing the image: %s"
 msgstr ""
 
-#: lxc/delete.go:42
+#: lxc/remote.go:515
 #, c-format
-msgid "Remove %s (yes/no): "
+msgid "Remote %s already exists"
 msgstr ""
 
-#: lxc/storage.go:1247
+#: lxc/remote.go:507 lxc/remote.go:569 lxc/remote.go:618 lxc/remote.go:656
 #, c-format
-msgid "Renamed storage volume from \"%s\" to \"%s\""
+msgid "Remote %s doesn't exist"
 msgstr ""
 
-#: lxc/delete.go:36 lxc/delete.go:37
-msgid "Require user confirmation"
+#: lxc/remote.go:116
+#, c-format
+msgid "Remote %s exists as <%s>"
 msgstr ""
 
-#: lxc/info.go:159
-msgid "Resources:"
+#: lxc/remote.go:511 lxc/remote.go:573 lxc/remote.go:660
+#, c-format
+msgid "Remote %s is static and cannot be modified"
 msgstr ""
 
-#: lxc/main.go:248
-msgid "Restart containers."
+#: lxc/remote.go:89
+msgid "Remote admin password"
 msgstr ""
 
-#: lxc/console.go:38
-msgid "Retrieve the container's console log"
+#: lxc/utils/cancel.go:34
+msgid "Remote operation canceled by user"
 msgstr ""
 
-#: lxc/init.go:293
+#: lxc/info.go:126
 #, c-format
-msgid "Retrieving image: %s"
+msgid "Remote: %s"
 msgstr ""
 
-#: lxc/action.go:52
-msgid "Run command against all containers"
+#: lxc/delete.go:42
+#, c-format
+msgid "Remove %s (yes/no): "
 msgstr ""
 
-#: lxc/image.go:237
-msgid "SIZE"
+#: lxc/cluster.go:237 lxc/cluster.go:238
+msgid "Remove a member from the cluster"
 msgstr ""
 
-#: lxc/list.go:475
-msgid "SNAPSHOTS"
+#: lxc/alias.go:197 lxc/alias.go:198
+msgid "Remove aliases"
 msgstr ""
 
-#: lxc/storage.go:738
-msgid "SOURCE"
+#: lxc/config_device.go:404 lxc/config_device.go:405
+msgid "Remove container devices"
 msgstr ""
 
-#: lxc/cluster.go:186 lxc/list.go:476 lxc/network.go:583 lxc/storage.go:736
-msgid "STATE"
+#: lxc/profile.go:631 lxc/profile.go:632
+msgid "Remove profiles from containers"
 msgstr ""
 
-#: lxc/remote.go:414
-msgid "STATIC"
+#: lxc/remote.go:548 lxc/remote.go:549
+msgid "Remove remotes"
 msgstr ""
 
-#: lxc/operation.go:155
-msgid "STATUS"
+#: lxc/config_trust.go:196 lxc/config_trust.go:197
+msgid "Remove trusted clients"
 msgstr ""
 
-#: lxc/list.go:478
-msgid "STORAGE POOL"
+#: lxc/cluster.go:191 lxc/cluster.go:192
+msgid "Rename a cluster member"
 msgstr ""
 
-#: lxc/remote.go:71
-msgid "Server authentication type (tls or macaroons)"
+#: lxc/alias.go:146 lxc/alias.go:147 lxc/image_alias.go:249
+#: lxc/image_alias.go:250
+msgid "Rename aliases"
 msgstr ""
 
-#: lxc/remote.go:211
-msgid "Server certificate NACKed by user"
+#: lxc/rename.go:19 lxc/rename.go:20
+msgid "Rename containers and snapshots"
 msgstr ""
 
-#: lxc/remote.go:311
-msgid "Server doesn't trust us after authentication"
+#: lxc/network.go:872 lxc/network.go:873
+msgid "Rename networks"
 msgstr ""
 
-#: lxc/remote.go:70
-msgid "Server protocol (lxd or simplestreams)"
+#: lxc/profile.go:704 lxc/profile.go:705
+msgid "Rename profiles"
 msgstr ""
 
-#: lxc/file.go:66
-msgid "Set the file's gid on push"
+#: lxc/remote.go:486 lxc/remote.go:487
+msgid "Rename remotes"
 msgstr ""
 
-#: lxc/file.go:67
-msgid "Set the file's perms on push"
+#: lxc/storage_volume.go:1024 lxc/storage_volume.go:1025
+msgid "Rename storage volumes"
 msgstr ""
 
-#: lxc/file.go:65
-msgid "Set the file's uid on push"
+#: lxc/storage_volume.go:1073
+#, c-format
+msgid "Renamed storage volume from \"%s\" to \"%s\""
 msgstr ""
 
-#: lxc/help.go:29
-msgid "Show all commands (not just interesting ones)"
+#: lxc/delete.go:35
+msgid "Require user confirmation"
 msgstr ""
 
-#: lxc/help.go:75
-msgid "Show client version"
+#: lxc/info.go:163
+msgid "Resources:"
 msgstr ""
 
-#: lxc/info.go:40
-msgid "Show the container's last 100 log lines?"
+#: lxc/action.go:68
+msgid "Restart containers"
 msgstr ""
 
-#: lxc/config.go:36
-msgid "Show the expanded configuration"
+#: lxc/action.go:69
+msgid ""
+"Restart containers\n"
+"\n"
+"The opposite of \"lxc pause\" is \"lxc start\"."
 msgstr ""
 
-#: lxc/info.go:41
-msgid "Show the resources available to the server"
+#: lxc/restore.go:23
+msgid "Restore containers from snapshots"
 msgstr ""
 
-#: lxc/storage.go:163
-msgid "Show the resources available to the storage pool"
+#: lxc/restore.go:24
+msgid ""
+"Restore containers from snapshots\n"
+"\n"
+"If --stateful is passed, then the running state will be restored too."
+msgstr ""
+
+#: lxc/console.go:39
+msgid "Retrieve the container's console log"
+msgstr ""
+
+#: lxc/init.go:201
+#, c-format
+msgid "Retrieving image: %s"
+msgstr ""
+
+#: lxc/action.go:112
+msgid "Run command against all containers"
+msgstr ""
+
+#: lxc/image.go:927
+msgid "SIZE"
+msgstr ""
+
+#: lxc/list.go:472
+msgid "SNAPSHOTS"
+msgstr ""
+
+#: lxc/storage.go:551
+msgid "SOURCE"
+msgstr ""
+
+#: lxc/cluster.go:122 lxc/list.go:473 lxc/network.go:788 lxc/storage.go:549
+msgid "STATE"
+msgstr ""
+
+#: lxc/remote.go:468
+msgid "STATIC"
+msgstr ""
+
+#: lxc/operation.go:154
+msgid "STATUS"
+msgstr ""
+
+#: lxc/list.go:475
+msgid "STORAGE POOL"
+msgstr ""
+
+#: lxc/query.go:26 lxc/query.go:27
+msgid "Send a raw query to LXD"
+msgstr ""
+
+#: lxc/remote.go:91
+msgid "Server authentication type (tls or macaroons)"
+msgstr ""
+
+#: lxc/remote.go:260
+msgid "Server certificate NACKed by user"
+msgstr ""
+
+#: lxc/remote.go:360
+msgid "Server doesn't trust us after authentication"
+msgstr ""
+
+#: lxc/remote.go:90
+msgid "Server protocol (lxd or simplestreams)"
+msgstr ""
+
+#: lxc/config_device.go:492 lxc/config_device.go:493
+msgid "Set container device configuration keys"
+msgstr ""
+
+#: lxc/config.go:354 lxc/config.go:355
+msgid "Set container or server configuration keys"
+msgstr ""
+
+#: lxc/network.go:919 lxc/network.go:920
+msgid "Set network configuration keys"
+msgstr ""
+
+#: lxc/profile.go:752 lxc/profile.go:753
+msgid "Set profile configuration keys"
+msgstr ""
+
+#: lxc/storage.go:572 lxc/storage.go:573
+msgid "Set storage pool configuration keys"
+msgstr ""
+
+#: lxc/storage_volume.go:1088 lxc/storage_volume.go:1089
+msgid "Set storage volume configuration keys"
+msgstr ""
+
+#: lxc/remote.go:635 lxc/remote.go:636
+msgid "Set the URL for the remote"
+msgstr ""
+
+#: lxc/remote.go:597 lxc/remote.go:598
+msgid "Set the default remote"
+msgstr ""
+
+#: lxc/file.go:333
+msgid "Set the file's gid on push"
+msgstr ""
+
+#: lxc/file.go:334
+msgid "Set the file's perms on push"
+msgstr ""
+
+#: lxc/file.go:332
+msgid "Set the file's uid on push"
+msgstr ""
+
+#: lxc/main.go:57
+msgid "Show all debug messages"
+msgstr ""
+
+#: lxc/main.go:58
+msgid "Show all information messages"
+msgstr ""
+
+#: lxc/config_metadata.go:175 lxc/config_metadata.go:176
+msgid "Show container metadata files"
+msgstr ""
+
+#: lxc/config.go:451 lxc/config.go:452
+msgid "Show container or server configurations"
+msgstr ""
+
+#: lxc/info.go:28 lxc/info.go:29
+msgid "Show container or server information"
+msgstr ""
+
+#: lxc/config_template.go:297 lxc/config_template.go:298
+msgid "Show content of container file templates"
+msgstr ""
+
+#: lxc/cluster.go:141 lxc/cluster.go:142
+msgid "Show details of a cluster member"
+msgstr ""
+
+#: lxc/operation.go:173 lxc/operation.go:174
+msgid "Show details on a background operation"
+msgstr ""
+
+#: lxc/config_device.go:581 lxc/config_device.go:582
+msgid "Show full device configuration for containers or profiles"
+msgstr ""
+
+#: lxc/image.go:1284 lxc/image.go:1285
+msgid "Show image properties"
+msgstr ""
+
+#: lxc/main.go:61
+msgid "Show less common commands"
 msgstr ""
 
-#: lxc/storage.go:164
+#: lxc/network.go:988 lxc/network.go:989
+msgid "Show network configurations"
+msgstr ""
+
+#: lxc/profile.go:811 lxc/profile.go:812
+msgid "Show profile configurations"
+msgstr ""
+
+#: lxc/storage.go:644 lxc/storage.go:645
+msgid "Show storage pool configurations and resources"
+msgstr ""
+
+#: lxc/storage_volume.go:1165
+msgid "Show storage volum configurations"
+msgstr ""
+
+#: lxc/storage_volume.go:1166
+msgid "Show storage volume configurations"
+msgstr ""
+
+#: lxc/info.go:39
+msgid "Show the container's last 100 log lines?"
+msgstr ""
+
+#: lxc/remote.go:379 lxc/remote.go:380
+msgid "Show the default remote"
+msgstr ""
+
+#: lxc/config.go:455
+msgid "Show the expanded configuration"
+msgstr ""
+
+#: lxc/info.go:40
+msgid "Show the resources available to the server"
+msgstr ""
+
+#: lxc/storage.go:648
+msgid "Show the resources available to the storage pool"
+msgstr ""
+
+#: lxc/storage.go:386
 msgid "Show the used and free space in bytes"
 msgstr ""
 
-#: lxc/image.go:600
+#: lxc/image.go:775 lxc/image.go:776
+msgid "Show useful information about images"
+msgstr ""
+
+#: lxc/storage.go:382 lxc/storage.go:383
+msgid "Show useful information about storage pools"
+msgstr ""
+
+#: lxc/image.go:825
 #, c-format
 msgid "Size: %.2fMB"
 msgstr ""
 
-#: lxc/info.go:240
+#: lxc/info.go:244
 msgid "Snapshots:"
 msgstr ""
 
-#: lxc/action.go:163
+#: lxc/action.go:242
 #, c-format
 msgid "Some containers failed to %s"
 msgstr ""
 
-#: lxc/image.go:634
+#: lxc/image.go:867
 msgid "Source:"
 msgstr ""
 
-#: lxc/main.go:258
-msgid "Start containers."
+#: lxc/action.go:29 lxc/action.go:30
+msgid "Start containers"
 msgstr ""
 
-#: lxc/launch.go:59
+#: lxc/launch.go:62
 #, c-format
 msgid "Starting %s"
 msgstr ""
 
-#: lxc/info.go:130
+#: lxc/info.go:134
 #, c-format
 msgid "Status: %s"
 msgstr ""
 
-#: lxc/main.go:264
-msgid "Stop containers."
+#: lxc/action.go:90 lxc/action.go:91
+msgid "Stop containers"
 msgstr ""
 
-#: lxc/publish.go:37 lxc/publish.go:38
+#: lxc/publish.go:40
 msgid "Stop the container if currently running"
 msgstr ""
 
-#: lxc/publish.go:136
+#: lxc/publish.go:144
 msgid "Stopping container failed!"
 msgstr ""
 
-#: lxc/delete.go:121
+#: lxc/delete.go:120
 #, c-format
 msgid "Stopping the container failed: %s"
 msgstr ""
 
-#: lxc/storage.go:538
+#: lxc/storage.go:144
 #, c-format
 msgid "Storage pool %s created"
 msgstr ""
 
-#: lxc/storage.go:598
+#: lxc/storage.go:194
 #, c-format
 msgid "Storage pool %s deleted"
 msgstr ""
 
-#: lxc/storage.go:536
+#: lxc/storage.go:142
 #, c-format
 msgid "Storage pool %s pending on node %s"
 msgstr ""
 
-#: lxc/init.go:147 lxc/init.go:148
+#: lxc/init.go:46
 msgid "Storage pool name"
 msgstr ""
 
-#: lxc/storage.go:980
+#: lxc/storage_volume.go:484
 #, c-format
 msgid "Storage volume %s created"
 msgstr ""
 
-#: lxc/storage.go:1000
+#: lxc/storage_volume.go:545
 #, c-format
 msgid "Storage volume %s deleted"
 msgstr ""
 
-#: lxc/storage.go:1135
+#: lxc/storage_volume.go:388
 msgid "Storage volume copied successfully!"
 msgstr ""
 
-#: lxc/storage.go:1129
+#: lxc/storage_volume.go:376
 msgid "Storage volume moved successfully!"
 msgstr ""
 
-#: lxc/action.go:50
-msgid "Store the container state (only for stop)"
+#: lxc/action.go:115
+msgid "Store the container state"
 msgstr ""
 
-#: lxc/info.go:201
+#: lxc/info.go:205
 msgid "Swap (current)"
 msgstr ""
 
-#: lxc/info.go:205
+#: lxc/info.go:209
 msgid "Swap (peak)"
 msgstr ""
 
-#: lxc/alias.go:85
+#: lxc/alias.go:128
 msgid "TARGET"
 msgstr ""
 
-#: lxc/list.go:477 lxc/network.go:516 lxc/network.go:577 lxc/operation.go:153
-#: lxc/storage.go:935
+#: lxc/list.go:474 lxc/network.go:782 lxc/network.go:854 lxc/operation.go:152
+#: lxc/storage_volume.go:965
 msgid "TYPE"
 msgstr ""
 
-#: lxc/delete.go:105
+#: lxc/delete.go:104
 msgid "The container is currently running, stop it first or pass --force."
 msgstr ""
 
-#: lxc/publish.go:101
+#: lxc/publish.go:109
 msgid ""
 "The container is currently running. Use --force to have it stopped and "
 "restarted."
 msgstr ""
 
-#: lxc/init.go:372
+#: lxc/init.go:280
 msgid "The container you are starting doesn't have any network attached to it."
 msgstr ""
 
-#: lxc/config.go:944 lxc/config.go:961 lxc/config.go:1240
+#: lxc/config_device.go:130 lxc/config_device.go:147 lxc/config_device.go:354
 msgid "The device already exists"
 msgstr ""
 
-#: lxc/config.go:1007 lxc/config.go:1019 lxc/config.go:1055 lxc/config.go:1073
-#: lxc/config.go:1119 lxc/config.go:1136 lxc/config.go:1179 lxc/config.go:1197
+#: lxc/config_device.go:218 lxc/config_device.go:230 lxc/config_device.go:442
+#: lxc/config_device.go:460 lxc/config_device.go:533 lxc/config_device.go:550
 msgid "The device doesn't exist"
 msgstr ""
 
-#: lxc/init.go:356
+#: lxc/init.go:264
 #, c-format
 msgid "The local image '%s' couldn't be found, trying '%s:%s' instead."
 msgstr ""
 
-#: lxc/init.go:352
+#: lxc/init.go:260
 #, c-format
 msgid "The local image '%s' couldn't be found, trying '%s:' instead."
 msgstr ""
 
-#: lxc/action.go:35
-msgid "The opposite of \"lxc pause\" is \"lxc start\"."
-msgstr ""
-
-#: lxc/config.go:1245
+#: lxc/config_device.go:359
 msgid "The profile device doesn't exist"
 msgstr ""
 
-#: lxc/network.go:317 lxc/network.go:370 lxc/storage.go:449 lxc/storage.go:579
+#: lxc/network.go:425 lxc/network.go:510 lxc/storage_volume.go:619
+#: lxc/storage_volume.go:700
 msgid "The specified device doesn't exist"
 msgstr ""
 
-#: lxc/network.go:321 lxc/network.go:374
+#: lxc/network.go:429 lxc/network.go:514
 msgid "The specified device doesn't match the network"
 msgstr ""
 
-#: lxc/publish.go:74
+#: lxc/publish.go:82
 msgid "There is no \"image name\".  Did you want an alias?"
 msgstr ""
 
-#: lxc/help.go:47
-msgid ""
-"This is the LXD command line client.\n"
-"\n"
-"All of LXD's features can be driven through the various commands below.\n"
-"For help with any of those, simply call them with --help."
-msgstr ""
-
-#: lxc/action.go:46
+#: lxc/action.go:122
 msgid "Time to wait for the container before killing it"
 msgstr ""
 
-#: lxc/image.go:603
+#: lxc/image.go:828
 msgid "Timestamps:"
 msgstr ""
 
-#: lxc/init.go:374
+#: lxc/init.go:282
 msgid "To attach a network to a container, use: lxc network attach"
 msgstr ""
 
-#: lxc/init.go:373
+#: lxc/init.go:281
 msgid "To create a new network, use: lxc network create"
 msgstr ""
 
-#: lxc/console.go:173
+#: lxc/console.go:185
 msgid "To detach from the console, press: <ctrl>+a q"
 msgstr ""
 
-#: lxc/main.go:172
+#: lxc/main.go:260
 msgid "To start your first container, try: lxc launch ubuntu:16.04"
 msgstr ""
 
-#: lxc/copy.go:43 lxc/move.go:43
+#: lxc/storage_volume.go:997
+msgid "Transfer mode, one of pull (default), push or relay"
+msgstr ""
+
+#: lxc/copy.go:42
+msgid "Transfer mode. One of pull (default), push or relay"
+msgstr ""
+
+#: lxc/move.go:45 lxc/storage_volume.go:286
 msgid "Transfer mode. One of pull (default), push or relay."
 msgstr ""
 
-#: lxc/copy.go:212
+#: lxc/copy.go:229
 #, c-format
 msgid "Transferring container: %s"
 msgstr ""
 
-#: lxc/image.go:717
+#: lxc/image.go:687
 #, c-format
 msgid "Transferring image: %s"
 msgstr ""
 
-#: lxc/action.go:108 lxc/launch.go:77
+#: lxc/action.go:181 lxc/launch.go:80
 #, c-format
 msgid "Try `lxc info --show-log %s` for more info"
 msgstr ""
 
-#: lxc/info.go:132
+#: lxc/info.go:136
 msgid "Type: ephemeral"
 msgstr ""
 
-#: lxc/info.go:134
+#: lxc/info.go:138
 msgid "Type: persistent"
 msgstr ""
 
-#: lxc/image.go:238
+#: lxc/image.go:928
 msgid "UPLOAD DATE"
 msgstr ""
 
-#: lxc/cluster.go:184 lxc/remote.go:410
+#: lxc/cluster.go:120 lxc/remote.go:464
 msgid "URL"
 msgstr ""
 
-#: lxc/network.go:580 lxc/profile.go:574 lxc/storage.go:740 lxc/storage.go:938
+#: lxc/network.go:785 lxc/profile.go:614 lxc/storage.go:553
+#: lxc/storage_volume.go:968
 msgid "USED BY"
 msgstr ""
 
-#: lxc/manpage.go:36
-msgid "Unable to find help2man."
+#: lxc/list.go:514
+#, c-format
+msgid "Unknown column shorthand char '%c' in '%s'"
 msgstr ""
 
-#: lxc/file.go:124
+#: lxc/file.go:596
 #, c-format
 msgid "Unknown file type '%s'"
 msgstr ""
 
-#: lxc/image.go:608
-#, c-format
-msgid "Uploaded: %s"
+#: lxc/config_device.go:649 lxc/config_device.go:650
+msgid "Unset container device configuration keys"
 msgstr ""
 
-#: lxc/action.go:38
-#, c-format
-msgid ""
-"Usage: lxc %s [--all] [<remote>:]<container> [[<remote>:]<container>...]\n"
-"\n"
-"%s%s"
+#: lxc/config.go:559 lxc/config.go:560
+msgid "Unset container or server configuration keys"
 msgstr ""
 
-#: lxc/help.go:45
-msgid "Usage: lxc <command> [options]"
+#: lxc/network.go:1050 lxc/network.go:1051
+msgid "Unset network configuration keys"
 msgstr ""
 
-#: lxc/alias.go:22
-msgid ""
-"Usage: lxc alias <subcommand> [options]\n"
-"\n"
-"Manage command aliases.\n"
-"\n"
-"lxc alias add <alias> <target>\n"
-"    Add a new alias <alias> pointing to <target>.\n"
-"\n"
-"lxc alias remove <alias>\n"
-"    Remove the alias <alias>.\n"
-"\n"
-"lxc alias list\n"
-"    List all the aliases.\n"
-"\n"
-"lxc alias rename <old alias> <new alias>\n"
-"    Rename remote <old alias> to <new alias>."
+#: lxc/profile.go:865 lxc/profile.go:866
+msgid "Unset profile configuration keys"
 msgstr ""
 
-#: lxc/cluster.go:23
-msgid ""
-"Usage: lxc cluster <subcommand> [options]\n"
-"\n"
-"Manage cluster nodes.\n"
-"\n"
-"lxc cluster list [<remote>:]\n"
-"    List all nodes in the cluster.\n"
-"\n"
-"lxc cluster show [<remote>:]<node>\n"
-"    Show details of a node.\n"
-"\n"
-"lxc cluster rename [<remote>:]<node> <new-name>\n"
-"    Rename a cluster node.\n"
-"\n"
-"lxc cluster delete [<remote>:]<node> [--force]\n"
-"    Delete a node from the cluster."
+#: lxc/storage.go:728 lxc/storage.go:729
+msgid "Unset storage pool configuration keys"
 msgstr ""
 
-#: lxc/config.go:85
-msgid ""
-"Usage: lxc config <subcommand> [options]\n"
-"\n"
-"Change container or server configuration options.\n"
-"\n"
-"*Container configuration*\n"
-"\n"
-"lxc config get [<remote>:][container] <key>\n"
-"    Get container or server configuration key.\n"
-"\n"
-"lxc config set [<remote>:][container] <key> <value>\n"
-"    Set container or server configuration key.\n"
-"\n"
-"lxc config unset [<remote>:][container] <key>\n"
-"    Unset container or server configuration key.\n"
-"\n"
-"lxc config show [<remote>:][container] [--expanded]\n"
-"    Show container or server configuration.\n"
-"\n"
-"lxc config edit [<remote>:][container]\n"
-"    Edit configuration, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"*Container metadata*\n"
-"\n"
-"lxc config metadata show [<remote>:][container]\n"
-"    Show the container metadata.yaml content.\n"
-"\n"
-"lxc config metadata edit [<remote>:][container]\n"
-"    Edit the container metadata.yaml, either by launching external editor or "
-"reading STDIN.\n"
-"\n"
-"*Container templates*\n"
-"\n"
-"lxc config template list [<remote>:][container]\n"
-"    List the names of template files for a container.\n"
-"\n"
-"lxc config template show [<remote>:][container] [template]\n"
-"    Show the content of a template file for a container.\n"
-"\n"
-"lxc config template create [<remote>:][container] [template]\n"
-"    Add an empty template file for a container.\n"
-"\n"
-"lxc config template edit [<remote>:][container] [template]\n"
-"    Edit the content of a template file for a container, either by launching "
-"external editor or reading STDIN.\n"
-"\n"
-"lxc config template delete [<remote>:][container] [template]\n"
-"    Delete a template file for a container.\n"
-"\n"
-"\n"
-"*Device management*\n"
-"\n"
-"lxc config device add [<remote>:]<container> <device> <type> [key=value...]\n"
-"    Add a device to a container.\n"
-"\n"
-"lxc config device get [<remote>:]<container> <device> <key>\n"
-"    Get a device property.\n"
-"\n"
-"lxc config device set [<remote>:]<container> <device> <key> <value>\n"
-"    Set a device property.\n"
-"\n"
-"lxc config device unset [<remote>:]<container> <device> <key>\n"
-"    Unset a device property.\n"
-"\n"
-"lxc config device override [<remote>:]<container> <device> [key=value...]\n"
-"    Copy a profile inherited device into local container config.\n"
-"\n"
-"lxc config device list [<remote>:]<container>\n"
-"    List devices for container.\n"
-"\n"
-"lxc config device show [<remote>:]<container>\n"
-"    Show full device details for container.\n"
-"\n"
-"lxc config device remove [<remote>:]<container> <name>...\n"
-"    Remove device from container.\n"
-"\n"
-"*Client trust store management*\n"
-"\n"
-"lxc config trust list [<remote>:]\n"
-"    List all trusted certs.\n"
-"\n"
-"lxc config trust add [<remote>:] <certfile.crt>\n"
-"    Add certfile.crt to trusted hosts.\n"
-"\n"
-"lxc config trust remove [<remote>:] [hostname|fingerprint]\n"
-"    Remove the cert from trusted hosts.\n"
-"\n"
-"*Examples*\n"
-"\n"
-"cat config.yaml | lxc config edit <container>\n"
-"    Update the container configuration from config.yaml.\n"
-"\n"
-"lxc config device add [<remote>:]container1 <device-name> disk source=/share/"
-"c1 path=opt\n"
-"    Will mount the host's /share/c1 onto /opt in the container.\n"
-"\n"
-"lxc config set [<remote>:]<container> limits.cpu 2\n"
-"    Will set a CPU limit of \"2\" for the container.\n"
-"\n"
-"lxc config set core.https_address [::]:8443\n"
-"    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
-"\n"
-"lxc config set core.trust_password blah\n"
-"    Will set the server's trust password to blah."
+#: lxc/storage_volume.go:1240 lxc/storage_volume.go:1241
+msgid "Unset storage volume configuration keys"
 msgstr ""
 
-#: lxc/console.go:31
-msgid ""
-"Usage: lxc console [<remote>:]<container> [-l]\n"
-"\n"
-"Interact with the container's console device and log."
+#: lxc/image.go:835
+#, c-format
+msgid "Uploaded: %s"
 msgstr ""
 
-#: lxc/copy.go:30
-msgid ""
-"Usage: lxc copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>] "
-"[--ephemeral|e] [--profile|-p <profile>...] [--config|-c <key=value>...] [--"
-"container-only] [--target <node>]\n"
-"\n"
-"Copy containers within or in between LXD instances."
+#: lxc/delete.go:47
+msgid "User aborted delete operation"
 msgstr ""
 
-#: lxc/delete.go:27
+#: lxc/utils/cancel.go:40
 msgid ""
-"Usage: lxc delete [<remote>:]<container>[/<snapshot>] "
-"[[<remote>:]<container>[/<snapshot>]...]\n"
-"\n"
-"Delete containers and snapshots."
+"User signaled us three times, exiting. The remote operation will keep "
+"running."
 msgstr ""
 
-#: lxc/exec.go:53
-msgid ""
-"Usage: lxc exec [<remote>:]<container> [-t] [-T] [-n] [--mode=auto|"
-"interactive|non-interactive] [--env KEY=VALUE...] [--] <command line>\n"
-"\n"
-"Execute commands in containers.\n"
-"\n"
-"The command is executed directly using exec, so there is no shell and shell "
-"patterns (variables, file redirects, ...)\n"
-"won't be understood. If you need a shell environment you need to execute the "
-"shell executable, passing the shell commands\n"
-"as arguments, for example:\n"
-"\n"
-"    lxc exec <container> -- sh -c \"cd /tmp && pwd\"\n"
-"\n"
-"Mode defaults to non-interactive, interactive mode is selected if both stdin "
-"AND stdout are terminals (stderr is ignored)."
+#: lxc/query.go:35
+msgid "Wait for the operation to complete"
 msgstr ""
 
-#: lxc/file.go:39
+#: lxc/restore.go:36
 msgid ""
-"Usage: lxc file <subcommand> [options]\n"
-"\n"
-"Manage files in containers.\n"
-"\n"
-"lxc file pull [-r|--recursive] [<remote>:]<container>/<path> "
-"[[<remote>:]<container>/<path>...] <target path>\n"
-"    Pull files from containers.\n"
-"\n"
-"lxc file push [-r|--recursive] [-p|--create-dirs] [--uid=UID] [--gid=GID] [--"
-"mode=MODE] <source path> [<source path>...] [<remote>:]<container>/<path>\n"
-"    Push files into containers.\n"
-"\n"
-"lxc file delete [<remote>:]<container>/<path> [[<remote>:]<container>/"
-"<path>...]\n"
-"    Delete files in containers.\n"
-"\n"
-"lxc file edit [<remote>:]<container>/<path>\n"
-"    Edit files in containers using the default text editor.\n"
-"\n"
-"*Examples*\n"
-"lxc file push /etc/hosts foo/etc/hosts\n"
-"   To push /etc/hosts into the container \"foo\".\n"
-"\n"
-"lxc file pull foo/etc/hosts .\n"
-"   To pull /etc/hosts from the container and write it to the current "
-"directory."
+"Whether or not to restore the container's running state from snapshot (if "
+"available)"
 msgstr ""
 
-#: lxc/finger.go:15
-msgid ""
-"Usage: lxc finger [<remote>:]\n"
-"\n"
-"Check if the LXD server is alive."
+#: lxc/snapshot.go:31
+msgid "Whether or not to snapshot the container's running state"
 msgstr ""
 
-#: lxc/help.go:22
-msgid ""
-"Usage: lxc help [--all]\n"
-"\n"
-"Help page for the LXD client."
+#: lxc/network.go:765 lxc/operation.go:140 lxc/remote.go:436 lxc/remote.go:441
+msgid "YES"
 msgstr ""
 
-#: lxc/image.go:73
-msgid ""
-"Usage: lxc image <subcommand> [options]\n"
-"\n"
-"Manipulate container images.\n"
-"\n"
-"In LXD containers are created from images. Those images were themselves\n"
-"either generated from an existing container or downloaded from an image\n"
-"server.\n"
-"\n"
-"When using remote images, LXD will automatically cache images for you\n"
-"and remove them upon expiration.\n"
-"\n"
-"The image unique identifier is the hash (sha-256) of its representation\n"
-"as a compressed tarball (or for split images, the concatenation of the\n"
-"metadata and rootfs tarballs).\n"
-"\n"
-"Images can be referenced by their full hash, shortest unique partial\n"
-"hash or alias name (if one is set).\n"
-"\n"
-"\n"
-"lxc image import <tarball>|<dir> [<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) or an image directory into the LXD "
-"image store.\n"
-"    Directory import is only available on Linux and must be performed as "
-"root.\n"
-"\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"
-"    Delete one or more images from the LXD image store.\n"
-"\n"
-"lxc image refresh [<remote>:]<image> [[<remote>:]<image>...]\n"
-"    Refresh one or more images from its parent remote.\n"
-"\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"
-"    The target may be an existing directory, file name, or \"-\" to specify\n"
-"    stdout.  The target MUST be a directory when exporting a split image.\n"
-"    If the target is a directory, the image's name (each part's name for\n"
-"    split images) as found in the database will be used for the exported\n"
-"    image.  If the target is a file (not a directory and not stdout), then\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"
-"    Print everything LXD knows about a given image.\n"
-"\n"
-"lxc image list [<remote>:] [filter] [--format csv|json|table|yaml] [-c "
-"<columns>]\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"
-"    The -c option takes a (optionally comma-separated) list of arguments "
-"that\n"
-"    control which image attributes to output when displaying in table or "
-"csv\n"
-"    format.\n"
-"\n"
-"    Default column layout is: lfpdasu\n"
-"\n"
-"    Column shorthand chars:\n"
-"\n"
-"        l - Shortest image alias (and optionally number of other aliases)\n"
-"\n"
-"        L - Newline-separated list of all image aliases\n"
-"\n"
-"        f - Fingerprint\n"
-"\n"
-"        p - Whether image is public\n"
-"\n"
-"        d - Description\n"
-"\n"
-"        a - Architecture\n"
-"\n"
-"        s - Size\n"
-"\n"
-"        u - Upload date\n"
-"\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"
-"    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"
-"    Create a new alias for an existing image.\n"
-"\n"
-"lxc image alias rename [<remote>:]<alias> <new-name>\n"
-"    Rename an alias.\n"
-"\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."
+#: lxc/exec.go:122
+msgid "You can't pass -t and -T at the same time"
 msgstr ""
 
-#: lxc/info.go:27
+#: lxc/exec.go:126
+msgid "You can't pass -t or -T at the same time as --mode"
+msgstr ""
+
+#: lxc/copy.go:78
+msgid "You must specify a destination container name when using --target"
+msgstr ""
+
+#: lxc/copy.go:73 lxc/move.go:188
+msgid "You must specify a source container name"
+msgstr ""
+
+#: lxc/copy.go:68 lxc/move.go:91 lxc/move.go:183
+msgid "You must use the same source and destination remote when using --target"
+msgstr ""
+
+#: lxc/alias.go:53
+msgid "add <alias> <target>"
+msgstr ""
+
+#: lxc/config_trust.go:57
+msgid "add [<remote>:] <cert>"
+msgstr ""
+
+#: lxc/profile.go:100
+msgid "add [<remote>:]<container> <profile>"
+msgstr ""
+
+#: lxc/config_device.go:74
+msgid "add [<remote>:]<container|profile> <device> <type> [key=value...]"
+msgstr ""
+
+#: lxc/remote.go:82
+msgid "add [<remote>] <IP|FQDN|URL>"
+msgstr ""
+
+#: lxc/alias.go:21 lxc/image_alias.go:24
+msgid "alias"
+msgstr ""
+
+#: lxc/profile.go:160
+msgid "assign [<remote>:]<container> <profiles>"
+msgstr ""
+
+#: lxc/network.go:102
+msgid "attach [<remote>:]<network> <container> [device name] [interface name]"
+msgstr ""
+
+#: lxc/storage_volume.go:120
+msgid "attach [<remote>:]<pool> <volume> <container> [device name] <path>"
+msgstr ""
+
+#: lxc/storage_volume.go:199
 msgid ""
-"Usage: lxc info [<remote>:][<container>] [--show-log] [--resources]\n"
-"\n"
-"Show container or server information.\n"
-"\n"
-"lxc info [<remote>:]<container> [--show-log]\n"
-"    For container information.\n"
-"\n"
-"lxc info [<remote>:] [--resources]\n"
-"    For LXD server information."
+"attach-profile [<remote:>]<pool> <volume> <profile> [device name] <path>"
 msgstr ""
 
-#: lxc/init.go:79
+#: lxc/network.go:175
 msgid ""
-"Usage: lxc init [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
-"profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
-"<node>]\n"
-"\n"
-"Create containers from images.\n"
-"\n"
-"Not specifying -p will result in the default profile.\n"
-"Specifying \"-p\" with no argument will result in no profile.\n"
-"\n"
-"Examples:\n"
-"    lxc init ubuntu:16.04 u1"
+"attach-profile [<remote>:]<network> <profile> [device name] [interface name]"
+msgstr ""
+
+#: lxc/cluster.go:24
+msgid "cluster"
+msgstr ""
+
+#: lxc/config.go:27
+msgid "config"
+msgstr ""
+
+#: lxc/console.go:30
+msgid "console [<remote>:]<container>"
+msgstr ""
+
+#: lxc/storage_volume.go:280
+msgid "copy <pool>/<volume> <pool>/<volume>"
+msgstr ""
+
+#: lxc/image.go:128
+msgid "copy [<remote>:]<image> <remote>:"
+msgstr ""
+
+#: lxc/profile.go:238
+msgid "copy [<remote>:]<profile> [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/copy.go:32
+msgid "copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>]"
+msgstr ""
+
+#: lxc/image_alias.go:57
+msgid "create [<remote>:]<alias> <fingerprint>"
+msgstr ""
+
+#: lxc/config_template.go:65
+msgid "create [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/network.go:248
+msgid "create [<remote>:]<network> [key=value...]"
+msgstr ""
+
+#: lxc/storage.go:87
+msgid "create [<remote>:]<pool> <driver> [key=value]..."
+msgstr ""
+
+#: lxc/storage_volume.go:424
+msgid "create [<remote>:]<pool> <volume> [key=value]..."
+msgstr ""
+
+#: lxc/profile.go:295
+msgid "create [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/remote.go:453
+msgid "default"
+msgstr ""
+
+#: lxc/image_alias.go:103
+msgid "delete [<remote>:]<alias>"
+msgstr ""
+
+#: lxc/config_template.go:107
+msgid "delete [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/file.go:70
+msgid "delete [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...]"
+msgstr ""
+
+#: lxc/delete.go:27
+msgid ""
+"delete [<remote>:]<container>[/<snapshot>] [[<remote>:]<container>[/"
+"<snapshot>]...]"
+msgstr ""
+
+#: lxc/image.go:258
+msgid "delete [<remote>:]<image> [[<remote>:]<image>...]"
+msgstr ""
+
+#: lxc/network.go:317
+msgid "delete [<remote>:]<network>"
+msgstr ""
+
+#: lxc/operation.go:51
+msgid "delete [<remote>:]<operation>"
+msgstr ""
+
+#: lxc/storage.go:158
+msgid "delete [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:498
+msgid "delete [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:345
+msgid "delete [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/storage.go:431
+msgid "description"
+msgstr ""
+
+#: lxc/network.go:365
+msgid "detach [<remote>:]<network> <container> [device name]"
+msgstr ""
+
+#: lxc/storage_volume.go:559
+msgid "detach [<remote>:]<pool> <volume> <container> [device name]"
+msgstr ""
+
+#: lxc/storage_volume.go:641
+msgid "detach-profile [<remote:>]<pool> <volume> <profile> [device name]"
+msgstr ""
+
+#: lxc/network.go:450
+msgid "detach-profile [<remote>:]<network> <container> [device name]"
+msgstr ""
+
+#: lxc/config_device.go:22
+msgid "device"
+msgstr ""
+
+#: lxc/init.go:223
+msgid "didn't get any affected image, container or snapshot from server"
+msgstr ""
+
+#: lxc/image.go:819
+msgid "disabled"
+msgstr ""
+
+#: lxc/storage.go:430
+msgid "driver"
+msgstr ""
+
+#: lxc/config_template.go:150
+msgid "edit [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/file.go:120
+msgid "edit [<remote>:]<container>/<path>"
+msgstr ""
+
+#: lxc/image.go:310
+msgid "edit [<remote>:]<image>"
+msgstr ""
+
+#: lxc/network.go:535
+msgid "edit [<remote>:]<network>"
+msgstr ""
+
+#: lxc/storage.go:206
+msgid "edit [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:722
+msgid "edit [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:394
+msgid "edit [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/config.go:86 lxc/config_metadata.go:52
+msgid "edit [<remote>:][container]"
+msgstr ""
+
+#: lxc/image.go:821
+msgid "enabled"
+msgstr ""
+
+#: lxc/action.go:234
+#, c-format
+msgid "error: %v"
+msgstr ""
+
+#: lxc/exec.go:37
+msgid "exec [<remote>:]<container> [flags] [--] <command line>"
+msgstr ""
+
+#: lxc/image.go:433
+msgid "export [<remote>:]<image> [target]"
+msgstr ""
+
+#: lxc/file.go:38
+msgid "file"
+msgstr ""
+
+#: lxc/config_device.go:177
+msgid "get [<remote>:]<container|profile> <device> <key>"
+msgstr ""
+
+#: lxc/network.go:658
+msgid "get [<remote>:]<network> <key>"
+msgstr ""
+
+#: lxc/storage.go:326
+msgid "get [<remote>:]<pool> <key>"
+msgstr ""
+
+#: lxc/storage_volume.go:851
+msgid "get [<remote>:]<pool> <volume> <key>"
+msgstr ""
+
+#: lxc/profile.go:518
+msgid "get [<remote>:]<profile> <key>"
+msgstr ""
+
+#: lxc/config.go:287
+msgid "get [<remote>:][container] <key>"
+msgstr ""
+
+#: lxc/remote.go:378
+msgid "get-default"
+msgstr ""
+
+#: lxc/image.go:40
+msgid "image"
+msgstr ""
+
+#: lxc/image.go:569
+msgid ""
+"import <tarball>|<directory>|<URL> [<rootfs tarball>] [<remote>:] "
+"[key=value...]"
+msgstr ""
+
+#: lxc/storage.go:428
+msgid "info"
+msgstr ""
+
+#: lxc/image.go:774
+msgid "info [<remote>:]<image>"
+msgstr ""
+
+#: lxc/storage.go:381
+msgid "info [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/info.go:27
+msgid "info [<remote>:][<container>]"
+msgstr ""
+
+#: lxc/init.go:33
+msgid "init [<remote>:]<image> [<remote>:][<name>]"
 msgstr ""
 
 #: lxc/launch.go:20
+msgid "launch [<remote>:]<image> [<remote>:][<name>]"
+msgstr ""
+
+#: lxc/alias.go:96 lxc/remote.go:411
+msgid "list"
+msgstr ""
+
+#: lxc/cluster.go:56 lxc/config_trust.go:112 lxc/network.go:716
+#: lxc/operation.go:95 lxc/profile.go:565 lxc/storage.go:488
+msgid "list [<remote>:]"
+msgstr ""
+
+#: lxc/image.go:887
+msgid "list [<remote>:] [filter]"
+msgstr ""
+
+#: lxc/image_alias.go:146
+msgid "list [<remote>:] [filters...]"
+msgstr ""
+
+#: lxc/list.go:45
+msgid "list [<remote>:] [filters]"
+msgstr ""
+
+#: lxc/config_template.go:234
+msgid "list [<remote>:]<container>"
+msgstr ""
+
+#: lxc/config_device.go:249
+msgid "list [<remote>:]<container|profile>"
+msgstr ""
+
+#: lxc/storage_volume.go:915
+msgid "list [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/network.go:806
+msgid "list-leases [<remote>:]<network>"
+msgstr ""
+
+#: lxc/alias.go:57
 msgid ""
-"Usage: lxc launch [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
-"profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
-"<node>]\n"
-"\n"
-"Create and start containers from images.\n"
-"\n"
-"Not specifying -p will result in the default profile.\n"
-"Specifying \"-p\" with no argument will result in no profile.\n"
-"\n"
-"Examples:\n"
-"    lxc launch ubuntu:16.04 u1"
+"lxc alias add list list -c ns46S\n"
+"    Overwrite the \"list\" command to pass -c ns46S."
 msgstr ""
 
-#: lxc/list.go:44
+#: lxc/alias.go:200
 msgid ""
-"Usage: lxc list [<remote>:] [filters] [--format csv|json|table|yaml] [-c "
-"<columns>] [--fast]\n"
-"\n"
-"List the existing containers.\n"
-"\n"
-"Default column layout: ns46tS\n"
-"Fast column layout: nsacPt\n"
-"\n"
-"*Filters*\n"
-"A single keyword like \"web\" which will list any container with a name "
-"starting by \"web\".\n"
-"\n"
-"A regular expression on the container name. (e.g. .*web.*01$).\n"
-"\n"
-"A key/value pair referring to a configuration item. For those, the namespace "
-"can be abbreviated to the smallest unambiguous identifier.\n"
-"\t- \"user.blah=abc\" will list all containers with the \"blah\" user "
-"property set to \"abc\".\n"
-"\n"
-"\t- \"u.blah=abc\" will do the same\n"
-"\n"
-"\t- \"security.privileged=true\" will list all privileged containers\n"
-"\n"
-"\t- \"s.privileged=true\" will do the same\n"
-"\n"
-"A regular expression matching a configuration item or its value. (e.g. "
-"volatile.eth0.hwaddr=00:16:3e:.*).\n"
-"\n"
-"*Columns*\n"
-"The -c option takes a comma separated list of arguments that control\n"
-"which container attributes to output when displaying in table or csv\n"
-"format.\n"
-"\n"
-"Column arguments are either pre-defined shorthand chars (see below),\n"
-"or (extended) config keys.\n"
-"\n"
-"Commas between consecutive shorthand chars are optional.\n"
-"\n"
-"Pre-defined column shorthand chars:\n"
-"\n"
-"\t4 - IPv4 address\n"
-"\n"
-"\t6 - IPv6 address\n"
-"\n"
-"\ta - Architecture\n"
-"\n"
-"\tb - Storage pool\n"
-"\n"
-"\tc - Creation date\n"
-"\n"
-"\td - Description\n"
-"\n"
-"\tl - Last used date\n"
-"\n"
-"\tn - Name\n"
-"\n"
-"\tN - Number of Processes\n"
-"\n"
-"\tp - PID of the container's init process\n"
-"\n"
-"\tP - Profiles\n"
-"\n"
-"\ts - State\n"
-"\n"
-"\tS - Number of snapshots\n"
-"\n"
-"\tt - Type (persistent or ephemeral)\n"
-"\n"
-"\tL - Location of the container (e.g. its node)\n"
-"\n"
-"Custom columns are defined with \"key[:name][:maxWidth]\":\n"
-"\n"
-"\tKEY: The (extended) config key to display\n"
-"\n"
-"\tNAME: Name to display in the column header.\n"
-"\tDefaults to the key if not specified or empty.\n"
-"\n"
-"\tMAXWIDTH: Max width of the column (longer results are truncated).\n"
-"\tDefaults to -1 (unlimited). Use 0 to limit to the column header size.\n"
-"\n"
-"*Examples*\n"
-"lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:"
-"MAC\n"
-"\tShows a list of containers using the \"NAME\", \"BASE IMAGE\", \"STATE\", "
-"\"IPV4\",\n"
-"\t\"IPV6\" and \"MAC\" columns.\n"
+"lxc alias remove my-list\n"
+"    Remove the \"my-list\" alias."
+msgstr ""
+
+#: lxc/alias.go:149
+msgid ""
+"lxc alias rename list my-list\n"
+"    Rename existing alias \"list\" to \"my-list\"."
+msgstr ""
+
+#: lxc/config_device.go:78
+msgid ""
+"lxc config device add [<remote>:]container1 <device-name> disk source=/share/"
+"c1 path=opt\n"
+"    Will mount the host's /share/c1 onto /opt in the container."
+msgstr ""
+
+#: lxc/config.go:90
+msgid ""
+"lxc config edit <container> < container.yaml\n"
+"    Update the container configuration from config.yaml."
+msgstr ""
+
+#: lxc/config.go:357
+msgid ""
+"lxc config set [<remote>:]<container> limits.cpu 2\n"
+"    Will set a CPU limit of \"2\" for the container.\n"
 "\n"
-"\t\"BASE IMAGE\" and \"MAC\" are custom columns generated from container "
-"configuration keys.\n"
+"lxc config set core.https_address [::]:8443\n"
+"    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
 "\n"
-"lxc list -c ns,user.comment:comment\n"
-"\tList images with their running state and user comment. "
+"lxc config set core.trust_password blah\n"
+"    Will set the server's trust password to blah."
 msgstr ""
 
-#: lxc/manpage.go:20
+#: lxc/file.go:187
 msgid ""
-"Usage: lxc manpage <directory>\n"
-"\n"
-"Generate all the LXD manpages."
+"lxc file pull foo/etc/hosts .\n"
+"   To pull /etc/hosts from the container and write it to the current "
+"directory."
 msgstr ""
 
-#: lxc/monitor.go:49
+#: lxc/file.go:326
 msgid ""
-"Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
-"\n"
-"Monitor a local or remote LXD server.\n"
+"lxc file push /etc/hosts foo/etc/hosts\n"
+"   To push /etc/hosts into the container \"foo\"."
+msgstr ""
+
+#: lxc/image.go:314
+msgid ""
+"lxc image edit <image>\n"
+"    Launch a text editor to edit the properties\n"
 "\n"
-"By default the monitor will listen to all message types.\n"
+"lxc image edit <image> < image.yaml\n"
+"    Load the image properties from a YAML file"
+msgstr ""
+
+#: lxc/info.go:31
+msgid ""
+"lxc info [<remote>:]<container> [--show-log]\n"
+"    For container information.\n"
 "\n"
-"Message types to listen for can be specified with --type.\n"
+"lxc info [<remote>:] [--resources]\n"
+"    For LXD server information."
+msgstr ""
+
+#: lxc/init.go:37
+msgid "lxc init ubuntu:16.04 u1"
+msgstr ""
+
+#: lxc/launch.go:24
+msgid "lxc launch ubuntu:16.04 u1"
+msgstr ""
+
+#: lxc/list.go:103
+msgid ""
+"lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:"
+"MAC\n"
+"  Show containers using the \"NAME\", \"BASE IMAGE\", \"STATE\", \"IPV4\", "
+"\"IPV6\" and \"MAC\" columns.\n"
+"  \"BASE IMAGE\" and \"MAC\" are custom columns generated from container "
+"configuration keys.\n"
 "\n"
-"*Examples*\n"
+"lxc list -c ns,user.comment:comment\n"
+"  List images with their running state and user comment."
+msgstr ""
+
+#: lxc/monitor.go:35
+msgid ""
 "lxc monitor --type=logging\n"
 "    Only show log messages.\n"
 "\n"
 "lxc monitor --pretty --type=logging --loglevel=info\n"
 "    Show a pretty log of messages with info level or higher.\n"
+"\n"
+"lxc monitor --type=lifecycle\n"
+"    Only show lifecycle events."
 msgstr ""
 
-#: lxc/move.go:26
+#: lxc/move.go:33
 msgid ""
-"Usage: lxc move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
-"<snapshot>]] [--container-only] [--target <node>]\n"
-"\n"
-"Move containers within or in between LXD instances.\n"
-"\n"
 "lxc move [<remote>:]<source container> [<remote>:][<destination container>] "
 "[--container-only]\n"
 "    Move a container between two hosts, renaming it if destination name "
@@ -1946,160 +2837,14 @@ msgid ""
 "    Rename a snapshot."
 msgstr ""
 
-#: lxc/network.go:52
-msgid ""
-"Usage: lxc network <subcommand> [options]\n"
-"\n"
-"Manage and attach containers to networks.\n"
-"\n"
-"lxc network list [<remote>:]\n"
-"    List available networks.\n"
-"\n"
-"lxc network list-leases [<remote>:]<network>\n"
-"    List the DHCP leases for the network\n"
-"\n"
-"lxc network show [<remote>:]<network> [--target <node>]\n"
-"    Show details of a network.\n"
-"\n"
-"lxc network create [<remote>:]<network> [key=value...] [--target <node>]\n"
-"    Create a network.\n"
-"\n"
-"lxc network get [<remote>:]<network> <key> [--target <node>]\n"
-"    Get network configuration.\n"
-"\n"
-"lxc network set [<remote>:]<network> <key> <value>\n"
-"    Set network configuration.\n"
-"\n"
-"lxc network unset [<remote>:]<network> <key>\n"
-"    Unset network configuration.\n"
-"\n"
-"lxc network delete [<remote>:]<network>\n"
-"    Delete a network.\n"
-"\n"
-"lxc network edit [<remote>:]<network>\n"
-"    Edit network, either by launching external editor or reading STDIN.\n"
-"\n"
-"lxc network rename [<remote>:]<network> <new-name>\n"
-"    Rename a network.\n"
-"\n"
-"lxc network attach [<remote>:]<network> <container> [device name] [interface "
-"name]\n"
-"    Attach a network interface connecting the network to a specified "
-"container.\n"
-"\n"
-"lxc network attach-profile [<remote>:]<network> <profile> [device name] "
-"[interface name]\n"
-"    Attach a network interface connecting the network to a specified "
-"profile.\n"
-"\n"
-"lxc network detach [<remote>:]<network> <container> [device name]\n"
-"    Remove a network interface connecting the network to a specified "
-"container.\n"
-"\n"
-"lxc network detach-profile [<remote>:]<network> <container> [device name]\n"
-"    Remove a network interface connecting the network to a specified "
-"profile.\n"
-"\n"
-"*Examples*\n"
-"cat network.yaml | lxc network edit <network>\n"
-"    Update a network using the content of network.yaml"
-msgstr ""
-
-#: lxc/operation.go:25
+#: lxc/operation.go:176
 msgid ""
-"Usage: lxc operation <subcommand> [options]\n"
-"\n"
-"List, show and delete background operations.\n"
-"\n"
-"lxc operation list [<remote>:]\n"
-"    List background operations.\n"
-"\n"
-"lxc operation show [<remote>:]<operation>\n"
-"    Show details on a background operation.\n"
-"\n"
-"lxc operation delete [<remote>:]<operation>\n"
-"    Delete a background operation (will attempt to cancel).\n"
-"\n"
-"*Examples*\n"
 "lxc operation show 344a79e4-d88a-45bf-9c39-c72c26f6ab8a\n"
 "    Show details on that operation UUID"
 msgstr ""
 
-#: lxc/profile.go:51
+#: lxc/profile.go:165
 msgid ""
-"Usage: lxc profile <subcommand> [options]\n"
-"\n"
-"Manage container configuration profiles.\n"
-"\n"
-"*Profile configuration*\n"
-"lxc profile list [<remote>:]\n"
-"    List available profiles.\n"
-"\n"
-"lxc profile show [<remote>:]<profile>\n"
-"    Show details of a profile.\n"
-"\n"
-"lxc profile create [<remote>:]<profile>\n"
-"    Create a profile.\n"
-"\n"
-"lxc profile copy [<remote>:]<profile> [<remote>:]<profile>\n"
-"    Copy the profile.\n"
-"\n"
-"lxc profile get [<remote>:]<profile> <key>\n"
-"    Get profile configuration.\n"
-"\n"
-"lxc profile set [<remote>:]<profile> <key> <value>\n"
-"    Set profile configuration.\n"
-"\n"
-"lxc profile unset [<remote>:]<profile> <key>\n"
-"    Unset profile configuration.\n"
-"\n"
-"lxc profile delete [<remote>:]<profile>\n"
-"    Delete a profile.\n"
-"\n"
-"lxc profile edit [<remote>:]<profile>\n"
-"    Edit profile, either by launching external editor or reading STDIN.\n"
-"\n"
-"lxc profile rename [<remote>:]<profile> <new-name>\n"
-"    Rename a profile.\n"
-"\n"
-"*Profile assignment*\n"
-"lxc profile assign [<remote>:]<container> <profiles>\n"
-"    Replace the current set of profiles for the container by the one "
-"provided.\n"
-"\n"
-"lxc profile add [<remote>:]<container> <profile>\n"
-"    Add a profile to a container\n"
-"\n"
-"lxc profile remove [<remote>:]<container> <profile>\n"
-"    Remove the profile from a container\n"
-"\n"
-"*Device management*\n"
-"lxc profile device list [<remote>:]<profile>\n"
-"    List devices in the given profile.\n"
-"\n"
-"lxc profile device show [<remote>:]<profile>\n"
-"    Show full device details in the given profile.\n"
-"\n"
-"lxc profile device remove [<remote>:]<profile> <name>\n"
-"    Remove a device from a profile.\n"
-"\n"
-"lxc profile device get [<remote>:]<profile> <name> <key>\n"
-"    Get a device property.\n"
-"\n"
-"lxc profile device set [<remote>:]<profile> <name> <key> <value>\n"
-"    Set a device property.\n"
-"\n"
-"lxc profile device unset [<remote>:]<profile> <name> <key>\n"
-"    Unset a device property.\n"
-"\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.\n"
-"\n"
-"*Examples*\n"
-"cat profile.yaml | lxc profile edit <profile>\n"
-"    Update a profile using the content of profile.yaml\n"
-"\n"
 "lxc profile assign foo default,bar\n"
 "    Set the profiles for \"foo\" to \"default\" and \"bar\".\n"
 "\n"
@@ -2110,72 +2855,26 @@ msgid ""
 "    Remove all profile from \"foo\""
 msgstr ""
 
-#: lxc/publish.go:28
+#: lxc/profile.go:398
 msgid ""
-"Usage: lxc publish [<remote>:]<container>[/<snapshot>] [<remote>:] [--"
-"alias=ALIAS...] [prop-key=prop-value...]\n"
-"\n"
-"Publish containers as images."
+"lxc profile edit <profile> < profile.yaml\n"
+"    Update a profile using the content of profile.yaml"
 msgstr ""
 
-#: lxc/query.go:25
+#: lxc/query.go:29
 msgid ""
-"Usage: lxc query [-X <action>] [-d <data>] [--wait] [--raw] [<remote>:]<API "
-"path>\n"
-"\n"
-"Send a raw query to LXD.\n"
-"\n"
-"*Examples*\n"
 "lxc query -X DELETE --wait /1.0/containers/c1\n"
 "    Delete local container \"c1\"."
 msgstr ""
 
-#: lxc/remote.go:40
-msgid ""
-"Usage: lxc remote <subcommand> [options]\n"
-"\n"
-"Manage the list of remote LXD servers.\n"
-"\n"
-"lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--"
-"password=PASSWORD] [--public] [--protocol=PROTOCOL] [--auth-type=AUTH_TYPE]\n"
-"    Add the remote <remote> at <url>.\n"
-"\n"
-"lxc remote remove <remote>\n"
-"    Remove the remote <remote>.\n"
-"\n"
-"lxc remote list\n"
-"    List all remotes.\n"
-"\n"
-"lxc remote rename <old name> <new name>\n"
-"    Rename remote <old name> to <new name>.\n"
-"\n"
-"lxc remote set-url <remote> <url>\n"
-"    Update <remote>'s url to <url>.\n"
-"\n"
-"lxc remote set-default <remote>\n"
-"    Set the default remote.\n"
-"\n"
-"lxc remote get-default\n"
-"    Print the default remote."
-msgstr ""
-
-#: lxc/rename.go:18
+#: lxc/snapshot.go:26
 msgid ""
-"Usage: lxc rename [<remote>:]<container>[/<snapshot>] [<container>[/"
-"<snapshot>]]\n"
-"\n"
-"Rename a container or snapshot."
+"lxc snapshot u1 snap0\n"
+"    Create a snapshot of \"u1\" called \"snap0\"."
 msgstr ""
 
-#: lxc/restore.go:22
+#: lxc/restore.go:28
 msgid ""
-"Usage: lxc restore [<remote>:]<container> <snapshot> [--stateful]\n"
-"\n"
-"Restore containers from snapshots.\n"
-"\n"
-"If --stateful is passed, then the running state will be restored too.\n"
-"\n"
-"*Examples*\n"
 "lxc snapshot u1 snap0\n"
 "    Create the snapshot.\n"
 "\n"
@@ -2183,121 +2882,20 @@ msgid ""
 "    Restore the snapshot."
 msgstr ""
 
-#: lxc/snapshot.go:19
+#: lxc/storage.go:210
 msgid ""
-"Usage: lxc snapshot [<remote>:]<container> <snapshot name> [--stateful]\n"
-"\n"
-"Create container snapshots.\n"
-"\n"
-"When --stateful is used, LXD attempts to checkpoint the container's\n"
-"running state, including process memory state, TCP connections, ...\n"
-"\n"
-"*Examples*\n"
-"lxc snapshot u1 snap0\n"
-"    Create a snapshot of \"u1\" called \"snap0\"."
+"lxc storage edit [<remote>:]<pool> < pool.yaml\n"
+"    Update a storage pool using the content of pool.yaml."
 msgstr ""
 
-#: lxc/storage.go:67
+#: lxc/storage_volume.go:726
+msgid ""
+"lxc storage volume edit [<remote>:]<pool> <volume> < volume.yaml\n"
+"    Update a storage volume using the content of pool.yaml."
+msgstr ""
+
+#: lxc/storage_volume.go:1168
 msgid ""
-"Usage: lxc storage <subcommand> [options]\n"
-"\n"
-"Manage storage pools and volumes.\n"
-"\n"
-"*Storage pools*\n"
-"lxc storage list [<remote>:]\n"
-"    List available storage pools.\n"
-"\n"
-"lxc storage show [<remote>:]<pool> [--resources] [--target <node>]\n"
-"    Show details of a storage pool.\n"
-"\n"
-"lxc storage info [<remote>:]<pool> [--bytes]\n"
-"    Show information of a storage pool in yaml format.\n"
-"\n"
-"lxc storage create [<remote>:]<pool> <driver> [key=value]... [--target "
-"<node>]\n"
-"    Create a storage pool.\n"
-"\n"
-"lxc storage get [<remote>:]<pool> <key>\n"
-"    Get storage pool configuration.\n"
-"\n"
-"lxc storage set [<remote>:]<pool> <key> <value>\n"
-"    Set storage pool configuration.\n"
-"\n"
-"lxc storage unset [<remote>:]<pool> <key>\n"
-"    Unset storage pool configuration.\n"
-"\n"
-"lxc storage delete [<remote>:]<pool>\n"
-"    Delete a storage pool.\n"
-"\n"
-"lxc storage edit [<remote>:]<pool>\n"
-"    Edit storage pool, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"*Storage volumes*\n"
-"lxc storage volume list [<remote>:]<pool>\n"
-"    List available storage volumes on a storage pool.\n"
-"\n"
-"lxc storage volume show [<remote>:]<pool> <volume> [--target <node>]\n"
-"   Show details of a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume create [<remote>:]<pool> <volume> [key=value]... [--"
-"target <node>]\n"
-"    Create a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume rename [<remote>:]<pool> <old name> <new name> [--target "
-"<node>]\n"
-"    Rename a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume get [<remote>:]<pool> <volume> <key> [--target <node>]\n"
-"    Get storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume set [<remote>:]<pool> <volume> <key> <value> [--target "
-"<node>]\n"
-"    Set storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume unset [<remote>:]<pool> <volume> <key> [--target <node>]\n"
-"    Unset storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume delete [<remote>:]<pool> <volume> [--target <node>]\n"
-"    Delete a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume edit [<remote>:]<pool> <volume> [--target <node>]\n"
-"    Edit storage volume, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"lxc storage volume attach [<remote>:]<pool> <volume> <container> [device "
-"name] <path>\n"
-"    Attach a storage volume to the specified container.\n"
-"\n"
-"lxc storage volume attach-profile [<remote:>]<pool> <volume> <profile> "
-"[device name] <path>\n"
-"    Attach a storage volume to the specified profile.\n"
-"\n"
-"lxc storage volume detach [<remote>:]<pool> <volume> <container> [device "
-"name]\n"
-"    Detach a storage volume from the specified container.\n"
-"\n"
-"lxc storage volume detach-profile [<remote:>]<pool> <volume> <profile> "
-"[device name]\n"
-"\tDetach a storage volume from the specified profile.\n"
-"\n"
-"lxc storage volume copy <pool>/<volume> <pool>/<volume> [--config|-c "
-"<key=value>...]\n"
-"    Copy an existing volume to a new volume at the specified pool.\n"
-"\n"
-"lxc storage volume move [<pool>/]<volume> [<pool>/]<volume>\n"
-"    Move an existing volume to the specified pool.\n"
-"\n"
-"Unless specified through a prefix, all volume operations affect \"custom"
-"\" (user created) volumes.\n"
-"\n"
-"*Examples*\n"
-"cat pool.yaml | lxc storage edit [<remote>:]<pool>\n"
-"    Update a storage pool using the content of pool.yaml.\n"
-"\n"
-"cat pool.yaml | lxc storage volume edit [<remote>:]<pool> <volume>\n"
-"    Update a storage volume using the content of pool.yaml.\n"
-"\n"
 "lxc storage volume show default data\n"
 "    Will show the properties of a custom volume called \"data\" in the "
 "\"default\" pool.\n"
@@ -2307,191 +2905,303 @@ msgid ""
 "\" in the \"default\" pool."
 msgstr ""
 
-#: lxc/version.go:18
+#: lxc/config_metadata.go:27
+msgid "metadata"
+msgstr ""
+
+#: lxc/monitor.go:29
+msgid "monitor [<remote>:]"
+msgstr ""
+
+#: lxc/storage_volume.go:991
+msgid "move [<pool>/]<volume> [<pool>/]<volume>"
+msgstr ""
+
+#: lxc/move.go:28
 msgid ""
-"Usage: lxc version\n"
-"\n"
-"Print the version number of this client tool."
+"move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
+"<snapshot>]]"
 msgstr ""
 
-#: lxc/delete.go:46
-msgid "User aborted delete operation."
+#: lxc/storage.go:429
+msgid "name"
 msgstr ""
 
-#: lxc/utils/cancel.go:40
+#: lxc/network.go:30
+msgid "network"
+msgstr ""
+
+#: lxc/image.go:809 lxc/image.go:814 lxc/image.go:977
+msgid "no"
+msgstr ""
+
+#: lxc/remote.go:253
+msgid "ok (y/n)?"
+msgstr ""
+
+#: lxc/operation.go:23
+msgid "operation"
+msgstr ""
+
+#: lxc/config_device.go:316
+msgid "override [<remote>:]<container> <device> [key=value...]"
+msgstr ""
+
+#: lxc/action.go:47
+msgid "pause [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/config.go:52
+msgid "please use `lxc profile`"
+msgstr ""
+
+#: lxc/profile.go:28
+msgid "profile"
+msgstr ""
+
+#: lxc/publish.go:32
 msgid ""
-"User signaled us three times, exiting. The remote operation will keep "
-"running."
+"publish [<remote>:]<container>[/<snapshot>] [<remote>:] [flags] [prop-"
+"key=prop-value...]"
 msgstr ""
 
-#: lxc/query.go:36
-msgid "Wait for the operation to complete"
+#: lxc/file.go:183
+msgid ""
+"pull [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...] "
+"<target path>"
 msgstr ""
 
-#: lxc/restore.go:38
+#: lxc/file.go:322
 msgid ""
-"Whether or not to restore the container's running state from snapshot (if "
-"available)"
+"push <source path> [<remote>:]<container>/<path> [[<remote>:]<container>/"
+"<path>...]"
 msgstr ""
 
-#: lxc/snapshot.go:33
-msgid "Whether or not to snapshot the container's running state"
+#: lxc/query.go:25
+msgid "query [<remote>:]<API path>"
 msgstr ""
 
-#: lxc/network.go:560 lxc/operation.go:141 lxc/remote.go:382 lxc/remote.go:387
-msgid "YES"
+#: lxc/image.go:1210
+msgid "refresh [<remote>:]<image> [[<remote>:]<image>...]"
 msgstr ""
 
-#: lxc/exec.go:132
-msgid "You can't pass -t and -T at the same time"
+#: lxc/remote.go:32
+msgid "remote"
 msgstr ""
 
-#: lxc/exec.go:136
-msgid "You can't pass -t or -T at the same time as --mode"
+#: lxc/alias.go:195
+msgid "remove <alias>"
 msgstr ""
 
-#: lxc/copy.go:76
-msgid "You must specify a destination container name when using --target"
+#: lxc/remote.go:546
+msgid "remove <remote>"
 msgstr ""
 
-#: lxc/copy.go:71
-msgid "You must specify a source container name"
+#: lxc/config_trust.go:194
+msgid "remove [<remote>:] <hostname|fingerprint>"
 msgstr ""
 
-#: lxc/copy.go:66 lxc/move.go:71
-msgid "You must use the same source and destination remote when using --target"
+#: lxc/profile.go:630
+msgid "remove [<remote>:]<container> <profile>"
 msgstr ""
 
-#: lxc/main.go:72
-msgid "`lxc config profile` is deprecated, please use `lxc profile`"
+#: lxc/config_device.go:402
+msgid "remove [<remote>:]<container|profile> <name>..."
 msgstr ""
 
-#: lxc/alias.go:56 lxc/alias.go:102
-#, c-format
-msgid "alias %s already exists"
+#: lxc/cluster.go:235
+msgid "remove [<remote>:]<member>"
 msgstr ""
 
-#: lxc/alias.go:68 lxc/alias.go:97
-#, c-format
-msgid "alias %s doesn't exist"
+#: lxc/alias.go:144
+msgid "rename <old alias> <new alias>"
 msgstr ""
 
-#: lxc/remote.go:370
-msgid "can't remove the default remote"
+#: lxc/remote.go:484
+msgid "rename <remote> <new-name>"
 msgstr ""
 
-#: lxc/file.go:296
-msgid "can't supply uid/gid/mode in recursive mode"
+#: lxc/image_alias.go:247
+msgid "rename [<remote>:]<alias> <new-name>"
 msgstr ""
 
-#: lxc/remote.go:399
-msgid "default"
+#: lxc/rename.go:18
+msgid "rename [<remote>:]<container>[/<snapshot>] <container>[/<snapshot>]"
 msgstr ""
 
-#: lxc/storage.go:856
-msgid "description"
+#: lxc/cluster.go:189
+msgid "rename [<remote>:]<member> <new-name>"
 msgstr ""
 
-#: lxc/init.go:315
-msgid "didn't get any affected image, container or snapshot from server"
+#: lxc/network.go:870
+msgid "rename [<remote>:]<network> <new-name>"
 msgstr ""
 
-#: lxc/image.go:594
-msgid "disabled"
+#: lxc/storage_volume.go:1023
+msgid "rename [<remote>:]<pool> <old name> <new name>"
 msgstr ""
 
-#: lxc/storage.go:855
-msgid "driver"
+#: lxc/profile.go:702
+msgid "rename [<remote>:]<profile> <new-name>"
 msgstr ""
 
-#: lxc/image.go:596
-msgid "enabled"
+#: lxc/action.go:67
+msgid "restart [<remote>:]<container> [[<remote>:]<container>...]"
 msgstr ""
 
-#: lxc/action.go:155 lxc/main.go:33 lxc/main.go:191
-#, c-format
-msgid "error: %v"
+#: lxc/restore.go:22
+msgid "restore [<remote>:]<container> <snapshot>"
 msgstr ""
 
-#: lxc/help.go:37 lxc/main.go:133
-#, c-format
-msgid "error: unknown command: %s"
+#: lxc/config_device.go:491
+msgid "set [<remote>:]<container|profile> <device> <key> <value>"
 msgstr ""
 
-#: lxc/storage.go:853
-msgid "info"
+#: lxc/network.go:918
+msgid "set [<remote>:]<network> <key> <value>"
 msgstr ""
 
-#: lxc/storage.go:854
-msgid "name"
+#: lxc/storage.go:571
+msgid "set [<remote>:]<pool> <key> <value>"
 msgstr ""
 
-#: lxc/image.go:210 lxc/image.go:584 lxc/image.go:589
-msgid "no"
+#: lxc/storage_volume.go:1087
+msgid "set [<remote>:]<pool> <volume> <key> <value>"
 msgstr ""
 
-#: lxc/remote.go:204
-msgid "ok (y/n)?"
+#: lxc/profile.go:751
+msgid "set [<remote>:]<profile> <key> <value>"
 msgstr ""
 
-#: lxc/main.go:368 lxc/main.go:372
-#, c-format
-msgid "processing aliases failed %s\n"
+#: lxc/config.go:353
+msgid "set [<remote>:][container] <key> <value>"
 msgstr ""
 
-#: lxc/file.go:588
-msgid "recursive edit doesn't make sense :("
+#: lxc/remote.go:596
+msgid "set-default <remote>"
 msgstr ""
 
-#: lxc/remote.go:436
-#, c-format
-msgid "remote %s already exists"
+#: lxc/remote.go:634
+msgid "set-url <remote> <URL>"
 msgstr ""
 
-#: lxc/remote.go:362 lxc/remote.go:428 lxc/remote.go:463 lxc/remote.go:479
-#, c-format
-msgid "remote %s doesn't exist"
+#: lxc/config_template.go:296
+msgid "show [<remote>:]<container> <template>"
 msgstr ""
 
-#: lxc/remote.go:345
-#, c-format
-msgid "remote %s exists as <%s>"
+#: lxc/config_device.go:580
+msgid "show [<remote>:]<container|profile>"
 msgstr ""
 
-#: lxc/remote.go:366 lxc/remote.go:432 lxc/remote.go:467
-#, c-format
-msgid "remote %s is static and cannot be modified"
+#: lxc/image.go:1283
+msgid "show [<remote>:]<image>"
+msgstr ""
+
+#: lxc/cluster.go:140
+msgid "show [<remote>:]<member>"
+msgstr ""
+
+#: lxc/network.go:987
+msgid "show [<remote>:]<network>"
+msgstr ""
+
+#: lxc/operation.go:172
+msgid "show [<remote>:]<operation>"
+msgstr ""
+
+#: lxc/storage.go:643
+msgid "show [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:1164
+msgid "show [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:810
+msgid "show [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/config.go:450 lxc/config_metadata.go:174
+msgid "show [<remote>:][container]"
+msgstr ""
+
+#: lxc/snapshot.go:19
+msgid "snapshot [<remote>:]<container> <snapshot name>"
 msgstr ""
 
-#: lxc/storage.go:858
+#: lxc/storage.go:433
 msgid "space used"
 msgstr ""
 
-#: lxc/info.go:251
+#: lxc/action.go:28
+msgid "start [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/info.go:255
 msgid "stateful"
 msgstr ""
 
-#: lxc/info.go:253
+#: lxc/info.go:257
 msgid "stateless"
 msgstr ""
 
-#: lxc/info.go:247
+#: lxc/action.go:89
+msgid "stop [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/storage.go:31
+msgid "storage"
+msgstr ""
+
+#: lxc/info.go:251
 #, c-format
 msgid "taken at %s"
 msgstr ""
 
-#: lxc/storage.go:857
+#: lxc/config_template.go:28
+msgid "template"
+msgstr ""
+
+#: lxc/storage.go:432
 msgid "total space"
 msgstr ""
 
-#: lxc/storage.go:852
+#: lxc/config_trust.go:28
+msgid "trust"
+msgstr ""
+
+#: lxc/config_device.go:648
+msgid "unset [<remote>:]<container|profile> <device> <key>"
+msgstr ""
+
+#: lxc/network.go:1049
+msgid "unset [<remote>:]<network> <key>"
+msgstr ""
+
+#: lxc/storage.go:727
+msgid "unset [<remote>:]<pool> <key>"
+msgstr ""
+
+#: lxc/storage_volume.go:1239
+msgid "unset [<remote>:]<pool> <volume> <key>"
+msgstr ""
+
+#: lxc/profile.go:864
+msgid "unset [<remote>:]<profile> <key>"
+msgstr ""
+
+#: lxc/config.go:558
+msgid "unset [<remote>:][container] <key>"
+msgstr ""
+
+#: lxc/storage.go:427
 msgid "used by"
 msgstr ""
 
-#: lxc/main.go:299
-msgid "wrong number of subcommand arguments"
+#: lxc/storage_volume.go:32
+msgid "volume"
 msgstr ""
 
-#: lxc/delete.go:45 lxc/image.go:208 lxc/image.go:586 lxc/image.go:591
+#: lxc/delete.go:46 lxc/image.go:811 lxc/image.go:816 lxc/image.go:975
 msgid "yes"
 msgstr ""
diff --git a/po/zh_Hans.po b/po/zh_Hans.po
index d16719f81..0bc1097b4 100644
--- a/po/zh_Hans.po
+++ b/po/zh_Hans.po
@@ -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: 2018-02-27 22:14-0500\n"
+"POT-Creation-Date: 2018-03-29 01:45-0400\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
@@ -16,7 +16,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: lxc/storage.go:36
+#: lxc/storage.go:220
 msgid ""
 "### This is a yaml representation of a storage pool.\n"
 "### Any line starting with a '#' will be ignored.\n"
@@ -33,7 +33,7 @@ msgid ""
 "###   zfs.pool_name: default"
 msgstr ""
 
-#: lxc/storage.go:53
+#: lxc/storage_volume.go:737
 msgid ""
 "### This is a yaml representation of a storage volume.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -47,7 +47,7 @@ msgid ""
 "###   size: \"61203283968\""
 msgstr ""
 
-#: lxc/config.go:40
+#: lxc/config.go:100
 msgid ""
 "### This is a yaml representation of the configuration.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -68,7 +68,7 @@ msgid ""
 "### Note that the name is shown but cannot be changed"
 msgstr ""
 
-#: lxc/config.go:61
+#: lxc/config_metadata.go:63
 msgid ""
 "### This is a yaml representation of the container metadata.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -92,7 +92,7 @@ msgid ""
 "###     properties: {}"
 msgstr ""
 
-#: lxc/image.go:63
+#: lxc/image.go:327
 msgid ""
 "### This is a yaml representation of the image properties.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -102,7 +102,7 @@ msgid ""
 "###  description: My custom image"
 msgstr ""
 
-#: lxc/network.go:32
+#: lxc/network.go:546
 msgid ""
 "### This is a yaml representation of the network.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -122,7 +122,7 @@ msgid ""
 "### Note that only the configuration can be changed."
 msgstr ""
 
-#: lxc/profile.go:30
+#: lxc/profile.go:408
 msgid ""
 "### This is a yaml representation of the profile.\n"
 "### Any line starting with a '# will be ignored.\n"
@@ -143,12 +143,12 @@ msgid ""
 "### Note that the name is shown but cannot be changed"
 msgstr ""
 
-#: lxc/image.go:187
+#: lxc/image.go:954
 #, c-format
 msgid "%s (%d more)"
 msgstr ""
 
-#: lxc/file.go:205
+#: lxc/file.go:677
 #, c-format
 msgid "%s is not a directory"
 msgstr ""
@@ -158,1782 +158,2673 @@ msgstr ""
 msgid "%v (interrupt two more times to force)"
 msgstr ""
 
-#: lxc/file.go:142
+#: lxc/file.go:614
 #, c-format
 msgid "'%s' isn't a supported file type."
 msgstr ""
 
-#: lxc/profile.go:337
+#: lxc/profile.go:222
 msgid "(none)"
 msgstr ""
 
-#: lxc/alias.go:84 lxc/image.go:231 lxc/image.go:1136
+#: lxc/alias.go:127 lxc/image.go:921 lxc/image_alias.go:228
 msgid "ALIAS"
 msgstr ""
 
-#: lxc/image.go:232
+#: lxc/image.go:922
 msgid "ALIASES"
 msgstr ""
 
-#: lxc/image.go:236
+#: lxc/image.go:926
 msgid "ARCH"
 msgstr ""
 
-#: lxc/list.go:467
+#: lxc/list.go:464
 msgid "ARCHITECTURE"
 msgstr ""
 
-#: lxc/remote.go:412
+#: lxc/remote.go:466
 msgid "AUTH TYPE"
 msgstr ""
 
-#: lxc/remote.go:68
+#: lxc/remote.go:88
 msgid "Accept certificate"
 msgstr ""
 
-#: lxc/query.go:38
+#: lxc/query.go:37
 msgid "Action (defaults to GET)"
 msgstr ""
 
-#: lxc/remote.go:276
+#: lxc/config_device.go:75 lxc/config_device.go:76
+msgid "Add devices to containers or profiles"
+msgstr ""
+
+#: lxc/alias.go:54 lxc/alias.go:55
+msgid "Add new aliases"
+msgstr ""
+
+#: lxc/remote.go:83 lxc/remote.go:84
+msgid "Add new remote servers"
+msgstr ""
+
+#: lxc/config_trust.go:58 lxc/config_trust.go:59
+msgid "Add new trusted clients"
+msgstr ""
+
+#: lxc/profile.go:101 lxc/profile.go:102
+msgid "Add profiles to containers"
+msgstr ""
+
+#: lxc/remote.go:325
 #, c-format
 msgid "Admin password for %s: "
 msgstr ""
 
-#: lxc/image.go:623
+#: lxc/alias.go:78 lxc/alias.go:176
+#, c-format
+msgid "Alias %s already exists"
+msgstr ""
+
+#: lxc/alias.go:170 lxc/alias.go:221
+#, c-format
+msgid "Alias %s doesn't exist"
+msgstr ""
+
+#: lxc/image_alias.go:83 lxc/image_alias.go:130 lxc/image_alias.go:274
+msgid "Alias name missing"
+msgstr ""
+
+#: lxc/image.go:854
 msgid "Aliases:"
 msgstr ""
 
-#: lxc/image.go:601 lxc/info.go:125
+#: lxc/image.go:826 lxc/info.go:129
 #, c-format
 msgid "Architecture: %s"
 msgstr ""
 
-#: lxc/remote.go:259
+#: lxc/profile.go:162 lxc/profile.go:163
+msgid "Assign sets of profiles to containers"
+msgstr ""
+
+#: lxc/network.go:103
+msgid "Attach network interfaces to containers"
+msgstr ""
+
+#: lxc/network.go:176 lxc/network.go:177
+msgid "Attach network interfaces to profiles"
+msgstr ""
+
+#: lxc/network.go:104
+msgid "Attach new network interfaces to containers"
+msgstr ""
+
+#: lxc/storage_volume.go:121 lxc/storage_volume.go:122
+msgid "Attach new storage volumes to containers"
+msgstr ""
+
+#: lxc/storage_volume.go:200 lxc/storage_volume.go:201
+msgid "Attach new storage volumes to profiles"
+msgstr ""
+
+#: lxc/console.go:31
+msgid "Attach to container consoles"
+msgstr ""
+
+#: lxc/console.go:32
+msgid ""
+"Attach to container consoles\n"
+"\n"
+"This command allows you to interact with the boot console of a container\n"
+"as well as retrieve past log entries from it."
+msgstr ""
+
+#: lxc/remote.go:308
 #, c-format
 msgid "Authentication type '%s' not supported by server"
 msgstr ""
 
-#: lxc/image.go:632
+#: lxc/image.go:864
 #, c-format
 msgid "Auto update: %s"
 msgstr ""
 
-#: lxc/image.go:707
+#: lxc/network.go:283
+#, c-format
+msgid "Bad key/value pair: %s"
+msgstr ""
+
+#: lxc/copy.go:110 lxc/init.go:118 lxc/publish.go:175 lxc/storage.go:123
+#: lxc/storage_volume.go:468
+#, c-format
+msgid "Bad key=value pair: %s"
+msgstr ""
+
+#: lxc/image.go:677
 #, c-format
 msgid "Bad property: %s"
 msgstr ""
 
-#: lxc/action.go:133
+#: lxc/action.go:212
 msgid "Both --all and container name given"
 msgstr ""
 
-#: lxc/info.go:218
+#: lxc/info.go:222
 msgid "Bytes received"
 msgstr ""
 
-#: lxc/info.go:219
+#: lxc/info.go:223
 msgid "Bytes sent"
 msgstr ""
 
-#: lxc/operation.go:156
+#: lxc/operation.go:155
 msgid "CANCELABLE"
 msgstr ""
 
-#: lxc/config.go:403
+#: lxc/config_trust.go:175
 msgid "COMMON NAME"
 msgstr ""
 
-#: lxc/info.go:182
+#: lxc/info.go:186
 msgid "CPU usage (in seconds)"
 msgstr ""
 
-#: lxc/info.go:186
+#: lxc/info.go:190
 msgid "CPU usage:"
 msgstr ""
 
-#: lxc/operation.go:157
+#: lxc/operation.go:156
 msgid "CREATED"
 msgstr ""
 
-#: lxc/list.go:468
+#: lxc/list.go:465
 msgid "CREATED AT"
 msgstr ""
 
-#: lxc/image.go:631
+#: lxc/image.go:863
 #, c-format
 msgid "Cached: %s"
 msgstr ""
 
-#: lxc/file.go:501
+#: lxc/image.go:175
+msgid "Can't provide a name for the target image"
+msgstr ""
+
+#: lxc/file.go:261
 msgid "Can't pull a directory without --recursive"
 msgstr ""
 
-#: lxc/config.go:210 lxc/network.go:619
+#: lxc/config.go:400 lxc/network.go:969
 #, c-format
 msgid "Can't read from stdin: %s"
 msgstr ""
 
-#: lxc/rename.go:41
+#: lxc/remote.go:577
+msgid "Can't remove the default remote"
+msgstr ""
+
+#: lxc/list.go:481
+msgid "Can't specify --fast with --columns"
+msgstr ""
+
+#: lxc/rename.go:48
 msgid "Can't specify a different remote for rename."
 msgstr ""
 
-#: lxc/config.go:223
-#, c-format
-msgid "Can't unset key '%s', it's not currently set"
+#: lxc/list.go:493
+msgid "Can't specify column L when not clustered"
 msgstr ""
 
-#: lxc/config.go:265 lxc/config.go:291
-#, c-format
-msgid "Can't unset key '%s', it's not currently set."
+#: lxc/file.go:399
+msgid "Can't supply uid/gid/mode in recursive mode"
 msgstr ""
 
-#: lxc/profile.go:546 lxc/storage.go:696
-msgid "Cannot provide container name to list"
+#: lxc/config.go:413
+#, c-format
+msgid "Can't unset key '%s', it's not currently set"
 msgstr ""
 
-#: lxc/remote.go:203
+#: lxc/remote.go:252
 #, c-format
 msgid "Certificate fingerprint: %s"
 msgstr ""
 
-#: lxc/remote.go:315
+#: lxc/remote.go:364
 msgid "Client certificate stored at server: "
 msgstr ""
 
-#: lxc/image.go:175 lxc/image.go:176 lxc/list.go:134 lxc/list.go:135
+#: lxc/network.go:253 lxc/network.go:663 lxc/network.go:923 lxc/network.go:992
+#: lxc/network.go:1054 lxc/storage.go:92 lxc/storage.go:331 lxc/storage.go:576
+#: lxc/storage.go:649 lxc/storage.go:732 lxc/storage_volume.go:287
+#: lxc/storage_volume.go:429 lxc/storage_volume.go:504
+#: lxc/storage_volume.go:730 lxc/storage_volume.go:856
+#: lxc/storage_volume.go:998 lxc/storage_volume.go:1028
+#: lxc/storage_volume.go:1092 lxc/storage_volume.go:1175
+#: lxc/storage_volume.go:1244
+msgid "Cluster member name"
+msgstr ""
+
+#: lxc/image.go:912 lxc/list.go:112
 msgid "Columns"
 msgstr ""
 
-#: lxc/help.go:53
-msgid "Commands:"
+#: lxc/main.go:44
+msgid "Command line client for LXD"
+msgstr ""
+
+#: lxc/main.go:45
+msgid ""
+"Command line client for LXD\n"
+"\n"
+"All of LXD's features can be driven through the various commands below.\n"
+"For help with any of those, simply call them with --help."
 msgstr ""
 
-#: lxc/copy.go:37 lxc/copy.go:38 lxc/init.go:139 lxc/init.go:140
+#: lxc/copy.go:39 lxc/init.go:42
 msgid "Config key/value to apply to the new container"
 msgstr ""
 
-#: lxc/config.go:821 lxc/config.go:886 lxc/config.go:1396 lxc/image.go:1191
-#: lxc/network.go:445 lxc/profile.go:275 lxc/storage.go:647 lxc/storage.go:1209
+#: lxc/config.go:195 lxc/config.go:259 lxc/config_metadata.go:144
+#: lxc/image.go:405 lxc/network.go:631 lxc/profile.go:490 lxc/storage.go:298
+#: lxc/storage_volume.go:822
 #, c-format
 msgid "Config parsing error: %s"
 msgstr ""
 
-#: lxc/main.go:40
-msgid "Connection refused; is LXD running?"
-msgstr ""
-
-#: lxc/console.go:132
+#: lxc/console.go:141
 msgid "Console log:"
 msgstr ""
 
-#: lxc/publish.go:71
+#: lxc/publish.go:79
 msgid "Container name is mandatory"
 msgstr ""
 
-#: lxc/copy.go:243 lxc/init.go:321
+#: lxc/copy.go:260 lxc/init.go:229
 #, c-format
 msgid "Container name is: %s"
 msgstr ""
 
-#: lxc/publish.go:250
+#: lxc/publish.go:259
 #, c-format
 msgid "Container published with fingerprint: %s"
 msgstr ""
 
-#: lxc/copy.go:45 lxc/move.go:44
+#: lxc/copy.go:44 lxc/move.go:46
 msgid "Copy a stateful container stateless"
 msgstr ""
 
-#: lxc/image.go:178
+#: lxc/image.go:138
 msgid "Copy aliases from source"
 msgstr ""
 
-#: lxc/copy.go:44
+#: lxc/copy.go:34 lxc/copy.go:35
+msgid "Copy containers within or in between LXD instances"
+msgstr ""
+
+#: lxc/image.go:130
+msgid "Copy images between servers"
+msgstr ""
+
+#: lxc/image.go:131
+msgid ""
+"Copy images between servers\n"
+"\n"
+"The auto-update flag instructs the server to keep this image up to date.\n"
+"It requires the source to be an alias and for it to be public."
+msgstr ""
+
+#: lxc/config_device.go:317 lxc/config_device.go:318
+msgid "Copy profile inherited devices and override configuration keys"
+msgstr ""
+
+#: lxc/profile.go:240 lxc/profile.go:241
+msgid "Copy profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:282 lxc/storage_volume.go:283
+msgid "Copy storage volumes"
+msgstr ""
+
+#: lxc/copy.go:43
 msgid "Copy the container without its snapshots"
 msgstr ""
 
-#: lxc/image.go:449
+#: lxc/image.go:217
 #, c-format
 msgid "Copying the image: %s"
 msgstr ""
 
-#: lxc/storage.go:1134
+#: lxc/storage_volume.go:387
 #, c-format
 msgid "Copying the storage volume: %s"
 msgstr ""
 
-#: lxc/remote.go:218
+#: lxc/remote.go:267
 msgid "Could not create server cert dir"
 msgstr ""
 
-#: lxc/file.go:70 lxc/file.go:71
+#: lxc/image_alias.go:58 lxc/image_alias.go:59
+msgid "Create aliases for existing images"
+msgstr ""
+
+#: lxc/launch.go:21 lxc/launch.go:22
+msgid "Create and start containers from images"
+msgstr ""
+
+#: lxc/file.go:191 lxc/file.go:331
 msgid "Create any directories necessary"
 msgstr ""
 
-#: lxc/image.go:606 lxc/info.go:127
+#: lxc/snapshot.go:20
+msgid "Create container snapshots"
+msgstr ""
+
+#: lxc/snapshot.go:21
+msgid ""
+"Create container snapshots\n"
+"\n"
+"When --stateful is used, LXD attempts to checkpoint the container's\n"
+"running state, including process memory state, TCP connections, ..."
+msgstr ""
+
+#: lxc/init.go:34 lxc/init.go:35
+msgid "Create containers from images"
+msgstr ""
+
+#: lxc/config_template.go:66 lxc/config_template.go:67
+msgid "Create new container file templates"
+msgstr ""
+
+#: lxc/storage_volume.go:425 lxc/storage_volume.go:426
+msgid "Create new custom storage volumes"
+msgstr ""
+
+#: lxc/network.go:249 lxc/network.go:250
+msgid "Create new networks"
+msgstr ""
+
+#: lxc/profile.go:296 lxc/profile.go:297
+msgid "Create profiles"
+msgstr ""
+
+#: lxc/storage.go:88 lxc/storage.go:89
+msgid "Create storage pools"
+msgstr ""
+
+#: lxc/image.go:832 lxc/info.go:131
 #, c-format
 msgid "Created: %s"
 msgstr ""
 
-#: lxc/init.go:200
+#: lxc/init.go:98
 #, c-format
 msgid "Creating %s"
 msgstr ""
 
-#: lxc/init.go:198
+#: lxc/init.go:96
 msgid "Creating the container"
 msgstr ""
 
-#: lxc/cluster.go:185
+#: lxc/cluster.go:121
 msgid "DATABASE"
 msgstr ""
 
-#: lxc/image.go:235 lxc/image.go:1138 lxc/list.go:469 lxc/network.go:579
-#: lxc/operation.go:154 lxc/storage.go:732 lxc/storage.go:937
+#: lxc/image.go:925 lxc/image_alias.go:230 lxc/list.go:466 lxc/network.go:784
+#: lxc/operation.go:153 lxc/storage.go:545 lxc/storage_volume.go:967
 msgid "DESCRIPTION"
 msgstr ""
 
-#: lxc/storage.go:733
+#: lxc/storage.go:546
 msgid "DRIVER"
 msgstr ""
 
-#: lxc/publish.go:39
+#: lxc/publish.go:41
 msgid "Define a compression algorithm: for image or none"
 msgstr ""
 
-#: lxc/config.go:977
+#: lxc/operation.go:53 lxc/operation.go:54
+msgid "Delete a background operation (will attempt to cancel)"
+msgstr ""
+
+#: lxc/config_template.go:109 lxc/config_template.go:110
+msgid "Delete container file templates"
+msgstr ""
+
+#: lxc/delete.go:29 lxc/delete.go:30
+msgid "Delete containers and snapshots"
+msgstr ""
+
+#: lxc/file.go:72 lxc/file.go:73
+msgid "Delete files in containers"
+msgstr ""
+
+#: lxc/image_alias.go:105 lxc/image_alias.go:106
+msgid "Delete image aliases"
+msgstr ""
+
+#: lxc/image.go:260 lxc/image.go:261
+msgid "Delete images"
+msgstr ""
+
+#: lxc/network.go:319 lxc/network.go:320
+msgid "Delete networks"
+msgstr ""
+
+#: lxc/profile.go:347 lxc/profile.go:348
+msgid "Delete profiles"
+msgstr ""
+
+#: lxc/storage.go:160 lxc/storage.go:161
+msgid "Delete storage pools"
+msgstr ""
+
+#: lxc/storage_volume.go:500 lxc/storage_volume.go:501
+msgid "Delete storage volumes"
+msgstr ""
+
+#: lxc/action.go:30 lxc/action.go:49 lxc/action.go:69 lxc/action.go:91
+#: lxc/alias.go:23 lxc/alias.go:55 lxc/alias.go:99 lxc/alias.go:147
+#: lxc/alias.go:198 lxc/cluster.go:26 lxc/cluster.go:59 lxc/cluster.go:142
+#: lxc/cluster.go:192 lxc/cluster.go:238 lxc/config.go:29 lxc/config.go:88
+#: lxc/config.go:289 lxc/config.go:355 lxc/config.go:452 lxc/config.go:560
+#: lxc/config_device.go:24 lxc/config_device.go:76 lxc/config_device.go:179
+#: lxc/config_device.go:252 lxc/config_device.go:318 lxc/config_device.go:405
+#: lxc/config_device.go:493 lxc/config_device.go:582 lxc/config_device.go:650
+#: lxc/config_metadata.go:29 lxc/config_metadata.go:54
+#: lxc/config_metadata.go:176 lxc/config_template.go:30
+#: lxc/config_template.go:67 lxc/config_template.go:110
+#: lxc/config_template.go:152 lxc/config_template.go:236
+#: lxc/config_template.go:298 lxc/config_trust.go:30 lxc/config_trust.go:59
+#: lxc/config_trust.go:115 lxc/config_trust.go:197 lxc/console.go:32
+#: lxc/copy.go:35 lxc/delete.go:30 lxc/exec.go:39 lxc/file.go:40 lxc/file.go:73
+#: lxc/file.go:122 lxc/file.go:185 lxc/file.go:324 lxc/image.go:42
+#: lxc/image.go:131 lxc/image.go:261 lxc/image.go:312 lxc/image.go:435
+#: lxc/image.go:571 lxc/image.go:776 lxc/image.go:890 lxc/image.go:1212
+#: lxc/image.go:1285 lxc/image_alias.go:26 lxc/image_alias.go:59
+#: lxc/image_alias.go:106 lxc/image_alias.go:149 lxc/image_alias.go:250
+#: lxc/info.go:29 lxc/init.go:35 lxc/launch.go:22 lxc/list.go:48 lxc/main.go:45
+#: lxc/monitor.go:31 lxc/move.go:31 lxc/network.go:32 lxc/network.go:104
+#: lxc/network.go:177 lxc/network.go:250 lxc/network.go:320 lxc/network.go:367
+#: lxc/network.go:452 lxc/network.go:537 lxc/network.go:660 lxc/network.go:719
+#: lxc/network.go:808 lxc/network.go:873 lxc/network.go:920 lxc/network.go:989
+#: lxc/network.go:1051 lxc/operation.go:25 lxc/operation.go:54
+#: lxc/operation.go:98 lxc/operation.go:174 lxc/profile.go:30
+#: lxc/profile.go:102 lxc/profile.go:163 lxc/profile.go:241 lxc/profile.go:297
+#: lxc/profile.go:348 lxc/profile.go:396 lxc/profile.go:520 lxc/profile.go:568
+#: lxc/profile.go:632 lxc/profile.go:705 lxc/profile.go:753 lxc/profile.go:812
+#: lxc/profile.go:866 lxc/publish.go:34 lxc/query.go:27 lxc/remote.go:34
+#: lxc/remote.go:84 lxc/remote.go:380 lxc/remote.go:414 lxc/remote.go:487
+#: lxc/remote.go:549 lxc/remote.go:598 lxc/remote.go:636 lxc/rename.go:20
+#: lxc/restore.go:24 lxc/snapshot.go:21 lxc/storage.go:33 lxc/storage.go:89
+#: lxc/storage.go:161 lxc/storage.go:208 lxc/storage.go:328 lxc/storage.go:383
+#: lxc/storage.go:491 lxc/storage.go:573 lxc/storage.go:645 lxc/storage.go:729
+#: lxc/storage_volume.go:34 lxc/storage_volume.go:122 lxc/storage_volume.go:201
+#: lxc/storage_volume.go:283 lxc/storage_volume.go:426
+#: lxc/storage_volume.go:501 lxc/storage_volume.go:561
+#: lxc/storage_volume.go:643 lxc/storage_volume.go:724
+#: lxc/storage_volume.go:853 lxc/storage_volume.go:918
+#: lxc/storage_volume.go:994 lxc/storage_volume.go:1025
+#: lxc/storage_volume.go:1089 lxc/storage_volume.go:1166
+#: lxc/storage_volume.go:1241
+msgid "Description"
+msgstr ""
+
+#: lxc/network.go:366 lxc/network.go:367
+msgid "Detach network interfaces from containers"
+msgstr ""
+
+#: lxc/network.go:451 lxc/network.go:452
+msgid "Detach network interfaces from profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:560 lxc/storage_volume.go:561
+msgid "Detach storage volumes from containers"
+msgstr ""
+
+#: lxc/storage_volume.go:642 lxc/storage_volume.go:643
+msgid "Detach storage volumes from profiles"
+msgstr ""
+
+#: lxc/config_device.go:163
 #, c-format
 msgid "Device %s added to %s"
 msgstr ""
 
-#: lxc/config.go:1272
+#: lxc/config_device.go:387
 #, c-format
 msgid "Device %s overridden for %s"
 msgstr ""
 
-#: lxc/config.go:1213
+#: lxc/config_device.go:476
 #, c-format
 msgid "Device %s removed from %s"
 msgstr ""
 
-#: lxc/utils.go:192 lxc/utils.go:216
+#: lxc/utils.go:133 lxc/utils.go:157
 #, c-format
 msgid "Device already exists: %s"
 msgstr ""
 
-#: lxc/image.go:1290
+#: lxc/image.go:586
 msgid "Directory import is not available on this platform"
 msgstr ""
 
-#: lxc/exec.go:71
+#: lxc/exec.go:55
 msgid "Disable pseudo-terminal allocation"
 msgstr ""
 
-#: lxc/exec.go:72
+#: lxc/exec.go:56
 msgid "Disable stdin (reads from /dev/null)"
 msgstr ""
 
-#: lxc/info.go:175
+#: lxc/info.go:179
 msgid "Disk usage:"
 msgstr ""
 
-#: lxc/list.go:638
+#: lxc/list.go:635
 msgid "EPHEMERAL"
 msgstr ""
 
-#: lxc/config.go:405
+#: lxc/config_trust.go:177
 msgid "EXPIRY DATE"
 msgstr ""
 
-#: lxc/main.go:52
-msgid "Enable debug mode"
+#: lxc/config_template.go:151 lxc/config_template.go:152
+msgid "Edit container file templates"
 msgstr ""
 
-#: lxc/main.go:51
-msgid "Enable verbose mode"
+#: lxc/config_metadata.go:53 lxc/config_metadata.go:54
+msgid "Edit container metadata files"
 msgstr ""
 
-#: lxc/exec.go:68
-msgid "Environment variable to set (e.g. HOME=/home/foo)"
+#: lxc/config.go:87 lxc/config.go:88
+msgid "Edit container or server configurations as YAML"
+msgstr ""
+
+#: lxc/file.go:121 lxc/file.go:122
+msgid "Edit files in containers"
+msgstr ""
+
+#: lxc/image.go:311 lxc/image.go:312
+msgid "Edit image properties"
+msgstr ""
+
+#: lxc/network.go:536 lxc/network.go:537
+msgid "Edit network configurations as YAML"
+msgstr ""
+
+#: lxc/profile.go:395 lxc/profile.go:396
+msgid "Edit profile configurations as YAML"
+msgstr ""
+
+#: lxc/storage.go:207 lxc/storage.go:208
+msgid "Edit storage pool configurations as YAML"
+msgstr ""
+
+#: lxc/storage_volume.go:723 lxc/storage_volume.go:724
+msgid "Edit storage volume configurations as YAML"
+msgstr ""
+
+#: lxc/list.go:504
+#, c-format
+msgid "Empty column entry (redundant, leading or trailing command) in '%s'"
 msgstr ""
 
-#: lxc/help.go:77
-msgid "Environment:"
+#: lxc/exec.go:52
+msgid "Environment variable to set (e.g. HOME=/home/foo)"
 msgstr ""
 
-#: lxc/copy.go:41 lxc/copy.go:42 lxc/init.go:143 lxc/init.go:144
+#: lxc/copy.go:41 lxc/init.go:44
 msgid "Ephemeral container"
 msgstr ""
 
-#: lxc/config.go:1446
+#: lxc/config_template.go:204
 #, c-format
 msgid "Error updating template file: %s"
 msgstr ""
 
-#: lxc/monitor.go:69
+#: lxc/monitor.go:48
 msgid "Event type to listen for"
 msgstr ""
 
-#: lxc/image.go:610
+#: lxc/exec.go:38
+msgid "Execute commands in containers"
+msgstr ""
+
+#: lxc/exec.go:39
+msgid ""
+"Execute commands in containers\n"
+"\n"
+"The command is executed directly using exec, so there is no shell and\n"
+"shell patterns (variables, file redirects, ...) won't be understood.\n"
+"If you need a shell environment you need to execute the shell\n"
+"executable, passing the shell commands as arguments, for example:\n"
+"\n"
+"  lxc exec <container> -- sh -c \"cd /tmp && pwd\"\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:838
 #, c-format
 msgid "Expires: %s"
 msgstr ""
 
-#: lxc/image.go:612
+#: lxc/image.go:840
 msgid "Expires: never"
 msgstr ""
 
-#: lxc/image.go:922
+#: lxc/image.go:434
+msgid "Export and download images"
+msgstr ""
+
+#: lxc/image.go:435
+msgid ""
+"Export and download images\n"
+"\n"
+"The output target is optional and defaults to the working directory."
+msgstr ""
+
+#: lxc/image.go:494
 #, c-format
 msgid "Exporting the image: %s"
 msgstr ""
 
-#: lxc/config.go:761
+#: lxc/config_template.go:279
 msgid "FILENAME"
 msgstr ""
 
-#: lxc/config.go:402 lxc/image.go:233 lxc/image.go:1137
+#: lxc/config_trust.go:174 lxc/image.go:923 lxc/image_alias.go:229
 msgid "FINGERPRINT"
 msgstr ""
 
-#: lxc/utils.go:261
+#: lxc/utils.go:202
 #, c-format
 msgid "Failed to create alias %s"
 msgstr ""
 
-#: lxc/manpage.go:62
-#, c-format
-msgid "Failed to generate 'lxc.%s.1': %v"
-msgstr ""
-
-#: lxc/manpage.go:55
-#, c-format
-msgid "Failed to generate 'lxc.1': %v"
-msgstr ""
-
-#: lxc/copy.go:238
+#: lxc/copy.go:255
 msgid "Failed to get the new container name"
 msgstr ""
 
-#: lxc/utils.go:251
+#: lxc/utils.go:192
 #, c-format
 msgid "Failed to remove alias %s"
 msgstr ""
 
-#: lxc/file.go:137
+#: lxc/file.go:609
 #, c-format
 msgid "Failed to walk path for %s: %s"
 msgstr ""
 
-#: lxc/list.go:137
+#: lxc/list.go:114
 msgid "Fast mode (same as --columns=nsacPt)"
 msgstr ""
 
-#: lxc/network.go:536 lxc/operation.go:121
+#: lxc/network.go:749 lxc/operation.go:126
 msgid "Filtering isn't supported yet"
 msgstr ""
 
-#: lxc/image.go:599
+#: lxc/image.go:824
 #, c-format
 msgid "Fingerprint: %s"
 msgstr ""
 
-#: lxc/exec.go:70
+#: lxc/exec.go:54
 msgid "Force pseudo-terminal allocation"
 msgstr ""
 
-#: lxc/cluster.go:42
-msgid "Force removing a node, even if degraded"
+#: lxc/cluster.go:242
+msgid "Force removing a member, even if degraded"
 msgstr ""
 
-#: lxc/action.go:47 lxc/action.go:48
+#: lxc/action.go:121
 msgid "Force the container to shutdown"
 msgstr ""
 
-#: lxc/delete.go:34 lxc/delete.go:35
+#: lxc/delete.go:34
 msgid "Force the removal of running containers"
 msgstr ""
 
-#: lxc/main.go:53
+#: lxc/main.go:56
 msgid "Force using the local unix socket"
 msgstr ""
 
-#: lxc/image.go:181 lxc/list.go:136
+#: lxc/image.go:913 lxc/list.go:113
 msgid "Format (csv|json|table|yaml)"
 msgstr ""
 
-#: lxc/remote.go:166
+#: lxc/remote.go:211
 msgid "Generating a client certificate. This may take a minute..."
 msgstr ""
 
-#: lxc/network.go:513
+#: lxc/config_device.go:178 lxc/config_device.go:179
+msgid "Get values for container device configuration keys"
+msgstr ""
+
+#: lxc/config.go:288 lxc/config.go:289
+msgid "Get values for container or server configuration keys"
+msgstr ""
+
+#: lxc/network.go:659 lxc/network.go:660
+msgid "Get values for network configuration keys"
+msgstr ""
+
+#: lxc/profile.go:519 lxc/profile.go:520
+msgid "Get values for profile configuration keys"
+msgstr ""
+
+#: lxc/storage.go:327 lxc/storage.go:328
+msgid "Get values for storage pool configuration keys"
+msgstr ""
+
+#: lxc/storage_volume.go:852 lxc/storage_volume.go:853
+msgid "Get values for storage volume configuration keys"
+msgstr ""
+
+#: lxc/network.go:851
 msgid "HOSTNAME"
 msgstr ""
 
-#: lxc/operation.go:152
+#: lxc/operation.go:151
 msgid "ID"
 msgstr ""
 
-#: lxc/network.go:515
+#: lxc/network.go:853
 msgid "IP ADDRESS"
 msgstr ""
 
-#: lxc/list.go:465
+#: lxc/list.go:462
 msgid "IPV4"
 msgstr ""
 
-#: lxc/list.go:466
+#: lxc/list.go:463
 msgid "IPV6"
 msgstr ""
 
-#: lxc/config.go:404
+#: lxc/config_trust.go:176
 msgid "ISSUE DATE"
 msgstr ""
 
-#: lxc/main.go:171
+#: lxc/main.go:259
 msgid ""
 "If this is your first time running LXD on this machine, you should also run: "
 "lxd init"
 msgstr ""
 
-#: lxc/main.go:54
-msgid "Ignore aliases when determining what command to run"
-msgstr ""
-
-#: lxc/action.go:51
-msgid "Ignore the container state (only for start)"
+#: lxc/action.go:117
+msgid "Ignore the container state"
 msgstr ""
 
-#: lxc/image.go:557
+#: lxc/image.go:1268
 msgid "Image already up to date."
 msgstr ""
 
-#: lxc/image.go:463
+#: lxc/image.go:231
 msgid "Image copied successfully!"
 msgstr ""
 
-#: lxc/image.go:982
+#: lxc/image.go:554
 msgid "Image exported successfully!"
 msgstr ""
 
-#: lxc/image.go:778
+#: lxc/image.go:284 lxc/image.go:1235
+msgid "Image identifier missing"
+msgstr ""
+
+#: lxc/image.go:352
+#, c-format
+msgid "Image identifier missing: %s"
+msgstr ""
+
+#: lxc/image.go:749
 #, c-format
 msgid "Image imported with fingerprint: %s"
 msgstr ""
 
-#: lxc/image.go:555
+#: lxc/image.go:1266
 msgid "Image refreshed successfully!"
 msgstr ""
 
-#: lxc/query.go:39
+#: lxc/image.go:571
+msgid ""
+"Import image into the image store\n"
+"\n"
+"Directory import is only available on Linux and must be performed as root."
+msgstr ""
+
+#: lxc/image.go:570
+msgid "Import images into the image store"
+msgstr ""
+
+#: lxc/query.go:38
 msgid "Input data"
 msgstr ""
 
-#: lxc/init.go:149
+#: lxc/init.go:47
 msgid "Instance type"
 msgstr ""
 
-#: lxc/remote.go:118
+#: lxc/remote.go:163
 #, c-format
 msgid "Invalid URL scheme \"%s\" in \"%s\""
 msgstr ""
 
-#: lxc/config.go:383
+#: lxc/config_trust.go:155
 msgid "Invalid certificate"
 msgstr ""
 
-#: lxc/init.go:32 lxc/init.go:37
-msgid "Invalid configuration key"
+#: lxc/list.go:525
+#, c-format
+msgid "Invalid config key '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:520
+#, c-format
+msgid "Invalid config key column format (too many fields): '%s'"
+msgstr ""
+
+#: lxc/image.go:1196 lxc/list.go:386
+#, c-format
+msgid "Invalid format %q"
+msgstr ""
+
+#: lxc/list.go:543
+#, c-format
+msgid "Invalid max width (must -1, 0 or a positive integer) '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:540
+#, c-format
+msgid "Invalid max width (must be an integer) '%s' in '%s'"
+msgstr ""
+
+#: lxc/list.go:531
+#, c-format
+msgid ""
+"Invalid name in '%s', empty string is only allowed when defining maxWidth"
+msgstr ""
+
+#: lxc/main.go:341
+msgid "Invalid number of arguments"
 msgstr ""
 
-#: lxc/file.go:560
+#: lxc/file.go:97
 #, c-format
 msgid "Invalid path %s"
 msgstr ""
 
-#: lxc/remote.go:107
+#: lxc/remote.go:152
 #, c-format
 msgid "Invalid protocol: %s"
 msgstr ""
 
-#: lxc/file.go:473
+#: lxc/file.go:243
 #, c-format
 msgid "Invalid source %s"
 msgstr ""
 
-#: lxc/file.go:250
+#: lxc/file.go:352
 #, c-format
 msgid "Invalid target %s"
 msgstr ""
 
-#: lxc/info.go:156
+#: lxc/info.go:160
 msgid "Ips:"
 msgstr ""
 
-#: lxc/image.go:179
+#: lxc/image.go:139
 msgid "Keep the image up to date after initial copy"
 msgstr ""
 
-#: lxc/list.go:470
+#: lxc/list.go:467
 msgid "LAST USED AT"
 msgstr ""
 
-#: lxc/list.go:492
+#: lxc/list.go:489
 msgid "LOCATION"
 msgstr ""
 
-#: lxc/main.go:38
-msgid "LXD socket not found; is LXD installed and running?"
+#: lxc/cluster.go:94
+msgid "LXD server isn't part of a cluster"
 msgstr ""
 
-#: lxc/image.go:615
+#: lxc/image.go:844
 #, c-format
 msgid "Last used: %s"
 msgstr ""
 
-#: lxc/image.go:617
+#: lxc/image.go:846
 msgid "Last used: never"
 msgstr ""
 
-#: lxc/info.go:119
-#, c-format
-msgid "Location: %s"
-msgstr ""
-
-#: lxc/info.go:271
-msgid "Log:"
-msgstr ""
-
-#: lxc/network.go:514
-msgid "MAC ADDRESS"
-msgstr ""
-
-#: lxc/network.go:578
-msgid "MANAGED"
+#: lxc/network.go:807 lxc/network.go:808
+msgid "List DHCP leases"
 msgstr ""
 
-#: lxc/cluster.go:187
-msgid "MESSAGE"
+#: lxc/alias.go:98 lxc/alias.go:99
+msgid "List aliases"
 msgstr ""
 
-#: lxc/image.go:177
-msgid "Make image public"
+#: lxc/cluster.go:58 lxc/cluster.go:59
+msgid "List all the cluster members"
 msgstr ""
 
-#: lxc/publish.go:35
-msgid "Make the image public"
+#: lxc/network.go:718 lxc/network.go:719
+msgid "List available networks"
 msgstr ""
 
-#: lxc/info.go:193
-msgid "Memory (current)"
+#: lxc/storage.go:490 lxc/storage.go:491
+msgid "List available storage pools"
 msgstr ""
 
-#: lxc/info.go:197
-msgid "Memory (peak)"
+#: lxc/operation.go:97 lxc/operation.go:98
+msgid "List background operations"
 msgstr ""
 
-#: lxc/info.go:209
-msgid "Memory usage:"
+#: lxc/config_device.go:251 lxc/config_device.go:252
+msgid "List container devices"
 msgstr ""
 
-#: lxc/monitor.go:70
-msgid "Minimum level for log messages"
+#: lxc/config_template.go:235 lxc/config_template.go:236
+msgid "List container file templates"
 msgstr ""
 
-#: lxc/utils.go:143
-msgid "Missing summary."
+#: lxc/list.go:47
+msgid "List containers"
 msgstr ""
 
-#: lxc/network.go:303 lxc/network.go:356 lxc/storage.go:435 lxc/storage.go:565
-msgid "More than one device matches, specify the device name."
-msgstr ""
+#: lxc/list.go:48
+msgid ""
+"List containers\n"
+"\n"
+"Default column layout: ns46tS\n"
+"Fast column layout: nsacPt\n"
+"\n"
+"== Filters ==\n"
+"A single keyword like \"web\" which will list any container with a name "
+"starting by \"web\".\n"
+"A regular expression on the container name. (e.g. .*web.*01$).\n"
+"A key/value pair referring to a configuration item. For those, the\n"
+"namespace can be abbreviated to the smallest unambiguous identifier.\n"
+"\n"
+"Examples:\n"
+"  - \"user.blah=abc\" will list all containers with the \"blah\" user "
+"property set to \"abc\".\n"
+"  - \"u.blah=abc\" will do the same\n"
+"  - \"security.privileged=true\" will list all privileged containers\n"
+"  - \"s.privileged=true\" will do the same\n"
+"\n"
+"A regular expression matching a configuration item or its value. (e.g. "
+"volatile.eth0.hwaddr=00:16:3e:.*).\n"
+"\n"
+"== Columns ==\n"
+"The -c option takes a comma separated list of arguments that control\n"
+"which container attributes to output when displaying in table or csv\n"
+"format.\n"
+"\n"
+"Column arguments are either pre-defined shorthand chars (see below),\n"
+"or (extended) config keys.\n"
+"\n"
+"Commas between consecutive shorthand chars are optional.\n"
+"\n"
+"Pre-defined column shorthand chars:\n"
+"  4 - IPv4 address\n"
+"  6 - IPv6 address\n"
+"  a - Architecture\n"
+"  b - Storage pool\n"
+"  c - Creation date\n"
+"  d - Description\n"
+"  l - Last used date\n"
+"  n - Name\n"
+"  N - Number of Processes\n"
+"  p - PID of the container's init process\n"
+"  P - Profiles\n"
+"  s - State\n"
+"  S - Number of snapshots\n"
+"  t - Type (persistent or ephemeral)\n"
+"  L - Location of the container (e.g. its node)\n"
+"\n"
+"Custom columns are defined with \"key[:name][:maxWidth]\":\n"
+"  KEY: The (extended) config key to display\n"
+"  NAME: Name to display in the column header.\n"
+"  Defaults to the key if not specified or empty.\n"
+"\n"
+"  MAXWIDTH: Max width of the column (longer results are truncated).\n"
+"  Defaults to -1 (unlimited). Use 0 to limit to the column header size."
+msgstr ""
+
+#: lxc/image_alias.go:148
+msgid "List image aliases"
+msgstr ""
+
+#: lxc/image_alias.go:149
+msgid ""
+"List image aliases\n"
+"\n"
+"Filters may be part of the image hash or part of the image alias name.\n"
+msgstr ""
+
+#: lxc/image.go:889
+msgid "List images"
+msgstr ""
+
+#: lxc/image.go:890
+msgid ""
+"List images\n"
+"\n"
+"Filters may be of the <key>=<value> form for property based filtering,\n"
+"or part of the image hash or part of the image alias name.\n"
+"\n"
+"The -c option takes a (optionally comma-separated) list of arguments\n"
+"that control which image attributes to output when displaying in table\n"
+"or csv format.\n"
+"\n"
+"Default column layout is: lfpdasu\n"
+"\n"
+"Column shorthand chars:\n"
+"\n"
+"    l - Shortest image alias (and optionally number of other aliases)\n"
+"    L - Newline-separated list of all image aliases\n"
+"    f - Fingerprint\n"
+"    p - Whether image is public\n"
+"    d - Description\n"
+"    a - Architecture\n"
+"    s - Size"
+msgstr ""
+
+#: lxc/profile.go:567 lxc/profile.go:568
+msgid "List profiles"
+msgstr ""
+
+#: lxc/storage_volume.go:917 lxc/storage_volume.go:918
+msgid "List storage volumes"
+msgstr ""
+
+#: lxc/remote.go:413 lxc/remote.go:414
+msgid "List the available remotes"
+msgstr ""
+
+#: lxc/config_trust.go:114 lxc/config_trust.go:115
+msgid "List trusted clients"
+msgstr ""
+
+#: lxc/operation.go:24 lxc/operation.go:25
+msgid "List, show and delete background operations"
+msgstr ""
+
+#: lxc/info.go:123
+#, c-format
+msgid "Location: %s"
+msgstr ""
+
+#: lxc/info.go:275
+msgid "Log:"
+msgstr ""
+
+#: lxc/network.go:852
+msgid "MAC ADDRESS"
+msgstr ""
+
+#: lxc/network.go:783
+msgid "MANAGED"
+msgstr ""
+
+#: lxc/cluster.go:123
+msgid "MESSAGE"
+msgstr ""
+
+#: lxc/image.go:137 lxc/image.go:576
+msgid "Make image public"
+msgstr ""
+
+#: lxc/publish.go:38
+msgid "Make the image public"
+msgstr ""
+
+#: lxc/network.go:32
+msgid "Manage an attach containers to networks"
+msgstr ""
+
+#: lxc/network.go:31
+msgid "Manage and attach containers to networks"
+msgstr ""
+
+#: lxc/cluster.go:25 lxc/cluster.go:26
+msgid "Manage cluster members"
+msgstr ""
+
+#: lxc/alias.go:22 lxc/alias.go:23
+msgid "Manage command aliases"
+msgstr ""
+
+#: lxc/config.go:28 lxc/config.go:29
+msgid "Manage container and server configuration options"
+msgstr ""
+
+#: lxc/config_device.go:23 lxc/config_device.go:24
+msgid "Manage container devices"
+msgstr ""
+
+#: lxc/config_template.go:29 lxc/config_template.go:30
+msgid "Manage container file templates"
+msgstr ""
+
+#: lxc/config_metadata.go:28 lxc/config_metadata.go:29
+msgid "Manage container metadata files"
+msgstr ""
+
+#: lxc/file.go:39 lxc/file.go:40
+msgid "Manage files in containers"
+msgstr ""
+
+#: lxc/image_alias.go:25 lxc/image_alias.go:26
+msgid "Manage image aliases"
+msgstr ""
+
+#: lxc/image.go:41
+msgid "Manage images"
+msgstr ""
+
+#: lxc/image.go:42
+msgid ""
+"Manage images\n"
+"\n"
+"In LXD containers are created from images. Those images were themselves\n"
+"either generated from an existing container or downloaded from an image\n"
+"server.\n"
+"\n"
+"When using remote images, LXD will automatically cache images for you\n"
+"and remove them upon expiration.\n"
+"\n"
+"The image unique identifier is the hash (sha-256) of its representation\n"
+"as a compressed tarball (or for split images, the concatenation of the\n"
+"metadata and rootfs tarballs).\n"
+"\n"
+"Images can be referenced by their full hash, shortest unique partial\n"
+"hash or alias name (if one is set)."
+msgstr ""
+
+#: lxc/profile.go:29 lxc/profile.go:30
+msgid "Manage profiles"
+msgstr ""
+
+#: lxc/storage.go:32 lxc/storage.go:33
+msgid "Manage storage pools and volumes"
+msgstr ""
+
+#: lxc/storage_volume.go:33
+msgid "Manage storage volumes"
+msgstr ""
+
+#: lxc/storage_volume.go:34
+msgid ""
+"Manage storage volumes\n"
+"\n"
+"Unless specified through a prefix, all volume operations affect \"custom"
+"\" (user created) volumes."
+msgstr ""
+
+#: lxc/remote.go:33 lxc/remote.go:34
+msgid "Manage the list of remote servers"
+msgstr ""
+
+#: lxc/config_trust.go:29 lxc/config_trust.go:30
+msgid "Manage trusted clients"
+msgstr ""
+
+#: lxc/info.go:197
+msgid "Memory (current)"
+msgstr ""
+
+#: lxc/info.go:201
+msgid "Memory (peak)"
+msgstr ""
+
+#: lxc/info.go:213
+msgid "Memory usage:"
+msgstr ""
+
+#: lxc/monitor.go:49
+msgid "Minimum level for log messages"
+msgstr ""
+
+#: lxc/config_metadata.go:102 lxc/config_metadata.go:200
+#: lxc/config_template.go:91 lxc/config_template.go:134
+#: lxc/config_template.go:176 lxc/config_template.go:260
+#: lxc/config_template.go:322 lxc/profile.go:197 lxc/profile.go:656
+msgid "Missing container name"
+msgstr ""
+
+#: lxc/profile.go:126
+msgid "Missing container.name name"
+msgstr ""
+
+#: lxc/config_device.go:103 lxc/config_device.go:203 lxc/config_device.go:276
+#: lxc/config_device.go:342 lxc/config_device.go:429 lxc/config_device.go:517
+#: lxc/config_device.go:606
+msgid "Missing name"
+msgstr ""
+
+#: lxc/network.go:128 lxc/network.go:201 lxc/network.go:344 lxc/network.go:391
+#: lxc/network.go:476 lxc/network.go:581 lxc/network.go:686 lxc/network.go:832
+#: lxc/network.go:897 lxc/network.go:946 lxc/network.go:1015
+msgid "Missing network name"
+msgstr ""
+
+#: lxc/storage.go:185 lxc/storage.go:252 lxc/storage.go:353 lxc/storage.go:408
+#: lxc/storage.go:603 lxc/storage.go:677 lxc/storage_volume.go:146
+#: lxc/storage_volume.go:225 lxc/storage_volume.go:451
+#: lxc/storage_volume.go:526 lxc/storage_volume.go:585
+#: lxc/storage_volume.go:667 lxc/storage_volume.go:766
+#: lxc/storage_volume.go:878 lxc/storage_volume.go:942
+#: lxc/storage_volume.go:1050 lxc/storage_volume.go:1114
+#: lxc/storage_volume.go:1197
+msgid "Missing pool name"
+msgstr ""
+
+#: lxc/profile.go:321 lxc/profile.go:372 lxc/profile.go:444 lxc/profile.go:544
+#: lxc/profile.go:729 lxc/profile.go:777 lxc/profile.go:836
+msgid "Missing profile name"
+msgstr ""
+
+#: lxc/profile.go:266
+msgid "Missing source profile name"
+msgstr ""
 
-#: lxc/file.go:460
+#: lxc/storage_volume.go:311
+msgid "Missing source volume name"
+msgstr ""
+
+#: lxc/file.go:446
+msgid "Missing target directory"
+msgstr ""
+
+#: lxc/monitor.go:30
+msgid "Monitor a local or remote LXD server"
+msgstr ""
+
+#: lxc/monitor.go:31
+msgid ""
+"Monitor a local or remote LXD server\n"
+"\n"
+"By default the monitor will listen to all message types."
+msgstr ""
+
+#: lxc/network.go:411 lxc/network.go:496 lxc/storage_volume.go:605
+#: lxc/storage_volume.go:686
+msgid "More than one device matches, specify the device name."
+msgstr ""
+
+#: lxc/file.go:224
 msgid "More than one file to download, but target is not a directory"
 msgstr ""
 
-#: lxc/move.go:42
+#: lxc/move.go:30 lxc/move.go:31
+msgid "Move containers within or in between LXD instances"
+msgstr ""
+
+#: lxc/storage_volume.go:993 lxc/storage_volume.go:994
+msgid "Move storage volumes between pools"
+msgstr ""
+
+#: lxc/move.go:44
 msgid "Move the container without its snapshots"
 msgstr ""
 
-#: lxc/storage.go:1128
+#: lxc/storage_volume.go:375
 #, c-format
 msgid "Moving the storage volume: %s"
 msgstr ""
 
-#: lxc/image.go:1292
+#: lxc/image.go:588
 msgid "Must run as root to import from directory"
 msgstr ""
 
-#: lxc/action.go:74
+#: lxc/action.go:147
 msgid "Must supply container name for: "
 msgstr ""
 
-#: lxc/cluster.go:183 lxc/list.go:471 lxc/network.go:576 lxc/profile.go:573
-#: lxc/remote.go:409 lxc/storage.go:731 lxc/storage.go:936
+#: lxc/cluster.go:119 lxc/list.go:468 lxc/network.go:781 lxc/profile.go:613
+#: lxc/remote.go:463 lxc/storage.go:544 lxc/storage_volume.go:966
 msgid "NAME"
 msgstr ""
 
-#: lxc/network.go:558 lxc/operation.go:139 lxc/remote.go:380 lxc/remote.go:385
+#: lxc/network.go:763 lxc/operation.go:138 lxc/remote.go:434 lxc/remote.go:439
 msgid "NO"
 msgstr ""
 
-#: lxc/storage.go:941
+#: lxc/storage_volume.go:971
 msgid "NODE"
 msgstr ""
 
-#: lxc/info.go:117
+#: lxc/info.go:121
 #, c-format
 msgid "Name: %s"
 msgstr ""
 
-#: lxc/network.go:276
+#: lxc/network.go:303
 #, c-format
 msgid "Network %s created"
 msgstr ""
 
-#: lxc/network.go:393
+#: lxc/network.go:353
 #, c-format
 msgid "Network %s deleted"
 msgstr ""
 
-#: lxc/network.go:274
+#: lxc/network.go:301
 #, c-format
 msgid "Network %s pending on node %s"
 msgstr ""
 
-#: lxc/network.go:470
+#: lxc/network.go:906
 #, c-format
 msgid "Network %s renamed to %s"
 msgstr ""
 
-#: lxc/init.go:145 lxc/init.go:146
+#: lxc/init.go:45
 msgid "Network name"
 msgstr ""
 
-#: lxc/info.go:226
+#: lxc/info.go:230
 msgid "Network usage:"
 msgstr ""
 
-#: lxc/image.go:180 lxc/publish.go:36
+#: lxc/publish.go:39
 msgid "New alias to define at target"
 msgstr ""
 
-#: lxc/config.go:414
-msgid "No certificate provided to add"
+#: lxc/image.go:140 lxc/image.go:577
+msgid "New aliases to add to the image"
 msgstr ""
 
-#: lxc/network.go:312 lxc/network.go:365
+#: lxc/network.go:420 lxc/network.go:505
 msgid "No device found for this network"
 msgstr ""
 
-#: lxc/storage.go:444 lxc/storage.go:574
+#: lxc/storage_volume.go:614 lxc/storage_volume.go:695
 msgid "No device found for this storage volume."
 msgstr ""
 
-#: lxc/config.go:446
-msgid "No fingerprint specified."
-msgstr ""
-
-#: lxc/cluster.go:143
+#: lxc/cluster.go:268
 #, c-format
 msgid "Node %s removed"
 msgstr ""
 
-#: lxc/cluster.go:119
+#: lxc/cluster.go:221
 #, c-format
 msgid "Node %s renamed to %s"
 msgstr ""
 
-#: lxc/copy.go:46 lxc/init.go:150 lxc/move.go:45 lxc/network.go:105
-#: lxc/storage.go:165
+#: lxc/copy.go:45 lxc/init.go:48 lxc/move.go:47
 msgid "Node name"
 msgstr ""
 
-#: lxc/storage.go:388 lxc/storage.go:481
+#: lxc/storage_volume.go:164 lxc/storage_volume.go:243
 msgid "Only \"custom\" volumes can be attached to containers."
 msgstr ""
 
-#: lxc/remote.go:101
+#: lxc/remote.go:146
 msgid "Only https URLs are supported for simplestreams"
 msgstr ""
 
-#: lxc/image.go:688
+#: lxc/image.go:658
 msgid "Only https:// is supported for remote image import."
 msgstr ""
 
-#: lxc/network.go:421 lxc/network.go:605
+#: lxc/network.go:607 lxc/network.go:960
 msgid "Only managed networks can be modified."
 msgstr ""
 
-#: lxc/operation.go:85
+#: lxc/operation.go:83
 #, c-format
 msgid "Operation %s deleted"
 msgstr ""
 
-#: lxc/help.go:71 lxc/main.go:139 lxc/main.go:195
-msgid "Options:"
-msgstr ""
-
-#: lxc/exec.go:69
+#: lxc/exec.go:53
 msgid "Override the terminal mode (auto, interactive or non-interactive)"
 msgstr ""
 
-#: lxc/list.go:641
+#: lxc/list.go:638
 msgid "PERSISTENT"
 msgstr ""
 
-#: lxc/list.go:473
+#: lxc/list.go:470
 msgid "PID"
 msgstr ""
 
-#: lxc/list.go:472
+#: lxc/list.go:469
 msgid "PROCESSES"
 msgstr ""
 
-#: lxc/list.go:474
+#: lxc/list.go:471
 msgid "PROFILES"
 msgstr ""
 
-#: lxc/remote.go:411
+#: lxc/remote.go:465
 msgid "PROTOCOL"
 msgstr ""
 
-#: lxc/image.go:234 lxc/remote.go:413
+#: lxc/image.go:924 lxc/remote.go:467
 msgid "PUBLIC"
 msgstr ""
 
-#: lxc/info.go:220
+#: lxc/info.go:224
 msgid "Packets received"
 msgstr ""
 
-#: lxc/info.go:221
+#: lxc/info.go:225
 msgid "Packets sent"
 msgstr ""
 
-#: lxc/help.go:78
-msgid "Path to an alternate client configuration directory"
-msgstr ""
-
-#: lxc/help.go:79
-msgid "Path to an alternate server directory"
-msgstr ""
-
-#: lxc/main.go:240
-msgid "Pause containers."
-msgstr ""
-
-#: lxc/main.go:42
-msgid "Permission denied, are you in the lxd group?"
+#: lxc/action.go:48 lxc/action.go:49
+msgid "Pause containers"
 msgstr ""
 
-#: lxc/info.go:138
+#: lxc/info.go:142
 #, c-format
 msgid "Pid: %d"
 msgstr ""
 
-#: lxc/network.go:446 lxc/profile.go:276 lxc/storage.go:648 lxc/storage.go:1210
+#: lxc/network.go:632 lxc/profile.go:491 lxc/storage.go:299
+#: lxc/storage_volume.go:823
 msgid "Press enter to open the editor again"
 msgstr ""
 
-#: lxc/config.go:822 lxc/config.go:887 lxc/config.go:1397 lxc/config.go:1447
-#: lxc/image.go:1192
+#: lxc/config.go:196 lxc/config.go:260 lxc/config_metadata.go:145
+#: lxc/config_template.go:205 lxc/image.go:406
 msgid "Press enter to start the editor again"
 msgstr ""
 
-#: lxc/monitor.go:68
+#: lxc/monitor.go:47
 msgid "Pretty rendering"
 msgstr ""
 
-#: lxc/help.go:73
-msgid "Print debug information"
-msgstr ""
-
-#: lxc/help.go:72
-msgid "Print less common commands"
+#: lxc/main.go:55
+msgid "Print help"
 msgstr ""
 
-#: lxc/query.go:37
+#: lxc/query.go:36
 msgid "Print the raw response"
 msgstr ""
 
-#: lxc/help.go:74
-msgid "Print verbose information"
+#: lxc/main.go:54
+msgid "Print version number"
 msgstr ""
 
-#: lxc/info.go:162
+#: lxc/info.go:166
 #, c-format
 msgid "Processes: %d"
 msgstr ""
 
-#: lxc/profile.go:362
+#: lxc/main_aliases.go:123 lxc/main_aliases.go:131
+#, c-format
+msgid "Processing aliases failed: %s\n"
+msgstr ""
+
+#: lxc/profile.go:147
 #, c-format
 msgid "Profile %s added to %s"
 msgstr ""
 
-#: lxc/profile.go:226
+#: lxc/profile.go:333
 #, c-format
 msgid "Profile %s created"
 msgstr ""
 
-#: lxc/profile.go:310
+#: lxc/profile.go:381
 #, c-format
 msgid "Profile %s deleted"
 msgstr ""
 
-#: lxc/profile.go:397
+#: lxc/profile.go:690
 #, c-format
 msgid "Profile %s removed from %s"
 msgstr ""
 
-#: lxc/profile.go:300
+#: lxc/profile.go:738
 #, c-format
 msgid "Profile %s renamed to %s"
 msgstr ""
 
-#: lxc/copy.go:39 lxc/copy.go:40 lxc/init.go:141 lxc/init.go:142
+#: lxc/copy.go:40 lxc/init.go:43
 msgid "Profile to apply to the new container"
 msgstr ""
 
-#: lxc/profile.go:339
+#: lxc/profile.go:225
 #, c-format
 msgid "Profiles %s applied to %s"
 msgstr ""
 
-#: lxc/info.go:136
+#: lxc/info.go:140
 #, c-format
 msgid "Profiles: %s"
 msgstr ""
 
-#: lxc/image.go:619
+#: lxc/image.go:849
 msgid "Properties:"
 msgstr ""
 
-#: lxc/remote.go:72
+#: lxc/remote.go:92
 msgid "Public image server"
 msgstr ""
 
-#: lxc/image.go:602
+#: lxc/image.go:827
 #, c-format
 msgid "Public: %s"
 msgstr ""
 
-#: lxc/file.go:68 lxc/file.go:69
-msgid "Recursively push or pull files"
+#: lxc/publish.go:33 lxc/publish.go:34
+msgid "Publish containers as images"
 msgstr ""
 
-#: lxc/image.go:529
-#, c-format
-msgid "Refreshing the image: %s"
+#: lxc/file.go:184 lxc/file.go:185
+msgid "Pull files from containers"
 msgstr ""
 
-#: lxc/remote.go:69
-msgid "Remote admin password"
+#: lxc/file.go:323 lxc/file.go:324
+msgid "Push files into containers"
 msgstr ""
 
-#: lxc/utils/cancel.go:34
-msgid "Remote operation canceled by user"
+#: lxc/file.go:192 lxc/file.go:330
+msgid "Recursively transfer files"
+msgstr ""
+
+#: lxc/image.go:1211 lxc/image.go:1212
+msgid "Refresh images"
 msgstr ""
 
-#: lxc/info.go:122
+#: lxc/image.go:1239
 #, c-format
-msgid "Remote: %s"
+msgid "Refreshing the image: %s"
 msgstr ""
 
-#: lxc/delete.go:42
+#: lxc/remote.go:515
 #, c-format
-msgid "Remove %s (yes/no): "
+msgid "Remote %s already exists"
 msgstr ""
 
-#: lxc/storage.go:1247
+#: lxc/remote.go:507 lxc/remote.go:569 lxc/remote.go:618 lxc/remote.go:656
 #, c-format
-msgid "Renamed storage volume from \"%s\" to \"%s\""
+msgid "Remote %s doesn't exist"
 msgstr ""
 
-#: lxc/delete.go:36 lxc/delete.go:37
-msgid "Require user confirmation"
+#: lxc/remote.go:116
+#, c-format
+msgid "Remote %s exists as <%s>"
 msgstr ""
 
-#: lxc/info.go:159
-msgid "Resources:"
+#: lxc/remote.go:511 lxc/remote.go:573 lxc/remote.go:660
+#, c-format
+msgid "Remote %s is static and cannot be modified"
 msgstr ""
 
-#: lxc/main.go:248
-msgid "Restart containers."
+#: lxc/remote.go:89
+msgid "Remote admin password"
 msgstr ""
 
-#: lxc/console.go:38
-msgid "Retrieve the container's console log"
+#: lxc/utils/cancel.go:34
+msgid "Remote operation canceled by user"
 msgstr ""
 
-#: lxc/init.go:293
+#: lxc/info.go:126
 #, c-format
-msgid "Retrieving image: %s"
+msgid "Remote: %s"
 msgstr ""
 
-#: lxc/action.go:52
-msgid "Run command against all containers"
+#: lxc/delete.go:42
+#, c-format
+msgid "Remove %s (yes/no): "
 msgstr ""
 
-#: lxc/image.go:237
-msgid "SIZE"
+#: lxc/cluster.go:237 lxc/cluster.go:238
+msgid "Remove a member from the cluster"
 msgstr ""
 
-#: lxc/list.go:475
-msgid "SNAPSHOTS"
+#: lxc/alias.go:197 lxc/alias.go:198
+msgid "Remove aliases"
 msgstr ""
 
-#: lxc/storage.go:738
-msgid "SOURCE"
+#: lxc/config_device.go:404 lxc/config_device.go:405
+msgid "Remove container devices"
 msgstr ""
 
-#: lxc/cluster.go:186 lxc/list.go:476 lxc/network.go:583 lxc/storage.go:736
-msgid "STATE"
+#: lxc/profile.go:631 lxc/profile.go:632
+msgid "Remove profiles from containers"
 msgstr ""
 
-#: lxc/remote.go:414
-msgid "STATIC"
+#: lxc/remote.go:548 lxc/remote.go:549
+msgid "Remove remotes"
 msgstr ""
 
-#: lxc/operation.go:155
-msgid "STATUS"
+#: lxc/config_trust.go:196 lxc/config_trust.go:197
+msgid "Remove trusted clients"
 msgstr ""
 
-#: lxc/list.go:478
-msgid "STORAGE POOL"
+#: lxc/cluster.go:191 lxc/cluster.go:192
+msgid "Rename a cluster member"
 msgstr ""
 
-#: lxc/remote.go:71
-msgid "Server authentication type (tls or macaroons)"
+#: lxc/alias.go:146 lxc/alias.go:147 lxc/image_alias.go:249
+#: lxc/image_alias.go:250
+msgid "Rename aliases"
 msgstr ""
 
-#: lxc/remote.go:211
-msgid "Server certificate NACKed by user"
+#: lxc/rename.go:19 lxc/rename.go:20
+msgid "Rename containers and snapshots"
 msgstr ""
 
-#: lxc/remote.go:311
-msgid "Server doesn't trust us after authentication"
+#: lxc/network.go:872 lxc/network.go:873
+msgid "Rename networks"
 msgstr ""
 
-#: lxc/remote.go:70
-msgid "Server protocol (lxd or simplestreams)"
+#: lxc/profile.go:704 lxc/profile.go:705
+msgid "Rename profiles"
 msgstr ""
 
-#: lxc/file.go:66
-msgid "Set the file's gid on push"
+#: lxc/remote.go:486 lxc/remote.go:487
+msgid "Rename remotes"
 msgstr ""
 
-#: lxc/file.go:67
-msgid "Set the file's perms on push"
+#: lxc/storage_volume.go:1024 lxc/storage_volume.go:1025
+msgid "Rename storage volumes"
 msgstr ""
 
-#: lxc/file.go:65
-msgid "Set the file's uid on push"
+#: lxc/storage_volume.go:1073
+#, c-format
+msgid "Renamed storage volume from \"%s\" to \"%s\""
 msgstr ""
 
-#: lxc/help.go:29
-msgid "Show all commands (not just interesting ones)"
+#: lxc/delete.go:35
+msgid "Require user confirmation"
 msgstr ""
 
-#: lxc/help.go:75
-msgid "Show client version"
+#: lxc/info.go:163
+msgid "Resources:"
 msgstr ""
 
-#: lxc/info.go:40
-msgid "Show the container's last 100 log lines?"
+#: lxc/action.go:68
+msgid "Restart containers"
 msgstr ""
 
-#: lxc/config.go:36
-msgid "Show the expanded configuration"
+#: lxc/action.go:69
+msgid ""
+"Restart containers\n"
+"\n"
+"The opposite of \"lxc pause\" is \"lxc start\"."
 msgstr ""
 
-#: lxc/info.go:41
-msgid "Show the resources available to the server"
+#: lxc/restore.go:23
+msgid "Restore containers from snapshots"
 msgstr ""
 
-#: lxc/storage.go:163
-msgid "Show the resources available to the storage pool"
+#: lxc/restore.go:24
+msgid ""
+"Restore containers from snapshots\n"
+"\n"
+"If --stateful is passed, then the running state will be restored too."
+msgstr ""
+
+#: lxc/console.go:39
+msgid "Retrieve the container's console log"
+msgstr ""
+
+#: lxc/init.go:201
+#, c-format
+msgid "Retrieving image: %s"
+msgstr ""
+
+#: lxc/action.go:112
+msgid "Run command against all containers"
+msgstr ""
+
+#: lxc/image.go:927
+msgid "SIZE"
+msgstr ""
+
+#: lxc/list.go:472
+msgid "SNAPSHOTS"
+msgstr ""
+
+#: lxc/storage.go:551
+msgid "SOURCE"
+msgstr ""
+
+#: lxc/cluster.go:122 lxc/list.go:473 lxc/network.go:788 lxc/storage.go:549
+msgid "STATE"
+msgstr ""
+
+#: lxc/remote.go:468
+msgid "STATIC"
+msgstr ""
+
+#: lxc/operation.go:154
+msgid "STATUS"
+msgstr ""
+
+#: lxc/list.go:475
+msgid "STORAGE POOL"
+msgstr ""
+
+#: lxc/query.go:26 lxc/query.go:27
+msgid "Send a raw query to LXD"
+msgstr ""
+
+#: lxc/remote.go:91
+msgid "Server authentication type (tls or macaroons)"
+msgstr ""
+
+#: lxc/remote.go:260
+msgid "Server certificate NACKed by user"
+msgstr ""
+
+#: lxc/remote.go:360
+msgid "Server doesn't trust us after authentication"
+msgstr ""
+
+#: lxc/remote.go:90
+msgid "Server protocol (lxd or simplestreams)"
+msgstr ""
+
+#: lxc/config_device.go:492 lxc/config_device.go:493
+msgid "Set container device configuration keys"
+msgstr ""
+
+#: lxc/config.go:354 lxc/config.go:355
+msgid "Set container or server configuration keys"
+msgstr ""
+
+#: lxc/network.go:919 lxc/network.go:920
+msgid "Set network configuration keys"
+msgstr ""
+
+#: lxc/profile.go:752 lxc/profile.go:753
+msgid "Set profile configuration keys"
+msgstr ""
+
+#: lxc/storage.go:572 lxc/storage.go:573
+msgid "Set storage pool configuration keys"
+msgstr ""
+
+#: lxc/storage_volume.go:1088 lxc/storage_volume.go:1089
+msgid "Set storage volume configuration keys"
+msgstr ""
+
+#: lxc/remote.go:635 lxc/remote.go:636
+msgid "Set the URL for the remote"
+msgstr ""
+
+#: lxc/remote.go:597 lxc/remote.go:598
+msgid "Set the default remote"
+msgstr ""
+
+#: lxc/file.go:333
+msgid "Set the file's gid on push"
+msgstr ""
+
+#: lxc/file.go:334
+msgid "Set the file's perms on push"
+msgstr ""
+
+#: lxc/file.go:332
+msgid "Set the file's uid on push"
+msgstr ""
+
+#: lxc/main.go:57
+msgid "Show all debug messages"
+msgstr ""
+
+#: lxc/main.go:58
+msgid "Show all information messages"
+msgstr ""
+
+#: lxc/config_metadata.go:175 lxc/config_metadata.go:176
+msgid "Show container metadata files"
+msgstr ""
+
+#: lxc/config.go:451 lxc/config.go:452
+msgid "Show container or server configurations"
+msgstr ""
+
+#: lxc/info.go:28 lxc/info.go:29
+msgid "Show container or server information"
+msgstr ""
+
+#: lxc/config_template.go:297 lxc/config_template.go:298
+msgid "Show content of container file templates"
+msgstr ""
+
+#: lxc/cluster.go:141 lxc/cluster.go:142
+msgid "Show details of a cluster member"
+msgstr ""
+
+#: lxc/operation.go:173 lxc/operation.go:174
+msgid "Show details on a background operation"
+msgstr ""
+
+#: lxc/config_device.go:581 lxc/config_device.go:582
+msgid "Show full device configuration for containers or profiles"
+msgstr ""
+
+#: lxc/image.go:1284 lxc/image.go:1285
+msgid "Show image properties"
+msgstr ""
+
+#: lxc/main.go:61
+msgid "Show less common commands"
 msgstr ""
 
-#: lxc/storage.go:164
+#: lxc/network.go:988 lxc/network.go:989
+msgid "Show network configurations"
+msgstr ""
+
+#: lxc/profile.go:811 lxc/profile.go:812
+msgid "Show profile configurations"
+msgstr ""
+
+#: lxc/storage.go:644 lxc/storage.go:645
+msgid "Show storage pool configurations and resources"
+msgstr ""
+
+#: lxc/storage_volume.go:1165
+msgid "Show storage volum configurations"
+msgstr ""
+
+#: lxc/storage_volume.go:1166
+msgid "Show storage volume configurations"
+msgstr ""
+
+#: lxc/info.go:39
+msgid "Show the container's last 100 log lines?"
+msgstr ""
+
+#: lxc/remote.go:379 lxc/remote.go:380
+msgid "Show the default remote"
+msgstr ""
+
+#: lxc/config.go:455
+msgid "Show the expanded configuration"
+msgstr ""
+
+#: lxc/info.go:40
+msgid "Show the resources available to the server"
+msgstr ""
+
+#: lxc/storage.go:648
+msgid "Show the resources available to the storage pool"
+msgstr ""
+
+#: lxc/storage.go:386
 msgid "Show the used and free space in bytes"
 msgstr ""
 
-#: lxc/image.go:600
+#: lxc/image.go:775 lxc/image.go:776
+msgid "Show useful information about images"
+msgstr ""
+
+#: lxc/storage.go:382 lxc/storage.go:383
+msgid "Show useful information about storage pools"
+msgstr ""
+
+#: lxc/image.go:825
 #, c-format
 msgid "Size: %.2fMB"
 msgstr ""
 
-#: lxc/info.go:240
+#: lxc/info.go:244
 msgid "Snapshots:"
 msgstr ""
 
-#: lxc/action.go:163
+#: lxc/action.go:242
 #, c-format
 msgid "Some containers failed to %s"
 msgstr ""
 
-#: lxc/image.go:634
+#: lxc/image.go:867
 msgid "Source:"
 msgstr ""
 
-#: lxc/main.go:258
-msgid "Start containers."
+#: lxc/action.go:29 lxc/action.go:30
+msgid "Start containers"
 msgstr ""
 
-#: lxc/launch.go:59
+#: lxc/launch.go:62
 #, c-format
 msgid "Starting %s"
 msgstr ""
 
-#: lxc/info.go:130
+#: lxc/info.go:134
 #, c-format
 msgid "Status: %s"
 msgstr ""
 
-#: lxc/main.go:264
-msgid "Stop containers."
+#: lxc/action.go:90 lxc/action.go:91
+msgid "Stop containers"
 msgstr ""
 
-#: lxc/publish.go:37 lxc/publish.go:38
+#: lxc/publish.go:40
 msgid "Stop the container if currently running"
 msgstr ""
 
-#: lxc/publish.go:136
+#: lxc/publish.go:144
 msgid "Stopping container failed!"
 msgstr ""
 
-#: lxc/delete.go:121
+#: lxc/delete.go:120
 #, c-format
 msgid "Stopping the container failed: %s"
 msgstr ""
 
-#: lxc/storage.go:538
+#: lxc/storage.go:144
 #, c-format
 msgid "Storage pool %s created"
 msgstr ""
 
-#: lxc/storage.go:598
+#: lxc/storage.go:194
 #, c-format
 msgid "Storage pool %s deleted"
 msgstr ""
 
-#: lxc/storage.go:536
+#: lxc/storage.go:142
 #, c-format
 msgid "Storage pool %s pending on node %s"
 msgstr ""
 
-#: lxc/init.go:147 lxc/init.go:148
+#: lxc/init.go:46
 msgid "Storage pool name"
 msgstr ""
 
-#: lxc/storage.go:980
+#: lxc/storage_volume.go:484
 #, c-format
 msgid "Storage volume %s created"
 msgstr ""
 
-#: lxc/storage.go:1000
+#: lxc/storage_volume.go:545
 #, c-format
 msgid "Storage volume %s deleted"
 msgstr ""
 
-#: lxc/storage.go:1135
+#: lxc/storage_volume.go:388
 msgid "Storage volume copied successfully!"
 msgstr ""
 
-#: lxc/storage.go:1129
+#: lxc/storage_volume.go:376
 msgid "Storage volume moved successfully!"
 msgstr ""
 
-#: lxc/action.go:50
-msgid "Store the container state (only for stop)"
+#: lxc/action.go:115
+msgid "Store the container state"
 msgstr ""
 
-#: lxc/info.go:201
+#: lxc/info.go:205
 msgid "Swap (current)"
 msgstr ""
 
-#: lxc/info.go:205
+#: lxc/info.go:209
 msgid "Swap (peak)"
 msgstr ""
 
-#: lxc/alias.go:85
+#: lxc/alias.go:128
 msgid "TARGET"
 msgstr ""
 
-#: lxc/list.go:477 lxc/network.go:516 lxc/network.go:577 lxc/operation.go:153
-#: lxc/storage.go:935
+#: lxc/list.go:474 lxc/network.go:782 lxc/network.go:854 lxc/operation.go:152
+#: lxc/storage_volume.go:965
 msgid "TYPE"
 msgstr ""
 
-#: lxc/delete.go:105
+#: lxc/delete.go:104
 msgid "The container is currently running, stop it first or pass --force."
 msgstr ""
 
-#: lxc/publish.go:101
+#: lxc/publish.go:109
 msgid ""
 "The container is currently running. Use --force to have it stopped and "
 "restarted."
 msgstr ""
 
-#: lxc/init.go:372
+#: lxc/init.go:280
 msgid "The container you are starting doesn't have any network attached to it."
 msgstr ""
 
-#: lxc/config.go:944 lxc/config.go:961 lxc/config.go:1240
+#: lxc/config_device.go:130 lxc/config_device.go:147 lxc/config_device.go:354
 msgid "The device already exists"
 msgstr ""
 
-#: lxc/config.go:1007 lxc/config.go:1019 lxc/config.go:1055 lxc/config.go:1073
-#: lxc/config.go:1119 lxc/config.go:1136 lxc/config.go:1179 lxc/config.go:1197
+#: lxc/config_device.go:218 lxc/config_device.go:230 lxc/config_device.go:442
+#: lxc/config_device.go:460 lxc/config_device.go:533 lxc/config_device.go:550
 msgid "The device doesn't exist"
 msgstr ""
 
-#: lxc/init.go:356
+#: lxc/init.go:264
 #, c-format
 msgid "The local image '%s' couldn't be found, trying '%s:%s' instead."
 msgstr ""
 
-#: lxc/init.go:352
+#: lxc/init.go:260
 #, c-format
 msgid "The local image '%s' couldn't be found, trying '%s:' instead."
 msgstr ""
 
-#: lxc/action.go:35
-msgid "The opposite of \"lxc pause\" is \"lxc start\"."
-msgstr ""
-
-#: lxc/config.go:1245
+#: lxc/config_device.go:359
 msgid "The profile device doesn't exist"
 msgstr ""
 
-#: lxc/network.go:317 lxc/network.go:370 lxc/storage.go:449 lxc/storage.go:579
+#: lxc/network.go:425 lxc/network.go:510 lxc/storage_volume.go:619
+#: lxc/storage_volume.go:700
 msgid "The specified device doesn't exist"
 msgstr ""
 
-#: lxc/network.go:321 lxc/network.go:374
+#: lxc/network.go:429 lxc/network.go:514
 msgid "The specified device doesn't match the network"
 msgstr ""
 
-#: lxc/publish.go:74
+#: lxc/publish.go:82
 msgid "There is no \"image name\".  Did you want an alias?"
 msgstr ""
 
-#: lxc/help.go:47
-msgid ""
-"This is the LXD command line client.\n"
-"\n"
-"All of LXD's features can be driven through the various commands below.\n"
-"For help with any of those, simply call them with --help."
-msgstr ""
-
-#: lxc/action.go:46
+#: lxc/action.go:122
 msgid "Time to wait for the container before killing it"
 msgstr ""
 
-#: lxc/image.go:603
+#: lxc/image.go:828
 msgid "Timestamps:"
 msgstr ""
 
-#: lxc/init.go:374
+#: lxc/init.go:282
 msgid "To attach a network to a container, use: lxc network attach"
 msgstr ""
 
-#: lxc/init.go:373
+#: lxc/init.go:281
 msgid "To create a new network, use: lxc network create"
 msgstr ""
 
-#: lxc/console.go:173
+#: lxc/console.go:185
 msgid "To detach from the console, press: <ctrl>+a q"
 msgstr ""
 
-#: lxc/main.go:172
+#: lxc/main.go:260
 msgid "To start your first container, try: lxc launch ubuntu:16.04"
 msgstr ""
 
-#: lxc/copy.go:43 lxc/move.go:43
+#: lxc/storage_volume.go:997
+msgid "Transfer mode, one of pull (default), push or relay"
+msgstr ""
+
+#: lxc/copy.go:42
+msgid "Transfer mode. One of pull (default), push or relay"
+msgstr ""
+
+#: lxc/move.go:45 lxc/storage_volume.go:286
 msgid "Transfer mode. One of pull (default), push or relay."
 msgstr ""
 
-#: lxc/copy.go:212
+#: lxc/copy.go:229
 #, c-format
 msgid "Transferring container: %s"
 msgstr ""
 
-#: lxc/image.go:717
+#: lxc/image.go:687
 #, c-format
 msgid "Transferring image: %s"
 msgstr ""
 
-#: lxc/action.go:108 lxc/launch.go:77
+#: lxc/action.go:181 lxc/launch.go:80
 #, c-format
 msgid "Try `lxc info --show-log %s` for more info"
 msgstr ""
 
-#: lxc/info.go:132
+#: lxc/info.go:136
 msgid "Type: ephemeral"
 msgstr ""
 
-#: lxc/info.go:134
+#: lxc/info.go:138
 msgid "Type: persistent"
 msgstr ""
 
-#: lxc/image.go:238
+#: lxc/image.go:928
 msgid "UPLOAD DATE"
 msgstr ""
 
-#: lxc/cluster.go:184 lxc/remote.go:410
+#: lxc/cluster.go:120 lxc/remote.go:464
 msgid "URL"
 msgstr ""
 
-#: lxc/network.go:580 lxc/profile.go:574 lxc/storage.go:740 lxc/storage.go:938
+#: lxc/network.go:785 lxc/profile.go:614 lxc/storage.go:553
+#: lxc/storage_volume.go:968
 msgid "USED BY"
 msgstr ""
 
-#: lxc/manpage.go:36
-msgid "Unable to find help2man."
+#: lxc/list.go:514
+#, c-format
+msgid "Unknown column shorthand char '%c' in '%s'"
 msgstr ""
 
-#: lxc/file.go:124
+#: lxc/file.go:596
 #, c-format
 msgid "Unknown file type '%s'"
 msgstr ""
 
-#: lxc/image.go:608
-#, c-format
-msgid "Uploaded: %s"
+#: lxc/config_device.go:649 lxc/config_device.go:650
+msgid "Unset container device configuration keys"
 msgstr ""
 
-#: lxc/action.go:38
-#, c-format
-msgid ""
-"Usage: lxc %s [--all] [<remote>:]<container> [[<remote>:]<container>...]\n"
-"\n"
-"%s%s"
+#: lxc/config.go:559 lxc/config.go:560
+msgid "Unset container or server configuration keys"
 msgstr ""
 
-#: lxc/help.go:45
-msgid "Usage: lxc <command> [options]"
+#: lxc/network.go:1050 lxc/network.go:1051
+msgid "Unset network configuration keys"
 msgstr ""
 
-#: lxc/alias.go:22
-msgid ""
-"Usage: lxc alias <subcommand> [options]\n"
-"\n"
-"Manage command aliases.\n"
-"\n"
-"lxc alias add <alias> <target>\n"
-"    Add a new alias <alias> pointing to <target>.\n"
-"\n"
-"lxc alias remove <alias>\n"
-"    Remove the alias <alias>.\n"
-"\n"
-"lxc alias list\n"
-"    List all the aliases.\n"
-"\n"
-"lxc alias rename <old alias> <new alias>\n"
-"    Rename remote <old alias> to <new alias>."
+#: lxc/profile.go:865 lxc/profile.go:866
+msgid "Unset profile configuration keys"
 msgstr ""
 
-#: lxc/cluster.go:23
-msgid ""
-"Usage: lxc cluster <subcommand> [options]\n"
-"\n"
-"Manage cluster nodes.\n"
-"\n"
-"lxc cluster list [<remote>:]\n"
-"    List all nodes in the cluster.\n"
-"\n"
-"lxc cluster show [<remote>:]<node>\n"
-"    Show details of a node.\n"
-"\n"
-"lxc cluster rename [<remote>:]<node> <new-name>\n"
-"    Rename a cluster node.\n"
-"\n"
-"lxc cluster delete [<remote>:]<node> [--force]\n"
-"    Delete a node from the cluster."
+#: lxc/storage.go:728 lxc/storage.go:729
+msgid "Unset storage pool configuration keys"
 msgstr ""
 
-#: lxc/config.go:85
-msgid ""
-"Usage: lxc config <subcommand> [options]\n"
-"\n"
-"Change container or server configuration options.\n"
-"\n"
-"*Container configuration*\n"
-"\n"
-"lxc config get [<remote>:][container] <key>\n"
-"    Get container or server configuration key.\n"
-"\n"
-"lxc config set [<remote>:][container] <key> <value>\n"
-"    Set container or server configuration key.\n"
-"\n"
-"lxc config unset [<remote>:][container] <key>\n"
-"    Unset container or server configuration key.\n"
-"\n"
-"lxc config show [<remote>:][container] [--expanded]\n"
-"    Show container or server configuration.\n"
-"\n"
-"lxc config edit [<remote>:][container]\n"
-"    Edit configuration, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"*Container metadata*\n"
-"\n"
-"lxc config metadata show [<remote>:][container]\n"
-"    Show the container metadata.yaml content.\n"
-"\n"
-"lxc config metadata edit [<remote>:][container]\n"
-"    Edit the container metadata.yaml, either by launching external editor or "
-"reading STDIN.\n"
-"\n"
-"*Container templates*\n"
-"\n"
-"lxc config template list [<remote>:][container]\n"
-"    List the names of template files for a container.\n"
-"\n"
-"lxc config template show [<remote>:][container] [template]\n"
-"    Show the content of a template file for a container.\n"
-"\n"
-"lxc config template create [<remote>:][container] [template]\n"
-"    Add an empty template file for a container.\n"
-"\n"
-"lxc config template edit [<remote>:][container] [template]\n"
-"    Edit the content of a template file for a container, either by launching "
-"external editor or reading STDIN.\n"
-"\n"
-"lxc config template delete [<remote>:][container] [template]\n"
-"    Delete a template file for a container.\n"
-"\n"
-"\n"
-"*Device management*\n"
-"\n"
-"lxc config device add [<remote>:]<container> <device> <type> [key=value...]\n"
-"    Add a device to a container.\n"
-"\n"
-"lxc config device get [<remote>:]<container> <device> <key>\n"
-"    Get a device property.\n"
-"\n"
-"lxc config device set [<remote>:]<container> <device> <key> <value>\n"
-"    Set a device property.\n"
-"\n"
-"lxc config device unset [<remote>:]<container> <device> <key>\n"
-"    Unset a device property.\n"
-"\n"
-"lxc config device override [<remote>:]<container> <device> [key=value...]\n"
-"    Copy a profile inherited device into local container config.\n"
-"\n"
-"lxc config device list [<remote>:]<container>\n"
-"    List devices for container.\n"
-"\n"
-"lxc config device show [<remote>:]<container>\n"
-"    Show full device details for container.\n"
-"\n"
-"lxc config device remove [<remote>:]<container> <name>...\n"
-"    Remove device from container.\n"
-"\n"
-"*Client trust store management*\n"
-"\n"
-"lxc config trust list [<remote>:]\n"
-"    List all trusted certs.\n"
-"\n"
-"lxc config trust add [<remote>:] <certfile.crt>\n"
-"    Add certfile.crt to trusted hosts.\n"
-"\n"
-"lxc config trust remove [<remote>:] [hostname|fingerprint]\n"
-"    Remove the cert from trusted hosts.\n"
-"\n"
-"*Examples*\n"
-"\n"
-"cat config.yaml | lxc config edit <container>\n"
-"    Update the container configuration from config.yaml.\n"
-"\n"
-"lxc config device add [<remote>:]container1 <device-name> disk source=/share/"
-"c1 path=opt\n"
-"    Will mount the host's /share/c1 onto /opt in the container.\n"
-"\n"
-"lxc config set [<remote>:]<container> limits.cpu 2\n"
-"    Will set a CPU limit of \"2\" for the container.\n"
-"\n"
-"lxc config set core.https_address [::]:8443\n"
-"    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
-"\n"
-"lxc config set core.trust_password blah\n"
-"    Will set the server's trust password to blah."
+#: lxc/storage_volume.go:1240 lxc/storage_volume.go:1241
+msgid "Unset storage volume configuration keys"
 msgstr ""
 
-#: lxc/console.go:31
-msgid ""
-"Usage: lxc console [<remote>:]<container> [-l]\n"
-"\n"
-"Interact with the container's console device and log."
+#: lxc/image.go:835
+#, c-format
+msgid "Uploaded: %s"
 msgstr ""
 
-#: lxc/copy.go:30
-msgid ""
-"Usage: lxc copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>] "
-"[--ephemeral|e] [--profile|-p <profile>...] [--config|-c <key=value>...] [--"
-"container-only] [--target <node>]\n"
-"\n"
-"Copy containers within or in between LXD instances."
+#: lxc/delete.go:47
+msgid "User aborted delete operation"
 msgstr ""
 
-#: lxc/delete.go:27
+#: lxc/utils/cancel.go:40
 msgid ""
-"Usage: lxc delete [<remote>:]<container>[/<snapshot>] "
-"[[<remote>:]<container>[/<snapshot>]...]\n"
-"\n"
-"Delete containers and snapshots."
+"User signaled us three times, exiting. The remote operation will keep "
+"running."
 msgstr ""
 
-#: lxc/exec.go:53
-msgid ""
-"Usage: lxc exec [<remote>:]<container> [-t] [-T] [-n] [--mode=auto|"
-"interactive|non-interactive] [--env KEY=VALUE...] [--] <command line>\n"
-"\n"
-"Execute commands in containers.\n"
-"\n"
-"The command is executed directly using exec, so there is no shell and shell "
-"patterns (variables, file redirects, ...)\n"
-"won't be understood. If you need a shell environment you need to execute the "
-"shell executable, passing the shell commands\n"
-"as arguments, for example:\n"
-"\n"
-"    lxc exec <container> -- sh -c \"cd /tmp && pwd\"\n"
-"\n"
-"Mode defaults to non-interactive, interactive mode is selected if both stdin "
-"AND stdout are terminals (stderr is ignored)."
+#: lxc/query.go:35
+msgid "Wait for the operation to complete"
 msgstr ""
 
-#: lxc/file.go:39
+#: lxc/restore.go:36
 msgid ""
-"Usage: lxc file <subcommand> [options]\n"
-"\n"
-"Manage files in containers.\n"
-"\n"
-"lxc file pull [-r|--recursive] [<remote>:]<container>/<path> "
-"[[<remote>:]<container>/<path>...] <target path>\n"
-"    Pull files from containers.\n"
-"\n"
-"lxc file push [-r|--recursive] [-p|--create-dirs] [--uid=UID] [--gid=GID] [--"
-"mode=MODE] <source path> [<source path>...] [<remote>:]<container>/<path>\n"
-"    Push files into containers.\n"
-"\n"
-"lxc file delete [<remote>:]<container>/<path> [[<remote>:]<container>/"
-"<path>...]\n"
-"    Delete files in containers.\n"
-"\n"
-"lxc file edit [<remote>:]<container>/<path>\n"
-"    Edit files in containers using the default text editor.\n"
-"\n"
-"*Examples*\n"
-"lxc file push /etc/hosts foo/etc/hosts\n"
-"   To push /etc/hosts into the container \"foo\".\n"
-"\n"
-"lxc file pull foo/etc/hosts .\n"
-"   To pull /etc/hosts from the container and write it to the current "
-"directory."
+"Whether or not to restore the container's running state from snapshot (if "
+"available)"
 msgstr ""
 
-#: lxc/finger.go:15
-msgid ""
-"Usage: lxc finger [<remote>:]\n"
-"\n"
-"Check if the LXD server is alive."
+#: lxc/snapshot.go:31
+msgid "Whether or not to snapshot the container's running state"
 msgstr ""
 
-#: lxc/help.go:22
-msgid ""
-"Usage: lxc help [--all]\n"
-"\n"
-"Help page for the LXD client."
+#: lxc/network.go:765 lxc/operation.go:140 lxc/remote.go:436 lxc/remote.go:441
+msgid "YES"
 msgstr ""
 
-#: lxc/image.go:73
-msgid ""
-"Usage: lxc image <subcommand> [options]\n"
-"\n"
-"Manipulate container images.\n"
-"\n"
-"In LXD containers are created from images. Those images were themselves\n"
-"either generated from an existing container or downloaded from an image\n"
-"server.\n"
-"\n"
-"When using remote images, LXD will automatically cache images for you\n"
-"and remove them upon expiration.\n"
-"\n"
-"The image unique identifier is the hash (sha-256) of its representation\n"
-"as a compressed tarball (or for split images, the concatenation of the\n"
-"metadata and rootfs tarballs).\n"
-"\n"
-"Images can be referenced by their full hash, shortest unique partial\n"
-"hash or alias name (if one is set).\n"
-"\n"
-"\n"
-"lxc image import <tarball>|<dir> [<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) or an image directory into the LXD "
-"image store.\n"
-"    Directory import is only available on Linux and must be performed as "
-"root.\n"
-"\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"
-"    Delete one or more images from the LXD image store.\n"
-"\n"
-"lxc image refresh [<remote>:]<image> [[<remote>:]<image>...]\n"
-"    Refresh one or more images from its parent remote.\n"
-"\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"
-"    The target may be an existing directory, file name, or \"-\" to specify\n"
-"    stdout.  The target MUST be a directory when exporting a split image.\n"
-"    If the target is a directory, the image's name (each part's name for\n"
-"    split images) as found in the database will be used for the exported\n"
-"    image.  If the target is a file (not a directory and not stdout), then\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"
-"    Print everything LXD knows about a given image.\n"
-"\n"
-"lxc image list [<remote>:] [filter] [--format csv|json|table|yaml] [-c "
-"<columns>]\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"
-"    The -c option takes a (optionally comma-separated) list of arguments "
-"that\n"
-"    control which image attributes to output when displaying in table or "
-"csv\n"
-"    format.\n"
-"\n"
-"    Default column layout is: lfpdasu\n"
-"\n"
-"    Column shorthand chars:\n"
-"\n"
-"        l - Shortest image alias (and optionally number of other aliases)\n"
-"\n"
-"        L - Newline-separated list of all image aliases\n"
-"\n"
-"        f - Fingerprint\n"
-"\n"
-"        p - Whether image is public\n"
-"\n"
-"        d - Description\n"
-"\n"
-"        a - Architecture\n"
-"\n"
-"        s - Size\n"
-"\n"
-"        u - Upload date\n"
-"\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"
-"    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"
-"    Create a new alias for an existing image.\n"
-"\n"
-"lxc image alias rename [<remote>:]<alias> <new-name>\n"
-"    Rename an alias.\n"
-"\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."
+#: lxc/exec.go:122
+msgid "You can't pass -t and -T at the same time"
 msgstr ""
 
-#: lxc/info.go:27
+#: lxc/exec.go:126
+msgid "You can't pass -t or -T at the same time as --mode"
+msgstr ""
+
+#: lxc/copy.go:78
+msgid "You must specify a destination container name when using --target"
+msgstr ""
+
+#: lxc/copy.go:73 lxc/move.go:188
+msgid "You must specify a source container name"
+msgstr ""
+
+#: lxc/copy.go:68 lxc/move.go:91 lxc/move.go:183
+msgid "You must use the same source and destination remote when using --target"
+msgstr ""
+
+#: lxc/alias.go:53
+msgid "add <alias> <target>"
+msgstr ""
+
+#: lxc/config_trust.go:57
+msgid "add [<remote>:] <cert>"
+msgstr ""
+
+#: lxc/profile.go:100
+msgid "add [<remote>:]<container> <profile>"
+msgstr ""
+
+#: lxc/config_device.go:74
+msgid "add [<remote>:]<container|profile> <device> <type> [key=value...]"
+msgstr ""
+
+#: lxc/remote.go:82
+msgid "add [<remote>] <IP|FQDN|URL>"
+msgstr ""
+
+#: lxc/alias.go:21 lxc/image_alias.go:24
+msgid "alias"
+msgstr ""
+
+#: lxc/profile.go:160
+msgid "assign [<remote>:]<container> <profiles>"
+msgstr ""
+
+#: lxc/network.go:102
+msgid "attach [<remote>:]<network> <container> [device name] [interface name]"
+msgstr ""
+
+#: lxc/storage_volume.go:120
+msgid "attach [<remote>:]<pool> <volume> <container> [device name] <path>"
+msgstr ""
+
+#: lxc/storage_volume.go:199
 msgid ""
-"Usage: lxc info [<remote>:][<container>] [--show-log] [--resources]\n"
-"\n"
-"Show container or server information.\n"
-"\n"
-"lxc info [<remote>:]<container> [--show-log]\n"
-"    For container information.\n"
-"\n"
-"lxc info [<remote>:] [--resources]\n"
-"    For LXD server information."
+"attach-profile [<remote:>]<pool> <volume> <profile> [device name] <path>"
 msgstr ""
 
-#: lxc/init.go:79
+#: lxc/network.go:175
 msgid ""
-"Usage: lxc init [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
-"profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
-"<node>]\n"
-"\n"
-"Create containers from images.\n"
-"\n"
-"Not specifying -p will result in the default profile.\n"
-"Specifying \"-p\" with no argument will result in no profile.\n"
-"\n"
-"Examples:\n"
-"    lxc init ubuntu:16.04 u1"
+"attach-profile [<remote>:]<network> <profile> [device name] [interface name]"
+msgstr ""
+
+#: lxc/cluster.go:24
+msgid "cluster"
+msgstr ""
+
+#: lxc/config.go:27
+msgid "config"
+msgstr ""
+
+#: lxc/console.go:30
+msgid "console [<remote>:]<container>"
+msgstr ""
+
+#: lxc/storage_volume.go:280
+msgid "copy <pool>/<volume> <pool>/<volume>"
+msgstr ""
+
+#: lxc/image.go:128
+msgid "copy [<remote>:]<image> <remote>:"
+msgstr ""
+
+#: lxc/profile.go:238
+msgid "copy [<remote>:]<profile> [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/copy.go:32
+msgid "copy [<remote>:]<source>[/<snapshot>] [[<remote>:]<destination>]"
+msgstr ""
+
+#: lxc/image_alias.go:57
+msgid "create [<remote>:]<alias> <fingerprint>"
+msgstr ""
+
+#: lxc/config_template.go:65
+msgid "create [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/network.go:248
+msgid "create [<remote>:]<network> [key=value...]"
+msgstr ""
+
+#: lxc/storage.go:87
+msgid "create [<remote>:]<pool> <driver> [key=value]..."
+msgstr ""
+
+#: lxc/storage_volume.go:424
+msgid "create [<remote>:]<pool> <volume> [key=value]..."
+msgstr ""
+
+#: lxc/profile.go:295
+msgid "create [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/remote.go:453
+msgid "default"
+msgstr ""
+
+#: lxc/image_alias.go:103
+msgid "delete [<remote>:]<alias>"
+msgstr ""
+
+#: lxc/config_template.go:107
+msgid "delete [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/file.go:70
+msgid "delete [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...]"
+msgstr ""
+
+#: lxc/delete.go:27
+msgid ""
+"delete [<remote>:]<container>[/<snapshot>] [[<remote>:]<container>[/"
+"<snapshot>]...]"
+msgstr ""
+
+#: lxc/image.go:258
+msgid "delete [<remote>:]<image> [[<remote>:]<image>...]"
+msgstr ""
+
+#: lxc/network.go:317
+msgid "delete [<remote>:]<network>"
+msgstr ""
+
+#: lxc/operation.go:51
+msgid "delete [<remote>:]<operation>"
+msgstr ""
+
+#: lxc/storage.go:158
+msgid "delete [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:498
+msgid "delete [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:345
+msgid "delete [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/storage.go:431
+msgid "description"
+msgstr ""
+
+#: lxc/network.go:365
+msgid "detach [<remote>:]<network> <container> [device name]"
+msgstr ""
+
+#: lxc/storage_volume.go:559
+msgid "detach [<remote>:]<pool> <volume> <container> [device name]"
+msgstr ""
+
+#: lxc/storage_volume.go:641
+msgid "detach-profile [<remote:>]<pool> <volume> <profile> [device name]"
+msgstr ""
+
+#: lxc/network.go:450
+msgid "detach-profile [<remote>:]<network> <container> [device name]"
+msgstr ""
+
+#: lxc/config_device.go:22
+msgid "device"
+msgstr ""
+
+#: lxc/init.go:223
+msgid "didn't get any affected image, container or snapshot from server"
+msgstr ""
+
+#: lxc/image.go:819
+msgid "disabled"
+msgstr ""
+
+#: lxc/storage.go:430
+msgid "driver"
+msgstr ""
+
+#: lxc/config_template.go:150
+msgid "edit [<remote>:]<container> <template>"
+msgstr ""
+
+#: lxc/file.go:120
+msgid "edit [<remote>:]<container>/<path>"
+msgstr ""
+
+#: lxc/image.go:310
+msgid "edit [<remote>:]<image>"
+msgstr ""
+
+#: lxc/network.go:535
+msgid "edit [<remote>:]<network>"
+msgstr ""
+
+#: lxc/storage.go:206
+msgid "edit [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:722
+msgid "edit [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:394
+msgid "edit [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/config.go:86 lxc/config_metadata.go:52
+msgid "edit [<remote>:][container]"
+msgstr ""
+
+#: lxc/image.go:821
+msgid "enabled"
+msgstr ""
+
+#: lxc/action.go:234
+#, c-format
+msgid "error: %v"
+msgstr ""
+
+#: lxc/exec.go:37
+msgid "exec [<remote>:]<container> [flags] [--] <command line>"
+msgstr ""
+
+#: lxc/image.go:433
+msgid "export [<remote>:]<image> [target]"
+msgstr ""
+
+#: lxc/file.go:38
+msgid "file"
+msgstr ""
+
+#: lxc/config_device.go:177
+msgid "get [<remote>:]<container|profile> <device> <key>"
+msgstr ""
+
+#: lxc/network.go:658
+msgid "get [<remote>:]<network> <key>"
+msgstr ""
+
+#: lxc/storage.go:326
+msgid "get [<remote>:]<pool> <key>"
+msgstr ""
+
+#: lxc/storage_volume.go:851
+msgid "get [<remote>:]<pool> <volume> <key>"
+msgstr ""
+
+#: lxc/profile.go:518
+msgid "get [<remote>:]<profile> <key>"
+msgstr ""
+
+#: lxc/config.go:287
+msgid "get [<remote>:][container] <key>"
+msgstr ""
+
+#: lxc/remote.go:378
+msgid "get-default"
+msgstr ""
+
+#: lxc/image.go:40
+msgid "image"
+msgstr ""
+
+#: lxc/image.go:569
+msgid ""
+"import <tarball>|<directory>|<URL> [<rootfs tarball>] [<remote>:] "
+"[key=value...]"
+msgstr ""
+
+#: lxc/storage.go:428
+msgid "info"
+msgstr ""
+
+#: lxc/image.go:774
+msgid "info [<remote>:]<image>"
+msgstr ""
+
+#: lxc/storage.go:381
+msgid "info [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/info.go:27
+msgid "info [<remote>:][<container>]"
+msgstr ""
+
+#: lxc/init.go:33
+msgid "init [<remote>:]<image> [<remote>:][<name>]"
 msgstr ""
 
 #: lxc/launch.go:20
+msgid "launch [<remote>:]<image> [<remote>:][<name>]"
+msgstr ""
+
+#: lxc/alias.go:96 lxc/remote.go:411
+msgid "list"
+msgstr ""
+
+#: lxc/cluster.go:56 lxc/config_trust.go:112 lxc/network.go:716
+#: lxc/operation.go:95 lxc/profile.go:565 lxc/storage.go:488
+msgid "list [<remote>:]"
+msgstr ""
+
+#: lxc/image.go:887
+msgid "list [<remote>:] [filter]"
+msgstr ""
+
+#: lxc/image_alias.go:146
+msgid "list [<remote>:] [filters...]"
+msgstr ""
+
+#: lxc/list.go:45
+msgid "list [<remote>:] [filters]"
+msgstr ""
+
+#: lxc/config_template.go:234
+msgid "list [<remote>:]<container>"
+msgstr ""
+
+#: lxc/config_device.go:249
+msgid "list [<remote>:]<container|profile>"
+msgstr ""
+
+#: lxc/storage_volume.go:915
+msgid "list [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/network.go:806
+msgid "list-leases [<remote>:]<network>"
+msgstr ""
+
+#: lxc/alias.go:57
 msgid ""
-"Usage: lxc launch [<remote>:]<image> [<remote>:][<name>] [--ephemeral|-e] [--"
-"profile|-p <profile>...] [--config|-c <key=value>...] [--network|-n "
-"<network>] [--storage|-s <pool>] [--type|-t <instance type>] [--target "
-"<node>]\n"
-"\n"
-"Create and start containers from images.\n"
-"\n"
-"Not specifying -p will result in the default profile.\n"
-"Specifying \"-p\" with no argument will result in no profile.\n"
-"\n"
-"Examples:\n"
-"    lxc launch ubuntu:16.04 u1"
+"lxc alias add list list -c ns46S\n"
+"    Overwrite the \"list\" command to pass -c ns46S."
 msgstr ""
 
-#: lxc/list.go:44
+#: lxc/alias.go:200
 msgid ""
-"Usage: lxc list [<remote>:] [filters] [--format csv|json|table|yaml] [-c "
-"<columns>] [--fast]\n"
-"\n"
-"List the existing containers.\n"
-"\n"
-"Default column layout: ns46tS\n"
-"Fast column layout: nsacPt\n"
-"\n"
-"*Filters*\n"
-"A single keyword like \"web\" which will list any container with a name "
-"starting by \"web\".\n"
-"\n"
-"A regular expression on the container name. (e.g. .*web.*01$).\n"
-"\n"
-"A key/value pair referring to a configuration item. For those, the namespace "
-"can be abbreviated to the smallest unambiguous identifier.\n"
-"\t- \"user.blah=abc\" will list all containers with the \"blah\" user "
-"property set to \"abc\".\n"
-"\n"
-"\t- \"u.blah=abc\" will do the same\n"
-"\n"
-"\t- \"security.privileged=true\" will list all privileged containers\n"
-"\n"
-"\t- \"s.privileged=true\" will do the same\n"
-"\n"
-"A regular expression matching a configuration item or its value. (e.g. "
-"volatile.eth0.hwaddr=00:16:3e:.*).\n"
-"\n"
-"*Columns*\n"
-"The -c option takes a comma separated list of arguments that control\n"
-"which container attributes to output when displaying in table or csv\n"
-"format.\n"
-"\n"
-"Column arguments are either pre-defined shorthand chars (see below),\n"
-"or (extended) config keys.\n"
-"\n"
-"Commas between consecutive shorthand chars are optional.\n"
-"\n"
-"Pre-defined column shorthand chars:\n"
-"\n"
-"\t4 - IPv4 address\n"
-"\n"
-"\t6 - IPv6 address\n"
-"\n"
-"\ta - Architecture\n"
-"\n"
-"\tb - Storage pool\n"
-"\n"
-"\tc - Creation date\n"
-"\n"
-"\td - Description\n"
-"\n"
-"\tl - Last used date\n"
-"\n"
-"\tn - Name\n"
-"\n"
-"\tN - Number of Processes\n"
-"\n"
-"\tp - PID of the container's init process\n"
-"\n"
-"\tP - Profiles\n"
-"\n"
-"\ts - State\n"
-"\n"
-"\tS - Number of snapshots\n"
-"\n"
-"\tt - Type (persistent or ephemeral)\n"
-"\n"
-"\tL - Location of the container (e.g. its node)\n"
-"\n"
-"Custom columns are defined with \"key[:name][:maxWidth]\":\n"
-"\n"
-"\tKEY: The (extended) config key to display\n"
-"\n"
-"\tNAME: Name to display in the column header.\n"
-"\tDefaults to the key if not specified or empty.\n"
-"\n"
-"\tMAXWIDTH: Max width of the column (longer results are truncated).\n"
-"\tDefaults to -1 (unlimited). Use 0 to limit to the column header size.\n"
-"\n"
-"*Examples*\n"
-"lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:"
-"MAC\n"
-"\tShows a list of containers using the \"NAME\", \"BASE IMAGE\", \"STATE\", "
-"\"IPV4\",\n"
-"\t\"IPV6\" and \"MAC\" columns.\n"
+"lxc alias remove my-list\n"
+"    Remove the \"my-list\" alias."
+msgstr ""
+
+#: lxc/alias.go:149
+msgid ""
+"lxc alias rename list my-list\n"
+"    Rename existing alias \"list\" to \"my-list\"."
+msgstr ""
+
+#: lxc/config_device.go:78
+msgid ""
+"lxc config device add [<remote>:]container1 <device-name> disk source=/share/"
+"c1 path=opt\n"
+"    Will mount the host's /share/c1 onto /opt in the container."
+msgstr ""
+
+#: lxc/config.go:90
+msgid ""
+"lxc config edit <container> < container.yaml\n"
+"    Update the container configuration from config.yaml."
+msgstr ""
+
+#: lxc/config.go:357
+msgid ""
+"lxc config set [<remote>:]<container> limits.cpu 2\n"
+"    Will set a CPU limit of \"2\" for the container.\n"
 "\n"
-"\t\"BASE IMAGE\" and \"MAC\" are custom columns generated from container "
-"configuration keys.\n"
+"lxc config set core.https_address [::]:8443\n"
+"    Will have LXD listen on IPv4 and IPv6 port 8443.\n"
 "\n"
-"lxc list -c ns,user.comment:comment\n"
-"\tList images with their running state and user comment. "
+"lxc config set core.trust_password blah\n"
+"    Will set the server's trust password to blah."
 msgstr ""
 
-#: lxc/manpage.go:20
+#: lxc/file.go:187
 msgid ""
-"Usage: lxc manpage <directory>\n"
-"\n"
-"Generate all the LXD manpages."
+"lxc file pull foo/etc/hosts .\n"
+"   To pull /etc/hosts from the container and write it to the current "
+"directory."
 msgstr ""
 
-#: lxc/monitor.go:49
+#: lxc/file.go:326
 msgid ""
-"Usage: lxc monitor [<remote>:] [--type=TYPE...] [--pretty]\n"
-"\n"
-"Monitor a local or remote LXD server.\n"
+"lxc file push /etc/hosts foo/etc/hosts\n"
+"   To push /etc/hosts into the container \"foo\"."
+msgstr ""
+
+#: lxc/image.go:314
+msgid ""
+"lxc image edit <image>\n"
+"    Launch a text editor to edit the properties\n"
 "\n"
-"By default the monitor will listen to all message types.\n"
+"lxc image edit <image> < image.yaml\n"
+"    Load the image properties from a YAML file"
+msgstr ""
+
+#: lxc/info.go:31
+msgid ""
+"lxc info [<remote>:]<container> [--show-log]\n"
+"    For container information.\n"
 "\n"
-"Message types to listen for can be specified with --type.\n"
+"lxc info [<remote>:] [--resources]\n"
+"    For LXD server information."
+msgstr ""
+
+#: lxc/init.go:37
+msgid "lxc init ubuntu:16.04 u1"
+msgstr ""
+
+#: lxc/launch.go:24
+msgid "lxc launch ubuntu:16.04 u1"
+msgstr ""
+
+#: lxc/list.go:103
+msgid ""
+"lxc list -c n,volatile.base_image:\"BASE IMAGE\":0,s46,volatile.eth0.hwaddr:"
+"MAC\n"
+"  Show containers using the \"NAME\", \"BASE IMAGE\", \"STATE\", \"IPV4\", "
+"\"IPV6\" and \"MAC\" columns.\n"
+"  \"BASE IMAGE\" and \"MAC\" are custom columns generated from container "
+"configuration keys.\n"
 "\n"
-"*Examples*\n"
+"lxc list -c ns,user.comment:comment\n"
+"  List images with their running state and user comment."
+msgstr ""
+
+#: lxc/monitor.go:35
+msgid ""
 "lxc monitor --type=logging\n"
 "    Only show log messages.\n"
 "\n"
 "lxc monitor --pretty --type=logging --loglevel=info\n"
 "    Show a pretty log of messages with info level or higher.\n"
+"\n"
+"lxc monitor --type=lifecycle\n"
+"    Only show lifecycle events."
 msgstr ""
 
-#: lxc/move.go:26
+#: lxc/move.go:33
 msgid ""
-"Usage: lxc move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
-"<snapshot>]] [--container-only] [--target <node>]\n"
-"\n"
-"Move containers within or in between LXD instances.\n"
-"\n"
 "lxc move [<remote>:]<source container> [<remote>:][<destination container>] "
 "[--container-only]\n"
 "    Move a container between two hosts, renaming it if destination name "
@@ -1946,160 +2837,14 @@ msgid ""
 "    Rename a snapshot."
 msgstr ""
 
-#: lxc/network.go:52
-msgid ""
-"Usage: lxc network <subcommand> [options]\n"
-"\n"
-"Manage and attach containers to networks.\n"
-"\n"
-"lxc network list [<remote>:]\n"
-"    List available networks.\n"
-"\n"
-"lxc network list-leases [<remote>:]<network>\n"
-"    List the DHCP leases for the network\n"
-"\n"
-"lxc network show [<remote>:]<network> [--target <node>]\n"
-"    Show details of a network.\n"
-"\n"
-"lxc network create [<remote>:]<network> [key=value...] [--target <node>]\n"
-"    Create a network.\n"
-"\n"
-"lxc network get [<remote>:]<network> <key> [--target <node>]\n"
-"    Get network configuration.\n"
-"\n"
-"lxc network set [<remote>:]<network> <key> <value>\n"
-"    Set network configuration.\n"
-"\n"
-"lxc network unset [<remote>:]<network> <key>\n"
-"    Unset network configuration.\n"
-"\n"
-"lxc network delete [<remote>:]<network>\n"
-"    Delete a network.\n"
-"\n"
-"lxc network edit [<remote>:]<network>\n"
-"    Edit network, either by launching external editor or reading STDIN.\n"
-"\n"
-"lxc network rename [<remote>:]<network> <new-name>\n"
-"    Rename a network.\n"
-"\n"
-"lxc network attach [<remote>:]<network> <container> [device name] [interface "
-"name]\n"
-"    Attach a network interface connecting the network to a specified "
-"container.\n"
-"\n"
-"lxc network attach-profile [<remote>:]<network> <profile> [device name] "
-"[interface name]\n"
-"    Attach a network interface connecting the network to a specified "
-"profile.\n"
-"\n"
-"lxc network detach [<remote>:]<network> <container> [device name]\n"
-"    Remove a network interface connecting the network to a specified "
-"container.\n"
-"\n"
-"lxc network detach-profile [<remote>:]<network> <container> [device name]\n"
-"    Remove a network interface connecting the network to a specified "
-"profile.\n"
-"\n"
-"*Examples*\n"
-"cat network.yaml | lxc network edit <network>\n"
-"    Update a network using the content of network.yaml"
-msgstr ""
-
-#: lxc/operation.go:25
+#: lxc/operation.go:176
 msgid ""
-"Usage: lxc operation <subcommand> [options]\n"
-"\n"
-"List, show and delete background operations.\n"
-"\n"
-"lxc operation list [<remote>:]\n"
-"    List background operations.\n"
-"\n"
-"lxc operation show [<remote>:]<operation>\n"
-"    Show details on a background operation.\n"
-"\n"
-"lxc operation delete [<remote>:]<operation>\n"
-"    Delete a background operation (will attempt to cancel).\n"
-"\n"
-"*Examples*\n"
 "lxc operation show 344a79e4-d88a-45bf-9c39-c72c26f6ab8a\n"
 "    Show details on that operation UUID"
 msgstr ""
 
-#: lxc/profile.go:51
+#: lxc/profile.go:165
 msgid ""
-"Usage: lxc profile <subcommand> [options]\n"
-"\n"
-"Manage container configuration profiles.\n"
-"\n"
-"*Profile configuration*\n"
-"lxc profile list [<remote>:]\n"
-"    List available profiles.\n"
-"\n"
-"lxc profile show [<remote>:]<profile>\n"
-"    Show details of a profile.\n"
-"\n"
-"lxc profile create [<remote>:]<profile>\n"
-"    Create a profile.\n"
-"\n"
-"lxc profile copy [<remote>:]<profile> [<remote>:]<profile>\n"
-"    Copy the profile.\n"
-"\n"
-"lxc profile get [<remote>:]<profile> <key>\n"
-"    Get profile configuration.\n"
-"\n"
-"lxc profile set [<remote>:]<profile> <key> <value>\n"
-"    Set profile configuration.\n"
-"\n"
-"lxc profile unset [<remote>:]<profile> <key>\n"
-"    Unset profile configuration.\n"
-"\n"
-"lxc profile delete [<remote>:]<profile>\n"
-"    Delete a profile.\n"
-"\n"
-"lxc profile edit [<remote>:]<profile>\n"
-"    Edit profile, either by launching external editor or reading STDIN.\n"
-"\n"
-"lxc profile rename [<remote>:]<profile> <new-name>\n"
-"    Rename a profile.\n"
-"\n"
-"*Profile assignment*\n"
-"lxc profile assign [<remote>:]<container> <profiles>\n"
-"    Replace the current set of profiles for the container by the one "
-"provided.\n"
-"\n"
-"lxc profile add [<remote>:]<container> <profile>\n"
-"    Add a profile to a container\n"
-"\n"
-"lxc profile remove [<remote>:]<container> <profile>\n"
-"    Remove the profile from a container\n"
-"\n"
-"*Device management*\n"
-"lxc profile device list [<remote>:]<profile>\n"
-"    List devices in the given profile.\n"
-"\n"
-"lxc profile device show [<remote>:]<profile>\n"
-"    Show full device details in the given profile.\n"
-"\n"
-"lxc profile device remove [<remote>:]<profile> <name>\n"
-"    Remove a device from a profile.\n"
-"\n"
-"lxc profile device get [<remote>:]<profile> <name> <key>\n"
-"    Get a device property.\n"
-"\n"
-"lxc profile device set [<remote>:]<profile> <name> <key> <value>\n"
-"    Set a device property.\n"
-"\n"
-"lxc profile device unset [<remote>:]<profile> <name> <key>\n"
-"    Unset a device property.\n"
-"\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.\n"
-"\n"
-"*Examples*\n"
-"cat profile.yaml | lxc profile edit <profile>\n"
-"    Update a profile using the content of profile.yaml\n"
-"\n"
 "lxc profile assign foo default,bar\n"
 "    Set the profiles for \"foo\" to \"default\" and \"bar\".\n"
 "\n"
@@ -2110,72 +2855,26 @@ msgid ""
 "    Remove all profile from \"foo\""
 msgstr ""
 
-#: lxc/publish.go:28
+#: lxc/profile.go:398
 msgid ""
-"Usage: lxc publish [<remote>:]<container>[/<snapshot>] [<remote>:] [--"
-"alias=ALIAS...] [prop-key=prop-value...]\n"
-"\n"
-"Publish containers as images."
+"lxc profile edit <profile> < profile.yaml\n"
+"    Update a profile using the content of profile.yaml"
 msgstr ""
 
-#: lxc/query.go:25
+#: lxc/query.go:29
 msgid ""
-"Usage: lxc query [-X <action>] [-d <data>] [--wait] [--raw] [<remote>:]<API "
-"path>\n"
-"\n"
-"Send a raw query to LXD.\n"
-"\n"
-"*Examples*\n"
 "lxc query -X DELETE --wait /1.0/containers/c1\n"
 "    Delete local container \"c1\"."
 msgstr ""
 
-#: lxc/remote.go:40
-msgid ""
-"Usage: lxc remote <subcommand> [options]\n"
-"\n"
-"Manage the list of remote LXD servers.\n"
-"\n"
-"lxc remote add [<remote>] <IP|FQDN|URL> [--accept-certificate] [--"
-"password=PASSWORD] [--public] [--protocol=PROTOCOL] [--auth-type=AUTH_TYPE]\n"
-"    Add the remote <remote> at <url>.\n"
-"\n"
-"lxc remote remove <remote>\n"
-"    Remove the remote <remote>.\n"
-"\n"
-"lxc remote list\n"
-"    List all remotes.\n"
-"\n"
-"lxc remote rename <old name> <new name>\n"
-"    Rename remote <old name> to <new name>.\n"
-"\n"
-"lxc remote set-url <remote> <url>\n"
-"    Update <remote>'s url to <url>.\n"
-"\n"
-"lxc remote set-default <remote>\n"
-"    Set the default remote.\n"
-"\n"
-"lxc remote get-default\n"
-"    Print the default remote."
-msgstr ""
-
-#: lxc/rename.go:18
+#: lxc/snapshot.go:26
 msgid ""
-"Usage: lxc rename [<remote>:]<container>[/<snapshot>] [<container>[/"
-"<snapshot>]]\n"
-"\n"
-"Rename a container or snapshot."
+"lxc snapshot u1 snap0\n"
+"    Create a snapshot of \"u1\" called \"snap0\"."
 msgstr ""
 
-#: lxc/restore.go:22
+#: lxc/restore.go:28
 msgid ""
-"Usage: lxc restore [<remote>:]<container> <snapshot> [--stateful]\n"
-"\n"
-"Restore containers from snapshots.\n"
-"\n"
-"If --stateful is passed, then the running state will be restored too.\n"
-"\n"
-"*Examples*\n"
 "lxc snapshot u1 snap0\n"
 "    Create the snapshot.\n"
 "\n"
@@ -2183,121 +2882,20 @@ msgid ""
 "    Restore the snapshot."
 msgstr ""
 
-#: lxc/snapshot.go:19
+#: lxc/storage.go:210
 msgid ""
-"Usage: lxc snapshot [<remote>:]<container> <snapshot name> [--stateful]\n"
-"\n"
-"Create container snapshots.\n"
-"\n"
-"When --stateful is used, LXD attempts to checkpoint the container's\n"
-"running state, including process memory state, TCP connections, ...\n"
-"\n"
-"*Examples*\n"
-"lxc snapshot u1 snap0\n"
-"    Create a snapshot of \"u1\" called \"snap0\"."
+"lxc storage edit [<remote>:]<pool> < pool.yaml\n"
+"    Update a storage pool using the content of pool.yaml."
 msgstr ""
 
-#: lxc/storage.go:67
+#: lxc/storage_volume.go:726
+msgid ""
+"lxc storage volume edit [<remote>:]<pool> <volume> < volume.yaml\n"
+"    Update a storage volume using the content of pool.yaml."
+msgstr ""
+
+#: lxc/storage_volume.go:1168
 msgid ""
-"Usage: lxc storage <subcommand> [options]\n"
-"\n"
-"Manage storage pools and volumes.\n"
-"\n"
-"*Storage pools*\n"
-"lxc storage list [<remote>:]\n"
-"    List available storage pools.\n"
-"\n"
-"lxc storage show [<remote>:]<pool> [--resources] [--target <node>]\n"
-"    Show details of a storage pool.\n"
-"\n"
-"lxc storage info [<remote>:]<pool> [--bytes]\n"
-"    Show information of a storage pool in yaml format.\n"
-"\n"
-"lxc storage create [<remote>:]<pool> <driver> [key=value]... [--target "
-"<node>]\n"
-"    Create a storage pool.\n"
-"\n"
-"lxc storage get [<remote>:]<pool> <key>\n"
-"    Get storage pool configuration.\n"
-"\n"
-"lxc storage set [<remote>:]<pool> <key> <value>\n"
-"    Set storage pool configuration.\n"
-"\n"
-"lxc storage unset [<remote>:]<pool> <key>\n"
-"    Unset storage pool configuration.\n"
-"\n"
-"lxc storage delete [<remote>:]<pool>\n"
-"    Delete a storage pool.\n"
-"\n"
-"lxc storage edit [<remote>:]<pool>\n"
-"    Edit storage pool, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"*Storage volumes*\n"
-"lxc storage volume list [<remote>:]<pool>\n"
-"    List available storage volumes on a storage pool.\n"
-"\n"
-"lxc storage volume show [<remote>:]<pool> <volume> [--target <node>]\n"
-"   Show details of a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume create [<remote>:]<pool> <volume> [key=value]... [--"
-"target <node>]\n"
-"    Create a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume rename [<remote>:]<pool> <old name> <new name> [--target "
-"<node>]\n"
-"    Rename a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume get [<remote>:]<pool> <volume> <key> [--target <node>]\n"
-"    Get storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume set [<remote>:]<pool> <volume> <key> <value> [--target "
-"<node>]\n"
-"    Set storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume unset [<remote>:]<pool> <volume> <key> [--target <node>]\n"
-"    Unset storage volume configuration on a storage pool.\n"
-"\n"
-"lxc storage volume delete [<remote>:]<pool> <volume> [--target <node>]\n"
-"    Delete a storage volume on a storage pool.\n"
-"\n"
-"lxc storage volume edit [<remote>:]<pool> <volume> [--target <node>]\n"
-"    Edit storage volume, either by launching external editor or reading "
-"STDIN.\n"
-"\n"
-"lxc storage volume attach [<remote>:]<pool> <volume> <container> [device "
-"name] <path>\n"
-"    Attach a storage volume to the specified container.\n"
-"\n"
-"lxc storage volume attach-profile [<remote:>]<pool> <volume> <profile> "
-"[device name] <path>\n"
-"    Attach a storage volume to the specified profile.\n"
-"\n"
-"lxc storage volume detach [<remote>:]<pool> <volume> <container> [device "
-"name]\n"
-"    Detach a storage volume from the specified container.\n"
-"\n"
-"lxc storage volume detach-profile [<remote:>]<pool> <volume> <profile> "
-"[device name]\n"
-"\tDetach a storage volume from the specified profile.\n"
-"\n"
-"lxc storage volume copy <pool>/<volume> <pool>/<volume> [--config|-c "
-"<key=value>...]\n"
-"    Copy an existing volume to a new volume at the specified pool.\n"
-"\n"
-"lxc storage volume move [<pool>/]<volume> [<pool>/]<volume>\n"
-"    Move an existing volume to the specified pool.\n"
-"\n"
-"Unless specified through a prefix, all volume operations affect \"custom"
-"\" (user created) volumes.\n"
-"\n"
-"*Examples*\n"
-"cat pool.yaml | lxc storage edit [<remote>:]<pool>\n"
-"    Update a storage pool using the content of pool.yaml.\n"
-"\n"
-"cat pool.yaml | lxc storage volume edit [<remote>:]<pool> <volume>\n"
-"    Update a storage volume using the content of pool.yaml.\n"
-"\n"
 "lxc storage volume show default data\n"
 "    Will show the properties of a custom volume called \"data\" in the "
 "\"default\" pool.\n"
@@ -2307,191 +2905,303 @@ msgid ""
 "\" in the \"default\" pool."
 msgstr ""
 
-#: lxc/version.go:18
+#: lxc/config_metadata.go:27
+msgid "metadata"
+msgstr ""
+
+#: lxc/monitor.go:29
+msgid "monitor [<remote>:]"
+msgstr ""
+
+#: lxc/storage_volume.go:991
+msgid "move [<pool>/]<volume> [<pool>/]<volume>"
+msgstr ""
+
+#: lxc/move.go:28
 msgid ""
-"Usage: lxc version\n"
-"\n"
-"Print the version number of this client tool."
+"move [<remote>:]<container>[/<snapshot>] [<remote>:][<container>[/"
+"<snapshot>]]"
 msgstr ""
 
-#: lxc/delete.go:46
-msgid "User aborted delete operation."
+#: lxc/storage.go:429
+msgid "name"
 msgstr ""
 
-#: lxc/utils/cancel.go:40
+#: lxc/network.go:30
+msgid "network"
+msgstr ""
+
+#: lxc/image.go:809 lxc/image.go:814 lxc/image.go:977
+msgid "no"
+msgstr ""
+
+#: lxc/remote.go:253
+msgid "ok (y/n)?"
+msgstr ""
+
+#: lxc/operation.go:23
+msgid "operation"
+msgstr ""
+
+#: lxc/config_device.go:316
+msgid "override [<remote>:]<container> <device> [key=value...]"
+msgstr ""
+
+#: lxc/action.go:47
+msgid "pause [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/config.go:52
+msgid "please use `lxc profile`"
+msgstr ""
+
+#: lxc/profile.go:28
+msgid "profile"
+msgstr ""
+
+#: lxc/publish.go:32
 msgid ""
-"User signaled us three times, exiting. The remote operation will keep "
-"running."
+"publish [<remote>:]<container>[/<snapshot>] [<remote>:] [flags] [prop-"
+"key=prop-value...]"
 msgstr ""
 
-#: lxc/query.go:36
-msgid "Wait for the operation to complete"
+#: lxc/file.go:183
+msgid ""
+"pull [<remote>:]<container>/<path> [[<remote>:]<container>/<path>...] "
+"<target path>"
 msgstr ""
 
-#: lxc/restore.go:38
+#: lxc/file.go:322
 msgid ""
-"Whether or not to restore the container's running state from snapshot (if "
-"available)"
+"push <source path> [<remote>:]<container>/<path> [[<remote>:]<container>/"
+"<path>...]"
 msgstr ""
 
-#: lxc/snapshot.go:33
-msgid "Whether or not to snapshot the container's running state"
+#: lxc/query.go:25
+msgid "query [<remote>:]<API path>"
 msgstr ""
 
-#: lxc/network.go:560 lxc/operation.go:141 lxc/remote.go:382 lxc/remote.go:387
-msgid "YES"
+#: lxc/image.go:1210
+msgid "refresh [<remote>:]<image> [[<remote>:]<image>...]"
 msgstr ""
 
-#: lxc/exec.go:132
-msgid "You can't pass -t and -T at the same time"
+#: lxc/remote.go:32
+msgid "remote"
 msgstr ""
 
-#: lxc/exec.go:136
-msgid "You can't pass -t or -T at the same time as --mode"
+#: lxc/alias.go:195
+msgid "remove <alias>"
 msgstr ""
 
-#: lxc/copy.go:76
-msgid "You must specify a destination container name when using --target"
+#: lxc/remote.go:546
+msgid "remove <remote>"
 msgstr ""
 
-#: lxc/copy.go:71
-msgid "You must specify a source container name"
+#: lxc/config_trust.go:194
+msgid "remove [<remote>:] <hostname|fingerprint>"
 msgstr ""
 
-#: lxc/copy.go:66 lxc/move.go:71
-msgid "You must use the same source and destination remote when using --target"
+#: lxc/profile.go:630
+msgid "remove [<remote>:]<container> <profile>"
 msgstr ""
 
-#: lxc/main.go:72
-msgid "`lxc config profile` is deprecated, please use `lxc profile`"
+#: lxc/config_device.go:402
+msgid "remove [<remote>:]<container|profile> <name>..."
 msgstr ""
 
-#: lxc/alias.go:56 lxc/alias.go:102
-#, c-format
-msgid "alias %s already exists"
+#: lxc/cluster.go:235
+msgid "remove [<remote>:]<member>"
 msgstr ""
 
-#: lxc/alias.go:68 lxc/alias.go:97
-#, c-format
-msgid "alias %s doesn't exist"
+#: lxc/alias.go:144
+msgid "rename <old alias> <new alias>"
 msgstr ""
 
-#: lxc/remote.go:370
-msgid "can't remove the default remote"
+#: lxc/remote.go:484
+msgid "rename <remote> <new-name>"
 msgstr ""
 
-#: lxc/file.go:296
-msgid "can't supply uid/gid/mode in recursive mode"
+#: lxc/image_alias.go:247
+msgid "rename [<remote>:]<alias> <new-name>"
 msgstr ""
 
-#: lxc/remote.go:399
-msgid "default"
+#: lxc/rename.go:18
+msgid "rename [<remote>:]<container>[/<snapshot>] <container>[/<snapshot>]"
 msgstr ""
 
-#: lxc/storage.go:856
-msgid "description"
+#: lxc/cluster.go:189
+msgid "rename [<remote>:]<member> <new-name>"
 msgstr ""
 
-#: lxc/init.go:315
-msgid "didn't get any affected image, container or snapshot from server"
+#: lxc/network.go:870
+msgid "rename [<remote>:]<network> <new-name>"
 msgstr ""
 
-#: lxc/image.go:594
-msgid "disabled"
+#: lxc/storage_volume.go:1023
+msgid "rename [<remote>:]<pool> <old name> <new name>"
 msgstr ""
 
-#: lxc/storage.go:855
-msgid "driver"
+#: lxc/profile.go:702
+msgid "rename [<remote>:]<profile> <new-name>"
 msgstr ""
 
-#: lxc/image.go:596
-msgid "enabled"
+#: lxc/action.go:67
+msgid "restart [<remote>:]<container> [[<remote>:]<container>...]"
 msgstr ""
 
-#: lxc/action.go:155 lxc/main.go:33 lxc/main.go:191
-#, c-format
-msgid "error: %v"
+#: lxc/restore.go:22
+msgid "restore [<remote>:]<container> <snapshot>"
 msgstr ""
 
-#: lxc/help.go:37 lxc/main.go:133
-#, c-format
-msgid "error: unknown command: %s"
+#: lxc/config_device.go:491
+msgid "set [<remote>:]<container|profile> <device> <key> <value>"
 msgstr ""
 
-#: lxc/storage.go:853
-msgid "info"
+#: lxc/network.go:918
+msgid "set [<remote>:]<network> <key> <value>"
 msgstr ""
 
-#: lxc/storage.go:854
-msgid "name"
+#: lxc/storage.go:571
+msgid "set [<remote>:]<pool> <key> <value>"
 msgstr ""
 
-#: lxc/image.go:210 lxc/image.go:584 lxc/image.go:589
-msgid "no"
+#: lxc/storage_volume.go:1087
+msgid "set [<remote>:]<pool> <volume> <key> <value>"
 msgstr ""
 
-#: lxc/remote.go:204
-msgid "ok (y/n)?"
+#: lxc/profile.go:751
+msgid "set [<remote>:]<profile> <key> <value>"
 msgstr ""
 
-#: lxc/main.go:368 lxc/main.go:372
-#, c-format
-msgid "processing aliases failed %s\n"
+#: lxc/config.go:353
+msgid "set [<remote>:][container] <key> <value>"
 msgstr ""
 
-#: lxc/file.go:588
-msgid "recursive edit doesn't make sense :("
+#: lxc/remote.go:596
+msgid "set-default <remote>"
 msgstr ""
 
-#: lxc/remote.go:436
-#, c-format
-msgid "remote %s already exists"
+#: lxc/remote.go:634
+msgid "set-url <remote> <URL>"
 msgstr ""
 
-#: lxc/remote.go:362 lxc/remote.go:428 lxc/remote.go:463 lxc/remote.go:479
-#, c-format
-msgid "remote %s doesn't exist"
+#: lxc/config_template.go:296
+msgid "show [<remote>:]<container> <template>"
 msgstr ""
 
-#: lxc/remote.go:345
-#, c-format
-msgid "remote %s exists as <%s>"
+#: lxc/config_device.go:580
+msgid "show [<remote>:]<container|profile>"
 msgstr ""
 
-#: lxc/remote.go:366 lxc/remote.go:432 lxc/remote.go:467
-#, c-format
-msgid "remote %s is static and cannot be modified"
+#: lxc/image.go:1283
+msgid "show [<remote>:]<image>"
+msgstr ""
+
+#: lxc/cluster.go:140
+msgid "show [<remote>:]<member>"
+msgstr ""
+
+#: lxc/network.go:987
+msgid "show [<remote>:]<network>"
+msgstr ""
+
+#: lxc/operation.go:172
+msgid "show [<remote>:]<operation>"
+msgstr ""
+
+#: lxc/storage.go:643
+msgid "show [<remote>:]<pool>"
+msgstr ""
+
+#: lxc/storage_volume.go:1164
+msgid "show [<remote>:]<pool> <volume>"
+msgstr ""
+
+#: lxc/profile.go:810
+msgid "show [<remote>:]<profile>"
+msgstr ""
+
+#: lxc/config.go:450 lxc/config_metadata.go:174
+msgid "show [<remote>:][container]"
+msgstr ""
+
+#: lxc/snapshot.go:19
+msgid "snapshot [<remote>:]<container> <snapshot name>"
 msgstr ""
 
-#: lxc/storage.go:858
+#: lxc/storage.go:433
 msgid "space used"
 msgstr ""
 
-#: lxc/info.go:251
+#: lxc/action.go:28
+msgid "start [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/info.go:255
 msgid "stateful"
 msgstr ""
 
-#: lxc/info.go:253
+#: lxc/info.go:257
 msgid "stateless"
 msgstr ""
 
-#: lxc/info.go:247
+#: lxc/action.go:89
+msgid "stop [<remote>:]<container> [[<remote>:]<container>...]"
+msgstr ""
+
+#: lxc/storage.go:31
+msgid "storage"
+msgstr ""
+
+#: lxc/info.go:251
 #, c-format
 msgid "taken at %s"
 msgstr ""
 
-#: lxc/storage.go:857
+#: lxc/config_template.go:28
+msgid "template"
+msgstr ""
+
+#: lxc/storage.go:432
 msgid "total space"
 msgstr ""
 
-#: lxc/storage.go:852
+#: lxc/config_trust.go:28
+msgid "trust"
+msgstr ""
+
+#: lxc/config_device.go:648
+msgid "unset [<remote>:]<container|profile> <device> <key>"
+msgstr ""
+
+#: lxc/network.go:1049
+msgid "unset [<remote>:]<network> <key>"
+msgstr ""
+
+#: lxc/storage.go:727
+msgid "unset [<remote>:]<pool> <key>"
+msgstr ""
+
+#: lxc/storage_volume.go:1239
+msgid "unset [<remote>:]<pool> <volume> <key>"
+msgstr ""
+
+#: lxc/profile.go:864
+msgid "unset [<remote>:]<profile> <key>"
+msgstr ""
+
+#: lxc/config.go:558
+msgid "unset [<remote>:][container] <key>"
+msgstr ""
+
+#: lxc/storage.go:427
 msgid "used by"
 msgstr ""
 
-#: lxc/main.go:299
-msgid "wrong number of subcommand arguments"
+#: lxc/storage_volume.go:32
+msgid "volume"
 msgstr ""
 
-#: lxc/delete.go:45 lxc/image.go:208 lxc/image.go:586 lxc/image.go:591
+#: lxc/delete.go:46 lxc/image.go:811 lxc/image.go:816 lxc/image.go:975
 msgid "yes"
 msgstr ""

From 06faa0f58e609108712f2d99a3b927d8d27e41b6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 29 Mar 2018 00:27:35 -0400
Subject: [PATCH 37/39] tests: Properly handle empty args

---
 test/includes/lxc.sh                         |  2 +-
 test/suites/clustering.sh                    | 27 +++++++++++++++++++--------
 test/suites/fdleak.sh                        |  2 +-
 test/suites/filemanip.sh                     |  2 +-
 test/suites/storage_local_volume_handling.sh | 24 ++++++++++++------------
 5 files changed, 34 insertions(+), 23 deletions(-)

diff --git a/test/includes/lxc.sh b/test/includes/lxc.sh
index 74b45cde6..101b423ec 100644
--- a/test/includes/lxc.sh
+++ b/test/includes/lxc.sh
@@ -13,7 +13,7 @@ lxc_remote() {
     cmd=$(which lxc)
 
     # shellcheck disable=SC2048,SC2068
-    for arg in $@; do
+    for arg in "$@"; do
         if [ "${arg}" = "--" ]; then
             injected=1
             cmd="${cmd} ${DEBUG:-}"
diff --git a/test/suites/clustering.sh b/test/suites/clustering.sh
index 90d5d5e48..579bfb3cd 100644
--- a/test/suites/clustering.sh
+++ b/test/suites/clustering.sh
@@ -324,10 +324,22 @@ test_clustering_storage() {
       driver_config_node1="${driver_config_node1} zfs.pool_name=pool1-$(basename "${TEST_DIR}")-${ns1}"
       driver_config_node2="${driver_config_node1} zfs.pool_name=pool1-$(basename "${TEST_DIR}")-${ns2}"
   fi
-  LXD_DIR="${LXD_ONE_DIR}" lxc storage create pool1 "${driver}" "${driver_config_node1}" --target node1
+
+  if [ -n "${driver_config_node1}" ]; then
+    # shellcheck disable=SC2086
+    LXD_DIR="${LXD_ONE_DIR}" lxc storage create pool1 "${driver}" ${driver_config_node1} --target node1
+  else
+    LXD_DIR="${LXD_ONE_DIR}" lxc storage create pool1 "${driver}" --target node1
+  fi
+
   LXD_DIR="${LXD_TWO_DIR}" lxc storage show pool1 | grep -q node1
   ! LXD_DIR="${LXD_TWO_DIR}" lxc storage show pool1 | grep -q node2
-  LXD_DIR="${LXD_ONE_DIR}" lxc storage create pool1 "${driver}" "${driver_config_node2}" --target node2
+  if [ -n "${driver_config_node2}" ]; then
+    # shellcheck disable=SC2086
+    LXD_DIR="${LXD_ONE_DIR}" lxc storage create pool1 "${driver}" ${driver_config_node2} --target node2
+  else
+    LXD_DIR="${LXD_ONE_DIR}" lxc storage create pool1 "${driver}" --target node2
+  fi
   LXD_DIR="${LXD_ONE_DIR}" lxc storage show pool1 | grep status: | grep -q Pending
 
   # The source config key is not legal for the final pool creation
@@ -336,14 +348,13 @@ test_clustering_storage() {
   fi
 
   # Create the storage pool
-  driver_config_global=""
   if [ "${driver}" = "lvm" ]; then
-      driver_config_global="volume.size=25MB"
-  fi
-  if [ "${driver}" = "ceph" ]; then
-      driver_config_global="${driver_config_global} volume.size=25MB ceph.osd.pg_num=8"
+      LXD_DIR="${LXD_TWO_DIR}" lxc storage create pool1 "${driver}" volume.size=25MB
+  elif [ "${driver}" = "ceph" ]; then
+      LXD_DIR="${LXD_TWO_DIR}" lxc storage create pool1 "${driver}" volume.size=25MB ceph.osd.pg_num=8
+  else
+      LXD_DIR="${LXD_TWO_DIR}" lxc storage create pool1 "${driver}"
   fi
-  LXD_DIR="${LXD_TWO_DIR}" lxc storage create pool1 "${driver}" "${driver_config_global}"
   LXD_DIR="${LXD_ONE_DIR}" lxc storage show pool1 | grep status: | grep -q Created
 
   # The 'source' config key is omitted when showing the cluster
diff --git a/test/suites/fdleak.sh b/test/suites/fdleak.sh
index c2cdf4863..4a61a8212 100644
--- a/test/suites/fdleak.sh
+++ b/test/suites/fdleak.sh
@@ -13,7 +13,7 @@ test_fdleak() {
     ensure_import_testimage
 
     for i in $(seq 5); do
-      lxc init "testimage leaktest${i}"
+      lxc init testimage "leaktest${i}"
       lxc info "leaktest${i}"
       lxc start "leaktest${i}"
       lxc exec "leaktest${i}" -- ps -ef
diff --git a/test/suites/filemanip.sh b/test/suites/filemanip.sh
index 2368c9143..26f238de7 100644
--- a/test/suites/filemanip.sh
+++ b/test/suites/filemanip.sh
@@ -113,7 +113,7 @@ test_filemanip() {
   lxc delete filemanip -f
 
   if [ "$(storage_backend "$LXD_DIR")" != "lvm" ]; then
-    lxc launch testimage idmap -c "raw.idmap=\"both 0 0\""
+    lxc launch testimage idmap -c "raw.idmap=both 0 0"
     [ "$(stat -c %u "${LXD_DIR}/containers/idmap/rootfs")" = "0" ]
     lxc delete idmap --force
   fi
diff --git a/test/suites/storage_local_volume_handling.sh b/test/suites/storage_local_volume_handling.sh
index ccf147825..97c05246f 100644
--- a/test/suites/storage_local_volume_handling.sh
+++ b/test/suites/storage_local_volume_handling.sh
@@ -68,11 +68,11 @@ test_storage_local_volume_handling() {
         lxc storage create "lxdtest-$(basename "${LXD_DIR}")-${driver}1" "${driver}" "$pool_opts"
         lxc storage volume create "lxdtest-$(basename "${LXD_DIR}")-${driver}" vol1
         lxc storage volume copy "lxdtest-$(basename "${LXD_DIR}")-${driver}/vol1" "lxdtest-$(basename "${LXD_DIR}")-${driver}1/vol1"
-        lxc storage volume delete "lxdtest-$(basename "${LXD_DIR}")-${driver}1 vol1"
+        lxc storage volume delete "lxdtest-$(basename "${LXD_DIR}")-${driver}1" vol1
         lxc storage volume move "lxdtest-$(basename "${LXD_DIR}")-${driver}/vol1" "lxdtest-$(basename "${LXD_DIR}")-${driver}1/vol1"
-        ! lxc storage volume show "lxdtest-$(basename "${LXD_DIR}")-${driver} vol1"
-        lxc storage volume show "lxdtest-$(basename "${LXD_DIR}")-${driver}1 vol1"
-        lxc storage volume delete "lxdtest-$(basename "${LXD_DIR}")-${driver}1 vol1"
+        ! lxc storage volume show "lxdtest-$(basename "${LXD_DIR}")-${driver}" vol1
+        lxc storage volume show "lxdtest-$(basename "${LXD_DIR}")-${driver}1" vol1
+        lxc storage volume delete "lxdtest-$(basename "${LXD_DIR}")-${driver}1" vol1
         lxc storage delete "lxdtest-$(basename "${LXD_DIR}")-${driver}1"
       fi
     done
@@ -83,22 +83,22 @@ test_storage_local_volume_handling() {
           # source_driver -> target_driver
           lxc storage volume create "lxdtest-$(basename "${LXD_DIR}")-${source_driver}" vol1
           lxc storage volume copy "lxdtest-$(basename "${LXD_DIR}")-${source_driver}/vol1" "lxdtest-$(basename "${LXD_DIR}")-${target_driver}/vol1"
-          lxc storage volume delete "lxdtest-$(basename "${LXD_DIR}")-${target_driver} vol1"
+          lxc storage volume delete "lxdtest-$(basename "${LXD_DIR}")-${target_driver}" vol1
 
           lxc storage volume move "lxdtest-$(basename "${LXD_DIR}")-${source_driver}/vol1" "lxdtest-$(basename "${LXD_DIR}")-${target_driver}/vol1"
-          ! lxc storage volume show "lxdtest-$(basename "${LXD_DIR}")-${source_driver} vol1"
-          lxc storage volume show "lxdtest-$(basename "${LXD_DIR}")-${target_driver} vol1"
-          lxc storage volume delete "lxdtest-$(basename "${LXD_DIR}")-${target_driver} vol1"
+          ! lxc storage volume show "lxdtest-$(basename "${LXD_DIR}")-${source_driver}" vol1
+          lxc storage volume show "lxdtest-$(basename "${LXD_DIR}")-${target_driver}" vol1
+          lxc storage volume delete "lxdtest-$(basename "${LXD_DIR}")-${target_driver}" vol1
 
           # target_driver -> source_driver
           lxc storage volume create "lxdtest-$(basename "${LXD_DIR}")-${target_driver}" vol1
           lxc storage volume copy "lxdtest-$(basename "${LXD_DIR}")-${target_driver}/vol1" "lxdtest-$(basename "${LXD_DIR}")-${source_driver}/vol1"
-          lxc storage volume delete "lxdtest-$(basename "${LXD_DIR}")-${source_driver} vol1"
+          lxc storage volume delete "lxdtest-$(basename "${LXD_DIR}")-${source_driver}" vol1
 
           lxc storage volume move "lxdtest-$(basename "${LXD_DIR}")-${target_driver}/vol1" "lxdtest-$(basename "${LXD_DIR}")-${source_driver}/vol1"
-          ! lxc storage volume show "lxdtest-$(basename "${LXD_DIR}")-${target_driver} vol1"
-          lxc storage volume show "lxdtest-$(basename "${LXD_DIR}")-${source_driver} vol1"
-          lxc storage volume delete "lxdtest-$(basename "${LXD_DIR}")-${source_driver} vol1"
+          ! lxc storage volume show "lxdtest-$(basename "${LXD_DIR}")-${target_driver}" vol1
+          lxc storage volume show "lxdtest-$(basename "${LXD_DIR}")-${source_driver}" vol1
+          lxc storage volume delete "lxdtest-$(basename "${LXD_DIR}")-${source_driver}" vol1
         fi
       done
     done

From 1f1d082395f8bfa33475044162880e9f568eb400 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 29 Mar 2018 00:41:37 -0400
Subject: [PATCH 38/39] tests: Use a valid IPv6 address

---
 test/suites/network.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/test/suites/network.sh b/test/suites/network.sh
index b5d272a71..0213dc176 100644
--- a/test/suites/network.sh
+++ b/test/suites/network.sh
@@ -33,7 +33,7 @@ test_network() {
   lxc network create lxdt$$ dns.domain=test dns.mode=managed
   lxc network attach lxdt$$ nettest eth0
   v4_addr="$(lxc network get lxdt$$ ipv4.address | cut -d/ -f1)0"
-  v6_addr="$(lxc network get lxdt$$ ipv4.address | cut -d/ -f1)00"
+  v6_addr="$(lxc network get lxdt$$ ipv6.address | cut -d/ -f1)00"
   lxc config device set nettest eth0 ipv4.address "${v4_addr}"
   lxc config device set nettest eth0 ipv6.address "${v6_addr}"
   grep -q "${v4_addr}.*nettest" "${LXD_DIR}/networks/lxdt$$/dnsmasq.hosts/nettest"

From 5b1e6a00d76c035342ae3a4d5e83d10e791e88e7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 29 Mar 2018 02:00:25 -0400
Subject: [PATCH 39/39] shared/gnuflag: Remove from tree
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>
---
 shared/gnuflag/export_test.go  |  24 --
 shared/gnuflag/flag.go         | 900 -----------------------------------------
 shared/gnuflag/flag_test.go    | 550 -------------------------
 test/suites/static_analysis.sh |   1 -
 4 files changed, 1475 deletions(-)
 delete mode 100644 shared/gnuflag/export_test.go
 delete mode 100644 shared/gnuflag/flag.go
 delete mode 100644 shared/gnuflag/flag_test.go

diff --git a/shared/gnuflag/export_test.go b/shared/gnuflag/export_test.go
deleted file mode 100644
index 207feeca0..000000000
--- a/shared/gnuflag/export_test.go
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright 2010 The Go Authors.  All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package gnuflag
-
-import (
-	"os"
-)
-
-// Additional routines compiled into the package only during testing.
-
-// ResetForTesting clears all flag state and sets the usage function as directed.
-// After calling ResetForTesting, parse errors in flag handling will not
-// exit the program.
-func ResetForTesting(usage func()) {
-	commandLine = NewFlagSet(os.Args[0], ContinueOnError)
-	Usage = usage
-}
-
-// CommandLine returns the default FlagSet.
-func CommandLine() *FlagSet {
-	return commandLine
-}
diff --git a/shared/gnuflag/flag.go b/shared/gnuflag/flag.go
deleted file mode 100644
index 94b7b84ad..000000000
--- a/shared/gnuflag/flag.go
+++ /dev/null
@@ -1,900 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-/*
-Package gnuflag implements command-line flag parsing in the GNU style.
-It is almost exactly the same as the standard flag package,
-the only difference being the extra argument to Parse.
-
-Command line flag syntax:
-	-f		// single letter flag
-	-fg		// two single letter flags together
-	--flag	// multiple letter flag
-	--flag x  // non-boolean flags only
-	-f x		// non-boolean flags only
-	-fx		// if f is a non-boolean flag, x is its argument.
-
-The last three forms are not permitted for boolean flags because the
-meaning of the command
-	cmd -f *
-will change if there is a file called 0, false, etc.  There is currently
-no way to turn off a boolean flag.
-
-Flag parsing stops after the terminator "--", or just before the first
-non-flag argument ("-" is a non-flag argument) if the interspersed
-argument to Parse is false.
-*/
-package gnuflag
-
-import (
-	"bytes"
-	"errors"
-	"fmt"
-	"io"
-	"os"
-	"sort"
-	"strconv"
-	"strings"
-	"time"
-	"unicode/utf8"
-)
-
-// ErrHelp is the error returned if the flag -help is invoked but no such flag is defined.
-var ErrHelp = errors.New("flag: help requested")
-
-// -- bool Value
-type boolValue bool
-
-func newBoolValue(val bool, p *bool) *boolValue {
-	*p = val
-	return (*boolValue)(p)
-}
-
-func (b *boolValue) Set(s string) error {
-	v, err := strconv.ParseBool(s)
-	*b = boolValue(v)
-	return err
-}
-
-func (b *boolValue) String() string { return fmt.Sprintf("%v", *b) }
-
-// -- int Value
-type intValue int
-
-func newIntValue(val int, p *int) *intValue {
-	*p = val
-	return (*intValue)(p)
-}
-
-func (i *intValue) Set(s string) error {
-	v, err := strconv.ParseInt(s, 0, 64)
-	*i = intValue(v)
-	return err
-}
-
-func (i *intValue) String() string { return fmt.Sprintf("%v", *i) }
-
-// -- int64 Value
-type int64Value int64
-
-func newInt64Value(val int64, p *int64) *int64Value {
-	*p = val
-	return (*int64Value)(p)
-}
-
-func (i *int64Value) Set(s string) error {
-	v, err := strconv.ParseInt(s, 0, 64)
-	*i = int64Value(v)
-	return err
-}
-
-func (i *int64Value) String() string { return fmt.Sprintf("%v", *i) }
-
-// -- uint Value
-type uintValue uint
-
-func newUintValue(val uint, p *uint) *uintValue {
-	*p = val
-	return (*uintValue)(p)
-}
-
-func (i *uintValue) Set(s string) error {
-	v, err := strconv.ParseUint(s, 0, 64)
-	*i = uintValue(v)
-	return err
-}
-
-func (i *uintValue) String() string { return fmt.Sprintf("%v", *i) }
-
-// -- uint64 Value
-type uint64Value uint64
-
-func newUint64Value(val uint64, p *uint64) *uint64Value {
-	*p = val
-	return (*uint64Value)(p)
-}
-
-func (i *uint64Value) Set(s string) error {
-	v, err := strconv.ParseUint(s, 0, 64)
-	*i = uint64Value(v)
-	return err
-}
-
-func (i *uint64Value) String() string { return fmt.Sprintf("%v", *i) }
-
-// -- string Value
-type stringValue string
-
-func newStringValue(val string, p *string) *stringValue {
-	*p = val
-	return (*stringValue)(p)
-}
-
-func (s *stringValue) Set(val string) error {
-	*s = stringValue(val)
-	return nil
-}
-
-func (s *stringValue) String() string { return fmt.Sprintf("%s", *s) }
-
-// -- float64 Value
-type float64Value float64
-
-func newFloat64Value(val float64, p *float64) *float64Value {
-	*p = val
-	return (*float64Value)(p)
-}
-
-func (f *float64Value) Set(s string) error {
-	v, err := strconv.ParseFloat(s, 64)
-	*f = float64Value(v)
-	return err
-}
-
-func (f *float64Value) String() string { return fmt.Sprintf("%v", *f) }
-
-// -- time.Duration Value
-type durationValue time.Duration
-
-func newDurationValue(val time.Duration, p *time.Duration) *durationValue {
-	*p = val
-	return (*durationValue)(p)
-}
-
-func (d *durationValue) Set(s string) error {
-	v, err := time.ParseDuration(s)
-	*d = durationValue(v)
-	return err
-}
-
-func (d *durationValue) String() string { return (*time.Duration)(d).String() }
-
-// Value is the interface to the dynamic value stored in a flag.
-// (The default value is represented as a string.)
-type Value interface {
-	String() string
-	Set(string) error
-}
-
-// ErrorHandling defines how to handle flag parsing errors.
-type ErrorHandling int
-
-const (
-	// ContinueOnError will cause gnuflag to just return the error
-	ContinueOnError ErrorHandling = iota
-
-	// ExitOnError will cause gnuflag to exit with return code 2
-	ExitOnError
-
-	// PanicOnError will cause gnuflag to to call panic()
-	PanicOnError
-)
-
-// A FlagSet represents a set of defined flags.
-type FlagSet struct {
-	// Usage is the function called when an error occurs while parsing flags.
-	// The field is a function (not a method) that may be changed to point to
-	// a custom error handler.
-	Usage func()
-
-	name             string
-	parsed           bool
-	actual           map[string]*Flag
-	formal           map[string]*Flag
-	args             []string // arguments after flags
-	procArgs         []string // arguments being processed (gnu only)
-	procFlag         string   // flag being processed (gnu only)
-	allowIntersperse bool     // (gnu only)
-	exitOnError      bool     // does the program exit if there's an error?
-	errorHandling    ErrorHandling
-	output           io.Writer // nil means stderr; use out() accessor
-}
-
-// A Flag represents the state of a flag.
-type Flag struct {
-	Name     string // name as it appears on command line
-	Usage    string // help message
-	Value    Value  // value as set
-	DefValue string // default value (as text); for usage message
-}
-
-// sortFlags returns the flags as a slice in lexicographical sorted order.
-func sortFlags(flags map[string]*Flag) []*Flag {
-	list := make(sort.StringSlice, len(flags))
-	i := 0
-	for _, f := range flags {
-		list[i] = f.Name
-		i++
-	}
-	list.Sort()
-	result := make([]*Flag, len(list))
-	for i, name := range list {
-		result[i] = flags[name]
-	}
-	return result
-}
-
-func (f *FlagSet) out() io.Writer {
-	if f.output == nil {
-		return os.Stderr
-	}
-	return f.output
-}
-
-// SetOutput sets the destination for usage and error messages.
-// If output is nil, os.Stderr is used.
-func (f *FlagSet) SetOutput(output io.Writer) {
-	f.output = output
-}
-
-// VisitAll visits the flags in lexicographical order, calling fn for each.
-// It visits all flags, even those not set.
-func (f *FlagSet) VisitAll(fn func(*Flag)) {
-	for _, flag := range sortFlags(f.formal) {
-		fn(flag)
-	}
-}
-
-// VisitAll visits the command-line flags in lexicographical order, calling
-// fn for each.  It visits all flags, even those not set.
-func VisitAll(fn func(*Flag)) {
-	commandLine.VisitAll(fn)
-}
-
-// Visit visits the flags in lexicographical order, calling fn for each.
-// It visits only those flags that have been set.
-func (f *FlagSet) Visit(fn func(*Flag)) {
-	for _, flag := range sortFlags(f.actual) {
-		fn(flag)
-	}
-}
-
-// Visit visits the command-line flags in lexicographical order, calling fn
-// for each.  It visits only those flags that have been set.
-func Visit(fn func(*Flag)) {
-	commandLine.Visit(fn)
-}
-
-// Lookup returns the Flag structure of the named flag, returning nil if none exists.
-func (f *FlagSet) Lookup(name string) *Flag {
-	return f.formal[name]
-}
-
-// Lookup returns the Flag structure of the named command-line flag,
-// returning nil if none exists.
-func Lookup(name string) *Flag {
-	return commandLine.formal[name]
-}
-
-// Set sets the value of the named flag.
-func (f *FlagSet) Set(name, value string) error {
-	flag, ok := f.formal[name]
-	if !ok {
-		return fmt.Errorf("no such flag -%v", name)
-	}
-	err := flag.Value.Set(value)
-	if err != nil {
-		return err
-	}
-	if f.actual == nil {
-		f.actual = make(map[string]*Flag)
-	}
-	f.actual[name] = flag
-	return nil
-}
-
-// Set sets the value of the named command-line flag.
-func Set(name, value string) error {
-	return commandLine.Set(name, value)
-}
-
-// flagsByLength is a slice of flags implementing sort.Interface,
-// sorting primarily by the length of the flag, and secondarily
-// alphabetically.
-type flagsByLength []*Flag
-
-func (f flagsByLength) Less(i, j int) bool {
-	s1, s2 := f[i].Name, f[j].Name
-	if len(s1) != len(s2) {
-		return len(s1) < len(s2)
-	}
-	return s1 < s2
-}
-func (f flagsByLength) Swap(i, j int) {
-	f[i], f[j] = f[j], f[i]
-}
-func (f flagsByLength) Len() int {
-	return len(f)
-}
-
-// flagsByName is a slice of slices of flags implementing sort.Interface,
-// alphabetically sorting by the name of the first flag in each slice.
-type flagsByName [][]*Flag
-
-func (f flagsByName) Less(i, j int) bool {
-	return f[i][0].Name < f[j][0].Name
-}
-func (f flagsByName) Swap(i, j int) {
-	f[i], f[j] = f[j], f[i]
-}
-func (f flagsByName) Len() int {
-	return len(f)
-}
-
-// PrintDefaults prints, to standard error unless configured
-// otherwise, the default values of all defined flags in the set.
-// If there is more than one name for a given flag, the usage information and
-// default value from the shortest will be printed (or the least alphabetically
-// if there are several equally short flag names).
-func (f *FlagSet) PrintDefaults() {
-	// group together all flags for a given value
-	flags := make(map[interface{}]flagsByLength)
-	f.VisitAll(func(f *Flag) {
-		flags[f.Value] = append(flags[f.Value], f)
-	})
-
-	// sort the output flags by shortest name for each group.
-	var byName flagsByName
-	for _, f := range flags {
-		sort.Sort(f)
-		byName = append(byName, f)
-	}
-	sort.Sort(byName)
-
-	var line bytes.Buffer
-	for _, fs := range byName {
-		line.Reset()
-		for i, f := range fs {
-			if i > 0 {
-				line.WriteString(", ")
-			}
-			line.WriteString(flagWithMinus(f.Name))
-		}
-		format := "    %s  (= %s)\n        %s\n"
-		if _, ok := fs[0].Value.(*stringValue); ok {
-			// put quotes on the value
-			format = "    %s (= %q)\n        %s\n"
-		}
-		fmt.Fprintf(f.out(), format, line.Bytes(), fs[0].DefValue, fs[0].Usage)
-	}
-}
-
-// PrintDefaults prints to standard error the default values of all defined command-line flags.
-func PrintDefaults() {
-	commandLine.PrintDefaults()
-}
-
-// defaultUsage is the default function to print a usage message.
-func defaultUsage(f *FlagSet) {
-	fmt.Fprintf(f.out(), "Usage of %s:\n", f.name)
-	f.PrintDefaults()
-}
-
-// NOTE: Usage is not just defaultUsage(commandLine)
-// because it serves (via godoc flag Usage) as the example
-// for how to write your own usage function.
-
-// Usage prints to standard error a usage message documenting all defined command-line flags.
-// The function is a variable that may be changed to point to a custom function.
-var Usage = func() {
-	fmt.Fprintf(os.Stderr, "Usage of %s:\n", os.Args[0])
-	PrintDefaults()
-}
-
-// NFlag returns the number of flags that have been set.
-func (f *FlagSet) NFlag() int { return len(f.actual) }
-
-// NFlag returns the number of command-line flags that have been set.
-func NFlag() int { return len(commandLine.actual) }
-
-// Arg returns the i'th argument.  Arg(0) is the first remaining argument
-// after flags have been processed.
-func (f *FlagSet) Arg(i int) string {
-	if i < 0 || i >= len(f.args) {
-		return ""
-	}
-	return f.args[i]
-}
-
-// Arg returns the i'th command-line argument.  Arg(0) is the first remaining argument
-// after flags have been processed.
-func Arg(i int) string {
-	return commandLine.Arg(i)
-}
-
-// NArg is the number of arguments remaining after flags have been processed.
-func (f *FlagSet) NArg() int { return len(f.args) }
-
-// NArg is the number of arguments remaining after flags have been processed.
-func NArg() int { return len(commandLine.args) }
-
-// Args returns the non-flag arguments.
-func (f *FlagSet) Args() []string { return f.args }
-
-// Args returns the non-flag command-line arguments.
-func Args() []string { return commandLine.args }
-
-// BoolVar defines a bool flag with specified name, default value, and usage string.
-// The argument p points to a bool variable in which to store the value of the flag.
-func (f *FlagSet) BoolVar(p *bool, name string, value bool, usage string) {
-	f.Var(newBoolValue(value, p), name, usage)
-}
-
-// BoolVar defines a bool flag with specified name, default value, and usage string.
-// The argument p points to a bool variable in which to store the value of the flag.
-func BoolVar(p *bool, name string, value bool, usage string) {
-	commandLine.Var(newBoolValue(value, p), name, usage)
-}
-
-// Bool defines a bool flag with specified name, default value, and usage string.
-// The return value is the address of a bool variable that stores the value of the flag.
-func (f *FlagSet) Bool(name string, value bool, usage string) *bool {
-	p := new(bool)
-	f.BoolVar(p, name, value, usage)
-	return p
-}
-
-// Bool defines a bool flag with specified name, default value, and usage string.
-// The return value is the address of a bool variable that stores the value of the flag.
-func Bool(name string, value bool, usage string) *bool {
-	return commandLine.Bool(name, value, usage)
-}
-
-// IntVar defines an int flag with specified name, default value, and usage string.
-// The argument p points to an int variable in which to store the value of the flag.
-func (f *FlagSet) IntVar(p *int, name string, value int, usage string) {
-	f.Var(newIntValue(value, p), name, usage)
-}
-
-// IntVar defines an int flag with specified name, default value, and usage string.
-// The argument p points to an int variable in which to store the value of the flag.
-func IntVar(p *int, name string, value int, usage string) {
-	commandLine.Var(newIntValue(value, p), name, usage)
-}
-
-// Int defines an int flag with specified name, default value, and usage string.
-// The return value is the address of an int variable that stores the value of the flag.
-func (f *FlagSet) Int(name string, value int, usage string) *int {
-	p := new(int)
-	f.IntVar(p, name, value, usage)
-	return p
-}
-
-// Int defines an int flag with specified name, default value, and usage string.
-// The return value is the address of an int variable that stores the value of the flag.
-func Int(name string, value int, usage string) *int {
-	return commandLine.Int(name, value, usage)
-}
-
-// Int64Var defines an int64 flag with specified name, default value, and usage string.
-// The argument p points to an int64 variable in which to store the value of the flag.
-func (f *FlagSet) Int64Var(p *int64, name string, value int64, usage string) {
-	f.Var(newInt64Value(value, p), name, usage)
-}
-
-// Int64Var defines an int64 flag with specified name, default value, and usage string.
-// The argument p points to an int64 variable in which to store the value of the flag.
-func Int64Var(p *int64, name string, value int64, usage string) {
-	commandLine.Var(newInt64Value(value, p), name, usage)
-}
-
-// Int64 defines an int64 flag with specified name, default value, and usage string.
-// The return value is the address of an int64 variable that stores the value of the flag.
-func (f *FlagSet) Int64(name string, value int64, usage string) *int64 {
-	p := new(int64)
-	f.Int64Var(p, name, value, usage)
-	return p
-}
-
-// Int64 defines an int64 flag with specified name, default value, and usage string.
-// The return value is the address of an int64 variable that stores the value of the flag.
-func Int64(name string, value int64, usage string) *int64 {
-	return commandLine.Int64(name, value, usage)
-}
-
-// UintVar defines a uint flag with specified name, default value, and usage string.
-// The argument p points to a uint variable in which to store the value of the flag.
-func (f *FlagSet) UintVar(p *uint, name string, value uint, usage string) {
-	f.Var(newUintValue(value, p), name, usage)
-}
-
-// UintVar defines a uint flag with specified name, default value, and usage string.
-// The argument p points to a uint  variable in which to store the value of the flag.
-func UintVar(p *uint, name string, value uint, usage string) {
-	commandLine.Var(newUintValue(value, p), name, usage)
-}
-
-// Uint defines a uint flag with specified name, default value, and usage string.
-// The return value is the address of a uint  variable that stores the value of the flag.
-func (f *FlagSet) Uint(name string, value uint, usage string) *uint {
-	p := new(uint)
-	f.UintVar(p, name, value, usage)
-	return p
-}
-
-// Uint defines a uint flag with specified name, default value, and usage string.
-// The return value is the address of a uint  variable that stores the value of the flag.
-func Uint(name string, value uint, usage string) *uint {
-	return commandLine.Uint(name, value, usage)
-}
-
-// Uint64Var defines a uint64 flag with specified name, default value, and usage string.
-// The argument p points to a uint64 variable in which to store the value of the flag.
-func (f *FlagSet) Uint64Var(p *uint64, name string, value uint64, usage string) {
-	f.Var(newUint64Value(value, p), name, usage)
-}
-
-// Uint64Var defines a uint64 flag with specified name, default value, and usage string.
-// The argument p points to a uint64 variable in which to store the value of the flag.
-func Uint64Var(p *uint64, name string, value uint64, usage string) {
-	commandLine.Var(newUint64Value(value, p), name, usage)
-}
-
-// Uint64 defines a uint64 flag with specified name, default value, and usage string.
-// The return value is the address of a uint64 variable that stores the value of the flag.
-func (f *FlagSet) Uint64(name string, value uint64, usage string) *uint64 {
-	p := new(uint64)
-	f.Uint64Var(p, name, value, usage)
-	return p
-}
-
-// Uint64 defines a uint64 flag with specified name, default value, and usage string.
-// The return value is the address of a uint64 variable that stores the value of the flag.
-func Uint64(name string, value uint64, usage string) *uint64 {
-	return commandLine.Uint64(name, value, usage)
-}
-
-// StringVar defines a string flag with specified name, default value, and usage string.
-// The argument p points to a string variable in which to store the value of the flag.
-func (f *FlagSet) StringVar(p *string, name string, value string, usage string) {
-	f.Var(newStringValue(value, p), name, usage)
-}
-
-// StringVar defines a string flag with specified name, default value, and usage string.
-// The argument p points to a string variable in which to store the value of the flag.
-func StringVar(p *string, name string, value string, usage string) {
-	commandLine.Var(newStringValue(value, p), name, usage)
-}
-
-// String defines a string flag with specified name, default value, and usage string.
-// The return value is the address of a string variable that stores the value of the flag.
-func (f *FlagSet) String(name string, value string, usage string) *string {
-	p := new(string)
-	f.StringVar(p, name, value, usage)
-	return p
-}
-
-// String defines a string flag with specified name, default value, and usage string.
-// The return value is the address of a string variable that stores the value of the flag.
-func String(name string, value string, usage string) *string {
-	return commandLine.String(name, value, usage)
-}
-
-// Float64Var defines a float64 flag with specified name, default value, and usage string.
-// The argument p points to a float64 variable in which to store the value of the flag.
-func (f *FlagSet) Float64Var(p *float64, name string, value float64, usage string) {
-	f.Var(newFloat64Value(value, p), name, usage)
-}
-
-// Float64Var defines a float64 flag with specified name, default value, and usage string.
-// The argument p points to a float64 variable in which to store the value of the flag.
-func Float64Var(p *float64, name string, value float64, usage string) {
-	commandLine.Var(newFloat64Value(value, p), name, usage)
-}
-
-// Float64 defines a float64 flag with specified name, default value, and usage string.
-// The return value is the address of a float64 variable that stores the value of the flag.
-func (f *FlagSet) Float64(name string, value float64, usage string) *float64 {
-	p := new(float64)
-	f.Float64Var(p, name, value, usage)
-	return p
-}
-
-// Float64 defines a float64 flag with specified name, default value, and usage string.
-// The return value is the address of a float64 variable that stores the value of the flag.
-func Float64(name string, value float64, usage string) *float64 {
-	return commandLine.Float64(name, value, usage)
-}
-
-// DurationVar defines a time.Duration flag with specified name, default value, and usage string.
-// The argument p points to a time.Duration variable in which to store the value of the flag.
-func (f *FlagSet) DurationVar(p *time.Duration, name string, value time.Duration, usage string) {
-	f.Var(newDurationValue(value, p), name, usage)
-}
-
-// DurationVar defines a time.Duration flag with specified name, default value, and usage string.
-// The argument p points to a time.Duration variable in which to store the value of the flag.
-func DurationVar(p *time.Duration, name string, value time.Duration, usage string) {
-	commandLine.Var(newDurationValue(value, p), name, usage)
-}
-
-// Duration defines a time.Duration flag with specified name, default value, and usage string.
-// The return value is the address of a time.Duration variable that stores the value of the flag.
-func (f *FlagSet) Duration(name string, value time.Duration, usage string) *time.Duration {
-	p := new(time.Duration)
-	f.DurationVar(p, name, value, usage)
-	return p
-}
-
-// Duration defines a time.Duration flag with specified name, default value, and usage string.
-// The return value is the address of a time.Duration variable that stores the value of the flag.
-func Duration(name string, value time.Duration, usage string) *time.Duration {
-	return commandLine.Duration(name, value, usage)
-}
-
-// Var defines a flag with the specified name and usage string. The type and
-// value of the flag are represented by the first argument, of type Value, which
-// typically holds a user-defined implementation of Value. For instance, the
-// caller could create a flag that turns a comma-separated string into a slice
-// of strings by giving the slice the methods of Value; in particular, Set would
-// decompose the comma-separated string into the slice.
-func (f *FlagSet) Var(value Value, name string, usage string) {
-	// Remember the default value as a string; it won't change.
-	flag := &Flag{name, usage, value, value.String()}
-	_, alreadythere := f.formal[name]
-	if alreadythere {
-		fmt.Fprintf(f.out(), "%s flag redefined: %s\n", f.name, name)
-		panic("flag redefinition") // Happens only if flags are declared with identical names
-	}
-	if f.formal == nil {
-		f.formal = make(map[string]*Flag)
-	}
-	f.formal[name] = flag
-}
-
-// Var defines a flag with the specified name and usage string. The type and
-// value of the flag are represented by the first argument, of type Value, which
-// typically holds a user-defined implementation of Value. For instance, the
-// caller could create a flag that turns a comma-separated string into a slice
-// of strings by giving the slice the methods of Value; in particular, Set would
-// decompose the comma-separated string into the slice.
-func Var(value Value, name string, usage string) {
-	commandLine.Var(value, name, usage)
-}
-
-// failf prints to standard error a formatted error and usage message and
-// returns the error.
-func (f *FlagSet) failf(format string, a ...interface{}) error {
-	err := fmt.Errorf(format, a...)
-	fmt.Fprintf(f.out(), "error: %v\n", err)
-	return err
-}
-
-// usage calls the Usage method for the flag set, or the usage function if
-// the flag set is commandLine.
-func (f *FlagSet) usage() {
-	if f == commandLine {
-		Usage()
-	} else if f.Usage == nil {
-		defaultUsage(f)
-	} else {
-		f.Usage()
-	}
-}
-
-func (f *FlagSet) parseOneGnu() (flagName string, long, finished bool, err error) {
-	if len(f.procArgs) == 0 {
-		finished = true
-		return
-	}
-
-	// processing previously encountered single-rune flag
-	if flag := f.procFlag; len(flag) > 0 {
-		_, n := utf8.DecodeRuneInString(flag)
-		f.procFlag = flag[n:]
-		flagName = flag[0:n]
-		return
-	}
-
-	a := f.procArgs[0]
-
-	// one non-flag argument
-	if a == "-" || a == "" || a[0] != '-' {
-		if f.allowIntersperse {
-			f.args = append(f.args, a)
-			f.procArgs = f.procArgs[1:]
-			return
-		}
-		f.args = append(f.args, f.procArgs...)
-		f.procArgs = nil
-		finished = true
-		return
-	}
-
-	// end of flags
-	if f.procArgs[0] == "--" {
-		f.args = append(f.args, f.procArgs[1:]...)
-		f.procArgs = nil
-		finished = true
-		return
-	}
-
-	// long flag signified with "--" prefix
-	if a[1] == '-' {
-		long = true
-		i := strings.Index(a, "=")
-		if i < 0 {
-			f.procArgs = f.procArgs[1:]
-			flagName = a[2:]
-			return
-		}
-		flagName = a[2:i]
-		if flagName == "" {
-			err = fmt.Errorf("empty flag in argument %q", a)
-			return
-		}
-		f.procArgs = f.procArgs[1:]
-		f.procFlag = a[i:]
-		return
-	}
-
-	// some number of single-rune flags
-	a = a[1:]
-	_, n := utf8.DecodeRuneInString(a)
-	flagName = a[0:n]
-	f.procFlag = a[n:]
-	f.procArgs = f.procArgs[1:]
-	return
-}
-
-func flagWithMinus(name string) string {
-	if len(name) > 1 {
-		return "--" + name
-	}
-	return "-" + name
-}
-
-func (f *FlagSet) parseGnuFlagArg(name string, long bool) (finished bool, err error) {
-	m := f.formal
-	flag, alreadythere := m[name] // BUG
-	if !alreadythere {
-		if name == "help" || name == "h" { // special case for nice help message.
-			f.usage()
-			return false, ErrHelp
-		}
-		// TODO print --xxx when flag is more than one rune.
-		return false, f.failf("flag provided but not defined: %s", flagWithMinus(name))
-	}
-	if fv, ok := flag.Value.(*boolValue); ok && !strings.HasPrefix(f.procFlag, "=") {
-		// special case: doesn't need an arg, and an arg hasn't
-		// been provided explicitly.
-		fv.Set("true")
-	} else {
-		// It must have a value, which might be the next argument.
-		var hasValue bool
-		var value string
-		if f.procFlag != "" {
-			// value directly follows flag
-			value = f.procFlag
-			if long {
-				if value[0] != '=' {
-					panic("no leading '=' in long flag")
-				}
-				value = value[1:]
-			}
-			hasValue = true
-			f.procFlag = ""
-		}
-		if !hasValue && len(f.procArgs) > 0 {
-			// value is the next arg
-			hasValue = true
-			value, f.procArgs = f.procArgs[0], f.procArgs[1:]
-		}
-		if !hasValue {
-			return false, f.failf("flag needs an argument: %s", flagWithMinus(name))
-		}
-		if err := flag.Value.Set(value); err != nil {
-			return false, f.failf("invalid value %q for flag %s: %v", value, flagWithMinus(name), err)
-		}
-	}
-	if f.actual == nil {
-		f.actual = make(map[string]*Flag)
-	}
-	f.actual[name] = flag
-	return
-}
-
-// Parse parses flag definitions from the argument list, which should not
-// include the command name.  Must be called after all flags in the FlagSet
-// are defined and before flags are accessed by the program.
-// The return value will be ErrHelp if --help was set but not defined.
-// If allowIntersperse is set, arguments and flags can be interspersed, that
-// is flags can follow positional arguments.
-func (f *FlagSet) Parse(allowIntersperse bool, arguments []string) error {
-	f.parsed = true
-	f.procArgs = arguments
-	f.procFlag = ""
-	f.args = nil
-	f.allowIntersperse = allowIntersperse
-	for {
-		name, long, finished, err := f.parseOneGnu()
-		if !finished {
-			if name != "" {
-				finished, err = f.parseGnuFlagArg(name, long)
-			}
-		}
-		if err != nil {
-			switch f.errorHandling {
-			case ContinueOnError:
-				return err
-			case ExitOnError:
-				os.Exit(2)
-			case PanicOnError:
-				panic(err)
-			}
-		}
-		if !finished {
-			continue
-		}
-		if err == nil {
-			break
-		}
-	}
-	return nil
-}
-
-// Parsed reports whether f.Parse has been called.
-func (f *FlagSet) Parsed() bool {
-	return f.parsed
-}
-
-// Parse parses the command-line flags from os.Args[1:].  Must be called
-// after all flags are defined and before flags are accessed by the program.
-// If allowIntersperse is set, arguments and flags can be interspersed, that
-// is flags can follow positional arguments.
-func Parse(allowIntersperse bool) {
-	// Ignore errors; commandLine is set for ExitOnError.
-	commandLine.Parse(allowIntersperse, os.Args[1:])
-}
-
-// Parsed returns true if the command-line flags have been parsed.
-func Parsed() bool {
-	return commandLine.Parsed()
-}
-
-// The default set of command-line flags, parsed from os.Args.
-var commandLine = NewFlagSet(os.Args[0], ExitOnError)
-
-// SetOut sets the output writer for the default FlagSet.
-func SetOut(w io.Writer) {
-	commandLine.output = w
-}
-
-// NewFlagSet returns a new, empty flag set with the specified name and
-// error handling property.
-func NewFlagSet(name string, errorHandling ErrorHandling) *FlagSet {
-	f := &FlagSet{
-		name:          name,
-		errorHandling: errorHandling,
-	}
-	return f
-}
-
-// Init sets the name and error handling property for a flag set.
-// By default, the zero FlagSet uses an empty name and the
-// ContinueOnError error handling policy.
-func (f *FlagSet) Init(name string, errorHandling ErrorHandling) {
-	f.name = name
-	f.errorHandling = errorHandling
-}
diff --git a/shared/gnuflag/flag_test.go b/shared/gnuflag/flag_test.go
deleted file mode 100644
index d681e4f80..000000000
--- a/shared/gnuflag/flag_test.go
+++ /dev/null
@@ -1,550 +0,0 @@
-// Copyright 2009 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package gnuflag_test
-
-import (
-	"bytes"
-	"fmt"
-	"os"
-	"reflect"
-	"sort"
-	"strings"
-	"testing"
-	"time"
-
-	. "github.com/lxc/lxd/shared/gnuflag"
-)
-
-var (
-	test_bool     = Bool("test_bool", false, "bool value")
-	test_int      = Int("test_int", 0, "int value")
-	test_int64    = Int64("test_int64", 0, "int64 value")
-	test_uint     = Uint("test_uint", 0, "uint value")
-	test_uint64   = Uint64("test_uint64", 0, "uint64 value")
-	test_string   = String("test_string", "0", "string value")
-	test_float64  = Float64("test_float64", 0, "float64 value")
-	test_duration = Duration("test_duration", 0, "time.Duration value")
-)
-
-func boolString(s string) string {
-	if s == "0" {
-		return "false"
-	}
-	return "true"
-}
-
-func TestEverything(t *testing.T) {
-	m := make(map[string]*Flag)
-	desired := "0"
-	visitor := func(f *Flag) {
-		if len(f.Name) > 5 && f.Name[0:5] == "test_" {
-			m[f.Name] = f
-			ok := false
-			switch {
-			case f.Value.String() == desired:
-				ok = true
-			case f.Name == "test_bool" && f.Value.String() == boolString(desired):
-				ok = true
-			case f.Name == "test_duration" && f.Value.String() == desired+"s":
-				ok = true
-			}
-			if !ok {
-				t.Error("Visit: bad value", f.Value.String(), "for", f.Name)
-			}
-		}
-	}
-	VisitAll(visitor)
-	if len(m) != 8 {
-		t.Error("VisitAll misses some flags")
-		for k, v := range m {
-			t.Log(k, *v)
-		}
-	}
-	m = make(map[string]*Flag)
-	Visit(visitor)
-	if len(m) != 0 {
-		t.Errorf("Visit sees unset flags")
-		for k, v := range m {
-			t.Log(k, *v)
-		}
-	}
-	// Now set all flags
-	Set("test_bool", "true")
-	Set("test_int", "1")
-	Set("test_int64", "1")
-	Set("test_uint", "1")
-	Set("test_uint64", "1")
-	Set("test_string", "1")
-	Set("test_float64", "1")
-	Set("test_duration", "1s")
-	desired = "1"
-	Visit(visitor)
-	if len(m) != 8 {
-		t.Error("Visit fails after set")
-		for k, v := range m {
-			t.Log(k, *v)
-		}
-	}
-	// Now test they're visited in sort order.
-	var flagNames []string
-	Visit(func(f *Flag) { flagNames = append(flagNames, f.Name) })
-	if !sort.StringsAreSorted(flagNames) {
-		t.Errorf("flag names not sorted: %v", flagNames)
-	}
-}
-
-func TestUsage(t *testing.T) {
-	called := false
-	ResetForTesting(func() { called = true })
-	f := CommandLine()
-	f.SetOutput(nullWriter{})
-	if f.Parse(true, []string{"-x"}) == nil {
-		t.Error("parse did not fail for unknown flag")
-	}
-	if called {
-		t.Error("called Usage for unknown flag")
-	}
-}
-
-var parseTests = []struct {
-	about       string
-	intersperse bool
-	args        []string
-	vals        map[string]interface{}
-	remaining   []string
-	error       string
-}{{
-	about:       "regular args",
-	intersperse: true,
-	args: []string{
-		"--bool2",
-		"--int", "22",
-		"--int64", "0x23",
-		"--uint", "24",
-		"--uint64", "25",
-		"--string", "hello",
-		"--float64", "2718e28",
-		"--duration", "2m",
-		"one - extra - argument",
-	},
-	vals: map[string]interface{}{
-		"bool":     false,
-		"bool2":    true,
-		"int":      22,
-		"int64":    int64(0x23),
-		"uint":     uint(24),
-		"uint64":   uint64(25),
-		"string":   "hello",
-		"float64":  2718e28,
-		"duration": 2 * 60 * time.Second,
-	},
-	remaining: []string{
-		"one - extra - argument",
-	},
-}, {
-	about:       "playing with -",
-	intersperse: true,
-	args: []string{
-		"-a",
-		"-",
-		"-bc",
-		"2",
-		"-de1s",
-		"-f2s",
-		"-g", "3s",
-		"--h",
-		"--long",
-		"--long2", "-4s",
-		"3",
-		"4",
-		"--", "-5",
-	},
-	vals: map[string]interface{}{
-		"a":     true,
-		"b":     true,
-		"c":     true,
-		"d":     true,
-		"e":     "1s",
-		"f":     "2s",
-		"g":     "3s",
-		"h":     true,
-		"long":  true,
-		"long2": "-4s",
-		"z":     "default",
-		"www":   99,
-	},
-	remaining: []string{
-		"-",
-		"2",
-		"3",
-		"4",
-		"-5",
-	},
-}, {
-	about:       "flag after explicit --",
-	intersperse: true,
-	args: []string{
-		"-a",
-		"--",
-		"-b",
-	},
-	vals: map[string]interface{}{
-		"a": true,
-		"b": false,
-	},
-	remaining: []string{
-		"-b",
-	},
-}, {
-	about: "flag after end",
-	args: []string{
-		"-a",
-		"foo",
-		"-b",
-	},
-	vals: map[string]interface{}{
-		"a": true,
-		"b": false,
-	},
-	remaining: []string{
-		"foo",
-		"-b",
-	},
-}, {
-	about: "arg and flag after explicit end",
-	args: []string{
-		"-a",
-		"--",
-		"foo",
-		"-b",
-	},
-	vals: map[string]interface{}{
-		"a": true,
-		"b": false,
-	},
-	remaining: []string{
-		"foo",
-		"-b",
-	},
-}, {
-	about: "boolean args, explicitly and non-explicitly given",
-	args: []string{
-		"--a=false",
-		"--b=true",
-		"--c",
-	},
-	vals: map[string]interface{}{
-		"a": false,
-		"b": true,
-		"c": true,
-	},
-}, {
-	about: "using =",
-	args: []string{
-		"--arble=bar",
-		"--bletch=",
-		"--a=something",
-		"-b=other",
-		"-cdand more",
-		"--curdle=--milk",
-		"--sandwich", "=",
-		"--darn=",
-		"=arg",
-	},
-	vals: map[string]interface{}{
-		"arble":    "bar",
-		"bletch":   "",
-		"a":        "something",
-		"b":        "=other",
-		"c":        true,
-		"d":        "and more",
-		"curdle":   "--milk",
-		"sandwich": "=",
-		"darn":     "",
-	},
-	remaining: []string{"=arg"},
-}, {
-	about: "empty flag #1",
-	args: []string{
-		"--=bar",
-	},
-	error: `empty flag in argument "--=bar"`,
-}, {
-	about: "single-letter equals",
-	args: []string{
-		"-=bar",
-	},
-	error: `flag provided but not defined: -=`,
-}, {
-	about: "empty flag #2",
-	args: []string{
-		"--=",
-	},
-	error: `empty flag in argument "--="`,
-}, {
-	about: "no equals",
-	args: []string{
-		"-=",
-	},
-	error: `flag provided but not defined: -=`,
-}, {
-	args: []string{
-		"-a=true",
-	},
-	vals: map[string]interface{}{
-		"a": true,
-	},
-	error: `invalid value "=true" for flag -a: strconv.ParseBool: parsing "=true": invalid syntax`,
-}, {
-	intersperse: true,
-	args: []string{
-		"-a",
-		"-b",
-	},
-	vals: map[string]interface{}{
-		"a": true,
-	},
-	error: "flag provided but not defined: -b",
-}, {
-	intersperse: true,
-	args: []string{
-		"-a",
-	},
-	vals: map[string]interface{}{
-		"a": "default",
-	},
-	error: "flag needs an argument: -a",
-}, {
-	intersperse: true,
-	args: []string{
-		"-a", "b",
-	},
-	vals: map[string]interface{}{
-		"a": 0,
-	},
-	error: `invalid value "b" for flag -a: strconv.ParseInt: parsing "b": invalid syntax`,
-},
-}
-
-func testParse(newFlagSet func() *FlagSet, t *testing.T) {
-	for i, g := range parseTests {
-		t.Logf("test %d. %s", i, g.about)
-		f := newFlagSet()
-		flags := make(map[string]interface{})
-		for name, val := range g.vals {
-			switch val.(type) {
-			case bool:
-				flags[name] = f.Bool(name, false, "bool value "+name)
-			case string:
-				flags[name] = f.String(name, "default", "string value "+name)
-			case int:
-				flags[name] = f.Int(name, 99, "int value "+name)
-			case uint:
-				flags[name] = f.Uint(name, 0, "uint value")
-			case uint64:
-				flags[name] = f.Uint64(name, 0, "uint64 value")
-			case int64:
-				flags[name] = f.Int64(name, 0, "uint64 value")
-			case float64:
-				flags[name] = f.Float64(name, 0, "float64 value")
-			case time.Duration:
-				flags[name] = f.Duration(name, 5*time.Second, "duration value")
-			default:
-				t.Fatalf("unhandled type %T", val)
-			}
-		}
-		err := f.Parse(g.intersperse, g.args)
-		if g.error != "" {
-			if err == nil {
-				t.Errorf("expected error %q got nil", g.error)
-			} else if err.Error() != g.error {
-				t.Errorf("expected error %q got %q", g.error, err.Error())
-			}
-			continue
-		}
-		for name, val := range g.vals {
-			actual := reflect.ValueOf(flags[name]).Elem().Interface()
-			if val != actual {
-				t.Errorf("flag %q, expected %v got %v", name, val, actual)
-			}
-		}
-		if len(f.Args()) != len(g.remaining) {
-			t.Fatalf("remaining args, expected %q got %q", g.remaining, f.Args())
-		}
-		for j, a := range f.Args() {
-			if a != g.remaining[j] {
-				t.Errorf("arg %d, expected %q got %q", j, g.remaining[i], a)
-			}
-		}
-	}
-}
-
-func TestParse(t *testing.T) {
-	testParse(func() *FlagSet {
-		ResetForTesting(func() {})
-		f := CommandLine()
-		f.SetOutput(nullWriter{})
-		return f
-	}, t)
-}
-
-func TestFlagSetParse(t *testing.T) {
-	testParse(func() *FlagSet {
-		f := NewFlagSet("test", ContinueOnError)
-		f.SetOutput(nullWriter{})
-		return f
-	}, t)
-}
-
-// Declare a user-defined flag type.
-type flagVar []string
-
-func (f *flagVar) String() string {
-	return fmt.Sprint([]string(*f))
-}
-
-func (f *flagVar) Set(value string) error {
-	*f = append(*f, value)
-	return nil
-}
-
-func TestUserDefined(t *testing.T) {
-	var flags FlagSet
-	flags.Init("test", ContinueOnError)
-	var v flagVar
-	flags.Var(&v, "v", "usage")
-	if err := flags.Parse(true, []string{"-v", "1", "-v", "2", "-v3"}); err != nil {
-		t.Error(err)
-	}
-	if len(v) != 3 {
-		t.Fatal("expected 3 args; got ", len(v))
-	}
-	expect := "[1 2 3]"
-	if v.String() != expect {
-		t.Errorf("expected value %q got %q", expect, v.String())
-	}
-}
-
-func TestSetOutput(t *testing.T) {
-	var flags FlagSet
-	var buf bytes.Buffer
-	flags.SetOutput(&buf)
-	flags.Init("test", ContinueOnError)
-	flags.Parse(true, []string{"-unknown"})
-	if out := buf.String(); !strings.Contains(out, "-unknown") {
-		t.Logf("expected output mentioning unknown; got %q", out)
-	}
-}
-
-// This tests that one can reset the flags. This still works but not well, and is
-// superseded by FlagSet.
-func TestChangingArgs(t *testing.T) {
-	ResetForTesting(func() { t.Fatal("bad parse") })
-	oldArgs := os.Args
-	defer func() { os.Args = oldArgs }()
-	os.Args = []string{"cmd", "--before", "subcmd", "--after", "args"}
-	before := Bool("before", false, "")
-	if err := CommandLine().Parse(false, os.Args[1:]); err != nil {
-		t.Fatal(err)
-	}
-	cmd := Arg(0)
-	os.Args = Args()
-	after := Bool("after", false, "")
-	Parse(false)
-	args := Args()
-
-	if !*before || cmd != "subcmd" || !*after || len(args) != 1 || args[0] != "args" {
-		t.Fatalf("expected true subcmd true [args] got %v %v %v %v", *before, cmd, *after, args)
-	}
-}
-
-// Test that -help invokes the usage message and returns ErrHelp.
-func TestHelp(t *testing.T) {
-	var helpCalled = false
-	fs := NewFlagSet("help test", ContinueOnError)
-	fs.SetOutput(nullWriter{})
-	fs.Usage = func() { helpCalled = true }
-	var flag bool
-	fs.BoolVar(&flag, "flag", false, "regular flag")
-	// Regular flag invocation should work
-	err := fs.Parse(true, []string{"--flag"})
-	if err != nil {
-		t.Fatal("expected no error; got ", err)
-	}
-	if !flag {
-		t.Error("flag was not set by --flag")
-	}
-	if helpCalled {
-		t.Error("help called for regular flag")
-		helpCalled = false // reset for next test
-	}
-	// Help flag should work as expected.
-	err = fs.Parse(true, []string{"--help"})
-	if err == nil {
-		t.Fatal("error expected")
-	}
-	if err != ErrHelp {
-		t.Fatal("expected ErrHelp; got ", err)
-	}
-	if !helpCalled {
-		t.Fatal("help was not called")
-	}
-	// If we define a help flag, that should override.
-	var help bool
-	fs.BoolVar(&help, "help", false, "help flag")
-	helpCalled = false
-	err = fs.Parse(true, []string{"--help"})
-	if err != nil {
-		t.Fatal("expected no error for defined --help; got ", err)
-	}
-	if helpCalled {
-		t.Fatal("help was called; should not have been for defined help flag")
-	}
-}
-
-type nullWriter struct{}
-
-func (nullWriter) Write(buf []byte) (int, error) {
-	return len(buf), nil
-}
-
-func TestPrintDefaults(t *testing.T) {
-	f := NewFlagSet("print test", ContinueOnError)
-	f.SetOutput(nullWriter{})
-	var b bool
-	var c int
-	var d string
-	var e float64
-	f.IntVar(&c, "trapclap", 99, "usage not shown")
-	f.IntVar(&c, "c", 99, "c usage")
-
-	f.BoolVar(&b, "bal", false, "usage not shown")
-	f.BoolVar(&b, "x", false, "usage not shown")
-	f.BoolVar(&b, "b", false, "b usage")
-	f.BoolVar(&b, "balalaika", false, "usage not shown")
-
-	f.StringVar(&d, "d", "d default", "d usage")
-
-	f.Float64Var(&e, "elephant", 3.14, "elephant usage")
-
-	var buf bytes.Buffer
-	f.SetOutput(&buf)
-	f.PrintDefaults()
-	f.SetOutput(nullWriter{})
-
-	expect :=
-		`    -b, -x, --bal, --balalaika  (= false)
-        b usage
-    -c, --trapclap  (= 99)
-        c usage
-    -d (= "d default")
-        d usage
-    --elephant  (= 3.14)
-        elephant usage
-`
-	if buf.String() != expect {
-		t.Errorf("expect %q got %q", expect, buf.String())
-	}
-}
diff --git a/test/suites/static_analysis.sh b/test/suites/static_analysis.sh
index bb56a110c..ee8a79ae5 100644
--- a/test/suites/static_analysis.sh
+++ b/test/suites/static_analysis.sh
@@ -87,7 +87,6 @@ test_static_analysis() {
       golint -set_exit_status shared/cancel/
       golint -set_exit_status shared/cmd/
       golint -set_exit_status shared/eagain/
-      golint -set_exit_status shared/gnuflag/
       golint -set_exit_status shared/i18n/
       golint -set_exit_status shared/ioprogress/
       golint -set_exit_status shared/log15/stack


More information about the lxc-devel mailing list