Skip to content

Commit

Permalink
Bring forward working parts
Browse files Browse the repository at this point in the history
  • Loading branch information
danieljurek authored and azure-sdk committed Jun 17, 2024
1 parent 0f74bf8 commit 05d9565
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 31 deletions.
42 changes: 23 additions & 19 deletions eng/common/TestResources/SubConfig-Helpers.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -131,31 +131,35 @@ function SetSubscriptionConfiguration([object]$subscriptionConfiguration)
Write-Host "##vso[task.setvariable variable=SubscriptionConfiguration;]$serialized"
}

function UpdateSubscriptionConfiguration([object]$subscriptionConfigurationBase, [object]$subscriptionConfiguration)
function UpdateSubscriptionConfiguration([object]$subscriptionConfigurationBase, [object]$subscriptionConfiguration, $devOpsOutput = $true)
{
foreach ($pair in $subscriptionConfiguration.GetEnumerator()) {
if ($pair.Value -is [Hashtable]) {
if (!$subscriptionConfigurationBase.ContainsKey($pair.Name)) {
$subscriptionConfigurationBase[$pair.Name] = @{}
}
foreach($nestedPair in $pair.Value.GetEnumerator()) {
# Mark values as secret so we don't print json blobs containing secrets in the logs.
# Prepend underscore to the variable name, so we can still access the variable names via environment
# variables if they get set subsequently.
if (ShouldMarkValueAsSecret "AZURE_" $nestedPair.Name $nestedPair.Value) {
Write-Host "##vso[task.setvariable variable=_$($nestedPair.Name);issecret=true;]$($nestedPair.Value)"
}
$subscriptionConfigurationBase[$pair.Name][$nestedPair.Name] = $nestedPair.Value
}
} else {
if (ShouldMarkValueAsSecret "AZURE_" $pair.Name $pair.Value) {
Write-Host "##vso[task.setvariable variable=_$($pair.Name);issecret=true;]$($pair.Value)"
foreach ($pair in $subscriptionConfiguration.GetEnumerator()) {
if ($pair.Value -is [Hashtable]) {
if (!$subscriptionConfigurationBase.ContainsKey($pair.Name)) {
$subscriptionConfigurationBase[$pair.Name] = @{}
}
foreach($nestedPair in $pair.Value.GetEnumerator()) {
# Mark values as secret so we don't print json blobs containing secrets in the logs.
# Prepend underscore to the variable name, so we can still access the variable names via environment
# variables if they get set subsequently.
if (ShouldMarkValueAsSecret "AZURE_" $nestedPair.Name $nestedPair.Value) {
Write-Host "##vso[task.setvariable variable=_$($nestedPair.Name);issecret=true;]$($nestedPair.Value)"
}
$subscriptionConfigurationBase[$pair.Name] = $pair.Value
$subscriptionConfigurationBase[$pair.Name][$nestedPair.Name] = $nestedPair.Value
}
} else {
if (ShouldMarkValueAsSecret "AZURE_" $pair.Name $pair.Value) {
Write-Host "##vso[task.setvariable variable=_$($pair.Name);issecret=true;]$($pair.Value)"
}
$subscriptionConfigurationBase[$pair.Name] = $pair.Value
}
}

if ($devOpsOutput) {
$serialized = $subscriptionConfigurationBase | ConvertTo-Json -Compress
Write-Host ($subscriptionConfigurationBase | ConvertTo-Json)
Write-Host "##vso[task.setvariable variable=SubscriptionConfiguration;]$serialized"
}

return $subscriptionConfigurationBase
}
42 changes: 30 additions & 12 deletions eng/common/TestResources/build-test-resource-config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ parameters:
- name: EnvVars
type: object
default: null
- name: SubscriptionConfigurationFilePath
type: string
default: ''
- name: SubscriptionConfigurationFilePaths
type: object
default: null

steps:
- ${{ if parameters.SubscriptionConfiguration }}:
Expand All @@ -22,6 +22,10 @@ steps:
. ./eng/common/TestResources/SubConfig-Helpers.ps1
SetSubscriptionConfiguration $config
Write-Host ($finalConfig | ConvertTo-Json)
$serialized = $finalConfig | ConvertTo-Json -Compress
Write-Host "##vso[task.setvariable variable=SubscriptionConfiguration;]$serialized"
displayName: Initialize SubscriptionConfiguration variable
${{ if parameters.EnvVars }}:
env: ${{ parameters.EnvVars }}
Expand All @@ -48,15 +52,29 @@ steps:
${{ if parameters.EnvVars }}:
env: ${{ parameters.EnvVars }}
- ${{ if ne(parameters.SubscriptionConfigurationFilePath, '') }}:
- ${{ if parameters.SubscriptionConfigurationFilePaths }}:
- pwsh: |
$configBase = @'
$(SubscriptionConfiguration)
'@ | ConvertFrom-Json -AsHashtable
$config = Get-Content '${{ parameters.SubscriptionConfigurationFilePath }}' `
| ConvertFrom-Json -AsHashtable
. ./eng/common/TestResources/SubConfig-Helpers.ps1
UpdateSubscriptionConfiguration $configBase $config
displayName: Merge in Subscription Configuration File Path
$configBase = @{}
if ('$(SubscriptionConfiguration)'.Trim() -ne '') {
# Tabbing of this sort is required for the here-string to work
$configBase = @'
$(SubscriptionConfiguration)
'@ | ConvertFrom-Json -AsHashtable
}
$configFiles = @'
${{ convertToJson(parameters.SubscriptionConfigurationFilePaths) }}
'@ | ConvertFrom-Json -AsHashtable
foreach ($file in $configFiles) {
$config = Get-Content $file | ConvertFrom-Json -AsHashtable
$configBase = UpdateSubscriptionConfiguration $configBase $config -devOpsOutput $false
}
$serialized = $configBase | ConvertTo-Json -Compress
Write-Host ($configBase | ConvertTo-Json)
Write-Host "##vso[task.setvariable variable=SubscriptionConfiguration;]$serialized"
displayName: Merge in Subscription Configuration File Paths
${{ if parameters.EnvVars }}:
env: ${{ parameters.EnvVars }}
env: ${{ parameters.EnvVars }}

0 comments on commit 05d9565

Please sign in to comment.