Sha256: ffa168b26726b11af43391c7cf096b64b11b654c9dc097fa082497f4d025e31e

Contents?: true

Size: 1.21 KB

Versions: 62

Compression:

Stored size: 1.21 KB

Contents

module Standup
  module EC2
    class ElasticIP < Base
      def initialize ip, info = false
        @ip = ip
        super info
      end

      info_reader :ip, :attached_to

      def self.list reload = false
        if !class_variable_defined?(:@@list) || reload
          @@list = {}
          result = api.describe_addresses
          result.addressesSet.item.each do |item|
            @@list[item.publicIp] = new item.publicIp, :attached_to => Instance.new(item.instanceId)
          end if result.addressesSet
        end
        @@list
      end

      def self.create
        ip = api.allocate_address.publicIp
        list[ip] = ElasticIP.new ip
      end

      def destroy
        api.release_address :public_ip => @ip
        list.delete @ip
      end

      def attach_to instance
        api.associate_address :instance_id => instance.id,
                              :public_ip => @ip
        @attached_to = instance
      end

      def detach
        api.disassociate_address :public_ip => @ip
        @attached_to = nil
      end

      def load_info
        result = api.describe_addresses :public_ip => @ip
        @attached_to = Instance.new(result.addressesSet.item[0].instanceId)
      end
    end
  end
end

Version data entries

62 entries across 62 versions & 1 rubygems

Version Path
standup-0.6.9 lib/standup/ec2/elastic_ip.rb
standup-0.6.8 lib/standup/ec2/elastic_ip.rb
standup-0.6.7 lib/standup/ec2/elastic_ip.rb
standup-0.6.6 lib/standup/ec2/elastic_ip.rb
standup-0.6.5 lib/standup/ec2/elastic_ip.rb
standup-0.6.4 lib/standup/ec2/elastic_ip.rb
standup-0.6.3 lib/standup/ec2/elastic_ip.rb
standup-0.6.2 lib/standup/ec2/elastic_ip.rb
standup-0.6.1 lib/standup/ec2/elastic_ip.rb
standup-0.6.0 lib/standup/ec2/elastic_ip.rb
standup-0.5.14 lib/standup/ec2/elastic_ip.rb
standup-0.5.13 lib/standup/ec2/elastic_ip.rb
standup-0.5.11 lib/standup/ec2/elastic_ip.rb
standup-0.5.10 lib/standup/ec2/elastic_ip.rb
standup-0.5.9 lib/standup/ec2/elastic_ip.rb
standup-0.5.8 lib/standup/ec2/elastic_ip.rb
standup-0.5.7 lib/standup/ec2/elastic_ip.rb
standup-0.5.6 lib/standup/ec2/elastic_ip.rb
standup-0.5.5 lib/standup/ec2/elastic_ip.rb
standup-0.5.4 lib/standup/ec2/elastic_ip.rb