def create
content = params[:content]
name = params[:name]
type = params[:type]
Rails.logger.debug "Creating key name:#{name} type:#{type} for user #{@login}"
key = Key.new(name, type, content)
if key.invalid?
messages = get_error_messages(key)
return render_error(:unprocessable_entity, nil, nil, "ADD_KEY", nil, nil, messages)
end
@cloud_user.ssh_keys.each do |key_name, key|
return render_error(:conflict, "SSH key with name #{name} already exists. Use a different name or delete conflicting key and retry.",
120, "ADD_KEY", "name") if key_name == name
return render_error(:conflict, "Given public key is already in use. Use different key or delete conflicting key and retry.",
121, "ADD_KEY", "content") if key["key"] == content
end if @cloud_user.ssh_keys
begin
@cloud_user.add_ssh_key(name, content, type)
@cloud_user.save
ssh_key = RestKey.new(name, @cloud_user.ssh_keys[name]["key"], @cloud_user.ssh_keys[name]["type"], get_url, nolinks)
render_success(:created, "key", ssh_key, "ADD_KEY", "Created SSH key #{name}", true)
rescue Exception => e
return render_exception(e, "ADD_KEY")
end
end