From 3f09e31ea6fca88cad609267e7f3beb9fe43feda Mon Sep 17 00:00:00 2001 From: Brandon Mitchell Date: Mon, 28 Jun 2021 15:11:53 -0400 Subject: [PATCH 1/2] Fixing http status for PUT/PATCH APIs Signed-off-by: Brandon Mitchell --- docs/spec/api.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/spec/api.md b/docs/spec/api.md index aed326e1..9b75bf8b 100644 --- a/docs/spec/api.md +++ b/docs/spec/api.md @@ -3651,9 +3651,9 @@ The following parameters should be specified on the request: ``` 202 Accepted -Content-Length: 0 Location: /v2//blobs/uploads/ -Range: 0-0 +Range: bytes=0- +Content-Length: 0 Docker-Upload-UUID: ``` @@ -4379,7 +4379,7 @@ The following parameters should be specified on the request: ###### On Success: Data Accepted ``` -204 No Content +202 Accepted Location: /v2//blobs/uploads/ Range: 0- Content-Length: 0 @@ -4645,7 +4645,7 @@ The following parameters should be specified on the request: ###### On Success: Chunk Accepted ``` -204 No Content +202 Accepted Location: /v2//blobs/uploads/ Range: 0- Content-Length: 0 @@ -4925,7 +4925,7 @@ The following parameters should be specified on the request: ###### On Success: Upload Complete ``` -204 No Content +201 Created Location: Content-Range: - Content-Length: 0 From 9c7967a32dae63b6ba27bfa5bb994e4c8929335b Mon Sep 17 00:00:00 2001 From: Brandon Mitchell Date: Tue, 29 Jun 2021 14:16:33 -0400 Subject: [PATCH 2/2] Update PUT and PATCH APIs Signed-off-by: Brandon Mitchell --- docs/spec/api.md | 4 ++-- registry/api/v2/descriptors.go | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/spec/api.md b/docs/spec/api.md index 9b75bf8b..d63aea99 100644 --- a/docs/spec/api.md +++ b/docs/spec/api.md @@ -3652,7 +3652,7 @@ The following parameters should be specified on the request: ``` 202 Accepted Location: /v2//blobs/uploads/ -Range: bytes=0- +Range: 0- Content-Length: 0 Docker-Upload-UUID: ``` @@ -3663,9 +3663,9 @@ The following headers will be returned with the response: |Name|Description| |----|-----------| -|`Content-Length`|The `Content-Length` header must be zero and the body must be empty.| |`Location`|The location of the created upload. Clients should use the contents verbatim to complete the upload, adding parameters where required.| |`Range`|Range header indicating the progress of the upload. When starting an upload, it will return an empty range, since no content has been received.| +|`Content-Length`|The `Content-Length` header must be zero and the body must be empty.| |`Docker-Upload-UUID`|Identifies the docker upload uuid for the current request.| diff --git a/registry/api/v2/descriptors.go b/registry/api/v2/descriptors.go index f2ec769b..fce0ccda 100644 --- a/registry/api/v2/descriptors.go +++ b/registry/api/v2/descriptors.go @@ -1043,7 +1043,6 @@ var routeDescriptors = []RouteDescriptor{ Description: "The upload has been created. The `Location` header must be used to complete the upload. The response should be identical to a `GET` request on the contents of the returned `Location` header.", StatusCode: http.StatusAccepted, Headers: []ParameterDescriptor{ - contentLengthZeroHeader, { Name: "Location", Type: "url", @@ -1052,9 +1051,10 @@ var routeDescriptors = []RouteDescriptor{ }, { Name: "Range", - Format: "0-0", + Format: "0-", Description: "Range header indicating the progress of the upload. When starting an upload, it will return an empty range, since no content has been received.", }, + contentLengthZeroHeader, dockerUploadUUIDHeader, }, }, @@ -1237,7 +1237,7 @@ var routeDescriptors = []RouteDescriptor{ { Name: "Data Accepted", Description: "The stream of data has been accepted and the current progress is available in the range header. The updated upload location is available in the `Location` header.", - StatusCode: http.StatusNoContent, + StatusCode: http.StatusAccepted, Headers: []ParameterDescriptor{ { Name: "Location", @@ -1319,7 +1319,7 @@ var routeDescriptors = []RouteDescriptor{ { Name: "Chunk Accepted", Description: "The chunk of data has been accepted and the current progress is available in the range header. The updated upload location is available in the `Location` header.", - StatusCode: http.StatusNoContent, + StatusCode: http.StatusAccepted, Headers: []ParameterDescriptor{ { Name: "Location", @@ -1413,7 +1413,7 @@ var routeDescriptors = []RouteDescriptor{ { Name: "Upload Complete", Description: "The upload has been completed and accepted by the registry. The canonical location will be available in the `Location` header.", - StatusCode: http.StatusNoContent, + StatusCode: http.StatusCreated, Headers: []ParameterDescriptor{ { Name: "Location",