def METHOD_NAME(self, *args, **kwargs):
    """
    _algorithm_
    Split up all the available files such that each job will process a
    maximum of "files_per_job".  If the "files_per_job" parameters is not
    passed in jobs will process a maximum of 10 files.
    """
    filesPerJob = int(kwargs.get("files_per_job", 10))
    jobsPerGroup = int(kwargs.get("jobs_per_group", 0))
    filesInJob   = 0
    totalJobs    = 0
    listOfFiles  = []
    #Get a dictionary of sites, files
    locationDict = self.sortByLocation()
    for location in locationDict:
        #Now we have all the files in a certain location
        fileList    = locationDict[location]
        filesInJob  = 0
        jobsInGroup = 0
        self.newGroup()
        if len(fileList) == 0:
            #No files for this location
            #This isn't supposed to happen, but better safe then sorry
            logging.debug("Have location %s with no files" % (location))
            continue
        for file in fileList:
            parentLFNs = self.findParent(lfn = file['lfn'])
            for lfn in parentLFNs:
                parent = File(lfn = lfn)
                file['parents'].add(parent)
            if filesInJob == 0 or filesInJob == filesPerJob:
                if jobsPerGroup:
                    if jobsInGroup > jobsPerGroup:
                        self.newGroup()
                        jobsInGroup = 0
                self.newJob(name = self.getJobName(length=totalJobs))
                filesInJob   = 0
                totalJobs   += 1
                jobsInGroup += 1
            filesInJob += 1
            self.currentJob.addFile(file)
            listOfFiles.append(file)
    return