diff --git a/doc/source/cli/nova.rst b/doc/source/cli/nova.rst index 11573f7d0..712a5ec1f 100644 --- a/doc/source/cli/nova.rst +++ b/doc/source/cli/nova.rst @@ -1089,7 +1089,8 @@ quality of service support, microversion ``2.72`` is required. versions '2.42' - '2.latest') ``--config-drive `` - Enable config drive. + Enable config drive. The value must be a + boolean value. ``--poll`` Report the new server boot progress until it diff --git a/novaclient/tests/unit/v2/test_shell.py b/novaclient/tests/unit/v2/test_shell.py index a57c37948..ad233c5e5 100644 --- a/novaclient/tests/unit/v2/test_shell.py +++ b/novaclient/tests/unit/v2/test_shell.py @@ -240,22 +240,6 @@ class ShellTest(utils.TestCase): }}, ) - def test_boot_config_drive(self): - self.run_command( - 'boot --flavor 1 --image %s --config-drive 1 some-server' % - FAKE_UUID_1) - self.assert_called_anytime( - 'POST', '/servers', - {'server': { - 'flavorRef': '1', - 'name': 'some-server', - 'imageRef': FAKE_UUID_1, - 'min_count': 1, - 'max_count': 1, - 'config_drive': True - }}, - ) - def test_boot_access_ip(self): self.run_command( 'boot --flavor 1 --image %s --access-ip-v4 10.10.10.10 ' @@ -273,9 +257,9 @@ class ShellTest(utils.TestCase): }}, ) - def test_boot_config_drive_custom(self): + def test_boot_config_drive(self): self.run_command( - 'boot --flavor 1 --image %s --config-drive /dev/hda some-server' % + 'boot --flavor 1 --image %s --config-drive 1 some-server' % FAKE_UUID_1) self.assert_called_anytime( 'POST', '/servers', @@ -285,10 +269,33 @@ class ShellTest(utils.TestCase): 'imageRef': FAKE_UUID_1, 'min_count': 1, 'max_count': 1, - 'config_drive': '/dev/hda' + 'config_drive': True }}, ) + def test_boot_config_drive_false(self): + self.run_command( + 'boot --flavor 1 --image %s --config-drive false some-server' % + FAKE_UUID_1) + self.assert_called_anytime( + 'POST', '/servers', + {'server': { + 'flavorRef': '1', + 'name': 'some-server', + 'imageRef': FAKE_UUID_1, + 'min_count': 1, + 'max_count': 1, + }}, + ) + + def test_boot_config_drive_invalid_value(self): + ex = self.assertRaises( + exceptions.CommandError, self.run_command, + 'boot --flavor 1 --image %s --config-drive /dev/hda some-server' % + FAKE_UUID_1) + self.assertIn("The value of the '--config-drive' option must be " + "a boolean value.", six.text_type(ex)) + def test_boot_invalid_user_data(self): invalid_file = os.path.join(os.path.dirname(__file__), 'no_such_file') diff --git a/novaclient/v2/servers.py b/novaclient/v2/servers.py index 9870be0bc..1351189bf 100644 --- a/novaclient/v2/servers.py +++ b/novaclient/v2/servers.py @@ -1375,8 +1375,8 @@ class ServerManager(base.BootingManagerWithFind): any networking for the server. :param scheduler_hints: (optional extension) arbitrary key-value pairs specified by the client to help boot an instance - :param config_drive: (optional extension) value for config drive - either boolean, or volume-id + :param config_drive: (optional extension) a boolean value to enable + config drive :param disk_config: (optional extension) control how the disk is partitioned when the server is created. possible values are 'AUTO' or 'MANUAL'. diff --git a/novaclient/v2/shell.py b/novaclient/v2/shell.py index 2dfd5c92d..5aab35af3 100644 --- a/novaclient/v2/shell.py +++ b/novaclient/v2/shell.py @@ -506,7 +506,9 @@ def _boot(cs, args): elif str(args.config_drive).lower() in ("false", "0", "", "none"): config_drive = None else: - config_drive = args.config_drive + raise exceptions.CommandError( + _("The value of the '--config-drive' option must be " + "a boolean value.")) boot_kwargs = dict( meta=meta, @@ -906,7 +908,7 @@ def _boot(cs, args): metavar="", dest='config_drive', default=False, - help=_("Enable config drive.")) + help=_("Enable config drive. The value must be a boolean value.")) @utils.arg( '--poll', dest='poll', diff --git a/releasenotes/notes/bug-1825061-2beb95db4d6df0cb.yaml b/releasenotes/notes/bug-1825061-2beb95db4d6df0cb.yaml new file mode 100644 index 000000000..573ad7fc7 --- /dev/null +++ b/releasenotes/notes/bug-1825061-2beb95db4d6df0cb.yaml @@ -0,0 +1,5 @@ +--- +fixes: + - | + A check for a value of the '--config-drive' option has been added on the + ``nova boot`` command. A boolean value is only allowed in the option now.