aboutsummaryrefslogtreecommitdiffstats
path: root/src/dma/vendor/github.com/libvirt/libvirt-go/error.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/dma/vendor/github.com/libvirt/libvirt-go/error.go')
-rw-r--r--src/dma/vendor/github.com/libvirt/libvirt-go/error.go604
1 files changed, 604 insertions, 0 deletions
diff --git a/src/dma/vendor/github.com/libvirt/libvirt-go/error.go b/src/dma/vendor/github.com/libvirt/libvirt-go/error.go
new file mode 100644
index 00000000..1cfdf922
--- /dev/null
+++ b/src/dma/vendor/github.com/libvirt/libvirt-go/error.go
@@ -0,0 +1,604 @@
+/*
+ * This file is part of the libvirt-go 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) 2013 Alex Zorin
+ * Copyright (C) 2016 Red Hat, Inc.
+ *
+ */
+
+package libvirt
+
+/*
+#cgo pkg-config: libvirt
+#include <libvirt/libvirt.h>
+#include <libvirt/virterror.h>
+#include "error_compat.h"
+
+void ignoreErrorFunc(void *userData, virErrorPtr error) {
+ // no-op
+}
+*/
+import "C"
+
+import (
+ "fmt"
+)
+
+func init() {
+ C.virSetErrorFunc(nil, (C.virErrorFunc)(C.ignoreErrorFunc))
+ C.virInitialize()
+}
+
+type ErrorLevel int
+
+const (
+ ERR_NONE = ErrorLevel(C.VIR_ERR_NONE)
+ ERR_WARNING = ErrorLevel(C.VIR_ERR_WARNING)
+ ERR_ERROR = ErrorLevel(C.VIR_ERR_ERROR)
+)
+
+type ErrorNumber int
+
+const (
+ ERR_OK = ErrorNumber(C.VIR_ERR_OK)
+
+ // internal error
+ ERR_INTERNAL_ERROR = ErrorNumber(C.VIR_ERR_INTERNAL_ERROR)
+
+ // memory allocation failure
+ ERR_NO_MEMORY = ErrorNumber(C.VIR_ERR_NO_MEMORY)
+
+ // no support for this function
+ ERR_NO_SUPPORT = ErrorNumber(C.VIR_ERR_NO_SUPPORT)
+
+ // could not resolve hostname
+ ERR_UNKNOWN_HOST = ErrorNumber(C.VIR_ERR_UNKNOWN_HOST)
+
+ // can't connect to hypervisor
+ ERR_NO_CONNECT = ErrorNumber(C.VIR_ERR_NO_CONNECT)
+
+ // invalid connection object
+ ERR_INVALID_CONN = ErrorNumber(C.VIR_ERR_INVALID_CONN)
+
+ // invalid domain object
+ ERR_INVALID_DOMAIN = ErrorNumber(C.VIR_ERR_INVALID_DOMAIN)
+
+ // invalid function argument
+ ERR_INVALID_ARG = ErrorNumber(C.VIR_ERR_INVALID_ARG)
+
+ // a command to hypervisor failed
+ ERR_OPERATION_FAILED = ErrorNumber(C.VIR_ERR_OPERATION_FAILED)
+
+ // a HTTP GET command to failed
+ ERR_GET_FAILED = ErrorNumber(C.VIR_ERR_GET_FAILED)
+
+ // a HTTP POST command to failed
+ ERR_POST_FAILED = ErrorNumber(C.VIR_ERR_POST_FAILED)
+
+ // unexpected HTTP error code
+ ERR_HTTP_ERROR = ErrorNumber(C.VIR_ERR_HTTP_ERROR)
+
+ // failure to serialize an S-Expr
+ ERR_SEXPR_SERIAL = ErrorNumber(C.VIR_ERR_SEXPR_SERIAL)
+
+ // could not open Xen hypervisor control
+ ERR_NO_XEN = ErrorNumber(C.VIR_ERR_NO_XEN)
+
+ // failure doing an hypervisor call
+ ERR_XEN_CALL = ErrorNumber(C.VIR_ERR_XEN_CALL)
+
+ // unknown OS type
+ ERR_OS_TYPE = ErrorNumber(C.VIR_ERR_OS_TYPE)
+
+ // missing kernel information
+ ERR_NO_KERNEL = ErrorNumber(C.VIR_ERR_NO_KERNEL)
+
+ // missing root device information
+ ERR_NO_ROOT = ErrorNumber(C.VIR_ERR_NO_ROOT)
+
+ // missing source device information
+ ERR_NO_SOURCE = ErrorNumber(C.VIR_ERR_NO_SOURCE)
+
+ // missing target device information
+ ERR_NO_TARGET = ErrorNumber(C.VIR_ERR_NO_TARGET)
+
+ // missing domain name information
+ ERR_NO_NAME = ErrorNumber(C.VIR_ERR_NO_NAME)
+
+ // missing domain OS information
+ ERR_NO_OS = ErrorNumber(C.VIR_ERR_NO_OS)
+
+ // missing domain devices information
+ ERR_NO_DEVICE = ErrorNumber(C.VIR_ERR_NO_DEVICE)
+
+ // could not open Xen Store control
+ ERR_NO_XENSTORE = ErrorNumber(C.VIR_ERR_NO_XENSTORE)
+
+ // too many drivers registered
+ ERR_DRIVER_FULL = ErrorNumber(C.VIR_ERR_DRIVER_FULL)
+
+ // not supported by the drivers (DEPRECATED)
+ ERR_CALL_FAILED = ErrorNumber(C.VIR_ERR_CALL_FAILED)
+
+ // an XML description is not well formed or broken
+ ERR_XML_ERROR = ErrorNumber(C.VIR_ERR_XML_ERROR)
+
+ // the domain already exist
+ ERR_DOM_EXIST = ErrorNumber(C.VIR_ERR_DOM_EXIST)
+
+ // operation forbidden on read-only connections
+ ERR_OPERATION_DENIED = ErrorNumber(C.VIR_ERR_OPERATION_DENIED)
+
+ // failed to open a conf file
+ ERR_OPEN_FAILED = ErrorNumber(C.VIR_ERR_OPEN_FAILED)
+
+ // failed to read a conf file
+ ERR_READ_FAILED = ErrorNumber(C.VIR_ERR_READ_FAILED)
+
+ // failed to parse a conf file
+ ERR_PARSE_FAILED = ErrorNumber(C.VIR_ERR_PARSE_FAILED)
+
+ // failed to parse the syntax of a conf file
+ ERR_CONF_SYNTAX = ErrorNumber(C.VIR_ERR_CONF_SYNTAX)
+
+ // failed to write a conf file
+ ERR_WRITE_FAILED = ErrorNumber(C.VIR_ERR_WRITE_FAILED)
+
+ // detail of an XML error
+ ERR_XML_DETAIL = ErrorNumber(C.VIR_ERR_XML_DETAIL)
+
+ // invalid network object
+ ERR_INVALID_NETWORK = ErrorNumber(C.VIR_ERR_INVALID_NETWORK)
+
+ // the network already exist
+ ERR_NETWORK_EXIST = ErrorNumber(C.VIR_ERR_NETWORK_EXIST)
+
+ // general system call failure
+ ERR_SYSTEM_ERROR = ErrorNumber(C.VIR_ERR_SYSTEM_ERROR)
+
+ // some sort of RPC error
+ ERR_RPC = ErrorNumber(C.VIR_ERR_RPC)
+
+ // error from a GNUTLS call
+ ERR_GNUTLS_ERROR = ErrorNumber(C.VIR_ERR_GNUTLS_ERROR)
+
+ // failed to start network
+ WAR_NO_NETWORK = ErrorNumber(C.VIR_WAR_NO_NETWORK)
+
+ // domain not found or unexpectedly disappeared
+ ERR_NO_DOMAIN = ErrorNumber(C.VIR_ERR_NO_DOMAIN)
+
+ // network not found
+ ERR_NO_NETWORK = ErrorNumber(C.VIR_ERR_NO_NETWORK)
+
+ // invalid MAC address
+ ERR_INVALID_MAC = ErrorNumber(C.VIR_ERR_INVALID_MAC)
+
+ // authentication failed
+ ERR_AUTH_FAILED = ErrorNumber(C.VIR_ERR_AUTH_FAILED)
+
+ // invalid storage pool object
+ ERR_INVALID_STORAGE_POOL = ErrorNumber(C.VIR_ERR_INVALID_STORAGE_POOL)
+
+ // invalid storage vol object
+ ERR_INVALID_STORAGE_VOL = ErrorNumber(C.VIR_ERR_INVALID_STORAGE_VOL)
+
+ // failed to start storage
+ WAR_NO_STORAGE = ErrorNumber(C.VIR_WAR_NO_STORAGE)
+
+ // storage pool not found
+ ERR_NO_STORAGE_POOL = ErrorNumber(C.VIR_ERR_NO_STORAGE_POOL)
+
+ // storage volume not found
+ ERR_NO_STORAGE_VOL = ErrorNumber(C.VIR_ERR_NO_STORAGE_VOL)
+
+ // failed to start node driver
+ WAR_NO_NODE = ErrorNumber(C.VIR_WAR_NO_NODE)
+
+ // invalid node device object
+ ERR_INVALID_NODE_DEVICE = ErrorNumber(C.VIR_ERR_INVALID_NODE_DEVICE)
+
+ // node device not found
+ ERR_NO_NODE_DEVICE = ErrorNumber(C.VIR_ERR_NO_NODE_DEVICE)
+
+ // security model not found
+ ERR_NO_SECURITY_MODEL = ErrorNumber(C.VIR_ERR_NO_SECURITY_MODEL)
+
+ // operation is not applicable at this time
+ ERR_OPERATION_INVALID = ErrorNumber(C.VIR_ERR_OPERATION_INVALID)
+
+ // failed to start interface driver
+ WAR_NO_INTERFACE = ErrorNumber(C.VIR_WAR_NO_INTERFACE)
+
+ // interface driver not running
+ ERR_NO_INTERFACE = ErrorNumber(C.VIR_ERR_NO_INTERFACE)
+
+ // invalid interface object
+ ERR_INVALID_INTERFACE = ErrorNumber(C.VIR_ERR_INVALID_INTERFACE)
+
+ // more than one matching interface found
+ ERR_MULTIPLE_INTERFACES = ErrorNumber(C.VIR_ERR_MULTIPLE_INTERFACES)
+
+ // failed to start nwfilter driver
+ WAR_NO_NWFILTER = ErrorNumber(C.VIR_WAR_NO_NWFILTER)
+
+ // invalid nwfilter object
+ ERR_INVALID_NWFILTER = ErrorNumber(C.VIR_ERR_INVALID_NWFILTER)
+
+ // nw filter pool not found
+ ERR_NO_NWFILTER = ErrorNumber(C.VIR_ERR_NO_NWFILTER)
+
+ // nw filter pool not found
+ ERR_BUILD_FIREWALL = ErrorNumber(C.VIR_ERR_BUILD_FIREWALL)
+
+ // failed to start secret storage
+ WAR_NO_SECRET = ErrorNumber(C.VIR_WAR_NO_SECRET)
+
+ // invalid secret
+ ERR_INVALID_SECRET = ErrorNumber(C.VIR_ERR_INVALID_SECRET)
+
+ // secret not found
+ ERR_NO_SECRET = ErrorNumber(C.VIR_ERR_NO_SECRET)
+
+ // unsupported configuration construct
+ ERR_CONFIG_UNSUPPORTED = ErrorNumber(C.VIR_ERR_CONFIG_UNSUPPORTED)
+
+ // timeout occurred during operation
+ ERR_OPERATION_TIMEOUT = ErrorNumber(C.VIR_ERR_OPERATION_TIMEOUT)
+
+ // a migration worked, but making the VM persist on the dest host failed
+ ERR_MIGRATE_PERSIST_FAILED = ErrorNumber(C.VIR_ERR_MIGRATE_PERSIST_FAILED)
+
+ // a synchronous hook script failed
+ ERR_HOOK_SCRIPT_FAILED = ErrorNumber(C.VIR_ERR_HOOK_SCRIPT_FAILED)
+
+ // invalid domain snapshot
+ ERR_INVALID_DOMAIN_SNAPSHOT = ErrorNumber(C.VIR_ERR_INVALID_DOMAIN_SNAPSHOT)
+
+ // domain snapshot not found
+ ERR_NO_DOMAIN_SNAPSHOT = ErrorNumber(C.VIR_ERR_NO_DOMAIN_SNAPSHOT)
+
+ // stream pointer not valid
+ ERR_INVALID_STREAM = ErrorNumber(C.VIR_ERR_INVALID_STREAM)
+
+ // valid API use but unsupported by the given driver
+ ERR_ARGUMENT_UNSUPPORTED = ErrorNumber(C.VIR_ERR_ARGUMENT_UNSUPPORTED)
+
+ // storage pool probe failed
+ ERR_STORAGE_PROBE_FAILED = ErrorNumber(C.VIR_ERR_STORAGE_PROBE_FAILED)
+
+ // storage pool already built
+ ERR_STORAGE_POOL_BUILT = ErrorNumber(C.VIR_ERR_STORAGE_POOL_BUILT)
+
+ // force was not requested for a risky domain snapshot revert
+ ERR_SNAPSHOT_REVERT_RISKY = ErrorNumber(C.VIR_ERR_SNAPSHOT_REVERT_RISKY)
+
+ // operation on a domain was canceled/aborted by user
+ ERR_OPERATION_ABORTED = ErrorNumber(C.VIR_ERR_OPERATION_ABORTED)
+
+ // authentication cancelled
+ ERR_AUTH_CANCELLED = ErrorNumber(C.VIR_ERR_AUTH_CANCELLED)
+
+ // The metadata is not present
+ ERR_NO_DOMAIN_METADATA = ErrorNumber(C.VIR_ERR_NO_DOMAIN_METADATA)
+
+ // Migration is not safe
+ ERR_MIGRATE_UNSAFE = ErrorNumber(C.VIR_ERR_MIGRATE_UNSAFE)
+
+ // integer overflow
+ ERR_OVERFLOW = ErrorNumber(C.VIR_ERR_OVERFLOW)
+
+ // action prevented by block copy job
+ ERR_BLOCK_COPY_ACTIVE = ErrorNumber(C.VIR_ERR_BLOCK_COPY_ACTIVE)
+
+ // The requested operation is not supported
+ ERR_OPERATION_UNSUPPORTED = ErrorNumber(C.VIR_ERR_OPERATION_UNSUPPORTED)
+
+ // error in ssh transport driver
+ ERR_SSH = ErrorNumber(C.VIR_ERR_SSH)
+
+ // guest agent is unresponsive, not running or not usable
+ ERR_AGENT_UNRESPONSIVE = ErrorNumber(C.VIR_ERR_AGENT_UNRESPONSIVE)
+
+ // resource is already in use
+ ERR_RESOURCE_BUSY = ErrorNumber(C.VIR_ERR_RESOURCE_BUSY)
+
+ // operation on the object/resource was denied
+ ERR_ACCESS_DENIED = ErrorNumber(C.VIR_ERR_ACCESS_DENIED)
+
+ // error from a dbus service
+ ERR_DBUS_SERVICE = ErrorNumber(C.VIR_ERR_DBUS_SERVICE)
+
+ // the storage vol already exists
+ ERR_STORAGE_VOL_EXIST = ErrorNumber(C.VIR_ERR_STORAGE_VOL_EXIST)
+
+ // given CPU is incompatible with host CPU
+ ERR_CPU_INCOMPATIBLE = ErrorNumber(C.VIR_ERR_CPU_INCOMPATIBLE)
+
+ // XML document doesn't validate against schema
+ ERR_XML_INVALID_SCHEMA = ErrorNumber(C.VIR_ERR_XML_INVALID_SCHEMA)
+
+ // Finish API succeeded but it is expected to return NULL */
+ ERR_MIGRATE_FINISH_OK = ErrorNumber(C.VIR_ERR_MIGRATE_FINISH_OK)
+
+ // authentication unavailable
+ ERR_AUTH_UNAVAILABLE = ErrorNumber(C.VIR_ERR_AUTH_UNAVAILABLE)
+
+ // Server was not found
+ ERR_NO_SERVER = ErrorNumber(C.VIR_ERR_NO_SERVER)
+
+ // Client was not found
+ ERR_NO_CLIENT = ErrorNumber(C.VIR_ERR_NO_CLIENT)
+
+ // guest agent replies with wrong id to guest sync command
+ ERR_AGENT_UNSYNCED = ErrorNumber(C.VIR_ERR_AGENT_UNSYNCED)
+
+ // error in libssh transport driver
+ ERR_LIBSSH = ErrorNumber(C.VIR_ERR_LIBSSH)
+
+ // libvirt fail to find the desired device
+ ERR_DEVICE_MISSING = ErrorNumber(C.VIR_ERR_DEVICE_MISSING)
+
+ // Invalid nwfilter binding object
+ ERR_INVALID_NWFILTER_BINDING = ErrorNumber(C.VIR_ERR_INVALID_NWFILTER_BINDING)
+
+ // Requested nwfilter binding does not exist
+ ERR_NO_NWFILTER_BINDING = ErrorNumber(C.VIR_ERR_NO_NWFILTER_BINDING)
+)
+
+type ErrorDomain int
+
+const (
+ FROM_NONE = ErrorDomain(C.VIR_FROM_NONE)
+
+ // Error at Xen hypervisor layer
+ FROM_XEN = ErrorDomain(C.VIR_FROM_XEN)
+
+ // Error at connection with xend daemon
+ FROM_XEND = ErrorDomain(C.VIR_FROM_XEND)
+
+ // Error at connection with xen store
+ FROM_XENSTORE = ErrorDomain(C.VIR_FROM_XENSTORE)
+
+ // Error in the S-Expression code
+ FROM_SEXPR = ErrorDomain(C.VIR_FROM_SEXPR)
+
+ // Error in the XML code
+ FROM_XML = ErrorDomain(C.VIR_FROM_XML)
+
+ // Error when operating on a domain
+ FROM_DOM = ErrorDomain(C.VIR_FROM_DOM)
+
+ // Error in the XML-RPC code
+ FROM_RPC = ErrorDomain(C.VIR_FROM_RPC)
+
+ // Error in the proxy code; unused since 0.8.6
+ FROM_PROXY = ErrorDomain(C.VIR_FROM_PROXY)
+
+ // Error in the configuration file handling
+ FROM_CONF = ErrorDomain(C.VIR_FROM_CONF)
+
+ // Error at the QEMU daemon
+ FROM_QEMU = ErrorDomain(C.VIR_FROM_QEMU)
+
+ // Error when operating on a network
+ FROM_NET = ErrorDomain(C.VIR_FROM_NET)
+
+ // Error from test driver
+ FROM_TEST = ErrorDomain(C.VIR_FROM_TEST)
+
+ // Error from remote driver
+ FROM_REMOTE = ErrorDomain(C.VIR_FROM_REMOTE)
+
+ // Error from OpenVZ driver
+ FROM_OPENVZ = ErrorDomain(C.VIR_FROM_OPENVZ)
+
+ // Error at Xen XM layer
+ FROM_XENXM = ErrorDomain(C.VIR_FROM_XENXM)
+
+ // Error in the Linux Stats code
+ FROM_STATS_LINUX = ErrorDomain(C.VIR_FROM_STATS_LINUX)
+
+ // Error from Linux Container driver
+ FROM_LXC = ErrorDomain(C.VIR_FROM_LXC)
+
+ // Error from storage driver
+ FROM_STORAGE = ErrorDomain(C.VIR_FROM_STORAGE)
+
+ // Error from network config
+ FROM_NETWORK = ErrorDomain(C.VIR_FROM_NETWORK)
+
+ // Error from domain config
+ FROM_DOMAIN = ErrorDomain(C.VIR_FROM_DOMAIN)
+
+ // Error at the UML driver
+ FROM_UML = ErrorDomain(C.VIR_FROM_UML)
+
+ // Error from node device monitor
+ FROM_NODEDEV = ErrorDomain(C.VIR_FROM_NODEDEV)
+
+ // Error from xen inotify layer
+ FROM_XEN_INOTIFY = ErrorDomain(C.VIR_FROM_XEN_INOTIFY)
+
+ // Error from security framework
+ FROM_SECURITY = ErrorDomain(C.VIR_FROM_SECURITY)
+
+ // Error from VirtualBox driver
+ FROM_VBOX = ErrorDomain(C.VIR_FROM_VBOX)
+
+ // Error when operating on an interface
+ FROM_INTERFACE = ErrorDomain(C.VIR_FROM_INTERFACE)
+
+ // The OpenNebula driver no longer exists. Retained for ABI/API compat only
+ FROM_ONE = ErrorDomain(C.VIR_FROM_ONE)
+
+ // Error from ESX driver
+ FROM_ESX = ErrorDomain(C.VIR_FROM_ESX)
+
+ // Error from IBM power hypervisor
+ FROM_PHYP = ErrorDomain(C.VIR_FROM_PHYP)
+
+ // Error from secret storage
+ FROM_SECRET = ErrorDomain(C.VIR_FROM_SECRET)
+
+ // Error from CPU driver
+ FROM_CPU = ErrorDomain(C.VIR_FROM_CPU)
+
+ // Error from XenAPI
+ FROM_XENAPI = ErrorDomain(C.VIR_FROM_XENAPI)
+
+ // Error from network filter driver
+ FROM_NWFILTER = ErrorDomain(C.VIR_FROM_NWFILTER)
+
+ // Error from Synchronous hooks
+ FROM_HOOK = ErrorDomain(C.VIR_FROM_HOOK)
+
+ // Error from domain snapshot
+ FROM_DOMAIN_SNAPSHOT = ErrorDomain(C.VIR_FROM_DOMAIN_SNAPSHOT)
+
+ // Error from auditing subsystem
+ FROM_AUDIT = ErrorDomain(C.VIR_FROM_AUDIT)
+
+ // Error from sysinfo/SMBIOS
+ FROM_SYSINFO = ErrorDomain(C.VIR_FROM_SYSINFO)
+
+ // Error from I/O streams
+ FROM_STREAMS = ErrorDomain(C.VIR_FROM_STREAMS)
+
+ // Error from VMware driver
+ FROM_VMWARE = ErrorDomain(C.VIR_FROM_VMWARE)
+
+ // Error from event loop impl
+ FROM_EVENT = ErrorDomain(C.VIR_FROM_EVENT)
+
+ // Error from libxenlight driver
+ FROM_LIBXL = ErrorDomain(C.VIR_FROM_LIBXL)
+
+ // Error from lock manager
+ FROM_LOCKING = ErrorDomain(C.VIR_FROM_LOCKING)
+
+ // Error from Hyper-V driver
+ FROM_HYPERV = ErrorDomain(C.VIR_FROM_HYPERV)
+
+ // Error from capabilities
+ FROM_CAPABILITIES = ErrorDomain(C.VIR_FROM_CAPABILITIES)
+
+ // Error from URI handling
+ FROM_URI = ErrorDomain(C.VIR_FROM_URI)
+
+ // Error from auth handling
+ FROM_AUTH = ErrorDomain(C.VIR_FROM_AUTH)
+
+ // Error from DBus
+ FROM_DBUS = ErrorDomain(C.VIR_FROM_DBUS)
+
+ // Error from Parallels
+ FROM_PARALLELS = ErrorDomain(C.VIR_FROM_PARALLELS)
+
+ // Error from Device
+ FROM_DEVICE = ErrorDomain(C.VIR_FROM_DEVICE)
+
+ // Error from libssh2 connection transport
+ FROM_SSH = ErrorDomain(C.VIR_FROM_SSH)
+
+ // Error from lockspace
+ FROM_LOCKSPACE = ErrorDomain(C.VIR_FROM_LOCKSPACE)
+
+ // Error from initctl device communication
+ FROM_INITCTL = ErrorDomain(C.VIR_FROM_INITCTL)
+
+ // Error from identity code
+ FROM_IDENTITY = ErrorDomain(C.VIR_FROM_IDENTITY)
+
+ // Error from cgroups
+ FROM_CGROUP = ErrorDomain(C.VIR_FROM_CGROUP)
+
+ // Error from access control manager
+ FROM_ACCESS = ErrorDomain(C.VIR_FROM_ACCESS)
+
+ // Error from systemd code
+ FROM_SYSTEMD = ErrorDomain(C.VIR_FROM_SYSTEMD)
+
+ // Error from bhyve driver
+ FROM_BHYVE = ErrorDomain(C.VIR_FROM_BHYVE)
+
+ // Error from crypto code
+ FROM_CRYPTO = ErrorDomain(C.VIR_FROM_CRYPTO)
+
+ // Error from firewall
+ FROM_FIREWALL = ErrorDomain(C.VIR_FROM_FIREWALL)
+
+ // Erorr from polkit code
+ FROM_POLKIT = ErrorDomain(C.VIR_FROM_POLKIT)
+
+ // Error from thread utils
+ FROM_THREAD = ErrorDomain(C.VIR_FROM_THREAD)
+
+ // Error from admin backend
+ FROM_ADMIN = ErrorDomain(C.VIR_FROM_ADMIN)
+
+ // Error from log manager
+ FROM_LOGGING = ErrorDomain(C.VIR_FROM_LOGGING)
+
+ // Error from Xen xl config code
+ FROM_XENXL = ErrorDomain(C.VIR_FROM_XENXL)
+
+ // Error from perf
+ FROM_PERF = ErrorDomain(C.VIR_FROM_PERF)
+
+ // Error from libssh
+ FROM_LIBSSH = ErrorDomain(C.VIR_FROM_LIBSSH)
+
+ // Error from resoruce control
+ FROM_RESCTRL = ErrorDomain(C.VIR_FROM_RESCTRL)
+)
+
+type Error struct {
+ Code ErrorNumber
+ Domain ErrorDomain
+ Message string
+ Level ErrorLevel
+}
+
+func (err Error) Error() string {
+ return fmt.Sprintf("virError(Code=%d, Domain=%d, Message='%s')",
+ err.Code, err.Domain, err.Message)
+}
+
+func makeError(err *C.virError) Error {
+ ret := Error{
+ Code: ErrorNumber(err.code),
+ Domain: ErrorDomain(err.domain),
+ Message: C.GoString(err.message),
+ Level: ErrorLevel(err.level),
+ }
+ C.virResetError(err)
+ return ret
+}
+
+func makeNotImplementedError(apiname string) Error {
+ return Error{
+ Code: ERR_NO_SUPPORT,
+ Domain: FROM_NONE,
+ Message: fmt.Sprintf("Function '%s' not available in the libvirt library used during Go build", apiname),
+ Level: ERR_ERROR,
+ }
+}