def set_quota(storage_in_gb, inodes=nil, gear_list=nil)
reply = ResultIO.new
tag = ""
previous_fs_gb = @addtl_fs_gb
gear_list = @gears if gear_list.nil?
handle = RemoteJob.create_parallel_job
RemoteJob.run_parallel_on_gears(gear_list, handle) { |exec_handle, gear|
job = gear.gear_quota_job_update(storage_in_gb, inodes)
RemoteJob.add_parallel_job(exec_handle, tag, gear, job)
}
RemoteJob.get_parallel_run_results(handle) { |tag, gear_uuid, output, status|
if status != 0
raise OpenShift::NodeException.new("Error setting quota on gear: #{gear_uuid} with status: #{status} and output: #{output}", 143)
else
@gears.each { |gi_gear|
if gi_gear.uuid == gear_uuid
unless previous_fs_gb.nil? || previous_fs_gb == 0
@addtl_fs_gb = previous_fs_gb
app.track_usage(gi_gear, UsageRecord::EVENTS[:end], UsageRecord::USAGE_TYPES[:addtl_fs_gb])
end
@addtl_fs_gb = storage_in_gb - get_cached_min_storage_in_gb
app.track_usage(gi_gear, UsageRecord::EVENTS[:begin], UsageRecord::USAGE_TYPES[:addtl_fs_gb]) if @addtl_fs_gb > 0
break
end
}
end
}
reply
end