mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-06 02:54:26 +00:00
3529 invalid comments in 528 files, grandfathered in while the linter only saw the working-tree diff. Removal ran through the linter's own collectors, so detection and deletion cannot drift: a comment whose opener line is blank before it and whose closer line is blank after it loses all its lines, anything else loses only the comment region, and a line left holding a bare delimiter goes with it. Five files keep their comments behind a nocheck marker instead. Four are upstream configs whose inline docs are upstream's own (mautrix, systemd journald, nextcloud-oidc-login, MediaWiki). In littlejs the commented-out entries ARE the deactivation mechanism for an example tile, so deleting them would delete configuration. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
74 lines
2.2 KiB
Python
Executable File
74 lines
2.2 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
#
|
|
# Local action plugin that extends ansible's get_url action plugin with
|
|
# centralized retry defaults while preserving full get_url compatibility.
|
|
|
|
from __future__ import annotations
|
|
|
|
import time
|
|
|
|
from ansible.plugins.action import ActionBase
|
|
|
|
|
|
class ActionModule(ActionBase):
|
|
DEFAULT_RETRIES = 12
|
|
DEFAULT_DELAY = 5
|
|
|
|
def run(self, tmp=None, task_vars=None):
|
|
if task_vars is None:
|
|
task_vars = {}
|
|
|
|
if self._task_keyword_is_set("until"):
|
|
return self._execute_get_url(tmp=tmp, task_vars=task_vars)
|
|
|
|
if self._task.async_val:
|
|
return self._execute_get_url(tmp=tmp, task_vars=task_vars)
|
|
|
|
retries = self._task_keyword_int("retries", self.DEFAULT_RETRIES)
|
|
delay = self._task_keyword_int("delay", self.DEFAULT_DELAY)
|
|
|
|
attempts_total = max(1, retries + 1)
|
|
last_result = None
|
|
for attempt in range(1, attempts_total + 1):
|
|
last_result = self._execute_get_url(tmp=tmp, task_vars=task_vars)
|
|
if not last_result.get("failed", False):
|
|
last_result["attempts"] = attempt
|
|
return last_result
|
|
|
|
if attempt < attempts_total:
|
|
time.sleep(delay)
|
|
|
|
last_result["attempts"] = attempts_total
|
|
return last_result
|
|
|
|
def _execute_get_url(self, tmp, task_vars):
|
|
return self._execute_module(
|
|
module_name="ansible.builtin.get_url",
|
|
module_args=dict(self._task.args),
|
|
task_vars=task_vars,
|
|
tmp=tmp,
|
|
)
|
|
|
|
def _task_keyword_is_set(self, key):
|
|
ds = self._task.get_ds()
|
|
return isinstance(ds, dict) and key in ds
|
|
|
|
def _task_keyword_int(self, key, fallback):
|
|
if key == "retries":
|
|
retries_value = getattr(self._task, "retries", None)
|
|
if retries_value is None:
|
|
return fallback
|
|
return self._as_int(retries_value, fallback)
|
|
|
|
if not self._task_keyword_is_set(key):
|
|
return fallback
|
|
|
|
return self._as_int(getattr(self._task, key, None), fallback)
|
|
|
|
@staticmethod
|
|
def _as_int(value, fallback):
|
|
try:
|
|
return int(value)
|
|
except (TypeError, ValueError):
|
|
return fallback
|