Skip to content

Commit 8431910

Browse files
committed
Add sunset header
1 parent bbbd8bd commit 8431910

File tree

1 file changed

+17
-18
lines changed
  • conda-store-server/conda_store_server/_internal/server/views

1 file changed

+17
-18
lines changed

conda-store-server/conda_store_server/_internal/server/views/registry.py

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,17 @@
1616
router_registry = APIRouter(tags=["registry"])
1717

1818

19-
def _json_response(data, status=200, mimetype="application/json", deprecated=False):
19+
def _json_response(data, status=200, mimetype="application/json"):
2020
response = Response(
2121
content=json.dumps(data, indent=3), status_code=status, media_type=mimetype
2222
)
2323
response.headers["Docker-Distribution-Api-Version"] = "registry/2.0"
24-
if deprecated:
25-
response.headers["Deprecation"] = "True"
24+
response.headers["Deprecation"] = "True"
25+
response.headers["Sunset"] = "Mon, 16 Feb 2025 23:59:59 UTC"
2626
return response
2727

2828

29-
def docker_error_message(docker_registry_error: schema.DockerRegistryError, deprecated=False):
29+
def docker_error_message(docker_registry_error: schema.DockerRegistryError):
3030
response = _json_response(
3131
{
3232
"errors": [
@@ -38,7 +38,6 @@ def docker_error_message(docker_registry_error: schema.DockerRegistryError, depr
3838
]
3939
},
4040
status=docker_registry_error.value["status"],
41-
deprecated=deprecated
4241
)
4342

4443
if docker_registry_error == schema.DockerRegistryError.UNAUTHORIZED:
@@ -82,16 +81,16 @@ def replace_words(s, words):
8281

8382
def get_docker_image_manifest(conda_store, image, tag, timeout=10 * 60):
8483
namespace, *image_name = image.split("/")
85-
response_headers = {"Deprecation": "True"}
84+
response_headers = {"Deprecation": "True", "Sunset": "Mon, 16 Feb 2025 23:59:59 UTC"}
8685

8786
# /v2/<image-name>/manifest/<tag>
8887
if len(image_name) == 0:
89-
return docker_error_message(schema.DockerRegistryError.NAME_UNKNOWN, deprecated=True)
88+
return docker_error_message(schema.DockerRegistryError.NAME_UNKNOWN)
9089

9190
if namespace == "conda-store-dynamic":
9291
environment_name = dynamic_conda_store_environment(conda_store, image_name)
9392
elif len(image_name) > 1:
94-
return docker_error_message(schema.DockerRegistryError.NAME_UNKNOWN, deprecated=True)
93+
return docker_error_message(schema.DockerRegistryError.NAME_UNKNOWN)
9594
else:
9695
environment_name = image_name[0]
9796

@@ -100,7 +99,7 @@ def get_docker_image_manifest(conda_store, image, tag, timeout=10 * 60):
10099
conda_store.db, namespace=namespace, name=environment_name
101100
)
102101
if environment is None:
103-
return docker_error_message(schema.DockerRegistryError.NAME_UNKNOWN, deprecated=True)
102+
return docker_error_message(schema.DockerRegistryError.NAME_UNKNOWN)
104103

105104
if tag == "latest":
106105
build_key = environment.current_build.build_key
@@ -113,27 +112,27 @@ def get_docker_image_manifest(conda_store, image, tag, timeout=10 * 60):
113112

114113
build_id = orm.Build.parse_build_key(conda_store, build_key)
115114
if build_id is None:
116-
return docker_error_message(schema.DockerRegistryError.MANIFEST_UNKNOWN, deprecated=True)
115+
return docker_error_message(schema.DockerRegistryError.MANIFEST_UNKNOWN)
117116

118117
build = api.get_build(conda_store.db, build_id)
119118
if build is None:
120-
return docker_error_message(schema.DockerRegistryError.MANIFEST_UNKNOWN, deprecated=True)
119+
return docker_error_message(schema.DockerRegistryError.MANIFEST_UNKNOWN)
121120

122121
# waiting for image to be built by conda-store
123122
start_time = time.time()
124123
while not build.has_docker_manifest:
125124
conda_store.db.refresh(build)
126125
time.sleep(10)
127126
if time.time() - start_time > timeout:
128-
return docker_error_message(schema.DockerRegistryError.MANIFEST_UNKNOWN, deprecated=True)
127+
return docker_error_message(schema.DockerRegistryError.MANIFEST_UNKNOWN)
129128

130129
manifests_key = f"docker/manifest/{build_key}"
131130
return RedirectResponse(conda_store.storage.get_url(manifests_key), response_headers=response_headers)
132131

133132

134133
def get_docker_image_blob(conda_store, image, blobsum):
135134
blob_key = f"docker/blobs/{blobsum}"
136-
response_headers = {"Deprecation": "True"}
135+
response_headers = {"Deprecation": "True", "Sunset": "Mon, 16 Feb 2025 23:59:59 UTC"}
137136
return RedirectResponse(conda_store.storage.get_url(blob_key), response_headers=response_headers)
138137

139138

@@ -143,9 +142,9 @@ def v2(
143142
entity=Depends(dependencies.get_entity),
144143
):
145144
if entity is None:
146-
return docker_error_message(schema.DockerRegistryError.UNAUTHORIZED, deprecated=True)
145+
return docker_error_message(schema.DockerRegistryError.UNAUTHORIZED)
147146

148-
return _json_response({}, deprecated=True)
147+
return _json_response({})
149148

150149

151150
@router_registry.get(
@@ -160,10 +159,10 @@ def list_tags(
160159
):
161160
parts = rest.split("/")
162161
if len(parts) <= 3:
163-
return docker_error_message(schema.DockerRegistryError.UNSUPPORTED, deprecated=True)
162+
return docker_error_message(schema.DockerRegistryError.UNSUPPORTED)
164163

165164
if entity is None:
166-
return docker_error_message(schema.DockerRegistryError.UNAUTHORIZED, deprecated=True)
165+
return docker_error_message(schema.DockerRegistryError.UNAUTHORIZED)
167166

168167
image = "/".join(parts[:-2])
169168

@@ -180,7 +179,7 @@ def list_tags(
180179
)
181180
except HTTPException as e:
182181
if e.status_code == 403:
183-
return docker_error_message(schema.DockerRegistryError.DENIED, deprecated=True)
182+
return docker_error_message(schema.DockerRegistryError.DENIED)
184183

185184
# /v2/<image>/tags/list
186185
if parts[-2:] == ["tags", "list"]:

0 commit comments

Comments
 (0)