NAME
Sys::Async::Virt - LibVirt protocol implementation for clients
VERSION
v0.0.1
Based on LibVirt tag v10.3.0
SYNOPSIS
use Sys::Async::Virt;
use Protocol::Sys::Virt::Remote;
use Protocol::Sys::Virt::Transport;
open my $fh, 'rw', '/run/libvirt/libvirt.sock';
my $transport = Protocol::Sys::Virt::Transport->new(
role => 'client',
on_send => sub { syswrite( $fh, $_ ) for @_ }
);
my $remote = Protocol::Sys::Virt::Remote->new(
role => 'client',
on_reply => sub { say 'Reply handled!'; },
);
$remote->register( $transport );
my $client = Sys::Async::Virt->new();
$client->register( $remote );
await $client->auth( $remote->AUTH_NONE );
await $client->open( 'qemu:///system' );
DESCRIPTION
This module manages access to a LibVirt service through its remote protocol.
The API documentation of this module and the related modules Sys::Async::Virt::*
is meant to be used in conjunction with the documentation found at LibVirt's API reference. Since the C API is procedural whereas the Perl API is object oriented, the mapping of API entry points isn't one-to-one. Each entry point links to its C API equivalent on the libvirt.org site, enabling users to quickly find documentation. (Please report any broken links.)
An important difference with the C API is that this API only lists the INPUT
and INPUT|OUTPUT (as input)
arguments for its functions. The OUTPUT
and INPUT|OUTPUT (as output)
arguments will be returned in the on_reply
event.
STABILITY GUARANTEES
The modules in this distribution are considered experimental, meaning that no interface guarantees are made at this time. However, since the protocol description from which most of the code is generated, changes are anticipated to be minimal. The more feedback the project receives, the sooner the project will be able to commit to the API as it is.
CLIENT EVENTS
on_message
$on_message->( @@@TODO );
Receives all messages which either don't classify as a callback invocation (i.e. the return value structure doesn't have a callbackID
member), or for which no callback has been registered through one of the callback registration functions.
on_stream
$on_stream->( @@@TODO );
Receives all messages for which no stream has been registered through "register_stream".
on_close
$on_close->();
LIBVIRT EVENTS
domain_event_register_any
$cb = await $client->domain_event_register_any( $event_id, $dom = undef );
Subscribes to events of type $event_id
. Restricts events to a specific domain by passing a value into $dom
.
Returns a Sys::Async::Virt::Callback instance.
network_event_register_any
$cb = await $client->network_event_register_any( $event_id, $net = undef );
Subscribes to events of type $event_id
. Restricts events to a specific network by passing a value into $net
.
Returns a Sys::Async::Virt::Callback instance.
node_device_event_register_any
$cb = await $client->node_device_event_register_any( $event_id, $dev = undef );
Subscribes to events of type $event_id
. Restricts events to a specific device by passing a value into $dev
.
Returns a Sys::Async::Virt::Callback instance.
secret_event_register_any
$cb = await $client->secret_event_register_any( $event_id, $secret = undef);
Subscribes to events of type $event_id
. Restricts events to a specific secret by passing a value into $secret
.
Returns a Sys::Async::Virt::Callback instance.
storage_pool_event_register_any
$cb = await $client->storage_pool_event_register_any( $event_id, $pool = undef );
Subscribes to events of type $event_id
. Restricts events to a specific storage pool by passing a value into $pool
.
Returns a Sys::Async::Virt::Callback instance.
CONSTRUCTOR
new
$client = Sys::Async::Virt->new( remote => $remote, ... );
Creates a new client instance. The constructor supports the following arguments:
remote
(optional)keepalive
(optional)
METHODS
configure
register
$client->register( $remote );
register_stream
$client->register_stream( $serial, $stream );
unregister_stream
$client->unregister_stream( $serial );
auth
await $client->auth( $auth_type, $on_completed );
# -> (* no data *)
Authenticates the client with the server.
open
await $client->open( $url, $flags = 0 );
# -> (* no data *)
This function opens the connection to the remote driver $url
as documented in LibVirt's Connection URIs. Note that the value is to be the local hypervisor URI as applicable to the remote end of the connection.
close
await $client->close;
# -> (* no data *)
Announces to the remote the intent to close the connection. The client will receive a confirmation message from the server after which the server will close the connection.
baseline_cpu
$cpu = await $client->baseline_cpu( $xmlCPUs, $flags = 0 );
See documentation of virConnectBaselineCPU.
baseline_hypervisor_cpu
$cpu = await $client->baseline_hypervisor_cpu( $emulator, $arch, $machine, $virttype, $xmlCPUs, $flags = 0 );
See documentation of virConnectBaselineHypervisorCPU.
compare_cpu
$result = await $client->compare_cpu( $xml, $flags = 0 );
See documentation of virConnectCompareCPU.
compare_hypervisor_cpu
$result = await $client->compare_hypervisor_cpu( $emulator, $arch, $machine, $virttype, $xmlCPU, $flags = 0 );
See documentation of virConnectCompareHypervisorCPU.
domain_create_xml
$dom = await $client->domain_create_xml( $xml_desc, $flags = 0 );
See documentation of virDomainCreateXML.
domain_define_xml
$dom = await $client->domain_define_xml( $xml );
See documentation of virDomainDefineXML.
domain_define_xml_flags
$dom = await $client->domain_define_xml_flags( $xml, $flags = 0 );
See documentation of virDomainDefineXMLFlags.
domain_lookup_by_id
$dom = await $client->domain_lookup_by_id( $id );
See documentation of virDomainLookupByID.
domain_lookup_by_name
$dom = await $client->domain_lookup_by_name( $name );
See documentation of virDomainLookupByName.
domain_lookup_by_uuid
$dom = await $client->domain_lookup_by_uuid( $uuid );
See documentation of virDomainLookupByUUID.
domain_migrate_finish
$ddom = await $client->domain_migrate_finish( $dname, $cookie, $uri, $flags = 0 );
See documentation of virDomainMigrateFinish.
domain_migrate_finish2
$ddom = await $client->domain_migrate_finish2( $dname, $cookie, $uri, $flags, $retcode );
See documentation of virDomainMigrateFinish2.
domain_restore
await $client->domain_restore( $from );
# -> (* no data *)
See documentation of virDomainRestore.
domain_restore_flags
await $client->domain_restore_flags( $from, $dxml, $flags = 0 );
# -> (* no data *)
See documentation of virDomainRestoreFlags.
domain_restore_params
await $client->domain_restore_params( $params, $flags = 0 );
# -> (* no data *)
See documentation of virDomainRestoreParams.
domain_save_image_define_xml
await $client->domain_save_image_define_xml( $file, $dxml, $flags = 0 );
# -> (* no data *)
See documentation of virDomainSaveImageDefineXML.
domain_save_image_get_xml_desc
$xml = await $client->domain_save_image_get_xml_desc( $file, $flags = 0 );
See documentation of virDomainSaveImageGetXMLDesc.
domain_xml_from_native
$domainXml = await $client->domain_xml_from_native( $nativeFormat, $nativeConfig, $flags = 0 );
See documentation of virConnectDomainXMLFromNative.
domain_xml_to_native
$nativeConfig = await $client->domain_xml_to_native( $nativeFormat, $domainXml, $flags = 0 );
See documentation of virConnectDomainXMLToNative.
get_capabilities
$capabilities = await $client->get_capabilities;
See documentation of virConnectGetCapabilities.
get_domain_capabilities
$capabilities = await $client->get_domain_capabilities( $emulatorbin, $arch, $machine, $virttype, $flags = 0 );
See documentation of virConnectGetDomainCapabilities.
get_hostname
$hostname = await $client->get_hostname;
See documentation of virConnectGetHostname.
get_lib_version
$lib_ver = await $client->get_lib_version;
See documentation of virConnectGetLibVersion.
get_max_vcpus
$max_vcpus = await $client->get_max_vcpus( $type );
See documentation of virConnectGetMaxVcpus.
get_storage_pool_capabilities
$capabilities = await $client->get_storage_pool_capabilities( $flags = 0 );
See documentation of virConnectGetStoragePoolCapabilities.
get_sysinfo
$sysinfo = await $client->get_sysinfo( $flags = 0 );
See documentation of virConnectGetSysinfo.
get_version
$hv_ver = await $client->get_version;
See documentation of virConnectGetVersion.
interface_change_begin
await $client->interface_change_begin( $flags = 0 );
# -> (* no data *)
See documentation of virInterfaceChangeBegin.
interface_change_commit
await $client->interface_change_commit( $flags = 0 );
# -> (* no data *)
See documentation of virInterfaceChangeCommit.
interface_change_rollback
await $client->interface_change_rollback( $flags = 0 );
# -> (* no data *)
See documentation of virInterfaceChangeRollback.
interface_define_xml
$iface = await $client->interface_define_xml( $xml, $flags = 0 );
See documentation of virInterfaceDefineXML.
interface_lookup_by_mac_string
$iface = await $client->interface_lookup_by_mac_string( $mac );
See documentation of virInterfaceLookupByMACString.
interface_lookup_by_name
$iface = await $client->interface_lookup_by_name( $name );
See documentation of virInterfaceLookupByName.
list_all_domains
$domains = await $client->list_all_domains( $flags = 0 );
See documentation of virConnectListAllDomains.
list_all_interfaces
$ifaces = await $client->list_all_interfaces( $flags = 0 );
See documentation of virConnectListAllInterfaces.
list_all_networks
$nets = await $client->list_all_networks( $flags = 0 );
See documentation of virConnectListAllNetworks.
list_all_node_devices
$devices = await $client->list_all_node_devices( $flags = 0 );
See documentation of virConnectListAllNodeDevices.
list_all_nwfilter_bindings
$bindings = await $client->list_all_nwfilter_bindings( $flags = 0 );
See documentation of virConnectListAllNWFilterBindings.
list_all_nwfilters
$filters = await $client->list_all_nwfilters( $flags = 0 );
See documentation of virConnectListAllNWFilters.
list_all_secrets
$secrets = await $client->list_all_secrets( $flags = 0 );
See documentation of virConnectListAllSecrets.
list_all_storage_pools
$pools = await $client->list_all_storage_pools( $flags = 0 );
See documentation of virConnectListAllStoragePools.
list_defined_domains
$names = await $client->list_defined_domains;
See documentation of virConnectListDefinedDomains.
list_defined_interfaces
$names = await $client->list_defined_interfaces;
See documentation of virConnectListDefinedInterfaces.
list_defined_networks
$names = await $client->list_defined_networks;
See documentation of virConnectListDefinedNetworks.
list_defined_storage_pools
$names = await $client->list_defined_storage_pools;
See documentation of virConnectListDefinedStoragePools.
list_interfaces
$names = await $client->list_interfaces;
See documentation of virConnectListInterfaces.
list_networks
$names = await $client->list_networks;
See documentation of virConnectListNetworks.
list_nwfilters
$names = await $client->list_nwfilters;
See documentation of virConnectListNWFilters.
list_secrets
$uuids = await $client->list_secrets;
See documentation of virConnectListSecrets.
list_storage_pools
$names = await $client->list_storage_pools;
See documentation of virConnectListStoragePools.
network_create_xml
$net = await $client->network_create_xml( $xml );
See documentation of virNetworkCreateXML.
network_create_xml_flags
$net = await $client->network_create_xml_flags( $xml, $flags = 0 );
See documentation of virNetworkCreateXMLFlags.
network_define_xml
$net = await $client->network_define_xml( $xml );
See documentation of virNetworkDefineXML.
network_define_xml_flags
$net = await $client->network_define_xml_flags( $xml, $flags = 0 );
See documentation of virNetworkDefineXMLFlags.
network_lookup_by_name
$net = await $client->network_lookup_by_name( $name );
See documentation of virNetworkLookupByName.
network_lookup_by_uuid
$net = await $client->network_lookup_by_uuid( $uuid );
See documentation of virNetworkLookupByUUID.
node_get_free_memory
$freeMem = await $client->node_get_free_memory;
See documentation of virNodeGetFreeMemory.
node_get_info
await $client->node_get_info;
# -> { cores => $cores,
# cpus => $cpus,
# memory => $memory,
# mhz => $mhz,
# model => $model,
# nodes => $nodes,
# sockets => $sockets,
# threads => $threads }
See documentation of virNodeGetInfo.
node_list_devices
$names = await $client->node_list_devices( $cap, $flags = 0 );
See documentation of virNodeListDevices.
node_num_of_devices
$num = await $client->node_num_of_devices( $cap, $flags = 0 );
See documentation of virNodeNumOfDevices.
node_set_memory_parameters
await $client->node_set_memory_parameters( $params, $flags = 0 );
# -> (* no data *)
See documentation of virNodeSetMemoryParameters.
node_suspend_for_duration
await $client->node_suspend_for_duration( $target, $duration, $flags = 0 );
# -> (* no data *)
See documentation of virNodeSuspendForDuration.
num_of_defined_domains
$num = await $client->num_of_defined_domains;
See documentation of virConnectNumOfDefinedDomains.
num_of_defined_interfaces
$num = await $client->num_of_defined_interfaces;
See documentation of virConnectNumOfDefinedInterfaces.
num_of_defined_networks
$num = await $client->num_of_defined_networks;
See documentation of virConnectNumOfDefinedNetworks.
num_of_defined_storage_pools
$num = await $client->num_of_defined_storage_pools;
See documentation of virConnectNumOfDefinedStoragePools.
num_of_domains
$num = await $client->num_of_domains;
See documentation of virConnectNumOfDomains.
num_of_interfaces
$num = await $client->num_of_interfaces;
See documentation of virConnectNumOfInterfaces.
num_of_networks
$num = await $client->num_of_networks;
See documentation of virConnectNumOfNetworks.
num_of_nwfilters
$num = await $client->num_of_nwfilters;
See documentation of virConnectNumOfNWFilters.
num_of_secrets
$num = await $client->num_of_secrets;
See documentation of virConnectNumOfSecrets.
num_of_storage_pools
$num = await $client->num_of_storage_pools;
See documentation of virConnectNumOfStoragePools.
nwfilter_binding_create_xml
$nwfilter = await $client->nwfilter_binding_create_xml( $xml, $flags = 0 );
See documentation of virNWFilterBindingCreateXML.
nwfilter_binding_lookup_by_port_dev
$nwfilter = await $client->nwfilter_binding_lookup_by_port_dev( $name );
See documentation of virNWFilterBindingLookupByPortDev.
nwfilter_define_xml
$nwfilter = await $client->nwfilter_define_xml( $xml );
See documentation of virNWFilterDefineXML.
nwfilter_define_xml_flags
$nwfilter = await $client->nwfilter_define_xml_flags( $xml, $flags = 0 );
See documentation of virNWFilterDefineXMLFlags.
nwfilter_lookup_by_name
$nwfilter = await $client->nwfilter_lookup_by_name( $name );
See documentation of virNWFilterLookupByName.
nwfilter_lookup_by_uuid
$nwfilter = await $client->nwfilter_lookup_by_uuid( $uuid );
See documentation of virNWFilterLookupByUUID.
secret_define_xml
$secret = await $client->secret_define_xml( $xml, $flags = 0 );
See documentation of virSecretDefineXML.
secret_lookup_by_usage
$secret = await $client->secret_lookup_by_usage( $usageType, $usageID );
See documentation of virSecretLookupByUsage.
secret_lookup_by_uuid
$secret = await $client->secret_lookup_by_uuid( $uuid );
See documentation of virSecretLookupByUUID.
set_identity
await $client->set_identity( $params, $flags = 0 );
# -> (* no data *)
See documentation of virConnectSetIdentity.
storage_pool_create_xml
$pool = await $client->storage_pool_create_xml( $xml, $flags = 0 );
See documentation of virStoragePoolCreateXML.
storage_pool_define_xml
$pool = await $client->storage_pool_define_xml( $xml, $flags = 0 );
See documentation of virStoragePoolDefineXML.
storage_pool_lookup_by_name
$pool = await $client->storage_pool_lookup_by_name( $name );
See documentation of virStoragePoolLookupByName.
storage_pool_lookup_by_target_path
$pool = await $client->storage_pool_lookup_by_target_path( $path );
See documentation of virStoragePoolLookupByTargetPath.
storage_pool_lookup_by_uuid
$pool = await $client->storage_pool_lookup_by_uuid( $uuid );
See documentation of virStoragePoolLookupByUUID.
storage_vol_lookup_by_key
$vol = await $client->storage_vol_lookup_by_key( $key );
See documentation of virStorageVolLookupByKey.
storage_vol_lookup_by_path
$vol = await $client->storage_vol_lookup_by_path( $path );
See documentation of virStorageVolLookupByPath.
supports_feature
$supported = await $client->supports_feature( $feature );
See documentation of virConnectSupportsFeature.
CONSTANTS
- CLOSE_REASON_ERROR
- CLOSE_REASON_EOF
- CLOSE_REASON_KEEPALIVE
- CLOSE_REASON_CLIENT
- TYPED_PARAM_INT
- TYPED_PARAM_UINT
- TYPED_PARAM_LLONG
- TYPED_PARAM_ULLONG
- TYPED_PARAM_DOUBLE
- TYPED_PARAM_BOOLEAN
- TYPED_PARAM_STRING
- TYPED_PARAM_STRING_OKAY
- TYPED_PARAM_FIELD_LENGTH
- DOMAIN_DEFINE_VALIDATE
- LIST_DOMAINS_ACTIVE
- LIST_DOMAINS_INACTIVE
- LIST_DOMAINS_PERSISTENT
- LIST_DOMAINS_TRANSIENT
- LIST_DOMAINS_RUNNING
- LIST_DOMAINS_PAUSED
- LIST_DOMAINS_SHUTOFF
- LIST_DOMAINS_OTHER
- LIST_DOMAINS_MANAGEDSAVE
- LIST_DOMAINS_NO_MANAGEDSAVE
- LIST_DOMAINS_AUTOSTART
- LIST_DOMAINS_NO_AUTOSTART
- LIST_DOMAINS_HAS_SNAPSHOT
- LIST_DOMAINS_NO_SNAPSHOT
- LIST_DOMAINS_HAS_CHECKPOINT
- LIST_DOMAINS_NO_CHECKPOINT
- GET_ALL_DOMAINS_STATS_ACTIVE
- GET_ALL_DOMAINS_STATS_INACTIVE
- GET_ALL_DOMAINS_STATS_PERSISTENT
- GET_ALL_DOMAINS_STATS_TRANSIENT
- GET_ALL_DOMAINS_STATS_RUNNING
- GET_ALL_DOMAINS_STATS_PAUSED
- GET_ALL_DOMAINS_STATS_SHUTOFF
- GET_ALL_DOMAINS_STATS_OTHER
- GET_ALL_DOMAINS_STATS_NOWAIT
- GET_ALL_DOMAINS_STATS_BACKING
- GET_ALL_DOMAINS_STATS_ENFORCE_STATS
- DOMAIN_EVENT_AGENT_LIFECYCLE_STATE_CONNECTED
- DOMAIN_EVENT_AGENT_LIFECYCLE_STATE_DISCONNECTED
- DOMAIN_EVENT_AGENT_LIFECYCLE_REASON_UNKNOWN
- DOMAIN_EVENT_AGENT_LIFECYCLE_REASON_DOMAIN_STARTED
- DOMAIN_EVENT_AGENT_LIFECYCLE_REASON_CHANNEL
- DOMAIN_EVENT_ID_LIFECYCLE
- DOMAIN_EVENT_ID_REBOOT
- DOMAIN_EVENT_ID_RTC_CHANGE
- DOMAIN_EVENT_ID_WATCHDOG
- DOMAIN_EVENT_ID_IO_ERROR
- DOMAIN_EVENT_ID_GRAPHICS
- DOMAIN_EVENT_ID_IO_ERROR_REASON
- DOMAIN_EVENT_ID_CONTROL_ERROR
- DOMAIN_EVENT_ID_BLOCK_JOB
- DOMAIN_EVENT_ID_DISK_CHANGE
- DOMAIN_EVENT_ID_TRAY_CHANGE
- DOMAIN_EVENT_ID_PMWAKEUP
- DOMAIN_EVENT_ID_PMSUSPEND
- DOMAIN_EVENT_ID_BALLOON_CHANGE
- DOMAIN_EVENT_ID_PMSUSPEND_DISK
- DOMAIN_EVENT_ID_DEVICE_REMOVED
- DOMAIN_EVENT_ID_BLOCK_JOB_2
- DOMAIN_EVENT_ID_TUNABLE
- DOMAIN_EVENT_ID_AGENT_LIFECYCLE
- DOMAIN_EVENT_ID_DEVICE_ADDED
- DOMAIN_EVENT_ID_MIGRATION_ITERATION
- DOMAIN_EVENT_ID_JOB_COMPLETED
- DOMAIN_EVENT_ID_DEVICE_REMOVAL_FAILED
- DOMAIN_EVENT_ID_METADATA_CHANGE
- DOMAIN_EVENT_ID_BLOCK_THRESHOLD
- DOMAIN_EVENT_ID_MEMORY_FAILURE
- DOMAIN_EVENT_ID_MEMORY_DEVICE_SIZE_CHANGE
- SUSPEND_TARGET_MEM
- SUSPEND_TARGET_DISK
- SUSPEND_TARGET_HYBRID
- SECURITY_LABEL_BUFLEN
- SECURITY_MODEL_BUFLEN
- SECURITY_DOI_BUFLEN
- CPU_STATS_FIELD_LENGTH
- CPU_STATS_ALL_CPUS
- CPU_STATS_KERNEL
- CPU_STATS_USER
- CPU_STATS_IDLE
- CPU_STATS_IOWAIT
- CPU_STATS_INTR
- CPU_STATS_UTILIZATION
- MEMORY_STATS_FIELD_LENGTH
- MEMORY_STATS_ALL_CELLS
- MEMORY_STATS_TOTAL
- MEMORY_STATS_FREE
- MEMORY_STATS_BUFFERS
- MEMORY_STATS_CACHED
- MEMORY_SHARED_PAGES_TO_SCAN
- MEMORY_SHARED_SLEEP_MILLISECS
- MEMORY_SHARED_PAGES_SHARED
- MEMORY_SHARED_PAGES_SHARING
- MEMORY_SHARED_PAGES_UNSHARED
- MEMORY_SHARED_PAGES_VOLATILE
- MEMORY_SHARED_FULL_SCANS
- MEMORY_SHARED_MERGE_ACROSS_NODES
- SEV_PDH
- SEV_CERT_CHAIN
- SEV_CPU0_ID
- SEV_CBITPOS
- SEV_REDUCED_PHYS_BITS
- SEV_MAX_GUESTS
- SEV_MAX_ES_GUESTS
- RO
- NO_ALIASES
- CRED_USERNAME
- CRED_AUTHNAME
- CRED_LANGUAGE
- CRED_CNONCE
- CRED_PASSPHRASE
- CRED_ECHOPROMPT
- CRED_NOECHOPROMPT
- CRED_REALM
- CRED_EXTERNAL
- UUID_BUFLEN
- UUID_STRING_BUFLEN
- IDENTITY_USER_NAME
- IDENTITY_UNIX_USER_ID
- IDENTITY_GROUP_NAME
- IDENTITY_UNIX_GROUP_ID
- IDENTITY_PROCESS_ID
- IDENTITY_PROCESS_TIME
- IDENTITY_SASL_USER_NAME
- IDENTITY_X509_DISTINGUISHED_NAME
- IDENTITY_SELINUX_CONTEXT
- CPU_COMPARE_ERROR
- CPU_COMPARE_INCOMPATIBLE
- CPU_COMPARE_IDENTICAL
- CPU_COMPARE_SUPERSET
- COMPARE_CPU_FAIL_INCOMPATIBLE
- COMPARE_CPU_VALIDATE_XML
- BASELINE_CPU_EXPAND_FEATURES
- BASELINE_CPU_MIGRATABLE
- ALLOC_PAGES_ADD
- ALLOC_PAGES_SET
- LIST_INTERFACES_INACTIVE
- LIST_INTERFACES_ACTIVE
- INTERFACE_DEFINE_VALIDATE
- LIST_NETWORKS_INACTIVE
- LIST_NETWORKS_ACTIVE
- LIST_NETWORKS_PERSISTENT
- LIST_NETWORKS_TRANSIENT
- LIST_NETWORKS_AUTOSTART
- LIST_NETWORKS_NO_AUTOSTART
- NETWORK_CREATE_VALIDATE
- NETWORK_DEFINE_VALIDATE
- NETWORK_EVENT_ID_LIFECYCLE
- NETWORK_EVENT_ID_METADATA_CHANGE
- LIST_NODE_DEVICES_CAP_SYSTEM
- LIST_NODE_DEVICES_CAP_PCI_DEV
- LIST_NODE_DEVICES_CAP_USB_DEV
- LIST_NODE_DEVICES_CAP_USB_INTERFACE
- LIST_NODE_DEVICES_CAP_NET
- LIST_NODE_DEVICES_CAP_SCSI_HOST
- LIST_NODE_DEVICES_CAP_SCSI_TARGET
- LIST_NODE_DEVICES_CAP_SCSI
- LIST_NODE_DEVICES_CAP_STORAGE
- LIST_NODE_DEVICES_CAP_FC_HOST
- LIST_NODE_DEVICES_CAP_VPORTS
- LIST_NODE_DEVICES_CAP_SCSI_GENERIC
- LIST_NODE_DEVICES_CAP_DRM
- LIST_NODE_DEVICES_CAP_MDEV_TYPES
- LIST_NODE_DEVICES_CAP_MDEV
- LIST_NODE_DEVICES_CAP_CCW_DEV
- LIST_NODE_DEVICES_CAP_CSS_DEV
- LIST_NODE_DEVICES_CAP_VDPA
- LIST_NODE_DEVICES_CAP_AP_CARD
- LIST_NODE_DEVICES_CAP_AP_QUEUE
- LIST_NODE_DEVICES_CAP_AP_MATRIX
- LIST_NODE_DEVICES_CAP_VPD
- LIST_NODE_DEVICES_PERSISTENT
- LIST_NODE_DEVICES_TRANSIENT
- LIST_NODE_DEVICES_INACTIVE
- LIST_NODE_DEVICES_ACTIVE
- NODE_DEVICE_CREATE_XML_VALIDATE
- NODE_DEVICE_DEFINE_XML_VALIDATE
- NODE_DEVICE_EVENT_ID_LIFECYCLE
- NODE_DEVICE_EVENT_ID_UPDATE
- NWFILTER_DEFINE_VALIDATE
- NWFILTER_BINDING_CREATE_VALIDATE
- SECRET_USAGE_TYPE_NONE
- SECRET_USAGE_TYPE_VOLUME
- SECRET_USAGE_TYPE_CEPH
- SECRET_USAGE_TYPE_ISCSI
- SECRET_USAGE_TYPE_TLS
- SECRET_USAGE_TYPE_VTPM
- LIST_SECRETS_EPHEMERAL
- LIST_SECRETS_NO_EPHEMERAL
- LIST_SECRETS_PRIVATE
- LIST_SECRETS_NO_PRIVATE
- SECRET_DEFINE_VALIDATE
- SECRET_EVENT_ID_LIFECYCLE
- SECRET_EVENT_ID_VALUE_CHANGED
- STORAGE_POOL_CREATE_NORMAL
- STORAGE_POOL_CREATE_WITH_BUILD
- STORAGE_POOL_CREATE_WITH_BUILD_OVERWRITE
- STORAGE_POOL_CREATE_WITH_BUILD_NO_OVERWRITE
- LIST_STORAGE_POOLS_INACTIVE
- LIST_STORAGE_POOLS_ACTIVE
- LIST_STORAGE_POOLS_PERSISTENT
- LIST_STORAGE_POOLS_TRANSIENT
- LIST_STORAGE_POOLS_AUTOSTART
- LIST_STORAGE_POOLS_NO_AUTOSTART
- LIST_STORAGE_POOLS_DIR
- LIST_STORAGE_POOLS_FS
- LIST_STORAGE_POOLS_NETFS
- LIST_STORAGE_POOLS_LOGICAL
- LIST_STORAGE_POOLS_DISK
- LIST_STORAGE_POOLS_ISCSI
- LIST_STORAGE_POOLS_SCSI
- LIST_STORAGE_POOLS_MPATH
- LIST_STORAGE_POOLS_RBD
- LIST_STORAGE_POOLS_SHEEPDOG
- LIST_STORAGE_POOLS_GLUSTER
- LIST_STORAGE_POOLS_ZFS
- LIST_STORAGE_POOLS_VSTORAGE
- LIST_STORAGE_POOLS_ISCSI_DIRECT
- STORAGE_POOL_DEFINE_VALIDATE
- STORAGE_VOL_CREATE_PREALLOC_METADATA
- STORAGE_VOL_CREATE_REFLINK
- STORAGE_VOL_CREATE_VALIDATE
- STORAGE_POOL_EVENT_ID_LIFECYCLE
- STORAGE_POOL_EVENT_ID_REFRESH
INTERNAL METHODS
_call
This method forwards protocol "calls" to the remote
instance. Using this wrapper allows for tracking all calls allowing to set up handling of the replies.
_dispatch_message
_dispatch_reply
_dispatch_stream
BUGS AND LIMITATIONS
Talking to servers without the REMOTE_EVENT_CALLBACK (since v1.3.3) feature is not - currently - supported
TODO
KeepAlive support
Stream-related entrypoints
Modules implementing connections for various protocols (unix, tcp, tls, etc)
@generate: none
entrypoints review (and implement relevant ones)Findings so far:
entrypoints with "nparams" have this flagging -> it seems these can be generated without problem; our approach would be to simply fill out the '_MAX' constant and return the actual parameters in an array
@generate: server
entrypoints review (and implement relevant ones)
UNIMPLEMENTED ENTRYPOINTS
The following entrypoints have not been implemented yet; contributions towards implementation are greatly appreciated.
@generate: none
REMOTE_PROC_CONNECT_CLOSE
REMOTE_PROC_DOMAIN_GET_VCPUS
REMOTE_PROC_DOMAIN_GET_SCHEDULER_TYPE
REMOTE_PROC_DOMAIN_MIGRATE_PREPARE
REMOTE_PROC_DOMAIN_BLOCK_PEEK
REMOTE_PROC_DOMAIN_MEMORY_PEEK
REMOTE_PROC_DOMAIN_MIGRATE_PREPARE2
REMOTE_PROC_DOMAIN_GET_SECURITY_LABEL
REMOTE_PROC_NODE_GET_SECURITY_MODEL
REMOTE_PROC_SECRET_GET_VALUE
REMOTE_PROC_DOMAIN_MEMORY_STATS
REMOTE_PROC_DOMAIN_GET_STATE
REMOTE_PROC_DOMAIN_MIGRATE_BEGIN3
REMOTE_PROC_DOMAIN_MIGRATE_PREPARE3
REMOTE_PROC_DOMAIN_MIGRATE_PERFORM3
REMOTE_PROC_DOMAIN_MIGRATE_FINISH3
REMOTE_PROC_DOMAIN_MIGRATE_CONFIRM3
REMOTE_PROC_DOMAIN_GET_VCPU_PIN_INFO
REMOTE_PROC_DOMAIN_GET_BLOCK_JOB_INFO
REMOTE_PROC_DOMAIN_OPEN_GRAPHICS
REMOTE_PROC_DOMAIN_GET_DISK_ERRORS
REMOTE_PROC_DOMAIN_GET_SECURITY_LABEL_LIST
REMOTE_PROC_DOMAIN_PIN_EMULATOR
REMOTE_PROC_DOMAIN_GET_EMULATOR_PIN_INFO
REMOTE_PROC_NODE_GET_CPU_MAP
REMOTE_PROC_DOMAIN_GET_JOB_STATS
REMOTE_PROC_DOMAIN_MIGRATE_BEGIN3_PARAMS
REMOTE_PROC_DOMAIN_MIGRATE_PREPARE3_PARAMS
REMOTE_PROC_DOMAIN_MIGRATE_PREPARE_TUNNEL3_PARAMS
REMOTE_PROC_DOMAIN_MIGRATE_PERFORM3_PARAMS
REMOTE_PROC_DOMAIN_MIGRATE_FINISH3_PARAMS
REMOTE_PROC_DOMAIN_MIGRATE_CONFIRM3_PARAMS
REMOTE_PROC_DOMAIN_CREATE_XML_WITH_FILES
REMOTE_PROC_DOMAIN_CREATE_WITH_FILES
REMOTE_PROC_CONNECT_GET_CPU_MODEL_NAMES
REMOTE_PROC_DOMAIN_GET_TIME
REMOTE_PROC_NODE_GET_FREE_PAGES
REMOTE_PROC_NETWORK_GET_DHCP_LEASES
REMOTE_PROC_DOMAIN_OPEN_GRAPHICS_FD
REMOTE_PROC_CONNECT_GET_ALL_DOMAIN_STATS
REMOTE_PROC_NODE_ALLOC_PAGES
REMOTE_PROC_DOMAIN_GET_FSINFO
REMOTE_PROC_DOMAIN_GET_IOTHREAD_INFO
REMOTE_PROC_DOMAIN_INTERFACE_ADDRESSES
REMOTE_PROC_DOMAIN_GET_PERF_EVENTS
REMOTE_PROC_DOMAIN_GET_LAUNCH_SECURITY_INFO
REMOTE_PROC_DOMAIN_GET_GUEST_INFO
REMOTE_PROC_DOMAIN_AUTHORIZED_SSH_KEYS_GET
REMOTE_PROC_DOMAIN_AUTHORIZED_SSH_KEYS_SET
REMOTE_PROC_DOMAIN_GET_MESSAGES
REMOTE_PROC_DOMAIN_FD_ASSOCIATE
@generate: none/nparams
REMOTE_PROC_DOMAIN_GET_BLKIO_PARAMETERS
REMOTE_PROC_NODE_GET_CPU_STATS
REMOTE_PROC_NODE_GET_MEMORY_STATS
REMOTE_PROC_DOMAIN_BLOCK_STATS_FLAGS
REMOTE_PROC_DOMAIN_GET_BLOCK_IO_TUNE
REMOTE_PROC_DOMAIN_GET_NUMA_PARAMETERS
REMOTE_PROC_DOMAIN_GET_INTERFACE_PARAMETERS
REMOTE_PROC_DOMAIN_GET_CPU_STATS
REMOTE_PROC_NODE_GET_MEMORY_PARAMETERS
REMOTE_PROC_NODE_GET_SEV_INFO
REMOTE_PROC_NETWORK_PORT_GET_PARAMETERS
@generate: server
REMOTE_PROC_DOMAIN_CREATE
REMOTE_PROC_CONNECT_LIST_DOMAINS
REMOTE_PROC_CONNECT_FIND_STORAGE_POOL_SOURCES
REMOTE_PROC_NODE_GET_CELLS_FREE_MEMORY
REMOTE_PROC_CONNECT_GET_URI
REMOTE_PROC_NODE_DEVICE_DETTACH
REMOTE_PROC_NODE_DEVICE_RE_ATTACH
REMOTE_PROC_NODE_DEVICE_RESET
REMOTE_PROC_CONNECT_IS_SECURE
REMOTE_PROC_DOMAIN_MIGRATE_PREPARE_TUNNEL3
REMOTE_PROC_NODE_DEVICE_DETACH_FLAGS
REMOTE_PROC_DOMAIN_RENAME
REMOTE_PROC_STORAGE_VOL_GET_INFO_FLAGS
@readstream
REMOTE_PROC_STORAGE_VOL_DOWNLOAD
REMOTE_PROC_DOMAIN_SCREENSHOT
REMOTE_PROC_DOMAIN_OPEN_CHANNEL
@writestream
REMOTE_PROC_STORAGE_VOL_UPLOAD
SEE ALSO
LICENSE AND COPYRIGHT
Copyright (C) 2024 Erik Huelsmann
All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
5 POD Errors
The following errors were encountered while parsing the POD:
- Around line 3140:
=over should be: '=over' or '=over positive_number'
- Around line 3250:
=over should be: '=over' or '=over positive_number'
- Around line 3280:
=over should be: '=over' or '=over positive_number'
- Around line 3314:
=over should be: '=over' or '=over positive_number'
- Around line 3328:
=over should be: '=over' or '=over positive_number'