From f72ac30884cdb7f2e58bf2e4d45ec15347cceef5 Mon Sep 17 00:00:00 2001 From: Kevin Veen-Birkenbach Date: Mon, 11 Aug 2025 19:44:14 +0200 Subject: [PATCH] Replaced redirects by origine to raise performance --- roles/svc-db-mariadb/tasks/01_core.yml | 4 +- roles/svc-db-mariadb/tasks/02_init.yml | 4 +- roles/svc-db-openldap/tasks/main.yml | 2 +- roles/svc-db-postgres/tasks/01_core.yml | 2 +- roles/user-root/tasks/main.yml | 2 +- roles/web-app-collabora/tasks/main.yml | 2 +- roles/web-app-discourse/handlers/main.yml | 2 +- .../test_no_module_redirections_in_logs.py | 71 +++++++++++++++++++ 8 files changed, 80 insertions(+), 9 deletions(-) create mode 100644 tests/integration/test_no_module_redirections_in_logs.py diff --git a/roles/svc-db-mariadb/tasks/01_core.yml b/roles/svc-db-mariadb/tasks/01_core.yml index 42906346..6474ab03 100644 --- a/roles/svc-db-mariadb/tasks/01_core.yml +++ b/roles/svc-db-mariadb/tasks/01_core.yml @@ -1,13 +1,13 @@ - name: Create Docker network for MariaDB - docker_network: + community.docker.docker_network: name: "{{ mariadb_network_name }}" state: present ipam_config: - subnet: "{{ mariadb_subnet }}" - name: install MariaDB - docker_container: + community.docker.docker_container: name: "{{ mariadb_name }}" image: "{{ mariadb_image }}:{{ mariadb_version}}" detach: yes diff --git a/roles/svc-db-mariadb/tasks/02_init.yml b/roles/svc-db-mariadb/tasks/02_init.yml index 52f08f11..359fd094 100644 --- a/roles/svc-db-mariadb/tasks/02_init.yml +++ b/roles/svc-db-mariadb/tasks/02_init.yml @@ -1,5 +1,5 @@ - name: "Create database: {{ database_name }}" - mysql_db: + community.mysql.mysql_db: name: "{{ database_name }}" state: present login_user: root @@ -10,7 +10,7 @@ collation: "{{ database_collation }}" - name: "Create database user: {{ database_username }}" - mysql_user: + community.mysql.mysql_user: name: "{{database_username}}" password: "{{database_password}}" host: "%" diff --git a/roles/svc-db-openldap/tasks/main.yml b/roles/svc-db-openldap/tasks/main.yml index 37e60adc..20c7f1f9 100644 --- a/roles/svc-db-openldap/tasks/main.yml +++ b/roles/svc-db-openldap/tasks/main.yml @@ -18,7 +18,7 @@ when: not applications | get_app_conf(application_id, 'network.public', True) | bool - name: create docker network for LDAP, so that other applications can access it - docker_network: + community.docker.docker_network: name: "{{ openldap_network }}" state: present ipam_config: diff --git a/roles/svc-db-postgres/tasks/01_core.yml b/roles/svc-db-postgres/tasks/01_core.yml index 855a844d..86df823c 100644 --- a/roles/svc-db-postgres/tasks/01_core.yml +++ b/roles/svc-db-postgres/tasks/01_core.yml @@ -1,5 +1,5 @@ - name: Create Docker network for PostgreSQL - docker_network: + community.docker.docker_network: name: "{{ postgres_network_name }}" state: present ipam_config: diff --git a/roles/user-root/tasks/main.yml b/roles/user-root/tasks/main.yml index 1fe7f5a4..d955f395 100644 --- a/roles/user-root/tasks/main.yml +++ b/roles/user-root/tasks/main.yml @@ -4,7 +4,7 @@ register: ssh_key - name: Generate a SSH key for root if it does not exist - ansible.builtin.openssh_keypair: + community.crypto.openssh_keypair: path: "/root/.ssh/id_rsa" type: rsa size: 4096 diff --git a/roles/web-app-collabora/tasks/main.yml b/roles/web-app-collabora/tasks/main.yml index 2850c520..e67276e7 100644 --- a/roles/web-app-collabora/tasks/main.yml +++ b/roles/web-app-collabora/tasks/main.yml @@ -9,7 +9,7 @@ name: docker-compose - name: Create Docker network for Collabora - docker_network: + community.docker.docker_network: name: svc-db-mariadb state: present ipam_config: diff --git a/roles/web-app-discourse/handlers/main.yml b/roles/web-app-discourse/handlers/main.yml index 6a821d23..ad2f9408 100644 --- a/roles/web-app-discourse/handlers/main.yml +++ b/roles/web-app-discourse/handlers/main.yml @@ -1,6 +1,6 @@ --- - name: "stop and remove discourse container if it exist" - docker_container: + community.docker.docker_container: name: "{{ discourse_container }}" state: absent register: container_action diff --git a/tests/integration/test_no_module_redirections_in_logs.py b/tests/integration/test_no_module_redirections_in_logs.py new file mode 100644 index 00000000..112cc679 --- /dev/null +++ b/tests/integration/test_no_module_redirections_in_logs.py @@ -0,0 +1,71 @@ +# tests/integration/test_no_module_redirections_in_logs.py +import os +import glob +import re +import unittest +from collections import defaultdict + +REDIR_RE = re.compile(r"redirecting \(type: modules\)\s+(\S+)\s+to\s+(\S+)", re.IGNORECASE) + +class ModuleRedirectionLogTest(unittest.TestCase): + """ + Fail if logs/*.log contains Ansible module redirections like: + 'redirecting (type: modules) ansible.builtin.pacman to community.general.pacman' + Rationale: These lookups add overhead and clutter logs. Use fully-qualified + collection names directly in tasks to improve performance and clarity. + """ + + def test_no_module_redirections(self): + project_root = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..")) + log_glob = os.path.join(project_root, "logs", "*.log") + files = sorted(glob.glob(log_glob)) + + if not files: + self.skipTest(f"No log files found at {log_glob}") + + hits = [] + mappings = defaultdict(int) + + for path in files: + try: + with open(path, "r", encoding="utf-8", errors="replace") as fh: + for lineno, line in enumerate(fh, 1): + m = REDIR_RE.search(line) + if m: + src, dst = m.group(1), m.group(2) + hits.append((path, lineno, src, dst, line.strip())) + mappings[(src, dst)] += 1 + except OSError as e: + self.fail(f"Cannot read log file {path}: {e}") + + if hits: + # Build helpful failure message + suggestions = [] + regex_hints = [] + for (src, dst), count in sorted(mappings.items(), key=lambda x: (-x[1], x[0])): + suggestions.append(f"- Replace '{src}' with '{dst}' in your tasks ({count} occurrences).") + # Create VS Code regex for finding these in YAML + src_name = re.escape(src.split('.')[-1]) # only short module name + regex_hints.append(f"(?