Sha256: a40310d17fcd321f06e7234b4537d3b1a9beb9dfe432e19dccbebb6de24c875d

Contents?: true

Size: 1017 Bytes

Versions: 1

Compression:

Stored size: 1017 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'].to_i
      @request_queue_depth = env['HTTP_X_HEROKU_QUEUE_DEPTH'].to_i
    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 true
      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

1 entries across 1 versions & 1 rubygems

Version Path
nimble_nodes-0.1.7 lib/nimble_nodes/report.rb