Hello,
Je suis en train de développer un petit script pour utiliser la fonctionnalité ENC (External Node Classifier) de puppet.
Le but de mon programme est que pour un mot clé donné (qui correspond à un objectClass dans un annuaire LDAP), une classe Python réalise un job.
Je possède donc un module python "mappers" avec dedans un fichier __init__.py et un ensemble de classes :
- AbstractMapper qui est une classe "abstraite" représentant un mapper
- un mapper par service (NtpServiceMapper, NetworkInterfaceMapper, TomcatInstanceMapper, etc...)
Le but est que le chargement de ces classes soit dynamique, pour que quand on souhaite ajouter un nouveau service, il suffit d'ajouter le schéma LDAP, la classe python (et bien sur, l'utiliser dans l'annuaire...).
Je voudrais donc avoir un système de factory, qui dit que pour un objectClass donné, j'associe un mappeur via une instanciation de sa classe.
Si je vois comment faire tout simplement dans plusieurs langages, comme Java ou PHP, j'ai un peu plus de mal avec Python... En java, j'aurais défini un bloc static {} dans chacun de mes mappers, qui se seraient référencés tout seul auprès de la factory, via la ligne suivante :
Code :
- MapperFactory.add("ntpService", new NtpServiceMapper());
|
Est-il possible d'avoir un comportement plutôt similaire en Python ?
Depuis mon code principal, j'ai déjà réussi (je pense) à charger toutes les classes en ajoutant le dossier "mappers" (présent dans le même répertoire que mon script, soit __file__) et en faisant un :
Code :
- from mappers import *
|
Merci d'avance pour vos réponses, je suis sur que ça doit être "tout con", mais bon..