From 821905a2957414368ae0c45dfd12265de6a39874 Mon Sep 17 00:00:00 2001 From: glondu Date: Sun, 26 Mar 2006 15:28:58 +0200 Subject: [PATCH] On se dbarrasse de __typ darcs-hash:20060326132858-68412-834f82188bf86e0de594a0aaa14bbfc6ba996051.gz --- gestion/config.py | 9 +++--- gestion/ldap_crans.py | 68 ++++++++++++++++++------------------------- 2 files changed, 34 insertions(+), 43 deletions(-) diff --git a/gestion/config.py b/gestion/config.py index 720e316c..4231e0dd 100644 --- a/gestion/config.py +++ b/gestion/config.py @@ -321,10 +321,11 @@ NETs = { 'wifi' : [ '138.231.149.0/24', '138.231.150.0/24' ], NETs_regexp = { 'all' : '^138\.231\.1(3[6789]|4[0123456789]|5[01])\.\d+$' } # Domaines dans lesquels les machines sont placées suivant leur type -domains = { 'wifi' : 'wifi.crans.org' , - 'fixe' : 'crans.org' , - 'borne': 'wifi.crans.org' } - +domains = { 'machineFixe': 'crans.org', + 'machineCrans': 'crans.org', + 'machineWifi': 'wifi.crans.org', + 'borneWifi': 'wifi.crans.org' } + ####################### ## Mail de bienvenue ## ####################### diff --git a/gestion/ldap_crans.py b/gestion/ldap_crans.py index eb70b41b..27c29cdf 100755 --- a/gestion/ldap_crans.py +++ b/gestion/ldap_crans.py @@ -2138,7 +2138,7 @@ class Machine(base_classes_crans): filtre_idn = '(|(objectClass=machineFixe)(objectClass=machineWifi)' filtre_idn += '(objectClass=machineCrans)(objectClass=borneWifi))' - def __init__(self, parent_or_tuple, typ='fixe', conn=None): + def __init__(self, parent_or_tuple, mode='', conn=None): """ parent_or_tuple est : * soit une instance d'une classe pouvant posséder une machine @@ -2146,25 +2146,29 @@ class Machine(base_classes_crans): sera alors associée. * soit directement le tuple définissant une machine (tel que retourné par les fonctions de recherche ldap) - typ permet de définir le type de machine : wifi ou fixe, - pris en compte uniquement pour une nouvelle machine (parent donné) - Pour édition d'une machine, typ devra être égal à 'w' - Attention, si typ ='w' mais si l'objet est déja locké il n'y a pas - d'erreur, vérifier l'obtention du lock grâce à la valeur de _modifiable - (si ='w' c'est bon) + Pour l'édition d'une machine, mode devra être égal à 'w' + Attention, si mode='w' mais si l'objet est déja locké il n'y a + pas d'erreur, vérifier l'obtention du lock grâce à la valeur de + _modifiable (si ='w' c'est bon) conn est une instance de la classe de connexion à la base LDAP """ + # Définition de l'objectClass LDAP à partir du nom de la classe Python + self.objectClass = str(self.__class__).split('.')[-1] + self.objectClass = self.objectClass[0].lower() + self.objectClass[1:] + + # Initialisation de la connexion self.conn = conn if not self.conn: self.connect() + self.modifs = {} t = parent_or_tuple.__class__ if t == tuple: # Initialisation avec données fournies self.dn = parent_or_tuple[0] - if typ == 'w': + if mode == 'w': try: self.lock(self.idn, self.id()) self._modifiable = 'w' @@ -2176,36 +2180,23 @@ class Machine(base_classes_crans): self._init_data = parent_or_tuple[1].copy() self._data = parent_or_tuple[1] - # Type de machine - if self._init_data.has_key('ipsec'): - self.__typ = 'wifi' - elif self._init_data.has_key('puissance'): - self.__typ = 'borne' - else: - self.__typ = 'fixe' - # Propriéraire inconnu mais ce n'est pas grave self.__proprietaire = None - elif t in [ Adherent, Club, AssociationCrans ] and typ in [ 'fixe' , 'wifi' , 'borne' ]: + elif t in [Adherent, Club, AssociationCrans] and mode != 'w': # Machine vide self.__proprietaire = parent_or_tuple self.dn = parent_or_tuple.dn - self._data = { 'objectClass': [ self.objectClass ] } + self._data = {'objectClass': [self.objectClass]} self._init_data = {} - self.__typ = typ self._modifiable = 'w' chbre = self.__proprietaire.chbre() - # if chbre == 'EXT' and typ == 'fixe': + # if chbre == 'EXT' and mode == 'fixe': # raise ValueError(u'Il faut une chambre pour pouvoir posséder une machine fixe') if chbre == '????': raise ValueError(u'ERREUR: la chambre du propriétaire est inconnue') - - if typ == 'wifi': - # Génération de la clef IPsec - self.ipsec(True) else: raise TypeError(u'Arguments invalides') @@ -2287,9 +2278,9 @@ class Machine(base_classes_crans): # Ajout du domaine si necessaire if new.find('.') == -1: try: - new += '.' + config.domains[self.__typ] + new += '.' + config.domains[self.objectClass] except: - raise RuntimeError(u"%s : domaine non trouvé" % champ.capitalize() ) + raise RuntimeError(u"%s : domaine non trouvé pour %s" % (champ.capitalize(), self.__class__)) # Pas déja pris ? if self.exist('(|(host=%s)(hostAlias=%s))' % (new, new)): @@ -2387,7 +2378,7 @@ class Machine(base_classes_crans): if ip == None: if self._data.has_key('ipHostNumber'): return decode(self._data['ipHostNumber'][0]) - elif self.proprietaire().__class__ == AssociationCrans and self.__typ != 'borne': + elif isinstance(self.proprietaire(), AssociationCrans) and not isinstance(self, BorneWifi): return '' else: return '' @@ -2395,15 +2386,15 @@ class Machine(base_classes_crans): l, ip = preattr(ip) # Dans quel réseau la machine doit-elle être placée ? - if self.__typ == 'wifi': + if isinstance(self, MachineWifi): if self.proprietaire().etudes(0) == "ENS" and self.proprietaire().etudes(1) == "Pers": # Personnel ENS net = config.NETs['wifi-ens'] else: net = config.NETs['wifi'] - elif self.__typ == 'borne': + elif isinstance(self, BorneWifi): net = config.NETs['bornes'] - elif self.proprietaire().__class__ == AssociationCrans: + elif isinstance(self.proprietaire(), AssociationCrans): net = [ '0.0.0.0/0' ] else: try: @@ -2551,7 +2542,7 @@ class Machine(base_classes_crans): # Reconfiguration firewalls et dhcps if reconf_ip: self.services_to_restart('macip', reconf_ip) - if self.__typ == 'wifi': + if isinstance(self, MachineWifi): self.services_to_restart('ragnarok-dhcp') else: self.services_to_restart('rouge-dhcp') @@ -2568,7 +2559,7 @@ class Machine(base_classes_crans): self.services_to_restart('conf_wifi_ng') # Reconfiguration clients wifi ? - if self.__typ in ('wifi', 'borne') \ + if isinstance(self, MachineWifi) or isinstance(self, BorneWifi) \ and ('ipHostNumber' in self.modifs or 'host' in self.modifs or 'macAddress' in self.modifs): self.services_to_restart('conf_wifi_ng') @@ -2610,7 +2601,7 @@ class Machine(base_classes_crans): self._delete(self.dn, comment) # Services à redémarrer - if self.__typ == 'wifi': + if isinstance(self, MachineWifi): self.services_to_restart('conf_wifi_ng') self.services_to_restart('ragnarok-dhcp') else: @@ -2656,18 +2647,19 @@ class Machine(base_classes_crans): class MachineFixe(Machine): """ Classe de définition d'une machine fixe """ - objectClass = "machineFixe" - + def __init__(self, parent_or_tuple, typ='fixe', conn=None): Machine.__init__(self, parent_or_tuple, typ, conn) class MachineWifi(Machine): """ Classe de définition d'une machine wifi """ - objectClass = "machineWifi" def __init__(self, parent_or_tuple, typ='wifi', conn=None): Machine.__init__(self, parent_or_tuple, typ, conn) + if not isinstance(parent_or_tuple, tuple): + # Initialisaton d'une nouvelle machine wifi + self.ipsec(True) def ipsec(self, clef=None): """ @@ -2691,7 +2683,6 @@ class MachineWifi(Machine): class MachineCrans(Machine): """ Classe de définition d'une machine du Crans """ - objectClass = "machineCrans" def __init__(self, parent_or_tuple, typ='fixe', conn=None): Machine.__init__(self, parent_or_tuple, typ, conn) @@ -2699,12 +2690,11 @@ class MachineCrans(Machine): class BorneWifi(Machine): """ Classe de définition d'une borne wifi """ - objectClass = "borneWifi" def __init__(self, parent_or_tuple, typ='borne', conn=None): Machine.__init__(self, parent_or_tuple, typ, conn) if not isinstance(parent_or_tuple, tuple): - # Initialisaton par défaut spécifique + # Initialisaton d'une nouvelle borne wifi self._data['canal'] = ['2047'] self._data['puissance'] = ['60'] self._data['hotspot'] = ['FALSE']