|
|
@@ -214,6 +214,43 @@ class DeployReplicaDisksTask(base.TaskRunner):
|
|
|
'volumes_info': volumes_info}
|
|
|
|
|
|
|
|
|
+class DeleteReplicaSourceDiskSnapshotsTask(base.TaskRunner):
|
|
|
+
|
|
|
+ @property
|
|
|
+ def required_task_info_properties(self):
|
|
|
+ return [
|
|
|
+ "volumes_info", "source_environment"]
|
|
|
+
|
|
|
+ @property
|
|
|
+ def returned_task_info_properties(self):
|
|
|
+ return ["volumes_info"]
|
|
|
+
|
|
|
+
|
|
|
+ def _run(self, ctxt, instance, origin, destination, task_info,
|
|
|
+ event_handler):
|
|
|
+ event_manager = events.EventManager(event_handler)
|
|
|
+ if not task_info.get("volumes_info"):
|
|
|
+ LOG.debug(
|
|
|
+ "No volumes_info present. Skipping source snapshot deletion.")
|
|
|
+ event_manager.progress_update(
|
|
|
+ "No previous volumes information present, nothing to delete")
|
|
|
+ return {'volumes_info': []}
|
|
|
+
|
|
|
+
|
|
|
+ provider = providers_factory.get_provider(
|
|
|
+ origin['type'], constants.PROVIDER_TYPE_REPLICA_EXPORT,
|
|
|
+ event_handler)
|
|
|
+ connection_info = base.get_connection_info(ctxt, origin)
|
|
|
+ source_environment = task_info['source_environment']
|
|
|
+ volumes_info = _get_volumes_info(task_info)
|
|
|
+
|
|
|
+ volumes_info = provider.delete_replica_source_snapshots(
|
|
|
+ ctxt, connection_info, source_environment, volumes_info)
|
|
|
+
|
|
|
+ return {
|
|
|
+ 'volumes_info': volumes_info}
|
|
|
+
|
|
|
+
|
|
|
class DeleteReplicaDisksTask(base.TaskRunner):
|
|
|
|
|
|
@property
|
|
|
@@ -227,9 +264,12 @@ class DeleteReplicaDisksTask(base.TaskRunner):
|
|
|
|
|
|
def _run(self, ctxt, instance, origin, destination, task_info,
|
|
|
event_handler):
|
|
|
+ event_manager = events.EventManager(event_handler)
|
|
|
if not task_info.get("volumes_info"):
|
|
|
LOG.debug(
|
|
|
"No volumes_info present. Skipping disk deletion.")
|
|
|
+ event_manager.progress_update(
|
|
|
+ "No previous volumes information present, nothing to delete")
|
|
|
return {'volumes_info': []}
|
|
|
|
|
|
provider = providers_factory.get_provider(
|
|
|
@@ -238,10 +278,10 @@ class DeleteReplicaDisksTask(base.TaskRunner):
|
|
|
connection_info = base.get_connection_info(ctxt, destination)
|
|
|
|
|
|
volumes_info = _get_volumes_info(task_info)
|
|
|
+ target_environment = task_info['target_environment']
|
|
|
|
|
|
- # TODO (aznashwan): add target_env options to `delete_replica_disks`:
|
|
|
volumes_info = provider.delete_replica_disks(
|
|
|
- ctxt, connection_info, volumes_info)
|
|
|
+ ctxt, connection_info, target_environment, volumes_info)
|
|
|
if volumes_info:
|
|
|
LOG.warn(
|
|
|
"'volumes_info' should have been void after disk "
|
|
|
@@ -270,7 +310,7 @@ class DeployReplicaSourceResourcesTask(base.TaskRunner):
|
|
|
event_handler)
|
|
|
connection_info = base.get_connection_info(ctxt, origin)
|
|
|
|
|
|
- source_environment = task_info['source_environment'] or {}
|
|
|
+ source_environment = task_info.get('source_environment', {})
|
|
|
export_info = task_info['export_info']
|
|
|
replica_resources_info = provider.deploy_replica_source_resources(
|
|
|
ctxt, connection_info, export_info, source_environment)
|
|
|
@@ -447,18 +487,18 @@ class DeleteReplicaTargetResourcesTask(base.TaskRunner):
|
|
|
connection_info = base.get_connection_info(ctxt, destination)
|
|
|
|
|
|
migr_resources = task_info.get("target_resources")
|
|
|
+ target_environment = task_info["target_environment"]
|
|
|
|
|
|
if migr_resources:
|
|
|
- # TODO (aznashwan): add 'target_env' param to call:
|
|
|
provider.delete_replica_target_resources(
|
|
|
- ctxt, connection_info, migr_resources)
|
|
|
+ ctxt, connection_info, target_environment, migr_resources)
|
|
|
|
|
|
return {
|
|
|
"target_resources": None,
|
|
|
"target_resources_connection_info": None}
|
|
|
|
|
|
|
|
|
-class DeployReplicaInstanceTask(base.TaskRunner):
|
|
|
+class DeployReplicaInstanceResourcesTask(base.TaskRunner):
|
|
|
|
|
|
@property
|
|
|
def required_task_info_properties(self):
|
|
|
@@ -495,7 +535,7 @@ class FinalizeReplicaInstanceDeploymentTask(base.TaskRunner):
|
|
|
|
|
|
@property
|
|
|
def required_task_info_properties(self):
|
|
|
- return ["instance_deployment_info"]
|
|
|
+ return ["target_environment", "instance_deployment_info"]
|
|
|
|
|
|
@property
|
|
|
def returned_task_info_properties(self):
|
|
|
@@ -507,10 +547,12 @@ class FinalizeReplicaInstanceDeploymentTask(base.TaskRunner):
|
|
|
destination["type"], constants.PROVIDER_TYPE_REPLICA_IMPORT,
|
|
|
event_handler)
|
|
|
connection_info = base.get_connection_info(ctxt, destination)
|
|
|
+ target_environment = task_info["target_environment"]
|
|
|
instance_deployment_info = task_info["instance_deployment_info"]
|
|
|
|
|
|
result = provider.finalize_replica_instance_deployment(
|
|
|
- ctxt, connection_info, instance_deployment_info)
|
|
|
+ ctxt, connection_info, target_environment,
|
|
|
+ instance_deployment_info)
|
|
|
if result is None:
|
|
|
LOG.warn(
|
|
|
"'None' was returned as result for Finalize Replica Instance "
|
|
|
@@ -524,7 +566,7 @@ class CleanupFailedReplicaInstanceDeploymentTask(base.TaskRunner):
|
|
|
|
|
|
@property
|
|
|
def required_task_info_properties(self):
|
|
|
- return ["instance_deployment_info"]
|
|
|
+ return ["target_environment", "instance_deployment_info"]
|
|
|
|
|
|
@property
|
|
|
def returned_task_info_properties(self):
|
|
|
@@ -536,11 +578,12 @@ class CleanupFailedReplicaInstanceDeploymentTask(base.TaskRunner):
|
|
|
destination["type"], constants.PROVIDER_TYPE_REPLICA_IMPORT,
|
|
|
event_handler)
|
|
|
connection_info = base.get_connection_info(ctxt, destination)
|
|
|
- instance_deployment_info = task_info.get(
|
|
|
- "instance_deployment_info", {})
|
|
|
+ target_environment = task_info["target_environment"]
|
|
|
+ instance_deployment_info = task_info["instance_deployment_info"]
|
|
|
|
|
|
provider.cleanup_failed_replica_instance_deployment(
|
|
|
- ctxt, connection_info, instance_deployment_info)
|
|
|
+ ctxt, connection_info, target_environment,
|
|
|
+ instance_deployment_info)
|
|
|
|
|
|
return {
|
|
|
"instance_deployment_info": None}
|
|
|
@@ -550,7 +593,7 @@ class CreateReplicaDiskSnapshotsTask(base.TaskRunner):
|
|
|
|
|
|
@property
|
|
|
def required_task_info_properties(self):
|
|
|
- return ["export_info", "volumes_info"]
|
|
|
+ return ["target_environment", "export_info", "volumes_info"]
|
|
|
|
|
|
@property
|
|
|
def returned_task_info_properties(self):
|
|
|
@@ -563,11 +606,12 @@ class CreateReplicaDiskSnapshotsTask(base.TaskRunner):
|
|
|
event_handler)
|
|
|
connection_info = base.get_connection_info(ctxt, destination)
|
|
|
export_info = task_info['export_info']
|
|
|
+ target_environment = task_info["target_environment"]
|
|
|
|
|
|
volumes_info = _get_volumes_info(task_info)
|
|
|
|
|
|
volumes_info = provider.create_replica_disk_snapshots(
|
|
|
- ctxt, connection_info, volumes_info)
|
|
|
+ ctxt, connection_info, target_environment, volumes_info)
|
|
|
schemas.validate_value(
|
|
|
volumes_info, schemas.CORIOLIS_VOLUMES_INFO_SCHEMA)
|
|
|
|
|
|
@@ -578,11 +622,11 @@ class CreateReplicaDiskSnapshotsTask(base.TaskRunner):
|
|
|
"volumes_info": volumes_info}
|
|
|
|
|
|
|
|
|
-class DeleteReplicaDiskSnapshotsTask(base.TaskRunner):
|
|
|
+class DeleteReplicaTargetDiskSnapshotsTask(base.TaskRunner):
|
|
|
|
|
|
@property
|
|
|
def required_task_info_properties(self):
|
|
|
- return ["export_info", "volumes_info"]
|
|
|
+ return ["target_environment", "export_info", "volumes_info"]
|
|
|
|
|
|
@property
|
|
|
def returned_task_info_properties(self):
|
|
|
@@ -597,9 +641,10 @@ class DeleteReplicaDiskSnapshotsTask(base.TaskRunner):
|
|
|
connection_info = base.get_connection_info(ctxt, destination)
|
|
|
|
|
|
volumes_info = _get_volumes_info(task_info)
|
|
|
+ target_environment = task_info["target_environment"]
|
|
|
|
|
|
- volumes_info = provider.delete_replica_disk_snapshots(
|
|
|
- ctxt, connection_info, volumes_info)
|
|
|
+ volumes_info = provider.delete_replica_target_disk_snapshots(
|
|
|
+ ctxt, connection_info, target_environment, volumes_info)
|
|
|
schemas.validate_value(
|
|
|
volumes_info, schemas.CORIOLIS_VOLUMES_INFO_SCHEMA)
|
|
|
|
|
|
@@ -614,7 +659,7 @@ class RestoreReplicaDiskSnapshotsTask(base.TaskRunner):
|
|
|
|
|
|
@property
|
|
|
def required_task_info_properties(self):
|
|
|
- return ["export_info", "volumes_info"]
|
|
|
+ return ["target_environment", "export_info", "volumes_info"]
|
|
|
|
|
|
@property
|
|
|
def returned_task_info_properties(self):
|
|
|
@@ -627,11 +672,12 @@ class RestoreReplicaDiskSnapshotsTask(base.TaskRunner):
|
|
|
event_handler)
|
|
|
connection_info = base.get_connection_info(ctxt, destination)
|
|
|
export_info = task_info['export_info']
|
|
|
+ target_environment = task_info["target_environment"]
|
|
|
|
|
|
volumes_info = _get_volumes_info(task_info)
|
|
|
|
|
|
volumes_info = provider.restore_replica_disk_snapshots(
|
|
|
- ctxt, connection_info, volumes_info)
|
|
|
+ ctxt, connection_info, target_environment, volumes_info)
|
|
|
schemas.validate_value(
|
|
|
volumes_info, schemas.CORIOLIS_VOLUMES_INFO_SCHEMA)
|
|
|
|