virt.spice: Adding values for the default variants

Signed-off-by: Marian Krcmarik <mkrcmari@redhat.com>
client.kernel: Clean up add to bootloader logic

The old boottool implementation forced us to use the
following workaround:

 1) Add the kernel with a dummy argument
 2) Transform the args string in a list
 3) Append the arguments to the kernel entry one by one
 4) Remove the dummy argument

Besides being ugly as sin, I believe this is causing
problems in the bootloader code that are affecting
a bunch of distros, such as Ubuntu and RHEL5.

This change needs more testing, but it was a clear
thing that we were missing with the update to a
grubby backed boottool.

CC: Cleber Rosa <crosa@redhat.com>
Signed-off-by: Lucas Meneghel Rodrigues <lmr@redhat.com>
virt: Close qemu-io shell session after it create

The shell session for qemu-io will not create in init step which
will cause the close session through out an error. So close it
after it created.

Signed-off-by: Yiqiao Pu <ypu@redhat.com>
boottool: updated minimum required grubby version to 8.15

Since it includes a fix relevant for RHEL 5 systems.

Signed-off-by: Cleber Rosa <crosa@redhat.com>
client.kernel_config: Normalize the result of utils.running_config

All the config path manipulation in kernel_config relies
in comparisons like:

if orig_file == ''

running_config() may return None, that might in turn,
sneak into the lower level functions generating an
error. So let's play safe and pass '' in case the
result of running_config is None.

Signed-off-by: Lucas Meneghel Rodrigues <lmr@redhat.com>
kernel: Fix unittest broken by f8586dbb8f

Signed-off-by: Lucas Meneghel Rodrigues <lmr@redhat.com>
client.job: Consolidate tests output options in one

Turn client/[tests|site-tests] into read only directories,
make all the output that required those dirs to be
read write to go to a configurable location. Consolidate
all previous options that dealt with test output:

* test_tmp_dir
* pkg_dir
* state_dir

Into a single one:

* test_output_dir

If that variable is not set, use the client temporary
directory to write those files into.

Signed-off-by: Don Zickus <dzickus@redhat.com>
Signed-off-by: Lucas Meneghel Rodrigues <lmr@redhat.com>
client.test: Create test_dir config key

This is actually a rename from test_src_dir, as it's more
clear for the purpose. This is the place where we can
configure additional directories where we can look for
test modules

Signed-off-by: Lucas Meneghel Rodrigues <lmr@redhat.com>
client.tests: Make test src dir configurable

test.srcdir was still writing into the test module directory,
breaking our assumptions of read only test modules. So
let's fix this by allowing the src dir to be in the
configurable test_output_dir, or default to the client
tmpdir if that is not set.

Signed-off-by: Lucas Meneghel Rodrigues <lmr@redhat.com>
Replacing the obsolete env variable of bridge with the new one: netdst.

Signed-off-by: Vimal Patel <vipatel@redhat.com>
boottool: Don't fail if can't parse an index entry

Running autotest on a OpenSUSE client (12.1), that is
grub-based, I've found that boottool would fail with:

Traceback (most recent call last):
  File "/usr/local/autotest/tools/boottool", line 1994, in <module>
    app.run()
  File "/usr/local/autotest/tools/boottool", line 1804, in run
    result = action_method()
  File "/usr/local/autotest/tools/boottool", line 1885, in action_info
    entries = self.grubby.get_entries()
  File "/usr/local/autotest/tools/boottool", line 1010, in get_entries
    entries[entry["index"]] = entry
KeyError: 'index'

Turns out that the code is assuming that we can always
parse an index from the raw grubby output, leading to
the above error when the assumption does not hold true.

Fortunately, this is easy to fix, just handle KeyErrors
and continue on to parse the rest of the split parts
of the raw output.

CC: Cleber Rosa <crosa@redhat.com>
Signed-off-by: Lucas Meneghel Rodrigues <lmr@redhat.com>
boottool: Search for installed grub in the system

Current boottool assumes a hardcoded path for grub,
/sbin/grub. Distros such as OpenSUSE install it on
/usr/sbin/grub, so this will cause a grub setup to
flat out fail on those distros.

So let's leverage find_executable, that is already
present, to take care of actually finding the
appropriate grub path.

Signed-off-by: Lucas Meneghel Rodrigues <lmr@redhat.com>
boottool: Find installed nvsetenv command rather than hardcode it

In the same vein of the grub path problem, nvsetenv's path
is hardcoded, while it doesn't need to. Fix that as well.

Signed-off-by: Lucas Meneghel Rodrigues <lmr@redhat.com>
client.kernel_config: Uncompress /proc/config.gz and use as cfg

For systems that support /proc/config.gz, we can use the
config only if it's properly uncompressed. So, uncompress
the config file, and then pass it to autotest.

Signed-off-by: Lucas Meneghel Rodrigues <lmr@redhat.com>
boottool: Analyze both stdout and stderr from grub's output

Turns out grub shipped by OpenSUSE 12.1 has the batch cmd
savedefault disabled:

linux-yk2o:~ # grub --batch

    GNU GRUB  version 0.97  (640K lower / 3072K upper memory)

 [ Minimal BASH-like line editing is supported.  For the first word, TAB
   lists possible command completions.  Anywhere else TAB lists the
possible
   completions of a device/filename. ]
grub> savedefault --default=0 --once
savedefault --default=0 --once

Error 27: Unrecognized command

Horray for great engineering decisions! Kudos to the OpenSUSE team.

Also, since this wasn't captured by our code, it means
it went to stdout rather than stderr. So let's capture
both stdout and stderr to look for errors instead.

Signed-off-by: Lucas Meneghel Rodrigues <lmr@redhat.com>
boottool: Use 'grubonce' if available in grub legacy distros

The command 'grubonce' is a custom method to boot a bootloader
entry once, found in OpenSUSE 12.1. Let's try to use it if
found, then fall back to the more standard (and sane) method.

This fixes an issue booting new kernels on OpenSUSE 12.1.

Signed-off-by: Lucas Meneghel Rodrigues <lmr@redhat.com>
[RFC] global_config.ini: Enable SSH connection sharing by default

The autotest server needs to execute a bunch of a commands
on a test client for a typical job; each one of those
commands needs to wait on a costly authentication process.

Fortunately, SSH does have mechanisms to make subsequent
ssh sessions to use a master connection if available.
Search for ControlMaster in

http://www.openbsd.org/cgi-bin/man.cgi?query=ssh&sektion=1

What's even better, the support for Master SSH connection
already exists in autotest, only that it is turned off
by default. What I am proposing here is that we turn
this on so people can benefit from the speed boost on
jobs executed from an autotest server, without even
thinking about it.

We believe most of the scenarios involving installing an
autotest server use distros sufficiently recent to support
the MasterControl feature.

Signed-off-by: Lucas Meneghel Rodrigues <lmr@redhat.com>
Adding site_tests to client directory

The directory site_tests was conceived long ago as a
place to store tests internal to organizations, that
could not become upstream. Now in Fedora installs,
the absence of this directory will make the code to
throw an exception due to its absence. So let's include
it in the source tree, and install it with setup.py.

CC: Martin Krizek <mkrizek@redhat.com>
Signed-off-by: Lucas Meneghel Rodrigues <lmr@redhat.com>