pydo.registry.run_garbage_collection()

Description

Garbage collection enables users to clear out unreferenced blobs (layer & manifest data) after deleting one or more manifests from a repository. If there are no unreferenced blobs resulting from the deletion of one or more manifests, garbage collection is effectively a noop. See here for more information about how and why you should clean up your container registry periodically.

To request a garbage collection run on your registry, send a POST request to /v2/registry/$REGISTRY_NAME/garbage-collection. This will initiate the following sequence of events on your registry.

  • Set the registry to read-only mode, meaning no further write-scoped JWTs will be issued to registry clients. Existing write-scoped JWTs will continue to work until they expire which can take up to 15 minutes.
  • Wait until all existing write-scoped JWTs have expired.
  • Scan all registry manifests to determine which blobs are unreferenced.
  • Delete all unreferenced blobs from the registry.
  • Record the number of blobs deleted and bytes freed, mark the garbage collection status as success.
  • Remove the read-only mode restriction from the registry, meaning write-scoped JWTs will once again be issued to registry clients.

Parameters

Name Type Required Description Default Value
registry_name string True The name of a container registry.

Request Sample

import os
from pydo import Client

client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))

resp = client.registry.run_garbage_collection(registry_name="example")

Responses

See the API spec for this endpoint to view additional detail on responses, headers, parameters, and more.

The response will be a JSON object with a key of garbage_collection. This will be a json object with attributes representing the currently-active garbage collection.

Click to expand an example response.
{
  "garbage_collection": {
    "uuid": "eff0feee-49c7-4e8f-ba5c-a320c109c8a8",
    "registry_name": "example",
    "status": "requested",
    "created_at": "2020-10-30T21:03:24Z",
    "updated_at": "2020-10-30T21:03:44Z",
    "blobs_deleted": 42,
    "freed_bytes": 667
  }
}

Unauthorized

Click to expand an example response.
{
  "id": "unauthorized",
  "message": "Unable to authenticate you."
}

The resource was not found.

Click to expand an example response.
{
  "id": "not_found",
  "message": "The resource you requested could not be found."
}

API Rate limit exceeded

Click to expand an example response.
{
  "id": "too_many_requests",
  "message": "API Rate limit exceeded."
}

Server error.

Click to expand an example response.
{
  "id": "server_error",
  "message": "Unexpected server-side error"
}

Unexpected error

Click to expand an example response.
{
  "id": "example_error",
  "message": "some error message"
}