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