diff options
author | Bruce Ashfield <bruce.ashfield@windriver.com> | 2013-10-04 00:26:04 -0400 |
---|---|---|
committer | Bruce Ashfield <bruce.ashfield@windriver.com> | 2013-10-04 00:26:04 -0400 |
commit | 6806482a7ba6f020b0cff44b2b797eede2b702af (patch) | |
tree | cfc7df9ca2c8e110ebe8a5b94c782c691b8f5878 | |
parent | ce230a25691dab2c8f3c7b9fc7ef37d548f8f90b (diff) | |
download | meta-cloud-services-6806482a7ba6f020b0cff44b2b797eede2b702af.tar.gz meta-cloud-services-6806482a7ba6f020b0cff44b2b797eede2b702af.tar.bz2 meta-cloud-services-6806482a7ba6f020b0cff44b2b797eede2b702af.zip |
python-nova: unify controller and compute recipes
The split of compute and controller is no longer necesary, since configuration
inheritance is done with overriding layers, not split recipes.
This simplifies the build, and packaging of the recipe. Good riddance.
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
4 files changed, 158 insertions, 269 deletions
diff --git a/meta-openstack/recipes-devtools/python/python-nova-compute_2013.1.3.bb b/meta-openstack/recipes-devtools/python/python-nova-compute_2013.1.3.bb deleted file mode 100644 index 2511b28..0000000 --- a/meta-openstack/recipes-devtools/python/python-nova-compute_2013.1.3.bb +++ /dev/null @@ -1,51 +0,0 @@ - -include python-nova.inc - -PR = "r0" - -FILESEXTRAPATHS := "${THISDIR}/${PYTHON_PN}" - -SRC_URI += "file://nova-compute \ - file://nova.conf \ - file://openrc \ - " - -inherit hosts update-rc.d - -PACKAGES = "${PN} ${SRCNAME}-compute ${SRCNAME}-compute-misc" - -do_install_append() { - if ${@base_contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then - install -d ${D}${sysconfdir}/init.d - install -m 0755 ${WORKDIR}/nova-compute ${D}${sysconfdir}/init.d/nova-compute - fi -} - -#FILES_${SRCNAME}-compute = " ${files_${SRCNAME}-compute}" -# -# the controller is built, so we package it out of the way - -#FILES_${SRCNAME}-compute-misc = "${files_${SRCNAME}-controller} -#${files_${SRCNAME}-common} ${files_${PYTHON_PN}}" - -FILES_${PN} = "${libdir}/python*" - -FILES_${SRCNAME}-compute = " \ - ${bindir}/nova-compute \ - ${sysconfdir}/${SRCNAME}/* \ - ${sysconfdir}/init.d/nova-compute" - -FILES_${SRCNAME}-compute-misc = " \ - ${bindir} \ - ${sysconfdir}/init.d/nova-all \ - ${bindir}/nova-manage \ - ${bindir}/nova-rootwrap \ - ${sysconfdir}/sudoers.d" - -RDEPENDS_${SRCNAME}-compute = "${PYTHON_PN} ${SRCNAME}-common \ - qemu libvirt libvirt-libvirtd libvirt-python libvirt-virsh" - -RCONFLICTS_${SRCNAME}-compute = "${SRCNAME}-controller" - -INITSCRIPT_PACKAGES = "${SRCNAME}-compute" -INITSCRIPT_NAME_${SRCNAME}-compute = "nova-compute" diff --git a/meta-openstack/recipes-devtools/python/python-nova-controller_2013.1.3.bb b/meta-openstack/recipes-devtools/python/python-nova-controller_2013.1.3.bb deleted file mode 100644 index c99a890..0000000 --- a/meta-openstack/recipes-devtools/python/python-nova-controller_2013.1.3.bb +++ /dev/null @@ -1,87 +0,0 @@ -include python-nova.inc - -PR = "r0" - -FILESEXTRAPATHS := "${THISDIR}/${PYTHON_PN}" - -SRC_URI += "file://nova-all \ - file://nova-consoleauth \ - file://nova-novncproxy \ - file://nova.conf \ - file://openrc \ - " - -inherit hosts update-rc.d - -PACKAGES = "${PN} ${PN}-dbg ${SRCNAME}-controller-misc ${SRCNAME}-controller" -PACKAGES += " ${SRCNAME}-consoleauth" -PACKAGES += " ${SRCNAME}-novncproxy" - -do_install_append() { - 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 -} - -pkg_postinst_${SRCNAME}-controller () { - if [ "x$D" != "x" ]; then - exit 1 - fi - - # This is to make sure postgres is configured and running - if ! pidof postmaster > /dev/null; then - sudo -u postgres initdb -D /etc/postgresql/ - /etc/init.d/postgresql start - sleep 0.2 - sudo -u postgres psql -c "CREATE ROLE ${DB_USER} WITH SUPERUSER LOGIN PASSWORD '${DB_PASSWORD}'" - fi - - sudo -u postgres createdb nova - nova-manage db sync -} - - -#FILES_${SRCNAME}-controller = "${files_${SRCNAME}-controller}" -# -# If the compute is built, so we package it out of the way - -#FILES_${SRCNAME}-controller-misc = "${files_${SRCNAME}-compute} -#${files_${SRCNAME}-common} ${files_${PYTHON_PN}}" - -FILES_${SRCNAME}-controller = " \ - ${bindir} \ - ${sysconfdir}/${SRCNAME}/* \ - ${sysconfdir}/init.d/nova-all \ -" - -FILES_${SRCNAME}-consoleauth = " \ - ${sysconfdir}/init.d/nova-consoleauth \ -" -FILES_${SRCNAME}-novncproxy = " \ - ${sysconfdir}/init.d/nova-novncproxy \ -" - -FILES_${SRCNAME}-controller-misc = " \ - ${bindir}/nova-compute \ - ${sysconfdir}/init.d/nova-compute \ - ${bindir}/nova-manage \ - ${bindir}/nova-rootwrap \ - ${sysconfdir}/sudoers.d \ - ${libdir}" - -FILES_${PN} = " \ - ${libdir}/python*/site-packages" - -RDEPENDS_${SRCNAME}-controller = "${PYTHON_PN} ${SRCNAME}-common ${SRCNAME}-consoleauth \ - ${SRCNAME}-novncproxy \ - postgresql postgresql-client python-psycopg2" - -RCONFLICTS_${SRCNAME}-controller = "${SRCNAME}-compute" - -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" diff --git a/meta-openstack/recipes-devtools/python/python-nova.inc b/meta-openstack/recipes-devtools/python/python-nova.inc deleted file mode 100644 index e520130..0000000 --- a/meta-openstack/recipes-devtools/python/python-nova.inc +++ /dev/null @@ -1,102 +0,0 @@ -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" - -DEPENDS = "sudo" - -SRCNAME = "nova" -PYTHON_PN = "python-nova" - -FILESEXTRAPATHS := "${THISDIR}/${PYTHON_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[md5sum] = "6215982b9ed08b9042e088470d60a0a6" -SRC_URI[sha256sum] = "f7c25186920daccb16867c5fd272318beb8cc076e5a55f79b5906618ef2724f4" - -S = "${WORKDIR}/${SRCNAME}-${PV}" - -inherit setuptools identity - -do_install_append() { - - if [ ! -f "${WORKDIR}/nova.conf" ]; then - return - fi - - 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 -} - -# note the lowercase "files", these variables are used in the packaging -# recipes themselves. -files_${PYTHON_PN} = "${libdir}/*" - -files_${SRCNAME}-common = " ${bindir}/nova-manage \ - ${bindir}/nova-rootwrap \ - ${sysconfdir}/sudoers.d" - -files_${SRCNAME}-compute = " ${bindir}/nova-compute \ - ${sysconfdir}/${SRCNAME}/* \ - ${sysconfdir}/init.d/nova-compute" - -files_${SRCNAME}-controller = " ${bindir}/* \ - ${sysconfdir}/${SRCNAME}/* \ - ${sysconfdir}/init.d/nova-all"
\ No newline at end of file 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 @@ -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" |