alibabacloudstack/resource_apsarastack_polardb_database.go (200 lines of code) (raw):

package alibabacloudstack // Generated By apsara-orchestration-generator // Product POLARDB Resouce Database import ( "encoding/json" "fmt" "github.com/aliyun/terraform-provider-alibabacloudstack/alibabacloudstack/connectivity" "github.com/aliyun/terraform-provider-alibabacloudstack/alibabacloudstack/errmsgs" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func resourceAlibabacloudStackPolardbDatabase() *schema.Resource { resource := &schema.Resource{ Schema: map[string]*schema.Schema{ "accounts": { Type: schema.TypeList, Optional: true, Computed: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ "account": { Type: schema.TypeString, Optional: true, Computed: true, }, "account_privilege": { Type: schema.TypeString, Optional: true, Computed: true, }, "account_privilege_detail": { Type: schema.TypeString, Optional: true, Computed: true, }, }, }, }, "character_set_name": { Type: schema.TypeString, Required: true, }, "data_base_description": { Type: schema.TypeString, Optional: true, Computed: true, }, "data_base_instance_id": { Type: schema.TypeString, Required: true, }, "data_base_name": { Type: schema.TypeString, Required: true, }, "engine": { Type: schema.TypeString, Optional: true, Computed: true, }, "status": { Type: schema.TypeString, Computed: true, }, }, } setResourceFunc(resource, resourceAlibabacloudStackPolardbDatabaseCreate, resourceAlibabacloudStackPolardbDatabaseRead, resourceAlibabacloudStackPolardbDatabaseUpdate, resourceAlibabacloudStackPolardbDatabaseDelete) return resource } func resourceAlibabacloudStackPolardbDatabaseCreate(d *schema.ResourceData, meta interface{}) error { client := meta.(*connectivity.AlibabacloudStackClient) request := client.NewCommonRequest("POST", "polardb", "2024-01-30", "CreateDatabase", "") PolardbCreatedatabaseResponse := PolardbCreatedatabaseResponse{} if v, ok := d.GetOk("character_set_name"); ok && v != "" { request.QueryParams["CharacterSetName"] = v.(string) } else { return fmt.Errorf("CharacterSetName is required") } if v, ok := d.GetOk("data_base_description"); ok && v != "" { request.QueryParams["DBDescription"] = v.(string) } if v, ok := d.GetOk("data_base_instance_id"); ok && v != "" { request.QueryParams["DBInstanceId"] = v.(string) } else { return fmt.Errorf("DataBaseInstanceId is required") } if v, ok := d.GetOk("data_base_name"); ok && v != "" { request.QueryParams["DBName"] = v.(string) } else { return fmt.Errorf("DataBaseName is required") } bresponse, err := client.ProcessCommonRequest(request) if err != nil { if bresponse == nil { return errmsgs.WrapErrorf(err, "Process Common Request Failed") } errmsg := errmsgs.GetBaseResponseErrorMessage(bresponse.BaseResponse) return errmsgs.WrapErrorf(err, errmsgs.RequestV1ErrorMsg, "alibabacloudstack_polardb_database", "CreateDatabase", request.GetActionName(), errmsgs.AlibabacloudStackSdkGoERROR, errmsg) } err = json.Unmarshal(bresponse.GetHttpContentBytes(), &PolardbCreatedatabaseResponse) if err != nil { return errmsgs.WrapErrorf(err, errmsgs.DefaultErrorMsg, "alibabacloudstack_polardb_database", "CreateDatabase", errmsgs.AlibabacloudStackSdkGoERROR) } data_base_instance_id := d.Get("data_base_instance_id").(string) data_base_name := d.Get("data_base_name").(string) d.SetId(fmt.Sprintf("%s", data_base_instance_id+":"+data_base_name)) return nil } func resourceAlibabacloudStackPolardbDatabaseUpdate(d *schema.ResourceData, meta interface{}) error { client := meta.(*connectivity.AlibabacloudStackClient) if d.HasChanges("data_base_description") { request := client.NewCommonRequest("POST", "polardb", "2024-01-30", "ModifyDBDescription", "") PolardbModifydbdescriptionResponse := PolardbModifydbdescriptionResponse{} if v, ok := d.GetOk("data_base_description"); ok { request.QueryParams["DBDescription"] = v.(string) } else { return fmt.Errorf("DataBaseDescription is required") } if v, ok := d.GetOk("data_base_instance_id"); ok { request.QueryParams["DBInstanceId"] = v.(string) } else { return fmt.Errorf("DataBaseInstanceId is required") } if v, ok := d.GetOk("data_base_name"); ok { request.QueryParams["DBName"] = v.(string) } else { return fmt.Errorf("DataBaseName is required") } bresponse, err := client.ProcessCommonRequest(request) if err != nil { if bresponse == nil { return errmsgs.WrapErrorf(err, "Process Common Request Failed") } errmsg := errmsgs.GetBaseResponseErrorMessage(bresponse.BaseResponse) return errmsgs.WrapErrorf(err, errmsgs.RequestV1ErrorMsg, "alibabacloudstack_polardb_database", "ModifyDBDescription", request.GetActionName(), errmsgs.AlibabacloudStackSdkGoERROR, errmsg) } err = json.Unmarshal(bresponse.GetHttpContentBytes(), &PolardbModifydbdescriptionResponse) if err != nil { return errmsgs.WrapErrorf(err, errmsgs.DefaultErrorMsg, "alibabacloudstack_polardb_database", "ModifyDBDescription", errmsgs.AlibabacloudStackSdkGoERROR) } } return nil } func resourceAlibabacloudStackPolardbDatabaseRead(d *schema.ResourceData, meta interface{}) error { client := meta.(*connectivity.AlibabacloudStackClient) polardbdatabaseservice := PolardbService{client} response, err := polardbdatabaseservice.DescribeDBDatabase(d.Id()) if err != nil { return errmsgs.WrapErrorf(err, errmsgs.DefaultErrorMsg, "alibabacloudstack_polardb_database", errmsgs.AlibabacloudStackSdkGoERROR) } data := response.Databases.Database[0] d.Set("character_set_name", data.CharacterSetName) d.Set("data_base_description", data.DBDescription) d.Set("data_base_instance_id", data.DBInstanceId) d.Set("data_base_name", data.DBName) d.Set("engine", data.Engine) d.Set("status", data.DBStatus) return nil } func resourceAlibabacloudStackPolardbDatabaseDelete(d *schema.ResourceData, meta interface{}) error { client := meta.(*connectivity.AlibabacloudStackClient) request := client.NewCommonRequest("POST", "polardb", "2024-01-30", "DeleteDatabase", "") if v, ok := d.GetOk("data_base_instance_id"); ok && v != "" { request.QueryParams["DBInstanceId"] = v.(string) } else { return fmt.Errorf("DataBaseInstanceId is required") } if v, ok := d.GetOk("data_base_name"); ok && v != "" { request.QueryParams["DBName"] = v.(string) } else { return fmt.Errorf("DataBaseName is required") } bresponse, err := client.ProcessCommonRequest(request) if err != nil { if bresponse == nil { return errmsgs.WrapErrorf(err, "Process Common Request Failed") } errmsg := errmsgs.GetBaseResponseErrorMessage(bresponse.BaseResponse) return errmsgs.WrapErrorf(err, errmsgs.RequestV1ErrorMsg, "alibabacloudstack_polardb_database", "DeleteDatabase", request.GetActionName(), errmsgs.AlibabacloudStackSdkGoERROR, errmsg) } return nil } type PolardbCreatedatabaseResponse struct { RequestId string `json:"RequestId"` } type PolardbCopydatabasebetweeninstancesResponse struct { RequestId string `json:"RequestId"` DBInstanceId string `json:"DBInstanceId"` } type PolardbCreateonlinedatabasetaskResponse struct { RequestId string `json:"RequestId"` } type PolardbModifydbdescriptionResponse struct { RequestId string `json:"RequestId"` } type PolardbDeletedatabaseResponse struct { RequestId string `json:"RequestId"` }