Validate --rollback option when parsing arguments

Also use explicit default to simplify logic.

Change-Id: I65e690485552a4b7fe36db2816b9478044968bd8
Signed-off-by: Takashi Kajinami <kajinamit@oss.nttdata.com>
This commit is contained in:
Takashi Kajinami
2025-11-14 02:09:22 +09:00
parent 5580c6ea45
commit d3585c38c3
2 changed files with 5 additions and 18 deletions

View File

@@ -251,11 +251,13 @@ class UpdateStack(command.ShowOne):
)
parser.add_argument(
'--rollback', metavar='<value>',
default='keep',
choices=['enabled', 'disabled', 'keep'],
help=_('Set rollback on update failure. '
'Value "enabled" sets rollback to enabled. '
'Value "disabled" sets rollback to disabled. '
'Value "keep" uses the value of existing stack to be '
'updated (default)')
'updated.')
)
parser.add_argument(
'--dry-run', action="store_true",
@@ -370,13 +372,8 @@ class UpdateStack(command.ShowOne):
if parsed_args.clear_parameter:
fields['clear_parameters'] = list(parsed_args.clear_parameter)
if parsed_args.rollback:
rollback = parsed_args.rollback.strip().lower()
if rollback not in ('enabled', 'disabled', 'keep'):
msg = _('--rollback invalid value: %s') % parsed_args.rollback
raise exc.CommandError(msg)
if rollback != 'keep':
fields['disable_rollback'] = rollback == 'disabled'
if parsed_args.rollback != 'keep':
fields['disable_rollback'] = (parsed_args.rollback == 'disabled')
if parsed_args.dry_run:
if parsed_args.show_nested:

View File

@@ -267,16 +267,6 @@ class TestStackUpdate(TestStack):
self.assertNotIn('disable_rollback', self.defaults)
self.stack_client.update.assert_called_with(**self.defaults)
def test_stack_update_rollback_invalid(self):
arglist = ['my_stack', '-t', self.template_path, '--rollback', 'foo']
kwargs = copy.deepcopy(self.defaults)
kwargs['disable_rollback'] = False
parsed_args = self.check_parser(self.cmd, arglist, [])
ex = self.assertRaises(exc.CommandError, self.cmd.take_action,
parsed_args)
self.assertEqual("--rollback invalid value: foo", str(ex))
def test_stack_update_parameters(self):
template_path = ('/'.join(self.template_path.split('/')[:-1]) +
'/parameters.yaml')