Skip to content

Commit 93402fc

Browse files
authored
Merge pull request kubernetes#75277 from jennybuckley/fix-ints
Fix server side apply int/float bug
2 parents cc8afb2 + 10259c9 commit 93402fc

File tree

3 files changed

+19
-3
lines changed

3 files changed

+19
-3
lines changed

staging/src/k8s.io/apiserver/pkg/endpoints/handlers/fieldmanager/internal/typeconverter.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,12 @@ func (c *typeConverter) YAMLToTyped(from []byte) (typed.TypedValue, error) {
105105
return nil, fmt.Errorf("error decoding YAML: %v", err)
106106
}
107107

108-
return c.ObjectToTyped(unstructured)
108+
gvk := unstructured.GetObjectKind().GroupVersionKind()
109+
t := c.parser.Type(gvk)
110+
if t == nil {
111+
return nil, fmt.Errorf("no corresponding type for %v", gvk)
112+
}
113+
return t.FromYAML(typed.YAMLObject(string(from)))
109114
}
110115

111116
func (c *typeConverter) TypedToObject(value typed.TypedValue) (runtime.Object, error) {

staging/src/k8s.io/apiserver/pkg/endpoints/handlers/fieldmanager/internal/typeconverter_test.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,6 @@ metadata:
6868
labels:
6969
app: nginx
7070
spec:
71-
replicas: 3
7271
selector:
7372
matchLabels:
7473
app: nginx
@@ -91,7 +90,6 @@ metadata:
9190
labels:
9291
app: nginx
9392
spec:
94-
replicas: 3
9593
selector:
9694
matchLabels:
9795
app: nginx

test/integration/apiserver/apply/apply_test.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,19 @@ func TestApplyAlsoCreates(t *testing.T) {
119119
if err != nil {
120120
t.Fatalf("Failed to retrieve object: %v", err)
121121
}
122+
123+
// Test that we can re apply with a different field manager and don't get conflicts
124+
_, err = client.CoreV1().RESTClient().Patch(types.ApplyPatchType).
125+
Namespace("default").
126+
Resource(tc.resource).
127+
Name(tc.name).
128+
Param("fieldManager", "apply_test_2").
129+
Body([]byte(tc.body)).
130+
Do().
131+
Get()
132+
if err != nil {
133+
t.Fatalf("Failed to re-apply object using Apply patch: %v", err)
134+
}
122135
}
123136
}
124137

0 commit comments

Comments
 (0)