diff options
| author | David Boreham <dboreham@redhat.com> | 2005-01-28 20:36:06 +0000 |
|---|---|---|
| committer | David Boreham <dboreham@redhat.com> | 2005-01-28 20:36:06 +0000 |
| commit | b323e287076458e646831a3b5cec0262ac60c5fd (patch) | |
| tree | ebce2520494204a3feef95e859b896fa3e8627a6 /ldap/admin/src | |
| parent | d70d772e768245c06466a68fc3f32739692c20cc (diff) | |
| download | ds-b323e287076458e646831a3b5cec0262ac60c5fd.tar.gz ds-b323e287076458e646831a3b5cec0262ac60c5fd.tar.xz ds-b323e287076458e646831a3b5cec0262ac60c5fd.zip | |
Add support for filesystem-based replica initialization.
Diffstat (limited to 'ldap/admin/src')
| -rw-r--r-- | ldap/admin/src/create_instance.c | 69 | ||||
| -rw-r--r-- | ldap/admin/src/scripts/template-bak2db.pl | 14 |
2 files changed, 63 insertions, 20 deletions
diff --git a/ldap/admin/src/create_instance.c b/ldap/admin/src/create_instance.c index 12188128..26b276b6 100644 --- a/ldap/admin/src/create_instance.c +++ b/ldap/admin/src/create_instance.c @@ -2398,18 +2398,31 @@ char *ds_gen_scripts(char *sroot, server_config_s *cf, char *cs_path) if(t) return t; t = gen_script(cs_path, "bak2db", - "if [ \"$#\" -ne 1 ]\nthen\n" - " echo \"Usage: bak2db archivedir\"\n" - " exit 1\nfi\n\n" - "if [ 1 = `expr $1 : \"\\/\"` ]\nthen\n" - " archivedir=$1\n" + "if [ $# -lt 1 ] || [ $# -gt 3 ]\nthen\n" + " echo \"Usage: bak2db archivedir [-n backendname]\"\n" + " exit 1\n" + "else\n" + " archivedir=$1\n" + " shift\n" + "fi\n" + "while getopts \"n:\" flag\ndo\n" + " case $flag in\n" + " n) bename=$OPTARG;;\n" + " *) echo \"Usage: bak2db archivedir [-n backendname]\"; exit 2;;\n" + " esac\n" + "done\n\n" + "if [ 1 = `expr $archivedir : \"\\/\"` ]\nthen\n" + " archivedir=$archivedir\n" "else\n" " # relative\n" - " cwd=`pwd`\n" - " archivedir=`echo $cwd/$1`\nfi\n\n" + " archivedir=`pwd`/$archivedir\nfi\n\n" "cd %s\n" - "./ns-slapd archive2db -D %s -a $archivedir\n", - server, cs_path); + "if [ \"$#\" -eq 2 ]\nthen\n" + " ./ns-slapd archive2db -D %s -a $archivedir -n $bename\n" + "else\n" + " ./ns-slapd archive2db -D %s -a $archivedir\n" + "fi\n", + server, cs_path, cs_path); if(t) return t; t = CREATE_BAK2DB(); @@ -2941,20 +2954,38 @@ char *ds_gen_scripts(char *sroot, server_config_s *cf, char *cs_path) if(t) return t; t = gen_script(cs_path, "bak2db.bat", - "@echo off\n" - "setlocal\n\n" - "set rc=0\n" - "if [%%1] == [] goto usage\n\n" - "\"%s\\slapd\" archive2db -D \"%s\" -a %%1\n" - "set rc=%%errorlevel%%\n" - "goto done\n\n" + "@echo off\n" + "pushd & setlocal\n\n" + "if [%%1] == [] (goto :usage)\n" + "if not [%%4] == [] (goto :usage)\n\n" + "set archivedir=%%1\n" + "set rc=0\n\n" + ":getopts\n" + "shift\n" + "if [%%1]==[] (goto :main)\n" + "if [%%1]==[-n] (if not [%%2]==[] (set bename=%%2) else (goto :usage)) else (goto :getopts)\n\n" + ":main\n" + "call :relative %%archivedir%%\n" + "if defined bename (\n" + "\"%s\\slapd\" archive2db -D \"%s\" -a %%archivedir%% -n %%bename%%\n" + ") else (\n" + "\"%s\\slapd\" archive2db -D \"%s\" -a %%archivedir%%\n" + ")\n" + "set rc=%%ERRORLEVEL%%\n" + "popd\n" + "goto :done\n\n" + "goto :EOF\n" ":usage\n" - "echo \"Usage: bak2db -a archivedir\"\n\n" - "set rc=1\n" + "echo %%0 archivedir [-n backendname]\n" + "goto :done\n\n" + "goto :EOF\n" + ":relative\n" + "set archivedir=%%~f1\n\n" + "goto :EOF\n" ":done\n" "if defined MKSARGS exit %%rc%%\n" "exit /b %%rc%%\n", - server, cs_path); + server, cs_path, server, cs_path); if(t) return t; #if defined(UPGRADEDB) diff --git a/ldap/admin/src/scripts/template-bak2db.pl b/ldap/admin/src/scripts/template-bak2db.pl index 10cb99bc..cdb51c74 100644 --- a/ldap/admin/src/scripts/template-bak2db.pl +++ b/ldap/admin/src/scripts/template-bak2db.pl @@ -16,11 +16,13 @@ sub usage { print(STDERR " : -j filename - Read Directory Manager's password from file\n"); print(STDERR " : -a dirname - backup directory\n"); print(STDERR " : -t dbtype - database type (default: ldbm database)\n"); + print(STDERR " : -n backend - name of backend instance to restore\n"); print(STDERR " : -v - verbose\n"); } $taskname = ""; $archivedir = ""; $dbtype = "ldbm database"; +$instance = ""; $dsroot = "{{DS-ROOT}}"; $mydsroot = "{{MY-DS-ROOT}}"; $verbose = 0; @@ -39,6 +41,8 @@ while ($i <= $#ARGV) { $i++; $passwdfile = $ARGV[$i]; } elsif ("$ARGV[$i]" eq "-t") { # database type $i++; $dbtype = $ARGV[$i]; + } elsif ("$ARGV[$i]" eq "-n") { # backend instance name + $i++; $instance = $ARGV[$i]; } elsif ("$ARGV[$i]" eq "-v") { # verbose $verbose = 1; } else { @@ -75,12 +79,20 @@ $taskname = "restore_${yr}_${mn}_${dy}_${h}_${m}_${s}"; if ($archivedir eq "") { &usage; exit(1); } +use File::Spec; +$isabs = File::Spec->file_name_is_absolute( $archivedir ); +if (!$isabs) { + $archivedir = File::Spec->rel2abs( $archivedir ); +} $dn = "dn: cn=$taskname, cn=restore, cn=tasks, cn=config\n"; $misc = "changetype: add\nobjectclass: top\nobjectclass: extensibleObject\n"; $cn = "cn: $taskname\n"; +if ($instance ne "") { + $nsinstance = "nsInstance: ${instance}\n"; +} $nsarchivedir = "nsArchiveDir: $archivedir\n"; $nsdbtype = "nsDatabaseType: $dbtype\n"; -$entry = "${dn}${misc}${cn}${nsarchivedir}${nsdbtype}"; +$entry = "${dn}${misc}${cn}${nsinstance}${nsarchivedir}${nsdbtype}"; $vstr = ""; if ($verbose != 0) { $vstr = "-v"; } chdir("$dsroot{{SEP}}shared{{SEP}}bin"); |
