Sha256: 7e4a4cf0c325f6db745f7f72ab6a3cc8eb79dd724c190dc599544b22165e62d6

Contents?: true

Size: 1.3 KB

Versions: 19

Compression:

Stored size: 1.3 KB

Contents

module Opsicle
  class Instances

    attr_accessor :client
    class << self
      attr_accessor :client
    end

    def initialize(client)
      @client = client
    end

    def data
      instances(reload: true)
    end

    def self.pretty_ip(instance)
      instance[:elastic_ip] ? "#{instance[:elastic_ip]} EIP" : instance[:public_ip]
    end

    def self.find_by_ip(client, ips)
      instances = new(client).data.reject { |instance| instances_matching_ips(instance, ips) }
      instances.empty? ? nil : instances 
    end

    def self.instances_matching_ips(instance, ip_addresses)
      instance_ips = [instance[:public_ip], instance[:elastic_ip], instance[:private_ip]].compact
      (ip_addresses & instance_ips).empty?
    end

    private_class_method :instances_matching_ips

    def self.find_by_eip(client)
      instances =  new(client).data.reject { |instance| instance[:elastic_ip] == nil }
      instances.empty? ? nil : instances 
    end

    def instances(options={})
      # Only call the API again if you need to
      @instances = nil if options[:reload]
      @instances ||= client.api_call('describe_instances',
                                       :stack_id => client.config.opsworks_config[:stack_id]
                                      )[:instances]
    end
    private :instances

  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
opsicle-2.9.3 lib/opsicle/instances.rb
opsicle-2.9.2 lib/opsicle/instances.rb
opsicle-2.9.0 lib/opsicle/instances.rb
opsicle-2.8.0 lib/opsicle/instances.rb
opsicle-2.6.0 lib/opsicle/instances.rb
opsicle-2.5.0 lib/opsicle/instances.rb
opsicle-2.4.1 lib/opsicle/instances.rb
opsicle-2.4.0 lib/opsicle/instances.rb
opsicle-2.3.1 lib/opsicle/instances.rb
opsicle-2.3.0 lib/opsicle/instances.rb
opsicle-2.2.1 lib/opsicle/instances.rb
opsicle-2.2.0 lib/opsicle/instances.rb
opsicle-2.1.0 lib/opsicle/instances.rb
opsicle-2.0.2 lib/opsicle/instances.rb
opsicle-2.0.1 lib/opsicle/instances.rb
opsicle-2.0.0 lib/opsicle/instances.rb
opsicle-1.1.1 lib/opsicle/instances.rb
opsicle-1.1.0 lib/opsicle/instances.rb
opsicle-1.0.1 lib/opsicle/instances.rb