exec command is parsing output if output looks like json
I maintainer di solito rispondono entro 3 giorni
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 35/100
Direzione di ricerca
Inizia dal punto di ingresso dello stream utilizzato con connect_get_namespaced_pod_exec, quindi esamina la classe WSResponse e il percorso _preload_content menzionato nel report. Riproduci entrambi i comandi echo e confronta i valori restituiti; il lavoro è completato quando l'output del comando viene restituito in modo coerente, così che l'output JSON possa essere passato a json.loads senza una gestione speciale.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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
- Lingua principale
- Python
- Stelle
- 7.7k
- Fork
- 3.5k
- Merge medio
- 3g 4h
- PR unite (30g)
- 9
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di kubernetes-client/python
-
kind/bug
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 68/100
kubernetes-client/python#2280 · 16 commenti · 9 reazioni ·
I maintainer di solito rispondono entro 3 giorni
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 30/100
kubernetes-client/python#2720 ·
I maintainer di solito rispondono entro 3 giorni
-
Release 1.37Forse di nuovo libera @yliaog l’ha presa 34 giorni fa e non c’è nessuna pull request aperta. Aperta
kubernetes-client/python#2691 · 1 commento · 1 reazione · 1 assegnatario ·
I maintainer di solito rispondono entro 3 giorni
-
Growing library sizeApertahelp wanted
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
kubernetes-client/python#2677 · 14 commenti · 1 reazione ·
I maintainer di solito rispondono entro 3 giorni
-
Add option to disable strict x509 verifcation in sync clientForse di nuovo libera @Vishwa0223 l’ha presa 39 giorni fa e non c’è nessuna pull request aperta. Apertahelp wanted kind/feature
kubernetes-client/python#2602 · 6 commenti · 1 assegnatario ·
I maintainer di solito rispondono entro 3 giorni
Tutte le issue di kubernetes-client/python
Issue simili
-
adr
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
kristofdegrave/homeassistant-smart-charging#1607 ·
I maintainer di solito rispondono entro 1 giorno
-
namespace operations
Difficoltà 2/5 1-3 ore Idoneità per principianti 64/100
EclipseFdn/open-vsx.org#13665 ·
I maintainer di solito rispondono entro 1 giorno
-
doc good first issue help wanted
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
collective/icalendar#1865 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
canonical/opentelemetry-collector-operator#409 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
mozilla/addons-release-tests#1243 ·
I maintainer di solito rispondono entro 1 giorno