aboutsummaryrefslogtreecommitdiffstats
path: root/meta-openstack/recipes-devtools/python/python-neutron/neutron-server.init
blob: 0c78de62000484915760b9b4e8682bf60d5471eb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#!/bin/sh

### BEGIN INIT INFO
# Provides:          neutron-server
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 5
# Default-Stop:      0 1 6
# Short-Description: neutron-server
# Description:       Provides the Quantum networking service
### END INIT INFO

DESC="neutron-server"
DAEMON="/usr/bin/neutron-server"
PIDFILE="/var/run/neutron-server.pid"
DAEMON_ARGS="--config-file=/etc/neutron/neutron.conf \
  --config-file=@plugin@ \
  --log-dir=/var/log/neutron"

start() 
{
    if [ -e $PIDFILE ]; then
        PIDDIR=/proc/$(cat $PIDFILE)
        if [ -d ${PIDDIR} ]; then
            echo "$DESC already running."
            exit 1
        else
            echo "Removing stale PID file $PIDFILE"
            rm -f $PIDFILE
        fi
    fi

    if [ ! -d /var/log/neutron ]; then
        mkdir /var/log/neutron
    fi

    echo -n "Starting $DESC..."

    start-stop-daemon --start --quiet --background \
        --pidfile ${PIDFILE} --make-pidfile --exec ${DAEMON} \
	    -- $DAEMON_ARGS

    if [ $? -eq 0 ]; then
        echo "done."
    else
        echo "failed."
    fi
}

stop() 
{
    echo -n "Stopping $DESC..."
    start-stop-daemon --stop --quiet --pidfile $PIDFILE
    if [ $? -eq 0 ]; then
        echo "done."
    else
        echo "failed."
    fi
    rm -f $PIDFILE
}

status()
{
    pid=`cat $PIDFILE 2>/dev/null`
    if [ -n "$pid" ]; then
        if ps -p $pid >&- ; then
            echo "$DESC is running"
            return
        fi
    fi
    echo "$DESC is not running"
}

reset()
{
    . /etc/nova/openrc

    # Cleanup all neutron floating ip
    simple_delete "neutron floatingip-list --all-tenant" "neutron floatingip-delete" 1 "neutron floatingip"

    # Cleanup all neutron router
    neutron router-list | while read line; do
        router_id=`echo $line | get_field 1`
        neutron router-port-list $router_id | while read line_port; do
            port_id=`echo $line_port | get_field 1`
            subnet_id=`echo $line_port | get_field 4 | cut -d ' ' -f 2 | cut -d '"' -f 2`
            if [ ! -z "$router_id" ] && [ ! -z "$subnet_id" ] ; then
                echo ">>> Delete router-port: router_id=$router_id, port_id=$port_id, subnet_id=$subnet_id"
                neutron router-interface-delete $router_id $subnet_id > /dev/null 2>&1
            fi
        done
        if [ ! -z "$router_id" ] ; then
            echo ">>> Delete router: router_id=$router_id"
            neutron router-delete $router_id > /dev/null 2>&1
        fi
    done

    # Cleanup all neutron ports
    simple_delete "neutron port-list --all-tenant" "neutron port-delete" 1 "neutron port"

    # Cleanup all neutron net
    simple_delete "neutron net-list --all-tenant" "neutron net-delete" 1 "neutron net"

    stop

    # This is to make sure postgres is configured and running
    if ! pidof postmaster > /dev/null; then
        /etc/init.d/postgresql-init
        /etc/init.d/postgresql start
        sleep 2
    fi

    sudo -u postgres dropdb ovs_neutron
    sudo -u postgres createdb ovs_neutron

    start
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart|force-reload|reload)
        stop
        start
        ;;
    status)
	status
        ;;
    reset)
	reset
        ;;
    *)
        echo "Usage: $0 {start|stop|force-reload|restart|reload|status|reset}"
        exit 1
        ;;
esac

exit 0