From fe24bfb5d4c03f5bc5a0af20914c69f629b1d144 Mon Sep 17 00:00:00 2001 From: shanye Date: Wed, 3 Jan 2024 17:53:30 +0800 Subject: [PATCH] update CreateDynamicTagGroup to async --- ...resource_alicloud_cms_dynamic_tag_group.go | 6 ++++++ ...rce_alicloud_cms_dynamic_tag_group_test.go | 4 ++-- alicloud/service_alicloud_cms.go | 20 +++++++++++++++++++ 3 files changed, 28 insertions(+), 2 deletions(-) diff --git a/alicloud/resource_alicloud_cms_dynamic_tag_group.go b/alicloud/resource_alicloud_cms_dynamic_tag_group.go index 8943131b6395..8fa0cee44f84 100644 --- a/alicloud/resource_alicloud_cms_dynamic_tag_group.go +++ b/alicloud/resource_alicloud_cms_dynamic_tag_group.go @@ -118,6 +118,12 @@ func resourceAlicloudCmsDynamicTagGroupCreate(d *schema.ResourceData, meta inter d.SetId(fmt.Sprint(response["Id"])) + cmsService := CmsService{client} + stateConf := BuildStateConf([]string{}, []string{"FINISH"}, d.Timeout(schema.TimeoutCreate), 5*time.Second, cmsService.CmsDynamicTagGroupStateRefreshFunc(d.Id(), []string{})) + if _, err := stateConf.WaitForState(); err != nil { + return WrapErrorf(err, IdMsg, d.Id()) + } + return resourceAlicloudCmsDynamicTagGroupRead(d, meta) } diff --git a/alicloud/resource_alicloud_cms_dynamic_tag_group_test.go b/alicloud/resource_alicloud_cms_dynamic_tag_group_test.go index b2d8c8393022..7f1f6d0318f1 100644 --- a/alicloud/resource_alicloud_cms_dynamic_tag_group_test.go +++ b/alicloud/resource_alicloud_cms_dynamic_tag_group_test.go @@ -108,7 +108,7 @@ func testSweepCmsDynamicTagGroup(region string) error { return nil } -func TestAccAlicloudCmsDynamicTagGroup_basic0(t *testing.T) { +func TestAccAliCloudCmsDynamicTagGroup_basic0(t *testing.T) { var v map[string]interface{} checkoutSupportedRegions(t, true, connectivity.CmsDynamicTagGroupSupportRegions) resourceId := "alicloud_cms_dynamic_tag_group.default" @@ -164,7 +164,7 @@ var AlicloudCloudMonitorServiceDynamicTagGroupMap0 = map[string]string{ "contact_group_list.#": CHECKSET, "tag_key": CHECKSET, "match_express_filter_relation": CHECKSET, - "template_id_list.#": CHECKSET, + // "template_id_list.#": CHECKSET, } func AlicloudCloudMonitorServiceDynamicTagGroupBasicDependence0(name string) string { diff --git a/alicloud/service_alicloud_cms.go b/alicloud/service_alicloud_cms.go index 77f8f8cbae1b..a3b715eed0e3 100644 --- a/alicloud/service_alicloud_cms.go +++ b/alicloud/service_alicloud_cms.go @@ -1010,3 +1010,23 @@ func (s *CmsService) CmsMetricRuleBlackListStateRefreshFunc(d *schema.ResourceDa return object, fmt.Sprint(object[""]), nil } } + +func (s *CmsService) CmsDynamicTagGroupStateRefreshFunc(id string, failStates []string) resource.StateRefreshFunc { + return func() (interface{}, string, error) { + object, err := s.DescribeCmsDynamicTagGroup(id) + if err != nil { + if NotFoundError(err) { + // Set this to nil as if we didn't find anything. + return nil, "", nil + } + return nil, "", WrapError(err) + } + + for _, failState := range failStates { + if fmt.Sprint(object["Status"]) == failState { + return object, fmt.Sprint(object["Status"]), WrapError(Error(FailedToReachTargetStatus, fmt.Sprint(object["Status"]))) + } + } + return object, fmt.Sprint(object["Status"]), nil + } +}