From 2af3cf360dc0a9d44f008bed297da4d0e7dd1c00 Mon Sep 17 00:00:00 2001 From: Pete Date: Mon, 6 Jan 2025 08:17:09 +0000 Subject: [PATCH 1/5] Close the Python sockets when the Websocket closes This allows the client to detect when the connection has been interrupted --- kubernetes/base/stream/ws_client.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/kubernetes/base/stream/ws_client.py b/kubernetes/base/stream/ws_client.py index 3c854ea74..10c6c1bcd 100644 --- a/kubernetes/base/stream/ws_client.py +++ b/kubernetes/base/stream/ws_client.py @@ -30,7 +30,7 @@ import yaml from six.moves.urllib.parse import urlencode, urlparse, urlunparse from six import StringIO, BytesIO -from websocket import WebSocket, ABNF, enableTrace +from websocket import WebSocket, ABNF, enableTrace, WebSocketConnectionClosedException from base64 import urlsafe_b64decode from requests.utils import should_bypass_proxies @@ -379,7 +379,12 @@ class PortForward: if sock == self.websocket: pending = True while pending: - opcode, frame = self.websocket.recv_data_frame(True) + try: + opcode, frame = self.websocket.recv_data_frame(True) + except WebSocketConnectionClosedException: + for port in self.local_ports.values(): + port.python.close() + return if opcode == ABNF.OPCODE_BINARY: if not frame.data: raise RuntimeError("Unexpected frame data size") From 0d9f4f87fc9519c73de960dd8591e990c944d956 Mon Sep 17 00:00:00 2001 From: yliao Date: Thu, 23 Jan 2025 19:12:47 +0000 Subject: [PATCH 2/5] update changelog with release notes from master branch --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 74d60d176..97d8be5f7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,10 @@ +# v32.0.0 + +Kubernetes API Version: v1.32.1 + +### Bug or Regression +- Fixed PortForward proxy to close local Python sockets when the WebSocket closes. (#2316, @anvilpete) + # v32.0.0b1 Kubernetes API Version: v1.32.1 From dbedb4d9207b6a73515d2c732b38b8e6d991a21a Mon Sep 17 00:00:00 2001 From: yliao Date: Thu, 23 Jan 2025 19:12:47 +0000 Subject: [PATCH 3/5] update version constants for 32.0.0 release --- scripts/constants.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/constants.py b/scripts/constants.py index e52e3fab1..e9a768c36 100644 --- a/scripts/constants.py +++ b/scripts/constants.py @@ -18,13 +18,13 @@ import sys KUBERNETES_BRANCH = "release-1.32" # client version for packaging and releasing. -CLIENT_VERSION = "32.0.0b1" +CLIENT_VERSION = "32.0.0" # Name of the release package PACKAGE_NAME = "kubernetes" # Stage of development, mainly used in setup.py's classifiers. -DEVELOPMENT_STATUS = "4 - Beta" +DEVELOPMENT_STATUS = "5 - Production/Stable" # If called directly, return the constant value given From b9091e3f8426436c0285ef3035ea8d2828f49cb0 Mon Sep 17 00:00:00 2001 From: yliao Date: Thu, 23 Jan 2025 19:13:25 +0000 Subject: [PATCH 4/5] generated client change --- kubernetes/README.md | 2 +- kubernetes/__init__.py | 2 +- kubernetes/client/__init__.py | 2 +- kubernetes/client/api_client.py | 2 +- kubernetes/client/configuration.py | 2 +- setup.py | 4 ++-- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/kubernetes/README.md b/kubernetes/README.md index 1ba588bb5..7e31c7aa2 100644 --- a/kubernetes/README.md +++ b/kubernetes/README.md @@ -4,7 +4,7 @@ No description provided (generated by Openapi Generator https://github.com/opena This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: - API version: release-1.32 -- Package version: 32.0.0b1 +- Package version: 32.0.0 - Build package: org.openapitools.codegen.languages.PythonClientCodegen ## Requirements. diff --git a/kubernetes/__init__.py b/kubernetes/__init__.py index cba8dbd66..5ea666bf6 100644 --- a/kubernetes/__init__.py +++ b/kubernetes/__init__.py @@ -14,7 +14,7 @@ __project__ = 'kubernetes' # The version is auto-updated. Please do not edit. -__version__ = "32.0.0b1" +__version__ = "32.0.0" from . import client from . import config diff --git a/kubernetes/client/__init__.py b/kubernetes/client/__init__.py index 7277dc8f9..7368d6a4e 100644 --- a/kubernetes/client/__init__.py +++ b/kubernetes/client/__init__.py @@ -14,7 +14,7 @@ from __future__ import absolute_import -__version__ = "32.0.0b1" +__version__ = "32.0.0" # import apis into sdk package from kubernetes.client.api.well_known_api import WellKnownApi diff --git a/kubernetes/client/api_client.py b/kubernetes/client/api_client.py index b0abd3588..3e21219d7 100644 --- a/kubernetes/client/api_client.py +++ b/kubernetes/client/api_client.py @@ -78,7 +78,7 @@ class ApiClient(object): self.default_headers[header_name] = header_value self.cookie = cookie # Set default User-Agent. - self.user_agent = 'OpenAPI-Generator/32.0.0b1/python' + self.user_agent = 'OpenAPI-Generator/32.0.0/python' self.client_side_validation = configuration.client_side_validation def __enter__(self): diff --git a/kubernetes/client/configuration.py b/kubernetes/client/configuration.py index b9fbddcbf..1a234595c 100644 --- a/kubernetes/client/configuration.py +++ b/kubernetes/client/configuration.py @@ -354,7 +354,7 @@ class Configuration(object): "OS: {env}\n"\ "Python Version: {pyversion}\n"\ "Version of the API: release-1.32\n"\ - "SDK Package Version: 32.0.0b1".\ + "SDK Package Version: 32.0.0".\ format(env=sys.platform, pyversion=sys.version) def get_host_settings(self): diff --git a/setup.py b/setup.py index d6cd8c501..01e26edf8 100644 --- a/setup.py +++ b/setup.py @@ -16,9 +16,9 @@ from setuptools import setup # Do not edit these constants. They will be updated automatically # by scripts/update-client.sh. -CLIENT_VERSION = "32.0.0b1" +CLIENT_VERSION = "32.0.0" PACKAGE_NAME = "kubernetes" -DEVELOPMENT_STATUS = "4 - Beta" +DEVELOPMENT_STATUS = "5 - Production/Stable" # To install the library, run the following # From 8db4744ce483f9a715edcc3e7bc7c616846f4ee9 Mon Sep 17 00:00:00 2001 From: yliao Date: Thu, 23 Jan 2025 19:17:00 +0000 Subject: [PATCH 5/5] updated compatibility matrix and maintenance status --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 29812669f..7f148915e 100644 --- a/README.md +++ b/README.md @@ -101,7 +101,7 @@ supported versions of Kubernetes clusters. - [client 29.y.z](https://pypi.org/project/kubernetes/29.0.0/): Kubernetes 1.28 or below (+-), Kubernetes 1.29 (✓), Kubernetes 1.30 or above (+-) - [client 30.y.z](https://pypi.org/project/kubernetes/30.1.0/): Kubernetes 1.29 or below (+-), Kubernetes 1.30 (✓), Kubernetes 1.31 or above (+-) - [client 31.y.z](https://pypi.org/project/kubernetes/31.0.0/): Kubernetes 1.30 or below (+-), Kubernetes 1.31 (✓), Kubernetes 1.32 or above (+-) -- [client 32.y.z](https://pypi.org/project/kubernetes/32.0.0b1/): Kubernetes 1.31 or below (+-), Kubernetes 1.32 (✓), Kubernetes 1.33 or above (+-) +- [client 32.y.z](https://pypi.org/project/kubernetes/32.0.0/): Kubernetes 1.31 or below (+-), Kubernetes 1.32 (✓), Kubernetes 1.33 or above (+-) > See [here](#homogenizing-the-kubernetes-python-client-versions) for an explanation of why there is no v13-v16 release. @@ -164,12 +164,13 @@ between client-python versions. | 28.0 Alpha/Beta | Kubernetes main repo, 1.28 branch | ✗ | | 28.0 | Kubernetes main repo, 1.28 branch | ✗ | | 29.0 Alpha/Beta | Kubernetes main repo, 1.29 branch | ✗ | -| 29.0 | Kubernetes main repo, 1.29 branch | ✓ | +| 29.0 | Kubernetes main repo, 1.29 branch | ✗ | | 30.0 Alpha/Beta | Kubernetes main repo, 1.30 branch | ✗ | | 30.0 | Kubernetes main repo, 1.30 branch | ✓ | | 31.0 Alpha/Beta | Kubernetes main repo, 1.31 branch | ✗ | | 31.0 | Kubernetes main repo, 1.31 branch | ✓ | -| 32.0 Alpha/Beta | Kubernetes main repo, 1.32 branch | ✓ | +| 32.0 Alpha/Beta | Kubernetes main repo, 1.32 branch | ✗ | +| 32.0 | Kubernetes main repo, 1.32 branch | ✓ | > See [here](#homogenizing-the-kubernetes-python-client-versions) for an explanation of why there is no v13-v16 release.