在 libvirt 中,可以设置 Domain Snapshot 的 State 属性来反映虚拟机当前的状态。以下是一些可用的状态值:

  • 'libvirt.DOMAIN_RUNNING':表示域正在运行。
  • 'libvirt.DOMAIN_SHUTDOWN':表示域正在关闭。
  • 'libvirt.DOMAIN_CRASHED':表示域已崩溃。
  • 'libvirt.DOMAIN_PMSUSPENDED':表示域被挂起以节省电源。
  • 'libvirt.DOMAIN_SHUTOFF':表示域已关闭。
  • 'libvirt.DOMAIN_PAUSED':表示域已暂停。
  • 'libvirt.DOMAIN_BLOCKED':表示域被阻塞。
  • 'libvirt.DOMAIN_NOSTATE':表示域没有状态。

你的代码中已经包含了大多数常见状态的处理。你可以根据你的需求添加或删除一些状态。

var setSnapshot libvirtxml.DomainSnapshot
setSnapshot.Name = fmt.Sprintf('%s_%d', name, time.Now().Unix())
setSnapshot.Description = fmt.Sprintf('this is a snapshot of %s', name)
i := time.Now().Unix()
s2 := strconv.FormatInt(i, 10)
setSnapshot.CreationTime = s2
ds, _, err := domain.GetState()
if err != nil {
	logger.Error(err.Error())
}
switch ds {
case libvirt.DOMAIN_RUNNING:
	setSnapshot.State = 'running'
case libvirt.DOMAIN_SHUTOFF:
	setSnapshot.State = 'shutoff'
case libvirt.DOMAIN_PAUSED:
	setSnapshot.State = 'paused'
case libvirt.DOMAIN_CRASHED:
	setSnapshot.State = 'crashed'
case libvirt.DOMAIN_NOSTATE:
	setSnapshot.State = 'nostate'
case libvirt.DOMAIN_BLOCKED:
	setSnapshot.State = 'blocked'
case libvirt.DOMAIN_PMSUSPENDED:
	setSnapshot.State = 'pmsuspended'
}
Libvirt Domain Snapshot State 设置指南

原文地址: http://www.cveoy.top/t/topic/f3MK 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录