# File lib/openshift-origin-controller/app/controllers/legacy_broker_controller.rb, line 55
  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"
        #FIXME: when client tools are updated
        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