From f94168443997b3123677689cd3028d6abd85cc47 Mon Sep 17 00:00:00 2001 From: Mate Lakat Date: Fri, 26 Sep 2014 14:47:15 +0200 Subject: [PATCH] XenServer: Add XenServer support Upstreaming several changes from XenServer CI: - Use tty0 as console - thus the user can see what's happening during installation over VNC console. - Set the number of VCPUs to 6 for the DomU appliance - Add prepare_node_xenserver.sh script. - Use testing xva 1.1.4 which has trusty. Change-Id: I56fc4e1af12f3f13fd1aa0b772bd8734b412d3d5 --- nodepool/scripts/convert_node_to_xenserver.sh | 21 +++++++-- nodepool/scripts/install_xenserver.sh | 2 +- nodepool/scripts/prepare_node_xenserver.sh | 44 +++++++++++++++++++ 3 files changed, 63 insertions(+), 4 deletions(-) create mode 100755 nodepool/scripts/prepare_node_xenserver.sh diff --git a/nodepool/scripts/convert_node_to_xenserver.sh b/nodepool/scripts/convert_node_to_xenserver.sh index 5a39d5e678..20dc2af9e1 100755 --- a/nodepool/scripts/convert_node_to_xenserver.sh +++ b/nodepool/scripts/convert_node_to_xenserver.sh @@ -312,7 +312,7 @@ function generate_xs_installer_grub_config() { exec tail -n +3 \$0 menuentry 'XenServer installer' { multiboot $bootfiles/xen.gz dom0_max_vcpus=1-2 dom0_mem=max:752M com1=115200,8n1 console=com1,vga - module $bootfiles/vmlinuz xencons=hvc console=tty0 console=hvc0 make-ramdisk=/dev/sda1 answerfile=$answerfile install + module $bootfiles/vmlinuz xencons=hvc console=tty0 make-ramdisk=/dev/sda1 answerfile=$answerfile install module $bootfiles/install.img } EOF @@ -403,7 +403,9 @@ function start_ubuntu_on_next_boot() { bootfiles="$1" - sed -ie 's,default xe-serial,default ubuntu,g' $bootfiles/extlinux.conf + sed -ie 's,default xe,default ubuntu,g' $bootfiles/extlinux.conf + + log_extlinux $bootfiles/extlinux.conf } function start_xenserver_on_next_boot() { @@ -411,7 +413,18 @@ function start_xenserver_on_next_boot() { bootfiles="$1" - sed -ie 's,default ubuntu,default xe-serial,g' $bootfiles/extlinux.conf + sed -ie 's,default ubuntu,default xe,g' $bootfiles/extlinux.conf + + log_extlinux $bootfiles/extlinux.conf +} + +function log_extlinux() { + local extlinux_conf + + extlinux_conf="$1" + + echo "ACTUAL STATE OF EXTLINUX IS" + cat $extlinux_conf } function mount_dom0_fs() { @@ -474,6 +487,8 @@ function configure_networking() { if [ -z "$VM" ]; then VM=$(xe vm-import filename=/mnt/ubuntu/root/staging_vm.xva) xe vm-param-set name-label="$APPLIANCE_NAME" uuid=$VM + xe vm-param-set VCPUs-max=6 uuid=$VM + xe vm-param-set VCPUs-at-startup=6 uuid=$VM APP_IMPORTED_NOW="true" fi DNS_ADDRESSES=$(echo "$NAMESERVERS" | sed -e "s/,/ /g") diff --git a/nodepool/scripts/install_xenserver.sh b/nodepool/scripts/install_xenserver.sh index 1e1b32d9eb..9d8c7adfec 100755 --- a/nodepool/scripts/install_xenserver.sh +++ b/nodepool/scripts/install_xenserver.sh @@ -19,5 +19,5 @@ ./convert_node_to_xenserver.sh \ password \ - http://downloads.vmd.citrix.com/OpenStack/xenapi-in-the-cloud-appliances/1.0.1.xva \ + http://downloads.vmd.citrix.com/OpenStack/xenapi-in-the-cloud-appliances/1.1.4.xva \ devstack diff --git a/nodepool/scripts/prepare_node_xenserver.sh b/nodepool/scripts/prepare_node_xenserver.sh new file mode 100755 index 0000000000..1fc89050e2 --- /dev/null +++ b/nodepool/scripts/prepare_node_xenserver.sh @@ -0,0 +1,44 @@ +#!/bin/bash -xe + +# Copyright (C) 2011-2013 OpenStack Foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. +# +# See the License for the specific language governing permissions and +# limitations under the License. + + +HOSTNAME=$1 + +function tsfilter { + $@ 2>&1 | awk ' + { + cmd ="date +\"%Y-%m-%d %H:%M:%S.%3N | \"" + cmd | getline now + close("date +\"%Y-%m-%d %H:%M:%S.%3N | \"") + sub(/^/, now) + print + fflush() + }' +} + +set -o pipefail +tsfilter ./prepare_node_devstack.sh "$HOSTNAME" + +# After the node has been prepared, the hypervisor needs to be halted to make +# sure that the filesystem is in a consistent state. +sudo -u domzero \ + ssh \ + -o StrictHostKeyChecking=no \ + -o UserKnownHostsFile=/dev/null \ + root@192.168.33.2 \ + halt -p