override fun updateParameters()

in server/src/main/kotlin/org/jetbrains/teamcity/vault/server/VaultBuildStartContextProcessor.kt [23:48]


    override fun updateParameters(context: BuildStartContext) {
        val build = context.build
        val project = build.buildType?.project ?: return

        val settingsList = try {
            hashiCorpVaultConnectionResolver.getVaultConnections(project)
        } catch (e: ParameterNamespaceCollisionException) {
            val ns = if (e.namespace.isEmpty()) "empty ID" else "ID '${e.namespace}'"
            val message = "Multiple HashiCorp Vault connections with $ns present in project '${e.projectId}'"
            build.addBuildProblem(BuildProblemData.createBuildProblem("VC_${build.buildTypeId}_${e.namespace}_${e.projectId}", "VaultConnection", message))
            build.stop(null, message)
            return
        }

        // Set teamcity.vault.<namespace>.legacy.parameters.present parameter for builds where
        // legacy vault references are present
        settingsList.forEach { settings ->
            if (!isParametersContainLegacyVaultReferences(build, settings, context.sharedParameters)) {
                val ns = if (isDefault(settings.id)) "" else " ('${settings.id}' namespace)"
                LOG.debug("There's no need to fetch HashiCorp Vault$ns parameter for build $build")
                return@forEach
            }
            context.addSharedParameter(getVaultParameterName(settings.id, VaultConstants.LEGACY_REFERENCES_USED_SUFFIX), "true")
        }
        setWriteEngineFeatureFlag(context);
    }