From ed95fe7775d63a777d86779debcd1fd59e2d921f Mon Sep 17 00:00:00 2001 From: An-Cheng Huang Date: Fri, 3 Dec 2010 19:07:54 -0800 Subject: change boot-time config loading to use new implementation in backend. * add new boot-time config loading script that uses shell API to access backend directly, bypassing wrapper. * use new loadFile implementation in the backend to perform the actual "load" operation (without "commit"). this reduces the "pre-commit" load time by ~60%. --- scripts/vyatta-boot-config-loader | 74 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100755 scripts/vyatta-boot-config-loader (limited to 'scripts') diff --git a/scripts/vyatta-boot-config-loader b/scripts/vyatta-boot-config-loader new file mode 100755 index 0000000..3872974 --- /dev/null +++ b/scripts/vyatta-boot-config-loader @@ -0,0 +1,74 @@ +#!/bin/bash + +BOOT_FILE=$1 +shift + +CAPI=/bin/cli-shell-api +CLOG=/tmp/vyatta-config-loader.log +COMMIT=/opt/vyatta/sbin/my_commit +COMMIT_LOG=/tmp/vyatta-commit.log + +do_log () { + local level=$1 + shift + logger -t 'boot-config-loader' -p "local0.$level" -- "$*" +} + +do_commit () { + $COMMIT "$@" >>$COMMIT_LOG +} + +trace () { + echo "$(date +'%F %T') $*" +} + +umask 0002 + +( + trace '== begin boot-config-loader' + # set up config session + SID=$$ + SENV=$($CAPI getSessionEnv $SID) + eval "$SENV" + if ! $CAPI setupSession; then + do_log err 'Cannot set up configuration session.' + trace 'Cannot set up configuration session.' + exit 1 + fi + + # do load + trace '-- begin load' + if ! $CAPI loadFile $BOOT_FILE; then + do_log warn "Failure(s) encountered during load. See $CLOG for details." + trace '-- load finished with failure(s)' + else + trace '-- load finished successfully' + fi + + # do commit + trace '-- begin commit' + ret=0 + export COMMIT_VIA=boot-config-loader + do_commit -a + do_commit -s + if ! do_commit -e -d; then + do_log err 'Commit failed at boot.' + trace '-- commit failed' + ret=1 + else + trace '-- commit succeeded' + fi + + # clean up + if ! $CAPI teardownSession; then + do_log warn 'Failed to tear down configuration session.' + trace '-- teardown failed' + else + trace '-- teardown succeeded' + fi + trace '-- exiting' + exit $ret +) >$CLOG 2>&1 + +exit $? + -- cgit v1.2.3