ruby-libvirt 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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);
|