Class: Pangea::CLI::TofuEvents::Event

Inherits:
Object
  • Object
show all
Defined in:
lib/pangea/cli/tofu_events.rb

Overview

One parsed event from the NDJSON stream.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(hash) ⇒ Event

Returns a new instance of Event.



51
52
53
# File 'lib/pangea/cli/tofu_events.rb', line 51

def initialize(hash)
  @raw = hash
end

Instance Attribute Details

#rawObject (readonly)

Returns the value of attribute raw.



49
50
51
# File 'lib/pangea/cli/tofu_events.rb', line 49

def raw
  @raw
end

Instance Method Details

#changeObject



61
# File 'lib/pangea/cli/tofu_events.rb', line 61

def change      = @raw['change']

#changesObject



62
# File 'lib/pangea/cli/tofu_events.rb', line 62

def changes     = @raw['changes']

#diagnosticObject



59
# File 'lib/pangea/cli/tofu_events.rb', line 59

def diagnostic  = @raw['diagnostic']

#diagnostic?Boolean

Returns:

  • (Boolean)


65
# File 'lib/pangea/cli/tofu_events.rb', line 65

def diagnostic? = type == 'diagnostic'

#dropped_warning?Boolean

Returns:

  • (Boolean)


75
76
77
78
79
80
81
# File 'lib/pangea/cli/tofu_events.rb', line 75

def dropped_warning?
  return false unless diagnostic?
  d = diagnostic
  return false if d.nil? || d['severity'] != 'warning'
  summary = d['summary'].to_s
  DROPPED_WARNING_PATTERNS.any? { |p| summary.match?(p) }
end

#hookObject



60
# File 'lib/pangea/cli/tofu_events.rb', line 60

def hook        = @raw['hook']

#levelObject



56
# File 'lib/pangea/cli/tofu_events.rb', line 56

def level       = @raw['@level']

#messageObject



57
# File 'lib/pangea/cli/tofu_events.rb', line 57

def message     = @raw['@message']

#operationObject



63
# File 'lib/pangea/cli/tofu_events.rb', line 63

def operation   = @raw['operation']

#resource_addressObject



83
84
85
86
# File 'lib/pangea/cli/tofu_events.rb', line 83

def resource_address
  (hook || {}).dig('resource', 'addr') \
    || (change || {}).dig('resource', 'addr')
end

#timestampObject



58
# File 'lib/pangea/cli/tofu_events.rb', line 58

def timestamp   = @raw['@timestamp']

#transient_error?Boolean

Returns:

  • (Boolean)


67
68
69
70
71
72
73
# File 'lib/pangea/cli/tofu_events.rb', line 67

def transient_error?
  return false unless diagnostic?
  d = diagnostic
  return false if d.nil? || d['severity'] != 'error'
  blob = "#{d['summary']} #{d['detail']}"
  TRANSIENT_ERROR_PATTERNS.any? { |p| blob.match?(p) }
end

#typeObject



55
# File 'lib/pangea/cli/tofu_events.rb', line 55

def type        = @raw['type']