Projet

Général

Profil

Scénario #35033

Mis à jour par Joël Cuissinat il y a plus d'un an

h1. constat

Dans ma variante seth j'avais ajouté les paquets eole-fichier-quota et eole-ad-dc-pso (ils étaient marqué comme installé mais non déclaré).

Suite à l'inclusion de ces paquets dans le module (#34762), j'ai une série d'erreurs qu'il est difficile a interprété.

L'erreur primaire est la présence dans les logs :

* @nov. - nov. 19 19:48:36 zephir zephir_backend[461261]: [-] Erreur de lecture de la configuration du serveur 23 ('int' object has no attribute '__cmp__')@ '__cmp__')
* - il est impossible de lancer gen_config sur le serveur en s'identifiant sur Zéphir

Les problèmes :

1/ dans gen_config lancé sur le serveur distant on a une erreur incompéhensible :

dans /usr/lib/python3/dist-packages/eolegenconfig/lib.py

il y a : @code, code, res = proxy.serveurs.get_dico(zephir['server_id'], 'modif_config')@ 'modif_config')

Il n'y a pas de vérification du code. S'il y a une erreur "res" est alors une string.
L'eval sur la string renvoi une erreur.

2/ problème de comparaison dans /usr/lib/python3/dist-packages/zephir/utils/creolewrap.py

__cmp__ n'existe plus en python3 :

<pre>
def sort_dicts(dict1, dict2):
name1 = os.path.basename(dict1[0])
name2 = os.path.basename(dict2[0])
if name1 == name2:
# noms identiques: ordre des répertoires conservé
return dict1[1].__cmp__(dict2[1])
elif name1 > name2:
return 1
else:
return -1
</pre>

3/ problème identique dans /usr/lib/python3/dist-packages/creole/xmlreflector.py

<pre>
def sort_group(file1, file2):
if file1[0] == file2[0]:
# sort by initial xmlfolder order if same name
return file1[1].__cmp__(file2[1])
# sort by filename
elif file1[0] > file2[0]:
return 1
else:
return -1
</pre>

4/ une fois tout cela corrigé, l'erreur n'est toujours pas compréhensible :

<pre>
zephir_backend[467913]: #011creole.error.CreoleDictConsistencyError: b'D\xc3\xa9j\xc3\xa0 d\xc3\xa9fini dans un autre fichier XML, /etc/warnquota.conf ne peut \xc3\xaatre cr\xc3\xa9\xc3\xa9 de nouveau'
</pre>

h1. Proposition

- gen_config devrait interpréter correctement le code retour Zéphir
- logiquement il ne devrait pas y avoir 2 fois le même nom de fichier en dehors du cadre de Zéphir. En effet, sur un serveur tous les fichiers sont chargés depuis un répertoire unique. Il ne peut pas y avoir 2 fois un même fichier avec le même nom.
Sur Zéphir on pourrait détecter que les liens symboliques pointes vers le même fichier et faire une erreur explicite.

Retour