Skip to content

Automated release of 28.1.0 upstream release 28.0 1694967840 #2126

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
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/deploy-wiki.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
deploy-wiki:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
submodules: true
- name: Install rsync
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/e2e-master.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
matrix:
python-version: [3.7, 3.8, 3.9]
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
submodules: true
- name: Create Kind Cluster
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/e2e-release-11.0.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
matrix:
python-version: [2.7, 3.5, 3.6, 3.7, 3.8]
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
submodules: true
- name: Create Kind Cluster
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/e2e-release-12.0.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
matrix:
python-version: [2.7, 3.5, 3.6, 3.7, 3.8]
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
submodules: true
- name: Create Kind Cluster
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/e2e-release-17.0.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
matrix:
python-version: [2.7, 3.5, 3.6, 3.7, 3.8]
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
submodules: true
- name: Create Kind Cluster
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/e2e-release-18.0.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
matrix:
python-version: [3.6, 3.7, 3.8, 3.9]
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
submodules: true
- name: Create Kind Cluster
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/e2e-release-26.0.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
matrix:
python-version: [3.7, 3.8, 3.9]
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
submodules: true
- name: Create Kind Cluster
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
use_coverage: 'coverage'

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
submodules: true
- name: Set up Python ${{ matrix.python-version }}
Expand Down
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
# v28.1.0

Kubernetes API Version: v1.28.2

### API Change
- Fixed a bug where CEL expressions in CRD validation rules would incorrectly compute a high estimated cost for functions that return strings, lists or maps.
The incorrect cost was evident when the result of a function was used in subsequent operations. ([kubernetes/kubernetes#119807](https://github.com/kubernetes/kubernetes/pull/119807), [@jpbetz](https://github.com/jpbetz)) [SIG API Machinery, Auth and Cloud Provider]
- Mark Job onPodConditions as optional in pod failure policy ([kubernetes/kubernetes#120208](https://github.com/kubernetes/kubernetes/pull/120208), [@mimowo](https://github.com/mimowo)) [SIG API Machinery and Apps]


# v28.1.0b1

Kubernetes API Version: v1.28.1
Expand Down
7 changes: 4 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ supported versions of Kubernetes clusters.
- [client 25.y.z](https://pypi.org/project/kubernetes/25.3.0/): Kubernetes 1.24 or below (+-), Kubernetes 1.25 (✓), Kubernetes 1.26 or above (+-)
- [client 26.y.z](https://pypi.org/project/kubernetes/26.1.0/): Kubernetes 1.25 or below (+-), Kubernetes 1.26 (✓), Kubernetes 1.27 or above (+-)
- [client 27.y.z](https://pypi.org/project/kubernetes/27.2.0/): Kubernetes 1.26 or below (+-), Kubernetes 1.27 (✓), Kubernetes 1.28 or above (+-)
- [client 28.y.z](https://pypi.org/project/kubernetes/28.1.0b1/): Kubernetes 1.27 or below (+-), Kubernetes 1.28 (✓), Kubernetes 1.29 or above (+-)
- [client 28.y.z](https://pypi.org/project/kubernetes/28.1.0/): Kubernetes 1.27 or below (+-), Kubernetes 1.28 (✓), Kubernetes 1.29 or above (+-)

> See [here](#homogenizing-the-kubernetes-python-client-versions) for an explanation of why there is no v13-v16 release.
Expand Down Expand Up @@ -151,12 +151,13 @@ between client-python versions.
| 24.0 Alpha/Beta | Kubernetes main repo, 1.24 branch ||
| 24.0 | Kubernetes main repo, 1.24 branch ||
| 25.0 Alpha/Beta | Kubernetes main repo, 1.25 branch ||
| 25.0 | Kubernetes main repo, 1.25 branch | |
| 25.0 | Kubernetes main repo, 1.25 branch | |
| 26.0 Alpha/Beta | Kubernetes main repo, 1.26 branch ||
| 26.0 | Kubernetes main repo, 1.26 branch ||
| 27.0 Alpha/Beta | Kubernetes main repo, 1.27 branch ||
| 27.0 | Kubernetes main repo, 1.27 branch ||
| 28.0 Alpha/Beta | Kubernetes main repo, 1.28 branch ||
| 28.0 Alpha/Beta | Kubernetes main repo, 1.28 branch ||
| 28.0 | Kubernetes main repo, 1.28 branch ||

> See [here](#homogenizing-the-kubernetes-python-client-versions) for an explanation of why there is no v13-v16 release.
Expand Down
6 changes: 2 additions & 4 deletions examples/annotate_deployment.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,7 @@ def main():
time.sleep(1)
before_annotating = apps_v1_api.read_namespaced_deployment(
'deploy-nginx', 'default')
print('Before annotating, annotations: %s' %
before_annotating.metadata.annotations)
print(f"Before annotating, annotations: {before_annotating.metadata.annotations}")

annotations = [
{
Expand All @@ -80,8 +79,7 @@ def main():
time.sleep(1)
after_annotating = apps_v1_api.read_namespaced_deployment(
name='deploy-nginx', namespace='default')
print('After annotating, annotations: %s' %
after_annotating.metadata.annotations)
print(f"After annotating, annotations: {after_annotating.metadata.annotations}")


if __name__ == "__main__":
Expand Down
5 changes: 2 additions & 3 deletions examples/api_discovery.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,7 @@ def main():
config.load_kube_config()

print("Supported APIs (* is preferred version):")
print("%-40s %s" %
("core", ",".join(client.CoreApi().get_api_versions().versions)))
print(f"{'core':<40} {','.join(client.CoreApi().get_api_versions().versions)}")
for api in client.ApisApi().get_api_versions().groups:
versions = []
for v in api.versions:
Expand All @@ -38,7 +37,7 @@ def main():
name += "*"
name += v.version
versions.append(name)
print("%-40s %s" % (api.name, ",".join(versions)))
print(f"{api.name:<40} {','.join(versions)}")


if __name__ == '__main__':
Expand Down
2 changes: 1 addition & 1 deletion examples/apply_from_directory.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from kubernetes import client,config,utils
from kubernetes import client, config, utils

def main():
config.load_kube_config()
Expand Down
4 changes: 2 additions & 2 deletions examples/apply_from_single_file.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
from kubernetes import client,config,utils
from kubernetes import client, config, utils

def main():
config.load_kube_config()
k8s_client = client.ApiClient()
yaml_file = 'examples/configmap-demo-pod.yml'
yaml_file = 'examples/yaml_dir/configmap-demo-pod.yml'
utils.create_from_yaml(k8s_client,yaml_file,verbose=True)

if __name__ == "__main__":
Expand Down
15 changes: 3 additions & 12 deletions examples/cluster_scoped_custom_object.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,10 +100,7 @@ def main():
plural="crontabs",
)
print("%s\t\t%s" % ("NAME", "CRON-SPEC"))
print(
"%s\t%s\n" %
(resource["metadata"]["name"],
resource["spec"]["cronSpec"]))
print(f"{resource['metadata']['name']}\t{resource['spec']['cronSpec']}\n")

# patch the `spec.cronSpec` field of the custom resource
patched_resource = api.patch_cluster_custom_object(
Expand All @@ -115,10 +112,7 @@ def main():
)
print("[INFO] Custom resource `test-crontab` patched to update the cronSpec schedule!\n")
print("%s\t\t%s" % ("NAME", "PATCHED-CRON-SPEC"))
print(
"%s\t%s\n" %
(patched_resource["metadata"]["name"],
patched_resource["spec"]["cronSpec"]))
print(f"{patched_resource['metadata']['name']}\t{patched_resource['spec']['cronSpec']}\n")

# patch the `metadata.labels` field of the custom resource
patched_resource = api.patch_cluster_custom_object(
Expand All @@ -130,10 +124,7 @@ def main():
)
print("[INFO] Custom resource `test-crontab` patched to apply new metadata labels!\n")
print("%s\t\t%s" % ("NAME", "PATCHED_LABELS"))
print(
"%s\t%s\n" %
(patched_resource["metadata"]["name"],
patched_resource["metadata"]["labels"]))
print(f"{patched_resource['metadata']['name']}\t{patched_resource['metadata']['labels']}\n")

# delete the custom resource "test-crontab"
api.delete_cluster_custom_object(
Expand Down
4 changes: 2 additions & 2 deletions examples/deployment_create.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,12 @@ def main():
# default location.
config.load_kube_config()

with open(path.join(path.dirname(__file__), "nginx-deployment.yaml")) as f:
with open(path.join(path.dirname(__file__), "yaml_dir/nginx-deployment.yaml")) as f:
dep = yaml.safe_load(f)
k8s_apps_v1 = client.AppsV1Api()
resp = k8s_apps_v1.create_namespaced_deployment(
body=dep, namespace="default")
print("Deployment created. status='%s'" % resp.metadata.name)
print(f"Deployment created. Status='{resp.metadata.name}'")


if __name__ == '__main__':
Expand Down
3 changes: 1 addition & 2 deletions examples/in_cluster_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,7 @@ def main():
print("Listing pods with their IPs:")
ret = v1.list_pod_for_all_namespaces(watch=False)
for i in ret.items:
print("%s\t%s\t%s" %
(i.status.pod_ip, i.metadata.namespace, i.metadata.name))
print(f"{i.status.pod_ip}\t{i.metadata.namespace}\t{i.metadata.name}")


if __name__ == '__main__':
Expand Down
10 changes: 5 additions & 5 deletions examples/job_crud.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@


def create_job_object():
# Configureate Pod template container
# Configure Pod template container
container = client.V1Container(
name="pi",
image="perl",
Expand All @@ -54,7 +54,7 @@ def create_job(api_instance, job):
api_response = api_instance.create_namespaced_job(
body=job,
namespace="default")
print("Job created. status='%s'" % str(api_response.status))
print(f"Job created. status='{str(api_response.status)}'")
get_job_status(api_instance)


Expand All @@ -68,7 +68,7 @@ def get_job_status(api_instance):
api_response.status.failed is not None:
job_completed = True
sleep(1)
print("Job status='%s'" % str(api_response.status))
print(f"Job status='{str(api_response.status)}'")


def update_job(api_instance, job):
Expand All @@ -78,7 +78,7 @@ def update_job(api_instance, job):
name=JOB_NAME,
namespace="default",
body=job)
print("Job updated. status='%s'" % str(api_response.status))
print(f"Job updated. status='{str(api_response.status)}'")


def delete_job(api_instance):
Expand All @@ -88,7 +88,7 @@ def delete_job(api_instance):
body=client.V1DeleteOptions(
propagation_policy='Foreground',
grace_period_seconds=5))
print("Job deleted. status='%s'" % str(api_response.status))
print(f"Job deleted. status='{str(api_response.status)}'")


def main():
Expand Down
8 changes: 3 additions & 5 deletions examples/multiple_clusters.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,13 +43,11 @@ def main():

print("\nList of pods on %s:" % cluster1)
for i in client1.list_pod_for_all_namespaces().items:
print("%s\t%s\t%s" %
(i.status.pod_ip, i.metadata.namespace, i.metadata.name))
print(f"{i.status.pod_ip}\t{i.metadata.namespace}\t{i.metadata.name}")

print("\n\nList of pods on %s:" % cluster2)
print(f"\n\nList of pods on {cluster2}:")
for i in client2.list_pod_for_all_namespaces().items:
print("%s\t%s\t%s" %
(i.status.pod_ip, i.metadata.namespace, i.metadata.name))
print(f"{i.status.pod_ip}\t{i.metadata.namespace}\t{i.metadata.name}")


if __name__ == '__main__':
Expand Down
2 changes: 1 addition & 1 deletion examples/node_labels.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ def main():
# Patching the node labels
for node in node_list.items:
api_response = api_instance.patch_node(node.metadata.name, body)
print("%s\t%s" % (node.metadata.name, node.metadata.labels))
print(f"{node.metadata.name}\t{node.metadata.labels}")


if __name__ == '__main__':
Expand Down
5 changes: 2 additions & 3 deletions examples/out_of_cluster_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
# limitations under the License.

"""
Shows how to load a Kubernetes config from outside of the cluster.
Shows how to load a Kubernetes config from outside the cluster.
"""

from kubernetes import client, config
Expand All @@ -29,8 +29,7 @@ def main():
print("Listing pods with their IPs:")
ret = v1.list_pod_for_all_namespaces(watch=False)
for i in ret.items:
print("%s\t%s\t%s" %
(i.status.pod_ip, i.metadata.namespace, i.metadata.name))
print(f"{i.status.pod_ip}\t{i.metadata.namespace}\t{i.metadata.name}")


if __name__ == '__main__':
Expand Down
2 changes: 1 addition & 1 deletion examples/pick_kube_config_context.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ def main():
# utility
config.load_kube_config(context=option)

print("Active host is %s" % configuration.Configuration().host)
print(f"Active host is {configuration.Configuration().host}")

v1 = client.CoreV1Api()
print("Listing pods with their IPs:")
Expand Down
2 changes: 1 addition & 1 deletion examples/pod_config_list.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ def main():
# utility
config.load_kube_config(context=option)

print("Active host is %s" % configuration.Configuration().host)
print(f"Active host is {configuration.Configuration().host}")

v1 = client.CoreV1Api()
print("Listing pods with their IPs:")
Expand Down
14 changes: 7 additions & 7 deletions examples/pod_exec.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,11 @@ def exec_commands(api_instance):
namespace='default')
except ApiException as e:
if e.status != 404:
print("Unknown error: %s" % e)
print(f"Unknown error: {e}")
exit(1)

if not resp:
print("Pod %s does not exist. Creating it..." % name)
print(f"Pod {name} does not exist. Creating it...")
pod_manifest = {
'apiVersion': 'v1',
'kind': 'Pod',
Expand Down Expand Up @@ -98,22 +98,22 @@ def exec_commands(api_instance):
while resp.is_open():
resp.update(timeout=1)
if resp.peek_stdout():
print("STDOUT: %s" % resp.read_stdout())
print(f"STDOUT: {resp.read_stdout()}")
if resp.peek_stderr():
print("STDERR: %s" % resp.read_stderr())
print(f"STDERR: {resp.read_stderr()}")
if commands:
c = commands.pop(0)
print("Running command... %s\n" % c)
print(f"Running command... {c}\n")
resp.write_stdin(c + "\n")
else:
break

resp.write_stdin("date\n")
sdate = resp.readline_stdout(timeout=3)
print("Server date command returns: %s" % sdate)
print(f"Server date command returns: {sdate}")
resp.write_stdin("whoami\n")
user = resp.readline_stdout(timeout=3)
print("Server user is: %s" % user)
print(f"Server user is: {user}")
resp.close()


Expand Down
Loading