summaryrefslogtreecommitdiffstats
path: root/meta-openstack/recipes-devtools/python/python-nova_2013.1.3.bb
diff options
context:
space:
mode:
Diffstat (limited to 'meta-openstack/recipes-devtools/python/python-nova_2013.1.3.bb')
-rw-r--r--meta-openstack/recipes-devtools/python/python-nova_2013.1.3.bb187
1 files changed, 158 insertions, 29 deletions
diff --git a/meta-openstack/recipes-devtools/python/python-nova_2013.1.3.bb b/meta-openstack/recipes-devtools/python/python-nova_2013.1.3.bb
index e7f844a..c2dd1f3 100644
--- a/meta-openstack/recipes-devtools/python/python-nova_2013.1.3.bb
+++ b/meta-openstack/recipes-devtools/python/python-nova_2013.1.3.bb
@@ -1,49 +1,162 @@
1include python-nova.inc 1DESCRIPTION = "Nova is a cloud computing fabric controller"
2HOMEPAGE = "https://launchpad.net/nova"
3SECTION = "devel/python"
4LICENSE = "Apache-2.0"
5LIC_FILES_CHKSUM = "file://LICENSE;md5=1dece7821bf3fd70fe1309eaa37d52a2"
2 6
3inherit useradd 7DEPENDS = "sudo"
4 8
5pkg_postinst_${SRCNAME}-common () { 9PR = "r0"
6 if [ "x$D" != "x" ]; then 10SRCNAME = "nova"
7 exit 1 11
12FILESEXTRAPATHS := "${THISDIR}/${PN}"
13
14SRC_URI = "https://launchpad.net/${SRCNAME}/grizzly/${PV}/+download/${SRCNAME}-${PV}.tar.gz \
15 file://0001-nova-api-paste.ini-make-controller-IP-configurable.patch \
16 "
17
18SRC_URI += "file://nova-all \
19 file://nova-consoleauth \
20 file://nova-novncproxy \
21 file://nova.conf \
22 file://openrc \
23 "
24
25SRC_URI[md5sum] = "6215982b9ed08b9042e088470d60a0a6"
26SRC_URI[sha256sum] = "f7c25186920daccb16867c5fd272318beb8cc076e5a55f79b5906618ef2724f4"
27
28S = "${WORKDIR}/${SRCNAME}-${PV}"
29
30inherit update-rc.d setuptools identity hosts
31
32do_install_append() {
33 if [ ! -f "${WORKDIR}/nova.conf" ]; then
34 return
8 fi 35 fi
9 36
10 if [ -d $D/home/root/ ]; then 37 TEMPLATE_CONF_DIR=${S}${sysconfdir}/${SRCNAME}
11 echo "source /etc/nova/openrc" >> $D/home/root/.bashrc 38 NOVA_CONF_DIR=${D}/${sysconfdir}/nova
12 elif [ -d $D/root/ ]; then 39
13 echo "source /etc/nova/openrc" >> $D/root/.bashrc 40 install -d ${NOVA_CONF_DIR}
41 install -m 600 ${S}/etc/nova/policy.json ${NOVA_CONF_DIR}/
42
43 # Deploy filters to /etc/nova/rootwrap.d
44 install -m 755 -d ${NOVA_CONF_DIR}/rootwrap.d
45 install -m 600 ${S}/etc/nova/rootwrap.d/*.filters ${NOVA_CONF_DIR}/rootwrap.d
46 chown -R root:root ${NOVA_CONF_DIR}/rootwrap.d
47 chmod 644 ${NOVA_CONF_DIR}/rootwrap.d
48
49 # Set up rootwrap.conf, pointing to /etc/nova/rootwrap.d
50 install -m 644 ${S}/etc/nova/rootwrap.conf ${NOVA_CONF_DIR}/
51 sed -e "s:^filters_path=.*$:filters_path=${sysconfdir}/nova/rootwrap.d:" \
52 -i ${NOVA_CONF_DIR}/rootwrap.conf
53 chown root:root $NOVA_CONF_DIR/rootwrap.conf
54
55 # Set up the rootwrap sudoers for nova
56 install -d ${D}${sysconfdir}/sudoers.d
57 touch ${D}${sysconfdir}/sudoers.d/nova-rootwrap
58 chmod 0440 ${D}${sysconfdir}/sudoers.d/nova-rootwrap
59 chown root:root ${D}${sysconfdir}/sudoers.d/nova-rootwrap
60 echo "root ALL=(root) NOPASSWD: ${bindir}/nova-rootwrap" > \
61 ${D}${sysconfdir}/sudoers.d/nova-rootwrap
62
63 # Configuration options
64 sed -e "s:%SERVICE_TENANT_NAME%:${SERVICE_TENANT_NAME}:g" \
65 ${TEMPLATE_CONF_DIR}/api-paste.ini > ${WORKDIR}/api-paste.ini
66 sed -e "s:%SERVICE_USER%:${SRCNAME}:g" -i ${WORKDIR}/api-paste.ini
67 sed -e "s:%SERVICE_PASSWORD%:${SERVICE_PASSWORD}:g" \
68 -i ${WORKDIR}/api-paste.ini
69 sed -e "s:%CONTROLLER_IP%:${CONTROLLER_IP}:g" -i ${WORKDIR}/api-paste.ini
70
71 sed -e "s:%DB_USER%:${DB_USER}:g" -i ${WORKDIR}/nova.conf
72 sed -e "s:%DB_PASSWORD%:${DB_PASSWORD}:g" -i ${WORKDIR}/nova.conf
73
74 sed -e "s:%CONTROLLER_IP%:${CONTROLLER_IP}:g" -i ${WORKDIR}/nova.conf
75 sed -e "s:%CONTROLLER_HOST%:${CONTROLLER_HOST}:g" -i ${WORKDIR}/nova.conf
76
77 sed -e "s:%COMPUTE_IP%:${COMPUTE_IP}:g" -i ${WORKDIR}/nova.conf
78 sed -e "s:%COMPUTE_HOST%:${COMPUTE_HOST}:g" -i ${WORKDIR}/nova.conf
79
80 sed -e "s:%OS_PASSWORD%:${ADMIN_PASSWORD}:g" -i ${WORKDIR}/openrc
81 sed -e "s:%SERVICE_TOKEN%:${SERVICE_TOKEN}:g" -i ${WORKDIR}/openrc
82
83 sed -e "s:%CONTROLLER_IP%:${CONTROLLER_IP}:g" -i ${WORKDIR}/openrc
84 sed -e "s:%CONTROLLER_HOST%:${CONTROLLER_HOST}:g" -i ${WORKDIR}/openrc
85
86 # Copy the configuration file
87 install -m 664 ${WORKDIR}/nova.conf ${NOVA_CONF_DIR}/nova.conf
88 install -m 664 ${WORKDIR}/api-paste.ini ${NOVA_CONF_DIR}
89 install -m 664 ${WORKDIR}/openrc ${NOVA_CONF_DIR}
90
91 install -d ${NOVA_CONF_DIR}/instances
92
93 if ${@base_contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
94 install -d ${D}${sysconfdir}/init.d
95 install -m 0755 ${WORKDIR}/nova-all ${D}${sysconfdir}/init.d/nova-all
96 install -m 0755 ${WORKDIR}/nova-consoleauth ${D}${sysconfdir}/init.d/nova-consoleauth
97 install -m 0755 ${WORKDIR}/nova-novncproxy ${D}${sysconfdir}/init.d/nova-novncproxy
14 fi 98 fi
15} 99}
16 100
17PACKAGES += "${SRCNAME}-common ${SRCNAME}-common-misc" 101pkg_postinst_${SRCNAME}-controller () {
18 102 if [ "x$D" != "x" ]; then
19#FILES_${PN} = "${files_${PN}}" 103 exit 1
20# 104 fi
21#FILES_${SRCNAME}-common = "${files_${SRCNAME}-common}"
22#
23#FILES_${SRCNAME}-common-misc = "${files_${SRCNAME}-compute} ${files_${SRCNAME}-controller}"
24 105
25FILES_${PN} = "${libdir}/python*" 106 # This is to make sure postgres is configured and running
107 if ! pidof postmaster > /dev/null; then
108 /etc/init.d/postgresql-init
109 /etc/init.d/postgresql start
110 sleep 5
111 fi
26 112
27FILES_${SRCNAME}-common = " \ 113 sudo -u postgres createdb nova
28 ${bindir}/nova-manage \ 114 sleep 2
29 ${bindir}/nova-rootwrap \ 115 nova-manage db sync
30 ${sysconfdir}/sudoers.d" 116}
31 117
32FILES_${SRCNAME}-common-misc = " \ 118pkg_postinst_${SRCNAME}-common () {
33 ${bindir}/nova-compute \ 119 if [ "x$D" != "x" ]; then
34 ${sysconfdir}/${SRCNAME}/* \ 120 exit 1
35 ${sysconfdir}/init.d/nova-compute \ 121 fi
36 ${bindir} \
37 ${sysconfdir}/init.d/nova-all"
38 122
39RDEPENDS_${SRCNAME}-common = "${PN} openssl openssl-misc libxml2 libxslt \ 123 if [ -d /home/root ]; then
40 iptables curl dnsmasq sudo procps" 124 echo "source /etc/nova/openrc" > /home/root/.bashrc
125 else
126 echo "source /etc/nova/openrc" > /root/.bashrc
127 fi
128}
41 129
42USERADD_PACKAGES = "${PN}" 130USERADD_PACKAGES = "${PN}"
43GROUPADD_PARAM_${PN} = "--system nova" 131GROUPADD_PARAM_${PN} = "--system nova"
44USERADD_PARAM_${PN} = "--system --home /var/lib/nova -g nova \ 132USERADD_PARAM_${PN} = "--system --home /var/lib/nova -g nova \
45 --no-create-home --shell /bin/false nova" 133 --no-create-home --shell /bin/false nova"
46 134
135PACKAGES += " ${SRCNAME}-common ${SRCNAME}-compute ${SRCNAME}-controller"
136PACKAGES += " ${SRCNAME}-consoleauth"
137PACKAGES += " ${SRCNAME}-novncproxy"
138
139
140FILES_${PN} = "${libdir}/*"
141
142FILES_${SRCNAME}-common = "${bindir}/nova-manage \
143 ${bindir}/nova-rootwrap \
144 ${sysconfdir}/${SRCNAME}/* \
145 ${sysconfdir}/sudoers.d"
146
147FILES_${SRCNAME}-compute = "${bindir}/nova-compute \
148 ${sysconfdir}/init.d/nova-compute"
149
150FILES_${SRCNAME}-controller = "${bindir}/* \
151 ${sysconfdir}/init.d/nova-all "
152
153FILES_${SRCNAME}-consoleauth = " \
154 ${sysconfdir}/init.d/nova-consoleauth \
155"
156FILES_${SRCNAME}-novncproxy = " \
157 ${sysconfdir}/init.d/nova-novncproxy \
158"
159
47RDEPENDS_${PN} = " python-modules \ 160RDEPENDS_${PN} = " python-modules \
48 python-misc \ 161 python-misc \
49 python-argparse \ 162 python-argparse \
@@ -79,3 +192,19 @@ RDEPENDS_${PN} = " python-modules \
79 python-webob \ 192 python-webob \
80 python-websockify \ 193 python-websockify \
81 " 194 "
195
196RDEPENDS_${SRCNAME}-common = "${PN} openssl openssl-misc libxml2 libxslt \
197 iptables curl dnsmasq sudo procps"
198
199RDEPENDS_${SRCNAME}-controller = "${PN} ${SRCNAME}-common \
200 ${SRCNAME}-consoleauth \
201 ${SRCNAME}-novncproxy \
202 postgresql postgresql-client python-psycopg2"
203
204RDEPENDS_${SRCNAME}-compute = "${PN} ${SRCNAME}-common \
205 qemu libvirt libvirt-libvirtd libvirt-python libvirt-virsh"
206
207INITSCRIPT_PACKAGES = "${SRCNAME}-controller ${SRCNAME}-consoleauth ${SRCNAME}-novncproxy"
208INITSCRIPT_NAME_${SRCNAME}-controller = "nova-all"
209INITSCRIPT_NAME_${SRCNAME}-consoleauth = "nova-consoleauth"
210INITSCRIPT_NAME_${SRCNAME}-novncproxy = "nova-novncproxy"