@@ -55,7 +55,7 @@ class ZbxTemplate(object):
55
55
('snmpv3_contextname' , None ), ('snmpv3_securityname' , None ),
56
56
('snmpv3_securitylevel' , 0 ), ('snmpv3_authprotocol' , 0 ),
57
57
('snmpv3_authpassphrase' , None ), ('snmpv3_privprotocol' , 0 ),
58
- ('snmpv3_privpassphrase' , None ), ('formula' , 1 ),
58
+ ('snmpv3_privpassphrase' , None ), ('logtimefmt' , None ), ( ' formula' , 1 ),
59
59
('delay_flex' , None ), ('params' , None ),
60
60
('ipmi_sensor' , None ), ('data_type' , 0 ), ('authtype' , 0 ),
61
61
('username' , None ), ('password' , None ), ('publickey' , None ),
@@ -89,14 +89,20 @@ class ZbxTemplate(object):
89
89
('calc_fnc' , 2 ), ('type' , Template .GRAPH_TYPE .normal )
90
90
]
91
91
92
+ condition_defaults = [
93
+ ('macro' , None ), ('value' , 0 ),
94
+ ('operator' , None ),
95
+ ('formulaid' , None )
96
+ ]
97
+
92
98
discovery_defaults = [
93
99
('name' , None ), ('type' , 2 ), ('snmp_community' , None ),
94
100
('snmp_oid' , None ), ('delay' , 60 ), ('status' , 0 ),
95
101
('allowed_hosts' , None ), ('snmpv3_contextname' , None ),
96
102
('snmpv3_securityname' , None ), ('snmpv3_securitylevel' , 0 ),
97
103
('snmpv3_authprotocol' , 0 ), ('snmpv3_authpassphrase' , None ),
98
104
('snmpv3_privprotocol' , 0 ), ('snmpv3_privpassphrase' , None ),
99
- ('delay_flex' , None ), ('params' , None ), ( 'filter' , None ),
105
+ ('delay_flex' , None ), ('params' , None ),
100
106
('ipmi_sensor' , None ), ('authtype' , 0 ),
101
107
('username' , None ), ('password' , None ), ('publickey' , None ),
102
108
('privatekey' , None ), ('port' , None ), ('lifetime' , 7 ),
@@ -194,7 +200,23 @@ def graph(self, args={}, xml_key='graph'):
194
200
self ._format_args (self .graph_values_defaults , args ),
195
201
graph_items , xml_key )
196
202
197
- def discovery_rule (self , rule = {}, items = [], triggers = [], graphs = []):
203
+ # condition for template creation for zabbix version 4.4
204
+ def condition (self , args = {}, xml_key = 'condition' ):
205
+ try :
206
+ conditions = args ['condition' ]
207
+ except KeyError :
208
+ raise LookupError (
209
+ 'Miss item in conditions: {0}.' .format (args ))
210
+ res = ''
211
+ for idx , item in enumerate (conditions ):
212
+ res += '<{1}>{0}</{1}>' .format (
213
+ self ._format_args (self .condition_defaults , item ),
214
+ xml_key )
215
+ res = '<conditions>' + res + '</conditions>' + '<formula/><evaltype>0</evaltype>'
216
+
217
+ return res
218
+
219
+ def discovery_rule (self , rule = {},conditions = [], items = [], triggers = [], graphs = []):
198
220
199
221
result_items = '<item_prototypes>'
200
222
for item in items :
@@ -214,10 +236,25 @@ def discovery_rule(self, rule={}, items=[], triggers=[], graphs=[]):
214
236
graph , xml_key = 'graph_prototype' )
215
237
result_graphs += '</graph_prototypes>'
216
238
217
- result = '<discovery_rule>{0}{1}{2}{3}</discovery_rule>'
239
+ if len (conditions ) > 0 :
240
+
241
+ result_conditions = '<filter>'
242
+ for condition in conditions :
243
+ result_conditions += self .condition (
244
+ condition , xml_key = 'condition' )
245
+ result_conditions += '</filter>'
246
+ else :
247
+ result = '<discovery_rule>{0}{1}{2}{3}</discovery_rule>'
248
+ if ('filter' , None ) not in self .discovery_defaults :
249
+ self .discovery_defaults .append (('filter' , None ))
250
+ return result .format (
251
+ self ._format_args (self .discovery_defaults , rule ),
252
+ result_items , result_triggers , result_graphs )
253
+
254
+ result = '<discovery_rule>{0}{1}{2}{3}{4}</discovery_rule>'
218
255
return result .format (
219
256
self ._format_args (self .discovery_defaults , rule ),
220
- result_items , result_triggers , result_graphs )
257
+ result_conditions , result_items , result_triggers , result_graphs )
221
258
222
259
def _application (self ):
223
260
result = '<applications><application><name>{0}'
0 commit comments