Skip to content

Commit f0e55af

Browse files
bigkevmcdk8s-infra-cherrypick-robot
authored and
k8s-infra-cherrypick-robot
committed
Preserve TypeMeta for PartialObjectMeta resources
This updates the fake client to retain the PartialObjectMeta TypeMeta when getting resources.
1 parent 525f793 commit f0e55af

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)