Procházet zdrojové kódy

快照分离完毕。

James Iter před 8 roky
rodič
revize
679001de74
4 změnil soubory, kde provedl 110 přidání a 79 odebrání
  1. 93 2
      api/snapshot.py
  2. 1 0
      api_route_table.py
  3. 2 2
      templates/snapshots_show.html
  4. 14 75
      views/snapshot.py

+ 93 - 2
api/snapshot.py

@@ -1,8 +1,9 @@
 #!/usr/bin/env python
 # -*- coding: utf-8 -*-
+from math import ceil
 
-
-from flask import Blueprint
+import requests
+from flask import Blueprint, url_for
 from flask import request
 import json
 import jimit as ji
@@ -384,3 +385,93 @@ def r_convert_to_os_template_image(snapshot_id, disk_uuid):
         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', 10))
+    keyword = request.args.get('keyword', None)
+    order_by = request.args.get('order_by', None)
+    order = request.args.get('order', 'desc')
+
+    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__())
+
+    if order_by is not None:
+        args.append('order_by=' + order_by)
+
+    if order is not None:
+        args.append('order=' + order)
+
+    snapshots_url = url_for('api_snapshots.r_get_by_filter', _external=True)
+    if keyword is not None:
+        snapshots_url = url_for('api_snapshots.r_content_search', _external=True)
+
+    if args.__len__() > 0:
+        snapshots_url = snapshots_url + '?' + '&'.join(args)
+
+    snapshots_ret = requests.get(url=snapshots_url, cookies=request.cookies)
+    snapshots_ret = json.loads(snapshots_ret.content)
+
+    guests_uuid = list()
+
+    for snapshot in snapshots_ret['data']:
+        guests_uuid.append(snapshot['guest_uuid'])
+
+    guests, _ = Guest.get_by_filter(filter_str='uuid:in:' + ','.join(guests_uuid))
+
+    # Guest uuid 与 Guest 的映射
+    guests_mapping_by_uuid = dict()
+    for guest in guests:
+        guests_mapping_by_uuid[guest['uuid']] = guest
+
+    for i, snapshot in enumerate(snapshots_ret['data']):
+        if snapshot['guest_uuid'].__len__() == 36:
+            snapshots_ret['data'][i]['guest'] = guests_mapping_by_uuid[snapshot['guest_uuid']]
+
+    last_page = int(ceil(1 / float(page_size)))
+    page_length = 5
+    pages = list()
+    if page < int(ceil(page_length / 2.0)):
+        for i in range(1, page_length + 1):
+            pages.append(i)
+            if i == last_page or last_page == 0:
+                break
+
+    elif last_page - page < page_length / 2:
+        for i in range(last_page - page_length + 1, last_page + 1):
+            if i < 1:
+                continue
+            pages.append(i)
+
+    else:
+        for i in range(page - page_length / 2, page + int(ceil(page_length / 2.0))):
+            pages.append(i)
+            if i == last_page or last_page == 0:
+                break
+
+    ret = dict()
+    ret['state'] = ji.Common.exchange_state(20000)
+
+    ret['data'] = {
+        'snapshots': snapshots_ret['data'],
+        'paging': snapshots_ret['paging'],
+        'guests_mapping_by_uuid': guests_mapping_by_uuid,
+        'page': page,
+        'page_size': page_size,
+        'keyword': keyword,
+        'pages': pages,
+        'last_page': last_page,
+        'order_by': order_by,
+        'order': order
+    }
+
+    return ret
+
+

+ 1 - 0
api_route_table.py

@@ -176,6 +176,7 @@ add_rule_api(snapshot.blueprints, '/_mapping_by_disks_uuid/<disks_uuid>',
              api_func='snapshot.r_get_snapshots_by_disks_uuid', methods=['GET'])
 add_rule_api(snapshot.blueprint, '/_convert_to_os_template_image/<snapshot_id>/<disk_uuid>',
              api_func='snapshot.r_convert_to_os_template_image', methods=['PUT'])
+add_rule_api(snapshot.blueprints, '/_show', api_func='snapshot.r_show', methods=['GET'])
 
 # Guest 性能查询
 add_rule_api(guest_performance.blueprint, '/cpu_memory',

+ 2 - 2
templates/snapshots_show.html

@@ -375,7 +375,7 @@
                 </tr>
                 </thead>
                 <tbody>
-                {% for item in snapshots_ret.data %}
+                {% for item in snapshots %}
                 <tr role="row" class="odd" onmouseover="row_onmouseover(this);" onmouseout="row_onmouseout(this);">
                     <td style="display: none;">{{ item.snapshot_id }}</td>
                     <td><input title="选中" type="checkbox"></td>
@@ -439,7 +439,7 @@
                                 <div class="col-sm-6">
                                 </div>
                                 <div class="col-sm-3" style="font-size: 12px; padding-top: 5px; text-align: right;">
-                                    共有{{ snapshots_ret.paging.total }}条,每页显示:
+                                    共有{{ paging.total }}条,每页显示:
                                     <select id="page_size" name="datatable-row-highlight_length" title="page_size" class="form-control" style="height: 22px; vertical-align: baseline;">
                                         <option value="10" {% if page_size == 10 %} selected {% endif %}>10</option>
                                         <option value="20" {% if page_size == 20 %} selected {% endif %}>20</option>

+ 14 - 75
views/snapshot.py

@@ -3,9 +3,8 @@
 
 
 import json
-from flask import Blueprint, render_template, url_for, request, redirect
+from flask import Blueprint, render_template, url_for, request
 import requests
-from math import ceil
 
 
 __author__ = 'James Iter'
@@ -28,82 +27,22 @@ 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)
-    order_by = request.args.get('order_by', None)
-    order = request.args.get('order', 'desc')
+    url = url_for('api_snapshots.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)
 
-    if order_by is not None:
-        args.append('order_by=' + order_by)
-
-    if order is not None:
-        args.append('order=' + order)
-
-    host_url = request.host_url.rstrip('/')
-    snapshots_url = host_url + url_for('api_snapshots.r_get_by_filter')
-    if keyword is not None:
-        snapshots_url = host_url + url_for('api_snapshots.r_content_search')
-
-    if args.__len__() > 0:
-        snapshots_url = snapshots_url + '?' + '&'.join(args)
-
-    snapshots_ret = requests.get(url=snapshots_url, cookies=request.cookies)
-    snapshots_ret = json.loads(snapshots_ret.content)
-
-    guests_uuid = list()
-
-    for snapshot in snapshots_ret['data']:
-        guests_uuid.append(snapshot['guest_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)
-
-    # Guest uuid 与 Guest 的映射
-    guests_mapping_by_uuid = dict()
-    for guest in guests_ret['data']:
-        guests_mapping_by_uuid[guest['uuid']] = guest
-
-    for i, snapshot in enumerate(snapshots_ret['data']):
-        if snapshot['guest_uuid'].__len__() == 36:
-            snapshots_ret['data'][i]['guest'] = guests_mapping_by_uuid[snapshot['guest_uuid']]
-
-    last_page = int(ceil(1 / float(page_size)))
-    page_length = 5
-    pages = list()
-    if page < int(ceil(page_length / 2.0)):
-        for i in range(1, page_length + 1):
-            pages.append(i)
-            if i == last_page or last_page == 0:
-                break
-
-    elif last_page - page < page_length / 2:
-        for i in range(last_page - page_length + 1, last_page + 1):
-            if i < 1:
-                continue
-            pages.append(i)
-
-    else:
-        for i in range(page - page_length / 2, page + int(ceil(page_length / 2.0))):
-            pages.append(i)
-            if i == last_page or last_page == 0:
-                break
-
-    return render_template('snapshots_show.html',
-                           page=page, page_size=page_size, keyword=keyword, pages=pages, order_by=order_by, order=order,
-                           last_page=last_page, snapshots_ret=snapshots_ret,
-                           guests_mapping_by_uuid=guests_mapping_by_uuid)
+    return render_template('snapshots_show.html', paging=ret['data']['paging'],
+                           page=ret['data']['page'], page_size=ret['data']['page_size'], keyword=ret['data']['keyword'],
+                           pages=ret['data']['pages'], order_by=ret['data']['order_by'], order=ret['data']['order'],
+                           last_page=ret['data']['last_page'], snapshots=ret['data']['snapshots'],
+                           guests_mapping_by_uuid=ret['data']['guests_mapping_by_uuid'])