diff --git a/neutron_tempest_plugin/scenario/admin/test_floatingip.py b/neutron_tempest_plugin/scenario/admin/test_floatingip.py
index e58be83..2dc0da8 100644
--- a/neutron_tempest_plugin/scenario/admin/test_floatingip.py
+++ b/neutron_tempest_plugin/scenario/admin/test_floatingip.py
@@ -85,13 +85,12 @@
                 network_id=self.network['id'],
                 device_id=server['server']['id']
             )['ports'][0]
-            fips.append(self.create_and_associate_floatingip(
-                port['id'], client=self.os_admin.network_client))
+            fip = self.create_floatingip(port=port,
+                                         client=self.os_admin.network_client)
+            fips.append(fip)
             server_ssh_clients.append(ssh.Client(
                 fips[i]['floating_ip_address'], CONF.validation.image_ssh_user,
                 pkey=self.keypair['private_key']))
-            self.addCleanup(self.os_admin.network_client.delete_floatingip,
-                            fips[i]['id'])
         return server_ssh_clients, fips
 
     @decorators.idempotent_id('6bba729b-3fb6-494b-9e1e-82bbd89a1045')
diff --git a/neutron_tempest_plugin/scenario/test_dns_integration.py b/neutron_tempest_plugin/scenario/test_dns_integration.py
index 923f013..20062c1 100644
--- a/neutron_tempest_plugin/scenario/test_dns_integration.py
+++ b/neutron_tempest_plugin/scenario/test_dns_integration.py
@@ -76,11 +76,9 @@
         cls.keypair = cls.create_keypair()
 
     def _create_floatingip_with_dns(self, dns_name):
-        fip = self.os_primary.network_client.create_floatingip(
-            CONF.network.public_network_id, dns_name=dns_name,
-            dns_domain=self.zone['name'])['floatingip']
-        self.floating_ips.append(fip)
-        return fip
+        return self.create_floatingip(client=self.os_primary.network_client,
+                                      dns_name=dns_name,
+                                      dns_domain=self.zone['name'])
 
     def _create_server(self, name=None):
         port = self.create_port(self.network)
@@ -92,7 +90,7 @@
         waiters.wait_for_server_status(self.os_primary.servers_client,
                                        server['id'],
                                        constants.SERVER_STATUS_ACTIVE)
-        fip = self.create_and_associate_floatingip(port['id'])
+        fip = self.create_floatingip(port=port)
         return {'port': port, 'fip': fip, 'server': server}
 
     def _verify_dns_records(self, address, name):
diff --git a/neutron_tempest_plugin/scenario/test_floatingip.py b/neutron_tempest_plugin/scenario/test_floatingip.py
index 504af12..a7eb58b 100644
--- a/neutron_tempest_plugin/scenario/test_floatingip.py
+++ b/neutron_tempest_plugin/scenario/test_floatingip.py
@@ -87,7 +87,7 @@
             network = self.network
         port = self.create_port(network, security_groups=[self.secgroup['id']])
         if create_floating_ip:
-            fip = self.create_and_associate_floatingip(port['id'])
+            fip = self.create_floatingip(port=port)
         else:
             fip = None
         server = self.create_server(
diff --git a/neutron_tempest_plugin/scenario/test_mtu.py b/neutron_tempest_plugin/scenario/test_mtu.py
index dbfde9b..7a9f969 100644
--- a/neutron_tempest_plugin/scenario/test_mtu.py
+++ b/neutron_tempest_plugin/scenario/test_mtu.py
@@ -58,7 +58,7 @@
             constants.SERVER_STATUS_ACTIVE)
         port = self.client.list_ports(
             network_id=net['id'], device_id=server['server']['id'])['ports'][0]
-        fip = self.create_and_associate_floatingip(port['id'])
+        fip = self.create_floatingip(port=port)
         return server, fip
 
     def _get_network_params(self):
diff --git a/neutron_tempest_plugin/scenario/test_security_groups.py b/neutron_tempest_plugin/scenario/test_security_groups.py
index 9503fe3..a764a49 100644
--- a/neutron_tempest_plugin/scenario/test_security_groups.py
+++ b/neutron_tempest_plugin/scenario/test_security_groups.py
@@ -67,7 +67,7 @@
             port = self.client.list_ports(
                 network_id=self.network['id'], device_id=server['server'][
                     'id'])['ports'][0]
-            fips.append(self.create_and_associate_floatingip(port['id']))
+            fips.append(self.create_floatingip(port=port))
             server_ssh_clients.append(ssh.Client(
                 fips[i]['floating_ip_address'], CONF.validation.image_ssh_user,
                 pkey=self.keypair['private_key']))
diff --git a/neutron_tempest_plugin/scenario/test_trunk.py b/neutron_tempest_plugin/scenario/test_trunk.py
index 9a92b38..e6d8863 100644
--- a/neutron_tempest_plugin/scenario/test_trunk.py
+++ b/neutron_tempest_plugin/scenario/test_trunk.py
@@ -65,7 +65,7 @@
                 'server': server}
 
     def _create_server_with_fip(self, port_id, **server_kwargs):
-        fip = self.create_and_associate_floatingip(port_id)
+        fip = self.create_floatingip(port_id=port_id)
         return (
             self.create_server(
                 flavor_ref=CONF.compute.flavor_ref,
