This module aims to manage KVM hypervisors. For this it use the unix module which allow to manage Unix-like systems, both locally and remotely, in the same by overloading class instances. This module is just a wrapper to the virsh command. It parse outputs of the virsh command (both XML and text). Commands are grouped in childs objects accessible via properties.
Installation
This module is compatible with python2.7 and python 3.*. The module is on PyPi so you can use the pip command for installing it.
For example, to use kvm in a virtualenv:
$ virtualenv env/ --prompt "(myprog)"
$ . ./env/bin/activate
(myprog) $ pip install kvm
Otherwise sources are on github: https://github.com/fmenabe/python-kvm
Usage
You need to import the necessary classes from unix module. An hypervisor is represented by the Hypervisor object and must wrap an object of type unix.Local or unix.Remote. It theorically support any Unix system, but disks manipulations need nbd module to be loaded so it is better to use an unix.linux.Linux host.
>>> from unix import Local, Remote, UnixError
>>> from unix.linux import Linux
>>> import kvm
>>> import json
>>> localhost = kvm.Hypervisor(Linux(Local()))
>>> localhost.hypervisor.nodeinfo()
{'nb_cpu': 1,
'nb_threads_per_core': 2,
'memory': 16331936,
'numa_cells': 1,
'cpu_model': 'x86_64',
'nb_cores_per_cpu': 4,
'nb_cores': 8,
'cpu_freq': 1340}
>>> localhost.list_domains(all=True)
{'guest1': {'id': -1, 'state': 'shut off'}}
{'guest2': {'id': 1, 'state': 'running'}}
>>> localhost.domain.start('guest1')
# Wait a few seconds for the domain to start.
>>> localhost.domain.state('guest1')
'running'
>>> localhost.domain.id('guest1')
2
>>> print(json.dumps(localhost.domain.conf('guest1'), indent=2))
# json is use for pretty printing the dictionnary containing the
# configuration.
{
"@type": "kvm",
"name": "guest1",
"uuid": "ed68d942-5d4b-7bba-4d74-7d44d73779d3",
"memory": {
"@unit": "KiB",
"#text": "2097152"
},
...
}
>>> localhost.list_networks()
{'default': {'autostart': True, 'persistent': True, 'state': 'active'}}
>>> host = Remote()
>>> host.connect('hypervisor1')
>>> host = kvm.Hypervisor(Linux(host))
>>> host.hypervisor.nodeinfo()
{'cores_per_socket': 12,
'cpu_frequency': '2200 MHz',
'cpu_model': 'x86_64',
'cpu_sockets': 2,
'cpus': 24,
'memory_size': '98974432 kB',
'numa_cells': 1,
'threads_per_core': 1}
>>> host.list_domains(all=True)
{'guest1': {'id': 1, 'state': 'running'}}
{'guest2': {'id': 2, 'state': 'running'}}
>>> host.domain.shutdown('guest2')
# Wait for the domain to stop.
>>> host.domain.state('guest1')
'shut off'
# Using the context manager for the connecion.
>>> from unix.linux as linux, kvm
>>> with linux.connect('hypervisor1') as host:
... host = kvm.Hypervisor(host)
... host.hypervisor.node_info()
Metadata
Release files for kvm 1.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| kvm-1.1.1.tar.gz | 11.1 kB | Without provenance | Details for kvm-1.1.1.tar.gz |
Release files / kvm-1.1.1.tar.gz
| Download URL | kvm-1.1.1.tar.gz |
|---|---|
| Size | 11.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e2016ee28fcc0b6386de0cc89094e543e0e1ac92c342c1c21dda7397a993c271
|
|
BLAKE2b-256 checksum How to use checksums |
3f0458b6d24e510b4460d3e3254e5b198b944dfb3120ff6966c5e6132198ab3b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/39.2.0 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.7.0
|
Security for kvm 1.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.