James Iter преди 8 години
родител
ревизия
194ffab3be
променени са 5 файла, в които са добавени 72 реда и са изтрити 47 реда
  1. 42 2
      api/host.py
  2. 1 0
      api_route_table.py
  3. 14 14
      templates/host_detail.html
  4. 1 1
      templates/hosts_show.html
  5. 14 30
      views/host.py

+ 42 - 2
api/host.py

@@ -3,7 +3,9 @@
 
 
 import json
-from flask import Blueprint, request
+
+import requests
+from flask import Blueprint, request, url_for
 import jimit as ji
 
 from models import Database as db
@@ -144,7 +146,7 @@ def r_content_search():
         ret['data'] = list()
 
         for host in Host.get_all():
-            if -1 != host['hostname'].find(keyword):
+            if -1 != host['hostname'].lower().find(keyword.lower()):
                 ret['data'].append(host)
 
         return ret
@@ -191,3 +193,41 @@ def r_delete(nodes_id):
     except ji.PreviewingError, e:
         return json.loads(e.message)
 
+
+@Utils.dumps2response
+def r_show():
+    args = list()
+    page = int(request.args.get('page', 1))
+    page_size = int(request.args.get('page_size', 100))
+    keyword = request.args.get('keyword', None)
+
+    if page is not None:
+        args.append('page=' + page.__str__())
+
+    if page_size is not None:
+        args.append('page_size=' + page_size.__str__())
+
+    if keyword is not None:
+        args.append('keyword=' + keyword.__str__())
+
+    hosts_url = url_for('api_hosts.r_get_by_filter', _external=True)
+    if keyword is not None:
+        hosts_url = url_for('api_hosts.r_content_search', _external=True)
+
+    if args.__len__() > 0:
+        hosts_url = hosts_url + '?' + '&'.join(args)
+
+    hosts_ret = requests.get(url=hosts_url, cookies=request.cookies)
+    hosts_ret = json.loads(hosts_ret.content)
+
+    ret = dict()
+    ret['state'] = ji.Common.exchange_state(20000)
+
+    ret['data'] = {
+        'hosts': hosts_ret['data'],
+        'keyword': keyword
+    }
+
+    return ret
+
+

+ 1 - 0
api_route_table.py

@@ -147,6 +147,7 @@ add_rule_api(host.blueprints, '', api_func='host.r_get_by_filter', methods=['GET
 add_rule_api(host.blueprints, '/_search', api_func='host.r_content_search', methods=['GET'])
 add_rule_api(host.blueprints, '/<nodes_id>', api_func='host.r_delete', methods=['DELETE'])
 add_rule_api(host.blueprints, '/<hosts_name>/<random>', api_func='host.r_nonrandom', methods=['PUT'])
+add_rule_api(host.blueprints, '/_show', api_func='host.r_show', methods=['GET'])
 
 # SSH Key 操作
 add_rule_api(ssh_key.blueprint, '', api_func='ssh_key.r_create', methods=['POST'])

+ 14 - 14
templates/host_detail.html

@@ -920,7 +920,7 @@
                 <div class="col-xs-4">
                     <div style="background: #F5f6FA; border: 1px solid #e1e6eb; padding: 10px; font-size: 14px; width: 100%;">
                         <span>
-                            {{ host_ret.data.hostname }}
+                            {{ host.hostname }}
                         </span>
                     </div>
                     <table class="table table-bordered">
@@ -929,7 +929,7 @@
                             <td>
                                 <span class="guest-label">NODE ID:&nbsp;&nbsp;&nbsp;&nbsp;</span>
                                 <span class="guest-desc">
-                                {{ host_ret.data.node_id }}
+                                {{ host.node_id }}
                                 </span>
                             </td>
                         </tr>
@@ -940,13 +940,13 @@
                                         <td>
                                             <span class="guest-label">节点健康状况:&nbsp;&nbsp;&nbsp;&nbsp;</span>
                                             <span class="guest-desc">
-                                                <i class="glyph-icon icon-circle font-size-14 {% if host_ret.data.alive == true %}font-green{% else %}font-red{% endif %}"></i>
+                                                <i class="glyph-icon icon-circle font-size-14 {% if host.alive == true %}font-green{% else %}font-red{% endif %}"></i>
                                             </span>
                                         </td>
                                         <td>
                                             <span class="guest-label">节点性能收集引擎:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
                                             <span class="guest-desc">
-                                                <i class="glyph-icon icon-circle font-size-14 {% if host_ret.data.threads_status.host_performance_collection_engine.alive == true %}font-green{% else %}font-red{% endif %}"></i>
+                                                <i class="glyph-icon icon-circle font-size-14 {% if host.threads_status.host_performance_collection_engine.alive == true %}font-green{% else %}font-red{% endif %}"></i>
                                             </span>
                                         </td>
                                     </tr>
@@ -954,13 +954,13 @@
                                         <td>
                                             <span class="guest-label">状态汇送引擎:&nbsp;&nbsp;&nbsp;&nbsp;</span>
                                             <span class="guest-desc">
-                                                <i class="glyph-icon icon-circle font-size-14 {% if host_ret.data.threads_status.host_state_report_engine.alive == true %}font-green{% else %}font-red{% endif %}"></i>
+                                                <i class="glyph-icon icon-circle font-size-14 {% if host.threads_status.host_state_report_engine.alive == true %}font-green{% else %}font-red{% endif %}"></i>
                                             </span>
                                         </td>
                                         <td>
                                             <span class="guest-label">虚拟机性能收集引擎:&nbsp;&nbsp;&nbsp;&nbsp;</span>
                                             <span class="guest-desc">
-                                                <i class="glyph-icon icon-circle font-size-14 {% if host_ret.data.threads_status.guest_performance_collection_engine.alive == true %}font-green{% else %}font-red{% endif %}"></i>
+                                                <i class="glyph-icon icon-circle font-size-14 {% if host.threads_status.guest_performance_collection_engine.alive == true %}font-green{% else %}font-red{% endif %}"></i>
                                             </span>
                                         </td>
                                     </tr>
@@ -968,13 +968,13 @@
                                         <td>
                                             <span class="guest-label">指令处理引擎:&nbsp;&nbsp;&nbsp;&nbsp;</span>
                                             <span class="guest-desc">
-                                                <i class="glyph-icon icon-circle font-size-14 {% if host_ret.data.threads_status.instruction_process_engine.alive == true %}font-green{% else %}font-red{% endif %}"></i>
+                                                <i class="glyph-icon icon-circle font-size-14 {% if host.threads_status.instruction_process_engine.alive == true %}font-green{% else %}font-red{% endif %}"></i>
                                             </span>
                                         </td>
                                         <td>
                                             <span class="guest-label">虚拟机创建进度引擎:&nbsp;&nbsp;&nbsp;&nbsp;</span>
                                             <span class="guest-desc">
-                                                <i class="glyph-icon icon-circle font-size-14 {% if host_ret.data.threads_status.guest_creating_progress_report_engine.alive == true %}font-green{% else %}font-red{% endif %}"></i>
+                                                <i class="glyph-icon icon-circle font-size-14 {% if host.threads_status.guest_creating_progress_report_engine.alive == true %}font-green{% else %}font-red{% endif %}"></i>
                                             </span>
                                         </td>
                                     </tr>
@@ -985,7 +985,7 @@
                             <td>
                                 <span class="guest-label">CPU:&nbsp;&nbsp;&nbsp;&nbsp;</span>
                                 <span class="guest-desc">
-                                {{ host_ret.data.cpu }} 核
+                                {{ host.cpu }} 核
                                 </span>
                             </td>
                         </tr>
@@ -993,12 +993,12 @@
                             <td>
                                 <span class="guest-label">内存:&nbsp;&nbsp;&nbsp;&nbsp;</span>
                                 <span class="guest-desc">
-                                {{ (host_ret.data.memory / 1024 / 1024 / 1024)|int }} GB
+                                {{ (host.memory / 1024 / 1024 / 1024)|int }} GB
                                 </span>
                             </td>
                         </tr>
 
-                        {% for nic_name, nic in host_ret.data.interfaces.iteritems() %}
+                        {% for nic_name, nic in host.interfaces.iteritems() %}
                             <tr>
                                 <td style="padding: 0;">
                                     <table style="width: 100%;">
@@ -1008,7 +1008,7 @@
                                 </td>
                             </tr>
                         {% endfor %}
-                        {% for mountpoint, disk in host_ret.data.disks.iteritems() %}
+                        {% for mountpoint, disk in host.disks.iteritems() %}
                             <tr>
                                 <td style="padding: 0;">
                                     <table style="width: 100%;">
@@ -1022,7 +1022,7 @@
                             <td>
                                 <span class="guest-label">启动时间:&nbsp;&nbsp;&nbsp;&nbsp;</span>
                                 <span class="guest-desc">
-                                {{ format_datetime_by_tus(host_ret.data.boot_time * 1000 * 1000) }}
+                                {{ format_datetime_by_tus(host.boot_time * 1000 * 1000) }}
                                 </span>
                             </td>
                         </tr>
@@ -1030,7 +1030,7 @@
                             <td>
                                 <span class="guest-label">更新时间:&nbsp;&nbsp;&nbsp;&nbsp;</span>
                                 <span class="guest-desc">
-                                {{ format_datetime_by_tus(host_ret.data.timestamp * 1000 * 1000) }}
+                                {{ format_datetime_by_tus(host.timestamp * 1000 * 1000) }}
                                 </span>
                             </td>
                         </tr>

+ 1 - 1
templates/hosts_show.html

@@ -103,7 +103,7 @@
                     </div>
                 </div>
                 <div class="row">
-                    {% for item in hosts_ret.data %}
+                    {% for item in hosts %}
                     <div class="col-md-4" onmouseover="panel_onmouseover(this);" onmouseout="panel_onmouseout(this);">
                         <div class="host-box content-box {% if not item.alive %}panel-gray{% endif %}">
                             <h2 class="bg-black host-title">{{ item.hostname }}

+ 14 - 30
views/host.py

@@ -5,7 +5,6 @@
 import json
 from flask import Blueprint, render_template, url_for, request
 import requests
-from math import ceil
 
 
 __author__ = 'James Iter'
@@ -28,42 +27,27 @@ blueprints = Blueprint(
 
 
 def show():
-    args = list()
-    page = int(request.args.get('page', 1))
-    page_size = int(request.args.get('page_size', 10))
-    keyword = request.args.get('keyword', None)
-    resource_path = request.path
+    url = url_for('api_hosts.r_show', _external=True)
+    if request.args.__len__() >= 1:
+        args = list()
 
-    if page is not None:
-        args.append('page=' + page.__str__())
+        for k, v in request.args.items():
+            args.append('='.join([k, v]))
 
-    if page_size is not None:
-        args.append('page_size=' + page_size.__str__())
+        url += '?' + '&'.join(args)
 
-    if keyword is not None:
-        args.append('keyword=' + keyword.__str__())
+    ret = requests.get(url=url, cookies=request.cookies)
+    ret = json.loads(ret.content)
 
-    host_url = request.host_url.rstrip('/')
-
-    hosts_url = host_url + url_for('api_hosts.r_get_by_filter')
-    if keyword is not None:
-        hosts_url = host_url + url_for('api_hosts.r_content_search')
-
-    if args.__len__() > 0:
-        hosts_url = hosts_url + '?' + '&'.join(args)
-
-    hosts_ret = requests.get(url=hosts_url, cookies=request.cookies)
-    hosts_ret = json.loads(hosts_ret.content)
-
-    return render_template('hosts_show.html', hosts_ret=hosts_ret, resource_path=resource_path, keyword=keyword)
+    return render_template('hosts_show.html', hosts=ret['data']['hosts'], resource_path=request.path,
+                           keyword=ret['data']['keyword'])
 
 
 def detail(node_id):
-    host_url = request.host_url.rstrip('/')
-
-    _host_url = host_url + url_for('api_hosts.r_get', nodes_id=node_id)
+    host_url = url_for('api_hosts.r_get', nodes_id=node_id, _external=True)
 
-    host_ret = requests.get(url=_host_url, cookies=request.cookies)
+    host_ret = requests.get(url=host_url, cookies=request.cookies)
     host_ret = json.loads(host_ret.content)
 
-    return render_template('host_detail.html', node_id=node_id, host_ret=host_ret)
+    return render_template('host_detail.html', node_id=node_id, host=host_ret['data'])
+