diff --git a/gestion/config.py b/gestion/config.py index 7c2cb5b7..3503445f 100644 --- a/gestion/config.py +++ b/gestion/config.py @@ -108,6 +108,7 @@ cfengine_main = bcfg2_main ## Fichier de mapping lun/nom de volume iscsi ISCSI_MAP_FILE = "/usr/scripts/var/iscsi_names.py" +ISCSI_NEW_MAP_FILE = "/usr/scripts/var/iscsi_names_new.py" ## Impression class impression: diff --git a/gestion/iscsi/nols-get-volume-mapping.py b/gestion/iscsi/nols-get-volume-mapping.py index 9f57d45a..a818f028 100755 --- a/gestion/iscsi/nols-get-volume-mapping.py +++ b/gestion/iscsi/nols-get-volume-mapping.py @@ -13,7 +13,7 @@ stockage''' import nolslib, re, sys sys.path.append("/usr/scripts/gestion") -from config import ISCSI_MAP_FILE +from config import ISCSI_NEW_MAP_FILE import affich_tools print u"Connexion à la baie de stockage..." @@ -31,7 +31,7 @@ nols.logout() print u"Enregistrement des informations..." -f = open(ISCSI_MAP_FILE, "w") +f = open(ISCSI_NEW_MAP_FILE, "w") f.write((u"""\ # -*- coding: utf-8 -*- # Fichier de mapping lun -> nom de volume @@ -48,7 +48,7 @@ f.write("}\n") f.close() -print u"Terminé, mapping enregistré dans %s" % ISCSI_MAP_FILE +print u"Terminé, mapping enregistré dans %s" % ISCSI_NEW_MAP_FILE print u"Le mapping actuel est:" print affich_tools.tableau(titre = ["lun", "nom"], data = map, alignement = ["g", "c"]) diff --git a/gestion/iscsi/udev-get-iscsi-name_new.py b/gestion/iscsi/udev-get-iscsi-name_new.py new file mode 100755 index 00000000..711409d6 --- /dev/null +++ b/gestion/iscsi/udev-get-iscsi-name_new.py @@ -0,0 +1,40 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +# udev-get-iscsi-name_new.py +# ---------------------- +# Copyright : (c) 2012, Olivier Iffrig +# Copyright : (c) 2008, Jeremie Dimino +# Licence : BSD3 + +u'''Script appelé par udev (/etc/udev/rules.d/10_crans_iscsi.rules) +pour les liens symboliques pour les périphériques iscsi''' + +import sys, os + +sys.path.append("/usr/scripts/gestion") +from config import ISCSI_NEW_MAP_FILE + +if len(sys.argv) < 2: + print >>sys.stderr, u"usage: %s " % sys.argv[0] + sys.exit(2) + +# Rechreche le nom complet du périphérique dans /sys +dev = os.readlink("/sys/block/%s/device" % sys.argv[1]) + +# L'identifiant est de la forme ".../0:0:0:19", le dernier nombre +# étant le lun +try: + lun = int(dev.rsplit(":", 1)[1]) +except: + print >>sys.stderr, u"périphérique invalide" + sys.exit(1) + +if not os.access(ISCSI_NEW_MAP_FILE, os.R_OK): + print >>sys.stderr, u"Impossible de lire le fichier de mapping(%s)" % ISCSI_NEW_MAP_FILE + sys.exit(1) + +map = {} +execfile(ISCSI_NEW_MAP_FILE) + +print map.get(lun, "lun%d" % lun) diff --git a/gestion/iscsi/udev-update-symlinks_new.sh b/gestion/iscsi/udev-update-symlinks_new.sh new file mode 100755 index 00000000..0cda89fc --- /dev/null +++ b/gestion/iscsi/udev-update-symlinks_new.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +# udev-update-symlinks_new.sh +# ----------------------- +# Copyright : (c) 2012, Olivier Iffrig +# Copyright : (c) 2008, Jeremie Dimino +# Licence : BSD3 + + +# Ce script met à jour les liens symboliques dans /dev + +cd /dev + +for dev in sd*; do + symlink=iscsi_$(python /usr/scripts/gestion/iscsi/udev-get-iscsi-name_new.py $dev) + if [ ! -e $symlink ]; then + echo "création du lien /dev/$symlink -> /dev/$dev" + ln -s $dev $symlink + elif [ -h $symlink -a $(readlink $symlink) != $dev ]; then + echo "mise à jour du lien /dev/$symlink -> /dev/$dev" + rm -f $symlink + ln -s $dev $symlink + fi +done