docstr: Get the ips of all Spark executors in the cluster. The first ip returned would be the
  ray master.
docstr_tok: ["Get","the","ips","of","all","Spark","executors","in","the","cluster",".","The","first","ip","returned","would","be","the","ray","master","."]
code: def _gather_cluster_ips(self):
      """
      Get the ips of all Spark executors in the cluster. The first ip returned would be the
      ray master.
      """
  
      def info_fn(iter):
          from zoo.util.utils import get_node_ip
  
          yield get_node_ip()
  
      ips = (
          self.sc.range(0, self.total_cores, numSlices=self.total_cores)
          .mapPartitions(info_fn)
          .collect()
      )
      ips = list(set(ips))
      return ips
  
imports: import os
  import re
  import subprocess
  import time
  import uuid
  import random
  import warnings
  import tempfile
  import filelock
  import multiprocessing
  from packaging import version
  from zoo.ray.process import session_execute, ProcessMonitor
  from zoo.ray.utils import is_local
  from zoo.ray.utils import resource_to_bytes
  from zoo.ray.utils import get_parent_pid
label_desc: Use image node_id 3 for calling the RayContext obj's underlying member method code with example usage: obj._gather_cluster_ips() and returns: ips