Projet

Général

Profil

Scénario #29564

Faire fonctionner EoleDB sur EOLE 2.8.0 et le passer en python3

Ajouté par Joël Cuissinat il y a environ 4 ans. Mis à jour il y a environ 4 ans.

Statut:
Terminé (Sprint)
Priorité:
Normal
Assigné à:
Catégorie:
-
Début:
10/02/2020
Echéance:
20/03/2020
% réalisé:

100%

Points de scénarios:
4.0
Restant à faire (heures):
0.00 heure
Estimation basée sur la vélocité:
Release:
Liens avec la release:
Auto

Description

run-parts: executing /usr/share/eole/posttemplate/01-eoledb instance
Start Systemd service mysql [  OK  ]
/usr/bin/eole_db_gen:152: YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. 
Please read https://msg.pyyaml.org/load for full details.
 conf = yaml.load(yml_conf)
'EoleDbConnector' object has no attribute 'dbtype'
'EoleDbConnector' object has no attribute 'dbtype'
Stop Systemd service mysql [  OK  ]

Solutions à mettre en œuvre

Critères d'acceptation


Sous-tâches

Tâche #29693: Passer le code en Python3FerméMatthieu Lamalle

Tâche #29694: Mettre à jour les requêtes SQLFerméMatthieu Lamalle


Demandes liées

Lié à Distribution EOLE - Tâche #29713: Validation du scénario : Faire fonctionner EoleDB sur EOLE 2.8.0 et le passer en python3 Fermé 05/03/2020

Révisions associées

Révision 22c004a6 (diff)
Ajouté par Joël Cuissinat il y a environ 4 ans

eole_db_gen : fix YAMLLoadWarning on EOLE 2.8.0

Ref: #29564

Révision 18c40f1b (diff)
Ajouté par Joël Cuissinat il y a environ 4 ans

EoleDB : update imports for EOLE 2.8.0

Ref: #29564

Historique

#1 Mis à jour par Joël Cuissinat il y a environ 4 ans

Visiblement pylint signale le soucis dès la 2.6.2 :

root@scribe:~# pylint /usr/lib/python2.7/dist-packages/eoledb/eoledbconnector.py 
No config file found, using default configuration
************* Module eoledb.eoledbconnector
W: 16, 0: Relative import 'eoledberrors', should be 'eoledb.eoledberrors' (relative-import)
W: 21, 4: Relative import 'eoledbsqlite', should be 'eoledb.eoledbsqlite' (relative-import)
W: 27, 4: Relative import 'eoledbpg', should be 'eoledb.eoledbpg' (relative-import)
W: 33, 4: Relative import 'eoledbmysql', should be 'eoledb.eoledbmysql' (relative-import)
C: 39, 0: Missing class docstring (missing-docstring)
E: 57,66: Instance of 'EoleDbConnector' has no 'dbtype' member (no-member)
R: 39, 0: Too few public methods (0/2) (too-few-public-methods)
W: 15, 0: Unused import yaml (unused-import)

-----------------------------------
Your code has been rated at 6.84/10

#2 Mis à jour par Joël Cuissinat il y a environ 4 ans

Sur Scribe 2.8.0, on voit le problème car le backend MySQL n'arrive à se charger :

root@scribe:~# python /usr/lib/python2.7/dist-packages/eoledb/eoledbmysql.py 
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/eoledb/eoledbmysql.py", line 14, in <module>
    from _mysql_exceptions import OperationalError
ImportError: No module named _mysql_exceptions

Il faut remplacer cet import par :

from MySQLdb._exceptions import OperationalError

#3 Mis à jour par Joël Cuissinat il y a environ 4 ans

  • Statut changé de Nouveau à Résolu
  • Assigné à mis à Joël Cuissinat
  • % réalisé changé de 0 à 100

#4 Mis à jour par Joël Cuissinat il y a environ 4 ans

  • Statut changé de Résolu à En cours

#5 Mis à jour par Joël Cuissinat il y a environ 4 ans

C'est mieux mais pas suffisant car EoleDB est également sensé effectuer des "GRANT" sur les bases de données mais il utilise toujours les anciennes syntaxes !

--
eoledb/eoledbmysql.py-                if self.__userExists__(self.dbuser, self.dbhost) is False:
eoledb/eoledbmysql.py-                    req = "grant all privileges on {0}.*".format(self.dbname)
eoledb/eoledbmysql.py-                    req += " to '{0}'@'{1}'".format(self.dbuser, self.dbhost)
eoledb/eoledbmysql.py:                    req += " identified by '{0}'".format(self.dbpass)
--
eoledb/eoledbmysql.py-                if self.__userExists__(self.dbuser, host) is False:
eoledb/eoledbmysql.py-                    req = "grant all privileges on {0}.*".format(self.dbname)
eoledb/eoledbmysql.py-                    req += " to '{0}'@'{1}'".format(self.dbuser, host)
eoledb/eoledbmysql.py:                    req += " identified by '{0}';".format(self.dbpass)

Pour l'instant sur un Scribe 2.8.0, les utilisateurs sympa et roundcube ne sont tout simplement pas créés.

#6 Mis à jour par Joël Cuissinat il y a environ 4 ans

  • Assigné à Joël Cuissinat supprimé
  • Tâche parente #29463 supprimé

#7 Mis à jour par Joël Cuissinat il y a environ 4 ans

  • Tracker changé de Tâche à Scénario
  • Echéance mis à 28/02/2020
  • Statut changé de En cours à Nouveau
  • Version cible changé de sprint 2020 04-06 Equipe MENSR à sprint 2020 07-09 Equipe MENSR
  • Début changé de 05/02/2020 à 10/02/2020
  • % réalisé changé de 100 à 0
  • Release mis à EOLE 2.8.0
  • Points de scénarios mis à 4.0

#8 Mis à jour par Joël Cuissinat il y a environ 4 ans

  • Version cible changé de sprint 2020 07-09 Equipe MENSR à Prestation Cadoles MEN 10-12

#9 Mis à jour par Joël Cuissinat il y a environ 4 ans

  • Sujet changé de Faire fonctionner EoleDB sur EOLE 2.8.0 à Faire fonctionner EoleDB sur EOLE 2.8.0 et le passer en python3
  • Description mis à jour (diff)

#10 Mis à jour par Joël Cuissinat il y a environ 4 ans

  • Projet changé de Distribution EOLE à eole-db

#11 Mis à jour par Joël Cuissinat il y a environ 4 ans

  • Lié à Tâche #29713: Validation du scénario : Faire fonctionner EoleDB sur EOLE 2.8.0 et le passer en python3 ajouté

#12 Mis à jour par Joël Cuissinat il y a environ 4 ans

  • Assigné à mis à Matthieu Lamalle

#13 Mis à jour par Joël Cuissinat il y a environ 4 ans

Plus d'erreur dans https://dev-eole.ac-dijon.fr/jenkins/job/2.8.0/job/test-instance-acascribe-2.8.0-amd64/ (job n°30) :

10:47:40             run-parts: executing /usr/share/eole/posttemplate/01-eoledb instance
10:47:46             Start Systemd service mysql                                             [  OK  ]
10:47:52             ROUNDCUBE :
10:47:52                 >>> Passwords     [OK]
10:47:52                 >>> Create      [OK]
10:48:04                 >>> Update      [OK]
10:48:04             SYMPA :
10:48:04                 >>> Passwords     [OK]
10:48:04                 >>> Create      [OK]
10:48:04                 >>> Update      [OK]
10:48:10             Stop Systemd service mysql                                              [  OK  ]

Les bases sympa et roundcube sont présentes :

root@scribe:~# echo "show databases" | mysql --defaults-file=/etc/mysql/debian.cnf
Database
bareos
controlevnc
information_schema
mysql
performance_schema
roundcube
sympa
sys

#14 Mis à jour par Joël Cuissinat il y a environ 4 ans

  • Statut changé de Nouveau à Terminé (Sprint)

Formats disponibles : Atom PDF