After applying this patch I got several error when starting up the
Kimchi server.
Please, check below.
Also the Capabilities API is returning a different result with/without
this patch:
*with* this patch:
alinefm@alinefm:~/kimchi$ curl -u <user:password> -H "Content-Type:
application/json" -H "Accept: application/json" -k
https://localhst:8001/config/capabilities
{
"kernel_vfio":true,
"repo_mngt_tool":"deb",
"qemu_spice":true,
"screenshot":null,
"system_report_tool":true,
"update_tool":true,
"qemu_stream":true,
"libvirt_stream_protocols":[],
"auth":"pam",
"federation":"off"
}
*without* this patch:
alinefm@alinefm:~/kimchi$ curl -u <user:password> -H "Content-Type:
application/json" -H "Accept: application/json" -k
https://localhost:8001/config/capabilities
{
"kernel_vfio":true,
"repo_mngt_tool":"deb",
"qemu_spice":true,
"screenshot":null,
"system_report_tool":true,
"update_tool":true,
"qemu_stream":true,
"libvirt_stream_protocols":[
"http",
"https",
"ftp",
"ftps",
"tftp"
],
"auth":"pam",
"federation":"off"
}
alinefm@alinefm:~/kimchi$ sudo python src/kimchid --environment=development
Loading AptUpdate features.
[05/Feb/2015:16:48:47] ENGINE Listening for SIGHUP.
[05/Feb/2015:16:48:47] ENGINE Listening for SIGTERM.
[05/Feb/2015:16:48:47] ENGINE Listening for SIGUSR1.
[05/Feb/2015:16:48:47] ENGINE Bus STARTING
[05/Feb/2015:16:48:47] ENGINE Started monitor thread 'Autoreloader'.
[05/Feb/2015:16:48:47] ENGINE Serving on
http://127.0.0.1:8010
*** Running feature tests ***
127.0.0.1 - - [05/Feb/2015:16:48:47] "HEAD /images/icon-fedora.png
HTTP/1.1" 200 4449 "" ""
127.0.0.1 - - [05/Feb/2015:16:48:47] "GET /images/icon-fedora.png
HTTP/1.1" 206 4449 "" ""
127.0.0.1 - - [05/Feb/2015:16:48:47] "HEAD /images/icon-fedora.png
HTTP/1.1" 200 4449 "" ""
127.0.0.1 - - [05/Feb/2015:16:48:47] "GET /images/icon-fedora.png
HTTP/1.1" 206 4449 "" ""
libvirt: error : internal error: Child process (/sbin/showmount
--no-headers --exports localhost) unexpected exit status 1: clnt_create:
RPC: Program not registered
internal error: Child process (/sbin/showmount --no-headers --exports
localhost) unexpected exit status 1: clnt_create: RPC: Program not
registered
libvirt: QEMU Driver error : internal error: early end of file from
monitor: possible problem:
p11-kit: couldn't list directory: /usr/share/p11-kit/modules: Permission
denied
2015-02-05T18:48:49.906991Z qemu-system-x86_64: -drive
file=http://host.name:1234/url/path/to/iso/file,if=none,id=drive-ide0-1-0,readonly=on,format=raw:
could not open disk image
http://host.name:1234/url/path/to/iso/file:
CURL: Error opening file: Could not resolve host: host.name
internal error: early end of file from monitor: possible problem:
p11-kit: couldn't list directory: /usr/share/p11-kit/modules: Permission
denied
2015-02-05T18:48:49.906991Z qemu-system-x86_64: -drive
file=http://host.name:1234/url/path/to/iso/file,if=none,id=drive-ide0-1-0,readonly=on,format=raw:
could not open disk image
http://host.name:1234/url/path/to/iso/file:
CURL: Error opening file: Could not resolve host: host.name
libvirt: QEMU Driver error : internal error: process exited while
connecting to monitor: p11-kit: couldn't list directory:
/usr/share/p11-kit/modules: Permission denied
2015-02-05T18:48:51.067337Z qemu-system-x86_64: -drive
file=https://host.name:1234/url/path/to/iso/file,if=none,id=drive-ide0-1-0,readonly=on,format=raw:
could not open disk image
https://host.name:1234/url/path/to/iso/file:
CURL: Error opening file: Could not resolve host: host.name
internal error: process exited while connecting to monitor: p11-kit:
couldn't list directory: /usr/share/p11-kit/modules: Permission denied
2015-02-05T18:48:51.067337Z qemu-system-x86_64: -drive
file=https://host.name:1234/url/path/to/iso/file,if=none,id=drive-ide0-1-0,readonly=on,format=raw:
could not open disk image
https://host.name:1234/url/path/to/iso/file:
CURL: Error opening file: Could not resolve host: host.name
libvirt: QEMU Driver error : internal error: process exited while
connecting to monitor: p11-kit: couldn't list directory:
/usr/share/p11-kit/modules: Permission denied
2015-02-05T18:48:52.208882Z qemu-system-x86_64: -drive
file=ftp://host.name:1234/url/path/to/iso/file,if=none,id=drive-ide0-1-0,readonly=on,format=raw:
could not open disk image ftp://host.name:1234/url/path/to/iso/file:
CURL: Error opening file: Could not resolve host: host.name
internal error: process exited while connecting to monitor: p11-kit:
couldn't list directory: /usr/share/p11-kit/modules: Permission denied
2015-02-05T18:48:52.208882Z qemu-system-x86_64: -drive
file=ftp://host.name:1234/url/path/to/iso/file,if=none,id=drive-ide0-1-0,readonly=on,format=raw:
could not open disk image ftp://host.name:1234/url/path/to/iso/file:
CURL: Error opening file: Could not resolve host: host.name
libvirt: QEMU Driver error : internal error: process exited while
connecting to monitor: p11-kit: couldn't list directory:
/usr/share/p11-kit/modules: Permission denied
2015-02-05T18:48:53.354543Z qemu-system-x86_64: -drive
file=ftps://host.name:1234/url/path/to/iso/file,if=none,id=drive-ide0-1-0,readonly=on,format=raw:
could not open disk image ftps://host.name:1234/url/path/to/iso/file:
CURL: Error opening file: Could not resolve host: host.name
internal error: process exited while connecting to monitor: p11-kit:
couldn't list directory: /usr/share/p11-kit/modules: Permission denied
2015-02-05T18:48:53.354543Z qemu-system-x86_64: -drive
file=ftps://host.name:1234/url/path/to/iso/file,if=none,id=drive-ide0-1-0,readonly=on,format=raw:
could not open disk image ftps://host.name:1234/url/path/to/iso/file:
CURL: Error opening file: Could not resolve host: host.name
libvirt: QEMU Driver error : internal error: process exited while
connecting to monitor: p11-kit: couldn't list directory:
/usr/share/p11-kit/modules: Permission denied
2015-02-05T18:48:54.532055Z qemu-system-x86_64: -drive
file=tftp://host.name:1234/url/path/to/iso/file,if=none,id=drive-ide0-1-0,readonly=on,format=raw:
could not open disk image tftp://host.name:1234/url/path/to/iso/file:
CURL: Error opening file: Could not resolve host: host.name
internal error: process exited while connecting to monitor: p11-kit:
couldn't list directory: /usr/share/p11-kit/modules: Permission denied
2015-02-05T18:48:54.532055Z qemu-system-x86_64: -drive
file=tftp://host.name:1234/url/path/to/iso/file,if=none,id=drive-ide0-1-0,readonly=on,format=raw:
could not open disk image tftp://host.name:1234/url/path/to/iso/file:
CURL: Error opening file: Could not resolve host: host.name
*** Feature tests completed ***
[05/Feb/2015:16:48:54] ENGINE Bus STARTED
[05/Feb/2015:16:49:26] ENGINE Started monitor thread 'Session cleanup'.
127.0.0.1 - - [05/Feb/2015:16:49:26] "GET /plugins HTTP/1.0" 200 2 ""
"curl/7.37.1"
127.0.0.1 - - [05/Feb/2015:16:49:31] "GET /config HTTP/1.0" 200 69 ""
"curl/7.37.1"
127.0.0.1 - - [05/Feb/2015:16:49:35] "GET /config/capabilities HTTP/1.0"
200 236 "" "curl/7.37.1"
^C[05/Feb/2015:16:49:39] ENGINE Keyboard Interrupt: shutting down bus
[05/Feb/2015:16:49:39] ENGINE Bus STOPPING
[05/Feb/2015:16:49:39] ENGINE HTTP Server
cherrypy._cpwsgi_server.CPWSGIServer(('127.0.0.1', 8010)) shut down
[05/Feb/2015:16:49:39] ENGINE Stopped thread 'Autoreloader'.
[05/Feb/2015:16:49:39] ENGINE Stopped thread 'Session cleanup'.
[05/Feb/2015:16:49:39] ENGINE Bus STOPPED
[05/Feb/2015:16:49:39] ENGINE Bus EXITING
[05/Feb/2015:16:49:39] ENGINE Bus EXITED
[05/Feb/2015:16:49:39] ENGINE Waiting for child threads to terminate...
On 03/02/2015 17:57, Christy Perez wrote:
If Kimchi's startup is interrupted for some reason, a VM created
during the feature tests may be left defined. When this happens,
the next time Kimchi is started it will fail with an error that
the domain already exists (for example, "libvirtError: operation
failed: domain 'A_SIMPLE_VM' already exists with uuid
e6fccea8-f7ed-4320-a4cb-b85217d23985").
About the new flag:
"If the VIR_DOMAIN_START_AUTODESTROY flag is set, the guest
domain will be automatically destroyed when the virConnectPtr
object is finally released. This will also happen if the
client application crashes / loses its connection to the
libvirtd daemon. Any domains marked for auto destroy will
block attempts at migration, save-to-file, or snapshots."
This patch also changes the memory in the test VMs, due to the fact
that the domain will be started, and some platforms (Power is a known
example) require at least 128M of memory for a guest.
Signed-off-by: Christy Perez <christy(a)linux.vnet.ibm.com>
---
src/kimchi/kvmusertests.py | 5 ++---
src/kimchi/model/featuretests.py | 14 ++++++++------
2 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/src/kimchi/kvmusertests.py b/src/kimchi/kvmusertests.py
index 408706d..3abf148 100644
--- a/src/kimchi/kvmusertests.py
+++ b/src/kimchi/kvmusertests.py
@@ -54,9 +54,8 @@ def probe_user(cls):
with RollbackContext() as rollback:
conn = libvirt.open(None)
rollback.prependDefer(conn.close)
- dom = conn.defineXML(xml)
- rollback.prependDefer(dom.undefine)
- dom.create()
+ dom = conn.createXML(xml,
+ flags=libvirt.VIR_DOMAIN_START_AUTODESTROY)
rollback.prependDefer(dom.destroy)
with open('/var/run/libvirt/qemu/%s.pid' % vm_name) as f:
pidStr = f.read()
diff --git a/src/kimchi/model/featuretests.py b/src/kimchi/model/featuretests.py
index 5a45990..ef7dcc5 100644
--- a/src/kimchi/model/featuretests.py
+++ b/src/kimchi/model/featuretests.py
@@ -58,7 +58,7 @@
SIMPLE_VM_XML = """
<domain type='%(domain)s'>
<name>A_SIMPLE_VM</name>
- <memory unit='KiB'>10240</memory>
+ <memory unit='KiB'>131072</memory>
<os>
<type arch='%(arch)s'>hvm</type>
<boot dev='hd'/>
@@ -109,8 +109,9 @@ def libvirt_supports_iso_stream(conn, protocol):
'arch': arch}
try:
FeatureTests.disable_libvirt_error_logging()
- dom = conn.defineXML(xml)
- dom.undefine()
+ dom = conn.createXML(xml,
+ flags=libvirt.VIR_DOMAIN_START_AUTODESTROY)
+ dom.destroy()
return True
except libvirt.libvirtError, e:
kimchi_log.error(e.message)
@@ -196,9 +197,10 @@ def has_metadata_support(conn):
domain_type = 'test' if conn.getType().lower() == 'test'
else 'kvm'
arch = 'ppc64' if platform.machine() == 'ppc64le' \
else platform.machine()
- dom = conn.defineXML(SIMPLE_VM_XML % {'domain': domain_type,
- 'arch': arch})
- rollback.prependDefer(dom.undefine)
+ dom = conn.createXML(SIMPLE_VM_XML % {'domain': domain_type,
+ 'arch': arch},
+ flags=libvirt.VIR_DOMAIN_START_AUTODESTROY)
+ rollback.prependDefer(dom.destroy)
try:
dom.setMetadata(libvirt.VIR_DOMAIN_METADATA_ELEMENT,
"<metatest/>", KIMCHI_NAMESPACE,