From 6423ced4885488dbe8cc05249d7d16cbcfe750c2 Mon Sep 17 00:00:00 2001 From: Amy Fong Date: Thu, 20 Mar 2014 15:46:59 -0400 Subject: OpenStack: add SPICE console support Package spice-html5 Modify python-nova to add infrastructure for nova-spicehtml5proxy support. Note: spice is the default Signed-off-by: Amy Fong Signed-off-by: Bruce Ashfield --- .../python/python-nova/nova-consoleproxy | 7 ++ .../python/python-nova/nova-novncproxy | 13 +++- .../python/python-nova/nova-spicehtml5proxy | 91 ++++++++++++++++++++++ .../recipes-devtools/python/python-nova/nova.conf | 10 ++- .../recipes-devtools/python/python-nova_git.bb | 16 +++- 5 files changed, 133 insertions(+), 4 deletions(-) create mode 100644 meta-openstack/recipes-devtools/python/python-nova/nova-consoleproxy create mode 100644 meta-openstack/recipes-devtools/python/python-nova/nova-spicehtml5proxy (limited to 'meta-openstack/recipes-devtools/python') diff --git a/meta-openstack/recipes-devtools/python/python-nova/nova-consoleproxy b/meta-openstack/recipes-devtools/python/python-nova/nova-consoleproxy new file mode 100644 index 0000000..12aa2b2 --- /dev/null +++ b/meta-openstack/recipes-devtools/python/python-nova/nova-consoleproxy @@ -0,0 +1,7 @@ +# The below switch enables you to select which type of console proxy daemon you +# wish to start at boot time. Possible values are: +# - spicehtml5 +# - xenvnc +# - novnc + +NOVA_CONSOLE_PROXY_TYPE=spicehtml5 diff --git a/meta-openstack/recipes-devtools/python/python-nova/nova-novncproxy b/meta-openstack/recipes-devtools/python/python-nova/nova-novncproxy index c976194..f2b2f22 100644 --- a/meta-openstack/recipes-devtools/python/python-nova/nova-novncproxy +++ b/meta-openstack/recipes-devtools/python/python-nova/nova-novncproxy @@ -21,8 +21,17 @@ PIDFILE=/var/run/nova/nova-novncproxy.pid ENABLED=true -if test -f /etc/default/nova-novncproxy; then - . /etc/default/nova-novncproxy +if test -f /etc/default/nova-consoleproxy; then + . /etc/default/nova-consoleproxy +fi + +# default to novnc +if [ -z "${NOVA_CONSOLE_PROXY_TYPE}" ] ; then + NOVA_CONSOLE_PROXY_TYPE="novnc" +fi + +if ! [ "${NOVA_CONSOLE_PROXY_TYPE}" = "novnc" ] ; then + exit 0 fi mkdir -p /var/run/nova diff --git a/meta-openstack/recipes-devtools/python/python-nova/nova-spicehtml5proxy b/meta-openstack/recipes-devtools/python/python-nova/nova-spicehtml5proxy new file mode 100644 index 0000000..d58f71e --- /dev/null +++ b/meta-openstack/recipes-devtools/python/python-nova/nova-spicehtml5proxy @@ -0,0 +1,91 @@ +#! /bin/sh +### BEGIN INIT INFO +# Provides: nova-spicehtml5proxy +# Required-Start: $remote_fs $syslog +# Required-Stop: $remote_fs $syslog +# Should-Start: libvirt-bin +# Should-Stop: libvirt-bin +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: nova-spicehtml5proxy service +# Description: Provides spice html5 proxy services for the openstack +# cloud computing system +### END INIT INFO + + +set -e + +NAME=nova-spicehtml5proxy +DESC="OpenStack Compute Spice HTML5 Proxy" +SCRIPTNAME=/etc/init.d/$NAME +DAEMON=/usr/bin/nova-spicehtml5proxy +DAEMON_ARGS="" +PIDFILE=/var/run/nova/$NAME.pid + +ENABLED=true + +if test -f /etc/default/nova-consoleproxy; then + . /etc/default/nova-consoleproxy +fi + +if ! [ "${NOVA_CONSOLE_PROXY_TYPE}" = "spicehtml5" ] ; then + exit 0 +fi + +mkdir -p /var/run/nova +chown nova:root /var/run/nova/ + +mkdir -p /var/lock/nova +chown nova:root /var/lock/nova/ + +. /lib/lsb/init-functions + +export PATH="${PATH:+$PATH:}/usr/sbin:/sbin" +export TMPDIR=/var/lib/nova/tmp + +if ! [ -x ${DAEMON} ] ; then + exit 0 +fi + +status() +{ + pid=`cat $PIDFILE 2>/dev/null` + if [ -n "$pid" ]; then + if ps -p $pid >&- ; then + echo "$DESC is running" + return + fi + fi + echo "$DESC is not running" +} + +case "$1" in + start) + test "$ENABLED" = "true" || exit 0 + echo "Starting $DESC" "$NAME" + start-stop-daemon --start -b -m --pidfile $PIDFILE --exec ${DAEMON} -- ${DAEMON_ARGS} + log_end_msg $? + ;; + stop) + test "$ENABLED" = "true" || exit 0 + echo "Stopping $DESC" "$NAME" + start-stop-daemon --stop --oknodo --pidfile ${PIDFILE} + log_end_msg $? + ;; + restart|force-reload|reload) + test "$ENABLED" = "true" || exit 1 + $0 stop + sleep 1 + $0 start + ;; + status) + test "$ENABLED" = "true" || exit 0 + status + ;; + *) + echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload|status|reload|status}" + exit 1 + ;; +esac + +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 8aaf41a..42dc47a 100644 --- a/meta-openstack/recipes-devtools/python/python-nova/nova.conf +++ b/meta-openstack/recipes-devtools/python/python-nova/nova.conf @@ -24,7 +24,7 @@ state_path=/var/run/nova/ libvirt_images_type = %LIBVIRT_IMAGES_TYPE% #VNC -vnc_enabled = true +vnc_enabled = false vncserver_listen = %COMPUTE_IP% novncproxy_base_url=http://%CONTROLLER_IP%:6080/vnc_auto.html vncserver_proxyclient_address=%COMPUTE_IP% @@ -68,3 +68,11 @@ libvirt_images_rbd_pool=cinder-volumes libvirt_images_rbd_ceph_conf=/etc/ceph/ceph.conf rbd_user=cinder-volume #rbd_secret_uuid= + +[spice] +agent_enabled=True +enabled=True +html5proxy_base_url=http://%CONTROLLER_IP%:6082/spice_auto.html +keymap=en-us +server_listen=%COMPUTE_IP% +server_proxyclient_address=%COMPUTE_IP% diff --git a/meta-openstack/recipes-devtools/python/python-nova_git.bb b/meta-openstack/recipes-devtools/python/python-nova_git.bb index 523102a..427c167 100644 --- a/meta-openstack/recipes-devtools/python/python-nova_git.bb +++ b/meta-openstack/recipes-devtools/python/python-nova_git.bb @@ -22,8 +22,10 @@ SRC_URI += "file://nova-all \ file://nova.init \ file://nova-consoleauth \ file://nova-novncproxy \ + file://nova-spicehtml5proxy \ file://nova.conf \ file://openrc \ + file://nova-consoleproxy \ " SRCREV="afc9e4e23327fb566e8ade2c0c06c90d369c9e29" PV="2013.2.2+git${SRCPV}" @@ -108,6 +110,7 @@ do_install_append() { 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 + install -m 0755 ${WORKDIR}/nova-spicehtml5proxy ${D}${sysconfdir}/init.d/nova-spicehtml5proxy for binary in api compute network scheduler cert conductor; do sed "s:@suffix@:$binary:" < ${WORKDIR}/nova.init >${WORKDIR}/nova-$binary.init.sh @@ -116,6 +119,8 @@ do_install_append() { fi cp run_tests.sh ${NOVA_CONF_DIR} + + install -D -o nova -m 664 ${WORKDIR}/nova-consoleproxy ${D}${sysconfdir}/default/nova-consoleproxy } pkg_postinst_${SRCNAME}-setup () { @@ -156,6 +161,7 @@ PACKAGES += " ${SRCNAME}-tests" PACKAGES += " ${SRCNAME}-setup ${SRCNAME}-common ${SRCNAME}-compute ${SRCNAME}-controller" PACKAGES += " ${SRCNAME}-consoleauth" PACKAGES += " ${SRCNAME}-novncproxy" +PACKAGES += " ${SRCNAME}-spicehtml5proxy" PACKAGES += " ${SRCNAME}-network" PACKAGES += " ${SRCNAME}-scheduler" PACKAGES += " ${SRCNAME}-cert" @@ -185,6 +191,10 @@ FILES_${SRCNAME}-consoleauth = " \ FILES_${SRCNAME}-novncproxy = " \ ${sysconfdir}/init.d/nova-novncproxy \ " +FILES_${SRCNAME}-spicehtml5proxy = " \ + ${sysconfdir}/init.d/nova-spicehtml5proxy \ + ${sysconfdir}/default/nova-consoleproxy \ +" FILES_${SRCNAME}-network = " \ ${sysconfdir}/init.d/nova-network \ " @@ -245,6 +255,7 @@ RDEPENDS_${PN} = " libvirt \ python-webob \ python-websockify \ python-pbr \ + spice-html5 \ " RDEPENDS_${SRCNAME}-common = "${PN} openssl openssl-misc libxml2 libxslt \ @@ -253,6 +264,7 @@ RDEPENDS_${SRCNAME}-common = "${PN} openssl openssl-misc libxml2 libxslt \ RDEPENDS_${SRCNAME}-controller = "${PN} ${SRCNAME}-common \ ${SRCNAME}-consoleauth \ ${SRCNAME}-novncproxy \ + ${SRCNAME}-spicehtml5proxy \ ${SRCNAME}-network \ ${SRCNAME}-scheduler \ ${SRCNAME}-cert \ @@ -264,7 +276,7 @@ RDEPENDS_${SRCNAME}-compute = "${PN} ${SRCNAME}-common \ qemu libvirt libvirt-libvirtd libvirt-python libvirt-virsh" RDEPENDS_${SRCNAME}-setup = "postgresql sudo ${SRCNAME}-common" -INITSCRIPT_PACKAGES = "${SRCNAME}-compute ${SRCNAME}-consoleauth ${SRCNAME}-novncproxy" +INITSCRIPT_PACKAGES = "${SRCNAME}-compute ${SRCNAME}-consoleauth ${SRCNAME}-novncproxy ${SRCNAME}-spicehtml5proxy" INITSCRIPT_PACKAGES += "${SRCNAME}-network ${SRCNAME}-scheduler ${SRCNAME}-cert ${SRCNAME}-conductor" INITSCRIPT_PACKAGES += "${SRCNAME}-api" @@ -291,3 +303,5 @@ INITSCRIPT_PARAMS_${SRCNAME}-consoleauth = "${OS_DEFAULT_INITSCRIPT_PARAMS}" INITSCRIPT_NAME_${SRCNAME}-novncproxy = "nova-novncproxy" INITSCRIPT_PARAMS_${SRCNAME}-novncproxy = "${OS_DEFAULT_INITSCRIPT_PARAMS}" +INITSCRIPT_NAME_${SRCNAME}-spicehtml5proxy = "nova-spicehtml5proxy" +INITSCRIPT_PARAMS_${SRCNAME}-spicehtml5proxy = "${OS_DEFAULT_INITSCRIPT_PARAMS}" -- cgit v1.2.3-54-g00ecf