Projet

Général

Profil

Development #1173

Gestion du fichier de conf dans wcsctl

Ajouté par Jérôme Schneider il y a plus de 12 ans. Mis à jour il y a plus de 8 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Jérôme Schneider
Version cible:
-
Début:
27 décembre 2011
Echéance:
% réalisé:

90%

Temps estimé:
Patch proposed:
Planning:

Description

Je viens de faire un patch qui permet à wcs de charger sa configuration depuis un fichier en utilisant wcsctl. L'option existait déjà mais n'avait jamais été implémenté.

Voici comment fonctionne mon patch :

wcsctl -f /etc/maconf.cfg cmd [options]

Le fichier de conf est comme ceci (j'utilise le configparser de Python) :

[main]
app_dir = /var/lib/wcs
data_dir = /usr/share/wcs
auto_create_vhosts = true
use_long_traces = true
#error_log = /var/log/wcs/error.log
#redirect_on_unknown_vhost = http://www.mysite.com

Normalement ce patch ne change rien à l'existant.

Fred si c'est ok pour toi je le pousse dans le svn. J'ai écrit ce patch car sous Squeeze le lien vers wcs_cfg.py est effacé à chaque mise à jour.


Fichiers

wcs.manageconfigfile.diff (10,7 ko) wcs.manageconfigfile.diff Jérôme Schneider, 27 décembre 2011 16:39
wcs.manageconfigfile.diff (13,2 ko) wcs.manageconfigfile.diff Jérôme Schneider, 30 décembre 2011 19:17
wcs.manageconfigfile.diff (13,2 ko) wcs.manageconfigfile.diff Jérôme Schneider, 10 janvier 2012 16:21

Historique

#1

Mis à jour par Frédéric Péters il y a plus de 12 ans

Je pense que la raison initiale relève plus un problème de packaging qu'autre chose; cela étant, pourquoi pas ? Mais alors je préférerais ne pas instaurer de système hybride, et le plus simple c'est peut-être qu'un objet config soit passé à la classe Publisher (et donc create_publisher(cls, config=None)).

Ce serait aussi l'occasion de mettre raccord les noms des paramètres (i.e. on a aujourd'hui redirect_on_unknown_vhost vs missing_appdir_redirect), ça permettrait alors que des erreurs bêtes soient évitées, je pense à cette ligne du patch :

publisher_cls.auto_create_appdir = self.config.getboolean("main", "use_long_traces")

Par ailleurs, dans le patch, je ne vois pas vraiment la logique dans le passage des arguments effectivements passés dans le constructeur des commandes, les noms des variables m'apportent vraiment confusion, avec côte à côte "main_options", qui est déjà le résultat d'un traitement (le parse_args dans la méthode run), et "options", qui est lui la définition des options possibles à la commande. Je verrais plutôt

-    def execute(self, options, args):
+    def execute(self, base_options, sub_options, args):

Finalement, il y aurait aussi à inclure dans le patch les modifications à debian/wcs.init, pour que /etc/wcs/wcs.cfg soit utilisé par défaut, et donc aussi modifier le patch pour que ça n'explose pas si le fichier n'existe pas.

#2

Mis à jour par Jérôme Schneider il y a plus de 12 ans

On Tuesday 27 December 2011 18:16:28 you wrote:

La demande #1173 a été mise à jour par Frédéric Péters.

Je pense que la raison initiale relève plus un problème de packaging
qu'autre chose; cela étant, pourquoi pas ?

Oui clairement je peux m'en sortir dans le packaging mais ça me semble beaucoup
plus intéressant de faire le boulot dans w.c.s. Ca va nous permettre d'avoir
plusieurs instances de w.c.s. avec des configurations différentes.

Mais alors je préférerais ne
pas instaurer de système hybride, et le plus simple c'est peut-être qu'un
objet config soit passé à la classe Publisher (et donc
create_publisher(cls, config=None)).

Effectivement c'est mieux. (par contre dans ton exemple ça ne serait pas plus
create_publisher(self, config=None) ?)

Ce serait aussi l'occasion de mettre raccord les noms des paramètres (i.e.
on a aujourd'hui redirect_on_unknown_vhost vs missing_appdir_redirect), ça
permettrait alors que des erreurs bêtes soient évitées, je pense à cette
ligne du patch :

> publisher_cls.auto_create_appdir = self.config.getboolean("main",
> "use_long_traces") 

Oui je n'ai pas osé changé ça :)

Par ailleurs, dans le patch, je ne vois pas vraiment la logique dans le
passage des arguments effectivements passés dans le constructeur des
commandes, les noms des variables m'apportent vraiment confusion, avec
côte à côte "main_options", qui est déjà le résultat d'un traitement (le
parse_args dans la méthode run), et "options", qui est lui la définition
des options possibles à la commande. Je verrais plutôt

> -    def execute(self, options, args):
> +    def execute(self, base_options, sub_options, args):
> 

Ca ne me plaisait pas vraiment non plus. C'est parfait le base_options et le
sub_options.

Finalement, il y aurait aussi à inclure dans le patch les modifications à
debian/wcs.init, pour que /etc/wcs/wcs.cfg soit utilisé par défaut, et
donc aussi modifier le patch pour que ça n'explose pas si le fichier
n'existe pas.

Je fais un nouveau patch avec tout ça.

#3

Mis à jour par Jérôme Schneider il y a plus de 12 ans

Est-ce que j'en profite pour virer les options --app-dir et --data-dir qui me semble ne plus trop avoir d'intérêt avec ces modifs ? Le soucis c'est que ça va casser la compatibilité.

#4

Mis à jour par Frédéric Péters il y a plus de 12 ans

Je dirais qu'on peut les garder, elles overrident ce qui est défini dans le fichier de config.

#5

Mis à jour par Jérôme Schneider il y a plus de 12 ans

Un nouveau patch qui marche. Je n'ai pas fait exactement ce qu'il a été décidé plus haut mais je peux expliquer pourquoi. Pour l'harmonisation des noms je ferais ca après.

#6

Mis à jour par Thomas Noël il y a plus de 12 ans

  • Version cible mis à Au-quotidien 2012.1
#7

Mis à jour par Jérôme Schneider il y a plus de 12 ans

#8

Mis à jour par Thomas Noël il y a plus de 12 ans

  • % réalisé changé de 0 à 90
#9

Mis à jour par Thomas Noël il y a plus de 12 ans

  • Statut changé de Solution déployée à Résolu (à déployer)
#10

Mis à jour par Frédéric Péters il y a plus de 10 ans

  • Statut changé de Résolu (à déployer) à Fermé
#11

Mis à jour par Thomas Noël il y a plus de 8 ans

  • Version cible Au-quotidien 2012.1 supprimé

Formats disponibles : Atom PDF