Merge "RepoTag is null in manifest.json"
This commit is contained in:
commit
de0cd125b4
@ -191,7 +191,10 @@ class DockerDriver(driver.ContainerDriver):
|
||||
host_config['storage_opt'] = {'size': disk_size}
|
||||
|
||||
kwargs['host_config'] = docker.create_host_config(**host_config)
|
||||
image_repo = image['repo'] + ":" + image['tag']
|
||||
if image['tag']:
|
||||
image_repo = image['repo'] + ":" + image['tag']
|
||||
else:
|
||||
image_repo = image['repo']
|
||||
response = docker.create_container(image_repo, **kwargs)
|
||||
container.container_id = response['Id']
|
||||
|
||||
|
@ -82,9 +82,13 @@ class DockerHTTPClient(docker.APIClient):
|
||||
fest = fil.extractfile('manifest.json')
|
||||
data = fest.read()
|
||||
data = jsonutils.loads(encodeutils.safe_decode(data))
|
||||
repo_tag = data[0]['RepoTags'][0]
|
||||
repo, tag = repo_tag.split(":")
|
||||
image['repo'], image['tag'] = repo, tag
|
||||
repo_tags = data[0]['RepoTags']
|
||||
if repo_tags:
|
||||
repo, tag = repo_tags[0].split(":")
|
||||
image['repo'], image['tag'] = repo, tag
|
||||
else:
|
||||
image_uuid = data[0]['Config'].split('.')[0]
|
||||
image['repo'], image['tag'] = image_uuid, ''
|
||||
|
||||
def exec_resize(self, exec_id, height=None, width=None):
|
||||
# NOTE(hongbin): This is a temporary work-around for a docker issue
|
||||
|
@ -105,7 +105,7 @@ class TestDockerDriver(base.DriverTestCase):
|
||||
self.mock_docker.inspect_container = mock.Mock(
|
||||
return_value={'State': 'created',
|
||||
'Config': {'Cmd': ['fake_command']}})
|
||||
image = {'path': '', 'image': '', 'repo': '', 'tag': ''}
|
||||
image = {'path': '', 'image': '', 'repo': 'test', 'tag': 'test'}
|
||||
mock_container = self.mock_default_container
|
||||
mock_container.status = 'Creating'
|
||||
networks = [{'network': 'fake-network'}]
|
||||
|
@ -57,3 +57,20 @@ class TestDockerHTTPClient(base.DriverTestCase):
|
||||
self.client.read_tar_image(fake_image)
|
||||
self.assertEqual('cirros', fake_image['repo'])
|
||||
self.assertEqual('latest', fake_image['tag'])
|
||||
|
||||
@mock.patch('tarfile.open')
|
||||
def test_read_tar_image_no_repotag(self, mock_open):
|
||||
fake_image = {'path': 'fake-path'}
|
||||
mock_context_manager = mock.MagicMock()
|
||||
mock_open.return_value = mock_context_manager
|
||||
mock_file = mock.MagicMock()
|
||||
mock_context_manager.__enter__.return_value = mock_file
|
||||
mock_data = [{"Config": "fake_config",
|
||||
"RepoTags": "",
|
||||
"Layers": ["fake_layer", "fake_layer2"]}]
|
||||
mock_file.extractfile.return_value.read.return_value = \
|
||||
jsonutils.dumps(mock_data, separators=(',', ':'))
|
||||
|
||||
self.client.read_tar_image(fake_image)
|
||||
self.assertEqual('fake_config', fake_image['repo'])
|
||||
self.assertEqual('', fake_image['tag'])
|
||||
|
Loading…
x
Reference in New Issue
Block a user