You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@trafficserver.apache.org by James Peach <jp...@apache.org> on 2014/10/16 00:50:36 UTC

Re: git commit: TS-3139] New script, traffic_primer, to prime a set of boxes with content

On Oct 15, 2014, at 1:47 PM, zwoop@apache.org wrote:

> Repository: trafficserver
> Updated Branches:
>  refs/heads/master 3e64d405c -> cdd1d15b4
> 
> 
> TS-3139] New script, traffic_primer, to prime a set of boxes with content

I think it wold be better to have 1 script that works in both modes. 2 separate scripts seems like overkill

> 
> 
> Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
> Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/cdd1d15b
> Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/cdd1d15b
> Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/cdd1d15b
> 
> Branch: refs/heads/master
> Commit: cdd1d15b48fe94158a59454ef75233f1ee827172
> Parents: 3e64d40
> Author: Leif Hedstrom <zw...@apache.org>
> Authored: Wed Oct 15 14:47:01 2014 -0600
> Committer: Leif Hedstrom <zw...@apache.org>
> Committed: Wed Oct 15 14:47:01 2014 -0600
> 
> ----------------------------------------------------------------------
> CHANGES              |  4 +++
> tools/traffic_primer | 79 +++++++++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 83 insertions(+)
> ----------------------------------------------------------------------
> 
> 
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/cdd1d15b/CHANGES
> ----------------------------------------------------------------------
> diff --git a/CHANGES b/CHANGES
> index 100261c..a7b3d0c 100644
> --- a/CHANGES
> +++ b/CHANGES
> @@ -1,6 +1,10 @@
>                                                          -*- coding: utf-8 -*-
> Changes with Apache Traffic Server 5.2.0
> 
> +  *) [TS-3139] New script, traffic_primer, which will fetch a URL from origin
> +   (or another proxy) and PUSH the same object to a given set of
> +   caches. Useful for priming a pool of servers with the same object.
> +
>   *) [TS-3135] Disable SSLv3 by default. This can be enabled again by adding a
>    line to records.config for proxy.config.ssl.SSLv3.
> 
> 
> http://git-wip-us.apache.org/repos/asf/trafficserver/blob/cdd1d15b/tools/traffic_primer
> ----------------------------------------------------------------------
> diff --git a/tools/traffic_primer b/tools/traffic_primer
> new file mode 100755
> index 0000000..1a39de7
> --- /dev/null
> +++ b/tools/traffic_primer
> @@ -0,0 +1,79 @@
> +#!/bin/sh
> +#
> +# Licensed to the Apache Software Foundation (ASF) under one
> +# or more contributor license agreements.  See the NOTICE file
> +# distributed with this work for additional information
> +# regarding copyright ownership.  The ASF licenses this file
> +# to you under the Apache License, Version 2.0 (the
> +# "License"); you may not use this file except in compliance
> +# with the License.  You may obtain a copy of the License at
> +#
> +#      http://www.apache.org/licenses/LICENSE-2.0
> +#
> +# Unless required by applicable law or agreed to in writing, software
> +# distributed under the License is distributed on an "AS IS" BASIS,
> +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> +# See the License for the specific language governing permissions and
> +# limitations under the License.
> +
> +# Simple script to fetch a URL through one proxy, and then PUSH that response (headers
> +# and body) to a set of hosts. The host:port defaults to localhost:80 for fetching
> +# the URL, but can be overriden with -h/-p.
> +
> +
> +# Print some help text
> +usage() {
> +    echo 'Usage: traffic_primer -u <url> [-h Host] [-p port] host1 host2 ...'
> +    exit 2
> +}
> +
> +# Default values for command line options
> +url=""
> +host="localhost"
> +port="80"
> +
> +# Parse command line arguments
> +PARGS=$(getopt u:h:p: $@)
> +[ $? != 0 ] && usage
> +
> +set -- $PARGS
> +while true; do
> +    case "$1" in
> +        -u)
> +            url="$2"
> +            shift 2 ;;
> +        -h)
> +            host="$2"
> +            shift 2 ;;
> +        -p)
> +            port="$2"
> +            shift 2 ;;
> +        --)
> +            shift
> +            break ;;
> +        *)
> +            usage
> +            break
> +            ;;
> +    esac
> +done
> +
> +[ "" == "$url" ] && usage
> +
> +tmpfile=$(mktemp /tmp/pusher-XXXXXX)
> +
> +# CLeanup just in case
> +trap "rm -f $tmpfile; exit 0" 0 1 2 3 15
> +
> +# Fetch the URL through the proxy on localhost, and create the file for PUSH
> +curl -x ${host}:${port} -s -i -o ${tmpfile} $url
> +
> +for h in $@; do
> +    curl -f -I -x ${h}:${port} -s -o /dev/null -H "Cache-Control: only-if-cached" $url > /dev/null
> +    if [ $? -gt 0 ]; then
> +        echo "PUSHing to $h..."
> +        curl -x ${h}:80 -s -o /dev/null -X PUSH --data-binary @${tmpfile} $url
> +    fi
> +done
> +
> +rm -f ${tmpfile}
>