From 1580387c0cf1a77aec92ac0def906dc595f3cb7b Mon Sep 17 00:00:00 2001 From: Ben Broderick Phillips Date: Thu, 20 Jan 2022 19:12:45 -0500 Subject: [PATCH] Only fetch provision application oid via API if not supplied --- .../TestResources/New-TestResources.ps1 | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/eng/common/TestResources/New-TestResources.ps1 b/eng/common/TestResources/New-TestResources.ps1 index 18127b3a7141..f4f3be8de908 100644 --- a/eng/common/TestResources/New-TestResources.ps1 +++ b/eng/common/TestResources/New-TestResources.ps1 @@ -45,6 +45,10 @@ param ( [ValidatePattern('^[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$')] [string] $ProvisionerApplicationId, + [Parameter(ParameterSetName = 'Provisioner', Mandatory = $false)] + [ValidatePattern('^[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}$')] + [string] $ProvisionerApplicationOid, + [Parameter(ParameterSetName = 'Provisioner', Mandatory = $true)] [string] $ProvisionerApplicationSecret, @@ -155,7 +159,7 @@ function NewServicePrincipalWrapper([string]$subscription, [string]$resourceGrou $appId = $servicePrincipal.AppId } else { Write-Verbose "Creating service principal credential via MS Graph API" - # In 7.1.0 the password credential issue was fixed (see https://github.com/Azure/azure-powershell/pull/16690) but the + # In 5.2.0 the password credential issue was fixed (see https://github.com/Azure/azure-powershell/pull/16690) but the # parameter set was changed making the above call fail due to a missing ServicePrincipalId parameter. $credential = Retry { $servicePrincipal | New-AzADSpCredential } $spPassword = ConvertTo-SecureString $credential.SecretText -AsPlainText -Force @@ -481,19 +485,19 @@ try { $context = Get-AzContext; # Make sure the provisioner OID is set so we can pass it through to the deployment. - $provisionerApplicationOid = if (!$ProvisionerApplicationId) { + if (!$ProvisionerApplicationId -and !$ProvisionerApplicationOid) { if ($context.Account.Type -eq 'User') { $user = Get-AzADUser -UserPrincipalName $context.Account.Id - $user.Id + $ProvisionerApplicationOid = $user.Id } elseif ($context.Account.Type -eq 'ServicePrincipal') { $sp = Get-AzADServicePrincipal -ApplicationId $context.Account.Id - $sp.Id + $ProvisionerApplicationOid = $sp.Id } else { Write-Warning "Getting the OID for provisioner type '$($context.Account.Type)' is not supported and will not be passed to deployments (seldom required)." } - } else { + } elseif (!$ProvisionerApplicationOid) { $sp = Get-AzADServicePrincipal -ApplicationId $ProvisionerApplicationId - $sp.Id + $ProvisionerApplicationOid = $sp.Id } # If the ServiceDirectory has multiple segments use the last directory name @@ -651,7 +655,9 @@ try { baseName = $BaseName testApplicationId = $TestApplicationId testApplicationOid = "$TestApplicationOid" - provisionerApplicationOid = "$provisionerApplicationOid" + } + if ($ProvisionerApplicationOid) { + $templateParameters["provisionerApplicationOid"] = "$ProvisionerApplicationOid" } if ($TenantId) {