class Fog::Compute::Google::Address

Represents an Address resource

@see developers.google.com/compute/docs/reference/latest/addresses

Constants

IN_USE_STATE
RESERVED_STATE

Public Instance Methods

destroy(async=true) click to toggle source
# File lib/fog/google/models/compute/address.rb, line 46
def destroy(async=true)
  requires :identity, :region

  data = service.delete_address(identity, self.region.split('/')[-1])
  operation = Fog::Compute::Google::Operations.new(:service => service).get(data.body['name'], nil, data.body['region'])
  unless async
    operation.wait_for { ready? }
  end
  operation
end
in_use?() click to toggle source
# File lib/fog/google/models/compute/address.rb, line 65
def in_use?
  self.status == IN_USE_STATE
end
reload() click to toggle source
# File lib/fog/google/models/compute/address.rb, line 57
def reload
  requires :identity, :region

  data = collection.get(identity, self.region.split('/')[-1])
  merge_attributes(data.attributes)
  self
end
save() click to toggle source
# File lib/fog/google/models/compute/address.rb, line 37
def save
  requires :identity, :region

  data = service.insert_address(identity, self.region, self.attributes)
  operation = Fog::Compute::Google::Operations.new(:service => service).get(data.body['name'], nil, data.body['region'])
  operation.wait_for { !pending? }
  reload
end
server() click to toggle source
# File lib/fog/google/models/compute/address.rb, line 26
def server
  return nil if !in_use? || self.users.nil? || self.users.empty?

  service.servers.get(self.users.first.split('/')[-1])
end
server=(server) click to toggle source
# File lib/fog/google/models/compute/address.rb, line 32
def server=(server)
  requires :identity, :region
  server ? associate(server) : disassociate
end

Private Instance Methods

associate(server) click to toggle source
# File lib/fog/google/models/compute/address.rb, line 71
def associate(server)
  nic = server.network_interfaces.first['name']
  data = service.add_server_access_config(server.name, server.zone_name, nic, :address => self.address)
  Fog::Compute::Google::Operations.new(:service => service).get(data.body['name'], data.body['zone'])
end
disassociate() click to toggle source
# File lib/fog/google/models/compute/address.rb, line 77
def disassociate
  return nil if !in_use? || self.users.nil? || self.users.empty?

  # An address can only be associated with one server at a time
  server = service.servers.get(self.users.first.split('/')[-1])
  nic = server.network_interfaces.first['name']
  unless server.network_interfaces.first['accessConfigs'].nil? ||
         server.network_interfaces.first['accessConfigs'].empty?
    access_config = server.network_interfaces.first['accessConfigs'].first['name']
    data = service.delete_server_access_config(server.name, server.zone_name, nic,
                                               :access_config => access_config)
    Fog::Compute::Google::Operations.new(:service => service).get(data.body['name'], data.body['zone'])
  end
end