4个版本 (2个重大变化)

0.3.0 2024年7月16日
0.2.1 2024年7月15日
0.2.0 2023年5月25日
0.1.0 2023年1月2日

#398 in 身份验证

Download history 77/week @ 2024-04-26 55/week @ 2024-05-03 98/week @ 2024-05-10 71/week @ 2024-05-17 76/week @ 2024-05-24 67/week @ 2024-05-31 95/week @ 2024-06-07 78/week @ 2024-06-14 129/week @ 2024-06-21 249/week @ 2024-06-28 81/week @ 2024-07-05 423/week @ 2024-07-12 429/week @ 2024-07-19 333/week @ 2024-07-26 233/week @ 2024-08-02 200/week @ 2024-08-09

1,244 每月下载量
3 个crate中使用 (通过 virt)

LGPL-2.1

290KB
7.5K SLoC

此crate提供了对libvirt C库的Rust绑定

绑定尝试直接映射底层的C API,但有一些差异以匹配Rust约定。

重要注意事项

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

绑定没有实现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项目旨在在新的API被添加到libvirt C库主库后尽快将支持添加到libvirt-rs。如果您正在提交更改到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'}
...

依赖关系

~170KB