Skip to content

Commit

Permalink
The type of The type of DeleteResource is changed to pointer
Browse files Browse the repository at this point in the history
Signed-off-by: lisen <lisen@youzan.com>
  • Loading branch information
lisen committed May 16, 2022
1 parent cd37e5c commit ff799ec
Show file tree
Hide file tree
Showing 3 changed files with 79 additions and 4 deletions.
2 changes: 1 addition & 1 deletion api/v1beta2/configuration_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ type BaseConfigurationSpec struct {

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

// Region is cloud provider's region. It will override the region in the region field of ProviderReference
Region string `json:"customRegion,omitempty"`
Expand Down
11 changes: 8 additions & 3 deletions controllers/configuration_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ import (
)

const (
defaultNamespace = "default"
terraformWorkspace = "default"
// WorkingVolumeMountPath is the mount path for working volume
WorkingVolumeMountPath = "/data"
Expand Down Expand Up @@ -260,7 +261,11 @@ func initTFConfigurationMeta(req ctrl.Request, configuration v1beta2.Configurati
}

meta.RemoteGit = tfcfg.ReplaceTerraformSource(configuration.Spec.Remote, githubBlockedStr)
meta.DeleteResource = configuration.Spec.DeleteResource
if configuration.Spec.DeleteResource != nil {
meta.DeleteResource = *configuration.Spec.DeleteResource
} else {
meta.DeleteResource = true
}
if configuration.Spec.Path == "" {
meta.RemoteGitPath = "."
} else {
Expand Down Expand Up @@ -897,7 +902,7 @@ func (meta *TFConfigurationMeta) getTFOutputs(ctx context.Context, k8sClient cli
name := writeConnectionSecretToReference.Name
ns := writeConnectionSecretToReference.Namespace
if ns == "" {
ns = "default"
ns = defaultNamespace
}
data := make(map[string][]byte)
for k, v := range outputs {
Expand Down Expand Up @@ -1030,7 +1035,7 @@ func deleteConnectionSecret(ctx context.Context, k8sClient client.Client, name,

var connectionSecret v1.Secret
if len(ns) == 0 {
ns = "default"
ns = defaultNamespace
}
if err := k8sClient.Get(ctx, client.ObjectKey{Name: name, Namespace: ns}, &connectionSecret); err == nil {
return k8sClient.Delete(ctx, &connectionSecret)
Expand Down
70 changes: 70 additions & 0 deletions controllers/configuration_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"encoding/base64"
"encoding/json"
"fmt"
"k8s.io/utils/pointer"
"os"
"reflect"
"strings"
Expand Down Expand Up @@ -118,6 +119,75 @@ func TestInitTFConfigurationMeta(t *testing.T) {
}
}

func TestInitTFConfigurationMetaWithDeleteResource(t *testing.T) {
req := ctrl.Request{}
req.Namespace = "default"
req.Name = "abc"
testcases := []struct {
name string
configuration v1beta2.Configuration
meta *TFConfigurationMeta
}{
{
name: "DeleteResource is false",
configuration: v1beta2.Configuration{
ObjectMeta: v1.ObjectMeta{
Name: "abc",
},
Spec: v1beta2.ConfigurationSpec{
BaseConfigurationSpec: v1beta2.BaseConfigurationSpec{
DeleteResource: pointer.Bool(true),
},
},
},
meta: &TFConfigurationMeta{
DeleteResource: true,
},
},
{
name: "DeleteResource is true",
configuration: v1beta2.Configuration{
ObjectMeta: v1.ObjectMeta{
Name: "abc",
},
Spec: v1beta2.ConfigurationSpec{
BaseConfigurationSpec: v1beta2.BaseConfigurationSpec{
DeleteResource: pointer.Bool(false),
},
},
},
meta: &TFConfigurationMeta{
DeleteResource: false,
},
},
{
name: "DeleteResource is nil",
configuration: v1beta2.Configuration{
ObjectMeta: v1.ObjectMeta{
Name: "abc",
},
Spec: v1beta2.ConfigurationSpec{
BaseConfigurationSpec: v1beta2.BaseConfigurationSpec{
DeleteResource: nil,
},
},
},
meta: &TFConfigurationMeta{
DeleteResource: true,
},
},
}
for _, tc := range testcases {
t.Run(tc.name, func(t *testing.T) {
meta := initTFConfigurationMeta(req, tc.configuration)
if !reflect.DeepEqual(meta.DeleteResource, tc.meta.DeleteResource) {
t.Errorf("initTFConfigurationMeta = %v, want %v", meta, tc.meta)
}

})
}
}

func TestInitTFConfigurationMetaWithJobNodeSelector(t *testing.T) {
req := ctrl.Request{}
req.Namespace = "default"
Expand Down

0 comments on commit ff799ec

Please sign in to comment.