|
1 | 1 | package collect |
2 | 2 |
|
3 | 3 | import ( |
4 | | - "github.com/pkg/errors" |
5 | 4 | troubleshootv1beta2 "github.com/replicatedhq/troubleshoot/pkg/apis/troubleshoot/v1beta2" |
6 | | - "github.com/replicatedhq/troubleshoot/pkg/multitype" |
7 | 5 | ) |
8 | 6 |
|
9 | | -type HostCollector struct { |
10 | | - Collect *troubleshootv1beta2.HostCollect |
| 7 | +type HostCollector interface { |
| 8 | + Title() string |
| 9 | + IsExcluded() (bool, error) |
| 10 | + Collect(progressChan chan<- interface{}) (map[string][]byte, error) |
11 | 11 | } |
12 | 12 |
|
13 | | -type HostCollectors []*HostCollector |
14 | | - |
15 | | -func (c *HostCollector) RunCollectorSync() (result map[string][]byte, err error) { |
16 | | - defer func() { |
17 | | - if r := recover(); r != nil { |
18 | | - err = errors.Errorf("recovered rom panic: %v", r) |
19 | | - } |
20 | | - }() |
21 | | - |
22 | | - if c.IsExcluded() { |
23 | | - return |
24 | | - } |
25 | | - |
26 | | - if c.Collect.CPU != nil { |
27 | | - result, err = HostCPU(c) |
28 | | - } else if c.Collect.Memory != nil { |
29 | | - result, err = HostMemory(c) |
30 | | - } else if c.Collect.TCPLoadBalancer != nil { |
31 | | - result, err = HostTCPLoadBalancer(c) |
32 | | - } else if c.Collect.HTTPLoadBalancer != nil { |
33 | | - result, err = HostHTTPLoadBalancer(c) |
34 | | - } else if c.Collect.DiskUsage != nil { |
35 | | - result, err = HostDiskUsage(c) |
36 | | - } else if c.Collect.TCPPortStatus != nil { |
37 | | - result, err = HostTCPPortStatus(c) |
38 | | - } else if c.Collect.HTTP != nil { |
39 | | - result, err = HostHTTP(c) |
40 | | - } else if c.Collect.Time != nil { |
41 | | - result, err = HostTime(c) |
42 | | - } else if c.Collect.BlockDevices != nil { |
43 | | - result, err = HostBlockDevices(c) |
44 | | - } else if c.Collect.TCPConnect != nil { |
45 | | - result, err = HostTCPConnect(c) |
46 | | - } else if c.Collect.IPV4Interfaces != nil { |
47 | | - result, err = HostIPV4Interfaces(c) |
48 | | - } else if c.Collect.FilesystemPerformance != nil { |
49 | | - result, err = HostFilesystemPerformance(c) |
50 | | - } else if c.Collect.Certificate != nil { |
51 | | - result, err = HostCertificate(c) |
52 | | - } else { |
53 | | - err = errors.New("no spec found to run") |
54 | | - return |
55 | | - } |
56 | | - if err != nil { |
57 | | - return |
| 13 | +func GetHostCollector(collector *troubleshootv1beta2.HostCollect) (HostCollector, bool) { |
| 14 | + switch { |
| 15 | + case collector.CPU != nil: |
| 16 | + return &CollectHostCPU{collector.CPU}, true |
| 17 | + case collector.Memory != nil: |
| 18 | + return &CollectHostMemory{collector.Memory}, true |
| 19 | + case collector.TCPLoadBalancer != nil: |
| 20 | + return &CollectHostTCPLoadBalancer{collector.TCPLoadBalancer}, true |
| 21 | + case collector.HTTPLoadBalancer != nil: |
| 22 | + return &CollectHostHTTPLoadBalancer{collector.HTTPLoadBalancer}, true |
| 23 | + case collector.DiskUsage != nil: |
| 24 | + return &CollectHostDiskUsage{collector.DiskUsage}, true |
| 25 | + case collector.TCPPortStatus != nil: |
| 26 | + return &CollectHostTCPPortStatus{collector.TCPPortStatus}, true |
| 27 | + case collector.HTTP != nil: |
| 28 | + return &CollectHostHTTP{collector.HTTP}, true |
| 29 | + case collector.Time != nil: |
| 30 | + return &CollectHostTime{collector.Time}, true |
| 31 | + case collector.BlockDevices != nil: |
| 32 | + return &CollectHostBlockDevices{collector.BlockDevices}, true |
| 33 | + case collector.TCPConnect != nil: |
| 34 | + return &CollectHostTCPConnect{collector.TCPConnect}, true |
| 35 | + case collector.IPV4Interfaces != nil: |
| 36 | + return &CollectHostIPV4Interfaces{collector.IPV4Interfaces}, true |
| 37 | + case collector.FilesystemPerformance != nil: |
| 38 | + return &CollectHostFilesystemPerformance{collector.FilesystemPerformance}, true |
| 39 | + case collector.Certificate != nil: |
| 40 | + return &CollectHostCertificate{collector.Certificate}, true |
| 41 | + default: |
| 42 | + return nil, false |
58 | 43 | } |
59 | | - |
60 | | - return |
61 | 44 | } |
62 | 45 |
|
63 | | -func (c *HostCollector) IsExcluded() bool { |
64 | | - exclude := multitype.BoolOrString{} |
65 | | - if c.Collect.CPU != nil { |
66 | | - exclude = c.Collect.CPU.Exclude |
67 | | - } else if c.Collect.Memory != nil { |
68 | | - exclude = c.Collect.Memory.Exclude |
69 | | - } else if c.Collect.TCPLoadBalancer != nil { |
70 | | - exclude = c.Collect.TCPLoadBalancer.Exclude |
71 | | - } else if c.Collect.HTTPLoadBalancer != nil { |
72 | | - exclude = c.Collect.HTTPLoadBalancer.Exclude |
73 | | - } else if c.Collect.DiskUsage != nil { |
74 | | - exclude = c.Collect.DiskUsage.Exclude |
75 | | - } else if c.Collect.TCPPortStatus != nil { |
76 | | - exclude = c.Collect.TCPPortStatus.Exclude |
77 | | - } else if c.Collect.HTTP != nil { |
78 | | - exclude = c.Collect.HTTP.Exclude |
79 | | - } else if c.Collect.Time != nil { |
80 | | - exclude = c.Collect.Time.Exclude |
81 | | - } else if c.Collect.BlockDevices != nil { |
82 | | - exclude = c.Collect.BlockDevices.Exclude |
83 | | - } else if c.Collect.TCPConnect != nil { |
84 | | - exclude = c.Collect.TCPConnect.Exclude |
85 | | - } else if c.Collect.IPV4Interfaces != nil { |
86 | | - exclude = c.Collect.IPV4Interfaces.Exclude |
87 | | - } else if c.Collect.FilesystemPerformance != nil { |
88 | | - exclude = c.Collect.FilesystemPerformance.Exclude |
89 | | - } else if c.Collect.Certificate != nil { |
90 | | - exclude = c.Collect.Certificate.Exclude |
91 | | - } else { |
92 | | - return true |
93 | | - } |
94 | | - |
95 | | - isExcludedResult, err := isExcluded(exclude) |
96 | | - if err != nil { |
97 | | - return true |
| 46 | +func hostCollectorTitleOrDefault(meta troubleshootv1beta2.HostCollectorMeta, defaultTitle string) string { |
| 47 | + if meta.CollectorName != "" { |
| 48 | + return meta.CollectorName |
98 | 49 | } |
99 | | - return isExcludedResult |
100 | | -} |
101 | | - |
102 | | -func (c *HostCollector) GetDisplayName() string { |
103 | | - return c.Collect.GetName() |
| 50 | + return defaultTitle |
104 | 51 | } |
0 commit comments