Skip to content

Commit 8ae6ca1

Browse files
committed
tests/ansible: Spec.become_method() test & mitogen_via= fix.
ansible_become_method hostvar was not taken into account.
1 parent 4d33598 commit 8ae6ca1

5 files changed

Lines changed: 95 additions & 3 deletions

File tree

ansible_mitogen/transport_config.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -486,7 +486,11 @@ def become(self):
486486
return bool(self._become_user)
487487

488488
def become_method(self):
489-
return self._become_method or C.DEFAULT_BECOME_METHOD
489+
return (
490+
self._become_method or
491+
self._host_vars.get('ansible_become_method') or
492+
C.DEFAULT_BECOME_METHOD
493+
)
490494

491495
def become_user(self):
492496
return self._become_user

docs/changelog.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,8 +143,8 @@ Fixes
143143
``ansible_ssh_host`` parameter is respected when ``mitogen_via=`` is active.
144144

145145
* `21ad299d <https://github.com/dw/mitogen/commit/21ad299d>`_: the
146-
precedence of ``ansible_ssh_user`` and ``ansible_user`` was corrected when
147-
when ``mitogen_via=`` is active.
146+
precedence of ``ansible_ssh_user`` and ``ansible_user`` was corrected when
147+
when ``mitogen_via=`` is active.
148148

149149

150150
Thanks!

tests/ansible/hosts/transport_config.hosts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,7 @@ tc-password-explicit-both ansible_password=a.b.c ansible_ssh_pass=c.b.a
2727
# become()
2828
tc-become-unset
2929
tc-become-set
30+
31+
# become_method()
32+
tc-become-method-unset
33+
tc-become-method-su ansible_become_method=su

tests/ansible/integration/transport_config/all.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
- include: become.yml
2+
- include: become_method.yml
23
- include: password.yml
34
- include: python_path.yml
45
- include: remote_addr.yml
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
# Each case is followed by mitogen_via= case to test hostvars method.
2+
3+
4+
# No become-method set.
5+
- name: integration/transport_config/become-method.yml
6+
hosts: tc-become-method-unset
7+
become: true
8+
tasks:
9+
- include: ../_mitogen_only.yml
10+
- {mitogen_get_stack: {}, register: out}
11+
- assert:
12+
that:
13+
- out.result|length == 2
14+
- out.result[0].method == "ssh"
15+
- out.result[1].method == "sudo"
16+
17+
- hosts: tc-become-method-unset
18+
vars: {mitogen_via: becomeuser@tc-become-method-su}
19+
tasks:
20+
- include: ../_mitogen_only.yml
21+
- {mitogen_get_stack: {}, register: out}
22+
- assert:
23+
that:
24+
- out.result|length == 3
25+
- out.result[0].method == "ssh"
26+
- out.result[1].method == "su"
27+
- out.result[1].kwargs.username == "becomeuser"
28+
- out.result[2].method == "ssh"
29+
- out.result[2].kwargs.hostname == "tc-become-method-unset"
30+
31+
32+
# ansible_become_method=su
33+
- hosts: tc-become-method-su
34+
become: true
35+
become_user: becomeuser
36+
tasks:
37+
- include: ../_mitogen_only.yml
38+
- {mitogen_get_stack: {}, register: out}
39+
- assert:
40+
that:
41+
- out.result|length == 2
42+
- out.result[0].method == "ssh"
43+
- out.result[1].method == "su"
44+
- out.result[1].kwargs.username == "becomeuser"
45+
46+
- hosts: tc-become-method-su
47+
vars: {mitogen_via: tc-become-method-unset}
48+
become: true
49+
become_user: becomeuser
50+
tasks:
51+
- include: ../_mitogen_only.yml
52+
- {mitogen_get_stack: {}, register: out}
53+
- assert:
54+
that:
55+
- out.result|length == 3
56+
- out.result[0].method == "ssh"
57+
- out.result[0].kwargs.hostname == "tc-become-method-unset"
58+
59+
- out.result[1].method == "ssh"
60+
- out.result[1].kwargs.hostname == "tc-become-method-su"
61+
62+
- out.result[2].method == "su"
63+
- out.result[2].kwargs.username == "becomeuser"
64+
65+
66+
67+
# mitogen_via used to specify explicit become method
68+
- hosts: tc-become-method-unset
69+
vars: {mitogen_via: "doas:doasuser@tc-become-method-su"}
70+
tasks:
71+
- include: ../_mitogen_only.yml
72+
- {mitogen_get_stack: {}, register: out}
73+
- assert:
74+
that:
75+
- out.result|length == 3
76+
- out.result[0].method == "ssh"
77+
- out.result[0].kwargs.hostname == "tc-become-method-su"
78+
79+
- out.result[1].method == "doas"
80+
- out.result[1].kwargs.username == "doasuser"
81+
82+
- out.result[2].method == "ssh"
83+
- out.result[2].kwargs.hostname == "tc-become-method-unset"

0 commit comments

Comments
 (0)