class Fog::Compute::Google::Server
Constants
- GCE_SCOPE_ALIASES
Security account scope aliases used by official gcloud utility List derived from 'gcloud compute instances create –help'
Public Instance Methods
add_ssh_key(username, key)
click to toggle source
# File lib/fog/compute/google/models/server.rb, line 201 def add_ssh_key(username, key) self.metadata = Hash.new("") if metadata.nil? # You can have multiple SSH keys, seperated by newlines. # https://developers.google.com/compute/docs/console?hl=en#sshkeys metadata["sshKeys"] = "" unless metadata["sshKeys"] metadata["sshKeys"] += "\n" unless metadata["sshKeys"].empty? metadata["sshKeys"] += "#{username}:#{key.strip}" metadata end
addresses()
click to toggle source
# File lib/fog/compute/google/models/server.rb, line 119 def addresses [private_ip_address, public_ip_address] end
attach_disk(disk, options = {})
click to toggle source
# File lib/fog/compute/google/models/server.rb, line 123 def attach_disk(disk, options = {}) requires :identity, :zone data = service.attach_disk(identity, zone_name, disk, options) Fog::Compute::Google::Operations.new(:service => service).get(data.body["name"], data.body["zone"]) end
destroy(async = true)
click to toggle source
# File lib/fog/compute/google/models/server.rb, line 80 def destroy(async = true) requires :name, :zone data = service.delete_server(name, zone_name) operation = Fog::Compute::Google::Operations.new(:service => service).get(data.body["name"], data.body["zone"]) operation.wait_for { ready? } unless async operation end
detach_disk(device_name)
click to toggle source
# File lib/fog/compute/google/models/server.rb, line 130 def detach_disk(device_name) requires :identity, :zone data = service.detach_disk(identity, zone, device_name) Fog::Compute::Google::Operations.new(:service => service).get(data.body["name"], data.body["zone"]) end
flavor_id()
click to toggle source
# File lib/fog/compute/google/models/server.rb, line 72 def flavor_id machine_type end
flavor_id=(flavor_id)
click to toggle source
# File lib/fog/compute/google/models/server.rb, line 76 def flavor_id=(flavor_id) machine_type = flavor_id end
image()
click to toggle source
not used since v1
# File lib/fog/compute/google/models/server.rb, line 90 def image Fog::Logger.deprecation("Server.image is deprecated, get source_image from boot disk") service.get_image(image_name.split("/")[-1]) end
image_name()
click to toggle source
# File lib/fog/compute/google/models/server.rb, line 53 def image_name boot_disk = disks.first unless boot_disk.is_a?(Disk) source = boot_disk["source"] match = source.match(%r{/zones/(.*)/disks/(.*)$}) boot_disk = service.disks.get match[2], match[1] end boot_disk.source_image.nil? ? nil : boot_disk.source_image end
image_name=(_args)
click to toggle source
# File lib/fog/compute/google/models/server.rb, line 49 def image_name=(_args) Fog::Logger.deprecation("image_name= is no longer used [light_black](#{caller.first})[/]") end
kernel()
click to toggle source
# File lib/fog/compute/google/models/server.rb, line 67 def kernel Fog::Logger.deprecation("kernel is no longer used [light_black](#{caller.first})[/]") nil end
kernel=(_args)
click to toggle source
# File lib/fog/compute/google/models/server.rb, line 63 def kernel=(_args) Fog::Logger.deprecation("kernel= is no longer used [light_black](#{caller.first})[/]") end
map_service_accounts(scope_array)
click to toggle source
# File lib/fog/compute/google/models/server.rb, line 215 def map_service_accounts(scope_array) scope_array_expanded = scope_array.map do |e| if GCE_SCOPE_ALIASES[e] GCE_SCOPE_ALIASES[e] else e end end scope_array_finalized = scope_array_expanded.map do |e| if e.start_with?("https://") e else "https://www.googleapis.com/auth/#{e}" end end scope_array_finalized end
private_ip_address()
click to toggle source
# File lib/fog/compute/google/models/server.rb, line 111 def private_ip_address ip = nil if network_interfaces.respond_to? :first ip = network_interfaces.first["networkIP"] end ip end
public_ip_address()
click to toggle source
# File lib/fog/compute/google/models/server.rb, line 95 def public_ip_address ip = nil if network_interfaces.respond_to? :each network_interfaces.each do |netif| next unless netif["accessConfigs"].respond_to? :each 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/compute/google/models/server.rb, line 193 def ready? state == RUNNING end
reboot()
click to toggle source
# File lib/fog/compute/google/models/server.rb, line 137 def reboot requires :identity, :zone data = service.reset_server(identity, zone_name) Fog::Compute::Google::Operations.new(:service => service).get(data.body["name"], data.body["zone"]) end
reload()
click to toggle source
# File lib/fog/compute/google/models/server.rb, line 235 def reload data = service.get_server(name, zone_name).body merge_attributes(data) end
save()
click to toggle source
# File lib/fog/compute/google/models/server.rb, line 240 def save requires :name requires :machine_type requires :zone_name requires :disks unless service.zones.detect { |zone| zone.name == zone_name } raise ArgumentError.new "#{zone_name.inspect} is either down or you don't have permission to use it." end add_ssh_key(username, public_key) if public_key options = { "machineType" => machine_type, "networkInterfaces" => network_interfaces, "network" => network, "externalIp" => external_ip, "disks" => disks, "metadata" => metadata, "serviceAccounts" => service_accounts, "tags" => tags, "auto_restart" => auto_restart, "on_host_maintenance" => on_host_maintenance, "preemptible" => preemptible, "can_ip_forward" => can_ip_forward }.delete_if { |_key, value| value.nil? } if service_accounts options["serviceAccounts"] = [{ "kind" => "compute#serviceAccount", "email" => "default", "scopes" => map_service_accounts(service_accounts) }] end data = service.insert_server(name, zone_name, options) operation = Fog::Compute::Google::Operations.new(:service => service).get(data.body["name"], data.body["zone"]) operation.wait_for { !pending? } reload end
serial_port_output()
click to toggle source
# File lib/fog/compute/google/models/server.rb, line 158 def serial_port_output requires :identity, :zone data = service.get_server_serial_port_output(identity, zone_name) data.body["contents"] end
set_disk_auto_delete(auto_delete, device_name)
click to toggle source
# File lib/fog/compute/google/models/server.rb, line 165 def set_disk_auto_delete(auto_delete, device_name) requires :identity, :zone data = service.set_server_disk_auto_delete(identity, zone_name, auto_delete, device_name) Fog::Compute::Google::Operations.new(:service => service).get(data.body["name"], data.body["zone"]) end
set_metadata(metadata = {})
click to toggle source
# File lib/fog/compute/google/models/server.rb, line 179 def set_metadata(metadata = {}) requires :identity, :zone data = service.set_metadata(identity, zone_name, self.metadata["fingerprint"], metadata) Fog::Compute::Google::Operations.new(:service => service).get(data.body["name"], data.body["zone"]) end
set_scheduling(on_host_maintenance, automatic_restart, preemptible)
click to toggle source
# File lib/fog/compute/google/models/server.rb, line 172 def set_scheduling(on_host_maintenance, automatic_restart, preemptible) requires :identity, :zone data = service.set_server_scheduling(identity, zone_name, on_host_maintenance, automatic_restart, preemptible) Fog::Compute::Google::Operations.new(:service => service).get(data.body["name"], data.body["zone"]) end
start()
click to toggle source
# File lib/fog/compute/google/models/server.rb, line 144 def start requires :identity, :zone data = service.start_server(identity, zone_name) Fog::Compute::Google::Operations.new(:service => service).get(data.body["name"], data.body["zone"]) end
stop()
click to toggle source
# File lib/fog/compute/google/models/server.rb, line 151 def stop requires :identity, :zone data = service.stop_server(identity, zone_name) Fog::Compute::Google::Operations.new(:service => service).get(data.body["name"], data.body["zone"]) end
zone_name()
click to toggle source
# File lib/fog/compute/google/models/server.rb, line 197 def zone_name zone.nil? ? nil : zone.split("/")[-1] end