Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Generate v19.15.0 client #1584

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
a6c28e1
Explicitly set USERNAME in the release script
roycaihw Sep 20, 2021
e5c6b15
update changelog
roycaihw Sep 20, 2021
8d3e2b5
Update README for 19.15.0a1 client
roycaihw Sep 20, 2021
e562fec
Add a TODO about updating readme automatically
roycaihw Sep 20, 2021
96dade6
Merge pull request #1553 from roycaihw/release-cleanups
k8s-ci-robot Sep 20, 2021
0684397
go get is deprecated: https://golang.org/doc/go-get-install-deprecation
roycaihw Oct 3, 2021
8a36dfb
Merge pull request #1562 from roycaihw/deprecate-go-get
k8s-ci-robot Oct 4, 2021
4cb2a51
Run autopep8 on e2e test files
hedrox Aug 17, 2021
740cda6
Fix replication controller pods delete in tests
hedrox Aug 17, 2021
be51b01
Merge pull request #1529 from hedrox/bug-rc-delete
k8s-ci-robot Oct 9, 2021
4f67f8a
update python-base
itaru2622 Oct 9, 2021
66fe481
Merge pull request #1567 from itaru2622/update_python_base
k8s-ci-robot Oct 11, 2021
858df36
update changelog and readme
roycaihw Oct 13, 2021
b15bea1
Merge pull request #1573 from roycaihw/update-readme-v19b
k8s-ci-robot Oct 13, 2021
dc11cf5
Add Python 3.10 to the testing
cclauss Oct 15, 2021
d5a7db3
Programming Language :: Python :: 3.10
cclauss Oct 15, 2021
19d3bc9
Merge pull request #1577 from cclauss/patch-2
k8s-ci-robot Oct 15, 2021
95a893c
add no_proxy support to configuration and REST client.
itaru2622 Oct 18, 2021
975360c
Merge pull request #1579 from itaru2622/no_proxy
k8s-ci-robot Oct 18, 2021
0449056
update python-base commithash
itaru2622 Oct 18, 2021
d54611c
Merge pull request #1581 from itaru2622/update_commithash
k8s-ci-robot Oct 18, 2021
4b98002
Merge branch 'master' of github.com:kubernetes-client/python into aut…
roycaihw Oct 25, 2021
bcbfce1
update changelog with release notes from master branch
roycaihw Oct 25, 2021
00d1e5b
update version constants for 19.15.0 release
roycaihw Oct 25, 2021
068a541
generated client change
roycaihw Oct 25, 2021
a66bb80
add no_proxy support to configuration and REST client.
itaru2622 Oct 18, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ jobs:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [3.6, 3.7, 3.8, 3.9]
python-version: ["3.6", "3.7", "3.8", "3.9", "3.10"]

steps:
- uses: actions/checkout@v2
Expand Down
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
# v19.15.0

Kubernetes API Version: v1.19.15

### Feature
- The new parameter 'no_proxy' has been added to configuration for the REST and websocket client. ([kubernetes-client/python#1579](https://github.com/kubernetes-client/python/pull/1579), [@itaru2622](https://github.com/itaru2622))//github.com/itaru2622))//github.com/itaru2622))//github.com/itaru2622))//github.com/itaru2622))//github.com/itaru2622))//github.com/itaru2622))//github.com/itaru2622))

# v19.15.0b1

Kubernetes API Version: v1.19.15
Expand All @@ -12,6 +19,7 @@ Kubernetes API Version: v1.19.15
- Type checking in `Client.serialize_body()` was made more restrictive and robust. ([kubernetes-client/python-base#241](https://github.com/kubernetes-client/python-base/pull/241), [@piglei](https://github.com/piglei))

### Feature
- Support Proxy Authentication in websocket client(stream/ws_client) like REST client. ([kubernetes-client/python-base#256](https://github.com/kubernetes-client/python-base/pull/256), [@itaru2622](https://github.com/itaru2622))
- Support for the dryRun parameter has been added to the dynamic client. ([kubernetes-client/python-base#247](https://github.com/kubernetes-client/python-base/pull/247), [@gravesm](https://github.com/gravesm))

### API Change
Expand Down
2 changes: 1 addition & 1 deletion kubernetes/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.19
- Package version: 19.15.0b1
- Package version: 19.15.0
- Build package: org.openapitools.codegen.languages.PythonClientCodegen

## Requirements.
Expand Down
2 changes: 1 addition & 1 deletion kubernetes/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

__project__ = 'kubernetes'
# The version is auto-updated. Please do not edit.
__version__ = "19.15.0b1"
__version__ = "19.15.0"

import kubernetes.client
import kubernetes.config
Expand Down
2 changes: 1 addition & 1 deletion kubernetes/client/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

from __future__ import absolute_import

__version__ = "19.15.0b1"
__version__ = "19.15.0"

# import apis into sdk package
from kubernetes.client.api.admissionregistration_api import AdmissionregistrationApi
Expand Down
2 changes: 1 addition & 1 deletion kubernetes/client/api_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ def __init__(self, configuration=None, header_name=None, header_value=None,
self.default_headers[header_name] = header_value
self.cookie = cookie
# Set default User-Agent.
self.user_agent = 'OpenAPI-Generator/19.15.0b1/python'
self.user_agent = 'OpenAPI-Generator/19.15.0/python'
self.client_side_validation = configuration.client_side_validation

def __enter__(self):
Expand Down
5 changes: 4 additions & 1 deletion kubernetes/client/configuration.py
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,9 @@ def __init__(self, host="http://localhost",
self.proxy = None
"""Proxy URL
"""
self.no_proxy = None
"""bypass proxy for host in the no_proxy list.
"""
self.proxy_headers = None
"""Proxy headers
"""
Expand Down Expand Up @@ -347,7 +350,7 @@ def to_debug_report(self):
"OS: {env}\n"\
"Python Version: {pyversion}\n"\
"Version of the API: release-1.19\n"\
"SDK Package Version: 19.15.0b1".\
"SDK Package Version: 19.15.0".\
format(env=sys.platform, pyversion=sys.version)

def get_host_settings(self):
Expand Down
3 changes: 2 additions & 1 deletion kubernetes/client/rest.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import urllib3

from kubernetes.client.exceptions import ApiException, ApiValueError
from requests.utils import should_bypass_proxies


logger = logging.getLogger(__name__)
Expand Down Expand Up @@ -83,7 +84,7 @@ def __init__(self, configuration, pools_size=4, maxsize=None):
maxsize = 4

# https pool manager
if configuration.proxy:
if configuration.proxy and not should_bypass_proxies(configuration.host, no_proxy=configuration.no_proxy or ''):
self.pool_manager = urllib3.ProxyManager(
num_pools=pools_size,
maxsize=maxsize,
Expand Down
3 changes: 1 addition & 2 deletions kubernetes/e2e_test/test_batch.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ class TestClientBatch(unittest.TestCase):
def setUpClass(cls):
cls.config = base.get_e2e_configuration()


def test_job_apis(self):
client = api_client.ApiClient(configuration=self.config)
api = batch_v1_api.BatchV1Api(client)
Expand Down Expand Up @@ -56,4 +55,4 @@ def test_job_apis(self):
self.assertEqual(name, resp.metadata.name)

resp = api.delete_namespaced_job(
name=name, body={}, namespace='default')
name=name, namespace='default', propagation_policy='Background')
66 changes: 40 additions & 26 deletions kubernetes/e2e_test/test_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
else:
import httplib


def short_uuid():
id = str(uuid.uuid4())
return id[-12:]
Expand All @@ -60,6 +61,7 @@ def manifest_with_command(name, command):
}
}


class TestClient(unittest.TestCase):

@classmethod
Expand All @@ -71,7 +73,8 @@ def test_pod_apis(self):
api = core_v1_api.CoreV1Api(client)

name = 'busybox-test-' + short_uuid()
pod_manifest = manifest_with_command(name, "while true;do date;sleep 5; done")
pod_manifest = manifest_with_command(
name, "while true;do date;sleep 5; done")

# wait for the default service account to be created
timeout = time.time() + 30
Expand All @@ -84,9 +87,10 @@ def test_pod_apis(self):
namespace='default')
except ApiException as e:
if (six.PY3 and e.status != HTTPStatus.NOT_FOUND) or (
six.PY3 is False and e.status != httplib.NOT_FOUND):
six.PY3 is False and e.status != httplib.NOT_FOUND):
print('error: %s' % e)
self.fail(msg="unexpected error getting default service account")
self.fail(
msg="unexpected error getting default service account")
print('default service not found yet: %s' % e)
time.sleep(1)
continue
Expand All @@ -111,25 +115,25 @@ def test_pod_apis(self):
'-c',
'for i in $(seq 1 3); do date; done']
resp = stream(api.connect_get_namespaced_pod_exec, name, 'default',
command=exec_command,
stderr=False, stdin=False,
stdout=True, tty=False)
command=exec_command,
stderr=False, stdin=False,
stdout=True, tty=False)
print('EXEC response : %s' % resp)
self.assertEqual(3, len(resp.splitlines()))

exec_command = 'uptime'
resp = stream(api.connect_post_namespaced_pod_exec, name, 'default',
command=exec_command,
stderr=False, stdin=False,
stdout=True, tty=False)
command=exec_command,
stderr=False, stdin=False,
stdout=True, tty=False)
print('EXEC response : %s' % resp)
self.assertEqual(1, len(resp.splitlines()))

resp = stream(api.connect_post_namespaced_pod_exec, name, 'default',
command='/bin/sh',
stderr=True, stdin=True,
stdout=True, tty=False,
_preload_content=False)
command='/bin/sh',
stderr=True, stdin=True,
stdout=True, tty=False,
_preload_content=False)
resp.write_stdin("echo test string 1\n")
line = resp.readline_stdout(timeout=5)
self.assertFalse(resp.peek_stderr())
Expand Down Expand Up @@ -157,7 +161,8 @@ def test_exit_code(self):
api = core_v1_api.CoreV1Api(client)

name = 'busybox-test-' + short_uuid()
pod_manifest = manifest_with_command(name, "while true;do date;sleep 5; done")
pod_manifest = manifest_with_command(
name, "while true;do date;sleep 5; done")

# wait for the default service account to be created
timeout = time.time() + 30
Expand All @@ -171,9 +176,10 @@ def test_exit_code(self):
namespace='default')
except ApiException as e:
if (six.PY3 and e.status != HTTPStatus.NOT_FOUND) or (
six.PY3 is False and e.status != httplib.NOT_FOUND):
six.PY3 is False and e.status != httplib.NOT_FOUND):
print('error: %s' % e)
self.fail(msg="unexpected error getting default service account")
self.fail(
msg="unexpected error getting default service account")
print('default service not found yet: %s' % e)
time.sleep(1)
continue
Expand Down Expand Up @@ -201,11 +207,16 @@ def test_exit_code(self):
(["/bin/sh", "-c", "ls /"], 0)
)
for command, value in commands_expected_values:
client = stream(api.connect_get_namespaced_pod_exec, name, 'default',
command=command,
stderr=True, stdin=False,
stdout=True, tty=False,
_preload_content=False)
client = stream(
api.connect_get_namespaced_pod_exec,
name,
'default',
command=command,
stderr=True,
stdin=False,
stdout=True,
tty=False,
_preload_content=False)

self.assertIsNone(client.returncode)
client.run_forever(timeout=10)
Expand Down Expand Up @@ -337,7 +348,8 @@ def test_portforward_raw(self):

for sock in (sock1234, sock1235):
self.assertTrue(pf.connected)
sent = b'Another test using fileno %s' % str(sock.fileno()).encode()
sent = b'Another test using fileno %s' % str(
sock.fileno()).encode()
sock.sendall(sent)
reply = b''
while True:
Expand All @@ -361,7 +373,7 @@ def test_portforward_http(self):
client = api_client.ApiClient(configuration=self.config)
api = core_v1_api.CoreV1Api(client)

name = 'portforward-http-' + short_uuid()
name = 'portforward-http-' + short_uuid()
pod_manifest = {
'apiVersion': 'v1',
'kind': 'Pod',
Expand Down Expand Up @@ -404,7 +416,8 @@ def kubernetes_create_connection(address, *args, **kwargs):
socket_create_connection = socket.create_connection
try:
socket.create_connection = kubernetes_create_connection
response = urllib_request.urlopen('http://%s.default.kubernetes/' % name)
response = urllib_request.urlopen(
'http://%s.default.kubernetes/' % name)
html = response.read().decode('utf-8')
finally:
socket.create_connection = socket_create_connection
Expand Down Expand Up @@ -485,7 +498,7 @@ def test_replication_controller_apis(self):
self.assertEqual(2, resp.spec.replicas)

resp = api.delete_namespaced_replication_controller(
name=name, body={}, namespace='default')
name=name, namespace='default', propagation_policy='Background')

def test_configmap_apis(self):
client = api_client.ApiClient(configuration=self.config)
Expand Down Expand Up @@ -521,7 +534,8 @@ def test_configmap_apis(self):
resp = api.delete_namespaced_config_map(
name=name, body={}, namespace='default')

resp = api.list_namespaced_config_map('default', pretty=True, label_selector="e2e-tests=true")
resp = api.list_namespaced_config_map(
'default', pretty=True, label_selector="e2e-tests=true")
self.assertEqual([], resp.items)

def test_node_apis(self):
Expand Down
10 changes: 6 additions & 4 deletions kubernetes/e2e_test/test_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,9 @@ def setUpClass(cls):
cls.test_namespace = "e2e-test-utils"
k8s_client = client.api_client.ApiClient(configuration=cls.config)
core_v1 = client.CoreV1Api(api_client=k8s_client)
body = client.V1Namespace(metadata=client.V1ObjectMeta(name=cls.test_namespace))
body = client.V1Namespace(
metadata=client.V1ObjectMeta(
name=cls.test_namespace))
core_v1.create_namespace(body=body)

@classmethod
Expand Down Expand Up @@ -304,7 +306,7 @@ def test_create_from_multi_resource_yaml(self):
name="mock", namespace="default")
self.assertIsNotNone(ctr)
core_api.delete_namespaced_replication_controller(
name="mock", namespace="default", body={})
name="mock", namespace="default", propagation_policy="Background")
core_api.delete_namespaced_service(name="mock",
namespace="default", body={})

Expand Down Expand Up @@ -362,7 +364,7 @@ def test_create_from_multi_resource_yaml_with_conflict(self):
name="mock-2", namespace="default")
self.assertIsNotNone(ctr)
core_api.delete_namespaced_replication_controller(
name="mock-2", namespace="default", body={})
name="mock-2", namespace="default", propagation_policy="Background")
core_api.delete_namespaced_service(name="mock-2",
namespace="default", body={})

Expand Down Expand Up @@ -396,7 +398,7 @@ def test_create_from_multi_resource_yaml_with_multi_conflicts(self):
def test_create_namespaced_apps_deployment_from_yaml(self):
"""
Should be able to create an apps/v1beta1 deployment
in a test namespace.
in a test namespace.
"""
k8s_client = client.api_client.ApiClient(configuration=self.config)
utils.create_from_yaml(
Expand Down
28 changes: 27 additions & 1 deletion kubernetes/test/test_api_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@
import unittest

import kubernetes

from kubernetes.client.configuration import Configuration
import urllib3

class TestApiClient(unittest.TestCase):

Expand All @@ -23,3 +24,28 @@ def test_atexit_closes_threadpool(self):
self.assertIsNotNone(client._pool)
atexit._run_exitfuncs()
self.assertIsNone(client._pool)

def test_rest_proxycare(self):

pool = { 'proxy': urllib3.ProxyManager, 'direct': urllib3.PoolManager }

for dst, proxy, no_proxy, expected_pool in [
( 'http://kube.local/', None, None, pool['direct']),
( 'http://kube.local/', 'http://proxy.local:8080/', None, pool['proxy']),
( 'http://127.0.0.1:8080/', 'http://proxy.local:8080/', 'localhost,127.0.0.0/8,.local', pool['direct']),
( 'http://kube.local/', 'http://proxy.local:8080/', 'localhost,127.0.0.0/8,.local', pool['direct']),
( 'http://kube.others.com:1234/','http://proxy.local:8080/', 'localhost,127.0.0.0/8,.local', pool['proxy']),
( 'http://kube.others.com:1234/','http://proxy.local:8080/', '*', pool['direct']),
]:
# setup input
config = Configuration()
setattr(config, 'host', dst)
if proxy is not None:
setattr(config, 'proxy', proxy)
if no_proxy is not None:
setattr(config, 'no_proxy', no_proxy)
# setup done

# test
client = kubernetes.client.ApiClient(configuration=config)
self.assertEqual( expected_pool, type(client.rest_client.pool_manager) )
4 changes: 2 additions & 2 deletions scripts/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,13 @@
KUBERNETES_BRANCH = "release-1.19"

# client version for packaging and releasing.
CLIENT_VERSION = "19.15.0b1"
CLIENT_VERSION = "19.15.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
Expand Down
6 changes: 6 additions & 0 deletions scripts/release.sh
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,9 @@
# - add a sentence about "changes since {last release}". In most cases our
# releases should be sequential. This script (the workflow above) is based on
# this assumption, and we should make the release note clear about that.
# - update readme; if it's a real release (instead of a snapshot in master
# branch), also create a PR to update changelog and readme in the master
# branch
#
# Usage:
# $ KUBERNETES_BRANCH=release-1.19 CLIENT_VERSION=19.0.0-snapshot DEVELOPMENT_STATUS="3 - Alpha" scripts/release.sh
Expand All @@ -64,6 +67,9 @@ set -o errexit
set -o nounset
set -o pipefail

# used by the client generator: https://github.com/kubernetes-client/gen/blob/729332ad08f0f4d98983b7beb027e2f657236ef9/openapi/openapi-generator/client-generator.sh#L52
export USERNAME=kubernetes

repo_root="$(git rev-parse --show-toplevel)"
declare -r repo_root
cd "${repo_root}"
Expand Down
Loading