getZones function

Future<GetZonesResult> getZones(
  1. GetZonesArgs args, {
  2. InvokeOptions? options,
})

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 (let range = 0; range < rangeBody; range++) {
        foo.push(new gcp.compute.InstanceGroupManager(`foo-${range}`, {
            name: `test-${range}`,
            instanceTemplate: foobar.selfLink,
            baseInstanceName: `foobar-${range}`,
            zone: available.then(available => available.names[range]),
            targetSize: 1,
        }));
    }
});
import pulumi
from typing import Any
import pulumi_gcp as gcp

available = gcp.compute.get_zones()
foo: list[gcp.compute.InstanceGroupManager] = []
def create_foo(range_body):
    for foo_range in [{"value": i} for i in range(0, range_body)]:
        foo.append(gcp.compute.InstanceGroupManager(f"foo-{foo_range['value']}",
            name=f"test-{foo_range['value']}",
            instance_template=foobar["selfLink"],
            base_instance_name=f"foobar-{foo_range['value']}",
            zone=available.names[foo_range["value"]],
            target_size=1))

(len(available.names)).apply(create_foo)
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>();
    available.Apply(getZonesResult => getZonesResult.Names).Length().Apply(rangeBody =>
    {
        for (var rangeIndex = 0; rangeIndex < rangeBody; 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,
            }));
        }
        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.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
	})
}
pulumi {
  required_providers {
    gcp = {
      source = "pulumi/gcp"
    }
  }
}

data "gcp_compute_getzones" "available" {
}

resource "gcp_compute_instancegroupmanager" "foo" {
  count              = length(data.gcp_compute_getzones.available.names)
  name               ="test-${count.index}"
  instance_template  = foobar.selfLink
  base_instance_name ="foobar-${count.index}"
  zone               = data.gcp_compute_getzones.available.names[count.index]
  target_size        = 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.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.getZones(GetZonesArgs.builder()
            .build());

        for (var i = 0; i < available.names().size(); i++) {
            new InstanceGroupManager("foo-" + i, InstanceGroupManagerArgs.builder()
                .name(String.format("test-%s", range.value()))
                .instanceTemplate(foobar.get("selfLink"))
                .baseInstanceName(String.format("foobar-%s", range.value()))
                .zone(available.names()[range.value()])
                .targetSize(1)
                .build());


}
    }
}

args Arguments passed to this invoke. Arguments for getZones. options Invoke options controlling this call.

Implementation

Future<GetZonesResult> getZones(
  GetZonesArgs args, {
  pulumi.InvokeOptions? options,
}) async {
  final deployment = pulumi.Deployment.instance;
  final result = await deployment.invoke<Map<String, dynamic>>(
    'gcp:compute/getZones:getZones',
    args.toMap(),
    options: pulumi.toDeploymentInvokeOptions(options),
  );
  return GetZonesResult.fromMap(result);
}