g5k: enforce that we obtain enough concrete resources
Currently, we allow concrete resources to have fewer nodes than requested. This can happen in at least two cases:
- on G5K, when doing an advance reservation, OAR is allowed to give fewer nodes than requested if some nodes are broken
- the Enoslib user can modify its resource request and re-call
provider.init()
: currently, Enoslib will simply reload the existing G5K job, even if the resources of this existing job don't match the new resource request
This is a major usability issue, especially when using Enoslib in a Jupyter notebook and experimenting with various resource requests.
I plan to fix this with two changes:
- low-level concretization code: make sure we detect all cases where we are missing some concrete resources, and raise an exception
- high-level reservation code: catch this new exception and automatically delete/resubmit job