Răsfoiți Sursa

实现单机版迁移功能

James Iter 9 ani în urmă
părinte
comite
83406920ca
2 a modificat fișierele cu 9 adăugiri și 1 ștergeri
  1. 6 1
      api/guest.py
  2. 3 0
      models/event_processor.py

+ 6 - 1
api/guest.py

@@ -576,8 +576,13 @@ def r_migrate(uuids, destination_host):
             guest.uuid = uuid
             guest.get_by('uuid')
 
+        config = Config()
+        config.id = 1
+        config.get()
+
         for uuid in uuids.split(','):
-            message = {'action': 'migrate', 'uuid': uuid, 'duri': 'qemu+ssh://' + destination_host + '/system'}
+            message = {'action': 'migrate', 'jimv_edition': config.jimv_edition, 'uuid': uuid,
+                       'duri': 'qemu+ssh://' + destination_host + '/system'}
             Guest.emit_instruction(message=json.dumps(message))
 
         ret = dict()

+ 3 - 0
models/event_processor.py

@@ -164,9 +164,12 @@ class EventProcessor(object):
 
                 cls.guest.delete()
 
+                # TODO: 加入是否删除使用的数据磁盘开关,如果为True,则顺便删除使用的磁盘。否则解除该磁盘被使用的状态。
                 cls.disk.uuid = uuid
                 cls.disk.get_by('uuid')
                 cls.disk.delete()
+                cls.disk.update_by_filter({'guest_uuid': '', 'sequence': -1, 'state': DiskState.idle.value},
+                                          filter_str='guest_uuid:eq:' + cls.guest.uuid)
 
         elif action == 'create_disk':
             cls.disk.uuid = uuid