[Kimchi-devel] [PATCH] Make VMs for tests auto-destroy'd and transient

Aline Manera alinefm at linux.vnet.ibm.com
Thu Feb 5 18:54:14 UTC 2015


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 at 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 at 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 at 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 at 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,




More information about the Kimchi-devel mailing list