diff options
| author | Bruce Ashfield <bruce.ashfield@windriver.com> | 2013-10-03 00:20:31 -0400 |
|---|---|---|
| committer | Bruce Ashfield <bruce.ashfield@windriver.com> | 2013-10-03 01:16:44 -0400 |
| commit | b625b4c4c3d299e3830951304f468a5399828b51 (patch) | |
| tree | ca62e1ff521cb2be4849930a52dd735d779c6b1b | |
| parent | 718ecf27999c69acae27992123d2a7fe85d64c77 (diff) | |
| download | meta-cloud-services-b625b4c4c3d299e3830951304f468a5399828b51.tar.gz | |
nova: add novnc console proxy support
With this commit the appropriate daemons are started on a control node boot to
support horizon console access via the novnc proxy.
Additionally, the proper nova configuration is set for boh the control and
compute nodes for out of the box console connectivity between the compute,
control and horizone interface.
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
5 files changed, 173 insertions, 6 deletions
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 index 36b5ba3..c99a890 100644 --- 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 | |||
| @@ -5,19 +5,24 @@ PR = "r0" | |||
| 5 | FILESEXTRAPATHS := "${THISDIR}/${PYTHON_PN}" | 5 | FILESEXTRAPATHS := "${THISDIR}/${PYTHON_PN}" |
| 6 | 6 | ||
| 7 | SRC_URI += "file://nova-all \ | 7 | SRC_URI += "file://nova-all \ |
| 8 | file://nova-consoleauth \ | ||
| 9 | file://nova-novncproxy \ | ||
| 8 | file://nova.conf \ | 10 | file://nova.conf \ |
| 9 | file://openrc \ | 11 | file://openrc \ |
| 10 | " | 12 | " |
| 11 | 13 | ||
| 12 | inherit hosts update-rc.d | 14 | inherit hosts update-rc.d |
| 13 | 15 | ||
| 14 | #PACKAGES = "${SRCNAME}-controller ${SRCNAME}-controller-misc" | ||
| 15 | PACKAGES = "${PN} ${PN}-dbg ${SRCNAME}-controller-misc ${SRCNAME}-controller" | 16 | PACKAGES = "${PN} ${PN}-dbg ${SRCNAME}-controller-misc ${SRCNAME}-controller" |
| 17 | PACKAGES += " ${SRCNAME}-consoleauth" | ||
| 18 | PACKAGES += " ${SRCNAME}-novncproxy" | ||
| 16 | 19 | ||
| 17 | do_install_append() { | 20 | do_install_append() { |
| 18 | if ${@base_contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then | 21 | if ${@base_contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then |
| 19 | install -d ${D}${sysconfdir}/init.d | 22 | install -d ${D}${sysconfdir}/init.d |
| 20 | install -m 0755 ${WORKDIR}/nova-all ${D}${sysconfdir}/init.d/nova-all | 23 | install -m 0755 ${WORKDIR}/nova-all ${D}${sysconfdir}/init.d/nova-all |
| 24 | install -m 0755 ${WORKDIR}/nova-consoleauth ${D}${sysconfdir}/init.d/nova-consoleauth | ||
| 25 | install -m 0755 ${WORKDIR}/nova-novncproxy ${D}${sysconfdir}/init.d/nova-novncproxy | ||
| 21 | fi | 26 | fi |
| 22 | } | 27 | } |
| 23 | 28 | ||
| @@ -49,7 +54,15 @@ pkg_postinst_${SRCNAME}-controller () { | |||
| 49 | FILES_${SRCNAME}-controller = " \ | 54 | FILES_${SRCNAME}-controller = " \ |
| 50 | ${bindir} \ | 55 | ${bindir} \ |
| 51 | ${sysconfdir}/${SRCNAME}/* \ | 56 | ${sysconfdir}/${SRCNAME}/* \ |
| 52 | ${sysconfdir}/init.d/nova-all" | 57 | ${sysconfdir}/init.d/nova-all \ |
| 58 | " | ||
| 59 | |||
| 60 | FILES_${SRCNAME}-consoleauth = " \ | ||
| 61 | ${sysconfdir}/init.d/nova-consoleauth \ | ||
| 62 | " | ||
| 63 | FILES_${SRCNAME}-novncproxy = " \ | ||
| 64 | ${sysconfdir}/init.d/nova-novncproxy \ | ||
| 65 | " | ||
| 53 | 66 | ||
| 54 | FILES_${SRCNAME}-controller-misc = " \ | 67 | FILES_${SRCNAME}-controller-misc = " \ |
| 55 | ${bindir}/nova-compute \ | 68 | ${bindir}/nova-compute \ |
| @@ -62,10 +75,13 @@ FILES_${SRCNAME}-controller-misc = " \ | |||
| 62 | FILES_${PN} = " \ | 75 | FILES_${PN} = " \ |
| 63 | ${libdir}/python*/site-packages" | 76 | ${libdir}/python*/site-packages" |
| 64 | 77 | ||
| 65 | RDEPENDS_${SRCNAME}-controller = "${PYTHON_PN} ${SRCNAME}-common \ | 78 | RDEPENDS_${SRCNAME}-controller = "${PYTHON_PN} ${SRCNAME}-common ${SRCNAME}-consoleauth \ |
| 79 | ${SRCNAME}-novncproxy \ | ||
| 66 | postgresql postgresql-client python-psycopg2" | 80 | postgresql postgresql-client python-psycopg2" |
| 67 | 81 | ||
| 68 | RCONFLICTS_${SRCNAME}-controller = "${SRCNAME}-compute" | 82 | RCONFLICTS_${SRCNAME}-controller = "${SRCNAME}-compute" |
| 69 | 83 | ||
| 70 | INITSCRIPT_PACKAGES = "${SRCNAME}-controller" | 84 | INITSCRIPT_PACKAGES = "${SRCNAME}-controller ${SRCNAME}-consoleauth ${SRCNAME}-novncproxy" |
| 71 | INITSCRIPT_NAME_${SRCNAME}-controller = "nova-all" | 85 | INITSCRIPT_NAME_${SRCNAME}-controller = "nova-all" |
| 86 | INITSCRIPT_NAME_${SRCNAME}-consoleauth = "nova-consoleauth" | ||
| 87 | 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 index 01483e7..e520130 100644 --- a/meta-openstack/recipes-devtools/python/python-nova.inc +++ b/meta-openstack/recipes-devtools/python/python-nova.inc | |||
| @@ -68,6 +68,9 @@ do_install_append() { | |||
| 68 | sed -e "s:%CONTROLLER_IP%:${CONTROLLER_IP}:g" -i ${WORKDIR}/nova.conf | 68 | sed -e "s:%CONTROLLER_IP%:${CONTROLLER_IP}:g" -i ${WORKDIR}/nova.conf |
| 69 | sed -e "s:%CONTROLLER_HOST%:${CONTROLLER_HOST}:g" -i ${WORKDIR}/nova.conf | 69 | sed -e "s:%CONTROLLER_HOST%:${CONTROLLER_HOST}:g" -i ${WORKDIR}/nova.conf |
| 70 | 70 | ||
| 71 | sed -e "s:%COMPUTE_IP%:${COMPUTE_IP}:g" -i ${WORKDIR}/nova.conf | ||
| 72 | sed -e "s:%COMPUTE_HOST%:${COMPUTE_HOST}:g" -i ${WORKDIR}/nova.conf | ||
| 73 | |||
| 71 | sed -e "s:%OS_PASSWORD%:${ADMIN_PASSWORD}:g" -i ${WORKDIR}/openrc | 74 | sed -e "s:%OS_PASSWORD%:${ADMIN_PASSWORD}:g" -i ${WORKDIR}/openrc |
| 72 | sed -e "s:%SERVICE_TOKEN%:${SERVICE_TOKEN}:g" -i ${WORKDIR}/openrc | 75 | sed -e "s:%SERVICE_TOKEN%:${SERVICE_TOKEN}:g" -i ${WORKDIR}/openrc |
| 73 | 76 | ||
diff --git a/meta-openstack/recipes-devtools/python/python-nova/nova-consoleauth b/meta-openstack/recipes-devtools/python/python-nova/nova-consoleauth new file mode 100644 index 0000000..13ad285 --- /dev/null +++ b/meta-openstack/recipes-devtools/python/python-nova/nova-consoleauth | |||
| @@ -0,0 +1,75 @@ | |||
| 1 | #! /bin/sh | ||
| 2 | ### BEGIN INIT INFO | ||
| 3 | # Provides: nova-consoleauth | ||
| 4 | # Required-Start: $remote_fs $syslog | ||
| 5 | # Required-Stop: $remote_fs $syslog | ||
| 6 | # Should-Start: libvirt-bin | ||
| 7 | # Should-Stop: libvirt-bin | ||
| 8 | # Default-Start: 2 3 4 5 | ||
| 9 | # Default-Stop: 0 1 6 | ||
| 10 | # Short-Description: nova-consoleauth service | ||
| 11 | # Description: Provides console services for the openstack | ||
| 12 | # cloud computing system | ||
| 13 | ### END INIT INFO | ||
| 14 | |||
| 15 | |||
| 16 | set -e | ||
| 17 | |||
| 18 | DAEMON=/usr/bin/nova-consoleauth | ||
| 19 | DAEMON_ARGS="" | ||
| 20 | PIDFILE=/var/run/nova/nova-consoleauth.pid | ||
| 21 | |||
| 22 | ENABLED=true | ||
| 23 | |||
| 24 | if test -f /etc/default/nova-consoleauth; then | ||
| 25 | . /etc/default/nova-consoleauth | ||
| 26 | fi | ||
| 27 | |||
| 28 | mkdir -p /var/run/nova | ||
| 29 | chown nova:root /var/run/nova/ | ||
| 30 | |||
| 31 | mkdir -p /var/lock/nova | ||
| 32 | chown nova:root /var/lock/nova/ | ||
| 33 | |||
| 34 | #uid="$(getent passwd nova | cut -f3 -d:)" | ||
| 35 | #gid="$(getent passwd nova | cut -f4 -d:)" | ||
| 36 | |||
| 37 | . /lib/lsb/init-functions | ||
| 38 | |||
| 39 | export PATH="${PATH:+$PATH:}/usr/sbin:/sbin" | ||
| 40 | export TMPDIR=/var/lib/nova/tmp | ||
| 41 | |||
| 42 | if ! [ -x ${DAEMON} ] ; then | ||
| 43 | exit 0 | ||
| 44 | fi | ||
| 45 | |||
| 46 | case "$1" in | ||
| 47 | start) | ||
| 48 | test "$ENABLED" = "true" || exit 0 | ||
| 49 | echo "Starting nova console" "nova-consoleauth" | ||
| 50 | start-stop-daemon --start -b -m --pidfile $PIDFILE --exec ${DAEMON} -- ${DAEMON_ARGS} | ||
| 51 | log_end_msg $? | ||
| 52 | ;; | ||
| 53 | stop) | ||
| 54 | test "$ENABLED" = "true" || exit 0 | ||
| 55 | echo "Stopping nova console" "nova-consoleauth" | ||
| 56 | start-stop-daemon --stop --oknodo --pidfile ${PIDFILE} | ||
| 57 | log_end_msg $? | ||
| 58 | ;; | ||
| 59 | restart|force-reload) | ||
| 60 | test "$ENABLED" = "true" || exit 1 | ||
| 61 | $0 stop | ||
| 62 | sleep 1 | ||
| 63 | $0 start | ||
| 64 | ;; | ||
| 65 | status) | ||
| 66 | test "$ENABLED" = "true" || exit 0 | ||
| 67 | status_of_proc -p $PIDFILE $DAEMON nova-consoleauth && exit 0 || exit $? | ||
| 68 | ;; | ||
| 69 | *) | ||
| 70 | echo "Usage: /etc/init.d/nova-consoleauth {start|stop|restart|force-reload|status}" | ||
| 71 | exit 1 | ||
| 72 | ;; | ||
| 73 | esac | ||
| 74 | |||
| 75 | exit 0 | ||
diff --git a/meta-openstack/recipes-devtools/python/python-nova/nova-novncproxy b/meta-openstack/recipes-devtools/python/python-nova/nova-novncproxy new file mode 100644 index 0000000..76cd1df --- /dev/null +++ b/meta-openstack/recipes-devtools/python/python-nova/nova-novncproxy | |||
| @@ -0,0 +1,72 @@ | |||
| 1 | #! /bin/sh | ||
| 2 | ### BEGIN INIT INFO | ||
| 3 | # Provides: nova-novncproxy | ||
| 4 | # Required-Start: $remote_fs $syslog | ||
| 5 | # Required-Stop: $remote_fs $syslog | ||
| 6 | # Should-Start: libvirt-bin | ||
| 7 | # Should-Stop: libvirt-bin | ||
| 8 | # Default-Start: 2 3 4 5 | ||
| 9 | # Default-Stop: 0 1 6 | ||
| 10 | # Short-Description: nova-novncproxy service | ||
| 11 | # Description: Provides vnc proxy services for the openstack | ||
| 12 | # cloud computing system | ||
| 13 | ### END INIT INFO | ||
| 14 | |||
| 15 | |||
| 16 | set -e | ||
| 17 | |||
| 18 | DAEMON=/usr/bin/nova-novncproxy | ||
| 19 | DAEMON_ARGS="" | ||
| 20 | PIDFILE=/var/run/nova/nova-novncproxy.pid | ||
| 21 | |||
| 22 | ENABLED=true | ||
| 23 | |||
| 24 | if test -f /etc/default/nova-novncproxy; then | ||
| 25 | . /etc/default/nova-novncproxy | ||
| 26 | fi | ||
| 27 | |||
| 28 | mkdir -p /var/run/nova | ||
| 29 | chown nova:root /var/run/nova/ | ||
| 30 | |||
| 31 | mkdir -p /var/lock/nova | ||
| 32 | chown nova:root /var/lock/nova/ | ||
| 33 | |||
| 34 | . /lib/lsb/init-functions | ||
| 35 | |||
| 36 | export PATH="${PATH:+$PATH:}/usr/sbin:/sbin" | ||
| 37 | export TMPDIR=/var/lib/nova/tmp | ||
| 38 | |||
| 39 | if ! [ -x ${DAEMON} ] ; then | ||
| 40 | exit 0 | ||
| 41 | fi | ||
| 42 | |||
| 43 | case "$1" in | ||
| 44 | start) | ||
| 45 | test "$ENABLED" = "true" || exit 0 | ||
| 46 | echo "Starting nova vnc proxy" "nova-novncproxy" | ||
| 47 | start-stop-daemon --start -b -m --pidfile $PIDFILE --exec ${DAEMON} -- ${DAEMON_ARGS} | ||
| 48 | log_end_msg $? | ||
| 49 | ;; | ||
| 50 | stop) | ||
| 51 | test "$ENABLED" = "true" || exit 0 | ||
| 52 | echo "Stopping nova vnc proxy" "nova-novncproxy" | ||
| 53 | start-stop-daemon --stop --oknodo --pidfile ${PIDFILE} | ||
| 54 | log_end_msg $? | ||
| 55 | ;; | ||
| 56 | restart|force-reload) | ||
| 57 | test "$ENABLED" = "true" || exit 1 | ||
| 58 | $0 stop | ||
| 59 | sleep 1 | ||
| 60 | $0 start | ||
| 61 | ;; | ||
| 62 | status) | ||
| 63 | test "$ENABLED" = "true" || exit 0 | ||
| 64 | status_of_proc -p $PIDFILE $DAEMON nova-novncproxy && exit 0 || exit $? | ||
| 65 | ;; | ||
| 66 | *) | ||
| 67 | echo "Usage: /etc/init.d/nova-novncproxy {start|stop|restart|force-reload|status}" | ||
| 68 | exit 1 | ||
| 69 | ;; | ||
| 70 | esac | ||
| 71 | |||
| 72 | exit 0 | ||
diff --git a/meta-openstack/recipes-devtools/python/python-nova/nova.conf b/meta-openstack/recipes-devtools/python/python-nova/nova.conf index 695f084..20db54d 100644 --- a/meta-openstack/recipes-devtools/python/python-nova/nova.conf +++ b/meta-openstack/recipes-devtools/python/python-nova/nova.conf | |||
| @@ -22,7 +22,9 @@ glance_host = %CONTROLLER_IP% | |||
| 22 | 22 | ||
| 23 | #VNC | 23 | #VNC |
| 24 | vnc_enabled = true | 24 | vnc_enabled = true |
| 25 | vncserver_listen = 0.0.0.0 | 25 | vncserver_listen = %COMPUTE_IP% |
| 26 | novncproxy_base_url=http://%CONTROLLER_IP%:6080/vnc_auto.html | ||
| 27 | vncserver_proxyclient_address=%COMPUTE_IP% | ||
| 26 | 28 | ||
| 27 | #Network | 29 | #Network |
| 28 | flat_interface = eth0 | 30 | flat_interface = eth0 |
| @@ -35,7 +37,6 @@ force_dhcp_release=False | |||
| 35 | dhcpbridge=/usr/bin/nova-dhcpbridge | 37 | dhcpbridge=/usr/bin/nova-dhcpbridge |
| 36 | 38 | ||
| 37 | #Database configuration | 39 | #Database configuration |
| 38 | # sql_connection = postgresql://%DB_USER%:%DB_PASSWORD%@localhost/nova | ||
| 39 | sql_connection = postgresql://%DB_USER%:%DB_PASSWORD%@%CONTROLLER_IP%/nova | 40 | sql_connection = postgresql://%DB_USER%:%DB_PASSWORD%@%CONTROLLER_IP%/nova |
| 40 | 41 | ||
| 41 | #RabbitMQ configuration | 42 | #RabbitMQ configuration |
