SchedMD/slurm — pull request #91 by natefoo (2014-11-06 19:18:45+00:00)
Title: Implement cluster selection decision at submit-time support in the API

This PR implements the functionality I requested in [bug #1234](http://bugs.schedmd.com/show_bug.cgi?id=1234). If I'm on the right track, I'd be happy to update the documentation to reflect these changes as well.

Details, from the commit message:

**Move the multicluster submit function from src/sbatch/mult_cluster.c to libslurmdb so it can be used by job submissions via the API.**

`slurmdb_get_first_avail_cluster()` can be used similarly to the former `sbatch_set_first_avail_cluster()` but is slightly more generally usable as an API method since it doesn't require setting `working_cluster_rec`.

This involves changes to `slurm_job_will_run()` since that function was not generally usable (hence its reimplementation in `mult_cluster.c`) and the addition of `slurm_job_will_run2()` which provides the struct needed for cluster selection decisions and does not print messages.

The signature of `slurm_job_will_run()` is unchanged and all tools which used it (e.g. `srun/sbatch --test-only`) operate the same as before. Because of the differences between the format and levels of messages in the printing code, that code couldn't be fully deduplicated. I just didn't want to change the behavior of anything already using it.

`src/sbatch/Makefile.in` is not included in the commit, but does need to be regenerated because `src/sbatch/mult_cluster.{h,c}` are removed. `Makefile.am` is updated accordingly.