def save
resultIO = ResultIO.new
unless persisted?
resultIO.append(create())
end
if applications && !applications.empty? && save_jobs
gears = []
tag = ""
applications.each do |app|
app.gears.each do |gear|
if !app.destroyed_gears || !app.destroyed_gears.include?(gear.uuid)
gears << gear
end
end
end
handle = RemoteJob.create_parallel_job
RemoteJob.run_parallel_on_gears(gears, handle) { |exec_handle, gear|
if save_jobs['removes']
save_jobs['removes'].each do |action, values|
case action
when 'ssh_keys'
values.each do |value|
ssh_key = value[0]
ssh_key_comment = value[1]
job = gear.ssh_key_job_remove(ssh_key, ssh_key_comment)
RemoteJob.add_parallel_job(exec_handle, tag, gear, job)
end
when 'env_vars'
values.each do |value|
env_var_key = value[0]
job = gear.env_var_job_remove(env_var_key)
RemoteJob.add_parallel_job(exec_handle, tag, gear, job)
end
when 'broker_auth_keys'
values.each do |value|
app_uuid = value[0]
if app_uuid == gear.app.uuid
job = gear.broker_auth_key_job_remove
RemoteJob.add_parallel_job(exec_handle, tag, gear, job)
end
end
end
end
end
if save_jobs['adds']
save_jobs['adds'].each do |action, values|
case action
when 'ssh_keys'
values.each do |value|
ssh_key = value[0]
ssh_key_type = value[1]
ssh_key_comment = value[2]
job = gear.ssh_key_job_add(ssh_key, ssh_key_type, ssh_key_comment)
RemoteJob.add_parallel_job(exec_handle, tag, gear, job)
end
when 'env_vars'
values.each do |value|
env_var_key = value[0]
env_var_value = value[1]
job = gear.env_var_job_add(env_var_key, env_var_value)
RemoteJob.add_parallel_job(exec_handle, tag, gear, job)
end
when 'broker_auth_keys'
values.each do |value|
app_uuid = value[0]
if app_uuid == gear.app.uuid
iv = value[1]
token = value[2]
job = gear.broker_auth_key_job_add(iv, token)
RemoteJob.add_parallel_job(exec_handle, tag, gear, job)
end
end
end
end
end
}
RemoteJob.get_parallel_run_results(handle) { |tag, gear, output, status|
if status != 0
raise OpenShift::NodeException.new("Error updating settings on gear: #{gear} with status: #{status} and output: #{output}", 143)
end
}
save_jobs['removes'].clear if save_jobs['removes']
save_jobs['adds'].clear if save_jobs['adds']
end
super(@login)
resultIO
end