ruby-libvirt 0.4.0 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/NEWS +10 -0
- data/README +188 -21
- data/Rakefile +11 -7
- data/ext/libvirt/_libvirt.c +252 -234
- data/ext/libvirt/common.c +346 -71
- data/ext/libvirt/common.h +171 -111
- data/ext/libvirt/connect.c +1851 -798
- data/ext/libvirt/connect.h +6 -5
- data/ext/libvirt/domain.c +3903 -1060
- data/ext/libvirt/domain.h +5 -3
- data/ext/libvirt/extconf.rb +275 -41
- data/ext/libvirt/interface.c +60 -41
- data/ext/libvirt/interface.h +3 -1
- data/ext/libvirt/network.c +291 -72
- data/ext/libvirt/network.h +3 -2
- data/ext/libvirt/nodedevice.c +138 -59
- data/ext/libvirt/nodedevice.h +3 -1
- data/ext/libvirt/nwfilter.c +39 -34
- data/ext/libvirt/nwfilter.h +3 -1
- data/ext/libvirt/secret.c +122 -64
- data/ext/libvirt/secret.h +3 -1
- data/ext/libvirt/storage.c +451 -233
- data/ext/libvirt/storage.h +1 -1
- data/ext/libvirt/stream.c +120 -122
- data/ext/libvirt/stream.h +4 -2
- data/tests/test_conn.rb +214 -67
- data/tests/test_domain.rb +553 -209
- data/tests/test_interface.rb +4 -10
- data/tests/test_network.rb +21 -12
- data/tests/test_nodedevice.rb +11 -1
- data/tests/test_nwfilter.rb +4 -0
- data/tests/test_open.rb +59 -6
- data/tests/test_secret.rb +25 -0
- data/tests/test_storage.rb +132 -28
- data/tests/test_stream.rb +171 -0
- data/tests/test_utils.rb +86 -15
- metadata +43 -66
data/ext/libvirt/domain.h
CHANGED
@@ -1,9 +1,11 @@
|
|
1
1
|
#ifndef DOMAIN_H
|
2
2
|
#define DOMAIN_H
|
3
3
|
|
4
|
-
|
5
|
-
virDomainPtr domain_get(VALUE s);
|
4
|
+
void ruby_libvirt_domain_init(void);
|
6
5
|
|
7
|
-
|
6
|
+
VALUE ruby_libvirt_domain_new(virDomainPtr d, VALUE conn);
|
7
|
+
virDomainPtr ruby_libvirt_domain_get(VALUE s);
|
8
|
+
|
9
|
+
extern VALUE c_domain_security_label;
|
8
10
|
|
9
11
|
#endif
|
data/ext/libvirt/extconf.rb
CHANGED
@@ -1,14 +1,8 @@
|
|
1
1
|
require 'mkmf'
|
2
2
|
|
3
3
|
RbConfig::MAKEFILE_CONFIG['CC'] = ENV['CC'] if ENV['CC']
|
4
|
-
|
5
|
-
|
6
|
-
funcs.each { |f| have_func(f, "libvirt/libvirt.h") }
|
7
|
-
end
|
8
|
-
|
9
|
-
def have_libvirt_types(types)
|
10
|
-
types.each { |t| have_type(t, "libvirt/libvirt.h") }
|
11
|
-
end
|
4
|
+
RbConfig::MAKEFILE_CONFIG['CCDLFLAGS'] = ENV['CFLAGS'] if ENV['CFLAGS']
|
5
|
+
RbConfig::MAKEFILE_CONFIG['EXTDLDFLAGS'] = ENV['CFLAGS'] if ENV['CFLAGS']
|
12
6
|
|
13
7
|
# older mkmf does not have checking_message, so implement our own here
|
14
8
|
def libvirt_checking_message(target, place = nil, opt = nil)
|
@@ -42,10 +36,6 @@ SRC
|
|
42
36
|
end
|
43
37
|
end
|
44
38
|
|
45
|
-
def have_libvirt_consts(consts)
|
46
|
-
consts.each { |c| have_const(c, ["libvirt/libvirt.h", "libvirt/virterror.h"]) }
|
47
|
-
end
|
48
|
-
|
49
39
|
extension_name = '_libvirt'
|
50
40
|
|
51
41
|
# this is a poor-man's dir_config, but is a bit more flexible. In particular,
|
@@ -98,6 +88,7 @@ libvirt_types = [ 'virNetworkPtr',
|
|
98
88
|
'virNodeDevicePtr',
|
99
89
|
'virStreamPtr',
|
100
90
|
'virTypedParameterPtr',
|
91
|
+
'virDomainBlockJobInfoPtr',
|
101
92
|
]
|
102
93
|
|
103
94
|
libvirt_funcs = [ 'virStorageVolWipe',
|
@@ -148,8 +139,92 @@ libvirt_funcs = [ 'virStorageVolWipe',
|
|
148
139
|
'virInterfaceChangeBegin',
|
149
140
|
'virStorageVolDownload',
|
150
141
|
'virDomainInjectNMI',
|
142
|
+
'virDomainGetControlInfo',
|
143
|
+
'virDomainMigrateGetMaxSpeed',
|
144
|
+
'virNodeGetCPUStats',
|
145
|
+
'virNodeGetMemoryStats',
|
146
|
+
'virDomainDestroyFlags',
|
147
|
+
'virDomainSaveFlags',
|
148
|
+
'virDomainSaveImageGetXMLDesc',
|
149
|
+
'virDomainSendKey',
|
150
|
+
'virNetworkUpdate',
|
151
|
+
'virNodeSuspendForDuration',
|
152
|
+
'virNodeGetMemoryParameters',
|
153
|
+
'virNodeGetCPUMap',
|
154
|
+
'virDomainUndefineFlags',
|
155
|
+
'virDomainPinVcpuFlags',
|
156
|
+
'virDomainGetVcpuPinInfo',
|
157
|
+
'virDomainSnapshotGetName',
|
158
|
+
'virConnectSetKeepAlive',
|
159
|
+
'virDomainReset',
|
160
|
+
'virDomainShutdownFlags',
|
161
|
+
'virDomainGetHostname',
|
162
|
+
'virDomainGetMetadata',
|
163
|
+
'virDomainSetMetadata',
|
164
|
+
'virConnectListAllDomains',
|
165
|
+
'virConnectListAllNetworks',
|
166
|
+
'virConnectListAllInterfaces',
|
167
|
+
'virConnectListAllSecrets',
|
168
|
+
'virConnectListAllNodeDevices',
|
169
|
+
'virConnectListAllStoragePools',
|
170
|
+
'virConnectListAllNWFilters',
|
171
|
+
'virConnectIsAlive',
|
172
|
+
'virNodeDeviceDetachFlags',
|
173
|
+
'virDomainSendProcessSignal',
|
174
|
+
'virDomainListAllSnapshots',
|
175
|
+
'virDomainSnapshotNumChildren',
|
176
|
+
'virDomainSnapshotListChildrenNames',
|
177
|
+
'virDomainSnapshotListAllChildren',
|
178
|
+
'virDomainSnapshotGetParent',
|
179
|
+
'virDomainSnapshotIsCurrent',
|
180
|
+
'virDomainSnapshotHasMetadata',
|
181
|
+
'virDomainSetMemoryStatsPeriod',
|
182
|
+
'virDomainFSTrim',
|
183
|
+
'virDomainBlockRebase',
|
184
|
+
'virDomainOpenChannel',
|
185
|
+
'virNodeDeviceLookupSCSIHostByWWN',
|
186
|
+
'virStorageVolWipePattern',
|
187
|
+
'virStoragePoolListAllVolumes',
|
188
|
+
'virDomainCreateWithFiles',
|
189
|
+
'virDomainCreateXMLWithFiles',
|
190
|
+
'virDomainOpenGraphics',
|
191
|
+
'virStorageVolResize',
|
192
|
+
'virDomainPMWakeup',
|
193
|
+
'virDomainBlockResize',
|
194
|
+
'virDomainPMSuspendForDuration',
|
195
|
+
'virDomainMigrateGetCompressionCache',
|
196
|
+
'virDomainMigrateSetCompressionCache',
|
197
|
+
'virDomainGetDiskErrors',
|
198
|
+
'virDomainGetEmulatorPinInfo',
|
199
|
+
'virDomainPinEmulator',
|
200
|
+
'virDomainGetSecurityLabelList',
|
201
|
+
'virDomainGetJobStats',
|
202
|
+
'virDomainGetBlockIoTune',
|
203
|
+
'virDomainSetBlockIoTune',
|
204
|
+
'virDomainBlockCommit',
|
205
|
+
'virDomainBlockPull',
|
206
|
+
'virDomainBlockJobSetSpeed',
|
207
|
+
'virDomainGetBlockJobInfo',
|
208
|
+
'virDomainBlockJobAbort',
|
209
|
+
'virDomainGetInterfaceParameters',
|
210
|
+
'virDomainBlockStatsFlags',
|
211
|
+
'virDomainGetNumaParameters',
|
212
|
+
'virConnectGetCPUModelNames',
|
213
|
+
'virDomainMigrate3',
|
214
|
+
'virDomainGetCPUStats',
|
151
215
|
]
|
152
216
|
|
217
|
+
libvirt_qemu_funcs = [ 'virDomainQemuMonitorCommand',
|
218
|
+
'virDomainQemuAttach',
|
219
|
+
'virDomainQemuAgentCommand'
|
220
|
+
]
|
221
|
+
|
222
|
+
libvirt_lxc_funcs = [
|
223
|
+
'virDomainLxcOpenNamespace',
|
224
|
+
'virDomainLxcEnterNamespace',
|
225
|
+
'virDomainLxcEnterSecurityLabel',
|
226
|
+
]
|
227
|
+
|
153
228
|
libvirt_consts = [ 'VIR_MIGRATE_LIVE',
|
154
229
|
'VIR_MIGRATE_PEER2PEER',
|
155
230
|
'VIR_MIGRATE_TUNNELLED',
|
@@ -178,44 +253,203 @@ libvirt_consts = [ 'VIR_MIGRATE_LIVE',
|
|
178
253
|
'VIR_DOMAIN_EVENT_ID_REBOOT',
|
179
254
|
'VIR_DOMAIN_EVENT_ID_RTC_CHANGE',
|
180
255
|
'VIR_DOMAIN_EVENT_ID_IO_ERROR_REASON',
|
181
|
-
'VIR_FROM_VMWARE',
|
182
|
-
'VIR_FROM_AUDIT',
|
183
|
-
'VIR_FROM_SYSINFO',
|
184
|
-
'VIR_FROM_STREAMS',
|
185
|
-
'VIR_FROM_XENAPI',
|
186
|
-
'VIR_FROM_HOOK',
|
187
|
-
'VIR_ERR_HOOK_SCRIPT_FAILED',
|
188
|
-
'VIR_ERR_MIGRATE_PERSIST_FAILED',
|
189
|
-
'VIR_ERR_OPERATION_TIMEOUT',
|
190
|
-
'VIR_ERR_CONFIG_UNSUPPORTED',
|
191
|
-
'VIR_FROM_XENXM',
|
192
|
-
'VIR_ERR_OPERATION_INVALID',
|
193
|
-
'VIR_ERR_NO_SECURITY_MODEL',
|
194
|
-
'VIR_ERR_AUTH_FAILED',
|
195
|
-
'VIR_FROM_PHYP',
|
196
|
-
'VIR_FROM_ESX',
|
197
|
-
'VIR_FROM_ONE',
|
198
|
-
'VIR_FROM_VBOX',
|
199
|
-
'VIR_FROM_LXC',
|
200
|
-
'VIR_FROM_UML',
|
201
|
-
'VIR_FROM_NETWORK',
|
202
|
-
'VIR_FROM_DOMAIN',
|
203
|
-
'VIR_FROM_STATS_LINUX',
|
204
|
-
'VIR_FROM_XEN_INOTIFY',
|
205
|
-
'VIR_FROM_SECURITY',
|
206
256
|
'VIR_DOMAIN_AFFECT_CURRENT',
|
207
257
|
'VIR_DOMAIN_MEM_CURRENT',
|
208
258
|
'VIR_DOMAIN_EVENT_ID_CONTROL_ERROR',
|
259
|
+
'VIR_DOMAIN_PAUSED_SHUTTING_DOWN',
|
260
|
+
'VIR_DOMAIN_START_AUTODESTROY',
|
261
|
+
'VIR_DOMAIN_START_BYPASS_CACHE',
|
262
|
+
'VIR_DOMAIN_START_FORCE_BOOT',
|
263
|
+
'VIR_DOMAIN_MEMORY_STAT_ACTUAL_BALLOON',
|
264
|
+
'VIR_DUMP_BYPASS_CACHE',
|
265
|
+
'VIR_MIGRATE_CHANGE_PROTECTION',
|
266
|
+
'VIR_DOMAIN_SAVE_BYPASS_CACHE',
|
267
|
+
'VIR_DOMAIN_SAVE_RUNNING',
|
268
|
+
'VIR_DOMAIN_SAVE_PAUSED',
|
269
|
+
'VIR_NETWORK_UPDATE_COMMAND_NONE',
|
270
|
+
'VIR_NETWORK_UPDATE_COMMAND_MODIFY',
|
271
|
+
'VIR_NETWORK_UPDATE_COMMAND_DELETE',
|
272
|
+
'VIR_NETWORK_UPDATE_COMMAND_ADD_LAST',
|
273
|
+
'VIR_NETWORK_UPDATE_COMMAND_ADD_FIRST',
|
274
|
+
'VIR_NETWORK_SECTION_NONE',
|
275
|
+
'VIR_NETWORK_SECTION_BRIDGE',
|
276
|
+
'VIR_NETWORK_SECTION_DOMAIN',
|
277
|
+
'VIR_NETWORK_SECTION_IP',
|
278
|
+
'VIR_NETWORK_SECTION_IP_DHCP_HOST',
|
279
|
+
'VIR_NETWORK_SECTION_IP_DHCP_RANGE',
|
280
|
+
'VIR_NETWORK_SECTION_FORWARD',
|
281
|
+
'VIR_NETWORK_SECTION_FORWARD_INTERFACE',
|
282
|
+
'VIR_NETWORK_SECTION_FORWARD_PF',
|
283
|
+
'VIR_NETWORK_SECTION_PORTGROUP',
|
284
|
+
'VIR_NETWORK_SECTION_DNS_HOST',
|
285
|
+
'VIR_NETWORK_SECTION_DNS_TXT',
|
286
|
+
'VIR_NETWORK_SECTION_DNS_SRV',
|
287
|
+
'VIR_NETWORK_UPDATE_AFFECT_CURRENT',
|
288
|
+
'VIR_NETWORK_UPDATE_AFFECT_LIVE',
|
289
|
+
'VIR_NETWORK_UPDATE_AFFECT_CONFIG',
|
290
|
+
'VIR_DOMAIN_PMSUSPENDED',
|
291
|
+
'VIR_DOMAIN_RUNNING_WAKEUP',
|
292
|
+
'VIR_DOMAIN_PMSUSPENDED_UNKNOWN',
|
293
|
+
'VIR_DOMAIN_UNDEFINE_MANAGED_SAVE',
|
294
|
+
'VIR_DOMAIN_UNDEFINE_SNAPSHOTS_METADATA',
|
295
|
+
'VIR_DOMAIN_PAUSED_SNAPSHOT',
|
296
|
+
'VIR_DOMAIN_PMSUSPENDED_DISK_UNKNOWN',
|
297
|
+
'VIR_DUMP_RESET',
|
298
|
+
'VIR_DUMP_MEMORY_ONLY',
|
299
|
+
'VIR_DOMAIN_SHUTDOWN_DEFAULT',
|
300
|
+
'VIR_DOMAIN_SHUTDOWN_ACPI_POWER_BTN',
|
301
|
+
'VIR_DOMAIN_SHUTDOWN_GUEST_AGENT',
|
302
|
+
'VIR_DOMAIN_SHUTDOWN_INITCTL',
|
303
|
+
'VIR_DOMAIN_SHUTDOWN_SIGNAL',
|
304
|
+
'VIR_DOMAIN_REBOOT_DEFAULT',
|
305
|
+
'VIR_DOMAIN_REBOOT_ACPI_POWER_BTN',
|
306
|
+
'VIR_DOMAIN_REBOOT_GUEST_AGENT',
|
307
|
+
'VIR_DOMAIN_REBOOT_INITCTL',
|
308
|
+
'VIR_DOMAIN_REBOOT_SIGNAL',
|
309
|
+
'VIR_DOMAIN_DESTROY_DEFAULT',
|
310
|
+
'VIR_DOMAIN_DESTROY_GRACEFUL',
|
311
|
+
'VIR_CONNECT_LIST_NODE_DEVICES_CAP_FC_HOST',
|
312
|
+
'VIR_DOMAIN_SNAPSHOT_LIST_INACTIVE',
|
313
|
+
'VIR_DOMAIN_SNAPSHOT_CREATE_REDEFINE',
|
314
|
+
'VIR_DOMAIN_SNAPSHOT_CREATE_LIVE',
|
315
|
+
'VIR_DOMAIN_BLOCK_REBASE_SHALLOW',
|
316
|
+
'VIR_DOMAIN_BLOCK_REBASE_REUSE_EXT',
|
317
|
+
'VIR_DOMAIN_BLOCK_REBASE_COPY_RAW',
|
318
|
+
'VIR_DOMAIN_BLOCK_REBASE_COPY',
|
319
|
+
'VIR_DOMAIN_CHANNEL_FORCE',
|
320
|
+
'VIR_DOMAIN_CONSOLE_FORCE',
|
321
|
+
'VIR_DOMAIN_CONSOLE_SAFE',
|
322
|
+
'VIR_STORAGE_VOL_WIPE_ALG_ZERO',
|
323
|
+
'VIR_STORAGE_VOL_WIPE_ALG_NNSA',
|
324
|
+
'VIR_STORAGE_VOL_WIPE_ALG_DOD',
|
325
|
+
'VIR_STORAGE_VOL_WIPE_ALG_BSI',
|
326
|
+
'VIR_STORAGE_VOL_WIPE_ALG_GUTMANN',
|
327
|
+
'VIR_STORAGE_VOL_WIPE_ALG_SCHNEIER',
|
328
|
+
'VIR_STORAGE_VOL_WIPE_ALG_PFITZNER7',
|
329
|
+
'VIR_STORAGE_VOL_WIPE_ALG_PFITZNER33',
|
330
|
+
'VIR_STORAGE_VOL_WIPE_ALG_RANDOM',
|
331
|
+
'VIR_DOMAIN_BLOCK_RESIZE_BYTES',
|
332
|
+
'VIR_DOMAIN_MEMORY_STAT_RSS',
|
333
|
+
'VIR_MIGRATE_UNSAFE',
|
334
|
+
'VIR_MIGRATE_OFFLINE',
|
335
|
+
'VIR_MIGRATE_COMPRESSED',
|
336
|
+
'VIR_MIGRATE_ABORT_ON_ERROR',
|
337
|
+
'VIR_CONNECT_NO_ALIASES',
|
338
|
+
'VIR_DOMAIN_XML_MIGRATABLE',
|
339
|
+
'VIR_NETWORK_XML_INACTIVE',
|
340
|
+
'VIR_STORAGE_VOL_DIR',
|
341
|
+
'VIR_STORAGE_VOL_NETWORK',
|
342
|
+
'VIR_STORAGE_XML_INACTIVE',
|
343
|
+
'VIR_STORAGE_VOL_CREATE_PREALLOC_METADATA',
|
344
|
+
'VIR_SECRET_USAGE_TYPE_CEPH',
|
345
|
+
'VIR_DOMAIN_SNAPSHOT_REVERT_RUNNING',
|
346
|
+
'VIR_DOMAIN_SNAPSHOT_REVERT_PAUSED',
|
347
|
+
'VIR_DOMAIN_SNAPSHOT_REVERT_FORCE',
|
348
|
+
'VIR_SECRET_USAGE_TYPE_ISCSI',
|
349
|
+
'VIR_DOMAIN_NOSTATE_UNKNOWN',
|
350
|
+
'VIR_DOMAIN_RUNNING_CRASHED',
|
351
|
+
'VIR_DOMAIN_PAUSED_CRASHED',
|
352
|
+
'VIR_DOMAIN_CRASHED_PANICKED',
|
353
|
+
'VIR_NODE_CPU_STATS_ALL_CPUS',
|
354
|
+
'VIR_NODE_MEMORY_STATS_ALL_CELLS',
|
355
|
+
'VIR_DOMAIN_VCPU_CURRENT',
|
356
|
+
'VIR_DOMAIN_VCPU_GUEST',
|
357
|
+
'VIR_NETWORK_UPDATE_COMMAND_DELETE',
|
358
|
+
'VIR_STORAGE_POOL_BUILD_NO_OVERWRITE',
|
359
|
+
'VIR_STORAGE_POOL_BUILD_OVERWRITE',
|
360
|
+
'VIR_KEYCODE_SET_LINUX',
|
361
|
+
'VIR_KEYCODE_SET_XT',
|
362
|
+
'VIR_KEYCODE_SET_ATSET1',
|
363
|
+
'VIR_KEYCODE_SET_ATSET2',
|
364
|
+
'VIR_KEYCODE_SET_ATSET3',
|
365
|
+
'VIR_KEYCODE_SET_OSX',
|
366
|
+
'VIR_KEYCODE_SET_XT_KBD',
|
367
|
+
'VIR_KEYCODE_SET_USB',
|
368
|
+
'VIR_KEYCODE_SET_WIN32',
|
369
|
+
'VIR_KEYCODE_SET_RFB',
|
370
|
+
'VIR_DOMAIN_EVENT_SHUTDOWN',
|
371
|
+
'VIR_DOMAIN_EVENT_PMSUSPENDED',
|
372
|
+
'VIR_DOMAIN_EVENT_CRASHED',
|
373
|
+
'VIR_DOMAIN_EVENT_STARTED_WAKEUP',
|
374
|
+
'VIR_DOMAIN_EVENT_SUSPENDED_RESTORED',
|
375
|
+
'VIR_DOMAIN_EVENT_SUSPENDED_FROM_SNAPSHOT',
|
376
|
+
'VIR_DOMAIN_EVENT_SUSPENDED_API_ERROR',
|
377
|
+
'VIR_DOMAIN_EVENT_RESUMED_FROM_SNAPSHOT',
|
378
|
+
'VIR_DOMAIN_EVENT_SHUTDOWN_FINISHED',
|
379
|
+
'VIR_DOMAIN_EVENT_PMSUSPENDED_MEMORY',
|
380
|
+
'VIR_DOMAIN_EVENT_PMSUSPENDED_DISK',
|
381
|
+
'VIR_DOMAIN_EVENT_CRASHED_PANICKED',
|
382
|
+
'VIR_SECRET_USAGE_TYPE_NONE',
|
383
|
+
'VIR_CONNECT_BASELINE_CPU_EXPAND_FEATURES',
|
384
|
+
'VIR_DOMAIN_SNAPSHOT_DELETE_METADATA_ONLY',
|
385
|
+
'VIR_DOMAIN_SNAPSHOT_DELETE_CHILDREN_ONLY',
|
386
|
+
'VIR_DOMAIN_EVENT_GRAPHICS_ADDRESS_UNIX',
|
387
|
+
'VIR_DOMAIN_BLOCK_COMMIT_SHALLOW',
|
388
|
+
'VIR_DOMAIN_BLOCK_COMMIT_DELETE',
|
389
|
+
'VIR_DOMAIN_BLOCK_JOB_TYPE_UNKNOWN',
|
390
|
+
'VIR_DOMAIN_BLOCK_JOB_TYPE_PULL',
|
391
|
+
'VIR_DOMAIN_BLOCK_JOB_TYPE_COPY',
|
392
|
+
'VIR_DOMAIN_BLOCK_JOB_TYPE_COMMIT',
|
393
|
+
'VIR_DOMAIN_BLOCK_JOB_ABORT_ASYNC',
|
394
|
+
'VIR_DOMAIN_BLOCK_JOB_ABORT_PIVOT',
|
395
|
+
'VIR_DOMAIN_BLOCK_JOB_COMPLETED',
|
396
|
+
'VIR_DOMAIN_BLOCK_JOB_FAILED',
|
397
|
+
'VIR_DOMAIN_BLOCK_JOB_CANCELED',
|
398
|
+
'VIR_DOMAIN_BLOCK_JOB_READY',
|
399
|
+
'VIR_NODE_MEMORY_SHARED_MERGE_ACROSS_NODES',
|
400
|
+
'VIR_CONNECT_LIST_NODE_DEVICES_CAP_SCSI_GENERIC',
|
209
401
|
]
|
210
402
|
|
211
|
-
|
212
|
-
|
403
|
+
virterror_consts = [
|
404
|
+
'VIR_FROM_VMWARE',
|
405
|
+
'VIR_FROM_AUDIT',
|
406
|
+
'VIR_FROM_SYSINFO',
|
407
|
+
'VIR_FROM_STREAMS',
|
408
|
+
'VIR_FROM_XENAPI',
|
409
|
+
'VIR_FROM_HOOK',
|
410
|
+
'VIR_ERR_HOOK_SCRIPT_FAILED',
|
411
|
+
'VIR_ERR_MIGRATE_PERSIST_FAILED',
|
412
|
+
'VIR_ERR_OPERATION_TIMEOUT',
|
413
|
+
'VIR_ERR_CONFIG_UNSUPPORTED',
|
414
|
+
'VIR_FROM_XENXM',
|
415
|
+
'VIR_ERR_OPERATION_INVALID',
|
416
|
+
'VIR_ERR_NO_SECURITY_MODEL',
|
417
|
+
'VIR_ERR_AUTH_FAILED',
|
418
|
+
'VIR_FROM_PHYP',
|
419
|
+
'VIR_FROM_ESX',
|
420
|
+
'VIR_FROM_ONE',
|
421
|
+
'VIR_FROM_VBOX',
|
422
|
+
'VIR_FROM_LXC',
|
423
|
+
'VIR_FROM_UML',
|
424
|
+
'VIR_FROM_NETWORK',
|
425
|
+
'VIR_FROM_DOMAIN',
|
426
|
+
'VIR_FROM_STATS_LINUX',
|
427
|
+
'VIR_FROM_XEN_INOTIFY',
|
428
|
+
'VIR_FROM_SECURITY',
|
429
|
+
]
|
430
|
+
|
431
|
+
libvirt_qemu_consts = [
|
432
|
+
'VIR_DOMAIN_QEMU_AGENT_COMMAND_BLOCK',
|
433
|
+
'VIR_DOMAIN_QEMU_AGENT_COMMAND_DEFAULT',
|
434
|
+
'VIR_DOMAIN_QEMU_AGENT_COMMAND_NOWAIT',
|
435
|
+
'VIR_DOMAIN_QEMU_MONITOR_COMMAND_DEFAULT',
|
436
|
+
'VIR_DOMAIN_QEMU_MONITOR_COMMAND_HMP',
|
437
|
+
]
|
438
|
+
|
439
|
+
libvirt_types.each { |t| have_type(t, "libvirt/libvirt.h") }
|
440
|
+
libvirt_funcs.each { |f| have_func(f, "libvirt/libvirt.h") }
|
441
|
+
libvirt_consts.each { |c| have_const(c, ["libvirt/libvirt.h"]) }
|
442
|
+
virterror_consts.each { |c| have_const(c, ["libvirt/virterror.h"]) }
|
213
443
|
if find_header("libvirt/libvirt-qemu.h")
|
214
444
|
have_library("virt-qemu", "virDomainQemuMonitorCommand")
|
215
|
-
have_func(
|
445
|
+
libvirt_qemu_funcs.each { |f| have_func(f, "libvirt/libvirt-qemu.h") }
|
446
|
+
libvirt_qemu_consts.each { |c| have_const(c, ["libvirt/libvirt-qemu.h"]) }
|
216
447
|
end
|
217
448
|
|
218
|
-
|
449
|
+
if find_header("libvirt/libvirt-lxc.h")
|
450
|
+
have_library("virt-lxc", "virDomainLxcOpenNamespace")
|
451
|
+
libvirt_lxc_funcs.each{ |f| have_func(f, "libvirt/libvirt-lxc.h") }
|
452
|
+
end
|
219
453
|
|
220
454
|
create_header
|
221
455
|
create_makefile(extension_name)
|
data/ext/libvirt/interface.c
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
* interface.c: virInterface methods
|
3
3
|
*
|
4
4
|
* Copyright (C) 2010 Red Hat Inc.
|
5
|
+
* Copyright (C) 2013 Chris Lalancette <clalancette@gmail.com>
|
5
6
|
*
|
6
7
|
* This library is free software; you can redistribute it and/or
|
7
8
|
* modify it under the terms of the GNU Lesser General Public
|
@@ -28,63 +29,71 @@
|
|
28
29
|
#if HAVE_TYPE_VIRINTERFACEPTR
|
29
30
|
static VALUE c_interface;
|
30
31
|
|
31
|
-
static void interface_free(void *i)
|
32
|
-
|
32
|
+
static void interface_free(void *i)
|
33
|
+
{
|
34
|
+
ruby_libvirt_free_struct(Interface, i);
|
33
35
|
}
|
34
36
|
|
35
|
-
static virInterfacePtr interface_get(VALUE
|
36
|
-
|
37
|
+
static virInterfacePtr interface_get(VALUE i)
|
38
|
+
{
|
39
|
+
ruby_libvirt_get_struct(Interface, i);
|
37
40
|
}
|
38
41
|
|
39
|
-
VALUE
|
40
|
-
|
42
|
+
VALUE ruby_libvirt_interface_new(virInterfacePtr i, VALUE conn)
|
43
|
+
{
|
44
|
+
return ruby_libvirt_new_class(c_interface, i, conn, interface_free);
|
41
45
|
}
|
42
46
|
|
43
47
|
/*
|
44
48
|
* call-seq:
|
45
49
|
* interface.undefine -> nil
|
46
50
|
*
|
47
|
-
* Call
|
51
|
+
* Call virInterfaceUndefine[http://www.libvirt.org/html/libvirt-libvirt.html#virInterfaceUndefine]
|
48
52
|
* to undefine this interface.
|
49
53
|
*/
|
50
|
-
static VALUE libvirt_interface_undefine(VALUE
|
51
|
-
|
54
|
+
static VALUE libvirt_interface_undefine(VALUE i)
|
55
|
+
{
|
56
|
+
ruby_libvirt_generate_call_nil(virInterfaceUndefine,
|
57
|
+
ruby_libvirt_connect_get(i),
|
58
|
+
interface_get(i));
|
52
59
|
}
|
53
60
|
|
54
61
|
/*
|
55
62
|
* call-seq:
|
56
63
|
* interface.create(flags=0) -> nil
|
57
64
|
*
|
58
|
-
* Call
|
65
|
+
* Call virInterfaceCreate[http://www.libvirt.org/html/libvirt-libvirt.html#virInterfaceCreate]
|
59
66
|
* to start this interface.
|
60
67
|
*/
|
61
|
-
static VALUE libvirt_interface_create(int argc, VALUE *argv, VALUE
|
68
|
+
static VALUE libvirt_interface_create(int argc, VALUE *argv, VALUE i)
|
69
|
+
{
|
62
70
|
VALUE flags;
|
63
71
|
|
64
72
|
rb_scan_args(argc, argv, "01", &flags);
|
65
|
-
if (NIL_P(flags))
|
66
|
-
flags = INT2NUM(0);
|
67
73
|
|
68
|
-
|
69
|
-
|
74
|
+
ruby_libvirt_generate_call_nil(virInterfaceCreate,
|
75
|
+
ruby_libvirt_connect_get(i),
|
76
|
+
interface_get(i),
|
77
|
+
ruby_libvirt_value_to_uint(flags));
|
70
78
|
}
|
71
79
|
|
72
80
|
/*
|
73
81
|
* call-seq:
|
74
82
|
* interface.destroy(flags=0) -> nil
|
75
83
|
*
|
76
|
-
* Call
|
84
|
+
* Call virInterfaceDestroy[http://www.libvirt.org/html/libvirt-libvirt.html#virInterfaceDestroy]
|
77
85
|
* to shutdown this interface.
|
78
86
|
*/
|
79
|
-
static VALUE libvirt_interface_destroy(int argc, VALUE *argv, VALUE
|
87
|
+
static VALUE libvirt_interface_destroy(int argc, VALUE *argv, VALUE i)
|
88
|
+
{
|
80
89
|
VALUE flags;
|
81
90
|
|
82
91
|
rb_scan_args(argc, argv, "01", &flags);
|
83
|
-
if (NIL_P(flags))
|
84
|
-
flags = INT2NUM(0);
|
85
92
|
|
86
|
-
|
87
|
-
|
93
|
+
ruby_libvirt_generate_call_nil(virInterfaceDestroy,
|
94
|
+
ruby_libvirt_connect_get(i),
|
95
|
+
interface_get(i),
|
96
|
+
ruby_libvirt_value_to_uint(flags));
|
88
97
|
}
|
89
98
|
|
90
99
|
#if HAVE_VIRINTERFACEISACTIVE
|
@@ -92,11 +101,14 @@ static VALUE libvirt_interface_destroy(int argc, VALUE *argv, VALUE s) {
|
|
92
101
|
* call-seq:
|
93
102
|
* interface.active? -> [true|false]
|
94
103
|
*
|
95
|
-
* Call
|
104
|
+
* Call virInterfaceIsActive[http://www.libvirt.org/html/libvirt-libvirt.html#virInterfaceIsActive]
|
96
105
|
* to determine if this interface is currently active.
|
97
106
|
*/
|
98
|
-
static VALUE libvirt_interface_active_p(VALUE p)
|
99
|
-
|
107
|
+
static VALUE libvirt_interface_active_p(VALUE p)
|
108
|
+
{
|
109
|
+
ruby_libvirt_generate_call_truefalse(virInterfaceIsActive,
|
110
|
+
ruby_libvirt_connect_get(p),
|
111
|
+
interface_get(p));
|
100
112
|
}
|
101
113
|
#endif
|
102
114
|
|
@@ -104,59 +116,66 @@ static VALUE libvirt_interface_active_p(VALUE p) {
|
|
104
116
|
* call-seq:
|
105
117
|
* interface.name -> string
|
106
118
|
*
|
107
|
-
* Call
|
119
|
+
* Call virInterfaceGetName[http://www.libvirt.org/html/libvirt-libvirt.html#virInterfaceGetName]
|
108
120
|
* to retrieve the name of this interface.
|
109
121
|
*/
|
110
|
-
static VALUE libvirt_interface_name(VALUE
|
111
|
-
|
122
|
+
static VALUE libvirt_interface_name(VALUE i)
|
123
|
+
{
|
124
|
+
ruby_libvirt_generate_call_string(virInterfaceGetName,
|
125
|
+
ruby_libvirt_connect_get(i), 0,
|
126
|
+
interface_get(i));
|
112
127
|
}
|
113
128
|
|
114
129
|
/*
|
115
130
|
* call-seq:
|
116
131
|
* interface.mac -> string
|
117
132
|
*
|
118
|
-
* Call
|
133
|
+
* Call virInterfaceGetMACString[http://www.libvirt.org/html/libvirt-libvirt.html#virInterfaceGetMACString]
|
119
134
|
* to retrieve the MAC address of this interface.
|
120
135
|
*/
|
121
|
-
static VALUE libvirt_interface_mac(VALUE
|
122
|
-
|
136
|
+
static VALUE libvirt_interface_mac(VALUE i)
|
137
|
+
{
|
138
|
+
ruby_libvirt_generate_call_string(virInterfaceGetMACString,
|
139
|
+
ruby_libvirt_connect_get(i),
|
140
|
+
0, interface_get(i));
|
123
141
|
}
|
124
142
|
|
125
143
|
/*
|
126
144
|
* call-seq:
|
127
145
|
* interface.xml_desc -> string
|
128
146
|
*
|
129
|
-
* Call
|
147
|
+
* Call virInterfaceGetXMLDesc[http://www.libvirt.org/html/libvirt-libvirt.html#virInterfaceGetXMLDesc]
|
130
148
|
* to retrieve the XML of this interface.
|
131
149
|
*/
|
132
|
-
static VALUE libvirt_interface_xml_desc(int argc, VALUE *argv, VALUE
|
150
|
+
static VALUE libvirt_interface_xml_desc(int argc, VALUE *argv, VALUE i)
|
151
|
+
{
|
133
152
|
VALUE flags;
|
134
153
|
|
135
154
|
rb_scan_args(argc, argv, "01", &flags);
|
136
155
|
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
NUM2UINT(flags));
|
156
|
+
ruby_libvirt_generate_call_string(virInterfaceGetXMLDesc,
|
157
|
+
ruby_libvirt_connect_get(i),
|
158
|
+
1, interface_get(i),
|
159
|
+
ruby_libvirt_value_to_uint(flags));
|
142
160
|
}
|
143
161
|
|
144
162
|
/*
|
145
163
|
* call-seq:
|
146
164
|
* interface.free -> nil
|
147
165
|
*
|
148
|
-
* Call
|
166
|
+
* Call virInterfaceFree[http://www.libvirt.org/html/libvirt-libvirt.html#virInterfaceFree]
|
149
167
|
* to free this interface. The object will no longer be valid after this call.
|
150
168
|
*/
|
151
|
-
static VALUE libvirt_interface_free(VALUE
|
152
|
-
|
169
|
+
static VALUE libvirt_interface_free(VALUE i)
|
170
|
+
{
|
171
|
+
ruby_libvirt_generate_call_free(Interface, i);
|
153
172
|
}
|
154
173
|
#endif
|
155
174
|
|
156
175
|
/*
|
157
176
|
* Class Libvirt::Interface
|
158
177
|
*/
|
159
|
-
void
|
178
|
+
void ruby_libvirt_interface_init(void)
|
160
179
|
{
|
161
180
|
#if HAVE_TYPE_VIRINTERFACEPTR
|
162
181
|
c_interface = rb_define_class_under(m_libvirt, "Interface", rb_cObject);
|