'Schedule jobs to run on the given list of kernel versions using
the configured machines -> machine_info mapping for test name
selection and kernel config file selection.'

def __call__(self, kernel_list):

    for kernel in kernel_list:
        jobs = {}
        for (machine, info) in self._tests_map.iteritems():
            config_paths = info.kernel_configs
            kernel_config = '/boot/config'
            if config_paths:
                kvers = config_paths.keys()
                close = self._closest_kver_leq(kvers, kernel)
                kernel_config = config_paths[close]
            for test in info.tests:
                jobs.setdefault((test, kernel_config), [])
                jobs[(test, kernel_config)].append(machine)
        for ((test, kernel_config), hosts) in jobs.iteritems():
            c = self._generate_control(test, kernel, kernel_config)
            self._schedule_job((self._jobname_pattern % kernel), c, hosts)
