prise_etat autonome. Ainsi on ne dépend plus de ldap_crans.

This commit is contained in:
Pierre-Elliott Bécue 2015-04-24 03:11:18 +02:00
parent 514857a19c
commit 2711dd12d7

View file

@ -12,6 +12,7 @@ import gestion.config as config
# script continue à fonctionner. # script continue à fonctionner.
import gestion import gestion
import gestion.annuaires_pg import gestion.annuaires_pg
import gestion.hptools2 as hptools2
import lc_ldap.attributs as attributs import lc_ldap.attributs as attributs
@ -34,15 +35,62 @@ def try_import(lib):
def prise_etat(chbre): def prise_etat(chbre):
# Ici, on utilise le module gestion importé """Récupère l'état d'une prise"""
# Il faudrait remplacer cet import là par une bat = chbre[0].lower()
# fonction prise_etat propre à lc_ldap, pour chbre = chbre[1:]
# ne plus en avoir besoin ci-après. prise = gestion.annuaires_pg.chbre_prises(batiment=bat, chambre=chbre)
gestion.whos = try_import(u"gestion.whos")
gestion.whos.style = style swid, port = int(prise[0]), int(prise[1:])
if chbre=="????": switch_name = "bat%s-%s.adm.crans.org" % (bat, swid)
return style("Chambre invalide", "violet")
return gestion.whos.prise_etat(chbre)[0] # Si le switch est virtuel, on évite de perdre du temps à query
# ledit switch qui a une forte proba d'être down.
if bat in config.bats_virtuels:
cablage = style(u"Câblée au Crans", "bleu")
lien = style(u"Prise %s%s virtuelle" % (bat, prise), "violet")
return u", ".join([lien, cablage])
switch = hptools2.HPSwitch(switch_name)
vlan_list = switch.get_vlans(port)
vlans = u" " * (13 + len(chbre))
vlans += u"Vlan%s : " % (u's' if len(vlan_list) > 1 else u"",) + style(u", ".join([unicode(vlan) for vlan in vlan_list]), "orange")
cablage = u" " * (13 + len(chbre))
if gestion.annuaires_pg.is_crans(bat, chbre):
cablage += style(u"Câblée au Crans", "bleu")
else:
cablage += style(u"Câblée au CROUS", "jaune")
if not gestion.annuaires_pg.is_connected(bat, chbre):
cablage += style(u" [à valider]", "rouge")
lien = u"Prise %s" % (switch.ports[port].name(),)
if not switch.is_enabled(port) == 'up':
lien += u", " + style(u'désactivée', 'rouge')
else:
lien += u", " + style(u'activée', 'cyan')
if not switch.is_up(port) == 'up':
lien += u", " + style(u'aucune machine détectée', 'jaune')
else:
lien += u", " + style(u'lien actif', 'vert')
macs = []
compteur = 0
for mac in switch.show_port_macs(port)[0]:
# Toutes les 3 macs, on met un retour à la ligne pour plus de
# clarté.
if compteur % 3 == 0 and compteur > 0:
mac = u'\n' + u' ' * (13 + len(chbre)) + u'MACs: %s' % (mac,)
macs.append(mac)
compteur += 1
lien += u"," + style(u'\n%sMACs: %s' % (u" " * (13 + len(chbre)), u",".join(macs)), 'violet')
extra_info = gestion.annuaires_pg.chbre_commentaire(bat, chbre).decode('utf-8')
if extra_info:
lien += u"\nNote : %s" % (extra_info,)
return u",\n".join([lien, vlans, cablage])
def timeformat(t, format): def timeformat(t, format):
if isinstance(t, attributs.Attr): if isinstance(t, attributs.Attr):