Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

libvirt is denied access to swtpm #5944

Open
jelly opened this issue Feb 21, 2024 · 2 comments
Open

libvirt is denied access to swtpm #5944

jelly opened this issue Feb 21, 2024 · 2 comments

Comments

@jelly
Copy link
Member

jelly commented Feb 21, 2024

Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2265346

@cockpituous
Copy link
Contributor

cockpituous commented Feb 21, 2024

fedora-40
Ooops, it happened again

martinpitt added a commit to martinpitt/bots that referenced this issue May 7, 2024
These are about the emulated TPM chip, not some temporary thingy.
martinpitt added a commit to martinpitt/bots that referenced this issue May 7, 2024
cockpit-project/cockpit-machines#1619 introduces
a new test which is also broken by this SELinux TPM denial.
allisonkarlitskaya pushed a commit that referenced this issue May 8, 2024
These are about the emulated TPM chip, not some temporary thingy.
allisonkarlitskaya pushed a commit that referenced this issue May 8, 2024
cockpit-project/cockpit-machines#1619 introduces
a new test which is also broken by this SELinux TPM denial.
@cockpituous
Copy link
Contributor

cockpituous commented May 22, 2024

centos-10
Ooops, it happened again


# ----------------------------------------------------------------------
# testConfigureBeforeInstall (__main__.TestMachinesCreate.testConfigureBeforeInstall)
......+...+...+....+...+........+.+.....+......+...+.+...+.....+...+...+.+...+++++++++++++++++++++++++++++++++++++++++++++*.+.+.........+..+.........+.+...+.....+++++++++++++++++++++++++++++++++++++++++++++*...+.....+...................+............+......+...+..+.......+..+.........+.+..............+.+...........+.......+...............+.....................+......+......+.........+..............+..........+.....+...............+.......+............+.....+...+++++
.......+.....+..........+.........+...+.....+.......+..+.+........+.......+..............+....+..+....+++++++++++++++++++++++++++++++++++++++++++++*......+..........+..+...+............+...+............+...+.......+..+.+++++++++++++++++++++++++++++++++++++++++++++*...+..+..........+...+..+.......+......+...........+....+..+.........+...+...+.............+.....+.......+.....+.............+............+..+...+..................+..........+............+..+...+.......+..+.+...+...........+..................+...+...+.+.......................+......+.+.....+................+.....+.........+.........+....+...+..+.......+...+..+..........+......+..................+......+....................+......+....+...........+...+.....................+..........+...+........+..........+..+............+...+............+.+.....+....+.....+....+.........+..+.............+......+.....+.......+.....+....+........+.......+......+...............+..+.............+........+.......+.................+..........+.................+................+..+......+.+...+..+.............+..+.+.....+.......+...+.....+....+...+...........+.........+.............+.........+.....+....+.........+...........+.+....................+......+....+........+...+....+........+.+..+...+....+...+...+......+........+..................+..........+...+...............+..+...............+.......+...+..+.......+...+...+...+......+........+.......+...+...........+.+.....+..................+.......+...+.....+...+.......+...+.....+....+........+..................+...+......+..............................+......+.........+...+...+.......+...........+.+...+.................+.+++++
-----
[0522/131553.167568:WARNING:sandbox_linux.cc(420)] InitializeSandbox() called with multiple threads in process gpu-process.

DevTools listening on ws://127.0.0.1:10130/devtools/browser/ab0ad681-9a7d-464c-9a51-3a7ffbedc6e3
[0522/131553.188098:WARNING:runtime_features.cc(730)] AttributionReportingCrossAppWeb cannot be enabled in this configuration. Use --enable-features=ConversionMeasurement,AttributionReportingCrossAppWeb in addition.
[0522/131553.900077:WARNING:runtime_features.cc(730)] AttributionReportingCrossAppWeb cannot be enabled in this configuration. Use --enable-features=ConversionMeasurement,AttributionReportingCrossAppWeb in addition.
CDP: {"source":"network","level":"error","text":"Failed to load resource: the server responded with a status of 404 (ERROR)","timestamp":1716383757199.948,"url":"http://127.0.0.2:9691/cockpit/@localhost/*/po.manifest.js","networkRequestId":"2047.19"}
CDP: {"source":"network","level":"error","text":"Failed to load resource: the server responded with a status of 404 (ERROR)","timestamp":1716383757204.521,"url":"http://127.0.0.2:9691/cockpit/@localhost/*/po.js","networkRequestId":"2047.20"}
CDP: {"source":"security","level":"error","text":"Refused to execute script from 'http://127.0.0.2:9691/cockpit/@localhost/*/po.manifest.js' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.","timestamp":1716383757243.446,"url":"http://127.0.0.2:9691/machines"}
CDP: {"source":"security","level":"error","text":"Refused to execute script from 'http://127.0.0.2:9691/cockpit/@localhost/*/po.js' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.","timestamp":1716383757243.574,"url":"http://127.0.0.2:9691/machines"}
> error: Scrollbar test exception: TypeError: Cannot read properties of null (reading 'appendChild')
> warning: failed to poll tuned {"problem":"disconnected","name":"null","message":"Server has closed the connection.","toString":""}
> warning: failed to poll tuned {"problem":"disconnected","name":"null","message":"Server has closed the connection.","toString":""}
> log: osinfo-detect command failed:  (process:5774): GLib-GIO-WARNING **: 09:16:06.405: Can't find module 'gvfs' specified in GIO_USE_VFS
Traceback (most recent call last):
  File "<string>", line 22, in <module>
gi.repository.GLib.GError: osinfo-media-error: No volume descriptors (0)
error: failed to get domain 'VmNotInstalled'
CDP: {"source":"network","level":"error","text":"Failed to load resource: the server responded with a status of 404 (ERROR)","timestamp":1716383775258.431,"url":"http://127.0.0.2:9691/cockpit/@localhost/*/po.manifest.js","networkRequestId":"2047.170"}
CDP: {"source":"network","level":"error","text":"Failed to load resource: the server responded with a status of 404 (ERROR)","timestamp":1716383775280.716,"url":"http://127.0.0.2:9691/cockpit/@localhost/*/po.js","networkRequestId":"2047.171"}
CDP: {"source":"security","level":"error","text":"Refused to execute script from 'http://127.0.0.2:9691/cockpit/@localhost/*/po.manifest.js' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.","timestamp":1716383775283.116,"url":"http://127.0.0.2:9691/machines#/vm?name=VmNotInstalled&connection=system"}
CDP: {"source":"security","level":"error","text":"Refused to execute script from 'http://127.0.0.2:9691/cockpit/@localhost/*/po.js' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.","timestamp":1716383775283.226,"url":"http://127.0.0.2:9691/machines#/vm?name=VmNotInstalled&connection=system"}
> error: Scrollbar test exception: TypeError: Cannot read properties of null (reading 'appendChild')
> warning: failed to poll tuned {"problem":"disconnected","name":"null","message":"Server has closed the connection.","toString":""}
> warning: failed to poll tuned {"problem":"disconnected","name":"null","message":"Server has closed the connection.","toString":""}
> error: {"problem":null,"exit_status":1,"exit_signal":null,"message":"ERROR    internal error: Could not get process id of swtpm\nDomain installation does not appear to have been successful.\nIf it was, you can restart your domain by running:\n  virsh --connect qemu:///system start VmNotInstalled\notherwise, please restart your installation.\nCommand '['virt-install', '--connect', 'qemu:///system', '--quiet', '--os-variant', 'fedora28', '--reinstall', 'VmNotInstalled', '--wait', '-1', '--noautoconsole', '--cdrom', '/var/lib/libvirt/novell.iso']' returned non-zero exit status 1.\nTraceback (most recent call last):\n  File \"<string>\", line 285, in install_vm\n  File \"/usr/lib64/python3.12/subprocess.py\", line 466, in check_output\n    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/lib64/python3.12/subprocess.py\", line 571, in run\n    raise CalledProcessError(retcode, process.args,\nsubprocess.CalledProcessError: Command '['virt-install', '--connect', 'qemu:///system', '--quiet', '--os-variant', 'fedora28', '--reinstall', 'VmNotInstalled', '--wait', '-1', '--noautoconsole', '--cdrom', '/var/lib/libvirt/novell.iso']' returned non-zero exit status 1.\nTraceback (most recent call last):\n  File \"<string>\", line 363, in <module>\n  File \"<string>\", line 296, in install_vm\n  File \"<string>\", line 285, in install_vm\n  File \"/usr/lib64/python3.12/subprocess.py\", line 466, in check_output\n    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/lib64/python3.12/subprocess.py\", line 571, in run\n    raise CalledProcessError(retcode, process.args,\nsubprocess.CalledProcessError: Command '['virt-install', '--connect', 'qemu:///system', '--quiet', '--os-variant', 'fedora28', '--reinstall', 'VmNotInstalled', '--wait', '-1', '--noautoconsole', '--cdrom', '/var/lib/libvirt/novell.iso']' returned non-zero exit status 1."}
Wrote VmNotInstalled XML to TestMachinesCreate-testConfigureBeforeInstall-centos-10-127.0.0.2-2801-VmNotInstalled.xml
Wrote VmNotInstalled log to TestMachinesCreate-testConfigureBeforeInstall-centos-10-127.0.0.2-2801-VmNotInstalled.log
Traceback (most recent call last):
  File "/work/make-checkout-workdir/test/check-machines-create", line 2169, in testConfigureBeforeInstall
    testlib.wait(lambda: "VmNotInstalled" in m.execute("virsh list --persistent"), delay=3)
  File "/work/make-checkout-workdir/test/common/testlib.py", line 2629, in wait
    raise Error(msg or "Condition did not become true.")
testlib.Error: Condition did not become true.

Wrote screenshot to TestMachinesCreate-testConfigureBeforeInstall-centos-10-127.0.0.2-2801-FAIL.png
Wrote HTML dump to TestMachinesCreate-testConfigureBeforeInstall-centos-10-127.0.0.2-2801-FAIL.html
Wrote JS log to TestMachinesCreate-testConfigureBeforeInstall-centos-10-127.0.0.2-2801-FAIL.js.log
Journal extracted to TestMachinesCreate-testConfigureBeforeInstall-centos-10-127.0.0.2-2801-FAIL.log.gz
> warning: transport closed: disconnected
Stopping 'virtstoraged.service', but its triggering units are still active:
virtstoraged-ro.socket, virtstoraged-admin.socket, virtstoraged.socket
Stopping 'virtnetworkd.service', but its triggering units are still active:
virtnetworkd.socket, virtnetworkd-admin.socket, virtnetworkd-ro.socket
Stopping 'virtqemud.service', but its triggering units are still active:
virtqemud-admin.socket, virtqemud-ro.socket, virtqemud.socket
Traceback (most recent call last):
  File "/work/make-checkout-workdir/test/check-machines-create", line 2169, in testConfigureBeforeInstall
    testlib.wait(lambda: "VmNotInstalled" in m.execute("virsh list --persistent"), delay=3)
  File "/work/make-checkout-workdir/test/common/testlib.py", line 2629, in wait
    raise Error(msg or "Condition did not become true.")
testlib.Error: Condition did not become true.

# Result testConfigureBeforeInstall (__main__.TestMachinesCreate.testConfigureBeforeInstall) failed
# 1 TEST FAILED [249s on 74137372db0e]
not ok 63 /work/make-checkout-workdir/test/check-machines-create TestMachinesCreate.testConfigureBeforeInstall [ND@5]

First occurrence: 2024-05-22T13:19:33.335295+00:00 | revision 2aad330c22660caa53287053fcbed35b633344c8
Times recorded: 1
Latest occurrences:

  • 2024-05-22T13:19:33.335295+00:00 | revision 2aad330c22660caa53287053fcbed35b633344c8

# ----------------------------------------------------------------------
# testConfigureBeforeInstallBiosTPM (__main__.TestMachinesCreate.testConfigureBeforeInstallBiosTPM)
..+......+....+..+++++++++++++++++++++++++++++++++++++++++++++*........+.....+.............+........+.......+...+.....+......+++++++++++++++++++++++++++++++++++++++++++++*..................+...+.....................+.+.....+....+...........+......+....+...........+.......+......+.....+......+.+..+.+......+...+........+.......+.....+.............+...............+..+.+.....+............+.........+......+.......+........+.........+......+....+........+......+.+........+............+...+.+..+...+....+..+..........+..............+.......+.........+.........+..+...+.......+...+...........+.+..............+....+...........................+........+....+...+.....+....+.....+...+..........+...+...+...........+.........+......+................+..+......+.+..................+..+.+.....+...............+...+.+.........+.....+.+........+.............+...+..+...+....+...+..+...+.............+..+...+....+..+......+.........+....+.....+.+...+......+.....+.......+..+.+......+........+...............+...+.........+....+..+.......+...+..+..................+.............+..+....+...+...+...+.................+.........+.........+..........+..+..........+...+..+.......+..+.........+.........+...+..........+........+............+.......+........+.......+...+...+.....+......+...................+..+.......+......+.....+....+..+..........+.....+.+...+............................................+............+...+.............+..+.......+.....+...................+......+...+...........+......+....+.........+..+...+...+.........+....+..+.......+...+...+..+...+.+.........+...........+........................+............+............+...+...................+...........+...+....+...+.........+.........+...........+...+.......+.....+......+.........+...+..........+..+...+......+.+......+..................+...............+.....+....+..+.+........+.......+..............+....+.............................................+....................+....+............+.....+......+...+....+...+....................+...+..........+..+...+....+......+.....+.....................+.+..+...+....+....................+..........+...+......+..+...+.+......+..+.+.....+.+.....+..................+............+...............+....+.........+......+..+.......+.....+......+.........+.......+......+...+..............+......+....+.....+..........+..+.+............+...+..+.......+...+.....+.+..+............+...+...+......+..........+...........+...+......+...............+...............+....+.........+......+..............+...+.......+.....+.+......+...............+...+...........+....+.......................+............+..........+.....................+.....+.+......+..+...+++++
.........+....+..+++++++++++++++++++++++++++++++++++++++++++++*..+...+.+++++++++++++++++++++++++++++++++++++++++++++*........+...............+.....+.......+.....+...+.+......+......+...............+.....+...+......+...............+.+..+...+............+......+.+...+...+...+.....+.+........+......+......+.+.....+.......+........+.........+.+...+.....................+.........+.........+...+..+.+..........................+.+............+............+...+...+.................+...+.............+......+......+.....+...+.....................+.+.........+........+................+.....+....+...............+........+...+.+..............+....+............+......+........+.......+....................+...+..........+......+........+.+..............+.......+.....+.........+..........+.....+....+..+.........+....+..+..................+.......+...+.....+...+...+....+...+............+..................+.........+...........+....+.................................+............+..............+......+................+...+......+...+............+......+........+...................+..+...+.+....................+.......+...............+...+.....+.+..........................+...+.......+...........................+.....+..........+..+.+...+.....+.+...........+.........+.+.........+.....+.+...+.................+....+.....+...+.+......+........+...............+.............+..+...............+.......+...+...+............+..+....+......+...+.....................+...........+...+.+.....+.........+...+.......+.......................+...+....+..+.+.........+.....+...+......+..........+......+...............+.........+...........................+........+.......+..+............+..........+.........+.........+...........+.+......+..+......+....+...+........+....+++++
-----
[0522/143209.599975:WARNING:sandbox_linux.cc(420)] InitializeSandbox() called with multiple threads in process gpu-process.
[0522/143209.623006:WARNING:runtime_features.cc(730)] AttributionReportingCrossAppWeb cannot be enabled in this configuration. Use --enable-features=ConversionMeasurement,AttributionReportingCrossAppWeb in addition.

DevTools listening on ws://127.0.0.1:9903/devtools/browser/bd272424-2930-4113-8f7d-73efac3e9f40
[0522/143210.309410:WARNING:runtime_features.cc(730)] AttributionReportingCrossAppWeb cannot be enabled in this configuration. Use --enable-features=ConversionMeasurement,AttributionReportingCrossAppWeb in addition.
CDP: {"source":"network","level":"error","text":"Failed to load resource: the server responded with a status of 404 (ERROR)","timestamp":1716388332948.752,"url":"http://127.0.0.2:9891/cockpit/@localhost/*/po.js","networkRequestId":"2309.20"}
CDP: {"source":"network","level":"error","text":"Failed to load resource: the server responded with a status of 404 (ERROR)","timestamp":1716388333040.992,"url":"http://127.0.0.2:9891/cockpit/@localhost/*/po.manifest.js","networkRequestId":"2309.19"}
CDP: {"source":"security","level":"error","text":"Refused to execute script from 'http://127.0.0.2:9891/cockpit/@localhost/*/po.manifest.js' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.","timestamp":1716388333103.267,"url":"http://127.0.0.2:9891/machines"}
CDP: {"source":"security","level":"error","text":"Refused to execute script from 'http://127.0.0.2:9891/cockpit/@localhost/*/po.js' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.","timestamp":1716388333103.384,"url":"http://127.0.0.2:9891/machines"}
> error: Scrollbar test exception: TypeError: Cannot read properties of null (reading 'appendChild')
> warning: failed to poll tuned {"problem":"disconnected","name":"null","message":"Server has closed the connection.","toString":""}
> warning: failed to poll tuned {"problem":"disconnected","name":"null","message":"Server has closed the connection.","toString":""}
> log: osinfo-detect command failed:  (process:5761): GLib-GIO-WARNING **: 10:32:23.615: Can't find module 'gvfs' specified in GIO_USE_VFS
Traceback (most recent call last):
  File "<string>", line 22, in <module>
gi.repository.GLib.GError: osinfo-media-error: No volume descriptors (0)
CDP: {"source":"network","level":"error","text":"Failed to load resource: the server responded with a status of 404 (ERROR)","timestamp":1716388348749.485,"url":"http://127.0.0.2:9891/cockpit/@localhost/*/po.js","networkRequestId":"2309.171"}
CDP: {"source":"network","level":"error","text":"Failed to load resource: the server responded with a status of 404 (ERROR)","timestamp":1716388348779.432,"url":"http://127.0.0.2:9891/cockpit/@localhost/*/po.manifest.js","networkRequestId":"2309.170"}
CDP: {"source":"security","level":"error","text":"Refused to execute script from 'http://127.0.0.2:9891/cockpit/@localhost/*/po.manifest.js' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.","timestamp":1716388348807.208,"url":"http://127.0.0.2:9891/machines#/vm?name=subVmTest1&connection=system"}
CDP: {"source":"security","level":"error","text":"Refused to execute script from 'http://127.0.0.2:9891/cockpit/@localhost/*/po.js' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.","timestamp":1716388348807.322,"url":"http://127.0.0.2:9891/machines#/vm?name=subVmTest1&connection=system"}
> error: Scrollbar test exception: TypeError: Cannot read properties of null (reading 'appendChild')
> warning: failed to poll tuned {"problem":"disconnected","name":"null","message":"Server has closed the connection.","toString":""}
> warning: failed to poll tuned {"problem":"disconnected","name":"null","message":"Server has closed the connection.","toString":""}
> error: {"problem":null,"exit_status":1,"exit_signal":null,"message":"ERROR    internal error: Could not get process id of swtpm\nDomain installation does not appear to have been successful.\nIf it was, you can restart your domain by running:\n  virsh --connect qemu:///system start subVmTest1\notherwise, please restart your installation.\nCommand '['virt-install', '--connect', 'qemu:///system', '--quiet', '--os-variant', 'fedora28', '--reinstall', 'subVmTest1', '--wait', '-1', '--noautoconsole', '--cdrom', '/var/lib/libvirt/novell.iso']' returned non-zero exit status 1.\nTraceback (most recent call last):\n  File \"<string>\", line 285, in install_vm\n  File \"/usr/lib64/python3.12/subprocess.py\", line 466, in check_output\n    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/lib64/python3.12/subprocess.py\", line 571, in run\n    raise CalledProcessError(retcode, process.args,\nsubprocess.CalledProcessError: Command '['virt-install', '--connect', 'qemu:///system', '--quiet', '--os-variant', 'fedora28', '--reinstall', 'subVmTest1', '--wait', '-1', '--noautoconsole', '--cdrom', '/var/lib/libvirt/novell.iso']' returned non-zero exit status 1.\nTraceback (most recent call last):\n  File \"<string>\", line 363, in <module>\n  File \"<string>\", line 296, in install_vm\n  File \"<string>\", line 285, in install_vm\n  File \"/usr/lib64/python3.12/subprocess.py\", line 466, in check_output\n    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/lib64/python3.12/subprocess.py\", line 571, in run\n    raise CalledProcessError(retcode, process.args,\nsubprocess.CalledProcessError: Command '['virt-install', '--connect', 'qemu:///system', '--quiet', '--os-variant', 'fedora28', '--reinstall', 'subVmTest1', '--wait', '-1', '--noautoconsole', '--cdrom', '/var/lib/libvirt/novell.iso']' returned non-zero exit status 1."}
Wrote subVmTest1 XML to TestMachinesCreate-testConfigureBeforeInstallBiosTPM-centos-10-127.0.0.2-3001-subVmTest1.xml
Wrote subVmTest1 log to TestMachinesCreate-testConfigureBeforeInstallBiosTPM-centos-10-127.0.0.2-3001-subVmTest1.log
Traceback (most recent call last):
  File "/work/make-checkout-workdir/test/check-machines-create", line 2295, in testConfigureBeforeInstallBiosTPM
    b.wait_in_text(f"#vm-{vmName}-system-state", "Running")
  File "/work/make-checkout-workdir/test/common/testlib.py", line 704, in wait_in_text
    self.wait_js_cond("ph_in_text(%s,%s)" % (jsquote(selector), jsquote(text)),
  File "/work/make-checkout-workdir/test/common/testlib.py", line 642, in wait_js_cond
    self.raise_cdp_exception("timeout\nwait_js_cond", cond, result["exceptionDetails"], trailer)
  File "/work/make-checkout-workdir/test/common/testlib.py", line 332, in raise_cdp_exception
    raise Error("%s(%s): %s" % (func, arg, msg))
testlib.Error: timeout
wait_js_cond(ph_in_text("#vm-subVmTest1-system-state","Running")): Uncaught (in promise) Error: actual text: Shut off
cdp: {'source': 'network', 'level': 'error', 'text': 'Failed to load resource: the server responded with a status of 401 (Authentication failed)', 'timestamp': 1716388331762.938, 'url': 'http://127.0.0.2:9891/cockpit/login', 'networkRequestId': '2309.12'}
cdp: {'source': 'network', 'level': 'error', 'text': 'Failed to load resource: the server responded with a status of 404 (ERROR)', 'timestamp': 1716388332948.752, 'url': 'http://127.0.0.2:9891/cockpit/@localhost/*/po.js', 'networkRequestId': '2309.20'}
cdp: {'source': 'network', 'level': 'error', 'text': 'Failed to load resource: the server responded with a status of 404 (ERROR)', 'timestamp': 1716388333040.992, 'url': 'http://127.0.0.2:9891/cockpit/@localhost/*/po.manifest.js', 'networkRequestId': '2309.19'}
cdp: {'source': 'security', 'level': 'error', 'text': "Refused to execute script from 'http://127.0.0.2:9891/cockpit/@localhost/*/po.manifest.js' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.", 'timestamp': 1716388333103.267, 'url': 'http://127.0.0.2:9891/machines'}
cdp: {'source': 'security', 'level': 'error', 'text': "Refused to execute script from 'http://127.0.0.2:9891/cockpit/@localhost/*/po.js' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.", 'timestamp': 1716388333103.384, 'url': 'http://127.0.0.2:9891/machines'}
error: Scrollbar test exception: TypeError: Cannot read properties of null (reading 'appendChild')
warning: failed to poll tuned {"problem":"disconnected","name":"null","message":"Server has closed the connection.","toString":""}
warning: failed to poll tuned {"problem":"disconnected","name":"null","message":"Server has closed the connection.","toString":""}
log: osinfo-detect command failed:  (process:5761): GLib-GIO-WARNING **: 10:32:23.615: Can't find module 'gvfs' specified in GIO_USE_VFS
Traceback (most recent call last):
  File "<string>", line 22, in <module>
gi.repository.GLib.GError: osinfo-media-error: No volume descriptors (0)
cdp: {'source': 'network', 'level': 'error', 'text': 'Failed to load resource: the server responded with a status of 404 (ERROR)', 'timestamp': 1716388348749.485, 'url': 'http://127.0.0.2:9891/cockpit/@localhost/*/po.js', 'networkRequestId': '2309.171'}
cdp: {'source': 'network', 'level': 'error', 'text': 'Failed to load resource: the server responded with a status of 404 (ERROR)', 'timestamp': 1716388348779.432, 'url': 'http://127.0.0.2:9891/cockpit/@localhost/*/po.manifest.js', 'networkRequestId': '2309.170'}
cdp: {'source': 'security', 'level': 'error', 'text': "Refused to execute script from 'http://127.0.0.2:9891/cockpit/@localhost/*/po.manifest.js' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.", 'timestamp': 1716388348807.208, 'url': 'http://127.0.0.2:9891/machines#/vm?name=subVmTest1&connection=system'}
cdp: {'source': 'security', 'level': 'error', 'text': "Refused to execute script from 'http://127.0.0.2:9891/cockpit/@localhost/*/po.js' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.", 'timestamp': 1716388348807.322, 'url': 'http://127.0.0.2:9891/machines#/vm?name=subVmTest1&connection=system'}
error: Scrollbar test exception: TypeError: Cannot read properties of null (reading 'appendChild')
warning: failed to poll tuned {"problem":"disconnected","name":"null","message":"Server has closed the connection.","toString":""}
warning: failed to poll tuned {"problem":"disconnected","name":"null","message":"Server has closed the connection.","toString":""}
error: {"problem":null,"exit_status":1,"exit_signal":null,"message":"ERROR    internal error: Could not get process id of swtpm\nDomain installation does not appear to have been successful.\nIf it was, you can restart your domain by running:\n  virsh --connect qemu:///system start subVmTest1\notherwise, please restart your installation.\nCommand '['virt-install', '--connect', 'qemu:///system', '--quiet', '--os-variant', 'fedora28', '--reinstall', 'subVmTest1', '--wait', '-1', '--noautoconsole', '--cdrom', '/var/lib/libvirt/novell.iso']' returned non-zero exit status 1.\nTraceback (most recent call last):\n  File \"<string>\", line 285, in install_vm\n  File \"/usr/lib64/python3.12/subprocess.py\", line 466, in check_output\n    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/lib64/python3.12/subprocess.py\", line 571, in run\n    raise CalledProcessError(retcode, process.args,\nsubprocess.CalledProcessError: Command '['virt-install', '--connect', 'qemu:///system', '--quiet', '--os-variant', 'fedora28', '--reinstall', 'subVmTest1', '--wait', '-1', '--noautoconsole', '--cdrom', '/var/lib/libvirt/novell.iso']' returned non-zero exit status 1.\nTraceback (most recent call last):\n  File \"<string>\", line 363, in <module>\n  File \"<string>\", line 296, in install_vm\n  File \"<string>\", line 285, in install_vm\n  File \"/usr/lib64/python3.12/subprocess.py\", line 466, in check_output\n    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/lib64/python3.12/subprocess.py\", line 571, in run\n    raise CalledProcessError(retcode, process.args,\nsubprocess.CalledProcessError: Command '['virt-install', '--connect', 'qemu:///system', '--quiet', '--os-variant', 'fedora28', '--reinstall', 'subVmTest1', '--wait', '-1', '--noautoconsole', '--cdrom', '/var/lib/libvirt/novell.iso']' returned non-zero exit status 1."}

Wrote screenshot to TestMachinesCreate-testConfigureBeforeInstallBiosTPM-centos-10-127.0.0.2-3001-FAIL.png
Wrote HTML dump to TestMachinesCreate-testConfigureBeforeInstallBiosTPM-centos-10-127.0.0.2-3001-FAIL.html
Wrote JS log to TestMachinesCreate-testConfigureBeforeInstallBiosTPM-centos-10-127.0.0.2-3001-FAIL.js.log
Journal extracted to TestMachinesCreate-testConfigureBeforeInstallBiosTPM-centos-10-127.0.0.2-3001-FAIL.log.gz
> warning: transport closed: disconnected
Stopping 'virtstoraged.service', but its triggering units are still active:
virtstoraged.socket, virtstoraged-ro.socket, virtstoraged-admin.socket
Stopping 'virtnetworkd.service', but its triggering units are still active:
virtnetworkd.socket, virtnetworkd-ro.socket, virtnetworkd-admin.socket
Stopping 'virtqemud.service', but its triggering units are still active:
virtqemud.socket, virtqemud-admin.socket, virtqemud-ro.socket
Traceback (most recent call last):
  File "/work/make-checkout-workdir/test/check-machines-create", line 2295, in testConfigureBeforeInstallBiosTPM
    b.wait_in_text(f"#vm-{vmName}-system-state", "Running")
  File "/work/make-checkout-workdir/test/common/testlib.py", line 704, in wait_in_text
    self.wait_js_cond("ph_in_text(%s,%s)" % (jsquote(selector), jsquote(text)),
  File "/work/make-checkout-workdir/test/common/testlib.py", line 642, in wait_js_cond
    self.raise_cdp_exception("timeout\nwait_js_cond", cond, result["exceptionDetails"], trailer)
  File "/work/make-checkout-workdir/test/common/testlib.py", line 332, in raise_cdp_exception
    raise Error("%s(%s): %s" % (func, arg, msg))
testlib.Error: timeout
wait_js_cond(ph_in_text("#vm-subVmTest1-system-state","Running")): Uncaught (in promise) Error: actual text: Shut off
cdp: {'source': 'network', 'level': 'error', 'text': 'Failed to load resource: the server responded with a status of 401 (Authentication failed)', 'timestamp': 1716388331762.938, 'url': 'http://127.0.0.2:9891/cockpit/login', 'networkRequestId': '2309.12'}
cdp: {'source': 'network', 'level': 'error', 'text': 'Failed to load resource: the server responded with a status of 404 (ERROR)', 'timestamp': 1716388332948.752, 'url': 'http://127.0.0.2:9891/cockpit/@localhost/*/po.js', 'networkRequestId': '2309.20'}
cdp: {'source': 'network', 'level': 'error', 'text': 'Failed to load resource: the server responded with a status of 404 (ERROR)', 'timestamp': 1716388333040.992, 'url': 'http://127.0.0.2:9891/cockpit/@localhost/*/po.manifest.js', 'networkRequestId': '2309.19'}
cdp: {'source': 'security', 'level': 'error', 'text': "Refused to execute script from 'http://127.0.0.2:9891/cockpit/@localhost/*/po.manifest.js' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.", 'timestamp': 1716388333103.267, 'url': 'http://127.0.0.2:9891/machines'}
cdp: {'source': 'security', 'level': 'error', 'text': "Refused to execute script from 'http://127.0.0.2:9891/cockpit/@localhost/*/po.js' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.", 'timestamp': 1716388333103.384, 'url': 'http://127.0.0.2:9891/machines'}
error: Scrollbar test exception: TypeError: Cannot read properties of null (reading 'appendChild')
warning: failed to poll tuned {"problem":"disconnected","name":"null","message":"Server has closed the connection.","toString":""}
warning: failed to poll tuned {"problem":"disconnected","name":"null","message":"Server has closed the connection.","toString":""}
log: osinfo-detect command failed:  (process:5761): GLib-GIO-WARNING **: 10:32:23.615: Can't find module 'gvfs' specified in GIO_USE_VFS
Traceback (most recent call last):
  File "<string>", line 22, in <module>
gi.repository.GLib.GError: osinfo-media-error: No volume descriptors (0)
cdp: {'source': 'network', 'level': 'error', 'text': 'Failed to load resource: the server responded with a status of 404 (ERROR)', 'timestamp': 1716388348749.485, 'url': 'http://127.0.0.2:9891/cockpit/@localhost/*/po.js', 'networkRequestId': '2309.171'}
cdp: {'source': 'network', 'level': 'error', 'text': 'Failed to load resource: the server responded with a status of 404 (ERROR)', 'timestamp': 1716388348779.432, 'url': 'http://127.0.0.2:9891/cockpit/@localhost/*/po.manifest.js', 'networkRequestId': '2309.170'}
cdp: {'source': 'security', 'level': 'error', 'text': "Refused to execute script from 'http://127.0.0.2:9891/cockpit/@localhost/*/po.manifest.js' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.", 'timestamp': 1716388348807.208, 'url': 'http://127.0.0.2:9891/machines#/vm?name=subVmTest1&connection=system'}
cdp: {'source': 'security', 'level': 'error', 'text': "Refused to execute script from 'http://127.0.0.2:9891/cockpit/@localhost/*/po.js' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.", 'timestamp': 1716388348807.322, 'url': 'http://127.0.0.2:9891/machines#/vm?name=subVmTest1&connection=system'}
error: Scrollbar test exception: TypeError: Cannot read properties of null (reading 'appendChild')
warning: failed to poll tuned {"problem":"disconnected","name":"null","message":"Server has closed the connection.","toString":""}
warning: failed to poll tuned {"problem":"disconnected","name":"null","message":"Server has closed the connection.","toString":""}
error: {"problem":null,"exit_status":1,"exit_signal":null,"message":"ERROR    internal error: Could not get process id of swtpm\nDomain installation does not appear to have been successful.\nIf it was, you can restart your domain by running:\n  virsh --connect qemu:///system start subVmTest1\notherwise, please restart your installation.\nCommand '['virt-install', '--connect', 'qemu:///system', '--quiet', '--os-variant', 'fedora28', '--reinstall', 'subVmTest1', '--wait', '-1', '--noautoconsole', '--cdrom', '/var/lib/libvirt/novell.iso']' returned non-zero exit status 1.\nTraceback (most recent call last):\n  File \"<string>\", line 285, in install_vm\n  File \"/usr/lib64/python3.12/subprocess.py\", line 466, in check_output\n    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/lib64/python3.12/subprocess.py\", line 571, in run\n    raise CalledProcessError(retcode, process.args,\nsubprocess.CalledProcessError: Command '['virt-install', '--connect', 'qemu:///system', '--quiet', '--os-variant', 'fedora28', '--reinstall', 'subVmTest1', '--wait', '-1', '--noautoconsole', '--cdrom', '/var/lib/libvirt/novell.iso']' returned non-zero exit status 1.\nTraceback (most recent call last):\n  File \"<string>\", line 363, in <module>\n  File \"<string>\", line 296, in install_vm\n  File \"<string>\", line 285, in install_vm\n  File \"/usr/lib64/python3.12/subprocess.py\", line 466, in check_output\n    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/lib64/python3.12/subprocess.py\", line 571, in run\n    raise CalledProcessError(retcode, process.args,\nsubprocess.CalledProcessError: Command '['virt-install', '--connect', 'qemu:///system', '--quiet', '--os-variant', 'fedora28', '--reinstall', 'subVmTest1', '--wait', '-1', '--noautoconsole', '--cdrom', '/var/lib/libvirt/novell.iso']' returned non-zero exit status 1."}

# Result testConfigureBeforeInstallBiosTPM (__main__.TestMachinesCreate.testConfigureBeforeInstallBiosTPM) failed
# 1 TEST FAILED [78s on 2988a08c7135]
not ok 65 /work/make-checkout-workdir/test/check-machines-create TestMachinesCreate.testConfigureBeforeInstallBiosTPM [ND@7]

First occurrence: 2024-05-22T14:32:56.935829+00:00 | revision 49763df1a545c33b7451260fa0a0714f6380625a
Times recorded: 1
Latest occurrences:

  • 2024-05-22T14:32:56.935829+00:00 | revision 49763df1a545c33b7451260fa0a0714f6380625a

# ----------------------------------------------------------------------
# testConfigureBeforeInstall (__main__.TestMachinesCreate.testConfigureBeforeInstall)
..+...+.+...+......+..+.........+.+..+..........+.....+.......+........+.......+......+........+.+.....+....+..+..................+...............+++++++++++++++++++++++++++++++++++++++++++++*...+.+...........+.+...+.....+......+.+........+.+.....+.+...+.....+....+......+.........+..+......+....+...........+.......+...+...+.....+...............+....+..+.+.....+...+....+..+......+...+....+...+..+.......+.....+...+...+...+.+.........+..+..........+...+.....+......+...+++++++++++++++++++++++++++++++++++++++++++++*..+.....+..................+.+...........+.+........+..........+......+........+............+.............+...+...+......+.....+..........+...+......+..............+.+...........+....+......+.....+.+........+..........+...........+....+.........+.....+..........+.....+..........+..................+..+...+..........+.........+.........+..+............+.+.........+..................+...+..............+.............+...+..+...................+...+...+...+.........+...+.......................+.......+...+.........+...+........+.+......+............+...+..+......+.+.....................+............+...........+.........+...+....+.....+.+..............+...+...+...+...............+....+...+++++
.+.....+...................+.....+...+...+.+........+...+....+......+.................+.+++++++++++++++++++++++++++++++++++++++++++++*......+.+++++++++++++++++++++++++++++++++++++++++++++*.....+++++
-----
[0522/143206.944983:WARNING:sandbox_linux.cc(420)] InitializeSandbox() called with multiple threads in process gpu-process.

DevTools listening on ws://127.0.0.1:9688/devtools/browser/b22b85b8-ea17-47bb-960f-b40738be5a0f
[0522/143206.967269:WARNING:runtime_features.cc(730)] AttributionReportingCrossAppWeb cannot be enabled in this configuration. Use --enable-features=ConversionMeasurement,AttributionReportingCrossAppWeb in addition.
[0522/143207.620233:WARNING:runtime_features.cc(730)] AttributionReportingCrossAppWeb cannot be enabled in this configuration. Use --enable-features=ConversionMeasurement,AttributionReportingCrossAppWeb in addition.
CDP: {"source":"network","level":"error","text":"Failed to load resource: the server responded with a status of 404 (ERROR)","timestamp":1716388330733.63,"url":"http://127.0.0.2:9691/cockpit/@localhost/*/po.js","networkRequestId":"1878.20"}
CDP: {"source":"network","level":"error","text":"Failed to load resource: the server responded with a status of 404 (ERROR)","timestamp":1716388330745.364,"url":"http://127.0.0.2:9691/cockpit/@localhost/*/po.manifest.js","networkRequestId":"1878.19"}
CDP: {"source":"security","level":"error","text":"Refused to execute script from 'http://127.0.0.2:9691/cockpit/@localhost/*/po.manifest.js' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.","timestamp":1716388330787.046,"url":"http://127.0.0.2:9691/machines"}
CDP: {"source":"security","level":"error","text":"Refused to execute script from 'http://127.0.0.2:9691/cockpit/@localhost/*/po.js' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.","timestamp":1716388330787.202,"url":"http://127.0.0.2:9691/machines"}
> error: Scrollbar test exception: TypeError: Cannot read properties of null (reading 'appendChild')
> warning: failed to poll tuned {"problem":"disconnected","name":"null","message":"Server has closed the connection.","toString":""}
> warning: failed to poll tuned {"problem":"disconnected","name":"null","message":"Server has closed the connection.","toString":""}
> log: osinfo-detect command failed:  (process:5772): GLib-GIO-WARNING **: 10:32:20.942: Can't find module 'gvfs' specified in GIO_USE_VFS
Traceback (most recent call last):
  File "<string>", line 22, in <module>
gi.repository.GLib.GError: osinfo-media-error: No volume descriptors (0)
error: failed to get domain 'VmNotInstalled'
CDP: {"source":"network","level":"error","text":"Failed to load resource: the server responded with a status of 404 (ERROR)","timestamp":1716388349210.897,"url":"http://127.0.0.2:9691/cockpit/@localhost/*/po.manifest.js","networkRequestId":"1878.170"}
CDP: {"source":"network","level":"error","text":"Failed to load resource: the server responded with a status of 404 (ERROR)","timestamp":1716388349212.187,"url":"http://127.0.0.2:9691/cockpit/@localhost/*/po.js","networkRequestId":"1878.171"}
CDP: {"source":"security","level":"error","text":"Refused to execute script from 'http://127.0.0.2:9691/cockpit/@localhost/*/po.manifest.js' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.","timestamp":1716388349246.443,"url":"http://127.0.0.2:9691/machines#/vm?name=VmNotInstalled&connection=system"}
CDP: {"source":"security","level":"error","text":"Refused to execute script from 'http://127.0.0.2:9691/cockpit/@localhost/*/po.js' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.","timestamp":1716388349246.685,"url":"http://127.0.0.2:9691/machines#/vm?name=VmNotInstalled&connection=system"}
> error: Scrollbar test exception: TypeError: Cannot read properties of null (reading 'appendChild')
> warning: failed to poll tuned {"problem":"disconnected","name":"null","message":"Server has closed the connection.","toString":""}
> warning: failed to poll tuned {"problem":"disconnected","name":"null","message":"Server has closed the connection.","toString":""}
> error: {"problem":null,"exit_status":1,"exit_signal":null,"message":"ERROR    internal error: Could not get process id of swtpm\nDomain installation does not appear to have been successful.\nIf it was, you can restart your domain by running:\n  virsh --connect qemu:///system start VmNotInstalled\notherwise, please restart your installation.\nCommand '['virt-install', '--connect', 'qemu:///system', '--quiet', '--os-variant', 'fedora28', '--reinstall', 'VmNotInstalled', '--wait', '-1', '--noautoconsole', '--cdrom', '/var/lib/libvirt/novell.iso']' returned non-zero exit status 1.\nTraceback (most recent call last):\n  File \"<string>\", line 285, in install_vm\n  File \"/usr/lib64/python3.12/subprocess.py\", line 466, in check_output\n    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/lib64/python3.12/subprocess.py\", line 571, in run\n    raise CalledProcessError(retcode, process.args,\nsubprocess.CalledProcessError: Command '['virt-install', '--connect', 'qemu:///system', '--quiet', '--os-variant', 'fedora28', '--reinstall', 'VmNotInstalled', '--wait', '-1', '--noautoconsole', '--cdrom', '/var/lib/libvirt/novell.iso']' returned non-zero exit status 1.\nTraceback (most recent call last):\n  File \"<string>\", line 363, in <module>\n  File \"<string>\", line 296, in install_vm\n  File \"<string>\", line 285, in install_vm\n  File \"/usr/lib64/python3.12/subprocess.py\", line 466, in check_output\n    return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/usr/lib64/python3.12/subprocess.py\", line 571, in run\n    raise CalledProcessError(retcode, process.args,\nsubprocess.CalledProcessError: Command '['virt-install', '--connect', 'qemu:///system', '--quiet', '--os-variant', 'fedora28', '--reinstall', 'VmNotInstalled', '--wait', '-1', '--noautoconsole', '--cdrom', '/var/lib/libvirt/novell.iso']' returned non-zero exit status 1."}
Wrote VmNotInstalled XML to TestMachinesCreate-testConfigureBeforeInstall-centos-10-127.0.0.2-2801-VmNotInstalled.xml
Wrote VmNotInstalled log to TestMachinesCreate-testConfigureBeforeInstall-centos-10-127.0.0.2-2801-VmNotInstalled.log
Traceback (most recent call last):
  File "/work/make-checkout-workdir/test/check-machines-create", line 2169, in testConfigureBeforeInstall
    testlib.wait(lambda: "VmNotInstalled" in m.execute("virsh list --persistent"), delay=3)
  File "/work/make-checkout-workdir/test/common/testlib.py", line 2629, in wait
    raise Error(msg or "Condition did not become true.")
testlib.Error: Condition did not become true.

Wrote screenshot to TestMachinesCreate-testConfigureBeforeInstall-centos-10-127.0.0.2-2801-FAIL.png
Wrote HTML dump to TestMachinesCreate-testConfigureBeforeInstall-centos-10-127.0.0.2-2801-FAIL.html
Wrote JS log to TestMachinesCreate-testConfigureBeforeInstall-centos-10-127.0.0.2-2801-FAIL.js.log
Journal extracted to TestMachinesCreate-testConfigureBeforeInstall-centos-10-127.0.0.2-2801-FAIL.log.gz
> warning: transport closed: disconnected
Stopping 'virtstoraged.service', but its triggering units are still active:
virtstoraged-ro.socket, virtstoraged.socket, virtstoraged-admin.socket
Stopping 'virtnetworkd.service', but its triggering units are still active:
virtnetworkd.socket, virtnetworkd-admin.socket, virtnetworkd-ro.socket
Stopping 'virtqemud.service', but its triggering units are still active:
virtqemud.socket, virtqemud-ro.socket, virtqemud-admin.socket
Traceback (most recent call last):
  File "/work/make-checkout-workdir/test/check-machines-create", line 2169, in testConfigureBeforeInstall
    testlib.wait(lambda: "VmNotInstalled" in m.execute("virsh list --persistent"), delay=3)
  File "/work/make-checkout-workdir/test/common/testlib.py", line 2629, in wait
    raise Error(msg or "Condition did not become true.")
testlib.Error: Condition did not become true.

# Result testConfigureBeforeInstall (__main__.TestMachinesCreate.testConfigureBeforeInstall) failed
# 1 TEST FAILED [248s on 2988a08c7135]
not ok 63 /work/make-checkout-workdir/test/check-machines-create TestMachinesCreate.testConfigureBeforeInstall [ND@5]

First occurrence: 2024-05-22T14:35:47.761819+00:00 | revision 49763df1a545c33b7451260fa0a0714f6380625a
Times recorded: 1
Latest occurrences:

  • 2024-05-22T14:35:47.761819+00:00 | revision 49763df1a545c33b7451260fa0a0714f6380625a

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants