一、Connections

连接函数接口
libvirt.open(name);                   //可读写方式连接上QEMU 参数说明: name:连接名称
libvirt.openAuth(uri, auth, flags);          //认证方式连接上QEMU      参数说明: uri:连接到Hypervisor的入口地址
libvirt.openReadOnly(name)               //可读方式连接上QEMU          
# Example-.py
from __future__ import print_function
import sys
import libvirt
conn = libvirt.open('qemu:///system')                            //可读写方式连接上hypervisor(QEMU)
if conn == None:
  print('Failed to open connection to qemu:///system', file=sys.stderr)
exit()
conn.close()
exit()
# Example-.py
from __future__ import print_function
import sys
import libvirt
conn = libvirt.openReadOnly('qemu:///system')                      //只读方式连接上hypervisor(QEMU)                                                              
if conn == None:
  print('Failed to open connection to qemu:///system', file=sys.stderr)
exit()
conn.close()
exit() # Example-.py
from __future__ import print_function
import sys
import libvirt
SASL_USER = "my-super-user"
SASL_PASS = "my-super-pass"
def request_cred(credentials, user_data):
  for credential in credentials:
    if credential[] == libvirt.VIR_CRED_AUTHNAME:
      credential[] = SASL_USER
    elif credential[] == libvirt.VIR_CRED_PASSPHRASE:
      credential[] = SASL_PASS
  return
auth = [[libvirt.VIR_CRED_AUTHNAME, libvirt.VIR_CRED_PASSPHRASE], request_cred, None]
conn = libvirt.openAuth('qemu+tcp://localhost/system', auth, )
if conn == None:
  print('Failed to open connection to qemu+tcp://localhost/system', file=sys.stderr)
exit()
conn.close()

二、Host information

getHostname                    //获取主机名
getMaxVcpus                    //获取支持最大虚拟cpu个数
getInfo     //获取主机内存,CPU 相关信息 **以列表形式存储(list[7])存储8个值 list[0]:cpu平台(x86_64/i382);list[1]:主机内存大小;list[2]:CPU个数;list[3]:CPU频率;list[4]:NUMA节点个数;list[5]:CPU sockets 个数;list[6]:CPU核数;list[7]:CPU超线程核数
Member Description     
list[0] CPU平台
list[1]  主机内存大小
list[2] CPU个数
list[3] CPU频率
list[4] NUMA节点个数
list[5] CPU Sockets 个数
list[6] CPU核数
list[7] CPU超线程核数


                         

getCellsFreeMemory            //每个节点(如 NUMA 节点)空闲内存大小
getType                  //获取虚拟化平台类型
getVersion                //获取版本号 **版本号计算方法:Versions numbers are integers: 1000000*major + 1000*minor + release.
getLibVersion              //获取libvirt 版本号        
getURI                   //获取 libvirt 连接URI 地址             
isEncrypted              //检测连接方式是否加密
isSecure                //检测连接是否安全
isAlive                 //检测是否是连接状态
compareCPU              //设定CPU模式与主机CPU进行对比
getFreeMemory            //返回空间节点内存大小(设定CPU与主机CPU对比之后)      
getFreePages            //获取指定空闲页表大小
getMemoryParameters        //获取内存参数类型
getMemoryStats            //获取节点内存统计信息
getSecurityModel          //获取当前使用的安全模型
getSysinfo             
getCPUMap              //获取主机节点CPU的CPU映射
getCPUStats             //获取CPU统计信息
getCPUModelNames          //获取与CPU体系结构匹配的名称列表
# Example-.py
from __future__ import print_function
import sys
import libvirt
conn = libvirt.open('qemu:///system')
if conn == None:
  print('Failed to open connection to qemu:///system', file=sys.stderr)
  exit() host = conn.getHostname()
print('Hostname:'+host) vcpus = conn.getMaxVcpus(None)
print('Maximum support virtual CPUs: '+str(vcpus)) nodeinfo = conn.getInfo()
print('Model: '+str(nodeinfo[]))
print('Memory size: '+str(nodeinfo[])+'MB')
print('Number of CPUs: '+str(nodeinfo[]))
print('MHz of CPUs: '+str(nodeinfo[]))
print('Number of NUMA nodes: '+str(nodeinfo[]))
print('Number of CPU sockets: '+str(nodeinfo[]))
print('Number of CPU cores per socket: '+str(nodeinfo[]))
print('Number of CPU threads per core: '+str(nodeinfo[])) nodeinfo = conn.getInfo()
numnodes = nodeinfo[]
memlist = conn.getCellsFreeMemory(, numnodes)
cell =
for cellfreemem in memlist:
  print('Node '+str(cell)+': '+str(cellfreemem)+' bytes free memory')
  cell += print('Virtualization type: '+conn.getType()) print('Version: '+str(conn.getVersion())) print('Libvirt Version: '+str(conn.getLibVersion())); print('Canonical URI: '+conn.getURI()) print('Connection is encrypted: '+str(conn.isEncrypted())) print('Connection is secure: '+str(conn.isSecure())) print("Connection is alive = " + str(conn.isAlive())) xml = '<cpu mode="custom" match="exact">' + \
'<model fallback="forbid">kvm64</model>' + \
'</cpu>'
retc = conn.compareCPU(xml)
if retc == libvirt.VIR_CPU_COMPARE_ERROR:
  print("CPUs are not the same or ther was error.")
elif retc == libvirt.VIR_CPU_COMPARE_INCOMPATIBLE:
  print("CPUs are incompatible.")
elif retc == libvirt.VIR_CPU_COMPARE_IDENTICAL:
  print("CPUs are identical.")
elif retc == libvirt.VIR_CPU_COMPARE_SUPERSET:
  print("The host CPU is better than the one specified.")
else:
  print("An Unknown return code was emitted.") print("Free memory on the node (host) is " + str(conn.getFreeMemory()) + " bytes.") pages = []
start =
cellcount =
buf = conn.getFreePages(pages, start, cellcount)
i =
for page in buf:
  print("Page Size: " + str(pages[i]) + " Available pages: " + str(page))
  ++i buf = conn.getMemoryParameters()
for parm in buf:
  print(parm) buf = conn.getMemoryStats(libvirt.VIR_NODE_MEMORY_STATS_ALL_CELLS)
for parm in buf:
  print(parm) model = conn.getSecurityModel()
print(model[] + " " + model[]) xmlInfo = conn.getSysinfo()
print(xmlInfo) map = conn.getCPUMap()
print("CPUs: " + str(map[]))
print("Available: " + str(map[])) stats = conn.getCPUStats()
print("kernel: " + str(stats['kernel']))
print("idle: " + str(stats['idle']))
print("user: " + str(stats['user']))
print("iowait: " + str(stats['iowait'])) models = conn.getCPUModelNames('x86_64')
for model in models:
  print(model) conn.close()
exit()

三、Guest Domains

libvirt_python的更多相关文章

  1. Package libvirt was not found in the pkg-config search path

    关于pip安装libvirt-python的时候提示Package libvirt was not found in the pkg-config search path的问题解决方法 1.一开始以为 ...

随机推荐

  1. WIN7环境变量path误删(windows找不到文件‘%windir%\systempropertiesadvanced.exe’)的解决办法

    一.进入安全模式 1.通过Ctrl+R打开运行窗口,输入Msconfig 2.如上图,选择安全引导,点击确定.重启计算机进入安全模式. 二.在安全模式下,设置环境变量 1.C:\Windows\Sys ...

  2. linux链接库的理解

    前段时间遇到个奇怪的问题,经调试是由于可执行程序A编译时使用的libssl.so.1.1及对应版本头文件,A链接的库libtest.so编译时使用的libssl.so.1.0及对应版本头文件,执行时l ...

  3. 【Python全栈-JavaScript】JavaScript入门

    JavaScript基础知识点 一.JavaScript概述 参考:http://www.w3school.com.cn/b.asp JavaScript的历史 1.1992年Nombas开发出C-m ...

  4. 经典影响力传播模型LT模型、IC模型

    一.LT模型:线性阈值模型 思想:当一个已经激活的节点去试图激活邻居节点而没有成功时,其对邻居节点的影响力被累积而不是被舍弃,这个贡献直到节点被激活或传播过程结束为止.该过程称为‘影响累积’. 过程: ...

  5. springMVC(二): @RequestBody @ResponseBody 注解实现分析

    一.继承结构 @RequestBody.@ResponseBody的处理器:RequestResponseBodyMethodProcessor @ModelAttribute处理器: ModelAt ...

  6. springMVC(一): 整体请求过程概述

    首先用户发送请求,DispatcherServlet实现了Servlet接口 获取url请求对应的处理方法,遍历handlerMappings列表,获取对象HandlerExecutionChain( ...

  7. laravel项目ThinkSNS+安装

    ThinkSNS+ 是一个使用 Laravel 开发,并且功能繁多且健壮的社交程序.今天我们来跟着ytkah一起来尝鲜一下.首先PHP 版本必须大于 7.1.3,已经下载并安装过 Composer,拥 ...

  8. wordpress站内搜索结果页URL伪静态如何操作

    站内搜索页面的优化一直被很多人忽略,只是按cms自带的默认设置,其实搜索结果页是一块宝藏,url重写是提升的重要一步.之前我们写过帝国CMS搜索页伪静态实现方法,那么,wordpress站内搜索结果页 ...

  9. Python识别字符型图片验证码

    前言 验证码是目前互联网上非常常见也是非常重要的一个事物,充当着很多系统的 防火墙 功能,但是随时OCR技术的发展,验证码暴露出来的安全问题也越来越严峻.本文介绍了一套字符验证码识别的完整流程,对于验 ...

  10. Python3学习之路~6.5 私有属性和私有方法

    属性分为静态属性和动态属性,静态属性就是变量,动态属性就是方法.但是一般我们说的属性就是变量,方法就是方法.私有属性/方法就是外面访问不了,只有自己能够访问的属性/方法.如何将属性和方法分别变成私有属 ...