#!/usr/bin/env bash # vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright 2010 United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All Rights Reserved. # # 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. INSTANCES_PATH=${INSTANCES_PATH:-/var/lib/nova/instances} if [ -z "$1" ]; then echo "specify an instance id to debug"; exit; fi if [ -n "$3" ]; then DEVICE=$3; fi CMD="all" if [ -n "$2" ]; then CMD=$2; fi cd $INSTANCES_PATH/$1 if [ $CMD != "umount" ] && [ $CMD != "launch" ]; then # destroy the instance virsh destroy $1 virsh undefine $1 # mount the filesystem mkdir t DEVICE=/dev/nbd0 echo $DEVICE qemu-nbd -c $DEVICE disk sleep 3 mount $DEVICE t fi if [ $CMD != "mount" ] && [ $CMD != "umount" ]; then # make serial console listen on ttyS0 cat >t/etc/init/ttyS0.conf < debug.xml sed -i "s/.*<\/serial>/<\/serial>/g" debug.xml umount t virsh define debug.xml virsh start $1 virsh console $1 virsh destroy $1 virsh undefine $1 mount $DEVICE t # clear debug root password chroot t passwd -l root # remove the serial console conf rm -f t/etc/init/ttyS0.conf fi if [ $CMD != "mount" ] && [ $CMD != "launch" ]; then # unmount the filesystem umount t qemu-nbd -d $DEVICE rmdir t # recreate the instance virsh define libvirt.xml virsh start $1 fi