kubernetes-client / kubernetes-client/python

Upgrade to openapi-generator >= v6.4.0: `DeprecationWarning: HTTPResponse.getheaders() is deprecated`

Aperta
#2,101 11 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

help wanted kind/bug
Lingua principale
Python
Stelle
7.7k
Fork
3.5k
Merge medio
1g 14h
PR unite (30g)
18

Descrizione

What happened (please include outputs or screenshots):
Certain k8s API calls (f.e. deleting a namespace) result in the following deprecation warnings:

venv-test/lib/python3.9/site-packages/kubernetes/client/rest.py:44: DeprecationWarning: HTTPResponse.getheaders() is deprecated and will be removed in urllib3 v2.1.0. Instead access HTTPResponse.headers directly.
  return self.urllib3_response.getheaders()

F.e., see at the bottom of this test log: https://source.cloud.google.com/results/invocations/0cb2a704-d3b4-40a5-9d85-36e2e7dbc64f/targets/grpc%2Fjava%2Fv1.57.x%2Fbranch%2Fxds_k8s_lb%2Fround_robin_test/log

This has already been reported in #2024, but since then OpenApi generator released the fix in v6.4.0.

What you expected to happen:
No deprecation warnings logged.

How to reproduce it (as minimally and precisely as possible):
The warning is shown when kubernetes library is used within the unittest context, which enables all warnings per

Developers of test runners for Python code are advised to instead ensure that all warnings are displayed by default for the code under test
https://docs.python.org/3/library/warnings.html#overriding-the-default-filter

I'm not entirely sure in what exact cases this warning is produced, but it's easy to verify when it's fixed.

Check the generated code RESTResponse.getheaders():

https://github.com/kubernetes-client/python/blob/76ec6f5ce5572f66d82717e296480dc42584f0b7/kubernetes/client/rest.py#L42-L45

This should be replaced with

    def getheaders(self):
        """Returns a dictionary of the response headers."""
        return self.urllib3_response.headers

Environment:

Kubernetes version

kubectl version:

Client Version: version.Info{Major:"1", Minor:"25+", GitVersion:"v1.25.9-dispatcher", GitCommit:"6ed97cc2601c54f907320513513db38e446aa2ee", GitTreeState:"clean", BuildDate:"2023-05-09T18:05:38Z", GoVersion:"go1.19.8", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"25", GitVersion:"v1.25.10-gke.1200", GitCommit:"9e9cdb04efcc29a8fe0b1804cdcc8054b9ee176a", GitTreeState:"clean", BuildDate:"2023-06-01T19:57:47Z", GoVersion:"go1.19.9 X:boringcrypto", Compiler:"gc", Platform:"linux/amd64"}
Python client version

The latest kubernetes==27.2.0 is affected.

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Il codice generato interessato si trova in kubernetes/client/rest.py, nello specifico in RESTResponse.getheaders(); confrontalo con il template rest.mustache v6.4.0 e trova il punto di ingresso del repository per la rigenerazione o l'aggiornamento delle dipendenze. Rigenera o aggiorna il client con openapi-generator v6.4.0 o versione successiva, quindi esegui la suite unittest pertinente con gli avvisi abilitati e conferma che l'avviso di deprecazione sia scomparso.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
kubernetes, python
Ambito
api, backend
Tipo di issue
Bug
Difficoltà
2/5
Tempo stimato
1-3 ore
Stato di attività
Ferma
Chiarezza
Specificata chiaramente
Idoneità per principianti
52/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.