1 ##############################################################################
2 # Copyright (c) 2016 Huawei Technologies Co.,Ltd and others.
4 # All rights reserved. This program and the accompanying materials
5 # are made available under the terms of the Apache License, Version 2.0
6 # which accompanies this distribution, and is available at
7 # http://www.apache.org/licenses/LICENSE-2.0
8 ##############################################################################
10 from oslo_utils import uuidutils
16 from yardstick.common import constants
17 from yardstick.common import openstack_utils
20 class GetCredentialsTestCase(unittest.TestCase):
22 @mock.patch('yardstick.common.openstack_utils.os')
23 def test_get_credentials(self, _):
24 with mock.patch.dict('os.environ', {'OS_IDENTITY_API_VERSION': '2'},
26 openstack_utils.get_credentials()
29 class GetHeatApiVersionTestCase(unittest.TestCase):
31 def test_get_heat_api_version_check_result(self):
32 API = 'HEAT_API_VERSION'
35 with mock.patch.dict('os.environ', {API: '2'}, clear=True):
36 api_version = openstack_utils.get_heat_api_version()
37 self.assertEqual(api_version, expected_result)
40 class GetShadeClientTestCase(unittest.TestCase):
42 @mock.patch.object(shade, 'openstack_cloud', return_value='os_client')
43 def test_get_shade_client(self, mock_openstack_cloud):
44 os_cloud_config = {'param1': True, 'param2': 'value2'}
45 self.assertEqual('os_client',
46 openstack_utils.get_shade_client(**os_cloud_config))
47 os_cloud_config.update(constants.OS_CLOUD_DEFAULT_CONFIG)
48 mock_openstack_cloud.assert_called_once_with(**os_cloud_config)
50 mock_openstack_cloud.reset_mock()
51 os_cloud_config = {'verify': True, 'param2': 'value2'}
52 self.assertEqual('os_client',
53 openstack_utils.get_shade_client(**os_cloud_config))
54 mock_openstack_cloud.assert_called_once_with(**os_cloud_config)
56 @mock.patch.object(shade, 'openstack_cloud', return_value='os_client')
57 def test_get_shade_client_no_parameters(self, mock_openstack_cloud):
58 self.assertEqual('os_client', openstack_utils.get_shade_client())
59 mock_openstack_cloud.assert_called_once_with(
60 **constants.OS_CLOUD_DEFAULT_CONFIG)
63 class DeleteNeutronNetTestCase(unittest.TestCase):
66 self.mock_shade_client = mock.Mock()
68 def test_delete_neutron_net(self):
69 self.mock_shade_client.delete_network.return_value = True
70 output = openstack_utils.delete_neutron_net(self.mock_shade_client,
72 self.assertTrue(output)
74 def test_delete_neutron_net_fail(self):
75 self.mock_shade_client.delete_network.return_value = False
76 output = openstack_utils.delete_neutron_net(self.mock_shade_client,
78 self.assertFalse(output)
80 @mock.patch.object(openstack_utils, 'log')
81 def test_delete_neutron_net_exception(self, mock_logger):
82 self.mock_shade_client.delete_network.side_effect = (
83 exc.OpenStackCloudException('error message'))
84 output = openstack_utils.delete_neutron_net(self.mock_shade_client,
86 self.assertFalse(output)
87 mock_logger.error.assert_called_once()
90 class CreateNeutronNetTestCase(unittest.TestCase):
93 self.mock_shade_client = mock.Mock()
94 self.network_name = 'name'
95 self.mock_shade_client.create_network = mock.Mock()
97 def test_create_neutron_net(self):
98 _uuid = uuidutils.generate_uuid()
99 self.mock_shade_client.create_network.return_value = {'id': _uuid}
100 output = openstack_utils.create_neutron_net(self.mock_shade_client,
102 self.assertEqual(_uuid, output)
104 @mock.patch.object(openstack_utils, 'log')
105 def test_create_neutron_net_exception(self, mock_logger):
106 self.mock_shade_client.create_network.side_effect = (
107 exc.OpenStackCloudException('error message'))
109 output = openstack_utils.create_neutron_net(self.mock_shade_client,
111 mock_logger.error.assert_called_once()
112 self.assertIsNone(output)
115 class CreateNeutronSubnetTestCase(unittest.TestCase):
118 self.mock_shade_client = mock.Mock()
119 self.network_name_or_id = 'name_or_id'
120 self.mock_shade_client.create_subnet = mock.Mock()
122 def test_create_neutron_subnet(self):
123 _uuid = uuidutils.generate_uuid()
124 self.mock_shade_client.create_subnet.return_value = {'id': _uuid}
125 output = openstack_utils.create_neutron_subnet(
126 self.mock_shade_client, self.network_name_or_id)
127 self.assertEqual(_uuid, output)
129 @mock.patch.object(openstack_utils, 'log')
130 def test_create_neutron_subnet_exception(self, mock_logger):
131 self.mock_shade_client.create_subnet.side_effect = (
132 exc.OpenStackCloudException('error message'))
134 output = openstack_utils.create_neutron_subnet(
135 self.mock_shade_client, self.network_name_or_id)
136 mock_logger.error.assert_called_once()
137 self.assertIsNone(output)
140 class DeleteNeutronRouterTestCase(unittest.TestCase):
143 self.mock_shade_client = mock.Mock()
144 self.mock_shade_client.delete_router = mock.Mock()
146 def test_delete_neutron_router(self):
147 self.mock_shade_client.delete_router.return_value = True
148 output = openstack_utils.delete_neutron_router(self.mock_shade_client,
150 self.assertTrue(output)
152 def test_delete_neutron_router_fail(self):
153 self.mock_shade_client.delete_router.return_value = False
154 output = openstack_utils.delete_neutron_router(self.mock_shade_client,
156 self.assertFalse(output)
158 @mock.patch.object(openstack_utils, 'log')
159 def test_delete_neutron_router_exception(self, mock_logger):
160 self.mock_shade_client.delete_router.side_effect = (
161 exc.OpenStackCloudException('error message'))
162 output = openstack_utils.delete_neutron_router(self.mock_shade_client,
164 mock_logger.error.assert_called_once()
165 self.assertFalse(output)
168 class CreateNeutronRouterTestCase(unittest.TestCase):
171 self.mock_shade_client = mock.Mock()
172 self.mock_shade_client.create_subnet = mock.Mock()
174 def test_create_neutron_router(self):
175 _uuid = uuidutils.generate_uuid()
176 self.mock_shade_client.create_router.return_value = {'id': _uuid}
177 output = openstack_utils.create_neutron_router(
178 self.mock_shade_client)
179 self.assertEqual(_uuid, output)
181 @mock.patch.object(openstack_utils, 'log')
182 def test_create_neutron_subnet_exception(self, mock_logger):
183 self.mock_shade_client.create_router.side_effect = (
184 exc.OpenStackCloudException('error message'))
186 output = openstack_utils.create_neutron_router(
187 self.mock_shade_client)
188 mock_logger.error.assert_called_once()
189 self.assertIsNone(output)
192 class RemoveRouterInterfaceTestCase(unittest.TestCase):
195 self.mock_shade_client = mock.Mock()
196 self.router = 'router'
197 self.mock_shade_client.remove_router_interface = mock.Mock()
199 def test_remove_router_interface(self):
200 self.mock_shade_client.remove_router_interface.return_value = True
201 output = openstack_utils.remove_router_interface(
202 self.mock_shade_client, self.router)
203 self.assertTrue(output)
205 @mock.patch.object(openstack_utils, 'log')
206 def test_remove_router_interface_exception(self, mock_logger):
207 self.mock_shade_client.remove_router_interface.side_effect = (
208 exc.OpenStackCloudException('error message'))
209 output = openstack_utils.remove_router_interface(
210 self.mock_shade_client, self.router)
211 mock_logger.error.assert_called_once()
212 self.assertFalse(output)
215 class CreateFloatingIpTestCase(unittest.TestCase):
218 self.mock_shade_client = mock.Mock()
219 self.network_name_or_id = 'name'
220 self.mock_shade_client.create_floating_ip = mock.Mock()
222 def test_create_floating_ip(self):
223 self.mock_shade_client.create_floating_ip.return_value = \
224 {'floating_ip_address': 'value1', 'id': 'value2'}
225 output = openstack_utils.create_floating_ip(self.mock_shade_client,
226 self.network_name_or_id)
227 self.assertEqual({'fip_addr': 'value1', 'fip_id': 'value2'}, output)
229 @mock.patch.object(openstack_utils, 'log')
230 def test_create_floating_ip_exception(self, mock_logger):
231 self.mock_shade_client.create_floating_ip.side_effect = (
232 exc.OpenStackCloudException('error message'))
233 output = openstack_utils.create_floating_ip(
234 self.mock_shade_client, self.network_name_or_id)
235 mock_logger.error.assert_called_once()
236 self.assertIsNone(output)
239 class DeleteFloatingIpTestCase(unittest.TestCase):
242 self.mock_shade_client = mock.Mock()
243 self.floating_ip_id = 'floating_ip_id'
244 self.mock_shade_client.delete_floating_ip = mock.Mock()
246 def test_delete_floating_ip(self):
247 self.mock_shade_client.delete_floating_ip.return_value = True
248 output = openstack_utils.delete_floating_ip(self.mock_shade_client,
250 self.assertTrue(output)
252 def test_delete_floating_ip_fail(self):
253 self.mock_shade_client.delete_floating_ip.return_value = False
254 output = openstack_utils.delete_floating_ip(self.mock_shade_client,
256 self.assertFalse(output)
258 @mock.patch.object(openstack_utils, 'log')
259 def test_delete_floating_ip_exception(self, mock_logger):
260 self.mock_shade_client.delete_floating_ip.side_effect = (
261 exc.OpenStackCloudException('error message'))
262 output = openstack_utils.delete_floating_ip(self.mock_shade_client,
264 mock_logger.error.assert_called_once()
265 self.assertFalse(output)
268 class CreateSecurityGroupRuleTestCase(unittest.TestCase):
271 self.mock_shade_client = mock.Mock()
272 self.secgroup_name_or_id = 'sg_name_id'
273 self.mock_shade_client.create_security_group_rule = mock.Mock()
275 def test_create_security_group_rule(self):
276 self.mock_shade_client.create_security_group_rule.return_value = (
277 {'security_group_rule'})
278 output = openstack_utils.create_security_group_rule(
279 self.mock_shade_client, self.secgroup_name_or_id)
280 self.assertTrue(output)
282 @mock.patch.object(openstack_utils, 'log')
283 def test_create_security_group_rule_exception(self, mock_logger):
284 self.mock_shade_client.create_security_group_rule.side_effect = (
285 exc.OpenStackCloudException('error message'))
287 output = openstack_utils.create_security_group_rule(
288 self.mock_shade_client, self.secgroup_name_or_id)
289 mock_logger.error.assert_called_once()
290 self.assertFalse(output)
293 class ListImageTestCase(unittest.TestCase):
295 def test_list_images(self):
296 mock_shade_client = mock.MagicMock()
297 mock_shade_client.list_images.return_value = []
298 openstack_utils.list_images(mock_shade_client)
300 @mock.patch.object(openstack_utils, 'log')
301 def test_list_images_exception(self, mock_logger):
302 mock_shade_client = mock.MagicMock()
303 mock_shade_client.list_images = mock.MagicMock()
304 mock_shade_client.list_images.side_effect = (
305 exc.OpenStackCloudException('error message'))
306 images = openstack_utils.list_images(mock_shade_client)
307 mock_logger.error.assert_called_once()
308 self.assertFalse(images)
311 class SecurityGroupTestCase(unittest.TestCase):
314 self.mock_shade_client = mock.Mock()
315 self.sg_name = 'sg_name'
316 self.sg_description = 'sg_description'
317 self._uuid = uuidutils.generate_uuid()
319 def test_create_security_group_full_existing_security_group(self):
320 self.mock_shade_client.get_security_group.return_value = (
321 {'name': 'name', 'id': self._uuid})
322 output = openstack_utils.create_security_group_full(
323 self.mock_shade_client, self.sg_name, self.sg_description)
324 self.mock_shade_client.get_security_group.assert_called_once()
325 self.assertEqual(self._uuid, output)
327 @mock.patch.object(openstack_utils, 'log')
328 def test_create_security_group_full_non_existing_security_group(
330 self.mock_shade_client.get_security_group.return_value = None
331 self.mock_shade_client.create_security_group.side_effect = (
332 exc.OpenStackCloudException('error message'))
333 output = openstack_utils.create_security_group_full(
334 self.mock_shade_client, self.sg_name, self.sg_description)
335 mock_logger.error.assert_called_once()
336 self.assertIsNone(output)
338 @mock.patch.object(openstack_utils, 'create_security_group_rule')
339 @mock.patch.object(openstack_utils, 'log')
340 def test_create_security_group_full_create_rule_fail(
341 self, mock_logger, mock_create_security_group_rule):
342 self.mock_shade_client.get_security_group.return_value = None
343 self.mock_shade_client.create_security_group.return_value = (
344 {'name': 'name', 'id': self._uuid})
345 mock_create_security_group_rule.return_value = False
346 output = openstack_utils.create_security_group_full(
347 self.mock_shade_client, self.sg_name, self.sg_description)
348 mock_create_security_group_rule.assert_called()
349 self.mock_shade_client.delete_security_group(self.sg_name)
350 mock_logger.error.assert_called_once()
351 self.assertIsNone(output)
353 @mock.patch.object(openstack_utils, 'create_security_group_rule')
354 def test_create_security_group_full(
355 self, mock_create_security_group_rule):
356 self.mock_shade_client.get_security_group.return_value = None
357 self.mock_shade_client.create_security_group.return_value = (
358 {'name': 'name', 'id': self._uuid})
359 mock_create_security_group_rule.return_value = True
360 output = openstack_utils.create_security_group_full(
361 self.mock_shade_client, self.sg_name, self.sg_description)
362 mock_create_security_group_rule.assert_called()
363 self.mock_shade_client.delete_security_group(self.sg_name)
364 self.assertEqual(self._uuid, output)
366 # *********************************************
368 # *********************************************
371 class CreateInstanceTestCase(unittest.TestCase):
373 def test_create_instance_and_wait_for_active(self):
374 self.mock_shade_client = mock.Mock()
377 flavor = 'flavor_name'
378 self.mock_shade_client.create_server.return_value = (
379 {'name': name, 'image': image, 'flavor': flavor})
380 output = openstack_utils.create_instance_and_wait_for_active(
381 self.mock_shade_client, name, image, flavor)
383 {'name': name, 'image': image, 'flavor': flavor}, output)
385 @mock.patch.object(openstack_utils, 'log')
386 def test_create_instance_and_wait_for_active_fail(self, mock_logger):
387 self.mock_shade_client = mock.Mock()
388 self.mock_shade_client.create_server.side_effect = (
389 exc.OpenStackCloudException('error message'))
390 output = openstack_utils.create_instance_and_wait_for_active(
391 self.mock_shade_client, 'server_name', 'image_name', 'flavor_name')
392 mock_logger.error.assert_called_once()
393 self.assertIsNone(output)
396 class DeleteInstanceTestCase(unittest.TestCase):
399 self.mock_shade_client = mock.Mock()
401 def test_delete_instance(self):
402 self.mock_shade_client.delete_server.return_value = True
403 output = openstack_utils.delete_instance(self.mock_shade_client,
405 self.assertTrue(output)
407 def test_delete_instance_fail(self):
408 self.mock_shade_client.delete_server.return_value = False
409 output = openstack_utils.delete_instance(self.mock_shade_client,
411 self.assertFalse(output)
413 @mock.patch.object(openstack_utils, 'log')
414 def test_delete_instance_exception(self, mock_logger):
415 self.mock_shade_client.delete_server.side_effect = (
416 exc.OpenStackCloudException('error message'))
417 output = openstack_utils.delete_instance(self.mock_shade_client,
419 mock_logger.error.assert_called_once()
420 self.assertFalse(output)
423 class CreateKeypairTestCase(unittest.TestCase):
426 self.mock_shade_client = mock.Mock()
427 self.name = 'key_name'
429 def test_create_keypair(self):
430 self.mock_shade_client.create_keypair.return_value = (
431 {'name': 'key-name', 'type': 'ssh'})
432 output = openstack_utils.create_keypair(
433 self.mock_shade_client, self.name)
435 {'name': 'key-name', 'type': 'ssh'},
438 @mock.patch.object(openstack_utils, 'log')
439 def test_create_keypair_fail(self, mock_logger):
440 self.mock_shade_client.create_keypair.side_effect = (
441 exc.OpenStackCloudException('error message'))
442 output = openstack_utils.create_keypair(
443 self.mock_shade_client, self.name)
444 mock_logger.error.assert_called_once()
445 self.assertIsNone(output)
448 class DeleteKeypairTestCase(unittest.TestCase):
451 self.mock_shade_client = mock.Mock()
453 def test_delete_keypair(self):
454 self.mock_shade_client.delete_keypair.return_value = True
455 output = openstack_utils.delete_keypair(self.mock_shade_client,
457 self.assertTrue(output)
459 def test_delete_keypair_fail(self):
460 self.mock_shade_client.delete_keypair.return_value = False
461 output = openstack_utils.delete_keypair(self.mock_shade_client,
463 self.assertFalse(output)
465 @mock.patch.object(openstack_utils, 'log')
466 def test_delete_keypair_exception(self, mock_logger):
467 self.mock_shade_client.delete_keypair.side_effect = (
468 exc.OpenStackCloudException('error message'))
469 output = openstack_utils.delete_keypair(self.mock_shade_client,
471 mock_logger.error.assert_called_once()
472 self.assertFalse(output)
475 class AttachVolumeToServerTestCase(unittest.TestCase):
477 def test_attach_volume_to_server(self):
478 self.mock_shade_client = mock.Mock()
479 self.mock_shade_client.get_server.return_value = {'server_dict'}
480 self.mock_shade_client.get_volume.return_value = {'volume_dict'}
481 self.mock_shade_client.attach_volume.return_value = True
482 output = openstack_utils.attach_volume_to_server(
483 self.mock_shade_client, 'server_name_or_id', 'volume_name_or_id')
484 self.assertTrue(output)
486 @mock.patch.object(openstack_utils, 'log')
487 def test_attach_volume_to_server_fail(self, mock_logger):
488 self.mock_shade_client = mock.Mock()
489 self.mock_shade_client.attach_volume.side_effect = (
490 exc.OpenStackCloudException('error message'))
491 output = openstack_utils.attach_volume_to_server(
492 self.mock_shade_client, 'server_name_or_id', 'volume_name_or_id')
493 mock_logger.error.assert_called_once()
494 self.assertFalse(output)
497 class GetServerTestCase(unittest.TestCase):
499 def test_get_server(self):
500 self.mock_shade_client = mock.Mock()
501 _uuid = uuidutils.generate_uuid()
502 self.mock_shade_client.get_server.return_value = {
503 'name': 'server_name', 'id': _uuid}
504 output = openstack_utils.get_server(self.mock_shade_client,
506 self.assertEqual({'name': 'server_name', 'id': _uuid}, output)
508 @mock.patch.object(openstack_utils, 'log')
509 def test_get_server_exception(self, mock_logger):
510 self.mock_shade_client = mock.Mock()
511 self.mock_shade_client.get_server.side_effect = (
512 exc.OpenStackCloudException('error message'))
513 output = openstack_utils.get_server(self.mock_shade_client,
515 mock_logger.error.assert_called_once()
516 self.assertIsNone(output)
519 class GetFlavorTestCase(unittest.TestCase):
521 def test_get_flavor(self):
522 self.mock_shade_client = mock.Mock()
523 _uuid = uuidutils.generate_uuid()
524 self.mock_shade_client.get_flavor.return_value = {
525 'name': 'flavor_name', 'id': _uuid}
526 output = openstack_utils.get_flavor(self.mock_shade_client,
528 self.assertEqual({'name': 'flavor_name', 'id': _uuid}, output)
530 @mock.patch.object(openstack_utils, 'log')
531 def test_get_flavor_exception(self, mock_logger):
532 self.mock_shade_client = mock.Mock()
533 self.mock_shade_client.get_flavor.side_effect = (
534 exc.OpenStackCloudException('error message'))
535 output = openstack_utils.get_flavor(self.mock_shade_client,
537 mock_logger.error.assert_called_once()
538 self.assertIsNone(output)
540 # *********************************************
542 # *********************************************
545 class GetVolumeIDTestCase(unittest.TestCase):
547 def test_get_volume_id(self):
548 self.mock_shade_client = mock.Mock()
549 _uuid = uuidutils.generate_uuid()
550 self.mock_shade_client.get_volume_id.return_value = _uuid
551 output = openstack_utils.get_volume_id(self.mock_shade_client,
553 self.assertEqual(_uuid, output)
555 def test_get_volume_id_None(self):
556 self.mock_shade_client = mock.Mock()
557 self.mock_shade_client.get_volume_id.return_value = None
558 output = openstack_utils.get_volume_id(self.mock_shade_client,
560 self.assertIsNone(output)
563 class GetVolumeTestCase(unittest.TestCase):
566 self.mock_shade_client = mock.Mock()
567 self.mock_shade_client.get_volume = mock.Mock()
569 def test_get_volume(self):
570 self.mock_shade_client.get_volume.return_value = {'volume'}
571 output = openstack_utils.get_volume(self.mock_shade_client,
573 self.assertEqual({'volume'}, output)
575 def test_get_volume_None(self):
576 self.mock_shade_client.get_volume.return_value = None
577 output = openstack_utils.get_volume(self.mock_shade_client,
579 self.assertIsNone(output)
582 class CreateVolumeTestCase(unittest.TestCase):
585 self.mock_shade_client = mock.Mock()
588 def test_create_volume(self):
589 self.mock_shade_client.create_volume.return_value = (
590 {'name': 'volume-name', 'size': self.size})
591 output = openstack_utils.create_volume(
592 self.mock_shade_client, self.size)
594 {'name': 'volume-name', 'size': self.size},
597 @mock.patch.object(openstack_utils, 'log')
598 def test_create_volume_fail(self, mock_logger):
599 self.mock_shade_client.create_volume.side_effect = (
600 exc.OpenStackCloudException('error message'))
601 output = openstack_utils.create_volume(self.mock_shade_client,
603 mock_logger.error.assert_called_once()
604 self.assertIsNone(output)
607 class DeleteVolumeTestCase(unittest.TestCase):
610 self.mock_shade_client = mock.Mock()
612 def test_delete_volume(self):
613 self.mock_shade_client.delete_volume.return_value = True
614 output = openstack_utils.delete_volume(self.mock_shade_client,
616 self.assertTrue(output)
618 def test_delete_volume_fail(self):
619 self.mock_shade_client.delete_volume.return_value = False
620 output = openstack_utils.delete_volume(self.mock_shade_client,
622 self.assertFalse(output)
624 @mock.patch.object(openstack_utils, 'log')
625 def test_delete_volume_exception(self, mock_logger):
626 self.mock_shade_client.delete_volume.side_effect = (
627 exc.OpenStackCloudException('error message'))
628 output = openstack_utils.delete_volume(self.mock_shade_client,
630 mock_logger.error.assert_called_once()
631 self.assertFalse(output)
634 class DetachVolumeTestCase(unittest.TestCase):
636 @mock.patch.object(openstack_utils, 'get_server')
637 def test_detach_volume(self, mock_get_server):
638 self.mock_shade_client = mock.Mock()
639 mock_get_server.return_value = {'server_dict'}
640 self.mock_shade_client.get_volume.return_value = {'volume_dict'}
641 output = openstack_utils.detach_volume(self.mock_shade_client,
644 self.assertTrue(output)
646 @mock.patch.object(openstack_utils, 'get_server')
647 @mock.patch.object(openstack_utils, 'log')
648 def test_detach_volume_exception(self, mock_logger, mock_get_server):
649 self.mock_shade_client = mock.Mock()
650 mock_get_server.return_value = {'server_dict'}
651 self.mock_shade_client.get_volume.return_value = {'volume_dict'}
652 self.mock_shade_client.detach_volume.side_effect = (
653 exc.OpenStackCloudException('error message'))
654 output = openstack_utils.detach_volume(self.mock_shade_client,
657 mock_logger.error.assert_called_once()
658 self.assertFalse(output)
661 # *********************************************
663 # *********************************************
665 class CreateImageTestCase(unittest.TestCase):
668 self.mock_shade_client = mock.Mock()
669 self._uuid = uuidutils.generate_uuid()
670 self.name = 'image_name'
672 @mock.patch.object(openstack_utils, 'log')
673 def test_create_image_already_exit(self, mock_logger):
674 self.mock_shade_client.get_image_id.return_value = self._uuid
675 output = openstack_utils.create_image(self.mock_shade_client, self.name)
676 mock_logger.info.assert_called_once()
677 self.assertEqual(self._uuid, output)
679 def test_create_image(self):
680 self.mock_shade_client.get_image_id.return_value = None
681 self.mock_shade_client.create_image.return_value = {'id': self._uuid}
682 output = openstack_utils.create_image(self.mock_shade_client, self.name)
683 self.assertEqual(self._uuid, output)
685 @mock.patch.object(openstack_utils, 'log')
686 def test_create_image_exception(self, mock_logger):
687 self.mock_shade_client.get_image_id.return_value = None
688 self.mock_shade_client.create_image.side_effect = (
689 exc.OpenStackCloudException('error message'))
691 output = openstack_utils.create_image(self.mock_shade_client,
693 mock_logger.error.assert_called_once()
694 self.assertIsNone(output)
697 class DeleteImageTestCase(unittest.TestCase):
699 def test_delete_image(self):
700 self.mock_shade_client = mock.Mock()
701 self.mock_shade_client.delete_image.return_value = True
702 output = openstack_utils.delete_image(self.mock_shade_client,
704 self.assertTrue(output)
706 def test_delete_image_fail(self):
707 self.mock_shade_client = mock.Mock()
708 self.mock_shade_client.delete_image.return_value = False
709 output = openstack_utils.delete_image(self.mock_shade_client,
711 self.assertFalse(output)
713 @mock.patch.object(openstack_utils, 'log')
714 def test_delete_image_exception(self, mock_logger):
715 self.mock_shade_client = mock.Mock()
716 self.mock_shade_client.delete_image.side_effect = (
717 exc.OpenStackCloudException('error message'))
718 output = openstack_utils.delete_image(self.mock_shade_client,
720 mock_logger.error.assert_called_once()
721 self.assertFalse(output)