From c540794dd12e582db4aad066150625b12b8fb3f0 Mon Sep 17 00:00:00 2001 From: John Bintz Date: Thu, 17 May 2012 16:22:56 -0400 Subject: [PATCH] add support for tc shaping --- .../squid/templates/squid-init.d | 20 +++------------- .../additional-modules/tc/manifests/debian.pp | 9 ++++++++ .../additional-modules/tc/manifests/init.pp | 0 .../tc/templates/debian/init-d-prerun | 0 .../tc/templates/debian/init-d-prolog | 8 +++++++ .../additional-modules/tc/templates/tc-init.d | 23 +++++++++++++++++++ .../varnish/templates/defaults | 3 --- 7 files changed, 43 insertions(+), 20 deletions(-) create mode 100644 shared/additional-modules/tc/manifests/debian.pp create mode 100644 shared/additional-modules/tc/manifests/init.pp create mode 100644 shared/additional-modules/tc/templates/debian/init-d-prerun create mode 100644 shared/additional-modules/tc/templates/debian/init-d-prolog create mode 100644 shared/additional-modules/tc/templates/tc-init.d delete mode 100644 shared/additional-modules/varnish/templates/defaults diff --git a/shared/additional-modules/squid/templates/squid-init.d b/shared/additional-modules/squid/templates/squid-init.d index d9e7e5f..278b519 100644 --- a/shared/additional-modules/squid/templates/squid-init.d +++ b/shared/additional-modules/squid/templates/squid-init.d @@ -46,29 +46,15 @@ start() { umask 027 ulimit -n 65535 $BIN $ARGS + chown <%= scope.lookupvar('squid::user') %> $PID RETVAL=$? return $RETVAL } stop() { - PIDID=`cat $PID 2>/dev/null` - - if [ -f $PID ]; then - kill $PIDID - fi - - cnt=0 - while kill -0 $PIDID 2>/dev/null - do - cnt=`expr $cnt + 1` - if [ $cnt -gt 24 ] - then - RETVAL=1 - return RETVAL - fi - sleep 5 - done + $BIN $ARGS -k shutdown + $BIN $ARGS -k kill return $RETVAL } diff --git a/shared/additional-modules/tc/manifests/debian.pp b/shared/additional-modules/tc/manifests/debian.pp new file mode 100644 index 0000000..d622f41 --- /dev/null +++ b/shared/additional-modules/tc/manifests/debian.pp @@ -0,0 +1,9 @@ +class tc::debian($config) { + $packages = [ 'ethtool' ] + + init_d_bundle { 'tc': + init_d_prolog => template('tc/debian/init-d-prolog'), + init_d_prerun => template('tc/debian/init-d-prerun'), + require => Class['squid'] + } +} diff --git a/shared/additional-modules/tc/manifests/init.pp b/shared/additional-modules/tc/manifests/init.pp new file mode 100644 index 0000000..e69de29 diff --git a/shared/additional-modules/tc/templates/debian/init-d-prerun b/shared/additional-modules/tc/templates/debian/init-d-prerun new file mode 100644 index 0000000..e69de29 diff --git a/shared/additional-modules/tc/templates/debian/init-d-prolog b/shared/additional-modules/tc/templates/debian/init-d-prolog new file mode 100644 index 0000000..879dccd --- /dev/null +++ b/shared/additional-modules/tc/templates/debian/init-d-prolog @@ -0,0 +1,8 @@ +### BEGIN INIT INFO +# Provides: tc +# Required-Start: $local_fs $remote_fs $network +# Required-Stop: $local_fs $remote_fs $network +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Traffic shaping +### END INIT INFO diff --git a/shared/additional-modules/tc/templates/tc-init.d b/shared/additional-modules/tc/templates/tc-init.d new file mode 100644 index 0000000..9cd1f58 --- /dev/null +++ b/shared/additional-modules/tc/templates/tc-init.d @@ -0,0 +1,23 @@ +<%= scope.function_template('base/init-d-header') %> + +<%= init_d_prolog %> +<%= init_d_prerun %> + +start() { + echo -n "Starting $NAME: " + + <%= scope.lookupvar('tc::debian::config') %> + + echo "done" +} + +stop() { + echo -n "Stopping $NAME: " + + tc qdisc del dev eth0 root + + echo "done" +} + +<%= scope.function_template('base/init-d-actions') %> + diff --git a/shared/additional-modules/varnish/templates/defaults b/shared/additional-modules/varnish/templates/defaults deleted file mode 100644 index bbdc96a..0000000 --- a/shared/additional-modules/varnish/templates/defaults +++ /dev/null @@ -1,3 +0,0 @@ -DAEMON_OPTS="\ - " -