in agent/src/main/kotlin/org/jetbrains/teamcity/vault/agent/VaultParametersResolver.kt [33:59]
fun resolveParameters(build: AgentRunningBuild, settings: VaultFeatureSettings, vaultParameters: List<VaultParameter>, token: String, isWriteEngineEnabled: Boolean) {
if (vaultParameters.isEmpty()) {
return
}
val humanReadableParamsDesc = vaultParameters.map { vaultParameter ->
"'param=${vaultParameter.parameterKey}, vaultQuery=${vaultParameter.vaultParameterSettings.vaultQuery}'"
}
val logger = build.buildLogger
logger.message("${humanReadableParamsDesc.size} remote ${"parameter".pluralize(humanReadableParamsDesc)} to resolve: $humanReadableParamsDesc")
val keyToQuery = vaultParameters.associate { parameter ->
parameter.parameterKey to VaultQuery.extract(parameter.vaultParameterSettings.vaultQuery, isWriteEngineEnabled)
}
val replacements = resolveReplacements(build, settings, keyToQuery.values, token).replacements
keyToQuery.forEach { (key, value) ->
val replacement = replacements[value.full]
if (replacement != null) {
when {
key.startsWith(Constants.SYSTEM_PREFIX) -> build.addSharedSystemProperty(key.removePrefix(Constants.SYSTEM_PREFIX), replacement)
key.startsWith(Constants.ENV_PREFIX) -> build.addSharedEnvironmentVariable(key.removePrefix(Constants.ENV_PREFIX), replacement)
else -> build.addSharedConfigParameter(key, replacement)
}
}
}
}