Bug #12199

Updated by Tom Clegg about 2 years ago

Add cloud node size and price info to site configuration object:
* API server gains a node_sizes table with fields:
** uuid
cloud instance id
* ** price
* ** cores
* ** ram
* ** disk

Add Go package (server/dispatch_cloud) that exports a node size calculator.

* Load cluster config
* Given an arvados.Container record, return the appropriate instance type (not just
When creating a string, but the whole type container record from a container request, API server determines the config) appropriate node size and puts the uuid in "node_size" field under "scheduling_parameters"
* Return a predictable error (ErrInstanceTypesNotConfigured?) if none are listed
* Return a predictable error (ErrConstraintsNotSatisfiable?) if no instance type is big enough

In crunch-dispatch-slurm, before submitting a slurm job, use the dispatch_cloud calculator to determine the appropriate instance type. Add look at "node_size" under "scheduling_parameters" and add it to the sbatch command line in "--constraints". Omit constraints if calculator returns ErrInstanceTypesNotConfigured. Cancel the container if calculator returns ErrConstraintsNotSatisifiable.

In nodemanager, for each slurm job with constraints, use consult the indicated instance API server's "node_types" table to get the corresponding cloud node type for the wishlist.

Optional (or not?): In nodemanager, load

* The "Size" sections of
the site node manager configuration file, and use the instance types found there instead may be ignored in favor of the ones in information from the "sizes" section of nodemanager's own config file. API server's node_types.