using ZA.CoreService.ESBCertificateManager.Models; namespace ZA.CoreService.ESBCertificateManager.Services; public sealed class RestartExecutor { private readonly IReadOnlyList _sonicConnections; public RestartExecutor(IReadOnlyList sonicConnections) { _sonicConnections = sonicConnections; } public async Task<(bool Success, string Status, string? Detail)> ExecuteAsync( DeploymentTarget target, CancellationToken cancellationToken = default) { if (string.IsNullOrWhiteSpace(target.ContainerName)) { return (false, "Neustart fehlgeschlagen", $"Ziel '{target.Name}': ContainerName fehlt."); } SonicConnection? connection = _sonicConnections .FirstOrDefault(c => string.Equals(c.Name, target.SonicConnectionName, StringComparison.OrdinalIgnoreCase)); if (connection is null) { return (false, "Sonic-Verbindung nicht gefunden", $"Ziel '{target.Name}': SonicConnection '{target.SonicConnectionName}' fehlt in appsettings."); } using SonicManagementClient client = new(connection); return await client.RestartContainerAsync(target.ContainerName, cancellationToken); } }