[libvirt] Is there a way to get host uptime in remote libvirt
by coffeeball
We manage hypervisors (VMWare ESXi/vCenter, KVM, XEN, Hyper-V) by remote Libvirt API, in our case we need to get the host uptime via the same libvirt interface. Is there a way get this info now for all the aforementioned hypervisor types?
The APIs virConnectGetSysinfo(), virNodeGetInfo() provide host info but it doesn't include the system uptime.
The virNodeGetCPUStats() can returns CPU usage in nanosecond, can we add the user + system + idle + iowait to calculate the system uptime? Looks …
[View More]like the sum value has a huge gap with the real uptime value returned by "uptime" CLI.
virsh # nodecpustats
user: 2985046540000000
system: 1368209710000000
idle: 388018933920000000
iowait: 43371960000000
[View Less]
10 years, 10 months
[libvirt] [PATCH] virsh-nodedev: Avoid spurious errors
by Michal Privoznik
Our public free functions explicitly don't accept NULL pointers
(sigh). Therefore, callers must do something like this:
if (dev)
virNodeDeviceFree(dev);
And we are not doing that on two places I've found. This leads to
dummy error message thrown by virsh:
virsh # nodedev-dumpxml nonexistent-device
error: Could not find matching device 'nonexistent-device'
error: invalid node device pointer in virNodeDeviceFree
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com…
[View More]>
---
tools/virsh-nodedev.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/tools/virsh-nodedev.c b/tools/virsh-nodedev.c
index a35387a..46e0045 100644
--- a/tools/virsh-nodedev.c
+++ b/tools/virsh-nodedev.c
@@ -162,7 +162,8 @@ cmdNodeDeviceDestroy(vshControl *ctl, const vshCmd *cmd)
ret = true;
cleanup:
virStringFreeList(arr);
- virNodeDeviceFree(dev);
+ if (dev)
+ virNodeDeviceFree(dev);
return ret;
}
@@ -571,7 +572,8 @@ cmdNodeDeviceDumpXML(vshControl *ctl, const vshCmd *cmd)
cleanup:
virStringFreeList(arr);
VIR_FREE(xml);
- virNodeDeviceFree(device);
+ if (device)
+ virNodeDeviceFree(device);
return ret;
}
--
2.0.0
[View Less]
10 years, 10 months
[libvirt] [libvirt-php] libvirt_domain_new Create a slow vm
by Mario Di Ture
Hi,
I've tested this script on centos 6.5 (libvirt-0.10.2, qemu-kvm-0.12.1.2)
and
ubuntu server 14.04 (libvirt 1.2.2, qemu-kvm 2.0.0) with the same result.
The created vm is very slow compared to the vm created with virt-manager,
with the same features/devices on the same host.
Can you suggest any configuration that can avoid that slowness?
With regards
Mario D.
<?php
$conn = libvirt_connect('null', false);
$name="testvm";
$arch="x86_64";
$memMB=1024;
$maxmemMB=1536;
$vcpus=1;
$…
[View More]iso_image="/home/iso/CentOS-6.5-x86_64-minimal.iso";
$disk1 = array(
"path" => "/home/vm/centos-script.raw",
"driver" => "raw",
"bus" => "virtio",
"dev" => "hda",
"size" => "6G",
"flags" => VIR_DOMAIN_DISK_FILE |
VIR_DOMAIN_DISK_ACCESS_ALL );
$disks = array( $disk1 );
$network1 = array(
'mac' => '00:11:22:33:44:55',
'network' => 'default',
'model' => 'e1000'
);
$networks = array( $network1 );
$flags=VIR_DOMAIN_FLAG_FEATURE_ACPI;
$newdom=libvirt_domain_new($conn, $name, $arch, $memMB, $maxmemMB, $vcpus,
$iso_image, $disks, $networks, $flags);
print_r($newdom);
?>
[View Less]
10 years, 10 months
[libvirt] parallels: add 2 functions needed by OpenStack
by Alexander Burluka
Hello,
I would like to contribute in Libvirt development. Parallels team continues working
on driver to make it compatible with OpenStack. So, this patches are part of our
goal. I would gracefully accept your comments and remarks.
Thank you!
--
Regards,
Alexander Burluka
10 years, 10 months
[libvirt] [PATCH] Don't use AI_ADDRCONFIG when binding to wildcard addresses
by Ján Tomko
https://bugzilla.redhat.com/show_bug.cgi?id=1098659
With parallel boot, network addresses might not yet be assigned [1],
but binding to wildcard addresses should work.
For non-wildcard addresses, ADDRCONFIG is still used. Document this
in libvirtd.conf.
[1] http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/
---
daemon/libvirtd.conf | 4 ++++
src/rpc/virnetsocket.c | 28 ++++++++++++++++++++++++++--
2 files changed, 30 insertions(+), 2 deletions(-)
diff --git a/daemon/…
[View More]libvirtd.conf b/daemon/libvirtd.conf
index aeba11d..e5856d4 100644
--- a/daemon/libvirtd.conf
+++ b/daemon/libvirtd.conf
@@ -48,6 +48,10 @@
# Override the default configuration which binds to all network
# interfaces. This can be a numeric IPv4/6 address, or hostname
#
+# If the libvirtd service is started in parallel with network
+# startup (e.g. with systemd), binding to addresses other than
+# the wildcards (0.0.0.0/::) might not be available yet.
+#
#listen_addr = "192.168.0.1"
diff --git a/src/rpc/virnetsocket.c b/src/rpc/virnetsocket.c
index a7e1783..87b39f2 100644
--- a/src/rpc/virnetsocket.c
+++ b/src/rpc/virnetsocket.c
@@ -226,15 +226,29 @@ int virNetSocketNewListenTCP(const char *nodename,
struct addrinfo hints;
int fd = -1;
size_t i;
- int addrInUse = false;
+ bool addrInUse = false;
+ bool familyNotSupported = false;
+ virSocketAddr tmp_addr;
*retsocks = NULL;
*nretsocks = 0;
memset(&hints, 0, sizeof(hints));
- hints.ai_flags = AI_PASSIVE | AI_ADDRCONFIG;
+ hints.ai_flags = AI_PASSIVE;
hints.ai_socktype = SOCK_STREAM;
+ /* Don't use ADDRCONFIG for binding to the wildcard address.
+ * Just catch the error returned by socket() if the system has
+ * no IPv6 support.
+ *
+ * This allows libvirtd to be started in parallel with the network
+ * startup in most cases.
+ */
+ if (nodename &&
+ !(virSocketAddrParse(&tmp_addr, nodename, AF_UNSPEC) > 0 &&
+ virSocketAddrIsWildcard(&tmp_addr)))
+ hints.ai_flags = AI_ADDRCONFIG;
+
int e = getaddrinfo(nodename, service, &hints, &ai);
if (e != 0) {
virReportError(VIR_ERR_SYSTEM_ERROR,
@@ -251,6 +265,11 @@ int virNetSocketNewListenTCP(const char *nodename,
if ((fd = socket(runp->ai_family, runp->ai_socktype,
runp->ai_protocol)) < 0) {
+ if (errno == EAFNOSUPPORT) {
+ familyNotSupported = true;
+ runp = runp->ai_next;
+ continue;
+ }
virReportSystemError(errno, "%s", _("Unable to create socket"));
goto error;
}
@@ -307,6 +326,11 @@ int virNetSocketNewListenTCP(const char *nodename,
fd = -1;
}
+ if (nsocks == 0 && familyNotSupported) {
+ virReportSystemError(EAFNOSUPPORT, "%s", _("Unable to bind to port"));
+ goto error;
+ }
+
if (nsocks == 0 &&
addrInUse) {
virReportSystemError(EADDRINUSE, "%s", _("Unable to bind to port"));
--
1.8.3.2
[View Less]
10 years, 10 months
[libvirt] [PATCH] leaseshelper: Include locale.h
by Michal Privoznik
The commit baafe668 introduces this new helper utility. As in all
our programs, there's setlocale() called at the beginning of
main(). However, this source file don't include locale.h file
which causes build errors on some systems (e.g. mine).
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
src/network/leaseshelper.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/network/leaseshelper.c b/src/network/leaseshelper.c
index e53a73c..eb695e4 100644
--- a/src/network/…
[View More]leaseshelper.c
+++ b/src/network/leaseshelper.c
@@ -28,6 +28,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
+#include <locale.h>
#include "virutil.h"
#include "virthread.h"
--
2.0.0
[View Less]
10 years, 10 months
[libvirt] [PATCH 0/4] qemu: Some more device unplug fixes
by Jiri Denemark
This series depends on "qemu: Process DEVICE_DELETED event in a separate
thread" series I sent yesterday.
Jiri Denemark (4):
qemu: Unref cfg when detaching hostdev interface
qemu: Remove interface backend only after frontend is gone
qemu: Remove disk backend only after frontend is gone
qemu: Remove character device backend only after frontend is gone
src/qemu/qemu_hotplug.c | 122 ++++++++++++++++++++++++------------------------
1 file changed, 60 insertions(+), 62 deletions(-)
--
1.9.3
10 years, 10 months
[libvirt] [PATCH] Fix build on freebsd
by Pavel Hrdina
On freebsd there isn't known "setlocale" so we have to include locale.h
Signed-off-by: Pavel Hrdina <phrdina(a)redhat.com>
---
Pushed under trivial rule
src/network/leaseshelper.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/network/leaseshelper.c b/src/network/leaseshelper.c
index e53a73c..b6f6c32 100644
--- a/src/network/leaseshelper.c
+++ b/src/network/leaseshelper.c
@@ -25,6 +25,7 @@
#include <config.h>
+#include <locale.h>
#include <stdio.h>
#…
[View More]include <stdlib.h>
#include <sys/stat.h>
--
1.8.5.5
[View Less]
10 years, 10 months
[libvirt] [PATCH 0/2] qemu: Process DEVICE_DELETED event in a separate thread
by Jiri Denemark
Jiri Denemark (2):
qemu: Finish device removal in the original thread
qemu: Process DEVICE_DELETED event in a separate thread
src/qemu/qemu_domain.h | 2 ++
src/qemu/qemu_driver.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++--
src/qemu/qemu_hotplug.c | 44 +++++++++++++++++++++++++++++++++-----------
src/qemu/qemu_hotplug.h | 2 +-
src/qemu/qemu_process.c | 30 +++++++++++++++++++++---------
5 files changed, 103 insertions(+), 23 deletions(-)
--
1.9.3
10 years, 10 months