lib/gorgon/originator.rb in gorgon-0.6.5 vs lib/gorgon/originator.rb in gorgon-0.7.0.rc1
- old
+ new
@@ -2,11 +2,11 @@
require 'gorgon/configuration'
require 'gorgon/job_state'
require 'gorgon/progress_bar_view'
require 'gorgon/originator_logger'
require 'gorgon/failures_printer'
-require 'gorgon/rsync_daemon'
+require 'gorgon/source_tree_syncer'
require 'gorgon/shutdown_manager.rb'
require 'awesome_print'
require 'etc'
require 'socket'
@@ -14,11 +14,10 @@
class Originator
include Configuration
def initialize
@configuration = nil
- @rsync_daemon = RsyncDaemon.new
end
def originate
begin
Signal.trap("INT") { ctrl_c }
@@ -37,12 +36,11 @@
end
end
def cancel_job
ShutdownManager.new(protocol: @protocol,
- job_state: @job_state,
- rsync_daemon: @rsync_daemon).cancel_job
+ job_state: @job_state).cancel_job
end
def ctrl_c
puts "\nCtrl-C received! Just wait a moment while I clean up..."
cancel_job
@@ -54,14 +52,11 @@
if files.empty?
$stderr.puts "There are no files to test! Quitting."
exit 2
end
- if !@rsync_daemon.start
- @logger.log_error "rsync daemon didn't start!"
- exit 1
- end
+ push_source_code
@protocol = OriginatorProtocol.new @logger
EventMachine.run do
@logger.log "Connecting..."
@@ -79,15 +74,28 @@
handle_reply(payload)
end
end
end
+ def push_source_code
+ syncer = SourceTreeSyncer.new(source_tree_path)
+ syncer.exclude = configuration[:sync_exclude]
+ syncer.push
+ if syncer.success?
+ @logger.log "Command '#{syncer.sys_command}' completed successfully."
+ else
+ $stderr.puts "Command '#{syncer.sys_command}' failed!"
+ $stderr.puts "Stdout:\n#{syncer.output}"
+ $stderr.puts "Stderr:\n#{syncer.errors}"
+ exit 1
+ end
+ end
+
def cleanup_if_job_complete
if @job_state.is_job_complete?
@logger.log "Job is done"
@protocol.disconnect
- @rsync_daemon.stop
end
end
def handle_reply(payload)
payload = Yajl::Parser.new(:symbolize_keys => true).parse(payload)
@@ -135,25 +143,27 @@
end
def job_definition
job_config = configuration[:job]
if !job_config.has_key?(:source_tree_path)
- job_config[:source_tree_path] = "rsync://#{local_ip_addr}:43434/src"
+ job_config[:source_tree_path] = source_tree_path
end
JobDefinition.new(configuration[:job])
end
private
- def local_ip_addr
- orig, Socket.do_not_reverse_lookup = Socket.do_not_reverse_lookup, true # turn off reverse DNS resolution temporarily
+ def source_tree_path
+ hostname = Socket.gethostname
+ source_code_root = File.basename(Dir.pwd)
- UDPSocket.open do |s|
- s.connect '64.59.144.16', 1
- s.addr.last
- end
- ensure
- Socket.do_not_reverse_lookup = orig
+ "rsync://#{file_server_host}:43434/src/#{hostname}_#{source_code_root}"
+ end
+
+ def file_server_host
+ file_server = configuration[:file_server]
+ raise 'Please, provide file_server configuration.' if file_server.nil?
+ configuration[:file_server][:host]
end
def configuration
@configuration ||= load_configuration_from_file("gorgon.json")
end