tests: Use consistent shortcut to fake image client

This removes the need for a number of base test case subclasses. We use
'image_client' rather than 'client' to avoid conflicts with clients for
other services.

Note that this highlights a minor bug with the 'volume create' command
when using the v1 block storage API and creating a volume from an image.
This is corrected, though it can be assumed that no one is actually
using this code path to say it hasn't been reported in the few years
since the bug was introduced in Ussuri.

Change-Id: I571be27f68bb7669dcb883f3b4799731b4a35479
Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
This commit is contained in:
Stephen Finucane 2023-08-25 13:08:01 +01:00
parent a823228527
commit 28b1267921
15 changed files with 301 additions and 359 deletions

View File

@ -167,6 +167,7 @@ class TestComputev2(network_fakes.FakeClientMixin, utils.TestCommand):
) )
self.app.client_manager.image = mock.Mock() self.app.client_manager.image = mock.Mock()
self.image_client = self.app.client_manager.image
self.app.client_manager.volume = volume_fakes.FakeVolumeClient( self.app.client_manager.volume = volume_fakes.FakeVolumeClient(
endpoint=fakes.AUTH_URL, endpoint=fakes.AUTH_URL,

View File

@ -92,16 +92,6 @@ class TestServer(compute_fakes.TestComputev2):
self.flavors_mock = self.app.client_manager.compute.flavors self.flavors_mock = self.app.client_manager.compute.flavors
self.flavors_mock.reset_mock() self.flavors_mock.reset_mock()
# Get a shortcut to the image client ImageManager Mock
self.images_mock = self.app.client_manager.image.images
self.images_mock.reset_mock()
self.find_image_mock = self.app.client_manager.image.find_image
self.find_image_mock.reset_mock()
self.get_image_mock = self.app.client_manager.image.get_image
self.get_image_mock.reset_mock()
# Get a shortcut to the volume client VolumeManager Mock # Get a shortcut to the volume client VolumeManager Mock
self.volumes_mock = self.app.client_manager.volume.volumes self.volumes_mock = self.app.client_manager.volume.volumes
self.volumes_mock.reset_mock() self.volumes_mock.reset_mock()
@ -1375,8 +1365,8 @@ class TestServerCreate(TestServer):
self.servers_mock.create.return_value = self.new_server self.servers_mock.create.return_value = self.new_server
self.image = image_fakes.create_one_image() self.image = image_fakes.create_one_image()
self.find_image_mock.return_value = self.image self.image_client.find_image.return_value = self.image
self.get_image_mock.return_value = self.image self.image_client.get_image.return_value = self.image
self.flavor = compute_fakes.create_one_flavor() self.flavor = compute_fakes.create_one_flavor()
self.flavors_mock.get.return_value = self.flavor self.flavors_mock.get.return_value = self.flavor
@ -1452,7 +1442,7 @@ class TestServerCreate(TestServer):
self.assertEqual(self.columns, columns) self.assertEqual(self.columns, columns)
self.assertEqual(self.datalist(), data) self.assertEqual(self.datalist(), data)
self.assertFalse(self.images_mock.called) self.assertFalse(self.image_client.images.called)
self.assertFalse(self.flavors_mock.called) self.assertFalse(self.flavors_mock.called)
def test_server_create_with_options(self): def test_server_create_with_options(self):
@ -3444,7 +3434,7 @@ class TestServerCreate(TestServer):
} }
_image = image_fakes.create_one_image(image_info) _image = image_fakes.create_one_image(image_info)
self.images_mock.return_value = [_image] self.image_client.images.return_value = [_image]
parsed_args = self.check_parser(self.cmd, arglist, verifylist) parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@ -3500,7 +3490,7 @@ class TestServerCreate(TestServer):
'hw_disk_bus': 'ide', 'hw_disk_bus': 'ide',
} }
_image = image_fakes.create_one_image(image_info) _image = image_fakes.create_one_image(image_info)
self.images_mock.return_value = [_image] self.image_client.images.return_value = [_image]
parsed_args = self.check_parser(self.cmd, arglist, verifylist) parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@ -3557,7 +3547,7 @@ class TestServerCreate(TestServer):
} }
_image = image_fakes.create_one_image(image_info) _image = image_fakes.create_one_image(image_info)
self.images_mock.return_value = [_image] self.image_client.images.return_value = [_image]
parsed_args = self.check_parser(self.cmd, arglist, verifylist) parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@ -3589,7 +3579,7 @@ class TestServerCreate(TestServer):
target_image = image_fakes.create_one_image(image_info) target_image = image_fakes.create_one_image(image_info)
another_image = image_fakes.create_one_image({}) another_image = image_fakes.create_one_image({})
self.images_mock.return_value = [target_image, another_image] self.image_client.images.return_value = [target_image, another_image]
parsed_args = self.check_parser(self.cmd, arglist, verifylist) parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@ -3893,7 +3883,7 @@ class TestServerCreate(TestServer):
self.assertEqual(self.columns, columns) self.assertEqual(self.columns, columns)
self.assertEqual(self.datalist(), data) self.assertEqual(self.datalist(), data)
self.assertFalse(self.images_mock.called) self.assertFalse(self.image_client.images.called)
self.assertFalse(self.flavors_mock.called) self.assertFalse(self.flavors_mock.called)
def test_server_create_with_description_api_older(self): def test_server_create_with_description_api_older(self):
@ -3975,7 +3965,7 @@ class TestServerCreate(TestServer):
self.assertEqual(self.columns, columns) self.assertEqual(self.columns, columns)
self.assertEqual(self.datalist(), data) self.assertEqual(self.datalist(), data)
self.assertFalse(self.images_mock.called) self.assertFalse(self.image_client.images.called)
self.assertFalse(self.flavors_mock.called) self.assertFalse(self.flavors_mock.called)
def test_server_create_with_tag_pre_v252(self): def test_server_create_with_tag_pre_v252(self):
@ -4063,7 +4053,7 @@ class TestServerCreate(TestServer):
self.assertEqual(self.columns, columns) self.assertEqual(self.columns, columns)
self.assertEqual(self.datalist(), data) self.assertEqual(self.datalist(), data)
self.assertFalse(self.images_mock.called) self.assertFalse(self.image_client.images.called)
self.assertFalse(self.flavors_mock.called) self.assertFalse(self.flavors_mock.called)
def test_server_create_with_host_pre_v274(self): def test_server_create_with_host_pre_v274(self):
@ -4147,7 +4137,7 @@ class TestServerCreate(TestServer):
self.assertEqual(self.columns, columns) self.assertEqual(self.columns, columns)
self.assertEqual(self.datalist(), data) self.assertEqual(self.datalist(), data)
self.assertFalse(self.images_mock.called) self.assertFalse(self.image_client.images.called)
self.assertFalse(self.flavors_mock.called) self.assertFalse(self.flavors_mock.called)
def test_server_create_with_hypervisor_hostname_pre_v274(self): def test_server_create_with_hypervisor_hostname_pre_v274(self):
@ -4235,7 +4225,7 @@ class TestServerCreate(TestServer):
self.assertEqual(self.columns, columns) self.assertEqual(self.columns, columns)
self.assertEqual(self.datalist(), data) self.assertEqual(self.datalist(), data)
self.assertFalse(self.images_mock.called) self.assertFalse(self.image_client.images.called)
self.assertFalse(self.flavors_mock.called) self.assertFalse(self.flavors_mock.called)
def test_server_create_with_hostname_v290(self): def test_server_create_with_hostname_v290(self):
@ -4286,7 +4276,7 @@ class TestServerCreate(TestServer):
self.assertEqual(self.columns, columns) self.assertEqual(self.columns, columns)
self.assertEqual(self.datalist(), data) self.assertEqual(self.datalist(), data)
self.assertFalse(self.images_mock.called) self.assertFalse(self.image_client.images.called)
self.assertFalse(self.flavors_mock.called) self.assertFalse(self.flavors_mock.called)
def test_server_create_with_hostname_pre_v290(self): def test_server_create_with_hostname_pre_v290(self):
@ -4366,7 +4356,7 @@ class TestServerCreate(TestServer):
) )
self.assertEqual(self.columns, columns) self.assertEqual(self.columns, columns)
self.assertEqual(self.datalist(), data) self.assertEqual(self.datalist(), data)
self.assertFalse(self.images_mock.called) self.assertFalse(self.image_client.images.called)
self.assertFalse(self.flavors_mock.called) self.assertFalse(self.flavors_mock.called)
def test_server_create_with_trusted_image_cert_prev263(self): def test_server_create_with_trusted_image_cert_prev263(self):
@ -4714,9 +4704,8 @@ class _TestServerList(TestServer):
self.image = image_fakes.create_one_image() self.image = image_fakes.create_one_image()
# self.images_mock.return_value = [self.image] self.image_client.find_image.return_value = self.image
self.find_image_mock.return_value = self.image self.image_client.get_image.return_value = self.image
self.get_image_mock.return_value = self.image
self.flavor = compute_fakes.create_one_flavor() self.flavor = compute_fakes.create_one_flavor()
self.sdk_client.find_flavor.return_value = self.flavor self.sdk_client.find_flavor.return_value = self.flavor
@ -4735,7 +4724,7 @@ class TestServerList(_TestServerList):
super(TestServerList, self).setUp() super(TestServerList, self).setUp()
Image = collections.namedtuple('Image', 'id name') Image = collections.namedtuple('Image', 'id name')
self.images_mock.return_value = [ self.image_client.images.return_value = [
Image(id=s.image['id'], name=self.image.name) Image(id=s.image['id'], name=self.image.name)
# Image will be an empty string if boot-from-volume # Image will be an empty string if boot-from-volume
for s in self.servers for s in self.servers
@ -4774,11 +4763,11 @@ class TestServerList(_TestServerList):
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.sdk_client.servers.assert_called_with(**self.kwargs) self.sdk_client.servers.assert_called_with(**self.kwargs)
self.images_mock.assert_called() self.image_client.images.assert_called()
self.sdk_client.flavors.assert_called() self.sdk_client.flavors.assert_called()
# we did not pass image or flavor, so gets on those must be absent # we did not pass image or flavor, so gets on those must be absent
self.assertFalse(self.flavors_mock.get.call_count) self.assertFalse(self.flavors_mock.get.call_count)
self.assertFalse(self.get_image_mock.call_count) self.assertFalse(self.image_client.get_image.call_count)
self.assertEqual(self.columns, columns) self.assertEqual(self.columns, columns)
self.assertEqual(self.data, tuple(data)) self.assertEqual(self.data, tuple(data))
@ -4796,7 +4785,7 @@ class TestServerList(_TestServerList):
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.sdk_client.servers.assert_called_with(**self.kwargs) self.sdk_client.servers.assert_called_with(**self.kwargs)
self.images_mock.assert_not_called() self.image_client.images.assert_not_called()
self.sdk_client.flavors.assert_not_called() self.sdk_client.flavors.assert_not_called()
self.assertEqual(self.columns, columns) self.assertEqual(self.columns, columns)
self.assertEqual(self.data, tuple(data)) self.assertEqual(self.data, tuple(data))
@ -4833,7 +4822,7 @@ class TestServerList(_TestServerList):
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.sdk_client.servers.assert_called_with(**self.kwargs) self.sdk_client.servers.assert_called_with(**self.kwargs)
image_ids = {s.image['id'] for s in self.servers if s.image} image_ids = {s.image['id'] for s in self.servers if s.image}
self.images_mock.assert_called_once_with( self.image_client.images.assert_called_once_with(
id=f'in:{",".join(image_ids)}', id=f'in:{",".join(image_ids)}',
) )
self.sdk_client.flavors.assert_called_once_with(is_public=None) self.sdk_client.flavors.assert_called_once_with(is_public=None)
@ -4913,7 +4902,7 @@ class TestServerList(_TestServerList):
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.sdk_client.servers.assert_called_with(**self.kwargs) self.sdk_client.servers.assert_called_with(**self.kwargs)
self.images_mock.assert_not_called() self.image_client.images.assert_not_called()
self.sdk_client.flavors.assert_not_called() self.sdk_client.flavors.assert_not_called()
self.assertEqual(self.columns, columns) self.assertEqual(self.columns, columns)
self.assertEqual(self.data, tuple(data)) self.assertEqual(self.data, tuple(data))
@ -4944,7 +4933,7 @@ class TestServerList(_TestServerList):
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.sdk_client.servers.assert_called_with(**self.kwargs) self.sdk_client.servers.assert_called_with(**self.kwargs)
self.images_mock.assert_not_called() self.image_client.images.assert_not_called()
self.sdk_client.flavors.assert_not_called() self.sdk_client.flavors.assert_not_called()
self.assertEqual(self.columns, columns) self.assertEqual(self.columns, columns)
self.assertEqual(self.data, tuple(data)) self.assertEqual(self.data, tuple(data))
@ -4961,9 +4950,9 @@ class TestServerList(_TestServerList):
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.sdk_client.servers.assert_called_with(**self.kwargs) self.sdk_client.servers.assert_called_with(**self.kwargs)
self.images_mock.assert_not_called() self.image_client.images.assert_not_called()
self.sdk_client.flavors.assert_not_called() self.sdk_client.flavors.assert_not_called()
self.get_image_mock.assert_called() self.image_client.get_image.assert_called()
self.sdk_client.find_flavor.assert_called() self.sdk_client.find_flavor.assert_called()
self.assertEqual(self.columns, columns) self.assertEqual(self.columns, columns)
@ -4976,13 +4965,13 @@ class TestServerList(_TestServerList):
parsed_args = self.check_parser(self.cmd, arglist, verifylist) parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.find_image_mock.assert_called_with( self.image_client.find_image.assert_called_with(
self.image.id, ignore_missing=False self.image.id, ignore_missing=False
) )
self.kwargs['image'] = self.image.id self.kwargs['image'] = self.image.id
self.sdk_client.servers.assert_called_with(**self.kwargs) self.sdk_client.servers.assert_called_with(**self.kwargs)
self.images_mock.assert_not_called() self.image_client.images.assert_not_called()
self.sdk_client.flavors.assert_called_once() self.sdk_client.flavors.assert_called_once()
self.assertEqual(self.columns, columns) self.assertEqual(self.columns, columns)
@ -5001,7 +4990,7 @@ class TestServerList(_TestServerList):
self.kwargs['flavor'] = self.flavor.id self.kwargs['flavor'] = self.flavor.id
self.sdk_client.servers.assert_called_with(**self.kwargs) self.sdk_client.servers.assert_called_with(**self.kwargs)
self.images_mock.assert_called_once() self.image_client.images.assert_called_once()
self.sdk_client.flavors.assert_not_called() self.sdk_client.flavors.assert_not_called()
self.assertEqual(self.columns, columns) self.assertEqual(self.columns, columns)
@ -5326,7 +5315,7 @@ class TestServerList(_TestServerList):
# Make sure the returned image and flavor IDs match the servers. # Make sure the returned image and flavor IDs match the servers.
Image = collections.namedtuple('Image', 'id name') Image = collections.namedtuple('Image', 'id name')
self.images_mock.return_value = [ self.image_client.images.return_value = [
Image(id=s.image['id'], name=self.image.name) Image(id=s.image['id'], name=self.image.name)
# Image will be an empty string if boot-from-volume # Image will be an empty string if boot-from-volume
for s in servers for s in servers
@ -5409,7 +5398,7 @@ class TestServerListV273(_TestServerList):
self.sdk_client.servers.return_value = self.servers self.sdk_client.servers.return_value = self.servers
Image = collections.namedtuple('Image', 'id name') Image = collections.namedtuple('Image', 'id name')
self.images_mock.return_value = [ self.image_client.images.return_value = [
Image(id=s.image['id'], name=self.image.name) Image(id=s.image['id'], name=self.image.name)
# Image will be an empty string if boot-from-volume # Image will be an empty string if boot-from-volume
for s in self.servers for s in self.servers
@ -6172,7 +6161,7 @@ class TestServerRebuild(TestServer):
# Return value for utils.find_resource for image # Return value for utils.find_resource for image
self.image = image_fakes.create_one_image() self.image = image_fakes.create_one_image()
self.get_image_mock.return_value = self.image self.image_client.get_image.return_value = self.image
# Fake the rebuilt new server. # Fake the rebuilt new server.
attrs = { attrs = {
@ -6200,7 +6189,7 @@ class TestServerRebuild(TestServer):
def test_rebuild_with_image_name(self): def test_rebuild_with_image_name(self):
image_name = 'my-custom-image' image_name = 'my-custom-image'
user_image = image_fakes.create_one_image(attrs={'name': image_name}) user_image = image_fakes.create_one_image(attrs={'name': image_name})
self.find_image_mock.return_value = user_image self.image_client.find_image.return_value = user_image
attrs = { attrs = {
'image': {'id': user_image.id}, 'image': {'id': user_image.id},
@ -6218,10 +6207,10 @@ class TestServerRebuild(TestServer):
self.cmd.take_action(parsed_args) self.cmd.take_action(parsed_args)
self.servers_mock.get.assert_called_with(self.server.id) self.servers_mock.get.assert_called_with(self.server.id)
self.find_image_mock.assert_called_with( self.image_client.find_image.assert_called_with(
image_name, ignore_missing=False image_name, ignore_missing=False
) )
self.get_image_mock.assert_called_with(user_image.id) self.image_client.get_image.assert_called_with(user_image.id)
self.server.rebuild.assert_called_with(user_image, None) self.server.rebuild.assert_called_with(user_image, None)
def test_rebuild_with_current_image(self): def test_rebuild_with_current_image(self):
@ -6235,8 +6224,8 @@ class TestServerRebuild(TestServer):
self.cmd.take_action(parsed_args) self.cmd.take_action(parsed_args)
self.servers_mock.get.assert_called_with(self.server.id) self.servers_mock.get.assert_called_with(self.server.id)
self.find_image_mock.assert_not_called() self.image_client.find_image.assert_not_called()
self.get_image_mock.assert_called_with(self.image.id) self.image_client.get_image.assert_called_with(self.image.id)
self.server.rebuild.assert_called_with(self.image, None) self.server.rebuild.assert_called_with(self.image, None)
def test_rebuild_with_volume_backed_server_no_image(self): def test_rebuild_with_volume_backed_server_no_image(self):
@ -6274,7 +6263,7 @@ class TestServerRebuild(TestServer):
self.cmd.take_action(parsed_args) self.cmd.take_action(parsed_args)
self.servers_mock.get.assert_called_with(self.server.id) self.servers_mock.get.assert_called_with(self.server.id)
self.get_image_mock.assert_called_with(self.image.id) self.image_client.get_image.assert_called_with(self.image.id)
self.server.rebuild.assert_called_with(self.image, None, name=name) self.server.rebuild.assert_called_with(self.image, None, name=name)
def test_rebuild_with_preserve_ephemeral(self): def test_rebuild_with_preserve_ephemeral(self):
@ -6292,7 +6281,7 @@ class TestServerRebuild(TestServer):
self.cmd.take_action(parsed_args) self.cmd.take_action(parsed_args)
self.servers_mock.get.assert_called_with(self.server.id) self.servers_mock.get.assert_called_with(self.server.id)
self.get_image_mock.assert_called_with(self.image.id) self.image_client.get_image.assert_called_with(self.image.id)
self.server.rebuild.assert_called_with( self.server.rebuild.assert_called_with(
self.image, None, preserve_ephemeral=True self.image, None, preserve_ephemeral=True
) )
@ -6312,7 +6301,7 @@ class TestServerRebuild(TestServer):
self.cmd.take_action(parsed_args) self.cmd.take_action(parsed_args)
self.servers_mock.get.assert_called_with(self.server.id) self.servers_mock.get.assert_called_with(self.server.id)
self.get_image_mock.assert_called_with(self.image.id) self.image_client.get_image.assert_called_with(self.image.id)
self.server.rebuild.assert_called_with( self.server.rebuild.assert_called_with(
self.image, None, preserve_ephemeral=False self.image, None, preserve_ephemeral=False
) )
@ -6327,7 +6316,7 @@ class TestServerRebuild(TestServer):
self.cmd.take_action(parsed_args) self.cmd.take_action(parsed_args)
self.servers_mock.get.assert_called_with(self.server.id) self.servers_mock.get.assert_called_with(self.server.id)
self.get_image_mock.assert_called_with(self.image.id) self.image_client.get_image.assert_called_with(self.image.id)
self.server.rebuild.assert_called_with(self.image, password) self.server.rebuild.assert_called_with(self.image, password)
def test_rebuild_with_description(self): def test_rebuild_with_description(self):
@ -6343,7 +6332,7 @@ class TestServerRebuild(TestServer):
self.cmd.take_action(parsed_args) self.cmd.take_action(parsed_args)
self.servers_mock.get.assert_called_with(self.server.id) self.servers_mock.get.assert_called_with(self.server.id)
self.get_image_mock.assert_called_with(self.image.id) self.image_client.get_image.assert_called_with(self.image.id)
self.server.rebuild.assert_called_with( self.server.rebuild.assert_called_with(
self.image, None, description=description self.image, None, description=description
) )
@ -6388,7 +6377,7 @@ class TestServerRebuild(TestServer):
) )
self.servers_mock.get.assert_called_with(self.server.id) self.servers_mock.get.assert_called_with(self.server.id)
self.get_image_mock.assert_called_with(self.image.id) self.image_client.get_image.assert_called_with(self.image.id)
self.server.rebuild.assert_called_with(self.image, None) self.server.rebuild.assert_called_with(self.image, None)
@mock.patch.object(common_utils, 'wait_for_status', return_value=False) @mock.patch.object(common_utils, 'wait_for_status', return_value=False)
@ -6413,7 +6402,7 @@ class TestServerRebuild(TestServer):
) )
self.servers_mock.get.assert_called_with(self.server.id) self.servers_mock.get.assert_called_with(self.server.id)
self.get_image_mock.assert_called_with(self.image.id) self.image_client.get_image.assert_called_with(self.image.id)
self.server.rebuild.assert_called_with(self.image, None) self.server.rebuild.assert_called_with(self.image, None)
@mock.patch.object(common_utils, 'wait_for_status', return_value=True) @mock.patch.object(common_utils, 'wait_for_status', return_value=True)
@ -6443,7 +6432,7 @@ class TestServerRebuild(TestServer):
) )
self.servers_mock.get.assert_called_with(self.server.id) self.servers_mock.get.assert_called_with(self.server.id)
self.get_image_mock.assert_called_with(self.image.id) self.image_client.get_image.assert_called_with(self.image.id)
self.server.rebuild.assert_called_with(self.image, None) self.server.rebuild.assert_called_with(self.image, None)
@mock.patch.object(common_utils, 'wait_for_status', return_value=True) @mock.patch.object(common_utils, 'wait_for_status', return_value=True)
@ -6473,7 +6462,7 @@ class TestServerRebuild(TestServer):
) )
self.servers_mock.get.assert_called_with(self.server.id) self.servers_mock.get.assert_called_with(self.server.id)
self.get_image_mock.assert_called_with(self.image.id) self.image_client.get_image.assert_called_with(self.image.id)
self.server.rebuild.assert_called_with(self.image, None) self.server.rebuild.assert_called_with(self.image, None)
def test_rebuild_wrong_status_fails(self): def test_rebuild_wrong_status_fails(self):
@ -6491,7 +6480,7 @@ class TestServerRebuild(TestServer):
) )
self.servers_mock.get.assert_called_with(self.server.id) self.servers_mock.get.assert_called_with(self.server.id)
self.get_image_mock.assert_called_with(self.image.id) self.image_client.get_image.assert_called_with(self.image.id)
self.server.rebuild.assert_not_called() self.server.rebuild.assert_not_called()
def test_rebuild_with_property(self): def test_rebuild_with_property(self):
@ -6513,7 +6502,7 @@ class TestServerRebuild(TestServer):
self.cmd.take_action(parsed_args) self.cmd.take_action(parsed_args)
self.servers_mock.get.assert_called_with(self.server.id) self.servers_mock.get.assert_called_with(self.server.id)
self.get_image_mock.assert_called_with(self.image.id) self.image_client.get_image.assert_called_with(self.image.id)
self.server.rebuild.assert_called_with( self.server.rebuild.assert_called_with(
self.image, None, meta=expected_properties self.image, None, meta=expected_properties
) )
@ -6538,7 +6527,7 @@ class TestServerRebuild(TestServer):
self.cmd.take_action(parsed_args) self.cmd.take_action(parsed_args)
self.servers_mock.get.assert_called_with(self.server.id) self.servers_mock.get.assert_called_with(self.server.id)
self.get_image_mock.assert_called_with(self.image.id) self.image_client.get_image.assert_called_with(self.image.id)
self.server.rebuild.assert_called_with( self.server.rebuild.assert_called_with(
self.image, None, key_name=self.server.key_name self.image, None, key_name=self.server.key_name
) )
@ -6581,7 +6570,7 @@ class TestServerRebuild(TestServer):
self.cmd.take_action(parsed_args) self.cmd.take_action(parsed_args)
self.servers_mock.get.assert_called_with(self.server.id) self.servers_mock.get.assert_called_with(self.server.id)
self.get_image_mock.assert_called_with(self.image.id) self.image_client.get_image.assert_called_with(self.image.id)
self.server.rebuild.assert_called_with(self.image, None, key_name=None) self.server.rebuild.assert_called_with(self.image, None, key_name=None)
def test_rebuild_with_keypair_name_and_unset(self): def test_rebuild_with_keypair_name_and_unset(self):
@ -6634,7 +6623,7 @@ class TestServerRebuild(TestServer):
mock_file.close.assert_called_with() mock_file.close.assert_called_with()
self.servers_mock.get.assert_called_with(self.server.id) self.servers_mock.get.assert_called_with(self.server.id)
self.get_image_mock.assert_called_with(self.image.id) self.image_client.get_image.assert_called_with(self.image.id)
self.server.rebuild.assert_called_with( self.server.rebuild.assert_called_with(
self.image, self.image,
None, None,
@ -6679,7 +6668,7 @@ class TestServerRebuild(TestServer):
self.cmd.take_action(parsed_args) self.cmd.take_action(parsed_args)
self.servers_mock.get.assert_called_with(self.server.id) self.servers_mock.get.assert_called_with(self.server.id)
self.get_image_mock.assert_called_with(self.image.id) self.image_client.get_image.assert_called_with(self.image.id)
self.server.rebuild.assert_called_with(self.image, None, userdata=None) self.server.rebuild.assert_called_with(self.image, None, userdata=None)
def test_rebuild_with_no_user_data_pre_v254(self): def test_rebuild_with_no_user_data_pre_v254(self):
@ -6733,7 +6722,7 @@ class TestServerRebuild(TestServer):
self.cmd.take_action(parsed_args) self.cmd.take_action(parsed_args)
self.servers_mock.get.assert_called_with(self.server.id) self.servers_mock.get.assert_called_with(self.server.id)
self.get_image_mock.assert_called_with(self.image.id) self.image_client.get_image.assert_called_with(self.image.id)
self.server.rebuild.assert_called_with( self.server.rebuild.assert_called_with(
self.image, None, trusted_image_certificates=['foo', 'bar'] self.image, None, trusted_image_certificates=['foo', 'bar']
) )
@ -6777,7 +6766,7 @@ class TestServerRebuild(TestServer):
self.cmd.take_action(parsed_args) self.cmd.take_action(parsed_args)
self.servers_mock.get.assert_called_with(self.server.id) self.servers_mock.get.assert_called_with(self.server.id)
self.get_image_mock.assert_called_with(self.image.id) self.image_client.get_image.assert_called_with(self.image.id)
self.server.rebuild.assert_called_with( self.server.rebuild.assert_called_with(
self.image, None, trusted_image_certificates=None self.image, None, trusted_image_certificates=None
) )
@ -6813,7 +6802,7 @@ class TestServerRebuild(TestServer):
self.cmd.take_action(parsed_args) self.cmd.take_action(parsed_args)
self.servers_mock.get.assert_called_with(self.server.id) self.servers_mock.get.assert_called_with(self.server.id)
self.get_image_mock.assert_called_with(self.image.id) self.image_client.get_image.assert_called_with(self.image.id)
self.server.rebuild.assert_called_with( self.server.rebuild.assert_called_with(
self.image, None, hostname='new-hostname' self.image, None, hostname='new-hostname'
) )
@ -6841,7 +6830,7 @@ class TestServerRebuildVolumeBacked(TestServer):
super().setUp() super().setUp()
self.new_image = image_fakes.create_one_image() self.new_image = image_fakes.create_one_image()
self.find_image_mock.return_value = self.new_image self.image_client.find_image.return_value = self.new_image
attrs = { attrs = {
'image': '', 'image': '',
@ -6939,9 +6928,10 @@ class TestServerRebuildVolumeBacked(TestServer):
class TestEvacuateServer(TestServer): class TestEvacuateServer(TestServer):
def setUp(self): def setUp(self):
super(TestEvacuateServer, self).setUp() super(TestEvacuateServer, self).setUp()
# Return value for utils.find_resource for image # Return value for utils.find_resource for image
self.image = image_fakes.create_one_image() self.image = image_fakes.create_one_image()
self.images_mock.get.return_value = self.image self.image_client.get_image.return_value = self.image
# Fake the rebuilt new server. # Fake the rebuilt new server.
attrs = { attrs = {
@ -7137,7 +7127,7 @@ class TestServerRescue(TestServer):
# Return value for utils.find_resource for image # Return value for utils.find_resource for image
self.image = image_fakes.create_one_image() self.image = image_fakes.create_one_image()
self.get_image_mock.return_value = self.image self.image_client.get_image.return_value = self.image
new_server = compute_fakes.create_one_server() new_server = compute_fakes.create_one_server()
attrs = { attrs = {
@ -7178,7 +7168,7 @@ class TestServerRescue(TestServer):
def test_rescue_with_new_image(self): def test_rescue_with_new_image(self):
new_image = image_fakes.create_one_image() new_image = image_fakes.create_one_image()
self.find_image_mock.return_value = new_image self.image_client.find_image.return_value = new_image
arglist = [ arglist = [
'--image', '--image',
new_image.id, new_image.id,
@ -7194,7 +7184,7 @@ class TestServerRescue(TestServer):
self.cmd.take_action(parsed_args) self.cmd.take_action(parsed_args)
self.servers_mock.get.assert_called_with(self.server.id) self.servers_mock.get.assert_called_with(self.server.id)
self.find_image_mock.assert_called_with(new_image.id) self.image_client.find_image.assert_called_with(new_image.id)
self.server.rescue.assert_called_with(image=new_image, password=None) self.server.rescue.assert_called_with(image=new_image, password=None)
def test_rescue_with_current_image_and_password(self): def test_rescue_with_current_image_and_password(self):
@ -8278,7 +8268,7 @@ class TestServerShow(TestServer):
# This is the return value for utils.find_resource() # This is the return value for utils.find_resource()
self.sdk_client.get_server.return_value = self.server self.sdk_client.get_server.return_value = self.server
self.get_image_mock.return_value = self.image self.image_client.get_image.return_value = self.image
self.flavors_mock.get.return_value = self.flavor self.flavors_mock.get.return_value = self.flavor
# Get the command object to test # Get the command object to test
@ -9119,7 +9109,7 @@ class TestServerGeneral(TestServer):
} }
_server = compute_fakes.create_one_server(attrs=server_info) _server = compute_fakes.create_one_server(attrs=server_info)
find_resource.side_effect = [_server, _flavor] find_resource.side_effect = [_server, _flavor]
self.get_image_mock.return_value = _image self.image_client.get_image.return_value = _image
# Prepare result data. # Prepare result data.
info = { info = {
@ -9139,7 +9129,7 @@ class TestServerGeneral(TestServer):
# Call _prep_server_detail(). # Call _prep_server_detail().
server_detail = server._prep_server_detail( server_detail = server._prep_server_detail(
self.app.client_manager.compute, self.app.client_manager.compute,
self.app.client_manager.image, self.image_client,
_server, _server,
) )
# 'networks' is used to create _server. Remove it. # 'networks' is used to create _server. Remove it.

View File

@ -31,10 +31,6 @@ class TestServerBackup(compute_fakes.TestComputev2):
self.app.client_manager.sdk_connection.compute = mock.Mock() self.app.client_manager.sdk_connection.compute = mock.Mock()
self.sdk_client = self.app.client_manager.sdk_connection.compute self.sdk_client = self.app.client_manager.sdk_connection.compute
# Get a shortcut to the image client ImageManager Mock
self.images_mock = self.app.client_manager.image
self.images_mock.find_image.reset_mock()
# Set object attributes to be tested. Could be overwritten in subclass. # Set object attributes to be tested. Could be overwritten in subclass.
self.attrs = {} self.attrs = {}
@ -102,8 +98,7 @@ class TestServerBackupCreate(TestServerBackup):
count=count, count=count,
) )
# self.images_mock.get = mock.Mock(side_effect=images) self.image_client.find_image = mock.Mock(side_effect=images)
self.images_mock.find_image = mock.Mock(side_effect=images)
return images return images
def test_server_backup_defaults(self): def test_server_backup_defaults(self):
@ -177,7 +172,7 @@ class TestServerBackupCreate(TestServerBackup):
def test_server_backup_wait_fail(self, mock_wait_for_status): def test_server_backup_wait_fail(self, mock_wait_for_status):
servers = self.setup_servers_mock(count=1) servers = self.setup_servers_mock(count=1)
images = self.setup_images_mock(count=1, servers=servers) images = self.setup_images_mock(count=1, servers=servers)
self.images_mock.get_image = mock.Mock( self.image_client.get_image = mock.Mock(
side_effect=images[0], side_effect=images[0],
) )
@ -211,7 +206,7 @@ class TestServerBackupCreate(TestServerBackup):
) )
mock_wait_for_status.assert_called_once_with( mock_wait_for_status.assert_called_once_with(
self.images_mock.get_image, images[0].id, callback=mock.ANY self.image_client.get_image, images[0].id, callback=mock.ANY
) )
@mock.patch.object(common_utils, 'wait_for_status', return_value=True) @mock.patch.object(common_utils, 'wait_for_status', return_value=True)
@ -219,7 +214,7 @@ class TestServerBackupCreate(TestServerBackup):
servers = self.setup_servers_mock(count=1) servers = self.setup_servers_mock(count=1)
images = self.setup_images_mock(count=1, servers=servers) images = self.setup_images_mock(count=1, servers=servers)
self.images_mock.get_image = mock.Mock( self.image_client.get_image = mock.Mock(
side_effect=images[0], side_effect=images[0],
) )
@ -252,7 +247,7 @@ class TestServerBackupCreate(TestServerBackup):
) )
mock_wait_for_status.assert_called_once_with( mock_wait_for_status.assert_called_once_with(
self.images_mock.get_image, images[0].id, callback=mock.ANY self.image_client.get_image, images[0].id, callback=mock.ANY
) )
self.assertEqual(self.image_columns(images[0]), columns) self.assertEqual(self.image_columns(images[0]), columns)

View File

@ -30,10 +30,6 @@ class TestServerImage(compute_fakes.TestComputev2):
self.app.client_manager.sdk_connection.compute = mock.Mock() self.app.client_manager.sdk_connection.compute = mock.Mock()
self.sdk_client = self.app.client_manager.sdk_connection.compute self.sdk_client = self.app.client_manager.sdk_connection.compute
# Get a shortcut to the image client ImageManager Mock
self.images_mock = self.app.client_manager.image
self.images_mock.find_image.reset_mock()
# Set object attributes to be tested. Could be overwritten in subclass. # Set object attributes to be tested. Could be overwritten in subclass.
self.attrs = {} self.attrs = {}
@ -100,7 +96,7 @@ class TestServerImageCreate(TestServerImage):
count=count, count=count,
) )
self.images_mock.find_image = mock.Mock(side_effect=images) self.image_client.find_image = mock.Mock(side_effect=images)
self.sdk_client.create_server_image = mock.Mock( self.sdk_client.create_server_image = mock.Mock(
return_value=images[0], return_value=images[0],
) )
@ -192,7 +188,7 @@ class TestServerImageCreate(TestServerImage):
) )
mock_wait_for_status.assert_called_once_with( mock_wait_for_status.assert_called_once_with(
self.images_mock.get_image, images[0].id, callback=mock.ANY self.image_client.get_image, images[0].id, callback=mock.ANY
) )
@mock.patch.object(common_utils, 'wait_for_status', return_value=True) @mock.patch.object(common_utils, 'wait_for_status', return_value=True)
@ -222,7 +218,7 @@ class TestServerImageCreate(TestServerImage):
) )
mock_wait_for_status.assert_called_once_with( mock_wait_for_status.assert_called_once_with(
self.images_mock.get_image, images[0].id, callback=mock.ANY self.image_client.get_image, images[0].id, callback=mock.ANY
) )
self.assertEqual(self.image_columns(images[0]), columns) self.assertEqual(self.image_columns(images[0]), columns)

View File

@ -27,14 +27,13 @@ class TestImagev1(utils.TestCommand):
super().setUp() super().setUp()
self.app.client_manager.image = mock.Mock() self.app.client_manager.image = mock.Mock()
self.image_client = self.app.client_manager.image
self.app.client_manager.volume = volume_fakes.FakeVolumev1Client( self.app.client_manager.volume = volume_fakes.FakeVolumev1Client(
endpoint=fakes.AUTH_URL, endpoint=fakes.AUTH_URL,
token=fakes.AUTH_TOKEN, token=fakes.AUTH_TOKEN,
) )
self.client = self.app.client_manager.image
def create_one_image(attrs=None): def create_one_image(attrs=None):
"""Create a fake image. """Create a fake image.

View File

@ -11,7 +11,6 @@
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
#
import copy import copy
from unittest import mock from unittest import mock
@ -23,11 +22,7 @@ from openstackclient.tests.unit import fakes
from openstackclient.tests.unit.image.v1 import fakes as image_fakes from openstackclient.tests.unit.image.v1 import fakes as image_fakes
class TestImage(image_fakes.TestImagev1): class TestImageCreate(image_fakes.TestImagev1):
pass
class TestImageCreate(TestImage):
new_image = image_fakes.create_one_image() new_image = image_fakes.create_one_image()
columns = ( columns = (
'container_format', 'container_format',
@ -59,9 +54,9 @@ class TestImageCreate(TestImage):
def setUp(self): def setUp(self):
super(TestImageCreate, self).setUp() super(TestImageCreate, self).setUp()
self.client.create_image = mock.Mock(return_value=self.new_image) self.image_client.create_image = mock.Mock(return_value=self.new_image)
self.client.find_image = mock.Mock(return_value=self.new_image) self.image_client.find_image = mock.Mock(return_value=self.new_image)
self.client.update_image = mock.Mock(return_image=self.new_image) self.image_client.update_image = mock.Mock(return_image=self.new_image)
# Get the command object to test # Get the command object to test
self.cmd = image.CreateImage(self.app, None) self.cmd = image.CreateImage(self.app, None)
@ -84,14 +79,14 @@ class TestImageCreate(TestImage):
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
# ImageManager.create(name=, **) # ImageManager.create(name=, **)
self.client.create_image.assert_called_with( self.image_client.create_image.assert_called_with(
name=self.new_image.name, name=self.new_image.name,
container_format=image.DEFAULT_CONTAINER_FORMAT, container_format=image.DEFAULT_CONTAINER_FORMAT,
disk_format=image.DEFAULT_DISK_FORMAT, disk_format=image.DEFAULT_DISK_FORMAT,
) )
# Verify update() was not called, if it was show the args # Verify update() was not called, if it was show the args
self.assertEqual(self.client.update_image.call_args_list, []) self.assertEqual(self.image_client.update_image.call_args_list, [])
self.assertEqual(self.columns, columns) self.assertEqual(self.columns, columns)
self.assertCountEqual(self.data, data) self.assertCountEqual(self.data, data)
@ -133,7 +128,7 @@ class TestImageCreate(TestImage):
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
# ImageManager.create(name=, **) # ImageManager.create(name=, **)
self.client.create_image.assert_called_with( self.image_client.create_image.assert_called_with(
name=self.new_image.name, name=self.new_image.name,
container_format='ovf', container_format='ovf',
disk_format='ami', disk_format='ami',
@ -145,7 +140,7 @@ class TestImageCreate(TestImage):
) )
# Verify update() was not called, if it was show the args # Verify update() was not called, if it was show the args
self.assertEqual(self.client.update_image.call_args_list, []) self.assertEqual(self.image_client.update_image.call_args_list, [])
self.assertEqual(self.columns, columns) self.assertEqual(self.columns, columns)
self.assertCountEqual(self.data, data) self.assertCountEqual(self.data, data)
@ -190,7 +185,7 @@ class TestImageCreate(TestImage):
mock_file.close.assert_called_with() mock_file.close.assert_called_with()
# ImageManager.create(name=, **) # ImageManager.create(name=, **)
self.client.create_image.assert_called_with( self.image_client.create_image.assert_called_with(
name=self.new_image.name, name=self.new_image.name,
container_format=image.DEFAULT_CONTAINER_FORMAT, container_format=image.DEFAULT_CONTAINER_FORMAT,
disk_format=image.DEFAULT_DISK_FORMAT, disk_format=image.DEFAULT_DISK_FORMAT,
@ -204,21 +199,21 @@ class TestImageCreate(TestImage):
) )
# Verify update() was not called, if it was show the args # Verify update() was not called, if it was show the args
self.assertEqual(self.client.update_image.call_args_list, []) self.assertEqual(self.image_client.update_image.call_args_list, [])
self.assertEqual(self.columns, columns) self.assertEqual(self.columns, columns)
self.assertCountEqual(self.data, data) self.assertCountEqual(self.data, data)
class TestImageDelete(TestImage): class TestImageDelete(image_fakes.TestImagev1):
_image = image_fakes.create_one_image() _image = image_fakes.create_one_image()
def setUp(self): def setUp(self):
super(TestImageDelete, self).setUp() super(TestImageDelete, self).setUp()
# This is the return value for utils.find_resource() # This is the return value for utils.find_resource()
self.client.find_image = mock.Mock(return_value=self._image) self.image_client.find_image = mock.Mock(return_value=self._image)
self.client.delete_image = mock.Mock(return_value=None) self.image_client.delete_image = mock.Mock(return_value=None)
# Get the command object to test # Get the command object to test
self.cmd = image.DeleteImage(self.app, None) self.cmd = image.DeleteImage(self.app, None)
@ -234,11 +229,11 @@ class TestImageDelete(TestImage):
result = self.cmd.take_action(parsed_args) result = self.cmd.take_action(parsed_args)
self.client.delete_image.assert_called_with(self._image.id) self.image_client.delete_image.assert_called_with(self._image.id)
self.assertIsNone(result) self.assertIsNone(result)
class TestImageList(TestImage): class TestImageList(image_fakes.TestImagev1):
_image = image_fakes.create_one_image() _image = image_fakes.create_one_image()
columns = ( columns = (
@ -266,8 +261,8 @@ class TestImageList(TestImage):
def setUp(self): def setUp(self):
super(TestImageList, self).setUp() super(TestImageList, self).setUp()
self.client.images = mock.Mock() self.image_client.images = mock.Mock()
self.client.images.side_effect = [ self.image_client.images.side_effect = [
[self._image], [self._image],
[], [],
] ]
@ -288,7 +283,7 @@ class TestImageList(TestImage):
# returns a tuple containing the column names and an iterable # returns a tuple containing the column names and an iterable
# containing the data to be listed. # containing the data to be listed.
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.client.images.assert_called_with() self.image_client.images.assert_called_with()
self.assertEqual(self.columns, columns) self.assertEqual(self.columns, columns)
self.assertEqual(self.datalist, tuple(data)) self.assertEqual(self.datalist, tuple(data))
@ -308,7 +303,7 @@ class TestImageList(TestImage):
# returns a tuple containing the column names and an iterable # returns a tuple containing the column names and an iterable
# containing the data to be listed. # containing the data to be listed.
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.client.images.assert_called_with( self.image_client.images.assert_called_with(
is_public=True, is_public=True,
) )
@ -330,7 +325,7 @@ class TestImageList(TestImage):
# returns a tuple containing the column names and an iterable # returns a tuple containing the column names and an iterable
# containing the data to be listed. # containing the data to be listed.
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.client.images.assert_called_with( self.image_client.images.assert_called_with(
is_private=True, is_private=True,
) )
@ -350,7 +345,7 @@ class TestImageList(TestImage):
# returns a tuple containing the column names and an iterable # returns a tuple containing the column names and an iterable
# containing the data to be listed. # containing the data to be listed.
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.client.images.assert_called_with() self.image_client.images.assert_called_with()
collist = ( collist = (
'ID', 'ID',
@ -406,7 +401,7 @@ class TestImageList(TestImage):
# returns a tuple containing the column names and an iterable # returns a tuple containing the column names and an iterable
# containing the data to be listed. # containing the data to be listed.
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.client.images.assert_called_with() self.image_client.images.assert_called_with()
sf_mock.assert_called_with( sf_mock.assert_called_with(
[self._image], [self._image],
attr='a', attr='a',
@ -432,22 +427,22 @@ class TestImageList(TestImage):
# returns a tuple containing the column names and an iterable # returns a tuple containing the column names and an iterable
# containing the data to be listed. # containing the data to be listed.
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.client.images.assert_called_with() self.image_client.images.assert_called_with()
si_mock.assert_called_with([self._image], 'name:asc') si_mock.assert_called_with([self._image], 'name:asc')
self.assertEqual(self.columns, columns) self.assertEqual(self.columns, columns)
self.assertEqual(self.datalist, tuple(data)) self.assertEqual(self.datalist, tuple(data))
class TestImageSet(TestImage): class TestImageSet(image_fakes.TestImagev1):
_image = image_fakes.create_one_image() _image = image_fakes.create_one_image()
def setUp(self): def setUp(self):
super(TestImageSet, self).setUp() super(TestImageSet, self).setUp()
# This is the return value for utils.find_resource() # This is the return value for utils.find_resource()
self.client.find_image = mock.Mock(return_value=self._image) self.image_client.find_image = mock.Mock(return_value=self._image)
self.client.update_image = mock.Mock(return_value=self._image) self.image_client.update_image = mock.Mock(return_value=self._image)
# Get the command object to test # Get the command object to test
self.cmd = image.SetImage(self.app, None) self.cmd = image.SetImage(self.app, None)
@ -463,7 +458,7 @@ class TestImageSet(TestImage):
result = self.cmd.take_action(parsed_args) result = self.cmd.take_action(parsed_args)
self.client.update_image.assert_called_with(self._image.id, **{}) self.image_client.update_image.assert_called_with(self._image.id, **{})
self.assertIsNone(result) self.assertIsNone(result)
def test_image_set_options(self): def test_image_set_options(self):
@ -508,7 +503,9 @@ class TestImageSet(TestImage):
'size': 35165824, 'size': 35165824,
} }
# ImageManager.update(image, **kwargs) # ImageManager.update(image, **kwargs)
self.client.update_image.assert_called_with(self._image.id, **kwargs) self.image_client.update_image.assert_called_with(
self._image.id, **kwargs
)
self.assertIsNone(result) self.assertIsNone(result)
def test_image_set_bools1(self): def test_image_set_bools1(self):
@ -533,7 +530,9 @@ class TestImageSet(TestImage):
'is_public': False, 'is_public': False,
} }
# ImageManager.update(image, **kwargs) # ImageManager.update(image, **kwargs)
self.client.update_image.assert_called_with(self._image.id, **kwargs) self.image_client.update_image.assert_called_with(
self._image.id, **kwargs
)
self.assertIsNone(result) self.assertIsNone(result)
def test_image_set_bools2(self): def test_image_set_bools2(self):
@ -558,7 +557,9 @@ class TestImageSet(TestImage):
'is_public': True, 'is_public': True,
} }
# ImageManager.update(image, **kwargs) # ImageManager.update(image, **kwargs)
self.client.update_image.assert_called_with(self._image.id, **kwargs) self.image_client.update_image.assert_called_with(
self._image.id, **kwargs
)
self.assertIsNone(result) self.assertIsNone(result)
def test_image_set_properties(self): def test_image_set_properties(self):
@ -585,7 +586,9 @@ class TestImageSet(TestImage):
}, },
} }
# ImageManager.update(image, **kwargs) # ImageManager.update(image, **kwargs)
self.client.update_image.assert_called_with(self._image.id, **kwargs) self.image_client.update_image.assert_called_with(
self._image.id, **kwargs
)
self.assertIsNone(result) self.assertIsNone(result)
def test_image_update_volume(self): def test_image_update_volume(self):
@ -642,7 +645,7 @@ class TestImageSet(TestImage):
'', '',
) )
# ImageManager.update(image_id, remove_props=, **) # ImageManager.update(image_id, remove_props=, **)
self.client.update_image.assert_called_with( self.image_client.update_image.assert_called_with(
self._image.id, self._image.id,
name='updated_image', name='updated_image',
volume='volly', volume='volly',
@ -671,11 +674,13 @@ class TestImageSet(TestImage):
'min_ram': 0, 'min_ram': 0,
} }
# ImageManager.update(image, **kwargs) # ImageManager.update(image, **kwargs)
self.client.update_image.assert_called_with(self._image.id, **kwargs) self.image_client.update_image.assert_called_with(
self._image.id, **kwargs
)
self.assertIsNone(result) self.assertIsNone(result)
class TestImageShow(TestImage): class TestImageShow(image_fakes.TestImagev1):
_image = image_fakes.create_one_image(attrs={'size': 2000}) _image = image_fakes.create_one_image(attrs={'size': 2000})
columns = ( columns = (
'container_format', 'container_format',
@ -707,7 +712,7 @@ class TestImageShow(TestImage):
def setUp(self): def setUp(self):
super(TestImageShow, self).setUp() super(TestImageShow, self).setUp()
self.client.find_image = mock.Mock(return_value=self._image) self.image_client.find_image = mock.Mock(return_value=self._image)
# Get the command object to test # Get the command object to test
self.cmd = image.ShowImage(self.app, None) self.cmd = image.ShowImage(self.app, None)
@ -725,7 +730,7 @@ class TestImageShow(TestImage):
# returns a two-part tuple with a tuple of column names and a tuple of # returns a two-part tuple with a tuple of column names and a tuple of
# data to be shown. # data to be shown.
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.client.find_image.assert_called_with( self.image_client.find_image.assert_called_with(
self._image.id, self._image.id,
) )
@ -747,7 +752,7 @@ class TestImageShow(TestImage):
# returns a two-part tuple with a tuple of column names and a tuple of # returns a two-part tuple with a tuple of column names and a tuple of
# data to be shown. # data to be shown.
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.client.find_image.assert_called_with( self.image_client.find_image.assert_called_with(
self._image.id, self._image.id,
) )

View File

@ -33,6 +33,7 @@ class TestImagev2(utils.TestCommand):
super().setUp() super().setUp()
self.app.client_manager.image = mock.Mock() self.app.client_manager.image = mock.Mock()
self.image_client = self.app.client_manager.image
self.app.client_manager.identity = identity_fakes.FakeIdentityv3Client( self.app.client_manager.identity = identity_fakes.FakeIdentityv3Client(
endpoint=fakes.AUTH_URL, endpoint=fakes.AUTH_URL,
@ -231,34 +232,6 @@ def create_tasks(attrs=None, count=2):
return tasks return tasks
class FakeMetadefNamespaceClient:
def __init__(self, **kwargs):
self.create_metadef_namespace = mock.Mock()
self.delete_metadef_namespace = mock.Mock()
self.metadef_namespaces = mock.Mock()
self.get_metadef_namespace = mock.Mock()
self.update_metadef_namespace = mock.Mock()
self.auth_token = kwargs['token']
self.management_url = kwargs['endpoint']
self.version = 2.0
class TestMetadefNamespaces(utils.TestCommand):
def setUp(self):
super().setUp()
self.app.client_manager.image = FakeMetadefNamespaceClient(
endpoint=fakes.AUTH_URL,
token=fakes.AUTH_TOKEN,
)
self.app.client_manager.identity = identity_fakes.FakeIdentityv3Client(
endpoint=fakes.AUTH_URL,
token=fakes.AUTH_TOKEN,
)
def create_one_metadef_namespace(attrs=None): def create_one_metadef_namespace(attrs=None):
"""Create a fake MetadefNamespace member. """Create a fake MetadefNamespace member.

View File

@ -32,9 +32,6 @@ class TestImage(image_fakes.TestImagev2, volume_fakes.TestVolume):
def setUp(self): def setUp(self):
super().setUp() super().setUp()
# Get shortcuts to mocked image client
self.client = self.app.client_manager.image
# Get shortcut to the Mocks in identity client # Get shortcut to the Mocks in identity client
self.project_mock = self.app.client_manager.identity.projects self.project_mock = self.app.client_manager.identity.projects
self.project_mock.reset_mock() self.project_mock.reset_mock()
@ -61,14 +58,13 @@ class TestImageCreate(TestImage):
super().setUp() super().setUp()
self.new_image = image_fakes.create_one_image() self.new_image = image_fakes.create_one_image()
self.client.create_image.return_value = self.new_image self.image_client.create_image.return_value = self.new_image
self.image_client.update_image.return_value = self.new_image
self.project_mock.get.return_value = self.project self.project_mock.get.return_value = self.project
self.domain_mock.get.return_value = self.domain self.domain_mock.get.return_value = self.domain
self.client.update_image.return_value = self.new_image
(self.expected_columns, self.expected_data) = zip( (self.expected_columns, self.expected_data) = zip(
*sorted(_image._format_image(self.new_image).items()) *sorted(_image._format_image(self.new_image).items())
) )
@ -92,7 +88,7 @@ class TestImageCreate(TestImage):
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
# ImageManager.create(name=, **) # ImageManager.create(name=, **)
self.client.create_image.assert_called_with( self.image_client.create_image.assert_called_with(
name=self.new_image.name, name=self.new_image.name,
allow_duplicates=True, allow_duplicates=True,
container_format=_image.DEFAULT_CONTAINER_FORMAT, container_format=_image.DEFAULT_CONTAINER_FORMAT,
@ -144,7 +140,7 @@ class TestImageCreate(TestImage):
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
# ImageManager.create(name=, **) # ImageManager.create(name=, **)
self.client.create_image.assert_called_with( self.image_client.create_image.assert_called_with(
name=self.new_image.name, name=self.new_image.name,
allow_duplicates=True, allow_duplicates=True,
container_format='ovf', container_format='ovf',
@ -240,7 +236,7 @@ class TestImageCreate(TestImage):
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
# ImageManager.create(name=, **) # ImageManager.create(name=, **)
self.client.create_image.assert_called_with( self.image_client.create_image.assert_called_with(
name=self.new_image.name, name=self.new_image.name,
allow_duplicates=True, allow_duplicates=True,
container_format=_image.DEFAULT_CONTAINER_FORMAT, container_format=_image.DEFAULT_CONTAINER_FORMAT,
@ -276,7 +272,7 @@ class TestImageCreate(TestImage):
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.client.create_image.assert_called_with( self.image_client.create_image.assert_called_with(
name=self.new_image.name, name=self.new_image.name,
allow_duplicates=True, allow_duplicates=True,
container_format=_image.DEFAULT_CONTAINER_FORMAT, container_format=_image.DEFAULT_CONTAINER_FORMAT,
@ -317,7 +313,7 @@ class TestImageCreate(TestImage):
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
# ImageManager.create(name=, **) # ImageManager.create(name=, **)
self.client.create_image.assert_called_with( self.image_client.create_image.assert_called_with(
name=self.new_image.name, name=self.new_image.name,
allow_duplicates=True, allow_duplicates=True,
container_format=_image.DEFAULT_CONTAINER_FORMAT, container_format=_image.DEFAULT_CONTAINER_FORMAT,
@ -439,10 +435,10 @@ class TestAddProjectToImage(TestImage):
super().setUp() super().setUp()
# This is the return value for utils.find_resource() # This is the return value for utils.find_resource()
self.client.find_image.return_value = self._image self.image_client.find_image.return_value = self._image
# Update the image_id in the MEMBER dict # Update the image_id in the MEMBER dict
self.client.add_member.return_value = self.new_member self.image_client.add_member.return_value = self.new_member
self.project_mock.get.return_value = self.project self.project_mock.get.return_value = self.project
self.domain_mock.get.return_value = self.domain self.domain_mock.get.return_value = self.domain
# Get the command object to test # Get the command object to test
@ -463,7 +459,7 @@ class TestAddProjectToImage(TestImage):
# returns a two-part tuple with a tuple of column names and a tuple of # returns a two-part tuple with a tuple of column names and a tuple of
# data to be shown. # data to be shown.
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.client.add_member.assert_called_with( self.image_client.add_member.assert_called_with(
image=self._image.id, member_id=self.project.id image=self._image.id, member_id=self.project.id
) )
@ -488,7 +484,7 @@ class TestAddProjectToImage(TestImage):
# returns a two-part tuple with a tuple of column names and a tuple of # returns a two-part tuple with a tuple of column names and a tuple of
# data to be shown. # data to be shown.
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.client.add_member.assert_called_with( self.image_client.add_member.assert_called_with(
image=self._image.id, member_id=self.project.id image=self._image.id, member_id=self.project.id
) )
@ -500,7 +496,7 @@ class TestImageDelete(TestImage):
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.client.delete_image.return_value = None self.image_client.delete_image.return_value = None
# Get the command object to test # Get the command object to test
self.cmd = _image.DeleteImage(self.app, None) self.cmd = _image.DeleteImage(self.app, None)
@ -516,11 +512,11 @@ class TestImageDelete(TestImage):
] ]
parsed_args = self.check_parser(self.cmd, arglist, verifylist) parsed_args = self.check_parser(self.cmd, arglist, verifylist)
self.client.find_image.side_effect = images self.image_client.find_image.side_effect = images
result = self.cmd.take_action(parsed_args) result = self.cmd.take_action(parsed_args)
self.client.delete_image.assert_called_with( self.image_client.delete_image.assert_called_with(
images[0].id, store=parsed_args.store, ignore_missing=False images[0].id, store=parsed_args.store, ignore_missing=False
) )
self.assertIsNone(result) self.assertIsNone(result)
@ -536,11 +532,11 @@ class TestImageDelete(TestImage):
verifylist = [('images', [images[0].id]), ('store', 'store1')] verifylist = [('images', [images[0].id]), ('store', 'store1')]
parsed_args = self.check_parser(self.cmd, arglist, verifylist) parsed_args = self.check_parser(self.cmd, arglist, verifylist)
self.client.find_image.side_effect = images self.image_client.find_image.side_effect = images
result = self.cmd.take_action(parsed_args) result = self.cmd.take_action(parsed_args)
self.client.delete_image.assert_called_with( self.image_client.delete_image.assert_called_with(
images[0].id, store=parsed_args.store, ignore_missing=False images[0].id, store=parsed_args.store, ignore_missing=False
) )
self.assertIsNone(result) self.assertIsNone(result)
@ -554,7 +550,7 @@ class TestImageDelete(TestImage):
] ]
parsed_args = self.check_parser(self.cmd, arglist, verifylist) parsed_args = self.check_parser(self.cmd, arglist, verifylist)
self.client.find_image.side_effect = images self.image_client.find_image.side_effect = images
result = self.cmd.take_action(parsed_args) result = self.cmd.take_action(parsed_args)
@ -562,7 +558,7 @@ class TestImageDelete(TestImage):
mock.call(i.id, store=parsed_args.store, ignore_missing=False) mock.call(i.id, store=parsed_args.store, ignore_missing=False)
for i in images for i in images
] ]
self.client.delete_image.assert_has_calls(calls) self.image_client.delete_image.assert_has_calls(calls)
self.assertIsNone(result) self.assertIsNone(result)
def test_image_delete_from_store_without_multi_backend(self): def test_image_delete_from_store_without_multi_backend(self):
@ -572,9 +568,11 @@ class TestImageDelete(TestImage):
verifylist = [('images', [images[0].id]), ('store', 'store1')] verifylist = [('images', [images[0].id]), ('store', 'store1')]
parsed_args = self.check_parser(self.cmd, arglist, verifylist) parsed_args = self.check_parser(self.cmd, arglist, verifylist)
self.client.find_image.side_effect = images self.image_client.find_image.side_effect = images
self.client.delete_image.side_effect = sdk_exceptions.ResourceNotFound self.image_client.delete_image.side_effect = (
sdk_exceptions.ResourceNotFound
)
exc = self.assertRaises( exc = self.assertRaises(
exceptions.CommandError, exceptions.CommandError,
self.cmd.take_action, self.cmd.take_action,
@ -602,7 +600,7 @@ class TestImageDelete(TestImage):
# And fake find() to find the real network or not. # And fake find() to find the real network or not.
ret_find = [images[0], images[1], sdk_exceptions.ResourceNotFound()] ret_find = [images[0], images[1], sdk_exceptions.ResourceNotFound()]
self.client.find_image.side_effect = ret_find self.image_client.find_image.side_effect = ret_find
self.assertRaises( self.assertRaises(
exceptions.CommandError, self.cmd.take_action, parsed_args exceptions.CommandError, self.cmd.take_action, parsed_args
@ -611,7 +609,7 @@ class TestImageDelete(TestImage):
mock.call(i.id, store=parsed_args.store, ignore_missing=False) mock.call(i.id, store=parsed_args.store, ignore_missing=False)
for i in images for i in images
] ]
self.client.delete_image.assert_has_calls(calls) self.image_client.delete_image.assert_has_calls(calls)
class TestImageList(TestImage): class TestImageList(TestImage):
@ -634,7 +632,7 @@ class TestImageList(TestImage):
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.client.images.side_effect = [[self._image], []] self.image_client.images.side_effect = [[self._image], []]
# Get the command object to test # Get the command object to test
self.cmd = _image.ListImage(self.app, None) self.cmd = _image.ListImage(self.app, None)
@ -651,7 +649,7 @@ class TestImageList(TestImage):
# returns a tuple containing the column names and an iterable # returns a tuple containing the column names and an iterable
# containing the data to be listed. # containing the data to be listed.
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.client.images.assert_called_with( self.image_client.images.assert_called_with(
# marker=self._image.id, # marker=self._image.id,
) )
@ -672,7 +670,7 @@ class TestImageList(TestImage):
# returns a tuple containing the column names and an iterable # returns a tuple containing the column names and an iterable
# containing the data to be listed. # containing the data to be listed.
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.client.images.assert_called_with( self.image_client.images.assert_called_with(
visibility='public', visibility='public',
) )
@ -693,7 +691,7 @@ class TestImageList(TestImage):
# returns a tuple containing the column names and an iterable # returns a tuple containing the column names and an iterable
# containing the data to be listed. # containing the data to be listed.
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.client.images.assert_called_with( self.image_client.images.assert_called_with(
visibility='private', visibility='private',
) )
@ -714,7 +712,7 @@ class TestImageList(TestImage):
# returns a tuple containing the column names and an iterable # returns a tuple containing the column names and an iterable
# containing the data to be listed. # containing the data to be listed.
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.client.images.assert_called_with( self.image_client.images.assert_called_with(
visibility='community', visibility='community',
) )
@ -735,7 +733,7 @@ class TestImageList(TestImage):
# returns a tuple containing the column names and an iterable # returns a tuple containing the column names and an iterable
# containing the data to be listed. # containing the data to be listed.
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.client.images.assert_called_with( self.image_client.images.assert_called_with(
visibility='shared', visibility='shared',
) )
@ -756,7 +754,7 @@ class TestImageList(TestImage):
# returns a tuple containing the column names and an iterable # returns a tuple containing the column names and an iterable
# containing the data to be listed. # containing the data to be listed.
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.client.images.assert_called_with( self.image_client.images.assert_called_with(
visibility='all', visibility='all',
) )
@ -776,7 +774,7 @@ class TestImageList(TestImage):
# returns a tuple containing the column names and an iterable # returns a tuple containing the column names and an iterable
# containing the data to be listed. # containing the data to be listed.
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.client.images.assert_called_with( self.image_client.images.assert_called_with(
visibility='shared', visibility='shared',
member_status='all', member_status='all',
) )
@ -806,7 +804,7 @@ class TestImageList(TestImage):
# returns a tuple containing the column names and an iterable # returns a tuple containing the column names and an iterable
# containing the data to be listed. # containing the data to be listed.
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.client.images.assert_called_with() self.image_client.images.assert_called_with()
collist = ( collist = (
'ID', 'ID',
@ -857,7 +855,7 @@ class TestImageList(TestImage):
# returns a tuple containing the column names and an iterable # returns a tuple containing the column names and an iterable
# containing the data to be listed. # containing the data to be listed.
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.client.images.assert_called_with() self.image_client.images.assert_called_with()
sf_mock.assert_called_with( sf_mock.assert_called_with(
[self._image], [self._image],
attr='a', attr='a',
@ -880,7 +878,7 @@ class TestImageList(TestImage):
# returns a tuple containing the column names and an iterable # returns a tuple containing the column names and an iterable
# containing the data to be listed. # containing the data to be listed.
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.client.images.assert_called_with() self.image_client.images.assert_called_with()
si_mock.assert_called_with( si_mock.assert_called_with(
[self._image], [self._image],
'name:asc', 'name:asc',
@ -901,7 +899,7 @@ class TestImageList(TestImage):
parsed_args = self.check_parser(self.cmd, arglist, verifylist) parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.client.images.assert_called_with( self.image_client.images.assert_called_with(
limit=ret_limit, limit=ret_limit,
paginated=False paginated=False
# marker=None # marker=None
@ -911,7 +909,7 @@ class TestImageList(TestImage):
self.assertEqual(ret_limit, len(tuple(data))) self.assertEqual(ret_limit, len(tuple(data)))
def test_image_list_project_option(self): def test_image_list_project_option(self):
self.client.find_image = mock.Mock(return_value=self._image) self.image_client.find_image = mock.Mock(return_value=self._image)
arglist = [ arglist = [
'--project', '--project',
'nova', 'nova',
@ -928,7 +926,7 @@ class TestImageList(TestImage):
@mock.patch('osc_lib.utils.find_resource') @mock.patch('osc_lib.utils.find_resource')
def test_image_list_marker_option(self, fr_mock): def test_image_list_marker_option(self, fr_mock):
self.client.find_image = mock.Mock(return_value=self._image) self.image_client.find_image = mock.Mock(return_value=self._image)
arglist = [ arglist = [
'--marker', '--marker',
@ -940,11 +938,11 @@ class TestImageList(TestImage):
parsed_args = self.check_parser(self.cmd, arglist, verifylist) parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.client.images.assert_called_with( self.image_client.images.assert_called_with(
marker=self._image.id, marker=self._image.id,
) )
self.client.find_image.assert_called_with( self.image_client.find_image.assert_called_with(
'graven', 'graven',
ignore_missing=False, ignore_missing=False,
) )
@ -960,7 +958,7 @@ class TestImageList(TestImage):
parsed_args = self.check_parser(self.cmd, arglist, verifylist) parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.client.images.assert_called_with( self.image_client.images.assert_called_with(
name='abc', name='abc',
# marker=self._image.id # marker=self._image.id
) )
@ -976,7 +974,7 @@ class TestImageList(TestImage):
parsed_args = self.check_parser(self.cmd, arglist, verifylist) parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.client.images.assert_called_with(status='active') self.image_client.images.assert_called_with(status='active')
def test_image_list_hidden_option(self): def test_image_list_hidden_option(self):
arglist = [ arglist = [
@ -988,7 +986,7 @@ class TestImageList(TestImage):
parsed_args = self.check_parser(self.cmd, arglist, verifylist) parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.client.images.assert_called_with(is_hidden=True) self.image_client.images.assert_called_with(is_hidden=True)
def test_image_list_tag_option(self): def test_image_list_tag_option(self):
arglist = ['--tag', 'abc', '--tag', 'cba'] arglist = ['--tag', 'abc', '--tag', 'cba']
@ -998,7 +996,7 @@ class TestImageList(TestImage):
parsed_args = self.check_parser(self.cmd, arglist, verifylist) parsed_args = self.check_parser(self.cmd, arglist, verifylist)
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.client.images.assert_called_with(tag=['abc', 'cba']) self.image_client.images.assert_called_with(tag=['abc', 'cba'])
class TestListImageProjects(TestImage): class TestListImageProjects(TestImage):
@ -1021,8 +1019,8 @@ class TestListImageProjects(TestImage):
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.client.find_image.return_value = self._image self.image_client.find_image.return_value = self._image
self.client.members.return_value = [self.member] self.image_client.members.return_value = [self.member]
self.cmd = _image.ListImageProjects(self.app, None) self.cmd = _image.ListImageProjects(self.app, None)
@ -1033,7 +1031,7 @@ class TestListImageProjects(TestImage):
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.client.members.assert_called_with(image=self._image.id) self.image_client.members.assert_called_with(image=self._image.id)
self.assertEqual(self.columns, columns) self.assertEqual(self.columns, columns)
self.assertEqual(self.datalist, list(data)) self.assertEqual(self.datalist, list(data))
@ -1048,11 +1046,11 @@ class TestRemoveProjectImage(TestImage):
self._image = image_fakes.create_one_image() self._image = image_fakes.create_one_image()
# This is the return value for utils.find_resource() # This is the return value for utils.find_resource()
self.client.find_image.return_value = self._image self.image_client.find_image.return_value = self._image
self.project_mock.get.return_value = self.project self.project_mock.get.return_value = self.project
self.domain_mock.get.return_value = self.domain self.domain_mock.get.return_value = self.domain
self.client.remove_member.return_value = None self.image_client.remove_member.return_value = None
# Get the command object to test # Get the command object to test
self.cmd = _image.RemoveProjectImage(self.app, None) self.cmd = _image.RemoveProjectImage(self.app, None)
@ -1069,11 +1067,11 @@ class TestRemoveProjectImage(TestImage):
result = self.cmd.take_action(parsed_args) result = self.cmd.take_action(parsed_args)
self.client.find_image.assert_called_with( self.image_client.find_image.assert_called_with(
self._image.id, ignore_missing=False self._image.id, ignore_missing=False
) )
self.client.remove_member.assert_called_with( self.image_client.remove_member.assert_called_with(
member=self.project.id, member=self.project.id,
image=self._image.id, image=self._image.id,
) )
@ -1095,7 +1093,7 @@ class TestRemoveProjectImage(TestImage):
result = self.cmd.take_action(parsed_args) result = self.cmd.take_action(parsed_args)
self.client.remove_member.assert_called_with( self.image_client.remove_member.assert_called_with(
member=self.project.id, member=self.project.id,
image=self._image.id, image=self._image.id,
) )
@ -1114,7 +1112,7 @@ class TestImageSet(TestImage):
self.domain_mock.get.return_value = self.domain self.domain_mock.get.return_value = self.domain
self.client.find_image.return_value = self._image self.image_client.find_image.return_value = self._image
self.app.client_manager.auth_ref = mock.Mock( self.app.client_manager.auth_ref = mock.Mock(
project_id=self.project.id, project_id=self.project.id,
@ -1145,7 +1143,7 @@ class TestImageSet(TestImage):
'member_id': self.project.id, 'member_id': self.project.id,
} }
) )
self.client.update_member.return_value = membership self.image_client.update_member.return_value = membership
arglist = [ arglist = [
'--accept', '--accept',
@ -1156,7 +1154,7 @@ class TestImageSet(TestImage):
parsed_args = self.check_parser(self.cmd, arglist, verifylist) parsed_args = self.check_parser(self.cmd, arglist, verifylist)
self.cmd.take_action(parsed_args) self.cmd.take_action(parsed_args)
self.client.update_member.assert_called_once_with( self.image_client.update_member.assert_called_once_with(
image=self._image.id, image=self._image.id,
member=self.app.client_manager.auth_ref.project_id, member=self.app.client_manager.auth_ref.project_id,
status='accepted', status='accepted',
@ -1164,7 +1162,7 @@ class TestImageSet(TestImage):
# Assert that the 'update image" route is also called, in addition to # Assert that the 'update image" route is also called, in addition to
# the 'update membership' route. # the 'update membership' route.
self.client.update_image.assert_called_with(self._image.id) self.image_client.update_image.assert_called_with(self._image.id)
def test_image_set_membership_option_reject(self): def test_image_set_membership_option_reject(self):
membership = image_fakes.create_one_image_member( membership = image_fakes.create_one_image_member(
@ -1173,7 +1171,7 @@ class TestImageSet(TestImage):
'member_id': self.project.id, 'member_id': self.project.id,
} }
) )
self.client.update_member.return_value = membership self.image_client.update_member.return_value = membership
arglist = [ arglist = [
'--reject', '--reject',
@ -1187,7 +1185,7 @@ class TestImageSet(TestImage):
parsed_args = self.check_parser(self.cmd, arglist, verifylist) parsed_args = self.check_parser(self.cmd, arglist, verifylist)
self.cmd.take_action(parsed_args) self.cmd.take_action(parsed_args)
self.client.update_member.assert_called_once_with( self.image_client.update_member.assert_called_once_with(
image=self._image.id, image=self._image.id,
member=self.app.client_manager.auth_ref.project_id, member=self.app.client_manager.auth_ref.project_id,
status='rejected', status='rejected',
@ -1195,7 +1193,7 @@ class TestImageSet(TestImage):
# Assert that the 'update image" route is also called, in addition to # Assert that the 'update image" route is also called, in addition to
# the 'update membership' route. # the 'update membership' route.
self.client.update_image.assert_called_with(self._image.id) self.image_client.update_image.assert_called_with(self._image.id)
def test_image_set_membership_option_pending(self): def test_image_set_membership_option_pending(self):
membership = image_fakes.create_one_image_member( membership = image_fakes.create_one_image_member(
@ -1204,7 +1202,7 @@ class TestImageSet(TestImage):
'member_id': self.project.id, 'member_id': self.project.id,
} }
) )
self.client.update_member.return_value = membership self.image_client.update_member.return_value = membership
arglist = [ arglist = [
'--pending', '--pending',
@ -1218,7 +1216,7 @@ class TestImageSet(TestImage):
parsed_args = self.check_parser(self.cmd, arglist, verifylist) parsed_args = self.check_parser(self.cmd, arglist, verifylist)
self.cmd.take_action(parsed_args) self.cmd.take_action(parsed_args)
self.client.update_member.assert_called_once_with( self.image_client.update_member.assert_called_once_with(
image=self._image.id, image=self._image.id,
member=self.app.client_manager.auth_ref.project_id, member=self.app.client_manager.auth_ref.project_id,
status='pending', status='pending',
@ -1226,7 +1224,7 @@ class TestImageSet(TestImage):
# Assert that the 'update image" route is also called, in addition to # Assert that the 'update image" route is also called, in addition to
# the 'update membership' route. # the 'update membership' route.
self.client.update_image.assert_called_with(self._image.id) self.image_client.update_image.assert_called_with(self._image.id)
def test_image_set_options(self): def test_image_set_options(self):
arglist = [ arglist = [
@ -1269,7 +1267,9 @@ class TestImageSet(TestImage):
'disk_format': 'vmdk', 'disk_format': 'vmdk',
} }
# ImageManager.update(image, **kwargs) # ImageManager.update(image, **kwargs)
self.client.update_image.assert_called_with(self._image.id, **kwargs) self.image_client.update_image.assert_called_with(
self._image.id, **kwargs
)
self.assertIsNone(result) self.assertIsNone(result)
def test_image_set_with_unexist_project(self): def test_image_set_with_unexist_project(self):
@ -1311,7 +1311,9 @@ class TestImageSet(TestImage):
'visibility': 'private', 'visibility': 'private',
} }
# ImageManager.update(image, **kwargs) # ImageManager.update(image, **kwargs)
self.client.update_image.assert_called_with(self._image.id, **kwargs) self.image_client.update_image.assert_called_with(
self._image.id, **kwargs
)
self.assertIsNone(result) self.assertIsNone(result)
def test_image_set_bools2(self): def test_image_set_bools2(self):
@ -1334,7 +1336,9 @@ class TestImageSet(TestImage):
'visibility': 'public', 'visibility': 'public',
} }
# ImageManager.update(image, **kwargs) # ImageManager.update(image, **kwargs)
self.client.update_image.assert_called_with(self._image.id, **kwargs) self.image_client.update_image.assert_called_with(
self._image.id, **kwargs
)
self.assertIsNone(result) self.assertIsNone(result)
def test_image_set_properties(self): def test_image_set_properties(self):
@ -1358,7 +1362,9 @@ class TestImageSet(TestImage):
'Beta': '2', 'Beta': '2',
} }
# ImageManager.update(image, **kwargs) # ImageManager.update(image, **kwargs)
self.client.update_image.assert_called_with(self._image.id, **kwargs) self.image_client.update_image.assert_called_with(
self._image.id, **kwargs
)
self.assertIsNone(result) self.assertIsNone(result)
def test_image_set_fake_properties(self): def test_image_set_fake_properties(self):
@ -1399,7 +1405,9 @@ class TestImageSet(TestImage):
'ramdisk_id': 'xyzpdq', 'ramdisk_id': 'xyzpdq',
} }
# ImageManager.update(image, **kwargs) # ImageManager.update(image, **kwargs)
self.client.update_image.assert_called_with(self._image.id, **kwargs) self.image_client.update_image.assert_called_with(
self._image.id, **kwargs
)
self.assertIsNone(result) self.assertIsNone(result)
def test_image_set_tag(self): def test_image_set_tag(self):
@ -1420,7 +1428,9 @@ class TestImageSet(TestImage):
'tags': ['test-tag'], 'tags': ['test-tag'],
} }
# ImageManager.update(image, **kwargs) # ImageManager.update(image, **kwargs)
self.client.update_image.assert_called_with(self._image.id, **kwargs) self.image_client.update_image.assert_called_with(
self._image.id, **kwargs
)
self.assertIsNone(result) self.assertIsNone(result)
def test_image_set_activate(self): def test_image_set_activate(self):
@ -1442,11 +1452,13 @@ class TestImageSet(TestImage):
'tags': ['test-tag'], 'tags': ['test-tag'],
} }
self.client.reactivate_image.assert_called_with( self.image_client.reactivate_image.assert_called_with(
self._image.id, self._image.id,
) )
# ImageManager.update(image, **kwargs) # ImageManager.update(image, **kwargs)
self.client.update_image.assert_called_with(self._image.id, **kwargs) self.image_client.update_image.assert_called_with(
self._image.id, **kwargs
)
self.assertIsNone(result) self.assertIsNone(result)
def test_image_set_deactivate(self): def test_image_set_deactivate(self):
@ -1468,17 +1480,19 @@ class TestImageSet(TestImage):
'tags': ['test-tag'], 'tags': ['test-tag'],
} }
self.client.deactivate_image.assert_called_with( self.image_client.deactivate_image.assert_called_with(
self._image.id, self._image.id,
) )
# ImageManager.update(image, **kwargs) # ImageManager.update(image, **kwargs)
self.client.update_image.assert_called_with(self._image.id, **kwargs) self.image_client.update_image.assert_called_with(
self._image.id, **kwargs
)
self.assertIsNone(result) self.assertIsNone(result)
def test_image_set_tag_merge(self): def test_image_set_tag_merge(self):
old_image = self._image old_image = self._image
old_image['tags'] = ['old1', 'new2'] old_image['tags'] = ['old1', 'new2']
self.client.find_image.return_value = old_image self.image_client.find_image.return_value = old_image
arglist = [ arglist = [
'--tag', '--tag',
'test-tag', 'test-tag',
@ -1496,7 +1510,7 @@ class TestImageSet(TestImage):
'tags': ['old1', 'new2', 'test-tag'], 'tags': ['old1', 'new2', 'test-tag'],
} }
# ImageManager.update(image, **kwargs) # ImageManager.update(image, **kwargs)
a, k = self.client.update_image.call_args a, k = self.image_client.update_image.call_args
self.assertEqual(self._image.id, a[0]) self.assertEqual(self._image.id, a[0])
self.assertIn('tags', k) self.assertIn('tags', k)
self.assertEqual(set(kwargs['tags']), set(k['tags'])) self.assertEqual(set(kwargs['tags']), set(k['tags']))
@ -1505,7 +1519,7 @@ class TestImageSet(TestImage):
def test_image_set_tag_merge_dupe(self): def test_image_set_tag_merge_dupe(self):
old_image = self._image old_image = self._image
old_image['tags'] = ['old1', 'new2'] old_image['tags'] = ['old1', 'new2']
self.client.find_image.return_value = old_image self.image_client.find_image.return_value = old_image
arglist = [ arglist = [
'--tag', '--tag',
'old1', 'old1',
@ -1523,7 +1537,7 @@ class TestImageSet(TestImage):
'tags': ['new2', 'old1'], 'tags': ['new2', 'old1'],
} }
# ImageManager.update(image, **kwargs) # ImageManager.update(image, **kwargs)
a, k = self.client.update_image.call_args a, k = self.image_client.update_image.call_args
self.assertEqual(self._image.id, a[0]) self.assertEqual(self._image.id, a[0])
self.assertIn('tags', k) self.assertIn('tags', k)
self.assertEqual(set(kwargs['tags']), set(k['tags'])) self.assertEqual(set(kwargs['tags']), set(k['tags']))
@ -1567,7 +1581,9 @@ class TestImageSet(TestImage):
'min_ram': 0, 'min_ram': 0,
} }
# ImageManager.update(image, **kwargs) # ImageManager.update(image, **kwargs)
self.client.update_image.assert_called_with(self._image.id, **kwargs) self.image_client.update_image.assert_called_with(
self._image.id, **kwargs
)
self.assertIsNone(result) self.assertIsNone(result)
def test_image_set_hidden(self): def test_image_set_hidden(self):
@ -1590,7 +1606,9 @@ class TestImageSet(TestImage):
'visibility': 'public', 'visibility': 'public',
} }
# ImageManager.update(image, **kwargs) # ImageManager.update(image, **kwargs)
self.client.update_image.assert_called_with(self._image.id, **kwargs) self.image_client.update_image.assert_called_with(
self._image.id, **kwargs
)
self.assertIsNone(result) self.assertIsNone(result)
def test_image_set_unhidden(self): def test_image_set_unhidden(self):
@ -1613,7 +1631,9 @@ class TestImageSet(TestImage):
'visibility': 'public', 'visibility': 'public',
} }
# ImageManager.update(image, **kwargs) # ImageManager.update(image, **kwargs)
self.client.update_image.assert_called_with(self._image.id, **kwargs) self.image_client.update_image.assert_called_with(
self._image.id, **kwargs
)
self.assertIsNone(result) self.assertIsNone(result)
@ -1636,7 +1656,7 @@ class TestImageShow(TestImage):
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.client.find_image = mock.Mock(return_value=self._data) self.image_client.find_image = mock.Mock(return_value=self._data)
# Get the command object to test # Get the command object to test
self.cmd = _image.ShowImage(self.app, None) self.cmd = _image.ShowImage(self.app, None)
@ -1654,7 +1674,7 @@ class TestImageShow(TestImage):
# returns a two-part tuple with a tuple of column names and a tuple of # returns a two-part tuple with a tuple of column names and a tuple of
# data to be shown. # data to be shown.
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.client.find_image.assert_called_with( self.image_client.find_image.assert_called_with(
'0f41529e-7c12-4de8-be2d-181abb825b3c', ignore_missing=False '0f41529e-7c12-4de8-be2d-181abb825b3c', ignore_missing=False
) )
@ -1662,7 +1682,7 @@ class TestImageShow(TestImage):
self.assertCountEqual(self.data, data) self.assertCountEqual(self.data, data)
def test_image_show_human_readable(self): def test_image_show_human_readable(self):
self.client.find_image.return_value = self.new_image self.image_client.find_image.return_value = self.new_image
arglist = [ arglist = [
'--human-readable', '--human-readable',
self.new_image.id, self.new_image.id,
@ -1677,7 +1697,7 @@ class TestImageShow(TestImage):
# returns a two-part tuple with a tuple of column names and a tuple of # returns a two-part tuple with a tuple of column names and a tuple of
# data to be shown. # data to be shown.
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.client.find_image.assert_called_with( self.image_client.find_image.assert_called_with(
self.new_image.id, ignore_missing=False self.new_image.id, ignore_missing=False
) )
@ -1696,9 +1716,9 @@ class TestImageUnset(TestImage):
attrs['prop2'] = 'fake' attrs['prop2'] = 'fake'
self.image = image_fakes.create_one_image(attrs) self.image = image_fakes.create_one_image(attrs)
self.client.find_image.return_value = self.image self.image_client.find_image.return_value = self.image
self.client.remove_tag.return_value = self.image self.image_client.remove_tag.return_value = self.image
self.client.update_image.return_value = self.image self.image_client.update_image.return_value = self.image
# Get the command object to test # Get the command object to test
self.cmd = _image.UnsetImage(self.app, None) self.cmd = _image.UnsetImage(self.app, None)
@ -1728,7 +1748,7 @@ class TestImageUnset(TestImage):
parsed_args = self.check_parser(self.cmd, arglist, verifylist) parsed_args = self.check_parser(self.cmd, arglist, verifylist)
result = self.cmd.take_action(parsed_args) result = self.cmd.take_action(parsed_args)
self.client.remove_tag.assert_called_with(self.image.id, 'test') self.image_client.remove_tag.assert_called_with(self.image.id, 'test')
self.assertIsNone(result) self.assertIsNone(result)
def test_image_unset_property_option(self): def test_image_unset_property_option(self):
@ -1747,7 +1767,7 @@ class TestImageUnset(TestImage):
parsed_args = self.check_parser(self.cmd, arglist, verifylist) parsed_args = self.check_parser(self.cmd, arglist, verifylist)
result = self.cmd.take_action(parsed_args) result = self.cmd.take_action(parsed_args)
self.client.update_image.assert_called_with( self.image_client.update_image.assert_called_with(
self.image, properties={'prop2': 'fake'} self.image, properties={'prop2': 'fake'}
) )
@ -1772,11 +1792,11 @@ class TestImageUnset(TestImage):
parsed_args = self.check_parser(self.cmd, arglist, verifylist) parsed_args = self.check_parser(self.cmd, arglist, verifylist)
result = self.cmd.take_action(parsed_args) result = self.cmd.take_action(parsed_args)
self.client.update_image.assert_called_with( self.image_client.update_image.assert_called_with(
self.image, properties={'prop2': 'fake'} self.image, properties={'prop2': 'fake'}
) )
self.client.remove_tag.assert_called_with(self.image.id, 'test') self.image_client.remove_tag.assert_called_with(self.image.id, 'test')
self.assertIsNone(result) self.assertIsNone(result)
@ -1786,7 +1806,7 @@ class TestImageStage(TestImage):
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.client.find_image.return_value = self.image self.image_client.find_image.return_value = self.image
self.cmd = _image.StageImage(self.app, None) self.cmd = _image.StageImage(self.app, None)
@ -1808,7 +1828,7 @@ class TestImageStage(TestImage):
self.cmd.take_action(parsed_args) self.cmd.take_action(parsed_args)
self.client.stage_image.assert_called_once_with( self.image_client.stage_image.assert_called_once_with(
self.image, self.image,
filename=imagefile.name, filename=imagefile.name,
) )
@ -1828,7 +1848,7 @@ class TestImageStage(TestImage):
self.cmd.take_action(parsed_args) self.cmd.take_action(parsed_args)
self.client.stage_image.assert_called_once_with( self.image_client.stage_image.assert_called_once_with(
self.image, self.image,
data=fake_stdin, data=fake_stdin,
) )
@ -1846,8 +1866,8 @@ class TestImageImport(TestImage):
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.client.find_image.return_value = self.image self.image_client.find_image.return_value = self.image
self.client.get_import_info.return_value = self.import_info self.image_client.get_import_info.return_value = self.import_info
self.cmd = _image.ImportImage(self.app, None) self.cmd = _image.ImportImage(self.app, None)
@ -1863,7 +1883,7 @@ class TestImageImport(TestImage):
self.cmd.take_action(parsed_args) self.cmd.take_action(parsed_args)
self.client.import_image.assert_called_once_with( self.image_client.import_image.assert_called_once_with(
self.image, self.image,
method='glance-direct', method='glance-direct',
uri=None, uri=None,
@ -1893,7 +1913,7 @@ class TestImageImport(TestImage):
self.cmd.take_action(parsed_args) self.cmd.take_action(parsed_args)
self.client.import_image.assert_called_once_with( self.image_client.import_image.assert_called_once_with(
self.image, self.image,
method='web-download', method='web-download',
uri='https://example.com/', uri='https://example.com/',
@ -1927,7 +1947,7 @@ class TestImageImport(TestImage):
) )
self.assertIn("The '--uri' option is required ", str(exc)) self.assertIn("The '--uri' option is required ", str(exc))
self.client.import_image.assert_not_called() self.image_client.import_image.assert_not_called()
# NOTE(stephenfin): Ditto # NOTE(stephenfin): Ditto
def test_import_image__web_download_invalid_options(self): def test_import_image__web_download_invalid_options(self):
@ -1952,7 +1972,7 @@ class TestImageImport(TestImage):
) )
self.assertIn("The '--uri' option is only supported ", str(exc)) self.assertIn("The '--uri' option is only supported ", str(exc))
self.client.import_image.assert_not_called() self.image_client.import_image.assert_not_called()
def test_import_image__web_download_invalid_image_state(self): def test_import_image__web_download_invalid_image_state(self):
self.image.status = 'uploading' # != 'queued' self.image.status = 'uploading' # != 'queued'
@ -1981,7 +2001,7 @@ class TestImageImport(TestImage):
str(exc), str(exc),
) )
self.client.import_image.assert_not_called() self.image_client.import_image.assert_not_called()
def test_import_image__copy_image(self): def test_import_image__copy_image(self):
self.image.status = 'active' self.image.status = 'active'
@ -2001,7 +2021,7 @@ class TestImageImport(TestImage):
self.cmd.take_action(parsed_args) self.cmd.take_action(parsed_args)
self.client.import_image.assert_called_once_with( self.image_client.import_image.assert_called_once_with(
self.image, self.image,
method='copy-image', method='copy-image',
uri=None, uri=None,
@ -2036,7 +2056,7 @@ class TestImageImport(TestImage):
self.cmd.take_action(parsed_args) self.cmd.take_action(parsed_args)
self.client.import_image.assert_called_once_with( self.image_client.import_image.assert_called_once_with(
self.image, self.image,
method='glance-download', method='glance-download',
uri=None, uri=None,
@ -2055,8 +2075,8 @@ class TestImageSave(TestImage):
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.client.find_image.return_value = self.image self.image_client.find_image.return_value = self.image
self.client.download_image.return_value = self.image self.image_client.download_image.return_value = self.image
# Get the command object to test # Get the command object to test
self.cmd = _image.SaveImage(self.app, None) self.cmd = _image.SaveImage(self.app, None)
@ -2072,7 +2092,7 @@ class TestImageSave(TestImage):
self.cmd.take_action(parsed_args) self.cmd.take_action(parsed_args)
self.client.download_image.assert_called_once_with( self.image_client.download_image.assert_called_once_with(
self.image.id, stream=True, output='/path/to/file' self.image.id, stream=True, output='/path/to/file'
) )
@ -2109,7 +2129,7 @@ class TestStoresInfo(TestImage):
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.client.stores.return_value = self.stores_info self.image_client.stores.return_value = self.stores_info
self.cmd = _image.StoresInfo(self.app, None) self.cmd = _image.StoresInfo(self.app, None)
@ -2118,19 +2138,21 @@ class TestStoresInfo(TestImage):
parsed_args = self.check_parser(self.cmd, arglist, []) parsed_args = self.check_parser(self.cmd, arglist, [])
self.cmd.take_action(parsed_args) self.cmd.take_action(parsed_args)
self.client.stores.assert_called() self.image_client.stores.assert_called()
def test_stores_info_with_detail(self): def test_stores_info_with_detail(self):
arglist = ['--detail'] arglist = ['--detail']
parsed_args = self.check_parser(self.cmd, arglist, []) parsed_args = self.check_parser(self.cmd, arglist, [])
self.cmd.take_action(parsed_args) self.cmd.take_action(parsed_args)
self.client.stores.assert_called_with(details=True) self.image_client.stores.assert_called_with(details=True)
def test_stores_info_neg(self): def test_stores_info_neg(self):
arglist = [] arglist = []
parsed_args = self.check_parser(self.cmd, arglist, []) parsed_args = self.check_parser(self.cmd, arglist, [])
self.client.stores.side_effect = sdk_exceptions.ResourceNotFound() self.image_client.stores.side_effect = (
sdk_exceptions.ResourceNotFound()
)
exc = self.assertRaises( exc = self.assertRaises(
exceptions.CommandError, exceptions.CommandError,

View File

@ -14,24 +14,16 @@
# under the License. # under the License.
from openstackclient.image.v2 import info from openstackclient.image.v2 import info
from openstackclient.tests.unit.image.v2 import fakes as info_fakes from openstackclient.tests.unit.image.v2 import fakes as image_fakes
class TestInfo(info_fakes.TestImagev2): class TestImportInfo(image_fakes.TestImagev2):
def setUp(self): import_info = image_fakes.create_one_import_info()
super().setUp()
# Get shortcuts to mocked image client
self.client = self.app.client_manager.image
class TestImportInfo(TestInfo):
import_info = info_fakes.create_one_import_info()
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.client.get_import_info.return_value = self.import_info self.image_client.get_import_info.return_value = self.import_info
self.cmd = info.ImportInfo(self.app, None) self.cmd = info.ImportInfo(self.app, None)
@ -40,4 +32,4 @@ class TestImportInfo(TestInfo):
parsed_args = self.check_parser(self.cmd, arglist, []) parsed_args = self.check_parser(self.cmd, arglist, [])
self.cmd.take_action(parsed_args) self.cmd.take_action(parsed_args)
self.client.get_import_info.assert_called() self.image_client.get_import_info.assert_called()

View File

@ -13,25 +13,11 @@
# under the License. # under the License.
from openstackclient.image.v2 import metadef_namespaces from openstackclient.image.v2 import metadef_namespaces
from openstackclient.tests.unit.image.v2 import fakes as md_namespace_fakes from openstackclient.tests.unit.image.v2 import fakes as image_fakes
class TestMetadefNamespaces(md_namespace_fakes.TestMetadefNamespaces): class TestMetadefNamespaceCreate(image_fakes.TestImagev2):
def setUp(self): _metadef_namespace = image_fakes.create_one_metadef_namespace()
super().setUp()
# Get shortcuts to mocked image client
self.client = self.app.client_manager.image
# Get shortcut to the Mocks in identity client
self.project_mock = self.app.client_manager.identity.projects
self.project_mock.reset_mock()
self.domain_mock = self.app.client_manager.identity.domains
self.domain_mock.reset_mock()
class TestMetadefNamespaceCreate(TestMetadefNamespaces):
_metadef_namespace = md_namespace_fakes.create_one_metadef_namespace()
expected_columns = ( expected_columns = (
'created_at', 'created_at',
@ -65,7 +51,7 @@ class TestMetadefNamespaceCreate(TestMetadefNamespaces):
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.client.create_metadef_namespace.return_value = ( self.image_client.create_metadef_namespace.return_value = (
self._metadef_namespace self._metadef_namespace
) )
self.cmd = metadef_namespaces.CreateMetadefNameSpace(self.app, None) self.cmd = metadef_namespaces.CreateMetadefNameSpace(self.app, None)
@ -83,13 +69,13 @@ class TestMetadefNamespaceCreate(TestMetadefNamespaces):
self.assertEqual(self.expected_data, data) self.assertEqual(self.expected_data, data)
class TestMetadefNamespaceDelete(TestMetadefNamespaces): class TestMetadefNamespaceDelete(image_fakes.TestImagev2):
_metadef_namespace = md_namespace_fakes.create_one_metadef_namespace() _metadef_namespace = image_fakes.create_one_metadef_namespace()
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.client.delete_metadef_namespace.return_value = ( self.image_client.delete_metadef_namespace.return_value = (
self._metadef_namespace self._metadef_namespace
) )
self.cmd = metadef_namespaces.DeleteMetadefNameSpace(self.app, None) self.cmd = metadef_namespaces.DeleteMetadefNameSpace(self.app, None)
@ -106,8 +92,8 @@ class TestMetadefNamespaceDelete(TestMetadefNamespaces):
self.assertIsNone(result) self.assertIsNone(result)
class TestMetadefNamespaceList(TestMetadefNamespaces): class TestMetadefNamespaceList(image_fakes.TestImagev2):
_metadef_namespace = [md_namespace_fakes.create_one_metadef_namespace()] _metadef_namespace = [image_fakes.create_one_metadef_namespace()]
columns = ['namespace'] columns = ['namespace']
@ -116,13 +102,13 @@ class TestMetadefNamespaceList(TestMetadefNamespaces):
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.client.metadef_namespaces.side_effect = [ self.image_client.metadef_namespaces.side_effect = [
self._metadef_namespace, self._metadef_namespace,
[], [],
] ]
# Get the command object to test # Get the command object to test
self.client.metadef_namespaces.return_value = iter( self.image_client.metadef_namespaces.return_value = iter(
self._metadef_namespace self._metadef_namespace
) )
self.cmd = metadef_namespaces.ListMetadefNameSpaces(self.app, None) self.cmd = metadef_namespaces.ListMetadefNameSpaces(self.app, None)
@ -141,13 +127,13 @@ class TestMetadefNamespaceList(TestMetadefNamespaces):
self.assertEqual(getattr(self.datalist[0], 'namespace'), next(data)[0]) self.assertEqual(getattr(self.datalist[0], 'namespace'), next(data)[0])
class TestMetadefNamespaceSet(TestMetadefNamespaces): class TestMetadefNamespaceSet(image_fakes.TestImagev2):
_metadef_namespace = md_namespace_fakes.create_one_metadef_namespace() _metadef_namespace = image_fakes.create_one_metadef_namespace()
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.client.update_metadef_namespace.return_value = ( self.image_client.update_metadef_namespace.return_value = (
self._metadef_namespace self._metadef_namespace
) )
self.cmd = metadef_namespaces.SetMetadefNameSpace(self.app, None) self.cmd = metadef_namespaces.SetMetadefNameSpace(self.app, None)
@ -166,8 +152,8 @@ class TestMetadefNamespaceSet(TestMetadefNamespaces):
self.assertIsNone(result) self.assertIsNone(result)
class TestMetadefNamespaceShow(TestMetadefNamespaces): class TestMetadefNamespaceShow(image_fakes.TestImagev2):
_metadef_namespace = md_namespace_fakes.create_one_metadef_namespace() _metadef_namespace = image_fakes.create_one_metadef_namespace()
expected_columns = ( expected_columns = (
'created_at', 'created_at',
@ -187,7 +173,7 @@ class TestMetadefNamespaceShow(TestMetadefNamespaces):
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.client.get_metadef_namespace.return_value = ( self.image_client.get_metadef_namespace.return_value = (
self._metadef_namespace self._metadef_namespace
) )
self.cmd = metadef_namespaces.ShowMetadefNameSpace(self.app, None) self.cmd = metadef_namespaces.ShowMetadefNameSpace(self.app, None)

View File

@ -11,18 +11,11 @@
# under the License. # under the License.
from openstackclient.image.v2 import metadef_resource_types from openstackclient.image.v2 import metadef_resource_types
from openstackclient.tests.unit.image.v2 import fakes as resource_type_fakes from openstackclient.tests.unit.image.v2 import fakes as image_fakes
class TestMetadefResourceTypes(resource_type_fakes.TestImagev2): class TestMetadefResourceTypeList(image_fakes.TestImagev2):
def setUp(self): resource_types = image_fakes.create_resource_types()
super().setUp()
self.client = self.app.client_manager.image
class TestMetadefResourceTypeList(TestMetadefResourceTypes):
resource_types = resource_type_fakes.create_resource_types()
columns = ['Name'] columns = ['Name']
@ -31,7 +24,7 @@ class TestMetadefResourceTypeList(TestMetadefResourceTypes):
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.client.metadef_resource_types.side_effect = [ self.image_client.metadef_resource_types.side_effect = [
self.resource_types, self.resource_types,
[], [],
] ]

View File

@ -16,15 +16,7 @@ from openstackclient.image.v2 import task
from openstackclient.tests.unit.image.v2 import fakes as image_fakes from openstackclient.tests.unit.image.v2 import fakes as image_fakes
class TestTask(image_fakes.TestImagev2): class TestTaskShow(image_fakes.TestImagev2):
def setUp(self):
super().setUp()
# Get shortcuts to mocked image client
self.client = self.app.client_manager.image
class TestTaskShow(TestTask):
task = image_fakes.create_one_task() task = image_fakes.create_one_task()
columns = ( columns = (
@ -57,7 +49,7 @@ class TestTaskShow(TestTask):
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.client.get_task.return_value = self.task self.image_client.get_task.return_value = self.task
# Get the command object to test # Get the command object to test
self.cmd = task.ShowTask(self.app, None) self.cmd = task.ShowTask(self.app, None)
@ -73,13 +65,13 @@ class TestTaskShow(TestTask):
# returns a two-part tuple with a tuple of column names and a tuple of # returns a two-part tuple with a tuple of column names and a tuple of
# data to be shown. # data to be shown.
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.client.get_task.assert_called_with(self.task.id) self.image_client.get_task.assert_called_with(self.task.id)
self.assertEqual(self.columns, columns) self.assertEqual(self.columns, columns)
self.assertCountEqual(self.data, data) self.assertCountEqual(self.data, data)
class TestTaskList(TestTask): class TestTaskList(image_fakes.TestImagev2):
tasks = image_fakes.create_tasks() tasks = image_fakes.create_tasks()
columns = ( columns = (
@ -101,7 +93,7 @@ class TestTaskList(TestTask):
def setUp(self): def setUp(self):
super().setUp() super().setUp()
self.client.tasks.side_effect = [self.tasks, []] self.image_client.tasks.side_effect = [self.tasks, []]
# Get the command object to test # Get the command object to test
self.cmd = task.ListTask(self.app, None) self.cmd = task.ListTask(self.app, None)
@ -120,7 +112,7 @@ class TestTaskList(TestTask):
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.client.tasks.assert_called_with() self.image_client.tasks.assert_called_with()
self.assertEqual(self.columns, columns) self.assertEqual(self.columns, columns)
self.assertCountEqual(self.datalist, data) self.assertCountEqual(self.datalist, data)
@ -132,7 +124,7 @@ class TestTaskList(TestTask):
columns, data = self.cmd.take_action(parsed_args) columns, data = self.cmd.take_action(parsed_args)
self.client.tasks.assert_called_with( self.image_client.tasks.assert_called_with(
sort_key=parsed_args.sort_key, sort_key=parsed_args.sort_key,
) )
@ -146,7 +138,7 @@ class TestTaskList(TestTask):
self.cmd.take_action(parsed_args) self.cmd.take_action(parsed_args)
self.client.tasks.assert_called_with( self.image_client.tasks.assert_called_with(
sort_dir=parsed_args.sort_dir, sort_dir=parsed_args.sort_dir,
) )
@ -157,7 +149,7 @@ class TestTaskList(TestTask):
self.cmd.take_action(parsed_args) self.cmd.take_action(parsed_args)
self.client.tasks.assert_called_with( self.image_client.tasks.assert_called_with(
limit=parsed_args.limit, limit=parsed_args.limit,
marker=parsed_args.marker, marker=parsed_args.marker,
) )
@ -169,7 +161,7 @@ class TestTaskList(TestTask):
self.cmd.take_action(parsed_args) self.cmd.take_action(parsed_args)
self.client.tasks.assert_called_with( self.image_client.tasks.assert_called_with(
type=self.tasks[0].type, type=self.tasks[0].type,
) )
@ -180,6 +172,6 @@ class TestTaskList(TestTask):
self.cmd.take_action(parsed_args) self.cmd.take_action(parsed_args)
self.client.tasks.assert_called_with( self.image_client.tasks.assert_called_with(
status=self.tasks[0].status, status=self.tasks[0].status,
) )

View File

@ -44,9 +44,8 @@ class TestVolume(volume_fakes.TestVolumev1):
self.users_mock = self.app.client_manager.identity.users self.users_mock = self.app.client_manager.identity.users
self.users_mock.reset_mock() self.users_mock.reset_mock()
# Get a shortcut to the ImageManager Mock self.app.client_manager.image = mock.Mock()
self.images_mock = self.app.client_manager.image.images self.image_client = self.app.client_manager.image
self.images_mock.reset_mock()
def setup_volumes_mock(self, count): def setup_volumes_mock(self, count):
volumes = volume_fakes.create_volumes(count=count) volumes = volume_fakes.create_volumes(count=count)
@ -328,7 +327,7 @@ class TestVolumeCreate(TestVolume):
def test_volume_create_image_id(self): def test_volume_create_image_id(self):
image = image_fakes.create_one_image() image = image_fakes.create_one_image()
self.images_mock.get.return_value = image self.image_client.find_image.return_value = image
arglist = [ arglist = [
'--image', '--image',
@ -373,7 +372,7 @@ class TestVolumeCreate(TestVolume):
def test_volume_create_image_name(self): def test_volume_create_image_name(self):
image = image_fakes.create_one_image() image = image_fakes.create_one_image()
self.images_mock.get.return_value = image self.image_client.find_image.return_value = image
arglist = [ arglist = [
'--image', '--image',

View File

@ -41,9 +41,6 @@ class TestVolume(volume_fakes.TestVolume):
self.users_mock = self.app.client_manager.identity.users self.users_mock = self.app.client_manager.identity.users
self.users_mock.reset_mock() self.users_mock.reset_mock()
self.find_image_mock = self.app.client_manager.image.find_image
self.find_image_mock.reset_mock()
self.snapshots_mock = self.app.client_manager.volume.volume_snapshots self.snapshots_mock = self.app.client_manager.volume.volume_snapshots
self.snapshots_mock.reset_mock() self.snapshots_mock.reset_mock()
@ -58,6 +55,8 @@ class TestVolume(volume_fakes.TestVolume):
) )
self.consistencygroups_mock.reset_mock() self.consistencygroups_mock.reset_mock()
self.image_client = self.app.client_manager.image
def setup_volumes_mock(self, count): def setup_volumes_mock(self, count):
volumes = volume_fakes.create_volumes(count=count) volumes = volume_fakes.create_volumes(count=count)
@ -233,7 +232,7 @@ class TestVolumeCreate(TestVolume):
def test_volume_create_image_id(self): def test_volume_create_image_id(self):
image = image_fakes.create_one_image() image = image_fakes.create_one_image()
self.find_image_mock.return_value = image self.image_client.find_image.return_value = image
arglist = [ arglist = [
'--image', '--image',
@ -274,7 +273,7 @@ class TestVolumeCreate(TestVolume):
def test_volume_create_image_name(self): def test_volume_create_image_name(self):
image = image_fakes.create_one_image() image = image_fakes.create_one_image()
self.find_image_mock.return_value = image self.image_client.find_image.return_value = image
arglist = [ arglist = [
'--image', '--image',

View File

@ -206,9 +206,9 @@ class CreateVolume(command.ShowOne):
image = None image = None
if parsed_args.image: if parsed_args.image:
image = utils.find_resource( image = image_client.find_image(
image_client.images,
parsed_args.image, parsed_args.image,
ignore_missing=False,
).id ).id
snapshot = parsed_args.snapshot or parsed_args.snapshot_id snapshot = parsed_args.snapshot or parsed_args.snapshot_id