mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
Patch from a fellow googler
This commit is contained in:
parent
3fa46a9e6b
commit
7814ae55e8
4 changed files with 23 additions and 34 deletions
|
@ -136,7 +136,7 @@ module Fog
|
|||
|
||||
end
|
||||
|
||||
RUNNING_STATE = 'RUNNING'
|
||||
RUNNING = 'RUNNING'
|
||||
|
||||
end
|
||||
end
|
||||
|
|
|
@ -25,11 +25,15 @@ module Fog
|
|||
end
|
||||
|
||||
def public_ip_address
|
||||
if self.network_interfaces and self.network_interfaces.count
|
||||
self.network_interfaces[0]["networkIP"]
|
||||
else
|
||||
nil
|
||||
ip = nil
|
||||
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
|
||||
ip
|
||||
end
|
||||
|
||||
def metadata
|
||||
|
@ -37,17 +41,12 @@ module Fog
|
|||
service.set_metadata(self.name, self.zone, {k => v})
|
||||
return self.metadata
|
||||
end
|
||||
|
||||
data = service.get_server(self.name, self.zone).body
|
||||
data['metadata'] || {}
|
||||
end
|
||||
|
||||
def ready?
|
||||
data = service.get_server(self.name, self.zone).body
|
||||
data['zone_name'] = self.zone
|
||||
self.merge_attributes(data)
|
||||
|
||||
self.state == RUNNING_STATE
|
||||
def running?
|
||||
self.state == RUNNING
|
||||
end
|
||||
|
||||
def zone
|
||||
|
@ -60,6 +59,11 @@ module Fog
|
|||
end
|
||||
end
|
||||
|
||||
def reload
|
||||
data = service.get_server(self.name, self.zone).body
|
||||
self.merge_attributes(data)
|
||||
end
|
||||
|
||||
def save
|
||||
requires :name
|
||||
requires :image_name
|
||||
|
@ -71,9 +75,6 @@ module Fog
|
|||
image_name,
|
||||
zone_name,
|
||||
machine_type)
|
||||
|
||||
data = service.get_server(self.name, self.zone_name).body
|
||||
service.servers.merge_attributes(data)
|
||||
end
|
||||
|
||||
def setup(credentials = {})
|
||||
|
@ -84,18 +85,6 @@ module Fog
|
|||
retry
|
||||
end
|
||||
|
||||
def sshable?(options={})
|
||||
# Then check if we have ssh keys set up.
|
||||
if ready? and not metadata['sshKeys']
|
||||
setup
|
||||
end
|
||||
|
||||
# Now make sure everything is ok.
|
||||
ready? && !public_ip_address.nil? && public_key && metadata['sshKeys'] && !!Timeout::timeout(8) { ssh('pwd', options) }
|
||||
rescue SystemCallError, Net::SSH::AuthenticationFailed, Timeout::Error, ArgumentError
|
||||
false
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -44,18 +44,14 @@ module Fog
|
|||
def bootstrap(new_attributes = {})
|
||||
defaults = {
|
||||
:name => "fog-#{Time.now.to_i}",
|
||||
:image_name => "debian-7-wheezy-v20130522",
|
||||
:image_name => "debian-7-wheezy-v20130617",
|
||||
:machine_type => "n1-standard-1",
|
||||
:zone_name => "us-central1-a",
|
||||
:private_key_path => File.expand_path("~/.ssh/id_rsa"),
|
||||
:public_key_path => File.expand_path("~/.ssh/id_rsa.pub"),
|
||||
}
|
||||
|
||||
server = create(defaults.merge(new_attributes))
|
||||
|
||||
# Waits for 600 seconds.
|
||||
server.wait_for { sshable? }
|
||||
|
||||
server.wait_for { running? }
|
||||
server
|
||||
end
|
||||
end
|
||||
|
|
|
@ -35,7 +35,11 @@ module Fog
|
|||
'image' => @image_url,
|
||||
'machineType' => @api_url + @project + "/zones/#{zone_name}/machineTypes/#{machine_name}",
|
||||
'networkInterfaces' => [{
|
||||
'network' => @api_url + @project + "/global/networks/#{network_name}"
|
||||
'network' => @api_url + @project + "/global/networks/#{network_name}",
|
||||
'accessConfigs' => [{
|
||||
'type' => 'ONE_TO_ONE_NAT',
|
||||
'name' => 'External NAT',
|
||||
}]
|
||||
}]
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue