[RFC] nodewatcher: consolidate uci calls

Tim Niemeyer tim at tn-x.org
So Jul 9 11:01:22 CEST 2017


Am Mittwoch, den 05.07.2017, 13:07 +0200 schrieb Tobias Klaus:
> Hey Christian,
> 
> vielen Dank, dass du die Arbeit da weitergemacht hast, wo ich aufgehört 
> habe("toll, da kommt ja nix im Monitoring...."). Ich werde deine Anmerkungen 
> dann bei Gelegenheit mal in ein v2 gießen.
> 
> Grundsätzlich hab ich noch ein zwei Fragen an euch:
> 
> Ich habe mich bei der "Konfiguration" ohne uci an den aktuellen Stand 
> gehalten, dass eine /etc/config/-Datei über eine gesourcte Datei Datei 
> abgebildet wird. Das finde ich eigentlich unsinnig; Ich würde lieber schauen 
> ob uci als Programm vorhanden ist und falls nein, einfach _eine_ Datei mit 
> allen Variablen sourcen. Das finde ich übersichtlicher, hat da jemand was 
> dagegen?

Ich bin mir nicht ganz sicher, ob ich deine Frage verstanden hab. Aber
mal aus Anregung:

Wie wäre es, wenn man den Nodewatcher so aufteilt, dass das Holen der
Daten in einem zweiten Programm/Script passiert. Das zweite Script wäre
dann auf dem Knoten eins was uci verwendet und auf dem PC etwas anderes.
Dann braucht man kein "if .." mehr sondern ruft nur das richtige
Programm auf.

> Sollen wir eine solche exemplarische config-Datei daneben legen, die auf den 
> Knoten _nicht_ installiert wird, aber die klar macht welche Variablen zu 
> vergeben sind? Quasi als Doku?
Wäre für mich ok, aber klingt eigentlich eher so, als ob man den
Nodewatcher in ein eigenes Repo auslagern möchte und dann im Build nur
noch dessen Releases verwenden mag.

Tim

> Danke schon mal
> Tobias
> 
> 
> Am Mittwoch, 5. Juli 2017, 11:58:42 CEST schrieb Christian Dresel:
> > Korrektur
> > 
> > On 05.07.2017 11:43, Christian Dresel wrote:
> > > Hallo Tobias
> > > 
> > > Danke für deine Arbeit :) Das hab ich schon ewig gebraucht bin aber nie
> > > dazu gekommen ;) Jetzt wirds leicher aber ich hab paar Sachen die das
> > > Monitoring so nicht frisst bzw. fehlt:
> > > 
> > > Folgendes wird nicht ausgelesen und deshalb leer rumgeschickt:
> > > <distname>
> > > <distversion>
> > > <firmware_version>
> > 
> > sollte man irgendwas mitschicken da es das Monitoring anzeigt (erste
> > Zeile unter der Map)
> > 
> > > <firmware_community>
> > 
> > sollte man ebenfalls was mitschicken, da es neben der Hood in Klammer
> > angezeigt wird
> > 
> > > <firmware_revision>
> > > <openwrt_core_revision>
> > > <openwrt_feeds_packages_revision>
> > > 
> > > natürlich macht einiges (eigentlich alles außer die ersten 2 das könnte
> > > man ganz gut füllen denk ich) auf x86 wenig Sinn ;) Da das Monitoring
> > 
> > Korrektur siehe oben 3. und 4. macht durchaus auch Sinn.
> > 
> > mfg
> > 
> > Christian
> > 
> > > die Daten aber einfach nicht gefressen hat, hab ich das mal mit Müll
> > > gefüllt. Wäre natürlich toll wenn diese Daten keine Pflicht für das
> > > Monitoring sind. Ich hab es jetzt nicht mehr ausprobiert ob es ohne
> > > geht, wenn sie zwingend benötigt werden sollte hier aber wohl eher das
> > > Monitoring gefixt werden.
> > > 
> > > Leider ging es dann trotzdem noch nicht, das Problem war bei mir dann
> > > anschließend:
> > > 
> > > <cpu>Mobile AMD Sempron(tm) Processor 2100+</cpu>
> > > 
> > > Ich vermute durch die Leerzeichen und Sonderzeichen und Kram, nimmt es
> > > das Monitoring so nicht an. Nachdem ich dort einfach eine 1
> > > reingeschrieben habe, tut es nun endlich :)
> > > Müsste man das evtl. auch so machen?:
> > > <cpu><![CDATA[Mobile AMD Sempron(tm) Processor 2100+]]></cpu>
> > > bin mir da grad nicht ganz sicher?
> > > 
> > > mfg
> > > 
> > > Christian
> > > 
> > > On 04.07.2017 00:37, Tobias Klaus wrote:
> > >> * this makes it easier to reuse on decentral gateways
> > >> * fix errors if nodewatcher is not run on openwrt/lede
> > >> ---
> > >> 
> > >>  .../fff/fff-nodewatcher/files/usr/sbin/nodewatcher | 29
> > >>  ++++++++++++++-------- 1 file changed, 18 insertions(+), 11
> > >>  deletions(-)
> > >> 
> > >> diff --git a/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher
> > >> b/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher index
> > >> f9d6e65..296b421 100755
> > >> --- a/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher
> > >> +++ b/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher
> > >> @@ -20,6 +20,17 @@ else
> > >> 
> > >>      . "$(dirname "$0")/nodewatcher_config"
> > >>  
> > >>  fi
> > >> 
> > >> +if [ -f /etc/config/system ];then
> > >> +    description="$(uci get system. at system[0].description)"
> > >> +    latitude="$(uci get system. at system[0].latitude)"
> > >> +    longitude="$(uci get system. at system[0].longitude)"
> > >> +    position_comment="$(uci get system. at system[0].position_comment)"
> > >> +    contact="$(uci get system. at system[0].contact)"
> > >> +    hood="$(uci -q get "system. at system[0].hood")"
> > >> +else
> > >> +    . "$(dirname "$0")/system_config"
> > >> +fi
> > >> +
> > >> 
> > >>  if [ "$SCRIPT_ERROR_LEVEL" -gt "1" ]; then
> > >>  
> > >>      err() {
> > >>      
> > >>          echo "$1" >> "$SCRIPT_LOGFILE"
> > >> 
> > >> @@ -56,20 +67,15 @@ crawl() {
> > >> 
> > >>      #Get system data from other locations
> > >>      err "$(date): Collecting basic system status data"
> > >>      hostname="$(cat /proc/sys/kernel/hostname)"
> > >> 
> > >> -    description="$(uci get system. at system[0].description)"
> > >> 
> > >>      if [ -n "$description" ]; then
> > >>      
> > >>          description="<description><![CDATA[$description]]></description>
> > >>          "
> > >>      
> > >>      fi
> > >> 
> > >> -    latitude="$(uci get system. at system[0].latitude)"
> > >> -    longitude="$(uci get system. at system[0].longitude)"
> > >> 
> > >>      if [ -n "$longitude" -a -n "$latitude" ]; then
> > >>      
> > >>          geo="<geo><lat>$latitude</lat><lng>$longitude</lng></geo>";
> > >>      
> > >>      fi
> > >> 
> > >> -    position_comment="$(uci get system. at system[0].position_comment)"
> > >> 
> > >>      if [ -n "$position_comment" ]; then
> > >>      
> > >>          position_comment="<position_comment><![CDATA[$position_comment]]
> > >>          ></position_comment>">>      
> > >>      fi
> > >> 
> > >> -    contact="$(uci get system. at system[0].contact)"
> > >> 
> > >>      if [ -n "$contact" ]; then
> > >>      
> > >>          contact="<contact>$contact</contact>"
> > >>      
> > >>      fi
> > >> 
> > >> @@ -86,7 +92,7 @@ crawl() {
> > >> 
> > >>          /system type/ { printf "<chipset>"$2"</chipset>" }
> > >>          /platform/ { printf "<chipset>"$2"</chipset>" }
> > >>      
> > >>      ' /proc/cpuinfo)
> > >> 
> > >> -    model="<model>$(cat /var/sysinfo/model)</model>"
> > >> +    test -f /var/sysinfo/model && model="<model>$(cat
> > >> /var/sysinfo/model)</model>">> 
> > >>      local_time="$(date +%s)"
> > >>      load=$(awk '{ printf
> > >>      "<loadavg>"$3"</loadavg><processes>"$4"</processes>" }'
> > >>      /proc/loadavg)>> 
> > >> @@ -117,7 +123,7 @@ crawl() {
> > >> 
> > >>      #DISTRIB_CODENAME="attitude_adjustment"
> > >>      #DISTRIB_TARGET="atheros/generic"
> > >>      #DISTRIB_DESCRIPTION="OpenWrt Attitude Adjustment 12.09-rc1"
> > >> 
> > >> -    . /etc/openwrt_release
> > >> +    test -f /etc/openwrt_release && . /etc/openwrt_release
> > >> 
> > >>      distname=$DISTRIB_ID
> > >>      distversion=$DISTRIB_RELEASE
> > >> 
> > >> @@ -126,7 +132,8 @@ crawl() {
> > >> 
> > >>      #BUILD_DATE="build date: Di 29. Jan 19:33:34 CET 2013"
> > >>      #OPENWRT_CORE_REVISION="35298"
> > >>      #OPENWRT_FEEDS_PACKAGES_REVISION="35298"
> > >> 
> > >> -    . /etc/firmware_release
> > >> +
> > >> +    test -f /etc/firmware_release  && . /etc/firmware_release
> > >> 
> > >>      SYSTEM_DATA="<status>online</status>"
> > >>      SYSTEM_DATA=$SYSTEM_DATA"$status_text"
> > >> 
> > >> @@ -135,10 +142,10 @@ crawl() {
> > >> 
> > >>      SYSTEM_DATA=$SYSTEM_DATA"${geo}"
> > >>      SYSTEM_DATA=$SYSTEM_DATA"${position_comment}"
> > >>      SYSTEM_DATA=$SYSTEM_DATA"${contact}"
> > >> 
> > >> -    if [ "$(uci -q get "system. at system[0].hood")" ]
> > >> +    if [ "${hood}" ]
> > >> 
> > >>      then
> > >> 
> > >> -        SYSTEM_DATA=$SYSTEM_DATA"<hood>$(uci -q get
> > >> "system. at system[0].hood")</hood>" -    fi
> > >> +        SYSTEM_DATA=$SYSTEM_DATA"<hood>${hood}</hood>"
> > >> +    fi
> > >> 
> > >>      SYSTEM_DATA=$SYSTEM_DATA"<distname>$distname</distname>"
> > >>      SYSTEM_DATA=$SYSTEM_DATA"<distversion>$distversion</distversion>"
> > >>      SYSTEM_DATA=$SYSTEM_DATA"$cpu"
> 
> 

-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : signature.asc
Dateityp    : application/pgp-signature
Dateigröße  : 473 bytes
Beschreibung: This is a digitally signed message part
URL         : <http://lists.freifunk.net/pipermail/franken-dev-freifunk.net/attachments/20170709/492cfdf1/attachment.sig>


Mehr Informationen über die Mailingliste franken-dev