ruby-libvirt 0.3.0 → 0.4.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/NEWS +16 -0
- data/README +4 -16
- data/README.rdoc +1 -0
- data/Rakefile +65 -24
- data/ext/libvirt/_libvirt.c +245 -16
- data/ext/libvirt/common.c +3 -1
- data/ext/libvirt/connect.c +195 -38
- data/ext/libvirt/domain.c +871 -282
- data/ext/libvirt/domain.h +0 -3
- data/ext/libvirt/extconf.rb +81 -5
- data/ext/libvirt/interface.c +3 -3
- data/ext/libvirt/network.c +1 -1
- data/ext/libvirt/nodedevice.c +3 -1
- data/ext/libvirt/nwfilter.c +1 -1
- data/ext/libvirt/secret.c +3 -3
- data/ext/libvirt/storage.c +60 -11
- data/ext/libvirt/stream.c +394 -0
- data/ext/libvirt/stream.h +7 -0
- data/tests/test_conn.rb +470 -0
- data/tests/test_domain.rb +224 -258
- data/tests/test_interface.rb +7 -73
- data/tests/test_network.rb +15 -100
- data/tests/test_nodedevice.rb +0 -31
- data/tests/test_nwfilter.rb +6 -61
- data/tests/test_open.rb +43 -49
- data/tests/test_secret.rb +9 -65
- data/tests/test_storage.rb +35 -134
- data/tests/test_utils.rb +120 -13
- metadata +26 -26
data/ext/libvirt/common.c
CHANGED
@@ -121,7 +121,9 @@ VALUE create_error(VALUE error, const char* method, virConnectPtr conn) {
|
|
121
121
|
rb_iv_set(ruby_errinfo, "@libvirt_function_name", rb_str_new2(method));
|
122
122
|
|
123
123
|
if (err != NULL) {
|
124
|
-
rb_iv_set(ruby_errinfo, "@libvirt_code",
|
124
|
+
rb_iv_set(ruby_errinfo, "@libvirt_code", INT2NUM(err->code));
|
125
|
+
rb_iv_set(ruby_errinfo, "@libvirt_component", INT2NUM(err->domain));
|
126
|
+
rb_iv_set(ruby_errinfo, "@libvirt_level", INT2NUM(err->level));
|
125
127
|
if (err->message != NULL)
|
126
128
|
rb_iv_set(ruby_errinfo, "@libvirt_message",
|
127
129
|
rb_str_new2(err->message));
|
data/ext/libvirt/connect.c
CHANGED
@@ -24,12 +24,7 @@
|
|
24
24
|
#include "extconf.h"
|
25
25
|
#include "common.h"
|
26
26
|
#include "domain.h"
|
27
|
-
#include "interface.h"
|
28
27
|
#include "network.h"
|
29
|
-
#include "nodedevice.h"
|
30
|
-
#include "nwfilter.h"
|
31
|
-
#include "secret.h"
|
32
|
-
#include "storage.h"
|
33
28
|
|
34
29
|
static VALUE c_connect;
|
35
30
|
static VALUE c_node_security_model;
|
@@ -247,7 +242,8 @@ static VALUE libvirt_conn_node_free_memory(VALUE s) {
|
|
247
242
|
* to retrieve the amount of free memory in each NUMA cell on the host for
|
248
243
|
* this connection.
|
249
244
|
*/
|
250
|
-
static VALUE libvirt_conn_node_cells_free_memory(int argc, VALUE *argv,
|
245
|
+
static VALUE libvirt_conn_node_cells_free_memory(int argc, VALUE *argv,
|
246
|
+
VALUE s) {
|
251
247
|
int r;
|
252
248
|
virConnectPtr conn = connect_get(s);
|
253
249
|
VALUE cells;
|
@@ -366,7 +362,7 @@ static VALUE libvirt_conn_compare_cpu(int argc, VALUE *argv, VALUE s) {
|
|
366
362
|
|
367
363
|
rb_scan_args(argc, argv, "11", &xml, &flags);
|
368
364
|
if (NIL_P(flags))
|
369
|
-
flags =
|
365
|
+
flags = INT2NUM(0);
|
370
366
|
|
371
367
|
gen_call_int(virConnectCompareCPU, conn(s), connect_get(s),
|
372
368
|
StringValueCStr(xml), NUM2UINT(flags));
|
@@ -396,6 +392,10 @@ static VALUE libvirt_conn_baseline_cpu(int argc, VALUE *argv, VALUE s) {
|
|
396
392
|
struct rb_ary_entry_arg arg;
|
397
393
|
|
398
394
|
rb_scan_args(argc, argv, "11", &xmlcpus, &flags_val);
|
395
|
+
/*
|
396
|
+
* We check flags up-front here so that we get a TypeError early on if
|
397
|
+
* flags is bogus.
|
398
|
+
*/
|
399
399
|
if (NIL_P(flags_val))
|
400
400
|
flags = 0;
|
401
401
|
else
|
@@ -456,17 +456,21 @@ static int domain_event_lifecycle_callback(virConnectPtr conn,
|
|
456
456
|
rb_raise(rb_eTypeError,
|
457
457
|
"wrong domain event lifecycle callback argument type (expected Array)");
|
458
458
|
|
459
|
+
if (RARRAY_LEN(passthrough) != 2)
|
460
|
+
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)",
|
461
|
+
RARRAY_LEN(passthrough));
|
462
|
+
|
459
463
|
cb = rb_ary_entry(passthrough, 0);
|
460
464
|
cb_opaque = rb_ary_entry(passthrough, 1);
|
461
465
|
|
462
466
|
newc = connect_new(conn);
|
463
467
|
if (strcmp(rb_obj_classname(cb), "Symbol") == 0)
|
464
468
|
rb_funcall(rb_class_of(cb), rb_to_id(cb), 5, newc,
|
465
|
-
domain_new(dom, newc),
|
469
|
+
domain_new(dom, newc), INT2NUM(event), INT2NUM(detail),
|
466
470
|
cb_opaque);
|
467
471
|
else if (strcmp(rb_obj_classname(cb), "Proc") == 0)
|
468
472
|
rb_funcall(cb, rb_intern("call"), 5, newc, domain_new(dom, newc),
|
469
|
-
|
473
|
+
INT2NUM(event), INT2NUM(detail), cb_opaque);
|
470
474
|
else
|
471
475
|
rb_raise(rb_eTypeError,
|
472
476
|
"wrong domain event lifecycle callback (expected Symbol or Proc)");
|
@@ -487,6 +491,10 @@ static int domain_event_reboot_callback(virConnectPtr conn, virDomainPtr dom,
|
|
487
491
|
rb_raise(rb_eTypeError,
|
488
492
|
"wrong domain event reboot callback argument type (expected Array)");
|
489
493
|
|
494
|
+
if (RARRAY_LEN(passthrough) != 2)
|
495
|
+
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)",
|
496
|
+
RARRAY_LEN(passthrough));
|
497
|
+
|
490
498
|
cb = rb_ary_entry(passthrough, 0);
|
491
499
|
cb_opaque = rb_ary_entry(passthrough, 1);
|
492
500
|
|
@@ -515,6 +523,10 @@ static int domain_event_rtc_callback(virConnectPtr conn, virDomainPtr dom,
|
|
515
523
|
rb_raise(rb_eTypeError,
|
516
524
|
"wrong domain event rtc callback argument type (expected Array)");
|
517
525
|
|
526
|
+
if (RARRAY_LEN(passthrough) != 2)
|
527
|
+
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)",
|
528
|
+
RARRAY_LEN(passthrough));
|
529
|
+
|
518
530
|
cb = rb_ary_entry(passthrough, 0);
|
519
531
|
cb_opaque = rb_ary_entry(passthrough, 1);
|
520
532
|
|
@@ -543,16 +555,20 @@ static int domain_event_watchdog_callback(virConnectPtr conn, virDomainPtr dom,
|
|
543
555
|
rb_raise(rb_eTypeError,
|
544
556
|
"wrong domain event watchdog callback argument type (expected Array)");
|
545
557
|
|
558
|
+
if (RARRAY_LEN(passthrough) != 2)
|
559
|
+
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)",
|
560
|
+
RARRAY_LEN(passthrough));
|
561
|
+
|
546
562
|
cb = rb_ary_entry(passthrough, 0);
|
547
563
|
cb_opaque = rb_ary_entry(passthrough, 1);
|
548
564
|
|
549
565
|
newc = connect_new(conn);
|
550
566
|
if (strcmp(rb_obj_classname(cb), "Symbol") == 0)
|
551
567
|
rb_funcall(rb_class_of(cb), rb_to_id(cb), 4, newc,
|
552
|
-
domain_new(dom, newc),
|
568
|
+
domain_new(dom, newc), INT2NUM(action), cb_opaque);
|
553
569
|
else if (strcmp(rb_obj_classname(cb), "Proc") == 0)
|
554
570
|
rb_funcall(cb, rb_intern("call"), 4, newc, domain_new(dom, newc),
|
555
|
-
|
571
|
+
INT2NUM(action), cb_opaque);
|
556
572
|
else
|
557
573
|
rb_raise(rb_eTypeError,
|
558
574
|
"wrong domain event watchdog callback (expected Symbol or Proc)");
|
@@ -574,6 +590,10 @@ static int domain_event_io_error_callback(virConnectPtr conn, virDomainPtr dom,
|
|
574
590
|
rb_raise(rb_eTypeError,
|
575
591
|
"wrong domain event IO error callback argument type (expected Array)");
|
576
592
|
|
593
|
+
if (RARRAY_LEN(passthrough) != 2)
|
594
|
+
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)",
|
595
|
+
RARRAY_LEN(passthrough));
|
596
|
+
|
577
597
|
cb = rb_ary_entry(passthrough, 0);
|
578
598
|
cb_opaque = rb_ary_entry(passthrough, 1);
|
579
599
|
|
@@ -581,11 +601,11 @@ static int domain_event_io_error_callback(virConnectPtr conn, virDomainPtr dom,
|
|
581
601
|
if (strcmp(rb_obj_classname(cb), "Symbol") == 0)
|
582
602
|
rb_funcall(rb_class_of(cb), rb_to_id(cb), 6, newc,
|
583
603
|
domain_new(dom, newc), rb_str_new2(src_path),
|
584
|
-
rb_str_new2(dev_alias),
|
604
|
+
rb_str_new2(dev_alias), INT2NUM(action), cb_opaque);
|
585
605
|
else if (strcmp(rb_obj_classname(cb), "Proc") == 0)
|
586
606
|
rb_funcall(cb, rb_intern("call"), 6, newc, domain_new(dom, newc),
|
587
607
|
rb_str_new2(src_path), rb_str_new2(dev_alias),
|
588
|
-
|
608
|
+
INT2NUM(action), cb_opaque);
|
589
609
|
else
|
590
610
|
rb_raise(rb_eTypeError,
|
591
611
|
"wrong domain event IO error callback (expected Symbol or Proc)");
|
@@ -609,6 +629,10 @@ static int domain_event_io_error_reason_callback(virConnectPtr conn,
|
|
609
629
|
rb_raise(rb_eTypeError,
|
610
630
|
"wrong domain event IO error reason callback argument type (expected Array)");
|
611
631
|
|
632
|
+
if (RARRAY_LEN(passthrough) != 2)
|
633
|
+
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)",
|
634
|
+
RARRAY_LEN(passthrough));
|
635
|
+
|
612
636
|
cb = rb_ary_entry(passthrough, 0);
|
613
637
|
cb_opaque = rb_ary_entry(passthrough, 1);
|
614
638
|
|
@@ -616,12 +640,12 @@ static int domain_event_io_error_reason_callback(virConnectPtr conn,
|
|
616
640
|
if (strcmp(rb_obj_classname(cb), "Symbol") == 0)
|
617
641
|
rb_funcall(rb_class_of(cb), rb_to_id(cb), 7, newc,
|
618
642
|
domain_new(dom, newc), rb_str_new2(src_path),
|
619
|
-
rb_str_new2(dev_alias),
|
643
|
+
rb_str_new2(dev_alias), INT2NUM(action),
|
620
644
|
rb_str_new2(reason), cb_opaque);
|
621
645
|
else if (strcmp(rb_obj_classname(cb), "Proc") == 0)
|
622
646
|
rb_funcall(cb, rb_intern("call"), 7, newc, domain_new(dom, newc),
|
623
647
|
rb_str_new2(src_path), rb_str_new2(dev_alias),
|
624
|
-
|
648
|
+
INT2NUM(action), rb_str_new2(reason), cb_opaque);
|
625
649
|
else
|
626
650
|
rb_raise(rb_eTypeError,
|
627
651
|
"wrong domain event IO error reason callback (expected Symbol or Proc)");
|
@@ -650,17 +674,21 @@ static int domain_event_graphics_callback(virConnectPtr conn, virDomainPtr dom,
|
|
650
674
|
rb_raise(rb_eTypeError,
|
651
675
|
"wrong domain event graphics callback argument type (expected Array)");
|
652
676
|
|
677
|
+
if (RARRAY_LEN(passthrough) != 2)
|
678
|
+
rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)",
|
679
|
+
RARRAY_LEN(passthrough));
|
680
|
+
|
653
681
|
cb = rb_ary_entry(passthrough, 0);
|
654
682
|
cb_opaque = rb_ary_entry(passthrough, 1);
|
655
683
|
|
656
684
|
local_hash = rb_hash_new();
|
657
|
-
rb_hash_aset(local_hash, rb_str_new2("family"),
|
685
|
+
rb_hash_aset(local_hash, rb_str_new2("family"), INT2NUM(local->family));
|
658
686
|
rb_hash_aset(local_hash, rb_str_new2("node"), rb_str_new2(local->node));
|
659
687
|
rb_hash_aset(local_hash, rb_str_new2("service"),
|
660
688
|
rb_str_new2(local->service));
|
661
689
|
|
662
690
|
remote_hash = rb_hash_new();
|
663
|
-
rb_hash_aset(remote_hash, rb_str_new2("family"),
|
691
|
+
rb_hash_aset(remote_hash, rb_str_new2("family"), INT2NUM(remote->family));
|
664
692
|
rb_hash_aset(remote_hash, rb_str_new2("node"), rb_str_new2(remote->node));
|
665
693
|
rb_hash_aset(remote_hash, rb_str_new2("service"),
|
666
694
|
rb_str_new2(remote->service));
|
@@ -677,12 +705,12 @@ static int domain_event_graphics_callback(virConnectPtr conn, virDomainPtr dom,
|
|
677
705
|
newc = connect_new(conn);
|
678
706
|
if (strcmp(rb_obj_classname(cb), "Symbol") == 0)
|
679
707
|
rb_funcall(rb_class_of(cb), rb_to_id(cb), 8, newc,
|
680
|
-
domain_new(dom, newc),
|
708
|
+
domain_new(dom, newc), INT2NUM(phase), local_hash,
|
681
709
|
remote_hash, rb_str_new2(authScheme), subject_array,
|
682
710
|
cb_opaque);
|
683
711
|
else if (strcmp(rb_obj_classname(cb), "Proc") == 0)
|
684
712
|
rb_funcall(cb, rb_intern("call"), 8, newc, domain_new(dom, newc),
|
685
|
-
|
713
|
+
INT2NUM(phase), local_hash, remote_hash,
|
686
714
|
rb_str_new2(authScheme), subject_array, cb_opaque);
|
687
715
|
else
|
688
716
|
rb_raise(rb_eTypeError,
|
@@ -698,7 +726,7 @@ static int domain_event_graphics_callback(virConnectPtr conn, virDomainPtr dom,
|
|
698
726
|
* Call +virConnectDomainEventRegisterAny+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectDomainEventRegisterAny]
|
699
727
|
* to register callback for eventID with libvirt. The eventID must be one of
|
700
728
|
* the Libvirt::Connect::DOMAIN_EVENT_ID_* constants. The callback can either
|
701
|
-
*
|
729
|
+
* be a Symbol (that is the name of a method to callback) or a Proc. Note that
|
702
730
|
* the callback must accept different numbers of arguments depending on the
|
703
731
|
* eventID passed in. The arguments are as follows:
|
704
732
|
*
|
@@ -804,7 +832,7 @@ static int domain_event_callback(virConnectPtr conn,
|
|
804
832
|
*
|
805
833
|
* Call +virConnectDomainEventRegister+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectDomainEventRegister]
|
806
834
|
* to register callback for domain lifecycle events with libvirt. The
|
807
|
-
* callback can either
|
835
|
+
* callback can either be a Symbol (that is the name of a method to callback)
|
808
836
|
* or a Proc. The callback must accept 5 parameters: Libvirt::Connect,
|
809
837
|
* Libvirt::Domain, event, detail, opaque. The opaque parameter to
|
810
838
|
* domain_event_register can be any valid ruby type, and will be passed into
|
@@ -932,7 +960,7 @@ static VALUE libvirt_conn_list_defined_domains(VALUE s) {
|
|
932
960
|
*
|
933
961
|
* Call +virDomainCreateLinux+[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainCreateLinux]
|
934
962
|
* to start a transient domain from the given XML. Deprecated; use
|
935
|
-
*
|
963
|
+
* conn.create_domain_xml instead.
|
936
964
|
*/
|
937
965
|
static VALUE libvirt_conn_create_linux(int argc, VALUE *argv, VALUE c) {
|
938
966
|
virDomainPtr dom;
|
@@ -942,7 +970,7 @@ static VALUE libvirt_conn_create_linux(int argc, VALUE *argv, VALUE c) {
|
|
942
970
|
rb_scan_args(argc, argv, "11", &xml, &flags);
|
943
971
|
|
944
972
|
if (NIL_P(flags))
|
945
|
-
flags =
|
973
|
+
flags = INT2NUM(0);
|
946
974
|
|
947
975
|
dom = virDomainCreateLinux(conn, StringValueCStr(xml), NUM2UINT(flags));
|
948
976
|
_E(dom == NULL, create_error(e_Error, "virDomainCreateLinux", conn));
|
@@ -966,7 +994,7 @@ static VALUE libvirt_conn_create_xml(int argc, VALUE *argv, VALUE c) {
|
|
966
994
|
rb_scan_args(argc, argv, "11", &xml, &flags);
|
967
995
|
|
968
996
|
if (NIL_P(flags))
|
969
|
-
flags =
|
997
|
+
flags = INT2NUM(0);
|
970
998
|
|
971
999
|
dom = virDomainCreateXML(conn, StringValueCStr(xml), NUM2UINT(flags));
|
972
1000
|
_E(dom == NULL, create_error(e_Error, "virDomainCreateXML", conn));
|
@@ -1055,7 +1083,8 @@ static VALUE libvirt_conn_define_domain_xml(VALUE c, VALUE xml) {
|
|
1055
1083
|
* Call +virConnectDomainXMLFromNative+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectDomainXMLFromNative]
|
1056
1084
|
* to convert a native hypervisor domain representation to libvirt XML.
|
1057
1085
|
*/
|
1058
|
-
static VALUE libvirt_conn_domain_xml_from_native(int argc, VALUE *argv,
|
1086
|
+
static VALUE libvirt_conn_domain_xml_from_native(int argc, VALUE *argv,
|
1087
|
+
VALUE s) {
|
1059
1088
|
VALUE nativeFormat, xml, flags;
|
1060
1089
|
char *ret;
|
1061
1090
|
VALUE result;
|
@@ -1063,7 +1092,7 @@ static VALUE libvirt_conn_domain_xml_from_native(int argc, VALUE *argv, VALUE s)
|
|
1063
1092
|
rb_scan_args(argc, argv, "21", &nativeFormat, &xml, &flags);
|
1064
1093
|
|
1065
1094
|
if (NIL_P(flags))
|
1066
|
-
flags =
|
1095
|
+
flags = INT2NUM(0);
|
1067
1096
|
|
1068
1097
|
ret = virConnectDomainXMLFromNative(conn(s), StringValueCStr(nativeFormat),
|
1069
1098
|
StringValueCStr(xml), NUM2UINT(flags));
|
@@ -1094,7 +1123,7 @@ static VALUE libvirt_conn_domain_xml_to_native(int argc, VALUE *argv, VALUE s) {
|
|
1094
1123
|
rb_scan_args(argc, argv, "21", &nativeFormat, &xml, &flags);
|
1095
1124
|
|
1096
1125
|
if (NIL_P(flags))
|
1097
|
-
flags =
|
1126
|
+
flags = INT2NUM(0);
|
1098
1127
|
|
1099
1128
|
ret = virConnectDomainXMLToNative(conn(s), StringValueCStr(nativeFormat),
|
1100
1129
|
StringValueCStr(xml), NUM2UINT(flags));
|
@@ -1206,7 +1235,7 @@ static VALUE libvirt_conn_define_interface_xml(int argc, VALUE *argv, VALUE c) {
|
|
1206
1235
|
rb_scan_args(argc, argv, "11", &xml, &flags);
|
1207
1236
|
|
1208
1237
|
if (NIL_P(flags))
|
1209
|
-
flags =
|
1238
|
+
flags = INT2NUM(0);
|
1210
1239
|
|
1211
1240
|
iface = virInterfaceDefineXML(conn, StringValueCStr(xml), NUM2UINT(flags));
|
1212
1241
|
_E(iface == NULL, create_error(e_DefinitionError, "virInterfaceDefineXML",
|
@@ -1349,7 +1378,7 @@ static VALUE libvirt_conn_num_of_nodedevices(int argc, VALUE *argv, VALUE c) {
|
|
1349
1378
|
rb_scan_args(argc, argv, "02", &cap, &flags);
|
1350
1379
|
|
1351
1380
|
if (NIL_P(flags))
|
1352
|
-
flags =
|
1381
|
+
flags = INT2NUM(0);
|
1353
1382
|
|
1354
1383
|
result = virNodeNumOfDevices(conn, get_string_or_nil(cap), NUM2UINT(flags));
|
1355
1384
|
_E(result < 0, create_error(e_RetrieveError, "virNodeNumOfDevices", conn));
|
@@ -1424,7 +1453,8 @@ static VALUE libvirt_conn_lookup_nodedevice_by_name(VALUE c, VALUE name) {
|
|
1424
1453
|
* Call +virNodeDeviceCreateXML+[http://www.libvirt.org/html/libvirt-libvirt.html#virNodeDeviceCreateXML]
|
1425
1454
|
* to create a new node device from xml.
|
1426
1455
|
*/
|
1427
|
-
static VALUE libvirt_conn_create_nodedevice_xml(int argc, VALUE *argv,
|
1456
|
+
static VALUE libvirt_conn_create_nodedevice_xml(int argc, VALUE *argv,
|
1457
|
+
VALUE c) {
|
1428
1458
|
virNodeDevicePtr nodedev;
|
1429
1459
|
virConnectPtr conn = connect_get(c);
|
1430
1460
|
VALUE xml, flags;
|
@@ -1432,7 +1462,7 @@ static VALUE libvirt_conn_create_nodedevice_xml(int argc, VALUE *argv, VALUE c)
|
|
1432
1462
|
rb_scan_args(argc, argv, "11", &xml, &flags);
|
1433
1463
|
|
1434
1464
|
if (NIL_P(flags))
|
1435
|
-
flags =
|
1465
|
+
flags = INT2NUM(0);
|
1436
1466
|
|
1437
1467
|
nodedev = virNodeDeviceCreateXML(conn, StringValueCStr(xml),
|
1438
1468
|
NUM2UINT(flags));
|
@@ -1573,7 +1603,8 @@ static VALUE libvirt_conn_lookup_secret_by_uuid(VALUE c, VALUE uuid) {
|
|
1573
1603
|
* Call +virSecretLookupByUsage+[http://www.libvirt.org/html/libvirt-libvirt.html#virSecretLookupByUsage]
|
1574
1604
|
* to retrieve a secret by usagetype.
|
1575
1605
|
*/
|
1576
|
-
static VALUE libvirt_conn_lookup_secret_by_usage(VALUE c, VALUE usagetype,
|
1606
|
+
static VALUE libvirt_conn_lookup_secret_by_usage(VALUE c, VALUE usagetype,
|
1607
|
+
VALUE usageID) {
|
1577
1608
|
virSecretPtr secret;
|
1578
1609
|
virConnectPtr conn = connect_get(c);
|
1579
1610
|
|
@@ -1600,7 +1631,7 @@ static VALUE libvirt_conn_define_secret_xml(int argc, VALUE *argv, VALUE c) {
|
|
1600
1631
|
rb_scan_args(argc, argv, "11", &xml, &flags);
|
1601
1632
|
|
1602
1633
|
if (NIL_P(flags))
|
1603
|
-
flags =
|
1634
|
+
flags = INT2NUM(0);
|
1604
1635
|
|
1605
1636
|
secret = virSecretDefineXML(conn, StringValueCStr(xml), NUM2UINT(flags));
|
1606
1637
|
_E(secret == NULL, create_error(e_DefinitionError, "virSecretDefineXML",
|
@@ -1709,7 +1740,7 @@ static VALUE libvirt_conn_create_pool_xml(int argc, VALUE *argv, VALUE c) {
|
|
1709
1740
|
rb_scan_args(argc, argv, "11", &xml, &flags);
|
1710
1741
|
|
1711
1742
|
if (NIL_P(flags))
|
1712
|
-
flags =
|
1743
|
+
flags = INT2NUM(0);
|
1713
1744
|
|
1714
1745
|
pool = virStoragePoolCreateXML(conn, StringValueCStr(xml), NUM2UINT(flags));
|
1715
1746
|
_E(pool == NULL, create_error(e_Error, "virStoragePoolCreateXML", conn));
|
@@ -1732,7 +1763,7 @@ static VALUE libvirt_conn_define_pool_xml(int argc, VALUE *argv, VALUE c) {
|
|
1732
1763
|
rb_scan_args(argc, argv, "11", &xml, &flags);
|
1733
1764
|
|
1734
1765
|
if (NIL_P(flags))
|
1735
|
-
flags =
|
1766
|
+
flags = INT2NUM(0);
|
1736
1767
|
|
1737
1768
|
pool = virStoragePoolDefineXML(conn, StringValueCStr(xml), NUM2UINT(flags));
|
1738
1769
|
_E(pool == NULL, create_error(e_DefinitionError, "virStoragePoolDefineXML",
|
@@ -1748,13 +1779,14 @@ static VALUE libvirt_conn_define_pool_xml(int argc, VALUE *argv, VALUE c) {
|
|
1748
1779
|
* Call +virConnectFindStoragePoolSources+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectFindStoragePoolSources]
|
1749
1780
|
* to find the storage pool sources corresponding to type.
|
1750
1781
|
*/
|
1751
|
-
static VALUE libvirt_conn_find_storage_pool_sources(int argc, VALUE *argv,
|
1782
|
+
static VALUE libvirt_conn_find_storage_pool_sources(int argc, VALUE *argv,
|
1783
|
+
VALUE c) {
|
1752
1784
|
VALUE type, srcSpec_val, flags;
|
1753
1785
|
|
1754
1786
|
rb_scan_args(argc, argv, "12", &type, &srcSpec_val, &flags);
|
1755
1787
|
|
1756
1788
|
if (NIL_P(flags))
|
1757
|
-
flags =
|
1789
|
+
flags = INT2NUM(0);
|
1758
1790
|
|
1759
1791
|
gen_call_string(virConnectFindStoragePoolSources, conn(c), 1,
|
1760
1792
|
connect_get(c), StringValueCStr(type),
|
@@ -1762,6 +1794,110 @@ static VALUE libvirt_conn_find_storage_pool_sources(int argc, VALUE *argv, VALUE
|
|
1762
1794
|
}
|
1763
1795
|
#endif
|
1764
1796
|
|
1797
|
+
#if HAVE_VIRCONNECTGETSYSINFO
|
1798
|
+
/*
|
1799
|
+
* call-seq:
|
1800
|
+
* conn.sys_info(flags=0) -> string
|
1801
|
+
*
|
1802
|
+
* Call +virConnectGetSysinfo+[http://www.libvirt.org/html/libvirt-libvirt.html#virConnectGetSysinfo]
|
1803
|
+
* to get machine-specific information about the hypervisor. This may include
|
1804
|
+
* data such as the host UUID, the BIOS version, etc.
|
1805
|
+
*/
|
1806
|
+
static VALUE libvirt_conn_get_sys_info(int argc, VALUE *argv, VALUE c) {
|
1807
|
+
VALUE flags;
|
1808
|
+
|
1809
|
+
rb_scan_args(argc, argv, "01", &flags);
|
1810
|
+
|
1811
|
+
if (NIL_P(flags))
|
1812
|
+
flags = INT2NUM(0);
|
1813
|
+
|
1814
|
+
gen_call_string(virConnectGetSysinfo, conn(c), 1, connect_get(c),
|
1815
|
+
NUM2UINT(flags));
|
1816
|
+
}
|
1817
|
+
#endif
|
1818
|
+
|
1819
|
+
#if HAVE_TYPE_VIRSTREAMPTR
|
1820
|
+
extern VALUE stream_new(virStreamPtr s, VALUE conn);
|
1821
|
+
|
1822
|
+
/*
|
1823
|
+
* call-seq:
|
1824
|
+
* conn.stream(flags=0) -> Libvirt::Stream
|
1825
|
+
*
|
1826
|
+
* Call +virStreamNew+[http://www.libvirt.org/html/libvirt-libvirt.html#virStreamNew]
|
1827
|
+
* to create a new stream.
|
1828
|
+
*/
|
1829
|
+
static VALUE libvirt_conn_stream(int argc, VALUE *argv, VALUE c) {
|
1830
|
+
VALUE flags;
|
1831
|
+
virStreamPtr stream;
|
1832
|
+
|
1833
|
+
rb_scan_args(argc, argv, "01", &flags);
|
1834
|
+
|
1835
|
+
if (NIL_P(flags))
|
1836
|
+
flags = INT2NUM(0);
|
1837
|
+
|
1838
|
+
stream = virStreamNew(connect_get(c), NUM2UINT(flags));
|
1839
|
+
|
1840
|
+
_E(stream == NULL, create_error(e_RetrieveError, "virStreamNew", conn(c)));
|
1841
|
+
|
1842
|
+
return stream_new(stream, c);
|
1843
|
+
}
|
1844
|
+
#endif
|
1845
|
+
|
1846
|
+
#if HAVE_VIRINTERFACECHANGEBEGIN
|
1847
|
+
/*
|
1848
|
+
* call-seq:
|
1849
|
+
* conn.interface_change_begin(flags=0) -> nil
|
1850
|
+
*
|
1851
|
+
* Call +virInterfaceChangeBegin+[http://www.libvirt.org/html/libvirt-libvirt.html#virInterfaceChangeBegin]
|
1852
|
+
* to create a restore point for interface changes. Once changes have been
|
1853
|
+
* made, conn.interface_change_commit can be used to commit the result or
|
1854
|
+
* conn.interface_change_rollback can be used to rollback to this restore point.
|
1855
|
+
*/
|
1856
|
+
static VALUE libvirt_conn_interface_change_begin(int argc, VALUE *argv,
|
1857
|
+
VALUE c) {
|
1858
|
+
VALUE flags;
|
1859
|
+
|
1860
|
+
rb_scan_args(argc, argv, "01", &flags);
|
1861
|
+
|
1862
|
+
gen_call_void(virInterfaceChangeBegin, conn(c), connect_get(c),
|
1863
|
+
NUM2UINT(flags));
|
1864
|
+
}
|
1865
|
+
|
1866
|
+
/*
|
1867
|
+
* call-seq:
|
1868
|
+
* conn.interface_change_commit(flags=0) -> nil
|
1869
|
+
*
|
1870
|
+
* Call +virInterfaceChangeCommit+[http://www.libvirt.org/html/libvirt-libvirt.html#virInterfaceChangeCommit]
|
1871
|
+
* to commit the interface changes since the last conn.interface_change_begin.
|
1872
|
+
*/
|
1873
|
+
static VALUE libvirt_conn_interface_change_commit(int argc, VALUE *argv,
|
1874
|
+
VALUE c) {
|
1875
|
+
VALUE flags;
|
1876
|
+
|
1877
|
+
rb_scan_args(argc, argv, "01", &flags);
|
1878
|
+
|
1879
|
+
gen_call_void(virInterfaceChangeCommit, conn(c), connect_get(c),
|
1880
|
+
NUM2UINT(flags));
|
1881
|
+
}
|
1882
|
+
|
1883
|
+
/*
|
1884
|
+
* call-seq:
|
1885
|
+
* conn.interface_change_rollback(flags=0) -> nil
|
1886
|
+
*
|
1887
|
+
* Call +virInterfaceChangeRollback+[http://www.libvirt.org/html/libvirt-libvirt.html#virInterfaceChangeRollback]
|
1888
|
+
* to rollback to the restore point saved by conn.interface_change_begin.
|
1889
|
+
*/
|
1890
|
+
static VALUE libvirt_conn_interface_change_rollback(int argc, VALUE *argv,
|
1891
|
+
VALUE c) {
|
1892
|
+
VALUE flags;
|
1893
|
+
|
1894
|
+
rb_scan_args(argc, argv, "01", &flags);
|
1895
|
+
|
1896
|
+
gen_call_void(virInterfaceChangeRollback, conn(c), connect_get(c),
|
1897
|
+
NUM2UINT(flags));
|
1898
|
+
}
|
1899
|
+
#endif
|
1900
|
+
|
1765
1901
|
/*
|
1766
1902
|
* Class Libvirt::Connect
|
1767
1903
|
*/
|
@@ -1840,7 +1976,7 @@ void init_connect()
|
|
1840
1976
|
* then ADDED and REMOVED were renamed to DEFINED and UNDEFINED at
|
1841
1977
|
* the same time that the details were added
|
1842
1978
|
* (d3d54d2fc92e350f250eda26cee5d0342416a9cf). What this means is that
|
1843
|
-
*
|
1979
|
+
* we have to check for HAVE_CONST_VIR_DOMAIN_EVENT_DEFINED and
|
1844
1980
|
* HAVE_CONST_VIR_DOMAIN_EVENT_STARTED to untangle these, and then we
|
1845
1981
|
* can make a decision for many of the events based on that.
|
1846
1982
|
*/
|
@@ -1961,6 +2097,11 @@ void init_connect()
|
|
1961
2097
|
INT2NUM(VIR_DOMAIN_EVENT_ID_IO_ERROR_REASON));
|
1962
2098
|
#endif
|
1963
2099
|
|
2100
|
+
#if HAVE_CONST_VIR_DOMAIN_EVENT_ID_CONTROL_ERROR
|
2101
|
+
rb_define_const(c_connect, "DOMAIN_EVENT_ID_CONTROL_ERROR",
|
2102
|
+
INT2NUM(VIR_DOMAIN_EVENT_ID_CONTROL_ERROR));
|
2103
|
+
#endif
|
2104
|
+
|
1964
2105
|
#if HAVE_VIRCONNECTDOMAINEVENTREGISTER
|
1965
2106
|
rb_define_method(c_connect, "domain_event_register",
|
1966
2107
|
libvirt_conn_domain_event_register, -1);
|
@@ -2105,4 +2246,20 @@ void init_connect()
|
|
2105
2246
|
rb_define_method(c_connect, "discover_storage_pool_sources",
|
2106
2247
|
libvirt_conn_find_storage_pool_sources, -1);
|
2107
2248
|
#endif
|
2249
|
+
|
2250
|
+
#if HAVE_VIRCONNECTGETSYSINFO
|
2251
|
+
rb_define_method(c_connect, "sys_info", libvirt_conn_get_sys_info, -1);
|
2252
|
+
#endif
|
2253
|
+
#if HAVE_TYPE_VIRSTREAMPTR
|
2254
|
+
rb_define_method(c_connect, "stream", libvirt_conn_stream, -1);
|
2255
|
+
#endif
|
2256
|
+
|
2257
|
+
#if HAVE_VIRINTERFACECHANGEBEGIN
|
2258
|
+
rb_define_method(c_connect, "interface_change_begin",
|
2259
|
+
libvirt_conn_interface_change_begin, -1);
|
2260
|
+
rb_define_method(c_connect, "interface_change_commit",
|
2261
|
+
libvirt_conn_interface_change_commit, -1);
|
2262
|
+
rb_define_method(c_connect, "interface_change_rollback",
|
2263
|
+
libvirt_conn_interface_change_rollback, -1);
|
2264
|
+
#endif
|
2108
2265
|
}
|