don't reuse servers in test_server_actions

One of the most problematic parts of Tempest failures has been
the test_server_actions test, which tries to optimize what it's
doing by reusing a functional server for subsequent tests.

The problem is, it's not clear that server is always functional.

It would be much better to take the time hit and just use a clean
server on every go if this increases reliability.

Change-Id: I78958250d85f2e6b32d912283936b2ee74c38feb
diff --git a/tempest/api/compute/servers/test_server_actions.py b/tempest/api/compute/servers/test_server_actions.py
index 80e6008..4637561 100644
--- a/tempest/api/compute/servers/test_server_actions.py
+++ b/tempest/api/compute/servers/test_server_actions.py
@@ -32,28 +32,16 @@
     run_ssh = CONF.compute.run_ssh
 
     def setUp(self):
-        # NOTE(afazekas): Normally we use the same server with all test cases,
-        # but if it has an issue, we build a new one
         super(ServerActionsTestJSON, self).setUp()
-        # Check if the server is in a clean state after test
-        try:
-            self.client.wait_for_server_status(self.server_id, 'ACTIVE')
-        except Exception:
-            # Rebuild server if something happened to it during a test
-            self.__class__.server_id = self.rebuild_server(self.server_id)
-
-    def tearDown(self):
-        _, server = self.client.get_server(self.server_id)
-        self.assertEqual(self.image_ref, server['image']['id'])
-        self.server_check_teardown()
-        super(ServerActionsTestJSON, self).tearDown()
+        resp, server = self.create_test_server(wait_until='ACTIVE')
+        self.addCleanup(self.client.delete_server, server['id'])
+        self.server_id = server['id']
 
     @classmethod
     def setUpClass(cls):
         cls.prepare_instance_network()
         super(ServerActionsTestJSON, cls).setUpClass()
         cls.client = cls.servers_client
-        cls.server_id = cls.rebuild_server(None)
 
     @testtools.skipUnless(CONF.compute_feature_enabled.change_password,
                           'Change password not available.')
diff --git a/tempest/api/compute/v3/servers/test_server_actions.py b/tempest/api/compute/v3/servers/test_server_actions.py
index 721fe42..5840360 100644
--- a/tempest/api/compute/v3/servers/test_server_actions.py
+++ b/tempest/api/compute/v3/servers/test_server_actions.py
@@ -30,15 +30,10 @@
     run_ssh = CONF.compute.run_ssh
 
     def setUp(self):
-        # NOTE(afazekas): Normally we use the same server with all test cases,
-        # but if it has an issue, we build a new one
         super(ServerActionsV3Test, self).setUp()
-        # Check if the server is in a clean state after test
-        try:
-            self.client.wait_for_server_status(self.server_id, 'ACTIVE')
-        except Exception:
-            # Rebuild server if something happened to it during a test
-            self.__class__.server_id = self.rebuild_server(self.server_id)
+        resp, server = self.create_test_server(wait_until='ACTIVE')
+        self.addCleanup(self.client.delete_server, server['id'])
+        self.server_id = server['id']
 
     def tearDown(self):
         _, server = self.client.get_server(self.server_id)
@@ -51,7 +46,6 @@
         cls.prepare_instance_network()
         super(ServerActionsV3Test, cls).setUpClass()
         cls.client = cls.servers_client
-        cls.server_id = cls.rebuild_server(None)
 
     @testtools.skipUnless(CONF.compute_feature_enabled.change_password,
                           'Change password not available.')