Module: ForemanFogProxmox::ComputeAttributesUpdateDetector

Included in:
Proxmox
Defined in:
app/models/foreman_fog_proxmox/compute_attributes_update_detector.rb

Instance Method Summary collapse

Instance Method Details

#update_required?(old_attrs, new_attrs) ⇒ Boolean

Returns:

  • (Boolean)


22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'app/models/foreman_fog_proxmox/compute_attributes_update_detector.rb', line 22

def update_required?(old_attrs, new_attrs)
  old_attrs = old_attrs.deep_symbolize_keys
  new_attrs = new_attrs.deep_symbolize_keys
  new_attrs.each do |key, new_v|
    old_v = old_attrs[key]
    if new_v.is_a?(Hash)
      unless old_v.is_a?(Hash)
        logger.debug "Scheduling compute instance update because #{key} changed it's value from '#{old_v}' (#{old_v.class}) to '#{new_v}' (#{new_v.class})"
        return true
      end
      return true if update_required?(old_v, new_v)
    elsif old_v.to_s != new_v.to_s
      logger.debug "Scheduling compute instance update because #{key} changed it's value from '#{old_v}' (#{old_v.class}) to '#{new_v}' (#{new_v.class})"
      return true
    end
  end
  false
end