FHEM Forum

FHEM - Entwicklung => FHEM Development => Thema gestartet von: Markus Bloch am 19 März 2016, 14:40:39

Titel: [PATCH] - configDB.pm - Nutzung von modpath bei Migration von Dateien
Beitrag von: Markus Bloch am 19 März 2016, 14:40:39
Hallo Udo,

ich habe mich mal wieder mit configDB befasst und auf meinem Synology NAS die fehlenden Perl-Module für sqlite nachgebaut, so dass ich nun configDB nutzen kann. Leider erwischt ein "configdb migrate" in meinem Fall nicht alle Dateien, die er erwischen sollte, so dass nach einer Migration Dateien fehlen (gplots, holiday, uniqueID):


Starting migration...
Processing: database initialization
Processing: save config
Processing: save state
Processing: fileimport
importing: /usr/local/FHEM/share/fhem/www/gplot/template.gplot
importing: /usr/local/FHEM/share/fhem/www/gplot/templateDB.gplot
importing: /usr/local/FHEM/share/fhem/FHEM/template.layout
Migration completed

-----------------------------------------------------------------
configDB Database Information
-----------------------------------------------------------------
# $Id: configDB.pm 10533 2016-01-16 20:00:25Z betateilchen $
-----------------------------------------------------------------
dbconn: SQLite:dbname=/usr/local/FHEM/etc/configDB.db
dbuser:
dbpass:
dbtype: SQLITE
-----------------------------------------------------------------
config: 1497 entries

Ver 0 saved: Sat Mar 19 13:42:32 2016 def: 228 attr: 1260
Ver 1 saved: by cfgDB_Init  def: 3 attr: 4
-----------------------------------------------------------------
state: 3892 entries saved: Sat Mar 19 13:42:33 2016
-----------------------------------------------------------------
filesave: 3 files stored in database
-----------------------------------------------------------------


Der Grund warum die gplots und holiday nicht erkannt werden, liegt an der fehlenden Berücksichtigung von modpath. Alle Dateien werden immer von aktuellen fhem.pl Directory ausgehend gesucht und nicht vom modpath-Attribut ausgehend.

Bei mir liegt jedoch fhem.pl nicht direkt im modpath, sondern in einem gesonderten Verzeichnis (aktuelle Ordnerstruktur siehe: https://forum.fhem.de/index.php/topic,27451.msg206889.html#msg206889). Dies ist dem Synology-Paket von Martin Fischer geschuldet.

Ich habe daher in configDB.pm in der Funktion cfgDB_MigrationImport() die Verwendung von modpath entsprechend nachgezogen. Desweiteren habe ich die Datei uniqueID (FHEM/FhemUtils/uniqueID) hinzugefügt. In dieser sind Daten gespeichert welche durch verschiedene Module verwendet werden (Funktionen: getKeyValue/setKeyValue).

Mit meinen Änderung sieht eine Migration bei mir nun folgendermaßen aus:


Starting migration...
Processing: database initialization
Processing: save config
Processing: save state
Processing: fileimport
importing: /usr/local/FHEM/share/fhem/www/gplot/template.gplot
importing: /usr/local/FHEM/share/fhem/www/gplot/templateDB.gplot
importing: /usr/local/FHEM/share/fhem/FHEM/template.layout
importing: /usr/local/FHEM/share/fhem/www/gplot/hm-aussensensor.gplot
importing: /usr/local/FHEM/share/fhem/www/gplot/fenster.gplot
importing: /usr/local/FHEM/share/fhem/www/gplot/fenster.gplot
importing: /usr/local/FHEM/share/fhem/www/gplot/fenster.gplot
importing: /usr/local/FHEM/share/fhem/www/gplot/fenster.gplot
importing: /usr/local/FHEM/share/fhem/www/gplot/SVG_FileLog_SWAP_0A_1.gplot
importing: /usr/local/FHEM/share/fhem/www/gplot/SVG_FileLog_Helligkeit_1.gplot
importing: /usr/local/FHEM/share/fhem/www/gplot/herd.gplot
importing: /usr/local/FHEM/share/fhem/www/gplot/dect200.gplot
importing: /usr/local/FHEM/share/fhem/www/gplot/dect200.gplot
importing: /usr/local/FHEM/share/fhem/www/gplot/hm-tc.gplot
importing: /usr/local/FHEM/share/fhem/www/gplot/hm-tc.gplot
importing: /usr/local/FHEM/share/fhem/www/gplot/hm-tc.gplot
importing: /usr/local/FHEM/share/fhem/www/gplot/hm-ventil.gplot
importing: /usr/local/FHEM/share/fhem/www/gplot/hm-ventil.gplot
importing: /usr/local/FHEM/share/fhem/www/gplot/hm-ventil.gplot
importing: /usr/local/FHEM/share/fhem/FHEM/NRW.holiday
importing: /usr/local/FHEM/share/fhem/FHEM/FhemUtils/uniqueID
Migration completed

-----------------------------------------------------------------
configDB Database Information
-----------------------------------------------------------------
# $Id: configDB.pm 10533 2016-01-16 20:00:25Z betateilchen $
-----------------------------------------------------------------
dbconn: SQLite:dbname=/usr/local/FHEM/etc/configDB.db
dbuser:
dbpass:
dbtype: SQLITE
-----------------------------------------------------------------
config: 1497 entries

Ver 0 saved: Sat Mar 19 14:25:08 2016 def: 228 attr: 1260
Ver 1 saved: by cfgDB_Init  def: 3 attr: 4
-----------------------------------------------------------------
state: 3893 entries saved: Sat Mar 19 14:25:09 2016
-----------------------------------------------------------------
filesave: 13 files stored in database
-----------------------------------------------------------------


Wenn ich nun FHEM mit configDB starte funktioniert alles wieder auf Anhieb.

Im Anhang findest du ein Diff, sowie die komplette Version. Ich würde mich freuen, wenn du das einchecken kannst.

Vielen Dank

Gruß
Markus
Titel: Antw:[PATCH] - configDB.pm - Nutzung von modpath bei Migration von Dateien
Beitrag von: betateilchen am 19 März 2016, 14:54:57
Hallo Markus,

danke, ich nehme das mal in die To-Do Liste mit auf. Aktuell habe ich noch ein paar andere Baustellen an configDB.pm, um die ich mich mal kümmern muss. Bei mir funktioniert z.B. "configdb filelist" in sqlite seit einem perl Update 1) nicht mehr richtig, ausserdem gibt es schon patch-Vorschläge bezüglich PostgreSQL, die ich einbauen werde.

Aber dazu muss ich mal eine ruhige Zeit finden, so zwischen Tür und Angel mal eben an der Konfigurationsdatenbank was zu ändern, macht wenig Sinn. Vermutlich im Pfingsturlaub in Serbien, wenn ich in den Bergen der Vojvodina meine Ruhe habe, kann ich mir das mal anschauen.


1)

"configdb filelist" funktioniert unter perl 5, version 14, subversion 2 (v5.14.2)

"configdb filelist" funktioniert nicht unter perl 5, version 20, subversion 2 (v5.20.2)
Titel: Antw:[PATCH] - configDB.pm - Nutzung von modpath bei Migration von Dateien
Beitrag von: Markus Bloch am 19 März 2016, 15:02:19
Hallo Udo,

kein Problem. Die Migration ist bei mir ja nun durch, jetzt kann ich wieder mit der normalen Version arbeiten ;)

Zitat von: betateilchen am 19 März 2016, 14:54:57
Aber dazu muss ich mal eine ruhige Zeit finden, so zwischen Tür und Angel mal eben an der Konfigurationsdatenbank was zu ändern, macht wenig Sinn. Vermutlich im Pfingsturlaub in Serbien, wenn ich in den Bergen der Vojvodina meine Ruhe habe, kann ich mir das mal anschauen.

Klingt auf jedenfall sehr entspannend und inspirierend. Viel Spaß

Gruß
Markus


EDIT: Zu deinem configdb filelist: Ich habe v5.16.0 und es funktioniert.
Titel: Antw:[PATCH] - configDB.pm - Nutzung von modpath bei Migration von Dateien
Beitrag von: betateilchen am 19 März 2016, 17:25:01
Zitat von: Markus Bloch am 19 März 2016, 15:02:19
EDIT: Zu deinem configdb filelist: Ich habe v5.16.0 und es funktioniert.

Es scheint ein bekanntes Problem mit dem dem Datenbanktreiber für sqlite3 unter perl 5.20 zu geben. Bin grade viel am Lesen.
Titel: Antw:[PATCH] - configDB.pm - Nutzung von modpath bei Migration von Dateien
Beitrag von: betateilchen am 19 März 2016, 18:32:30
Die Änderungen zu modpath und filelist sind eingecheckt.

Die Sache mit PostgreSQL dauert noch, ich muss mich erstmal grundsätzlich mit diesem Datenbanksystem beschäftigen.
Titel: Antw:[PATCH] - configDB.pm - Nutzung von modpath bei Migration von Dateien
Beitrag von: Markus Bloch am 19 März 2016, 19:17:03
Vielen Dank.

Mit Postgres steh ich auch irgendwie auf Kriegsfuß.

Gruß
Markus