35 lines
		
	
	
		
			827 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
		
		
			
		
	
	
			35 lines
		
	
	
		
			827 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
|   | require "workers/delete_server_worker" | ||
|  | 
 | ||
|  | module Devops | ||
|  |   module Executor | ||
|  |     class ExpirationScheduler | ||
|  |       def initialize(expires, server) | ||
|  |         @expires, @server = expires, server | ||
|  |       end | ||
|  | 
 | ||
|  |       def schedule_expiration! | ||
|  |         return unless @expires | ||
|  |         DeleteServerWorker.perform_in(interval_in_seconds, server_chef_node_name: @server.chef_node_name) | ||
|  |       end | ||
|  | 
 | ||
|  |       def interval_in_seconds | ||
|  |         interval = @expires.to_i | ||
|  |         measure_unit = @expires.chars.last | ||
|  |         case measure_unit | ||
|  |         when 's' | ||
|  |           interval | ||
|  |         when 'm' | ||
|  |           interval * 60
 | ||
|  |         when 'h' | ||
|  |           interval * 60 * 60
 | ||
|  |         when 'd' | ||
|  |           interval * 60 * 60 * 24
 | ||
|  |         when 'w' | ||
|  |           interval * 60 * 60 * 24 * 7
 | ||
|  |         else | ||
|  |           raise 'Wrong interval format' | ||
|  |         end | ||
|  |       end | ||
|  |     end | ||
|  |   end | ||
|  | end |