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
|
@ -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+$' }
|
NETs_regexp = { 'all' : '^138\.231\.1(3[6789]|4[0123456789]|5[01])\.\d+$' }
|
||||||
|
|
||||||
# Domaines dans lesquels les machines sont placées suivant leur type
|
# Domaines dans lesquels les machines sont placées suivant leur type
|
||||||
domains = { 'wifi' : 'wifi.crans.org' ,
|
domains = { 'machineFixe': 'crans.org',
|
||||||
'fixe' : 'crans.org' ,
|
'machineCrans': 'crans.org',
|
||||||
'borne': 'wifi.crans.org' }
|
'machineWifi': 'wifi.crans.org',
|
||||||
|
'borneWifi': 'wifi.crans.org' }
|
||||||
|
|
||||||
#######################
|
#######################
|
||||||
## Mail de bienvenue ##
|
## Mail de bienvenue ##
|
||||||
#######################
|
#######################
|
||||||
|
|
|
@ -2138,7 +2138,7 @@ class Machine(base_classes_crans):
|
||||||
filtre_idn = '(|(objectClass=machineFixe)(objectClass=machineWifi)'
|
filtre_idn = '(|(objectClass=machineFixe)(objectClass=machineWifi)'
|
||||||
filtre_idn += '(objectClass=machineCrans)(objectClass=borneWifi))'
|
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 :
|
parent_or_tuple est :
|
||||||
* soit une instance d'une classe pouvant posséder une machine
|
* soit une instance d'une classe pouvant posséder une machine
|
||||||
|
@ -2146,25 +2146,29 @@ class Machine(base_classes_crans):
|
||||||
sera alors associée.
|
sera alors associée.
|
||||||
* soit directement le tuple définissant une machine (tel que
|
* soit directement le tuple définissant une machine (tel que
|
||||||
retourné par les fonctions de recherche ldap)
|
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'
|
Pour l'édition d'une machine, mode devra être égal à 'w'
|
||||||
Attention, si typ ='w' mais si l'objet est déja locké il n'y a pas
|
Attention, si mode='w' mais si l'objet est déja locké il n'y a
|
||||||
d'erreur, vérifier l'obtention du lock grâce à la valeur de _modifiable
|
pas d'erreur, vérifier l'obtention du lock grâce à la valeur de
|
||||||
(si ='w' c'est bon)
|
_modifiable (si ='w' c'est bon)
|
||||||
|
|
||||||
conn est une instance de la classe de connexion à la base LDAP
|
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
|
self.conn = conn
|
||||||
if not self.conn:
|
if not self.conn:
|
||||||
self.connect()
|
self.connect()
|
||||||
|
|
||||||
self.modifs = {}
|
self.modifs = {}
|
||||||
t = parent_or_tuple.__class__
|
t = parent_or_tuple.__class__
|
||||||
if t == tuple:
|
if t == tuple:
|
||||||
# Initialisation avec données fournies
|
# Initialisation avec données fournies
|
||||||
self.dn = parent_or_tuple[0]
|
self.dn = parent_or_tuple[0]
|
||||||
if typ == 'w':
|
if mode == 'w':
|
||||||
try:
|
try:
|
||||||
self.lock(self.idn, self.id())
|
self.lock(self.idn, self.id())
|
||||||
self._modifiable = 'w'
|
self._modifiable = 'w'
|
||||||
|
@ -2176,36 +2180,23 @@ class Machine(base_classes_crans):
|
||||||
self._init_data = parent_or_tuple[1].copy()
|
self._init_data = parent_or_tuple[1].copy()
|
||||||
self._data = parent_or_tuple[1]
|
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
|
# Propriéraire inconnu mais ce n'est pas grave
|
||||||
self.__proprietaire = None
|
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
|
# Machine vide
|
||||||
self.__proprietaire = parent_or_tuple
|
self.__proprietaire = parent_or_tuple
|
||||||
self.dn = parent_or_tuple.dn
|
self.dn = parent_or_tuple.dn
|
||||||
self._data = { 'objectClass': [ self.objectClass ] }
|
self._data = {'objectClass': [self.objectClass]}
|
||||||
self._init_data = {}
|
self._init_data = {}
|
||||||
self.__typ = typ
|
|
||||||
self._modifiable = 'w'
|
self._modifiable = 'w'
|
||||||
|
|
||||||
chbre = self.__proprietaire.chbre()
|
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')
|
# raise ValueError(u'Il faut une chambre pour pouvoir posséder une machine fixe')
|
||||||
|
|
||||||
if chbre == '????':
|
if chbre == '????':
|
||||||
raise ValueError(u'ERREUR: la chambre du propriétaire est inconnue')
|
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:
|
else:
|
||||||
raise TypeError(u'Arguments invalides')
|
raise TypeError(u'Arguments invalides')
|
||||||
|
@ -2287,9 +2278,9 @@ class Machine(base_classes_crans):
|
||||||
# Ajout du domaine si necessaire
|
# Ajout du domaine si necessaire
|
||||||
if new.find('.') == -1:
|
if new.find('.') == -1:
|
||||||
try:
|
try:
|
||||||
new += '.' + config.domains[self.__typ]
|
new += '.' + config.domains[self.objectClass]
|
||||||
except:
|
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 ?
|
# Pas déja pris ?
|
||||||
if self.exist('(|(host=%s)(hostAlias=%s))' % (new, new)):
|
if self.exist('(|(host=%s)(hostAlias=%s))' % (new, new)):
|
||||||
|
@ -2387,7 +2378,7 @@ class Machine(base_classes_crans):
|
||||||
if ip == None:
|
if ip == None:
|
||||||
if self._data.has_key('ipHostNumber'):
|
if self._data.has_key('ipHostNumber'):
|
||||||
return decode(self._data['ipHostNumber'][0])
|
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 ''
|
return ''
|
||||||
else:
|
else:
|
||||||
return '<automatique>'
|
return '<automatique>'
|
||||||
|
@ -2395,15 +2386,15 @@ class Machine(base_classes_crans):
|
||||||
l, ip = preattr(ip)
|
l, ip = preattr(ip)
|
||||||
|
|
||||||
# Dans quel réseau la machine doit-elle être placée ?
|
# 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":
|
if self.proprietaire().etudes(0) == "ENS" and self.proprietaire().etudes(1) == "Pers":
|
||||||
# Personnel ENS
|
# Personnel ENS
|
||||||
net = config.NETs['wifi-ens']
|
net = config.NETs['wifi-ens']
|
||||||
else:
|
else:
|
||||||
net = config.NETs['wifi']
|
net = config.NETs['wifi']
|
||||||
elif self.__typ == 'borne':
|
elif isinstance(self, BorneWifi):
|
||||||
net = config.NETs['bornes']
|
net = config.NETs['bornes']
|
||||||
elif self.proprietaire().__class__ == AssociationCrans:
|
elif isinstance(self.proprietaire(), AssociationCrans):
|
||||||
net = [ '0.0.0.0/0' ]
|
net = [ '0.0.0.0/0' ]
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
|
@ -2551,7 +2542,7 @@ class Machine(base_classes_crans):
|
||||||
# Reconfiguration firewalls et dhcps
|
# Reconfiguration firewalls et dhcps
|
||||||
if reconf_ip:
|
if reconf_ip:
|
||||||
self.services_to_restart('macip', reconf_ip)
|
self.services_to_restart('macip', reconf_ip)
|
||||||
if self.__typ == 'wifi':
|
if isinstance(self, MachineWifi):
|
||||||
self.services_to_restart('ragnarok-dhcp')
|
self.services_to_restart('ragnarok-dhcp')
|
||||||
else:
|
else:
|
||||||
self.services_to_restart('rouge-dhcp')
|
self.services_to_restart('rouge-dhcp')
|
||||||
|
@ -2568,7 +2559,7 @@ class Machine(base_classes_crans):
|
||||||
self.services_to_restart('conf_wifi_ng')
|
self.services_to_restart('conf_wifi_ng')
|
||||||
|
|
||||||
# Reconfiguration clients wifi ?
|
# 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):
|
and ('ipHostNumber' in self.modifs or 'host' in self.modifs or 'macAddress' in self.modifs):
|
||||||
self.services_to_restart('conf_wifi_ng')
|
self.services_to_restart('conf_wifi_ng')
|
||||||
|
|
||||||
|
@ -2610,7 +2601,7 @@ class Machine(base_classes_crans):
|
||||||
self._delete(self.dn, comment)
|
self._delete(self.dn, comment)
|
||||||
|
|
||||||
# Services à redémarrer
|
# Services à redémarrer
|
||||||
if self.__typ == 'wifi':
|
if isinstance(self, MachineWifi):
|
||||||
self.services_to_restart('conf_wifi_ng')
|
self.services_to_restart('conf_wifi_ng')
|
||||||
self.services_to_restart('ragnarok-dhcp')
|
self.services_to_restart('ragnarok-dhcp')
|
||||||
else:
|
else:
|
||||||
|
@ -2656,18 +2647,19 @@ class Machine(base_classes_crans):
|
||||||
|
|
||||||
class MachineFixe(Machine):
|
class MachineFixe(Machine):
|
||||||
""" Classe de définition d'une machine fixe """
|
""" Classe de définition d'une machine fixe """
|
||||||
objectClass = "machineFixe"
|
|
||||||
|
|
||||||
def __init__(self, parent_or_tuple, typ='fixe', conn=None):
|
def __init__(self, parent_or_tuple, typ='fixe', conn=None):
|
||||||
Machine.__init__(self, parent_or_tuple, typ, conn)
|
Machine.__init__(self, parent_or_tuple, typ, conn)
|
||||||
|
|
||||||
|
|
||||||
class MachineWifi(Machine):
|
class MachineWifi(Machine):
|
||||||
""" Classe de définition d'une machine wifi """
|
""" Classe de définition d'une machine wifi """
|
||||||
objectClass = "machineWifi"
|
|
||||||
|
|
||||||
def __init__(self, parent_or_tuple, typ='wifi', conn=None):
|
def __init__(self, parent_or_tuple, typ='wifi', conn=None):
|
||||||
Machine.__init__(self, parent_or_tuple, typ, conn)
|
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):
|
def ipsec(self, clef=None):
|
||||||
"""
|
"""
|
||||||
|
@ -2691,7 +2683,6 @@ class MachineWifi(Machine):
|
||||||
|
|
||||||
class MachineCrans(Machine):
|
class MachineCrans(Machine):
|
||||||
""" Classe de définition d'une machine du Crans """
|
""" Classe de définition d'une machine du Crans """
|
||||||
objectClass = "machineCrans"
|
|
||||||
|
|
||||||
def __init__(self, parent_or_tuple, typ='fixe', conn=None):
|
def __init__(self, parent_or_tuple, typ='fixe', conn=None):
|
||||||
Machine.__init__(self, parent_or_tuple, typ, conn)
|
Machine.__init__(self, parent_or_tuple, typ, conn)
|
||||||
|
@ -2699,12 +2690,11 @@ class MachineCrans(Machine):
|
||||||
|
|
||||||
class BorneWifi(Machine):
|
class BorneWifi(Machine):
|
||||||
""" Classe de définition d'une borne wifi """
|
""" Classe de définition d'une borne wifi """
|
||||||
objectClass = "borneWifi"
|
|
||||||
|
|
||||||
def __init__(self, parent_or_tuple, typ='borne', conn=None):
|
def __init__(self, parent_or_tuple, typ='borne', conn=None):
|
||||||
Machine.__init__(self, parent_or_tuple, typ, conn)
|
Machine.__init__(self, parent_or_tuple, typ, conn)
|
||||||
if not isinstance(parent_or_tuple, tuple):
|
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['canal'] = ['2047']
|
||||||
self._data['puissance'] = ['60']
|
self._data['puissance'] = ['60']
|
||||||
self._data['hotspot'] = ['FALSE']
|
self._data['hotspot'] = ['FALSE']
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue