kubernetes-client / kubernetes-client/python

Deployment spec properties are inadvertently removed when serializing

Open
#2,435 9 comments 0 reactions 1 assignee Claimed by @Yash121l View on GitHub
help wanted kind/bug
Dominant language
Python
Stars
7.7k
Forks
3.5k
Avg merge
1d 14h
Merged PRs (30d)
18

Description

## Summary

Various valid deployment spec properties are seemingly wiped out when I load it into a `V1DeploymentSpec` object, make a small change, then re-serialize to a dict.

## Details

I am extracting a `V1DeploymentSpec` from a `ClusterServiceVersion` manifest, making a small mutation to it, then re-serializing it and adding it back into the `ClusterServiceVersion`. This leads to multiple mutations that were not intended. See the following sequence of diffs (none of which were intended) for reference:
```
@@ -356,287 +355,126 @@

- selector:
- matchLabels:
- name: my-operator
+ selector: {}

...

spec:
- affinity:
- nodeAffinity:
- requiredDuringSchedulingIgnoredDuringExecution:
- nodeSelectorTerms:
- - matchExpressions:
- - key: kubernetes.io/arch
- operator: In
- values:
- - s390x
- - amd64
+ affinity: {}

...

- name: WATCH_NAMESPACE
- valueFrom:
- fieldRef:
- fieldPath: metadata.annotations['olm.targetNamespaces']
- name: POD_NAME
- valueFrom:
- fieldRef:
- fieldPath: metadata.name

...

- imagePullPolicy: Always
- livenessProbe:
- failureThreshold: 4
- httpGet:
- path: /healthz
- port: 8081
- initialDelaySeconds: 15
- periodSeconds: 15
- successThreshold: 1
- timeoutSeconds: 3
- readinessProbe:
- failureThreshold: 3
- httpGet:
- path: /healthz
- port: 8081
- initialDelaySeconds: 15
- periodSeconds: 15
- successThreshold: 1
- timeoutSeconds: 3
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.