Skip to content

Commit

Permalink
Fix: Keep the backend secret when clean up SubResources if the delete…
Browse files Browse the repository at this point in the history
…Resou… (#381)

Co-authored-by: zhangsiwei <zhangsiwei@lizhi.fm>
  • Loading branch information
imzhangsiwei and zhangsiwei authored Sep 23, 2023
1 parent eded6d0 commit 3536da5
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 2 deletions.
2 changes: 1 addition & 1 deletion controllers/configuration_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -295,7 +295,7 @@ func (r *ConfigurationReconciler) cleanUpSubResources(ctx context.Context, confi
}

// 6. delete Kubernetes backend secret
if meta.Backend != nil {
if meta.Backend != nil && meta.DeleteResource {
if err := meta.Backend.CleanUp(ctx); err != nil {
return err
}
Expand Down
24 changes: 23 additions & 1 deletion controllers/configuration_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1177,6 +1177,14 @@ func TestTerraformDestroy(t *testing.T) {
},
Type: corev1.SecretTypeOpaque,
}
backendSecret := &corev1.Secret{
ObjectMeta: metav1.ObjectMeta{
Name: fmt.Sprintf("tfstate-default-%s", secretSuffix),
Namespace: "default",
},
Type: corev1.SecretTypeOpaque,
}

ConfigurationCMInLegacyNS := baseConfigurationCM.DeepCopy()
ConfigurationCMInLegacyNS.Namespace = legacyNamespace
variableSecretInLegacyNS := baseVariableSecret.DeepCopy()
Expand All @@ -1203,6 +1211,9 @@ func TestTerraformDestroy(t *testing.T) {
VariableSecretName: fmt.Sprintf(process.TFVariableSecret, secretSuffix),
}

metaWithDeleteResourceIsFalse := baseMeta
metaWithDeleteResourceIsFalse.DeleteResource = false

baseConfiguration := &v1beta2.Configuration{
ObjectMeta: metav1.ObjectMeta{
Name: "base-conf",
Expand Down Expand Up @@ -1271,7 +1282,7 @@ func TestTerraformDestroy(t *testing.T) {
deletedResources: []client.Object{baseConfigurationCM, baseVariableSecret},
},
{
name: "destroy job has completes, cleanup resources",
name: "destroy job has been completed, and cleanup resources",
args: args{
configuration: configurationWithConnSecret,
meta: &baseMeta,
Expand All @@ -1280,6 +1291,17 @@ func TestTerraformDestroy(t *testing.T) {
objects: []client.Object{readyProvider, configurationWithConnSecret, baseConfigurationCM, completeDestroyJob, baseVariableSecret, connectionSecret},
deletedResources: []client.Object{baseConfigurationCM, completeDestroyJob, baseVariableSecret, connectionSecret},
},
{
name: "destroy job has been completed, and cleanup resources except for the backend secret",
args: args{
configuration: configurationWithConnSecret,
meta: &metaWithDeleteResourceIsFalse,
},
want: want{},
objects: []client.Object{readyProvider, configurationWithConnSecret, baseConfigurationCM, completeDestroyJob, baseVariableSecret, connectionSecret, backendSecret},
deletedResources: []client.Object{baseConfigurationCM, completeDestroyJob, baseVariableSecret, connectionSecret},
keptResources: []client.Object{backendSecret},
},
{
name: "force delete configuration",
args: args{
Expand Down

0 comments on commit 3536da5

Please sign in to comment.