Bugfix SKE downgrade replace in place (#315)
* add requireif to schema, extend acc testing * fix acceptance test * improve testing
This commit is contained in:
parent
394d5bf8d6
commit
6e61caee19
2 changed files with 23 additions and 1 deletions
|
|
@ -269,6 +269,17 @@ func (r *clusterResource) Schema(_ context.Context, _ resource.SchemaRequest, re
|
||||||
"kubernetes_version": schema.StringAttribute{
|
"kubernetes_version": schema.StringAttribute{
|
||||||
Description: "Kubernetes version. Must only contain major and minor version (e.g. 1.22)",
|
Description: "Kubernetes version. Must only contain major and minor version (e.g. 1.22)",
|
||||||
Required: true,
|
Required: true,
|
||||||
|
PlanModifiers: []planmodifier.String{
|
||||||
|
stringplanmodifier.RequiresReplaceIf(stringplanmodifier.RequiresReplaceIfFunc(func(ctx context.Context, sr planmodifier.StringRequest, rrifr *stringplanmodifier.RequiresReplaceIfFuncResponse) {
|
||||||
|
if sr.StateValue.IsNull() || sr.PlanValue.IsNull() {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
planVersion := fmt.Sprintf("v%s", sr.PlanValue.ValueString())
|
||||||
|
stateVersion := fmt.Sprintf("v%s", sr.StateValue.ValueString())
|
||||||
|
|
||||||
|
rrifr.RequiresReplace = semver.Compare(planVersion, stateVersion) < 0
|
||||||
|
}), "Kubernetes version", "If the Kubernetes version is a downgrade, the cluster will be replaced"),
|
||||||
|
},
|
||||||
Validators: []validator.String{
|
Validators: []validator.String{
|
||||||
validate.MinorVersionNumber(),
|
validate.MinorVersionNumber(),
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -443,7 +443,7 @@ func TestAccSKE(t *testing.T) {
|
||||||
// The fields are not provided in the SKE API when disabled, although set actively.
|
// The fields are not provided in the SKE API when disabled, although set actively.
|
||||||
ImportStateVerifyIgnore: []string{"kube_config", "extensions.argus.%", "extensions.argus.argus_instance_id", "extensions.argus.enabled", "extensions.acl.enabled", "extensions.acl.allowed_cidrs", "extensions.acl.allowed_cidrs.#", "extensions.acl.%"},
|
ImportStateVerifyIgnore: []string{"kube_config", "extensions.argus.%", "extensions.argus.argus_instance_id", "extensions.argus.enabled", "extensions.acl.enabled", "extensions.acl.allowed_cidrs", "extensions.acl.allowed_cidrs.#", "extensions.acl.%"},
|
||||||
},
|
},
|
||||||
// ) Import minimal cluster
|
// 5) Import minimal cluster
|
||||||
{
|
{
|
||||||
ResourceName: "stackit_ske_cluster.cluster_min",
|
ResourceName: "stackit_ske_cluster.cluster_min",
|
||||||
ImportStateIdFunc: func(s *terraform.State) (string, error) {
|
ImportStateIdFunc: func(s *terraform.State) (string, error) {
|
||||||
|
|
@ -509,6 +509,17 @@ func TestAccSKE(t *testing.T) {
|
||||||
resource.TestCheckNoResourceAttr("stackit_ske_cluster.cluster", "kube_config"), // when using the kubeconfig resource, the kubeconfig field becomes null
|
resource.TestCheckNoResourceAttr("stackit_ske_cluster.cluster", "kube_config"), // when using the kubeconfig resource, the kubeconfig field becomes null
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
|
// 7) Downgrade kubernetes version
|
||||||
|
{
|
||||||
|
Config: getConfig(clusterResource["kubernetes_version"], utils.Ptr(clusterResource["maintenance_end_new"])),
|
||||||
|
Check: resource.ComposeAggregateTestCheckFunc(
|
||||||
|
// cluster data
|
||||||
|
resource.TestCheckResourceAttr("stackit_ske_cluster.cluster", "project_id", clusterResource["project_id"]),
|
||||||
|
resource.TestCheckResourceAttr("stackit_ske_cluster.cluster", "name", clusterResource["name"]),
|
||||||
|
resource.TestCheckResourceAttr("stackit_ske_cluster.cluster", "kubernetes_version", clusterResource["kubernetes_version"]),
|
||||||
|
resource.TestCheckResourceAttr("stackit_ske_cluster.cluster", "kubernetes_version_used", clusterResource["kubernetes_version_used"]),
|
||||||
|
),
|
||||||
|
},
|
||||||
// Deletion is done by the framework implicitly
|
// Deletion is done by the framework implicitly
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue