def execute(self, args): image_mgr = ImageManager(self.client) data = {} if args.get('--name'): data['name'] = args.get('--name') if args.get('--note'): data['note'] = args.get('--note') if args.get('--tag'): data['tag'] = args.get('--tag') image_id = resolve_id(image_mgr.resolve_ids, args.get('<identifier>'), 'image') if not image_mgr.edit(image_id, **data): raise CLIAbort("Failed to Edit Image")
class ImageTests(unittest.TestCase): def setUp(self): self.client = FixtureClient() self.image = ImageManager(self.client) self.vgbdtg = self.client['Virtual_Guest_Block_Device_Template_Group'] self.account = self.client['Account'] def test_get_image(self): result = self.image.get_image(100) self.vgbdtg.getObject.assert_called_once_with(id=100, mask=ANY) self.assertEqual(result, Virtual_Guest_Block_Device_Template_Group.getObject) def test_delete_image(self): self.image.delete_image(100) self.vgbdtg.deleteObject.assert_called_once_with(id=100) def test_list_private_images(self): results = self.image.list_private_images() f = self.account.getPrivateBlockDeviceTemplateGroups f.assert_called_once_with(filter={}, mask=ANY) self.assertEqual(results, Account.getPrivateBlockDeviceTemplateGroups) def test_list_private_images_with_filters(self): results = self.image.list_private_images( guid='0FA9ECBD-CF7E-4A1F-1E36F8D27C2B', name='name') f = self.account.getPrivateBlockDeviceTemplateGroups f.assert_called_once_with( filter={ 'privateBlockDeviceTemplateGroups': { 'globalIdentifier': { 'operation': '_= 0FA9ECBD-CF7E-4A1F-1E36F8D27C2B'}, 'name': {'operation': '_= name'}}}, mask=ANY) self.assertEqual(results, Account.getPrivateBlockDeviceTemplateGroups) def test_list_public_images(self): results = self.image.list_public_images() self.vgbdtg.getPublicImages.assert_called_once_with(filter={}, mask=ANY) self.assertEqual( results, Virtual_Guest_Block_Device_Template_Group.getPublicImages) def test_list_public_images_with_filters(self): results = self.image.list_public_images( guid='0FA9ECBD-CF7E-4A1F-1E36F8D27C2B', name='name') self.vgbdtg.getPublicImages.assert_called_once_with( filter={ 'globalIdentifier': { 'operation': '_= 0FA9ECBD-CF7E-4A1F-1E36F8D27C2B'}, 'name': {'operation': '_= name'}}, mask=ANY) self.assertEqual( results, Virtual_Guest_Block_Device_Template_Group.getPublicImages) def test_resolve_ids_guid(self): result = self.image.resolve_ids('3C1F3C68-0B67-4F5E-8907-D0FC84BF3F12') self.assertEquals(['3C1F3C68-0B67-4F5E-8907-D0FC84BF3F12'], result) def test_resolve_ids_name_public(self): self.vgbdtg.getPublicImages.return_value = [{'id': 100}] self.account.getPrivateBlockDeviceTemplateGroups.return_value = [] result = self.image.resolve_ids('image_name') self.assertEquals([100], result) def test_resolve_ids_name_private(self): self.vgbdtg.getPublicImages.return_value = [] self.account.getPrivateBlockDeviceTemplateGroups.return_value = \ [{'id': 100}] result = self.image.resolve_ids('private_image_name') self.assertEquals([100], result) def test_resolve_ids_not_found(self): self.vgbdtg.getPublicImages.return_value = [] self.account.getPrivateBlockDeviceTemplateGroups.return_value = [] result = self.image.resolve_ids('unknown_name') self.assertEquals([], result) def test_edit(self): # Test updating tags self.image.edit(1, tag="tag1,tag2") self.vgbdtg.setTags.assert_called_once_with("tag1,tag2", id=1) # Test a blank edit self.image.edit(1) self.assertTrue(self.image.edit, 1) # Finally test a full edit args = { 'name': 'abc', 'note': 'xyz' } self.image.edit(1, **args) self.vgbdtg.editObject.assert_called_once_with(args, id=1)