nextmv 1.0.0__py3-none-any.whl → 1.0.0.dev0__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.
Files changed (140) hide show
  1. nextmv/__about__.py +1 -1
  2. nextmv/__entrypoint__.py +2 -1
  3. nextmv/__init__.py +4 -0
  4. nextmv/cli/CONTRIBUTING.md +40 -112
  5. nextmv/cli/cloud/__init__.py +0 -4
  6. nextmv/cli/cloud/acceptance/create.py +22 -20
  7. nextmv/cli/cloud/acceptance/delete.py +12 -8
  8. nextmv/cli/cloud/acceptance/get.py +10 -9
  9. nextmv/cli/cloud/acceptance/list.py +3 -3
  10. nextmv/cli/cloud/acceptance/update.py +6 -6
  11. nextmv/cli/cloud/account/__init__.py +3 -3
  12. nextmv/cli/cloud/account/create.py +11 -11
  13. nextmv/cli/cloud/account/delete.py +8 -7
  14. nextmv/cli/cloud/account/get.py +3 -3
  15. nextmv/cli/cloud/account/update.py +5 -5
  16. nextmv/cli/cloud/app/create.py +26 -25
  17. nextmv/cli/cloud/app/delete.py +7 -6
  18. nextmv/cli/cloud/app/exists.py +2 -2
  19. nextmv/cli/cloud/app/get.py +2 -2
  20. nextmv/cli/cloud/app/list.py +3 -3
  21. nextmv/cli/cloud/app/push.py +54 -349
  22. nextmv/cli/cloud/app/update.py +12 -12
  23. nextmv/cli/cloud/batch/create.py +28 -26
  24. nextmv/cli/cloud/batch/delete.py +10 -6
  25. nextmv/cli/cloud/batch/get.py +9 -9
  26. nextmv/cli/cloud/batch/list.py +3 -3
  27. nextmv/cli/cloud/batch/metadata.py +4 -4
  28. nextmv/cli/cloud/batch/update.py +6 -6
  29. nextmv/cli/cloud/data/__init__.py +1 -1
  30. nextmv/cli/cloud/data/upload.py +15 -15
  31. nextmv/cli/cloud/ensemble/__init__.py +0 -2
  32. nextmv/cli/cloud/ensemble/create.py +22 -21
  33. nextmv/cli/cloud/ensemble/delete.py +10 -6
  34. nextmv/cli/cloud/ensemble/get.py +4 -4
  35. nextmv/cli/cloud/ensemble/update.py +9 -9
  36. nextmv/cli/cloud/input_set/__init__.py +0 -2
  37. nextmv/cli/cloud/input_set/create.py +22 -22
  38. nextmv/cli/cloud/input_set/get.py +3 -3
  39. nextmv/cli/cloud/input_set/list.py +3 -3
  40. nextmv/cli/cloud/input_set/update.py +24 -24
  41. nextmv/cli/cloud/instance/create.py +15 -14
  42. nextmv/cli/cloud/instance/delete.py +7 -6
  43. nextmv/cli/cloud/instance/exists.py +2 -2
  44. nextmv/cli/cloud/instance/get.py +2 -2
  45. nextmv/cli/cloud/instance/list.py +3 -3
  46. nextmv/cli/cloud/instance/update.py +14 -14
  47. nextmv/cli/cloud/managed_input/create.py +16 -14
  48. nextmv/cli/cloud/managed_input/delete.py +8 -7
  49. nextmv/cli/cloud/managed_input/get.py +3 -3
  50. nextmv/cli/cloud/managed_input/list.py +3 -3
  51. nextmv/cli/cloud/managed_input/update.py +9 -9
  52. nextmv/cli/cloud/run/cancel.py +2 -2
  53. nextmv/cli/cloud/run/create.py +40 -34
  54. nextmv/cli/cloud/run/get.py +8 -8
  55. nextmv/cli/cloud/run/input.py +4 -4
  56. nextmv/cli/cloud/run/list.py +6 -6
  57. nextmv/cli/cloud/run/logs.py +10 -9
  58. nextmv/cli/cloud/run/metadata.py +4 -4
  59. nextmv/cli/cloud/run/track.py +33 -32
  60. nextmv/cli/cloud/scenario/create.py +21 -21
  61. nextmv/cli/cloud/scenario/delete.py +10 -6
  62. nextmv/cli/cloud/scenario/get.py +9 -9
  63. nextmv/cli/cloud/scenario/list.py +3 -3
  64. nextmv/cli/cloud/scenario/metadata.py +4 -4
  65. nextmv/cli/cloud/scenario/update.py +6 -6
  66. nextmv/cli/cloud/secrets/create.py +17 -17
  67. nextmv/cli/cloud/secrets/delete.py +10 -6
  68. nextmv/cli/cloud/secrets/get.py +4 -4
  69. nextmv/cli/cloud/secrets/list.py +3 -3
  70. nextmv/cli/cloud/secrets/update.py +20 -17
  71. nextmv/cli/cloud/upload/create.py +2 -2
  72. nextmv/cli/cloud/version/create.py +10 -9
  73. nextmv/cli/cloud/version/delete.py +7 -6
  74. nextmv/cli/cloud/version/exists.py +2 -2
  75. nextmv/cli/cloud/version/get.py +2 -2
  76. nextmv/cli/cloud/version/list.py +3 -3
  77. nextmv/cli/cloud/version/update.py +8 -8
  78. nextmv/cli/community/__init__.py +1 -1
  79. nextmv/cli/community/clone.py +204 -20
  80. nextmv/cli/community/list.py +125 -60
  81. nextmv/cli/configuration/config.py +10 -43
  82. nextmv/cli/configuration/create.py +7 -7
  83. nextmv/cli/configuration/delete.py +8 -8
  84. nextmv/cli/configuration/list.py +3 -3
  85. nextmv/cli/main.py +36 -26
  86. nextmv/cli/message.py +54 -71
  87. nextmv/cli/options.py +0 -28
  88. nextmv/cli/version.py +1 -1
  89. nextmv/cloud/__init__.py +38 -14
  90. nextmv/cloud/acceptance_test.py +65 -1
  91. nextmv/cloud/account.py +6 -1
  92. nextmv/cloud/application/__init__.py +75 -18
  93. nextmv/cloud/application/_acceptance.py +8 -13
  94. nextmv/cloud/application/_batch_scenario.py +19 -4
  95. nextmv/cloud/application/_input_set.py +6 -42
  96. nextmv/cloud/application/_instance.py +3 -3
  97. nextmv/cloud/application/_managed_input.py +2 -2
  98. nextmv/cloud/application/_version.py +3 -4
  99. nextmv/cloud/batch_experiment.py +1 -3
  100. nextmv/cloud/integration.py +4 -7
  101. nextmv/deprecated.py +3 -5
  102. nextmv/input.py +52 -0
  103. nextmv/local/runner.py +1 -1
  104. nextmv/model.py +11 -50
  105. nextmv/options.py +256 -11
  106. nextmv/output.py +62 -0
  107. nextmv/run.py +10 -1
  108. nextmv/status.py +51 -1
  109. {nextmv-1.0.0.dist-info → nextmv-1.0.0.dev0.dist-info}/METADATA +4 -5
  110. nextmv-1.0.0.dev0.dist-info/RECORD +158 -0
  111. nextmv/cli/cloud/ensemble/list.py +0 -63
  112. nextmv/cli/cloud/input_set/delete.py +0 -64
  113. nextmv/cli/cloud/shadow/__init__.py +0 -33
  114. nextmv/cli/cloud/shadow/create.py +0 -184
  115. nextmv/cli/cloud/shadow/delete.py +0 -64
  116. nextmv/cli/cloud/shadow/get.py +0 -61
  117. nextmv/cli/cloud/shadow/list.py +0 -63
  118. nextmv/cli/cloud/shadow/metadata.py +0 -66
  119. nextmv/cli/cloud/shadow/start.py +0 -43
  120. nextmv/cli/cloud/shadow/stop.py +0 -53
  121. nextmv/cli/cloud/shadow/update.py +0 -96
  122. nextmv/cli/cloud/switchback/__init__.py +0 -33
  123. nextmv/cli/cloud/switchback/create.py +0 -151
  124. nextmv/cli/cloud/switchback/delete.py +0 -64
  125. nextmv/cli/cloud/switchback/get.py +0 -62
  126. nextmv/cli/cloud/switchback/list.py +0 -63
  127. nextmv/cli/cloud/switchback/metadata.py +0 -68
  128. nextmv/cli/cloud/switchback/start.py +0 -43
  129. nextmv/cli/cloud/switchback/stop.py +0 -53
  130. nextmv/cli/cloud/switchback/update.py +0 -96
  131. nextmv/cli/confirm.py +0 -34
  132. nextmv/cloud/application/_shadow.py +0 -320
  133. nextmv/cloud/application/_switchback.py +0 -332
  134. nextmv/cloud/community.py +0 -446
  135. nextmv/cloud/shadow.py +0 -254
  136. nextmv/cloud/switchback.py +0 -228
  137. nextmv-1.0.0.dist-info/RECORD +0 -185
  138. nextmv-1.0.0.dist-info/entry_points.txt +0 -2
  139. {nextmv-1.0.0.dist-info → nextmv-1.0.0.dev0.dist-info}/WHEEL +0 -0
  140. {nextmv-1.0.0.dist-info → nextmv-1.0.0.dev0.dist-info}/licenses/LICENSE +0 -0
@@ -68,7 +68,7 @@ def create(
68
68
  "--tail",
69
69
  "-t",
70
70
  help="Tail the logs until the run completes. Logs are streamed to [magenta]stderr[/magenta]. "
71
- "Specify log output location with --logs.",
71
+ "Specify log output location with [code]--logs[/code].",
72
72
  rich_help_panel="Output control",
73
73
  ),
74
74
  ] = False,
@@ -79,7 +79,7 @@ def create(
79
79
  "-w",
80
80
  help="Wait for the run to complete. Run result is printed to [magenta]stdout[/magenta] for "
81
81
  "[magenta]json[/magenta], to a dir for [magenta]multi-file[/magenta]. "
82
- "Specify output location with --output.",
82
+ "Specify output location with [code]--output[/code].",
83
83
  rich_help_panel="Output control",
84
84
  ),
85
85
  ] = False,
@@ -129,7 +129,7 @@ def create(
129
129
  metavar="INSTANCE_ID",
130
130
  rich_help_panel="Run configuration",
131
131
  ),
132
- ] = None,
132
+ ] = "latest",
133
133
  integration_id: Annotated[
134
134
  str | None,
135
135
  typer.Option(
@@ -210,99 +210,101 @@ def create(
210
210
  Create a new Nextmv Cloud application run.
211
211
 
212
212
  Input for the run should be given through [magenta]stdin[/magenta] or the
213
- --input flag. When using the --input flag, the value can be one of the
214
- following:
213
+ [code]--input[/code] flag. When using the [code]--input[/code] flag, the
214
+ value can be one of the following:
215
215
 
216
- - [yellow]<FILE_PATH>[/yellow]: path to a [magenta]file[/magenta] containing
216
+ - [green]<FILE_PATH>[/green]: path to a [magenta]file[/magenta] containing
217
217
  the input data. Use with the [magenta]json[/magenta], and
218
218
  [magenta]text[/magenta] content formats.
219
- - [yellow]<DIR_PATH>[/yellow]: path to a [magenta]directory[/magenta]
219
+ - [green]<DIR_PATH>[/green]: path to a [magenta]directory[/magenta]
220
220
  containing the input data files. Use with the
221
221
  [magenta]multi-file[/magenta] content format.
222
- - [yellow]<.tar.gz PATH>[/yellow]: path to a [magenta].tar.gz[/magenta] file
222
+ - [green]<.tar.gz_PATH>[/green]: path to a [magenta].tar.gz[/magenta] file
223
223
  containing tarred input data files. Use with the
224
224
  [magenta]multi-file[/magenta] content format.
225
225
 
226
226
  The CLI determines how to send the input to the application based on the
227
227
  value.
228
228
 
229
- Use the --wait flag to wait for the run to complete, polling for results.
230
- Using the --output flag will also activate waiting, and allows you to
231
- specify a destination (file or dir) for the output, depending on the
232
- content type.
229
+ Use the [code]--wait[/code] flag to wait for the run to complete, polling
230
+ for results. Using the [code]--output[/code] flag will also activate
231
+ waiting, and allows you to specify a destination (file or dir) for the
232
+ output, depending on the content type.
233
233
 
234
- Use the --tail flag to stream logs to [magenta]stderr[/magenta] until the
235
- run completes. Using the --logs flag will also activate waiting, and allows
236
- you to specify a file to write the logs to.
234
+ Use the [code]--tail[/code] flag to stream logs to
235
+ [magenta]stderr[/magenta] until the run completes. Using the
236
+ [code]--logs[/code] flag will also activate waiting, and allows you to
237
+ specify a file to write the logs to.
237
238
 
238
239
  An application run executes against a specific instance. An instance
239
240
  represents the combination of executable code and configuration. You can
240
- specify the instance with the --instance-id flag. These are the possible
241
- values for this flag:
241
+ specify the instance with the [code]--instance-id[/code] flag. These are
242
+ the possible values for this flag:
242
243
 
243
- - [yellow]unspecified[/yellow]: Run against the default instance of the
244
- application. When an application is created, the default instance is [magenta]latest[/magenta].
245
- - [yellow]latest[/yellow]: uses the special [magenta]latest[/magenta]
244
+ - [green]latest[/green]: uses the special [magenta]latest[/magenta]
246
245
  instance of the application. This corresponds to the latest pushed
247
- executable.
248
- - [yellow]<INSTANCE_ID>[/yellow]: uses the instance with the given ID.
246
+ executable. This is the default behavior.
247
+ - [green]default[/green]: if the application has a [italic]default[/italic]
248
+ instance configured, then it uses that instance. Setting the flag's value
249
+ to [code]''[/code] (empty string) has the same effect.
250
+ - [green]<INSTANCE_ID>[/green]: uses the instance with the given ID.
249
251
 
250
252
  [bold][underline]Examples[/underline][/bold]
251
253
 
252
254
  - Read a [magenta]json[/magenta] input via [magenta]stdin[/magenta], from an [magenta]input.json[/magenta] file,
253
255
  and submit a run to an app with ID [magenta]hare-app[/magenta], using the [magenta]latest[/magenta] instance.
254
- $ [dim]cat input.json | nextmv cloud run create --app-id hare-app[/dim]
256
+ $ [green]cat input.json | nextmv cloud run create --app-id hare-app[/green]
255
257
 
256
258
  - Read a [magenta]json[/magenta] input from an [magenta]input.json[/magenta] file, and
257
259
  submit a run to an app with ID [magenta]hare-app[/magenta], using the [magenta]latest[/magenta] instance.
258
- $ [dim]nextmv cloud run create --app-id hare-app --input input.json[/dim]
260
+ $ [green]nextmv cloud run create --app-id hare-app --input input.json[/green]
259
261
 
260
262
  - Read a [magenta]json[/magenta] input from an [magenta]input.json[/magenta] file, and
261
263
  submit a run to an app with ID [magenta]hare-app[/magenta], using the [magenta]latest[/magenta] instance.
262
264
  Wait for the run to complete and print the result to [magenta]stdout[/magenta].
263
- $ [dim]nextmv cloud run create --app-id hare-app --input input.json --wait[/dim]
265
+ $ [green]nextmv cloud run create --app-id hare-app --input input.json --wait[/green]
264
266
 
265
267
  - Read a [magenta]json[/magenta] input from an [magenta]input.json[/magenta] file, and
266
268
  submit a run to an app with ID [magenta]hare-app[/magenta], using the [magenta]latest[/magenta] instance.
267
269
  Tail the run's logs, streaming to [magenta]stderr[/magenta].
268
- $ [dim]nextmv cloud run create --app-id hare-app --input input.json --tail[/dim]
270
+ $ [green]nextmv cloud run create --app-id hare-app --input input.json --tail[/green]
269
271
 
270
272
  - Read a [magenta]json[/magenta] input from an [magenta]input.json[/magenta] file, and
271
273
  submit a run to an app with ID [magenta]hare-app[/magenta], using the [magenta]latest[/magenta] instance.
272
274
  Wait for the run to complete and write the result to an [magenta]output.json[/magenta] file.
273
- $ [dim]nextmv cloud run create --app-id hare-app --input input.json --output output.json[/dim]
275
+ $ [green]nextmv cloud run create --app-id hare-app --input input.json --output output.json[/green]
274
276
 
275
277
  - Read a [magenta]json[/magenta] input from an [magenta]input.json[/magenta] file, and
276
278
  submit a run to an app with ID [magenta]hare-app[/magenta], using the [magenta]latest[/magenta] instance.
277
279
  Wait for the run to complete, and write the logs to a [magenta]logs.log[/magenta] file.
278
- $ [dim]nextmv cloud run create --app-id hare-app --input input.json --logs logs.log[/dim]
280
+ $ [green]nextmv cloud run create --app-id hare-app --input input.json --logs logs.log[/green]
279
281
 
280
282
  - Read a [magenta]json[/magenta] input from an [magenta]input.json[/magenta] file, and submit a run to an app with
281
283
  ID [magenta]hare-app[/magenta], using the [magenta]latest[/magenta] instance. Wait for the run to complete. Tail
282
284
  the run's logs, streaming to [magenta]stderr[/magenta]. Write the logs to a [magenta]logs.log[/magenta] file.
283
285
  Write the result to an [magenta]output.json[/magenta] file.
284
- $ [dim]nextmv cloud run create --app-id hare-app --input input.json --tail --logs logs.log \\
285
- --output output.json [/dim]
286
+ $ [green]nextmv cloud run create --app-id hare-app --input input.json --tail --logs logs.log \\
287
+ --output output.json [/green]
286
288
 
287
289
  - Read a [magenta]multi-file[/magenta] input from an [magenta]inputs[/magenta] directory, and
288
290
  submit a run to an app with ID [magenta]hare-app[/magenta], using the [magenta]default[/magenta] instance.
289
- $ [dim]nextmv cloud run create --app-id hare-app --input inputs --instance-id default[/dim]
291
+ $ [green]nextmv cloud run create --app-id hare-app --input inputs --instance-id default[/green]
290
292
 
291
293
  - Read a [magenta]multi-file[/magenta] input from an [magenta]inputs[/magenta] directory, and
292
294
  submit a run to an app with ID [magenta]hare-app[/magenta], using the [magenta]default[/magenta] instance.
293
295
  Wait for the run to complete, and save the results to the default location (a directory named after the run ID).
294
- $ [dim]nextmv cloud run create --app-id hare-app --input inputs --instance-id default --wait[/dim]
296
+ $ [green]nextmv cloud run create --app-id hare-app --input inputs --instance-id default --wait[/green]
295
297
 
296
298
  - Read a [magenta]multi-file[/magenta] input from an [magenta]inputs[/magenta] directory, and
297
299
  submit a run to an app with ID [magenta]hare-app[/magenta], using the [magenta]burrow[/magenta] instance.
298
300
  Wait for the run to complete and download the result files to an [magenta]outputs[/magenta] directory.
299
- $ [dim]nextmv cloud run create --app-id hare-app --input inputs --instance-id burrow --output outputs[/dim]
301
+ $ [green]nextmv cloud run create --app-id hare-app --input inputs --instance-id burrow --output outputs[/green]
300
302
  """
301
303
 
302
304
  # Validate that input is provided.
303
305
  stdin = sys.stdin.read().strip() if sys.stdin.isatty() is False else None
304
306
  if stdin is None and (input is None or input == ""):
305
- error("Input data must be provided via the --input flag or [magenta]stdin[/magenta].")
307
+ error("Input data must be provided via the [code]--input[/code] flag or [magenta]stdin[/magenta].")
306
308
 
307
309
  # Instantiate the basic requirements to start a new run.
308
310
  cloud_app = build_app(app_id=app_id, profile=profile)
@@ -318,6 +320,10 @@ def create(
318
320
  )
319
321
  run_options = build_run_options(options)
320
322
 
323
+ # Handles the default instance.
324
+ if instance_id == "default":
325
+ instance_id = ""
326
+
321
327
  # Start the run before deciding if we should poll or not.
322
328
  input_kwarg = resolve_input_kwarg(
323
329
  stdin=stdin,
@@ -46,7 +46,7 @@ def get(
46
46
  "-w",
47
47
  help="Wait for the run to complete. Run result is printed to [magenta]stdout[/magenta] for "
48
48
  "[magenta]json[/magenta], to a dir for [magenta]multi-file[/magenta]. "
49
- "Specify output location with --output.",
49
+ "Specify output location with [code]--output[/code].",
50
50
  ),
51
51
  ] = False,
52
52
  profile: ProfileOption = None,
@@ -54,8 +54,8 @@ def get(
54
54
  """
55
55
  Get the result (output) of a Nextmv Cloud application run.
56
56
 
57
- Use the --wait flag to wait for the run to complete, polling
58
- for results. Using the --output flag will also activate
57
+ Use the [code]--wait[/code] flag to wait for the run to complete, polling
58
+ for results. Using the [code]--output[/code] flag will also activate
59
59
  waiting, and allows you to specify a destination (file or dir) for the
60
60
  output, depending on the content type.
61
61
 
@@ -63,25 +63,25 @@ def get(
63
63
 
64
64
  - Get the results of a run with ID [magenta]burrow-123[/magenta], belonging to an app with ID
65
65
  [magenta]hare-app[/magenta].
66
- $ [dim]nextmv cloud run get --app-id hare-app --run-id burrow-123[/dim]
66
+ $ [green]nextmv cloud run get --app-id hare-app --run-id burrow-123[/green]
67
67
 
68
68
  - Get the results of a run with ID [magenta]burrow-123[/magenta], belonging to an app with ID
69
69
  [magenta]hare-app[/magenta]. Wait for the run to complete if necessary.
70
- $ [dim]nextmv cloud run get --app-id hare-app --run-id burrow-123 --wait[/dim]
70
+ $ [green]nextmv cloud run get --app-id hare-app --run-id burrow-123 --wait[/green]
71
71
 
72
72
  - Get the results of a run with ID [magenta]burrow-123[/magenta], belonging to an app with ID
73
73
  [magenta]hare-app[/magenta]. The app is a [magenta]json[/magenta] app.
74
74
  Save the results to a [magenta]results.json[/magenta] file.
75
- $ [dim]nextmv cloud run get --app-id hare-app --run-id burrow-123 --output results.json[/dim]
75
+ $ [green]nextmv cloud run get --app-id hare-app --run-id burrow-123 --output results.json[/green]
76
76
 
77
77
  - Get the results of a run with ID [magenta]burrow-123[/magenta], belonging to an app with ID
78
78
  [magenta]hare-app[/magenta]. The app is a [magenta]multi-file[/magenta] app.
79
79
  Save the results to the [magenta]results[/magenta] dir.
80
- $ [dim]nextmv cloud run get --app-id hare-app --run-id burrow-123 --output results[/dim]
80
+ $ [green]nextmv cloud run get --app-id hare-app --run-id burrow-123 --output results[/green]
81
81
 
82
82
  - Get the results of a run with ID [magenta]burrow-123[/magenta], belonging to an app with ID
83
83
  [magenta]hare-app[/magenta]. Use the profile named [magenta]hare[/magenta].
84
- $ [dim]nextmv cloud run get --app-id hare-app --run-id burrow-123 --profile hare[/dim]
84
+ $ [green]nextmv cloud run get --app-id hare-app --run-id burrow-123 --profile hare[/green]
85
85
  """
86
86
 
87
87
  cloud_app = build_app(app_id=app_id, profile=profile)
@@ -35,21 +35,21 @@ def input(
35
35
  Get the input of a Nextmv Cloud application run.
36
36
 
37
37
  By default, the input is fetched and printed to [magenta]stdout[/magenta].
38
- Use the --output flag to save the input to a file.
38
+ Use the [code]--output[/code] flag to save the input to a file.
39
39
 
40
40
  [bold][underline]Examples[/underline][/bold]
41
41
 
42
42
  - Get the input of a run with ID [magenta]burrow-123[/magenta], belonging to an app with ID
43
43
  [magenta]hare-app[/magenta]. Input is printed to [magenta]stdout[/magenta].
44
- $ [dim]nextmv cloud run input --app-id hare-app --run-id burrow-123[/dim]
44
+ $ [green]nextmv cloud run input --app-id hare-app --run-id burrow-123[/green]
45
45
 
46
46
  - Get the input of a run with ID [magenta]burrow-123[/magenta], belonging to an app with ID
47
47
  [magenta]hare-app[/magenta]. Save the input to a [magenta]input.json[/magenta] file.
48
- $ [dim]nextmv cloud run input --app-id hare-app --run-id burrow-123 --output input.json[/dim]
48
+ $ [green]nextmv cloud run input --app-id hare-app --run-id burrow-123 --output input.json[/green]
49
49
 
50
50
  - Get the input of a run with ID [magenta]burrow-123[/magenta], belonging to an app with ID
51
51
  [magenta]hare-app[/magenta]. Use the profile named [magenta]hare[/magenta].
52
- $ [dim]nextmv cloud run input --app-id hare-app --run-id burrow-123 --profile hare[/dim]
52
+ $ [green]nextmv cloud run input --app-id hare-app --run-id burrow-123 --profile hare[/green]
53
53
  """
54
54
 
55
55
  cloud_app = build_app(app_id=app_id, profile=profile)
@@ -43,25 +43,25 @@ def list(
43
43
  Get the list of runs for a Nextmv Cloud application.
44
44
 
45
45
  By default, the list of runs is fetched and printed to [magenta]stdout[/magenta].
46
- Use the --output flag to save the list to a file.
46
+ Use the [code]--output[/code] flag to save the list to a file.
47
47
 
48
- You can use the optional --status flag to filter runs by their status.
48
+ You can use the optional [code]--status[/code] flag to filter runs by their status.
49
49
 
50
50
  [bold][underline]Examples[/underline][/bold]
51
51
 
52
52
  - Get the list of runs for an app with ID [magenta]hare-app[/magenta]. List is printed to [magenta]stdout[/magenta].
53
- $ [dim]nextmv cloud run list --app-id hare-app[/dim]
53
+ $ [green]nextmv cloud run list --app-id hare-app[/green]
54
54
 
55
55
  - Get the list of runs for an app with ID [magenta]hare-app[/magenta]. Save the list to a
56
56
  [magenta]runs.json[/magenta] file.
57
- $ [dim]nextmv cloud run list --app-id hare-app --output runs.json[/dim]
57
+ $ [green]nextmv cloud run list --app-id hare-app --output runs.json[/green]
58
58
 
59
59
  - Get the list of runs for an app with ID [magenta]hare-app[/magenta].
60
60
  Use the profile named [magenta]hare[/magenta].
61
- $ [dim]nextmv cloud run list --app-id hare-app --profile hare[/dim]
61
+ $ [green]nextmv cloud run list --app-id hare-app --profile hare[/green]
62
62
 
63
63
  - Get the list of [magenta]queued[/magenta] runs for an app with ID [magenta]hare-app[/magenta].
64
- $ [dim]nextmv cloud run list --app-id hare-app --status queued[/dim]
64
+ $ [green]nextmv cloud run list --app-id hare-app --status queued[/green]
65
65
  """
66
66
 
67
67
  cloud_app = build_app(app_id=app_id, profile=profile)
@@ -38,7 +38,7 @@ def logs(
38
38
  "--tail",
39
39
  "-t",
40
40
  help="Tail the logs until the run completes. Logs are streamed to [magenta]stderr[/magenta]. "
41
- "Specify log output location with --output.",
41
+ "Specify log output location with [code]--output[/code].",
42
42
  ),
43
43
  ] = False,
44
44
  timeout: Annotated[
@@ -54,31 +54,32 @@ def logs(
54
54
  Get the logs of a Nextmv Cloud application run.
55
55
 
56
56
  By default, the logs are fetched and printed to [magenta]stderr[/magenta].
57
- Use the --tail flag to stream logs to [magenta]stderr[/magenta] until the
58
- run completes. Using the --output flag will also activate waiting, and
59
- allows you to specify a file to write the logs to.
57
+ Use the [code]--tail[/code] flag to stream logs to
58
+ [magenta]stderr[/magenta] until the run completes. Using the
59
+ [code]--output[/code] flag will also activate waiting, and allows you to
60
+ specify a file to write the logs to.
60
61
 
61
62
  [bold][underline]Examples[/underline][/bold]
62
63
 
63
64
  - Get the logs of a run with ID [magenta]burrow-123[/magenta], belonging to an app with ID
64
65
  [magenta]hare-app[/magenta]. Logs are printed to [magenta]stderr[/magenta].
65
- $ [dim]nextmv cloud run logs --app-id hare-app --run-id burrow-123[/dim]
66
+ $ [green]nextmv cloud run logs --app-id hare-app --run-id burrow-123[/green]
66
67
 
67
68
  - Get the logs of a run with ID [magenta]burrow-123[/magenta], belonging to an app with ID
68
69
  [magenta]hare-app[/magenta]. Tail the logs until the run completes.
69
- $ [dim]nextmv cloud run logs --app-id hare-app --run-id burrow-123 --tail[/dim]
70
+ $ [green]nextmv cloud run logs --app-id hare-app --run-id burrow-123 --tail[/green]
70
71
 
71
72
  - Get the logs of a run with ID [magenta]burrow-123[/magenta], belonging to an app with ID
72
73
  [magenta]hare-app[/magenta]. Save the logs to a [magenta]logs.log[/magenta] file.
73
- $ [dim]nextmv cloud run logs --app-id hare-app --run-id burrow-123 --output logs.log[/dim]
74
+ $ [green]nextmv cloud run logs --app-id hare-app --run-id burrow-123 --output logs.log[/green]
74
75
 
75
76
  - Get the logs of a run with ID [magenta]burrow-123[/magenta], belonging to an app with ID
76
77
  [magenta]hare-app[/magenta]. Tail the logs and save them to a [magenta]logs.log[/magenta] file.
77
- $ [dim]nextmv cloud run logs --app-id hare-app --run-id burrow-123 --tail --output logs.log[/dim]
78
+ $ [green]nextmv cloud run logs --app-id hare-app --run-id burrow-123 --tail --output logs.log[/green]
78
79
 
79
80
  - Get the logs of a run with ID [magenta]burrow-123[/magenta], belonging to an app with ID
80
81
  [magenta]hare-app[/magenta]. Use the profile named [magenta]hare[/magenta].
81
- $ [dim]nextmv cloud run logs --app-id hare-app --run-id burrow-123 --profile hare[/dim]
82
+ $ [green]nextmv cloud run logs --app-id hare-app --run-id burrow-123 --profile hare[/green]
82
83
  """
83
84
 
84
85
  cloud_app = build_app(app_id=app_id, profile=profile)
@@ -34,21 +34,21 @@ def metadata(
34
34
  Get the metadata of a Nextmv Cloud application run.
35
35
 
36
36
  By default, the metadata is fetched and printed to [magenta]stdout[/magenta].
37
- Use the --output flag to save the metadata to a file.
37
+ Use the [code]--output[/code] flag to save the metadata to a file.
38
38
 
39
39
  [bold][underline]Examples[/underline][/bold]
40
40
 
41
41
  - Get the metadata of a run with ID [magenta]burrow-123[/magenta], belonging to an app with ID
42
42
  [magenta]hare-app[/magenta]. Metadata is printed to [magenta]stdout[/magenta].
43
- $ [dim]nextmv cloud run metadata --app-id hare-app --run-id burrow-123[/dim]
43
+ $ [green]nextmv cloud run metadata --app-id hare-app --run-id burrow-123[/green]
44
44
 
45
45
  - Get the metadata of a run with ID [magenta]burrow-123[/magenta], belonging to an app with ID
46
46
  [magenta]hare-app[/magenta]. Save the metadata to a [magenta]metadata.json[/magenta] file.
47
- $ [dim]nextmv cloud run metadata --app-id hare-app --run-id burrow-123 --output metadata.json[/dim]
47
+ $ [green]nextmv cloud run metadata --app-id hare-app --run-id burrow-123 --output metadata.json[/green]
48
48
 
49
49
  - Get the metadata of a run with ID [magenta]burrow-123[/magenta], belonging to an app with ID
50
50
  [magenta]hare-app[/magenta]. Use the profile named [magenta]hare[/magenta].
51
- $ [dim]nextmv cloud run metadata --app-id hare-app --run-id burrow-123 --profile hare[/dim]
51
+ $ [green]nextmv cloud run metadata --app-id hare-app --run-id burrow-123 --profile hare[/green]
52
52
  """
53
53
 
54
54
  cloud_app = build_app(app_id=app_id, profile=profile)
@@ -143,86 +143,87 @@ def track(
143
143
  """
144
144
  Track an external run as a Nextmv Cloud application run.
145
145
 
146
- Please see the help of the --content-type option for details on valid
147
- content types.
146
+ Please see the help of the [code]--content-type[/code] option for details
147
+ on valid content types.
148
148
 
149
149
  If the content type is [magenta]json[/magenta] or [magenta]text[/magenta],
150
150
  then input for the run can be given through [magenta]stdin[/magenta]. The
151
- --input option allows you to specify a file or directory path for the
152
- input, instead of using [magenta]stdin[/magenta]. In the case of
151
+ [code]--input[/code] option allows you to specify a file or directory path
152
+ for the input, instead of using [magenta]stdin[/magenta]. In the case of
153
153
  [magenta]multi-file[/magenta] content type, the input must be given through
154
- a directory specified via the --input option.
154
+ a directory specified via the [code]--input[/code] option.
155
155
 
156
- The --output option allows you to specify a file or directory path for the
157
- output of the run. The behavior depends on the content type. If the content
158
- type is [magenta]json[/magenta] or [magenta]text[/magenta], then a file
159
- path must be provided. If the content type is
156
+ The [code]--output[/code] option allows you to specify a file or directory
157
+ path for the output of the run. The behavior depends on the content type.
158
+ If the content type is [magenta]json[/magenta] or [magenta]text[/magenta],
159
+ then a file path must be provided. If the content type is
160
160
  [magenta]multi-file[/magenta], then a directory path must be provided.
161
161
 
162
162
  Run logs, assets, and statistics can be provided via files using the
163
- --logs, --assets, and --statistics options, respectively. Assets and
164
- statistics must be provided as [magenta]json[/magenta] files, while logs
165
- must be provided as a utf-8 encoded text file.
163
+ [code]--logs[/code], [code]--assets[/code], and [code]--statistics[/code]
164
+ options, respectively. Assets and statistics must be provided as
165
+ [magenta]json[/magenta] files, while logs must be provided as a utf-8
166
+ encoded text file.
166
167
 
167
168
  [bold][underline]Examples[/underline][/bold]
168
169
 
169
170
  - Track a [magenta]successful[/magenta] [magenta]json[/magenta] run via [magenta]stdin[/magenta]
170
171
  input, for an app with ID [magenta]hare-app[/magenta].
171
- $ [dim]cat input.json | nextmv cloud run track --app-id hare-app --status succeeded[/dim]
172
+ $ [green]cat input.json | nextmv cloud run track --app-id hare-app --status succeeded[/green]
172
173
 
173
174
  - Track a [magenta]successful[/magenta] [magenta]json[/magenta] run with input from an
174
175
  [magenta]input.json[/magenta] file and output from an
175
176
  [magenta]output.json[/magenta] file, for an app with ID
176
177
  [magenta]hare-app[/magenta].
177
- $ [dim]nextmv cloud run track --app-id hare-app --status succeeded --input input.json \\
178
- --output output.json[/dim]
178
+ $ [green]nextmv cloud run track --app-id hare-app --status succeeded --input input.json \\
179
+ --output output.json[/green]
179
180
 
180
181
  - Track a [magenta]successful[/magenta] [magenta]json[/magenta] run including logs from a
181
182
  [magenta]logs.log[/magenta] file, for an app with ID
182
183
  [magenta]hare-app[/magenta].
183
- $ [dim]nextmv cloud run track --app-id hare-app --status succeeded --input input.json \\
184
- --output output.json --logs logs.log[/dim]
184
+ $ [green]nextmv cloud run track --app-id hare-app --status succeeded --input input.json \\
185
+ --output output.json --logs logs.log[/green]
185
186
 
186
187
  - Track a [magenta]successful[/magenta] [magenta]json[/magenta] run with assets and statistics
187
188
  from [magenta]json[/magenta] files, for an app with ID
188
189
  [magenta]hare-app[/magenta].
189
- $ [dim]nextmv cloud run track --app-id hare-app --status succeeded --input input.json \\
190
- --output output.json --assets assets.json --statistics statistics.json[/dim]
190
+ $ [green]nextmv cloud run track --app-id hare-app --status succeeded --input input.json \\
191
+ --output output.json --assets assets.json --statistics statistics.json[/green]
191
192
 
192
193
  - Track a [magenta]failed[/magenta] run with an error message, for an app with ID
193
194
  [magenta]hare-app[/magenta].
194
- $ [dim]nextmv cloud run track --app-id hare-app --status failed --input input.json \\
195
- --error-msg "Solver timed out"[/dim]
195
+ $ [green]nextmv cloud run track --app-id hare-app --status failed --input input.json \\
196
+ --error-msg "Solver timed out"[/green]
196
197
 
197
198
  - Track a [magenta]successful[/magenta] [magenta]text[/magenta] run with text content type,
198
199
  for an app with ID [magenta]hare-app[/magenta].
199
- $ [dim]nextmv cloud run track --app-id hare-app --status succeeded --input input.txt \\
200
- --output output.txt --content-type text[/dim]
200
+ $ [green]nextmv cloud run track --app-id hare-app --status succeeded --input input.txt \\
201
+ --output output.txt --content-type text[/green]
201
202
 
202
203
  - Track a [magenta]successful[/magenta] [magenta]multi-file[/magenta] run from an
203
204
  [magenta]inputs[/magenta] directory with output to an
204
205
  [magenta]outputs[/magenta] directory, for an app with ID
205
206
  [magenta]hare-app[/magenta], using the [magenta]default[/magenta]
206
207
  instance.
207
- $ [dim]nextmv cloud run track --app-id hare-app --status succeeded --input inputs \\
208
- --output outputs --content-type multi-file --instance-id default[/dim]
208
+ $ [green]nextmv cloud run track --app-id hare-app --status succeeded --input inputs \\
209
+ --output outputs --content-type multi-file --instance-id default[/green]
209
210
 
210
211
  - Track a [magenta]successful[/magenta] run with a name, description, and duration, for an app
211
212
  with ID [magenta]hare-app[/magenta].
212
- $ [dim]nextmv cloud run track --app-id hare-app --status succeeded --input input.json \\
213
- --output output.json --name "Production run" --description "Weekly optimization" --duration 5000[/dim]
213
+ $ [green]nextmv cloud run track --app-id hare-app --status succeeded --input input.json \\
214
+ --output output.json --name "Production run" --description "Weekly optimization" --duration 5000[/green]
214
215
 
215
216
  - Track a [magenta]successful[/magenta] [magenta]json[/magenta] run with all available options,
216
217
  for an app with ID [magenta]hare-app[/magenta].
217
- $ [dim]nextmv cloud run track --app-id hare-app --status succeeded --input input.json \\
218
+ $ [green]nextmv cloud run track --app-id hare-app --status succeeded --input input.json \\
218
219
  --output output.json --logs logs.log --assets assets.json --statistics statistics.json \\
219
- --name "Full run" --description "Complete example" --duration 10000 --instance-id burrow[/dim]
220
+ --name "Full run" --description "Complete example" --duration 10000 --instance-id burrow[/green]
220
221
  """
221
222
 
222
223
  # Validate that input is provided.
223
224
  stdin = sys.stdin.read().strip() if sys.stdin.isatty() is False else None
224
225
  if stdin is None and (input is None or input == ""):
225
- error("Input data must be provided via the --input flag or [magenta]stdin[/magenta].")
226
+ error("Input data must be provided via the [code]--input[/code] flag or [magenta]stdin[/magenta].")
226
227
 
227
228
  # Instantiate the basic requirements to start a new run.
228
229
  cloud_app = build_app(app_id=app_id, profile=profile)
@@ -392,7 +393,7 @@ def resolve_input(
392
393
  error(
393
394
  "Input provided via [magenta]stdin[/magenta] is [magenta]json[/magenta], "
394
395
  f"but the specified content format is {content_format.value}. "
395
- "--content-format should be set to [magenta]json[/magenta]."
396
+ "[code]--content-format[/code] should be set to [magenta]json[/magenta]."
396
397
  )
397
398
 
398
399
  except json.JSONDecodeError:
@@ -401,7 +402,7 @@ def resolve_input(
401
402
  error(
402
403
  "Input provided via [magenta]stdin[/magenta] is [magenta]text[/magenta], "
403
404
  f"but the specified content format is {content_format.value}. "
404
- "--content-format should be set to [magenta]text[/magenta]."
405
+ "[code]--content-format[/code] should be set to [magenta]text[/magenta]."
405
406
  )
406
407
 
407
408
  tracked_run.input = input_data
@@ -100,7 +100,7 @@ def create(
100
100
  "--wait",
101
101
  "-w",
102
102
  help="Wait for the scenario test to complete. Results are printed to [magenta]stdout[/magenta]. "
103
- "Specify output location with --output.",
103
+ "Specify output location with [code]--output[/code].",
104
104
  rich_help_panel="Output control",
105
105
  ),
106
106
  ] = False,
@@ -112,21 +112,21 @@ def create(
112
112
  A scenario test allows you to run multiple scenarios with different inputs,
113
113
  instances/versions, and configurations in a single test.
114
114
 
115
- Use the --wait flag to wait for the scenario test to complete,
116
- polling for results. Using the --output flag will also
115
+ Use the [code]--wait[/code] flag to wait for the scenario test to complete,
116
+ polling for results. Using the [code]--output[/code] flag will also
117
117
  activate waiting, and allows you to specify a destination file for the
118
118
  results.
119
119
 
120
120
  [bold][underline]Scenarios[/underline][/bold]
121
121
 
122
122
  Scenarios are provided as [magenta]json[/magenta] objects using the
123
- --scenarios flag. Each scenario defines the configuration for a scenario
124
- test execution.
123
+ [code]--scenarios[/code] flag. Each scenario defines the configuration for
124
+ a scenario test execution.
125
125
 
126
126
  You can provide scenarios in three ways:
127
127
  - A single scenario as a [magenta]json[/magenta] object.
128
- - Multiple scenarios by repeating the --scenarios flag.
129
- - Multiple scenarios as a [magenta]json[/magenta] array in a single --scenarios flag.
128
+ - Multiple scenarios by repeating the [code]--scenarios[/code] flag.
129
+ - Multiple scenarios as a [magenta]json[/magenta] array in a single [code]--scenarios[/code] flag.
130
130
 
131
131
  Each scenario must have the following fields:
132
132
  - [magenta]instance_id[/magenta]: ID of the instance to use for this scenario (required).
@@ -142,7 +142,7 @@ def create(
142
142
  - [magenta]values[/magenta]: List of values for the configuration option.
143
143
 
144
144
  Example object format:
145
- [dim]{
145
+ [green]{
146
146
  "instance_id": "bunny-hopper-v2",
147
147
  "scenario_input": {
148
148
  "scenario_input_type": "input_set",
@@ -157,12 +157,12 @@ def create(
157
157
  "values": ["optimized", "balanced", "safe"]
158
158
  }
159
159
  ]
160
- }[/dim]
160
+ }[/green]
161
161
 
162
162
  [bold][underline]Examples[/underline][/bold]
163
163
 
164
164
  - Create a scenario test with a single scenario.
165
- $ [dim]SCENARIO='{
165
+ $ [green]SCENARIO='{
166
166
  "instance_id": "warren-planner-v1",
167
167
  "scenario_input": {
168
168
  "scenario_input_type": "input_set",
@@ -172,10 +172,10 @@ def create(
172
172
  }
173
173
  }
174
174
  }'
175
- nextmv cloud scenario create --app-id hare-app --name "Spring Meadow Routes" --scenarios "$SCENARIO"[/dim]
175
+ nextmv cloud scenario create --app-id hare-app --name "Spring Meadow Routes" --scenarios "$SCENARIO"[/green]
176
176
 
177
177
  - Create with multiple scenarios by repeating the flag.
178
- $ [dim]SCENARIO1='{
178
+ $ [green]SCENARIO1='{
179
179
  "instance_id": "hop-optimizer",
180
180
  "scenario_input": {
181
181
  "scenario_input_type": "input_set",
@@ -196,10 +196,10 @@ def create(
196
196
  }
197
197
  }'
198
198
  nextmv cloud scenario create --app-id hare-app --name "Lettuce Delivery Optimization" \\
199
- --scenarios "$SCENARIO1" --scenarios "$SCENARIO2"[/dim]
199
+ --scenarios "$SCENARIO1" --scenarios "$SCENARIO2"[/green]
200
200
 
201
201
  - Create with multiple scenarios in a single [magenta]json[/magenta] array.
202
- $ [dim]SCENARIOS='[
202
+ $ [green]SCENARIOS='[
203
203
  {
204
204
  "instance_id": "burrow-builder",
205
205
  "scenario_input": {
@@ -222,10 +222,10 @@ def create(
222
222
  }
223
223
  ]'
224
224
  nextmv cloud scenario create --app-id hare-app --name "Warren Construction Plans" \\
225
- --scenarios "$SCENARIOS"[/dim]
225
+ --scenarios "$SCENARIOS"[/green]
226
226
 
227
227
  - Create a scenario test and wait for it to complete.
228
- $ [dim]SCENARIO='{
228
+ $ [green]SCENARIO='{
229
229
  "instance_id": "foraging-route",
230
230
  "scenario_input": {
231
231
  "scenario_input_type": "input_set",
@@ -236,10 +236,10 @@ def create(
236
236
  }
237
237
  }'
238
238
  nextmv cloud scenario create --app-id hare-app --name "Autumn Carrot Collection" --scenarios "$SCENARIO" \\
239
- --wait[/dim]
239
+ --wait[/green]
240
240
 
241
241
  - Create a scenario test and save the results to a file, waiting for completion.
242
- $ [dim]SCENARIO='{
242
+ $ [green]SCENARIO='{
243
243
  "instance_id": "safe-hopper",
244
244
  "scenario_input": {
245
245
  "scenario_input_type": "input_set",
@@ -250,10 +250,10 @@ def create(
250
250
  }
251
251
  }'
252
252
  nextmv cloud scenario create --app-id hare-app --name "Fox Avoidance Routes" --scenarios "$SCENARIO" \\
253
- --output bunny-safety-results.json[/dim]
253
+ --output bunny-safety-results.json[/green]
254
254
 
255
255
  - Create a scenario test with configuration options.
256
- $ [dim]SCENARIO='{
256
+ $ [green]SCENARIO='{
257
257
  "instance_id": "hop-optimizer",
258
258
  "scenario_input": {
259
259
  "scenario_input_type": "input_set",
@@ -269,7 +269,7 @@ def create(
269
269
  }
270
270
  ]
271
271
  }'
272
- nextmv cloud scenario create --app-id hare-app --name "Speed Analysis" --scenarios "$SCENARIO"[/dim]
272
+ nextmv cloud scenario create --app-id hare-app --name "Speed Analysis" --scenarios "$SCENARIO"[/green]
273
273
  """
274
274
 
275
275
  cloud_app = build_app(app_id=app_id, profile=profile)