Create ssh_key shared module under client/shared

The SSH creation is a common method, so should share the get_public_key and
setup_ssh_key functions for both server and client.

* Create new ssh_key.py under the client/shared
* Move get_public_key from server/base_utils.py into ssh_key.py
* Move setup_ssh_key from server/hosts/ssh_host.py into ssh_key.py
* Sync ssh_host module with setup_ssh_key functions change

Signed-off-by: Wayne Sun <gsun@redhat.com>
Signed-off-by: Alex Jia <ajia@redhat.com>
virt: Introducing virt_v2v module

With this module, we will be able to implement a virt-v2v test.

As of implementation details, we uses virt-v2v command line tool
to convert an existing VM into libvirt-managed KVM, or an open
manageable virtualized environment - oVirt.

v2:
 - Fix a typo, s/autoorization/authorization/.
 - Improve codes docstring.
 - Remove unused variables.
 - Directly return cmd_result.

Signed-off-by: Alex Jia <ajia@redhat.com>
Signed-off-by: Wayne Sun <gsun@redhat.com>
virt: Introducing virt_v2v_utils module

It's a common virt-v2v test assistant module, which provides some
necessary class/functions with virt-v2v testing.

v2:
 - Fix typos, s/fucntion/function/, s/TARGERT/Target/.
 - Fix some platform relevant codes issues.
 - Rename check_vmware_tools() to has_vmware_tools() and fix return
   value issue.
 - Improve build_esx_no_verify() and add some judgements.
 - Change get_*_uri() and get_*_options() to private functions.
 - Fix session close issues in functions of the class LinuxVMCheck.
 - Improve codes docstring.

Signed-off-by: Alex Jia <ajia@redhat.com>
Signed-off-by: Wayne Sun <gsun@redhat.com>
virt: Introducing ovirt module

With this module, we able to use SDK for the oVirt engine API to
manipulate resources in oVirt such as Data Centers, Clusters,
Hosts, Storage Domains, VMs, etc.

At present, we haven't cover everything into our oVirt module, which
only includes some necessary API implementation for virt-v2v requirement.

However, it's very easy to extend new functions to support oVirt autotest
in the future.

v2:
 - Rename class name to {VM, DataCenter, Cluster, Host, StorageDomain}Manager.
 - Directly raise error if ovirt relevant module doesn't exist.
 - Reorgnize and simplify codes with {VM, DataCenter, Cluster, Host, StorageDomain} object instance.
 - Improve codes docstring.

Signed-off-by: Alex Jia <ajia@redhat.com>
Signed-off-by: Wayne Sun <gsun@redhat.com>
virt: Add new virsh wrapper functions into libvirt_vm

Reuse previous libvirt_vm module and add new virsh pool
functions, and then we can create/check a libvirt pool
via these functions and use virt-v2v to convert an
existing VM into the pool later.

v2:
 - s/warning/error/ if failed to create a pool.
 - Remove duplicate check in virsh_pool_create_as().

Signed-off-by: Alex Jia <ajia@redhat.com>
virt: Move get_port function into BaseVM class

All VM class implementation for get_port() are identical, so move it
into BaseVM class and remove relevant codes from {kvm, libvirt}_vm.py.

Signed-off-by: Wayne Sun <gsun@redhat.com>
Signed-off-by: Alex Jia <ajia@redhat.com>
virt.tests: Add a new pool creation test case

With this test cases, we can create and verity a libvirt pool, and virt-v2v
also may reuse the test case to build a pool for converting later.

Signed-off-by: Alex Jia <ajia@redhat.com>
Support ovirt-engine-sdk build

client/tests/virt_v2v/tests/install.py: add install module to support ovirt-engine-sdk build.
client/virt/base_installer.py: add some flags to allow caller ignore some unnecessary steps
                               for building ovirt-engine-sdk.

v2:
 - Use glob to match filename pattern.

Signed-off-by: Alex Jia <ajia@redhat.com>
virt.virt_env_process: Add ovirt vm handling

With this patch, we make ovirt vm handling integrating to pre/postprocessing code,
making it possible the execution of a virt-v2v/ovirt test. And introduce a new
virtualization type 'virt_v2v'.

Note that, it's different with kvm/libvirt-autotest, the vm exists on other host
and don't need to start/install, so you need to set 'start_vm = no' in base.cfg.

Signed-off-by: Alex Jia <ajia@redhat.com>
virt.virt_env_process: Support remotely run tcpdump

With the patch, we can get VM IP via tcpdump on a remote host.

As usual, virt-v2v will convert/import an existing VM into ovirt-node
then we need to get VM IP on the ovirt-node, so it's necessary to
remotely run tcpdump to get VM IP.

Signed-off-by: Wayne Sun <gsun@redhat.com>
Signed-off-by: Alex Jia <ajia@redhat.com>
virt.tests: Introducing virt-v2v test

Introduce virt-v2v test. The small amount of actual code on this test is made
possible by code reuse, made possible by the kvm/libvirt refactor patchset + the
previous patches on this set.

The obvious difference is that some new parameters had to be introduced to
accomplish virt-v2v testing. A more complete description of such parameters will
be present on our online documentation (wiki) later.

v2:
 - Update some *.sample files.

Signed-off-by: Alex Jia <ajia@redhat.com>
Signed-off-by: Wayne Sun <gsun@redhat.com>
virt.tests: Add test cases for automatically converting vm

These cases are quite simple, but they will assist users to understand
how does virt-v2v-autotest work and how to write a simple case for
virt-v2v or ovirt.

v2:
 - Improve linux_vm_check test case.
 - Asyn new class name with ovirt module change.

Signed-off-by: Alex Jia <ajia@redhat.com>
Signed-off-by: Wayne Sun <gsun@redhat.com>
gitignore: Update ignores for virt-v2v tests

Signed-off-by: Alex Jia <ajia@redhat.com>