# File lib/openshift-origin-controller/app/controllers/keys_controller.rb, line 27
  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