alicloud/resource_alicloud_edas_deploy_group.go (116 lines of code) (raw):

package alicloud import ( "time" "github.com/aliyun/alibaba-cloud-sdk-go/services/edas" "github.com/aliyun/terraform-provider-alicloud/alicloud/connectivity" "github.com/hashicorp/terraform-plugin-sdk/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/helper/schema" ) func resourceAlicloudEdasDeployGroup() *schema.Resource { return &schema.Resource{ Create: resourceAlicloudEdasDeployGroupCreate, Read: resourceAlicloudEdasDeployGroupRead, Delete: resourceAlicloudEdasDeployGroupDelete, Importer: &schema.ResourceImporter{ State: schema.ImportStatePassthrough, }, Schema: map[string]*schema.Schema{ "app_id": { Type: schema.TypeString, Required: true, ForceNew: true, }, "group_name": { Type: schema.TypeString, Required: true, ForceNew: true, }, "group_type": { Type: schema.TypeInt, Computed: true, ForceNew: true, }, }, } } func resourceAlicloudEdasDeployGroupCreate(d *schema.ResourceData, meta interface{}) error { client := meta.(*connectivity.AliyunClient) edasService := EdasService{client} appId := d.Get("app_id").(string) regionId := client.RegionId groupName := d.Get("group_name").(string) request := edas.CreateInsertDeployGroupRequest() request.RegionId = regionId request.AppId = appId request.GroupName = groupName wait := incrementalWait(1*time.Second, 2*time.Second) err := resource.Retry(5*time.Minute, func() *resource.RetryError { raw, err := edasService.client.WithEdasClient(func(edasClient *edas.Client) (interface{}, error) { return edasClient.InsertDeployGroup(request) }) if err != nil { if IsExpectedErrors(err, []string{ThrottlingUser}) { wait() return resource.RetryableError(err) } return resource.NonRetryableError(err) } response := raw.(*edas.InsertDeployGroupResponse) deployGroup := response.DeployGroupEntity d.SetId(appId + ":" + groupName + ":" + deployGroup.Id) addDebug(request.GetActionName(), raw, request.RoaRequest, request) return nil }) if err != nil { return WrapErrorf(err, DefaultErrorMsg, "alicloud_edas_deploy_group", request.GetActionName(), AlibabaCloudSdkGoERROR) } return resourceAlicloudEdasDeployGroupRead(d, meta) } func resourceAlicloudEdasDeployGroupRead(d *schema.ResourceData, meta interface{}) error { client := meta.(*connectivity.AliyunClient) edasService := EdasService{client} strs, err := ParseResourceId(d.Id(), 3) if err != nil { return WrapError(err) } appId := strs[0] groupId := strs[2] deployGroup, err := edasService.GetDeployGroup(appId, groupId) if err != nil { return WrapError(err) } if deployGroup == nil { return nil } d.Set("group_type", deployGroup.GroupType) d.Set("app_id", deployGroup.AppId) d.Set("group_name", deployGroup.GroupName) return nil } func resourceAlicloudEdasDeployGroupDelete(d *schema.ResourceData, meta interface{}) error { client := meta.(*connectivity.AliyunClient) edasService := EdasService{client} request := edas.CreateDeleteDeployGroupRequest() request.RegionId = client.RegionId request.AppId = d.Get("app_id").(string) request.GroupName = d.Get("group_name").(string) wait := incrementalWait(1*time.Second, 2*time.Second) err := resource.Retry(5*time.Minute, func() *resource.RetryError { raw, err := edasService.client.WithEdasClient(func(edasClient *edas.Client) (interface{}, error) { return edasClient.DeleteDeployGroup(request) }) if err != nil { if IsExpectedErrors(err, []string{ThrottlingUser}) { wait() return resource.RetryableError(err) } return resource.NonRetryableError(err) } addDebug(request.GetActionName(), raw, request.RoaRequest, request) return nil }) if err != nil { return WrapErrorf(err, DefaultErrorMsg, d.Id(), request.GetActionName(), AlibabaCloudSdkGoERROR) } return nil }