-
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
azurerm_container_app - support: allows IP restrictions without requiring CIDR #25609
Conversation
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.
Thanks @sugar-cat7. Could you take a look at the suggestions left in-line as well as update the docs for this property? Once that's done and provided the tests pass this should be good to go.
@@ -484,7 +484,7 @@ func ContainerAppIngressIpSecurityRestriction() *pluginsdk.Schema { | |||
"ip_address_range": { | |||
Type: pluginsdk.TypeString, | |||
Required: true, | |||
ValidateFunc: validation.IsCIDR, | |||
ValidateFunc: validation.IsIPAddressOrCIDR, |
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.
This can be achieved by specifying multiple validation functions
ValidateFunc: validation.IsIPAddressOrCIDR, | |
ValidateFunc: validation.Any(validation.IsCIDR, validation.IsIPAddress), |
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.
Thank you. I overlooked the any
validator.
internal/tf/validation/pluginsdk.go
Outdated
// IsIPAddressOrCIDR validates if the input is either a valid IP address or a CIDR notation | ||
func IsIPAddressOrCIDR(i interface{}, k string) ([]string, []error) { | ||
warningsIP, errorsIP := IsIPAddress(i, k) | ||
if len(errorsIP) == 0 { | ||
return warningsIP, nil | ||
} | ||
|
||
warningsCIDR, errorsCIDR := IsCIDR(i, k) | ||
if len(errorsCIDR) == 0 { | ||
return warningsCIDR, nil | ||
} | ||
|
||
return append(warningsIP, warningsCIDR...), append(errorsIP, errorsCIDR...) | ||
} | ||
|
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.
Then this can be removed
// IsIPAddressOrCIDR validates if the input is either a valid IP address or a CIDR notation | |
func IsIPAddressOrCIDR(i interface{}, k string) ([]string, []error) { | |
warningsIP, errorsIP := IsIPAddress(i, k) | |
if len(errorsIP) == 0 { | |
return warningsIP, nil | |
} | |
warningsCIDR, errorsCIDR := IsCIDR(i, k) | |
if len(errorsCIDR) == 0 { | |
return warningsCIDR, nil | |
} | |
return append(warningsIP, warningsCIDR...), append(errorsIP, errorsCIDR...) | |
} |
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 deleted it.
I've updated the docs and description, could you please check 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.
Thanks @sugar-cat7 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.99.0" to "3.100.0" in file ".terraform.lock.hcl"</p> <details> <summary>3.100.0</summary> <pre>Changelog retrieved from:
	https://github.com/hashicorp/terraform-provider-azurerm/releases/tag/v3.100.0
ENHANCEMENTS:

* dependencies: updating `hashicorp/go-azure-sdk` to `v0.20240417.1084633` ([#25659](hashicorp/terraform-provider-azurerm#25659 `compute` - update Virtual Machine and Virtual Machine Scale Set resources and data sources to use `hashicorp/go-azure-sdk` ([#25533](hashicorp/terraform-provider-azurerm#25533 `machine_learning` - Add new `machine_learning` block that supports `purge_soft_deleted_workspace_on_destroy` ([#25624](hashicorp/terraform-provider-azurerm#25624 `loganalytics` - update cluster resource to use `hashicorp/go-azure-sdk` ([#23373](hashicorp/terraform-provider-azurerm#23373 Data Source: `azurerm_management_group` - now exports the `tenant_scoped_id` attribute ([#25555](hashicorp/terraform-provider-azurerm#25555 `azurerm_container_app` - the `ingress.ip_security_restriction.ip_address_range` property will now accept an IP address as valid input ([#25609](hashicorp/terraform-provider-azurerm#25609 `azurerm_container_group` - the `identity` block can now be updated ([#25543](hashicorp/terraform-provider-azurerm#25543 `azurerm_express_route_connection` - support for the `private_link_fast_path_enabled` property ([#25596](hashicorp/terraform-provider-azurerm#25596 `azurerm_hdinsight_hadoop_cluster` - support for the `private_link_configuration` block ([#25629](hashicorp/terraform-provider-azurerm#25629 `azurerm_hdinsight_hbase_cluster` - support for the `private_link_configuration` block ([#25629](hashicorp/terraform-provider-azurerm#25629 `azurerm_hdinsight_interactive_query_cluster` - support for the `private_link_configuration` block ([#25629](hashicorp/terraform-provider-azurerm#25629 `azurerm_hdinsight_kafka_cluster` - support for the `private_link_configuration` block ([#25629](hashicorp/terraform-provider-azurerm#25629 `azurerm_hdinsight_spark_cluster` - support for the `private_link_configuration` block ([#25629](hashicorp/terraform-provider-azurerm#25629 `azurerm_management_group` - now exports the `tenant_scoped_id` attribute ([#25555](hashicorp/terraform-provider-azurerm#25555 `azurerm_monitor_activity_log_alert` - support for the `location` property ([#25389](hashicorp/terraform-provider-azurerm#25389 `azurerm_mysql_flexible_server` - update validating regex for `sku_name` ([#25642](hashicorp/terraform-provider-azurerm#25642 `azurerm_postgresql_flexible_server` - support for the `GeoRestore` `create_mode` ([#25664](hashicorp/terraform-provider-azurerm#25664 `azurerm_virtual_network_gateway_connection` - support for the `private_link_fast_path_enabled` property ([#25650](hashicorp/terraform-provider-azurerm#25650 `azurerm_windows_web_app` - support for the `handler_mapping` block ([#25631](hashicorp/terraform-provider-azurerm#25631 `azurerm_windows_web_app_slot` - support for the `handler_mapping` block ([#25631](https://github.com/hashicorp/terraform-provider-azurerm/issues/25631))

BUG FIXES:

* storage: prevent a bug causing the second storage account key to be used for authentication instead of the first ([#25652](hashicorp/terraform-provider-azurerm#25652 `azurerm_active_directory_domain_service` - prevent an issue where `filtered_sync_enabled` was not being updated ([#25594](hashicorp/terraform-provider-azurerm#25594 `azurerm_application_insights` - add a state migration to fix the resource ID casing of Application Insights resources ([#25628](hashicorp/terraform-provider-azurerm#25628 `azurerm_function_app_hybrid_connection` - can now use relay resources created in a different resource group ([#25541](hashicorp/terraform-provider-azurerm#25541 `azurerm_kubernetes_cluster_node_pool` - prevent plan diff when the `windows_profile.outbound_nat_enabled` property is unset ([#25644](hashicorp/terraform-provider-azurerm#25644 `azurerm_machine_learning_compute_cluster` - fix location to point to parent resource for computes ([#25643](hashicorp/terraform-provider-azurerm#25643 `azurerm_machine_learning_compute_instance` - fix location to point to parent resource for computes ([#25643](hashicorp/terraform-provider-azurerm#25643 `azurerm_storage_account` - check replication type when evaluating support level for shares and queues for V1 storage accounts ([#25581](hashicorp/terraform-provider-azurerm#25581 `azurerm_storage_account` - added a sanity check for `dns_endpoint_type` and `blob_properties.restore_policy` ([#25450](hashicorp/terraform-provider-azurerm#25450 `azurerm_web_app_hybrid_connection` - can now use relay resources created in a different resource group ([#25541](hashicorp/terraform-provider-azurerm#25541 `azurerm_windows_web_app` - prevent removal of `site_config.application_stack.node_version` when `app_settings` are updated ([#25488](hashicorp/terraform-provider-azurerm#25488 `azurerm_windows_web_app_slot` - prevent removal of `site_config.application_stack.node_version` when `app_settings` are updated ([#25489](https://github.com/hashicorp/terraform-provider-azurerm/issues/25489))

DEPRECATIONS:

* `logz` - the Logz resources are deprecated and will be removed in v4.0 of the AzureRM Provider since the API no longer allows new instances to be created ([#25405](hashicorp/terraform-provider-azurerm#25405 `azurerm_machine_learning_compute_instance` - marked the `location` field as deprecated in v4.0 of the provider ([#25643](hashicorp/terraform-provider-azurerm#25643 `azurerm_kubernetes_cluster` - the following properties have been deprecated since the API no longer supports cluster creation with legacy Azure Entra integration: `client_app_id`, `server_app_id`, `server_app_secret` and `managed` ([#25200](https://github.com/hashicorp/terraform-provider-azurerm/issues/25200))


</pre> </details> </details> <a href="https://infra.ci.jenkins.io/job/updatecli/job/azure/job/main/117/">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) <60776566+jenkins-infra-bot@users.noreply.github.com>
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
When setting IP restrictions for Azure Container Apps using the Azure Portal or CLI, it appears that the CIDR notation is not always necessary for a single host (no errors are reported).
IP restrictions for Container Apps.
Given that the native Azure behavior allows IP restrictions without requiring CIDR notation, should we not update the Terraform provider to align with this functionality? This would simplify configuration processes and reduce potential discrepancies between direct Azure usage and Terraform configurations.
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_resource
- support for thething1
property [GH-00000]This is a (please select all that apply):
Related Issue(s)
Fixes #25608
Note
If this PR changes meaningfully during the course of review please update the title and description as required.