Sha256: d326a85580f202867117cca8f995a5abfc4220cdf6379633002e2bec91e90756

Contents?: true

Size: 1.14 KB

Versions: 36

Compression:

Stored size: 1.14 KB

Contents

require 'fog/model'

module Fog
  module AWS
    module EC2

      class Address < Fog::Model

        identity  :public_ip,   'publicIp'

        attribute :server_id, 'instanceId'

        def destroy
          requires :public_ip

          connection.release_address(@public_ip)
          true
        end

        def server=(new_server)
          if new_server
            associate(new_server)
          else
            disassociate
          end
        end

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

        private

        def associate(new_server)
          if new_record?
            @server = new_server
          else
            @server = nil
            @server_id = new_server.id
            connection.associate_address(@server_id, @public_ip)
          end
        end

        def disassociate
          @server = nil
          @server_id = nil
          unless new_record?
            connection.disassociate_address(@public_ip)
          end
        end

      end

    end
  end
end

Version data entries

36 entries across 36 versions & 1 rubygems

Version Path
fog-0.0.92 lib/fog/aws/models/ec2/address.rb
fog-0.0.91 lib/fog/aws/models/ec2/address.rb
fog-0.0.90 lib/fog/aws/models/ec2/address.rb
fog-0.0.89 lib/fog/aws/models/ec2/address.rb
fog-0.0.88 lib/fog/aws/models/ec2/address.rb
fog-0.0.87 lib/fog/aws/models/ec2/address.rb
fog-0.0.86 lib/fog/aws/models/ec2/address.rb
fog-0.0.85 lib/fog/aws/models/ec2/address.rb
fog-0.0.84 lib/fog/aws/models/ec2/address.rb
fog-0.0.83 lib/fog/aws/models/ec2/address.rb
fog-0.0.82 lib/fog/aws/models/ec2/address.rb
fog-0.0.81 lib/fog/aws/models/ec2/address.rb
fog-0.0.80 lib/fog/aws/models/ec2/address.rb
fog-0.0.79 lib/fog/aws/models/ec2/address.rb
fog-0.0.78 lib/fog/aws/models/ec2/address.rb
fog-0.0.77 lib/fog/aws/models/ec2/address.rb
fog-0.0.76 lib/fog/aws/models/ec2/address.rb
fog-0.0.75 lib/fog/aws/models/ec2/address.rb
fog-0.0.74 lib/fog/aws/models/ec2/address.rb
fog-0.0.73 lib/fog/aws/models/ec2/address.rb