exec command is parsing output if output looks like json
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 35/100
Piste de recherche
Commencez par le point d’entrée du flux utilisé avec connect_get_namespaced_pod_exec, puis inspectez la classe WSResponse et le chemin _preload_content mentionné dans le rapport. Reproduisez les deux commandes echo et comparez les valeurs renvoyées ; c’est terminé lorsque la sortie de la commande est renvoyée de manière cohérente, afin que la sortie JSON puisse être transmise à json.loads sans traitement particulier.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
What happened (please include outputs or screenshots):
Working on creating a scale test where the test orchestrator will exec in each pod and run a curl command to verify the pod is in the expected state. The output of the curl is JSON.
The problem seems to be that the stream client will parse the json as a python dictionary if the output is only json, but return it to the caller as a stringified dictionary. Expecting json, json.loads is failing.
To verify I ran
In [5]: cmd=["echo", '{"example":"json", "with":null, "and":true}']
In [6]: kstream.stream(api_instance.connect_get_namespaced_pod_exec,
...: name=pod,
...: namespace=ns,
...: container=container,
...: command=cmd,
...: stderr=True,
...: stdin=False,
...: tty=False,
...: stdout=True)
Out[6]: "{'example': 'json', 'with': None, 'and': True}"
In [7]: cmd=["echo", 'but not actually json {"example":"json", "with":null, "and":true}']
In [8]: kstream.stream(api_instance.connect_get_namespaced_pod_exec,
...: name=pod,
...: namespace=ns,
...: container=container,
...: command=cmd,
...: stderr=True,
...: stdin=False,
...: tty=False,
...: stdout=True)
Out[8]: 'but not actually json {"example":"json", "with":null, "and":true}\n'
What you expected to happen:
I really did not expect the response to be different depending on the output of the command being run.
How to reproduce it (as minimally and precisely as possible):
Anything else we need to know?:
We are able to get around the issue by adding _preload_content=False to the stream function call and handling waiting for the response and reading stdout/stderr ourselves.
I wasn't sure where the rogue json parsing is happening, maybe in WSResponse class?
Environment:
- Kubernetes version (
kubectl version):
Client Version: version.Info{Major:"1", Minor:"15", GitVersion:"v1.15.6", GitCommit:"7015f71e75f670eb9e7ebd4b5749639d42e20079", GitTreeState:"clean", BuildDate:"2019-11-19T15:41:24Z", GoVersion:"go1.12.13", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"14+", GitVersion:"v1.14.8-eks-b8860f", GitCommit:"b8860f6c40640897e52c143f1b9f011a503d6e46", GitTreeState:"clean", BuildDate:"2019-11-25T00:55:38Z", GoVersion:"go1.12.10", Compiler:"gc", Platform:"linux/amd64"}
- OS (e.g., MacOS 10.13.6):
Ubuntu 19.10 - Python version (
python --version)
python 3.7.5
- Python client version (
pip list | grep kubernetes)
kubernetes==10.0.1
- Langage dominant
- Python
- Étoiles
- 7.7k
- Forks
- 3.5k
- Merge moyen
- 1 j 13 h
- PR mergées (30 j)
- 19
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de kubernetes-client/python
-
Websocket proxy auth truncates passwords that contain a colonPeut-être pris @Akshaay1 l’a pris il y a 1 jour. Ouvertehelp wanted
Difficulté 2/5 1-3 heures Accessibilité débutants 86/100
kubernetes-client/python#2734 · 3 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
getheaders is deprecated in urllib3 >= 2.0.0Peut-être à nouveau libre Une pull request pour cette issue a été fermée sans être fusionnée. Ouvertekind/bug
Difficulté 1/5 Moins d'une heure Accessibilité débutants 68/100
kubernetes-client/python#2280 · 16 commentaires · 9 réactions ·
Les mainteneurs répondent en général sous 1 jour
-
Make async an extraOuvertekind/feature
Difficulté 2/5 1-3 heures Accessibilité débutants 55/100
kubernetes-client/python#2739 ·
Les mainteneurs répondent en général sous 1 jour
-
kind/bug
Difficulté 2/5 1-3 heures Accessibilité débutants 35/100
kubernetes-client/python#2733 · 3 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
Growing library sizeOuvertehelp wanted
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 35/100
kubernetes-client/python#2677 · 15 commentaires · 1 réaction ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de kubernetes-client/python
Issues similaires
-
Agentic
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
Imbad0202/academic-research-skills#979 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
reflex-dev/reflex#7561 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
prometheus-community/ansible#906 · 2 commentaires ·