cloudnativelabs / kube-shell

Kubernetes shell: An integrated shell for working with the Kubernetes
Apache License 2.0
2.38k stars 175 forks source link

Warning while loading Kube-shell #83

Open iamshreeram opened 4 years ago

iamshreeram commented 4 years ago

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:
ningblue commented 4 years ago

see https://github.com/yaml/pyyaml/wiki/PyYAML-yaml.load(input)-Deprecation

image

iamshreeram commented 4 years ago

@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?

RamazanKara commented 2 years ago

Can we please have this warning just disabled by default in kube-shell?

yaml.warnings({'YAMLLoadWarning': False})

chmodshubham commented 1 year ago

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.