func resourceAlibabacloudStackDmsEnterpriseInstanceUpdate()

in alibabacloudstack/resource_apsarastack_dmsenterprise_instance.go [262:362]


func resourceAlibabacloudStackDmsEnterpriseInstanceUpdate(d *schema.ResourceData, meta interface{}) error {
	client := meta.(*connectivity.AlibabacloudStackClient)
	parts, err := ParseResourceId(d.Id(), 2)
	if err != nil {
		return errmsgs.WrapError(err)
	}
	update := false
	request := map[string]interface{}{
		"Host": parts[0],
		"Port": parts[1],
	}
	if !d.IsNewResource() && d.HasChange("database_password") {
		update = true
	}
	request["DatabasePassword"] = d.Get("database_password")
	if !d.IsNewResource() && d.HasChange("database_user") {
		update = true
	}
	request["DatabaseUser"] = d.Get("database_user")
	if d.HasChange("dba_id") {
		update = true
	}
	request["DbaId"] = d.Get("dba_id")
	if !d.IsNewResource() && d.HasChange("env_type") {
		update = true
	}
	request["EnvType"] = d.Get("env_type")
	if !d.IsNewResource() && d.HasChange("export_timeout") {
		update = true
	}
	request["ExportTimeout"] = d.Get("export_timeout")
	if d.HasChange("instance_id") {
		update = true
	}
	request["InstanceId"] = d.Get("instance_id")
	if !d.IsNewResource() && d.HasChanges("instance_name", "instance_alias") {
		update = true
		request["InstanceAlias"] = connectivity.GetResourceData(d, "instance_name", "instance_alias").(string)
		if err := errmsgs.CheckEmpty(request["InstanceAlias"], schema.TypeString, "instance_name", "instance_alias"); err != nil {
			return errmsgs.WrapError(err)
		}
	}
	if !d.IsNewResource() && d.HasChange("instance_source") {
		update = true
	}
	request["InstanceSource"] = d.Get("instance_source")
	if !d.IsNewResource() && d.HasChange("instance_type") {
		update = true
	}
	request["InstanceType"] = d.Get("instance_type")
	if !d.IsNewResource() && d.HasChange("query_timeout") {
		update = true
	}
	request["QueryTimeout"] = d.Get("query_timeout")
	if d.HasChange("safe_rule_id") {
		update = true
	}
	request["SafeRuleId"] = d.Get("safe_rule_id")
	if !d.IsNewResource() && d.HasChange("data_link_name") {
		update = true
		request["DataLinkName"] = d.Get("data_link_name")
	}
	if !d.IsNewResource() && d.HasChange("ddl_online") {
		update = true
		request["DdlOnline"] = d.Get("ddl_online")
	}
	if !d.IsNewResource() && d.HasChange("ecs_instance_id") {
		update = true
		request["EcsInstanceId"] = d.Get("ecs_instance_id")
	}
	if !d.IsNewResource() && d.HasChange("ecs_region") {
		update = true
		request["EcsRegion"] = d.Get("ecs_region")
	}
	if !d.IsNewResource() && d.HasChange("sid") {
		update = true
		request["Sid"] = d.Get("sid")
	}
	if !d.IsNewResource() && d.HasChange("use_dsql") {
		update = true
		request["UseDsql"] = d.Get("use_dsql")
	}
	if !d.IsNewResource() && d.HasChange("vpc_id") {
		update = true
		request["VpcId"] = d.Get("vpc_id")
	}
	if update {
		if _, ok := d.GetOkExists("skip_test"); ok {
			request["SkipTest"] = d.Get("skip_test")
		}
		if _, ok := d.GetOk("tid"); ok {
			request["Tid"] = d.Get("tid")
		}
		action := "UpdateInstance"
		_, err = client.DoTeaRequest("POST", "dms-enterprise", "2018-11-01", action, "", nil, nil, request)
		if err != nil {
			return err
		}
	}
	return nil
}