From 8d072b2519ea299060b5a1f358096230f0e06ebe Mon Sep 17 00:00:00 2001 From: David Shrewsbury Date: Thu, 26 Sep 2024 15:13:14 -0400 Subject: [PATCH] Use dict for metadata --- src/ansible_runner/config/_base.py | 60 +++++++++++++---------------- src/ansible_runner/config/runner.py | 48 +++++++++++------------ 2 files changed, 50 insertions(+), 58 deletions(-) diff --git a/src/ansible_runner/config/_base.py b/src/ansible_runner/config/_base.py index 6582299c..d704a3cd 100644 --- a/src/ansible_runner/config/_base.py +++ b/src/ansible_runner/config/_base.py @@ -62,14 +62,6 @@ class BaseExecutionMode(Enum): GENERIC_COMMANDS = 2 -@dataclass -class _ArgField(dict): - required: bool = True - - def __getattr__(self, attr): - return self[attr] - - @dataclass class BaseConfig: @@ -78,32 +70,32 @@ class BaseConfig: # No other config objects make use of positional parameters, so this should be fine. # # Example use case: RunnerConfig("/tmp/demo", playbook="main.yml", ...) - private_data_dir: str | None = field(metadata=_ArgField(), default=None) - - artifact_dir: str | None = field(metadata=_ArgField(), default=None) - check_job_event_data: bool = field(metadata=_ArgField(), default=False) - container_auth_data: dict[str, str] | None = field(metadata=_ArgField(), default=None) - container_image: str = field(metadata=_ArgField(), default="") - container_options: list[str] | None = field(metadata=_ArgField(), default=None) - container_volume_mounts: list[str] | None = field(metadata=_ArgField(), default=None) - container_workdir: str | None = field(metadata=_ArgField(), default=None) - envvars: dict[str, Any] | None = field(metadata=_ArgField(), default=None) - fact_cache: str | None = field(metadata=_ArgField(), default=None) - fact_cache_type: str = field(metadata=_ArgField(), default='jsonfile') - host_cwd: str | None = field(metadata=_ArgField(), default=None) - ident: str | None = field(metadata=_ArgField(), default=None) - json_mode: bool = field(metadata=_ArgField(), default=False) - keepalive_seconds: int | None = field(metadata=_ArgField(), default=None) - passwords: dict[str, str] | None = field(metadata=_ArgField(), default=None) - process_isolation: bool = field(metadata=_ArgField(), default=False) - process_isolation_executable: str = field(metadata=_ArgField(), default=defaults.default_process_isolation_executable) - project_dir: str | None = field(metadata=_ArgField(), default=None) - quiet: bool = field(metadata=_ArgField(), default=False) - rotate_artifacts: int = field(metadata=_ArgField(), default=0) - settings: dict | None = field(metadata=_ArgField(), default=None) - ssh_key: str | None = field(metadata=_ArgField(), default=None) - suppress_env_files: bool = field(metadata=_ArgField(), default=False) - timeout: int | None = field(metadata=_ArgField(), default=None) + private_data_dir: str | None = field(metadata={}, default=None) + + artifact_dir: str | None = field(metadata={}, default=None) + check_job_event_data: bool = field(metadata={}, default=False) + container_auth_data: dict[str, str] | None = field(metadata={}, default=None) + container_image: str = field(metadata={}, default="") + container_options: list[str] | None = field(metadata={}, default=None) + container_volume_mounts: list[str] | None = field(metadata={}, default=None) + container_workdir: str | None = field(metadata={}, default=None) + envvars: dict[str, Any] | None = field(metadata={}, default=None) + fact_cache: str | None = field(metadata={}, default=None) + fact_cache_type: str = field(metadata={}, default='jsonfile') + host_cwd: str | None = field(metadata={}, default=None) + ident: str | None = field(metadata={}, default=None) + json_mode: bool = field(metadata={}, default=False) + keepalive_seconds: int | None = field(metadata={}, default=None) + passwords: dict[str, str] | None = field(metadata={}, default=None) + process_isolation: bool = field(metadata={}, default=False) + process_isolation_executable: str = field(metadata={}, default=defaults.default_process_isolation_executable) + project_dir: str | None = field(metadata={}, default=None) + quiet: bool = field(metadata={}, default=False) + rotate_artifacts: int = field(metadata={}, default=0) + settings: dict | None = field(metadata={}, default=None) + ssh_key: str | None = field(metadata={}, default=None) + suppress_env_files: bool = field(metadata={}, default=False) + timeout: int | None = field(metadata={}, default=None) _CONTAINER_ENGINES = ('docker', 'podman') diff --git a/src/ansible_runner/config/runner.py b/src/ansible_runner/config/runner.py index 00d0ee84..44f73a7d 100644 --- a/src/ansible_runner/config/runner.py +++ b/src/ansible_runner/config/runner.py @@ -31,7 +31,7 @@ from dataclasses import dataclass, field from ansible_runner import output -from ansible_runner.config._base import _ArgField, BaseConfig, BaseExecutionMode +from ansible_runner.config._base import BaseConfig, BaseExecutionMode from ansible_runner.exceptions import ConfigurationError from ansible_runner.output import debug from ansible_runner.utils import register_for_cleanup @@ -67,29 +67,29 @@ class RunnerConfig(BaseConfig): """ # 'binary' comes from the --binary CLI opt for an alternative ansible command path - binary: str | None = field(metadata=_ArgField(), default=None) - cmdline: str | None = field(metadata=_ArgField(), default=None) - directory_isolation_base_path: str | None = field(metadata=_ArgField(), default=None) - extravars: dict | None = field(metadata=_ArgField(), default=None) - forks: int | None = field(metadata=_ArgField(), default=None) - host_pattern: str | None = field(metadata=_ArgField(), default=None) - inventory: str | dict | list | None = field(metadata=_ArgField(), default=None) - limit: str | None = field(metadata=_ArgField(), default=None) - module: str | None = field(metadata=_ArgField(), default=None) - module_args: str | None = field(metadata=_ArgField(), default=None) - omit_event_data: bool = field(metadata=_ArgField(), default=False) - only_failed_event_data: bool = field(metadata=_ArgField(), default=False) - playbook: str | None = field(metadata=_ArgField(), default=None) - process_isolation_hide_paths: str | list | None = field(metadata=_ArgField(), default=None) - process_isolation_ro_paths: str | list | None = field(metadata=_ArgField(), default=None) - process_isolation_show_paths: str | list | None = field(metadata=_ArgField(), default=None) - process_isolation_path: str | None = field(metadata=_ArgField(), default=None) - roles_path: str | None = field(metadata=_ArgField(), default=None) - skip_tags: str | None = field(metadata=_ArgField(), default=None) - suppress_ansible_output: bool = field(metadata=_ArgField(), default=False) - suppress_output_file: bool = field(metadata=_ArgField(), default=False) - tags: str | None = field(metadata=_ArgField(), default=None) - verbosity: int | None = field(metadata=_ArgField(), default=None) + binary: str | None = field(metadata={}, default=None) + cmdline: str | None = field(metadata={}, default=None) + directory_isolation_base_path: str | None = field(metadata={}, default=None) + extravars: dict | None = field(metadata={}, default=None) + forks: int | None = field(metadata={}, default=None) + host_pattern: str | None = field(metadata={}, default=None) + inventory: str | dict | list | None = field(metadata={}, default=None) + limit: str | None = field(metadata={}, default=None) + module: str | None = field(metadata={}, default=None) + module_args: str | None = field(metadata={}, default=None) + omit_event_data: bool = field(metadata={}, default=False) + only_failed_event_data: bool = field(metadata={}, default=False) + playbook: str | None = field(metadata={}, default=None) + process_isolation_hide_paths: str | list | None = field(metadata={}, default=None) + process_isolation_ro_paths: str | list | None = field(metadata={}, default=None) + process_isolation_show_paths: str | list | None = field(metadata={}, default=None) + process_isolation_path: str | None = field(metadata={}, default=None) + roles_path: str | None = field(metadata={}, default=None) + skip_tags: str | None = field(metadata={}, default=None) + suppress_ansible_output: bool = field(metadata={}, default=False) + suppress_output_file: bool = field(metadata={}, default=False) + tags: str | None = field(metadata={}, default=None) + verbosity: int | None = field(metadata={}, default=None) def __post_init__(self) -> None: # NOTE: Cannot call base class __init__() here as that causes some recursion madness.