Bash Command#

Bash Command workload (test_template_name is BashCmd) allows users to execute arbitrary bash commands within the CloudAI framework. This is useful for simple scripts, custom testing commands, or integrating external tools.

cmd specified in the cmd_args section will be added as-is into generated sbatch script.

Usage Examples#

Test TOML example:

name = "my_bash_test"
description = "Example bash command test"
test_template_name = "BashCmd"

[cmd_args]
cmd = "echo 'Hello from CloudAI!'"

Test Scenario example:

name = "bash-test"

[[Tests]]
id = "bash.1"
num_nodes = 1
time_limit = "00:05:00"

test_name = "my_bash_test"

Test-in-Scenario example:

name = "bash-test"

[[Tests]]
id = "bash.1"
num_nodes = 1
time_limit = "00:05:00"

name = "my_bash_test"
description = "Example bash command test"
test_template_name = "BashCmd"

  [Tests.cmd_args]
  cmd = "echo 'Hello from CloudAI!'"

API Documentation#

Command Arguments#

class cloudai.workloads.bash_cmd.bash_cmd.BashCmdArgs(*, cmd: str, **extra_data: Any)[source]#

Bases: CmdArgs

Arguments for a Bash command.

Test Definition#

class cloudai.workloads.bash_cmd.bash_cmd.BashCmdTestDefinition(*, name: str, description: str, test_template_name: str, cmd_args: ~cloudai.workloads.bash_cmd.bash_cmd.BashCmdArgs, dse_excluded_args: list[str] = <factory>, extra_env_vars: dict[str, str | ~typing.List[str]] = {}, extra_cmd_args: dict[str, str] = {}, extra_container_mounts: list[str] = [], git_repos: list[~cloudai._core.installables.git_repo.GitRepo] = [], nsys: ~cloudai.models.workload.NsysConfiguration | None = None, predictor: ~cloudai.models.workload.PredictorConfig | None = None, agent: str = 'grid_search', agent_steps: int = 1, agent_metrics: list[str] = ['default'], agent_reward_function: str = 'inverse', agent_config: dict[str, ~typing.Any] | None = None, env_params: dict[str, ~cloudai.configurator.env_params.EnvParamSpec] = <factory>)[source]#

Bases: TestDefinition

Test definition for a Bash command.

property is_domain_randomization_enabled: bool#

at least one env_params annotation.

Type:

Whether the config declares domain randomization

is_dse_excluded_arg(path: str) bool#

Return whether a dot-separated cmd_args path should be ignored by DSE.

is_env_sampled(cmd_args_path: str) bool#

Whether a cmd_args field is env-sampled (env draws it per trial, not the agent).

validator validate_env_params  »  all fields#

Validate env_params annotations against cmd_args.

env_params is an annotation: each key names a cmd_args field whose value is the candidate set (the single source of truth), and the entry carries only how to sample. So each key must name a real cmd_args field whose value is a candidate list; a scalar is already fixed, so annotating it is a meaningless label and is rejected here. When weights are declared, the list needs >= 2 values and the weights must align 1:1 with it. Sampling, persistence, the per-trial cmd_args overlay, and the cache key all live in CloudAIGymEnv; keeping this shape check in core lets the overlay stay agent- and workload-agnostic rather than re-implemented per workload.