Adding the ruby directory, and a simple script to restart Bamboo

git-svn-id: file:///humgen/gsa-scr1/gsa-engineering/svn_contents/trunk@2251 348d0f76-0448-11de-a6fe-93d51630548a
This commit is contained in:
aaron 2009-12-03 22:48:48 +00:00
parent ac3895c218
commit 3eea1ece7a
1 changed files with 96 additions and 0 deletions

View File

@ -0,0 +1,96 @@
#!/util/bin/ruby
# #########################################################
#
# Dec 3rd, 2009
# Aaron
#
# This script will restart Bamboo, if it's running; or if
# it's left a pid file without stopping the server
#
# It has two arguments:
# - the log file to store any results to (required)
# - DRYRUN, do not actually execute commands (optional)
# #########################################################
# require file utils, lets us change directory
require 'fileutils'
# get the time and date, and take off any endlines
td = `date`.chomp!
# what machine we have to run this on?
machine = "gsa2"
# check the command line arguments
if (ARGV.size < 1 || ARGV.size > 2)
log_file.puts "#{td}: restartBamboo.rb <logFileLocation> <DRYRUN>\n"
log_file.puts "#{td}: logFileLocation: where to put the output"
log_file.puts "#{td}: DRYRUN (optional): do not execute any Bamboo commands, only echo them\nexiting..."
log_file.close()
exit(1)
end
# bamboo location, shell script, and PID file
bamboo_location = "/humgen/gsa-scr1/gsa-engineering/bamboo/Bamboo"
bamboo_script = "bamboo.sh"
pid_file_loc = "bamboo.pid"
# where we want to log the results, taken from the command line
log_file = File.open(ARGV[0],"a")
if (`uname -n`.chomp! != machine)
log_file.puts "#{td}: You can only run this script on machine #{machine}...exiting!"
log_file.close()
exit(1)
end
echo = ""
# are we a dryrun?
if (ARGV[1] == "DRYRUN")
echo = "echo "
elsif (ARGV.size == 2)
log_file.puts "#{td}: The second parameter must be DRYRUN or nothing!"
log_file.close()
exit(1)
end
# first check if the bamboo dir exists
if (!File.exists?(bamboo_location))
log_file.puts "#{td}: Bamboo location: #{bamboo_location} does not exist"
endlog_file.close()
exit(1)
end
# we have to cd to the directory, since bamboo uses some relative paths (stinks!)
FileUtils.cd(bamboo_location)
# output our current location
currentDir = FileUtils.pwd()
log_file.puts "current dir = #{currentDir}"
# check to see if the bamboo location has a pid file
if (File.exists?(bamboo_location + File::SEPARATOR + "bamboo.pid"))
log_file.puts "#{td}: PID file exists! Is bamboo running with that PID..."
# get the pid
pid = `cat #{pid_file_loc}`.to_i
log_file.puts "#{td}: got a PID value of #{pid}"
# check for that pid
if (`ps --no-headers #{pid}` == "")
log_file.puts "#{td}: unable to find process #{pid}"
log_file.puts "#{td}: trying to remove pid file: #{pid_file_loc}"
FileUtils.rm(pid_file_loc)
else
log_file.puts "#{td}: found process #{pid}, attempting to shut down..."
shutdown_result = `#{echo}./#{bamboo_script} stop`
log_file.puts "#{td}: shutdown result:\n#{shutdown_result}"
end
end
# regardless of what happened above, restart the server
startup_result = `#{echo}./#{bamboo_script} start`
log_file.puts "#{td}: startup result:\n#{startup_result}"
# close the log file
log_file.close()