Quellcode durchsuchen

Pass 'target_env' to all replica import operations.

Nashwan Azhari vor 5 Jahren
Ursprung
Commit
dc2e7fc6e0
3 geänderte Dateien mit 70 neuen und 52 gelöschten Zeilen
  1. 42 32
      coriolis/providers/base.py
  2. 6 4
      coriolis/tasks/osmorphing_tasks.py
  3. 22 16
      coriolis/tasks/replica_tasks.py

+ 42 - 32
coriolis/providers/base.py

@@ -227,13 +227,15 @@ class BaseImportInstanceProvider(BaseInstanceProvider):
         return dest_instance_name
 
     @abc.abstractmethod
-    def deploy_os_morphing_resources(self, ctxt, connection_info,
-                                     instance_deployment_info):
+    def deploy_os_morphing_resources(
+            self, ctxt, connection_info, target_environment,
+            instance_deployment_info):
         pass
 
     @abc.abstractmethod
-    def delete_os_morphing_resources(self, ctxt, connection_info,
-                                     os_morphing_resources):
+    def delete_os_morphing_resources(
+            self, ctxt, connection_info, target_environment,
+            os_morphing_resources):
         pass
 
 
@@ -306,18 +308,20 @@ class BaseImportProvider(BaseImportInstanceProvider):
         pass
 
     @abc.abstractmethod
-    def deploy_disk_copy_resources(self, ctxt, connection_info,
-                                   target_environment, volumes_info):
+    def deploy_disk_copy_resources(
+            self, ctxt, connection_info, target_environment, volumes_info):
         pass
 
     @abc.abstractmethod
-    def delete_disk_copy_resources(self, ctxt, connection_info,
-                                   target_resources_dict):
+    def delete_disk_copy_resources(
+            self, ctxt, connection_info, target_environment,
+            target_resources_dict):
         pass
 
     @abc.abstractmethod
-    def finalize_import_instance(self, ctxt, connection_info,
-                                 instance_deployment_info):
+    def finalize_import_instance(
+            self, ctxt, connection_info, target_environment,
+            instance_deployment_info):
         """ Should return a dict with the info of the migrated VM on the
         destination platform in the same format as offered by
         'BaseExportProvider.export_instance()'.
@@ -325,22 +329,24 @@ class BaseImportProvider(BaseImportInstanceProvider):
         return {}
 
     @abc.abstractmethod
-    def cleanup_failed_import_instance(self, ctxt, connection_info,
-                                       instance_deployment_info):
+    def cleanup_failed_import_instance(
+            self, ctxt, connection_info, target_environment,
+            instance_deployment_info):
         pass
 
 
 class BaseReplicaImportProvider(BaseImportInstanceProvider):
 
     @abc.abstractmethod
-    def deploy_replica_instance(self, ctxt, connection_info,
-                                target_environment, instance_name, export_info,
-                                volumes_info, clone_disks):
+    def deploy_replica_instance(
+            self, ctxt, connection_info, target_environment,
+            instance_name, export_info, volumes_info, clone_disks):
         pass
 
     @abc.abstractmethod
-    def finalize_replica_instance_deployment(self, ctxt, connection_info,
-                                             instance_deployment_info):
+    def finalize_replica_instance_deployment(
+            self, ctxt, connection_info, target_environment,
+            instance_deployment_info):
         """ Should return a dict with the info of the migrated VM on the
         destination platform in the same format as offered by
         'BaseExportProvider.export_instance()'.
@@ -348,42 +354,46 @@ class BaseReplicaImportProvider(BaseImportInstanceProvider):
         return {}
 
     @abc.abstractmethod
-    def cleanup_failed_replica_instance_deployment(self, ctxt, connection_info,
-                                                   instance_deployment_info):
+    def cleanup_failed_replica_instance_deployment(
+            self, ctxt, connection_info, target_environment,
+            instance_deployment_info):
         pass
 
     @abc.abstractmethod
-    def deploy_replica_disks(self, ctxt, connection_info, target_environment,
-                             instance_name, export_info, volumes_info):
+    def deploy_replica_disks(
+            self, ctxt, connection_info, target_environment, instance_name,
+            export_info, volumes_info):
         pass
 
     @abc.abstractmethod
-    def deploy_replica_target_resources(self, ctxt, connection_info,
-                                        target_environment, volumes_info):
+    def deploy_replica_target_resources(
+            self, ctxt, connection_info, target_environment, volumes_info):
         pass
 
     @abc.abstractmethod
-    def delete_replica_target_resources(self, ctxt, connection_info,
-                                        migr_resources_dict):
+    def delete_replica_target_resources(
+            self, ctxt, connection_info, target_environment,
+            migr_resources_dict):
         pass
 
     @abc.abstractmethod
-    def delete_replica_disks(self, ctxt, connection_info, volumes_info):
+    def delete_replica_disks(
+            self, ctxt, connection_info, target_environment, volumes_info):
         pass
 
     @abc.abstractmethod
-    def create_replica_disk_snapshots(self, ctxt, connection_info,
-                                      volumes_info):
+    def create_replica_disk_snapshots(
+            self, ctxt, connection_info, target_environment, volumes_info):
         pass
 
     @abc.abstractmethod
-    def delete_replica_disk_snapshots(self, ctxt, connection_info,
-                                      volumes_info):
+    def delete_replica_target_disk_snapshots(
+            self, ctxt, connection_info, target_environment, volumes_info):
         pass
 
     @abc.abstractmethod
-    def restore_replica_disk_snapshots(self, ctxt, connection_info,
-                                       volumes_info):
+    def restore_replica_disk_snapshots(
+            self, ctxt, connection_info, target_environment, volumes_info):
         pass
 
 

+ 6 - 4
coriolis/tasks/osmorphing_tasks.py

@@ -66,7 +66,7 @@ class DeployOSMorphingResourcesTask(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):
@@ -80,10 +80,11 @@ class DeployOSMorphingResourcesTask(base.TaskRunner):
             destination["type"], constants.PROVIDER_TYPE_OS_MORPHING,
             event_handler)
         connection_info = base.get_connection_info(ctxt, destination)
+        target_environment = task_info["target_environment"]
         instance_deployment_info = task_info["instance_deployment_info"]
 
         import_info = provider.deploy_os_morphing_resources(
-            ctxt, connection_info, instance_deployment_info)
+            ctxt, connection_info, target_environment, instance_deployment_info)
 
         schemas.validate_value(
             import_info, schemas.CORIOLIS_OS_MORPHING_RESOURCES_SCHEMA,
@@ -125,7 +126,7 @@ class DeleteOSMorphingResourcesTask(base.TaskRunner):
 
     @property
     def required_task_info_properties(self):
-        return ["os_morphing_resources"]
+        return ["target_environment", "os_morphing_resources"]
 
     @property
     def returned_task_info_properties(self):
@@ -138,9 +139,10 @@ class DeleteOSMorphingResourcesTask(base.TaskRunner):
             event_handler)
         connection_info = base.get_connection_info(ctxt, destination)
         os_morphing_resources = task_info.get("os_morphing_resources")
+        target_environment = task_info["target_environment"]
 
         provider.delete_os_morphing_resources(
-            ctxt, connection_info, os_morphing_resources)
+            ctxt, connection_info, target_environment, os_morphing_resources)
 
         return {
             "os_morphing_resources": None,

+ 22 - 16
coriolis/tasks/replica_tasks.py

@@ -278,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 "
@@ -487,11 +487,11 @@ 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,
@@ -535,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):
@@ -547,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 "
@@ -564,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):
@@ -576,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}
@@ -590,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):
@@ -603,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)
 
@@ -622,7 +626,7 @@ 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):
@@ -637,9 +641,10 @@ class DeleteReplicaTargetDiskSnapshotsTask(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_target_disk_snapshots(
-            ctxt, connection_info, volumes_info)
+            ctxt, connection_info, target_environment, volumes_info)
         schemas.validate_value(
             volumes_info, schemas.CORIOLIS_VOLUMES_INFO_SCHEMA)
 
@@ -654,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):
@@ -667,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)