Geronimo: Unterschied zwischen den Versionen

Aus Opennet
Wechseln zu: Navigation, Suche
(Server-Einrichtung)
(Aktualisierung der Beschreibung für Geronimo v2)
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 (auslaufender Betrieb) wird genutzt von:
 +
** [[Openlayers|alte Karte]]: https://opennet-initiative.de/map
 +
** Wiki: https://on-i.de/wiki/Extension:APData
 +
* Geronimo v2 (aktiv in Betrieb und Entwicklung) wird genutzt von:
 +
** [[Openlayers|neue Karte]]: https://map.opennet-initiative.de/
  
 
== Geronimo v2 ==
 
== Geronimo v2 ==
 
* Vorgedanken und Funktionsumfang: [[Geronimo/Planungv2]]
 
* Vorgedanken und Funktionsumfang: [[Geronimo/Planungv2]]
 
* [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]
 
* [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]
 +
* URL: https://api.opennet-initiative.de/api/v1/accesspoint/
  
=== Erreichbarkeit ===
+
=== Datenquellen ===
Der Dienst ist über die Basis-URL http://api.opennet-initiative.de/api/v1/accesspoint/ zu erreichen.
+
Aktuell werden folgende Datenquellen eingelesen:
 +
* Wiki: AP-Liste mit Besitzern und Positionen
 +
* [[Ondataservice]]: (Hardware, Firmware, Systemzustand, Netzwerkschnittstellen
 +
* [[OLSR]]: Links, Qualität, "lastseen"-Zeitstempel
 +
* manuell gepflegte Liste von Regionen für [[Freifunk API]]
  
 
=== Funktionsumfang ===
 
=== Funktionsumfang ===
Aktuell werden folgende Datenquellen eingelesen:
+
* Zusammenfassung verschiedener Datenquelle
* Wiki (AP-Liste mit Besitzern und Positionen)
+
* aktuelle Zustände von Accesspoints und Links ausliefern
* ondataservice (Hardware, Firmware, Systemzustand, Netzwerkschnittstellen)
+
* Metadaten für die [[Freifunk API]] ausliefern
 
+
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.
+
=== Architektur ===
 +
* Django-Anwendung liefert Daten via REST-Framework aus (inkl. Unterstützung für Geodaten - z.B. Bounding-Box-Limitierung von Abfragen)
 +
* Import von Daten aus den verschiedenen Quellen via cron-Jobs
  
==== 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 v1 ==

Version vom 19. Oktober 2017, 00:51 Uhr

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


Inhaltsverzeichnis

Überblick

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

Status:

Geronimo v2

Datenquellen

Aktuell werden folgende Datenquellen eingelesen:

  • Wiki: AP-Liste mit Besitzern und Positionen
  • Ondataservice: (Hardware, Firmware, Systemzustand, Netzwerkschnittstellen
  • OLSR: Links, Qualität, "lastseen"-Zeitstempel
  • manuell gepflegte Liste von Regionen für Freifunk API

Funktionsumfang

  • Zusammenfassung verschiedener Datenquelle
  • aktuelle Zustände von Accesspoints und Links ausliefern
  • Metadaten für die Freifunk API ausliefern

Architektur

  • Django-Anwendung liefert Daten via REST-Framework aus (inkl. Unterstützung für Geodaten - z.B. Bounding-Box-Limitierung von Abfragen)
  • Import von Daten aus den verschiedenen Quellen via cron-Jobs


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

  • Ablösung der Minikarte (Anzeigen der Nachbarn)
  • Datenmenge reduzieren
  • leere Felder weglassen in final weglassen
  • 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 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 (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:

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/

Letztere können auch mit einer Suchbox mit Mercator Koordinaten gefiltert werden

http://www.opennet-initiative.de/api/links/online?bbox=11.925507659912,54.040317086552,12.314492340088,54.119673430674

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

Meine Werkzeuge
Namensräume

Varianten
Aktionen
Start
Opennet
Kommunikation
Karten
Werkzeuge