summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2020-10-09 10:43:58 +0000
committerGerrit Code Review <review@openstack.org>2020-10-09 10:43:59 +0000
commit960004dcc733e88841d372e160b9e43669796c80 (patch)
tree54dad5dd6eb2896985cce128b49982533aae79a6 /openstackclient
parentf50bd408666df161603f9ce20a5d00428a13b2ef (diff)
parent12f1e56ebf2ea3999c57246410501c09fced2c4c (diff)
downloadpython-openstackclient-960004dcc733e88841d372e160b9e43669796c80.tar.gz
Merge "Add 'openstack server create --use-config-drive'"
Diffstat (limited to 'openstackclient')
-rw-r--r--openstackclient/compute/v2/server.py45
-rw-r--r--openstackclient/tests/unit/compute/v2/test_server.py5
2 files changed, 36 insertions, 14 deletions
diff --git a/openstackclient/compute/v2/server.py b/openstackclient/compute/v2/server.py
index 1d1fc741..06bbb7ee 100644
--- a/openstackclient/compute/v2/server.py
+++ b/openstackclient/compute/v2/server.py
@@ -707,12 +707,30 @@ class CreateServer(command.ShowOne):
default={},
help=_('Hints for the scheduler (optional extension)'),
)
- parser.add_argument(
+ config_drive_group = parser.add_mutually_exclusive_group()
+ config_drive_group.add_argument(
+ '--use-config-drive',
+ action='store_true',
+ dest='config_drive',
+ help=_("Enable config drive."),
+ )
+ config_drive_group.add_argument(
+ '--no-config-drive',
+ action='store_false',
+ dest='config_drive',
+ help=_("Disable config drive."),
+ )
+ # TODO(stephenfin): Drop support in the next major version bump after
+ # Victoria
+ config_drive_group.add_argument(
'--config-drive',
metavar='<config-drive-volume>|True',
default=False,
- help=_('Use specified volume as the config drive, '
- 'or \'True\' to use an ephemeral drive'),
+ help=_(
+ "**Deprecated** Use specified volume as the config drive, "
+ "or 'True' to use an ephemeral drive. Replaced by "
+ "'--use-config-drive'."
+ ),
)
parser.add_argument(
'--min',
@@ -1013,16 +1031,19 @@ class CreateServer(command.ShowOne):
else:
hints[key] = values
- # What does a non-boolean value for config-drive do?
- # --config-drive argument is either a volume id or
- # 'True' (or '1') to use an ephemeral volume
- if str(parsed_args.config_drive).lower() in ("true", "1"):
- config_drive = True
- elif str(parsed_args.config_drive).lower() in ("false", "0",
- "", "none"):
- config_drive = None
+ if isinstance(parsed_args.config_drive, bool):
+ # NOTE(stephenfin): The API doesn't accept False as a value :'(
+ config_drive = parsed_args.config_drive or None
else:
- config_drive = parsed_args.config_drive
+ # TODO(stephenfin): Remove when we drop support for
+ # '--config-drive'
+ if str(parsed_args.config_drive).lower() in ("true", "1"):
+ config_drive = True
+ elif str(parsed_args.config_drive).lower() in ("false", "0",
+ "", "none"):
+ config_drive = None
+ else:
+ config_drive = parsed_args.config_drive
boot_kwargs = dict(
meta=parsed_args.property,
diff --git a/openstackclient/tests/unit/compute/v2/test_server.py b/openstackclient/tests/unit/compute/v2/test_server.py
index 02bb406c..dffedc6d 100644
--- a/openstackclient/tests/unit/compute/v2/test_server.py
+++ b/openstackclient/tests/unit/compute/v2/test_server.py
@@ -857,6 +857,7 @@ class TestServerCreate(TestServer):
'--key-name', 'keyname',
'--property', 'Beta=b',
'--security-group', 'securitygroup',
+ '--use-config-drive',
'--hint', 'a=b',
'--hint', 'a=c',
self.new_server.name,
@@ -868,7 +869,7 @@ class TestServerCreate(TestServer):
('property', {'Beta': 'b'}),
('security_group', ['securitygroup']),
('hint', {'a': ['b', 'c']}),
- ('config_drive', False),
+ ('config_drive', True),
('server_name', self.new_server.name),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -900,7 +901,7 @@ class TestServerCreate(TestServer):
block_device_mapping_v2=[],
nics=[],
scheduler_hints={'a': ['b', 'c']},
- config_drive=None,
+ config_drive=True,
)
# ServerManager.create(name, image, flavor, **kwargs)
self.servers_mock.create.assert_called_with(