threads : int;
}
+ type credential_type =
+ | CredentialUsername
+ | CredentialAuthname
+ | CredentialLanguage
+ | CredentialCnonce
+ | CredentialPassphrase
+ | CredentialEchoprompt
+ | CredentialNoechoprompt
+ | CredentialRealm
+ | CredentialExternal
+
+ type credential = {
+ typ : credential_type;
+ prompt : string;
+ challenge : string option;
+ defresult : string option;
+ }
+
+ type auth = {
+ credtype : credential_type list;
+ cb : (credential list -> string option list);
+ }
+
type list_flag =
| ListNoState | ListRunning | ListBlocked
| ListPaused | ListShutdown | ListShutoff | ListCrashed
external connect : ?name:string -> unit -> rw t = "ocaml_libvirt_connect_open"
external connect_readonly : ?name:string -> unit -> ro t = "ocaml_libvirt_connect_open_readonly"
+ external connect_auth : ?name:string -> auth -> rw t = "ocaml_libvirt_connect_open_auth"
+ external connect_auth_readonly : ?name:string -> auth -> ro t = "ocaml_libvirt_connect_open_auth_readonly"
external close : [>`R] t -> unit = "ocaml_libvirt_connect_close"
external get_type : [>`R] t -> string = "ocaml_libvirt_connect_get_type"
external get_version : [>`R] t -> int = "ocaml_libvirt_connect_get_version"
| VIR_WAR_NO_STORAGE
| VIR_ERR_NO_STORAGE_POOL
| VIR_ERR_NO_STORAGE_VOL
+ | VIR_WAR_NO_NODE
+ | VIR_ERR_INVALID_NODE_DEVICE
+ | VIR_ERR_NO_NODE_DEVICE
+ | VIR_ERR_NO_SECURITY_MODEL
+ | VIR_ERR_OPERATION_INVALID
+ | VIR_WAR_NO_INTERFACE
+ | VIR_ERR_NO_INTERFACE
+ | VIR_ERR_INVALID_INTERFACE
+ | VIR_ERR_MULTIPLE_INTERFACES
+ | VIR_WAR_NO_NWFILTER
+ | VIR_ERR_INVALID_NWFILTER
+ | VIR_ERR_NO_NWFILTER
+ | VIR_ERR_BUILD_FIREWALL
+ | VIR_WAR_NO_SECRET
+ | VIR_ERR_INVALID_SECRET
+ | VIR_ERR_NO_SECRET
+ | VIR_ERR_CONFIG_UNSUPPORTED
+ | VIR_ERR_OPERATION_TIMEOUT
+ | VIR_ERR_MIGRATE_PERSIST_FAILED
+ | VIR_ERR_HOOK_SCRIPT_FAILED
+ | VIR_ERR_INVALID_DOMAIN_SNAPSHOT
+ | VIR_ERR_NO_DOMAIN_SNAPSHOT
+ | VIR_ERR_INVALID_STREAM
+ | VIR_ERR_ARGUMENT_UNSUPPORTED
+ | VIR_ERR_STORAGE_PROBE_FAILED
+ | VIR_ERR_STORAGE_POOL_BUILT
+ | VIR_ERR_SNAPSHOT_REVERT_RISKY
+ | VIR_ERR_OPERATION_ABORTED
+ | VIR_ERR_AUTH_CANCELLED
+ | VIR_ERR_NO_DOMAIN_METADATA
+ | VIR_ERR_MIGRATE_UNSAFE
+ | VIR_ERR_OVERFLOW
+ | VIR_ERR_BLOCK_COPY_ACTIVE
+ | VIR_ERR_OPERATION_UNSUPPORTED
+ | VIR_ERR_SSH
+ | VIR_ERR_AGENT_UNRESPONSIVE
+ | VIR_ERR_RESOURCE_BUSY
+ | VIR_ERR_ACCESS_DENIED
+ | VIR_ERR_DBUS_SERVICE
+ | VIR_ERR_STORAGE_VOL_EXIST
+ | VIR_ERR_CPU_INCOMPATIBLE
+ | VIR_ERR_XML_INVALID_SCHEMA
+ | VIR_ERR_MIGRATE_FINISH_OK
+ | VIR_ERR_AUTH_UNAVAILABLE
+ | VIR_ERR_NO_SERVER
+ | VIR_ERR_NO_CLIENT
+ | VIR_ERR_AGENT_UNSYNCED
+ | VIR_ERR_LIBSSH
+ | VIR_ERR_DEVICE_MISSING
+ | VIR_ERR_INVALID_NWFILTER_BINDING
+ | VIR_ERR_NO_NWFILTER_BINDING
| VIR_ERR_UNKNOWN of int
let string_of_code = function
| VIR_WAR_NO_STORAGE -> "VIR_WAR_NO_STORAGE"
| VIR_ERR_NO_STORAGE_POOL -> "VIR_ERR_NO_STORAGE_POOL"
| VIR_ERR_NO_STORAGE_VOL -> "VIR_ERR_NO_STORAGE_VOL"
+ | VIR_WAR_NO_NODE -> "VIR_WAR_NO_NODE"
+ | VIR_ERR_INVALID_NODE_DEVICE -> "VIR_ERR_INVALID_NODE_DEVICE"
+ | VIR_ERR_NO_NODE_DEVICE -> "VIR_ERR_NO_NODE_DEVICE"
+ | VIR_ERR_NO_SECURITY_MODEL -> "VIR_ERR_NO_SECURITY_MODEL"
+ | VIR_ERR_OPERATION_INVALID -> "VIR_ERR_OPERATION_INVALID"
+ | VIR_WAR_NO_INTERFACE -> "VIR_WAR_NO_INTERFACE"
+ | VIR_ERR_NO_INTERFACE -> "VIR_ERR_NO_INTERFACE"
+ | VIR_ERR_INVALID_INTERFACE -> "VIR_ERR_INVALID_INTERFACE"
+ | VIR_ERR_MULTIPLE_INTERFACES -> "VIR_ERR_MULTIPLE_INTERFACES"
+ | VIR_WAR_NO_NWFILTER -> "VIR_WAR_NO_NWFILTER"
+ | VIR_ERR_INVALID_NWFILTER -> "VIR_ERR_INVALID_NWFILTER"
+ | VIR_ERR_NO_NWFILTER -> "VIR_ERR_NO_NWFILTER"
+ | VIR_ERR_BUILD_FIREWALL -> "VIR_ERR_BUILD_FIREWALL"
+ | VIR_WAR_NO_SECRET -> "VIR_WAR_NO_SECRET"
+ | VIR_ERR_INVALID_SECRET -> "VIR_ERR_INVALID_SECRET"
+ | VIR_ERR_NO_SECRET -> "VIR_ERR_NO_SECRET"
+ | VIR_ERR_CONFIG_UNSUPPORTED -> "VIR_ERR_CONFIG_UNSUPPORTED"
+ | VIR_ERR_OPERATION_TIMEOUT -> "VIR_ERR_OPERATION_TIMEOUT"
+ | VIR_ERR_MIGRATE_PERSIST_FAILED -> "VIR_ERR_MIGRATE_PERSIST_FAILED"
+ | VIR_ERR_HOOK_SCRIPT_FAILED -> "VIR_ERR_HOOK_SCRIPT_FAILED"
+ | VIR_ERR_INVALID_DOMAIN_SNAPSHOT -> "VIR_ERR_INVALID_DOMAIN_SNAPSHOT"
+ | VIR_ERR_NO_DOMAIN_SNAPSHOT -> "VIR_ERR_NO_DOMAIN_SNAPSHOT"
+ | VIR_ERR_INVALID_STREAM -> "VIR_ERR_INVALID_STREAM"
+ | VIR_ERR_ARGUMENT_UNSUPPORTED -> "VIR_ERR_ARGUMENT_UNSUPPORTED"
+ | VIR_ERR_STORAGE_PROBE_FAILED -> "VIR_ERR_STORAGE_PROBE_FAILED"
+ | VIR_ERR_STORAGE_POOL_BUILT -> "VIR_ERR_STORAGE_POOL_BUILT"
+ | VIR_ERR_SNAPSHOT_REVERT_RISKY -> "VIR_ERR_SNAPSHOT_REVERT_RISKY"
+ | VIR_ERR_OPERATION_ABORTED -> "VIR_ERR_OPERATION_ABORTED"
+ | VIR_ERR_AUTH_CANCELLED -> "VIR_ERR_AUTH_CANCELLED"
+ | VIR_ERR_NO_DOMAIN_METADATA -> "VIR_ERR_NO_DOMAIN_METADATA"
+ | VIR_ERR_MIGRATE_UNSAFE -> "VIR_ERR_MIGRATE_UNSAFE"
+ | VIR_ERR_OVERFLOW -> "VIR_ERR_OVERFLOW"
+ | VIR_ERR_BLOCK_COPY_ACTIVE -> "VIR_ERR_BLOCK_COPY_ACTIVE"
+ | VIR_ERR_OPERATION_UNSUPPORTED -> "VIR_ERR_OPERATION_UNSUPPORTED"
+ | VIR_ERR_SSH -> "VIR_ERR_SSH"
+ | VIR_ERR_AGENT_UNRESPONSIVE -> "VIR_ERR_AGENT_UNRESPONSIVE"
+ | VIR_ERR_RESOURCE_BUSY -> "VIR_ERR_RESOURCE_BUSY"
+ | VIR_ERR_ACCESS_DENIED -> "VIR_ERR_ACCESS_DENIED"
+ | VIR_ERR_DBUS_SERVICE -> "VIR_ERR_DBUS_SERVICE"
+ | VIR_ERR_STORAGE_VOL_EXIST -> "VIR_ERR_STORAGE_VOL_EXIST"
+ | VIR_ERR_CPU_INCOMPATIBLE -> "VIR_ERR_CPU_INCOMPATIBLE"
+ | VIR_ERR_XML_INVALID_SCHEMA -> "VIR_ERR_XML_INVALID_SCHEMA"
+ | VIR_ERR_MIGRATE_FINISH_OK -> "VIR_ERR_MIGRATE_FINISH_OK"
+ | VIR_ERR_AUTH_UNAVAILABLE -> "VIR_ERR_AUTH_UNAVAILABLE"
+ | VIR_ERR_NO_SERVER -> "VIR_ERR_NO_SERVER"
+ | VIR_ERR_NO_CLIENT -> "VIR_ERR_NO_CLIENT"
+ | VIR_ERR_AGENT_UNSYNCED -> "VIR_ERR_AGENT_UNSYNCED"
+ | VIR_ERR_LIBSSH -> "VIR_ERR_LIBSSH"
+ | VIR_ERR_DEVICE_MISSING -> "VIR_ERR_DEVICE_MISSING"
+ | VIR_ERR_INVALID_NWFILTER_BINDING -> "VIR_ERR_INVALID_NWFILTER_BINDING"
+ | VIR_ERR_NO_NWFILTER_BINDING -> "VIR_ERR_NO_NWFILTER_BINDING"
| VIR_ERR_UNKNOWN i -> "VIR_ERR_" ^ string_of_int i
type domain =
| VIR_FROM_OPENVZ
| VIR_FROM_XENXM
| VIR_FROM_STATS_LINUX
+ | VIR_FROM_LXC
| VIR_FROM_STORAGE
+ | VIR_FROM_NETWORK
+ | VIR_FROM_DOMAIN
+ | VIR_FROM_UML
+ | VIR_FROM_NODEDEV
+ | VIR_FROM_XEN_INOTIFY
+ | VIR_FROM_SECURITY
+ | VIR_FROM_VBOX
+ | VIR_FROM_INTERFACE
+ | VIR_FROM_ONE
+ | VIR_FROM_ESX
+ | VIR_FROM_PHYP
+ | VIR_FROM_SECRET
+ | VIR_FROM_CPU
+ | VIR_FROM_XENAPI
+ | VIR_FROM_NWFILTER
+ | VIR_FROM_HOOK
+ | VIR_FROM_DOMAIN_SNAPSHOT
+ | VIR_FROM_AUDIT
+ | VIR_FROM_SYSINFO
+ | VIR_FROM_STREAMS
+ | VIR_FROM_VMWARE
+ | VIR_FROM_EVENT
+ | VIR_FROM_LIBXL
+ | VIR_FROM_LOCKING
+ | VIR_FROM_HYPERV
+ | VIR_FROM_CAPABILITIES
+ | VIR_FROM_URI
+ | VIR_FROM_AUTH
+ | VIR_FROM_DBUS
+ | VIR_FROM_PARALLELS
+ | VIR_FROM_DEVICE
+ | VIR_FROM_SSH
+ | VIR_FROM_LOCKSPACE
+ | VIR_FROM_INITCTL
+ | VIR_FROM_IDENTITY
+ | VIR_FROM_CGROUP
+ | VIR_FROM_ACCESS
+ | VIR_FROM_SYSTEMD
+ | VIR_FROM_BHYVE
+ | VIR_FROM_CRYPTO
+ | VIR_FROM_FIREWALL
+ | VIR_FROM_POLKIT
+ | VIR_FROM_THREAD
+ | VIR_FROM_ADMIN
+ | VIR_FROM_LOGGING
+ | VIR_FROM_XENXL
+ | VIR_FROM_PERF
+ | VIR_FROM_LIBSSH
+ | VIR_FROM_RESCTRL
| VIR_FROM_UNKNOWN of int
let string_of_domain = function
| VIR_FROM_OPENVZ -> "VIR_FROM_OPENVZ"
| VIR_FROM_XENXM -> "VIR_FROM_XENXM"
| VIR_FROM_STATS_LINUX -> "VIR_FROM_STATS_LINUX"
+ | VIR_FROM_LXC -> "VIR_FROM_LXC"
| VIR_FROM_STORAGE -> "VIR_FROM_STORAGE"
+ | VIR_FROM_NETWORK -> "VIR_FROM_NETWORK"
+ | VIR_FROM_DOMAIN -> "VIR_FROM_DOMAIN"
+ | VIR_FROM_UML -> "VIR_FROM_UML"
+ | VIR_FROM_NODEDEV -> "VIR_FROM_NODEDEV"
+ | VIR_FROM_XEN_INOTIFY -> "VIR_FROM_XEN_INOTIFY"
+ | VIR_FROM_SECURITY -> "VIR_FROM_SECURITY"
+ | VIR_FROM_VBOX -> "VIR_FROM_VBOX"
+ | VIR_FROM_INTERFACE -> "VIR_FROM_INTERFACE"
+ | VIR_FROM_ONE -> "VIR_FROM_ONE"
+ | VIR_FROM_ESX -> "VIR_FROM_ESX"
+ | VIR_FROM_PHYP -> "VIR_FROM_PHYP"
+ | VIR_FROM_SECRET -> "VIR_FROM_SECRET"
+ | VIR_FROM_CPU -> "VIR_FROM_CPU"
+ | VIR_FROM_XENAPI -> "VIR_FROM_XENAPI"
+ | VIR_FROM_NWFILTER -> "VIR_FROM_NWFILTER"
+ | VIR_FROM_HOOK -> "VIR_FROM_HOOK"
+ | VIR_FROM_DOMAIN_SNAPSHOT -> "VIR_FROM_DOMAIN_SNAPSHOT"
+ | VIR_FROM_AUDIT -> "VIR_FROM_AUDIT"
+ | VIR_FROM_SYSINFO -> "VIR_FROM_SYSINFO"
+ | VIR_FROM_STREAMS -> "VIR_FROM_STREAMS"
+ | VIR_FROM_VMWARE -> "VIR_FROM_VMWARE"
+ | VIR_FROM_EVENT -> "VIR_FROM_EVENT"
+ | VIR_FROM_LIBXL -> "VIR_FROM_LIBXL"
+ | VIR_FROM_LOCKING -> "VIR_FROM_LOCKING"
+ | VIR_FROM_HYPERV -> "VIR_FROM_HYPERV"
+ | VIR_FROM_CAPABILITIES -> "VIR_FROM_CAPABILITIES"
+ | VIR_FROM_URI -> "VIR_FROM_URI"
+ | VIR_FROM_AUTH -> "VIR_FROM_AUTH"
+ | VIR_FROM_DBUS -> "VIR_FROM_DBUS"
+ | VIR_FROM_PARALLELS -> "VIR_FROM_PARALLELS"
+ | VIR_FROM_DEVICE -> "VIR_FROM_DEVICE"
+ | VIR_FROM_SSH -> "VIR_FROM_SSH"
+ | VIR_FROM_LOCKSPACE -> "VIR_FROM_LOCKSPACE"
+ | VIR_FROM_INITCTL -> "VIR_FROM_INITCTL"
+ | VIR_FROM_IDENTITY -> "VIR_FROM_IDENTITY"
+ | VIR_FROM_CGROUP -> "VIR_FROM_CGROUP"
+ | VIR_FROM_ACCESS -> "VIR_FROM_ACCESS"
+ | VIR_FROM_SYSTEMD -> "VIR_FROM_SYSTEMD"
+ | VIR_FROM_BHYVE -> "VIR_FROM_BHYVE"
+ | VIR_FROM_CRYPTO -> "VIR_FROM_CRYPTO"
+ | VIR_FROM_FIREWALL -> "VIR_FROM_FIREWALL"
+ | VIR_FROM_POLKIT -> "VIR_FROM_POLKIT"
+ | VIR_FROM_THREAD -> "VIR_FROM_THREAD"
+ | VIR_FROM_ADMIN -> "VIR_FROM_ADMIN"
+ | VIR_FROM_LOGGING -> "VIR_FROM_LOGGING"
+ | VIR_FROM_XENXL -> "VIR_FROM_XENXL"
+ | VIR_FROM_PERF -> "VIR_FROM_PERF"
+ | VIR_FROM_LIBSSH -> "VIR_FROM_LIBSSH"
+ | VIR_FROM_RESCTRL -> "VIR_FROM_RESCTRL"
| VIR_FROM_UNKNOWN i -> "VIR_FROM_" ^ string_of_int i
type level =
params : typed_param array;
}
+ type xml_desc_flag =
+ | XmlSecure
+ | XmlInactive
+ | XmlUpdateCPU
+ | XmlMigratable
+
(* The maximum size for Domain.memory_peek and Domain.block_peek
* supported by libvirt. This may change with different versions
* of libvirt in the future, hence it's a function.
external set_memory : [>`W] t -> int64 -> unit = "ocaml_libvirt_domain_set_memory"
external get_info : [>`R] t -> info = "ocaml_libvirt_domain_get_info"
external get_xml_desc : [>`R] t -> xml = "ocaml_libvirt_domain_get_xml_desc"
+ external get_xml_desc_flags : [>`W] t -> xml_desc_flag list -> xml = "ocaml_libvirt_domain_get_xml_desc_flags"
external get_scheduler_type : [>`R] t -> string * int = "ocaml_libvirt_domain_get_scheduler_type"
external get_scheduler_parameters : [>`R] t -> int -> sched_param array = "ocaml_libvirt_domain_get_scheduler_parameters"
external set_scheduler_parameters : [>`W] t -> sched_param array -> unit = "ocaml_libvirt_domain_set_scheduler_parameters"
"ocaml_libvirt_virterror" (Virterror (Virterror.no_error ()));
Callback.register_exception
"ocaml_libvirt_not_supported" (Not_supported "");
- c_init ()
+ c_init ();
+ Printexc.register_printer (
+ function
+ | Virterror e -> Some (Virterror.to_string e)
+ | _ -> None
+ )