Align DE-Test as container and verify Sonic restart via process check.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -173,7 +173,10 @@ public sealed class SonicManagementClient : IDisposable
|
||||
_connection.ResolveContainerListScript(),
|
||||
containerName: string.Empty,
|
||||
domainName: _connection.DomainName,
|
||||
sonicHome: _connection.SonicHome);
|
||||
sonicHome: _connection.SonicHome,
|
||||
connectionUrl: _connection.ConnectionUrl,
|
||||
username: _connection.Username,
|
||||
password: _connection.Password);
|
||||
|
||||
(bool ok, string? output, string? error) =
|
||||
await _scriptRunner!.RunScriptAsync(script, cancellationToken);
|
||||
@@ -200,16 +203,23 @@ public sealed class SonicManagementClient : IDisposable
|
||||
_connection.ResolveRestartScript(),
|
||||
containerName,
|
||||
_connection.DomainName,
|
||||
_connection.SonicHome);
|
||||
_connection.SonicHome,
|
||||
connectionUrl: _connection.ConnectionUrl,
|
||||
username: _connection.Username,
|
||||
password: _connection.Password);
|
||||
|
||||
(bool ok, string? output, string? error) =
|
||||
await _scriptRunner!.RunScriptAsync(script, cancellationToken);
|
||||
|
||||
string mode = _connection.ManagementMode.ToString();
|
||||
bool verified = (output ?? string.Empty)
|
||||
.Contains("OK:ContainerRestartVerified", StringComparison.OrdinalIgnoreCase);
|
||||
|
||||
if (!ok)
|
||||
if (!ok || !verified)
|
||||
{
|
||||
return (false, $"Neustart fehlgeschlagen ({mode})",
|
||||
$"Kein verifizierter Prozess-Neustart für Container '{containerName}' " +
|
||||
$"(Domain '{_connection.DomainName}').\n" +
|
||||
$"Fehler: {error}\nAusgabe: {output}\nSonicHome={_connection.SonicHome}");
|
||||
}
|
||||
|
||||
@@ -217,8 +227,8 @@ public sealed class SonicManagementClient : IDisposable
|
||||
TimeSpan.FromSeconds(Math.Clamp(_connection.PostRestartDelaySeconds, 0, 120)),
|
||||
cancellationToken);
|
||||
|
||||
return (true, $"ESB-Container neugestartet ({mode})",
|
||||
$"Ausgabe: {output ?? "(keine)"}");
|
||||
return (true, $"Container '{containerName}' neugestartet ({mode})",
|
||||
$"Domain={_connection.DomainName}; verifiziert.\n{output}");
|
||||
}
|
||||
|
||||
private async Task<(bool, string, string?)> ImportXapiViaScriptAsync(
|
||||
@@ -235,7 +245,10 @@ public sealed class SonicManagementClient : IDisposable
|
||||
containerName,
|
||||
_connection.DomainName,
|
||||
_connection.SonicHome,
|
||||
xapiSourcePath);
|
||||
xapiSourcePath,
|
||||
_connection.ConnectionUrl,
|
||||
_connection.Username,
|
||||
_connection.Password);
|
||||
|
||||
(bool importOk, string? importOut, string? importErr) =
|
||||
await _scriptRunner!.RunScriptAsync(script, cancellationToken);
|
||||
|
||||
@@ -136,12 +136,18 @@ public sealed class WinRmExecutor
|
||||
string containerName,
|
||||
string domainName = "",
|
||||
string sonicHome = "",
|
||||
string xapiPath = "")
|
||||
string xapiPath = "",
|
||||
string connectionUrl = "",
|
||||
string username = "",
|
||||
string password = "")
|
||||
=> template
|
||||
.Replace("{container}", containerName.Replace("'", "''"), StringComparison.OrdinalIgnoreCase)
|
||||
.Replace("{domain}", domainName.Replace("'", "''"), StringComparison.OrdinalIgnoreCase)
|
||||
.Replace("{sonicHome}", sonicHome.Replace("'", "''"), StringComparison.OrdinalIgnoreCase)
|
||||
.Replace("{xapiPath}", xapiPath.Replace("'", "''"), StringComparison.OrdinalIgnoreCase);
|
||||
.Replace("{xapiPath}", xapiPath.Replace("'", "''"), StringComparison.OrdinalIgnoreCase)
|
||||
.Replace("{connectionUrl}", connectionUrl.Replace("'", "''"), StringComparison.OrdinalIgnoreCase)
|
||||
.Replace("{username}", username.Replace("'", "''"), StringComparison.OrdinalIgnoreCase)
|
||||
.Replace("{password}", password.Replace("'", "''"), StringComparison.OrdinalIgnoreCase);
|
||||
|
||||
private static string ExtractHost(string connectionUrl)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user