skypilot-nightly 1.0.0.dev20251009__py3-none-any.whl → 1.0.0.dev20251107__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of skypilot-nightly might be problematic. Click here for more details.
- sky/__init__.py +6 -2
- sky/adaptors/aws.py +25 -7
- sky/adaptors/coreweave.py +278 -0
- sky/adaptors/kubernetes.py +64 -0
- sky/adaptors/shadeform.py +89 -0
- sky/admin_policy.py +20 -0
- sky/authentication.py +59 -149
- sky/backends/backend_utils.py +104 -63
- sky/backends/cloud_vm_ray_backend.py +84 -39
- sky/catalog/data_fetchers/fetch_runpod.py +698 -0
- sky/catalog/data_fetchers/fetch_shadeform.py +142 -0
- sky/catalog/kubernetes_catalog.py +24 -28
- sky/catalog/runpod_catalog.py +5 -1
- sky/catalog/shadeform_catalog.py +165 -0
- sky/check.py +25 -13
- sky/client/cli/command.py +335 -86
- sky/client/cli/flags.py +4 -2
- sky/client/cli/table_utils.py +17 -9
- sky/client/sdk.py +59 -12
- sky/cloud_stores.py +73 -0
- sky/clouds/__init__.py +2 -0
- sky/clouds/aws.py +71 -16
- sky/clouds/azure.py +12 -5
- sky/clouds/cloud.py +19 -9
- sky/clouds/cudo.py +12 -5
- sky/clouds/do.py +4 -1
- sky/clouds/fluidstack.py +12 -5
- sky/clouds/gcp.py +12 -5
- sky/clouds/hyperbolic.py +12 -5
- sky/clouds/ibm.py +12 -5
- sky/clouds/kubernetes.py +62 -25
- sky/clouds/lambda_cloud.py +12 -5
- sky/clouds/nebius.py +12 -5
- sky/clouds/oci.py +12 -5
- sky/clouds/paperspace.py +4 -1
- sky/clouds/primeintellect.py +4 -1
- sky/clouds/runpod.py +12 -5
- sky/clouds/scp.py +12 -5
- sky/clouds/seeweb.py +4 -1
- sky/clouds/shadeform.py +400 -0
- sky/clouds/ssh.py +4 -2
- sky/clouds/vast.py +12 -5
- sky/clouds/vsphere.py +4 -1
- sky/core.py +12 -11
- sky/dashboard/out/404.html +1 -1
- sky/dashboard/out/_next/static/chunks/1141-e6aa9ab418717c59.js +11 -0
- sky/dashboard/out/_next/static/chunks/{1871-49141c317f3a9020.js → 1871-74503c8e80fd253b.js} +1 -1
- sky/dashboard/out/_next/static/chunks/2260-7703229c33c5ebd5.js +1 -0
- sky/dashboard/out/_next/static/chunks/2755.fff53c4a3fcae910.js +26 -0
- sky/dashboard/out/_next/static/chunks/3294.72362fa129305b19.js +1 -0
- sky/dashboard/out/_next/static/chunks/{3785.a19328ba41517b8b.js → 3785.ad6adaa2a0fa9768.js} +1 -1
- sky/dashboard/out/_next/static/chunks/{4725.10f7a9a5d3ea8208.js → 4725.a830b5c9e7867c92.js} +1 -1
- sky/dashboard/out/_next/static/chunks/6856-ef8ba11f96d8c4a3.js +1 -0
- sky/dashboard/out/_next/static/chunks/6990-32b6e2d3822301fa.js +1 -0
- sky/dashboard/out/_next/static/chunks/7615-3301e838e5f25772.js +1 -0
- sky/dashboard/out/_next/static/chunks/8969-1e4613c651bf4051.js +1 -0
- sky/dashboard/out/_next/static/chunks/9025.fa408f3242e9028d.js +6 -0
- sky/dashboard/out/_next/static/chunks/9353-cff34f7e773b2e2b.js +1 -0
- sky/dashboard/out/_next/static/chunks/9360.7310982cf5a0dc79.js +31 -0
- sky/dashboard/out/_next/static/chunks/pages/{_app-ce361c6959bc2001.js → _app-bde01e4a2beec258.js} +1 -1
- sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-c736ead69c2d86ec.js +16 -0
- sky/dashboard/out/_next/static/chunks/pages/clusters/{[cluster]-477555ab7c0b13d8.js → [cluster]-a37d2063af475a1c.js} +1 -1
- sky/dashboard/out/_next/static/chunks/pages/{clusters-2f61f65487f6d8ff.js → clusters-d44859594e6f8064.js} +1 -1
- sky/dashboard/out/_next/static/chunks/pages/infra/{[context]-553b8b5cb65e100b.js → [context]-c0b5935149902e6f.js} +1 -1
- sky/dashboard/out/_next/static/chunks/pages/{infra-910a22500c50596f.js → infra-aed0ea19df7cf961.js} +1 -1
- sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-5796e8d6aea291a0.js +16 -0
- sky/dashboard/out/_next/static/chunks/pages/jobs/pools/{[pool]-bc979970c247d8f3.js → [pool]-6edeb7d06032adfc.js} +2 -2
- sky/dashboard/out/_next/static/chunks/pages/{jobs-a35a9dc3c5ccd657.js → jobs-479dde13399cf270.js} +1 -1
- sky/dashboard/out/_next/static/chunks/pages/{users-98d2ed979084162a.js → users-5ab3b907622cf0fe.js} +1 -1
- sky/dashboard/out/_next/static/chunks/pages/{volumes-835d14ba94808f79.js → volumes-b84b948ff357c43e.js} +1 -1
- sky/dashboard/out/_next/static/chunks/pages/workspaces/{[name]-e8688c35c06f0ac5.js → [name]-c5a3eeee1c218af1.js} +1 -1
- sky/dashboard/out/_next/static/chunks/pages/{workspaces-69c80d677d3c2949.js → workspaces-22b23febb3e89ce1.js} +1 -1
- sky/dashboard/out/_next/static/chunks/webpack-2679be77fc08a2f8.js +1 -0
- sky/dashboard/out/_next/static/css/0748ce22df867032.css +3 -0
- sky/dashboard/out/_next/static/zB0ed6ge_W1MDszVHhijS/_buildManifest.js +1 -0
- sky/dashboard/out/clusters/[cluster]/[job].html +1 -1
- sky/dashboard/out/clusters/[cluster].html +1 -1
- sky/dashboard/out/clusters.html +1 -1
- sky/dashboard/out/config.html +1 -1
- sky/dashboard/out/index.html +1 -1
- sky/dashboard/out/infra/[context].html +1 -1
- sky/dashboard/out/infra.html +1 -1
- sky/dashboard/out/jobs/[job].html +1 -1
- sky/dashboard/out/jobs/pools/[pool].html +1 -1
- sky/dashboard/out/jobs.html +1 -1
- sky/dashboard/out/users.html +1 -1
- sky/dashboard/out/volumes.html +1 -1
- sky/dashboard/out/workspace/new.html +1 -1
- sky/dashboard/out/workspaces/[name].html +1 -1
- sky/dashboard/out/workspaces.html +1 -1
- sky/data/data_utils.py +92 -1
- sky/data/mounting_utils.py +143 -19
- sky/data/storage.py +168 -11
- sky/exceptions.py +13 -1
- sky/execution.py +13 -0
- sky/global_user_state.py +189 -113
- sky/jobs/client/sdk.py +32 -10
- sky/jobs/client/sdk_async.py +9 -3
- sky/jobs/constants.py +3 -1
- sky/jobs/controller.py +164 -192
- sky/jobs/file_content_utils.py +80 -0
- sky/jobs/log_gc.py +201 -0
- sky/jobs/recovery_strategy.py +59 -82
- sky/jobs/scheduler.py +20 -9
- sky/jobs/server/core.py +105 -23
- sky/jobs/server/server.py +40 -28
- sky/jobs/server/utils.py +32 -11
- sky/jobs/state.py +588 -110
- sky/jobs/utils.py +442 -209
- sky/logs/agent.py +1 -1
- sky/metrics/utils.py +45 -6
- sky/optimizer.py +1 -1
- sky/provision/__init__.py +7 -0
- sky/provision/aws/instance.py +2 -1
- sky/provision/azure/instance.py +2 -1
- sky/provision/common.py +2 -0
- sky/provision/cudo/instance.py +2 -1
- sky/provision/do/instance.py +2 -1
- sky/provision/fluidstack/instance.py +4 -3
- sky/provision/gcp/instance.py +2 -1
- sky/provision/hyperbolic/instance.py +2 -1
- sky/provision/instance_setup.py +10 -2
- sky/provision/kubernetes/constants.py +0 -1
- sky/provision/kubernetes/instance.py +222 -89
- sky/provision/kubernetes/network.py +12 -8
- sky/provision/kubernetes/utils.py +114 -53
- sky/provision/kubernetes/volume.py +5 -4
- sky/provision/lambda_cloud/instance.py +2 -1
- sky/provision/nebius/instance.py +2 -1
- sky/provision/oci/instance.py +2 -1
- sky/provision/paperspace/instance.py +2 -1
- sky/provision/provisioner.py +11 -2
- sky/provision/runpod/instance.py +2 -1
- sky/provision/scp/instance.py +2 -1
- sky/provision/seeweb/instance.py +3 -3
- sky/provision/shadeform/__init__.py +11 -0
- sky/provision/shadeform/config.py +12 -0
- sky/provision/shadeform/instance.py +351 -0
- sky/provision/shadeform/shadeform_utils.py +83 -0
- sky/provision/vast/instance.py +2 -1
- sky/provision/vsphere/instance.py +2 -1
- sky/resources.py +1 -1
- sky/schemas/api/responses.py +9 -5
- sky/schemas/db/skypilot_config/001_initial_schema.py +30 -0
- sky/schemas/db/spot_jobs/004_job_file_contents.py +42 -0
- sky/schemas/db/spot_jobs/005_logs_gc.py +38 -0
- sky/schemas/generated/jobsv1_pb2.py +52 -52
- sky/schemas/generated/jobsv1_pb2.pyi +4 -2
- sky/schemas/generated/managed_jobsv1_pb2.py +39 -35
- sky/schemas/generated/managed_jobsv1_pb2.pyi +21 -5
- sky/serve/client/impl.py +11 -3
- sky/serve/replica_managers.py +5 -2
- sky/serve/serve_utils.py +9 -2
- sky/serve/server/impl.py +7 -2
- sky/serve/server/server.py +18 -15
- sky/serve/service.py +2 -2
- sky/server/auth/oauth2_proxy.py +2 -5
- sky/server/common.py +31 -28
- sky/server/constants.py +5 -1
- sky/server/daemons.py +27 -19
- sky/server/requests/executor.py +138 -74
- sky/server/requests/payloads.py +9 -1
- sky/server/requests/preconditions.py +13 -10
- sky/server/requests/request_names.py +120 -0
- sky/server/requests/requests.py +485 -153
- sky/server/requests/serializers/decoders.py +26 -13
- sky/server/requests/serializers/encoders.py +56 -11
- sky/server/requests/threads.py +106 -0
- sky/server/rest.py +70 -18
- sky/server/server.py +283 -104
- sky/server/stream_utils.py +233 -59
- sky/server/uvicorn.py +18 -17
- sky/setup_files/alembic.ini +4 -0
- sky/setup_files/dependencies.py +32 -13
- sky/sky_logging.py +0 -2
- sky/skylet/constants.py +30 -7
- sky/skylet/events.py +7 -0
- sky/skylet/log_lib.py +8 -2
- sky/skylet/log_lib.pyi +1 -1
- sky/skylet/services.py +26 -13
- sky/skylet/subprocess_daemon.py +103 -29
- sky/skypilot_config.py +87 -75
- sky/ssh_node_pools/server.py +9 -8
- sky/task.py +67 -54
- sky/templates/kubernetes-ray.yml.j2 +8 -1
- sky/templates/nebius-ray.yml.j2 +1 -0
- sky/templates/shadeform-ray.yml.j2 +72 -0
- sky/templates/websocket_proxy.py +142 -12
- sky/users/permission.py +8 -1
- sky/utils/admin_policy_utils.py +16 -3
- sky/utils/asyncio_utils.py +78 -0
- sky/utils/auth_utils.py +153 -0
- sky/utils/cli_utils/status_utils.py +8 -2
- sky/utils/command_runner.py +11 -0
- sky/utils/common.py +3 -1
- sky/utils/common_utils.py +7 -4
- sky/utils/context.py +57 -51
- sky/utils/context_utils.py +30 -12
- sky/utils/controller_utils.py +35 -8
- sky/utils/db/db_utils.py +37 -10
- sky/utils/db/migration_utils.py +8 -4
- sky/utils/locks.py +24 -6
- sky/utils/resource_checker.py +4 -1
- sky/utils/resources_utils.py +53 -29
- sky/utils/schemas.py +23 -4
- sky/utils/subprocess_utils.py +17 -4
- sky/volumes/server/server.py +7 -6
- sky/workspaces/server.py +13 -12
- {skypilot_nightly-1.0.0.dev20251009.dist-info → skypilot_nightly-1.0.0.dev20251107.dist-info}/METADATA +306 -55
- {skypilot_nightly-1.0.0.dev20251009.dist-info → skypilot_nightly-1.0.0.dev20251107.dist-info}/RECORD +215 -195
- sky/dashboard/out/_next/static/chunks/1121-d0782b9251f0fcd3.js +0 -1
- sky/dashboard/out/_next/static/chunks/1141-3b40c39626f99c89.js +0 -11
- sky/dashboard/out/_next/static/chunks/2755.97300e1362fe7c98.js +0 -26
- sky/dashboard/out/_next/static/chunks/3015-8d748834fcc60b46.js +0 -1
- sky/dashboard/out/_next/static/chunks/3294.1fafbf42b3bcebff.js +0 -1
- sky/dashboard/out/_next/static/chunks/6135-4b4d5e824b7f9d3c.js +0 -1
- sky/dashboard/out/_next/static/chunks/6856-5fdc9b851a18acdb.js +0 -1
- sky/dashboard/out/_next/static/chunks/6990-f6818c84ed8f1c86.js +0 -1
- sky/dashboard/out/_next/static/chunks/8969-66237729cdf9749e.js +0 -1
- sky/dashboard/out/_next/static/chunks/9025.c12318fb6a1a9093.js +0 -6
- sky/dashboard/out/_next/static/chunks/9360.71e83b2ddc844ec2.js +0 -31
- sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-8f058b0346db2aff.js +0 -16
- sky/dashboard/out/_next/static/chunks/pages/jobs/[job]-4f7079dcab6ed653.js +0 -16
- sky/dashboard/out/_next/static/chunks/webpack-6a5ddd0184bfa22c.js +0 -1
- sky/dashboard/out/_next/static/css/4614e06482d7309e.css +0 -3
- sky/dashboard/out/_next/static/hIViZcQBkn0HE8SpaSsUU/_buildManifest.js +0 -1
- /sky/dashboard/out/_next/static/{hIViZcQBkn0HE8SpaSsUU → zB0ed6ge_W1MDszVHhijS}/_ssgManifest.js +0 -0
- {skypilot_nightly-1.0.0.dev20251009.dist-info → skypilot_nightly-1.0.0.dev20251107.dist-info}/WHEEL +0 -0
- {skypilot_nightly-1.0.0.dev20251009.dist-info → skypilot_nightly-1.0.0.dev20251107.dist-info}/entry_points.txt +0 -0
- {skypilot_nightly-1.0.0.dev20251009.dist-info → skypilot_nightly-1.0.0.dev20251107.dist-info}/licenses/LICENSE +0 -0
- {skypilot_nightly-1.0.0.dev20251009.dist-info → skypilot_nightly-1.0.0.dev20251107.dist-info}/top_level.txt +0 -0
|
@@ -14,7 +14,7 @@ _sym_db = _symbol_database.Default()
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"sky/schemas/generated/jobsv1.proto\x12\x07jobs.v1\"\x85\x01\n\rAddJobRequest\x12\x15\n\x08job_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x08username\x18\x02 \x01(\t\x12\x15\n\rrun_timestamp\x18\x03 \x01(\t\x12\x15\n\rresources_str\x18\x04 \x01(\t\x12\x10\n\x08metadata\x18\x05 \x01(\tB\x0b\n\t_job_name\"1\n\x0e\x41\x64\x64JobResponse\x12\x0e\n\x06job_id\x18\x01 \x01(\x03\x12\x0f\n\x07log_dir\x18\x02 \x01(\t\"\xb3\x01\n\x0fQueueJobRequest\x12\x0e\n\x06job_id\x18\x01 \x01(\x03\x12\x14\n\x07\x63odegen\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x0bscript_path\x18\x03 \x01(\t\x12\x16\n\x0eremote_log_dir\x18\x04 \x01(\t\x12\x31\n\x0bmanaged_job\x18\x05 \x01(\x0b\x32\x17.jobs.v1.ManagedJobInfoH\x01\x88\x01\x01\x42\n\n\x08_codegenB\x0e\n\x0c_managed_job\"\
|
|
17
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\"sky/schemas/generated/jobsv1.proto\x12\x07jobs.v1\"\x85\x01\n\rAddJobRequest\x12\x15\n\x08job_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x08username\x18\x02 \x01(\t\x12\x15\n\rrun_timestamp\x18\x03 \x01(\t\x12\x15\n\rresources_str\x18\x04 \x01(\t\x12\x10\n\x08metadata\x18\x05 \x01(\tB\x0b\n\t_job_name\"1\n\x0e\x41\x64\x64JobResponse\x12\x0e\n\x06job_id\x18\x01 \x01(\x03\x12\x0f\n\x07log_dir\x18\x02 \x01(\t\"\xb3\x01\n\x0fQueueJobRequest\x12\x0e\n\x06job_id\x18\x01 \x01(\x03\x12\x14\n\x07\x63odegen\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x0bscript_path\x18\x03 \x01(\t\x12\x16\n\x0eremote_log_dir\x18\x04 \x01(\t\x12\x31\n\x0bmanaged_job\x18\x05 \x01(\x0b\x32\x17.jobs.v1.ManagedJobInfoH\x01\x88\x01\x01\x42\n\n\x08_codegenB\x0e\n\x0c_managed_job\"\xab\x01\n\x0eManagedJobInfo\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x11\n\x04pool\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x11\n\tworkspace\x18\x03 \x01(\t\x12\x12\n\nentrypoint\x18\x04 \x01(\t\x12&\n\x05tasks\x18\x05 \x03(\x0b\x32\x17.jobs.v1.ManagedJobTask\x12\x14\n\x07user_id\x18\x06 \x01(\tH\x01\x88\x01\x01\x42\x07\n\x05_poolB\n\n\x08_user_id\"]\n\x0eManagedJobTask\x12\x0f\n\x07task_id\x18\x01 \x01(\x05\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x15\n\rresources_str\x18\x03 \x01(\t\x12\x15\n\rmetadata_json\x18\x04 \x01(\t\"\x12\n\x10QueueJobResponse\"\x15\n\x13UpdateStatusRequest\"\x16\n\x14UpdateStatusResponse\"L\n\x12GetJobQueueRequest\x12\x16\n\tuser_hash\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x10\n\x08\x61ll_jobs\x18\x02 \x01(\x08\x42\x0c\n\n_user_hash\"\xa3\x02\n\x07JobInfo\x12\x0e\n\x06job_id\x18\x01 \x01(\x03\x12\x10\n\x08job_name\x18\x02 \x01(\t\x12\x10\n\x08username\x18\x03 \x01(\t\x12\x14\n\x0csubmitted_at\x18\x04 \x01(\x01\x12\"\n\x06status\x18\x05 \x01(\x0e\x32\x12.jobs.v1.JobStatus\x12\x15\n\rrun_timestamp\x18\x06 \x01(\t\x12\x15\n\x08start_at\x18\x07 \x01(\x01H\x00\x88\x01\x01\x12\x13\n\x06\x65nd_at\x18\x08 \x01(\x01H\x01\x88\x01\x01\x12\x11\n\tresources\x18\t \x01(\t\x12\x10\n\x03pid\x18\n \x01(\x03H\x02\x88\x01\x01\x12\x10\n\x08log_path\x18\x0b \x01(\t\x12\x10\n\x08metadata\x18\x0c \x01(\tB\x0b\n\t_start_atB\t\n\x07_end_atB\x06\n\x04_pid\"5\n\x13GetJobQueueResponse\x12\x1e\n\x04jobs\x18\x01 \x03(\x0b\x32\x10.jobs.v1.JobInfo\"^\n\x11\x43\x61ncelJobsRequest\x12\x0f\n\x07job_ids\x18\x01 \x03(\x03\x12\x12\n\ncancel_all\x18\x02 \x01(\x08\x12\x16\n\tuser_hash\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x0c\n\n_user_hash\"/\n\x12\x43\x61ncelJobsResponse\x12\x19\n\x11\x63\x61ncelled_job_ids\x18\x01 \x03(\x03\"\x1e\n\x1c\x46\x61ilAllInProgressJobsRequest\"\x1f\n\x1d\x46\x61ilAllInProgressJobsResponse\"\x7f\n\x0fTailLogsRequest\x12\x13\n\x06job_id\x18\x01 \x01(\x03H\x00\x88\x01\x01\x12\x1b\n\x0emanaged_job_id\x18\x02 \x01(\x03H\x01\x88\x01\x01\x12\x0e\n\x06\x66ollow\x18\x03 \x01(\x08\x12\x0c\n\x04tail\x18\x04 \x01(\x05\x42\t\n\x07_job_idB\x11\n\x0f_managed_job_id\"7\n\x10TailLogsResponse\x12\x10\n\x08log_line\x18\x01 \x01(\t\x12\x11\n\texit_code\x18\x02 \x01(\x05\"&\n\x13GetJobStatusRequest\x12\x0f\n\x07job_ids\x18\x01 \x03(\x03\"\xa4\x01\n\x14GetJobStatusResponse\x12\x44\n\x0cjob_statuses\x18\x01 \x03(\x0b\x32..jobs.v1.GetJobStatusResponse.JobStatusesEntry\x1a\x46\n\x10JobStatusesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12!\n\x05value\x18\x02 \x01(\x0e\x32\x12.jobs.v1.JobStatus:\x02\x38\x01\"A\n\x1fGetJobSubmittedTimestampRequest\x12\x13\n\x06job_id\x18\x01 \x01(\x03H\x00\x88\x01\x01\x42\t\n\x07_job_id\"5\n GetJobSubmittedTimestampResponse\x12\x11\n\ttimestamp\x18\x01 \x01(\x02\"=\n\x1bGetJobEndedTimestampRequest\x12\x13\n\x06job_id\x18\x01 \x01(\x03H\x00\x88\x01\x01\x42\t\n\x07_job_id\"1\n\x1cGetJobEndedTimestampResponse\x12\x11\n\ttimestamp\x18\x01 \x01(\x02\"+\n\x18GetLogDirsForJobsRequest\x12\x0f\n\x07job_ids\x18\x01 \x03(\x03\"\x98\x01\n\x19GetLogDirsForJobsResponse\x12H\n\x0cjob_log_dirs\x18\x01 \x03(\x0b\x32\x32.jobs.v1.GetLogDirsForJobsResponse.JobLogDirsEntry\x1a\x31\n\x0fJobLogDirsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01*\x8d\x02\n\tJobStatus\x12\x1a\n\x16JOB_STATUS_UNSPECIFIED\x10\x00\x12\x13\n\x0fJOB_STATUS_INIT\x10\x01\x12\x16\n\x12JOB_STATUS_PENDING\x10\x02\x12\x19\n\x15JOB_STATUS_SETTING_UP\x10\x03\x12\x16\n\x12JOB_STATUS_RUNNING\x10\x04\x12\x1c\n\x18JOB_STATUS_FAILED_DRIVER\x10\x05\x12\x18\n\x14JOB_STATUS_SUCCEEDED\x10\x06\x12\x15\n\x11JOB_STATUS_FAILED\x10\x07\x12\x1b\n\x17JOB_STATUS_FAILED_SETUP\x10\x08\x12\x18\n\x14JOB_STATUS_CANCELLED\x10\t2\x91\x07\n\x0bJobsService\x12\x39\n\x06\x41\x64\x64Job\x12\x16.jobs.v1.AddJobRequest\x1a\x17.jobs.v1.AddJobResponse\x12?\n\x08QueueJob\x12\x18.jobs.v1.QueueJobRequest\x1a\x19.jobs.v1.QueueJobResponse\x12K\n\x0cUpdateStatus\x12\x1c.jobs.v1.UpdateStatusRequest\x1a\x1d.jobs.v1.UpdateStatusResponse\x12H\n\x0bGetJobQueue\x12\x1b.jobs.v1.GetJobQueueRequest\x1a\x1c.jobs.v1.GetJobQueueResponse\x12\x45\n\nCancelJobs\x12\x1a.jobs.v1.CancelJobsRequest\x1a\x1b.jobs.v1.CancelJobsResponse\x12\x66\n\x15\x46\x61ilAllInProgressJobs\x12%.jobs.v1.FailAllInProgressJobsRequest\x1a&.jobs.v1.FailAllInProgressJobsResponse\x12\x41\n\x08TailLogs\x12\x18.jobs.v1.TailLogsRequest\x1a\x19.jobs.v1.TailLogsResponse0\x01\x12K\n\x0cGetJobStatus\x12\x1c.jobs.v1.GetJobStatusRequest\x1a\x1d.jobs.v1.GetJobStatusResponse\x12o\n\x18GetJobSubmittedTimestamp\x12(.jobs.v1.GetJobSubmittedTimestampRequest\x1a).jobs.v1.GetJobSubmittedTimestampResponse\x12\x63\n\x14GetJobEndedTimestamp\x12$.jobs.v1.GetJobEndedTimestampRequest\x1a%.jobs.v1.GetJobEndedTimestampResponse\x12Z\n\x11GetLogDirsForJobs\x12!.jobs.v1.GetLogDirsForJobsRequest\x1a\".jobs.v1.GetLogDirsForJobsResponseb\x06proto3')
|
|
18
18
|
|
|
19
19
|
_globals = globals()
|
|
20
20
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
@@ -25,8 +25,8 @@ if not _descriptor._USE_C_DESCRIPTORS:
|
|
|
25
25
|
_globals['_GETJOBSTATUSRESPONSE_JOBSTATUSESENTRY']._serialized_options = b'8\001'
|
|
26
26
|
_globals['_GETLOGDIRSFORJOBSRESPONSE_JOBLOGDIRSENTRY']._loaded_options = None
|
|
27
27
|
_globals['_GETLOGDIRSFORJOBSRESPONSE_JOBLOGDIRSENTRY']._serialized_options = b'8\001'
|
|
28
|
-
_globals['_JOBSTATUS']._serialized_start=
|
|
29
|
-
_globals['_JOBSTATUS']._serialized_end=
|
|
28
|
+
_globals['_JOBSTATUS']._serialized_start=2219
|
|
29
|
+
_globals['_JOBSTATUS']._serialized_end=2488
|
|
30
30
|
_globals['_ADDJOBREQUEST']._serialized_start=48
|
|
31
31
|
_globals['_ADDJOBREQUEST']._serialized_end=181
|
|
32
32
|
_globals['_ADDJOBRESPONSE']._serialized_start=183
|
|
@@ -34,53 +34,53 @@ if not _descriptor._USE_C_DESCRIPTORS:
|
|
|
34
34
|
_globals['_QUEUEJOBREQUEST']._serialized_start=235
|
|
35
35
|
_globals['_QUEUEJOBREQUEST']._serialized_end=414
|
|
36
36
|
_globals['_MANAGEDJOBINFO']._serialized_start=417
|
|
37
|
-
_globals['_MANAGEDJOBINFO']._serialized_end=
|
|
38
|
-
_globals['_MANAGEDJOBTASK']._serialized_start=
|
|
39
|
-
_globals['_MANAGEDJOBTASK']._serialized_end=
|
|
40
|
-
_globals['_QUEUEJOBRESPONSE']._serialized_start=
|
|
41
|
-
_globals['_QUEUEJOBRESPONSE']._serialized_end=
|
|
42
|
-
_globals['_UPDATESTATUSREQUEST']._serialized_start=
|
|
43
|
-
_globals['_UPDATESTATUSREQUEST']._serialized_end=
|
|
44
|
-
_globals['_UPDATESTATUSRESPONSE']._serialized_start=
|
|
45
|
-
_globals['_UPDATESTATUSRESPONSE']._serialized_end=
|
|
46
|
-
_globals['_GETJOBQUEUEREQUEST']._serialized_start=
|
|
47
|
-
_globals['_GETJOBQUEUEREQUEST']._serialized_end=
|
|
48
|
-
_globals['_JOBINFO']._serialized_start=
|
|
49
|
-
_globals['_JOBINFO']._serialized_end=
|
|
50
|
-
_globals['_GETJOBQUEUERESPONSE']._serialized_start=
|
|
51
|
-
_globals['_GETJOBQUEUERESPONSE']._serialized_end=
|
|
52
|
-
_globals['_CANCELJOBSREQUEST']._serialized_start=
|
|
53
|
-
_globals['_CANCELJOBSREQUEST']._serialized_end=
|
|
54
|
-
_globals['_CANCELJOBSRESPONSE']._serialized_start=
|
|
55
|
-
_globals['_CANCELJOBSRESPONSE']._serialized_end=
|
|
56
|
-
_globals['_FAILALLINPROGRESSJOBSREQUEST']._serialized_start=
|
|
57
|
-
_globals['_FAILALLINPROGRESSJOBSREQUEST']._serialized_end=
|
|
58
|
-
_globals['_FAILALLINPROGRESSJOBSRESPONSE']._serialized_start=
|
|
59
|
-
_globals['_FAILALLINPROGRESSJOBSRESPONSE']._serialized_end=
|
|
60
|
-
_globals['_TAILLOGSREQUEST']._serialized_start=
|
|
61
|
-
_globals['_TAILLOGSREQUEST']._serialized_end=
|
|
62
|
-
_globals['_TAILLOGSRESPONSE']._serialized_start=
|
|
63
|
-
_globals['_TAILLOGSRESPONSE']._serialized_end=
|
|
64
|
-
_globals['_GETJOBSTATUSREQUEST']._serialized_start=
|
|
65
|
-
_globals['_GETJOBSTATUSREQUEST']._serialized_end=
|
|
66
|
-
_globals['_GETJOBSTATUSRESPONSE']._serialized_start=
|
|
67
|
-
_globals['_GETJOBSTATUSRESPONSE']._serialized_end=
|
|
68
|
-
_globals['_GETJOBSTATUSRESPONSE_JOBSTATUSESENTRY']._serialized_start=
|
|
69
|
-
_globals['_GETJOBSTATUSRESPONSE_JOBSTATUSESENTRY']._serialized_end=
|
|
70
|
-
_globals['_GETJOBSUBMITTEDTIMESTAMPREQUEST']._serialized_start=
|
|
71
|
-
_globals['_GETJOBSUBMITTEDTIMESTAMPREQUEST']._serialized_end=
|
|
72
|
-
_globals['_GETJOBSUBMITTEDTIMESTAMPRESPONSE']._serialized_start=
|
|
73
|
-
_globals['_GETJOBSUBMITTEDTIMESTAMPRESPONSE']._serialized_end=
|
|
74
|
-
_globals['_GETJOBENDEDTIMESTAMPREQUEST']._serialized_start=
|
|
75
|
-
_globals['_GETJOBENDEDTIMESTAMPREQUEST']._serialized_end=
|
|
76
|
-
_globals['_GETJOBENDEDTIMESTAMPRESPONSE']._serialized_start=
|
|
77
|
-
_globals['_GETJOBENDEDTIMESTAMPRESPONSE']._serialized_end=
|
|
78
|
-
_globals['_GETLOGDIRSFORJOBSREQUEST']._serialized_start=
|
|
79
|
-
_globals['_GETLOGDIRSFORJOBSREQUEST']._serialized_end=
|
|
80
|
-
_globals['_GETLOGDIRSFORJOBSRESPONSE']._serialized_start=
|
|
81
|
-
_globals['_GETLOGDIRSFORJOBSRESPONSE']._serialized_end=
|
|
82
|
-
_globals['_GETLOGDIRSFORJOBSRESPONSE_JOBLOGDIRSENTRY']._serialized_start=
|
|
83
|
-
_globals['_GETLOGDIRSFORJOBSRESPONSE_JOBLOGDIRSENTRY']._serialized_end=
|
|
84
|
-
_globals['_JOBSSERVICE']._serialized_start=
|
|
85
|
-
_globals['_JOBSSERVICE']._serialized_end=
|
|
37
|
+
_globals['_MANAGEDJOBINFO']._serialized_end=588
|
|
38
|
+
_globals['_MANAGEDJOBTASK']._serialized_start=590
|
|
39
|
+
_globals['_MANAGEDJOBTASK']._serialized_end=683
|
|
40
|
+
_globals['_QUEUEJOBRESPONSE']._serialized_start=685
|
|
41
|
+
_globals['_QUEUEJOBRESPONSE']._serialized_end=703
|
|
42
|
+
_globals['_UPDATESTATUSREQUEST']._serialized_start=705
|
|
43
|
+
_globals['_UPDATESTATUSREQUEST']._serialized_end=726
|
|
44
|
+
_globals['_UPDATESTATUSRESPONSE']._serialized_start=728
|
|
45
|
+
_globals['_UPDATESTATUSRESPONSE']._serialized_end=750
|
|
46
|
+
_globals['_GETJOBQUEUEREQUEST']._serialized_start=752
|
|
47
|
+
_globals['_GETJOBQUEUEREQUEST']._serialized_end=828
|
|
48
|
+
_globals['_JOBINFO']._serialized_start=831
|
|
49
|
+
_globals['_JOBINFO']._serialized_end=1122
|
|
50
|
+
_globals['_GETJOBQUEUERESPONSE']._serialized_start=1124
|
|
51
|
+
_globals['_GETJOBQUEUERESPONSE']._serialized_end=1177
|
|
52
|
+
_globals['_CANCELJOBSREQUEST']._serialized_start=1179
|
|
53
|
+
_globals['_CANCELJOBSREQUEST']._serialized_end=1273
|
|
54
|
+
_globals['_CANCELJOBSRESPONSE']._serialized_start=1275
|
|
55
|
+
_globals['_CANCELJOBSRESPONSE']._serialized_end=1322
|
|
56
|
+
_globals['_FAILALLINPROGRESSJOBSREQUEST']._serialized_start=1324
|
|
57
|
+
_globals['_FAILALLINPROGRESSJOBSREQUEST']._serialized_end=1354
|
|
58
|
+
_globals['_FAILALLINPROGRESSJOBSRESPONSE']._serialized_start=1356
|
|
59
|
+
_globals['_FAILALLINPROGRESSJOBSRESPONSE']._serialized_end=1387
|
|
60
|
+
_globals['_TAILLOGSREQUEST']._serialized_start=1389
|
|
61
|
+
_globals['_TAILLOGSREQUEST']._serialized_end=1516
|
|
62
|
+
_globals['_TAILLOGSRESPONSE']._serialized_start=1518
|
|
63
|
+
_globals['_TAILLOGSRESPONSE']._serialized_end=1573
|
|
64
|
+
_globals['_GETJOBSTATUSREQUEST']._serialized_start=1575
|
|
65
|
+
_globals['_GETJOBSTATUSREQUEST']._serialized_end=1613
|
|
66
|
+
_globals['_GETJOBSTATUSRESPONSE']._serialized_start=1616
|
|
67
|
+
_globals['_GETJOBSTATUSRESPONSE']._serialized_end=1780
|
|
68
|
+
_globals['_GETJOBSTATUSRESPONSE_JOBSTATUSESENTRY']._serialized_start=1710
|
|
69
|
+
_globals['_GETJOBSTATUSRESPONSE_JOBSTATUSESENTRY']._serialized_end=1780
|
|
70
|
+
_globals['_GETJOBSUBMITTEDTIMESTAMPREQUEST']._serialized_start=1782
|
|
71
|
+
_globals['_GETJOBSUBMITTEDTIMESTAMPREQUEST']._serialized_end=1847
|
|
72
|
+
_globals['_GETJOBSUBMITTEDTIMESTAMPRESPONSE']._serialized_start=1849
|
|
73
|
+
_globals['_GETJOBSUBMITTEDTIMESTAMPRESPONSE']._serialized_end=1902
|
|
74
|
+
_globals['_GETJOBENDEDTIMESTAMPREQUEST']._serialized_start=1904
|
|
75
|
+
_globals['_GETJOBENDEDTIMESTAMPREQUEST']._serialized_end=1965
|
|
76
|
+
_globals['_GETJOBENDEDTIMESTAMPRESPONSE']._serialized_start=1967
|
|
77
|
+
_globals['_GETJOBENDEDTIMESTAMPRESPONSE']._serialized_end=2016
|
|
78
|
+
_globals['_GETLOGDIRSFORJOBSREQUEST']._serialized_start=2018
|
|
79
|
+
_globals['_GETLOGDIRSFORJOBSREQUEST']._serialized_end=2061
|
|
80
|
+
_globals['_GETLOGDIRSFORJOBSRESPONSE']._serialized_start=2064
|
|
81
|
+
_globals['_GETLOGDIRSFORJOBSRESPONSE']._serialized_end=2216
|
|
82
|
+
_globals['_GETLOGDIRSFORJOBSRESPONSE_JOBLOGDIRSENTRY']._serialized_start=2167
|
|
83
|
+
_globals['_GETLOGDIRSFORJOBSRESPONSE_JOBLOGDIRSENTRY']._serialized_end=2216
|
|
84
|
+
_globals['_JOBSSERVICE']._serialized_start=2491
|
|
85
|
+
_globals['_JOBSSERVICE']._serialized_end=3404
|
|
86
86
|
# @@protoc_insertion_point(module_scope)
|
|
@@ -66,18 +66,20 @@ class QueueJobRequest(_message.Message):
|
|
|
66
66
|
def __init__(self, job_id: _Optional[int] = ..., codegen: _Optional[str] = ..., script_path: _Optional[str] = ..., remote_log_dir: _Optional[str] = ..., managed_job: _Optional[_Union[ManagedJobInfo, _Mapping]] = ...) -> None: ...
|
|
67
67
|
|
|
68
68
|
class ManagedJobInfo(_message.Message):
|
|
69
|
-
__slots__ = ("name", "pool", "workspace", "entrypoint", "tasks")
|
|
69
|
+
__slots__ = ("name", "pool", "workspace", "entrypoint", "tasks", "user_id")
|
|
70
70
|
NAME_FIELD_NUMBER: _ClassVar[int]
|
|
71
71
|
POOL_FIELD_NUMBER: _ClassVar[int]
|
|
72
72
|
WORKSPACE_FIELD_NUMBER: _ClassVar[int]
|
|
73
73
|
ENTRYPOINT_FIELD_NUMBER: _ClassVar[int]
|
|
74
74
|
TASKS_FIELD_NUMBER: _ClassVar[int]
|
|
75
|
+
USER_ID_FIELD_NUMBER: _ClassVar[int]
|
|
75
76
|
name: str
|
|
76
77
|
pool: str
|
|
77
78
|
workspace: str
|
|
78
79
|
entrypoint: str
|
|
79
80
|
tasks: _containers.RepeatedCompositeFieldContainer[ManagedJobTask]
|
|
80
|
-
|
|
81
|
+
user_id: str
|
|
82
|
+
def __init__(self, name: _Optional[str] = ..., pool: _Optional[str] = ..., workspace: _Optional[str] = ..., entrypoint: _Optional[str] = ..., tasks: _Optional[_Iterable[_Union[ManagedJobTask, _Mapping]]] = ..., user_id: _Optional[str] = ...) -> None: ...
|
|
81
83
|
|
|
82
84
|
class ManagedJobTask(_message.Message):
|
|
83
85
|
__slots__ = ("task_id", "name", "resources_str", "metadata_json")
|
|
@@ -14,7 +14,7 @@ _sym_db = _symbol_database.Default()
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n*sky/schemas/generated/managed_jobsv1.proto\x12\x0fmanaged_jobs.v1\"\x15\n\x06JobIds\x12\x0b\n\x03ids\x18\x01 \x03(\x03\"\x1c\n\nUserHashes\x12\x0e\n\x06hashes\x18\x01 \x03(\t\"\x1c\n\x08Statuses\x12\x10\n\x08statuses\x18\x01 \x03(\t\"\x13\n\x11GetVersionRequest\"0\n\x12GetVersionResponse\x12\x1a\n\x12\x63ontroller_version\x18\x01 \x01(\t\"\
|
|
17
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n*sky/schemas/generated/managed_jobsv1.proto\x12\x0fmanaged_jobs.v1\"\x15\n\x06JobIds\x12\x0b\n\x03ids\x18\x01 \x03(\x03\"\x1c\n\nUserHashes\x12\x0e\n\x06hashes\x18\x01 \x03(\t\"\x1c\n\x08Statuses\x12\x10\n\x08statuses\x18\x01 \x03(\t\"\x18\n\x06\x46ields\x12\x0e\n\x06\x66ields\x18\x01 \x03(\t\" \n\nWorkspaces\x12\x12\n\nworkspaces\x18\x01 \x03(\t\"\x13\n\x11GetVersionRequest\"0\n\x12GetVersionResponse\x12\x1a\n\x12\x63ontroller_version\x18\x01 \x01(\t\"\xe1\x04\n\x12GetJobTableRequest\x12\x15\n\rskip_finished\x18\x01 \x01(\x08\x12?\n\x15\x61\x63\x63\x65ssible_workspaces\x18\x02 \x01(\x0b\x32\x1b.managed_jobs.v1.WorkspacesH\x00\x88\x01\x01\x12-\n\x07job_ids\x18\x03 \x01(\x0b\x32\x17.managed_jobs.v1.JobIdsH\x01\x88\x01\x01\x12\x1c\n\x0fworkspace_match\x18\x04 \x01(\tH\x02\x88\x01\x01\x12\x17\n\nname_match\x18\x05 \x01(\tH\x03\x88\x01\x01\x12\x17\n\npool_match\x18\x06 \x01(\tH\x04\x88\x01\x01\x12\x11\n\x04page\x18\x07 \x01(\x05H\x05\x88\x01\x01\x12\x12\n\x05limit\x18\x08 \x01(\x05H\x06\x88\x01\x01\x12\x35\n\x0buser_hashes\x18\t \x01(\x0b\x32\x1b.managed_jobs.v1.UserHashesH\x07\x88\x01\x01\x12\x30\n\x08statuses\x18\n \x01(\x0b\x32\x19.managed_jobs.v1.StatusesH\x08\x88\x01\x01\x12#\n\x1bshow_jobs_without_user_hash\x18\x0b \x01(\x08\x12,\n\x06\x66ields\x18\x0c \x01(\x0b\x32\x17.managed_jobs.v1.FieldsH\t\x88\x01\x01\x42\x18\n\x16_accessible_workspacesB\n\n\x08_job_idsB\x12\n\x10_workspace_matchB\r\n\x0b_name_matchB\r\n\x0b_pool_matchB\x07\n\x05_pageB\x08\n\x06_limitB\x0e\n\x0c_user_hashesB\x0b\n\t_statusesB\t\n\x07_fields\"\xcb\x08\n\x0eManagedJobInfo\x12\x0e\n\x06job_id\x18\x01 \x01(\x03\x12\x0f\n\x07task_id\x18\x02 \x01(\x03\x12\x10\n\x08job_name\x18\x03 \x01(\t\x12\x11\n\ttask_name\x18\x04 \x01(\t\x12\x14\n\x0cjob_duration\x18\x05 \x01(\x01\x12\x16\n\tworkspace\x18\x06 \x01(\tH\x00\x88\x01\x01\x12\x31\n\x06status\x18\x07 \x01(\x0e\x32!.managed_jobs.v1.ManagedJobStatus\x12@\n\x0eschedule_state\x18\x08 \x01(\x0e\x32(.managed_jobs.v1.ManagedJobScheduleState\x12\x11\n\tresources\x18\t \x01(\t\x12\x19\n\x11\x63luster_resources\x18\n \x01(\t\x12\x1e\n\x16\x63luster_resources_full\x18\x0b \x01(\t\x12\r\n\x05\x63loud\x18\x0c \x01(\t\x12\x0e\n\x06region\x18\r \x01(\t\x12\r\n\x05infra\x18\x0e \x01(\t\x12G\n\x0c\x61\x63\x63\x65lerators\x18\x0f \x03(\x0b\x32\x31.managed_jobs.v1.ManagedJobInfo.AcceleratorsEntry\x12\x16\n\x0erecovery_count\x18\x10 \x01(\x05\x12\x14\n\x07\x64\x65tails\x18\x11 \x01(\tH\x01\x88\x01\x01\x12\x1b\n\x0e\x66\x61ilure_reason\x18\x12 \x01(\tH\x02\x88\x01\x01\x12\x16\n\tuser_name\x18\x13 \x01(\tH\x03\x88\x01\x01\x12\x16\n\tuser_hash\x18\x14 \x01(\tH\x04\x88\x01\x01\x12\x19\n\x0csubmitted_at\x18\x15 \x01(\x01H\x05\x88\x01\x01\x12\x15\n\x08start_at\x18\x16 \x01(\x01H\x06\x88\x01\x01\x12\x13\n\x06\x65nd_at\x18\x17 \x01(\x01H\x07\x88\x01\x01\x12\x16\n\tuser_yaml\x18\x18 \x01(\tH\x08\x88\x01\x01\x12\x17\n\nentrypoint\x18\x19 \x01(\tH\t\x88\x01\x01\x12?\n\x08metadata\x18\x1a \x03(\x0b\x32-.managed_jobs.v1.ManagedJobInfo.MetadataEntry\x12\x11\n\x04pool\x18\x1b \x01(\tH\n\x88\x01\x01\x12\x16\n\tpool_hash\x18\x1c \x01(\tH\x0b\x88\x01\x01\x12\x14\n\x07_job_id\x18\x1d \x01(\x03H\x0c\x88\x01\x01\x1a\x33\n\x11\x41\x63\x63\x65leratorsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a/\n\rMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x0c\n\n_workspaceB\n\n\x08_detailsB\x11\n\x0f_failure_reasonB\x0c\n\n_user_nameB\x0c\n\n_user_hashB\x0f\n\r_submitted_atB\x0b\n\t_start_atB\t\n\x07_end_atB\x0c\n\n_user_yamlB\r\n\x0b_entrypointB\x07\n\x05_poolB\x0c\n\n_pool_hashB\n\n\x08X_job_id\"\xf0\x01\n\x13GetJobTableResponse\x12-\n\x04jobs\x18\x01 \x03(\x0b\x32\x1f.managed_jobs.v1.ManagedJobInfo\x12\r\n\x05total\x18\x02 \x01(\x05\x12\x17\n\x0ftotal_no_filter\x18\x03 \x01(\x05\x12M\n\rstatus_counts\x18\x04 \x03(\x0b\x32\x36.managed_jobs.v1.GetJobTableResponse.StatusCountsEntry\x1a\x33\n\x11StatusCountsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x05:\x02\x38\x01\"?\n\x19GetAllJobIdsByNameRequest\x12\x15\n\x08job_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x42\x0b\n\t_job_name\"-\n\x1aGetAllJobIdsByNameResponse\x12\x0f\n\x07job_ids\x18\x01 \x03(\x03\"\xd7\x01\n\x11\x43\x61ncelJobsRequest\x12\x19\n\x11\x63urrent_workspace\x18\x01 \x01(\t\x12\x16\n\tuser_hash\x18\x02 \x01(\tH\x01\x88\x01\x01\x12\x13\n\tall_users\x18\x03 \x01(\x08H\x00\x12*\n\x07job_ids\x18\x04 \x01(\x0b\x32\x17.managed_jobs.v1.JobIdsH\x00\x12\x12\n\x08job_name\x18\x05 \x01(\tH\x00\x12\x13\n\tpool_name\x18\x06 \x01(\tH\x00\x42\x17\n\x15\x63\x61ncellation_criteriaB\x0c\n\n_user_hash\"%\n\x12\x43\x61ncelJobsResponse\x12\x0f\n\x07message\x18\x01 \x01(\t\"\x97\x01\n\x11StreamLogsRequest\x12\x15\n\x08job_name\x18\x01 \x01(\tH\x00\x88\x01\x01\x12\x13\n\x06job_id\x18\x02 \x01(\x03H\x01\x88\x01\x01\x12\x0e\n\x06\x66ollow\x18\x03 \x01(\x08\x12\x12\n\ncontroller\x18\x04 \x01(\x08\x12\x11\n\x04tail\x18\x05 \x01(\x05H\x02\x88\x01\x01\x42\x0b\n\t_job_nameB\t\n\x07_job_idB\x07\n\x05_tail\"L\n\x12StreamLogsResponse\x12\x10\n\x08log_line\x18\x01 \x01(\t\x12\x16\n\texit_code\x18\x02 \x01(\x05H\x00\x88\x01\x01\x42\x0c\n\n_exit_code*\x85\x04\n\x10ManagedJobStatus\x12\"\n\x1eMANAGED_JOB_STATUS_UNSPECIFIED\x10\x00\x12\x1e\n\x1aMANAGED_JOB_STATUS_PENDING\x10\x01\x12 \n\x1cMANAGED_JOB_STATUS_SUBMITTED\x10\x02\x12\x1f\n\x1bMANAGED_JOB_STATUS_STARTING\x10\x03\x12\x1e\n\x1aMANAGED_JOB_STATUS_RUNNING\x10\x04\x12!\n\x1dMANAGED_JOB_STATUS_RECOVERING\x10\x05\x12!\n\x1dMANAGED_JOB_STATUS_CANCELLING\x10\x06\x12 \n\x1cMANAGED_JOB_STATUS_SUCCEEDED\x10\x07\x12 \n\x1cMANAGED_JOB_STATUS_CANCELLED\x10\x08\x12\x1d\n\x19MANAGED_JOB_STATUS_FAILED\x10\t\x12#\n\x1fMANAGED_JOB_STATUS_FAILED_SETUP\x10\n\x12\'\n#MANAGED_JOB_STATUS_FAILED_PRECHECKS\x10\x0b\x12)\n%MANAGED_JOB_STATUS_FAILED_NO_RESOURCE\x10\x0c\x12(\n$MANAGED_JOB_STATUS_FAILED_CONTROLLER\x10\r*\x8f\x03\n\x17ManagedJobScheduleState\x12*\n&MANAGED_JOB_SCHEDULE_STATE_UNSPECIFIED\x10\x00\x12&\n\"MANAGED_JOB_SCHEDULE_STATE_INVALID\x10\x01\x12\'\n#MANAGED_JOB_SCHEDULE_STATE_INACTIVE\x10\x02\x12&\n\"MANAGED_JOB_SCHEDULE_STATE_WAITING\x10\x03\x12,\n(MANAGED_JOB_SCHEDULE_STATE_ALIVE_WAITING\x10\x04\x12(\n$MANAGED_JOB_SCHEDULE_STATE_LAUNCHING\x10\x05\x12,\n(MANAGED_JOB_SCHEDULE_STATE_ALIVE_BACKOFF\x10\x06\x12$\n MANAGED_JOB_SCHEDULE_STATE_ALIVE\x10\x07\x12#\n\x1fMANAGED_JOB_SCHEDULE_STATE_DONE\x10\x08\x32\xe4\x03\n\x12ManagedJobsService\x12U\n\nGetVersion\x12\".managed_jobs.v1.GetVersionRequest\x1a#.managed_jobs.v1.GetVersionResponse\x12X\n\x0bGetJobTable\x12#.managed_jobs.v1.GetJobTableRequest\x1a$.managed_jobs.v1.GetJobTableResponse\x12m\n\x12GetAllJobIdsByName\x12*.managed_jobs.v1.GetAllJobIdsByNameRequest\x1a+.managed_jobs.v1.GetAllJobIdsByNameResponse\x12U\n\nCancelJobs\x12\".managed_jobs.v1.CancelJobsRequest\x1a#.managed_jobs.v1.CancelJobsResponse\x12W\n\nStreamLogs\x12\".managed_jobs.v1.StreamLogsRequest\x1a#.managed_jobs.v1.StreamLogsResponse0\x01\x62\x06proto3')
|
|
18
18
|
|
|
19
19
|
_globals = globals()
|
|
20
20
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
@@ -27,44 +27,48 @@ if not _descriptor._USE_C_DESCRIPTORS:
|
|
|
27
27
|
_globals['_MANAGEDJOBINFO_METADATAENTRY']._serialized_options = b'8\001'
|
|
28
28
|
_globals['_GETJOBTABLERESPONSE_STATUSCOUNTSENTRY']._loaded_options = None
|
|
29
29
|
_globals['_GETJOBTABLERESPONSE_STATUSCOUNTSENTRY']._serialized_options = b'8\001'
|
|
30
|
-
_globals['_MANAGEDJOBSTATUS']._serialized_start=
|
|
31
|
-
_globals['_MANAGEDJOBSTATUS']._serialized_end=
|
|
32
|
-
_globals['_MANAGEDJOBSCHEDULESTATE']._serialized_start=
|
|
33
|
-
_globals['_MANAGEDJOBSCHEDULESTATE']._serialized_end=
|
|
30
|
+
_globals['_MANAGEDJOBSTATUS']._serialized_start=2836
|
|
31
|
+
_globals['_MANAGEDJOBSTATUS']._serialized_end=3353
|
|
32
|
+
_globals['_MANAGEDJOBSCHEDULESTATE']._serialized_start=3356
|
|
33
|
+
_globals['_MANAGEDJOBSCHEDULESTATE']._serialized_end=3755
|
|
34
34
|
_globals['_JOBIDS']._serialized_start=63
|
|
35
35
|
_globals['_JOBIDS']._serialized_end=84
|
|
36
36
|
_globals['_USERHASHES']._serialized_start=86
|
|
37
37
|
_globals['_USERHASHES']._serialized_end=114
|
|
38
38
|
_globals['_STATUSES']._serialized_start=116
|
|
39
39
|
_globals['_STATUSES']._serialized_end=144
|
|
40
|
-
_globals['
|
|
41
|
-
_globals['
|
|
42
|
-
_globals['
|
|
43
|
-
_globals['
|
|
44
|
-
_globals['
|
|
45
|
-
_globals['
|
|
46
|
-
_globals['
|
|
47
|
-
_globals['
|
|
48
|
-
_globals['
|
|
49
|
-
_globals['
|
|
50
|
-
_globals['
|
|
51
|
-
_globals['
|
|
52
|
-
_globals['
|
|
53
|
-
_globals['
|
|
54
|
-
_globals['
|
|
55
|
-
_globals['
|
|
56
|
-
_globals['
|
|
57
|
-
_globals['
|
|
58
|
-
_globals['
|
|
59
|
-
_globals['
|
|
60
|
-
_globals['
|
|
61
|
-
_globals['
|
|
62
|
-
_globals['
|
|
63
|
-
_globals['
|
|
64
|
-
_globals['
|
|
65
|
-
_globals['
|
|
66
|
-
_globals['
|
|
67
|
-
_globals['
|
|
68
|
-
_globals['
|
|
69
|
-
_globals['
|
|
40
|
+
_globals['_FIELDS']._serialized_start=146
|
|
41
|
+
_globals['_FIELDS']._serialized_end=170
|
|
42
|
+
_globals['_WORKSPACES']._serialized_start=172
|
|
43
|
+
_globals['_WORKSPACES']._serialized_end=204
|
|
44
|
+
_globals['_GETVERSIONREQUEST']._serialized_start=206
|
|
45
|
+
_globals['_GETVERSIONREQUEST']._serialized_end=225
|
|
46
|
+
_globals['_GETVERSIONRESPONSE']._serialized_start=227
|
|
47
|
+
_globals['_GETVERSIONRESPONSE']._serialized_end=275
|
|
48
|
+
_globals['_GETJOBTABLEREQUEST']._serialized_start=278
|
|
49
|
+
_globals['_GETJOBTABLEREQUEST']._serialized_end=887
|
|
50
|
+
_globals['_MANAGEDJOBINFO']._serialized_start=890
|
|
51
|
+
_globals['_MANAGEDJOBINFO']._serialized_end=1989
|
|
52
|
+
_globals['_MANAGEDJOBINFO_ACCELERATORSENTRY']._serialized_start=1711
|
|
53
|
+
_globals['_MANAGEDJOBINFO_ACCELERATORSENTRY']._serialized_end=1762
|
|
54
|
+
_globals['_MANAGEDJOBINFO_METADATAENTRY']._serialized_start=1764
|
|
55
|
+
_globals['_MANAGEDJOBINFO_METADATAENTRY']._serialized_end=1811
|
|
56
|
+
_globals['_GETJOBTABLERESPONSE']._serialized_start=1992
|
|
57
|
+
_globals['_GETJOBTABLERESPONSE']._serialized_end=2232
|
|
58
|
+
_globals['_GETJOBTABLERESPONSE_STATUSCOUNTSENTRY']._serialized_start=2181
|
|
59
|
+
_globals['_GETJOBTABLERESPONSE_STATUSCOUNTSENTRY']._serialized_end=2232
|
|
60
|
+
_globals['_GETALLJOBIDSBYNAMEREQUEST']._serialized_start=2234
|
|
61
|
+
_globals['_GETALLJOBIDSBYNAMEREQUEST']._serialized_end=2297
|
|
62
|
+
_globals['_GETALLJOBIDSBYNAMERESPONSE']._serialized_start=2299
|
|
63
|
+
_globals['_GETALLJOBIDSBYNAMERESPONSE']._serialized_end=2344
|
|
64
|
+
_globals['_CANCELJOBSREQUEST']._serialized_start=2347
|
|
65
|
+
_globals['_CANCELJOBSREQUEST']._serialized_end=2562
|
|
66
|
+
_globals['_CANCELJOBSRESPONSE']._serialized_start=2564
|
|
67
|
+
_globals['_CANCELJOBSRESPONSE']._serialized_end=2601
|
|
68
|
+
_globals['_STREAMLOGSREQUEST']._serialized_start=2604
|
|
69
|
+
_globals['_STREAMLOGSREQUEST']._serialized_end=2755
|
|
70
|
+
_globals['_STREAMLOGSRESPONSE']._serialized_start=2757
|
|
71
|
+
_globals['_STREAMLOGSRESPONSE']._serialized_end=2833
|
|
72
|
+
_globals['_MANAGEDJOBSSERVICE']._serialized_start=3758
|
|
73
|
+
_globals['_MANAGEDJOBSSERVICE']._serialized_end=4242
|
|
70
74
|
# @@protoc_insertion_point(module_scope)
|
|
@@ -76,6 +76,18 @@ class Statuses(_message.Message):
|
|
|
76
76
|
statuses: _containers.RepeatedScalarFieldContainer[str]
|
|
77
77
|
def __init__(self, statuses: _Optional[_Iterable[str]] = ...) -> None: ...
|
|
78
78
|
|
|
79
|
+
class Fields(_message.Message):
|
|
80
|
+
__slots__ = ("fields",)
|
|
81
|
+
FIELDS_FIELD_NUMBER: _ClassVar[int]
|
|
82
|
+
fields: _containers.RepeatedScalarFieldContainer[str]
|
|
83
|
+
def __init__(self, fields: _Optional[_Iterable[str]] = ...) -> None: ...
|
|
84
|
+
|
|
85
|
+
class Workspaces(_message.Message):
|
|
86
|
+
__slots__ = ("workspaces",)
|
|
87
|
+
WORKSPACES_FIELD_NUMBER: _ClassVar[int]
|
|
88
|
+
workspaces: _containers.RepeatedScalarFieldContainer[str]
|
|
89
|
+
def __init__(self, workspaces: _Optional[_Iterable[str]] = ...) -> None: ...
|
|
90
|
+
|
|
79
91
|
class GetVersionRequest(_message.Message):
|
|
80
92
|
__slots__ = ()
|
|
81
93
|
def __init__(self) -> None: ...
|
|
@@ -87,7 +99,7 @@ class GetVersionResponse(_message.Message):
|
|
|
87
99
|
def __init__(self, controller_version: _Optional[str] = ...) -> None: ...
|
|
88
100
|
|
|
89
101
|
class GetJobTableRequest(_message.Message):
|
|
90
|
-
__slots__ = ("skip_finished", "accessible_workspaces", "job_ids", "workspace_match", "name_match", "pool_match", "page", "limit", "user_hashes", "statuses", "show_jobs_without_user_hash")
|
|
102
|
+
__slots__ = ("skip_finished", "accessible_workspaces", "job_ids", "workspace_match", "name_match", "pool_match", "page", "limit", "user_hashes", "statuses", "show_jobs_without_user_hash", "fields")
|
|
91
103
|
SKIP_FINISHED_FIELD_NUMBER: _ClassVar[int]
|
|
92
104
|
ACCESSIBLE_WORKSPACES_FIELD_NUMBER: _ClassVar[int]
|
|
93
105
|
JOB_IDS_FIELD_NUMBER: _ClassVar[int]
|
|
@@ -99,8 +111,9 @@ class GetJobTableRequest(_message.Message):
|
|
|
99
111
|
USER_HASHES_FIELD_NUMBER: _ClassVar[int]
|
|
100
112
|
STATUSES_FIELD_NUMBER: _ClassVar[int]
|
|
101
113
|
SHOW_JOBS_WITHOUT_USER_HASH_FIELD_NUMBER: _ClassVar[int]
|
|
114
|
+
FIELDS_FIELD_NUMBER: _ClassVar[int]
|
|
102
115
|
skip_finished: bool
|
|
103
|
-
accessible_workspaces:
|
|
116
|
+
accessible_workspaces: Workspaces
|
|
104
117
|
job_ids: JobIds
|
|
105
118
|
workspace_match: str
|
|
106
119
|
name_match: str
|
|
@@ -110,10 +123,11 @@ class GetJobTableRequest(_message.Message):
|
|
|
110
123
|
user_hashes: UserHashes
|
|
111
124
|
statuses: Statuses
|
|
112
125
|
show_jobs_without_user_hash: bool
|
|
113
|
-
|
|
126
|
+
fields: Fields
|
|
127
|
+
def __init__(self, skip_finished: bool = ..., accessible_workspaces: _Optional[_Union[Workspaces, _Mapping]] = ..., job_ids: _Optional[_Union[JobIds, _Mapping]] = ..., workspace_match: _Optional[str] = ..., name_match: _Optional[str] = ..., pool_match: _Optional[str] = ..., page: _Optional[int] = ..., limit: _Optional[int] = ..., user_hashes: _Optional[_Union[UserHashes, _Mapping]] = ..., statuses: _Optional[_Union[Statuses, _Mapping]] = ..., show_jobs_without_user_hash: bool = ..., fields: _Optional[_Union[Fields, _Mapping]] = ...) -> None: ...
|
|
114
128
|
|
|
115
129
|
class ManagedJobInfo(_message.Message):
|
|
116
|
-
__slots__ = ("job_id", "task_id", "job_name", "task_name", "job_duration", "workspace", "status", "schedule_state", "resources", "cluster_resources", "cluster_resources_full", "cloud", "region", "infra", "accelerators", "recovery_count", "details", "failure_reason", "user_name", "user_hash", "submitted_at", "start_at", "end_at", "user_yaml", "entrypoint", "metadata", "pool", "pool_hash")
|
|
130
|
+
__slots__ = ("job_id", "task_id", "job_name", "task_name", "job_duration", "workspace", "status", "schedule_state", "resources", "cluster_resources", "cluster_resources_full", "cloud", "region", "infra", "accelerators", "recovery_count", "details", "failure_reason", "user_name", "user_hash", "submitted_at", "start_at", "end_at", "user_yaml", "entrypoint", "metadata", "pool", "pool_hash", "_job_id")
|
|
117
131
|
class AcceleratorsEntry(_message.Message):
|
|
118
132
|
__slots__ = ("key", "value")
|
|
119
133
|
KEY_FIELD_NUMBER: _ClassVar[int]
|
|
@@ -156,6 +170,7 @@ class ManagedJobInfo(_message.Message):
|
|
|
156
170
|
METADATA_FIELD_NUMBER: _ClassVar[int]
|
|
157
171
|
POOL_FIELD_NUMBER: _ClassVar[int]
|
|
158
172
|
POOL_HASH_FIELD_NUMBER: _ClassVar[int]
|
|
173
|
+
_JOB_ID_FIELD_NUMBER: _ClassVar[int]
|
|
159
174
|
job_id: int
|
|
160
175
|
task_id: int
|
|
161
176
|
job_name: str
|
|
@@ -184,7 +199,8 @@ class ManagedJobInfo(_message.Message):
|
|
|
184
199
|
metadata: _containers.ScalarMap[str, str]
|
|
185
200
|
pool: str
|
|
186
201
|
pool_hash: str
|
|
187
|
-
|
|
202
|
+
_job_id: int
|
|
203
|
+
def __init__(self, job_id: _Optional[int] = ..., task_id: _Optional[int] = ..., job_name: _Optional[str] = ..., task_name: _Optional[str] = ..., job_duration: _Optional[float] = ..., workspace: _Optional[str] = ..., status: _Optional[_Union[ManagedJobStatus, str]] = ..., schedule_state: _Optional[_Union[ManagedJobScheduleState, str]] = ..., resources: _Optional[str] = ..., cluster_resources: _Optional[str] = ..., cluster_resources_full: _Optional[str] = ..., cloud: _Optional[str] = ..., region: _Optional[str] = ..., infra: _Optional[str] = ..., accelerators: _Optional[_Mapping[str, float]] = ..., recovery_count: _Optional[int] = ..., details: _Optional[str] = ..., failure_reason: _Optional[str] = ..., user_name: _Optional[str] = ..., user_hash: _Optional[str] = ..., submitted_at: _Optional[float] = ..., start_at: _Optional[float] = ..., end_at: _Optional[float] = ..., user_yaml: _Optional[str] = ..., entrypoint: _Optional[str] = ..., metadata: _Optional[_Mapping[str, str]] = ..., pool: _Optional[str] = ..., pool_hash: _Optional[str] = ..., _job_id: _Optional[int] = ...) -> None: ...
|
|
188
204
|
|
|
189
205
|
class GetJobTableResponse(_message.Message):
|
|
190
206
|
__slots__ = ("jobs", "total", "total_no_filter", "status_counts")
|
sky/serve/client/impl.py
CHANGED
|
@@ -8,6 +8,7 @@ import click
|
|
|
8
8
|
from sky.client import common as client_common
|
|
9
9
|
from sky.server import common as server_common
|
|
10
10
|
from sky.server.requests import payloads
|
|
11
|
+
from sky.server.requests import request_names
|
|
11
12
|
from sky.utils import admin_policy_utils
|
|
12
13
|
from sky.utils import dag_utils
|
|
13
14
|
|
|
@@ -32,7 +33,9 @@ def up(
|
|
|
32
33
|
|
|
33
34
|
dag = dag_utils.convert_entrypoint_to_dag(task)
|
|
34
35
|
with admin_policy_utils.apply_and_use_config_in_current_request(
|
|
35
|
-
dag,
|
|
36
|
+
dag,
|
|
37
|
+
request_name=request_names.AdminPolicyRequestName.SERVE_UP,
|
|
38
|
+
at_client_side=True) as dag:
|
|
36
39
|
sdk.validate(dag)
|
|
37
40
|
request_id = sdk.optimize(dag)
|
|
38
41
|
sdk.stream_and_get(request_id)
|
|
@@ -77,7 +80,9 @@ def update(
|
|
|
77
80
|
|
|
78
81
|
dag = dag_utils.convert_entrypoint_to_dag(task)
|
|
79
82
|
with admin_policy_utils.apply_and_use_config_in_current_request(
|
|
80
|
-
dag,
|
|
83
|
+
dag,
|
|
84
|
+
request_name=request_names.AdminPolicyRequestName.SERVE_UPDATE,
|
|
85
|
+
at_client_side=True) as dag:
|
|
81
86
|
sdk.validate(dag)
|
|
82
87
|
request_id = sdk.optimize(dag)
|
|
83
88
|
sdk.stream_and_get(request_id)
|
|
@@ -146,7 +151,10 @@ def apply(
|
|
|
146
151
|
else:
|
|
147
152
|
dag = dag_utils.convert_entrypoint_to_dag(task)
|
|
148
153
|
with admin_policy_utils.apply_and_use_config_in_current_request(
|
|
149
|
-
dag,
|
|
154
|
+
dag,
|
|
155
|
+
request_name=request_names.AdminPolicyRequestName.
|
|
156
|
+
JOBS_POOL_APPLY,
|
|
157
|
+
at_client_side=True) as dag:
|
|
150
158
|
sdk.validate(dag)
|
|
151
159
|
request_id = sdk.optimize(dag)
|
|
152
160
|
sdk.stream_and_get(request_id)
|
sky/serve/replica_managers.py
CHANGED
|
@@ -27,6 +27,7 @@ from sky.serve import serve_state
|
|
|
27
27
|
from sky.serve import serve_utils
|
|
28
28
|
from sky.serve import service
|
|
29
29
|
from sky.serve import spot_placer
|
|
30
|
+
from sky.server.requests import request_names
|
|
30
31
|
from sky.skylet import constants
|
|
31
32
|
from sky.skylet import job_lib
|
|
32
33
|
from sky.usage import usage_lib
|
|
@@ -107,6 +108,8 @@ def launch_cluster(replica_id: int,
|
|
|
107
108
|
execution.launch(task,
|
|
108
109
|
cluster_name,
|
|
109
110
|
retry_until_up=retry_until_up,
|
|
111
|
+
_request_name=request_names.AdminPolicyRequestName.
|
|
112
|
+
SERVE_LAUNCH_REPLICA,
|
|
110
113
|
_is_launched_by_sky_serve_controller=True)
|
|
111
114
|
logger.info(f'Replica cluster {cluster_name} launched.')
|
|
112
115
|
except (exceptions.InvalidClusterNameError,
|
|
@@ -495,8 +498,8 @@ class ReplicaInfo:
|
|
|
495
498
|
info_dict['cloud'] = repr(handle.launched_resources.cloud)
|
|
496
499
|
info_dict['region'] = handle.launched_resources.region
|
|
497
500
|
info_dict['resources_str'] = (
|
|
498
|
-
resources_utils.get_readable_resources_repr(
|
|
499
|
-
|
|
501
|
+
resources_utils.get_readable_resources_repr(
|
|
502
|
+
handle, simplified_only=True)[0])
|
|
500
503
|
return info_dict
|
|
501
504
|
|
|
502
505
|
def __repr__(self) -> str:
|
sky/serve/serve_utils.py
CHANGED
|
@@ -1550,8 +1550,15 @@ def _format_replica_table(replica_records: List[Dict[str, Any]], show_all: bool,
|
|
|
1550
1550
|
'handle']
|
|
1551
1551
|
if replica_handle is not None:
|
|
1552
1552
|
infra = replica_handle.launched_resources.infra.formatted_str()
|
|
1553
|
-
|
|
1554
|
-
|
|
1553
|
+
simplified = not show_all
|
|
1554
|
+
resources_str_simple, resources_str_full = (
|
|
1555
|
+
resources_utils.get_readable_resources_repr(
|
|
1556
|
+
replica_handle, simplified_only=simplified))
|
|
1557
|
+
if simplified:
|
|
1558
|
+
resources_str = resources_str_simple
|
|
1559
|
+
else:
|
|
1560
|
+
assert resources_str_full is not None
|
|
1561
|
+
resources_str = resources_str_full
|
|
1555
1562
|
|
|
1556
1563
|
replica_values = [
|
|
1557
1564
|
service_name,
|
sky/serve/server/impl.py
CHANGED
|
@@ -26,6 +26,7 @@ from sky.serve import constants as serve_constants
|
|
|
26
26
|
from sky.serve import serve_rpc_utils
|
|
27
27
|
from sky.serve import serve_state
|
|
28
28
|
from sky.serve import serve_utils
|
|
29
|
+
from sky.server.requests import request_names
|
|
29
30
|
from sky.skylet import constants
|
|
30
31
|
from sky.skylet import job_lib
|
|
31
32
|
from sky.utils import admin_policy_utils
|
|
@@ -152,7 +153,8 @@ def up(
|
|
|
152
153
|
# Always apply the policy again here, even though it might have been applied
|
|
153
154
|
# in the CLI. This is to ensure that we apply the policy to the final DAG
|
|
154
155
|
# and get the mutated config.
|
|
155
|
-
dag, mutated_user_config = admin_policy_utils.apply(
|
|
156
|
+
dag, mutated_user_config = admin_policy_utils.apply(
|
|
157
|
+
dag, request_name=request_names.AdminPolicyRequestName.SERVE_UP)
|
|
156
158
|
dag.resolve_and_validate_volumes()
|
|
157
159
|
dag.pre_mount_volumes()
|
|
158
160
|
task = dag.tasks[0]
|
|
@@ -277,6 +279,8 @@ def up(
|
|
|
277
279
|
task=controller_task,
|
|
278
280
|
cluster_name=controller_name,
|
|
279
281
|
retry_until_up=True,
|
|
282
|
+
_request_name=request_names.AdminPolicyRequestName.
|
|
283
|
+
SERVE_LAUNCH_CONTROLLER,
|
|
280
284
|
_disable_controller_check=True,
|
|
281
285
|
)
|
|
282
286
|
else:
|
|
@@ -541,7 +545,8 @@ def update(
|
|
|
541
545
|
# and get the mutated config.
|
|
542
546
|
# TODO(cblmemo,zhwu): If a user sets a new skypilot_config, the update
|
|
543
547
|
# will not apply the config.
|
|
544
|
-
dag, _ = admin_policy_utils.apply(
|
|
548
|
+
dag, _ = admin_policy_utils.apply(
|
|
549
|
+
task, request_name=request_names.AdminPolicyRequestName.SERVE_UPDATE)
|
|
545
550
|
task = dag.tasks[0]
|
|
546
551
|
if pool:
|
|
547
552
|
if task.run is not None:
|
sky/serve/server/server.py
CHANGED
|
@@ -10,6 +10,7 @@ from sky.server import common as server_common
|
|
|
10
10
|
from sky.server import stream_utils
|
|
11
11
|
from sky.server.requests import executor
|
|
12
12
|
from sky.server.requests import payloads
|
|
13
|
+
from sky.server.requests import request_names
|
|
13
14
|
from sky.server.requests import requests as api_requests
|
|
14
15
|
from sky.skylet import constants
|
|
15
16
|
from sky.utils import common
|
|
@@ -23,9 +24,9 @@ async def up(
|
|
|
23
24
|
request: fastapi.Request,
|
|
24
25
|
up_body: payloads.ServeUpBody,
|
|
25
26
|
) -> None:
|
|
26
|
-
executor.
|
|
27
|
+
await executor.schedule_request_async(
|
|
27
28
|
request_id=request.state.request_id,
|
|
28
|
-
request_name=
|
|
29
|
+
request_name=request_names.RequestName.SERVE_UP,
|
|
29
30
|
request_body=up_body,
|
|
30
31
|
func=core.up,
|
|
31
32
|
schedule_type=api_requests.ScheduleType.LONG,
|
|
@@ -38,9 +39,9 @@ async def update(
|
|
|
38
39
|
request: fastapi.Request,
|
|
39
40
|
update_body: payloads.ServeUpdateBody,
|
|
40
41
|
) -> None:
|
|
41
|
-
executor.
|
|
42
|
+
await executor.schedule_request_async(
|
|
42
43
|
request_id=request.state.request_id,
|
|
43
|
-
request_name=
|
|
44
|
+
request_name=request_names.RequestName.SERVE_UPDATE,
|
|
44
45
|
request_body=update_body,
|
|
45
46
|
func=core.update,
|
|
46
47
|
schedule_type=api_requests.ScheduleType.SHORT,
|
|
@@ -53,9 +54,9 @@ async def down(
|
|
|
53
54
|
request: fastapi.Request,
|
|
54
55
|
down_body: payloads.ServeDownBody,
|
|
55
56
|
) -> None:
|
|
56
|
-
executor.
|
|
57
|
+
await executor.schedule_request_async(
|
|
57
58
|
request_id=request.state.request_id,
|
|
58
|
-
request_name=
|
|
59
|
+
request_name=request_names.RequestName.SERVE_DOWN,
|
|
59
60
|
request_body=down_body,
|
|
60
61
|
func=core.down,
|
|
61
62
|
schedule_type=api_requests.ScheduleType.SHORT,
|
|
@@ -68,9 +69,9 @@ async def terminate_replica(
|
|
|
68
69
|
request: fastapi.Request,
|
|
69
70
|
terminate_replica_body: payloads.ServeTerminateReplicaBody,
|
|
70
71
|
) -> None:
|
|
71
|
-
executor.
|
|
72
|
+
await executor.schedule_request_async(
|
|
72
73
|
request_id=request.state.request_id,
|
|
73
|
-
request_name=
|
|
74
|
+
request_name=request_names.RequestName.SERVE_TERMINATE_REPLICA,
|
|
74
75
|
request_body=terminate_replica_body,
|
|
75
76
|
func=core.terminate_replica,
|
|
76
77
|
schedule_type=api_requests.ScheduleType.SHORT,
|
|
@@ -83,9 +84,9 @@ async def status(
|
|
|
83
84
|
request: fastapi.Request,
|
|
84
85
|
status_body: payloads.ServeStatusBody,
|
|
85
86
|
) -> None:
|
|
86
|
-
executor.
|
|
87
|
+
await executor.schedule_request_async(
|
|
87
88
|
request_id=request.state.request_id,
|
|
88
|
-
request_name=
|
|
89
|
+
request_name=request_names.RequestName.SERVE_STATUS,
|
|
89
90
|
request_body=status_body,
|
|
90
91
|
func=core.status,
|
|
91
92
|
schedule_type=api_requests.ScheduleType.SHORT,
|
|
@@ -98,9 +99,10 @@ async def tail_logs(
|
|
|
98
99
|
request: fastapi.Request, log_body: payloads.ServeLogsBody,
|
|
99
100
|
background_tasks: fastapi.BackgroundTasks
|
|
100
101
|
) -> fastapi.responses.StreamingResponse:
|
|
101
|
-
|
|
102
|
+
executor.check_request_thread_executor_available()
|
|
103
|
+
request_task = await executor.prepare_request_async(
|
|
102
104
|
request_id=request.state.request_id,
|
|
103
|
-
request_name=
|
|
105
|
+
request_name=request_names.RequestName.SERVE_LOGS,
|
|
104
106
|
request_body=log_body,
|
|
105
107
|
func=core.tail_logs,
|
|
106
108
|
schedule_type=api_requests.ScheduleType.SHORT,
|
|
@@ -109,10 +111,11 @@ async def tail_logs(
|
|
|
109
111
|
task = executor.execute_request_in_coroutine(request_task)
|
|
110
112
|
# Cancel the coroutine after the request is done or client disconnects
|
|
111
113
|
background_tasks.add_task(task.cancel)
|
|
112
|
-
return stream_utils.
|
|
114
|
+
return stream_utils.stream_response_for_long_request(
|
|
113
115
|
request_id=request_task.request_id,
|
|
114
116
|
logs_path=request_task.log_path,
|
|
115
117
|
background_tasks=background_tasks,
|
|
118
|
+
kill_request_on_disconnect=False,
|
|
116
119
|
)
|
|
117
120
|
|
|
118
121
|
|
|
@@ -130,9 +133,9 @@ async def download_logs(
|
|
|
130
133
|
# We should reuse the original request body, so that the env vars, such as
|
|
131
134
|
# user hash, are kept the same.
|
|
132
135
|
download_logs_body.local_dir = str(logs_dir_on_api_server)
|
|
133
|
-
executor.
|
|
136
|
+
await executor.schedule_request_async(
|
|
134
137
|
request_id=request.state.request_id,
|
|
135
|
-
request_name=
|
|
138
|
+
request_name=request_names.RequestName.SERVE_SYNC_DOWN_LOGS,
|
|
136
139
|
request_body=download_logs_body,
|
|
137
140
|
func=core.sync_down_logs,
|
|
138
141
|
schedule_type=api_requests.ScheduleType.SHORT,
|
sky/serve/service.py
CHANGED
|
@@ -13,7 +13,6 @@ from typing import Dict
|
|
|
13
13
|
|
|
14
14
|
import filelock
|
|
15
15
|
|
|
16
|
-
from sky import authentication
|
|
17
16
|
from sky import exceptions
|
|
18
17
|
from sky import global_user_state
|
|
19
18
|
from sky import sky_logging
|
|
@@ -28,6 +27,7 @@ from sky.serve import replica_managers
|
|
|
28
27
|
from sky.serve import serve_state
|
|
29
28
|
from sky.serve import serve_utils
|
|
30
29
|
from sky.skylet import constants as skylet_constants
|
|
30
|
+
from sky.utils import auth_utils
|
|
31
31
|
from sky.utils import common_utils
|
|
32
32
|
from sky.utils import controller_utils
|
|
33
33
|
from sky.utils import subprocess_utils
|
|
@@ -227,7 +227,7 @@ def _start(service_name: str, tmp_task_yaml: str, job_id: int, entrypoint: str):
|
|
|
227
227
|
"""
|
|
228
228
|
# Generate ssh key pair to avoid race condition when multiple sky.launch
|
|
229
229
|
# are executed at the same time.
|
|
230
|
-
|
|
230
|
+
auth_utils.get_or_generate_keys()
|
|
231
231
|
|
|
232
232
|
# Initialize database record for the service.
|
|
233
233
|
task = task_lib.Task.from_yaml(tmp_task_yaml)
|