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}"