Test helpers to facilitate testing BGP dynamic routing.
This patch includes changes that facilitate creation of subnetpools
and address scopes, as well as changes that make it easier to allocate
subnets from a subnetpool inside unit and API tests. These fixtures
are needed for testing BGP features, but have general utility in
in developing Neutron tests in the future.
Change-Id: I65749dac516e3ff23db50cbb7b832aa3039394e6
Partially-Implements: blueprint bgp-dynamic-routing
diff --git a/neutron/tests/tempest/services/network/json/network_client.py b/neutron/tests/tempest/services/network/json/network_client.py
index 2cd1344..d7c1656 100644
--- a/neutron/tests/tempest/services/network/json/network_client.py
+++ b/neutron/tests/tempest/services/network/json/network_client.py
@@ -170,6 +170,56 @@
return method_functors[index](name[prefix_len:])
raise AttributeError(name)
+ # Subnetpool methods
+ def create_subnetpool(self, name, **kwargs):
+ subnetpool_data = {'name': name}
+ for arg in kwargs:
+ subnetpool_data[arg] = kwargs[arg]
+
+ post_data = {'subnetpool': subnetpool_data}
+ body = self.serialize_list(post_data, "subnetpools", "subnetpool")
+ uri = self.get_uri("subnetpools")
+ resp, body = self.post(uri, body)
+ body = {'subnetpool': self.deserialize_list(body)}
+ self.expected_success(201, resp.status)
+ return service_client.ResponseBody(resp, body)
+
+ def get_subnetpool(self, id):
+ uri = self.get_uri("subnetpools")
+ subnetpool_uri = '%s/%s' % (uri, id)
+ resp, body = self.get(subnetpool_uri)
+ body = {'subnetpool': self.deserialize_list(body)}
+ self.expected_success(200, resp.status)
+ return service_client.ResponseBody(resp, body)
+
+ def delete_subnetpool(self, id):
+ uri = self.get_uri("subnetpools")
+ subnetpool_uri = '%s/%s' % (uri, id)
+ resp, body = self.delete(subnetpool_uri)
+ self.expected_success(204, resp.status)
+ return service_client.ResponseBody(resp, body)
+
+ def list_subnetpools(self):
+ uri = self.get_uri("subnetpools")
+ resp, body = self.get(uri)
+ body = {'subnetpools': self.deserialize_list(body)}
+ self.expected_success(200, resp.status)
+ return service_client.ResponseBody(resp, body)
+
+ def update_subnetpool(self, id, **kwargs):
+ subnetpool_data = {}
+ for arg in kwargs:
+ subnetpool_data[arg] = kwargs[arg]
+
+ post_data = {'subnetpool': subnetpool_data}
+ body = self.serialize_list(post_data, "subnetpools", "subnetpool")
+ uri = self.get_uri("subnetpools")
+ subnetpool_uri = '%s/%s' % (uri, id)
+ resp, body = self.put(subnetpool_uri, body)
+ body = {'subnetpool': self.deserialize_list(body)}
+ self.expected_success(200, resp.status)
+ return service_client.ResponseBody(resp, body)
+
# Common methods that are hard to automate
def create_bulk_network(self, names, shared=False):
network_list = [{'name': name, 'shared': shared} for name in names]