...

Source file src/edge-infra.dev/pkg/k8s/runtime/statusreaders/calico.go

Documentation: edge-infra.dev/pkg/k8s/runtime/statusreaders

     1  package statusreaders
     2  
     3  import (
     4  	"context"
     5  
     6  	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
     7  	"k8s.io/apimachinery/pkg/runtime/schema"
     8  	ktypes "k8s.io/apimachinery/pkg/types"
     9  	"sigs.k8s.io/cli-utils/pkg/kstatus/polling/engine"
    10  	"sigs.k8s.io/cli-utils/pkg/kstatus/polling/event"
    11  	"sigs.k8s.io/cli-utils/pkg/kstatus/status"
    12  	kobject "sigs.k8s.io/cli-utils/pkg/object"
    13  )
    14  
    15  type CalicoStatusReader struct{}
    16  
    17  func (csr *CalicoStatusReader) Supports(gk schema.GroupKind) bool {
    18  	supported := gk.Group == "projectcalico.org" || gk.Group == "crd.projectcalico.org"
    19  	return supported
    20  }
    21  
    22  func (csr *CalicoStatusReader) ReadStatus(ctx context.Context, reader engine.ClusterReader, resource kobject.ObjMetadata) (*event.ResourceStatus, error) {
    23  	var u unstructured.Unstructured
    24  	u.SetGroupVersionKind(schema.GroupVersionKind{
    25  		Group:   "projectcalico.org",
    26  		Version: "v3",
    27  		Kind:    "FelixConfiguration",
    28  	})
    29  	key := ktypes.NamespacedName{
    30  		Name:      resource.Name,
    31  		Namespace: resource.Namespace,
    32  	}
    33  	err := reader.Get(ctx, key, &u)
    34  	if err != nil {
    35  		return nil, err
    36  	}
    37  	return csr.ReadStatusForObject(ctx, reader, &u)
    38  }
    39  
    40  func (csr *CalicoStatusReader) ReadStatusForObject(_ context.Context, _ engine.ClusterReader, resource *unstructured.Unstructured) (*event.ResourceStatus, error) {
    41  	return &event.ResourceStatus{
    42  		Identifier: kobject.UnstructuredToObjMetadata(resource),
    43  		Status:     status.CurrentStatus,
    44  		Resource:   resource,
    45  		Message:    "Resource is always ready",
    46  	}, nil
    47  }
    48  

View as plain text