in src/hpc/autoscale/node/limits.py [0:0]
def _decrement(self, nodes: int, cores_per_node: int) -> None:
new_core_count = self._consumed_core_count + (nodes * cores_per_node)
if new_core_count > self._max_core_count:
raise RuntimeError(
"OutOfCapacity: Asked for {} * {} cores, which would be over the {} limit (consumed {} out of {} cores)".format(
nodes,
cores_per_node,
self._name,
self._consumed_core_count,
self._max_core_count,
)
)
new_node_count = self._consumed_core_count // cores_per_node + nodes
effective_max_count = self._max_count(cores_per_node)
if new_node_count > effective_max_count:
raise RuntimeError(
"OutOfCapacity: Asked for {} nodes, which would be over the {} limit (consumed {} out of {} nodes)".format(
nodes,
self._name,
self._consumed_core_count // cores_per_node,
effective_max_count,
)
)
self._consumed_core_count = new_core_count
if self.__max_count is not None and self.__consumed_count is not None:
assert self.__consumed_count + nodes <= self.__max_count
self.__consumed_count += nodes