Merge pull request #1344 from dnephin/fix_pull_with_sha
Support image with ids instead of names
This commit is contained in:
commit
7e0ab0714f
4 changed files with 49 additions and 30 deletions
|
|
@ -457,6 +457,11 @@ class ServiceTest(DockerClientTestCase):
|
|||
],
|
||||
})
|
||||
|
||||
def test_start_with_image_id(self):
|
||||
# Image id for the current busybox:latest
|
||||
service = self.create_service('foo', image='8c2e06607696')
|
||||
self.assertTrue(service.start_or_create_containers())
|
||||
|
||||
def test_scale(self):
|
||||
service = self.create_service('web')
|
||||
service.scale(1)
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ class DockerClientTestCase(unittest.TestCase):
|
|||
self.client.remove_image(i)
|
||||
|
||||
def create_service(self, name, **kwargs):
|
||||
kwargs['image'] = "busybox:latest"
|
||||
kwargs['image'] = kwargs.pop('image', 'busybox:latest')
|
||||
|
||||
if 'command' not in kwargs:
|
||||
kwargs['command'] = ["/bin/sleep", "300"]
|
||||
|
|
|
|||
|
|
@ -221,9 +221,22 @@ class ServiceTest(unittest.TestCase):
|
|||
def test_pull_image(self, mock_log):
|
||||
service = Service('foo', client=self.mock_client, image='someimage:sometag')
|
||||
service.pull(insecure_registry=True)
|
||||
self.mock_client.pull.assert_called_once_with('someimage:sometag', insecure_registry=True)
|
||||
self.mock_client.pull.assert_called_once_with(
|
||||
'someimage',
|
||||
tag='sometag',
|
||||
insecure_registry=True,
|
||||
stream=True)
|
||||
mock_log.info.assert_called_once_with('Pulling foo (someimage:sometag)...')
|
||||
|
||||
def test_pull_image_no_tag(self):
|
||||
service = Service('foo', client=self.mock_client, image='ababab')
|
||||
service.pull()
|
||||
self.mock_client.pull.assert_called_once_with(
|
||||
'ababab',
|
||||
tag='latest',
|
||||
insecure_registry=False,
|
||||
stream=True)
|
||||
|
||||
@mock.patch('compose.service.Container', autospec=True)
|
||||
@mock.patch('compose.service.log', autospec=True)
|
||||
def test_create_container_from_insecure_registry(
|
||||
|
|
@ -243,11 +256,12 @@ class ServiceTest(unittest.TestCase):
|
|||
service.create_container(insecure_registry=True)
|
||||
|
||||
self.mock_client.pull.assert_called_once_with(
|
||||
'someimage:sometag',
|
||||
'someimage',
|
||||
tag='sometag',
|
||||
insecure_registry=True,
|
||||
stream=True)
|
||||
mock_log.info.assert_called_once_with(
|
||||
'Pulling image someimage:sometag...')
|
||||
'Pulling foo (someimage:sometag)...')
|
||||
|
||||
def test_parse_repository_tag(self):
|
||||
self.assertEqual(parse_repository_tag("root"), ("root", ""))
|
||||
|
|
@ -257,11 +271,20 @@ class ServiceTest(unittest.TestCase):
|
|||
self.assertEqual(parse_repository_tag("url:5000/repo"), ("url:5000/repo", ""))
|
||||
self.assertEqual(parse_repository_tag("url:5000/repo:tag"), ("url:5000/repo", "tag"))
|
||||
|
||||
def test_latest_is_used_when_tag_is_not_specified(self):
|
||||
@mock.patch('compose.service.Container', autospec=True)
|
||||
def test_create_container_latest_is_used_when_no_tag_specified(self, mock_container):
|
||||
mock_container.create.side_effect = APIError(
|
||||
"oops",
|
||||
mock.Mock(status_code=404),
|
||||
"No such image")
|
||||
service = Service('foo', client=self.mock_client, image='someimage')
|
||||
Container.create = mock.Mock()
|
||||
service.create_container()
|
||||
self.assertEqual(Container.create.call_args[1]['image'], 'someimage:latest')
|
||||
with self.assertRaises(APIError):
|
||||
service.create_container()
|
||||
self.mock_client.pull.assert_called_once_with(
|
||||
'someimage',
|
||||
tag='latest',
|
||||
insecure_registry=False,
|
||||
stream=True)
|
||||
|
||||
def test_create_container_with_build(self):
|
||||
self.mock_client.images.return_value = []
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue