Merge pull request #396 from jakedt/python-registry-v2

Python registry v2
This commit is contained in:
Jake Moshenko 2015-08-24 12:04:31 -04:00
commit 1f0c7f9cff
5 changed files with 22 additions and 15 deletions

View file

@ -139,8 +139,8 @@ def get_repository_images(namespace_name, repository_name):
def get_image_by_id(namespace_name, repository_name, docker_image_id): def get_image_by_id(namespace_name, repository_name, docker_image_id):
image = get_repo_image_extended(namespace_name, repository_name, docker_image_id) image = get_repo_image_extended(namespace_name, repository_name, docker_image_id)
if not image: if not image:
raise DataModelException('Unable to find image \'%s\' for repo \'%s/%s\'' % raise InvalidImageException('Unable to find image \'%s\' for repo \'%s/%s\'' %
(docker_image_id, namespace_name, repository_name)) (docker_image_id, namespace_name, repository_name))
return image return image

View file

@ -383,7 +383,11 @@ def get_image_ancestry(namespace, repository, image_id, headers):
if not permission.can() and not model.repository.repository_is_public(namespace, repository): if not permission.can() and not model.repository.repository_is_public(namespace, repository):
abort(403) abort(403)
image = model.image.get_image_by_id(namespace, repository, image_id) try:
image = model.image.get_image_by_id(namespace, repository, image_id)
except model.InvalidImageException:
abort(404, 'Image %(image_id)s not found', issue='unknown-image', image_id=image_id)
parents = model.image.get_parent_images(namespace, repository, image) parents = model.image.get_parent_images(namespace, repository, image)
ancestry_docker_ids = [image.docker_image_id] ancestry_docker_ids = [image.docker_image_id]

View file

@ -143,14 +143,11 @@ def build_index_specs():
IndexTestSpec(url_for('v1.get_image_json', image_id=FAKE_IMAGE_ID), IndexTestSpec(url_for('v1.get_image_json', image_id=FAKE_IMAGE_ID),
ORG_REPO, 403, 403, 404, 404), ORG_REPO, 403, 403, 404, 404),
IndexTestSpec(url_for('v1.get_image_ancestry', IndexTestSpec(url_for('v1.get_image_ancestry', image_id=FAKE_IMAGE_ID),
image_id=FAKE_IMAGE_ID),
PUBLIC_REPO, 404, 404, 404, 404), PUBLIC_REPO, 404, 404, 404, 404),
IndexTestSpec(url_for('v1.get_image_ancestry', IndexTestSpec(url_for('v1.get_image_ancestry', image_id=FAKE_IMAGE_ID),
image_id=FAKE_IMAGE_ID),
PRIVATE_REPO, 403, 403, 404, 404), PRIVATE_REPO, 403, 403, 404, 404),
IndexTestSpec(url_for('v1.get_image_ancestry', IndexTestSpec(url_for('v1.get_image_ancestry', image_id=FAKE_IMAGE_ID),
image_id=FAKE_IMAGE_ID),
ORG_REPO, 403, 403, 404, 404), ORG_REPO, 403, 403, 404, 404),
IndexTestSpec(url_for('v1.put_image_json', image_id=FAKE_IMAGE_ID), IndexTestSpec(url_for('v1.put_image_json', image_id=FAKE_IMAGE_ID),

View file

@ -16,10 +16,10 @@ ADMIN_ACCESS_USER = 'devtable'
class EndpointTestCase(unittest.TestCase): class EndpointTestCase(unittest.TestCase):
def setUp(self): def setUp(self):
setup_database_for_testing(self) setup_database_for_testing(self)
def tearDown(self): def tearDown(self):
finished_database_for_testing(self) finished_database_for_testing(self)
@ -68,13 +68,13 @@ class _SpecTestBuilder(type):
expected_status = getattr(test_spec, attrs['result_attr']) expected_status = getattr(test_spec, attrs['result_attr'])
test = _SpecTestBuilder._test_generator(url, expected_status, test = _SpecTestBuilder._test_generator(url, expected_status,
open_kwargs, open_kwargs,
session_vars) session_vars)
test_name_url = url.replace('/', '_').replace('-', '_') test_name_url = url.replace('/', '_').replace('-', '_')
sess_repo = str(test_spec.sess_repo).replace('/', '_') sess_repo = str(test_spec.sess_repo).replace('/', '_')
test_name = 'test_%s%s_%s' % (open_kwargs['method'].lower(), test_name = 'test_%s%s_%s' % (open_kwargs['method'].lower(),
test_name_url, sess_repo) test_name_url, sess_repo)
attrs[test_name] = test attrs[test_name] = test
return type(name, bases, attrs) return type(name, bases, attrs)

View file

@ -68,9 +68,15 @@ class TestGarbageCollection(unittest.TestCase):
if not image_id in image_map: if not image_id in image_map:
image_map[image_id] = self.createImage(image_id, repo, namespace) image_map[image_id] = self.createImage(image_id, repo, namespace)
v1_metadata = {
'id': image_id,
}
if parent is not None:
v1_metadata['parent'] = parent.docker_image_id
# Set the ancestors for the image. # Set the ancestors for the image.
parent = model.image.set_image_metadata(image_id, namespace, name, '', '', '', parent = model.image.set_image_metadata(image_id, namespace, name, '', '', '',
parent=parent) v1_metadata, parent=parent)
# Set the tag for the image. # Set the tag for the image.
model.tag.create_or_update_tag(namespace, name, tag_name, image_ids[-1]) model.tag.create_or_update_tag(namespace, name, tag_name, image_ids[-1])