in alloydb-jdbc-connector/src/main/java/com/google/cloud/alloydb/DefaultConnectionInfoRepository.java [60:94]
public ListenableFuture<ConnectionInfo> getConnectionInfo(
InstanceName instanceName, KeyPair keyPair) {
ListenableFuture<com.google.cloud.alloydb.v1alpha.ConnectionInfo> infoFuture =
executor.submit(() -> getConnectionInfo(instanceName));
ListenableFuture<GenerateClientCertificateResponse> clientCertificateResponseFuture =
executor.submit(() -> getGenerateClientCertificateResponse(instanceName, keyPair));
return Futures.whenAllComplete(infoFuture, clientCertificateResponseFuture)
.call(
() -> {
com.google.cloud.alloydb.v1alpha.ConnectionInfo info = Futures.getDone(infoFuture);
GenerateClientCertificateResponse certificateResponse =
Futures.getDone(clientCertificateResponseFuture);
List<ByteString> certificateChainBytes =
certificateResponse.getPemCertificateChainList().asByteStringList();
List<X509Certificate> certificateChain = new ArrayList<>();
for (ByteString certificateChainByte : certificateChainBytes) {
certificateChain.add(parseCertificate(certificateChainByte));
}
X509Certificate clientCertificate = certificateChain.get(0);
ByteString caCertificateBytes = certificateResponse.getCaCertBytes();
X509Certificate caCertificate = parseCertificate(caCertificateBytes);
return new ConnectionInfo(
info.getIpAddress(),
info.getPublicIpAddress(),
info.getPscDnsName(),
info.getInstanceUid(),
clientCertificate,
certificateChain,
caCertificate);
},
executor);
}