Search code examples
pythonzabbix

how to use trigger.adddependencies in pyzabbix


i'm a newbie in python and coding,i'm trying to use pyzabbix to add trigger dependecies,but some error occusrs.

When i run

zapi.trigger.addDependencies(triggerid, dependsOnTriggerid)

an error occurs

pyzabbix.ZabbixAPIException: ('Error -32500: Application error., No permissions to referred object or it does not exist!', -32500)

i get the "triggerid" and "dependsOnTriggerid" by trigger.get:

triggerid_info = zapi.trigger.get(filter={'host': 'xx','description': 'xx'},output=['triggerid'], selectDependencies=['description'])

triggerid = triggerid_info[0]['triggerid']

dependsOnTriggerid = trigger_info[0]['dependencies'][0]['triggerid']

The results are as follws:

Traceback (most recent call last): File "E:/10.python/2019-03-07/1.py", line 14, in zapi.trigger.addDependencies(triggerid, dependsOnTriggerid) File "D:\Program Files\Python37\lib\site-packages\pyzabbix__init__.py", line 166, in fn args or kwargs File "D:\Program Files\Python37\lib\site-packages\pyzabbix__init__.py", line 143, in do_request raise ZabbixAPIException(msg, response_json['error']['code']) pyzabbix.ZabbixAPIException: ('Error -32500: Application error., No permissions to referred object or it does not exist!', -32500)

Did i get the wrong triggerid? or the i use the method in a wrong way? Thanks so much


Solution

  • To add a dependancy means that you need to link two different triggers (from the same host or from another one) with a master-dependent logic.

    You are trying to add the dependancy triggerid -> dependsOnTriggerid, which is obtained from a supposed existing dependancy (trigger_info[0]['dependencies'][0]['triggerid']), and this makes little sense and I suppose it's the cause of the error.

    You need to get both trigger's triggerid and then add the dependancy:

    masterTriggerObj = zapi.trigger.get( /* filter to get your master trigger here */ )
    dependentTriggerObj = zapi.trigger.get( /* filter to get your dependent trigger here */)
    
    result = zapi.trigger.adddependencies(triggerid=dependentTriggerObj[0]['triggerid'], dependsOnTriggerid=masterTriggerObj[0]['triggerid'])