summaryrefslogtreecommitdiffstats
path: root/meta-openstack
diff options
context:
space:
mode:
authorLiam R. Howlett <Liam.Howlett@WindRiver.com>2014-09-15 15:52:31 -0400
committerBruce Ashfield <bruce.ashfield@windriver.com>2014-09-17 00:48:40 -0400
commit49603a96f2e3a8f02afdb824a30a8e0454e4fb6b (patch)
treed93c35e357cc11b781b8664486e7087fcef289ab /meta-openstack
parent5a8c9bc5a9079aab541881feaf3c16477243e172 (diff)
downloadmeta-cloud-services-49603a96f2e3a8f02afdb824a30a8e0454e4fb6b.tar.gz
trove: Add trove recipe and add the package to controller.
Create the OpenStack Database as a service recipe and add it to the controller image. The recipe includes the init script and initial setup to use postgres. Signed-off-by: Liam R. Howlett <Liam.Howlett@WindRiver.com>
Diffstat (limited to 'meta-openstack')
-rw-r--r--meta-openstack/recipes-devtools/python/python-trove/trove-init104
-rwxr-xr-xmeta-openstack/recipes-devtools/python/python-trove_git.bb319
-rw-r--r--meta-openstack/recipes-extended/packagegroups/packagegroup-cloud-controller.bb1
3 files changed, 424 insertions, 0 deletions
diff --git a/meta-openstack/recipes-devtools/python/python-trove/trove-init b/meta-openstack/recipes-devtools/python/python-trove/trove-init
new file mode 100644
index 0000000..584bf77
--- /dev/null
+++ b/meta-openstack/recipes-devtools/python/python-trove/trove-init
@@ -0,0 +1,104 @@
1#!/bin/sh
2
3### BEGIN INIT INFO
4# Provides: trove-@suffix@
5# Required-Start: $remote_fs $syslog
6# Required-Stop: $remote_fs $syslog
7# Should-Start: postgresql rabbitmq-server
8# Should-Stop: postgresql rabbitmq-server
9# Default-Start: 3 5
10# Default-Stop: 0 1 2 6
11# Short-Description: OpenStack Compute (Nova)
12# Description: OpenStack Compute (Nova)
13### END INIT INFO
14
15SUFFIX=@suffix@
16DESC="trove $SUFFIX services"
17DAEMON="/usr/bin/trove-$SUFFIX"
18PIDFILE="/var/run/trove/$SUFFIX.pid"
19
20if [ ! -d /var/run/trove ]; then
21 mkdir -p /var/run/trove
22 chown trove:root /var/run/trove
23fi
24
25if [ ! -d /var/lock/trove ]; then
26 mkdir -p /var/lock/trove
27 chown trove:root /var/lock/trove/
28fi
29
30start ()
31{
32 if [ -e $PIDFILE ]; then
33 PIDDIR=/proc/$(cat $PIDFILE)
34 if [ -d ${PIDDIR} ]; then
35 echo "$DESC already running."
36 exit 1
37 else
38 echo "Removing stale PID file $PIDFILE"
39 rm -f $PIDFILE
40 fi
41 fi
42
43 if [ ! -d /var/log/trove ]; then
44 mkdir /var/log/trove
45 fi
46
47 echo -n "Starting $DESC..."
48
49 start-stop-daemon --start --quiet --background \
50 --pidfile ${PIDFILE} --make-pidfile --exec ${DAEMON} \
51 -- --log-dir=/var/log/trove
52
53 if [ $? -eq 0 ]; then
54 echo "done."
55 else
56 echo "failed."
57 fi
58}
59
60stop ()
61{
62 echo -n "Stopping $DESC..."
63 start-stop-daemon --stop --quiet --pidfile $PIDFILE
64 if [ $? -eq 0 ]; then
65 echo "done."
66 else
67 echo "failed."
68 fi
69 rm -f $PIDFILE
70}
71
72status()
73{
74 pid=`cat $PIDFILE 2>/dev/null`
75 if [ -n "$pid" ]; then
76 if ps -p $pid >&- ; then
77 echo "$DESC is running"
78 return
79 fi
80 fi
81 echo "$DESC is not running"
82}
83
84case "$1" in
85 start)
86 start
87 ;;
88 stop)
89 stop
90 ;;
91 restart|force-reload|reload)
92 stop
93 start
94 ;;
95 status)
96 status
97 ;;
98 *)
99 echo "Usage: $0 {start|stop|force-reload|restart|reload|status}"
100 exit 1
101 ;;
102esac
103
104exit 0
diff --git a/meta-openstack/recipes-devtools/python/python-trove_git.bb b/meta-openstack/recipes-devtools/python/python-trove_git.bb
new file mode 100755
index 0000000..b947a34
--- /dev/null
+++ b/meta-openstack/recipes-devtools/python/python-trove_git.bb
@@ -0,0 +1,319 @@
1DESCRIPTION = "Trove is Database as a Service for Open Stack."
2HOMEPAGE = "https://wiki.openstack.org/wiki/Trove"
3SECTION = "devel/python"
4LICENSE = "Apache-2.0"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=1dece7821bf3fd70fe1309eaa37d52a2"
6
7PR = "r0"
8SRCNAME = "trove"
9
10SRC_URI = "git://github.com/openstack/trove.git;branch=master \
11 file://trove-init \
12 "
13
14SRCREV="a679d2626a91a20b42ce59364e4beb0c588b762b"
15PV="2014.2+git${SRCPV}"
16S = "${WORKDIR}/git"
17
18inherit update-rc.d setuptools identity hosts useradd default_configs
19
20SERVICECREATE_PACKAGES = "${SRCNAME}-setup"
21KEYSTONE_HOST="${CONTROLLER_IP}"
22
23# USERCREATE_PARAM and SERVICECREATE_PARAM contain the list of parameters to be
24# set. If the flag for a parameter in the list is not set here, the default
25# value will be given to that parameter. Parameters not in the list will be set
26# to empty.
27
28USERCREATE_PARAM_${SRCNAME}-setup = "name pass tenant role email"
29SERVICECREATE_PARAM_${SRCNAME}-setup = "name type description region publicurl adminurl internalurl"
30python () {
31 flags = {'type':'database',\
32 'description':'Trove Database As A Service',\
33 'publicurl':"'http://${KEYSTONE_HOST}:8779/v1.0/\$(tenant_id)s'",\
34 'adminurl':"'http://${KEYSTONE_HOST}:8779/v1.0/\$(tenant_id)s'",\
35 'internalurl':"'http://${KEYSTONE_HOST}:8779/v1.0/\$(tenant_id)s'"}
36 d.setVarFlags("SERVICECREATE_PARAM_%s-setup" % d.getVar('SRCNAME',True), flags)
37}
38SERVICECREATE_PACKAGES[vardeps] += "KEYSTONE_HOST"
39
40do_install_append() {
41 TEMPLATE_CONF_DIR=${S}${sysconfdir}/${SRCNAME}
42 TROVE_CONF_DIR=${D}${sysconfdir}/${SRCNAME}
43 TROVE_LOG_DIR="/var/log/${SRCNAME}"
44
45 ADMIN_USER="admin"
46 TROVE_USER="trove"
47 TROVE_TENANT="service"
48 set -x
49
50 install -d ${D}${localstatedir}/${TROVE_LOG_DIR}
51 install -d ${TROVE_CONF_DIR}
52
53 # init.
54 if ${@base_contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)};
55 then
56 install -d ${D}${sysconfdir}/init.d
57 for suffix in api taskmanager conductor; do
58 SUFFIX_FILE=${D}${sysconfdir}/init.d/trove-${suffix}
59 install -m 0755 ${WORKDIR}/trove-init ${SUFFIX_FILE}
60 sed -e "s:@suffix@:${suffix}:g" -i ${SUFFIX_FILE}
61 done
62 fi
63
64
65 install -d ${D}${localstatedir}/lib/trove
66
67 cp -r ${TEMPLATE_CONF_DIR}/* ${TROVE_CONF_DIR}
68
69 for file in trove.conf trove-conductor.conf trove-taskmanager.conf trove-guestagent.conf; do
70 LOG_FILE=`basename -s .conf $file`
71
72 # Install config files.
73 install -m 600 "${TEMPLATE_CONF_DIR}/${file}.sample" \
74 "${TROVE_CONF_DIR}/$file"
75
76 # Modify the common parts of the files.
77 sed -e "s:#log_dir.*:log_dir = ${TROVE_LOG_DIR}:g" \
78 -i ${TROVE_CONF_DIR}/$file
79
80 sed -e "s:^sql_connection = mysql\(.*\):#sql_connection = mysql\1:g" \
81 -i ${TROVE_CONF_DIR}/$file
82
83 sed -e "s,^#sql_connection = postgresql://.*,sql_connection = postgresql://${ADMIN_USER}:${ADMIN_PASSWORD}@localhost/trove,g" \
84 -i ${TROVE_CONF_DIR}/$file
85
86 sed -i "/sql_connection = postgres.*n/adefault_datastore = postgresql" \
87 ${TROVE_CONF_DIR}/$file
88
89 sed -e "s,dns_auth_url = .*,dns_auth_url = http://127.0.0.1:8081/keystone/main/v2.0,g" \
90 -i ${TROVE_CONF_DIR}/$file
91
92 sed -e "s:dns_username = .*:dns_username = admin:g" \
93 -i ${TROVE_CONF_DIR}/$file
94
95 sed -e "s:#rabbit_host=.*:rabbit_host=${CONTROLLER_IP}:g" \
96 -i ${TROVE_CONF_DIR}/$file
97
98 sed -e "s:rabbit_password\(.*\):#rabbit_password\1:g" \
99 -i ${TROVE_CONF_DIR}/$file
100
101 sed -e "s,trove_auth_url.*,trove_auth_url = http://${CONTROLLER_IP}:8081/keystone/main/v2.0,g" \
102 -i ${TROVE_CONF_DIR}/$file
103
104 sed -e "s:nova_proxy_admin_user.*:nova_proxy_admin_user = ${ADMIN_USER}:g" \
105 -i ${TROVE_CONF_DIR}/$file
106
107 sed -e "s:nova_proxy_admin_pass.*:nova_proxy_admin_user = ${ADMIN_PASSWORD}:g" \
108 -i ${TROVE_CONF_DIR}/$file
109
110 sed -e "s:nova_proxy_admin_tenant_name.*:nova_proxy_tenant_name = ${TROVE_TENANT}:g" \
111 -i ${TROVE_CONF_DIR}/$file
112
113 sed -e "s:#log_file.*:log_file = ${LOG_FILE}.log:g" \
114 -i ${TROVE_CONF_DIR}/$file
115 for uncomment in rabbit_port nova_compute_url; do
116 sed -e "s,#${uncomment}\(.*\),${uncomment}\1,g" \
117 -i ${TROVE_CONF_DIR}/$file
118 done
119
120
121 done
122
123
124 # Modify api-paste.ini
125 sed -e "s:%SERVICE_TENANT_NAME%:${TROVE_TENANT}:g" \
126 -i ${TROVE_CONF_DIR}/api-paste.ini
127
128 sed -e "s:%SERVICE_USER%:${TROVE_USER}:g" \
129 -i ${TROVE_CONF_DIR}/api-paste.ini
130
131 sed -e "s:%SERVICE_PASSWORD%:${ADMIN_PASSWORD}:g" \
132 -i ${TROVE_CONF_DIR}/api-paste.ini
133
134 sed -i "/paste.filter_factory = keystonemiddleware.auth_token/aidentity_uri=http://${CONTROLLER_IP}:8081/keystone/admin/" ${TROVE_CONF_DIR}/api-paste.ini
135
136 # revert location of keystone middleware class. This will most likely need
137 # to be removed for Juno.
138 sed -e "s,paste.filter_factory = keystonemiddleware.auth_token:filter_factory,paste.filter_factory = keystoneclient.middleware.auth_token:filter_factory,g" -i ${TROVE_CONF_DIR}/api-paste.ini
139
140 for delete in auth_host auth_port auth_protocol; do
141 sed "/^${delete}\(.*\)/d" -i ${TROVE_CONF_DIR}/api-paste.ini
142 done
143
144
145}
146
147
148pkg_postinst_${SRCNAME}-setup () {
149 # python-trove-setup postinst start
150 if [ "x$D" != "x" ]; then
151 exit 1
152 fi
153 source /etc/nova/openrc
154
155 # This is to make sure postgres is configured and running
156 if ! pidof postmaster > /dev/null; then
157 /etc/init.d/postgresql-init
158 /etc/init.d/postgresql start
159 sleep 5
160 fi
161
162 mkdir /var/log/trove
163 # Create database for trove.
164 sudo -u postgres createdb trove
165
166 # Create default trove database.
167 trove-manage db_sync
168 # Create new datastore.
169 trove-manage datastore_update "postgresql" ""
170 # Set up new version
171 trove-manage datastore_version_update "postgresql" "9.1" "postgresql" 1 "postgresql-server-9.1" 1
172 # Set new default version.
173 trove-manage datastore_update "postgresql" "9.1"
174}
175
176
177USERADD_PACKAGES = "${PN}"
178GROUPADD_PARAM_${PN} = "--system trove"
179USERADD_PARAM_${PN} = "--system --home /var/lib/trove -g trove \
180 --no-create-home --shell /bin/false trove"
181
182PROVIDES += " \
183 ${SRCNAME} \
184 ${SRCNAME}-tests \
185 "
186
187PACKAGES += " \
188 ${SRCNAME} \
189 ${SRCNAME}-api \
190 ${SRCNAME}-bin \
191 ${SRCNAME}-conductor \
192 ${SRCNAME}-setup \
193 ${SRCNAME}-taskmanager \
194 "
195
196PACKAGES_prepend = " \
197 ${SRCNAME}-tests \
198 "
199
200FILES_${PN} = " \
201 ${libdir}/* \
202 "
203
204FILES_${SRCNAME}-tests = " \
205 ${libdir}/python*/site-packages/${SRCNAME}/tests/* \
206 "
207
208ALLOW_EMPTY_${SRCNAME} = "1"
209FILES_${SRCNAME} = " \
210 "
211
212FILES_${SRCNAME}-api = " \
213 ${sysconfdir}/init.d/trove-api \
214 "
215
216FILES_${SRCNAME}-bin = " \
217 ${bindir}/* \
218 "
219
220FILES_${SRCNAME}-conductor = " \
221 ${sysconfdir}/init.d/trove-conductor \
222 "
223
224FILES_${SRCNAME}-taskmanager = " \
225 ${sysconfdir}/init.d/trove-taskmanager \
226 "
227
228FILES_${SRCNAME}-setup = " \
229 ${localstatedir}/* \
230 ${sysconfdir}/${SRCNAME}/* \
231 "
232
233
234
235DEPENDS += " \
236 python-pbr \
237 python-pip \
238 "
239
240RDEPENDS_${PN} += " \
241 python-babel \
242 python-cinderclient \
243 python-eventlet \
244 python-falcon \
245 python-glanceclient \
246 python-heatclient \
247 python-httplib2 \
248 python-iso8601 \
249 python-jinja2 \
250 python-jsonschema \
251 python-keystoneclient \
252 python-kombu \
253 python-lxml \
254 python-netaddr \
255 python-neutronclient \
256 python-novaclient \
257 python-oslo.config \
258 python-passlib \
259 python-paste \
260 python-pastedeploy \
261 python-routes \
262 python-sqlalchemy-migrate \
263 python-swiftclient \
264 python-webob \
265 uwsgi \
266 "
267
268RDEPENDS_${SRCNAME} = " \
269 ${PN} \
270 ${SRCNAME}-api \
271 ${SRCNAME}-bin \
272 ${SRCNAME}-conductor \
273 ${SRCNAME}-setup \
274 ${SRCNAME}-taskmanager \
275 "
276
277RDEPENDS_${SRCNAME}-api = " \
278 ${SRCNAME}-setup \
279 "
280
281RDEPENDS_${SRCNAME}-bin = " \
282 ${PN} \
283 "
284
285RDEPENDS_${SRCNAME}-conductor = " \
286 ${SRCNAME}-setup \
287 "
288
289RDEPENDS_${SRCNAME}-setup = " \
290 ${PN} \
291 ${SRCNAME}-bin \
292 keystone-setup \
293 postgresql \
294 postgresql-client \
295 python-keystoneclient \
296 python-novaclient \
297 sudo \
298 "
299
300RDEPENDS_${SRCNAME}-taskmanager = " \
301 ${SRCNAME}-setup \
302 "
303
304RDEPENDS_${SRCNAME}-tests += " \
305 python-mock \
306 python-pexpect \
307 "
308
309
310INITSCRIPT_PACKAGES = "${SRCNAME}-api ${SRCNAME}-conductor ${SRCNAME}-taskmanager"
311
312INITSCRIPT_NAME_${SRCNAME}-api = "trove-api"
313INITSCRIPT_PARAMS_${SRCNAME}-api = "${OS_DEFAULT_INITSCRIPT_PARAMS}"
314
315INITSCRIPT_NAME_${SRCNAME}-conductor = "trove-conductor"
316INITSCRIPT_PARAMS_${SRCNAME}-conductor = "${OS_DEFAULT_INITSCRIPT_PARAMS}"
317
318INITSCRIPT_NAME_${SRCNAME}-taskmanager = "trove-taskmanager"
319INITSCRIPT_PARAMS_${SRCNAME}-taskmanager = "${OS_DEFAULT_INITSCRIPT_PARAMS}"
diff --git a/meta-openstack/recipes-extended/packagegroups/packagegroup-cloud-controller.bb b/meta-openstack/recipes-extended/packagegroups/packagegroup-cloud-controller.bb
index 8a4c706..42eb99e 100644
--- a/meta-openstack/recipes-extended/packagegroups/packagegroup-cloud-controller.bb
+++ b/meta-openstack/recipes-extended/packagegroups/packagegroup-cloud-controller.bb
@@ -46,6 +46,7 @@ RDEPENDS_${PN} = " postgresql-setup \
46 horizon-apache \ 46 horizon-apache \
47 apache2 \ 47 apache2 \
48 barbican \ 48 barbican \
49 trove \
49 novnc \ 50 novnc \
50 chkconfig \ 51 chkconfig \
51 qemu \ 52 qemu \