Module: CloudFrontInterativeInvalidator

Defined in:
lib/cloud_front_interative_invalidator.rb,
lib/cloud_front_interative_invalidator/version.rb

Constant Summary collapse

VERSION =
"0.0.1"

Class Method Summary collapse

Class Method Details

.create_invalidation(distribution_id) ⇒ Object



58
59
60
61
62
63
64
65
# File 'lib/cloud_front_interative_invalidator.rb', line 58

def self.create_invalidation(distribution_id)
  puts "Input the path to be invalidated:"
  paths = []
  paths << gets.chomp
  options = {distribution_id: distribution_id, invalidation_batch: { paths: { quantity: paths.size, items: paths } , caller_reference: rand.to_s }}
  tp AWS::CloudFront::Client.new.create_invalidation(options).data
  show_distribution(distribution_id)
end

.get_invalidation(distribution_id, invalidation_id) ⇒ Object



67
68
69
# File 'lib/cloud_front_interative_invalidator.rb', line 67

def self.get_invalidation(distribution_id, invalidation_id)
  tp AWS::CloudFront::Client.new.get_invalidation(distribution_id: distribution_id, id: invalidation_id).data
end

.list_distributions(options = {}) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/cloud_front_interative_invalidator.rb', line 18

def self.list_distributions(options={})
  distributions = []
  AWS::CloudFront::Client.new.list_distributions[:items].each_with_index do |item, index|
    distributions << { number: index + 1, id: item[:id], domain_name: item[:domain_name], origins: item[:origins][:items].map{|i| i[:domain_name]}.join(',') }
  end
  tp distributions

  puts "Input the number of the distribution:"
  distribution_index = gets.to_i - 1
  distribution_id = distributions[distribution_index][:id]
  show_distribution(distribution_id) if distribution_id
end

.list_invalidations(distribution_id = nil) ⇒ Object



47
48
49
50
51
52
53
54
55
56
# File 'lib/cloud_front_interative_invalidator.rb', line 47

def self.list_invalidations(distribution_id=nil)
  begin
    invalidations = AWS::CloudFront::Client.new.list_invalidations(distribution_id: distribution_id)
    tp invalidations[:items]
    puts "Refresh? (y/n)"
  end while gets.chomp.downcase == 'y'
  invalidation_id = nil
  #get_invalidation(distribution_id, invalidation_id)
  show_distribution(distribution_id)
end

.show_distribution(distribution_id) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/cloud_front_interative_invalidator.rb', line 31

def self.show_distribution(distribution_id)
  #tp AWS::CloudFront::Client.new.get_distribution(id: distribution_id).data
  puts "Distribution #{distribution_id} selected."
  puts "l/list: list invalidations"
  puts "c/create: create invalidations"
  puts "q/quit: quit current step"
  actions = {
    /^(l|list)$/ => :list_invalidations,
    /^(c|create)$/ => :create_invalidation,
    /^(q|quit)$/ => :list_distributions,
  }
  action = gets.chomp
  method_name = actions.select{|k,v| k.match(action)}.values.first
  send(method_name, distribution_id)
end

.start(params = {}) ⇒ Object



14
15
16
# File 'lib/cloud_front_interative_invalidator.rb', line 14

def self.start(params={})
  list_distributions
end