in src/slurm_plugin/capacity_block_manager.py [0:0]
def _update_capacity_blocks_info_from_ec2(self, capacity_blocks: Dict[str, CapacityBlock]):
"""
Update capacity blocks in given capacity_blocks by adding capacity reservation info.
This method is called every time the CapacityBlockManager is re-initialized,
so when it starts/is restarted or when fleet configuration changes.
"""
capacity_block_ids = list(capacity_blocks.keys())
logger.info("Retrieving Capacity Blocks information from EC2 for %s", ",".join(capacity_block_ids))
try:
capacity_block_reservations_info: List[CapacityReservationInfo] = (
self.ec2_client.describe_capacity_reservations(capacity_block_ids)
)
for capacity_block_reservation_info in capacity_block_reservations_info:
capacity_block_id = capacity_block_reservation_info.capacity_reservation_id()
try:
capacity_blocks[capacity_block_id].update_capacity_block_reservation_info(
capacity_block_reservation_info
)
except KeyError:
# should never happen
logger.error(f"Unable to find Capacity Block {capacity_block_id} in the internal map.")
except AWSClientError as e:
msg = f"Unable to retrieve Capacity Blocks information from EC2. {e}"
logger.error(msg)
raise CapacityBlockManagerError(msg)