-
Notifications
You must be signed in to change notification settings - Fork 468
/
Copy pathpool_def.go
31 lines (26 loc) · 919 Bytes
/
pool_def.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package libvirt
import (
"encoding/xml"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/digitalocean/go-libvirt"
"libvirt.org/go/libvirtxml"
)
func newDefPoolFromLibvirt(virConn *libvirt.Libvirt, pool libvirt.StoragePool) (libvirtxml.StoragePool, diag.Diagnostics) {
poolDefXML, err := virConn.StoragePoolGetXMLDesc(pool, 0)
if err != nil {
return libvirtxml.StoragePool{}, diag.Errorf("could not get XML description for pool %s: %s", pool.Name, err)
}
poolDef, err := newDefPoolFromXML(poolDefXML)
if err != nil {
return libvirtxml.StoragePool{}, diag.Errorf("could not get a pool definition from XML for %s: %s", pool.Name, err)
}
return poolDef, nil
}
func newDefPoolFromXML(s string) (libvirtxml.StoragePool, error) {
var poolDef libvirtxml.StoragePool
err := xml.Unmarshal([]byte(s), &poolDef)
if err != nil {
return libvirtxml.StoragePool{}, err
}
return poolDef, nil
}