On se dbarrasse de __typ
darcs-hash:20060326132858-68412-834f82188bf86e0de594a0aaa14bbfc6ba996051.gz
This commit is contained in:
parent
c2fe8df391
commit
821905a295
2 changed files with 34 additions and 43 deletions
|
@ -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 '<automatique>'
|
||||
|
@ -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']
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue