Commit Graph

1531 Commits

Author SHA1 Message Date
Corentin Ardeois 3e30d34098 Use `config` variable in apply for rules
* use `config` instead of `value` in apply for rules
* update documentation

refs #11976
2016-10-22 06:07:57 +00:00
Corentin Ardeois e7bd4343b5 Add support for Apply for rules in services
Apply for rules are defined through `apply_for` property
Only Array custom variables will be eligible in apply_for dropdown.

API Example:
```bash
 ./director-curl POST director/service?name=my_service '{"apply_for": "for (checked_tcp_port in host.vars.checked_tcp_ports)" }'
 ```

 Will render as:
 ```
  apply Service "my_service" for (checked_tcp_port in host.vars.checked_tcp_ports) {
      ...
  }
  ```
Feature: https://dev.icinga.org/issues/11976

Depends-On: https://github.com/Icinga/icingaweb2-module-director/pull/20
refs #11976
2016-10-22 06:00:54 +00:00
Thomas Gelf b7eaab715b Make explicit calls to renderStringWithVariables 2016-10-22 05:48:09 +00:00
Corentin Ardeois 37c91050c7 Expressions syntax is now $var$
Instead of $$var$$.
We make sure $$var$$ is left untouched.

refs #11976
2016-10-22 00:15:09 +00:00
Corentin Ardeois ddcfb09f58 Handle expressions only for apply objects
Expressions will be handled only if the object is an ApplyRule.
Only properties and custom variables are replaced.

refs #11976
2016-10-22 00:15:09 +00:00
Corentin Ardeois bcef87f4c9 Add support for expressions
Any rendered string can contain variables encapsulated with "$$" characters.

Example:
Display Name declared with `Port $$host.vars.tcp_port$$ check` will
be processed as `"Port " + host.vars.tcp_port + " check"`

API:
```bash
 ./director-curl POST director/service?name=my_service '{"display_name": "Port $$host.vars.tcp_port$$ check" }'
 ```

 Rendered config:
 ```
  apply Service "my_service" {
      import "my_template"

      display_name = "Port " + host.vars.tcp_port + " check"
  }
 ```

refs #11976
2016-10-22 00:15:09 +00:00
Thomas Gelf a9b3b2f47a IcingaObjectImports: fix compatibility issue
fixes #12951
2016-10-20 19:17:52 +00:00
Thomas Gelf b62b602f7d DirectorObjectForm: move imports below name 2016-10-20 02:22:34 +00:00
Thomas Gelf fc2890d865 IcingaObject: new helper method for single...
...resolved custom vars
2016-10-20 01:37:23 +00:00
Thomas Gelf 76936c7efb IcingaTemplateResolver: fix resolver for unstored...
...objects

refs #12938
2016-10-20 01:32:52 +00:00
Thomas Gelf d5234f723d HostController: no loop check for 'fake' services
Inherited services do not exist in the db. As many services would
carry their template's name, the fallback to a name-based loop check
would trigger an erraneous error. So we trigger no preliminary loop
check for those now.

fixes #12938
2016-10-20 01:09:34 +00:00
Thomas Gelf 8c2d5ec7f9 Data: flip field/list order, as fields are...
...more important
2016-10-17 17:24:27 +00:00
Thomas Gelf edbda2c592 IcingaObjectFieldLoader: silently ignore setValues
...when called for an object without custom var support
2016-10-17 16:57:25 +00:00
Thomas Gelf 46a5b3cb2f CubeLinks: hook into the cube module 2016-10-14 21:14:04 +00:00
Thomas Gelf b40f4a7ab7 QuickTable: fix 'return value in write contex'...
...for older PHP versions
2016-10-14 19:35:52 +00:00
Thomas Gelf 23ef9a707c MultiEdit: make it independent of an object type 2016-10-14 18:32:34 +00:00
Thomas Gelf 6a54e00402 MultiEdit: code cleanup, add custom var support
fixes #12465
fixes #12906
fixes #11614
2016-10-14 17:17:07 +00:00
Thomas Gelf 69237b8ae9 MultiEditForm: first shot, provides imports
refs #12465
2016-10-14 13:46:06 +00:00
Thomas Gelf 732ebae339 ActionController: provide a singleTab helper 2016-10-14 13:46:06 +00:00
Thomas Gelf 41c4448685 QuickTable: provide multiselect feature
refs #11614
2016-10-14 13:46:06 +00:00
Thomas Gelf 6f46e6b496 YesNo: new boolean-like form fields
fixes #12927
2016-10-14 13:39:43 +00:00
Thomas Gelf 98708e6496 Forms: better error handling
fixes #12926
2016-10-14 13:35:30 +00:00
Thomas Gelf 2df7144240 TemplateResolver: no more false alarms...
...when multiple paths lead to the same template

refs #11803
2016-10-14 11:26:41 +00:00
Thomas Gelf 558ea82203 IcingaRelatedObject: fix syntax, add comment...
...stating that this is unfinished
2016-10-14 10:40:29 +00:00
Thomas Gelf cfbf40147c IcingaObjectImports: simplify code 2016-10-14 10:33:46 +00:00
Thomas Gelf 041fd52174 FieldLoader, TemplateResolver: more cleanup
A few fixes related to modified imports for unstored objects

refs #12922
2016-10-14 09:59:08 +00:00
Thomas Gelf 98acba9fb4 IcingaTemplateResolver: more tweaking
refs #12922
2016-10-14 09:40:01 +00:00
Thomas Gelf 61f3ffff7e TemplateResolver: deal with unstored modified...
...imports property

fixes #12922
2016-10-14 09:12:05 +00:00
Thomas Gelf e04acbc55f IcingaObjectFieldLoader: do not fail on emtpy...
...parents
2016-10-14 08:33:58 +00:00
Thomas Gelf 913c2687b6 IcingaObjectFieldLoader: first implementation
Should already replace all former functionality

refs #12904
2016-10-13 21:25:03 +00:00
Thomas Gelf 0d930efb46 IcingaObject: add new resolving helper methods
This for example allows to get a single inherited var and their origin
2016-10-13 21:25:03 +00:00
Markus Frosch f527e31b14 Merge branch 'bugfix/endpoint-remove-import-12920'
fixes #12920
2016-10-13 16:54:34 +02:00
Markus Frosch cc61831258 DirectorObjectForm: Allow form to select if imports are required
refs #12920
2016-10-13 16:37:49 +02:00
Thomas Gelf cf4dccc817 Notification: add fields support
fixes #12642
2016-10-13 14:34:25 +00:00
Thomas Gelf 71b3459540 DirectorDatafieldForm: allow to wipe all related...
...custom variables when removing a field

fixes #12916
2016-10-13 14:02:51 +00:00
Thomas Gelf 0e45429196 ObjectForm: do not allow to choose type...
...when one is already given
2016-10-13 11:55:53 +00:00
Thomas Gelf c1afda4392 IcingaObject: do not fail when rendering objects...
...without imports support

fixes #12618
2016-10-13 11:11:35 +00:00
Thomas Gelf e99568fffc DirectorObjectForm: add unique error message...
...without adding an error in case we detect a loop. Also improve
resolve cache invalidation and clean up old imports-related code

refs #11803
2016-10-12 15:23:54 +00:00
Thomas Gelf 05f991c585 IcingaObject: no loop detection on unstored...
...objects

refs #11803
2016-10-12 14:26:44 +00:00
Thomas Gelf 7993724dcb IcingaTemplateResolver: detect and throw nesting..
...errors

fixes #11803
2016-10-12 14:16:19 +00:00
Thomas Gelf 0a26b94e7c IcingaObjectMultiRelations: fix service relations
...for sets
2016-10-12 09:11:05 +00:00
Thomas Gelf 34ed3da3b8 IcingaObject: remove duplicated short name logic 2016-10-12 09:09:28 +00:00
Thomas Gelf cb533f5668 IcingaConfig: deploy service sets 2016-10-12 09:04:08 +00:00
Thomas Gelf c044de89de SyncPropertyForm: allow to sync m:n relations 2016-10-12 08:59:42 +00:00
Thomas Gelf 9e1cea0119 IcingaObject: fix v1 rendering for some properties
Mostly relations, no timeout, still ugly
2016-10-12 08:31:22 +00:00
Thomas Gelf e096ec9ec5 IcingaServiceSets: allow to set imports 2016-10-12 08:30:10 +00:00
Thomas Gelf f2f04c44e8 ServiceSet: add CLI command, fix key 2016-10-12 07:31:00 +00:00
Thomas Gelf b7018627a0 IcingaServiceSet: introduce a new object type 2016-10-12 07:19:02 +00:00
Thomas Gelf 8faa572098 PropertyModifierDnsRecords: re-order form fields 2016-10-11 16:02:50 +00:00
Thomas Gelf 785746fb26 GroupMembershipCache: fix messed up properties
fixes #12887
2016-10-11 15:26:31 +00:00
Thomas Gelf c4da25ef25 IcingaCommandArgument: render set_if without format
Icinga DSL support was introduced in 348cb1aa6 and works fine, but breaks
rendering of legacy arguments with set_if_format = NULL. This should default
to 'string', as we should IMO not force NOT NULL in the DB in this case.

refs #12153
fixes #12886
2016-10-11 09:45:11 +00:00
Thomas Gelf 380fb0afe9 GroupMembershipCache: add missing property
fixes #12884
2016-10-10 19:15:34 +00:00
Markus Frosch df36071c9c IcingaService: single objects should respect...
...their host's zone where not overriden by a service template

fixes #11988
2016-10-10 10:57:24 +00:00
Thomas Gelf 82c5b10eef Db: do not let the db adapter handle binary...
...data as this causes problems with Postgres and quoteBinary
2016-10-09 13:47:37 +00:00
Thomas Gelf 38eaf4036b IcingaHost: agent-related hint for legacy config 2016-10-09 13:27:38 +00:00
Thomas Gelf e96db8b296 IcingaObject: move duplicate logic to common func 2016-10-09 13:15:05 +00:00
Thomas Gelf cf063180d2 IcingaObject: start to dry out relation-related...
...code. Still weird and hard to understand because of lazy-loading,
can only get better. All this is required to be able to render objects
having obsolete dependencies in our activity log
2016-10-09 12:48:13 +00:00
Thomas Gelf 1bc4a397a8 CustomVariableCache: optionally use digest()...
...for PostgreSQL in case pgcrypto is installed. Also add related hint to the
installation documentation
2016-10-09 12:43:04 +00:00
Thomas Gelf 6f12663756 PrefetchCache: lot's of improvements
This commit enables the prefetch cache per default when rendering configs
and adds the following features:

* prefetch all kinds of Icinga object inheritance (imports)
* prefetch group memberships
* prefetch custom variables
* render vars with the same checksum only once

Roughly measured performance boost with a large real-life config, renders three
times faster as it did before. Might be even more for those suffering from high
latencies when accessing their DB remotely and/or on a slow storage.

fixes #12876
2016-10-09 12:41:06 +00:00
Thomas Gelf 42aef0105d DbObject: exists() should respect prefetch...
...also for negative lookups

refs #12876
2016-10-08 19:34:59 +00:00
Thomas Gelf c0a8c49d4f show/activitylog: fallback rendering for hosts...
...with obsolete parents, that have been removed in the meantime
2016-10-06 16:29:50 +00:00
Thomas Gelf 081ea72497 KickstartHelper: handle renamed zones...
...when triggered multiple times
2016-10-06 16:20:25 +00:00
Thomas Gelf 2c071e215d CustomVariableNumber: tolerant float comparison 2016-10-06 16:19:08 +00:00
Thomas Gelf 749f035971 Db/IcingaObject: formatting & style 2016-10-05 18:05:59 +00:00
Thomas Gelf 70b8a9ea02 DirectorObjectForm: improve Exception error message 2016-10-05 18:03:07 +00:00
Thomas Gelf d1b7083145 IcingaObject: add helper methods for relations 2016-10-05 17:58:48 +00:00
Thomas Gelf e9a570e96d Sync: fix sync & purge for datalistEntry objects 2016-10-05 17:45:25 +00:00
Thomas Gelf c859055221 CustomVariables: unset var if set to plain null
...but still allow for Null variables
2016-10-05 17:20:25 +00:00
Thomas Gelf db0662b554 PropertyModifierDnsRecords: new property modifier 2016-10-03 15:28:41 +00:00
Marc DeTrano 348cb1aa63 IcingaCommandArgument: allow expressions in set_if
fixes #12153
2016-09-23 15:18:58 +00:00
Thomas Gelf d8f02c8974 DataTypeDirectorObject: do not force 'require' 2016-09-23 14:07:33 +00:00
Thomas Gelf 542f1faf76 DataType: new DirectorObject data type
Allows one to choose from a list of objects, filling string or array
vars

fixes #11998
2016-09-23 13:30:47 +00:00
Thomas Gelf 3383b97e69 IcingaRelatedObject: new helper class 2016-09-16 21:56:35 +00:00
Thomas Gelf 42212661f2 IcingaObject: document 'supports' vars and methods 2016-09-15 18:53:09 +00:00
Thomas Gelf a17fc32b41 PropertyModifierToInt: new property modifier 2016-09-14 19:35:51 +00:00
Thomas Gelf 407a387dab DirectorDatalistEntry: add shouldBeRemoved...
...fixes sync for DatalistEntries

fixes #12715
2016-09-12 21:41:15 +00:00
Thomas Gelf 04cae6f8f8 DirectorObjectForm: fix forgotten variable 2016-09-09 21:38:49 +00:00
Thomas Gelf f52cd5ea77 DirectorDatafield: simplify usage 2016-09-09 21:32:26 +00:00
Thomas Gelf 217fb38517 IcingaObject: implement supportsAssignRules 2016-09-09 09:06:31 +00:00
Markus Frosch a90595a004 IcingaHostGroup: Add apply statements 2016-09-09 08:32:42 +00:00
Thomas Gelf 29231ef8c8 config/deployments: collect uncollected stages...
...if any when refreshing the history

refs #11979
2016-09-09 07:21:32 +00:00
Thomas Gelf efd0b50052 CustomVariable: reset 'deleted' when re-setting...
...a value
2016-09-08 22:40:07 +00:00
Thomas Gelf 2c7c54a15d IcingaConfig: improve override constant usage 2016-09-08 20:24:54 +00:00
Thomas Gelf 646a7dc067 IcingaConfig: workaround for no host in service 2016-09-08 20:13:45 +00:00
Thomas Gelf b2b189c425 IcingaServiceForm: support use_var_overrides...
...even for single host-assigned services
2016-09-08 18:43:25 +00:00
Thomas Gelf b47c7be3d5 IcingaService: add use_var_overrides 2016-09-08 15:01:19 +00:00
Thomas Gelf defb8c50c2 CustomVariables: improve readability 2016-09-08 13:55:13 +00:00
Thomas Gelf 999019ba16 IcingaService: make sure to have a db connection
...when rendering, as we require settings
2016-09-08 13:30:37 +00:00
Thomas Gelf 31b716a7db CustomVariableDictionary: implement isset 2016-09-08 13:18:55 +00:00
Thomas Gelf b8fb0d4267 IcingaConfig: host-generated services should...
...respect new overrides
2016-09-08 13:07:04 +00:00
Thomas Gelf d44c06fce0 IcingaService: do not hardcode override template 2016-09-08 12:08:30 +00:00
Thomas Gelf 8dd7fcd13b IcingaHost, IcingaServiceForm: fix parse error...
...on PHP < 5.5
2016-09-08 11:32:41 +00:00
Thomas Gelf 4f4b6eb63a IcingaService: allow host vars to override vars...
...for applied services

refs #12546
2016-09-08 10:45:02 +00:00
Thomas Gelf 8171bb8c04 IcingaHost: add methods dealing with overridden...
...service vars
2016-09-08 09:54:23 +00:00
Thomas Gelf 4cd399e059 IcingaConfigHelper: use string-based sort for...
...dictionary fields to make PHP 5.x and PHP 7.x produce the same output.

refs #12591
2016-09-07 20:44:03 +00:00
Thomas Gelf e58a70613c IcingaConfig: do not render v2-related helpers...
...for legacy config
2016-09-05 19:34:14 +00:00
Thomas Gelf 687f2aff1c Settings: delete NULL-value settings 2016-09-05 19:16:58 +00:00
Thomas Gelf 0242d8d411 Settings: allow to retrieve stored value 2016-09-05 19:15:12 +00:00
Thomas Gelf 1144b5d55f DirectorObjectForm: fix legacy range field 2016-09-05 18:52:22 +00:00
Thomas Gelf 83031c1349 Cli\ObjectCommand: allow multiple objects...
...as a parameter for clone and delete
2016-09-05 18:37:00 +00:00