libvirt_python
一、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的更多相关文章
- 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.一开始以为 ...
随机推荐
- /var/run/utmp文件操作函数
相关函数:getutent, getutid, getutline, setutent, endutent, pututline, utmpname utmp 结构定义如下:struct utmp{ ...
- Python内置模块:random,os,sys,和加密模块hashlib
random import random # 导入模块 随机数 import random # 内置的 print(random.random()) #0-1 之间随机小数(18位有效数字) p ...
- oracle创建表空间 授权
--创建表空间 临时表空间 create temporary tablespace xiaodai_temp tempfile '/main/app/oracle/oradata/devdb/xiao ...
- 【托业】【新托业TOEIC新题型真题】学习笔记5-题库二->P7
--------------------------------------单词-------------------------------------- amenity 适意:休闲设施 onsit ...
- wxPython:文本对话框TextEntryDialog
wxTextEntryDialog(wxWindow* parent, const wxString& message, const wxString& caption = " ...
- Redis入门到高可用(四)—— Redis的五种数据结构的内部编码
Redis的五种数据结构的内部编码
- vue常用插件汇总
UI-框架element - 饿了么出品的Vue2的web UI工具套件 mint-ui - Vue 2的移动UI元素 iview - 基于 Vuejs 的开源 UI 组件库 Keen-UI - 轻量 ...
- 入门 Webpack,看这篇就够了
转:https://segmentfault.com/a/1190000006178770 2018年8月25日更新,目前 webpack 已经更新值 4.17.1 ,本文所用到的各种库或多或少有些过 ...
- CMDB资产管理
.传统运维和自动化运维的区别: 传统运维: 1.项目上线: a.产品经理前期调研(需求分析) b.和开发进行评审 c.开发进行开发 d.测试进行测试 e.交给运维人员进行上线 上线: 直接将代码交给运 ...
- Centos7下ups监控apcupsd的使用
什么是UPS UPS-Uninterrupted Power System:利用电池化学能作为后备能量,在市电断电等电网故障时,不间断地为用户设备提供(交流)电能的一种能量转换装置. UPS的主要功能 ...