summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorAn-Cheng Huang <ancheng@vyatta.com>2010-12-03 19:07:54 -0800
committerAn-Cheng Huang <ancheng@vyatta.com>2010-12-03 19:07:54 -0800
commited95fe7775d63a777d86779debcd1fd59e2d921f (patch)
tree39f6c331b7811cae00e2930009404362e37afdc9 /scripts
parent814ec6da0379583108fd2d46dc90811b24fba359 (diff)
downloadvyatta-cfg-ed95fe7775d63a777d86779debcd1fd59e2d921f.tar.gz
vyatta-cfg-ed95fe7775d63a777d86779debcd1fd59e2d921f.zip
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%.
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/vyatta-boot-config-loader74
1 files changed, 74 insertions, 0 deletions
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
+) </dev/null >>$CLOG 2>&1
+
+exit $?
+