-
Notifications
You must be signed in to change notification settings - Fork 5
/
printer.go
119 lines (112 loc) · 4.05 KB
/
printer.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
package tableprinters
import (
"fmt"
"time"
"github.com/metal-stack/metal-go/api/models"
"github.com/metal-stack/metal-lib/pkg/genericcli/printers"
"github.com/metal-stack/metal-lib/pkg/pointer"
"github.com/metal-stack/metalctl/pkg/api"
)
type TablePrinter struct {
t *printers.TablePrinter
lastEventErrorThreshold time.Duration
}
func New() *TablePrinter {
return &TablePrinter{}
}
func (t *TablePrinter) SetPrinter(printer *printers.TablePrinter) {
t.t = printer
}
func (t *TablePrinter) SetLastEventErrorThreshold(threshold time.Duration) {
t.lastEventErrorThreshold = threshold
}
func (t *TablePrinter) ToHeaderAndRows(data any, wide bool) ([]string, [][]string, error) {
switch d := data.(type) {
case []*models.V1AuditResponse:
return t.AuditTable(d, wide)
case *models.V1AuditResponse:
return t.AuditTable(pointer.WrapInSlice(d), wide)
case []*models.V1MachineResponse:
return t.MachineTable(d, wide)
case *models.V1MachineResponse:
return t.MachineTable(pointer.WrapInSlice(d), wide)
case *MachinesAndIssues:
return t.MachineIssuesTable(d, wide)
case []*models.V1MachineIssue:
return t.MachineIssuesListTable(d, wide)
case *models.V1MachineIssue:
return t.MachineIssuesListTable(pointer.WrapInSlice(d), wide)
case []*models.V1FirewallResponse:
return t.FirewallTable(d, wide)
case *models.V1FirewallResponse:
return t.FirewallTable(pointer.WrapInSlice(d), wide)
case []*models.V1ImageResponse:
return t.ImageTable(d, wide)
case *models.V1ImageResponse:
return t.ImageTable(pointer.WrapInSlice(d), wide)
case []*models.V1PartitionResponse:
return t.PartitionTable(d, wide)
case *models.V1PartitionResponse:
return t.PartitionTable(pointer.WrapInSlice(d), wide)
case []*models.V1PartitionCapacity:
return t.PartitionCapacityTable(d, wide)
case []*models.V1SwitchResponse:
return t.SwitchTable(d, wide)
case *models.V1SwitchResponse:
return t.SwitchTable(pointer.WrapInSlice(d), wide)
case []*SwitchDetail:
return t.SwitchDetailTable(d, wide)
case *SwitchesWithMachines:
return t.SwitchWithConnectedMachinesTable(d, wide)
case *models.V1NetworkResponse:
return t.NetworkTable(pointer.WrapInSlice(d), wide)
case []*models.V1NetworkResponse:
return t.NetworkTable(d, wide)
case *models.V1IPResponse:
return t.IPTable(pointer.WrapInSlice(d), wide)
case []*models.V1IPResponse:
return t.IPTable(d, wide)
case *models.V1ProjectResponse:
return t.ProjectTable(pointer.WrapInSlice(d), wide)
case []*models.V1ProjectResponse:
return t.ProjectTable(d, wide)
case *models.V1TenantResponse:
return t.TenantTable(pointer.WrapInSlice(d), wide)
case []*models.V1TenantResponse:
return t.TenantTable(d, wide)
case []*models.V1MachineIPMIResponse:
return t.MachineIPMITable(d, wide)
case *models.V1MachineIPMIResponse:
return t.MachineIPMITable(pointer.WrapInSlice(d), wide)
case []*models.V1MachineProvisioningEvent:
return t.MachineLogsTable(d, wide)
case *models.V1MachineProvisioningEvent:
return t.MachineLogsTable(pointer.WrapInSlice(d), wide)
case *models.V1FirmwaresResponse:
return t.FirmwareTable(d, wide)
case *models.V1FilesystemLayoutResponse:
return t.FSLTable(pointer.WrapInSlice(d), wide)
case []*models.V1FilesystemLayoutResponse:
return t.FSLTable(d, wide)
case *api.Contexts:
return t.ContextTable(d, wide)
case *models.V1SizeImageConstraintResponse:
return t.SizeImageConstraintTable(pointer.WrapInSlice(d), wide)
case []*models.V1SizeImageConstraintResponse:
return t.SizeImageConstraintTable(d, wide)
case *models.V1SizeResponse:
return t.SizeTable(pointer.WrapInSlice(d), wide)
case []*models.V1SizeResponse:
return t.SizeTable(d, wide)
case *models.V1SizeMatchingLog:
return t.SizeMatchingLogTable(pointer.WrapInSlice(d), wide)
case []*models.V1SizeMatchingLog:
return t.SizeMatchingLogTable(d, wide)
case *models.V1SizeReservationResponse:
return t.SizeReservationTable(pointer.WrapInSlice(d), wide)
case []*models.V1SizeReservationResponse:
return t.SizeReservationTable(d, wide)
default:
return nil, nil, fmt.Errorf("unknown table printer for type: %T", d)
}
}