- update multiple LIAM projects and solution/config files - add LiamWorkflowDiagnostics app sources and generated outputs - include current workspace state (dependencies and build outputs)
254 lines
15 KiB
XML
254 lines
15 KiB
XML
<Window x:Class="LiamWorkflowDiagnostics.MainWindow"
|
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
Title="LIAM Workflow Diagnostics" Width="1100"
|
|
WindowStartupLocation="CenterScreen">
|
|
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled">
|
|
<Grid Margin="12">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="2*"/>
|
|
<RowDefinition Height="*"/>
|
|
</Grid.RowDefinitions>
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition/>
|
|
</Grid.ColumnDefinitions>
|
|
|
|
<GroupBox Header="Provider Settings" Grid.Row="0" Margin="0,0,0,8">
|
|
<Grid Margin="10">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="180"/>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="160"/>
|
|
<ColumnDefinition Width="*"/>
|
|
</Grid.ColumnDefinitions>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
</Grid.RowDefinitions>
|
|
|
|
<TextBlock Text="Config Class ID" Grid.Row="0" Grid.Column="0" Margin="0,0,8,8" VerticalAlignment="Center"/>
|
|
<TextBox x:Name="ProviderConfigIdTextBox"
|
|
Grid.Row="0" Grid.Column="1" Margin="0,0,16,8" Height="26"/>
|
|
|
|
<TextBlock Text="Config Object ID" Grid.Row="0" Grid.Column="2" Margin="0,0,8,8" VerticalAlignment="Center"/>
|
|
<TextBox x:Name="ProviderConfigObjectIdTextBox"
|
|
Grid.Row="0" Grid.Column="3" Margin="0,0,0,8" Height="26"/>
|
|
|
|
<TextBlock Text="Provider Type" Grid.Row="1" Grid.Column="0" Margin="0,0,8,8" VerticalAlignment="Center"/>
|
|
<ComboBox x:Name="ProviderTypeCombo"
|
|
Grid.Row="1" Grid.Column="1" Margin="0,0,16,8" Height="26"/>
|
|
|
|
<TextBlock Text="Domain" Grid.Row="1" Grid.Column="2" Margin="0,0,8,8" VerticalAlignment="Center"/>
|
|
<TextBox x:Name="DomainTextBox"
|
|
Grid.Row="1" Grid.Column="3" Margin="0,0,0,8" Height="26"/>
|
|
|
|
<TextBlock Text="Target / Root Path" Grid.Row="2" Grid.Column="0" Margin="0,0,8,8" VerticalAlignment="Center"/>
|
|
<TextBox x:Name="RootPathTextBox"
|
|
Grid.Row="2" Grid.Column="1" Margin="0,0,16,8" Height="26"/>
|
|
|
|
<TextBlock Text="Max Depth" Grid.Row="2" Grid.Column="2" Margin="0,0,8,8" VerticalAlignment="Center"/>
|
|
<TextBox x:Name="MaxDepthTextBox"
|
|
Grid.Row="2" Grid.Column="3" Margin="0,0,0,8" Height="26"/>
|
|
|
|
<TextBlock Text="Group Filter" Grid.Row="3" Grid.Column="0" Margin="0,0,8,8" VerticalAlignment="Center"/>
|
|
<TextBox x:Name="GroupFilterTextBox"
|
|
Grid.Row="3" Grid.Column="1" Margin="0,0,16,8" Height="26"/>
|
|
|
|
<TextBlock Text="Group Path / OU" Grid.Row="3" Grid.Column="2" Margin="0,0,8,8" VerticalAlignment="Center"/>
|
|
<TextBox x:Name="GroupPathTextBox"
|
|
Grid.Row="3" Grid.Column="3" Margin="0,0,0,8" Height="26"/>
|
|
|
|
<TextBlock Text="Data Area Filter" Grid.Row="4" Grid.Column="0" Margin="0,0,8,8" VerticalAlignment="Center" Visibility="Collapsed"/>
|
|
<TextBox x:Name="DataAreaFilterTextBox"
|
|
Grid.Row="4" Grid.Column="1" Margin="0,0,16,8" Height="26" Visibility="Collapsed"/>
|
|
|
|
<TextBlock Text="Data Area Regex" Grid.Row="4" Grid.Column="2" Margin="0,0,8,8" VerticalAlignment="Center" Visibility="Collapsed"/>
|
|
<TextBox x:Name="DataAreaRegexTextBox"
|
|
Grid.Row="4" Grid.Column="3" Margin="0,0,0,8" Height="26" Visibility="Collapsed"/>
|
|
|
|
<TextBlock Text="Group Strategy" Grid.Row="5" Grid.Column="0" Margin="0,0,8,8" VerticalAlignment="Center"/>
|
|
<ComboBox x:Name="GroupStrategyCombo"
|
|
Grid.Row="5" Grid.Column="1" Margin="0,0,16,8" Height="26"/>
|
|
|
|
<TextBlock Text="Group Regex" Grid.Row="5" Grid.Column="2" Margin="0,0,8,8" VerticalAlignment="Center" Visibility="Collapsed"/>
|
|
<TextBox x:Name="GroupRegexTextBox"
|
|
Grid.Row="5" Grid.Column="3" Margin="0,0,0,8" Height="26" Visibility="Collapsed"/>
|
|
|
|
<TextBlock Text="Traverse Group" Grid.Row="6" Grid.Column="0" Margin="0,0,8,8" VerticalAlignment="Center" Visibility="Collapsed"/>
|
|
<TextBox x:Name="TraverseGroupTextBox"
|
|
Grid.Row="6" Grid.Column="1" Margin="0,0,16,8" Height="26" Visibility="Collapsed"/>
|
|
|
|
<TextBlock Text="Owner Group (Global)" Grid.Row="6" Grid.Column="2" Margin="0,0,8,8" VerticalAlignment="Center" Visibility="Collapsed"/>
|
|
<TextBox x:Name="OwnerGroupGlobalTextBox"
|
|
Grid.Row="6" Grid.Column="3" Margin="0,0,0,8" Height="26" Visibility="Collapsed"/>
|
|
|
|
<TextBlock Text="Owner Group (Local)" Grid.Row="7" Grid.Column="0" Margin="0,0,8,8" VerticalAlignment="Center" Visibility="Collapsed"/>
|
|
<TextBox x:Name="OwnerGroupLocalTextBox"
|
|
Grid.Row="7" Grid.Column="1" Margin="0,0,16,8" Height="26" Visibility="Collapsed"/>
|
|
|
|
<TextBlock Text="Write Group (Global)" Grid.Row="7" Grid.Column="2" Margin="0,0,8,8" VerticalAlignment="Center" Visibility="Collapsed"/>
|
|
<TextBox x:Name="WriteGroupGlobalTextBox"
|
|
Grid.Row="7" Grid.Column="3" Margin="0,0,0,8" Height="26" Visibility="Collapsed"/>
|
|
|
|
<TextBlock Text="Write Group (Local)" Grid.Row="8" Grid.Column="0" Margin="0,0,8,8" VerticalAlignment="Center" Visibility="Collapsed"/>
|
|
<TextBox x:Name="WriteGroupLocalTextBox"
|
|
Grid.Row="8" Grid.Column="1" Margin="0,0,16,8" Height="26" Visibility="Collapsed"/>
|
|
|
|
<TextBlock Text="Read Group (Global)" Grid.Row="8" Grid.Column="2" Margin="0,0,8,8" VerticalAlignment="Center" Visibility="Collapsed"/>
|
|
<TextBox x:Name="ReadGroupGlobalTextBox"
|
|
Grid.Row="8" Grid.Column="3" Margin="0,0,0,8" Height="26" Visibility="Collapsed"/>
|
|
|
|
<TextBlock Text="Read Group (Local)" Grid.Row="9" Grid.Column="0" Margin="0,0,8,0" VerticalAlignment="Center" Visibility="Collapsed"/>
|
|
<TextBox x:Name="ReadGroupLocalTextBox"
|
|
Grid.Row="9" Grid.Column="1" Margin="0,0,16,0" Height="26" Visibility="Collapsed"/>
|
|
</Grid>
|
|
</GroupBox>
|
|
|
|
<GroupBox Header="Credentials" Grid.Row="1" Margin="0,0,0,8">
|
|
<Grid Margin="10">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="180"/>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="160"/>
|
|
<ColumnDefinition Width="*"/>
|
|
</Grid.ColumnDefinitions>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
</Grid.RowDefinitions>
|
|
|
|
<TextBlock Text="Account (UPN / User)" Grid.Row="0" Grid.Column="0" Margin="0,0,8,8" VerticalAlignment="Center"/>
|
|
<TextBox x:Name="CredentialUserTextBox"
|
|
Grid.Row="0" Grid.Column="1" Margin="0,0,16,8" Height="26"/>
|
|
|
|
<TextBlock Text="Credential Domain" Grid.Row="0" Grid.Column="2" Margin="0,0,8,8" VerticalAlignment="Center"/>
|
|
<TextBox x:Name="CredentialDomainTextBox"
|
|
Grid.Row="0" Grid.Column="3" Margin="0,0,0,8" Height="26"/>
|
|
|
|
<TextBlock Text="Password / Secret" Grid.Row="1" Grid.Column="0" Margin="0,0,8,0" VerticalAlignment="Center"/>
|
|
<PasswordBox x:Name="CredentialPasswordBox"
|
|
Grid.Row="1" Grid.Column="1" Margin="0,0,16,0" Height="26"/>
|
|
|
|
<TextBlock Text="Mask in log as" Grid.Row="1" Grid.Column="2" Margin="0,0,8,0" VerticalAlignment="Center" Visibility="Collapsed"/>
|
|
<TextBox x:Name="MaskTokenTextBox"
|
|
Grid.Row="1" Grid.Column="3" Margin="0,0,0,0" Height="26" Text="***" Visibility="Collapsed"/>
|
|
</Grid>
|
|
</GroupBox>
|
|
|
|
<GroupBox Header="License & Matrix42 Environment" Grid.Row="2" Margin="0,0,0,8">
|
|
<Grid Margin="10">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="180"/>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="160"/>
|
|
<ColumnDefinition Width="*"/>
|
|
</Grid.ColumnDefinitions>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
</Grid.RowDefinitions>
|
|
|
|
<TextBlock Text="Portal Server Name" Grid.Row="0" Grid.Column="0" Margin="0,0,8,8" VerticalAlignment="Center"/>
|
|
<TextBox x:Name="ServerNameTextBox"
|
|
Grid.Row="0" Grid.Column="1" Margin="0,0,16,8" Height="26"/>
|
|
|
|
<TextBlock Text="Use HTTPS" Grid.Row="0" Grid.Column="2" Margin="0,0,8,8" VerticalAlignment="Center" Visibility="Collapsed"/>
|
|
<CheckBox x:Name="UseHttpsCheckBox"
|
|
Grid.Row="0" Grid.Column="3" VerticalAlignment="Center" Visibility="Collapsed"/>
|
|
|
|
<TextBlock Text="License XML (raw string)" Grid.Row="1" Grid.Column="0" Margin="0,0,8,8" VerticalAlignment="Top"/>
|
|
<TextBox x:Name="LicenseTextBox"
|
|
Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="3" Margin="0,0,0,8"
|
|
Height="120" TextWrapping="Wrap" AcceptsReturn="True" VerticalScrollBarVisibility="Auto"/>
|
|
|
|
<TextBlock Text="Optional: provide JSON to load provider data (sanitized output from logs)" Grid.Row="2" Grid.Column="0" Margin="0,0,8,0" VerticalAlignment="Top"/>
|
|
<TextBox x:Name="RawJsonTextBox"
|
|
Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="3" Margin="0,0,0,0"
|
|
Height="120" TextWrapping="Wrap" AcceptsReturn="True" VerticalScrollBarVisibility="Auto"/>
|
|
</Grid>
|
|
</GroupBox>
|
|
|
|
<Expander Header="Advanced Configuration (Optional)" Grid.Row="3" Margin="0,0,0,8" IsExpanded="False">
|
|
<Grid Margin="10">
|
|
<Grid.ColumnDefinitions>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="*"/>
|
|
<ColumnDefinition Width="*"/>
|
|
</Grid.ColumnDefinitions>
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="Auto"/>
|
|
</Grid.RowDefinitions>
|
|
|
|
<StackPanel Grid.Row="0" Grid.Column="0" Margin="0,0,12,0">
|
|
<TextBlock Text="Additional Configuration (key=value per line)" Margin="0,0,0,4"/>
|
|
<TextBox x:Name="AdditionalConfigTextBox"
|
|
Height="120" TextWrapping="Wrap" AcceptsReturn="True" VerticalScrollBarVisibility="Auto"/>
|
|
</StackPanel>
|
|
|
|
<StackPanel Grid.Row="0" Grid.Column="1" Margin="0,0,12,0">
|
|
<TextBlock Text="Custom Tags (key=value per line)" Margin="0,0,0,4"/>
|
|
<TextBox x:Name="CustomTagsTextBox"
|
|
Height="120" TextWrapping="Wrap" AcceptsReturn="True" VerticalScrollBarVisibility="Auto"/>
|
|
</StackPanel>
|
|
|
|
<StackPanel Grid.Row="0" Grid.Column="2">
|
|
<TextBlock Text="Naming Conventions JSON Array" Margin="0,0,0,4"/>
|
|
<TextBox x:Name="NamingConventionsTextBox"
|
|
Height="120" TextWrapping="Wrap" AcceptsReturn="True" VerticalScrollBarVisibility="Auto"/>
|
|
</StackPanel>
|
|
|
|
<StackPanel Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="3" Orientation="Horizontal" Margin="0,12,0,0">
|
|
<TextBlock Text="Tip: leave blank fields untouched if not required by the chosen provider." Foreground="Gray" VerticalAlignment="Center"/>
|
|
</StackPanel>
|
|
</Grid>
|
|
</Expander>
|
|
|
|
<StackPanel Grid.Row="4" Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,0,0,8">
|
|
<Button x:Name="LoadJsonButton" Content="Load JSON" Width="110" Margin="0,0,8,0" Click="LoadJsonButton_Click"/>
|
|
<Button x:Name="ExportJsonButton" Content="Export Sanitized JSON" Width="170" Margin="0,0,8,0" Click="ExportJsonButton_Click"/>
|
|
<Button x:Name="InitializeButton" Content="Initialize Provider" Width="160" Margin="0,0,8,0" Click="InitializeButton_Click"/>
|
|
<Button x:Name="FetchDataAreasButton" Content="Fetch Data Areas" Width="160" Margin="0,0,8,0" Click="FetchDataAreasButton_Click"/>
|
|
<Button x:Name="FetchSecurityGroupsButton" Content="Fetch Security Groups" Width="170" Margin="0,0,8,0" Click="FetchSecurityGroupsButton_Click"/>
|
|
<Button x:Name="ClearLogButton" Content="Clear Log" Width="110" Click="ClearLogButton_Click"/>
|
|
</StackPanel>
|
|
|
|
<GroupBox Header="Result" Grid.Row="5" Margin="0,0,0,8">
|
|
<Grid Margin="10">
|
|
<TextBox x:Name="ResultTextBox"
|
|
TextWrapping="Wrap" AcceptsReturn="True" VerticalScrollBarVisibility="Auto"
|
|
HorizontalScrollBarVisibility="Auto"/>
|
|
</Grid>
|
|
</GroupBox>
|
|
|
|
<GroupBox Header="Session Log" Grid.Row="6">
|
|
<Grid Margin="10">
|
|
<Grid.RowDefinitions>
|
|
<RowDefinition Height="Auto"/>
|
|
<RowDefinition Height="*"/>
|
|
</Grid.RowDefinitions>
|
|
<TextBlock x:Name="StatusTextBlock" Grid.Row="0" Margin="0,0,0,6" Foreground="Gray"/>
|
|
<ListBox x:Name="LogListBox" Grid.Row="1"
|
|
ScrollViewer.VerticalScrollBarVisibility="Auto"
|
|
ScrollViewer.HorizontalScrollBarVisibility="Auto"
|
|
ScrollViewer.CanContentScroll="True"/>
|
|
</Grid>
|
|
</GroupBox>
|
|
</Grid>
|
|
</ScrollViewer>
|
|
</Window>
|