[lxc-devel] [lxd/master] Add operation description

stgraber on Github lxc-bot at linuxcontainers.org
Wed Feb 21 20:23:11 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/20180221/22c32f92/attachment.bin>
-------------- next part --------------
From f5e4a0a44ac90ea885a1560d2fbed8e7b1d977f0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Wed, 21 Feb 2018 15:20:52 -0500
Subject: [PATCH 1/4] api: Add description field on operation
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Closes #4268

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 shared/api/operation.go | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)

diff --git a/shared/api/operation.go b/shared/api/operation.go
index 787c0cf7a..c6696205b 100644
--- a/shared/api/operation.go
+++ b/shared/api/operation.go
@@ -6,14 +6,15 @@ import (
 
 // Operation represents a LXD background operation
 type Operation struct {
-	ID         string                 `json:"id" yaml:"id"`
-	Class      string                 `json:"class" yaml:"class"`
-	CreatedAt  time.Time              `json:"created_at" yaml:"created_at"`
-	UpdatedAt  time.Time              `json:"updated_at" yaml:"updated_at"`
-	Status     string                 `json:"status" yaml:"status"`
-	StatusCode StatusCode             `json:"status_code" yaml:"status_code"`
-	Resources  map[string][]string    `json:"resources" yaml:"resources"`
-	Metadata   map[string]interface{} `json:"metadata" yaml:"metadata"`
-	MayCancel  bool                   `json:"may_cancel" yaml:"may_cancel"`
-	Err        string                 `json:"err" yaml:"err"`
+	ID          string                 `json:"id" yaml:"id"`
+	Class       string                 `json:"class" yaml:"class"`
+	Description string                 `json:"description" yaml:"description"`
+	CreatedAt   time.Time              `json:"created_at" yaml:"created_at"`
+	UpdatedAt   time.Time              `json:"updated_at" yaml:"updated_at"`
+	Status      string                 `json:"status" yaml:"status"`
+	StatusCode  StatusCode             `json:"status_code" yaml:"status_code"`
+	Resources   map[string][]string    `json:"resources" yaml:"resources"`
+	Metadata    map[string]interface{} `json:"metadata" yaml:"metadata"`
+	MayCancel   bool                   `json:"may_cancel" yaml:"may_cancel"`
+	Err         string                 `json:"err" yaml:"err"`
 }

From 89d08e2c1a4cede676cf2d34b4a8e0910ac22cdc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Wed, 21 Feb 2018 15:21:12 -0500
Subject: [PATCH 2/4] lxd: Set description field on all operations
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/api-extensions.md     |  3 +++
 lxd/container_console.go  |  2 +-
 lxd/container_delete.go   |  2 +-
 lxd/container_exec.go     |  4 ++--
 lxd/container_post.go     |  6 +++---
 lxd/container_put.go      |  7 ++++++-
 lxd/container_snapshot.go | 10 +++++-----
 lxd/container_state.go    |  8 +++++++-
 lxd/containers_post.go    | 10 +++++-----
 lxd/daemon_images_test.go |  2 +-
 lxd/images.go             |  8 ++++----
 lxd/migrate.go            |  1 +
 lxd/operations.go         | 47 +++++++++++++++++++++++++----------------------
 lxd/storage_volumes.go    |  4 ++--
 shared/version/api.go     |  1 +
 15 files changed, 67 insertions(+), 48 deletions(-)

diff --git a/doc/api-extensions.md b/doc/api-extensions.md
index d1f88fa38..c759776c3 100644
--- a/doc/api-extensions.md
+++ b/doc/api-extensions.md
@@ -412,3 +412,6 @@ This adds support for the "required" property for unix devices.
 ## storage\_api\_local\_volume\_handling
 This add the ability to copy and move custom storage volumes locally in the
 same and between storage pools.
+
+## operation\_description
+Adds a "description" field to all operations.
diff --git a/lxd/container_console.go b/lxd/container_console.go
index 3f1216dfb..b63bcce68 100644
--- a/lxd/container_console.go
+++ b/lxd/container_console.go
@@ -310,7 +310,7 @@ func containerConsolePost(d *Daemon, r *http.Request) Response {
 	resources := map[string][]string{}
 	resources["containers"] = []string{ws.container.Name()}
 
-	op, err := operationCreate(operationClassWebsocket, resources,
+	op, err := operationCreate(operationClassWebsocket, "Showing console", resources,
 		ws.Metadata(), ws.Do, nil, ws.Connect)
 	if err != nil {
 		return InternalError(err)
diff --git a/lxd/container_delete.go b/lxd/container_delete.go
index a98e6051d..30ce1786b 100644
--- a/lxd/container_delete.go
+++ b/lxd/container_delete.go
@@ -25,7 +25,7 @@ func containerDelete(d *Daemon, r *http.Request) Response {
 	resources := map[string][]string{}
 	resources["containers"] = []string{name}
 
-	op, err := operationCreate(operationClassTask, resources, nil, rmct, nil, nil)
+	op, err := operationCreate(operationClassTask, "Deleting container", resources, nil, rmct, nil, nil)
 	if err != nil {
 		return InternalError(err)
 	}
diff --git a/lxd/container_exec.go b/lxd/container_exec.go
index f75dc348a..27461d6db 100644
--- a/lxd/container_exec.go
+++ b/lxd/container_exec.go
@@ -435,7 +435,7 @@ func containerExecPost(d *Daemon, r *http.Request) Response {
 		resources := map[string][]string{}
 		resources["containers"] = []string{ws.container.Name()}
 
-		op, err := operationCreate(operationClassWebsocket, resources, ws.Metadata(), ws.Do, nil, ws.Connect)
+		op, err := operationCreate(operationClassWebsocket, "Executing command", resources, ws.Metadata(), ws.Do, nil, ws.Connect)
 		if err != nil {
 			return InternalError(err)
 		}
@@ -487,7 +487,7 @@ func containerExecPost(d *Daemon, r *http.Request) Response {
 	resources := map[string][]string{}
 	resources["containers"] = []string{name}
 
-	op, err := operationCreate(operationClassTask, resources, nil, run, nil, nil)
+	op, err := operationCreate(operationClassTask, "Executing command", resources, nil, run, nil, nil)
 	if err != nil {
 		return InternalError(err)
 	}
diff --git a/lxd/container_post.go b/lxd/container_post.go
index fa32e1c70..5264c7c11 100644
--- a/lxd/container_post.go
+++ b/lxd/container_post.go
@@ -62,7 +62,7 @@ func containerPost(d *Daemon, r *http.Request) Response {
 				return InternalError(err)
 			}
 
-			op, err := operationCreate(operationClassTask, resources, nil, ws.Do, nil, nil)
+			op, err := operationCreate(operationClassTask, "Migrating container", resources, nil, ws.Do, nil, nil)
 			if err != nil {
 				return InternalError(err)
 			}
@@ -71,7 +71,7 @@ func containerPost(d *Daemon, r *http.Request) Response {
 		}
 
 		// Pull mode
-		op, err := operationCreate(operationClassWebsocket, resources, ws.Metadata(), ws.Do, nil, ws.Connect)
+		op, err := operationCreate(operationClassWebsocket, "Migrating container", resources, ws.Metadata(), ws.Do, nil, ws.Connect)
 		if err != nil {
 			return InternalError(err)
 		}
@@ -92,7 +92,7 @@ func containerPost(d *Daemon, r *http.Request) Response {
 	resources := map[string][]string{}
 	resources["containers"] = []string{name}
 
-	op, err := operationCreate(operationClassTask, resources, nil, run, nil, nil)
+	op, err := operationCreate(operationClassTask, "Renaming container", resources, nil, run, nil, nil)
 	if err != nil {
 		return InternalError(err)
 	}
diff --git a/lxd/container_put.go b/lxd/container_put.go
index 02a05c643..239fd5525 100644
--- a/lxd/container_put.go
+++ b/lxd/container_put.go
@@ -46,6 +46,7 @@ func containerPut(d *Daemon, r *http.Request) Response {
 	}
 
 	var do func(*operation) error
+	var opDescription string
 	if configRaw.Restore == "" {
 		// Update container configuration
 		do = func(op *operation) error {
@@ -65,17 +66,21 @@ func containerPut(d *Daemon, r *http.Request) Response {
 
 			return nil
 		}
+
+		opDescription = "Updating container"
 	} else {
 		// Snapshot Restore
 		do = func(op *operation) error {
 			return containerSnapRestore(d.State(), name, configRaw.Restore, configRaw.Stateful)
 		}
+
+		opDescription = "Restoring snapshot"
 	}
 
 	resources := map[string][]string{}
 	resources["containers"] = []string{name}
 
-	op, err := operationCreate(operationClassTask, resources, nil, do, nil, nil)
+	op, err := operationCreate(operationClassTask, opDescription, resources, nil, do, nil, nil)
 	if err != nil {
 		return InternalError(err)
 	}
diff --git a/lxd/container_snapshot.go b/lxd/container_snapshot.go
index 07ea52681..88bf6e969 100644
--- a/lxd/container_snapshot.go
+++ b/lxd/container_snapshot.go
@@ -126,7 +126,7 @@ func containerSnapshotsPost(d *Daemon, r *http.Request) Response {
 	resources := map[string][]string{}
 	resources["containers"] = []string{name}
 
-	op, err := operationCreate(operationClassTask, resources, nil, snapshot, nil, nil)
+	op, err := operationCreate(operationClassTask, "Snapshotting container", resources, nil, snapshot, nil, nil)
 	if err != nil {
 		return InternalError(err)
 	}
@@ -228,7 +228,7 @@ func snapshotPost(d *Daemon, r *http.Request, sc container, containerName string
 				return InternalError(err)
 			}
 
-			op, err := operationCreate(operationClassTask, resources, nil, ws.Do, nil, nil)
+			op, err := operationCreate(operationClassTask, "Transferring snapshot", resources, nil, ws.Do, nil, nil)
 			if err != nil {
 				return InternalError(err)
 			}
@@ -237,7 +237,7 @@ func snapshotPost(d *Daemon, r *http.Request, sc container, containerName string
 		}
 
 		// Pull mode
-		op, err := operationCreate(operationClassWebsocket, resources, ws.Metadata(), ws.Do, nil, ws.Connect)
+		op, err := operationCreate(operationClassWebsocket, "Transferring snapshot", resources, ws.Metadata(), ws.Do, nil, ws.Connect)
 		if err != nil {
 			return InternalError(err)
 		}
@@ -270,7 +270,7 @@ func snapshotPost(d *Daemon, r *http.Request, sc container, containerName string
 	resources := map[string][]string{}
 	resources["containers"] = []string{containerName}
 
-	op, err := operationCreate(operationClassTask, resources, nil, rename, nil, nil)
+	op, err := operationCreate(operationClassTask, "Renaming snapshot", resources, nil, rename, nil, nil)
 	if err != nil {
 		return InternalError(err)
 	}
@@ -286,7 +286,7 @@ func snapshotDelete(sc container, name string) Response {
 	resources := map[string][]string{}
 	resources["containers"] = []string{sc.Name()}
 
-	op, err := operationCreate(operationClassTask, resources, nil, remove, nil, nil)
+	op, err := operationCreate(operationClassTask, "Deleting snapshot", resources, nil, remove, nil, nil)
 	if err != nil {
 		return InternalError(err)
 	}
diff --git a/lxd/container_state.go b/lxd/container_state.go
index 039b8fdb0..cfb849e20 100644
--- a/lxd/container_state.go
+++ b/lxd/container_state.go
@@ -49,9 +49,11 @@ func containerStatePut(d *Daemon, r *http.Request) Response {
 		return SmartError(err)
 	}
 
+	var opDescription string
 	var do func(*operation) error
 	switch shared.ContainerAction(raw.Action) {
 	case shared.Start:
+		opDescription = "Starting container"
 		do = func(op *operation) error {
 			if err = c.Start(raw.Stateful); err != nil {
 				return err
@@ -59,6 +61,7 @@ func containerStatePut(d *Daemon, r *http.Request) Response {
 			return nil
 		}
 	case shared.Stop:
+		opDescription = "Stopping container"
 		if raw.Stateful {
 			do = func(op *operation) error {
 				err := c.Stop(raw.Stateful)
@@ -95,6 +98,7 @@ func containerStatePut(d *Daemon, r *http.Request) Response {
 			}
 		}
 	case shared.Restart:
+		opDescription = "Restarting container"
 		do = func(op *operation) error {
 			ephemeral := c.IsEphemeral()
 
@@ -145,10 +149,12 @@ func containerStatePut(d *Daemon, r *http.Request) Response {
 			return nil
 		}
 	case shared.Freeze:
+		opDescription = "Freezing container"
 		do = func(op *operation) error {
 			return c.Freeze()
 		}
 	case shared.Unfreeze:
+		opDescription = "Unfreezing container"
 		do = func(op *operation) error {
 			return c.Unfreeze()
 		}
@@ -159,7 +165,7 @@ func containerStatePut(d *Daemon, r *http.Request) Response {
 	resources := map[string][]string{}
 	resources["containers"] = []string{name}
 
-	op, err := operationCreate(operationClassTask, resources, nil, do, nil, nil)
+	op, err := operationCreate(operationClassTask, opDescription, resources, nil, do, nil, nil)
 	if err != nil {
 		return InternalError(err)
 	}
diff --git a/lxd/containers_post.go b/lxd/containers_post.go
index 76d2a615a..5ea50bdfb 100644
--- a/lxd/containers_post.go
+++ b/lxd/containers_post.go
@@ -121,7 +121,7 @@ func createFromImage(d *Daemon, req *api.ContainersPost) Response {
 	resources := map[string][]string{}
 	resources["containers"] = []string{req.Name}
 
-	op, err := operationCreate(operationClassTask, resources, nil, run, nil, nil)
+	op, err := operationCreate(operationClassTask, "Creating container", resources, nil, run, nil, nil)
 	if err != nil {
 		return InternalError(err)
 	}
@@ -155,7 +155,7 @@ func createFromNone(d *Daemon, req *api.ContainersPost) Response {
 	resources := map[string][]string{}
 	resources["containers"] = []string{req.Name}
 
-	op, err := operationCreate(operationClassTask, resources, nil, run, nil, nil)
+	op, err := operationCreate(operationClassTask, "Creating container", resources, nil, run, nil, nil)
 	if err != nil {
 		return InternalError(err)
 	}
@@ -402,12 +402,12 @@ func createFromMigration(d *Daemon, req *api.ContainersPost) Response {
 
 	var op *operation
 	if push {
-		op, err = operationCreate(operationClassWebsocket, resources, sink.Metadata(), run, nil, sink.Connect)
+		op, err = operationCreate(operationClassWebsocket, "Creating container", resources, sink.Metadata(), run, nil, sink.Connect)
 		if err != nil {
 			return InternalError(err)
 		}
 	} else {
-		op, err = operationCreate(operationClassTask, resources, nil, run, nil, nil)
+		op, err = operationCreate(operationClassTask, "Creating container", resources, nil, run, nil, nil)
 		if err != nil {
 			return InternalError(err)
 		}
@@ -502,7 +502,7 @@ func createFromCopy(d *Daemon, req *api.ContainersPost) Response {
 	resources := map[string][]string{}
 	resources["containers"] = []string{req.Name, req.Source.Source}
 
-	op, err := operationCreate(operationClassTask, resources, nil, run, nil, nil)
+	op, err := operationCreate(operationClassTask, "Creating container", resources, nil, run, nil, nil)
 	if err != nil {
 		return InternalError(err)
 	}
diff --git a/lxd/daemon_images_test.go b/lxd/daemon_images_test.go
index 7833cdfa2..a86b0ae11 100644
--- a/lxd/daemon_images_test.go
+++ b/lxd/daemon_images_test.go
@@ -39,7 +39,7 @@ func (suite *daemonImagesTestSuite) TestUseCachedImagesIfAvailable() {
 
 	// Request an image with alias "test" and check that it's the
 	// one we created above.
-	op, err := operationCreate(operationClassTask, map[string][]string{}, nil, nil, nil, nil)
+	op, err := operationCreate(operationClassTask, "Downloading image", map[string][]string{}, nil, nil, nil, nil)
 	suite.Req.Nil(err)
 	image, err := suite.d.ImageDownload(op, "img.srv", "simplestreams", "", "", "test", false, false, "", true)
 	suite.Req.Nil(err)
diff --git a/lxd/images.go b/lxd/images.go
index 3f5a9d628..614b0f608 100644
--- a/lxd/images.go
+++ b/lxd/images.go
@@ -656,7 +656,7 @@ func imagesPost(d *Daemon, r *http.Request) Response {
 		return nil
 	}
 
-	op, err := operationCreate(operationClassTask, nil, nil, run, nil, nil)
+	op, err := operationCreate(operationClassTask, "Downloading image", nil, nil, run, nil, nil)
 	if err != nil {
 		return InternalError(err)
 	}
@@ -1106,7 +1106,7 @@ func imageDelete(d *Daemon, r *http.Request) Response {
 	resources := map[string][]string{}
 	resources["images"] = []string{fingerprint}
 
-	op, err := operationCreate(operationClassTask, resources, nil, rmimg, nil, nil)
+	op, err := operationCreate(operationClassTask, "Deleting image", resources, nil, rmimg, nil, nil)
 	if err != nil {
 		return InternalError(err)
 	}
@@ -1540,7 +1540,7 @@ func imageSecret(d *Daemon, r *http.Request) Response {
 	resources := map[string][]string{}
 	resources["images"] = []string{imgInfo.Fingerprint}
 
-	op, err := operationCreate(operationClassToken, resources, meta, nil, nil, nil)
+	op, err := operationCreate(operationClassToken, "Image download token", resources, meta, nil, nil, nil)
 	if err != nil {
 		return InternalError(err)
 	}
@@ -1560,7 +1560,7 @@ func imageRefresh(d *Daemon, r *http.Request) Response {
 		return autoUpdateImage(d, op, imageId, imageInfo)
 	}
 
-	op, err := operationCreate(operationClassTask, nil, nil, run, nil, nil)
+	op, err := operationCreate(operationClassTask, "Refreshing image", nil, nil, run, nil, nil)
 	if err != nil {
 		return InternalError(err)
 	}
diff --git a/lxd/migrate.go b/lxd/migrate.go
index 6bedadcb1..e3f55dcbc 100644
--- a/lxd/migrate.go
+++ b/lxd/migrate.go
@@ -728,6 +728,7 @@ func (s *migrationSourceWs) Do(migrateOp *operation) error {
 
 			actionScriptOp, err := operationCreate(
 				operationClassWebsocket,
+				"Live-migrating container",
 				nil,
 				nil,
 				func(op *operation) error {
diff --git a/lxd/operations.go b/lxd/operations.go
index dc0388fbd..6b6a46f02 100644
--- a/lxd/operations.go
+++ b/lxd/operations.go
@@ -39,17 +39,18 @@ func (t operationClass) String() string {
 }
 
 type operation struct {
-	id        string
-	class     operationClass
-	createdAt time.Time
-	updatedAt time.Time
-	status    api.StatusCode
-	url       string
-	resources map[string][]string
-	metadata  map[string]interface{}
-	err       string
-	readonly  bool
-	canceler  *cancel.Canceler
+	id          string
+	class       operationClass
+	createdAt   time.Time
+	updatedAt   time.Time
+	status      api.StatusCode
+	url         string
+	resources   map[string][]string
+	metadata    map[string]interface{}
+	err         string
+	readonly    bool
+	canceler    *cancel.Canceler
+	description string
 
 	// Those functions are called at various points in the operation lifecycle
 	onRun     func(*operation) error
@@ -285,16 +286,17 @@ func (op *operation) Render() (string, *api.Operation, error) {
 	}
 
 	return op.url, &api.Operation{
-		ID:         op.id,
-		Class:      op.class.String(),
-		CreatedAt:  op.createdAt,
-		UpdatedAt:  op.updatedAt,
-		Status:     op.status.String(),
-		StatusCode: op.status,
-		Resources:  resources,
-		Metadata:   op.metadata,
-		MayCancel:  op.mayCancel(),
-		Err:        op.err,
+		ID:          op.id,
+		Class:       op.class.String(),
+		Description: op.description,
+		CreatedAt:   op.createdAt,
+		UpdatedAt:   op.updatedAt,
+		Status:      op.status.String(),
+		StatusCode:  op.status,
+		Resources:   resources,
+		Metadata:    op.metadata,
+		MayCancel:   op.mayCancel(),
+		Err:         op.err,
 	}, nil
 }
 
@@ -372,10 +374,11 @@ func (op *operation) UpdateMetadata(opMetadata interface{}) error {
 	return nil
 }
 
-func operationCreate(opClass operationClass, opResources map[string][]string, opMetadata interface{}, onRun func(*operation) error, onCancel func(*operation) error, onConnect func(*operation, *http.Request, http.ResponseWriter) error) (*operation, error) {
+func operationCreate(opClass operationClass, description string, opResources map[string][]string, opMetadata interface{}, onRun func(*operation) error, onCancel func(*operation) error, onConnect func(*operation, *http.Request, http.ResponseWriter) error) (*operation, error) {
 	// Main attributes
 	op := operation{}
 	op.id = uuid.NewRandom().String()
+	op.description = description
 	op.class = opClass
 	op.createdAt = time.Now()
 	op.updatedAt = op.createdAt
diff --git a/lxd/storage_volumes.go b/lxd/storage_volumes.go
index 675021b26..1e6be12f9 100644
--- a/lxd/storage_volumes.go
+++ b/lxd/storage_volumes.go
@@ -198,7 +198,7 @@ func storagePoolVolumesTypePost(d *Daemon, r *http.Request) Response {
 		return doWork()
 	}
 
-	op, err := operationCreate(operationClassTask, nil, nil, run, nil, nil)
+	op, err := operationCreate(operationClassTask, "Copying storage volume", nil, nil, run, nil, nil)
 	if err != nil {
 		return InternalError(err)
 	}
@@ -322,7 +322,7 @@ func storagePoolVolumeTypePost(d *Daemon, r *http.Request) Response {
 		return doWork()
 	}
 
-	op, err := operationCreate(operationClassTask, nil, nil, run, nil, nil)
+	op, err := operationCreate(operationClassTask, "Moving storage volume", nil, nil, run, nil, nil)
 	if err != nil {
 		return InternalError(err)
 	}
diff --git a/shared/version/api.go b/shared/version/api.go
index f0deeaef7..1288cd849 100644
--- a/shared/version/api.go
+++ b/shared/version/api.go
@@ -92,4 +92,5 @@ var APIExtensions = []string{
 	"network_leases",
 	"unix_device_hotplug",
 	"storage_api_local_volume_handling",
+	"operation_description",
 }

From 7414589c25b631b9a08b150a642748569498f715 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Wed, 21 Feb 2018 15:21:31 -0500
Subject: [PATCH 3/4] lxc/operation: Add description column
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/operation.go | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lxc/operation.go b/lxc/operation.go
index 8711fec29..8fbc1421a 100644
--- a/lxc/operation.go
+++ b/lxc/operation.go
@@ -141,7 +141,7 @@ func (c *operationCmd) doOperationList(conf *config.Config, args []string) error
 			cancelable = i18n.G("YES")
 		}
 
-		data = append(data, []string{op.ID, strings.ToUpper(op.Class), strings.ToUpper(op.Status), cancelable, op.CreatedAt.UTC().Format("2006/01/02 15:04 UTC")})
+		data = append(data, []string{op.ID, strings.ToUpper(op.Class), op.Description, strings.ToUpper(op.Status), cancelable, op.CreatedAt.UTC().Format("2006/01/02 15:04 UTC")})
 	}
 
 	table := tablewriter.NewWriter(os.Stdout)
@@ -151,6 +151,7 @@ func (c *operationCmd) doOperationList(conf *config.Config, args []string) error
 	table.SetHeader([]string{
 		i18n.G("ID"),
 		i18n.G("TYPE"),
+		i18n.G("DESCRIPTION"),
 		i18n.G("STATUS"),
 		i18n.G("CANCELABLE"),
 		i18n.G("CREATED")})

From 81a38447035e4a45ae304595a35e200f3b22a0b1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Wed, 21 Feb 2018 15:21:50 -0500
Subject: [PATCH 4/4] i18n: Update translation templates
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 po/de.po      | 10 +++++-----
 po/el.po      | 10 +++++-----
 po/es.po      | 10 +++++-----
 po/fi.po      | 10 +++++-----
 po/fr.po      | 10 +++++-----
 po/id.po      | 10 +++++-----
 po/it.po      | 10 +++++-----
 po/ja.po      | 10 +++++-----
 po/lxd.pot    | 10 +++++-----
 po/nb_NO.po   | 10 +++++-----
 po/nl.po      | 10 +++++-----
 po/pl.po      | 10 +++++-----
 po/pt_BR.po   | 10 +++++-----
 po/ru.po      | 10 +++++-----
 po/sr.po      | 10 +++++-----
 po/sv.po      | 10 +++++-----
 po/tr.po      | 10 +++++-----
 po/zh.po      | 10 +++++-----
 po/zh_Hans.po | 10 +++++-----
 19 files changed, 95 insertions(+), 95 deletions(-)

diff --git a/po/de.po b/po/de.po
index 5e1a9fca4..fb9777d80 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-19 18:13+0100\n"
+"POT-Creation-Date: 2018-02-21 15:21-0500\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/"
@@ -344,7 +344,7 @@ msgstr "Bytes empfangen"
 msgid "Bytes sent"
 msgstr "Bytes gesendet"
 
-#: lxc/operation.go:155
+#: lxc/operation.go:156
 msgid "CANCELABLE"
 msgstr ""
 
@@ -361,7 +361,7 @@ msgstr ""
 msgid "CPU usage:"
 msgstr " Prozessorauslastung:"
 
-#: lxc/operation.go:156
+#: lxc/operation.go:157
 #, fuzzy
 msgid "CREATED"
 msgstr "ERSTELLT AM"
@@ -503,7 +503,7 @@ msgid "Creating the container"
 msgstr "kann nicht zum selben Container Namen kopieren"
 
 #: lxc/image.go:234 lxc/image.go:1137 lxc/list.go:465 lxc/network.go:557
-#: lxc/storage.go:712 lxc/storage.go:901
+#: lxc/operation.go:154 lxc/storage.go:712 lxc/storage.go:901
 msgid "DESCRIPTION"
 msgstr ""
 
@@ -1195,7 +1195,7 @@ msgstr ""
 msgid "STATIC"
 msgstr ""
 
-#: lxc/operation.go:154
+#: lxc/operation.go:155
 msgid "STATUS"
 msgstr ""
 
diff --git a/po/el.po b/po/el.po
index 96268c235..8c4ffd8a5 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-19 18:13+0100\n"
+"POT-Creation-Date: 2018-02-21 15:21-0500\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/"
@@ -239,7 +239,7 @@ msgstr ""
 msgid "Bytes sent"
 msgstr ""
 
-#: lxc/operation.go:155
+#: lxc/operation.go:156
 msgid "CANCELABLE"
 msgstr ""
 
@@ -256,7 +256,7 @@ msgstr ""
 msgid "CPU usage:"
 msgstr "  Χρήση CPU:"
 
-#: lxc/operation.go:156
+#: lxc/operation.go:157
 msgid "CREATED"
 msgstr ""
 
@@ -390,7 +390,7 @@ msgid "Creating the container"
 msgstr ""
 
 #: lxc/image.go:234 lxc/image.go:1137 lxc/list.go:465 lxc/network.go:557
-#: lxc/storage.go:712 lxc/storage.go:901
+#: lxc/operation.go:154 lxc/storage.go:712 lxc/storage.go:901
 msgid "DESCRIPTION"
 msgstr ""
 
@@ -1058,7 +1058,7 @@ msgstr ""
 msgid "STATIC"
 msgstr ""
 
-#: lxc/operation.go:154
+#: lxc/operation.go:155
 msgid "STATUS"
 msgstr ""
 
diff --git a/po/es.po b/po/es.po
index 0ea508157..cd3699f18 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-19 18:13+0100\n"
+"POT-Creation-Date: 2018-02-21 15:21-0500\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
@@ -236,7 +236,7 @@ msgstr ""
 msgid "Bytes sent"
 msgstr ""
 
-#: lxc/operation.go:155
+#: lxc/operation.go:156
 msgid "CANCELABLE"
 msgstr ""
 
@@ -252,7 +252,7 @@ msgstr ""
 msgid "CPU usage:"
 msgstr ""
 
-#: lxc/operation.go:156
+#: lxc/operation.go:157
 msgid "CREATED"
 msgstr ""
 
@@ -386,7 +386,7 @@ msgid "Creating the container"
 msgstr ""
 
 #: lxc/image.go:234 lxc/image.go:1137 lxc/list.go:465 lxc/network.go:557
-#: lxc/storage.go:712 lxc/storage.go:901
+#: lxc/operation.go:154 lxc/storage.go:712 lxc/storage.go:901
 msgid "DESCRIPTION"
 msgstr ""
 
@@ -1051,7 +1051,7 @@ msgstr ""
 msgid "STATIC"
 msgstr ""
 
-#: lxc/operation.go:154
+#: lxc/operation.go:155
 msgid "STATUS"
 msgstr ""
 
diff --git a/po/fi.po b/po/fi.po
index 8880ba2a1..7c7553db8 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-19 18:13+0100\n"
+"POT-Creation-Date: 2018-02-21 15:21-0500\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
@@ -236,7 +236,7 @@ msgstr ""
 msgid "Bytes sent"
 msgstr ""
 
-#: lxc/operation.go:155
+#: lxc/operation.go:156
 msgid "CANCELABLE"
 msgstr ""
 
@@ -252,7 +252,7 @@ msgstr ""
 msgid "CPU usage:"
 msgstr ""
 
-#: lxc/operation.go:156
+#: lxc/operation.go:157
 msgid "CREATED"
 msgstr ""
 
@@ -386,7 +386,7 @@ msgid "Creating the container"
 msgstr ""
 
 #: lxc/image.go:234 lxc/image.go:1137 lxc/list.go:465 lxc/network.go:557
-#: lxc/storage.go:712 lxc/storage.go:901
+#: lxc/operation.go:154 lxc/storage.go:712 lxc/storage.go:901
 msgid "DESCRIPTION"
 msgstr ""
 
@@ -1051,7 +1051,7 @@ msgstr ""
 msgid "STATIC"
 msgstr ""
 
-#: lxc/operation.go:154
+#: lxc/operation.go:155
 msgid "STATUS"
 msgstr ""
 
diff --git a/po/fr.po b/po/fr.po
index 3b964fd39..4ddc66676 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-19 18:13+0100\n"
+"POT-Creation-Date: 2018-02-21 15:21-0500\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/"
@@ -337,7 +337,7 @@ msgstr "Octets reçus"
 msgid "Bytes sent"
 msgstr "Octets émis"
 
-#: lxc/operation.go:155
+#: lxc/operation.go:156
 msgid "CANCELABLE"
 msgstr ""
 
@@ -353,7 +353,7 @@ msgstr "CPU utilisé (en secondes)"
 msgid "CPU usage:"
 msgstr "CPU utilisé :"
 
-#: lxc/operation.go:156
+#: lxc/operation.go:157
 #, fuzzy
 msgid "CREATED"
 msgstr "CRÉÉ À"
@@ -492,7 +492,7 @@ msgid "Creating the container"
 msgstr "Création du conteneur"
 
 #: lxc/image.go:234 lxc/image.go:1137 lxc/list.go:465 lxc/network.go:557
-#: lxc/storage.go:712 lxc/storage.go:901
+#: lxc/operation.go:154 lxc/storage.go:712 lxc/storage.go:901
 msgid "DESCRIPTION"
 msgstr "DESCRIPTION"
 
@@ -1179,7 +1179,7 @@ msgstr "ÉTAT"
 msgid "STATIC"
 msgstr "STATIQUE"
 
-#: lxc/operation.go:154
+#: lxc/operation.go:155
 #, fuzzy
 msgid "STATUS"
 msgstr "ÉTAT"
diff --git a/po/id.po b/po/id.po
index fd87f8af8..31b5609e0 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-19 18:13+0100\n"
+"POT-Creation-Date: 2018-02-21 15:21-0500\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
@@ -236,7 +236,7 @@ msgstr ""
 msgid "Bytes sent"
 msgstr ""
 
-#: lxc/operation.go:155
+#: lxc/operation.go:156
 msgid "CANCELABLE"
 msgstr ""
 
@@ -252,7 +252,7 @@ msgstr ""
 msgid "CPU usage:"
 msgstr ""
 
-#: lxc/operation.go:156
+#: lxc/operation.go:157
 msgid "CREATED"
 msgstr ""
 
@@ -386,7 +386,7 @@ msgid "Creating the container"
 msgstr ""
 
 #: lxc/image.go:234 lxc/image.go:1137 lxc/list.go:465 lxc/network.go:557
-#: lxc/storage.go:712 lxc/storage.go:901
+#: lxc/operation.go:154 lxc/storage.go:712 lxc/storage.go:901
 msgid "DESCRIPTION"
 msgstr ""
 
@@ -1051,7 +1051,7 @@ msgstr ""
 msgid "STATIC"
 msgstr ""
 
-#: lxc/operation.go:154
+#: lxc/operation.go:155
 msgid "STATUS"
 msgstr ""
 
diff --git a/po/it.po b/po/it.po
index 572c52cde..9bde34747 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-19 18:13+0100\n"
+"POT-Creation-Date: 2018-02-21 15:21-0500\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/"
@@ -261,7 +261,7 @@ msgstr "Bytes ricevuti"
 msgid "Bytes sent"
 msgstr "Byte inviati"
 
-#: lxc/operation.go:155
+#: lxc/operation.go:156
 msgid "CANCELABLE"
 msgstr ""
 
@@ -277,7 +277,7 @@ msgstr "Utilizzo CPU (in secondi)"
 msgid "CPU usage:"
 msgstr "Utilizzo CPU:"
 
-#: lxc/operation.go:156
+#: lxc/operation.go:157
 #, fuzzy
 msgid "CREATED"
 msgstr "CREATO IL"
@@ -412,7 +412,7 @@ msgid "Creating the container"
 msgstr "Creazione del container in corso"
 
 #: lxc/image.go:234 lxc/image.go:1137 lxc/list.go:465 lxc/network.go:557
-#: lxc/storage.go:712 lxc/storage.go:901
+#: lxc/operation.go:154 lxc/storage.go:712 lxc/storage.go:901
 msgid "DESCRIPTION"
 msgstr "DESCRIZIONE"
 
@@ -1078,7 +1078,7 @@ msgstr ""
 msgid "STATIC"
 msgstr ""
 
-#: lxc/operation.go:154
+#: lxc/operation.go:155
 msgid "STATUS"
 msgstr ""
 
diff --git a/po/ja.po b/po/ja.po
index cb9205ddb..24dfba927 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-19 18:13+0100\n"
+"POT-Creation-Date: 2018-02-21 15:21-0500\n"
 "PO-Revision-Date: 2018-01-02 10:52+0000\n"
 "Last-Translator: KATOH Yasufumi <karma at jazz.email.ne.jp>\n"
 "Language-Team: Japanese <https://hosted.weblate.org/projects/linux-"
@@ -240,7 +240,7 @@ msgstr "受信バイト数"
 msgid "Bytes sent"
 msgstr "送信バイト数"
 
-#: lxc/operation.go:155
+#: lxc/operation.go:156
 msgid "CANCELABLE"
 msgstr ""
 
@@ -256,7 +256,7 @@ msgstr "CPU使用量(秒)"
 msgid "CPU usage:"
 msgstr "CPU使用量:"
 
-#: lxc/operation.go:156
+#: lxc/operation.go:157
 msgid "CREATED"
 msgstr ""
 
@@ -391,7 +391,7 @@ msgid "Creating the container"
 msgstr "コンテナを作成中"
 
 #: lxc/image.go:234 lxc/image.go:1137 lxc/list.go:465 lxc/network.go:557
-#: lxc/storage.go:712 lxc/storage.go:901
+#: lxc/operation.go:154 lxc/storage.go:712 lxc/storage.go:901
 msgid "DESCRIPTION"
 msgstr ""
 
@@ -1059,7 +1059,7 @@ msgstr ""
 msgid "STATIC"
 msgstr ""
 
-#: lxc/operation.go:154
+#: lxc/operation.go:155
 msgid "STATUS"
 msgstr ""
 
diff --git a/po/lxd.pot b/po/lxd.pot
index d8fe4057d..d3f754144 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-02-19 18:23+0100\n"
+        "POT-Creation-Date: 2018-02-21 15:21-0500\n"
         "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
         "Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
         "Language-Team: LANGUAGE <LL at li.org>\n"
@@ -229,7 +229,7 @@ msgstr  ""
 msgid   "Bytes sent"
 msgstr  ""
 
-#: lxc/operation.go:155
+#: lxc/operation.go:156
 msgid   "CANCELABLE"
 msgstr  ""
 
@@ -245,7 +245,7 @@ msgstr  ""
 msgid   "CPU usage:"
 msgstr  ""
 
-#: lxc/operation.go:156
+#: lxc/operation.go:157
 msgid   "CREATED"
 msgstr  ""
 
@@ -377,7 +377,7 @@ msgstr  ""
 msgid   "Creating the container"
 msgstr  ""
 
-#: lxc/image.go:234 lxc/image.go:1137 lxc/list.go:465 lxc/network.go:557 lxc/storage.go:712 lxc/storage.go:901
+#: lxc/image.go:234 lxc/image.go:1137 lxc/list.go:465 lxc/network.go:557 lxc/operation.go:154 lxc/storage.go:712 lxc/storage.go:901
 msgid   "DESCRIPTION"
 msgstr  ""
 
@@ -1038,7 +1038,7 @@ msgstr  ""
 msgid   "STATIC"
 msgstr  ""
 
-#: lxc/operation.go:154
+#: lxc/operation.go:155
 msgid   "STATUS"
 msgstr  ""
 
diff --git a/po/nb_NO.po b/po/nb_NO.po
index dd6feafad..1ec18e7ce 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-19 18:13+0100\n"
+"POT-Creation-Date: 2018-02-21 15:21-0500\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
@@ -236,7 +236,7 @@ msgstr ""
 msgid "Bytes sent"
 msgstr ""
 
-#: lxc/operation.go:155
+#: lxc/operation.go:156
 msgid "CANCELABLE"
 msgstr ""
 
@@ -252,7 +252,7 @@ msgstr ""
 msgid "CPU usage:"
 msgstr ""
 
-#: lxc/operation.go:156
+#: lxc/operation.go:157
 msgid "CREATED"
 msgstr ""
 
@@ -386,7 +386,7 @@ msgid "Creating the container"
 msgstr ""
 
 #: lxc/image.go:234 lxc/image.go:1137 lxc/list.go:465 lxc/network.go:557
-#: lxc/storage.go:712 lxc/storage.go:901
+#: lxc/operation.go:154 lxc/storage.go:712 lxc/storage.go:901
 msgid "DESCRIPTION"
 msgstr ""
 
@@ -1051,7 +1051,7 @@ msgstr ""
 msgid "STATIC"
 msgstr ""
 
-#: lxc/operation.go:154
+#: lxc/operation.go:155
 msgid "STATUS"
 msgstr ""
 
diff --git a/po/nl.po b/po/nl.po
index 4a89c013d..dd1127774 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-19 18:13+0100\n"
+"POT-Creation-Date: 2018-02-21 15:21-0500\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
@@ -236,7 +236,7 @@ msgstr ""
 msgid "Bytes sent"
 msgstr ""
 
-#: lxc/operation.go:155
+#: lxc/operation.go:156
 msgid "CANCELABLE"
 msgstr ""
 
@@ -252,7 +252,7 @@ msgstr ""
 msgid "CPU usage:"
 msgstr ""
 
-#: lxc/operation.go:156
+#: lxc/operation.go:157
 msgid "CREATED"
 msgstr ""
 
@@ -386,7 +386,7 @@ msgid "Creating the container"
 msgstr ""
 
 #: lxc/image.go:234 lxc/image.go:1137 lxc/list.go:465 lxc/network.go:557
-#: lxc/storage.go:712 lxc/storage.go:901
+#: lxc/operation.go:154 lxc/storage.go:712 lxc/storage.go:901
 msgid "DESCRIPTION"
 msgstr ""
 
@@ -1051,7 +1051,7 @@ msgstr ""
 msgid "STATIC"
 msgstr ""
 
-#: lxc/operation.go:154
+#: lxc/operation.go:155
 msgid "STATUS"
 msgstr ""
 
diff --git a/po/pl.po b/po/pl.po
index e6bfef10f..73fd852b1 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-19 18:13+0100\n"
+"POT-Creation-Date: 2018-02-21 15:21-0500\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
@@ -236,7 +236,7 @@ msgstr ""
 msgid "Bytes sent"
 msgstr ""
 
-#: lxc/operation.go:155
+#: lxc/operation.go:156
 msgid "CANCELABLE"
 msgstr ""
 
@@ -252,7 +252,7 @@ msgstr ""
 msgid "CPU usage:"
 msgstr ""
 
-#: lxc/operation.go:156
+#: lxc/operation.go:157
 msgid "CREATED"
 msgstr ""
 
@@ -386,7 +386,7 @@ msgid "Creating the container"
 msgstr ""
 
 #: lxc/image.go:234 lxc/image.go:1137 lxc/list.go:465 lxc/network.go:557
-#: lxc/storage.go:712 lxc/storage.go:901
+#: lxc/operation.go:154 lxc/storage.go:712 lxc/storage.go:901
 msgid "DESCRIPTION"
 msgstr ""
 
@@ -1051,7 +1051,7 @@ msgstr ""
 msgid "STATIC"
 msgstr ""
 
-#: lxc/operation.go:154
+#: lxc/operation.go:155
 msgid "STATUS"
 msgstr ""
 
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 5d5f1456b..e9e78eced 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-19 18:13+0100\n"
+"POT-Creation-Date: 2018-02-21 15:21-0500\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
@@ -236,7 +236,7 @@ msgstr ""
 msgid "Bytes sent"
 msgstr ""
 
-#: lxc/operation.go:155
+#: lxc/operation.go:156
 msgid "CANCELABLE"
 msgstr ""
 
@@ -252,7 +252,7 @@ msgstr ""
 msgid "CPU usage:"
 msgstr ""
 
-#: lxc/operation.go:156
+#: lxc/operation.go:157
 msgid "CREATED"
 msgstr ""
 
@@ -386,7 +386,7 @@ msgid "Creating the container"
 msgstr ""
 
 #: lxc/image.go:234 lxc/image.go:1137 lxc/list.go:465 lxc/network.go:557
-#: lxc/storage.go:712 lxc/storage.go:901
+#: lxc/operation.go:154 lxc/storage.go:712 lxc/storage.go:901
 msgid "DESCRIPTION"
 msgstr ""
 
@@ -1051,7 +1051,7 @@ msgstr ""
 msgid "STATIC"
 msgstr ""
 
-#: lxc/operation.go:154
+#: lxc/operation.go:155
 msgid "STATUS"
 msgstr ""
 
diff --git a/po/ru.po b/po/ru.po
index 476de2aab..a82f6c944 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-19 18:13+0100\n"
+"POT-Creation-Date: 2018-02-21 15:21-0500\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/"
@@ -323,7 +323,7 @@ msgstr "Получено байтов"
 msgid "Bytes sent"
 msgstr "Отправлено байтов"
 
-#: lxc/operation.go:155
+#: lxc/operation.go:156
 msgid "CANCELABLE"
 msgstr ""
 
@@ -340,7 +340,7 @@ msgstr "Использование ЦП (в секундах)"
 msgid "CPU usage:"
 msgstr " Использование ЦП:"
 
-#: lxc/operation.go:156
+#: lxc/operation.go:157
 #, fuzzy
 msgid "CREATED"
 msgstr "СОЗДАН"
@@ -475,7 +475,7 @@ msgid "Creating the container"
 msgstr ""
 
 #: lxc/image.go:234 lxc/image.go:1137 lxc/list.go:465 lxc/network.go:557
-#: lxc/storage.go:712 lxc/storage.go:901
+#: lxc/operation.go:154 lxc/storage.go:712 lxc/storage.go:901
 msgid "DESCRIPTION"
 msgstr ""
 
@@ -1143,7 +1143,7 @@ msgstr ""
 msgid "STATIC"
 msgstr ""
 
-#: lxc/operation.go:154
+#: lxc/operation.go:155
 msgid "STATUS"
 msgstr ""
 
diff --git a/po/sr.po b/po/sr.po
index 9fe0121b7..c340dcd15 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-19 18:13+0100\n"
+"POT-Creation-Date: 2018-02-21 15:21-0500\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
@@ -236,7 +236,7 @@ msgstr ""
 msgid "Bytes sent"
 msgstr ""
 
-#: lxc/operation.go:155
+#: lxc/operation.go:156
 msgid "CANCELABLE"
 msgstr ""
 
@@ -252,7 +252,7 @@ msgstr ""
 msgid "CPU usage:"
 msgstr ""
 
-#: lxc/operation.go:156
+#: lxc/operation.go:157
 msgid "CREATED"
 msgstr ""
 
@@ -386,7 +386,7 @@ msgid "Creating the container"
 msgstr ""
 
 #: lxc/image.go:234 lxc/image.go:1137 lxc/list.go:465 lxc/network.go:557
-#: lxc/storage.go:712 lxc/storage.go:901
+#: lxc/operation.go:154 lxc/storage.go:712 lxc/storage.go:901
 msgid "DESCRIPTION"
 msgstr ""
 
@@ -1051,7 +1051,7 @@ msgstr ""
 msgid "STATIC"
 msgstr ""
 
-#: lxc/operation.go:154
+#: lxc/operation.go:155
 msgid "STATUS"
 msgstr ""
 
diff --git a/po/sv.po b/po/sv.po
index 5ff014fcb..e3b1f7286 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-19 18:13+0100\n"
+"POT-Creation-Date: 2018-02-21 15:21-0500\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
@@ -236,7 +236,7 @@ msgstr ""
 msgid "Bytes sent"
 msgstr ""
 
-#: lxc/operation.go:155
+#: lxc/operation.go:156
 msgid "CANCELABLE"
 msgstr ""
 
@@ -252,7 +252,7 @@ msgstr ""
 msgid "CPU usage:"
 msgstr ""
 
-#: lxc/operation.go:156
+#: lxc/operation.go:157
 msgid "CREATED"
 msgstr ""
 
@@ -386,7 +386,7 @@ msgid "Creating the container"
 msgstr ""
 
 #: lxc/image.go:234 lxc/image.go:1137 lxc/list.go:465 lxc/network.go:557
-#: lxc/storage.go:712 lxc/storage.go:901
+#: lxc/operation.go:154 lxc/storage.go:712 lxc/storage.go:901
 msgid "DESCRIPTION"
 msgstr ""
 
@@ -1051,7 +1051,7 @@ msgstr ""
 msgid "STATIC"
 msgstr ""
 
-#: lxc/operation.go:154
+#: lxc/operation.go:155
 msgid "STATUS"
 msgstr ""
 
diff --git a/po/tr.po b/po/tr.po
index ba3cf00d8..2fdaada96 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-19 18:13+0100\n"
+"POT-Creation-Date: 2018-02-21 15:21-0500\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
@@ -236,7 +236,7 @@ msgstr ""
 msgid "Bytes sent"
 msgstr ""
 
-#: lxc/operation.go:155
+#: lxc/operation.go:156
 msgid "CANCELABLE"
 msgstr ""
 
@@ -252,7 +252,7 @@ msgstr ""
 msgid "CPU usage:"
 msgstr ""
 
-#: lxc/operation.go:156
+#: lxc/operation.go:157
 msgid "CREATED"
 msgstr ""
 
@@ -386,7 +386,7 @@ msgid "Creating the container"
 msgstr ""
 
 #: lxc/image.go:234 lxc/image.go:1137 lxc/list.go:465 lxc/network.go:557
-#: lxc/storage.go:712 lxc/storage.go:901
+#: lxc/operation.go:154 lxc/storage.go:712 lxc/storage.go:901
 msgid "DESCRIPTION"
 msgstr ""
 
@@ -1051,7 +1051,7 @@ msgstr ""
 msgid "STATIC"
 msgstr ""
 
-#: lxc/operation.go:154
+#: lxc/operation.go:155
 msgid "STATUS"
 msgstr ""
 
diff --git a/po/zh.po b/po/zh.po
index 699d3c3b3..7b5872663 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-19 18:13+0100\n"
+"POT-Creation-Date: 2018-02-21 15:21-0500\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
@@ -236,7 +236,7 @@ msgstr ""
 msgid "Bytes sent"
 msgstr ""
 
-#: lxc/operation.go:155
+#: lxc/operation.go:156
 msgid "CANCELABLE"
 msgstr ""
 
@@ -252,7 +252,7 @@ msgstr ""
 msgid "CPU usage:"
 msgstr ""
 
-#: lxc/operation.go:156
+#: lxc/operation.go:157
 msgid "CREATED"
 msgstr ""
 
@@ -386,7 +386,7 @@ msgid "Creating the container"
 msgstr ""
 
 #: lxc/image.go:234 lxc/image.go:1137 lxc/list.go:465 lxc/network.go:557
-#: lxc/storage.go:712 lxc/storage.go:901
+#: lxc/operation.go:154 lxc/storage.go:712 lxc/storage.go:901
 msgid "DESCRIPTION"
 msgstr ""
 
@@ -1051,7 +1051,7 @@ msgstr ""
 msgid "STATIC"
 msgstr ""
 
-#: lxc/operation.go:154
+#: lxc/operation.go:155
 msgid "STATUS"
 msgstr ""
 
diff --git a/po/zh_Hans.po b/po/zh_Hans.po
index 0761da03a..548787192 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-19 18:13+0100\n"
+"POT-Creation-Date: 2018-02-21 15:21-0500\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: Automatically generated\n"
 "Language-Team: none\n"
@@ -236,7 +236,7 @@ msgstr ""
 msgid "Bytes sent"
 msgstr ""
 
-#: lxc/operation.go:155
+#: lxc/operation.go:156
 msgid "CANCELABLE"
 msgstr ""
 
@@ -252,7 +252,7 @@ msgstr ""
 msgid "CPU usage:"
 msgstr ""
 
-#: lxc/operation.go:156
+#: lxc/operation.go:157
 msgid "CREATED"
 msgstr ""
 
@@ -386,7 +386,7 @@ msgid "Creating the container"
 msgstr ""
 
 #: lxc/image.go:234 lxc/image.go:1137 lxc/list.go:465 lxc/network.go:557
-#: lxc/storage.go:712 lxc/storage.go:901
+#: lxc/operation.go:154 lxc/storage.go:712 lxc/storage.go:901
 msgid "DESCRIPTION"
 msgstr ""
 
@@ -1051,7 +1051,7 @@ msgstr ""
 msgid "STATIC"
 msgstr ""
 
-#: lxc/operation.go:154
+#: lxc/operation.go:155
 msgid "STATUS"
 msgstr ""
 


More information about the lxc-devel mailing list