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