docs: def can_start_on_cluster(nodes_status,
                           nodes,
                           start,
                           walltime):
      """Check if #nodes can be started on a given cluster.
  
      This is intended to give a good enough approximation.
      This can be use to prefiltered possible reservation dates before submitting
      them on oar.
      """
      candidates = []
      for node, status in nodes_status.items():
          reservations = status.get("reservations", [])
          # we search for the overlapping reservations
          overlapping_reservations = []
          for reservation in reservations:
              queue = reservation.get("queue")
              if queue == "besteffort":
                  # ignoring any besteffort reservation
                  continue
              r_start = reservation.get("started_at",
                                        reservation.get("scheduled_at"))
              if r_start is None:
                  break
              r_start = int(r_start)
              r_end = r_start + int(reservation["walltime"])
              # compute segment intersection
              _intersect = min(r_end, start + walltime) - max(r_start, start)
              if _intersect > 0:
                  overlapping_reservations.append(reservation)
          if len(overlapping_reservations) == 0:
              # this node can be accounted for a potential reservation
              candidates.append(node)
      if len(candidates) >= nodes:
          return True
      return False