[iscsi] Un truc un peu plus générique que le commit précédent...

Ignore-this: 1a03894b0e7eee239fe5a3b415594cc6

darcs-hash:20120807230017-108b1-719379098a34feeda0126b5b5317c56386077434.gz
This commit is contained in:
Olivier Iffrig 2012-08-08 01:00:17 +02:00
parent af9c060e1c
commit 31e08c85be
8 changed files with 36 additions and 79 deletions

View file

@ -108,7 +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"
ISCSI_MAP_FILE_TEMPLATE = "/usr/scripts/var/iscsi_names_%s.py"
## Impression
class impression:

View file

@ -13,9 +13,11 @@ stockage'''
import nolslib, re, sys
sys.path.append("/usr/scripts/gestion")
from config import ISCSI_NEW_MAP_FILE
from config import ISCSI_MAP_FILE_TEMPLATE
import affich_tools
map_file = ISCSI_MAP_FILE_TEMPLATE % "nols"
print u"Connexion à la baie de stockage..."
nols = nolslib.Nols()
@ -31,7 +33,7 @@ nols.logout()
print u"Enregistrement des informations..."
f = open(ISCSI_NEW_MAP_FILE, "w")
f = open(map_file, "w")
f.write((u"""\
# -*- coding: utf-8 -*-
# Fichier de mapping lun -> nom de volume
@ -48,7 +50,7 @@ f.write("}\n")
f.close()
print u"Terminé, mapping enregistré dans %s" % ISCSI_NEW_MAP_FILE
print u"Terminé, mapping enregistré dans %s" % map_file
print u"Le mapping actuel est:"
print affich_tools.tableau(titre = ["lun", "nom"], data = map, alignement = ["g", "c"])

View file

@ -3,6 +3,7 @@
# slon-get-volume-mapping.py
# --------------------------
# Copyright : (c) 2012, Olivier Iffrig <iffrig@crans.org>
# Copyright : (c) 2008, Jeremie Dimino <dimino@crans.org>
# Licence : BSD3
@ -12,9 +13,11 @@ stockage'''
import slonlib, re, sys
sys.path.append("/usr/scripts/gestion")
from config import ISCSI_MAP_FILE
from config import ISCSI_MAP_FILE_TEMPLATE
import affich_tools
map_file = ISCSI_MAP_FILE_TEMPLATE % "slon"
print u"Connection à la baie de stockage..."
slon = slonlib.Slon()
@ -30,7 +33,7 @@ slon.logout()
print u"Enregistrement des informations..."
f = open(ISCSI_MAP_FILE, "w")
f = open(map_file, "w")
f.write((u"""\
# -*- coding: utf-8 -*-
# Fichier de mapping lun -> nom de volume
@ -47,7 +50,7 @@ f.write("}\n")
f.close()
print u"Terminé, mapping enregistré dans %s" % ISCSI_MAP_FILE
print u"Terminé, mapping enregistré dans %s" % map_file
print u"Le mapping actuel est:"
print affich_tools.tableau(titre = ["lun", "nom"], data = map, alignement = ["g", "c"])

View file

@ -3,6 +3,7 @@
# udev-get-iscsi-name.py
# ----------------------
# Copyright : (c) 2012, Olivier Iffrig <iffrig@crans.org>
# Copyright : (c) 2008, Jeremie Dimino <jeremie@dimino.org>
# Licence : BSD3
@ -12,12 +13,20 @@ pour les liens symboliques pour les périphériques iscsi'''
import sys, os
sys.path.append("/usr/scripts/gestion")
from config import ISCSI_MAP_FILE
from config import ISCSI_MAP_FILE_TEMPLATE
if len(sys.argv) < 2:
print >>sys.stderr, u"usage: %s <nom de périphérique>" % sys.argv[0]
if len(sys.argv) < 2 or len(sys.argv) > 3:
print >>sys.stderr, u"usage: %s <nom de périphérique> [<nom de la baie>]" % sys.argv[0]
sys.exit(2)
baie = None
if len(sys.argv) == 2:
baie = "slon"
else:
baie = sys.argv[2]
map_file = ISCSI_MAP_FILE_TEMPLATE % baie
# Rechreche le nom complet du périphérique dans /sys
dev = os.readlink("/sys/block/%s/device" % sys.argv[1])
@ -29,11 +38,11 @@ except:
print >>sys.stderr, u"périphérique invalide"
sys.exit(1)
if not os.access(ISCSI_MAP_FILE, os.R_OK):
print >>sys.stderr, u"Impossible de lire le fichier de mapping(%s)" % ISCSI_MAP_FILE
if not os.access(map_file, os.R_OK):
print >>sys.stderr, u"Impossible de lire le fichier de mapping(%s)" % map_file
sys.exit(1)
map = {}
execfile(ISCSI_MAP_FILE)
execfile(map_file)
print map.get(lun, "lun%d" % lun)

View file

@ -1,40 +0,0 @@
#!/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

@ -2,16 +2,23 @@
# udev-update-symlinks.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
if [[ $1 = "" ]]; then
BAIE="slon"
else
BAIE="$1"
fi
cd /dev
for dev in sd*; do
symlink=iscsi_$(python /usr/scripts/gestion/iscsi/udev-get-iscsi-name.py $dev)
symlink=iscsi_$(python /usr/scripts/gestion/iscsi/udev-get-iscsi-name.py $dev $BAIE)
if [ ! -e $symlink ]; then
echo "création du lien /dev/$symlink -> /dev/$dev"
ln -s $dev $symlink

View file

@ -1,24 +0,0 @@
#!/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

View file

@ -43,4 +43,4 @@ exec_cmd "Rescan des volumes iscsi" \
iscsiadm -m session --rescan
exec_cmd "Mises à jours des liens symboliques dans /dev" \
bash /usr/scripts/gestion/iscsi/udev-update-symlinks.sh
bash /usr/scripts/gestion/iscsi/udev-update-symlinks.sh $BAIE