-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add 'state' parameter for alternatives (#4557)
* Add 'activate' parameter for alternatives Allow alternatives to be installed without being set as the current selection. * add changelog fragment * Apply suggestions from code review Co-authored-by: Felix Fontein <[email protected]> * rename 'activate' -> 'selected' * rework 'selected' parameter -> 'state' * handle unsetting of currently selected alternative * add integration tests for 'state' parameter * fix linting issues * fix for Python 2.7 compatibility * Remove alternatives file. Co-authored-by: Felix Fontein <[email protected]>
- Loading branch information
1 parent
d7e5e85
commit 29c49fe
Showing
5 changed files
with
148 additions
and
8 deletions.
There are no files selected for viewing
2 changes: 2 additions & 0 deletions
2
changelogs/fragments/4557-alternatives-add-state-parameter.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
minor_changes: | ||
- alternatives - add ``state`` parameter, which provides control over whether the alternative should be set as the active selection for its alternatives group (https://github.com/ansible-collections/community.general/issues/4543, https://github.com/ansible-collections/community.general/pull/4557). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
71 changes: 71 additions & 0 deletions
71
tests/integration/targets/alternatives/tasks/tests_state.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
# Add a few dummy alternatives with state = present and make sure that the | ||
# group is in 'auto' mode and the highest priority alternative is selected. | ||
- name: Add some dummy alternatives with state = present | ||
alternatives: | ||
name: dummy | ||
path: "/usr/bin/dummy{{ item.n }}" | ||
link: /usr/bin/dummy | ||
priority: "{{ item.priority }}" | ||
state: present | ||
loop: | ||
- { n: 1, priority: 50 } | ||
- { n: 2, priority: 70 } | ||
- { n: 3, priority: 25 } | ||
|
||
- name: Ensure that the link group is in auto mode | ||
shell: 'head -n1 {{ alternatives_dir }}/dummy | grep "^auto$"' | ||
|
||
# Execute current selected 'dummy' and ensure it's the alternative we expect | ||
- name: Execute the current dummy command | ||
shell: dummy | ||
register: cmd | ||
|
||
- name: Ensure that the expected command was executed | ||
assert: | ||
that: | ||
- cmd.stdout == "dummy2" | ||
|
||
# Add another alternative with state = 'selected' and make sure that | ||
# this change results in the group being set to manual mode, and the | ||
# new alternative being the selected one. | ||
- name: Add another dummy alternative with state = selected | ||
alternatives: | ||
name: dummy | ||
path: /usr/bin/dummy4 | ||
link: /usr/bin/dummy | ||
priority: 10 | ||
state: selected | ||
|
||
- name: Ensure that the link group is in manual mode | ||
shell: 'head -n1 {{ alternatives_dir }}/dummy | grep "^manual$"' | ||
|
||
- name: Execute the current dummy command | ||
shell: dummy | ||
register: cmd | ||
|
||
- name: Ensure that the expected command was executed | ||
assert: | ||
that: | ||
- cmd.stdout == "dummy4" | ||
|
||
# Set the currently selected alternative to state = 'present' (was previously | ||
# selected), and ensure that this results in the group being set to 'auto' | ||
# mode, and the highest priority alternative is selected. | ||
- name: Set current selected dummy to state = present | ||
alternatives: | ||
name: dummy | ||
path: /usr/bin/dummy4 | ||
link: /usr/bin/dummy | ||
state: present | ||
|
||
- name: Ensure that the link group is in auto mode | ||
shell: 'head -n1 {{ alternatives_dir }}/dummy | grep "^auto$"' | ||
|
||
- name: Execute the current dummy command | ||
shell: dummy | ||
register: cmd | ||
|
||
- name: Ensure that the expected command was executed | ||
assert: | ||
that: | ||
- cmd.stdout == "dummy2" |