Represents an Address resource
@see developers.google.com/compute/docs/reference/latest/addresses
# 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
# File lib/fog/google/models/compute/address.rb, line 65 def in_use? self.status == IN_USE_STATE end
# 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
# 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
# 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
# File lib/fog/google/models/compute/address.rb, line 32 def server=(server) requires :identity, :region server ? associate(server) : disassociate end
# 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
# 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