Merge "Re-factor neutron client for 'delete' methods"
diff --git a/tempest/services/network/json/network_client.py b/tempest/services/network/json/network_client.py
index 29617de..cc9399e 100644
--- a/tempest/services/network/json/network_client.py
+++ b/tempest/services/network/json/network_client.py
@@ -85,15 +85,11 @@
 
         return _list
 
-    def _deleter(self, resource_name):
-        def _delete(resource_id):
-            plural = self.pluralize(resource_name)
-            uri = '%s/%s' % (self.get_uri(plural), resource_id)
-            resp, body = self.delete(uri)
-            self.expected_success(204, resp.status)
-            return service_client.ResponseBody(resp, body)
-
-        return _delete
+    def _delete_resource(self, uri):
+        req_uri = self.uri_prefix + uri
+        resp, body = self.delete(req_uri)
+        self.expected_success(204, resp.status)
+        return service_client.ResponseBody(resp, body)
 
     def _show_resource(self, uri, **fields):
         # fields is a dict which key is 'fields' and value is a
@@ -124,9 +120,8 @@
         return service_client.ResponseBody(resp, body)
 
     def __getattr__(self, name):
-        method_prefixes = ["list_", "delete_"]
-        method_functors = [self._lister,
-                           self._deleter]
+        method_prefixes = ["list_"]
+        method_functors = [self._lister]
         for index, prefix in enumerate(method_prefixes):
             prefix_len = len(prefix)
             if name[:prefix_len] == prefix:
@@ -147,6 +142,10 @@
         uri = '/networks/%s' % network_id
         return self._show_resource(uri, **fields)
 
+    def delete_network(self, network_id):
+        uri = '/networks/%s' % network_id
+        return self._delete_resource(uri)
+
     def create_subnet(self, **kwargs):
         uri = '/subnets'
         post_data = {'subnet': kwargs}
@@ -161,6 +160,10 @@
         uri = '/subnets/%s' % subnet_id
         return self._show_resource(uri, **fields)
 
+    def delete_subnet(self, subnet_id):
+        uri = '/subnets/%s' % subnet_id
+        return self._delete_resource(uri)
+
     def create_port(self, **kwargs):
         uri = '/ports'
         post_data = {'port': kwargs}
@@ -175,6 +178,10 @@
         uri = '/ports/%s' % port_id
         return self._show_resource(uri, **fields)
 
+    def delete_port(self, port_id):
+        uri = '/ports/%s' % port_id
+        return self._delete_resource(uri)
+
     def create_floatingip(self, **kwargs):
         uri = '/floatingips'
         post_data = {'floatingip': kwargs}
@@ -189,6 +196,10 @@
         uri = '/floatingips/%s' % floatingip_id
         return self._show_resource(uri, **fields)
 
+    def delete_floatingip(self, floatingip_id):
+        uri = '/floatingips/%s' % floatingip_id
+        return self._delete_resource(uri)
+
     def create_metering_label(self, **kwargs):
         uri = '/metering/metering-labels'
         post_data = {'metering_label': kwargs}
@@ -198,6 +209,10 @@
         uri = '/metering/metering-labels/%s' % metering_label_id
         return self._show_resource(uri, **fields)
 
+    def delete_metering_label(self, metering_label_id):
+        uri = '/metering/metering-labels/%s' % metering_label_id
+        return self._delete_resource(uri)
+
     def create_metering_label_rule(self, **kwargs):
         uri = '/metering/metering-label-rules'
         post_data = {'metering_label_rule': kwargs}
@@ -207,6 +222,10 @@
         uri = '/metering/metering-label-rules/%s' % metering_label_rule_id
         return self._show_resource(uri, **fields)
 
+    def delete_metering_label_rule(self, metering_label_rule_id):
+        uri = '/metering/metering-label-rules/%s' % metering_label_rule_id
+        return self._delete_resource(uri)
+
     def create_security_group(self, **kwargs):
         uri = '/security-groups'
         post_data = {'security_group': kwargs}
@@ -221,6 +240,10 @@
         uri = '/security-groups/%s' % security_group_id
         return self._show_resource(uri, **fields)
 
+    def delete_security_group(self, security_group_id):
+        uri = '/security-groups/%s' % security_group_id
+        return self._delete_resource(uri)
+
     def create_security_group_rule(self, **kwargs):
         uri = '/security-group-rules'
         post_data = {'security_group_rule': kwargs}
@@ -230,6 +253,10 @@
         uri = '/security-group-rules/%s' % security_group_rule_id
         return self._show_resource(uri, **fields)
 
+    def delete_security_group_rule(self, security_group_rule_id):
+        uri = '/security-group-rules/%s' % security_group_rule_id
+        return self._delete_resource(uri)
+
     def show_extension(self, ext_alias, **fields):
         uri = '/extensions/%s' % ext_alias
         return self._show_resource(uri, **fields)
@@ -411,6 +438,10 @@
         uri = '/routers/%s' % router_id
         return self._show_resource(uri, **fields)
 
+    def delete_router(self, router_id):
+        uri = '/routers/%s' % router_id
+        return self._delete_resource(uri)
+
     def update_router_with_snat_gw_info(self, router_id, **kwargs):
         """Update a router passing also the enable_snat attribute.