ruby-libvirt 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +16 -2
- data/Rakefile +8 -6
- data/ext/libvirt/_libvirt.c +85 -1872
- data/ext/libvirt/common.c +75 -0
- data/ext/libvirt/common.h +155 -0
- data/ext/libvirt/connect.c +392 -0
- data/ext/libvirt/connect.h +12 -0
- data/ext/libvirt/domain.c +1606 -0
- data/ext/libvirt/domain.h +8 -0
- data/ext/libvirt/extconf.rb +30 -1
- data/ext/libvirt/interface.c +259 -0
- data/ext/libvirt/interface.h +6 -0
- data/ext/libvirt/network.c +338 -0
- data/ext/libvirt/network.h +6 -0
- data/ext/libvirt/nodedevice.c +333 -0
- data/ext/libvirt/nodedevice.h +6 -0
- data/ext/libvirt/nwfilter.c +206 -0
- data/ext/libvirt/nwfilter.h +6 -0
- data/ext/libvirt/secret.c +288 -0
- data/ext/libvirt/secret.h +6 -0
- data/ext/libvirt/storage.c +825 -0
- data/ext/libvirt/storage.h +6 -0
- data/tests/tc_connect.rb +1 -1
- data/tests/test_conn.rb +53 -0
- data/tests/test_domain.rb +165 -0
- data/tests/test_interface.rb +35 -0
- data/tests/test_network.rb +40 -0
- data/tests/test_nodedevice.rb +23 -0
- data/tests/test_nwfilter.rb +28 -0
- data/tests/test_open.rb +23 -0
- data/tests/test_secret.rb +33 -0
- data/tests/test_storage.rb +49 -0
- metadata +58 -14
- data/ext/libvirt/extconf.h +0 -6
data/ext/libvirt/extconf.rb
CHANGED
@@ -18,9 +18,38 @@ end
|
|
18
18
|
|
19
19
|
libvirt_types = [ 'virNetworkPtr',
|
20
20
|
'virStoragePoolPtr',
|
21
|
-
'virStorageVolPtr'
|
21
|
+
'virStorageVolPtr',
|
22
|
+
'virSecretPtr',
|
23
|
+
'virNWFilterPtr',
|
24
|
+
'virInterfacePtr',
|
25
|
+
'virDomainBlockInfoPtr',
|
26
|
+
'virDomainMemoryStatPtr',
|
27
|
+
'virDomainSnapshotPtr',
|
28
|
+
'virDomainJobInfoPtr',
|
29
|
+
]
|
30
|
+
|
31
|
+
libvirt_funcs = [ 'virStorageVolWipe',
|
32
|
+
'virStoragePoolIsActive',
|
33
|
+
'virStoragePoolIsPersistent',
|
34
|
+
'virConnectGetLibVersion',
|
35
|
+
'virConnectIsEncrypted',
|
36
|
+
'virConnectIsSecure',
|
37
|
+
'virNetworkIsActive',
|
38
|
+
'virNetworkIsPersistent',
|
39
|
+
'virNodeDeviceCreateXML',
|
40
|
+
'virNodeDeviceDestroy',
|
41
|
+
'virInterfaceIsActive',
|
42
|
+
'virDomainMigrateToURI',
|
43
|
+
'virDomainMigrateSetMaxDowntime',
|
44
|
+
'virDomainManagedSave',
|
45
|
+
'virDomainIsActive',
|
46
|
+
'virDomainIsPersistent',
|
47
|
+
'virConnectDomainXMLFromNative',
|
48
|
+
'virConnectDomainXMLToNative',
|
49
|
+
]
|
22
50
|
|
23
51
|
have_libvirt_types(libvirt_types)
|
52
|
+
have_libvirt_funcs(libvirt_funcs)
|
24
53
|
|
25
54
|
create_header
|
26
55
|
create_makefile(extension_name)
|
@@ -0,0 +1,259 @@
|
|
1
|
+
/*
|
2
|
+
* interface.c: virInterface 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_VIRINTERFACEPTR
|
29
|
+
static VALUE c_interface;
|
30
|
+
|
31
|
+
static void interface_free(void *i) {
|
32
|
+
generic_free(Interface, i);
|
33
|
+
}
|
34
|
+
|
35
|
+
static virInterfacePtr interface_get(VALUE s) {
|
36
|
+
generic_get(Interface, s);
|
37
|
+
}
|
38
|
+
|
39
|
+
static VALUE interface_new(virInterfacePtr i, VALUE conn) {
|
40
|
+
return generic_new(c_interface, i, conn, interface_free);
|
41
|
+
}
|
42
|
+
|
43
|
+
/*
|
44
|
+
* call-seq:
|
45
|
+
* conn.num_of_interfaces -> fixnum
|
46
|
+
*
|
47
|
+
* Call +virConnectNumOfInterfaces+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectNumOfInterfaces]
|
48
|
+
*/
|
49
|
+
static VALUE libvirt_conn_num_of_interfaces(VALUE s) {
|
50
|
+
gen_conn_num_of(s, Interfaces);
|
51
|
+
}
|
52
|
+
|
53
|
+
/*
|
54
|
+
* call-seq:
|
55
|
+
* conn.list_interfaces -> list
|
56
|
+
*
|
57
|
+
* Call +virConnectListInterfaces+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectListInterfaces]
|
58
|
+
*/
|
59
|
+
static VALUE libvirt_conn_list_interfaces(VALUE s) {
|
60
|
+
gen_conn_list_names(s, Interfaces);
|
61
|
+
}
|
62
|
+
|
63
|
+
/*
|
64
|
+
* call-seq:
|
65
|
+
* conn.num_of_defined_interfaces -> fixnum
|
66
|
+
*
|
67
|
+
* Call +virConnectNumOfDefinedInterfaces+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectNumOfDefinedInterfaces]
|
68
|
+
*/
|
69
|
+
static VALUE libvirt_conn_num_of_defined_interfaces(VALUE s) {
|
70
|
+
gen_conn_num_of(s, DefinedInterfaces);
|
71
|
+
}
|
72
|
+
|
73
|
+
/*
|
74
|
+
* call-seq:
|
75
|
+
* conn.list_defined_interfaces -> list
|
76
|
+
*
|
77
|
+
* Call +virConnectListDefinedInterfaces+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectListDefinedInterfaces]
|
78
|
+
*/
|
79
|
+
static VALUE libvirt_conn_list_defined_interfaces(VALUE s) {
|
80
|
+
gen_conn_list_names(s, DefinedInterfaces);
|
81
|
+
}
|
82
|
+
|
83
|
+
/*
|
84
|
+
* call-seq:
|
85
|
+
* conn.lookup_interface_by_name -> Libvirt::Interface
|
86
|
+
*
|
87
|
+
* Call +virInterfaceLookupByName+[http://www.libvirt.org/html/libvirt-libvirt.html#virInterfaceLookupByName]
|
88
|
+
*/
|
89
|
+
static VALUE libvirt_conn_lookup_interface_by_name(VALUE c, VALUE name) {
|
90
|
+
virInterfacePtr iface;
|
91
|
+
virConnectPtr conn = connect_get(c);
|
92
|
+
|
93
|
+
iface = virInterfaceLookupByName(conn, StringValueCStr(name));
|
94
|
+
_E(iface == NULL, create_error(e_RetrieveError, "virInterfaceLookupByName", "", conn));
|
95
|
+
|
96
|
+
return interface_new(iface, c);
|
97
|
+
}
|
98
|
+
|
99
|
+
/*
|
100
|
+
* call-seq:
|
101
|
+
* conn.lookup_interface_by_mac -> Libvirt::Interface
|
102
|
+
*
|
103
|
+
* Call +virInterfaceLookupByMACString+[http://www.libvirt.org/html/libvirt-libvirt.html#virInterfaceLookupByMACString]
|
104
|
+
*/
|
105
|
+
static VALUE libvirt_conn_lookup_interface_by_mac(VALUE c, VALUE mac) {
|
106
|
+
virInterfacePtr iface;
|
107
|
+
virConnectPtr conn = connect_get(c);
|
108
|
+
|
109
|
+
iface = virInterfaceLookupByMACString(conn, StringValueCStr(mac));
|
110
|
+
_E(iface == NULL, create_error(e_RetrieveError, "virInterfaceLookupByMACString", "", conn));
|
111
|
+
|
112
|
+
return interface_new(iface, c);
|
113
|
+
}
|
114
|
+
|
115
|
+
/*
|
116
|
+
* call-seq:
|
117
|
+
* conn.define_interface_xml -> Libvirt::Interface
|
118
|
+
*
|
119
|
+
* Call +virInterfaceDefineXML+[http://www.libvirt.org/html/libvirt-libvirt.html#virInterfaceDefineXML]
|
120
|
+
*/
|
121
|
+
static VALUE libvirt_conn_define_interface_xml(int argc, VALUE *argv, VALUE c) {
|
122
|
+
virInterfacePtr iface;
|
123
|
+
virConnectPtr conn = connect_get(c);
|
124
|
+
VALUE xml, flags;
|
125
|
+
|
126
|
+
rb_scan_args(argc, argv, "11", &xml, &flags);
|
127
|
+
|
128
|
+
if (NIL_P(flags))
|
129
|
+
flags = INT2FIX(0);
|
130
|
+
|
131
|
+
iface = virInterfaceDefineXML(conn, StringValueCStr(xml), NUM2UINT(flags));
|
132
|
+
_E(iface == NULL, create_error(e_DefinitionError, "virInterfaceDefineXML", "", conn));
|
133
|
+
|
134
|
+
return interface_new(iface, c);
|
135
|
+
}
|
136
|
+
|
137
|
+
/*
|
138
|
+
* call-seq:
|
139
|
+
* interface.undefine -> nil
|
140
|
+
*
|
141
|
+
* Call +virInterfaceUndefine+[http://www.libvirt.org/html/libvirt-libvirt.html#virInterfaceUndefine]
|
142
|
+
*/
|
143
|
+
static VALUE libvirt_interface_undefine(VALUE s) {
|
144
|
+
gen_call_void(virInterfaceUndefine, conn(s), interface_get(s));
|
145
|
+
}
|
146
|
+
|
147
|
+
/*
|
148
|
+
* call-seq:
|
149
|
+
* interface.create -> nil
|
150
|
+
*
|
151
|
+
* Call +virInterfaceCreate+[http://www.libvirt.org/html/libvirt-libvirt.html#virInterfaceCreate]
|
152
|
+
*/
|
153
|
+
static VALUE libvirt_interface_create(VALUE s) {
|
154
|
+
gen_call_void(virInterfaceCreate, conn(s), interface_get(s), 0);
|
155
|
+
}
|
156
|
+
|
157
|
+
/*
|
158
|
+
* call-seq:
|
159
|
+
* interface.destroy -> nil
|
160
|
+
*
|
161
|
+
* Call +virInterfaceDestroy+[http://www.libvirt.org/html/libvirt-libvirt.html#virInterfaceDestroy]
|
162
|
+
*/
|
163
|
+
static VALUE libvirt_interface_destroy(VALUE s) {
|
164
|
+
gen_call_void(virInterfaceDestroy, conn(s), interface_get(s), 0);
|
165
|
+
}
|
166
|
+
|
167
|
+
#if HAVE_VIRINTERFACEISACTIVE
|
168
|
+
/*
|
169
|
+
* call-seq:
|
170
|
+
* interface.active? -> [true|false]
|
171
|
+
*
|
172
|
+
* Call +virInterfaceIsActive+[http://www.libvirt.org/html/libvirt-libvirt.html#virInterfaceIsActive]
|
173
|
+
*/
|
174
|
+
static VALUE libvirt_interface_active_p(VALUE p) {
|
175
|
+
gen_call_truefalse(virInterfaceIsActive, conn(p), interface_get(p));
|
176
|
+
}
|
177
|
+
#endif
|
178
|
+
|
179
|
+
/*
|
180
|
+
* call-seq:
|
181
|
+
* interface.name -> string
|
182
|
+
*
|
183
|
+
* Call +virInterfaceGetName+[http://www.libvirt.org/html/libvirt-libvirt.html#virInterfaceGetName]
|
184
|
+
*/
|
185
|
+
static VALUE libvirt_interface_name(VALUE s) {
|
186
|
+
gen_call_string(virInterfaceGetName, conn(s), 0, interface_get(s));
|
187
|
+
}
|
188
|
+
|
189
|
+
/*
|
190
|
+
* call-seq:
|
191
|
+
* interface.mac -> string
|
192
|
+
*
|
193
|
+
* Call +virInterfaceGetMACString+[http://www.libvirt.org/html/libvirt-libvirt.html#virInterfaceGetMACString]
|
194
|
+
*/
|
195
|
+
static VALUE libvirt_interface_mac(VALUE s) {
|
196
|
+
gen_call_string(virInterfaceGetMACString, conn(s), 0, interface_get(s));
|
197
|
+
}
|
198
|
+
|
199
|
+
/*
|
200
|
+
* call-seq:
|
201
|
+
* interface.xml_desc -> string
|
202
|
+
*
|
203
|
+
* Call +virInterfaceGetXMLDesc+[http://www.libvirt.org/html/libvirt-libvirt.html#virInterfaceGetXMLDesc]
|
204
|
+
*/
|
205
|
+
static VALUE libvirt_interface_xml_desc(int argc, VALUE *argv, VALUE s) {
|
206
|
+
VALUE flags;
|
207
|
+
|
208
|
+
rb_scan_args(argc, argv, "01", &flags);
|
209
|
+
|
210
|
+
if (NIL_P(flags))
|
211
|
+
flags = INT2FIX(0);
|
212
|
+
|
213
|
+
gen_call_string(virInterfaceGetXMLDesc, conn(s), 1, interface_get(s),
|
214
|
+
NUM2UINT(flags));
|
215
|
+
}
|
216
|
+
|
217
|
+
#endif
|
218
|
+
|
219
|
+
/*
|
220
|
+
* Class Libvirt::Interface
|
221
|
+
*/
|
222
|
+
void init_interface()
|
223
|
+
{
|
224
|
+
#if HAVE_TYPE_VIRINTERFACEPTR
|
225
|
+
c_interface = rb_define_class_under(m_libvirt, "Interface", rb_cObject);
|
226
|
+
#ifdef VIR_INTERFACE_XML_INACTIVE
|
227
|
+
rb_define_const(c_interface, "XML_INACTIVE",
|
228
|
+
INT2NUM(VIR_INTERFACE_XML_INACTIVE));
|
229
|
+
#endif
|
230
|
+
rb_define_attr(c_interface, "connection", 1, 0);
|
231
|
+
|
232
|
+
/* Interface lookup/creation methods */
|
233
|
+
rb_define_method(c_connect, "num_of_interfaces",
|
234
|
+
libvirt_conn_num_of_interfaces, 0);
|
235
|
+
rb_define_method(c_connect, "list_interfaces",
|
236
|
+
libvirt_conn_list_interfaces, 0);
|
237
|
+
rb_define_method(c_connect, "num_of_defined_interfaces",
|
238
|
+
libvirt_conn_num_of_defined_interfaces, 0);
|
239
|
+
rb_define_method(c_connect, "list_defined_interfaces",
|
240
|
+
libvirt_conn_list_defined_interfaces, 0);
|
241
|
+
rb_define_method(c_connect, "lookup_interface_by_name",
|
242
|
+
libvirt_conn_lookup_interface_by_name, 1);
|
243
|
+
rb_define_method(c_connect, "lookup_interface_by_mac",
|
244
|
+
libvirt_conn_lookup_interface_by_mac, 1);
|
245
|
+
rb_define_method(c_connect, "define_interface_xml",
|
246
|
+
libvirt_conn_define_interface_xml, -1);
|
247
|
+
|
248
|
+
/* Interface object methods */
|
249
|
+
rb_define_method(c_interface, "name", libvirt_interface_name, 0);
|
250
|
+
rb_define_method(c_interface, "mac", libvirt_interface_mac, 0);
|
251
|
+
rb_define_method(c_interface, "xml_desc", libvirt_interface_xml_desc, -1);
|
252
|
+
rb_define_method(c_interface, "undefine", libvirt_interface_undefine, 0);
|
253
|
+
rb_define_method(c_interface, "create", libvirt_interface_create, -1);
|
254
|
+
rb_define_method(c_interface, "destroy", libvirt_interface_destroy, -1);
|
255
|
+
#if HAVE_VIRINTERFACEISACTIVE
|
256
|
+
rb_define_method(c_interface, "active?", libvirt_interface_active_p, 0);
|
257
|
+
#endif
|
258
|
+
#endif
|
259
|
+
}
|
@@ -0,0 +1,338 @@
|
|
1
|
+
/*
|
2
|
+
* network.c: virNetwork 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_VIRNETWORKPTR
|
29
|
+
static VALUE c_network;
|
30
|
+
|
31
|
+
static void network_free(void *d) {
|
32
|
+
generic_free(Network, d);
|
33
|
+
}
|
34
|
+
|
35
|
+
static virNetworkPtr network_get(VALUE s) {
|
36
|
+
generic_get(Network, s);
|
37
|
+
}
|
38
|
+
|
39
|
+
static VALUE network_new(virNetworkPtr n, VALUE conn) {
|
40
|
+
return generic_new(c_network, n, conn, network_free);
|
41
|
+
}
|
42
|
+
|
43
|
+
/*
|
44
|
+
* call-seq:
|
45
|
+
* conn.num_of_networks -> fixnum
|
46
|
+
*
|
47
|
+
* Call +virConnectNumOfNetworks+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectNumOfNetworks]
|
48
|
+
*/
|
49
|
+
static VALUE libvirt_conn_num_of_networks(VALUE s) {
|
50
|
+
gen_conn_num_of(s, Networks);
|
51
|
+
}
|
52
|
+
|
53
|
+
/*
|
54
|
+
* call-seq:
|
55
|
+
* conn.list_networks -> list
|
56
|
+
*
|
57
|
+
* Call +virConnectListNetworks+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectListNetworks]
|
58
|
+
*/
|
59
|
+
static VALUE libvirt_conn_list_networks(VALUE s) {
|
60
|
+
gen_conn_list_names(s, Networks);
|
61
|
+
}
|
62
|
+
|
63
|
+
/*
|
64
|
+
* call-seq:
|
65
|
+
* conn.num_of_defined_networks -> fixnum
|
66
|
+
*
|
67
|
+
* Call +virConnectNumOfDefinedNetworks+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectNumOfDefinedNetworks]
|
68
|
+
*/
|
69
|
+
static VALUE libvirt_conn_num_of_defined_networks(VALUE s) {
|
70
|
+
gen_conn_num_of(s, DefinedNetworks);
|
71
|
+
}
|
72
|
+
|
73
|
+
/*
|
74
|
+
* call-seq:
|
75
|
+
* conn.list_of_defined_networks -> list
|
76
|
+
*
|
77
|
+
* Call +virConnectListDefinedNetworks+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectListDefinedNetworks]
|
78
|
+
*/
|
79
|
+
static VALUE libvirt_conn_list_defined_networks(VALUE s) {
|
80
|
+
gen_conn_list_names(s, DefinedNetworks);
|
81
|
+
}
|
82
|
+
|
83
|
+
/*
|
84
|
+
* call-seq:
|
85
|
+
* conn.lookup_network_by_name -> Libvirt::Network
|
86
|
+
*
|
87
|
+
* Call +virNetworkLookupByName+[http://www.libvirt.org/html/libvirt-libvirt.html#virNetworkLookupByName]
|
88
|
+
*/
|
89
|
+
static VALUE libvirt_conn_lookup_network_by_name(VALUE c, VALUE name) {
|
90
|
+
virNetworkPtr netw;
|
91
|
+
virConnectPtr conn = connect_get(c);
|
92
|
+
|
93
|
+
netw = virNetworkLookupByName(conn, StringValueCStr(name));
|
94
|
+
_E(netw == NULL, create_error(e_RetrieveError, "virNetworkLookupByName", "", conn));
|
95
|
+
|
96
|
+
return network_new(netw, c);
|
97
|
+
}
|
98
|
+
|
99
|
+
/*
|
100
|
+
* call-seq:
|
101
|
+
* conn.lookup_network_by_uuid -> Libvirt::Network
|
102
|
+
*
|
103
|
+
* Call +virNetworkLookupByUUIDString+[http://www.libvirt.org/html/libvirt-libvirt.html#virNetworkLookupByUUIDString]
|
104
|
+
*/
|
105
|
+
static VALUE libvirt_conn_lookup_network_by_uuid(VALUE c, VALUE uuid) {
|
106
|
+
virNetworkPtr netw;
|
107
|
+
virConnectPtr conn = connect_get(c);
|
108
|
+
|
109
|
+
netw = virNetworkLookupByUUIDString(conn, StringValueCStr(uuid));
|
110
|
+
_E(netw == NULL, create_error(e_RetrieveError, "virNetworkLookupByUUID", "", conn));
|
111
|
+
|
112
|
+
return network_new(netw, c);
|
113
|
+
}
|
114
|
+
|
115
|
+
/*
|
116
|
+
* call-seq:
|
117
|
+
* conn.create_network_xml -> Libvirt::Network
|
118
|
+
*
|
119
|
+
* Call +virNetworkCreateXML+[http://www.libvirt.org/html/libvirt-libvirt.html#virNetworkCreateXML]
|
120
|
+
*/
|
121
|
+
static VALUE libvirt_conn_create_network_xml(VALUE c, VALUE xml) {
|
122
|
+
virNetworkPtr netw;
|
123
|
+
virConnectPtr conn = connect_get(c);
|
124
|
+
|
125
|
+
netw = virNetworkCreateXML(conn, StringValueCStr(xml));
|
126
|
+
_E(netw == NULL, create_error(e_Error, "virNetworkCreateXML", "", conn));
|
127
|
+
|
128
|
+
return network_new(netw, c);
|
129
|
+
}
|
130
|
+
|
131
|
+
/*
|
132
|
+
* call-seq:
|
133
|
+
* conn.define_network_xml -> Libvirt::Network
|
134
|
+
*
|
135
|
+
* Call +virNetworkDefineXML+[http://www.libvirt.org/html/libvirt-libvirt.html#virNetworkDefineXML]
|
136
|
+
*/
|
137
|
+
static VALUE libvirt_conn_define_network_xml(VALUE c, VALUE xml) {
|
138
|
+
virNetworkPtr netw;
|
139
|
+
virConnectPtr conn = connect_get(c);
|
140
|
+
|
141
|
+
netw = virNetworkDefineXML(conn, StringValueCStr(xml));
|
142
|
+
_E(netw == NULL, create_error(e_DefinitionError, "virNetworkDefineXML", "", conn));
|
143
|
+
|
144
|
+
return network_new(netw, c);
|
145
|
+
}
|
146
|
+
|
147
|
+
/*
|
148
|
+
* call-seq:
|
149
|
+
* net.undefine -> nil
|
150
|
+
*
|
151
|
+
* Call +virNetworkUndefine+[http://www.libvirt.org/html/libvirt-libvirt.html#virNetworkUndefine]
|
152
|
+
*/
|
153
|
+
static VALUE libvirt_netw_undefine(VALUE s) {
|
154
|
+
gen_call_void(virNetworkUndefine, conn(s), network_get(s));
|
155
|
+
}
|
156
|
+
|
157
|
+
/*
|
158
|
+
* call-seq:
|
159
|
+
* net.create -> nil
|
160
|
+
*
|
161
|
+
* Call +virNetworkCreate+[http://www.libvirt.org/html/libvirt-libvirt.html#virNetworkCreate]
|
162
|
+
*/
|
163
|
+
static VALUE libvirt_netw_create(VALUE s) {
|
164
|
+
gen_call_void(virNetworkCreate, conn(s), network_get(s));
|
165
|
+
}
|
166
|
+
|
167
|
+
/*
|
168
|
+
* call-seq:
|
169
|
+
* net.destroy -> nil
|
170
|
+
*
|
171
|
+
* Call +virNetworkDestroy+[http://www.libvirt.org/html/libvirt-libvirt.html#virNetworkDestroy]
|
172
|
+
*/
|
173
|
+
static VALUE libvirt_netw_destroy(VALUE s) {
|
174
|
+
gen_call_void(virNetworkDestroy, conn(s), network_get(s));
|
175
|
+
}
|
176
|
+
|
177
|
+
/*
|
178
|
+
* call-seq:
|
179
|
+
* net.name -> string
|
180
|
+
*
|
181
|
+
* Call +virNetworkGetName+[http://www.libvirt.org/html/libvirt-libvirt.html#virNetworkGetName]
|
182
|
+
*/
|
183
|
+
static VALUE libvirt_netw_name(VALUE s) {
|
184
|
+
gen_call_string(virNetworkGetName, conn(s), 0, network_get(s));
|
185
|
+
}
|
186
|
+
|
187
|
+
/*
|
188
|
+
* call-seq:
|
189
|
+
* net.uuid -> string
|
190
|
+
*
|
191
|
+
* Call +virNetworkGetUUIDString+[http://www.libvirt.org/html/libvirt-libvirt.html#virNetworkGetUUIDString]
|
192
|
+
*/
|
193
|
+
static VALUE libvirt_netw_uuid(VALUE s) {
|
194
|
+
virNetworkPtr netw = network_get(s);
|
195
|
+
char uuid[VIR_UUID_STRING_BUFLEN];
|
196
|
+
int r;
|
197
|
+
|
198
|
+
r = virNetworkGetUUIDString(netw, uuid);
|
199
|
+
_E(r < 0, create_error(e_RetrieveError, "virNetworkGetUUIDString", "", conn(s)));
|
200
|
+
|
201
|
+
return rb_str_new2((char *) uuid);
|
202
|
+
}
|
203
|
+
|
204
|
+
/*
|
205
|
+
* call-seq:
|
206
|
+
* net.xml_desc -> string
|
207
|
+
*
|
208
|
+
* Call +virNetworkGetXMLDesc+[http://www.libvirt.org/html/libvirt-libvirt.html#virNetworkGetXMLDesc]
|
209
|
+
*/
|
210
|
+
static VALUE libvirt_netw_xml_desc(int argc, VALUE *argv, VALUE s) {
|
211
|
+
VALUE flags;
|
212
|
+
|
213
|
+
rb_scan_args(argc, argv, "01", &flags);
|
214
|
+
|
215
|
+
if (NIL_P(flags))
|
216
|
+
flags = INT2FIX(0);
|
217
|
+
|
218
|
+
gen_call_string(virNetworkGetXMLDesc, conn(s), 1, network_get(s),
|
219
|
+
NUM2UINT(flags));
|
220
|
+
}
|
221
|
+
|
222
|
+
/*
|
223
|
+
* call-seq:
|
224
|
+
* net.bridge_name -> string
|
225
|
+
*
|
226
|
+
* Call +virNetworkGetBridgeName+[http://www.libvirt.org/html/libvirt-libvirt.html#virNetworkGetBridgeName]
|
227
|
+
*/
|
228
|
+
static VALUE libvirt_netw_bridge_name(VALUE s) {
|
229
|
+
gen_call_string(virNetworkGetBridgeName, conn(s), 1, network_get(s));
|
230
|
+
}
|
231
|
+
|
232
|
+
/*
|
233
|
+
* call-seq:
|
234
|
+
* net.autostart? -> [true|false]
|
235
|
+
*
|
236
|
+
* Call +virNetworkGetAutostart+[http://www.libvirt.org/html/libvirt-libvirt.html#virNetworkGetAutostart]
|
237
|
+
*/
|
238
|
+
static VALUE libvirt_netw_autostart(VALUE s){
|
239
|
+
virNetworkPtr netw = network_get(s);
|
240
|
+
int r, autostart;
|
241
|
+
|
242
|
+
r = virNetworkGetAutostart(netw, &autostart);
|
243
|
+
_E(r < 0, create_error(e_RetrieveError, "virNetworkAutostart", "", conn(s)));
|
244
|
+
|
245
|
+
return autostart ? Qtrue : Qfalse;
|
246
|
+
}
|
247
|
+
|
248
|
+
/*
|
249
|
+
* call-seq:
|
250
|
+
* net.autostart_set -> nil
|
251
|
+
*
|
252
|
+
* Call +virNetworkSetAutostart+[http://www.libvirt.org/html/libvirt-libvirt.html#virNetworkSetAutostart]
|
253
|
+
*/
|
254
|
+
static VALUE libvirt_netw_autostart_set(VALUE s, VALUE autostart) {
|
255
|
+
gen_call_void(virNetworkSetAutostart, conn(s), network_get(s),
|
256
|
+
RTEST(autostart) ? 1 : 0);
|
257
|
+
}
|
258
|
+
|
259
|
+
/*
|
260
|
+
* call-seq:
|
261
|
+
* net.free -> nil
|
262
|
+
*
|
263
|
+
* Call +virNetworkFree+[http://www.libvirt.org/html/libvirt-libvirt.html#virNetworkFree]
|
264
|
+
*/
|
265
|
+
static VALUE libvirt_netw_free(VALUE s) {
|
266
|
+
gen_call_free(Network, s);
|
267
|
+
}
|
268
|
+
|
269
|
+
#if HAVE_VIRNETWORKISACTIVE
|
270
|
+
/*
|
271
|
+
* call-seq:
|
272
|
+
* net.active? -> [true|false]
|
273
|
+
*
|
274
|
+
* Call +virNetworkIsActive+[http://www.libvirt.org/html/libvirt-libvirt.html#virNetworkIsActive]
|
275
|
+
*/
|
276
|
+
static VALUE libvirt_netw_active_p(VALUE s) {
|
277
|
+
gen_call_truefalse(virNetworkIsActive, conn(s), network_get(s));
|
278
|
+
}
|
279
|
+
#endif
|
280
|
+
|
281
|
+
#if HAVE_VIRNETWORKISPERSISTENT
|
282
|
+
/*
|
283
|
+
* call-seq:
|
284
|
+
* net.persistent? -> [true|false]
|
285
|
+
*
|
286
|
+
* Call +virNetworkIsPersistent+[http://www.libvirt.org/html/libvirt-libvirt.html#virNetworkIsPersistent]
|
287
|
+
*/
|
288
|
+
static VALUE libvirt_netw_persistent_p(VALUE s) {
|
289
|
+
gen_call_truefalse(virNetworkIsPersistent, conn(s), network_get(s));
|
290
|
+
}
|
291
|
+
#endif
|
292
|
+
|
293
|
+
#endif
|
294
|
+
|
295
|
+
/*
|
296
|
+
* Class Libvirt::Network
|
297
|
+
*/
|
298
|
+
void init_network()
|
299
|
+
{
|
300
|
+
#if HAVE_TYPE_VIRNETWORKPTR
|
301
|
+
c_network = rb_define_class_under(m_libvirt, "Network", rb_cObject);
|
302
|
+
rb_define_attr(c_network, "connection", 1, 0);
|
303
|
+
|
304
|
+
rb_define_method(c_connect, "num_of_networks",
|
305
|
+
libvirt_conn_num_of_networks, 0);
|
306
|
+
rb_define_method(c_connect, "list_networks", libvirt_conn_list_networks, 0);
|
307
|
+
rb_define_method(c_connect, "num_of_defined_networks",
|
308
|
+
libvirt_conn_num_of_defined_networks, 0);
|
309
|
+
rb_define_method(c_connect, "list_defined_networks",
|
310
|
+
libvirt_conn_list_defined_networks, 0);
|
311
|
+
rb_define_method(c_connect, "lookup_network_by_name",
|
312
|
+
libvirt_conn_lookup_network_by_name, 1);
|
313
|
+
rb_define_method(c_connect, "lookup_network_by_uuid",
|
314
|
+
libvirt_conn_lookup_network_by_uuid, 1);
|
315
|
+
rb_define_method(c_connect, "create_network_xml",
|
316
|
+
libvirt_conn_create_network_xml, 1);
|
317
|
+
rb_define_method(c_connect, "define_network_xml",
|
318
|
+
libvirt_conn_define_network_xml, 1);
|
319
|
+
|
320
|
+
rb_define_method(c_network, "undefine", libvirt_netw_undefine, 0);
|
321
|
+
rb_define_method(c_network, "create", libvirt_netw_create, 0);
|
322
|
+
rb_define_method(c_network, "destroy", libvirt_netw_destroy, 0);
|
323
|
+
rb_define_method(c_network, "name", libvirt_netw_name, 0);
|
324
|
+
rb_define_method(c_network, "uuid", libvirt_netw_uuid, 0);
|
325
|
+
rb_define_method(c_network, "xml_desc", libvirt_netw_xml_desc, -1);
|
326
|
+
rb_define_method(c_network, "bridge_name", libvirt_netw_bridge_name, 0);
|
327
|
+
rb_define_method(c_network, "autostart", libvirt_netw_autostart, 0);
|
328
|
+
rb_define_method(c_network, "autostart?", libvirt_netw_autostart, 0);
|
329
|
+
rb_define_method(c_network, "autostart=", libvirt_netw_autostart_set, 1);
|
330
|
+
rb_define_method(c_network, "free", libvirt_netw_free, 0);
|
331
|
+
#if HAVE_VIRNETWORKISACTIVE
|
332
|
+
rb_define_method(c_network, "active?", libvirt_netw_active_p, 0);
|
333
|
+
#endif
|
334
|
+
#if HAVE_VIRNETWORKISPERSISTENT
|
335
|
+
rb_define_method(c_network, "persistent?", libvirt_netw_persistent_p, 0);
|
336
|
+
#endif
|
337
|
+
#endif
|
338
|
+
}
|