in bigtable/src/create_cluster.php [44:115]
function create_cluster(
string $projectId,
string $instanceId,
string $clusterId,
string $locationId = 'us-east1-b'
): void {
$instanceAdminClient = new BigtableInstanceAdminClient();
$instanceName = $instanceAdminClient->instanceName($projectId, $instanceId);
$clusterName = $instanceAdminClient->clusterName($projectId, $instanceId, $clusterId);
printf('Adding Cluster to Instance %s' . PHP_EOL, $instanceId);
try {
$getInstanceRequest = (new GetInstanceRequest())
->setName($instanceName);
$instanceAdminClient->getInstance($getInstanceRequest);
} catch (ApiException $e) {
if ($e->getStatus() === 'NOT_FOUND') {
printf('Instance %s does not exists.' . PHP_EOL, $instanceId);
return;
} else {
throw $e;
}
}
printf('Listing Clusters:' . PHP_EOL);
$storage_type = StorageType::SSD;
$serve_nodes = 3;
$listClustersRequest = (new ListClustersRequest())
->setParent($instanceName);
$clustersBefore = $instanceAdminClient->listClusters($listClustersRequest)->getClusters();
$clusters = $clustersBefore->getIterator();
foreach ($clusters as $cluster) {
print($cluster->getName() . PHP_EOL);
}
$cluster = new Cluster();
$cluster->setServeNodes($serve_nodes);
$cluster->setDefaultStorageType($storage_type);
$cluster->setLocation(
$instanceAdminClient->locationName(
$projectId,
$locationId
)
);
try {
$getClusterRequest = (new GetClusterRequest())
->setName($clusterName);
$instanceAdminClient->getCluster($getClusterRequest);
printf('Cluster %s already exists, aborting...', $clusterId);
} catch (ApiException $e) {
if ($e->getStatus() === 'NOT_FOUND') {
$createClusterRequest = (new CreateClusterRequest())
->setParent($instanceName)
->setClusterId($clusterId)
->setCluster($cluster);
$operationResponse = $instanceAdminClient->createCluster($createClusterRequest);
$operationResponse->pollUntilComplete();
if ($operationResponse->operationSucceeded()) {
$result = $operationResponse->getResult();
printf('Cluster created: %s', $clusterId);
} else {
$error = $operationResponse->getError();
printf('Cluster not created: %s', $error?->getMessage());
}
} else {
throw $e;
}
}
}