alibabacloudstack/resource_apsarastack_polardb_backuppolicy.go (252 lines of code) (raw):
package alibabacloudstack
// Generated By apsara-orchestration-generator
// Product POLARDB Resouce BackupPolicy
import (
"encoding/json"
"fmt"
"strconv"
"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 resourceAlibabacloudStackPolardbBackuppolicy() *schema.Resource {
resource := &schema.Resource{
Schema: map[string]*schema.Schema{
"backup_log": {
Type: schema.TypeString,
Optional: true,
},
"backup_policy_mode": {
Type: schema.TypeString,
Optional: true,
},
"backup_retention_period": {
Type: schema.TypeInt,
Optional: true,
},
"compress_type": {
Type: schema.TypeString,
Optional: true,
},
"db_instance_id": {
Type: schema.TypeString,
Required: true,
},
"enable_backup_log": {
Type: schema.TypeString,
Optional: true,
},
"high_space_usage_protection": {
Type: schema.TypeString,
Optional: true,
},
"local_log_retention_hours": {
Type: schema.TypeString,
Optional: true,
},
"local_log_retention_space": {
Type: schema.TypeString,
Optional: true,
},
"log_backup_frequency": {
Type: schema.TypeString,
Optional: true,
},
"log_backup_local_retention_number": {
Type: schema.TypeInt,
Optional: true,
},
"log_backup_retention_period": {
Type: schema.TypeString,
Optional: true,
},
"preferred_backup_period": {
Type: schema.TypeString,
Optional: true,
},
"preferred_backup_time": {
Type: schema.TypeString,
Optional: true,
},
"released_keep_policy": {
Type: schema.TypeString,
Optional: true,
},
},
}
setResourceFunc(resource, resourceAlibabacloudStackPolardbBackuppolicyCreate,
resourceAlibabacloudStackPolardbBackuppolicyRead, resourceAlibabacloudStackPolardbBackuppolicyUpdate, resourceAlibabacloudStackPolardbBackuppolicyDelete)
return resource
}
func resourceAlibabacloudStackPolardbBackuppolicyCreate(d *schema.ResourceData, meta interface{}) error {
client := meta.(*connectivity.AlibabacloudStackClient)
request := client.NewCommonRequest("POST", "polardb", "2024-01-30", "ModifyBackupPolicy", "")
PolardbModifybackuppolicyResponse := PolardbModifybackuppolicyResponse{}
if v, ok := d.GetOk("backup_log"); ok {
request.QueryParams["BackupLog"] = v.(string)
}
if v, ok := d.GetOk("backup_policy_mode"); ok {
request.QueryParams["BackupPolicyMode"] = v.(string)
}
if v, ok := d.GetOk("backup_retention_period"); ok {
request.QueryParams["BackupRetentionPeriod"] = strconv.Itoa(v.(int))
}
if v, ok := d.GetOk("compress_type"); ok {
request.QueryParams["CompressType"] = v.(string)
}
if v, ok := d.GetOk("db_instance_id"); ok {
request.QueryParams["DBInstanceId"] = v.(string)
} else {
return fmt.Errorf("DBInstanceId is required")
}
if v, ok := d.GetOk("enable_backup_log"); ok {
request.QueryParams["EnableBackupLog"] = v.(string)
}
if v, ok := d.GetOk("high_space_usage_protection"); ok {
request.QueryParams["HighSpaceUsageProtection"] = v.(string)
}
if v, ok := d.GetOk("local_log_retention_hours"); ok {
request.QueryParams["LocalLogRetentionHours"] = v.(string)
}
if v, ok := d.GetOk("local_log_retention_space"); ok {
request.QueryParams["LocalLogRetentionSpace"] = v.(string)
}
if v, ok := d.GetOk("log_backup_frequency"); ok {
request.QueryParams["LogBackupFrequency"] = v.(string)
}
if v, ok := d.GetOk("log_backup_local_retention_number"); ok {
request.QueryParams["LogBackupLocalRetentionNumber"] = strconv.Itoa(v.(int))
}
if v, ok := d.GetOk("log_backup_retention_period"); ok {
request.QueryParams["LogBackupRetentionPeriod"] = v.(string)
}
if v, ok := d.GetOk("preferred_backup_period"); ok {
request.QueryParams["PreferredBackupPeriod"] = v.(string)
}
if v, ok := d.GetOk("preferred_backup_time"); ok {
request.QueryParams["PreferredBackupTime"] = v.(string)
}
if v, ok := d.GetOk("released_keep_policy"); ok {
request.QueryParams["ReleasedKeepPolicy"] = v.(string)
}
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_backup_policy", "ModifyBackupPolicy", request.GetActionName(), errmsgs.AlibabacloudStackSdkGoERROR, errmsg)
}
err = json.Unmarshal(bresponse.GetHttpContentBytes(), &PolardbModifybackuppolicyResponse)
if err != nil {
return errmsgs.WrapErrorf(err, errmsgs.DefaultErrorMsg,
"alibabacloudstack_polardb_backup_policy", "ModifyBackupPolicy", errmsgs.AlibabacloudStackSdkGoERROR)
}
db_instance_id := d.Get("db_instance_id").(string)
d.SetId(fmt.Sprintf("%s", db_instance_id))
return nil
}
func resourceAlibabacloudStackPolardbBackuppolicyUpdate(d *schema.ResourceData, meta interface{}) error {
client := meta.(*connectivity.AlibabacloudStackClient)
if d.HasChanges("backup_log", "backup_policy_mode", "backup_retention_period", "compress_type", "enable_backup_log", "high_space_usage_protection", "local_log_retention_hours", "local_log_retention_space", "log_backup_frequency", "log_backup_local_retention_number", "log_backup_retention_period", "preferred_backup_period", "preferred_backup_time", "released_keep_policy") {
request := client.NewCommonRequest("POST", "polardb", "2024-01-30", "ModifyBackupPolicy", "")
PolardbModifybackuppolicyResponse := PolardbModifybackuppolicyResponse{}
if v, ok := d.GetOk("backup_log"); ok {
request.QueryParams["BackupLog"] = v.(string)
}
if v, ok := d.GetOk("backup_policy_mode"); ok {
request.QueryParams["BackupPolicyMode"] = v.(string)
}
if v, ok := d.GetOk("backup_retention_period"); ok {
request.QueryParams["BackupRetentionPeriod"] = strconv.Itoa(v.(int))
}
if v, ok := d.GetOk("compress_type"); ok {
request.QueryParams["CompressType"] = v.(string)
}
if v, ok := d.GetOk("db_instance_id"); ok {
request.QueryParams["DBInstanceId"] = v.(string)
} else {
return fmt.Errorf("DBInstanceId is required")
}
if v, ok := d.GetOk("enable_backup_log"); ok {
request.QueryParams["EnableBackupLog"] = v.(string)
}
if v, ok := d.GetOk("high_space_usage_protection"); ok {
request.QueryParams["HighSpaceUsageProtection"] = v.(string)
}
if v, ok := d.GetOk("local_log_retention_hours"); ok {
request.QueryParams["LocalLogRetentionHours"] = v.(string)
}
if v, ok := d.GetOk("local_log_retention_space"); ok {
request.QueryParams["LocalLogRetentionSpace"] = v.(string)
}
if v, ok := d.GetOk("log_backup_frequency"); ok {
request.QueryParams["LogBackupFrequency"] = v.(string)
}
if v, ok := d.GetOk("log_backup_local_retention_number"); ok {
request.QueryParams["LogBackupLocalRetentionNumber"] = strconv.Itoa(v.(int))
}
if v, ok := d.GetOk("log_backup_retention_period"); ok {
request.QueryParams["LogBackupRetentionPeriod"] = v.(string)
}
if v, ok := d.GetOk("preferred_backup_period"); ok {
request.QueryParams["PreferredBackupPeriod"] = v.(string)
}
if v, ok := d.GetOk("preferred_backup_time"); ok {
request.QueryParams["PreferredBackupTime"] = v.(string)
}
if v, ok := d.GetOk("released_keep_policy"); ok {
request.QueryParams["ReleasedKeepPolicy"] = v.(string)
}
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_backup_policy", "ModifyBackupPolicy", request.GetActionName(), errmsgs.AlibabacloudStackSdkGoERROR, errmsg)
}
err = json.Unmarshal(bresponse.GetHttpContentBytes(), &PolardbModifybackuppolicyResponse)
if err != nil {
return errmsgs.WrapErrorf(err, errmsgs.DefaultErrorMsg,
"alibabacloudstack_polardb_backup_policy", "ModifyBackupPolicy", errmsgs.AlibabacloudStackSdkGoERROR)
}
}
return nil
}
func resourceAlibabacloudStackPolardbBackuppolicyRead(d *schema.ResourceData, meta interface{}) error {
client := meta.(*connectivity.AlibabacloudStackClient)
polardbbackup_policyservice :=
PolardbService{client}
response, err := polardbbackup_policyservice.DoPolardbDescribebackuppolicyRequest(d, client)
if err != nil {
return errmsgs.WrapErrorf(err, errmsgs.DefaultErrorMsg, "alibabacloudstack_polardb_backuppolicy", errmsgs.AlibabacloudStackSdkGoERROR)
}
data := response
d.Set("backup_log", data.BackupLog)
d.Set("backup_retention_period", data.BackupRetentionPeriod)
d.Set("compress_type", data.CompressType)
d.Set("enable_backup_log", data.EnableBackupLog)
d.Set("high_space_usage_protection", data.HighSpaceUsageProtection)
d.Set("local_log_retention_hours", data.LocalLogRetentionHours)
d.Set("local_log_retention_space", data.LocalLogRetentionSpace)
d.Set("log_backup_frequency", data.LogBackupFrequency)
d.Set("log_backup_local_retention_number", data.LogBackupLocalRetentionNumber)
d.Set("log_backup_retention_period", data.LogBackupRetentionPeriod)
d.Set("preferred_backup_period", data.PreferredBackupPeriod)
d.Set("preferred_backup_time", data.PreferredBackupTime)
d.Set("released_keep_policy", data.ReleasedKeepPolicy)
return nil
}
func resourceAlibabacloudStackPolardbBackuppolicyDelete(d *schema.ResourceData, meta interface{}) error {
return nil
}
type PolardbModifybackuppolicyResponse struct {
RequestId string `json:"RequestId"`
DBInstanceID string `json:"DBInstanceID"`
EnableBackupLog string `json:"EnableBackupLog"`
LocalLogRetentionHours int `json:"LocalLogRetentionHours"`
LocalLogRetentionSpace string `json:"LocalLogRetentionSpace"`
HighSpaceUsageProtection string `json:"HighSpaceUsageProtection"`
CompressType string `json:"CompressType"`
LogBackupLocalRetentionNumber int `json:"LogBackupLocalRetentionNumber"`
}