Cast string boolean from CLI
Convert quoted boolean strings to real booleans when handling the ``--public`` option in runbook create and set commands. Change-Id: I44ee670b4e8d3b9fa0a5c7275efb050883b2c925
This commit is contained in:
@@ -55,6 +55,9 @@ class CreateBaremetalRunbook(command.ShowOne):
|
|||||||
help=_('UUID of the runbook.'))
|
help=_('UUID of the runbook.'))
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--public',
|
'--public',
|
||||||
|
dest='public',
|
||||||
|
nargs='?',
|
||||||
|
const='true',
|
||||||
metavar='<public>',
|
metavar='<public>',
|
||||||
help=_('Whether the runbook will be private or public.')
|
help=_('Whether the runbook will be private or public.')
|
||||||
)
|
)
|
||||||
@@ -86,6 +89,9 @@ class CreateBaremetalRunbook(command.ShowOne):
|
|||||||
field_list = ['name', 'uuid', 'owner', 'public', 'extra']
|
field_list = ['name', 'uuid', 'owner', 'public', 'extra']
|
||||||
fields = dict((k, v) for (k, v) in vars(parsed_args).items()
|
fields = dict((k, v) for (k, v) in vars(parsed_args).items()
|
||||||
if k in field_list and v is not None)
|
if k in field_list and v is not None)
|
||||||
|
if parsed_args.public is not None:
|
||||||
|
fields['public'] = utils.bool_argument_value(
|
||||||
|
'--public', parsed_args.public, strict=True)
|
||||||
fields = utils.args_array_to_dict(fields, 'extra')
|
fields = utils.args_array_to_dict(fields, 'extra')
|
||||||
runbook = baremetal_client.runbook.create(steps=steps,
|
runbook = baremetal_client.runbook.create(steps=steps,
|
||||||
**fields)
|
**fields)
|
||||||
@@ -156,6 +162,9 @@ class SetBaremetalRunbook(command.Command):
|
|||||||
)
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'--public',
|
'--public',
|
||||||
|
dest='public',
|
||||||
|
nargs='?',
|
||||||
|
const='true',
|
||||||
metavar='<public>',
|
metavar='<public>',
|
||||||
help=_('Make a private runbook public.')
|
help=_('Make a private runbook public.')
|
||||||
)
|
)
|
||||||
@@ -190,8 +199,10 @@ class SetBaremetalRunbook(command.Command):
|
|||||||
if parsed_args.owner:
|
if parsed_args.owner:
|
||||||
owner = ["owner=%s" % parsed_args.owner]
|
owner = ["owner=%s" % parsed_args.owner]
|
||||||
properties.extend(utils.args_array_to_patch('add', owner))
|
properties.extend(utils.args_array_to_patch('add', owner))
|
||||||
if parsed_args.public:
|
if parsed_args.public is not None:
|
||||||
public = ["public=%s" % parsed_args.public]
|
to_bool = utils.bool_argument_value(
|
||||||
|
'--public', parsed_args.public, strict=True)
|
||||||
|
public = ["public=%s" % to_bool]
|
||||||
properties.extend(utils.args_array_to_patch('add', public))
|
properties.extend(utils.args_array_to_patch('add', public))
|
||||||
if parsed_args.steps:
|
if parsed_args.steps:
|
||||||
steps = utils.handle_json_arg(parsed_args.steps, 'runbook steps')
|
steps = utils.handle_json_arg(parsed_args.steps, 'runbook steps')
|
||||||
|
@@ -127,6 +127,28 @@ class TestCreateBaremetalRunbook(TestBaremetalRunbook):
|
|||||||
self.cmd, arglist, verifylist)
|
self.cmd, arglist, verifylist)
|
||||||
self.assertFalse(self.baremetal_mock.runbook.create.called)
|
self.assertFalse(self.baremetal_mock.runbook.create.called)
|
||||||
|
|
||||||
|
def test_baremetal_runbook_create_public_false(self):
|
||||||
|
arglist = [
|
||||||
|
'--name', baremetal_fakes.baremetal_runbook_name,
|
||||||
|
'--steps', baremetal_fakes.baremetal_runbook_steps,
|
||||||
|
'--public', 'false',
|
||||||
|
]
|
||||||
|
verifylist = [
|
||||||
|
('name', baremetal_fakes.baremetal_runbook_name),
|
||||||
|
('steps', baremetal_fakes.baremetal_runbook_steps),
|
||||||
|
('public', 'false'),
|
||||||
|
]
|
||||||
|
|
||||||
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||||
|
self.cmd.take_action(parsed_args)
|
||||||
|
|
||||||
|
expected = {
|
||||||
|
'name': baremetal_fakes.baremetal_runbook_name,
|
||||||
|
'steps': json.loads(baremetal_fakes.baremetal_runbook_steps),
|
||||||
|
'public': False,
|
||||||
|
}
|
||||||
|
self.baremetal_mock.runbook.create.assert_called_once_with(**expected)
|
||||||
|
|
||||||
|
|
||||||
class TestShowBaremetalRunbook(TestBaremetalRunbook):
|
class TestShowBaremetalRunbook(TestBaremetalRunbook):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
Reference in New Issue
Block a user