[libvirt] [jenkins-ci PATCH] lcitool: include gdb, strace, lsof & netstat by default
by Daniel P. Berrangé
When debugging why tests fail it is important to have commonly
used tools like gdb, strace, lsof and netstat available.
Note that although the entry for FreeBSD is blank for strace
and net-tools, the truss (strace equiv) and netstat tools will
be present as they are part of the FreeBSD base install.
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
guests/vars/mappings.yml | 14 ++++++++++++++
guests/vars/projects/base.yml | 4 ++++
2 files changed, 18 insertions(+)
diff --git a/guests/vars/mappings.yml b/guests/vars/mappings.yml
index 92681c2..50f07fa 100644
--- a/guests/vars/mappings.yml
+++ b/guests/vars/mappings.yml
@@ -164,6 +164,9 @@ mappings:
default: gcc
FreeBSD:
+ gdb:
+ default: gdb
+
gettext:
default: gettext
@@ -425,6 +428,9 @@ mappings:
rpm: libxslt-devel
cross-policy-deb: foreign
+ lsof:
+ default: lsof
+
lvm2:
default: lvm2
FreeBSD:
@@ -601,6 +607,10 @@ mappings:
rpm: netcf-devel
cross-policy-deb: skip
+ net-tools:
+ default: net-tools
+ FreeBSD:
+
numad:
default: numad
FreeBSD:
@@ -868,6 +878,10 @@ mappings:
rpm: spice-gtk3-devel
cross-policy-deb: foreign
+ strace:
+ default: strace
+ FreeBSD:
+
sudo:
default: sudo
diff --git a/guests/vars/projects/base.yml b/guests/vars/projects/base.yml
index 49d4d2e..b3d1d47 100644
--- a/guests/vars/projects/base.yml
+++ b/guests/vars/projects/base.yml
@@ -9,16 +9,20 @@ packages:
- chrony
- cppi
- gcc
+ - gdb
- gettext
- git
- glibc
- libtool
- libtoolize
+ - lsof
+ - net-tools
- make
- patch
- perl
- pkg-config
- rpmbuild
- screen
+ - strace
- sudo
- vim
--
2.19.2
6 years, 1 month
[libvirt] [python PATCH] rpm: use new python macros for build/install rules
by Daniel P. Berrangé
The new %py{2,3}_{build,install} macros ensure that the right compiler
and linker flags are used when building python modules.
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
libvirt-python.spec.in | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/libvirt-python.spec.in b/libvirt-python.spec.in
index 5bcf1eb..8dd261f 100644
--- a/libvirt-python.spec.in
+++ b/libvirt-python.spec.in
@@ -119,19 +119,35 @@ exit 1
%endif
%if %{with_python2}
+%if 0%{?fedora} >= 29 || 0%{?rhel} >= 8
+%py2_build
+%else
CFLAGS="$RPM_OPT_FLAGS" %{__python2} setup.py build
%endif
+%endif
%if %{with_python3}
+%if 0%{?fedora} >= 29 || 0%{?rhel} >= 8
+%py3_build
+%else
CFLAGS="$RPM_OPT_FLAGS" %{__python3} setup.py build
%endif
+%endif
%install
%if %{with_python2}
+%if 0%{?fedora} || 0%{?rhel} >= 8
+%py2_install
+%else
%{__python2} setup.py install --skip-build --root=%{buildroot}
%endif
+%endif
%if %{with_python3}
+%if 0%{?fedora} || 0%{?rhel} >= 8
+%py3_install
+%else
%{__python3} setup.py install --skip-build --root=%{buildroot}
%endif
+%endif
%check
%if %{with_python2}
--
2.20.1
6 years, 1 month
[libvirt] [jenkins-ci PATCH] Ensure ca-certificates are installed
by Daniel P. Berrangé
On Red Hat variant distros ca-certificates gets pulled in
automatically by other packages we require. This doesn't
happen on Debian and so any use of https URIs fails. This
prevents git from cloning submodules over https.
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
guests/vars/mappings.yml | 4 ++++
guests/vars/projects/base.yml | 1 +
2 files changed, 5 insertions(+)
diff --git a/guests/vars/mappings.yml b/guests/vars/mappings.yml
index 50f07fa..b369c0a 100644
--- a/guests/vars/mappings.yml
+++ b/guests/vars/mappings.yml
@@ -99,6 +99,10 @@ mappings:
bash-completion:
default: bash-completion
+ ca-certificates:
+ default: ca-certificates
+ FreeBSD:
+
ccache:
default: ccache
CentOS:
diff --git a/guests/vars/projects/base.yml b/guests/vars/projects/base.yml
index b3d1d47..a7e572b 100644
--- a/guests/vars/projects/base.yml
+++ b/guests/vars/projects/base.yml
@@ -5,6 +5,7 @@ packages:
- autopoint
- bash
- bash-completion
+ - ca-certificates
- ccache
- chrony
- cppi
--
2.19.2
6 years, 1 month
[libvirt] [PATCH libvirt-python v3] Implement virDomainGetStateParams API
by Bjoern Walk
From: Marc Hartmayer <mhartmay(a)linux.ibm.com>
This patch adds the Python binding for the virDomainGetStateParams API.
The Python side can be generated automatically, the C side cannot.
Reviewed-by: Boris Fiuczynski <fiuczy(a)linux.ibm.com>
Signed-off-by: Marc Hartmayer <mhartmay(a)linux.ibm.com>
Signed-off-by: Bjoern Walk <bwalk(a)linux.ibm.com>
---
generator.py | 1 +
libvirt-override-api.xml | 6 +++++
libvirt-override.c | 48 ++++++++++++++++++++++++++++++++++++++++
3 files changed, 55 insertions(+)
diff --git a/generator.py b/generator.py
index ffa3ce56..005be502 100755
--- a/generator.py
+++ b/generator.py
@@ -496,6 +496,7 @@ skip_impl = (
'virConnectBaselineHypervisorCPU',
'virDomainGetLaunchSecurityInfo',
'virNodeGetSEVInfo',
+ 'virDomainGetStateParams',
)
lxc_skip_impl = (
diff --git a/libvirt-override-api.xml b/libvirt-override-api.xml
index 7f578e01..fab62447 100644
--- a/libvirt-override-api.xml
+++ b/libvirt-override-api.xml
@@ -754,5 +754,11 @@
<arg name='conn' type='virConnectPtr' info='pointer to hypervisor connection'/>
<arg name='flags' type='int' info='unused, always pass 0'/>
</function>
+ <function name='virDomainGetStateParams' file='python'>
+ <info>Extract domain state and additional information (if available).</info>
+ <arg name='dom' type='virDomainPtr' info='pointer to the domain'/>
+ <arg name='flags' type='unsigned int' info='extra flags; not used yet, so callers should always pass 0'/>
+ <return type='char *' info="dictionary of state data"/>
+ </function>
</symbols>
</api>
diff --git a/libvirt-override.c b/libvirt-override.c
index c5e2908c..e96a35a0 100644
--- a/libvirt-override.c
+++ b/libvirt-override.c
@@ -9946,6 +9946,51 @@ libvirt_virNodeGetSEVInfo(PyObject *self ATTRIBUTE_UNUSED,
#endif /* LIBVIR_CHECK_VERSION(4, 5, 0) */
+#if LIBVIR_CHECK_VERSION(5, 3, 0)
+static PyObject *
+libvirt_virDomainGetStateParams(PyObject *self ATTRIBUTE_UNUSED,
+ PyObject *args)
+{
+ PyObject *py_retval = VIR_PY_NONE;
+ PyObject *pyobj_domain;
+ virDomainPtr domain;
+ int state;
+ int reason;
+ virTypedParameterPtr params = NULL;
+ int nparams = 0;
+ unsigned int flags;
+ int c_retval;
+
+ if (!PyArg_ParseTuple(args, (char *)"OI:virDomainGetStateParams",
+ &pyobj_domain, &flags))
+ return NULL;
+ domain = (virDomainPtr) PyvirDomain_Get(pyobj_domain);
+
+ LIBVIRT_BEGIN_ALLOW_THREADS;
+ c_retval = virDomainGetStateParams(domain, &state, &reason, ¶ms,
+ &nparams, flags);
+ LIBVIRT_END_ALLOW_THREADS;
+
+ if (c_retval < 0)
+ goto error;
+
+ if ((py_retval = PyTuple_New(3)) == NULL)
+ goto error;
+
+ VIR_PY_TUPLE_SET_GOTO(py_retval, 0, libvirt_intWrap(state), error);
+ VIR_PY_TUPLE_SET_GOTO(py_retval, 1, libvirt_intWrap(reason), error);
+ VIR_PY_TUPLE_SET_GOTO(py_retval, 2, getPyVirTypedParameter(params, nparams), error);
+
+ return py_retval;
+
+error:
+ Py_XDECREF(py_retval);
+ virTypedParamsFree(params, nparams);
+ return VIR_PY_NONE;
+}
+#endif /* LIBVIR_CHECK_VERSION(5, 2, 0) */
+
+
/************************************************************************
* *
* The registration stuff *
@@ -10192,6 +10237,9 @@ static PyMethodDef libvirtMethods[] = {
{(char *) "virDomainGetLaunchSecurityInfo", libvirt_virDomainGetLaunchSecurityInfo, METH_VARARGS, NULL},
{(char *) "virNodeGetSEVInfo", libvirt_virNodeGetSEVInfo, METH_VARARGS, NULL},
#endif /* LIBVIR_CHECK_VERSION(4, 5, 0) */
+#if LIBVIR_CHECK_VERSION(5, 3, 0)
+ {(char *) "virDomainGetStateParams", libvirt_virDomainGetStateParams, METH_VARARGS, NULL},
+#endif /* LIBVIR_CHECK_VERSION(5, 3, 0) */
{NULL, NULL, 0, NULL}
};
--
2.19.1
6 years, 1 month
[libvirt] [PATCH v2 0/3] qemu: don't duplicate suspended events and state changes
by Nikolay Shirokovskiy
Patches 1 and 2 are already Reviewed-by: John. Patch 3 needs Peter comments.
Diff from v1:
============
- minor rebase changes
- minor changes according to review
[1] PATCH v1 : https://www.redhat.com/archives/libvir-list/2018-October/msg00591.html
Nikolay Shirokovskiy (3):
qemu: Pass stop reason from qemuProcessStopCPUs to stop handler
qemu: Map suspended state reason to suspended event detail
qemu: Don't duplicate suspend events and state changes
src/qemu/qemu_domain.c | 34 ++++++++++++++++++++++++++++++++++
src/qemu/qemu_domain.h | 7 +++++++
src/qemu/qemu_driver.c | 26 +++-----------------------
src/qemu/qemu_migration.c | 42 ++++++------------------------------------
src/qemu/qemu_migration.h | 4 ----
src/qemu/qemu_process.c | 38 +++++++++++++++++++++++++-------------
6 files changed, 75 insertions(+), 76 deletions(-)
--
1.8.3.1
6 years, 1 month
[libvirt] [PATCH 0/3] vir*ObjListAddLocked(): Produce better error message than 'Duplicate key'
by Michal Privoznik
*** BLURB HERE ***
Michal Prívozník (3):
DO NOT APPLY: Simple reproducer for virDomainObjListRemove
virDomainObjListAddLocked: Produce better error message than
'Duplicate key'
virNWFilterBindingObjListAddLocked: Produce better error message than
'Duplicate key'
src/conf/virdomainobjlist.c | 36 +++++++++++++++++-----------
src/conf/virnwfilterbindingobjlist.c | 29 +++++++++++++---------
2 files changed, 40 insertions(+), 25 deletions(-)
--
2.19.2
6 years, 1 month
[libvirt] [PATCH 0/4] qemu: Use PCI by default on RISC-V
by Andrea Bolognani
Now that the patches necessary to enable pcie-root-port usage on
RISC-V have been merged into QEMU, we can go ahead and start using
PCI by default on such guests when appropriate.
The full series, with patch 3/4 in its unabridged form, can be
obtained from
https://github.com/andreabolognani/libvirt/tree/riscv-pci-by-default
Andrea Bolognani (4):
qemu: Require PCIe Root Port for PCI by default on ARM virt
qemu: Unify address assignment for virt guests
tests: Refresh capabilities for QEMU 4.0.0 on RISC-V
news: Document PCI by default on RISC-V
docs/news.xml | 12 +
src/qemu/qemu_domain_address.c | 45 +-
.../caps_4.0.0.riscv32.replies | 3864 ++++++++--------
.../caps_4.0.0.riscv32.xml | 19 +-
.../caps_4.0.0.riscv64.replies | 3876 +++++++++--------
.../caps_4.0.0.riscv64.xml | 19 +-
.../riscv64-virt-headless.riscv64-latest.args | 20 +-
7 files changed, 4206 insertions(+), 3649 deletions(-)
--
2.20.1
6 years, 1 month
[libvirt] [PATCH] virsh.pod: Improve native configuration format doc
by Han Han
Add native guest format of BSD hypervisor and VMware/ESX. Quote native
guest format of domxml-from-native for domxml-to-native.
Signed-off-by: Han Han <hhan(a)redhat.com>
---
tools/virsh.pod | 14 +++++---------
1 file changed, 5 insertions(+), 9 deletions(-)
diff --git a/tools/virsh.pod b/tools/virsh.pod
index a0fe949c55..b3819b9414 100644
--- a/tools/virsh.pod
+++ b/tools/virsh.pod
@@ -1607,21 +1607,17 @@ Convert the file I<config> in the native guest configuration format
named by I<format> to a domain XML format. For QEMU/KVM hypervisor,
the I<format> argument must be B<qemu-argv>. For Xen hypervisor, the
I<format> argument may be B<xen-xm>, B<xen-xl>, or B<xen-sxpr>. For
-LXC hypervisor, the I<format> argument must be B<lxc-tools>.
+LXC hypervisor, the I<format> argument must be B<lxc-tools>. For
+VMware/ESX hypervisor, the I<format> argument must be B<vmware-vmx>.
+For the BSD hypervisor, the I<format> argument must be B<bhyve-argv>.
=item B<domxml-to-native> I<format>
{ [I<--xml>] I<xml> | I<--domain> I<domain-name-or-id-or-uuid> }
Convert the file I<xml> into domain XML format or convert an existing
I<--domain> to the native guest configuration format named by I<format>.
-The I<xml> and I<--domain> arguments are mutually exclusive.
-
-For the QEMU/KVM hypervisor, the I<format> argument must be B<qemu-argv>.
-
-For the Xen hypervisor, the I<format> argument may be B<xen-xm>, B<xen-xl>,
-or B<xen-sxpr>.
-
-For the LXC hypervisor, the I<format> argument must be B<lxc-tools>.
+The I<xml> and I<--domain> arguments are mutually exclusive. For the types
+of I<format> argument, refer to B<domxml-from-native>.
=item B<dump> I<domain> I<corefilepath> [I<--bypass-cache>]
{ [I<--live>] | [I<--crash>] | [I<--reset>] } [I<--verbose>] [I<--memory-only>]
--
2.20.1
6 years, 1 month
[libvirt] [PATCH] qemu_hotplug: Remove virQEMUDriverPtr arguments
by Suyang Chen
Since commit 2e6ecba1bcac, the pointer to the qemu driver is saved in
domain object's private data and hence does not have to be passed as
yet another parameter if domain object is already one of them.
This just changed qemuDomainChangeDiskLive and
qemuDomainChangeEjectableMedia functions
Signed-off-by: Suyang Chen <dawson0xff(a)gmail.com>
---
src/qemu/qemu_driver.c | 5 ++---
src/qemu/qemu_hotplug.c | 29 ++++++++++++++---------------
src/qemu/qemu_hotplug.h | 3 +--
3 files changed, 17 insertions(+), 20 deletions(-)
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index b27c6ce98e..5d064030e9 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -8100,7 +8100,6 @@ qemuDomainDetachDeviceLive(virDomainObjPtr vm,
static int
qemuDomainChangeDiskLive(virDomainObjPtr vm,
virDomainDeviceDefPtr dev,
- virQEMUDriverPtr driver,
bool force)
{
virDomainDiskDefPtr disk = dev->data.disk;
@@ -8136,7 +8135,7 @@ qemuDomainChangeDiskLive(virDomainObjPtr vm,
goto cleanup;
}
- if (qemuDomainChangeEjectableMedia(driver, vm, orig_disk,
+ if (qemuDomainChangeEjectableMedia(vm, orig_disk,
dev->data.disk->src, force) < 0)
goto cleanup;
@@ -8165,7 +8164,7 @@ qemuDomainUpdateDeviceLive(virDomainObjPtr vm,
switch ((virDomainDeviceType)dev->type) {
case VIR_DOMAIN_DEVICE_DISK:
qemuDomainObjCheckDiskTaint(driver, vm, dev->data.disk, NULL);
- ret = qemuDomainChangeDiskLive(vm, dev, driver, force);
+ ret = qemuDomainChangeDiskLive(vm, dev, force);
break;
case VIR_DOMAIN_DEVICE_GRAPHICS:
diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
index 41d60277d1..4bcec0e982 100644
--- a/src/qemu/qemu_hotplug.c
+++ b/src/qemu/qemu_hotplug.c
@@ -844,14 +844,13 @@ qemuDomainChangeMediaBlockdev(virQEMUDriverPtr driver,
* Returns 0 on success, -1 on error and reports libvirt error
*/
int
-qemuDomainChangeEjectableMedia(virQEMUDriverPtr driver,
- virDomainObjPtr vm,
+qemuDomainChangeEjectableMedia(virDomainObjPtr vm,
virDomainDiskDefPtr disk,
virStorageSourcePtr newsrc,
bool force)
{
- virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
qemuDomainObjPrivatePtr priv = vm->privateData;
+ virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(priv->driver);
virStorageSourcePtr oldsrc = disk->src;
bool sharedAdded = false;
int ret = -1;
@@ -862,27 +861,27 @@ qemuDomainChangeEjectableMedia(virQEMUDriverPtr driver,
if (virDomainDiskTranslateSourcePool(disk) < 0)
goto cleanup;
- if (qemuAddSharedDisk(driver, disk, vm->def->name) < 0)
+ if (qemuAddSharedDisk(priv->driver, disk, vm->def->name) < 0)
goto cleanup;
sharedAdded = true;
- if (qemuDomainDetermineDiskChain(driver, vm, disk, NULL, true) < 0)
+ if (qemuDomainDetermineDiskChain(priv->driver, vm, disk, NULL, true) < 0)
goto cleanup;
if (qemuDomainPrepareDiskSource(disk, priv, cfg) < 0)
goto cleanup;
- if (qemuHotplugPrepareDiskSourceAccess(driver, vm, newsrc, false) < 0)
+ if (qemuHotplugPrepareDiskSourceAccess(priv->driver, vm, newsrc, false) < 0)
goto cleanup;
- if (qemuHotplugAttachManagedPR(driver, vm, newsrc, QEMU_ASYNC_JOB_NONE) < 0)
+ if (qemuHotplugAttachManagedPR(priv->driver, vm, newsrc, QEMU_ASYNC_JOB_NONE) < 0)
goto cleanup;
if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BLOCKDEV))
- rc = qemuDomainChangeMediaBlockdev(driver, vm, disk, oldsrc, newsrc, force);
+ rc = qemuDomainChangeMediaBlockdev(priv->driver, vm, disk, oldsrc, newsrc, force);
else
- rc = qemuDomainChangeMediaLegacy(driver, vm, disk, newsrc, force);
+ rc = qemuDomainChangeMediaLegacy(priv->driver, vm, disk, newsrc, force);
virDomainAuditDisk(vm, oldsrc, newsrc, "update", rc >= 0);
@@ -891,8 +890,8 @@ qemuDomainChangeEjectableMedia(virQEMUDriverPtr driver,
/* remove the old source from shared device list */
disk->src = oldsrc;
- ignore_value(qemuRemoveSharedDisk(driver, disk, vm->def->name));
- ignore_value(qemuHotplugPrepareDiskSourceAccess(driver, vm, oldsrc, true));
+ ignore_value(qemuRemoveSharedDisk(priv->driver, disk, vm->def->name));
+ ignore_value(qemuHotplugPrepareDiskSourceAccess(priv->driver, vm, oldsrc, true));
/* media was changed, so we can remove the old media definition now */
virObjectUnref(oldsrc);
@@ -905,13 +904,13 @@ qemuDomainChangeEjectableMedia(virQEMUDriverPtr driver,
/* undo changes to the new disk */
if (ret < 0) {
if (sharedAdded)
- ignore_value(qemuRemoveSharedDisk(driver, disk, vm->def->name));
+ ignore_value(qemuRemoveSharedDisk(priv->driver, disk, vm->def->name));
- ignore_value(qemuHotplugPrepareDiskSourceAccess(driver, vm, newsrc, true));
+ ignore_value(qemuHotplugPrepareDiskSourceAccess(priv->driver, vm, newsrc, true));
}
/* remove PR manager object if unneeded */
- ignore_value(qemuHotplugRemoveManagedPR(driver, vm, QEMU_ASYNC_JOB_NONE));
+ ignore_value(qemuHotplugRemoveManagedPR(priv->driver, vm, QEMU_ASYNC_JOB_NONE));
/* revert old image do the disk definition */
if (oldsrc)
@@ -1315,7 +1314,7 @@ qemuDomainAttachDeviceDiskLive(virQEMUDriverPtr driver,
if ((disk->device == VIR_DOMAIN_DISK_DEVICE_CDROM ||
disk->device == VIR_DOMAIN_DISK_DEVICE_FLOPPY) &&
(orig_disk = virDomainDiskFindByBusAndDst(vm->def, disk->bus, disk->dst))) {
- if (qemuDomainChangeEjectableMedia(driver, vm, orig_disk,
+ if (qemuDomainChangeEjectableMedia(vm, orig_disk,
disk->src, false) < 0)
return -1;
diff --git a/src/qemu/qemu_hotplug.h b/src/qemu/qemu_hotplug.h
index 7ac03b7810..a60df36f74 100644
--- a/src/qemu/qemu_hotplug.h
+++ b/src/qemu/qemu_hotplug.h
@@ -26,8 +26,7 @@
# include "qemu_domain.h"
# include "domain_conf.h"
-int qemuDomainChangeEjectableMedia(virQEMUDriverPtr driver,
- virDomainObjPtr vm,
+int qemuDomainChangeEjectableMedia(virDomainObjPtr vm,
virDomainDiskDefPtr disk,
virStorageSourcePtr newsrc,
bool force);
--
2.20.1
6 years, 1 month