fivetran / terraform-provider-fivetran

Terraform Provider for Fivetran
https://fivetran.com
Apache License 2.0
40 stars 23 forks source link

comment out / remove table from fivetran_connector_schema_config for business_central, apply panic #277

Closed ann8ty closed 6 months ago

ann8ty commented 6 months ago

Describe the bug removed a table from business central schema, panic occurred on apply

To Reproduce Provide an example .tf configuration

  1. ran plan with no change 1.0.0 code
  2. no problem
  3. commented out vendor_payment_journal
  4. plan - ok
  5. apply - panic
    
    data "aws_ssm_parameter" "ssm_business_central_connector_id" {
    name = "/${local.app_env}/${local.schema_name}/businessCentralConnectorId"
    }

resource "fivetran_connector_schema_config" "business_central_schema" { connector_id = data.aws_ssm_parameter.ssm_business_central_connector_id.value schema_change_handling = local.default_schema_change_handling_is_allow_all schema { name = local.business_central_connector_name table { name = "aged_accounts_payable" enabled = "false" } table { name = "aged_accounts_receivable" enabled = "false" } table { name = "balance_sheet" enabled = "false" } table { name = "bank_account" enabled = "false" } table { name = "cash_flow_statement" enabled = "false" } table { name = "customer_payment_journal" enabled = "false" } table { name = "general_ledger_entry" enabled = "false" } table { name = "income_statement" enabled = "false" } table { name = "retained_earnings_statement" enabled = "false" }

This table causes connector to break

table {
   name    = "sales_credit_memo"
   enabled = "false"
 }
table {
  name    = "trial_balance"
  enabled = "false"
}
table {
  name    = "vendor_payment"
  enabled = "false"
}
# table {
#   name    = "vendor_payment_journal"
#   enabled = "false"
# }

} }


**Expected behavior**
no panic

**Logs & Output**
Provide terraform CLI output on `plan` | `apply`. If it is possible, please, refer to [this guide](https://developer.hashicorp.com/terraform/internals/debugging) to enable debug output.

(.venv) ~tf-fivetran-schemas $ AWS_PROFILE="xxx" terraform plan -var-file="./$ENVIROMENT_LONG_NAME/$CDK_PREFIX.tfvars" -out=.terraform/$CDK_PREFIX.out

data.external.dynamodb_tables_tagged_for_replication: Reading... data.aws_ssm_parameter.ssm_dynamodb_connector_id: Reading... data.aws_ssm_parameter.fivetran_group_id_external_id: Reading... data.aws_ssm_parameter.ssm_zendesk_sell_connector_id: Reading... data.aws_ssm_parameter.ssm_business_central_connector_id: Reading... data.aws_ssm_parameter.ssm_amplitude_connector_id: Reading... data.aws_ssm_parameter.ssm_dynamodb_connector_id: Read complete after 0s [id=/xxx-datainfra-v2/schema-v2/dynamodbConnectorId] data.aws_ssm_parameter.ssm_zendesk_sell_connector_id: Read complete after 0s [id=/xxx-datainfra-v2/schema-v2/zendeskSellConnectorId] data.aws_ssm_parameter.fivetran_group_id_external_id: Read complete after 0s [id=/xxx-datainfra-v2/schema-v2/fivetranGroupId] fivetran_connector_schema_config.zendesk_sell_schema: Refreshing state... [id=monsieur_articulate] data.aws_ssm_parameter.ssm_amplitude_connector_id: Read complete after 0s [id=/xxx-datainfra-v2/schema-v2/amplitudeConnectorId] fivetran_connector_schema_config.amplitude_schema: Refreshing state... [id=cleansing_mandatory] data.aws_ssm_parameter.ssm_business_central_connector_id: Read complete after 0s [id=/xxx-datainfra-v2/schema-v2/businessCentralConnectorId] fivetran_connector_schema_config.business_central_schema: Refreshing state... [id=xxx] data.external.dynamodb_tables_tagged_for_replication: Read complete after 9s [id=-] data.local_file.input: Reading... data.local_file.input: Read complete after 0s [id=xxx] fivetran_connector_schema_config.dynamodb_schema: Refreshing state... [id=xxx]

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: ~ update in-place

Terraform will perform the following actions:

fivetran_connector_schema_config.business_central_schema will be updated in-place

~ resource "fivetran_connector_schema_config" "business_central_schema" { ~ id = "xxx" -> (known after apply)

(2 unchanged attributes hidden)

  - schema {
      - enabled = true -> null
      - name    = "business_central_raw" -> null

      - table {
          - enabled = false -> null
          - name    = "aged_accounts_payable" -> null
        }
      - table {
          - enabled = false -> null
          - name    = "aged_accounts_receivable" -> null
        }
      - table {
          - enabled = false -> null
          - name    = "balance_sheet" -> null
        }
      - table {
          - enabled = false -> null
          - name    = "bank_account" -> null
        }
      - table {
          - enabled = false -> null
          - name    = "cash_flow_statement" -> null
        }
      - table {
          - enabled = false -> null
          - name    = "customer_payment_journal" -> null
        }
      - table {
          - enabled = false -> null
          - name    = "general_ledger_entry" -> null
        }
      - table {
          - enabled = false -> null
          - name    = "income_statement" -> null
        }
      - table {
          - enabled = false -> null
          - name    = "retained_earnings_statement" -> null
        }
      - table {
          - enabled = false -> null
          - name    = "sales_credit_memo" -> null
        }
      - table {
          - enabled = false -> null
          - name    = "trial_balance" -> null
        }
      - table {
          - enabled = false -> null
          - name    = "vendor_payment" -> null
        }
      - table {
          - enabled = false -> null
          - name    = "vendor_payment_journal" -> null
        }
    }
  + schema {
      + enabled = (known after apply)
      + name    = "business_central_raw"

      + table {
          + enabled   = false
          + name      = "aged_accounts_payable"
          + sync_mode = (known after apply)
        }
      + table {
          + enabled   = false
          + name      = "aged_accounts_receivable"
          + sync_mode = (known after apply)
        }
      + table {
          + enabled   = false
          + name      = "balance_sheet"
          + sync_mode = (known after apply)
        }
      + table {
          + enabled   = false
          + name      = "bank_account"
          + sync_mode = (known after apply)
        }
      + table {
          + enabled   = false
          + name      = "cash_flow_statement"
          + sync_mode = (known after apply)
        }
      + table {
          + enabled   = false
          + name      = "customer_payment_journal"
          + sync_mode = (known after apply)
        }
      + table {
          + enabled   = false
          + name      = "general_ledger_entry"
          + sync_mode = (known after apply)
        }
      + table {
          + enabled   = false
          + name      = "income_statement"
          + sync_mode = (known after apply)
        }
      + table {
          + enabled   = false
          + name      = "retained_earnings_statement"
          + sync_mode = (known after apply)
        }
      + table {
          + enabled   = false
          + name      = "sales_credit_memo"
          + sync_mode = (known after apply)
        }
      + table {
          + enabled   = false
          + name      = "trial_balance"
          + sync_mode = (known after apply)
        }
      + table {
          + enabled   = false
          + name      = "vendor_payment"
          + sync_mode = (known after apply)
        }
    }
}

Plan: 0 to add, 1 to change, 0 to destroy.

───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Saved the plan to: .terraform/xxx.out

To perform exactly these actions, run the following command to apply: terraform apply ".terraform/xxx.out" (.venv) ~tf-fivetran-schemas $ AWS_PROFILE="xxx" terraform apply .terraform/$CDK_PREFIX.out

fivetran_connector_schema_config.business_central_schema: Modifying... [id=xxx] ╷ │ Error: Provider produced inconsistent result after apply │ │ When applying changes to fivetran_connector_schema_config.business_central_schema, provider "provider[\"registry.terraform.io/fivetran/fivetran\"]" produced an unexpected new value: .schema: planned set element │ cty.ObjectVal(map[string]cty.Value{"enabled":cty.UnknownVal(cty.Bool), "name":cty.StringVal("business_central_raw"), │ "table":cty.SetVal([]cty.Value{cty.ObjectVal(map[string]cty.Value{"column":cty.SetValEmpty(cty.Object(map[string]cty.Type{"enabled":cty.Bool, "hashed":cty.Bool, "name":cty.String})), "enabled":cty.False, │ "name":cty.StringVal("aged_accounts_payable"), "sync_mode":cty.UnknownVal(cty.String)}), cty.ObjectVal(map[string]cty.Value{"column":cty.SetValEmpty(cty.Object(map[string]cty.Type{"enabled":cty.Bool, "hashed":cty.Bool, │ "name":cty.String})), "enabled":cty.False, "name":cty.StringVal("aged_accounts_receivable"), "sync_mode":cty.UnknownVal(cty.String)}), │ cty.ObjectVal(map[string]cty.Value{"column":cty.SetValEmpty(cty.Object(map[string]cty.Type{"enabled":cty.Bool, "hashed":cty.Bool, "name":cty.String})), "enabled":cty.False, "name":cty.StringVal("balance_sheet"), │ "sync_mode":cty.UnknownVal(cty.String)}), cty.ObjectVal(map[string]cty.Value{"column":cty.SetValEmpty(cty.Object(map[string]cty.Type{"enabled":cty.Bool, "hashed":cty.Bool, "name":cty.String})), "enabled":cty.False, │ "name":cty.StringVal("bank_account"), "sync_mode":cty.UnknownVal(cty.String)}), cty.ObjectVal(map[string]cty.Value{"column":cty.SetValEmpty(cty.Object(map[string]cty.Type{"enabled":cty.Bool, "hashed":cty.Bool, "name":cty.String})), │ "enabled":cty.False, "name":cty.StringVal("cash_flow_statement"), "sync_mode":cty.UnknownVal(cty.String)}), cty.ObjectVal(map[string]cty.Value{"column":cty.SetValEmpty(cty.Object(map[string]cty.Type{"enabled":cty.Bool, │ "hashed":cty.Bool, "name":cty.String})), "enabled":cty.False, "name":cty.StringVal("customer_payment_journal"), "sync_mode":cty.UnknownVal(cty.String)}), │ cty.ObjectVal(map[string]cty.Value{"column":cty.SetValEmpty(cty.Object(map[string]cty.Type{"enabled":cty.Bool, "hashed":cty.Bool, "name":cty.String})), "enabled":cty.False, "name":cty.StringVal("general_ledger_entry"), │ "sync_mode":cty.UnknownVal(cty.String)}), cty.ObjectVal(map[string]cty.Value{"column":cty.SetValEmpty(cty.Object(map[string]cty.Type{"enabled":cty.Bool, "hashed":cty.Bool, "name":cty.String})), "enabled":cty.False, │ "name":cty.StringVal("income_statement"), "sync_mode":cty.UnknownVal(cty.String)}), cty.ObjectVal(map[string]cty.Value{"column":cty.SetValEmpty(cty.Object(map[string]cty.Type{"enabled":cty.Bool, "hashed":cty.Bool, │ "name":cty.String})), "enabled":cty.False, "name":cty.StringVal("retained_earnings_statement"), "sync_mode":cty.UnknownVal(cty.String)}), │ cty.ObjectVal(map[string]cty.Value{"column":cty.SetValEmpty(cty.Object(map[string]cty.Type{"enabled":cty.Bool, "hashed":cty.Bool, "name":cty.String})), "enabled":cty.False, "name":cty.StringVal("sales_credit_memo"), │ "sync_mode":cty.UnknownVal(cty.String)}), cty.ObjectVal(map[string]cty.Value{"column":cty.SetValEmpty(cty.Object(map[string]cty.Type{"enabled":cty.Bool, "hashed":cty.Bool, "name":cty.String})), "enabled":cty.False, │ "name":cty.StringVal("trial_balance"), "sync_mode":cty.UnknownVal(cty.String)}), cty.ObjectVal(map[string]cty.Value{"column":cty.SetValEmpty(cty.Object(map[string]cty.Type{"enabled":cty.Bool, "hashed":cty.Bool, "name":cty.String})), │ "enabled":cty.False, "name":cty.StringVal("vendor_payment"), "sync_mode":cty.UnknownVal(cty.String)})})}) does not correlate with any element in actual. │ │ This is a bug in the provider, which should be reported in the provider's own issue tracker.


**Plugin version:**
v1.1.16

**Additional context**
been trying to upgrade from 1.0.0

attempt to revert change (comment table back in)

terraform apply .terraform/$CDK_PREFIX.out

fivetran_connector_schema_config.business_central_schema: Modifying... [id=xxx] ╷ │ Error: Unable to Create Connector Schema Resource. │ │ with fivetran_connector_schema_config.business_central_schema, │ on schema-business-central.tf line 5, in resource "fivetran_connector_schema_config" "business_central_schema": │ 5: resource "fivetran_connector_schema_config" "business_central_schema" { │ │ Error wile applying schema config patch. error while patching schema business_central_raw: │ attempt to patch locked table vendor_payment; Please report this issue to the provider developers.

ann8ty commented 6 months ago

appears fixed in 1.1.17!