get_changed_keys

in cookbooks/fb_network_scripts/libraries/rh_int_helpers.rb [140:173]


      def get_changed_keys(current, new)
        changed_keys = []
        Chef::Log.debug("fb_network_scripts: current #{current}, new #{new}")

        current_keys = Set.new(current.keys)
        new_keys = Set.new(new.keys)

        added_keys = new_keys - current_keys
        removed_keys = current_keys - new_keys

        changed_keys += added_keys.to_a unless added_keys.empty?
        changed_keys += removed_keys.to_a unless removed_keys.empty?

        common_keys = current_keys & new_keys
        common_keys.each do |key|
          case key
          when 'IPV6ADDR'
            have = get_ip_object(current[key], true)
            want = get_ip_object(new[key])
            changed_keys << key unless have == want
          when 'IPV6ADDR_SECONDARIES'
            have = Set.new(
              current[key].split.sort.map { |x| get_ip_object(x, true) },
            )
            want = Set.new(new[key].split.sort.map { |x| get_ip_object(x) })
            changed_keys << key unless have == want
          else
            changed_keys << key unless current[key] == new[key]
          end
        end
        Chef::Log.debug("fb_network_scripts: changed is #{changed_keys}")
        changed_keys.sort.uniq
      end