通過python-libvirt管理KVM虛擬機 源碼
阿新 • • 發佈:2018-06-19
copyto file erp idt sdn restrict oar source ffline
版本:0.9.13
libvirt庫可真是大,先看看該版本裏面都有哪些類和方法,驗證過的方法我會用O開頭,|開頭的標示還沒親自驗證過。
[python] view plain copy- <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虛擬機 源碼