Class: Awful::CloudFront

Inherits:
Cli show all
Defined in:
lib/awful/cloudfront.rb

Constant Summary collapse

COLORS =
{
  enabled:    :green,
  disabled:   :red,
  deployed:   :green,
  inprogress: :yellow,
}

Instance Method Summary collapse

Methods inherited from Cli

#initialize

Constructor Details

This class inherits a constructor from Awful::Cli

Instance Method Details

#aliases(id, *list) ⇒ Object



69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# 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

#get(id) ⇒ Object



53
54
55
56
57
# 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

#lsObject



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# 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) ⇒ Object



90
91
92
93
94
95
96
97
98
99
100
101
102
# 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) ⇒ Object



60
61
62
63
64
# 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