def ssh_keys_post
if @cloud_user
case @req.action
when "add-key"
raise OpenShift::UserKeyException.new("Missing SSH key or key name", 119) if @req.ssh.nil? or @req.key_name.nil?
if @cloud_user.ssh_keys
raise OpenShift::UserKeyException.new("Key with name #{@req.key_name} already exists. Please choose a different name", 120) if @cloud_user.ssh_keys.has_key?(@req.key_name)
end
@cloud_user.add_ssh_key(@req.key_name, @req.ssh, @req.key_type)
@cloud_user.save
when "remove-key"
raise OpenShift::UserKeyException.new("Missing key name", 119) if @req.key_name.nil?
@cloud_user.remove_ssh_key(@req.key_name)
@cloud_user.save
when "update-key"
raise OpenShift::UserKeyException.new("Missing SSH key or key name", 119) if @req.ssh.nil? or @req.key_name.nil?
@cloud_user.update_ssh_key(@req.ssh, @req.key_type, @req.key_name)
@cloud_user.save
when "list-keys"
if @cloud_user.ssh_keys.nil? || @cloud_user.ssh_keys.empty?
@reply.data = {:keys => {}, :ssh_key => "", :ssh_type => ""}.to_json
else
other_keys = @cloud_user.ssh_keys.reject {|k, v| k == Key::DEFAULT_SSH_KEY_NAME }
if @cloud_user.ssh_keys.has_key?(Key::DEFAULT_SSH_KEY_NAME)
default_key = @cloud_user.ssh_keys[Key::DEFAULT_SSH_KEY_NAME]['key']
default_key_type = @cloud_user.ssh_keys[Key::DEFAULT_SSH_KEY_NAME]['type']
else
default_key = default_key_type = ""
end
@reply.data = { :keys => other_keys,
:ssh_key => default_key,
:ssh_type => default_key_type,
}.to_json
end
else
raise OpenShift::UserKeyException.new("Invalid action #{@req.action}", 111)
end
log_action(@request_id, @cloud_user.uuid, @login, "LEGACY_SSH_KEY", true, "Successfully completed action: #{@req.action}")
render :json => @reply
else
raise OpenShift::UserException.new("Invalid user", 99)
end
end