File: uninstall-os-vpx.sh

package info (click to toggle)
python-os-xenapi 0.3.4-4
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye
  • size: 1,012 kB
  • sloc: python: 8,137; sh: 2,154; makefile: 45
file content (94 lines) | stat: -rwxr-xr-x 2,464 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#!/bin/bash
#
# Copyright (c) 2011 Citrix Systems, Inc.
# Copyright 2011 OpenStack Foundation
# 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.
#

set -ex

THIS_DIR=$(cd $(dirname "$0") && pwd)
COMM_DIR="$THIS_DIR/../common"
# xapi functions
. $COMM_DIR/functions

# By default, don't remove the templates
REMOVE_TEMPLATES=${REMOVE_TEMPLATES:-"false"}
if [ "$1" = "--remove-templates" ]; then
    REMOVE_TEMPLATES=true
fi

xe_min()
{
    local cmd="$1"
    shift
    xe "$cmd" --minimal "$@"
}

destroy_vdi()
{
    local vbd_uuid="$1"
    local type
    type=$(xe_min vbd-list uuid=$vbd_uuid params=type)
    local dev
    dev=$(xe_min vbd-list uuid=$vbd_uuid params=userdevice)
    local vdi_uuid
    vdi_uuid=$(xe_min vbd-list uuid=$vbd_uuid params=vdi-uuid)

    if [ "$type" == 'Disk' ] && [ "$dev" != 'xvda' ] && [ "$dev" != '0' ]; then
        xe vdi-destroy uuid=$vdi_uuid
    fi
}

uninstall()
{
    local vm_uuid="$1"
    local power_state
    power_state=$(xe_min vm-list uuid=$vm_uuid params=power-state)

    if [ "$power_state" != "halted" ]; then
        xe vm-shutdown vm=$vm_uuid force=true
    fi

    for v in $(xe_min vbd-list vm-uuid=$vm_uuid | sed -e 's/,/ /g'); do
        destroy_vdi "$v"
    done

    xe vm-uninstall vm=$vm_uuid force=true >/dev/null
}

uninstall_template()
{
    local vm_uuid="$1"

    for v in $(xe_min vbd-list vm-uuid=$vm_uuid | sed -e 's/,/ /g'); do
        destroy_vdi "$v"
    done

    xe template-uninstall template-uuid=$vm_uuid force=true >/dev/null
}

host=$(get_current_host_uuid)
# remove the VMs and their disks on this host
for u in $(xe_min vm-list resident-on=$host other-config:os-vpx=true | sed -e 's/,/ /g'); do
    uninstall "$u"
done

# remove the templates
if [ "$REMOVE_TEMPLATES" == "true" ]; then
    for u in $(xe_min template-list possible-hosts=$host other-config:os-vpx=true | sed -e 's/,/ /g'); do
        uninstall_template "$u"
    done
fi