Skip to content

Commit 00a58fa

Browse files
committed
feat: reduced cylomatic complexity of precheck func and organized content for secret and configmaps check. Fixed review comments.
Signed-off-by: raradhakrishnan <[email protected]>
1 parent 06077ea commit 00a58fa

File tree

2 files changed

+88
-67
lines changed

2 files changed

+88
-67
lines changed

controllers/configuration_controller.go

Lines changed: 87 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -588,60 +588,10 @@ func (r *ConfigurationReconciler) preCheck(ctx context.Context, configuration *v
588588
}
589589
}
590590

591-
if meta.GitCredentialsSecretReference != nil {
592-
gitCreds, err := GetGitCredentialsSecret(ctx, k8sClient, meta.GitCredentialsSecretReference)
593-
if gitCreds == nil {
594-
msg := string(types.InvalidGitCredentialsSecretReference)
595-
if err != nil {
596-
msg = err.Error()
597-
}
598-
if updateStatusErr := meta.updateApplyStatus(ctx, k8sClient, types.InvalidGitCredentialsSecretReference, msg); updateStatusErr != nil {
599-
return errors.Wrap(updateStatusErr, msg)
600-
}
601-
return errors.New(msg)
602-
}
603-
}
604-
605-
if meta.TerraformCredentialsSecretReference != nil {
606-
terraformCreds, err := GetTerraformCredentialsSecret(ctx, k8sClient, meta.TerraformCredentialsSecretReference)
607-
if terraformCreds == nil {
608-
msg := string(types.InvalidTerraformCredentialsSecretReference)
609-
if err != nil {
610-
msg = err.Error()
611-
}
612-
if updateStatusErr := meta.updateApplyStatus(ctx, k8sClient, types.InvalidTerraformCredentialsSecretReference, msg); updateStatusErr != nil {
613-
return errors.Wrap(updateStatusErr, msg)
614-
}
615-
return errors.New(msg)
616-
}
617-
}
618-
619-
if meta.TerraformRCConfigMapReference != nil {
620-
terraformRegistryConfig, err := GetTerraformRegistryConfigMap(ctx, k8sClient, meta.TerraformRCConfigMapReference)
621-
if terraformRegistryConfig == nil {
622-
msg := string(types.InvalidTerraformRCConfigMapReference)
623-
if err != nil {
624-
msg = err.Error()
625-
}
626-
if updateStatusErr := meta.updateApplyStatus(ctx, k8sClient, types.InvalidTerraformRCConfigMapReference, msg); updateStatusErr != nil {
627-
return errors.Wrap(updateStatusErr, msg)
628-
}
629-
return errors.New(msg)
630-
}
631-
}
632-
633-
if meta.TerraformCredentialsHelperConfigMapReference != nil {
634-
terraformCredentialsHelper, err := GetTerraformCredentialsHelperConfigMap(ctx, k8sClient, meta.TerraformCredentialsHelperConfigMapReference)
635-
if terraformCredentialsHelper == nil {
636-
msg := string(types.InvalidTerraformCredentialsHelperConfigMapReference)
637-
if err != nil {
638-
msg = err.Error()
639-
}
640-
if updateStatusErr := meta.updateApplyStatus(ctx, k8sClient, types.InvalidTerraformCredentialsHelperConfigMapReference, msg); updateStatusErr != nil {
641-
return errors.Wrap(updateStatusErr, msg)
642-
}
643-
return errors.New(msg)
644-
}
591+
// validate secretreferences and config maps. 1. GitCredentialsSecretReference 2. TerraformCredentialsSecretReference 3. TerraformRCConfigMapReference
592+
// 4. TerraformCredentialsHelperConfigMapReference
593+
if err := meta.validateSecretAndConfigMap(ctx, k8sClient); err != nil {
594+
return err
645595
}
646596

647597
// Render configuration with backend
@@ -710,6 +660,81 @@ func (r *ConfigurationReconciler) preCheck(ctx context.Context, configuration *v
710660
return createTerraformExecutorClusterRole(ctx, k8sClient, fmt.Sprintf("%s-%s", meta.ControllerNamespace, ClusterRoleName))
711661
}
712662

663+
func (meta *TFConfigurationMeta) validateSecretAndConfigMap(ctx context.Context, k8sClient client.Client) error {
664+
665+
secretConfigMapToCheck := []struct {
666+
ref *v1.SecretReference
667+
notFoundState types.ConfigurationState
668+
refType string
669+
}{
670+
{
671+
ref: meta.GitCredentialsSecretReference,
672+
notFoundState: types.InvalidGitCredentialsSecretReference,
673+
refType: "GitCredentialsSecretReference",
674+
},
675+
{
676+
ref: meta.TerraformCredentialsSecretReference,
677+
notFoundState: types.InvalidTerraformCredentialsSecretReference,
678+
refType: "TerraformCredentialsSecretReference",
679+
},
680+
{
681+
ref: meta.TerraformRCConfigMapReference,
682+
notFoundState: types.InvalidTerraformRCConfigMapReference,
683+
refType: "TerraformRCConfigMapReference",
684+
},
685+
{
686+
ref: meta.TerraformCredentialsHelperConfigMapReference,
687+
notFoundState: types.InvalidTerraformCredentialsHelperConfigMapReference,
688+
refType: "TerraformCredentialsHelperConfigMapReference",
689+
},
690+
}
691+
692+
var checkErr error
693+
var checkErrFlag bool
694+
for _, check := range secretConfigMapToCheck {
695+
if check.ref != nil {
696+
switch check.refType {
697+
case "GitCredentialsSecretReference":
698+
gitCreds, err := GetGitCredentialsSecret(ctx, k8sClient, check.ref)
699+
if gitCreds == nil {
700+
checkErr = err
701+
checkErrFlag = true
702+
}
703+
case "TerraformCredentialsSecretReference":
704+
terraformCreds, err := GetTerraformCredentialsSecret(ctx, k8sClient, check.ref)
705+
if terraformCreds == nil {
706+
checkErr = err
707+
checkErrFlag = true
708+
}
709+
case "TerraformRCConfigMapReference":
710+
terraformRegistryConfig, err := GetTerraformRCConfigMap(ctx, k8sClient, check.ref)
711+
if terraformRegistryConfig == nil {
712+
checkErr = err
713+
checkErrFlag = true
714+
}
715+
case "TerraformCredentialsHelperConfigMapReference":
716+
terraformCredentialsHelper, err := GetTerraformCredentialsHelperConfigMap(ctx, k8sClient, check.ref)
717+
if terraformCredentialsHelper == nil {
718+
checkErr = err
719+
checkErrFlag = true
720+
}
721+
}
722+
723+
if checkErrFlag {
724+
msg := string(check.notFoundState)
725+
if checkErr != nil {
726+
msg = checkErr.Error()
727+
}
728+
if updateStatusErr := meta.updateApplyStatus(ctx, k8sClient, check.notFoundState, msg); updateStatusErr != nil {
729+
return errors.Wrap(updateStatusErr, msg)
730+
}
731+
return errors.New(msg)
732+
}
733+
}
734+
}
735+
return nil
736+
}
737+
713738
func (meta *TFConfigurationMeta) updateApplyStatus(ctx context.Context, k8sClient client.Client, state types.ConfigurationState, message string) error {
714739
var configuration v1beta2.Configuration
715740
if err := k8sClient.Get(ctx, client.ObjectKey{Name: meta.Name, Namespace: meta.Namespace}, &configuration); err == nil {
@@ -1460,9 +1485,8 @@ func GetGitCredentialsSecret(ctx context.Context, k8sClient client.Client, secre
14601485
secret, _, err := GetSecretOrConfigMap(ctx, k8sClient, true, secretRef, needSecretKeys, errMsg, keyErrMsg)
14611486
if secret != nil {
14621487
return secret, nil
1463-
} else {
1464-
return nil, err
14651488
}
1489+
return nil, err
14661490
}
14671491

14681492
// GetTerraformCredentialsSecret will get the secret containing the terraform credentials
@@ -1473,22 +1497,20 @@ func GetTerraformCredentialsSecret(ctx context.Context, k8sClient client.Client,
14731497
secret, _, err := GetSecretOrConfigMap(ctx, k8sClient, true, secretRef, needSecretKeys, errMsg, keyErrMsg)
14741498
if secret != nil {
14751499
return secret, nil
1476-
} else {
1477-
return nil, err
14781500
}
1501+
return nil, err
14791502
}
14801503

1481-
// GetTerraformRegistryConfigMap will get the config map containing the terraform registry configuration
1482-
func GetTerraformRegistryConfigMap(ctx context.Context, k8sClient client.Client, configMapRef *v1.SecretReference) (*v1.ConfigMap, error) {
1504+
// GetTerraformRCConfigMap will get the config map containing the terraform registry configuration
1505+
func GetTerraformRCConfigMap(ctx context.Context, k8sClient client.Client, configMapRef *v1.SecretReference) (*v1.ConfigMap, error) {
14831506
neededKeys := []string{TerraformRegistryConfig}
14841507
errMsg := "Failed to get the terraform registry config configmap"
14851508
keyErrMsg := "not in terraform registry configuration configmap"
14861509
_, configMap, err := GetSecretOrConfigMap(ctx, k8sClient, false, configMapRef, neededKeys, errMsg, keyErrMsg)
14871510
if configMap != nil {
14881511
return configMap, nil
1489-
} else {
1490-
return nil, err
14911512
}
1513+
return nil, err
14921514
}
14931515

14941516
// GetTerraformCredentialsHelperConfigMap get the config map containing the terraform credentials helper
@@ -1498,9 +1520,8 @@ func GetTerraformCredentialsHelperConfigMap(ctx context.Context, k8sClient clien
14981520
_, configMap, err := GetSecretOrConfigMap(ctx, k8sClient, false, configMapRef, neededKeys, errMsg, "")
14991521
if configMap != nil {
15001522
return configMap, nil
1501-
} else {
1502-
return nil, err
15031523
}
1524+
return nil, err
15041525
}
15051526

15061527
func GetSecretOrConfigMap(ctx context.Context, k8sClient client.Client, isSecret bool, ref *v1.SecretReference, neededKeys []string, errMsg string, keyErrMsg string) (*v1.Secret, *v1.ConfigMap, error) {
@@ -1538,7 +1559,7 @@ func GetSecretOrConfigMap(ctx context.Context, k8sClient client.Client, isSecret
15381559
}
15391560
if isSecret {
15401561
return secret, nil, nil
1541-
} else {
1542-
return nil, configMap, nil
15431562
}
1563+
1564+
return nil, configMap, nil
15441565
}

controllers/configuration_controller_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2967,7 +2967,7 @@ func TestCheckTerraformRCConfigMapReference(t *testing.T) {
29672967

29682968
for _, tc := range testcases {
29692969
t.Run(tc.name, func(t *testing.T) {
2970-
configMap, err := GetTerraformRegistryConfigMap(ctx, tc.args.k8sClient, tc.args.TerraformRCConfigMapReference)
2970+
configMap, err := GetTerraformRCConfigMap(ctx, tc.args.k8sClient, tc.args.TerraformRCConfigMapReference)
29712971

29722972
if err != nil {
29732973
assert.EqualError(t, err, tc.want.errMsg)

0 commit comments

Comments
 (0)