[iscsi] Kludges sales pour virer les liens morts supplémentaires.
Si seulement udev se débarassait des modules physiques qui n'existent plus...
This commit is contained in:
parent
217d16d1fc
commit
c37b3b0f34
3 changed files with 29 additions and 5 deletions
|
@ -157,7 +157,7 @@ class Nols(object):
|
||||||
|
|
||||||
# On récupère le mapping pour chercher un lun de libre
|
# On récupère le mapping pour chercher un lun de libre
|
||||||
map = self.volume_map()
|
map = self.volume_map()
|
||||||
lun = 0
|
lun = 1
|
||||||
while lun in map: lun = lun + 1
|
while lun in map: lun = lun + 1
|
||||||
|
|
||||||
# Création du volume
|
# Création du volume
|
||||||
|
|
|
@ -29,7 +29,10 @@ def store_iscsi_volumes():
|
||||||
if line.startswith('ip-'):
|
if line.startswith('ip-'):
|
||||||
device = os.readlink(PATH+line) # de la forme ../../sdb42
|
device = os.readlink(PATH+line) # de la forme ../../sdb42
|
||||||
device = device.rsplit('/', 1)[1]
|
device = device.rsplit('/', 1)[1]
|
||||||
symlink = 'iscsi_' + ugin.getname(device)
|
if line.rsplit('-', 1)[1][0:4] == "part":
|
||||||
|
symlink = 'iscsi_' + ugin.getname("".join([i for i in device if i.isalpha()])) + "_part" + line.rsplit('-', 1)[1][4:]
|
||||||
|
else:
|
||||||
|
symlink = 'iscsi_' + ugin.getname(device)
|
||||||
line = line.rsplit('-', 1)[1]
|
line = line.rsplit('-', 1)[1]
|
||||||
_ = links.setdefault(line, [symlink, device])
|
_ = links.setdefault(line, [symlink, device])
|
||||||
return links
|
return links
|
||||||
|
@ -41,7 +44,7 @@ def make_link(couple):
|
||||||
sym, dev = couple
|
sym, dev = couple
|
||||||
diskstatus = subprocess.Popen(['file', '-sb', '/dev/' + dev], stdout=subprocess.PIPE)
|
diskstatus = subprocess.Popen(['file', '-sb', '/dev/' + dev], stdout=subprocess.PIPE)
|
||||||
diskstatus = diskstatus.stdout.readlines()[0]
|
diskstatus = diskstatus.stdout.readlines()[0]
|
||||||
if not os.path.islink(sym) and 'empty' in diskstatus:
|
if not (os.path.islink(sym)) and not 'empty' in diskstatus and not 'ERROR' in diskstatus:
|
||||||
sys.stdout.write("Création du lien /dev/" + sym + " -> /dev/" + dev + " … ")
|
sys.stdout.write("Création du lien /dev/" + sym + " -> /dev/" + dev + " … ")
|
||||||
try:
|
try:
|
||||||
os.symlink(dev, sym)
|
os.symlink(dev, sym)
|
||||||
|
@ -51,7 +54,7 @@ def make_link(couple):
|
||||||
sys.stdout.write(coul("ECHEC", 'rouge'))
|
sys.stdout.write(coul("ECHEC", 'rouge'))
|
||||||
res = False
|
res = False
|
||||||
sys.stdout.write('\n')
|
sys.stdout.write('\n')
|
||||||
elif os.path.islink(sym) and 'empty' in diskstatus:
|
elif os.path.islink(sym) and ('empty' in diskstatus or 'ERROR' in diskstatus):
|
||||||
sys.stdout.write("Destruction du lien /dev/" + sym + " … ")
|
sys.stdout.write("Destruction du lien /dev/" + sym + " … ")
|
||||||
try:
|
try:
|
||||||
os.remove(sym)
|
os.remove(sym)
|
||||||
|
@ -76,7 +79,28 @@ def make_link(couple):
|
||||||
res = None
|
res = None
|
||||||
return res
|
return res
|
||||||
|
|
||||||
|
def clean_iscsi_links():
|
||||||
|
"""Nettoie les liens présents dans /dev/iscsi_*"""
|
||||||
|
links = {}
|
||||||
|
# os.listdir retourne une liste désordonnée, l'idée est de privilégier
|
||||||
|
# l'ordre lexicographique pour que l'état du retour soit identifié.
|
||||||
|
state = subprocess.Popen(['ls', '/dev'], stdout=subprocess.PIPE)
|
||||||
|
state = state.stdout.readlines()
|
||||||
|
for line in state:
|
||||||
|
line = line.replace('\n', '')
|
||||||
|
if line.startswith('iscsi_'):
|
||||||
|
device = os.readlink('/dev/'+line) # de la forme ../../sdb42
|
||||||
|
symlink = line
|
||||||
|
make_link((symlink, device))
|
||||||
|
return links
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
if "-h" in sys.argv or "--help" in sys.argv:
|
||||||
|
print "Usage: udev_update_symlinks.py <options>"
|
||||||
|
print " -h, --help : print this message and exit"
|
||||||
|
print " --clean : clean empty links no longer referenced"
|
||||||
|
if "--clean" in sys.argv:
|
||||||
|
clean_iscsi_links()
|
||||||
nothing = True
|
nothing = True
|
||||||
links = store_iscsi_volumes()
|
links = store_iscsi_volumes()
|
||||||
for path in links.keys():
|
for path in links.keys():
|
||||||
|
|
|
@ -37,4 +37,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" \
|
||||||
python /usr/scripts/gestion/iscsi/udev_update_symlinks.py
|
python /usr/scripts/gestion/iscsi/udev_update_symlinks.py --clean
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue