Files
skyhook/init/lib/skyhook.rb
2009-12-10 20:45:56 +02:00

93 lines
1.9 KiB
Ruby

##
# Skyhook Services - Libraries
##
require "yaml"
require "fileutils"
require "lib/skyhook/utils"
require "lib/skyhook/utils/initd"
require "lib/skyhook/utils/monit"
require "lib/skyhook/utils/nginx"
require "lib/skyhook/utils/object_overloads"
require "lib/skyhook/utils/svn"
require "lib/skyhook/project"
require "lib/skyhook/projects"
require "lib/skyhook/action"
require "lib/skyhook/mode"
class Skyhook
@info = {}
class << self
attr_accessor :info
end
def self.start
save_status if !load_status
if !@info.nil? && (!@info.has_key?(:booted) || @info[:booted] != true)
save_status({:booted => true})
end
if !Nginx.restore_enabled
Nginx.ensite("projects")
Nginx.ensite("default")
Nginx.ensite("monit-status")
end
Projects.boot
Action.perms :ensure
puts "Starting Skyhook services."
Initd.monit :start
sleep 1
Monit.start :all
sleep 1
Projects.start
write_status(1)
end
def self.stop
puts "Stopping Skyhook services."
Projects.stop
Monit.stop :all
sleep 1
Initd.monit :stop
write_status(0)
end
def self.restart
puts "Restarting Skyhook services."
Projects.restart
Monit.restart :all
sleep 1
Initd.monit :restart
end
def self.status
if File.exist?($status_file)
puts "Skyhook services are running."
else
puts "Skyhook services are not running."
end
end
def self.method_missing(method, *args)
call = (args.size > 0) ? args.shift : nil
Action.send(method, call, *args)
end
def self.load_status
if File.exist?("#{$skyhook_root}/init/status.yml")
@info = YAML.load_file("#{$skyhook_root}/init/status.yml")
return true
end
return false
end
def self.save_status(input = {})
@info = @info.merge(input)
File.open("#{$skyhook_root}/init/status.yml", "w") do |f|
YAML.dump(@info, f)
end
end
end