Config

pydantic settings controller.config.Config

Nublado controller configuration.

Parameters:
  • _case_sensitive (bool | None, default: None)

  • _nested_model_default_partial_update (bool | None, default: None)

  • _env_prefix (str | None, default: None)

  • _env_file (Union[Path, str, Sequence[Union[Path, str]], None], default: PosixPath('.'))

  • _env_file_encoding (str | None, default: None)

  • _env_ignore_empty (bool | None, default: None)

  • _env_nested_delimiter (str | None, default: None)

  • _env_parse_none_str (str | None, default: None)

  • _env_parse_enums (bool | None, default: None)

  • _cli_prog_name (str | None, default: None)

  • _cli_parse_args (bool | list[str] | tuple[str, ...] | None, default: None)

  • _cli_settings_source (Optional[CliSettingsSource[Any]], default: None)

  • _cli_parse_none_str (str | None, default: None)

  • _cli_hide_none_type (bool | None, default: None)

  • _cli_avoid_json (bool | None, default: None)

  • _cli_enforce_required (bool | None, default: None)

  • _cli_use_class_docs_for_groups (bool | None, default: None)

  • _cli_exit_on_error (bool | None, default: None)

  • _cli_prefix (str | None, default: None)

  • _cli_flag_prefix_char (str | None, default: None)

  • _cli_implicit_flags (bool | None, default: None)

  • _cli_ignore_unknown_args (bool | None, default: None)

  • _cli_kebab_case (bool | None, default: None)

  • _secrets_dir (Union[Path, str, Sequence[Union[Path, str]], None], default: None)

  • values (Any)

Fields:
Validators:
  • _validate_fileserver_volume_mounts » all fields

field baseUrl: Annotated[str, Field(title='Base URL for Science Platform', description='Injected into the lab pod as EXTERNAL_INSTANCE_URL', validation_alias='EXTERNAL_INSTANCE_URL')] = 'http://127.0.0.1:8080' (name 'base_url')

Injected into the lab pod as EXTERNAL_INSTANCE_URL

Validated by:
  • _validate_fileserver_volume_mounts

field fileserver: Annotated[DisabledFileserverConfig | EnabledFileserverConfig, Field(title='User file server configuration')] = DisabledFileserverConfig(enabled=False, path_prefix='/files')
Validated by:
  • _validate_fileserver_volume_mounts

field images: Annotated[PrepullerConfig, Field(title='Available lab images', description='Configuration for which images to prepull and which images to display in the spawner menu for users to choose from when spawning labs')] [Required]

Configuration for which images to prepull and which images to display in the spawner menu for users to choose from when spawning labs

Validated by:
  • _validate_fileserver_volume_mounts

field lab: Annotated[LabConfig, Field(title='User lab configuration')] [Required]
Validated by:
  • _validate_fileserver_volume_mounts

field logLevel: Annotated[LogLevel, Field(title='Log level', description='Python logging level', examples=[LogLevel.INFO])] = LogLevel.INFO (name 'log_level')

Python logging level

Validated by:
  • _validate_fileserver_volume_mounts

field metadataPath: Annotated[Path, Field(title='Path to injected pod metadata', description='This directory should contain files named name, namespace, and uid, which should contain the name, namespace, and UUID of the lab controller pod, respectively. Normally this is done via the Kubernetes downwardAPI.) These are used to set ownership information on pods spawned by the prepuller and to find secrets to inject into the lab.')] = PosixPath('/etc/podinfo') (name 'metadata_path')

This directory should contain files named name, namespace, and uid, which should contain the name, namespace, and UUID of the lab controller pod, respectively. Normally this is done via the Kubernetes downwardAPI.) These are used to set ownership information on pods spawned by the prepuller and to find secrets to inject into the lab.

Validated by:
  • _validate_fileserver_volume_mounts

field name: Annotated[str, Field(title='Name of application', description='Used when reporting problems to Slack')] = 'Nublado'

Used when reporting problems to Slack

Validated by:
  • _validate_fileserver_volume_mounts

field pathPrefix: Annotated[str, Field(title='URL prefix for controller API', description='This prefix is used for all APIs except for the API to spawn a user file server. That is controlled by fileserver.path_prefix.')] = '/nublado' (name 'path_prefix')

This prefix is used for all APIs except for the API to spawn a user file server. That is controlled by fileserver.path_prefix.

Validated by:
  • _validate_fileserver_volume_mounts

field profile: Annotated[Profile, Field(title='Application logging profile', description='production uses JSON logging. development uses logging that may be easier for humans to read but that cannot be easily parsed by computers or Google Log Explorer.', examples=[Profile.development])] = Profile.production

production uses JSON logging. development uses logging that may be easier for humans to read but that cannot be easily parsed by computers or Google Log Explorer.

Validated by:
  • _validate_fileserver_volume_mounts

field slackWebhook: Annotated[SecretStr | None, Field(title='Slack webhook for alerts', description='If set, failures creating user labs or file servers and any uncaught exceptions in the Nublado controller will be reported to Slack via this webhook', validation_alias='NUBLADO_SLACK_WEBHOOK')] = None (name 'slack_webhook')

If set, failures creating user labs or file servers and any uncaught exceptions in the Nublado controller will be reported to Slack via this webhook

Validated by:
  • _validate_fileserver_volume_mounts

classmethod from_file(path)

Load the controller configuration from a YAML file.

Parameters:

path (Path) – Path to the configuration file.

Return type:

Self