Sha256: 7433e9b5292b5dff8830d557625861e259bff1c3a92462ce47c1531e79bb300f
Contents?: true
Size: 1.94 KB
Versions: 1
Compression:
Stored size: 1.94 KB
Contents
require 'drb' require 'foodtaster/version' module Foodtaster class Client MAX_ATTEMPTS = 20 def self.connect(drb_port, server_process = nil) attempt_index = 1 begin sleep 0.2 client = Foodtaster::Client.new(drb_port) rescue DRb::DRbConnError => e Foodtaster.logger.debug "DRb connection failed (attempt #{attempt_index}/#{MAX_ATTEMPTS}): #{e.message}" attempt_index += 1 retry if attempt_index <= MAX_ATTEMPTS && (server_process.nil? || server_process.alive?) end if client Foodtaster.logger.debug "DRb connection established" else Foodtaster.logger.debug "Can't connect to Foodtaster DRb Server" end client end [:vm_defined?, :prepare_vm, :rollback_vm, :run_chef_on_vm, :execute_command_on_vm, :shutdown_vm, :vm_prepared?].each do |method_name| define_method method_name do |*args| begin @v.send(method_name, *args) rescue DRb::DRbUnknownError => e message = "Folowing exception was raised on server:\n#{e.unknown.buf}" Foodtaster.logger.fatal(message) raise e end end end private def initialize(drb_port) # start local service to be able to redirect stdout & stderr # to client DRb.start_service("druby://localhost:0") @v = DRbObject.new_with_uri("druby://localhost:#{drb_port}") init end private def init $stdout.extend DRbUndumped $stderr.extend DRbUndumped @v.redirect_stdstreams($stdout, $stderr) check_version end def check_version server_version = @v.version if server_version != Foodtaster::VERSION Foodtaster.logger.warn "Warning: Foodtaster DRb Server version doesn't match Foodtaster Gem version.\n\nDRb Server version: #{server_version}\nFoodtaster Gem version: #{Foodtaster::VERSION}\n" end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
foodtaster-0.0.6 | lib/foodtaster/client.rb |