qemu_vm: Fix enable/disable_kvm option

When we set disable_kvm to 'yes', we obviously don't want
-enable-kvm set regardless of the value of enable_kvm.

So let's fix that. Now you can just set

disable_kvm = yes

And everything else will be taken care of.

CC: Eduardo Habkost <ehabkost@redhat.com>
CC: Igor Mammedov <imammedo@redhat.com>
Signed-off-by: Lucas Meneghel Rodrigues <lmr@redhat.com>
multi_disk: Fix incorrect params

* max_disk must not have any usbs, otherwise there are not enough
  slots in PCI
* default image_boot = yes which generates in multi_disk test
  multiple disks with index = 1 and test failure. By forcing default
  value stg_image_boot = 'no' we can keep the default value (and index
  of image1) and let the other disk to have their own indexes.

Signed-off-by: Lukáš Doktor <ldoktor@redhat.com>
virt: Improve DHCP RFC compatibility

Client can suggest IP address which he wants to have.
Autotest check if IP address is accessible, thanks to
it there is no problem with changing of guest network.
Additionally it helps with windows DHCP compatibility.

Signed-off-by: Jiří Župka <jzupka@redhat.com>
qemu_storage: Fix location of the qemu binary

qemu_img can be found on a different location than the
images, in case qemu was compiled from source, so let's
fix the reference to the right path when setting the
binary.

Signed-off-by: Lucas Meneghel Rodrigues <lmr@redhat.com>
virt_vm: Change vm.get_cpu_count() to use self.wait_for_login()

Allow calling vm.get_cpu_count() before guest ssh
running. In this case, calling simply vm.login()
would fail.

Signed-off-by: Xiaoqing Wei <xwei@redhat.com>
qemu_vm: Support maxcpus sub option

maxcpus is a sub-option of -smp, so need a Regex to match

Signed-off-by: Xiaoqing Wei <xwei@redhat.com>
virt.virttest.storage: Change the cmp method of the sorted function

Currently, function sorted inside the python was not suitable for
storage, for example, if ls -1d /dev/sd* gets result like this
after split('\n'):
['/dev/sda', '/dev/sda1', '/dev/sda2', '/dev/sda3',
 '/dev/sdaa', '/dev/sdab','/dev/sdac', '/dev/sdad', '/dev/sdae',
 '/dev/sdaf', '/dev/sdag', '/dev/sdah', '/dev/sdai', '/dev/sdaj',
 '/dev/sdak', '/dev/sdal', '/dev/sdam', '/dev/sdan', '/dev/sdao',
 '/dev/sdap', '/dev/sdaq', '/dev/sdar', '/dev/sdas', '/dev/sdb',
 '/dev/sdb1', '/dev/sdb2', '/dev/sdb3', '/dev/sdc', '/dev/sdd',
 '/dev/sde', '/dev/sdf', '/dev/sdg', '/dev/sdg1', '/dev/sdg2',
 '/dev/sdg3', '/dev/sdh', '/dev/sdh1', '/dev/sdh2', '/dev/sdh3',
 '/dev/sdi', '/dev/sdj', '/dev/sdk', '/dev/sdl', '/dev/sdm',
 '/dev/sdn', '/dev/sdo', '/dev/sdp', '/dev/sdq', '/dev/sdr',
 '/dev/sds', '/dev/sdt', '/dev/sdu', '/dev/sdv', '/dev/sdw',
 '/dev/sdx', '/dev/sdy', '/dev/sdz']

it will make no any change if just use sorted. As the default,
it will choose last 9 disk:
['/dev/sdr', '/dev/sds', '/dev/sdt', '/dev/sdu', '/dev/sdv', '/dev/sdw',
 '/dev/sdx', '/dev/sdy', '/dev/sdz']

Sometimes this is very dangerous, for lots of them may be the disk contains
lots of important data. Actually, maybe you just use scsi_debug just create:
['/dev/sdak','/dev/sdal', '/dev/sdam', '/dev/sdan', '/dev/sdao',
 '/dev/sdap', '/dev/sdaq', '/dev/sdar', '/dev/sdas']

But select the wrong disks as mentioned above.

To solve this problem, add param cmp to sorted and get the right order.

Signed-off-by: Mike Qiu <qiudayu@linux.vnet.ibm.com>
virt.shared.cfg.base:Avoid to add more disk in blacklist

Currently, autotest use such as /dev/sda.* to get the disk of
the blacklist, but this will raise an error if the disk 'sdaa'
or some name like this, it's not correct as we just want to add
sda or name like sda1-9 to the blacklist.

change the pattern to /dev/sda[\d]* can avoid this.

Signed-off-by: Mike Qiu<qiudayu@linux.vnet.ibm.com>
virt.virttest.storage:avoid the wrong to raise an error

Currently, it will rase and error when '/dev/sdaa' match the pattern
of the blacklist. This should not be happen as we just want sda sda1
and so on to be in the blacklist.

add one more check to avoid this error.

Signed-off-by: Mike Qiu<qiudayu@linux.vnet.ibm.com>
qemu_vm: Robust but safe method for cpu_model

Iterate over all allowed cpu_models and in case none is supported,
force the last one.

This should suit negative testing and also it should be safer when
using auto_cpu_model.

Signed-off-by: Lukáš Doktor <ldoktor@redhat.com>
virt: Implement subdirectory flattening classes

* data_dir.SubdirList class returns a flat-list of all non-hidden
  subdirectories beneath a base directory (inclusive).

* data_dir.SubdirGlobList class returns flat-list of all files
  matching a glob pattern, within all non-hidden subdirectories
  beneath a base directory (inclusive).

Signed-off-by: Chris Evich <cevich@redhat.com>
virt: Support test module arbitrary organization

Signed-off-by: Chris Evich <cevich@redhat.com>
virt: Support test config. arbitrary orginization

Signed-off-by: Chris Evich <cevich@redhat.com>
virt: Some minor style/pylint cleanup

Signed-off-by: Chris Evich <cevich@redhat.com>
virt: Support arbitrary organization for the autotest entry point

Signed-off-by: Lucas Meneghel Rodrigues <lmr@redhat.com>
cpuid: add rhel64|qemu13 check_models test

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
v2:
  * rebased on top of tree where there is no subtests.cfg.example
  * s/kvm/qemu/ in pathnames and test config
  * Change some errors types to a more suitable ones
cpuid: add simplistic kernel that dumps cpuid to serial port

... and test utilities to parse its output

CPUID leaves are capped by reported level, xlevel, x2level values.

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
  v3:
    * dump CPUID(EAX=3), CPUID(EAX=4,ECX=3), CPUID(EAX={0xB, 0xC})
    * dump CPUID(EAX=0x80000007) and known paravirt cpuid leaves if
      detected
    * make target name specific to function cpuid_dump_kernel.bin,
      so we could later add another targets for other tests
  v2:
    * log cpuid dump on parsing failure
    * cap by reported level, xlevel, x2level
cpuid: add a series of default_vendor tests

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
v2:
    * remove rhelcpu models form qemu13 test
    * if vendor is missing use  host's vendor
    * remove no needed cpu_models list from kvm test
    * replace cpu_models with shorter ignore_cpu_models in rhel64.kvm.cpuid.default.vendor
    * fix typo
    * s/default_vendor/default.vendor/ in config so we could use
      cpuid.default selector for all default tests

default.vendor fix
cpuid: add custom_vendor test

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
v2:
    * s/TestFail/TestNAError/
    * s/custom_vendor/custom.vendor/ in config
cpuid: add custom_level test

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
v2:
    * s/TestFail/TestNAError/
    * s/custom_level/custom.level/ in config