通过python-libvirt管理KVM虚拟机 源码
Posted 朝阳的向日葵
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过python-libvirt管理KVM虚拟机 源码相关的知识,希望对你有一定的参考价值。
版本:0.9.13
libvirt库可真是大,先看看该版本里面都有哪些类和方法,验证过的方法我会用O开头,|开头的标示还没亲自验证过。
- <span style="font-size:18px;">CLASSES
- virConnect
- virDomain
- virDomainSnapshot
- virInterface
- virNWFilter
- virNetwork
- virNodeDevice
- virSecret
- virStoragePool
- virStorageVol
- virStream
- class virConnect
- | __del__(self)
- | __init__(self, _obj=None)
- | baselineCPU(self, xmlCPUs, flags)
- | changeBegin(self, flags)
- | changeCommit(self, flags)
- | changeRollback(self, flags)
- | close(self)
- | compareCPU(self, xmlDesc, flags)
- | createLinux(self, xmlDesc, flags)
- | createXML(self, xmlDesc, flags)
- | defineXML(self, xml)
- | dispatchDomainEventBlockPullCallback(self, dom, path, type, status, cbData)
- | domainEventDeregister(self, cb)
- | domainEventDeregisterAny(self, callbackID)
- | domainEventRegister(self, cb, opaque)
- | domainEventRegisterAny(self, dom, eventID, cb, opaque)
- | domainXMLFromNative(self, nativeFormat, nativeConfig, flags)
- | domainXMLToNative(self, nativeFormat, domainXml, flags)
- | findStoragePoolSources(self, type, srcSpec, flags)
- | getCPUStats(self, cpuNum, flags)
- o getCapabilities(self)
- | getCellsFreeMemory(self, startCell, maxCells)
- o getFreeMemory(self) 6663041024 bytes
- o getHostname(self) client
- o getInfo(self) [‘x86_64‘, 7846, 4, 2394, 1, 1, 4, 1]
- o getLibVersion(self) 9013 ------0.9.13-0ubuntu12.2
- | getMaxVcpus(self, type) 160----type是xml配置文件中domain参数的值
- | getMemoryStats(self, cellNum, flags)
- o getSysinfo(self, flags)
- o getType(self) QEMU
- o getURI(self) qemu:///system
- o getVersion(self) 1002000
- | interfaceDefineXML(self, xml, flags)
- | interfaceLookupByMACString(self, macstr)
- | interfaceLookupByName(self, name)
- o isAlive(self) 1
- o isEncrypted(self) 0
- o isSecure(self) 1
- o listAllDomains(self, flags)
- o listDefinedDomains(self) [‘kvm-t1‘] 列出offline的domains
- o listDefinedInterfaces(self) []
- o listDefinedNetworks(self) [‘default‘]
- o listDefinedStoragePools(self) []
- | listDevices(self, cap, flags)
- o listDomainsID(self) [2, 3]
- o listInterfaces(self) [‘br0‘, ‘lo‘]
- o listNWFilters(self)
- o listNetworks(self)
- o listSecrets(self)
- o listStoragePools(self)
- o lookupByID(self, id)
- o lookupByName(self, name)
- | lookupByUUID(self, uuid)
- o lookupByUUIDString(self, uuidstr)
- | migrate(self, domain, flags, dname, uri, bandwidth)
- | migrate2(self, domain, dxml, flags, dname, uri, bandwidth)
- | networkCreateXML(self, xmlDesc)
- | networkDefineXML(self, xml)
- | networkLookupByName(self, name)
- | networkLookupByUUID(self, uuid)
- | networkLookupByUUIDString(self, uuidstr)
- | newStream(self, flags)
- | nodeDeviceCreateXML(self, xmlDesc, flags)
- | nodeDeviceLookupByName(self, name)
- | numOfDefinedDomains(self)
- | numOfDefinedInterfaces(self)
- | numOfDefinedNetworks(self)
- | numOfDefinedStoragePools(self)
- | numOfDevices(self, cap, flags)
- | numOfDomains(self)
- | numOfInterfaces(self)
- | numOfNWFilters(self)
- | numOfNetworks(self)
- | numOfSecrets(self)
- | numOfStoragePools(self)
- | nwfilterDefineXML(self, xmlDesc)
- | nwfilterLookupByName(self, name)
- | nwfilterLookupByUUID(self, uuid)
- | nwfilterLookupByUUIDString(self, uuidstr)
- | restore(self, frm)
- | restoreFlags(self, frm, dxml, flags)
- | saveImageDefineXML(self, file, dxml, flags)
- | saveImageGetXMLDesc(self, file, flags)
- | secretDefineXML(self, xml, flags)
- | secretLookupByUUID(self, uuid)
- | secretLookupByUUIDString(self, uuidstr)
- | secretLookupByUsage(self, usageType, usageID)
- | setKeepAlive(self, interval, count)
- | storagePoolCreateXML(self, xmlDesc, flags)
- | storagePoolDefineXML(self, xml, flags)
- | storagePoolLookupByName(self, name)
- | storagePoolLookupByUUID(self, uuid)
- | storagePoolLookupByUUIDString(self, uuidstr)
- | storageVolLookupByKey(self, key)
- | storageVolLookupByPath(self, path)
- | suspendForDuration(self, target, duration, flags)
- | virConnGetLastError(self)
- | virConnResetLastError(self)
- class virDomain
- o ID(self)
- 获取domainID
- o OSType(self)
- 获取domain的type
- o UUID(self)
- 获取domain的UUID
- o UUIDString(self)
- 以字符串的形式获取domian的UUID
- o XMLDesc(self, flags)
- 提供一个描述domian的xml文件,该文件会在后面用来relanuch domain
- | __del__(self)
- | __init__(self, conn, _obj=None)
- | abortJob(self)
- 快速的终止在后台运行的任务,
- | attachDevice(self, xml)
- 创建一个虚拟设备,挂载到后端,类似于热插拔技术,只被允许在活跃的domian上面
- | attachDeviceFlags(self, xml, flags)
- 挂载一个虚拟设备到domian上面,flags标志控制挂载的方式。
- o autostart(self)
- 获取domian的自启动标志
- | blkioParameters(self, flags)
- 获取blkio参数
- | blockInfo(self, path, flags)
- 获取domian的块设备大小的信息
- | blockIoTune(self, disk, flags)
- | blockJobAbort(self, disk, flags)
- 取消一个活跃的块设备....
- | blockJobInfo(self, path, flags)
- 针对一个块任务获取process信息
- | blockJobSetSpeed(self, disk, bandwidth, flags)
- | blockPeek(self, disk, offset, size, flags)
- 读取domian的disk设备的内容
- | blockPull(self, disk, bandwidth, flags)
- | blockRebase(self, disk, base, bandwidth, flags)
- | blockResize(self, disk, size, flags)
- resize一个domian的块设备大小,在domian运行时。
- | blockStats(self, path)
- 获取一个domain的块设备的统计信息
- | blockStatsFlags(self, path, flags)
- 在domain运行时获取块设备的统计参数
- o controlInfo(self, flags)
- 获取一个domain控制接口的详细信息
- | coreDump(self, to, flags)
- o create(self)
- 创建一个domian,如果成功,则会把domian移动到运行domian池中。
- o createWithFlags(self, flags)
- o destroy(self)
- o destroyFlags(self, flags)
- | detachDevice(self, xml)
- | detachDeviceFlags(self, xml, flags)
- | diskErrors(self, flags)
- 获取disk设备的错误信息
- | getCPUStats(self, total, flags)
- 获取运行domian的cpu的统计信息
- | hasCurrentSnapshot(self, flags)
- 决定domian是否做一个snapshot
- | hasManagedSaveImage(self, flags)
- o info(self) [1, 2097152L, 2097152L, 1, 459250000000L]
- 获取一个domian的信息
- | injectNMI(self, flags)
- | interfaceParameters(self, device, flags)
- 获取接口设备的带宽
- o interfaceStats(self, path) (119092654L, 1179917L, 0L, 0L, 723682L, 9669L, 0L, 0L)---interfaceStats(‘vnet0‘) vnet0通过XMLDesc获取
- 获取一个domian的接口设备的统计信息
- o isActive(self)
- 判断一个domian是否在运行
- o isPersistent(self)
- 判断一个domian是否和配置文件是强联系的,也就是在shutdown之后他仍旧存在
- o isUpdated(self)
- o jobInfo(self) [0, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L]
- o listAllSnapshots(self, flags)
- 列出所有的快照
- | managedSave(self, flags)
- 该函数会suspend一个domian并且保存他在内存中的东西到磁盘上。
- | managedSaveRemove(self, flags)
- o maxMemory(self)
- 检索分配给该domian的最大物理内存
- o maxVcpus(self)
- 给guest vm提供的最大vcpu数目
- o memoryParameters(self, flags) {‘swap_hard_limit‘: 9007199254740991L, ‘hard_limit‘: 9007199254740991L, ‘soft_limit‘: 9007199254740991L}
- 获取内存参数
- | memoryPeek(self, start, size, flags)
- 读取domain的内存中的数据
- o memoryStats(self) {‘actual‘: 2097152L, ‘rss‘: 375248L}
- 获取一个domain的内存统计信息
- | metadata(self, type, uri, flags)
- | migrate(self, dconn, flags, dname, uri, bandwidth)
- 迁移一个domian从一台host到另一台host
- | migrate2(self, dconn, dxml, flags, dname, uri, bandwidth)
- | migrateGetMaxSpeed(self, flags)
- 获取一个domian当前配置的最大迁移速度
- | migrateSetMaxDowntime(self, downtime, flags)
- | migrateSetMaxSpeed(self, bandwidth, flags)
- | migrateToURI(self, duri, flags, dname, bandwidth)
- | migrateToURI2(self, dconnuri, miguri, dxml, flags, dname, bandwidth)
- o name(self)
- 获取一个domian的公共名称
- | numaParameters(self, flags)
- 获取NUMA参数
- | openConsole(self, dev_name, st, flags)
- | openGraphics(self, idx, fd, flags)
- | pMSuspendForDuration(self, target, duration, flags)
- | pMWakeup(self, flags)
- | pinVcpu(self, vcpu, cpumap)
- | pinVcpuFlags(self, vcpu, cpumap, flags)
- o reboot(self, flags)
- reboot一个domian
- o reset(self, flags)
- 立即reset一个domian
- o resume(self)
- | revertToSnapshot(self, snap, flags)
- o save(self, to)
- | saveFlags(self, to, dxml, flags)
- o schedulerParameters(self) {‘vcpu_quota‘: -1L, ‘vcpu_period‘: 100000L, ‘cpu_shares‘: 1024L}
- 获取调度参数
- o schedulerParametersFlags(self, flags)
- o schedulerType(self)
- 获取调度类型
- | screenshot(self, stream, screen, flags)
- | sendKey(self, codeset, holdtime, keycodes, nkeycodes, flags)
- o setAutostart(self, autostart)
- 配置domian是否在宿主机启动后自启动
- | setBlkioParameters(self, params, flags)
- | setBlockIoTune(self, disk, params, flags)
- | setInterfaceParameters(self, device, params, flags)
- | setMaxMemory(self, memory)
- 动态改变一个domian的最大物理内存
- o setMemory(self, memory)
- 动态改变分配给一个domian的物理内存
- o setMemoryFlags(self, memory, flags)
- | setMemoryParameters(self, params, flags)
- | setMetadata(self, type, metadata, key, uri, flags)
- | setNumaParameters(self, params, flags)
- | setSchedulerParameters(self, params)
- | setSchedulerParametersFlags(self, params, flags)
- | setVcpus(self, nvcpus)
- 动态改变一个domian的vcpus
- | setVcpusFlags(self, nvcpus, flags)
- o shutdown(self)
- 关闭一个domian
- o shutdownFlags(self, flags)
- | snapshotCreateXML(self, xmlDesc, flags)
- | snapshotCurrent(self, flags)
- | snapshotListNames(self, flags)
- | snapshotLookupByName(self, name, flags)
- | snapshotNum(self, flags)
- o state(self, flags)
- 检查一个domian的状态
- o suspend(self)
- suspends一个活跃的domian
- o undefine(self)
- undefine一个domian
- o undefineFlags(self, flags)
- | updateDeviceFlags(self, xml, flags)
- o vcpuPinInfo(self, flags)
- 获取cpu到vcpu的亲和性
- o vcpus(self)
- 获取vcpus的信息
- | vcpusFlags(self, flags)
- 查询一个domian使用了多少个vcpus
- class virDomainSnapshot
- | __del__(self)
- | __init__(self, dom, _obj=None)
- | delete(self, flags)
- 删除一个快照
- | domain(self)
- | getConnect(self)
- | getDomain(self)
- | getName(self)
- | getParent(self, flags)
- | getXMLDesc(self, flags)
- 提供一个描述domian snapshot的xml文件
- | hasMetadata(self, flags)
- | isCurrent(self, flags)
- | listAllChildren(self, flags)
- | listChildrenNames(self, flags)
- | numChildren(self, flags)
- | ref(self)
- class virInterface
- | MACString(self)
- | XMLDesc(self, flags)
- | __del__(self)
- | __init__(self, conn, _obj=None)
- | connect(self)
- | create(self, flags)
- | destroy(self, flags)
- | isActive(self)
- | name(self)
- | undefine(self)
- class virNWFilter
- | UUID(self)
- | UUIDString(self)
- | XMLDesc(self, flags)
- | __del__(self)
- | __init__(self, conn, _obj=None)
- | connect(self)
- | name(self)
- | undefine(self)
- class virNetwork
- | UUID(self)
- | UUIDString(self)
- | XMLDesc(self, flags)
- | __del__(self)
- | __init__(self, conn, _obj=None)
- | autostart(self)
- | bridgeName(self)
- | connect(self)
- | create(self)
- | destroy(self)
- | isActive(self)
- | isPersistent(self)
- | name(self)
- | setAutostart(self, autostart)
- | undefine(self)
- class virNodeDevice
- | XMLDesc(self, flags)
- 获取描述device各个方面信息的xml文件
- | __del__(self)
- | __init__(self, conn, _obj=None)
- | connect(self)
- | destroy(self)
- 破坏device对象,虚拟device会在host的系统中被移除
- | dettach(self)
- | listCaps(self)
- 列出node设备的能力
- | name(self)
- 返回device的名称
- | numOfCaps(self)
- | parent(self)
- | reAttach(self)
- | reset(self)
- class virSecret
- | UUID(self)
- 获取一个secret的UUID
- | UUIDString(self)
- 以字符串的形式获取一个secret的UUID
- | XMLDesc(self, flags)
- 获取一个描述secret的xml文件
- | __del__(self)
- | __init__(self, conn, _obj=None)
- | connect(self)
- | setValue(self, value, flags)
- 使用secret联合一个值
- | undefine(self)
- 删除一个特定的secret
- | usageID(self)
- | usageType(self)
- | value(self, flags)
- 使用secret获取联合的值
- class virStoragePool
- | UUID(self)
- 获取存储池唯一的UUID
- | UUIDString(self)
- 以字符串的形式获取存储池的UUID
- | XMLDesc(self, flags)
- 获取一个描述存储池各个方面信息的xml文件,
- | __del__(self)
- | __init__(self, conn, _obj=None)
- | autostart(self)
- 获取一个存储池的自启动标志
- | build(self, flags)
- 目前只有文件系统池可以接受VIR_STORAGE_POOL_BUILD_OVERWRITE和VIR_STORAGE_POOL_BUILD_NO_OVERWRITE.
- | connect(self)
- | create(self, flags)
- 创建一个不活跃的存储池
- | createXML(self, xmldesc, flags)
- 用xml文件中描述的存储池创建一个存储卷,不是所有的池都支持创建卷
- | createXMLFrom(self, xmldesc, clonevol, flags)
- 在父存储池中创建一个存储卷,
- | delete(self, flags)
- 删除底层资源,该操作时不可恢复的,
- | destroy(self)
- 破坏一个活跃的存储池,他会使host上的池无效,但是会保持配置文件的联系,
- | info(self)
- 获取存储池的信息,
- | isActive(self)
- 探测一个存储池是否在运行
- | isPersistent(self)
- 判断一个存储池是否是配置文件强联系的,就是在shutdown之后仍旧存在。
- | listVolumes(self)
- 列出存储卷
- | name(self)
- 获取存储池本地唯一的名称
- | numOfVolumes(self)
- 获取池中有多少个存储卷
- | refresh(self, flags)
- 请求存储池更新它包含的存储卷
- | setAutostart(self, autostart)
- 设置自启动标志
- | storageVolLookupByName(self, name)
- 在一个存储池中获取一个指向存储卷的指针
- | undefine(self)
- 取消一个不活跃的存储池
- class virStorageVol
- | XMLDesc(self, flags)
- 获取一个描述各个卷存储的xml文件
- | __del__(self)
- | __init__(self, conn, _obj=None)
- | connect(self)
- | delete(self, flags)
- 在存储池中删除卷存储。
- | download(self, stream, offset, length, flags)
- 以流的形式下载卷中的内容,如果length是0,则在offset后面的内容都会被下载。这个调用是异步的
- | info(self)
- 获得关于卷存储的信息,
- | key(self)
- 获取卷存储的key,这个值是全局唯一的,所以相同的卷的值相同。
- | name(self)
- 获取存储卷的名称,该名称在存储池中是唯一的。
- | path(self)
- 获取存储卷的路径,取决于池的配置。既可以固定分配给host也可以动态的分配。
- | resize(self, capacity, flags)
- 改变存储卷vol的容量到capacity,如果新的容量需求超过了空闲的池容量,则会失败。
- | storagePoolLookupByVolume(self)
- 查找一个指定的卷包含在那个存储池中
- | upload(self, stream, offset, length, flags)
- 把一个流的内容上传到卷中。如果offset+length的大小超过了卷的容量,则会失败。
- | wipe(self, flags)
- | wipePattern(self, algorithm, flags)
- 和virStorageVolWipe类似, 但是可以选择不同的wiping 算法。
- class virStream
- | __del__(self)
- | __init__(self, conn, _obj=None)
- | abort(self)
- | connect(self)
- | download(self, vol, offset, length, flags)
- | eventAddCallback(self, events, cb, opaque)
- | eventRemoveCallback(self)
- | eventUpdateCallback(self, events)
- | finish(self)
- | recv(self, nbytes)
- | recvAll(self, handler, opaque)
- | screenshot(self, domain, screen, flags)
- | send(self, data)
- | sendAll(self, handler, opaque)
- | upload(self, vol, offset, length, flags)
- FUNCTIONS
- getVersion(name=None) 如果没有name参数,或者name参数的值是None,则会返回libvirt的version,如果name参数的值是libvirt的lib库中的一个连接,则会返回一个元祖(library version,driver version)。如果name参数传入的是一个不存在的驱动,则会返回‘no support for hypervisor‘.
- open(name)
- 这个函数应该在建立到Hypervisor和xen store的连接时首先被调用。
- openAuth(uri, auth, flags)
- openReadOnly(name)
- 该函数建立一个到lib库函数的受限制的连接,The set of APIs usable are then restricted
- on the available methods to control the domains。查看virConnectOpen了解环境变量,他们可以影响opening 驱动。
- registerErrorHandler(f, ctx)
- 注册一个python函数用来报告error
- virEventAddHandle(fd, events, cb, opaque)
- 注册一个回调函数,用来监控文件句柄
- @fd: file handle to monitor for events
- @events: bitset of events to watch from virEventHandleType constants
- @cb: callback to invoke when an event occurs
- @opaque: user data to pass to callback
- virEventAddTimeout(timeout, cb, opaque)
- 为时间事件注册一个回调函数
- @timeout: time between events in milliseconds
- @cb: callback to invoke when an event occurs
- @opaque: user data to pass to callback
- virEventRegisterDefaultImpl()
- virEventRegisterImpl(addHandle, updateHandle, removeHandle, addTimeout, updateTimeout, removeTimeout)
- virEventRemoveHandle(watch)
- virEventRemoveTimeout(timer)
- virEventRunDefaultImpl()
- 运行一个迭代的循环事件,
- virEventUpdateHandle(watch, events)
- virEventUpdateTimeout(timer, timeout)
- virGetLastError()
- 提供一个获得最近发生在lib库级别的错误信息的指针
- virInitialize()
- 初始化lib库,调用该函数是强制的,除非你在第一次API调用时,使用的是virconnectopen*
- virResetLastError()
- 重置最后一次在lib库级别获得的错误日志,该错误对象保存在本地的线程中</span>
以上是关于通过python-libvirt管理KVM虚拟机 源码的主要内容,如果未能解决你的问题,请参考以下文章