summaryrefslogtreecommitdiff
path: root/cinderclient/v3
diff options
context:
space:
mode:
authorZuul <zuul@review.openstack.org>2018-10-02 17:33:26 +0000
committerGerrit Code Review <review@openstack.org>2018-10-02 17:33:26 +0000
commite9658c6ef65d3f4d6d36774140b10aeec0dc67b9 (patch)
tree92147c8212cd37d3061955f114f197b3a7bd3026 /cinderclient/v3
parentef95b503f256b141db1d8a3577b2b216d87a2c5c (diff)
parentb3f3cafd1eb15cba181edff1067dc91ce56bf451 (diff)
downloadpython-cinderclient-e9658c6ef65d3f4d6d36774140b10aeec0dc67b9.tar.gz
Merge "Fix backwards compat for volume transfer < 3.55"
Diffstat (limited to 'cinderclient/v3')
-rw-r--r--cinderclient/v3/volume_transfers.py67
1 files changed, 63 insertions, 4 deletions
diff --git a/cinderclient/v3/volume_transfers.py b/cinderclient/v3/volume_transfers.py
index aa33082..39e1a2e 100644
--- a/cinderclient/v3/volume_transfers.py
+++ b/cinderclient/v3/volume_transfers.py
@@ -13,10 +13,10 @@
# License for the specific language governing permissions and limitations
# under the License.
-"""
-Volume transfer interface (v3 extension).
-"""
+"""Volume transfer interface (v3 extension)."""
+from cinderclient import base
+from cinderclient import utils
from cinderclient.v2 import volume_transfers
@@ -33,4 +33,63 @@ class VolumeTransferManager(volume_transfers.VolumeTransferManager):
'name': name}}
if self.api_version.matches('3.55'):
body['transfer']['no_snapshots'] = no_snapshots
- return self._create('/volume-transfers', body, 'transfer')
+ return self._create('/volume-transfers', body, 'transfer')
+
+ return self._create('/os-volume-transfer', body, 'transfer')
+
+ def accept(self, transfer_id, auth_key):
+ """Accept a volume transfer.
+
+ :param transfer_id: The ID of the transfer to accept.
+ :param auth_key: The auth_key of the transfer.
+ :rtype: :class:`VolumeTransfer`
+ """
+ body = {'accept': {'auth_key': auth_key}}
+ if self.api_version.matches('3.55'):
+ return self._create('/volume-transfers/%s/accept' % transfer_id,
+ body, 'transfer')
+
+ return self._create('/os-volume-transfer/%s/accept' % transfer_id,
+ body, 'transfer')
+
+ def get(self, transfer_id):
+ """Show details of a volume transfer.
+
+ :param transfer_id: The ID of the volume transfer to display.
+ :rtype: :class:`VolumeTransfer`
+ """
+ if self.api_version.matches('3.55'):
+ return self._get("/volume-transfers/%s" % transfer_id, "transfer")
+
+ return self._get("/os-volume-transfer/%s" % transfer_id, "transfer")
+
+ def list(self, detailed=True, search_opts=None):
+ """Get a list of all volume transfer.
+
+ :param detailed: Get detailed object information.
+ :param search_opts: Filtering options.
+ :rtype: list of :class:`VolumeTransfer`
+ """
+ query_string = utils.build_query_param(search_opts)
+
+ detail = ""
+ if detailed:
+ detail = "/detail"
+
+ if self.api_version.matches('3.55'):
+ return self._list("/volume-transfers%s%s" % (detail, query_string),
+ "transfers")
+
+ return self._list("/os-volume-transfer%s%s" % (detail, query_string),
+ "transfers")
+
+ def delete(self, transfer_id):
+ """Delete a volume transfer.
+
+ :param transfer_id: The :class:`VolumeTransfer` to delete.
+ """
+ if self.api_version.matches('3.55'):
+ return self._delete(
+ "/volume-transfers/%s" % base.getid(transfer_id))
+
+ return self._delete("/os-volume-transfer/%s" % base.getid(transfer_id))