Skip to content

Commit 75b41aa

Browse files
authored
fix(cis): handled nil pointer exceptions during runtime (IBM-Cloud#6550)
* fix(CIS): ruleset nil error and refactor filter * fix(cis): revert refactor on filters * fix(cis): additional nil pointers handled * fix(cis): removed multiple nil validation - addressed review comments
1 parent d3fcf2c commit 75b41aa

File tree

2 files changed

+38
-42
lines changed

2 files changed

+38
-42
lines changed

ibm/service/cis/data_source_ibm_cis_rulesets.go

Lines changed: 38 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -518,39 +518,42 @@ func flattenCISRulesets(rulesetObj rulesetsv1.RulesetDetails) interface{} {
518518
rulesetOutput[CISRulesetsVersion] = *rulesetObj.Version
519519
rulesetOutput[CISRulesetsId] = *&rulesetObj.ID
520520

521-
ruleDetailsList := make([]map[string]interface{}, 0)
522-
for _, ruleDetailsObj := range rulesetObj.Rules {
523-
ruleDetails := map[string]interface{}{}
524-
ruleDetails[CISRulesetsRuleId] = ruleDetailsObj.ID
525-
ruleDetails[CISRulesetsRuleVersion] = ruleDetailsObj.Version
526-
ruleDetails[CISRulesetsRuleAction] = ruleDetailsObj.Action
527-
ruleDetails[CISRulesetsRuleExpression] = ruleDetailsObj.Expression
528-
ruleDetails[CISRulesetsRuleRef] = ruleDetailsObj.Ref
529-
ruleDetails[CISRulesetsRuleLastUpdatedAt] = ruleDetailsObj.LastUpdated
530-
ruleDetails[CISRulesetsRuleActionCategories] = ruleDetailsObj.Categories
531-
ruleDetails[CISRulesetsRuleActionEnabled] = ruleDetailsObj.Enabled
532-
ruleDetails[CISRulesetsRuleActionDescription] = ruleDetailsObj.Description
533-
534-
// Not Applicable for now
535-
//ruleDetails[CISRulesetsRuleLogging] = ruleDetailsObj.Logging
536-
537-
flattenedActionParameter := flattenCISRulesetsRuleActionParameters(ruleDetailsObj.ActionParameters)
538-
539-
if len(flattenedActionParameter) != 0 {
540-
ruleDetails[CISRulesetsRuleActionParameters] = []map[string]interface{}{flattenedActionParameter}
541-
}
521+
if rulesetObj.Rules != nil {
522+
ruleDetailsList := make([]map[string]interface{}, 0)
523+
for _, ruleDetailsObj := range rulesetObj.Rules {
524+
ruleDetails := map[string]interface{}{}
525+
ruleDetails[CISRulesetsRuleId] = ruleDetailsObj.ID
526+
ruleDetails[CISRulesetsRuleVersion] = ruleDetailsObj.Version
527+
ruleDetails[CISRulesetsRuleAction] = ruleDetailsObj.Action
528+
ruleDetails[CISRulesetsRuleExpression] = ruleDetailsObj.Expression
529+
ruleDetails[CISRulesetsRuleRef] = ruleDetailsObj.Ref
530+
ruleDetails[CISRulesetsRuleLastUpdatedAt] = ruleDetailsObj.LastUpdated
531+
ruleDetails[CISRulesetsRuleActionCategories] = ruleDetailsObj.Categories
532+
ruleDetails[CISRulesetsRuleActionEnabled] = ruleDetailsObj.Enabled
533+
ruleDetails[CISRulesetsRuleActionDescription] = ruleDetailsObj.Description
534+
535+
// Not Applicable for now
536+
//ruleDetails[CISRulesetsRuleLogging] = ruleDetailsObj.Logging
537+
538+
if ruleDetailsObj.ActionParameters != nil {
539+
flattenedActionParameter := flattenCISRulesetsRuleActionParameters(ruleDetailsObj.ActionParameters)
540+
if len(flattenedActionParameter) != 0 {
541+
ruleDetails[CISRulesetsRuleActionParameters] = []map[string]interface{}{flattenedActionParameter}
542+
}
543+
}
542544

543-
ruleDetailsList = append(ruleDetailsList, ruleDetails)
545+
ruleDetailsList = append(ruleDetailsList, ruleDetails)
546+
}
547+
rulesetOutput[CISRulesetsRules] = ruleDetailsList
544548
}
545549

546-
rulesetOutput[CISRulesetsRules] = ruleDetailsList
547-
548550
finalrulesetObj = append(finalrulesetObj, rulesetOutput)
549551

550552
return finalrulesetObj
551553
}
552554

553555
func flattenCISRulesetsRuleActionParameters(rulesetsRuleActionParameterObj *rulesetsv1.ActionParameters) map[string]interface{} {
556+
554557
actionParametersOutput := map[string]interface{}{}
555558
resultOutput := map[string]interface{}{}
556559

@@ -584,18 +587,19 @@ func flattenCISRulesetsRuleActionParameters(rulesetsRuleActionParameterObj *rule
584587
resultOutput[CISRulesetOverrides] = []map[string]interface{}{flattenCISRulesetsRuleActionParameterOverrides}
585588
}
586589

587-
if rulesToSkip := rulesetsRuleActionParameterObj.Rules; rulesToSkip != nil && len(rulesToSkip) > 0 {
588-
flattenedRulesToSkip := make([]map[string]interface{}, 0, len(rulesToSkip))
589-
590-
for rulesetID, ruleIDs := range rulesToSkip {
591-
entry := map[string]interface{}{
592-
"ruleset_id": rulesetID,
593-
"rule_ids": ruleIDs,
590+
if _, ok := actionParametersOutput["rules"]; ok {
591+
rulesToSkip := rulesetsRuleActionParameterObj.Rules
592+
if len(rulesToSkip) > 0 {
593+
flattenedRulesToSkip := make([]map[string]interface{}, 0, len(rulesToSkip))
594+
for rulesetID, ruleIDs := range rulesToSkip {
595+
entry := map[string]interface{}{
596+
"ruleset_id": rulesetID,
597+
"rule_ids": ruleIDs,
598+
}
599+
flattenedRulesToSkip = append(flattenedRulesToSkip, entry)
594600
}
595-
flattenedRulesToSkip = append(flattenedRulesToSkip, entry)
601+
resultOutput[CISRulesToSkip] = flattenedRulesToSkip
596602
}
597-
598-
resultOutput[CISRulesToSkip] = flattenedRulesToSkip
599603
}
600604

601605
return resultOutput

website/docs/d/cis_rulesets.html.markdown

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -93,11 +93,3 @@ Extra attribute references when `ruleset_id` is provided.
9393
- `ruleset_id` (Required, String) Id of the Ruleset
9494
- `rule_ids` (Required, List) List of rule-ids
9595

96-
- `rate_limit` (Map) Ratelimit of the rule
97-
98-
Nested scheme of `rate_limit`
99-
- `characteristics` (StringList) Characteristics of Ratelimit for a rule
100-
- `counting_expression` (String) Counting Expression of Ratelimit for a rule
101-
- `mitigation_timeout` (Int) Mitigation Timeout of Ratelimit for a rule
102-
- `period` (Int) Period of Ratelimit for a rule
103-
- `requests_per_period` (Int) Requests per period of Ratelimit for a rule

0 commit comments

Comments
 (0)