class Awful::CloudFront

Constants

COLORS

Public Instance Methods

aliases(id, *list) click to toggle source
# File lib/awful/cloudfront.rb, line 69
def aliases(id, *list)
  if list.empty?
    cloudfront.get_distribution(id: id).distribution.distribution_config.aliases.items.output(&method(:puts))
  else
    response = cloudfront.get_distribution(id: id) # get current config
    config = response.distribution.distribution_config
    new = config[:aliases][:items]
    if options[:add]
      new += list           # append to existing
    elsif options[:delete]
      new -= list           # remove from existing
    else
      new = list            # replace existing
    end
    config[:aliases] = {quantity: new.count, items: new}
    cloudfront.update_distribution(id: id, distribution_config: config, if_match: response.etag)
  end
end
cloudfront() click to toggle source
# File lib/awful/cloudfront.rb, line 18
def cloudfront
  @cloudfront ||= Aws::CloudFront::Client.new
end
color(string) click to toggle source
# File lib/awful/cloudfront.rb, line 22
def color(string)
  set_color(string, COLORS.fetch(string.downcase.to_sym, :blue))
end
get(id) click to toggle source
# File lib/awful/cloudfront.rb, line 53
def get(id)
  cloudfront.get_distribution(id: id).distribution.output do |dist|
    puts YAML.dump(stringify_keys(dist.to_hash))
  end
end
ls() click to toggle source
# File lib/awful/cloudfront.rb, line 29
def ls
  marker = nil
  items = []
  loop do
    response = cloudfront.list_distributions(marker: marker).distribution_list
    items += response.items
    marker = response.next_marker
    break unless marker
  end

  items.output do |list|
    if options[:long]
      print_table list.map { |i|
        origins = i.origins.items.map(&:domain_name).join(',').slice(0..40)
        state = i.enabled ? :Enabled : :Disabled
        [ i.id, i.domain_name, i.comment, origins, color(i.status), color(state), i.last_modified_time ]
      }
    else
      puts list.map(&:id).sort
    end
  end
end
origins(id) click to toggle source
# File lib/awful/cloudfront.rb, line 90
def origins(id)
  cloudfront.get_distribution(id: id).distribution.distribution_config.origins.items.output do |list|
    if options[:long]
      print_table list.map { |o|
        c = o.custom_origin_config
        config = o.s3_origin_config ? [ 's3' ] : [ 'custom', c.origin_protocol_policy, c.http_port, c.https_port  ]
        [ o.id, o.domain_name, o.origin_path ] + config
      }
    else
      puts list.map(&:id).sort
    end
  end
end
status(id) click to toggle source
# File lib/awful/cloudfront.rb, line 60
def status(id)
  cloudfront.get_distribution(id: id).distribution.status.output do |status|
    puts color(status)
  end
end