Project

General

Profile

Tâche #20982

Updated by Daniel Dehennin about 7 years ago

Pour reproduire :

* Démarrer *@Ubuntu Xenial English no LVM + context (amd64)@*
* Appliquer la procédure pour basculer le serveur en EOLE (pensez à ajouter le dépôt candidat en attendant que #20938 passe en stable)
* Copier le fichier de configuration *@aca.eolebase@*
* Ajuster l’adresse IP *@CreoleSet adresse_ip_eth0 <IP VUE DANS OPENNEBULA>@*
* Exécuter *@instance@*

Première question :
<pre>
Create new administrator user account eole2? [yes/no]
[non] :
################################################
# Modificating password for user account eole2 #
################################################
New password:
Confirming new password:
Create new administrator user account eole3? [yes/no]
[non] : no
################################################
# Modificating password for user account eole3 #
################################################
New password:
Confirming new password:
Create new administrator user account eole4? [yes/no]
[non] : non
################################################
# Modificating password for user account eole4 #
################################################
New password:
</pre>

Il semble que *@non@* ne corresponde pas à *@yes/no@* ;-)

L’API de *@question_ouinon@* est très étrange :

* Cette fonction permet de poser une question à l’utilisateur avec seulement deux réponses possibles *@oui@* ou *@non@*
* On passe les valeurs par défaut (interactive et non-interactive) en tant que chaîne de caractère
* La fonction renvoi la chaîne de caractère correspondant au choix de l’utilisateur
* L’appelant doit vérifier la chaîne retournée par la fonction par rapport à la chaîne de caratère voulue et agir en conséquence

Par example, dans creole:creole/reconfigure.py@c11808e#639 :

<pre><code class="python">
prompt = _('Create new administrator user account {0}?')
if user != 'eole' and ihm.question_ouinon(prompt.format(user)) == _(u'no'):
break
</code></pre>

Nous pourrions définir une nouvelle fonction :

* Utilisation des booléens natifs à python *@True@* et *@False@*
* Retourne un booléen
** *@True@* l’utilisateur à choisi *@oui/yes@*
** *@False@* l’utilisateur à choisi *@non/false@*

<pre><code class="python">
def prompt_boolean(prompt, interactive=True, default=False, default_interactive=None, level='info'):
"""Prompt the user and return her choice

:param `str` prompt: prompt string to display to the user
:param `bool` interactive: I don't know what's for
:param `bool` default: default value
:param `bool` default_interactive: default value if interactive is ``True``
:param `str` level: log level

"""
...
</code></pre>

Cela permettrait de remplacer le code reconfigure par :

<pre><code class="python">
prompt = _('Create new administrator user account {0}?')
if user != 'eole' and not ihm.prompt_boolean(prompt.format(user)):
break
</code></pre>

L’ancienne fonction serait notée *@deprecated@*.

J’ai trouvé 25 appels à *@question_ouinon@* (shell et python) dans les dépôts EOLE, aucun dans les dépôts MTES et Envole:

<pre>
./arv/posttemplate/00-arv: if question_ouinon(question, level='warn') == 'oui':
./conf-sphynx/scripts/init_sphynx: if question_ouinon(question, level='warn') == 'non':
./conf-sphynx/scripts/init_sphynx: if question_ouinon(question, level='warn') == 'non':
./conf-sphynx/scripts/init_sphynx: if question_ouinon(question, level='warn') == 'oui':
./creole/bin/Maj-Auto: assert question_ouinon(_(u"Do you wish to proceed?")) == 'oui'
./creole/creole/reconfigure.py: if ihm.question_ouinon(_(u"Proceeding with instantiation ?"),
./creole/creole/reconfigure.py: if ihm.question_ouinon(_(u"Force execution?"),
./creole/creole/reconfigure.py: if user != 'eole' and ihm.question_ouinon(prompt.format(user)) == _(u'no'):
./creole/creole/reconfigure.py: if ihm.question_ouinon(_(u"""An update is recommended.
./creole/creole/reconfigure.py: if ihm.question_ouinon(_(u"""Reboot is necessary.
./creole/upgrade/Upgrade-Auto: if question_ouinon(confirmation_msg.format(args.release)) != 'oui':
./eole-password/bin/eolepasswd: res = ihm.question_ouinon(question, interactive=True, default='non')
./eole-vpn/scripts/active_rvp: rep = question_ouinon("configurer en mode manuel", default='non')
./eole-vpn/scripts/active_rvp: rep = question_ouinon("Etes-vous certain de vouloir désactiver le VPN ?", default='non')
./eolesql/scripts/mysql_pwd.py: if question_ouinon('\nVoulez-vous que les autres mots de passe soient modifiés ?') == 'non':
./python-pyeole/pyeole/ihm.py:def question_ouinon(question, interactive=True, default='non',
./python-pyeole/pyeole/ihm.py: raise ValueError(_(u'question_ouinon : default must be "yes" or "no"'))
./python-pyeole/pyeole/ihm.py: raise ValueError(_(u'question_ouinon : default must be "yes" or "no"'))
./python-pyeole/pyeole/ihm.py: raise ValueError(_(u'question_ouinon : level must be "info", "warn" or "err"'))
./scribe-backend/scripts/suppression_utilisateur.py: sup_rep = question_ouinon("Voulez-vous supprimer les répertoires personnels ?") == 'oui'
./scribe-backend/scripts/suppression_utilisateur.py: confirm = question_ouinon(msg.format(','.join(liste_users))) == 'oui'
./eole-annuaire/scripts/active_replication.py: elif question_ouinon("Utiliser le protole ldaps (port 636) pour la réplication", default='oui') == 'oui':
./eole-annuaire/scripts/active_replication.py:if question_ouinon("Répliquer également les groupes", 'non') == 'oui':
./eole-annuaire/scripts/active_replication.py:if question_ouinon("Ajouter des uid à exclure de la réplication", 'non') == 'oui':
./eole-common/sbin/gen_conteneurs: if ihm.question_ouinon(question) == 'oui':
</pre>

Back