pruneStaleVms function

Future<void> pruneStaleVms(
  1. String buildJobId,
  2. String runId, {
  3. required String workerId,
})

Implementation

Future<void> pruneStaleVms(
  String buildJobId,
  String runId, {
  required String workerId,
}) async {
  try {
    final prefix = 'openci-vm-$workerId-';
    final currentVm = currentVmName(workerId: workerId, buildJobId: buildJobId);

    final vms = await lume.ls(showLogs: false);
    final staleVms = vms
        .where((vm) => vm.name.startsWith(prefix) && vm.name != currentVm)
        .toList();

    for (final vm in staleVms) {
      _log.info(
        '[$runId] Deleting stale VM: ${vm.name} (status: ${vm.status})',
      );
      await _stopAndDeleteVm(vm, label: 'stale', logPrefix: '[$runId] ');
    }
  } catch (e) {
    _log.warning('[$runId] Error pruning stale VMs: $e');
  }
}