in src/main/java/com/amazonaws/services/neptune/cluster/NeptuneClusterMetadata.java [37:90]
public static NeptuneClusterMetadata createFromEndpoints(Collection<String> endpoints, Supplier<NeptuneClient> amazonNeptuneClientSupplier) {
NeptuneClient neptune = amazonNeptuneClientSupplier.get();
String paginationToken = null;
do {
DescribeDbClustersResponse describeDbClustersResponse = neptune
.describeDBClusters(DescribeDbClustersRequest.builder()
.marker(paginationToken)
.filters(Filter.builder().name("engine").values("neptune").build())
.build()
);
paginationToken = describeDbClustersResponse.marker();
for (DBCluster dbCluster : describeDbClustersResponse.dbClusters()) {
for (String endpoint : endpoints) {
String endpointValue = getEndpointValue(endpoint);
if (endpointValue.equals(getEndpointValue(dbCluster.endpoint()))){
return createFromClusterId(dbCluster.dbClusterIdentifier(), amazonNeptuneClientSupplier);
} else if (endpointValue.equals(getEndpointValue(dbCluster.readerEndpoint()))){
return createFromClusterId(dbCluster.dbClusterIdentifier(), amazonNeptuneClientSupplier);
}
}
}
} while (paginationToken != null);
paginationToken = null;
do {
DescribeDbInstancesResponse describeDbInstancesResponse = neptune.describeDBInstances(
DescribeDbInstancesRequest.builder()
.marker(paginationToken)
.filters(Filter.builder().name("engine").values("neptune").build())
.build()
);
paginationToken = describeDbInstancesResponse.marker();
for (DBInstance dbInstance : describeDbInstancesResponse.dbInstances()) {
for (String endpoint : endpoints) {
String endpointValue = getEndpointValue(endpoint);
if (endpointValue.equals(getEndpointValue(dbInstance.endpoint().address()))){
return createFromClusterId(dbInstance.dbClusterIdentifier(), amazonNeptuneClientSupplier);
}
}
}
} while (paginationToken != null);
throw new IllegalStateException(String.format("Unable to identify cluster ID from endpoints: %s", endpoints));
}