Merge pull request #1241 from coreos-inc/v2v1idbugs
Small bug fixes for V2->V1 translation
This commit is contained in:
commit
babf61fdaa
2 changed files with 35 additions and 2 deletions
|
@ -338,7 +338,7 @@ def _updated_v1_metadata(v1_metadata_json, updated_id_map):
|
||||||
parsed = json.loads(v1_metadata_json)
|
parsed = json.loads(v1_metadata_json)
|
||||||
parsed['id'] = updated_id_map[parsed['id']]
|
parsed['id'] = updated_id_map[parsed['id']]
|
||||||
|
|
||||||
if parsed.get('parent'):
|
if parsed.get('parent') and parsed['parent'] in updated_id_map:
|
||||||
parsed['parent'] = updated_id_map[parsed['parent']]
|
parsed['parent'] = updated_id_map[parsed['parent']]
|
||||||
|
|
||||||
if parsed.get('container_config', {}).get('Image'):
|
if parsed.get('container_config', {}).get('Image'):
|
||||||
|
@ -408,7 +408,8 @@ def _write_manifest(namespace, repo_name, manifest):
|
||||||
images_map[v1_mdata.docker_id].storage.content_checksum != digest_str) or
|
images_map[v1_mdata.docker_id].storage.content_checksum != digest_str) or
|
||||||
has_rewritten_ids):
|
has_rewritten_ids):
|
||||||
|
|
||||||
working_docker_id = hashlib.sha256(mdata.v1_metadata_str + '@' + digest_str).hexdigest()
|
v1_metadata_str = mdata.v1_metadata_str.encode('utf-8')
|
||||||
|
working_docker_id = hashlib.sha256(v1_metadata_str + '@' + digest_str).hexdigest()
|
||||||
logger.debug('Rewriting docker_id %s/%s %s -> %s', namespace, repo_name, v1_mdata.docker_id,
|
logger.debug('Rewriting docker_id %s/%s %s -> %s', namespace, repo_name, v1_mdata.docker_id,
|
||||||
working_docker_id)
|
working_docker_id)
|
||||||
has_rewritten_ids = True
|
has_rewritten_ids = True
|
||||||
|
|
|
@ -749,6 +749,38 @@ class RegistryTestsMixin(object):
|
||||||
# Pull the repository.
|
# Pull the repository.
|
||||||
self.do_pull('public', 'newrepo', 'public', 'password', images=images, munge_shas=True)
|
self.do_pull('public', 'newrepo', 'public', 'password', images=images, munge_shas=True)
|
||||||
|
|
||||||
|
|
||||||
|
def test_push_same_ids_different_sha_with_unicode(self):
|
||||||
|
if self.push_version == 'v1':
|
||||||
|
# No SHAs to munge in V1.
|
||||||
|
return
|
||||||
|
|
||||||
|
images = [
|
||||||
|
{
|
||||||
|
'id': 'latestid',
|
||||||
|
'contents': 'The latest image',
|
||||||
|
'unicode': u'the Pawe\xc5\x82 Kami\xc5\x84ski image',
|
||||||
|
'parent': 'baseid',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'id': 'baseid',
|
||||||
|
'contents': 'The base image',
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
# Push a new repository.
|
||||||
|
self.do_push('public', 'newrepo', 'public', 'password', images=images)
|
||||||
|
|
||||||
|
# Pull the repository.
|
||||||
|
self.do_pull('public', 'newrepo', 'public', 'password', images=images)
|
||||||
|
|
||||||
|
# Push a the repository again, but with different SHAs.
|
||||||
|
self.do_push('public', 'newrepo', 'public', 'password', images=images, munge_shas=True)
|
||||||
|
|
||||||
|
# Pull the repository.
|
||||||
|
self.do_pull('public', 'newrepo', 'public', 'password', images=images, munge_shas=True)
|
||||||
|
|
||||||
|
|
||||||
def test_push_pull_logging(self):
|
def test_push_pull_logging(self):
|
||||||
# Push a new repository.
|
# Push a new repository.
|
||||||
self.do_push('public', 'newrepo', 'public', 'password')
|
self.do_push('public', 'newrepo', 'public', 'password')
|
||||||
|
|
Reference in a new issue