lib/jerbil.rb in jerbil-1.3.3 vs lib/jerbil.rb in jerbil-1.4.5

- old
+ new

@@ -101,25 +101,28 @@ #store local and remote services @store = Array.new @remote_store = Array.new # create a jellog logger that continues any previous log and keeps the last 5 log files - app_name = "Jerbil-#{options[:environment].to_s}" - log_opts = Jellog::Logger.get_options(options) - @logger = Jellog::Logger.new(app_name, log_opts) + @app_name = "Jerbil-#{options[:environment].to_s}" + @log_opts = Jellog::Config.intersection(options) + #log_opts = @log_opts.dup + @logger = Jellog::Logger.new(@app_name, @log_opts) @logger.mark @logger.debug "Started the Logger for Jerbil" + @logger.debug "Saved logger options: #{@log_opts.inspect}" # some statistical data @started = Time.now @registrations = 0 @logger.verbose("Searching for remote servers") - network_servers = Jerbil::Servers.find_servers(@env, options[:net_address], options[:net_mask], options[:scan_timeout]) - @logger.verbose("Found #{@remote_servers.length} remote servers") + network_servers = [] #Jerbil::Servers.find_servers(@env, options[:net_address], options[:net_mask], options[:scan_timeout]) + #@logger.verbose("Found #{@remote_servers.length} remote servers") # now loop round the remote servers to see if any are there + # DO NOTHING cos its an empty array! network_servers.each do |remote_server| rjerbil = remote_server.connect unless rjerbil.nil? @logger.debug "Getting Remote Services. Connecting to : #{remote_server.inspect}" # there is a remote server, so tell it about me @@ -151,14 +154,25 @@ @logger.debug "Stored remote keys:" @remote_servers.each do |rs| @logger.debug " #{rs.fqdn}: #{rs.key}" end + #@logger.verbose "Closing logger temporarily" + #@logger.close + rescue => jerr @logger.exception(jerr) raise end + + # restart the logger on the other side of daemonising it + # + # NOT NEEDED! + def restart_logger + @logger = Jellog::Logger.new(@app_name, @log_opts) + @logger.debug "Restarted Logger" + end # date/time at which the server was started attr_reader :started # the number of registrations since the server started @@ -368,10 +382,22 @@ # @param [Boolean] ignore_access is the same as :ignore_access for #find # @return (see #find) def get_all(ignore_access=false) self.find(:ignore_access => ignore_access) end + + def get_all_by_server + services = self.find(ignore_access: true) + servers = Hash.new + services.each do |serv| + unless servers.has_key?(serv.host) + servers[serv.host] = Array.new + end + servers[serv.host] << serv + end + return servers + end # Checks for a potentially missing service and removes it if it cannot be found. # # What to do if you cannot connect to a service that Jerbil thinks is there? # check if its local, try to connect and if OK then return false to allow retries @@ -468,11 +494,11 @@ if @private_key == private_key then @logger.info("About to stop the Jerbil Server") @remote_servers.each do |rserver| begin rjerbil = rserver.connect - @logger.verbose("Closing connection to; #{rserver.ident}") + @logger.verbose("Closing connection to: #{rserver.ident}") rjerbil.detach_server(rserver.key, @local) rescue ServerConnectError, DRb::DRbConnError @logger.error("Failed to connect to #{rserver.ident}") end end @@ -598,15 +624,21 @@ # ignored. The remote server is removed from the database. # # @param [String] my_key being the key of the server being called # @param [Server] server being the record for the remote server that is detaching def detach_server(my_key, server) - @logger.verbose("About to detach a remote server: #{server.ident}") unless @private_key == my_key - @logger.warn("close_remote_server: incorrect key: #{my_key}") - return true + @logger.warn("Detaching remote server: incorrect key: #{my_key}") + return false end + + unless @remote_servers.include?(server) + @logger.warn "Detaching remote server: server not known: #{server.ident}" + return false + end + + @logger.verbose("About to detach a remote server: #{server.ident}") @remote_store.delete_if {|s| s.host == server.fqdn} @remote_servers.delete(server) @logger.info("Detached server: #{server.ident}") end