From 915deca78c546bde33ada5d98df068a180273f32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adria=CC=80=20Sala?= Date: Mon, 16 Feb 2026 17:44:02 +0100 Subject: [PATCH] fix: awxkit user creation through gw --- awxkit/awxkit/api/client.py | 5 +++++ awxkit/awxkit/api/pages/users.py | 18 +++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/awxkit/awxkit/api/client.py b/awxkit/awxkit/api/client.py index 44df4fd4eb..1e901136fd 100644 --- a/awxkit/awxkit/api/client.py +++ b/awxkit/awxkit/api/client.py @@ -58,6 +58,11 @@ class Connection(object): self.session_cookie_name = historical_response.headers.get('X-API-Session-Cookie-Name') self.session_id = self.session.cookies.get(self.session_cookie_name, None) + if self.session_id is None and config.get("api_base_path") == "/api/controller/": + # Use gateway session cookie name if controller session cookie name is not found + self.session_cookie_name = "gateway_sessionid" + self.session_id = self.session.cookies.get(self.session_cookie_name, None) + self.uses_session_cookie = True else: self.session.auth = (username, password) diff --git a/awxkit/awxkit/api/pages/users.py b/awxkit/awxkit/api/pages/users.py index bc9731e00a..7b41011bdc 100644 --- a/awxkit/awxkit/api/pages/users.py +++ b/awxkit/awxkit/api/pages/users.py @@ -31,7 +31,23 @@ class User(HasCreate, base.Base): payload = self.create_payload(username=username, password=password, **kwargs) self.password = payload.password - self.update_identity(Users(self.connection).post(payload)) + ctrl_users_api = Users(self.connection) + # Check if API base path is set to controller, then use gateway endpoint + if config.get("api_base_path") == "/api/controller/": + # Use gateway endpoint for user creation + gw_users_api = Users(self.connection) + gw_users_api.endpoint = "/api/gateway/v1/users/" + # Cleanup controller attributes + payload["is_platform_auditor"] = payload.get("is_system_auditor") + payload.pop("is_system_auditor") + # Create gw user + gw_user = gw_users_api.post(payload) + user = ctrl_users_api.get(username=gw_user.username).results.pop() + user.json["password"] = payload.password + self.update_identity(user) + else: + # Use default endpoint + self.update_identity(ctrl_users_api.post(payload)) if organization: organization.add_user(self)