8. Sanet Rest Api¶
Contenuti
8.1. Introduzione¶
Il modulo rest_api permette di effettuare interrogazioni sullo stato di Sanet una API REST basata su protocollo HTTP.
Important
Questo modulo non e’ attivo di default.
8.2. Installazione¶
8.2.1. Abilitazione il modulo¶
Per abilitare il modulo, inserire nel file:
{{SANET_INSTALL_DIR}}/conf/settings.py
la seguente riga:
if 'rest_api' not in INSTALLED_APPS: INSTALLED_APPS.append('rest_api')
8.2.2. Configurazione principale¶
Per utilizzare le REST API e’ necessario definire un token di autenticazione che deve essere specificato in tutte le richieste.
Il token e’ una stringa di caratteri lunga a piacere.
Per personalizzare il token di autenticazione (il default è una chiave casuale), inserire la seguente riga nel file di configurazione di Sanet:
REST_API_AUTH_COOKIE = " ... "
Esempi:
REST_API_AUTH_COOKIE = "*!@!)@#5dc(*@NJ#$(108123-181@->?]" REST_API_AUTH_COOKIE = "thisismysecrettoken"
Warning
il token di autenticazione deve essere univoco per installazione.
8.3. API REST¶
8.3.1. Formato delle richieste¶
8.3.1.1. URL Base¶
La URL base per le richieste e’:
https://....<base url>...../rest_api/ <parte variabile> [ ? <parametri in GET> ]
8.3.1.2. Passaggio parametri (GET)¶
Le richieste possono prevedere un numero variabili di parametri passati in GET nella URL della richiesta.
Questi sono i parametri GET che sono validi per qualunque URL:
Nome parametro Obbligatorio Descrizione sanet3auth Si Stinga contenente il token di sicurezza valido. Deve essere uguale al parametro di configurazione REST_API_AUTH_COOKIE tenant Serve a specificare il tenant sul quale effettuare la ricerca. Se non specificato viene utilizzato il tenant primary. username Serve a filtrare la ricerca in base alla visibilità dell’utente specificato.
8.3.2. Formato delle risposte¶
8.3.2.1. Risposte con successo¶
In caso di successo, le risposte vengono inviate al cliente con una risposta HTTP con codice 200.
Il contentuto della response HTTP (l’output della richiesta) sono dei dati codificati in formato JSON,
I dati della risposta sono strutturati sempre con questa struttura:
{ "elapsed_time": <tempo di elaborazione>, "operation" : <nome dell'operazione richiesta sulla risorsa>, "result" : <dati veri e propri prodotti dell'interrogazione effettuata> }
In base al tipo di interrogazione effettuata possono essere aggiunti più o meno campi.
8.3.2.2. Risposte di errore¶
In caso di errori o anomalie, le risposte vengono inviate al cliente con una risposta HTTP con codice di errore coerente con il tipo di segnalazione.
Il contentuo della reponse HTTP sara’ stringa contente il messaggio di errore in formato intelleggibile.
8.4. ELENCO API DISPONIBILI¶
8.4.1. Nodi¶
8.4.1.1. Lista dei nodi¶
DESCRIZIONE
Per ricevere una lista di tutti i nodi, la url da interrogare è la seguente:
http://<hostname>/sanet/rest_api/nodesEsempio:
http://<hostname>/sanet/rest_api/nodes?sanet3auth=12345
INPUT
Nessuno.
OUTPUT
Come risposta si riceverà il json standard Risposte con successo con una lista di dizionari, contenenti informazioni sui nodi filtrati, nel campo result.
{'elapsed_time': 0.005944013595581055, 'operation': u'fetch_all_node', 'result': [{'cluster_distinguisher': None, 'cluster_element_id': None, 'cluster_id': None, 'cluster_instance': None, 'cluster_instance_time': None, 'cluster_role': 0, 'cluster_xform': None, 'description': u'', 'dft_timeout': 1, 'dns6_name': None, 'dns_name': None, 'effective_ip': u'127.0.0.1', 'ip4_mgt': None, 'ip6_mgt': None, 'is_abstract': False, 'kind': 1, 'name': u'localhost', 'parent_id': None, 'path': u'localhost', 'snmp_community': u'public', 'snmp_port': 161, 'snmp_v3_authdata': None, 'snmp_version': 2, 'tenant_id': u'16d3c6af68a84588a70d446a4d30d540', 'timezone': u'Europe/Rome', 'use_ipv4': True, 'uuid': u'23ca1860edbd4711822edb319717c616'}]}
8.4.1.2. Info su un nodo¶
DESCRIZIONE
Per ricevere infomazioni su un nodo specifico, la url da interrogare è una delle seguenti:
https://<url base>/rest_api/node/<uuid o nome del nodo>Esempio:
https://<url base>/rest_api/node/localhost?sanet3auth=12345
INPUT
Nessuno.
OUTPUT
Come risposta si riceverà il json standard Risposte con successo con un dizionario, contenente informazioni sul nodo richiesto, nel campo result.
{'elapsed_time': 0.010519027709960938, 'operation': 'get_node_info', 'result': {'cluster_distinguisher': None, 'cluster_element_id': None, 'cluster_id': None, 'cluster_instance': None, 'cluster_instance_time': None, 'cluster_role': 0, 'cluster_xform': None, 'description': u'', 'dft_timeout': 1, 'dns6_name': None, 'dns_name': None, 'effective_ip': u'127.0.0.1', 'ip4_mgt': None, 'ip6_mgt': None, 'is_abstract': False, 'kind': 1, 'name': u'localhost', 'parent_id': None, 'path': u'localhost', 'snmp_community': u'public', 'snmp_port': 161, 'snmp_v3_authdata': None, 'snmp_version': 2, 'tenant_id': u'16d3c6af68a84588a70d446a4d30d540', 'timezone': u'Europe/Rome', 'use_ipv4': True, 'uuid': u'23ca1860edbd4711822edb319717c616'}}
8.4.1.3. Cambiamenti di stato primary condition¶
DESCRIZIONE
Per ricevere la lista dei cambiamenti di stato della condition primary di uno specifico nodo, la url da interrogare è la seguente:
https://<url base>/rest_api/node/<uuid o nome del nodo>/get_primary_condition_status_change[?ts_start=<timestamp>&ts_end=<timestamp>]Esempio
https://<url base>/rest_api/node/localhost/get_primary_condition_status_change?sanet3auth=12345
INPUT
Parametri opzionali da fornire in GET sono ts_start e ts_end. Se non valorizzati, vengono valutati i dati delle ultime otto ore.
OUTPUT
Come risposta si riceverà il json standard Risposte con successo con nel campo result una lista di tuple
(ts_start, ts_end, status)Alla risposta vengono aggiunti anche i seguenti campi:
- element_name: nome del nodo
- element_uuid: uuid del nodo
- element_path: path del nodo
- condition_path: path della condition
Esempi
Esempi di richieste:
https://<url base>/rest_api/node/localhost/get_primary_condition_status_change?sanet3auth=12345 https://<url base>/rest_api/node/localhost/get_primary_condition_status_change?sanet3auth=12345&ts_start=1473142136&ts_end=1473170936 https://<url base>/rest_api/node/9401493b9e5844e0b0a4baf757fa5404/get_primary_condition_status_change?sanet3auth=12345 https://<url base>/rest_api/node/9401493b9e5844e0b0a4baf757fa5404/get_primary_condition_status_change?sanet3auth=12345&ts_start=1473142136&ts_end=1473170936Output:
{'condition_path': u'localhost;;icmp-reachability;reach', 'elapsed_time': 0.020576000213623047, 'element_name': u'localhost', 'element_path': u'localhost', 'element_uuid': u'23ca1860edbd4711822edb319717c616', 'operation': 'get_primary_condition_status_change', 'result': [(1501132183, 1501160983, 100)]}
8.4.2. Interfacce¶
8.4.2.1. Lista interfacce¶
DESCRIZIONE
Per ricevere una lista di tutte le interfacce, la url da interrogare è la seguente:
https://<url base>/rest_api/interfacesEsempio:
https://<url base>/rest_api/interfaces?sanet3auth=12345
INPUT
TODO
OUTPUT
Come risposta si riceverà il json standard Risposte con successo con una lista di dizionari, contenenti informazioni sulle interfacce filtrate, nel campo result.
Esempio di risposta:
{'elapsed_time': 0.008428812026977539, 'operation': u'fetch_all_interface', 'result': [{'backbone': False, 'cluster_distinguisher': None, 'cluster_id': None, 'cluster_instance': None, 'cluster_role': 0, 'cluster_xform': None, 'description': u'', 'distinguisher': u'eth0', 'ifindex': u'2', 'is_abstract': False, 'kind': 2, 'name': u'eth0', 'parent_id': u'23ca1860edbd4711822edb319717c616', 'path': u'localhost:eth0', 'uuid': u'08fec5c2500c47d18e97eee7947a38e7', 'xform': u"byRegexpUnique(1.3.6.1.2.1.2.2.1.2@, '^'+re_escape($distinguisher)+'$')"}]}
8.4.2.2. Info interfaccia¶
DESCRIZIONE
Per ricevere infomazioni su una interfaccia specifica, la url da interrogare è una delle seguenti:
https://<url base>/rest_api/interface/<uuid o nome dell'interfaccia> https://<url base>/rest_api/interface/<uuid o nome dell'interfaccia/get_interface_infoEsempio:
https://<url base>/rest_api/interface/08fec5c2500c47d18e97eee7947a38e7/get_interface_info
INPUT
Nessuno.
OUTPUT
Come risposta si riceverà il json standard Risposte con successo con un dizionario, contenente informazioni sull’interfaccia richiesta, nel campo result.
Esempio di risposta:
{'elapsed_time': 0.006204843521118164, 'operation': 'get_interface_info', 'result': {'backbone': False, 'cluster_distinguisher': None, 'cluster_id': None, 'cluster_instance': None, 'cluster_role': 0, 'cluster_xform': None, 'description': u'', 'distinguisher': u'eth0', 'ifindex': u'2', 'is_abstract': False, 'kind': 2, 'name': u'eth0', 'parent_id': u'23ca1860edbd4711822edb319717c616', 'path': u'localhost:eth0', 'uuid': u'08fec5c2500c47d18e97eee7947a38e7', 'xform': u"byRegexpUnique(1.3.6.1.2.1.2.2.1.2@, '^'+re_escape($distinguisher)+'$')"}}
8.4.2.3. Traffico interfaccia¶
DESCRIZIONE
Per ricevere informazioni sul traffico di un’interfaccia specifica, la url da chiamare è la seguente:
http://<url base>/rest_api/interface/<uuid o nome dell'interfaccia>/get_traffic[?ts_start=&ts_end=]Esempio:
http://<url base>/rest_api/interface/08fec5c2500c47d18e97eee7947a38e7/get_traffic?sanet3auth=12345
INPUT
Parametri opzionali da fornire in GET sono ts_start e ts_end. Se non valorizzati, vengono valutati i dati delle ultime otto ore.
OUTPUT
Come risposta si riceverà il json standard Risposte con successo con i seguenti campi aggiuntivi:
- element_name: nome dell’interfaccia
- element_uuid: uuid dell’interfaccia
- element_path: path dell’interfaccia
e un dizionario nel campo result contenente le seguenti chiavi:
- out_max: traffico in uscita massimo
- out_avg: traffico in uscita medio
- in_max: traffico in entrata massimo
- in_avg: traffico in entrata medio
Esempi:
https://<url base>/rest_api/interface/foo:eth0/get_traffic?sanet3auth=12345 https://<url base>/rest_api/interface/foo:eth0/get_traffic?sanet3auth=12345&ts_start=1473142136&ts_end=1473170936 https://<url base>/rest_api/interface/1b85b8c803c74d699adcce914af7d0c9/get_traffic?sanet3auth=12345 https://<url base>/rest_api/interface/1b85b8c803c74d699adcce914af7d0c9/get_traffic?sanet3auth=12345&ts_start=1473142136&ts_end=1473170936Esempio di output:
{'elapsed_time': 0.011709928512573242, 'element_name': u'eth0', 'element_path': u'localhost:eth0', 'element_uuid': u'08fec5c2500c47d18e97eee7947a38e7', 'operation': 'get_traffic', 'result': {'in_avg': 221.68289183222956, 'in_max': 15201.112582781458, 'out_avg': 30.25014716703459, 'out_max': 2074.2958057395144}}
8.4.3. Storage¶
8.4.3.1. Lista storage¶
DESCRIZIONE
Per ricevere una lista di tutti gli storage, la url da interrogare è la seguente:
https://<url base>/rest_api/storages
INPUT
Nessuno.
OUTPUT
Come risposta si riceverà il json standard Risposte con successo con una lista di dizionari, contenenti informazioni sugli storage filtrati, nel campo result.
8.4.4. Servizi¶
8.4.4.1. Lista servizi¶
DESCRIZIONE
Per ricevere una lista di tutti i servizi, la url da interrogare è la seguente:
https://<url base>/rest_api/services
INPUT
Nessuno.
OUTPUT
Come risposta si riceverà il json standard Risposte con successo con una lista di dizionari, contenenti informazioni sui servizi filtrati, nel campo result.
8.4.5. Device¶
8.4.5.1. Lista device¶
DESCRIZIONE
Per ricevere una lista di tutti i device, la url da interrogare è la seguente:
https://<url base>/rest_api/devices
INPUT
Nessuno.
OUTPUT
Come risposta si riceverà il json standard Risposte con successo con una lista di dizionari, contenenti informazioni sui device filtrati, nel campo result.
8.4.6. Condition¶
8.4.6.1. Lista condition¶
DESCRIZIONE
Per ricevere una lista di tutte le condition, la url da interrogare è la seguente:
https://<url base>/rest_api/conditions
INPUT
Nessuno.
OUTPUT
Come risposta si riceverà il json standard Risposte con successo con una lista di dizionari, contenenti informazioni sulle condition filtrate, nel campo result.
{"elapsed_time": 0.0059909820556640625, "operation": "fetch_all_condition", "result": [{"statuschange_action": null, "status": 10, "uuid": "333095c2f8884b45a1dc0af1e6985bca", "title": "Controllo passivo", "uncheckable_fallback": null, "expr": "$var == 1", "datagroup_id": "a84d8b2b82914a538bc495ce2cdd7d9a", "primary": false, "max_tries": 1, "priority": 0, "statuslast": 40, "tries": 1, "statuslastchange": 1500138760, "mtime": 1500138438, "lastdone": 1500138760, "path": "localhost;;dgpassive;check", "dependson_id": null, "name": "check"}, {"statuschange_action": null, "status": 10, "uuid": "5ad5e373451d4ea5b31c38a940e78ac2", "title": "Simple condition", "uncheckable_fallback": null, "expr": "1.3.6.1.2.1.1.6.0@ == 'this is a test'", "datagroup_id": "a43d7d53c36149f09809cc32b31f6771", "primary": false, "max_tries": 1, "priority": 0, "statuslast": 10, "tries": 0, "statuslastchange": 1500139617, "mtime": 1500139613, "lastdone": 1500139617, "path": "localhost;;test-trap-regexp;check", "dependson_id": null, "name": "check"}, {"statuschange_action": null, "status": 10, "uuid": "97f2f82c827d44868d08794baf5d3e65", "title": "Simple condition", "uncheckable_fallback": null, "expr": "1.3.6.1.2.1.1.6.0@ == 'this is a test'", "datagroup_id": "ab43c217e32d49068d4aa55c5c262035", "primary": false, "max_tries": 1, "priority": 0, "statuslast": 10, "tries": 0, "statuslastchange": 1500139617, "mtime": 1500139613, "lastdone": 1500139617, "path": "localhost;;test-trap;check", "dependson_id": null, "name": "check"}]}
8.4.7. Datasource¶
8.4.7.1. Valore massimo datasource¶
DESCRIZIONE
Per ricevere il valore massimo di uno specifico datasource in un arco temporale, la url da interrogare è la seguente:
https://<url base>/rest_api/datasource/<uuid del datasource>/get_max_value
INPUT
Parametri opzionali da fornire in GET sono
- ts_start
- ts_end
- timespec
Se ts_start e ts_end non vengono valorizzati, saranno valutati i dati delle ultime otto ore.
Il parametro timespec permette di specificare, secondo la sintassi usanta in entables (Times), fasce temporali all’interno dell’intervallo [ts_start, ts_end].
OUTPUT
Come risposta si riceverà il json standard Risposte con successo con i seguenti campi aggiuntivi:
- element_name: nome dell’elemento
- element_uuid: uuid dell’elemento
- datasource_path: path del datasource
- datasource_name: nome del datasource
- datasource_uuid: uuid del datasource
e il valore richiesto nel campo result.
8.4.7.2. Valore medio datasource¶
DESCRIZIONE
Per ricevere il valore medio di uno specifico datasource in un arco temporale, la url da interrogare è la seguente:
https://<url base>/rest_api/datasource/<uuid del datasource>/get_avg_value
INPUT
Parametri opzionali da fornire in GET sono
- ts_start
- ts_end
- timespec
Se ts_start e ts_end non vengono valorizzati, saranno valutati i dati delle ultime otto ore.
Il parametro timespec permette di specificare, secondo la sintassi usanta in entables (Times), fasce temporali all’interno dell’intervallo [ts_start, ts_end].
OUTPUT
Come risposta si riceverà il json standard Risposte con successo con i seguenti campi aggiuntivi:
- element_name: nome dell’elemento
- element_uuid: uuid dell’elemento
- datasource_path: path del datasource
- datasource_name: nome del datasource
- datasource_uuid: uuid del datasource
e il valore richiesto nel campo result.
8.4.7.3. Valore minimo datasource¶
DESCRIZIONE
Per ricevere il valore minimo di uno specifico datasource in un arco temporale, la url da interrogare è la seguente:
https://<url base>/rest_api/datasource/<uuid del datasource>/get_min_value
INPUT
Parametri opzionali da fornire in GET sono
- ts_start
- ts_end
- timespec
Se ts_start e ts_end non vengono valorizzati, saranno valutati i dati delle ultime otto ore.
Il paraemtro timespec permette di specificare, secondo la sintassi usanta in entables (Times), fasce temporali all’interno dell’intervallo [ts_start, ts_end].
OUTPUT
Come risposta si riceverà il json standard Risposte con successo con i seguenti campi aggiuntivi:
- element_name: nome dell’elemento
- element_uuid: uuid dell’elemento
- datasource_path: path del datasource
- datasource_name: nome del datasource
- datasource_uuid: uuid del datasource
e il valore richiesto nel campo result.
8.4.8. Tag¶
8.4.8.1. Elenco dei tagtree¶
DESCRIZIONE
Per avere l’elenco dei tagtree bisogna utilizzare la seguente URL:
https://<url base>/rest_api/tagtreesEsempio:
https://<url base>/rest_api/tagtrees?sanet3auth=12345
INPUT
Nessuno.
OUTPUT
Come risposta si riceverà il JSON standard Risposte con successo.
Il campo result della risposta contiene una lista di dizionari (chiave/valore) con gli attributi di tutti i tagtree selezionati.
Esempio:
{'elapsed_time': 0.002173900604248047, 'operation': u'fetch_all_tagtree', 'result': [{'name': u'geo2', 'path': u'geo2:', 'uuid': u'f364154bab32441094c4208f024f040a'}, {'name': u'111', 'path': u'111:', 'uuid': u'bc54391b09334acea89597d49056ad8a'}, {'name': u'geo', 'path': u'geo:', 'uuid': u'63e7a2b9b243409a97a231b1ae35a73f'}, {'name': u'prova_tagging', 'path': u'prova_tagging:', 'uuid': u'68d3e1a3f2554c02acd2e8247313546f'}, {'name': u'tagtree1', 'path': u'tagtree1:', 'uuid': u'326d13e3c51f41afae2c61f79012e59b'}, {'name': u'tree1', 'path': u'tree1:', 'uuid': u'd201a37ca9db4ca298d3a854f8ca1e78'}, {'name': u'tree12', 'path': u'tree12:', 'uuid': u'865b09a66a804098b003895307a87607'}, {'name': u'tree13', 'path': u'tree13:', 'uuid': u'9c3c3286493643bdb07ae2b1683640d1'}, {'name': u'tree1b', 'path': u'tree1b:', 'uuid': u'7111510021ea46a49823d05e038815c4'}, {'name': u'tree1c', 'path': u'tree1c:', 'uuid': u'0b626627b2744958bea22da7c29bef67'}, {'name': u'xxx', 'path': u'xxx:', 'uuid': u'6ebee2af0d8c4f968fb9f9edd68f76b4'}, {'name': u'yyy', 'path': u'yyy:', 'uuid': u'c4a9ee0c543f4a8894066eb2d61f7ee3'}, {'name': u'zzz', 'path': u'zzz:', 'uuid': u'fc1364a9c73d41059860661f8408f092'}, {'name': u'tag2', 'path': u'tag2:', 'uuid': u'ade885ce11144a419afe6bd1d38cd422'}]}
8.4.8.2. Elenco dei tag¶
DESCRIZIONE
Per avere l’elenco dei tagtree bisogna utilizzare la seguente URL:
https://<url base>/rest_api/tags
INPUT
Nessuno
OUTPUT
Come risposta si riceverà il JSON standard Risposte con successo.
Il campo result della risposta contiene una lista di dizionari (chiave/valore) con gli attributi di tutti i tag selezionati.
Esempio:
{'elapsed_time': 0.00951695442199707, 'operation': u'fetch_all_tag', 'result': [{'icon': None, 'mtime': 1500153752, 'name': u'Geografico', 'parent_id': None, 'path': u'geo:/Geografico', 'tree_id': u'63e7a2b9b243409a97a231b1ae35a73f', 'uuid': u'422ce2179631474eb34a27cff467102a'}]}
8.4.8.3. Ultimo valore dei datasource contenuti in un tag¶
DESCRIZIONE
Elabora tutti i datasource del tag (e sottotag) e restituisce l’ultimo valore registrato.
http://<hostname>/sanet/rest_api/tag/<uuid or path>/datasources/get_last_value?<params>Esempio:
http://<hostname>/sanet/rest_api/tag/422ce2179631474eb34a27cff467102a/datasources/get_last_value?sanet3auth=12345&sum_by=name
INPUT
Questi sono i parametri in Get:
tag (stringa)
UUID o PATH del tag da elaborare.
sum_by (stringa)
Indica se sommare i valori dei datasource elabrorati e in che modo.
I valori ammessi sono:
- “by-name” : Somma i valori dei datasource raggruppando per nome del datasource
- “no” : Restituisce informazioni sull’ultimo valore per tutti i datasource elaborati.
Facoltativo: Si
OUTPUT
Restituisce un messaggio nel formato:
{ 'elapsed_time': <tempo in secondi> , 'errors' : <numero di anomalie in fase di elaborazione> , 'data' : <dati della richiesta> }Il contentuto/formato del campo data dipende dal valore specificato dai parametri in input.
Quando sum_series valore “no”, il campo data contiene un elenco di tuple:
<parent_id, parent_name, element_id, element_name, ds_uuid, ds_name, ds_path, value>Quando sum_series valore “by-name”,il campo data contiene un elenco di tuple:
< datasource name , total >
Esempi
Esempio: Chiamata senza parametro sum_by
{'elapsed_time': 0.022342920303344727, 'errors': '9 datasources not loaded', 'operation': 'get_last_value', 'result': [(u'23ca1860edbd4711822edb319717c616', u'localhost', u'82fe0ef593ea46d39f912344868613b5', u'root', u'0a0685b44c154d998d23b4e387f717db', u'used', u'localhost:root;;storage;used', None), (u'23ca1860edbd4711822edb319717c616', u'localhost', u'82fe0ef593ea46d39f912344868613b5', u'root', u'f4d23572b18a446292eee43e240b69fd', u'installed', u'localhost:root;;storage;installed', None), (u'23ca1860edbd4711822edb319717c616', u'localhost', u'08fec5c2500c47d18e97eee7947a38e7', u'eth0', u'48d9aec8ec194cec9813e6c4502eda0a', u'out', u'localhost:eth0;;iface-traffic;out', None)]}Esempio: Chiamata senza parametro sum_by=name
{'elapsed_time': 0.027868032455444336, 'errors': '9 datasources not loaded', 'operation': 'get_last_value', 'result': [ (u'installed', 122341423131), (u'used', 12345345)]}
8.4.8.4. Valori mensili dell’anno precedente dei datasource contenuti in un tag¶
DESCRIZIONE
Elabora tutti i datasource del tag (e sottotag) e restituisce il valore registrato all’inizio di ogni mese dell’anno.
http://<hostname>/sanet/rest_api/tag/<uuid or path>/datasources/get_last_year_values?<params>Esempio:
http://<hostname>/sanet/rest_api/tag/geo:/Geografico/datasources/get_last_year_values?sanet3auth=12345 http://<hostname>/sanet/rest_api/tag/422ce2179631474eb34a27cff467102a/datasources/get_last_year_values?sanet3auth=12345
INPUT
Questi sono i parametri all’interno della URL:
<uuid or path> (stringa)
UUID o PATH del tag da elaborare.
Questi sono i parametri in GET:
valid_time_window (intero)
In presenza di valori nulli registrati, numero di secondi di tolleranza entro il quale cercare il prima volore valido. Se non vengono trovati valori non nulli all’interno del periodo di tolleranza, il valore registrato per quel meso sara’ None.
OUTPUT
Restituisce un messaggio nel formato:
{ 'elapsed_time': <tempo in secondi> , 'errors' : <numero di anomalie in fase di elaborazione> , 'result' : <dati della richiesta> }Quando sum_series valore “no”, il campo data contiene un elenco di tuple:
<date, parent_id, parent_name, element_id, element_name, ds_uuid, ds_name, value>
Esempi
{'elapsed_time': 0.014796972274780273, 'errors': '0 datasources not loaded', 'operation': 'get_last_year_values', 'result': [('79b977c52f6e4c84aa496ba942ba70d8', 'localhost', 'ec6e4cb188b64ebcbce204d14380de4d', 'eth0', 'ccd306b551a94e9ca67673d7a96f89fb', 'in', 'localhost:eth0;;iface-traffic;in', '2016-01-01', 1451602800.0, None), ('79b977c52f6e4c84aa496ba942ba70d8', 'localhost', 'ec6e4cb188b64ebcbce204d14380de4d', 'eth0', 'ccd306b551a94e9ca67673d7a96f89fb', 'in', 'localhost:eth0;;iface-traffic;in', '2016-02-01', 1454281200.0, None), ('79b977c52f6e4c84aa496ba942ba70d8', 'localhost', 'ec6e4cb188b64ebcbce204d14380de4d', 'eth0', 'ccd306b551a94e9ca67673d7a96f89fb', 'in', 'localhost:eth0;;iface-traffic;in', '2016-03-01', 1456786800.0, None), ('79b977c52f6e4c84aa496ba942ba70d8', 'localhost', 'ec6e4cb188b64ebcbce204d14380de4d', 'eth0', 'ccd306b551a94e9ca67673d7a96f89fb', 'in', 'localhost:eth0;;iface-traffic;in', '2016-04-01', 1459461600.0, None), ('79b977c52f6e4c84aa496ba942ba70d8', 'localhost', 'ec6e4cb188b64ebcbce204d14380de4d', 'eth0', 'ccd306b551a94e9ca67673d7a96f89fb', 'in', 'localhost:eth0;;iface-traffic;in', '2016-05-01', 1462053600.0, None), ('79b977c52f6e4c84aa496ba942ba70d8', 'localhost', 'ec6e4cb188b64ebcbce204d14380de4d', 'eth0', 'ccd306b551a94e9ca67673d7a96f89fb', 'in', 'localhost:eth0;;iface-traffic;in', '2016-06-01', 1464732000.0, None), ('79b977c52f6e4c84aa496ba942ba70d8', 'localhost', 'ec6e4cb188b64ebcbce204d14380de4d', 'eth0', 'ccd306b551a94e9ca67673d7a96f89fb', 'in', 'localhost:eth0;;iface-traffic;in', '2016-07-01', 1467324000.0, None), ('79b977c52f6e4c84aa496ba942ba70d8', 'localhost', 'ec6e4cb188b64ebcbce204d14380de4d', 'eth0', 'ccd306b551a94e9ca67673d7a96f89fb', 'in', 'localhost:eth0;;iface-traffic;in', '2016-08-01', 1470002400.0, None), ('79b977c52f6e4c84aa496ba942ba70d8', 'localhost', 'ec6e4cb188b64ebcbce204d14380de4d', 'eth0', 'ccd306b551a94e9ca67673d7a96f89fb', 'in', 'localhost:eth0;;iface-traffic;in', '2016-09-01', 1472680800.0, None), ('79b977c52f6e4c84aa496ba942ba70d8', 'localhost', 'ec6e4cb188b64ebcbce204d14380de4d', 'eth0', 'ccd306b551a94e9ca67673d7a96f89fb', 'in', 'localhost:eth0;;iface-traffic;in', '2016-10-01', 1475272800.0, None), ('79b977c52f6e4c84aa496ba942ba70d8', 'localhost', 'ec6e4cb188b64ebcbce204d14380de4d', 'eth0', 'ccd306b551a94e9ca67673d7a96f89fb', 'in', 'localhost:eth0;;iface-traffic;in', '2016-11-01', 1477954800.0, None), ('79b977c52f6e4c84aa496ba942ba70d8', 'localhost', 'ec6e4cb188b64ebcbce204d14380de4d', 'eth0', 'ccd306b551a94e9ca67673d7a96f89fb', 'in', 'localhost:eth0;;iface-traffic;in', '2016-12-01', 1480546800.0, None), ('79b977c52f6e4c84aa496ba942ba70d8', 'localhost', 'ec6e4cb188b64ebcbce204d14380de4d', 'eth0', 'a66f9268b838471d98d5b579ad4f9c0c', 'out', 'localhost:eth0;;iface-traffic;out', '2016-01-01', 1451602800.0, None), ('79b977c52f6e4c84aa496ba942ba70d8', 'localhost', 'ec6e4cb188b64ebcbce204d14380de4d', 'eth0', 'a66f9268b838471d98d5b579ad4f9c0c', 'out', 'localhost:eth0;;iface-traffic;out', '2016-02-01', 1454281200.0, None), ('79b977c52f6e4c84aa496ba942ba70d8', 'localhost', 'ec6e4cb188b64ebcbce204d14380de4d', 'eth0', 'a66f9268b838471d98d5b579ad4f9c0c', 'out', 'localhost:eth0;;iface-traffic;out', '2016-03-01', 1456786800.0, None), ('79b977c52f6e4c84aa496ba942ba70d8', 'localhost', 'ec6e4cb188b64ebcbce204d14380de4d', 'eth0', 'a66f9268b838471d98d5b579ad4f9c0c', 'out', 'localhost:eth0;;iface-traffic;out', '2016-04-01', 1459461600.0, None), ('79b977c52f6e4c84aa496ba942ba70d8', 'localhost', 'ec6e4cb188b64ebcbce204d14380de4d', 'eth0', 'a66f9268b838471d98d5b579ad4f9c0c', 'out', 'localhost:eth0;;iface-traffic;out', '2016-05-01', 1462053600.0, None), ('79b977c52f6e4c84aa496ba942ba70d8', 'localhost', 'ec6e4cb188b64ebcbce204d14380de4d', 'eth0', 'a66f9268b838471d98d5b579ad4f9c0c', 'out', 'localhost:eth0;;iface-traffic;out', '2016-06-01', 1464732000.0, None), ('79b977c52f6e4c84aa496ba942ba70d8', 'localhost', 'ec6e4cb188b64ebcbce204d14380de4d', 'eth0', 'a66f9268b838471d98d5b579ad4f9c0c', 'out', 'localhost:eth0;;iface-traffic;out', '2016-07-01', 1467324000.0, None), ('79b977c52f6e4c84aa496ba942ba70d8', 'localhost', 'ec6e4cb188b64ebcbce204d14380de4d', 'eth0', 'a66f9268b838471d98d5b579ad4f9c0c', 'out', 'localhost:eth0;;iface-traffic;out', '2016-08-01', 1470002400.0, None), ('79b977c52f6e4c84aa496ba942ba70d8', 'localhost', 'ec6e4cb188b64ebcbce204d14380de4d', 'eth0', 'a66f9268b838471d98d5b579ad4f9c0c', 'out', 'localhost:eth0;;iface-traffic;out', '2016-09-01', 1472680800.0, None), ('79b977c52f6e4c84aa496ba942ba70d8', 'localhost', 'ec6e4cb188b64ebcbce204d14380de4d', 'eth0', 'a66f9268b838471d98d5b579ad4f9c0c', 'out', 'localhost:eth0;;iface-traffic;out', '2016-10-01', 1475272800.0, None), ('79b977c52f6e4c84aa496ba942ba70d8', 'localhost', 'ec6e4cb188b64ebcbce204d14380de4d', 'eth0', 'a66f9268b838471d98d5b579ad4f9c0c', 'out', 'localhost:eth0;;iface-traffic;out', '2016-11-01', 1477954800.0, None), ('79b977c52f6e4c84aa496ba942ba70d8', 'localhost', 'ec6e4cb188b64ebcbce204d14380de4d', 'eth0', 'a66f9268b838471d98d5b579ad4f9c0c', 'out', 'localhost:eth0;;iface-traffic;out', '2016-12-01', 1480546800.0, None)]}
8.4.9. Allarmi¶
8.4.9.1. Allarmi in corso¶
DESCRIZIONE
Per avere l’elenco dei allarmi (corrispondenti a condition down) bisogna utilizzare la seguente URL:
https://<url base>/rest_api/alarm/current
INPUT
Sono previsti i seguenti parametri
priority_level (stringa)
Se specificato, vengono restituiti solo gli allarmi con priority che ricade nel range del priority_level indicato.
OUTPUT
Come risposta si riceverà il JSON standard Risposte con successo.
Il campo result della risposta contiene una lista di dizionari (chiave/valore) con gli attributi di tutti i allarmi selezionati.
{ "elapsed_time": <tempo di elaborazione>, "operation" : <nome dell'operazione richiesta sulla risorsa>, "result" : [ { ... }, { ... }, { ... }, { ... }, { ... }, ] }
- La struttura dati per ogni allarme contiene informazioni su:
- elemento associato all’allarme.
- la condition associata all’allarme.
- la variazione di stato che ha generato l’allarme.
- informazioni sui tag associati all’elemento e condition dell’allarme.
Esempo di dati di un singolo allarme:
{ "uuid" : "7eb499dd9fb54f0a87afd351d0c4ce56" *identificativo univoco dell'allarme* "ts" : 1511001368, *timestamp UTC**di generazione dell'allarme* "element": { "uuid" : "e173f52135b845a5bf1792e33ad508ac" *identificativo univoco dell'elemento associato all'allarme* "path" : "dm10lx03:rootfs", *identificativo univoco mnemonico dell'elemento associato all'allarme* "name" : "rootfs", *nome dell'elemento* "description": "Root FS", *descrizione**dell'elemento* "type" : 3, *tipo dell'elemento (1=nodo,2=interfaccia,3=storage,4=service,5=device)* "parent_id" : "a12937d61c874890914182b6d25ebbb8", *identificativo dell'elemento padre (l'uuid del nodo)* "parent_name": "dm10lx03", *identificativo univoco dell'elemento padre (il nome del nodo)* }, "condition": { "uuid" : "050db78a671e48358ca266a92e9c9682" *identificativo univoco della condition che ha generato l'allarme* "path" : "dm10lx03:rootfs;storage;storage;check-storageperc", *identificativo mnemonico* "name" : "check-storageperc", *nome della **condition* "description" : "Check occupazione filesystem root", *descrizione**della condition* "classification" : "system.storage.usage", *classificazione della **condition* "priority" : 60, *importanza/priorita' associata alla **condition* "priority_level" : "medium", *classe di importanza/priorita' associata alla **condition* "statuslastchange": 1511001368, *timestamp ***UTC**della *variazione di stato precedente della **condition* }, "result": { *risultati del check* "status" : 10, *stato della verifica della condition* "laststatus": 20, *stato precedente* }, "info": { *informazioni dell'elemento* "ip4s" : ['10.0.25.201'], }, "mail": { "subject": ".....", "body": "....." } "tags": [ *opt. **classificazioni/tag assegnati alla condizione o all'elemento associati all'allarme* "dmh:/DMH/Sistemi Critici/3.Labs" ], "cluster": { ***opt. *cluster al quale l'elemento e' associato* "name" : ['VMWare-Produzione'], }, "meta": { ****opt. *informazioni addizionali dell'elemento* "referenti" : [ *referenti associati all'elemento* 'Sergio Rizzi <sergio.rizzi@labs.it>', 'Tiziano Fogli <tiziano.fogli@labs.it>' ] }, }