mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2025-09-19 16:56:04 +02:00
Solved all open test issues
This commit is contained in:
@@ -17,63 +17,6 @@ _JOB_LOC_RE = re.compile(r"/rest/jobstatus/([^?\s#]+)")
|
||||
def _join_elements(elems: Iterable[Any]) -> str:
|
||||
return "/".join(str(x) for x in elems)
|
||||
|
||||
|
||||
def xwiki_job_id(response: Any, default: Optional[str] = None, strict: bool = False) -> Optional[str]:
|
||||
"""
|
||||
Extract a XWiki job ID from a typical Ansible `uri` response.
|
||||
|
||||
Supports:
|
||||
- JSON mapping: {"id": {"elements": ["install", "extensions", "123"]}}
|
||||
- JSON mapping: {"id": "install/extensions/123"}
|
||||
- Fallback from Location header or URL containing "/rest/jobstatus/<id>"
|
||||
|
||||
Args:
|
||||
response: The registered result from the `uri` task (dict-like).
|
||||
default: Value to return when no ID can be found (if strict=False).
|
||||
strict: If True, raise AnsibleFilterError when no ID is found.
|
||||
|
||||
Returns:
|
||||
The job ID string, or `default`/None.
|
||||
|
||||
Raises:
|
||||
AnsibleFilterError: if `strict=True` and no job ID can be determined.
|
||||
"""
|
||||
if not isinstance(response, dict):
|
||||
if strict:
|
||||
raise AnsibleFilterError("xwiki_job_id: response must be a dict-like Ansible result.")
|
||||
return default
|
||||
|
||||
# 1) Try JSON body
|
||||
j = response.get("json")
|
||||
if isinstance(j, dict):
|
||||
job_id = j.get("id")
|
||||
if isinstance(job_id, dict):
|
||||
elems = job_id.get("elements")
|
||||
if isinstance(elems, list) and elems:
|
||||
return _join_elements(elems)
|
||||
if isinstance(job_id, str) and job_id.strip():
|
||||
return job_id.strip()
|
||||
|
||||
# 2) Fallback: Location header (Ansible `uri` exposes it as `location`)
|
||||
loc = response.get("location")
|
||||
if isinstance(loc, str) and loc:
|
||||
m = _JOB_LOC_RE.search(loc)
|
||||
if m:
|
||||
return m.group(1)
|
||||
|
||||
# 3) As a last resort, try the final `url` (in case server redirected and Ansible captured it)
|
||||
url = response.get("url")
|
||||
if isinstance(url, str) and url:
|
||||
m = _JOB_LOC_RE.search(url)
|
||||
if m:
|
||||
return m.group(1)
|
||||
|
||||
# Not found
|
||||
if strict:
|
||||
raise AnsibleFilterError("xwiki_job_id: could not extract job ID from response.")
|
||||
return default
|
||||
|
||||
|
||||
def xwiki_extension_status(raw: str) -> int:
|
||||
"""
|
||||
Parse the output of the Groovy CheckExtension page.
|
||||
@@ -103,6 +46,5 @@ class FilterModule(object):
|
||||
"""Custom filters for XWiki helpers."""
|
||||
def filters(self):
|
||||
return {
|
||||
"xwiki_job_id": xwiki_job_id,
|
||||
"xwiki_extension_status": xwiki_extension_status,
|
||||
}
|
||||
|
@@ -13,7 +13,6 @@
|
||||
vars:
|
||||
xwiki_oidc_enabled_switch: false
|
||||
xwiki_ldap_enabled_switch: false
|
||||
xwiki_superadmin_enabled_switch: true
|
||||
|
||||
- name: "ASSERT | superadmin can authenticate (needed for installer)"
|
||||
uri:
|
||||
@@ -49,6 +48,5 @@
|
||||
vars:
|
||||
xwiki_oidc_enabled_switch: "{{ XWIKI_OIDC_ENABLED | bool }}"
|
||||
xwiki_ldap_enabled_switch: "{{ XWIKI_LDAP_ENABLED | bool }}"
|
||||
xwiki_superadmin_enabled_switch: false
|
||||
|
||||
- include_tasks: utils/run_once.yml
|
||||
|
@@ -14,7 +14,6 @@ XWIKI_HOST_PORT: "{{ ports.localhost.http[application_id] }
|
||||
XWIKI_HOSTNAME: "{{ container_hostname }}"
|
||||
|
||||
## Paths
|
||||
XWIKI_HOST_CONF_PATH: "{{ [docker_compose.directories.config, 'xwiki.cfg'] | path_join }}"
|
||||
XWIKI_HOST_PROPERTIES_PATH: "{{ [docker_compose.directories.config, 'xwiki.properties'] | path_join }}"
|
||||
XWIKI_DOCK_DATA_DIR: "/usr/local/xwiki"
|
||||
|
||||
@@ -32,7 +31,6 @@ XWIKI_SSO_ENABLED: "{{ (XWIKI_OIDC_ENABLED | bool) or (XWIKI_
|
||||
|
||||
# Admin credentials (must be provided via inventory/vault)
|
||||
XWIKI_ADMIN_USER: "{{ users.administrator.username }}"
|
||||
XWIKI_ADMIN_PASS: "{{ users.administrator.password }}"
|
||||
XWIKI_ADMIN_GROUP: "{{ application_id }}-administrator"
|
||||
|
||||
# Superadministrator
|
||||
@@ -43,7 +41,6 @@ XWIKI_SUPERADMIN_USERNAME: "superadmin"
|
||||
XWIKI_REST_BASE: "{{ ['http://127.0.0.1:'~ XWIKI_HOST_PORT, '/rest/'] | url_join }}"
|
||||
XWIKI_REST_XWIKI: "{{ [XWIKI_REST_BASE, 'wikis/xwiki'] | url_join }}"
|
||||
XWIKI_REST_XWIKI_PAGES: "{{ [XWIKI_REST_BASE, 'wikis/xwiki/spaces/XWiki/pages'] | url_join }}"
|
||||
XWIKI_REST_EXTENSION_INSTALL: "{{ [XWIKI_REST_BASE, 'jobs'] | url_join }}"
|
||||
|
||||
# LDAP configuration (mapped to LDAP.* context)
|
||||
XWIKI_LDAP_SERVER: "{{ LDAP.SERVER.DOMAIN }}"
|
||||
|
Reference in New Issue
Block a user