Skip to content

Iceberg Table#16522

Merged
c2thorn merged 5 commits intoGoogleCloudPlatform:mainfrom
rambleraptor:table_resource
Mar 10, 2026
Merged

Iceberg Table#16522
c2thorn merged 5 commits intoGoogleCloudPlatform:mainfrom
rambleraptor:table_resource

Conversation

@rambleraptor
Copy link
Copy Markdown
Contributor

@rambleraptor rambleraptor commented Feb 24, 2026

Release Note Template for Downstream PRs (will be copied)

See Write release notes for guidance.

`google_biglake_iceberg_table`

@modular-magician
Copy link
Copy Markdown
Collaborator

Hi there, I'm the Modular magician. I've detected the following information about your changes:

Diff report

Your PR generated some diffs in downstreams - here they are.

google provider: Diff ( 9 files changed, 2709 insertions(+), 3 deletions(-))
google-beta provider: Diff ( 9 files changed, 2709 insertions(+), 3 deletions(-))
terraform-google-conversion: Diff ( 3 files changed, 793 insertions(+))
Open in Cloud Shell: Diff ( 8 files changed, 274 insertions(+))

Missing test report

Your PR includes resource fields which are not covered by any test.

Resource: google_biglake_iceberg_table (7 total tests)
Please add an acceptance test which includes these fields. The test should include the following:

resource "google_biglake_iceberg_table" "primary" {
  location = # value needed
  partition_spec {
    fields {
      name      = # value needed
      source_id = # value needed
      transform = # value needed
    }
  }
  schema {
    fields {
      doc = # value needed
    }
    identifier_field_ids = # value needed
  }
}

@modular-magician
Copy link
Copy Markdown
Collaborator

Hi there, I'm the Modular magician. I've detected the following information about your changes:

Diff report

Your PR generated some diffs in downstreams - here they are.

google provider: Diff ( 11 files changed, 2792 insertions(+), 4 deletions(-))
google-beta provider: Diff ( 11 files changed, 2792 insertions(+), 4 deletions(-))
terraform-google-conversion: Diff ( 3 files changed, 793 insertions(+))
Open in Cloud Shell: Diff ( 8 files changed, 284 insertions(+))

@modular-magician
Copy link
Copy Markdown
Collaborator

Tests analytics

Total tests: 6087
Passed tests: 5444
Skipped tests: 636
Affected tests: 7

Click here to see the affected service packages

All service packages are affected

Action taken

Found 7 affected test(s) by replaying old test recordings. Starting RECORDING based on the most recent commit. Click here to see the affected tests
  • TestAccBiglakeIcebergIcebergTableIamBindingGenerated
  • TestAccBiglakeIcebergIcebergTableIamMemberGenerated
  • TestAccBiglakeIcebergIcebergTableIamPolicyGenerated
  • TestAccBiglakeIcebergIcebergTable_biglakeIcebergTableBasicExample
  • TestAccBiglakeIcebergIcebergTable_biglakeIcebergTableUpdateExample
  • TestAccGKEHubFeatureMembership_gkehubFeatureAcmUpdate
  • TestAccGKEHubFeatureMembership_gkehubFeaturePolicyController

Get to know how VCR tests work

@modular-magician
Copy link
Copy Markdown
Collaborator

🟢 Tests passed during RECORDING mode:
TestAccBiglakeIcebergIcebergTableIamBindingGenerated [Debug log]
TestAccBiglakeIcebergIcebergTableIamMemberGenerated [Debug log]
TestAccBiglakeIcebergIcebergTableIamPolicyGenerated [Debug log]
TestAccBiglakeIcebergIcebergTable_biglakeIcebergTableBasicExample [Debug log]
TestAccBiglakeIcebergIcebergTable_biglakeIcebergTableUpdateExample [Debug log]
TestAccGKEHubFeatureMembership_gkehubFeatureAcmUpdate [Debug log]

🟢 No issues found for passed tests after REPLAYING rerun.


🔴 Tests failed during RECORDING mode:
TestAccGKEHubFeatureMembership_gkehubFeaturePolicyController [Error message] [Debug log]

🔴 Errors occurred during RECORDING mode. Please fix them to complete your PR.

View the build log or the debug log for each test

@rambleraptor rambleraptor marked this pull request as ready for review February 26, 2026 18:22
@github-actions github-actions bot requested a review from c2thorn February 26, 2026 18:23
@github-actions
Copy link
Copy Markdown

Googlers: For automatic test runs see go/terraform-auto-test-runs.

@c2thorn, a repository maintainer, has been assigned to review your changes. If you have not received review feedback within 2 business days, please leave a comment on this PR asking them to take a look.

You can help make sure that review is quick by doing a self-review and by running impacted tests locally.

Copy link
Copy Markdown
Member

@c2thorn c2thorn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey @rambleraptor! hope you are doing well.
Added some initial comments.

This resource has a lot of custom code! Can you give some more comments or explanation as to what makes the resource so abnormal to need them? Is this just common for biglakeiceberg?

Comment thread mmv1/products/biglakeiceberg/IcebergTable.yaml Outdated
Comment thread mmv1/products/biglakeiceberg/IcebergTable.yaml
Comment thread mmv1/api/metadata/field.go Outdated
if part != google.Underscore(apiPart) {
return false
}
if strings.Contains(apiPart, "-") {
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@melinath can you take a quick peek at this change here

Comment thread mmv1/products/biglakeiceberg/IcebergTable.yaml Outdated
Comment thread mmv1/templates/terraform/constants/biglake_iceberg_table.go.tmpl
@rambleraptor
Copy link
Copy Markdown
Contributor Author

rambleraptor commented Mar 2, 2026

@c2thorn I should've put my usual disclaimer on this PR!

The BigLake Iceberg resources have to conform to the Apache Iceberg REST Catalog Spec. This isn't a Google API standard at all. Our team has no control over this spec, but we have to follow it exactly or else we break users.

This ultimately means that there's a ton of custom code involved since MMv1 has a lot of Google assumptions baked in. It's really bit us on the last few Iceberg resources...

(background: The REST Catalog spec exists so that OSS engines like Apache Spark can talk to a variety of REST Catalogs - BigQuery, Databricks, Snowflake, other major companies - through a standard interface)

@github-actions github-actions bot requested a review from c2thorn March 2, 2026 22:48
@rambleraptor
Copy link
Copy Markdown
Contributor Author

@c2thorn changes made!

@modular-magician
Copy link
Copy Markdown
Collaborator

Hi there, I'm the Modular magician. I've detected the following information about your changes:

Diff report

Your PR generated some diffs in downstreams - here they are.

google provider: Diff ( 12 files changed, 2941 insertions(+), 4 deletions(-))
google-beta provider: Diff ( 12 files changed, 2941 insertions(+), 4 deletions(-))
terraform-google-conversion: Diff ( 3 files changed, 793 insertions(+))
Open in Cloud Shell: Diff ( 8 files changed, 284 insertions(+))

@modular-magician
Copy link
Copy Markdown
Collaborator

Non-exercised tests

🔴 Tests were added that are skipped in VCR:

  • TestAccBiglakeIcebergIcebergTable_biglakeIcebergTableUpdateExample

Tests analytics

Total tests: 6113
Passed tests: 5464
Skipped tests: 639
Affected tests: 10

Click here to see the affected service packages

All service packages are affected

Action taken

Found 10 affected test(s) by replaying old test recordings. Starting RECORDING based on the most recent commit. Click here to see the affected tests
  • TestAccBiglakeIcebergIcebergTableIamBindingGenerated
  • TestAccBiglakeIcebergIcebergTableIamMemberGenerated
  • TestAccBiglakeIcebergIcebergTableIamPolicyGenerated
  • TestAccBiglakeIcebergIcebergTable_biglakeIcebergTableBasicExample
  • TestAccBiglakeIcebergIcebergTable_update
  • TestAccGKEHubFeatureMembership_gkehubFeatureAcmUpdate
  • TestAccOracleDatabaseCloudExadataInfrastructure_basic
  • TestAccOracleDatabaseCloudVmClusters_basic
  • TestAccOracleDatabaseDbNodes_basic
  • TestAccOracleDatabaseDbServers_basic

Get to know how VCR tests work

@modular-magician
Copy link
Copy Markdown
Collaborator

🟢 Tests passed during RECORDING mode:
TestAccBiglakeIcebergIcebergTableIamBindingGenerated [Debug log]
TestAccBiglakeIcebergIcebergTableIamMemberGenerated [Debug log]
TestAccBiglakeIcebergIcebergTableIamPolicyGenerated [Debug log]
TestAccBiglakeIcebergIcebergTable_biglakeIcebergTableBasicExample [Debug log]
TestAccBiglakeIcebergIcebergTable_update [Debug log]
TestAccGKEHubFeatureMembership_gkehubFeatureAcmUpdate [Debug log]

🟢 No issues found for passed tests after REPLAYING rerun.


🔴 Tests failed during RECORDING mode:
TestAccOracleDatabaseCloudExadataInfrastructure_basic [Error message] [Debug log]
TestAccOracleDatabaseCloudVmClusters_basic [Error message] [Debug log]
TestAccOracleDatabaseDbNodes_basic [Error message] [Debug log]
TestAccOracleDatabaseDbServers_basic [Error message] [Debug log]

🔴 Errors occurred during RECORDING mode. Please fix them to complete your PR.

View the build log or the debug log for each test

@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 5, 2026

@c2thorn This PR has been waiting for review for 3 weekdays. Please take a look! Use the label disable-review-reminders to disable these notifications.

@c2thorn
Copy link
Copy Markdown
Member

c2thorn commented Mar 5, 2026

/gcbrun

@modular-magician
Copy link
Copy Markdown
Collaborator

Hi there, I'm the Modular magician. I've detected the following information about your changes:

Diff report

Your PR generated some diffs in downstreams - here they are.

google provider: Diff ( 12 files changed, 2941 insertions(+), 4 deletions(-))
google-beta provider: Diff ( 12 files changed, 2941 insertions(+), 4 deletions(-))
terraform-google-conversion: Diff ( 3 files changed, 793 insertions(+))
Open in Cloud Shell: Diff ( 8 files changed, 284 insertions(+))

@c2thorn
Copy link
Copy Markdown
Member

c2thorn commented Mar 6, 2026

I think credentials got rotated during the build :[
I'm trying to get a fresh run to avoid transient VCR test failures

@c2thorn
Copy link
Copy Markdown
Member

c2thorn commented Mar 6, 2026

/gcbrun

@modular-magician
Copy link
Copy Markdown
Collaborator

Hi there, I'm the Modular magician. I've detected the following information about your changes:

Diff report

Your PR generated some diffs in downstreams - here they are.

google provider: Diff ( 12 files changed, 2941 insertions(+), 4 deletions(-))
google-beta provider: Diff ( 12 files changed, 2941 insertions(+), 4 deletions(-))
terraform-google-conversion: Diff ( 3 files changed, 793 insertions(+))
Open in Cloud Shell: Diff ( 8 files changed, 284 insertions(+))

@modular-magician
Copy link
Copy Markdown
Collaborator

Non-exercised tests

🔴 Tests were added that are skipped in VCR:

  • TestAccBiglakeIcebergIcebergTable_biglakeIcebergTableUpdateExample

Tests analytics

Total tests: 6140
Passed tests: 5502
Skipped tests: 637
Affected tests: 1

Click here to see the affected service packages

All service packages are affected

Action taken

Found 1 affected test(s) by replaying old test recordings. Starting RECORDING based on the most recent commit. Click here to see the affected tests
  • TestAccGKEHubFeatureMembership_gkehubFeatureAcmUpdate

Get to know how VCR tests work

@modular-magician
Copy link
Copy Markdown
Collaborator

🟢 Tests passed during RECORDING mode:
TestAccGKEHubFeatureMembership_gkehubFeatureAcmUpdate [Debug log]

🟢 No issues found for passed tests after REPLAYING rerun.


🟢 All tests passed!

View the build log or the debug log for each test

Copy link
Copy Markdown
Member

@c2thorn c2thorn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM after reviewing how existing iceberg implementations.

@@ -0,0 +1,12 @@
var icebergTableIgnoredProperties = map[string]bool{
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If I were reviewing the other IcebergNamespace resource initially, maybe I would have pushed for separating out user-defined properties and server-defined properties into two separate fields. It's fine to suppress it this way in SDKv2 implementation, but it causes a data inconsistency that the newer Plugin Framework SDK doesn't like.

If this resource were ever to be migrated over to PF, we'd have to split this out.

considering we don't know when that would happen, and that IcebergNamespace was done very similarly, I'm opting to leave this as is.

@c2thorn
Copy link
Copy Markdown
Member

c2thorn commented Mar 6, 2026

updated release note

Copy link
Copy Markdown
Member

@c2thorn c2thorn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks like there are still some unit test failures related to the metadata:

--- FAIL: TestValidateResourceMetadata (0.61s)
    resource_inventory_test.go:312: resource_biglake_iceberg_table_generated_meta.yaml: partition_spec.fields.name: `field` must be omitted because it can be inferred from `api_field`
    resource_inventory_test.go:312: resource_biglake_iceberg_table_generated_meta.yaml: partition_spec.fields.transform: `field` must be omitted because it can be inferred from `api_field`
    resource_inventory_test.go:312: resource_biglake_iceberg_table_generated_meta.yaml: schema.schema_id: `field` must be omitted because it can be inferred from `api_field`
    resource_inventory_test.go:312: resource_biglake_iceberg_catalog_generated_meta.yaml: catalog_type: `field` must be omitted because it can be inferred from `api_field`
    resource_inventory_test.go:312: resource_biglake_iceberg_catalog_generated_meta.yaml: create_time: `field` must be omitted because it can be inferred from `api_field`
    resource_inventory_test.go:312: resource_biglake_iceberg_catalog_generated_meta.yaml: credential_mode: `field` must be omitted because it can be inferred from `api_field`
    resource_inventory_test.go:312: resource_biglake_iceberg_catalog_generated_meta.yaml: default_location: `field` must be omitted because it can be inferred from `api_field`
    resource_inventory_test.go:312: resource_biglake_iceberg_catalog_generated_meta.yaml: storage_regions: `field` must be omitted because it can be inferred from `api_field`
    resource_inventory_test.go:312: resource_biglake_iceberg_catalog_generated_meta.yaml: update_time: `field` must be omitted because it can be inferred from `api_field`

Copy link
Copy Markdown
Member

@c2thorn c2thorn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

unit test checks need to pass

@github-actions github-actions bot requested a review from c2thorn March 9, 2026 22:11
@modular-magician
Copy link
Copy Markdown
Collaborator

Hi there, I'm the Modular magician. I've detected the following information about your changes:

Diff report

Your PR generated some diffs in downstreams - here they are.

google provider: Diff ( 11 files changed, 2929 insertions(+), 4 deletions(-))
google-beta provider: Diff ( 11 files changed, 2929 insertions(+), 4 deletions(-))
terraform-google-conversion: Diff ( 3 files changed, 793 insertions(+))
Open in Cloud Shell: Diff ( 8 files changed, 284 insertions(+))

@rambleraptor
Copy link
Copy Markdown
Contributor Author

@c2thorn changes made! It's looking like part of this is a mmv1 bug.

@modular-magician
Copy link
Copy Markdown
Collaborator

Hi there, I'm the Modular magician. I've detected the following information about your changes:

Diff report

Your PR generated some diffs in downstreams - here they are.

google provider: Diff ( 12 files changed, 2929 insertions(+), 6 deletions(-))
google-beta provider: Diff ( 12 files changed, 2929 insertions(+), 6 deletions(-))
terraform-google-conversion: Diff ( 3 files changed, 793 insertions(+))
Open in Cloud Shell: Diff ( 8 files changed, 284 insertions(+))

@modular-magician
Copy link
Copy Markdown
Collaborator

Non-exercised tests

🔴 Tests were added that are skipped in VCR:

  • TestAccBiglakeIcebergIcebergTable_biglakeIcebergTableUpdateExample

Tests analytics

Total tests: 6141
Passed tests: 5500
Skipped tests: 639
Affected tests: 2

Click here to see the affected service packages

All service packages are affected

Action taken

Found 2 affected test(s) by replaying old test recordings. Starting RECORDING based on the most recent commit. Click here to see the affected tests
  • TestAccDataformConfig_dataformConfigWithKmsKeyExample
  • TestAccGKEHubFeatureMembership_gkehubFeatureAcmUpdate

Get to know how VCR tests work

@modular-magician
Copy link
Copy Markdown
Collaborator

🟢 Tests passed during RECORDING mode:
TestAccDataformConfig_dataformConfigWithKmsKeyExample [Debug log]
TestAccGKEHubFeatureMembership_gkehubFeatureAcmUpdate [Debug log]

🔴 Tests failed when rerunning REPLAYING mode:
TestAccDataformConfig_dataformConfigWithKmsKeyExample [Error message] [Debug log]

Tests failed due to non-determinism or randomness when the VCR replayed the response after the HTTP request was made.

Please fix these to complete your PR. If you believe these test failures to be incorrect or unrelated to your change, or if you have any questions, please raise the concern with your reviewer.


🟢 All tests passed!

View the build log or the debug log for each test

@modular-magician
Copy link
Copy Markdown
Collaborator

Non-exercised tests

🔴 Tests were added that are skipped in VCR:

  • TestAccBiglakeIcebergIcebergTable_biglakeIcebergTableUpdateExample

Tests analytics

Total tests: 6141
Passed tests: 5500
Skipped tests: 639
Affected tests: 2

Click here to see the affected service packages

All service packages are affected

Action taken

Found 2 affected test(s) by replaying old test recordings. Starting RECORDING based on the most recent commit. Click here to see the affected tests
  • TestAccDataformConfig_dataformConfigWithKmsKeyExample
  • TestAccGKEHubFeatureMembership_gkehubFeatureAcmUpdate

Get to know how VCR tests work

@modular-magician
Copy link
Copy Markdown
Collaborator

🟢 Tests passed during RECORDING mode:
TestAccDataformConfig_dataformConfigWithKmsKeyExample [Debug log]
TestAccGKEHubFeatureMembership_gkehubFeatureAcmUpdate [Debug log]

🔴 Tests failed when rerunning REPLAYING mode:
TestAccDataformConfig_dataformConfigWithKmsKeyExample [Error message] [Debug log]

Tests failed due to non-determinism or randomness when the VCR replayed the response after the HTTP request was made.

Please fix these to complete your PR. If you believe these test failures to be incorrect or unrelated to your change, or if you have any questions, please raise the concern with your reviewer.


🟢 All tests passed!

View the build log or the debug log for each test

Copy link
Copy Markdown
Member

@c2thorn c2thorn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

tmp = regexp.MustCompile(`([a-z\d])([A-Z])`).ReplaceAllString(tmp, "${1}_${2}")
tmp = strings.Replace(tmp, "-", "_", 1)
tmp = strings.Replace(tmp, ".", "_", 1)
tmp = strings.ReplaceAll(tmp, "-", "_")
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks like this didn't have any non-iceberg side effects

@c2thorn c2thorn added this pull request to the merge queue Mar 10, 2026
Merged via the queue into GoogleCloudPlatform:main with commit cfd244c Mar 10, 2026
23 of 24 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants