Sha256: a9cd63f358d749a40101de68432d946edddbe68ac080011a56ce47650d5d097f

Contents?: true

Size: 990 Bytes

Versions: 3

Compression:

Stored size: 990 Bytes

Contents

module NimbleNodes
      
  class Report
    
    
    def self.path
      "/#{ENV['NN_APP_NAME']}/dynos/reports.json"
    end
    
    def initialize(env)
      @dynos_in_use = env['HTTP_X_HEROKU_DYNOS_IN_USE']
      @request_queue_depth = env['HTTP_X_HEROKU_QUEUE_DEPTH'] 
    end
    
    def post
      params = {
        :dynos_in_use => @dynos_in_use,
        :request_queue_size => @request_queue_depth }
      NimbleNodes::Server.post(self.class.path, params)
    end
    
    def post?
      return false if ENV['NN_APP_PAUSED_AT']
      dynos_maxed_out? or queue_depth_too_long? or unused_dynos?
    end
    
    def dynos_maxed_out?
      return false if @dynos_in_use.nil?
      @dynos_in_use >= Dynos.max
    end
  
    def queue_depth_too_long?
      return false if @request_queue_depth.nil?
      @request_queue_depth > Dynos.max_request_queue
    end
    
    def unused_dynos?
      return false if @dynos_in_use.nil?
      @dynos_in_use < Dynos.size
    end

  end
  
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
nimble_nodes-0.1.6 lib/nimble_nodes/report.rb
nimble_nodes-0.1.5 lib/nimble_nodes/report.rb
nimble_nodes-0.1.4 lib/nimble_nodes/report.rb