getRegions function
Provides access to available Google Compute regions for a given project. See more about regions and zones in the upstream docs.
import * as pulumi from "@pulumi/pulumi";
import * as gcp from "@pulumi/gcp";
const available = gcp.compute.getRegions({});
const cluster: gcp.compute.Subnetwork[] = [];
available.then(available => available.names).length.apply(rangeBody => {
for (let range = 0; range < rangeBody; range++) {
cluster.push(new gcp.compute.Subnetwork(`cluster-${range}`, {
name: "my-network",
ipCidrRange: `10.36.${range}.0/24`,
network: "my-network",
region: available.then(available => available.names[range]),
}));
}
});
import pulumi
from typing import Any
import pulumi_gcp as gcp
available = gcp.compute.get_regions()
cluster: list[gcp.compute.Subnetwork] = []
def create_cluster(range_body):
for cluster_range in [{"value": i} for i in range(0, range_body)]:
cluster.append(gcp.compute.Subnetwork(f"cluster-{cluster_range['value']}",
name="my-network",
ip_cidr_range=f"10.36.{cluster_range['value']}.0/24",
network="my-network",
region=available.names[cluster_range["value"]]))
(len(available.names)).apply(create_cluster)
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Gcp = Pulumi.Gcp;
return await Deployment.RunAsync(() =>
{
var available = Gcp.Compute.GetRegions.Invoke();
var cluster = new List<Gcp.Compute.Subnetwork>();
available.Apply(getRegionsResult => getRegionsResult.Names).Length().Apply(rangeBody =>
{
for (var rangeIndex = 0; rangeIndex < rangeBody; rangeIndex++)
{
var range = new { Value = rangeIndex };
cluster.Add(new Gcp.Compute.Subnetwork($"cluster-{range.Value}", new()
{
Name = "my-network",
IpCidrRange = $"10.36.{range.Value}.0/24",
Network = "my-network",
Region = available.Apply(getRegionsResult => getRegionsResult.Names)[range.Value],
}));
}
return 0;
});
});
package main
import (
"fmt"
"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/compute"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
available, err := compute.GetRegions(ctx, &compute.GetRegionsArgs{}, nil)
if err != nil {
return err
}
var cluster []*compute.Subnetwork
for index := 0; index < int(len(available.Names)); index++ {
key0 := index
val0 := index
__res, err := compute.NewSubnetwork(ctx, fmt.Sprintf("cluster-%v", key0), &compute.SubnetworkArgs{
Name: pulumi.String("my-network"),
IpCidrRange: pulumi.Sprintf("10.36.%v.0/24", val0),
Network: pulumi.String("my-network"),
Region: pulumi.String(available.Names[val0]),
})
if err != nil {
return err
}
cluster = append(cluster, __res)
}
return nil
})
}
pulumi {
required_providers {
gcp = {
source = "pulumi/gcp"
}
}
}
data "gcp_compute_getregions" "available" {
}
resource "gcp_compute_subnetwork" "cluster" {
count = length(data.gcp_compute_getregions.available.names)
name = "my-network"
ip_cidr_range ="10.36.${count.index}.0/24"
network = "my-network"
region = data.gcp_compute_getregions.available.names[count.index]
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.compute.ComputeFunctions;
import com.pulumi.gcp.compute.inputs.GetRegionsArgs;
import com.pulumi.gcp.compute.Subnetwork;
import com.pulumi.gcp.compute.SubnetworkArgs;
import com.pulumi.codegen.internal.KeyedValue;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
final var available = ComputeFunctions.getRegions(GetRegionsArgs.builder()
.build());
for (var i = 0; i < available.names().size(); i++) {
new Subnetwork("cluster-" + i, SubnetworkArgs.builder()
.name("my-network")
.ipCidrRange(String.format("10.36.%s.0/24", range.value()))
.network("my-network")
.region(available.names()[range.value()])
.build());
}
}
}
args Arguments passed to this invoke. Arguments for getRegions.
options Invoke options controlling this call.
Implementation
Future<GetRegionsResult> getRegions(
GetRegionsArgs args, {
pulumi.InvokeOptions? options,
}) async {
final deployment = pulumi.Deployment.instance;
final result = await deployment.invoke<Map<String, dynamic>>(
'gcp:compute/getRegions:getRegions',
args.toMap(),
options: pulumi.toDeploymentInvokeOptions(options),
);
return GetRegionsResult.fromMap(result);
}