2 # postinst script for xvm-iscsi-config
4 # see: dh_installdeb(1)
8 # Source debconf library
9 . /usr/share/debconf/confmodule
11 # summary of how this script can be called:
12 # * <postinst> `configure' <most-recently-configured-version>
13 # * <old-postinst> `abort-upgrade' <new version>
14 # * <conflictor's-postinst> `abort-remove' `in-favour' <package>
16 # * <postinst> `abort-remove'
17 # * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
18 # <failed-install-package> <version> `removing'
19 # <conflicting-package> <version>
20 # for details, see http://www.debian.org/doc/debian-policy/ or
21 # the debian-policy package
23 # dh_installdeb will replace this with shell code automatically
24 # generated by other debhelper scripts.
28 get_current_sessions() {
29 for i in $(cd /sys/class/iscsi_session/ && ls); do
30 echo $(cat /sys/class/iscsi_connection/connection${i#session}:0/persistent_address) \
31 $(cat /sys/class/iscsi_host/$(readlink /sys/class/iscsi_session/$i/device | perl -ne '/host\d+/ && print $&')/netdev)
36 for i in $(invirt-getconf --ls iscsi.targets); do
37 echo $(invirt-getconf iscsi.targets.$i.ip) $(invirt-getconf iscsi.targets.$i.iface)
43 db_get xvm-iscsi-config/username
45 db_get xvm-iscsi-config/password
49 OLD_USERNAME=$(invirt-getconf iscsi.username 2>/dev/null)
50 OLD_PASSWORD=$(invirt-getconf iscsi.password 2>/dev/null)
52 if [ -e /etc/invirt/conf.d/iscsi ]; then
53 # invirt.config.run_parts_list excludes backup filenames.
54 mv -f /etc/invirt/conf.d/iscsi /etc/invirt/conf.d/iscsi~
56 cat >/etc/invirt/conf.d/iscsi <<EOF
62 # Attempt to determine whether the iSCSI configuration has changed at all
66 invoke-rc.d xvm-iscsi-config restart
67 invoke-rc.d open-iscsi restart
68 elif [[ "$USERNAME" -ne "$OLD_USERNAME" || "$PASSWORD" -ne "$OLD_PASSWORD" ]]; then
70 xvm-iscsi-config: The login credentials have changed. Restart iscsi:
71 /etc/init.d/xvm-iscsi-config restart
72 /etc/init.d/open-iscsi restart
76 if ! diff <(get_current_sessions) <(get_new_sessions) >/dev/null; then
77 if [ -z "$safe" ]; then
78 for i in $(invirt-getconf --ls iscsi.targets); do
79 iscsiadm -m discovery -t st -p $(invirt-getconf iscsi.targets.$i.ip):3260 -I $(invirt-getconf iscsi.targets.$i.iface)
80 iscsiadm -m node -p $(invirt-getconf iscsi.targets.$i.ip):3260 -I $(invirt-getconf iscsi.targets.$i.iface) -l
83 for i in $(invirt-getconf --ls iscsi.targets); do
84 echo " "iscsiadm -m discovery -t st -p $(invirt-getconf iscsi.targets.$i.ip):3260 -I $(invirt-getconf iscsi.targets.$i.iface)
85 echo " "iscsiadm -m node -p $(invirt-getconf iscsi.targets.$i.ip):3260 -I $(invirt-getconf iscsi.targets.$i.iface) -l
89 You may want to recreate the LVM nodes:
90 lvchange -a ln /dev/xenvg && lvchange -a y /dev/xenvg
91 This will leave VMs unable to access their disks, so migrate them first.
97 abort-upgrade|abort-remove|abort-deconfigure)
101 echo "postinst called with unknown argument \`$1'" >&2