Run diagnostics actions off UI thread

This commit is contained in:
Meik
2026-03-18 15:03:49 +01:00
parent 66ce92eadd
commit 518087289e

View File

@@ -180,12 +180,13 @@ namespace LiamWorkflowDiagnostics
ApplyMatrix42Environment(ServerNameTextBox.Text, UseHttpsCheckBox.IsChecked ?? false); ApplyMatrix42Environment(ServerNameTextBox.Text, UseHttpsCheckBox.IsChecked ?? false);
ApplyLicense(LicenseTextBox.Text); ApplyLicense(LicenseTextBox.Text);
_session = new ProviderTestSession(msg => AppendLog(msg)); var session = new ProviderTestSession(msg => AppendLog(msg));
var success = await _session.InitializeAsync(providerData, maskToken, CreateProviderInstance, providerConfigClassId, providerConfigObjectId); _session = session;
var success = await Task.Run(() => session.InitializeAsync(providerData, maskToken, CreateProviderInstance, providerConfigClassId, providerConfigObjectId));
if (success) if (success)
{ {
AppendLog("Provider initialisiert und authentifiziert.", LogLevels.Info); AppendLog("Provider initialisiert und authentifiziert.", LogLevels.Info);
ResultTextBox.Text = _session.SanitizedConfigJson; ResultTextBox.Text = session.SanitizedConfigJson;
} }
else else
{ {
@@ -556,14 +557,17 @@ namespace LiamWorkflowDiagnostics
try try
{ {
var maxDepth = _session.Provider.MaxDepth; var provider = _session.Provider;
AppendLog($"Lese DataAreas (MaxDepth={maxDepth}) ..."); var configurationId = !string.IsNullOrWhiteSpace(_session.ProviderConfigObjectId)
var result = await LiamWorkflowRuntime.GetDataAreasFromProviderAsync(
_session.Provider,
!string.IsNullOrWhiteSpace(_session.ProviderConfigObjectId)
? _session.ProviderConfigObjectId ? _session.ProviderConfigObjectId
: (_session.ProviderConfigId ?? string.Empty), : (_session.ProviderConfigId ?? string.Empty);
IsWhatIfEnabled); var runWhatIf = IsWhatIfEnabled;
var maxDepth = provider.MaxDepth;
AppendLog($"Lese DataAreas (MaxDepth={maxDepth}) ...");
var result = await Task.Run(() => LiamWorkflowRuntime.GetDataAreasFromProviderAsync(
provider,
configurationId,
runWhatIf));
ResultTextBox.Text = JsonConvert.SerializeObject(result, Formatting.Indented); ResultTextBox.Text = JsonConvert.SerializeObject(result, Formatting.Indented);
if (!result.Success) if (!result.Success)
@@ -578,7 +582,7 @@ namespace LiamWorkflowDiagnostics
return; return;
} }
if (IsWhatIfEnabled && result.AutomaticEnsurePreview != null && result.AutomaticEnsurePreview.Count > 0) if (runWhatIf && result.AutomaticEnsurePreview != null && result.AutomaticEnsurePreview.Count > 0)
{ {
AppendLog($"EnsureNtfsPermissionGroups wurde nur simuliert fuer {result.AutomaticEnsurePreview.Count} Ordner. Details stehen im Result-JSON.", LogLevels.Warning); AppendLog($"EnsureNtfsPermissionGroups wurde nur simuliert fuer {result.AutomaticEnsurePreview.Count} Ordner. Details stehen im Result-JSON.", LogLevels.Warning);
} }
@@ -594,7 +598,7 @@ namespace LiamWorkflowDiagnostics
private async void ExecuteNtfsCreateButton_Click(object sender, RoutedEventArgs e) private async void ExecuteNtfsCreateButton_Click(object sender, RoutedEventArgs e)
{ {
await ExecuteProviderActionAsync("NTFS Folder Create", async () => try
{ {
var provider = EnsureInitializedProvider<cLiamProviderNtfs>("NTFS"); var provider = EnsureInitializedProvider<cLiamProviderNtfs>("NTFS");
var folderPath = GetRequiredText(NtfsCreateFolderPathTextBox.Text, "New Folder Path"); var folderPath = GetRequiredText(NtfsCreateFolderPathTextBox.Text, "New Folder Path");
@@ -611,14 +615,16 @@ namespace LiamWorkflowDiagnostics
var readerSids = ParseIdentifierList(NtfsCreateReaderSidsTextBox.Text, "Reader SIDs"); var readerSids = ParseIdentifierList(NtfsCreateReaderSidsTextBox.Text, "Reader SIDs");
var writerSids = ParseIdentifierList(NtfsCreateWriterSidsTextBox.Text, "Writer SIDs"); var writerSids = ParseIdentifierList(NtfsCreateWriterSidsTextBox.Text, "Writer SIDs");
var result = await LiamWorkflowRuntime.CreateDataAreaAsync( await ExecuteProviderActionAsync("NTFS Folder Create", async () =>
{
var result = await Task.Run(() => LiamWorkflowRuntime.CreateDataAreaAsync(
provider, provider,
folderPath, folderPath,
parentPath, parentPath,
null, null,
ownerSids, ownerSids,
readerSids, readerSids,
writerSids); writerSids));
return new return new
{ {
@@ -627,19 +633,6 @@ namespace LiamWorkflowDiagnostics
}; };
}, () => }, () =>
{ {
var provider = EnsureInitializedProvider<cLiamProviderNtfs>("NTFS");
var folderPath = GetRequiredText(NtfsCreateFolderPathTextBox.Text, "New Folder Path");
var parentPath = NormalizeOptionalText(NtfsCreateParentPathTextBox.Text);
if (string.IsNullOrWhiteSpace(parentPath))
{
parentPath = Directory.GetParent(folderPath)?.FullName;
}
if (string.IsNullOrWhiteSpace(parentPath))
throw new InvalidOperationException("Parent Folder Path konnte nicht ermittelt werden.");
var ownerSids = ParseIdentifierList(NtfsCreateOwnerSidsTextBox.Text, "Owner SIDs");
if (ownerSids.Count == 0)
throw new InvalidOperationException("Owner SIDs: mindestens ein Eintrag ist fuer die Ordneranlage erforderlich.");
return CreateWhatIfResult( return CreateWhatIfResult(
"NTFS Folder Create", "NTFS Folder Create",
"Wuerde einen Ordner anlegen und fehlende Gruppen sowie ACLs sicherstellen. Es wurden keine Aenderungen ausgefuehrt.", "Wuerde einen Ordner anlegen und fehlende Gruppen sowie ACLs sicherstellen. Es wurden keine Aenderungen ausgefuehrt.",
@@ -649,15 +642,21 @@ namespace LiamWorkflowDiagnostics
NewFolderPath = folderPath, NewFolderPath = folderPath,
ParentFolderPath = parentPath, ParentFolderPath = parentPath,
OwnerSids = ownerSids, OwnerSids = ownerSids,
ReaderSids = ParseIdentifierList(NtfsCreateReaderSidsTextBox.Text, "Reader SIDs"), ReaderSids = readerSids,
WriterSids = ParseIdentifierList(NtfsCreateWriterSidsTextBox.Text, "Writer SIDs") WriterSids = writerSids
}); });
}); });
} }
catch (Exception ex)
{
AppendLog($"NTFS Folder Create fehlgeschlagen: {ex.Message}", LogLevels.Error);
MessageBox.Show(this, ex.ToString(), "NTFS Folder Create", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
private async void ExecuteNtfsEnsureButton_Click(object sender, RoutedEventArgs e) private async void ExecuteNtfsEnsureButton_Click(object sender, RoutedEventArgs e)
{ {
await ExecuteProviderActionAsync("NTFS Ensure Groups / ACLs", async () => try
{ {
var provider = EnsureInitializedProvider<cLiamProviderNtfs>("NTFS"); var provider = EnsureInitializedProvider<cLiamProviderNtfs>("NTFS");
var folderPath = GetRequiredText(NtfsEnsureFolderPathTextBox.Text, "Folder Path"); var folderPath = GetRequiredText(NtfsEnsureFolderPathTextBox.Text, "Folder Path");
@@ -665,14 +664,17 @@ namespace LiamWorkflowDiagnostics
var readerSids = ParseIdentifierList(NtfsEnsureReaderSidsTextBox.Text, "Reader SIDs"); var readerSids = ParseIdentifierList(NtfsEnsureReaderSidsTextBox.Text, "Reader SIDs");
var writerSids = ParseIdentifierList(NtfsEnsureWriterSidsTextBox.Text, "Writer SIDs"); var writerSids = ParseIdentifierList(NtfsEnsureWriterSidsTextBox.Text, "Writer SIDs");
var ensureTraverse = NtfsEnsureTraverseCheckBox.IsChecked ?? false; var ensureTraverse = NtfsEnsureTraverseCheckBox.IsChecked ?? false;
var result = await LiamWorkflowRuntime.EnsureNtfsPermissionGroupsAsync(
await ExecuteProviderActionAsync("NTFS Ensure Groups / ACLs", async () =>
{
var result = await Task.Run(() => LiamWorkflowRuntime.EnsureNtfsPermissionGroupsAsync(
provider, provider,
folderPath, folderPath,
null, null,
ownerSids, ownerSids,
readerSids, readerSids,
writerSids, writerSids,
ensureTraverse); ensureTraverse));
return new return new
{ {
@@ -681,8 +683,6 @@ namespace LiamWorkflowDiagnostics
}; };
}, () => }, () =>
{ {
var provider = EnsureInitializedProvider<cLiamProviderNtfs>("NTFS");
var folderPath = GetRequiredText(NtfsEnsureFolderPathTextBox.Text, "Folder Path");
return CreateWhatIfResult( return CreateWhatIfResult(
"NTFS Ensure Groups / ACLs", "NTFS Ensure Groups / ACLs",
"Wuerde fehlende NTFS-Berechtigungsgruppen und ACLs additiv sicherstellen. Es wurden keine Aenderungen ausgefuehrt.", "Wuerde fehlende NTFS-Berechtigungsgruppen und ACLs additiv sicherstellen. Es wurden keine Aenderungen ausgefuehrt.",
@@ -690,17 +690,23 @@ namespace LiamWorkflowDiagnostics
{ {
ProviderRootPath = provider.RootPath, ProviderRootPath = provider.RootPath,
FolderPath = folderPath, FolderPath = folderPath,
OwnerSids = ParseIdentifierList(NtfsEnsureOwnerSidsTextBox.Text, "Owner SIDs"), OwnerSids = ownerSids,
ReaderSids = ParseIdentifierList(NtfsEnsureReaderSidsTextBox.Text, "Reader SIDs"), ReaderSids = readerSids,
WriterSids = ParseIdentifierList(NtfsEnsureWriterSidsTextBox.Text, "Writer SIDs"), WriterSids = writerSids,
EnsureTraverseGroups = NtfsEnsureTraverseCheckBox.IsChecked ?? false EnsureTraverseGroups = ensureTraverse
}); });
}); });
} }
catch (Exception ex)
{
AppendLog($"NTFS Ensure Groups / ACLs fehlgeschlagen: {ex.Message}", LogLevels.Error);
MessageBox.Show(this, ex.ToString(), "NTFS Ensure Groups / ACLs", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
private async void ExecuteAdCreateButton_Click(object sender, RoutedEventArgs e) private async void ExecuteAdCreateButton_Click(object sender, RoutedEventArgs e)
{ {
await ExecuteProviderActionAsync("AD Ensure Service Groups", async () => try
{ {
var provider = EnsureInitializedProvider<cLiamProviderAD>("Active Directory"); var provider = EnsureInitializedProvider<cLiamProviderAD>("Active Directory");
var serviceName = GetRequiredText(AdServiceNameTextBox.Text, "Service Name"); var serviceName = GetRequiredText(AdServiceNameTextBox.Text, "Service Name");
@@ -714,6 +720,8 @@ namespace LiamWorkflowDiagnostics
var ownerSids = ParseIdentifierList(AdOwnerSidsTextBox.Text, "Owner SIDs"); var ownerSids = ParseIdentifierList(AdOwnerSidsTextBox.Text, "Owner SIDs");
var memberSids = ParseIdentifierList(AdMemberSidsTextBox.Text, "Member SIDs"); var memberSids = ParseIdentifierList(AdMemberSidsTextBox.Text, "Member SIDs");
await ExecuteProviderActionAsync("AD Ensure Service Groups", async () =>
{
var result = await Task.Run(() => LiamWorkflowRuntime.CreateAdServiceGroups( var result = await Task.Run(() => LiamWorkflowRuntime.CreateAdServiceGroups(
provider, provider,
serviceName, serviceName,
@@ -726,16 +734,6 @@ namespace LiamWorkflowDiagnostics
return result; return result;
}, () => }, () =>
{ {
_ = EnsureInitializedProvider<cLiamProviderAD>("Active Directory");
var serviceName = GetRequiredText(AdServiceNameTextBox.Text, "Service Name");
var description = NormalizeOptionalText(AdDescriptionTextBox.Text);
var scope = AdScopeComboBox.SelectedItem is eLiamAccessRoleScopes selectedScope
? selectedScope
: eLiamAccessRoleScopes.Universal;
var groupType = AdGroupTypeComboBox.SelectedItem is ADServiceGroupCreator.ADGroupType selectedType
? selectedType
: ADServiceGroupCreator.ADGroupType.Distribution;
return CreateWhatIfResult( return CreateWhatIfResult(
"AD Ensure Service Groups", "AD Ensure Service Groups",
"Wuerde Service-Gruppen im Active Directory anhand der Namenskonvention sicherstellen. Es wurden keine Aenderungen ausgefuehrt.", "Wuerde Service-Gruppen im Active Directory anhand der Namenskonvention sicherstellen. Es wurden keine Aenderungen ausgefuehrt.",
@@ -745,40 +743,46 @@ namespace LiamWorkflowDiagnostics
Description = description, Description = description,
Scope = scope.ToString(), Scope = scope.ToString(),
GroupType = groupType.ToString(), GroupType = groupType.ToString(),
OwnerSids = ParseIdentifierList(AdOwnerSidsTextBox.Text, "Owner SIDs"), OwnerSids = ownerSids,
MemberSids = ParseIdentifierList(AdMemberSidsTextBox.Text, "Member SIDs") MemberSids = memberSids
}); });
}); });
} }
catch (Exception ex)
{
AppendLog($"AD Ensure Service Groups fehlgeschlagen: {ex.Message}", LogLevels.Error);
MessageBox.Show(this, ex.ToString(), "AD Ensure Service Groups", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
private async void ExecuteMsTeamsCloneButton_Click(object sender, RoutedEventArgs e) private async void ExecuteMsTeamsCloneButton_Click(object sender, RoutedEventArgs e)
{ {
await ExecuteProviderActionAsync("MsTeams Clone Team", async () => try
{ {
var provider = EnsureInitializedProvider<cLiamProviderMsTeams>("MsTeams"); var provider = EnsureInitializedProvider<cLiamProviderMsTeams>("MsTeams");
var sourceTeamId = GetRequiredText(MsTeamsSourceTeamIdTextBox.Text, "Source Team ID"); var sourceTeamId = GetRequiredText(MsTeamsSourceTeamIdTextBox.Text, "Source Team ID");
var newTeamName = GetRequiredText(MsTeamsNewNameTextBox.Text, "New Team Name"); var newTeamName = GetRequiredText(MsTeamsNewNameTextBox.Text, "New Team Name");
var description = NormalizeOptionalText(MsTeamsDescriptionTextBox.Text);
var visibility = GetSelectedMsTeamsVisibility(); var visibility = GetSelectedMsTeamsVisibility();
var partsToClone = GetSelectedCloneParts();
var additionalMembers = ParseIdentifierList(MsTeamsAdditionalMembersTextBox.Text, "Additional Members"); var additionalMembers = ParseIdentifierList(MsTeamsAdditionalMembersTextBox.Text, "Additional Members");
var additionalOwners = ParseIdentifierList(MsTeamsAdditionalOwnersTextBox.Text, "Additional Owners"); var additionalOwners = ParseIdentifierList(MsTeamsAdditionalOwnersTextBox.Text, "Additional Owners");
var result = await LiamWorkflowRuntime.CloneTeamAsync( await ExecuteProviderActionAsync("MsTeams Clone Team", async () =>
{
var result = await Task.Run(() => LiamWorkflowRuntime.CloneTeamAsync(
provider, provider,
sourceTeamId, sourceTeamId,
newTeamName, newTeamName,
NormalizeOptionalText(MsTeamsDescriptionTextBox.Text), description,
visibility, visibility,
GetSelectedCloneParts(), partsToClone,
string.Join(";", additionalMembers), string.Join(";", additionalMembers),
string.Join(";", additionalOwners)); string.Join(";", additionalOwners)));
return result; return result;
}, () => }, () =>
{ {
_ = EnsureInitializedProvider<cLiamProviderMsTeams>("MsTeams");
var sourceTeamId = GetRequiredText(MsTeamsSourceTeamIdTextBox.Text, "Source Team ID");
var newTeamName = GetRequiredText(MsTeamsNewNameTextBox.Text, "New Team Name");
return CreateWhatIfResult( return CreateWhatIfResult(
"MsTeams Clone Team", "MsTeams Clone Team",
"Wuerde ein Team anhand der gewaehlten Clone-Bestandteile klonen. Es wurden keine Aenderungen ausgefuehrt.", "Wuerde ein Team anhand der gewaehlten Clone-Bestandteile klonen. Es wurden keine Aenderungen ausgefuehrt.",
@@ -786,24 +790,33 @@ namespace LiamWorkflowDiagnostics
{ {
SourceTeamId = sourceTeamId, SourceTeamId = sourceTeamId,
NewTeamName = newTeamName, NewTeamName = newTeamName,
Description = NormalizeOptionalText(MsTeamsDescriptionTextBox.Text), Description = description,
Visibility = GetSelectedMsTeamsVisibility(), Visibility = visibility,
PartsToClone = GetSelectedCloneParts(), PartsToClone = partsToClone,
AdditionalMembers = ParseIdentifierList(MsTeamsAdditionalMembersTextBox.Text, "Additional Members"), AdditionalMembers = additionalMembers,
AdditionalOwners = ParseIdentifierList(MsTeamsAdditionalOwnersTextBox.Text, "Additional Owners") AdditionalOwners = additionalOwners
}); });
}); });
} }
catch (Exception ex)
{
AppendLog($"MsTeams Clone Team fehlgeschlagen: {ex.Message}", LogLevels.Error);
MessageBox.Show(this, ex.ToString(), "MsTeams Clone Team", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
private async void ExecuteExchangeMailboxButton_Click(object sender, RoutedEventArgs e) private async void ExecuteExchangeMailboxButton_Click(object sender, RoutedEventArgs e)
{ {
await ExecuteProviderActionAsync("Exchange Create Shared Mailbox", async () => try
{ {
var provider = EnsureInitializedProvider<cLiamProviderExchange>("Exchange"); var provider = EnsureInitializedProvider<cLiamProviderExchange>("Exchange");
var name = GetRequiredText(ExchangeMailboxNameTextBox.Text, "Name"); var name = GetRequiredText(ExchangeMailboxNameTextBox.Text, "Name");
var alias = GetRequiredText(ExchangeMailboxAliasTextBox.Text, "Alias"); var alias = GetRequiredText(ExchangeMailboxAliasTextBox.Text, "Alias");
var displayName = NormalizeOptionalText(ExchangeMailboxDisplayNameTextBox.Text); var displayName = NormalizeOptionalText(ExchangeMailboxDisplayNameTextBox.Text);
var primarySmtp = NormalizeOptionalText(ExchangeMailboxPrimarySmtpTextBox.Text); var primarySmtp = NormalizeOptionalText(ExchangeMailboxPrimarySmtpTextBox.Text);
await ExecuteProviderActionAsync("Exchange Create Shared Mailbox", async () =>
{
var result = await Task.Run(() => LiamWorkflowRuntime.CreateSharedMailbox( var result = await Task.Run(() => LiamWorkflowRuntime.CreateSharedMailbox(
provider, provider,
name, name,
@@ -814,29 +827,37 @@ namespace LiamWorkflowDiagnostics
return result; return result;
}, () => }, () =>
{ {
_ = EnsureInitializedProvider<cLiamProviderExchange>("Exchange");
return CreateWhatIfResult( return CreateWhatIfResult(
"Exchange Create Shared Mailbox", "Exchange Create Shared Mailbox",
"Wuerde eine Shared Mailbox inklusive Ownership-Gruppen erzeugen. Es wurden keine Aenderungen ausgefuehrt.", "Wuerde eine Shared Mailbox inklusive Ownership-Gruppen erzeugen. Es wurden keine Aenderungen ausgefuehrt.",
new new
{ {
Name = GetRequiredText(ExchangeMailboxNameTextBox.Text, "Name"), Name = name,
Alias = GetRequiredText(ExchangeMailboxAliasTextBox.Text, "Alias"), Alias = alias,
DisplayName = NormalizeOptionalText(ExchangeMailboxDisplayNameTextBox.Text), DisplayName = displayName,
PrimarySmtpAddress = NormalizeOptionalText(ExchangeMailboxPrimarySmtpTextBox.Text) PrimarySmtpAddress = primarySmtp
}); });
}); });
} }
catch (Exception ex)
{
AppendLog($"Exchange Create Shared Mailbox fehlgeschlagen: {ex.Message}", LogLevels.Error);
MessageBox.Show(this, ex.ToString(), "Exchange Create Shared Mailbox", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
private async void ExecuteExchangeDistributionButton_Click(object sender, RoutedEventArgs e) private async void ExecuteExchangeDistributionButton_Click(object sender, RoutedEventArgs e)
{ {
await ExecuteProviderActionAsync("Exchange Create Distribution Group", async () => try
{ {
var provider = EnsureInitializedProvider<cLiamProviderExchange>("Exchange"); var provider = EnsureInitializedProvider<cLiamProviderExchange>("Exchange");
var name = GetRequiredText(ExchangeDistributionNameTextBox.Text, "Name"); var name = GetRequiredText(ExchangeDistributionNameTextBox.Text, "Name");
var alias = GetRequiredText(ExchangeDistributionAliasTextBox.Text, "Alias"); var alias = GetRequiredText(ExchangeDistributionAliasTextBox.Text, "Alias");
var displayName = NormalizeOptionalText(ExchangeDistributionDisplayNameTextBox.Text); var displayName = NormalizeOptionalText(ExchangeDistributionDisplayNameTextBox.Text);
var primarySmtp = NormalizeOptionalText(ExchangeDistributionPrimarySmtpTextBox.Text); var primarySmtp = NormalizeOptionalText(ExchangeDistributionPrimarySmtpTextBox.Text);
await ExecuteProviderActionAsync("Exchange Create Distribution Group", async () =>
{
var result = await Task.Run(() => LiamWorkflowRuntime.CreateDistributionGroup( var result = await Task.Run(() => LiamWorkflowRuntime.CreateDistributionGroup(
provider, provider,
name, name,
@@ -847,19 +868,24 @@ namespace LiamWorkflowDiagnostics
return result; return result;
}, () => }, () =>
{ {
_ = EnsureInitializedProvider<cLiamProviderExchange>("Exchange");
return CreateWhatIfResult( return CreateWhatIfResult(
"Exchange Create Distribution Group", "Exchange Create Distribution Group",
"Wuerde eine Distribution Group inklusive Ownership-Gruppen erzeugen. Es wurden keine Aenderungen ausgefuehrt.", "Wuerde eine Distribution Group inklusive Ownership-Gruppen erzeugen. Es wurden keine Aenderungen ausgefuehrt.",
new new
{ {
Name = GetRequiredText(ExchangeDistributionNameTextBox.Text, "Name"), Name = name,
Alias = GetRequiredText(ExchangeDistributionAliasTextBox.Text, "Alias"), Alias = alias,
DisplayName = NormalizeOptionalText(ExchangeDistributionDisplayNameTextBox.Text), DisplayName = displayName,
PrimarySmtpAddress = NormalizeOptionalText(ExchangeDistributionPrimarySmtpTextBox.Text) PrimarySmtpAddress = primarySmtp
}); });
}); });
} }
catch (Exception ex)
{
AppendLog($"Exchange Create Distribution Group fehlgeschlagen: {ex.Message}", LogLevels.Error);
MessageBox.Show(this, ex.ToString(), "Exchange Create Distribution Group", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
private async void FetchSecurityGroupsButton_Click(object sender, RoutedEventArgs e) private async void FetchSecurityGroupsButton_Click(object sender, RoutedEventArgs e)
{ {
@@ -871,8 +897,10 @@ namespace LiamWorkflowDiagnostics
try try
{ {
AppendLog($"Lese SecurityGroups (Filter='{_session.Provider.GroupFilter}') ..."); var provider = _session.Provider;
var result = await LiamWorkflowRuntime.GetSecurityGroupsFromProviderAsync(_session.Provider); var filter = provider.GroupFilter;
AppendLog($"Lese SecurityGroups (Filter='{filter}') ...");
var result = await Task.Run(() => LiamWorkflowRuntime.GetSecurityGroupsFromProviderAsync(provider));
ResultTextBox.Text = JsonConvert.SerializeObject(result, Formatting.Indented); ResultTextBox.Text = JsonConvert.SerializeObject(result, Formatting.Indented);
if (!result.Success) if (!result.Success)
@@ -936,7 +964,7 @@ namespace LiamWorkflowDiagnostics
? $"{actionName} im WhatIf-Modus gestartet. Schreibende Aenderungen werden nur simuliert." ? $"{actionName} im WhatIf-Modus gestartet. Schreibende Aenderungen werden nur simuliert."
: $"{actionName} gestartet."); : $"{actionName} gestartet.");
var result = runInWhatIfMode var result = runInWhatIfMode
? whatIfAction() ? await Task.Run(whatIfAction)
: await action(); : await action();
ResultTextBox.Text = JsonConvert.SerializeObject(result, Formatting.Indented); ResultTextBox.Text = JsonConvert.SerializeObject(result, Formatting.Indented);
if (TryGetSuccessFlag(result, out var success) && !success) if (TryGetSuccessFlag(result, out var success) && !success)