From 1efca54465a9a311dee09a96287676b08f9e62b3 Mon Sep 17 00:00:00 2001 From: Pavlo Shchelokovskyy <shchelokovskyy@gmail.com> Date: Wed, 29 Jan 2025 14:29:47 +0000 Subject: [PATCH] Fix image import --disallow-failure flag the flag should store False to 'allow_failure', not True. Also, make the --allow-failure and --disallow-failure flags mutually exclusive. Change-Id: I03699e14d4d69d9f08caab647293732fc211dbad --- openstackclient/image/v2/image.py | 7 ++-- .../tests/unit/image/v2/test_image.py | 32 +++++++++++++++++++ 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/openstackclient/image/v2/image.py b/openstackclient/image/v2/image.py index fe237e4e1a..95c56f23f2 100644 --- a/openstackclient/image/v2/image.py +++ b/openstackclient/image/v2/image.py @@ -1689,7 +1689,8 @@ class ImportImage(command.ShowOne): "'copy-image' import method)" ), ) - parser.add_argument( + allow_failure_group = parser.add_mutually_exclusive_group() + allow_failure_group.add_argument( '--allow-failure', action='store_true', dest='allow_failure', @@ -1700,9 +1701,9 @@ class ImportImage(command.ShowOne): 'Only usable with --stores or --all-stores' ), ) - parser.add_argument( + allow_failure_group.add_argument( '--disallow-failure', - action='store_true', + action='store_false', dest='allow_failure', default=True, help=_( diff --git a/openstackclient/tests/unit/image/v2/test_image.py b/openstackclient/tests/unit/image/v2/test_image.py index 69a65a59cb..f563828cb6 100644 --- a/openstackclient/tests/unit/image/v2/test_image.py +++ b/openstackclient/tests/unit/image/v2/test_image.py @@ -2092,6 +2092,38 @@ class TestImageImport(TestImage): all_stores_must_succeed=False, ) + def test_import_image__copy_image_disallow_failure(self): + self.image.status = 'active' + arglist = [ + self.image.name, + '--method', + 'copy-image', + '--store', + 'fast', + '--disallow-failure', + ] + verifylist = [ + ('image', self.image.name), + ('import_method', 'copy-image'), + ('stores', ['fast']), + ('allow_failure', False), + ] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + self.cmd.take_action(parsed_args) + + self.image_client.import_image.assert_called_once_with( + self.image, + method='copy-image', + uri=None, + remote_region=None, + remote_image_id=None, + remote_service_interface=None, + stores=['fast'], + all_stores=None, + all_stores_must_succeed=True, + ) + def test_import_image__glance_download(self): arglist = [ self.image.name,