NSXv3 Client: Add paginated response
Change-Id: I8fb23fb239c0c2d9f5d08085dabcb2e96384b8fd
This commit is contained in:
@@ -27,6 +27,7 @@ LOG = log.getLogger(__name__)
|
|||||||
ERRORS = {requests.codes.NOT_FOUND: exceptions.ResourceNotFound,
|
ERRORS = {requests.codes.NOT_FOUND: exceptions.ResourceNotFound,
|
||||||
requests.codes.PRECONDITION_FAILED: exceptions.StaleRevision}
|
requests.codes.PRECONDITION_FAILED: exceptions.StaleRevision}
|
||||||
DEFAULT_ERROR = exceptions.ManagerError
|
DEFAULT_ERROR = exceptions.ManagerError
|
||||||
|
NULL_CURSOR_PREFIX = '0000'
|
||||||
|
|
||||||
|
|
||||||
class RESTClient(object):
|
class RESTClient(object):
|
||||||
@@ -54,8 +55,8 @@ class RESTClient(object):
|
|||||||
default_headers=self._default_headers,
|
default_headers=self._default_headers,
|
||||||
client_obj=self)
|
client_obj=self)
|
||||||
|
|
||||||
def list(self, headers=None):
|
def list(self, resource='', headers=None):
|
||||||
return self.url_list('')
|
return self.url_list(resource, headers=headers)
|
||||||
|
|
||||||
def get(self, uuid, headers=None):
|
def get(self, uuid, headers=None):
|
||||||
return self.url_get(uuid, headers=headers)
|
return self.url_get(uuid, headers=headers)
|
||||||
@@ -70,7 +71,16 @@ class RESTClient(object):
|
|||||||
return self.url_post(resource, body, headers=headers)
|
return self.url_post(resource, body, headers=headers)
|
||||||
|
|
||||||
def url_list(self, url, headers=None):
|
def url_list(self, url, headers=None):
|
||||||
return self.url_get(url, headers=headers)
|
concatenate_response = self.url_get(url, headers=headers)
|
||||||
|
cursor = concatenate_response.get('cursor', NULL_CURSOR_PREFIX)
|
||||||
|
op = '&' if urlparse.urlparse(url).query else '?'
|
||||||
|
url += op + 'cursor='
|
||||||
|
|
||||||
|
while cursor and not cursor.startswith(NULL_CURSOR_PREFIX):
|
||||||
|
page = self.url_get(url + cursor, headers=headers)
|
||||||
|
concatenate_response['results'].extend(page.get('results', []))
|
||||||
|
cursor = page.get('cursor', NULL_CURSOR_PREFIX)
|
||||||
|
return concatenate_response
|
||||||
|
|
||||||
def url_get(self, url, headers=None):
|
def url_get(self, url, headers=None):
|
||||||
return self._rest_call(url, method='GET', headers=headers)
|
return self._rest_call(url, method='GET', headers=headers)
|
||||||
|
|||||||
@@ -159,7 +159,7 @@ class NsxLibNsGroup(utils.NsxLibApiBase):
|
|||||||
return self.client.create('ns-groups', body)
|
return self.client.create('ns-groups', body)
|
||||||
|
|
||||||
def list(self):
|
def list(self):
|
||||||
return self.client.get(
|
return self.client.list(
|
||||||
'ns-groups?populate_references=false').get('results', [])
|
'ns-groups?populate_references=false').get('results', [])
|
||||||
|
|
||||||
def update(self, nsgroup_id, display_name=None, description=None,
|
def update(self, nsgroup_id, display_name=None, description=None,
|
||||||
@@ -370,7 +370,7 @@ class NsxLibFirewallSection(utils.NsxLibApiBase):
|
|||||||
|
|
||||||
def list(self):
|
def list(self):
|
||||||
resource = 'firewall/sections'
|
resource = 'firewall/sections'
|
||||||
return self.client.get(resource).get('results', [])
|
return self.client.list(resource).get('results', [])
|
||||||
|
|
||||||
def delete(self, section_id):
|
def delete(self, section_id):
|
||||||
resource = 'firewall/sections/%s?cascade=true' % section_id
|
resource = 'firewall/sections/%s?cascade=true' % section_id
|
||||||
|
|||||||
Reference in New Issue
Block a user