Delete a BuildError server
If a server creation fails with create_test_server() in setUpClass,
the server would not be removed because tearDownclass is not called.
As the result, many BuildError servers are created and "Quota exceeded"
happens if server creations continue to fail.
This patch makes create_test_server() removes a server when BuildError
happens for avoiding "Quota exceeded" exception and investigating the
original problem which is due to the BuildError.
Change-Id: I55bb386bbea550de11cc7a81c5d056680057523b
Related-Bug: #1257641
diff --git a/tempest/api/compute/base.py b/tempest/api/compute/base.py
index b060f15..311e158 100644
--- a/tempest/api/compute/base.py
+++ b/tempest/api/compute/base.py
@@ -130,12 +130,22 @@
r, b = cls.servers_client.list_servers()
servers = [s for s in b['servers'] if s['name'].startswith(name)]
- cls.servers.extend(servers)
-
if 'wait_until' in kwargs:
for server in servers:
- cls.servers_client.wait_for_server_status(
- server['id'], kwargs['wait_until'])
+ try:
+ cls.servers_client.wait_for_server_status(
+ server['id'], kwargs['wait_until'])
+ except Exception as ex:
+ if ('preserve_server_on_error' not in kwargs
+ or kwargs['preserve_server_on_error'] is False):
+ for server in servers:
+ try:
+ cls.servers_client.delete_server(server['id'])
+ except Exception:
+ pass
+ raise ex
+
+ cls.servers.extend(servers)
return resp, body