Update CheckBasket

This commit is contained in:
Crited 2019-09-11 16:07:52 +02:00
parent df1911c3c8
commit e7950c1616

View file

@ -10,17 +10,96 @@ function Invoke-IcingaCheckCommandBasket()
$CheckName = (Get-Command Invoke-IcingaCheck*).Name $CheckName = (Get-Command Invoke-IcingaCheck*).Name
} }
[int]$FieldID = 0;
[hashtable]$Basket = @{};
$Basket.Add('Datafield', @{});
$Basket.Add('DataList', @{});
$Basket.Add('Command', @{});
# DataList Entries (Default for NoPerfData)
if ($Basket.DataList.ContainsKey('PowerShell NoPerfData') -eq $FALSE) {
$Basket.DataList.Add(
'PowerShell NoPerfData', @{
'list_name' = 'PowerShell NoPerfData';
'owner' = $env:username;
'originalId' = '1'; #Gehört noch geändert
'entries' = @{};
}
);
}
$Basket.DataList["PowerShell NoPerfData"].entries.Add(
'0', @{
'entry_name' = '0';
'entry_value:' = "yes";
'format' = 'string';
'allowed_roles' = $NULL;
}
);
$Basket.DataList["PowerShell NoPerfData"].entries.Add(
'1', @{
'entry_name' = '1';
'entry_value:' = "no";
'format' = 'string';
'allowed_roles' = $NULL;
}
);
# DataList Entries (Default for Verbose)
if ($Basket.DataList.ContainsKey('PowerShell Verbose') -eq $FALSE) {
$Basket.DataList.Add(
'PowerShell Verbose', @{
'list_name' = 'PowerShell Verbose';
'owner' = $env:username;
'originalId' = '50'; #Gehört noch geändert
'entries' = @{};
}
);
}
$Basket.DataList["PowerShell Verbose"].entries.Add(
'0', @{
'entry_name' = '0';
'entry_value:' = "Show Default";
'format' = 'string';
'allowed_roles' = $NULL;
}
);
$Basket.DataList["PowerShell Verbose"].entries.Add(
'1', @{
'entry_name' = '1';
'entry_value:' = "Show Operator";
'format' = 'string';
'allowed_roles' = $NULL;
}
);
$Basket.DataList["PowerShell Verbose"].entries.Add(
'2', @{
'entry_name' = '2';
'entry_value:' = "Show Problems";
'format' = 'string';
'allowed_roles' = $NULL;
}
)
$Basket.DataList["PowerShell Verbose"].entries.Add(
'3', @{
'entry_name' = '3';
'entry_value:' = "Show All";
'format' = 'string';
'allowed_roles' = $NULL;
}
);
foreach ($check in $CheckName) { foreach ($check in $CheckName) {
[hashtable]$Basket = @{}; # [hashtable]$Basket = @{};
[int]$FieldID = 0; # [int]$FieldID = 0;
$Data = (Get-Help $check) $Data = (Get-Help $check)
$Basket.Add( $Basket.Command.Add(
'Command', @{ $Data.Syntax.syntaxItem.Name, @{
$Data.Syntax.syntaxItem.Name = @{
'arguments'= @{ 'arguments'= @{
'-C' = @{ '-C' = @{
'value' = [string]::Format('Use-Icinga; {0}', $Data.Syntax.syntaxItem.Name); 'value' = [string]::Format('Use-Icinga; {0}', $Data.Syntax.syntaxItem.Name);
@ -39,11 +118,10 @@ function Invoke-IcingaCheckCommandBasket()
'vars' = @{}; 'vars' = @{};
'zone' = $NULL; 'zone' = $NULL;
} }
}
) )
$Basket.Add('Datafield', @{}); # $Basket.Add('Datafield', @{});
$Basket.Add('DataList', @{}); # $Basket.Add('DataList', @{});
foreach ($parameter in $Data.Syntax.syntaxItem.parameter) { foreach ($parameter in $Data.Syntax.syntaxItem.parameter) {
if ($parameter.name -ne 'core') { if ($parameter.name -ne 'core') {
@ -54,7 +132,7 @@ function Invoke-IcingaCheckCommandBasket()
[string]$Order = 99 [string]$Order = 99
} }
$IcingaCustomVariable = [string]::Format('$PowerShell_{0}$', $parameter.Name); $IcingaCustomVariable = [string]::Format('$PowerShell_{0}_{1}$', $parameter.type.name, $parameter.Name);
# Conditional whether type of parameter is switch # Conditional whether type of parameter is switch
if ($parameter.type.name -eq 'switch') { if ($parameter.type.name -eq 'switch') {
@ -105,12 +183,13 @@ function Invoke-IcingaCheckCommandBasket()
} }
); );
$IcingaCustomVariable = [string]::Format('PowerShell_{0}', $parameter.Name); $IcingaCustomVariable = [string]::Format('PowerShell_{0}_{1}', $parameter.type.name, $parameter.Name);
$DataListName = [string]::Format('PowerShell {0}', $parameter.Name) $DataListName = [string]::Format('PowerShell {0}', $parameter.Name)
if ($parameter.type.name -eq 'switch') { if ($parameter.type.name -eq 'switch') {
$IcingaDataType='Datalist'; $IcingaDataType='Datalist';
if ($Basket.DataList.ContainsKey($DataListName) -eq $FALSE) {
$Basket.DataList.Add( $Basket.DataList.Add(
$DataListName, @{ $DataListName, @{
'list_name' = $DataListName; 'list_name' = $DataListName;
@ -119,7 +198,7 @@ function Invoke-IcingaCheckCommandBasket()
'entries' = @{}; 'entries' = @{};
} }
); );
}
} elseif ($parameter.type.name -eq 'Object') { } elseif ($parameter.type.name -eq 'Object') {
if ($parameter.Name -eq 'Verbose') { if ($parameter.Name -eq 'Verbose') {
$IcingaDataType='Datalist' $IcingaDataType='Datalist'
@ -132,6 +211,11 @@ function Invoke-IcingaCheckCommandBasket()
} }
$IcingaDataType = [string]::Format('Icinga\Module\Director\DataType\DataType{0}', $IcingaDataType) $IcingaDataType = [string]::Format('Icinga\Module\Director\DataType\DataType{0}', $IcingaDataType)
if ($Basket.Datafield.Values.varname -eq $IcingaCustomVariable)
{
}
else {
[int]$FieldID = $FieldID + 1;
$Basket.Datafield.Add( $Basket.Datafield.Add(
[string]$FieldID, @{ [string]$FieldID, @{
'varname' = $IcingaCustomVariable; 'varname' = $IcingaCustomVariable;
@ -143,6 +227,7 @@ function Invoke-IcingaCheckCommandBasket()
} }
); );
if ($parameter.type.name -eq 'switch' -or $parameter.Name -eq 'Verbose') { if ($parameter.type.name -eq 'switch' -or $parameter.Name -eq 'Verbose') {
$Basket.Datafield[[string]$FieldID].Add( $Basket.Datafield[[string]$FieldID].Add(
'settings', @{ 'settings', @{
@ -162,6 +247,7 @@ function Invoke-IcingaCheckCommandBasket()
'settings', @{} 'settings', @{}
); );
} }
}
[int]$FieldID = $FieldID + 1; [int]$FieldID = $FieldID + 1;
} }
} }
@ -171,16 +257,18 @@ function Invoke-IcingaCheckCommandBasket()
[int]$FieldID = $FieldID + 1; [int]$FieldID = $FieldID + 1;
$Basket.Command[$Data.Syntax.syntaxItem.Name].arguments.Add( $Basket.Command[$Data.Syntax.syntaxItem.Name].arguments.Add(
'-Verbose', @{ '-Verbose', @{
'value' = '$PowerShell_Verbose$'; 'value' = '$PowerShell_Object_Verbose$';
'order' = 'o'; 'order' = '99';
} }
); );
$Basket.Command[$Data.Syntax.syntaxItem.Name].vars.Add( $Basket.Command[$Data.Syntax.syntaxItem.Name].vars.Add(
'PowerShell_Verbose', "0" 'PowerShell_Object_Verbose', "0"
); );
if ($Basket.Datafield.Values.varname -eq $IcingaCustomVariable) {
} else {
$Basket.Datafield.Add( $Basket.Datafield.Add(
[string]$FieldID, @{ [string]$FieldID, @{
'varname' = 'PowerShell_Verbose'; 'varname' = 'PowerShell_Object_Verbose';
'caption' = 'Verbose'; 'caption' = 'Verbose';
'description' = $NULL; 'description' = $NULL;
'datatype' = 'Icinga\Module\Director\DataType\DataTypeDatalist'; 'datatype' = 'Icinga\Module\Director\DataType\DataTypeDatalist';
@ -193,6 +281,7 @@ function Invoke-IcingaCheckCommandBasket()
} }
} }
); );
}
} }
@ -200,17 +289,19 @@ function Invoke-IcingaCheckCommandBasket()
[int]$FieldID = $FieldID + 1; [int]$FieldID = $FieldID + 1;
$Basket.Command[$Data.Syntax.syntaxItem.Name].arguments.Add( $Basket.Command[$Data.Syntax.syntaxItem.Name].arguments.Add(
'-NoPerfData', @{ '-NoPerfData', @{
'set_if' = '$PowerShell_NoPerfData$'; 'set_if' = '$PowerShell_switch_NoPerfData$';
'set_if_format' = 'string'; 'set_if_format' = 'string';
'order' = '99'; 'order' = '99';
} }
); );
$Basket.Command[$Data.Syntax.syntaxItem.Name].vars.Add( $Basket.Command[$Data.Syntax.syntaxItem.Name].vars.Add(
'PowerShell_NoPerfData', "0" 'PowerShell_switch_NoPerfData', "0"
); );
if ($Basket.Datafield.Values.varname -eq $IcingaCustomVariable) {
} else {
$Basket.Datafield.Add( $Basket.Datafield.Add(
[string]$FieldID, @{ [string]$FieldID, @{
'varname' = 'PowerShell_NoPerfData'; 'varname' = 'PowerShell_switch_NoPerfData';
'caption' = 'Perf Data'; 'caption' = 'Perf Data';
'description' = $NULL; 'description' = $NULL;
'datatype' = 'Icinga\Module\Director\DataType\DataTypeDatalist'; 'datatype' = 'Icinga\Module\Director\DataType\DataTypeDatalist';
@ -223,89 +314,19 @@ function Invoke-IcingaCheckCommandBasket()
} }
} }
); );
}
# DataList Entries (Default for NoPerfData)
if ($Basket.DataList.ContainsKey('PowerShell NoPerfData') -eq $FALSE) {
$Basket.DataList.Add(
'PowerShell NoPerfData', @{
'list_name' = 'PowerShell NoPerfData';
'owner' = $env:username;
'originalId' = '1'; #Gehört noch geändert
'entries' = @{};
}
);
}
$Basket.DataList["PowerShell NoPerfData"].entries.Add(
'0', @{
'entry_name' = '0';
'entry_value:' = "yes";
'format' = 'string';
'allowed_roles' = $NULL;
}
);
$Basket.DataList["PowerShell NoPerfData"].entries.Add(
'1', @{
'entry_name' = '1';
'entry_value:' = "no";
'format' = 'string';
'allowed_roles' = $NULL;
}
);
# DataList Entries (Default for Verbose)
if ($Basket.DataList.ContainsKey('PowerShell Verbose') -eq $FALSE) {
$Basket.DataList.Add(
'PowerShell Verbose', @{
'list_name' = 'PowerShell Verbose';
'owner' = $env:username;
'originalId' = '50'; #Gehört noch geändert
'entries' = @{};
}
);
} }
$Basket.DataList["PowerShell Verbose"].entries.Add( }
'0', @{
'entry_name' = '0';
'entry_value:' = "Show Default";
'format' = 'string';
'allowed_roles' = $NULL;
}
);
$Basket.DataList["PowerShell Verbose"].entries.Add(
'1', @{
'entry_name' = '1';
'entry_value:' = "Show Operator";
'format' = 'string';
'allowed_roles' = $NULL;
}
);
$Basket.DataList["PowerShell Verbose"].entries.Add(
'2', @{
'entry_name' = '2';
'entry_value:' = "Show Problems";
'format' = 'string';
'allowed_roles' = $NULL;
}
)
$Basket.DataList["PowerShell Verbose"].entries.Add(
'3', @{
'entry_name' = '3';
'entry_value:' = "Show All";
'format' = 'string';
'allowed_roles' = $NULL;
}
);
$AllChecks.Add($check, $Basket); $AllChecks.Add($check, $Basket);
} }
Write-Host $CheckName; Write-Host $CheckName;
Write-Host $CheckName.Count; Write-Host $CheckName.Count;
if ([string]$CheckName.Count -eq '1') { # if ([string]$CheckName.Count -eq '1') {
$output=ConvertTo-Json -D 100 $Basket > Check.json; $output=ConvertTo-Json -D 100 $Basket > Check.json;
} else { # } else {
$output=ConvertTo-Json -D 100 $AllChecks > Check.json; # $output=ConvertTo-Json -D 100 $AllChecks > Check.json;
} # }
return $output; return $output;
} }