PULL REQUESTS ARE IGNORED. Read-only mirror of https://libvirt.org/git/?p=libvirt-rust.git
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
examples
src
tests
tools
.gitignore
.gitpublish
.travis.yml
COPYING
Cargo.toml
README.md

README.md

This crate provides a Rust bindings to the libvirt C library

The bindings try to be a direct mapping of the underling C API with some differences to match Rust conventions.

Important considerations

Make sure the libvirt-dev or libvirt-devel package is installed (or that the development files are in your include path).

The bindings do not implement all of what the C library is providing but we do consider the current API quite stable.

The bindings use standard errors handling from Rust. Each method (there are some exceptions) returns a type Option or Result.

Documentation

Tests/Exercises

CI is executing tests automatically from libvirt 1.2.0 to 3.3.0. Using Rust from stable, beta to nightly.

To execute locally tests and other excerices

cargo test --verbose

Integration tests use a real connection to libvirtd. For instance integration_qemu.rs uses a qemu:///system connection. They are all ignored by default.

cargo test --verbose -- --ignored

Similar to libvirt-go, the integration tests also require that libvirtd listens on localhost with sasl auth. This can be setup by editing /etc/libvirt/libvirtd.conf as follows:

  listen_tls=0
  listen_tcp=1
  auth_tcp=sasl
  listen_addr="127.0.0.1"

and starting libvirtd with the --listen flag (this can be set in /etc/sysconfig/libvirtd to make it persistent).

Then create a sasl user

saslpasswd2 -a libvirt user

and enter "pass" as the password.

To run examples

# cargo run --example hello
# cargo run --example migrate -- qemu:///system tcp+qemu://192.168.0.1/system myguest

Contributing

The libvirt project aims to add support for new APIs to libvirt-rs as soon as they are added to the main libvirt C library. If you are submitting changes to the libvirt C library API, please submit a libvirt-rs change at the same time.

Bug fixes and other improvements to the libvirt-rs library are welcome at any time. The preferred submission method is to use git send-email to submit patches to the libvir-list@redhat.com mailing list. eg. to send a single patch

git send-email --to libvir-list@redhat.com --subject-prefix "PATCH rust"
--smtp-server=$HOSTNAME -1

Or to send all patches on the current branch, against master

git send-email --to libvir-list@redhat.com --subject-prefix "PATCH rust"
--smtp-server=$HOSTNAME --no-chain-reply-to --cover-letter --annotate
master..

Note the master GIT repository is at

The following automatic read-only mirrors are available as a convenience to allow contributors to "fork" the repository:

While you can send pull-requests to these mirrors, they will be re-submitted via email to the mailing list for review before being merged, unless they are trivial/obvious bug fixes.

The list of missing methods can be displayed with:

$ python tools/api_tests.py virDomain
{'file': 'libvirt-domain', 'name': 'virDomainMigrateSetMaxSpeed', 'module': 'libvirt-domain'}
{'file': 'libvirt-domain', 'name': 'virDomainRef', 'module': 'libvirt-domain'}
{'file': 'libvirt-domain', 'name': 'virDomainGetMemoryParameters', 'module': 'libvirt-domain'}
...