Merge "Re-factor neutron client for 'show' methods"
diff --git a/tempest/services/network/json/network_client.py b/tempest/services/network/json/network_client.py
index 2ae9a06..29617de 100644
--- a/tempest/services/network/json/network_client.py
+++ b/tempest/services/network/json/network_client.py
@@ -95,21 +95,17 @@
return _delete
- def _shower(self, resource_name):
- def _show(resource_id, **fields):
- # fields is a dict which key is 'fields' and value is a
- # list of field's name. An example:
- # {'fields': ['id', 'name']}
- plural = self.pluralize(resource_name)
- uri = '%s/%s' % (self.get_uri(plural), resource_id)
- if fields:
- uri += '?' + urllib.urlencode(fields, doseq=1)
- resp, body = self.get(uri)
- body = self.deserialize_single(body)
- self.expected_success(200, resp.status)
- return service_client.ResponseBody(resp, body)
-
- return _show
+ def _show_resource(self, uri, **fields):
+ # fields is a dict which key is 'fields' and value is a
+ # list of field's name. An example:
+ # {'fields': ['id', 'name']}
+ req_uri = self.uri_prefix + uri
+ if fields:
+ req_uri += '?' + urllib.urlencode(fields, doseq=1)
+ resp, body = self.get(req_uri)
+ body = self.deserialize_single(body)
+ self.expected_success(200, resp.status)
+ return service_client.ResponseBody(resp, body)
def _create_resource(self, uri, post_data):
req_uri = self.uri_prefix + uri
@@ -128,10 +124,9 @@
return service_client.ResponseBody(resp, body)
def __getattr__(self, name):
- method_prefixes = ["list_", "delete_", "show_"]
+ method_prefixes = ["list_", "delete_"]
method_functors = [self._lister,
- self._deleter,
- self._shower]
+ self._deleter]
for index, prefix in enumerate(method_prefixes):
prefix_len = len(prefix)
if name[:prefix_len] == prefix:
@@ -148,6 +143,10 @@
post_data = {'network': kwargs}
return self._update_resource(uri, post_data)
+ def show_network(self, network_id, **fields):
+ uri = '/networks/%s' % network_id
+ return self._show_resource(uri, **fields)
+
def create_subnet(self, **kwargs):
uri = '/subnets'
post_data = {'subnet': kwargs}
@@ -158,6 +157,10 @@
post_data = {'subnet': kwargs}
return self._update_resource(uri, post_data)
+ def show_subnet(self, subnet_id, **fields):
+ uri = '/subnets/%s' % subnet_id
+ return self._show_resource(uri, **fields)
+
def create_port(self, **kwargs):
uri = '/ports'
post_data = {'port': kwargs}
@@ -168,6 +171,10 @@
post_data = {'port': kwargs}
return self._update_resource(uri, post_data)
+ def show_port(self, port_id, **fields):
+ uri = '/ports/%s' % port_id
+ return self._show_resource(uri, **fields)
+
def create_floatingip(self, **kwargs):
uri = '/floatingips'
post_data = {'floatingip': kwargs}
@@ -178,16 +185,28 @@
post_data = {'floatingip': kwargs}
return self._update_resource(uri, post_data)
+ def show_floatingip(self, floatingip_id, **fields):
+ uri = '/floatingips/%s' % floatingip_id
+ return self._show_resource(uri, **fields)
+
def create_metering_label(self, **kwargs):
uri = '/metering/metering-labels'
post_data = {'metering_label': kwargs}
return self._create_resource(uri, post_data)
+ def show_metering_label(self, metering_label_id, **fields):
+ uri = '/metering/metering-labels/%s' % metering_label_id
+ return self._show_resource(uri, **fields)
+
def create_metering_label_rule(self, **kwargs):
uri = '/metering/metering-label-rules'
post_data = {'metering_label_rule': kwargs}
return self._create_resource(uri, post_data)
+ def show_metering_label_rule(self, metering_label_rule_id, **fields):
+ uri = '/metering/metering-label-rules/%s' % metering_label_rule_id
+ return self._show_resource(uri, **fields)
+
def create_security_group(self, **kwargs):
uri = '/security-groups'
post_data = {'security_group': kwargs}
@@ -198,11 +217,23 @@
post_data = {'security_group': kwargs}
return self._update_resource(uri, post_data)
+ def show_security_group(self, security_group_id, **fields):
+ uri = '/security-groups/%s' % security_group_id
+ return self._show_resource(uri, **fields)
+
def create_security_group_rule(self, **kwargs):
uri = '/security-group-rules'
post_data = {'security_group_rule': kwargs}
return self._create_resource(uri, post_data)
+ def show_security_group_rule(self, security_group_rule_id, **fields):
+ uri = '/security-group-rules/%s' % security_group_rule_id
+ return self._show_resource(uri, **fields)
+
+ def show_extension(self, ext_alias, **fields):
+ uri = '/extensions/%s' % ext_alias
+ return self._show_resource(uri, **fields)
+
# Common methods that are hard to automate
def create_bulk_network(self, names):
network_list = [{'name': name} for name in names]
@@ -323,6 +354,10 @@
self.expected_success(204, resp.status)
return service_client.ResponseBody(resp, body)
+ def show_quotas(self, tenant_id, **fields):
+ uri = '/quotas/%s' % tenant_id
+ return self._show_resource(uri, **fields)
+
def create_router(self, name, admin_state_up=True, **kwargs):
post_body = {'router': kwargs}
post_body['router']['name'] = name
@@ -372,6 +407,10 @@
# policy is to restrict enable_snat usage to admins only.
return self._update_router(router_id, set_enable_snat=False, **kwargs)
+ def show_router(self, router_id, **fields):
+ uri = '/routers/%s' % router_id
+ return self._show_resource(uri, **fields)
+
def update_router_with_snat_gw_info(self, router_id, **kwargs):
"""Update a router passing also the enable_snat attribute.
@@ -440,6 +479,10 @@
body = json.loads(body)
return service_client.ResponseBody(resp, body)
+ def show_agent(self, agent_id, **fields):
+ uri = '/agents/%s' % agent_id
+ return self._show_resource(uri, **fields)
+
def list_routers_on_l3_agent(self, agent_id):
uri = '%s/agents/%s/l3-routers' % (self.uri_prefix, agent_id)
resp, body = self.get(uri)