# -*- coding: utf-8 -*-
"""
Module implementing Form.
"""
import sys
from xlwt import Workbook
import datetime
import requests
from requests.auth import HTTPDigestAuth
from xmltodict import parse
from PyQt5.QtWidgets import QApplication,QWidget
from PyQt5.QtCore import pyqtSlot
from PyQt5 import QtCore, QtGui, QtWidgets
#Ui_Form类是PYQT5的UI设计窗口
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(997, 524)
self.pushButton = QtWidgets.QPushButton(Form)
self.pushButton.setGeometry(QtCore.QRect(440, 170, 111, 31))
self.pushButton.setObjectName("pushButton")
self.lineEdit = QtWidgets.QLineEdit(Form)
self.lineEdit.setGeometry(QtCore.QRect(440, 70, 121, 21))
self.lineEdit.setObjectName("lineEdit")
self.lineEdit_2 = QtWidgets.QLineEdit(Form)
self.lineEdit_2.setGeometry(QtCore.QRect(440, 120, 121, 21))
self.lineEdit_2.setEchoMode(QtWidgets.QLineEdit.Password)
self.lineEdit_2.setObjectName("lineEdit_2")
self.textBrowser = QtWidgets.QTextBrowser(Form)
self.textBrowser.setGeometry(QtCore.QRect(40, 250, 901, 201))
self.textBrowser.setObjectName("textBrowser")
self.label = QtWidgets.QLabel(Form)
self.label.setGeometry(QtCore.QRect(370, 80, 54, 12))
self.label.setObjectName("label")
self.label_2 = QtWidgets.QLabel(Form)
self.label_2.setGeometry(QtCore.QRect(370, 120, 61, 21))
self.label_2.setObjectName("label_2")
self.horizontalLayoutWidget = QtWidgets.QWidget(Form)
self.horizontalLayoutWidget.setGeometry(QtCore.QRect(40, 190, 896, 101))
self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget")
self.horizontalLayout = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget)
self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
self.horizontalLayout.setObjectName("horizontalLayout")
self.label_3 = QtWidgets.QLabel(self.horizontalLayoutWidget)
self.label_3.setObjectName("label_3")
self.horizontalLayout.addWidget(self.label_3)
self.label_4 = QtWidgets.QLabel(self.horizontalLayoutWidget)
self.label_4.setObjectName("label_4")
self.horizontalLayout.addWidget(self.label_4)
self.label_6 = QtWidgets.QLabel(self.horizontalLayoutWidget)
self.label_6.setObjectName("label_6")
self.horizontalLayout.addWidget(self.label_6)
self.label_7 = QtWidgets.QLabel(self.horizontalLayoutWidget)
self.label_7.setObjectName("label_7")
self.horizontalLayout.addWidget(self.label_7)
self.label_8 = QtWidgets.QLabel(self.horizontalLayoutWidget)
self.label_8.setObjectName("label_8")
self.horizontalLayout.addWidget(self.label_8)
self.label_9 = QtWidgets.QLabel(self.horizontalLayoutWidget)
self.label_9.setObjectName("label_9")
self.horizontalLayout.addWidget(self.label_9)
self.label_10 = QtWidgets.QLabel(self.horizontalLayoutWidget)
self.label_10.setObjectName("label_10")
self.horizontalLayout.addWidget(self.label_10)
self.label_11 = QtWidgets.QLabel(self.horizontalLayoutWidget)
self.label_11.setObjectName("label_11")
self.horizontalLayout.addWidget(self.label_11)
self.label_12 = QtWidgets.QLabel(self.horizontalLayoutWidget)
self.label_12.setObjectName("label_12")
self.horizontalLayout.addWidget(self.label_12)
self.label_13 = QtWidgets.QLabel(self.horizontalLayoutWidget)
self.label_13.setObjectName("label_13")
self.horizontalLayout.addWidget(self.label_13)
self.label_14 = QtWidgets.QLabel(self.horizontalLayoutWidget)
self.label_14.setObjectName("label_14")
self.horizontalLayout.addWidget(self.label_14)
self.label_15 = QtWidgets.QLabel(self.horizontalLayoutWidget)
self.label_15.setObjectName("label_15")
self.horizontalLayout.addWidget(self.label_15)
self.label_16 = QtWidgets.QLabel(self.horizontalLayoutWidget)
self.label_16.setObjectName("label_16")
self.horizontalLayout.addWidget(self.label_16)
self.label_17 = QtWidgets.QLabel(self.horizontalLayoutWidget)
self.label_17.setObjectName("label_17")
self.horizontalLayout.addWidget(self.label_17)
self.lineEdit_3 = QtWidgets.QLineEdit(Form)
self.lineEdit_3.setGeometry(QtCore.QRect(440, 30, 121, 21))
self.lineEdit_3.setObjectName("lineEdit_3")
self.label_5 = QtWidgets.QLabel(Form)
self.label_5.setGeometry(QtCore.QRect(370, 30, 54, 12))
self.label_5.setObjectName("label_5")
self.label_18 = QtWidgets.QLabel(Form)
self.label_18.setGeometry(QtCore.QRect(780, 0, 181, 81))
self.label_18.setObjectName("label_18")
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "云运维中心-周报资源收集(CAS)v0.1"))
self.pushButton.setText(_translate("Form", "开始收集"))
self.label.setText(_translate("Form", "CAS帐号"))
self.label_2.setText(_translate("Form", "CAS密码"))
self.label_3.setText(_translate("Form", "可用域"))
self.label_4.setText(_translate("Form", "CPU可用量"))
self.label_6.setText(_translate("Form", "CPU分配量"))
self.label_7.setText(_translate("Form", "CPU分配比"))
self.label_8.setText(_translate("Form", "内存可用量"))
self.label_9.setText(_translate("Form", "内存分配量"))
self.label_10.setText(_translate("Form", "内存分配比例"))
self.label_11.setText(_translate("Form", "存储总量"))
self.label_12.setText(_translate("Form", "存储分配"))
self.label_13.setText(_translate("Form", "存储分配比例"))
self.label_14.setText(_translate("Form", "存储实际可用"))
self.label_15.setText(_translate("Form", "存储实际利用率"))
self.label_16.setText(_translate("Form", "虚拟机数量"))
self.label_17.setText(_translate("Form", "CVK数量"))
self.label_5.setText(_translate("Form", "CAS IP"))
self.label_18.setText(_translate("Form", "注意:\n"
" 1.确保和CAS的通信正常。\n"
" 2.虚拟机越多收集时间越慢。\n"
" 3.尽量避开业务高峰期使用。\n"
" 4.不要短时间内频繁使用。"))
#From是PYQT5展示窗口
class Form(QWidget, Ui_Form):
"""
Class documentation goes here.
"""
# zhoubaoshouji_str = pyqtSignal(str)
def __init__(self,parent=None):
"""
Constructor
@param parent reference to the parent widget
@type QWidget
"""
super(Form, self).__init__(parent)
self.setupUi(self)
# self.auth_url = auth_url
def auth(self,auth_url):#每次获取CAS API接口需要认证一次
auth_url = "http://"+self.lineEdit_3.text()+auth_url
auth_request = requests.get(auth_url, auth=HTTPDigestAuth(self.lineEdit.text(), self.lineEdit_2.text()))
# print(auth_request.status_code)#判断是否认证通过
auth_parse = parse(auth_request.text)
# auth_parse = str(auth_parse)
# print(auth_parse)
return auth_parse
# def print_test(self):
# # print("print_test")
# a = self.lineEdit.text()
# a = str(a)
# return a
@pyqtSlot()
def on_pushButton_clicked(self):#UI窗口中的按钮触发按钮
"""
Slot documentation goes here.
"""
# TODO: not implemented yet
self.shouji()#调用事件的主体函数
def cas_excel_muban(self):#新建excel模板表格
cas_shouji_muban = ["可用域","CPU可用量","CPU已分配量","CPU已分配比例","物理内存可用量","物理内存已分配量",
"物理内存已分配比例","存储总量","存储已分配容量","存储已分配比例","存储实际可用量",
"存储实际利用率","虚拟机数量","CVK数量","裸金属服务器数量",]
self.cas_shouji = Workbook(encoding='utf-8')
self.sheet1 = self.cas_shouji.add_sheet('CAS可用域信息收集')
for i in range(len(cas_shouji_muban)):
self.sheet1.write(0,i,cas_shouji_muban[i])
def insert_cas_excel_muban(self,y,x_list):#把结果插入相应的excel模板中
for i in range(len(x_list)):
self.sheet1.write(y,i,x_list[i])
def save_cas_excel_muban(self):#把之前插入的表格按照指定的方式保存在C盘,因为发现指定用户运行环境路径去保存会有问题,目前发现的是路径中有中文,所以就指定C盘
now_time = datetime.datetime.now()
now_time_year = now_time.strftime('%Y-%m-%d')
now_time_H = now_time.strftime('%H')
now_time_M = now_time.strftime('%M')
now_time_S = now_time.strftime('%S')
# cas_shouji_path = sys.path[0] + "\cas收集({},{}时{}分{}秒).xlsx".format(now_time_year,now_time_H,now_time_M,now_time_S)
cas_shouji_path = "C:" + "\cas收集({},{}时{}分{}秒).xlsx".format(now_time_year,now_time_H,now_time_M,now_time_S)
self.cas_shouji.save(cas_shouji_path)
def shouji(self):#整个py中的事件的主题,所有接口的获取和处理都在这里面
# shouji_str_list = []
y_num = 1
self.cas_excel_muban()
hostpool_name_auth = self.auth(":8080/cas/casrs/hostpool/all")#先获取主机池的接口信息拿到主机池 ID
hostpool_name_list = hostpool_name_auth['list']['hostPool']
if type(hostpool_name_list) is list:#遍历主机池获取信息
for i in range(len(hostpool_name_list)):
QApplication.processEvents()#pyqt5中通过次方法解决程序UI等待后台执行过程中出现程序等待时间过长出现的“未响应”的问题,可以理解刷新界面
hostpool_name = hostpool_name_auth['list']['hostPool'][i]['name']
hostpool_id = hostpool_name_auth['list']['hostPool'][i]['id']
hostpool_info_summary_auth = self.auth(":8080/cas/casrs/hostpool/summary/{}".format(hostpool_id))
hostpool_cvk_total = int(hostpool_info_summary_auth['list']['keyValue'][0]['value'])
hostpool_cpu_total = int(hostpool_info_summary_auth['list']['keyValue'][1]['value'])
hostpool_mem_total = hostpool_info_summary_auth['list']['keyValue'][2]['value']
if "TB" in hostpool_mem_total:
hostpool_mem_total = str(hostpool_mem_total).replace("TB","")
hostpool_mem_total = float(hostpool_mem_total) * 1024
hostpool_mem_total = int(hostpool_mem_total//1)
else:
hostpool_mem_total = str(hostpool_mem_total).replace("GB","")
hostpool_mem_total = float(hostpool_mem_total)
hostpool_mem_total = int(hostpool_mem_total//1)
hostpool_vm_total = int(hostpool_info_summary_auth['list']['keyValue'][5]['value'])
# print( hostpool_cvk_total,hostpool_cpu_total,hostpool_mem_total, hostpool_vm_total)
if int(hostpool_vm_total) == 0:#防止主机池下没有虚拟机的场景
QApplication.processEvents()
hostpool_vm_cpu_use = 0
hostpool_vm_cpu_per = 0
hostpool_vm_mem_use = 0
hostpool_vm_mem_per = 0
hostpool_vm_stor_beifenpei = 0
hostpool_vm_stor_beifenpei_per = 0
hostpool_cvk_stor_free = 0
hostpool_vm_stor_acutal_per = 0
hostpool_vm_total = 0
hostpool_vm_auth = self.auth(":8080/cas/casrs/hostpool/host/{}?&offset=0&limit=50".format(hostpool_id))
hostpool_cvk_id = hostpool_vm_auth['list']['host']['id']
else:
#获取主机池下虚拟机信息
hostpool_vm_auth = self.auth(":8080/cas/casrs/vm/vmList?hpId={}".format(hostpool_id))
hostpool_vm_auth_list = hostpool_vm_auth['list']['domain']
hostpool_vm_cpu_use = 0
hostpool_vm_mem_use = 0
hostpool_vm_stor_beifenpei = 0
for i in range(len(hostpool_vm_auth_list)):
vm_stor = 0
QApplication.processEvents()
hostpool_cvk_id = hostpool_vm_auth['list']['domain'][0]['hostId']
hostpool_vm_cpu = int(hostpool_vm_auth['list']['domain'][i]['cpu'])
hostpool_vm_mem = int(hostpool_vm_auth['list']['domain'][i]['memory'])
hostpool_vm_id = int(hostpool_vm_auth['list']['domain'][i]['id'])
# 下面是通过遍历所有主机池的虚拟机详细信息,拿到磁盘的分配大小,但是太消耗时间了。
hostpool_vm_detail_auth = self.auth(":8080/cas/casrs/vm/{}".format(hostpool_vm_id))
# print(hostpool_vm_detail_auth)
if type(hostpool_vm_detail_auth['domain']['storage']) is list:
for i in range(len(hostpool_vm_detail_auth['domain']['storage'])):
vm_stor = vm_stor + float(hostpool_vm_detail_auth['domain']['storage'][i]['capacity'])
# print(vm_stor)
else:
vm_stor = float(hostpool_vm_detail_auth['domain']['storage']['capacity'])
# print(vm_stor)
hostpool_vm_cpu_use =hostpool_vm_cpu_use + hostpool_vm_cpu
hostpool_vm_mem_use = hostpool_vm_mem_use + hostpool_vm_mem
hostpool_vm_stor_beifenpei = hostpool_vm_stor_beifenpei + vm_stor
QApplication.processEvents()
# hostpool_vm_stor_beifenpei_per = hostpool_vm_stor_beifenpei
hostpool_vm_stor_beifenpei = int(hostpool_vm_stor_beifenpei//1024)
# hostpool_vm_stor_beifenpei = int(hostpool_vm_stor_beifenpei//1)
hostpool_vm_mem_use = int(hostpool_vm_mem_use//1024)
hostpool_vm_cpu_per = hostpool_vm_cpu_use/float(hostpool_cpu_total)
hostpool_vm_cpu_per = round(hostpool_vm_cpu_per*100,2)
# hostpool_vm_cpu_per = str(hostpool_vm_cpu_per * 100) + "%"
hostpool_vm_mem_per = hostpool_vm_mem_use/float(hostpool_mem_total)
hostpool_vm_mem_per = round(hostpool_vm_mem_per*100,2)
# hostpool_vm_mem_per = str(hostpool_vm_mem_per* 100) + "%"
hostpool_cvk_auth = self.auth(":8080/cas/casrs/host/id/{}/storage".format(hostpool_cvk_id))#只有该接口获取主机池共享存储。
if hostpool_cvk_auth['list'] == None:#放置改CVK的只有一个共享存储的场景,
hostpool_cvk_stor_total = 0
hostpool_cvk_stor_free = 0
hostpool_vm_stor_beifenpei_per = 0
hostpool_vm_stor_acutal_per = 0
else:
hostpool_cvk_list = hostpool_cvk_auth['list']['storagePool']
hostpool_cvk_stor_total = 0
hostpool_cvk_stor_free = 0
if type(hostpool_cvk_list) is list:
for i in range(len(hostpool_cvk_list)):
hostpool_cvk_stor_total = hostpool_cvk_stor_total + int(hostpool_cvk_list[i]['totalSize'])
hostpool_cvk_stor_free = hostpool_cvk_stor_free + int(hostpool_cvk_list[i]['freeSize'])
else:
hostpool_cvk_stor_total = int(hostpool_cvk_list['totalSize'])
hostpool_cvk_stor_free = int(hostpool_cvk_list['freeSize'])
QApplication.processEvents()
hostpool_cvk_stor_total = int(hostpool_cvk_stor_total//1024)
hostpool_cvk_stor_free = int(hostpool_cvk_stor_free//1024)
hostpool_vm_stor_beifenpei_per = hostpool_vm_stor_beifenpei/float(hostpool_cvk_stor_total)
hostpool_vm_stor_beifenpei_per = round(hostpool_vm_stor_beifenpei_per*100,2)
hostpool_vm_stor_acutal_per = (hostpool_cvk_stor_total-hostpool_cvk_stor_free)/float(hostpool_cvk_stor_total)
hostpool_vm_stor_acutal_per = round(hostpool_vm_stor_acutal_per*100,2)
shouji_str = "{} {} {} {:.2f}% {} {} {:.2f}% {} {} {:.2f}% {} {:.2f}% {} {}".format(hostpool_name,hostpool_cpu_total,hostpool_vm_cpu_use,hostpool_vm_cpu_per,hostpool_mem_total,
hostpool_vm_mem_use,hostpool_vm_mem_per,hostpool_cvk_stor_total,hostpool_vm_stor_beifenpei,
hostpool_vm_stor_beifenpei_per,hostpool_cvk_stor_free,hostpool_vm_stor_acutal_per,hostpool_vm_total,
hostpool_cvk_total)
hostpool_vm_cpu_per_str = str(hostpool_vm_cpu_per)+"%"
hostpool_vm_mem_per_str = str(hostpool_vm_mem_per)+"%"
hostpool_vm_stor_beifenpei_per_str = str(hostpool_vm_stor_beifenpei_per)+"%"
hostpool_vm_stor_acutal_per_str = str(hostpool_vm_stor_acutal_per)+"%"
cas_shouji_list = [hostpool_name,hostpool_cpu_total,hostpool_vm_cpu_use,hostpool_vm_cpu_per_str,hostpool_mem_total,
hostpool_vm_mem_use,hostpool_vm_mem_per_str,hostpool_cvk_stor_total,hostpool_vm_stor_beifenpei,
hostpool_vm_stor_beifenpei_per_str,hostpool_cvk_stor_free,hostpool_vm_stor_acutal_per_str,hostpool_vm_total,
hostpool_cvk_total]
print(cas_shouji_list)
# print(shouji_str)
# shouji_str_list.append(shouji_str)
QApplication.processEvents()
self.textBrowser.append(shouji_str)
# print(y_num,cas_shouji_list)
self.insert_cas_excel_muban(y_num,cas_shouji_list)
QApplication.processEvents()
y_num = y_num +1
else:#考虑只有一个主机池的场景
self.cas_excel_muban()
hostpool_name = hostpool_name_auth['list']['hostPool']['name']
hostpool_id = hostpool_name_auth['list']['hostPool']['id']
hostpool_info_summary_auth = self.auth(":8080/cas/casrs/hostpool/summary/{}".format(hostpool_id))
hostpool_cvk_total = int(hostpool_info_summary_auth['list']['keyValue'][0]['value'])
hostpool_cpu_total = int(hostpool_info_summary_auth['list']['keyValue'][1]['value'])
hostpool_mem_total = hostpool_info_summary_auth['list']['keyValue'][2]['value']
if "TB" in hostpool_mem_total:
hostpool_mem_total = str(hostpool_mem_total).replace("TB","")
hostpool_mem_total = float(hostpool_mem_total) * 1024
hostpool_mem_total = int(hostpool_mem_total//1)
else:
hostpool_mem_total = str(hostpool_mem_total).replace("GB","")
hostpool_mem_total = float(hostpool_mem_total)
hostpool_mem_total = int(hostpool_mem_total//1)
hostpool_vm_total = int(hostpool_info_summary_auth['list']['keyValue'][5]['value'])
# print( hostpool_cvk_total,hostpool_cpu_total,hostpool_mem_total, hostpool_vm_total)
if int(hostpool_vm_total) == 0:
QApplication.processEvents()
hostpool_vm_cpu_use = 0
hostpool_vm_cpu_per = 0
hostpool_vm_mem_use = 0
hostpool_vm_mem_per = 0
hostpool_vm_stor_beifenpei = 0
hostpool_vm_stor_beifenpei_per = 0
hostpool_cvk_stor_free = 0
hostpool_vm_stor_acutal_per = 0
hostpool_vm_total = 0
hostpool_vm_auth = self.auth(":8080/cas/casrs/hostpool/host/{}?&offset=0&limit=50".format(hostpool_id))
hostpool_cvk_id = hostpool_vm_auth['list']['host']['id']
else:
#获取主机池下虚拟机信息
hostpool_vm_auth = self.auth(":8080/cas/casrs/vm/vmList?hpId={}".format(hostpool_id))
hostpool_vm_auth_list = hostpool_vm_auth['list']['domain']
hostpool_vm_cpu_use = 0
hostpool_vm_mem_use = 0
hostpool_vm_stor_beifenpei = 0
for i in range(len(hostpool_vm_auth_list)):
vm_stor = 0
QApplication.processEvents()
hostpool_cvk_id = hostpool_vm_auth['list']['domain'][0]['hostId']
hostpool_vm_cpu = int(hostpool_vm_auth['list']['domain'][i]['cpu'])
hostpool_vm_mem = int(hostpool_vm_auth['list']['domain'][i]['memory'])
hostpool_vm_id = int(hostpool_vm_auth['list']['domain'][i]['id'])
# 下面是通过遍历所有主机池的虚拟机详细信息,拿到磁盘的分配大小,但是太消耗时间了。
hostpool_vm_detail_auth = self.auth(":8080/cas/casrs/vm/{}".format(hostpool_vm_id))
# print(hostpool_vm_detail_auth)
if type(hostpool_vm_detail_auth['domain']['storage']) is list:
for i in range(len(hostpool_vm_detail_auth['domain']['storage'])):
vm_stor = vm_stor + float(hostpool_vm_detail_auth['domain']['storage'][i]['capacity'])
# print(vm_stor)
else:
vm_stor = float(hostpool_vm_detail_auth['domain']['storage']['capacity'])
# print(vm_stor)
hostpool_vm_cpu_use =hostpool_vm_cpu_use + hostpool_vm_cpu
hostpool_vm_mem_use = hostpool_vm_mem_use + hostpool_vm_mem
hostpool_vm_stor_beifenpei = hostpool_vm_stor_beifenpei + vm_stor
QApplication.processEvents()
hostpool_vm_stor_beifenpei = int(hostpool_vm_stor_beifenpei//1024)
# hostpool_vm_stor_beifenpei_per = hostpool_vm_stor_beifenpei
hostpool_vm_mem_use = int(hostpool_vm_mem_use/1024)
hostpool_vm_cpu_per = hostpool_vm_cpu_use/float(hostpool_cpu_total)
hostpool_vm_cpu_per = round(hostpool_vm_cpu_per*100,2)
# hostpool_vm_cpu_per = str(hostpool_vm_cpu_per * 100) + "%"
hostpool_vm_mem_per = hostpool_vm_mem_use/float(hostpool_mem_total)
hostpool_vm_mem_per = round(hostpool_vm_mem_per*100,2)
# hostpool_vm_mem_per = str(hostpool_vm_mem_per* 100) + "%"
hostpool_cvk_auth = self.auth(":8080/cas/casrs/host/id/{}/storage".format(hostpool_cvk_id))
if hostpool_cvk_auth['list'] == None:
hostpool_cvk_stor_total = 0
hostpool_cvk_stor_free = 0
hostpool_vm_stor_beifenpei_per = 0
hostpool_vm_stor_acutal_per = 0
else:
hostpool_cvk_list = hostpool_cvk_auth['list']['storagePool']
hostpool_cvk_stor_total = 0
hostpool_cvk_stor_free = 0
if type(hostpool_cvk_list) is list:
for i in range(len(hostpool_cvk_list)):
hostpool_cvk_stor_total = hostpool_cvk_stor_total + int(hostpool_cvk_list[i]['totalSize'])
hostpool_cvk_stor_free = hostpool_cvk_stor_free + int(hostpool_cvk_list[i]['freeSize'])
else:
hostpool_cvk_stor_total = int(hostpool_cvk_list['totalSize'])
hostpool_cvk_stor_free = int(hostpool_cvk_list['freeSize'])
QApplication.processEvents()
hostpool_cvk_stor_total = int(hostpool_cvk_stor_total//1024)
hostpool_cvk_stor_free = int(hostpool_cvk_stor_free//1024)
hostpool_vm_stor_beifenpei_per = hostpool_vm_stor_beifenpei/float(hostpool_cvk_stor_total)
hostpool_vm_stor_beifenpei_per = round(hostpool_vm_stor_beifenpei_per*100,2)
hostpool_vm_stor_acutal_per = (hostpool_cvk_stor_total-hostpool_cvk_stor_free)/float(hostpool_cvk_stor_total)
hostpool_vm_stor_acutal_per = round(hostpool_vm_stor_acutal_per*100,2)
shouji_str = "{} {} {} {:.2f}% {} {} {:.2f}% {} {} {:.2f}% {} {:.2f}% {} {}".format(hostpool_name,hostpool_cpu_total,hostpool_vm_cpu_use,hostpool_vm_cpu_per,hostpool_mem_total,
hostpool_vm_mem_use,hostpool_vm_mem_per,hostpool_cvk_stor_total,hostpool_vm_stor_beifenpei,
hostpool_vm_stor_beifenpei_per,hostpool_cvk_stor_free,hostpool_vm_stor_acutal_per,hostpool_vm_total,
hostpool_cvk_total)
hostpool_vm_cpu_per_str = str(hostpool_vm_cpu_per)+"%"
hostpool_vm_mem_per_str = str(hostpool_vm_mem_per)+"%"
hostpool_vm_stor_beifenpei_per_str = str(hostpool_vm_stor_beifenpei_per)+"%"
hostpool_vm_stor_acutal_per_str = str(hostpool_vm_stor_acutal_per)+"%"
cas_shouji_list = [hostpool_name,hostpool_cpu_total,hostpool_vm_cpu_use,hostpool_vm_cpu_per_str,hostpool_mem_total,
hostpool_vm_mem_use,hostpool_vm_mem_per_str,hostpool_cvk_stor_total,hostpool_vm_stor_beifenpei,
hostpool_vm_stor_beifenpei_per_str,hostpool_cvk_stor_free,hostpool_vm_stor_acutal_per_str,hostpool_vm_total,
hostpool_cvk_total]
print(cas_shouji_list)
# print(shouji_str)
# shouji_str_list.append(shouji_str)
QApplication.processEvents()
self.textBrowser.append(shouji_str)
# print(y_num,cas_shouji_list)
self.insert_cas_excel_muban(1,cas_shouji_list)
QApplication.processEvents()
self.save_cas_excel_muban()
if __name__=='__main__':
app=QApplication(sys.argv)
w=Form()
w.show()
app.exec_()