Skip to content

Commit 09b254d

Browse files
committed
fix validation
Signed-off-by: GilTS <gil@terasky.com>
1 parent 6079594 commit 09b254d

File tree

1 file changed

+17
-13
lines changed

1 file changed

+17
-13
lines changed

internal/resources/customiamrole/resource_custom_iam_role.go

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -179,24 +179,28 @@ func resourceCustomIAMRoleImporter(_ context.Context, data *schema.ResourceData,
179179

180180
func validateSchema(ctx context.Context, data *schema.ResourceDiff, m interface{}) (err error) {
181181
specData := data.Get(SpecKey).([]interface{})[0].(map[string]interface{})
182-
ruleData := specData[KubernetesPermissionsKey].([]interface{})[0].(map[string]interface{})[RuleKey].([]interface{})
183-
errMsg := ""
182+
kubernetesPermissions := specData[KubernetesPermissionsKey].([]interface{})
184183

185-
for i, r := range ruleData {
186-
resourcesLen := len(r.(map[string]interface{})[ResourcesKey].([]interface{}))
187-
urlPathsLen := len(r.(map[string]interface{})[URLPathsKey].([]interface{}))
184+
if len(kubernetesPermissions) > 0 {
185+
rulesData := kubernetesPermissions[0].(map[string]interface{})[RuleKey].([]interface{})
186+
errMsg := ""
188187

189-
if (resourcesLen > 0 && urlPathsLen > 0) || (resourcesLen == 0 && urlPathsLen == 0) {
190-
if errMsg == "" {
191-
errMsg = "Custom IAM Role Rules Validation Failed:"
192-
}
188+
for i, r := range rulesData {
189+
resourcesLen := len(r.(map[string]interface{})[ResourcesKey].([]interface{}))
190+
urlPathsLen := len(r.(map[string]interface{})[URLPathsKey].([]interface{}))
191+
192+
if (resourcesLen > 0 && urlPathsLen > 0) || (resourcesLen == 0 && urlPathsLen == 0) {
193+
if errMsg == "" {
194+
errMsg = "Custom IAM Role Rules Validation Failed:"
195+
}
193196

194-
errMsg = fmt.Sprintf("%s\n%s", errMsg, fmt.Sprintf("Rule #%d - Must include %s or %s but not both.", i+1, ResourcesKey, URLPathsKey))
197+
errMsg = fmt.Sprintf("%s\n%s", errMsg, fmt.Sprintf("Rule #%d - Must include %s or %s but not both.", i+1, ResourcesKey, URLPathsKey))
198+
}
195199
}
196-
}
197200

198-
if errMsg != "" {
199-
err = errors.New(errMsg)
201+
if errMsg != "" {
202+
err = errors.New(errMsg)
203+
}
200204
}
201205

202206
return err

0 commit comments

Comments
 (0)