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

Document the provider interface

We'll document the Coriolis provider interface, making it much
easier to write new providers or extend the existing ones, with
or without AI assistance.

At the moment, most of the provider API is undocumented. It's true
that we have JSON schemas for some of the dicts, but not all of
them are covered. Furthermore, the intended provider behavior isn't
always immediately obvious.

Let's take "deploy_replica_target_resources" for example, it's
meant to deploy a minion instance and return the minion connection
info, if minion instances are needed for this import provider.
Somebody who writes a provider whould have a hard time guessing that.
We intend to solve this.

While at it, we'll add type annotations.

Also, we're cleaning up unused deprecated base classes, otherwise
new providers may end up implementing these APIs unnecessarily.
We'll keep the class definitions without any abstract methods
for backwards compatibility, in case there are providers that
still inherit them.
Lucian Petrut 1 месяц назад
Родитель
Сommit
f55768ab95

+ 2 - 2
coriolis/constants.py

@@ -188,8 +188,6 @@ TASK_PLATFORM_BILATERAL = "bilateral"
 PROVIDER_PLATFORM_SOURCE = "source"
 PROVIDER_PLATFORM_DESTINATION = "destination"
 
-PROVIDER_TYPE_IMPORT = 1
-PROVIDER_TYPE_EXPORT = 2
 PROVIDER_TYPE_TRANSFER_IMPORT = 4
 PROVIDER_TYPE_TRANSFER_EXPORT = 8
 PROVIDER_TYPE_ENDPOINT = 16
@@ -211,6 +209,8 @@ PROVIDER_TYPE_DESTINATION_MINION_POOL = 1048576
 # and de-increment the rest
 PROVIDER_TYPE_VALIDATE_MIGRATION_EXPORT = 2048
 PROVIDER_TYPE_VALIDATE_MIGRATION_IMPORT = 8192
+PROVIDER_TYPE_IMPORT = 1
+PROVIDER_TYPE_EXPORT = 2
 
 DISK_FORMAT_VMDK = 'vmdk'
 DISK_FORMAT_RAW = 'raw'

Разница между файлами не показана из-за своего большого размера
+ 701 - 160
coriolis/providers/base.py


+ 0 - 8
coriolis/providers/factory.py

@@ -18,10 +18,6 @@ CONF = cfg.CONF
 CONF.register_opts(serialization_opts)
 
 PROVIDER_TYPE_MAP = {
-    # NOTE(aznashwan): these have been disabled following the transition from
-    # classical disk-export-based migrations to Replica-based ones:
-    # constants.PROVIDER_TYPE_EXPORT: base.BaseExportProvider,
-    # constants.PROVIDER_TYPE_IMPORT: base.BaseImportProvider,
     constants.PROVIDER_TYPE_TRANSFER_EXPORT: base.BaseReplicaExportProvider,
     constants.PROVIDER_TYPE_TRANSFER_IMPORT: base.BaseReplicaImportProvider,
     constants.PROVIDER_TYPE_ENDPOINT: base.BaseEndpointProvider,
@@ -36,12 +32,8 @@ PROVIDER_TYPE_MAP = {
     constants.PROVIDER_TYPE_OS_MORPHING: base.BaseImportInstanceProvider,
     constants.PROVIDER_TYPE_INSTANCE_FLAVOR: base.BaseInstanceFlavorProvider,
     constants.PROVIDER_TYPE_SETUP_LIBS: base.BaseProviderSetupExtraLibsMixin,
-    constants.PROVIDER_TYPE_VALIDATE_MIGRATION_EXPORT: (
-        base.BaseMigrationExportValidationProvider),
     constants.PROVIDER_TYPE_VALIDATE_TRANSFER_EXPORT: (
         base.BaseReplicaExportValidationProvider),
-    constants.PROVIDER_TYPE_VALIDATE_MIGRATION_IMPORT: (
-        base.BaseMigrationImportValidationProvider),
     constants.PROVIDER_TYPE_VALIDATE_TRANSFER_IMPORT: (
         base.BaseReplicaImportValidationProvider),
     constants.PROVIDER_TYPE_SOURCE_TRANSFER_UPDATE: (

+ 2 - 1
coriolis/schemas/network_map_schema.json

@@ -1,4 +1,5 @@
 {
   "$schema": "http://cloudbase.it/coriolis/schemas/network_map_schema#",
-  "type": "object"
+  "type": "object",
+  "description": "Mapping between source and destination network identifiers."
 }

Некоторые файлы не были показаны из-за большого количества измененных файлов