Skip to content

/pulp/api/v3/rpm/prune/ doesn't seem to prune stuff #4279

@praiskup

Description

@praiskup

Version
Current mtls (console) -- used by Fedora Copr.

Describe the bug
The prune API call seems to create a new repo version, but doesn't actually remove packages (despite claiming so).

To Reproduce

$ curl -v -X POST --cert our.crt  --key our-pulp.key  -H "Content-Type: application/json" -d @data.json  https://example.com/api/pulp/public-copr-stage/api/v3/rpm/prune/
$ cat data.json 
{
  "repo_hrefs": [
    "/api/pulp/public-copr-stage/api/v3/repositories/rpm/rpm/019bb6cb-7cfa-7a99-854a-4879c7d145e5/"
  ],
  "keep_days": 0,
  "dry_run": false
}

Expected behavior
~24 of 26 packages should be removed, and only the two newest NEVRAs are kept.

Additional context
The last repo versions created upon /prune/ api call look like:

[
  {
    "pulp_href": "/api/pulp/public-copr-stage/api/v3/repositories/rpm/rpm/../versions/7/",
    "prn": "prn:core.repositoryversion:019bc76f-9f5f-79fc-9219-1ff8e19d37fb",
    "pulp_created": "2026-01-16T15:32:19.938714Z",
    "pulp_last_updated": "2026-01-16T15:32:20.147914Z",
    "number": 7,
    "repository": "/api/pulp/public-copr-stage/api/v3/repositories/rpm/rpm/019bb6cb-7cfa-7a99-854a-4879c7d145e5/",
    "base_version": null,
    "content_summary": {
      "added": {},
      "removed": {
        "rpm.package": {
          "count": 2,
          "href": "/api/pulp/public-copr-stage/api/v3/content/rpm/packages/?repository_version_removed=/api/pulp/public-copr-stage/api/v3/repositories/rpm/rpm/019bb6cb-7cfa-7a99-854a-4879c7d145e5/versions/7/"
        }
      },
      "present": {
        "rpm.package": {
          "count": 26,
          "href": "/api/pulp/public-copr-stage/api/v3/content/rpm/packages/?repository_version=/api/pulp/public-copr-stage/api/v3/repositories/rpm/rpm/019bb6cb-7cfa-7a99-854a-4879c7d145e5/versions/7/"
        }
      }
    },
    "vuln_report": "/api/pulp/public-copr-stage/api/v3/vuln_report/?repo_versions=prn:core.repositoryversion:019bc76f-9f5f-79fc-9219-1ff8e19d37fb"
  },
  {
    "pulp_href": "/api/pulp/public-copr-stage/api/v3/repositories/rpm/rpm/019bb6cb-7cfa-7a99-854a-4879c7d145e5/versions/6/",
    "prn": "prn:core.repositoryversion:019bc6b6-c9d5-7ac5-b2c9-388a2f5b3e1b",
    "pulp_created": "2026-01-16T12:10:26.649674Z",
    "pulp_last_updated": "2026-01-16T12:10:26.879450Z",
    "number": 6,
    "repository": "/api/pulp/public-copr-stage/api/v3/repositories/rpm/rpm/019bb6cb-7cfa-7a99-854a-4879c7d145e5/",
    "base_version": null,
    "content_summary": {
      "added": {
        "rpm.package": {
          "count": 4,
          "href": "/api/pulp/public-copr-stage/api/v3/content/rpm/packages/?repository_version_added=/api/pulp/public-copr-stage/api/v3/repositories/rpm/rpm/019bb6cb-7cfa-7a99-854a-4879c7d145e5/versions/6/"
        }
      },
      "removed": {},
      "present": {
        "rpm.package": {
          "count": 26,
          "href": "/api/pulp/public-copr-stage/api/v3/content/rpm/packages/?repository_version=/api/pulp/public-copr-stage/api/v3/repositories/rpm/rpm/019bb6cb-7cfa-7a99-854a-4879c7d145e5/versions/6/"
        }
      }
    },
    "vuln_report": "/api/pulp/public-copr-stage/api/v3/vuln_report/?repo_versions=prn:core.repositoryversion:019bc6b6-c9d5-7ac5-b2c9-388a2f5b3e1b"
  }
]

We did the necessary API call together with @dralley on our previous 1:1 call.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions