Bonjour,
J'ai découvert un problème et j'ai donc du revenir sur ma fonction get_history.
Un paramètre est apparu : history. history peut avoir comme paramètre: 0,1,2,3 ou 4. Cela correspond à des formats( float, string, texte, integer,log)
j'ai rajouté une boucle qui va parcourir ses paramètres pour trouver celui qui correspond à chaque items. ex: item2 est de type float, donc il a pour paramètre 0.
Je remet le code avec une série de débug grâce à print.
Le code passe en revu chaque paramètre history pour voir celui qui correspond à l'item et donc lui retourne sa valeur. (Certains items n'ont aucune valeur)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 def get_history(url = "https://toto.net/zabbix/api_jsonrpc.php", username = "titi", password = "tata"): auth = authenticate(url, username, password) items = get_item(url, username, password) resultat = [] for item in items: print item #va m'indiquer l'item utilisé x = 0 while x < 5: print x #va m'indiquer la valeur de x values = {'jsonrpc': '2.0','method': 'history.get','params': {'output':'extend','history':x,'itemids':item,'sortfield':'clock','sortorder':'DESC','limit':1},'auth':auth,'id': '0'} data = json.dumps(values) req = urllib2.Request(url, data, {'Content-Type': 'application/json-rpc'}) response = urllib2.urlopen(req, data) output = json.loads(response.read()) print output['result'] #va m'indiquer ce je trouve dans result if output['result'] != []: resultat.append(output['result'][0]['value']) print output['result'][0]['value'] #renvoie la valeur dans result else: resultat.append(None) print None #renvoi None, si on ne découvre aucune valeur x+=1 return resultat
Voici le résultat du débug:
Vous l'aurez compris, des qu'il n'y a pas de valeur dans result, il met none.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 24043 #item 0 #1er paramètre [{u'itemid': u'24043', u'ns': u'663695951', u'value': u'0.2255', u'clock': u'1405956283'}] #output['result'] 0.2255 #valeur 1 [] None 2 [] None 3 [] None 4 [] None #item suivant 24049 0 [] None 1 [] None 2 [] None 3 [] None 4 [] None 24033 0 [] None 1 [] None 2 [] None 3 [{u'itemid': u'24033', u'ns': u'242415203', u'value': u'32768', u'clock': u'1405953633'}] 32768 4 [] None
Plus visuel, ça me donne cette liste(chaque couleur correspond à un item):
Alors que moi je désire ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 [ u'0.2255', None, None, None, None, None, None, None, None, None, None, None, None, u'32768', None]
Comment retravailler ma demande pour avoir le résultat attentu?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 [ u'0.2255', None, u'32768']
Merci d'avance
Partager