40 lines
1.4 KiB
C#
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);
|
|
}
|
|
}
|