Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'qa/qa/tools/delete_subgroups.rb')
-rw-r--r--qa/qa/tools/delete_subgroups.rb26
1 files changed, 16 insertions, 10 deletions
diff --git a/qa/qa/tools/delete_subgroups.rb b/qa/qa/tools/delete_subgroups.rb
index 35bff409647..c5d5a25f933 100644
--- a/qa/qa/tools/delete_subgroups.rb
+++ b/qa/qa/tools/delete_subgroups.rb
@@ -23,12 +23,13 @@ module QA
include Ci::Helpers
include Lib::Group
- def initialize
+ def initialize(delete_before: (Date.today - 3).to_s)
raise ArgumentError, "Please provide GITLAB_ADDRESS" unless ENV['GITLAB_ADDRESS']
raise ArgumentError, "Please provide GITLAB_QA_ACCESS_TOKEN" unless ENV['GITLAB_QA_ACCESS_TOKEN']
@api_client = Runtime::API::Client.new(ENV['GITLAB_ADDRESS'], personal_access_token: ENV['GITLAB_QA_ACCESS_TOKEN'])
@failed_deletion_attempts = []
+ @delete_before = Date.parse(delete_before)
end
def run
@@ -47,7 +48,7 @@ module QA
private
def delete_subgroups(group_id)
- return logger.info('Top level group not found') if group_id.nil?
+ return unless group_id
subgroups = fetch_subgroups(group_id)
return logger.info('No subgroups available') if subgroups.empty?
@@ -72,8 +73,13 @@ module QA
while page_no.present?
subgroups_response = get Runtime::API::Request.new(@api_client, api_path, page: page_no, per_page: '100').url
- # Do not delete subgroups that are less than 4 days old (for debugging purposes)
- subgroups.concat(JSON.parse(subgroups_response.body).select { |subgroup| Date.parse(subgroup["created_at"]) < Date.today - 3 })
+
+ if subgroups_response.code == HTTP_STATUS_OK
+ # Do not delete subgroups that are less than 4 days old (for debugging purposes)
+ subgroups.concat(parse_body(subgroups_response).select { |subgroup| Date.parse(subgroup[:created_at]) < @delete_before })
+ else
+ logger.error("Request for subgroups returned (#{subgroups_response.code}): `#{subgroups_response}` ")
+ end
page_no = subgroups_response.headers[:x_next_page].to_s
end
@@ -82,7 +88,7 @@ module QA
end
def subgroup_request(subgroup, **options)
- Runtime::API::Request.new(@api_client, "/groups/#{subgroup['id']}", **options).url
+ Runtime::API::Request.new(@api_client, "/groups/#{subgroup[:id]}", **options).url
end
def process_response_and_subgroup(response, subgroup, opts = {})
@@ -91,7 +97,7 @@ module QA
opts[:save_successes_to] << subgroup if opts[:save_successes_to]
else
logger.error("Failed - #{response}\n")
- @failed_deletion_attempts << { path: subgroup['full_path'], response: response }
+ @failed_deletion_attempts << { path: subgroup[:full_path], response: response }
end
end
@@ -101,9 +107,9 @@ module QA
logger.info("Marking #{subgroups.length} subgroups for deletion...\n")
subgroups.each do |subgroup|
- path = subgroup['full_path']
+ path = subgroup[:full_path]
- if subgroup['marked_for_deletion_on'].nil?
+ if subgroup[:marked_for_deletion_on].nil?
logger.info("Marking subgroup #{path} for deletion...")
response = delete(subgroup_request(subgroup))
@@ -121,7 +127,7 @@ module QA
response = get(subgroup_request(subgroup))
if response.code == 404
- logger.info("Subgroup #{subgroup['full_path']} is no longer available\n")
+ logger.info("Subgroup #{subgroup[:full_path]} is no longer available\n")
false
else
true
@@ -132,7 +138,7 @@ module QA
logger.info("Permanently deleting #{subgroups.length} subgroups...\n")
subgroups.each do |subgroup|
- path = subgroup['full_path']
+ path = subgroup[:full_path]
next unless subgroup_exists?(subgroup)