Files
computer-playbook/roles/sys-ctl-hlth-msmtp/lookup_plugins/mail_recipient.py
kevinveenbirkenbachandClaude Opus 4.7 c6c2ab3855 fix(sys-ctl-hlth-msmtp): resolve recipient via lookup plugin, fix universal-pass
Cluster 2a (hlth-msmtp failed=65 in universal single-app deploys):
the health-check script sent "To: administrator" but the administrator
Unix user is only provisioned in server-pass, so postfix rejected the
recipient. Replace the inline Jinja conditional with a role-local
lookup plugin that picks administrator.email (external), "administrator"
(local + user exists) or "root" (local + missing).

Side change: SIM105 cleanup in utils/install/lint/__main__.py.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-23 18:52:42 +02:00

39 lines
1.0 KiB
Python

from __future__ import annotations
import pwd
from typing import Any
from ansible.plugins.lookup import LookupBase
from plugins.lookup.email import LookupModule as EmailLookup
from plugins.lookup.email import _as_bool
from plugins.lookup.users import LookupModule as UsersLookup
def _instantiate(cls: type, templar: Any) -> Any:
inst = cls()
inst._templar = templar
return inst
class LookupModule(LookupBase):
def run(
self,
terms: list[Any],
variables: dict[str, Any] | None = None,
**kwargs: Any,
) -> list[str]:
email_cfg = _instantiate(EmailLookup, self._templar).run(
[], variables=variables
)[0]
if _as_bool(email_cfg.get("external")):
admin = _instantiate(UsersLookup, self._templar).run(
["administrator"], variables=variables
)[0]
return [str(admin.get("email", "root"))]
try:
pwd.getpwnam("administrator")
except KeyError:
return ["root"]
return ["administrator"]