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

Fix osmorphing minion selection and disk attachment.

Nashwan Azhari 5 лет назад
Родитель
Сommit
a2679a2f29
2 измененных файлов с 21 добавлено и 2 удалено
  1. 6 2
      coriolis/conductor/rpc/server.py
  2. 15 0
      coriolis/tasks/minion_pool_tasks.py

+ 6 - 2
coriolis/conductor/rpc/server.py

@@ -1343,8 +1343,12 @@ class ConductorServerEndpoint(object):
                     action.origin_minion_pool_id, action.id))
                     action.origin_minion_pool_id, action.id))
 
 
         if action.instance_osmorphing_minion_pool_mappings:
         if action.instance_osmorphing_minion_pool_mappings:
-            for (instance, pool_id) in (
-                    action.instance_osmorphing_minion_pool_mappings.items()):
+            osmorphing_pool_mappings = {
+                instance_id: pool_id
+                for (instance_id, pool_id) in (
+                    action.instance_osmorphing_minion_pool_mappings.items())
+                if pool_id}
+            for (instance, pool_id) in osmorphing_pool_mappings:
                 osmorphing_pool = _get_pool(pool_id)
                 osmorphing_pool = _get_pool(pool_id)
                 if osmorphing_pool.origin_endpoint_id != (
                 if osmorphing_pool.origin_endpoint_id != (
                         action.destination_endpoint_id):
                         action.destination_endpoint_id):

+ 15 - 0
coriolis/tasks/minion_pool_tasks.py

@@ -547,6 +547,7 @@ class AttachVolumesToOSMorphingMinionTask(
         fields = super(
         fields = super(
             AttachVolumesToOSMorphingMinionTask,
             AttachVolumesToOSMorphingMinionTask,
             cls).get_returned_task_info_properties()
             cls).get_returned_task_info_properties()
+        fields.append("instance_deployment_info")
         return fields
         return fields
 
 
     @classmethod
     @classmethod
@@ -569,6 +570,20 @@ class AttachVolumesToOSMorphingMinionTask(
     def _clear_mapped_minion_task_info_field(cls):
     def _clear_mapped_minion_task_info_field(cls):
         return False
         return False
 
 
+    def _run(self, ctxt, instance, origin, destination,
+             task_info, event_handler):
+        res = super(
+            AttachVolumesToOSMorphingMinionTask, self)._run(
+                ctxt, instance, origin, destination, task_info, event_handler)
+
+        instance_deployment_info = task_info['instance_deployment_info']
+        if 'volumes_info' in res:
+            instance_deployment_info['volumes_info'] = res['volumes_info']
+            del res['volumes_info']
+            res['instance_deployment_info'] = instance_deployment_info
+
+        return res
+
 
 
 class DetachVolumesFromOSMorphingMinionTask(
 class DetachVolumesFromOSMorphingMinionTask(
         AttachVolumesToOSMorphingMinionTask):
         AttachVolumesToOSMorphingMinionTask):