Skip to content
Commits on Source (4)
......@@ -3,22 +3,27 @@ Alexander A. Klimov <alexander.klimov@icinga.com>
Alexander Fuhr <alexander.fuhr@netways.de>
Alexander Wirt <formorer@debian.org>
Andreas Olsson <andreas@arrakis.se>
ayoubabid <ayoubabid@users.noreply.github.com>
Bas Couwenberg <sebastic@xs4all.nl>
baufrecht <baufrecht@users.noreply.github.com>
Bence Nagy <bence@underyx.me>
Benedikt Heine <bebe@bebehei.de>
Bernd Erk <bernd.erk@icinga.com>
Bernhard Friedreich <bernhard.friedreich@brz.gv.at>
Blerim Sheqa <blerim.sheqa@icinga.com>
Boden Garman <boden.garman@spintel.net.au>
bradynathan <bradynathan@gmail.com>
Carlos Cesario <carloscesario@gmail.com>
Carsten <carsten.koebke@gmx.de>
Carsten Koebke <carsten.koebke@koebbes.de>
chisatohasimoto <hasimoto@designet.co.jp>
Chris Reeves <chris.reeves@york.ac.uk>
Christopher Rüll <christopher.ruell@netways.de>
Christoph Niemann <kordolan@googlemail.com>
Christoph Wiechert <wio@psitrax.de>
Christopher Rüll <christopher.ruell@netways.de>
Constantin Matheis <constantin.matheis@gmail.com>
Cornelius Wachinger <cornelius@dercorn.com>
cstegm <cstegm@users.noreply.github.com>
Daniel <d.lorych@gmail.com>
Daniel Shirley <aditaa@ig2ad.com>
Davide Bizzarri <davide.bizzarri@wuerth-phoenix.com>
......@@ -34,21 +39,25 @@ Francesco Colista <fcolista@alpinelinux.org>
Francesco Mazzi <fmazzi@comune.genova.it>
Goran Rakic <grakic@devbase.net>
Gunnar Beutner <gunnar.beutner@netways.de>
h0rmiga <github@hormiga.ru>
hailthemelody@rm-laptop04 <hailthemelody@rm-laptop04>
Hector Sanjuan <hector.sanjuan@nugg.ad>
Heike Jurzik <huhn@lion-3.fritz.box>
Ian Shearin <ishearin@womply.com>
ignasr <ignas.linux@gmail.com>
Janne Heß <janne@hess.ooo>
Jannis Moßhammer <jannis.mosshammer@netways.de>
Jennifer Mourek <jennifer.mourek@icinga.com>
Jo Rhett <jo@chegg.com>
Joe Doherty <git@pjuu.com>
Johannes Meyer <johannes.meyer@icinga.com>
Joonas Kylmälä <joonas.kylmala@kirjastot.fi>
Jo Rhett <jo@chegg.com>
Ken Jungclaus <lum33n@web.de>
Klaus Jrgensen <klaus@blackwoodseven.com>
Lee Clemens <java@leeclemens.net>
Loei Petrus Marogi <loeipetrus.marogi@netways.de>
Louis Sautier <sautier.louis@gmail.com>
mapa82 <maik.paetzold@akra.de>
Marc DeTrano <marc@gridshield.net>
Marcel Weinberg <marcel.weinberg@secucloud.com>
Marcus Cobden <marcus@marcuscobden.co.uk>
......@@ -57,10 +66,12 @@ Mario Rimann <mario@rimann.org>
Marius Hein <marius.hein@netways.de>
Markus Frosch <markus.frosch@icinga.com>
Markus Opolka <opolkams@iis.fraunhofer.de>
Matthias <pub@matthias-henning.de>
Matthias Jentsch <matthias.jentsch@netways.de>
Matthias <pub@matthias-henning.de>
Max Kozlov <m.v.kozlov@gmail.com>
Max Stephan <xam.stephan@web.de>
mbaschnitzi <mbaschnitzi@users.noreply.github.com>
mdetrano <marc@gridshield.net>
Michael Friedrich <michael.friedrich@icinga.com>
Michael T. DeGuzis <mdeguzis@users.noreply.github.com>
Mike Pennisi <mike@mikepennisi.com>
......@@ -71,47 +82,37 @@ Nicolai Buchwitz <nicolai.buchwitz@enda.eu>
Niko Martini <niko.martini@netways.de>
Noah Hilverling <noah.hilverling@icinga.com>
Oliver Rahner <oliver@rahner.me>
p4k8 <pkuznetsunit@gmail.com>
Paolo Schiro <paolo.schiro@kpnqwest.it>
Paul Richards <paul@minimoo.org>
Pavlos Daoglou <pdaoglou@gmail.com>
Peter Eckel <pe-git@hindenburgring.com>
Pieter Lexis <pieter.lexis@powerdns.com>
PunkoIvan <punkoivan@gmail.com>
Ramy Talal <ramy@thinkquality.nl>
Raphael Bicker <raphael@bicker.ch>
rbelinsky <rbelinsky@dalet.com>
realitygaps <github@gapsinreality.com>
Rene Moser <rene.moser@swisstxt.ch>
rkcpi <thieme.sandra@gmail.com>
Roland Hopferwieser <rhopfer@ica.jku.at>
Rudy Gevaert <rudy.gevaert@ugent.be>
Rune Darrud <theflyingcorpse@gmail.com>
Russell Kubik <russkubik@3d-p.com>
Sander Ferdinand <sa.ferdinand@gmail.com>
sant-swedge <simon.wedge@sant.ox.ac.uk>
Simone Orsi <simahawk@users.noreply.github.com>
ss23 <stephen@zxsecurity.co.nz>
Susanne Vestner-Ludwig <susanne.vestner-ludwig@inserteffect.com>
Sylph Lin <sylph.lin@gmail.com>
tfylling <torbfylling@gmail.com>
Thomas Gelf <thomas.gelf@icinga.com>
Tim Helfensdörfer <tim@visualappeal.de>
Tobias von der Krone <tobias.vonderkrone@profitbricks.com>
Tom Ford <exptom@users.noreply.github.com>
Tomas Barton <barton.tomas@gmail.com>
Tom Ford <exptom@users.noreply.github.com>
Ulf Lange <mopp@gmx.net>
Uwe Ebel <kobmaki@aol.com>
Vladislav Ponomarev <vponomarev@team.mobile.de>
Yuri Konotopov <ykonotopov@gmail.com>
ayoubabid <ayoubabid@users.noreply.github.com>
baufrecht <baufrecht@users.noreply.github.com>
bradynathan <bradynathan@gmail.com>
chisatohasimoto <hasimoto@designet.co.jp>
cstegm <cstegm@users.noreply.github.com>
h0rmiga <github@hormiga.ru>
hailthemelody@rm-laptop04 <hailthemelody@rm-laptop04>
ignasr <ignas.linux@gmail.com>
mapa82 <maik.paetzold@akra.de>
mbaschnitzi <mbaschnitzi@users.noreply.github.com>
mdetrano <marc@gridshield.net>
p4k8 <pkuznetsunit@gmail.com>
rbelinsky <rbelinsky@dalet.com>
realitygaps <github@gapsinreality.com>
rkcpi <thieme.sandra@gmail.com>
sant-swedge <simon.wedge@sant.ox.ac.uk>
ss23 <stephen@zxsecurity.co.nz>
tfylling <torbfylling@gmail.com>
xert <xert@users.noreply.github.com>
Yuri Konotopov <ykonotopov@gmail.com>
......@@ -4,6 +4,32 @@ Please make sure to always read our [Upgrading](doc/80-Upgrading.md) documentati
## What's New
### What's New in Version 2.7.1
You can find all issues related to this release on our [Roadmap](https://github.com/Icinga/icingaweb2/milestone/56?closed=1).
#### Sneaky Solution for Sneaky Links
Usually we try to include only bugs in minor-releases. Sorry, bug-fixes, of course. But thanks to
[@winem_](https://twitter.com/winem_/status/1156531270521896960) we have also a little enhancement this time:
Links in comments, notes, etc. are now [highlighted](https://github.com/Icinga/icingaweb2/pull/3893) as such.
* Highlight links in the notes of an object [#3888](https://github.com/Icinga/icingaweb2/issues/3888)
#### Nobody's Perfect, Not Even Developers
We knew it. We saw it coming. And forgot about it. Some views, especially histories, showed an anarchic behavior
since v2.7.0. The change responsible for this has been undone and history's order is reestablished now.
* Default sort rules no longer work in 2.7.0 [#3891](https://github.com/Icinga/icingaweb2/issues/3891)
#### Restrictions Gone ~~Wild~~ Cagey
A [fix](https://github.com/Icinga/icingaweb2/pull/3868) unfortunately caused restrictions using wildcards to show no
results anymore. This is now solved and such restrictions are as permissive as ever.
* Wildcard filters in chains broken [#3886](https://github.com/Icinga/icingaweb2/issues/3886)
### What's New in Version 2.7.0
You can find issues related to this release on our [Roadmap](https://github.com/Icinga/icingaweb2/milestone/52?closed=1).
......
# Release Workflow <a id="release-workflow"></a>
#### Table of Content
- [1. Preparations](#preparations)
- [1.1. Issues](#issues)
- [1.2. Backport Commits](#backport-commits)
- [1.3. Authors](#authors)
- [2. Version](#version)
- [3. Changelog](#changelog)
- [4. Git Tag](#git-tag)
- [5. Package Builds](#package-builds)
- [5.1. RPM Packages](#rpm-packages)
- [5.2. DEB Packages](#deb-packages)
- [6. Build Server](#build-server)
- [7. Release Tests](#release-tests)
- [8. GitHub Release](#github-release)
- [9. Post Release](#post-release)
- [9.1. Online Documentation](#online-documentation)
- [9.2. Announcement](#announcement)
- [9.3. Project Management](#project-management)
## Preparations <a id="preparations"></a>
# Release Workflow
## Preparations
Specify the release version.
```
VERSION=2.6.3
VERSION=2.7.0
```
Add your signing key to your Git configuration file, if not already there.
......@@ -39,17 +19,17 @@ vim $HOME/.gitconfig
signingkey = D14A1F16
```
### Issues <a id="issues"></a>
### Issues
Check issues at https://github.com/Icinga/icingaweb2
### Backport Commits <a id="backport-commits"></a>
### Backport Commits
For minor versions not branched off git master you need
to manually backport any and all commits from the
master branch which should be part of this release.
### Authors <a id="authors"></a>
### Authors
Update the [.mailmap](.mailmap) and [AUTHORS](AUTHORS) files:
......@@ -57,7 +37,7 @@ Update the [.mailmap](.mailmap) and [AUTHORS](AUTHORS) files:
git log --use-mailmap | grep '^Author:' | cut -f2- -d' ' | sort | uniq > AUTHORS
```
## Version <a id="version"></a>
## Version
Update the version in the following files:
......@@ -73,11 +53,12 @@ sed -i "s/const VERSION = '.*'/const VERSION = '$VERSION'/g" library/Icinga/Appl
find . -type f -name '*.info' -exec sed -i "s/Version: .*/Version: $VERSION/g" {} \;
```
## Changelog <a id="changelog"></a>
## Changelog
Link to the milestone and closed=1 as filter.
Choose the most important issues and summarize them in multiple groups/paragraphs. Provide links to the mentioned
issues/PRs. At the start include a link to the milestone's closed issues.
## Git Tag <a id="git-tag"></a>
## Git Tag
```
git commit -v -a -m "Release version $VERSION"
......@@ -93,138 +74,125 @@ git tag -s -m "Version $VERSION" v$VERSION
Push the tag:
```
git push --tags
git push v$VERSION
```
**For major releases:** Create a new `support` branch:
```
git checkout master
git checkout -b support/2.6
git push -u origin support/2.6
git checkout -b support/2.7
git push -u origin support/2.7
```
## Package Builds <a id="package-builds"></a>
## Package Builds
### RPM Packages <a id="rpm-packages"></a>
### RPM Packages
```
git clone git@github.com:icinga/rpm-icingaweb2.git && cd rpm-icingaweb2
git clone git@git.icinga.com:packaging/rpm-icingaweb2.git && cd rpm-icingaweb2
```
#### Branch Workflow
**Major releases** are branched off `master`.
### DEB Packages
```
git checkout master && git pull
git clone git@git.icinga.com:packaging/deb-icingaweb2.git && cd deb-icingaweb2
```
**Bugfix releases** are created in the `release` branch and later merged to master.
```
git checkout release && git pull
```
### Branch Workflow
#### Release Commit
Checkout `master` and create a new branch.
Set the `Version`, `Revision` and `changelog` inside the spec file.
* For releases use x.x[.x] as branch name (e.g. 2.7 or 2.7.1)
* For releases with revision use x.x.x-n (e.g. 2.7.0-2)
```
sed -i "s/Version: .*/Version: $VERSION/g" icingaweb2.spec
### Switch Build Type (For RPM and DEB)
vim icingaweb2.spec
Edit file `.gitlab-ci.yml` and comment variable `ICINGA_BUILD_TYPE` out.
%changelog
* Wed Apr 24 2019 Johannes Meyer <johannes.meyer@icinga.com> 2.6.3-1
- Update to 2.6.3
```yaml
variables:
...
#ICINGA_BUILD_TYPE: snapshot
...
```
Commit the change.
```
git commit -av -m "Release $VERSION-1"
git push
git commit -av -m "Switch build type for $VERSION-1"
```
**Note for major releases**: Update release branch to latest.
`git checkout release && git pull && git merge master && git push`
**Note for minor releases**: Cherry-pick the release commit into master.
`git checkout master && git pull && git cherry-pick release && git push`
#### RPM Release Preparations
Set the `Version`, `revision` and `%changelog` inside the spec file:
### DEB Packages <a id="deb-packages"></a>
```
git clone git@github.com:icinga/deb-icingaweb2.git && cd deb-icingaweb2
```
sed -i "s/Version:.*/Version: $VERSION/g" icingaweb2.spec
#### Branch Workflow
**Major releases** are branched off `master`.
vim icingaweb2.spec
```
git checkout master && git pull
%changelog
* Tue Jul 30 2019 Johannes Meyer <johannes.meyer@icinga.com> 2.7.0-1
- Update to 2.7.0
```
**Bugfix releases** are created in the `release` branch and later merged to master.
#### DEB Release Preparations
Update file `debian/changelog` and add at the beginning:
```
git checkout release && git pull
```
icingaweb2 (2.7.0-1) icinga; urgency=medium
#### Release Commit
* Release 2.7.0-1
Set the `Version`, `Revision` and `changelog` by using the `dch` helper.
-- Eric Lippmann <eric.lippmann@icinga.com> Tue, 30 Jul 2019 09:28:52 +0000
```
VERSION=2.6.3
./dch $VERSION-1 "Update to $VERSION"
```
### Release Commit (For RPM and DEB)
Commit the changes and push the branch.
```
git commit -av -m "Release $VERSION-1"
git push
git push origin 2.7
```
Gitlab will now build snapshot packages based on the tag `v2.7.0` of Icinga Web 2.
**Note for major releases**: Update release branch to latest.
### Package Tests
```
git checkout release && git pull && git merge master && git push
```
In order to test the created packages you can download a job's artifacts:
**Note for minor releases**: Cherry-pick the release commit into master.
Visit [git.icinga.com](https://git.icinga.com/packaging/rpm-icingaweb2)
and navigate to the respective pipeline under `CI / CD -> Pipelines`.
```
git checkout master && git pull && git cherry-pick release && git push
```
There click on the job you want to download packages from:
![Pipeline Jobs](doc/res/gitlab-rpm-package-pipeline-jobs.png "Pipeline Jobs")
#### DEB with dch on macOS
The job's output appears. On the right-hand sidebar you can browse its artifacts:
```
docker run -v `pwd`:/mnt/packaging -ti ubuntu:bionic bash
![Job Artifacts](doc/res/gitlab-job-artifacts.png "Job Artifacts")
apt-get update && apt-get install git ubuntu-dev-tools vim -y
cd /mnt/packaging
Once there, navigate to `build/RPMS/noarch` where you'll find the packages.
git config --global user.name "Eric Lippmann"
git config --global user.email "eric.lippmann@icinga.com"
### Release Packages
VERSION=2.6.3
To build release packages and upload them to [packages.icinga.com](https://packages.icinga.com)
tag the release commit and push it.
./dch $VERSION-1 "Update to $VERSION"
```
git tag -s 2.7.0-1
git push origin 2.7.0-1
```
## Build Server <a id="build-server"></a>
Now cherry pick the release commit to `master` so that the changes are transferred back to it.
* Verify package build changes for this version.
* Test the snapshot packages for all distributions beforehand.
* Build the newly created Git tag for Debian/RHEL/SuSE.
* Wait until all jobs have passed and then publish them one by one with `allow_release`
**Attention**: Only the release commit. *NOT* the one switching the build type!
## Release Tests <a id="release-tests"></a>
## Release Tests
* Provision the vagrant boxes and test the release packages.
* * Start a new docker container and install/run Icinga Web 2 & icingacli.
......@@ -258,22 +226,20 @@ apt-get -y install icingaweb2 icingacli
icingacli
```
## GitHub Release <a id="github-release"></a>
## GitHub Release
Create a new release for the newly created Git tag: https://github.com/Icinga/icingaweb2/releases
> Hint: Choose [tags](https://github.com/Icinga/icingaweb2/tags), pick one to edit and
> make this a release. You can also create a draft release.
The release body should contain a short changelog, with links
into the roadmap, changelog and blogpost.
Use the changelog for the release body.
### Online Documentation <a id="online-documentation"></a>
## Online Documentation
This is built with a daily cronjob.
#### Manual Updates
### Manual Updates
SSH into the webserver or ask [bobapple](https://github.com/bobapple).
......@@ -281,13 +247,13 @@ SSH into the webserver or ask [bobapple](https://github.com/bobapple).
cd /usr/local/icinga-docs-tools && ./build-docs.rb -c /var/www/docs/config/icingaweb2-latest.yml
```
### Announcement <a id="announcement"></a>
## Announcement
* Create a new blog post on [icinga.com/blog](https://icinga.com/blog) including a featured image
* Create a release topic on [community.icinga.com](https://community.icinga.com)
* Release email to net-tech & team
### Project Management <a id="project-management"></a>
## Project Management
* Add new minor version on [GitHub](https://github.com/Icinga/icingaweb2/milestones).
* Close the released version on [GitHub](https://github.com/Icinga/icingaweb2/milestones).
861c5601b6e01402a932687d7b59a037c72a6804 2019-07-30 10:49:59 +0200
b0bf9c4b0637f6113adb788e78c2bcf619225dd8 2019-08-14 13:10:19 +0200
......@@ -19,7 +19,7 @@
<tbody>
<?php foreach ($this->dashboard->getPanes() as $pane): ?>
<?php if ($pane->getDisabled()) continue; ?>
<tr style="background-color: #f1f1f1;">
<tr>
<th colspan="2" style="text-align: left; padding: 0.5em;">
<?php if ($pane->isUserWidget()): ?>
<?= $this->qlink(
......
icingaweb2 (2.7.1-1) unstable; urgency=medium
* Team upload.
* New upstream release.
-- Bas Couwenberg <sebastic@debian.org> Fri, 16 Aug 2019 06:37:28 +0200
icingaweb2 (2.7.0-1) unstable; urgency=medium
* Team upload.
......
......@@ -8,7 +8,7 @@ namespace Icinga\Application;
*/
class Version
{
const VERSION = '2.7.0';
const VERSION = '2.7.1';
/**
* Get the version of this instance of Icinga Web 2
......
......@@ -298,13 +298,33 @@ class DbQuery extends SimpleQuery
}
if (is_array($expression)) {
$comp = [];
$pattern = [];
foreach ($expression as $value) {
if (strpos($value, '*') === false) {
$comp[] = $value;
} else {
$pattern[] = $this->whereToSql($col, $sign, $value);
}
}
$sql = $pattern;
if ($sign === '=') {
return $col . ' IN (' . $this->escapeForSql($expression) . ')';
if (! empty($comp)) {
$sql[] = $col . ' IN (' . $this->escapeForSql($comp) . ')';
}
$operator = 'OR';
} elseif ($sign === '!=') {
return sprintf('(%1$s NOT IN (%2$s) OR %1$s IS NULL)', $col, $this->escapeForSql($expression));
if (! empty($comp)) {
$sql[] = sprintf('(%1$s NOT IN (%2$s) OR %1$s IS NULL)', $col, $this->escapeForSql($comp));
}
$operator = 'AND';
} else {
throw new QueryException(
'Unable to render array expressions with operators other than equal or not equal'
);
}
throw new QueryException('Unable to render array expressions with operators other than equal or not equal');
return '(' . implode(" $operator ", $sql) . ')';
} elseif ($sign === '=' && strpos($expression, '*') !== false) {
if ($expression === '*') {
return new Zend_Db_Expr('TRUE');
......
......@@ -450,17 +450,7 @@ class SimpleQuery implements QueryInterface, Queryable, Iterator
*/
public function hasResult()
{
if ($this->iteratorPosition !== null) {
return true;
}
$hasResult = false;
foreach ($this as $row) {
$hasResult = true;
break;
}
return $hasResult;
return $this->iteratorPosition !== null || $this->fetchRow() !== false;
}
/**
......
Module: doc
Version: 2.7.0
Version: 2.7.1
Description: Documentation module
Extracts, shows and exports documentation for Icinga Web 2 and its modules.
......@@ -9,6 +9,7 @@ use Icinga\Application\Icinga;
use Icinga\Application\Modules\DashboardContainer;
use Icinga\Cli\Command;
use Icinga\Application\Logger;
use Icinga\Exception\IcingaException;
use Icinga\Util\Translator;
use ReflectionClass;
......@@ -58,7 +59,12 @@ class DashboardCommand extends Command
continue;
}
try {
Translator::setupLocale($locale);
} catch (IcingaException $e) {
Logger::debug('Ignoring locale "%s". Reason: %s', $locale, $e->getMessage());
continue;
}
foreach ($paneItemsProperty->getValue($module) as $paneName => $container) {
/** @var DashboardContainer $container */
......@@ -70,10 +76,7 @@ class DashboardCommand extends Command
$dashletTitle = null;
}
if (isset($options['disabled']) && mt($module->getName(), $paneName) !== $paneTitle) {
// `disabled` is checked because if it's a module's pane that's the only reason
// why it's in there. If a user utilized the same label though for a custom pane,
// it remains as is.
if (mt($module->getName(), $paneName) !== $paneTitle) {
continue;
}
......@@ -85,6 +88,10 @@ class DashboardCommand extends Command
break;
}
}
if ($dashletName === null) {
$dashletName = $dashletTitle;
}
}
$newSection = $paneName . ($dashletName ? '.' . $dashletName : '');
......
Module: migrate
Version: 2.7.0
Version: 2.7.1
Description: Migrate module
This module was introduced with the domain-aware authentication feature in version 2.5.0.
It helps you migrating users and user configurations according to a given domain.
......@@ -6,6 +6,7 @@ use Icinga\Web\Url;
if (! $this->compact): ?>
<div class="controls">
<?= $this->tabs ?>
<?= $this->problemToggle ?>
<div class="sort-controls-container">
<?= $this->sortBox ?>
</div>
......
......@@ -3,8 +3,6 @@
namespace Icinga\Module\Monitoring\Backend\Ido\Query;
use Icinga\Exception\NotImplementedError;
/**
* Query for host groups
*/
......@@ -276,13 +274,8 @@ class HostgroupQuery extends IdoQuery
protected function joinSubQuery(IdoQuery $query, $name, $filter, $and, $negate, &$additionalFilter)
{
if ($name === 'hostgroup') {
if (! $and) {
// IN AND NOT IN works for OR filters w/o subquery joins
throw new NotImplementedError('');
} else {
// Propagate that the "parent" query has to be filtered as well
$additionalFilter = clone $filter;
}
$this->requireVirtualTable('members');
......
......@@ -633,6 +633,12 @@ abstract class IdoQuery extends DbQuery
new Zend_Db_Expr($ours)
));
if (! $negate) {
$subQueryFilter = $subQueryFilter->orFilter(
new FilterExpression($ours, '', new Zend_Db_Expr('IS NULL'))
);
}
$subQuery
->setFilter($subQueryFilter)
->clearGroupingRules()
......
......@@ -3,8 +3,6 @@
namespace Icinga\Module\Monitoring\Backend\Ido\Query;
use Icinga\Exception\NotImplementedError;
class ServicegroupQuery extends IdoQuery
{
protected $groupBase = array(
......@@ -290,13 +288,8 @@ class ServicegroupQuery extends IdoQuery
return ['so.object_id', 'so.object_id'];
} elseif ($name === 'servicegroup') {
if (! $and) {
// IN AND NOT IN for OR filters works w/o subquery joins
throw new NotImplementedError('');
} else {
// Propagate that the "parent" query has to be filtered as well
$additionalFilter = clone $filter;
}
$this->requireVirtualTable('members');
......
Module: monitoring
Version: 2.7.0
Version: 2.7.1
Description: Icinga monitoring module
This is the core module for most Icingaweb users. It provides an
abstraction layer for various Icinga data backends.