package statusreaders import ( "context" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/runtime/schema" ktypes "k8s.io/apimachinery/pkg/types" "sigs.k8s.io/cli-utils/pkg/kstatus/polling/engine" "sigs.k8s.io/cli-utils/pkg/kstatus/polling/event" "sigs.k8s.io/cli-utils/pkg/kstatus/status" kobject "sigs.k8s.io/cli-utils/pkg/object" ) type CalicoStatusReader struct{} func (csr *CalicoStatusReader) Supports(gk schema.GroupKind) bool { supported := gk.Group == "projectcalico.org" || gk.Group == "crd.projectcalico.org" return supported } func (csr *CalicoStatusReader) ReadStatus(ctx context.Context, reader engine.ClusterReader, resource kobject.ObjMetadata) (*event.ResourceStatus, error) { var u unstructured.Unstructured u.SetGroupVersionKind(schema.GroupVersionKind{ Group: "projectcalico.org", Version: "v3", Kind: "FelixConfiguration", }) key := ktypes.NamespacedName{ Name: resource.Name, Namespace: resource.Namespace, } err := reader.Get(ctx, key, &u) if err != nil { return nil, err } return csr.ReadStatusForObject(ctx, reader, &u) } func (csr *CalicoStatusReader) ReadStatusForObject(_ context.Context, _ engine.ClusterReader, resource *unstructured.Unstructured) (*event.ResourceStatus, error) { return &event.ResourceStatus{ Identifier: kobject.UnstructuredToObjMetadata(resource), Status: status.CurrentStatus, Resource: resource, Message: "Resource is always ready", }, nil }