Files
123123/ZA.CoreService.ESBCertificateManager/Services/RestartExecutor.cs

40 lines
1.4 KiB
C#

using ZA.CoreService.ESBCertificateManager.Models;
namespace ZA.CoreService.ESBCertificateManager.Services;
public sealed class RestartExecutor
{
private readonly IReadOnlyList<SonicConnection> _sonicConnections;
private readonly ISecretProvider _secretProvider;
public RestartExecutor(
IReadOnlyList<SonicConnection> 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);
}
}