Skip to content

Generator packages.list(iterator=True) fails to paginate when deleting packages #2268

Description

@andreirogov

Description of the problem, including code/CLI snippet

Generator for a project packages list does not return the complete list of packages when iterating through them with deletion.

Steps to reproduce:

  1. Upload more than 20 packages (e.g., 21 packages) to the project CI_PROJECT_ID
  2. Execute the code snippet to try to delete all the uploaded packages:
    import gitlab;
    from os import environ as env
    
    gl = gitlab.Gitlab(url=env['CI_SERVER_URL'], private_token=env['API_TOKEN'])
    project = gl.projects.get(env['CI_PROJECT_ID'])
    
    pkgs = project.packages.list(iterator=True)
    for pkg in pkgs:
        pkg.delete();
        print("Deleted package name=", pkg.name, " version=", pkg.version, sep='');
    

Notes:

  1. According to the doc, using generator list(iterator=True) is the recommended way to iterate through a large number of items.
  2. Returning the complete list with list(get_all=True) works as expected.
  3. If iterating using generator list(iterator=True) without deletion, generator returns the complete list, as expected.

Expected Behavior

Output:

Deleted package name=test version=1.1
Deleted package name=test version=1.2
Deleted package name=test version=1.3
Deleted package name=test version=1.4
Deleted package name=test version=1.5
Deleted package name=test version=1.6
Deleted package name=test version=1.7
Deleted package name=test version=1.8
Deleted package name=test version=1.9
Deleted package name=test version=1.10
Deleted package name=test version=1.11
Deleted package name=test version=1.12
Deleted package name=test version=1.13
Deleted package name=test version=1.14
Deleted package name=test version=1.15
Deleted package name=test version=1.16
Deleted package name=test version=1.17
Deleted package name=test version=1.18
Deleted package name=test version=1.19
Deleted package name=test version=1.20
Deleted package name=test version=1.21

Actual Behavior

Output:

Deleted package name=test version=1.1
Deleted package name=test version=1.2
Deleted package name=test version=1.3
Deleted package name=test version=1.4
Deleted package name=test version=1.5
Deleted package name=test version=1.6
Deleted package name=test version=1.7
Deleted package name=test version=1.8
Deleted package name=test version=1.9
Deleted package name=test version=1.10
Deleted package name=test version=1.11
Deleted package name=test version=1.12
Deleted package name=test version=1.13
Deleted package name=test version=1.14
Deleted package name=test version=1.15
Deleted package name=test version=1.16
Deleted package name=test version=1.17
Deleted package name=test version=1.18
Deleted package name=test version=1.19
Deleted package name=test version=1.20

Specifications

  • python-gitlab version: 3.8.0
  • API version you are using (v3/v4): v4
  • Gitlab server version (or gitlab.com): 14.8.6

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions