kubernetes-client / kubernetes-client/python

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

Aberta
#2,101 11 comentários 0 reações 0 responsáveis Ver no GitHub
help wanted kind/bug
Linguagem predominante
Python
Estrelas
7.7k
Forks
3.5k
Merge médio
1d 14h
PRs com merge (30d)
18

Descrição

**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.

- PR with the fix: https://github.com/OpenAPITools/openapi-generator/pull/14743
- [fixed rest.py template in v6.4.0](https://github.com/OpenAPITools/openapi-generator/blame/v6.4.0/modules/openapi-generator/src/main/resources/python-nextgen/rest.mustache#L32)
- v6.4.0 changelog: https://github.com/OpenAPITools/openapi-generator/releases/tag/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

```py
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.

Guia de contribuição

Abrir o guia de contribuição

Direção de pesquisa

O código gerado afetado está em kubernetes/client/rest.py, especificamente em RESTResponse.getheaders(); compare-o com o template rest.mustache v6.4.0 e encontre o ponto de entrada do repositório para regeneração ou atualização de dependências. Regenere ou atualize o cliente com openapi-generator v6.4.0 ou posterior, depois execute a suíte unittest relevante com os avisos habilitados e confirme que o aviso de descontinuação desapareceu.

Escrita pelo modelo de indexação a partir do texto da issue.

Avaliação

Stack de tecnologia
kubernetes, python
Domínio
api, backend
Tipo de issue
Bug
Dificuldade
2/5
Tempo estimado
1-3 horas
Status de atividade
Estagnada
Clareza
Claramente especificada
Facilidade para iniciantes
52/100

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.