summaryrefslogtreecommitdiff
path: root/cinderclient/tests/unit/v3/test_shell.py
diff options
context:
space:
mode:
authorYuriy Nesenenko <ynesenenko@mirantis.com>2016-06-02 16:34:33 +0300
committerIvan Kolodyazhny <e0ne@e0ne.info>2016-09-01 22:53:06 +0300
commite15d8e7f0920cb7cd5719d2861dea886bd6f9cb0 (patch)
tree081fb5280012400680740eb40eaaf849d2cf4cd0 /cinderclient/tests/unit/v3/test_shell.py
parent2a9eb37891eeeeb6eea9d8cd492a3a0941ad6066 (diff)
downloadpython-cinderclient-1.9.0.tar.gz
Deleting volume metadata keys with a single request1.9.0
Deleting multiple volume metadata keys with a single request to improve performance. To delete multiple metadata items without affecting the remaining ones, just update the metadata items with the updated complete list of ones (without items to delete) in the body of the request. This patch uses etags to avoid the lost update problem with volume metadata. The command isn't changed: $ cinder metadata volume_id unset k1 k2 k3 Co-Authored-By: Ivan Kolodyazhny <e0ne@e0ne.info> Depends-On: I575635258c10f299181b8e4cdb51a7ad1f1be764 Implements: blueprint delete-multiple-metadata-keys Change-Id: I8e18133ffee87c240a7af4b8177683ab99330d9e
Diffstat (limited to 'cinderclient/tests/unit/v3/test_shell.py')
-rw-r--r--cinderclient/tests/unit/v3/test_shell.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/cinderclient/tests/unit/v3/test_shell.py b/cinderclient/tests/unit/v3/test_shell.py
index a3718fa..e6a1eca 100644
--- a/cinderclient/tests/unit/v3/test_shell.py
+++ b/cinderclient/tests/unit/v3/test_shell.py
@@ -21,6 +21,7 @@ from requests_mock.contrib import fixture as requests_mock_fixture
from cinderclient import client
from cinderclient import exceptions
from cinderclient import shell
+from cinderclient.v3 import volumes
from cinderclient.tests.unit import utils
from cinderclient.tests.unit.v3 import fakes
from cinderclient.tests.unit.fixture_data import keystone_client
@@ -376,3 +377,17 @@ class ShellTest(utils.TestCase):
'--os-volume-api-version 3.3 message-delete 1234 12345')
self.assert_called_anytime('DELETE', '/messages/1234')
self.assert_called_anytime('DELETE', '/messages/12345')
+
+ @mock.patch('cinderclient.utils.find_volume')
+ def test_delete_metadata(self, mock_find_volume):
+ mock_find_volume.return_value = volumes.Volume(self,
+ {'id': '1234',
+ 'metadata':
+ {'k1': 'v1',
+ 'k2': 'v2',
+ 'k3': 'v3'}},
+ loaded = True)
+ expected = {'metadata': {'k2': 'v2'}}
+ self.run_command('--os-volume-api-version 3.15 '
+ 'metadata 1234 unset k1 k3')
+ self.assert_called('PUT', '/volumes/1234/metadata', body=expected)