public static NeptuneClusterMetadata createFromEndpoints()

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));

    }