require "commands/server" require 'rufus-scheduler' class ExpireHandler include ServerCommands @@scheduler = Rufus::Scheduler.start_new def self.add server unless server.expires_at.nil? if server.expires_at < Time.now.to_i ExpireHandler.do_it server else time = Time.at(server.expires_at) @@scheduler.at time, ExpireHandler.new(server, chef_env) DevopsLogger.logger "Server '#{server.chef_node_name}' will be expired at '#{time}'" end end end def self.init Devops::Db.connector.servers_find({"expires_at" => {"$ne" => nil}}, nil).each do |s| ExpireHandler.add s end end def initialize server @server = server end def call(job) ExpireHandler.do_it @server end def self.do_it server logger = DevopsLogger.logger logger.info("Removing node '#{server.chef_node_name}' form project '#{server.project}' and env '#{server.deploy_env}'") begin delete_server(server, DevopsService.mongo, logger) rescue => e logger.error "ExpiredHandler error: " + e.message end end end