13582 Commits

Author SHA1 Message Date
Alexander A. Klimov
726db57c6c ITL: vmware: support --no_vm_tools_ok 2022-12-13 18:08:01 +01:00
Alexander A. Klimov
9902f9b88f ITL: vmware: sync updated (i.e. broken) CLI arg 2022-12-13 18:01:52 +01:00
Alexander A. Klimov
324b002c33 ITL: mongodb: support --ssl-ca-cert-file 2022-12-13 17:47:30 +01:00
Julian Brost
fbb68dbcd0 Namespace: replace behavior classes with a bool
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.
2022-12-09 09:25:46 +01:00
Alexander Aleksandrovič Klimov
4b754637f7
Merge pull request #9605 from Icinga/no-objectlock-copy
Prevent ObjectLock from being copied
2022-12-08 20:00:23 +01:00
Julian Brost
a8cc5dff89 Prevent ObjectLock from being copied
Copying an ObjectLock results in the underlying mutex being unlocked too often.
There's also no good reason for copying a scoped locking class (if at all, it
should be moved).
2022-12-08 15:48:01 +01:00
Alexander Aleksandrovič Klimov
ca328627cd
Merge pull request #9537 from Icinga/replace-some-raw-pointer-with-intrusive-ptr
FilterUtility: Replace some nested raw pointers by `unique_ptr<>*`
2022-12-06 13:07:24 +01:00
Alexander Aleksandrovič Klimov
b585e20a4c
Merge pull request #9591 from Icinga/circular-refs
icinga2 daemon: w/o --dump-objects just check for circular refs
2022-11-30 21:41:21 +01:00
Julian Brost
adf5e6e86e
Merge pull request #9557 from Icinga/ctx
CONTEXT: lazily evaluate frames to only actually assemble when needed
2022-11-30 15:13:53 +01:00
Alexander A. Klimov
83021f8231 CONTEXT: use << everywhere to unify usages 2022-11-30 11:06:51 +01:00
Alexander A. Klimov
b82814fb29 CONTEXT: lazily evaluate frames to only actually assemble when needed 2022-11-30 11:06:45 +01:00
Alexander A. Klimov
0b46e0aeab CONTEXT: use l_Frames as stack to reduce modification complexity 2022-11-30 10:56:24 +01:00
Alexander A. Klimov
70df0e298e CONTEXT: reduce malloc()s by replacing linked list with vector 2022-11-30 10:56:24 +01:00
Alexander A. Klimov
7c481742f4 icinga2 daemon: w/o --dump-objects just check for circular refs
and don't malloc() anything.
2022-11-30 10:45:50 +01:00
Alexander A. Klimov
e53ec2a50f SerializeInternal(): allow to optionally not malloc() anything
This effectively just checks for circular refs.
2022-11-30 10:45:50 +01:00
Julian Brost
f59f361f09
Merge pull request #9508 from Icinga/bugfix/fix-data-race-in-apply-rule
Fix data race in `ApplyRule` class
2022-11-29 14:18:09 +01:00
Alexander A. Klimov
145ee890df Just get paths from existing objects for modification and deletion
instead of computing from scratch if they're in the _api package.

For now this changes literally nothing as paths of existing objects still follow
the scheme of paths of new objects which didn't change. Now Icinga only doesn't expect
existing objects at particular paths. However, with the latter in v2.14+ (agent,
satellite) we can just change the path scheme of new objects in v2.16+ (master)
as we wish. The child nodes will just follow the new scheme of paths of new objects.
2022-11-28 16:39:16 +01:00
Yonas Habteab
c1f73fbc1d FilterUtility: Replace some nested raw pointers by our unique_ptr<X>* 2022-11-28 14:50:54 +01:00
Yonas Habteab
834709543a ApplyRule: Make m_HasMatches atomic
This prevents the `m_HasMatches` property from being altered simultaneously.
This might seem harmless (since this property can only be set to true by any calling thread),
however, from a technical (C++) point of view, this constitutes a data race.
2022-11-28 14:13:58 +01:00
Alexander A. Klimov
eaa3cd83ad Influx DB: don't unneccessarily truncate timestamps to whole seconds
Instead send timestamps with the highest possible precision (ns).
Useful for check intervals <1s.
2022-11-28 12:27:01 +01:00
Julian Brost
ae32b3cbbd
Merge pull request #9586 from Icinga/9363
icinga2 daemon: write icinga2.debug only if --dump-objects given
2022-11-24 16:03:42 +01:00
Julian Brost
63199057d2
Merge pull request #9584 from Icinga/probot/sync-changelog/master/ea6cbb85afc20e5846eabcd17a93267ec4599aa9
CHANGELOG.md: add v2.13.6
2022-11-24 14:06:16 +01:00
Alexander A. Klimov
f71612d8f3 icinga2 object list: warn on possibly outdated config 2022-11-24 10:50:17 +01:00
Alexander Aleksandrovič Klimov
f855cfa155
Merge pull request #9593 from theFeu/patch-1
Change apt-get to apt
2022-11-23 14:59:46 +01:00
Alexander A. Klimov
0767c6ef87 icinga2 daemon -C: write icinga2.debug only if --dump-objects given
to save config (re)load time.
2022-11-23 12:54:33 +01:00
Julian Brost
dd99a5ace9
Merge pull request #9577 from Icinga/ConfigItem-CommitNewItems
ConfigItem::CommitNewItems(): allow fast search of pending items by type
2022-11-23 12:34:51 +01:00
Feu Mourek
76edd00ec2
Change apt-get to apt 2022-11-23 11:09:36 +01:00
Alexander A. Klimov
ae693cb7e1 ConfigItem::CommitNewItems(): allow fast search of pending items by type 2022-11-21 15:07:39 +01:00
Alexander A. Klimov
33e609d791 Type#GetLoadDependencies(): avoid malloc()
- cache result
- return it by const ref
- do Type::GetByName() for the callers
2022-11-21 15:07:39 +01:00
Alexander A. Klimov
d6ad137aac Doc: Troubleshooting: Optimise apply rules and group assign conditions 2022-11-17 11:53:28 +01:00
Julian Brost
a958a735d7
Merge pull request #9555 from Icinga/ApplyRule-GetDebugInfo
ApplyRule#GetDebugInfo(): return by const ref to avoid malloc()
2022-11-16 13:35:04 +01:00
Julian Brost
e713eb5c1c
Merge pull request #9572 from Icinga/ApplyRule-getters
ApplyRule#GetF*Var(): return by const ref
2022-11-16 13:00:59 +01:00
Julian Brost
18ab672565 CHANGELOG.md: add v2.13.6 2022-11-16 11:51:21 +00:00
Julian Brost
ea6cbb85af
Merge pull request #9570 from Icinga/jemalloc-doc
Recommend to try libjemalloc to speed up reload
2022-11-16 12:51:05 +01:00
Alexander A. Klimov
0230883a51 Recommend to try libjemalloc to speed up reload 2022-11-16 12:36:31 +01:00
Alexander A. Klimov
e97a5d59e0 ApplyRule#GetFVVar(): return by const ref
to avoid malloc().
2022-11-08 12:48:13 +01:00
Alexander A. Klimov
738662338f ApplyRule#GetFKVar(): return by const ref
to avoid malloc().
2022-11-08 12:45:21 +01:00
Julian Brost
a6b05059ab
Merge pull request #9566 from Icinga/bugfix/openssl-1.1.1s
Windows: update bundled OpenSSL to version 1.1.1s
2022-11-07 13:38:27 +01:00
Julian Brost
98902b2ff0
Merge pull request #9545 from Icinga/targeted-apply-rules
Separately handle apply rules targetting only specific parent objects
2022-11-04 14:06:15 +01:00
Julian Brost
c501229f84 Windows: update bundled OpenSSL to version 1.1.1s 2022-11-04 13:35:38 +01:00
Yonas Habteab
a8d46e6d47 Use service short name for evaluating targeted service rules 2022-11-04 10:19:26 +01:00
Yonas Habteab
2610fb1285 Avoid evaluating the same filter twice for the same target 2022-11-04 10:15:22 +01:00
Alexander A. Klimov
27a559c5fe ApplyRule#GetDebugInfo(): return by const ref to avoid malloc() 2022-10-28 15:33:44 +02:00
Alexander A. Klimov
a698b9c3da ApplyRule::RuleMap: reduce complexity, save unnecessary lookups 2022-10-28 14:27:53 +02:00
Alexander A. Klimov
a907c2ac9a Targeted apply rules: don't unnecessarily eval filter 2022-10-28 14:27:53 +02:00
Alexander A. Klimov
dacd6a206d VariableExpression#GetVariable(): return by const ref not to unnecessarily malloc() 2022-10-28 14:27:53 +02:00
Alexander A. Klimov
038a5e8ef6 Unify storages of regular/targeted apply rules: std::vector<ApplyRule::Ptr> 2022-10-28 14:27:53 +02:00
Alexander A. Klimov
a56ad38ad3 Separately handle apply rules targetting only specific parent objects
not to unnecessarily run e.g. the filter assign where host.name=="example.com"
for all hosts being not example.com.
2022-10-28 14:27:53 +02:00
Julian Brost
08324f8f20
Merge pull request #9549 from Icinga/boost180
Bump Boost v1.79 -> v1.80
2022-10-26 16:44:37 +02:00
Alexander A. Klimov
24b24da8e9 Bump Boost v1.79 -> v1.80 2022-10-26 11:43:32 +02:00