| #!/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 |