blob: ee7bf0ec7be623ec35af0ac28eac448e46492905 [file] [log] [blame]
Flaper Fesp06b345e2013-09-04 15:35:47 +02001# lib/marconi
2# Install and start **Marconi** service
3
4# To enable a minimal set of Marconi services, add the following to localrc:
5# enable_service marconi-server
6#
7# Dependencies:
8# - functions
9# - OS_AUTH_URL for auth in api
10# - DEST set to the destination directory
11# - SERVICE_PASSWORD, SERVICE_TENANT_NAME for auth in api
12# - STACK_USER service user
13
14# stack.sh
15# ---------
16# install_marconi
17# configure_marconi
18# init_marconi
19# start_marconi
20# stop_marconi
21# cleanup_marconi
22
23# Save trace setting
24XTRACE=$(set +o | grep xtrace)
25set +o xtrace
26
27
28# Defaults
29# --------
30
31# Set up default directories
32MARCONI_DIR=$DEST/marconi
33MARCONICLIENT_DIR=$DEST/python-marconiclient
34MARCONI_CONF_DIR=/etc/marconi
35MARCONI_CONF=$MARCONI_CONF_DIR/marconi.conf
36MARCONI_API_LOG_DIR=/var/log/marconi-api
37MARCONI_AUTH_CACHE_DIR=${MARCONI_AUTH_CACHE_DIR:-/var/cache/marconi}
38
39# Support potential entry-points console scripts
40MARCONI_BIN_DIR=$(get_python_exec_prefix)
41
42# Set up database backend
43MARCONI_BACKEND=${MARCONI_BACKEND:-mongodb}
44
45
46# Set Marconi repository
47MARCONI_REPO=${MARCONI_REPO:-${GIT_BASE}/openstack/marconi.git}
48MARCONI_BRANCH=${MARCONI_BRANCH:-master}
49
50# Set client library repository
51MARCONICLIENT_REPO=${MARCONICLIENT_REPO:-${GIT_BASE}/openstack/python-marconiclient.git}
52MARCONICLIENT_BRANCH=${MARCONICLIENT_BRANCH:-master}
53
Malini Kamalambal67df3b22014-02-20 14:48:59 -050054# Set Marconi Connection Info
55MARCONI_SERVICE_HOST=${MARCONI_SERVICE_HOST:-$SERVICE_HOST}
56MARCONI_SERVICE_PORT=${MARCONI_SERVICE_PORT:-8888}
57MARCONI_SERVICE_PROTOCOL=${MARCONI_SERVICE_PROTOCOL:-$SERVICE_PROTOCOL}
58
Dean Troyer4237f592014-01-29 16:22:11 -060059# Tell Tempest this project is present
Malini Kamalambal1e4e3ac2014-02-14 11:29:26 -050060TEMPEST_SERVICES+=,marconi
Dean Troyer4237f592014-01-29 16:22:11 -060061
62
Flaper Fesp06b345e2013-09-04 15:35:47 +020063# Functions
64# ---------
65
Malini Kamalambal9972ec22014-02-10 11:22:39 -050066# Test if any Marconi services are enabled
67# is_marconi_enabled
68function is_marconi_enabled {
69 [[ ,${ENABLED_SERVICES} =~ ,"marconi-" ]] && return 0
70 return 1
71}
72
Flaper Fesp06b345e2013-09-04 15:35:47 +020073# cleanup_marconi() - Remove residual data files, anything left over from previous
74# runs that a clean run would need to clean up
75function cleanup_marconi() {
Malini Kamalambal2dcc7742014-02-18 13:45:18 -050076 if ! timeout $SERVICE_TIMEOUT sh -c "while ! mongo marconi --eval 'db.dropDatabase();'; do sleep 1; done"; then
77 die $LINENO "Mongo DB did not start"
78 fi
Flaper Fesp06b345e2013-09-04 15:35:47 +020079}
80
81# configure_marconiclient() - Set config files, create data dirs, etc
82function configure_marconiclient() {
83 setup_develop $MARCONICLIENT_DIR
84}
85
86# configure_marconi() - Set config files, create data dirs, etc
87function configure_marconi() {
88 setup_develop $MARCONI_DIR
89
90 [ ! -d $MARCONI_CONF_DIR ] && sudo mkdir -m 755 -p $MARCONI_CONF_DIR
91 sudo chown $USER $MARCONI_CONF_DIR
92
93 [ ! -d $MARCONI_API_LOG_DIR ] && sudo mkdir -m 755 -p $MARCONI_API_LOG_DIR
94 sudo chown $USER $MARCONI_API_LOG_DIR
95
96 iniset $MARCONI_CONF DEFAULT verbose True
Malini Kamalambal67df3b22014-02-20 14:48:59 -050097 iniset $MARCONI_CONF 'drivers:transport:wsgi' bind $MARCONI_SERVICE_HOST
Flaper Fesp06b345e2013-09-04 15:35:47 +020098
Flaper Fesp06b345e2013-09-04 15:35:47 +020099 iniset $MARCONI_CONF keystone_authtoken auth_protocol http
100 iniset $MARCONI_CONF keystone_authtoken admin_user marconi
101 iniset $MARCONI_CONF keystone_authtoken admin_password $SERVICE_PASSWORD
102 iniset $MARCONI_CONF keystone_authtoken admin_tenant_name $SERVICE_TENANT_NAME
103 iniset $MARCONI_CONF keystone_authtoken signing_dir $MARCONI_AUTH_CACHE_DIR
104
105 if [[ "$MARCONI_BACKEND" = 'mongodb' ]]; then
106 iniset $MARCONI_CONF database connection mongodb://localhost:27017/marconi
107 configure_mongodb
108 cleanup_marconi
109 fi
110}
111
112function configure_mongodb() {
113 # Set nssize to 2GB. This increases the number of namespaces supported
114 # # per database.
Dean Troyer41d96d72014-02-11 09:08:35 -0600115 if is_ubuntu; then
116 sudo sed -i -e "
117 s|[^ \t]*#[ \t]*\(nssize[ \t]*=.*\$\)|\1|
118 s|^\(nssize[ \t]*=[ \t]*\).*\$|\1 2047|
119 " /etc/mongodb.conf
120 restart_service mongodb
121 elif is_fedora; then
122 sudo sed -i '/--nssize/!s/OPTIONS=\"/OPTIONS=\"--nssize 2047 /' /etc/sysconfig/mongod
123 restart_service mongod
124 fi
Flaper Fesp06b345e2013-09-04 15:35:47 +0200125}
126
127# init_marconi() - Initialize etc.
128function init_marconi() {
129 # Create cache dir
130 sudo mkdir -p $MARCONI_AUTH_CACHE_DIR
131 sudo chown $STACK_USER $MARCONI_AUTH_CACHE_DIR
132 rm -f $MARCONI_AUTH_CACHE_DIR/*
133}
134
135# install_marconi() - Collect source and prepare
136function install_marconi() {
137 git_clone $MARCONI_REPO $MARCONI_DIR $MARCONI_BRANCH
138 setup_develop $MARCONI_DIR
139}
140
141# install_marconiclient() - Collect source and prepare
142function install_marconiclient() {
143 git_clone $MARCONICLIENT_REPO $MARCONICLIENT_DIR $MARCONICLIENT_BRANCH
144 setup_develop $MARCONICLIENT_DIR
145}
146
147# start_marconi() - Start running processes, including screen
148function start_marconi() {
149 screen_it marconi-server "marconi-server --config-file $MARCONI_CONF"
Malini Kamalambal67df3b22014-02-20 14:48:59 -0500150 echo "Waiting for Marconi to start..."
151 if ! timeout $SERVICE_TIMEOUT sh -c "while ! wget --no-proxy -q -O- $MARCONI_SERVICE_PROTOCOL://$MARCONI_SERVICE_HOST:$MARCONI_SERVICE_PORT/v1/health; do sleep 1; done"; then
152 die $LINENO "Marconi did not start"
153 fi
Flaper Fesp06b345e2013-09-04 15:35:47 +0200154}
155
156# stop_marconi() - Stop running processes
157function stop_marconi() {
158 # Kill the marconi screen windows
159 for serv in marconi-server; do
160 screen -S $SCREEN_NAME -p $serv -X kill
161 done
162}
163
164function create_marconi_accounts() {
Steve Martinelli19685422014-01-24 13:02:26 -0600165 SERVICE_TENANT=$(openstack project list | awk "/ $SERVICE_TENANT_NAME / { print \$2 }")
166 ADMIN_ROLE=$(openstack role list | awk "/ admin / { print \$2 }")
Flaper Fesp06b345e2013-09-04 15:35:47 +0200167
Steve Martinelli19685422014-01-24 13:02:26 -0600168 MARCONI_USER=$(openstack user create \
169 marconi \
170 --password "$SERVICE_PASSWORD" \
171 --project $SERVICE_TENANT \
172 --email marconi@example.com \
173 | grep " id " | get_field 2)
174 openstack role add \
175 $ADMIN_ROLE \
176 --project $SERVICE_TENANT \
177 --user $MARCONI_USER
Malini Kamalambal0b3aacc2014-02-13 18:18:51 -0500178
Flaper Fesp06b345e2013-09-04 15:35:47 +0200179 if [[ "$KEYSTONE_CATALOG_BACKEND" = 'sql' ]]; then
Steve Martinelli19685422014-01-24 13:02:26 -0600180 MARCONI_SERVICE=$(openstack service create \
181 marconi \
Flaper Fesp06b345e2013-09-04 15:35:47 +0200182 --type=queuing \
Malini Kamalambal0f7ad6b2013-12-13 12:42:31 -0500183 --description="Marconi Service" \
184 | grep " id " | get_field 2)
Steve Martinelli19685422014-01-24 13:02:26 -0600185 openstack endpoint create \
186 $MARCONI_SERVICE \
Flaper Fesp06b345e2013-09-04 15:35:47 +0200187 --region RegionOne \
Malini Kamalambal67df3b22014-02-20 14:48:59 -0500188 --publicurl "$MARCONI_SERVICE_PROTOCOL://$MARCONI_SERVICE_HOST:$MARCONI_SERVICE_PORT" \
189 --adminurl "$MARCONI_SERVICE_PROTOCOL://$MARCONI_SERVICE_HOST:$MARCONI_SERVICE_PORT" \
190 --internalurl "$MARCONI_SERVICE_PROTOCOL://$MARCONI_SERVICE_HOST:$MARCONI_SERVICE_PORT"
Flaper Fesp06b345e2013-09-04 15:35:47 +0200191 fi
192
193}
194
195
196# Restore xtrace
197$XTRACE
198
199# Local variables:
200# mode: shell-script
201# End: