# File lib/openshift-origin-controller/app/models/group_instance.rb, line 137
  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
            # :end usage event for previous quota
            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

            # :begin usage event for new quota
            @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