#!/usr/bin/env python

import json
import requests

class zapicall:
    __headers = {'Content-Type': 'application/json-rpc'}

    def __init__(self, url):
        self.__request = None
        self.__url = url
        self.__id = 1

    def request(self, auth, method, params):
        payload = {'jsonrpc': '2.0',
                   'method': method,
                   'params': params,
                   'id': self.__id,
                   'auth': auth}
        
        self.__request = requests.post(self.__url, headers=self.__headers, data=json.dumps(payload))
        self.__id += 1

    def response(self):
        res = json.loads(self.__request.text)

	if 'error' in res:
            raise Exception(res['error'])

        return res['result']

c = zapicall('http://127.0.0.1/zbx_10410/api_jsonrpc.php')

# c.request(auth=None, method='apiinfo.version', params={})
# print c.response()

c.request(auth=None, method='user.login', params={'user': 'Admin', 'password': 'zabbix'})
a = c.response()

for i in range(1, 10000):
    host       = 'Dummy host %d' % (i)
    groups     = [ {'groupid': '8'} ]         # Dummy servers - CHANGE!!!
    interfaces = [ {'type': 1, 'main': 1, 'useip': 1, 'ip': '127.0.0.1', 'dns': '', 'port': '10050'} ]
    templates  = [ {'templateid': '10106' } ] # Dummy template - CHANGE!!!
    params = {'host': host,
              'groups': groups,
              'interfaces': interfaces,
              'templates': templates}

    c.request(auth=a, method='host.create', params=params)
    print json.dumps(params)
    print c.response()
