class Fog::OpenStack::Compute::Address

Public Class Methods

new(attributes = {}) click to toggle source
Calls superclass method Fog::OpenStack::Model::new
# File lib/fog/openstack/compute/models/address.rb, line 14
def initialize(attributes = {})
  # assign server first to prevent race condition with persisted?
  self.server = attributes.delete(:server)
  super
end

Public Instance Methods

destroy() click to toggle source
# File lib/fog/openstack/compute/models/address.rb, line 20
def destroy
  requires :id
  service.release_address(id)
  true
end
save() click to toggle source
# File lib/fog/openstack/compute/models/address.rb, line 34
def save
  raise Fog::Errors::Error, 'Resaving an existing object may create a duplicate' if persisted?
  data = service.allocate_address(pool).body['floating_ip']
  new_attributes = data.reject { |key, _value| !['id', 'instance_id', 'ip', 'fixed_ip'].include?(key) }
  merge_attributes(new_attributes)
  if @server
    self.server = @server
  end
  true
end
server=(new_server) click to toggle source
# File lib/fog/openstack/compute/models/address.rb, line 26
def server=(new_server)
  if new_server
    associate(new_server)
  else
    disassociate
  end
end

Private Instance Methods

associate(new_server) click to toggle source
# File lib/fog/openstack/compute/models/address.rb, line 47
def associate(new_server)
  if persisted?
    @server = nil
    self.instance_id = new_server.id
    service.associate_address(instance_id, ip)
  else
    @server = new_server
  end
end
disassociate() click to toggle source
# File lib/fog/openstack/compute/models/address.rb, line 57
def disassociate
  @server = nil
  if persisted?
    service.disassociate_address(instance_id, ip)
  end
  self.instance_id = nil
end