summaryrefslogtreecommitdiff
path: root/openstackclient/tests/unit
diff options
context:
space:
mode:
Diffstat (limited to 'openstackclient/tests/unit')
-rw-r--r--openstackclient/tests/unit/compute/v2/test_server.py90
-rw-r--r--openstackclient/tests/unit/volume/v3/test_volume.py56
2 files changed, 126 insertions, 20 deletions
diff --git a/openstackclient/tests/unit/compute/v2/test_server.py b/openstackclient/tests/unit/compute/v2/test_server.py
index a4414af2..6abe7759 100644
--- a/openstackclient/tests/unit/compute/v2/test_server.py
+++ b/openstackclient/tests/unit/compute/v2/test_server.py
@@ -6241,6 +6241,7 @@ class TestServerRebuild(TestServer):
# Fake the server to be rebuilt. The IDs of them should be the same.
attrs['id'] = new_server.id
+ attrs['status'] = 'ACTIVE'
methods = {
'rebuild': new_server,
}
@@ -6439,6 +6440,7 @@ class TestServerRebuild(TestServer):
self.servers_mock.get,
self.server.id,
callback=mock.ANY,
+ success_status=['active'],
# **kwargs
)
@@ -6464,12 +6466,91 @@ class TestServerRebuild(TestServer):
self.servers_mock.get,
self.server.id,
callback=mock.ANY,
+ success_status=['active'],
)
self.servers_mock.get.assert_called_with(self.server.id)
self.get_image_mock.assert_called_with(self.image.id)
self.server.rebuild.assert_called_with(self.image, None)
+ @mock.patch.object(common_utils, 'wait_for_status', return_value=True)
+ def test_rebuild_with_wait_shutoff_status(self, mock_wait_for_status):
+ self.server.status = 'SHUTOFF'
+ arglist = [
+ '--wait',
+ self.server.id,
+ ]
+ verifylist = [
+ ('wait', True),
+ ('server', self.server.id),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ # Get the command object to test.
+ self.cmd.take_action(parsed_args)
+
+ # kwargs = dict(success_status=['active', 'verify_resize'],)
+
+ mock_wait_for_status.assert_called_once_with(
+ self.servers_mock.get,
+ self.server.id,
+ callback=mock.ANY,
+ success_status=['shutoff'],
+ # **kwargs
+ )
+
+ self.servers_mock.get.assert_called_with(self.server.id)
+ self.get_image_mock.assert_called_with(self.image.id)
+ self.server.rebuild.assert_called_with(self.image, None)
+
+ @mock.patch.object(common_utils, 'wait_for_status', return_value=True)
+ def test_rebuild_with_wait_error_status(self, mock_wait_for_status):
+ self.server.status = 'ERROR'
+ arglist = [
+ '--wait',
+ self.server.id,
+ ]
+ verifylist = [
+ ('wait', True),
+ ('server', self.server.id),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ # Get the command object to test.
+ self.cmd.take_action(parsed_args)
+
+ # kwargs = dict(success_status=['active', 'verify_resize'],)
+
+ mock_wait_for_status.assert_called_once_with(
+ self.servers_mock.get,
+ self.server.id,
+ callback=mock.ANY,
+ success_status=['active'],
+ # **kwargs
+ )
+
+ self.servers_mock.get.assert_called_with(self.server.id)
+ self.get_image_mock.assert_called_with(self.image.id)
+ self.server.rebuild.assert_called_with(self.image, None)
+
+ def test_rebuild_wrong_status_fails(self):
+ self.server.status = 'SHELVED'
+ arglist = [
+ self.server.id,
+ ]
+ verifylist = [
+ ('server', self.server.id),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ self.assertRaises(
+ exceptions.CommandError, self.cmd.take_action, parsed_args
+ )
+
+ self.servers_mock.get.assert_called_with(self.server.id)
+ self.get_image_mock.assert_called_with(self.image.id)
+ self.server.rebuild.assert_not_called()
+
def test_rebuild_with_property(self):
arglist = [
self.server.id,
@@ -6828,6 +6909,7 @@ class TestServerRebuildVolumeBacked(TestServer):
# Fake the server to be rebuilt. The IDs of them should be the same.
attrs['id'] = new_server.id
+ attrs['status'] = 'ACTIVE'
methods = {
'rebuild': new_server,
}
@@ -8552,10 +8634,10 @@ class TestServerStart(TestServer):
self.cmd.take_action(parsed_args)
self.sdk_client.find_server.assert_called_once_with(
- name=servers[0].id,
+ servers[0].id,
+ ignore_missing=False,
details=False,
all_projects=True,
- ignore_missing=False,
)
@@ -8587,10 +8669,10 @@ class TestServerStop(TestServer):
self.cmd.take_action(parsed_args)
self.sdk_client.find_server.assert_called_once_with(
- name=servers[0].id,
+ servers[0].id,
+ ignore_missing=False,
details=False,
all_projects=True,
- ignore_missing=False,
)
diff --git a/openstackclient/tests/unit/volume/v3/test_volume.py b/openstackclient/tests/unit/volume/v3/test_volume.py
index 507edc42..1b298678 100644
--- a/openstackclient/tests/unit/volume/v3/test_volume.py
+++ b/openstackclient/tests/unit/volume/v3/test_volume.py
@@ -16,9 +16,9 @@ import copy
from unittest import mock
from cinderclient import api_versions
+from openstack import utils as sdk_utils
from osc_lib.cli import format_columns
from osc_lib import exceptions
-from osc_lib import utils
from openstackclient.tests.unit.volume.v2 import fakes as volume_fakes
from openstackclient.volume.v3 import volume
@@ -128,18 +128,36 @@ class TestVolumeRevertToSnapshot(volume_fakes.TestVolume):
def setUp(self):
super().setUp()
- self.volumes_mock = self.app.client_manager.volume.volumes
- self.volumes_mock.reset_mock()
- self.snapshots_mock = self.app.client_manager.volume.volume_snapshots
- self.snapshots_mock.reset_mock()
+ self.app.client_manager.sdk_connection = mock.Mock()
+ self.app.client_manager.sdk_connection.volume = mock.Mock()
+ self.sdk_client = self.app.client_manager.sdk_connection.volume
+ self.sdk_client.reset_mock()
+
+ patcher = mock.patch.object(
+ sdk_utils, 'supports_microversion', return_value=True
+ )
+ self.addCleanup(patcher.stop)
+ self.supports_microversion_mock = patcher.start()
+ self._set_mock_microversion(
+ self.app.client_manager.volume.api_version.get_string()
+ )
+
self.mock_volume = volume_fakes.create_one_volume()
self.mock_snapshot = volume_fakes.create_one_snapshot(
- attrs={'volume_id': self.volumes_mock.id}
+ attrs={'volume_id': self.mock_volume.id}
)
# Get the command object to test
self.cmd = volume.VolumeRevertToSnapshot(self.app, None)
+ def _set_mock_microversion(self, mock_v):
+ """Set a specific microversion for the mock supports_microversion()."""
+ self.supports_microversion_mock.reset_mock(return_value=True)
+ self.supports_microversion_mock.side_effect = (
+ lambda _, v: api_versions.APIVersion(v)
+ <= api_versions.APIVersion(mock_v)
+ )
+
def test_volume_revert_to_snapshot_pre_340(self):
arglist = [
self.mock_snapshot.id,
@@ -157,9 +175,7 @@ class TestVolumeRevertToSnapshot(volume_fakes.TestVolume):
)
def test_volume_revert_to_snapshot(self):
- self.app.client_manager.volume.api_version = api_versions.APIVersion(
- '3.40'
- )
+ self._set_mock_microversion('3.40')
arglist = [
self.mock_snapshot.id,
]
@@ -168,14 +184,22 @@ class TestVolumeRevertToSnapshot(volume_fakes.TestVolume):
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
- find_mock_result = [self.mock_snapshot, self.mock_volume]
with mock.patch.object(
- utils, 'find_resource', side_effect=find_mock_result
- ) as find_mock:
+ self.sdk_client, 'find_volume', return_value=self.mock_volume
+ ), mock.patch.object(
+ self.sdk_client, 'find_snapshot', return_value=self.mock_snapshot
+ ):
self.cmd.take_action(parsed_args)
- self.volumes_mock.revert_to_snapshot.assert_called_once_with(
- volume=self.mock_volume,
- snapshot=self.mock_snapshot,
+ self.sdk_client.revert_volume_to_snapshot.assert_called_once_with(
+ self.mock_volume,
+ self.mock_snapshot,
+ )
+ self.sdk_client.find_volume.assert_called_with(
+ self.mock_volume.id,
+ ignore_missing=False,
+ )
+ self.sdk_client.find_snapshot.assert_called_with(
+ self.mock_snapshot.id,
+ ignore_missing=False,
)
- self.assertEqual(2, find_mock.call_count)