Geronimo: Unterschied zwischen den Versionen

Aus Opennet
Wechseln zu: Navigation, Suche
(Server-Einrichtung)
(mehr Anwendungsbeispiele)
 
(3 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 10: Zeile 10:
 
Geronimo ist ein zentrales Framework für die Sammlung und Verteilung Opennet-relevanter Informationen. Der Fokus liegt auf der Verwendbarkeit durch Dienste.
 
Geronimo ist ein zentrales Framework für die Sammlung und Verteilung Opennet-relevanter Informationen. Der Fokus liegt auf der Verwendbarkeit durch Dienste.
  
Geronimo v1 ist aktuell in Betrieb. Geronimo v2 ist in Entwicklung.
+
Status:
 
+
* [[Geronimo/v1|Geronimo v1]] (auslaufender Betrieb) wird genutzt von:
== Geronimo v2 ==
+
** alte [[Openlayers|Karte]]: https://opennet-initiative.de/map
* Vorgedanken und Funktionsumfang: [[Geronimo/Planungv2]]
+
** Wiki: https://on-i.de/wiki/Extension:APData
* [https://dev.on-i.de/query?status=accepted&status=assigned&status=new&status=reopened&component=on_geronimo&col=id&col=summary&col=status&col=type&col=priority&col=milestone&col=component&desc=1&order=status Tickets]
+
* [[Geronimo/v2|Geronimo v2]] (aktiv in Betrieb und Entwicklung) wird genutzt von:
 
+
** API zur Abfrage von Routing- und Geräteinformationen: https://api.opennet-initiative.de/
=== Erreichbarkeit ===
+
** neue [[Openlayers|Karte]]: https://map.opennet-initiative.de/
Der Dienst ist über die Basis-URL http://api.opennet-initiative.de/api/v1/accesspoint/ zu erreichen.
+
** Kartendarstellung auf der Status-Seite jedes AP
 
+
=== Funktionsumfang ===
+
Aktuell werden folgende Datenquellen eingelesen:
+
* Wiki (AP-Liste mit Besitzern und Positionen)
+
* ondataservice (Hardware, Firmware, Systemzustand, Netzwerkschnittstellen)
+
 
+
Geplante weitere Datenquellen:
+
* olsr (Links und Verbindungsqualität)
+
* lastseen (Zeitstempel der letzten Sichtbarkeit eines Knotens)
+
 
+
==Nutzer==
+
Die folgenden Dienste beziehen die Daten aus der API
+
* [[Openlayers]] - die Kartenanwendung
+
 
+
=== Server-Einrichtung ===
+
Aktuell läuft der API-Dienst unter dem Nutzer-Account ''web-api'' auf [[Server/jun]]. Die Anwendung wird via uwsgi gesteuert und von apache2 ausgeliefert.
+
 
+
Die Installation ist in readme.md beschrieben.
+
 
+
=== Deployment ===
+
Wir verwenden aktuell ein sehr triviales Konzept zur Aktualisierung der API-Anwendung:
+
* größere Änderungen sollten lokal entwickelt und ins Repository gepusht werden (siehe unten: "ssh")
+
* kleine Änderungen können direkt auf dem Server angewandt werden (siehe unten: "sshfs")
+
 
+
==== via ssh (git pull) ====
+
Als API-Nutzer via ssh anmelden, neuen Code auschecken, uwsgi-reload auslösen:
+
ssh web-api@yurika.on-i.de
+
cd on_geronimo
+
git pull
+
touch geronimo/settings.py
+
 
+
Das committen und pushen von Änderungen ist auf diesem Weg nicht möglich, da der web-api-Nutzer keine lokale Identität und keine Schreibrechte im git-Repository hat.
+
 
+
==== via sshfs (git commit/push) ====
+
Via sshfs das Code-Verzeichnis lokal mounten, Änderungen vornehmen, committen, pushen, uwsgi-reload auslösen:
+
sshfs web-api@yurika.on-i.de:on_geronimo mnt
+
cd mnt
+
vi / git add / git commit / git push
+
touch geronimo/settings.py
+
 
+
== Geronimo v1 ==
+
 
+
Geronimo ist ein zentrales Informationsframework, das insbesondere die Kartendarstellung unterstützt.
+
* Datenquelle [[Ondataservice]] (per [[OLSR]]  AP Infos sammeln)
+
* Karten-Darstellung mit verbesserter [[Openlayers]] Karte
+
* Export nach [[Freifunk]] Nodelist API per ''geronimo_freifunknodelist.sh''
+
 
+
=== Ziele ===
+
* Vereinheitlichung der Daten (AP namen, Daten , ...)
+
* Zusammenfassung aller Informationsquellen (OLSR, ondataservice, Wiki, ...)
+
* lose Kopplung (REST API, Erweiterbarkeit, ...)
+
* flexible Datengenerierung
+
* Speicherung Langzeitinfos
+
 
+
=== To do ===
+
* <s>Ablösung der Minikarte (Anzeigen der Nachbarn)</s>
+
* <s>Datenmenge reduzieren </s>
+
* <s>leere Felder weglassen in final weglassen</s>
+
* UGW Erreichbarkeit je AP berechnen und anzeigen
+
* Wiki auswerten
+
** ein ressourcenschonender Wiki-Reader ist in der Entwicklung
+
** Ansprechpartner, Standort, Foto des APs aus Wiki finden
+
** [[:Vorlage:accesspoint]] für verteilte Wartung der Daten einführen
+
* Kanal/SSID Ansicht für Links
+
** zur Zeit nicht sinnvoll machbar, da viele APs keine Daten per [[OLSR]] liefern, was wohl an veralteter Firmware liegt
+
* UGW Erreichbarkeit eines Knotens
+
* Formatierung mit pylint prüfen
+
* Code cleanup
+
* Openlayers schrumpfen
+
* Wifidog Funkkegel anpassbar machen
+
* Zeitliche Dimension einführen, ggF. rrdtools dadurch ersetzen oder anzapfen
+
 
+
=== Architektur ===
+
Der Quellcode liegt in einem [https://dev.opennet-initiative.de/browser/on_geronimo GIT Repository] und ist komplett in Python geschrieben. Er gliedert sich in zwei Hauptmodule:
+
* geronimo.py - Backend, das die Daten zusammensammelt
+
* geronimoCGI.py - HTTP Frontend ([http://cherrypy.org CherryPy]), dass an Apache gekoppelt wird
+
 
+
Der Datenaustausch erfolgt über die Dateien nodes.cache, links.cache (Pickle Framework) und die interne Repräsentation über einfache Objekte (siehe primitives.py). Die Backend Module, welche die Daten einsammeln liegen unter /helpers (zur Zeit nur Wiki, ondataservice DB und OLSR lastseen CSV) und diese werden über config.ini mit den richtigen Pfaden versorgt.
+
 
+
Das Frontend liefert derzeit geoJSON und kann wie folgt aufgerufen werden:
+
<pre>
+
http://www.opennet-initiative.de/api/node/neighbours?ip=192.168.1.59
+
http://www.opennet-initiative.de/api/nodes/online/
+
http://www.opennet-initiative.de/api/nodes/offline/
+
http://www.opennet-initiative.de/api/links/online/
+
</pre>
+
Letztere können auch mit einer Suchbox mit Mercator Koordinaten gefiltert werden
+
<pre>
+
http://www.opennet-initiative.de/api/links/online?bbox=11.925507659912,54.040317086552,12.314492340088,54.119673430674
+
</pre>
+
Das ganze wird durch eine verbesserte Version der [[Openlayers]] Karte im Browser angezeigt und liegt unter ./src/www.
+
 
+
=== Datenfluss ===
+
Ein cronjob ruft regelmäßig geronimo.py auf. Dort wird zunächst das lastseen Verzeichnis gelesen und ermittelt welche APs wann online waren. Danach wird eine Liste der APs aus dem Wiki generiert ([[Opennet Nodes]]) und alle APs mit wichtigen Details aus [[ondataservice]] ergänzt. Zum Schluss wird das ganze in die Cache Dateien geschrieben.
+
 
+
Wenn nun per Openlayers dir Karte angezeigt wird, wird die aktuelle BBOX bestimmt und ein Call auf den API-Services gemacht (je Layer). Über WSGI und Cherrypy wird dann aus der geronimoCGI.py dann der entsprechende Einstiegspunkt gewählt und abgearbeitet. Dabei werden die Cache-Dateien gelesen und je nach Anforderung nachgefiltert, sowie als JSON formatiert und ausgegeben. Openlayers parst dieses wieder auf Client-Seite und wendet basierend auf den Eigenschaften der Objekte die definierten Stile an.
+
 
+
=== Server-Installation ===
+
Der Dienst läuft derzeit auf dem WWW Server ([[Server/on-v6]]) und ist unter '''/var/www/geronimo/src''' zu finden.
+
 
+
In der '''config.ini''' sind die Pfade entsprechend der lokalen Einrichtung zu setzen. Das Unterverzeichnis ./www muss dann dem '''Apache''' zugänglich und über diesen statisch freigegeben werden. Außerdem muss eine zusätzliche URL (z.Z. www.on-i.de/api/) per WSGI mit geronimoCGI.py verknüpft werden. Diese öffentliche URL muss anschließend in ./www/index.html als BASE_URL=* eingetragen werden.
+
 
+
  
 
== Siehe auch ==
 
== Siehe auch ==

Aktuelle Version vom 13. April 2019, 12:50 Uhr

Team
Geronimo Logo.png
Geronimo
Treffen: nur bei Bedarf
Geronimo
Mitglieder:
Matthias M., Lars
Kontakt:
admin@opennet-initiative.de


[Bearbeiten] Überblick

Geronimo ist ein zentrales Framework für die Sammlung und Verteilung Opennet-relevanter Informationen. Der Fokus liegt auf der Verwendbarkeit durch Dienste.

Status:

[Bearbeiten] Siehe auch

Meine Werkzeuge
Namensräume

Varianten
Aktionen
Start
Opennet
Kommunikation
Karten
Werkzeuge