[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:
parent
af9c060e1c
commit
31e08c85be
8 changed files with 36 additions and 79 deletions
|
@ -108,7 +108,7 @@ cfengine_main = bcfg2_main
|
||||||
|
|
||||||
## Fichier de mapping lun/nom de volume iscsi
|
## Fichier de mapping lun/nom de volume iscsi
|
||||||
ISCSI_MAP_FILE = "/usr/scripts/var/iscsi_names.py"
|
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
|
## Impression
|
||||||
class impression:
|
class impression:
|
||||||
|
|
|
@ -13,9 +13,11 @@ stockage'''
|
||||||
import nolslib, re, sys
|
import nolslib, re, sys
|
||||||
|
|
||||||
sys.path.append("/usr/scripts/gestion")
|
sys.path.append("/usr/scripts/gestion")
|
||||||
from config import ISCSI_NEW_MAP_FILE
|
from config import ISCSI_MAP_FILE_TEMPLATE
|
||||||
import affich_tools
|
import affich_tools
|
||||||
|
|
||||||
|
map_file = ISCSI_MAP_FILE_TEMPLATE % "nols"
|
||||||
|
|
||||||
print u"Connexion à la baie de stockage..."
|
print u"Connexion à la baie de stockage..."
|
||||||
|
|
||||||
nols = nolslib.Nols()
|
nols = nolslib.Nols()
|
||||||
|
@ -31,7 +33,7 @@ nols.logout()
|
||||||
|
|
||||||
print u"Enregistrement des informations..."
|
print u"Enregistrement des informations..."
|
||||||
|
|
||||||
f = open(ISCSI_NEW_MAP_FILE, "w")
|
f = open(map_file, "w")
|
||||||
f.write((u"""\
|
f.write((u"""\
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
# Fichier de mapping lun -> nom de volume
|
# Fichier de mapping lun -> nom de volume
|
||||||
|
@ -48,7 +50,7 @@ f.write("}\n")
|
||||||
|
|
||||||
f.close()
|
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 u"Le mapping actuel est:"
|
||||||
print affich_tools.tableau(titre = ["lun", "nom"], data = map, alignement = ["g", "c"])
|
print affich_tools.tableau(titre = ["lun", "nom"], data = map, alignement = ["g", "c"])
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
# slon-get-volume-mapping.py
|
# slon-get-volume-mapping.py
|
||||||
# --------------------------
|
# --------------------------
|
||||||
|
# Copyright : (c) 2012, Olivier Iffrig <iffrig@crans.org>
|
||||||
# Copyright : (c) 2008, Jeremie Dimino <dimino@crans.org>
|
# Copyright : (c) 2008, Jeremie Dimino <dimino@crans.org>
|
||||||
# Licence : BSD3
|
# Licence : BSD3
|
||||||
|
|
||||||
|
@ -12,9 +13,11 @@ stockage'''
|
||||||
import slonlib, re, sys
|
import slonlib, re, sys
|
||||||
|
|
||||||
sys.path.append("/usr/scripts/gestion")
|
sys.path.append("/usr/scripts/gestion")
|
||||||
from config import ISCSI_MAP_FILE
|
from config import ISCSI_MAP_FILE_TEMPLATE
|
||||||
import affich_tools
|
import affich_tools
|
||||||
|
|
||||||
|
map_file = ISCSI_MAP_FILE_TEMPLATE % "slon"
|
||||||
|
|
||||||
print u"Connection à la baie de stockage..."
|
print u"Connection à la baie de stockage..."
|
||||||
|
|
||||||
slon = slonlib.Slon()
|
slon = slonlib.Slon()
|
||||||
|
@ -30,7 +33,7 @@ slon.logout()
|
||||||
|
|
||||||
print u"Enregistrement des informations..."
|
print u"Enregistrement des informations..."
|
||||||
|
|
||||||
f = open(ISCSI_MAP_FILE, "w")
|
f = open(map_file, "w")
|
||||||
f.write((u"""\
|
f.write((u"""\
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
# Fichier de mapping lun -> nom de volume
|
# Fichier de mapping lun -> nom de volume
|
||||||
|
@ -47,7 +50,7 @@ f.write("}\n")
|
||||||
|
|
||||||
f.close()
|
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 u"Le mapping actuel est:"
|
||||||
print affich_tools.tableau(titre = ["lun", "nom"], data = map, alignement = ["g", "c"])
|
print affich_tools.tableau(titre = ["lun", "nom"], data = map, alignement = ["g", "c"])
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
# udev-get-iscsi-name.py
|
# udev-get-iscsi-name.py
|
||||||
# ----------------------
|
# ----------------------
|
||||||
|
# Copyright : (c) 2012, Olivier Iffrig <iffrig@crans.org>
|
||||||
# Copyright : (c) 2008, Jeremie Dimino <jeremie@dimino.org>
|
# Copyright : (c) 2008, Jeremie Dimino <jeremie@dimino.org>
|
||||||
# Licence : BSD3
|
# Licence : BSD3
|
||||||
|
|
||||||
|
@ -12,12 +13,20 @@ pour les liens symboliques pour les périphériques iscsi'''
|
||||||
import sys, os
|
import sys, os
|
||||||
|
|
||||||
sys.path.append("/usr/scripts/gestion")
|
sys.path.append("/usr/scripts/gestion")
|
||||||
from config import ISCSI_MAP_FILE
|
from config import ISCSI_MAP_FILE_TEMPLATE
|
||||||
|
|
||||||
if len(sys.argv) < 2:
|
if len(sys.argv) < 2 or len(sys.argv) > 3:
|
||||||
print >>sys.stderr, u"usage: %s <nom de périphérique>" % sys.argv[0]
|
print >>sys.stderr, u"usage: %s <nom de périphérique> [<nom de la baie>]" % sys.argv[0]
|
||||||
sys.exit(2)
|
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
|
# Rechreche le nom complet du périphérique dans /sys
|
||||||
dev = os.readlink("/sys/block/%s/device" % sys.argv[1])
|
dev = os.readlink("/sys/block/%s/device" % sys.argv[1])
|
||||||
|
|
||||||
|
@ -29,11 +38,11 @@ except:
|
||||||
print >>sys.stderr, u"périphérique invalide"
|
print >>sys.stderr, u"périphérique invalide"
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
if not os.access(ISCSI_MAP_FILE, os.R_OK):
|
if not os.access(map_file, os.R_OK):
|
||||||
print >>sys.stderr, u"Impossible de lire le fichier de mapping(%s)" % ISCSI_MAP_FILE
|
print >>sys.stderr, u"Impossible de lire le fichier de mapping(%s)" % map_file
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
map = {}
|
map = {}
|
||||||
execfile(ISCSI_MAP_FILE)
|
execfile(map_file)
|
||||||
|
|
||||||
print map.get(lun, "lun%d" % lun)
|
print map.get(lun, "lun%d" % lun)
|
||||||
|
|
|
@ -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)
|
|
|
@ -2,16 +2,23 @@
|
||||||
|
|
||||||
# udev-update-symlinks.sh
|
# udev-update-symlinks.sh
|
||||||
# -----------------------
|
# -----------------------
|
||||||
|
# Copyright : (c) 2012, Olivier Iffrig <iffrig@crans.org>
|
||||||
# Copyright : (c) 2008, Jeremie Dimino <jeremie@dimino.org>
|
# Copyright : (c) 2008, Jeremie Dimino <jeremie@dimino.org>
|
||||||
# Licence : BSD3
|
# Licence : BSD3
|
||||||
|
|
||||||
|
|
||||||
# Ce script met à jour les liens symboliques dans /dev
|
# Ce script met à jour les liens symboliques dans /dev
|
||||||
|
|
||||||
|
if [[ $1 = "" ]]; then
|
||||||
|
BAIE="slon"
|
||||||
|
else
|
||||||
|
BAIE="$1"
|
||||||
|
fi
|
||||||
|
|
||||||
cd /dev
|
cd /dev
|
||||||
|
|
||||||
for dev in sd*; do
|
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
|
if [ ! -e $symlink ]; then
|
||||||
echo "création du lien /dev/$symlink -> /dev/$dev"
|
echo "création du lien /dev/$symlink -> /dev/$dev"
|
||||||
ln -s $dev $symlink
|
ln -s $dev $symlink
|
||||||
|
|
|
@ -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
|
|
|
@ -43,4 +43,4 @@ exec_cmd "Rescan des volumes iscsi" \
|
||||||
iscsiadm -m session --rescan
|
iscsiadm -m session --rescan
|
||||||
|
|
||||||
exec_cmd "Mises à jours des liens symboliques dans /dev" \
|
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
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue