#!/usr/bin/env bash # ``upgrade-nova`` echo "*********************************************************************" echo "Begin $0" echo "*********************************************************************" # Clean up any resources that may be in use cleanup() { set +o errexit echo "*********************************************************************" echo "ERROR: Abort $0" echo "*********************************************************************" # Kill ourselves to signal any calling process trap 2; kill -2 $$ } trap cleanup SIGHUP SIGINT SIGTERM # Keep track of the grenade directory GRENADE_DIR=$(cd $(dirname "$0") && pwd) # Import common functions source $GRENADE_DIR/functions # Determine what system we are running on. This provides ``os_VENDOR``, # ``os_RELEASE``, ``os_UPDATE``, ``os_PACKAGE``, ``os_CODENAME`` # and ``DISTRO`` GetDistro # Source params source $GRENADE_DIR/grenaderc # This script exits on an error so that errors don't compound and you see # only the first error that occured. set -o errexit # Print the commands being run so that we can see the command that triggers # an error. It is also useful for following allowing as the install occurs. set -o xtrace # Set for DevStack compatibility TOP_DIR=$TARGET_DEVSTACK_DIR # Upgrade Nova # ============ # Kill running Nova processes for serv in n-api n-cauth n-cpu n-crt n-net n-novnc n-obj n-sch n-vol n-xvnc; do screen -S $SCREEN_NAME -p $serv -X kill done MYSQL_HOST=${MYSQL_HOST:-localhost} MYSQL_USER=${MYSQL_USER:-root} BASE_SQL_CONN=$(source $BASE_DEVSTACK_DIR/stackrc; echo ${BASE_SQL_CONN:-mysql://$MYSQL_USER:$MYSQL_PASSWORD@$MYSQL_HOST}) # Duplicate some setup bits from target DevStack cd $TARGET_DEVSTACK_DIR source $TARGET_DEVSTACK_DIR/stackrc DATA_DIR=${DEST}/data # From stack.sh FLOATING_RANGE=${FLOATING_RANGE:-172.24.4.224/28} FIXED_RANGE=${FIXED_RANGE:-10.0.0.0/24} HOST_IP=$(get_default_host_ip $FIXED_RANGE $FLOATING_RANGE "$HOST_IP_IFACE" "$HOST_IP") if [ "$HOST_IP" == "" ]; then die $LINENO "Could not determine host ip address. Either localrc specified dhcp on ${HOST_IP_IFACE} or defaulted" fi SERVICE_HOST=${SERVICE_HOST:-$HOST_IP} SERVICE_TENANT_NAME=${SERVICE_TENANT_NAME:-service} S3_SERVICE_PORT=${S3_SERVICE_PORT:-8080} source $TARGET_DEVSTACK_DIR/lib/database # Just do this rather than bring in all of glance GLANCE_HOSTPORT=$SERVICE_HOST:9292 SYSLOG=`trueorfalse False $SYSLOG` # Get functions from current DevStack source $TARGET_DEVSTACK_DIR/lib/rpc_backend source $TARGET_DEVSTACK_DIR/lib/nova source $TARGET_DEVSTACK_DIR/lib/baremetal source $TARGET_DEVSTACK_DIR/lib/quantum # install_quantumclient() install_quantumclient setup_quantumclient NOVNC_DIR=$DEST/noVNC # Save current config files for posterity [[ -d $SAVE_DIR/etc.nova ]] || cp -pr $NOVA_CONF_DIR $SAVE_DIR/etc.nova # install_nova() install_novaclient install_nova # configure_nova() configure_novaclient configure_nova # Create nova.conf create_nova_conf # Simulate init_nova() create_nova_cache_dir create_nova_keys_dir # Migrate the database nova-manage --config-file $NOVA_CONF db sync || die $LINENO "DB sync error" # Get stuff from stack.sh create_nova_conf_nova_network iniset $NOVA_CONF DEFAULT ec2_dmz_host "$SERVICE_HOST" iniset_rpc_backend nova $NOVA_CONF DEFAULT iniset $NOVA_CONF DEFAULT glance_api_servers "$GLANCE_HOSTPORT" # Need to set the default compute driver iniset $NOVA_CONF DEFAULT compute_driver libvirt.LibvirtDriver LIBVIRT_FIREWALL_DRIVER=${LIBVIRT_FIREWALL_DRIVER:-"nova.virt.libvirt.firewall.IptablesFirewallDriver"} iniset $NOVA_CONF DEFAULT firewall_driver "$LIBVIRT_FIREWALL_DRIVER" # Start Nova start_nova_api start_nova set +o xtrace echo "*********************************************************************" echo "SUCCESS: End $0" echo "*********************************************************************"