File Coverage

blib/lib/Sys/Async/Virt/Domain.pm
Criterion Covered Total %
statement 38 1247 3.0
branch 0 104 0.0
condition 0 158 0.0
subroutine 13 180 7.2
pod 160 164 97.5
total 211 1853 11.3


line stmt bran cond sub pod time code
1             ####################################################################
2             #
3             # This file was generated using XDR::Parse version v1.0.1
4             # and LibVirt version v12.3.0
5             #
6             # Don't edit this file, use the source template instead
7             #
8             # ANY CHANGES HERE WILL BE LOST !
9             #
10             ####################################################################
11              
12              
13 1     1   11 use v5.26;
  1         3  
14 1     1   4 use warnings;
  1         1  
  1         46  
15 1     1   5 use experimental 'signatures';
  1         1  
  1         4  
16 1     1   113 use Feature::Compat::Try;
  1         2  
  1         10  
17 1     1   70 use Future::AsyncAwait;
  1         2  
  1         4  
18 1     1   46 use Object::Pad 0.821;
  1         7  
  1         61  
19 1     1   98 use Sublike::Extended 0.29 'method', 'sub'; # From XS-Parse-Sublike, used by Future::AsyncAwait
  1         12  
  1         6  
20              
21             class Sys::Async::Virt::Domain v0.6.3;
22              
23 1     1   118 use Carp qw(croak);
  1         1  
  1         50  
24 1     1   3 use Log::Any qw($log);
  1         1  
  1         5  
25              
26 1     1   772 use Protocol::Sys::Virt::TypedParams v12.3.0;
  1         8047  
  1         181  
27 1     1   7 use Protocol::Sys::Virt::URI v12.3.0;
  1         13  
  1         47  
28 1     1   5 use Protocol::Sys::Virt::Remote::XDR v12.3.0;
  1         11  
  1         3237  
29             my $remote = 'Protocol::Sys::Virt::Remote::XDR';
30              
31             use constant {
32 1         42799 CHECKPOINT_CREATE_REDEFINE => (1 << 0),
33             CHECKPOINT_CREATE_QUIESCE => (1 << 1),
34             CHECKPOINT_CREATE_REDEFINE_VALIDATE => (1 << 2),
35             SNAPSHOT_CREATE_REDEFINE => (1 << 0),
36             SNAPSHOT_CREATE_CURRENT => (1 << 1),
37             SNAPSHOT_CREATE_NO_METADATA => (1 << 2),
38             SNAPSHOT_CREATE_HALT => (1 << 3),
39             SNAPSHOT_CREATE_DISK_ONLY => (1 << 4),
40             SNAPSHOT_CREATE_REUSE_EXT => (1 << 5),
41             SNAPSHOT_CREATE_QUIESCE => (1 << 6),
42             SNAPSHOT_CREATE_ATOMIC => (1 << 7),
43             SNAPSHOT_CREATE_LIVE => (1 << 8),
44             SNAPSHOT_CREATE_VALIDATE => (1 << 9),
45             NOSTATE => 0,
46             RUNNING => 1,
47             BLOCKED => 2,
48             PAUSED => 3,
49             SHUTDOWN => 4,
50             SHUTOFF => 5,
51             CRASHED => 6,
52             PMSUSPENDED => 7,
53             NOSTATE_UNKNOWN => 0,
54             RUNNING_UNKNOWN => 0,
55             RUNNING_BOOTED => 1,
56             RUNNING_MIGRATED => 2,
57             RUNNING_RESTORED => 3,
58             RUNNING_FROM_SNAPSHOT => 4,
59             RUNNING_UNPAUSED => 5,
60             RUNNING_MIGRATION_CANCELED => 6,
61             RUNNING_SAVE_CANCELED => 7,
62             RUNNING_WAKEUP => 8,
63             RUNNING_CRASHED => 9,
64             RUNNING_POSTCOPY => 10,
65             RUNNING_POSTCOPY_FAILED => 11,
66             BLOCKED_UNKNOWN => 0,
67             PAUSED_UNKNOWN => 0,
68             PAUSED_USER => 1,
69             PAUSED_MIGRATION => 2,
70             PAUSED_SAVE => 3,
71             PAUSED_DUMP => 4,
72             PAUSED_IOERROR => 5,
73             PAUSED_WATCHDOG => 6,
74             PAUSED_FROM_SNAPSHOT => 7,
75             PAUSED_SHUTTING_DOWN => 8,
76             PAUSED_SNAPSHOT => 9,
77             PAUSED_CRASHED => 10,
78             PAUSED_STARTING_UP => 11,
79             PAUSED_POSTCOPY => 12,
80             PAUSED_POSTCOPY_FAILED => 13,
81             PAUSED_API_ERROR => 14,
82             SHUTDOWN_UNKNOWN => 0,
83             SHUTDOWN_USER => 1,
84             SHUTOFF_UNKNOWN => 0,
85             SHUTOFF_SHUTDOWN => 1,
86             SHUTOFF_DESTROYED => 2,
87             SHUTOFF_CRASHED => 3,
88             SHUTOFF_MIGRATED => 4,
89             SHUTOFF_SAVED => 5,
90             SHUTOFF_FAILED => 6,
91             SHUTOFF_FROM_SNAPSHOT => 7,
92             SHUTOFF_DAEMON => 8,
93             CRASHED_UNKNOWN => 0,
94             CRASHED_PANICKED => 1,
95             PMSUSPENDED_UNKNOWN => 0,
96             PMSUSPENDED_DISK_UNKNOWN => 0,
97             CONTROL_OK => 0,
98             CONTROL_JOB => 1,
99             CONTROL_OCCUPIED => 2,
100             CONTROL_ERROR => 3,
101             CONTROL_ERROR_REASON_NONE => 0,
102             CONTROL_ERROR_REASON_UNKNOWN => 1,
103             CONTROL_ERROR_REASON_MONITOR => 2,
104             CONTROL_ERROR_REASON_INTERNAL => 3,
105             AFFECT_CURRENT => 0,
106             AFFECT_LIVE => 1 << 0,
107             AFFECT_CONFIG => 1 << 1,
108             NONE => 0,
109             START_PAUSED => 1 << 0,
110             START_AUTODESTROY => 1 << 1,
111             START_BYPASS_CACHE => 1 << 2,
112             START_FORCE_BOOT => 1 << 3,
113             START_VALIDATE => 1 << 4,
114             START_RESET_NVRAM => 1 << 5,
115             SCHEDULER_CPU_SHARES => "cpu_shares",
116             SCHEDULER_GLOBAL_PERIOD => "global_period",
117             SCHEDULER_GLOBAL_QUOTA => "global_quota",
118             SCHEDULER_VCPU_PERIOD => "vcpu_period",
119             SCHEDULER_VCPU_QUOTA => "vcpu_quota",
120             SCHEDULER_EMULATOR_PERIOD => "emulator_period",
121             SCHEDULER_EMULATOR_QUOTA => "emulator_quota",
122             SCHEDULER_IOTHREAD_PERIOD => "iothread_period",
123             SCHEDULER_IOTHREAD_QUOTA => "iothread_quota",
124             SCHEDULER_WEIGHT => "weight",
125             SCHEDULER_CAP => "cap",
126             SCHEDULER_RESERVATION => "reservation",
127             SCHEDULER_LIMIT => "limit",
128             SCHEDULER_SHARES => "shares",
129             BLOCK_STATS_FIELD_LENGTH => 80,
130             BLOCK_STATS_READ_BYTES => "rd_bytes",
131             BLOCK_STATS_READ_REQ => "rd_operations",
132             BLOCK_STATS_READ_TOTAL_TIMES => "rd_total_times",
133             BLOCK_STATS_WRITE_BYTES => "wr_bytes",
134             BLOCK_STATS_WRITE_REQ => "wr_operations",
135             BLOCK_STATS_WRITE_TOTAL_TIMES => "wr_total_times",
136             BLOCK_STATS_FLUSH_REQ => "flush_operations",
137             BLOCK_STATS_FLUSH_TOTAL_TIMES => "flush_total_times",
138             BLOCK_STATS_ERRS => "errs",
139             MEMORY_STAT_SWAP_IN => 0,
140             MEMORY_STAT_SWAP_OUT => 1,
141             MEMORY_STAT_MAJOR_FAULT => 2,
142             MEMORY_STAT_MINOR_FAULT => 3,
143             MEMORY_STAT_UNUSED => 4,
144             MEMORY_STAT_AVAILABLE => 5,
145             MEMORY_STAT_ACTUAL_BALLOON => 6,
146             MEMORY_STAT_RSS => 7,
147             MEMORY_STAT_USABLE => 8,
148             MEMORY_STAT_LAST_UPDATE => 9,
149             MEMORY_STAT_DISK_CACHES => 10,
150             MEMORY_STAT_HUGETLB_PGALLOC => 11,
151             MEMORY_STAT_HUGETLB_PGFAIL => 12,
152             MEMORY_STAT_NR => 13,
153             MEMORY_STAT_LAST => 13,
154             DUMP_CRASH => (1 << 0),
155             DUMP_LIVE => (1 << 1),
156             DUMP_BYPASS_CACHE => (1 << 2),
157             DUMP_RESET => (1 << 3),
158             DUMP_MEMORY_ONLY => (1 << 4),
159             MIGRATE_LIVE => (1 << 0),
160             MIGRATE_PEER2PEER => (1 << 1),
161             MIGRATE_TUNNELLED => (1 << 2),
162             MIGRATE_PERSIST_DEST => (1 << 3),
163             MIGRATE_UNDEFINE_SOURCE => (1 << 4),
164             MIGRATE_PAUSED => (1 << 5),
165             MIGRATE_NON_SHARED_DISK => (1 << 6),
166             MIGRATE_NON_SHARED_INC => (1 << 7),
167             MIGRATE_CHANGE_PROTECTION => (1 << 8),
168             MIGRATE_UNSAFE => (1 << 9),
169             MIGRATE_OFFLINE => (1 << 10),
170             MIGRATE_COMPRESSED => (1 << 11),
171             MIGRATE_ABORT_ON_ERROR => (1 << 12),
172             MIGRATE_AUTO_CONVERGE => (1 << 13),
173             MIGRATE_RDMA_PIN_ALL => (1 << 14),
174             MIGRATE_POSTCOPY => (1 << 15),
175             MIGRATE_TLS => (1 << 16),
176             MIGRATE_PARALLEL => (1 << 17),
177             MIGRATE_NON_SHARED_SYNCHRONOUS_WRITES => (1 << 18),
178             MIGRATE_POSTCOPY_RESUME => (1 << 19),
179             MIGRATE_ZEROCOPY => (1 << 20),
180             MIGRATE_PARAM_URI => "migrate_uri",
181             MIGRATE_PARAM_DEST_NAME => "destination_name",
182             MIGRATE_PARAM_DEST_XML => "destination_xml",
183             MIGRATE_PARAM_PERSIST_XML => "persistent_xml",
184             MIGRATE_PARAM_BANDWIDTH => "bandwidth",
185             MIGRATE_PARAM_BANDWIDTH_POSTCOPY => "bandwidth.postcopy",
186             MIGRATE_PARAM_BANDWIDTH_AVAIL_SWITCHOVER => "bandwidth.avail.switchover",
187             MIGRATE_PARAM_GRAPHICS_URI => "graphics_uri",
188             MIGRATE_PARAM_LISTEN_ADDRESS => "listen_address",
189             MIGRATE_PARAM_MIGRATE_DISKS => "migrate_disks",
190             MIGRATE_PARAM_MIGRATE_DISKS_DETECT_ZEROES => "migrate_disks_detect_zeroes",
191             MIGRATE_PARAM_MIGRATE_DISKS_TARGET_ZERO => "migrate_disks_target_zero",
192             MIGRATE_PARAM_DISKS_PORT => "disks_port",
193             MIGRATE_PARAM_DISKS_URI => "disks_uri",
194             MIGRATE_PARAM_COMPRESSION => "compression",
195             MIGRATE_PARAM_COMPRESSION_MT_LEVEL => "compression.mt.level",
196             MIGRATE_PARAM_COMPRESSION_MT_THREADS => "compression.mt.threads",
197             MIGRATE_PARAM_COMPRESSION_MT_DTHREADS => "compression.mt.dthreads",
198             MIGRATE_PARAM_COMPRESSION_XBZRLE_CACHE => "compression.xbzrle.cache",
199             MIGRATE_PARAM_COMPRESSION_ZLIB_LEVEL => "compression.zlib.level",
200             MIGRATE_PARAM_COMPRESSION_ZSTD_LEVEL => "compression.zstd.level",
201             MIGRATE_PARAM_AUTO_CONVERGE_INITIAL => "auto_converge.initial",
202             MIGRATE_PARAM_AUTO_CONVERGE_INCREMENT => "auto_converge.increment",
203             MIGRATE_PARAM_PARALLEL_CONNECTIONS => "parallel.connections",
204             MIGRATE_PARAM_TLS_DESTINATION => "tls.destination",
205             MIGRATE_MAX_SPEED_POSTCOPY => (1 << 0),
206             SHUTDOWN_DEFAULT => 0,
207             SHUTDOWN_ACPI_POWER_BTN => (1 << 0),
208             SHUTDOWN_GUEST_AGENT => (1 << 1),
209             SHUTDOWN_INITCTL => (1 << 2),
210             SHUTDOWN_SIGNAL => (1 << 3),
211             SHUTDOWN_PARAVIRT => (1 << 4),
212             REBOOT_DEFAULT => 0,
213             REBOOT_ACPI_POWER_BTN => (1 << 0),
214             REBOOT_GUEST_AGENT => (1 << 1),
215             REBOOT_INITCTL => (1 << 2),
216             REBOOT_SIGNAL => (1 << 3),
217             REBOOT_PARAVIRT => (1 << 4),
218             DESTROY_DEFAULT => 0,
219             DESTROY_GRACEFUL => 1 << 0,
220             DESTROY_REMOVE_LOGS => 1 << 1,
221             SAVE_BYPASS_CACHE => 1 << 0,
222             SAVE_RUNNING => 1 << 1,
223             SAVE_PAUSED => 1 << 2,
224             SAVE_RESET_NVRAM => 1 << 3,
225             SAVE_PARAM_FILE => "file",
226             SAVE_PARAM_DXML => "dxml",
227             SAVE_PARAM_IMAGE_FORMAT => "image_format",
228             SAVE_PARAM_IMAGE_FORMAT_RAW => "raw",
229             SAVE_PARAM_IMAGE_FORMAT_GZIP => "gzip",
230             SAVE_PARAM_IMAGE_FORMAT_BZIP2 => "bzip2",
231             SAVE_PARAM_IMAGE_FORMAT_XZ => "xz",
232             SAVE_PARAM_IMAGE_FORMAT_LZOP => "lzop",
233             SAVE_PARAM_IMAGE_FORMAT_ZSTD => "zstd",
234             SAVE_PARAM_IMAGE_FORMAT_SPARSE => "sparse",
235             SAVE_PARAM_PARALLEL_CHANNELS => "parallel.channels",
236             CPU_STATS_CPUTIME => "cpu_time",
237             CPU_STATS_USERTIME => "user_time",
238             CPU_STATS_SYSTEMTIME => "system_time",
239             CPU_STATS_VCPUTIME => "vcpu_time",
240             BLKIO_WEIGHT => "weight",
241             BLKIO_DEVICE_WEIGHT => "device_weight",
242             BLKIO_DEVICE_READ_IOPS => "device_read_iops_sec",
243             BLKIO_DEVICE_WRITE_IOPS => "device_write_iops_sec",
244             BLKIO_DEVICE_READ_BPS => "device_read_bytes_sec",
245             BLKIO_DEVICE_WRITE_BPS => "device_write_bytes_sec",
246             MEMORY_PARAM_UNLIMITED => 9007199254740991,
247             MEMORY_HARD_LIMIT => "hard_limit",
248             MEMORY_SOFT_LIMIT => "soft_limit",
249             MEMORY_MIN_GUARANTEE => "min_guarantee",
250             MEMORY_SWAP_HARD_LIMIT => "swap_hard_limit",
251             MEM_CURRENT => 0,
252             MEM_LIVE => 1 << 0,
253             MEM_CONFIG => 1 << 1,
254             MEM_MAXIMUM => (1 << 2),
255             NUMATUNE_MEM_STRICT => 0,
256             NUMATUNE_MEM_PREFERRED => 1,
257             NUMATUNE_MEM_INTERLEAVE => 2,
258             NUMATUNE_MEM_RESTRICTIVE => 3,
259             NUMA_NODESET => "numa_nodeset",
260             NUMA_MODE => "numa_mode",
261             GET_HOSTNAME_LEASE => (1 << 0),
262             GET_HOSTNAME_AGENT => (1 << 1),
263             METADATA_DESCRIPTION => 0,
264             METADATA_TITLE => 1,
265             METADATA_ELEMENT => 2,
266             XML_SECURE => (1 << 0),
267             XML_INACTIVE => (1 << 1),
268             XML_UPDATE_CPU => (1 << 2),
269             XML_MIGRATABLE => (1 << 3),
270             SAVE_IMAGE_XML_SECURE => (1 << 0),
271             BANDWIDTH_IN_AVERAGE => "inbound.average",
272             BANDWIDTH_IN_PEAK => "inbound.peak",
273             BANDWIDTH_IN_BURST => "inbound.burst",
274             BANDWIDTH_IN_FLOOR => "inbound.floor",
275             BANDWIDTH_OUT_AVERAGE => "outbound.average",
276             BANDWIDTH_OUT_PEAK => "outbound.peak",
277             BANDWIDTH_OUT_BURST => "outbound.burst",
278             BLOCK_RESIZE_BYTES => 1 << 0,
279             BLOCK_RESIZE_CAPACITY => 1 << 1,
280             BLOCK_RESIZE_EXTEND => 1 << 2,
281             MEMORY_VIRTUAL => 1 << 0,
282             MEMORY_PHYSICAL => 1 << 1,
283             UNDEFINE_MANAGED_SAVE => (1 << 0),
284             UNDEFINE_SNAPSHOTS_METADATA => (1 << 1),
285             UNDEFINE_NVRAM => (1 << 2),
286             UNDEFINE_KEEP_NVRAM => (1 << 3),
287             UNDEFINE_CHECKPOINTS_METADATA => (1 << 4),
288             UNDEFINE_TPM => (1 << 5),
289             UNDEFINE_KEEP_TPM => (1 << 6),
290             VCPU_OFFLINE => 0,
291             VCPU_RUNNING => 1,
292             VCPU_BLOCKED => 2,
293             VCPU_INFO_CPU_OFFLINE => -1,
294             VCPU_INFO_CPU_UNAVAILABLE => -2,
295             VCPU_CURRENT => 0,
296             VCPU_LIVE => 1 << 0,
297             VCPU_CONFIG => 1 << 1,
298             VCPU_MAXIMUM => (1 << 2),
299             VCPU_GUEST => (1 << 3),
300             VCPU_HOTPLUGGABLE => (1 << 4),
301             IOTHREAD_POLL_MAX_NS => "poll_max_ns",
302             IOTHREAD_POLL_GROW => "poll_grow",
303             IOTHREAD_POLL_SHRINK => "poll_shrink",
304             IOTHREAD_THREAD_POOL_MIN => "thread_pool_min",
305             IOTHREAD_THREAD_POOL_MAX => "thread_pool_max",
306             DEVICE_MODIFY_CURRENT => 0,
307             DEVICE_MODIFY_LIVE => 1 << 0,
308             DEVICE_MODIFY_CONFIG => 1 << 1,
309             DEVICE_MODIFY_FORCE => (1 << 2),
310             STATS_STATE_STATE => "state.state",
311             STATS_STATE_REASON => "state.reason",
312             STATS_CPU_TIME => "cpu.time",
313             STATS_CPU_USER => "cpu.user",
314             STATS_CPU_SYSTEM => "cpu.system",
315             STATS_CPU_HALTPOLL_SUCCESS_TIME => "cpu.haltpoll.success.time",
316             STATS_CPU_HALTPOLL_FAIL_TIME => "cpu.haltpoll.fail.time",
317             STATS_CPU_CACHE_MONITOR_COUNT => "cpu.cache.monitor.count",
318             STATS_CPU_CACHE_MONITOR_PREFIX => "cpu.cache.monitor.",
319             STATS_CPU_CACHE_MONITOR_SUFFIX_NAME => ".name",
320             STATS_CPU_CACHE_MONITOR_SUFFIX_VCPUS => ".vcpus",
321             STATS_CPU_CACHE_MONITOR_SUFFIX_BANK_COUNT => ".bank.count",
322             STATS_CPU_CACHE_MONITOR_SUFFIX_BANK_PREFIX => ".bank.",
323             STATS_CPU_CACHE_MONITOR_SUFFIX_BANK_SUFFIX_ID => ".id",
324             STATS_CPU_CACHE_MONITOR_SUFFIX_BANK_SUFFIX_BYTES => ".bytes",
325             STATS_BALLOON_CURRENT => "balloon.current",
326             STATS_BALLOON_MAXIMUM => "balloon.maximum",
327             STATS_BALLOON_SWAP_IN => "balloon.swap_in",
328             STATS_BALLOON_SWAP_OUT => "balloon.swap_out",
329             STATS_BALLOON_MAJOR_FAULT => "balloon.major_fault",
330             STATS_BALLOON_MINOR_FAULT => "balloon.minor_fault",
331             STATS_BALLOON_UNUSED => "balloon.unused",
332             STATS_BALLOON_AVAILABLE => "balloon.available",
333             STATS_BALLOON_RSS => "balloon.rss",
334             STATS_BALLOON_USABLE => "balloon.usable",
335             STATS_BALLOON_LAST_UPDATE => "balloon.last-update",
336             STATS_BALLOON_DISK_CACHES => "balloon.disk_caches",
337             STATS_BALLOON_HUGETLB_PGALLOC => "balloon.hugetlb_pgalloc",
338             STATS_BALLOON_HUGETLB_PGFAIL => "balloon.hugetlb_pgfail",
339             STATS_VCPU_CURRENT => "vcpu.current",
340             STATS_VCPU_MAXIMUM => "vcpu.maximum",
341             STATS_VCPU_PREFIX => "vcpu.",
342             STATS_VCPU_SUFFIX_STATE => ".state",
343             STATS_VCPU_SUFFIX_TIME => ".time",
344             STATS_VCPU_SUFFIX_WAIT => ".wait",
345             STATS_VCPU_SUFFIX_HALTED => ".halted",
346             STATS_VCPU_SUFFIX_DELAY => ".delay",
347             STATS_CUSTOM_SUFFIX_TYPE_CUR => ".cur",
348             STATS_CUSTOM_SUFFIX_TYPE_SUM => ".sum",
349             STATS_CUSTOM_SUFFIX_TYPE_MAX => ".max",
350             STATS_NET_COUNT => "net.count",
351             STATS_NET_PREFIX => "net.",
352             STATS_NET_SUFFIX_NAME => ".name",
353             STATS_NET_SUFFIX_RX_BYTES => ".rx.bytes",
354             STATS_NET_SUFFIX_RX_PKTS => ".rx.pkts",
355             STATS_NET_SUFFIX_RX_ERRS => ".rx.errs",
356             STATS_NET_SUFFIX_RX_DROP => ".rx.drop",
357             STATS_NET_SUFFIX_TX_BYTES => ".tx.bytes",
358             STATS_NET_SUFFIX_TX_PKTS => ".tx.pkts",
359             STATS_NET_SUFFIX_TX_ERRS => ".tx.errs",
360             STATS_NET_SUFFIX_TX_DROP => ".tx.drop",
361             STATS_BLOCK_COUNT => "block.count",
362             STATS_BLOCK_PREFIX => "block.",
363             STATS_BLOCK_SUFFIX_NAME => ".name",
364             STATS_BLOCK_SUFFIX_BACKINGINDEX => ".backingIndex",
365             STATS_BLOCK_SUFFIX_PATH => ".path",
366             STATS_BLOCK_SUFFIX_RD_REQS => ".rd.reqs",
367             STATS_BLOCK_SUFFIX_RD_BYTES => ".rd.bytes",
368             STATS_BLOCK_SUFFIX_RD_TIMES => ".rd.times",
369             STATS_BLOCK_SUFFIX_WR_REQS => ".wr.reqs",
370             STATS_BLOCK_SUFFIX_WR_BYTES => ".wr.bytes",
371             STATS_BLOCK_SUFFIX_WR_TIMES => ".wr.times",
372             STATS_BLOCK_SUFFIX_FL_REQS => ".fl.reqs",
373             STATS_BLOCK_SUFFIX_FL_TIMES => ".fl.times",
374             STATS_BLOCK_SUFFIX_ERRORS => ".errors",
375             STATS_BLOCK_SUFFIX_ALLOCATION => ".allocation",
376             STATS_BLOCK_SUFFIX_CAPACITY => ".capacity",
377             STATS_BLOCK_SUFFIX_PHYSICAL => ".physical",
378             STATS_BLOCK_SUFFIX_THRESHOLD => ".threshold",
379             STATS_BLOCK_SUFFIX_LIMITS_REQUEST_ALIGNMENT => ".limits.request_alignment",
380             STATS_BLOCK_SUFFIX_LIMITS_DISCARD_MAX => ".limits.discard_max",
381             STATS_BLOCK_SUFFIX_LIMITS_DISCARD_ALIGNMENT => ".limits.discard_alignment",
382             STATS_BLOCK_SUFFIX_LIMITS_WRITE_ZEROES_MAX => ".limits.write_zeroes_max",
383             STATS_BLOCK_SUFFIX_LIMITS_WRITE_ZEROES_ALIGNMENT => ".limits.write_zeroes_alignment",
384             STATS_BLOCK_SUFFIX_LIMITS_TRANSFER_OPTIMAL => ".limits.transfer_optimal",
385             STATS_BLOCK_SUFFIX_LIMITS_TRANSFER_MAX => ".limits.transfer_max",
386             STATS_BLOCK_SUFFIX_LIMITS_TRANSFER_HW_MAX => ".limits.transfer_hw_max",
387             STATS_BLOCK_SUFFIX_LIMITS_IOV_MAX => ".limits.iov_max",
388             STATS_BLOCK_SUFFIX_LIMITS_IOV_HW_MAX => ".limits.iov_hw_max",
389             STATS_BLOCK_SUFFIX_LIMITS_MEMORY_ALIGNMENT_MINIMAL => ".limits.memory_alignment_minimal",
390             STATS_BLOCK_SUFFIX_LIMITS_MEMORY_ALIGNMENT_OPTIMAL => ".limits.memory_alignment_optimal",
391             STATS_BLOCK_SUFFIX_TIMED_GROUP_COUNT => ".timed_group.count",
392             STATS_BLOCK_SUFFIX_TIMED_GROUP_PREFIX => ".timed_group.",
393             STATS_BLOCK_SUFFIX_TIMED_GROUP_SUFFIX_INTERVAL => ".interval",
394             STATS_BLOCK_SUFFIX_TIMED_GROUP_SUFFIX_RD_LATENCY_MIN => ".rd_latency_min",
395             STATS_BLOCK_SUFFIX_TIMED_GROUP_SUFFIX_RD_LATENCY_MAX => ".rd_latency_max",
396             STATS_BLOCK_SUFFIX_TIMED_GROUP_SUFFIX_RD_LATENCY_AVG => ".rd_latency_avg",
397             STATS_BLOCK_SUFFIX_TIMED_GROUP_SUFFIX_WR_LATENCY_MIN => ".wr_latency_min",
398             STATS_BLOCK_SUFFIX_TIMED_GROUP_SUFFIX_WR_LATENCY_MAX => ".wr_latency_max",
399             STATS_BLOCK_SUFFIX_TIMED_GROUP_SUFFIX_WR_LATENCY_AVG => ".wr_latency_avg",
400             STATS_BLOCK_SUFFIX_TIMED_GROUP_SUFFIX_ZONE_APPEND_LATENCY_MIN => ".zone_append_latency_min",
401             STATS_BLOCK_SUFFIX_TIMED_GROUP_SUFFIX_ZONE_APPEND_LATENCY_MAX => ".zone_append_latency_max",
402             STATS_BLOCK_SUFFIX_TIMED_GROUP_SUFFIX_ZONE_APPEND_LATENCY_AVG => ".zone_append_latency_avg",
403             STATS_BLOCK_SUFFIX_TIMED_GROUP_SUFFIX_FLUSH_LATENCY_MIN => ".flush_latency_min",
404             STATS_BLOCK_SUFFIX_TIMED_GROUP_SUFFIX_FLUSH_LATENCY_MAX => ".flush_latency_max",
405             STATS_BLOCK_SUFFIX_TIMED_GROUP_SUFFIX_FLUSH_LATENCY_AVG => ".flush_latency_avg",
406             STATS_BLOCK_SUFFIX_TIMED_GROUP_SUFFIX_RD_QUEUE_DEPTH_AVG => ".rd_queue_depth_avg",
407             STATS_BLOCK_SUFFIX_TIMED_GROUP_SUFFIX_WR_QUEUE_DEPTH_AVG => ".wr_queue_depth_avg",
408             STATS_BLOCK_SUFFIX_TIMED_GROUP_SUFFIX_ZONE_APPEND_QUEUE_DEPTH_AVG => ".zone_append_queue_depth_avg",
409             STATS_BLOCK_SUFFIX_LATENCY_HISTOGRAM_READ_PREFIX => ".latency_histogram.read.",
410             STATS_BLOCK_SUFFIX_LATENCY_HISTOGRAM_WRITE_PREFIX => ".latency_histogram.write.",
411             STATS_BLOCK_SUFFIX_LATENCY_HISTOGRAM_ZONE_APPEND_PREFIX => ".latency_histogram.zone_append.",
412             STATS_BLOCK_SUFFIX_LATENCY_HISTOGRAM_FLUSH_PREFIX => ".latency_histogram.flush.",
413             STATS_BLOCK_SUFFIX_LATENCY_HISTOGRAM_SUFFIX_BIN_COUNT => "bin.count",
414             STATS_BLOCK_SUFFIX_LATENCY_HISTOGRAM_SUFFIX_BIN_PREFIX => "bin.",
415             STATS_BLOCK_SUFFIX_LATENCY_HISTOGRAM_SUFFIX_BIN_SUFFIX_START => ".start",
416             STATS_BLOCK_SUFFIX_LATENCY_HISTOGRAM_SUFFIX_BIN_SUFFIX_VALUE => ".value",
417             STATS_PERF_CMT => "perf.cmt",
418             STATS_PERF_MBMT => "perf.mbmt",
419             STATS_PERF_MBML => "perf.mbml",
420             STATS_PERF_CACHE_MISSES => "perf.cache_misses",
421             STATS_PERF_CACHE_REFERENCES => "perf.cache_references",
422             STATS_PERF_INSTRUCTIONS => "perf.instructions",
423             STATS_PERF_CPU_CYCLES => "perf.cpu_cycles",
424             STATS_PERF_BRANCH_INSTRUCTIONS => "perf.branch_instructions",
425             STATS_PERF_BRANCH_MISSES => "perf.branch_misses",
426             STATS_PERF_BUS_CYCLES => "perf.bus_cycles",
427             STATS_PERF_STALLED_CYCLES_FRONTEND => "perf.stalled_cycles_frontend",
428             STATS_PERF_STALLED_CYCLES_BACKEND => "perf.stalled_cycles_backend",
429             STATS_PERF_REF_CPU_CYCLES => "perf.ref_cpu_cycles",
430             STATS_PERF_CPU_CLOCK => "perf.cpu_clock",
431             STATS_PERF_TASK_CLOCK => "perf.task_clock",
432             STATS_PERF_PAGE_FAULTS => "perf.page_faults",
433             STATS_PERF_CONTEXT_SWITCHES => "perf.context_switches",
434             STATS_PERF_CPU_MIGRATIONS => "perf.cpu_migrations",
435             STATS_PERF_PAGE_FAULTS_MIN => "perf.page_faults_min",
436             STATS_PERF_PAGE_FAULTS_MAJ => "perf.page_faults_maj",
437             STATS_PERF_ALIGNMENT_FAULTS => "perf.alignment_faults",
438             STATS_PERF_EMULATION_FAULTS => "perf.emulation_faults",
439             STATS_IOTHREAD_COUNT => "iothread.count",
440             STATS_IOTHREAD_PREFIX => "iothread.",
441             STATS_IOTHREAD_SUFFIX_POLL_MAX_NS => ".poll-max-ns",
442             STATS_IOTHREAD_SUFFIX_POLL_GROW => ".poll-grow",
443             STATS_IOTHREAD_SUFFIX_POLL_SHRINK => ".poll-shrink",
444             STATS_MEMORY_BANDWIDTH_MONITOR_COUNT => "memory.bandwidth.monitor.count",
445             STATS_MEMORY_BANDWIDTH_MONITOR_PREFIX => "memory.bandwidth.monitor.",
446             STATS_MEMORY_BANDWIDTH_MONITOR_SUFFIX_NAME => ".name",
447             STATS_MEMORY_BANDWIDTH_MONITOR_SUFFIX_VCPUS => ".vcpus",
448             STATS_MEMORY_BANDWIDTH_MONITOR_SUFFIX_NODE_COUNT => ".node.count",
449             STATS_MEMORY_BANDWIDTH_MONITOR_SUFFIX_NODE_PREFIX => ".node.",
450             STATS_MEMORY_BANDWIDTH_MONITOR_SUFFIX_NODE_SUFFIX_ID => ".id",
451             STATS_MEMORY_BANDWIDTH_MONITOR_SUFFIX_NODE_SUFFIX_BYTES_LOCAL => ".bytes.local",
452             STATS_MEMORY_BANDWIDTH_MONITOR_SUFFIX_NODE_SUFFIX_BYTES_TOTAL => ".bytes.total",
453             STATS_DIRTYRATE_CALC_STATUS => "dirtyrate.calc_status",
454             STATS_DIRTYRATE_CALC_START_TIME => "dirtyrate.calc_start_time",
455             STATS_DIRTYRATE_CALC_PERIOD => "dirtyrate.calc_period",
456             STATS_DIRTYRATE_MEGABYTES_PER_SECOND => "dirtyrate.megabytes_per_second",
457             STATS_DIRTYRATE_CALC_MODE => "dirtyrate.calc_mode",
458             STATS_DIRTYRATE_VCPU_PREFIX => "dirtyrate.vcpu.",
459             STATS_DIRTYRATE_VCPU_SUFFIX_MEGABYTES_PER_SECOND => ".megabytes_per_second",
460             STATS_VM_PREFIX => "vm.",
461             STATS_STATE => (1 << 0),
462             STATS_CPU_TOTAL => (1 << 1),
463             STATS_BALLOON => (1 << 2),
464             STATS_VCPU => (1 << 3),
465             STATS_INTERFACE => (1 << 4),
466             STATS_BLOCK => (1 << 5),
467             STATS_PERF => (1 << 6),
468             STATS_IOTHREAD => (1 << 7),
469             STATS_MEMORY => (1 << 8),
470             STATS_DIRTYRATE => (1 << 9),
471             STATS_VM => (1 << 10),
472             PERF_PARAM_CMT => "cmt",
473             PERF_PARAM_MBMT => "mbmt",
474             PERF_PARAM_MBML => "mbml",
475             PERF_PARAM_CACHE_MISSES => "cache_misses",
476             PERF_PARAM_CACHE_REFERENCES => "cache_references",
477             PERF_PARAM_INSTRUCTIONS => "instructions",
478             PERF_PARAM_CPU_CYCLES => "cpu_cycles",
479             PERF_PARAM_BRANCH_INSTRUCTIONS => "branch_instructions",
480             PERF_PARAM_BRANCH_MISSES => "branch_misses",
481             PERF_PARAM_BUS_CYCLES => "bus_cycles",
482             PERF_PARAM_STALLED_CYCLES_FRONTEND => "stalled_cycles_frontend",
483             PERF_PARAM_STALLED_CYCLES_BACKEND => "stalled_cycles_backend",
484             PERF_PARAM_REF_CPU_CYCLES => "ref_cpu_cycles",
485             PERF_PARAM_CPU_CLOCK => "cpu_clock",
486             PERF_PARAM_TASK_CLOCK => "task_clock",
487             PERF_PARAM_PAGE_FAULTS => "page_faults",
488             PERF_PARAM_CONTEXT_SWITCHES => "context_switches",
489             PERF_PARAM_CPU_MIGRATIONS => "cpu_migrations",
490             PERF_PARAM_PAGE_FAULTS_MIN => "page_faults_min",
491             PERF_PARAM_PAGE_FAULTS_MAJ => "page_faults_maj",
492             PERF_PARAM_ALIGNMENT_FAULTS => "alignment_faults",
493             PERF_PARAM_EMULATION_FAULTS => "emulation_faults",
494             BLOCK_JOB_TYPE_UNKNOWN => 0,
495             BLOCK_JOB_TYPE_PULL => 1,
496             BLOCK_JOB_TYPE_COPY => 2,
497             BLOCK_JOB_TYPE_COMMIT => 3,
498             BLOCK_JOB_TYPE_ACTIVE_COMMIT => 4,
499             BLOCK_JOB_TYPE_BACKUP => 5,
500             BLOCK_JOB_ABORT_ASYNC => 1 << 0,
501             BLOCK_JOB_ABORT_PIVOT => 1 << 1,
502             BLOCK_JOB_INFO_BANDWIDTH_BYTES => 1 << 0,
503             BLOCK_JOB_SPEED_BANDWIDTH_BYTES => 1 << 0,
504             BLOCK_PULL_BANDWIDTH_BYTES => 1 << 6,
505             BLOCK_REBASE_SHALLOW => 1 << 0,
506             BLOCK_REBASE_REUSE_EXT => 1 << 1,
507             BLOCK_REBASE_COPY_RAW => 1 << 2,
508             BLOCK_REBASE_COPY => 1 << 3,
509             BLOCK_REBASE_RELATIVE => 1 << 4,
510             BLOCK_REBASE_COPY_DEV => 1 << 5,
511             BLOCK_REBASE_BANDWIDTH_BYTES => 1 << 6,
512             BLOCK_COPY_SHALLOW => 1 << 0,
513             BLOCK_COPY_REUSE_EXT => 1 << 1,
514             BLOCK_COPY_TRANSIENT_JOB => 1 << 2,
515             BLOCK_COPY_SYNCHRONOUS_WRITES => 1 << 3,
516             BLOCK_COPY_TARGET_ZEROED => 1 << 4,
517             BLOCK_COPY_BANDWIDTH => "bandwidth",
518             BLOCK_COPY_GRANULARITY => "granularity",
519             BLOCK_COPY_BUF_SIZE => "buf-size",
520             BLOCK_COMMIT_SHALLOW => 1 << 0,
521             BLOCK_COMMIT_DELETE => 1 << 1,
522             BLOCK_COMMIT_ACTIVE => 1 << 2,
523             BLOCK_COMMIT_RELATIVE => 1 << 3,
524             BLOCK_COMMIT_BANDWIDTH_BYTES => 1 << 4,
525             BLOCK_IOTUNE_TOTAL_BYTES_SEC => "total_bytes_sec",
526             BLOCK_IOTUNE_READ_BYTES_SEC => "read_bytes_sec",
527             BLOCK_IOTUNE_WRITE_BYTES_SEC => "write_bytes_sec",
528             BLOCK_IOTUNE_TOTAL_IOPS_SEC => "total_iops_sec",
529             BLOCK_IOTUNE_READ_IOPS_SEC => "read_iops_sec",
530             BLOCK_IOTUNE_WRITE_IOPS_SEC => "write_iops_sec",
531             BLOCK_IOTUNE_TOTAL_BYTES_SEC_MAX => "total_bytes_sec_max",
532             BLOCK_IOTUNE_READ_BYTES_SEC_MAX => "read_bytes_sec_max",
533             BLOCK_IOTUNE_WRITE_BYTES_SEC_MAX => "write_bytes_sec_max",
534             BLOCK_IOTUNE_TOTAL_IOPS_SEC_MAX => "total_iops_sec_max",
535             BLOCK_IOTUNE_READ_IOPS_SEC_MAX => "read_iops_sec_max",
536             BLOCK_IOTUNE_WRITE_IOPS_SEC_MAX => "write_iops_sec_max",
537             BLOCK_IOTUNE_TOTAL_BYTES_SEC_MAX_LENGTH => "total_bytes_sec_max_length",
538             BLOCK_IOTUNE_READ_BYTES_SEC_MAX_LENGTH => "read_bytes_sec_max_length",
539             BLOCK_IOTUNE_WRITE_BYTES_SEC_MAX_LENGTH => "write_bytes_sec_max_length",
540             BLOCK_IOTUNE_TOTAL_IOPS_SEC_MAX_LENGTH => "total_iops_sec_max_length",
541             BLOCK_IOTUNE_READ_IOPS_SEC_MAX_LENGTH => "read_iops_sec_max_length",
542             BLOCK_IOTUNE_WRITE_IOPS_SEC_MAX_LENGTH => "write_iops_sec_max_length",
543             BLOCK_IOTUNE_SIZE_IOPS_SEC => "size_iops_sec",
544             BLOCK_IOTUNE_GROUP_NAME => "group_name",
545             DISK_ERROR_NONE => 0,
546             DISK_ERROR_UNSPEC => 1,
547             DISK_ERROR_NO_SPACE => 2,
548             KEYCODE_SET_LINUX => 0,
549             KEYCODE_SET_XT => 1,
550             KEYCODE_SET_ATSET1 => 2,
551             KEYCODE_SET_ATSET2 => 3,
552             KEYCODE_SET_ATSET3 => 4,
553             KEYCODE_SET_OSX => 5,
554             KEYCODE_SET_XT_KBD => 6,
555             KEYCODE_SET_USB => 7,
556             KEYCODE_SET_WIN32 => 8,
557             KEYCODE_SET_QNUM => 9,
558             KEYCODE_SET_RFB => 9,
559             SEND_KEY_MAX_KEYS => 16,
560             PROCESS_SIGNAL_NOP => 0,
561             PROCESS_SIGNAL_HUP => 1,
562             PROCESS_SIGNAL_INT => 2,
563             PROCESS_SIGNAL_QUIT => 3,
564             PROCESS_SIGNAL_ILL => 4,
565             PROCESS_SIGNAL_TRAP => 5,
566             PROCESS_SIGNAL_ABRT => 6,
567             PROCESS_SIGNAL_BUS => 7,
568             PROCESS_SIGNAL_FPE => 8,
569             PROCESS_SIGNAL_KILL => 9,
570             PROCESS_SIGNAL_USR1 => 10,
571             PROCESS_SIGNAL_SEGV => 11,
572             PROCESS_SIGNAL_USR2 => 12,
573             PROCESS_SIGNAL_PIPE => 13,
574             PROCESS_SIGNAL_ALRM => 14,
575             PROCESS_SIGNAL_TERM => 15,
576             PROCESS_SIGNAL_STKFLT => 16,
577             PROCESS_SIGNAL_CHLD => 17,
578             PROCESS_SIGNAL_CONT => 18,
579             PROCESS_SIGNAL_STOP => 19,
580             PROCESS_SIGNAL_TSTP => 20,
581             PROCESS_SIGNAL_TTIN => 21,
582             PROCESS_SIGNAL_TTOU => 22,
583             PROCESS_SIGNAL_URG => 23,
584             PROCESS_SIGNAL_XCPU => 24,
585             PROCESS_SIGNAL_XFSZ => 25,
586             PROCESS_SIGNAL_VTALRM => 26,
587             PROCESS_SIGNAL_PROF => 27,
588             PROCESS_SIGNAL_WINCH => 28,
589             PROCESS_SIGNAL_POLL => 29,
590             PROCESS_SIGNAL_PWR => 30,
591             PROCESS_SIGNAL_SYS => 31,
592             PROCESS_SIGNAL_RT0 => 32,
593             PROCESS_SIGNAL_RT1 => 33,
594             PROCESS_SIGNAL_RT2 => 34,
595             PROCESS_SIGNAL_RT3 => 35,
596             PROCESS_SIGNAL_RT4 => 36,
597             PROCESS_SIGNAL_RT5 => 37,
598             PROCESS_SIGNAL_RT6 => 38,
599             PROCESS_SIGNAL_RT7 => 39,
600             PROCESS_SIGNAL_RT8 => 40,
601             PROCESS_SIGNAL_RT9 => 41,
602             PROCESS_SIGNAL_RT10 => 42,
603             PROCESS_SIGNAL_RT11 => 43,
604             PROCESS_SIGNAL_RT12 => 44,
605             PROCESS_SIGNAL_RT13 => 45,
606             PROCESS_SIGNAL_RT14 => 46,
607             PROCESS_SIGNAL_RT15 => 47,
608             PROCESS_SIGNAL_RT16 => 48,
609             PROCESS_SIGNAL_RT17 => 49,
610             PROCESS_SIGNAL_RT18 => 50,
611             PROCESS_SIGNAL_RT19 => 51,
612             PROCESS_SIGNAL_RT20 => 52,
613             PROCESS_SIGNAL_RT21 => 53,
614             PROCESS_SIGNAL_RT22 => 54,
615             PROCESS_SIGNAL_RT23 => 55,
616             PROCESS_SIGNAL_RT24 => 56,
617             PROCESS_SIGNAL_RT25 => 57,
618             PROCESS_SIGNAL_RT26 => 58,
619             PROCESS_SIGNAL_RT27 => 59,
620             PROCESS_SIGNAL_RT28 => 60,
621             PROCESS_SIGNAL_RT29 => 61,
622             PROCESS_SIGNAL_RT30 => 62,
623             PROCESS_SIGNAL_RT31 => 63,
624             PROCESS_SIGNAL_RT32 => 64,
625             EVENT_DEFINED => 0,
626             EVENT_UNDEFINED => 1,
627             EVENT_STARTED => 2,
628             EVENT_SUSPENDED => 3,
629             EVENT_RESUMED => 4,
630             EVENT_STOPPED => 5,
631             EVENT_SHUTDOWN => 6,
632             EVENT_PMSUSPENDED => 7,
633             EVENT_CRASHED => 8,
634             EVENT_DEFINED_ADDED => 0,
635             EVENT_DEFINED_UPDATED => 1,
636             EVENT_DEFINED_RENAMED => 2,
637             EVENT_DEFINED_FROM_SNAPSHOT => 3,
638             EVENT_UNDEFINED_REMOVED => 0,
639             EVENT_UNDEFINED_RENAMED => 1,
640             EVENT_STARTED_BOOTED => 0,
641             EVENT_STARTED_MIGRATED => 1,
642             EVENT_STARTED_RESTORED => 2,
643             EVENT_STARTED_FROM_SNAPSHOT => 3,
644             EVENT_STARTED_WAKEUP => 4,
645             EVENT_STARTED_RECREATED => 5,
646             EVENT_SUSPENDED_PAUSED => 0,
647             EVENT_SUSPENDED_MIGRATED => 1,
648             EVENT_SUSPENDED_IOERROR => 2,
649             EVENT_SUSPENDED_WATCHDOG => 3,
650             EVENT_SUSPENDED_RESTORED => 4,
651             EVENT_SUSPENDED_FROM_SNAPSHOT => 5,
652             EVENT_SUSPENDED_API_ERROR => 6,
653             EVENT_SUSPENDED_POSTCOPY => 7,
654             EVENT_SUSPENDED_POSTCOPY_FAILED => 8,
655             EVENT_SUSPENDED_GUEST_SHUTDOWN => 9,
656             EVENT_RESUMED_UNPAUSED => 0,
657             EVENT_RESUMED_MIGRATED => 1,
658             EVENT_RESUMED_FROM_SNAPSHOT => 2,
659             EVENT_RESUMED_POSTCOPY => 3,
660             EVENT_RESUMED_POSTCOPY_FAILED => 4,
661             EVENT_STOPPED_SHUTDOWN => 0,
662             EVENT_STOPPED_DESTROYED => 1,
663             EVENT_STOPPED_CRASHED => 2,
664             EVENT_STOPPED_MIGRATED => 3,
665             EVENT_STOPPED_SAVED => 4,
666             EVENT_STOPPED_FAILED => 5,
667             EVENT_STOPPED_FROM_SNAPSHOT => 6,
668             EVENT_STOPPED_RECREATED => 7,
669             EVENT_SHUTDOWN_FINISHED => 0,
670             EVENT_SHUTDOWN_GUEST => 1,
671             EVENT_SHUTDOWN_HOST => 2,
672             EVENT_PMSUSPENDED_MEMORY => 0,
673             EVENT_PMSUSPENDED_DISK => 1,
674             EVENT_CRASHED_PANICKED => 0,
675             EVENT_CRASHED_CRASHLOADED => 1,
676             EVENT_MEMORY_FAILURE_RECIPIENT_HYPERVISOR => 0,
677             EVENT_MEMORY_FAILURE_RECIPIENT_GUEST => 1,
678             EVENT_MEMORY_FAILURE_ACTION_IGNORE => 0,
679             EVENT_MEMORY_FAILURE_ACTION_INJECT => 1,
680             EVENT_MEMORY_FAILURE_ACTION_FATAL => 2,
681             EVENT_MEMORY_FAILURE_ACTION_RESET => 3,
682             MEMORY_FAILURE_ACTION_REQUIRED => (1 << 0),
683             MEMORY_FAILURE_RECURSIVE => (1 << 1),
684             JOB_NONE => 0,
685             JOB_BOUNDED => 1,
686             JOB_UNBOUNDED => 2,
687             JOB_COMPLETED => 3,
688             JOB_FAILED => 4,
689             JOB_CANCELLED => 5,
690             JOB_STATS_COMPLETED => 1 << 0,
691             JOB_STATS_KEEP_COMPLETED => 1 << 1,
692             ABORT_JOB_POSTCOPY => 1 << 0,
693             JOB_OPERATION_UNKNOWN => 0,
694             JOB_OPERATION_START => 1,
695             JOB_OPERATION_SAVE => 2,
696             JOB_OPERATION_RESTORE => 3,
697             JOB_OPERATION_MIGRATION_IN => 4,
698             JOB_OPERATION_MIGRATION_OUT => 5,
699             JOB_OPERATION_SNAPSHOT => 6,
700             JOB_OPERATION_SNAPSHOT_REVERT => 7,
701             JOB_OPERATION_DUMP => 8,
702             JOB_OPERATION_BACKUP => 9,
703             JOB_OPERATION_SNAPSHOT_DELETE => 10,
704             JOB_OPERATION => "operation",
705             JOB_TIME_ELAPSED => "time_elapsed",
706             JOB_TIME_ELAPSED_NET => "time_elapsed_net",
707             JOB_TIME_REMAINING => "time_remaining",
708             JOB_DOWNTIME => "downtime",
709             JOB_DOWNTIME_NET => "downtime_net",
710             JOB_SETUP_TIME => "setup_time",
711             JOB_DATA_TOTAL => "data_total",
712             JOB_DATA_PROCESSED => "data_processed",
713             JOB_DATA_REMAINING => "data_remaining",
714             JOB_MEMORY_TOTAL => "memory_total",
715             JOB_MEMORY_PROCESSED => "memory_processed",
716             JOB_MEMORY_REMAINING => "memory_remaining",
717             JOB_MEMORY_CONSTANT => "memory_constant",
718             JOB_MEMORY_NORMAL => "memory_normal",
719             JOB_MEMORY_NORMAL_BYTES => "memory_normal_bytes",
720             JOB_MEMORY_BPS => "memory_bps",
721             JOB_MEMORY_DIRTY_RATE => "memory_dirty_rate",
722             JOB_MEMORY_PAGE_SIZE => "memory_page_size",
723             JOB_MEMORY_ITERATION => "memory_iteration",
724             JOB_MEMORY_POSTCOPY_REQS => "memory_postcopy_requests",
725             JOB_DISK_TOTAL => "disk_total",
726             JOB_DISK_PROCESSED => "disk_processed",
727             JOB_DISK_REMAINING => "disk_remaining",
728             JOB_DISK_BPS => "disk_bps",
729             JOB_COMPRESSION_CACHE => "compression_cache",
730             JOB_COMPRESSION_BYTES => "compression_bytes",
731             JOB_COMPRESSION_PAGES => "compression_pages",
732             JOB_COMPRESSION_CACHE_MISSES => "compression_cache_misses",
733             JOB_COMPRESSION_OVERFLOW => "compression_overflow",
734             JOB_AUTO_CONVERGE_THROTTLE => "auto_converge_throttle",
735             JOB_SUCCESS => "success",
736             JOB_ERRMSG => "errmsg",
737             JOB_DISK_TEMP_USED => "disk_temp_used",
738             JOB_DISK_TEMP_TOTAL => "disk_temp_total",
739             JOB_VFIO_DATA_TRANSFERRED => "vfio_data_transferred",
740             EVENT_WATCHDOG_NONE => 0,
741             EVENT_IO_ERROR_NONE => 0,
742             EVENT_GRAPHICS_CONNECT => 0,
743             BLOCK_JOB_COMPLETED => 0,
744             BLOCK_JOB_FAILED => 1,
745             BLOCK_JOB_CANCELED => 2,
746             BLOCK_JOB_READY => 3,
747             EVENT_DISK_CHANGE_MISSING_ON_START => 0,
748             EVENT_DISK_DROP_MISSING_ON_START => 1,
749             EVENT_TRAY_CHANGE_OPEN => 0,
750             TUNABLE_CPU_VCPUPIN => "cputune.vcpupin%u",
751             TUNABLE_CPU_EMULATORPIN => "cputune.emulatorpin",
752             TUNABLE_CPU_IOTHREADSPIN => "cputune.iothreadpin%u",
753             TUNABLE_CPU_CPU_SHARES => "cputune.cpu_shares",
754             TUNABLE_CPU_GLOBAL_PERIOD => "cputune.global_period",
755             TUNABLE_CPU_GLOBAL_QUOTA => "cputune.global_quota",
756             TUNABLE_CPU_VCPU_PERIOD => "cputune.vcpu_period",
757             TUNABLE_CPU_VCPU_QUOTA => "cputune.vcpu_quota",
758             TUNABLE_CPU_EMULATOR_PERIOD => "cputune.emulator_period",
759             TUNABLE_CPU_EMULATOR_QUOTA => "cputune.emulator_quota",
760             TUNABLE_CPU_IOTHREAD_PERIOD => "cputune.iothread_period",
761             TUNABLE_CPU_IOTHREAD_QUOTA => "cputune.iothread_quota",
762             TUNABLE_BLKDEV_DISK => "blkdeviotune.disk",
763             TUNABLE_BLKDEV_TOTAL_BYTES_SEC => "blkdeviotune.total_bytes_sec",
764             TUNABLE_BLKDEV_READ_BYTES_SEC => "blkdeviotune.read_bytes_sec",
765             TUNABLE_BLKDEV_WRITE_BYTES_SEC => "blkdeviotune.write_bytes_sec",
766             TUNABLE_BLKDEV_TOTAL_IOPS_SEC => "blkdeviotune.total_iops_sec",
767             TUNABLE_BLKDEV_READ_IOPS_SEC => "blkdeviotune.read_iops_sec",
768             TUNABLE_BLKDEV_WRITE_IOPS_SEC => "blkdeviotune.write_iops_sec",
769             TUNABLE_BLKDEV_TOTAL_BYTES_SEC_MAX => "blkdeviotune.total_bytes_sec_max",
770             TUNABLE_BLKDEV_READ_BYTES_SEC_MAX => "blkdeviotune.read_bytes_sec_max",
771             TUNABLE_BLKDEV_WRITE_BYTES_SEC_MAX => "blkdeviotune.write_bytes_sec_max",
772             TUNABLE_BLKDEV_TOTAL_IOPS_SEC_MAX => "blkdeviotune.total_iops_sec_max",
773             TUNABLE_BLKDEV_READ_IOPS_SEC_MAX => "blkdeviotune.read_iops_sec_max",
774             TUNABLE_BLKDEV_WRITE_IOPS_SEC_MAX => "blkdeviotune.write_iops_sec_max",
775             TUNABLE_BLKDEV_SIZE_IOPS_SEC => "blkdeviotune.size_iops_sec",
776             TUNABLE_BLKDEV_GROUP_NAME => "blkdeviotune.group_name",
777             TUNABLE_BLKDEV_TOTAL_BYTES_SEC_MAX_LENGTH => "blkdeviotune.total_bytes_sec_max_length",
778             TUNABLE_BLKDEV_READ_BYTES_SEC_MAX_LENGTH => "blkdeviotune.read_bytes_sec_max_length",
779             TUNABLE_BLKDEV_WRITE_BYTES_SEC_MAX_LENGTH => "blkdeviotune.write_bytes_sec_max_length",
780             TUNABLE_BLKDEV_TOTAL_IOPS_SEC_MAX_LENGTH => "blkdeviotune.total_iops_sec_max_length",
781             TUNABLE_BLKDEV_READ_IOPS_SEC_MAX_LENGTH => "blkdeviotune.read_iops_sec_max_length",
782             TUNABLE_BLKDEV_WRITE_IOPS_SEC_MAX_LENGTH => "blkdeviotune.write_iops_sec_max_length",
783             CONSOLE_FORCE => (1 << 0),
784             CONSOLE_SAFE => (1 << 1),
785             CHANNEL_FORCE => (1 << 0),
786             OPEN_GRAPHICS_SKIPAUTH => (1 << 0),
787             TIME_SYNC => (1 << 0),
788             SCHED_FIELD_INT => 1,
789             SCHED_FIELD_UINT => 2,
790             SCHED_FIELD_LLONG => 3,
791             SCHED_FIELD_ULLONG => 4,
792             SCHED_FIELD_DOUBLE => 5,
793             SCHED_FIELD_BOOLEAN => 6,
794             SCHED_FIELD_LENGTH => 80,
795             BLKIO_PARAM_INT => 1,
796             BLKIO_PARAM_UINT => 2,
797             BLKIO_PARAM_LLONG => 3,
798             BLKIO_PARAM_ULLONG => 4,
799             BLKIO_PARAM_DOUBLE => 5,
800             BLKIO_PARAM_BOOLEAN => 6,
801             BLKIO_FIELD_LENGTH => 80,
802             MEMORY_PARAM_INT => 1,
803             MEMORY_PARAM_UINT => 2,
804             MEMORY_PARAM_LLONG => 3,
805             MEMORY_PARAM_ULLONG => 4,
806             MEMORY_PARAM_DOUBLE => 5,
807             MEMORY_PARAM_BOOLEAN => 6,
808             MEMORY_FIELD_LENGTH => 80,
809             INTERFACE_ADDRESSES_SRC_LEASE => 0,
810             INTERFACE_ADDRESSES_SRC_AGENT => 1,
811             INTERFACE_ADDRESSES_SRC_ARP => 2,
812             PASSWORD_ENCRYPTED => 1 << 0,
813             LIFECYCLE_POWEROFF => 0,
814             LIFECYCLE_REBOOT => 1,
815             LIFECYCLE_CRASH => 2,
816             LIFECYCLE_ACTION_DESTROY => 0,
817             LIFECYCLE_ACTION_RESTART => 1,
818             LIFECYCLE_ACTION_RESTART_RENAME => 2,
819             LIFECYCLE_ACTION_PRESERVE => 3,
820             LIFECYCLE_ACTION_COREDUMP_DESTROY => 4,
821             LIFECYCLE_ACTION_COREDUMP_RESTART => 5,
822             LAUNCH_SECURITY_SEV_MEASUREMENT => "sev-measurement",
823             LAUNCH_SECURITY_SEV_API_MAJOR => "sev-api-major",
824             LAUNCH_SECURITY_SEV_API_MINOR => "sev-api-minor",
825             LAUNCH_SECURITY_SEV_BUILD_ID => "sev-build-id",
826             LAUNCH_SECURITY_SEV_POLICY => "sev-policy",
827             LAUNCH_SECURITY_SEV_SNP_POLICY => "sev-snp-policy",
828             LAUNCH_SECURITY_SEV_SECRET_HEADER => "sev-secret-header",
829             LAUNCH_SECURITY_SEV_SECRET => "sev-secret",
830             LAUNCH_SECURITY_SEV_SECRET_SET_ADDRESS => "sev-secret-set-address",
831             GUEST_INFO_USER_COUNT => "user.count",
832             GUEST_INFO_USER_PREFIX => "user.",
833             GUEST_INFO_USER_SUFFIX_NAME => ".name",
834             GUEST_INFO_USER_SUFFIX_DOMAIN => ".domain",
835             GUEST_INFO_USER_SUFFIX_LOGIN_TIME => ".login-time",
836             GUEST_INFO_OS_ID => "os.id",
837             GUEST_INFO_OS_NAME => "os.name",
838             GUEST_INFO_OS_PRETTY_NAME => "os.pretty-name",
839             GUEST_INFO_OS_VERSION => "os.version",
840             GUEST_INFO_OS_VERSION_ID => "os.version-id",
841             GUEST_INFO_OS_KERNEL_RELEASE => "os.kernel-release",
842             GUEST_INFO_OS_KERNEL_VERSION => "os.kernel-version",
843             GUEST_INFO_OS_MACHINE => "os.machine",
844             GUEST_INFO_OS_VARIANT => "os.variant",
845             GUEST_INFO_OS_VARIANT_ID => "os.variant-id",
846             GUEST_INFO_TIMEZONE_NAME => "timezone.name",
847             GUEST_INFO_TIMEZONE_OFFSET => "timezone.offset",
848             GUEST_INFO_HOSTNAME_HOSTNAME => "hostname",
849             GUEST_INFO_FS_COUNT => "fs.count",
850             GUEST_INFO_FS_PREFIX => "fs.",
851             GUEST_INFO_FS_SUFFIX_MOUNTPOINT => ".mountpoint",
852             GUEST_INFO_FS_SUFFIX_NAME => ".name",
853             GUEST_INFO_FS_SUFFIX_FSTYPE => ".fstype",
854             GUEST_INFO_FS_SUFFIX_TOTAL_BYTES => ".total-bytes",
855             GUEST_INFO_FS_SUFFIX_USED_BYTES => ".used-bytes",
856             GUEST_INFO_FS_SUFFIX_DISK_COUNT => ".disk.count",
857             GUEST_INFO_FS_SUFFIX_DISK_PREFIX => ".disk.",
858             GUEST_INFO_FS_SUFFIX_DISK_SUFFIX_ALIAS => ".alias",
859             GUEST_INFO_FS_SUFFIX_DISK_SUFFIX_SERIAL => ".serial",
860             GUEST_INFO_FS_SUFFIX_DISK_SUFFIX_DEVICE => ".device",
861             GUEST_INFO_DISK_COUNT => "disk.count",
862             GUEST_INFO_DISK_PREFIX => "disk.",
863             GUEST_INFO_DISK_SUFFIX_NAME => ".name",
864             GUEST_INFO_DISK_SUFFIX_PARTITION => ".partition",
865             GUEST_INFO_DISK_SUFFIX_DEPENDENCY_COUNT => ".dependency.count",
866             GUEST_INFO_DISK_SUFFIX_DEPENDENCY_PREFIX => ".dependency.",
867             GUEST_INFO_DISK_SUFFIX_DEPENDENCY_SUFFIX_NAME => ".name",
868             GUEST_INFO_DISK_SUFFIX_SERIAL => ".serial",
869             GUEST_INFO_DISK_SUFFIX_ALIAS => ".alias",
870             GUEST_INFO_DISK_SUFFIX_GUEST_ALIAS => ".guest_alias",
871             GUEST_INFO_DISK_SUFFIX_GUEST_BUS => ".guest_bus",
872             GUEST_INFO_IF_COUNT => "if.count",
873             GUEST_INFO_IF_PREFIX => "if.",
874             GUEST_INFO_IF_SUFFIX_NAME => ".name",
875             GUEST_INFO_IF_SUFFIX_HWADDR => ".hwaddr",
876             GUEST_INFO_IF_SUFFIX_ADDR_COUNT => ".addr.count",
877             GUEST_INFO_IF_SUFFIX_ADDR_PREFIX => ".addr.",
878             GUEST_INFO_IF_SUFFIX_ADDR_SUFFIX_TYPE => ".type",
879             GUEST_INFO_IF_SUFFIX_ADDR_SUFFIX_ADDR => ".addr",
880             GUEST_INFO_IF_SUFFIX_ADDR_SUFFIX_PREFIX => ".prefix",
881             GUEST_INFO_LOAD_1M => "load.1m",
882             GUEST_INFO_LOAD_5M => "load.5m",
883             GUEST_INFO_LOAD_15M => "load.15m",
884             GUEST_INFO_USERS => (1 << 0),
885             GUEST_INFO_OS => (1 << 1),
886             GUEST_INFO_TIMEZONE => (1 << 2),
887             GUEST_INFO_HOSTNAME => (1 << 3),
888             GUEST_INFO_FILESYSTEM => (1 << 4),
889             GUEST_INFO_DISKS => (1 << 5),
890             GUEST_INFO_INTERFACES => (1 << 6),
891             GUEST_INFO_LOAD => (1 << 7),
892             AGENT_RESPONSE_TIMEOUT_BLOCK => -2,
893             AGENT_RESPONSE_TIMEOUT_DEFAULT => -1,
894             AGENT_RESPONSE_TIMEOUT_NOWAIT => 0,
895             BACKUP_BEGIN_REUSE_EXTERNAL => (1 << 0),
896             BACKUP_BEGIN_PRESERVE_SHUTDOWN_DOMAIN => (1 << 1),
897             AUTHORIZED_SSH_KEYS_SET_APPEND => (1 << 0),
898             AUTHORIZED_SSH_KEYS_SET_REMOVE => (1 << 1),
899             MESSAGE_DEPRECATION => (1 << 0),
900             MESSAGE_TAINTING => (1 << 1),
901             MESSAGE_IOERRORS => (1 << 2),
902             DIRTYRATE_UNSTARTED => 0,
903             DIRTYRATE_MEASURING => 1,
904             DIRTYRATE_MEASURED => 2,
905             DIRTYRATE_MODE_PAGE_SAMPLING => 0,
906             DIRTYRATE_MODE_DIRTY_BITMAP => 1 << 0,
907             DIRTYRATE_MODE_DIRTY_RING => 1 << 1,
908             FD_ASSOCIATE_SECLABEL_RESTORE => (1 << 0),
909             FD_ASSOCIATE_SECLABEL_WRITABLE => (1 << 1),
910             GRAPHICS_RELOAD_TYPE_ANY => 0,
911             GRAPHICS_RELOAD_TYPE_VNC => 1,
912 1     1   8 };
  1         1  
913              
914              
915 0     0 0   field $_rpc_id :param :reader;
  0            
916 0     0 0   field $_client :param :reader;
  0            
917              
918 0     0 1   method id() {
  0            
  0            
919 0           return $_rpc_id->{id};
920             }
921              
922 0     0 1   method name() {
  0            
  0            
923 0           return $_rpc_id->{name};
924             }
925              
926 0     0 1   method uuid() {
  0            
  0            
927 0           return $_rpc_id->{uuid};
928             }
929              
930 0     0 1   method uuid_string() {
  0            
  0            
931 0           return join( '-', unpack('H8H4H4H4H12', $_rpc_id->{uuid}) );
932             }
933              
934             # ENTRYPOINT: REMOTE_PROC_DOMAIN_GET_BLOCK_JOB_INFO
935 0     0 1   async method get_block_job_info($disk, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
936 0           my $rv = await $_client->_call(
937             $remote->PROC_DOMAIN_GET_BLOCK_JOB_INFO,
938             { dom => $_rpc_id, path => $disk, flags => $flags // 0 } );
939              
940 0 0         if ($rv->{found}) {
941 0           return $rv;
942             }
943             else {
944 0           return undef;
945             }
946             }
947              
948             # ENTRYPOINT: REMOTE_PROC_DOMAIN_GET_EMULATOR_PIN_INFO
949 0     0 1   async method get_emulator_pin_info($flags = 0) {
  0            
  0            
  0            
  0            
950 0           my $maplen = await $_client->_maplen;
951 0           my $rv = await $_client->_call(
952             $remote->PROC_DOMAIN_GET_EMULATOR_PIN_INFO,
953             { dom => $_rpc_id, maplen => $maplen,
954             flags => $flags // 0 } );
955              
956 0 0         if ($rv->{ret} == 0) {
957 0           return undef;
958             }
959             else {
960 0           return await $_client->_from_cpumap( $rv->{cpumaps} );
961             }
962             }
963              
964             # ENTRYPOINT: REMOTE_PROC_DOMAIN_GET_IOTHREAD_INFO
965 0     0 1   async method get_iothread_info($flags = 0) {
  0            
  0            
  0            
  0            
966 0           my $rv = await $_client->_call(
967             $remote->PROC_DOMAIN_GET_IOTHREAD_INFO,
968             { dom => $_rpc_id, flags => $flags // 0 } );
969              
970 0           my @rv;
971 0           for my $thread ($rv->{info}->@*) {
972             push @rv, {
973             iothread_id => $thread->{iothread_id},
974             cpumap => await $_client->_from_cpumap( $thread->{cpumap} )
975 0           };
976             }
977              
978 0           return \@rv;
979             }
980              
981 0     0     sub _patch_security_label($sec) {
  0            
  0            
982 0           my $label = $sec->{label};
983 0           $label = join('', map { chr($_) } $label->@* );
  0            
984 0           chop $label; # eliminate terminating ascii \0-char
985 0           $sec->{label} = $label;
986             }
987              
988             # ENTRYPOINT: REMOTE_PROC_DOMAIN_GET_SECURITY_LABEL
989 0     0 0   async method get_security_label() {
  0            
  0            
  0            
990 0           my $rv = await $_client->_call(
991             $remote->PROC_DOMAIN_GET_SECURITY_LABEL,
992             { dom => $_rpc_id } );
993              
994 0           _patch_security_label( $rv );
995 0           return $rv;
996             }
997              
998             # ENTRYPOINT: REMOTE_PROC_DOMAIN_GET_SECURITY_LABEL_LIST
999 0     0 0   async method get_security_label_list() {
  0            
  0            
  0            
1000 0           my $rv = await $_client->_call(
1001             $remote->PROC_DOMAIN_GET_SECURITY_LABEL_LIST,
1002             { dom => $_rpc_id } );
1003              
1004 0           for my $label ($rv->{labels}->@*) {
1005 0           _patch_security_label( $label );
1006             }
1007              
1008 0           return $rv->{labels};
1009             }
1010              
1011             # ENTRYPOINT: REMOTE_PROC_DOMAIN_GET_TIME
1012 0     0 1   async method get_time($flags = 0) {
  0            
  0            
  0            
  0            
1013 0           my $rv = await $_client->_call(
1014             $remote->PROC_DOMAIN_GET_TIME,
1015             { dom => $_rpc_id, flags => $flags // 0 } );
1016              
1017 0           return ( $rv->{seconds}, $rv->{nseconds} );
1018             }
1019              
1020             # ENTRYPOINT: REMOTE_PROC_DOMAIN_GET_VCPU_PIN_INFO
1021 0     0 1   async method get_vcpu_pin_info($flags = 0) {
  0            
  0            
  0            
  0            
1022 0           my $vcpus = await $self->get_vcpus_flags( $flags // 0 );
1023 0           my $cpus = await $_client->{totcpus};
1024 0           my $maplen = await $_client->_maplen;
1025 0           my $rv = await $_client->_call(
1026             $remote->PROC_DOMAIN_GET_VCPU_PIN_INFO,
1027             { dom => $_rpc_id, ncpumaps => $vcpus,
1028             maplen => $maplen, flags => $flags });
1029              
1030 0           my $maps = $rv->{cpumaps};
1031 0           my @rv;
1032 0           foreach my $vcpu_idx (0 .. ($rv->{num} - 1)) {
1033 0           push @rv, await $_client->_from_cpumap( $vcpu_idx*$maplen );
1034             }
1035              
1036 0           return \@rv;
1037             }
1038              
1039             # ENTRYPOINT: REMOTE_PROC_DOMAIN_GET_VCPUS
1040 0     0 1   async method get_vcpus() {
  0            
  0            
  0            
1041 0           my $vcpus = await $self->get_vcpus_flags;
1042 0           my $maplen = await $_client->_maplen;
1043 0           my $rv = await $_client->_call(
1044             $remote->PROC_DOMAIN_GET_VCPUS,
1045             { dom => $_rpc_id, maxinfo => $vcpus, maplen => $maplen } );
1046              
1047 0           my @rv;
1048 0           foreach my $vcpu_idx (0 .. ($vcpus - 1)) {
1049             push @rv, {
1050             $rv->{info}->[$vcpu_idx]->%*,
1051             affinity => await $_client->_from_cpumap( $rv->{cpumaps},
1052 0           $vcpu_idx*$maplen ) };
1053             }
1054              
1055 0           return \@rv;
1056             }
1057              
1058              
1059             ###############################################################################
1060             #
1061             # MIGRATION CODE
1062             #
1063             ###############################################################################
1064             #
1065             # The migration protocol is documented in libvirt's repository:
1066             # https://gitlab.com/libvirt/libvirt/-/blob/master/docs/kbase/internals/migration.rst
1067             #
1068              
1069              
1070              
1071             # ENTRYPOINT: REMOTE_PROC_DOMAIN_MIGRATE_BEGIN3_PARAMS
1072             # ENTRYPOINT: REMOTE_PROC_DOMAIN_MIGRATE_PREPARE3_PARAMS
1073             # ENTRYPOINT: REMOTE_PROC_DOMAIN_MIGRATE_PERFORM3_PARAMS
1074             # ENTRYPOINT: REMOTE_PROC_DOMAIN_MIGRATE_CONFIRM3_PARAMS
1075             # ENTRYPOINT: REMOTE_PROC_DOMAIN_MIGRATE_FINISH3_PARAMS
1076 0     0 1   async method migrate($dest_client, $params, $flags) {
  0            
  0            
  0            
  0            
  0            
  0            
1077             #
1078             # This function is a port of virDomainMigrate3
1079             #
1080 0           my $cancelled = 1;
1081 0           my $cookie;
1082 0           my $notify_source = 1;
1083 0           my $saved_error;
1084              
1085 0 0         die $log->error(q{migrate() client connected over read-only connection; can't migrate})
1086             if $_client->readonly;
1087              
1088 0 0         die $log->error(q{migrate() destination client connected over read-only connection; can't migrate})
1089             if $dest_client->readonly;
1090              
1091 0 0         die $log->error(q{migrate() use migrate_to_uri() for peer-to-peer and tunneled migration})
1092             if $flags & (MIGRATE_PEER2PEER | MIGRATE_TUNNELLED);
1093              
1094 0           my $params_feature = $_client->remote->DRV_FEATURE_MIGRATION_PARAMS;
1095 0 0         die $log->error(qq{Source host missing feature MIGRATION_PARAMS($params_feature); }
1096             . q{older migration protocols not supported})
1097             if (not await $_client->_supports_feature( $params_feature ));
1098 0 0         die $log->error(q{Destination host missing feature MIGRATION_PARAMS; }
1099             . q{older migration protocols not supported})
1100             if (not await $dest_client->_supports_feature( $params_feature ));
1101              
1102 0 0 0       die $log->error(q{migrate() flags MIGRATE_NON_SHARED_DISK and }
1103             . q{MIGRATE_NON_SHARED_INC are mutually exclusive.})
1104             if ($flags & MIGRATE_NON_SHARED_DISK
1105             and $flags & MIGRATE_NON_SHARED_INC);
1106              
1107 0 0 0       die $log->error(q{migrate() flag MIGRATE_NON_SHARED_SYNCHRONOUS_WRITES }
1108             . q{requires either MIGRATE_NON_SHARED_DISK or }
1109             . q{MIGRATE_NON_SHARED_INC.})
1110             if ($flags & MIGRATE_NON_SHARED_SYNCHRONOUS_WRITES
1111             and not ($flags & (MIGRATE_NON_SHARED_DISK | MIGRATE_NON_SHARED_INC)));
1112              
1113 0 0 0       die $log->error(q{migrate() with 'dest_client' does not support PEER2PEER and/or TUNNELLED flags})
1114             if ($flags & MIGRATE_PEER2PEER or $flags & MIGRATE_TUNNELLED);
1115              
1116 0 0         unless (typed_params_field( $params, MIGRATE_PARAM_DEST_NAME )) {
1117 0           $log->info( q{migrate() No destination VM name provided; using source name} );
1118 0           typed_params_field( $params, MIGRATE_PARAM_DEST_NAME,
1119             typed_value_new( TYPED_PARAM_STRING, $self->name ) );
1120             }
1121              
1122 0 0         if ($flags & MIGRATE_OFFLINE) {
1123 0           my $offline_feature = $_client->remote->DRV_FEATURE_MIGRATION_OFFLINE;
1124 0 0         die $log->error(q{Source host does not support offline migration})
1125             if (await $_client->_supports_feature( $offline_feature ));
1126 0 0         die $log->error(q{Destination host does not support offline migration})
1127             if (await $dest_client->_supports_feature( $offline_feature ));
1128             }
1129              
1130              
1131 0           my $protection = 0;
1132 0           my $protection_feature = $_client->remote->DRV_FEATURE_MIGRATE_CHANGE_PROTECTION;
1133 0 0         if (await $_client->_supports_feature( $protection_feature )) {
1134 0           $protection = MIGRATE_CHANGE_PROTECTION;
1135             }
1136 0 0 0       if ($flags & MIGRATE_CHANGE_PROTECTION and not $protection) {
1137 0           die $log->error(q{Cannot enforce change protection});
1138             }
1139 0           $flags &= ~MIGRATE_CHANGE_PROTECTION;
1140              
1141              
1142             # Require VIR_DRV_FEATURE_MIGRATION_PARAMS to be available,
1143             # since it was available since 2013
1144 0 0         die $log->error(q{Source host does not support VIR_DRV_FEATURE_MIGRATION_PARAMS})
1145             unless await $_client->_supports_feature( $_client->remote->DRV_FEATURE_MIGRATION_PARAMS );
1146 0 0         die $log->error(q{Destination host does not support VIR_DRV_FEATURE_MIGRATION_PARAMS})
1147             unless await $dest_client->_supports_feature( $_client->remote->DRV_FEATURE_MIGRATION_PARAMS );
1148              
1149              
1150 0           my $rv;
1151 0           $rv = await $_client->_call(
1152             $remote->PROC_DOMAIN_MIGRATE_BEGIN3_PARAMS,
1153             { dom => $_rpc_id, params => $params,
1154             flags => ($flags | $protection) });
1155              
1156 0           my $dom_xml;
1157 0           ($dom_xml, $cookie) = $rv->@{ qw( xml cookie_out ) };
1158 0 0         return undef unless $dom_xml;
1159              
1160 0           try {
1161 0           $rv = await $self->get_state;
1162 0 0 0       if ($rv->{'state'} == PAUSED
1163             and not ($flags & MIGRATE_POSTCOPY_RESUME)) {
1164 0           $flags |= MIGRATE_PAUSED;
1165             }
1166             }
1167             catch ($e) {
1168 0           $log->debug( "Error: $e" );
1169             # ignore errors
1170             }
1171              
1172 0           my $dest_uri;
1173 0           my $dest_flags = $flags & ~(MIGRATE_ABORT_ON_ERROR | MIGRATE_AUTO_CONVERGE);
1174              
1175              
1176             # # replace the MIGRATE_PARAM_DEST_XML parameter with $dom_xml
1177 0           $params = typed_params_new( $params );
1178 0           typed_params_field( $params, MIGRATE_PARAM_DEST_XML,
1179             typed_value_new( TYPED_PARAM_STRING, $dom_xml ) );
1180 0           try {
1181 0           $rv = await $dest_client->_call(
1182             $remote->PROC_DOMAIN_MIGRATE_PREPARE3_PARAMS,
1183             { cookie_in => $cookie, params => $params, flags => $dest_flags });
1184 0           ($cookie, $dest_uri) = $rv->@{ qw( cookie_out uri_out ) };
1185             }
1186             catch ($e) {
1187 0           $log->debug( "Error: $e" );
1188 0 0         if ($protection) {
1189 0           $saved_error = $e;
1190 0           goto confirm;
1191             }
1192             else {
1193 0           goto done;
1194             }
1195             }
1196 0 0         if ($dest_uri) {
    0          
1197 0           typed_params_field( $params, MIGRATE_PARAM_URI,
1198             typed_value_new( TYPED_PARAM_STRING, $dest_uri ) );
1199             }
1200             elsif (not typed_params_field_string_value( $params, MIGRATE_PARAM_URI )) {
1201 0           try {
1202 0           die $log->error("Internal error: MIGRATE_PREPARE3 didn't set 'uri'");
1203             }
1204             catch ($e) {
1205 0           $log->debug( "Error: $e" );
1206 0           $saved_error = $e;
1207 0           goto finish;
1208             }
1209             }
1210              
1211 0 0         if ($flags & MIGRATE_OFFLINE) {
1212 0           $log->debug("Offline migration, skipping Perform phase");
1213              
1214 0           $cookie = undef;
1215 0           $cancelled = 0;
1216 0           goto finish;
1217             }
1218              
1219 0           $log->debug("Perform3");
1220 0           try {
1221 0           $rv = await $_client->_call(
1222             $remote->PROC_DOMAIN_MIGRATE_PERFORM3_PARAMS,
1223             { dom => $_rpc_id,
1224             dconnuri => undef,
1225             params => $params,
1226             cookie_in => $cookie,
1227             flags => ($flags | $protection),
1228             } );
1229 0           $cookie = $rv->{cookie_out};
1230 0           $cancelled = 0;
1231             }
1232             catch ($e) {
1233 0           $log->debug( "Error: $e" );
1234 0           $saved_error = $e;
1235 0           $notify_source = 0;
1236             }
1237              
1238             finish:
1239 0           my $ddomain;
1240 0           try {
1241 0           $rv = await $dest_client->_call(
1242             $remote->PROC_DOMAIN_MIGRATE_FINISH3_PARAMS,
1243             { params => $params, cookie_in => $cookie,
1244             flags => $dest_flags, cancelled => $cancelled });
1245 0           ( $ddomain, $cookie ) = $rv->@{ qw( dom cookie_out ) };
1246             }
1247             catch ($e) {
1248 0           $log->debug( "Error: $e" );
1249             # ignore errors
1250             }
1251              
1252 0 0 0       if ($cancelled and $ddomain) {
1253 0           $log->error("finish step ignored migration cancellation and started domain");
1254             }
1255 0           $cancelled = not defined $ddomain;
1256              
1257             confirm:
1258              
1259 0 0         if ($notify_source) {
1260 0           try {
1261 0           await $_client->_call(
1262             $remote->PROC_DOMAIN_MIGRATE_CONFIRM3_PARAMS,
1263             { dom => $_rpc_id, params => $params, cookie_in => $cookie,
1264             flags => ($flags | $protection), cancelled => $cancelled});
1265             }
1266             catch ($e) {
1267 0           $log->debug( "Error: $e" );
1268              
1269 0           my $name = $self->name;
1270 0           $log->warn("Guest '$name' probably left in 'paused' state on source");
1271             }
1272             }
1273              
1274             done:
1275 0 0         if ($saved_error) {
1276 0           die $saved_error;
1277             }
1278             else {
1279 0           return $ddomain;
1280             }
1281             }
1282              
1283 0     0     sub _is_local_uri($uri) {
  0            
  0            
1284 0           my %components = parse_url( $uri );
1285              
1286 0 0 0       return 1 if $components{host} and $components{host} =~ m/^localhost/;
1287 0 0         return 0 if $components{host};
1288              
1289             return 0 if ($components{transport}
1290             and $components{transport} eq 'unix'
1291 0 0 0       and $components{query}->{socket});
      0        
1292             return 1 if ($components{transport}
1293 0 0 0       and $components{transport} eq 'unix');
1294 0 0         return 1 if not $components{transport};
1295 0           return 0;
1296             }
1297              
1298             # ENTRYPOINT: REMOTE_PROC_DOMAIN_MIGRATE_PERFORM3
1299 0     0 1   async method migrate_to_uri($dest_uri, $params, $flags) {
  0            
  0            
  0            
  0            
  0            
  0            
1300 0 0 0       die $log->error(q{migrate_to_uri() without PEER2PEER flag should not pass 'dest_uri'})
1301             if ($dest_uri and not ($flags & MIGRATE_PEER2PEER));
1302              
1303 0 0         die $log->error(q{migrate_to_uri() client connected over read-only connection; can't migrate})
1304             if $_client->readonly;
1305              
1306 0 0 0       die $log->error(q{migrate_to_uri() TUNNELLED flag requires PEER2PEER flag to be set})
1307             if ($flags & MIGRATE_TUNNELLED
1308             and not ($flags & MIGRATE_PEER2PEER));
1309              
1310 0 0 0       if ($flags & MIGRATE_TUNNELLED
1311             and $flags & MIGRATE_PARALLEL) {
1312 0           die $log->error(q{migrate_to_uri() TUNNELLED and PARALLEL flags are mutually exclusive});
1313             }
1314              
1315 0 0 0       if ($flags & MIGRATE_NON_SHARED_DISK
1316             and $flags & MIGRATE_NON_SHARED_INC) {
1317 0           die $log->error(q{migrate_to_uri() NON_SHARED_DISK and NON_SHARED_INC flags are mutually exclusive});
1318             }
1319              
1320 0 0         if ($flags & MIGRATE_NON_SHARED_SYNCHRONOUS_WRITES) {
1321 0 0         unless ($flags & (MIGRATE_NON_SHARED_DISK | MIGRATE_NON_SHARED_INC)) {
1322 0           die $log->error(q{migrate_to_uri() flag NON_SHARED_SYNCHRONOUS_WRITES requires either NON_SHARED_DISK or NON_SHARED_INC flag});
1323             }
1324             }
1325              
1326 0 0         if ($flags & MIGRATE_OFFLINE) {
1327 0 0         unless (await $_client->_supports_feature( $_client->remote->DRV_FEATURE_MIGRATION_OFFLINE )) {
1328 0           die $log->error(q{migrate_to_uri() offline migration not supported by the source host});
1329             }
1330             }
1331              
1332 0 0         if ($flags & MIGRATE_PEER2PEER) {
1333 0 0         unless (await $_client->_supports_feature( $_client->remote->DRV_FEATURE_MIGRATION_P2P )) {
1334 0           die $log->error(q{migrate_to_uri() p2p migration not supported by the source host});
1335             }
1336             }
1337             else {
1338 0 0         unless (await $_client->_supports_feature( $_client->remote->DRV_FEATURE_MIGRATION_DIRECT )) {
1339 0           die $log->error(q{migrate_to_uri() direct migration not supported by the source host});
1340             }
1341             }
1342              
1343 0 0         if ($flags & MIGRATE_PEER2PEER) {
1344 0 0         die $log->error(q{migrate_to_uri() peer-to-peer migration requires $dest_uri to be defined})
1345             if (not defined $dest_uri);
1346             }
1347             else {
1348 0           $dest_uri = undef;
1349             }
1350              
1351 0 0         if ($flags & MIGRATE_PEER2PEER) {
1352 0 0         if ( _is_local_uri( $dest_uri ) ) {
1353 0           die $log->error( q{Attempt to migrate guest to same host} );
1354             }
1355              
1356 0 0         die $log->error(q{Source host does not support VIR_DRV_FEATURE_MIGRATION_PARAMS})
1357             unless await $_client->_supports_feature( $_client->remote->DRV_FEATURE_MIGRATION_PARAMS );
1358              
1359 0           return await $_client->_call( $remote->PROC_DOMAIN_MIGRATE_PERFORM3_PARAMS,
1360             # domain, dconnuri, params, nparams, flags
1361             {
1362             dom => $_rpc_id,
1363             dconnuri => $dest_uri,
1364             flags => $flags,
1365             params => $params,
1366             cookie_in => '',
1367             } );
1368             }
1369              
1370             # when not migrating PEER2PEER
1371 0 0         unless (await $_client->_supports_feature( $_client->remote->DRV_FEATURE_MIGRATION_V3 ) ) {
1372 0           die $log->error(q{migrate_to_uri() v3 migration not supported by the source host});
1373             }
1374              
1375 0 0         die $log->error(q{migrate() requires MIGRATE_PARAM_URI when called without both 'dest_client' and 'dest_client_uri'})
1376             if (not typed_params_field_string_value( $params, MIGRATE_PARAM_URI ));
1377              
1378 0           typed_param_field_check_fields_only( $params,
1379             MIGRATE_PARAM_URI, MIGRATE_PARAM_DEST_NAME,
1380             MIGRATE_PARAM_DEST_XML, MIGRATE_PARAM_BANDWIDTH );
1381              
1382 0           my $miguri = typed_param_field_string_value( $params, MIGRATE_PARAM_URI );
1383 0           my $dest_name = typed_param_field_string_value( $params, MIGRATE_PARAM_DEST_NAME );
1384 0           my $dest_xml = typed_param_field_string_value( $params, MIGRATE_PARAM_DEST_XML );
1385 0           my $bandwidth = typed_param_field_ullong_value( $params, MIGRATE_PARAM_BANDWIDTH );
1386              
1387 0 0         unless ($dest_name) {
1388 0           die $log->error( q{migrate() empty string for required parameter MIGRATE_PARAM_DEST_NAME} );
1389             }
1390              
1391 0           return await $_client->_call( $remote->PROC_DOMAIN_MIGRATE_PERFORM3,
1392             {
1393             dom => $_rpc_id,
1394             xmlin => $dest_xml,
1395             uri => $miguri,
1396             flags => $flags,
1397             dname => $dest_name,
1398             bandwidth => $bandwidth,
1399             cookie_in => undef,
1400             dconnuri => undef,
1401             } );
1402             }
1403              
1404              
1405 0     0 1   async method migrate_peer2peer( $dconnuri, $params, $flags ) {
  0            
  0            
  0            
  0            
  0            
  0            
1406 0           return await $self->migrate_to_uri( $dconnuri, $params, $flags | MIGRATE_PEER2PEER );
1407             }
1408              
1409 0     0 1   async method migrate_unmanaged_direct( $miguri, $params, $flags ) {
  0            
  0            
  0            
  0            
  0            
  0            
1410 0           typed_params_field_string_value( $params, MIGRATE_PARAM_URI, $miguri );
1411 0           return await $self->migrate_to_uri( undef, $params, $flags & ~MIGRATE_PEER2PEER );
1412             }
1413              
1414             ###############################################################################
1415             #
1416             # END OF MIGRATION CODE
1417             #
1418             ###############################################################################
1419              
1420              
1421             # ENTRYPOINT: REMOTE_PROC_DOMAIN_PIN_EMULATOR
1422 0     0 1   async method pin_emulator($cpumap, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
1423 0           await $self->_call(
1424             $remote->PROC_DOMAIN_PIN_EMULATOR,
1425             { dom => $_rpc_id, cpumap => $cpumap,
1426             flags => $flags // 0 } );
1427             }
1428              
1429 0     0     method _migrate_perform($cookie, $uri, $flags, $dname, $bandwidth) {
  0            
  0            
  0            
  0            
  0            
  0            
  0            
1430 0   0       return $_client->_call(
1431             $remote->PROC_DOMAIN_MIGRATE_PERFORM,
1432             { dom => $_rpc_id, cookie => $cookie, uri => $uri, flags => $flags // 0, dname => $dname, bandwidth => $bandwidth }, empty => 1 );
1433             }
1434              
1435 0     0 1   method abort_job() {
  0            
  0            
1436 0           return $_client->_call(
1437             $remote->PROC_DOMAIN_ABORT_JOB,
1438             { dom => $_rpc_id }, empty => 1 );
1439             }
1440              
1441 0     0 1   method abort_job_flags($flags = 0) {
  0            
  0            
  0            
1442 0   0       return $_client->_call(
1443             $remote->PROC_DOMAIN_ABORT_JOB_FLAGS,
1444             { dom => $_rpc_id, flags => $flags // 0 }, empty => 1 );
1445             }
1446              
1447 0     0 1   method add_iothread($iothread_id, $flags = 0) {
  0            
  0            
  0            
  0            
1448 0   0       return $_client->_call(
1449             $remote->PROC_DOMAIN_ADD_IOTHREAD,
1450             { dom => $_rpc_id, iothread_id => $iothread_id, flags => $flags // 0 }, empty => 1 );
1451             }
1452              
1453 0     0 1   async method agent_set_response_timeout($timeout, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
1454 0           return await $_client->_call(
1455             $remote->PROC_DOMAIN_AGENT_SET_RESPONSE_TIMEOUT,
1456             { dom => $_rpc_id, timeout => $timeout, flags => $flags // 0 }, unwrap => 'result' );
1457             }
1458              
1459 0     0 1   method attach_device($xml) {
  0            
  0            
  0            
1460 0           return $_client->_call(
1461             $remote->PROC_DOMAIN_ATTACH_DEVICE,
1462             { dom => $_rpc_id, xml => $xml }, empty => 1 );
1463             }
1464              
1465 0     0 1   method attach_device_flags($xml, $flags = 0) {
  0            
  0            
  0            
  0            
1466 0   0       return $_client->_call(
1467             $remote->PROC_DOMAIN_ATTACH_DEVICE_FLAGS,
1468             { dom => $_rpc_id, xml => $xml, flags => $flags // 0 }, empty => 1 );
1469             }
1470              
1471 0     0 1   async method authorized_ssh_keys_get($user, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
1472 0           return await $_client->_call(
1473             $remote->PROC_DOMAIN_AUTHORIZED_SSH_KEYS_GET,
1474             { dom => $_rpc_id, user => $user, flags => $flags // 0 }, unwrap => 'keys' );
1475             }
1476              
1477 0     0 1   method authorized_ssh_keys_set($user, $keys, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
1478 0   0       return $_client->_call(
1479             $remote->PROC_DOMAIN_AUTHORIZED_SSH_KEYS_SET,
1480             { dom => $_rpc_id, user => $user, keys => $keys, flags => $flags // 0 }, empty => 1 );
1481             }
1482              
1483 0     0 1   method backup_begin($backup_xml, $checkpoint_xml, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
1484 0   0       return $_client->_call(
1485             $remote->PROC_DOMAIN_BACKUP_BEGIN,
1486             { dom => $_rpc_id, backup_xml => $backup_xml, checkpoint_xml => $checkpoint_xml, flags => $flags // 0 }, empty => 1 );
1487             }
1488              
1489 0     0 1   async method backup_get_xml_desc($flags = 0) {
  0            
  0            
  0            
  0            
1490 0           return await $_client->_call(
1491             $remote->PROC_DOMAIN_BACKUP_GET_XML_DESC,
1492             { dom => $_rpc_id, flags => $flags // 0 }, unwrap => 'xml' );
1493             }
1494              
1495 0     0 1   method block_commit($disk, $base, $top, $bandwidth, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
  0            
  0            
1496 0   0       return $_client->_call(
1497             $remote->PROC_DOMAIN_BLOCK_COMMIT,
1498             { dom => $_rpc_id, disk => $disk, base => $base, top => $top, bandwidth => $bandwidth, flags => $flags // 0 }, empty => 1 );
1499             }
1500              
1501 0     0 1   async method block_copy($path, $destxml, $params, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
  0            
  0            
1502 0           $params = await $_client->_filter_typed_param_string( $params );
1503 0           return await $_client->_call(
1504             $remote->PROC_DOMAIN_BLOCK_COPY,
1505             { dom => $_rpc_id, path => $path, destxml => $destxml, params => $params, flags => $flags // 0 }, empty => 1 );
1506             }
1507              
1508 0     0 1   method block_job_abort($path, $flags = 0) {
  0            
  0            
  0            
  0            
1509 0   0       return $_client->_call(
1510             $remote->PROC_DOMAIN_BLOCK_JOB_ABORT,
1511             { dom => $_rpc_id, path => $path, flags => $flags // 0 }, empty => 1 );
1512             }
1513              
1514 0     0 1   method block_job_set_speed($path, $bandwidth, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
1515 0   0       return $_client->_call(
1516             $remote->PROC_DOMAIN_BLOCK_JOB_SET_SPEED,
1517             { dom => $_rpc_id, path => $path, bandwidth => $bandwidth, flags => $flags // 0 }, empty => 1 );
1518             }
1519              
1520 0     0 1   async method block_peek($path, $offset, $size, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
  0            
  0            
1521 0           return await $_client->_call(
1522             $remote->PROC_DOMAIN_BLOCK_PEEK,
1523             { dom => $_rpc_id, path => $path, offset => $offset, size => $size, flags => $flags // 0 }, unwrap => 'buffer' );
1524             }
1525              
1526 0     0 1   method block_pull($path, $bandwidth, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
1527 0   0       return $_client->_call(
1528             $remote->PROC_DOMAIN_BLOCK_PULL,
1529             { dom => $_rpc_id, path => $path, bandwidth => $bandwidth, flags => $flags // 0 }, empty => 1 );
1530             }
1531              
1532 0     0 1   method block_rebase($path, $base, $bandwidth, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
  0            
1533 0   0       return $_client->_call(
1534             $remote->PROC_DOMAIN_BLOCK_REBASE,
1535             { dom => $_rpc_id, path => $path, base => $base, bandwidth => $bandwidth, flags => $flags // 0 }, empty => 1 );
1536             }
1537              
1538 0     0 1   method block_resize($disk, $size, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
1539 0   0       return $_client->_call(
1540             $remote->PROC_DOMAIN_BLOCK_RESIZE,
1541             { dom => $_rpc_id, disk => $disk, size => $size, flags => $flags // 0 }, empty => 1 );
1542             }
1543              
1544 0     0 1   method block_stats($path) {
  0            
  0            
  0            
1545 0           return $_client->_call(
1546             $remote->PROC_DOMAIN_BLOCK_STATS,
1547             { dom => $_rpc_id, path => $path } );
1548             }
1549              
1550 0     0 1   async method block_stats_flags($path, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
1551 0           $flags |= await $_client->_typed_param_string_okay();
1552 0           my $nparams = await $_client->_call(
1553             $remote->PROC_DOMAIN_BLOCK_STATS_FLAGS,
1554             { dom => $_rpc_id, path => $path, nparams => 0, flags => $flags // 0 }, unwrap => 'nparams' );
1555 0           return await $_client->_call(
1556             $remote->PROC_DOMAIN_BLOCK_STATS_FLAGS,
1557             { dom => $_rpc_id, path => $path, nparams => $nparams, flags => $flags // 0 }, unwrap => 'params' );
1558             }
1559              
1560 0     0 1   async method checkpoint_create_xml($xml_desc, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
1561 0           return await $_client->_call(
1562             $remote->PROC_DOMAIN_CHECKPOINT_CREATE_XML,
1563             { dom => $_rpc_id, xml_desc => $xml_desc, flags => $flags // 0 }, unwrap => 'checkpoint' );
1564             }
1565              
1566 0     0 1   async method checkpoint_lookup_by_name($name, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
1567 0           return await $_client->_call(
1568             $remote->PROC_DOMAIN_CHECKPOINT_LOOKUP_BY_NAME,
1569             { dom => $_rpc_id, name => $name, flags => $flags // 0 }, unwrap => 'checkpoint' );
1570             }
1571              
1572 0     0 1   method core_dump($to, $flags = 0) {
  0            
  0            
  0            
  0            
1573 0   0       return $_client->_call(
1574             $remote->PROC_DOMAIN_CORE_DUMP,
1575             { dom => $_rpc_id, to => $to, flags => $flags // 0 }, empty => 1 );
1576             }
1577              
1578 0     0 1   method core_dump_with_format($to, $dumpformat, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
1579 0   0       return $_client->_call(
1580             $remote->PROC_DOMAIN_CORE_DUMP_WITH_FORMAT,
1581             { dom => $_rpc_id, to => $to, dumpformat => $dumpformat, flags => $flags // 0 }, empty => 1 );
1582             }
1583              
1584 0     0 1   async method create_with_flags($flags = 0) {
  0            
  0            
  0            
  0            
1585 0           return await $_client->_call(
1586             $remote->PROC_DOMAIN_CREATE_WITH_FLAGS,
1587             { dom => $_rpc_id, flags => $flags // 0 }, unwrap => 'dom' );
1588             }
1589              
1590 0     0 1   method del_iothread($iothread_id, $flags = 0) {
  0            
  0            
  0            
  0            
1591 0   0       return $_client->_call(
1592             $remote->PROC_DOMAIN_DEL_IOTHREAD,
1593             { dom => $_rpc_id, iothread_id => $iothread_id, flags => $flags // 0 }, empty => 1 );
1594             }
1595              
1596 0     0 1   method del_throttle_group($group, $flags = 0) {
  0            
  0            
  0            
  0            
1597 0   0       return $_client->_call(
1598             $remote->PROC_DOMAIN_DEL_THROTTLE_GROUP,
1599             { dom => $_rpc_id, group => $group, flags => $flags // 0 }, empty => 1 );
1600             }
1601              
1602 0     0 1   method destroy() {
  0            
  0            
1603 0           return $_client->_call(
1604             $remote->PROC_DOMAIN_DESTROY,
1605             { dom => $_rpc_id }, empty => 1 );
1606             }
1607              
1608 0     0 1   method destroy_flags($flags = 0) {
  0            
  0            
  0            
1609 0   0       return $_client->_call(
1610             $remote->PROC_DOMAIN_DESTROY_FLAGS,
1611             { dom => $_rpc_id, flags => $flags // 0 }, empty => 1 );
1612             }
1613              
1614 0     0 1   method detach_device($xml) {
  0            
  0            
  0            
1615 0           return $_client->_call(
1616             $remote->PROC_DOMAIN_DETACH_DEVICE,
1617             { dom => $_rpc_id, xml => $xml }, empty => 1 );
1618             }
1619              
1620 0     0 1   method detach_device_alias($alias, $flags = 0) {
  0            
  0            
  0            
  0            
1621 0   0       return $_client->_call(
1622             $remote->PROC_DOMAIN_DETACH_DEVICE_ALIAS,
1623             { dom => $_rpc_id, alias => $alias, flags => $flags // 0 }, empty => 1 );
1624             }
1625              
1626 0     0 1   method detach_device_flags($xml, $flags = 0) {
  0            
  0            
  0            
  0            
1627 0   0       return $_client->_call(
1628             $remote->PROC_DOMAIN_DETACH_DEVICE_FLAGS,
1629             { dom => $_rpc_id, xml => $xml, flags => $flags // 0 }, empty => 1 );
1630             }
1631              
1632 0     0 1   async method fsfreeze($mountpoints, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
1633 0           return await $_client->_call(
1634             $remote->PROC_DOMAIN_FSFREEZE,
1635             { dom => $_rpc_id, mountpoints => $mountpoints, flags => $flags // 0 }, unwrap => 'filesystems' );
1636             }
1637              
1638 0     0 1   async method fsthaw($mountpoints, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
1639 0           return await $_client->_call(
1640             $remote->PROC_DOMAIN_FSTHAW,
1641             { dom => $_rpc_id, mountpoints => $mountpoints, flags => $flags // 0 }, unwrap => 'filesystems' );
1642             }
1643              
1644 0     0 1   method fstrim($mountPoint, $minimum, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
1645 0   0       return $_client->_call(
1646             $remote->PROC_DOMAIN_FSTRIM,
1647             { dom => $_rpc_id, mountPoint => $mountPoint, minimum => $minimum, flags => $flags // 0 }, empty => 1 );
1648             }
1649              
1650 0     0 1   async method get_autostart() {
  0            
  0            
  0            
1651 0           return await $_client->_call(
1652             $remote->PROC_DOMAIN_GET_AUTOSTART,
1653             { dom => $_rpc_id }, unwrap => 'autostart' );
1654             }
1655              
1656 0     0 1   async method get_autostart_once() {
  0            
  0            
  0            
1657 0           return await $_client->_call(
1658             $remote->PROC_DOMAIN_GET_AUTOSTART_ONCE,
1659             { dom => $_rpc_id }, unwrap => 'autostart' );
1660             }
1661              
1662 0     0 1   async method get_blkio_parameters($flags = 0) {
  0            
  0            
  0            
  0            
1663 0           $flags |= await $_client->_typed_param_string_okay();
1664 0           my $nparams = await $_client->_call(
1665             $remote->PROC_DOMAIN_GET_BLKIO_PARAMETERS,
1666             { dom => $_rpc_id, nparams => 0, flags => $flags // 0 }, unwrap => 'nparams' );
1667 0           return await $_client->_call(
1668             $remote->PROC_DOMAIN_GET_BLKIO_PARAMETERS,
1669             { dom => $_rpc_id, nparams => $nparams, flags => $flags // 0 }, unwrap => 'params' );
1670             }
1671              
1672 0     0 1   method get_block_info($path, $flags = 0) {
  0            
  0            
  0            
  0            
1673 0   0       return $_client->_call(
1674             $remote->PROC_DOMAIN_GET_BLOCK_INFO,
1675             { dom => $_rpc_id, path => $path, flags => $flags // 0 } );
1676             }
1677              
1678 0     0 1   async method get_block_io_tune($disk, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
1679 0           $flags |= await $_client->_typed_param_string_okay();
1680 0           my $nparams = await $_client->_call(
1681             $remote->PROC_DOMAIN_GET_BLOCK_IO_TUNE,
1682             { dom => $_rpc_id, disk => $disk, nparams => 0, flags => $flags // 0 }, unwrap => 'nparams' );
1683 0           return await $_client->_call(
1684             $remote->PROC_DOMAIN_GET_BLOCK_IO_TUNE,
1685             { dom => $_rpc_id, disk => $disk, nparams => $nparams, flags => $flags // 0 }, unwrap => 'params' );
1686             }
1687              
1688 0     0 1   method get_control_info($flags = 0) {
  0            
  0            
  0            
1689 0   0       return $_client->_call(
1690             $remote->PROC_DOMAIN_GET_CONTROL_INFO,
1691             { dom => $_rpc_id, flags => $flags // 0 } );
1692             }
1693              
1694 0     0 1   async method get_cpu_stats($start_cpu, $ncpus, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
  0            
1695 0           $flags |= await $_client->_typed_param_string_okay();
1696 0           my $nparams = await $_client->_call(
1697             $remote->PROC_DOMAIN_GET_CPU_STATS,
1698             { dom => $_rpc_id, nparams => 0, start_cpu => $start_cpu, ncpus => $ncpus, flags => $flags // 0 }, unwrap => 'nparams' );
1699 0           return await $_client->_call(
1700             $remote->PROC_DOMAIN_GET_CPU_STATS,
1701             { dom => $_rpc_id, nparams => $nparams, start_cpu => $start_cpu, ncpus => $ncpus, flags => $flags // 0 }, unwrap => 'params' );
1702             }
1703              
1704 0     0 1   async method get_disk_errors($flags = 0) {
  0            
  0            
  0            
  0            
1705 0           return await $_client->_call(
1706             $remote->PROC_DOMAIN_GET_DISK_ERRORS,
1707             { dom => $_rpc_id, maxerrors => $remote->DOMAIN_DISK_ERRORS_MAX, flags => $flags // 0 }, unwrap => 'errors' );
1708             }
1709              
1710 0     0 1   async method get_fsinfo($flags = 0) {
  0            
  0            
  0            
  0            
1711 0           return await $_client->_call(
1712             $remote->PROC_DOMAIN_GET_FSINFO,
1713             { dom => $_rpc_id, flags => $flags // 0 }, unwrap => 'info' );
1714             }
1715              
1716 0     0 1   async method get_guest_info($types, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
1717 0           $flags |= await $_client->_typed_param_string_okay();
1718 0           return await $_client->_call(
1719             $remote->PROC_DOMAIN_GET_GUEST_INFO,
1720             { dom => $_rpc_id, types => $types, flags => $flags // 0 }, unwrap => 'params' );
1721             }
1722              
1723 0     0 1   async method get_guest_vcpus($flags = 0) {
  0            
  0            
  0            
  0            
1724 0           $flags |= await $_client->_typed_param_string_okay();
1725 0           return await $_client->_call(
1726             $remote->PROC_DOMAIN_GET_GUEST_VCPUS,
1727             { dom => $_rpc_id, flags => $flags // 0 }, unwrap => 'params' );
1728             }
1729              
1730 0     0 1   async method get_hostname($flags = 0) {
  0            
  0            
  0            
  0            
1731 0           return await $_client->_call(
1732             $remote->PROC_DOMAIN_GET_HOSTNAME,
1733             { dom => $_rpc_id, flags => $flags // 0 }, unwrap => 'hostname' );
1734             }
1735              
1736 0     0 1   method get_info() {
  0            
  0            
1737 0           return $_client->_call(
1738             $remote->PROC_DOMAIN_GET_INFO,
1739             { dom => $_rpc_id } );
1740             }
1741              
1742 0     0 1   async method get_interface_parameters($device, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
1743 0           $flags |= await $_client->_typed_param_string_okay();
1744 0           my $nparams = await $_client->_call(
1745             $remote->PROC_DOMAIN_GET_INTERFACE_PARAMETERS,
1746             { dom => $_rpc_id, device => $device, nparams => 0, flags => $flags // 0 }, unwrap => 'nparams' );
1747 0           return await $_client->_call(
1748             $remote->PROC_DOMAIN_GET_INTERFACE_PARAMETERS,
1749             { dom => $_rpc_id, device => $device, nparams => $nparams, flags => $flags // 0 }, unwrap => 'params' );
1750             }
1751              
1752 0     0 1   method get_job_info() {
  0            
  0            
1753 0           return $_client->_call(
1754             $remote->PROC_DOMAIN_GET_JOB_INFO,
1755             { dom => $_rpc_id } );
1756             }
1757              
1758 0     0 1   method get_job_stats($flags = 0) {
  0            
  0            
  0            
1759 0   0       return $_client->_call(
1760             $remote->PROC_DOMAIN_GET_JOB_STATS,
1761             { dom => $_rpc_id, flags => $flags // 0 } );
1762             }
1763              
1764 0     0 1   async method get_launch_security_info($flags = 0) {
  0            
  0            
  0            
  0            
1765 0           $flags |= await $_client->_typed_param_string_okay();
1766 0           return await $_client->_call(
1767             $remote->PROC_DOMAIN_GET_LAUNCH_SECURITY_INFO,
1768             { dom => $_rpc_id, flags => $flags // 0 }, unwrap => 'params' );
1769             }
1770              
1771 0     0 1   async method get_max_memory() {
  0            
  0            
  0            
1772 0           return await $_client->_call(
1773             $remote->PROC_DOMAIN_GET_MAX_MEMORY,
1774             { dom => $_rpc_id }, unwrap => 'memory' );
1775             }
1776              
1777 0     0 1   async method get_max_vcpus() {
  0            
  0            
  0            
1778 0           return await $_client->_call(
1779             $remote->PROC_DOMAIN_GET_MAX_VCPUS,
1780             { dom => $_rpc_id }, unwrap => 'num' );
1781             }
1782              
1783 0     0 1   async method get_memory_parameters($flags = 0) {
  0            
  0            
  0            
  0            
1784 0           $flags |= await $_client->_typed_param_string_okay();
1785 0           my $nparams = await $_client->_call(
1786             $remote->PROC_DOMAIN_GET_MEMORY_PARAMETERS,
1787             { dom => $_rpc_id, nparams => 0, flags => $flags // 0 }, unwrap => 'nparams' );
1788 0           return await $_client->_call(
1789             $remote->PROC_DOMAIN_GET_MEMORY_PARAMETERS,
1790             { dom => $_rpc_id, nparams => $nparams, flags => $flags // 0 }, unwrap => 'params' );
1791             }
1792              
1793 0     0 1   async method get_messages($flags = 0) {
  0            
  0            
  0            
  0            
1794 0           return await $_client->_call(
1795             $remote->PROC_DOMAIN_GET_MESSAGES,
1796             { dom => $_rpc_id, flags => $flags // 0 }, unwrap => 'msgs' );
1797             }
1798              
1799 0     0 1   async method get_metadata($type, $uri, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
  0            
1800 0           return await $_client->_call(
1801             $remote->PROC_DOMAIN_GET_METADATA,
1802             { dom => $_rpc_id, type => $type, uri => $uri, flags => $flags // 0 }, unwrap => 'metadata' );
1803             }
1804              
1805 0     0 1   async method get_numa_parameters($flags = 0) {
  0            
  0            
  0            
  0            
1806 0           $flags |= await $_client->_typed_param_string_okay();
1807 0           my $nparams = await $_client->_call(
1808             $remote->PROC_DOMAIN_GET_NUMA_PARAMETERS,
1809             { dom => $_rpc_id, nparams => 0, flags => $flags // 0 }, unwrap => 'nparams' );
1810 0           return await $_client->_call(
1811             $remote->PROC_DOMAIN_GET_NUMA_PARAMETERS,
1812             { dom => $_rpc_id, nparams => $nparams, flags => $flags // 0 }, unwrap => 'params' );
1813             }
1814              
1815 0     0 1   async method get_os_type() {
  0            
  0            
  0            
1816 0           return await $_client->_call(
1817             $remote->PROC_DOMAIN_GET_OS_TYPE,
1818             { dom => $_rpc_id }, unwrap => 'type' );
1819             }
1820              
1821 0     0 1   async method get_perf_events($flags = 0) {
  0            
  0            
  0            
  0            
1822 0           $flags |= await $_client->_typed_param_string_okay();
1823 0           return await $_client->_call(
1824             $remote->PROC_DOMAIN_GET_PERF_EVENTS,
1825             { dom => $_rpc_id, flags => $flags // 0 }, unwrap => 'params' );
1826             }
1827              
1828 0     0 1   async method get_scheduler_parameters() {
  0            
  0            
  0            
1829 0           return await $_client->_call(
1830             $remote->PROC_DOMAIN_GET_SCHEDULER_PARAMETERS,
1831             { dom => $_rpc_id, nparams => $remote->DOMAIN_SCHEDULER_PARAMETERS_MAX }, unwrap => 'params' );
1832             }
1833              
1834 0     0 1   async method get_scheduler_parameters_flags($flags = 0) {
  0            
  0            
  0            
  0            
1835 0           $flags |= await $_client->_typed_param_string_okay();
1836 0           return await $_client->_call(
1837             $remote->PROC_DOMAIN_GET_SCHEDULER_PARAMETERS_FLAGS,
1838             { dom => $_rpc_id, nparams => $remote->DOMAIN_SCHEDULER_PARAMETERS_MAX, flags => $flags // 0 }, unwrap => 'params' );
1839             }
1840              
1841 0     0 1   async method get_scheduler_type() {
  0            
  0            
  0            
1842 0           return await $_client->_call(
1843             $remote->PROC_DOMAIN_GET_SCHEDULER_TYPE,
1844             { dom => $_rpc_id }, unwrap => 'type' );
1845             }
1846              
1847 0     0 1   method get_state($flags = 0) {
  0            
  0            
  0            
1848 0   0       return $_client->_call(
1849             $remote->PROC_DOMAIN_GET_STATE,
1850             { dom => $_rpc_id, flags => $flags // 0 } );
1851             }
1852              
1853 0     0 1   async method get_vcpus_flags($flags = 0) {
  0            
  0            
  0            
  0            
1854 0           return await $_client->_call(
1855             $remote->PROC_DOMAIN_GET_VCPUS_FLAGS,
1856             { dom => $_rpc_id, flags => $flags // 0 }, unwrap => 'num' );
1857             }
1858              
1859 0     0 1   async method get_xml_desc($flags = 0) {
  0            
  0            
  0            
  0            
1860 0           return await $_client->_call(
1861             $remote->PROC_DOMAIN_GET_XML_DESC,
1862             { dom => $_rpc_id, flags => $flags // 0 }, unwrap => 'xml' );
1863             }
1864              
1865 0     0 1   method graphics_reload($type, $flags = 0) {
  0            
  0            
  0            
  0            
1866 0   0       return $_client->_call(
1867             $remote->PROC_DOMAIN_GRAPHICS_RELOAD,
1868             { dom => $_rpc_id, type => $type, flags => $flags // 0 }, empty => 1 );
1869             }
1870              
1871 0     0 1   async method has_current_snapshot($flags = 0) {
  0            
  0            
  0            
  0            
1872 0           return await $_client->_call(
1873             $remote->PROC_DOMAIN_HAS_CURRENT_SNAPSHOT,
1874             { dom => $_rpc_id, flags => $flags // 0 }, unwrap => 'result' );
1875             }
1876              
1877 0     0 1   async method has_managed_save_image($flags = 0) {
  0            
  0            
  0            
  0            
1878 0           return await $_client->_call(
1879             $remote->PROC_DOMAIN_HAS_MANAGED_SAVE_IMAGE,
1880             { dom => $_rpc_id, flags => $flags // 0 }, unwrap => 'result' );
1881             }
1882              
1883 0     0 1   method inject_nmi($flags = 0) {
  0            
  0            
  0            
1884 0   0       return $_client->_call(
1885             $remote->PROC_DOMAIN_INJECT_NMI,
1886             { dom => $_rpc_id, flags => $flags // 0 }, empty => 1 );
1887             }
1888              
1889 0     0 1   async method interface_addresses($source, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
1890 0           return await $_client->_call(
1891             $remote->PROC_DOMAIN_INTERFACE_ADDRESSES,
1892             { dom => $_rpc_id, source => $source, flags => $flags // 0 }, unwrap => 'ifaces' );
1893             }
1894              
1895 0     0 1   method interface_stats($device) {
  0            
  0            
  0            
1896 0           return $_client->_call(
1897             $remote->PROC_DOMAIN_INTERFACE_STATS,
1898             { dom => $_rpc_id, device => $device } );
1899             }
1900              
1901 0     0 1   async method is_active() {
  0            
  0            
  0            
1902 0           return await $_client->_call(
1903             $remote->PROC_DOMAIN_IS_ACTIVE,
1904             { dom => $_rpc_id }, unwrap => 'active' );
1905             }
1906              
1907 0     0 1   async method is_persistent() {
  0            
  0            
  0            
1908 0           return await $_client->_call(
1909             $remote->PROC_DOMAIN_IS_PERSISTENT,
1910             { dom => $_rpc_id }, unwrap => 'persistent' );
1911             }
1912              
1913 0     0 1   async method is_updated() {
  0            
  0            
  0            
1914 0           return await $_client->_call(
1915             $remote->PROC_DOMAIN_IS_UPDATED,
1916             { dom => $_rpc_id }, unwrap => 'updated' );
1917             }
1918              
1919 0     0 1   async method list_all_checkpoints($flags = 0) {
  0            
  0            
  0            
  0            
1920 0           return await $_client->_call(
1921             $remote->PROC_DOMAIN_LIST_ALL_CHECKPOINTS,
1922             { dom => $_rpc_id, need_results => $remote->DOMAIN_CHECKPOINT_LIST_MAX, flags => $flags // 0 }, unwrap => 'checkpoints' );
1923             }
1924              
1925 0     0 1   async method list_all_snapshots($flags = 0) {
  0            
  0            
  0            
  0            
1926 0           return await $_client->_call(
1927             $remote->PROC_DOMAIN_LIST_ALL_SNAPSHOTS,
1928             { dom => $_rpc_id, need_results => $remote->DOMAIN_SNAPSHOT_LIST_MAX, flags => $flags // 0 }, unwrap => 'snapshots' );
1929             }
1930              
1931 0     0 1   method managed_save($flags = 0) {
  0            
  0            
  0            
1932 0   0       return $_client->_call(
1933             $remote->PROC_DOMAIN_MANAGED_SAVE,
1934             { dom => $_rpc_id, flags => $flags // 0 }, empty => 1 );
1935             }
1936              
1937 0     0 1   method managed_save_define_xml($dxml, $flags = 0) {
  0            
  0            
  0            
  0            
1938 0   0       return $_client->_call(
1939             $remote->PROC_DOMAIN_MANAGED_SAVE_DEFINE_XML,
1940             { dom => $_rpc_id, dxml => $dxml, flags => $flags // 0 }, empty => 1 );
1941             }
1942              
1943 0     0 1   async method managed_save_get_xml_desc($flags = 0) {
  0            
  0            
  0            
  0            
1944 0           return await $_client->_call(
1945             $remote->PROC_DOMAIN_MANAGED_SAVE_GET_XML_DESC,
1946             { dom => $_rpc_id, flags => $flags // 0 }, unwrap => 'xml' );
1947             }
1948              
1949 0     0 1   method managed_save_remove($flags = 0) {
  0            
  0            
  0            
1950 0   0       return $_client->_call(
1951             $remote->PROC_DOMAIN_MANAGED_SAVE_REMOVE,
1952             { dom => $_rpc_id, flags => $flags // 0 }, empty => 1 );
1953             }
1954              
1955 0     0 1   async method memory_peek($offset, $size, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
  0            
1956 0           return await $_client->_call(
1957             $remote->PROC_DOMAIN_MEMORY_PEEK,
1958             { dom => $_rpc_id, offset => $offset, size => $size, flags => $flags // 0 }, unwrap => 'buffer' );
1959             }
1960              
1961 0     0 1   async method memory_stats($flags = 0) {
  0            
  0            
  0            
  0            
1962 0           return await $_client->_call(
1963             $remote->PROC_DOMAIN_MEMORY_STATS,
1964             { dom => $_rpc_id, maxStats => $remote->DOMAIN_MEMORY_STATS_MAX, flags => $flags // 0 }, unwrap => 'stats' );
1965             }
1966              
1967 0     0 1   async method migrate_get_compression_cache($flags = 0) {
  0            
  0            
  0            
  0            
1968 0           return await $_client->_call(
1969             $remote->PROC_DOMAIN_MIGRATE_GET_COMPRESSION_CACHE,
1970             { dom => $_rpc_id, flags => $flags // 0 }, unwrap => 'cacheSize' );
1971             }
1972              
1973 0     0 1   async method migrate_get_max_downtime($flags = 0) {
  0            
  0            
  0            
  0            
1974 0           return await $_client->_call(
1975             $remote->PROC_DOMAIN_MIGRATE_GET_MAX_DOWNTIME,
1976             { dom => $_rpc_id, flags => $flags // 0 }, unwrap => 'downtime' );
1977             }
1978              
1979 0     0 1   async method migrate_get_max_speed($flags = 0) {
  0            
  0            
  0            
  0            
1980 0           return await $_client->_call(
1981             $remote->PROC_DOMAIN_MIGRATE_GET_MAX_SPEED,
1982             { dom => $_rpc_id, flags => $flags // 0 }, unwrap => 'bandwidth' );
1983             }
1984              
1985 0     0 1   method migrate_set_compression_cache($cacheSize, $flags = 0) {
  0            
  0            
  0            
  0            
1986 0   0       return $_client->_call(
1987             $remote->PROC_DOMAIN_MIGRATE_SET_COMPRESSION_CACHE,
1988             { dom => $_rpc_id, cacheSize => $cacheSize, flags => $flags // 0 }, empty => 1 );
1989             }
1990              
1991 0     0 1   method migrate_set_max_downtime($downtime, $flags = 0) {
  0            
  0            
  0            
  0            
1992 0   0       return $_client->_call(
1993             $remote->PROC_DOMAIN_MIGRATE_SET_MAX_DOWNTIME,
1994             { dom => $_rpc_id, downtime => $downtime, flags => $flags // 0 }, empty => 1 );
1995             }
1996              
1997 0     0 1   method migrate_set_max_speed($bandwidth, $flags = 0) {
  0            
  0            
  0            
  0            
1998 0   0       return $_client->_call(
1999             $remote->PROC_DOMAIN_MIGRATE_SET_MAX_SPEED,
2000             { dom => $_rpc_id, bandwidth => $bandwidth, flags => $flags // 0 }, empty => 1 );
2001             }
2002              
2003 0     0 1   method migrate_start_post_copy($flags = 0) {
  0            
  0            
  0            
2004 0   0       return $_client->_call(
2005             $remote->PROC_DOMAIN_MIGRATE_START_POST_COPY,
2006             { dom => $_rpc_id, flags => $flags // 0 }, empty => 1 );
2007             }
2008              
2009 0     0 1   method open_channel($name, $flags = 0) {
  0            
  0            
  0            
  0            
2010 0   0       return $_client->_call(
2011             $remote->PROC_DOMAIN_OPEN_CHANNEL,
2012             { dom => $_rpc_id, name => $name, flags => $flags // 0 }, stream => 'read', empty => 1 );
2013             }
2014              
2015 0     0 1   method open_console($dev_name, $flags = 0) {
  0            
  0            
  0            
  0            
2016 0   0       return $_client->_call(
2017             $remote->PROC_DOMAIN_OPEN_CONSOLE,
2018             { dom => $_rpc_id, dev_name => $dev_name, flags => $flags // 0 }, stream => 'read', empty => 1 );
2019             }
2020              
2021 0     0 1   method pin_iothread($iothreads_id, $cpumap, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
2022 0   0       return $_client->_call(
2023             $remote->PROC_DOMAIN_PIN_IOTHREAD,
2024             { dom => $_rpc_id, iothreads_id => $iothreads_id, cpumap => $cpumap, flags => $flags // 0 }, empty => 1 );
2025             }
2026              
2027 0     0 1   method pin_vcpu($vcpu, $cpumap) {
  0            
  0            
  0            
  0            
2028 0           return $_client->_call(
2029             $remote->PROC_DOMAIN_PIN_VCPU,
2030             { dom => $_rpc_id, vcpu => $vcpu, cpumap => $cpumap }, empty => 1 );
2031             }
2032              
2033 0     0 1   method pin_vcpu_flags($vcpu, $cpumap, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
2034 0   0       return $_client->_call(
2035             $remote->PROC_DOMAIN_PIN_VCPU_FLAGS,
2036             { dom => $_rpc_id, vcpu => $vcpu, cpumap => $cpumap, flags => $flags // 0 }, empty => 1 );
2037             }
2038              
2039 0     0 1   method pm_suspend_for_duration($target, $duration, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
2040 0   0       return $_client->_call(
2041             $remote->PROC_DOMAIN_PM_SUSPEND_FOR_DURATION,
2042             { dom => $_rpc_id, target => $target, duration => $duration, flags => $flags // 0 }, empty => 1 );
2043             }
2044              
2045 0     0 1   method pm_wakeup($flags = 0) {
  0            
  0            
  0            
2046 0   0       return $_client->_call(
2047             $remote->PROC_DOMAIN_PM_WAKEUP,
2048             { dom => $_rpc_id, flags => $flags // 0 }, empty => 1 );
2049             }
2050              
2051 0     0 1   method reboot($flags = 0) {
  0            
  0            
  0            
2052 0   0       return $_client->_call(
2053             $remote->PROC_DOMAIN_REBOOT,
2054             { dom => $_rpc_id, flags => $flags // 0 }, empty => 1 );
2055             }
2056              
2057 0     0 1   async method rename($new_name, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
2058 0           return await $_client->_call(
2059             $remote->PROC_DOMAIN_RENAME,
2060             { dom => $_rpc_id, new_name => $new_name, flags => $flags // 0 }, unwrap => 'retcode' );
2061             }
2062              
2063 0     0 1   method reset($flags = 0) {
  0            
  0            
  0            
2064 0   0       return $_client->_call(
2065             $remote->PROC_DOMAIN_RESET,
2066             { dom => $_rpc_id, flags => $flags // 0 }, empty => 1 );
2067             }
2068              
2069 0     0 1   method resume() {
  0            
  0            
2070 0           return $_client->_call(
2071             $remote->PROC_DOMAIN_RESUME,
2072             { dom => $_rpc_id }, empty => 1 );
2073             }
2074              
2075 0     0 1   method save($to) {
  0            
  0            
  0            
2076 0           return $_client->_call(
2077             $remote->PROC_DOMAIN_SAVE,
2078             { dom => $_rpc_id, to => $to }, empty => 1 );
2079             }
2080              
2081 0     0 1   method save_flags($to, $dxml, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
2082 0   0       return $_client->_call(
2083             $remote->PROC_DOMAIN_SAVE_FLAGS,
2084             { dom => $_rpc_id, to => $to, dxml => $dxml, flags => $flags // 0 }, empty => 1 );
2085             }
2086              
2087 0     0 1   async method save_params($params, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
2088 0           $params = await $_client->_filter_typed_param_string( $params );
2089 0           return await $_client->_call(
2090             $remote->PROC_DOMAIN_SAVE_PARAMS,
2091             { dom => $_rpc_id, params => $params, flags => $flags // 0 }, empty => 1 );
2092             }
2093              
2094 0     0 1   async method screenshot($screen, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
2095 0           return await $_client->_call(
2096             $remote->PROC_DOMAIN_SCREENSHOT,
2097             { dom => $_rpc_id, screen => $screen, flags => $flags // 0 }, unwrap => 'mime', stream => 'read' );
2098             }
2099              
2100 0     0 1   method send_key($codeset, $holdtime, $keycodes, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
  0            
2101 0   0       return $_client->_call(
2102             $remote->PROC_DOMAIN_SEND_KEY,
2103             { dom => $_rpc_id, codeset => $codeset, holdtime => $holdtime, keycodes => $keycodes, flags => $flags // 0 }, empty => 1 );
2104             }
2105              
2106 0     0 1   method send_process_signal($pid_value, $signum, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
2107 0   0       return $_client->_call(
2108             $remote->PROC_DOMAIN_SEND_PROCESS_SIGNAL,
2109             { dom => $_rpc_id, pid_value => $pid_value, signum => $signum, flags => $flags // 0 }, empty => 1 );
2110             }
2111              
2112 0     0 1   method set_autostart($autostart) {
  0            
  0            
  0            
2113 0           return $_client->_call(
2114             $remote->PROC_DOMAIN_SET_AUTOSTART,
2115             { dom => $_rpc_id, autostart => $autostart }, empty => 1 );
2116             }
2117              
2118 0     0 1   method set_autostart_once($autostart) {
  0            
  0            
  0            
2119 0           return $_client->_call(
2120             $remote->PROC_DOMAIN_SET_AUTOSTART_ONCE,
2121             { dom => $_rpc_id, autostart => $autostart }, empty => 1 );
2122             }
2123              
2124 0     0 1   async method set_blkio_parameters($params, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
2125 0           $params = await $_client->_filter_typed_param_string( $params );
2126 0           return await $_client->_call(
2127             $remote->PROC_DOMAIN_SET_BLKIO_PARAMETERS,
2128             { dom => $_rpc_id, params => $params, flags => $flags // 0 }, empty => 1 );
2129             }
2130              
2131 0     0 1   async method set_block_io_tune($disk, $params, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
  0            
2132 0           $params = await $_client->_filter_typed_param_string( $params );
2133 0           return await $_client->_call(
2134             $remote->PROC_DOMAIN_SET_BLOCK_IO_TUNE,
2135             { dom => $_rpc_id, disk => $disk, params => $params, flags => $flags // 0 }, empty => 1 );
2136             }
2137              
2138 0     0 1   method set_block_threshold($dev, $threshold, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
2139 0   0       return $_client->_call(
2140             $remote->PROC_DOMAIN_SET_BLOCK_THRESHOLD,
2141             { dom => $_rpc_id, dev => $dev, threshold => $threshold, flags => $flags // 0 }, empty => 1 );
2142             }
2143              
2144 0     0 1   method set_guest_vcpus($cpumap, $state, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
2145 0   0       return $_client->_call(
2146             $remote->PROC_DOMAIN_SET_GUEST_VCPUS,
2147             { dom => $_rpc_id, cpumap => $cpumap, state => $state, flags => $flags // 0 }, empty => 1 );
2148             }
2149              
2150 0     0 1   async method set_interface_parameters($device, $params, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
  0            
2151 0           $params = await $_client->_filter_typed_param_string( $params );
2152 0           return await $_client->_call(
2153             $remote->PROC_DOMAIN_SET_INTERFACE_PARAMETERS,
2154             { dom => $_rpc_id, device => $device, params => $params, flags => $flags // 0 }, empty => 1 );
2155             }
2156              
2157 0     0 1   async method set_iothread_params($iothread_id, $params, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
  0            
2158 0           $params = await $_client->_filter_typed_param_string( $params );
2159 0           return await $_client->_call(
2160             $remote->PROC_DOMAIN_SET_IOTHREAD_PARAMS,
2161             { dom => $_rpc_id, iothread_id => $iothread_id, params => $params, flags => $flags // 0 }, empty => 1 );
2162             }
2163              
2164 0     0 1   async method set_launch_security_state($params, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
2165 0           $params = await $_client->_filter_typed_param_string( $params );
2166 0           return await $_client->_call(
2167             $remote->PROC_DOMAIN_SET_LAUNCH_SECURITY_STATE,
2168             { dom => $_rpc_id, params => $params, flags => $flags // 0 }, empty => 1 );
2169             }
2170              
2171 0     0 1   method set_lifecycle_action($type, $action, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
2172 0   0       return $_client->_call(
2173             $remote->PROC_DOMAIN_SET_LIFECYCLE_ACTION,
2174             { dom => $_rpc_id, type => $type, action => $action, flags => $flags // 0 }, empty => 1 );
2175             }
2176              
2177 0     0 1   method set_max_memory($memory) {
  0            
  0            
  0            
2178 0           return $_client->_call(
2179             $remote->PROC_DOMAIN_SET_MAX_MEMORY,
2180             { dom => $_rpc_id, memory => $memory }, empty => 1 );
2181             }
2182              
2183 0     0 1   method set_memory($memory) {
  0            
  0            
  0            
2184 0           return $_client->_call(
2185             $remote->PROC_DOMAIN_SET_MEMORY,
2186             { dom => $_rpc_id, memory => $memory }, empty => 1 );
2187             }
2188              
2189 0     0 1   method set_memory_flags($memory, $flags = 0) {
  0            
  0            
  0            
  0            
2190 0   0       return $_client->_call(
2191             $remote->PROC_DOMAIN_SET_MEMORY_FLAGS,
2192             { dom => $_rpc_id, memory => $memory, flags => $flags // 0 }, empty => 1 );
2193             }
2194              
2195 0     0 1   async method set_memory_parameters($params, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
2196 0           $params = await $_client->_filter_typed_param_string( $params );
2197 0           return await $_client->_call(
2198             $remote->PROC_DOMAIN_SET_MEMORY_PARAMETERS,
2199             { dom => $_rpc_id, params => $params, flags => $flags // 0 }, empty => 1 );
2200             }
2201              
2202 0     0 1   method set_memory_stats_period($period, $flags = 0) {
  0            
  0            
  0            
  0            
2203 0   0       return $_client->_call(
2204             $remote->PROC_DOMAIN_SET_MEMORY_STATS_PERIOD,
2205             { dom => $_rpc_id, period => $period, flags => $flags // 0 }, empty => 1 );
2206             }
2207              
2208 0     0 1   method set_metadata($type, $metadata, $key, $uri, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
  0            
  0            
2209 0   0       return $_client->_call(
2210             $remote->PROC_DOMAIN_SET_METADATA,
2211             { dom => $_rpc_id, type => $type, metadata => $metadata, key => $key, uri => $uri, flags => $flags // 0 }, empty => 1 );
2212             }
2213              
2214 0     0 1   async method set_numa_parameters($params, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
2215 0           $params = await $_client->_filter_typed_param_string( $params );
2216 0           return await $_client->_call(
2217             $remote->PROC_DOMAIN_SET_NUMA_PARAMETERS,
2218             { dom => $_rpc_id, params => $params, flags => $flags // 0 }, empty => 1 );
2219             }
2220              
2221 0     0 1   async method set_perf_events($params, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
2222 0           $params = await $_client->_filter_typed_param_string( $params );
2223 0           return await $_client->_call(
2224             $remote->PROC_DOMAIN_SET_PERF_EVENTS,
2225             { dom => $_rpc_id, params => $params, flags => $flags // 0 }, empty => 1 );
2226             }
2227              
2228 0     0 1   async method set_scheduler_parameters($params) {
  0            
  0            
  0            
  0            
2229 0           $params = await $_client->_filter_typed_param_string( $params );
2230 0           return await $_client->_call(
2231             $remote->PROC_DOMAIN_SET_SCHEDULER_PARAMETERS,
2232             { dom => $_rpc_id, params => $params }, empty => 1 );
2233             }
2234              
2235 0     0 1   async method set_scheduler_parameters_flags($params, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
2236 0           $params = await $_client->_filter_typed_param_string( $params );
2237 0           return await $_client->_call(
2238             $remote->PROC_DOMAIN_SET_SCHEDULER_PARAMETERS_FLAGS,
2239             { dom => $_rpc_id, params => $params, flags => $flags // 0 }, empty => 1 );
2240             }
2241              
2242 0     0 1   async method set_throttle_group($group, $params, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
  0            
2243 0           $params = await $_client->_filter_typed_param_string( $params );
2244 0           return await $_client->_call(
2245             $remote->PROC_DOMAIN_SET_THROTTLE_GROUP,
2246             { dom => $_rpc_id, group => $group, params => $params, flags => $flags // 0 }, empty => 1 );
2247             }
2248              
2249 0     0 1   method set_time($seconds, $nseconds, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
2250 0   0       return $_client->_call(
2251             $remote->PROC_DOMAIN_SET_TIME,
2252             { dom => $_rpc_id, seconds => $seconds, nseconds => $nseconds, flags => $flags // 0 }, empty => 1 );
2253             }
2254              
2255 0     0 1   method set_user_password($user, $password, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
2256 0   0       return $_client->_call(
2257             $remote->PROC_DOMAIN_SET_USER_PASSWORD,
2258             { dom => $_rpc_id, user => $user, password => $password, flags => $flags // 0 }, empty => 1 );
2259             }
2260              
2261 0     0 1   method set_vcpu($cpumap, $state, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
2262 0   0       return $_client->_call(
2263             $remote->PROC_DOMAIN_SET_VCPU,
2264             { dom => $_rpc_id, cpumap => $cpumap, state => $state, flags => $flags // 0 }, empty => 1 );
2265             }
2266              
2267 0     0 1   method set_vcpus($nvcpus) {
  0            
  0            
  0            
2268 0           return $_client->_call(
2269             $remote->PROC_DOMAIN_SET_VCPUS,
2270             { dom => $_rpc_id, nvcpus => $nvcpus }, empty => 1 );
2271             }
2272              
2273 0     0 1   method set_vcpus_flags($nvcpus, $flags = 0) {
  0            
  0            
  0            
  0            
2274 0   0       return $_client->_call(
2275             $remote->PROC_DOMAIN_SET_VCPUS_FLAGS,
2276             { dom => $_rpc_id, nvcpus => $nvcpus, flags => $flags // 0 }, empty => 1 );
2277             }
2278              
2279 0     0 1   method shutdown() {
  0            
  0            
2280 0           return $_client->_call(
2281             $remote->PROC_DOMAIN_SHUTDOWN,
2282             { dom => $_rpc_id }, empty => 1 );
2283             }
2284              
2285 0     0 1   method shutdown_flags($flags = 0) {
  0            
  0            
  0            
2286 0   0       return $_client->_call(
2287             $remote->PROC_DOMAIN_SHUTDOWN_FLAGS,
2288             { dom => $_rpc_id, flags => $flags // 0 }, empty => 1 );
2289             }
2290              
2291 0     0 1   async method snapshot_create_xml($xml_desc, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
2292 0           return await $_client->_call(
2293             $remote->PROC_DOMAIN_SNAPSHOT_CREATE_XML,
2294             { dom => $_rpc_id, xml_desc => $xml_desc, flags => $flags // 0 }, unwrap => 'snap' );
2295             }
2296              
2297 0     0 1   async method snapshot_current($flags = 0) {
  0            
  0            
  0            
  0            
2298 0           return await $_client->_call(
2299             $remote->PROC_DOMAIN_SNAPSHOT_CURRENT,
2300             { dom => $_rpc_id, flags => $flags // 0 }, unwrap => 'snap' );
2301             }
2302              
2303 0     0 1   async method snapshot_list_names($flags = 0) {
  0            
  0            
  0            
  0            
2304 0           return await $_client->_call(
2305             $remote->PROC_DOMAIN_SNAPSHOT_LIST_NAMES,
2306             { dom => $_rpc_id, maxnames => $remote->DOMAIN_SNAPSHOT_LIST_MAX, flags => $flags // 0 }, unwrap => 'names' );
2307             }
2308              
2309 0     0 1   async method snapshot_lookup_by_name($name, $flags = 0) {
  0            
  0            
  0            
  0            
  0            
2310 0           return await $_client->_call(
2311             $remote->PROC_DOMAIN_SNAPSHOT_LOOKUP_BY_NAME,
2312             { dom => $_rpc_id, name => $name, flags => $flags // 0 }, unwrap => 'snap' );
2313             }
2314              
2315 0     0 1   async method snapshot_num($flags = 0) {
  0            
  0            
  0            
  0            
2316 0           return await $_client->_call(
2317             $remote->PROC_DOMAIN_SNAPSHOT_NUM,
2318             { dom => $_rpc_id, flags => $flags // 0 }, unwrap => 'num' );
2319             }
2320              
2321 0     0 1   method start_dirty_rate_calc($seconds, $flags = 0) {
  0            
  0            
  0            
  0            
2322 0   0       return $_client->_call(
2323             $remote->PROC_DOMAIN_START_DIRTY_RATE_CALC,
2324             { dom => $_rpc_id, seconds => $seconds, flags => $flags // 0 }, empty => 1 );
2325             }
2326              
2327 0     0 1   method suspend() {
  0            
  0            
2328 0           return $_client->_call(
2329             $remote->PROC_DOMAIN_SUSPEND,
2330             { dom => $_rpc_id }, empty => 1 );
2331             }
2332              
2333 0     0 1   method undefine() {
  0            
  0            
2334 0           return $_client->_call(
2335             $remote->PROC_DOMAIN_UNDEFINE,
2336             { dom => $_rpc_id }, empty => 1 );
2337             }
2338              
2339 0     0 1   method undefine_flags($flags = 0) {
  0            
  0            
  0            
2340 0   0       return $_client->_call(
2341             $remote->PROC_DOMAIN_UNDEFINE_FLAGS,
2342             { dom => $_rpc_id, flags => $flags // 0 }, empty => 1 );
2343             }
2344              
2345 0     0 1   method update_device_flags($xml, $flags = 0) {
  0            
  0            
  0            
  0            
2346 0   0       return $_client->_call(
2347             $remote->PROC_DOMAIN_UPDATE_DEVICE_FLAGS,
2348             { dom => $_rpc_id, xml => $xml, flags => $flags // 0 }, empty => 1 );
2349             }
2350              
2351              
2352              
2353             1;
2354              
2355              
2356             __END__