Skip to content

Commit 22d9eab

Browse files
authored
Merge pull request kubernetes-sigs#2951 from k8s-infra-cherrypick-robot/cherry-pick-2949-to-release-0.19
[release-0.19] 🐛 Fakeclient: preserve TypeMeta for PartialObjectMeta resources
2 parents 525f793 + f0e55af commit 22d9eab

File tree

2 files changed

+31
-1
lines changed

2 files changed

+31
-1
lines changed

pkg/client/fake/client.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -508,7 +508,10 @@ func (c *fakeClient) Get(ctx context.Context, key client.ObjectKey, obj client.O
508508
return err
509509
}
510510

511-
if _, isUnstructured := obj.(runtime.Unstructured); isUnstructured {
511+
_, isUnstructured := obj.(runtime.Unstructured)
512+
_, isPartialObject := obj.(*metav1.PartialObjectMetadata)
513+
514+
if isUnstructured || isPartialObject {
512515
gvk, err := apiutil.GVKForObject(obj, c.scheme)
513516
if err != nil {
514517
return err

pkg/client/fake/client_test.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,33 @@ var _ = Describe("Fake client", func() {
339339
Expect(apierrors.IsNotFound(err)).To(BeTrue())
340340
})
341341

342+
It("should be able to retrieve objects by PartialObjectMetadata", func() {
343+
By("Creating a Resource")
344+
secret := &corev1.Secret{
345+
ObjectMeta: metav1.ObjectMeta{
346+
Name: "foo",
347+
Namespace: "bar",
348+
},
349+
}
350+
err := cl.Create(context.Background(), secret)
351+
Expect(err).ToNot(HaveOccurred())
352+
353+
By("Fetching the resource using a PartialObjectMeta")
354+
partialObjMeta := &metav1.PartialObjectMetadata{
355+
ObjectMeta: metav1.ObjectMeta{
356+
Name: "foo",
357+
Namespace: "bar",
358+
},
359+
}
360+
partialObjMeta.SetGroupVersionKind(corev1.SchemeGroupVersion.WithKind("Secret"))
361+
362+
err = cl.Get(context.Background(), client.ObjectKeyFromObject(partialObjMeta), partialObjMeta)
363+
Expect(err).ToNot(HaveOccurred())
364+
365+
Expect(partialObjMeta.Kind).To(Equal("Secret"))
366+
Expect(partialObjMeta.APIVersion).To(Equal("v1"))
367+
})
368+
342369
It("should support filtering by labels and their values", func() {
343370
By("Listing deployments with a particular label and value")
344371
list := &appsv1.DeploymentList{}

0 commit comments

Comments
 (0)