pythhon_周报收集&excel

复制代码
# -*- 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_()
复制代码

 

posted @   Bingo_Python  阅读(49)  评论(0编辑  收藏  举报
编辑推荐:
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
阅读排行:
· 为DeepSeek添加本地知识库
· .NET程序员AI开发基座:Microsoft.Extensions.AI
· 精选4款基于.NET开源、功能强大的通讯调试工具
· 数据不出内网:基于Ollama+OneAPI构建企业专属DeepSeek智能中台
· 大模型工具KTransformer的安装
点击右上角即可分享
微信分享提示