From 1ee90a95dcb4fe6614eaa149bbe9416d8db59212 Mon Sep 17 00:00:00 2001 From: Lord Hepipud Date: Wed, 24 Jul 2019 14:28:53 +0200 Subject: [PATCH] Updated Services Provider, Enums and Helper functions * Added new function to get Service Name for Check output * Added missing Service State enums * Updated Service Status Code function to use existing Test-Numeric * Update Service Check with new Cmdlets --- lib/plugins/Invoke-IcingaCheckService.psm1 | 6 ++--- lib/provider/enums/Icinga_ProviderEnums.psm1 | 24 +++++++++++++++---- .../services/ConvertTo-ServiceStatusCode.psm1 | 13 +++++----- .../services/Get-IcingaServiceCheckName.psm1 | 20 ++++++++++++++++ 4 files changed, 50 insertions(+), 13 deletions(-) create mode 100644 lib/provider/services/Get-IcingaServiceCheckName.psm1 diff --git a/lib/plugins/Invoke-IcingaCheckService.psm1 b/lib/plugins/Invoke-IcingaCheckService.psm1 index 2479f5c..61ffcf4 100644 --- a/lib/plugins/Invoke-IcingaCheckService.psm1 +++ b/lib/plugins/Invoke-IcingaCheckService.psm1 @@ -1,4 +1,5 @@ Import-IcingaLib provider\services; +Import-IcingaLib provider\enums; Import-IcingaLib icinga\plugin; function Invoke-IcingaCheckService() @@ -11,12 +12,11 @@ function Invoke-IcingaCheckService() ); $FoundService = Get-IcingaServices -Service $Service; - $ServiceName = $FoundService.Values.metadata.ServiceName; - $DisplayName = $FoundService.Values.metadata.DisplayName; + $ServiceName = Get-IcingaServiceCheckName -ServiceInput $Service -Service $FoundService; $Status = ConvertTo-ServiceStatusCode -Status $Status; $StatusRaw = $FoundService.Values.configuration.Status.raw; - $IcingaCheck = New-IcingaCheck -Name ([string]::Format('Service "{0} ({1})"', $DisplayName, $ServiceName)) -Value $StatusRaw -ObjectExists $FoundService -ValueTranslation $ProviderEnums.ServicesStatus; + $IcingaCheck = New-IcingaCheck -Name $ServiceName -Value $StatusRaw -ObjectExists $FoundService -Translation $ProviderEnums.ServiceStatusName; $IcingaCheck.CritIfNotMatch($Status) | Out-Null; exit (New-IcingaCheckResult -Name "Service $Service" -Check $IcingaCheck -NoPerfData $TRUE -Compile); diff --git a/lib/provider/enums/Icinga_ProviderEnums.psm1 b/lib/provider/enums/Icinga_ProviderEnums.psm1 index 19ccb80..a8850fa 100644 --- a/lib/provider/enums/Icinga_ProviderEnums.psm1 +++ b/lib/provider/enums/Icinga_ProviderEnums.psm1 @@ -475,11 +475,26 @@ ################# /lib/provider/Services ########################################################### ##################################################################################################> -[hashtable]$ServiceStatus = @{ - 'Stopped' = 1; - 'Running' = 4; +[hashtable]$ServiceStatusName = @{ + 1 = 'Stopped'; + 2 = 'StartPending'; + 3 = 'StopPending'; + 4 = 'Running'; + 5 = 'ContinuePending'; + 6 = 'PausePending'; + 7 = 'Paused'; } - + +[hashtable]$ServiceStatus = @{ + 'Stopped' = 1; + 'StartPending' = 2; + 'StopPending' = 3; + 'Running' = 4; + 'ContinuePending' = 5; + 'PausePending' = 6; + 'Paused' = 7; +} + [hashtable]$ProviderEnums = @{ #/lib/provider/bios BiosCharacteristics = $BiosCharacteristics; @@ -504,6 +519,7 @@ WindowsOSType = $WindowsOSType; #/lib/provider/services ServiceStatus = $ServiceStatus; + ServiceStatusName =$ServiceStatusName; } Export-ModuleMember -Variable @('ProviderEnums'); \ No newline at end of file diff --git a/lib/provider/services/ConvertTo-ServiceStatusCode.psm1 b/lib/provider/services/ConvertTo-ServiceStatusCode.psm1 index 1e4772f..ce04d84 100644 --- a/lib/provider/services/ConvertTo-ServiceStatusCode.psm1 +++ b/lib/provider/services/ConvertTo-ServiceStatusCode.psm1 @@ -1,14 +1,15 @@ +Import-IcingaLib core\tools; +Import-IcingaLib provider\enums; + function ConvertTo-ServiceStatusCode() { param ( $Status ) - if ($Status -match "^\d+$") { - return $Status - } else { - $Status = $ProviderEnums.ServiceStatus.($Status); + if (Test-Numeric $Status) { + return [int]$Status } - return $Status; -} \ No newline at end of file + return [int]($ProviderEnums.ServiceStatus.$Status); +} diff --git a/lib/provider/services/Get-IcingaServiceCheckName.psm1 b/lib/provider/services/Get-IcingaServiceCheckName.psm1 new file mode 100644 index 0000000..8d8b4b3 --- /dev/null +++ b/lib/provider/services/Get-IcingaServiceCheckName.psm1 @@ -0,0 +1,20 @@ +function Get-IcingaServiceCheckName() +{ + param ( + [string]$ServiceInput, + $Service + ); + + if ($null -eq $Service) { + return [string]::Format( + 'Service "{0}"', + $ServiceInput + ); + } + + return [string]::Format( + 'Service "{0} ({1})"', + $Service.Values.metadata.DisplayName, + $Service.Values.metadata.ServiceName + ); +}