summaryrefslogtreecommitdiff
path: root/vendor/github.com/libvirt/libvirt-go-xml/capabilities.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/libvirt/libvirt-go-xml/capabilities.go')
-rw-r--r--vendor/github.com/libvirt/libvirt-go-xml/capabilities.go156
1 files changed, 156 insertions, 0 deletions
diff --git a/vendor/github.com/libvirt/libvirt-go-xml/capabilities.go b/vendor/github.com/libvirt/libvirt-go-xml/capabilities.go
new file mode 100644
index 00000000..d27e1f70
--- /dev/null
+++ b/vendor/github.com/libvirt/libvirt-go-xml/capabilities.go
@@ -0,0 +1,156 @@
+/*
+ * This file is part of the libvirt-go-xml project
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * Copyright (C) 2016 Red Hat, Inc.
+ *
+ */
+
+package libvirtxml
+
+import (
+ "encoding/xml"
+)
+
+type CapsHostCPUTopology struct {
+ Sockets int `xml:"sockets,attr"`
+ Cores int `xml:"cores,attr"`
+ Threads int `xml:"threads,attr"`
+}
+
+type CapsHostCPUFeature struct {
+ Name string `xml:"name,attr"`
+}
+
+type CapsHostCPUPageSize struct {
+ Size int `xml:"size,attr"`
+ Unit string `xml:"unit,attr"`
+}
+
+type CapsHostCPU struct {
+ Arch string `xml:"arch"`
+ Model string `xml:"model"`
+ Vendor string `xml:"vendor"`
+ Topology CapsHostCPUTopology `xml:"topology"`
+ Features []CapsHostCPUFeature `xml:"feature"`
+ PageSizes []CapsHostCPUPageSize `xml:"pages"`
+}
+
+type CapsHostNUMAMemory struct {
+ Size uint64 `xml:"size,attr"`
+ Unit string `xml:"unit,attr"`
+}
+
+type CapsHostNUMAPageInfo struct {
+ Size int `xml:"size,attr"`
+ Unit string `xml:"unit,attr"`
+ Count uint64 `xml:",chardata"`
+}
+
+type CapsHostNUMACPU struct {
+ ID int `xml:"id,attr"`
+ SocketID int `xml:"socket_id,attr"`
+ CoreID int `xml:"core_id,attr"`
+ Siblings string `xml:"siblings,attr"`
+}
+
+type CapsHostNUMADistance struct {
+ ID int `xml:"id,attr"`
+ Value int `xml:"value,attr"`
+}
+
+type CapsHostNUMACell struct {
+ ID int `xml:"id,attr"`
+ Memory CapsHostNUMAMemory `xml:"memory"`
+ PageInfo []CapsHostNUMAPageInfo `xml:"pages"`
+ Distances []CapsHostNUMADistance `xml:"distances>sibling"`
+ CPUS []CapsHostNUMACPU `xml:"cpus>cpu"`
+}
+
+type CapsHostNUMATopology struct {
+ Cells []CapsHostNUMACell `xml:"cells>cell"`
+}
+
+type CapsHostSecModelLabel struct {
+ Type string `xml:"type,attr"`
+ Value string `xml:",chardata"`
+}
+
+type CapsHostSecModel struct {
+ Name string `xml:"model"`
+ DOI string `xml:"doi"`
+ Labels []CapsHostSecModelLabel `xml:"baselabel"`
+}
+
+type CapsHost struct {
+ UUID string `xml:"uuid"`
+ CPU *CapsHostCPU `xml:"cpu"`
+ NUMA *CapsHostNUMATopology `xml:"topology"`
+ SecModel []CapsHostSecModel `xml:"secmodel"`
+}
+
+type CapsGuestMachine struct {
+ Name string `xml:",chardata"`
+ MaxCPUs int `xml:"maxCpus,attr"`
+ Canonical *string `xml:"canonical,attr"`
+}
+
+type CapsGuestDomain struct {
+ Type string `xml:"type,attr"`
+ Emulator string `xml:"emulator"`
+ Machines []CapsGuestMachine `xml:"machine"`
+}
+
+type CapsGuestArch struct {
+ Name string `xml:"name,attr"`
+ WordSize string `xml:"wordsize"`
+ Emulator string `xml:"emulator"`
+ Machines []CapsGuestMachine `xml:"machine"`
+ Domains []CapsGuestDomain `xml:"domain"`
+}
+
+type CapsGuestFeatures struct {
+ CPUSelection *struct{} `xml:"cpuselection"`
+ DeviceBoot *struct{} `xml:"deviceboot"`
+}
+
+type CapsGuest struct {
+ OSType string `xml:"os_type"`
+ Arch CapsGuestArch `xml:"arch"`
+ Features *CapsGuestFeatures `xml:"features"`
+}
+
+type Caps struct {
+ XMLName xml.Name `xml:"capabilities"`
+ Host CapsHost `xml:"host"`
+ Guests []CapsGuest `xml:"guest"`
+}
+
+func (c *Caps) Unmarshal(doc string) error {
+ return xml.Unmarshal([]byte(doc), c)
+}
+
+func (c *Caps) Marshal() (string, error) {
+ doc, err := xml.MarshalIndent(c, "", " ")
+ if err != nil {
+ return "", err
+ }
+ return string(doc), nil
+}