|
1 | 1 | ---
|
2 | 2 | - name: Get information for each user
|
3 | 3 | uri:
|
4 |
| - url: "{{ pulp_user_url }}?username={{ item.username }}" |
| 4 | + url: "{{ pulp_user_url }}?username={{ pulp_users[user_index].username }}" |
5 | 5 | user: "{{ pulp_username }}"
|
6 | 6 | password: "{{ pulp_password }}"
|
7 | 7 | method: GET
|
8 | 8 | status_code: 200
|
9 | 9 | force_basic_auth: true
|
10 |
| - loop: "{{ pulp_users }}" |
| 10 | + loop: "{{ pulp_users | map(attribute='username') }}" |
| 11 | + loop_control: |
| 12 | + index_var: user_index |
11 | 13 | register: users_get_result
|
12 | 14 |
|
13 | 15 | - name: Reset users facts
|
|
18 | 20 |
|
19 | 21 | - name: Set users to delete fact
|
20 | 22 | set_fact:
|
21 |
| - remove_users: "{{ remove_users + [user.json.results[0]] }}" |
22 |
| - loop: "{{ users_get_result.results }}" |
| 23 | + remove_users: "{{ remove_users + [users_get_result.results[user_index].json.results[0]] }}" |
| 24 | + loop: "{{ users_get_result.results | map(attribute='item') }}" |
23 | 25 | loop_control:
|
24 |
| - loop_var: "user" |
25 |
| - label: "{{ user.item.username }}" |
| 26 | + index_var: user_index |
26 | 27 | when:
|
27 |
| - - user.json.count == 1 |
28 |
| - - user.item.state is defined |
29 |
| - - user.item.state == "absent" |
| 28 | + - users_get_result.results[user_index].json.count == 1 |
| 29 | + - pulp_users[user_index].state is defined |
| 30 | + - pulp_users[user_index].state == "absent" |
30 | 31 |
|
31 | 32 | - name: Set users to create fact
|
32 | 33 | set_fact:
|
33 |
| - create_users: "{{ create_users + [user.item] }}" |
34 |
| - loop: "{{ users_get_result.results }}" |
| 34 | + create_users: "{{ create_users + [pulp_users[user_index]] }}" |
| 35 | + loop: "{{ users_get_result.results | map(attribute='item') }}" |
35 | 36 | loop_control:
|
36 |
| - loop_var: "user" |
37 |
| - label: "{{ user.item.username }}" |
| 37 | + index_var: user_index |
38 | 38 | when:
|
39 |
| - - user.json.count == 0 |
40 |
| - - user.item.state is not defined or user.item.state != "absent" |
| 39 | + - users_get_result.results[user_index].json.count == 0 |
| 40 | + - pulp_users[user_index].state is not defined or pulp_users[user_index].state != "absent" |
41 | 41 |
|
42 | 42 | - name: Set users to update fact
|
43 | 43 | set_fact:
|
44 |
| - update_users: "{{ update_users + [user.json.results[0] | combine(user.item) | combine({'existing_groups': user.json.results[0]['groups']}) ] }}" |
45 |
| - loop: "{{ users_get_result.results }}" |
| 44 | + update_users: >- |
| 45 | + {{- update_users + [users_get_result.results[user_index].json.results[0] |
| 46 | + | combine(pulp_users[user_index]) |
| 47 | + | combine({'existing_groups': users_get_result.results[user_index].json.results[0]['groups']})] -}} |
| 48 | + loop: "{{ users_get_result.results | map(attribute='item') }}" |
46 | 49 | loop_control:
|
47 |
| - loop_var: "user" |
48 |
| - label: "{{ user.item.username }}" |
| 50 | + index_var: user_index |
49 | 51 | when:
|
50 |
| - - user.json.count == 1 |
51 |
| - - user.item.state is not defined or user.item.state != "absent" |
| 52 | + - users_get_result.results[user_index].json.count == 1 |
| 53 | + - pulp_users[user_index].state is not defined or pulp_users[user_index].state != "absent" |
| 54 | + - >- |
| 55 | + users_get_result.results[user_index].json.results[0].username != pulp_users[user_index].username or |
| 56 | + (pulp_users[user_index].first_name is defined and |
| 57 | + users_get_result.results[user_index].json.results[0].first_name != pulp_users[user_index].first_name) or |
| 58 | + (pulp_users[user_index].last_name is defined and |
| 59 | + users_get_result.results[user_index].json.results[0].last_name != pulp_users[user_index].last_name) or |
| 60 | + (pulp_users[user_index].email is defined and |
| 61 | + users_get_result.results[user_index].json.results[0].email != pulp_users[user_index].email) or |
| 62 | + (pulp_users[user_index].is_active is defined and |
| 63 | + users_get_result.results[user_index].json.results[0].is_active != pulp_users[user_index].is_active) or |
| 64 | + (pulp_users[user_index].is_staff is defined and |
| 65 | + users_get_result.results[user_index].json.results[0].is_staff != pulp_users[user_index].is_staff) or |
| 66 | + (pulp_users[user_index].groups is defined and |
| 67 | + users_get_result.results[user_index].json.results[0].groups | map(attribute='name') | list != pulp_users[user_index].groups) or |
| 68 | + pulp_users[user_index].password is defined |
52 | 69 |
|
53 | 70 | - name: Create users
|
54 | 71 | uri:
|
|
59 | 76 | method: POST
|
60 | 77 | status_code: 201
|
61 | 78 | body:
|
62 |
| - username: "{{ item.username }}" |
63 |
| - password: "{{ item.password | default(None) }}" |
64 |
| - first_name: "{{ item.first_name | default(None) }}" |
65 |
| - last_name: "{{ item.last_name | default(None) }}" |
66 |
| - email: "{{ item.email | default(None) }}" |
67 |
| - is_staff: "{{ item.is_staff | default(None) }}" |
68 |
| - is_active: "{{ item.is_active | default(None) }}" |
| 79 | + username: "{{ create_users[user_index].username }}" |
| 80 | + password: "{{ create_users[user_index].password | default(None) }}" |
| 81 | + first_name: "{{ create_users[user_index].first_name | default(None) }}" |
| 82 | + last_name: "{{ create_users[user_index].last_name | default(None) }}" |
| 83 | + email: "{{ create_users[user_index].email | default(None) }}" |
| 84 | + is_staff: "{{ create_users[user_index].is_staff | default(None) }}" |
| 85 | + is_active: "{{ create_users[user_index].is_active | default(None) }}" |
69 | 86 | body_format: form-urlencoded
|
70 |
| - loop: "{{ create_users }}" |
| 87 | + loop: "{{ create_users | map(attribute='username') }}" |
71 | 88 | loop_control:
|
72 |
| - label: "{{ item.username }}" |
| 89 | + index_var: user_index |
73 | 90 | changed_when: true
|
74 | 91 |
|
75 | 92 | - name: Update existing users
|
76 | 93 | uri:
|
77 |
| - url: "{{ pulp_url }}{{ item.pulp_href }}" |
| 94 | + url: "{{ pulp_url }}{{ update_users[user_index].pulp_href }}" |
78 | 95 | user: "{{ pulp_username }}"
|
79 | 96 | password: "{{ pulp_password }}"
|
80 | 97 | force_basic_auth: true
|
81 | 98 | method: PATCH
|
82 | 99 | body:
|
83 |
| - username: "{{ item.username }}" |
84 |
| - password: "{{ item.password | default(None) }}" |
85 |
| - first_name: "{{ item.first_name | default(None) }}" |
86 |
| - last_name: "{{ item.last_name | default(None) }}" |
87 |
| - email: "{{ item.email | default(None) }}" |
88 |
| - is_staff: "{{ item.is_staff | default(None) }}" |
89 |
| - is_active: "{{ item.is_active | default(None) }}" |
| 100 | + username: "{{ update_users[user_index].username }}" |
| 101 | + password: "{{ update_users[user_index].password | default(None) }}" |
| 102 | + first_name: "{{ update_users[user_index].first_name | default(None) }}" |
| 103 | + last_name: "{{ update_users[user_index].last_name | default(None) }}" |
| 104 | + email: "{{ update_users[user_index].email | default(None) }}" |
| 105 | + is_staff: "{{ update_users[user_index].is_staff | default(None) }}" |
| 106 | + is_active: "{{ update_users[user_index].is_active | default(None) }}" |
90 | 107 | body_format: form-urlencoded
|
91 |
| - loop: "{{ update_users }}" |
| 108 | + loop: "{{ update_users | map(attribute='username') }}" |
92 | 109 | loop_control:
|
93 |
| - label: "{{ item.username }}" |
| 110 | + index_var: user_index |
94 | 111 | register: result
|
95 | 112 | changed_when: true
|
96 | 113 |
|
97 | 114 | - name: Add or remove user from group(s)
|
| 115 | + vars: |
| 116 | + exist_users: "{{ create_users + update_users }}" |
98 | 117 | include_tasks: user_groups/add_or_remove_users.yml
|
99 | 118 | # All users that aren't state: absent are in play here
|
100 |
| - loop: "{{ create_users + update_users }}" |
| 119 | + loop: "{{ exist_users | map(attribute='username') }}" |
101 | 120 | loop_control:
|
102 |
| - loop_var: user |
103 |
| - label: "{{ user.username }}" |
| 121 | + index_var: user_index |
104 | 122 |
|
105 | 123 | - name: Delete users
|
106 | 124 | uri:
|
107 |
| - url: "{{ pulp_url }}{{ item.pulp_href }}" |
| 125 | + url: "{{ pulp_url }}{{ remove_users[user_index].pulp_href }}" |
108 | 126 | user: "{{ pulp_username }}"
|
109 | 127 | password: "{{ pulp_password }}"
|
110 | 128 | force_basic_auth: true
|
111 | 129 | method: DELETE
|
112 | 130 | status_code: 204
|
113 | 131 | body_format: form-urlencoded
|
114 |
| - loop: "{{ remove_users }}" |
| 132 | + loop: "{{ remove_users | map(attribute='username') }}" |
115 | 133 | loop_control:
|
116 |
| - label: "{{ item.username }}" |
| 134 | + index_var: user_index |
117 | 135 | changed_when: true
|
0 commit comments