diff --git a/vmware_nsx/plugins/nsx_v/vshield/edge_appliance_driver.py b/vmware_nsx/plugins/nsx_v/vshield/edge_appliance_driver.py index 5c753e7c98..b37cf9681f 100644 --- a/vmware_nsx/plugins/nsx_v/vshield/edge_appliance_driver.py +++ b/vmware_nsx/plugins/nsx_v/vshield/edge_appliance_driver.py @@ -262,16 +262,6 @@ class EdgeApplianceDriver(object): return status_level - def get_edges_statuses(self): - edges_status_level = {} - edges = self._get_edges() - for edge in edges['edgePage'].get('data', []): - edge_id = edge['id'] - status = edge['edgeStatus'] - edges_status_level[edge_id] = self._edge_status_to_level(status) - - return edges_status_level - def get_interface(self, edge_id, vnic_index): # get vnic interface address groups try: @@ -372,13 +362,6 @@ class EdgeApplianceDriver(object): LOG.debug("Deletion complete vnic %(vnic_index)s: on edge %(edge_id)s", {'vnic_index': index, 'edge_id': edge_id}) - def _get_edges(self): - try: - return self.vcns.get_edges()[1] - except exceptions.VcnsApiException as e: - LOG.exception("VCNS: Failed to get edges:\n%s", e.response) - raise e - def deploy_edge(self, context, router_id, name, internal_network, dist=False, loadbalancer_enable=True, appliance_size=nsxv_constants.LARGE, diff --git a/vmware_nsx/plugins/nsx_v/vshield/vcns.py b/vmware_nsx/plugins/nsx_v/vshield/vcns.py index 82f91f634f..78c3293289 100644 --- a/vmware_nsx/plugins/nsx_v/vshield/vcns.py +++ b/vmware_nsx/plugins/nsx_v/vshield/vcns.py @@ -236,10 +236,26 @@ class Vcns(object): uri = "%s/%s" % (URI_PREFIX, edge_id) return self.do_request(HTTP_GET, uri, decode=True) - def get_edges(self): - uri = URI_PREFIX + def _get_edges(self, startindex=0): + uri = '%s?startIndex=%d' % (URI_PREFIX, startindex) return self.do_request(HTTP_GET, uri, decode=True) + def get_edges(self): + edges = [] + h, d = self._get_edges() + edges.extend(d['edgePage']['data']) + paging_info = d['edgePage']['pagingInfo'] + page_size = int(paging_info['pageSize']) + count = int(paging_info['totalCount']) + LOG.debug("There are total %s edges and page size is %s", + count, page_size) + pages = count / page_size + 1 + for i in range(1, pages): + start_index = page_size * i + h, d = self._get_edges(start_index) + edges.extend(d['edgePage']['data']) + return edges + def get_edge_syslog(self, edge_id): uri = "%s/%s/syslog/config" % (URI_PREFIX, edge_id) return self.do_request(HTTP_GET, uri, decode=True) diff --git a/vmware_nsx/shell/admin/plugins/nsxv/resources/utils.py b/vmware_nsx/shell/admin/plugins/nsxv/resources/utils.py index f57f7b6c22..450146c090 100644 --- a/vmware_nsx/shell/admin/plugins/nsxv/resources/utils.py +++ b/vmware_nsx/shell/admin/plugins/nsxv/resources/utils.py @@ -101,8 +101,7 @@ def get_nsxv_backend_edges(): """Get a list of all the backend edges and some of their attributes """ nsxv = get_nsxv_client() - edges = nsxv.get_edges()[1] - edges = edges['edgePage'].get('data', []) + edges = nsxv.get_edges() backend_edges = [] for edge in edges: # get all the relevant backend information for this edge diff --git a/vmware_nsx/tests/unit/nsx_v/vshield/fake_vcns.py b/vmware_nsx/tests/unit/nsx_v/vshield/fake_vcns.py index 10af0ab117..ef62873dfd 100644 --- a/vmware_nsx/tests/unit/nsx_v/vshield/fake_vcns.py +++ b/vmware_nsx/tests/unit/nsx_v/vshield/fake_vcns.py @@ -411,9 +411,6 @@ class FakeVcns(object): return (header, response) def get_edges(self): - header = { - 'status': 200 - } edges = [] for edge_id in self._edges: edges.append({ @@ -421,12 +418,7 @@ class FakeVcns(object): 'edgeStatus': 'GREEN', 'name': self._edges[edge_id]['name'] }) - response = { - 'edgePage': { - 'data': edges - } - } - return (header, response) + return edges def get_vdn_switch(self, dvs_id): header = { diff --git a/vmware_nsx/tests/unit/nsx_v/vshield/test_vcns_driver.py b/vmware_nsx/tests/unit/nsx_v/vshield/test_vcns_driver.py index 264ed45560..1fad47cfe0 100644 --- a/vmware_nsx/tests/unit/nsx_v/vshield/test_vcns_driver.py +++ b/vmware_nsx/tests/unit/nsx_v/vshield/test_vcns_driver.py @@ -380,16 +380,6 @@ class VcnsDriverTestCase(base.BaseTestCase): status = self.vcns_driver.get_edge_status(self.edge_id) self.assertEqual(vcns_const.RouterStatus.ROUTER_STATUS_ACTIVE, status) - def test_get_edges(self): - self._deploy_edge() - edges = self.vcns_driver.get_edges_statuses() - found = False - for edge_id, status in six.iteritems(edges): - if edge_id == self.edge_id: - found = True - break - self.assertTrue(found) - def test_update_nat_rules(self): self._deploy_edge() snats = [{