Wrap volume_backup's update function with api_version

Volume backup's update function only supports 3.9 microversion
or higher. So it should be wrapped like like this one[1],
otherwise these fuctions may be exposed to lib users with old
microversion.

[1]: https://github.com/openstack/python-cinderclient/blob/master/cinderclient/v3/services.py#L82

Change-Id: I2c800099e8ae707135417f9821f14d1a9e69586e
This commit is contained in:
Cao Shufeng
2016-08-30 07:38:14 -04:00
parent 4f794410f1
commit 654f71208b
2 changed files with 11 additions and 3 deletions

View File

@@ -13,19 +13,25 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
from cinderclient.tests.unit import utils from cinderclient.tests.unit import utils
from cinderclient.tests.unit.v3 import fakes from cinderclient.tests.unit.v3 import fakes
from cinderclient import api_versions
cs = fakes.FakeClient() from cinderclient import exceptions as exc
class VolumesTest(utils.TestCase): class VolumesTest(utils.TestCase):
def test_update(self): def test_update(self):
cs = fakes.FakeClient(api_version=api_versions.APIVersion('3.9'))
b = cs.backups.get('1234') b = cs.backups.get('1234')
backup = b.update(name='new-name') backup = b.update(name='new-name')
cs.assert_called( cs.assert_called(
'PUT', '/backups/1234', 'PUT', '/backups/1234',
{'backup': {'name': 'new-name'}}) {'backup': {'name': 'new-name'}})
self._assert_request_id(backup) self._assert_request_id(backup)
def test_pre_version(self):
cs = fakes.FakeClient(api_version=api_versions.APIVersion('3.8'))
b = cs.backups.get('1234')
self.assertRaises(exc.VersionNotFoundForAPIMethod,
b.update, name='new-name')

View File

@@ -16,6 +16,7 @@
""" """
Volume Backups interface (v3 extension). Volume Backups interface (v3 extension).
""" """
from cinderclient import api_versions
from cinderclient import base from cinderclient import base
from cinderclient.openstack.common.apiclient import base as common_base from cinderclient.openstack.common.apiclient import base as common_base
@@ -131,6 +132,7 @@ class VolumeBackupManager(base.ManagerWithFind):
resp, body = self.api.client.post("/backups/import_record", body=body) resp, body = self.api.client.post("/backups/import_record", body=body)
return common_base.DictWithMeta(body['backup'], resp) return common_base.DictWithMeta(body['backup'], resp)
@api_versions.wraps("3.9")
def update(self, backup, **kwargs): def update(self, backup, **kwargs):
"""Update the name or description for a backup. """Update the name or description for a backup.