[PATCH V2] tests: Fix qemuxml2xmltest with audio driver defined in env
by Jim Fehlig
If QEMU_AUDIO_DRV is defined in the build host environment, several tests
in qemuxml2xmltest fail.
$ env | grep -i audio
AUDIODRIVER=pulseaudio
QEMU_AUDIO_DRV=pa
SDL_AUDIODRIVER=pulse
An example test failure with the above environment
907) QEMU XML-2-XML-active video-virtio-gpu-sdl-gl
In 'libvirt/tests/qemuxml2xmloutdata/video-virtio-gpu-sdl-gl.xml':
Offset 1244
Expect [v]
Actual [audio id='1' type='pulseaudio'/>
<v]
Scrub QEMU_AUDIO_DRV from the environment before executing the tests in
qemuxml2xmltest. SDL_AUDIODRIVER also needs scrubbed since it will be
examined if QEMU_AUDIO_DRV=sdl.
Signed-off-by: Jim Fehlig <jfehlig(a)suse.com>
---
v2: Also scrub SDL_AUDIODRIVER
tests/qemuxml2xmltest.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c
index 137f1871af..823dd40f50 100644
--- a/tests/qemuxml2xmltest.c
+++ b/tests/qemuxml2xmltest.c
@@ -198,6 +198,8 @@ mymain(void)
* using ADD_ENV_COPY, otherwise these tests may fail due to unexpected
* values for these envvars */
g_setenv("PATH", "/bin", TRUE);
+ g_unsetenv("QEMU_AUDIO_DRV");
+ g_unsetenv("SDL_AUDIODRIVER");
DO_TEST("minimal", NONE);
DO_TEST_CAPS_LATEST("genid");
--
2.30.1
3 years, 7 months
[PATCH] tests: Fix qemuxml2xmltest with audio driver defined in env
by Jim Fehlig
If QEMU_AUDIO_DRV is defined in the build host environment, several tests
in qemuxml2xmltest fail.
$ env | grep -i audio
AUDIODRIVER=pulseaudio
QEMU_AUDIO_DRV=pa
SDL_AUDIODRIVER=pulse
An example test failure with the above environment
907) QEMU XML-2-XML-active video-virtio-gpu-sdl-gl
In 'libvirt/tests/qemuxml2xmloutdata/video-virtio-gpu-sdl-gl.xml':
Offset 1244
Expect [v]
Actual [audio id='1' type='pulseaudio'/>
<v]
Scrub QEMU_AUDIO_DRV from the environment before executing the tests in
qemuxml2xmltest.
Signed-off-by: Jim Fehlig <jfehlig(a)suse.com>
---
On IRC Daniel suggested scrubbing QEM_AUDIO_DRV and SDL_AUDIODRIVER.
Only QEM_AUDIO_DRV was needed to fix the test failure, but I can scrub
the other one too if that's preferred.
tests/qemuxml2xmltest.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c
index 137f1871af..aff6ae9175 100644
--- a/tests/qemuxml2xmltest.c
+++ b/tests/qemuxml2xmltest.c
@@ -198,6 +198,7 @@ mymain(void)
* using ADD_ENV_COPY, otherwise these tests may fail due to unexpected
* values for these envvars */
g_setenv("PATH", "/bin", TRUE);
+ g_unsetenv("QEMU_AUDIO_DRV");
DO_TEST("minimal", NONE);
DO_TEST_CAPS_LATEST("genid");
--
2.30.1
3 years, 7 months
[libvir PATCH] run: fix flake8 violations
by Daniel P. Berrangé
Two blank lines are needed either side of functions.
Comments must have a single space character immediately after
the "#".
The unused exception variable can be removed.
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
I dropped the ball by not running syntax check on the 'run' script
changes. Pushed this fixup for the style problems.
run.in | 15 ++++++++++++---
1 file changed, 12 insertions(+), 3 deletions(-)
diff --git a/run.in b/run.in
index b710ba87fb..b778505a33 100644
--- a/run.in
+++ b/run.in
@@ -16,7 +16,7 @@
# License along with this library; If not, see
# <http://www.gnu.org/licenses/>.
-#----------------------------------------------------------------------
+# ----------------------------------------------------------------------
#
# With this script you can run libvirt programs without needing to
# install them first. You just have to do for example:
@@ -38,7 +38,7 @@
#
# sudo ./run virsh list --all
#
-#----------------------------------------------------------------------
+# ----------------------------------------------------------------------
import os
import os.path
@@ -46,6 +46,7 @@ import random
import sys
import subprocess
+
# Function to intelligently prepend a path to an environment variable.
# See https://stackoverflow.com/a/9631350
def prepend(env, varname, extradir):
@@ -54,6 +55,7 @@ def prepend(env, varname, extradir):
else:
env[varname] = extradir
+
here = "@abs_builddir@"
if len(sys.argv) < 2:
@@ -93,29 +95,36 @@ modular_daemons = [
"virtxend",
]
+
def is_modular_daemon(name):
return name in modular_daemons
+
def is_monolithic_daemon(name):
return name == "libvirtd"
+
def is_systemd_host():
if os.getuid() != 0:
return False
return os.path.exists("/run/systemd/system")
+
def daemon_units(name):
return [name + suffix for suffix in [
".service", ".socket", "-ro.socket", "-admin.socket"]]
+
def is_unit_active(name):
ret = subprocess.call(["systemctl", "is-active", "-q", name])
return ret == 0
+
def change_unit(name, action):
ret = subprocess.call(["systemctl", action, "-q", name])
return ret == 0
+
try_stop_units = []
if is_systemd_host():
name = os.path.basename(prog)
@@ -152,7 +161,7 @@ else:
print("Running %s..." % prog)
ret = subprocess.call([prog] + args, env=env)
- except KeyboardInterrupt as ex:
+ except KeyboardInterrupt:
pass
finally:
print("Re-starting original systemd units...")
--
2.30.2
3 years, 7 months
[PATCH] test: Update screenshot
by Michal Privoznik
While having screenshot of NeXT Cube running WorldWideWeb, I
think this deserves a little upgrade. Something more fancy.
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
src/test/test-screenshot.png | Bin 33443 -> 1855 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
diff --git a/src/test/test-screenshot.png b/src/test/test-screenshot.png
index 3991eabb228631ec86382273a3ea998cb9adf5bf..1c0053236fb2eec1afe1d8165cb9c197cdb36168 100644
GIT binary patch
literal 1855
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
VO3X8K*$*B@LeS0-f1z(I{yV?eC1L;o
literal 33443
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
--
2.26.3
3 years, 7 months
[libvirt PATCHv2] docs: secret: do not use a valuable password
by Ján Tomko
Our website displays "**** ******" as the example password.
Despite its tradition rooted in 18th Century French literature,
we cannot assume it to be public.
Use ******* as suggested by Erik instead.
Signed-off-by: Ján Tomko <jtomko(a)redhat.com>
---
docs/formatsecret.html.in | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/formatsecret.html.in b/docs/formatsecret.html.in
index 9dc9cdf288..c0f16f700d 100644
--- a/docs/formatsecret.html.in
+++ b/docs/formatsecret.html.in
@@ -405,7 +405,7 @@ Secret value set
</p>
<pre>
-# MYSECRET=`printf %s "open sesame" | base64`
+# MYSECRET=`printf %s "*******" | base64`
# virsh secret-set-value 6dd3e4a5-1d76-44ce-961f-f119f5aad935 $MYSECRET
Secret value set
</pre>
--
2.29.2
3 years, 7 months
[libvirt PATCH] docs: secret: do not use a valuable password
by Ján Tomko
Our website displays "**** ******" as the example password.
Despite its tradition rooted in 18th century French literature,
we cannot assume it to be public.
Use a random string of letters and numbers instead.
Signed-off-by: Ján Tomko <jtomko(a)redhat.com>
---
docs/formatsecret.html.in | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/formatsecret.html.in b/docs/formatsecret.html.in
index 9dc9cdf288..19613cb5dc 100644
--- a/docs/formatsecret.html.in
+++ b/docs/formatsecret.html.in
@@ -405,7 +405,7 @@ Secret value set
</p>
<pre>
-# MYSECRET=`printf %s "open sesame" | base64`
+# MYSECRET=`printf %s "dQw4w9WgXcQ" | base64`
# virsh secret-set-value 6dd3e4a5-1d76-44ce-961f-f119f5aad935 $MYSECRET
Secret value set
</pre>
--
2.29.2
3 years, 7 months
[PATCH] XML <source bridge='VMnet0'/> update in <interface type='bridge'/>
by Kristina Hanicova
Previously, we accepted empty bridge name, because some old versions of
VMWare Workstation did not put it into the config. But this doesn't make
much sense - to have an interface type bridge with no name. We
circumvented this problem by generating an empty name but that is
equally wrong.
Therefore, fill in missing bridge names (according to the documentation
[1] the default bridge name is VMnet0) and error out if bridge name is
missing.
This partially reverts f246cdb5aca13ac9409b2ad43087e3078615ffcb
1: https://docs.vmware.com/en/VMware-Workstation-Player-for-Linux/16.0/com.v...
Signed-off-by: Kristina Hanicova <khanicov(a)redhat.com>
---
src/vmx/vmx.c | 10 +++-------
tests/vmx2xmldata/vmx2xml-fusion-in-the-wild-1.vmx | 2 ++
tests/vmx2xmldata/vmx2xml-fusion-in-the-wild-1.xml | 4 ++--
tests/vmx2xmldata/vmx2xml-ws-in-the-wild-2.vmx | 1 +
tests/vmx2xmldata/vmx2xml-ws-in-the-wild-2.xml | 2 +-
tests/xml2vmxdata/xml2vmx-fusion-in-the-wild-1.vmx | 2 ++
tests/xml2vmxdata/xml2vmx-fusion-in-the-wild-1.xml | 4 ++--
tests/xml2vmxdata/xml2vmx-ws-in-the-wild-2.vmx | 1 +
tests/xml2vmxdata/xml2vmx-ws-in-the-wild-2.xml | 2 +-
9 files changed, 15 insertions(+), 13 deletions(-)
diff --git a/src/vmx/vmx.c b/src/vmx/vmx.c
index 76d01a36de..82d3409c79 100644
--- a/src/vmx/vmx.c
+++ b/src/vmx/vmx.c
@@ -2803,11 +2803,8 @@ virVMXParseEthernet(virConfPtr conf, int controller, virDomainNetDefPtr *def)
STRCASEEQ(connectionType, "bridged") ||
STRCASEEQ(connectionType, "custom")) {
if (virVMXGetConfigString(conf, networkName_name, &networkName,
- true) < 0)
+ false) < 0)
goto cleanup;
-
- if (!networkName)
- networkName = g_strdup("");
}
/* vmx:vnet -> def:data.ifname */
@@ -3924,9 +3921,8 @@ virVMXFormatEthernet(virDomainNetDefPtr def, int controller,
/* def:type, def:ifname -> vmx:connectionType */
switch (def->type) {
case VIR_DOMAIN_NET_TYPE_BRIDGE:
- if (STRNEQ(def->data.bridge.brname, ""))
- virBufferAsprintf(buffer, "ethernet%d.networkName = \"%s\"\n",
- controller, def->data.bridge.brname);
+ virBufferAsprintf(buffer, "ethernet%d.networkName = \"%s\"\n",
+ controller, def->data.bridge.brname);
if (def->ifname != NULL) {
virBufferAsprintf(buffer, "ethernet%d.connectionType = \"custom\"\n",
diff --git a/tests/vmx2xmldata/vmx2xml-fusion-in-the-wild-1.vmx b/tests/vmx2xmldata/vmx2xml-fusion-in-the-wild-1.vmx
index ef6af19b49..75583bdc53 100644
--- a/tests/vmx2xmldata/vmx2xml-fusion-in-the-wild-1.vmx
+++ b/tests/vmx2xmldata/vmx2xml-fusion-in-the-wild-1.vmx
@@ -12,9 +12,11 @@ sound.filename = "-1"
sound.autodetect = "TRUE"
usb.present = "TRUE"
ethernet0.present = "TRUE"
+ethernet0.networkName = "VMnet0"
ethernet0.addressType = "generated"
ethernet0.connectionType = "bridged"
ethernet1.present = "TRUE"
+ethernet1.networkName = "VMnet0"
ethernet1.addressType = "generated"
ethernet1.connectionType = "bridged"
scsi0:0.present = "TRUE"
diff --git a/tests/vmx2xmldata/vmx2xml-fusion-in-the-wild-1.xml b/tests/vmx2xmldata/vmx2xml-fusion-in-the-wild-1.xml
index 2dd46eb2b1..f6e9f4acdf 100644
--- a/tests/vmx2xmldata/vmx2xml-fusion-in-the-wild-1.xml
+++ b/tests/vmx2xmldata/vmx2xml-fusion-in-the-wild-1.xml
@@ -26,11 +26,11 @@
<controller type='ide' index='0'/>
<interface type='bridge'>
<mac address='00:0c:29:3b:64:ea' type='generated'/>
- <source bridge=''/>
+ <source bridge='VMnet0'/>
</interface>
<interface type='bridge'>
<mac address='00:0c:29:3b:64:f4' type='generated'/>
- <source bridge=''/>
+ <source bridge='VMnet0'/>
</interface>
<video>
<model type='vmvga' vram='4096' primary='yes'/>
diff --git a/tests/vmx2xmldata/vmx2xml-ws-in-the-wild-2.vmx b/tests/vmx2xmldata/vmx2xml-ws-in-the-wild-2.vmx
index 6e078d4d92..172aa686ed 100644
--- a/tests/vmx2xmldata/vmx2xml-ws-in-the-wild-2.vmx
+++ b/tests/vmx2xmldata/vmx2xml-ws-in-the-wild-2.vmx
@@ -18,6 +18,7 @@ floppy0.startConnected = "FALSE"
floppy0.fileName = ""
floppy0.autodetect = "TRUE"
ethernet0.present = "TRUE"
+ethernet0.networkName = "VMnet0"
ethernet0.connectionType = "bridged"
ethernet0.virtualDev = "e1000"
ethernet0.wakeOnPcktRcv = "FALSE"
diff --git a/tests/vmx2xmldata/vmx2xml-ws-in-the-wild-2.xml b/tests/vmx2xmldata/vmx2xml-ws-in-the-wild-2.xml
index 628dfbaff0..6f8f30393c 100644
--- a/tests/vmx2xmldata/vmx2xml-ws-in-the-wild-2.xml
+++ b/tests/vmx2xmldata/vmx2xml-ws-in-the-wild-2.xml
@@ -26,7 +26,7 @@
<controller type='ide' index='0'/>
<interface type='bridge'>
<mac address='00:50:56:2f:d3:46' type='static'/>
- <source bridge=''/>
+ <source bridge='VMnet0'/>
<model type='e1000'/>
</interface>
<video>
diff --git a/tests/xml2vmxdata/xml2vmx-fusion-in-the-wild-1.vmx b/tests/xml2vmxdata/xml2vmx-fusion-in-the-wild-1.vmx
index 9605e2d6ac..2a81cc0137 100644
--- a/tests/xml2vmxdata/xml2vmx-fusion-in-the-wild-1.vmx
+++ b/tests/xml2vmxdata/xml2vmx-fusion-in-the-wild-1.vmx
@@ -18,11 +18,13 @@ ide0:0.fileName = "auto detect"
floppy0.present = "false"
floppy1.present = "false"
ethernet0.present = "true"
+ethernet0.networkName = "VMnet0"
ethernet0.connectionType = "bridged"
ethernet0.addressType = "generated"
ethernet0.generatedAddress = "00:0c:29:3b:64:ea"
ethernet0.generatedAddressOffset = "0"
ethernet1.present = "true"
+ethernet1.networkName = "VMnet0"
ethernet1.connectionType = "bridged"
ethernet1.addressType = "generated"
ethernet1.generatedAddress = "00:0c:29:3b:64:f4"
diff --git a/tests/xml2vmxdata/xml2vmx-fusion-in-the-wild-1.xml b/tests/xml2vmxdata/xml2vmx-fusion-in-the-wild-1.xml
index 0bfc7e88af..3052abd740 100644
--- a/tests/xml2vmxdata/xml2vmx-fusion-in-the-wild-1.xml
+++ b/tests/xml2vmxdata/xml2vmx-fusion-in-the-wild-1.xml
@@ -27,11 +27,11 @@
<controller type='ide' index='0'/>
<interface type='bridge'>
<mac address='00:0c:29:3b:64:ea'/>
- <source bridge=''/>
+ <source bridge='VMnet0'/>
</interface>
<interface type='bridge'>
<mac address='00:0c:29:3b:64:f4'/>
- <source bridge=''/>
+ <source bridge='VMnet0'/>
</interface>
<video>
<model type='vmvga' vram='4096'/>
diff --git a/tests/xml2vmxdata/xml2vmx-ws-in-the-wild-2.vmx b/tests/xml2vmxdata/xml2vmx-ws-in-the-wild-2.vmx
index f7f40ec300..eba18eb320 100644
--- a/tests/xml2vmxdata/xml2vmx-ws-in-the-wild-2.vmx
+++ b/tests/xml2vmxdata/xml2vmx-ws-in-the-wild-2.vmx
@@ -15,6 +15,7 @@ floppy0.present = "false"
floppy1.present = "false"
ethernet0.present = "true"
ethernet0.virtualDev = "e1000"
+ethernet0.networkName = "VMnet0"
ethernet0.connectionType = "bridged"
ethernet0.addressType = "static"
ethernet0.address = "00:90:b9:dc:ea:81"
diff --git a/tests/xml2vmxdata/xml2vmx-ws-in-the-wild-2.xml b/tests/xml2vmxdata/xml2vmx-ws-in-the-wild-2.xml
index 30fb76c818..2bf8699149 100644
--- a/tests/xml2vmxdata/xml2vmx-ws-in-the-wild-2.xml
+++ b/tests/xml2vmxdata/xml2vmx-ws-in-the-wild-2.xml
@@ -20,7 +20,7 @@
<controller type='scsi' index='0' model='lsilogic'/>
<interface type='bridge'>
<mac address='00:90:b9:dc:ea:81'/>
- <source bridge=''/>
+ <source bridge='VMnet0'/>
<model type='e1000'/>
</interface>
<video>
--
2.30.2
3 years, 7 months
Gsoc2021
by Aaryan Singh
Hello,
This is Aaryan, a 2nd-year undergraduate student at Kalinga institute of
industrial technology.
I have a keen interest in the " test driver API coverage " project. since I
have worked in cloud computing and DevOps that's why I am this interested
in this project and would love to share my idea and develop it.
Thank you
3 years, 7 months
Release of libvirt-7.2.0
by Jiri Denemark
The 7.2.0 release of both libvirt and libvirt-python is tagged and
signed tarballs and source RPMs are available at
https://libvirt.org/sources/
https://libvirt.org/sources/python/
Thanks everybody who helped with this release by sending patches,
reviewing, testing, or providing any other feedback. Your work is
greatly appreciated.
* New features
* qemu: Implement domain memory dirty rate calculation API
New API ``virDomainStartDirtyRateCalc()`` and virsh command
``domdirtyrate-calc`` are added to start calculating a live domain's
memory dirty rate.
* qemu: Support reporting memory dirty rate stats
The memory dirty rate stats can be obtained through ``virsh domstats
--dirtyrate`` via the virConnectGetAllDomainStats API.
* qemu: Full disk backups via ``virDomainBackupBegin``
The qemu hypervisor driver now allows taking full disk backups via the
``virDomainBackupBegin`` API and the corresponding virsh wrapper.
In future releases the feature will be extended to also support incremental
backups (where only the difference since the last backup is copied) when
qemu adds the required functionality.
* Add support for audio backend specific settings
With this release a new ``<audio/>`` element is introduced that allows
users to configure audio output for their guests.
* Improvements
* qemu: Compatibility with QEMU 6.0 for certain hot-(un)-plug operations
Libvirt 7.2.0 is required for compatibility with the upcoming QEMU 6.0
release for hotplug and hotunplug of certain devices and helpers, such as
iothreads, chardevs, RNG devices, disks with secret, ...
* qemu: Various improvements to embedded mode
Embedded mode for the QEMU driver, as well as the ``virt-qemu-run`` tool
saw improvements in handling of domain life cycle, temporary directories
creation (important when using disk secrets) and other minor fixes.
* Documentation of split daemon related config files
Split daemons read configuration files upon their start. These were never
documented though.
* Bug fixes
* Check host CPU for forbidden features
CPU feature policy did not work as expected with ``host-passthrough`` and
features supported by physical host. CPU features were not filtered out
when ``@check`` was set to ``full``.
* Fix virNetworkUpdate() to work with split daemons
Due to a bug in our code, virNetworkUpdate() did not work with split daemon
unless management application connected to virtnetworkd directly.
* qemu: increase locked memory limit when a vDPA device is present
Just like VFIO devices, vDPA devices may need to have all guest memory
pages locked/pinned in order to operate properly. These devices are now
included when calculating the limit for memory lock.
* Don't log error if SRIOV PF has no associated netdev
Some SRIOV PFs don't have a netdev associated with them in which case
libvirtd reported an error and refused to start. This is now fixed.
* qemu: Only raise memlock limit if necessary
Attempting to set the memlock limit might fail if we're running
in a containerized environment where ``CAP_SYS_RESOURCE`` is not
available, and if the limit is already high enough there's no
point in trying to raise it anyway.
* Restore security context of swtpm.log
If a guest with emulated TPM was started and the daemon was restarted
afterwards, the security context of the per-domain ``swtpm.log`` file was
not restored on domain shutdown leaving it unable to be started again.
* virtlogd|virtlockd: Fixed crash when upgrading the daemons in-place
A bug preventing the in-place upgrade of ``virtlogd`` and ``virtlockd``
daemons was fixed, so they can again be upgraded without dropping the log
file descriptors or locks on files.
Enjoy.
Jirka
3 years, 7 months