summaryrefslogtreecommitdiffstats
path: root/tests/docker_source.py
diff options
context:
space:
mode:
authorRadostin Stoyanov <rstoyanov1@gmail.com>2017-12-15 23:05:33 +0000
committerRadostin Stoyanov <rstoyanov1@gmail.com>2017-12-18 19:19:25 +0000
commita223b15938237665fe135cd710f4301ea23bf85d (patch)
treefe4ccbede02b62a572c341e937751f76ff13669b /tests/docker_source.py
parent76a945f9f2b88407bac8f7a8cc0d1464db183f21 (diff)
downloadvirt-bootstrap.git-a223b15938237665fe135cd710f4301ea23bf85d.tar.gz
virt-bootstrap.git-a223b15938237665fe135cd710f4301ea23bf85d.tar.xz
virt-bootstrap.git-a223b15938237665fe135cd710f4301ea23bf85d.zip
docker-source: Get list of layers without `--raw`
When `skopeo inspect --raw docker://feodra` is used the returned manifest content contains a list with manifests for specific platforms [1] rather than a list with layers. By using `skopeo inpect docker://fedora` the correct manifest content is retrieved and a list with layers is provided. In addition, skopeo handles the difference between schemaVersion 1 and 2. [1] https://docs.docker.com/registry/spec/manifest-v2-2/#manifest-list-field-descriptions
Diffstat (limited to 'tests/docker_source.py')
-rw-r--r--tests/docker_source.py66
1 files changed, 10 insertions, 56 deletions
diff --git a/tests/docker_source.py b/tests/docker_source.py
index 9090988..c8f4e08 100644
--- a/tests/docker_source.py
+++ b/tests/docker_source.py
@@ -90,11 +90,8 @@ class CreateLayers(object):
"""
return {
"schemaVersion": 2,
- "layers": [
- {
- "digest":
- "sha256:" + os.path.basename(layer).split('.')[0]
- }
+ "Layers": [
+ "sha256:" + os.path.basename(layer).split('.')[0]
for layer in self.layers
]
}
@@ -340,7 +337,7 @@ class TestDockerSource(unittest.TestCase):
'progress': mock.Mock()
}
- manifest = {'schemaVersion': 2, 'layers': []}
+ manifest = {'schemaVersion': 2, 'Layers': ['sha256:a7050fc1']}
(src_instance,
m_uri, m_utils) = self._mock_retrieve_layers_info(manifest,
src_kwargs)
@@ -349,7 +346,7 @@ class TestDockerSource(unittest.TestCase):
'insecure': src_instance.insecure,
'username': src_instance.username,
'password': src_instance.password,
- 'raw': True
+ 'raw': False
}
m_utils['get_image_details'].assert_called_once_with(m_uri(), **kwargs)
@@ -365,11 +362,11 @@ class TestDockerSource(unittest.TestCase):
}
manifest = {
- 'schemaVersion': 1,
- 'fsLayers': [
- {'blobSum': 'sha256:75c416ea'},
- {'blobSum': 'sha256:c6ff40b6'},
- {'blobSum': 'sha256:a7050fc1'}
+ 'schemaVersion': 2,
+ 'Layers': [
+ 'sha256:a7050fc1',
+ 'sha256:c6ff40b6',
+ 'sha256:75c416ea'
]
}
@@ -382,47 +379,4 @@ class TestDockerSource(unittest.TestCase):
with mock.patch('os.path.getsize') as m_getsize:
m_getsize.return_value = None
src_instance = self._mock_retrieve_layers_info(manifest, kwargs)[0]
- self.assertEqual(src_instance.layers, expected_result)
-
- def test_retrieve_layers_info_schema_version_2(self):
- """
- Ensures that retrieve_layers_info() extracts the layers' information
- from manifest with schema version 2 a list with format:
- ["digest", "sum_type", "file_path", "size"].
- """
- kwargs = {
- 'uri': '',
- 'progress': mock.Mock()
- }
-
- manifest = {
- 'schemaVersion': 2,
- "layers": [
- {"size": 47103294, "digest": "sha256:75c416ea"},
- {"size": 814, "digest": "sha256:c6ff40b6"},
- {"size": 513, "digest": "sha256:a7050fc1"}
- ]
- }
-
- expected_result = [
- ['/images_path/75c416ea.tar', 47103294],
- ['/images_path/c6ff40b6.tar', 814],
- ['/images_path/a7050fc1.tar', 513]
- ]
-
- src_instance = self._mock_retrieve_layers_info(manifest, kwargs)[0]
- self.assertEqual(src_instance.layers, expected_result)
-
- def test_retrieve_layers_info_raise_error_on_invalid_schema_version(self):
- """
- Ensures that retrieve_layers_info() calls get_image_details()
- with all passed arguments.
- """
- kwargs = {
- 'uri': '',
- 'progress': mock.Mock()
- }
-
- manifest = {'schemaVersion': 3}
- with self.assertRaises(ValueError):
- self._mock_retrieve_layers_info(manifest, kwargs)
+ self.assertEqual(src_instance.layers, expected_result) \ No newline at end of file