[PATCH 1/2] KVM test: Parallel install of guest OS v2

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

 



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.

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             |   56 +-
 client/tests/kvm/tests/unattended_install.py       |   44 +-
 client/tests/kvm/tests_base.cfg.sample             |   66 ++-
 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/Sles11-64-autoinst.xml |  898 ++++++++++++++++++++
 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 +-
 26 files changed, 1121 insertions(+), 170 deletions(-)
 create mode 100644 client/tests/kvm/unattended/Sles11-64-autoinst.xml

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
zcmb7HeNa@_6~FJXux}A@D`3Enbd}YjvAS5GR7F?VEvo@t1g-TW8)O$*zC>A~$)KBL
zr7hi(!Q7^`iOpb=I-SPBR;I0;b`nNRHIt4tPCu-+kyuQhm9c9}6Eim1{?2=E_wmYK
zy)$p`dB6KRzjN-n_uYN(#1&!iiqQX!l$3vd=V-KAe9(UM+DY+<g+D876vl_%6&@2a
zKam)VjGN?JX^hDOyv$U%<S?KUlGDk0hPyV%2XPn8G1;7~*D80K!5)jrj{uY#C4S5_
zzv@xgy>snyClTjKHBR=b!gkqB(F$v?$u1XSL=o&&Fb84tjF^`&i^Nk?yG3s1k<_i?
zDl@;Hx?1>z=cZL}JdN}s7vr}-7mvp;Kt*7TT`<|Fp_92bHqAJO08BoBv7YN)>1Qz(
zzkU1Dc)VYJB#jTH*~LH_|5MsraZ?)qC~cJog1zs^M^Yi{9wYJvx2$%f&;dAZcQ{#O
zl@R)Dw89i+G!-PU7@+(!c%7w;ZZA*a&zQ59EJ~rGO1<t_<WP)-=0)8xjsFGWA4u|J
z{7v)h@CGI7c~OaTQJI?iH%J^&hv}}*Jqq`XKKC#>iKf2+GKh{bCZB>|WZaqvwm=W&
zrC|RyfpZlcHNzmRsCzW($)I1agx_$~Y3i-AOTBe=6D@;Z5zOdyk3|lR#k*F>Q2<*0
zO(gj$B;iL~kHR&{2hpnmEU-x0Y3)6y^tsTL$UW*FBbVul3*@Od@h+zvUJ69h?<Reh
zu74Zz$M)1*rzx%`nR+$aag1xJyrEL5JXpA}=JI0&)s})L^Ckc-SRV!ZV@jALl+;eC
z5;FCwei<w%(q5t-i6zNCg^YQ~kwY>mHv-U<2T1uac7Y~bt8h&+^{VigE)*_NN1>lV
z`V@}>Mcw0S*<>o)$3T>2o`@Wph<7cQ?*q`n4N*9&5>DaXQn+}i(JSHZJQ;OQXyo%m
z{wpd-^Fd^WQYl^oidV8!%jNF^(42lpPN(6dagQimlT5uDAy*q|)<&p5i;MLI?nlnE
zukP5@SO1@p_`)I_5dHn}g&wWnR#T}0t2Mx-^;KG5s`Xy2uhV*m);qO+Dep|byI>rN
zZYiVR-dnYuxxZx0$)a9UREi8s!ZjhiY@A1?Rk}LzoGkJn9{POG^-xw{(f8@Tu|Ga5
za@Q2OBXoU;hs%+RDK~!<k4Mg1cRaRhr0)q<c>RvpJJMGnM6-K3@_1%OtHq{8&*eO$
zXmQ|U92_RQH4Coa`!F7Vd!%1&bd-1zgBscVUdGeUXG$qg=Q)Qyv*KR@|8zzXUu!K1
zckXRy350Bo^}*JFf2D0<t3RFX4z~Ms1VC%BGZbhyK=lm`fsRRjV08xm$F2OyP@vNW
zI0RuLG<Ajidk;(&8oFW46P}-Gn_W=L*o2p{*Kj48AK22Gqw{C;x|yEE3AB7OV_sal
zadqH&3fHr^`f&~58su-y^!*>~>a07`Ik7Xir@g+FZ_ai+T+P(UF}6`D1!J37L+jqo
zfKn@dEZb&j&`QGi&$IV&M@|v<=14>SoLkn^7?v?Mv~kfw(MF3r-RE=FZQAUsT3=h|
z^RblIrIXmzLTXAktwd&<aArwUmhb@&maR=ah9|0&zh9TbFRirm%rZMqUz0Ap#n-v>
zgtPp_x?+B%yo6_z&lHB0yPeLGtO2OuIA<wrStxKY1nZ(Q_V`+la9OeZYf7@7n!>uO
zjJ*fesAAm&Yj6rn##l>M#}quK_*`>(g!_uMZ5<9~Gk2^h+E9u~XbA=V^`Uxuu>%ji
z0V(<+(lj6?-YFp@Gq;s@i&jOoy=aQ+(kZI1O;IgRsy4OPw*@e+a~eZUUF|K{V7iW0
zz+5wTRy-#Z@ZVPCivx^bu9(ATxXhx02l+FuHZo(bW))e$54%0Ona(HNYebuwFIzdA
zXSyUZw|%);WKt4=DFbm3GKcT2%*%Ql2fn~;Ok_TvudP1V&W8C*mH9*&u51=Z73S>5
zj{SkoKxi~cPAvH-ulKYFF@B?_l4q~?C{_a>UjHjt`>KoinGJ-I<#;q<4JNInRkVyW
z`lBi=qlL$+i+Dk`N0e0aBup!r-D0kayu8UH+Emj9vp_Xp^tOr)3m>fs@_jXJs@W_a
zrvlCwi|u^x=6n?O9T%phI*f1jh^4C8T<Z~?swu<tsAgkbtLRk~%eJ(sW;36)^%b+%
zq7;nZTRlrz8?fHn`kWZD@b<3^WJ&5M%1P}@=*Ic{ZN=ek1!o%mHQ=kY)mND>s2xts
z1n1X4G7OyG1G%4E0n&dTh{F&OPovW4ol2FQ0i+<TZDJM5*GPJ>RfJgSz)rZ;DID7*
zq#cL}G@bKJO-B!Qd<rtCAb9c6NpAoe#;v;TDBVjy=ue)WOf|)uKqSNL?*efe<|-na
z`v#p%$`6e?Rc9{D0{rn$l3os|&LF)G$T(aOL38tyf}tMWK&lL0-y)77p%;OS0o12)
z28aious+xG<c6l#;|~VJNB@D&!WEYdGy4D>TQa=Q=WlJrnNCe#jtNaiM=Z!Bo4ine
zZDtP<ggZUQB`{?}uwoiy&PmcPAf?IhG`fX2h6=R+xoFUN0*G4IITYU47HGpE!fb}3
zeVZ5W$Pb^S00#W0K%lRrt*+%cATh)Ke-}uH;+2@*4ItF?8vFxDDG(|Sa-dfQXJJXq
zkm!T$AVGQ3#xa9HjXE{_LogG6C@SKZ!YK!`%}}RWUbr(qtqFLCg>T>a@E7Sj?JO>R
zNA%#1zRD<dRrn<!Wa_gR<fnJ$hev>qVn}8B)Her~YpB~_z%iaScYs{QrAK^#yIey=
z3qE%lE}b)%5UhZnL$ODJCfB4=K_>5%Iw15M>2AA$xD3G#^4E9ehx>p}fT>UW6(FOA
zL{9;s22d-_FM#|Rce>XlAc?<HwR|^$cnuNn0iiDrbrZl~LKy2U8-x}qduwv)YiLiP
z>66){ArwdrwjGGoumXM{a}DA5YhHTNUzhMm(l?0?y`YiwU_Y6HybVOcT=ZqSN*sgE
zT_8nC#MiMu*dA(R1%?zw3#(&RgAmQZcnGclB4d(zigc7w)0bl#5I@#i<+Kis_<F=l
zpD)<f;Y%E3LzTP#E=*St^=;l+%9r_D_z(QWi`Ca%oOXEo2)5Pl3HWx`cLs2>X%flt
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..3c48fb3 100755
--- a/client/tests/kvm/scripts/unattended.py
+++ b/client/tests/kvm/scripts/unattended.py
@@ -31,35 +31,31 @@ 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.path.basename(os.environ['KVM_TEST_floppy'])
+        self.floppy_img = os.path.join(images_dir, flopy_name)
+
+        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 +90,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 +168,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 +240,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..ee587a8 100644
--- a/client/tests/kvm/tests/unattended_install.py
+++ b/client/tests/kvm/tests/unattended_install.py
@@ -13,34 +13,34 @@ 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
+        finally:
+            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..c76470d 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-32floppy.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-64floppy.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-32floppy.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-64floppy.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-32floppy.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-64floppy.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-32floppy.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-64floppy.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-32floppy.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-64floppy.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-32floppy.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-64floppy.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-32floppy.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-64floppy.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-32floppy.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-64floppy.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-32floppy.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-64floppy.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-32floppy.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-64floppy.img"
 
     # Windows section
     - @Windows:
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/Sles11-64-autoinst.xml b/client/tests/kvm/unattended/Sles11-64-autoinst.xml
new file mode 100644
index 0000000..93e5685
--- /dev/null
+++ b/client/tests/kvm/unattended/Sles11-64-autoinst.xml
@@ -0,0 +1,898 @@
+<?xml version="1.0"?>
+<!DOCTYPE profile>
+<profile xmlns="http://www.suse.com/1.0/yast2ns"; xmlns:config="http://www.suse.com/1.0/configns";>
+  <add-on/>
+  <bootloader>
+    <global>
+      <activate>true</activate>
+      <boot_boot>false</boot_boot>
+      <boot_extended>false</boot_extended>
+      <boot_mbr>false</boot_mbr>
+      <boot_root>true</boot_root>
+      <debug>false</debug>
+      <default>SUSE Linux Enterprise Server 11 - 2.6.27.19-5</default>
+      <generic_mbr>true</generic_mbr>
+      <hiddenmenu>false</hiddenmenu>
+      <lines_cache_id>2</lines_cache_id>
+      <timeout config:type="integer">8</timeout>
+      <trusted_grub>false</trusted_grub>
+    </global>
+    <initrd_modules config:type="list">
+      <initrd_module>
+        <module>processor</module>
+      </initrd_module>
+      <initrd_module>
+        <module>thermal</module>
+      </initrd_module>
+      <initrd_module>
+        <module>ata_piix</module>
+      </initrd_module>
+      <initrd_module>
+        <module>ata_generic</module>
+      </initrd_module>
+      <initrd_module>
+        <module>piix</module>
+      </initrd_module>
+      <initrd_module>
+        <module>ide_pci_generic</module>
+      </initrd_module>
+      <initrd_module>
+        <module>fan</module>
+      </initrd_module>
+      <initrd_module>
+        <module>jbd</module>
+      </initrd_module>
+      <initrd_module>
+        <module>ext3</module>
+      </initrd_module>
+      <initrd_module>
+        <module>edd</module>
+      </initrd_module>
+    </initrd_modules>
+    <loader_type>grub</loader_type>
+    <sections config:type="list"/>
+  </bootloader>
+  <ca_mgm>
+    <CAName>YaST_Default_CA</CAName>
+    <ca_commonName>YaST Default CA (linux-h1i4)</ca_commonName>
+    <country>US</country>
+    <password>ENTER PASSWORD HERE</password>
+    <server_commonName>linux-h1i4.site</server_commonName>
+    <server_email>postmaster@site</server_email>
+    <takeLocalServerName config:type="boolean">false</takeLocalServerName>
+  </ca_mgm>
+  <deploy_image>
+    <image_installation config:type="boolean">false</image_installation>
+  </deploy_image>
+  <firewall>
+    <FW_ALLOW_FW_BROADCAST_DMZ>no</FW_ALLOW_FW_BROADCAST_DMZ>
+    <FW_ALLOW_FW_BROADCAST_EXT>no</FW_ALLOW_FW_BROADCAST_EXT>
+    <FW_ALLOW_FW_BROADCAST_INT>no</FW_ALLOW_FW_BROADCAST_INT>
+    <FW_CONFIGURATIONS_EXT>sshd</FW_CONFIGURATIONS_EXT>
+    <FW_DEV_DMZ></FW_DEV_DMZ>
+    <FW_DEV_EXT>any</FW_DEV_EXT>
+    <FW_DEV_INT></FW_DEV_INT>
+    <FW_IGNORE_FW_BROADCAST_DMZ>no</FW_IGNORE_FW_BROADCAST_DMZ>
+    <FW_IGNORE_FW_BROADCAST_EXT>yes</FW_IGNORE_FW_BROADCAST_EXT>
+    <FW_IGNORE_FW_BROADCAST_INT>no</FW_IGNORE_FW_BROADCAST_INT>
+    <FW_IPSEC_TRUST>no</FW_IPSEC_TRUST>
+    <FW_LOAD_MODULES>nf_conntrack_netbios_ns</FW_LOAD_MODULES>
+    <FW_LOG_ACCEPT_ALL>no</FW_LOG_ACCEPT_ALL>
+    <FW_LOG_ACCEPT_CRIT>yes</FW_LOG_ACCEPT_CRIT>
+    <FW_LOG_DROP_ALL>no</FW_LOG_DROP_ALL>
+    <FW_LOG_DROP_CRIT>yes</FW_LOG_DROP_CRIT>
+    <FW_MASQUERADE>no</FW_MASQUERADE>
+    <FW_PROTECT_FROM_INT>no</FW_PROTECT_FROM_INT>
+    <FW_ROUTE>no</FW_ROUTE>
+    <enable_firewall config:type="boolean">false</enable_firewall>
+    <start_firewall config:type="boolean">false</start_firewall>
+  </firewall>
+  <general>
+    <ask-list config:type="list"/>
+    <mode>
+      <confirm config:type="boolean">false</confirm>
+    </mode>
+    <mouse>
+      <id>none</id>
+    </mouse>
+    <proposals config:type="list"/>
+    <signature-handling>
+      <accept_file_without_checksum config:type="boolean">true</accept_file_without_checksum>
+      <accept_non_trusted_gpg_key config:type="boolean">true</accept_non_trusted_gpg_key>
+      <accept_unknown_gpg_key config:type="boolean">true</accept_unknown_gpg_key>
+      <accept_unsigned_file config:type="boolean">true</accept_unsigned_file>
+      <accept_verification_failed config:type="boolean">false</accept_verification_failed>
+      <import_gpg_key config:type="boolean">true</import_gpg_key>
+    </signature-handling>
+  </general>
+  <groups config:type="list">
+    <group>
+      <gid>1000</gid>
+      <group_password>$1$9ibtMhyS$uY16P2nxSWgejk4Ffz/LB0</group_password>
+      <groupname>users</groupname>
+      <userlist></userlist>
+    </group>
+    <group>
+      <gid>19</gid>
+      <group_password>x</group_password>
+      <groupname>floppy</groupname>
+      <userlist></userlist>
+    </group>
+    <group>
+      <gid>1</gid>
+      <group_password>x</group_password>
+      <groupname>bin</groupname>
+      <userlist>daemon</userlist>
+    </group>
+    <group>
+      <gid>41</gid>
+      <group_password>x</group_password>
+      <groupname>xok</groupname>
+      <userlist></userlist>
+    </group>
+    <group>
+      <gid>65533</gid>
+      <group_password>x</group_password>
+      <groupname>nobody</groupname>
+      <userlist></userlist>
+    </group>
+    <group>
+      <gid>43</gid>
+      <group_password>x</group_password>
+      <groupname>modem</groupname>
+      <userlist></userlist>
+    </group>
+    <group>
+      <gid>5</gid>
+      <group_password>x</group_password>
+      <groupname>tty</groupname>
+      <userlist></userlist>
+    </group>
+    <group>
+      <gid>7</gid>
+      <group_password>x</group_password>
+      <groupname>lp</groupname>
+      <userlist></userlist>
+    </group>
+    <group>
+      <gid>104</gid>
+      <group_password>!</group_password>
+      <groupname>uuidd</groupname>
+      <userlist></userlist>
+    </group>
+    <group>
+      <gid>51</gid>
+      <group_password>!</group_password>
+      <groupname>postfix</groupname>
+      <userlist></userlist>
+    </group>
+    <group>
+      <gid>111</gid>
+      <group_password>!</group_password>
+      <groupname>gdm</groupname>
+      <userlist></userlist>
+    </group>
+    <group>
+      <gid>65534</gid>
+      <group_password>x</group_password>
+      <groupname>nogroup</groupname>
+      <userlist>nobody</userlist>
+    </group>
+    <group>
+      <gid>101</gid>
+      <group_password>!</group_password>
+      <groupname>messagebus</groupname>
+      <userlist></userlist>
+    </group>
+    <group>
+      <gid>59</gid>
+      <group_password>!</group_password>
+      <groupname>maildrop</groupname>
+      <userlist></userlist>
+    </group>
+    <group>
+      <gid>33</gid>
+      <group_password>x</group_password>
+      <groupname>video</groupname>
+      <userlist>linux</userlist>
+    </group>
+    <group>
+      <gid>3</gid>
+      <group_password>x</group_password>
+      <groupname>sys</groupname>
+      <userlist></userlist>
+    </group>
+    <group>
+      <gid>15</gid>
+      <group_password>x</group_password>
+      <groupname>shadow</groupname>
+      <userlist></userlist>
+    </group>
+    <group>
+      <gid>20</gid>
+      <group_password>x</group_password>
+      <groupname>cdrom</groupname>
+      <userlist></userlist>
+    </group>
+    <group>
+      <gid>21</gid>
+      <group_password>x</group_password>
+      <groupname>console</groupname>
+      <userlist></userlist>
+    </group>
+    <group>
+      <gid>42</gid>
+      <group_password>x</group_password>
+      <groupname>trusted</groupname>
+      <userlist></userlist>
+    </group>
+    <group>
+      <gid>102</gid>
+      <group_password>!</group_password>
+      <groupname>haldaemon</groupname>
+      <userlist></userlist>
+    </group>
+    <group>
+      <gid>16</gid>
+      <group_password>x</group_password>
+      <groupname>dialout</groupname>
+      <userlist>linux</userlist>
+    </group>
+    <group>
+      <gid>106</gid>
+      <group_password>!</group_password>
+      <groupname>polkituser</groupname>
+      <userlist></userlist>
+    </group>
+    <group>
+      <gid>10</gid>
+      <group_password>x</group_password>
+      <groupname>wheel</groupname>
+      <userlist></userlist>
+    </group>
+    <group>
+      <gid>107</gid>
+      <group_password>!</group_password>
+      <groupname>pulse</groupname>
+      <userlist></userlist>
+    </group>
+    <group>
+      <gid>8</gid>
+      <group_password>x</group_password>
+      <groupname>www</groupname>
+      <userlist></userlist>
+    </group>
+    <group>
+      <gid>40</gid>
+      <group_password>x</group_password>
+      <groupname>games</groupname>
+      <userlist></userlist>
+    </group>
+    <group>
+      <gid>6</gid>
+      <group_password>x</group_password>
+      <groupname>disk</groupname>
+      <userlist></userlist>
+    </group>
+    <group>
+      <gid>17</gid>
+      <group_password>x</group_password>
+      <groupname>audio</groupname>
+      <userlist>pulse</userlist>
+    </group>
+    <group>
+      <gid>110</gid>
+      <group_password>!</group_password>
+      <groupname>suse-ncc</groupname>
+      <userlist></userlist>
+    </group>
+    <group>
+      <gid>49</gid>
+      <group_password>x</group_password>
+      <groupname>ftp</groupname>
+      <userlist></userlist>
+    </group>
+    <group>
+      <gid>25</gid>
+      <group_password>!</group_password>
+      <groupname>at</groupname>
+      <userlist></userlist>
+    </group>
+    <group>
+      <gid>9</gid>
+      <group_password>x</group_password>
+      <groupname>kmem</groupname>
+      <userlist></userlist>
+    </group>
+    <group>
+      <gid>32</gid>
+      <group_password>x</group_password>
+      <groupname>public</groupname>
+      <userlist></userlist>
+    </group>
+    <group>
+      <gid>12</gid>
+      <group_password>x</group_password>
+      <groupname>mail</groupname>
+      <userlist></userlist>
+    </group>
+    <group>
+      <gid>0</gid>
+      <group_password>x</group_password>
+      <groupname>root</groupname>
+      <userlist></userlist>
+    </group>
+    <group>
+      <gid>2</gid>
+      <group_password>x</group_password>
+      <groupname>daemon</groupname>
+      <userlist></userlist>
+    </group>
+    <group>
+      <gid>103</gid>
+      <group_password>!</group_password>
+      <groupname>sfcb</groupname>
+      <userlist>root</userlist>
+    </group>
+    <group>
+      <gid>105</gid>
+      <group_password>!</group_password>
+      <groupname>ntp</groupname>
+      <userlist></userlist>
+    </group>
+    <group>
+      <gid>14</gid>
+      <group_password>x</group_password>
+      <groupname>uucp</groupname>
+      <userlist></userlist>
+    </group>
+    <group>
+      <gid>109</gid>
+      <group_password>!</group_password>
+      <groupname>pulse-access</groupname>
+      <userlist></userlist>
+    </group>
+    <group>
+      <gid>71</gid>
+      <group_password>!</group_password>
+      <groupname>ntadmin</groupname>
+      <userlist></userlist>
+    </group>
+    <group>
+      <gid>62</gid>
+      <group_password>x</group_password>
+      <groupname>man</groupname>
+      <userlist></userlist>
+    </group>
+    <group>
+      <gid>108</gid>
+      <group_password>!</group_password>
+      <groupname>pulse-rt</groupname>
+      <userlist></userlist>
+    </group>
+    <group>
+      <gid>22</gid>
+      <group_password>x</group_password>
+      <groupname>utmp</groupname>
+      <userlist></userlist>
+    </group>
+    <group>
+      <gid>13</gid>
+      <group_password>x</group_password>
+      <groupname>news</groupname>
+      <userlist></userlist>
+    </group>
+    <group>
+      <gid>65</gid>
+      <group_password>!</group_password>
+      <groupname>sshd</groupname>
+      <userlist></userlist>
+    </group>
+  </groups>
+  <host>
+    <hosts config:type="list">
+      <hosts_entry>
+        <host_address>127.0.0.1</host_address>
+        <names config:type="list">
+          <name>localhost</name>
+        </names>
+      </hosts_entry>
+      <hosts_entry>
+        <host_address>::1</host_address>
+        <names config:type="list">
+          <name>localhost ipv6-localhost ipv6-loopback</name>
+        </names>
+      </hosts_entry>
+      <hosts_entry>
+        <host_address>fe00::0</host_address>
+        <names config:type="list">
+          <name>ipv6-localnet</name>
+        </names>
+      </hosts_entry>
+      <hosts_entry>
+        <host_address>ff00::0</host_address>
+        <names config:type="list">
+          <name>ipv6-mcastprefix</name>
+        </names>
+      </hosts_entry>
+      <hosts_entry>
+        <host_address>ff02::1</host_address>
+        <names config:type="list">
+          <name>ipv6-allnodes</name>
+        </names>
+      </hosts_entry>
+      <hosts_entry>
+        <host_address>ff02::2</host_address>
+        <names config:type="list">
+          <name>ipv6-allrouters</name>
+        </names>
+      </hosts_entry>
+      <hosts_entry>
+        <host_address>ff02::3</host_address>
+        <names config:type="list">
+          <name>ipv6-allhosts</name>
+        </names>
+      </hosts_entry>
+    </hosts>
+  </host>
+  <iscsi-client>
+    <version>1.0</version>
+  </iscsi-client>
+  <keyboard>
+    <keymap>english-us</keymap>
+  </keyboard>
+  <language>
+    <language>en_US</language>
+    <languages>en_US</languages>
+  </language>
+  <ldap>
+    <base_config_dn></base_config_dn>
+    <bind_dn></bind_dn>
+    <create_ldap config:type="boolean">false</create_ldap>
+    <file_server config:type="boolean">false</file_server>
+    <ldap_domain>dc=example,dc=com</ldap_domain>
+    <ldap_server>127.0.0.1</ldap_server>
+    <ldap_tls config:type="boolean">true</ldap_tls>
+    <ldap_v2 config:type="boolean">false</ldap_v2>
+    <login_enabled config:type="boolean">true</login_enabled>
+    <member_attribute>member</member_attribute>
+    <nss_base_group></nss_base_group>
+    <nss_base_passwd></nss_base_passwd>
+    <nss_base_shadow></nss_base_shadow>
+    <pam_password>exop</pam_password>
+    <start_autofs config:type="boolean">false</start_autofs>
+    <start_ldap config:type="boolean">false</start_ldap>
+  </ldap>
+  <login_settings/>
+  <networking>
+    <dns>
+      <dhcp_hostname config:type="boolean">true</dhcp_hostname>
+      <resolv_conf_policy>auto</resolv_conf_policy>
+    </dns>
+    <interfaces config:type="list">
+      <interface>
+        <bootproto>dhcp</bootproto>
+        <device>eth0</device>
+        <startmode>auto</startmode>
+        <usercontrol>no</usercontrol>
+      </interface>
+    </interfaces>
+    <managed config:type="boolean">false</managed>
+    <routing>
+      <ip_forward config:type="boolean">false</ip_forward>
+    </routing>
+  </networking>
+  <nis>
+    <netconfig_policy>auto</netconfig_policy>
+    <nis_broadcast config:type="boolean">false</nis_broadcast>
+    <nis_broken_server config:type="boolean">false</nis_broken_server>
+    <nis_local_only config:type="boolean">false</nis_local_only>
+    <start_autofs config:type="boolean">false</start_autofs>
+    <start_nis config:type="boolean">false</start_nis>
+  </nis>
+  <partitioning config:type="list">
+    <drive>
+      <initialize config:type="boolean">true</initialize>
+      <partitions config:type="list"/>
+      <pesize></pesize>
+      <type config:type="symbol">CT_DISK</type>
+      <use>all</use>
+    </drive>
+  </partitioning>
+  <proxy>
+    <enabled config:type="boolean">false</enabled>
+    <ftp_proxy></ftp_proxy>
+    <http_proxy></http_proxy>
+    <https_proxy></https_proxy>
+    <no_proxy>localhost, 127.0.0.1</no_proxy>
+    <proxy_password></proxy_password>
+    <proxy_user></proxy_user>
+  </proxy>
+  <report>
+    <errors>
+      <log config:type="boolean">true</log>
+      <show config:type="boolean">true</show>
+      <timeout config:type="integer">10</timeout>
+    </errors>
+    <messages>
+      <log config:type="boolean">true</log>
+      <show config:type="boolean">true</show>
+      <timeout config:type="integer">10</timeout>
+    </messages>
+    <warnings>
+      <log config:type="boolean">true</log>
+      <show config:type="boolean">true</show>
+      <timeout config:type="integer">10</timeout>
+    </warnings>
+    <yesno_messages>
+      <log config:type="boolean">true</log>
+      <show config:type="boolean">true</show>
+      <timeout config:type="integer">10</timeout>
+    </yesno_messages>
+  </report>
+  <runlevel>
+    <default>3</default>
+  </runlevel>
+  <scripts>
+    <post-scripts config:type="list">
+      <script>
+        <debug config:type="boolean">true</debug>
+        <feedback config:type="boolean">false</feedback>
+        <filename>server</filename>
+        <interpreter>python</interpreter>
+        <location></location>
+        <network_needed config:type="boolean">true</network_needed>
+        <source><![CDATA[import socket, os
+os.system('dhclient')
+os.system('iptables -F')
+server=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+server.bind(('',12323))
+server.listen(1)
+(client, addr) = server.accept()
+client.send("done")
+client.close()
+]]></source>
+      </script>
+    </post-scripts>
+  </scripts>
+  <software>
+    <packages config:type="list">
+      <package>dhcp-client</package>
+    </packages>
+    <patterns config:type="list">
+      <pattern>Basis-Devel</pattern>
+      <pattern>base</pattern>
+      <pattern>laptop</pattern>
+      <pattern>Minimal</pattern>
+    </patterns>
+  </software>
+  <timezone>
+    <hwclock>UTC</hwclock>
+    <timezone>America/New_York</timezone>
+  </timezone>
+  <user_defaults>
+    <group>100</group>
+    <groups>video,dialout</groups>
+    <home>/home</home>
+    <inactive>-1</inactive>
+    <shell>/bin/bash</shell>
+    <skel>/etc/skel</skel>
+  </user_defaults>
+  <users config:type="list">
+    <user>
+      <encrypted config:type="boolean">true</encrypted>
+      <fullname>linux</fullname>
+      <gid>100</gid>
+      <home>/home/linux</home>
+      <password_settings>
+        <max>99999</max>
+        <min>0</min>
+        <warn>7</warn>
+      </password_settings>
+      <shell>/bin/bash</shell>
+      <uid>1000</uid>
+      <user_password>$2a$05$FAAcDkjOVQxuDKvppCzcROelTVQeDSr9FIKSwP02wrg7SBulFkeXK</user_password>
+      <username>linux</username>
+    </user>
+    <user>
+      <encrypted config:type="boolean">true</encrypted>
+      <fullname>Games account</fullname>
+      <gid>100</gid>
+      <home>/var/games</home>
+      <shell>/bin/bash</shell>
+      <uid>12</uid>
+      <user_password>*</user_password>
+      <username>games</username>
+    </user>
+    <user>
+      <encrypted config:type="boolean">true</encrypted>
+      <fullname>bin</fullname>
+      <gid>1</gid>
+      <home>/bin</home>
+      <shell>/bin/bash</shell>
+      <uid>1</uid>
+      <user_password>*</user_password>
+      <username>bin</username>
+    </user>
+    <user>
+      <encrypted config:type="boolean">true</encrypted>
+      <fullname>nobody</fullname>
+      <gid>65533</gid>
+      <home>/var/lib/nobody</home>
+      <shell>/bin/bash</shell>
+      <uid>65534</uid>
+      <user_password>*</user_password>
+      <username>nobody</username>
+    </user>
+    <user>
+      <encrypted config:type="boolean">true</encrypted>
+      <fullname>Printing daemon</fullname>
+      <gid>7</gid>
+      <home>/var/spool/lpd</home>
+      <shell>/bin/bash</shell>
+      <uid>4</uid>
+      <user_password>*</user_password>
+      <username>lp</username>
+    </user>
+    <user>
+      <encrypted config:type="boolean">true</encrypted>
+      <fullname>User for uuidd</fullname>
+      <gid>104</gid>
+      <home>/var/run/uuidd</home>
+      <password_settings>
+        <max>99999</max>
+        <min>0</min>
+        <warn>7</warn>
+      </password_settings>
+      <shell>/bin/false</shell>
+      <uid>102</uid>
+      <user_password>*</user_password>
+      <username>uuidd</username>
+    </user>
+    <user>
+      <encrypted config:type="boolean">true</encrypted>
+      <fullname>Postfix Daemon</fullname>
+      <gid>51</gid>
+      <home>/var/spool/postfix</home>
+      <password_settings>
+        <max>99999</max>
+        <min>0</min>
+        <warn>7</warn>
+      </password_settings>
+      <shell>/bin/false</shell>
+      <uid>51</uid>
+      <user_password>*</user_password>
+      <username>postfix</username>
+    </user>
+    <user>
+      <encrypted config:type="boolean">true</encrypted>
+      <fullname>Novell Customer Center User</fullname>
+      <gid>110</gid>
+      <home>/var/lib/YaST2/suse-ncc-fakehome</home>
+      <password_settings>
+        <max>99999</max>
+        <min>0</min>
+        <warn>7</warn>
+      </password_settings>
+      <shell>/bin/bash</shell>
+      <uid>105</uid>
+      <user_password>*</user_password>
+      <username>suse-ncc</username>
+    </user>
+    <user>
+      <encrypted config:type="boolean">true</encrypted>
+      <fullname>FTP account</fullname>
+      <gid>49</gid>
+      <home>/srv/ftp</home>
+      <shell>/bin/bash</shell>
+      <uid>40</uid>
+      <user_password>*</user_password>
+      <username>ftp</username>
+    </user>
+    <user>
+      <encrypted config:type="boolean">true</encrypted>
+      <fullname>Gnome Display Manager daemon</fullname>
+      <gid>111</gid>
+      <home>/var/lib/gdm</home>
+      <password_settings>
+        <max>99999</max>
+        <min>0</min>
+        <warn>7</warn>
+      </password_settings>
+      <shell>/bin/false</shell>
+      <uid>106</uid>
+      <user_password>*</user_password>
+      <username>gdm</username>
+    </user>
+    <user>
+      <encrypted config:type="boolean">true</encrypted>
+      <fullname>Batch jobs daemon</fullname>
+      <gid>25</gid>
+      <home>/var/spool/atjobs</home>
+      <password_settings>
+        <max>99999</max>
+        <min>0</min>
+        <warn>7</warn>
+      </password_settings>
+      <shell>/bin/bash</shell>
+      <uid>25</uid>
+      <user_password>*</user_password>
+      <username>at</username>
+    </user>
+    <user>
+      <encrypted config:type="boolean">true</encrypted>
+      <fullname>root</fullname>
+      <gid>0</gid>
+      <home>/root</home>
+      <shell>/bin/bash</shell>
+      <uid>0</uid>
+      <user_password>$2a$05$6EDh/ymzfFidFVZ9GxPpR.QLaswYgGBxlmCoy0WUo42stJDGcPcxK</user_password>
+      <username>root</username>
+    </user>
+    <user>
+      <encrypted config:type="boolean">true</encrypted>
+      <fullname>Mailer daemon</fullname>
+      <gid>12</gid>
+      <home>/var/spool/clientmqueue</home>
+      <shell>/bin/false</shell>
+      <uid>8</uid>
+      <user_password>*</user_password>
+      <username>mail</username>
+    </user>
+    <user>
+      <encrypted config:type="boolean">true</encrypted>
+      <fullname>Daemon</fullname>
+      <gid>2</gid>
+      <home>/sbin</home>
+      <shell>/bin/bash</shell>
+      <uid>2</uid>
+      <user_password>*</user_password>
+      <username>daemon</username>
+    </user>
+    <user>
+      <encrypted config:type="boolean">true</encrypted>
+      <fullname>NTP daemon</fullname>
+      <gid>105</gid>
+      <home>/var/lib/ntp</home>
+      <password_settings>
+        <max>99999</max>
+        <min>0</min>
+        <warn>7</warn>
+      </password_settings>
+      <shell>/bin/false</shell>
+      <uid>74</uid>
+      <user_password>*</user_password>
+      <username>ntp</username>
+    </user>
+    <user>
+      <encrypted config:type="boolean">true</encrypted>
+      <fullname>Unix-to-Unix CoPy system</fullname>
+      <gid>14</gid>
+      <home>/etc/uucp</home>
+      <shell>/bin/bash</shell>
+      <uid>10</uid>
+      <user_password>*</user_password>
+      <username>uucp</username>
+    </user>
+    <user>
+      <encrypted config:type="boolean">true</encrypted>
+      <fullname>User for D-Bus</fullname>
+      <gid>101</gid>
+      <home>/var/run/dbus</home>
+      <password_settings>
+        <min>0</min>
+        <warn>7</warn>
+      </password_settings>
+      <shell>/bin/false</shell>
+      <uid>100</uid>
+      <user_password>*</user_password>
+      <username>messagebus</username>
+    </user>
+    <user>
+      <encrypted config:type="boolean">true</encrypted>
+      <fullname>User for haldaemon</fullname>
+      <gid>102</gid>
+      <home>/var/run/hald</home>
+      <password_settings>
+        <min>0</min>
+        <warn>7</warn>
+      </password_settings>
+      <shell>/bin/false</shell>
+      <uid>101</uid>
+      <user_password>*</user_password>
+      <username>haldaemon</username>
+    </user>
+    <user>
+      <encrypted config:type="boolean">true</encrypted>
+      <fullname>WWW daemon apache</fullname>
+      <gid>8</gid>
+      <home>/var/lib/wwwrun</home>
+      <shell>/bin/false</shell>
+      <uid>30</uid>
+      <user_password>*</user_password>
+      <username>wwwrun</username>
+    </user>
+    <user>
+      <encrypted config:type="boolean">true</encrypted>
+      <fullname>Manual pages viewer</fullname>
+      <gid>62</gid>
+      <home>/var/cache/man</home>
+      <shell>/bin/bash</shell>
+      <uid>13</uid>
+      <user_password>*</user_password>
+      <username>man</username>
+    </user>
+    <user>
+      <encrypted config:type="boolean">true</encrypted>
+      <fullname>PolicyKit</fullname>
+      <gid>106</gid>
+      <home>/var/run/PolicyKit</home>
+      <password_settings>
+        <max>99999</max>
+        <min>0</min>
+        <warn>7</warn>
+      </password_settings>
+      <shell>/bin/false</shell>
+      <uid>103</uid>
+      <user_password>*</user_password>
+      <username>polkituser</username>
+    </user>
+    <user>
+      <encrypted config:type="boolean">true</encrypted>
+      <fullname>News system</fullname>
+      <gid>13</gid>
+      <home>/etc/news</home>
+      <shell>/bin/bash</shell>
+      <uid>9</uid>
+      <user_password>*</user_password>
+      <username>news</username>
+    </user>
+    <user>
+      <fullname>SSH daemon</fullname>
+      <gid>65</gid>
+      <home>/var/lib/sshd</home>
+      <password_settings>
+        <flag></flag>
+        <inact>-1</inact>
+        <max>99999</max>
+        <min>0</min>
+        <warn>7</warn>
+      </password_settings>
+      <shell>/bin/false</shell>
+      <uid>71</uid>
+      <username>sshd</username>
+    </user>
+    <user>
+      <encrypted config:type="boolean">true</encrypted>
+      <fullname>PulseAudio daemon</fullname>
+      <gid>107</gid>
+      <home>/var/lib/pulseaudio</home>
+      <password_settings>
+        <max>99999</max>
+        <min>0</min>
+        <warn>7</warn>
+      </password_settings>
+      <shell>/sbin/nologin</shell>
+      <uid>104</uid>
+      <user_password>*</user_password>
+      <username>pulse</username>
+    </user>
+  </users>
+  <x11>
+    <color_depth config:type="integer">16</color_depth>
+    <display_manager>gdm</display_manager>
+    <enable_3d config:type="boolean">false</enable_3d>
+    <monitor>
+      <display>
+        <max_hsync config:type="integer">38</max_hsync>
+        <max_vsync config:type="integer">60</max_vsync>
+        <min_hsync config:type="integer">31</min_hsync>
+        <min_vsync config:type="integer">50</min_vsync>
+      </display>
+      <monitor_device>800X600@60HZ</monitor_device>
+      <monitor_vendor>--&gt; VESA</monitor_vendor>
+    </monitor>
+    <resolution>800x600 (SVGA)</resolution>
+    <window_manager>gnome</window_manager>
+  </x11>
+</profile>
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

[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