lib/zabbixapi/basic/basic_logic.rb in zabbixapi-2.2.3 vs lib/zabbixapi/basic/basic_logic.rb in zabbixapi-2.2.4

- old
+ new

@@ -16,30 +16,34 @@ data_delete = array_flag ? [data] : [key.to_sym => data] result = @client.api_request(:method => "#{method_name}.delete", :params => data_delete) parse_keys result end - def create_or_update(data) + def create_or_update(data, force = false) log "[DEBUG] Call create_or_update with parametrs: #{data.inspect}" id = get_id(indentify.to_sym => data[indentify.to_sym]) - id ? update(data.merge(key.to_sym => id.to_s)) : create(data) + id ? update(data.merge(key.to_sym => id.to_s), force) : create(data) end - def update(data) + def update(data, force = false) 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 - if hash_equals?(dump, data) + dump.delete(key.to_sym) + data.delete(key.to_sym) + + if hash_equals?(dump, data) && !force log "[DEBUG] Equal keys #{dump} and #{data}, skip update" item_id else + data[key.to_sym] = item_id data_update = array_flag ? [data] : data result = @client.api_request(:method => "#{method_name}.update", :params => data_update) parse_keys result end @@ -87,10 +91,10 @@ def get_id(data) log "[DEBUG] Call get_id with parametrs: #{data.inspect}" result = symbolize_keys( get_full_data(data) ) id = nil - result.each { |item| id = item[key.to_sym].to_i if item[indentify.to_sym] == data[indentify.to_sym] } + result.each { |item| id = item[key.to_sym].to_i if item[indentify.to_sym].to_s == data[indentify.to_sym].to_s } id end def get_or_create(data) log "[DEBUG] Call get_or_create with parametrs: #{data.inspect}"