Class: Gitlab::Cleanup::OrphanJobArtifactFinalObjects::GenerateList

Inherits:
Object
  • Object
show all
Includes:
StorageHelpers
Defined in:
lib/gitlab/cleanup/orphan_job_artifact_final_objects/generate_list.rb

Constant Summary collapse

UnsupportedProviderError =
Class.new(StandardError)
DEFAULT_FILENAME =
'orphan_job_artifact_final_objects.csv'
LAST_PAGE_MARKER_REDIS_KEY =
'orphan-job-artifact-objects-cleanup-last-page-marker'
PAGINATORS =
{
  google: Gitlab::Cleanup::OrphanJobArtifactFinalObjects::Paginators::Google,
  aws: Gitlab::Cleanup::OrphanJobArtifactFinalObjects::Paginators::Aws,
  azurerm: Gitlab::Cleanup::OrphanJobArtifactFinalObjects::Paginators::Azure
}.freeze

Instance Method Summary collapse

Methods included from StorageHelpers

#artifacts_directory, #bucket, #bucket_prefix, #configuration, #connection

Constructor Details

#initialize(provider: nil, filename: nil, force_restart: false, logger: Gitlab::AppLogger) ⇒ GenerateList

Returns a new instance of GenerateList.



20
21
22
23
24
25
# File 'lib/gitlab/cleanup/orphan_job_artifact_final_objects/generate_list.rb', line 20

def initialize(provider: nil, filename: nil, force_restart: false, logger: Gitlab::AppLogger)
  @paginator = determine_paginator!(provider)
  @force_restart = force_restart
  @logger = logger
  @filename = filename || DEFAULT_FILENAME
end

Instance Method Details

#run!Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/gitlab/cleanup/orphan_job_artifact_final_objects/generate_list.rb', line 27

def run!
  log_info('Looking for orphan job artifact objects under the `@final` directories')

  initialize_file

  each_batch do |fog_collection|
    BatchFromStorage.new(fog_collection, bucket_prefix: bucket_prefix).orphan_objects.each do |fog_file|
      log_orphan_object(fog_file)
    end
  end

  log_info("Done. All orphan objects are listed in #{filename}.")
ensure
  file&.close
end