Procházet zdrojové kódy

Define validation provider ABCs.

Nashwan Azhari před 7 roky
rodič
revize
f9616813f2

+ 4 - 0
coriolis/constants.py

@@ -57,6 +57,10 @@ PROVIDER_TYPE_ENDPOINT_NETWORKS = 128
 PROVIDER_TYPE_INSTANCE_FLAVOR = 256
 PROVIDER_TYPE_ENDPOINT_OPTIONS = 512
 PROVIDER_TYPE_SETUP_LIBS = 1024
+PROVIDER_TYPE_VALIDATE_MIGRATION_EXPORT = 2048
+PROVIDER_TYPE_VALIDATE_REPLICA_EXPORT = 4096
+PROVIDER_TYPE_VALIDATE_MIGRATION_IMPORT = 8192
+PROVIDER_TYPE_VALIDATE_REPLICA_IMPORT = 16384
 
 DISK_FORMAT_VMDK = 'vmdk'
 DISK_FORMAT_RAW = 'raw'

+ 54 - 0
coriolis/providers/base.py

@@ -157,6 +157,60 @@ class BaseImportInstanceProvider(BaseInstanceProvider):
         pass
 
 
+class BaseMigrationExportValidationProvider(
+        object, with_metaclass(abc.ABCMeta)):
+    """ Defines methods to be called for migration export input validation """
+
+    @abc.abstractmethod
+    def validate_migration_export_input(
+            self, ctxt, connection_info, instance_name, source_environment):
+        """ Should verify the provided 'connection_info' and
+        'source_environment' and return the expected Migration
+        export info for the given VM. """
+        return {}
+
+
+class BaseReplicaExportValidationProvider(
+        object, with_metaclass(abc.ABCMeta)):
+    """ Defines methods to be called for replica export input validation """
+
+    @abc.abstractmethod
+    def validate_replica_export_input(
+            self, ctxt, connection_info, instance_name, source_environment):
+        """ Should verify the provided 'connection_info' and
+        'source_environment' and return the expected Migration
+        export info for the given VM. """
+        return {}
+
+
+class BaseMigrationImportValidationProvider(
+        object, with_metaclass(abc.ABCMeta)):
+    """ Defines methods to be called for migration import input validation """
+
+    @abc.abstractmethod
+    def validate_migration_import_input(
+            self, ctxt, connection_info, target_environment, export_info):
+        """ Validates the provided Migration parameters """
+        pass
+
+
+class BaseReplicaImportValidationProvider(
+        object, with_metaclass(abc.ABCMeta)):
+    """ Defines methods to be called for replica import input validation """
+
+    @abc.abstractmethod
+    def validate_replica_import_input(
+            self, ctxt, connection_info, target_environment, export_info):
+        """ Validates the provided Replica parameters """
+        pass
+
+    @abc.abstractmethod
+    def validate_replica_deployment_input(
+            self, ctxt, connection_info, target_environment, export_info):
+        """ Validates the provided Replica deployment parameters """
+        pass
+
+
 class BaseImportProvider(BaseImportInstanceProvider):
 
     @abc.abstractmethod

+ 9 - 1
coriolis/providers/factory.py

@@ -31,7 +31,15 @@ PROVIDER_TYPE_MAP = {
         base.BaseEndpointNetworksProvider,
     constants.PROVIDER_TYPE_OS_MORPHING: base.BaseImportInstanceProvider,
     constants.PROVIDER_TYPE_INSTANCE_FLAVOR: base.BaseInstanceFlavorProvider,
-    constants.PROVIDER_TYPE_SETUP_LIBS: base.BaseProviderSetupExtraLibsMixin
+    constants.PROVIDER_TYPE_SETUP_LIBS: base.BaseProviderSetupExtraLibsMixin,
+    constants.PROVIDER_TYPE_VALIDATE_MIGRATION_EXPORT: (
+        base.BaseMigrationExportValidationProvider),
+    constants.PROVIDER_TYPE_VALIDATE_REPLICA_EXPORT: (
+        base.BaseReplicaExportValidationProvider),
+    constants.PROVIDER_TYPE_VALIDATE_MIGRATION_IMPORT: (
+        base.BaseMigrationImportValidationProvider),
+    constants.PROVIDER_TYPE_VALIDATE_REPLICA_IMPORT: (
+        base.BaseReplicaImportValidationProvider)
 }