Skip to content

Commit

Permalink
resource/alicloud_cs_managed_kubernetes: output error message when fa…
Browse files Browse the repository at this point in the history
…iled to upgrade cluster;resource/alicloud_cs_kubernetes: output error message when failed to upgrade cluster;resource/alicloud_cs_edge_kubernetes: output error message when failed to upgrade cluster;resource/alicloud_cs_serverless_kubernetes: output error message when failed to upgrade cluster
  • Loading branch information
sanyangji committed May 17, 2024
1 parent a9edf5d commit 7200633
Show file tree
Hide file tree
Showing 9 changed files with 162 additions and 179 deletions.
2 changes: 1 addition & 1 deletion alicloud/resource_alicloud_cs_edge_kubernetes.go
Original file line number Diff line number Diff line change
Expand Up @@ -675,7 +675,7 @@ func resourceAlicloudCSEdgeKubernetesUpdate(d *schema.ResourceData, meta interfa
// upgrade cluster version
err := UpgradeAlicloudKubernetesCluster(d, meta)
if err != nil {
return WrapErrorf(err, DefaultErrorMsg, d.Id(), "UpgradeClusterVersion", DenverdinoAliyungo)
return WrapError(err)
}
d.Partial(false)
return resourceAlicloudCSKubernetesRead(d, meta)
Expand Down
30 changes: 15 additions & 15 deletions alicloud/resource_alicloud_cs_edge_kubernetes_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -113,13 +113,13 @@ func TestAccAliCloudEdgeKubernetes(t *testing.T) {
"name": name,
"worker_vswitch_ids": []string{"${local.vswitch_id}"},
"worker_instance_types": []string{"${data.alicloud_instance_types.default.instance_types.0.id}"},
"version": "1.22.15-aliyunedge.1",
"worker_number": "1",
"version": "1.20.11-aliyunedge.1",
"worker_number": "2",
"password": "Test12345",
"pod_cidr": "10.99.0.0/16",
"service_cidr": "172.16.0.0/16",
"service_cidr": "172.30.0.0/16",
"worker_instance_charge_type": "PostPaid",
"new_nat_gateway": "true",
"new_nat_gateway": "false",
"node_cidr_mask": "24",
"install_cloud_monitor": "true",
"slb_internet_enabled": "true",
Expand All @@ -138,11 +138,11 @@ func TestAccAliCloudEdgeKubernetes(t *testing.T) {
Check: resource.ComposeTestCheckFunc(
testAccCheck(map[string]string{
"name": name,
"version": "1.22.15-aliyunedge.1",
"worker_number": "1",
"version": "1.20.11-aliyunedge.1",
"worker_number": "2",
"password": "Test12345",
"pod_cidr": "10.99.0.0/16",
"service_cidr": "172.16.0.0/16",
"service_cidr": "172.30.0.0/16",
"slb_internet_enabled": "true",
"is_enterprise_security_group": "true",
"deletion_protection": "true",
Expand Down Expand Up @@ -186,13 +186,13 @@ func TestAccAliCloudEdgeKubernetes(t *testing.T) {
},
{
Config: testAccConfig(map[string]interface{}{
//"version": "1.24.6-aliyunedge.1",
"name": "modified-edge-cluster-again",
"version": "1.22.15-aliyunedge.1",
"name": "modified-edge-cluster-again",
}),
Check: resource.ComposeTestCheckFunc(
testAccCheck(map[string]string{
//"version": "1.24.6-aliyunedge.1",
"name": "modified-edge-cluster-again",
"version": "1.22.15-aliyunedge.1",
"name": "modified-edge-cluster-again",
}),
),
},
Expand Down Expand Up @@ -238,7 +238,7 @@ func TestAccAliCloudEdgeKubernetes_essd(t *testing.T) {
"is_enterprise_security_group": "true",
"deletion_protection": "true",
"pod_cidr": "10.99.0.0/16",
"service_cidr": "172.16.0.0/16",
"service_cidr": "172.30.0.0/16",
// worker args
"password": "Test12345",
"worker_number": "1",
Expand Down Expand Up @@ -271,7 +271,7 @@ func TestAccAliCloudEdgeKubernetes_essd(t *testing.T) {
"is_enterprise_security_group": "true",
"deletion_protection": "true",
"pod_cidr": "10.99.0.0/16",
"service_cidr": "172.16.0.0/16",
"service_cidr": "172.30.0.0/16",
// check worker args
"password": "Test12345",
//"worker_number": "1",
Expand Down Expand Up @@ -390,7 +390,7 @@ func TestAccAliCloudEdgeKubernetes_pro(t *testing.T) {
"worker_number": "1",
"password": "Test12345",
"pod_cidr": "10.99.0.0/16",
"service_cidr": "172.16.0.0/16",
"service_cidr": "172.30.0.0/16",
"worker_instance_charge_type": "PostPaid",
"new_nat_gateway": "true",
"node_cidr_mask": "24",
Expand Down Expand Up @@ -420,7 +420,7 @@ func TestAccAliCloudEdgeKubernetes_pro(t *testing.T) {
"worker_number": "1",
"password": "Test12345",
"pod_cidr": "10.99.0.0/16",
"service_cidr": "172.16.0.0/16",
"service_cidr": "172.30.0.0/16",
"slb_internet_enabled": "true",
"is_enterprise_security_group": "true",
"deletion_protection": "false",
Expand Down
6 changes: 5 additions & 1 deletion alicloud/resource_alicloud_cs_kubernetes.go
Original file line number Diff line number Diff line change
Expand Up @@ -957,7 +957,11 @@ func resourceAlicloudCSKubernetesUpdate(d *schema.ResourceData, meta interface{}

d.SetPartial("tags")

UpgradeAlicloudKubernetesCluster(d, meta)
err := UpgradeAlicloudKubernetesCluster(d, meta)
if err != nil {
return WrapError(err)
}

d.Partial(false)
return resourceAlicloudCSKubernetesRead(d, meta)
}
Expand Down
24 changes: 12 additions & 12 deletions alicloud/resource_alicloud_cs_kubernetes_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -392,7 +392,7 @@ func TestAccAliCloudCSKubernetes_prepaid(t *testing.T) {
{
Config: testAccConfig(map[string]interface{}{
"name_prefix": "tf-testAccKubernetes_prepaid",
"version": "1.24.6-aliyun.1",
"version": "1.26.15-aliyun.1",
"master_vswitch_ids": []string{"${local.vswitch_id}", "${local.vswitch_id}", "${local.vswitch_id}"},
"master_instance_types": []string{"${data.alicloud_instance_types.default.instance_types.0.id}", "${data.alicloud_instance_types.default.instance_types.0.id}", "${data.alicloud_instance_types.default.instance_types.0.id}"},
"master_disk_category": "cloud_ssd",
Expand Down Expand Up @@ -449,16 +449,16 @@ func TestAccAliCloudCSKubernetes_prepaid(t *testing.T) {
}),
),
},
//{
// Config: testAccConfig(map[string]interface{}{
// "version": "1.26.15-aliyun.1",
// }),
// Check: resource.ComposeTestCheckFunc(
// testAccCheck(map[string]string{
// "version": "1.26.15-aliyun.1",
// }),
// ),
//},
{
Config: testAccConfig(map[string]interface{}{
"version": "1.28.9-aliyun.1",
}),
Check: resource.ComposeTestCheckFunc(
testAccCheck(map[string]string{
"version": "1.28.9-aliyun.1",
}),
),
},
{
ResourceName: resourceId,
ImportState: true,
Expand Down Expand Up @@ -608,7 +608,7 @@ resource "alicloud_cs_kubernetes_node_pool" "default" {
system_disk_size = 50
system_disk_category = "cloud_essd"
system_disk_performance_level = "PL0"
desired_size = 1
desired_size = 2
}
`, name)
}
Expand Down
71 changes: 60 additions & 11 deletions alicloud/resource_alicloud_cs_managed_kubernetes.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package alicloud

import (
"fmt"
"log"
"regexp"
"strconv"
"strings"
Expand Down Expand Up @@ -789,22 +790,70 @@ func resourceAlicloudCSManagedKubernetesCreate(d *schema.ResourceData, meta inte
}

func UpgradeAlicloudKubernetesCluster(d *schema.ResourceData, meta interface{}) error {
client := meta.(*connectivity.AliyunClient)
if d.HasChange("version") {
nextVersion := d.Get("version").(string)
args := &cs.UpgradeClusterArgs{
Version: nextVersion,
}

csService := CsService{client}
err := csService.UpgradeCluster(d.Id(), args)
if !d.HasChange("version") {
return nil
}

clusterId := d.Id()
version := d.Get("version").(string)
action := "UpgradeCluster"
c := meta.(*connectivity.AliyunClient)
rosCsClient, err := c.NewRoaCsClient()
if err != nil {
return err
}
args := &roacs.UpgradeClusterRequest{
NextVersion: tea.String(version),
}
// upgrade cluster
var resp *roacs.UpgradeClusterResponse
err = resource.Retry(UpgradeClusterTimeout, func() *resource.RetryError {
resp, err = rosCsClient.UpgradeCluster(tea.String(clusterId), args)
if NeedRetry(err) || resp == nil {
return resource.RetryableError(err)
}
if err != nil {
return WrapError(err)
return resource.NonRetryableError(err)
}
return nil
})

if err != nil {
return WrapErrorf(err, ResponseCodeMsg, d.Id(), action, err)
}

taskId := tea.StringValue(resp.Body.TaskId)
if taskId == "" {
return WrapErrorf(err, ResponseCodeMsg, d.Id(), action, resp)
}

d.SetPartial("version")
csClient := CsClient{client: rosCsClient}
stateConf := BuildStateConf([]string{}, []string{"success"}, d.Timeout(schema.TimeoutUpdate), 5*time.Second, csClient.DescribeTaskRefreshFunc(d, taskId, []string{"fail", "failed"}))
if jobDetail, err := stateConf.WaitForState(); err != nil {
// try to cancel task
wait := incrementalWait(3*time.Second, 3*time.Second)
_ = resource.Retry(5*time.Minute, func() *resource.RetryError {
_, _err := rosCsClient.CancelTask(tea.String(taskId))
if _err != nil {
if NeedRetry(_err) {
wait()
return resource.RetryableError(_err)
}
log.Printf("[WARN] %s ACK Cluster cancel upgrade error: %#v", clusterId, err)
}
return nil
})
// output error message
return WrapErrorf(err, ResponseCodeMsg, d.Id(), action, jobDetail)
}
// ensure cluster state is running
csService := CsService{client: c}
stateConf = BuildStateConf([]string{}, []string{"running"}, UpgradeClusterTimeout, 10*time.Second, csService.CsKubernetesInstanceStateRefreshFunc(clusterId, []string{"deleting", "failed"}))
if _, err := stateConf.WaitForState(); err != nil {
return WrapError(err)
}

d.SetPartial("version")
return nil
}

Expand Down
2 changes: 1 addition & 1 deletion alicloud/resource_alicloud_cs_serverless_kubernetes.go
Original file line number Diff line number Diff line change
Expand Up @@ -546,7 +546,7 @@ func resourceAlicloudCSServerlessKubernetesUpdate(d *schema.ResourceData, meta i
// upgrade cluster version
err := UpgradeAlicloudKubernetesCluster(d, meta)
if err != nil {
return WrapErrorf(err, DefaultErrorMsg, d.Id(), "UpgradeClusterVersion", DenverdinoAliyungo)
return WrapError(err)
}

if err := modifyKubernetesCluster(d, meta); err != nil {
Expand Down
Loading

0 comments on commit 7200633

Please sign in to comment.