In essence, namespace behaviors acted as hooks for update operations on namespaces. Two behaviors were implemented: - `NamespaceBehavior`: allows the update operation unless it acts on a value that itself was explicitly marked as constant. - `ConstNamespaceBehavior`: initially allows insert operations but marks the individual values as const. Additionally provides a `Freeze()` member function. After this was called, updates are rejected unless a special `overrideFrozen` flag is set explicitly. This marvel of object-oriented programming can be replaced with a simple bool. This commit basically replaces `Namespace::m_Behavior` with `Namespace::m_ConstValues` and inlines the behavior functions where they were called. While doing so, the code was slightly simplified by assuming that `m_ConstValues` is true if `m_Frozen` is true. This is similar to what the API allowed in the old code as you could only freeze a `ConstNamespaceBehavior`. However, this PR moves the `Freeze()` member function and the related `m_Freeze` member variable to the `Namespace` class. So now the API allows any namespace to be frozen. The new code also makes sense with the previously mentioned simplification: a `Namespace` with `m_ConstValues = false` can be modified without restrictions until `Freeze()` is called. When this is done, it becomes read-only. The changes outside of `namespace.*` just adapt the code to the slightly changed API. |
||
---|---|---|
.github | ||
agent | ||
choco | ||
cmake | ||
doc | ||
etc | ||
icinga-app | ||
icinga-installer | ||
itl | ||
lib | ||
plugins | ||
test | ||
third-party | ||
tools | ||
.gitattributes | ||
.gitignore | ||
.mailmap | ||
AUTHORS | ||
CHANGELOG.md | ||
CMakeLists.txt | ||
CONTRIBUTING.md | ||
COPYING | ||
ICINGA2_VERSION | ||
NEWS | ||
README.md | ||
RELEASE.md | ||
config.h.cmake | ||
icinga-spec-version.h.cmake | ||
icinga-version.h.cmake | ||
mkdocs.yml |
README.md
Icinga 2
Table of Contents
About
Icinga is a monitoring system which checks the availability of your network resources, notifies users of outages, and generates performance data for reporting.
Scalable and extensible, Icinga can monitor large, complex environments across multiple locations.
Icinga 2 is the monitoring server and requires Icinga Web 2 on top in your Icinga Stack. The configuration can be easily managed with either the Icinga Director, config management tools or plain text within the Icinga DSL.
Installation
- Installation
- Monitoring Basics
- Configuration
- Distributed Monitoring
- Addons, Integrations and Features
- Troubleshooting
- Upgrading
Once Icinga Server and Web are running in your distributed environment, make sure to check out the many Icinga modules for even better monitoring.
Documentation
The documentation is available on icinga.com/docs.
Support
Check the project website for status updates. Join the community channels for questions or ask an Icinga partner for professional support.
License
Icinga 2 and the Icinga 2 documentation are licensed under the terms of the GNU General Public License Version 2, you will find a copy of this license in the COPYING file included in the source package.
In addition, as a special exception, the copyright holders give permission to link the code of portions of this program with the OpenSSL library under certain conditions as described in each individual source file, and distribute linked combinations including the two.
You must obey the GNU General Public License in all respects for all of the code used other than OpenSSL. If you modify file(s) with this exception, you may extend this exception to your version of the file(s), but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. If you delete this exception statement from all source files in the program, then also delete it here.
Contributing
There are many ways to contribute to Icinga -- whether it be sending patches, testing, reporting bugs, or reviewing and updating the documentation. Every contribution is appreciated!
Please continue reading in the contributing chapter.
If you are a packager, please read the development chapter for more details.
Security Issues
For reporting security issues please visit this page.