lib/flapjack/data/notification_rule.rb in flapjack-1.1.0 vs lib/flapjack/data/notification_rule.rb in flapjack-1.2.0rc1

- old
+ new

@@ -1,12 +1,10 @@ #!/usr/bin/env ruby -require 'oj' require 'active_support/time' require 'ice_cube' require 'flapjack/utility' -require 'flapjack/data/tag_set' module Flapjack module Data class NotificationRule @@ -106,24 +104,23 @@ logger.error e.backtrace.join("\n") end nil end - def to_json(*args) - self.class.hashify(:id, :contact_id, :tags, :regex_tags, :entities, :regex_entities, - :time_restrictions, :unknown_media, :warning_media, :critical_media, - :unknown_blackhole, :warning_blackhole, :critical_blackhole) {|k| - [k, self.send(k)] - }.to_json - end - def to_jsonapi(opts = {}) - self.class.hashify(:id, :tags, :regex_tags, :entities, :regex_entities, + json_data = self.class.hashify(:id, :tags, :regex_tags, :entities, :regex_entities, :time_restrictions, :unknown_media, :warning_media, :critical_media, :unknown_blackhole, :warning_blackhole, :critical_blackhole) {|k| - [k, self.send(k)] - }.merge(:links => {:contacts => [self.contact_id]}).to_json + case k + when :tags, :regex_tags + [k.to_s, self.send(k).to_a.sort] + else + [k.to_s, self.send(k)] + end + }.merge('links' => {'contacts' => [self.contact_id]}) + + Flapjack.dump_json(json_data) end # entity names match? def match_entity?(event_id) return false unless @entities @@ -201,14 +198,14 @@ # make some assumptions about the incoming data rule_data[:unknown_blackhole] = rule_data[:unknown_blackhole] || false rule_data[:warning_blackhole] = rule_data[:warning_blackhole] || false rule_data[:critical_blackhole] = rule_data[:critical_blackhole] || false if rule_data[:tags].is_a?(Array) - rule_data[:tags] = Flapjack::Data::TagSet.new(rule_data[:tags]) + rule_data[:tags] = Set.new(rule_data[:tags]) end if rule_data[:regex_tags].is_a?(Array) - rule_data[:regex_tags] = Flapjack::Data::TagSet.new(rule_data[:regex_tags]) + rule_data[:regex_tags] = Set.new(rule_data[:regex_tags]) end rule_data end def self.add_or_update(rule_data, options = {}) @@ -225,18 +222,18 @@ regex_tag_data = rule_data[:regex_tags].is_a?(Set) ? rule_data[:regex_tags].to_a : nil json_rule_data = { :id => rule_data[:id].to_s, :contact_id => rule_data[:contact_id].to_s, - :entities => Oj.dump(rule_data[:entities]), - :regex_entities => Oj.dump(rule_data[:regex_entities]), - :tags => Oj.dump(tag_data), - :regex_tags => Oj.dump(regex_tag_data), - :time_restrictions => Oj.dump(rule_data[:time_restrictions], :mode => :compat), - :unknown_media => Oj.dump(rule_data[:unknown_media]), - :warning_media => Oj.dump(rule_data[:warning_media]), - :critical_media => Oj.dump(rule_data[:critical_media]), + :entities => Flapjack.dump_json(rule_data[:entities]), + :regex_entities => Flapjack.dump_json(rule_data[:regex_entities]), + :tags => Flapjack.dump_json(tag_data), + :regex_tags => Flapjack.dump_json(regex_tag_data), + :time_restrictions => Flapjack.dump_json(rule_data[:time_restrictions]), + :unknown_media => Flapjack.dump_json(rule_data[:unknown_media]), + :warning_media => Flapjack.dump_json(rule_data[:warning_media]), + :critical_media => Flapjack.dump_json(rule_data[:critical_media]), :unknown_blackhole => rule_data[:unknown_blackhole], :warning_blackhole => rule_data[:warning_blackhole], :critical_blackhole => rule_data[:critical_blackhole], } @@ -321,17 +318,17 @@ d[:regex_entities].all? {|e| e.is_a?(String)} ) } => "regex_entities must be a list of strings", proc {|d| !d.has_key?(:tags) || ( d[:tags].nil? || - d[:tags].is_a?(Flapjack::Data::TagSet) && + d[:tags].is_a?(Set) && d[:tags].all? {|et| et.is_a?(String)} ) } => "tags must be a tag_set of strings", proc {|d| !d.has_key?(:regex_tags) || ( d[:regex_tags].nil? || - d[:regex_tags].is_a?(Flapjack::Data::TagSet) && + d[:regex_tags].is_a?(Set) && d[:regex_tags].all? {|et| et.is_a?(String)} ) } => "regex_tags must be a tag_set of strings", # conversion to a schedule needs a time zone, any one will do proc {|d| !d.has_key?(:time_restrictions) || @@ -398,19 +395,19 @@ def refresh rule_data = @redis.hgetall("notification_rule:#{@id}") @contact_id = rule_data['contact_id'] - tags = Oj.load(rule_data['tags'] || '') - @tags = tags ? Flapjack::Data::TagSet.new(tags) : nil - regex_tags = Oj.load(rule_data['regex_tags'] || '') - @regex_tags = regex_tags ? Flapjack::Data::TagSet.new(regex_tags) : nil - @entities = Oj.load(rule_data['entities'] || '') - @regex_entities = Oj.load(rule_data['regex_entities'] || '') - @time_restrictions = Oj.load(rule_data['time_restrictions'] || '') - @unknown_media = Oj.load(rule_data['unknown_media'] || '') - @warning_media = Oj.load(rule_data['warning_media'] || '') - @critical_media = Oj.load(rule_data['critical_media'] || '') + tags = Flapjack.load_json(rule_data['tags'] || '') + @tags = tags ? Set.new(tags) : nil + regex_tags = Flapjack.load_json(rule_data['regex_tags'] || '') + @regex_tags = regex_tags ? Set.new(regex_tags) : nil + @entities = Flapjack.load_json(rule_data['entities'] || '') + @regex_entities = Flapjack.load_json(rule_data['regex_entities'] || '') + @time_restrictions = Flapjack.load_json(rule_data['time_restrictions'] || '') + @unknown_media = Flapjack.load_json(rule_data['unknown_media'] || '') + @warning_media = Flapjack.load_json(rule_data['warning_media'] || '') + @critical_media = Flapjack.load_json(rule_data['critical_media'] || '') @unknown_blackhole = ((rule_data['unknown_blackhole'] || 'false').downcase == 'true') @warning_blackhole = ((rule_data['warning_blackhole'] || 'false').downcase == 'true') @critical_blackhole = ((rule_data['critical_blackhole'] || 'false').downcase == 'true') end