ruby-libvirt 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/NEWS +43 -0
- data/README +40 -2
- data/README.rdoc +3 -1
- data/Rakefile +3 -25
- data/ext/libvirt/_libvirt.c +636 -35
- data/ext/libvirt/common.c +142 -16
- data/ext/libvirt/common.h +78 -22
- data/ext/libvirt/connect.c +1811 -95
- data/ext/libvirt/connect.h +0 -1
- data/ext/libvirt/domain.c +880 -424
- data/ext/libvirt/domain.h +4 -0
- data/ext/libvirt/extconf.rb +90 -0
- data/ext/libvirt/interface.c +40 -118
- data/ext/libvirt/network.c +22 -125
- data/ext/libvirt/network.h +1 -0
- data/ext/libvirt/nodedevice.c +27 -142
- data/ext/libvirt/nwfilter.c +10 -83
- data/ext/libvirt/secret.c +35 -113
- data/ext/libvirt/storage.c +125 -223
- data/tests/test_conn.rb +193 -43
- data/tests/test_domain.rb +1067 -102
- data/tests/test_interface.rb +156 -19
- data/tests/test_network.rb +237 -26
- data/tests/test_nodedevice.rb +103 -15
- data/tests/test_nwfilter.rb +97 -14
- data/tests/test_open.rb +186 -6
- data/tests/test_secret.rb +126 -14
- data/tests/test_storage.rb +513 -40
- data/tests/test_utils.rb +73 -0
- metadata +5 -6
- data/tests/node.xml +0 -110
- data/tests/tc_connect.rb +0 -178
data/ext/libvirt/network.h
CHANGED
data/ext/libvirt/nodedevice.c
CHANGED
@@ -25,6 +25,7 @@
|
|
25
25
|
#include "connect.h"
|
26
26
|
#include "extconf.h"
|
27
27
|
|
28
|
+
#if HAVE_TYPE_VIRNODEDEVICEPTR
|
28
29
|
static VALUE c_nodedevice;
|
29
30
|
|
30
31
|
static void nodedevice_free(void *s) {
|
@@ -35,123 +36,16 @@ static virNodeDevicePtr nodedevice_get(VALUE s) {
|
|
35
36
|
generic_get(NodeDevice, s);
|
36
37
|
}
|
37
38
|
|
38
|
-
|
39
|
+
VALUE nodedevice_new(virNodeDevicePtr s, VALUE conn) {
|
39
40
|
return generic_new(c_nodedevice, s, conn, nodedevice_free);
|
40
41
|
}
|
41
42
|
|
42
|
-
/*
|
43
|
-
* call-seq:
|
44
|
-
* conn.num_of_nodedevices -> fixnum
|
45
|
-
*
|
46
|
-
* Call +virNodeNumOfDevices+[http://www.libvirt.org/html/libvirt-libvirt.html#virNodeNumOfDevices]
|
47
|
-
*/
|
48
|
-
static VALUE libvirt_conn_num_of_nodedevices(int argc, VALUE *argv, VALUE c) {
|
49
|
-
int result;
|
50
|
-
virConnectPtr conn = connect_get(c);
|
51
|
-
VALUE cap, flags;
|
52
|
-
|
53
|
-
rb_scan_args(argc, argv, "02", &cap, &flags);
|
54
|
-
|
55
|
-
if (NIL_P(flags))
|
56
|
-
flags = INT2FIX(0);
|
57
|
-
|
58
|
-
result = virNodeNumOfDevices(conn, get_string_or_nil(cap), NUM2UINT(flags));
|
59
|
-
_E(result < 0, create_error(e_RetrieveError, "virNodeNumOfDevices", "",
|
60
|
-
conn));
|
61
|
-
|
62
|
-
return INT2NUM(result);
|
63
|
-
}
|
64
|
-
|
65
|
-
/*
|
66
|
-
* call-seq:
|
67
|
-
* conn.list_nodedevices -> list
|
68
|
-
*
|
69
|
-
* Call +virNodeListDevices+[http://www.libvirt.org/html/libvirt-libvirt.html#virNodeListDevices]
|
70
|
-
*/
|
71
|
-
static VALUE libvirt_conn_list_nodedevices(int argc, VALUE *argv, VALUE c) {
|
72
|
-
int i, r, num;
|
73
|
-
virConnectPtr conn = connect_get(c);
|
74
|
-
VALUE cap, flags;
|
75
|
-
char *capstr;
|
76
|
-
VALUE result;
|
77
|
-
char **names;
|
78
|
-
|
79
|
-
rb_scan_args(argc, argv, "02", &cap, &flags);
|
80
|
-
|
81
|
-
if (NIL_P(flags))
|
82
|
-
flags = INT2FIX(0);
|
83
|
-
|
84
|
-
capstr = get_string_or_nil(cap);
|
85
|
-
|
86
|
-
num = virNodeNumOfDevices(conn, capstr, 0);
|
87
|
-
_E(num < 0, create_error(e_RetrieveError, "virNodeNumOfDevices", "", conn));
|
88
|
-
if (num == 0) {
|
89
|
-
/* if num is 0, don't call virNodeListDevices function */
|
90
|
-
result = rb_ary_new2(num);
|
91
|
-
return result;
|
92
|
-
}
|
93
|
-
names = ALLOC_N(char *, num);
|
94
|
-
r = virNodeListDevices(conn, capstr, names, num, NUM2UINT(flags));
|
95
|
-
if (r < 0) {
|
96
|
-
free(names);
|
97
|
-
_E(r < 0, create_error(e_RetrieveError, "virNodeListDevices", "", conn));
|
98
|
-
}
|
99
|
-
|
100
|
-
result = rb_ary_new2(num);
|
101
|
-
for (i=0; i<num; i++) {
|
102
|
-
rb_ary_push(result, rb_str_new2(names[i]));
|
103
|
-
free(names[i]);
|
104
|
-
}
|
105
|
-
free(names);
|
106
|
-
return result;
|
107
|
-
}
|
108
|
-
|
109
|
-
/*
|
110
|
-
* call-seq:
|
111
|
-
* conn.lookup_nodedevice_by_name -> Libvirt::NodeDevice
|
112
|
-
*
|
113
|
-
* Call +virNodeDeviceLookupByName+[http://www.libvirt.org/html/libvirt-libvirt.html#virNodeDeviceLookupByName]
|
114
|
-
*/
|
115
|
-
static VALUE libvirt_conn_lookup_nodedevice_by_name(VALUE c, VALUE name) {
|
116
|
-
virNodeDevicePtr nodedev;
|
117
|
-
virConnectPtr conn = connect_get(c);
|
118
|
-
|
119
|
-
nodedev = virNodeDeviceLookupByName(conn, StringValueCStr(name));
|
120
|
-
_E(nodedev == NULL, create_error(e_RetrieveError, "virNodeDeviceLookupByName", "", conn));
|
121
|
-
|
122
|
-
return nodedevice_new(nodedev, c);
|
123
|
-
|
124
|
-
}
|
125
|
-
|
126
|
-
#if HAVE_VIRNODEDEVICECREATEXML
|
127
|
-
/*
|
128
|
-
* call-seq:
|
129
|
-
* conn.create_nodedevice_xml -> Libvirt::NodeDevice
|
130
|
-
*
|
131
|
-
* Call +virNodeDeviceCreateXML+[http://www.libvirt.org/html/libvirt-libvirt.html#virNodeDeviceCreateXML]
|
132
|
-
*/
|
133
|
-
static VALUE libvirt_conn_create_nodedevice_xml(int argc, VALUE *argv, VALUE c) {
|
134
|
-
virNodeDevicePtr nodedev;
|
135
|
-
virConnectPtr conn = connect_get(c);
|
136
|
-
VALUE xml, flags;
|
137
|
-
|
138
|
-
rb_scan_args(argc, argv, "11", &xml, &flags);
|
139
|
-
|
140
|
-
if (NIL_P(flags))
|
141
|
-
flags = INT2FIX(0);
|
142
|
-
|
143
|
-
nodedev = virNodeDeviceCreateXML(conn, StringValueCStr(xml), NUM2UINT(flags));
|
144
|
-
_E(nodedev == NULL, create_error(e_Error, "virNodeDeviceCreateXML", "", conn));
|
145
|
-
|
146
|
-
return nodedevice_new(nodedev, c);
|
147
|
-
}
|
148
|
-
#endif
|
149
|
-
|
150
43
|
/*
|
151
44
|
* call-seq:
|
152
45
|
* nodedevice.name -> string
|
153
46
|
*
|
154
47
|
* Call +virNodeDeviceGetName+[http://www.libvirt.org/html/libvirt-libvirt.html#virNodeDeviceGetName]
|
48
|
+
* to retrieve the name of the node device.
|
155
49
|
*/
|
156
50
|
static VALUE libvirt_nodedevice_name(VALUE c) {
|
157
51
|
gen_call_string(virNodeDeviceGetName, conn(c), 0, nodedevice_get(c));
|
@@ -162,6 +56,7 @@ static VALUE libvirt_nodedevice_name(VALUE c) {
|
|
162
56
|
* nodedevice.parent -> string
|
163
57
|
*
|
164
58
|
* Call +virNodeDeviceGetParent+[http://www.libvirt.org/html/libvirt-libvirt.html#virNodeDeviceGetParent]
|
59
|
+
* to retrieve the parent of the node device.
|
165
60
|
*/
|
166
61
|
static VALUE libvirt_nodedevice_parent(VALUE c) {
|
167
62
|
/* unfortunately we can't use gen_call_string() here because
|
@@ -183,14 +78,10 @@ static VALUE libvirt_nodedevice_parent(VALUE c) {
|
|
183
78
|
* nodedevice.num_of_caps -> fixnum
|
184
79
|
*
|
185
80
|
* Call +virNodeDeviceNumOfCaps+[http://www.libvirt.org/html/libvirt-libvirt.html#virNodeDeviceNumOfCaps]
|
81
|
+
* to retrieve the number of capabilities of the node device.
|
186
82
|
*/
|
187
83
|
static VALUE libvirt_nodedevice_num_of_caps(VALUE c) {
|
188
|
-
|
189
|
-
|
190
|
-
result = virNodeDeviceNumOfCaps(nodedevice_get(c));
|
191
|
-
_E(result < 0, create_error(e_RetrieveError, "virNodeNumOfDevices", "", connect_get(c)));
|
192
|
-
|
193
|
-
return INT2NUM(result);
|
84
|
+
gen_call_int(virNodeDeviceNumOfCaps, conn(c), nodedevice_get(c));
|
194
85
|
}
|
195
86
|
|
196
87
|
/*
|
@@ -198,42 +89,37 @@ static VALUE libvirt_nodedevice_num_of_caps(VALUE c) {
|
|
198
89
|
* nodedevice.list_caps -> list
|
199
90
|
*
|
200
91
|
* Call +virNodeDeviceListCaps+[http://www.libvirt.org/html/libvirt-libvirt.html#virNodeDeviceListCaps]
|
92
|
+
* to retrieve a list of capabilities of the node device.
|
201
93
|
*/
|
202
94
|
static VALUE libvirt_nodedevice_list_caps(VALUE c) {
|
203
|
-
int
|
95
|
+
int r, num;
|
204
96
|
virConnectPtr conn = connect_get(c);
|
205
97
|
virNodeDevicePtr nodedev = nodedevice_get(c);
|
206
|
-
VALUE result;
|
207
98
|
char **names;
|
208
99
|
|
209
100
|
num = virNodeDeviceNumOfCaps(nodedev);
|
210
|
-
_E(num < 0, create_error(e_RetrieveError, "virNodeDeviceNumOfCaps",
|
211
|
-
if (num == 0)
|
101
|
+
_E(num < 0, create_error(e_RetrieveError, "virNodeDeviceNumOfCaps", conn));
|
102
|
+
if (num == 0)
|
212
103
|
/* if num is 0, don't call virNodeDeviceListCaps function */
|
213
|
-
|
214
|
-
|
215
|
-
}
|
104
|
+
return rb_ary_new2(num);
|
105
|
+
|
216
106
|
names = ALLOC_N(char *, num);
|
217
107
|
r = virNodeDeviceListCaps(nodedev, names, num);
|
218
108
|
if (r < 0) {
|
219
|
-
|
220
|
-
|
109
|
+
xfree(names);
|
110
|
+
rb_exc_raise(create_error(e_RetrieveError, "virNodeDeviceListCaps",
|
111
|
+
conn));
|
221
112
|
}
|
222
113
|
|
223
|
-
|
224
|
-
for (i=0; i<num; i++) {
|
225
|
-
rb_ary_push(result, rb_str_new2(names[i]));
|
226
|
-
free(names[i]);
|
227
|
-
}
|
228
|
-
free(names);
|
229
|
-
return result;
|
114
|
+
return gen_list(num, &names);
|
230
115
|
}
|
231
116
|
|
232
117
|
/*
|
233
118
|
* call-seq:
|
234
|
-
* nodedevice.xml_desc -> string
|
119
|
+
* nodedevice.xml_desc(flags=0) -> string
|
235
120
|
*
|
236
121
|
* Call +virNodeDeviceGetXMLDesc+[http://www.libvirt.org/html/libvirt-libvirt.html#virNodeDeviceGetXMLDesc]
|
122
|
+
* to retrieve the XML for the node device.
|
237
123
|
*/
|
238
124
|
static VALUE libvirt_nodedevice_xml_desc(int argc, VALUE *argv, VALUE s) {
|
239
125
|
VALUE flags;
|
@@ -252,6 +138,7 @@ static VALUE libvirt_nodedevice_xml_desc(int argc, VALUE *argv, VALUE s) {
|
|
252
138
|
* nodedevice.detach -> nil
|
253
139
|
*
|
254
140
|
* Call +virNodeDeviceDettach+[http://www.libvirt.org/html/libvirt-libvirt.html#virNodeDeviceDettach]
|
141
|
+
* to detach the node device from the node.
|
255
142
|
*/
|
256
143
|
static VALUE libvirt_nodedevice_detach(VALUE s) {
|
257
144
|
gen_call_void(virNodeDeviceDettach, conn(s), nodedevice_get(s));
|
@@ -262,6 +149,7 @@ static VALUE libvirt_nodedevice_detach(VALUE s) {
|
|
262
149
|
* nodedevice.reattach -> nil
|
263
150
|
*
|
264
151
|
* Call +virNodeDeviceReAttach+[http://www.libvirt.org/html/libvirt-libvirt.html#virNodeDeviceReAttach]
|
152
|
+
* to reattach the node device to the node.
|
265
153
|
*/
|
266
154
|
static VALUE libvirt_nodedevice_reattach(VALUE s) {
|
267
155
|
gen_call_void(virNodeDeviceReAttach, conn(s), nodedevice_get(s));
|
@@ -272,6 +160,7 @@ static VALUE libvirt_nodedevice_reattach(VALUE s) {
|
|
272
160
|
* nodedevice.reset -> nil
|
273
161
|
*
|
274
162
|
* Call +virNodeDeviceReset+[http://www.libvirt.org/html/libvirt-libvirt.html#virNodeDeviceReset]
|
163
|
+
* to reset the node device.
|
275
164
|
*/
|
276
165
|
static VALUE libvirt_nodedevice_reset(VALUE s) {
|
277
166
|
gen_call_void(virNodeDeviceReset, conn(s), nodedevice_get(s));
|
@@ -283,6 +172,7 @@ static VALUE libvirt_nodedevice_reset(VALUE s) {
|
|
283
172
|
* nodedevice.destroy -> nil
|
284
173
|
*
|
285
174
|
* Call +virNodeDeviceDestroy+[http://www.libvirt.org/html/libvirt-libvirt.html#virNodeDeviceDestroy]
|
175
|
+
* to shutdown the node device.
|
286
176
|
*/
|
287
177
|
static VALUE libvirt_nodedevice_destroy(VALUE s) {
|
288
178
|
gen_call_void(virNodeDeviceDestroy, conn(s), nodedevice_get(s));
|
@@ -294,27 +184,21 @@ static VALUE libvirt_nodedevice_destroy(VALUE s) {
|
|
294
184
|
* nodedevice.free -> nil
|
295
185
|
*
|
296
186
|
* Call +virNodeDeviceFree+[http://www.libvirt.org/html/libvirt-libvirt.html#virNodeDeviceFree]
|
187
|
+
* to free the node device object. After this call the node device object is
|
188
|
+
* no longer valid.
|
297
189
|
*/
|
298
190
|
static VALUE libvirt_nodedevice_free(VALUE s) {
|
299
191
|
gen_call_free(NodeDevice, s);
|
300
192
|
}
|
193
|
+
#endif
|
301
194
|
|
302
195
|
/*
|
303
196
|
* Class Libvirt::NodeDevice
|
304
197
|
*/
|
305
198
|
void init_nodedevice()
|
306
199
|
{
|
200
|
+
#if HAVE_TYPE_VIRNODEDEVICEPTR
|
307
201
|
c_nodedevice = rb_define_class_under(m_libvirt, "NodeDevice", rb_cObject);
|
308
|
-
rb_define_method(c_connect, "num_of_nodedevices",
|
309
|
-
libvirt_conn_num_of_nodedevices, -1);
|
310
|
-
rb_define_method(c_connect, "list_nodedevices",
|
311
|
-
libvirt_conn_list_nodedevices, -1);
|
312
|
-
rb_define_method(c_connect, "lookup_nodedevice_by_name",
|
313
|
-
libvirt_conn_lookup_nodedevice_by_name, 1);
|
314
|
-
#if HAVE_VIRNODEDEVICECREATEXML
|
315
|
-
rb_define_method(c_connect, "create_nodedevice_xml",
|
316
|
-
libvirt_conn_create_nodedevice_xml, -1);
|
317
|
-
#endif
|
318
202
|
|
319
203
|
rb_define_method(c_nodedevice, "name", libvirt_nodedevice_name, 0);
|
320
204
|
rb_define_method(c_nodedevice, "parent", libvirt_nodedevice_parent, 0);
|
@@ -330,4 +214,5 @@ void init_nodedevice()
|
|
330
214
|
rb_define_method(c_nodedevice, "destroy", libvirt_nodedevice_destroy, 0);
|
331
215
|
#endif
|
332
216
|
rb_define_method(c_nodedevice, "free", libvirt_nodedevice_free, 0);
|
217
|
+
#endif
|
333
218
|
}
|
data/ext/libvirt/nwfilter.c
CHANGED
@@ -36,83 +36,16 @@ static virNWFilterPtr nwfilter_get(VALUE nw) {
|
|
36
36
|
generic_get(NWFilter, nw);
|
37
37
|
}
|
38
38
|
|
39
|
-
|
39
|
+
VALUE nwfilter_new(virNWFilterPtr nw, VALUE conn) {
|
40
40
|
return generic_new(c_nwfilter, nw, conn, nwfilter_free);
|
41
41
|
}
|
42
42
|
|
43
|
-
/*
|
44
|
-
* call-seq:
|
45
|
-
* conn.num_of_nwfilters -> fixnum
|
46
|
-
*
|
47
|
-
* Call +virConnectNumOfNWFilters+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectNumOfNWFilters]
|
48
|
-
*/
|
49
|
-
static VALUE libvirt_conn_num_of_nwfilters(VALUE s) {
|
50
|
-
gen_conn_num_of(s, NWFilters);
|
51
|
-
}
|
52
|
-
|
53
|
-
/*
|
54
|
-
* call-seq:
|
55
|
-
* conn.list_nwfilters -> list
|
56
|
-
*
|
57
|
-
* Call +virConnectListNWFilters+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectListNWFilters]
|
58
|
-
*/
|
59
|
-
static VALUE libvirt_conn_list_nwfilters(VALUE s) {
|
60
|
-
gen_conn_list_names(s, NWFilters);
|
61
|
-
}
|
62
|
-
|
63
|
-
/*
|
64
|
-
* call-seq:
|
65
|
-
* conn.lookup_nwfilter_by_name -> Libvirt::NWFilter
|
66
|
-
*
|
67
|
-
* Call +virNWFilterLookupByName+[http://www.libvirt.org/html/libvirt-libvirt.html#virNWFilterLookupByName]
|
68
|
-
*/
|
69
|
-
static VALUE libvirt_conn_lookup_nwfilter_by_name(VALUE c, VALUE name) {
|
70
|
-
virNWFilterPtr nwfilter;
|
71
|
-
virConnectPtr conn = connect_get(c);
|
72
|
-
|
73
|
-
nwfilter = virNWFilterLookupByName(conn, StringValueCStr(name));
|
74
|
-
_E(nwfilter == NULL, create_error(e_RetrieveError, "virNWFilterLookupByName", "", conn));
|
75
|
-
|
76
|
-
return nwfilter_new(nwfilter, c);
|
77
|
-
}
|
78
|
-
|
79
|
-
/*
|
80
|
-
* call-seq:
|
81
|
-
* conn.lookup_nwfilter_by_uuid -> Libvirt::NWFilter
|
82
|
-
*
|
83
|
-
* Call +virNWFilterLookupByUUIDString+[http://www.libvirt.org/html/libvirt-libvirt.html#virNWFilterLookupByUUIDString]
|
84
|
-
*/
|
85
|
-
static VALUE libvirt_conn_lookup_nwfilter_by_uuid(VALUE c, VALUE uuid) {
|
86
|
-
virNWFilterPtr nwfilter;
|
87
|
-
virConnectPtr conn = connect_get(c);
|
88
|
-
|
89
|
-
nwfilter = virNWFilterLookupByUUIDString(conn, StringValueCStr(uuid));
|
90
|
-
_E(nwfilter == NULL, create_error(e_RetrieveError, "virNWFilterLookupByUUIDString", "", conn));
|
91
|
-
|
92
|
-
return nwfilter_new(nwfilter, c);
|
93
|
-
}
|
94
|
-
|
95
|
-
/*
|
96
|
-
* call-seq:
|
97
|
-
* conn.define_nwfilter_xml -> Libvirt::NWFilter
|
98
|
-
*
|
99
|
-
* Call +virNWFilterDefineXML+[http://www.libvirt.org/html/libvirt-libvirt.html#virNWFilterDefineXML]
|
100
|
-
*/
|
101
|
-
static VALUE libvirt_conn_define_nwfilter_xml(VALUE c, VALUE xml) {
|
102
|
-
virNWFilterPtr nwfilter;
|
103
|
-
virConnectPtr conn = connect_get(c);
|
104
|
-
|
105
|
-
nwfilter = virNWFilterDefineXML(conn, StringValueCStr(xml));
|
106
|
-
_E(nwfilter == NULL, create_error(e_DefinitionError, "virNWFilterDefineXML", "", conn));
|
107
|
-
|
108
|
-
return nwfilter_new(nwfilter, c);
|
109
|
-
}
|
110
|
-
|
111
43
|
/*
|
112
44
|
* call-seq:
|
113
45
|
* nwfilter.undefine -> nil
|
114
46
|
*
|
115
47
|
* Call +virNWFilterUndefine+[http://www.libvirt.org/html/libvirt-libvirt.html#virNWFilterUndefine]
|
48
|
+
* to undefine the network filter.
|
116
49
|
*/
|
117
50
|
static VALUE libvirt_nwfilter_undefine(VALUE s) {
|
118
51
|
gen_call_void(virNWFilterUndefine, conn(s), nwfilter_get(s));
|
@@ -123,6 +56,7 @@ static VALUE libvirt_nwfilter_undefine(VALUE s) {
|
|
123
56
|
* nwfilter.name -> string
|
124
57
|
*
|
125
58
|
* Call +virNWFilterGetName+[http://www.libvirt.org/html/libvirt-libvirt.html#virNWFilterGetName]
|
59
|
+
* to retrieve the network filter name.
|
126
60
|
*/
|
127
61
|
static VALUE libvirt_nwfilter_name(VALUE s) {
|
128
62
|
gen_call_string(virNWFilterGetName, conn(s), 0, nwfilter_get(s));
|
@@ -133,6 +67,7 @@ static VALUE libvirt_nwfilter_name(VALUE s) {
|
|
133
67
|
* nwfilter.uuid -> string
|
134
68
|
*
|
135
69
|
* Call +virNWFilterGetUUIDString+[http://www.libvirt.org/html/libvirt-libvirt.html#virNWFilterGetUUIDString]
|
70
|
+
* to retrieve the network filter UUID.
|
136
71
|
*/
|
137
72
|
static VALUE libvirt_nwfilter_uuid(VALUE s) {
|
138
73
|
virNWFilterPtr nwfilter = nwfilter_get(s);
|
@@ -140,16 +75,18 @@ static VALUE libvirt_nwfilter_uuid(VALUE s) {
|
|
140
75
|
char uuid[VIR_UUID_STRING_BUFLEN];
|
141
76
|
|
142
77
|
r = virNWFilterGetUUIDString(nwfilter, uuid);
|
143
|
-
_E(r < 0, create_error(e_RetrieveError, "virNWFilterGetUUIDString",
|
78
|
+
_E(r < 0, create_error(e_RetrieveError, "virNWFilterGetUUIDString",
|
79
|
+
conn(s)));
|
144
80
|
|
145
81
|
return rb_str_new2((char *)uuid);
|
146
82
|
}
|
147
83
|
|
148
84
|
/*
|
149
85
|
* call-seq:
|
150
|
-
* nwfilter.xml_desc -> string
|
86
|
+
* nwfilter.xml_desc(flags=0) -> string
|
151
87
|
*
|
152
88
|
* Call +virNWFilterGetXMLDesc+[http://www.libvirt.org/html/libvirt-libvirt.html#virNWFilterGetXMLDesc]
|
89
|
+
* to retrieve the XML for this network filter.
|
153
90
|
*/
|
154
91
|
static VALUE libvirt_nwfilter_xml_desc(int argc, VALUE *argv, VALUE s) {
|
155
92
|
VALUE flags;
|
@@ -168,6 +105,8 @@ static VALUE libvirt_nwfilter_xml_desc(int argc, VALUE *argv, VALUE s) {
|
|
168
105
|
* nwfilter.free -> nil
|
169
106
|
*
|
170
107
|
* Call +virNWFilterFree+[http://www.libvirt.org/html/libvirt-libvirt.html#virNWFilterFree]
|
108
|
+
* to free this network filter. After this call the network filter object is
|
109
|
+
* no longer valid.
|
171
110
|
*/
|
172
111
|
static VALUE libvirt_nwfilter_free(VALUE s) {
|
173
112
|
gen_call_free(NWFilter, s);
|
@@ -184,18 +123,6 @@ void init_nwfilter()
|
|
184
123
|
c_nwfilter = rb_define_class_under(m_libvirt, "NWFilter", rb_cObject);
|
185
124
|
rb_define_attr(c_nwfilter, "connection", 1, 0);
|
186
125
|
|
187
|
-
/* NWFilter lookup/creation methods */
|
188
|
-
rb_define_method(c_connect, "num_of_nwfilters",
|
189
|
-
libvirt_conn_num_of_nwfilters, 0);
|
190
|
-
rb_define_method(c_connect, "list_nwfilters",
|
191
|
-
libvirt_conn_list_nwfilters, 0);
|
192
|
-
rb_define_method(c_connect, "lookup_nwfilter_by_name",
|
193
|
-
libvirt_conn_lookup_nwfilter_by_name, 1);
|
194
|
-
rb_define_method(c_connect, "lookup_nwfilter_by_uuid",
|
195
|
-
libvirt_conn_lookup_nwfilter_by_uuid, 1);
|
196
|
-
rb_define_method(c_connect, "define_nwfilter_xml",
|
197
|
-
libvirt_conn_define_nwfilter_xml, 1);
|
198
|
-
|
199
126
|
/* NWFilter object methods */
|
200
127
|
rb_define_method(c_nwfilter, "undefine", libvirt_nwfilter_undefine, 0);
|
201
128
|
rb_define_method(c_nwfilter, "name", libvirt_nwfilter_name, 0);
|
data/ext/libvirt/secret.c
CHANGED
@@ -36,92 +36,16 @@ static virSecretPtr secret_get(VALUE s) {
|
|
36
36
|
generic_get(Secret, s);
|
37
37
|
}
|
38
38
|
|
39
|
-
|
39
|
+
VALUE secret_new(virSecretPtr s, VALUE conn) {
|
40
40
|
return generic_new(c_secret, s, conn, secret_free);
|
41
41
|
}
|
42
42
|
|
43
|
-
/*
|
44
|
-
* call-seq:
|
45
|
-
* conn.num_of_secrets -> fixnum
|
46
|
-
*
|
47
|
-
* Call +virConnectNumOfSecrets+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectNumOfSecrets]
|
48
|
-
*/
|
49
|
-
static VALUE libvirt_conn_num_of_secrets(VALUE s) {
|
50
|
-
gen_conn_num_of(s, Secrets);
|
51
|
-
}
|
52
|
-
|
53
|
-
/*
|
54
|
-
* call-seq:
|
55
|
-
* conn.list_secrets -> list
|
56
|
-
*
|
57
|
-
* Call +virConnectListSecrets+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectListSecrets]
|
58
|
-
*/
|
59
|
-
static VALUE libvirt_conn_list_secrets(VALUE s) {
|
60
|
-
gen_conn_list_names(s, Secrets);
|
61
|
-
}
|
62
|
-
|
63
|
-
/*
|
64
|
-
* call-seq:
|
65
|
-
* conn.lookup_secret_by_uuid -> Libvirt::Secret
|
66
|
-
*
|
67
|
-
* Call +virSecretLookupByUUID+[http://www.libvirt.org/html/libvirt-libvirt.html#virSecretLookupByUUID]
|
68
|
-
*/
|
69
|
-
static VALUE libvirt_conn_lookup_secret_by_uuid(VALUE c, VALUE uuid) {
|
70
|
-
virSecretPtr secret;
|
71
|
-
virConnectPtr conn = connect_get(c);
|
72
|
-
|
73
|
-
secret = virSecretLookupByUUIDString(conn, StringValueCStr(uuid));
|
74
|
-
_E(secret == NULL, create_error(e_RetrieveError, "virSecretLookupByUUID", "", conn));
|
75
|
-
|
76
|
-
return secret_new(secret, c);
|
77
|
-
}
|
78
|
-
|
79
|
-
/*
|
80
|
-
* call-seq:
|
81
|
-
* conn.lookup_secret_by_usage -> Libvirt::Secret
|
82
|
-
*
|
83
|
-
* Call +virSecretLookupByUsage+[http://www.libvirt.org/html/libvirt-libvirt.html#virSecretLookupByUsage]
|
84
|
-
*/
|
85
|
-
static VALUE libvirt_conn_lookup_secret_by_usage(int argc, VALUE *argv, VALUE c) {
|
86
|
-
virSecretPtr secret;
|
87
|
-
virConnectPtr conn = connect_get(c);
|
88
|
-
VALUE usageType, usageID;
|
89
|
-
|
90
|
-
rb_scan_args(argc, argv, "11", &usageType, &usageID);
|
91
|
-
|
92
|
-
secret = virSecretLookupByUsage(conn, usageType, StringValueCStr(usageID));
|
93
|
-
_E(secret == NULL, create_error(e_RetrieveError, "virSecretLookupByUsage", "", conn));
|
94
|
-
|
95
|
-
return secret_new(secret, c);
|
96
|
-
}
|
97
|
-
|
98
|
-
/*
|
99
|
-
* call-seq:
|
100
|
-
* conn.define_secret_xml -> Libvirt::Secret
|
101
|
-
*
|
102
|
-
* Call +virSecretDefineXML+[http://www.libvirt.org/html/libvirt-libvirt.html#virSecretDefineXML]
|
103
|
-
*/
|
104
|
-
static VALUE libvirt_conn_define_secret_xml(int argc, VALUE *argv, VALUE c) {
|
105
|
-
virSecretPtr secret;
|
106
|
-
virConnectPtr conn = connect_get(c);
|
107
|
-
VALUE xml, flags;
|
108
|
-
|
109
|
-
rb_scan_args(argc, argv, "11", &xml, &flags);
|
110
|
-
|
111
|
-
if (NIL_P(flags))
|
112
|
-
flags = INT2FIX(0);
|
113
|
-
|
114
|
-
secret = virSecretDefineXML(conn, StringValueCStr(xml), NUM2UINT(flags));
|
115
|
-
_E(secret == NULL, create_error(e_DefinitionError, "virSecretDefineXML", "", conn));
|
116
|
-
|
117
|
-
return secret_new(secret, c);
|
118
|
-
}
|
119
|
-
|
120
43
|
/*
|
121
44
|
* call-seq:
|
122
45
|
* secret.uuid -> string
|
123
46
|
*
|
124
47
|
* Call +virSecretGetUUIDString+[http://www.libvirt.org/html/libvirt-libvirt.html#virSecretGetUUIDString]
|
48
|
+
* to retrieve the UUID for this secret.
|
125
49
|
*/
|
126
50
|
static VALUE libvirt_secret_uuid(VALUE s) {
|
127
51
|
virSecretPtr secret = secret_get(s);
|
@@ -129,7 +53,7 @@ static VALUE libvirt_secret_uuid(VALUE s) {
|
|
129
53
|
char uuid[VIR_UUID_STRING_BUFLEN];
|
130
54
|
|
131
55
|
r = virSecretGetUUIDString(secret, uuid);
|
132
|
-
_E(r < 0, create_error(e_RetrieveError, "virSecretGetUUIDString",
|
56
|
+
_E(r < 0, create_error(e_RetrieveError, "virSecretGetUUIDString", conn(s)));
|
133
57
|
|
134
58
|
return rb_str_new2((char *)uuid);
|
135
59
|
}
|
@@ -139,15 +63,10 @@ static VALUE libvirt_secret_uuid(VALUE s) {
|
|
139
63
|
* secret.usagetype -> fixnum
|
140
64
|
*
|
141
65
|
* Call +virSecretGetUsageType+[http://www.libvirt.org/html/libvirt-libvirt.html#virSecretGetUsageType]
|
66
|
+
* to retrieve the usagetype for this secret.
|
142
67
|
*/
|
143
68
|
static VALUE libvirt_secret_usagetype(VALUE s) {
|
144
|
-
|
145
|
-
int ret;
|
146
|
-
|
147
|
-
ret = virSecretGetUsageType(secret);
|
148
|
-
_E(ret < 0, create_error(e_RetrieveError, "virSecretGetUsageType", "", conn(s)));
|
149
|
-
|
150
|
-
return INT2NUM(ret);
|
69
|
+
gen_call_int(virSecretGetUsageType, conn(s), secret_get(s));
|
151
70
|
}
|
152
71
|
|
153
72
|
/*
|
@@ -155,6 +74,7 @@ static VALUE libvirt_secret_usagetype(VALUE s) {
|
|
155
74
|
* secret.usageid -> string
|
156
75
|
*
|
157
76
|
* Call +virSecretGetUsageID+[http://www.libvirt.org/html/libvirt-libvirt.html#virSecretGetUsageID]
|
77
|
+
* to retrieve the usageid for this secret.
|
158
78
|
*/
|
159
79
|
static VALUE libvirt_secret_usageid(VALUE s) {
|
160
80
|
gen_call_string(virSecretGetUsageID, conn(s), 0, secret_get(s));
|
@@ -162,9 +82,10 @@ static VALUE libvirt_secret_usageid(VALUE s) {
|
|
162
82
|
|
163
83
|
/*
|
164
84
|
* call-seq:
|
165
|
-
* secret.xml_desc -> string
|
85
|
+
* secret.xml_desc(flags=0) -> string
|
166
86
|
*
|
167
87
|
* Call +virSecretGetXMLDesc+[http://www.libvirt.org/html/libvirt-libvirt.html#virSecretGetXMLDesc]
|
88
|
+
* to retrieve the XML for this secret.
|
168
89
|
*/
|
169
90
|
static VALUE libvirt_secret_xml_desc(int argc, VALUE *argv, VALUE s) {
|
170
91
|
VALUE flags;
|
@@ -180,15 +101,14 @@ static VALUE libvirt_secret_xml_desc(int argc, VALUE *argv, VALUE s) {
|
|
180
101
|
|
181
102
|
/*
|
182
103
|
* call-seq:
|
183
|
-
* secret.set_value -> nil
|
104
|
+
* secret.set_value(value, flags=0) -> nil
|
184
105
|
*
|
185
106
|
* Call +virSecretSetValue+[http://www.libvirt.org/html/libvirt-libvirt.html#virSecretSetValue]
|
107
|
+
* to set a new value in this secret.
|
186
108
|
*/
|
187
109
|
static VALUE libvirt_secret_set_value(int argc, VALUE *argv, VALUE s) {
|
188
|
-
virSecretPtr secret = secret_get(s);
|
189
110
|
VALUE flags;
|
190
111
|
VALUE value;
|
191
|
-
int r;
|
192
112
|
|
193
113
|
rb_scan_args(argc, argv, "11", &value, &flags);
|
194
114
|
|
@@ -197,36 +117,48 @@ static VALUE libvirt_secret_set_value(int argc, VALUE *argv, VALUE s) {
|
|
197
117
|
|
198
118
|
StringValue(value);
|
199
119
|
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
_E(r < 0, create_error(e_RetrieveError, "virSecretSetValue", "", conn(s)));
|
204
|
-
|
205
|
-
return Qnil;
|
120
|
+
gen_call_void(virSecretSetValue, conn(s), secret_get(s),
|
121
|
+
(unsigned char *)RSTRING_PTR(value), RSTRING_LEN(value),
|
122
|
+
NUM2UINT(flags));
|
206
123
|
}
|
207
124
|
|
208
125
|
/*
|
209
126
|
* call-seq:
|
210
|
-
* secret.get_value -> string
|
127
|
+
* secret.get_value(flags=0) -> string
|
211
128
|
*
|
212
129
|
* Call +virSecretGetValue+[http://www.libvirt.org/html/libvirt-libvirt.html#virSecretGetValue]
|
130
|
+
* to retrieve the value from this secret.
|
213
131
|
*/
|
214
132
|
static VALUE libvirt_secret_get_value(int argc, VALUE *argv, VALUE s) {
|
215
133
|
virSecretPtr secret = secret_get(s);
|
216
134
|
VALUE flags;
|
217
|
-
unsigned char *
|
135
|
+
unsigned char *val;
|
218
136
|
size_t value_size;
|
137
|
+
VALUE ret;
|
138
|
+
int exception = 0;
|
139
|
+
struct rb_str_new_arg args;
|
219
140
|
|
220
141
|
rb_scan_args(argc, argv, "01", &flags);
|
221
142
|
|
222
143
|
if (NIL_P(flags))
|
223
144
|
flags = INT2FIX(0);
|
224
145
|
|
225
|
-
|
146
|
+
val = virSecretGetValue(secret, &value_size, NUM2UINT(flags));
|
226
147
|
|
227
|
-
_E(
|
148
|
+
_E(val == NULL, create_error(e_RetrieveError, "virSecretGetValue",
|
149
|
+
conn(s)));
|
228
150
|
|
229
|
-
|
151
|
+
args.val = (char *)val;
|
152
|
+
args.size = value_size;
|
153
|
+
ret = rb_protect(rb_str_new_wrap, (VALUE)&args, &exception);
|
154
|
+
if (exception) {
|
155
|
+
free(val);
|
156
|
+
rb_jump_tag(exception);
|
157
|
+
}
|
158
|
+
|
159
|
+
free(val);
|
160
|
+
|
161
|
+
return ret;
|
230
162
|
}
|
231
163
|
|
232
164
|
/*
|
@@ -234,6 +166,7 @@ static VALUE libvirt_secret_get_value(int argc, VALUE *argv, VALUE s) {
|
|
234
166
|
* secret.undefine -> nil
|
235
167
|
*
|
236
168
|
* Call +virSecretUndefine+[http://www.libvirt.org/html/libvirt-libvirt.html#virSecretUndefine]
|
169
|
+
* to undefine this secret.
|
237
170
|
*/
|
238
171
|
static VALUE libvirt_secret_undefine(VALUE s) {
|
239
172
|
gen_call_void(virSecretUndefine, conn(s), secret_get(s));
|
@@ -244,6 +177,7 @@ static VALUE libvirt_secret_undefine(VALUE s) {
|
|
244
177
|
* secret.free -> nil
|
245
178
|
*
|
246
179
|
* Call +virSecretFree+[http://www.libvirt.org/html/libvirt-libvirt.html#virSecretFree]
|
180
|
+
* to free this secret. After this call the secret object is no longer valid.
|
247
181
|
*/
|
248
182
|
static VALUE libvirt_secret_free(VALUE s) {
|
249
183
|
gen_call_free(Secret, s);
|
@@ -263,18 +197,6 @@ void init_secret()
|
|
263
197
|
INT2NUM(VIR_SECRET_USAGE_TYPE_VOLUME));
|
264
198
|
rb_define_attr(c_secret, "connection", 1, 0);
|
265
199
|
|
266
|
-
/* Secret lookup/creation methods */
|
267
|
-
rb_define_method(c_connect, "num_of_secrets",
|
268
|
-
libvirt_conn_num_of_secrets, 0);
|
269
|
-
rb_define_method(c_connect, "list_secrets",
|
270
|
-
libvirt_conn_list_secrets, 0);
|
271
|
-
rb_define_method(c_connect, "lookup_secret_by_uuid",
|
272
|
-
libvirt_conn_lookup_secret_by_uuid, 1);
|
273
|
-
rb_define_method(c_connect, "lookup_secret_by_usage",
|
274
|
-
libvirt_conn_lookup_secret_by_usage, -1);
|
275
|
-
rb_define_method(c_connect, "define_secret_xml",
|
276
|
-
libvirt_conn_define_secret_xml, -1);
|
277
|
-
|
278
200
|
/* Secret object methods */
|
279
201
|
rb_define_method(c_secret, "uuid", libvirt_secret_uuid, 0);
|
280
202
|
rb_define_method(c_secret, "usagetype", libvirt_secret_usagetype, 0);
|