Add shelve_offload test for Nova API
On compute nodes which are configured with shelved_offload_time = -1,
the shelve API changes a server status to SHELVED and a server image
remains in the node. The shelve_offload API offloads the server image
from the node. This patch adds the API test for Nova API.
Partially implements blueprint nova-v3-api-tests
Change-Id: Iaa2f94c3381c8b68df7fe132e1c13b4b81962b8c
diff --git a/tempest/api/compute/servers/test_server_actions.py b/tempest/api/compute/servers/test_server_actions.py
index bde0f57..71d6018 100644
--- a/tempest/api/compute/servers/test_server_actions.py
+++ b/tempest/api/compute/servers/test_server_actions.py
@@ -382,6 +382,11 @@
self.client.wait_for_server_status(self.server_id,
'SHELVED')
+ resp, server = self.client.shelve_offload_server(self.server_id)
+ self.assertEqual(202, resp.status)
+ self.client.wait_for_server_status(self.server_id,
+ 'SHELVED_OFFLOADED')
+
resp, server = self.client.get_server(self.server_id)
image_name = server['name'] + '-shelved'
params = {'name': image_name}
diff --git a/tempest/api/compute/v3/servers/test_server_actions.py b/tempest/api/compute/v3/servers/test_server_actions.py
index 406c45a..555d028 100644
--- a/tempest/api/compute/v3/servers/test_server_actions.py
+++ b/tempest/api/compute/v3/servers/test_server_actions.py
@@ -372,6 +372,11 @@
self.client.wait_for_server_status(self.server_id,
'SHELVED')
+ resp, server = self.client.shelve_offload_server(self.server_id)
+ self.assertEqual(202, resp.status)
+ self.client.wait_for_server_status(self.server_id,
+ 'SHELVED_OFFLOADED')
+
resp, server = self.client.get_server(self.server_id)
image_name = server['name'] + '-shelved'
resp, images = self.images_client.image_list(name=image_name)
diff --git a/tempest/services/compute/json/servers_client.py b/tempest/services/compute/json/servers_client.py
index 623bf42..70d075a 100644
--- a/tempest/services/compute/json/servers_client.py
+++ b/tempest/services/compute/json/servers_client.py
@@ -382,6 +382,10 @@
"""Un-shelves the provided server."""
return self.action(server_id, 'unshelve', None, **kwargs)
+ def shelve_offload_server(self, server_id, **kwargs):
+ """Shelve-offload the provided server."""
+ return self.action(server_id, 'shelveOffload', None, **kwargs)
+
def get_console_output(self, server_id, length):
return self.action(server_id, 'os-getConsoleOutput', 'output',
length=length)
diff --git a/tempest/services/compute/v3/json/servers_client.py b/tempest/services/compute/v3/json/servers_client.py
index 389e6a4..b64495d 100644
--- a/tempest/services/compute/v3/json/servers_client.py
+++ b/tempest/services/compute/v3/json/servers_client.py
@@ -384,6 +384,10 @@
"""Un-shelves the provided server."""
return self.action(server_id, 'unshelve', None, **kwargs)
+ def shelve_offload_server(self, server_id, **kwargs):
+ """Shelve-offload the provided server."""
+ return self.action(server_id, 'shelve_offload', None, **kwargs)
+
def get_console_output(self, server_id, length):
return self.action(server_id, 'get_console_output', 'output',
length=length)
diff --git a/tempest/services/compute/xml/servers_client.py b/tempest/services/compute/xml/servers_client.py
index cd2cb06..4d3646c 100644
--- a/tempest/services/compute/xml/servers_client.py
+++ b/tempest/services/compute/xml/servers_client.py
@@ -227,6 +227,10 @@
"""Un-shelves the provided server."""
return self.action(server_id, 'unshelve', None, **kwargs)
+ def shelve_offload_server(self, server_id, **kwargs):
+ """Shelve-offload the provided server."""
+ return self.action(server_id, 'shelveOffload', None, **kwargs)
+
def reset_state(self, server_id, state='error'):
"""Resets the state of a server to active/error."""
return self.action(server_id, 'os-resetState', None, state=state)