@@ 208-304 (lines=97) @@ | ||
205 | cmd.set_attribute("user_id", user_id) |
|
206 | return self._send_xml_command(cmd) |
|
207 | ||
208 | def modify_user( |
|
209 | self, |
|
210 | user_id: str = None, |
|
211 | name: str = None, |
|
212 | *, |
|
213 | new_name: Optional[str] = None, |
|
214 | comment: Optional[str] = None, |
|
215 | password: Optional[str] = None, |
|
216 | auth_source: Optional[UserAuthType] = None, |
|
217 | role_ids: Optional[List[str]] = None, |
|
218 | hosts: Optional[List[str]] = None, |
|
219 | hosts_allow: Optional[bool] = False, |
|
220 | ifaces: Optional[List[str]] = None, |
|
221 | ifaces_allow: Optional[bool] = False, |
|
222 | group_ids: Optional[List[str]] = None, |
|
223 | ) -> Any: |
|
224 | """Modifies an existing user. Most of the fields need to be supplied |
|
225 | for changing a single field even if no change is wanted for those. |
|
226 | Else empty values are inserted for the missing fields instead. |
|
227 | Arguments: |
|
228 | user_id: UUID of the user to be modified. Overrides name element |
|
229 | argument. |
|
230 | name: The name of the user to be modified. Either user_id or name |
|
231 | must be passed. |
|
232 | new_name: The new name for the user. |
|
233 | comment: Comment on the user. |
|
234 | password: The password for the user. |
|
235 | auth_source: Source allowed for authentication for this user. |
|
236 | roles_id: List of roles UUIDs for the user. |
|
237 | hosts: User access rules: List of hosts. |
|
238 | hosts_allow: Defines how the hosts list is to be interpreted. |
|
239 | If False (default) the list is treated as a deny list. |
|
240 | All hosts are allowed by default except those provided by |
|
241 | the hosts parameter. If True the list is treated as a |
|
242 | allow list. All hosts are denied by default except those |
|
243 | provided by the hosts parameter. |
|
244 | ifaces: User access rules: List of ifaces. |
|
245 | ifaces_allow: Defines how the ifaces list is to be interpreted. |
|
246 | If False (default) the list is treated as a deny list. |
|
247 | All ifaces are allowed by default except those provided by |
|
248 | the ifaces parameter. If True the list is treated as a |
|
249 | allow list. All ifaces are denied by default except those |
|
250 | provided by the ifaces parameter. |
|
251 | group_ids: List of group UUIDs for the user. |
|
252 | ||
253 | Returns: |
|
254 | The response. See :py:meth:`send_command` for details. |
|
255 | """ |
|
256 | if not user_id and not name: |
|
257 | raise RequiredArgument( |
|
258 | function=self.modify_user.__name__, argument='user_id or name' |
|
259 | ) |
|
260 | ||
261 | cmd = XmlCommand("modify_user") |
|
262 | ||
263 | if user_id: |
|
264 | cmd.set_attribute("user_id", user_id) |
|
265 | else: |
|
266 | cmd.add_element("name", name) |
|
267 | ||
268 | if new_name: |
|
269 | cmd.add_element("new_name", new_name) |
|
270 | ||
271 | if role_ids: |
|
272 | for role in role_ids: |
|
273 | cmd.add_element("role", attrs={"id": role}) |
|
274 | ||
275 | if hosts: |
|
276 | cmd.add_element( |
|
277 | "hosts", |
|
278 | to_comma_list(hosts), |
|
279 | attrs={"allow": to_bool(hosts_allow)}, |
|
280 | ) |
|
281 | ||
282 | if ifaces: |
|
283 | cmd.add_element( |
|
284 | "ifaces", |
|
285 | to_comma_list(ifaces), |
|
286 | attrs={"allow": to_bool(ifaces_allow)}, |
|
287 | ) |
|
288 | ||
289 | if comment: |
|
290 | cmd.add_element("comment", comment) |
|
291 | ||
292 | if password: |
|
293 | cmd.add_element("password", password) |
|
294 | ||
295 | if auth_source: |
|
296 | _xmlauthsrc = cmd.add_element("sources") |
|
297 | _xmlauthsrc.add_element("source", auth_source.value) |
|
298 | ||
299 | if group_ids: |
|
300 | _xmlgroups = cmd.add_element("groups") |
|
301 | for group_id in group_ids: |
|
302 | _xmlgroups.add_element("group", attrs={"id": group_id}) |
|
303 | ||
304 | return self._send_xml_command(cmd) |
|
305 |
@@ 34-126 (lines=93) @@ | ||
31 | ||
32 | ||
33 | class UsersMixin(Gmp208UsersMixin): |
|
34 | def modify_user( |
|
35 | self, |
|
36 | user_id: str = None, |
|
37 | *, |
|
38 | name: Optional[str] = None, |
|
39 | comment: Optional[str] = None, |
|
40 | password: Optional[str] = None, |
|
41 | auth_source: Optional[UserAuthType] = None, |
|
42 | role_ids: Optional[List[str]] = None, |
|
43 | hosts: Optional[List[str]] = None, |
|
44 | hosts_allow: Optional[bool] = False, |
|
45 | ifaces: Optional[List[str]] = None, |
|
46 | ifaces_allow: Optional[bool] = False, |
|
47 | group_ids: Optional[List[str]] = None, |
|
48 | ) -> Any: |
|
49 | ||
50 | """Modifies an existing user. Most of the fields need to be supplied |
|
51 | for changing a single field even if no change is wanted for those. |
|
52 | Else empty values are inserted for the missing fields instead. |
|
53 | ||
54 | Arguments: |
|
55 | user_id: UUID of the user to be modified. |
|
56 | name: The new name for the user. |
|
57 | comment: Comment on the user. |
|
58 | password: The password for the user. |
|
59 | auth_source: Source allowed for authentication for this user. |
|
60 | roles_id: List of roles UUIDs for the user. |
|
61 | hosts: User access rules: List of hosts. |
|
62 | hosts_allow: Defines how the hosts list is to be interpreted. |
|
63 | If False (default) the list is treated as a deny list. |
|
64 | All hosts are allowed by default except those provided by |
|
65 | the hosts parameter. If True the list is treated as a |
|
66 | allow list. All hosts are denied by default except those |
|
67 | provided by the hosts parameter. |
|
68 | ifaces: User access rules: List of ifaces. |
|
69 | ifaces_allow: Defines how the ifaces list is to be interpreted. |
|
70 | If False (default) the list is treated as a deny list. |
|
71 | All ifaces are allowed by default except those provided by |
|
72 | the ifaces parameter. If True the list is treated as a |
|
73 | allow list. All ifaces are denied by default except those |
|
74 | provided by the ifaces parameter. |
|
75 | group_ids: List of group UUIDs for the user. |
|
76 | ||
77 | Returns: |
|
78 | The response. See :py:meth:`send_command` for details. |
|
79 | """ |
|
80 | if not user_id: |
|
81 | raise RequiredArgument( |
|
82 | function=self.modify_user.__name__, argument='user_id' |
|
83 | ) |
|
84 | ||
85 | cmd = XmlCommand("modify_user") |
|
86 | ||
87 | if user_id: |
|
88 | cmd.set_attribute("user_id", user_id) |
|
89 | ||
90 | if name: |
|
91 | cmd.add_element("new_name", name) |
|
92 | ||
93 | if role_ids: |
|
94 | for role in role_ids: |
|
95 | cmd.add_element("role", attrs={"id": role}) |
|
96 | ||
97 | if hosts: |
|
98 | cmd.add_element( |
|
99 | "hosts", |
|
100 | to_comma_list(hosts), |
|
101 | attrs={"allow": to_bool(hosts_allow)}, |
|
102 | ) |
|
103 | ||
104 | if ifaces: |
|
105 | cmd.add_element( |
|
106 | "ifaces", |
|
107 | to_comma_list(ifaces), |
|
108 | attrs={"allow": to_bool(ifaces_allow)}, |
|
109 | ) |
|
110 | ||
111 | if comment: |
|
112 | cmd.add_element("comment", comment) |
|
113 | ||
114 | if password: |
|
115 | cmd.add_element("password", password) |
|
116 | ||
117 | if auth_source: |
|
118 | _xmlauthsrc = cmd.add_element("sources") |
|
119 | _xmlauthsrc.add_element("source", auth_source.value) |
|
120 | ||
121 | if group_ids: |
|
122 | _xmlgroups = cmd.add_element("groups") |
|
123 | for group_id in group_ids: |
|
124 | _xmlgroups.add_element("group", attrs={"id": group_id}) |
|
125 | ||
126 | return self._send_xml_command(cmd) |
|
127 |