[libvirt] [PATCH] docs: Advertise pcie-to-pci-bridge for use on q35
by Andrea Bolognani
We support pcie-to-pci-bridge, and prefer it to
dmi-to-pci-bridge, since libvirt 4.3.0, but we didn't
update all the documentation accordingly at the time.
Signed-off-by: Andrea Bolognani <abologna(a)redhat.com>
---
docs/formatdomain.html.in | 10 +++++-----
docs/pci-hotplug.html.in | 5 ++---
2 files changed, 7 insertions(+), 8 deletions(-)
diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
index 22ddcb71d3..452e3b0ee4 100644
--- a/docs/formatdomain.html.in
+++ b/docs/formatdomain.html.in
@@ -4414,7 +4414,7 @@
subelement <code><model></code> with an attribute
<code>name</code>. The name attribute holds the name of the
specific device that qemu is emulating (e.g. "i82801b11-bridge")
- rather than simply the class of device ("dmi-to-pci-bridge",
+ rather than simply the class of device ("pcie-to-pci-bridge",
"pci-bridge"), which is set in the controller element's
model <b>attribute</b>. In almost all cases, you should not
manually add a <code><model></code> subelement to a
@@ -4603,11 +4603,11 @@
...
<devices>
<controller type='pci' index='0' model='pcie-root'/>
- <controller type='pci' index='1' model='dmi-to-pci-bridge'>
- <address type='pci' domain='0' bus='0' slot='0xe' function='0'/>
+ <controller type='pci' index='1' model='pcie-root-port'>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
</controller>
- <controller type='pci' index='2' model='pci-bridge'>
- <address type='pci' domain='0' bus='1' slot='1' function='0'/>
+ <controller type='pci' index='2' model='pcie-to-pci-bridge'>
+ <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
</controller>
</devices>
...</pre>
diff --git a/docs/pci-hotplug.html.in b/docs/pci-hotplug.html.in
index 9a26645aa4..29587b1e7e 100644
--- a/docs/pci-hotplug.html.in
+++ b/docs/pci-hotplug.html.in
@@ -99,13 +99,12 @@
</p>
<pre>
-<controller type='pci' model='dmi-to-pci-bridge'/>
-<controller type='pci' model='pci-bridge'/></pre>
+<controller type='pci' model='pcie-to-pci-bridge'/></pre>
<p>
and you'll be able to hotplug up to 31 legacy PCI devices,
either emulated or assigned from the host, in the slots
- from 0x01 to 0x1f of the <code>pci-bridge</code> controller.
+ from 0x01 to 0x1f of the <code>pcie-to-pci-bridge</code> controller.
</p>
<h3><a id="x86_64-i440fx">i440fx (pc) machine type</a></h3>
--
2.21.0
5 years, 6 months
[libvirt] [PATCH 0/3] test_driver: improve testDomainInterfaceAddresses
by Ilias Stamatis
This patch series introduces the following improvements to the
testDomainInterfaceAddresses function:
- if a dhcp range is defined for the network, addresses are returned
from there (instead of hard-coded addresses that were returned before)
- if the network is IPv6 even when a dhcp range is not defined IPv6
addresses will be returned instead of IPv4
- the @source argument is validated
- only networks of type VIR_DOMAIN_NET_TYPE_NETWORK are considered
Ilias Stamatis (3):
test_driver: validate @source in testDomainInterfaceAddresses
test_driver: return addresses only for nets of type network
test_driver: consider DHCP ranges in testDomainInterfaceAddresses
src/test/test_driver.c | 96 +++++++++++++++++++++++++++++++++++++-----
1 file changed, 86 insertions(+), 10 deletions(-)
--
2.22.0
5 years, 6 months
[libvirt] [PATCH 00/46] Finish moving header guards to #pragma once
by Jonathon Jongsma
My previous series ported a bunch of internal headers to use #pragma once as the header guard (per
https://wiki.libvirt.org/page/BiteSizedTasks#Switch_headers_to_use_.23pra...). This series
ports the rest of the internal headers. The public headers are unchanged, and the syntax check
script now enforces using '#ifndef/#define/#endif' for public headers and '#pragma once' for
internal headers.
Jonathon Jongsma (46):
src/locking: use #pragma once in headers
src/lxc: use #pragma once in headers
src/network: use #pragma once in headers
src/nwfilter: use #pragma once in headers
src/openvz: use #pragma once in headers
src/phyp: use #pragma once in headers
src/qemu: use #pragma once in headers
src/remote: use #pragma once in headers
src/rpc: use #pragma once in headers
src/secret: use #pragma once in headers
src/security: use #pragma once in headers
src/storage: use #pragma once in headers
src/test: use #pragma once in headers
util: thread: use #pragma once in headers
util: alloc: use #pragma once
util: atomic: use #pragma once
util: storage: use #pragma once in headers
util: netdev: use #pragma once in headers
util: arch.h: use #pragma once in headers
util: file: use #pragma once in headers
util: firewall: use #pragma once in headers
util: host: use #pragma once in headers
util: log: use #pragma once in headers
util: cgroup: use #pragma once in headers
util: error: use #pragma once in headers
util: virprobe.h: use #pragma once in headers
util: dbus: use #pragma once in headers
util: command: use #pragma once in headers
util: hash: use #pragma once in headers
util: mac: use #pragma once in headers
util: object: use #pragma once in headers
util: string: use #pragma once in headers
util: socketaddr: use #pragma once in headers
util: sysinfo: use #pragma once in headers
util: netlink: use #pragma once in headers
util: xml: use #pragma once in headers
util: scsi: use #pragma once in headers
util: misc: use #pragma once in headers
src/vbox: use #pragma once in headers
src/vmware: use #pragma once in headers
src/vmx: use #pragma once in headers
src/vz: use #pragma once in headers
xen: use #pragma once in headers
tests: use #pragma once in headers
tools: use #pragma once in headers
syntax check: update header guard check
build-aux/header-ifdef.pl | 35 +++--
src/locking/domain_lock.h | 11 +-
src/locking/lock_daemon.h | 9 +-
src/locking/lock_daemon_config.h | 7 +-
src/locking/lock_daemon_dispatch.h | 7 +-
src/locking/lock_driver.h | 18 +--
src/locking/lock_driver_lockd.h | 5 +-
src/locking/lock_driver_nop.h | 8 +-
src/locking/lock_manager.h | 9 +-
src/lxc/lxc_cgroup.h | 13 +-
src/lxc/lxc_conf.h | 47 +++---
src/lxc/lxc_container.h | 37 +++--
src/lxc/lxc_domain.h | 13 +-
src/lxc/lxc_driver.h | 5 +-
src/lxc/lxc_fuse.h | 15 +-
src/lxc/lxc_hostdev.h | 9 +-
src/lxc/lxc_monitor.h | 11 +-
src/lxc/lxc_native.h | 11 +-
src/lxc/lxc_process.h | 7 +-
src/network/bridge_driver.h | 15 +-
src/network/bridge_driver_platform.h | 15 +-
src/nwfilter/nwfilter_dhcpsnoop.h | 6 +-
src/nwfilter/nwfilter_driver.h | 9 +-
src/nwfilter/nwfilter_ebiptables_driver.h | 13 +-
src/nwfilter/nwfilter_gentech_driver.h | 11 +-
src/nwfilter/nwfilter_learnipaddr.h | 13 +-
src/nwfilter/nwfilter_tech_driver.h | 7 +-
src/openvz/openvz_conf.h | 21 ++-
src/openvz/openvz_driver.h | 11 +-
src/openvz/openvz_util.h | 5 +-
src/phyp/phyp_driver.h | 5 +-
src/qemu/qemu_agent.h | 8 +-
src/qemu/qemu_alias.h | 13 +-
src/qemu/qemu_block.h | 17 +--
src/qemu/qemu_blockjob.h | 9 +-
src/qemu/qemu_capabilities.h | 23 ++-
src/qemu/qemu_capspriv.h | 5 +-
src/qemu/qemu_cgroup.h | 12 +-
src/qemu/qemu_command.h | 35 ++---
src/qemu/qemu_conf.h | 78 +++++-----
src/qemu/qemu_domain.h | 81 +++++-----
src/qemu/qemu_domain_address.h | 13 +-
src/qemu/qemu_driver.h | 5 +-
src/qemu/qemu_extdevice.h | 9 +-
src/qemu/qemu_firmware.h | 13 +-
src/qemu/qemu_hostdev.h | 9 +-
src/qemu/qemu_hotplug.h | 11 +-
src/qemu/qemu_hotplugpriv.h | 5 +-
src/qemu/qemu_interface.h | 10 +-
src/qemu/qemu_migration.h | 17 +--
src/qemu/qemu_migration_cookie.h | 9 +-
src/qemu/qemu_migration_params.h | 19 +--
src/qemu/qemu_migration_paramspriv.h | 5 +-
src/qemu/qemu_monitor.h | 27 ++--
src/qemu/qemu_monitor_json.h | 15 +-
src/qemu/qemu_monitor_priv.h | 7 +-
src/qemu/qemu_monitor_text.h | 9 +-
src/qemu/qemu_parse_command.h | 9 +-
src/qemu/qemu_process.h | 11 +-
src/qemu/qemu_processpriv.h | 9 +-
src/qemu/qemu_qapi.h | 12 +-
src/qemu/qemu_security.h | 58 ++++---
src/qemu/qemu_tpm.h | 7 +-
src/remote/remote_daemon.h | 35 ++---
src/remote/remote_daemon_config.h | 7 +-
src/remote/remote_daemon_dispatch.h | 11 +-
src/remote/remote_daemon_stream.h | 7 +-
src/remote/remote_driver.h | 36 ++---
src/rpc/virkeepalive.h | 9 +-
src/rpc/virnetclient.h | 41 +++--
src/rpc/virnetclientprogram.h | 15 +-
src/rpc/virnetclientstream.h | 9 +-
src/rpc/virnetdaemon.h | 21 ++-
src/rpc/virnetlibsshsession.h | 9 +-
src/rpc/virnetmessage.h | 7 +-
src/rpc/virnetsaslcontext.h | 11 +-
src/rpc/virnetserver.h | 17 +--
src/rpc/virnetserverclient.h | 19 +--
src/rpc/virnetservermdns.h | 7 +-
src/rpc/virnetserverprogram.h | 11 +-
src/rpc/virnetserverservice.h | 9 +-
src/rpc/virnetsocket.h | 38 +++--
src/rpc/virnetsshsession.h | 9 +-
src/rpc/virnettlscontext.h | 9 +-
src/secret/secret_driver.h | 5 +-
src/secret/secret_util.h | 8 +-
src/security/security_apparmor.h | 13 +-
src/security/security_dac.h | 7 +-
src/security/security_driver.h | 11 +-
src/security/security_manager.h | 13 +-
src/security/security_nop.h | 7 +-
src/security/security_selinux.h | 5 +-
src/security/security_stack.h | 7 +-
src/security/security_util.h | 5 +-
src/storage/storage_backend.h | 13 +-
src/storage/storage_backend_disk.h | 5 +-
src/storage/storage_backend_fs.h | 5 +-
src/storage/storage_backend_gluster.h | 5 +-
src/storage/storage_backend_iscsi.h | 5 +-
src/storage/storage_backend_iscsi_direct.h | 5 +-
src/storage/storage_backend_logical.h | 5 +-
src/storage/storage_backend_mpath.h | 5 +-
src/storage/storage_backend_rbd.h | 5 +-
src/storage/storage_backend_scsi.h | 5 +-
src/storage/storage_backend_sheepdog.h | 5 +-
src/storage/storage_backend_sheepdog_priv.h | 7 +-
src/storage/storage_backend_vstorage.h | 5 +-
src/storage/storage_backend_zfs.h | 5 +-
src/storage/storage_driver.h | 11 +-
src/storage/storage_file_fs.h | 5 +-
src/storage/storage_file_gluster.h | 5 +-
src/storage/storage_util.h | 31 ++--
src/test/test_driver.h | 7 +-
src/util/viralloc.h | 101 ++++++------
src/util/virarch.h | 41 +++--
src/util/virarptable.h | 7 +-
src/util/viratomic.h | 91 ++++++-----
src/util/viraudit.h | 15 +-
src/util/virauth.h | 8 +-
src/util/virauthconfig.h | 9 +-
src/util/virautoclean.h | 17 +--
src/util/virbitmap.h | 11 +-
src/util/virbuffer.h | 19 +--
src/util/vircgroup.h | 10 +-
src/util/vircgroupbackend.h | 15 +-
src/util/vircgroupv1.h | 5 +-
src/util/vircgroupv2.h | 5 +-
src/util/virclosecallbacks.h | 6 +-
src/util/vircommand.h | 11 +-
src/util/vircommandpriv.h | 7 +-
src/util/virconf.h | 9 +-
src/util/vircrypto.h | 11 +-
src/util/virdbus.h | 22 ++-
src/util/virdbuspriv.h | 11 +-
src/util/virdevmapper.h | 5 +-
src/util/virdnsmasq.h | 20 ++-
src/util/virebtables.h | 7 +-
src/util/virendian.h | 19 +--
src/util/virenum.h | 11 +-
src/util/virerror.h | 41 +++--
src/util/virerrorpriv.h | 5 +-
src/util/virevent.h | 7 +-
src/util/vireventpoll.h | 8 +-
src/util/virfcp.h | 5 +-
src/util/virfdstream.h | 6 +-
src/util/virfile.h | 61 ++++----
src/util/virfilecache.h | 11 +-
src/util/virfirewall.h | 11 +-
src/util/virfirewalld.h | 7 +-
src/util/virfirewalldpriv.h | 7 +-
src/util/virfirewallpriv.h | 7 +-
src/util/virfirmware.h | 8 +-
src/util/virgettext.h | 5 +-
src/util/virgic.h | 9 +-
src/util/virhash.h | 8 +-
src/util/virhashcode.h | 7 +-
src/util/virhook.h | 7 +-
src/util/virhostcpu.h | 17 +--
src/util/virhostcpupriv.h | 11 +-
src/util/virhostdev.h | 19 +--
src/util/virhostmem.h | 7 +-
src/util/viridentity.h | 8 +-
src/util/virinitctl.h | 5 +-
src/util/viriptables.h | 9 +-
src/util/viriscsi.h | 7 +-
src/util/virjson.h | 15 +-
src/util/virkeycode.h | 9 +-
src/util/virkeyfile.h | 7 +-
src/util/virkmod.h | 6 +-
src/util/virlease.h | 7 +-
src/util/virlockspace.h | 9 +-
src/util/virlog.h | 55 ++++---
src/util/virmacaddr.h | 17 +--
src/util/virmacmap.h | 5 +-
src/util/virmdev.h | 15 +-
src/util/virmodule.h | 5 +-
src/util/virnetdev.h | 33 ++--
src/util/virnetdevbandwidth.h | 8 +-
src/util/virnetdevbridge.h | 8 +-
src/util/virnetdevip.h | 9 +-
src/util/virnetdevmacvlan.h | 22 ++-
src/util/virnetdevmidonet.h | 9 +-
src/util/virnetdevopenvswitch.h | 13 +-
src/util/virnetdevtap.h | 19 +--
src/util/virnetdevveth.h | 7 +-
src/util/virnetdevvlan.h | 11 +-
src/util/virnetdevvportprofile.h | 18 +--
src/util/virnetlink.h | 37 +++--
src/util/virnodesuspend.h | 7 +-
src/util/virnuma.h | 10 +-
src/util/virobject.h | 19 +--
src/util/virpci.h | 21 ++-
src/util/virperf.h | 11 +-
src/util/virpidfile.h | 9 +-
src/util/virpolkit.h | 11 +-
src/util/virportallocator.h | 9 +-
src/util/virprobe.h | 63 ++++----
src/util/virprocess.h | 15 +-
src/util/virqemu.h | 13 +-
src/util/virrandom.h | 7 +-
src/util/virresctrl.h | 12 +-
src/util/virresctrlpriv.h | 7 +-
src/util/virrotatingfile.h | 7 +-
src/util/virscsi.h | 11 +-
src/util/virscsihost.h | 7 +-
src/util/virscsivhost.h | 13 +-
src/util/virseclabel.h | 5 +-
src/util/virsecret.h | 12 +-
src/util/virsexpr.h | 9 +-
src/util/virsocketaddr.h | 45 +++---
src/util/virstorageencryption.h | 17 +--
src/util/virstoragefile.h | 31 ++--
src/util/virstoragefilebackend.h | 9 +-
src/util/virstring.h | 37 +++--
src/util/virsysinfo.h | 13 +-
src/util/virsysinfopriv.h | 5 +-
src/util/virsystemd.h | 7 +-
src/util/virsystemdpriv.h | 7 +-
src/util/virthread.h | 19 +--
src/util/virthreadjob.h | 6 +-
src/util/virthreadpool.h | 9 +-
src/util/virtime.h | 11 +-
src/util/virtpm.h | 5 +-
src/util/virtypedparam.h | 15 +-
src/util/viruri.h | 15 +-
src/util/virusb.h | 13 +-
src/util/virutil.h | 47 +++---
src/util/viruuid.h | 9 +-
src/util/virvhba.h | 7 +-
src/util/virvsock.h | 4 +-
src/util/virxdrdefs.h | 35 ++---
src/util/virxml.h | 33 ++--
src/vbox/vbox_MSCOMGlue.h | 11 +-
src/vbox/vbox_common.h | 161 ++++++++++----------
src/vbox/vbox_driver.h | 19 +--
src/vbox/vbox_get_driver.h | 7 +-
src/vbox/vbox_glue.h | 15 +-
src/vbox/vbox_snapshot_conf.h | 9 +-
src/vbox/vbox_uniformed_api.h | 11 +-
src/vmware/vmware_conf.h | 19 +--
src/vmware/vmware_driver.h | 5 +-
src/vmx/vmx.h | 21 ++-
src/vz/vz_driver.h | 5 +-
src/vz/vz_sdk.h | 9 +-
src/vz/vz_utils.h | 37 +++--
src/xenapi/xenapi_driver.h | 5 +-
src/xenapi/xenapi_driver_private.h | 17 +--
src/xenapi/xenapi_utils.h | 15 +-
src/xenconfig/xen_common.h | 17 +--
src/xenconfig/xen_sxpr.h | 13 +-
src/xenconfig/xen_xl.h | 11 +-
src/xenconfig/xen_xm.h | 9 +-
src/xenconfig/xenxs_private.h | 29 ++--
tests/qemumonitortestutils.h | 19 +--
tests/qemusecuritytest.h | 7 +-
tests/testutils.h | 45 +++---
tests/testutilshostcpus.h | 11 +-
tests/testutilslxc.h | 11 +-
tests/testutilsqemu.h | 21 ++-
tests/testutilsqemuschema.h | 11 +-
tests/testutilsxen.h | 13 +-
tests/virfilewrapper.h | 5 +-
tests/virhashdata.h | 5 +-
tests/virmock.h | 129 ++++++++--------
tests/virnettlshelpers.h | 17 +--
tools/nss/libvirt_nss.h | 27 ++--
tools/virsh-completer.h | 6 +-
tools/virsh-console.h | 11 +-
tools/virsh-domain-monitor.h | 7 +-
tools/virsh-domain.h | 7 +-
tools/virsh-host.h | 7 +-
tools/virsh-interface.h | 9 +-
tools/virsh-network.h | 9 +-
tools/virsh-nodedev.h | 7 +-
tools/virsh-nwfilter.h | 11 +-
tools/virsh-pool.h | 9 +-
tools/virsh-secret.h | 7 +-
tools/virsh-snapshot.h | 7 +-
tools/virsh-util.h | 11 +-
tools/virsh-volume.h | 9 +-
tools/virsh.h | 77 +++++-----
tools/virt-admin-completer.h | 6 +-
tools/virt-admin.h | 11 +-
tools/virt-host-validate-bhyve.h | 5 +-
tools/virt-host-validate-common.h | 13 +-
tools/virt-host-validate-lxc.h | 5 +-
tools/virt-host-validate-qemu.h | 5 +-
tools/vsh-table.h | 7 +-
tools/vsh.h | 87 +++++------
tools/wireshark/src/packet-libvirt.h | 5 +-
290 files changed, 1808 insertions(+), 2648 deletions(-)
--
2.20.1
5 years, 6 months
[libvirt] [PATCH] qemu: delete unused QEMUD_CPUMASK_LEN macro
by Ján Tomko
Unused as of:
commit f136b83139c63f20de0df3285d9e82df2fb97bfc
qemu: Rework setting process affinity
Signed-off-by: Ján Tomko <jtomko(a)redhat.com>
---
src/qemu/qemu_conf.h | 8 --------
1 file changed, 8 deletions(-)
diff --git a/src/qemu/qemu_conf.h b/src/qemu/qemu_conf.h
index 983e74a3cf..9f2d652adc 100644
--- a/src/qemu/qemu_conf.h
+++ b/src/qemu/qemu_conf.h
@@ -49,14 +49,6 @@
# include "virfilecache.h"
# include "virfirmware.h"
-# ifdef CPU_SETSIZE /* Linux */
-# define QEMUD_CPUMASK_LEN CPU_SETSIZE
-# elif defined(_SC_NPROCESSORS_CONF) /* Cygwin */
-# define QEMUD_CPUMASK_LEN (sysconf(_SC_NPROCESSORS_CONF))
-# else
-# error "Port me"
-# endif
-
# define QEMU_DRIVER_NAME "QEMU"
typedef struct _virQEMUDriver virQEMUDriver;
--
2.19.2
5 years, 6 months
[libvirt] [RFC PATCH] docs: Use our own implementation for fetching the RSS data
by Martin Kletzander
This is just a small script I wrote. It works the same way as all the libraries
together which we are bundling, but with just JS. The only difference is that
the day of the date is formatted as 2-digit, but this should be a bug in
Firefox (at least locally for me) as the documentation states that type
'numeric' should actually not have leading zeros.
It will not be executed when the page is loaded locally.
It also uses the same proxy that query-rss uses. We can get rid of that, but
we'd either need to have our own proxy, send a sss header to allow fetching the
atom.xml or providing JSONP access to the RSS feed on virt-planet.
Signed-off-by: Martin Kletzander <mkletzan(a)redhat.com>
---
docs/index.html.in | 13 ------------
docs/js/main.js | 49 +++++++++++++++++++++++++++++++++++++++++++++-
2 files changed, 48 insertions(+), 14 deletions(-)
diff --git a/docs/index.html.in b/docs/index.html.in
index f593445d061d..fa75289cad0f 100644
--- a/docs/index.html.in
+++ b/docs/index.html.in
@@ -5,19 +5,6 @@
<script type="text/javascript" src="js/jquery-3.1.1.min.js"> </script>
<script type="text/javascript" src="js/moment.min.js"> </script>
<script type="text/javascript" src="js/jquery.rss.min.js"> </script>
-
- <script type="text/javascript">
- <!--
- jQuery(function($) {
- $("#planet").rss("http://planet.virt-tools.org/atom.xml", {
- ssl: true,
- layoutTemplate: '<dl>{entries}</dl>',
- entryTemplate: '<dt><a href="{url}">{title}</a></dt><dd>by {author} on {date}</li>',
- dateFormat: 'DD MMM YYYY'
- })
- })
- // -->
- </script>
</head>
<body class="index">
<h1>The virtualization API</h1>
diff --git a/docs/js/main.js b/docs/js/main.js
index e57b9f47ac11..668bf752b73d 100644
--- a/docs/js/main.js
+++ b/docs/js/main.js
@@ -28,7 +28,54 @@ function pageload() {
advancedSearch.className = "advancedsearch"
simpleSearch = document.getElementById("simplesearch")
- simplesearch.addEventListener("submit", advancedsearch)
+ simpleSearch.addEventListener("submit", advancedsearch)
+
+ docLoc = document.location;
+ if (docLoc.protocol != "file:" ||
+ docLoc.origin != "null" ||
+ docLoc.host !== "" ||
+ docLoc.hostname !== "") {
+ fetchRSS()
+ }
+}
+
+function fetchRSS() {
+ cb = "jsonpRSSFeedCallback"
+ window["jsonpRSSFeedCallback"] = function (data) {
+ if (data.responseStatus != 200)
+ return
+ entries = data.responseData.feed.entries
+ nEntries = Math.min(entries.length, 4)
+
+ dl = document.createElement('dl')
+
+ dateOpts = { day: 'numeric', month: 'short', year: 'numeric'}
+
+ for (i = 0; i < nEntries; i++) {
+ entry = entries[i]
+ a = document.createElement('a')
+ a.href = entry.link
+ a.innerText = entry.title
+
+ dt = document.createElement('dt')
+ dt.appendChild(a)
+ dl.appendChild(dt)
+
+ date = new Date(entry.publishedDate)
+ datestr = date.toLocaleDateString('default', dateOpts)
+
+ dd = document.createElement('dd')
+ dd.innerText = ` by ${entry.author} on ${datestr}`
+
+ dl.appendChild(dd)
+ }
+
+ planet.appendChild(dl);
+ };
+ script = document.createElement("script")
+ script.src = "https://feedrapp.herokuapp.com/"
+ script.src += `?q=http%3A%2F%2Fplanet.virt-tools.org%2Fatom.xml&callback=${cb}`
+ document.body.appendChild(script);
}
function advancedsearch(e) {
--
2.21.0
5 years, 6 months
[libvirt] [PATCH] remote: drop code for migrating config files from pre-XDG dir layout
by Daniel P. Berrangé
The unprivileged libvirtd daemon switched to use the XDG dir layout in
the 0.9.13 release, and included code for moving config files from the
old location. The chances of someone upgrading libvirt from <= 0.9.12
directly to libvirt >= 5.5.0 is close enough to zero that we can
reasonably drop the back compat code.
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
src/remote/remote_daemon.c | 79 --------------------------------------
1 file changed, 79 deletions(-)
diff --git a/src/remote/remote_daemon.c b/src/remote/remote_daemon.c
index c3782971f1..c1544ba914 100644
--- a/src/remote/remote_daemon.c
+++ b/src/remote/remote_daemon.c
@@ -845,79 +845,6 @@ static int daemonStateInit(virNetDaemonPtr dmn)
return 0;
}
-static int migrateProfile(void)
-{
- char *old_base = NULL;
- char *updated = NULL;
- char *home = NULL;
- char *xdg_dir = NULL;
- char *config_dir = NULL;
- const char *config_home;
- int ret = -1;
- mode_t old_umask;
-
- VIR_DEBUG("Checking if user profile needs migrating");
-
- if (!(home = virGetUserDirectory()))
- goto cleanup;
-
- if (virAsprintf(&old_base, "%s/.libvirt", home) < 0)
- goto cleanup;
-
- /* if the new directory is there or the old one is not: do nothing */
- if (!(config_dir = virGetUserConfigDirectory()))
- goto cleanup;
-
- if (!virFileIsDir(old_base) || virFileExists(config_dir)) {
- VIR_DEBUG("No old profile in '%s' / "
- "new profile directory already present '%s'",
- old_base, config_dir);
- ret = 0;
- goto cleanup;
- }
-
- /* test if we already attempted to migrate first */
- if (virAsprintf(&updated, "%s/DEPRECATED-DIRECTORY", old_base) < 0)
- goto cleanup;
- if (virFileExists(updated))
- goto cleanup;
-
- config_home = virGetEnvBlockSUID("XDG_CONFIG_HOME");
- if (config_home && config_home[0] != '\0') {
- if (VIR_STRDUP(xdg_dir, config_home) < 0)
- goto cleanup;
- } else {
- if (virAsprintf(&xdg_dir, "%s/.config", home) < 0)
- goto cleanup;
- }
-
- old_umask = umask(077);
- if (virFileMakePath(xdg_dir) < 0) {
- umask(old_umask);
- goto cleanup;
- }
- umask(old_umask);
-
- if (rename(old_base, config_dir) < 0) {
- int fd = creat(updated, 0600);
- VIR_FORCE_CLOSE(fd);
- VIR_ERROR(_("Unable to migrate %s to %s"), old_base, config_dir);
- goto cleanup;
- }
-
- VIR_DEBUG("Profile migrated from %s to %s", old_base, config_dir);
- ret = 0;
-
- cleanup:
- VIR_FREE(home);
- VIR_FREE(old_base);
- VIR_FREE(xdg_dir);
- VIR_FREE(config_dir);
- VIR_FREE(updated);
-
- return ret;
-}
-
static int
daemonSetupHostUUID(const struct daemonConfig *config)
{
@@ -1162,12 +1089,6 @@ int main(int argc, char **argv) {
exit(EXIT_FAILURE);
}
- if (!privileged &&
- migrateProfile() < 0) {
- VIR_ERROR(_("Exiting due to failure to migrate profile"));
- exit(EXIT_FAILURE);
- }
-
if (daemonSetupHostUUID(config) < 0) {
VIR_ERROR(_("Can't setup host uuid"));
exit(EXIT_FAILURE);
--
2.21.0
5 years, 6 months
[libvirt] [python PATCH] Add support for virNetworkPort object & APIs
by Daniel P. Berrangé
Define the various rules in the generator to wire up methods into the
virNetwork class and create the new virNetworkPort class.
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
generator.py | 25 +++++++++-
libvirt-override-api.xml | 13 ++++++
libvirt-override.c | 99 ++++++++++++++++++++++++++++++++++++++++
typewrappers.c | 13 ++++++
typewrappers.h | 10 ++++
5 files changed, 158 insertions(+), 2 deletions(-)
diff --git a/generator.py b/generator.py
index ffa3ce5..ab5144d 100755
--- a/generator.py
+++ b/generator.py
@@ -328,6 +328,10 @@ py_types = {
'virNetwork *': ('O', "virNetwork", "virNetworkPtr", "virNetworkPtr"),
'const virNetwork *': ('O', "virNetwork", "virNetworkPtr", "virNetworkPtr"),
+ 'virNetworkPortPtr': ('O', "virNetworkPort", "virNetworkPortPtr", "virNetworkPortPtr"),
+ 'virNetworkPort *': ('O', "virNetworkPort", "virNetworkPortPtr", "virNetworkPortPtr"),
+ 'const virNetworkPort *': ('O', "virNetworkPort", "virNetworkPortPtr", "virNetworkPortPtr"),
+
'virInterfacePtr': ('O', "virInterface", "virInterfacePtr", "virInterfacePtr"),
'virInterface *': ('O', "virInterface", "virInterfacePtr", "virInterfacePtr"),
'const virInterface *': ('O', "virInterface", "virInterfacePtr", "virInterfacePtr"),
@@ -496,6 +500,8 @@ skip_impl = (
'virConnectBaselineHypervisorCPU',
'virDomainGetLaunchSecurityInfo',
'virNodeGetSEVInfo',
+ 'virNetworkPortGetParameters',
+ 'virNetworkPortSetParameters',
)
lxc_skip_impl = (
@@ -541,6 +547,7 @@ skip_function = (
'virConnectListAllStoragePools', # overridden in virConnect.py
'virStoragePoolListAllVolumes', # overridden in virStoragePool.py
'virConnectListAllNetworks', # overridden in virConnect.py
+ 'virNetworkListAllPorts', # overridden in virConnect.py
'virConnectListAllInterfaces', # overridden in virConnect.py
'virConnectListAllNodeDevices', # overridden in virConnect.py
'virConnectListAllNWFilters', # overridden in virConnect.py
@@ -575,6 +582,7 @@ skip_function = (
"virDomainRef",
"virInterfaceRef",
"virNetworkRef",
+ "virNetworkPortRef",
"virNodeDeviceRef",
"virSecretRef",
"virNWFilterRef",
@@ -590,6 +598,7 @@ skip_function = (
"virDomainGetConnect",
"virInterfaceGetConnect",
"virNetworkGetConnect",
+ "virNetworkPortGetNetwork",
"virSecretGetConnect",
"virNWFilterGetConnect",
"virStoragePoolGetConnect",
@@ -1005,6 +1014,8 @@ classes_type = {
"virDomain *": ("._o", "virDomain(self, _obj=%s)", "virDomain"),
"virNetworkPtr": ("._o", "virNetwork(self, _obj=%s)", "virNetwork"),
"virNetwork *": ("._o", "virNetwork(self, _obj=%s)", "virNetwork"),
+ "virNetworkPortPtr": ("._o", "virNetworkPort(self, _obj=%s)", "virNetworkPort"),
+ "virNetworkPort *": ("._o", "virNetworkPort(self, _obj=%s)", "virNetworkPort"),
"virInterfacePtr": ("._o", "virInterface(self, _obj=%s)", "virInterface"),
"virInterface *": ("._o", "virInterface(self, _obj=%s)", "virInterface"),
"virStoragePoolPtr": ("._o", "virStoragePool(self, _obj=%s)", "virStoragePool"),
@@ -1027,8 +1038,8 @@ classes_type = {
"virDomainSnapshot *": ("._o", "virDomainSnapshot(self, _obj=%s)", "virDomainSnapshot"),
}
-primary_classes = ["virDomain", "virNetwork", "virInterface",
- "virStoragePool", "virStorageVol",
+primary_classes = ["virDomain", "virNetwork", "virNetworkPort",
+ "virInterface", "virStoragePool", "virStorageVol",
"virConnect", "virNodeDevice", "virSecret",
"virNWFilter", "virNWFilterBinding",
"virStream", "virDomainSnapshot"]
@@ -1036,6 +1047,7 @@ primary_classes = ["virDomain", "virNetwork", "virInterface",
classes_destructors = {
"virDomain": "virDomainFree",
"virNetwork": "virNetworkFree",
+ "virNetworkPort": "virNetworkPortFree",
"virInterface": "virInterfaceFree",
"virStoragePool": "virStoragePoolFree",
"virStorageVol": "virStorageVolFree",
@@ -1111,6 +1123,12 @@ def nameFixup(name, classe, type, file):
elif name[0:16] == "virNetworkLookup":
func = name[3:]
func = func[0:1].lower() + func[1:]
+ elif name[0:23] == "virNetworkPortCreateXML":
+ func = name[10:]
+ func = func[0:1].lower() + func[1:]
+ elif name[0:20] == "virNetworkPortLookup":
+ func = name[10:]
+ func = func[0:1].lower() + func[1:]
elif name[0:18] == "virInterfaceDefine":
func = name[3:]
func = func[0:1].lower() + func[1:]
@@ -1199,6 +1217,9 @@ def nameFixup(name, classe, type, file):
func = name[13:]
func = func[0:1].lower() + func[1:]
func = func.replace("dHCP", "DHCP")
+ elif name[0:14] == "virNetworkPort":
+ func = name[14:]
+ func = func[0:1].lower() + func[1:]
elif name[0:10] == "virNetwork":
func = name[10:]
func = func[0:1].lower() + func[1:]
diff --git a/libvirt-override-api.xml b/libvirt-override-api.xml
index 53b15c5..6e29c1e 100644
--- a/libvirt-override-api.xml
+++ b/libvirt-override-api.xml
@@ -764,5 +764,18 @@
<arg name='virttype' type='const char *' info='optional virtualization type'/>
<arg name='flags' type='int' info='unused, always pass 0'/>
</function>
+ <function name='virNetworkPortSetParameters' file='python'>
+ <info>Change the port tunables</info>
+ <return type='int' info='-1 in case of error, 0 in case of success.'/>
+ <arg name='port' type='virNetworkPortPtr' info='pointer to network port object'/>
+ <arg name='params' type='virTypedParameterPtr' info='pointer to tunable objects'/>
+ <arg name='flags' type='int' info='unused, always pass 0'/>
+ </function>
+ <function name='virNetworkPortGetParameters' file='python'>
+ <info>Get the port parameters</info>
+ <return type='char *' info='None in case of error, returns a dictionary of params'/>
+ <arg name='port' type='virNetworkPortPtr' info='pointer to network port object'/>
+ <arg name='flags' type='int' info='unused, always pass 0'/>
+ </function>
</symbols>
</api>
diff --git a/libvirt-override.c b/libvirt-override.c
index c5e2908..a940730 100644
--- a/libvirt-override.c
+++ b/libvirt-override.c
@@ -9945,6 +9945,101 @@ libvirt_virNodeGetSEVInfo(PyObject *self ATTRIBUTE_UNUSED,
}
#endif /* LIBVIR_CHECK_VERSION(4, 5, 0) */
+#if LIBVIR_CHECK_VERSION(5, 5, 0)
+static PyObject *
+libvirt_virNetworkPortSetParameters(PyObject *self ATTRIBUTE_UNUSED,
+ PyObject *args)
+{
+ virNetworkPortPtr port;
+ PyObject *pyobj_port, *info;
+ PyObject *ret = NULL;
+ int i_retval;
+ int nparams = 0;
+ Py_ssize_t size = 0;
+ unsigned int flags;
+ virTypedParameterPtr params = NULL, new_params = NULL;
+
+ if (!PyArg_ParseTuple(args,
+ (char *)"OOI:virNetworkPortSetParameters",
+ &pyobj_port, &info, &flags))
+ return NULL;
+ port = (virNetworkPortPtr) PyvirNetworkPort_Get(pyobj_port);
+
+ if ((size = PyDict_Size(info)) < 0)
+ return NULL;
+
+ if (size == 0) {
+ PyErr_Format(PyExc_LookupError,
+ "Need non-empty dictionary to set attributes");
+ return NULL;
+ }
+
+ LIBVIRT_BEGIN_ALLOW_THREADS;
+ i_retval = virNetworkPortGetParameters(port, ¶ms, &nparams, flags);
+ LIBVIRT_END_ALLOW_THREADS;
+
+ if (i_retval < 0)
+ return VIR_PY_INT_FAIL;
+
+ if (nparams == 0) {
+ PyErr_Format(PyExc_LookupError,
+ "Port has no settable attributes");
+ return NULL;
+ }
+
+ new_params = setPyVirTypedParameter(info, params, nparams);
+ if (!new_params)
+ goto cleanup;
+
+ LIBVIRT_BEGIN_ALLOW_THREADS;
+ i_retval = virNetworkPortSetParameters(port, new_params, size, flags);
+ LIBVIRT_END_ALLOW_THREADS;
+
+ if (i_retval < 0) {
+ ret = VIR_PY_INT_FAIL;
+ goto cleanup;
+ }
+
+ ret = VIR_PY_INT_SUCCESS;
+
+ cleanup:
+ virTypedParamsFree(params, nparams);
+ virTypedParamsFree(new_params, size);
+ return ret;
+}
+
+static PyObject *
+libvirt_virNetworkPortGetParameters(PyObject *self ATTRIBUTE_UNUSED,
+ PyObject *args)
+{
+ PyObject *pyobj_port;
+ virNetworkPortPtr port;
+ virTypedParameterPtr params = NULL;
+ int nparams = 0;
+ PyObject *dict = NULL;
+ unsigned int flags;
+ int rc;
+
+ if (!PyArg_ParseTuple(args, (char *) "OI:virNetworkPortGetParameters",
+ &pyobj_port, &flags))
+ return NULL;
+ port = (virNetworkPortPtr) PyvirNetworkPort_Get(pyobj_port);
+
+ LIBVIRT_BEGIN_ALLOW_THREADS;
+ rc = virNetworkPortGetParameters(port, ¶ms, &nparams, flags);
+ LIBVIRT_END_ALLOW_THREADS;
+
+ if (rc < 0)
+ return VIR_PY_NONE;
+
+ if (!(dict = getPyVirTypedParameter(params, nparams)))
+ goto cleanup;
+
+ cleanup:
+ virTypedParamsFree(params, nparams);
+ return dict;
+}
+#endif /* LIBVIR_CHECK_VERSION(5, 5, 0) */
/************************************************************************
* *
@@ -10192,6 +10287,10 @@ 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(4, 5, 0)
+ {(char *) "virNetworkPortSetParameters", libvirt_virNetworkPortSetParameters, METH_VARARGS, NULL},
+ {(char *) "virNetworkPortGetParameters", libvirt_virNetworkPortGetParameters, METH_VARARGS, NULL},
+#endif /* LIBVIR_CHECK_VERSION(5, 5, 0) */
{NULL, NULL, 0, NULL}
};
diff --git a/typewrappers.c b/typewrappers.c
index 9ba14b4..5710744 100644
--- a/typewrappers.c
+++ b/typewrappers.c
@@ -451,6 +451,19 @@ libvirt_virNetworkPtrWrap(virNetworkPtr node)
return ret;
}
+PyObject *
+libvirt_virNetworkPortPtrWrap(virNetworkPortPtr node)
+{
+ PyObject *ret;
+
+ if (node == NULL) {
+ return VIR_PY_NONE;
+ }
+
+ ret = libvirt_buildPyObject(node, "virNetworkPortPtr", NULL);
+ return ret;
+}
+
PyObject *
libvirt_virInterfacePtrWrap(virInterfacePtr node)
{
diff --git a/typewrappers.h b/typewrappers.h
index 4423774..e4983b2 100644
--- a/typewrappers.h
+++ b/typewrappers.h
@@ -58,6 +58,15 @@ typedef struct {
} PyvirNetwork_Object;
+#define PyvirNetworkPort_Get(v) (((v) == Py_None) ? NULL : \
+ (((PyvirNetworkPort_Object *)(v))->obj))
+
+typedef struct {
+ PyObject_HEAD
+ virNetworkPortPtr obj;
+} PyvirNetworkPort_Object;
+
+
#define PyvirInterface_Get(v) (((v) == Py_None) ? NULL : \
(((PyvirInterface_Object *)(v))->obj))
@@ -192,6 +201,7 @@ int libvirt_charPtrSizeUnwrap(PyObject *obj, char **str, Py_ssize_t *size);
PyObject * libvirt_virConnectPtrWrap(virConnectPtr node);
PyObject * libvirt_virDomainPtrWrap(virDomainPtr node);
PyObject * libvirt_virNetworkPtrWrap(virNetworkPtr node);
+PyObject * libvirt_virNetworkPortPtrWrap(virNetworkPortPtr node);
PyObject * libvirt_virInterfacePtrWrap(virInterfacePtr node);
PyObject * libvirt_virStoragePoolPtrWrap(virStoragePoolPtr node);
PyObject * libvirt_virStorageVolPtrWrap(virStorageVolPtr node);
--
2.21.0
5 years, 6 months
[libvirt] [PATCHv3 0/5] Implement debugcon chardev
by Ján Tomko
v2: https://www.redhat.com/archives/libvir-list/2019-February/msg00293.html
v3:
* dropped the pointless isa-prefix
* use DO_TEST_CAPS_LATEST
* trimmed the XML
* compiles with gcc
* only make irq optional
* autofill iobase
Ján Tomko (3):
qemu: introduce qemuDomainChrSerialTargetModel
qemu: make irq optional when formatting the ISA address
qemu: autoadd iobase to debugcon chardev
Nikolay Shirokovskiy (2):
conf: add debugcon chardev guest interface
qemu: implement debugcon chardev
docs/formatdomain.html.in | 3 +-
docs/schemas/domaincommon.rng | 1 +
src/conf/domain_conf.c | 5 ++++
src/conf/domain_conf.h | 1 +
src/qemu/qemu_command.c | 25 +++++++++++++---
src/qemu/qemu_domain.c | 12 ++++++++
.../isa-serial-debugcon.x86_64-latest.args | 30 +++++++++++++++++++
.../qemuxml2argvdata/isa-serial-debugcon.xml | 21 +++++++++++++
tests/qemuxml2argvtest.c | 1 +
.../isa-serial-debugcon.xml | 30 +++++++++++++++++++
tests/qemuxml2xmltest.c | 2 ++
11 files changed, 126 insertions(+), 5 deletions(-)
create mode 100644 tests/qemuxml2argvdata/isa-serial-debugcon.x86_64-latest.args
create mode 100644 tests/qemuxml2argvdata/isa-serial-debugcon.xml
create mode 100644 tests/qemuxml2xmloutdata/isa-serial-debugcon.xml
--
2.19.2
5 years, 6 months
[libvirt] [PATCH] test_driver: implement virDomainSendProcessSignal
by Ilias Stamatis
Only succeed when @pid_value is 1, since according to the docs this is
the minimum requirement for any driver to implement this API.
>From man 2 kill:
The only signals that can be sent to process ID 1, the init process, are
those for which init has explicitly installed signal handlers.
Regarding sending SIGTERM and SIGKILL to init, the test driver domains
pretend to run Linux, and on Linux init/systemd explicitly ignores these
signals.
Correspondingly, we can assume that no signal handlers are installed for
any other signal and succeed by doing nothing.
Signed-off-by: Ilias Stamatis <stamatis.iliass(a)gmail.com>
---
Alternatively, we could succeed when @pid_value is any number or belongs
to a set of specific numbers.
src/test/test_driver.c | 35 +++++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+)
mode change 100644 => 100755 src/test/test_driver.c
diff --git a/src/test/test_driver.c b/src/test/test_driver.c
old mode 100644
new mode 100755
index cae2521b21..490a605a77
--- a/src/test/test_driver.c
+++ b/src/test/test_driver.c
@@ -2825,6 +2825,40 @@ static int testDomainSetMetadata(virDomainPtr dom,
return ret;
}
+static int
+testDomainSendProcessSignal(virDomainPtr dom,
+ long long pid_value,
+ unsigned int signum,
+ unsigned int flags)
+{
+ int ret = -1;
+ virDomainObjPtr vm = NULL;
+
+ virCheckFlags(0, -1);
+
+ if (pid_value != 1) {
+ virReportError(VIR_ERR_INVALID_ARG,
+ _("only sending a signal to pid 1 is supported"));
+ return -1;
+ }
+
+ if (signum >= VIR_DOMAIN_PROCESS_SIGNAL_LAST) {
+ virReportError(VIR_ERR_INVALID_ARG,
+ _("signum value %d is out of range"),
+ signum);
+ return -1;
+ }
+
+ if (!(vm = testDomObjFromDomain(dom)))
+ goto cleanup;
+
+ /* do nothing */
+ ret = 0;
+
+ cleanup:
+ virDomainObjEndAPI(&vm);
+ return ret;
+}
static int testNodeGetCellsFreeMemory(virConnectPtr conn,
unsigned long long *freemems,
@@ -7027,6 +7061,7 @@ static virHypervisorDriver testHypervisorDriver = {
.domainScreenshot = testDomainScreenshot, /* 1.0.5 */
.domainGetMetadata = testDomainGetMetadata, /* 1.1.3 */
.domainSetMetadata = testDomainSetMetadata, /* 1.1.3 */
+ .domainSendProcessSignal = testDomainSendProcessSignal, /* 5.5.0 */
.connectGetCPUModelNames = testConnectGetCPUModelNames, /* 1.1.3 */
.domainManagedSave = testDomainManagedSave, /* 1.1.4 */
.domainHasManagedSaveImage = testDomainHasManagedSaveImage, /* 1.1.4 */
--
2.21.0
5 years, 6 months
[libvirt] [PATCH v2 0/2] docs: Drop third-party JavaScript libraries
by Andrea Bolognani
We're carrying around embedded copies of a few JavaScript libraries
for use in our homepage, and we've been unforgivably bad at keeping
them up to date.
Rework the homepage so that they're no longer used, then just get
rid of them.
Changes from [v1]:
* drop libraries instead of updating them.
[v1] https://www.redhat.com/archives/libvir-list/2019-June/msg00551.html
Andrea Bolognani (2):
docs: Move "Community" links from footer to homepage
docs: Drop third-party JavaScript libraries
docs/Makefile.am | 4 +---
docs/index.html.in | 37 +++++++++++++------------------------
docs/js/jquery-3.1.1.min.js | 4 ----
docs/js/jquery.rss.min.js | 11 -----------
docs/js/moment.min.js | 7 -------
docs/libvirt.css | 2 +-
docs/page.xsl | 8 --------
7 files changed, 15 insertions(+), 58 deletions(-)
delete mode 100644 docs/js/jquery-3.1.1.min.js
delete mode 100644 docs/js/jquery.rss.min.js
delete mode 100644 docs/js/moment.min.js
--
2.21.0
5 years, 6 months