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/compute/google/models/address.rb, line 44
def destroy(async = true)
  requires :identity, :region

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

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

  data = service.insert_address(identity, region, 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/compute/google/models/address.rb, line 24
def server
  return nil if !in_use? || users.nil? || users.empty?

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

Private Instance Methods

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

  # An address can only be associated with one server at a time
  server = service.servers.get(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