-
Notifications
You must be signed in to change notification settings - Fork 396
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Feature] Notification Destination resource #3820
[Feature] Notification Destination resource #3820
Conversation
s.SchemaPath("config", "slack").SetRequiredWith([]string{"config.0.slack.0.url"}) | ||
s.SchemaPath("config", "pagerduty").SetRequiredWith([]string{"config.0.pagerduty.0.integration_key"}) | ||
s.SchemaPath("config", "microsoft_teams").SetRequiredWith([]string{"config.0.microsoft_teams.0.url"}) | ||
s.SchemaPath("config", "generic_webhook").SetRequiredWith([]string{"config.0.generic_webhook.0.url"}) | ||
s.SchemaPath("config", "email").SetRequiredWith([]string{"config.0.email.0.addresses"}) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
should we talk with the corresponding teams to mark URL and some other objects as required (remove omitempty
)?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
API doesn't return sensitive values, so we need to handle it similarly to other resources (like, MLflow webhook or connections)
For testing, you just need to provide a base URL; I was just using |
Co-authored-by: vuong-nguyen <44292934+nkvuong@users.noreply.github.com>
…ub.com:databricks/terraform-provider-databricks into divyansh_notification_destinations
|
if detectConfigTypeChange(d) { | ||
err := Delete(ctx, d, w) | ||
if err != nil { | ||
return err | ||
} | ||
return Create(ctx, d, w) | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
According to API it should be possible to update it inline: https://docs.databricks.com/api/workspace/notificationdestinations/update - the main problem is that if we do delete/create, then ID of destination will change and this may break other integrations
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That is true, but the update API does not allow to change the type of notification destination. I created an integration test TestAccConfigTypeChange
for this exact puspose. If we do not delete and create a new resouce and try to update it instead, the update API response is bad request
and states that you can't change config types using PATCH call
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We need to raise an internal ticket to update the OpenAPI spec to reflect this - right now, it's not documented. But it's better first to confirm that this is intended behavior.
Instead of implicitly recreating the resource, we may need to mark these blocks as force_new
, so Terraform will delete/create automatically. We need to do this because Terraform needs to know that id
is changing, and this change is propagated to the dependent resources. Otherwise, they could be broken after such an update.
We also need to document that behavior.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- which team should I contact for this.
2) I will try to make fields force new rather than explicitly doing it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also, is raising the ticket a blocking change for this PR?
…ub.com:databricks/terraform-provider-databricks into divyansh_notification_destinations
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code looks good, also tested it myself. Just few small comments
…ub.com:databricks/terraform-provider-databricks into divyansh_notification_destinations
### New Features and Improvements * Added support for `cloudflare_api_token` in `databricks_storage_credential` resource ([#3835](#3835)). * Add `active` attribute to `databricks_user` data source ([#3733](#3733)). * Add `workspace_path` attribute to `databricks_notebook` resource and data source ([#3885](#3885)). * Mark attributes as sensitive in `databricks_mlflow_webhook` ([#3825](#3825)). * Added notification destination resource ([#3820](#3820)). ### Bug Fixes * Automatically assign `IS_OWNER` permission to sql warehouse if not specified ([#3829](#3829)). * Corrected kms arn format in `data_aws_unity_catalog_policy` ([#3823](#3823)). * Fix crash when destroying `databricks_compliance_security_profile_workspace_setting` ([#3883](#3883)). * Fixed read method of `databricks_entitlements` resource ([#3858](#3858)). * Retry cluster update on "INVALID_STATE" ([#3890](#3890)). * Save Pipeline resource to state in addition to spec ([#3869](#3869)). * Tolerate `databricks_workspace_conf` deletion failures ([#3737](#3737)). * Update Go SDK ([#3826](#3826)). * cluster key update for `databricks_sql_table` should not force new ([#3824](#3824)). * reading `databricks_metastore_assignment` when importing resource ([#3827](#3827)). ### Documentation * Add troubleshooting instructions for `databricks OAuth is not supported for this host` error ([#3815](#3815)). * Clarify setting of permissions for workspace objects ([#3884](#3884)). * Document missing task attributes in `databricks_job` resource ([#3817](#3817)). * Fixed documentation for `databricks_schemas` data source and `databricks_metastore_assignment` resource ([#3851](#3851)). * clarified `spot_bid_max_price` option for `databricks_cluster` ([#3830](#3830)). * marked `databricks_sql_dashboard` as legacy ([#3836](#3836)). ### Internal Changes * Refactor exporter: split huge files into smaller ones ([#3870](#3870)). * Refactored `client.ClientForHost` to use Go SDK method ([#3735](#3735)). * Revert "Rewriting DLT pipelines using SDK" ([#3838](#3838)). * Rewrite DLT pipelines using SDK ([#3839](#3839)). * Rewriting DLT pipelines using SDK ([#3792](#3792)). * Update Go SDK ([#3808](#3808)). * refactored `databricks_mws_permission_assignment` to Go SDK ([#3831](#3831)). ### Dependency Updates * Bump databricks-sdk-go to 0.44.0 ([#3896](#3896)). * Bump github.com/zclconf/go-cty from 1.14.4 to 1.15.0 ([#3775](#3775)). ### Exporter * Add retry on "Operation timed out" error ([#3897](#3897)). * Add support for Vector Search assets ([#3828](#3828)). * Add support for `databricks_notification_destination` ([#3861](#3861)). * Add support for `databricks_online_table` ([#3816](#3816)). * Don't export model serving endpoints with foundational models ([#3845](#3845)). * Fix generation of `autotermination_minutes = 0` ([#3881](#3881)). * Generate `databricks_workspace_binding` instead of legacy `databricks_catalog_workspace_binding` ([#3812](#3812)). * Ignore DLT pipelines deployed via DABs ([#3857](#3857)). * Improve exporting of `databricks_model_serving` ([#3821](#3821)). * Refactoring: remove legacy code ([#3864](#3864)).
### New Features and Improvements * Added `databricks_notification_destination` resource ([#3820](#3820)). * Added support for `cloudflare_api_token` in `databricks_storage_credential` resource ([#3835](#3835)). * Add `active` attribute to `databricks_user` data source ([#3733](#3733)). * Add `workspace_path` attribute to `databricks_notebook` resource and data source ([#3885](#3885)). * Mark attributes as sensitive in `databricks_mlflow_webhook` ([#3825](#3825)). ### Bug Fixes * Automatically assign `IS_OWNER` permission to sql warehouse if not specified ([#3829](#3829)). * Corrected kms arn format in `data_aws_unity_catalog_policy` ([#3823](#3823)). * Fix crash when destroying `databricks_compliance_security_profile_workspace_setting` ([#3883](#3883)). * Fixed read method of `databricks_entitlements` resource ([#3858](#3858)). * Retry cluster update on "INVALID_STATE" ([#3890](#3890)). * Save Pipeline resource to state in addition to spec ([#3869](#3869)). * Tolerate `databricks_workspace_conf` deletion failures ([#3737](#3737)). * Update Go SDK ([#3826](#3826)). * cluster key update for `databricks_sql_table` should not force new ([#3824](#3824)). * reading `databricks_metastore_assignment` when importing resource ([#3827](#3827)). ### Documentation * Add troubleshooting instructions for `databricks OAuth is not supported for this host` error ([#3815](#3815)). * Clarify setting of permissions for workspace objects ([#3884](#3884)). * Document missing task attributes in `databricks_job` resource ([#3817](#3817)). * Fixed documentation for `databricks_schemas` data source and `databricks_metastore_assignment` resource ([#3851](#3851)). * clarified `spot_bid_max_price` option for `databricks_cluster` ([#3830](#3830)). * marked `databricks_sql_dashboard` as legacy ([#3836](#3836)). ### Internal Changes * Refactor exporter: split huge files into smaller ones ([#3870](#3870)). * Refactored `client.ClientForHost` to use Go SDK method ([#3735](#3735)). * Revert "Rewriting DLT pipelines using SDK" ([#3838](#3838)). * Rewrite DLT pipelines using SDK ([#3839](#3839)). * Rewriting DLT pipelines using SDK ([#3792](#3792)). * Update Go SDK ([#3808](#3808)). * refactored `databricks_mws_permission_assignment` to Go SDK ([#3831](#3831)). ### Dependency Updates * Bump databricks-sdk-go to 0.44.0 ([#3896](#3896)). * Bump github.com/zclconf/go-cty from 1.14.4 to 1.15.0 ([#3775](#3775)). ### Exporter * Add retry on "Operation timed out" error ([#3897](#3897)). * Add support for Vector Search assets ([#3828](#3828)). * Add support for `databricks_notification_destination` ([#3861](#3861)). * Add support for `databricks_online_table` ([#3816](#3816)). * Don't export model serving endpoints with foundational models ([#3845](#3845)). * Fix generation of `autotermination_minutes = 0` ([#3881](#3881)). * Generate `databricks_workspace_binding` instead of legacy `databricks_catalog_workspace_binding` ([#3812](#3812)). * Ignore DLT pipelines deployed via DABs ([#3857](#3857)). * Improve exporting of `databricks_model_serving` ([#3821](#3821)). * Refactoring: remove legacy code ([#3864](#3864)).
### New Features and Improvements * Added `databricks_notification_destination` resource ([#3820](#3820)). * Added support for `cloudflare_api_token` in `databricks_storage_credential` resource ([#3835](#3835)). * Add `active` attribute to `databricks_user` data source ([#3733](#3733)). * Add `workspace_path` attribute to `databricks_notebook` resource and data source ([#3885](#3885)). * Mark attributes as sensitive in `databricks_mlflow_webhook` ([#3825](#3825)). ### Bug Fixes * Automatically assign `IS_OWNER` permission to sql warehouse if not specified ([#3829](#3829)). * Corrected kms arn format in `data_aws_unity_catalog_policy` ([#3823](#3823)). * Fix crash when destroying `databricks_compliance_security_profile_workspace_setting` ([#3883](#3883)). * Fixed read method of `databricks_entitlements` resource ([#3858](#3858)). * Retry cluster update on "INVALID_STATE" ([#3890](#3890)). * Save Pipeline resource to state in addition to spec ([#3869](#3869)). * Tolerate `databricks_workspace_conf` deletion failures ([#3737](#3737)). * Update Go SDK ([#3826](#3826)). * cluster key update for `databricks_sql_table` should not force new ([#3824](#3824)). * reading `databricks_metastore_assignment` when importing resource ([#3827](#3827)). ### Documentation * Add troubleshooting instructions for `databricks OAuth is not supported for this host` error ([#3815](#3815)). * Clarify setting of permissions for workspace objects ([#3884](#3884)). * Document missing task attributes in `databricks_job` resource ([#3817](#3817)). * Fixed documentation for `databricks_schemas` data source and `databricks_metastore_assignment` resource ([#3851](#3851)). * clarified `spot_bid_max_price` option for `databricks_cluster` ([#3830](#3830)). * marked `databricks_sql_dashboard` as legacy ([#3836](#3836)). ### Internal Changes * Refactor exporter: split huge files into smaller ones ([#3870](#3870)). * Refactored `client.ClientForHost` to use Go SDK method ([#3735](#3735)). * Revert "Rewriting DLT pipelines using SDK" ([#3838](#3838)). * Rewrite DLT pipelines using SDK ([#3839](#3839)). * Rewriting DLT pipelines using SDK ([#3792](#3792)). * Update Go SDK ([#3808](#3808)). * refactored `databricks_mws_permission_assignment` to Go SDK ([#3831](#3831)). ### Dependency Updates * Bump databricks-sdk-go to 0.44.0 ([#3896](#3896)). * Bump github.com/zclconf/go-cty from 1.14.4 to 1.15.0 ([#3775](#3775)). ### Exporter * Add retry on "Operation timed out" error ([#3897](#3897)). * Add support for Vector Search assets ([#3828](#3828)). * Add support for `databricks_notification_destination` ([#3861](#3861)). * Add support for `databricks_online_table` ([#3816](#3816)). * Don't export model serving endpoints with foundational models ([#3845](#3845)). * Fix generation of `autotermination_minutes = 0` ([#3881](#3881)). * Generate `databricks_workspace_binding` instead of legacy `databricks_catalog_workspace_binding` ([#3812](#3812)). * Ignore DLT pipelines deployed via DABs ([#3857](#3857)). * Improve exporting of `databricks_model_serving` ([#3821](#3821)). * Refactoring: remove legacy code ([#3864](#3864)).
Changes
Made a new Notification Destination resource
docs/
folderinternal/acceptance