Re: [PATCH] KVM test: Parallel install of guest OS v3

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



FYI, patch applied, see:

http://autotest.kernel.org/changeset/4309

On Wed, Mar 17, 2010 at 11:28 PM, Lucas Meneghel Rodrigues
<lmr@xxxxxxxxxx> wrote:
> From: yogi <anantyog@xxxxxxxxxxxxxxxxxx>
>
> The patch enables doing mulitple install of guest OS in parallel.
> Have added four more options to  test_base.cfg, port redirection
> entry "guest_port_unattend_shell" for host to communicate with
> guest during installation, "pxe_dir", 'pxe_image' and
> 'pxe_initrd" to specify locations for kernel and initrd.
> For parallel installation to work in unattended mode, the floppy
> image and pxe boot path also  has to be unique for each quest.
>
> All the relevant unattended post install steps for guests were
> changed, now they are server based codes.
>
> Notes:
>  * Yogi, I am going to remove the SLES patch, and will wait for
> you to send a new patchset with both the SLES files and the
> opensuse ones, OK? Thanks.
>
> Changes from v2:
>  * According to Michael Goldish comments, handled a possible
> socket.error exception that could be generated during the
> unattended install test
>  * Modified the floppy image names to be contained inside
> the same directory that might hold the tftp root for each
> OS, making the needed changes on unattended.py.
>  * Added floppy names for windows based OSs, which were lacking
> on previous patches.
>
> Changes from v1:
>  * Fixed the logic for the new unattended install test (original
> implementation would hang indefinitely if guest dies in the middle
> of the install).
>  * Fixed the config changes to make sure the unattended install
> port actually gets redirected so the test can work, also made the
> config specific to unattended install
>  * Merged the finish.exe patch, including a binary patch that
> changes the binary shipped to the new version
>  * Changed all unattended install files to use the parallel
> mechanism
>
> Tested with Windows 7 and Fedora 11 guests. I (lmr) am going to
> keep this in the queue for a bit so I can test it more in the
> internal test farm and everybody can take a look at the patch.
>
> Signed-off-by: Yogananth Subramanian <anantyog@xxxxxxxxxxxxxxxxxx>
> Signed-off-by: Lucas Meneghel Rodrigues <lmr@xxxxxxxxxx>
> ---
>  client/tests/kvm/deps/finish.cpp                   |  111 +++++++++++---------
>  client/tests/kvm/deps/finish.exe                   |  Bin 26913 -> 26926 bytes
>  client/tests/kvm/kvm_utils.py                      |    4 +-
>  client/tests/kvm/scripts/unattended.py             |   59 ++++++-----
>  client/tests/kvm/tests/unattended_install.py       |   45 ++++----
>  client/tests/kvm/tests_base.cfg.sample             |   81 +++++++++++++--
>  client/tests/kvm/unattended/Fedora-10.ks           |   12 +-
>  client/tests/kvm/unattended/Fedora-11.ks           |   11 +-
>  client/tests/kvm/unattended/Fedora-12.ks           |   11 +-
>  client/tests/kvm/unattended/Fedora-8.ks            |   11 +-
>  client/tests/kvm/unattended/Fedora-9.ks            |   11 +-
>  client/tests/kvm/unattended/RHEL-3-series.ks       |   12 +-
>  client/tests/kvm/unattended/RHEL-4-series.ks       |   11 +-
>  client/tests/kvm/unattended/RHEL-5-series.ks       |   11 +-
>  client/tests/kvm/unattended/win2003-32.sif         |    2 +-
>  client/tests/kvm/unattended/win2003-64.sif         |    2 +-
>  .../kvm/unattended/win2008-32-autounattend.xml     |    2 +-
>  .../kvm/unattended/win2008-64-autounattend.xml     |    2 +-
>  .../kvm/unattended/win2008-r2-autounattend.xml     |    2 +-
>  .../tests/kvm/unattended/win7-32-autounattend.xml  |    2 +-
>  .../tests/kvm/unattended/win7-64-autounattend.xml  |    2 +-
>  .../kvm/unattended/winvista-32-autounattend.xml    |    2 +-
>  .../kvm/unattended/winvista-64-autounattend.xml    |    2 +-
>  client/tests/kvm/unattended/winxp32.sif            |    2 +-
>  client/tests/kvm/unattended/winxp64.sif            |    2 +-
>  25 files changed, 242 insertions(+), 170 deletions(-)
>
> diff --git a/client/tests/kvm/deps/finish.cpp b/client/tests/kvm/deps/finish.cpp
> index 9c2867c..e5ba128 100644
> --- a/client/tests/kvm/deps/finish.cpp
> +++ b/client/tests/kvm/deps/finish.cpp
> @@ -1,12 +1,13 @@
> -// Simple app that only sends an ack string to the KVM unattended install
> -// watch code.
> +// Simple application that creates a server socket, listening for connections
> +// of the unattended install test. Once it gets a client connected, the
> +// app will send back an ACK string, indicating the install process is done.
>  //
>  // You must link this code with Ws2_32.lib, Mswsock.lib, and Advapi32.lib
>  //
>  // Author: Lucas Meneghel Rodrigues <lmr@xxxxxxxxxx>
>  // Code was adapted from an MSDN sample.
>
> -// Usage: finish.exe [Host OS IP]
> +// Usage: finish.exe
>
>  // MinGW's ws2tcpip.h only defines getaddrinfo and other functions only for
>  // the case _WIN32_WINNT >= 0x0501.
> @@ -21,24 +22,18 @@
>  #include <stdlib.h>
>  #include <stdio.h>
>
> -#define DEFAULT_BUFLEN 512
>  #define DEFAULT_PORT "12323"
> -
>  int main(int argc, char **argv)
>  {
>     WSADATA wsaData;
> -    SOCKET ConnectSocket = INVALID_SOCKET;
> -    struct addrinfo *result = NULL,
> -                    *ptr = NULL,
> -                    hints;
> +    SOCKET ListenSocket = INVALID_SOCKET, ClientSocket = INVALID_SOCKET;
> +    struct addrinfo *result = NULL, hints;
>     char *sendbuf = "done";
> -    char recvbuf[DEFAULT_BUFLEN];
> -    int iResult;
> -    int recvbuflen = DEFAULT_BUFLEN;
> +    int iResult, iSendResult;
>
>     // Validate the parameters
> -    if (argc != 2) {
> -        printf("usage: %s server-name\n", argv[0]);
> +    if (argc != 1) {
> +        printf("usage: %s", argv[0]);
>         return 1;
>     }
>
> @@ -49,72 +44,84 @@ int main(int argc, char **argv)
>         return 1;
>     }
>
> -    ZeroMemory( &hints, sizeof(hints) );
> -    hints.ai_family = AF_UNSPEC;
> +    ZeroMemory(&hints, sizeof(hints));
> +    hints.ai_family = AF_INET;
>     hints.ai_socktype = SOCK_STREAM;
>     hints.ai_protocol = IPPROTO_TCP;
> +    hints.ai_flags = AI_PASSIVE;
>
>     // Resolve the server address and port
> -    iResult = getaddrinfo(argv[1], DEFAULT_PORT, &hints, &result);
> -    if ( iResult != 0 ) {
> +    iResult = getaddrinfo(NULL, DEFAULT_PORT, &hints, &result);
> +    if (iResult != 0) {
>         printf("getaddrinfo failed: %d\n", iResult);
>         WSACleanup();
>         return 1;
>     }
>
> -    // Attempt to connect to an address until one succeeds
> -    for(ptr=result; ptr != NULL ;ptr=ptr->ai_next) {
> -
> -        // Create a SOCKET for connecting to server
> -        ConnectSocket = socket(ptr->ai_family, ptr->ai_socktype,
> -            ptr->ai_protocol);
> -        if (ConnectSocket == INVALID_SOCKET) {
> -            printf("Error at socket(): %ld\n", WSAGetLastError());
> -            freeaddrinfo(result);
> -            WSACleanup();
> -            return 1;
> -        }
> -
> -        // Connect to server.
> -        iResult = connect( ConnectSocket, ptr->ai_addr, (int)ptr->ai_addrlen);
> -        if (iResult == SOCKET_ERROR) {
> -            closesocket(ConnectSocket);
> -            ConnectSocket = INVALID_SOCKET;
> -            continue;
> -        }
> -        break;
> +    // Create a SOCKET for connecting to server
> +    ListenSocket = socket(result->ai_family, result->ai_socktype,
> +                          result->ai_protocol);
> +    if (ListenSocket == INVALID_SOCKET) {
> +        printf("socket failed: %ld\n", WSAGetLastError());
> +        freeaddrinfo(result);
> +        WSACleanup();
> +        return 1;
> +    }
> +
> +    // Setup the TCP listening socket
> +    iResult = bind(ListenSocket, result->ai_addr, (int)result->ai_addrlen);
> +    if (iResult == SOCKET_ERROR) {
> +        printf("bind failed: %d\n", WSAGetLastError());
> +        freeaddrinfo(result);
> +        closesocket(ListenSocket);
> +        WSACleanup();
> +        return 1;
>     }
>
>     freeaddrinfo(result);
>
> -    if (ConnectSocket == INVALID_SOCKET) {
> -        printf("Unable to connect to server!\n");
> +    iResult = listen(ListenSocket, SOMAXCONN);
> +    if (iResult == SOCKET_ERROR) {
> +        printf("listen failed: %d\n", WSAGetLastError());
> +        closesocket(ListenSocket);
>         WSACleanup();
>         return 1;
>     }
>
> -    // Send the ACK buffer
> -    iResult = send( ConnectSocket, sendbuf, (int)strlen(sendbuf), 0 );
> -    if (iResult == SOCKET_ERROR) {
> -        printf("send failed: %d\n", WSAGetLastError());
> -        closesocket(ConnectSocket);
> +    // Accept a client socket
> +    ClientSocket = accept(ListenSocket, NULL, NULL);
> +    if (ClientSocket == INVALID_SOCKET) {
> +        printf("accept failed: %d\n", WSAGetLastError());
> +        closesocket(ListenSocket);
>         WSACleanup();
>         return 1;
>     }
>
> -    printf("Bytes Sent: %ld\n", iResult);
> +    // No longer need the server socket
> +    closesocket(ListenSocket);
> +
> +    // Send the ack string to the client
> +    iSendResult = send(ClientSocket, sendbuf, sizeof(sendbuf), 0);
> +    if (iSendResult == SOCKET_ERROR) {
> +        printf("send failed: %d\n", WSAGetLastError());
> +        closesocket(ClientSocket);
> +        WSACleanup();
> +        return 1;
> +    }
> +    // Report the number of bytes sent
> +    printf("Bytes sent: %d\n", iSendResult);
>
> -    // shutdown the connection since no more data will be sent
> -    iResult = shutdown(ConnectSocket, SD_SEND);
> +    // Shutdown the connection since we're done
> +    iResult = shutdown(ClientSocket, SD_SEND);
>     if (iResult == SOCKET_ERROR) {
>         printf("shutdown failed: %d\n", WSAGetLastError());
> -        closesocket(ConnectSocket);
> +        closesocket(ClientSocket);
>         WSACleanup();
>         return 1;
>     }
>
> -    // cleanup
> -    closesocket(ConnectSocket);
> +    // Cleanup
> +    closesocket(ClientSocket);
>     WSACleanup();
>
>     return 0;
> diff --git a/client/tests/kvm/deps/finish.exe b/client/tests/kvm/deps/finish.exe
> index 5387780fd769fe574ef5c4cc93e57fece35d2132..59792973aea6e405d725371c077d032e2aa936b1 100755
> GIT binary patch
> delta 4604
> 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
> Zp}+ZaM4rB9rIgSZD&O-mJ|>#-{|gl$Ak_c>
>
> delta 4371
> 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
>
> diff --git a/client/tests/kvm/kvm_utils.py b/client/tests/kvm/kvm_utils.py
> index 4565dc1..9201b87 100644
> --- a/client/tests/kvm/kvm_utils.py
> +++ b/client/tests/kvm/kvm_utils.py
> @@ -635,7 +635,7 @@ def is_port_free(port):
>
>  def find_free_port(start_port, end_port):
>     """
> -    Return a free port in the range [start_port, end_port).
> +    Return a host free port in the range [start_port, end_port].
>
>     @param start_port: First port that will be checked.
>     @param end_port: Port immediately after the last one that will be checked.
> @@ -648,7 +648,7 @@ def find_free_port(start_port, end_port):
>
>  def find_free_ports(start_port, end_port, count):
>     """
> -    Return count free ports in the range [start_port, end_port).
> +    Return count of host free ports in the range [start_port, end_port].
>
>     @count: Initial number of ports known to be free in the range.
>     @param start_port: First port that will be checked.
> diff --git a/client/tests/kvm/scripts/unattended.py b/client/tests/kvm/scripts/unattended.py
> index 343f955..b02e495 100755
> --- a/client/tests/kvm/scripts/unattended.py
> +++ b/client/tests/kvm/scripts/unattended.py
> @@ -31,35 +31,34 @@ class UnattendedInstall(object):
>         self.deps_dir = os.path.join(kvm_test_dir, 'deps')
>         self.unattended_dir = os.path.join(kvm_test_dir, 'unattended')
>
> -        try:
> -            tftp_root = os.environ['KVM_TEST_tftp']
> +        tftp_root = os.environ.get('KVM_TEST_tftp', '')
> +        if tftp_root:
>             self.tftp_root = os.path.join(kvm_test_dir, tftp_root)
>             if not os.path.isdir(self.tftp_root):
>                 os.makedirs(self.tftp_root)
> -        except KeyError:
> -            self.tftp_root = ''
> -
> -        try:
> -            self.kernel_args = os.environ['KVM_TEST_kernel_args']
> -        except KeyError:
> -            self.kernel_args = ''
> -
> -        try:
> -            self.finish_program= os.environ['KVM_TEST_finish_program']
> -        except:
> -            self.finish_program = None
> -
> +        else:
> +            self.tftp_root = tftp_root
>
> -        cdrom_iso = os.environ['KVM_TEST_cdrom']
> -        self.unattended_file = os.environ['KVM_TEST_unattended_file']
> +        self.kernel_args = os.environ.get('KVM_TEST_kernel_args', '')
> +        self.finish_program= os.environ.get('KVM_TEST_finish_program', '')
> +        cdrom_iso = os.environ.get('KVM_TEST_cdrom')
> +        self.unattended_file = os.environ.get('KVM_TEST_unattended_file')
>
> -        self.qemu_img_bin = os.environ['KVM_TEST_qemu_img_binary']
> +        self.qemu_img_bin = os.environ.get('KVM_TEST_qemu_img_binary')
>         if not os.path.isabs(self.qemu_img_bin):
>             self.qemu_img_bin = os.path.join(kvm_test_dir, self.qemu_img_bin)
>         self.cdrom_iso = os.path.join(kvm_test_dir, cdrom_iso)
>         self.floppy_mount = tempfile.mkdtemp(prefix='floppy_', dir='/tmp')
>         self.cdrom_mount = tempfile.mkdtemp(prefix='cdrom_', dir='/tmp')
> -        self.floppy_img = os.path.join(images_dir, 'floppy.img')
> +        flopy_name = os.environ['KVM_TEST_floppy']
> +        self.floppy_img = os.path.join(kvm_test_dir, flopy_name)
> +        floppy_dir = os.path.dirname(self.floppy_img)
> +        if not os.path.isdir(floppy_dir):
> +            os.makedirs(floppy_dir)
> +
> +        self.pxe_dir = os.environ.get('KVM_TEST_pxe_dir', '')
> +        self.pxe_image = os.environ.get('KVM_TEST_pxe_image', '')
> +        self.pxe_initrd = os.environ.get('KVM_TEST_pxe_initrd', '')
>
>
>     def create_boot_floppy(self):
> @@ -94,9 +93,15 @@ class UnattendedInstall(object):
>                 setup_file_dest = os.path.join(self.floppy_mount, setup_file)
>                 shutil.copyfile(setup_file_path, setup_file_dest)
>             elif self.unattended_file.endswith('.ks'):
> +                # Red Hat kickstart install
>                 dest_fname = 'ks.cfg'
>             elif self.unattended_file.endswith('.xml'):
> -                dest_fname = "autounattend.xml"
> +                if  self.tftp_root is '':
> +                    # Windows unattended install
> +                    dest_fname = "autounattend.xml"
> +                else:
> +                    # SUSE autoyast install
> +                    dest_fname = "autoinst.xml"
>
>             dest = os.path.join(self.floppy_mount, dest_fname)
>
> @@ -166,21 +171,20 @@ class UnattendedInstall(object):
>                 raise SetupError('Could not mount CD image %s.' %
>                                  self.cdrom_iso)
>
> -            p = os.path.join('images', 'pxeboot')
> -            pxe_dir = os.path.join(self.cdrom_mount, p)
> -            pxe_image = os.path.join(pxe_dir, 'vmlinuz')
> -            pxe_initrd = os.path.join(pxe_dir, 'initrd.img')
> +            pxe_dir = os.path.join(self.cdrom_mount, self.pxe_dir)
> +            pxe_image = os.path.join(pxe_dir, self.pxe_image)
> +            pxe_initrd = os.path.join(pxe_dir, self.pxe_initrd)
>
>             if not os.path.isdir(pxe_dir):
>                 raise SetupError('The ISO image does not have a %s dir. The '
>                                  'script assumes that the cd has a %s dir '
>                                  'where to search for the vmlinuz image.' %
> -                                 (p, p))
> +                                 (self.pxe_dir, self.pxe_dir))
>
>             if not os.path.isfile(pxe_image) or not os.path.isfile(pxe_initrd):
>                 raise SetupError('The location %s is lacking either a vmlinuz '
>                                  'or a initrd.img file. Cannot find a PXE '
> -                                 'image to proceed.' % pxe_dir)
> +                                 'image to proceed.' % self.pxe_dir)
>
>             tftp_image = os.path.join(self.tftp_root, 'vmlinuz')
>             tftp_initrd = os.path.join(self.tftp_root, 'initrd.img')
> @@ -239,6 +243,9 @@ class UnattendedInstall(object):
>         print "    floppy_mount: " + str(self.floppy_mount)
>         print "    floppy_img: " + str(self.floppy_img)
>         print "    finish_program: " + str(self.finish_program)
> +        print "    pxe_dir: " + str(self.pxe_dir)
> +        print "    pxe_image: " + str(self.pxe_image)
> +        print "    pxe_initrd: " + str(self.pxe_initrd)
>
>         self.create_boot_floppy()
>         if self.tftp_root:
> diff --git a/client/tests/kvm/tests/unattended_install.py b/client/tests/kvm/tests/unattended_install.py
> index e3df72a..1ddb996 100644
> --- a/client/tests/kvm/tests/unattended_install.py
> +++ b/client/tests/kvm/tests/unattended_install.py
> @@ -13,34 +13,35 @@ def run_unattended_install(test, params, env):
>     @param params: Dictionary with the test parameters.
>     @param env: Dictionary with test environment.
>     """
> +    buf = 1024
>     vm = kvm_test_utils.get_living_vm(env, params.get("main_vm"))
>
> -    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
> -    server.bind(('', 12323))
> -    server.listen(1)
> +    port = vm.get_port(int(params.get("guest_port_unattended_install")))
> +    addr = ('localhost', port)
>
>     install_timeout = float(params.get("timeout", 3000))
>     logging.info("Starting unattended install watch process. "
>                  "Timeout set to %ds (%d min)", install_timeout,
>                  install_timeout/60)
>     start_time = time.time()
> -
> -    while True:
> -        server.settimeout(install_timeout)
> +    time_elapsed = 0
> +    while time_elapsed < install_timeout:
> +        client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
>         try:
> -            (client, addr) = server.accept()
> -        except socket.timeout:
> -            server.close()
> -            raise error.TestFail('Timeout elapsed while waiting for install to '
> -                                 'finish.')
> -        msg = client.recv(1024)
> -        logging.debug("Received '%s' from %s", msg, addr)
> -        if msg == 'done':
> -            end_time = time.time()
> -            time_elapsed = int(end_time - start_time)
> -            logging.info('Guest reported successful installation after %ds '
> -                         '(%d min)', time_elapsed, time_elapsed/60)
> -            server.close()
> -            break
> -        else:
> -            logging.error('Got invalid string from client: %s.' % msg)
> +            client.connect(addr)
> +            msg = client.recv(1024)
> +            if msg == 'done':
> +                break
> +        except socket.error:
> +            pass
> +        time.sleep(1)
> +        client.close()
> +        end_time = time.time()
> +        time_elapsed = int(end_time - start_time)
> +
> +    if time_elapsed < install_timeout:
> +        logging.info('Guest reported successful installation after %ds '
> +                     '(%d min)', time_elapsed, time_elapsed/60)
> +    else:
> +        raise error.TestFail('Timeout elapsed while waiting for install to '
> +                             'finish.')
> diff --git a/client/tests/kvm/tests_base.cfg.sample b/client/tests/kvm/tests_base.cfg.sample
> index beae786..ce3a553 100644
> --- a/client/tests/kvm/tests_base.cfg.sample
> +++ b/client/tests/kvm/tests_base.cfg.sample
> @@ -70,6 +70,8 @@ variants:
>         floppy = "images/floppy.img"
>         extra_params += " -boot d"
>         nic_mode = user
> +        redirs += " unattended_install"
> +        guest_port_unattended_install = 12323
>
>     - boot:         install setup unattended_install
>         type = boot
> @@ -337,6 +339,9 @@ variants:
>                 no setup
>                 shell_prompt = "^\[.*\][\#\$]\s*$"
>                 unattended_install:
> +                    pxe_dir = "images/pxeboot"
> +                    pxe_image = "vmlinuz"
> +                    pxe_initrd = "initrd.img"
>                     tftp = "images/tftpboot"
>                     extra_params += " -bootp /pxelinux.0 -boot n"
>                     kernel_args = "ks=floppy nicdelay=60"
> @@ -352,10 +357,12 @@ variants:
>                             steps = Fedora-8-i386.steps
>                         unattended_install:
>                             unattended_file = unattended/Fedora-8.ks
> +                            tftp = images/f8-32/tftpboot
> +                            floppy = images/f8-32/floppy.img
>
>                     - 8.64:
>                         no setup
> -                        image_name = fc8-64
> +                        image_name = f8-64
>                         cdrom = linux/Fedora-8-x86_64-DVD.iso
>                         md5sum = 2cb231a86709dec413425fd2f8bf5295
>                         md5sum_1m = 145f6414e19492649a56c89f0a45e719
> @@ -363,9 +370,11 @@ variants:
>                             steps = Fedora-8-64.steps
>                         unattended_install:
>                             unattended_file = unattended/Fedora-8.ks
> +                            tftp = images/f8-64/tftpboot
> +                            floppy = images/f8-64/floppy.img
>
>                     - 9.32:
> -                        image_name = fc9-32
> +                        image_name = f9-32
>                         cdrom = linux/Fedora-9-i386-DVD.iso
>                         md5sum = 72601f685ea8c808c303353d8bf4d307
>                         md5sum_1m = f24fa25689e5863f1b99984c6feb787f
> @@ -373,9 +382,11 @@ variants:
>                             steps = Fedora-9-i386.steps
>                         unattended_install:
>                             unattended_file = unattended/Fedora-9.ks
> +                            tftp = images/f9-32/tftpboot
> +                            floppy = images/f9-32/floppy.img
>
>                     - 9.64:
> -                        image_name = fc9-64
> +                        image_name = f9-64
>                         cdrom = linux/Fedora-9-x86_64-DVD.iso
>                         md5sum = 05b2ebeed273ec54d6f9ed3d61ea4c96
>                         md5sum_1m = 9822ab5097e37e8fe306ef2192727db4
> @@ -383,25 +394,31 @@ variants:
>                             steps = Fedora-9-64.steps
>                         unattended_install:
>                             unattended_file = unattended/Fedora-9.ks
> +                            tftp = images/f9-64/tftpboot
> +                            floppy = images/f9-64/floppy.img
>
>                     - 10.32:
> -                        image_name = fc10-32
> +                        image_name = f10-32
>                         cdrom = linux/Fedora-10-i386-DVD.iso
>                         md5sum = 27e581edb392728c4a07d00d3fc5ced0
>                         md5sum_1m = bd67c68bdf595e4ba7131ec702159181
>                         unattended_install:
>                             unattended_file = unattended/Fedora-10.ks
> +                            tftp = images/f10-32/tftpboot
> +                            floppy = images/f10-32/floppy.img
>
>                     - 10.64:
> -                        image_name = fc10-64
> +                        image_name = f10-64
>                         cdrom = linux/Fedora-10-x86_64-DVD.iso
>                         sha1sum = f1e5ae7db6a1ba227de7294c4112385922388648
>                         md5sum_1m = 732857cbf40c80c34683e874601d982c
>                         unattended_install:
>                             unattended_file = unattended/Fedora-10.ks
> +                            tftp = images/f10-64/tftpboot
> +                            floppy = images/f10-64/floppy.img
>
>                     - 11.32:
> -                        image_name = fc11-32
> +                        image_name = f11-32
>                         cdrom = linux/Fedora-11-i386-DVD.iso
>                         md5sum = e3b1e2d1ba42aa4705fa5f41771b3927
>                         md5sum_1m = dc8ddf90648c247339c721395aa49714
> @@ -409,30 +426,38 @@ variants:
>                             steps = Fedora-11-32.steps
>                         unattended_install:
>                             unattended_file = unattended/Fedora-11.ks
> +                            tftp = images/f11-32/tftpboot
> +                            floppy = images/f11-32/floppy.img
>
>                     - 11.64:
> -                        image_name = fc11-64
> +                        image_name = f11-64
>                         cdrom = linux/Fedora-11-x86_64-DVD.iso
>                         md5sum = 9d419844adeb93120215fe7505c9bce8
>                         md5sum_1m = 405ee05e2387a2e4328b008d5bcbdd1e
>                         unattended_install:
>                             unattended_file = unattended/Fedora-11.ks
> +                            tftp = images/f11-64/tftpboot
> +                            floppy = images/f11-64/floppy.img
>
>                     - 12.32:
> -                        image_name = fc12-32
> +                        image_name = f12-32
>                         cdrom = linux/Fedora-12-i386-DVD.iso
>                         md5sum = 2c4c1c0d09f2fbcfd8ee6a0c5542eeb2
>                         md5sum_1m = eee935d7f0cf2ef03f6ddce3a2a50050
>                         unattended_install:
>                             unattended_file = unattended/Fedora-12.ks
> +                            tftp = images/f12-32/tftpboot
> +                            floppy = images/f12-32/floppy.img
>
>                     - 12.64:
> -                        image_name = fc12-64
> +                        image_name = f12-64
>                         cdrom = linux/Fedora-12-x86_64-DVD.iso
>                         md5sum = 6dd31e292cc2eb1140544e9b1ba61c56
>                         md5sum_1m = 514efbd7698b55ff6768c8605438bfc5
>                         unattended_install:
>                             unattended_file = unattended/Fedora-12.ks
> +                            tftp = images/f12-64/tftpboot
> +                            floppy = images/f12-64/floppy.img
>
>             - DSL-4.2.5:
>                 no setup dbench bonnie linux_s3
> @@ -517,6 +542,9 @@ variants:
>                 block_hotplug:
>                     modprobe_module = acpiphp
>                 unattended_install:
> +                    pxe_dir = "images/pxeboot"
> +                    pxe_image = "vmlinuz"
> +                    pxe_initrd = "initrd.img"
>                     tftp = "images/tftpboot"
>                     extra_params += " -bootp /pxelinux.0 -boot n"
>                     kernel_args = "ks=floppy nicdelay=60"
> @@ -533,6 +561,8 @@ variants:
>                             steps=RHEL-3.9-i386.steps
>                         unattended_install:
>                             unattended_file = unattended/RHEL-3-series.ks
> +                            tftp = images/rhel39-32/tftpboot
> +                            floppy = images/rhel39-32/floppy.img
>
>                     - 3.9.x86_64:
>                         no setup autotest linux_s3
> @@ -545,6 +575,8 @@ variants:
>                             steps=RHEL-3.9-x86_64.steps
>                         unattended_install:
>                             unattended_file = unattended/RHEL-3-series.ks
> +                            tftp = images/rhel39-64/tftpboot
> +                            floppy = images/rhel39-64/floppy.img
>
>                     - 4.7.i386:
>                         no setup autotest
> @@ -556,6 +588,8 @@ variants:
>                             steps=RHEL-4.7-i386.steps
>                         unattended_install:
>                             unattended_file = unattended/RHEL-4-series.ks
> +                            tftp = images/rhel47-32/tftpboot
> +                            floppy = images/rhel47-32/floppy.img
>
>                     - 4.7.x86_64:
>                         no setup autotest
> @@ -567,6 +601,8 @@ variants:
>                             steps=RHEL-4.7-x86_64.steps
>                         unattended_install:
>                             unattended_file = unattended/RHEL-4-series.ks
> +                            tftp = images/rhel47-64/tftpboot
> +                            floppy = images/rhel47-64/floppy.img
>
>                     - 4.8.i386:
>                         no setup autotest
> @@ -576,6 +612,8 @@ variants:
>                         md5sum_1m = 969c197402b9058f28a278c1f807d15b
>                         unattended_install:
>                             unattended_file = unattended/RHEL-4-series.ks
> +                            tftp = images/rhel48-32/tftpboot
> +                            floppy = images/rhel48-32/floppy.img
>
>                     - 4.8.x86_64:
>                         no setup autotest
> @@ -585,6 +623,8 @@ variants:
>                         md5sum_1m = b11ac0ef7fd345ad712966972db63886
>                         unattended_install:
>                             unattended_file = unattended/RHEL-4-series.ks
> +                            tftp = images/rhel48-64/tftpboot
> +                            floppy = images/rhel48-64/floppy.img
>
>                     - 5.3.i386:
>                         no setup
> @@ -596,6 +636,8 @@ variants:
>                             steps=RHEL-5.3-i386.steps
>                         unattended_install:
>                             unattended_file = unattended/RHEL-5-series.ks
> +                            tftp = images/rhel53-32/tftpboot
> +                            floppy = images/rhel53-32/floppy.img
>
>                     - 5.3.x86_64:
>                         no setup
> @@ -607,6 +649,8 @@ variants:
>                             steps=RHEL-5.3-x86_64.steps
>                         unattended_install:
>                             unattended_file = unattended/RHEL-5-series.ks
> +                            tftp = images/rhel53-64/tftpboot
> +                            floppy = images/rhel53-64/floppy.img
>
>                     - 5.4.i386:
>                         no setup
> @@ -616,6 +660,8 @@ variants:
>                         md5sum_1m = 0dbeb8f58d213752d8c029e8601abfbb
>                         unattended_install:
>                             unattended_file = unattended/RHEL-5-series.ks
> +                            tftp = images/rhel54-32/tftpboot
> +                            floppy = images/rhel54-32/floppy.img
>
>                     - 5.4.x86_64:
>                         no setup
> @@ -625,6 +671,8 @@ variants:
>                         md5sum_1m = 3e74112003e88a966754849dbb8f5c3f
>                         unattended_install:
>                             unattended_file = unattended/RHEL-5-series.ks
> +                            tftp = images/rhel54-64/tftpboot
> +                            floppy = images/rhel54-64/floppy.img
>
>     # Windows section
>     - @Windows:
> @@ -728,6 +776,7 @@ variants:
>                             md5sum = 743450644b1d9fe97b3cf379e22dceb0
>                             md5sum_1m = b473bf75af2d1269fec8958cf0202bfd
>                             unattended_file = unattended/winxp32.sif
> +                            floppy = images/winXP-32/floppy.img
>
>                     - 64:
>                         image_name += -64
> @@ -744,6 +793,7 @@ variants:
>                             md5sum = 8d3f007ec9c2060cec8a50ee7d7dc512
>                             md5sum_1m = e812363ff427effc512b7801ee70e513
>                             unattended_file = unattended/winxp64.sif
> +                            floppy = images/winXP-64/floppy.img
>
>             - Win2003:
>                 image_name = win2003
> @@ -767,6 +817,7 @@ variants:
>                             md5sum = 03e921e9b4214773c21a39f5c3f42ef7
>                             md5sum_1m = 37c2fdec15ac4ec16aa10fdfdb338aa3
>                             unattended_file = unattended/win2003-32.sif
> +                            floppy = images/win2003-32/floppy.img
>
>                     - 64:
>                         image_name += -64
> @@ -783,6 +834,7 @@ variants:
>                             md5sum = 5703f87c9fd77d28c05ffadd3354dbbd
>                             md5sum_1m = 439393c384116aa09e08a0ad047dcea8
>                             unattended_file = unattended/win2003-64.sif
> +                            floppy = images/win2003-64/floppy.img
>
>             - WinVista:
>                 image_name = winvista
> @@ -803,6 +855,7 @@ variants:
>                             md5sum = 1008f323d5170c8e614e52ccb85c0491
>                             md5sum_1m = c724e9695da483bc0fd59e426eaefc72
>                             unattended_file = unattended/winvista-32-autounattend.xml
> +                            floppy = images/winvista-sp1-32/floppy.img
>
>                     - 64sp1:
>                         image_name += sp1-64
> @@ -818,6 +871,7 @@ variants:
>                             md5sum = 11e2010d857fffc47813295e6be6d58d
>                             md5sum_1m = 0947bcd5390546139e25f25217d6f165
>                             unattended_file = unattended/winvista-64-autounattend.xml
> +                            floppy = images/winvista-sp1-64/floppy.img
>
>                     - 32sp2:
>                         image_name += sp2-32
> @@ -828,6 +882,7 @@ variants:
>                             sha1sum = 25ad9a776503e6a583bec07879dbcc5dfd20cd6e
>                             sha1sum_1m = a2afa4cffdc1c362dbf9e62942337f4f875a22cf
>                             unattended_file = unattended/winvista-32-autounattend.xml
> +                            floppy = images/winvista-sp2-32/floppy.img
>
>                     - 64sp2:
>                         image_name += sp2-64
> @@ -838,6 +893,7 @@ variants:
>                             sha1sum = aaee3c04533899f9f8c4ae0c4250ef5fafbe29a3
>                             sha1sum_1m = 1fd21bd3ce2a4de8856c7b8fe6fdf80260f6d1c7
>                             unattended_file = unattended/winvista-64-autounattend.xml
> +                            floppy = images/winvista-sp2-64/floppy.img
>
>             - Win2008:
>                 image_name = win2008
> @@ -862,6 +918,7 @@ variants:
>                             md5sum=0bfca49f0164de0a8eba236ced47007d
>                             md5sum_1m=07d7f5006393f74dc76e6e2e943e2440
>                             unattended_file = unattended/win2008-32-autounattend.xml
> +                            floppy = images/win2008-sp1-32/floppy.img
>
>                     - 64sp1:
>                         image_name += sp1-64
> @@ -880,6 +937,7 @@ variants:
>                             md5sum=27c58cdb3d620f28c36333a5552f271c
>                             md5sum_1m=efdcc11d485a1ef9afa739cb8e0ca766
>                             unattended_file = unattended/win2008-64-autounattend.xml
> +                            floppy = images/win2008-sp1-64/floppy.img
>
>                     - 32sp2:
>                         image_name += sp2-32
> @@ -890,6 +948,7 @@ variants:
>                             sha1sum = 49d0d6917c1256fe81048d414fa473bbc76a8724
>                             sha1sum_1m = 9662ff7ed715faa00407e4befc484ea52a92a9fb
>                             unattended_file = unattended/win2008-32-autounattend.xml
> +                            floppy = images/win2008-sp2-32/floppy.img
>
>                     - 64sp2:
>                         image_name += sp2-64
> @@ -900,6 +959,7 @@ variants:
>                             sha1sum = 34c7d726c57b0f8b19ba3b40d1b4044c15fc2029
>                             sha1sum_1m = 8fe08b03e3531906855a60a78020ac9577dff5ba
>                             unattended_file = unattended/win2008-64-autounattend.xml
> +                            floppy = images/win2008-sp2-64/floppy.img
>
>                     - r2:
>                         image_name += -r2
> @@ -910,6 +970,7 @@ variants:
>                             sha1sum = ad855ea913aaec3f1d0e1833c1aef7a0de326b0a
>                             sha1sum_1m = 9194a3aabae25b36e5f73cad001314b2c8d07d14
>                             unattended_file = unattended/win2008-r2-autounattend.xml
> +                            floppy = images/win2008-r2-64/floppy.img
>
>             - Win7:
>                 image_name = win7
> @@ -927,6 +988,7 @@ variants:
>                             sha1sum = 5395dc4b38f7bdb1e005ff414deedfdb16dbf610
>                             sha1sum_1m = 9f9c3780aebeb28a9bf22188eed6bc15475dc9c5
>                             unattended_file = unattended/win7-32-autounattend.xml
> +                            floppy = images/win7-32/floppy.img
>
>                     - 64:
>                         image_name += -64
> @@ -945,6 +1007,7 @@ variants:
>                             sha1sum = 326327cc2ff9f05379f5058c41be6bc5e004baa7
>                             sha1sum_1m = 4a3903bd5157de54f0702e5263e0a683c5775515
>                             unattended_file = unattended/win7-64-autounattend.xml
> +                            floppy = images/win7-64/floppy.img
>
>
>     # Unix/BSD section
> diff --git a/client/tests/kvm/unattended/Fedora-10.ks b/client/tests/kvm/unattended/Fedora-10.ks
> index 41bb391..61e59d7 100644
> --- a/client/tests/kvm/unattended/Fedora-10.ks
> +++ b/client/tests/kvm/unattended/Fedora-10.ks
> @@ -28,10 +28,10 @@ os.system('dhclient')
>  os.system('chkconfig sshd on')
>  os.system('iptables -F')
>  os.system('echo 0 > /selinux/enforce')
> -port = 12323
> -buf = 1024
> -addr = ('10.0.2.2', port)
> -client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
> -client.connect(addr)
> -client.sendto('done', addr)
> +server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
> +server.bind(('', 12323))
> +server.listen(1)
> +(client, addr) = server.accept()
> +client.send("done")
>  client.close()
> +
> diff --git a/client/tests/kvm/unattended/Fedora-11.ks b/client/tests/kvm/unattended/Fedora-11.ks
> index 65e42c3..0be7d06 100644
> --- a/client/tests/kvm/unattended/Fedora-11.ks
> +++ b/client/tests/kvm/unattended/Fedora-11.ks
> @@ -28,11 +28,10 @@ os.system('dhclient')
>  os.system('chkconfig sshd on')
>  os.system('iptables -F')
>  os.system('echo 0 > /selinux/enforce')
> -port = 12323
> -buf = 1024
> -addr = ('10.0.2.2', port)
> -client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
> -client.connect(addr)
> -client.sendto('done', addr)
> +server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
> +server.bind(('', 12323))
> +server.listen(1)
> +(client, addr) = server.accept()
> +client.send("done")
>  client.close()
>  %end
> diff --git a/client/tests/kvm/unattended/Fedora-12.ks b/client/tests/kvm/unattended/Fedora-12.ks
> index 65e42c3..0be7d06 100644
> --- a/client/tests/kvm/unattended/Fedora-12.ks
> +++ b/client/tests/kvm/unattended/Fedora-12.ks
> @@ -28,11 +28,10 @@ os.system('dhclient')
>  os.system('chkconfig sshd on')
>  os.system('iptables -F')
>  os.system('echo 0 > /selinux/enforce')
> -port = 12323
> -buf = 1024
> -addr = ('10.0.2.2', port)
> -client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
> -client.connect(addr)
> -client.sendto('done', addr)
> +server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
> +server.bind(('', 12323))
> +server.listen(1)
> +(client, addr) = server.accept()
> +client.send("done")
>  client.close()
>  %end
> diff --git a/client/tests/kvm/unattended/Fedora-8.ks b/client/tests/kvm/unattended/Fedora-8.ks
> index 41bb391..f4a872d 100644
> --- a/client/tests/kvm/unattended/Fedora-8.ks
> +++ b/client/tests/kvm/unattended/Fedora-8.ks
> @@ -28,10 +28,9 @@ os.system('dhclient')
>  os.system('chkconfig sshd on')
>  os.system('iptables -F')
>  os.system('echo 0 > /selinux/enforce')
> -port = 12323
> -buf = 1024
> -addr = ('10.0.2.2', port)
> -client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
> -client.connect(addr)
> -client.sendto('done', addr)
> +server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
> +server.bind(('', 12323))
> +server.listen(1)
> +(client, addr) = server.accept()
> +client.send("done")
>  client.close()
> diff --git a/client/tests/kvm/unattended/Fedora-9.ks b/client/tests/kvm/unattended/Fedora-9.ks
> index 41bb391..f4a872d 100644
> --- a/client/tests/kvm/unattended/Fedora-9.ks
> +++ b/client/tests/kvm/unattended/Fedora-9.ks
> @@ -28,10 +28,9 @@ os.system('dhclient')
>  os.system('chkconfig sshd on')
>  os.system('iptables -F')
>  os.system('echo 0 > /selinux/enforce')
> -port = 12323
> -buf = 1024
> -addr = ('10.0.2.2', port)
> -client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
> -client.connect(addr)
> -client.sendto('done', addr)
> +server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
> +server.bind(('', 12323))
> +server.listen(1)
> +(client, addr) = server.accept()
> +client.send("done")
>  client.close()
> diff --git a/client/tests/kvm/unattended/RHEL-3-series.ks b/client/tests/kvm/unattended/RHEL-3-series.ks
> index 2fcc96e..ad748cb 100644
> --- a/client/tests/kvm/unattended/RHEL-3-series.ks
> +++ b/client/tests/kvm/unattended/RHEL-3-series.ks
> @@ -27,10 +27,10 @@ import socket, os
>  os.system('dhclient')
>  os.system('chkconfig sshd on')
>  os.system('iptables -F')
> -port = 12323
> -buf = 1024
> -addr = ('10.0.2.2', port)
> -client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
> -client.connect(addr)
> -client.sendto('done', addr)
> +os.system('echo 0 > /selinux/enforce')
> +server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
> +server.bind(('', 12323))
> +server.listen(1)
> +(client, addr) = server.accept()
> +client.send("done")
>  client.close()
> diff --git a/client/tests/kvm/unattended/RHEL-4-series.ks b/client/tests/kvm/unattended/RHEL-4-series.ks
> index 233c98f..ce4a430 100644
> --- a/client/tests/kvm/unattended/RHEL-4-series.ks
> +++ b/client/tests/kvm/unattended/RHEL-4-series.ks
> @@ -28,10 +28,9 @@ os.system('dhclient')
>  os.system('chkconfig sshd on')
>  os.system('iptables -F')
>  os.system('echo 0 > /selinux/enforce')
> -port = 12323
> -buf = 1024
> -addr = ('10.0.2.2', port)
> -client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
> -client.connect(addr)
> -client.sendto('done', addr)
> +server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
> +server.bind(('', 12323))
> +server.listen(1)
> +(client, addr) = server.accept()
> +client.send("done")
>  client.close()
> diff --git a/client/tests/kvm/unattended/RHEL-5-series.ks b/client/tests/kvm/unattended/RHEL-5-series.ks
> index 41bb391..f4a872d 100644
> --- a/client/tests/kvm/unattended/RHEL-5-series.ks
> +++ b/client/tests/kvm/unattended/RHEL-5-series.ks
> @@ -28,10 +28,9 @@ os.system('dhclient')
>  os.system('chkconfig sshd on')
>  os.system('iptables -F')
>  os.system('echo 0 > /selinux/enforce')
> -port = 12323
> -buf = 1024
> -addr = ('10.0.2.2', port)
> -client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
> -client.connect(addr)
> -client.sendto('done', addr)
> +server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
> +server.bind(('', 12323))
> +server.listen(1)
> +(client, addr) = server.accept()
> +client.send("done")
>  client.close()
> diff --git a/client/tests/kvm/unattended/win2003-32.sif b/client/tests/kvm/unattended/win2003-32.sif
> index 85d4694..f58b0b0 100644
> --- a/client/tests/kvm/unattended/win2003-32.sif
> +++ b/client/tests/kvm/unattended/win2003-32.sif
> @@ -61,4 +61,4 @@
>     Command2="cmd /c net start telnet"
>     Command3="cmd /c E:\setuprss.bat"
>     Command4="cmd /c netsh interface ip set address local dhcp"
> -    Command5="cmd /c ping 10.0.2.2 -n 20 && A:\finish.exe 10.0.2.2"
> +    Command5="cmd /c ping 10.0.2.2 -n 20 && A:\finish.exe"
> diff --git a/client/tests/kvm/unattended/win2003-64.sif b/client/tests/kvm/unattended/win2003-64.sif
> index 85d4694..f58b0b0 100644
> --- a/client/tests/kvm/unattended/win2003-64.sif
> +++ b/client/tests/kvm/unattended/win2003-64.sif
> @@ -61,4 +61,4 @@
>     Command2="cmd /c net start telnet"
>     Command3="cmd /c E:\setuprss.bat"
>     Command4="cmd /c netsh interface ip set address local dhcp"
> -    Command5="cmd /c ping 10.0.2.2 -n 20 && A:\finish.exe 10.0.2.2"
> +    Command5="cmd /c ping 10.0.2.2 -n 20 && A:\finish.exe"
> diff --git a/client/tests/kvm/unattended/win2008-32-autounattend.xml b/client/tests/kvm/unattended/win2008-32-autounattend.xml
> index e5f244b..c6fafac 100644
> --- a/client/tests/kvm/unattended/win2008-32-autounattend.xml
> +++ b/client/tests/kvm/unattended/win2008-32-autounattend.xml
> @@ -140,7 +140,7 @@
>                                </SynchronousCommand>
>                                <SynchronousCommand wcm:action="add">
>                                        <Order>7</Order>
> -                                       <CommandLine>%WINDIR%\System32\cmd /c ping 10.0.2.2 -n 20 &#38;&#38; A:\finish.exe 10.0.2.2</CommandLine>
> +                                       <CommandLine>%WINDIR%\System32\cmd /c ping 10.0.2.2 -n 20 &#38;&#38; A:\finish.exe</CommandLine>
>                                </SynchronousCommand>
>                        </FirstLogonCommands>
>                        <OOBE>
> diff --git a/client/tests/kvm/unattended/win2008-64-autounattend.xml b/client/tests/kvm/unattended/win2008-64-autounattend.xml
> index 68f6fcf..2520a7a 100644
> --- a/client/tests/kvm/unattended/win2008-64-autounattend.xml
> +++ b/client/tests/kvm/unattended/win2008-64-autounattend.xml
> @@ -149,7 +149,7 @@
>                                </SynchronousCommand>
>                                <SynchronousCommand wcm:action="add">
>                                        <Order>7</Order>
> -                                       <CommandLine>%WINDIR%\System32\cmd /c ping 10.0.2.2 -n 20 &#38;&#38; A:\finish.exe 10.0.2.2</CommandLine>
> +                                       <CommandLine>%WINDIR%\System32\cmd /c ping 10.0.2.2 -n 20 &#38;&#38; A:\finish.exe</CommandLine>
>                                </SynchronousCommand>
>                        </FirstLogonCommands>
>                        <OOBE>
> diff --git a/client/tests/kvm/unattended/win2008-r2-autounattend.xml b/client/tests/kvm/unattended/win2008-r2-autounattend.xml
> index 68f6fcf..2520a7a 100644
> --- a/client/tests/kvm/unattended/win2008-r2-autounattend.xml
> +++ b/client/tests/kvm/unattended/win2008-r2-autounattend.xml
> @@ -149,7 +149,7 @@
>                                </SynchronousCommand>
>                                <SynchronousCommand wcm:action="add">
>                                        <Order>7</Order>
> -                                       <CommandLine>%WINDIR%\System32\cmd /c ping 10.0.2.2 -n 20 &#38;&#38; A:\finish.exe 10.0.2.2</CommandLine>
> +                                       <CommandLine>%WINDIR%\System32\cmd /c ping 10.0.2.2 -n 20 &#38;&#38; A:\finish.exe</CommandLine>
>                                </SynchronousCommand>
>                        </FirstLogonCommands>
>                        <OOBE>
> diff --git a/client/tests/kvm/unattended/win7-32-autounattend.xml b/client/tests/kvm/unattended/win7-32-autounattend.xml
> index e858ce9..c37afb7 100644
> --- a/client/tests/kvm/unattended/win7-32-autounattend.xml
> +++ b/client/tests/kvm/unattended/win7-32-autounattend.xml
> @@ -146,7 +146,7 @@
>                                        <Order>6</Order>
>                                </SynchronousCommand>
>                                <SynchronousCommand wcm:action="add">
> -                                       <CommandLine>%WINDIR%\System32\cmd /c ping 10.0.2.2 -n 20 &#38;&#38; A:\finish.exe 10.0.2.2</CommandLine>
> +                                       <CommandLine>%WINDIR%\System32\cmd /c ping 10.0.2.2 -n 20 &#38;&#38; A:\finish.exe</CommandLine>
>                                        <Order>7</Order>
>                                </SynchronousCommand>
>                        </FirstLogonCommands>
> diff --git a/client/tests/kvm/unattended/win7-64-autounattend.xml b/client/tests/kvm/unattended/win7-64-autounattend.xml
> index 1bff3c9..ad047d0 100644
> --- a/client/tests/kvm/unattended/win7-64-autounattend.xml
> +++ b/client/tests/kvm/unattended/win7-64-autounattend.xml
> @@ -146,7 +146,7 @@
>                                        <Order>6</Order>
>                                </SynchronousCommand>
>                                <SynchronousCommand wcm:action="add">
> -                                       <CommandLine>%WINDIR%\System32\cmd /c ping 10.0.2.2 -n 20 &#38;&#38; A:\finish.exe 10.0.2.2</CommandLine>
> +                                       <CommandLine>%WINDIR%\System32\cmd /c ping 10.0.2.2 -n 20 &#38;&#38; A:\finish.exe</CommandLine>
>                                        <Order>7</Order>
>                                </SynchronousCommand>
>                        </FirstLogonCommands>
> diff --git a/client/tests/kvm/unattended/winvista-32-autounattend.xml b/client/tests/kvm/unattended/winvista-32-autounattend.xml
> index 443aec6..297c6e5 100644
> --- a/client/tests/kvm/unattended/winvista-32-autounattend.xml
> +++ b/client/tests/kvm/unattended/winvista-32-autounattend.xml
> @@ -147,7 +147,7 @@
>                                </SynchronousCommand>
>                                <SynchronousCommand wcm:action="add">
>                                        <Order>7</Order>
> -                                       <CommandLine>%WINDIR%\System32\cmd /c ping 10.0.2.2 -n 20 &#38;&#38; A:\finish.exe 10.0.2.2</CommandLine>
> +                                       <CommandLine>%WINDIR%\System32\cmd /c ping 10.0.2.2 -n 20 &#38;&#38; A:\finish.exe</CommandLine>
>                                </SynchronousCommand>
>                        </FirstLogonCommands>
>                </component>
> diff --git a/client/tests/kvm/unattended/winvista-64-autounattend.xml b/client/tests/kvm/unattended/winvista-64-autounattend.xml
> index ec35cbb..71eae87 100644
> --- a/client/tests/kvm/unattended/winvista-64-autounattend.xml
> +++ b/client/tests/kvm/unattended/winvista-64-autounattend.xml
> @@ -148,7 +148,7 @@
>                                </SynchronousCommand>
>                                <SynchronousCommand wcm:action="add">
>                                        <Order>7</Order>
> -                                       <CommandLine>%WINDIR%\System32\cmd /c ping 10.0.2.2 -n 20 &#38;&#38; A:\finish.exe 10.0.2.2</CommandLine>
> +                                       <CommandLine>%WINDIR%\System32\cmd /c ping 10.0.2.2 -n 20 &#38;&#38; A:\finish.exe</CommandLine>
>                                </SynchronousCommand>
>                        </FirstLogonCommands>
>                </component>
> diff --git a/client/tests/kvm/unattended/winxp32.sif b/client/tests/kvm/unattended/winxp32.sif
> index 4711a3d..7562846 100644
> --- a/client/tests/kvm/unattended/winxp32.sif
> +++ b/client/tests/kvm/unattended/winxp32.sif
> @@ -70,4 +70,4 @@
>  [GuiRunOnce]
>    Command0="cmd /c E:\setuprss.bat"
>    Command1="cmd /c netsh interface ip set address local dhcp"
> -   Command2="cmd /c ping 10.0.2.2 -n 20 && A:\finish.exe 10.0.2.2"
> +   Command2="cmd /c ping 10.0.2.2 -n 20 && A:\finish.exe"
> diff --git a/client/tests/kvm/unattended/winxp64.sif b/client/tests/kvm/unattended/winxp64.sif
> index 4711a3d..7562846 100644
> --- a/client/tests/kvm/unattended/winxp64.sif
> +++ b/client/tests/kvm/unattended/winxp64.sif
> @@ -70,4 +70,4 @@
>  [GuiRunOnce]
>    Command0="cmd /c E:\setuprss.bat"
>    Command1="cmd /c netsh interface ip set address local dhcp"
> -   Command2="cmd /c ping 10.0.2.2 -n 20 && A:\finish.exe 10.0.2.2"
> +   Command2="cmd /c ping 10.0.2.2 -n 20 && A:\finish.exe"
> --
> 1.6.6.1
>
> --
> To unsubscribe from this list: send the line "unsubscribe kvm" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>



-- 
Lucas
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux