Skip to content

Commit 16bd07e

Browse files
authored
Merge pull request #307 from leason00/bugfix_bool
The type of DeleteResource is changed to pointer
2 parents 4cdfcd2 + ff799ec commit 16bd07e

File tree

3 files changed

+79
-4
lines changed

3 files changed

+79
-4
lines changed

api/v1beta2/configuration_types.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ type ConfigurationSpec struct {
6464

6565
// DeleteResource will determine whether provisioned cloud resources will be deleted when CR is deleted
6666
// +kubebuilder:default:=true
67-
DeleteResource bool `json:"deleteResource,omitempty"`
67+
DeleteResource *bool `json:"deleteResource,omitempty"`
6868

6969
// Region is cloud provider's region. It will override the region in the region field of ProviderReference
7070
Region string `json:"customRegion,omitempty"`

controllers/configuration_controller.go

+8-3
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ import (
5151
)
5252

5353
const (
54+
defaultNamespace = "default"
5455
terraformWorkspace = "default"
5556
// WorkingVolumeMountPath is the mount path for working volume
5657
WorkingVolumeMountPath = "/data"
@@ -260,7 +261,11 @@ func initTFConfigurationMeta(req ctrl.Request, configuration v1beta2.Configurati
260261
}
261262

262263
meta.RemoteGit = tfcfg.ReplaceTerraformSource(configuration.Spec.Remote, githubBlockedStr)
263-
meta.DeleteResource = configuration.Spec.DeleteResource
264+
if configuration.Spec.DeleteResource != nil {
265+
meta.DeleteResource = *configuration.Spec.DeleteResource
266+
} else {
267+
meta.DeleteResource = true
268+
}
264269
if configuration.Spec.Path == "" {
265270
meta.RemoteGitPath = "."
266271
} else {
@@ -911,7 +916,7 @@ func (meta *TFConfigurationMeta) getTFOutputs(ctx context.Context, k8sClient cli
911916
name := writeConnectionSecretToReference.Name
912917
ns := writeConnectionSecretToReference.Namespace
913918
if ns == "" {
914-
ns = "default"
919+
ns = defaultNamespace
915920
}
916921
data := make(map[string][]byte)
917922
for k, v := range outputs {
@@ -1044,7 +1049,7 @@ func deleteConnectionSecret(ctx context.Context, k8sClient client.Client, name,
10441049

10451050
var connectionSecret v1.Secret
10461051
if len(ns) == 0 {
1047-
ns = "default"
1052+
ns = defaultNamespace
10481053
}
10491054
if err := k8sClient.Get(ctx, client.ObjectKey{Name: name, Namespace: ns}, &connectionSecret); err == nil {
10501055
return k8sClient.Delete(ctx, &connectionSecret)

controllers/configuration_controller_test.go

+70
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"encoding/base64"
66
"encoding/json"
77
"fmt"
8+
"k8s.io/utils/pointer"
89
"os"
910
"reflect"
1011
"strings"
@@ -118,6 +119,75 @@ func TestInitTFConfigurationMeta(t *testing.T) {
118119
}
119120
}
120121

122+
func TestInitTFConfigurationMetaWithDeleteResource(t *testing.T) {
123+
req := ctrl.Request{}
124+
req.Namespace = "default"
125+
req.Name = "abc"
126+
testcases := []struct {
127+
name string
128+
configuration v1beta2.Configuration
129+
meta *TFConfigurationMeta
130+
}{
131+
{
132+
name: "DeleteResource is false",
133+
configuration: v1beta2.Configuration{
134+
ObjectMeta: v1.ObjectMeta{
135+
Name: "abc",
136+
},
137+
Spec: v1beta2.ConfigurationSpec{
138+
BaseConfigurationSpec: v1beta2.BaseConfigurationSpec{
139+
DeleteResource: pointer.Bool(true),
140+
},
141+
},
142+
},
143+
meta: &TFConfigurationMeta{
144+
DeleteResource: true,
145+
},
146+
},
147+
{
148+
name: "DeleteResource is true",
149+
configuration: v1beta2.Configuration{
150+
ObjectMeta: v1.ObjectMeta{
151+
Name: "abc",
152+
},
153+
Spec: v1beta2.ConfigurationSpec{
154+
BaseConfigurationSpec: v1beta2.BaseConfigurationSpec{
155+
DeleteResource: pointer.Bool(false),
156+
},
157+
},
158+
},
159+
meta: &TFConfigurationMeta{
160+
DeleteResource: false,
161+
},
162+
},
163+
{
164+
name: "DeleteResource is nil",
165+
configuration: v1beta2.Configuration{
166+
ObjectMeta: v1.ObjectMeta{
167+
Name: "abc",
168+
},
169+
Spec: v1beta2.ConfigurationSpec{
170+
BaseConfigurationSpec: v1beta2.BaseConfigurationSpec{
171+
DeleteResource: nil,
172+
},
173+
},
174+
},
175+
meta: &TFConfigurationMeta{
176+
DeleteResource: true,
177+
},
178+
},
179+
}
180+
for _, tc := range testcases {
181+
t.Run(tc.name, func(t *testing.T) {
182+
meta := initTFConfigurationMeta(req, tc.configuration)
183+
if !reflect.DeepEqual(meta.DeleteResource, tc.meta.DeleteResource) {
184+
t.Errorf("initTFConfigurationMeta = %v, want %v", meta, tc.meta)
185+
}
186+
187+
})
188+
}
189+
}
190+
121191
func TestInitTFConfigurationMetaWithJobNodeSelector(t *testing.T) {
122192
req := ctrl.Request{}
123193
req.Namespace = "default"

0 commit comments

Comments
 (0)