Просмотр исходного кода

Provider class hierarchy refactoring

Alessandro Pilotti 9 лет назад
Родитель
Сommit
e46ee3950b

+ 6 - 2
coriolis/providers/azure/__init__.py

@@ -24,9 +24,10 @@ from oslo_log import log as logging
 from oslo_utils import units
 from oslo_utils import units
 
 
 from coriolis import constants
 from coriolis import constants
+from coriolis import events
 from coriolis import exception
 from coriolis import exception
 from coriolis.osmorphing import manager as osmorpher
 from coriolis.osmorphing import manager as osmorpher
-from coriolis.providers.base import BaseImportProvider
+from coriolis.providers import base
 from coriolis.providers.azure import utils as azutils
 from coriolis.providers.azure import utils as azutils
 from coriolis.providers.azure import exceptions as azexceptions
 from coriolis.providers.azure import exceptions as azexceptions
 from coriolis import schemas
 from coriolis import schemas
@@ -153,7 +154,7 @@ AzureWorkerInstance = collections.namedtuple(
     "AzureWorkerInstance", "name ip port username password pkey datadisks")
     "AzureWorkerInstance", "name ip port username password pkey datadisks")
 
 
 
 
-class ImportProvider(BaseImportProvider):
+class ImportProvider(base.BaseImportProvider):
     """ Provides import capabilities. """
     """ Provides import capabilities. """
     platform = constants.PLATFORM_AZURE_RM
     platform = constants.PLATFORM_AZURE_RM
 
 
@@ -163,6 +164,9 @@ class ImportProvider(BaseImportProvider):
     target_environment_schema = schemas.get_schema(
     target_environment_schema = schemas.get_schema(
         __name__, schemas.PROVIDER_TARGET_ENVIRONMENT_SCHEMA_NAME)
         __name__, schemas.PROVIDER_TARGET_ENVIRONMENT_SCHEMA_NAME)
 
 
+    def __init__(self, event_handler):
+        self._event_manager = events.EventManager(event_handler)
+
     def validate_connection_info(self, connection_info):
     def validate_connection_info(self, connection_info):
         """ Validates the provided connection information. """
         """ Validates the provided connection information. """
         LOG.info("Validating connection info: %s", connection_info)
         LOG.info("Validating connection info: %s", connection_info)

+ 2 - 6
coriolis/providers/base.py

@@ -3,16 +3,12 @@
 
 
 import abc
 import abc
 
 
-from coriolis import events
 from coriolis import schemas
 from coriolis import schemas
 
 
 
 
 class BaseProvider(object):
 class BaseProvider(object):
     __metaclass__ = abc.ABCMeta
     __metaclass__ = abc.ABCMeta
 
 
-    def __init__(self, event_handler):
-        self._event_manager = events.EventManager(event_handler)
-
     @property
     @property
     def connection_info_schema(self):
     def connection_info_schema(self):
         raise NotImplementedError("Missing connection info schema.")
         raise NotImplementedError("Missing connection info schema.")
@@ -55,7 +51,7 @@ class BaseImportProvider(BaseProvider):
         pass
         pass
 
 
 
 
-class BaseReplicaImportProvider(BaseImportProvider):
+class BaseReplicaImportProvider(BaseProvider):
     __metaclass__ = abc.ABCMeta
     __metaclass__ = abc.ABCMeta
 
 
     @abc.abstractmethod
     @abc.abstractmethod
@@ -111,7 +107,7 @@ class BaseExportProvider(BaseProvider):
         pass
         pass
 
 
 
 
-class BaseReplicaExportProvider(BaseExportProvider):
+class BaseReplicaExportProvider(BaseProvider):
     __metaclass__ = abc.ABCMeta
     __metaclass__ = abc.ABCMeta
 
 
     @abc.abstractmethod
     @abc.abstractmethod

+ 8 - 1
coriolis/providers/openstack/__init__.py

@@ -18,6 +18,7 @@ from oslo_utils import units
 import paramiko
 import paramiko
 
 
 from coriolis import constants
 from coriolis import constants
+from coriolis import events
 from coriolis import exception
 from coriolis import exception
 from coriolis import keystone
 from coriolis import keystone
 from coriolis.osmorphing import manager as osmorphing_manager
 from coriolis.osmorphing import manager as osmorphing_manager
@@ -318,7 +319,7 @@ class _MigrationResources(object):
             self._keypair = None
             self._keypair = None
 
 
 
 
-class ImportProvider(base.BaseReplicaImportProvider):
+class ImportProvider(base.BaseImportProvider, base.BaseReplicaImportProvider):
 
 
     platform = constants.PLATFORM_OPENSTACK
     platform = constants.PLATFORM_OPENSTACK
 
 
@@ -328,6 +329,9 @@ class ImportProvider(base.BaseReplicaImportProvider):
     target_environment_schema = schemas.get_schema(
     target_environment_schema = schemas.get_schema(
         __name__, schemas.PROVIDER_TARGET_ENVIRONMENT_SCHEMA_NAME)
         __name__, schemas.PROVIDER_TARGET_ENVIRONMENT_SCHEMA_NAME)
 
 
+    def __init__(self, event_handler):
+        self._event_manager = events.EventManager(event_handler)
+
     def _create_image(self, glance, name, disk_path, disk_format,
     def _create_image(self, glance, name, disk_path, disk_format,
                       container_format, hypervisor_type):
                       container_format, hypervisor_type):
         properties = {}
         properties = {}
@@ -1127,6 +1131,9 @@ class ExportProvider(base.BaseExportProvider):
     connection_info_schema = schemas.get_schema(
     connection_info_schema = schemas.get_schema(
         __name__, schemas.PROVIDER_CONNECTION_INFO_SCHEMA_NAME)
         __name__, schemas.PROVIDER_CONNECTION_INFO_SCHEMA_NAME)
 
 
+    def __init__(self, event_handler):
+        self._event_manager = events.EventManager(event_handler)
+
     @utils.retry_on_error()
     @utils.retry_on_error()
     def _get_instance(self, nova, instance_name):
     def _get_instance(self, nova, instance_name):
         instances = nova.servers.list(search_opts={'name': instance_name})
         instances = nova.servers.list(search_opts={'name': instance_name})

+ 5 - 1
coriolis/providers/vmware_vsphere/__init__.py

@@ -22,6 +22,7 @@ from pyVmomi import vim
 
 
 from coriolis import constants
 from coriolis import constants
 from coriolis import data_transfer
 from coriolis import data_transfer
+from coriolis import events
 from coriolis import exception
 from coriolis import exception
 from coriolis.providers import base
 from coriolis.providers import base
 from coriolis.providers.vmware_vsphere import guestid
 from coriolis.providers.vmware_vsphere import guestid
@@ -196,13 +197,16 @@ class _SSHBackupWriter(_BaseBackupWriter):
         self._ssh.close()
         self._ssh.close()
 
 
 
 
-class ExportProvider(base.BaseReplicaExportProvider):
+class ExportProvider(base.BaseExportProvider, base.BaseReplicaExportProvider):
 
 
     platform = constants.PLATFORM_VMWARE_VSPHERE
     platform = constants.PLATFORM_VMWARE_VSPHERE
 
 
     connection_info_schema = schemas.get_schema(
     connection_info_schema = schemas.get_schema(
         __name__, schemas.PROVIDER_CONNECTION_INFO_SCHEMA_NAME)
         __name__, schemas.PROVIDER_CONNECTION_INFO_SCHEMA_NAME)
 
 
+    def __init__(self, event_handler):
+        self._event_manager = events.EventManager(event_handler)
+
     @utils.retry_on_error()
     @utils.retry_on_error()
     def _convert_disk_type(self, disk_path, target_disk_path, target_type=0):
     def _convert_disk_type(self, disk_path, target_disk_path, target_type=0):
         utils.exec_process([CONF.vmware_vsphere.vdiskmanager_path, "-r",
         utils.exec_process([CONF.vmware_vsphere.vdiskmanager_path, "-r",