libvirt 可以检查虚拟机是否完全启动吗?可以用别的工具吗?

Mac*_*tka 5 virtual-machine qemu virtualization

我目前有小型 VM 来进行某些测试(它有多种好处——比如在另一个发行版 Fedora 15 上进行测试,以及在make distcheck没有污染问题的情况下运行/)。

但是,我想自动化测试,并且希望能够以编程方式(例如,使用 sh、python、c 等)执行以下操作:

  • qemu从本地映像无头启动 VM ( )
  • 等到 VM 完全启动(这是最难的部分 - 最初我想到的是魔法睡眠)
  • 在主机和来宾之间同步存储库(此时不需要)
  • ./autogen && make && sudo make install && sudo make distcheck在机器上执行
  • 从机器下载生成的 tarball

我开始阅读libvirt它,它可能允许我为此使用 API。虽然这需要客户支持并且我找不到有关它的文档,但这种能力似乎是libvirt.

是否可以检查机器是否完全启动?是否有现成的工具可以做到这一点?

编辑:完全启动我的意思是系统 rc 脚本已经完成执行/所有应该启动的 systemd 服务已经启动。我知道 qemu 不知道它什么时候发生,但我假设来宾方面的支持。

elm*_*rco 7

Afaik,libvirt 不知道“完全启动”是什么意思(我也不知道)。您可以创建一个在启动期间连接到您的主机(或另一台机器)的服务。或者您可以尝试循环连接到您的来宾,例如使用 ssh。

另一种解决方案是依赖与主机通信的现有服务,例如 vdagent。你可以很容易地编写一个 spice-gtk python 脚本,它会等待 Spice 代理通道连接(参见spice.c 示例,状态栏指示代理的存在)

请注意,测试“make distcheck”不应该污染 / 并且不需要 sudo。如果是,则说明您的 makefile 中存在问题。