Commit 0ebc2c11 authored by Adrian DC's avatar Adrian DC
Browse files

fix(gitlab): support GitLab Premium delayed project/group deletions

Signed-off-by: default avatarAdrian DC <radian.dc@gmail.com>
parent fbf2a280
Loading
Loading
Loading
Loading
Loading
+30 −4
Changes for src/features/gitlab.py: 30 added lines, 4 removed lines.
Original line number Diff line number Diff line
@@ -84,12 +84,25 @@ class GitLabFeature:
        group = self.group(criteria)
        if not self.__dry_run:
            group.delete()
            sleep(1)
            try:
                group = self.group(criteria)
                group.delete(query_data={
                    'full_path': group.full_path,
                    'permanently_remove': 'true',
                })
            except (GitlabDeleteError, GitlabGetError):
                pass

            # Wait for deletion
            for _ in range(GitLabFeature.TIMEOUT_DELETION):
                try:
                    self.group(criteria)
                sleep(1)
                try:
                    group = self.group(criteria)
                    if group.marked_for_deletion_on:
                        break
                except AttributeError:
                    pass
                except GitlabGetError:
                    break

@@ -190,12 +203,25 @@ class GitLabFeature:
        project = self.project(criteria)
        if not self.__dry_run:
            project.delete()
            sleep(1)
            try:
                project = self.project(criteria)
                project.delete(query_data={
                    'full_path': project.path_with_namespace,
                    'permanently_remove': 'true',
                })
            except (GitlabDeleteError, GitlabGetError):
                pass

            # Wait for deletion
            for _ in range(GitLabFeature.TIMEOUT_DELETION):
                try:
                    self.project(criteria)
                sleep(1)
                try:
                    project = self.project(criteria)
                    if project.marked_for_deletion_on:
                        break
                except AttributeError:
                    pass
                except GitlabGetError:
                    break