GSOC 2014: si parte con Netengine!

Google Summer of Code 2014

Ciao a tutti,

sono Alessandro Bucciarelli (a.k.a butch) e quest’anno partecipo per la prima volta al GSOC con Freifunk/Ninux con un progetto che si chiama Netengine.

Netengine è una libreria scritta in Python, sviluppata inizialmente come parte della nuova versione di Nodeshot (la nuova versione della mappa di Ninux attualmente in sviluppo) che è stata poi spostata in un progetto separato che può essere utilizzato indipendentemente da Nodeshot e Django.

Netengine è un livello di astrazione che mira ad offrire un unica API in python per recuperare le informazioni da diversi device  di rete su cui sono installati firmware differenti, ovvero astrae i device trattandoli come veri e propri oggetti con degli attributi e dei metodi da poter invocare.

A cosa serve Netengine e cosa fa?

Netengine serve innanzitutto per recuperare tutte le informazioni possibili da un determinato apparato. Ci sarà molto utile inoltre ad effettuare tutte quelle operazioni di diagnostica e di troubleshooting di apparati di rete (antenne ma non solo) da remota, ovvero senza la necessità di un contatto fisico con il device.

In un contesto come quello di Ninux, dove abbiamo un infinità di apparati distribuiti sul territorio gestiti da persone differenti con modi di lavorare differenti e con possibilità di intervento spesso ridotta, Netengine aspira ad alleviare il task di tenere aggiornati manualmente i dati che abbiamo nel nostro database. Grazie ad un unica API sarà più facile estrarre le informazioni dai device della rete ninux ed automare l’aggiornamento delle informazioni che sono presenti nel nostro DB.

Attualmente Netengine, lavora con diverse coppie di firmware/protocolli di rete tra cui AirOS, OpenWRT ed SSH, SNMP.

Un’idea per il futuro sarebbe quella di includere anche un backend HTTP a supporto di quelli SSH ed SNMP.

Entrando più nel dettaglio quello che fa questo modulo è inviare query SNMP al device che si sta analizzando, oppure avviare una connessione SSH in maniera trasparente all’utente che, sfruttando le chiamate di sistema, ritorna all’utilizzatore le informazioni richieste.

Quindi ogni device apparirà all’utente semplicemente come un’istanza dello specifico backend che vuole utilizzare (compatibilmente con il device), sul quale potrà invocare metodi e recuperare proprietà relativi al device.

Vi invito quindi ad analizzare e provare voi stessi il codice che potete trovare qui: https://github.com/ninuxorg/netengine.

Se volete contribuire alla discussione con suggerimenti e feedback potete farlo sulla lista ninux-dev.

Author Profile

Alessandro Bucciarelli

Tags: , , , ,

Leave a Reply