"times in a single config section to specify multiple "
"replication target devices. Each entry takes the "
"standard dict config form: replication_device = "
- "device_target_id:<required>,"
+ "target_device_id:<required>,"
"managed_backend_name:<host@backend_name>,"
"key1:value1,key2:value2..."),
cfg.BoolOpt('image_upload_use_cinder_backend',
This method is used to query a backend to get the current
replication config info for the specified volume.
-
In the case of a volume that isn't being replicated,
the driver should return an empty list.
+ There is one required field for configuration of
+ replication, (target_device_id). As such we
+ use that for the response in list_replication_targets.
- Example response for replicating to a managed backend:
- {'volume_id': volume['id'],
- 'targets':[{'remote_device_id': 'vendor-id-for-target-device',
- 'managed_host': 'backend_name'}...]
-
- Example response for replicating to an unmanaged backend:
- {'volume_id': volume['id'], 'targets':[
- {'remote_device_id': 'vendor-id-for-target-device',
- 'san_ip': '1.1.1.1',
- 'san_login': 'admin'},
- ....]}
+ Internal methods can be added to extract additional
+ details if needed, but the only detail that should be
+ exposed to an end user is the identifier. In the case
+ of an Admin, (s)he can always cross check the cinder.conf
+ file that they have configured for additional info.
- NOTE: It's the responsibility of the driver to mask out any
- passwords or sensitive information.
-
- `remote_device_id` is required and is used for drivers to identify
- the devices they have in use.
+ Example response:
+ {'volume_id': volume['id'],
+ 'targets':[<target-device-id>,...]'
"""
# NOTE(hemna) We intentionally don't enforce the driver being
There are two standardized keys in the config
entry, all others are vendor-unique:
-* device_target_id:<vendor-identifier-for-rep-target>
+* target_device_id:<vendor-identifier-for-rep-target>
* managed_backend_name:<cinder-backend-host-entry>,"
+target_device_id is REQUIRED in all configurations
+
+
An example config entry for a managed replication device
would look like this::
**list_replication_targets**
-Used by the admin to query a volume for a list of configured replication targets
-The expected return for this call is expected to mimic the form used in the config file.
-
-For a volume replicating to managed replication targets::
-
- {'volume_id': volume['id'], 'targets':[{'type': 'managed',
- 'backend_name': 'backend_name'}...]
-
-For a volume replicating to external/unmanaged targets::
+Used by the admin to query a volume for a list of configured replication targets.
- {'volume_id': volume['id'], 'targets':[{'type': 'unmanaged',
- 'san_ip': '127.0.0.1',
- 'san_login': 'admin'...}...]
+The expected response is simply the single required field in replication-device
+configuration. It's possible that in the future we may want to add a show
+command that provides all the various details about a target replication
+device. This would be of the form:
+`show_replication_target <target_device_id>`
+Example response:
+ {'volume_id': volume['id'],
+ 'targets':[<target-device-id>,...]'