Kaynağa Gözat

Moves get_endpoint_instances in the Worker

Alessandro Pilotti 9 yıl önce
ebeveyn
işleme
2a97a98a58

+ 3 - 16
coriolis/conductor/rpc/server.py

@@ -12,8 +12,6 @@ from coriolis.db import api as db_api
 from coriolis.db.sqlalchemy import models
 from coriolis import exception
 from coriolis import keystone
-from coriolis.providers import factory as providers_factory
-from coriolis import schemas
 from coriolis import utils
 from coriolis.worker.rpc import client as rpc_worker_client
 
@@ -106,20 +104,9 @@ class ConductorServerEndpoint(object):
                                instance_name_pattern):
         endpoint = self.get_endpoint(ctxt, endpoint_id)
 
-        export_provider = providers_factory.get_provider(
-            endpoint.type, constants.PROVIDER_TYPE_ENDPOINT, None)
-
-        connection_info = utils.get_secret_connection_info(
-            ctxt, endpoint.connection_info)
-
-        instances_info = export_provider.get_instances(
-            ctxt, connection_info, last_seen_id=marker, limit=limit,
-            instance_name_pattern=instance_name_pattern)
-        for instance_info in instances_info:
-            schemas.validate_value(
-                instance_info, schemas.CORIOLIS_VM_INSTANCE_INFO_SCHEMA)
-
-        return instances_info
+        return self._rpc_worker_client.get_endpoint_instances(
+            ctxt, endpoint.type, endpoint.connection_info, marker, limit,
+            instance_name_pattern)
 
     @staticmethod
     def _create_task(instance, task_type, execution, depends_on=None,

+ 11 - 0
coriolis/worker/rpc/client.py

@@ -29,3 +29,14 @@ class WorkerClient(object):
 
     def update_migration_status(self, ctxt, task_id, status):
         self._client.call(ctxt, "update_migration_status", status=status)
+
+    def get_endpoint_instances(self, ctxt, endpoint_type, connection_info,
+                               marker=None, limit=None,
+                               instance_name_pattern=None):
+        return self._client.call(
+            ctxt, 'get_endpoint_instances',
+            endpoint_type=endpoint_type,
+            connection_info=connection_info,
+            marker=marker,
+            limit=limit,
+            instance_name_pattern=instance_name_pattern)

+ 19 - 0
coriolis/worker/rpc/server.py

@@ -17,6 +17,8 @@ from coriolis.conductor.rpc import client as rpc_conductor_client
 from coriolis import constants
 from coriolis import events
 from coriolis import exception
+from coriolis.providers import factory as providers_factory
+from coriolis import schemas
 from coriolis.tasks import factory as task_runners_factory
 from coriolis import utils
 
@@ -165,6 +167,23 @@ class WorkerServerEndpoint(object):
             if not retain_export_path:
                 self._check_remove_dir(export_path)
 
+    def get_endpoint_instances(self, ctxt, endpoint_type, connection_info,
+                               marker, limit, instance_name_pattern):
+        export_provider = providers_factory.get_provider(
+            endpoint_type, constants.PROVIDER_TYPE_ENDPOINT, None)
+
+        secret_connection_info = utils.get_secret_connection_info(
+            ctxt, connection_info)
+
+        instances_info = export_provider.get_instances(
+            ctxt, secret_connection_info, last_seen_id=marker, limit=limit,
+            instance_name_pattern=instance_name_pattern)
+        for instance_info in instances_info:
+            schemas.validate_value(
+                instance_info, schemas.CORIOLIS_VM_INSTANCE_INFO_SCHEMA)
+
+        return instances_info
+
 
 def _get_task_export_path(task_id, create=False):
     export_path = os.path.join(CONF.worker.export_base_path, task_id)