[lxc-devel] [lxd/master] shared: Progress metadata as a map

joelhockey on Github lxc-bot at linuxcontainers.org
Tue Feb 5 22:51:55 UTC 2019


A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 576 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20190205/46a2923e/attachment-0001.bin>
-------------- next part --------------
From a51401b0a42f1973db89db042a18c42177850bc9 Mon Sep 17 00:00:00 2001
From: Joel Hockey <joelhockey at chromium.org>
Date: Tue, 5 Feb 2019 13:38:06 -0800
Subject: [PATCH] shared: Progress metadata as a map

Modify the progress metadata to send stage, percent, speed in
a map keyed by 'progress'. Metadata format will now be:
* progress => {stage: <string>, percent: <string>, speed: <string>}
* <stage>_progress => <string>

Signed-off-by: Joel Hockey <joelhockey at chromium.org>
---
 lxd/containers_post.go |  2 +-
 lxd/images.go          |  4 ++--
 shared/util.go         | 10 ++++++----
 3 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/lxd/containers_post.go b/lxd/containers_post.go
index d3dadacaa4..a39c04abe6 100644
--- a/lxd/containers_post.go
+++ b/lxd/containers_post.go
@@ -129,7 +129,7 @@ func createFromImage(d *Daemon, project string, req *api.ContainersPost) Respons
 			return err
 		}
 
-		metadata := make(map[string]string)
+		metadata := make(map[string]interface{})
 		_, err = containerCreateFromImage(d, args, info.Fingerprint, &ioprogress.ProgressTracker{
 			Handler: func(percent, speed int64) {
 				shared.SetProgressMetadata(metadata, "create_container_from_image_unpack", "Unpack", percent, speed)
diff --git a/lxd/images.go b/lxd/images.go
index 39311d7423..3a5f19239e 100644
--- a/lxd/images.go
+++ b/lxd/images.go
@@ -207,7 +207,7 @@ func imgPostContInfo(d *Daemon, r *http.Request, req api.ImagesPost, op *operati
 	}
 
 	// Track progress writing tarfile
-	metadata := make(map[string]string)
+	metadata := make(map[string]interface{})
 	tarfileProgressWriter := &ioprogress.ProgressWriter{
 		WriteCloser: tarfile,
 		Tracker: &ioprogress.ProgressTracker{
@@ -262,7 +262,7 @@ func imgPostContInfo(d *Daemon, r *http.Request, req api.ImagesPost, op *operati
 		}
 
 		// Track progress writing gzipped file
-		metadata = make(map[string]string)
+		metadata = make(map[string]interface{})
 		tarfileProgressReader := &ioprogress.ProgressReader{
 			ReadCloser: tarfile,
 			Tracker: &ioprogress.ProgressTracker{
diff --git a/shared/util.go b/shared/util.go
index 7aba6c3af7..792e49dd67 100644
--- a/shared/util.go
+++ b/shared/util.go
@@ -1008,11 +1008,13 @@ func EscapePathFstab(path string) string {
 	return r.Replace(path)
 }
 
-func SetProgressMetadata(metadata map[string]string, stage, displayPrefix string, percent, speed int64) {
+func SetProgressMetadata(metadata map[string]interface{}, stage, displayPrefix string, percent, speed int64) {
+	progress := make(map[string]string)
 	// stage, percent, speed sent for API callers.
-	metadata["progress_stage"] = stage
-	metadata["progress_percent"] = strconv.FormatInt(percent, 10)
-	metadata["progress_speed"] = strconv.FormatInt(speed, 10)
+	progress["stage"] = stage
+	progress["percent"] = strconv.FormatInt(percent, 10)
+	progress["speed"] = strconv.FormatInt(speed, 10)
+	metadata["progress"] = progress
 	// <stage>_progress with formatted text sent for lxc cli.
 	metadata[stage+"_progress"] = fmt.Sprintf("%s: %d%% (%s/s)", displayPrefix, percent, GetByteSizeString(speed, 2))
 }


More information about the lxc-devel mailing list