소스 검색

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 개월 전
부모
커밋
f55768ab95
4개의 변경된 파일705개의 추가작업 그리고 171개의 파일을 삭제
  1. 2 2
      coriolis/constants.py
  2. 701 160
      coriolis/providers/base.py
  3. 0 8
      coriolis/providers/factory.py
  4. 2 1
      coriolis/schemas/network_map_schema.json

+ 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."
 }

이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.