Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[dev.icinga.com #11434] Config validation for Notification objects should check whether the state filters are valid #4052

Closed
icinga-migration opened this issue Mar 22, 2016 · 15 comments
Labels
area/api REST API bug Something isn't working
Milestone

Comments

@icinga-migration
Copy link

This issue has been migrated from Redmine: https://dev.icinga.com/issues/11434

Created by danvaida on 2016-03-22 14:18:58 +00:00

Assignee: gbeutner
Status: Resolved (closed on 2016-03-24 08:16:43 +00:00)
Target Version: 2.4.5
Last Update: 2016-06-23 13:19:07 +00:00 (in Redmine)

Icinga Version: 2.4.4
Backport?: Already backported
Include in Changelog: 1

$ icinga2 --version
icinga2 - The Icinga 2 network monitoring daemon (version: v2.4.4)

Copyright (c) 2012-2016 Icinga Development Team (https://www.icinga.org/)
License GPLv2+: GNU GPL version 2 or later 
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Application information:
  Installation root: /usr
  Sysconf directory: /etc
  Run directory: /run
  Local state directory: /var
  Package data directory: /usr/share/icinga2
  State path: /var/lib/icinga2/icinga2.state
  Modified attributes path: /var/lib/icinga2/modified-attributes.conf
  Objects path: /var/cache/icinga2/icinga2.debug
  Vars path: /var/cache/icinga2/icinga2.vars
  PID path: /run/icinga2/icinga2.pid

System information:
  Platform: CentOS Linux
  Platform version: 7 (Core)
  Kernel: Linux
  Kernel version: 3.10.0-229.14.1.el7.x86_64
  Architecture: x86_64

Here's an example:

$ curl -s --cacert /etc/icinga2/pki/ca.crt \--cert /etc/icinga2/pki/icinga2-master.crt --key /etc/icinga2/pki/icinga2-master.key -H 'Accept: application/json' -X PUT 'https://icinga2-master:5665/v1/objects/users/test' -d '{ "attrs": { "pager": "1234567890", "groups": [ "icingaadmins" ], "display_name": "PagerDuty Notification User", "states": [ "OK", "Warning", "Critical", "Unknown", "Up", "Down" ], "types": [ "Problem", "Recovery" ] } }' | python -m json.tool
{
    "results": [
        {
            "code": 500.0,
            "errors": [
                "Error: Operator | cannot be applied to values of type 'Number' and 'String'\n\n\t(0) libbase.so: void boost::throw_exception >(boost::exception_detail::error_info_injector const&) (+0xf8) [0x7f1263d418b8]\n\t(1) libbase.so: void boost::exception_detail::throw_exception_(std::invalid_argument const&, char const*, char const*, int) (+0x69) [0x7f1263d41979]\n\t(2) libbase.so: icinga::operator|(icinga::Value const&, icinga::Value const&) (+0xef) [0x7f1263d1298f]\n\t(3) libicinga.so: icinga::FilterArrayToInt(boost::intrusive_ptr const&, int) (+0xce) [0x7f125d27e0ee]\n\t(4) libicinga.so: icinga::User::OnConfigLoaded() (+0x48) [0x7f125d27e328]\n\t(5) libconfig.so: icinga::ConfigItem::Commit(bool) (+0x3f7) [0x7f12639bea17]\n\t(6) libconfig.so: boost::detail::function::void_function_obj_invoker0, boost::_mfi::mf1, icinga::ConfigItem, bool>, boost::_bi::list2 >, boost::_bi::value > >, void>::invoke(boost::detail::function::function_buffer&) (+0x38) [0x7f12639cdc08]\n\t(7) libbase.so: icinga::WorkQueue::WorkerThreadProc() (+0x4a2) [0x7f1263d01672]\n\t(8) libboost_thread-mt.so.1.53.0:  (+0xd24a) [0x7f126475d24a]\n\t(9) libpthread.so.0:  (+0x7dc5) [0x7f12613aedc5]\n\t(10) libc.so.6: clone (+0x6d) [0x7f12610dc28d]\n\n"
            ],
            "status": "Object could not be created."
        }
    ]
}

As you can see lines 5 and 6 as referred to, in the official PagerDuty Icinga2 integration guide, even though the very names of states and types suggest they should be of type array, they seem to be of type string.

A GET request shows:

$ curl -s --cacert /etc/icinga2/pki/ca.crt \--cert /etc/icinga2/pki/icinga2-master.crt --key /etc/icinga2/pki/icinga2-master.key -H 'Accept: application/json' -X GET 'https://icinga2-master:5665/v1/objects/users/test2' | python -m json.tool
{
    "results": [
        {
            "attrs": {
                "__name": "test",
                "active": true,
                "display_name": "test",
                "email": "test@me.com",
                "enable_notifications": true,
                "groups": [],
                "ha_mode": 0.0,
                "last_notification": 0.0,
                "name": "dvaida",
                "original_attributes": {
                    "email": "test@me.com"
                },
                "package": "_api",
                "pager": "",
                "paused": false,
                "state_filter_real": -1.0,
                "states": null,
                "templates": [
                    "dvaida"
                ],
                "type": "User",
                "type_filter_real": -1.0,
                "types": null,
                "vars": null,
                "version": 1458132060.131151,
                "zone": ""
            },
            "joins": {},
            "meta": {},
            "name": "test",
            "type": "User"
        }
    ]
}

Comparable with keys such as groups or templates.

Changesets

2016-03-24 08:15:39 +00:00 by (unknown) 5de9a98

Improve validation for arrays

fixes #11434

2016-04-20 08:07:23 +00:00 by (unknown) 13c4bb0

Improve validation for arrays

fixes #11434

Relations:

@icinga-migration
Copy link
Author

Updated by miken32 on 2016-03-22 18:04:41 +00:00

Actually I came here to report the same problem, but I am getting it at startup after an upgrade to 2.4.4 via RHEL package.

I get 247 of these in the startup log, config was working fine in 2.4.3:

critical/config: Error: Operator | cannot be applied to values of type 'Number' and 'String'

    (0) libbase.so: void boost::throw_exception >(boost::exception_detail::error_info_injector const&) (+0xe8) [0x3ef912d888]
    (1) libbase.so: void boost::exception_detail::throw_exception_(std::invalid_argument const&, char const*, char const*, int) (+0x59) [0x3ef912d939]
    (2) libbase.so: icinga::operator|(icinga::Value const&, icinga::Value const&) (+0xdc) [0x3ef910035c]
    (3) libicinga.so: icinga::FilterArrayToInt(boost::intrusive_ptr const&, int) (+0xce) [0x7efd60feecae]
    (4) libicinga.so: icinga::Notification::OnConfigLoaded() (+0x7d) [0x7efd60feee2d]
    (5) libconfig.so: icinga::ConfigItem::Commit(bool) (+0x3d7) [0x3ef986bdf7]
    (6) libconfig.so: boost::detail::function::void_function_obj_invoker0, boost::_mfi::mf1, icinga::ConfigItem, bool>, boost::_bi::list2 >, boost::_bi::value > >, void>::invoke(boost::detail::function::function_buffer&) (+0x28) [0x3ef987a768]
    (7) libbase.so: icinga::WorkQueue::WorkerThreadProc() (+0x492) [0x3ef90ef912]
    (8) /usr/lib64/libboost_thread.so.1.53.0() [0x348780c5c3]
    (9) /lib64/libpthread.so.0() [0x31b2007aa1]
    (10) libc.so.6: clone (+0x6d) [0x31b18e893d]

No indication where the problem is at all.

@icinga-migration
Copy link
Author

Updated by mfriedrich on 2016-03-22 20:30:05 +00:00

  • Parent Id set to 11415

@miken32

While the error looks similar, I suspect a different issue here. Your stack trace points to notifications so I'd guess you have some Notification apply rules in place which set a faulty filter for "states" and "types". Though there were no changes between 2.4.3 and 2.4.4 in this region.

@danvaida

I can reproduce your issue. I guess our configwriter class is not aware of arrays with "special" strings requiring constants, not double quoted string. I need to dig further once there's time. Workaround for now - use the integer representation for these filters.

The error happens straight after adding the configitem and then compiling it.

curl -k -s -u root:icinga -H 'Accept: application/json' -X PUT 'https://localhost:5665/v1/objects/users/test' -d '{ "attrs": { "pager": "1234567890", "groups": [ "icingaadmins" ], "display_name": "PagerDuty Notification User", "states": [ "OK", "Warning", "Critical", "Unknown", "Up", "Down" ], "types": [ "Problem", "Recovery" ] } }'

[2016-03-22 21:22:08 +0100] information/ApiListener: New client connection (no client certificate)
[2016-03-22 21:22:08 +0100] information/HttpServerConnection: Request: PUT /v1/objects/users/test (root)
[2016-03-22 21:22:08 +0100] information/ConfigCompiler: Compiling config file: /usr/local/icinga2/var/lib/icinga2/api/packages/_api/mbmif.int.netways.de-1442309540-1/conf.d/users/test.conf
[2016-03-22 21:22:08 +0100] information/ConfigItem: Committing config items
[2016-03-22 21:22:08 +0100] critical/config: Error: Operator | cannot be applied to values of type 'Number' and 'String'


    (0) 2   libbase.dylib                       0x0000000101011ff6 __cxa_throw + 214
    (1) 3   libbase.dylib                       0x0000000100f8eef4 _ZNK5boost16exception_detail10clone_implINS0_19error_info_injectorISt16invalid_argumentEEE7rethrowEv + 84
    (2) 4   libbase.dylib                       0x0000000100f8efc2 _ZTv0_n32_NK5boost16exception_detail10clone_implINS0_19error_info_injectorISt16invalid_argumentEEE7rethrowEv + 34
    (3) 5   libbase.dylib                       0x0000000101016ea1 _ZN5boost17rethrow_exceptionERKNS_13exception_ptrE + 113
    (4) 6   libbase.dylib                       0x0000000101013b24 _ZN6icinga21DiagnosticInformationEN5boost13exception_ptrEb + 212
    (5) 7   libbase.dylib                       0x0000000101153462 _ZNK6icinga9WorkQueue16ReportExceptionsERKNS_6StringE + 594
    (6) 8   libconfig.dylib                     0x0000000100ceccee _ZN6icinga10ConfigItem11CommitItemsERKN5boost13intrusive_ptrINS_17ActivationContextEEERNS_9WorkQueueERNSt3__16vectorINS2_IS0_EENS9_9allocatorISB_EEEE + 222
    (7) 9   libremote.dylib                     0x000000010073d66b _ZN6icinga19ConfigObjectUtility12CreateObjectERKN5boost13intrusive_ptrINS_4TypeEEERKNS_6StringES9_RKNS2_INS_5ArrayEEE + 2443
    (8) 10  libremote.dylib                     0x00000001007451a2 _ZN6icinga19CreateObjectHandler13HandleRequestERKN5boost13intrusive_ptrINS_7ApiUserEEERNS_11HttpRequestERNS_12HttpResponseE + 2466
    (9) 11  libremote.dylib                     0x00000001007abc83 _ZN6icinga11HttpHandler14ProcessRequestERKN5boost13intrusive_ptrINS_7ApiUserEEERNS_11HttpRequestERNS_12HttpResponseE + 3875
    (10) 12  libremote.dylib                     0x00000001007a6f03 _ZN6icinga20HttpServerConnection19ProcessMessageAsyncERNS_11HttpRequestE + 3891
    (11) 13  libremote.dylib                     0x00000001007a9acc _ZNK5boost4_mfi3mf1IvN6icinga20HttpServerConnectionERNS2_11HttpRequestEE4callINS_13intrusive_ptrIS3_EES4_EEvRT_PKvRT0_ + 140
    (12) 14  libremote.dylib                     0x00000001007a99f1 _ZNK5boost4_mfi3mf1IvN6icinga20HttpServerConnectionERNS2_11HttpRequestEEclINS_13intrusive_ptrIS3_EEEEvRT_S5_ + 49
    (13) 15  libremote.dylib                     0x00000001007a998f _ZN5boost3_bi5list2INS0_5valueINS_13intrusive_ptrIN6icinga20HttpServerConnectionEEEEENS2_INS4_11HttpRequestEEEEclINS_4_mfi3mf1IvS5_RS8_EENS0_5list0EEEvNS0_4typeIvEERT_RT0_i + 111
    (14) 16  libremote.dylib                     0x00000001007a990c _ZN5boost3_bi6bind_tIvNS_4_mfi3mf1IvN6icinga20HttpServerConnectionERNS4_11HttpRequestEEENS0_5list2INS0_5valueINS_13intrusive_ptrIS5_EEEENSA_IS6_EEEEEclEv + 60
    (15) 17  libremote.dylib                     0x00000001007a9640 _ZN5boost6detail8function26void_function_obj_invoker0INS_3_bi6bind_tIvNS_4_mfi3mf1IvN6icinga20HttpServerConnectionERNS7_11HttpRequestEEENS3_5list2INS3_5valueINS_13intrusive_ptrIS8_EEEENSD_IS9_EEEEEEvE6invokeERNS1_15function_bufferE + 32
    (16) 18  libbase.dylib                       0x0000000100f5466b _ZNK5boost9function0IvEclEv + 123
    (17) 19  libbase.dylib                       0x0000000101152b9a _ZN6icinga9WorkQueue16WorkerThreadProcEv + 3338
    (18) 20  libbase.dylib                       0x00000001011559e2 _ZNK5boost4_mfi3mf0IvN6icinga9WorkQueueEEclEPS3_ + 114
    (19) 21  libbase.dylib                       0x0000000101156350 _ZN5boost3_bi5list1INS0_5valueIPN6icinga9WorkQueueEEEEclINS_4_mfi3mf0IvS4_EENS0_5list0EEEvNS0_4typeIvEERT_RT0_i + 80
    (20) 22  libbase.dylib                       0x00000001011562ec _ZN5boost3_bi6bind_tIvNS_4_mfi3mf0IvN6icinga9WorkQueueEEENS0_5list1INS0_5valueIPS5_EEEEEclEv + 60
    (21) 23  libbase.dylib                       0x000000010115627c _ZN5boost6detail11thread_dataINS_3_bi6bind_tIvNS_4_mfi3mf0IvN6icinga9WorkQueueEEENS2_5list1INS2_5valueIPS7_EEEEEEE3runEv + 28
    (22) 24  libboost_thread-mt.dylib            0x00000001000805e9 _ZN5boost12_GLOBAL__N_112thread_proxyEPv + 185
    (23) 25  libsystem_pthread.dylib             0x00007fff95dba99d _pthread_body + 131
    (24) 26  libsystem_pthread.dylib             0x00007fff95dba91a _pthread_body + 0
    (25) 27  libsystem_pthread.dylib             0x00007fff95db8351 thread_start + 13




[2016-03-22 21:22:08 +0100] critical/config: 1 error

@icinga-migration
Copy link
Author

Updated by danvaida on 2016-03-23 10:07:40 +00:00

@dnsmichi would you be so kind to provide the integer mappings? It's probably faster for you than for me by looking at the code.

So far, I got:

$ curl -s --cacert /etc/icinga2/pki/ca.crt \--cert /etc/icinga2/pki/icinga2-master.crt --key /etc/icinga2/pki/icinga2-master.key -H 'Accept: application/json' -X PUT 'https://icinga2-master:5665/v1/objects/users/test' \
-d '{ "attrs": { "pager": "1234567890", "groups": [ "icingaadmins" ], "display_name": "PagerDuty Notification User", "states": [ 0, 1, 2, 3 ] } }' | python -m json.tool
{
    "results": [
        {
            "code": 200.0,
            "status": "Object was created"
        }
    ]
}

$ curl -s --cacert /etc/icinga2/pki/ca.crt \--cert /etc/icinga2/pki/icinga2-master.crt --key /etc/icinga2/pki/icinga2-master.key -H 'Accept: application/json' -X GET 'https://icinga2-master:5665/v1/objects/users/test' | python -m json.tool
{
    "results": [
        {
            "attrs": {
                "__name": "test",
                "active": true,
                "display_name": "PagerDuty Notification User",
                "email": "",
                "enable_notifications": true,
                "groups": [
                    "icingaadmins"
                ],
                "ha_mode": 0.0,
                "last_notification": 0.0,
                "name": "test",
                "original_attributes": null,
                "package": "_api",
                "pager": "1234567890",
                "paused": false,
                "state_filter_real": 3.0,
                "states": [
                    0.0,
                    1.0,
                    2.0,
                    3.0
                ],
                "templates": [
                    "test"
                ],
                "type": "User",
                "type_filter_real": -1.0,
                "types": null,
                "vars": null,
                "version": 1458726982.815174,
                "zone": ""
            },
            "joins": {},
            "meta": {},
            "name": "test",
            "type": "User"
        }
    ]
}

Thanks.

@icinga-migration
Copy link
Author

Updated by gbeutner on 2016-03-23 10:22:15 +00:00

The 'states' array is not an array of strings. Note the difference between:

states = [ OK, Warning ]

and the incorrect variant:

states = [ "OK", "Warning" ]

OK, Warning, etc. are actually global constants:

<1> => OK
1.000000
<2> => Warning
2.000000

@icinga-migration
Copy link
Author

Updated by gbeutner on 2016-03-23 10:23:34 +00:00

  • Subject changed from API returns Error: Operator | cannot be applied to values of type 'Number' and 'String' on /v1/objects/users to Config validation for Notification objects should check whether the state filters are valid

@icinga-migration
Copy link
Author

Updated by gbeutner on 2016-03-23 10:25:43 +00:00

You can get a list of built-in constants with the console:

$ icinga2 console
Icinga 2 (version: v2.4.4-268-g32fb833)
<1> => for (k => v in globals) { if (typeof(v) in [ Number, String ]) { log("Name: " + k + ", Value: " + v) } }
information/config: Name: Acknowledgement, Value: 16
information/config: Name: ApplicationType, Value: IcingaApplication
information/config: Name: Concurrency, Value: 4
information/config: Name: Critical, Value: 4
information/config: Name: Custom, Value: 8
information/config: Name: Down, Value: 32
information/config: Name: DowntimeEnd, Value: 2
information/config: Name: DowntimeRemoved, Value: 4
information/config: Name: DowntimeStart, Value: 1
information/config: Name: FlappingEnd, Value: 256
information/config: Name: FlappingStart, Value: 128
information/config: Name: HostDown, Value: 1
information/config: Name: HostUp, Value: 0
information/config: Name: IncludeConfDir, Value: /Users/gunnar/i2/share/icinga2/include
information/config: Name: LocalStateDir, Value: /Users/gunnar/i2/var
information/config: Name: LogCritical, Value: 4
information/config: Name: LogDebug, Value: 0
information/config: Name: LogInformation, Value: 2
information/config: Name: LogNotice, Value: 1
information/config: Name: LogWarning, Value: 3
information/config: Name: ModAttrPath, Value: /Users/gunnar/i2/var/lib/icinga2/modified-attributes.conf
information/config: Name: NodeName, Value: acheron
information/config: Name: OK, Value: 1
information/config: Name: ObjectsPath, Value: /Users/gunnar/i2/var/cache/icinga2/icinga2.debug
information/config: Name: PidPath, Value: /Users/gunnar/i2/var/run/icinga2/icinga2.pid
information/config: Name: PkgDataDir, Value: /Users/gunnar/i2/share/icinga2
information/config: Name: PlatformArchitecture, Value: x86_64
information/config: Name: PlatformKernel, Value: Darwin
information/config: Name: PlatformKernelVersion, Value: 15.3.0
information/config: Name: PlatformName, Value: Mac OS X
information/config: Name: PlatformVersion, Value: 10.11.3
information/config: Name: PrefixDir, Value: /Users/gunnar/i2
information/config: Name: Problem, Value: 32
information/config: Name: Recovery, Value: 64
information/config: Name: RunAsGroup, Value: staff
information/config: Name: RunAsUser, Value: gunnar
information/config: Name: RunDir, Value: /Users/gunnar/i2/var/run
information/config: Name: ServiceCritical, Value: 2
information/config: Name: ServiceOK, Value: 0
information/config: Name: ServiceUnknown, Value: 3
information/config: Name: ServiceWarning, Value: 1
information/config: Name: StatePath, Value: /Users/gunnar/i2/var/lib/icinga2/icinga2.state
information/config: Name: SysconfDir, Value: /Users/gunnar/i2/etc
information/config: Name: Unknown, Value: 8
information/config: Name: Up, Value: 16
information/config: Name: VarsPath, Value: /Users/gunnar/i2/var/cache/icinga2/icinga2.vars
information/config: Name: Warning, Value: 2
information/config: Name: ZonesDir, Value: /Users/gunnar/i2/etc/icinga2/zones.d
null
<2> => 

@icinga-migration
Copy link
Author

Updated by danvaida on 2016-03-23 10:50:35 +00:00

@gunnarbeutner thanks! that's a very useful snippet right there.

I was able to get a 200 while trying to use the numeric representation (hopefully got the right figures in there).

$ curl -s --cacert /etc/icinga2/pki/ca.crt \--cert /etc/icinga2/pki/icinga2-master.crt --key /etc/icinga2/pki/icinga2-master.key -H 'Accept: application/json' -X PUT 'https://icinga2-master:5665/v1/objects/users/test' \
-d '{ "attrs": { "pager": "1234567890", "groups": [ "icingaadmins" ], "display_name": "PagerDuty Notification User", "states": [ 1, 2, 4, 8, 16, 32 ], "types": [ 32, 64 ] } }' | python -m json.tool
{
    "results": [
        {
            "code": 200.0,
            "status": "Object was created"
        }
    ]
}

Anyway, it seems that also the types key is having the same issue, not only the states.

@icinga-migration
Copy link
Author

Updated by mfriedrich on 2016-03-23 11:05:54 +00:00

This affects all arrays which are using constants inside the configuration objects.

  • Notification/User states and types
  • Ido*Connection categories
  • ...

We've been discussing whether to allow strings ("OK") inside FilterArrayToInt(). This would allow us to pass such constants as JSON strings, or inside the configuration.

@icinga-migration
Copy link
Author

Updated by gbeutner on 2016-03-23 12:41:24 +00:00

  • Assigned to set to gbeutner

@icinga-migration
Copy link
Author

Updated by gbeutner on 2016-03-24 08:16:38 +00:00

  • Status changed from New to Assigned
  • Target Version set to 2.4.5

This is now fixed in the master branch:

2016-03-24 09:14:39 +0100] critical/config: Error: Validation failed for object 'test' of type 'User'; Attribute 'states': Array element 'OK' of type 'String' is not valid here; expected type 'Number'.
Location: in /Users/gunnar/i2/var/lib/icinga2/api/packages/_api/acheron-1445924979-1/conf.d/users/test.conf: 5:2-5:66
/Users/gunnar/i2/var/lib/icinga2/api/packages/_api/acheron-1445924979-1/conf.d/users/test.conf(3):  groups = [ "icingaadmins" ]
/Users/gunnar/i2/var/lib/icinga2/api/packages/_api/acheron-1445924979-1/conf.d/users/test.conf(4):  pager = "1234567890"
/Users/gunnar/i2/var/lib/icinga2/api/packages/_api/acheron-1445924979-1/conf.d/users/test.conf(5):  states = [ "OK", "Warning", "Critical", "Unknown", "Up", "Down" ]
                                                                                                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
/Users/gunnar/i2/var/lib/icinga2/api/packages/_api/acheron-1445924979-1/conf.d/users/test.conf(6):  types = [ "Problem", "Recovery" ]
/Users/gunnar/i2/var/lib/icinga2/api/packages/_api/acheron-1445924979-1/conf.d/users/test.conf(7):  version = 1458728336.476382

[2016-03-24 09:14:39 +0100] critical/config: 1 error

This patch needs significant testing before it can be merged into the support branch.

@icinga-migration
Copy link
Author

Updated by Anonymous on 2016-03-24 08:16:43 +00:00

  • Status changed from Assigned to Resolved
  • Done % changed from 0 to 100

Applied in changeset 5de9a98.

@icinga-migration
Copy link
Author

Updated by mfriedrich on 2016-03-24 09:58:32 +00:00

  • Relates set to 11445

@icinga-migration
Copy link
Author

Updated by mfriedrich on 2016-03-24 10:04:48 +00:00

  • Parent Id deleted 11415

@icinga-migration
Copy link
Author

Updated by gbeutner on 2016-04-20 08:16:00 +00:00

  • Backport? changed from Not yet backported to Already backported

@icinga-migration
Copy link
Author

Updated by mfriedrich on 2016-06-23 13:19:07 +00:00

@danvaida

Please note the changes coming with #11445 in 2.5.0 and adjust your scripts accordingly. The number values are gone.

@icinga-migration icinga-migration added bug Something isn't working area/api REST API labels Jan 17, 2017
@icinga-migration icinga-migration added this to the 2.4.5 milestone Jan 17, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/api REST API bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant