public Vault access()

in plugins/vault/src/main/java/co/elastic/gradle/vault/VaultAccessStrategy.java [33:79]


    public Vault access(
            VaultExtension vault,
            VaultAuthenticationExtension.VaultAuthMethod authMethod,
            BiConsumer<String, Long> tokenAction
    ) {
        if (authMethod instanceof VaultAuthenticationExtension.VaultTokenEnvVar) {
            return authWithToken(vault, ((VaultAuthenticationExtension.VaultTokenEnvVar) authMethod).getToken().get());
        } else if (authMethod instanceof VaultAuthenticationExtension.VaultTokenFile) {
            return authWithToken(vault, ((VaultAuthenticationExtension.VaultTokenFile) authMethod).getToken().get());
        } else if (authMethod instanceof VaultAuthenticationExtension.VaultRoleAndSecretID) {
            return authAndStoreToken(vault, (driver) -> {
                        try {
                            final VaultAuthenticationExtension.VaultRoleAndSecretID roleAndSecret = (VaultAuthenticationExtension.VaultRoleAndSecretID) authMethod;
                            return driver.auth().loginByAppRole(
                                    roleAndSecret.getRoleId().get(),
                                    roleAndSecret.getSecretId().get()
                            );
                        } catch (VaultException e) {
                            throw new GradleException("Failed to authenticate to vault", e);
                        }
                    },
                    tokenAction
            );
        } else if (authMethod instanceof VaultAuthenticationExtension.GithubTokenFile) {
            return authAndStoreToken(vault, (driver) -> {
                        try {
                            return driver.auth().loginByGithub(((VaultAuthenticationExtension.GithubTokenFile) authMethod).getToken().get());
                        } catch (VaultException e) {
                            throw new GradleException("Failed to authenticate to vault", e);
                        }
                    },
                    tokenAction
            );
        } else if (authMethod instanceof VaultAuthenticationExtension.GithubTokenEnv) {
            return authAndStoreToken(vault, (driver) -> {
                        try {
                            return driver.auth().loginByGithub(((VaultAuthenticationExtension.GithubTokenEnv) authMethod).getToken().get());
                        } catch (VaultException e) {
                            throw new GradleException("Failed to authenticate to vault", e);
                        }
                    },
                    tokenAction
            );
        } else {
            throw new IllegalStateException("Unsupported auth method " + authMethod.getClass());
        }
    }