mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
add set_metadata to upload ssh keys
This commit is contained in:
parent
e282de66b1
commit
1220c8989b
4 changed files with 48 additions and 6 deletions
|
@ -13,6 +13,7 @@ module Fog
|
||||||
attribute :state, :aliases => 'status'
|
attribute :state, :aliases => 'status'
|
||||||
attribute :zone_name, :aliases => 'zone'
|
attribute :zone_name, :aliases => 'zone'
|
||||||
attribute :machine_type, :aliases => 'machineType'
|
attribute :machine_type, :aliases => 'machineType'
|
||||||
|
attribute :metadata
|
||||||
|
|
||||||
def destroy
|
def destroy
|
||||||
requires :name
|
requires :name
|
||||||
|
@ -59,11 +60,8 @@ module Fog
|
||||||
end
|
end
|
||||||
|
|
||||||
def setup(credentials = {})
|
def setup(credentials = {})
|
||||||
requires :public_ip_address, :identity, :public_key, :username
|
requires :public_ip_address, :public_key, :username
|
||||||
Fog::SSH.new(public_ip_address, username, credentials).run([
|
service.set_metadata(self.instance, self.zone, {'sshKeys' => self.public_key })
|
||||||
%{mkdir .ssh},
|
|
||||||
%{echo "#{public_key}" >> ~/.ssh/authorized_keys},
|
|
||||||
])
|
|
||||||
rescue Errno::ECONNREFUSED
|
rescue Errno::ECONNREFUSED
|
||||||
sleep(1)
|
sleep(1)
|
||||||
retry
|
retry
|
||||||
|
|
|
@ -4,7 +4,7 @@ module Fog
|
||||||
|
|
||||||
class Mock
|
class Mock
|
||||||
|
|
||||||
def insert_network(network_name)
|
def insert_network(network_name, ip_range)
|
||||||
Fog::Mock.not_implemented
|
Fog::Mock.not_implemented
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
36
lib/fog/google/requests/compute/set_metadata.rb
Normal file
36
lib/fog/google/requests/compute/set_metadata.rb
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
module Fog
|
||||||
|
module Compute
|
||||||
|
class Google
|
||||||
|
|
||||||
|
class Mock
|
||||||
|
|
||||||
|
def set_metadata(instance, zone, metadata={})
|
||||||
|
Fog::Mock.not_implemented
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
class Real
|
||||||
|
|
||||||
|
def set_metadata(instance, zone, metadata={})
|
||||||
|
api_method = @compute.instance.set_metadata
|
||||||
|
parameters = {
|
||||||
|
'project' => @project,
|
||||||
|
'instance' => instance,
|
||||||
|
'zone' => zone,
|
||||||
|
}
|
||||||
|
body_object = {
|
||||||
|
"items" => metadata.to_a.map {|pair| { :key => pair[0], :value => pair[1] } }
|
||||||
|
}
|
||||||
|
result = self.build_result(
|
||||||
|
api_method,
|
||||||
|
parameters,
|
||||||
|
body_object=body_object)
|
||||||
|
response = self.build_response(result)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -7,6 +7,14 @@ Shindo.tests("Fog::Compute[:google] | server model", ['google']) do
|
||||||
@instance.ready?
|
@instance.ready?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test('#sshable?') do
|
||||||
|
@instance.sshable?
|
||||||
|
end
|
||||||
|
|
||||||
|
test('#ssh') do
|
||||||
|
@instance.ssh("uname") == "Linux"
|
||||||
|
end
|
||||||
|
|
||||||
test('#destroy') do
|
test('#destroy') do
|
||||||
response = @instance.destroy
|
response = @instance.destroy
|
||||||
response.body['operationType'] == 'delete'
|
response.body['operationType'] == 'delete'
|
||||||
|
|
Loading…
Reference in a new issue