[udev-get-iscsi-name] script pour récupérer le nom d'un volume iscsi depuis udev

darcs-hash:20081216041045-c41ad-c721e572ab7f3212eb25fe0dc8db808a112a9fbd.gz
This commit is contained in:
Jeremie Dimino 2008-12-16 05:10:45 +01:00
parent edc0315878
commit 2d28246ad4

39
gestion/udev-get-iscsi-name.py Executable file
View file

@ -0,0 +1,39 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# udev-get-iscsi-name.py
# ----------------------
# 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
from config import ISCSI_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)
ISCSI_MAP_FILE = "/usr/scripts/var/iscsi_names.py"
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
sys.exit(1)
map = {}
execfile(ISCSI_MAP_FILE)
print map.get(lun, "lun%d" % lun)