Skip to content

Commit 082fc18

Browse files
committed
Adds support to ignore empty check packages
1 parent 184b3cd commit 082fc18

File tree

3 files changed

+47
-39
lines changed

3 files changed

+47
-39
lines changed

doc/31-Changelog.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ Released closed milestones can be found on [GitHub](https://github.com/Icinga/ic
1111

1212
[Issue and PRs](https://github.com/Icinga/icinga-powershell-framework/milestone/10?closed=1)
1313

14+
### Enhancements
15+
16+
* [#136](https://github.com/Icinga/icinga-powershell-framework/pull/136) Adds support to ignore empty check packages and return `Ok` instead of `Unknown` if `-IgnoreEmptyPackage` is set on `New-IcingaCheckPackage`
17+
1418
### Bugfixes
1519

1620
* [#127](https://github.com/Icinga/icinga-powershell-framework/issues/127) Fixes wrong error message on failed MSSQL connection due to database not reachable by using `-IntegratedSecurity`

doc/developerguide/02-New-IcingaCheckPackage.md

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,25 +10,24 @@ The `IcingaCheckPackage` is the first step to take to write more advanced checks
1010

1111
It will be used like in this example:
1212

13-
1413
```powershell
1514
$IcingaPackage = New-IcingaCheckPackage -Name 'My Package' -OperatorAnd;
1615
```
1716

1817
## Arguments
1918

20-
| Argument | Input | Mandatory | Description |
21-
| --- | --- | --- | --- |
22-
| Name | String | * | The unique name of each package within a plugin. Will be displayed in the check output. |
23-
| OperatorAnd | Switch | | Every added check/package requires to return Ok for this package to be Ok |
24-
| OperatorOr | Switch | | One added check/package requires to return Ok for this package to be Ok |
25-
| OperatorNone | Switch | | None of added check/package has to return Ok for this package to be Ok |
26-
| OperatorMin | Int | | Minimum of `n` added checks/packages requires to return Ok for this package to be Ok |
27-
| OperatorMax | Int | | Maximum of `n` added checks/packages requires to return Ok for this package to be Ok |
28-
| Checks | Array | | Array of checks to be added to the check package |
29-
| Verbose | int | | Defines the level of output detail from 0 lowest to 3 highest detail |
30-
| Hidden | Switch | | If set, the check package doesn't generate output |
31-
19+
| Argument | Input | Mandatory | Description |
20+
| --- | --- | --- | --- |
21+
| Name | String | * | The unique name of each package within a plugin. Will be displayed in the check output. |
22+
| OperatorAnd | Switch | | Every added check/package requires to return Ok for this package to be Ok |
23+
| OperatorOr | Switch | | One added check/package requires to return Ok for this package to be Ok |
24+
| OperatorNone | Switch | | None of added check/package has to return Ok for this package to be Ok |
25+
| OperatorMin | Int | | Minimum of `n` added checks/packages requires to return Ok for this package to be Ok |
26+
| OperatorMax | Int | | Maximum of `n` added checks/packages requires to return Ok for this package to be Ok |
27+
| Checks | Array | | Array of checks to be added to the check package |
28+
| Verbose | int | | Defines the level of output detail from 0 lowest to 3 highest detail |
29+
| IgnoreEmptyPackage | Switch | | By default a check package will return `Unknown` in case no checks are assigned. Setting this argument will ignore this and return `Ok` instead
30+
| Hidden | Switch | | If set, the check package doesn't generate output |
3231

3332
### Examples
3433

@@ -47,4 +46,3 @@ $IcingaPackage = New-IcingaCheckPackage -Name 'My Package' -OperatorAnd;
4746
$IcingaPackage.AddCheck($IcingaCheck1);
4847
$IcingaPackage.AddCheck($IcingaCheck2);
4948
```
50-

lib/icinga/plugin/New-IcingaCheckPackage.psm1

Lines changed: 31 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -8,33 +8,35 @@ function New-IcingaCheckPackage()
88
[switch]$OperatorAnd,
99
[switch]$OperatorOr,
1010
[switch]$OperatorNone,
11-
[int]$OperatorMin = -1,
12-
[int]$OperatorMax = -1,
13-
[array]$Checks = @(),
14-
[int]$Verbose = 0,
15-
[switch]$Hidden = $FALSE
11+
[int]$OperatorMin = -1,
12+
[int]$OperatorMax = -1,
13+
[array]$Checks = @(),
14+
[int]$Verbose = 0,
15+
[switch]$IgnoreEmptyPackage = $FALSE,
16+
[switch]$Hidden = $FALSE
1617
);
1718

1819
$Check = New-Object -TypeName PSObject;
19-
$Check | Add-Member -MemberType NoteProperty -Name 'name' -Value $Name;
20-
$Check | Add-Member -MemberType NoteProperty -Name 'exitcode' -Value -1;
21-
$Check | Add-Member -MemberType NoteProperty -Name 'verbose' -Value $Verbose;
22-
$Check | Add-Member -MemberType NoteProperty -Name 'hidden' -Value $Hidden;
23-
$Check | Add-Member -MemberType NoteProperty -Name 'checks' -Value $Checks;
24-
$Check | Add-Member -MemberType NoteProperty -Name 'opand' -Value $OperatorAnd;
25-
$Check | Add-Member -MemberType NoteProperty -Name 'opor' -Value $OperatorOr;
26-
$Check | Add-Member -MemberType NoteProperty -Name 'opnone' -Value $OperatorNone;
27-
$Check | Add-Member -MemberType NoteProperty -Name 'opmin' -Value $OperatorMin;
28-
$Check | Add-Member -MemberType NoteProperty -Name 'opmax' -Value $OperatorMax;
29-
$Check | Add-Member -MemberType NoteProperty -Name 'spacing' -Value 0;
30-
$Check | Add-Member -MemberType NoteProperty -Name 'compiled' -Value $FALSE;
31-
$Check | Add-Member -MemberType NoteProperty -Name 'perfdata' -Value $FALSE;
32-
$Check | Add-Member -MemberType NoteProperty -Name 'checkcommand' -Value '';
33-
$Check | Add-Member -MemberType NoteProperty -Name 'headermsg' -Value '';
34-
$Check | Add-Member -MemberType NoteProperty -Name 'checkpackage' -Value $TRUE;
35-
$Check | Add-Member -MemberType NoteProperty -Name 'warningchecks' -Value @();
36-
$Check | Add-Member -MemberType NoteProperty -Name 'criticalchecks' -Value @();
37-
$Check | Add-Member -MemberType NoteProperty -Name 'unknownchecks' -Value @();
20+
$Check | Add-Member -MemberType NoteProperty -Name 'name' -Value $Name;
21+
$Check | Add-Member -MemberType NoteProperty -Name 'exitcode' -Value -1;
22+
$Check | Add-Member -MemberType NoteProperty -Name 'verbose' -Value $Verbose;
23+
$Check | Add-Member -MemberType NoteProperty -Name 'hidden' -Value $Hidden;
24+
$Check | Add-Member -MemberType NoteProperty -Name 'ignoreemptypackage' -Value $IgnoreEmptyPackage;
25+
$Check | Add-Member -MemberType NoteProperty -Name 'checks' -Value $Checks;
26+
$Check | Add-Member -MemberType NoteProperty -Name 'opand' -Value $OperatorAnd;
27+
$Check | Add-Member -MemberType NoteProperty -Name 'opor' -Value $OperatorOr;
28+
$Check | Add-Member -MemberType NoteProperty -Name 'opnone' -Value $OperatorNone;
29+
$Check | Add-Member -MemberType NoteProperty -Name 'opmin' -Value $OperatorMin;
30+
$Check | Add-Member -MemberType NoteProperty -Name 'opmax' -Value $OperatorMax;
31+
$Check | Add-Member -MemberType NoteProperty -Name 'spacing' -Value 0;
32+
$Check | Add-Member -MemberType NoteProperty -Name 'compiled' -Value $FALSE;
33+
$Check | Add-Member -MemberType NoteProperty -Name 'perfdata' -Value $FALSE;
34+
$Check | Add-Member -MemberType NoteProperty -Name 'checkcommand' -Value '';
35+
$Check | Add-Member -MemberType NoteProperty -Name 'headermsg' -Value '';
36+
$Check | Add-Member -MemberType NoteProperty -Name 'checkpackage' -Value $TRUE;
37+
$Check | Add-Member -MemberType NoteProperty -Name 'warningchecks' -Value @();
38+
$Check | Add-Member -MemberType NoteProperty -Name 'criticalchecks' -Value @();
39+
$Check | Add-Member -MemberType NoteProperty -Name 'unknownchecks' -Value @();
3840

3941
$Check | Add-Member -MemberType ScriptMethod -Name 'HasChecks' -Value {
4042
if ($this.checks -ne 0) {
@@ -154,7 +156,11 @@ function New-IcingaCheckPackage()
154156
}
155157
}
156158
} else {
157-
$this.exitcode = $IcingaEnums.IcingaExitCode.Unknown;
159+
if ($this.ignoreemptypackage) {
160+
$this.exitcode = $IcingaEnums.IcingaExitCode.Ok;
161+
} else {
162+
$this.exitcode = $IcingaEnums.IcingaExitCode.Unknown;
163+
}
158164
}
159165

160166
if ([int]$this.exitcode -eq -1) {

0 commit comments

Comments
 (0)