class Fog::Compute::Google::Server

Public Instance Methods

destroy() click to toggle source
# File lib/fog/google/models/compute/server.rb, line 20
def destroy
  requires :name, :zone
  service.delete_server(name, zone)
end
image() click to toggle source
# File lib/fog/google/models/compute/server.rb, line 25
def image
  service.get_image(self.image_name.split('/')[-1])
end
public_ip_address() click to toggle source
# File lib/fog/google/models/compute/server.rb, line 29
def public_ip_address
  ip = nil
  if self.network_interfaces
    self.network_interfaces.each do |netif|
      netif["accessConfigs"].each do |access_config|
        if access_config["name"] == "External NAT"
          ip = access_config['natIP']
        end
      end
    end
  end

  ip
end
ready?() click to toggle source
# File lib/fog/google/models/compute/server.rb, line 44
def ready?
  self.state == RUNNING
end
reload() click to toggle source
# File lib/fog/google/models/compute/server.rb, line 58
def reload
  data = service.get_server(self.name, self.zone).body
  self.merge_attributes(data)
end
save() click to toggle source
# File lib/fog/google/models/compute/server.rb, line 63
def save
  requires :name
  requires :machine_type
  requires :zone_name

  if self.metadata.nil?
    self.metadata = {}
  end

  self.metadata.merge!({
    "sshKeys" => "#{username}:#{public_key.strip}"
  }) if public_key

  options = {
      'image' => image_name,
      'machineType' => machine_type,
      'networkInterfaces' => network_interfaces,
      'disks' => disks,
      'kernel' => kernel,
      'metadata' => metadata
  }
  options.delete_if {|key, value| value.nil?}
  service.insert_server(name, zone_name, options)
  data = service.backoff_if_unfound {service.get_server(self.name, self.zone_name).body}
  service.servers.merge_attributes(data)
end
zone() click to toggle source
# File lib/fog/google/models/compute/server.rb, line 48
def zone
  if self.zone_name.is_a? String
    service.get_zone(self.zone_name.split('/')[-1]).body["name"]
  elsif zone_name.is_a? Excon::Response
    service.get_zone(zone_name.body["name"]).body["name"]
  else
    self.zone_name
  end
end