ef36919806424ca3a676c5c721b1213ef7220cca
[openstack-build/neutron-build.git] / tools / pecan_server.sh
1 #!/bin/bash
2 # Copyright (c) 2015 Mirantis, Inc.
3 # All Rights Reserved.
4 #
5 #    Licensed under the Apache License, Version 2.0 (the "License"); you may
6 #    not use this file except in compliance with the License. You may obtain
7 #    a copy of the License at
8 #
9 #         http://www.apache.org/licenses/LICENSE-2.0
10 #
11 #    Unless required by applicable law or agreed to in writing, software
12 #    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 #    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 #    License for the specific language governing permissions and limitations
15 #    under the License.
16
17 # A script useful to develop changes to the codebase. It launches the pecan
18 # API server and will reload it whenever the code changes if inotifywait is
19 # installed.
20
21 inotifywait --help >/dev/null 2>&1
22 if [[ $? -ne 1 ]]; then
23   USE_INOTIFY=0
24 else
25   USE_INOTIFY=1
26 fi
27
28 DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )/../
29 source "$DIR/.tox/py27/bin/activate"
30 COMMAND="python -c 'from neutron.cmd.eventlet import server; server.main_wsgi_pecan()'"
31
32 function cleanup() {
33   kill $PID
34   exit 0
35 }
36
37 if [[ $USE_INOTIFY -eq 1 ]]; then
38   trap cleanup INT
39   while true; do
40     eval "$COMMAND &"
41     PID=$!
42     inotifywait -e modify -r $DIR/neutron/
43     kill $PID
44   done
45 else
46   eval $COMMAND
47 fi