Sha256: 85b521c8f7502e88f2f78c590dee1d03926025ac59899d053564e6d867bafb4c

Contents?: true

Size: 1.82 KB

Versions: 25

Compression:

Stored size: 1.82 KB

Contents

class ZabbixApi
  class Triggers < Basic
    
    def array_flag
      true
    end

    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

25 entries across 14 versions & 1 rubygems

Version Path
zabbixapi-0.5.9 lib/zabbixapi/1.8/classes/triggers.rb
zabbixapi-0.5.8 lib/zabbixapi/1.8/classes/triggers.rb
zabbixapi-0.5.7 lib/zabbixapi/2.0/classes/triggers.rb
zabbixapi-0.5.7 lib/zabbixapi/1.8/classes/triggers.rb
zabbixapi-0.5.3b7u lib/zabbixapi/1.8/classes/triggers.rb
zabbixapi-0.5.3b7u lib/zabbixapi/2.0/classes/triggers.rb
zabbixapi-0.5.6 lib/zabbixapi/1.8/classes/triggers.rb
zabbixapi-0.5.6 lib/zabbixapi/2.0/classes/triggers.rb
zabbixapi-0.5.4 lib/zabbixapi/1.8/classes/triggers.rb
zabbixapi-0.5.4 lib/zabbixapi/2.0/classes/triggers.rb
zabbixapi-0.5.3b7 lib/zabbixapi/2.0/classes/triggers.rb
zabbixapi-0.5.3b7 lib/zabbixapi/1.8/classes/triggers.rb
zabbixapi-0.5.3b6 lib/zabbixapi/2.0/classes/triggers.rb
zabbixapi-0.5.3b6 lib/zabbixapi/1.8/classes/triggers.rb
zabbixapi-0.5.3b5 lib/zabbixapi/2.0/classes/triggers.rb
zabbixapi-0.5.3b5 lib/zabbixapi/1.8/classes/triggers.rb
zabbixapi-0.5.3b4 lib/zabbixapi/2.0/classes/triggers.rb
zabbixapi-0.5.3b4 lib/zabbixapi/1.8/classes/triggers.rb
zabbixapi-0.5.3b3 lib/zabbixapi/1.8/classes/triggers.rb
zabbixapi-0.5.3b3 lib/zabbixapi/2.0/classes/triggers.rb