#!/usr/bin/expect
#
# $Id: autoPackager.sh 421 2007-04-05 15:46:55Z dhill $
#
# Remote command execution script to another server
set USERNAME root
set PASSWORD Calpont1
set RELEASE ""
set PKGSERVER srvdeb5
set OLD "n"
log_user 0

spawn -noecho /bin/bash

for {set i 0} {$i<[llength $argv]} {incr i} {
	set arg($i) [lindex $argv $i]
}

set i 0
while true {
	if { $i == [llength $argv] } { break }
	if { $arg($i) == "-h" } {
		send_user "\n"
		send_user "'autoPackager' generates a packages based on the set of RPMs\n"
		send_user "in the calweb/iterations branch.\n"
		send_user "It will place the packages in //calweb/shared/Iterations/Latest/packages\n"
		send_user "and in //calweb/shared/Iterations/'release'/packages when specified\n"
		send_user "\n"
		send_user "Usage: autoPackage -r 'release' -o\n"
		send_user "			release - Calpont release number\n"
		send_user "			-o - Build Old Calpont Packages\n"
		exit
	}
	if { $arg($i) == "-r" } {
		incr i
		set RELEASE $arg($i)
	}
	if { $arg($i) == "-o" } {
		set OLD "y"
	}
	incr i
}

if { $RELEASE == "" } {
    send_user "\nError: provide a release number with -r option\n"
    exit 1
}

set PKGCOMMAND "'/root/autoOAM/buildCalpontPackages.sh $RELEASE'"
if { $OLD == "n"} {
    set PKGCOMMAND "'/root/autoOAM/buildInfiniDBPackages.sh $RELEASE'"
}

set timeout 3700
# 
# send command to build calpont rpms
#
#get current date
exec date >/tmp/datesync.tmp
exec cat /tmp/datesync.tmp
set newtime [exec cat /tmp/datesync.tmp]

send_user "\nStart Time:  $newtime\n"

log_user 1

set timeout 900
# 
# send command to build calpont packages
#
if { $OLD == "n"} {
	send_user "\nGenerating 4.x INFINIDB Packages takes 15 minutes to complete, please wait...\n"
} else {
	send_user "\nGenerating 3.x CALPONT Packages takes 15 minutes to complete, please wait...\n"
}

log_user 0

send "ssh $USERNAME@$PKGSERVER $PKGCOMMAND\n"
expect {
	-re "authenticity" { send "yes\n" 
						expect {
							-re "word: " { send "$PASSWORD\n" } abort
							}
						}
	-re "service not known" { send_user "FAILED: Invalid Host\n" ; exit -1 }
	-re "Connection refused" { send_user "FAILED: Connection refused\n" ; exit -1 }

	-re "word: " { send "$PASSWORD\n" } abort
}
log_user 1
expect {
	-re "TIMEOUT"  { send_user "Calpont Packages Build Failed, timeout"  } abort
	timeout  { send_user "Calpont Packages Build Failed, timeout"  } abort
	-re "No such file" { send_user "$COMMAND file not found"  } abort
	-re "no rpm" { send_user "Calpont Packages Build Failed, check build log files"  } abort
	-re "Calpont Packages Build Successfully Completed" { send_user "Calpont Packages Successfully Completed" } abort
}

#get current date
exec date >/tmp/datesync.tmp
exec cat /tmp/datesync.tmp
set newtime [exec cat /tmp/datesync.tmp]

send_user "   $newtime\n"

file delete -force $RELEASE
send_user "\nBuild-Packaging successfully completed\n"
exit 0
