From 09ff9a0f4c118f50924d2fc078d6a4501e696224 Mon Sep 17 00:00:00 2001 From: Stephen Finucane Date: Mon, 29 Nov 2021 11:26:13 +0000 Subject: quota: Deprecate "force" behavior for network quotas In change Idc1b99492d609eb699d0a6bef6cd760458a774f6, we added a '--check-limit' option to enable "no force" behavior for network quotas. This was already the default for compute quotas. Provide a path for harmonizing the behavior of the two options by instead using a '--no-force' option which will become the eventual default for the network quotas also. Change-Id: I25828a3d68e2e900f498e17a0d01fb70be77548e Signed-off-by: Stephen Finucane --- openstackclient/common/quota.py | 51 ++++++++++++++++++++++++++++++++--------- 1 file changed, 40 insertions(+), 11 deletions(-) (limited to 'openstackclient/common') diff --git a/openstackclient/common/quota.py b/openstackclient/common/quota.py index 10f40a75..510437dd 100644 --- a/openstackclient/common/quota.py +++ b/openstackclient/common/quota.py @@ -15,6 +15,7 @@ """Quota action implementations""" +import argparse import itertools import logging import sys @@ -621,20 +622,37 @@ class SetQuota(common.NetDetectionMixin, command.Command): metavar='', help=_('Set quotas for a specific '), ) - parser.add_argument( + force_group = parser.add_mutually_exclusive_group() + force_group.add_argument( '--force', action='store_true', + dest='force', + # TODO(stephenfin): Change the default to False in Z or later + default=None, help=_( - 'Force quota update (only supported by compute and network)' + 'Force quota update (only supported by compute and network) ' + '(default for network)' ), ) - parser.add_argument( - '--check-limit', - action='store_true', + force_group.add_argument( + '--no-force', + action='store_false', + dest='force', + default=None, help=_( - 'Check quota limit when updating (only supported by network)' + 'Do not force quota update ' + '(only supported by compute and network) ' + '(default for compute)' ), ) + # kept here for backwards compatibility/to keep the neutron folks happy + force_group.add_argument( + '--check-limit', + action='store_false', + dest='force', + default=None, + help=argparse.SUPPRESS, + ) return parser def take_action(self, parsed_args): @@ -657,8 +675,8 @@ class SetQuota(common.NetDetectionMixin, command.Command): if value is not None: compute_kwargs[k] = value - if parsed_args.force: - compute_kwargs['force'] = True + if parsed_args.force is not None: + compute_kwargs['force'] = parsed_args.force volume_kwargs = {} for k, v in VOLUME_QUOTAS.items(): @@ -669,10 +687,21 @@ class SetQuota(common.NetDetectionMixin, command.Command): volume_kwargs[k] = value network_kwargs = {} - if parsed_args.check_limit: - network_kwargs['check_limit'] = True - if parsed_args.force: + if parsed_args.force is True: + # Unlike compute, network doesn't provide a simple boolean option. + # Instead, it provides two options: 'force' and 'check_limit' + # (a.k.a. 'not force') network_kwargs['force'] = True + elif parsed_args.force is False: + network_kwargs['check_limit'] = True + else: + msg = _( + "This command currently defaults to '--force' when modifying " + "network quotas. This behavior will change in a future " + "release. Consider explicitly providing '--force' or " + "'--no-force' options to avoid changes in behavior." + ) + self.log.warning(msg) if self.app.client_manager.is_network_endpoint_enabled(): for k, v in NETWORK_QUOTAS.items(): -- cgit v1.2.1