Merge pull request #396 from jakedt/python-registry-v2
Python registry v2
This commit is contained in:
commit
1f0c7f9cff
5 changed files with 22 additions and 15 deletions
|
@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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]
|
||||||
|
|
|
@ -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),
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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])
|
||||||
|
|
Reference in a new issue