Skip to content

Commit

Permalink
resource/alicloud_gpdb_db_instance_plan: add new attribute scale_up, …
Browse files Browse the repository at this point in the history
…scale_down; resource/alicloud_gpdb_instance: add new attribute parameters.
  • Loading branch information
The-Seagull-like committed Sep 26, 2024
1 parent 0426c52 commit b79735d
Show file tree
Hide file tree
Showing 7 changed files with 982 additions and 10 deletions.
223 changes: 221 additions & 2 deletions alicloud/resource_alicloud_gpdb_db_instance_plan.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ func resourceAliCloudGpdbDbInstancePlan() *schema.Resource {
Type: schema.TypeString,
Required: true,
ForceNew: true,
ValidateFunc: StringInSlice([]string{"PauseResume", "Resize"}, false),
ValidateFunc: StringInSlice([]string{"PauseResume", "Resize", "ModifySpec"}, false),
},
"plan_schedule_type": {
Type: schema.TypeString,
Expand Down Expand Up @@ -69,7 +69,6 @@ func resourceAliCloudGpdbDbInstancePlan() *schema.Resource {
"plan_config": {
Type: schema.TypeList,
Required: true,
MaxItems: 1,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"resume": {
Expand All @@ -87,6 +86,10 @@ func resourceAliCloudGpdbDbInstancePlan() *schema.Resource {
Type: schema.TypeString,
Optional: true,
},
"plan_task_status": {
Type: schema.TypeString,
Computed: true,
},
},
},
},
Expand All @@ -105,6 +108,10 @@ func resourceAliCloudGpdbDbInstancePlan() *schema.Resource {
Type: schema.TypeString,
Optional: true,
},
"plan_task_status": {
Type: schema.TypeString,
Computed: true,
},
},
},
},
Expand All @@ -127,6 +134,10 @@ func resourceAliCloudGpdbDbInstancePlan() *schema.Resource {
Type: schema.TypeString,
Optional: true,
},
"plan_task_status": {
Type: schema.TypeString,
Computed: true,
},
},
},
},
Expand All @@ -149,6 +160,62 @@ func resourceAliCloudGpdbDbInstancePlan() *schema.Resource {
Type: schema.TypeString,
Optional: true,
},
"plan_task_status": {
Type: schema.TypeString,
Computed: true,
},
},
},
},
"scale_up": {
Type: schema.TypeList,
Optional: true,
MaxItems: 1,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"instance_spec": {
Type: schema.TypeString,
Optional: true,
},
"execute_time": {
Type: schema.TypeString,
Optional: true,
Computed: true,
},
"plan_cron_time": {
Type: schema.TypeString,
Optional: true,
},
"plan_task_status": {
Type: schema.TypeString,
Computed: true,
},
},
},
},
"scale_down": {
Type: schema.TypeList,
Optional: true,
MaxItems: 1,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"instance_spec": {
Type: schema.TypeString,
Optional: true,
},
"execute_time": {
Type: schema.TypeString,
Optional: true,
Computed: true,
},
"plan_cron_time": {
Type: schema.TypeString,
Optional: true,
},
"plan_task_status": {
Type: schema.TypeString,
Computed: true,
},
},
},
},
Expand Down Expand Up @@ -271,6 +338,48 @@ func resourceAliCloudGpdbDbInstancePlanCreate(d *schema.ResourceData, meta inter

planConfigMap["scaleOut"] = scaleOutMap
}

if scaleUp, ok := planConfigArg["scale_up"]; ok && len(scaleUp.([]interface{})) > 0 {
scaleUpMap := map[string]interface{}{}
for _, scaleUpList := range scaleUp.([]interface{}) {
scaleUpArg := scaleUpList.(map[string]interface{})

if instanceSpec, ok := scaleUpArg["instance_spec"]; ok {
scaleUpMap["instanceSpec"] = instanceSpec
}

if executeTime, ok := scaleUpArg["execute_time"]; ok {
scaleUpMap["executeTime"] = executeTime
}

if planCronTime, ok := scaleUpArg["plan_cron_time"]; ok {
scaleUpMap["planCronTime"] = planCronTime
}
}

planConfigMap["scaleUp"] = scaleUpMap
}

if scaleDown, ok := planConfigArg["scale_down"]; ok && len(scaleDown.([]interface{})) > 0 {
scaleDownMap := map[string]interface{}{}
for _, scaleDownList := range scaleDown.([]interface{}) {
scaleDownArg := scaleDownList.(map[string]interface{})

if instanceSpec, ok := scaleDownArg["instance_spec"]; ok {
scaleDownMap["instanceSpec"] = instanceSpec
}

if executeTime, ok := scaleDownArg["execute_time"]; ok {
scaleDownMap["executeTime"] = executeTime
}

if planCronTime, ok := scaleDownArg["plan_cron_time"]; ok {
scaleDownMap["planCronTime"] = planCronTime
}
}

planConfigMap["scaleDown"] = scaleDownMap
}
}

planConfigJson, err := convertMaptoJsonString(planConfigMap)
Expand Down Expand Up @@ -356,6 +465,10 @@ func resourceAliCloudGpdbDbInstancePlanRead(d *schema.ResourceData, meta interfa
resumeMap["plan_cron_time"] = planCronTime
}

if planTaskStatus, ok := resumeArg["planTaskStatus"]; ok {
resumeMap["plan_task_status"] = planTaskStatus
}

resumeMaps = append(resumeMaps, resumeMap)

planConfigMap["resume"] = resumeMaps
Expand All @@ -374,6 +487,10 @@ func resourceAliCloudGpdbDbInstancePlanRead(d *schema.ResourceData, meta interfa
pauseMap["plan_cron_time"] = planCronTime
}

if planTaskStatus, ok := pauseArg["planTaskStatus"]; ok {
pauseArg["plan_task_status"] = planTaskStatus
}

pauseMaps = append(pauseMaps, pauseMap)

planConfigMap["pause"] = pauseMaps
Expand All @@ -396,6 +513,10 @@ func resourceAliCloudGpdbDbInstancePlanRead(d *schema.ResourceData, meta interfa
scaleInMap["plan_cron_time"] = planCronTime
}

if planTaskStatus, ok := scaleInArg["planTaskStatus"]; ok {
scaleInArg["plan_task_status"] = planTaskStatus
}

scaleInMaps = append(scaleInMaps, scaleInMap)

planConfigMap["scale_in"] = scaleInMaps
Expand All @@ -418,11 +539,67 @@ func resourceAliCloudGpdbDbInstancePlanRead(d *schema.ResourceData, meta interfa
scaleOutMap["plan_cron_time"] = planCronTime
}

if planTaskStatus, ok := scaleOutArg["planTaskStatus"]; ok {
scaleOutArg["plan_task_status"] = planTaskStatus
}

scaleOutMaps = append(scaleOutMaps, scaleOutMap)

planConfigMap["scale_out"] = scaleOutMaps
}

if scaleUp, ok := planConfigArg["scaleUp"]; ok {
scaleUpMaps := make([]map[string]interface{}, 0)
scaleUpArg := scaleUp.(map[string]interface{})
scaleUpMap := map[string]interface{}{}

if instanceSpec, ok := scaleUpArg["instanceSpec"]; ok {
scaleUpMap["instance_spec"] = instanceSpec
}

if executeTime, ok := scaleUpArg["executeTime"]; ok {
scaleUpMap["execute_time"] = executeTime
}

if planCronTime, ok := scaleUpArg["planCronTime"]; ok {
scaleUpMap["plan_cron_time"] = planCronTime
}

if planTaskStatus, ok := scaleUpArg["planTaskStatus"]; ok {
scaleUpArg["plan_task_status"] = planTaskStatus
}

scaleUpMaps = append(scaleUpMaps, scaleUpMap)

planConfigMap["scale_up"] = scaleUpMaps
}

if scaleDown, ok := planConfigArg["scaleDown"]; ok {
scaleDownMaps := make([]map[string]interface{}, 0)
scaleDownArg := scaleDown.(map[string]interface{})
scaleDownMap := map[string]interface{}{}

if instanceSpec, ok := scaleDownArg["instanceSpec"]; ok {
scaleDownMap["instance_spec"] = instanceSpec
}

if executeTime, ok := scaleDownArg["executeTime"]; ok {
scaleDownMap["execute_time"] = executeTime
}

if planCronTime, ok := scaleDownArg["planCronTime"]; ok {
scaleDownMap["plan_cron_time"] = planCronTime
}

if planTaskStatus, ok := scaleDownArg["planTaskStatus"]; ok {
scaleDownArg["plan_task_status"] = planTaskStatus
}

scaleDownMaps = append(scaleDownMaps, scaleDownMap)

planConfigMap["scale_down"] = scaleDownMaps
}

planConfigMaps = append(planConfigMaps, planConfigMap)

d.Set("plan_config", planConfigMaps)
Expand Down Expand Up @@ -557,6 +734,48 @@ func resourceAliCloudGpdbDbInstancePlanUpdate(d *schema.ResourceData, meta inter

planConfigMap["scaleOut"] = scaleOutMap
}

if scaleUp, ok := planConfigArg["scale_up"]; ok && len(scaleUp.([]interface{})) > 0 {
scaleUpMap := map[string]interface{}{}
for _, scaleUpList := range scaleUp.([]interface{}) {
scaleUpArg := scaleUpList.(map[string]interface{})

if instanceSpec, ok := scaleUpArg["instance_spec"]; ok {
scaleUpMap["instanceSpec"] = instanceSpec
}

if executeTime, ok := scaleUpArg["execute_time"]; ok {
scaleUpMap["executeTime"] = executeTime
}

if planCronTime, ok := scaleUpArg["plan_cron_time"]; ok {
scaleUpMap["planCronTime"] = planCronTime
}
}

planConfigMap["scaleUp"] = scaleUpMap
}

if scaleDown, ok := planConfigArg["scale_down"]; ok && len(scaleDown.([]interface{})) > 0 {
scaleDownMap := map[string]interface{}{}
for _, scaleDownList := range scaleDown.([]interface{}) {
scaleDownArg := scaleDownList.(map[string]interface{})

if instanceSpec, ok := scaleDownArg["instance_spec"]; ok {
scaleDownMap["instanceSpec"] = instanceSpec
}

if executeTime, ok := scaleDownArg["execute_time"]; ok {
scaleDownMap["executeTime"] = executeTime
}

if planCronTime, ok := scaleDownArg["plan_cron_time"]; ok {
scaleDownMap["planCronTime"] = planCronTime
}
}

planConfigMap["scaleDown"] = scaleDownMap
}
}

planConfigJson, err := convertMaptoJsonString(planConfigMap)
Expand Down
Loading

0 comments on commit b79735d

Please sign in to comment.