summaryrefslogtreecommitdiffstats
path: root/src/virtBootstrap
diff options
context:
space:
mode:
Diffstat (limited to 'src/virtBootstrap')
-rw-r--r--src/virtBootstrap/sources.py18
-rw-r--r--src/virtBootstrap/utils.py7
2 files changed, 20 insertions, 5 deletions
diff --git a/src/virtBootstrap/sources.py b/src/virtBootstrap/sources.py
index 4f1b104..8800d72 100644
--- a/src/virtBootstrap/sources.py
+++ b/src/virtBootstrap/sources.py
@@ -128,10 +128,22 @@ class DockerSource(object):
username=self.username,
password=self.password)
- for layer in self.manifest['layers']:
- sum_type, layer_sum = layer['digest'].split(':')
+ if self.manifest['schemaVersion'] == 1:
+ layers_list = self.manifest['fsLayers'][::-1]
+ digest_field = 'blobSum'
+ elif self.manifest['schemaVersion'] == 2:
+ layers_list = self.manifest['layers']
+ digest_field = 'digest'
+ else:
+ raise ValueError('Unsupported manifest schema.')
+
+ for layer in layers_list:
+ layer_digest = layer[digest_field]
+ layer_size = layer['size'] if 'size' in layer else None
+
+ sum_type, layer_sum = layer_digest.split(':')
file_path = os.path.join(self.images_dir, layer_sum + '.tar')
- self.layers.append([sum_type, layer_sum, file_path, layer['size']])
+ self.layers.append([sum_type, layer_sum, file_path, layer_size])
def gen_valid_uri(self, uri):
"""
diff --git a/src/virtBootstrap/utils.py b/src/virtBootstrap/utils.py
index daabd26..a65d3f5 100644
--- a/src/virtBootstrap/utils.py
+++ b/src/virtBootstrap/utils.py
@@ -138,8 +138,11 @@ def log_layer_extract(layer, current, total, progress):
Create log message on layer extract.
"""
sum_type, sum_value, layer_file, layer_size = layer
- progress("Extracting layer (%s/%s) with size: %s"
- % (current, total, bytes_to_size(layer_size)), logger=logger)
+ msg = 'Extracting layer (%s/%s)' % (current, total)
+
+ if layer_size:
+ msg += " with size: %s" % bytes_to_size(layer_size)
+ progress(msg, logger=logger)
logger.debug('Untar layer: (%s:%s) %s', sum_type, sum_value, layer_file)