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 身份验证
1,244 每月下载量
在 3 个crate中使用 (通过 virt)
290KB
7.5K SLoC
此crate提供了对libvirt C库的Rust绑定
绑定尝试直接映射底层的C API,但有一些差异以匹配Rust约定。
重要注意事项
确保已安装 libvirt-dev
或 libvirt-devel
软件包(或开发文件位于您的包含路径中)。
绑定没有实现C库提供的所有功能,但我们认为当前API相当稳定。
绑定使用Rust的标准错误处理。每个方法(有一些例外)返回类型 Option
或 Result
。
可选功能
-
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