#!/bin/bash # # Copyright (c) 2011 Citrix Systems, Inc. # Copyright 2011 OpenStack LLC. # 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. # remove_data= if [ "$1" = "--remove-data" ] then remove_data=1 fi set -eu xe_min() { local cmd="$1" shift /opt/xensource/bin/xe "$cmd" --minimal "$@" } destroy_vdi() { local vbd_uuid="$1" local type=$(xe_min vbd-list uuid=$vbd_uuid params=type) local dev=$(xe_min vbd-list uuid=$vbd_uuid params=userdevice) local vdi_uuid=$(xe_min vbd-list uuid=$vbd_uuid params=vdi-uuid) if [ "$type" = 'Disk' ] && [ "$dev" != 'xvda' ] && [ "$dev" != '0' ] then echo -n "Destroying data disk... " xe vdi-destroy uuid=$vdi_uuid echo "done." fi } uninstall() { local vm_uuid="$1" local power_state=$(xe_min vm-list uuid=$vm_uuid params=power-state) if [ "$power_state" != "halted" ] then echo -n "Shutting down VM... " xe vm-shutdown vm=$vm_uuid force=true echo "done." fi if [ "$remove_data" = "1" ] then for v in $(xe_min vbd-list vm-uuid=$vm_uuid | sed -e 's/,/ /g') do destroy_vdi "$v" done fi echo -n "Deleting VM... " xe vm-uninstall vm=$vm_uuid force=true >/dev/null echo "done." } uninstall_template() { local vm_uuid="$1" if [ "$remove_data" = "1" ] then for v in $(xe_min vbd-list vm-uuid=$vm_uuid | sed -e 's/,/ /g') do destroy_vdi "$v" done fi echo -n "Deleting template... " xe template-uninstall template-uuid=$vm_uuid force=true >/dev/null echo "done." } for u in $(xe_min vm-list other-config:os-vpx=true | sed -e 's/,/ /g') do uninstall "$u" done for u in $(xe_min template-list other-config:os-vpx=true | sed -e 's/,/ /g') do uninstall_template "$u" done