Skip to content

Commit 89975ab

Browse files
committed
Add inventory name as an attribute to event and json format, and remove unused functions and constants.
1 parent db64a4b commit 89975ab

File tree

2 files changed

+50
-6
lines changed

2 files changed

+50
-6
lines changed

thirdparty/cli-utils/status/printers/list/base.go

Lines changed: 48 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,24 @@
1515
package list
1616

1717
import (
18+
"encoding/json"
19+
"fmt"
20+
"strings"
21+
"time"
22+
1823
"sigs.k8s.io/cli-utils/pkg/apply/event"
1924
"sigs.k8s.io/cli-utils/pkg/kstatus/polling/collector"
2025
pollevent "sigs.k8s.io/cli-utils/pkg/kstatus/polling/event"
2126
"sigs.k8s.io/cli-utils/pkg/object"
2227
"sigs.k8s.io/cli-utils/pkg/print/list"
28+
"sigs.k8s.io/cli-utils/pkg/printers"
2329
)
2430

2531
// BaseListPrinter implements the Printer interface and outputs the resource
2632
// status information as a list of events as they happen.
2733
type BaseListPrinter struct {
2834
Formatter list.Formatter
35+
Format string
2936
Data *PrintData
3037
}
3138

@@ -50,7 +57,7 @@ func (ep *BaseListPrinter) PrintError(e error) error {
5057
// every event and is responsible for stopping the poller when appropriate.
5158
// This function will block.
5259
func (ep *BaseListPrinter) Print(ch <-chan pollevent.Event, identifiers []object.ObjMetadata,
53-
cancelFunc collector.ObserverFunc) error {
60+
cancelFunc collector.ObserverFunc) error {
5461
coll := collector.NewResourceStatusCollector(identifiers)
5562
// The actual work is done by the collector, which will invoke the
5663
// callback on every event. In the callback we print the status
@@ -77,15 +84,50 @@ func (ep *BaseListPrinter) printStatusEvent(se pollevent.Event) error {
7784
switch se.Type {
7885
case pollevent.ResourceUpdateEvent:
7986
id := se.Resource.Identifier
80-
return ep.Formatter.FormatStatusEvent(event.StatusEvent{
81-
Identifier: id,
82-
Resource: se.Resource.Resource,
83-
PollResourceInfo: se.Resource,
84-
})
87+
var invName string
88+
var ok bool
89+
if invName, ok = ep.Data.InvNameMap[id]; !ok {
90+
return fmt.Errorf("Resource not found\n")
91+
}
92+
// filter out status that are not assigned
93+
statusString := se.Resource.Status.String()
94+
if _, ok := ep.Data.StatusSet[strings.ToLower(statusString)]; len(ep.Data.StatusSet) != 0 && !ok {
95+
return nil
96+
}
97+
switch ep.Format {
98+
case printers.EventsPrinter:
99+
_, err := fmt.Printf("%s/%s/%s/%s is %s: %s\n", invName,
100+
strings.ToLower(id.GroupKind.String()), id.Namespace, id.Name, statusString, se.Resource.Message)
101+
return err
102+
case printers.JSONPrinter:
103+
eventInfo := ep.createJsonObj(id)
104+
eventInfo["inventory-name"] = invName
105+
eventInfo["status"] = statusString
106+
eventInfo["message"] = se.Resource.Message
107+
b, err := json.Marshal(eventInfo)
108+
if err != nil {
109+
return err
110+
}
111+
_, err = fmt.Println(string(b))
112+
return err
113+
default:
114+
return fmt.Errorf("No such printer type\n")
115+
}
85116
case pollevent.ErrorEvent:
86117
return ep.Formatter.FormatErrorEvent(event.ErrorEvent{
87118
Err: se.Error,
88119
})
89120
}
90121
return nil
91122
}
123+
124+
func (ep *BaseListPrinter) createJsonObj(id object.ObjMetadata) map[string]interface{} {
125+
return map[string]interface{}{
126+
"group": id.GroupKind.Group,
127+
"kind": id.GroupKind.Kind,
128+
"namespace": id.Namespace,
129+
"name": id.Name,
130+
"timestamp": time.Now().UTC().Format(time.RFC3339),
131+
"type": "status",
132+
}
133+
}

thirdparty/cli-utils/status/printers/printers.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,13 @@ func CreatePrinter(printerType string, ioStreams genericclioptions.IOStreams, pr
2323
case printers.JSONPrinter:
2424
return &list.BaseListPrinter{
2525
Formatter: json.NewFormatter(ioStreams, common.DryRunNone),
26+
Format: printers.JSONPrinter,
2627
Data: printData,
2728
}, nil
2829
default:
2930
return &list.BaseListPrinter{
3031
Formatter: events.NewFormatter(ioStreams, common.DryRunNone),
32+
Format: printers.EventsPrinter,
3133
Data: printData,
3234
}, nil
3335
}

0 commit comments

Comments
 (0)