From 87cc722021b5d5bfaa94f935d51d4a973f8847a7 Mon Sep 17 00:00:00 2001 From: sanne Date: Thu, 14 Oct 2021 11:10:00 +0200 Subject: [PATCH] cloudapi/v2: Plural path section when querying a collection --- internal/cloudapi/v2/openapi.v2.gen.go | 26 +++++++++++++------------- internal/cloudapi/v2/openapi.v2.yml | 4 ++-- internal/cloudapi/v2/v2.go | 6 +++--- internal/cloudapi/v2/v2_test.go | 18 +++++++++--------- test/cases/api.sh | 4 ++-- test/cases/api_v2.sh | 8 ++++---- 6 files changed, 33 insertions(+), 33 deletions(-) diff --git a/internal/cloudapi/v2/openapi.v2.gen.go b/internal/cloudapi/v2/openapi.v2.gen.go index 07225e93c..511c12839 100644 --- a/internal/cloudapi/v2/openapi.v2.gen.go +++ b/internal/cloudapi/v2/openapi.v2.gen.go @@ -320,10 +320,10 @@ type ServerInterface interface { // (POST /compose) PostCompose(ctx echo.Context) error // The status of a compose - // (GET /compose/{id}) + // (GET /composes/{id}) GetComposeStatus(ctx echo.Context, id string) error // Get the metadata for a compose. - // (GET /compose/{id}/metadata) + // (GET /composes/{id}/metadata) GetComposeMetadata(ctx echo.Context, id string) error // Get a list of all possible errors // (GET /errors) @@ -467,8 +467,8 @@ func RegisterHandlers(router EchoRouter, si ServerInterface) { } router.POST("/compose", wrapper.PostCompose) - router.GET("/compose/:id", wrapper.GetComposeStatus) - router.GET("/compose/:id/metadata", wrapper.GetComposeMetadata) + router.GET("/composes/:id", wrapper.GetComposeStatus) + router.GET("/composes/:id/metadata", wrapper.GetComposeMetadata) router.GET("/errors", wrapper.GetErrorList) router.GET("/errors/:id", wrapper.GetError) router.GET("/openapi", wrapper.GetOpenapi) @@ -528,15 +528,15 @@ var swaggerSpec = []string{ "AMeFLrR6bN9ZP4QzfU/CUQRqie2hVi8zLiNv4n1iQlrRPGMHIORbFq3MTYtOwLRHZVlCTI+0+y97ibJ5", "JbfzHrJ+H7qu25s6eM3Tk4ypvVDUBr3+S3O/jAzjhsrNIIqxQEJiLiFS2zjq9V6Mv72fafO+pKb/a3e6", "eN5k+Pd/f/5nuVRG8hUoIgIRg8ZwH/7+3D9TnMuYcfJkbhIy4CpvQ6VxGiSjPwLJV8qWtNwHo4TxH2EC", - "nyk8ZhBKiBCoOYiFYc6VW1RjrT7Giij75W5953siT1OsqqsiaBTBRa0rIk33O4nW+hBz3d29B2nuRfSZ", - "rG/xkD37EeOaYAIKmaWm73a0oYRJHoFAyxhkDFxNpszQKlSoMwyIIGqHm/cg65f6fu2l8Rf3K6qSsAEr", - "GVro20L9gleF2M0DXvuMqBpeqs95X/xRzV0rdvVeOnaVvbSWAdX18h8LXUXceI1ar1HroKh10wg8W8OX", - "7sAUvbedcayYaAjOCSUibkQvQPCIQ4lUvqmcmjCKOMicU4hQBKoGEojR6mPj4iWzuS/dEc3KHuFrPNsb", - "zzYP6trGdVPdyuJdhXksXmzla5h7DXN/jjDXik3KoHHFkFW408RFJb61QszmaVkruLgk20zp6lugbY2j", - "yjx9TfS7uv5GBpe1m2e6bI6sMl7d7D/jZsbQ/3xOhksDwkmCMiYEmSVQWtPGzfbXRJiaJhMNyz91Mcg2", - "L/dmK6SPTrejHpYBlHR/66k//IPP8HIrX3301Uef46NmbZW09suyZbr9/LuyU9xWXQdryWlvRYQipQP7", - "wPHPmDnsFGddXjWaOFPvdeOMdNRyERP7t2E4I11dzQS6oQ48KB4edx8GXlOKD/aRIYvy0LyMNbx0PtFm", - "JSRewG9iOJV4QeiizeaZdLSuafHW0Vvfrf8/AAD//8f1mrXcPgAA", + "nyk8ZhBKiBCoOYiFYc6VW1RjrT7Giij75W5953siT1OsqqsiaBTBRa0rIo3ofifRWp9irsu79yDNxYg+", + "lPU1HrKHP2JcU0xAQbPk9OWOtpQwySMQaBmDjIGryZQZWoUOdYoBEUTtePMeZP1W3689Nf7ifkZVEjZg", + "JUMLfV2on/CqGLt5wWvfEVXjS/U974u/qrlrBa/eSwevspnWsqC6Xv5jsasIHK9h6zVsHRS2bhqBZ3v8", + "0j2Yovu2M5AVEw3FOaFExI3wBQgecSiRyjiVVxNGEQeZcwoRikBVQQIxWn1uXLxlNjemO8JZ2SV8DWh7", + "A9rmSV3bum6qW1m8rDDPxYutfI1zr3HuzxHnWrFJGTSuGLKKd5q4qMS3VojZPC5rBReXZJspXX0PtK11", + "VJmnL4p+V9ffyOCydvNQl82RVcarm/1n3MwY+p/PyXBpQDhJUMaEILMESmvauNn+oghT02aiYfnHLgbZ", + "5u3ebIX00el21MMygJLubz31h3/wGV5u5auPvvroc3zUrK2S1n5ZNk23n39XdorbqutgLTntrYhQpHRg", + "nzj+GTOHneKsy8tGE2fq3W6ckY5aLmJi/zoMZ6Srq5lAt9SBB8XT4+7DwGtK8cE+M2RRHpq3sYaXzifa", + "rITEC/hNDKcSLwhdtNk8k47WNS1eO3rru/X/BwAA///p3GBJ3j4AAA==", } // GetSwagger returns the Swagger specification corresponding to the generated code diff --git a/internal/cloudapi/v2/openapi.v2.yml b/internal/cloudapi/v2/openapi.v2.yml index 64f7f2d84..9f4e435d8 100644 --- a/internal/cloudapi/v2/openapi.v2.yml +++ b/internal/cloudapi/v2/openapi.v2.yml @@ -33,7 +33,7 @@ paths: schema: $ref: '#/components/schemas/Error' - /compose/{id}: + /composes/{id}: get: operationId: getComposeStatus summary: The status of a compose @@ -89,7 +89,7 @@ paths: schema: $ref: '#/components/schemas/Error' - /compose/{id}/metadata: + /composes/{id}/metadata: get: operationId: getComposeMetadata summary: Get the metadata for a compose. diff --git a/internal/cloudapi/v2/v2.go b/internal/cloudapi/v2/v2.go index bb7ce6e98..7520f03e3 100644 --- a/internal/cloudapi/v2/v2.go +++ b/internal/cloudapi/v2/v2.go @@ -512,7 +512,7 @@ func (h *apiHandlers) GetComposeStatus(ctx echo.Context, id string) error { return ctx.JSON(http.StatusOK, ComposeStatus{ ObjectReference: ObjectReference{ - Href: fmt.Sprintf("/api/image-builder-composer/v2/compose/%v", jobId), + Href: fmt.Sprintf("/api/image-builder-composer/v2/composes/%v", jobId), Id: jobId.String(), Kind: "ComposeStatus", }, @@ -545,7 +545,7 @@ func composeStatusFromJobStatus(js *worker.JobStatus, result *worker.OSBuildJobR return ImageStatusValue_failure } -// ComposeMetadata handles a /compose/{id}/metadata GET request +// ComposeMetadata handles a /composes/{id}/metadata GET request func (h *apiHandlers) GetComposeMetadata(ctx echo.Context, id string) error { jobId, err := uuid.Parse(id) if err != nil { @@ -645,7 +645,7 @@ func (h *apiHandlers) GetComposeMetadata(ctx echo.Context, id string) error { resp := &ComposeMetadata{ ObjectReference: ObjectReference{ - Href: fmt.Sprintf("/api/image-builder-composer/v2/compose/%v/metadata", jobId), + Href: fmt.Sprintf("/api/image-builder-composer/v2/composes/%v/metadata", jobId), Id: jobId.String(), Kind: "ComposeMetadata", }, diff --git a/internal/cloudapi/v2/v2_test.go b/internal/cloudapi/v2/v2_test.go index 11644984d..1cde229e6 100644 --- a/internal/cloudapi/v2/v2_test.go +++ b/internal/cloudapi/v2/v2_test.go @@ -279,9 +279,9 @@ func TestComposeStatusSuccess(t *testing.T) { require.NoError(t, err) require.Equal(t, "osbuild", jobType) - test.TestRoute(t, srv.Handler("/api/image-builder-composer/v2"), false, "GET", fmt.Sprintf("/api/image-builder-composer/v2/compose/%v", jobId), ``, http.StatusOK, fmt.Sprintf(` + test.TestRoute(t, srv.Handler("/api/image-builder-composer/v2"), false, "GET", fmt.Sprintf("/api/image-builder-composer/v2/composes/%v", jobId), ``, http.StatusOK, fmt.Sprintf(` { - "href": "/api/image-builder-composer/v2/compose/%v", + "href": "/api/image-builder-composer/v2/composes/%v", "kind": "ComposeStatus", "id": "%v", "image_status": {"status": "building"} @@ -295,15 +295,15 @@ func TestComposeStatusSuccess(t *testing.T) { err = wrksrv.FinishJob(token, res) require.NoError(t, err) - test.TestRoute(t, srv.Handler("/api/image-builder-composer/v2"), false, "GET", fmt.Sprintf("/api/image-builder-composer/v2/compose/%v", jobId), ``, http.StatusOK, fmt.Sprintf(` + test.TestRoute(t, srv.Handler("/api/image-builder-composer/v2"), false, "GET", fmt.Sprintf("/api/image-builder-composer/v2/composes/%v", jobId), ``, http.StatusOK, fmt.Sprintf(` { - "href": "/api/image-builder-composer/v2/compose/%v", + "href": "/api/image-builder-composer/v2/composes/%v", "kind": "ComposeStatus", "id": "%v", "image_status": {"status": "success"} }`, jobId, jobId)) - test.TestRoute(t, srv.Handler("/api/image-builder-composer/v2"), false, "GET", fmt.Sprintf("/api/image-builder-composer/v2/compose/%v/metadata", jobId), ``, http.StatusInternalServerError, ` + test.TestRoute(t, srv.Handler("/api/image-builder-composer/v2"), false, "GET", fmt.Sprintf("/api/image-builder-composer/v2/composes/%v/metadata", jobId), ``, http.StatusInternalServerError, ` { "href": "/api/image-builder-composer/v2/errors/1012", "id": "1012", @@ -345,9 +345,9 @@ func TestComposeStatusFailure(t *testing.T) { require.NoError(t, err) require.Equal(t, "osbuild", jobType) - test.TestRoute(t, srv.Handler("/api/image-builder-composer/v2"), false, "GET", fmt.Sprintf("/api/image-builder-composer/v2/compose/%v", jobId), ``, http.StatusOK, fmt.Sprintf(` + test.TestRoute(t, srv.Handler("/api/image-builder-composer/v2"), false, "GET", fmt.Sprintf("/api/image-builder-composer/v2/composes/%v", jobId), ``, http.StatusOK, fmt.Sprintf(` { - "href": "/api/image-builder-composer/v2/compose/%v", + "href": "/api/image-builder-composer/v2/composes/%v", "kind": "ComposeStatus", "id": "%v", "image_status": {"status": "building"} @@ -355,9 +355,9 @@ func TestComposeStatusFailure(t *testing.T) { err = wrksrv.FinishJob(token, nil) require.NoError(t, err) - test.TestRoute(t, srv.Handler("/api/image-builder-composer/v2"), false, "GET", fmt.Sprintf("/api/image-builder-composer/v2/compose/%v", jobId), ``, http.StatusOK, fmt.Sprintf(` + test.TestRoute(t, srv.Handler("/api/image-builder-composer/v2"), false, "GET", fmt.Sprintf("/api/image-builder-composer/v2/composes/%v", jobId), ``, http.StatusOK, fmt.Sprintf(` { - "href": "/api/image-builder-composer/v2/compose/%v", + "href": "/api/image-builder-composer/v2/composes/%v", "kind": "ComposeStatus", "id": "%v", "image_status": {"status": "failure"} diff --git a/test/cases/api.sh b/test/cases/api.sh index cd2ea5803..b6b9e7cd2 100755 --- a/test/cases/api.sh +++ b/test/cases/api.sh @@ -670,7 +670,7 @@ function waitForState() { local VERSION="${2:-v1}" local URL=https://localhost/api/composer/v1/compose/"$COMPOSE_ID" if [ "$VERSION" = "v2" ]; then - URL=https://localhost/api/image-builder-composer/v2/compose/"$COMPOSE_ID" + URL=https://localhost/api/image-builder-composer/v2/composes/"$COMPOSE_ID" fi while true @@ -974,7 +974,7 @@ function verifyInAWSS3() { --cacert /etc/osbuild-composer/ca-crt.pem \ --key /etc/osbuild-composer/client-key.pem \ --cert /etc/osbuild-composer/client-crt.pem \ - https://localhost/api/image-builder-composer/v2/compose/"$COMPOSE_ID"/metadata | jq -r '.ostree_commit') + https://localhost/api/image-builder-composer/v2/composes/"$COMPOSE_ID"/metadata | jq -r '.ostree_commit') if [[ "${API_COMMIT_ID_V2}" != "${TAR_COMMIT_ID}" ]]; then echo "Commit ID returned from API v2 does not match Commit ID in archive 😠" diff --git a/test/cases/api_v2.sh b/test/cases/api_v2.sh index c8010a706..0d6f474cd 100755 --- a/test/cases/api_v2.sh +++ b/test/cases/api_v2.sh @@ -403,7 +403,7 @@ function waitForState() { --cacert /etc/osbuild-composer/ca-crt.pem \ --key /etc/osbuild-composer/client-key.pem \ --cert /etc/osbuild-composer/client-crt.pem \ - https://localhost/api/image-builder-composer/v2/compose/"$COMPOSE_ID") + https://localhost/api/image-builder-composer/v2/composes/"$COMPOSE_ID") COMPOSE_STATUS=$(echo "$OUTPUT" | jq -r '.image_status.status') UPLOAD_STATUS=$(echo "$OUTPUT" | jq -r '.image_status.upload_status.status') @@ -615,7 +615,7 @@ function verifyPackageList() { --cacert /etc/osbuild-composer/ca-crt.pem \ --key /etc/osbuild-composer/client-key.pem \ --cert /etc/osbuild-composer/client-crt.pem \ - https://localhost/api/image-builder-composer/v2/compose/"$COMPOSE_ID"/metadata --output "${ARTIFACTS}/metadata.json" + https://localhost/api/image-builder-composer/v2/composes/"$COMPOSE_ID"/metadata --output "${ARTIFACTS}/metadata.json" local PACKAGENAMES PACKAGENAMES=$(jq -rM '.packages[].name' "${ARTIFACTS}/metadata.json") @@ -720,14 +720,14 @@ TOKEN="$(curl localhost:8081/token | jq -r .access_token)" --output /dev/null \ --write-out '%{http_code}' \ --header "Authorization: Bearer $TOKEN" \ - http://localhost:443/api/image-builder-composer/v2/openapi)" = "200" ] + http://localhost:443/api/image-builder-composer/v2/composes/"$COMPOSE_ID")" = "200" ] [ "$(curl \ --silent \ --output /dev/null \ --write-out '%{http_code}' \ --header "Authorization: Bearer badtoken" \ - http://localhost:443/api/image-builder-composer/v2/openapi)" = "401" ] + http://localhost:443/api/image-builder-composer/v2/composes/"$COMPOSE_ID")" = "401" ] sudo systemctl start osbuild-remote-worker@https:--localhost:8700.service sudo systemctl is-active --quiet osbuild-remote-worker@https:--localhost:8700.service