skypilot-nightly 1.0.0.dev20250925__py3-none-any.whl → 1.0.0.dev20250927__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 +2 -2
- sky/backends/backend_utils.py +38 -14
- sky/backends/cloud_vm_ray_backend.py +151 -36
- sky/client/cli/command.py +18 -9
- sky/client/cli/table_utils.py +34 -0
- sky/client/common.py +4 -2
- sky/client/sdk.py +11 -7
- sky/client/sdk_async.py +5 -5
- sky/core.py +6 -6
- sky/dashboard/out/404.html +1 -1
- sky/dashboard/out/_next/static/{bn-NHt5qTzeTN2PefXuDA → UDSEoDB67vwFMZyCJ4HWU}/_buildManifest.js +1 -1
- sky/dashboard/out/_next/static/chunks/1121-d0782b9251f0fcd3.js +1 -0
- sky/dashboard/out/_next/static/chunks/{3294.03e02ae73455f48e.js → 3294.93d9336bdc032b3a.js} +1 -1
- sky/dashboard/out/_next/static/chunks/6856-5fdc9b851a18acdb.js +1 -0
- sky/dashboard/out/_next/static/chunks/9037-d0c00018a5ba198c.js +6 -0
- sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-ad77b12fc736dca3.js +16 -0
- sky/dashboard/out/_next/static/chunks/{webpack-16ba1d7187d2e3b1.js → webpack-7340bc0f0dd8ae74.js} +1 -1
- 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/execution.py +0 -1
- sky/global_user_state.py +57 -34
- sky/jobs/constants.py +2 -0
- sky/jobs/controller.py +4 -0
- sky/jobs/server/core.py +98 -26
- sky/jobs/server/utils.py +65 -32
- sky/jobs/state.py +145 -3
- sky/jobs/utils.py +85 -7
- sky/provision/runpod/__init__.py +2 -0
- sky/schemas/api/responses.py +18 -0
- sky/schemas/db/global_user_state/009_last_activity_and_launched_at.py +89 -0
- sky/schemas/generated/managed_jobsv1_pb2.py +70 -0
- sky/schemas/generated/managed_jobsv1_pb2.pyi +262 -0
- sky/schemas/generated/managed_jobsv1_pb2_grpc.py +278 -0
- sky/serve/serve_utils.py +16 -0
- sky/serve/server/core.py +1 -1
- sky/serve/server/impl.py +6 -6
- sky/server/requests/payloads.py +2 -1
- sky/server/requests/serializers/decoders.py +2 -2
- sky/server/requests/serializers/encoders.py +7 -3
- sky/setup_files/dependencies.py +1 -1
- sky/skylet/constants.py +4 -1
- sky/skylet/events.py +42 -0
- sky/skylet/job_lib.py +2 -32
- sky/skylet/log_lib.py +211 -0
- sky/skylet/log_lib.pyi +30 -1
- sky/skylet/services.py +208 -2
- sky/skylet/skylet.py +3 -0
- sky/templates/jobs-controller.yaml.j2 +3 -0
- sky/templates/kubernetes-ray.yml.j2 +8 -3
- sky/utils/db/db_utils.py +5 -1
- sky/utils/db/migration_utils.py +1 -1
- sky/utils/kubernetes/kubernetes_deploy_utils.py +35 -12
- sky/volumes/server/core.py +1 -0
- sky/volumes/volume.py +16 -17
- {skypilot_nightly-1.0.0.dev20250925.dist-info → skypilot_nightly-1.0.0.dev20250927.dist-info}/METADATA +36 -36
- {skypilot_nightly-1.0.0.dev20250925.dist-info → skypilot_nightly-1.0.0.dev20250927.dist-info}/RECORD +74 -69
- sky/dashboard/out/_next/static/chunks/1121-b911fc0a0b4742f0.js +0 -1
- sky/dashboard/out/_next/static/chunks/6856-2b3600ff2854d066.js +0 -1
- sky/dashboard/out/_next/static/chunks/9037-472ee1222cb1e158.js +0 -6
- sky/dashboard/out/_next/static/chunks/pages/clusters/[cluster]/[job]-2cb9b15e09cda628.js +0 -16
- /sky/dashboard/out/_next/static/{bn-NHt5qTzeTN2PefXuDA → UDSEoDB67vwFMZyCJ4HWU}/_ssgManifest.js +0 -0
- {skypilot_nightly-1.0.0.dev20250925.dist-info → skypilot_nightly-1.0.0.dev20250927.dist-info}/WHEEL +0 -0
- {skypilot_nightly-1.0.0.dev20250925.dist-info → skypilot_nightly-1.0.0.dev20250927.dist-info}/entry_points.txt +0 -0
- {skypilot_nightly-1.0.0.dev20250925.dist-info → skypilot_nightly-1.0.0.dev20250927.dist-info}/licenses/LICENSE +0 -0
- {skypilot_nightly-1.0.0.dev20250925.dist-info → skypilot_nightly-1.0.0.dev20250927.dist-info}/top_level.txt +0 -0
sky/schemas/api/responses.py
CHANGED
|
@@ -7,6 +7,7 @@ import pydantic
|
|
|
7
7
|
|
|
8
8
|
from sky import models
|
|
9
9
|
from sky.server import common
|
|
10
|
+
from sky.skylet import job_lib
|
|
10
11
|
from sky.utils import status_lib
|
|
11
12
|
|
|
12
13
|
|
|
@@ -121,6 +122,23 @@ class StatusResponse(ResponseBaseModel):
|
|
|
121
122
|
cluster_name_on_cloud: Optional[str] = None
|
|
122
123
|
|
|
123
124
|
|
|
125
|
+
class ClusterJobRecord(ResponseBaseModel):
|
|
126
|
+
"""Response for the cluster job queue endpoint."""
|
|
127
|
+
job_id: int
|
|
128
|
+
job_name: str
|
|
129
|
+
username: str
|
|
130
|
+
user_hash: str
|
|
131
|
+
submitted_at: float
|
|
132
|
+
# None if the job has not started yet.
|
|
133
|
+
start_at: Optional[float] = None
|
|
134
|
+
# None if the job has not ended yet.
|
|
135
|
+
end_at: Optional[float] = None
|
|
136
|
+
resources: str
|
|
137
|
+
status: job_lib.JobStatus
|
|
138
|
+
log_path: str
|
|
139
|
+
metadata: Dict[str, Any] = {}
|
|
140
|
+
|
|
141
|
+
|
|
124
142
|
class UploadStatus(enum.Enum):
|
|
125
143
|
"""Status of the upload."""
|
|
126
144
|
UPLOADING = 'uploading'
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"""Add last_activity_time and launched_at to cluster history.
|
|
2
|
+
|
|
3
|
+
Revision ID: 009
|
|
4
|
+
Revises: 008
|
|
5
|
+
Create Date: 2025-09-24
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
# pylint: disable=invalid-name
|
|
9
|
+
import pickle
|
|
10
|
+
from typing import Sequence, Union
|
|
11
|
+
|
|
12
|
+
from alembic import op
|
|
13
|
+
import sqlalchemy as sa
|
|
14
|
+
|
|
15
|
+
from sky.utils.db import db_utils
|
|
16
|
+
|
|
17
|
+
# revision identifiers, used by Alembic.
|
|
18
|
+
revision: str = '009'
|
|
19
|
+
down_revision: Union[str, Sequence[str], None] = '008'
|
|
20
|
+
branch_labels: Union[str, Sequence[str], None] = None
|
|
21
|
+
depends_on: Union[str, Sequence[str], None] = None
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def upgrade():
|
|
25
|
+
"""Add last_activity_time and launched_at columns to cluster history."""
|
|
26
|
+
with op.get_context().autocommit_block():
|
|
27
|
+
# Add the columns with indices
|
|
28
|
+
db_utils.add_column_to_table_alembic('cluster_history',
|
|
29
|
+
'last_activity_time',
|
|
30
|
+
sa.Integer(),
|
|
31
|
+
server_default=None,
|
|
32
|
+
index=True)
|
|
33
|
+
|
|
34
|
+
db_utils.add_column_to_table_alembic('cluster_history',
|
|
35
|
+
'launched_at',
|
|
36
|
+
sa.Integer(),
|
|
37
|
+
server_default=None,
|
|
38
|
+
index=True)
|
|
39
|
+
|
|
40
|
+
# Populate the columns for existing rows
|
|
41
|
+
_populate_cluster_history_columns()
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def _populate_cluster_history_columns():
|
|
45
|
+
"""Populate last_activity_time and launched_at for existing rows using
|
|
46
|
+
usage_intervals logic."""
|
|
47
|
+
connection = op.get_bind()
|
|
48
|
+
|
|
49
|
+
# Get all existing rows with usage_intervals
|
|
50
|
+
result = connection.execute(
|
|
51
|
+
sa.text('SELECT cluster_hash, usage_intervals FROM cluster_history '
|
|
52
|
+
'WHERE usage_intervals IS NOT NULL'))
|
|
53
|
+
|
|
54
|
+
for row in result:
|
|
55
|
+
cluster_hash = row[0]
|
|
56
|
+
usage_intervals_blob = row[1]
|
|
57
|
+
|
|
58
|
+
try:
|
|
59
|
+
# Deserialize the usage_intervals
|
|
60
|
+
usage_intervals = pickle.loads(usage_intervals_blob)
|
|
61
|
+
|
|
62
|
+
if usage_intervals:
|
|
63
|
+
# Calculate last_activity_time: end time of last interval
|
|
64
|
+
# or start time if still running
|
|
65
|
+
last_interval = usage_intervals[-1]
|
|
66
|
+
last_activity_time = (last_interval[1] if last_interval[1]
|
|
67
|
+
is not None else last_interval[0])
|
|
68
|
+
|
|
69
|
+
# Calculate launched_at: start time of first interval
|
|
70
|
+
launched_at = usage_intervals[0][0]
|
|
71
|
+
|
|
72
|
+
# Update the row with both calculated values
|
|
73
|
+
connection.execute(
|
|
74
|
+
sa.text('UPDATE cluster_history '
|
|
75
|
+
'SET last_activity_time = :last_activity_time, '
|
|
76
|
+
'launched_at = :launched_at '
|
|
77
|
+
'WHERE cluster_hash = :cluster_hash'), {
|
|
78
|
+
'last_activity_time': last_activity_time,
|
|
79
|
+
'launched_at': launched_at,
|
|
80
|
+
'cluster_hash': cluster_hash
|
|
81
|
+
})
|
|
82
|
+
except (pickle.PickleError, AttributeError, IndexError):
|
|
83
|
+
# Skip rows with corrupted or invalid usage_intervals
|
|
84
|
+
continue
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
def downgrade():
|
|
88
|
+
"""No-op for backward compatibility."""
|
|
89
|
+
pass
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
3
|
+
# source: sky/schemas/generated/managed_jobsv1.proto
|
|
4
|
+
# Protobuf Python Version: 5.26.1
|
|
5
|
+
"""Generated protocol buffer code."""
|
|
6
|
+
from google.protobuf import descriptor as _descriptor
|
|
7
|
+
from google.protobuf import descriptor_pool as _descriptor_pool
|
|
8
|
+
from google.protobuf import symbol_database as _symbol_database
|
|
9
|
+
from google.protobuf.internal import builder as _builder
|
|
10
|
+
# @@protoc_insertion_point(imports)
|
|
11
|
+
|
|
12
|
+
_sym_db = _symbol_database.Default()
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
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\"\xec\x03\n\x12GetJobTableRequest\x12\x15\n\rskip_finished\x18\x01 \x01(\x08\x12\x1d\n\x15\x61\x63\x63\x65ssible_workspaces\x18\x02 \x03(\t\x12-\n\x07job_ids\x18\x03 \x01(\x0b\x32\x17.managed_jobs.v1.JobIdsH\x00\x88\x01\x01\x12\x1c\n\x0fworkspace_match\x18\x04 \x01(\tH\x01\x88\x01\x01\x12\x17\n\nname_match\x18\x05 \x01(\tH\x02\x88\x01\x01\x12\x17\n\npool_match\x18\x06 \x01(\tH\x03\x88\x01\x01\x12\x11\n\x04page\x18\x07 \x01(\x05H\x04\x88\x01\x01\x12\x12\n\x05limit\x18\x08 \x01(\x05H\x05\x88\x01\x01\x12\x35\n\x0buser_hashes\x18\t \x01(\x0b\x32\x1b.managed_jobs.v1.UserHashesH\x06\x88\x01\x01\x12\x30\n\x08statuses\x18\n \x01(\x0b\x32\x19.managed_jobs.v1.StatusesH\x07\x88\x01\x01\x12#\n\x1bshow_jobs_without_user_hash\x18\x0b \x01(\x08\x42\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_statuses\"\xa9\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\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_hash\"\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
|
+
|
|
19
|
+
_globals = globals()
|
|
20
|
+
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
21
|
+
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'sky.schemas.generated.managed_jobsv1_pb2', _globals)
|
|
22
|
+
if not _descriptor._USE_C_DESCRIPTORS:
|
|
23
|
+
DESCRIPTOR._loaded_options = None
|
|
24
|
+
_globals['_MANAGEDJOBINFO_ACCELERATORSENTRY']._loaded_options = None
|
|
25
|
+
_globals['_MANAGEDJOBINFO_ACCELERATORSENTRY']._serialized_options = b'8\001'
|
|
26
|
+
_globals['_MANAGEDJOBINFO_METADATAENTRY']._loaded_options = None
|
|
27
|
+
_globals['_MANAGEDJOBINFO_METADATAENTRY']._serialized_options = b'8\001'
|
|
28
|
+
_globals['_GETJOBTABLERESPONSE_STATUSCOUNTSENTRY']._loaded_options = None
|
|
29
|
+
_globals['_GETJOBTABLERESPONSE_STATUSCOUNTSENTRY']._serialized_options = b'8\001'
|
|
30
|
+
_globals['_MANAGEDJOBSTATUS']._serialized_start=2625
|
|
31
|
+
_globals['_MANAGEDJOBSTATUS']._serialized_end=3142
|
|
32
|
+
_globals['_MANAGEDJOBSCHEDULESTATE']._serialized_start=3145
|
|
33
|
+
_globals['_MANAGEDJOBSCHEDULESTATE']._serialized_end=3544
|
|
34
|
+
_globals['_JOBIDS']._serialized_start=63
|
|
35
|
+
_globals['_JOBIDS']._serialized_end=84
|
|
36
|
+
_globals['_USERHASHES']._serialized_start=86
|
|
37
|
+
_globals['_USERHASHES']._serialized_end=114
|
|
38
|
+
_globals['_STATUSES']._serialized_start=116
|
|
39
|
+
_globals['_STATUSES']._serialized_end=144
|
|
40
|
+
_globals['_GETVERSIONREQUEST']._serialized_start=146
|
|
41
|
+
_globals['_GETVERSIONREQUEST']._serialized_end=165
|
|
42
|
+
_globals['_GETVERSIONRESPONSE']._serialized_start=167
|
|
43
|
+
_globals['_GETVERSIONRESPONSE']._serialized_end=215
|
|
44
|
+
_globals['_GETJOBTABLEREQUEST']._serialized_start=218
|
|
45
|
+
_globals['_GETJOBTABLEREQUEST']._serialized_end=710
|
|
46
|
+
_globals['_MANAGEDJOBINFO']._serialized_start=713
|
|
47
|
+
_globals['_MANAGEDJOBINFO']._serialized_end=1778
|
|
48
|
+
_globals['_MANAGEDJOBINFO_ACCELERATORSENTRY']._serialized_start=1512
|
|
49
|
+
_globals['_MANAGEDJOBINFO_ACCELERATORSENTRY']._serialized_end=1563
|
|
50
|
+
_globals['_MANAGEDJOBINFO_METADATAENTRY']._serialized_start=1565
|
|
51
|
+
_globals['_MANAGEDJOBINFO_METADATAENTRY']._serialized_end=1612
|
|
52
|
+
_globals['_GETJOBTABLERESPONSE']._serialized_start=1781
|
|
53
|
+
_globals['_GETJOBTABLERESPONSE']._serialized_end=2021
|
|
54
|
+
_globals['_GETJOBTABLERESPONSE_STATUSCOUNTSENTRY']._serialized_start=1970
|
|
55
|
+
_globals['_GETJOBTABLERESPONSE_STATUSCOUNTSENTRY']._serialized_end=2021
|
|
56
|
+
_globals['_GETALLJOBIDSBYNAMEREQUEST']._serialized_start=2023
|
|
57
|
+
_globals['_GETALLJOBIDSBYNAMEREQUEST']._serialized_end=2086
|
|
58
|
+
_globals['_GETALLJOBIDSBYNAMERESPONSE']._serialized_start=2088
|
|
59
|
+
_globals['_GETALLJOBIDSBYNAMERESPONSE']._serialized_end=2133
|
|
60
|
+
_globals['_CANCELJOBSREQUEST']._serialized_start=2136
|
|
61
|
+
_globals['_CANCELJOBSREQUEST']._serialized_end=2351
|
|
62
|
+
_globals['_CANCELJOBSRESPONSE']._serialized_start=2353
|
|
63
|
+
_globals['_CANCELJOBSRESPONSE']._serialized_end=2390
|
|
64
|
+
_globals['_STREAMLOGSREQUEST']._serialized_start=2393
|
|
65
|
+
_globals['_STREAMLOGSREQUEST']._serialized_end=2544
|
|
66
|
+
_globals['_STREAMLOGSRESPONSE']._serialized_start=2546
|
|
67
|
+
_globals['_STREAMLOGSRESPONSE']._serialized_end=2622
|
|
68
|
+
_globals['_MANAGEDJOBSSERVICE']._serialized_start=3547
|
|
69
|
+
_globals['_MANAGEDJOBSSERVICE']._serialized_end=4031
|
|
70
|
+
# @@protoc_insertion_point(module_scope)
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
from google.protobuf.internal import containers as _containers
|
|
2
|
+
from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
|
|
3
|
+
from google.protobuf import descriptor as _descriptor
|
|
4
|
+
from google.protobuf import message as _message
|
|
5
|
+
from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union
|
|
6
|
+
|
|
7
|
+
DESCRIPTOR: _descriptor.FileDescriptor
|
|
8
|
+
|
|
9
|
+
class ManagedJobStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
|
|
10
|
+
__slots__ = ()
|
|
11
|
+
MANAGED_JOB_STATUS_UNSPECIFIED: _ClassVar[ManagedJobStatus]
|
|
12
|
+
MANAGED_JOB_STATUS_PENDING: _ClassVar[ManagedJobStatus]
|
|
13
|
+
MANAGED_JOB_STATUS_SUBMITTED: _ClassVar[ManagedJobStatus]
|
|
14
|
+
MANAGED_JOB_STATUS_STARTING: _ClassVar[ManagedJobStatus]
|
|
15
|
+
MANAGED_JOB_STATUS_RUNNING: _ClassVar[ManagedJobStatus]
|
|
16
|
+
MANAGED_JOB_STATUS_RECOVERING: _ClassVar[ManagedJobStatus]
|
|
17
|
+
MANAGED_JOB_STATUS_CANCELLING: _ClassVar[ManagedJobStatus]
|
|
18
|
+
MANAGED_JOB_STATUS_SUCCEEDED: _ClassVar[ManagedJobStatus]
|
|
19
|
+
MANAGED_JOB_STATUS_CANCELLED: _ClassVar[ManagedJobStatus]
|
|
20
|
+
MANAGED_JOB_STATUS_FAILED: _ClassVar[ManagedJobStatus]
|
|
21
|
+
MANAGED_JOB_STATUS_FAILED_SETUP: _ClassVar[ManagedJobStatus]
|
|
22
|
+
MANAGED_JOB_STATUS_FAILED_PRECHECKS: _ClassVar[ManagedJobStatus]
|
|
23
|
+
MANAGED_JOB_STATUS_FAILED_NO_RESOURCE: _ClassVar[ManagedJobStatus]
|
|
24
|
+
MANAGED_JOB_STATUS_FAILED_CONTROLLER: _ClassVar[ManagedJobStatus]
|
|
25
|
+
|
|
26
|
+
class ManagedJobScheduleState(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
|
|
27
|
+
__slots__ = ()
|
|
28
|
+
MANAGED_JOB_SCHEDULE_STATE_UNSPECIFIED: _ClassVar[ManagedJobScheduleState]
|
|
29
|
+
MANAGED_JOB_SCHEDULE_STATE_INVALID: _ClassVar[ManagedJobScheduleState]
|
|
30
|
+
MANAGED_JOB_SCHEDULE_STATE_INACTIVE: _ClassVar[ManagedJobScheduleState]
|
|
31
|
+
MANAGED_JOB_SCHEDULE_STATE_WAITING: _ClassVar[ManagedJobScheduleState]
|
|
32
|
+
MANAGED_JOB_SCHEDULE_STATE_ALIVE_WAITING: _ClassVar[ManagedJobScheduleState]
|
|
33
|
+
MANAGED_JOB_SCHEDULE_STATE_LAUNCHING: _ClassVar[ManagedJobScheduleState]
|
|
34
|
+
MANAGED_JOB_SCHEDULE_STATE_ALIVE_BACKOFF: _ClassVar[ManagedJobScheduleState]
|
|
35
|
+
MANAGED_JOB_SCHEDULE_STATE_ALIVE: _ClassVar[ManagedJobScheduleState]
|
|
36
|
+
MANAGED_JOB_SCHEDULE_STATE_DONE: _ClassVar[ManagedJobScheduleState]
|
|
37
|
+
MANAGED_JOB_STATUS_UNSPECIFIED: ManagedJobStatus
|
|
38
|
+
MANAGED_JOB_STATUS_PENDING: ManagedJobStatus
|
|
39
|
+
MANAGED_JOB_STATUS_SUBMITTED: ManagedJobStatus
|
|
40
|
+
MANAGED_JOB_STATUS_STARTING: ManagedJobStatus
|
|
41
|
+
MANAGED_JOB_STATUS_RUNNING: ManagedJobStatus
|
|
42
|
+
MANAGED_JOB_STATUS_RECOVERING: ManagedJobStatus
|
|
43
|
+
MANAGED_JOB_STATUS_CANCELLING: ManagedJobStatus
|
|
44
|
+
MANAGED_JOB_STATUS_SUCCEEDED: ManagedJobStatus
|
|
45
|
+
MANAGED_JOB_STATUS_CANCELLED: ManagedJobStatus
|
|
46
|
+
MANAGED_JOB_STATUS_FAILED: ManagedJobStatus
|
|
47
|
+
MANAGED_JOB_STATUS_FAILED_SETUP: ManagedJobStatus
|
|
48
|
+
MANAGED_JOB_STATUS_FAILED_PRECHECKS: ManagedJobStatus
|
|
49
|
+
MANAGED_JOB_STATUS_FAILED_NO_RESOURCE: ManagedJobStatus
|
|
50
|
+
MANAGED_JOB_STATUS_FAILED_CONTROLLER: ManagedJobStatus
|
|
51
|
+
MANAGED_JOB_SCHEDULE_STATE_UNSPECIFIED: ManagedJobScheduleState
|
|
52
|
+
MANAGED_JOB_SCHEDULE_STATE_INVALID: ManagedJobScheduleState
|
|
53
|
+
MANAGED_JOB_SCHEDULE_STATE_INACTIVE: ManagedJobScheduleState
|
|
54
|
+
MANAGED_JOB_SCHEDULE_STATE_WAITING: ManagedJobScheduleState
|
|
55
|
+
MANAGED_JOB_SCHEDULE_STATE_ALIVE_WAITING: ManagedJobScheduleState
|
|
56
|
+
MANAGED_JOB_SCHEDULE_STATE_LAUNCHING: ManagedJobScheduleState
|
|
57
|
+
MANAGED_JOB_SCHEDULE_STATE_ALIVE_BACKOFF: ManagedJobScheduleState
|
|
58
|
+
MANAGED_JOB_SCHEDULE_STATE_ALIVE: ManagedJobScheduleState
|
|
59
|
+
MANAGED_JOB_SCHEDULE_STATE_DONE: ManagedJobScheduleState
|
|
60
|
+
|
|
61
|
+
class JobIds(_message.Message):
|
|
62
|
+
__slots__ = ("ids",)
|
|
63
|
+
IDS_FIELD_NUMBER: _ClassVar[int]
|
|
64
|
+
ids: _containers.RepeatedScalarFieldContainer[int]
|
|
65
|
+
def __init__(self, ids: _Optional[_Iterable[int]] = ...) -> None: ...
|
|
66
|
+
|
|
67
|
+
class UserHashes(_message.Message):
|
|
68
|
+
__slots__ = ("hashes",)
|
|
69
|
+
HASHES_FIELD_NUMBER: _ClassVar[int]
|
|
70
|
+
hashes: _containers.RepeatedScalarFieldContainer[str]
|
|
71
|
+
def __init__(self, hashes: _Optional[_Iterable[str]] = ...) -> None: ...
|
|
72
|
+
|
|
73
|
+
class Statuses(_message.Message):
|
|
74
|
+
__slots__ = ("statuses",)
|
|
75
|
+
STATUSES_FIELD_NUMBER: _ClassVar[int]
|
|
76
|
+
statuses: _containers.RepeatedScalarFieldContainer[str]
|
|
77
|
+
def __init__(self, statuses: _Optional[_Iterable[str]] = ...) -> None: ...
|
|
78
|
+
|
|
79
|
+
class GetVersionRequest(_message.Message):
|
|
80
|
+
__slots__ = ()
|
|
81
|
+
def __init__(self) -> None: ...
|
|
82
|
+
|
|
83
|
+
class GetVersionResponse(_message.Message):
|
|
84
|
+
__slots__ = ("controller_version",)
|
|
85
|
+
CONTROLLER_VERSION_FIELD_NUMBER: _ClassVar[int]
|
|
86
|
+
controller_version: str
|
|
87
|
+
def __init__(self, controller_version: _Optional[str] = ...) -> None: ...
|
|
88
|
+
|
|
89
|
+
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")
|
|
91
|
+
SKIP_FINISHED_FIELD_NUMBER: _ClassVar[int]
|
|
92
|
+
ACCESSIBLE_WORKSPACES_FIELD_NUMBER: _ClassVar[int]
|
|
93
|
+
JOB_IDS_FIELD_NUMBER: _ClassVar[int]
|
|
94
|
+
WORKSPACE_MATCH_FIELD_NUMBER: _ClassVar[int]
|
|
95
|
+
NAME_MATCH_FIELD_NUMBER: _ClassVar[int]
|
|
96
|
+
POOL_MATCH_FIELD_NUMBER: _ClassVar[int]
|
|
97
|
+
PAGE_FIELD_NUMBER: _ClassVar[int]
|
|
98
|
+
LIMIT_FIELD_NUMBER: _ClassVar[int]
|
|
99
|
+
USER_HASHES_FIELD_NUMBER: _ClassVar[int]
|
|
100
|
+
STATUSES_FIELD_NUMBER: _ClassVar[int]
|
|
101
|
+
SHOW_JOBS_WITHOUT_USER_HASH_FIELD_NUMBER: _ClassVar[int]
|
|
102
|
+
skip_finished: bool
|
|
103
|
+
accessible_workspaces: _containers.RepeatedScalarFieldContainer[str]
|
|
104
|
+
job_ids: JobIds
|
|
105
|
+
workspace_match: str
|
|
106
|
+
name_match: str
|
|
107
|
+
pool_match: str
|
|
108
|
+
page: int
|
|
109
|
+
limit: int
|
|
110
|
+
user_hashes: UserHashes
|
|
111
|
+
statuses: Statuses
|
|
112
|
+
show_jobs_without_user_hash: bool
|
|
113
|
+
def __init__(self, skip_finished: bool = ..., accessible_workspaces: _Optional[_Iterable[str]] = ..., 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 = ...) -> None: ...
|
|
114
|
+
|
|
115
|
+
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")
|
|
117
|
+
class AcceleratorsEntry(_message.Message):
|
|
118
|
+
__slots__ = ("key", "value")
|
|
119
|
+
KEY_FIELD_NUMBER: _ClassVar[int]
|
|
120
|
+
VALUE_FIELD_NUMBER: _ClassVar[int]
|
|
121
|
+
key: str
|
|
122
|
+
value: float
|
|
123
|
+
def __init__(self, key: _Optional[str] = ..., value: _Optional[float] = ...) -> None: ...
|
|
124
|
+
class MetadataEntry(_message.Message):
|
|
125
|
+
__slots__ = ("key", "value")
|
|
126
|
+
KEY_FIELD_NUMBER: _ClassVar[int]
|
|
127
|
+
VALUE_FIELD_NUMBER: _ClassVar[int]
|
|
128
|
+
key: str
|
|
129
|
+
value: str
|
|
130
|
+
def __init__(self, key: _Optional[str] = ..., value: _Optional[str] = ...) -> None: ...
|
|
131
|
+
JOB_ID_FIELD_NUMBER: _ClassVar[int]
|
|
132
|
+
TASK_ID_FIELD_NUMBER: _ClassVar[int]
|
|
133
|
+
JOB_NAME_FIELD_NUMBER: _ClassVar[int]
|
|
134
|
+
TASK_NAME_FIELD_NUMBER: _ClassVar[int]
|
|
135
|
+
JOB_DURATION_FIELD_NUMBER: _ClassVar[int]
|
|
136
|
+
WORKSPACE_FIELD_NUMBER: _ClassVar[int]
|
|
137
|
+
STATUS_FIELD_NUMBER: _ClassVar[int]
|
|
138
|
+
SCHEDULE_STATE_FIELD_NUMBER: _ClassVar[int]
|
|
139
|
+
RESOURCES_FIELD_NUMBER: _ClassVar[int]
|
|
140
|
+
CLUSTER_RESOURCES_FIELD_NUMBER: _ClassVar[int]
|
|
141
|
+
CLUSTER_RESOURCES_FULL_FIELD_NUMBER: _ClassVar[int]
|
|
142
|
+
CLOUD_FIELD_NUMBER: _ClassVar[int]
|
|
143
|
+
REGION_FIELD_NUMBER: _ClassVar[int]
|
|
144
|
+
INFRA_FIELD_NUMBER: _ClassVar[int]
|
|
145
|
+
ACCELERATORS_FIELD_NUMBER: _ClassVar[int]
|
|
146
|
+
RECOVERY_COUNT_FIELD_NUMBER: _ClassVar[int]
|
|
147
|
+
DETAILS_FIELD_NUMBER: _ClassVar[int]
|
|
148
|
+
FAILURE_REASON_FIELD_NUMBER: _ClassVar[int]
|
|
149
|
+
USER_NAME_FIELD_NUMBER: _ClassVar[int]
|
|
150
|
+
USER_HASH_FIELD_NUMBER: _ClassVar[int]
|
|
151
|
+
SUBMITTED_AT_FIELD_NUMBER: _ClassVar[int]
|
|
152
|
+
START_AT_FIELD_NUMBER: _ClassVar[int]
|
|
153
|
+
END_AT_FIELD_NUMBER: _ClassVar[int]
|
|
154
|
+
USER_YAML_FIELD_NUMBER: _ClassVar[int]
|
|
155
|
+
ENTRYPOINT_FIELD_NUMBER: _ClassVar[int]
|
|
156
|
+
METADATA_FIELD_NUMBER: _ClassVar[int]
|
|
157
|
+
POOL_FIELD_NUMBER: _ClassVar[int]
|
|
158
|
+
POOL_HASH_FIELD_NUMBER: _ClassVar[int]
|
|
159
|
+
job_id: int
|
|
160
|
+
task_id: int
|
|
161
|
+
job_name: str
|
|
162
|
+
task_name: str
|
|
163
|
+
job_duration: float
|
|
164
|
+
workspace: str
|
|
165
|
+
status: ManagedJobStatus
|
|
166
|
+
schedule_state: ManagedJobScheduleState
|
|
167
|
+
resources: str
|
|
168
|
+
cluster_resources: str
|
|
169
|
+
cluster_resources_full: str
|
|
170
|
+
cloud: str
|
|
171
|
+
region: str
|
|
172
|
+
infra: str
|
|
173
|
+
accelerators: _containers.ScalarMap[str, float]
|
|
174
|
+
recovery_count: int
|
|
175
|
+
details: str
|
|
176
|
+
failure_reason: str
|
|
177
|
+
user_name: str
|
|
178
|
+
user_hash: str
|
|
179
|
+
submitted_at: float
|
|
180
|
+
start_at: float
|
|
181
|
+
end_at: float
|
|
182
|
+
user_yaml: str
|
|
183
|
+
entrypoint: str
|
|
184
|
+
metadata: _containers.ScalarMap[str, str]
|
|
185
|
+
pool: str
|
|
186
|
+
pool_hash: str
|
|
187
|
+
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] = ...) -> None: ...
|
|
188
|
+
|
|
189
|
+
class GetJobTableResponse(_message.Message):
|
|
190
|
+
__slots__ = ("jobs", "total", "total_no_filter", "status_counts")
|
|
191
|
+
class StatusCountsEntry(_message.Message):
|
|
192
|
+
__slots__ = ("key", "value")
|
|
193
|
+
KEY_FIELD_NUMBER: _ClassVar[int]
|
|
194
|
+
VALUE_FIELD_NUMBER: _ClassVar[int]
|
|
195
|
+
key: str
|
|
196
|
+
value: int
|
|
197
|
+
def __init__(self, key: _Optional[str] = ..., value: _Optional[int] = ...) -> None: ...
|
|
198
|
+
JOBS_FIELD_NUMBER: _ClassVar[int]
|
|
199
|
+
TOTAL_FIELD_NUMBER: _ClassVar[int]
|
|
200
|
+
TOTAL_NO_FILTER_FIELD_NUMBER: _ClassVar[int]
|
|
201
|
+
STATUS_COUNTS_FIELD_NUMBER: _ClassVar[int]
|
|
202
|
+
jobs: _containers.RepeatedCompositeFieldContainer[ManagedJobInfo]
|
|
203
|
+
total: int
|
|
204
|
+
total_no_filter: int
|
|
205
|
+
status_counts: _containers.ScalarMap[str, int]
|
|
206
|
+
def __init__(self, jobs: _Optional[_Iterable[_Union[ManagedJobInfo, _Mapping]]] = ..., total: _Optional[int] = ..., total_no_filter: _Optional[int] = ..., status_counts: _Optional[_Mapping[str, int]] = ...) -> None: ...
|
|
207
|
+
|
|
208
|
+
class GetAllJobIdsByNameRequest(_message.Message):
|
|
209
|
+
__slots__ = ("job_name",)
|
|
210
|
+
JOB_NAME_FIELD_NUMBER: _ClassVar[int]
|
|
211
|
+
job_name: str
|
|
212
|
+
def __init__(self, job_name: _Optional[str] = ...) -> None: ...
|
|
213
|
+
|
|
214
|
+
class GetAllJobIdsByNameResponse(_message.Message):
|
|
215
|
+
__slots__ = ("job_ids",)
|
|
216
|
+
JOB_IDS_FIELD_NUMBER: _ClassVar[int]
|
|
217
|
+
job_ids: _containers.RepeatedScalarFieldContainer[int]
|
|
218
|
+
def __init__(self, job_ids: _Optional[_Iterable[int]] = ...) -> None: ...
|
|
219
|
+
|
|
220
|
+
class CancelJobsRequest(_message.Message):
|
|
221
|
+
__slots__ = ("current_workspace", "user_hash", "all_users", "job_ids", "job_name", "pool_name")
|
|
222
|
+
CURRENT_WORKSPACE_FIELD_NUMBER: _ClassVar[int]
|
|
223
|
+
USER_HASH_FIELD_NUMBER: _ClassVar[int]
|
|
224
|
+
ALL_USERS_FIELD_NUMBER: _ClassVar[int]
|
|
225
|
+
JOB_IDS_FIELD_NUMBER: _ClassVar[int]
|
|
226
|
+
JOB_NAME_FIELD_NUMBER: _ClassVar[int]
|
|
227
|
+
POOL_NAME_FIELD_NUMBER: _ClassVar[int]
|
|
228
|
+
current_workspace: str
|
|
229
|
+
user_hash: str
|
|
230
|
+
all_users: bool
|
|
231
|
+
job_ids: JobIds
|
|
232
|
+
job_name: str
|
|
233
|
+
pool_name: str
|
|
234
|
+
def __init__(self, current_workspace: _Optional[str] = ..., user_hash: _Optional[str] = ..., all_users: bool = ..., job_ids: _Optional[_Union[JobIds, _Mapping]] = ..., job_name: _Optional[str] = ..., pool_name: _Optional[str] = ...) -> None: ...
|
|
235
|
+
|
|
236
|
+
class CancelJobsResponse(_message.Message):
|
|
237
|
+
__slots__ = ("message",)
|
|
238
|
+
MESSAGE_FIELD_NUMBER: _ClassVar[int]
|
|
239
|
+
message: str
|
|
240
|
+
def __init__(self, message: _Optional[str] = ...) -> None: ...
|
|
241
|
+
|
|
242
|
+
class StreamLogsRequest(_message.Message):
|
|
243
|
+
__slots__ = ("job_name", "job_id", "follow", "controller", "tail")
|
|
244
|
+
JOB_NAME_FIELD_NUMBER: _ClassVar[int]
|
|
245
|
+
JOB_ID_FIELD_NUMBER: _ClassVar[int]
|
|
246
|
+
FOLLOW_FIELD_NUMBER: _ClassVar[int]
|
|
247
|
+
CONTROLLER_FIELD_NUMBER: _ClassVar[int]
|
|
248
|
+
TAIL_FIELD_NUMBER: _ClassVar[int]
|
|
249
|
+
job_name: str
|
|
250
|
+
job_id: int
|
|
251
|
+
follow: bool
|
|
252
|
+
controller: bool
|
|
253
|
+
tail: int
|
|
254
|
+
def __init__(self, job_name: _Optional[str] = ..., job_id: _Optional[int] = ..., follow: bool = ..., controller: bool = ..., tail: _Optional[int] = ...) -> None: ...
|
|
255
|
+
|
|
256
|
+
class StreamLogsResponse(_message.Message):
|
|
257
|
+
__slots__ = ("log_line", "exit_code")
|
|
258
|
+
LOG_LINE_FIELD_NUMBER: _ClassVar[int]
|
|
259
|
+
EXIT_CODE_FIELD_NUMBER: _ClassVar[int]
|
|
260
|
+
log_line: str
|
|
261
|
+
exit_code: int
|
|
262
|
+
def __init__(self, log_line: _Optional[str] = ..., exit_code: _Optional[int] = ...) -> None: ...
|