The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Sys::Async::Virt - LibVirt protocol implementation for clients

VERSION

v0.0.2

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_cpu_model_names

  $models = await $client->get_cpu_model_names( $arch, $flags = 0 );

See documentation of virConnectGetCPUModelNames.

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_cpu_stats

  $params = await $client->node_get_cpu_stats( $cpuNum, $flags = 0 );

See documentation of virNodeGetCPUStats.

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_get_memory_parameters

  $params = await $client->node_get_memory_parameters( $flags = 0 );

See documentation of virNodeGetMemoryParameters.

node_get_memory_stats

  $params = await $client->node_get_memory_stats( $cellNum, $flags = 0 );

See documentation of virNodeGetMemoryStats.

node_get_sev_info

  $params = await $client->node_get_sev_info( $flags = 0 );

See documentation of virNodeGetSEVInfo.

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_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;
           the call needs to be executed with nparams==0 in order to retrieve
           the supported maximum value.
  • @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_AUTH_SASL_START

      • REMOTE_PROC_AUTH_SASL_STEP

      • REMOTE_PROC_CONNECT_DOMAIN_EVENT_DEREGISTER

      • REMOTE_PROC_CONNECT_DOMAIN_EVENT_DEREGISTER_ANY

      • REMOTE_PROC_CONNECT_DOMAIN_EVENT_REGISTER

      • REMOTE_PROC_CONNECT_DOMAIN_EVENT_REGISTER_ANY

      • REMOTE_PROC_CONNECT_GET_ALL_DOMAIN_STATS

      • REMOTE_PROC_DOMAIN_AUTHORIZED_SSH_KEYS_GET

      • REMOTE_PROC_DOMAIN_AUTHORIZED_SSH_KEYS_SET

      • REMOTE_PROC_DOMAIN_BLOCK_PEEK

      • REMOTE_PROC_DOMAIN_CREATE_WITH_FILES

      • REMOTE_PROC_DOMAIN_CREATE_XML_WITH_FILES

      • REMOTE_PROC_DOMAIN_FD_ASSOCIATE

      • REMOTE_PROC_DOMAIN_GET_BLOCK_JOB_INFO

      • REMOTE_PROC_DOMAIN_GET_DISK_ERRORS

      • REMOTE_PROC_DOMAIN_GET_EMULATOR_PIN_INFO

      • REMOTE_PROC_DOMAIN_GET_FSINFO

      • REMOTE_PROC_DOMAIN_GET_GUEST_INFO

      • REMOTE_PROC_DOMAIN_GET_IOTHREAD_INFO

      • REMOTE_PROC_DOMAIN_GET_JOB_STATS

      • REMOTE_PROC_DOMAIN_GET_LAUNCH_SECURITY_INFO

      • REMOTE_PROC_DOMAIN_GET_MESSAGES

      • REMOTE_PROC_DOMAIN_GET_PERF_EVENTS

      • REMOTE_PROC_DOMAIN_GET_SCHEDULER_TYPE

      • REMOTE_PROC_DOMAIN_GET_SECURITY_LABEL

      • REMOTE_PROC_DOMAIN_GET_SECURITY_LABEL_LIST

      • REMOTE_PROC_DOMAIN_GET_STATE

      • REMOTE_PROC_DOMAIN_GET_TIME

      • REMOTE_PROC_DOMAIN_GET_VCPUS

      • REMOTE_PROC_DOMAIN_GET_VCPU_PIN_INFO

      • REMOTE_PROC_DOMAIN_INTERFACE_ADDRESSES

      • REMOTE_PROC_DOMAIN_MEMORY_PEEK

      • REMOTE_PROC_DOMAIN_MEMORY_STATS

      • REMOTE_PROC_DOMAIN_MIGRATE_BEGIN3

      • REMOTE_PROC_DOMAIN_MIGRATE_BEGIN3_PARAMS

      • REMOTE_PROC_DOMAIN_MIGRATE_CONFIRM3

      • REMOTE_PROC_DOMAIN_MIGRATE_CONFIRM3_PARAMS

      • REMOTE_PROC_DOMAIN_MIGRATE_FINISH3

      • REMOTE_PROC_DOMAIN_MIGRATE_FINISH3_PARAMS

      • REMOTE_PROC_DOMAIN_MIGRATE_PERFORM3

      • REMOTE_PROC_DOMAIN_MIGRATE_PERFORM3_PARAMS

      • REMOTE_PROC_DOMAIN_MIGRATE_PREPARE

      • REMOTE_PROC_DOMAIN_MIGRATE_PREPARE2

      • REMOTE_PROC_DOMAIN_MIGRATE_PREPARE3

      • REMOTE_PROC_DOMAIN_MIGRATE_PREPARE3_PARAMS

      • REMOTE_PROC_DOMAIN_MIGRATE_PREPARE_TUNNEL3_PARAMS

      • REMOTE_PROC_DOMAIN_OPEN_GRAPHICS

      • REMOTE_PROC_DOMAIN_OPEN_GRAPHICS_FD

      • REMOTE_PROC_DOMAIN_PIN_EMULATOR

      • REMOTE_PROC_NODE_ALLOC_PAGES

      • REMOTE_PROC_NODE_GET_CPU_MAP

      • REMOTE_PROC_NODE_GET_FREE_PAGES

      • REMOTE_PROC_NODE_GET_SECURITY_MODEL

      • REMOTE_PROC_SECRET_GET_VALUE

    • @generate: server

      • REMOTE_PROC_CONNECT_FIND_STORAGE_POOL_SOURCES

      • REMOTE_PROC_CONNECT_GET_TYPE

      • REMOTE_PROC_CONNECT_GET_URI

      • REMOTE_PROC_CONNECT_IS_SECURE

      • REMOTE_PROC_CONNECT_LIST_DOMAINS

      • REMOTE_PROC_DOMAIN_CREATE

      • REMOTE_PROC_DOMAIN_MIGRATE_PREPARE_TUNNEL3

      • REMOTE_PROC_DOMAIN_RENAME

      • REMOTE_PROC_NODE_DEVICE_DETACH_FLAGS

      • REMOTE_PROC_NODE_DEVICE_DETTACH

      • REMOTE_PROC_NODE_DEVICE_RESET

      • REMOTE_PROC_NODE_DEVICE_RE_ATTACH

      • REMOTE_PROC_NODE_GET_CELLS_FREE_MEMORY

      • REMOTE_PROC_STORAGE_VOL_GET_INFO_FLAGS

    • @readstream

      • REMOTE_PROC_DOMAIN_OPEN_CHANNEL

      • REMOTE_PROC_DOMAIN_OPEN_CONSOLE

      • REMOTE_PROC_DOMAIN_SCREENSHOT

      • REMOTE_PROC_STORAGE_VOL_DOWNLOAD

    • @writestream

      • REMOTE_PROC_DOMAIN_MIGRATE_PREPARE_TUNNEL

      • REMOTE_PROC_STORAGE_VOL_UPLOAD

SEE ALSO

LibVirt, Sys::Virt

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.