<pre-scripts config:type="list">
        <script>
          <filename>foo.sh</filename>
          <interpreter>shell</interpreter>
          <source>

<![CDATA[
#!/bin/sh

AWK=`find / -name awk | tail -1`
#old awk /mounts/instsys/bin/awk -f

cat >/tmp/bar.awk <<EOF
#!$AWK -f

BEGIN {
	xcatdport = "#TABLE:site:key=xcatiport:value#"
	xcatdhost = "#XCATVAR:XCATMASTER#"

	ns = "/inet/tcp/0/" xcatdhost "/" xcatiport

	print "xCAT_xcatd" |& ns

	while(1) {
		ns |& getline

		if(\$0 == "ready")
			print "installmonitor" |& ns
		if(\$0 == "done")
			break
	}

	close(ns)

	exit 0
}
EOF

if [ ! -c /dev/vcs ]; then
	mknod /dev/vcs c 7 0
fi
cat >/tmp/foo.awk <<EOF
#!$AWK -f

BEGIN {
	ns = "/inet/tcp/3001/0/0"

	while(1) {
		ns |& getline

#		if(\$1 == "sh") { #TODO: ENABLE IF DEBUG
#			sub(/^sh +/,"",\$0)
#			output = \$0
#			while((output | getline) > 0)
#				print \$0 |& ns
#			print "EOO" |& ns
#			close(output)
#		}

		if(\$1 == "screendump") {
			output = "chvt " \$2 ";cat /dev/vcs"
			while((output | getline) > 0)
				print \$0 |& ns
			close(output)
		}

		if(\$1 == "stat") {
		    if( system( "[ -f /mnt/var/log/YaST2/y2logRPM ]" )  == 0 ) {		
			while((getline < "/mnt/var/log/YaST2/y2logRPM") > 0) {
				line = \$0
			}
			close("/mnt/var/log/YaST2/y2logRPM")

			if(line ~ /\.rpm /) {
				sub(/\.[^\.]+\.rpm .*$/,"",line)
				sub(/^.* /,"",line)
			}
			else {
				line = "prep"
			}

			print ("installing " line) |& ns
		    }
         	    else {
			# The format of /var/log/zypp/history is documented at
			#     http://en.opensuse.org/Libzypp/Package_History

			lastrpm = "prep"

			oldFS = FS
			FS="|"

			while((getline < "/mnt/var/log/zypp/history") > 0) {
				if (\$0 !~ /#/ && \$2 == "install") {
					lastrpm = (\$3 "-" \$4)
				}
			}
			close("/mnt/var/log/zypp/history")

			FS = oldFS

			print ("installing " lastrpm) |& ns
                   }
               }

	       close(ns)
	}
}
EOF

chmod 755 /tmp/foo.awk
chmod 755 /tmp/bar.awk

/tmp/bar.awk &
/tmp/foo.awk >/tmp/foo.log 2>&1 &
shopt -s nullglob
for disk in /dev/vd*[^0-9];do
	if [ -z "$firstdirectdisk" ]; then firstdirectdisk=$disk; fi #remember first disk as a guess of medium resort
	eddname=$(/lib/udev/edd_id $disk 2> /dev/null)
	if [ ! -z "$eddname" -a "$eddname" = "int13_dev80" ]; then
		instdisk=$disk
		break
	fi
done
if [ -z "$instdisk" ]; then
	for disk in /dev/sd*[^0-9]; do
		eddname=$(/lib/udev/edd_id $disk 2> /dev/null)
		if [ ! -z "$eddname" -a "$eddname" = "int13_dev80" ]; then
			instdisk=$disk
			break
		fi
		currdriver=`udevadm info --attribute-walk --name $disk |grep DRIVERS|grep -v '""'|grep -v '"sd"'|head -n 1|sed -e 's/[^"]*"//' -e 's/"//'`
		case "$currdriver" in 
		"ata_piix4"|"PMC MaxRAID"|"ahci"|"megaraid_sas") #certainly direct
			if [ -z "$firstdirectdisk" ]; then firstdirectdisk=$disk; fi #remember first disk as a guess of medium resort
			;;
		"mptsas"|"mpt2sas") #*PROBABLY* not SAN, but SAS SAN is possible
			if [ -z "$probablyfirstdirectdisk" ]; then probablyfirstdirectdisk=$disk; fi #remember first disk as a guess of medium resort
			;;
		*)
			if [ -z "$firstdisk" ]; then firstdisk=$disk; fi #remember first disk as a guess of medium resort
			;;
		esac
	done
fi
if [ -z "$instdisk" ]; then
	if [ ! -z "$firstdirectdisk" ]; then 
		instdisk=$firstdirectdisk 
	elif [ ! -z "$probablyfirstdirectdisk" ]; then
		instdisk=$probablyfirstdirectdisk 
	elif [ ! -z "$firstdisk" ]; then
		instdisk=$firstdisk 
	fi
fi

if [ -d /sys/firmware/efi ]; then
	sed -e 's!<device>XCATPARTITIONHOOK</device>!<device>'$instdisk'</device><partitions config:type="list"><partition><filesystem config:type="symbol">vfat</filesystem><mount>/boot/efi</mount><size>128mb</size></partition><partition><mount>swap</mount><size>auto</size></partition><partition><mount>/</mount><size>auto</size></partition></partitions>!' /tmp/profile/autoinst.xml > /tmp/profile/modified.xml
else
	sed -e 's!<device>XCATPARTITIONHOOK</device>!<device>'$instdisk'</device>!' /tmp/profile/autoinst.xml > /tmp/profile/modified.xml
fi
]]>

          </source>
        </script>
      </pre-scripts>