using ZA.CoreService.ESBCertificateManager.Models; namespace ZA.CoreService.ESBCertificateManager.Services; public sealed class RestartExecutor { private readonly IReadOnlyList _sonicConnections; private readonly ISecretProvider _secretProvider; 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}' " + "ist nicht geladen. Meist fehlt ein Benutzerprofil " + "(Einstellungen → Profil anlegen und übernehmen)."); } using SonicManagementClient client = new(connection); return await client.RestartContainerAsync(target.ContainerName, cancellationToken); } }