From d470c60d369b160e116d519c71e9b4c02332110e Mon Sep 17 00:00:00 2001 From: Mark Powers Date: Thu, 31 Jul 2025 19:30:59 +0000 Subject: [PATCH 1/3] Add lease list --all-tenants option --- blazarclient/v1/leases.py | 10 ++++++++-- blazarclient/v1/shell_commands/leases.py | 11 +++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/blazarclient/v1/leases.py b/blazarclient/v1/leases.py index b0d802f..47950b3 100644 --- a/blazarclient/v1/leases.py +++ b/blazarclient/v1/leases.py @@ -88,9 +88,15 @@ def delete(self, lease_id): """Deletes lease with specified ID.""" resp, body = self.request_manager.delete('/leases/%s' % lease_id) - def list(self, sort_by=None): + def list(self, sort_by=None, all_tenants=False): """List all leases.""" - resp, body = self.request_manager.get('/leases') + url = '/leases' + query_parts = [] + if all_tenants: + query_parts.append("all_tenants=True") + if query_parts: + url += "?" + "&".join(query_parts) + resp, body = self.request_manager.get(url) leases = body['leases'] if sort_by: leases = sorted(leases, key=lambda lease: lease[sort_by]) diff --git a/blazarclient/v1/shell_commands/leases.py b/blazarclient/v1/shell_commands/leases.py index 19d034f..c3ad765 100644 --- a/blazarclient/v1/shell_commands/leases.py +++ b/blazarclient/v1/shell_commands/leases.py @@ -108,8 +108,19 @@ def get_parser(self, prog_name): '--user', metavar="", help='User ID to filter leases by', ) + parser.add_argument( + '--all-tenants', + action='store_true', + help='List leases from all projects (admin only).', + default=False + ) return parser + def args2body(self, parsed_args): + params = super(ListLeases, self).args2body(parsed_args) + params["all_tenants"] = parsed_args.all_tenants + return params + def get_data(self, parsed_args): if parsed_args.project_id: self._filters.append( From 1b2766084969dc8af21bbe04351417490fc7a2c1 Mon Sep 17 00:00:00 2001 From: Mark Powers Date: Fri, 1 Aug 2025 21:12:14 +0000 Subject: [PATCH 2/3] Add --marker and --limit in lease list API --- blazarclient/v1/leases.py | 6 +++++- blazarclient/v1/shell_commands/leases.py | 11 +++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/blazarclient/v1/leases.py b/blazarclient/v1/leases.py index 47950b3..f356a8c 100644 --- a/blazarclient/v1/leases.py +++ b/blazarclient/v1/leases.py @@ -88,12 +88,16 @@ def delete(self, lease_id): """Deletes lease with specified ID.""" resp, body = self.request_manager.delete('/leases/%s' % lease_id) - def list(self, sort_by=None, all_tenants=False): + def list(self, sort_by=None, all_tenants=False, limit=None, marker=None): """List all leases.""" url = '/leases' query_parts = [] if all_tenants: query_parts.append("all_tenants=True") + if limit: + query_parts.append(f"limit={limit}") + if marker: + query_parts.append(f"marker={marker}") if query_parts: url += "?" + "&".join(query_parts) resp, body = self.request_manager.get(url) diff --git a/blazarclient/v1/shell_commands/leases.py b/blazarclient/v1/shell_commands/leases.py index c3ad765..e5045f9 100644 --- a/blazarclient/v1/shell_commands/leases.py +++ b/blazarclient/v1/shell_commands/leases.py @@ -114,11 +114,22 @@ def get_parser(self, prog_name): help='List leases from all projects (admin only).', default=False ) + parser.add_argument( + '--limit', metavar="", + help='Maximum number of leases to return', + ) + parser.add_argument( + '--marker', metavar="", + help='Only return leases after specified lease', + ) + return parser def args2body(self, parsed_args): params = super(ListLeases, self).args2body(parsed_args) params["all_tenants"] = parsed_args.all_tenants + params["limit"] = parsed_args.limit + params["marker"] = parsed_args.marker return params def get_data(self, parsed_args): From c0968138d54834fae85adfeb572ba54f2645de70 Mon Sep 17 00:00:00 2001 From: Mark Powers Date: Fri, 5 Sep 2025 18:29:17 +0000 Subject: [PATCH 3/3] Add filter params --- blazarclient/v1/leases.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/blazarclient/v1/leases.py b/blazarclient/v1/leases.py index f356a8c..ea83f4c 100644 --- a/blazarclient/v1/leases.py +++ b/blazarclient/v1/leases.py @@ -88,12 +88,29 @@ def delete(self, lease_id): """Deletes lease with specified ID.""" resp, body = self.request_manager.delete('/leases/%s' % lease_id) - def list(self, sort_by=None, all_tenants=False, limit=None, marker=None): + def list(self, + sort_by=None, + all_tenants=False, + status=None, + project_id=None, + lease_id=None, + lease_name=None, + limit=None, + marker=None + ): """List all leases.""" url = '/leases' query_parts = [] if all_tenants: query_parts.append("all_tenants=True") + if status: + query_parts.append(f"status={status}") + if project_id: + query_parts.append(f"project_id={project_id}") + if lease_id: + query_parts.append(f"lease_id={lease_id}") + if lease_name: + query_parts.append(f"lease_name={lease_name}") if limit: query_parts.append(f"limit={limit}") if marker: