ruby-libvirt 0.5.2 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: fbcf087680f4524b1c5e1faba3dfad5bbc22f281
4
- data.tar.gz: 298b6f117bd8b15acc809c70954b38341d7ace4c
2
+ SHA256:
3
+ metadata.gz: ca7edd355f3679b48ebacb442e8d9c3d77af72a88681064e06a247ceabd4e391
4
+ data.tar.gz: dd4253fb78b7e584396aec931be145bc236db2e86a56eb275fe7c5675e7cd3f1
5
5
  SHA512:
6
- metadata.gz: 9d8508cf6a4033efb7d0fb19451f19ed8efc79ebfd4ecfd6e601f7c1504d1007ce729da33245aab5d6563ae85e42cb98656f5b83091c049392af12f4d80eee4f
7
- data.tar.gz: 0151aa217bfa464c7f08755b8d586e262b89ce196ac26c0024b0c8741cc1043a93c8ed70eb2ec082fd21dea3bdea5899cf5766c4ae86dbb478841bbe8c18c58a
6
+ metadata.gz: bf2f9cb3c62d5fb51e919eac7513603bbae31b23b7c712238fc98064c11563451963f5d6bdaa8e6c25f9680bdec14dcc651184d52001cb3d6c24a56134d7535f
7
+ data.tar.gz: 5561b660c8ec0ce8d61c363a6f1c467c3563277c55998661b75e24936fb6c11708e774a1aab859bfe48fc4f54c1864c371f620cb54bfabe9c9a2ae55d8d33c47
data/COPYING CHANGED
@@ -3,7 +3,7 @@
3
3
  Version 2.1, February 1999
4
4
 
5
5
  Copyright (C) 1991, 1999 Free Software Foundation, Inc.
6
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
6
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
7
7
  Everyone is permitted to copy and distribute verbatim copies
8
8
  of this license document, but changing it is not allowed.
9
9
 
data/NEWS CHANGED
@@ -1,7 +1,43 @@
1
- 2014-01-08
1
+ 2021-11-15 0.8.0
2
+ * Fix default values for node_cpu_stats and node_memory_stats
3
+ * Fix cpumap allocation for virDomainGetVcpus
4
+ * Enforce UTF8 for strings and exceptions
5
+ * Drop local have_const
6
+ * Use sensible default for libvirt_domain_qemu_agent_command
7
+
8
+ 2018-02-18 0.7.1
9
+ * Fix a bad bug in block_resize (Marius Rieder)
10
+ * Fix up some problems pointed out by clang
11
+ * Fix up the tests for small semantic differences in how libvirt works
12
+
13
+ 2016-09-22 0.7.0
14
+ * Fix network lease API to allow arguments that libvirt allows
15
+ * Implement VIRT_STORAGE_POOL_CREATE flags
16
+ * Implement more VIR_STORAGE_VOL flags
17
+ * Implement VIR_DOMAIN_QEMU_AGENT_COMMAND_SHUTDOWN
18
+ * Implement virDomainDefineXMLFlags
19
+ * Implement virDomainRename
20
+ * Implement virDomainSetUserPassword
21
+ * Implement VIR_DOMAIN_TIME_SYNC
22
+ * Fix the return value from virStreamSourceFunc so volume upload works
23
+
24
+ 2015-11-20 0.6.0
25
+ * Fix possible buffer overflow
26
+ * Fix storage volume creation error messages
27
+ * Add additional storage pool defines
28
+ * Implement Network dhcp_leases method
29
+ * Implement Connect node_alloc_pages method
30
+ * Implement Domain time method
31
+ * Implement Connect domain_capabilities method
32
+ * Implement Domain core_dump_with_format method
33
+ * Implement Domain fs_freeze method
34
+ * Implement Domain fs_info method
35
+ * Implement Connect node_free_pages method
36
+
37
+ 2014-01-08 0.5.2
2
38
  * Fix to make sure we don't free more entires than retrieved
3
39
 
4
- 2013-12-15
40
+ 2013-12-15 0.5.1
5
41
  * Fixes to compile against older libvirt
6
42
  * Fixes to compile against ruby 1.8
7
43
 
data/Rakefile CHANGED
@@ -21,7 +21,7 @@ require 'rubygems/package_task'
21
21
  require 'rbconfig'
22
22
 
23
23
  PKG_NAME='ruby-libvirt'
24
- PKG_VERSION='0.5.2'
24
+ PKG_VERSION='0.8.0'
25
25
 
26
26
  EXT_CONF='ext/libvirt/extconf.rb'
27
27
  MAKEFILE="ext/libvirt/Makefile"
@@ -37,8 +37,7 @@ LIBVIRT_SRC << MAKEFILE
37
37
  CLEAN.include [ "ext/**/*.o", LIBVIRT_MODULE, "ext/**/depend", "ext/**/*.gcda",
38
38
  "ext/**/*.gcno", "ext/**/*.gcov" ]
39
39
 
40
- CLOBBER.include [ "config.save", "ext/**/mkmf.log", "ext/**/extconf.h",
41
- MAKEFILE ]
40
+ CLOBBER.include [ "ext/**/mkmf.log", "ext/**/extconf.h", MAKEFILE ]
42
41
 
43
42
  task :default => :build
44
43
 
@@ -146,7 +145,7 @@ SPEC = Gem::Specification.new do |s|
146
145
  s.author = "David Lutterkort, Chris Lalancette"
147
146
  s.rubyforge_project = "None"
148
147
  s.description = "Ruby bindings for libvirt."
149
- s.license = "LGPLv2"
148
+ s.license = "LGPL-2.1-or-later"
150
149
  end
151
150
 
152
151
  Gem::PackageTask.new(SPEC) do |pkg|
@@ -2,7 +2,7 @@
2
2
  * libvirt.c: Ruby bindings for libvirt
3
3
  *
4
4
  * Copyright (C) 2007,2010 Red Hat Inc.
5
- * Copyright (C) 2013 Chris Lalancette <clalancette@gmail.com>
5
+ * Copyright (C) 2013-2016 Chris Lalancette <clalancette@gmail.com>
6
6
  *
7
7
  * This library is free software; you can redistribute it and/or
8
8
  * modify it under the terms of the GNU Lesser General Public
@@ -60,7 +60,7 @@ static void rubyLibvirtErrorFunc(void *RUBY_LIBVIRT_UNUSED(userdata),
60
60
  * call-seq:
61
61
  * Libvirt::version(type=nil) -> [ libvirt_version, type_version ]
62
62
  *
63
- * Call virGetVersion[http://www.libvirt.org/html/libvirt-libvirt.html#virGetVersion]
63
+ * Call virGetVersion[http://www.libvirt.org/html/libvirt-libvirt-host.html#virGetVersion]
64
64
  * to get the version of libvirt and of the hypervisor TYPE.
65
65
  */
66
66
  static VALUE libvirt_version(int argc, VALUE *argv,
@@ -90,7 +90,7 @@ static VALUE libvirt_version(int argc, VALUE *argv,
90
90
  * call-seq:
91
91
  * Libvirt::open(uri=nil) -> Libvirt::Connect
92
92
  *
93
- * Call virConnectOpen[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectOpen]
93
+ * Call virConnectOpen[http://www.libvirt.org/html/libvirt-libvirt-host.html#virConnectOpen]
94
94
  * to open a connection to a URL.
95
95
  */
96
96
  static VALUE libvirt_open(int argc, VALUE *argv, VALUE RUBY_LIBVIRT_UNUSED(m))
@@ -111,7 +111,7 @@ static VALUE libvirt_open(int argc, VALUE *argv, VALUE RUBY_LIBVIRT_UNUSED(m))
111
111
  * call-seq:
112
112
  * Libvirt::open_read_only(uri=nil) -> Libvirt::Connect
113
113
  *
114
- * Call virConnectOpenReadOnly[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectOpenReadOnly]
114
+ * Call virConnectOpenReadOnly[http://www.libvirt.org/html/libvirt-libvirt-host.html#virConnectOpenReadOnly]
115
115
  * to open a read-only connection to a URL.
116
116
  */
117
117
  static VALUE libvirt_open_read_only(int argc, VALUE *argv,
@@ -184,7 +184,7 @@ static int libvirt_auth_callback_wrapper(virConnectCredentialPtr cred,
184
184
  * call-seq:
185
185
  * Libvirt::open_auth(uri=nil, credlist=nil, userdata=nil, flags=0) {|...| authentication block} -> Libvirt::Connect
186
186
  *
187
- * Call virConnectOpenAuth[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectOpenAuth]
187
+ * Call virConnectOpenAuth[http://www.libvirt.org/html/libvirt-libvirt-host.html#virConnectOpenAuth]
188
188
  * to open a connection to a libvirt URI, with a possible authentication block.
189
189
  * If an authentication block is desired, then credlist should be an array that
190
190
  * specifies which credentials the authentication block is willing to support;
@@ -575,7 +575,7 @@ static int is_symbol_proc_or_nil(VALUE handle)
575
575
  * call-seq:
576
576
  * Libvirt::event_register_impl(add_handle=nil, update_handle=nil, remove_handle=nil, add_timeout=nil, update_timeout=nil, remove_timeout=nil) -> Qnil
577
577
  *
578
- * Call virEventRegisterImpl[http://www.libvirt.org/html/libvirt-libvirt.html#virEventRegisterImpl]
578
+ * Call virEventRegisterImpl[http://www.libvirt.org/html/libvirt-libvirt-event.html#virEventRegisterImpl]
579
579
  * to register callback handlers for handles and timeouts. These handles and
580
580
  * timeouts are used as part of the libvirt infrastructure for generating
581
581
  * domain events. Each callback must be a Symbol (that is the name of a
@@ -652,7 +652,7 @@ static VALUE libvirt_conn_event_register_impl(int argc, VALUE *argv,
652
652
  * call-seq:
653
653
  * Libvirt::lxc_enter_security_label(model, label, flags=0) -> Libvirt::Domain::SecurityLabel
654
654
  *
655
- * Call virDomainLxcEnterSecurityLabel[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainLxcEnterSecurityLabel]
655
+ * Call virDomainLxcEnterSecurityLabel
656
656
  * to attach to the security label specified by label in the security model
657
657
  * specified by model. The return object is a Libvirt::Domain::SecurityLabel
658
658
  * which may be able to be used to move back to the previous label.
@@ -660,7 +660,7 @@ static VALUE libvirt_conn_event_register_impl(int argc, VALUE *argv,
660
660
  static VALUE libvirt_domain_lxc_enter_security_label(int argc, VALUE *argv,
661
661
  VALUE RUBY_LIBVIRT_UNUSED(c))
662
662
  {
663
- VALUE model, label, flags, result, modiv, doiiv, labiv;
663
+ VALUE model = RUBY_Qnil, label = RUBY_Qnil, flags = RUBY_Qnil, result, modiv, doiiv, labiv;
664
664
  virSecurityModel mod;
665
665
  char *modstr, *doistr, *labstr;
666
666
  virSecurityLabel lab, oldlab;
data/ext/libvirt/common.c CHANGED
@@ -2,7 +2,7 @@
2
2
  * common.c: Common utilities for the ruby libvirt bindings
3
3
  *
4
4
  * Copyright (C) 2007,2010 Red Hat Inc.
5
- * Copyright (C) 2013 Chris Lalancette <clalancette@gmail.com>
5
+ * Copyright (C) 2013-2016 Chris Lalancette <clalancette@gmail.com>
6
6
  *
7
7
  * This library is free software; you can redistribute it and/or
8
8
  * modify it under the terms of the GNU Lesser General Public
@@ -24,7 +24,8 @@
24
24
  #endif
25
25
  #include <stdio.h>
26
26
  #include <ruby.h>
27
- #include <st.h>
27
+ #include <ruby/encoding.h>
28
+ #include <ruby/st.h>
28
29
  #include <libvirt/libvirt.h>
29
30
  #include <libvirt/virterror.h>
30
31
  #include "common.h"
@@ -38,8 +39,9 @@ struct rb_exc_new2_arg {
38
39
  static VALUE ruby_libvirt_exc_new2_wrap(VALUE arg)
39
40
  {
40
41
  struct rb_exc_new2_arg *e = (struct rb_exc_new2_arg *)arg;
42
+ VALUE ruby_msg = ruby_libvirt_str_new2_wrap((VALUE)&e->msg);
41
43
 
42
- return rb_exc_new2(e->error, e->msg);
44
+ return rb_exc_new3(e->error, ruby_msg);
43
45
  }
44
46
 
45
47
  VALUE ruby_libvirt_ary_new2_wrap(VALUE arg)
@@ -66,8 +68,11 @@ VALUE ruby_libvirt_ary_store_wrap(VALUE arg)
66
68
  VALUE ruby_libvirt_str_new2_wrap(VALUE arg)
67
69
  {
68
70
  char **str = (char **)arg;
71
+ VALUE ruby_msg = rb_str_new2(*str);
72
+ int enc = rb_enc_find_index("UTF-8");
69
73
 
70
- return rb_str_new2(*str);
74
+ rb_enc_associate_index(ruby_msg, enc);
75
+ return ruby_msg;
71
76
  }
72
77
 
73
78
  VALUE ruby_libvirt_str_new_wrap(VALUE arg)
@@ -84,6 +89,15 @@ VALUE ruby_libvirt_hash_aset_wrap(VALUE arg)
84
89
  return rb_hash_aset(e->hash, rb_str_new2(e->name), e->val);
85
90
  }
86
91
 
92
+ VALUE ruby_libvirt_str_new2_and_ary_store_wrap(VALUE arg)
93
+ {
94
+ struct ruby_libvirt_str_new2_and_ary_store_arg *e = (struct ruby_libvirt_str_new2_and_ary_store_arg *)arg;
95
+
96
+ rb_ary_store(e->arr, e->index, rb_str_new2(e->value));
97
+
98
+ return Qnil;
99
+ }
100
+
87
101
  void ruby_libvirt_raise_error_if(const int condition, VALUE error,
88
102
  const char *method, virConnectPtr conn)
89
103
  {
@@ -135,7 +149,7 @@ void ruby_libvirt_raise_error_if(const int condition, VALUE error,
135
149
  rb_iv_set(ruby_errinfo, "@libvirt_level", INT2NUM(err->level));
136
150
  if (err->message != NULL) {
137
151
  rb_iv_set(ruby_errinfo, "@libvirt_message",
138
- rb_str_new2(err->message));
152
+ ruby_libvirt_str_new2_wrap((VALUE)&err->message));
139
153
  }
140
154
  }
141
155
 
@@ -186,7 +200,7 @@ VALUE ruby_libvirt_generate_list(int num, char **list)
186
200
  VALUE result;
187
201
  int exception = 0;
188
202
  int i, j;
189
- struct ruby_libvirt_ary_store_arg arg;
203
+ struct ruby_libvirt_str_new2_and_ary_store_arg arg;
190
204
 
191
205
  i = 0;
192
206
 
@@ -197,15 +211,13 @@ VALUE ruby_libvirt_generate_list(int num, char **list)
197
211
  for (i = 0; i < num; i++) {
198
212
  arg.arr = result;
199
213
  arg.index = i;
200
- arg.elem = rb_protect(ruby_libvirt_str_new2_wrap, (VALUE)&(list[i]),
201
- &exception);
202
- if (exception) {
203
- goto exception;
204
- }
205
- rb_protect(ruby_libvirt_ary_store_wrap, (VALUE)&arg, &exception);
214
+ arg.value = list[i];
215
+ rb_protect(ruby_libvirt_str_new2_and_ary_store_wrap, (VALUE)&arg,
216
+ &exception);
206
217
  if (exception) {
207
218
  goto exception;
208
219
  }
220
+
209
221
  xfree(list[i]);
210
222
  }
211
223
 
@@ -373,8 +385,10 @@ int ruby_libvirt_typed_parameter_assign(VALUE key, VALUE val, VALUE in)
373
385
  default:
374
386
  rb_raise(rb_eArgError, "Invalid parameter type");
375
387
  }
388
+ /* ensure that the field is NULL-terminated */
389
+ args->params[args->i].field[VIR_TYPED_PARAM_FIELD_LENGTH - 1] = '\0';
376
390
  strncpy(args->params[args->i].field, keyname,
377
- VIR_TYPED_PARAM_FIELD_LENGTH);
391
+ VIR_TYPED_PARAM_FIELD_LENGTH - 1);
378
392
  (args->i)++;
379
393
  found = 1;
380
394
  break;
data/ext/libvirt/common.h CHANGED
@@ -56,7 +56,7 @@ void ruby_libvirt_raise_error_if(const int condition, VALUE error,
56
56
  } \
57
57
  } \
58
58
  else { \
59
- result = rb_str_new2(str); \
59
+ result = ruby_libvirt_str_new2_wrap((VALUE)&str); \
60
60
  } \
61
61
  return result; \
62
62
  } while(0)
@@ -123,7 +123,7 @@ void ruby_libvirt_raise_error_if(const int condition, VALUE error,
123
123
 
124
124
  #define ruby_libvirt_generate_call_list_all(type, argc, argv, listfunc, object, val, newfunc, freefunc) \
125
125
  do { \
126
- VALUE flags; \
126
+ VALUE flags = RUBY_Qnil; \
127
127
  type *list; \
128
128
  int i; \
129
129
  int ret; \
@@ -232,11 +232,13 @@ unsigned long ruby_libvirt_value_to_ulong(VALUE in);
232
232
  unsigned long long ruby_libvirt_value_to_ulonglong(VALUE in);
233
233
 
234
234
  VALUE ruby_libvirt_ary_new2_wrap(VALUE arg);
235
+
235
236
  struct ruby_libvirt_ary_push_arg {
236
237
  VALUE arr;
237
238
  VALUE value;
238
239
  };
239
240
  VALUE ruby_libvirt_ary_push_wrap(VALUE arg);
241
+
240
242
  struct ruby_libvirt_ary_store_arg {
241
243
  VALUE arr;
242
244
  long index;
@@ -245,6 +247,7 @@ struct ruby_libvirt_ary_store_arg {
245
247
  VALUE ruby_libvirt_ary_store_wrap(VALUE arg);
246
248
 
247
249
  VALUE ruby_libvirt_str_new2_wrap(VALUE arg);
250
+
248
251
  struct ruby_libvirt_str_new_arg {
249
252
  char *val;
250
253
  size_t size;
@@ -258,6 +261,13 @@ struct ruby_libvirt_hash_aset_arg {
258
261
  };
259
262
  VALUE ruby_libvirt_hash_aset_wrap(VALUE arg);
260
263
 
264
+ struct ruby_libvirt_str_new2_and_ary_store_arg {
265
+ VALUE arr;
266
+ long index;
267
+ char *value;
268
+ };
269
+ VALUE ruby_libvirt_str_new2_and_ary_store_wrap(VALUE arg);
270
+
261
271
  #ifndef RARRAY_LEN
262
272
  #define RARRAY_LEN(ar) (RARRAY(ar)->len)
263
273
  #endif