-
Notifications
You must be signed in to change notification settings - Fork 4.6k
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
New Resource: azurerm_email_communication_service_domain
#26179
Conversation
2d7880d
to
1826856
Compare
1826856
to
9f9a387
Compare
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.
Hi @jkroepke - Thanks for this PR, it's off to a good start. Can you can take a look at the comments and requested changes below?
Thanks
internal/services/communication/communication_service_resource.go
Outdated
Show resolved
Hide resolved
@@ -146,7 +147,8 @@ func (r CommunicationServiceResource) Create() sdk.ResourceFunc { | |||
// The location is always `global` from the Azure Portal | |||
Location: location.Normalize("global"), | |||
Properties: &communicationservices.CommunicationServiceProperties{ | |||
DataLocation: model.DataLocation, | |||
DataLocation: model.DataLocation, | |||
LinkedDomains: pointer.To(model.LinkedDomains), |
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 this be nil
on create if there are no LinkedDomains
or an empty list? Azure API's typically expect any unspecified value to be nil
.
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.
LinkedDomains is an optional value, so nil
should be used. if the user does not provide LinkedDomains
, model. LinkedDomains should be a nil value, since its an slice? Pretty much the same behavior as for tags here.
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.
the pointer.To()
function won't return nil
there, it will return an empty slice. If the value should be nil
for an empty slice, then that will need to be conditionally set outside the construction of the CommunicationServiceProperties
if model.LinkedDomains
is not empty. If an empty slice there is treated the same way as nil
by the API, then this is fine as-is.
Tags have a slightly different behaviour, and are a map[string]string
(or similar, depending on service implementation), so are handled differently.
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.
if the pointer.To()
function won't return nil there, could you please explain why the debugger shows me a nil value here? I'm running the TestAccCommunicationService_basic
test here:
I as know, pointer.To()
just creates a pointer of an variable. If the end-user omits linked_domains, the model.LinkedDomains
value is nil.
Could you please explain, why we need an additional condition here? I just want to get the reason behind.
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.
I added a test case for any empty list anyways which is passing.
internal/services/communication/communication_service_resource.go
Outdated
Show resolved
Hide resolved
internal/services/communication/email_service_domain_resource.go
Outdated
Show resolved
Hide resolved
internal/services/communication/email_service_domain_resource.go
Outdated
Show resolved
Hide resolved
internal/services/communication/email_service_domain_resource.go
Outdated
Show resolved
Hide resolved
internal/services/communication/email_service_domain_resource.go
Outdated
Show resolved
Hide resolved
internal/services/communication/email_service_domain_resource_test.go
Outdated
Show resolved
Hide resolved
internal/services/communication/email_service_domain_resource_test.go
Outdated
Show resolved
Hide resolved
internal/services/communication/email_service_domain_resource_test.go
Outdated
Show resolved
Hide resolved
Co-authored-by: jackofallops <[email protected]>
Co-authored-by: jackofallops <[email protected]>
…test.go Co-authored-by: jackofallops <[email protected]>
…test.go Co-authored-by: jackofallops <[email protected]>
…test.go Co-authored-by: jackofallops <[email protected]>
Co-authored-by: jackofallops <[email protected]>
Co-authored-by: jackofallops <[email protected]>
Co-authored-by: jackofallops <[email protected]>
Thanks @jackofallops for taking a look here, please take another look. |
fc64ce8
to
9ca3017
Compare
I need also some assistance for the following case: After the recent changes, running Returns me that error:
Terraform tries to delete the domain, before updating How I can adjust the behavior of Terraform that |
3a995da
to
118ccc1
Compare
I'm afraid this is a limitation, resources are deleted before others are updated. In these cases it's necessary to create an additional "association" resource to establish the necessary dependency link to allow the appropriate sequence of actions to take place. An example of this is |
Okay, I understand. Is it fine to you that:
|
6bb60b5
to
cb377fb
Compare
cb377fb
to
4984856
Compare
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.
LGTM ⛰️
<Actions> <action id="f410411e63aff4bb73a81c2aec1d373cf8a903e63b30dee2006b0030d8a94cc8"> <h3>Bump Terraform `azurerm` provider version</h3> <details id="1d9343c012f5434ac9fe8a98135bae3667b399259be16d9b14302ea3bd424a24"> <summary>Update Terraform lock file</summary> <p>changes detected:
	"hashicorp/azurerm" updated from "3.108.0" to "3.109.0" in file ".terraform.lock.hcl"</p> <details> <summary>3.109.0</summary> <pre>Changelog retrieved from:
	https://github.com/hashicorp/terraform-provider-azurerm/releases/tag/v3.109.0
FEATURES:

* **New Data Source:** `azurerm_automation_runbook` ([#26359](hashicorp/terraform-provider-azurerm#26359 **New Resource:** `azurerm_data_protection_backup_instance_postgresql_flexible_server` ([#26249](hashicorp/terraform-provider-azurerm#26249 **New Resource:** `azurerm_email_communication_service_domain` ([#26179](hashicorp/terraform-provider-azurerm#26179 **New Resource:** `azurerm_system_center_virtual_machine_manager_cloud` ([#25429](hashicorp/terraform-provider-azurerm#25429 **New Resource:** `azurerm_system_center_virtual_machine_manager_virtual_machine_template` ([#25449](hashicorp/terraform-provider-azurerm#25449 **New Resource:** `azurerm_system_center_virtual_machine_manager_virtual_network` ([#25451](https://github.com/hashicorp/terraform-provider-azurerm/issues/25451))

ENHANCEMENTS:

* Data Source: `azurerm_hdinsight_cluster` - export the `cluster_id` attribute ([#26228](hashicorp/terraform-provider-azurerm#26228 `azurerm_cosmosdb_sql_container` - support for the `partition_key_kind` and `partition_key_paths` properties ([#26372](hashicorp/terraform-provider-azurerm#26372 `azurerm_data_protection_backup_instance_blob_storage` - support for the `storage_account_container_names` property ([#26232](hashicorp/terraform-provider-azurerm#26232 `azurerm_virtual_network_peering` - support for the `peer_complete_virtual_networks_enabled`, `only_ipv6_peering_enabled`, `local_subnet_names`, and `remote_subnet_names` properties ([#26229](hashicorp/terraform-provider-azurerm#26229 `azurerm_virtual_desktop_host_pool` - changing the `preferred_app_group_type` property no longer creates a new resource ([#26333](hashicorp/terraform-provider-azurerm#26333 `azurerm_maps_account` - support for the `location`, `identity`, `cors` and `data_store` properties ([#26397](https://github.com/hashicorp/terraform-provider-azurerm/issues/26397))

BUG FIXES:

* `azurerm_automation_job_schedule` - updates `azurerm_automation_job_schedule` to use a composite resource id and allows `azurerm_automation_runbook` to be updated without causing `azurerm_automation_job_schedule` to recreate ([#22164](hashicorp/terraform-provider-azurerm#22164 `azurerm_databricks_workspace`- correctly allow disabling the default firewall ([#26339](hashicorp/terraform-provider-azurerm#26339 `azurerm_virtual_hub_*` - spliting create and update so lifecycle ignore changes works correctly ([#26310](https://github.com/hashicorp/terraform-provider-azurerm/issues/26310))

DEPRECATIONS:

* Data Source: `azurerm_mariadb_server` - deprecated since the service is retiring. Please use `azurerm_mysql_flexible_server` instead ([#26354](hashicorp/terraform-provider-azurerm#26354 `azurerm_mariadb_configuration` - deprecated since the service is retiring. Please use `azurerm_mysql_flexible_server_configuration` instead ([#26354](hashicorp/terraform-provider-azurerm#26354 `azurerm_mariadb_database` - deprecated since the service is retiring. Please use `azurerm_mysql_flexible_database` instead ([#26354](hashicorp/terraform-provider-azurerm#26354 `azurerm_mariadb_firewall_rule` - deprecated since the service is retiring. Please use `azurerm_mysql_flexible_server_firewall_rule` instead ([#26354](hashicorp/terraform-provider-azurerm#26354 `azurerm_mariadb_server` - deprecated since the service is retiring. Please use `azurerm_mysql_flexible_server` instead ([#26354](hashicorp/terraform-provider-azurerm#26354 `azurerm_mariadb_virtual_network_rule` - deprecated since the service is retiring ([#26354](https://github.com/hashicorp/terraform-provider-azurerm/issues/26354))


</pre> </details> </details> <a href="https://infra.ci.jenkins.io/job/updatecli/job/azure/job/main/256/">Jenkins pipeline link</a> </action> </Actions> --- <table> <tr> <td width="77"> <img src="https://www.updatecli.io/images/updatecli.png" alt="Updatecli logo" width="50" height="50"> </td> <td> <p> Created automatically by <a href="https://www.updatecli.io/">Updatecli</a> </p> <details><summary>Options:</summary> <br /> <p>Most of Updatecli configuration is done via <a href="https://www.updatecli.io/docs/prologue/quick-start/">its manifest(s)</a>.</p> <ul> <li>If you close this pull request, Updatecli will automatically reopen it, the next time it runs.</li> <li>If you close this pull request and delete the base branch, Updatecli will automatically recreate it, erasing all previous commits made.</li> </ul> <p> Feel free to report any issues at <a href="https://github.com/updatecli/updatecli/issues">github.com/updatecli/updatecli</a>.<br /> If you find this tool useful, do not hesitate to star <a href="https://github.com/updatecli/updatecli/stargazers">our GitHub repository</a> as a sign of appreciation, and/or to tell us directly on our <a href="https://matrix.to/#/#Updatecli_community:gitter.im">chat</a>! </p> </details> </td> </tr> </table> Co-authored-by: Jenkins Infra Bot (updatecli) <[email protected]>
Is this second bullet point "setup an additional resource in a separate PR" already implemented or in implementation? Can you please link this PR here? I would be highly interested in this feature :) |
Once, I have open the PR, I can link it. |
I'm going to lock this pull request because it has been closed for 30 days ⏳. This helps our maintainers find and focus on the active contributions. |
Community Note
Description
Implements a Terraform Provider for https://learn.microsoft.com/en-us/rest/api/communication/resourcemanager/domains?view=rest-communication-resourcemanager-2023-03-31
PR Checklist
For example: “
resource_name_here
- description of change e.g. adding propertynew_property_name_here
”Changes to existing Resource / Data Source
Testing
Change Log
Below please provide what should go into the changelog (if anything) conforming to the Changelog Format documented here.
azurerm_email_communication_service_domain
[GH-00000]This is a (please select all that apply):
Related Issue(s)
Fixes #22995
Note
If this PR changes meaningfully during the course of review please update the title and description as required.