examples/create_instance.rb in fog-google-1.6.0 vs examples/create_instance.rb in fog-google-1.7.0

- old
+ new

@@ -1,58 +1,73 @@ # All examples presume that you have a ~/.fog credentials file set up. # More info on it can be found here: http://fog.io/about/getting_started.html require "bundler" Bundler.require(:default, :development) -# Uncomment this if you want to make real requests to GCE (you _will_ be billed!) -# WebMock.disable! -def test +def example + p "Connecting to Google API" connection = Fog::Compute.new(:provider => "Google") + p "Creating disk" disk = connection.disks.create( :name => "fog-smoke-test-#{Time.now.to_i}", :size_gb => 10, :zone => "us-central1-f", - :source_image => "debian-8-jessie-v20180329" + :source_image => "debian-9-stretch-v20180611" ) + p "Waiting for disk to be ready" disk.wait_for { disk.ready? } + p "Creating a server" server = connection.servers.create( :name => "fog-smoke-test-#{Time.now.to_i}", :disks => [disk], :machine_type => "n1-standard-1", :private_key_path => File.expand_path("~/.ssh/id_rsa"), :public_key_path => File.expand_path("~/.ssh/id_rsa.pub"), :zone => "us-central1-f", + # Will be simplified, see https://github.com/fog/fog-google/issues/360 + :network_interfaces => [{ :network => "global/networks/default", + :access_configs => [{ + :name => "External NAT", + :type => "ONE_TO_ONE_NAT" + }] }], :username => ENV["USER"], + :metadata => { :items => [{ :key => "foo", :value => "bar" }] }, :tags => ["fog"], :service_accounts => { :scopes => %w(sql-admin bigquery https://www.googleapis.com/auth/compute) } ) - # Wait_for routine copied here to show errors, if necessary. - duration = 0 - interval = 5 - timeout = 600 - start = Time.now - until server.sshable? || duration > timeout - # puts duration - # puts " ----- " + p "Waiting for server to be ready" + # .sshable? requires 'net-ssh' gem to be added to the gemfile + begin + duration = 0 + interval = 5 + timeout = 600 + start = Time.now + until server.sshable? || duration > timeout + puts duration + puts " ----- " - server.reload + server.reload - # p "ready?: #{server.ready?}" - # p "public_ip_address: #{server.public_ip_address.inspect}" - # p "public_key: #{server.public_key.inspect}" - # p "metadata: #{server.metadata.inspect}" - # p "sshable?: #{server.sshable?}" + p "ready?: #{server.ready?}" + p "public_ip_address: #{server.public_ip_address.inspect}" + p "public_key: #{server.public_key.inspect}" + p "metadata: #{server.metadata.inspect}" + p "sshable?: #{server.sshable?}" - sleep(interval.to_f) - duration = Time.now - start + sleep(interval.to_f) + duration = Time.now - start + end + raise "Could not bootstrap sshable server." unless server.ssh("whoami") + rescue NameError + server.wait_for { ready? } end - raise "Could not bootstrap sshable server." unless server.ssh("whoami") + p "Deleting server" raise "Could not delete server." unless server.destroy end -test +example