...
1
2
3
4 package table
5
6 import (
7 "strings"
8
9 "sigs.k8s.io/cli-utils/pkg/kstatus/polling/collector"
10 pe "sigs.k8s.io/cli-utils/pkg/kstatus/polling/event"
11 "sigs.k8s.io/cli-utils/pkg/object"
12 "sigs.k8s.io/cli-utils/pkg/print/table"
13 )
14
15
16
17
18 type CollectorAdapter struct {
19 collector *collector.ResourceStatusCollector
20 invNameMap map[object.ObjMetadata]string
21 statusSet map[string]bool
22 }
23
24 type ResourceInfo struct {
25 resourceStatus *pe.ResourceStatus
26 invName string
27 }
28
29 func (r *ResourceInfo) Identifier() object.ObjMetadata {
30 return r.resourceStatus.Identifier
31 }
32
33 func (r *ResourceInfo) ResourceStatus() *pe.ResourceStatus {
34 return r.resourceStatus
35 }
36
37 func (r *ResourceInfo) SubResources() []table.Resource {
38 var subResources []table.Resource
39 for _, rs := range r.resourceStatus.GeneratedResources {
40 subResources = append(subResources, &ResourceInfo{
41 resourceStatus: rs,
42 invName: r.invName,
43 })
44 }
45 return subResources
46 }
47
48 type ResourceState struct {
49 resources []table.Resource
50 err error
51 }
52
53 func (rss *ResourceState) Resources() []table.Resource {
54 return rss.resources
55 }
56
57 func (rss *ResourceState) Error() error {
58 return rss.err
59 }
60
61 func (ca *CollectorAdapter) LatestStatus() *ResourceState {
62 observation := ca.collector.LatestObservation()
63 var resources []table.Resource
64 for _, resourceStatus := range observation.ResourceStatuses {
65 if _, ok := ca.statusSet[strings.ToLower(resourceStatus.Status.String())]; len(ca.statusSet) == 0 || ok {
66 resources = append(resources, &ResourceInfo{
67 resourceStatus: resourceStatus,
68 invName: ca.invNameMap[resourceStatus.Identifier],
69 })
70 }
71 }
72 return &ResourceState{
73 resources: resources,
74 err: observation.Error,
75 }
76 }
77
View as plain text