Class: Flapjack::Data::State

Inherits:
Object
  • Object
show all
Includes:
ActiveModel::Serializers::JSON, Extensions::Associations, Extensions::ShortName, Swagger::Blocks, Zermelo::Records::RedisSortedSet
Defined in:
lib/flapjack/data/state.rb

Constant Summary collapse

ACTIONS =
%w(acknowledgement test_notifications)

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.jsonapi_associationsObject



184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
# File 'lib/flapjack/data/state.rb', line 184

def self.jsonapi_associations
  unless instance_variable_defined?('@jsonapi_associations')
    @jsonapi_associations = {
      :check => Flapjack::Gateways::JSONAPI::Data::JoinDescriptor.new(
        :get => true,
        :number => :singular, :link => true, :includable => true,
        :descriptions => {
          :get => "Returns the check the state data describes."
        }
      )
    }
    populate_association_data(@jsonapi_associations)
  end
  @jsonapi_associations
end

.jsonapi_methodsObject



171
172
173
174
175
176
177
178
179
180
181
182
# File 'lib/flapjack/data/state.rb', line 171

def self.jsonapi_methods
  @jsonapi_methods ||= {
    :get => Flapjack::Gateways::JSONAPI::Data::MethodDescriptor.new(
      :attributes => [:created_at, :updated_at, :condition, :action,
                      :summary, :details, :perfdata],
      :descriptions => {
        :singular => "Get data for a single check state record.",
        :multiple => "Get data for check state records."
      }
    )
  }
end

.swagger_included_classesObject



108
109
110
111
112
113
114
115
116
117
118
119
120
# File 'lib/flapjack/data/state.rb', line 108

def self.swagger_included_classes
  # hack -- hardcoding for now
  [
    Flapjack::Data::Check,
    Flapjack::Data::Contact,
    Flapjack::Data::Medium,
    Flapjack::Data::Rule,
    Flapjack::Data::ScheduledMaintenance,
    Flapjack::Data::State,
    Flapjack::Data::Tag,
    Flapjack::Data::UnscheduledMaintenance
  ]
end

Instance Method Details

#is_unlinkedObject



202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
# File 'lib/flapjack/data/state.rb', line 202

def is_unlinked
  Flapjack.logger.debug "checking deletion of #{self.instance_variable_get('@attributes').inspect}"
  Flapjack.logger.debug "check #{self.check.nil?}"
  Flapjack.logger.debug "latest_notifications_check nil #{self.latest_notifications_check.nil?}"
  Flapjack.logger.debug "most_severe_check nil #{self.most_severe_check.nil?}"
  Flapjack.logger.debug "notification nil #{self.notification.nil?}"
  Flapjack.logger.debug "latest media empty #{self.latest_media.empty?}"

  return false unless self.check.nil? &&
    self.latest_notifications_check.nil? && self.most_severe_check.nil? &&
    self.notification.nil? && self.latest_media.empty?

  Flapjack.logger.debug "deleting"

  true
end

#perfdataObject

TODO handle JSON exception



78
79
80
81
82
83
84
# File 'lib/flapjack/data/state.rb', line 78

def perfdata
  if self.perfdata_json.nil?
    @perfdata = nil
    return
  end
  @perfdata ||= Flapjack.load_json(self.perfdata_json)
end

#perfdata=(data) ⇒ Object

example perfdata: time=0.486630s;;;0.000000 size=909B;;;0



87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# File 'lib/flapjack/data/state.rb', line 87

def perfdata=(data)
  if data.nil?
    self.perfdata_json = nil
    return
  end

  data = data.strip
  if data.length == 0
    self.perfdata_json = nil
    return
  end
  # Could maybe be replaced by a fancy regex
  @perfdata = data.split(' ').inject([]) do |item|
    parts = item.split('=')
    memo << {"key"   => parts[0].to_s,
             "value" => parts[1].nil? ? '' : parts[1].split(';')[0].to_s}
    memo
  end
  self.perfdata_json = @perfdata.nil? ? nil : Flapjack.dump_json(@perfdata)
end