2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-04-07 19:04:20 +00:00

configdb - added: automatic fileimport to migration

git-svn-id: https://svn.fhem.de/fhem/trunk@6441 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
betateilchen 2014-08-22 11:52:04 +00:00
parent 0ae57aaa98
commit 4d5b39114f
2 changed files with 106 additions and 12 deletions

View File

@ -223,12 +223,14 @@ sub CommandConfigdb($$) {
Currently the fhem modules<br/> Currently the fhem modules<br/>
<br/> <br/>
<li>02_RSS.pm</li> <li>02_RSS.pm</li>
<li>91_eventTypes</li>
<li>93_DbLog.pm</li> <li>93_DbLog.pm</li>
<li>95_holiday.pm</li> <li>95_holiday.pm</li>
<li>98_SVG.pm</li> <li>98_SVG.pm</li>
<br/> <br/>
will use configDB to read their configuration data from database<br/> will use configDB to read their configuration data from database<br/>
instead of formerly used configuration files inside the filesystem.<br/> instead of formerly used configuration files inside the filesystem.<br/>
<br/>
This requires you to import your configuration files from filesystem into database.<br/> This requires you to import your configuration files from filesystem into database.<br/>
<br/> <br/>
Example:<br/> Example:<br/>
@ -237,7 +239,9 @@ sub CommandConfigdb($$) {
<code>configdb fileimport www/gplot/xyz.gplot</code><br/> <code>configdb fileimport www/gplot/xyz.gplot</code><br/>
<br/> <br/>
<b>This does not affect the definitons of your holiday or RSS entities.</b><br/> <b>This does not affect the definitons of your holiday or RSS entities.</b><br/>
The given filenames in the definitions will be translated automatically to find the correct entries inside the database.<br/> <br/>
<b>During migration all external configfiles used in current configuration<br/>
will be imported aufmatically.</b><br>
<br/> <br/>
Each fileimport into database will overwrite the file if it already exists in database.<br/> Each fileimport into database will overwrite the file if it already exists in database.<br/>
<br/> <br/>
@ -537,6 +541,7 @@ attr Melder_FAr peerIDs 00000000,2286BC03,
Momentan verwenden die Module<br/> Momentan verwenden die Module<br/>
<br/> <br/>
<li>02_RSS.pm</li> <li>02_RSS.pm</li>
<li>91_eventTypes</li>
<li>93_DbLog.pm</li> <li>93_DbLog.pm</li>
<li>95_holiday.pm</li> <li>95_holiday.pm</li>
<li>98_SVG.pm</li> <li>98_SVG.pm</li>
@ -551,7 +556,9 @@ attr Melder_FAr peerIDs 00000000,2286BC03,
<code>configdb fileimport www/gplot/xyz.gplot</code><br/> <code>configdb fileimport www/gplot/xyz.gplot</code><br/>
<br/> <br/>
<b>Dies hat keinerlei Auswirkungen auf die Definition der holiday oder RSS Instanzen.</b><br/> <b>Dies hat keinerlei Auswirkungen auf die Definition der holiday oder RSS Instanzen.</b><br/>
Die dort verwendeten Dateinamen werden automtisch umgesetzt, um die zugeh&ouml;rigen Daten in der Datenbank zu finden.<br/> <br>
<b>Während einer Migration werden alle in der aktuell bestehenden Konfiguration verwendeten externen<br/>
Konfigurationsdateien automatisch in die Datenbank importiert.</b></br>
<br/> <br/>
Jeder Neuimport einer bereits in der Datenbank gespeicherten Datei &uuml;berschreibt die vorherige Datei in der Datenbank.<br/> Jeder Neuimport einer bereits in der Datenbank gespeicherten Datei &uuml;berschreibt die vorherige Datei in der Datenbank.<br/>
<br/> <br/>

View File

@ -84,6 +84,8 @@
# 2014-05-20 - removed no longer needed functions for file handling # 2014-05-20 - removed no longer needed functions for file handling
# changed code improvement; use strict; use warnings; # changed code improvement; use strict; use warnings;
# #
# 2014-08-22 - added automatic fileimport during migration
#
############################################################################## ##############################################################################
# #
@ -450,6 +452,74 @@ sub cfgDB_SaveState() {
return; return;
} }
# import existing files during migration
sub cfgDB_MigrationImport() {
my ($ret, $filename, @files, @def);
# find eventTypes file
$filename = '';
@def = '';
@def = _cfgDB_findDef('TYPE=eventTypes');
foreach $filename (@def) {
next unless $filename;
push @files, $filename;
}
# import templateDB.gplot
$filename = $attr{global}{modpath};
$filename .= "/www/gplot/templateDB.gplot";
push @files, $filename;
# find used gplot files
$filename ='';
@def = '';
@def = _cfgDB_findDef('TYPE=SVG','GPLOTFILE');
foreach $filename (@def) {
next unless $filename;
push @files, "./www/gplot/".$filename.".gplot";
}
# find DbLog configs
$filename ='';
@def = '';
@def = _cfgDB_findDef('TYPE=DbLog','CONFIGURATION');
foreach $filename (@def) {
next unless $filename;
push @files, $filename;
}
# find RSS layouts
$filename ='';
@def = '';
@def = _cfgDB_findDef('TYPE=RSS','LAYOUTFILE');
foreach $filename (@def) {
next unless $filename;
push @files, $filename;
}
# find holiday files
$filename ='';
@def = '';
@def = _cfgDB_findDef('TYPE=holiday','NAME');
foreach $filename (@def) {
next unless $filename;
push @files, "./FHEM/".$filename.".holiday";
}
# do the import
$filename = '';
foreach $filename (@files) {
if ( -r $filename ) {
my $filesize = -s $filename;
_cfgDB_binFileimport($filename,$filesize);
$ret .= "importing: $filename\n";
}
}
return $ret;
}
# return SVN Id, called by fhem's CommandVersion # return SVN Id, called by fhem's CommandVersion
sub cfgDB_svnId() { sub cfgDB_svnId() {
return "# ".'$Id$' return "# ".'$Id$'
@ -599,21 +669,23 @@ sub _cfgDB_Uuid() {
sub _cfgDB_Migrate() { sub _cfgDB_Migrate() {
my $ret; my $ret;
$ret = "Starting migration...\n"; $ret = "Starting migration...\n";
Log3('configDB',4,'Starting migration.'); Log3('configDB',4,'Starting migration');
$ret .= "Processing: database initialization.\n"; $ret .= "Processing: database initialization\n";
Log3('configDB',4,'Processing: cfgDB_Init.'); Log3('configDB',4,'Processing: cfgDB_Init');
cfgDB_Init; cfgDB_Init;
$ret .= "Processing: save config.\n"; $ret .= "Processing: save config\n";
Log3('configDB',4,'Processing: cfgDB_SaveCfg.'); Log3('configDB',4,'Processing: cfgDB_SaveCfg');
cfgDB_SaveCfg; cfgDB_SaveCfg;
$ret .= "Processing: save state.\n"; $ret .= "Processing: save state\n";
Log3('configDB',4,'Processing: cfgDB_SaveState.'); Log3('configDB',4,'Processing: cfgDB_SaveState');
cfgDB_SaveState; cfgDB_SaveState;
$ret .= "Migration completed.\n\n"; $ret .= "Processing: fileimport\n";
Log3('configDB',4,'Migration finished.'); Log3('configDB',4,'Processing: cfgDB_MigrationImport');
$ret .= cfgDB_MigrationImport;
$ret .= "Migration completed\n\n";
Log3('configDB',4,'Migration completed.');
$ret .= _cfgDB_Info; $ret .= _cfgDB_Info;
return $ret; return $ret;
} }
# show database statistics # show database statistics
@ -798,6 +870,21 @@ sub _cfgDB_Diff($$) {
return $ret; return $ret;
} }
# find DEF, input supports devspec definitions
sub _cfgDB_findDef($;$) {
my ($search,$internal) = @_;
$internal = 'DEF' unless defined($internal);
my @ret;
my @etDev = devspec2array($search);
foreach my $d (@etDev) {
next unless $d;
push @ret, $defs{$d}{$internal};
}
return @ret;
}
################################################## ##################################################
# functions used for file handling # functions used for file handling
# called by 98_configdb.pm # called by 98_configdb.pm