Commit graph

426 commits

Author SHA1 Message Date
Valentin Samir
0e9404ae93 [test.py] utilisation de contexts pour les écritures de la base ldap 2014-02-24 21:51:34 +01:00
Valentin Samir
15f92fbf21 [objets.facture] Sucre syntaxique 2014-02-24 21:44:34 +01:00
Valentin Samir
ac0445b7e3 [objets.__setitem__] On libère les locks des valeurs que l'on oublie 2014-02-24 21:44:00 +01:00
Valentin Samir
1312039a55 [lc_ldap._find_id] Dans le cas non strictement croissant des id, on utilise un set pour stocker les id déjà pris
En effet, en effectue ensuite un nombre important de fois l'opération i in nonfree.
Avec des liste l'opération est en O(n) alors qu'elle est en O(1) avec des set
2014-02-24 21:42:22 +01:00
Valentin Samir
955a4f2820 [lc_ldap, objets] Création des objets ldap avec un lockid bien a eux 2014-02-24 21:40:03 +01:00
Valentin Samir
4f88ae824a [ldap_locks] Renommage des erreurs ldap en erreur de Lock, factorisation, reformatage 2014-02-24 21:31:16 +01:00
Valentin Samir
320300d85c [doc] Ajouts des fichiers objets shortcuts variables services ldap_locks cimetiere crans_utils à la documentation 2014-02-24 17:17:00 +01:00
Valentin Samir
172c1935ce [lc_ldap/_find_id] C'est bien aussi de ne pas oublier qu'il y a des id qui ne sont pas strictement croissant 2014-02-24 17:15:40 +01:00
Valentin Samir
9aa0de6539 Travaux sur les locks, ajout de context manager pour les cransLdapObject
D'une façon général, on s'assure que tous les locks concernant un cransLdapObject
sont bien mis avec l'identifiant de lock cransLdapObject.lockId.
Avant d'entrer dans le context manager du cransLdapObject, on fait bien attention
d'intercepter les exceptions pouvant être levée pour libérer les locks potentiellement
déjà posés avant de propager l'exception.

Si on essayer d'appeler une methode d'enregistrement (.save() .delete() .create()) sans
utiliser un context manager, on affiche un warning sur stderr.

À terme ça serait bien de n'utiliser que des context manager pour être sûr qu'on ne
laisse pas de lock traîner dans la base de donnée.

Il faut bien sûr faire attention de bien ajouter les lock avec l'identifiant cransLdapObject.lockId
puisqu'on se base là dessus pour les libérer.

Si on a utiliser une context manager, en en sortant, on rend le cransLdapObject read only
(de façon douce en modifiant le cransLdapObject.mode et de façon force en changeant les methodes
save create delete pour lever l'exception EnvironmentError("Hors du context, impossible de faire des écritures"))
2014-02-24 14:48:03 +01:00
Valentin Samir
63b9f89b6f [ldap_locks] Affichage du temps restant avant expiration d'un lock si une LockError est levée 2014-02-24 14:47:27 +01:00
Valentin Samir
954ba580b6 [crans_utils] process_status sans utiliser subprocess 2014-02-24 14:46:52 +01:00
Valentin Samir
a485d4b8b2 [objets] Impossible de supprimer un adhérent respo ou imprimeur d'un club 2014-02-24 11:45:52 +01:00
Valentin Samir
13db266a4c [test] Affichage des objets ne passant pas les tests 2014-02-24 11:45:30 +01:00
Valentin Samir
575075fe18 [lc_ldap] Ajout des xids dans ressucite 2014-02-24 11:45:08 +01:00
Valentin Samir
68c86e7e00 [lc_ldap._find_id] On essaye de cacher le dernier id connu et de ne récupérer que les id plus grand
C'est beaucoup plus rapide que récupérer tous les mid ou tous les aid.
BEAUCOUP !!!!
plus de détails dans les commentaires du code.
2014-02-24 11:34:27 +01:00
Daniel STAN
68587e3ebb attributs: allow macAddress "<automatique>" 2014-02-23 19:25:11 +01:00
Valentin Samir
fefad357fc [attributs, objets] Affinage des permissions sur les certificats 2014-02-23 16:06:11 +01:00
Valentin Samir
f5347106c7 [attributs] Fonctions de test d'egalité des attributs 2014-02-23 15:30:04 +01:00
Valentin Samir
626851baca [objets, attributs] Vérifications de contraintes liées au certificats d'un machine 2014-02-23 15:29:26 +01:00
Daniel STAN
afb436f706 hide ipv6 si cachée 2014-02-23 02:42:57 +01:00
Valentin Samir
99ba3a8915 [lc_ldap, objets] vivent les __repr__ 2014-02-23 00:02:00 +01:00
Valentin Samir
7df0a4e1a0 [services] Appel une seule fois à time.time() lors d'une recherche pour reconfiguration 2014-02-23 00:01:09 +01:00
Valentin Samir
3f1712e908 [services] reconfiguration du dns si modification d'un certificat avec du TLSA 2014-02-23 00:00:32 +01:00
Valentin Samir
f6620a2643 [attributs/hostCert] join veut absoluement des strings 2014-02-22 23:14:27 +01:00
Valentin Samir
43f4ba650a Cas d'un attribut binary
C'est un peu moche comme on s'est efforcé que dans lc_ldap tout soit un unicode et que
unicode n'a pas de sens pour un objet binaire. Avec le champ python_type = str sur les
attributs bianire, ça a tout de même l'air d'aller.
2014-02-22 23:09:29 +01:00
Valentin Samir
44936fde9d Ajout d'objets certifcats comme enfant des objets machine 2014-02-22 23:01:56 +01:00
Valentin Samir
8eb8aa2ba6 sur les methodes .proprio() et .machines() possibilité de spécifier un mode différent 2014-02-22 19:02:54 +01:00
Valentin Samir
78b50415fe [attributs] Des test sur la correction syntaxique de ce qu'on met dans un sshFingerprint
En gros de ce que le script qui génère le dns s'attend à trouver :
la clef publique en entière sous la forme
type base64 commentaire
2014-02-21 18:02:34 +01:00
Valentin Samir
b882c41683 Ajout des méthodes __ne__ sur les cransLdapObjet et Attr pour tester le non égalité 2014-02-21 18:02:02 +01:00
Valentin Samir
592cd16357 Fonction de hash pour les cransLdapObject. Seulement en ro. En rw on lève une exception.
En effet, python n'aime pas que les objets multables soient utilisé dans des sets
ou comme clef de dictionnaire, du coup, on va essayer de ne pas le contrarier.
De toute façon, c'est logique vu que la valeur du hash change si on édite l'objet.
2014-02-21 18:00:19 +01:00
Valentin Samir
fe14eb9d4b [attributs] __getattr__ ce que je pensais mettre dans le commit 838c4e9a73 2014-02-19 19:59:05 +01:00
Valentin Samir
37b5dc5a0c [filter2, filter3] pyparsing.printables ne prend en compte que de l'ASCII, donc on utilise les char unicode
Pour ça on est obligé (si on utilise pyparsing) de générer la liste de tous les charactère unicode.
Daniel fait remarquer que ça n'est pas joli d'instancier une chaine de 63Ko quand on veux parser quelque chose.
On ne le fait tout de même que de façon paresseuse la première fois que l'on a besoin de parser quelquechose
(dans filter2, filter3 est juste un proof of concept).
Pour faire du human_to_ldap, on peut utiliser directement la fonction de filter.py qui n'est pas impacté
par le problème, mais pour ressucite, on a pour le moment pas le choix puisqu'on utilise la fonction
human_to_list qui n'est fournie que dans les modules filter2 et filter3.
2014-02-19 19:31:32 +01:00
Valentin Samir
cf4c63de70 [objets] Simplification de paiement_ok carte_ok et cie du à l'ajouts de methdes sur Attr cette dernière semaine. 2014-02-19 19:04:34 +01:00
Valentin Samir
fa8aef7d18 [objets] "Proposer de filtrer les blacklistes avec un arg supplémentaire ?" c'est fait 2014-02-19 19:03:36 +01:00
Valentin Samir
840cef04c7 [objets/machine] Pour blacklist_actif on appel plutôt super().blacklist_actif au lieu de la réimplémenté 2014-02-19 19:02:41 +01:00
Valentin Samir
838c4e9a73 [attributs] ajout d'un __getattr__ sur Attr renvoyant vers getattr(self.value)
À noter que __getattr__ n'est appelé que si l'attribut n'existe pas déjà.
Ça permet d'utiliser l'objet Attr comme sa valeur pour la plupart des opération
de lecture simple.
J'ai fait exprès de ne pas surcharger __setattr__, parce que sinon, on ne sait
plus trop ce qui va être affecté. J'estime que les écriture doivent être traités au
cas par cas comme pour blacklist ou pour article.
2014-02-19 18:52:01 +01:00
Valentin Samir
6e6f87bf40 [attributs] Ajout d'une methode __hash__ à la classe Attrs 2014-02-18 21:37:51 +01:00
Valentin Samir
45947b1871 [attributs] sshFingerping : représentation ldap comme in dict {type, clef, commentaire} 2014-02-17 22:08:07 +01:00
Valentin Samir
7b7511e493 [attributs] Possibilité de donner à manger un dicrionnaire à une blackliste 2014-02-17 22:07:42 +01:00
Valentin Samir
525d7941ff [attributs] Pitit problème de parenthesage logique 2014-02-17 22:07:19 +01:00
Valentin Samir
012895ca0b [attributs] Les listes ne sont pas shashable du coup on n'ajoute pas de [] dans le set modifiables de la classe droits 2014-02-17 22:06:34 +01:00
Valentin Samir
a17f7ca133 [attributs] Ajout de __delitem__ à AttrsList 2014-02-17 22:05:59 +01:00
Daniel STAN
ff62cda2af printing: afficher constructeur de la mac
Killer feature ;o
2014-02-17 18:36:24 +01:00
Valentin Samir
6fffbd7bd3 [attributs] Type python à int pour la classe responsable 2014-02-14 02:20:10 +01:00
Valentin Samir
03c45b8889 [attributs, objets] Possibilité d'utiliser directement les methodes sur les liste renvoyé par __getitems__ sur un cransLdapObjet
Au lieu d'être obligé de faire à chaque fois obj[attr] = obj[attr] + [val]
on peut faire directement obj[attr].append(val).
Si on affecte obj[attr] à une variable (l=obj[attr])
et que l'on modifie la variable (l.append(val)), a la fois la variable et obj[attr] sont modifié
et maintenue à jour.
Attention toutefois :
 l1 = obj[attr]
 l2 = obj[attr]
 l1 == l2 <=> True

 l1.append(val)
 l1 == obj[attr] <=> True
 l1 == l2 <=> False
 l2 == obj[attr] <=> False

et l2.append(val) lèvera une exception.
2014-02-14 02:14:44 +01:00
Valentin Samir
8739640687 [attributs] Compare methode entre les attributs 2014-02-14 02:06:22 +01:00
Valentin Samir
aea8e9d974 [attributs] assert value is not only unicode but can also be of the specified python type 2014-02-14 00:45:12 +01:00
Valentin Samir
0486929a5a [objets] Propagation du default donné par .get dans .__getitem__ 2014-02-14 00:39:12 +01:00
Valentin Samir
ca170c19f4 Ajout de methodes pour tester l'égalité d'objets ou d'attributs,
possibilité de fournir une valeur du bon type python à un attribut
test booléen sur s'attribut propagée à sa valeur.

Le teste d'égalité sur un attribut peut se faire avec la sérialisation de
l'attribut ou le type python qui le représente.
Le teste d'égalité sur les cransLdapObjet se fait sur le dn et ses attributs.
De plus, on peut aussi le testé avec un chaine de caractère :
 "host=freebox.crans.org" == MachineCrans(...) renvoie True ssi
MachineCrans(...) a l'attribut host, qu'il est globalement unique et vaut
freebox.crans.org

vala vala
2014-02-13 22:34:00 +01:00
Valentin Samir
e9d092698a Merge branch 'master' of charybde.crans.org:/git/ldap 2014-02-12 00:53:40 +01:00