Development #16104
Avoir un transport SOAPpy qui loggue l'HTTP
100%
Description
Après avoir nettoyé les soap.py dans le cadre de #13221, il sera pas mal que le code commun puisse logguer l'HTTP.
Fichiers
Demandes liées
Révisions associées
Historique
Mis à jour par Frédéric Péters il y a presque 7 ans
- Lié à Bug #13221: multiplication des soap.py dans les connecteurs (nettoyage nécessaire) ajouté
Mis à jour par Emmanuel Cazenave il y a presque 6 ans
- Lié à Development #24675: Utiliser python-zeep pour avoir du log http ajouté
Mis à jour par Frédéric Péters il y a presque 6 ans
Suite au commentaire 14 dans #24567 :
Je suis toujours pour une mise en commun, dans passerelle/utils/soap.py, que les connecteurs n'aient pas à faire cet import/configuration de Transport.
from passerelle.utils.api import Client ... client = Client(connector=self) # pose le transport, tire wsdl_url de l'instance, etc.
Mis à jour par Frédéric Péters il y a presque 6 ans
- Lié à Development #24567: Connecteur IWS ajouté
Mis à jour par Emmanuel Cazenave il y a presque 6 ans
- Assigné à
Emmanuel Cazenavesupprimé
Je suis d'avis d'abandonner cette piste au profit de zeep.
Mis à jour par Emmanuel Cazenave il y a presque 6 ans
Frédéric Péters a écrit :
Je suis toujours pour une mise en commun, dans passerelle/utils/soap.py, que les connecteurs n'aient pas à faire cet import/configuration de Transport.
Si on parle bien ici d'un soap.py qui utiliserait zeep, je ne suis pas de ton avis.
Avec zeep, le log http s'obtient en deux lignes de code, c'est vraiment pas grand chose.
Ce soap.py devra à terme gérer tous les cas possibles d'initialisation d'un client SOAP, à comparer avec laisser les spécificités d'initialisation d'un client dans le connecteur qui l'utilise (ces spécificités étant dictés par le webservice qu'on a en face), je ne vois pas trop l'intérêt.
Mise à part le fait que ça aurait le mérite de standardiser les noms d'attributs de modèle de connecteur genre wsdl_endpoint...mais j'ai peur que la diversité des cas d'usage ne transforme rapidement ce soap.py en usine à gaz.
Mis à jour par Frédéric Péters il y a presque 6 ans
Au contraire je trouve vraiment cettre normalisation utile et dans la logique de ce qui est déjà en place (attributs wsdl_url, verify_cert, client_certificate, etc.); qu'au moment où on se rend compte qu'un connecteur doit malheureusement faire de l'https sans vérifier le certificat, on sache qu'on peut juste ajouter un attribut verify_cert au modèle, sans devoir chercher dans la documentation ou copier/coller d'un autre connecteur le code touchant à zeep).
Qu'on puisse lire dans la documentation de zeep le conseil d'avoir un backend pour cacher des wsdl et xsd et qu'on ait à le faire qu'une fois, aussi.
Mis à jour par Emmanuel Cazenave il y a presque 6 ans
- Assigné à mis à Emmanuel Cazenave
bon ok je le tente, même si je trouve ça dur à faire avec si peu de recul sur zeep.
Mis à jour par Frédéric Péters il y a presque 6 ans
Merci; et comme je le notais, on peut/doit commencer tout léger, simplement tirer le wsdl_url et poser le transport, ce dont tu as besoin dans ton connecteur. Puis le travail de #13221 d'uniformisation ne disparaitra pas et au fur et à mesure de la conversion des connecteurs, passerelle/utils/soap.py pourra gagner en fonctionnalités.
Mis à jour par Emmanuel Cazenave il y a presque 6 ans
Et du coup puisque l'on contraint ici l'attribut wsdl_url (pour commencer), je me dis que ça a intérêt à apparaître clairement dans modèle qui hérite de BaseResource
, qui aurait une une property client
etc...
Mis à jour par Emmanuel Cazenave il y a presque 6 ans
- Fichier 0001-create-a-SOAP-common-infrastructure-16104.patch 0001-create-a-SOAP-common-infrastructure-16104.patch ajouté
- Statut changé de Nouveau à En cours
- Patch proposed changé de Non à Oui
Finalement opté pour le plus simple.
Je ne fais pas de soap_client
une property, car le client SOAP peut alors être initialisé par le inspect.getmembers
de passerelle/views.py::dispatch
(et casser des tests sur des connecteurs dont le modèle définit un attribut wsdl_url
, mais qui n'ont rien demandé).
Mis à jour par Frédéric Péters il y a presque 6 ans
Ok pour moi, en mettant "start" plutôt que "create" dans le sujet du commit.
Mis à jour par Emmanuel Cazenave il y a presque 6 ans
- Fichier 0001-create-a-SOAP-common-infrastructure-16104.patch 0001-create-a-SOAP-common-infrastructure-16104.patch ajouté
Ok, je pousserai ça.
Mis à jour par Thomas Noël il y a presque 6 ans
J'arrive après la bataille, mais pourquoi mettre des trucs dans utils.py qui ne seront en fait jamais utilisés... Je pense qu'on pourrait tout poser dans le BaseResource, genre
def get_soap_transport(self): return zeepTransport(session=self.requests, cache=zeepInMemoryCache()) def get_soap_client(self): return zeepClient(self.wsdl_url, transport=self.get_soap_transport())
Nan ?
Mis à jour par Josué Kouka il y a plus de 5 ans
Vu que le patch n'est pas encore poussé. Peut on faire à ce que le l'initialisation du SOAPClient
soit un peu plus flexible ?(Cas ou l'on a des Plugin
ou Settings
zeep à passer au client).
Mis à jour par Emmanuel Cazenave il y a plus de 5 ans
Avec plaisir mais tu ne m'en dis pas assez pour comprendre de dont tu as besoin, met un bout de ton code pour qu'on comprenne stp.
Mis à jour par Josué Kouka il y a plus de 5 ans
Emmanuel Cazenave a écrit :
Avec plaisir mais tu ne m'en dis pas assez pour comprendre de dont tu as besoin, met un bout de ton code pour qu'on comprenne stp.
En fait je veux pouvoir juste faire:
settings = Settings(strict=False) plugins = [FooPlugin, BarPluging] client = self.soap_client(settings=settings, plugins=plugins) client.service.foo(ham, eggs) ...
Mis à jour par Josué Kouka il y a plus de 5 ans
- Fichier 0001-start-a-SOAP-common-infrastructure-16104.patch 0001-start-a-SOAP-common-infrastructure-16104.patch ajouté
- Statut changé de En cours à Solution proposée
(Patch à la demande d'Emmanuel)
Mis à jour par Emmanuel Cazenave il y a plus de 5 ans
- Statut changé de Solution proposée à Solution validée
- Assigné à changé de Emmanuel Cazenave à Josué Kouka
ok pour moi
Mis à jour par Josué Kouka il y a plus de 5 ans
- Statut changé de Solution validée à Résolu (à déployer)
- % réalisé changé de 0 à 100
commit 2cc36d68aab4689ab4e85d1383457d2a0b0275e5 (HEAD -> master, origin/master, origin/HEAD) Author: Emmanuel Cazenave <ecazenave@entrouvert.com> Date: Mon Jun 25 16:59:38 2018 +0200 start a SOAP common infrastructure (#16104)
Mis à jour par Benjamin Dauvergne il y a plus de 5 ans
- Statut changé de Résolu (à déployer) à Fermé
start a SOAP common infrastructure (#16104)