def get_image_json(image_id, headers): try: repository = toolkit.get_repository() if repository and store.is_private(*repository): return toolkit.api_error('Image not found', 404) # If no auth token found, either standalone registry or privileged # access. In both cases, access is always "public". return _get_image_json(image_id, headers) except IOError: return toolkit.api_error('Image not found', 404)
def get_private_image_json(image_id): repository = toolkit.get_repository() if not repository: # No auth token found, either standalone registry or privileged access # In both cases, private images are "disabled" return toolkit.api_error('Image not found', 404) try: if not store.is_private(*repository): return toolkit.api_error('Image not found', 404) return _get_image_json(image_id) except IOError: return toolkit.api_error('Image not found', 404)
def get_image_files(image_id, headers): try: repository = toolkit.get_repository() if repository and store.is_private(*repository): return toolkit.api_error('Image not found', 404) # If no auth token found, either standalone registry or privileged # access. In both cases, access is always "public". data = layers.get_image_files_json(image_id) return toolkit.response(data, headers=headers, raw=True) except IOError: return toolkit.api_error('Image not found', 404) except tarfile.TarError: return toolkit.api_error('Layer format not supported', 400)
def get_image_layer(image_id, headers): try: bytes_range = None if store.supports_bytes_range: headers['Accept-Ranges'] = 'bytes' bytes_range = _parse_bytes_range() repository = toolkit.get_repository() if repository and store.is_private(*repository): return toolkit.api_error('Image not found', 404) # If no auth token found, either standalone registry or privileged # access. In both cases, access is always "public". return _get_image_layer(image_id, headers, bytes_range) except IOError: return toolkit.api_error('Image not found', 404)
def get_private_image_files(image_id, headers): repository = toolkit.get_repository() if not repository: # No auth token found, either standalone registry or privileged access # In both cases, private images are "disabled" return toolkit.api_error('Image not found', 404) try: if not store.is_private(*repository): return toolkit.api_error('Image not found', 404) data = layers.get_image_files_json(image_id) return toolkit.response(data, headers=headers, raw=True) except IOError: return toolkit.api_error('Image not found', 404) except tarfile.TarError: return toolkit.api_error('Layer format not supported', 400)
def get_private_image_layer(image_id): try: headers = None bytes_range = None if store.supports_bytes_range: headers['Accept-Ranges'] = 'bytes' bytes_range = _parse_bytes_range() repository = toolkit.get_repository() if not repository: # No auth token found, either standalone registry or privileged # access. In both cases, private images are "disabled" return toolkit.api_error('Image not found', 404) if not store.is_private(*repository): return toolkit.api_error('Image not found', 404) return _get_image_layer(image_id, headers, bytes_range) except IOError: return toolkit.api_error('Image not found', 404)
def get_image_diff(image_id, headers): try: repository = toolkit.get_repository() if repository and store.is_private(*repository): return toolkit.api_error('Image not found', 404) # first try the cache diff_json = layers.get_image_diff_cache(image_id) # it the cache misses, request a diff from a worker if not diff_json: layers.diff_queue.push(image_id) # empty response diff_json = "" return toolkit.response(diff_json, headers=headers, raw=True) except IOError: return toolkit.api_error('Image not found', 404) except tarfile.TarError: return toolkit.api_error('Layer format not supported', 400)