8. Sanet Rest Api

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/nodes

Esempio:

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=1473170936

Output:

{'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/interfaces

Esempio:

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_info

Esempio:

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=1473170936

Esempio 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/tagtrees

Esempio:

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>'
        ]
    },
}