Skip to content

Commit 207b790

Browse files
committed
Read the alerts.enabled flag and create PrometheusRule only if true
1 parent 2056e06 commit 207b790

File tree

3 files changed

+22
-15
lines changed

3 files changed

+22
-15
lines changed

main.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,10 @@ func main() {
111111
Value: "",
112112
Destination: &clusterName,
113113
},
114+
cli.BoolFlag{
115+
Name: "alertEnabled",
116+
EnvVar: "CIS_ALERTS_ENABLED",
117+
},
114118
}
115119
app.Action = run
116120

@@ -145,6 +149,7 @@ func run(c *cli.Context) {
145149
SonobuoyImageTag: sonobuoyImageTag,
146150
AlertSeverity: alertSeverity,
147151
ClusterName: clusterName,
152+
AlertEnabled: c.Bool("alertEnabled"),
148153
}
149154

150155
if err := validateConfig(imgConfig); err != nil {

pkg/apis/cis.cattle.io/v1/types.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,4 +160,5 @@ type ScanImageConfig struct {
160160
SonobuoyImageTag string
161161
AlertSeverity string
162162
ClusterName string
163+
AlertEnabled bool
163164
}

pkg/securityscan/scanHandler.go

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -114,23 +114,24 @@ func (c *Controller) handleClusterScans(ctx context.Context) error {
114114

115115
objects = append(objects, cisjob.New(obj, profile, c.Name, c.ImageConfig), cmMap["configcm"], cmMap["plugincm"], cmMap["skipConfigcm"], service)
116116

117-
if obj.Spec.ScheduledScanConfig != nil && obj.Spec.ScheduledScanConfig.ScanAlertRule != nil {
118-
if obj.Spec.ScheduledScanConfig.ScanAlertRule.AlertOnComplete || obj.Spec.ScheduledScanConfig.ScanAlertRule.AlertOnFailure {
119-
if obj.Status.ScanAlertingRuleName == "" {
120-
alertRule, err := cisalert.NewPrometheusRule(obj, profile, c.ImageConfig)
121-
if err != nil {
122-
v1.ClusterScanConditionReconciling.True(obj)
123-
return objects, obj.Status, fmt.Errorf("Error when trying to create a PrometheusRule: %v", err)
124-
}
125-
ruleCreated, err := c.monitoringClient.PrometheusRules(v1.ClusterScanNS).Create(ctx, alertRule, metav1.CreateOptions{})
126-
if err != nil {
127-
logrus.Errorf("Alerts will not be sent out for this scan %v due to this error when creating PrometheusRule: %v", obj.Name, err)
128-
} else {
129-
obj.Status.ScanAlertingRuleName = ruleCreated.Name
130-
}
131-
}
117+
if c.ImageConfig.AlertEnabled &&
118+
obj.Spec.ScheduledScanConfig != nil &&
119+
obj.Spec.ScheduledScanConfig.ScanAlertRule != nil &&
120+
(obj.Spec.ScheduledScanConfig.ScanAlertRule.AlertOnComplete || obj.Spec.ScheduledScanConfig.ScanAlertRule.AlertOnFailure) &&
121+
obj.Status.ScanAlertingRuleName == "" {
122+
alertRule, err := cisalert.NewPrometheusRule(obj, profile, c.ImageConfig)
123+
if err != nil {
124+
v1.ClusterScanConditionReconciling.True(obj)
125+
return objects, obj.Status, fmt.Errorf("Error when trying to create a PrometheusRule: %v", err)
126+
}
127+
ruleCreated, err := c.monitoringClient.PrometheusRules(v1.ClusterScanNS).Create(ctx, alertRule, metav1.CreateOptions{})
128+
if err != nil {
129+
logrus.Errorf("Alerts will not be sent out for this scan %v due to this error when creating PrometheusRule: %v", obj.Name, err)
130+
} else {
131+
obj.Status.ScanAlertingRuleName = ruleCreated.Name
132132
}
133133
}
134+
134135
if v1.ClusterScanConditionFailed.IsTrue(obj) {
135136
//clear the earlier failed status
136137
v1.ClusterScanConditionFailed.False(obj)

0 commit comments

Comments
 (0)