1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-21 14:50:08 +03:00

feature #1383: Includes some features as suggested in another patch from Ricardo Duarte. SSH Key is now

generated and keypair cannot be deleted if it is being used
This commit is contained in:
Ruben S. Montero 2012-09-26 01:02:38 +02:00
parent 54eafbefdc
commit 27a746f97c
2 changed files with 19 additions and 9 deletions

View File

@ -21,6 +21,7 @@ require 'base64'
require 'json'
require 'openssl'
require 'digest/md5'
require 'net/ssh'
require 'AWS'

View File

@ -80,10 +80,14 @@ module Keypair
erb_public_key = rsa_kp.public_key
erb_key_fingerprint = Digest::MD5.hexdigest(rsa_kp.to_der).gsub(/(.{2})(?=.)/, '\1:\2')
erb_ssh_public_key = erb_public_key.ssh_type <<
" " <<
[ erb_public_key.to_blob ].pack('m0') <<
" " <<
erb_keyname
kp[erb_keyname] = {
"fingerprint" => erb_key_fingerprint,
"public_key" => erb_public_key
"public_key" => erb_ssh_public_key
}
rc = user.add_keypair(kp)
@ -119,16 +123,21 @@ module Keypair
erb_key_name = params['KeyName']
erb_result = "false"
user = User.new_with_id(OpenNebula::User::SELF, @client)
user.info
vmpool = VirtualMachinePool.new(@client, OpenNebula::Pool::INFO_ALL)
vmpool.info
kp = user.get_keypair
if !vmpool["/VM_POOL/VM/TEMPLATE/CONTEXT[EC2_KEYNAME=\'#{erb_key_name}\']"]
user = User.new_with_id(OpenNebula::User::SELF, @client)
user.info
if !kp.empty?
kp.delete(erb_key_name)
rc = user.add_keypair(kp)
kp = user.get_keypair
erb_result = "true" if !OpenNebula::is_error?(rc)
if kp.has_key?(erb_key_name)
kp.delete(erb_key_name)
rc = user.add_keypair(kp)
erb_result = "true" if !OpenNebula::is_error?(rc)
end
end
response = ERB.new(File.read(@config[:views]+"/delete_keypair.erb"))