release-v1.0.38 - #366
Merged
Merged
Conversation
yashwanthjammi
temporarily deployed
to
Go Test - Cloud - EU
July 17, 2026 18:53 — with
GitHub Actions
Inactive
yashwanthjammi
had a problem deploying
to
Go Test - OnPrem
July 17, 2026 18:53 — with
GitHub Actions
Failure
yashwanthjammi
requested review from
AlanCitrix,
aneeshk-citrix,
Copilot,
sourav-citrix and
zhuolun-citrix
July 17, 2026 18:53
There was a problem hiding this comment.
Pull request overview
This release branch update expands the provider’s feature surface (delivery group policy user filters, Entra ID OID identifiers, cloud admin onboarding/import, and configurable resource-pool timeouts) and includes several reliability fixes (import/idempotency, async-job handling, and schema/state consistency).
Changes:
- Added OID (
OID:/azuread/<object_id>) support across allow/block user lists (delivery groups, apps, app groups) and added per-policyrestricted_access_usersfor delivery-group access policies. - Added configurable
timeout { create, update, delete }blocks to hypervisor resource pool resources and updated docs/tests accordingly. - Improved onboarding script idempotency/re-run behavior and added cloud resource onboarding/import capabilities; added CITRIX_ACCESS_TOKEN seeding to reduce auth rate-limiting.
Reviewed changes
Copilot reviewed 53 out of 55 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| scripts/onboarding-helper/terraform.tf | Bumps required provider version for onboarding output. |
| scripts/onboarding-helper/terraform-onboarding.ps1 | Adds re-run/idempotency, output folder, cloud onboarding, retries/backoff, and endpoint refactors. |
| scripts/onboarding-helper/README.md | Documents re-run behavior, output folder, updated provider requirements, and warnings. |
| main.go | Wires CLI -debug into util debug mode behavior. |
| internal/util/common.go | Adds Azure AD OID regex + OID-aware user refresh/identity completeness checks. |
| internal/util/planmodifiers/mark_unknown_if_no_prior_state.go | New plan modifier to avoid inconsistent results for new nested computed attrs. |
| internal/util/planmodifiers/mark_unknown_if_no_prior_state_test.go | Unit tests for the new plan modifier. |
| internal/provider/provider.go | Allows seeding a caller-supplied access token for cloud auth reuse. |
| internal/examples/resources/citrix_cloud_admin_user/resource.tf | Adds Azure AD admin-user example. |
| internal/daas/policies/policy_set_resource_model.go | Applies new plan modifier to nested computed IDs. |
| internal/daas/machine_catalog/machine_catalog_resource_model.go | Fixes/extends PVS provisioning type normalization. |
| internal/daas/image_definition/image_version_resource.go | Improves async failure handling to avoid orphaning failed image versions. |
| internal/daas/hypervisor_resource_pool/hypervisor_resource_pool_common.go | Introduces shared timeout schema + plumbs timeouts into async job waits. |
| internal/daas/hypervisor_resource_pool/azure_hypervisor_resource_pool_resource.go | Uses configurable timeouts for create/update/delete. |
| internal/daas/hypervisor_resource_pool/aws_hypervisor_resource_pool_resource.go | Uses configurable timeouts for create/update/delete. |
| internal/daas/hypervisor_resource_pool/amazon_workspaces_core_hypervisor_resource_pool_resource.go | Uses configurable timeouts for create/update/delete. |
| internal/daas/hypervisor_resource_pool/gcp_hypervisor_resource_pool_resource.go | Uses configurable timeouts for create/update/delete. |
| internal/daas/hypervisor_resource_pool/nutanix_hypervisor_resource_pool_resource.go | Uses configurable timeouts for create/update/delete. |
| internal/daas/hypervisor_resource_pool/openshift_hypervisor_resource_pool_resource.go | Uses configurable timeouts for create/update/delete. |
| internal/daas/hypervisor_resource_pool/scvmm_hypervisor_resource_pool_resource.go | Uses configurable timeouts for create/update/delete. |
| internal/daas/hypervisor_resource_pool/vsphere_hypervisor_resource_pool_resource.go | Uses configurable timeouts for create/update/delete. |
| internal/daas/hypervisor_resource_pool/xenserver_hypervisor_resource_pool_resource.go | Uses configurable timeouts for create/update/delete. |
| internal/daas/hypervisor_resource_pool/*_resource_model.go | Adds timeout attribute to resource pool schemas. |
| internal/test/hypervisor_resource_pool_test.go | Extends vSphere resource-pool tests to validate timeout config. |
| internal/daas/delivery_group/delivery_group_utils.go | Adds per-policy user filters; improves autoscale normalization; preserves OID-only identity users. |
| internal/daas/delivery_group/delivery_group_resource.go | Validates mutual exclusivity of DG-level vs per-policy restricted_access_users. |
| internal/daas/delivery_group/delivery_group_resource_model.go | Adds per-policy schema + updates validators/docs strings to include OID format. |
| internal/daas/application/application_resource_model.go | Updates user-list validator/docs to include OID format. |
| internal/daas/application/application_group_resource_model.go | Updates user-list validator/docs to include OID format. |
| internal/citrixcloud/admin_user/admin_user_resource.go | Extends validation to support AzureAd users + tightens group provider-type validation. |
| internal/citrixcloud/admin_user/admin_user_resource_model.go | Makes service-name validation debug-relaxable; ensures external IDs populate on import. |
| docs/resources/delivery_group.md | Documents per-policy user filters and OID format. |
| docs/resources/application.md | Documents OID format for user lists. |
| docs/resources/application_group.md | Documents OID format for user lists. |
| docs/resources/cloud_admin_user.md | Adds Azure AD admin-user example in docs. |
| docs/resources/azure_hypervisor_resource_pool.md | Documents new create/update/delete timeouts. |
| docs/resources/aws_hypervisor_resource_pool.md | Documents new create/update/delete timeouts. |
| docs/resources/amazon_workspaces_core_hypervisor_resource_pool.md | Documents new create/update/delete timeouts. |
| docs/resources/gcp_hypervisor_resource_pool.md | Documents new create/update/delete timeouts. |
| docs/resources/nutanix_hypervisor_resource_pool.md | Documents new create/update/delete timeouts. |
| docs/resources/openshift_hypervisor_resource_pool.md | Documents new create/update/delete timeouts. |
| docs/resources/scvmm_hypervisor_resource_pool.md | Documents new create/update/delete timeouts. |
| docs/resources/vsphere_hypervisor_resource_pool.md | Documents new create/update/delete timeouts. |
| docs/resources/xenserver_hypervisor_resource_pool.md | Documents new create/update/delete timeouts. |
| go.mod | Bumps citrix-daas-rest-go and several indirect deps. |
| go.sum | Updates checksums for dependency bumps. |
| .gitignore | Ignores default onboarding output folder. |
Comment on lines
+1470
to
+1485
| // Only read per-policy user filters if the user had them set in state; otherwise the DG-level | ||
| // restricted_access_users covers this policy and we don't want to surface duplicated values here. | ||
| if !dgAccessPolicy.RestrictedAccessUsers.IsNull() { | ||
| if !accessPolicy.GetIncludedUserFilterEnabled() { | ||
| if attributes, err := util.ResourceAttributeMapFromObject(RestrictedAccessUsers{}); err == nil { | ||
| dgAccessPolicy.RestrictedAccessUsers = types.ObjectNull(attributes) | ||
| } else { | ||
| diagnostics.AddWarning("Error when creating null RestrictedAccessUsers", err.Error()) | ||
| } | ||
| return dgAccessPolicy | ||
| } | ||
| users := util.ObjectValueToTypedObject[RestrictedAccessUsers](ctx, diagnostics, dgAccessPolicy.RestrictedAccessUsers) | ||
| users.AllowList = util.RefreshUsersList(ctx, diagnostics, users.AllowList, accessPolicy.GetIncludedUsers()) | ||
| users.BlockList = util.RefreshUsersList(ctx, diagnostics, users.BlockList, accessPolicy.GetExcludedUsers()) | ||
| dgAccessPolicy.RestrictedAccessUsers = util.TypedObjectToObjectValue(ctx, diagnostics, users) | ||
| } |
Comment on lines
+1289
to
+1294
| upnMap[strings.ToLower(userPrincipalName)] = -1 | ||
| } | ||
| _, exists = sidMap[strings.ToLower(userSid)] | ||
| if exists { | ||
| sidMap[strings.ToLower(userSid)] = -1 | ||
| } |
yashwanthjammi
had a problem deploying
to
Go Test - Cloud - EU
July 17, 2026 18:58 — with
GitHub Actions
Failure
aneeshk-citrix
previously approved these changes
Jul 17, 2026
AlanCitrix
previously approved these changes
Jul 17, 2026
This was
linked to
issues
Jul 17, 2026
yashwanthjammi
dismissed stale reviews from AlanCitrix and aneeshk-citrix
via
July 20, 2026 14:45
1e32b0c
yashwanthjammi
force-pushed
the
release-v1.0.38
branch
from
July 20, 2026 14:45
5aa2bb8 to
1e32b0c
Compare
yashwanthjammi
temporarily deployed
to
Go Test - Cloud - EU
July 20, 2026 14:45 — with
GitHub Actions
Inactive
yashwanthjammi
had a problem deploying
to
Go Test - OnPrem
July 20, 2026 14:45 — with
GitHub Actions
Failure
AlanCitrix
approved these changes
Jul 20, 2026
aneeshk-citrix
approved these changes
Jul 20, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
New Features:
restricted_access_usersondefault_access_policiesandcustom_access_policiesin thecitrix_delivery_groupresource. Mutually exclusive withcitrix_delivery_group.restricted_access_users. Fixes [Feature] Delivery Group Advanced Access Policy Filters #359timeoutblock (create,update,delete, in minutes) to all hypervisor resource pool resources (Azure, AWS, Amazon WorkSpaces Core, GCP, Nutanix, SCVMM, vSphere, XenServer, OpenShift).access_type=Fulloncitrix_cloud_admin_userwithtype=AdministratorGroup. Fixes [Feature] Admin group full-access property #364Bugfixes:
citrix_delivery_groups with random catalogs failing to apply due to unsupported log off action values returned by the API.citrix_machine_catalogwhere the API returns provisioning type "PVS", which caused a schema validation failure on subsequent terraform plan. [Bug] Imported Machine Catalog Resource causes Invalid Attribute Value Match onterraform plan#363default_access_policiesorcustom_access_policiesto acitrix_delivery_groupresource that was previously managed without them.Other Improvements:
citrix_cloud_admin_userresource.citrix_cloud_admin_user,citrix_cloud_resource_location,citrix_cloud_saml_identity_provider,citrix_cloud_google_identity_provider,citrix_cloud_okta_identity_provider, andcitrix_policy_set_v2and its associated policy resources. [Feature] Add citrix_cloud and citrix_policy_set_v2 resources to the onboarding helper #353