diff --git a/tools/xen/scripts/uninstall-os-vpx.sh b/tools/xen/scripts/uninstall-os-vpx.sh
new file mode 100755
index 0000000..7c1cd41
--- /dev/null
+++ b/tools/xen/scripts/uninstall-os-vpx.sh
@@ -0,0 +1,102 @@
+#!/bin/bash
+#
+# Copyright (c) 2011 Citrix Systems, Inc.
+# Copyright 2011 OpenStack LLC.
+# Copyright (C) 2011 Nicira, Inc
+# 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
