diff --git a/gestion/config/config.py b/gestion/config/config.py index 10d9faac..c11f6c87 100644 --- a/gestion/config/config.py +++ b/gestion/config/config.py @@ -457,4 +457,4 @@ dhcp_servers = ['dhcp.adm.crans.org', 'isc.adm.crans.org'] # Le bâtiment virtuel dans lequel on place des chambres qui n'existent pas, pour faire # des tests. -bat_virtuel = 'v' +bats_virtuels = ['v'] diff --git a/gestion/hptools.py b/gestion/hptools.py index 7c8e8c1c..e39bfab1 100755 --- a/gestion/hptools.py +++ b/gestion/hptools.py @@ -25,7 +25,7 @@ import netsnmp if '/usr/scripts' not in sys.path: path.append('/usr/scripts') import gestion.secrets_new as secrets -from gestion.config import vlans +from gestion.config import vlans, bats_virtuels from gestion.annuaires_pg import chbre_prises, all_switchs try: @@ -390,17 +390,27 @@ class hpswitch : prise = prise.replace('-','') return self.get(oid + '.' + prise) == 'up' - def is_enable(self,prise=0) : + def is_fake(self, prise=0): + """Retourne True ou False selon que le switch est virtuel.""" + if self.switch.split('-')[0].replace('bat', '') in bats_virtuels: + return True + return False + + def is_enable(self,prise=0): """ Retoune True ou False suivant si la prise est activée ou non Si prise=all retourne le nombre de prises activées sur le switch """ + if self.switch.split('-')[0].replace('bat', '') in bats_virtuels: + return False if prise != 'all': prise = int(prise) return self.__is('IF-MIB::ifAdminStatus',prise) def is_up(self,prise=0) : """ Retoune True ou False suivant si la prise est up Si prise=all retourne le nombre de prises up sur le switch """ + if self.switch.split('-')[0].replace('bat', '') in bats_virtuels: + return False if prise != 'all': prise = int(prise) - return self.__is('IF-MIB::ifOperStatus',prise) + return self.__is('IF-MIB::ifOperStatus', prise) def nom(self,nom=None,prise=0) : """ Retourne ou attribue le nom à la prise fournie """ @@ -439,13 +449,15 @@ class hpswitch : def vlans(self, prise = None): """Récupère les vlans activés sur la prise 'prise'""" + result = [] + if self.switch.split('-')[0].replace('bat', '') in bats_virtuels: + return result if not prise: prise = self.prise prise = int(prise) oid_base = 'SNMPv2-SMI::enterprises.11.2.14.11.5.1.7.1.15.3.1.1' oid_format = oid_base + '.%(vlan)d.%(prise)d' oids = self.walk(oid_base) - result = [] for vlan_name, vlan in vlans.iteritems(): if oid_format % {'vlan': vlan, 'prise': prise} in oids: result.append(vlan_name) diff --git a/gestion/whos.py b/gestion/whos.py index 435c1f8f..05350d95 100755 --- a/gestion/whos.py +++ b/gestion/whos.py @@ -53,6 +53,8 @@ from affich_tools import * from ldap_crans import is_actif, crans_ldap, AssociationCrans, hostname from ldap_crans import MachineCrans, MachineWifi, BorneWifi from ldap_crans import Adherent +from hptools import sw_chbre, ConversationError +import gestion.annuaires_pg as annuaires_pg import gestion.config as config import ridtools import user_tests @@ -613,12 +615,7 @@ def adher_details(adher) : f += coul(u'Chambre invalide\n','violet') else : # Chambre + prise (d'après annuaire) - if adher.chbre()[0].lower() != config.bat_virtuel: - etat, vlans, cablage = prise_etat(adher.chbre()) - else: - etat = coul(u"Chambre virtuelle", "violet") - vlans = "" - cablage = coul(u"Factice", "violet") + etat, vlans, cablage = prise_etat(adher.chbre()) f += coul(u'Chambre : ','gras') + u"%s " % chbre f += u'(%s)' % etat f += u'\n' @@ -1159,8 +1156,6 @@ def prise_etat(chbre) : cablage = u'' try: # On met aussi l'état - from hptools import sw_chbre, ConversationError - import annuaires_pg prise = sw_chbre(chbre) vlans += ', '.join(prise.vlans()) if annuaires_pg.is_crans(chbre[0],chbre[1:]) : @@ -1201,12 +1196,14 @@ def prise_etat(chbre) : f += u', ' f += u"%s" % macs.pop() count += 1 - elif not prise.is_enable() : - f+= u', ' + coul(u'prise désactivée','rouge') + elif not prise.is_enable(): + if prise.is_fake(): + f += u', ' + coul(u"Chambre virtuelle", "violet") + else: + f += u', ' + coul(u'prise désactivée','rouge') else : - f+= u', activée, lien non détecté' + f += u', activée, lien non détecté' try: - import annuaires_pg extra_info = annuaires_pg.chbre_commentaire(chbre[0],chbre[1:]).decode('utf-8') if extra_info: f += u'\n' + ' '*10 + extra_info