#!/usr/bin/env ruby $:.unshift(File.join(File.dirname(__FILE__), "..", "lib")) require "poolparty" require "poolpartycl" o = PoolParty::Optioner.new(ARGV) do |opts, optioner| opts.on('-n name', '--name name', 'Host name') { |h| optioner.hostname h } opts.on('-l', '--no-shell', 'No shell') {optioner.noshell true} end available_monitors = PoolParty::Monitors.available_monitors @hostname = o.hostname ? o.hostname : `hostname`.chomp @hostname = "node0" if @hostname == "master" # Quick fix to make sure we have a node running on the master as well o.loaded_clouds.each do |cloud| with_cloud(cloud, {:hostname => @hostname}) do # TODO: Change this to be app specfic already_running = %x[ps aux | grep beam | grep -v grep | grep node] if already_running.chomp.empty? boot_file = "#{Messenger.append_dir}/pm_node_rel-0.1" Kernel.system ". /etc/profile && server-build-messenger" unless ::File.file?("#{boot_file}.boot") || testing command = Messenger.erl_command(hostname, "-setcookie #{generate_unique_cookie_string} -boot #{boot_file} #{noshell ? "" : "-noshell -detached -heart"} -- #{available_monitors.join(" ")}") vputs "Running #{command}" Kernel.system "export HOME=/root && #{command}" unless testing end end end