From d9c05675a7e87becae98047b3347f95f2a47a852 Mon Sep 17 00:00:00 2001 From: Fahrudin Halilovic <fahrudin.halilovic@ess.eu> Date: Mon, 11 Nov 2024 16:12:21 +0100 Subject: [PATCH] get max page size and use it in API calls to AWX --- netbox_awx_plugin/models.py | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/netbox_awx_plugin/models.py b/netbox_awx_plugin/models.py index 664da34..6f9221d 100644 --- a/netbox_awx_plugin/models.py +++ b/netbox_awx_plugin/models.py @@ -57,14 +57,30 @@ class AWXInventory(NetBoxModel): else: return None + def get_max_page_size(self): + url = urljoin( + self.awx.url, + f"/api/v2/inventories/{self.inventory_id}/hosts/", + ) + r = requests.options( + url=url, + headers=self.awx.get_headers(), + verify=False, + ) + r.raise_for_status() + data = r.json() + return data.get("max_page_size") + + def get_all_hosts(self): """ Retrieves all hosts from the AWX inventory. """ hosts = {} page = 1 + max_page_size = self.get_max_page_size() while True: - params = {"page": page} + params = {"page": page, "page_size": max_page_size} r = requests.get( url=urljoin( self.awx.url, @@ -141,8 +157,9 @@ class AWXInventory(NetBoxModel): """ groups = {} page = 1 + max_page_size = self.get_max_page_size() while True: - params = {"page": page} + params = {"page": page, "page_size": max_page_size} r = requests.get( url=urljoin( self.awx.url, -- GitLab