6.12. 使用 Red Hat Quay API 管理自动修剪策略
可以使用 Red Hat Quay API 为机构、存储库和用户创建、检索、更改和删除自动修剪策略。
流程
输入以下命令使用
POST /api/v1/repository
端点创建存储库:$ curl -X POST \ -H "Authorization: Bearer <bearer_token>" \ -H "Content-Type: application/json" \ -d '{ "repository": "<new_repository_name>", "visibility": "<private>", "description": "<This is a description of the new repository>." }' \ "https://quay-server.example.com/api/v1/repository"
输出示例
{"namespace": "quayadmin", "name": "<new_repository_name>", "kind": "image"}
您可以使用
GET /api/v1/repository
端点列出存储库。例如:$ curl -X GET \ -H "Authorization: Bearer <ACCESS_TOKEN>" \ "https://quay-server.example.com/api/v1/repository?public=true&starred=false&namespace=<NAMESPACE>"
输出示例
{"repositories": [{"namespace": "quayadmin", "name": "busybox", "description": null, "is_public": false, "kind": "image", "state": "MIRROR", "is_starred": false, "quota_report": {"quota_bytes": 2280675, "configured_quota": 2199023255552}}]}
通过
POST /api/v1/repository/{repository}/changevisibility
端点,可以将可见性从公共改为私有:$ curl -X POST \ -H "Authorization: Bearer <ACCESS_TOKEN>" \ -H "Content-Type: application/json" \ -d '{ "visibility": "private" }' \ "https://quay-server.example.com/api/v1/repository/<NAMESPACE>/<REPO_NAME>/changevisibility"
输出示例
{"success": true}
您可以检查 Red Hat Quay UI,或者您可以输入以下
GET /api/v1/repository/{repository}
命令来返回有关存储库的详情:$ curl -X GET -H "Authorization: Bearer <bearer_token>" "<quay-server.example.com>/api/v1/repository/<namespace>/<repository_name>"
输出示例
{"detail": "Not Found", "error_message": "Not Found", "error_type": "not_found", "title": "not_found", "type": "http://quay-server.example.com/api/v1/error/not_found", "status": 404}
存储库描述可以使用
PUT /api/v1/repository/{repository}
端点更新:$ curl -X PUT \ -H "Authorization: Bearer <bearer_token>" \ -H "Content-Type: application/json" \ -d '{ "description": "This is an updated description for the repository." }' \ "https://quay-server.example.com/api/v1/repository/<NAMESPACE>/<REPOSITORY>"
输出示例
{"success": true}
输入以下命令使用
DELETE /api/v1/repository/{repository}
端点删除存储库:$ curl -X DELETE -H "Authorization: Bearer <bearer_token>" "<quay-server.example.com>/api/v1/repository/<namespace>/<repository_name>"
此命令不会在 CLI 中返回输出。
6.12.1. 使用 Red Hat Quay API 为命名空间创建一个自动修剪策略
您可以使用 Red Hat Quay API 端点来管理命名空间自动运行策略。
先决条件
-
您已在
config.yaml
文件中设置了BROWSER_API_CALLS_XHR_ONLY: false
。 - 您已创建了 OAuth 访问令牌。
- 已登陆到 Red Hat Quay。
流程
输入以下
POST /api/v1/organization/{orgname}/autoprunepolicy/
命令,创建一个新策略来限制机构中允许的标签数:$ curl -X POST -H "Authorization: Bearer <access_token>" -H "Content-Type: application/json" -d '{"method": "number_of_tags", "value": 10}' http://<quay-server.example.com>/api/v1/organization/<organization_name>/autoprunepolicy/
另外,您可以在创建日期后将标签设置为在指定时间过期:
$ curl -X POST -H "Authorization: Bearer <access_token>" -H "Content-Type: application/json" -d '{ "method": "creation_date", "value": "7d"}' http://<quay-server.example.com>/api/v1/organization/<organization_name>/autoprunepolicy/
输出示例
{"uuid": "73d64f05-d587-42d9-af6d-e726a4a80d6e"}
可选。您可以将额外策略添加到机构中,并传递
tagPattern
和tagPatternMatches
字段,以仅修剪与给定 regex 模式匹配的标签。例如:$ curl -X POST \ -H "Authorization: Bearer <bearer_token>" \ -H "Content-Type: application/json" \ -d '{ "method": "creation_date", "value": "7d", "tagPattern": "^v*", "tagPatternMatches": <true> 1 }' \ "https://<quay-server.example.com>/api/v1/organization/<organization_name>/autoprunepolicy/"
- 1
- 将
tagPatternMatches
设置为true
会导致修剪与给定正则表达式模式匹配的标签。在本例中,与^v*
匹配的标签会被修剪。
输出示例
{"uuid": "ebf7448b-93c3-4f14-bf2f-25aa6857c7b0"}
您可以使用
PUT /api/v1/organization/{orgname}/autoprunepolicy/{policy_uuid}
命令更新机构的自动修剪策略。例如:$ curl -X PUT -H "Authorization: Bearer <bearer_token>" -H "Content-Type: application/json" -d '{ "method": "creation_date", "value": "4d", "tagPattern": "^v*", "tagPatternMatches": true }' "<quay-server.example.com>/api/v1/organization/<organization_name>/autoprunepolicy/<uuid>"
此命令不返回输出。继续下一步。
输入以下命令检查自动修剪策略:
$ curl -X GET -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/organization/<organization_name>/autoprunepolicy/
输出示例
{"policies": [{"uuid": "ebf7448b-93c3-4f14-bf2f-25aa6857c7b0", "method": "creation_date", "value": "4d", "tagPattern": "^v*", "tagPatternMatches": true}, {"uuid": "da4d0ad7-3c2d-4be8-af63-9c51f9a501bc", "method": "number_of_tags", "value": 10, "tagPattern": null, "tagPatternMatches": true}, {"uuid": "17b9fd96-1537-4462-a830-7f53b43f94c2", "method": "creation_date", "value": "7d", "tagPattern": "^v*", "tagPatternMatches": true}]}
您可以输入以下命令来删除您的机构的自动修剪策略。请注意,删除策略需要 UUID。
$ curl -X DELETE -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/organization/<organization_name>/autoprunepolicy/73d64f05-d587-42d9-af6d-e726a4a80d6e
6.12.2. 使用 API 为当前用户创建一个命名空间自动修剪策略
您可以使用 Red Hat Quay API 端点来管理您的帐户自动运行策略。
以下命令中使用 /user/
代表当前登录到 Red Hat Quay 的用户。
先决条件
-
您已在
config.yaml
文件中设置了BROWSER_API_CALLS_XHR_ONLY: false
。 - 您已创建了 OAuth 访问令牌。
- 已登陆到 Red Hat Quay。
流程
输入以下
POST
命令创建一个新策略,该策略限制了当前用户的标签数:$ curl -X POST -H "Authorization: Bearer <access_token>" -H "Content-Type: application/json" -d '{"method": "number_of_tags", "value": 10}' http://<quay-server.example.com>/api/v1/user/autoprunepolicy/
输出示例
{"uuid": "8c03f995-ca6f-4928-b98d-d75ed8c14859"}
输入以下命令检查自动修剪策略:
$ curl -X GET -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/user/autoprunepolicy/
或者,您可以包含 UUID:
$ curl -X GET -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/user/autoprunepolicy/8c03f995-ca6f-4928-b98d-d75ed8c14859
输出示例
{"policies": [{"uuid": "8c03f995-ca6f-4928-b98d-d75ed8c14859", "method": "number_of_tags", "value": 10}]}
您可以输入以下命令来删除自动修剪策略。请注意,删除策略需要 UUID。
$ curl -X DELETE -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/user/autoprunepolicy/8c03f995-ca6f-4928-b98d-d75ed8c14859
输出示例
{"uuid": "8c03f995-ca6f-4928-b98d-d75ed8c14859"}
6.12.3. 使用 Red Hat Quay API 为存储库创建自动修剪策略
您可以使用 Red Hat Quay API 端点来管理存储库自动运行策略。
先决条件
-
您已在
config.yaml
文件中设置了BROWSER_API_CALLS_XHR_ONLY: false
。 - 您已创建了 OAuth 访问令牌。
- 已登陆到 Red Hat Quay。
流程
输入以下
POST /api/v1/repository/{repository}/autoprunepolicy/
命令,创建一个新策略来限制机构中允许的标签数:$ curl -X POST -H "Authorization: Bearer <access_token>" -H "Content-Type: application/json" -d '{"method": "number_of_tags","value": 2}' http://<quay-server.example.com>/api/v1/repository/<organization_name>/<repository_name>/autoprunepolicy/
另外,您可以在创建日期后将标签设置为在指定时间过期:
$ curl -X POST -H "Authorization: Bearer <access_token>" -H "Content-Type: application/json" -d '{"method": "creation_date", "value": "7d"}' http://<quay-server.example.com>/api/v1/repository/<organization_name>/<repository_name>/autoprunepolicy/
输出示例
{"uuid": "ce2bdcc0-ced2-4a1a-ac36-78a9c1bed8c7"}
可选。您可以添加额外的策略,并在
tagPattern
和tagPatternMatches
字段中传递,以仅修剪与给定 regex 模式匹配的标签。例如:$ curl -X POST \ -H "Authorization: Bearer <access_token>" \ -H "Content-Type: application/json" \ -d '{ "method": "<creation_date>", "value": "<7d>", "tagPattern": "<^test.>*", "tagPatternMatches": <false> 1 }' \ "https://<quay-server.example.com>/api/v1/repository/<organization_name>/<repository_name>/autoprunepolicy/"
- 1
- 将
tagPatternMatches
设置为false
会导致所有与给定正则表达式模式匹配的标签都会被修剪。在本例中,除^test
以外的所有 标签都会被修剪。
输出示例
{"uuid": "b53d8d3f-2e73-40e7-96ff-736d372cd5ef"}
您可以使用
PUT /api/v1/repository/{repository}/autoprunepolicy/{policy_uuid}
命令为存储库更新您的策略,并传递 UUID。例如:$ curl -X PUT \ -H "Authorization: Bearer <bearer_token>" \ -H "Content-Type: application/json" \ -d '{ "method": "number_of_tags", "value": "5", "tagPattern": "^test.*", "tagPatternMatches": true }' \ "https://quay-server.example.com/api/v1/repository/<namespace>/<repo_name>/autoprunepolicy/<uuid>"
此命令不返回输出。继续下一步,以检查您的自动修剪策略。
输入以下命令检查自动修剪策略:
$ curl -X GET -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/repository/<organization_name>/<repository_name>/autoprunepolicy/
或者,您可以包含 UUID:
$ curl -X GET -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/repository/<organization_name>/<repository_name>/autoprunepolicy/ce2bdcc0-ced2-4a1a-ac36-78a9c1bed8c7
输出示例
{"policies": [{"uuid": "ce2bdcc0-ced2-4a1a-ac36-78a9c1bed8c7", "method": "number_of_tags", "value": 10}]}
您可以输入以下命令来删除自动修剪策略。请注意,删除策略需要 UUID。
$ curl -X DELETE -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/repository/<organization_name>/<repository_name>/autoprunepolicy/ce2bdcc0-ced2-4a1a-ac36-78a9c1bed8c7
输出示例
{"uuid": "ce2bdcc0-ced2-4a1a-ac36-78a9c1bed8c7"}
6.12.4. 在带有 API 的用户的存储库上创建自动修剪策略
您可以使用 Red Hat Quay API 端点为不属于您的用户帐户管理存储库上的自动运行策略,只要存储库上具有 admin
权限。
先决条件
-
您已在
config.yaml
文件中设置了BROWSER_API_CALLS_XHR_ONLY: false
。 - 您已创建了 OAuth 访问令牌。
- 已登陆到 Red Hat Quay。
-
在您要为其创建策略的存储库上具有
admin
权限。
流程
输入以下
POST /api/v1/repository/<user_account>/<user_repository>/autoprunepolicy/
命令,创建一个新策略来限制用户的标签数:$ curl -X POST -H "Authorization: Bearer <access_token>" -H "Content-Type: application/json" -d '{"method": "number_of_tags","value": 2}' https://<quay-server.example.com>/api/v1/repository/<user_account>/<user_repository>/autoprunepolicy/
输出示例
{"uuid": "7726f79c-cbc7-490e-98dd-becdc6fefce7"}
可选。您可以为当前用户添加额外的策略,并传递
tagPattern
和tagPatternMatches
字段,以仅修剪与给定 regex 模式匹配的标签。例如:$ curl -X POST \ -H "Authorization: Bearer <bearer_token>" \ -H "Content-Type: application/json" \ -d '{ "method": "creation_date", "value": "7d", "tagPattern": "^v*", "tagPatternMatches": true }' \ "http://<quay-server.example.com>/api/v1/repository/<user_account>/<user_repository>/autoprunepolicy/"
输出示例
{"uuid": "b3797bcd-de72-4b71-9b1e-726dabc971be"}
您可以使用
PUT /api/v1/repository/<user_account>/<user_repository>/autoprunepolicy/<policy_uuid>
; 命令为当前用户更新您的策略。例如:$ curl -X PUT -H "Authorization: Bearer <bearer_token>" -H "Content-Type: application/json" -d '{ "method": "creation_date", "value": "4d", "tagPattern": "^test.", "tagPatternMatches": true }' "https://<quay-server.example.com>/api/v1/repository/<user_account>/<user_repository>/autoprunepolicy/<policy_uuid>"
更新策略不会在 CLI 中返回输出。
输入以下命令检查自动修剪策略:
$ curl -X GET -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/repository/<user_account>/<user_repository>/autoprunepolicy/
或者,您可以包含 UUID:
$ curl -X GET -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/repository/<user_account>/<user_repository>/autoprunepolicy/7726f79c-cbc7-490e-98dd-becdc6fefce7
输出示例
{"uuid": "81ee77ec-496a-4a0a-9241-eca49437d15b", "method": "creation_date", "value": "7d", "tagPattern": "^v*", "tagPatternMatches": true}
您可以输入以下命令来删除自动修剪策略。请注意,删除策略需要 UUID。
$ curl -X DELETE -H "Authorization: Bearer <access_token>" http://<quay-server.example.com>/api/v1/repository/<user_account>/<user_repository>/autoprunepolicy/<policy_uuid>
输出示例
{"uuid": "7726f79c-cbc7-490e-98dd-becdc6fefce7"}