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

修正离线计算节点资源任然显示在dashboard的bug。优化url_for的传参方式。

James Iter 8 лет назад
Родитель
Сommit
01f393433a
5 измененных файлов с 30 добавлено и 20 удалено
  1. 16 0
      api/host.py
  2. 2 2
      docs/todo.md
  3. 4 7
      views/dashboard.py
  4. 1 2
      views/disk.py
  5. 7 9
      views/guest.py

+ 16 - 0
api/host.py

@@ -76,10 +76,26 @@ def r_get_by_filter():
         ret = dict()
         ret['state'] = ji.Common.exchange_state(20000)
         ret['data'] = list()
+
+        alive = None
+
+        if 'alive' in request.args:
+            alive = request.args['alive']
+
+            if str(alive).lower() in ['false', '0']:
+                alive = False
+
+            else:
+                alive = True
+
         for k, v in db.r.hgetall(app.config['hosts_info']).items():
             v = json.loads(v)
             v = Host.alive_check(v)
             v['node_id'] = k
+
+            if alive is not None and alive is not v['alive']:
+                continue
+
             ret['data'].append(v)
 
         if ret['data'].__len__() > 1:

+ 2 - 2
docs/todo.md

@@ -50,7 +50,7 @@
 - [ ] 实现磁盘联动机制。即当删除宿主机时,相随的所有磁盘一并删除
 - [ ] 融入 Systemd
 - [ ] 增加模板镜像上传功能
-- [ ] 加入 Tag 功能
+- [ ] 加入 Tag或分组,类似qq用户分组 功能
 - [ ] 添加对 Guest 的 IP 管理功能
 - [ ] 设计、制作替换 Guest IP 的系统级启动作业
 > 1. 给宿主机替换当前 IP 池中可用的 IP。替换后,新 IP 置为已用状态,被替换的 IP,
@@ -69,7 +69,7 @@
 - [ ] 考虑热更新、升级的问题
 - [ ] 加入清除老旧日志的功能
 - [ ] 忽略 guestfs- 为首的日志
-- [ ] 安装脚本、文档加入ntp时间同步环节
+- [x] 安装脚本、文档加入ntp时间同步环节
 - [ ] 周期轮询试的同步虚拟机状态
 - [ ] 实现类似于VMware的故障转移功能
 - [ ] 实现创建虚拟机时,手动指定计算节点功能

+ 4 - 7
views/dashboard.py

@@ -26,7 +26,8 @@ def show():
 
     host_url = request.host_url.rstrip('/')
 
-    hosts_url = host_url + url_for('api_hosts.r_get_by_filter')
+    # alive 的布尔值 True,在 url 中传输前,会自动转换为字符串 'True'
+    hosts_url = host_url + url_for('api_hosts.r_get_by_filter', alive=True)
     guests_distribute_count_url = host_url + url_for('api_guests.r_distribute_count')
     disks_distribute_count_url = host_url + url_for('api_disks.r_distribute_count')
     guests_current_top_10_url = host_url + url_for('api_performance.r_current_top_10')
@@ -49,8 +50,6 @@ def show():
     guests_current_top_10_ret = requests.get(url=guests_current_top_10_url, cookies=request.cookies)
     guests_current_top_10_ret = json.loads(guests_current_top_10_ret.content)
 
-    guests_url = host_url + url_for('api_guests.r_get_by_filter')
-
     guests_uuid = list()
 
     for k, v in guests_current_top_10_ret['data'].items():
@@ -61,7 +60,7 @@ def show():
             if item['guest_uuid'] not in guests_uuid:
                 guests_uuid.append(item['guest_uuid'])
 
-    guests_url = guests_url + '?filter=uuid:in:' + ','.join(guests_uuid)
+    guests_url = host_url + url_for('api_guests.r_get_by_filter', filter='uuid:in:' + ','.join(guests_uuid))
 
     guests_ret = requests.get(url=guests_url, cookies=request.cookies)
     guests_ret = json.loads(guests_ret.content)
@@ -71,8 +70,6 @@ def show():
     for guest in guests_ret['data']:
         guests_mapping_by_uuid[guest['uuid']] = guest
 
-    disks_url = host_url + url_for('api_disks.r_get_by_filter')
-
     disks_uuid = list()
     for k, v in guests_current_top_10_ret['data'].items():
         for item in v:
@@ -82,7 +79,7 @@ def show():
             if item['disk_uuid'] not in disks_uuid:
                 disks_uuid.append(item['disk_uuid'])
 
-    disks_url = disks_url + '?filter=uuid:in:' + ','.join(disks_uuid)
+    disks_url = host_url + url_for('api_disks.r_get_by_filter', filter='uuid:in:' + ','.join(disks_uuid))
 
     disks_ret = requests.get(url=disks_url, cookies=request.cookies)
     disks_ret = json.loads(disks_ret.content)

+ 1 - 2
views/disk.py

@@ -110,8 +110,7 @@ def show():
             guest_uuids.append(disk['guest_uuid'])
 
     if guest_uuids.__len__() > 0:
-        guests_url = host_url + url_for('api_guests.r_get_by_filter')
-        guests_url += '?filter=uuid:in:' + ','.join(guest_uuids)
+        guests_url = host_url + url_for('api_guests.r_get_by_filter', filter='uuid:in:' + ','.join(guest_uuids))
         guests_ret = requests.get(url=guests_url, cookies=request.cookies)
         guests_ret = json.loads(guests_ret.content)
 

+ 7 - 9
views/guest.py

@@ -213,8 +213,7 @@ def detail(uuid):
     os_template_ret = requests.get(url=os_template_url, cookies=request.cookies)
     os_template_ret = json.loads(os_template_ret.content)
 
-    disks_url = host_url + url_for('api_disks.r_get_by_filter')
-    disks_url = disks_url + '?filter=guest_uuid:in:' + guest_ret['data']['uuid']
+    disks_url = host_url + url_for('api_disks.r_get_by_filter', filter='guest_uuid:in:' + guest_ret['data']['uuid'])
     disks_ret = requests.get(url=disks_url, cookies=request.cookies)
     disks_ret = json.loads(disks_ret.content)
 
@@ -244,8 +243,8 @@ def show_boot_job(uuid):
     guest_boot_jobs_ret = requests.get(url=guest_boot_jobs_url, cookies=request.cookies)
     guest_boot_jobs_ret = json.loads(guest_boot_jobs_ret.content)
 
-    boot_jobs_url = host_url + url_for('api_boot_jobs.r_get_by_filter') + '?filter=id:in:' + \
-        ','.join(guest_boot_jobs_ret['data']['boot_jobs'])
+    boot_jobs_url = host_url + url_for('api_boot_jobs.r_get_by_filter',
+                                       filter='id:in:' + ','.join(guest_boot_jobs_ret['data']['boot_jobs']))
 
     boot_jobs_ret = requests.get(url=boot_jobs_url, cookies=request.cookies)
     boot_jobs_ret = json.loads(boot_jobs_ret.content)
@@ -292,8 +291,8 @@ def show_guests_boot_jobs():
     guests_boot_jobs_id = list(set(guests_boot_jobs_id))
 
     # 获取指定启动作业ID 的启动作业
-    boot_jobs_url = host_url + url_for('api_boot_jobs.r_get_by_filter') + '?filter=id:in:' + \
-        ','.join(guests_boot_jobs_id)
+    boot_jobs_url = host_url + url_for('api_boot_jobs.r_get_by_filter',
+                                       filter='id:in:' + ','.join(guests_boot_jobs_id))
 
     boot_jobs_ret = requests.get(url=boot_jobs_url, cookies=request.cookies)
     boot_jobs_ret = json.loads(boot_jobs_ret.content)
@@ -303,9 +302,8 @@ def show_guests_boot_jobs():
     for boot_job in boot_jobs_ret['data']:
         boot_jobs_mapping_by_id[boot_job['id']] = boot_job
 
-    guests_url = host_url + url_for('api_guests.r_get_by_filter')
-
-    guests_url = guests_url + '?filter=uuid:in:' + ','.join(guests_uuid[page_size * (page - 1): page_size * page])
+    guests_url = host_url + url_for('api_guests.r_get_by_filter',
+                                    filter='uuid:in:' + ','.join(guests_uuid[page_size * (page - 1): page_size * page]))
 
     guests_ret = requests.get(url=guests_url, cookies=request.cookies)
     guests_ret = json.loads(guests_ret.content)