kubernetes-client/python

Deployment spec properties are inadvertently removed when serializing

Open

#2 435 ouverte le 14 août 2025

Voir sur GitHub
 (4 commentaires) (0 réactions) (0 assignés)Python (3 323 forks)batch import
help wantedkind/bug

Métriques du dépôt

Stars
 (6 225 stars)
Métriques de merge PR
 (Merge moyen 10j 3h) (2 PRs mergées en 30 j)

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

Guide contributeur