Instance class

A Google Cloud Looker instance.

To get more information about Instance, see:

Example Usage

Looker Instance Basic

import * as pulumi from "@pulumi/pulumi";
import * as gcp from "@pulumi/gcp";

const looker_instance = new gcp.looker.Instance("looker-instance", {
    name: "my-instance",
    platformEdition: "LOOKER_CORE_STANDARD_ANNUAL",
    region: "us-central1",
    oauthConfig: {
        clientId: "my-client-id",
        clientSecret: "my-client-secret",
    },
    deletionPolicy: "DEFAULT",
});
import pulumi
import pulumi_gcp as gcp

looker_instance = gcp.looker.Instance("looker-instance",
    name="my-instance",
    platform_edition="LOOKER_CORE_STANDARD_ANNUAL",
    region="us-central1",
    oauth_config={
        "client_id": "my-client-id",
        "client_secret": "my-client-secret",
    },
    deletion_policy="DEFAULT")
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Gcp = Pulumi.Gcp;

return await Deployment.RunAsync(() =>
{
    var looker_instance = new Gcp.Looker.Instance("looker-instance", new()
    {
        Name = "my-instance",
        PlatformEdition = "LOOKER_CORE_STANDARD_ANNUAL",
        Region = "us-central1",
        OauthConfig = new Gcp.Looker.Inputs.InstanceOauthConfigArgs
        {
            ClientId = "my-client-id",
            ClientSecret = "my-client-secret",
        },
        DeletionPolicy = "DEFAULT",
    });

});
package main

import (
	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/looker"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := looker.NewInstance(ctx, "looker-instance", &looker.InstanceArgs{
			Name:            pulumi.String("my-instance"),
			PlatformEdition: pulumi.String("LOOKER_CORE_STANDARD_ANNUAL"),
			Region:          pulumi.String("us-central1"),
			OauthConfig: &looker.InstanceOauthConfigArgs{
				ClientId:     pulumi.String("my-client-id"),
				ClientSecret: pulumi.String("my-client-secret"),
			},
			DeletionPolicy: pulumi.String("DEFAULT"),
		})
		if err != nil {
			return err
		}
		return nil
	})
}
pulumi {
  required_providers {
    gcp = {
      source = "pulumi/gcp"
    }
  }
}

resource "gcp_looker_instance" "looker-instance" {
  name             = "my-instance"
  platform_edition = "LOOKER_CORE_STANDARD_ANNUAL"
  region           = "us-central1"
  oauth_config = {
    client_id     = "my-client-id"
    client_secret = "my-client-secret"
  }
  deletion_policy = "DEFAULT"
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.looker.Instance;
import com.pulumi.gcp.looker.InstanceArgs;
import com.pulumi.gcp.looker.inputs.InstanceOauthConfigArgs;
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) {
        var looker_instance = new Instance("looker-instance", InstanceArgs.builder()
            .name("my-instance")
            .platformEdition("LOOKER_CORE_STANDARD_ANNUAL")
            .region("us-central1")
            .oauthConfig(InstanceOauthConfigArgs.builder()
                .clientId("my-client-id")
                .clientSecret("my-client-secret")
                .build())
            .deletionPolicy("DEFAULT")
            .build());

    }
}
resources:
  looker-instance:
    type: gcp:looker:Instance
    properties:
      name: my-instance
      platformEdition: LOOKER_CORE_STANDARD_ANNUAL
      region: us-central1
      oauthConfig:
        clientId: my-client-id
        clientSecret: my-client-secret
      deletionPolicy: DEFAULT

Looker Instance Full

import * as pulumi from "@pulumi/pulumi";
import * as gcp from "@pulumi/gcp";

const looker_instance = new gcp.looker.Instance("looker-instance", {
    name: "my-instance",
    platformEdition: "LOOKER_CORE_STANDARD_ANNUAL",
    region: "us-central1",
    publicIpEnabled: true,
    geminiEnabled: true,
    adminSettings: {
        allowedEmailDomains: ["google.com"],
    },
    maintenanceWindow: {
        dayOfWeek: "THURSDAY",
        startTime: {
            hours: 22,
            minutes: 0,
            seconds: 0,
            nanos: 0,
        },
    },
    denyMaintenancePeriod: {
        startDate: {
            year: 2050,
            month: 1,
            day: 1,
        },
        endDate: {
            year: 2050,
            month: 2,
            day: 1,
        },
        time: {
            hours: 10,
            minutes: 0,
            seconds: 0,
            nanos: 0,
        },
    },
    oauthConfig: {
        clientId: "my-client-id",
        clientSecret: "my-client-secret",
    },
});
import pulumi
import pulumi_gcp as gcp

looker_instance = gcp.looker.Instance("looker-instance",
    name="my-instance",
    platform_edition="LOOKER_CORE_STANDARD_ANNUAL",
    region="us-central1",
    public_ip_enabled=True,
    gemini_enabled=True,
    admin_settings={
        "allowed_email_domains": ["google.com"],
    },
    maintenance_window={
        "day_of_week": "THURSDAY",
        "start_time": {
            "hours": 22,
            "minutes": 0,
            "seconds": 0,
            "nanos": 0,
        },
    },
    deny_maintenance_period={
        "start_date": {
            "year": 2050,
            "month": 1,
            "day": 1,
        },
        "end_date": {
            "year": 2050,
            "month": 2,
            "day": 1,
        },
        "time": {
            "hours": 10,
            "minutes": 0,
            "seconds": 0,
            "nanos": 0,
        },
    },
    oauth_config={
        "client_id": "my-client-id",
        "client_secret": "my-client-secret",
    })
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Gcp = Pulumi.Gcp;

return await Deployment.RunAsync(() =>
{
    var looker_instance = new Gcp.Looker.Instance("looker-instance", new()
    {
        Name = "my-instance",
        PlatformEdition = "LOOKER_CORE_STANDARD_ANNUAL",
        Region = "us-central1",
        PublicIpEnabled = true,
        GeminiEnabled = true,
        AdminSettings = new Gcp.Looker.Inputs.InstanceAdminSettingsArgs
        {
            AllowedEmailDomains = new[]
            {
                "google.com",
            },
        },
        MaintenanceWindow = new Gcp.Looker.Inputs.InstanceMaintenanceWindowArgs
        {
            DayOfWeek = "THURSDAY",
            StartTime = new Gcp.Looker.Inputs.InstanceMaintenanceWindowStartTimeArgs
            {
                Hours = 22,
                Minutes = 0,
                Seconds = 0,
                Nanos = 0,
            },
        },
        DenyMaintenancePeriod = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodArgs
        {
            StartDate = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodStartDateArgs
            {
                Year = 2050,
                Month = 1,
                Day = 1,
            },
            EndDate = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodEndDateArgs
            {
                Year = 2050,
                Month = 2,
                Day = 1,
            },
            Time = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodTimeArgs
            {
                Hours = 10,
                Minutes = 0,
                Seconds = 0,
                Nanos = 0,
            },
        },
        OauthConfig = new Gcp.Looker.Inputs.InstanceOauthConfigArgs
        {
            ClientId = "my-client-id",
            ClientSecret = "my-client-secret",
        },
    });

});
package main

import (
	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/looker"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := looker.NewInstance(ctx, "looker-instance", &looker.InstanceArgs{
			Name:            pulumi.String("my-instance"),
			PlatformEdition: pulumi.String("LOOKER_CORE_STANDARD_ANNUAL"),
			Region:          pulumi.String("us-central1"),
			PublicIpEnabled: pulumi.Bool(true),
			GeminiEnabled:   pulumi.Bool(true),
			AdminSettings: &looker.InstanceAdminSettingsArgs{
				AllowedEmailDomains: pulumi.StringArray{
					pulumi.String("google.com"),
				},
			},
			MaintenanceWindow: &looker.InstanceMaintenanceWindowArgs{
				DayOfWeek: pulumi.String("THURSDAY"),
				StartTime: &looker.InstanceMaintenanceWindowStartTimeArgs{
					Hours:   pulumi.Int(22),
					Minutes: pulumi.Int(0),
					Seconds: pulumi.Int(0),
					Nanos:   pulumi.Int(0),
				},
			},
			DenyMaintenancePeriod: &looker.InstanceDenyMaintenancePeriodArgs{
				StartDate: &looker.InstanceDenyMaintenancePeriodStartDateArgs{
					Year:  pulumi.Int(2050),
					Month: pulumi.Int(1),
					Day:   pulumi.Int(1),
				},
				EndDate: &looker.InstanceDenyMaintenancePeriodEndDateArgs{
					Year:  pulumi.Int(2050),
					Month: pulumi.Int(2),
					Day:   pulumi.Int(1),
				},
				Time: &looker.InstanceDenyMaintenancePeriodTimeArgs{
					Hours:   pulumi.Int(10),
					Minutes: pulumi.Int(0),
					Seconds: pulumi.Int(0),
					Nanos:   pulumi.Int(0),
				},
			},
			OauthConfig: &looker.InstanceOauthConfigArgs{
				ClientId:     pulumi.String("my-client-id"),
				ClientSecret: pulumi.String("my-client-secret"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
pulumi {
  required_providers {
    gcp = {
      source = "pulumi/gcp"
    }
  }
}

resource "gcp_looker_instance" "looker-instance" {
  name              = "my-instance"
  platform_edition  = "LOOKER_CORE_STANDARD_ANNUAL"
  region            = "us-central1"
  public_ip_enabled = true
  gemini_enabled    = true
  admin_settings = {
    allowed_email_domains = ["google.com"]
  }
  maintenance_window = {
    day_of_week = "THURSDAY"
    start_time = {
      hours   = 22
      minutes = 0
      seconds = 0
      nanos   = 0
    }
  }
  deny_maintenance_period = {
    start_date = {
      year  = 2050
      month = 1
      day   = 1
    }
    end_date = {
      year  = 2050
      month = 2
      day   = 1
    }
    time = {
      hours   = 10
      minutes = 0
      seconds = 0
      nanos   = 0
    }
  }
  oauth_config = {
    client_id     = "my-client-id"
    client_secret = "my-client-secret"
  }
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.looker.Instance;
import com.pulumi.gcp.looker.InstanceArgs;
import com.pulumi.gcp.looker.inputs.InstanceAdminSettingsArgs;
import com.pulumi.gcp.looker.inputs.InstanceMaintenanceWindowArgs;
import com.pulumi.gcp.looker.inputs.InstanceMaintenanceWindowStartTimeArgs;
import com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodArgs;
import com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodStartDateArgs;
import com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodEndDateArgs;
import com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodTimeArgs;
import com.pulumi.gcp.looker.inputs.InstanceOauthConfigArgs;
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) {
        var looker_instance = new Instance("looker-instance", InstanceArgs.builder()
            .name("my-instance")
            .platformEdition("LOOKER_CORE_STANDARD_ANNUAL")
            .region("us-central1")
            .publicIpEnabled(true)
            .geminiEnabled(true)
            .adminSettings(InstanceAdminSettingsArgs.builder()
                .allowedEmailDomains("google.com")
                .build())
            .maintenanceWindow(InstanceMaintenanceWindowArgs.builder()
                .dayOfWeek("THURSDAY")
                .startTime(InstanceMaintenanceWindowStartTimeArgs.builder()
                    .hours(22)
                    .minutes(0)
                    .seconds(0)
                    .nanos(0)
                    .build())
                .build())
            .denyMaintenancePeriod(InstanceDenyMaintenancePeriodArgs.builder()
                .startDate(InstanceDenyMaintenancePeriodStartDateArgs.builder()
                    .year(2050)
                    .month(1)
                    .day(1)
                    .build())
                .endDate(InstanceDenyMaintenancePeriodEndDateArgs.builder()
                    .year(2050)
                    .month(2)
                    .day(1)
                    .build())
                .time(InstanceDenyMaintenancePeriodTimeArgs.builder()
                    .hours(10)
                    .minutes(0)
                    .seconds(0)
                    .nanos(0)
                    .build())
                .build())
            .oauthConfig(InstanceOauthConfigArgs.builder()
                .clientId("my-client-id")
                .clientSecret("my-client-secret")
                .build())
            .build());

    }
}
resources:
  looker-instance:
    type: gcp:looker:Instance
    properties:
      name: my-instance
      platformEdition: LOOKER_CORE_STANDARD_ANNUAL
      region: us-central1
      publicIpEnabled: true
      geminiEnabled: true
      adminSettings:
        allowedEmailDomains:
          - google.com
      maintenanceWindow:
        dayOfWeek: THURSDAY
        startTime:
          hours: 22
          minutes: 0
          seconds: 0
          nanos: 0
      denyMaintenancePeriod:
        startDate:
          year: 2050
          month: 1
          day: 1
        endDate:
          year: 2050
          month: 2
          day: 1
        time:
          hours: 10
          minutes: 0
          seconds: 0
          nanos: 0
      oauthConfig:
        clientId: my-client-id
        clientSecret: my-client-secret

Looker Instance Fips

import * as pulumi from "@pulumi/pulumi";
import * as gcp from "@pulumi/gcp";

const looker_instance = new gcp.looker.Instance("looker-instance", {
    name: "my-instance-fips",
    platformEdition: "LOOKER_CORE_ENTERPRISE_ANNUAL",
    region: "us-central1",
    publicIpEnabled: true,
    fipsEnabled: true,
    oauthConfig: {
        clientId: "my-client-id",
        clientSecret: "my-client-secret",
    },
});
import pulumi
import pulumi_gcp as gcp

looker_instance = gcp.looker.Instance("looker-instance",
    name="my-instance-fips",
    platform_edition="LOOKER_CORE_ENTERPRISE_ANNUAL",
    region="us-central1",
    public_ip_enabled=True,
    fips_enabled=True,
    oauth_config={
        "client_id": "my-client-id",
        "client_secret": "my-client-secret",
    })
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Gcp = Pulumi.Gcp;

return await Deployment.RunAsync(() =>
{
    var looker_instance = new Gcp.Looker.Instance("looker-instance", new()
    {
        Name = "my-instance-fips",
        PlatformEdition = "LOOKER_CORE_ENTERPRISE_ANNUAL",
        Region = "us-central1",
        PublicIpEnabled = true,
        FipsEnabled = true,
        OauthConfig = new Gcp.Looker.Inputs.InstanceOauthConfigArgs
        {
            ClientId = "my-client-id",
            ClientSecret = "my-client-secret",
        },
    });

});
package main

import (
	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/looker"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := looker.NewInstance(ctx, "looker-instance", &looker.InstanceArgs{
			Name:            pulumi.String("my-instance-fips"),
			PlatformEdition: pulumi.String("LOOKER_CORE_ENTERPRISE_ANNUAL"),
			Region:          pulumi.String("us-central1"),
			PublicIpEnabled: pulumi.Bool(true),
			FipsEnabled:     pulumi.Bool(true),
			OauthConfig: &looker.InstanceOauthConfigArgs{
				ClientId:     pulumi.String("my-client-id"),
				ClientSecret: pulumi.String("my-client-secret"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
pulumi {
  required_providers {
    gcp = {
      source = "pulumi/gcp"
    }
  }
}

resource "gcp_looker_instance" "looker-instance" {
  name              = "my-instance-fips"
  platform_edition  = "LOOKER_CORE_ENTERPRISE_ANNUAL"
  region            = "us-central1"
  public_ip_enabled = true
  fips_enabled      = true
  oauth_config = {
    client_id     = "my-client-id"
    client_secret = "my-client-secret"
  }
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.looker.Instance;
import com.pulumi.gcp.looker.InstanceArgs;
import com.pulumi.gcp.looker.inputs.InstanceOauthConfigArgs;
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) {
        var looker_instance = new Instance("looker-instance", InstanceArgs.builder()
            .name("my-instance-fips")
            .platformEdition("LOOKER_CORE_ENTERPRISE_ANNUAL")
            .region("us-central1")
            .publicIpEnabled(true)
            .fipsEnabled(true)
            .oauthConfig(InstanceOauthConfigArgs.builder()
                .clientId("my-client-id")
                .clientSecret("my-client-secret")
                .build())
            .build());

    }
}
resources:
  looker-instance:
    type: gcp:looker:Instance
    properties:
      name: my-instance-fips
      platformEdition: LOOKER_CORE_ENTERPRISE_ANNUAL
      region: us-central1
      publicIpEnabled: true
      fipsEnabled: true
      oauthConfig:
        clientId: my-client-id
        clientSecret: my-client-secret

Looker Instance Enterprise Full

import * as pulumi from "@pulumi/pulumi";
import * as gcp from "@pulumi/gcp";

const lookerNetwork = new gcp.compute.Network("looker_network", {name: "looker-network"});
const lookerRange = new gcp.compute.GlobalAddress("looker_range", {
    name: "looker-range",
    purpose: "VPC_PEERING",
    addressType: "INTERNAL",
    prefixLength: 20,
    network: lookerNetwork.id,
});
const lookerVpcConnection = new gcp.servicenetworking.Connection("looker_vpc_connection", {
    network: lookerNetwork.id,
    service: "servicenetworking.googleapis.com",
    reservedPeeringRanges: [lookerRange.name],
});
const looker_instance = new gcp.looker.Instance("looker-instance", {
    name: "my-instance",
    platformEdition: "LOOKER_CORE_ENTERPRISE_ANNUAL",
    region: "us-central1",
    privateIpEnabled: true,
    publicIpEnabled: false,
    geminiEnabled: true,
    reservedRange: lookerRange.name,
    consumerNetwork: lookerNetwork.id,
    adminSettings: {
        allowedEmailDomains: ["google.com"],
    },
    encryptionConfig: {
        kmsKeyName: "looker-kms-key",
    },
    maintenanceWindow: {
        dayOfWeek: "THURSDAY",
        startTime: {
            hours: 22,
            minutes: 0,
            seconds: 0,
            nanos: 0,
        },
    },
    denyMaintenancePeriod: {
        startDate: {
            year: 2050,
            month: 1,
            day: 1,
        },
        endDate: {
            year: 2050,
            month: 2,
            day: 1,
        },
        time: {
            hours: 10,
            minutes: 0,
            seconds: 0,
            nanos: 0,
        },
    },
    oauthConfig: {
        clientId: "my-client-id",
        clientSecret: "my-client-secret",
    },
}, {
    dependsOn: [lookerVpcConnection],
});
const project = gcp.organizations.getProject({});
const cryptoKey = new gcp.kms.CryptoKeyIAMMember("crypto_key", {
    cryptoKeyId: "looker-kms-key",
    role: "roles/cloudkms.cryptoKeyEncrypterDecrypter",
    member: project.then(project => `serviceAccount:service-${project.number}@gcp-sa-looker.iam.gserviceaccount.com`),
});
import pulumi
import pulumi_gcp as gcp

looker_network = gcp.compute.Network("looker_network", name="looker-network")
looker_range = gcp.compute.GlobalAddress("looker_range",
    name="looker-range",
    purpose="VPC_PEERING",
    address_type="INTERNAL",
    prefix_length=20,
    network=looker_network.id)
looker_vpc_connection = gcp.servicenetworking.Connection("looker_vpc_connection",
    network=looker_network.id,
    service="servicenetworking.googleapis.com",
    reserved_peering_ranges=[looker_range.name])
looker_instance = gcp.looker.Instance("looker-instance",
    name="my-instance",
    platform_edition="LOOKER_CORE_ENTERPRISE_ANNUAL",
    region="us-central1",
    private_ip_enabled=True,
    public_ip_enabled=False,
    gemini_enabled=True,
    reserved_range=looker_range.name,
    consumer_network=looker_network.id,
    admin_settings={
        "allowed_email_domains": ["google.com"],
    },
    encryption_config={
        "kms_key_name": "looker-kms-key",
    },
    maintenance_window={
        "day_of_week": "THURSDAY",
        "start_time": {
            "hours": 22,
            "minutes": 0,
            "seconds": 0,
            "nanos": 0,
        },
    },
    deny_maintenance_period={
        "start_date": {
            "year": 2050,
            "month": 1,
            "day": 1,
        },
        "end_date": {
            "year": 2050,
            "month": 2,
            "day": 1,
        },
        "time": {
            "hours": 10,
            "minutes": 0,
            "seconds": 0,
            "nanos": 0,
        },
    },
    oauth_config={
        "client_id": "my-client-id",
        "client_secret": "my-client-secret",
    },
    opts = pulumi.ResourceOptions(depends_on=[looker_vpc_connection]))
project = gcp.organizations.get_project()
crypto_key = gcp.kms.CryptoKeyIAMMember("crypto_key",
    crypto_key_id="looker-kms-key",
    role="roles/cloudkms.cryptoKeyEncrypterDecrypter",
    member=f"serviceAccount:service-{project.number}@gcp-sa-looker.iam.gserviceaccount.com")
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Gcp = Pulumi.Gcp;

return await Deployment.RunAsync(() =>
{
    var lookerNetwork = new Gcp.Compute.Network("looker_network", new()
    {
        Name = "looker-network",
    });

    var lookerRange = new Gcp.Compute.GlobalAddress("looker_range", new()
    {
        Name = "looker-range",
        Purpose = "VPC_PEERING",
        AddressType = "INTERNAL",
        PrefixLength = 20,
        Network = lookerNetwork.Id,
    });

    var lookerVpcConnection = new Gcp.ServiceNetworking.Connection("looker_vpc_connection", new()
    {
        Network = lookerNetwork.Id,
        Service = "servicenetworking.googleapis.com",
        ReservedPeeringRanges = new[]
        {
            lookerRange.Name,
        },
    });

    var looker_instance = new Gcp.Looker.Instance("looker-instance", new()
    {
        Name = "my-instance",
        PlatformEdition = "LOOKER_CORE_ENTERPRISE_ANNUAL",
        Region = "us-central1",
        PrivateIpEnabled = true,
        PublicIpEnabled = false,
        GeminiEnabled = true,
        ReservedRange = lookerRange.Name,
        ConsumerNetwork = lookerNetwork.Id,
        AdminSettings = new Gcp.Looker.Inputs.InstanceAdminSettingsArgs
        {
            AllowedEmailDomains = new[]
            {
                "google.com",
            },
        },
        EncryptionConfig = new Gcp.Looker.Inputs.InstanceEncryptionConfigArgs
        {
            KmsKeyName = "looker-kms-key",
        },
        MaintenanceWindow = new Gcp.Looker.Inputs.InstanceMaintenanceWindowArgs
        {
            DayOfWeek = "THURSDAY",
            StartTime = new Gcp.Looker.Inputs.InstanceMaintenanceWindowStartTimeArgs
            {
                Hours = 22,
                Minutes = 0,
                Seconds = 0,
                Nanos = 0,
            },
        },
        DenyMaintenancePeriod = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodArgs
        {
            StartDate = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodStartDateArgs
            {
                Year = 2050,
                Month = 1,
                Day = 1,
            },
            EndDate = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodEndDateArgs
            {
                Year = 2050,
                Month = 2,
                Day = 1,
            },
            Time = new Gcp.Looker.Inputs.InstanceDenyMaintenancePeriodTimeArgs
            {
                Hours = 10,
                Minutes = 0,
                Seconds = 0,
                Nanos = 0,
            },
        },
        OauthConfig = new Gcp.Looker.Inputs.InstanceOauthConfigArgs
        {
            ClientId = "my-client-id",
            ClientSecret = "my-client-secret",
        },
    }, new CustomResourceOptions
    {
        DependsOn =
        {
            lookerVpcConnection,
        },
    });

    var project = Gcp.Organizations.GetProject.Invoke();

    var cryptoKey = new Gcp.Kms.CryptoKeyIAMMember("crypto_key", new()
    {
        CryptoKeyId = "looker-kms-key",
        Role = "roles/cloudkms.cryptoKeyEncrypterDecrypter",
        Member = $"serviceAccount:service-{project.Apply(getProjectResult => getProjectResult.Number)}@gcp-sa-looker.iam.gserviceaccount.com",
    });

});
package main

import (
	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/compute"
	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/kms"
	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/looker"
	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/organizations"
	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/servicenetworking"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		lookerNetwork, err := compute.NewNetwork(ctx, "looker_network", &compute.NetworkArgs{
			Name: pulumi.String("looker-network"),
		})
		if err != nil {
			return err
		}
		lookerRange, err := compute.NewGlobalAddress(ctx, "looker_range", &compute.GlobalAddressArgs{
			Name:         pulumi.String("looker-range"),
			Purpose:      pulumi.String("VPC_PEERING"),
			AddressType:  pulumi.String("INTERNAL"),
			PrefixLength: pulumi.Int(20),
			Network:      lookerNetwork.ID().ToIDOutput().ToStringOutput(),
		})
		if err != nil {
			return err
		}
		lookerVpcConnection, err := servicenetworking.NewConnection(ctx, "looker_vpc_connection", &servicenetworking.ConnectionArgs{
			Network: lookerNetwork.ID().ToIDOutput().ToStringOutput(),
			Service: pulumi.String("servicenetworking.googleapis.com"),
			ReservedPeeringRanges: pulumi.StringArray{
				lookerRange.Name,
			},
		})
		if err != nil {
			return err
		}
		_, err = looker.NewInstance(ctx, "looker-instance", &looker.InstanceArgs{
			Name:             pulumi.String("my-instance"),
			PlatformEdition:  pulumi.String("LOOKER_CORE_ENTERPRISE_ANNUAL"),
			Region:           pulumi.String("us-central1"),
			PrivateIpEnabled: pulumi.Bool(true),
			PublicIpEnabled:  pulumi.Bool(false),
			GeminiEnabled:    pulumi.Bool(true),
			ReservedRange:    lookerRange.Name,
			ConsumerNetwork:  lookerNetwork.ID().ToIDOutput().ToStringOutput(),
			AdminSettings: &looker.InstanceAdminSettingsArgs{
				AllowedEmailDomains: pulumi.StringArray{
					pulumi.String("google.com"),
				},
			},
			EncryptionConfig: &looker.InstanceEncryptionConfigArgs{
				KmsKeyName: pulumi.String("looker-kms-key"),
			},
			MaintenanceWindow: &looker.InstanceMaintenanceWindowArgs{
				DayOfWeek: pulumi.String("THURSDAY"),
				StartTime: &looker.InstanceMaintenanceWindowStartTimeArgs{
					Hours:   pulumi.Int(22),
					Minutes: pulumi.Int(0),
					Seconds: pulumi.Int(0),
					Nanos:   pulumi.Int(0),
				},
			},
			DenyMaintenancePeriod: &looker.InstanceDenyMaintenancePeriodArgs{
				StartDate: &looker.InstanceDenyMaintenancePeriodStartDateArgs{
					Year:  pulumi.Int(2050),
					Month: pulumi.Int(1),
					Day:   pulumi.Int(1),
				},
				EndDate: &looker.InstanceDenyMaintenancePeriodEndDateArgs{
					Year:  pulumi.Int(2050),
					Month: pulumi.Int(2),
					Day:   pulumi.Int(1),
				},
				Time: &looker.InstanceDenyMaintenancePeriodTimeArgs{
					Hours:   pulumi.Int(10),
					Minutes: pulumi.Int(0),
					Seconds: pulumi.Int(0),
					Nanos:   pulumi.Int(0),
				},
			},
			OauthConfig: &looker.InstanceOauthConfigArgs{
				ClientId:     pulumi.String("my-client-id"),
				ClientSecret: pulumi.String("my-client-secret"),
			},
		}, pulumi.DependsOn([]pulumi.Resource{
			lookerVpcConnection,
		}))
		if err != nil {
			return err
		}
		project, err := organizations.LookupProject(ctx, &organizations.LookupProjectArgs{}, nil)
		if err != nil {
			return err
		}
		_, err = kms.NewCryptoKeyIAMMember(ctx, "crypto_key", &kms.CryptoKeyIAMMemberArgs{
			CryptoKeyId: pulumi.String("looker-kms-key"),
			Role:        pulumi.String("roles/cloudkms.cryptoKeyEncrypterDecrypter"),
			Member:      pulumi.Sprintf("serviceAccount:service-%v@gcp-sa-looker.iam.gserviceaccount.com", project.Number),
		})
		if err != nil {
			return err
		}
		return nil
	})
}
pulumi {
  required_providers {
    gcp = {
      source = "pulumi/gcp"
    }
  }
}

data "gcp_organizations_getproject" "project" {
}

resource "gcp_looker_instance" "looker-instance" {
  depends_on         = [gcp_servicenetworking_connection.looker_vpc_connection]
  name               = "my-instance"
  platform_edition   = "LOOKER_CORE_ENTERPRISE_ANNUAL"
  region             = "us-central1"
  private_ip_enabled = true
  public_ip_enabled  = false
  gemini_enabled     = true
  reserved_range     = gcp_compute_globaladdress.looker_range.name
  consumer_network   = gcp_compute_network.looker_network.id
  admin_settings = {
    allowed_email_domains = ["google.com"]
  }
  encryption_config = {
    kms_key_name = "looker-kms-key"
  }
  maintenance_window = {
    day_of_week = "THURSDAY"
    start_time = {
      hours   = 22
      minutes = 0
      seconds = 0
      nanos   = 0
    }
  }
  deny_maintenance_period = {
    start_date = {
      year  = 2050
      month = 1
      day   = 1
    }
    end_date = {
      year  = 2050
      month = 2
      day   = 1
    }
    time = {
      hours   = 10
      minutes = 0
      seconds = 0
      nanos   = 0
    }
  }
  oauth_config = {
    client_id     = "my-client-id"
    client_secret = "my-client-secret"
  }
}
resource "gcp_servicenetworking_connection" "looker_vpc_connection" {
  network                 = gcp_compute_network.looker_network.id
  service                 = "servicenetworking.googleapis.com"
  reserved_peering_ranges = [gcp_compute_globaladdress.looker_range.name]
}
resource "gcp_compute_globaladdress" "looker_range" {
  name          = "looker-range"
  purpose       = "VPC_PEERING"
  address_type  = "INTERNAL"
  prefix_length = 20
  network       = gcp_compute_network.looker_network.id
}
resource "gcp_compute_network" "looker_network" {
  name = "looker-network"
}
resource "gcp_kms_cryptokeyiammember" "crypto_key" {
  crypto_key_id = "looker-kms-key"
  role          = "roles/cloudkms.cryptoKeyEncrypterDecrypter"
  member        ="serviceAccount:service-${data.gcp_organizations_getproject.project.number}@gcp-sa-looker.iam.gserviceaccount.com"
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.compute.Network;
import com.pulumi.gcp.compute.NetworkArgs;
import com.pulumi.gcp.compute.GlobalAddress;
import com.pulumi.gcp.compute.GlobalAddressArgs;
import com.pulumi.gcp.servicenetworking.Connection;
import com.pulumi.gcp.servicenetworking.ConnectionArgs;
import com.pulumi.gcp.looker.Instance;
import com.pulumi.gcp.looker.InstanceArgs;
import com.pulumi.gcp.looker.inputs.InstanceAdminSettingsArgs;
import com.pulumi.gcp.looker.inputs.InstanceEncryptionConfigArgs;
import com.pulumi.gcp.looker.inputs.InstanceMaintenanceWindowArgs;
import com.pulumi.gcp.looker.inputs.InstanceMaintenanceWindowStartTimeArgs;
import com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodArgs;
import com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodStartDateArgs;
import com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodEndDateArgs;
import com.pulumi.gcp.looker.inputs.InstanceDenyMaintenancePeriodTimeArgs;
import com.pulumi.gcp.looker.inputs.InstanceOauthConfigArgs;
import com.pulumi.gcp.organizations.OrganizationsFunctions;
import com.pulumi.gcp.organizations.inputs.GetProjectArgs;
import com.pulumi.gcp.kms.CryptoKeyIAMMember;
import com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;
import com.pulumi.resources.CustomResourceOptions;
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) {
        var lookerNetwork = new Network("lookerNetwork", NetworkArgs.builder()
            .name("looker-network")
            .build());

        var lookerRange = new GlobalAddress("lookerRange", GlobalAddressArgs.builder()
            .name("looker-range")
            .purpose("VPC_PEERING")
            .addressType("INTERNAL")
            .prefixLength(20)
            .network(lookerNetwork.id())
            .build());

        var lookerVpcConnection = new Connection("lookerVpcConnection", ConnectionArgs.builder()
            .network(lookerNetwork.id())
            .service("servicenetworking.googleapis.com")
            .reservedPeeringRanges(lookerRange.name())
            .build());

        var looker_instance = new Instance("looker-instance", InstanceArgs.builder()
            .name("my-instance")
            .platformEdition("LOOKER_CORE_ENTERPRISE_ANNUAL")
            .region("us-central1")
            .privateIpEnabled(true)
            .publicIpEnabled(false)
            .geminiEnabled(true)
            .reservedRange(lookerRange.name())
            .consumerNetwork(lookerNetwork.id())
            .adminSettings(InstanceAdminSettingsArgs.builder()
                .allowedEmailDomains("google.com")
                .build())
            .encryptionConfig(InstanceEncryptionConfigArgs.builder()
                .kmsKeyName("looker-kms-key")
                .build())
            .maintenanceWindow(InstanceMaintenanceWindowArgs.builder()
                .dayOfWeek("THURSDAY")
                .startTime(InstanceMaintenanceWindowStartTimeArgs.builder()
                    .hours(22)
                    .minutes(0)
                    .seconds(0)
                    .nanos(0)
                    .build())
                .build())
            .denyMaintenancePeriod(InstanceDenyMaintenancePeriodArgs.builder()
                .startDate(InstanceDenyMaintenancePeriodStartDateArgs.builder()
                    .year(2050)
                    .month(1)
                    .day(1)
                    .build())
                .endDate(InstanceDenyMaintenancePeriodEndDateArgs.builder()
                    .year(2050)
                    .month(2)
                    .day(1)
                    .build())
                .time(InstanceDenyMaintenancePeriodTimeArgs.builder()
                    .hours(10)
                    .minutes(0)
                    .seconds(0)
                    .nanos(0)
                    .build())
                .build())
            .oauthConfig(InstanceOauthConfigArgs.builder()
                .clientId("my-client-id")
                .clientSecret("my-client-secret")
                .build())
            .build(), CustomResourceOptions.builder()
                .dependsOn(lookerVpcConnection)
                .build());

        final var project = OrganizationsFunctions.getProject(GetProjectArgs.builder()
            .build());

        var cryptoKey = new CryptoKeyIAMMember("cryptoKey", CryptoKeyIAMMemberArgs.builder()
            .cryptoKeyId("looker-kms-key")
            .role("roles/cloudkms.cryptoKeyEncrypterDecrypter")
            .member(String.format("serviceAccount:service-%s@gcp-sa-looker.iam.gserviceaccount.com", project.number()))
            .build());

    }
}
resources:
  looker-instance:
    type: gcp:looker:Instance
    properties:
      name: my-instance
      platformEdition: LOOKER_CORE_ENTERPRISE_ANNUAL
      region: us-central1
      privateIpEnabled: true
      publicIpEnabled: false
      geminiEnabled: true
      reservedRange: ${lookerRange.name}
      consumerNetwork: ${lookerNetwork.id}
      adminSettings:
        allowedEmailDomains:
          - google.com
      encryptionConfig:
        kmsKeyName: looker-kms-key
      maintenanceWindow:
        dayOfWeek: THURSDAY
        startTime:
          hours: 22
          minutes: 0
          seconds: 0
          nanos: 0
      denyMaintenancePeriod:
        startDate:
          year: 2050
          month: 1
          day: 1
        endDate:
          year: 2050
          month: 2
          day: 1
        time:
          hours: 10
          minutes: 0
          seconds: 0
          nanos: 0
      oauthConfig:
        clientId: my-client-id
        clientSecret: my-client-secret
    options:
      dependsOn:
        - ${lookerVpcConnection}
  lookerVpcConnection:
    type: gcp:servicenetworking:Connection
    name: looker_vpc_connection
    properties:
      network: ${lookerNetwork.id}
      service: servicenetworking.googleapis.com
      reservedPeeringRanges:
        - ${lookerRange.name}
  lookerRange:
    type: gcp:compute:GlobalAddress
    name: looker_range
    properties:
      name: looker-range
      purpose: VPC_PEERING
      addressType: INTERNAL
      prefixLength: 20
      network: ${lookerNetwork.id}
  lookerNetwork:
    type: gcp:compute:Network
    name: looker_network
    properties:
      name: looker-network
  cryptoKey:
    type: gcp:kms:CryptoKeyIAMMember
    name: crypto_key
    properties:
      cryptoKeyId: looker-kms-key
      role: roles/cloudkms.cryptoKeyEncrypterDecrypter
      member: serviceAccount:service-${project.number}@gcp-sa-looker.iam.gserviceaccount.com
variables:
  project:
    fn::invoke:
      function: gcp:organizations:getProject
      arguments: {}

Looker Instance Custom Domain

import * as pulumi from "@pulumi/pulumi";
import * as gcp from "@pulumi/gcp";

const looker_instance = new gcp.looker.Instance("looker-instance", {
    name: "my-instance",
    platformEdition: "LOOKER_CORE_STANDARD_ANNUAL",
    region: "us-central1",
    oauthConfig: {
        clientId: "my-client-id",
        clientSecret: "my-client-secret",
    },
    customDomain: {
        domain: "my-custom-domain.com",
    },
});
import pulumi
import pulumi_gcp as gcp

looker_instance = gcp.looker.Instance("looker-instance",
    name="my-instance",
    platform_edition="LOOKER_CORE_STANDARD_ANNUAL",
    region="us-central1",
    oauth_config={
        "client_id": "my-client-id",
        "client_secret": "my-client-secret",
    },
    custom_domain={
        "domain": "my-custom-domain.com",
    })
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Gcp = Pulumi.Gcp;

return await Deployment.RunAsync(() =>
{
    var looker_instance = new Gcp.Looker.Instance("looker-instance", new()
    {
        Name = "my-instance",
        PlatformEdition = "LOOKER_CORE_STANDARD_ANNUAL",
        Region = "us-central1",
        OauthConfig = new Gcp.Looker.Inputs.InstanceOauthConfigArgs
        {
            ClientId = "my-client-id",
            ClientSecret = "my-client-secret",
        },
        CustomDomain = new Gcp.Looker.Inputs.InstanceCustomDomainArgs
        {
            Domain = "my-custom-domain.com",
        },
    });

});
package main

import (
	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/looker"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := looker.NewInstance(ctx, "looker-instance", &looker.InstanceArgs{
			Name:            pulumi.String("my-instance"),
			PlatformEdition: pulumi.String("LOOKER_CORE_STANDARD_ANNUAL"),
			Region:          pulumi.String("us-central1"),
			OauthConfig: &looker.InstanceOauthConfigArgs{
				ClientId:     pulumi.String("my-client-id"),
				ClientSecret: pulumi.String("my-client-secret"),
			},
			CustomDomain: &looker.InstanceCustomDomainArgs{
				Domain: pulumi.String("my-custom-domain.com"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
pulumi {
  required_providers {
    gcp = {
      source = "pulumi/gcp"
    }
  }
}

resource "gcp_looker_instance" "looker-instance" {
  name             = "my-instance"
  platform_edition = "LOOKER_CORE_STANDARD_ANNUAL"
  region           = "us-central1"
  oauth_config = {
    client_id     = "my-client-id"
    client_secret = "my-client-secret"
  }
  custom_domain = {
    domain = "my-custom-domain.com"
  }
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.looker.Instance;
import com.pulumi.gcp.looker.InstanceArgs;
import com.pulumi.gcp.looker.inputs.InstanceOauthConfigArgs;
import com.pulumi.gcp.looker.inputs.InstanceCustomDomainArgs;
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) {
        var looker_instance = new Instance("looker-instance", InstanceArgs.builder()
            .name("my-instance")
            .platformEdition("LOOKER_CORE_STANDARD_ANNUAL")
            .region("us-central1")
            .oauthConfig(InstanceOauthConfigArgs.builder()
                .clientId("my-client-id")
                .clientSecret("my-client-secret")
                .build())
            .customDomain(InstanceCustomDomainArgs.builder()
                .domain("my-custom-domain.com")
                .build())
            .build());

    }
}
resources:
  looker-instance:
    type: gcp:looker:Instance
    properties:
      name: my-instance
      platformEdition: LOOKER_CORE_STANDARD_ANNUAL
      region: us-central1
      oauthConfig:
        clientId: my-client-id
        clientSecret: my-client-secret
      customDomain:
        domain: my-custom-domain.com

Looker Instance Psc

import * as pulumi from "@pulumi/pulumi";
import * as gcp from "@pulumi/gcp";

const looker_instance = new gcp.looker.Instance("looker-instance", {
    name: "my-instance",
    platformEdition: "LOOKER_CORE_ENTERPRISE_ANNUAL",
    region: "us-central1",
    privateIpEnabled: false,
    publicIpEnabled: false,
    pscEnabled: true,
    oauthConfig: {
        clientId: "my-client-id",
        clientSecret: "my-client-secret",
    },
    pscConfig: {
        allowedVpcs: ["projects/test-project/global/networks/test"],
    },
});
import pulumi
import pulumi_gcp as gcp

looker_instance = gcp.looker.Instance("looker-instance",
    name="my-instance",
    platform_edition="LOOKER_CORE_ENTERPRISE_ANNUAL",
    region="us-central1",
    private_ip_enabled=False,
    public_ip_enabled=False,
    psc_enabled=True,
    oauth_config={
        "client_id": "my-client-id",
        "client_secret": "my-client-secret",
    },
    psc_config={
        "allowed_vpcs": ["projects/test-project/global/networks/test"],
    })
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Gcp = Pulumi.Gcp;

return await Deployment.RunAsync(() =>
{
    var looker_instance = new Gcp.Looker.Instance("looker-instance", new()
    {
        Name = "my-instance",
        PlatformEdition = "LOOKER_CORE_ENTERPRISE_ANNUAL",
        Region = "us-central1",
        PrivateIpEnabled = false,
        PublicIpEnabled = false,
        PscEnabled = true,
        OauthConfig = new Gcp.Looker.Inputs.InstanceOauthConfigArgs
        {
            ClientId = "my-client-id",
            ClientSecret = "my-client-secret",
        },
        PscConfig = new Gcp.Looker.Inputs.InstancePscConfigArgs
        {
            AllowedVpcs = new[]
            {
                "projects/test-project/global/networks/test",
            },
        },
    });

});
package main

import (
	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/looker"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := looker.NewInstance(ctx, "looker-instance", &looker.InstanceArgs{
			Name:             pulumi.String("my-instance"),
			PlatformEdition:  pulumi.String("LOOKER_CORE_ENTERPRISE_ANNUAL"),
			Region:           pulumi.String("us-central1"),
			PrivateIpEnabled: pulumi.Bool(false),
			PublicIpEnabled:  pulumi.Bool(false),
			PscEnabled:       pulumi.Bool(true),
			OauthConfig: &looker.InstanceOauthConfigArgs{
				ClientId:     pulumi.String("my-client-id"),
				ClientSecret: pulumi.String("my-client-secret"),
			},
			PscConfig: &looker.InstancePscConfigArgs{
				AllowedVpcs: pulumi.StringArray{
					pulumi.String("projects/test-project/global/networks/test"),
				},
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
pulumi {
  required_providers {
    gcp = {
      source = "pulumi/gcp"
    }
  }
}

resource "gcp_looker_instance" "looker-instance" {
  name               = "my-instance"
  platform_edition   = "LOOKER_CORE_ENTERPRISE_ANNUAL"
  region             = "us-central1"
  private_ip_enabled = false
  public_ip_enabled  = false
  psc_enabled        = true
  oauth_config = {
    client_id     = "my-client-id"
    client_secret = "my-client-secret"
  }
  psc_config = {
    allowed_vpcs = ["projects/test-project/global/networks/test"]
  }
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.looker.Instance;
import com.pulumi.gcp.looker.InstanceArgs;
import com.pulumi.gcp.looker.inputs.InstanceOauthConfigArgs;
import com.pulumi.gcp.looker.inputs.InstancePscConfigArgs;
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) {
        var looker_instance = new Instance("looker-instance", InstanceArgs.builder()
            .name("my-instance")
            .platformEdition("LOOKER_CORE_ENTERPRISE_ANNUAL")
            .region("us-central1")
            .privateIpEnabled(false)
            .publicIpEnabled(false)
            .pscEnabled(true)
            .oauthConfig(InstanceOauthConfigArgs.builder()
                .clientId("my-client-id")
                .clientSecret("my-client-secret")
                .build())
            .pscConfig(InstancePscConfigArgs.builder()
                .allowedVpcs("projects/test-project/global/networks/test")
                .build())
            .build());

    }
}
resources:
  looker-instance:
    type: gcp:looker:Instance
    properties:
      name: my-instance
      platformEdition: LOOKER_CORE_ENTERPRISE_ANNUAL
      region: us-central1
      privateIpEnabled: false
      publicIpEnabled: false
      pscEnabled: true
      oauthConfig:
        clientId: my-client-id
        clientSecret: my-client-secret
      pscConfig:
        allowedVpcs:
          - projects/test-project/global/networks/test

Looker Instance Force Delete

import * as pulumi from "@pulumi/pulumi";
import * as gcp from "@pulumi/gcp";

const looker_instance = new gcp.looker.Instance("looker-instance", {
    name: "my-instance",
    platformEdition: "LOOKER_CORE_STANDARD_ANNUAL",
    region: "us-central1",
    oauthConfig: {
        clientId: "my-client-id",
        clientSecret: "my-client-secret",
    },
    deletionPolicy: "FORCE",
});
import pulumi
import pulumi_gcp as gcp

looker_instance = gcp.looker.Instance("looker-instance",
    name="my-instance",
    platform_edition="LOOKER_CORE_STANDARD_ANNUAL",
    region="us-central1",
    oauth_config={
        "client_id": "my-client-id",
        "client_secret": "my-client-secret",
    },
    deletion_policy="FORCE")
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Gcp = Pulumi.Gcp;

return await Deployment.RunAsync(() =>
{
    var looker_instance = new Gcp.Looker.Instance("looker-instance", new()
    {
        Name = "my-instance",
        PlatformEdition = "LOOKER_CORE_STANDARD_ANNUAL",
        Region = "us-central1",
        OauthConfig = new Gcp.Looker.Inputs.InstanceOauthConfigArgs
        {
            ClientId = "my-client-id",
            ClientSecret = "my-client-secret",
        },
        DeletionPolicy = "FORCE",
    });

});
package main

import (
	"github.com/pulumi/pulumi-gcp/sdk/v9/go/gcp/looker"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := looker.NewInstance(ctx, "looker-instance", &looker.InstanceArgs{
			Name:            pulumi.String("my-instance"),
			PlatformEdition: pulumi.String("LOOKER_CORE_STANDARD_ANNUAL"),
			Region:          pulumi.String("us-central1"),
			OauthConfig: &looker.InstanceOauthConfigArgs{
				ClientId:     pulumi.String("my-client-id"),
				ClientSecret: pulumi.String("my-client-secret"),
			},
			DeletionPolicy: pulumi.String("FORCE"),
		})
		if err != nil {
			return err
		}
		return nil
	})
}
pulumi {
  required_providers {
    gcp = {
      source = "pulumi/gcp"
    }
  }
}

resource "gcp_looker_instance" "looker-instance" {
  name             = "my-instance"
  platform_edition = "LOOKER_CORE_STANDARD_ANNUAL"
  region           = "us-central1"
  oauth_config = {
    client_id     = "my-client-id"
    client_secret = "my-client-secret"
  }
  deletion_policy = "FORCE"
}
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.looker.Instance;
import com.pulumi.gcp.looker.InstanceArgs;
import com.pulumi.gcp.looker.inputs.InstanceOauthConfigArgs;
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) {
        var looker_instance = new Instance("looker-instance", InstanceArgs.builder()
            .name("my-instance")
            .platformEdition("LOOKER_CORE_STANDARD_ANNUAL")
            .region("us-central1")
            .oauthConfig(InstanceOauthConfigArgs.builder()
                .clientId("my-client-id")
                .clientSecret("my-client-secret")
                .build())
            .deletionPolicy("FORCE")
            .build());

    }
}
resources:
  looker-instance:
    type: gcp:looker:Instance
    properties:
      name: my-instance
      platformEdition: LOOKER_CORE_STANDARD_ANNUAL
      region: us-central1
      oauthConfig:
        clientId: my-client-id
        clientSecret: my-client-secret
      deletionPolicy: FORCE

Import

Instance can be imported using any of these accepted formats:

  • projects/{{project}}/locations/{{region}}/instances/{{name}}
  • {{project}}/{{region}}/{{name}}
  • {{region}}/{{name}}
  • {{name}}

When using the pulumi import command, Instance can be imported using one of the formats above. For example:

$ pulumi import gcp:looker/instance:Instance default projects/{{project}}/locations/{{region}}/instances/{{name}}
$ pulumi import gcp:looker/instance:Instance default {{project}}/{{region}}/{{name}}
$ pulumi import gcp:looker/instance:Instance default {{region}}/{{name}}
$ pulumi import gcp:looker/instance:Instance default {{name}}

Constructors

Instance(String name, {InstanceArgs? args, CustomResourceOptions? options})
Creates a new Instance. name The Pulumi resource name. args Arguments used to configure this Instance. The set of arguments for Instance. options Resource options controlling this resource's behavior.
Instance.reference(String urn)
Creates a typed reference to an existing Instance resource.

Properties

adminSettings ↔ Output<InstanceAdminSettings?>
Looker instance Admin settings. Structure is documented below.
latefinal
childResources → Set<Resource>
finalinherited
completionSources ↔ Map<String, IOutputCompletionSource>
latefinalinherited
consumerNetwork ↔ Output<String?>
Network name in the consumer project in the format of: projects/{project}/global/networks/{network} Note that the consumer network may be in a different GCP project than the consumer project that is hosting the Looker Instance.
latefinal
controlledEgressConfig ↔ Output<InstanceControlledEgressConfig?>
Controlled egress configuration. Structure is documented below.
latefinal
controlledEgressEnabled ↔ Output<bool?>
Whether controlled egress is enabled on the Looker instance.
latefinal
createTime ↔ Output<String>
The time the instance was created in RFC3339 UTC "Zulu" format, accurate to nanoseconds.
latefinal
customDomain ↔ Output<InstanceCustomDomain?>
Custom domain settings for a Looker instance. Structure is documented below.
latefinal
deletionPolicy ↔ Output<String>
Policy to determine if the cluster should be deleted forcefully. If setting deletionPolicy = "FORCE", the Looker instance will be deleted regardless of its nested resources. If set to "DEFAULT", Looker instances that still have nested resources will return an error.
latefinal
denyMaintenancePeriod ↔ Output<InstanceDenyMaintenancePeriod?>
Maintenance denial period for this instance. You must allow at least 14 days of maintenance availability between any two deny maintenance periods. Structure is documented below.
latefinal
egressPublicIp ↔ Output<String>
Public Egress IP (IPv4).
latefinal
encryptionConfig ↔ Output<InstanceEncryptionConfig>
Looker instance encryption settings. Structure is documented below.
latefinal
fipsEnabled ↔ Output<bool?>
FIPS 140-2 Encryption enablement for Looker (Google Cloud Core).
latefinal
geminiEnabled ↔ Output<bool?>
Gemini enablement for Looker (Google Cloud Core).
latefinal
hashCode → int
The hash code for this object.
no setterinherited
id ↔ Output<String>
getter/setter pairinherited
ingressPrivateIp ↔ Output<String>
Private Ingress IP (IPv4).
latefinal
ingressPublicIp ↔ Output<String>
Public Ingress IP (IPv4).
latefinal
isCustom → bool
Returns whether this resource is provider-managed.
no setterinherited
isProtected → bool
Returns whether this resource is protected from deletion.
no setterinherited
isRemote → bool
Whether this resource is registered as remote.
no setterinherited
isResourceReference → bool
Whether this instance represents a resource value returned over RPC.
finalinherited
lookerUri ↔ Output<String>
Looker instance URI which can be used to access the Looker Instance UI.
latefinal
lookerVersion ↔ Output<String>
The Looker version that the instance is using.
latefinal
maintenanceWindow ↔ Output<InstanceMaintenanceWindow?>
Maintenance window for an instance. Maintenance of your instance takes place once a month, and will require your instance to be restarted during updates, which will temporarily disrupt service. Structure is documented below.
latefinal
name ↔ Output<String>
The ID of the instance or a fully qualified identifier for the instance.
latefinal
oauthConfig ↔ Output<InstanceOauthConfig>
Looker Instance OAuth login settings. Structure is documented below.
latefinal
periodicExportConfig ↔ Output<InstancePeriodicExportConfig?>
Configuration for periodic export. Structure is documented below.
latefinal
platformEdition ↔ Output<String?>
Platform editions for a Looker instance. Each edition maps to a set of instance features, like its size. Must be one of these values:
latefinal
privateIpEnabled ↔ Output<bool?>
Whether private IP is enabled on the Looker instance.
latefinal
project ↔ Output<String>
The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
latefinal
pscConfig ↔ Output<InstancePscConfig>
Information for Private Service Connect (PSC) setup for a Looker instance. Structure is documented below.
latefinal
pscEnabled ↔ Output<bool?>
Whether Public Service Connect (PSC) is enabled on the Looker instance
latefinal
publicIpEnabled ↔ Output<bool?>
Whether public IP is enabled on the Looker instance.
latefinal
region ↔ Output<String>
The name of the Looker region of the instance.
latefinal
reservedRange ↔ Output<String?>
Name of a reserved IP address range within the consumer network, to be used for private service access connection. User may or may not specify this in a request.
latefinal
resourceTransforms → List<ResourceTransform>
Inherited/explicit async transforms.
no setterinherited
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
transformations → List<ResourceTransformation>
Inherited/explicit legacy transformations.
no setterinherited
updateTime ↔ Output<String>
The time the instance was updated in RFC3339 UTC "Zulu" format, accurate to nanoseconds.
latefinal
urn ↔ Output<String>
latefinalinherited
userMetadata ↔ Output<InstanceUserMetadata?>
Metadata about users for a Looker instance. These settings are only available when platform edition LOOKER_CORE_STANDARD is set. There are ten Standard and two Developer users included in the cost of the product. You can allocate additional Standard, Viewer, and Developer users for this instance. It is an optional step and can be modified later. With the Standard edition of Looker (Google Cloud core), you can provision up to 50 total users, distributed across Viewer, Standard, and Developer. Structure is documented below.
latefinal

Methods

failId(Object error) → void
Completes this resource ID with an error when registration fails.
inherited
failOutputs(Object error) → void
Completes all output properties with error.
inherited
failUrn(Object error) → void
Completes this resource URN with an error when registration fails.
inherited
getProvider(String moduleMember) → ProviderResource?
Returns provider for moduleMember's package, if configured.
inherited
getResourceName() → String
Returns this resource's logical name.
inherited
getResourceType() → String
Returns this resource's Pulumi type token.
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
registerOutput<T>(String propertyName, {Object? decoder(Object?)?, bool isSecret = false}) → Output<T>
Registers a dynamic output property for this resource.
inherited
resolveId(String? value, {required bool isKnown}) → void
Resolves the provider-assigned ID for this resource.
inherited
resolveOutputs(Struct outputs) → void
Resolves all output properties from a monitor response payload.
inherited
resolveUrn(String value) → void
Resolves this resource's URN once assigned by the engine.
inherited
serializeProperties(Map<String, dynamic> properties) → Future<Struct>
Serializes resource properties for RPC transmission.
inherited
toString() → String
A string representation of this object.
inherited

Operators

operator ==(Object other) → bool
The equality operator.
inherited

Static Methods

get(String name, Input<String> id, {InstanceState? state, CustomResourceOptions? options}) → Instance
Gets an existing Instance resource's state with the given name and id.