class Redis::Cluster::Slot

def build_slot_node_key_map(available_slots)

available_slots is mapping of node_key to list of slot ranges
def build_slot_node_key_map(available_slots)
  by_ranges = {}
  available_slots.each do |node_key, slots_arr|
    by_ranges[slots_arr] ||= { master: nil, slaves: [] }
    if master?(node_key)
      by_ranges[slots_arr][:master] = node_key
    elsif !by_ranges[slots_arr][:slaves].include?(node_key)
      by_ranges[slots_arr][:slaves] << node_key
    end
  end
  by_slot = {}
  by_ranges.each do |slots_arr, nodes|
    slots_arr.each do |slots|
      slots.each do |slot|
        by_slot[slot] = nodes
      end
    end
  end
  by_slot
end