private DBCluster createCluster()

in src/main/java/com/amazonaws/services/neptune/cluster/AddCloneTask.java [151:194]


    private DBCluster createCluster(NeptuneClusterMetadata sourceClusterMetadata,
                                    NeptuneClient neptune,
                                    DBClusterParameterGroup
                                            dbClusterParameterGroup) {

        System.err.println("Creating target cluster...");

        RestoreDbClusterToPointInTimeRequest.Builder restoreDbClusterToPointInTimeRequestBuilder = RestoreDbClusterToPointInTimeRequest.builder()
                .sourceDBClusterIdentifier(sourceClusterId)
                .dbClusterIdentifier(targetClusterId)
                .restoreType("copy-on-write")
                .useLatestRestorableTime(true)
                .port(sourceClusterMetadata.port())
                .dbClusterParameterGroupName(dbClusterParameterGroup.dbClusterParameterGroupName())
                .enableIAMDatabaseAuthentication(sourceClusterMetadata.isIAMDatabaseAuthenticationEnabled())
                .dbSubnetGroupName(sourceClusterMetadata.dbSubnetGroupName())
                .vpcSecurityGroupIds(sourceClusterMetadata.vpcSecurityGroupIds())
                .tags(getTags(sourceClusterMetadata.clusterId()));

        if (this.enableAuditLogs) {
            restoreDbClusterToPointInTimeRequestBuilder = restoreDbClusterToPointInTimeRequestBuilder.enableCloudwatchLogsExports("audit");
        }

        DBCluster targetDbCluster = neptune.restoreDBClusterToPointInTime(restoreDbClusterToPointInTimeRequestBuilder.build()).dbCluster();

        String clusterStatus = targetDbCluster.status();

        while (clusterStatus.equals("creating")) {
            try {
                Thread.sleep(10000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            clusterStatus = neptune.describeDBClusters(
                            DescribeDbClustersRequest.builder()
                                    .dbClusterIdentifier(targetDbCluster.dbClusterIdentifier())
                                    .build())
                    .dbClusters()
                    .get(0)
                    .status();
        }

        return targetDbCluster;
    }