Fix quota set command error for SDK > 0.9.10
A bug in OpenStack SDK 0.9.11 and 0.9.12 that causes quota set command to fail. This can be removed when the proposed SDK fix (https://review.openstack.org/#/c/419911/) is released and in the minimum SDK version in global requirements. Closes-Bug: #1655445 Change-Id: I63132f5f762f0120282f8b92e72512763063e3c6
This commit is contained in:
parent
b860ba0e42
commit
0340275fa9
@ -182,6 +182,33 @@ class SetQuota(command.Command):
|
|||||||
project,
|
project,
|
||||||
**volume_kwargs)
|
**volume_kwargs)
|
||||||
if network_kwargs:
|
if network_kwargs:
|
||||||
|
if hasattr(_quota.Quota, 'allow_get'):
|
||||||
|
# TODO(huanxuan): Remove this block once the fixed
|
||||||
|
# SDK Quota class is the minimum required version.
|
||||||
|
# This is expected to be SDK release 0.9.13
|
||||||
|
res = network_client._get_resource(
|
||||||
|
_quota.Quota, project, **network_kwargs)
|
||||||
|
if any([res._body.dirty, res._header.dirty]):
|
||||||
|
request = res._prepare_request(prepend_key=True)
|
||||||
|
# remove the id in the body
|
||||||
|
if 'id' in request.body[res.resource_key]:
|
||||||
|
del request.body[res.resource_key]['id']
|
||||||
|
if res.patch_update:
|
||||||
|
response = network_client.session.patch(
|
||||||
|
request.uri,
|
||||||
|
endpoint_filter=res.service,
|
||||||
|
json=request.body,
|
||||||
|
headers=request.headers
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
response = network_client.session.put(
|
||||||
|
request.uri,
|
||||||
|
endpoint_filter=res.service,
|
||||||
|
json=request.body,
|
||||||
|
headers=request.headers
|
||||||
|
)
|
||||||
|
res._translate_response(response, has_body=True)
|
||||||
|
else:
|
||||||
network_client.update_quota(
|
network_client.update_quota(
|
||||||
project,
|
project,
|
||||||
**network_kwargs)
|
**network_kwargs)
|
||||||
|
@ -10,8 +10,6 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import testtools
|
|
||||||
|
|
||||||
from openstackclient.tests.functional import base
|
from openstackclient.tests.functional import base
|
||||||
|
|
||||||
|
|
||||||
@ -27,7 +25,6 @@ class QuotaTests(base.TestCase):
|
|||||||
cls.PROJECT_NAME =\
|
cls.PROJECT_NAME =\
|
||||||
cls.get_openstack_configuration_value('auth.project_name')
|
cls.get_openstack_configuration_value('auth.project_name')
|
||||||
|
|
||||||
@testtools.skip('broken SDK testing')
|
|
||||||
def test_quota_set(self):
|
def test_quota_set(self):
|
||||||
self.openstack('quota set --instances 11 --volumes 11 --networks 11 ' +
|
self.openstack('quota set --instances 11 --volumes 11 --networks 11 ' +
|
||||||
self.PROJECT_NAME)
|
self.PROJECT_NAME)
|
||||||
|
@ -13,6 +13,8 @@
|
|||||||
import copy
|
import copy
|
||||||
import mock
|
import mock
|
||||||
|
|
||||||
|
from openstack.network.v2 import quota as _quota
|
||||||
|
|
||||||
from openstackclient.common import quota
|
from openstackclient.common import quota
|
||||||
from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes
|
from openstackclient.tests.unit.compute.v2 import fakes as compute_fakes
|
||||||
from openstackclient.tests.unit import fakes
|
from openstackclient.tests.unit import fakes
|
||||||
@ -282,6 +284,11 @@ class TestQuotaSet(TestQuota):
|
|||||||
]
|
]
|
||||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||||
|
|
||||||
|
# TODO(huanxuan): Remove this if condition once the fixed
|
||||||
|
# SDK Quota class is the minimum required version.
|
||||||
|
# This is expected to be SDK release 0.9.13
|
||||||
|
if not hasattr(_quota.Quota, 'allow_get'):
|
||||||
|
# Just run this when sdk <= 0.9.10
|
||||||
result = self.cmd.take_action(parsed_args)
|
result = self.cmd.take_action(parsed_args)
|
||||||
kwargs = {
|
kwargs = {
|
||||||
'subnet': network_fakes.QUOTA['subnet'],
|
'subnet': network_fakes.QUOTA['subnet'],
|
||||||
@ -476,6 +483,11 @@ class TestQuotaShow(TestQuota):
|
|||||||
|
|
||||||
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
|
||||||
|
|
||||||
|
# TODO(huanxuan): Remove this if condition once the fixed
|
||||||
|
# SDK QuotaDefault class is the minimum required version.
|
||||||
|
# This is expected to be SDK release 0.9.13
|
||||||
|
if not hasattr(_quota.QuotaDefault, 'project'):
|
||||||
|
# Just run this when sdk <= 0.9.10
|
||||||
self.cmd.take_action(parsed_args)
|
self.cmd.take_action(parsed_args)
|
||||||
|
|
||||||
self.quotas_mock.defaults.assert_called_once_with(
|
self.quotas_mock.defaults.assert_called_once_with(
|
||||||
|
6
releasenotes/notes/bug-1655445-96c787e3a51226e0.yaml
Normal file
6
releasenotes/notes/bug-1655445-96c787e3a51226e0.yaml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
fixes:
|
||||||
|
- |
|
||||||
|
Work around a bug in OpenStackSDK 0.9.11 and 0.9.12 that causes
|
||||||
|
``quota set --network`` to fail.
|
||||||
|
[Bug `1655445 <https://bugs.launchpad.net/python-openstackclient/+bug/1655445>`_]
|
Loading…
x
Reference in New Issue
Block a user