ruby-libvirt 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,6 @@
1
+ #ifndef NWFILTER_H
2
+ #define NWFILTER_H
3
+
4
+ void init_nwfilter();
5
+
6
+ #endif
@@ -0,0 +1,288 @@
1
+ /*
2
+ * secret.c: virSecret methods
3
+ *
4
+ * Copyright (C) 2010 Red Hat Inc.
5
+ *
6
+ * This library is free software; you can redistribute it and/or
7
+ * modify it under the terms of the GNU Lesser General Public
8
+ * License as published by the Free Software Foundation; either
9
+ * version 2.1 of the License, or (at your option) any later version.
10
+ *
11
+ * This library is distributed in the hope that it will be useful,
12
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
+ * Lesser General Public License for more details.
15
+ *
16
+ * You should have received a copy of the GNU Lesser General Public
17
+ * License along with this library; if not, write to the Free Software
18
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19
+ */
20
+
21
+ #include <ruby.h>
22
+ #include <libvirt/libvirt.h>
23
+ #include <libvirt/virterror.h>
24
+ #include "common.h"
25
+ #include "connect.h"
26
+ #include "extconf.h"
27
+
28
+ #if HAVE_TYPE_VIRSECRETPTR
29
+ static VALUE c_secret;
30
+
31
+ static void secret_free(void *s) {
32
+ generic_free(Secret, s);
33
+ }
34
+
35
+ static virSecretPtr secret_get(VALUE s) {
36
+ generic_get(Secret, s);
37
+ }
38
+
39
+ static VALUE secret_new(virSecretPtr s, VALUE conn) {
40
+ return generic_new(c_secret, s, conn, secret_free);
41
+ }
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
+ /*
121
+ * call-seq:
122
+ * secret.uuid -> string
123
+ *
124
+ * Call +virSecretGetUUIDString+[http://www.libvirt.org/html/libvirt-libvirt.html#virSecretGetUUIDString]
125
+ */
126
+ static VALUE libvirt_secret_uuid(VALUE s) {
127
+ virSecretPtr secret = secret_get(s);
128
+ int r;
129
+ char uuid[VIR_UUID_STRING_BUFLEN];
130
+
131
+ r = virSecretGetUUIDString(secret, uuid);
132
+ _E(r < 0, create_error(e_RetrieveError, "virSecretGetUUIDString", "", conn(s)));
133
+
134
+ return rb_str_new2((char *)uuid);
135
+ }
136
+
137
+ /*
138
+ * call-seq:
139
+ * secret.usagetype -> fixnum
140
+ *
141
+ * Call +virSecretGetUsageType+[http://www.libvirt.org/html/libvirt-libvirt.html#virSecretGetUsageType]
142
+ */
143
+ static VALUE libvirt_secret_usagetype(VALUE s) {
144
+ virSecretPtr secret = secret_get(s);
145
+ int ret;
146
+
147
+ ret = virSecretGetUsageType(secret);
148
+ _E(ret < 0, create_error(e_RetrieveError, "virSecretGetUsageType", "", conn(s)));
149
+
150
+ return INT2NUM(ret);
151
+ }
152
+
153
+ /*
154
+ * call-seq:
155
+ * secret.usageid -> string
156
+ *
157
+ * Call +virSecretGetUsageID+[http://www.libvirt.org/html/libvirt-libvirt.html#virSecretGetUsageID]
158
+ */
159
+ static VALUE libvirt_secret_usageid(VALUE s) {
160
+ gen_call_string(virSecretGetUsageID, conn(s), 0, secret_get(s));
161
+ }
162
+
163
+ /*
164
+ * call-seq:
165
+ * secret.xml_desc -> string
166
+ *
167
+ * Call +virSecretGetXMLDesc+[http://www.libvirt.org/html/libvirt-libvirt.html#virSecretGetXMLDesc]
168
+ */
169
+ static VALUE libvirt_secret_xml_desc(int argc, VALUE *argv, VALUE s) {
170
+ VALUE flags;
171
+
172
+ rb_scan_args(argc, argv, "01", &flags);
173
+
174
+ if (NIL_P(flags))
175
+ flags = INT2FIX(0);
176
+
177
+ gen_call_string(virSecretGetXMLDesc, conn(s), 1, secret_get(s),
178
+ NUM2UINT(flags));
179
+ }
180
+
181
+ /*
182
+ * call-seq:
183
+ * secret.set_value -> nil
184
+ *
185
+ * Call +virSecretSetValue+[http://www.libvirt.org/html/libvirt-libvirt.html#virSecretSetValue]
186
+ */
187
+ static VALUE libvirt_secret_set_value(int argc, VALUE *argv, VALUE s) {
188
+ virSecretPtr secret = secret_get(s);
189
+ VALUE flags;
190
+ VALUE value;
191
+ int r;
192
+
193
+ rb_scan_args(argc, argv, "11", &value, &flags);
194
+
195
+ if (NIL_P(flags))
196
+ flags = INT2FIX(0);
197
+
198
+ StringValue(value);
199
+
200
+ r = virSecretSetValue(secret, (unsigned char *)RSTRING(value)->ptr,
201
+ RSTRING(value)->len, NUM2UINT(flags));
202
+
203
+ _E(r < 0, create_error(e_RetrieveError, "virSecretSetValue", "", conn(s)));
204
+
205
+ return Qnil;
206
+ }
207
+
208
+ /*
209
+ * call-seq:
210
+ * secret.get_value -> string
211
+ *
212
+ * Call +virSecretGetValue+[http://www.libvirt.org/html/libvirt-libvirt.html#virSecretGetValue]
213
+ */
214
+ static VALUE libvirt_secret_get_value(int argc, VALUE *argv, VALUE s) {
215
+ virSecretPtr secret = secret_get(s);
216
+ VALUE flags;
217
+ unsigned char *ret;
218
+ size_t value_size;
219
+
220
+ rb_scan_args(argc, argv, "01", &flags);
221
+
222
+ if (NIL_P(flags))
223
+ flags = INT2FIX(0);
224
+
225
+ ret = virSecretGetValue(secret, &value_size, NUM2UINT(flags));
226
+
227
+ _E(ret == NULL, create_error(e_RetrieveError, "virSecretGetValue", "", conn(s)));
228
+
229
+ return rb_str_new((char *)ret, value_size);
230
+ }
231
+
232
+ /*
233
+ * call-seq:
234
+ * secret.undefine -> nil
235
+ *
236
+ * Call +virSecretUndefine+[http://www.libvirt.org/html/libvirt-libvirt.html#virSecretUndefine]
237
+ */
238
+ static VALUE libvirt_secret_undefine(VALUE s) {
239
+ gen_call_void(virSecretUndefine, conn(s), secret_get(s));
240
+ }
241
+
242
+ /*
243
+ * call-seq:
244
+ * secret.free -> nil
245
+ *
246
+ * Call +virSecretFree+[http://www.libvirt.org/html/libvirt-libvirt.html#virSecretFree]
247
+ */
248
+ static VALUE libvirt_secret_free(VALUE s) {
249
+ gen_call_free(Secret, s);
250
+ }
251
+
252
+ #endif
253
+
254
+ /*
255
+ * Class Libvirt::Secret
256
+ */
257
+ void init_secret()
258
+ {
259
+ #if HAVE_TYPE_VIRSECRETPTR
260
+ c_secret = rb_define_class_under(m_libvirt, "Secret", rb_cObject);
261
+
262
+ rb_define_const(c_secret, "USAGE_TYPE_VOLUME",
263
+ INT2NUM(VIR_SECRET_USAGE_TYPE_VOLUME));
264
+ rb_define_attr(c_secret, "connection", 1, 0);
265
+
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
+ /* Secret object methods */
279
+ rb_define_method(c_secret, "uuid", libvirt_secret_uuid, 0);
280
+ rb_define_method(c_secret, "usagetype", libvirt_secret_usagetype, 0);
281
+ rb_define_method(c_secret, "usageid", libvirt_secret_usageid, 0);
282
+ rb_define_method(c_secret, "xml_desc", libvirt_secret_xml_desc, -1);
283
+ rb_define_method(c_secret, "set_value", libvirt_secret_set_value, -1);
284
+ rb_define_method(c_secret, "get_value", libvirt_secret_get_value, -1);
285
+ rb_define_method(c_secret, "undefine", libvirt_secret_undefine, 0);
286
+ rb_define_method(c_secret, "free", libvirt_secret_free, 0);
287
+ #endif
288
+ }
@@ -0,0 +1,6 @@
1
+ #ifndef SECRET_H
2
+ #define SECRET_H
3
+
4
+ void init_secret();
5
+
6
+ #endif
@@ -0,0 +1,825 @@
1
+ /*
2
+ * storage.c: virStoragePool and virStorageVolume methods
3
+ *
4
+ * Copyright (C) 2007,2010 Red Hat Inc.
5
+ *
6
+ * This library is free software; you can redistribute it and/or
7
+ * modify it under the terms of the GNU Lesser General Public
8
+ * License as published by the Free Software Foundation; either
9
+ * version 2.1 of the License, or (at your option) any later version.
10
+ *
11
+ * This library is distributed in the hope that it will be useful,
12
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
+ * Lesser General Public License for more details.
15
+ *
16
+ * You should have received a copy of the GNU Lesser General Public
17
+ * License along with this library; if not, write to the Free Software
18
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19
+ */
20
+
21
+ #include <ruby.h>
22
+ #include <libvirt/libvirt.h>
23
+ #include <libvirt/virterror.h>
24
+ #include "common.h"
25
+ #include "connect.h"
26
+ #include "extconf.h"
27
+
28
+ #if HAVE_TYPE_VIRSTORAGEVOLPTR
29
+ /* this has to be here (as opposed to below with the rest of the volume
30
+ * stuff) because libvirt_vol_get_pool() relies on it
31
+ */
32
+ static virStorageVolPtr vol_get(VALUE s) {
33
+ generic_get(StorageVol, s);
34
+ }
35
+ #endif
36
+
37
+ #if HAVE_TYPE_VIRSTORAGEPOOLPTR
38
+ static VALUE c_storage_pool;
39
+ static VALUE c_storage_pool_info;
40
+
41
+ /*
42
+ * Class Libvirt::StoragePool
43
+ */
44
+
45
+ static void pool_free(void *d) {
46
+ generic_free(StoragePool, d);
47
+ }
48
+
49
+ static virStoragePoolPtr pool_get(VALUE s) {
50
+ generic_get(StoragePool, s);
51
+ }
52
+
53
+ static VALUE pool_new(virStoragePoolPtr n, VALUE conn) {
54
+ return generic_new(c_storage_pool, n, conn, pool_free);
55
+ }
56
+
57
+ /*
58
+ * call-seq:
59
+ * conn.list_storage_pools -> list
60
+ *
61
+ * Call +virConnectListStoragePools+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectListStoragePools]
62
+ */
63
+ static VALUE libvirt_conn_list_storage_pools(VALUE s) {
64
+ gen_conn_list_names(s, StoragePools);
65
+ }
66
+
67
+ /*
68
+ * call-seq:
69
+ * conn.num_of_storage_pools -> fixnum
70
+ *
71
+ * Call +virConnectNumOfStoragePools+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectNumOfStoragePools]
72
+ */
73
+ static VALUE libvirt_conn_num_of_storage_pools(VALUE s) {
74
+ gen_conn_num_of(s, StoragePools);
75
+ }
76
+
77
+ /*
78
+ * call-seq:
79
+ * conn.list_defined_storage_pools -> list
80
+ *
81
+ * Call +virConnectListDefinedStoragePools+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectListDefinedStoragePools]
82
+ */
83
+ static VALUE libvirt_conn_list_defined_storage_pools(VALUE s) {
84
+ gen_conn_list_names(s, DefinedStoragePools);
85
+ }
86
+
87
+ /*
88
+ * call-seq:
89
+ * conn.num_of_defined_storage_pools -> fixnum
90
+ *
91
+ * Call +virConnectNumOfDefinedStoragePools+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectNumOfDefinedStoragePools]
92
+ */
93
+ static VALUE libvirt_conn_num_of_defined_storage_pools(VALUE s) {
94
+ gen_conn_num_of(s, DefinedStoragePools);
95
+ }
96
+
97
+ /*
98
+ * call-seq:
99
+ * conn.lookup_pool_by_name -> Libvirt::StoragePool
100
+ *
101
+ * Call +virStoragePoolLookupByName+[http://www.libvirt.org/html/libvirt-libvirt.html#virStoragePoolLookupByName]
102
+ */
103
+ static VALUE libvirt_conn_lookup_pool_by_name(VALUE c, VALUE name) {
104
+ virStoragePoolPtr pool;
105
+ virConnectPtr conn = connect_get(c);
106
+
107
+ pool = virStoragePoolLookupByName(conn, StringValueCStr(name));
108
+ _E(pool == NULL, create_error(e_RetrieveError, "virStoragePoolLookupByName", "", conn));
109
+
110
+ return pool_new(pool, c);
111
+ }
112
+
113
+ /*
114
+ * call-seq:
115
+ * conn.lookup_pool_by_uuid -> Libvirt::StoragePool
116
+ *
117
+ * Call +virStoragePoolLookupByUUIDString+[http://www.libvirt.org/html/libvirt-libvirt.html#virStoragePoolLookupByUUIDString]
118
+ */
119
+ static VALUE libvirt_conn_lookup_pool_by_uuid(VALUE c, VALUE uuid) {
120
+ virStoragePoolPtr pool;
121
+ virConnectPtr conn = connect_get(c);
122
+
123
+ pool = virStoragePoolLookupByUUIDString(conn, StringValueCStr(uuid));
124
+ _E(pool == NULL, create_error(e_RetrieveError, "virStoragePoolLookupByUUID", "", conn));
125
+
126
+ return pool_new(pool, c);
127
+ }
128
+
129
+ /*
130
+ * call-seq:
131
+ * vol.get_pool -> Libvirt::StoragePool
132
+ *
133
+ * Call +virStoragePoolLookupByVolume+[http://www.libvirt.org/html/libvirt-libvirt.html#virStoragePoolLookupByVolume]
134
+ */
135
+ static VALUE libvirt_vol_get_pool(VALUE v) {
136
+ virStoragePoolPtr pool;
137
+
138
+ pool = virStoragePoolLookupByVolume(vol_get(v));
139
+ _E(pool == NULL, create_error(e_RetrieveError, "virStoragePoolLookupByVolume", "", conn(v)));
140
+
141
+ return pool_new(pool, conn_attr(v));
142
+ }
143
+
144
+ /*
145
+ * call-seq:
146
+ * conn.create_pool_xml -> Libvirt::StoragePool
147
+ *
148
+ * Call +virStoragePoolCreateXML+[http://www.libvirt.org/html/libvirt-libvirt.html#virStoragePoolCreateXML]
149
+ */
150
+ static VALUE libvirt_conn_create_pool_xml(int argc, VALUE *argv, VALUE c) {
151
+ virStoragePoolPtr pool;
152
+ virConnectPtr conn = connect_get(c);
153
+ VALUE xml, flags;
154
+
155
+ rb_scan_args(argc, argv, "11", &xml, &flags);
156
+
157
+ if (NIL_P(flags))
158
+ flags = INT2FIX(0);
159
+
160
+ pool = virStoragePoolCreateXML(conn, StringValueCStr(xml), NUM2UINT(flags));
161
+ _E(pool == NULL, create_error(e_Error, "virStoragePoolCreateXML", "", conn));
162
+
163
+ return pool_new(pool, c);
164
+ }
165
+
166
+ /*
167
+ * call-seq:
168
+ * conn.define_pool_xml -> Libvirt::StoragePool
169
+ *
170
+ * Call +virStoragePoolDefineXML+[http://www.libvirt.org/html/libvirt-libvirt.html#virStoragePoolDefineXML]
171
+ */
172
+ static VALUE libvirt_conn_define_pool_xml(int argc, VALUE *argv, VALUE c) {
173
+ virStoragePoolPtr pool;
174
+ virConnectPtr conn = connect_get(c);
175
+ VALUE xml, flags;
176
+
177
+ rb_scan_args(argc, argv, "11", &xml, &flags);
178
+
179
+ if (NIL_P(flags))
180
+ flags = INT2FIX(0);
181
+
182
+ pool = virStoragePoolDefineXML(conn, StringValueCStr(xml), NUM2UINT(flags));
183
+ _E(pool == NULL, create_error(e_DefinitionError, "virStoragePoolDefineXML", "", conn));
184
+
185
+ return pool_new(pool, c);
186
+ }
187
+
188
+ /*
189
+ * call-seq:
190
+ * conn.find_storage_pool_sources -> string
191
+ *
192
+ * Call +virConnectFindStoragePoolSources+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectFindStoragePoolSources]
193
+ */
194
+ static VALUE libvirt_conn_find_storage_pool_sources(int argc, VALUE *argv, VALUE c) {
195
+ VALUE type, srcSpec_val, flags;
196
+
197
+ rb_scan_args(argc, argv, "12", &type, &srcSpec_val, &flags);
198
+
199
+ if (NIL_P(flags))
200
+ flags = INT2FIX(0);
201
+
202
+ gen_call_string(virConnectFindStoragePoolSources, conn(c), 1,
203
+ connect_get(c), StringValueCStr(type),
204
+ get_string_or_nil(srcSpec_val), NUM2UINT(flags));
205
+ }
206
+
207
+ /*
208
+ * call-seq:
209
+ * pool.build -> nil
210
+ *
211
+ * Call +virStoragePoolBuild+[http://www.libvirt.org/html/libvirt-libvirt.html#virStoragePoolBuild]
212
+ */
213
+ static VALUE libvirt_pool_build(int argc, VALUE *argv, VALUE p) {
214
+ VALUE flags;
215
+
216
+ rb_scan_args(argc, argv, "01", &flags);
217
+
218
+ if (NIL_P(flags))
219
+ flags = INT2FIX(0);
220
+
221
+ gen_call_void(virStoragePoolBuild, conn(p), pool_get(p), NUM2UINT(flags));
222
+ }
223
+
224
+ /*
225
+ * call-seq:
226
+ * pool.undefine -> nil
227
+ *
228
+ * Call +virStoragePoolUndefine+[http://www.libvirt.org/html/libvirt-libvirt.html#virStoragePoolUndefine]
229
+ */
230
+ static VALUE libvirt_pool_undefine(VALUE p) {
231
+ gen_call_void(virStoragePoolUndefine, conn(p), pool_get(p));
232
+ }
233
+
234
+ /*
235
+ * call-seq:
236
+ * pool.create -> nil
237
+ *
238
+ * Call +virStoragePoolCreate+[http://www.libvirt.org/html/libvirt-libvirt.html#virStoragePoolCreate]
239
+ */
240
+ static VALUE libvirt_pool_create(int argc, VALUE *argv, VALUE p) {
241
+ VALUE flags;
242
+
243
+ rb_scan_args(argc, argv, "01", &flags);
244
+
245
+ if (NIL_P(flags))
246
+ flags = INT2FIX(0);
247
+
248
+ gen_call_void(virStoragePoolCreate, conn(p), pool_get(p), NUM2UINT(flags));
249
+ }
250
+
251
+ /*
252
+ * call-seq:
253
+ * pool.destroy -> nil
254
+ *
255
+ * Call +virStoragePoolDestroy+[http://www.libvirt.org/html/libvirt-libvirt.html#virStoragePoolDestroy]
256
+ */
257
+ static VALUE libvirt_pool_destroy(VALUE p) {
258
+ gen_call_void(virStoragePoolDestroy, conn(p), pool_get(p));
259
+ }
260
+
261
+ /*
262
+ * call-seq:
263
+ * pool.delete -> nil
264
+ *
265
+ * Call +virStoragePoolDelete+[http://www.libvirt.org/html/libvirt-libvirt.html#virStoragePoolDelete]
266
+ */
267
+ static VALUE libvirt_pool_delete(int argc, VALUE *argv, VALUE p) {
268
+ VALUE flags;
269
+
270
+ rb_scan_args(argc, argv, "01", &flags);
271
+
272
+ if (NIL_P(flags))
273
+ flags = INT2FIX(0);
274
+
275
+ gen_call_void(virStoragePoolDelete, conn(p), pool_get(p), NUM2UINT(flags));
276
+ }
277
+
278
+ /*
279
+ * call-seq:
280
+ * pool.refresh -> nil
281
+ *
282
+ * Call +virStoragePoolRefresh+[http://www.libvirt.org/html/libvirt-libvirt.html#virStoragePoolRefresh]
283
+ */
284
+ static VALUE libvirt_pool_refresh(int argc, VALUE *argv, VALUE p) {
285
+ VALUE flags;
286
+
287
+ rb_scan_args(argc, argv, "01", &flags);
288
+
289
+ if (NIL_P(flags))
290
+ flags = INT2FIX(0);
291
+
292
+ gen_call_void(virStoragePoolRefresh, conn(p), pool_get(p), NUM2UINT(flags));
293
+ }
294
+
295
+ /*
296
+ * call-seq:
297
+ * pool.name -> string
298
+ *
299
+ * Call +virStoragePoolGetName+[http://www.libvirt.org/html/libvirt-libvirt.html#virStoragePoolGetName]
300
+ */
301
+ static VALUE libvirt_pool_name(VALUE s) {
302
+ gen_call_string(virStoragePoolGetName, conn(s), 0, pool_get(s));
303
+ }
304
+
305
+ /*
306
+ * call-seq:
307
+ * pool.uuid -> string
308
+ *
309
+ * Call +virStoragePoolGetUUIDString+[http://www.libvirt.org/html/libvirt-libvirt.html#virStoragePoolGetUUIDString]
310
+ */
311
+ static VALUE libvirt_pool_uuid(VALUE s) {
312
+ char uuid[VIR_UUID_STRING_BUFLEN];
313
+ int r;
314
+
315
+ r = virStoragePoolGetUUIDString(pool_get(s), uuid);
316
+ _E(r < 0, create_error(e_RetrieveError, "virStoragePoolGetUUIDString", "", conn(s)));
317
+
318
+ return rb_str_new2((char *) uuid);
319
+ }
320
+
321
+ /*
322
+ * call-seq:
323
+ * pool.info -> Libvirt::StoragePoolInfo
324
+ *
325
+ * Call +virStoragePoolGetInfo+[http://www.libvirt.org/html/libvirt-libvirt.html#virStoragePoolGetInfo]
326
+ */
327
+ static VALUE libvirt_pool_info(VALUE s) {
328
+ virStoragePoolInfo info;
329
+ int r;
330
+ VALUE result;
331
+
332
+ r = virStoragePoolGetInfo(pool_get(s), &info);
333
+ _E(r < 0, create_error(e_RetrieveError, "virStoragePoolGetInfo", "", conn(s)));
334
+
335
+ result = rb_class_new_instance(0, NULL, c_storage_pool_info);
336
+ rb_iv_set(result, "@state", INT2FIX(info.state));
337
+ rb_iv_set(result, "@capacity", ULL2NUM(info.capacity));
338
+ rb_iv_set(result, "@allocation", ULL2NUM(info.allocation));
339
+ rb_iv_set(result, "@available", ULL2NUM(info.available));
340
+
341
+ return result;
342
+ }
343
+
344
+ /*
345
+ * call-seq:
346
+ * pool.xml_desc -> string
347
+ *
348
+ * Call +virStoragePoolGetXMLDesc+[http://www.libvirt.org/html/libvirt-libvirt.html#virStoragePoolGetXMLDesc]
349
+ */
350
+ static VALUE libvirt_pool_xml_desc(int argc, VALUE *argv, VALUE s) {
351
+ VALUE flags;
352
+
353
+ rb_scan_args(argc, argv, "01", &flags);
354
+
355
+ if (NIL_P(flags))
356
+ flags = INT2FIX(0);
357
+
358
+ gen_call_string(virStoragePoolGetXMLDesc, conn(s), 1, pool_get(s),
359
+ NUM2UINT(flags));
360
+ }
361
+
362
+ /*
363
+ * call-seq:
364
+ * pool.autostart? -> [true|false]
365
+ *
366
+ * Call +virStoragePoolGetAutostart+[http://www.libvirt.org/html/libvirt-libvirt.html#virStoragePoolGetAutostart]
367
+ */
368
+ static VALUE libvirt_pool_autostart(VALUE s){
369
+ int r, autostart;
370
+
371
+ r = virStoragePoolGetAutostart(pool_get(s), &autostart);
372
+ _E(r < 0, create_error(e_RetrieveError, "virStoragePoolGetAutostart", "", conn(s)));
373
+
374
+ return autostart ? Qtrue : Qfalse;
375
+ }
376
+
377
+ /*
378
+ * call-seq:
379
+ * pool.autostart_set -> nil
380
+ *
381
+ * Call +virStoragePoolSetAutostart+[http://www.libvirt.org/html/libvirt-libvirt.html#virStoragePoolSetAutostart]
382
+ */
383
+ static VALUE libvirt_pool_autostart_set(VALUE s, VALUE autostart) {
384
+ gen_call_void(virStoragePoolSetAutostart, conn(s), pool_get(s),
385
+ RTEST(autostart) ? 1 : 0);
386
+ }
387
+
388
+ /*
389
+ * call-seq:
390
+ * pool.num_of_volumes -> fixnum
391
+ *
392
+ * Call +virStoragePoolNumOfVolumes+[http://www.libvirt.org/html/libvirt-libvirt.html#virStoragePoolNumOfVolumes]
393
+ */
394
+ static VALUE libvirt_pool_num_of_volumes(VALUE s) {
395
+ int n = virStoragePoolNumOfVolumes(pool_get(s));
396
+ _E(n < 0, create_error(e_RetrieveError, "virStoragePoolNumOfVolumes", "", conn(s)));
397
+
398
+ return INT2FIX(n);
399
+ }
400
+
401
+ /*
402
+ * call-seq:
403
+ * pool.list_volumes -> list
404
+ *
405
+ * Call +virStoragePoolListVolumes+[http://www.libvirt.org/html/libvirt-libvirt.html#virStoragePoolListVolumes]
406
+ */
407
+ static VALUE libvirt_pool_list_volumes(VALUE s) {
408
+ int i, r, num;
409
+ char **names;
410
+ virStoragePoolPtr pool = pool_get(s);
411
+ VALUE result;
412
+
413
+ num = virStoragePoolNumOfVolumes(pool);
414
+ _E(num < 0, create_error(e_RetrieveError, "virStoragePoolNumOfVolumes", "", conn(s)));
415
+ if (num == 0) {
416
+ result = rb_ary_new2(num);
417
+ return result;
418
+ }
419
+
420
+ names = ALLOC_N(char *, num);
421
+ r = virStoragePoolListVolumes(pool, names, num);
422
+ if (r < 0) {
423
+ free(names);
424
+ _E(r < 0, create_error(e_RetrieveError, "virStoragePoolListVolumes", "", conn(s)));
425
+ }
426
+
427
+ result = rb_ary_new2(num);
428
+ for (i=0; i<num; i++) {
429
+ rb_ary_push(result, rb_str_new2(names[i]));
430
+ free(names[i]);
431
+ }
432
+ free(names);
433
+ return result;
434
+ }
435
+
436
+ /*
437
+ * call-seq:
438
+ * pool.free -> nil
439
+ *
440
+ * Call +virStoragePoolFree+[http://www.libvirt.org/html/libvirt-libvirt.html#virStoragePoolFree]
441
+ */
442
+ static VALUE libvirt_pool_free(VALUE s) {
443
+ gen_call_free(StoragePool, s);
444
+ }
445
+ #endif
446
+
447
+ #if HAVE_TYPE_VIRSTORAGEVOLPTR
448
+ /*
449
+ * Libvirt::StorageVol
450
+ */
451
+ static VALUE c_storage_vol;
452
+ static VALUE c_storage_vol_info;
453
+
454
+ static void vol_free(void *d) {
455
+ generic_free(StorageVol, d);
456
+ }
457
+
458
+ static VALUE vol_new(virStorageVolPtr n, VALUE conn) {
459
+ return generic_new(c_storage_vol, n, conn, vol_free);
460
+ }
461
+
462
+ /*
463
+ * call-seq:
464
+ * pool.lookup_vol_by_name -> Libvirt::StorageVol
465
+ *
466
+ * Call +virStorageVolLookupByName+[http://www.libvirt.org/html/libvirt-libvirt.html#virStorageVolLookupByName]
467
+ */
468
+ static VALUE libvirt_pool_lookup_vol_by_name(VALUE p, VALUE name) {
469
+ virStorageVolPtr vol;
470
+
471
+ vol = virStorageVolLookupByName(pool_get(p), StringValueCStr(name));
472
+ _E(vol == NULL, create_error(e_RetrieveError, "virStorageVolLookupByName", "", conn(p)));
473
+
474
+ return vol_new(vol, conn_attr(p));
475
+ }
476
+
477
+ /*
478
+ * call-seq:
479
+ * pool.lookup_vol_by_key -> Libvirt::StorageVol
480
+ *
481
+ * Call +virStorageVolLookupByKey+[http://www.libvirt.org/html/libvirt-libvirt.html#virStorageVolLookupByKey]
482
+ */
483
+ static VALUE libvirt_pool_lookup_vol_by_key(VALUE p, VALUE key) {
484
+ virStorageVolPtr vol;
485
+
486
+ // FIXME: Why does this take a connection, not a pool ?
487
+ vol = virStorageVolLookupByKey(conn(p), StringValueCStr(key));
488
+ _E(vol == NULL, create_error(e_RetrieveError, "virStorageVolLookupByKey", "", conn(p)));
489
+
490
+ return vol_new(vol, conn_attr(p));
491
+ }
492
+
493
+ /*
494
+ * call-seq:
495
+ * pool.lookup_vol_by_path -> Libvirt::StorageVol
496
+ *
497
+ * Call +virStorageVolLookupByPath+[http://www.libvirt.org/html/libvirt-libvirt.html#virStorageVolLookupByPath]
498
+ */
499
+ static VALUE libvirt_pool_lookup_vol_by_path(VALUE p, VALUE path) {
500
+ virStorageVolPtr vol;
501
+
502
+ // FIXME: Why does this take a connection, not a pool ?
503
+ vol = virStorageVolLookupByPath(conn(p), StringValueCStr(path));
504
+ _E(vol == NULL, create_error(e_RetrieveError, "virStorageVolLookupByPath", "", conn(p)));
505
+
506
+ return vol_new(vol, conn_attr(p));
507
+ }
508
+
509
+ /*
510
+ * call-seq:
511
+ * vol.name -> string
512
+ *
513
+ * Call +virStorageVolGetName+[http://www.libvirt.org/html/libvirt-libvirt.html#virStorageVolGetName]
514
+ */
515
+ static VALUE libvirt_vol_name(VALUE v) {
516
+ gen_call_string(virStorageVolGetName, conn(v), 0, vol_get(v));
517
+ }
518
+
519
+ /*
520
+ * call-seq:
521
+ * vol.key -> string
522
+ *
523
+ * Call +virStorageVolGetKey+[http://www.libvirt.org/html/libvirt-libvirt.html#virStorageVolGetKey]
524
+ */
525
+ static VALUE libvirt_vol_key(VALUE v) {
526
+ gen_call_string(virStorageVolGetKey, conn(v), 0, vol_get(v));
527
+ }
528
+
529
+ /*
530
+ * call-seq:
531
+ * pool.vol_create_xml -> Libvirt::StorageVol
532
+ *
533
+ * Call +virStorageVolCreateXML+[http://www.libvirt.org/html/libvirt-libvirt.html#virStorageVolCreateXML]
534
+ */
535
+ static VALUE libvirt_pool_vol_create_xml(int argc, VALUE *argv, VALUE p) {
536
+ virStorageVolPtr vol;
537
+ virConnectPtr c = conn(p);
538
+ VALUE xml, flags;
539
+
540
+ rb_scan_args(argc, argv, "11", &xml, &flags);
541
+
542
+ if (NIL_P(flags))
543
+ flags = INT2FIX(0);
544
+
545
+ vol = virStorageVolCreateXML(pool_get(p), StringValueCStr(xml),
546
+ NUM2UINT(flags));
547
+ _E(vol == NULL, create_error(e_Error, "virNetworkCreateXML", "", c));
548
+
549
+ return vol_new(vol, conn_attr(p));
550
+ }
551
+
552
+ /*
553
+ * call-seq:
554
+ * pool.vol_create_xml_from -> Libvirt::StorageVol
555
+ *
556
+ * Call +virStorageVolCreateXML+[http://www.libvirt.org/html/libvirt-libvirt.html#virStorageVolCreateXML]
557
+ */
558
+ static VALUE libvirt_pool_vol_create_xml_from(int argc, VALUE *argv, VALUE p) {
559
+ virStorageVolPtr vol;
560
+ virConnectPtr c = conn(p);
561
+ VALUE xml, flags, cloneval;
562
+
563
+ rb_scan_args(argc, argv, "21", &xml, &cloneval, &flags);
564
+
565
+ if (NIL_P(flags))
566
+ flags = INT2FIX(0);
567
+
568
+ vol = virStorageVolCreateXMLFrom(pool_get(p), StringValueCStr(xml),
569
+ vol_get(cloneval), NUM2UINT(flags));
570
+ _E(vol == NULL, create_error(e_Error, "virNetworkCreateXMLFrom", "", c));
571
+
572
+ return vol_new(vol, conn_attr(p));
573
+ }
574
+
575
+ #if HAVE_VIRSTORAGEPOOLISACTIVE
576
+ /*
577
+ * call-seq:
578
+ * pool.active? -> [true|false]
579
+ *
580
+ * Call +virStoragePoolIsActive+[http://www.libvirt.org/html/libvirt-libvirt.html#virStoragePoolIsActive]
581
+ */
582
+ static VALUE libvirt_pool_active_p(VALUE p) {
583
+ gen_call_truefalse(virStoragePoolIsActive, conn(p), pool_get(p));
584
+ }
585
+ #endif
586
+
587
+ #if HAVE_VIRSTORAGEPOOLISPERSISTENT
588
+ /*
589
+ * call-seq:
590
+ * pool.persistent? -> [true|false]
591
+ *
592
+ * Call +virStoragePoolIsPersistent+[http://www.libvirt.org/html/libvirt-libvirt.html#virStoragePoolIsPersistent]
593
+ */
594
+ static VALUE libvirt_pool_persistent_p(VALUE p) {
595
+ gen_call_truefalse(virStoragePoolIsPersistent, conn(p), pool_get(p));
596
+ }
597
+ #endif
598
+
599
+ /*
600
+ * call-seq:
601
+ * vol.delete -> nil
602
+ *
603
+ * Call +virStorageVolDelete+[http://www.libvirt.org/html/libvirt-libvirt.html#virStorageVolDelete]
604
+ */
605
+ static VALUE libvirt_vol_delete(int argc, VALUE *argv, VALUE v) {
606
+ VALUE flags;
607
+
608
+ rb_scan_args(argc, argv, "01", &flags);
609
+
610
+ if (NIL_P(flags))
611
+ flags = INT2FIX(0);
612
+
613
+ gen_call_void(virStorageVolDelete, conn(v), vol_get(v), NUM2UINT(flags));
614
+ }
615
+
616
+ #if HAVE_VIRSTORAGEVOLWIPE
617
+ /*
618
+ * call-seq:
619
+ * vol.wipe -> nil
620
+ *
621
+ * Call +virStorageVolWipe+[http://www.libvirt.org/html/libvirt-libvirt.html#virStorageVolWipe]
622
+ */
623
+ static VALUE libvirt_vol_wipe(int argc, VALUE *argv, VALUE v) {
624
+ VALUE flags;
625
+
626
+ rb_scan_args(argc, argv, "01", &flags);
627
+
628
+ if (NIL_P(flags))
629
+ flags = INT2FIX(0);
630
+
631
+ gen_call_void(virStorageVolWipe, conn(v), vol_get(v), NUM2UINT(flags));
632
+ }
633
+ #endif
634
+
635
+ /*
636
+ * call-seq:
637
+ * vol.info -> Libvirt::StorageVolInfo
638
+ *
639
+ * Call +virStorageVolGetInfo+[http://www.libvirt.org/html/libvirt-libvirt.html#virStorageVolGetInfo]
640
+ */
641
+ static VALUE libvirt_vol_info(VALUE v) {
642
+ virStorageVolInfo info;
643
+ int r;
644
+ VALUE result;
645
+
646
+ r = virStorageVolGetInfo(vol_get(v), &info);
647
+ _E(r < 0, create_error(e_RetrieveError, "virStorageVolGetInfo", "", conn(v)));
648
+
649
+ result = rb_class_new_instance(0, NULL, c_storage_vol_info);
650
+ rb_iv_set(result, "@type", INT2NUM(info.type));
651
+ rb_iv_set(result, "@capacity", ULL2NUM(info.capacity));
652
+ rb_iv_set(result, "@allocation", ULL2NUM(info.allocation));
653
+
654
+ return result;
655
+ }
656
+
657
+ /*
658
+ * call-seq:
659
+ * vol.xml_desc -> string
660
+ *
661
+ * Call +virStorageVolGetXMLDesc+[http://www.libvirt.org/html/libvirt-libvirt.html#virStorageVolGetXMLDesc]
662
+ */
663
+ static VALUE libvirt_vol_xml_desc(int argc, VALUE *argv, VALUE v) {
664
+ VALUE flags;
665
+
666
+ rb_scan_args(argc, argv, "01", &flags);
667
+
668
+ if (NIL_P(flags))
669
+ flags = INT2FIX(0);
670
+
671
+ gen_call_string(virStorageVolGetXMLDesc, conn(v), 1, vol_get(v),
672
+ NUM2UINT(flags));
673
+ }
674
+
675
+ /*
676
+ * call-seq:
677
+ * vol.path -> string
678
+ *
679
+ * Call +virStorageVolGetPath+[http://www.libvirt.org/html/libvirt-libvirt.html#virStorageVolGetPath]
680
+ */
681
+ static VALUE libvirt_vol_path(VALUE v) {
682
+ gen_call_string(virStorageVolGetPath, conn(v), 1, vol_get(v));
683
+ }
684
+
685
+ /*
686
+ * call-seq:
687
+ * vol.free -> nil
688
+ *
689
+ * Call +virStorageVolFree+[http://www.libvirt.org/html/libvirt-libvirt.html#virStorageVolFree]
690
+ */
691
+ static VALUE libvirt_vol_free(VALUE s) {
692
+ gen_call_free(StorageVol, s);
693
+ }
694
+ #endif
695
+
696
+ void init_storage(void) {
697
+ /*
698
+ * Class Libvirt::StoragePool and Libvirt::StoragePoolInfo
699
+ */
700
+ #if HAVE_TYPE_VIRSTORAGEPOOLPTR
701
+ c_storage_pool_info = rb_define_class_under(m_libvirt, "StoragePoolInfo",
702
+ rb_cObject);
703
+ rb_define_attr(c_storage_pool_info, "state", 1, 0);
704
+ rb_define_attr(c_storage_pool_info, "capacity", 1, 0);
705
+ rb_define_attr(c_storage_pool_info, "allocation", 1, 0);
706
+ rb_define_attr(c_storage_pool_info, "available", 1, 0);
707
+
708
+ c_storage_pool = rb_define_class_under(m_libvirt, "StoragePool",
709
+ rb_cObject);
710
+ #define DEF_POOLCONST(name) \
711
+ rb_define_const(c_storage_pool, #name, INT2NUM(VIR_STORAGE_POOL_##name))
712
+ /* virStoragePoolState */
713
+ DEF_POOLCONST(INACTIVE);
714
+ DEF_POOLCONST(BUILDING);
715
+ DEF_POOLCONST(RUNNING);
716
+ DEF_POOLCONST(DEGRADED);
717
+ #ifdef VIR_STORAGE_POOL_INACCESSIBLE
718
+ DEF_POOLCONST(INACCESSIBLE);
719
+ #endif
720
+ /* virStoragePoolBuildFlags */
721
+ DEF_POOLCONST(BUILD_NEW);
722
+ DEF_POOLCONST(BUILD_REPAIR);
723
+ DEF_POOLCONST(BUILD_RESIZE);
724
+ /* virStoragePoolDeleteFlags */
725
+ DEF_POOLCONST(DELETE_NORMAL);
726
+ DEF_POOLCONST(DELETE_ZEROED);
727
+ #undef DEF_POOLCONST
728
+
729
+ /* StoragePool lookup/creation methods */
730
+ rb_define_method(c_connect, "num_of_storage_pools",
731
+ libvirt_conn_num_of_storage_pools, 0);
732
+ rb_define_method(c_connect, "list_storage_pools",
733
+ libvirt_conn_list_storage_pools, 0);
734
+ rb_define_method(c_connect, "num_of_defined_storage_pools",
735
+ libvirt_conn_num_of_defined_storage_pools, 0);
736
+ rb_define_method(c_connect, "list_defined_storage_pools",
737
+ libvirt_conn_list_defined_storage_pools, 0);
738
+ rb_define_method(c_connect, "lookup_storage_pool_by_name",
739
+ libvirt_conn_lookup_pool_by_name, 1);
740
+ rb_define_method(c_connect, "lookup_storage_pool_by_uuid",
741
+ libvirt_conn_lookup_pool_by_uuid, 1);
742
+ rb_define_method(c_connect, "create_storage_pool_xml",
743
+ libvirt_conn_create_pool_xml, -1);
744
+ rb_define_method(c_connect, "define_storage_pool_xml",
745
+ libvirt_conn_define_pool_xml, -1);
746
+ rb_define_method(c_connect, "discover_storage_pool_sources",
747
+ libvirt_conn_find_storage_pool_sources, -1);
748
+
749
+ /* Creating/destroying pools */
750
+ rb_define_method(c_storage_pool, "build", libvirt_pool_build, -1);
751
+ rb_define_method(c_storage_pool, "undefine", libvirt_pool_undefine, 0);
752
+ rb_define_method(c_storage_pool, "create", libvirt_pool_create, -1);
753
+ rb_define_method(c_storage_pool, "destroy", libvirt_pool_destroy, 0);
754
+ rb_define_method(c_storage_pool, "delete", libvirt_pool_delete, -1);
755
+ rb_define_method(c_storage_pool, "refresh", libvirt_pool_refresh, -1);
756
+ /* StoragePool information */
757
+ rb_define_method(c_storage_pool, "name", libvirt_pool_name, 0);
758
+ rb_define_method(c_storage_pool, "uuid", libvirt_pool_uuid, 0);
759
+ rb_define_method(c_storage_pool, "info", libvirt_pool_info, 0);
760
+ rb_define_method(c_storage_pool, "xml_desc", libvirt_pool_xml_desc, -1);
761
+ rb_define_method(c_storage_pool, "autostart", libvirt_pool_autostart, 0);
762
+ rb_define_method(c_storage_pool, "autostart?", libvirt_pool_autostart, 0);
763
+ rb_define_method(c_storage_pool, "autostart=",
764
+ libvirt_pool_autostart_set, 1);
765
+ /* List/lookup storage volumes within a pool */
766
+ rb_define_method(c_storage_pool, "num_of_volumes",
767
+ libvirt_pool_num_of_volumes, 0);
768
+ rb_define_method(c_storage_pool, "list_volumes",
769
+ libvirt_pool_list_volumes, 0);
770
+ /* Lookup volumes based on various attributes */
771
+ rb_define_method(c_storage_pool, "lookup_volume_by_name",
772
+ libvirt_pool_lookup_vol_by_name, 1);
773
+ rb_define_method(c_storage_pool, "lookup_volume_by_key",
774
+ libvirt_pool_lookup_vol_by_key, 1);
775
+ rb_define_method(c_storage_pool, "lookup_volume_by_path",
776
+ libvirt_pool_lookup_vol_by_path, 1);
777
+ rb_define_method(c_storage_pool, "free", libvirt_pool_free, 0);
778
+ rb_define_method(c_storage_pool, "create_vol_xml",
779
+ libvirt_pool_vol_create_xml, -1);
780
+ rb_define_method(c_storage_pool, "create_vol_xml_from",
781
+ libvirt_pool_vol_create_xml_from, -1);
782
+ #if HAVE_VIRSTORAGEPOOLISACTIVE
783
+ rb_define_method(c_storage_pool, "active?", libvirt_pool_active_p, 0);
784
+ #endif
785
+ #if HAVE_VIRSTORAGEPOOLISPERSISTENT
786
+ rb_define_method(c_storage_pool, "persistent?",
787
+ libvirt_pool_persistent_p, 0);
788
+ #endif
789
+ #endif
790
+
791
+ #if HAVE_TYPE_VIRSTORAGEVOLPTR
792
+ /*
793
+ * Class Libvirt::StorageVol and Libvirt::StorageVolInfo
794
+ */
795
+ c_storage_vol_info = rb_define_class_under(m_libvirt, "StorageVolInfo",
796
+ rb_cObject);
797
+ rb_define_attr(c_storage_vol_info, "type", 1, 0);
798
+ rb_define_attr(c_storage_vol_info, "capacity", 1, 0);
799
+ rb_define_attr(c_storage_vol_info, "allocation", 1, 0);
800
+
801
+ c_storage_vol = rb_define_class_under(m_libvirt, "StorageVol",
802
+ rb_cObject);
803
+ #define DEF_VOLCONST(name) \
804
+ rb_define_const(c_storage_vol, #name, INT2NUM(VIR_STORAGE_VOL_##name))
805
+ /* virStorageVolType */
806
+ DEF_VOLCONST(FILE);
807
+ DEF_VOLCONST(BLOCK);
808
+ /* virStorageVolDeleteFlags */
809
+ DEF_VOLCONST(DELETE_NORMAL);
810
+ DEF_VOLCONST(DELETE_ZEROED);
811
+ #undef DEF_VOLCONST
812
+
813
+ rb_define_method(c_storage_vol, "pool", libvirt_vol_get_pool, 0);
814
+ rb_define_method(c_storage_vol, "name", libvirt_vol_name, 0);
815
+ rb_define_method(c_storage_vol, "key", libvirt_vol_key, 0);
816
+ rb_define_method(c_storage_vol, "delete", libvirt_vol_delete, -1);
817
+ #if HAVE_VIRSTORAGEVOLWIPE
818
+ rb_define_method(c_storage_vol, "wipe", libvirt_vol_wipe, -1);
819
+ #endif
820
+ rb_define_method(c_storage_vol, "info", libvirt_vol_info, 0);
821
+ rb_define_method(c_storage_vol, "xml_desc", libvirt_vol_xml_desc, -1);
822
+ rb_define_method(c_storage_vol, "path", libvirt_vol_path, 0);
823
+ rb_define_method(c_storage_vol, "free", libvirt_vol_free, 0);
824
+ #endif
825
+ }