summaryrefslogtreecommitdiff
path: root/cinderclient/v2/volumes.py
diff options
context:
space:
mode:
authorAlex O'Rourke <alex.orourke@hpe.com>2015-10-06 13:20:30 -0700
committerAlex O'Rourke <alex.orourke@hpe.com>2015-11-24 13:13:23 -0800
commitb8e118f5c271fb91cbc17a8553dba5f7fcedb2bc (patch)
tree9e19ed1ccb74e4c649a82316923ce4562aef4c13 /cinderclient/v2/volumes.py
parente4c580f628f0d7671e94bdbd44581904165c042c (diff)
downloadpython-cinderclient-b8e118f5c271fb91cbc17a8553dba5f7fcedb2bc.tar.gz
Adds v2 replication support
v2 replication has been merged in cinder, but there is no way to call the api methods. This patch allows the following methods to be called in order to fully support v2 replication: - os-enable_replication - os-disable_replication - os-list_replication_targets - os-failover_replication Change-Id: Ic3cf082916bdf089de05eebce456dff8cdc11f7c Implements: blueprint replication-v2
Diffstat (limited to 'cinderclient/v2/volumes.py')
-rw-r--r--cinderclient/v2/volumes.py56
1 files changed, 56 insertions, 0 deletions
diff --git a/cinderclient/v2/volumes.py b/cinderclient/v2/volumes.py
index d5eb8d0..7d19e3a 100644
--- a/cinderclient/v2/volumes.py
+++ b/cinderclient/v2/volumes.py
@@ -150,6 +150,22 @@ class Volume(base.Resource):
"""Migrate the volume to a new host."""
self.manager.migrate_volume(self, host, force_host_copy, lock_volume)
+ def replication_enable(self, volume):
+ """Enables volume replication on a given volume."""
+ return self.manager.replication_enable(volume)
+
+ def replication_disable(self, volume):
+ """Disables volume replication on a given volume."""
+ return self.manager.replication_disable(volume)
+
+ def replication_list_targets(self, volume):
+ """List replication targets available for a volume."""
+ return self.manager.replication_list_targets(volume)
+
+ def replication_failover(self, volume, secondary):
+ """Failover a volume to a secondary target."""
+ return self.manager.replication_failover(volume, secondary)
+
def retype(self, volume_type, policy):
"""Change a volume's type."""
self.manager.retype(self, volume_type, policy)
@@ -601,6 +617,46 @@ class VolumeManager(base.ManagerWithFind):
old_volume,
{'new_volume': new_volume_id, 'error': error})[1]
+ def replication_enable(self, volume_id):
+ """
+ Enables volume replication on a given volume.
+
+ :param volume_id: The id of the volume to query
+ """
+ return self._action('os-enable_replication',
+ volume_id)
+
+ def replication_disable(self, volume_id):
+ """
+ Disables volume replication on a given volume.
+
+ :param volume_id: The id of the volume to query
+ """
+ return self._action('os-disable_replication',
+ volume_id)
+
+ def replication_list_targets(self, volume_id):
+ """
+ List replication targets available for a volume.
+
+ :param volume_id: The id of the volume to query
+ :return: a list of available replication targets
+ """
+ return self._action('os-list_replication_targets',
+ volume_id)
+
+ def replication_failover(self, volume_id, secondary):
+ """
+ Failover a volume to a secondary target.
+
+ :param volume_id: The id of the volume to query
+ :param secondary: A unqiue identifier that represents a failover
+ target
+ """
+ return self._action('os-failover_replication',
+ volume_id,
+ {"secondary": secondary})
+
def update_all_metadata(self, volume, metadata):
"""Update all metadata of a volume.