Skip to content

Commit

Permalink
Add proper cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
spetrosi committed Feb 8, 2024
1 parent 1e7eed7 commit 97f409f
Show file tree
Hide file tree
Showing 4 changed files with 346 additions and 324 deletions.
47 changes: 47 additions & 0 deletions tests/tasks/clone_kernel.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
- name: Set fact with the default kernel to use for clones
set_fact:
test_kernel: "{{ bootloader_facts | rejectattr('initrd', 'undefined')
| selectattr('default') | first }}"

- name: Clone test_kernel kernel and initrd for test purposes
copy:
src: "{{ item.src }}"
remote_src: true
dest: "{{ item.dest }}"
mode: preserve
loop:
- src: "{{ test_kernel.kernel }}"
dest: "{{ test_kernel.kernel }}_clone{{ __bootloader_clone_num }}"
- src: "{{ test_kernel.initrd | regex_replace(' .*$', '') }}"
dest: >-
{{ test_kernel.initrd |
regex_replace(' .*$', '') }}_clone{{ __bootloader_clone_num }}
- name: Create Clone{{ __bootloader_clone_num }} kernel with copy_defaults=true
vars:
bootloader_settings:
- kernel:
path: "{{ test_kernel.kernel }}_clone{{ __bootloader_clone_num }}"
initrd: "{{ test_kernel.initrd |
regex_replace(' .*$', '') }}_clone{{ __bootloader_clone_num }}"
title: Clone{{ __bootloader_clone_num }}
options:
- name: test
value: kernel
state: present
- copy_default: "{{ __bootloader_copy_default }}"
include_role:
name: linux-system-roles.bootloader

- name: Flush handlers
meta: flush_handlers

- name: Ensure bootloader_reboot_required is not set to true
assert:
that: not bootloader_reboot_required

- name: Get bootloader_facts
vars:
bootloader_gather_facts: true
include_role:
name: linux-system-roles.bootloader
250 changes: 95 additions & 155 deletions tests/tests_add_rm.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,158 +8,98 @@
vars:
bootloader_reboot_ok: true
tasks:
- name: Get bootloader_facts
vars:
bootloader_gather_facts: true
include_role:
name: linux-system-roles.bootloader

- name: Skip test on ostree systems
meta: end_host
when: __bootloader_is_ostree

# Images in CI might have a grub timeout set to a different other than the
# default 5 value.
# In this case, the above invocation require handlers to be flushed.
- name: Flush handlers
meta: flush_handlers

- name: Set fact with the default kernel to use for clones
set_fact:
test_kernel: "{{ bootloader_facts | rejectattr('initrd', 'undefined')
| selectattr('default') | first }}"

- name: Clone test_kernel kernel and initrd for test purposes
copy:
src: "{{ item.src }}"
remote_src: true
dest: "{{ item.dest }}"
mode: preserve
loop:
- src: "{{ test_kernel.kernel }}"
dest: "{{ test_kernel.kernel }}_clone1"
- src: "{{ test_kernel.initrd | regex_replace(' .*$', '') }}"
dest: "{{ test_kernel.initrd | regex_replace(' .*$', '') }}_clone1"
- src: "{{ test_kernel.kernel }}"
dest: "{{ test_kernel.kernel }}_clone2"
- src: "{{ test_kernel.initrd | regex_replace(' .*$', '') }}"
dest: "{{ test_kernel.initrd | regex_replace(' .*$', '') }}_clone2"

- name: Create Clone1 kernel with copy_defaults=true
vars:
bootloader_settings:
- kernel:
path: "{{ test_kernel.kernel }}_clone1"
initrd: "{{ test_kernel.initrd |
regex_replace(' .*$', '') }}_clone1"
title: Clone1
options:
- name: test
value: setting
state: present
- copy_default: true
include_role:
name: linux-system-roles.bootloader

- name: Flush handlers
meta: flush_handlers

- name: Ensure bootloader_reboot_required is not set to true
assert:
that: not bootloader_reboot_required

- name: Get bootloader_facts
vars:
bootloader_gather_facts: true
include_role:
name: linux-system-roles.bootloader

- name: Verify settings
vars:
__default_args: "{{
(bootloader_facts | selectattr('title', 'defined') |
selectattr('default') |
first).args }}"
assert:
that: >-
(bootloader_facts | selectattr('title', 'defined') |
selectattr('title', 'search', 'Clone1') |
first).args == __default_args ~ ' test=setting'
- name: Remove Clone1 kernel with 3 kernel keys
vars:
bootloader_gather_facts: true
bootloader_settings:
- kernel:
path: "{{ test_kernel.kernel }}_clone1"
initrd: "{{ test_kernel.initrd |
regex_replace(' .*$', '') }}_clone1"
title: Clone1
options:
- name: console
value: tty0
state: present
- copy_default: true
state: absent
include_role:
name: linux-system-roles.bootloader

- name: Verify that Clone1 kernel is removed
assert:
that: bootloader_facts | selectattr('title', 'defined') |
selectattr('title', 'search', 'Clone1') |
list | length == 0

- name: Create clone2 kernel without copy_defaults=true
vars:
bootloader_settings:
- kernel:
path: "{{ test_kernel.kernel }}_clone2"
initrd: "{{ test_kernel.initrd |
regex_replace(' .*$', '') }}_clone2"
title: Clone2
options:
- name: console
value: tty0
state: present
include_role:
name: linux-system-roles.bootloader

- name: Flush handlers
meta: flush_handlers

- name: Ensure bootloader_reboot_required is not set to true
assert:
that: not bootloader_reboot_required

- name: Get bootloader_facts
vars:
bootloader_gather_facts: true
include_role:
name: linux-system-roles.bootloader

- name: Verify settings
assert:
that: >-
(bootloader_facts | selectattr('title', 'defined') |
selectattr('title', 'search', 'Clone2') |
first).args == 'console=tty0'
- name: Remove Clone2 kernel with kernel path
vars:
bootloader_gather_facts: true
bootloader_settings:
- kernel:
path: "{{ test_kernel.kernel }}_clone2"
initrd: "{{ test_kernel.initrd |
regex_replace(' .*$', '') }}_clone2"
title: Clone2
state: absent
include_role:
name: linux-system-roles.bootloader

- name: Verify that Clone2 kernel is removed
assert:
that: bootloader_facts | selectattr('title', 'defined') |
selectattr('title', 'search', 'Clone2') |
list | length == 0
- name: Run in a block to clean up afterwards
block:
- name: Get bootloader_facts
vars:
bootloader_gather_facts: true
include_role:
name: linux-system-roles.bootloader

- name: Skip test on ostree systems
meta: end_host
when: __bootloader_is_ostree

# Images in CI might have a grub timeout set to a different other than the
# default 5 value.
# In this case, the above invocation require handlers to be flushed.
- name: Flush handlers
meta: flush_handlers

- name: Clone kernel to Clone1
vars:
__bootloader_clone_num: 1
__bootloader_copy_default: true
include_tasks: tasks/clone_kernel.yml

- name: Verify settings
vars:
__default_args: "{{
(bootloader_facts | selectattr('title', 'defined') |
selectattr('default') |
first).args }}"
assert:
that: >-
(bootloader_facts | selectattr('title', 'defined') |
selectattr('title', 'search', 'Clone1') |
first).args == __default_args ~ ' test=kernel'
- name: Remove Clone1 kernel with 3 kernel keys
vars:
bootloader_gather_facts: true
bootloader_settings:
- kernel:
path: "{{ test_kernel.kernel }}_clone1"
initrd: "{{ test_kernel.initrd |
regex_replace(' .*$', '') }}_clone1"
title: Clone1
options:
- name: console
value: tty0
state: present
- copy_default: true
state: absent
include_role:
name: linux-system-roles.bootloader

- name: Verify that Clone1 kernel is removed
assert:
that: bootloader_facts | selectattr('title', 'defined') |
selectattr('title', 'search', 'Clone1') |
list | length == 0

- name: Clone kernel to Clone2
vars:
__bootloader_clone_num: 2
__bootloader_copy_default: false
include_tasks: tasks/clone_kernel.yml

- name: Verify settings
assert:
that: >-
(bootloader_facts | selectattr('title', 'defined') |
selectattr('title', 'search', 'Clone2') |
first).args == 'test=kernel'
- name: Remove Clone2 kernel with kernel path
vars:
bootloader_gather_facts: true
bootloader_settings:
- kernel:
path: "{{ test_kernel.kernel }}_clone2"
state: absent
include_role:
name: linux-system-roles.bootloader

- name: Verify that Clone2 kernel is removed
assert:
that: bootloader_facts | selectattr('title', 'defined') |
selectattr('title', 'search', 'Clone2') |
list | length == 0
always:
- name: Remove cloned kernels
command: >-
grubby --remove-kernel={{ test_kernel.kernel }}_clone{{ item }}
loop:
- 1
- 2
56 changes: 32 additions & 24 deletions tests/tests_password.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,31 +4,39 @@
hosts: all
gather_facts: false
tasks:
- name: Set boot loader password
vars:
bootloader_password: test-pass
include_role:
name: linux-system-roles.bootloader
- name: Run in a block to clean up afterwards
block:
- name: Set boot loader password
vars:
bootloader_password: test-pass
include_role:
name: linux-system-roles.bootloader

- name: Get contents of {{ __bootloader_user_conf }}
command: cat {{ __bootloader_user_conf }}
failed_when: >-
not (__bootloader_user_conf_content.stdout |
regex_search('^GRUB2_PASSWORD=grub\.pbkdf2\.sha512\.10000\..*'))
register: __bootloader_user_conf_content
changed_when: false
- name: Get contents of {{ __bootloader_user_conf }}
command: cat {{ __bootloader_user_conf }}
failed_when: >-
not (__bootloader_user_conf_content.stdout |
regex_search('^GRUB2_PASSWORD=grub\.pbkdf2\.sha512\.10000\..*'))
register: __bootloader_user_conf_content
changed_when: false

- name: Remove boot loader password
vars:
bootloader_remove_password: true
include_role:
name: linux-system-roles.bootloader
- name: Remove boot loader password
vars:
bootloader_remove_password: true
include_role:
name: linux-system-roles.bootloader

- name: Get stat of {{ __bootloader_user_conf }}
stat:
path: "{{ __bootloader_user_conf }}"
register: __bootloader_user_conf_stat
- name: Get stat of {{ __bootloader_user_conf }}
stat:
path: "{{ __bootloader_user_conf }}"
register: __bootloader_user_conf_stat

- name: Verify that user conf doesn't exist
assert:
that: not __bootloader_user_conf_stat.stat.exists
- name: Verify that user conf doesn't exist
assert:
that: not __bootloader_user_conf_stat.stat.exists
always:
- name: Remove boot loader password
vars:
bootloader_remove_password: true
include_role:
name: linux-system-roles.bootloader
Loading

0 comments on commit 97f409f

Please sign in to comment.