...
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