ruby-libvirt 0.5.2 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/NEWS +15 -2
- data/Rakefile +2 -3
- data/ext/libvirt/common.c +18 -9
- data/ext/libvirt/common.h +10 -0
- data/ext/libvirt/connect.c +207 -56
- data/ext/libvirt/domain.c +345 -37
- data/ext/libvirt/extconf.h +380 -0
- data/ext/libvirt/extconf.rb +32 -0
- data/ext/libvirt/interface.c +3 -3
- data/ext/libvirt/network.c +98 -5
- data/ext/libvirt/nodedevice.c +4 -4
- data/ext/libvirt/nwfilter.c +3 -3
- data/ext/libvirt/secret.c +5 -5
- data/ext/libvirt/storage.c +15 -12
- data/tests/test_conn.rb +11 -13
- data/tests/test_domain.rb +3 -3
- data/tests/test_interface.rb +4 -4
- data/tests/test_network.rb +1 -1
- data/tests/test_nwfilter.rb +1 -1
- data/tests/test_storage.rb +5 -5
- data/tests/test_utils.rb +10 -10
- metadata +10 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3ce28a7acf62c75daca90571b9d7cc7beb97840b
|
4
|
+
data.tar.gz: be65964253ac857f6c13d0d911328fc85d324bfd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a0528322015406a30845559328ee61d150b5048d3c49db7c70bc4a973af46d43c28dfbb926d3897dcafccedd1b0c67f6aef63110ba8835927fbe82df544bd568
|
7
|
+
data.tar.gz: 73fec1c760666644057b4c2361641f042e236f299f91b98aae79f89dcab1005bb74686122929e64c06722da55c0d24e9d09e3ea1a0fb87a7eafbaddb3103ba89
|
data/NEWS
CHANGED
@@ -1,7 +1,20 @@
|
|
1
|
-
|
1
|
+
2015-11-20 0.6.0
|
2
|
+
* Fix possible buffer overflow
|
3
|
+
* Fix storage volume creation error messages
|
4
|
+
* Add additional storage pool defines
|
5
|
+
* Implement Network dhcp_leases method
|
6
|
+
* Implement Connect node_alloc_pages method
|
7
|
+
* Implement Domain time method
|
8
|
+
* Implement Connect domain_capabilities method
|
9
|
+
* Implement Domain core_dump_with_format method
|
10
|
+
* Implement Domain fs_freeze method
|
11
|
+
* Implement Domain fs_info method
|
12
|
+
* Implement Connect node_free_pages method
|
13
|
+
|
14
|
+
2014-01-08 0.5.2
|
2
15
|
* Fix to make sure we don't free more entires than retrieved
|
3
16
|
|
4
|
-
2013-12-15
|
17
|
+
2013-12-15 0.5.1
|
5
18
|
* Fixes to compile against older libvirt
|
6
19
|
* Fixes to compile against ruby 1.8
|
7
20
|
|
data/Rakefile
CHANGED
@@ -21,7 +21,7 @@ require 'rubygems/package_task'
|
|
21
21
|
require 'rbconfig'
|
22
22
|
|
23
23
|
PKG_NAME='ruby-libvirt'
|
24
|
-
PKG_VERSION='0.
|
24
|
+
PKG_VERSION='0.6.0'
|
25
25
|
|
26
26
|
EXT_CONF='ext/libvirt/extconf.rb'
|
27
27
|
MAKEFILE="ext/libvirt/Makefile"
|
@@ -37,8 +37,7 @@ LIBVIRT_SRC << MAKEFILE
|
|
37
37
|
CLEAN.include [ "ext/**/*.o", LIBVIRT_MODULE, "ext/**/depend", "ext/**/*.gcda",
|
38
38
|
"ext/**/*.gcno", "ext/**/*.gcov" ]
|
39
39
|
|
40
|
-
CLOBBER.include [ "
|
41
|
-
MAKEFILE ]
|
40
|
+
CLOBBER.include [ "ext/**/mkmf.log", "ext/**/extconf.h", MAKEFILE ]
|
42
41
|
|
43
42
|
task :default => :build
|
44
43
|
|
data/ext/libvirt/common.c
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
* common.c: Common utilities for the ruby libvirt bindings
|
3
3
|
*
|
4
4
|
* Copyright (C) 2007,2010 Red Hat Inc.
|
5
|
-
* Copyright (C) 2013 Chris Lalancette <clalancette@gmail.com>
|
5
|
+
* Copyright (C) 2013,2014 Chris Lalancette <clalancette@gmail.com>
|
6
6
|
*
|
7
7
|
* This library is free software; you can redistribute it and/or
|
8
8
|
* modify it under the terms of the GNU Lesser General Public
|
@@ -84,6 +84,15 @@ VALUE ruby_libvirt_hash_aset_wrap(VALUE arg)
|
|
84
84
|
return rb_hash_aset(e->hash, rb_str_new2(e->name), e->val);
|
85
85
|
}
|
86
86
|
|
87
|
+
VALUE ruby_libvirt_str_new2_and_ary_store_wrap(VALUE arg)
|
88
|
+
{
|
89
|
+
struct ruby_libvirt_str_new2_and_ary_store_arg *e = (struct ruby_libvirt_str_new2_and_ary_store_arg *)arg;
|
90
|
+
|
91
|
+
rb_ary_store(e->arr, e->index, rb_str_new2(e->value));
|
92
|
+
|
93
|
+
return Qnil;
|
94
|
+
}
|
95
|
+
|
87
96
|
void ruby_libvirt_raise_error_if(const int condition, VALUE error,
|
88
97
|
const char *method, virConnectPtr conn)
|
89
98
|
{
|
@@ -186,7 +195,7 @@ VALUE ruby_libvirt_generate_list(int num, char **list)
|
|
186
195
|
VALUE result;
|
187
196
|
int exception = 0;
|
188
197
|
int i, j;
|
189
|
-
struct
|
198
|
+
struct ruby_libvirt_str_new2_and_ary_store_arg arg;
|
190
199
|
|
191
200
|
i = 0;
|
192
201
|
|
@@ -197,15 +206,13 @@ VALUE ruby_libvirt_generate_list(int num, char **list)
|
|
197
206
|
for (i = 0; i < num; i++) {
|
198
207
|
arg.arr = result;
|
199
208
|
arg.index = i;
|
200
|
-
arg.
|
201
|
-
|
202
|
-
|
203
|
-
goto exception;
|
204
|
-
}
|
205
|
-
rb_protect(ruby_libvirt_ary_store_wrap, (VALUE)&arg, &exception);
|
209
|
+
arg.value = list[i];
|
210
|
+
rb_protect(ruby_libvirt_str_new2_and_ary_store_wrap, (VALUE)&arg,
|
211
|
+
&exception);
|
206
212
|
if (exception) {
|
207
213
|
goto exception;
|
208
214
|
}
|
215
|
+
|
209
216
|
xfree(list[i]);
|
210
217
|
}
|
211
218
|
|
@@ -373,8 +380,10 @@ int ruby_libvirt_typed_parameter_assign(VALUE key, VALUE val, VALUE in)
|
|
373
380
|
default:
|
374
381
|
rb_raise(rb_eArgError, "Invalid parameter type");
|
375
382
|
}
|
383
|
+
/* ensure that the field is NULL-terminated */
|
384
|
+
args->params[args->i].field[VIR_TYPED_PARAM_FIELD_LENGTH - 1] = '\0';
|
376
385
|
strncpy(args->params[args->i].field, keyname,
|
377
|
-
VIR_TYPED_PARAM_FIELD_LENGTH);
|
386
|
+
VIR_TYPED_PARAM_FIELD_LENGTH - 1);
|
378
387
|
(args->i)++;
|
379
388
|
found = 1;
|
380
389
|
break;
|
data/ext/libvirt/common.h
CHANGED
@@ -232,11 +232,13 @@ unsigned long ruby_libvirt_value_to_ulong(VALUE in);
|
|
232
232
|
unsigned long long ruby_libvirt_value_to_ulonglong(VALUE in);
|
233
233
|
|
234
234
|
VALUE ruby_libvirt_ary_new2_wrap(VALUE arg);
|
235
|
+
|
235
236
|
struct ruby_libvirt_ary_push_arg {
|
236
237
|
VALUE arr;
|
237
238
|
VALUE value;
|
238
239
|
};
|
239
240
|
VALUE ruby_libvirt_ary_push_wrap(VALUE arg);
|
241
|
+
|
240
242
|
struct ruby_libvirt_ary_store_arg {
|
241
243
|
VALUE arr;
|
242
244
|
long index;
|
@@ -245,6 +247,7 @@ struct ruby_libvirt_ary_store_arg {
|
|
245
247
|
VALUE ruby_libvirt_ary_store_wrap(VALUE arg);
|
246
248
|
|
247
249
|
VALUE ruby_libvirt_str_new2_wrap(VALUE arg);
|
250
|
+
|
248
251
|
struct ruby_libvirt_str_new_arg {
|
249
252
|
char *val;
|
250
253
|
size_t size;
|
@@ -258,6 +261,13 @@ struct ruby_libvirt_hash_aset_arg {
|
|
258
261
|
};
|
259
262
|
VALUE ruby_libvirt_hash_aset_wrap(VALUE arg);
|
260
263
|
|
264
|
+
struct ruby_libvirt_str_new2_and_ary_store_arg {
|
265
|
+
VALUE arr;
|
266
|
+
long index;
|
267
|
+
char *value;
|
268
|
+
};
|
269
|
+
VALUE ruby_libvirt_str_new2_and_ary_store_wrap(VALUE arg);
|
270
|
+
|
261
271
|
#ifndef RARRAY_LEN
|
262
272
|
#define RARRAY_LEN(ar) (RARRAY(ar)->len)
|
263
273
|
#endif
|
data/ext/libvirt/connect.c
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
* connect.c: virConnect methods
|
3
3
|
*
|
4
4
|
* Copyright (C) 2007,2010 Red Hat Inc.
|
5
|
-
* Copyright (C) 2013 Chris Lalancette <clalancette@gmail.com>
|
5
|
+
* Copyright (C) 2013,2014 Chris Lalancette <clalancette@gmail.com>
|
6
6
|
*
|
7
7
|
* This library is free software; you can redistribute it and/or
|
8
8
|
* modify it under the terms of the GNU Lesser General Public
|
@@ -143,7 +143,7 @@ static VALUE libvirt_connect_closed_p(VALUE c)
|
|
143
143
|
|
144
144
|
/*
|
145
145
|
* call-seq:
|
146
|
-
* conn.type ->
|
146
|
+
* conn.type -> String
|
147
147
|
*
|
148
148
|
* Call virConnectGetType[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectGetType]
|
149
149
|
* to retrieve the type of hypervisor for this connection.
|
@@ -157,7 +157,7 @@ static VALUE libvirt_connect_type(VALUE c)
|
|
157
157
|
|
158
158
|
/*
|
159
159
|
* call-seq:
|
160
|
-
* conn.version ->
|
160
|
+
* conn.version -> Fixnum
|
161
161
|
*
|
162
162
|
* Call virConnectGetVersion[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectGetVersion]
|
163
163
|
* to retrieve the version of the hypervisor for this connection.
|
@@ -177,7 +177,7 @@ static VALUE libvirt_connect_version(VALUE c)
|
|
177
177
|
#if HAVE_VIRCONNECTGETLIBVERSION
|
178
178
|
/*
|
179
179
|
* call-seq:
|
180
|
-
* conn.libversion ->
|
180
|
+
* conn.libversion -> Fixnum
|
181
181
|
*
|
182
182
|
* Call virConnectGetLibVersion[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectGetLibVersion]
|
183
183
|
* to retrieve the version of the libvirt library for this connection.
|
@@ -198,7 +198,7 @@ static VALUE libvirt_connect_libversion(VALUE c)
|
|
198
198
|
|
199
199
|
/*
|
200
200
|
* call-seq:
|
201
|
-
* conn.hostname ->
|
201
|
+
* conn.hostname -> String
|
202
202
|
*
|
203
203
|
* Call virConnectGetHostname[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectGetHostname]
|
204
204
|
* to retrieve the hostname of the hypervisor for this connection.
|
@@ -212,7 +212,7 @@ static VALUE libvirt_connect_hostname(VALUE c)
|
|
212
212
|
|
213
213
|
/*
|
214
214
|
* call-seq:
|
215
|
-
* conn.uri ->
|
215
|
+
* conn.uri -> String
|
216
216
|
*
|
217
217
|
* Call virConnectGetURI[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectGetURI]
|
218
218
|
* to retrieve the canonical URI for this connection.
|
@@ -226,7 +226,7 @@ static VALUE libvirt_connect_uri(VALUE c)
|
|
226
226
|
|
227
227
|
/*
|
228
228
|
* call-seq:
|
229
|
-
* conn.max_vcpus(type=nil) ->
|
229
|
+
* conn.max_vcpus(type=nil) -> Fixnum
|
230
230
|
*
|
231
231
|
* Call virConnectGetMaxVcpus[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectGetMaxVcpus]
|
232
232
|
* to retrieve the maximum number of virtual cpus supported by the hypervisor
|
@@ -276,7 +276,7 @@ static VALUE libvirt_connect_node_info(VALUE c)
|
|
276
276
|
|
277
277
|
/*
|
278
278
|
* call-seq:
|
279
|
-
* conn.node_free_memory ->
|
279
|
+
* conn.node_free_memory -> Fixnum
|
280
280
|
*
|
281
281
|
* Call virNodeGetFreeMemory[http://www.libvirt.org/html/libvirt-libvirt.html#virNodeGetFreeMemory]
|
282
282
|
* to retrieve the amount of free memory available on the host for this
|
@@ -408,7 +408,7 @@ static VALUE libvirt_connect_secure_p(VALUE c)
|
|
408
408
|
|
409
409
|
/*
|
410
410
|
* call-seq:
|
411
|
-
* conn.capabilities ->
|
411
|
+
* conn.capabilities -> String
|
412
412
|
*
|
413
413
|
* Call virConnectGetCapabilities[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectGetCapabilities]
|
414
414
|
* to retrieve the capabilities XML for this connection.
|
@@ -786,7 +786,7 @@ static int domain_event_graphics_callback(virConnectPtr conn, virDomainPtr dom,
|
|
786
786
|
|
787
787
|
/*
|
788
788
|
* call-seq:
|
789
|
-
* conn.domain_event_register_any(eventID, callback, dom=nil, opaque=nil) ->
|
789
|
+
* conn.domain_event_register_any(eventID, callback, dom=nil, opaque=nil) -> Fixnum
|
790
790
|
*
|
791
791
|
* Call virConnectDomainEventRegisterAny[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectDomainEventRegisterAny]
|
792
792
|
* to register callback for eventID with libvirt. The eventID must be one of
|
@@ -958,7 +958,7 @@ static VALUE libvirt_connect_domain_event_deregister(VALUE c)
|
|
958
958
|
|
959
959
|
/*
|
960
960
|
* call-seq:
|
961
|
-
* conn.num_of_domains ->
|
961
|
+
* conn.num_of_domains -> Fixnum
|
962
962
|
*
|
963
963
|
* Call virConnectNumOfDomains[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectNumOfDomains]
|
964
964
|
* to retrieve the number of active domains on this connection.
|
@@ -1006,7 +1006,7 @@ static VALUE libvirt_connect_list_domains(VALUE c)
|
|
1006
1006
|
|
1007
1007
|
/*
|
1008
1008
|
* call-seq:
|
1009
|
-
* conn.num_of_defined_domains ->
|
1009
|
+
* conn.num_of_defined_domains -> Fixnum
|
1010
1010
|
*
|
1011
1011
|
* Call virConnectNumOfDefinedDomains[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectNumOfDefinedDomains]
|
1012
1012
|
* to retrieve the number of inactive domains on this connection.
|
@@ -1157,7 +1157,7 @@ static VALUE libvirt_connect_define_domain_xml(VALUE c, VALUE xml)
|
|
1157
1157
|
#if HAVE_VIRCONNECTDOMAINXMLFROMNATIVE
|
1158
1158
|
/*
|
1159
1159
|
* call-seq:
|
1160
|
-
* conn.domain_xml_from_native(nativeFormat, xml, flags=0) ->
|
1160
|
+
* conn.domain_xml_from_native(nativeFormat, xml, flags=0) -> String
|
1161
1161
|
*
|
1162
1162
|
* Call virConnectDomainXMLFromNative[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectDomainXMLFromNative]
|
1163
1163
|
* to convert a native hypervisor domain representation to libvirt XML.
|
@@ -1181,7 +1181,7 @@ static VALUE libvirt_connect_domain_xml_from_native(int argc, VALUE *argv,
|
|
1181
1181
|
#if HAVE_VIRCONNECTDOMAINXMLTONATIVE
|
1182
1182
|
/*
|
1183
1183
|
* call-seq:
|
1184
|
-
* conn.domain_xml_to_native(nativeFormat, xml, flags=0) ->
|
1184
|
+
* conn.domain_xml_to_native(nativeFormat, xml, flags=0) -> String
|
1185
1185
|
*
|
1186
1186
|
* Call virConnectDomainXMLToNative[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectDomainXMLToNative]
|
1187
1187
|
* to convert libvirt XML to a native domain hypervisor representation.
|
@@ -1205,7 +1205,7 @@ static VALUE libvirt_connect_domain_xml_to_native(int argc, VALUE *argv,
|
|
1205
1205
|
#if HAVE_TYPE_VIRINTERFACEPTR
|
1206
1206
|
/*
|
1207
1207
|
* call-seq:
|
1208
|
-
* conn.num_of_interfaces ->
|
1208
|
+
* conn.num_of_interfaces -> Fixnum
|
1209
1209
|
*
|
1210
1210
|
* Call virConnectNumOfInterfaces[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectNumOfInterfaces]
|
1211
1211
|
* to retrieve the number of active interfaces on this connection.
|
@@ -1229,7 +1229,7 @@ static VALUE libvirt_connect_list_interfaces(VALUE c)
|
|
1229
1229
|
|
1230
1230
|
/*
|
1231
1231
|
* call-seq:
|
1232
|
-
* conn.num_of_defined_interfaces ->
|
1232
|
+
* conn.num_of_defined_interfaces -> Fixnum
|
1233
1233
|
*
|
1234
1234
|
* Call virConnectNumOfDefinedInterfaces[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectNumOfDefinedInterfaces]
|
1235
1235
|
* to retrieve the number of inactive interfaces on this connection.
|
@@ -1319,7 +1319,7 @@ static VALUE libvirt_connect_define_interface_xml(int argc, VALUE *argv,
|
|
1319
1319
|
|
1320
1320
|
/*
|
1321
1321
|
* call-seq:
|
1322
|
-
* conn.num_of_networks ->
|
1322
|
+
* conn.num_of_networks -> Fixnum
|
1323
1323
|
*
|
1324
1324
|
* Call virConnectNumOfNetworks[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectNumOfNetworks]
|
1325
1325
|
* to retrieve the number of active networks on this connection.
|
@@ -1343,7 +1343,7 @@ static VALUE libvirt_connect_list_networks(VALUE c)
|
|
1343
1343
|
|
1344
1344
|
/*
|
1345
1345
|
* call-seq:
|
1346
|
-
* conn.num_of_defined_networks ->
|
1346
|
+
* conn.num_of_defined_networks -> Fixnum
|
1347
1347
|
*
|
1348
1348
|
* Call virConnectNumOfDefinedNetworks[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectNumOfDefinedNetworks]
|
1349
1349
|
* to retrieve the number of inactive networks on this connection.
|
@@ -1448,7 +1448,7 @@ static VALUE libvirt_connect_define_network_xml(VALUE c, VALUE xml)
|
|
1448
1448
|
|
1449
1449
|
/*
|
1450
1450
|
* call-seq:
|
1451
|
-
* conn.num_of_nodedevices(cap=nil, flags=0) ->
|
1451
|
+
* conn.num_of_nodedevices(cap=nil, flags=0) -> Fixnum
|
1452
1452
|
*
|
1453
1453
|
* Call virNodeNumOfDevices[http://www.libvirt.org/html/libvirt-libvirt.html#virNodeNumOfDevices]
|
1454
1454
|
* to retrieve the number of node devices on this connection.
|
@@ -1564,7 +1564,7 @@ static VALUE libvirt_connect_create_nodedevice_xml(int argc, VALUE *argv,
|
|
1564
1564
|
|
1565
1565
|
/*
|
1566
1566
|
* call-seq:
|
1567
|
-
* conn.num_of_nwfilters ->
|
1567
|
+
* conn.num_of_nwfilters -> Fixnum
|
1568
1568
|
*
|
1569
1569
|
* Call virConnectNumOfNWFilters[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectNumOfNWFilters]
|
1570
1570
|
* to retrieve the number of network filters on this connection.
|
@@ -1651,7 +1651,7 @@ static VALUE libvirt_connect_define_nwfilter_xml(VALUE c, VALUE xml)
|
|
1651
1651
|
|
1652
1652
|
/*
|
1653
1653
|
* call-seq:
|
1654
|
-
* conn.num_of_secrets ->
|
1654
|
+
* conn.num_of_secrets -> Fixnum
|
1655
1655
|
*
|
1656
1656
|
* Call virConnectNumOfSecrets[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectNumOfSecrets]
|
1657
1657
|
* to retrieve the number of secrets on this connection.
|
@@ -1758,7 +1758,7 @@ static VALUE libvirt_connect_list_storage_pools(VALUE c)
|
|
1758
1758
|
|
1759
1759
|
/*
|
1760
1760
|
* call-seq:
|
1761
|
-
* conn.num_of_storage_pools ->
|
1761
|
+
* conn.num_of_storage_pools -> Fixnum
|
1762
1762
|
*
|
1763
1763
|
* Call virConnectNumOfStoragePools[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectNumOfStoragePools]
|
1764
1764
|
* to retrieve the number of active storage pools on this connection.
|
@@ -1782,7 +1782,7 @@ static VALUE libvirt_connect_list_defined_storage_pools(VALUE c)
|
|
1782
1782
|
|
1783
1783
|
/*
|
1784
1784
|
* call-seq:
|
1785
|
-
* conn.num_of_defined_storage_pools ->
|
1785
|
+
* conn.num_of_defined_storage_pools -> Fixnum
|
1786
1786
|
*
|
1787
1787
|
* Call virConnectNumOfDefinedStoragePools[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectNumOfDefinedStoragePools]
|
1788
1788
|
* to retrieve the number of inactive storage pools on this connection.
|
@@ -1882,7 +1882,7 @@ static VALUE libvirt_connect_define_pool_xml(int argc, VALUE *argv, VALUE c)
|
|
1882
1882
|
|
1883
1883
|
/*
|
1884
1884
|
* call-seq:
|
1885
|
-
* conn.discover_storage_pool_sources(type, srcSpec=nil, flags=0) ->
|
1885
|
+
* conn.discover_storage_pool_sources(type, srcSpec=nil, flags=0) -> String
|
1886
1886
|
*
|
1887
1887
|
* Call virConnectFindStoragePoolSources[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectFindStoragePoolSources]
|
1888
1888
|
* to find the storage pool sources corresponding to type.
|
@@ -1906,7 +1906,7 @@ static VALUE libvirt_connect_find_storage_pool_sources(int argc, VALUE *argv,
|
|
1906
1906
|
#if HAVE_VIRCONNECTGETSYSINFO
|
1907
1907
|
/*
|
1908
1908
|
* call-seq:
|
1909
|
-
* conn.sys_info(flags=0) ->
|
1909
|
+
* conn.sys_info(flags=0) -> String
|
1910
1910
|
*
|
1911
1911
|
* Call virConnectGetSysinfo[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectGetSysinfo]
|
1912
1912
|
* to get machine-specific information about the hypervisor. This may include
|
@@ -2137,7 +2137,7 @@ static VALUE libvirt_connect_node_memory_stats(int argc, VALUE *argv, VALUE c)
|
|
2137
2137
|
#if HAVE_VIRDOMAINSAVEIMAGEGETXMLDESC
|
2138
2138
|
/*
|
2139
2139
|
* call-seq:
|
2140
|
-
* conn.save_image_xml_desc(filename, flags=0) ->
|
2140
|
+
* conn.save_image_xml_desc(filename, flags=0) -> String
|
2141
2141
|
*
|
2142
2142
|
* Call virDomainSaveImageGetXMLDesc[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainSaveImageGetXMLDesc]
|
2143
2143
|
* to get the XML corresponding to a save file.
|
@@ -2353,7 +2353,7 @@ static VALUE libvirt_connect_node_cpu_map(int argc, VALUE *argv, VALUE c)
|
|
2353
2353
|
#if HAVE_VIRCONNECTSETKEEPALIVE
|
2354
2354
|
/*
|
2355
2355
|
* call-seq:
|
2356
|
-
* conn.set_keepalive(interval, count) ->
|
2356
|
+
* conn.set_keepalive(interval, count) -> Fixnum
|
2357
2357
|
*
|
2358
2358
|
* Call virConnectSetKeepAlive[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectSetKeepAlive]
|
2359
2359
|
* to start sending keepalive messages. Deprecated; use conn.keepalive=
|
@@ -2398,7 +2398,7 @@ static VALUE libvirt_connect_keepalive_equal(VALUE c, VALUE in)
|
|
2398
2398
|
#if HAVE_VIRCONNECTLISTALLDOMAINS
|
2399
2399
|
/*
|
2400
2400
|
* call-seq:
|
2401
|
-
* conn.list_all_domains(flags=0) ->
|
2401
|
+
* conn.list_all_domains(flags=0) -> Array
|
2402
2402
|
*
|
2403
2403
|
* Call virConnectListAllDomains[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectListAllDomains]
|
2404
2404
|
* to get an array of domain objects for all domains.
|
@@ -2415,7 +2415,7 @@ static VALUE libvirt_connect_list_all_domains(int argc, VALUE *argv, VALUE c)
|
|
2415
2415
|
#if HAVE_VIRCONNECTLISTALLNETWORKS
|
2416
2416
|
/*
|
2417
2417
|
* call-seq:
|
2418
|
-
* conn.list_all_networks(flags=0) ->
|
2418
|
+
* conn.list_all_networks(flags=0) -> Array
|
2419
2419
|
*
|
2420
2420
|
* Call virConnectListAllNetworks[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectListAllNetworks]
|
2421
2421
|
* to get an array of network objects for all networks.
|
@@ -2433,7 +2433,7 @@ static VALUE libvirt_connect_list_all_networks(int argc, VALUE *argv, VALUE c)
|
|
2433
2433
|
#if HAVE_VIRCONNECTLISTALLINTERFACES
|
2434
2434
|
/*
|
2435
2435
|
* call-seq:
|
2436
|
-
* conn.list_all_interfaces(flags=0) ->
|
2436
|
+
* conn.list_all_interfaces(flags=0) -> Array
|
2437
2437
|
*
|
2438
2438
|
* Call virConnectListAllInterfaces[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectListAllInterfaces]
|
2439
2439
|
* to get an array of interface objects for all interfaces.
|
@@ -2451,7 +2451,7 @@ static VALUE libvirt_connect_list_all_interfaces(int argc, VALUE *argv, VALUE c)
|
|
2451
2451
|
#if HAVE_VIRCONNECTLISTALLSECRETS
|
2452
2452
|
/*
|
2453
2453
|
* call-seq:
|
2454
|
-
* conn.list_all_secrets(flags=0) ->
|
2454
|
+
* conn.list_all_secrets(flags=0) -> Array
|
2455
2455
|
*
|
2456
2456
|
* Call virConnectListAllSecrets[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectListAllSecrets]
|
2457
2457
|
* to get an array of secret objects for all secrets.
|
@@ -2468,7 +2468,7 @@ static VALUE libvirt_connect_list_all_secrets(int argc, VALUE *argv, VALUE c)
|
|
2468
2468
|
#if HAVE_VIRCONNECTLISTALLNODEDEVICES
|
2469
2469
|
/*
|
2470
2470
|
* call-seq:
|
2471
|
-
* conn.list_all_nodedevices(flags=0) ->
|
2471
|
+
* conn.list_all_nodedevices(flags=0) -> Array
|
2472
2472
|
*
|
2473
2473
|
* Call virConnectListAllNodeDevices[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectListAllNodeDevices]
|
2474
2474
|
* to get an array of nodedevice objects for all nodedevices.
|
@@ -2487,7 +2487,7 @@ static VALUE libvirt_connect_list_all_nodedevices(int argc, VALUE *argv,
|
|
2487
2487
|
#if HAVE_VIRCONNECTLISTALLSTORAGEPOOLS
|
2488
2488
|
/*
|
2489
2489
|
* call-seq:
|
2490
|
-
* conn.list_all_storage_pools(flags=0) ->
|
2490
|
+
* conn.list_all_storage_pools(flags=0) -> Array
|
2491
2491
|
*
|
2492
2492
|
* Call virConnectListAllStoragePools[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectListAllStoragePools]
|
2493
2493
|
* to get an array of storage pool objects for all storage pools.
|
@@ -2505,7 +2505,7 @@ static VALUE libvirt_connect_list_all_storage_pools(int argc, VALUE *argv,
|
|
2505
2505
|
#if HAVE_VIRCONNECTLISTALLNWFILTERS
|
2506
2506
|
/*
|
2507
2507
|
* call-seq:
|
2508
|
-
* conn.list_all_nwfilters(flags=0) ->
|
2508
|
+
* conn.list_all_nwfilters(flags=0) -> Array
|
2509
2509
|
*
|
2510
2510
|
* Call virConnectListAllNWFilters[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectListAllNWFilters]
|
2511
2511
|
* to get an array of nwfilters for all nwfilter objects.
|
@@ -2608,24 +2608,6 @@ static VALUE libvirt_connect_qemu_attach(int argc, VALUE *argv, VALUE c)
|
|
2608
2608
|
#endif
|
2609
2609
|
|
2610
2610
|
#if HAVE_VIRCONNECTGETCPUMODELNAMES
|
2611
|
-
struct model_name_args {
|
2612
|
-
VALUE result;
|
2613
|
-
int i;
|
2614
|
-
char *value;
|
2615
|
-
};
|
2616
|
-
|
2617
|
-
static VALUE model_name_wrap(VALUE arg)
|
2618
|
-
{
|
2619
|
-
struct model_name_args *e = (struct model_name_args *)arg;
|
2620
|
-
VALUE elem;
|
2621
|
-
|
2622
|
-
elem = rb_str_new2(e->value);
|
2623
|
-
|
2624
|
-
rb_ary_store(e->result, e->i, elem);
|
2625
|
-
|
2626
|
-
return Qnil;
|
2627
|
-
}
|
2628
|
-
|
2629
2611
|
/*
|
2630
2612
|
* call-seq:
|
2631
2613
|
* conn.cpu_model_names(arch, flags=0) -> Array
|
@@ -2638,7 +2620,7 @@ static VALUE libvirt_connect_cpu_model_names(int argc, VALUE *argv, VALUE c)
|
|
2638
2620
|
VALUE arch, flags, result;
|
2639
2621
|
char **models;
|
2640
2622
|
int i = 0, j, elems = 0;
|
2641
|
-
struct
|
2623
|
+
struct ruby_libvirt_str_new2_and_ary_store_arg args;
|
2642
2624
|
int exception;
|
2643
2625
|
|
2644
2626
|
rb_scan_args(argc, argv, "11", &arch, &flags);
|
@@ -2656,11 +2638,12 @@ static VALUE libvirt_connect_cpu_model_names(int argc, VALUE *argv, VALUE c)
|
|
2656
2638
|
}
|
2657
2639
|
|
2658
2640
|
for (i = 0; i < elems; i++) {
|
2659
|
-
args.
|
2660
|
-
args.
|
2641
|
+
args.arr = result;
|
2642
|
+
args.index = i;
|
2661
2643
|
args.value = models[i];
|
2662
2644
|
|
2663
|
-
rb_protect(
|
2645
|
+
rb_protect(ruby_libvirt_str_new2_and_ary_store_wrap, (VALUE)&args,
|
2646
|
+
&exception);
|
2664
2647
|
if (exception) {
|
2665
2648
|
goto error;
|
2666
2649
|
}
|
@@ -2681,6 +2664,145 @@ error:
|
|
2681
2664
|
}
|
2682
2665
|
#endif
|
2683
2666
|
|
2667
|
+
#if HAVE_VIRNODEALLOCPAGES
|
2668
|
+
/*
|
2669
|
+
* call-seq:
|
2670
|
+
* conn.node_alloc_pages(page_arr, cells=nil, flags=0) -> Fixnum
|
2671
|
+
*
|
2672
|
+
* Call virNodeAllocPages[http://www.libvirt.org/html/libvirt-libvirt.html#virNodeAllocPages]
|
2673
|
+
* to reserve huge pages in the system pool.
|
2674
|
+
*/
|
2675
|
+
static VALUE libvirt_connect_node_alloc_pages(int argc, VALUE *argv, VALUE c)
|
2676
|
+
{
|
2677
|
+
VALUE page_arr, cells, flags, entry, size, count, tmp;
|
2678
|
+
int i, arraylen, start_cell, ret;
|
2679
|
+
unsigned int *page_sizes;
|
2680
|
+
unsigned long long *page_counts;
|
2681
|
+
unsigned int cell_count;
|
2682
|
+
|
2683
|
+
rb_scan_args(argc, argv, "12", &page_arr, &cells, &flags);
|
2684
|
+
|
2685
|
+
Check_Type(page_arr, T_ARRAY);
|
2686
|
+
|
2687
|
+
arraylen = RARRAY_LEN(page_arr);
|
2688
|
+
|
2689
|
+
page_sizes = alloca(arraylen * sizeof(unsigned int));
|
2690
|
+
page_counts = alloca(arraylen * sizeof(unsigned long long));
|
2691
|
+
|
2692
|
+
for (i = 0; i < arraylen; i++) {
|
2693
|
+
entry = rb_ary_entry(page_arr, i);
|
2694
|
+
Check_Type(entry, T_HASH);
|
2695
|
+
|
2696
|
+
size = rb_hash_aref(entry, rb_str_new2("size"));
|
2697
|
+
Check_Type(size, T_FIXNUM);
|
2698
|
+
|
2699
|
+
count = rb_hash_aref(entry, rb_str_new2("count"));
|
2700
|
+
Check_Type(count, T_FIXNUM);
|
2701
|
+
|
2702
|
+
page_sizes[i] = NUM2UINT(size);
|
2703
|
+
page_counts[i] = NUM2ULL(count);
|
2704
|
+
}
|
2705
|
+
|
2706
|
+
if (NIL_P(cells)) {
|
2707
|
+
start_cell = -1;
|
2708
|
+
cell_count = 0;
|
2709
|
+
}
|
2710
|
+
else {
|
2711
|
+
Check_Type(cells, T_HASH);
|
2712
|
+
|
2713
|
+
tmp = rb_hash_aref(cells, rb_str_new2("start"));
|
2714
|
+
Check_Type(tmp, T_FIXNUM);
|
2715
|
+
start_cell = NUM2INT(tmp);
|
2716
|
+
|
2717
|
+
tmp = rb_hash_aref(cells, rb_str_new2("count"));
|
2718
|
+
Check_Type(tmp, T_FIXNUM);
|
2719
|
+
cell_count = NUM2UINT(tmp);
|
2720
|
+
}
|
2721
|
+
|
2722
|
+
ret = virNodeAllocPages(ruby_libvirt_connect_get(c), arraylen, page_sizes,
|
2723
|
+
page_counts, start_cell, cell_count,
|
2724
|
+
ruby_libvirt_value_to_uint(flags));
|
2725
|
+
ruby_libvirt_raise_error_if(ret < 0, e_Error,
|
2726
|
+
"virNodeAllocPages",
|
2727
|
+
ruby_libvirt_connect_get(c));
|
2728
|
+
|
2729
|
+
return INT2NUM(ret);
|
2730
|
+
}
|
2731
|
+
#endif
|
2732
|
+
|
2733
|
+
#if HAVE_VIRCONNECTGETDOMAINCAPABILITIES
|
2734
|
+
/*
|
2735
|
+
* call-seq:
|
2736
|
+
* conn.domain_capabilities(emulatorbin, arch, machine, virttype, flags=0) -> String
|
2737
|
+
*
|
2738
|
+
* Call virNodeAllocPages[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectGetDomainCapabilities]
|
2739
|
+
* to get the capabilities of the underlying emulator.
|
2740
|
+
*/
|
2741
|
+
static VALUE libvirt_connect_domain_capabilities(int argc, VALUE *argv, VALUE c)
|
2742
|
+
{
|
2743
|
+
VALUE emulatorbin, arch, machine, virttype, flags;
|
2744
|
+
|
2745
|
+
rb_scan_args(argc, argv, "41", &emulatorbin, &arch, &machine, &virttype,
|
2746
|
+
&flags);
|
2747
|
+
|
2748
|
+
ruby_libvirt_generate_call_string(virConnectGetDomainCapabilities,
|
2749
|
+
ruby_libvirt_connect_get(c), 1,
|
2750
|
+
ruby_libvirt_connect_get(c),
|
2751
|
+
ruby_libvirt_get_cstring_or_null(emulatorbin),
|
2752
|
+
ruby_libvirt_get_cstring_or_null(arch),
|
2753
|
+
ruby_libvirt_get_cstring_or_null(machine),
|
2754
|
+
ruby_libvirt_get_cstring_or_null(virttype),
|
2755
|
+
NUM2UINT(flags));
|
2756
|
+
}
|
2757
|
+
#endif
|
2758
|
+
|
2759
|
+
#if HAVE_VIRNODEGETFREEPAGES
|
2760
|
+
/*
|
2761
|
+
* call-seq:
|
2762
|
+
* conn.node_free_pages(pages, cells, flags=0) -> Hash
|
2763
|
+
*
|
2764
|
+
* Call virNodeGetFreePages[http://www.libvirt.org/html/libvirt-libvirt.html#virNodeGetFreePages]
|
2765
|
+
* to query the host system on free pages of specified size.
|
2766
|
+
*/
|
2767
|
+
static VALUE libvirt_connect_node_free_pages(int argc, VALUE *argv, VALUE c)
|
2768
|
+
{
|
2769
|
+
VALUE pageArr, cells, flags, result;
|
2770
|
+
unsigned int *pages;
|
2771
|
+
unsigned int npages, i, cellCount;
|
2772
|
+
int startCell, ret;
|
2773
|
+
unsigned long long *counts;
|
2774
|
+
|
2775
|
+
rb_scan_args(argc, argv, "21", &pageArr, &cells, &flags);
|
2776
|
+
|
2777
|
+
Check_Type(pageArr, T_ARRAY);
|
2778
|
+
Check_Type(cells, T_HASH);
|
2779
|
+
|
2780
|
+
npages = RARRAY_LEN(pageArr);
|
2781
|
+
pages = alloca(npages);
|
2782
|
+
for (i = 0; i < npages; i++) {
|
2783
|
+
pages[i] = NUM2UINT(rb_ary_entry(pageArr, i));
|
2784
|
+
}
|
2785
|
+
|
2786
|
+
startCell = NUM2INT(rb_hash_aref(cells, rb_str_new2("startCell")));
|
2787
|
+
cellCount = NUM2UINT(rb_hash_aref(cells, rb_str_new2("cellCount")));
|
2788
|
+
|
2789
|
+
counts = alloca(npages * cellCount * sizeof(long long));
|
2790
|
+
|
2791
|
+
ret = virNodeGetFreePages(ruby_libvirt_connect_get(c), npages, pages,
|
2792
|
+
startCell, cellCount, counts,
|
2793
|
+
ruby_libvirt_value_to_uint(flags));
|
2794
|
+
ruby_libvirt_raise_error_if(ret < 0, e_Error, "virNodeGetFreePages",
|
2795
|
+
ruby_libvirt_connect_get(c));
|
2796
|
+
|
2797
|
+
result = rb_hash_new();
|
2798
|
+
for (i = 0; i < npages; i++) {
|
2799
|
+
rb_hash_aset(result, UINT2NUM(pages[i]), ULL2NUM(counts[i]));
|
2800
|
+
}
|
2801
|
+
|
2802
|
+
return result;
|
2803
|
+
}
|
2804
|
+
#endif
|
2805
|
+
|
2684
2806
|
/*
|
2685
2807
|
* Class Libvirt::Connect
|
2686
2808
|
*/
|
@@ -2754,6 +2876,11 @@ void ruby_libvirt_connect_init(void)
|
|
2754
2876
|
rb_define_method(c_connect, "compare_cpu", libvirt_connect_compare_cpu, -1);
|
2755
2877
|
#endif
|
2756
2878
|
|
2879
|
+
#if HAVE_CONST_VIR_CONNECT_COMPARE_CPU_FAIL_INCOMPATIBLE
|
2880
|
+
rb_define_const(c_connect, "COMPARE_CPU_FAIL_INCOMPATIBLE",
|
2881
|
+
INT2NUM(VIR_CONNECT_COMPARE_CPU_FAIL_INCOMPATIBLE));
|
2882
|
+
#endif
|
2883
|
+
|
2757
2884
|
#if HAVE_VIRCONNECTBASELINECPU
|
2758
2885
|
rb_define_method(c_connect, "baseline_cpu", libvirt_connect_baseline_cpu,
|
2759
2886
|
-1);
|
@@ -3301,6 +3428,14 @@ void ruby_libvirt_connect_init(void)
|
|
3301
3428
|
rb_define_method(c_connect, "list_all_storage_pools",
|
3302
3429
|
libvirt_connect_list_all_storage_pools, -1);
|
3303
3430
|
#endif
|
3431
|
+
#if HAVE_CONST_VIR_CONNECT_LIST_STORAGE_POOLS_GLUSTER
|
3432
|
+
rb_define_const(c_connect, "LIST_STORAGE_POOLS_GLUSTER",
|
3433
|
+
INT2NUM(VIR_CONNECT_LIST_STORAGE_POOLS_GLUSTER));
|
3434
|
+
#endif
|
3435
|
+
#if HAVE_CONST_VIR_CONNECT_LIST_STORAGE_POOLS_ZFS
|
3436
|
+
rb_define_const(c_connect, "LIST_STORAGE_POOLS_ZFS",
|
3437
|
+
INT2NUM(VIR_CONNECT_LIST_STORAGE_POOLS_ZFS));
|
3438
|
+
#endif
|
3304
3439
|
#if HAVE_VIRCONNECTLISTALLNWFILTERS
|
3305
3440
|
rb_define_method(c_connect, "list_all_nwfilters",
|
3306
3441
|
libvirt_connect_list_all_nwfilters, -1);
|
@@ -3319,4 +3454,20 @@ void ruby_libvirt_connect_init(void)
|
|
3319
3454
|
rb_define_method(c_connect, "cpu_model_names",
|
3320
3455
|
libvirt_connect_cpu_model_names, -1);
|
3321
3456
|
#endif
|
3457
|
+
#if HAVE_VIRNODEALLOCPAGES
|
3458
|
+
rb_define_const(c_connect, "NODE_ALLOC_PAGES_ADD",
|
3459
|
+
INT2NUM(VIR_NODE_ALLOC_PAGES_ADD));
|
3460
|
+
rb_define_const(c_connect, "NODE_ALLOC_PAGES_SET",
|
3461
|
+
INT2NUM(VIR_NODE_ALLOC_PAGES_SET));
|
3462
|
+
rb_define_method(c_connect, "node_alloc_pages",
|
3463
|
+
libvirt_connect_node_alloc_pages, -1);
|
3464
|
+
#endif
|
3465
|
+
#if HAVE_VIRCONNECTGETDOMAINCAPABILITIES
|
3466
|
+
rb_define_method(c_connect, "domain_capabilities",
|
3467
|
+
libvirt_connect_domain_capabilities, -1);
|
3468
|
+
#endif
|
3469
|
+
#if HAVE_VIRNODEGETFREEPAGES
|
3470
|
+
rb_define_method(c_connect, "node_free_pages",
|
3471
|
+
libvirt_connect_node_free_pages, -1);
|
3472
|
+
#endif
|
3322
3473
|
}
|