Method: Stax::Stack#tail

Defined in:
lib/stax/stack/cfn.rb

#tailObject



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/stax/stack/cfn.rb', line 42

def tail
  trap('SIGINT', 'EXIT')    # clean exit with ctrl-c

  ## print some historical events
  events = Aws::Cfn.events(stack_name).first(options[:number] || 1)
  return unless events
  print_events(events)
  last_seen = events&.first&.event_id

  loop do
    sleep(1)
    events = []

    Aws::Cfn.events(stack_name).each do |e|
      (last_seen == e.event_id) ? break : events << e
    end

    unless events.empty?
      print_events(events)
      last_seen = events.first.event_id
    end

    ## get stack status and break if stack gone, or delete complete/failed
    s = Aws::Cfn.describe(stack_name)
    break if s.nil? || s.stack_status.end_with?('COMPLETE', 'FAILED')
  end
rescue ::Aws::CloudFormation::Errors::ValidationError => e
  puts e.message
end