Sha256: 8ada8d33a5f1c88771028ad54fff1a55fb9134c0c79ae6bdba685f6332133557

Contents?: true

Size: 1.27 KB

Versions: 4

Compression:

Stored size: 1.27 KB

Contents

module Fog
  module AWS
    class EC2

      class Address < Fog::Model

        attribute :instance_id, 'instanceId'
        attribute :public_ip,   'publicIp'

        def addresses
          @addresses
        end

        def initialize(new_attributes = {})
          new_attributes = {
            :instance_id => ''
          }.merge!(new_attributes)
          super(new_attributes)
        end

        def destroy
          connection.release_address(@public_ip)
          true
        end

        def instance=(new_instance)
          if !@public_ip
            @instance = new_instance
          elsif new_instance
            @instance = nil
            @instance_id = new_instance.instance_id
            connection.associate_address(@instance_id, @public_ip)
          end
        end

        def reload
          if new_address = addresses.get(@public_ip)
            merge_attributes(new_address.attributes)
          end
        end

        def save
          data = connection.allocate_address
          @public_ip = data.body['publicIp']
          if @instance
            self.instance = @instance
          end
          true
        end

        private

        def addresses=(new_addresses)
          @addresses = new_addresses
        end

      end

    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
fog-0.0.29 lib/fog/aws/models/ec2/address.rb
fog-0.0.28 lib/fog/aws/models/ec2/address.rb
fog-0.0.27 lib/fog/aws/models/ec2/address.rb
fog-0.0.26 lib/fog/aws/models/ec2/address.rb