ruby-libvirt 0.5.2 → 0.6.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 +4 -4
- data/NEWS +15 -2
- data/Rakefile +2 -3
- data/ext/libvirt/common.c +18 -9
- data/ext/libvirt/common.h +10 -0
- data/ext/libvirt/connect.c +207 -56
- data/ext/libvirt/domain.c +345 -37
- data/ext/libvirt/extconf.h +380 -0
- data/ext/libvirt/extconf.rb +32 -0
- data/ext/libvirt/interface.c +3 -3
- data/ext/libvirt/network.c +98 -5
- data/ext/libvirt/nodedevice.c +4 -4
- data/ext/libvirt/nwfilter.c +3 -3
- data/ext/libvirt/secret.c +5 -5
- data/ext/libvirt/storage.c +15 -12
- data/tests/test_conn.rb +11 -13
- data/tests/test_domain.rb +3 -3
- data/tests/test_interface.rb +4 -4
- data/tests/test_network.rb +1 -1
- data/tests/test_nwfilter.rb +1 -1
- data/tests/test_storage.rb +5 -5
- data/tests/test_utils.rb +10 -10
- metadata +10 -9
data/ext/libvirt/domain.c
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
* domain.c: virDomain methods
|
3
3
|
*
|
4
4
|
* Copyright (C) 2007,2010 Red Hat Inc.
|
5
|
-
* Copyright (C) 2013 Chris Lalancette <clalancette@gmail.com>
|
5
|
+
* Copyright (C) 2013,2014 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
|
@@ -718,7 +718,7 @@ static VALUE libvirt_domain_block_info(int argc, VALUE *argv, VALUE d)
|
|
718
718
|
#if HAVE_VIRDOMAINBLOCKPEEK
|
719
719
|
/*
|
720
720
|
* call-seq:
|
721
|
-
* dom.block_peek(path, offset, size, flags=0) ->
|
721
|
+
* dom.block_peek(path, offset, size, flags=0) -> String
|
722
722
|
*
|
723
723
|
* Call virDomainBlockPeek[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainBlockPeek]
|
724
724
|
* to read size number of bytes, starting at offset offset from domain backing
|
@@ -748,7 +748,7 @@ static VALUE libvirt_domain_block_peek(int argc, VALUE *argv, VALUE d)
|
|
748
748
|
#if HAVE_VIRDOMAINMEMORYPEEK
|
749
749
|
/*
|
750
750
|
* call-seq:
|
751
|
-
* dom.memory_peek(start, size, flags=Libvirt::Domain::MEMORY_VIRTUAL) ->
|
751
|
+
* dom.memory_peek(start, size, flags=Libvirt::Domain::MEMORY_VIRTUAL) -> String
|
752
752
|
*
|
753
753
|
* Call virDomainMemoryPeek[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainMemoryPeek]
|
754
754
|
* to read size number of bytes from offset start from the domain memory.
|
@@ -803,7 +803,7 @@ static VALUE libvirt_domain_vcpus(VALUE d)
|
|
803
803
|
|
804
804
|
cpumaplen = VIR_CPU_MAPLEN(maxcpus);
|
805
805
|
|
806
|
-
cpumap = alloca(cpumaplen);
|
806
|
+
cpumap = alloca(sizeof(unsigned char) * cpumaplen);
|
807
807
|
|
808
808
|
r = virDomainGetVcpus(ruby_libvirt_domain_get(d), cpuinfo,
|
809
809
|
dominfo.nrVirtCpu, cpumap, cpumaplen);
|
@@ -928,7 +928,7 @@ static VALUE libvirt_domain_if_stats(VALUE d, VALUE sif)
|
|
928
928
|
|
929
929
|
/*
|
930
930
|
* call-seq:
|
931
|
-
* dom.name ->
|
931
|
+
* dom.name -> String
|
932
932
|
*
|
933
933
|
* Call virDomainGetName[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainGetName]
|
934
934
|
* to retrieve the name of this domain.
|
@@ -942,7 +942,7 @@ static VALUE libvirt_domain_name(VALUE d)
|
|
942
942
|
|
943
943
|
/*
|
944
944
|
* call-seq:
|
945
|
-
* dom.id ->
|
945
|
+
* dom.id -> Fixnum
|
946
946
|
*
|
947
947
|
* Call virDomainGetID[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainGetID]
|
948
948
|
* to retrieve the ID of this domain. If the domain isn't running, this will
|
@@ -967,7 +967,7 @@ static VALUE libvirt_domain_id(VALUE d)
|
|
967
967
|
|
968
968
|
/*
|
969
969
|
* call-seq:
|
970
|
-
* dom.uuid ->
|
970
|
+
* dom.uuid -> String
|
971
971
|
*
|
972
972
|
* Call virDomainGetUUIDString[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainGetUUIDString]
|
973
973
|
* to retrieve the UUID of this domain.
|
@@ -981,7 +981,7 @@ static VALUE libvirt_domain_uuid(VALUE d)
|
|
981
981
|
|
982
982
|
/*
|
983
983
|
* call-seq:
|
984
|
-
* dom.os_type ->
|
984
|
+
* dom.os_type -> String
|
985
985
|
*
|
986
986
|
* Call virDomainGetOSType[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainGetOSType]
|
987
987
|
* to retrieve the os_type of this domain. In libvirt terms, os_type determines
|
@@ -996,7 +996,7 @@ static VALUE libvirt_domain_os_type(VALUE d)
|
|
996
996
|
|
997
997
|
/*
|
998
998
|
* call-seq:
|
999
|
-
* dom.max_memory ->
|
999
|
+
* dom.max_memory -> Fixnum
|
1000
1000
|
*
|
1001
1001
|
* Call virDomainGetMaxMemory[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainGetMaxMemory]
|
1002
1002
|
* to retrieve the maximum amount of memory this domain is allowed to access.
|
@@ -1070,7 +1070,7 @@ static VALUE libvirt_domain_memory_equal(VALUE d, VALUE in)
|
|
1070
1070
|
|
1071
1071
|
/*
|
1072
1072
|
* call-seq:
|
1073
|
-
* dom.max_vcpus ->
|
1073
|
+
* dom.max_vcpus -> Fixnum
|
1074
1074
|
*
|
1075
1075
|
* Call virDomainGetMaxVcpus[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainGetMaxVcpus]
|
1076
1076
|
* to retrieve the maximum number of virtual CPUs this domain can use.
|
@@ -1084,7 +1084,7 @@ static VALUE libvirt_domain_max_vcpus(VALUE d)
|
|
1084
1084
|
|
1085
1085
|
#if HAVE_VIRDOMAINGETVCPUSFLAGS
|
1086
1086
|
/* call-seq:
|
1087
|
-
* dom.num_vcpus(flags) ->
|
1087
|
+
* dom.num_vcpus(flags) -> Fixnum
|
1088
1088
|
*
|
1089
1089
|
* Call virDomainGetVcpusFlags[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainGetVcpusFlags]
|
1090
1090
|
* to retrieve the number of virtual CPUs assigned to this domain.
|
@@ -1194,7 +1194,7 @@ static VALUE libvirt_domain_pin_vcpu(int argc, VALUE *argv, VALUE d)
|
|
1194
1194
|
|
1195
1195
|
cpumaplen = VIR_CPU_MAPLEN(maxcpus);
|
1196
1196
|
|
1197
|
-
cpumap = alloca(cpumaplen);
|
1197
|
+
cpumap = alloca(sizeof(unsigned char) * cpumaplen);
|
1198
1198
|
MEMZERO(cpumap, unsigned char, cpumaplen);
|
1199
1199
|
|
1200
1200
|
for (i = 0; i < RARRAY_LEN(cpulist); i++) {
|
@@ -1222,7 +1222,7 @@ static VALUE libvirt_domain_pin_vcpu(int argc, VALUE *argv, VALUE d)
|
|
1222
1222
|
|
1223
1223
|
/*
|
1224
1224
|
* call-seq:
|
1225
|
-
* dom.xml_desc(flags=0) ->
|
1225
|
+
* dom.xml_desc(flags=0) -> String
|
1226
1226
|
*
|
1227
1227
|
* Call virDomainGetXMLDesc[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainGetXMLDesc]
|
1228
1228
|
* to retrieve the XML describing this domain.
|
@@ -1478,7 +1478,7 @@ static VALUE libvirt_domain_snapshot_create_xml(int argc, VALUE *argv, VALUE d)
|
|
1478
1478
|
|
1479
1479
|
/*
|
1480
1480
|
* call-seq:
|
1481
|
-
* dom.num_of_snapshots(flags=0) ->
|
1481
|
+
* dom.num_of_snapshots(flags=0) -> Fixnum
|
1482
1482
|
*
|
1483
1483
|
* Call virDomainSnapshotNum[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainSnapshotNum]
|
1484
1484
|
* to retrieve the number of available snapshots for this domain.
|
@@ -1624,7 +1624,7 @@ static VALUE libvirt_domain_current_snapshot(int argc, VALUE *argv, VALUE d)
|
|
1624
1624
|
|
1625
1625
|
/*
|
1626
1626
|
* call-seq:
|
1627
|
-
* snapshot.xml_desc(flags=0) ->
|
1627
|
+
* snapshot.xml_desc(flags=0) -> String
|
1628
1628
|
*
|
1629
1629
|
* Call virDomainSnapshotGetXMLDesc[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainSnapshotGetXMLDesc]
|
1630
1630
|
* to retrieve the xml description for this snapshot.
|
@@ -1678,7 +1678,7 @@ static VALUE libvirt_domain_snapshot_free(VALUE s)
|
|
1678
1678
|
#if HAVE_VIRDOMAINSNAPSHOTGETNAME
|
1679
1679
|
/*
|
1680
1680
|
* call-seq:
|
1681
|
-
* snapshot.name ->
|
1681
|
+
* snapshot.name -> String
|
1682
1682
|
*
|
1683
1683
|
* Call virDomainSnapshotGetName[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainSnapshotGetName]
|
1684
1684
|
* to get the name associated with a snapshot.
|
@@ -1796,7 +1796,7 @@ static VALUE libvirt_domain_scheduler_type(VALUE d)
|
|
1796
1796
|
#if HAVE_VIRDOMAINQEMUMONITORCOMMAND
|
1797
1797
|
/*
|
1798
1798
|
* call-seq:
|
1799
|
-
* dom.qemu_monitor_command(cmd, flags=0) ->
|
1799
|
+
* dom.qemu_monitor_command(cmd, flags=0) -> String
|
1800
1800
|
*
|
1801
1801
|
* Call virDomainQemuMonitorCommand
|
1802
1802
|
* to send a qemu command directly to the monitor. Note that this will only
|
@@ -2330,7 +2330,7 @@ VALUE libvirt_domain_send_key(VALUE d, VALUE codeset, VALUE holdtime,
|
|
2330
2330
|
#if HAVE_VIRDOMAINMIGRATEGETMAXSPEED
|
2331
2331
|
/*
|
2332
2332
|
* call-seq:
|
2333
|
-
* dom.migrate_max_speed(flags=0) ->
|
2333
|
+
* dom.migrate_max_speed(flags=0) -> Fixnum
|
2334
2334
|
*
|
2335
2335
|
* Call virDomainMigrateGetMaxSpeed[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainMigrateGetMaxSpeed]
|
2336
2336
|
* to retrieve the maximum speed a migration can use.
|
@@ -2397,7 +2397,7 @@ static VALUE libvirt_domain_hostname(int argc, VALUE *argv, VALUE d)
|
|
2397
2397
|
#if HAVE_VIRDOMAINGETMETADATA
|
2398
2398
|
/*
|
2399
2399
|
* call-seq:
|
2400
|
-
* dom.metadata(type, uri=nil, flags=0) ->
|
2400
|
+
* dom.metadata(type, uri=nil, flags=0) -> String
|
2401
2401
|
*
|
2402
2402
|
* Call virDomainGetMetadata[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainGetMetadata]
|
2403
2403
|
* to get the metadata from a domain.
|
@@ -2487,7 +2487,7 @@ static VALUE libvirt_domain_send_process_signal(int argc, VALUE *argv, VALUE d)
|
|
2487
2487
|
#if HAVE_VIRDOMAINLISTALLSNAPSHOTS
|
2488
2488
|
/*
|
2489
2489
|
* call-seq:
|
2490
|
-
* dom.list_all_snapshots(flags=0) ->
|
2490
|
+
* dom.list_all_snapshots(flags=0) -> Array
|
2491
2491
|
*
|
2492
2492
|
* Call virDomainListAllSnapshots[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainListAllSnapshots]
|
2493
2493
|
* to get an array of snapshot objects for all snapshots.
|
@@ -2505,7 +2505,7 @@ static VALUE libvirt_domain_list_all_snapshots(int argc, VALUE *argv, VALUE d)
|
|
2505
2505
|
#if HAVE_VIRDOMAINSNAPSHOTNUMCHILDREN
|
2506
2506
|
/*
|
2507
2507
|
* call-seq:
|
2508
|
-
* snapshot.num_children(flags=0) ->
|
2508
|
+
* snapshot.num_children(flags=0) -> Fixnum
|
2509
2509
|
*
|
2510
2510
|
* Call virDomainSnapshotNumChildren[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainSnapshotNumChildren]
|
2511
2511
|
* to get the number of children snapshots of this snapshot.
|
@@ -2527,7 +2527,7 @@ static VALUE libvirt_domain_snapshot_num_children(int argc, VALUE *argv,
|
|
2527
2527
|
#if HAVE_VIRDOMAINSNAPSHOTLISTCHILDRENNAMES
|
2528
2528
|
/*
|
2529
2529
|
* call-seq:
|
2530
|
-
* snapshot.list_children_names(flags=0) ->
|
2530
|
+
* snapshot.list_children_names(flags=0) -> Array
|
2531
2531
|
*
|
2532
2532
|
* Call virDomainSnapshotListChildrenNames[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainSnapshotListChildrenNames]
|
2533
2533
|
* to get an array of strings representing the children of this snapshot.
|
@@ -2535,10 +2535,10 @@ static VALUE libvirt_domain_snapshot_num_children(int argc, VALUE *argv,
|
|
2535
2535
|
static VALUE libvirt_domain_snapshot_list_children_names(int argc, VALUE *argv,
|
2536
2536
|
VALUE s)
|
2537
2537
|
{
|
2538
|
-
VALUE flags, result
|
2538
|
+
VALUE flags, result;
|
2539
2539
|
char **children;
|
2540
2540
|
int num_children, ret, i, j, exception = 0;
|
2541
|
-
struct
|
2541
|
+
struct ruby_libvirt_str_new2_and_ary_store_arg arg;
|
2542
2542
|
|
2543
2543
|
rb_scan_args(argc, argv, "01", &flags);
|
2544
2544
|
|
@@ -2564,16 +2564,11 @@ static VALUE libvirt_domain_snapshot_list_children_names(int argc, VALUE *argv,
|
|
2564
2564
|
ruby_libvirt_connect_get(s));
|
2565
2565
|
|
2566
2566
|
for (i = 0; i < ret; i++) {
|
2567
|
-
str = rb_protect(ruby_libvirt_str_new2_wrap, (VALUE)&(children[i]),
|
2568
|
-
&exception);
|
2569
|
-
if (exception) {
|
2570
|
-
goto error;
|
2571
|
-
}
|
2572
|
-
|
2573
2567
|
arg.arr = result;
|
2574
2568
|
arg.index = i;
|
2575
|
-
arg.
|
2576
|
-
rb_protect(
|
2569
|
+
arg.value = children[i];
|
2570
|
+
rb_protect(ruby_libvirt_str_new2_and_ary_store_wrap, (VALUE)&arg,
|
2571
|
+
&exception);
|
2577
2572
|
if (exception) {
|
2578
2573
|
goto error;
|
2579
2574
|
}
|
@@ -2596,7 +2591,7 @@ error:
|
|
2596
2591
|
#if HAVE_VIRDOMAINSNAPSHOTLISTALLCHILDREN
|
2597
2592
|
/*
|
2598
2593
|
* call-seq:
|
2599
|
-
* snapshot.list_all_children(flags=0) ->
|
2594
|
+
* snapshot.list_all_children(flags=0) -> Array
|
2600
2595
|
*
|
2601
2596
|
* Call virDomainSnapshotListAllChildren[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainSnapshotListAllChildren]
|
2602
2597
|
* to get an array of snapshot objects that are children of this snapshot.
|
@@ -3026,7 +3021,7 @@ static VALUE libvirt_domain_emulator_pin_info(int argc, VALUE *argv, VALUE d)
|
|
3026
3021
|
|
3027
3022
|
cpumaplen = VIR_CPU_MAPLEN(maxcpus);
|
3028
3023
|
|
3029
|
-
cpumap = alloca(cpumaplen);
|
3024
|
+
cpumap = alloca(sizeof(unsigned char) * cpumaplen);
|
3030
3025
|
|
3031
3026
|
ret = virDomainGetEmulatorPinInfo(ruby_libvirt_domain_get(d), cpumap,
|
3032
3027
|
cpumaplen,
|
@@ -3070,7 +3065,7 @@ static VALUE libvirt_domain_pin_emulator(int argc, VALUE *argv, VALUE d)
|
|
3070
3065
|
|
3071
3066
|
cpumaplen = VIR_CPU_MAPLEN(maxcpus);
|
3072
3067
|
|
3073
|
-
cpumap = alloca(cpumaplen);
|
3068
|
+
cpumap = alloca(sizeof(unsigned char) * cpumaplen);
|
3074
3069
|
MEMZERO(cpumap, unsigned char, cpumaplen);
|
3075
3070
|
|
3076
3071
|
for (i = 0; i < RARRAY_LEN(cpulist); i++) {
|
@@ -3263,6 +3258,9 @@ static struct ruby_libvirt_typed_param iotune_allowed[] = {
|
|
3263
3258
|
{VIR_DOMAIN_BLOCK_IOTUNE_TOTAL_IOPS_SEC, VIR_TYPED_PARAM_ULLONG},
|
3264
3259
|
{VIR_DOMAIN_BLOCK_IOTUNE_READ_IOPS_SEC, VIR_TYPED_PARAM_ULLONG},
|
3265
3260
|
{VIR_DOMAIN_BLOCK_IOTUNE_WRITE_IOPS_SEC, VIR_TYPED_PARAM_ULLONG},
|
3261
|
+
#if HAVE_CONST_VIR_DOMAIN_BLOCK_IOTUNE_SIZE_IOPS_SEC
|
3262
|
+
{VIR_DOMAIN_BLOCK_IOTUNE_SIZE_IOPS_SEC, VIR_TYPED_PARAM_ULLONG},
|
3263
|
+
#endif
|
3266
3264
|
};
|
3267
3265
|
|
3268
3266
|
/*
|
@@ -3955,7 +3953,7 @@ static VALUE libvirt_domain_migrate_to_uri3(int argc, VALUE *argv, VALUE d)
|
|
3955
3953
|
}
|
3956
3954
|
#endif
|
3957
3955
|
|
3958
|
-
#if
|
3956
|
+
#if HAVE_VIRDOMAINGETCPUSTATS
|
3959
3957
|
/*
|
3960
3958
|
* call-seq:
|
3961
3959
|
* dom.cpu_stats(start_cpu=-1, numcpus=1, flags=0) -> Hash
|
@@ -4048,6 +4046,237 @@ static VALUE libvirt_domain_cpu_stats(int argc, VALUE *argv, VALUE d)
|
|
4048
4046
|
}
|
4049
4047
|
#endif
|
4050
4048
|
|
4049
|
+
#if HAVE_VIRDOMAINGETTIME
|
4050
|
+
/*
|
4051
|
+
* call-seq:
|
4052
|
+
* dom.time(flags=0) -> Hash
|
4053
|
+
* Call virDomainGetTime[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainGetTime]
|
4054
|
+
* to get information about the guest time.
|
4055
|
+
*/
|
4056
|
+
static VALUE libvirt_domain_get_time(int argc, VALUE *argv, VALUE d)
|
4057
|
+
{
|
4058
|
+
VALUE flags, result;
|
4059
|
+
long long seconds;
|
4060
|
+
unsigned int nseconds;
|
4061
|
+
int ret;
|
4062
|
+
|
4063
|
+
rb_scan_args(argc, argv, "01", &flags);
|
4064
|
+
|
4065
|
+
ret = virDomainGetTime(ruby_libvirt_domain_get(d), &seconds, &nseconds,
|
4066
|
+
ruby_libvirt_value_to_uint(flags));
|
4067
|
+
ruby_libvirt_raise_error_if(ret < 0, e_Error, "virDomainGetTime",
|
4068
|
+
ruby_libvirt_connect_get(d));
|
4069
|
+
|
4070
|
+
result = rb_hash_new();
|
4071
|
+
rb_hash_aset(result, rb_str_new2("seconds"), LL2NUM(seconds));
|
4072
|
+
rb_hash_aset(result, rb_str_new2("nseconds"), UINT2NUM(nseconds));
|
4073
|
+
|
4074
|
+
return result;
|
4075
|
+
}
|
4076
|
+
#endif
|
4077
|
+
|
4078
|
+
#if HAVE_VIRDOMAINSETTIME
|
4079
|
+
/*
|
4080
|
+
* call-seq:
|
4081
|
+
* dom.time = Hash,flags=0
|
4082
|
+
* Call virDomainSetTime[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainSetTime]
|
4083
|
+
* to set guest time.
|
4084
|
+
*/
|
4085
|
+
static VALUE libvirt_domain_time_equal(VALUE d, VALUE in)
|
4086
|
+
{
|
4087
|
+
VALUE hash, flags, seconds, nseconds;
|
4088
|
+
|
4089
|
+
ruby_libvirt_assign_hash_and_flags(in, &hash, &flags);
|
4090
|
+
|
4091
|
+
seconds = rb_hash_aref(hash, rb_str_new2("seconds"));
|
4092
|
+
nseconds = rb_hash_aref(hash, rb_str_new2("nseconds"));
|
4093
|
+
|
4094
|
+
ruby_libvirt_generate_call_nil(virDomainSetTime,
|
4095
|
+
ruby_libvirt_connect_get(d),
|
4096
|
+
ruby_libvirt_domain_get(d),
|
4097
|
+
NUM2LL(seconds), NUM2UINT(nseconds),
|
4098
|
+
NUM2UINT(flags));
|
4099
|
+
}
|
4100
|
+
#endif
|
4101
|
+
|
4102
|
+
#if HAVE_VIRDOMAINCOREDUMPWITHFORMAT
|
4103
|
+
/*
|
4104
|
+
* call-seq:
|
4105
|
+
* dom.core_dump_with_format(filename, dumpformat, flags=0) -> nil
|
4106
|
+
*
|
4107
|
+
* Call virDomainCoreDumpWithFormat[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainCoreDump]
|
4108
|
+
* to do a full memory dump of the domain to filename.
|
4109
|
+
*/
|
4110
|
+
static VALUE libvirt_domain_core_dump_with_format(int argc, VALUE *argv, VALUE d)
|
4111
|
+
{
|
4112
|
+
VALUE to, dumpformat, flags;
|
4113
|
+
|
4114
|
+
rb_scan_args(argc, argv, "21", &to, &dumpformat, &flags);
|
4115
|
+
|
4116
|
+
ruby_libvirt_generate_call_nil(virDomainCoreDumpWithFormat,
|
4117
|
+
ruby_libvirt_connect_get(d),
|
4118
|
+
ruby_libvirt_domain_get(d),
|
4119
|
+
StringValueCStr(to),
|
4120
|
+
NUM2UINT(dumpformat),
|
4121
|
+
ruby_libvirt_value_to_uint(flags));
|
4122
|
+
}
|
4123
|
+
#endif
|
4124
|
+
|
4125
|
+
#if HAVE_VIRDOMAINFSFREEZE
|
4126
|
+
/*
|
4127
|
+
* call-seq:
|
4128
|
+
* dom.fs_freeze(mountpoints=nil, flags=0) -> Fixnum
|
4129
|
+
*
|
4130
|
+
* Call virDomainFSFreeze[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainFSFreeze]
|
4131
|
+
* to freeze the specified filesystems within the guest.
|
4132
|
+
*/
|
4133
|
+
static VALUE libvirt_domain_fs_freeze(int argc, VALUE *argv, VALUE d)
|
4134
|
+
{
|
4135
|
+
VALUE mountpoints, flags, entry;
|
4136
|
+
const char **mnt;
|
4137
|
+
unsigned int nmountpoints;
|
4138
|
+
int i;
|
4139
|
+
|
4140
|
+
rb_scan_args(argc, argv, "02", &mountpoints, &flags);
|
4141
|
+
|
4142
|
+
if (NIL_P(mountpoints)) {
|
4143
|
+
mnt = NULL;
|
4144
|
+
nmountpoints = 0;
|
4145
|
+
}
|
4146
|
+
else {
|
4147
|
+
Check_Type(mountpoints, T_ARRAY);
|
4148
|
+
|
4149
|
+
nmountpoints = RARRAY_LEN(mountpoints);
|
4150
|
+
mnt = alloca(nmountpoints * sizeof(char *));
|
4151
|
+
|
4152
|
+
for (i = 0; i < nmountpoints; i++) {
|
4153
|
+
entry = rb_ary_entry(mountpoints, i);
|
4154
|
+
mnt[i] = StringValueCStr(entry);
|
4155
|
+
}
|
4156
|
+
}
|
4157
|
+
|
4158
|
+
ruby_libvirt_generate_call_int(virDomainFSFreeze,
|
4159
|
+
ruby_libvirt_connect_get(d),
|
4160
|
+
ruby_libvirt_domain_get(d),
|
4161
|
+
mnt, nmountpoints,
|
4162
|
+
ruby_libvirt_value_to_uint(flags));
|
4163
|
+
}
|
4164
|
+
#endif
|
4165
|
+
|
4166
|
+
#if HAVE_VIRDOMAINFSTHAW
|
4167
|
+
/*
|
4168
|
+
* call-seq:
|
4169
|
+
* dom.fs_thaw(mountpoints=nil, flags=0) -> Fixnum
|
4170
|
+
*
|
4171
|
+
* Call virDomainFSThaw[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainFSThaw]
|
4172
|
+
* to thaw the specified filesystems within the guest.
|
4173
|
+
*/
|
4174
|
+
static VALUE libvirt_domain_fs_thaw(int argc, VALUE *argv, VALUE d)
|
4175
|
+
{
|
4176
|
+
VALUE mountpoints, flags, entry;
|
4177
|
+
const char **mnt;
|
4178
|
+
unsigned int nmountpoints;
|
4179
|
+
int i;
|
4180
|
+
|
4181
|
+
rb_scan_args(argc, argv, "02", &mountpoints, &flags);
|
4182
|
+
|
4183
|
+
if (NIL_P(mountpoints)) {
|
4184
|
+
mnt = NULL;
|
4185
|
+
nmountpoints = 0;
|
4186
|
+
}
|
4187
|
+
else {
|
4188
|
+
Check_Type(mountpoints, T_ARRAY);
|
4189
|
+
|
4190
|
+
nmountpoints = RARRAY_LEN(mountpoints);
|
4191
|
+
mnt = alloca(nmountpoints * sizeof(char *));
|
4192
|
+
|
4193
|
+
for (i = 0; i < nmountpoints; i++) {
|
4194
|
+
entry = rb_ary_entry(mountpoints, i);
|
4195
|
+
mnt[i] = StringValueCStr(entry);
|
4196
|
+
}
|
4197
|
+
}
|
4198
|
+
|
4199
|
+
ruby_libvirt_generate_call_int(virDomainFSThaw,
|
4200
|
+
ruby_libvirt_connect_get(d),
|
4201
|
+
ruby_libvirt_domain_get(d),
|
4202
|
+
mnt, nmountpoints,
|
4203
|
+
ruby_libvirt_value_to_uint(flags));
|
4204
|
+
}
|
4205
|
+
#endif
|
4206
|
+
|
4207
|
+
#if HAVE_VIRDOMAINGETFSINFO
|
4208
|
+
struct fs_info_arg {
|
4209
|
+
virDomainFSInfoPtr *info;
|
4210
|
+
int ninfo;
|
4211
|
+
};
|
4212
|
+
|
4213
|
+
static VALUE fs_info_wrap(VALUE arg)
|
4214
|
+
{
|
4215
|
+
struct fs_info_arg *e = (struct fs_info_arg *)arg;
|
4216
|
+
VALUE aliases, entry, result;
|
4217
|
+
int i, j;
|
4218
|
+
|
4219
|
+
result = rb_ary_new2(e->ninfo);
|
4220
|
+
|
4221
|
+
for (i = 0; i < e->ninfo; i++) {
|
4222
|
+
aliases = rb_ary_new2(e->info[i]->ndevAlias);
|
4223
|
+
for (j = 0; j < e->info[i]->ndevAlias; j++) {
|
4224
|
+
rb_ary_store(aliases, j, rb_str_new2(e->info[i]->devAlias[j]));
|
4225
|
+
}
|
4226
|
+
|
4227
|
+
entry = rb_hash_new();
|
4228
|
+
rb_hash_aset(entry, rb_str_new2("mountpoint"),
|
4229
|
+
rb_str_new2(e->info[i]->mountpoint));
|
4230
|
+
rb_hash_aset(entry, rb_str_new2("name"),
|
4231
|
+
rb_str_new2(e->info[i]->name));
|
4232
|
+
rb_hash_aset(entry, rb_str_new2("fstype"),
|
4233
|
+
rb_str_new2(e->info[i]->fstype));
|
4234
|
+
rb_hash_aset(entry, rb_str_new2("aliases"), aliases);
|
4235
|
+
|
4236
|
+
rb_ary_store(result, i, entry);
|
4237
|
+
}
|
4238
|
+
|
4239
|
+
return result;
|
4240
|
+
}
|
4241
|
+
|
4242
|
+
/*
|
4243
|
+
* call-seq:
|
4244
|
+
* dom.fs_info(flags=0) -> [Hash]
|
4245
|
+
*
|
4246
|
+
* Call virDomainGetFSInfo[http://www.libvirt.org/html/libvirt-libvirt.html#virDomainGetFSInfo]
|
4247
|
+
* to get information about the guest filesystems.
|
4248
|
+
*/
|
4249
|
+
static VALUE libvirt_domain_fs_info(int argc, VALUE *argv, VALUE d)
|
4250
|
+
{
|
4251
|
+
VALUE flags, result;
|
4252
|
+
virDomainFSInfoPtr *info;
|
4253
|
+
int ret, i = 0, exception;
|
4254
|
+
struct fs_info_arg args;
|
4255
|
+
|
4256
|
+
rb_scan_args(argc, argv, "01", &flags);
|
4257
|
+
|
4258
|
+
ret = virDomainGetFSInfo(ruby_libvirt_domain_get(d), &info,
|
4259
|
+
ruby_libvirt_value_to_uint(flags));
|
4260
|
+
ruby_libvirt_raise_error_if(ret < 0, e_Error, "virDomainGetFSInfo",
|
4261
|
+
ruby_libvirt_connect_get(d));
|
4262
|
+
|
4263
|
+
args.info = info;
|
4264
|
+
args.ninfo = ret;
|
4265
|
+
result = rb_protect(fs_info_wrap, (VALUE)&args, &exception);
|
4266
|
+
|
4267
|
+
for (i = 0; i < ret; i++) {
|
4268
|
+
virDomainFSInfoFree(info[i]);
|
4269
|
+
}
|
4270
|
+
free(info);
|
4271
|
+
|
4272
|
+
if (exception) {
|
4273
|
+
rb_jump_tag(exception);
|
4274
|
+
}
|
4275
|
+
|
4276
|
+
return result;
|
4277
|
+
}
|
4278
|
+
#endif
|
4279
|
+
|
4051
4280
|
/*
|
4052
4281
|
* Class Libvirt::Domain
|
4053
4282
|
*/
|
@@ -4115,6 +4344,14 @@ void ruby_libvirt_domain_init(void)
|
|
4115
4344
|
rb_define_const(c_domain, "MIGRATE_ABORT_ON_ERROR",
|
4116
4345
|
INT2NUM(VIR_MIGRATE_ABORT_ON_ERROR));
|
4117
4346
|
#endif
|
4347
|
+
#if HAVE_CONST_VIR_MIGRATE_AUTO_CONVERGE
|
4348
|
+
rb_define_const(c_domain, "MIGRATE_AUTO_CONVERGE",
|
4349
|
+
INT2NUM(VIR_MIGRATE_AUTO_CONVERGE));
|
4350
|
+
#endif
|
4351
|
+
#if HAVE_CONST_VIR_MIGRATE_RDMA_PIN_ALL
|
4352
|
+
rb_define_const(c_domain, "MIGRATE_RDMA_PIN_ALL",
|
4353
|
+
INT2NUM(VIR_MIGRATE_RDMA_PIN_ALL));
|
4354
|
+
#endif
|
4118
4355
|
|
4119
4356
|
/* Ideally we would just have the "XML_SECURE" constant. Unfortunately
|
4120
4357
|
* we screwed up long ago, and we have to leave "DOMAIN_XML_SECURE" for
|
@@ -4238,7 +4475,10 @@ void ruby_libvirt_domain_init(void)
|
|
4238
4475
|
rb_define_const(c_domain, "UNDEFINE_SNAPSHOTS_METADATA",
|
4239
4476
|
INT2NUM(VIR_DOMAIN_UNDEFINE_SNAPSHOTS_METADATA));
|
4240
4477
|
#endif
|
4241
|
-
|
4478
|
+
#if HAVE_CONST_VIR_DOMAIN_UNDEFINE_NVRAM
|
4479
|
+
rb_define_const(c_domain, "UNDEFINE_NVRAM",
|
4480
|
+
INT2NUM(VIR_DOMAIN_UNDEFINE_NVRAM));
|
4481
|
+
#endif
|
4242
4482
|
rb_define_attr(c_domain, "connection", 1, 0);
|
4243
4483
|
|
4244
4484
|
#if HAVE_CONST_VIR_DOMAIN_SHUTDOWN_DEFAULT
|
@@ -4260,6 +4500,10 @@ void ruby_libvirt_domain_init(void)
|
|
4260
4500
|
#if HAVE_CONST_VIR_DOMAIN_SHUTDOWN_SIGNAL
|
4261
4501
|
rb_define_const(c_domain, "SHUTDOWN_SIGNAL",
|
4262
4502
|
INT2NUM(VIR_DOMAIN_SHUTDOWN_SIGNAL));
|
4503
|
+
#endif
|
4504
|
+
#if HAVE_CONST_VIR_DOMAIN_SHUTDOWN_PARAVIRT
|
4505
|
+
rb_define_const(c_domain, "SHUTDOWN_PARAVIRT",
|
4506
|
+
INT2NUM(VIR_DOMAIN_SHUTDOWN_PARAVIRT));
|
4263
4507
|
#endif
|
4264
4508
|
rb_define_method(c_domain, "shutdown", libvirt_domain_shutdown, -1);
|
4265
4509
|
|
@@ -4282,6 +4526,10 @@ void ruby_libvirt_domain_init(void)
|
|
4282
4526
|
#if HAVE_CONST_VIR_DOMAIN_REBOOT_SIGNAL
|
4283
4527
|
rb_define_const(c_domain, "REBOOT_SIGNAL",
|
4284
4528
|
INT2NUM(VIR_DOMAIN_REBOOT_SIGNAL));
|
4529
|
+
#endif
|
4530
|
+
#if HAVE_CONST_VIR_DOMAIN_REBOOT_PARAVIRT
|
4531
|
+
rb_define_const(c_domain, "REBOOT_PARAVIRT",
|
4532
|
+
INT2NUM(VIR_DOMAIN_REBOOT_PARAVIRT));
|
4285
4533
|
#endif
|
4286
4534
|
rb_define_method(c_domain, "reboot", libvirt_domain_reboot, -1);
|
4287
4535
|
#if HAVE_CONST_VIR_DOMAIN_DESTROY_DEFAULT
|
@@ -5402,10 +5650,19 @@ void ruby_libvirt_domain_init(void)
|
|
5402
5650
|
rb_define_method(c_domain, "block_job_speed=",
|
5403
5651
|
libvirt_domain_block_job_speed_equal, 1);
|
5404
5652
|
#endif
|
5653
|
+
#if HAVE_CONST_VIR_DOMAIN_BLOCK_JOB_SPEED_BANDWIDTH_BYTES
|
5654
|
+
rb_define_const(c_domain, "BLOCK_JOB_SPEED_BANDWIDTH_BYTES",
|
5655
|
+
INT2NUM(VIR_DOMAIN_BLOCK_JOB_SPEED_BANDWIDTH_BYTES));
|
5656
|
+
#endif
|
5405
5657
|
#if HAVE_VIRDOMAINGETBLOCKJOBINFO
|
5406
5658
|
rb_define_method(c_domain, "block_job_info", libvirt_domain_block_job_info,
|
5407
5659
|
-1);
|
5408
5660
|
#endif
|
5661
|
+
#if HAVE_CONST_VIR_DOMAIN_BLOCK_JOB_INFO_BANDWIDTH_BYTES
|
5662
|
+
rb_define_const(c_domain, "BLOCK_JOB_INFO_BANDWIDTH_BYTES",
|
5663
|
+
INT2NUM(VIR_DOMAIN_BLOCK_JOB_INFO_BANDWIDTH_BYTES));
|
5664
|
+
#endif
|
5665
|
+
|
5409
5666
|
#if HAVE_VIRDOMAINBLOCKJOBABORT
|
5410
5667
|
rb_define_method(c_domain, "block_job_abort",
|
5411
5668
|
libvirt_domain_block_job_abort, -1);
|
@@ -5471,6 +5728,18 @@ void ruby_libvirt_domain_init(void)
|
|
5471
5728
|
rb_define_const(c_domain, "BLOCK_COMMIT_DELETE",
|
5472
5729
|
INT2NUM(VIR_DOMAIN_BLOCK_COMMIT_DELETE));
|
5473
5730
|
#endif
|
5731
|
+
#if HAVE_CONST_VIR_DOMAIN_BLOCK_COMMIT_ACTIVE
|
5732
|
+
rb_define_const(c_domain, "BLOCK_COMMIT_ACTIVE",
|
5733
|
+
INT2NUM(VIR_DOMAIN_BLOCK_COMMIT_ACTIVE));
|
5734
|
+
#endif
|
5735
|
+
#if HAVE_CONST_VIR_DOMAIN_BLOCK_COMMIT_RELATIVE
|
5736
|
+
rb_define_const(c_domain, "BLOCK_COMMIT_RELATIVE",
|
5737
|
+
INT2NUM(VIR_DOMAIN_BLOCK_COMMIT_RELATIVE));
|
5738
|
+
#endif
|
5739
|
+
#if HAVE_CONST_VIR_DOMAIN_BLOCK_COMMIT_BANDWIDTH_BYTES
|
5740
|
+
rb_define_const(c_domain, "BLOCK_COMMIT_BANDWIDTH_BYTES",
|
5741
|
+
INT2NUM(VIR_DOMAIN_BLOCK_COMMIT_BANDWIDTH_BYTES));
|
5742
|
+
#endif
|
5474
5743
|
#if HAVE_CONST_VIR_DOMAIN_BLOCK_JOB_TYPE_UNKNOWN
|
5475
5744
|
rb_define_const(c_domain, "BLOCK_JOB_TYPE_UNKNOWN",
|
5476
5745
|
INT2NUM(VIR_DOMAIN_BLOCK_JOB_TYPE_UNKNOWN));
|
@@ -5487,6 +5756,10 @@ void ruby_libvirt_domain_init(void)
|
|
5487
5756
|
rb_define_const(c_domain, "BLOCK_JOB_TYPE_COMMIT",
|
5488
5757
|
INT2NUM(VIR_DOMAIN_BLOCK_JOB_TYPE_COMMIT));
|
5489
5758
|
#endif
|
5759
|
+
#if HAVE_CONST_VIR_DOMAIN_BLOCK_JOB_TYPE_ACTIVE_COMMIT
|
5760
|
+
rb_define_const(c_domain, "BLOCK_JOB_TYPE_ACTIVE_COMMIT",
|
5761
|
+
INT2NUM(VIR_DOMAIN_BLOCK_JOB_TYPE_ACTIVE_COMMIT));
|
5762
|
+
#endif
|
5490
5763
|
#if HAVE_CONST_VIR_DOMAIN_BLOCK_JOB_ABORT_ASYNC
|
5491
5764
|
rb_define_const(c_domain, "BLOCK_JOB_ABORT_ASYNC",
|
5492
5765
|
INT2NUM(VIR_DOMAIN_BLOCK_JOB_ABORT_ASYNC));
|
@@ -5514,4 +5787,39 @@ void ruby_libvirt_domain_init(void)
|
|
5514
5787
|
#if HAVE_VIRDOMAINGETCPUSTATS
|
5515
5788
|
rb_define_method(c_domain, "cpu_stats", libvirt_domain_cpu_stats, -1);
|
5516
5789
|
#endif
|
5790
|
+
#if HAVE_CONST_VIR_DOMAIN_CORE_DUMP_FORMAT_RAW
|
5791
|
+
rb_define_const(c_domain, "CORE_DUMP_FORMAT_RAW",
|
5792
|
+
INT2NUM(VIR_DOMAIN_CORE_DUMP_FORMAT_RAW));
|
5793
|
+
#endif
|
5794
|
+
#if HAVE_CONST_VIR_DOMAIN_CORE_DUMP_FORMAT_KDUMP_ZLIB
|
5795
|
+
rb_define_const(c_domain, "CORE_DUMP_FORMAT_KDUMP_ZLIB",
|
5796
|
+
INT2NUM(VIR_DOMAIN_CORE_DUMP_FORMAT_KDUMP_ZLIB));
|
5797
|
+
#endif
|
5798
|
+
#if HAVE_CONST_VIR_DOMAIN_CORE_DUMP_FORMAT_KDUMP_LZO
|
5799
|
+
rb_define_const(c_domain, "CORE_DUMP_FORMAT_KDUMP_LZO",
|
5800
|
+
INT2NUM(VIR_DOMAIN_CORE_DUMP_FORMAT_KDUMP_LZO));
|
5801
|
+
#endif
|
5802
|
+
#if HAVE_CONST_VIR_DOMAIN_CORE_DUMP_FORMAT_KDUMP_SNAPPY
|
5803
|
+
rb_define_const(c_domain, "CORE_DUMP_FORMAT_KDUMP_SNAPPY",
|
5804
|
+
INT2NUM(VIR_DOMAIN_CORE_DUMP_FORMAT_KDUMP_SNAPPY));
|
5805
|
+
#endif
|
5806
|
+
#if HAVE_VIRDOMAINGETTIME
|
5807
|
+
rb_define_method(c_domain, "time", libvirt_domain_get_time, -1);
|
5808
|
+
#endif
|
5809
|
+
#if HAVE_VIRDOMAINSETTIME
|
5810
|
+
rb_define_method(c_domain, "time=", libvirt_domain_time_equal, 1);
|
5811
|
+
#endif
|
5812
|
+
#if HAVE_VIRDOMAINCOREDUMPWITHFORMAT
|
5813
|
+
rb_define_method(c_domain, "core_dump_with_format",
|
5814
|
+
libvirt_domain_core_dump_with_format, -1);
|
5815
|
+
#endif
|
5816
|
+
#if HAVE_VIRDOMAINFSFREEZE
|
5817
|
+
rb_define_method(c_domain, "fs_freeze", libvirt_domain_fs_freeze, -1);
|
5818
|
+
#endif
|
5819
|
+
#if HAVE_VIRDOMAINFSTHAW
|
5820
|
+
rb_define_method(c_domain, "fs_thaw", libvirt_domain_fs_thaw, -1);
|
5821
|
+
#endif
|
5822
|
+
#if HAVE_VIRDOMAINGETFSINFO
|
5823
|
+
rb_define_method(c_domain, "fs_info", libvirt_domain_fs_info, -1);
|
5824
|
+
#endif
|
5517
5825
|
}
|