Skip to content

Commit

Permalink
fix(k8s): fix k8s oidc lists update and fix test (scaleway#1326)
Browse files Browse the repository at this point in the history
Co-authored-by: Rémy Léone <remy.leone@gmail.com>
  • Loading branch information
Codelax and remyleone committed Jun 17, 2022
1 parent 3f4d176 commit 0f00466
Show file tree
Hide file tree
Showing 4 changed files with 162 additions and 4,891 deletions.
13 changes: 13 additions & 0 deletions scaleway/helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -394,6 +394,19 @@ func expandStringsPtr(data interface{}) *[]string {
return &stringSlice
}

// expandUpdatedStringsPtr expands a string slice but will default to an empty list.
// Should be used on schema update so emptying a list will update resource.
func expandUpdatedStringsPtr(data interface{}) *[]string {
stringSlice := []string{}
if _, ok := data.([]interface{}); !ok || data == nil {
return &stringSlice
}
for _, s := range data.([]interface{}) {
stringSlice = append(stringSlice, s.(string))
}
return &stringSlice
}

func expandSliceIDsPtr(rawIDs interface{}) *[]string {
var stringSlice []string
if _, ok := rawIDs.([]interface{}); !ok || rawIDs == nil {
Expand Down
4 changes: 2 additions & 2 deletions scaleway/resource_k8s_cluster.go
Original file line number Diff line number Diff line change
Expand Up @@ -635,15 +635,15 @@ func resourceScalewayK8SClusterUpdate(ctx context.Context, d *schema.ResourceDat
}

if d.HasChange("open_id_connect_config.0.groups_claim") {
updateClusterRequestOpenIDConnectConfig.GroupsClaim = scw.StringsPtr(expandStrings(d.Get("open_id_connect_config.0.groups_claim")))
updateClusterRequestOpenIDConnectConfig.GroupsClaim = expandUpdatedStringsPtr(d.Get("open_id_connect_config.0.groups_claim"))
}

if d.HasChange("open_id_connect_config.0.groups_prefix") {
updateClusterRequestOpenIDConnectConfig.GroupsPrefix = scw.StringPtr(d.Get("open_id_connect_config.0.groups_prefix").(string))
}

if d.HasChange("open_id_connect_config.0.required_claim") {
updateClusterRequestOpenIDConnectConfig.RequiredClaim = scw.StringsPtr(expandStrings(d.Get("open_id_connect_config.0.required_claim")))
updateClusterRequestOpenIDConnectConfig.RequiredClaim = expandUpdatedStringsPtr(d.Get("open_id_connect_config.0.required_claim"))
}

updateRequest.OpenIDConnectConfig = updateClusterRequestOpenIDConnectConfig
Expand Down
30 changes: 5 additions & 25 deletions scaleway/resource_k8s_cluster_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -266,7 +266,7 @@ func TestAccScalewayK8SCluster_OIDC(t *testing.T) {
resource.TestCheckResourceAttrSet("scaleway_k8s_cluster.oidc", "kubeconfig.0.token"),
resource.TestCheckResourceAttrSet("scaleway_k8s_cluster.oidc", "apiserver_url"),
resource.TestCheckResourceAttrSet("scaleway_k8s_cluster.oidc", "wildcard_dns"),
resource.TestCheckResourceAttr("scaleway_k8s_cluster.oidc", "open_id_connect_config.0.issuer_url", "https://api.scaleway.com"),
resource.TestCheckResourceAttr("scaleway_k8s_cluster.oidc", "open_id_connect_config.0.issuer_url", "https://accounts.google.com"),
resource.TestCheckResourceAttr("scaleway_k8s_cluster.oidc", "open_id_connect_config.0.client_id", "my-super-id"),
resource.TestCheckResourceAttr("scaleway_k8s_cluster.oidc", "open_id_connect_config.0.username_claim", "mario"),
resource.TestCheckResourceAttr("scaleway_k8s_cluster.oidc", "open_id_connect_config.0.groups_prefix", "pouf"),
Expand All @@ -283,14 +283,14 @@ func TestAccScalewayK8SCluster_OIDC(t *testing.T) {
testAccCheckScalewayK8SClusterExists(tt, "scaleway_k8s_cluster.oidc"),
resource.TestCheckResourceAttr("scaleway_k8s_cluster.oidc", "version", latestK8SVersion),
resource.TestCheckResourceAttr("scaleway_k8s_cluster.oidc", "cni", "cilium"),
resource.TestCheckResourceAttr("scaleway_k8s_cluster.oidc", "status", k8s.ClusterStatusReady.String()),
resource.TestCheckResourceAttr("scaleway_k8s_cluster.oidc", "status", k8s.ClusterStatusPoolRequired.String()),
resource.TestCheckResourceAttrSet("scaleway_k8s_cluster.oidc", "kubeconfig.0.config_file"),
resource.TestCheckResourceAttrSet("scaleway_k8s_cluster.oidc", "kubeconfig.0.host"),
resource.TestCheckResourceAttrSet("scaleway_k8s_cluster.oidc", "kubeconfig.0.cluster_ca_certificate"),
resource.TestCheckResourceAttrSet("scaleway_k8s_cluster.oidc", "kubeconfig.0.token"),
resource.TestCheckResourceAttrSet("scaleway_k8s_cluster.oidc", "apiserver_url"),
resource.TestCheckResourceAttrSet("scaleway_k8s_cluster.oidc", "wildcard_dns"),
resource.TestCheckResourceAttr("scaleway_k8s_cluster.oidc", "open_id_connect_config.0.issuer_url", "https://secretapi.scaleway.com"),
resource.TestCheckResourceAttr("scaleway_k8s_cluster.oidc", "open_id_connect_config.0.issuer_url", "https://gitlab.com"),
resource.TestCheckResourceAttr("scaleway_k8s_cluster.oidc", "open_id_connect_config.0.client_id", "my-even-more-awesome-id"),
resource.TestCheckResourceAttr("scaleway_k8s_cluster.oidc", "open_id_connect_config.0.username_claim", "luigi"),
resource.TestCheckResourceAttr("scaleway_k8s_cluster.oidc", "open_id_connect_config.0.username_prefix", "boo"),
Expand Down Expand Up @@ -500,24 +500,14 @@ resource "scaleway_k8s_cluster" "oidc" {
version = "%s"
name = "oidc"
open_id_connect_config {
issuer_url = "https://api.scaleway.com"
issuer_url = "https://accounts.google.com"
client_id = "my-super-id"
username_claim = "mario"
groups_claim = [ "k8s", "admin" ]
groups_prefix = "pouf"
}
tags = [ "terraform-test", "scaleway_k8s_cluster", "oidc-config" ]
}
resource "scaleway_k8s_pool" "minimal" {
name = "minimal"
cluster_id = "${scaleway_k8s_cluster.oidc.id}"
node_type = "gp1_xs"
autohealing = true
autoscaling = true
size = 1
tags = [ "terraform-test", "scaleway_k8s_cluster", "minimal" ]
}
`, version)
}

Expand All @@ -528,24 +518,14 @@ resource "scaleway_k8s_cluster" "oidc" {
version = "%s"
name = "oidc"
open_id_connect_config {
issuer_url = "https://secretapi.scaleway.com"
issuer_url = "https://gitlab.com"
client_id = "my-even-more-awesome-id"
username_claim = "luigi"
groups_claim = [ ]
username_prefix = "boo"
}
tags = [ "terraform-test", "scaleway_k8s_cluster", "oidc-config" ]
}
resource "scaleway_k8s_pool" "oidc" {
name = "minimal"
cluster_id = "${scaleway_k8s_cluster.oidc.id}"
node_type = "gp1_xs"
autohealing = true
autoscaling = true
size = 1
tags = [ "terraform-test", "scaleway_k8s_cluster", "minimal" ]
}
`, version)
}

Expand Down

0 comments on commit 0f00466

Please sign in to comment.