Files
python-novaclient/novaclient/tests/functional/v2/test_quotas.py
Matt Riedemann 578c39865d Deprecate network-* commands and clamp to microversion 2.35
This introduces a helper to clamp the client microversion to 2.35,
which is the last version to support the network proxy. We print a
deprecation warning if those commands are used, and mark them as
deprecated in the help text.

This is a network-specific user-friendly bit of sugar to make sure
that nova-network users aren't cut out before we actually drop the
support for it on the server side.

Note that quotas and limits are special because only the network
related resources in those are not returned with 2.36. So this
change handles 2.36 separately for quota-update and
quota-class-update, and deprecates the network resource quota
update arguments for <2.35 as an indication those are going away.

As expected, several of the functional tests have to be updated
to work with the new world that is microversion 2.36.

Related to blueprint deprecate-api-proxies

Co-Authored-By: Matt Riedemann <mriedem@us.ibm.com>

Change-Id: Id68c2dbef29b201aa7c8ef9417432feb5596529a
2016-08-19 09:30:29 -07:00

64 lines
2.6 KiB
Python

# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from novaclient.tests.functional.v2.legacy import test_quotas
class TestQuotasNovaClient2_35(test_quotas.TestQuotasNovaClient):
"""Nova quotas functional tests."""
COMPUTE_API_VERSION = "2.35"
_quota_resources = ['instances', 'cores', 'ram',
'floating_ips', 'fixed_ips', 'metadata_items',
'injected_files', 'injected_file_content_bytes',
'injected_file_path_bytes', 'key_pairs',
'security_groups', 'security_group_rules',
'server_groups', 'server_group_members']
def test_quotas_update(self):
# `nova quota-update` requires tenant-id.
tenant_id = self._get_project_id(self.cli_clients.tenant_name)
self.addCleanup(self.client.quotas.delete, tenant_id)
original_quotas = self.client.quotas.get(tenant_id)
difference = 10
params = [tenant_id]
for quota_name in self._quota_resources:
params.append("--%(name)s %(value)s" % {
"name": quota_name.replace("_", "-"),
"value": getattr(original_quotas, quota_name) + difference})
self.nova("quota-update", params=" ".join(params))
updated_quotas = self.client.quotas.get(tenant_id)
for quota_name in self._quota_resources:
self.assertEqual(getattr(original_quotas, quota_name),
getattr(updated_quotas, quota_name) - difference)
class TestQuotasNovaClient2_36(TestQuotasNovaClient2_35):
"""Nova quotas functional tests."""
COMPUTE_API_VERSION = "2.latest"
# The 2.36 microversion stops proxying network quota resources like
# floating/fixed IPs and security groups/rules.
_quota_resources = ['instances', 'cores', 'ram',
'metadata_items', 'injected_files',
'injected_file_content_bytes',
'injected_file_path_bytes', 'key_pairs',
'server_groups', 'server_group_members']