summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
Diffstat (limited to 'openstackclient')
-rw-r--r--openstackclient/common/quota.py51
-rw-r--r--openstackclient/tests/functional/common/test_quota.py4
-rw-r--r--openstackclient/tests/unit/common/test_quota.py7
3 files changed, 46 insertions, 16 deletions
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='<volume-type>',
help=_('Set quotas for a specific <volume-type>'),
)
- 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():
diff --git a/openstackclient/tests/functional/common/test_quota.py b/openstackclient/tests/functional/common/test_quota.py
index 08ec626f..9089cba5 100644
--- a/openstackclient/tests/functional/common/test_quota.py
+++ b/openstackclient/tests/functional/common/test_quota.py
@@ -176,7 +176,7 @@ class QuotaTests(base.TestCase):
def _restore_quota_limit(self, resource, limit, project):
self.openstack('quota set --%s %s %s' % (resource, limit, project))
- def test_quota_network_set_with_check_limit(self):
+ def test_quota_network_set_with_no_force(self):
if not self.haz_network:
self.skipTest('No Network service present')
if not self.is_extension_enabled('quota-check-limit'):
@@ -201,7 +201,7 @@ class QuotaTests(base.TestCase):
(self.PROJECT_NAME, uuid.uuid4().hex))
self.assertRaises(exceptions.CommandFailed, self.openstack,
- 'quota set --networks 1 --check-limit ' +
+ 'quota set --networks 1 --no-force ' +
self.PROJECT_NAME)
def test_quota_network_set_with_force(self):
diff --git a/openstackclient/tests/unit/common/test_quota.py b/openstackclient/tests/unit/common/test_quota.py
index 0900200e..320e6b51 100644
--- a/openstackclient/tests/unit/common/test_quota.py
+++ b/openstackclient/tests/unit/common/test_quota.py
@@ -985,19 +985,19 @@ class TestQuotaSet(TestQuota):
)
self.assertIsNone(result)
- def test_quota_set_with_check_limit(self):
+ def test_quota_set_with_no_force(self):
arglist = [
'--subnets', str(network_fakes.QUOTA['subnet']),
'--volumes', str(volume_fakes.QUOTA['volumes']),
'--cores', str(compute_fakes.core_num),
- '--check-limit',
+ '--no-force',
self.projects[0].name,
]
verifylist = [
('subnet', network_fakes.QUOTA['subnet']),
('volumes', volume_fakes.QUOTA['volumes']),
('cores', compute_fakes.core_num),
- ('check_limit', True),
+ ('force', False),
('project', self.projects[0].name),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -1006,6 +1006,7 @@ class TestQuotaSet(TestQuota):
kwargs_compute = {
'cores': compute_fakes.core_num,
+ 'force': False,
}
kwargs_volume = {
'volumes': volume_fakes.QUOTA['volumes'],