execVmCommand function

Future<void> execVmCommand({
  1. required String vmName,
  2. required String command,
  3. required String buildJobId,
  4. required String runId,
  5. required String token,
  6. required String? ipAddress,
})

Implementation

Future<void> execVmCommand({
  required String vmName,
  required String command,
  required String buildJobId,
  required String runId,
  required String token,
  required String? ipAddress,
}) async {
  final exitCode = await _sshKeyExecStream(
    ipAddress,
    command,
    onStdout: (data) {
      final masked = data.replaceAll(token, '***').trim();
      if (masked.isNotEmpty) {
        logInfo(buildJobId, runId, masked);
      }
    },
    onStderr: (data) {
      final masked = data.replaceAll(token, '***').trim();
      if (masked.isNotEmpty) {
        logWarning(buildJobId, runId, masked);
      }
    },
  );

  if (exitCode != 0) {
    throw Exception('Command failed with exit code $exitCode');
  }
}