diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 00:24:37 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 00:24:37 +0000 |
commit | 1022b2cebe73db426241c2f420d4ee9f6f3c1bed (patch) | |
tree | a5c38ccfaa66e8a52767dec01d3598b67a7422a8 /src/ansible_compat/errors.py | |
parent | Initial commit. (diff) | |
download | python-ansible-compat-1022b2cebe73db426241c2f420d4ee9f6f3c1bed.tar.xz python-ansible-compat-1022b2cebe73db426241c2f420d4ee9f6f3c1bed.zip |
Adding upstream version 4.1.11.upstream/4.1.11
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/ansible_compat/errors.py')
-rw-r--r-- | src/ansible_compat/errors.py | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/src/ansible_compat/errors.py b/src/ansible_compat/errors.py new file mode 100644 index 0000000..6369412 --- /dev/null +++ b/src/ansible_compat/errors.py @@ -0,0 +1,57 @@ +"""Module to deal with errors.""" +from __future__ import annotations + +from typing import TYPE_CHECKING, Any + +from ansible_compat.constants import ANSIBLE_MISSING_RC, INVALID_PREREQUISITES_RC + +if TYPE_CHECKING: + from subprocess import CompletedProcess + + +class AnsibleCompatError(RuntimeError): + """Generic error originating from ansible_compat library.""" + + code = 1 # generic error + + def __init__( + self, + message: str | None = None, + proc: CompletedProcess[Any] | None = None, + ) -> None: + """Construct generic library exception.""" + super().__init__(message) + self.proc = proc + + +class AnsibleCommandError(RuntimeError): + """Exception running an Ansible command.""" + + def __init__(self, proc: CompletedProcess[Any]) -> None: + """Construct an exception given a completed process.""" + message = ( + f"Got {proc.returncode} exit code while running: {' '.join(proc.args)}" + ) + super().__init__(message) + self.proc = proc + + +class MissingAnsibleError(AnsibleCompatError): + """Reports a missing or broken Ansible installation.""" + + code = ANSIBLE_MISSING_RC + + def __init__( + self, + message: str | None = "Unable to find a working copy of ansible executable.", + proc: CompletedProcess[Any] | None = None, + ) -> None: + """.""" + super().__init__(message) + self.proc = proc + + +class InvalidPrerequisiteError(AnsibleCompatError): + """Reports a missing requirement.""" + + code = INVALID_PREREQUISITES_RC |