Преглед на файлове

变更 emit_instruction 从属关系。从 Guest 至 Utils。

James Iter преди 8 години
родител
ревизия
a1553ce73c
променени са 8 файла, в които са добавени 28 реда и са изтрити 25 реда
  1. 1 1
      api/config.py
  2. 6 6
      api/disk.py
  3. 12 12
      api/guest.py
  4. 2 0
      docs/todo.md
  5. 1 1
      misc/init.sql
  6. 0 4
      models/guest.py
  7. 5 0
      models/utils.py
  8. 1 1
      templates/guest_detail.html

+ 1 - 1
api/config.py

@@ -325,7 +325,7 @@ def r_update_quota():
                         'disks': [disk.__dict__]
                     }
 
-                    Guest.emit_instruction(message=json.dumps(message))
+                    Utils.emit_instruction(message=json.dumps(message))
 
         config.update()
         config.update_global_config()

+ 6 - 6
api/disk.py

@@ -7,7 +7,7 @@ import json
 from uuid import uuid4
 import jimit as ji
 
-from models import Guest, DiskState
+from models import Guest, DiskState, Host
 from models.initialize import dev_table
 from models import Config
 from models import Disk
@@ -97,7 +97,7 @@ def r_create():
             }
 
             if disk.on_host == 'shared_storage':
-                available_hosts = Guest.get_available_hosts()
+                available_hosts = Host.get_available_hosts()
 
                 if available_hosts.__len__() == 0:
                     ret['state'] = ji.Common.exchange_state(50351)
@@ -107,7 +107,7 @@ def r_create():
                 chosen_host = available_hosts[quantity % available_hosts.__len__()]
                 message['hostname'] = chosen_host['hostname']
 
-            Guest.emit_instruction(message=json.dumps(message, ensure_ascii=False))
+            Utils.emit_instruction(message=json.dumps(message, ensure_ascii=False))
 
             disk.create()
 
@@ -167,7 +167,7 @@ def r_resize(uuid, size):
         if disk.guest_uuid.__len__() == 36:
             message['device_node'] = dev_table[disk.sequence]
 
-        Guest.emit_instruction(message=json.dumps(message, ensure_ascii=False))
+        Utils.emit_instruction(message=json.dumps(message, ensure_ascii=False))
 
         return ret
 
@@ -221,7 +221,7 @@ def r_delete(uuids):
             if disk.on_host == 'shared_storage':
                 message['hostname'] = Guest.get_lightest_host()['hostname']
 
-            Guest.emit_instruction(message=json.dumps(message, ensure_ascii=False))
+            Utils.emit_instruction(message=json.dumps(message, ensure_ascii=False))
 
         return ret
 
@@ -390,7 +390,7 @@ def r_update(uuids):
                     'disks': [disk.__dict__]
                 }
 
-                Guest.emit_instruction(message=json.dumps(message))
+                Utils.emit_instruction(message=json.dumps(message))
 
             ret['data'].append(disk.__dict__)
 

+ 12 - 12
api/guest.py

@@ -199,7 +199,7 @@ def r_create():
                 'passback_parameters': {'boot_jobs_id': boot_jobs_id}
             }
 
-            Guest.emit_instruction(message=json.dumps(message, ensure_ascii=False))
+            Utils.emit_instruction(message=json.dumps(message, ensure_ascii=False))
 
         return ret
 
@@ -233,7 +233,7 @@ def r_reboot(uuids):
                 'hostname': guest.on_host
             }
 
-            Guest.emit_instruction(message=json.dumps(message))
+            Utils.emit_instruction(message=json.dumps(message))
 
         ret = dict()
         ret['state'] = ji.Common.exchange_state(20000)
@@ -271,7 +271,7 @@ def r_force_reboot(uuids):
                 'disks': disks
             }
 
-            Guest.emit_instruction(message=json.dumps(message))
+            Utils.emit_instruction(message=json.dumps(message))
 
         ret = dict()
         ret['state'] = ji.Common.exchange_state(20000)
@@ -307,7 +307,7 @@ def r_shutdown(uuids):
                 'hostname': guest.on_host
             }
 
-            Guest.emit_instruction(message=json.dumps(message))
+            Utils.emit_instruction(message=json.dumps(message))
 
         ret = dict()
         ret['state'] = ji.Common.exchange_state(20000)
@@ -343,7 +343,7 @@ def r_force_shutdown(uuids):
                 'hostname': guest.on_host
             }
 
-            Guest.emit_instruction(message=json.dumps(message))
+            Utils.emit_instruction(message=json.dumps(message))
 
         ret = dict()
         ret['state'] = ji.Common.exchange_state(20000)
@@ -414,7 +414,7 @@ def r_boot(uuids):
                 'disks': disks
             }
 
-            Guest.emit_instruction(message=json.dumps(message))
+            Utils.emit_instruction(message=json.dumps(message))
 
         ret = dict()
         ret['state'] = ji.Common.exchange_state(20000)
@@ -450,7 +450,7 @@ def r_suspend(uuids):
                 'hostname': guest.on_host
             }
 
-            Guest.emit_instruction(message=json.dumps(message))
+            Utils.emit_instruction(message=json.dumps(message))
 
         ret = dict()
         ret['state'] = ji.Common.exchange_state(20000)
@@ -486,7 +486,7 @@ def r_resume(uuids):
                 'hostname': guest.on_host
             }
 
-            Guest.emit_instruction(message=json.dumps(message))
+            Utils.emit_instruction(message=json.dumps(message))
 
         ret = dict()
         ret['state'] = ji.Common.exchange_state(20000)
@@ -531,7 +531,7 @@ def r_delete(uuids):
                 'hostname': guest.on_host
             }
 
-            Guest.emit_instruction(message=json.dumps(message))
+            Utils.emit_instruction(message=json.dumps(message))
 
             # 删除创建失败的 Guest
             if guest.status == status.GuestState.dirty.value:
@@ -621,7 +621,7 @@ def r_attach_disk(uuid, disk_uuid):
             'disks': [disk.__dict__]
         }
 
-        Guest.emit_instruction(message=json.dumps(message))
+        Utils.emit_instruction(message=json.dumps(message))
         disk.update()
 
         return ret
@@ -677,7 +677,7 @@ def r_detach_disk(disk_uuid):
             'passback_parameters': {'disk_uuid': disk.uuid}
         }
 
-        Guest.emit_instruction(message=json.dumps(message))
+        Utils.emit_instruction(message=json.dumps(message))
 
         disk.state = DiskState.unloading.value
         disk.update()
@@ -721,7 +721,7 @@ def r_migrate(uuids, destination_host):
                 'duri': 'qemu+ssh://' + destination_host + '/system'
             }
 
-            Guest.emit_instruction(message=json.dumps(message))
+            Utils.emit_instruction(message=json.dumps(message))
 
         ret = dict()
         ret['state'] = ji.Common.exchange_state(20000)

+ 2 - 0
docs/todo.md

@@ -73,6 +73,8 @@
 - [ ] 实现类似于VMware的故障转移功能
 - [x] 实现创建虚拟机时,手动指定计算节点功能
 - [x] 计算机节点加入是否接受自动分配虚拟机开关
+- [ ] 实现网络流量限速
+- [ ] 取消单独的初始化密码操作,合并入具体的操作系统初始化操作中
 - [ ] 替换 host 对象中的 node_id 为 hostname,统一主键。并消除 node_id
 - [ ] 考虑用管理接口的 IP 地址来区别计算节点,而不是用主机名
 

+ 1 - 1
misc/init.sql

@@ -1,4 +1,4 @@
-# DROP DATABASE IF EXISTS jimv;
+-- DROP DATABASE IF EXISTS jimv;
 CREATE DATABASE IF NOT EXISTS jimv CHARACTER SET utf8;
 USE jimv;
 

+ 0 - 4
models/guest.py

@@ -63,10 +63,6 @@ class Guest(ORM):
     def get_allow_content_search_keywords():
         return ['label', 'remark', 'on_host', 'ip']
 
-    @staticmethod
-    def emit_instruction(message):
-        db.r.publish(app.config['instruction_channel'], message=message)
-
     def get_boot_jobs_key(self):
         return ':'.join([app.config['guest_boot_jobs'], self.uuid])
 

+ 5 - 0
models/utils.py

@@ -12,6 +12,7 @@ from werkzeug.utils import import_string, cached_property
 import jwt
 
 from models.initialize import *
+from database import Database as db
 
 
 __author__ = 'James Iter'
@@ -116,6 +117,10 @@ class Utils(object):
         ret['state'] = ji.Common.exchange_state(41208)
         raise ji.JITError(json.dumps(ret))
 
+    @staticmethod
+    def emit_instruction(message):
+        db.r.publish(app.config['instruction_channel'], message=message)
+
 
 class LazyView(object):
     """

+ 1 - 1
templates/guest_detail.html

@@ -1075,7 +1075,7 @@
                                     <thead>
                                     <tr>
                                         <td colspan="6">
-                                            <span class="guest-label">磁盘&nbsp;&nbsp;&nbsp;&nbsp;</span>
+                                            <span class="guest-label">磁盘:&nbsp;&nbsp;&nbsp;&nbsp;</span>
                                             <span class="guest-desc">
                                                     <a href="/disks?guest_uuid={{ guest_ret.data.uuid }}" style="color: #0275d8;">{{ disks_ret.data|length }}</a>
                                             </span>