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 <sfinucan@redhat.com>
This commit is contained in:
parent
1ff839da76
commit
09ff9a0f4c
@ -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():
|
||||
|
@ -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):
|
||||
|
@ -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'],
|
||||
|
@ -0,0 +1,13 @@
|
||||
---
|
||||
features:
|
||||
- Add ``--no-force`` option to the ``openstack quota set`` command (only
|
||||
for compute and network commands). When specified, the compute and network
|
||||
quota engine will check the resource usage before setting the new quota
|
||||
limit. This is the default behavior of the compute quota engine and will
|
||||
become the default for the network quota engine in a future release.
|
||||
deprecations:
|
||||
- The ``openstack quota set`` command currently defaults to ``--force``
|
||||
behavior for network quotas. This behavior is now deprecated and a future
|
||||
release will switch to ``--no-force`` behavior. Users should explicitly
|
||||
specify one of these options to prevent a potentially breaking change in
|
||||
behavior.
|
Loading…
x
Reference in New Issue
Block a user