Class: CircleciTools::UsageReportService

Inherits:
Object
  • Object
show all
Includes:
Retryable
Defined in:
lib/circleci-tools/usage_report_service.rb

Constant Summary

Constants included from Retryable

Retryable::BACKOFF_FACTOR, Retryable::MAX_BACKOFF_TIME, Retryable::MAX_RETRIES

Instance Method Summary collapse

Methods included from Retryable

#retry_logger, #with_retries

Constructor Details

#initialize(api_service, org_id, shared_org_ids = [], interval_seconds = 600, logger: Logger.new(STDOUT), log_level: Logger::INFO) ⇒ UsageReportService

Returns a new instance of UsageReportService.



15
16
17
18
19
20
21
22
23
# File 'lib/circleci-tools/usage_report_service.rb', line 15

def initialize(api_service, org_id, shared_org_ids = [], interval_seconds = 600, logger: Logger.new(STDOUT), log_level: Logger::INFO)
  @api_service = api_service
  @org_id = org_id
  @shared_org_ids = shared_org_ids
  @interval_seconds = interval_seconds
  @running = false
  @logger = logger
  @logger.level = log_level
end

Instance Method Details

#call(start_time: Time.now.utc - 3600, end_time: Time.now.utc, usage_export_job_id: nil) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/circleci-tools/usage_report_service.rb', line 25

def call(start_time: Time.now.utc - 3600, end_time: Time.now.utc, usage_export_job_id: nil)
  @logger.info("Starting usage report for org #{@org_id}...")
  @running = true

  end_time = Time.now.utc if end_time > Time.now.utc

  if usage_export_job_id
    @logger.info("Using existing usage export job ID: #{usage_export_job_id}")
    usage_data = poll_usage_export_job(usage_export_job_id)
    success = usage_data && usage_data['download_urls']
    @logger.debug("Usage data: #{usage_data}")
    files = success ? download_and_save_files(usage_data['download_urls'], start_time, end_time) : []
  else
    success, files = fetch_and_store_usage_report(start_time:, end_time:)
  end

  stop if success
  files
end

#stopObject



45
46
47
# File 'lib/circleci-tools/usage_report_service.rb', line 45

def stop
  @running = false
end