Files
123123/ZA.CoreService.ESBCertificateManager/Models/SonicConnection.cs
T
2026-07-24 08:10:13 +02:00

108 lines
4.6 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
namespace ZA.CoreService.ESBCertificateManager.Models;
/// <summary>
/// Verbindungskonfiguration für eine Progress Sonic ESB Management Instanz.
/// </summary>
public sealed class SonicConnection
{
/// <summary>
/// Eindeutiger Bezeichner; wird in <see cref="DeploymentTarget.SonicConnectionName"/> referenziert.
/// </summary>
public required string Name { get; init; }
/// <summary>Sonic-Domain-Name, z.B. "proalpha-test".</summary>
public required string DomainName { get; init; }
/// <summary>
/// Sonic-Broker-/Management-URL im Sonic-Format, z.B. "tcp://dekun-painwbdet:13070".
/// Der Hostname wird daraus extrahiert (für HTTP-Modus: Basis-URL, für WinRM-Modus: Zielrechner).
/// </summary>
public required string ConnectionUrl { get; init; }
/// <summary>Benutzername für die Management-Konsole.</summary>
public required string Username { get; init; }
/// <summary>Passwort für die Management-Konsole.</summary>
public required string Password { get; init; }
/// <summary>
/// Management-Modus: HttpApi (REST) oder WinRm (PowerShell Remoting).
/// Standard: WinRm da Sonic 10.x kein HTTP REST API bereitstellt.
/// </summary>
public SonicManagementMode ManagementMode { get; init; } = SonicManagementMode.WinRm;
// ---------------------------------------------------------------
// HTTP REST API (ManagementMode = HttpApi)
// ---------------------------------------------------------------
/// <summary>HTTP-Port der Sonic Management Console REST-API (Standard: 8080).</summary>
public int ManagementHttpPort { get; init; } = 8080;
/// <summary>Präfix für alle REST-API-Pfade (Standard: "/api/v1").</summary>
public string ApiBasePath { get; init; } = "/api/v1";
/// <summary>Konfigurierter Pfad zum Auflisten aller Container. Leer = automatische Erkennung.</summary>
public string ContainerListPath { get; init; } = string.Empty;
/// <summary>Konfigurierter Pfad zum Neustarten. Platzhalter: {domain}, {container}.</summary>
public string ContainerRestartPath { get; init; } = string.Empty;
/// <summary>Konfigurierter Pfad zum Stoppen. Platzhalter: {domain}, {container}.</summary>
public string ContainerStopPath { get; init; } = string.Empty;
/// <summary>Konfigurierter Pfad zum Starten. Platzhalter: {domain}, {container}.</summary>
public string ContainerStartPath { get; init; } = string.Empty;
// ---------------------------------------------------------------
// WinRM / PowerShell Remoting (ManagementMode = WinRm)
// ---------------------------------------------------------------
/// <summary>
/// WinRM-Port auf dem Zielrechner (Standard: 5985 = HTTP, 5986 = HTTPS).
/// </summary>
public int WinRmPort { get; init; } = 5985;
/// <summary>
/// PowerShell-Scriptblock zum Neustarten eines Containers.
/// Platzhalter: {container} = Container-Name (nicht enkodiert), {domain} = Domain-Name.
/// Beispiel für Windows-Service: "Restart-Service -Name 'CT-ZADBService' -Force"
/// Beispiel für Sonic-Skript: "& 'C:\\Sonic\\bin\\stopContainer.bat' '{container}'; Start-Sleep 5; & 'C:\\Sonic\\bin\\startContainer.bat' '{container}'"
/// </summary>
public string WinRmRestartScript { get; init; } = string.Empty;
/// <summary>
/// PowerShell-Scriptblock zum Auflisten aller Container der Domain.
/// Ausgabe: eine Zeile pro Container-Name.
/// Beispiel: "Get-Service -DisplayName 'Sonic*' | Select-Object -ExpandProperty Name"
/// </summary>
public string WinRmContainerListScript { get; init; } = string.Empty;
/// <summary>
/// PowerShell-Scriptblock für XApi-Import.
/// Platzhalter: {container}, {xapiPath}.
/// </summary>
public string WinRmXapiImportScript { get; init; } = string.Empty;
// ---------------------------------------------------------------
// Gemeinsame Einstellungen
// ---------------------------------------------------------------
/// <summary>Timeout in Sekunden für einzelne API-/Script-Aufrufe (Standard: 60).</summary>
public int TimeoutSeconds { get; init; } = 60;
/// <summary>Wartezeit in Sekunden nach einem Container-Neustart (Standard: 15).</summary>
public int PostRestartDelaySeconds { get; init; } = 15;
}
public enum SonicManagementMode
{
/// <summary>HTTP REST API (wenn vom Sonic-Server bereitgestellt).</summary>
HttpApi,
/// <summary>
/// PowerShell Remoting (WinRM) Standard für Sonic 10.x auf Windows.
/// Führt konfigurierte Scriptblöcke via Invoke-Command auf dem Sonic-Server aus.
/// </summary>
WinRm
}