diff --git a/src/common/k8s-api/__tests__/kube-api.test.ts b/src/common/k8s-api/__tests__/kube-api.test.ts index 2ae2015437..10fd82b696 100644 --- a/src/common/k8s-api/__tests__/kube-api.test.ts +++ b/src/common/k8s-api/__tests__/kube-api.test.ts @@ -241,6 +241,24 @@ describe("KubeApi", () => { { op: "replace", path: "/spec/replicas", value: 2 }, ], "json"); }); + + it("allows deep partial patch", async () => { + expect.hasAssertions(); + + (fetch as any).mockResponse(async (request: Request) => { + expect(request.method).toEqual("PATCH"); + expect(request.headers.get("content-type")).toMatch("merge-patch"); + expect(request.body.toString()).toEqual(JSON.stringify({ metadata: { annotations: { provisioned: "true" }}})); + + return {}; + }); + + await api.patch( + { name: "test", namespace: "default" }, + { metadata: { annotations: { provisioned: "true" }}}, + "merge", + ); + }); }); describe("delete", () => { diff --git a/src/common/k8s-api/kube-api.ts b/src/common/k8s-api/kube-api.ts index 33cecf3db1..a8b19d81b5 100644 --- a/src/common/k8s-api/kube-api.ts +++ b/src/common/k8s-api/kube-api.ts @@ -526,7 +526,7 @@ export class KubeApi { return parsed; } - async patch(desc: ResourceDescriptor, data?: Partial | Patch, strategy: KubeApiPatchType = "strategic"): Promise { + async patch(desc: ResourceDescriptor, data?: PartialKubeObject | Patch, strategy: KubeApiPatchType = "strategic") { await this.checkPreferredVersion(); const apiUrl = this.getUrl(desc); @@ -541,7 +541,7 @@ export class KubeApi { throw new Error(`PATCH request to ${apiUrl} returned an array: ${JSON.stringify(parsed)}`); } - return parsed; + return parsed as T | null; } async delete({ propagationPolicy = "Background", ...desc }: DeleteResourceDescriptor) { diff --git a/src/renderer/components/+namespaces/namespaces.tsx b/src/renderer/components/+namespaces/namespaces.tsx index 7c47ddef80..dd2bf9e476 100644 --- a/src/renderer/components/+namespaces/namespaces.tsx +++ b/src/renderer/components/+namespaces/namespaces.tsx @@ -49,7 +49,8 @@ export class Namespaces extends React.Component { ns.getName(), [columnId.labels]: ns => ns.getLabels(), diff --git a/src/renderer/components/+workloads-pods/pods.tsx b/src/renderer/components/+workloads-pods/pods.tsx index 7688861cdc..208fa1f2a2 100644 --- a/src/renderer/components/+workloads-pods/pods.tsx +++ b/src/renderer/components/+workloads-pods/pods.tsx @@ -92,7 +92,8 @@ export class Pods extends React.Component { render() { return (