feat: uniform system.content source schema across installers and repositories
This commit is contained in:
40
tests/content/_assert_content.yml
Normal file
40
tests/content/_assert_content.yml
Normal file
@@ -0,0 +1,40 @@
|
||||
---
|
||||
- name: "Seed raw system input (content {{ cf.name }})"
|
||||
ansible.builtin.set_fact:
|
||||
system: "{{ cf.system }}"
|
||||
|
||||
- name: "Normalize system (content {{ cf.name }})"
|
||||
ansible.builtin.include_tasks: ../../roles/global_defaults/tasks/_normalize_system.yml
|
||||
|
||||
- name: "Apply family defaults (content {{ cf.name }})"
|
||||
ansible.builtin.include_tasks: ../../roles/global_defaults/tasks/_apply_family_defaults.yml
|
||||
|
||||
- name: "Assert computed content source and url (content {{ cf.name }})"
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- system_cfg.content.source == cf.expect.source
|
||||
- system_cfg.content.url == cf.expect.url
|
||||
fail_msg: "[content {{ cf.name }}] FAIL got {{ system_cfg.content }}"
|
||||
success_msg: "[content {{ cf.name }}] OK {{ system_cfg.content.source }} {{ system_cfg.content.url }}"
|
||||
|
||||
- name: "Assert satellite register inputs (content {{ cf.name }})"
|
||||
when: cf.expect.satellite is defined
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- system_cfg.content.satellite.host == cf.expect.satellite.host
|
||||
- system_cfg.content.satellite.org == cf.expect.satellite.org
|
||||
- system_cfg.content.satellite.activation_key == cf.expect.satellite.activation_key
|
||||
fail_msg: "[content {{ cf.name }}] satellite FAIL got {{ system_cfg.content.satellite }}"
|
||||
|
||||
- name: "Assert Arch reflector lock-out (content {{ cf.name }})"
|
||||
when: cf.expect_reflector is defined
|
||||
block:
|
||||
- name: "Load Arch package set (content {{ cf.name }})"
|
||||
ansible.builtin.include_vars:
|
||||
file: ../../roles/bootstrap/vars/main.yml
|
||||
|
||||
- name: "Assert reflector membership (content {{ cf.name }})"
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- ('reflector' in (bootstrap_archlinux.base + bootstrap_archlinux.conditional)) == (cf.expect_reflector == 'present')
|
||||
fail_msg: "[content {{ cf.name }}] reflector expected {{ cf.expect_reflector }}, url='{{ system_cfg.content.url }}'"
|
||||
78
tests/content/content_fixtures.yml
Normal file
78
tests/content/content_fixtures.yml
Normal file
@@ -0,0 +1,78 @@
|
||||
---
|
||||
# Raw system.content input -> expected normalized system_cfg.content. Covers family
|
||||
# source defaults (EL=dvd, else mirror), url pass-through, satellite inputs, and the
|
||||
# Arch reflector lock-out (dropped only when a custom mirror url is set).
|
||||
content_fixtures:
|
||||
- name: arch-mirror-url-drops-reflector
|
||||
system:
|
||||
os: archlinux
|
||||
content: { url: "https://mirror.internal/archlinux" }
|
||||
expect:
|
||||
source: mirror
|
||||
url: "https://mirror.internal/archlinux"
|
||||
expect_reflector: absent
|
||||
|
||||
- name: arch-no-url-keeps-public-and-reflector
|
||||
system:
|
||||
os: archlinux
|
||||
content: {}
|
||||
expect:
|
||||
source: mirror
|
||||
url: ""
|
||||
expect_reflector: present
|
||||
|
||||
- name: el-mirror-url
|
||||
system:
|
||||
os: almalinux
|
||||
version: "10"
|
||||
content: { source: mirror, url: "https://mirror.internal/almalinux" }
|
||||
expect:
|
||||
source: mirror
|
||||
url: "https://mirror.internal/almalinux"
|
||||
|
||||
- name: el-default-dvd
|
||||
system:
|
||||
os: rhel
|
||||
version: "10"
|
||||
content: {}
|
||||
expect:
|
||||
source: dvd
|
||||
url: ""
|
||||
|
||||
- name: el-satellite-register
|
||||
system:
|
||||
os: almalinux
|
||||
version: "10"
|
||||
content:
|
||||
source: satellite
|
||||
satellite: { host: "sat.internal", org: "SG", activation_key: "ak-el10" }
|
||||
expect:
|
||||
source: satellite
|
||||
url: ""
|
||||
satellite: { host: "sat.internal", org: "SG", activation_key: "ak-el10" }
|
||||
|
||||
- name: debian-default-mirror
|
||||
system:
|
||||
os: debian
|
||||
version: "13"
|
||||
content: {}
|
||||
expect:
|
||||
source: mirror
|
||||
url: "https://deb.debian.org/debian/"
|
||||
|
||||
- name: debian-custom-mirror-lands
|
||||
system:
|
||||
os: debian
|
||||
version: "13"
|
||||
content: { source: mirror, url: "https://mirror.internal/debian" }
|
||||
expect:
|
||||
source: mirror
|
||||
url: "https://mirror.internal/debian"
|
||||
|
||||
- name: ubuntu-default-mirror
|
||||
system:
|
||||
os: ubuntu
|
||||
content: {}
|
||||
expect:
|
||||
source: mirror
|
||||
url: "http://archive.ubuntu.com/ubuntu/"
|
||||
22
tests/content/test_content.yml
Normal file
22
tests/content/test_content.yml
Normal file
@@ -0,0 +1,22 @@
|
||||
---
|
||||
# Run: ansible-playbook tests/content/test_content.yml
|
||||
- name: Content-source fixture tests
|
||||
hosts: localhost
|
||||
gather_facts: false
|
||||
connection: local
|
||||
vars:
|
||||
hypervisor_type: libvirt
|
||||
hypervisor_cfg: { folder: "" }
|
||||
vars_files:
|
||||
- content_fixtures.yml
|
||||
tasks:
|
||||
- name: Load global defaults (system_defaults, content_mirror_defaults, os maps)
|
||||
ansible.builtin.include_vars:
|
||||
file: ../../roles/global_defaults/defaults/main.yml
|
||||
|
||||
- name: Run each content fixture
|
||||
ansible.builtin.include_tasks: _assert_content.yml
|
||||
loop: "{{ content_fixtures }}"
|
||||
loop_control:
|
||||
loop_var: cf
|
||||
label: "{{ cf.name }}"
|
||||
Reference in New Issue
Block a user