class_docstr: Runs on the head node of a Ray cluster and handles Ray Jobs APIs.
  
  NOTE(architkulkarni): Please keep this class in sync with the OpenAPI spec at
  `doc/source/cluster/running-applications/job-submission/openapi.yml`.
  We currently do not automatically check that the OpenAPI
  spec is in sync with the implementation. If any changes are made to the
  paths in the @route decorators or in the Responses returned by the
  methods (or any nested fields in the Responses), you will need to find the
  corresponding field of the OpenAPI yaml file and update it manually. Also,
  bump the version number in the yaml file and in this class's `get_version`.
class_docstr_tok: ["Runs","on","the","head","node","of","a","Ray","cluster","and","handles","Ray","Jobs","APIs",".","NOTE","(","architkulkarni",")",":","Please","keep","this","class","in","sync","with","the","OpenAPI","spec","at","`","doc\/source\/cluster\/running-applications\/job-submission\/openapi.yml","`",".","We","currently","do","not","automatically","check","that","the","OpenAPI","spec","is","in","sync","with","the","implementation",".","If","any","changes","are","made","to","the","paths","in","the","@","route","decorators","or","in","the","Responses","returned","by","the","methods","(","or","any","nested","fields","in","the","Responses",")",",","you","will","need","to","find","the","corresponding","field","of","the","OpenAPI","yaml","file","and","update","it","manually",".","Also",",","bump","the","version","number","in","the","yaml","file","and","in","this","class","'s","`","get_version","`","."]
code: def is_minimal_module():
      return False
  
imports: import asyncio
  import dataclasses
  import json
  import logging
  import traceback
  from random import sample
  from typing import Iterator, Optional
  import aiohttp.web
  from aiohttp.web import Request, Response
  from aiohttp.client import ClientResponse
  import ray
  import ray.dashboard.optional_utils
  import ray.dashboard.consts
  from ray.dashboard.datacenter import DataOrganizer
  import ray.dashboard.utils
  from ray._private.runtime_env.packaging import package_exists, pin_runtime_env_uri, upload_package_to_gcs
  from ray.dashboard.modules.job.common import JobDeleteResponse, http_uri_components_to_uri, JobSubmitRequest, JobSubmitResponse, JobStopResponse, JobLogsResponse, JobInfoStorageClient
  from ray.dashboard.modules.job.pydantic_models import JobDetails, JobType
  from ray.dashboard.modules.job.utils import parse_and_validate_request, get_driver_jobs, find_job_by_ids
  from ray.dashboard.modules.version import CURRENT_VERSION, VersionResponse
label_desc: Use image node_id 2 for calling the JobHead obj's underlying member method code with example usage: obj.is_minimal_module() and returns: False