-
Notifications
You must be signed in to change notification settings - Fork 4.7k
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_virtual_desktop_scaling_plan_host_pool_association
#24670
Conversation
1f1f181
to
6d31048
Compare
6d31048
to
77d7689
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.
Hey @alexwilcox9, this PR is looking on the right track but we'll need some tests to confirm it's functionality.
Your ask about what we could be done about host_pool
on the parent resource showing a diff could be solved by adding Computed: true
to host_pool
.
I am wondering if there is a way we could solve this with a conditionals though. Could you open an issue describing your issue and what you're trying to do in a little more detail?
Sorry for the slow response, only just got time to come back around to this. So to describe what I'm trying to do in more detail; I'm looking to make it simpler to switch which scaling plan is currently assigned to a hostpool. Currently you could probably use a dynamic block to only create the Here's an example of how I think it would be done with conditionals Whereas the same could be achieved with the new resource as follows resource "azurerm_virtual_desktop_scaling_plan_host_pool_association" "example" {
host_pool_id = azurerm_virtual_desktop_host_pool.example.id
scaling_plan_id = var.holiday ? azurerm_virtual_desktop_scaling_plan.holiday.id : azurerm_virtual_desktop_scaling_plan.example.id
enabled = true
} Another problem I find with the conditionals is that Terraform tries to update both scaling plans at the same time causing an error. Meaning I always need to run the apply twice
I hope that helps explain why I think this new resource would be beneficial |
e298a9a
to
38d2fca
Compare
38d2fca
to
14558a2
Compare
14558a2
to
93752ce
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.
Hey @alexwilcox9, I can see the use for this resource after you walked me through how awful it is to achieve what you're trying to do.
I've left another review as I do have concerns that bringing this resource in will cause breaking changes as you've changed existing tests.
internal/services/desktopvirtualization/parse/scaling_plan_host_pool_association.go
Outdated
Show resolved
Hide resolved
} | ||
} | ||
|
||
func ScalingPlanHostPoolAssociationID(input string) (*ScalingPlanHostPoolAssociationId, error) { |
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'll want a unit test around this similar to https://github.com/hashicorp/terraform-provider-azurerm/blob/main/internal/services/bot/parse/bot_channel_test.go#L24
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.
Just wanted to clarify on this front - this ID is made up of two existing resource IDs that already have tests written so should my tests duplicate those and build up both resource IDs from scratch or just test the parsing of the two combined
For example testing the following
/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.DesktopVirtualization/scalingPlans/scalingPlanValue
Invalid
/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.DesktopVirtualization/scalingPlans/scalingPlanValue|/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.DesktopVirtualization/hostPools/hostPoolValue
Valid
/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.DesktopVirtualization/scalingPlans/scalingPlanValue|/subscriptions/12345678-1234-9876-4563-123456789012/resourceGroups/example-resource-group/providers/Microsoft.DesktopVirtualization/hostPools/hostPoolValue|/extra
Invalid
@@ -128,37 +128,6 @@ resource "azurerm_resource_group" "test" { | |||
location = "westeurope" | |||
} | |||
|
|||
resource "azurerm_role_definition" "test" { |
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 really shouldn't change existing tests as breaking changes could pop up because a test was changed and broke an existing test but changing the config masked the breaking change
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 saw an opportunity to tidy up the tests, when Scaling Plans first released they were only in a handful of regions and didn't have a built in role so creating a custom one was required.
Now there's a built in role and more regions are supported so wanted to update the tests to reflect that
internal/services/desktopvirtualization/virtual_desktop_scaling_plan_resource_test.go
Outdated
Show resolved
Hide resolved
...ervices/desktopvirtualization/virtual_desktop_scaling_plan_host_pool_association_resource.go
Outdated
Show resolved
Hide resolved
This PR is being labeled as "stale" because it has not been updated for 30 or more days. If this PR is still valid, please remove the "stale" label. If this PR is blocked, please add it to the "Blocked" milestone. If you need some help completing this PR, please leave a comment letting us know. Thank you! |
93752ce
to
38d1287
Compare
Hey, thanks for the review and apologies for the delay in getting back to it. I've replied to your comments and made some changes |
fdf3dd0
to
6af0167
Compare
I also found that during any create/update/delete operation the scaling plans schedule would disappear. |
6af0167
to
69d8e3b
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.
Thanks for the changes @alexwilcox9 - Looks like this is missing documentation for the new resource. once that is added i think this can be reviewed one final time and merged
69d8e3b
to
e0efb83
Compare
e0efb83
to
e07136d
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.
Thanks @alexwilcox9 ! 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.109.0" to "3.110.0" in file ".terraform.lock.hcl"</p> <details> <summary>3.110.0</summary> <pre>Changelog retrieved from:
	https://github.com/hashicorp/terraform-provider-azurerm/releases/tag/v3.110.0
FEATURES:

* **New Data Source:** `azurerm_load_test` ([#26376](hashicorp/terraform-provider-azurerm#26376 **New Resource:** `azurerm_virtual_desktop_scaling_plan_host_pool_association` ([#24670](https://github.com/hashicorp/terraform-provider-azurerm/issues/24670))

ENHANCEMENTS:

* Data Source: `azurerm_monitor_data_collection_endpoint` - support for the `immutable_id` property ([#26380](hashicorp/terraform-provider-azurerm#26380 Data Source: `azurerm_nginx_certificate` - export the properties `sha1_thumbprint`, `key_vault_secret_version`, `key_vault_secret_creation_date`, `error_code` and `error_message` ([#26160](hashicorp/terraform-provider-azurerm#26160 `azurerm_backup_policy_vm` - support for the `tiering_policy` property ([#26263](hashicorp/terraform-provider-azurerm#26263 `azurerm_kubernetes_cluster_node_pool` - Pod Disruption Budgets are now respected when deleting a node pool ([#26471](hashicorp/terraform-provider-azurerm#26471 `azurerm_monitor_data_collection_endpoint` - support for the `immutable_id` property ([#26380](hashicorp/terraform-provider-azurerm#26380 `azurerm_mssql_managed_instance` - support the value `GZRS` for the `storage_account_type` property ([#26448](hashicorp/terraform-provider-azurerm#26448 `azurerm_mssql_managed_instance_transparent_data_encryption` - support for the `managed_hsm_key_id` property ([#26496](hashicorp/terraform-provider-azurerm#26496 `azurerm_redis_cache_access_policy` - allow updates to `permissions` ([#26440](hashicorp/terraform-provider-azurerm#26440 `azurerm_redhat_openshift_cluster` - support for the `managed_resource_group_name` property ([#25529](hashicorp/terraform-provider-azurerm#25529 `azurerm_redhat_openshift_cluster` - support for the `preconfigured_network_security_group_enabled` property ([#26082](hashicorp/terraform-provider-azurerm#26082 `azurerm_iotcentral_application` - remove Computed from `template` and set default of `[email protected]` in 4.0 ([#26485](hashicorp/terraform-provider-azurerm#26485 `azurerm_digital_twins_time_series_database_connection` - remove Computed from `kusto_table_name` and set a default of `AdtPropertyEvents` in 4.0 ([#26484](https://github.com/hashicorp/terraform-provider-azurerm/issues/26484))

BUG FIXES:

* Data Source: `azurerm_express_route_circuit_peering` - fix issue where data source attempts to parse an empty string instead of generating the resource ID ([#26441](hashicorp/terraform-provider-azurerm#26441 `azurerm_express_route_gateway` - prevent a panic ([#26467](hashicorp/terraform-provider-azurerm#26467 `azurerm_monitor_scheduled_query_rules_alert_v2` - correctly handle the `identity` block if not specified ([#26364](hashicorp/terraform-provider-azurerm#26364 `azurerm_security_center_automation` - prevent resource recreation when `tags` are updated ([#26292](hashicorp/terraform-provider-azurerm#26292 `azurerm_synapse_workspace` - fix issue where `azure_devops_repo` or `github_repo` configuration could not be removed ([#26421](hashicorp/terraform-provider-azurerm#26421 `azurerm_virtual_network_dns_servers` - split create and update function to fix lifecycle - ignore ([#26427](hashicorp/terraform-provider-azurerm#26427 `azurerm_linux_function_app` - set `allowed_applications` in the request payload ([#26462](hashicorp/terraform-provider-azurerm#26462 `azurerm_linux_function_app_slot` - set `allowed_applications` in the request payload ([#26462](hashicorp/terraform-provider-azurerm#26462 `azurerm_windows_function_app` - set `allowed_applications` in the request payload ([#26462](hashicorp/terraform-provider-azurerm#26462 `azurerm_windows_function_app_slot` - set `allowed_applications` in the request payload ([#26462](hashicorp/terraform-provider-azurerm#26462 `azurerm_linux_web_app` - set `allowed_applications` in the request payload ([#26462](hashicorp/terraform-provider-azurerm#26462 `azurerm_linux_web_app_slot` - set `allowed_applications` in the request payload ([#26462](hashicorp/terraform-provider-azurerm#26462 `azurerm_windows_web_app` - set `allowed_applications` in the request payload ([#26462](hashicorp/terraform-provider-azurerm#26462 `azurerm_windows_web_app_slot` - set `allowed_applications` in the request payload ([#26462](hashicorp/terraform-provider-azurerm#26462 `azurerm_api_management` - remove ForceNew from `additional_location.zones` ([#26384](hashicorp/terraform-provider-azurerm#26384 `azurerm_logic_app_integration_account_schema` - the `name` property now allows underscores ([#26475](hashicorp/terraform-provider-azurerm#26475 `azurerm_palo_alto_local_rulestack_rule` - prevent error when switching between `protocol` and `protocol_ports` ([#26490](https://github.com/hashicorp/terraform-provider-azurerm/issues/26490))

DEPRECATIONS:

* `azurerm_analysis_service_server` - the property `enable_power_bi_service` has been superseded by `power_bi_service_enabled` ([#26456](https://github.com/hashicorp/terraform-provider-azurerm/issues/26456))


</pre> </details> </details> <a href="https://infra.ci.jenkins.io/job/updatecli/job/azure/job/main/287/">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]>
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. |
PR for the creation of a new resource
azurerm_virtual_desktop_scaling_plan_host_pool_association
Why
In my AVD deployments I have a normal worktime scaling plan and a holiday period scaling plan. I'd like to have a variable to easily switch from one SP to another. Using the
host_pool
block within the currentazurerm_virtual_desktop_scaling_plan
you would need to do something with dynamic blocks and there doesn't seem to be a clean solution.Having a dedicated resource would make this much easier.
It would also be more inline with the existing resource
azurerm_virtual_desktop_workspace_application_group_association
(which this PR is mostly copied from)Help
When using this resource alongside
azurerm_virtual_desktop_scaling_plan
there will be conflicts where an association has been created in the new resource but not declared in ahost_pool
block. Is there a way to prevent thehost_pool
block being checked if it hasn't been declared in the users configuration? Rather than the user having to add anignore_changes
to their code.Documentation and Tests
If you're happy with this resource in principle I'll get the docs and tests written up
Thanks in advance!