[lxc-devel] [lxd/master] shared/simplestreams: Add support for combined.tar.gz

stgraber on Github lxc-bot at linuxcontainers.org
Fri Aug 2 18:41:47 UTC 2019


A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 370 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20190802/1a388703/attachment.bin>
-------------- next part --------------
From 15e9f91ee58f758e883bfd3b9971a0d578cad1eb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Fri, 2 Aug 2019 14:40:30 -0400
Subject: [PATCH] shared/simplestreams: Add support for combined.tar.gz
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Closes #6040

Signed-off-by: St├ęphane Graber <stgraber at ubuntu.com>
---
 shared/simplestreams/simplestreams.go | 29 +++++++++++++++++++--------
 1 file changed, 21 insertions(+), 8 deletions(-)

diff --git a/shared/simplestreams/simplestreams.go b/shared/simplestreams/simplestreams.go
index 61b6fa1bec..f8fc06109d 100644
--- a/shared/simplestreams/simplestreams.go
+++ b/shared/simplestreams/simplestreams.go
@@ -124,7 +124,7 @@ func (s *SimpleStreamsManifest) ToLXD() ([]api.Image, map[string][][]string) {
 				}
 
 				// Skip the files we don't care about
-				if !shared.StringInSlice(item.FileType, []string{"root.tar.xz", "lxd.tar.xz", "squashfs"}) {
+				if !shared.StringInSlice(item.FileType, []string{"root.tar.xz", "lxd.tar.xz", "lxd_combined.tar.gz", "squashfs"}) {
 					continue
 				}
 
@@ -134,6 +134,9 @@ func (s *SimpleStreamsManifest) ToLXD() ([]api.Image, map[string][][]string) {
 					rootSquash = item
 				} else if item.FileType == "root.tar.xz" {
 					rootTar = item
+				} else if item.FileType == "lxd_combined.tar.gz" {
+					meta = item
+					rootTar = item
 				}
 			}
 
@@ -164,12 +167,17 @@ func (s *SimpleStreamsManifest) ToLXD() ([]api.Image, map[string][][]string) {
 				rootfsHash = rootSquash.HashSha256
 				rootfsSize = rootSquash.Size
 			} else {
-				if meta.LXDHashSha256RootXz != "" {
-					fingerprint = meta.LXDHashSha256RootXz
+				if meta == rootTar {
+					fingerprint = meta.HashSha256
+					size = meta.Size
 				} else {
-					fingerprint = meta.LXDHashSha256
+					if meta.LXDHashSha256RootXz != "" {
+						fingerprint = meta.LXDHashSha256RootXz
+					} else {
+						fingerprint = meta.LXDHashSha256
+					}
+					size += rootTar.Size
 				}
-				size += rootTar.Size
 				rootfsPath = rootTar.Path
 				rootfsHash = rootTar.HashSha256
 				rootfsSize = rootTar.Size
@@ -229,9 +237,14 @@ func (s *SimpleStreamsManifest) ToLXD() ([]api.Image, map[string][][]string) {
 				}
 			}
 
-			imgDownloads := [][]string{
-				{metaPath, metaHash, "meta", fmt.Sprintf("%d", metaSize)},
-				{rootfsPath, rootfsHash, "root", fmt.Sprintf("%d", rootfsSize)}}
+			imgDownloads := [][]string{}
+			if meta == rootTar {
+				imgDownloads = [][]string{{metaPath, metaHash, "meta", fmt.Sprintf("%d", metaSize)}}
+			} else {
+				imgDownloads = [][]string{
+					{metaPath, metaHash, "meta", fmt.Sprintf("%d", metaSize)},
+					{rootfsPath, rootfsHash, "root", fmt.Sprintf("%d", rootfsSize)}}
+			}
 
 			// Add the deltas
 			for _, delta := range deltas {


More information about the lxc-devel mailing list