26 个版本

0.4.0 2024 年 7 月 16 日
0.3.1 2023 年 9 月 11 日
0.3.0 2023 年 5 月 25 日
0.2.12 2023 年 1 月 2 日
0.2.7 2017 年 6 月 6 日

#9模拟器

Download history 52/week @ 2024-05-04 97/week @ 2024-05-11 71/week @ 2024-05-18 81/week @ 2024-05-25 60/week @ 2024-06-01 106/week @ 2024-06-08 63/week @ 2024-06-15 132/week @ 2024-06-22 239/week @ 2024-06-29 116/week @ 2024-07-06 467/week @ 2024-07-13 424/week @ 2024-07-20 350/week @ 2024-07-27 261/week @ 2024-08-03 274/week @ 2024-08-10 295/week @ 2024-08-17

1,242 每月下载
用于 2 crates

LGPL-2.1

550KB
14K SLoC

此 crate 为 libvirt C 库提供了 Rust 绑定

绑定尝试直接映射底层 C API,并有一些差异以匹配 Rust 习惯。

重要注意事项

请确保已安装 libvirt-devlibvirt-devel 软件包(或开发文件位于您的 include 路径中)。

绑定并未实现 C 库提供的所有功能,但我们认为当前 API 相当稳定。

绑定使用 Rust 的标准错误处理。每个方法(有一些例外)返回一个类型 OptionResult

可选功能

  • qemu 允许使用 libvirt-qemu 函数,例如 qemu_monitor_command

  • bindgen_regenerate 使用 bindgen crate 生成 C API 的 Rust 兼容表示。libvirt 的最新版本的输出已包含在仓库中,因此只有维护者才需要使用此功能。

文档

执行本地测试和其他练习

cargofmt -v ----check

代码使用 rustfmt 格式化,您应该在提交补丁之前确保检查通过。可能需要在您的环境中执行 rustup component add rustfmt

cargotest --verbose

集成测试使用对 libvirtd 的实际连接。例如,integration_qemu.rs 使用 qemu:///system 连接。默认情况下,它们都被忽略。

cargotest --verbose ----ignored

类似于 libvirt-go-module,集成测试还要求 libvirtd 在 localhost 上监听并使用 sasl 认证。可以通过以下方式编辑 /etc/libvirt/libvirtd.conf 来设置

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

并使用带 --listen 标志启动 libvirtd(这可以在 /etc/sysconfig/libvirtd 中设置以使其持久化)。

然后创建一个 sasl 用户

saslpasswd2-一个 libvirt 用户

并输入 "pass" 作为密码。

要运行示例

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

贡献

libvirt 项目旨在尽快在 libvirt-rs 中添加对新 API 的支持,一旦它们被添加到主 libvirt C 库中。如果您正在提交对 libvirt C 库 API 的更改,请同时提交 libvirt-rs 的更改。

有关更多信息,请参阅 CONTRIBUTING 文件。

可以使用以下命令显示缺失的方法列表

$ 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'}
...

依赖关系

~210–390KB