[iscsi] On évite les conflits entre les fichiers de mapping des 2 baies

Ignore-this: 7a14d9e365b2b0a5299ee5015bad02d0

darcs-hash:20120807222443-108b1-d23b778fbb79a32b079d7bad34480df9ccf3e938.gz
This commit is contained in:
Olivier Iffrig 2012-08-08 00:24:43 +02:00
parent 7bf024e825
commit 668ba63330
4 changed files with 68 additions and 3 deletions

View file

@ -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:

View file

@ -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"])

View file

@ -0,0 +1,40 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# udev-get-iscsi-name_new.py
# ----------------------
# Copyright : (c) 2012, Olivier Iffrig <iffrig@crans.org>
# Copyright : (c) 2008, Jeremie Dimino <jeremie@dimino.org>
# 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 <nom de périphérique>" % 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)

View file

@ -0,0 +1,24 @@
#!/bin/bash
# udev-update-symlinks_new.sh
# -----------------------
# Copyright : (c) 2012, Olivier Iffrig <iffrig@crans.org>
# Copyright : (c) 2008, Jeremie Dimino <jeremie@dimino.org>
# 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