Skip to content

Commit 6277101

Browse files
committed
Use bool string for exclude value
1 parent 346c751 commit 6277101

File tree

7 files changed

+475
-47
lines changed

7 files changed

+475
-47
lines changed

go.mod

Lines changed: 14 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,44 +4,34 @@ go 1.12
44

55
require (
66
github.com/ahmetalpbalkan/go-cursor v0.0.0-20131010032410-8136607ea412
7-
github.com/aws/aws-sdk-go v1.22.0 // indirect
87
github.com/blang/semver v3.5.1+incompatible
9-
github.com/docker/spdystream v0.0.0-20181023171402-6480d4af844c // indirect
10-
github.com/dsnet/compress v0.0.1 // indirect
11-
github.com/elazarl/goproxy v0.0.0-20191011121108-aa519ddbe484 // indirect
12-
github.com/emicklei/go-restful v2.9.6+incompatible // indirect
138
github.com/fatih/color v1.7.0
14-
github.com/frankban/quicktest v1.7.2 // indirect
159
github.com/gin-gonic/gin v1.4.0
1610
github.com/gizak/termui/v3 v3.1.0
17-
github.com/golang/snappy v0.0.1 // indirect
1811
github.com/hashicorp/go-getter v1.3.1-0.20190627223108-da0323b9545e
1912
github.com/hashicorp/go-multierror v1.0.0
20-
github.com/imdario/mergo v0.3.7 // indirect
2113
github.com/manifoldco/promptui v0.3.2
22-
github.com/mattn/go-isatty v0.0.8
14+
github.com/mattn/go-isatty v0.0.9
2315
github.com/mholt/archiver v3.1.1+incompatible
24-
github.com/mitchellh/go-wordwrap v1.0.0 // indirect
25-
github.com/nwaples/rardecode v1.0.0 // indirect
26-
github.com/pierrec/lz4 v2.2.6+incompatible // indirect
27-
github.com/pkg/errors v0.8.1
16+
github.com/nwaples/rardecode v1.1.0 // indirect
17+
github.com/pierrec/lz4 v2.4.1+incompatible // indirect
18+
github.com/pkg/errors v0.9.1
19+
github.com/prometheus/procfs v0.0.5 // indirect
20+
github.com/replicatedhq/kots v1.13.3
2821
github.com/spf13/cobra v0.0.5
2922
github.com/spf13/viper v1.4.0
3023
github.com/stretchr/testify v1.4.0
3124
github.com/tj/go-spin v1.1.0
32-
github.com/ugorji/go v1.1.7 // indirect
33-
github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect
34-
go.undefinedlabs.com/scopeagent v0.1.6
35-
gopkg.in/yaml.v2 v2.2.4
36-
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc // indirect
37-
k8s.io/api v0.17.0
38-
k8s.io/apiextensions-apiserver v0.0.0-20190918161926-8f644eb6e783
39-
k8s.io/apimachinery v0.17.0
25+
go.undefinedlabs.com/scopeagent v0.1.7
26+
gopkg.in/yaml.v2 v2.2.8
27+
k8s.io/api v0.17.2
28+
k8s.io/apiextensions-apiserver v0.17.2
29+
k8s.io/apimachinery v0.17.2
4030
k8s.io/cli-runtime v0.17.0
41-
k8s.io/client-go v0.17.0
42-
k8s.io/code-generator v0.16.5-beta.1 // indirect
31+
k8s.io/client-go v0.17.2
4332
sigs.k8s.io/controller-runtime v0.4.0
44-
sigs.k8s.io/controller-tools v0.2.4 // indirect
4533
)
4634

4735
replace github.com/appscode/jsonpatch => github.com/gomodules/jsonpatch v2.0.1+incompatible
36+
37+
replace github.com/nicksnyder/go-i18n => github.com/nicksnyder/go-i18n v1.10.1

go.sum

Lines changed: 312 additions & 0 deletions
Large diffs are not rendered by default.

pkg/analyze/analyzer.go

Lines changed: 78 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
package analyzer
22

33
import (
4+
"strconv"
5+
46
"github.com/pkg/errors"
7+
"github.com/replicatedhq/kots/kotskinds/multitype"
58
troubleshootv1beta1 "github.com/replicatedhq/troubleshoot/pkg/apis/troubleshoot/v1beta1"
69
)
710

@@ -20,74 +23,138 @@ type AnalyzeResult struct {
2023
type getCollectedFileContents func(string) ([]byte, error)
2124
type getChildCollectedFileContents func(string) (map[string][]byte, error)
2225

26+
func isExcluded(excludeVal multitype.BoolOrString) (bool, error) {
27+
if excludeVal.Type == multitype.Bool {
28+
return excludeVal.BoolVal, nil
29+
}
30+
31+
parsed, err := strconv.ParseBool(excludeVal.StrVal)
32+
if err != nil {
33+
return false, errors.Wrap(err, "failed to parse bool string")
34+
}
35+
36+
return parsed, nil
37+
}
38+
2339
func Analyze(analyzer *troubleshootv1beta1.Analyze, getFile getCollectedFileContents, findFiles getChildCollectedFileContents) (*AnalyzeResult, error) {
2440
if analyzer.ClusterVersion != nil {
25-
if analyzer.ClusterVersion.Exclude {
41+
isExcluded, err := isExcluded(analyzer.ClusterVersion.Exclude)
42+
if err != nil {
43+
return nil, err
44+
}
45+
if isExcluded {
2646
return nil, nil
2747
}
2848
return analyzeClusterVersion(analyzer.ClusterVersion, getFile)
2949
}
3050
if analyzer.StorageClass != nil {
31-
if analyzer.StorageClass.Exclude {
51+
isExcluded, err := isExcluded(analyzer.StorageClass.Exclude)
52+
if err != nil {
53+
return nil, err
54+
}
55+
if isExcluded {
3256
return nil, nil
3357
}
3458
return analyzeStorageClass(analyzer.StorageClass, getFile)
3559
}
3660
if analyzer.CustomResourceDefinition != nil {
37-
if analyzer.CustomResourceDefinition.Exclude {
61+
isExcluded, err := isExcluded(analyzer.CustomResourceDefinition.Exclude)
62+
if err != nil {
63+
return nil, err
64+
}
65+
if isExcluded {
3866
return nil, nil
3967
}
4068
return analyzeCustomResourceDefinition(analyzer.CustomResourceDefinition, getFile)
4169
}
4270
if analyzer.Ingress != nil {
43-
if analyzer.Ingress.Exclude {
71+
isExcluded, err := isExcluded(analyzer.Ingress.Exclude)
72+
if err != nil {
73+
return nil, err
74+
}
75+
if isExcluded {
4476
return nil, nil
4577
}
4678
return analyzeIngress(analyzer.Ingress, getFile)
4779
}
4880
if analyzer.Secret != nil {
49-
if analyzer.Secret.Exclude {
81+
isExcluded, err := isExcluded(analyzer.Secret.Exclude)
82+
if err != nil {
83+
return nil, err
84+
}
85+
if isExcluded {
5086
return nil, nil
5187
}
5288
return analyzeSecret(analyzer.Secret, getFile)
5389
}
5490
if analyzer.ImagePullSecret != nil {
55-
if analyzer.ImagePullSecret.Exclude {
91+
isExcluded, err := isExcluded(analyzer.ImagePullSecret.Exclude)
92+
if err != nil {
93+
return nil, err
94+
}
95+
if isExcluded {
5696
return nil, nil
5797
}
5898
return analyzeImagePullSecret(analyzer.ImagePullSecret, findFiles)
5999
}
60100
if analyzer.DeploymentStatus != nil {
61-
if analyzer.DeploymentStatus.Exclude {
101+
isExcluded, err := isExcluded(analyzer.DeploymentStatus.Exclude)
102+
if err != nil {
103+
return nil, err
104+
}
105+
if isExcluded {
62106
return nil, nil
63107
}
64108
return analyzeDeploymentStatus(analyzer.DeploymentStatus, getFile)
65109
}
66110
if analyzer.StatefulsetStatus != nil {
67-
if analyzer.StatefulsetStatus.Exclude {
111+
isExcluded, err := isExcluded(analyzer.StatefulsetStatus.Exclude)
112+
if err != nil {
113+
return nil, err
114+
}
115+
if isExcluded {
68116
return nil, nil
69117
}
70118
return analyzeStatefulsetStatus(analyzer.StatefulsetStatus, getFile)
71119
}
72120
if analyzer.ContainerRuntime != nil {
73-
if analyzer.ContainerRuntime.Exclude {
121+
isExcluded, err := isExcluded(analyzer.ContainerRuntime.Exclude)
122+
if err != nil {
123+
return nil, err
124+
}
125+
if isExcluded {
74126
return nil, nil
75127
}
76128
return analyzeContainerRuntime(analyzer.ContainerRuntime, getFile)
77129
}
78130
if analyzer.Distribution != nil {
79-
if analyzer.Distribution.Exclude {
131+
isExcluded, err := isExcluded(analyzer.Distribution.Exclude)
132+
if err != nil {
133+
return nil, err
134+
}
135+
if isExcluded {
80136
return nil, nil
81137
}
82138
return analyzeDistribution(analyzer.Distribution, getFile)
83139
}
84140
if analyzer.NodeResources != nil {
85-
if analyzer.NodeResources.Exclude {
141+
isExcluded, err := isExcluded(analyzer.NodeResources.Exclude)
142+
if err != nil {
143+
return nil, err
144+
}
145+
if isExcluded {
86146
return nil, nil
87147
}
88148
return analyzeNodeResources(analyzer.NodeResources, getFile)
89149
}
90150
if analyzer.TextAnalyze != nil {
151+
isExcluded, err := isExcluded(analyzer.TextAnalyze.Exclude)
152+
if err != nil {
153+
return nil, err
154+
}
155+
if isExcluded {
156+
return nil, nil
157+
}
91158
return analyzeTextAnalyze(analyzer.TextAnalyze, getFile)
92159
}
93160

pkg/apis/troubleshoot/v1beta1/analyzer_shared.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
package v1beta1
22

3+
import (
4+
"github.com/replicatedhq/kots/kotskinds/multitype"
5+
)
6+
37
type SingleOutcome struct {
48
When string `json:"when,omitempty" yaml:"when,omitempty"`
59
Message string `json:"message,omitempty" yaml:"message,omitempty"`
@@ -101,8 +105,8 @@ type TextAnalyze struct {
101105
}
102106

103107
type AnalyzeMeta struct {
104-
CheckName string `json:"checkName,omitempty" yaml:"checkName,omitempty"`
105-
Exclude bool `json:"exclude,omitempty" yaml:"exclude,omitempty"`
108+
CheckName string `json:"checkName,omitempty" yaml:"checkName,omitempty"`
109+
Exclude multitype.BoolOrString `json:"exclude,omitempty" yaml:"exclude,omitempty"`
106110
}
107111

108112
type Analyze struct {

pkg/apis/troubleshoot/v1beta1/collector_shared.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,14 @@ import (
44
"fmt"
55
"strings"
66

7+
"github.com/replicatedhq/kots/kotskinds/multitype"
78
authorizationv1 "k8s.io/api/authorization/v1"
89
)
910

1011
type CollectorMeta struct {
1112
CollectorName string `json:"collectorName,omitempty" yaml:"collectorName,omitempty"`
1213
// +optional
13-
Exclude bool `json:"exclude,omitmempty" yaml:"exclude,omitempty"`
14+
Exclude multitype.BoolOrString `json:"exclude,omitmempty" yaml:"exclude,omitempty"`
1415
}
1516

1617
type ClusterInfo struct {

pkg/apis/troubleshoot/v1beta1/zz_generated.deepcopy.go

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/collect/collector.go

Lines changed: 61 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
package collect
22

33
import (
4+
"strconv"
5+
46
"github.com/pkg/errors"
7+
"github.com/replicatedhq/kots/kotskinds/multitype"
58
troubleshootv1beta1 "github.com/replicatedhq/troubleshoot/pkg/apis/troubleshoot/v1beta1"
69
"gopkg.in/yaml.v2"
710
authorizationv1 "k8s.io/api/authorization/v1"
@@ -25,57 +28,106 @@ type Context struct {
2528
Namespace string
2629
}
2730

31+
func isExcluded(excludeVal multitype.BoolOrString) (bool, error) {
32+
if excludeVal.Type == multitype.Bool {
33+
return excludeVal.BoolVal, nil
34+
}
35+
36+
parsed, err := strconv.ParseBool(excludeVal.StrVal)
37+
if err != nil {
38+
return false, errors.Wrap(err, "failed to parse bool string")
39+
}
40+
41+
return parsed, nil
42+
}
43+
2844
func (c *Collector) RunCollectorSync() ([]byte, error) {
2945
if c.Collect.ClusterInfo != nil {
30-
if c.Collect.ClusterInfo.Exclude {
46+
isExcluded, err := isExcluded(c.Collect.ClusterInfo.Exclude)
47+
if err != nil {
48+
return nil, err
49+
}
50+
if isExcluded {
3151
return nil, nil
3252
}
3353
return ClusterInfo(c.GetContext())
3454
}
3555
if c.Collect.ClusterResources != nil {
36-
if c.Collect.ClusterResources.Exclude {
56+
isExcluded, err := isExcluded(c.Collect.ClusterResources.Exclude)
57+
if err != nil {
58+
return nil, err
59+
}
60+
if isExcluded {
3761
return nil, nil
3862
}
3963
return ClusterResources(c.GetContext())
4064
}
4165
if c.Collect.Secret != nil {
42-
if c.Collect.Secret.Exclude {
66+
isExcluded, err := isExcluded(c.Collect.Secret.Exclude)
67+
if err != nil {
68+
return nil, err
69+
}
70+
if isExcluded {
4371
return nil, nil
4472
}
4573
return Secret(c.GetContext(), c.Collect.Secret)
4674
}
4775
if c.Collect.Logs != nil {
48-
if c.Collect.Logs.Exclude {
76+
isExcluded, err := isExcluded(c.Collect.Logs.Exclude)
77+
if err != nil {
78+
return nil, err
79+
}
80+
if isExcluded {
4981
return nil, nil
5082
}
5183
return Logs(c.GetContext(), c.Collect.Logs)
5284
}
5385
if c.Collect.Run != nil {
54-
if c.Collect.Run.Exclude {
86+
isExcluded, err := isExcluded(c.Collect.ClusterInfo.Exclude)
87+
if err != nil {
88+
return nil, err
89+
}
90+
if isExcluded {
5591
return nil, nil
5692
}
5793
return Run(c.GetContext(), c.Collect.Run)
5894
}
5995
if c.Collect.Exec != nil {
60-
if c.Collect.Exec.Exclude {
96+
isExcluded, err := isExcluded(c.Collect.Exec.Exclude)
97+
if err != nil {
98+
return nil, err
99+
}
100+
if isExcluded {
61101
return nil, nil
62102
}
63103
return Exec(c.GetContext(), c.Collect.Exec)
64104
}
65105
if c.Collect.Data != nil {
66-
if c.Collect.Data.Exclude {
106+
isExcluded, err := isExcluded(c.Collect.Data.Exclude)
107+
if err != nil {
108+
return nil, err
109+
}
110+
if isExcluded {
67111
return nil, nil
68112
}
69113
return Data(c.GetContext(), c.Collect.Data)
70114
}
71115
if c.Collect.Copy != nil {
72-
if c.Collect.Copy.Exclude {
116+
isExcluded, err := isExcluded(c.Collect.Copy.Exclude)
117+
if err != nil {
118+
return nil, err
119+
}
120+
if isExcluded {
73121
return nil, nil
74122
}
75123
return Copy(c.GetContext(), c.Collect.Copy)
76124
}
77125
if c.Collect.HTTP != nil {
78-
if c.Collect.HTTP.Exclude {
126+
isExcluded, err := isExcluded(c.Collect.HTTP.Exclude)
127+
if err != nil {
128+
return nil, err
129+
}
130+
if isExcluded {
79131
return nil, nil
80132
}
81133
return HTTP(c.GetContext(), c.Collect.HTTP)

0 commit comments

Comments
 (0)