@@ -9,7 +9,7 @@ class ZbxTemplate(object):
99 plg_type = 'all'
1010 mainTemplate = """<?xml version="1.0" encoding="UTF-8"?>
1111<zabbix_export>
12- <version>2 .0</version>
12+ <version>3 .0</version>
1313 <groups>
1414 <group>
1515 <name>Templates</name>
@@ -19,6 +19,7 @@ class ZbxTemplate(object):
1919 <template>
2020 <template>{template}</template>
2121 <name>{template}</name>
22+ <description/>
2223 <groups>
2324 <group>
2425 <name>Templates</name>
@@ -63,6 +64,10 @@ class ZbxTemplate(object):
6364 ('privatekey' , None ), ('port' , None ), ('description' , None )
6465 ]
6566
67+ item_prototype_defaults = [
68+ ('application_prototypes' , None )
69+ ]
70+
6671 trigger_defaults = [
6772 ('expression' , None ), ('name' , None ), ('url' , None ),
6873 ('status' , 0 ), ('priority' , 3 ), ('description' , None ),
@@ -107,7 +112,7 @@ class ZbxTemplate(object):
107112 ('ipmi_sensor' , None ), ('authtype' , 0 ),
108113 ('username' , None ), ('password' , None ), ('publickey' , None ),
109114 ('privatekey' , None ), ('port' , None ), ('lifetime' , 7 ),
110- ('description' , None ), ('key' , None )
115+ ('description' , None ), ('key' , None ), ( 'host_prototypes' , None )
111116 ]
112117
113118 dashboard_defaults = [
@@ -303,11 +308,11 @@ def _macro(self, xml_key='macro'):
303308 result += '<{1}>{0}</{1}>' .format (self ._format_args (self .macro_defaults , value ), xml_key )
304309 return result
305310
306- def item (self , args = None , xml_key = 'item' ):
311+ def item (self , args = None , xml_key = 'item' , prototype = False ):
307312 if args is None :
308313 args = {}
309314 return '<{2}>{0}{1}</{2}>' .format (
310- self ._format_args (self .item_defaults , args ),
315+ self ._format_args (self .item_defaults if not prototype else self . item_defaults + self . item_prototype_defaults , args ),
311316 self ._application (), xml_key )
312317
313318 def trigger (self , args = None , xml_key = 'trigger' , defaults = None ):
@@ -371,7 +376,6 @@ def condition(self, args=None, xml_key='condition'):
371376 return res
372377
373378 def discovery_rule (self , rule = None , conditions = None , items = None , triggers = None , graphs = None ):
374-
375379 if rule is None :
376380 rule = {}
377381 if conditions is None :
@@ -384,7 +388,7 @@ def discovery_rule(self, rule=None, conditions=None, items=None, triggers=None,
384388 graphs = []
385389 result_items = '<item_prototypes>'
386390 for item in items :
387- result_items += self .item (item , xml_key = 'item_prototype' )
391+ result_items += self .item (item , xml_key = 'item_prototype' , prototype = True )
388392 result_items += '</item_prototypes>'
389393
390394 result_triggers = '<trigger_prototypes>'
@@ -437,4 +441,5 @@ def _format_args(self, defaults, override):
437441 else :
438442 row = '<{0}>{1}</{0}>' .format (key , val )
439443 result += row
444+
440445 return result
0 commit comments