lukecyca / pyzabbix

Python Zabbix API
969 stars 314 forks source link

Trying to update host #113

Closed metabsd closed 5 years ago

metabsd commented 5 years ago
from zabbix.api import ZabbixAPI

def main():
    zapi = ZabbixAPI(url='https://server/zabbix/',
                     user='api', password='api')

    notborgyGroupID = '[' \
                          '{' \
                            '"groupid": "33"' \
                          '}, ' \
                          '{' \
                            '"groupid": "17"' \
                          '},' \
                          '{' \
                            '"groupid": "2"' \
                          '} ' \
                      ']'
    result = zapi.do_request('host.update',
                            {
                                "hostid": "10257",
                                "groups": notborgyGroupID,
                                #"templates": notborgyTemplateID
                            })
    print(result)

if __name__ == "__main__":
    main()

The error I got

$ python3 hostgroup_update.py
Traceback (most recent call last):
  File "hostgroup_update.py", line 59, in <module>
    main()
  File "hostgroup_update.py", line 53, in main
    "groups": notborgyGroupID,
  File "/usr/local/lib/python3.7/site-packages/pyzabbix/api.py", line 263, in do_request
    raise ZabbixAPIException(err)
pyzabbix.api.ZabbixAPIException: {'code': -32602, 'message': 'Invalid params.', 'data': 'Host "SERVER" cannot be without host group.', 'json': '{\'jsonrpc\': \'2.0\', \'method\': \'host.update\', \'params\': {\'hostid\': \'10257\', \'groups\': \'[{"groupid": "33"}, {"groupid": "17"},{"groupid": "2"} ]\'}, \'id\': \'1\', \'auth\': \'token\'}'}
metabsd commented 5 years ago

I fix my problem. It's a type problem. The variable have to be define like that.

notborgygroupid = [{"groupid": "33"}, {"groupid": "17"}, {"groupid": "2"}]