summaryrefslogtreecommitdiff
path: root/openstackclient/tests/unit
diff options
context:
space:
mode:
authorStephen Finucane <sfinucan@redhat.com>2020-11-11 18:39:22 +0000
committerStephen Finucane <sfinucan@redhat.com>2021-01-08 18:01:25 +0000
commit64c2a1a453fce8f4e2e7e8441692af007c176459 (patch)
treef56c8f4a0a4242e21c62d6e4303871ba189dbc46 /openstackclient/tests/unit
parent958344733aa6d8aea6cb8d06cc4d879fe1ee44a6 (diff)
downloadpython-openstackclient-64c2a1a453fce8f4e2e7e8441692af007c176459.tar.gz
Add 'server shelve --offload', 'server shelve --wait' options
The '--offload' option allows us to explicitly request that the server be offloaded once shelved or if already shelved. The '--wait' option allows us to wait for the shelve and/or offload operations to complete before returning. It is implied when attempting to offload a server than is not yet shelved. Change-Id: Id226831e3c09bc95c34b222151b27391a844b073 Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
Diffstat (limited to 'openstackclient/tests/unit')
-rw-r--r--openstackclient/tests/unit/compute/v2/test_server.py122
1 files changed, 116 insertions, 6 deletions
diff --git a/openstackclient/tests/unit/compute/v2/test_server.py b/openstackclient/tests/unit/compute/v2/test_server.py
index 0f33dd70..9ad6d155 100644
--- a/openstackclient/tests/unit/compute/v2/test_server.py
+++ b/openstackclient/tests/unit/compute/v2/test_server.py
@@ -6434,16 +6434,126 @@ class TestServerShelve(TestServer):
# Get the command object to test
self.cmd = server.ShelveServer(self.app, None)
- # Set shelve method to be tested.
- self.methods = {
+ def test_shelve(self):
+ server_info = {'status': 'ACTIVE'}
+ server_methods = {
'shelve': None,
+ 'shelve_offload': None,
}
- def test_shelve_one_server(self):
- self.run_method_with_servers('shelve', 1)
+ server = compute_fakes.FakeServer.create_one_server(
+ attrs=server_info, methods=server_methods)
+ self.servers_mock.get.return_value = server
- def test_shelve_multi_servers(self):
- self.run_method_with_servers('shelve', 3)
+ arglist = [server.name]
+ verifylist = [
+ ('servers', [server.name]),
+ ('wait', False),
+ ('offload', False),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ result = self.cmd.take_action(parsed_args)
+ self.assertIsNone(result)
+
+ self.servers_mock.get.assert_called_once_with(server.name)
+ server.shelve.assert_called_once_with()
+ server.shelve_offload.assert_not_called()
+
+ def test_shelve_already_shelved(self):
+ server_info = {'status': 'SHELVED'}
+ server_methods = {
+ 'shelve': None,
+ 'shelve_offload': None,
+ }
+
+ server = compute_fakes.FakeServer.create_one_server(
+ attrs=server_info, methods=server_methods)
+ self.servers_mock.get.return_value = server
+
+ arglist = [server.name]
+ verifylist = [
+ ('servers', [server.name]),
+ ('wait', False),
+ ('offload', False),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ result = self.cmd.take_action(parsed_args)
+ self.assertIsNone(result)
+
+ self.servers_mock.get.assert_called_once_with(server.name)
+ server.shelve.assert_not_called()
+ server.shelve_offload.assert_not_called()
+
+ @mock.patch.object(common_utils, 'wait_for_status', return_value=True)
+ def test_shelve_with_wait(self, mock_wait_for_status):
+ server_info = {'status': 'ACTIVE'}
+ server_methods = {
+ 'shelve': None,
+ 'shelve_offload': None,
+ }
+
+ server = compute_fakes.FakeServer.create_one_server(
+ attrs=server_info, methods=server_methods)
+ self.servers_mock.get.return_value = server
+
+ arglist = ['--wait', server.name]
+ verifylist = [
+ ('servers', [server.name]),
+ ('wait', True),
+ ('offload', False),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ result = self.cmd.take_action(parsed_args)
+ self.assertIsNone(result)
+
+ self.servers_mock.get.assert_called_once_with(server.name)
+ server.shelve.assert_called_once_with()
+ server.shelve_offload.assert_not_called()
+ mock_wait_for_status.assert_called_once_with(
+ self.servers_mock.get,
+ server.id,
+ callback=mock.ANY,
+ success_status=('shelved', 'shelved_offloaded'),
+ )
+
+ @mock.patch.object(common_utils, 'wait_for_status', return_value=True)
+ def test_shelve_offload(self, mock_wait_for_status):
+ server_info = {'status': 'ACTIVE'}
+ server_methods = {
+ 'shelve': None,
+ 'shelve_offload': None,
+ }
+
+ server = compute_fakes.FakeServer.create_one_server(
+ attrs=server_info, methods=server_methods)
+ self.servers_mock.get.return_value = server
+
+ arglist = ['--offload', server.name]
+ verifylist = [
+ ('servers', [server.name]),
+ ('wait', False),
+ ('offload', True),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ result = self.cmd.take_action(parsed_args)
+ self.assertIsNone(result)
+
+ self.servers_mock.get.assert_has_calls([
+ mock.call(server.name),
+ mock.call(server.name),
+ ])
+ server.shelve.assert_called_once_with()
+ server.shelve_offload.assert_called_once_with()
+ mock_wait_for_status.assert_called_once_with(
+ self.servers_mock.get,
+ server.id,
+ callback=mock.ANY,
+ success_status=('shelved', 'shelved_offloaded'),
+ )
class TestServerShow(TestServer):