kube-shell
kube-shell copied to clipboard
Warning while loading Kube-shell
On load of kube-shell, Seeing below WARING message. Is there any way to supress this?
/Applications/anaconda3/lib/python3.7/site-packages/kubernetes/config/kube_config.py:280: YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.
config_dict=yaml.load(f),
/Applications/anaconda3/lib/python3.7/site-packages/kubeshell/kubeshell.py:43: YAMLLoadWarning: calling yaml.load_all() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.
for doc in docs:
see https://github.com/yaml/pyyaml/wiki/PyYAML-yaml.load(input)-Deprecation

@ningblue , Thanks for looking into this. We might need to accept a parameter (a switch) to suppress these warnings. Something like --suppress-warnings that will set the above PYTHONWARNINGS.
What do you think?
Can we please have this warning just disabled by default in kube-shell?
yaml.warnings({'YAMLLoadWarning': False})
To resolve the warning messages, you can modify the code to specify the Loader parameter with the FullLoader implementation while calling the yaml.load() and yaml.load_all() functions.
in kubernetes/config/kube_config.py file,
modify the config_dict = yaml.load(f) with config_dict = yaml.load(f, Loader=yaml.FullLoader)
and in kubeshell/kubeshell.py file,
modify the for doc in docs: with for doc in yaml.load_all(fd, Loader=yaml.FullLoader):
The location of the kubernetes/config and kubeshell/ directory depends on how you installed the Kubernetes client library. If you installed the library using pip, the directory is typically located in the site-packages directory of your Python installation.
To find the location, you can use the following command in a terminal:
pip show kubernetes | grep Location
## Location: /usr/local/lib/python3.8/dist-packages
To Change:
sed -i "s/config_dict = yaml.load(f)/config_dict = yaml.load(f, Loader=yaml.FullLoader)/g" /usr/local/lib/python3.8/dist-packages/kubernetes/config/kube_config.py
sed -i "s/for doc in docs:/for doc in yaml.load_all(fd, Loader=yaml.FullLoader):/g" /usr/local/lib/python3.8/dist-packages/kubeshell/kubeshell.py
Note: Change the location with yours.