libvirtorggolibvirt中的GetXMLDesc方法的入参只有一个选项INTERFACE_XML_INACTIVE。这样查出的网卡是什么为什么不能查询已激活状态的网卡信息呢怎么把出参的string转为libvirtxmlInterface结构体呢
查询出来的网卡是未激活状态的网卡信息,因为INTERFACE_XML_INACTIVE选项表示获取未激活状态的网卡信息。如果想查询已激活状态的网卡信息,可以使用INTERFACE_XML_ACTIVE选项。
要将出参的string转换为libvirtxml.Interface结构体,可以使用xml.Unmarshal函数进行解析。具体操作如下:
-
定义一个libvirtxml.Interface结构体变量;
-
使用xml.Unmarshal函数将出参的string解析到该结构体变量中。示例代码如下:
import (
"encoding/xml"
"github.com/libvirt/libvirt-go-xml"
)
func getInterfaceXMLDesc(conn *libvirt.Connect, ifName string) (*libvirtxml.Interface, error) {
xmlDesc, err := conn.DomainInterfaceXML(ifName, libvirt.DOMAIN_INTERFACE_XML_INACTIVE)
if err != nil {
return nil, err
}
var iface libvirtxml.Interface
err = xml.Unmarshal([]byte(xmlDesc), &iface)
if err != nil {
return nil, err
}
return &iface, nil
}
以上代码中的getInterfaceXMLDesc函数可以获取指定网卡的未激活状态的XML描述,并将其解析为libvirtxml.Interface结构体
原文地址: https://www.cveoy.top/t/topic/ho4h 著作权归作者所有。请勿转载和采集!