tilebox-workflows 0.44.0__py3-none-any.whl → 0.46.0__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.
- tilebox/workflows/automations/client.py +3 -3
- tilebox/workflows/data.py +176 -31
- tilebox/workflows/formatting/job.py +24 -11
- tilebox/workflows/jobs/client.py +38 -12
- tilebox/workflows/jobs/service.py +3 -3
- tilebox/workflows/runner/task_runner.py +38 -9
- tilebox/workflows/task.py +91 -10
- tilebox/workflows/workflows/v1/automation_pb2.py +22 -22
- tilebox/workflows/workflows/v1/automation_pb2.pyi +2 -2
- tilebox/workflows/workflows/v1/core_pb2.py +52 -28
- tilebox/workflows/workflows/v1/core_pb2.pyi +86 -13
- tilebox/workflows/workflows/v1/job_pb2.py +36 -36
- tilebox/workflows/workflows/v1/job_pb2.pyi +17 -11
- tilebox/workflows/workflows/v1/task_pb2.py +16 -16
- tilebox/workflows/workflows/v1/task_pb2.pyi +5 -3
- {tilebox_workflows-0.44.0.dist-info → tilebox_workflows-0.46.0.dist-info}/METADATA +1 -1
- {tilebox_workflows-0.44.0.dist-info → tilebox_workflows-0.46.0.dist-info}/RECORD +18 -18
- {tilebox_workflows-0.44.0.dist-info → tilebox_workflows-0.46.0.dist-info}/WHEEL +1 -1
tilebox/workflows/task.py
CHANGED
|
@@ -4,15 +4,16 @@ import json
|
|
|
4
4
|
import typing
|
|
5
5
|
from abc import ABC, ABCMeta, abstractmethod
|
|
6
6
|
from base64 import b64decode, b64encode
|
|
7
|
+
from collections import defaultdict
|
|
7
8
|
from collections.abc import Sequence
|
|
8
9
|
from dataclasses import dataclass, field, fields, is_dataclass
|
|
9
10
|
from types import NoneType, UnionType
|
|
10
|
-
from typing import Any, cast, get_args, get_origin
|
|
11
|
+
from typing import Any, Generic, TypeVar, cast, get_args, get_origin
|
|
11
12
|
|
|
12
13
|
# from python 3.11 onwards this is available as typing.dataclass_transform:
|
|
13
14
|
from typing_extensions import dataclass_transform
|
|
14
15
|
|
|
15
|
-
from tilebox.workflows.data import RunnerContext, TaskIdentifier,
|
|
16
|
+
from tilebox.workflows.data import RunnerContext, TaskIdentifier, TaskSubmissionGroup, TaskSubmissions
|
|
16
17
|
|
|
17
18
|
META_ATTR = "__tilebox_task_meta__" # the name of the attribute we use to store task metadata on the class
|
|
18
19
|
|
|
@@ -236,16 +237,96 @@ class FutureTask:
|
|
|
236
237
|
def display(self) -> str:
|
|
237
238
|
return self.task.__class__.__name__
|
|
238
239
|
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
240
|
+
|
|
241
|
+
_T = TypeVar("_T")
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
class _FastIndexLookupList(Generic[_T]):
|
|
245
|
+
"""A list that provides fast lookup by index."""
|
|
246
|
+
|
|
247
|
+
def __init__(self) -> None:
|
|
248
|
+
super().__init__()
|
|
249
|
+
self.values = []
|
|
250
|
+
self._index_lookup: dict[_T, int] = {}
|
|
251
|
+
|
|
252
|
+
def __contains__(self, key: _T) -> bool:
|
|
253
|
+
return key in self._index_lookup
|
|
254
|
+
|
|
255
|
+
def __getitem__(self, key: _T) -> _T:
|
|
256
|
+
index = self._index_lookup[key]
|
|
257
|
+
return self.values[index]
|
|
258
|
+
|
|
259
|
+
def append_if_unique(self, value: _T) -> int:
|
|
260
|
+
if value in self._index_lookup:
|
|
261
|
+
return self._index_lookup[value]
|
|
262
|
+
index = len(self.values)
|
|
263
|
+
self.values.append(value)
|
|
264
|
+
self._index_lookup[value] = index
|
|
265
|
+
return index
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
def merge_future_tasks_to_submissions(future_tasks: list[FutureTask], fallback_cluster: str) -> TaskSubmissions | None:
|
|
269
|
+
if len(future_tasks) == 0:
|
|
270
|
+
return None
|
|
271
|
+
|
|
272
|
+
dependants = defaultdict(set)
|
|
273
|
+
for task in future_tasks:
|
|
274
|
+
for dep in task.depends_on:
|
|
275
|
+
dependants[dep].add(task.index)
|
|
276
|
+
|
|
277
|
+
dependants = {k: frozenset(v) for k, v in dependants.items()}
|
|
278
|
+
|
|
279
|
+
# we keep track of which task ends up in which group, so we can convert task dependencies to group dependencies
|
|
280
|
+
task_index_to_group = {}
|
|
281
|
+
|
|
282
|
+
group_keys = _FastIndexLookupList[_TaskGroupUniqueKey]()
|
|
283
|
+
groups: list[TaskSubmissionGroup] = []
|
|
284
|
+
# even though in python dicts preserve insertion order, we explicitly keep a list and an explicit lookup dict, to
|
|
285
|
+
# make the intent clear. This also allows us to more easily port this code to Tilebox clients in other languages.
|
|
286
|
+
cluster_slugs = _FastIndexLookupList[str]()
|
|
287
|
+
identifiers = _FastIndexLookupList[TaskIdentifier]()
|
|
288
|
+
displays = _FastIndexLookupList[str]()
|
|
289
|
+
|
|
290
|
+
for task in future_tasks:
|
|
291
|
+
group_key = _TaskGroupUniqueKey(
|
|
292
|
+
dependencies=frozenset(task.depends_on),
|
|
293
|
+
dependants=dependants.get(task.index, frozenset()),
|
|
294
|
+
)
|
|
295
|
+
group_index = group_keys.append_if_unique(group_key)
|
|
296
|
+
if group_index == len(groups): # it was a new unique group
|
|
297
|
+
groups.append(TaskSubmissionGroup(dependencies_on_other_groups=task.depends_on))
|
|
298
|
+
task_index_to_group[task.index] = group_index
|
|
299
|
+
|
|
300
|
+
for i in range(len(groups)):
|
|
301
|
+
group = groups[i]
|
|
302
|
+
group.dependencies_on_other_groups = list(
|
|
303
|
+
# convert the task dependencies to group dependencies, deduplicate and sort them
|
|
304
|
+
{task_index_to_group[dep] for dep in group.dependencies_on_other_groups}
|
|
247
305
|
)
|
|
248
306
|
|
|
307
|
+
for task in future_tasks:
|
|
308
|
+
group_index = task_index_to_group[task.index]
|
|
309
|
+
group = groups[group_index]
|
|
310
|
+
|
|
311
|
+
group.inputs.append(task.input())
|
|
312
|
+
group.identifier_pointers.append(identifiers.append_if_unique(task.identifier()))
|
|
313
|
+
group.cluster_slug_pointers.append(cluster_slugs.append_if_unique(task.cluster or fallback_cluster))
|
|
314
|
+
group.display_pointers.append(displays.append_if_unique(task.display()))
|
|
315
|
+
group.max_retries_values.append(task.max_retries)
|
|
316
|
+
|
|
317
|
+
return TaskSubmissions(
|
|
318
|
+
task_groups=groups,
|
|
319
|
+
cluster_slug_lookup=cluster_slugs.values,
|
|
320
|
+
identifier_lookup=identifiers.values,
|
|
321
|
+
display_lookup=displays.values,
|
|
322
|
+
)
|
|
323
|
+
|
|
324
|
+
|
|
325
|
+
@dataclass(frozen=True, unsafe_hash=True)
|
|
326
|
+
class _TaskGroupUniqueKey:
|
|
327
|
+
dependencies: frozenset[int]
|
|
328
|
+
dependants: frozenset[int]
|
|
329
|
+
|
|
249
330
|
|
|
250
331
|
class ProgressUpdate:
|
|
251
332
|
def __init__(self, label: str | None) -> None:
|
|
@@ -29,7 +29,7 @@ from tilebox.datasets.tilebox.v1 import id_pb2 as tilebox_dot_v1_dot_id__pb2
|
|
|
29
29
|
from tilebox.workflows.workflows.v1 import core_pb2 as workflows_dot_v1_dot_core__pb2
|
|
30
30
|
|
|
31
31
|
|
|
32
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1dworkflows/v1/automation.proto\x12\x0cworkflows.v1\x1a\x1b\x62uf/validate/validate.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x13tilebox/v1/id.proto\x1a\x17workflows/v1/core.proto\"\x9c\x01\n\x0fStorageLocation\x12&\n\x02id\x18\x01 \x01(\x0b\x32\x0e.tilebox.v1.IDB\x06\xbaH\x03\xc8\x01\x01R\x02id\x12&\n\x08location\x18\x02 \x01(\tB\n\xbaH\x07r\x05 \x01(\x80\x04R\x08location\x12\x39\n\x04type\x18\x03 \x01(\x0e\x32\x19.workflows.v1.StorageTypeB\n\xbaH\x07\x82\x01\x04\x10\x01 \x00R\x04type\"O\n\x10StorageLocations\x12;\n\tlocations\x18\x01 \x03(\x0b\x32\x1d.workflows.v1.StorageLocationR\tlocations\"\
|
|
32
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1dworkflows/v1/automation.proto\x12\x0cworkflows.v1\x1a\x1b\x62uf/validate/validate.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x13tilebox/v1/id.proto\x1a\x17workflows/v1/core.proto\"\x9c\x01\n\x0fStorageLocation\x12&\n\x02id\x18\x01 \x01(\x0b\x32\x0e.tilebox.v1.IDB\x06\xbaH\x03\xc8\x01\x01R\x02id\x12&\n\x08location\x18\x02 \x01(\tB\n\xbaH\x07r\x05 \x01(\x80\x04R\x08location\x12\x39\n\x04type\x18\x03 \x01(\x0e\x32\x19.workflows.v1.StorageTypeB\n\xbaH\x07\x82\x01\x04\x10\x01 \x00R\x04type\"O\n\x10StorageLocations\x12;\n\tlocations\x18\x01 \x03(\x0b\x32\x1d.workflows.v1.StorageLocationR\tlocations\"\x90\x03\n\x13\x41utomationPrototype\x12\x1e\n\x02id\x18\x01 \x01(\x0b\x32\x0e.tilebox.v1.IDR\x02id\x12\x1e\n\x04name\x18\x02 \x01(\tB\n\xbaH\x07r\x05 \x01(\x80\x08R\x04name\x12@\n\tprototype\x18\x03 \x01(\x0b\x32\".workflows.v1.SingleTaskSubmissionR\tprototype\x12\x61\n\x16storage_event_triggers\x18\x04 \x03(\x0b\x32!.workflows.v1.StorageEventTriggerB\x08\xbaH\x05\x92\x01\x02\x10 R\x14storageEventTriggers\x12H\n\rcron_triggers\x18\x05 \x03(\x0b\x32\x19.workflows.v1.CronTriggerB\x08\xbaH\x05\x92\x01\x02\x10 R\x0c\x63ronTriggers\x12\x1a\n\x08\x64isabled\x18\x06 \x01(\x08R\x08\x64isabled:.\xbaH+\")\n\x16storage_event_triggers\n\rcron_triggers\x10\x01\"R\n\x0b\x41utomations\x12\x43\n\x0b\x61utomations\x18\x01 \x03(\x0b\x32!.workflows.v1.AutomationPrototypeR\x0b\x61utomations\"\xab\x01\n\x13StorageEventTrigger\x12\x1e\n\x02id\x18\x01 \x01(\x0b\x32\x0e.tilebox.v1.IDR\x02id\x12H\n\x10storage_location\x18\x02 \x01(\x0b\x32\x1d.workflows.v1.StorageLocationR\x0fstorageLocation\x12*\n\x0cglob_pattern\x18\x03 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x0bglobPattern\"R\n\x0b\x43ronTrigger\x12\x1e\n\x02id\x18\x01 \x01(\x0b\x32\x0e.tilebox.v1.IDR\x02id\x12#\n\x08schedule\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x08schedule\"E\n\nAutomation\x12#\n\rtrigger_event\x18\x01 \x01(\x0cR\x0ctriggerEvent\x12\x12\n\x04\x61rgs\x18\x02 \x01(\x0cR\x04\x61rgs\"\xa7\x01\n\x15TriggeredStorageEvent\x12>\n\x13storage_location_id\x18\x01 \x01(\x0b\x32\x0e.tilebox.v1.IDR\x11storageLocationId\x12\x32\n\x04type\x18\x02 \x01(\x0e\x32\x1e.workflows.v1.StorageEventTypeR\x04type\x12\x1a\n\x08location\x18\x03 \x01(\tR\x08location\"S\n\x12TriggeredCronEvent\x12=\n\x0ctrigger_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0btriggerTime\"w\n\x17\x44\x65leteAutomationRequest\x12;\n\rautomation_id\x18\x01 \x01(\x0b\x32\x0e.tilebox.v1.IDB\x06\xbaH\x03\xc8\x01\x01R\x0c\x61utomationId\x12\x1f\n\x0b\x63\x61ncel_jobs\x18\x02 \x01(\x08R\ncancelJobs*k\n\x0bStorageType\x12\x1c\n\x18STORAGE_TYPE_UNSPECIFIED\x10\x00\x12\x14\n\x10STORAGE_TYPE_GCS\x10\x01\x12\x13\n\x0fSTORAGE_TYPE_S3\x10\x02\x12\x13\n\x0fSTORAGE_TYPE_FS\x10\x03*V\n\x10StorageEventType\x12\"\n\x1eSTORAGE_EVENT_TYPE_UNSPECIFIED\x10\x00\x12\x1e\n\x1aSTORAGE_EVENT_TYPE_CREATED\x10\x01\x32\xd1\x05\n\x11\x41utomationService\x12N\n\x14ListStorageLocations\x12\x16.google.protobuf.Empty\x1a\x1e.workflows.v1.StorageLocations\x12\x43\n\x12GetStorageLocation\x12\x0e.tilebox.v1.ID\x1a\x1d.workflows.v1.StorageLocation\x12U\n\x15\x43reateStorageLocation\x12\x1d.workflows.v1.StorageLocation\x1a\x1d.workflows.v1.StorageLocation\x12?\n\x15\x44\x65leteStorageLocation\x12\x0e.tilebox.v1.ID\x1a\x16.google.protobuf.Empty\x12\x44\n\x0fListAutomations\x12\x16.google.protobuf.Empty\x1a\x19.workflows.v1.Automations\x12\x42\n\rGetAutomation\x12\x0e.tilebox.v1.ID\x1a!.workflows.v1.AutomationPrototype\x12X\n\x10\x43reateAutomation\x12!.workflows.v1.AutomationPrototype\x1a!.workflows.v1.AutomationPrototype\x12X\n\x10UpdateAutomation\x12!.workflows.v1.AutomationPrototype\x1a!.workflows.v1.AutomationPrototype\x12Q\n\x10\x44\x65leteAutomation\x12%.workflows.v1.DeleteAutomationRequest\x1a\x16.google.protobuf.EmptyBy\n\x10\x63om.workflows.v1B\x0f\x41utomationProtoP\x01\xa2\x02\x03WXX\xaa\x02\x0cWorkflows.V1\xca\x02\x0cWorkflows\\V1\xe2\x02\x18Workflows\\V1\\GPBMetadata\xea\x02\rWorkflows::V1\x92\x03\x02\x08\x02\x62\x08\x65\x64itionsp\xe8\x07')
|
|
33
33
|
|
|
34
34
|
_globals = globals()
|
|
35
35
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
@@ -57,30 +57,30 @@ if not _descriptor._USE_C_DESCRIPTORS:
|
|
|
57
57
|
_globals['_CRONTRIGGER'].fields_by_name['schedule']._serialized_options = b'\272H\004r\002\020\001'
|
|
58
58
|
_globals['_DELETEAUTOMATIONREQUEST'].fields_by_name['automation_id']._loaded_options = None
|
|
59
59
|
_globals['_DELETEAUTOMATIONREQUEST'].fields_by_name['automation_id']._serialized_options = b'\272H\003\310\001\001'
|
|
60
|
-
_globals['_STORAGETYPE']._serialized_start=
|
|
61
|
-
_globals['_STORAGETYPE']._serialized_end=
|
|
62
|
-
_globals['_STORAGEEVENTTYPE']._serialized_start=
|
|
63
|
-
_globals['_STORAGEEVENTTYPE']._serialized_end=
|
|
60
|
+
_globals['_STORAGETYPE']._serialized_start=1616
|
|
61
|
+
_globals['_STORAGETYPE']._serialized_end=1723
|
|
62
|
+
_globals['_STORAGEEVENTTYPE']._serialized_start=1725
|
|
63
|
+
_globals['_STORAGEEVENTTYPE']._serialized_end=1811
|
|
64
64
|
_globals['_STORAGELOCATION']._serialized_start=185
|
|
65
65
|
_globals['_STORAGELOCATION']._serialized_end=341
|
|
66
66
|
_globals['_STORAGELOCATIONS']._serialized_start=343
|
|
67
67
|
_globals['_STORAGELOCATIONS']._serialized_end=422
|
|
68
68
|
_globals['_AUTOMATIONPROTOTYPE']._serialized_start=425
|
|
69
|
-
_globals['_AUTOMATIONPROTOTYPE']._serialized_end=
|
|
70
|
-
_globals['_AUTOMATIONS']._serialized_start=
|
|
71
|
-
_globals['_AUTOMATIONS']._serialized_end=
|
|
72
|
-
_globals['_STORAGEEVENTTRIGGER']._serialized_start=
|
|
73
|
-
_globals['_STORAGEEVENTTRIGGER']._serialized_end=
|
|
74
|
-
_globals['_CRONTRIGGER']._serialized_start=
|
|
75
|
-
_globals['_CRONTRIGGER']._serialized_end=
|
|
76
|
-
_globals['_AUTOMATION']._serialized_start=
|
|
77
|
-
_globals['_AUTOMATION']._serialized_end=
|
|
78
|
-
_globals['_TRIGGEREDSTORAGEEVENT']._serialized_start=
|
|
79
|
-
_globals['_TRIGGEREDSTORAGEEVENT']._serialized_end=
|
|
80
|
-
_globals['_TRIGGEREDCRONEVENT']._serialized_start=
|
|
81
|
-
_globals['_TRIGGEREDCRONEVENT']._serialized_end=
|
|
82
|
-
_globals['_DELETEAUTOMATIONREQUEST']._serialized_start=
|
|
83
|
-
_globals['_DELETEAUTOMATIONREQUEST']._serialized_end=
|
|
84
|
-
_globals['_AUTOMATIONSERVICE']._serialized_start=
|
|
85
|
-
_globals['_AUTOMATIONSERVICE']._serialized_end=
|
|
69
|
+
_globals['_AUTOMATIONPROTOTYPE']._serialized_end=825
|
|
70
|
+
_globals['_AUTOMATIONS']._serialized_start=827
|
|
71
|
+
_globals['_AUTOMATIONS']._serialized_end=909
|
|
72
|
+
_globals['_STORAGEEVENTTRIGGER']._serialized_start=912
|
|
73
|
+
_globals['_STORAGEEVENTTRIGGER']._serialized_end=1083
|
|
74
|
+
_globals['_CRONTRIGGER']._serialized_start=1085
|
|
75
|
+
_globals['_CRONTRIGGER']._serialized_end=1167
|
|
76
|
+
_globals['_AUTOMATION']._serialized_start=1169
|
|
77
|
+
_globals['_AUTOMATION']._serialized_end=1238
|
|
78
|
+
_globals['_TRIGGEREDSTORAGEEVENT']._serialized_start=1241
|
|
79
|
+
_globals['_TRIGGEREDSTORAGEEVENT']._serialized_end=1408
|
|
80
|
+
_globals['_TRIGGEREDCRONEVENT']._serialized_start=1410
|
|
81
|
+
_globals['_TRIGGEREDCRONEVENT']._serialized_end=1493
|
|
82
|
+
_globals['_DELETEAUTOMATIONREQUEST']._serialized_start=1495
|
|
83
|
+
_globals['_DELETEAUTOMATIONREQUEST']._serialized_end=1614
|
|
84
|
+
_globals['_AUTOMATIONSERVICE']._serialized_start=1814
|
|
85
|
+
_globals['_AUTOMATIONSERVICE']._serialized_end=2535
|
|
86
86
|
# @@protoc_insertion_point(module_scope)
|
|
@@ -56,11 +56,11 @@ class AutomationPrototype(_message.Message):
|
|
|
56
56
|
DISABLED_FIELD_NUMBER: _ClassVar[int]
|
|
57
57
|
id: _id_pb2.ID
|
|
58
58
|
name: str
|
|
59
|
-
prototype: _core_pb2.
|
|
59
|
+
prototype: _core_pb2.SingleTaskSubmission
|
|
60
60
|
storage_event_triggers: _containers.RepeatedCompositeFieldContainer[StorageEventTrigger]
|
|
61
61
|
cron_triggers: _containers.RepeatedCompositeFieldContainer[CronTrigger]
|
|
62
62
|
disabled: bool
|
|
63
|
-
def __init__(self, id: _Optional[_Union[_id_pb2.ID, _Mapping]] = ..., name: _Optional[str] = ..., prototype: _Optional[_Union[_core_pb2.
|
|
63
|
+
def __init__(self, id: _Optional[_Union[_id_pb2.ID, _Mapping]] = ..., name: _Optional[str] = ..., prototype: _Optional[_Union[_core_pb2.SingleTaskSubmission, _Mapping]] = ..., storage_event_triggers: _Optional[_Iterable[_Union[StorageEventTrigger, _Mapping]]] = ..., cron_triggers: _Optional[_Iterable[_Union[CronTrigger, _Mapping]]] = ..., disabled: bool = ...) -> None: ...
|
|
64
64
|
|
|
65
65
|
class Automations(_message.Message):
|
|
66
66
|
__slots__ = ("automations",)
|
|
@@ -28,7 +28,7 @@ from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__
|
|
|
28
28
|
from tilebox.datasets.tilebox.v1 import id_pb2 as tilebox_dot_v1_dot_id__pb2
|
|
29
29
|
|
|
30
30
|
|
|
31
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17workflows/v1/core.proto\x12\x0cworkflows.v1\x1a\x1b\x62uf/validate/validate.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x13tilebox/v1/id.proto\"^\n\x07\x43luster\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12!\n\x0c\x64isplay_name\x18\x03 \x01(\tR\x0b\x64isplayName\x12\x1c\n\tdeletable\x18\x04 \x01(\x08R\tdeletable\"\
|
|
31
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17workflows/v1/core.proto\x12\x0cworkflows.v1\x1a\x1b\x62uf/validate/validate.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x13tilebox/v1/id.proto\"^\n\x07\x43luster\x12\x12\n\x04slug\x18\x02 \x01(\tR\x04slug\x12!\n\x0c\x64isplay_name\x18\x03 \x01(\tR\x0b\x64isplayName\x12\x1c\n\tdeletable\x18\x04 \x01(\x08R\tdeletable\"\xe5\x04\n\x03Job\x12\x1e\n\x02id\x18\x01 \x01(\x0b\x32\x0e.tilebox.v1.IDR\x02id\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\x12!\n\x0ctrace_parent\x18\x03 \x01(\tR\x0btraceParent\x12\x1e\n\x08\x63\x61nceled\x18\x05 \x01(\x08\x42\x02\x18\x01R\x08\x63\x61nceled\x12\x43\n\x0clegacy_state\x18\x06 \x01(\x0e\x32\x1c.workflows.v1.LegacyJobStateB\x02\x18\x01R\x0blegacyState\x12=\n\x0csubmitted_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0bsubmittedAt\x12=\n\nstarted_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x02\x18\x01R\tstartedAt\x12@\n\x0etask_summaries\x18\t \x03(\x0b\x32\x19.workflows.v1.TaskSummaryR\rtaskSummaries\x12\x33\n\rautomation_id\x18\n \x01(\x0b\x32\x0e.tilebox.v1.IDR\x0c\x61utomationId\x12\x32\n\x08progress\x18\x0b \x03(\x0b\x32\x16.workflows.v1.ProgressR\x08progress\x12,\n\x05state\x18\x0c \x01(\x0e\x32\x16.workflows.v1.JobStateR\x05state\x12\x45\n\x0f\x65xecution_stats\x18\r \x01(\x0b\x32\x1c.workflows.v1.ExecutionStatsR\x0e\x65xecutionStatsJ\x04\x08\x04\x10\x05\"\xaf\x03\n\x0e\x45xecutionStats\x12M\n\x15\x66irst_task_started_at\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x12\x66irstTaskStartedAt\x12K\n\x14last_task_stopped_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x11lastTaskStoppedAt\x12<\n\x0c\x63ompute_time\x18\x03 \x01(\x0b\x32\x19.google.protobuf.DurationR\x0b\x63omputeTime\x12<\n\x0c\x65lapsed_time\x18\x04 \x01(\x0b\x32\x19.google.protobuf.DurationR\x0b\x65lapsedTime\x12 \n\x0bparallelism\x18\x05 \x01(\x01R\x0bparallelism\x12\x1f\n\x0btotal_tasks\x18\x06 \x01(\x04R\ntotalTasks\x12\x42\n\x0etasks_by_state\x18\x07 \x03(\x0b\x32\x1c.workflows.v1.TaskStateCountR\x0ctasksByState\"U\n\x0eTaskStateCount\x12-\n\x05state\x18\x01 \x01(\x0e\x32\x17.workflows.v1.TaskStateR\x05state\x12\x14\n\x05\x63ount\x18\x02 \x01(\x04R\x05\x63ount\"\x9f\x02\n\x0bTaskSummary\x12\x1e\n\x02id\x18\x01 \x01(\x0b\x32\x0e.tilebox.v1.IDR\x02id\x12\x18\n\x07\x64isplay\x18\x02 \x01(\tR\x07\x64isplay\x12-\n\x05state\x18\x03 \x01(\x0e\x32\x17.workflows.v1.TaskStateR\x05state\x12+\n\tparent_id\x18\x04 \x01(\x0b\x32\x0e.tilebox.v1.IDR\x08parentId\x12\x39\n\nstarted_at\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tstartedAt\x12\x39\n\nstopped_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tstoppedAtJ\x04\x08\x05\x10\x06\"S\n\x08Progress\x12\x1d\n\x05label\x18\x01 \x01(\tB\x07\xbaH\x04r\x02\x18\x64R\x05label\x12\x14\n\x05total\x18\x02 \x01(\x04R\x05total\x12\x12\n\x04\x64one\x18\x03 \x01(\x04R\x04\x64one\"\xa2\x03\n\x04Task\x12\x1e\n\x02id\x18\x01 \x01(\x0b\x32\x0e.tilebox.v1.IDR\x02id\x12<\n\nidentifier\x18\x02 \x01(\x0b\x32\x1c.workflows.v1.TaskIdentifierR\nidentifier\x12-\n\x05state\x18\x03 \x01(\x0e\x32\x17.workflows.v1.TaskStateR\x05state\x12\x1b\n\x05input\x18\x04 \x01(\x0c\x42\x05\xaa\x01\x02\x08\x01R\x05input\x12\x1f\n\x07\x64isplay\x18\x05 \x01(\tB\x05\xaa\x01\x02\x08\x01R\x07\x64isplay\x12#\n\x03job\x18\x06 \x01(\x0b\x32\x11.workflows.v1.JobR\x03job\x12+\n\tparent_id\x18\x07 \x01(\x0b\x32\x0e.tilebox.v1.IDR\x08parentId\x12-\n\ndepends_on\x18\x08 \x03(\x0b\x32\x0e.tilebox.v1.IDR\tdependsOn\x12-\n\x05lease\x18\t \x01(\x0b\x32\x17.workflows.v1.TaskLeaseR\x05lease\x12\x1f\n\x0bretry_count\x18\n \x01(\x03R\nretryCount\"d\n\x0eTaskIdentifier\x12\x1e\n\x04name\x18\x01 \x01(\tB\n\xbaH\x07r\x05 \x01(\x80\x02R\x04name\x12\x32\n\x07version\x18\x02 \x01(\tB\x18\xbaH\x15r\x13 \x01\x32\x0f^v(\\d+)\\.(\\d+)$R\x07version\"1\n\x05Tasks\x12(\n\x05tasks\x18\x01 \x03(\x0b\x32\x12.workflows.v1.TaskR\x05tasks\"\x98\x02\n\x14SingleTaskSubmission\x12!\n\x0c\x63luster_slug\x18\x01 \x01(\tR\x0b\x63lusterSlug\x12<\n\nidentifier\x18\x02 \x01(\x0b\x32\x1c.workflows.v1.TaskIdentifierR\nidentifier\x12!\n\x07\x64isplay\x18\x04 \x01(\tB\x07\xbaH\x04r\x02\x10\x01R\x07\x64isplay\x12\x32\n\x0c\x64\x65pendencies\x18\x05 \x03(\x03\x42\x0e\xbaH\x0b\x92\x01\x08\"\x06\"\x04\x18?(\x00R\x0c\x64\x65pendencies\x12(\n\x0bmax_retries\x18\x06 \x01(\x03\x42\x07\xbaH\x04\"\x02(\x00R\nmaxRetries\x12\x1e\n\x05input\x18\x03 \x01(\x0c\x42\x08\xbaH\x05z\x03\x18\x80\x10R\x05input\"\x91\x02\n\x0fTaskSubmissions\x12N\n\x0btask_groups\x18\x01 \x03(\x0b\x32!.workflows.v1.TaskSubmissionGroupB\n\xbaH\x07\x92\x01\x04\x08\x01\x10@R\ntaskGroups\x12.\n\x13\x63luster_slug_lookup\x18\x02 \x03(\tR\x11\x63lusterSlugLookup\x12I\n\x11identifier_lookup\x18\x03 \x03(\x0b\x32\x1c.workflows.v1.TaskIdentifierR\x10identifierLookup\x12\x33\n\x0e\x64isplay_lookup\x18\x04 \x03(\tB\x0c\xbaH\t\x92\x01\x06\"\x04r\x02\x10\x01R\rdisplayLookup\"\xe2\x07\n\x13TaskSubmissionGroup\x12?\n\x1c\x64\x65pendencies_on_other_groups\x18\x01 \x03(\rR\x19\x64\x65pendenciesOnOtherGroups\x12%\n\x06inputs\x18\x02 \x03(\x0c\x42\r\xbaH\n\x92\x01\x07\"\x05z\x03\x18\x80\x10R\x06inputs\x12/\n\x13identifier_pointers\x18\x03 \x03(\x04R\x12identifierPointers\x12\x32\n\x15\x63luster_slug_pointers\x18\x04 \x03(\x04R\x13\x63lusterSlugPointers\x12)\n\x10\x64isplay_pointers\x18\x05 \x03(\x04R\x0f\x64isplayPointers\x12,\n\x12max_retries_values\x18\x06 \x03(\x03R\x10maxRetriesValues:\xa4\x05\xbaH\xa0\x05\x1a\xa6\x01\n,task_submission_group.identifiers_size_match\x12?The number of inputs must match the number of task identifiers.\x1a\x35this.inputs.size() == this.identifier_pointers.size()\x1a\xa7\x01\n.task_submission_group.cluster_slugs_size_match\x12<The number of cluster slugs must match the number of inputs.\x1a\x37this.inputs.size() == this.cluster_slug_pointers.size()\x1a\xa0\x01\n)task_submission_group.displays_size_match\x12?The number of display pointers must match the number of inputs.\x1a\x32this.inputs.size() == this.display_pointers.size()\x1a\xa7\x01\n,task_submission_group.max_retries_size_match\x12\x41The number of max_retries_values must match the number of inputs.\x1a\x34this.inputs.size() == this.max_retries_values.size()\"\xa9\x01\n\tTaskLease\x12/\n\x05lease\x18\x01 \x01(\x0b\x32\x19.google.protobuf.DurationR\x05lease\x12k\n%recommended_wait_until_next_extension\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationR!recommendedWaitUntilNextExtension*\x8d\x01\n\x0eLegacyJobState\x12 \n\x1cLEGACY_JOB_STATE_UNSPECIFIED\x10\x00\x12\x1b\n\x17LEGACY_JOB_STATE_QUEUED\x10\x01\x12\x1c\n\x18LEGACY_JOB_STATE_STARTED\x10\x02\x12\x1e\n\x1aLEGACY_JOB_STATE_COMPLETED\x10\x03*\xb3\x01\n\x08JobState\x12\x19\n\x15JOB_STATE_UNSPECIFIED\x10\x00\x12\x17\n\x13JOB_STATE_SUBMITTED\x10\x01\x12\x15\n\x11JOB_STATE_RUNNING\x10\x02\x12\x15\n\x11JOB_STATE_STARTED\x10\x03\x12\x17\n\x13JOB_STATE_COMPLETED\x10\x04\x12\x14\n\x10JOB_STATE_FAILED\x10\x05\x12\x16\n\x12JOB_STATE_CANCELED\x10\x06*\x86\x01\n\tTaskState\x12\x1a\n\x16TASK_STATE_UNSPECIFIED\x10\x00\x12\x15\n\x11TASK_STATE_QUEUED\x10\x01\x12\x16\n\x12TASK_STATE_RUNNING\x10\x02\x12\x17\n\x13TASK_STATE_COMPUTED\x10\x03\x12\x15\n\x11TASK_STATE_FAILED\x10\x04\x42s\n\x10\x63om.workflows.v1B\tCoreProtoP\x01\xa2\x02\x03WXX\xaa\x02\x0cWorkflows.V1\xca\x02\x0cWorkflows\\V1\xe2\x02\x18Workflows\\V1\\GPBMetadata\xea\x02\rWorkflows::V1\x92\x03\x02\x08\x02\x62\x08\x65\x64itionsp\xe8\x07')
|
|
32
32
|
|
|
33
33
|
_globals = globals()
|
|
34
34
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
@@ -36,6 +36,12 @@ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'workflows.v1.core_pb2', _gl
|
|
|
36
36
|
if not _descriptor._USE_C_DESCRIPTORS:
|
|
37
37
|
_globals['DESCRIPTOR']._loaded_options = None
|
|
38
38
|
_globals['DESCRIPTOR']._serialized_options = b'\n\020com.workflows.v1B\tCoreProtoP\001\242\002\003WXX\252\002\014Workflows.V1\312\002\014Workflows\\V1\342\002\030Workflows\\V1\\GPBMetadata\352\002\rWorkflows::V1\222\003\002\010\002'
|
|
39
|
+
_globals['_JOB'].fields_by_name['canceled']._loaded_options = None
|
|
40
|
+
_globals['_JOB'].fields_by_name['canceled']._serialized_options = b'\030\001'
|
|
41
|
+
_globals['_JOB'].fields_by_name['legacy_state']._loaded_options = None
|
|
42
|
+
_globals['_JOB'].fields_by_name['legacy_state']._serialized_options = b'\030\001'
|
|
43
|
+
_globals['_JOB'].fields_by_name['started_at']._loaded_options = None
|
|
44
|
+
_globals['_JOB'].fields_by_name['started_at']._serialized_options = b'\030\001'
|
|
39
45
|
_globals['_PROGRESS'].fields_by_name['label']._loaded_options = None
|
|
40
46
|
_globals['_PROGRESS'].fields_by_name['label']._serialized_options = b'\272H\004r\002\030d'
|
|
41
47
|
_globals['_TASK'].fields_by_name['input']._loaded_options = None
|
|
@@ -46,34 +52,52 @@ if not _descriptor._USE_C_DESCRIPTORS:
|
|
|
46
52
|
_globals['_TASKIDENTIFIER'].fields_by_name['name']._serialized_options = b'\272H\007r\005 \001(\200\002'
|
|
47
53
|
_globals['_TASKIDENTIFIER'].fields_by_name['version']._loaded_options = None
|
|
48
54
|
_globals['_TASKIDENTIFIER'].fields_by_name['version']._serialized_options = b'\272H\025r\023 \0012\017^v(\\d+)\\.(\\d+)$'
|
|
49
|
-
_globals['
|
|
50
|
-
_globals['
|
|
51
|
-
_globals['
|
|
52
|
-
_globals['
|
|
53
|
-
_globals['
|
|
54
|
-
_globals['
|
|
55
|
-
_globals['
|
|
56
|
-
_globals['
|
|
57
|
-
_globals['
|
|
58
|
-
_globals['
|
|
59
|
-
_globals['
|
|
60
|
-
_globals['
|
|
55
|
+
_globals['_SINGLETASKSUBMISSION'].fields_by_name['display']._loaded_options = None
|
|
56
|
+
_globals['_SINGLETASKSUBMISSION'].fields_by_name['display']._serialized_options = b'\272H\004r\002\020\001'
|
|
57
|
+
_globals['_SINGLETASKSUBMISSION'].fields_by_name['dependencies']._loaded_options = None
|
|
58
|
+
_globals['_SINGLETASKSUBMISSION'].fields_by_name['dependencies']._serialized_options = b'\272H\013\222\001\010\"\006\"\004\030?(\000'
|
|
59
|
+
_globals['_SINGLETASKSUBMISSION'].fields_by_name['max_retries']._loaded_options = None
|
|
60
|
+
_globals['_SINGLETASKSUBMISSION'].fields_by_name['max_retries']._serialized_options = b'\272H\004\"\002(\000'
|
|
61
|
+
_globals['_SINGLETASKSUBMISSION'].fields_by_name['input']._loaded_options = None
|
|
62
|
+
_globals['_SINGLETASKSUBMISSION'].fields_by_name['input']._serialized_options = b'\272H\005z\003\030\200\020'
|
|
63
|
+
_globals['_TASKSUBMISSIONS'].fields_by_name['task_groups']._loaded_options = None
|
|
64
|
+
_globals['_TASKSUBMISSIONS'].fields_by_name['task_groups']._serialized_options = b'\272H\007\222\001\004\010\001\020@'
|
|
65
|
+
_globals['_TASKSUBMISSIONS'].fields_by_name['display_lookup']._loaded_options = None
|
|
66
|
+
_globals['_TASKSUBMISSIONS'].fields_by_name['display_lookup']._serialized_options = b'\272H\t\222\001\006\"\004r\002\020\001'
|
|
67
|
+
_globals['_TASKSUBMISSIONGROUP'].fields_by_name['inputs']._loaded_options = None
|
|
68
|
+
_globals['_TASKSUBMISSIONGROUP'].fields_by_name['inputs']._serialized_options = b'\272H\n\222\001\007\"\005z\003\030\200\020'
|
|
69
|
+
_globals['_TASKSUBMISSIONGROUP']._loaded_options = None
|
|
70
|
+
_globals['_TASKSUBMISSIONGROUP']._serialized_options = b'\272H\240\005\032\246\001\n,task_submission_group.identifiers_size_match\022?The number of inputs must match the number of task identifiers.\0325this.inputs.size() == this.identifier_pointers.size()\032\247\001\n.task_submission_group.cluster_slugs_size_match\022<The number of cluster slugs must match the number of inputs.\0327this.inputs.size() == this.cluster_slug_pointers.size()\032\240\001\n)task_submission_group.displays_size_match\022?The number of display pointers must match the number of inputs.\0322this.inputs.size() == this.display_pointers.size()\032\247\001\n,task_submission_group.max_retries_size_match\022AThe number of max_retries_values must match the number of inputs.\0324this.inputs.size() == this.max_retries_values.size()'
|
|
71
|
+
_globals['_LEGACYJOBSTATE']._serialized_start=4067
|
|
72
|
+
_globals['_LEGACYJOBSTATE']._serialized_end=4208
|
|
73
|
+
_globals['_JOBSTATE']._serialized_start=4211
|
|
74
|
+
_globals['_JOBSTATE']._serialized_end=4390
|
|
75
|
+
_globals['_TASKSTATE']._serialized_start=4393
|
|
76
|
+
_globals['_TASKSTATE']._serialized_end=4527
|
|
61
77
|
_globals['_CLUSTER']._serialized_start=156
|
|
62
78
|
_globals['_CLUSTER']._serialized_end=250
|
|
63
79
|
_globals['_JOB']._serialized_start=253
|
|
64
|
-
_globals['_JOB']._serialized_end=
|
|
65
|
-
_globals['
|
|
66
|
-
_globals['
|
|
67
|
-
_globals['
|
|
68
|
-
_globals['
|
|
69
|
-
_globals['
|
|
70
|
-
_globals['
|
|
71
|
-
_globals['
|
|
72
|
-
_globals['
|
|
73
|
-
_globals['
|
|
74
|
-
_globals['
|
|
75
|
-
_globals['
|
|
76
|
-
_globals['
|
|
77
|
-
_globals['
|
|
78
|
-
_globals['
|
|
80
|
+
_globals['_JOB']._serialized_end=866
|
|
81
|
+
_globals['_EXECUTIONSTATS']._serialized_start=869
|
|
82
|
+
_globals['_EXECUTIONSTATS']._serialized_end=1300
|
|
83
|
+
_globals['_TASKSTATECOUNT']._serialized_start=1302
|
|
84
|
+
_globals['_TASKSTATECOUNT']._serialized_end=1387
|
|
85
|
+
_globals['_TASKSUMMARY']._serialized_start=1390
|
|
86
|
+
_globals['_TASKSUMMARY']._serialized_end=1677
|
|
87
|
+
_globals['_PROGRESS']._serialized_start=1679
|
|
88
|
+
_globals['_PROGRESS']._serialized_end=1762
|
|
89
|
+
_globals['_TASK']._serialized_start=1765
|
|
90
|
+
_globals['_TASK']._serialized_end=2183
|
|
91
|
+
_globals['_TASKIDENTIFIER']._serialized_start=2185
|
|
92
|
+
_globals['_TASKIDENTIFIER']._serialized_end=2285
|
|
93
|
+
_globals['_TASKS']._serialized_start=2287
|
|
94
|
+
_globals['_TASKS']._serialized_end=2336
|
|
95
|
+
_globals['_SINGLETASKSUBMISSION']._serialized_start=2339
|
|
96
|
+
_globals['_SINGLETASKSUBMISSION']._serialized_end=2619
|
|
97
|
+
_globals['_TASKSUBMISSIONS']._serialized_start=2622
|
|
98
|
+
_globals['_TASKSUBMISSIONS']._serialized_end=2895
|
|
99
|
+
_globals['_TASKSUBMISSIONGROUP']._serialized_start=2898
|
|
100
|
+
_globals['_TASKSUBMISSIONGROUP']._serialized_end=3892
|
|
101
|
+
_globals['_TASKLEASE']._serialized_start=3895
|
|
102
|
+
_globals['_TASKLEASE']._serialized_end=4064
|
|
79
103
|
# @@protoc_insertion_point(module_scope)
|
|
@@ -11,12 +11,22 @@ from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union
|
|
|
11
11
|
|
|
12
12
|
DESCRIPTOR: _descriptor.FileDescriptor
|
|
13
13
|
|
|
14
|
+
class LegacyJobState(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
|
|
15
|
+
__slots__ = ()
|
|
16
|
+
LEGACY_JOB_STATE_UNSPECIFIED: _ClassVar[LegacyJobState]
|
|
17
|
+
LEGACY_JOB_STATE_QUEUED: _ClassVar[LegacyJobState]
|
|
18
|
+
LEGACY_JOB_STATE_STARTED: _ClassVar[LegacyJobState]
|
|
19
|
+
LEGACY_JOB_STATE_COMPLETED: _ClassVar[LegacyJobState]
|
|
20
|
+
|
|
14
21
|
class JobState(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
|
|
15
22
|
__slots__ = ()
|
|
16
23
|
JOB_STATE_UNSPECIFIED: _ClassVar[JobState]
|
|
17
|
-
|
|
24
|
+
JOB_STATE_SUBMITTED: _ClassVar[JobState]
|
|
25
|
+
JOB_STATE_RUNNING: _ClassVar[JobState]
|
|
18
26
|
JOB_STATE_STARTED: _ClassVar[JobState]
|
|
19
27
|
JOB_STATE_COMPLETED: _ClassVar[JobState]
|
|
28
|
+
JOB_STATE_FAILED: _ClassVar[JobState]
|
|
29
|
+
JOB_STATE_CANCELED: _ClassVar[JobState]
|
|
20
30
|
|
|
21
31
|
class TaskState(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
|
|
22
32
|
__slots__ = ()
|
|
@@ -25,17 +35,22 @@ class TaskState(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
|
|
|
25
35
|
TASK_STATE_RUNNING: _ClassVar[TaskState]
|
|
26
36
|
TASK_STATE_COMPUTED: _ClassVar[TaskState]
|
|
27
37
|
TASK_STATE_FAILED: _ClassVar[TaskState]
|
|
28
|
-
|
|
38
|
+
LEGACY_JOB_STATE_UNSPECIFIED: LegacyJobState
|
|
39
|
+
LEGACY_JOB_STATE_QUEUED: LegacyJobState
|
|
40
|
+
LEGACY_JOB_STATE_STARTED: LegacyJobState
|
|
41
|
+
LEGACY_JOB_STATE_COMPLETED: LegacyJobState
|
|
29
42
|
JOB_STATE_UNSPECIFIED: JobState
|
|
30
|
-
|
|
43
|
+
JOB_STATE_SUBMITTED: JobState
|
|
44
|
+
JOB_STATE_RUNNING: JobState
|
|
31
45
|
JOB_STATE_STARTED: JobState
|
|
32
46
|
JOB_STATE_COMPLETED: JobState
|
|
47
|
+
JOB_STATE_FAILED: JobState
|
|
48
|
+
JOB_STATE_CANCELED: JobState
|
|
33
49
|
TASK_STATE_UNSPECIFIED: TaskState
|
|
34
50
|
TASK_STATE_QUEUED: TaskState
|
|
35
51
|
TASK_STATE_RUNNING: TaskState
|
|
36
52
|
TASK_STATE_COMPUTED: TaskState
|
|
37
53
|
TASK_STATE_FAILED: TaskState
|
|
38
|
-
TASK_STATE_CANCELLED: TaskState
|
|
39
54
|
|
|
40
55
|
class Cluster(_message.Message):
|
|
41
56
|
__slots__ = ("slug", "display_name", "deletable")
|
|
@@ -48,28 +63,58 @@ class Cluster(_message.Message):
|
|
|
48
63
|
def __init__(self, slug: _Optional[str] = ..., display_name: _Optional[str] = ..., deletable: bool = ...) -> None: ...
|
|
49
64
|
|
|
50
65
|
class Job(_message.Message):
|
|
51
|
-
__slots__ = ("id", "name", "trace_parent", "canceled", "
|
|
66
|
+
__slots__ = ("id", "name", "trace_parent", "canceled", "legacy_state", "submitted_at", "started_at", "task_summaries", "automation_id", "progress", "state", "execution_stats")
|
|
52
67
|
ID_FIELD_NUMBER: _ClassVar[int]
|
|
53
68
|
NAME_FIELD_NUMBER: _ClassVar[int]
|
|
54
69
|
TRACE_PARENT_FIELD_NUMBER: _ClassVar[int]
|
|
55
70
|
CANCELED_FIELD_NUMBER: _ClassVar[int]
|
|
56
|
-
|
|
71
|
+
LEGACY_STATE_FIELD_NUMBER: _ClassVar[int]
|
|
57
72
|
SUBMITTED_AT_FIELD_NUMBER: _ClassVar[int]
|
|
58
73
|
STARTED_AT_FIELD_NUMBER: _ClassVar[int]
|
|
59
74
|
TASK_SUMMARIES_FIELD_NUMBER: _ClassVar[int]
|
|
60
75
|
AUTOMATION_ID_FIELD_NUMBER: _ClassVar[int]
|
|
61
76
|
PROGRESS_FIELD_NUMBER: _ClassVar[int]
|
|
77
|
+
STATE_FIELD_NUMBER: _ClassVar[int]
|
|
78
|
+
EXECUTION_STATS_FIELD_NUMBER: _ClassVar[int]
|
|
62
79
|
id: _id_pb2.ID
|
|
63
80
|
name: str
|
|
64
81
|
trace_parent: str
|
|
65
82
|
canceled: bool
|
|
66
|
-
|
|
83
|
+
legacy_state: LegacyJobState
|
|
67
84
|
submitted_at: _timestamp_pb2.Timestamp
|
|
68
85
|
started_at: _timestamp_pb2.Timestamp
|
|
69
86
|
task_summaries: _containers.RepeatedCompositeFieldContainer[TaskSummary]
|
|
70
87
|
automation_id: _id_pb2.ID
|
|
71
88
|
progress: _containers.RepeatedCompositeFieldContainer[Progress]
|
|
72
|
-
|
|
89
|
+
state: JobState
|
|
90
|
+
execution_stats: ExecutionStats
|
|
91
|
+
def __init__(self, id: _Optional[_Union[_id_pb2.ID, _Mapping]] = ..., name: _Optional[str] = ..., trace_parent: _Optional[str] = ..., canceled: bool = ..., legacy_state: _Optional[_Union[LegacyJobState, str]] = ..., submitted_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., started_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., task_summaries: _Optional[_Iterable[_Union[TaskSummary, _Mapping]]] = ..., automation_id: _Optional[_Union[_id_pb2.ID, _Mapping]] = ..., progress: _Optional[_Iterable[_Union[Progress, _Mapping]]] = ..., state: _Optional[_Union[JobState, str]] = ..., execution_stats: _Optional[_Union[ExecutionStats, _Mapping]] = ...) -> None: ...
|
|
92
|
+
|
|
93
|
+
class ExecutionStats(_message.Message):
|
|
94
|
+
__slots__ = ("first_task_started_at", "last_task_stopped_at", "compute_time", "elapsed_time", "parallelism", "total_tasks", "tasks_by_state")
|
|
95
|
+
FIRST_TASK_STARTED_AT_FIELD_NUMBER: _ClassVar[int]
|
|
96
|
+
LAST_TASK_STOPPED_AT_FIELD_NUMBER: _ClassVar[int]
|
|
97
|
+
COMPUTE_TIME_FIELD_NUMBER: _ClassVar[int]
|
|
98
|
+
ELAPSED_TIME_FIELD_NUMBER: _ClassVar[int]
|
|
99
|
+
PARALLELISM_FIELD_NUMBER: _ClassVar[int]
|
|
100
|
+
TOTAL_TASKS_FIELD_NUMBER: _ClassVar[int]
|
|
101
|
+
TASKS_BY_STATE_FIELD_NUMBER: _ClassVar[int]
|
|
102
|
+
first_task_started_at: _timestamp_pb2.Timestamp
|
|
103
|
+
last_task_stopped_at: _timestamp_pb2.Timestamp
|
|
104
|
+
compute_time: _duration_pb2.Duration
|
|
105
|
+
elapsed_time: _duration_pb2.Duration
|
|
106
|
+
parallelism: float
|
|
107
|
+
total_tasks: int
|
|
108
|
+
tasks_by_state: _containers.RepeatedCompositeFieldContainer[TaskStateCount]
|
|
109
|
+
def __init__(self, first_task_started_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., last_task_stopped_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., compute_time: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., elapsed_time: _Optional[_Union[_duration_pb2.Duration, _Mapping]] = ..., parallelism: _Optional[float] = ..., total_tasks: _Optional[int] = ..., tasks_by_state: _Optional[_Iterable[_Union[TaskStateCount, _Mapping]]] = ...) -> None: ...
|
|
110
|
+
|
|
111
|
+
class TaskStateCount(_message.Message):
|
|
112
|
+
__slots__ = ("state", "count")
|
|
113
|
+
STATE_FIELD_NUMBER: _ClassVar[int]
|
|
114
|
+
COUNT_FIELD_NUMBER: _ClassVar[int]
|
|
115
|
+
state: TaskState
|
|
116
|
+
count: int
|
|
117
|
+
def __init__(self, state: _Optional[_Union[TaskState, str]] = ..., count: _Optional[int] = ...) -> None: ...
|
|
73
118
|
|
|
74
119
|
class TaskSummary(_message.Message):
|
|
75
120
|
__slots__ = ("id", "display", "state", "parent_id", "started_at", "stopped_at")
|
|
@@ -135,21 +180,49 @@ class Tasks(_message.Message):
|
|
|
135
180
|
tasks: _containers.RepeatedCompositeFieldContainer[Task]
|
|
136
181
|
def __init__(self, tasks: _Optional[_Iterable[_Union[Task, _Mapping]]] = ...) -> None: ...
|
|
137
182
|
|
|
138
|
-
class
|
|
139
|
-
__slots__ = ("cluster_slug", "identifier", "
|
|
183
|
+
class SingleTaskSubmission(_message.Message):
|
|
184
|
+
__slots__ = ("cluster_slug", "identifier", "display", "dependencies", "max_retries", "input")
|
|
140
185
|
CLUSTER_SLUG_FIELD_NUMBER: _ClassVar[int]
|
|
141
186
|
IDENTIFIER_FIELD_NUMBER: _ClassVar[int]
|
|
142
|
-
INPUT_FIELD_NUMBER: _ClassVar[int]
|
|
143
187
|
DISPLAY_FIELD_NUMBER: _ClassVar[int]
|
|
144
188
|
DEPENDENCIES_FIELD_NUMBER: _ClassVar[int]
|
|
145
189
|
MAX_RETRIES_FIELD_NUMBER: _ClassVar[int]
|
|
190
|
+
INPUT_FIELD_NUMBER: _ClassVar[int]
|
|
146
191
|
cluster_slug: str
|
|
147
192
|
identifier: TaskIdentifier
|
|
148
|
-
input: bytes
|
|
149
193
|
display: str
|
|
150
194
|
dependencies: _containers.RepeatedScalarFieldContainer[int]
|
|
151
195
|
max_retries: int
|
|
152
|
-
|
|
196
|
+
input: bytes
|
|
197
|
+
def __init__(self, cluster_slug: _Optional[str] = ..., identifier: _Optional[_Union[TaskIdentifier, _Mapping]] = ..., display: _Optional[str] = ..., dependencies: _Optional[_Iterable[int]] = ..., max_retries: _Optional[int] = ..., input: _Optional[bytes] = ...) -> None: ...
|
|
198
|
+
|
|
199
|
+
class TaskSubmissions(_message.Message):
|
|
200
|
+
__slots__ = ("task_groups", "cluster_slug_lookup", "identifier_lookup", "display_lookup")
|
|
201
|
+
TASK_GROUPS_FIELD_NUMBER: _ClassVar[int]
|
|
202
|
+
CLUSTER_SLUG_LOOKUP_FIELD_NUMBER: _ClassVar[int]
|
|
203
|
+
IDENTIFIER_LOOKUP_FIELD_NUMBER: _ClassVar[int]
|
|
204
|
+
DISPLAY_LOOKUP_FIELD_NUMBER: _ClassVar[int]
|
|
205
|
+
task_groups: _containers.RepeatedCompositeFieldContainer[TaskSubmissionGroup]
|
|
206
|
+
cluster_slug_lookup: _containers.RepeatedScalarFieldContainer[str]
|
|
207
|
+
identifier_lookup: _containers.RepeatedCompositeFieldContainer[TaskIdentifier]
|
|
208
|
+
display_lookup: _containers.RepeatedScalarFieldContainer[str]
|
|
209
|
+
def __init__(self, task_groups: _Optional[_Iterable[_Union[TaskSubmissionGroup, _Mapping]]] = ..., cluster_slug_lookup: _Optional[_Iterable[str]] = ..., identifier_lookup: _Optional[_Iterable[_Union[TaskIdentifier, _Mapping]]] = ..., display_lookup: _Optional[_Iterable[str]] = ...) -> None: ...
|
|
210
|
+
|
|
211
|
+
class TaskSubmissionGroup(_message.Message):
|
|
212
|
+
__slots__ = ("dependencies_on_other_groups", "inputs", "identifier_pointers", "cluster_slug_pointers", "display_pointers", "max_retries_values")
|
|
213
|
+
DEPENDENCIES_ON_OTHER_GROUPS_FIELD_NUMBER: _ClassVar[int]
|
|
214
|
+
INPUTS_FIELD_NUMBER: _ClassVar[int]
|
|
215
|
+
IDENTIFIER_POINTERS_FIELD_NUMBER: _ClassVar[int]
|
|
216
|
+
CLUSTER_SLUG_POINTERS_FIELD_NUMBER: _ClassVar[int]
|
|
217
|
+
DISPLAY_POINTERS_FIELD_NUMBER: _ClassVar[int]
|
|
218
|
+
MAX_RETRIES_VALUES_FIELD_NUMBER: _ClassVar[int]
|
|
219
|
+
dependencies_on_other_groups: _containers.RepeatedScalarFieldContainer[int]
|
|
220
|
+
inputs: _containers.RepeatedScalarFieldContainer[bytes]
|
|
221
|
+
identifier_pointers: _containers.RepeatedScalarFieldContainer[int]
|
|
222
|
+
cluster_slug_pointers: _containers.RepeatedScalarFieldContainer[int]
|
|
223
|
+
display_pointers: _containers.RepeatedScalarFieldContainer[int]
|
|
224
|
+
max_retries_values: _containers.RepeatedScalarFieldContainer[int]
|
|
225
|
+
def __init__(self, dependencies_on_other_groups: _Optional[_Iterable[int]] = ..., inputs: _Optional[_Iterable[bytes]] = ..., identifier_pointers: _Optional[_Iterable[int]] = ..., cluster_slug_pointers: _Optional[_Iterable[int]] = ..., display_pointers: _Optional[_Iterable[int]] = ..., max_retries_values: _Optional[_Iterable[int]] = ...) -> None: ...
|
|
153
226
|
|
|
154
227
|
class TaskLease(_message.Message):
|
|
155
228
|
__slots__ = ("lease", "recommended_wait_until_next_extension")
|