diff options
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.bb | 187 |
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 e7f844a2..c2dd1f3f 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 @@ -include python-nova.inc +DESCRIPTION = "Nova is a cloud computing fabric controller" +HOMEPAGE = "https://launchpad.net/nova" +SECTION = "devel/python" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://LICENSE;md5=1dece7821bf3fd70fe1309eaa37d52a2" -inherit useradd +DEPENDS = "sudo" -pkg_postinst_${SRCNAME}-common () { - if [ "x$D" != "x" ]; then - exit 1 +PR = "r0" +SRCNAME = "nova" + +FILESEXTRAPATHS := "${THISDIR}/${PN}" + +SRC_URI = "https://launchpad.net/${SRCNAME}/grizzly/${PV}/+download/${SRCNAME}-${PV}.tar.gz \ + file://0001-nova-api-paste.ini-make-controller-IP-configurable.patch \ + " + +SRC_URI += "file://nova-all \ + file://nova-consoleauth \ + file://nova-novncproxy \ + file://nova.conf \ + file://openrc \ + " + +SRC_URI[md5sum] = "6215982b9ed08b9042e088470d60a0a6" +SRC_URI[sha256sum] = "f7c25186920daccb16867c5fd272318beb8cc076e5a55f79b5906618ef2724f4" + +S = "${WORKDIR}/${SRCNAME}-${PV}" + +inherit update-rc.d setuptools identity hosts + +do_install_append() { + if [ ! -f "${WORKDIR}/nova.conf" ]; then + return fi - if [ -d $D/home/root/ ]; then - echo "source /etc/nova/openrc" >> $D/home/root/.bashrc - elif [ -d $D/root/ ]; then - echo "source /etc/nova/openrc" >> $D/root/.bashrc + TEMPLATE_CONF_DIR=${S}${sysconfdir}/${SRCNAME} + NOVA_CONF_DIR=${D}/${sysconfdir}/nova + + install -d ${NOVA_CONF_DIR} + install -m 600 ${S}/etc/nova/policy.json ${NOVA_CONF_DIR}/ + + # Deploy filters to /etc/nova/rootwrap.d + install -m 755 -d ${NOVA_CONF_DIR}/rootwrap.d + install -m 600 ${S}/etc/nova/rootwrap.d/*.filters ${NOVA_CONF_DIR}/rootwrap.d + chown -R root:root ${NOVA_CONF_DIR}/rootwrap.d + chmod 644 ${NOVA_CONF_DIR}/rootwrap.d + + # Set up rootwrap.conf, pointing to /etc/nova/rootwrap.d + install -m 644 ${S}/etc/nova/rootwrap.conf ${NOVA_CONF_DIR}/ + sed -e "s:^filters_path=.*$:filters_path=${sysconfdir}/nova/rootwrap.d:" \ + -i ${NOVA_CONF_DIR}/rootwrap.conf + chown root:root $NOVA_CONF_DIR/rootwrap.conf + + # Set up the rootwrap sudoers for nova + install -d ${D}${sysconfdir}/sudoers.d + touch ${D}${sysconfdir}/sudoers.d/nova-rootwrap + chmod 0440 ${D}${sysconfdir}/sudoers.d/nova-rootwrap + chown root:root ${D}${sysconfdir}/sudoers.d/nova-rootwrap + echo "root ALL=(root) NOPASSWD: ${bindir}/nova-rootwrap" > \ + ${D}${sysconfdir}/sudoers.d/nova-rootwrap + + # Configuration options + sed -e "s:%SERVICE_TENANT_NAME%:${SERVICE_TENANT_NAME}:g" \ + ${TEMPLATE_CONF_DIR}/api-paste.ini > ${WORKDIR}/api-paste.ini + sed -e "s:%SERVICE_USER%:${SRCNAME}:g" -i ${WORKDIR}/api-paste.ini + sed -e "s:%SERVICE_PASSWORD%:${SERVICE_PASSWORD}:g" \ + -i ${WORKDIR}/api-paste.ini + sed -e "s:%CONTROLLER_IP%:${CONTROLLER_IP}:g" -i ${WORKDIR}/api-paste.ini + + sed -e "s:%DB_USER%:${DB_USER}:g" -i ${WORKDIR}/nova.conf + sed -e "s:%DB_PASSWORD%:${DB_PASSWORD}:g" -i ${WORKDIR}/nova.conf + + sed -e "s:%CONTROLLER_IP%:${CONTROLLER_IP}:g" -i ${WORKDIR}/nova.conf + sed -e "s:%CONTROLLER_HOST%:${CONTROLLER_HOST}:g" -i ${WORKDIR}/nova.conf + + sed -e "s:%COMPUTE_IP%:${COMPUTE_IP}:g" -i ${WORKDIR}/nova.conf + sed -e "s:%COMPUTE_HOST%:${COMPUTE_HOST}:g" -i ${WORKDIR}/nova.conf + + sed -e "s:%OS_PASSWORD%:${ADMIN_PASSWORD}:g" -i ${WORKDIR}/openrc + sed -e "s:%SERVICE_TOKEN%:${SERVICE_TOKEN}:g" -i ${WORKDIR}/openrc + + sed -e "s:%CONTROLLER_IP%:${CONTROLLER_IP}:g" -i ${WORKDIR}/openrc + sed -e "s:%CONTROLLER_HOST%:${CONTROLLER_HOST}:g" -i ${WORKDIR}/openrc + + # Copy the configuration file + install -m 664 ${WORKDIR}/nova.conf ${NOVA_CONF_DIR}/nova.conf + install -m 664 ${WORKDIR}/api-paste.ini ${NOVA_CONF_DIR} + install -m 664 ${WORKDIR}/openrc ${NOVA_CONF_DIR} + + install -d ${NOVA_CONF_DIR}/instances + + if ${@base_contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then + install -d ${D}${sysconfdir}/init.d + install -m 0755 ${WORKDIR}/nova-all ${D}${sysconfdir}/init.d/nova-all + install -m 0755 ${WORKDIR}/nova-consoleauth ${D}${sysconfdir}/init.d/nova-consoleauth + install -m 0755 ${WORKDIR}/nova-novncproxy ${D}${sysconfdir}/init.d/nova-novncproxy fi } -PACKAGES += "${SRCNAME}-common ${SRCNAME}-common-misc" - -#FILES_${PN} = "${files_${PN}}" -# -#FILES_${SRCNAME}-common = "${files_${SRCNAME}-common}" -# -#FILES_${SRCNAME}-common-misc = "${files_${SRCNAME}-compute} ${files_${SRCNAME}-controller}" +pkg_postinst_${SRCNAME}-controller () { + if [ "x$D" != "x" ]; then + exit 1 + fi -FILES_${PN} = "${libdir}/python*" + # 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 5 + fi -FILES_${SRCNAME}-common = " \ - ${bindir}/nova-manage \ - ${bindir}/nova-rootwrap \ - ${sysconfdir}/sudoers.d" + sudo -u postgres createdb nova + sleep 2 + nova-manage db sync +} -FILES_${SRCNAME}-common-misc = " \ - ${bindir}/nova-compute \ - ${sysconfdir}/${SRCNAME}/* \ - ${sysconfdir}/init.d/nova-compute \ - ${bindir} \ - ${sysconfdir}/init.d/nova-all" +pkg_postinst_${SRCNAME}-common () { + if [ "x$D" != "x" ]; then + exit 1 + fi -RDEPENDS_${SRCNAME}-common = "${PN} openssl openssl-misc libxml2 libxslt \ - iptables curl dnsmasq sudo procps" + if [ -d /home/root ]; then + echo "source /etc/nova/openrc" > /home/root/.bashrc + else + echo "source /etc/nova/openrc" > /root/.bashrc + fi +} USERADD_PACKAGES = "${PN}" GROUPADD_PARAM_${PN} = "--system nova" USERADD_PARAM_${PN} = "--system --home /var/lib/nova -g nova \ --no-create-home --shell /bin/false nova" +PACKAGES += " ${SRCNAME}-common ${SRCNAME}-compute ${SRCNAME}-controller" +PACKAGES += " ${SRCNAME}-consoleauth" +PACKAGES += " ${SRCNAME}-novncproxy" + + +FILES_${PN} = "${libdir}/*" + +FILES_${SRCNAME}-common = "${bindir}/nova-manage \ + ${bindir}/nova-rootwrap \ + ${sysconfdir}/${SRCNAME}/* \ + ${sysconfdir}/sudoers.d" + +FILES_${SRCNAME}-compute = "${bindir}/nova-compute \ + ${sysconfdir}/init.d/nova-compute" + +FILES_${SRCNAME}-controller = "${bindir}/* \ + ${sysconfdir}/init.d/nova-all " + +FILES_${SRCNAME}-consoleauth = " \ + ${sysconfdir}/init.d/nova-consoleauth \ +" +FILES_${SRCNAME}-novncproxy = " \ + ${sysconfdir}/init.d/nova-novncproxy \ +" + RDEPENDS_${PN} = " python-modules \ python-misc \ python-argparse \ @@ -79,3 +192,19 @@ RDEPENDS_${PN} = " python-modules \ python-webob \ python-websockify \ " + +RDEPENDS_${SRCNAME}-common = "${PN} openssl openssl-misc libxml2 libxslt \ + iptables curl dnsmasq sudo procps" + +RDEPENDS_${SRCNAME}-controller = "${PN} ${SRCNAME}-common \ + ${SRCNAME}-consoleauth \ + ${SRCNAME}-novncproxy \ + postgresql postgresql-client python-psycopg2" + +RDEPENDS_${SRCNAME}-compute = "${PN} ${SRCNAME}-common \ + qemu libvirt libvirt-libvirtd libvirt-python libvirt-virsh" + +INITSCRIPT_PACKAGES = "${SRCNAME}-controller ${SRCNAME}-consoleauth ${SRCNAME}-novncproxy" +INITSCRIPT_NAME_${SRCNAME}-controller = "nova-all" +INITSCRIPT_NAME_${SRCNAME}-consoleauth = "nova-consoleauth" +INITSCRIPT_NAME_${SRCNAME}-novncproxy = "nova-novncproxy" |