前言: 老司机开始写golang了。。。 分析: 1,API bingding libvirt官方已经提供了golang的libvirt API。目前来看,提供的API很全,还没遇到什么问题。 源代码路径在https://github.com/libvirt/libvirt-go 2,libvirt-go-xml 使用libvirt,会有一部分工作量在xml上。libvirt官方提供了一包代码,用来编辑基本的xml。 源代码在https://github.com/libvirt/libvirt-go-xml 编辑xml的代码,目前来看,还不全面。经常会有一些字段没有添加。遇到了几次这种情况,顺手把它完善一下,然后把patch用email发送给maintainer。其中的Daniel Berrange,人也比较nice,发送的patch,有问题他也会提出来,修改好了再mail给他,他会帮忙merge代码。
3,encoding/xml 使用libvirt-go-xml,从数据结构转换成xml这一步,目前来看,是OK的。 但是反向从xml解析数据结构,会有一些问题。libvirt的xml中会有很多十六进制的数字,golang自带的基础库encoding/xml解析不了。 在github上,提了issue(https://github.com/golang/go/issues/20607)。但是maintainer并不认。
除了提出问题,还和作者说,可以修改一下源代码就可以fix掉这个问题。但是maintainer的回复:
如果按照maintainer的说法,我需要在整个xml解析之前,先要把0x给strip掉。后来,就用了另外一个办法:copy出来了encoding/xml,在本地保存了一份,重命名一下包名,按照上面的方法修改一下,就能正常解析libvirt的xml了。 后记: 使用golang和libvirt-go,libvirt-go-xml目前遇到了这几个问题。 关于第3个问题,有谁知道更好的做法吗?