44 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| require 'rufus-scheduler'
 | |
| 
 | |
| class ExpireHandler
 | |
| 
 | |
|   @@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
 | |
| 
 | 
