Add secret provider functionality and enhance configuration data resolution
This commit is contained in:
42
Private/Resolve-ConfigurationDataParameterSecrets.ps1
Normal file
42
Private/Resolve-ConfigurationDataParameterSecrets.ps1
Normal file
@@ -0,0 +1,42 @@
|
||||
function Resolve-ConfigurationDataParameterSecrets {
|
||||
[CmdletBinding()]
|
||||
Param(
|
||||
[Parameter(Mandatory=$true)]
|
||||
[System.Collections.Hashtable]
|
||||
$ConfigurationData,
|
||||
|
||||
[Parameter(Mandatory=$false)]
|
||||
[hashtable]
|
||||
$ProviderSettings = @{}
|
||||
)
|
||||
|
||||
$ResolvedConfigurationData = $ConfigurationData.Clone()
|
||||
|
||||
if($ResolvedConfigurationData.ContainsKey("Parameters")){
|
||||
$ResolvedConfigurationData.Parameters = $ResolvedConfigurationData.Parameters.Clone()
|
||||
|
||||
foreach($Parameter in @($ResolvedConfigurationData.Parameters.GetEnumerator())){
|
||||
$Definition = $Parameter.Value
|
||||
if(-not (Test-ConfigurationDataMap -Value $Definition)){
|
||||
continue
|
||||
}
|
||||
|
||||
$Definition = $Definition.Clone()
|
||||
$ResolvedConfigurationData.Parameters[$Parameter.Name] = $Definition
|
||||
|
||||
$TypeName = [string](Get-ConfigurationDataMapValue -Map $Definition -Key "Type" -DefaultValue "")
|
||||
if($TypeName -notin @("credential", "secureString")){
|
||||
continue
|
||||
}
|
||||
|
||||
$ExpectedType = $TypeName.ToLowerInvariant()
|
||||
foreach($ValueKey in @("Value", "DefaultValue")){
|
||||
if((Test-ConfigurationDataMapContainsKey -Map $Definition -Key $ValueKey) -and (Test-ConfigurationDataSecretReference -Value $Definition[$ValueKey])){
|
||||
$Definition[$ValueKey] = Resolve-ConfigurationDataSecretReference -Reference $Definition[$ValueKey] -ExpectedType $ExpectedType -ProviderSettings $ProviderSettings
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $ResolvedConfigurationData
|
||||
}
|
||||
Reference in New Issue
Block a user