File Coverage

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