[ZBX-9286] Cannot perform "configuration.import" when host and trigger have a user macro Created: 2015 Feb 05 Updated: 2017 May 30 Resolved: 2015 Feb 25 |
|
Status: | Closed |
Project: | ZABBIX BUGS AND ISSUES |
Component/s: | API (A) |
Affects Version/s: | 2.4.3 |
Fix Version/s: | 2.4.5rc1, 2.5.0 |
Type: | Incident report | Priority: | Blocker |
Reporter: | Oleksii Zagorskyi | Assignee: | Unassigned |
Resolution: | Fixed | Votes: | 1 |
Labels: | import, macros, regression | ||
Remaining Estimate: | Not Specified | ||
Time Spent: | Not Specified | ||
Original Estimate: | Not Specified |
Issue Links: |
|
Description |
See comments |
Comments |
Comment by Oleksii Zagorskyi [ 2015 Feb 05 ] |
It's regression, as it's not reproducible on latest 2.2 To reproduce:
If the host/template doesn't exist - it (creation) will be success. {"jsonrpc":"2.0","error":{"code":-32602,"message":"Invalid params.","data":"Trigger \"Test_trigger\" already exists on \"Templ_test\".","debug":[{"file":"\/zab\/www-dev\/2.4\/include\/classes\/api\/services\/CTriggerGeneral.php","line":283,"function":"exception","class":"CApiService","type":"::","args":[100,"Trigger \"Test_trigger\" already exists on \"Templ_test\"."]},{"file":"\/zab\/www-dev\/2.4\/include\/classes\/api\/services\/CTrigger.php","line":695,"function":"checkIfExistsOnHost","class":"CTriggerGeneral","type":"->","args":[{"expression":"{Templ_test:test.last()}={$TEST_MACRO}","url":"","status":"0","priority":"2","type":"0","comments":"","description":"Test_trigger","parsedExpressions":[{"host":"Templ_test","item":"test"}]}]},{"file":"\/zab\/www-dev\/2.4\/include\/classes\/api\/services\/CTrigger.php","line":712,"function":"checkInput","class<span class="code-quote">":"CTrigger","type":"->","args":[[{"expression":"{Templ_test:test.last()}={$TEST_MACRO}","url":"","status":"0","priority":"2","type":"0","comments":"","description":"Test_trigger","parsedExpressions":[{"host":"Templ_test","item":"test"}],"value":0}],"create"]},{"file":"\/zab\/www-dev\/2.4\/include\/classes\/import\/CConfigurationImport.php","line":1268,"function":"create","class<span class="code-quote">":"CTrigger","type":"->","args":[[{"expression":"{Templ_test:test.last()}={$TEST_MACRO}","url":"","status":"0","priority":"2","type":"0","comments":"","description":"Test_trigger","parsedExpressions":[{"host":"Templ_test","item":"test"}]}]]},{"file":"\/zab\/www-dev\/2.4\/include\/classes\/import\/CConfigurationImport.php","line":181,"function":"processTriggers","class<span class="code-quote">":"CConfigurationImport","type":"->","args":[]},{"file":"\/zab\/www-dev\/2.4\/include\/classes\/api\/services\/CConfiguration.php","line":86,"function":"import","class<span class="code-quote">":"CConfigurationImport","type":"->","args":[]},{"function":"import","class<span class="code-quote">":"CConfiguration","type":"->","args":[{"rules":{"templates":{"createMissing":true,"updateExisting":true},"items":{"createMissing":true,"updateExisting":true},"triggers":{"createMissing":true,"updateExisting":true},"groups":{"createMissing":true,"updateExisting":true}},"format":"xml","source":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<zabbix_export><version>2.0<\/version><date>2015-02-05T14:17:41Z<\/date><groups><group><name>Templates<\/name><\/group><\/groups><templates><template><template>Templ_test<\/template><name>Templ_test<\/name><description\/><groups><group><name>Templates<\/name><\/group><\/groups><applications\/><items><item><name>Test_item<\/name><type>0<\/type><snmp_community\/><multiplier>0<\/multiplier><snmp_oid\/><key>test<\/key><delay>180<\/delay><history>3<\/history><trends>365<\/trends><status>0<\/status><value_type>4<\/value_type><allowed_hosts\/><units\/><delta>0<\/delta><snmpv3_contextname\/><snmpv3_securityname\/><snmpv3_securitylevel>0<\/snmpv3_securitylevel><snmpv3_authprotocol>0<\/snmpv3_authprotocol><snmpv3_authpassphrase\/><snmpv3_privprotocol>0<\/snmpv3_privprotocol><snmpv3_privpassphrase\/><formula>1<\/formula><delay_flex\/><params\/><ipmi_sensor\/><data_type>0<\/data_type><authtype>0<\/authtype><username\/><password\/><publickey\/><privatekey\/><port\/><description\/><inventory_link>0<\/inventory_link><applications\/><valuemap\/><logtimefmt\/><\/item><\/items><discovery_rules\/><macros><macro><macro>{$TEST_MACRO}<\/macro><value>anythyng<\/value><\/macro><\/macros><templates\/><screens\/><\/template><\/templates><triggers><trigger><expression>{Templ_test:test.last()}={$TEST_MACRO}<\/expression><name>Test_trigger<\/name><url\/><status>0<\/status><priority>2<\/priority><description\/><type>0<\/type><dependencies\/><\/trigger><\/triggers><\/zabbix_export>"}]},{"file":"\/zab\/www-dev\/2.4\/include\/classes\/api\/clients\/CLocalApiClient.php","line":103,"function":"call_user_func_array","args":[[{},"import"],[{"rules":{"templates":{"createMissing":true,"updateExisting":true},"items":{"createMissing":true,"updateExisting":true},"triggers":{"createMissing":true,"updateExisting":true},"groups":{"createMissing":true,"updateExisting":true}},"format":"xml","source":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<zabbix_export><version>2.0<\/version><date>2015-02-05T14:17:41Z<\/date><groups><group><name>Templates<\/name><\/group><\/groups><templates><template><template>Templ_test<\/template><name>Templ_test<\/name><description\/><groups><group><name>Templates<\/name><\/group><\/groups><applications\/><items><item><name>Test_item<\/name><type>0<\/type><snmp_community\/><multiplier>0<\/multiplier><snmp_oid\/><key>test<\/key><delay>180<\/delay><history>3<\/history><trends>365<\/trends><status>0<\/status><value_type>4<\/value_type><allowed_hosts\/><units\/><delta>0<\/delta><snmpv3_contextname\/><snmpv3_securityname\/><snmpv3_securitylevel>0<\/snmpv3_securitylevel><snmpv3_authprotocol>0<\/snmpv3_authprotocol><snmpv3_authpassphrase\/><snmpv3_privprotocol>0<\/snmpv3_privprotocol><snmpv3_privpassphrase\/><formula>1<\/formula><delay_flex\/><params\/><ipmi_sensor\/><data_type>0<\/data_type><authtype>0<\/authtype><username\/><password\/><publickey\/><privatekey\/><port\/><description\/><inventory_link>0<\/inventory_link><applications\/><valuemap\/><logtimefmt\/><\/item><\/items><discovery_rules\/><macros><macro><macro>{$TEST_MACRO}<\/macro><value>anythyng<\/value><\/macro><\/macros><templates\/><screens\/><\/template><\/templates><triggers><trigger><expression>{Templ_test:test.last()}={$TEST_MACRO}<\/expression><name>Test_trigger<\/name><url\/><status>0<\/status><priority>2<\/priority><description\/><type>0<\/type><dependencies\/><\/trigger><\/triggers><\/zabbix_export>"}]]},{"file":"\/zab\/www-dev\/2.4\/include\/classes\/core\/CJsonRpc.php","line":70,"function":"callMethod","class<span class="code-quote">":"CLocalApiClient","type":"->","args":["configuration","import",{"rules":{"templates":{"createMissing":true,"updateExisting":true},"items":{"createMissing":true,"updateExisting":true},"triggers":{"createMissing":true,"updateExisting":true},"groups":{"createMissing":true,"updateExisting":true}},"format":"xml","source":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<zabbix_export><version>2.0<\/version><date>2015-02-05T14:17:41Z<\/date><groups><group><name>Templates<\/name><\/group><\/groups><templates><template><template>Templ_test<\/template><name>Templ_test<\/name><description\/><groups><group><name>Templates<\/name><\/group><\/groups><applications\/><items><item><name>Test_item<\/name><type>0<\/type><snmp_community\/><multiplier>0<\/multiplier><snmp_oid\/><key>test<\/key><delay>180<\/delay><history>3<\/history><trends>365<\/trends><status>0<\/status><value_type>4<\/value_type><allowed_hosts\/><units\/><delta>0<\/delta><snmpv3_contextname\/><snmpv3_securityname\/><snmpv3_securitylevel>0<\/snmpv3_securitylevel><snmpv3_authprotocol>0<\/snmpv3_authprotocol><snmpv3_authpassphrase\/><snmpv3_privprotocol>0<\/snmpv3_privprotocol><snmpv3_privpassphrase\/><formula>1<\/formula><delay_flex\/><params\/><ipmi_sensor\/><data_type>0<\/data_type><authtype>0<\/authtype><username\/><password\/><publickey\/><privatekey\/><port\/><description\/><inventory_link>0<\/inventory_link><applications\/><valuemap\/><logtimefmt\/><\/item><\/items><discovery_rules\/><macros><macro><macro>{$TEST_MACRO}<\/macro><value>anythyng<\/value><\/macro><\/macros><templates\/><screens\/><\/template><\/templates><triggers><trigger><expression>{Templ_test:test.last()}={$TEST_MACRO}<\/expression><name>Test_trigger<\/name><url\/><status>0<\/status><priority>2<\/priority><description\/><type>0<\/type><dependencies\/><\/trigger><\/triggers><\/zabbix_export>"},"148de878253589e93ca25b3c47a89801"]},{"file":"\/zab\/www-dev\/2.4\/api_jsonrpc.php","line":63,"function":"execute","class<span class="code-quote">":"CJsonRpc","type":"->","args":[]}]},"id":1} Problem probably is that the macro is expanded in the expression at some point (before existence check) and API suppose that this is new trigger and mistakenly tries to create new one with the same expression. Simple "Templ_test" template is attached to this issue. |
Comment by Oleg Egorov (Inactive) [ 2015 Feb 10 ] |
(1) No string changes sasha CLOSED |
Comment by Oleg Egorov (Inactive) [ 2015 Feb 10 ] |
Fixed in svn://svn.zabbix.com/branches/dev/ZBX-9286 r52133 |
Comment by Oleg Egorov (Inactive) [ 2015 Feb 25 ] |
FIXED IN 2.4.5rc1 r52381, 2.5.0(trunk) r52382 |