Skip to content

Commit d748dac

Browse files
authored
resource/alicloud_message_service_endpoint: Fixed the create error caused by field endpoint_enabled (#8394)
1 parent 736a745 commit d748dac

2 files changed

+110
-58
lines changed

alicloud/resource_alicloud_message_service_endpoint.go

+48-50
Original file line numberDiff line numberDiff line change
@@ -69,67 +69,65 @@ func resourceAliCloudMessageServiceEndpointRead(d *schema.ResourceData, meta int
6969

7070
func resourceAliCloudMessageServiceEndpointUpdate(d *schema.ResourceData, meta interface{}) error {
7171
client := meta.(*connectivity.AliyunClient)
72+
messageServiceServiceV2 := MessageServiceServiceV2{client}
7273
var request map[string]interface{}
7374
var response map[string]interface{}
7475
var query map[string]interface{}
7576

76-
if d.HasChange("endpoint_enabled") {
77-
messageServiceServiceV2 := MessageServiceServiceV2{client}
78-
object, err := messageServiceServiceV2.DescribeMessageServiceEndpoint(d.Id())
79-
if err != nil {
80-
return WrapError(err)
81-
}
77+
object, err := messageServiceServiceV2.DescribeMessageServiceEndpoint(d.Id())
78+
if err != nil {
79+
return WrapError(err)
80+
}
8281

83-
target := d.Get("endpoint_enabled").(bool)
84-
if object["EndpointEnabled"].(bool) != target {
85-
if target == true {
86-
action := "EnableEndpoint"
87-
request = make(map[string]interface{})
88-
query = make(map[string]interface{})
89-
request["EndpointType"] = d.Id()
90-
request["RegionId"] = client.RegionId
91-
wait := incrementalWait(3*time.Second, 5*time.Second)
92-
err = resource.Retry(d.Timeout(schema.TimeoutUpdate), func() *resource.RetryError {
93-
response, err = client.RpcPost("Mns-open", "2022-01-19", action, query, request, true)
94-
if err != nil {
95-
if NeedRetry(err) {
96-
wait()
97-
return resource.RetryableError(err)
98-
}
99-
return resource.NonRetryableError(err)
100-
}
101-
return nil
102-
})
103-
addDebug(action, response, request)
82+
target, ok := d.GetOkExists("endpoint_enabled")
83+
if ok && fmt.Sprint(object["EndpointEnabled"]) != fmt.Sprint(target) {
84+
if target == true {
85+
action := "EnableEndpoint"
86+
request = make(map[string]interface{})
87+
query = make(map[string]interface{})
88+
request["EndpointType"] = d.Id()
89+
request["RegionId"] = client.RegionId
90+
wait := incrementalWait(3*time.Second, 5*time.Second)
91+
err = resource.Retry(d.Timeout(schema.TimeoutUpdate), func() *resource.RetryError {
92+
response, err = client.RpcPost("Mns-open", "2022-01-19", action, query, request, true)
10493
if err != nil {
105-
return WrapErrorf(err, DefaultErrorMsg, d.Id(), action, AlibabaCloudSdkGoERROR)
94+
if NeedRetry(err) {
95+
wait()
96+
return resource.RetryableError(err)
97+
}
98+
return resource.NonRetryableError(err)
10699
}
107-
100+
return nil
101+
})
102+
addDebug(action, response, request)
103+
if err != nil {
104+
return WrapErrorf(err, DefaultErrorMsg, d.Id(), action, AlibabaCloudSdkGoERROR)
108105
}
109-
if target == false {
110-
action := "DisableEndpoint"
111-
request = make(map[string]interface{})
112-
query = make(map[string]interface{})
113-
request["EndpointType"] = d.Id()
114-
request["RegionId"] = client.RegionId
115-
wait := incrementalWait(3*time.Second, 5*time.Second)
116-
err = resource.Retry(d.Timeout(schema.TimeoutUpdate), func() *resource.RetryError {
117-
response, err = client.RpcPost("Mns-open", "2022-01-19", action, query, request, true)
118-
if err != nil {
119-
if NeedRetry(err) {
120-
wait()
121-
return resource.RetryableError(err)
122-
}
123-
return resource.NonRetryableError(err)
124-
}
125-
return nil
126-
})
127-
addDebug(action, response, request)
106+
107+
}
108+
if target == false {
109+
action := "DisableEndpoint"
110+
request = make(map[string]interface{})
111+
query = make(map[string]interface{})
112+
request["EndpointType"] = d.Id()
113+
request["RegionId"] = client.RegionId
114+
wait := incrementalWait(3*time.Second, 5*time.Second)
115+
err = resource.Retry(d.Timeout(schema.TimeoutUpdate), func() *resource.RetryError {
116+
response, err = client.RpcPost("Mns-open", "2022-01-19", action, query, request, true)
128117
if err != nil {
129-
return WrapErrorf(err, DefaultErrorMsg, d.Id(), action, AlibabaCloudSdkGoERROR)
118+
if NeedRetry(err) {
119+
wait()
120+
return resource.RetryableError(err)
121+
}
122+
return resource.NonRetryableError(err)
130123
}
131-
124+
return nil
125+
})
126+
addDebug(action, response, request)
127+
if err != nil {
128+
return WrapErrorf(err, DefaultErrorMsg, d.Id(), action, AlibabaCloudSdkGoERROR)
132129
}
130+
133131
}
134132
}
135133

alicloud/resource_alicloud_message_service_endpoint_test.go

+62-8
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,15 @@ import (
1414
func TestAccAliCloudMessageServiceEndpoint_basic10073(t *testing.T) {
1515
var v map[string]interface{}
1616
resourceId := "alicloud_message_service_endpoint.default"
17-
ra := resourceAttrInit(resourceId, AlicloudMessageServiceEndpointMap10073)
17+
ra := resourceAttrInit(resourceId, AliCloudMessageServiceEndpointMap10073)
1818
rc := resourceCheckInitWithDescribeMethod(resourceId, &v, func() interface{} {
1919
return &MessageServiceServiceV2{testAccProvider.Meta().(*connectivity.AliyunClient)}
2020
}, "DescribeMessageServiceEndpoint")
2121
rac := resourceAttrCheckInit(rc, ra)
2222
testAccCheck := rac.resourceAttrMapUpdateSet()
2323
rand := acctest.RandIntRange(10000, 99999)
2424
name := fmt.Sprintf("tf-testacc%smessageserviceendpoint%d", defaultRegionToTest, rand)
25-
testAccConfig := resourceTestAccConfigFunc(resourceId, name, AlicloudMessageServiceEndpointBasicDependence10073)
25+
testAccConfig := resourceTestAccConfigFunc(resourceId, name, AliCloudMessageServiceEndpointBasicDependence10073)
2626
resource.Test(t, resource.TestCase{
2727
PreCheck: func() {
2828
testAccPreCheckWithRegions(t, true, []connectivity.Region{"cn-hangzhou"})
@@ -74,9 +74,9 @@ func TestAccAliCloudMessageServiceEndpoint_basic10073(t *testing.T) {
7474
})
7575
}
7676

77-
var AlicloudMessageServiceEndpointMap10073 = map[string]string{}
77+
var AliCloudMessageServiceEndpointMap10073 = map[string]string{}
7878

79-
func AlicloudMessageServiceEndpointBasicDependence10073(name string) string {
79+
func AliCloudMessageServiceEndpointBasicDependence10073(name string) string {
8080
return fmt.Sprintf(`
8181
variable "name" {
8282
default = "%s"
@@ -90,15 +90,15 @@ variable "name" {
9090
func TestAccAliCloudMessageServiceEndpoint_basic9855(t *testing.T) {
9191
var v map[string]interface{}
9292
resourceId := "alicloud_message_service_endpoint.default"
93-
ra := resourceAttrInit(resourceId, AlicloudMessageServiceEndpointMap9855)
93+
ra := resourceAttrInit(resourceId, AliCloudMessageServiceEndpointMap9855)
9494
rc := resourceCheckInitWithDescribeMethod(resourceId, &v, func() interface{} {
9595
return &MessageServiceServiceV2{testAccProvider.Meta().(*connectivity.AliyunClient)}
9696
}, "DescribeMessageServiceEndpoint")
9797
rac := resourceAttrCheckInit(rc, ra)
9898
testAccCheck := rac.resourceAttrMapUpdateSet()
9999
rand := acctest.RandIntRange(10000, 99999)
100100
name := fmt.Sprintf("tf-testacc%smessageserviceendpoint%d", defaultRegionToTest, rand)
101-
testAccConfig := resourceTestAccConfigFunc(resourceId, name, AlicloudMessageServiceEndpointBasicDependence9855)
101+
testAccConfig := resourceTestAccConfigFunc(resourceId, name, AliCloudMessageServiceEndpointBasicDependence9855)
102102
resource.Test(t, resource.TestCase{
103103
PreCheck: func() {
104104
testAccPreCheckWithRegions(t, true, []connectivity.Region{"cn-hangzhou"})
@@ -130,9 +130,9 @@ func TestAccAliCloudMessageServiceEndpoint_basic9855(t *testing.T) {
130130
})
131131
}
132132

133-
var AlicloudMessageServiceEndpointMap9855 = map[string]string{}
133+
var AliCloudMessageServiceEndpointMap9855 = map[string]string{}
134134

135-
func AlicloudMessageServiceEndpointBasicDependence9855(name string) string {
135+
func AliCloudMessageServiceEndpointBasicDependence9855(name string) string {
136136
return fmt.Sprintf(`
137137
variable "name" {
138138
default = "%s"
@@ -143,3 +143,57 @@ variable "name" {
143143
}
144144

145145
// Test MessageService Endpoint. <<< Resource test cases, automatically generated.
146+
147+
// Case Endpoint测试用例 9856
148+
func TestAccAliCloudMessageServiceEndpoint_basic9856(t *testing.T) {
149+
var v map[string]interface{}
150+
resourceId := "alicloud_message_service_endpoint.default"
151+
ra := resourceAttrInit(resourceId, AliCloudMessageServiceEndpointMap9855)
152+
rc := resourceCheckInitWithDescribeMethod(resourceId, &v, func() interface{} {
153+
return &MessageServiceServiceV2{testAccProvider.Meta().(*connectivity.AliyunClient)}
154+
}, "DescribeMessageServiceEndpoint")
155+
rac := resourceAttrCheckInit(rc, ra)
156+
testAccCheck := rac.resourceAttrMapUpdateSet()
157+
rand := acctest.RandIntRange(10000, 99999)
158+
name := fmt.Sprintf("tf-testacc%smessageserviceendpoint%d", defaultRegionToTest, rand)
159+
testAccConfig := resourceTestAccConfigFunc(resourceId, name, AliCloudMessageServiceEndpointBasicDependence9855)
160+
resource.Test(t, resource.TestCase{
161+
PreCheck: func() {
162+
testAccPreCheckWithRegions(t, true, []connectivity.Region{"cn-hangzhou"})
163+
testAccPreCheck(t)
164+
},
165+
IDRefreshName: resourceId,
166+
Providers: testAccProviders,
167+
CheckDestroy: nil,
168+
Steps: []resource.TestStep{
169+
{
170+
Config: testAccConfig(map[string]interface{}{
171+
"endpoint_type": "public",
172+
"endpoint_enabled": "false",
173+
}),
174+
Check: resource.ComposeTestCheckFunc(
175+
testAccCheck(map[string]string{
176+
"endpoint_type": "public",
177+
"endpoint_enabled": "false",
178+
}),
179+
),
180+
},
181+
{
182+
Config: testAccConfig(map[string]interface{}{
183+
"endpoint_enabled": "true",
184+
}),
185+
Check: resource.ComposeTestCheckFunc(
186+
testAccCheck(map[string]string{
187+
"endpoint_enabled": "true",
188+
}),
189+
),
190+
},
191+
{
192+
ResourceName: resourceId,
193+
ImportState: true,
194+
ImportStateVerify: true,
195+
ImportStateVerifyIgnore: []string{},
196+
},
197+
},
198+
})
199+
}

0 commit comments

Comments
 (0)