Przeglądaj źródła

Move 'bad_request_on_error' decorator declaration to coriolis.utils

Nashwan Azhari 7 lat temu
rodzic
commit
c36b8ec502

+ 0 - 11
coriolis/api/v1/utils.py

@@ -30,14 +30,3 @@ def validate_storage_mappings(storage_mappings):
     except exception.SchemaValidationException as ex:
         raise exc.HTTPBadRequest(
             explanation="Invalid storage_mappings: %s" % str(ex))
-
-
-def bad_request_on_error(error_message):
-    def _bad_request_on_error(func):
-        def wrapper(*args, **kwargs):
-            (is_valid, message) = func(*args, **kwargs)
-            if not is_valid:
-                raise exc.HTTPBadRequest(explanation=(error_message % message))
-            return (is_valid, message)
-        return wrapper
-    return _bad_request_on_error

+ 3 - 6
coriolis/endpoints/api.py

@@ -1,8 +1,8 @@
 # Copyright 2016 Cloudbase Solutions Srl
 # All Rights Reserved.
 
+from coriolis import utils
 from coriolis.conductor.rpc import client as rpc_client
-from coriolis.api.v1 import utils as api_utils
 
 
 class API(object):
@@ -27,19 +27,16 @@ class API(object):
     def get_endpoint(self, ctxt, endpoint_id):
         return self._rpc_client.get_endpoint(ctxt, endpoint_id)
 
-    def get_endpoint_options(self, ctxt, endpoint_id):
-        return self._rpc_client.get_endpoint_options(ctxt, endpoint_id)
-
     def validate_connection(self, ctxt, endpoint_id):
         return self._rpc_client.validate_endpoint_connection(
             ctxt, endpoint_id)
 
-    @api_utils.bad_request_on_error("Invalid destination environment: %s")
+    @utils.bad_request_on_error("Invalid destination environment: %s")
     def validate_target_environment(self, ctxt, endpoint_id, target_env):
         return self._rpc_client.validate_endpoint_target_environment(
             ctxt, endpoint_id, target_env)
 
-    @api_utils.bad_request_on_error("Invalid source environment: %s")
+    @utils.bad_request_on_error("Invalid source environment: %s")
     def validate_source_environment(self, ctxt, endpoint_id, source_env):
         return self._rpc_client.validate_endpoint_source_environment(
             ctxt, endpoint_id, source_env)

+ 14 - 11
coriolis/providers/base.py

@@ -306,7 +306,14 @@ class BaseReplicaImportProvider(BaseImportInstanceProvider):
         pass
 
 
-class BaseExportProvider(BaseInstanceProvider):
+class BaseExportInstanceProvider(BaseInstanceProvider):
+
+    @abc.abstractmethod
+    def get_source_environment_schema(self):
+        pass
+
+
+class BaseExportProvider(BaseExportInstanceProvider):
 
     @abc.abstractmethod
     def export_instance(self, ctxt, connection_info, source_environment,
@@ -318,12 +325,8 @@ class BaseExportProvider(BaseInstanceProvider):
         """
         pass
 
-    @abc.abstractmethod
-    def get_source_environment_schema(self):
-        pass
-
 
-class BaseReplicaExportProvider(BaseInstanceProvider):
+class BaseReplicaExportProvider(BaseExportInstanceProvider):
 
     @abc.abstractmethod
     def get_replica_instance_info(self, ctxt, connection_info,
@@ -336,15 +339,15 @@ class BaseReplicaExportProvider(BaseInstanceProvider):
         pass
 
     @abc.abstractmethod
-    def delete_replica_source_resources(self, ctxt, source_environment,
-                                        connection_info,
+    def delete_replica_source_resources(self, ctxt, connection_info,
+                                        source_environment,
                                         migr_resources_dict):
         pass
 
     @abc.abstractmethod
-    def replicate_disks(self, ctxt, connection_info, instance_name,
-                        source_conn_info, target_conn_info, volumes_info,
-                        incremental):
+    def replicate_disks(self, ctxt, connection_info, source_environment,
+                        instance_name, source_conn_info, target_conn_info,
+                        volumes_info, incremental):
         pass
 
     @abc.abstractmethod

+ 6 - 3
coriolis/tasks/replica_tasks.py

@@ -74,9 +74,12 @@ class ReplicateDisksTask(base.TaskRunner):
 
         incremental = task_info.get("incremental", True)
 
+        source_environment = origin.get('source_environment') or {}
+
         volumes_info = provider.replicate_disks(
-            ctxt, connection_info, instance, migr_source_conn_info,
-            migr_target_conn_info, volumes_info, incremental)
+            ctxt, connection_info, source_environment, instance,
+            migr_source_conn_info, migr_target_conn_info, volumes_info,
+            incremental)
 
         task_info["volumes_info"] = volumes_info
 
@@ -158,7 +161,7 @@ class DeleteReplicaSourceResourcesTask(base.TaskRunner):
 
         if migr_resources:
             provider.delete_replica_source_resources(
-                ctxt, source_environment, connection_info, migr_resources)
+                ctxt, connection_info, source_environment, migr_resources)
 
         task_info["migr_source_resources"] = None
         task_info["migr_source_connection_info"] = None

+ 12 - 0
coriolis/utils.py

@@ -21,6 +21,7 @@ from oslo_log import log as logging
 from oslo_serialization import jsonutils
 import paramiko
 from six.moves.urllib import parse
+from webob import exc
 
 from coriolis import constants
 from coriolis import exception
@@ -465,3 +466,14 @@ def get_unique_option_ids(resources, id_key="id", name_key="name"):
             identifiers.extend(ids)
 
     return identifiers
+
+
+def bad_request_on_error(error_message):
+    def _bad_request_on_error(func):
+        def wrapper(*args, **kwargs):
+            (is_valid, message) = func(*args, **kwargs)
+            if not is_valid:
+                raise exc.HTTPBadRequest(explanation=(error_message % message))
+            return (is_valid, message)
+        return wrapper
+    return _bad_request_on_error