| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- import json
- from flask import Blueprint, render_template, url_for, request
- import requests
- __author__ = 'James Iter'
- __date__ = '2017/8/17'
- __contact__ = 'james.iter.cn@gmail.com'
- __copyright__ = '(c) 2017 by James Iter.'
- blueprint = Blueprint(
- 'v_dashboard',
- __name__,
- url_prefix='/'
- )
- def show():
- resource_path = request.path
- host_url = request.host_url.rstrip('/')
- hosts_url = host_url + url_for('api_hosts.r_get_by_filter')
- 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')
- hosts_ret = requests.get(url=hosts_url)
- hosts_ret = json.loads(hosts_ret.content)
- guests_distribute_count_ret = requests.get(url=guests_distribute_count_url)
- guests_distribute_count_ret = json.loads(guests_distribute_count_ret.content)
- disks_distribute_count_ret = requests.get(url=disks_distribute_count_url)
- disks_distribute_count_ret = json.loads(disks_distribute_count_ret.content)
- guests_current_top_10_ret = requests.get(url=guests_current_top_10_url)
- 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():
- for item in v:
- if 'guest_uuid' not in item:
- break
- 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_ret = requests.get(url=guests_url)
- 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
- hosts_sum = {'cpu': 0, 'memory': 0}
- for host in hosts_ret['data']:
- hosts_sum['cpu'] += host['cpu']
- hosts_sum['memory'] += host['memory']
- return render_template('dashboard.html', hosts_sum=hosts_sum, resource_path=resource_path,
- guests_distribute_count_ret=guests_distribute_count_ret,
- disks_distribute_count_ret=disks_distribute_count_ret,
- guests_current_top_10_ret=guests_current_top_10_ret,
- guests_mapping_by_uuid=guests_mapping_by_uuid)
|