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