Class: CircleciTools::CloudWatchMetricsService

Inherits:
Object
  • Object
show all
Defined in:
lib/circleci-tools/cloudwatch_metrics_service.rb

Constant Summary collapse

UPLOAD_BATCH_SIZE =
20
METRICS_DIGEST_FILENAME =
'cloud-watch-metrics-digests.txt'

Instance Method Summary collapse

Constructor Details

#initialize(namespace: 'CircleCI', dry_run: false, logger: Logger.new(STDOUT), s3_bucket: nil) ⇒ CloudWatchMetricsService

Returns a new instance of CloudWatchMetricsService.



13
14
15
16
17
18
19
20
# File 'lib/circleci-tools/cloudwatch_metrics_service.rb', line 13

def initialize(namespace: 'CircleCI', dry_run: false, logger: Logger.new(STDOUT), s3_bucket: nil)
  @namespace = namespace
  @dry_run = dry_run
  @logger = logger
  @cloudwatch = Aws::CloudWatch::Client.new
  @s3_bucket = s3_bucket
  @s3_client = Aws::S3::Client.new if @s3_bucket
end

Instance Method Details

#upload_metrics(file_path) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/circleci-tools/cloudwatch_metrics_service.rb', line 22

def upload_metrics(file_path)
  @logger.info("Uploading metrics from #{file_path} to CloudWatch...")
  events = parse_csv(file_path)

  if @dry_run
    metrics = generate_metrics(events)
    puts JSON.pretty_generate(metrics)
  else
    events.group_by { |event| event[:project_name] }.each do |project_name, project_events|
      metrics = generate_metrics(project_events)
      upload_to_cloudwatch(project_name, metrics)
    end
  end
end