diff --git a/blazarclient/v1/leases.py b/blazarclient/v1/leases.py index b0d802f..ea83f4c 100644 --- a/blazarclient/v1/leases.py +++ b/blazarclient/v1/leases.py @@ -88,9 +88,36 @@ 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, + status=None, + project_id=None, + lease_id=None, + lease_name=None, + limit=None, + marker=None + ): """List all leases.""" - resp, body = self.request_manager.get('/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: + query_parts.append(f"marker={marker}") + 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..e5045f9 100644 --- a/blazarclient/v1/shell_commands/leases.py +++ b/blazarclient/v1/shell_commands/leases.py @@ -108,8 +108,30 @@ 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 + ) + 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): if parsed_args.project_id: self._filters.append(