Provides access to available Google Compute zones in a region 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.getZones({});
const foo: gcp.compute.InstanceGroupManager[] = [];
available.then(available => available.names).length.apply(rangeBody => {
for (const range = {value: 0}; range.value < rangeBody; range.value++) {
foo.push(new gcp.compute.InstanceGroupManager(`foo-${range.value}`, {
name: `test-${range.value}`,
instanceTemplate: foobar.selfLink,
baseInstanceName: `foobar-${range.value}`,
zone: available.then(available => available.names[range.value]),
targetSize: 1,
}));
}
});
import pulumi
import pulumi_gcp as gcp
available = gcp.compute.get_zones()
foo = []
def create_foo(range_body):
for range in [{"value": i} for i in range(0, range_body)]:
foo.append(gcp.compute.InstanceGroupManager(f"foo-{range['value']}",
name=f"test-{range['value']}",
instance_template=foobar["selfLink"],
base_instance_name=f"foobar-{range['value']}",
zone=available.names[range["value"]],
target_size=1))
(len(available.names)).apply(create_foo)
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.GetZones(ctx, &compute.GetZonesArgs{}, nil)
if err != nil {
return err
}
var foo []*compute.InstanceGroupManager
for index := 0; index < int(len(available.Names)); index++ {
key0 := index
val0 := index
__res, err := compute.NewInstanceGroupManager(ctx, fmt.Sprintf("foo-%v", key0), &compute.InstanceGroupManagerArgs{
Name: pulumi.Sprintf("test-%v", val0),
InstanceTemplate: foobar.SelfLink,
BaseInstanceName: pulumi.Sprintf("foobar-%v", val0),
Zone: pulumi.String(available.Names[val0]),
TargetSize: pulumi.Int(1),
})
if err != nil {
return err
}
foo = append(foo, __res)
}
return nil
})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Gcp = Pulumi.Gcp;
return await Deployment.RunAsync(() =>
{
var available = Gcp.Compute.GetZones.Invoke();
var foo = new List<Gcp.Compute.InstanceGroupManager>();
for (var rangeIndex = 0; rangeIndex < available.Apply(getZonesResult => getZonesResult.Names).Length; rangeIndex++)
{
var range = new { Value = rangeIndex };
foo.Add(new Gcp.Compute.InstanceGroupManager($"foo-{range.Value}", new()
{
Name = $"test-{range.Value}",
InstanceTemplate = foobar.SelfLink,
BaseInstanceName = $"foobar-{range.Value}",
Zone = available.Apply(getZonesResult => getZonesResult.Names)[range.Value],
TargetSize = 1,
}));
}
});
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.GetZonesArgs;
import com.pulumi.gcp.compute.InstanceGroupManager;
import com.pulumi.gcp.compute.InstanceGroupManagerArgs;
import com.pulumi.codegen.internal.KeyedValue;
import java.util.List;
import java.util.ArrayList;
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.getZones(GetZonesArgs.builder()
.build());
for (var i = 0; i < available.names().length(); i++) {
new InstanceGroupManager("foo-" + i, InstanceGroupManagerArgs.builder()
.name(String.format("test-%s", range.value()))
.instanceTemplate(foobar.selfLink())
.baseInstanceName(String.format("foobar-%s", range.value()))
.zone(available.names()[range.value()])
.targetSize(1)
.build());
}
}
}
Example coming soon!
Using getZones
Two invocation forms are available. The direct form accepts plain arguments and either blocks until the result value is available, or returns a Promise-wrapped result. The output form accepts Input-wrapped arguments and returns an Output-wrapped result.
function getZones(args: GetZonesArgs, opts?: InvokeOptions): Promise<GetZonesResult>
function getZonesOutput(args: GetZonesOutputArgs, opts?: InvokeOptions): Output<GetZonesResult>def get_zones(project: Optional[str] = None,
region: Optional[str] = None,
status: Optional[str] = None,
opts: Optional[InvokeOptions] = None) -> GetZonesResult
def get_zones_output(project: Optional[pulumi.Input[str]] = None,
region: Optional[pulumi.Input[str]] = None,
status: Optional[pulumi.Input[str]] = None,
opts: Optional[InvokeOptions] = None) -> Output[GetZonesResult]func GetZones(ctx *Context, args *GetZonesArgs, opts ...InvokeOption) (*GetZonesResult, error)
func GetZonesOutput(ctx *Context, args *GetZonesOutputArgs, opts ...InvokeOption) GetZonesResultOutput> Note: This function is named GetZones in the Go SDK.
public static class GetZones
{
public static Task<GetZonesResult> InvokeAsync(GetZonesArgs args, InvokeOptions? opts = null)
public static Output<GetZonesResult> Invoke(GetZonesInvokeArgs args, InvokeOptions? opts = null)
}public static CompletableFuture<GetZonesResult> getZones(GetZonesArgs args, InvokeOptions options)
public static Output<GetZonesResult> getZones(GetZonesArgs args, InvokeOptions options)
fn::invoke:
function: gcp:compute/getZones:getZones
arguments:
# arguments dictionaryThe following arguments are supported:
- Project string
- Project from which to list available zones. Defaults to project declared in the provider.
- Region string
- Region from which to list available zones. Defaults to region declared in the provider.
- Status string
- Allows to filter list of zones based on their current status. Status can be either
UPorDOWN. Defaults to no filtering (all available zones - bothUPandDOWN).
- Project string
- Project from which to list available zones. Defaults to project declared in the provider.
- Region string
- Region from which to list available zones. Defaults to region declared in the provider.
- Status string
- Allows to filter list of zones based on their current status. Status can be either
UPorDOWN. Defaults to no filtering (all available zones - bothUPandDOWN).
- project String
- Project from which to list available zones. Defaults to project declared in the provider.
- region String
- Region from which to list available zones. Defaults to region declared in the provider.
- status String
- Allows to filter list of zones based on their current status. Status can be either
UPorDOWN. Defaults to no filtering (all available zones - bothUPandDOWN).
- project string
- Project from which to list available zones. Defaults to project declared in the provider.
- region string
- Region from which to list available zones. Defaults to region declared in the provider.
- status string
- Allows to filter list of zones based on their current status. Status can be either
UPorDOWN. Defaults to no filtering (all available zones - bothUPandDOWN).
- project str
- Project from which to list available zones. Defaults to project declared in the provider.
- region str
- Region from which to list available zones. Defaults to region declared in the provider.
- status str
- Allows to filter list of zones based on their current status. Status can be either
UPorDOWN. Defaults to no filtering (all available zones - bothUPandDOWN).
- project String
- Project from which to list available zones. Defaults to project declared in the provider.
- region String
- Region from which to list available zones. Defaults to region declared in the provider.
- status String
- Allows to filter list of zones based on their current status. Status can be either
UPorDOWN. Defaults to no filtering (all available zones - bothUPandDOWN).
getZones Result
The following output properties are available:
Package Details
- Repository
- Google Cloud (GCP) Classic pulumi/pulumi-gcp
- License
- Apache-2.0
- Notes
- This Pulumi package is based on the
google-betaTerraform Provider.
