Sha256: c4cbaccb7d01ccd608c8f6ba581fc2c76321130c9ead4b8e5191dac2975f3362

Contents?: true

Size: 1.76 KB

Versions: 11

Compression:

Stored size: 1.76 KB

Contents

class ZabbixApi
  class Triggers < Basic

    def method_name
      "trigger"
    end

    def indentify
      "description"
    end

    def dump_by_id(data)
      log "[DEBUG] Call dump_by_id with parametrs: #{data.inspect}"

      @client.api_request(
        :method => "trigger.get",
        :params => {
          :filter => {
            key.to_sym => data[key.to_sym]
          },
          :output => "extend",
          :select_items => "extend",
          :select_functions => "extend"
        }
      )
    end

    def safe_update(data)
      log "[DEBUG] Call update with parametrs: #{data.inspect}"

      dump = {}
      item_id = data[key.to_sym].to_i
      dump_by_id(key.to_sym => data[key.to_sym]).each do |item|
        dump = symbolize_keys(item) if item[key].to_i == data[key.to_sym].to_i
      end

      expression = dump[:items][0][:key_]+"."+dump[:functions][0][:function]+"("+dump[:functions][0][:parameter]+")"
      dump[:expression] = dump[:expression].gsub(/\{(\d*)\}/,"{#{expression}}") #TODO ugly regexp
      dump.delete(:functions)
      dump.delete(:items)

      old_expression = data[:expression]
      data[:expression] = data[:expression].gsub(/\{.*\:/,"{") #TODO ugly regexp
      data.delete(:templateid)

      log "[DEBUG] expression: #{dump[:expression]}\n data: #{data[:expression]}"

      if hash_equals?(dump, data)
        log "[DEBUG] Equal keys #{dump} and #{data}, skip update"
        item_id
      else
        data[:expression] = old_expression
        # disable old trigger
        log "[DEBUG] disable :" + @client.api_request(:method => "#{method_name}.update", :params => [{:triggerid=> data[:triggerid], :status => "1" }]).inspect
        # create new trigger
        data.delete(:triggerid)
        create(data)
      end

    end

  end
end

Version data entries

11 entries across 11 versions & 2 rubygems

Version Path
logstash-filter-zabbix-0.1.2 vendor/bundle/jruby/1.9/gems/zabbixapi-2.4.9/lib/zabbixapi/classes/triggers.rb
logstash-filter-zabbix-0.1.1 vendor/bundle/jruby/1.9/gems/zabbixapi-2.4.9/lib/zabbixapi/classes/triggers.rb
zabbixapi-2.4.9 lib/zabbixapi/classes/triggers.rb
zabbixapi-2.4.8 lib/zabbixapi/classes/triggers.rb
zabbixapi-2.4.7 lib/zabbixapi/classes/triggers.rb
zabbixapi-2.4.6 lib/zabbixapi/classes/triggers.rb
zabbixapi-2.4.5 lib/zabbixapi/classes/triggers.rb
zabbixapi-2.4.4 lib/zabbixapi/classes/triggers.rb
zabbixapi-2.4.3 lib/zabbixapi/classes/triggers.rb
zabbixapi-2.4.2 lib/zabbixapi/classes/triggers.rb
zabbixapi-2.4.1 lib/zabbixapi/classes/triggers.rb