flyte 2.0.0b13__py3-none-any.whl → 2.0.0b15__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 flyte might be problematic. Click here for more details.

Files changed (45) hide show
  1. flyte/_bin/debug.py +38 -0
  2. flyte/_bin/runtime.py +13 -0
  3. flyte/_code_bundle/_utils.py +2 -0
  4. flyte/_code_bundle/bundle.py +4 -4
  5. flyte/_debug/__init__.py +0 -0
  6. flyte/_debug/constants.py +39 -0
  7. flyte/_debug/utils.py +17 -0
  8. flyte/_debug/vscode.py +300 -0
  9. flyte/_image.py +32 -6
  10. flyte/_initialize.py +14 -28
  11. flyte/_internal/controllers/remote/_action.py +1 -1
  12. flyte/_internal/controllers/remote/_controller.py +35 -35
  13. flyte/_internal/imagebuild/docker_builder.py +11 -15
  14. flyte/_internal/imagebuild/remote_builder.py +52 -23
  15. flyte/_internal/runtime/entrypoints.py +3 -0
  16. flyte/_internal/runtime/task_serde.py +1 -2
  17. flyte/_internal/runtime/taskrunner.py +9 -3
  18. flyte/_protos/common/identifier_pb2.py +25 -19
  19. flyte/_protos/common/identifier_pb2.pyi +10 -0
  20. flyte/_protos/imagebuilder/definition_pb2.py +32 -31
  21. flyte/_protos/imagebuilder/definition_pb2.pyi +25 -12
  22. flyte/_protos/workflow/queue_service_pb2.py +26 -24
  23. flyte/_protos/workflow/queue_service_pb2.pyi +6 -4
  24. flyte/_protos/workflow/run_definition_pb2.py +50 -48
  25. flyte/_protos/workflow/run_definition_pb2.pyi +41 -16
  26. flyte/_protos/workflow/task_definition_pb2.py +16 -13
  27. flyte/_protos/workflow/task_definition_pb2.pyi +7 -0
  28. flyte/_task.py +6 -6
  29. flyte/_task_environment.py +4 -4
  30. flyte/_version.py +3 -3
  31. flyte/cli/_build.py +2 -3
  32. flyte/cli/_run.py +11 -12
  33. flyte/models.py +2 -0
  34. flyte/remote/_action.py +5 -2
  35. flyte/remote/_client/auth/_authenticators/device_code.py +1 -1
  36. flyte/remote/_client/auth/_authenticators/pkce.py +1 -1
  37. flyte/remote/_task.py +4 -4
  38. flyte-2.0.0b15.data/scripts/debug.py +38 -0
  39. {flyte-2.0.0b13.data → flyte-2.0.0b15.data}/scripts/runtime.py +13 -0
  40. {flyte-2.0.0b13.dist-info → flyte-2.0.0b15.dist-info}/METADATA +2 -2
  41. {flyte-2.0.0b13.dist-info → flyte-2.0.0b15.dist-info}/RECORD +45 -39
  42. {flyte-2.0.0b13.dist-info → flyte-2.0.0b15.dist-info}/WHEEL +0 -0
  43. {flyte-2.0.0b13.dist-info → flyte-2.0.0b15.dist-info}/entry_points.txt +0 -0
  44. {flyte-2.0.0b13.dist-info → flyte-2.0.0b15.dist-info}/licenses/LICENSE +0 -0
  45. {flyte-2.0.0b13.dist-info → flyte-2.0.0b15.dist-info}/top_level.txt +0 -0
@@ -167,7 +167,7 @@ class RemoteController(Controller):
167
167
  # It is not allowed to change the code bundle (for regular code bundles) in the middle of a run.
168
168
  code_bundle = tctx.code_bundle
169
169
 
170
- if code_bundle and code_bundle.pkl:
170
+ if tctx.interactive_mode or (code_bundle and code_bundle.pkl):
171
171
  logger.debug(f"Building new pkl bundle for task {_task.name}")
172
172
  code_bundle = await build_pkl_bundle(
173
173
  _task,
@@ -436,9 +436,9 @@ class RemoteController(Controller):
436
436
 
437
437
  current_action_id = tctx.action
438
438
  sub_run_output_path = storage.join(tctx.run_base_dir, info.action.name)
439
+ outputs_file_path: str = ""
439
440
 
440
441
  if info.interface.has_outputs():
441
- outputs_file_path: str = ""
442
442
  if info.output:
443
443
  outputs = await convert.convert_from_native_to_outputs(info.output, info.interface)
444
444
  outputs_file_path = io.outputs_path(sub_run_output_path)
@@ -449,41 +449,41 @@ class RemoteController(Controller):
449
449
  else:
450
450
  raise flyte.errors.RuntimeSystemError("BadTraceInfo", "Trace info does not have output or error")
451
451
 
452
- typed_interface = transform_native_to_typed_interface(info.interface)
453
-
454
- trace_action = Action.from_trace(
455
- parent_action_name=current_action_id.name,
456
- action_id=identifier_pb2.ActionIdentifier(
457
- name=info.action.name,
458
- run=identifier_pb2.RunIdentifier(
459
- name=current_action_id.run_name,
460
- project=current_action_id.project,
461
- domain=current_action_id.domain,
462
- org=current_action_id.org,
463
- ),
452
+ typed_interface = transform_native_to_typed_interface(info.interface)
453
+
454
+ trace_action = Action.from_trace(
455
+ parent_action_name=current_action_id.name,
456
+ action_id=identifier_pb2.ActionIdentifier(
457
+ name=info.action.name,
458
+ run=identifier_pb2.RunIdentifier(
459
+ name=current_action_id.run_name,
460
+ project=current_action_id.project,
461
+ domain=current_action_id.domain,
462
+ org=current_action_id.org,
464
463
  ),
465
- inputs_uri=info.inputs_path,
466
- outputs_uri=outputs_file_path,
467
- friendly_name=info.name,
468
- group_data=tctx.group_data,
469
- run_output_base=tctx.run_base_dir,
470
- start_time=info.start_time,
471
- end_time=info.end_time,
472
- typed_interface=typed_interface if typed_interface else None,
473
- )
464
+ ),
465
+ inputs_uri=info.inputs_path,
466
+ outputs_uri=outputs_file_path,
467
+ friendly_name=info.name,
468
+ group_data=tctx.group_data,
469
+ run_output_base=tctx.run_base_dir,
470
+ start_time=info.start_time,
471
+ end_time=info.end_time,
472
+ typed_interface=typed_interface if typed_interface else None,
473
+ )
474
474
 
475
- async with self._parent_action_semaphore[unique_action_name(current_action_id)]:
476
- try:
477
- logger.info(
478
- f"Submitting Trace action Run:[{trace_action.run_name},"
479
- f" Parent:[{trace_action.parent_action_name}],"
480
- f" Trace fn:[{info.name}], action:[{info.action.name}]"
481
- )
482
- await self.submit_action(trace_action)
483
- logger.info(f"Trace Action for [{info.name}] action id: {info.action.name}, completed!")
484
- except asyncio.CancelledError:
485
- # If the action is cancelled, we need to cancel the action on the server as well
486
- raise
475
+ async with self._parent_action_semaphore[unique_action_name(current_action_id)]:
476
+ try:
477
+ logger.info(
478
+ f"Submitting Trace action Run:[{trace_action.run_name},"
479
+ f" Parent:[{trace_action.parent_action_name}],"
480
+ f" Trace fn:[{info.name}], action:[{info.action.name}]"
481
+ )
482
+ await self.submit_action(trace_action)
483
+ logger.info(f"Trace Action for [{info.name}] action id: {info.action.name}, completed!")
484
+ except asyncio.CancelledError:
485
+ # If the action is cancelled, we need to cancel the action on the server as well
486
+ raise
487
487
 
488
488
  async def _submit_task_ref(
489
489
  self, invoke_seq_num: int, _task: task_definition_pb2.TaskDetails, max_inline_io_bytes: int, *args, **kwargs
@@ -302,11 +302,9 @@ def _get_secret_commands(layers: typing.Tuple[Layer, ...]) -> typing.List[str]:
302
302
  commands = []
303
303
 
304
304
  def _get_secret_command(secret: str | Secret) -> typing.List[str]:
305
- secret_id = hash(secret)
306
305
  if isinstance(secret, str):
307
- if not os.path.exists(secret):
308
- raise FileNotFoundError(f"Secret file '{secret}' not found")
309
- return ["--secret", f"id={secret_id},src={secret}"]
306
+ secret = Secret(key=secret)
307
+ secret_id = hash(secret)
310
308
  secret_env_key = "_".join([k.upper() for k in filter(None, (secret.group, secret.key))])
311
309
  secret_env = os.getenv(secret_env_key)
312
310
  if secret_env:
@@ -329,18 +327,16 @@ def _get_secret_mounts_layer(secrets: typing.Tuple[str | Secret, ...] | None) ->
329
327
  if secrets is None:
330
328
  return ""
331
329
  secret_mounts_layer = ""
332
- for secret in secrets:
330
+ for s in secrets:
331
+ secret = Secret(key=s) if isinstance(s, str) else s
333
332
  secret_id = hash(secret)
334
- if isinstance(secret, str):
335
- secret_mounts_layer += f"--mount=type=secret,id={secret_id},target=/run/secrets/{os.path.basename(secret)}"
336
- elif isinstance(secret, Secret):
337
- if secret.mount:
338
- secret_mounts_layer += f"--mount=type=secret,id={secret_id},target={secret.mount}"
339
- elif secret.as_env_var:
340
- secret_mounts_layer += f"--mount=type=secret,id={secret_id},env={secret.as_env_var}"
341
- else:
342
- secret_file_name = "_".join(list(filter(None, (secret.group, secret.key))))
343
- secret_mounts_layer += f"--mount=type=secret,id={secret_id},src=/run/secrets/{secret_file_name}"
333
+ if secret.mount:
334
+ secret_mounts_layer += f"--mount=type=secret,id={secret_id},target={secret.mount}"
335
+ elif secret.as_env_var:
336
+ secret_mounts_layer += f"--mount=type=secret,id={secret_id},env={secret.as_env_var}"
337
+ else:
338
+ secret_default_env_key = "_".join(list(filter(None, (secret.group, secret.key))))
339
+ secret_mounts_layer += f"--mount=type=secret,id={secret_id},env={secret_default_env_key}"
344
340
 
345
341
  return secret_mounts_layer
346
342
 
@@ -19,6 +19,7 @@ from flyte._image import (
19
19
  CopyConfig,
20
20
  DockerIgnore,
21
21
  Env,
22
+ PipOption,
22
23
  PipPackages,
23
24
  PythonWheels,
24
25
  Requirements,
@@ -28,14 +29,16 @@ from flyte._image import (
28
29
  )
29
30
  from flyte._internal.imagebuild.image_builder import ImageBuilder, ImageChecker
30
31
  from flyte._internal.imagebuild.utils import copy_files_to_context
32
+ from flyte._internal.runtime.task_serde import get_security_context
31
33
  from flyte._logging import logger
34
+ from flyte._secret import Secret
32
35
  from flyte.remote import ActionOutputs, Run
33
36
 
34
37
  if TYPE_CHECKING:
35
38
  from flyte._protos.imagebuilder import definition_pb2 as image_definition_pb2
36
39
 
37
40
  IMAGE_TASK_NAME = "build-image"
38
- OPTIMIZE_TASK_NAME = "optimize_task"
41
+ OPTIMIZE_TASK_NAME = "optimize-task"
39
42
  IMAGE_TASK_PROJECT = "system"
40
43
  IMAGE_TASK_DOMAIN = "production"
41
44
 
@@ -97,12 +100,12 @@ class RemoteImageBuilder(ImageBuilder):
97
100
  spec, context = await _validate_configuration(image)
98
101
 
99
102
  start = datetime.now(timezone.utc)
100
- entity = remote.Task.get(
103
+ entity = await remote.Task.get(
101
104
  name=IMAGE_TASK_NAME,
102
105
  project=IMAGE_TASK_PROJECT,
103
106
  domain=IMAGE_TASK_DOMAIN,
104
107
  auto_version="latest",
105
- )
108
+ ).override.aio(secrets=_get_build_secrets_from_image(image))
106
109
  run = cast(
107
110
  Run,
108
111
  await flyte.with_runcontext(project=IMAGE_TASK_PROJECT, domain=IMAGE_TASK_DOMAIN).run.aio(
@@ -179,9 +182,27 @@ def _get_layers_proto(image: Image, context_path: Path) -> "image_definition_pb2
179
182
 
180
183
  layers = []
181
184
  for layer in image._layers:
185
+ secret_mounts = None
186
+ pip_options = None
187
+
188
+ if isinstance(layer, PipOption):
189
+ pip_options = image_definition_pb2.PipOptions(
190
+ index_url=layer.index_url,
191
+ extra_index_urls=layer.extra_index_urls,
192
+ pre=layer.pre,
193
+ extra_args=layer.extra_args,
194
+ )
195
+
196
+ if hasattr(layer, "secret_mounts"):
197
+ sc = get_security_context(layer.secret_mounts)
198
+ secret_mounts = sc.secrets if sc else None
199
+
182
200
  if isinstance(layer, AptPackages):
183
201
  apt_layer = image_definition_pb2.Layer(
184
- apt_packages=image_definition_pb2.AptPackages(packages=layer.packages)
202
+ apt_packages=image_definition_pb2.AptPackages(
203
+ packages=layer.packages,
204
+ secret_mounts=secret_mounts,
205
+ ),
185
206
  )
186
207
  layers.append(apt_layer)
187
208
  elif isinstance(layer, PythonWheels):
@@ -189,12 +210,8 @@ def _get_layers_proto(image: Image, context_path: Path) -> "image_definition_pb2
189
210
  wheel_layer = image_definition_pb2.Layer(
190
211
  python_wheels=image_definition_pb2.PythonWheels(
191
212
  dir=str(dst_path.relative_to(context_path)),
192
- options=image_definition_pb2.PipOptions(
193
- index_url=layer.index_url,
194
- extra_index_urls=layer.extra_index_urls,
195
- pre=layer.pre,
196
- extra_args=layer.extra_args,
197
- ),
213
+ options=pip_options,
214
+ secret_mounts=secret_mounts,
198
215
  )
199
216
  )
200
217
  layers.append(wheel_layer)
@@ -204,12 +221,8 @@ def _get_layers_proto(image: Image, context_path: Path) -> "image_definition_pb2
204
221
  requirements_layer = image_definition_pb2.Layer(
205
222
  requirements=image_definition_pb2.Requirements(
206
223
  file=str(dst_path.relative_to(context_path)),
207
- options=image_definition_pb2.PipOptions(
208
- index_url=layer.index_url,
209
- extra_index_urls=layer.extra_index_urls,
210
- pre=layer.pre,
211
- extra_args=layer.extra_args,
212
- ),
224
+ options=pip_options,
225
+ secret_mounts=secret_mounts,
213
226
  )
214
227
  )
215
228
  layers.append(requirements_layer)
@@ -226,12 +239,8 @@ def _get_layers_proto(image: Image, context_path: Path) -> "image_definition_pb2
226
239
  pip_layer = image_definition_pb2.Layer(
227
240
  pip_packages=image_definition_pb2.PipPackages(
228
241
  packages=packages,
229
- options=image_definition_pb2.PipOptions(
230
- index_url=layer.index_url,
231
- extra_index_urls=layer.extra_index_urls,
232
- pre=layer.pre,
233
- extra_args=layer.extra_args,
234
- ),
242
+ options=pip_options,
243
+ secret_mounts=secret_mounts,
235
244
  )
236
245
  )
237
246
  layers.append(pip_layer)
@@ -250,7 +259,10 @@ def _get_layers_proto(image: Image, context_path: Path) -> "image_definition_pb2
250
259
  layers.append(uv_layer)
251
260
  elif isinstance(layer, Commands):
252
261
  commands_layer = image_definition_pb2.Layer(
253
- commands=image_definition_pb2.Commands(cmd=list(layer.commands))
262
+ commands=image_definition_pb2.Commands(
263
+ cmd=list(layer.commands),
264
+ secret_mounts=secret_mounts,
265
+ )
254
266
  )
255
267
  layers.append(commands_layer)
256
268
  elif isinstance(layer, DockerIgnore):
@@ -287,3 +299,20 @@ def _get_layers_proto(image: Image, context_path: Path) -> "image_definition_pb2
287
299
 
288
300
  def _get_fully_qualified_image_name(outputs: ActionOutputs) -> str:
289
301
  return outputs.pb2.literals[0].value.scalar.primitive.string_value
302
+
303
+
304
+ def _get_build_secrets_from_image(image: Image) -> Optional[typing.List[Secret]]:
305
+ secrets = []
306
+ DEFAULT_SECRET_DIR = Path("etc/flyte/secrets")
307
+ for layer in image._layers:
308
+ if isinstance(layer, (PipOption, Commands, AptPackages)) and layer.secret_mounts is not None:
309
+ for secret_mount in layer.secret_mounts:
310
+ # Mount all the image secrets to a default directory that will be passed to the BuildKit server.
311
+ if isinstance(secret_mount, Secret):
312
+ secrets.append(Secret(key=secret_mount.key, group=secret_mount.group, mount=DEFAULT_SECRET_DIR))
313
+ elif isinstance(secret_mount, str):
314
+ secrets.append(Secret(key=secret_mount, mount=DEFAULT_SECRET_DIR))
315
+ else:
316
+ raise ValueError(f"Unsupported secret_mount type: {type(secret_mount)}")
317
+
318
+ return secrets
@@ -142,6 +142,7 @@ async def load_and_run_task(
142
142
  code_bundle: CodeBundle | None = None,
143
143
  input_path: str | None = None,
144
144
  image_cache: ImageCache | None = None,
145
+ interactive_mode: bool = False,
145
146
  ):
146
147
  """
147
148
  This method is invoked from the runtime/CLI and is used to run a task. This creates the context tree,
@@ -159,6 +160,7 @@ async def load_and_run_task(
159
160
  :param code_bundle: The code bundle to use for the task.
160
161
  :param input_path: The input path to use for the task.
161
162
  :param image_cache: Mappings of Image identifiers to image URIs.
163
+ :param interactive_mode: Whether to run the task in interactive mode.
162
164
  """
163
165
  task = await _download_and_load_task(code_bundle, resolver, resolver_args)
164
166
 
@@ -175,4 +177,5 @@ async def load_and_run_task(
175
177
  code_bundle=code_bundle,
176
178
  input_path=input_path,
177
179
  image_cache=image_cache,
180
+ interactive_mode=interactive_mode,
178
181
  )
@@ -54,7 +54,7 @@ def translate_task_to_wire(
54
54
  return task_definition_pb2.TaskSpec(
55
55
  task_template=tt,
56
56
  default_inputs=default_inputs,
57
- short_name=task.friendly_name[:_MAX_TASK_SHORT_NAME_LENGTH],
57
+ short_name=task.short_name[:_MAX_TASK_SHORT_NAME_LENGTH],
58
58
  environment=env,
59
59
  )
60
60
 
@@ -145,7 +145,6 @@ def get_proto_task(task: TaskTemplate, serialize_context: SerializationContext)
145
145
  logger.debug(f"Detected pkl bundle for task {task.name}, using computed version as cache version")
146
146
  cache_version = serialize_context.code_bundle.computed_version
147
147
  else:
148
- version_parameters = None
149
148
  if isinstance(task, AsyncFunctionTaskTemplate):
150
149
  version_parameters = VersionParameters(func=task.func, image=task.image)
151
150
  else:
@@ -110,16 +110,18 @@ async def run_task(
110
110
  async def convert_and_run(
111
111
  *,
112
112
  task: TaskTemplate,
113
- inputs: Inputs,
114
113
  action: ActionID,
115
114
  controller: Controller,
116
115
  raw_data_path: RawDataPath,
117
116
  version: str,
118
117
  output_path: str,
119
118
  run_base_dir: str,
119
+ inputs: Inputs = Inputs.empty(),
120
+ input_path: str | None = None,
120
121
  checkpoints: Checkpoints | None = None,
121
122
  code_bundle: CodeBundle | None = None,
122
123
  image_cache: ImageCache | None = None,
124
+ interactive_mode: bool = False,
123
125
  ) -> Tuple[Optional[Outputs], Optional[Error]]:
124
126
  """
125
127
  This method is used to convert the inputs to native types, and run the task. It assumes you are running
@@ -130,6 +132,7 @@ async def convert_and_run(
130
132
  action=action,
131
133
  checkpoints=checkpoints,
132
134
  code_bundle=code_bundle,
135
+ input_path=input_path,
133
136
  output_path=output_path,
134
137
  run_base_dir=run_base_dir,
135
138
  version=version,
@@ -137,8 +140,10 @@ async def convert_and_run(
137
140
  compiled_image_cache=image_cache,
138
141
  report=flyte.report.Report(name=action.name),
139
142
  mode="remote" if not ctx.data.task_context else ctx.data.task_context.mode,
143
+ interactive_mode=interactive_mode,
140
144
  )
141
145
  with ctx.replace_task_context(tctx):
146
+ inputs = await load_inputs(input_path) if input_path else inputs
142
147
  inputs_kwargs = await convert_inputs_to_native(inputs, task.native_interface)
143
148
  out, err = await run_task(tctx=tctx, controller=controller, task=task, inputs=inputs_kwargs)
144
149
  if err is not None:
@@ -161,15 +166,15 @@ async def extract_download_run_upload(
161
166
  code_bundle: CodeBundle | None = None,
162
167
  input_path: str | None = None,
163
168
  image_cache: ImageCache | None = None,
169
+ interactive_mode: bool = False,
164
170
  ):
165
171
  """
166
172
  This method is invoked from the CLI (urun) and is used to run a task. This assumes that the context tree
167
173
  has already been created, and the task has been loaded. It also handles the loading of the task.
168
174
  """
169
- inputs = await load_inputs(input_path) if input_path else None
170
175
  outputs, err = await convert_and_run(
171
176
  task=task,
172
- inputs=inputs or Inputs.empty(),
177
+ input_path=input_path,
173
178
  action=action,
174
179
  controller=controller,
175
180
  raw_data_path=raw_data_path,
@@ -179,6 +184,7 @@ async def extract_download_run_upload(
179
184
  checkpoints=checkpoints,
180
185
  code_bundle=code_bundle,
181
186
  image_cache=image_cache,
187
+ interactive_mode=interactive_mode,
182
188
  )
183
189
  if err is not None:
184
190
  path = await upload_error(err.err, output_path)
@@ -14,7 +14,7 @@ _sym_db = _symbol_database.Default()
14
14
  from flyte._protos.validate.validate import validate_pb2 as validate_dot_validate__pb2
15
15
 
16
16
 
17
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17\x63ommon/identifier.proto\x12\x0f\x63loudidl.common\x1a\x17validate/validate.proto\"~\n\x11ProjectIdentifier\x12+\n\x0corganization\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01R\x0corganization\x12\x1f\n\x06\x64omain\x18\x02 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01R\x06\x64omain\x12\x1b\n\x04name\x18\x03 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01R\x04name\"T\n\x11\x43lusterIdentifier\x12\"\n\x0corganization\x18\x01 \x01(\tR\x0corganization\x12\x1b\n\x04name\x18\x02 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01R\x04name\"O\n\x15\x43lusterPoolIdentifier\x12\"\n\x0corganization\x18\x01 \x01(\tR\x0corganization\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\"_\n\x17\x43lusterConfigIdentifier\x12+\n\x0corganization\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01R\x0corganization\x12\x17\n\x02id\x18\x02 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01R\x02id\"3\n\x0eUserIdentifier\x12!\n\x07subject\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01R\x07subject\":\n\x15\x41pplicationIdentifier\x12!\n\x07subject\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01R\x07subject\"Q\n\x0eRoleIdentifier\x12\"\n\x0corganization\x18\x01 \x01(\tR\x0corganization\x12\x1b\n\x04name\x18\x02 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01R\x04name\"O\n\rOrgIdentifier\x12>\n\x04name\x18\x01 \x01(\tB*\xfa\x42\'r%\x10\x01\x18?2\x1f^[a-z0-9]([-a-z0-9]*[a-z0-9])?$R\x04name\"y\n\x18ManagedClusterIdentifier\x12\x1b\n\x04name\x18\x02 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01R\x04name\x12:\n\x03org\x18\x03 \x01(\x0b\x32\x1e.cloudidl.common.OrgIdentifierB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01R\x03orgJ\x04\x08\x01\x10\x02\"S\n\x10PolicyIdentifier\x12\"\n\x0corganization\x18\x01 \x01(\tR\x0corganization\x12\x1b\n\x04name\x18\x02 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01R\x04name\"\x93\x01\n\rRunIdentifier\x12\x1b\n\x03org\x18\x01 \x01(\tB\t\xfa\x42\x06r\x04\x10\x01\x18?R\x03org\x12#\n\x07project\x18\x02 \x01(\tB\t\xfa\x42\x06r\x04\x10\x01\x18?R\x07project\x12!\n\x06\x64omain\x18\x03 \x01(\tB\t\xfa\x42\x06r\x04\x10\x01\x18?R\x06\x64omain\x12\x1d\n\x04name\x18\x04 \x01(\tB\t\xfa\x42\x06r\x04\x10\x01\x18\x1eR\x04name\"m\n\x10\x41\x63tionIdentifier\x12:\n\x03run\x18\x01 \x01(\x0b\x32\x1e.cloudidl.common.RunIdentifierB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01R\x03run\x12\x1d\n\x04name\x18\x02 \x01(\tB\t\xfa\x42\x06r\x04\x10\x01\x18\x1eR\x04name\"\x86\x01\n\x17\x41\x63tionAttemptIdentifier\x12H\n\taction_id\x18\x01 \x01(\x0b\x32!.cloudidl.common.ActionIdentifierB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01R\x08\x61\x63tionId\x12!\n\x07\x61ttempt\x18\x02 \x01(\rB\x07\xfa\x42\x04*\x02 \x00R\x07\x61ttemptB\xb0\x01\n\x13\x63om.cloudidl.commonB\x0fIdentifierProtoH\x02P\x01Z)github.com/unionai/cloud/gen/pb-go/common\xa2\x02\x03\x43\x43X\xaa\x02\x0f\x43loudidl.Common\xca\x02\x0f\x43loudidl\\Common\xe2\x02\x1b\x43loudidl\\Common\\GPBMetadata\xea\x02\x10\x43loudidl::Commonb\x06proto3')
17
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x17\x63ommon/identifier.proto\x12\x0f\x63loudidl.common\x1a\x17validate/validate.proto\"~\n\x11ProjectIdentifier\x12+\n\x0corganization\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01R\x0corganization\x12\x1f\n\x06\x64omain\x18\x02 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01R\x06\x64omain\x12\x1b\n\x04name\x18\x03 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01R\x04name\"T\n\x11\x43lusterIdentifier\x12\"\n\x0corganization\x18\x01 \x01(\tR\x0corganization\x12\x1b\n\x04name\x18\x02 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01R\x04name\"O\n\x15\x43lusterPoolIdentifier\x12\"\n\x0corganization\x18\x01 \x01(\tR\x0corganization\x12\x12\n\x04name\x18\x02 \x01(\tR\x04name\"_\n\x17\x43lusterConfigIdentifier\x12+\n\x0corganization\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01R\x0corganization\x12\x17\n\x02id\x18\x02 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01R\x02id\"\x88\x01\n\x19\x43lusterNodepoolIdentifier\x12\"\n\x0corganization\x18\x01 \x01(\tR\x0corganization\x12*\n\x0c\x63luster_name\x18\x02 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01R\x0b\x63lusterName\x12\x1b\n\x04name\x18\x03 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01R\x04name\"3\n\x0eUserIdentifier\x12!\n\x07subject\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01R\x07subject\":\n\x15\x41pplicationIdentifier\x12!\n\x07subject\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01R\x07subject\"Q\n\x0eRoleIdentifier\x12\"\n\x0corganization\x18\x01 \x01(\tR\x0corganization\x12\x1b\n\x04name\x18\x02 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01R\x04name\"O\n\rOrgIdentifier\x12>\n\x04name\x18\x01 \x01(\tB*\xfa\x42\'r%\x10\x01\x18?2\x1f^[a-z0-9]([-a-z0-9]*[a-z0-9])?$R\x04name\"y\n\x18ManagedClusterIdentifier\x12\x1b\n\x04name\x18\x02 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01R\x04name\x12:\n\x03org\x18\x03 \x01(\x0b\x32\x1e.cloudidl.common.OrgIdentifierB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01R\x03orgJ\x04\x08\x01\x10\x02\"S\n\x10PolicyIdentifier\x12\"\n\x0corganization\x18\x01 \x01(\tR\x0corganization\x12\x1b\n\x04name\x18\x02 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01R\x04name\"\x93\x01\n\rRunIdentifier\x12\x1b\n\x03org\x18\x01 \x01(\tB\t\xfa\x42\x06r\x04\x10\x01\x18?R\x03org\x12#\n\x07project\x18\x02 \x01(\tB\t\xfa\x42\x06r\x04\x10\x01\x18?R\x07project\x12!\n\x06\x64omain\x18\x03 \x01(\tB\t\xfa\x42\x06r\x04\x10\x01\x18?R\x06\x64omain\x12\x1d\n\x04name\x18\x04 \x01(\tB\t\xfa\x42\x06r\x04\x10\x01\x18\x1eR\x04name\"m\n\x10\x41\x63tionIdentifier\x12:\n\x03run\x18\x01 \x01(\x0b\x32\x1e.cloudidl.common.RunIdentifierB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01R\x03run\x12\x1d\n\x04name\x18\x02 \x01(\tB\t\xfa\x42\x06r\x04\x10\x01\x18\x1eR\x04name\"\x86\x01\n\x17\x41\x63tionAttemptIdentifier\x12H\n\taction_id\x18\x01 \x01(\x0b\x32!.cloudidl.common.ActionIdentifierB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01R\x08\x61\x63tionId\x12!\n\x07\x61ttempt\x18\x02 \x01(\rB\x07\xfa\x42\x04*\x02 \x00R\x07\x61ttemptB\xb0\x01\n\x13\x63om.cloudidl.commonB\x0fIdentifierProtoH\x02P\x01Z)github.com/unionai/cloud/gen/pb-go/common\xa2\x02\x03\x43\x43X\xaa\x02\x0f\x43loudidl.Common\xca\x02\x0f\x43loudidl\\Common\xe2\x02\x1b\x43loudidl\\Common\\GPBMetadata\xea\x02\x10\x43loudidl::Commonb\x06proto3')
18
18
 
19
19
  _globals = globals()
20
20
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -34,6 +34,10 @@ if _descriptor._USE_C_DESCRIPTORS == False:
34
34
  _CLUSTERCONFIGIDENTIFIER.fields_by_name['organization']._serialized_options = b'\372B\004r\002\020\001'
35
35
  _CLUSTERCONFIGIDENTIFIER.fields_by_name['id']._options = None
36
36
  _CLUSTERCONFIGIDENTIFIER.fields_by_name['id']._serialized_options = b'\372B\004r\002\020\001'
37
+ _CLUSTERNODEPOOLIDENTIFIER.fields_by_name['cluster_name']._options = None
38
+ _CLUSTERNODEPOOLIDENTIFIER.fields_by_name['cluster_name']._serialized_options = b'\372B\004r\002\020\001'
39
+ _CLUSTERNODEPOOLIDENTIFIER.fields_by_name['name']._options = None
40
+ _CLUSTERNODEPOOLIDENTIFIER.fields_by_name['name']._serialized_options = b'\372B\004r\002\020\001'
37
41
  _USERIDENTIFIER.fields_by_name['subject']._options = None
38
42
  _USERIDENTIFIER.fields_by_name['subject']._serialized_options = b'\372B\004r\002\020\001'
39
43
  _APPLICATIONIDENTIFIER.fields_by_name['subject']._options = None
@@ -72,22 +76,24 @@ if _descriptor._USE_C_DESCRIPTORS == False:
72
76
  _globals['_CLUSTERPOOLIDENTIFIER']._serialized_end=362
73
77
  _globals['_CLUSTERCONFIGIDENTIFIER']._serialized_start=364
74
78
  _globals['_CLUSTERCONFIGIDENTIFIER']._serialized_end=459
75
- _globals['_USERIDENTIFIER']._serialized_start=461
76
- _globals['_USERIDENTIFIER']._serialized_end=512
77
- _globals['_APPLICATIONIDENTIFIER']._serialized_start=514
78
- _globals['_APPLICATIONIDENTIFIER']._serialized_end=572
79
- _globals['_ROLEIDENTIFIER']._serialized_start=574
80
- _globals['_ROLEIDENTIFIER']._serialized_end=655
81
- _globals['_ORGIDENTIFIER']._serialized_start=657
82
- _globals['_ORGIDENTIFIER']._serialized_end=736
83
- _globals['_MANAGEDCLUSTERIDENTIFIER']._serialized_start=738
84
- _globals['_MANAGEDCLUSTERIDENTIFIER']._serialized_end=859
85
- _globals['_POLICYIDENTIFIER']._serialized_start=861
86
- _globals['_POLICYIDENTIFIER']._serialized_end=944
87
- _globals['_RUNIDENTIFIER']._serialized_start=947
88
- _globals['_RUNIDENTIFIER']._serialized_end=1094
89
- _globals['_ACTIONIDENTIFIER']._serialized_start=1096
90
- _globals['_ACTIONIDENTIFIER']._serialized_end=1205
91
- _globals['_ACTIONATTEMPTIDENTIFIER']._serialized_start=1208
92
- _globals['_ACTIONATTEMPTIDENTIFIER']._serialized_end=1342
79
+ _globals['_CLUSTERNODEPOOLIDENTIFIER']._serialized_start=462
80
+ _globals['_CLUSTERNODEPOOLIDENTIFIER']._serialized_end=598
81
+ _globals['_USERIDENTIFIER']._serialized_start=600
82
+ _globals['_USERIDENTIFIER']._serialized_end=651
83
+ _globals['_APPLICATIONIDENTIFIER']._serialized_start=653
84
+ _globals['_APPLICATIONIDENTIFIER']._serialized_end=711
85
+ _globals['_ROLEIDENTIFIER']._serialized_start=713
86
+ _globals['_ROLEIDENTIFIER']._serialized_end=794
87
+ _globals['_ORGIDENTIFIER']._serialized_start=796
88
+ _globals['_ORGIDENTIFIER']._serialized_end=875
89
+ _globals['_MANAGEDCLUSTERIDENTIFIER']._serialized_start=877
90
+ _globals['_MANAGEDCLUSTERIDENTIFIER']._serialized_end=998
91
+ _globals['_POLICYIDENTIFIER']._serialized_start=1000
92
+ _globals['_POLICYIDENTIFIER']._serialized_end=1083
93
+ _globals['_RUNIDENTIFIER']._serialized_start=1086
94
+ _globals['_RUNIDENTIFIER']._serialized_end=1233
95
+ _globals['_ACTIONIDENTIFIER']._serialized_start=1235
96
+ _globals['_ACTIONIDENTIFIER']._serialized_end=1344
97
+ _globals['_ACTIONATTEMPTIDENTIFIER']._serialized_start=1347
98
+ _globals['_ACTIONATTEMPTIDENTIFIER']._serialized_end=1481
93
99
  # @@protoc_insertion_point(module_scope)
@@ -39,6 +39,16 @@ class ClusterConfigIdentifier(_message.Message):
39
39
  id: str
40
40
  def __init__(self, organization: _Optional[str] = ..., id: _Optional[str] = ...) -> None: ...
41
41
 
42
+ class ClusterNodepoolIdentifier(_message.Message):
43
+ __slots__ = ["organization", "cluster_name", "name"]
44
+ ORGANIZATION_FIELD_NUMBER: _ClassVar[int]
45
+ CLUSTER_NAME_FIELD_NUMBER: _ClassVar[int]
46
+ NAME_FIELD_NUMBER: _ClassVar[int]
47
+ organization: str
48
+ cluster_name: str
49
+ name: str
50
+ def __init__(self, organization: _Optional[str] = ..., cluster_name: _Optional[str] = ..., name: _Optional[str] = ...) -> None: ...
51
+
42
52
  class UserIdentifier(_message.Message):
43
53
  __slots__ = ["subject"]
44
54
  SUBJECT_FIELD_NUMBER: _ClassVar[int]
@@ -11,10 +11,11 @@ from google.protobuf.internal import builder as _builder
11
11
  _sym_db = _symbol_database.Default()
12
12
 
13
13
 
14
+ from flyteidl.core import security_pb2 as flyteidl_dot_core_dot_security__pb2
14
15
  from flyte._protos.validate.validate import validate_pb2 as validate_dot_validate__pb2
15
16
 
16
17
 
17
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1dimagebuilder/definition.proto\x12\x15\x63loudidl.imagebuilder\x1a\x17validate/validate.proto\".\n\x0fImageIdentifier\x12\x1b\n\x04name\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01R\x04name\"S\n\x05Image\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32&.cloudidl.imagebuilder.ImageIdentifierR\x02id\x12\x12\n\x04\x66qin\x18\x02 \x01(\tR\x04\x66qin\")\n\x0b\x41ptPackages\x12\x1a\n\x08packages\x18\x01 \x03(\tR\x08packages\"\x84\x01\n\nPipOptions\x12\x1b\n\tindex_url\x18\x02 \x01(\tR\x08indexUrl\x12(\n\x10\x65xtra_index_urls\x18\x03 \x03(\tR\x0e\x65xtraIndexUrls\x12\x10\n\x03pre\x18\x04 \x01(\x08R\x03pre\x12\x1d\n\nextra_args\x18\x05 \x01(\tR\textraArgs\"f\n\x0bPipPackages\x12\x1a\n\x08packages\x18\x01 \x03(\tR\x08packages\x12;\n\x07options\x18\x02 \x01(\x0b\x32!.cloudidl.imagebuilder.PipOptionsR\x07options\"_\n\x0cRequirements\x12\x12\n\x04\x66ile\x18\x01 \x01(\tR\x04\x66ile\x12;\n\x07options\x18\x02 \x01(\x0b\x32!.cloudidl.imagebuilder.PipOptionsR\x07options\"]\n\x0cPythonWheels\x12\x10\n\x03\x64ir\x18\x01 \x01(\tR\x03\x64ir\x12;\n\x07options\x18\x02 \x01(\x0b\x32!.cloudidl.imagebuilder.PipOptionsR\x07options\"~\n\tUVProject\x12\x1c\n\tpyproject\x18\x01 \x01(\tR\tpyproject\x12\x16\n\x06uvlock\x18\x02 \x01(\tR\x06uvlock\x12;\n\x07options\x18\x03 \x01(\x0b\x32!.cloudidl.imagebuilder.PipOptionsR\x07options\"\x1c\n\x08\x43ommands\x12\x10\n\x03\x63md\x18\x02 \x03(\tR\x03\x63md\"#\n\x07WorkDir\x12\x18\n\x07workdir\x18\x01 \x01(\tR\x07workdir\"0\n\nCopyConfig\x12\x10\n\x03src\x18\x01 \x01(\tR\x03src\x12\x10\n\x03\x64st\x18\x02 \x01(\tR\x03\x64st\"\x99\x01\n\x03\x45nv\x12Q\n\renv_variables\x18\x01 \x03(\x0b\x32,.cloudidl.imagebuilder.Env.EnvVariablesEntryR\x0c\x65nvVariables\x1a?\n\x11\x45nvVariablesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xed\x04\n\x05Layer\x12G\n\x0c\x61pt_packages\x18\x01 \x01(\x0b\x32\".cloudidl.imagebuilder.AptPackagesH\x00R\x0b\x61ptPackages\x12G\n\x0cpip_packages\x18\x02 \x01(\x0b\x32\".cloudidl.imagebuilder.PipPackagesH\x00R\x0bpipPackages\x12=\n\x08\x63ommands\x18\x03 \x01(\x0b\x32\x1f.cloudidl.imagebuilder.CommandsH\x00R\x08\x63ommands\x12I\n\x0crequirements\x18\x04 \x01(\x0b\x32#.cloudidl.imagebuilder.RequirementsH\x00R\x0crequirements\x12J\n\rpython_wheels\x18\x05 \x01(\x0b\x32#.cloudidl.imagebuilder.PythonWheelsH\x00R\x0cpythonWheels\x12:\n\x07workdir\x18\x06 \x01(\x0b\x32\x1e.cloudidl.imagebuilder.WorkDirH\x00R\x07workdir\x12\x44\n\x0b\x63opy_config\x18\x07 \x01(\x0b\x32!.cloudidl.imagebuilder.CopyConfigH\x00R\ncopyConfig\x12\x41\n\nuv_project\x18\x08 \x01(\x0b\x32 .cloudidl.imagebuilder.UVProjectH\x00R\tuvProject\x12.\n\x03\x65nv\x18\t \x01(\x0b\x32\x1a.cloudidl.imagebuilder.EnvH\x00R\x03\x65nvB\x07\n\x05layer\"\xa3\x01\n\tImageSpec\x12\x1d\n\nbase_image\x18\x01 \x01(\tR\tbaseImage\x12%\n\x0epython_version\x18\x02 \x01(\tR\rpythonVersion\x12\x34\n\x06layers\x18\x03 \x03(\x0b\x32\x1c.cloudidl.imagebuilder.LayerR\x06layers\x12\x1a\n\x08platform\x18\x04 \x03(\tR\x08platformB\xd4\x01\n\x19\x63om.cloudidl.imagebuilderB\x0f\x44\x65\x66initionProtoH\x02P\x01Z/github.com/unionai/cloud/gen/pb-go/imagebuilder\xa2\x02\x03\x43IX\xaa\x02\x15\x43loudidl.Imagebuilder\xca\x02\x15\x43loudidl\\Imagebuilder\xe2\x02!Cloudidl\\Imagebuilder\\GPBMetadata\xea\x02\x16\x43loudidl::Imagebuilderb\x06proto3')
18
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1dimagebuilder/definition.proto\x12\x15\x63loudidl.imagebuilder\x1a\x1c\x66lyteidl/core/security.proto\x1a\x17validate/validate.proto\".\n\x0fImageIdentifier\x12\x1b\n\x04name\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01R\x04name\"S\n\x05Image\x12\x36\n\x02id\x18\x01 \x01(\x0b\x32&.cloudidl.imagebuilder.ImageIdentifierR\x02id\x12\x12\n\x04\x66qin\x18\x02 \x01(\tR\x04\x66qin\"e\n\x0b\x41ptPackages\x12\x1a\n\x08packages\x18\x01 \x03(\tR\x08packages\x12:\n\rsecret_mounts\x18\x02 \x03(\x0b\x32\x15.flyteidl.core.SecretR\x0csecretMounts\"\x84\x01\n\nPipOptions\x12\x1b\n\tindex_url\x18\x02 \x01(\tR\x08indexUrl\x12(\n\x10\x65xtra_index_urls\x18\x03 \x03(\tR\x0e\x65xtraIndexUrls\x12\x10\n\x03pre\x18\x04 \x01(\x08R\x03pre\x12\x1d\n\nextra_args\x18\x05 \x01(\tR\textraArgs\"\xa2\x01\n\x0bPipPackages\x12\x1a\n\x08packages\x18\x01 \x03(\tR\x08packages\x12;\n\x07options\x18\x02 \x01(\x0b\x32!.cloudidl.imagebuilder.PipOptionsR\x07options\x12:\n\rsecret_mounts\x18\x03 \x03(\x0b\x32\x15.flyteidl.core.SecretR\x0csecretMounts\"\x9b\x01\n\x0cRequirements\x12\x12\n\x04\x66ile\x18\x01 \x01(\tR\x04\x66ile\x12;\n\x07options\x18\x02 \x01(\x0b\x32!.cloudidl.imagebuilder.PipOptionsR\x07options\x12:\n\rsecret_mounts\x18\x03 \x03(\x0b\x32\x15.flyteidl.core.SecretR\x0csecretMounts\"\x99\x01\n\x0cPythonWheels\x12\x10\n\x03\x64ir\x18\x01 \x01(\tR\x03\x64ir\x12;\n\x07options\x18\x02 \x01(\x0b\x32!.cloudidl.imagebuilder.PipOptionsR\x07options\x12:\n\rsecret_mounts\x18\x03 \x03(\x0b\x32\x15.flyteidl.core.SecretR\x0csecretMounts\"\xba\x01\n\tUVProject\x12\x1c\n\tpyproject\x18\x01 \x01(\tR\tpyproject\x12\x16\n\x06uvlock\x18\x02 \x01(\tR\x06uvlock\x12;\n\x07options\x18\x03 \x01(\x0b\x32!.cloudidl.imagebuilder.PipOptionsR\x07options\x12:\n\rsecret_mounts\x18\x04 \x03(\x0b\x32\x15.flyteidl.core.SecretR\x0csecretMounts\"X\n\x08\x43ommands\x12\x10\n\x03\x63md\x18\x02 \x03(\tR\x03\x63md\x12:\n\rsecret_mounts\x18\x03 \x03(\x0b\x32\x15.flyteidl.core.SecretR\x0csecretMounts\"#\n\x07WorkDir\x12\x18\n\x07workdir\x18\x01 \x01(\tR\x07workdir\"0\n\nCopyConfig\x12\x10\n\x03src\x18\x01 \x01(\tR\x03src\x12\x10\n\x03\x64st\x18\x02 \x01(\tR\x03\x64st\"\x99\x01\n\x03\x45nv\x12Q\n\renv_variables\x18\x01 \x03(\x0b\x32,.cloudidl.imagebuilder.Env.EnvVariablesEntryR\x0c\x65nvVariables\x1a?\n\x11\x45nvVariablesEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"\xed\x04\n\x05Layer\x12G\n\x0c\x61pt_packages\x18\x01 \x01(\x0b\x32\".cloudidl.imagebuilder.AptPackagesH\x00R\x0b\x61ptPackages\x12G\n\x0cpip_packages\x18\x02 \x01(\x0b\x32\".cloudidl.imagebuilder.PipPackagesH\x00R\x0bpipPackages\x12=\n\x08\x63ommands\x18\x03 \x01(\x0b\x32\x1f.cloudidl.imagebuilder.CommandsH\x00R\x08\x63ommands\x12I\n\x0crequirements\x18\x04 \x01(\x0b\x32#.cloudidl.imagebuilder.RequirementsH\x00R\x0crequirements\x12J\n\rpython_wheels\x18\x05 \x01(\x0b\x32#.cloudidl.imagebuilder.PythonWheelsH\x00R\x0cpythonWheels\x12:\n\x07workdir\x18\x06 \x01(\x0b\x32\x1e.cloudidl.imagebuilder.WorkDirH\x00R\x07workdir\x12\x44\n\x0b\x63opy_config\x18\x07 \x01(\x0b\x32!.cloudidl.imagebuilder.CopyConfigH\x00R\ncopyConfig\x12\x41\n\nuv_project\x18\x08 \x01(\x0b\x32 .cloudidl.imagebuilder.UVProjectH\x00R\tuvProject\x12.\n\x03\x65nv\x18\t \x01(\x0b\x32\x1a.cloudidl.imagebuilder.EnvH\x00R\x03\x65nvB\x07\n\x05layer\"\xa3\x01\n\tImageSpec\x12\x1d\n\nbase_image\x18\x01 \x01(\tR\tbaseImage\x12%\n\x0epython_version\x18\x02 \x01(\tR\rpythonVersion\x12\x34\n\x06layers\x18\x03 \x03(\x0b\x32\x1c.cloudidl.imagebuilder.LayerR\x06layers\x12\x1a\n\x08platform\x18\x04 \x03(\tR\x08platformB\xd4\x01\n\x19\x63om.cloudidl.imagebuilderB\x0f\x44\x65\x66initionProtoH\x02P\x01Z/github.com/unionai/cloud/gen/pb-go/imagebuilder\xa2\x02\x03\x43IX\xaa\x02\x15\x43loudidl.Imagebuilder\xca\x02\x15\x43loudidl\\Imagebuilder\xe2\x02!Cloudidl\\Imagebuilder\\GPBMetadata\xea\x02\x16\x43loudidl::Imagebuilderb\x06proto3')
18
19
 
19
20
  _globals = globals()
20
21
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -26,34 +27,34 @@ if _descriptor._USE_C_DESCRIPTORS == False:
26
27
  _IMAGEIDENTIFIER.fields_by_name['name']._serialized_options = b'\372B\004r\002\020\001'
27
28
  _ENV_ENVVARIABLESENTRY._options = None
28
29
  _ENV_ENVVARIABLESENTRY._serialized_options = b'8\001'
29
- _globals['_IMAGEIDENTIFIER']._serialized_start=81
30
- _globals['_IMAGEIDENTIFIER']._serialized_end=127
31
- _globals['_IMAGE']._serialized_start=129
32
- _globals['_IMAGE']._serialized_end=212
33
- _globals['_APTPACKAGES']._serialized_start=214
34
- _globals['_APTPACKAGES']._serialized_end=255
35
- _globals['_PIPOPTIONS']._serialized_start=258
36
- _globals['_PIPOPTIONS']._serialized_end=390
37
- _globals['_PIPPACKAGES']._serialized_start=392
38
- _globals['_PIPPACKAGES']._serialized_end=494
39
- _globals['_REQUIREMENTS']._serialized_start=496
40
- _globals['_REQUIREMENTS']._serialized_end=591
41
- _globals['_PYTHONWHEELS']._serialized_start=593
42
- _globals['_PYTHONWHEELS']._serialized_end=686
43
- _globals['_UVPROJECT']._serialized_start=688
44
- _globals['_UVPROJECT']._serialized_end=814
45
- _globals['_COMMANDS']._serialized_start=816
46
- _globals['_COMMANDS']._serialized_end=844
47
- _globals['_WORKDIR']._serialized_start=846
48
- _globals['_WORKDIR']._serialized_end=881
49
- _globals['_COPYCONFIG']._serialized_start=883
50
- _globals['_COPYCONFIG']._serialized_end=931
51
- _globals['_ENV']._serialized_start=934
52
- _globals['_ENV']._serialized_end=1087
53
- _globals['_ENV_ENVVARIABLESENTRY']._serialized_start=1024
54
- _globals['_ENV_ENVVARIABLESENTRY']._serialized_end=1087
55
- _globals['_LAYER']._serialized_start=1090
56
- _globals['_LAYER']._serialized_end=1711
57
- _globals['_IMAGESPEC']._serialized_start=1714
58
- _globals['_IMAGESPEC']._serialized_end=1877
30
+ _globals['_IMAGEIDENTIFIER']._serialized_start=111
31
+ _globals['_IMAGEIDENTIFIER']._serialized_end=157
32
+ _globals['_IMAGE']._serialized_start=159
33
+ _globals['_IMAGE']._serialized_end=242
34
+ _globals['_APTPACKAGES']._serialized_start=244
35
+ _globals['_APTPACKAGES']._serialized_end=345
36
+ _globals['_PIPOPTIONS']._serialized_start=348
37
+ _globals['_PIPOPTIONS']._serialized_end=480
38
+ _globals['_PIPPACKAGES']._serialized_start=483
39
+ _globals['_PIPPACKAGES']._serialized_end=645
40
+ _globals['_REQUIREMENTS']._serialized_start=648
41
+ _globals['_REQUIREMENTS']._serialized_end=803
42
+ _globals['_PYTHONWHEELS']._serialized_start=806
43
+ _globals['_PYTHONWHEELS']._serialized_end=959
44
+ _globals['_UVPROJECT']._serialized_start=962
45
+ _globals['_UVPROJECT']._serialized_end=1148
46
+ _globals['_COMMANDS']._serialized_start=1150
47
+ _globals['_COMMANDS']._serialized_end=1238
48
+ _globals['_WORKDIR']._serialized_start=1240
49
+ _globals['_WORKDIR']._serialized_end=1275
50
+ _globals['_COPYCONFIG']._serialized_start=1277
51
+ _globals['_COPYCONFIG']._serialized_end=1325
52
+ _globals['_ENV']._serialized_start=1328
53
+ _globals['_ENV']._serialized_end=1481
54
+ _globals['_ENV_ENVVARIABLESENTRY']._serialized_start=1418
55
+ _globals['_ENV_ENVVARIABLESENTRY']._serialized_end=1481
56
+ _globals['_LAYER']._serialized_start=1484
57
+ _globals['_LAYER']._serialized_end=2105
58
+ _globals['_IMAGESPEC']._serialized_start=2108
59
+ _globals['_IMAGESPEC']._serialized_end=2271
59
60
  # @@protoc_insertion_point(module_scope)