# File lib/openshift-origin-controller/app/models/application.rb, line 916
  def add_node_settings(gears=nil)
    reply = ResultIO.new
    
    gears = self.gears unless gears
    
    self.ssh_keys = {} unless self.ssh_keys
    if @user.env_vars || @user.ssh_keys || @user.system_ssh_keys
      tag = ""
      handle = RemoteJob.create_parallel_job
      RemoteJob.run_parallel_on_gears(gears, handle) { |exec_handle, gear|
        @user.env_vars.each do |key, value|
          job = gear.env_var_job_add(key, value)
          RemoteJob.add_parallel_job(exec_handle, tag, gear, job)
        end if @user.env_vars
        @user.ssh_keys.each do |key_name, key_info|
          job = gear.ssh_key_job_add(key_info["key"], key_info["type"], key_name)
          RemoteJob.add_parallel_job(exec_handle, tag, gear, job)
        end if @user.ssh_keys
        @user.system_ssh_keys.each do |key_name, key_info|
          job = gear.ssh_key_job_add(key_info, nil, key_name)
          RemoteJob.add_parallel_job(exec_handle, tag, gear, job)
        end if @user.system_ssh_keys
        self.ssh_keys.each do |key_name, key_info|
          job = gear.ssh_key_job_add(key_info, nil, key_name)
          RemoteJob.add_parallel_job(exec_handle, tag, gear, job)
        end
      }
      RemoteJob.get_parallel_run_results(handle) { |tag, gear, output, status|
        if status != 0
          raise OpenShift::NodeException.new("Error applying settings to gear: #{gear} with status: #{status} and output: #{output}", 143)
        end
      }
    end
    reply
  end