sourcerepo

package
v6.67.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 4, 2023 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type GetRepositoryPubsubConfig

type GetRepositoryPubsubConfig struct {
	MessageFormat       string `pulumi:"messageFormat"`
	ServiceAccountEmail string `pulumi:"serviceAccountEmail"`
	Topic               string `pulumi:"topic"`
}

type GetRepositoryPubsubConfigArgs

type GetRepositoryPubsubConfigArgs struct {
	MessageFormat       pulumi.StringInput `pulumi:"messageFormat"`
	ServiceAccountEmail pulumi.StringInput `pulumi:"serviceAccountEmail"`
	Topic               pulumi.StringInput `pulumi:"topic"`
}

func (GetRepositoryPubsubConfigArgs) ElementType

func (GetRepositoryPubsubConfigArgs) ToGetRepositoryPubsubConfigOutput

func (i GetRepositoryPubsubConfigArgs) ToGetRepositoryPubsubConfigOutput() GetRepositoryPubsubConfigOutput

func (GetRepositoryPubsubConfigArgs) ToGetRepositoryPubsubConfigOutputWithContext

func (i GetRepositoryPubsubConfigArgs) ToGetRepositoryPubsubConfigOutputWithContext(ctx context.Context) GetRepositoryPubsubConfigOutput

func (GetRepositoryPubsubConfigArgs) ToOutput added in v6.65.1

type GetRepositoryPubsubConfigArray

type GetRepositoryPubsubConfigArray []GetRepositoryPubsubConfigInput

func (GetRepositoryPubsubConfigArray) ElementType

func (GetRepositoryPubsubConfigArray) ToGetRepositoryPubsubConfigArrayOutput

func (i GetRepositoryPubsubConfigArray) ToGetRepositoryPubsubConfigArrayOutput() GetRepositoryPubsubConfigArrayOutput

func (GetRepositoryPubsubConfigArray) ToGetRepositoryPubsubConfigArrayOutputWithContext

func (i GetRepositoryPubsubConfigArray) ToGetRepositoryPubsubConfigArrayOutputWithContext(ctx context.Context) GetRepositoryPubsubConfigArrayOutput

func (GetRepositoryPubsubConfigArray) ToOutput added in v6.65.1

type GetRepositoryPubsubConfigArrayInput

type GetRepositoryPubsubConfigArrayInput interface {
	pulumi.Input

	ToGetRepositoryPubsubConfigArrayOutput() GetRepositoryPubsubConfigArrayOutput
	ToGetRepositoryPubsubConfigArrayOutputWithContext(context.Context) GetRepositoryPubsubConfigArrayOutput
}

GetRepositoryPubsubConfigArrayInput is an input type that accepts GetRepositoryPubsubConfigArray and GetRepositoryPubsubConfigArrayOutput values. You can construct a concrete instance of `GetRepositoryPubsubConfigArrayInput` via:

GetRepositoryPubsubConfigArray{ GetRepositoryPubsubConfigArgs{...} }

type GetRepositoryPubsubConfigArrayOutput

type GetRepositoryPubsubConfigArrayOutput struct{ *pulumi.OutputState }

func (GetRepositoryPubsubConfigArrayOutput) ElementType

func (GetRepositoryPubsubConfigArrayOutput) Index

func (GetRepositoryPubsubConfigArrayOutput) ToGetRepositoryPubsubConfigArrayOutput

func (o GetRepositoryPubsubConfigArrayOutput) ToGetRepositoryPubsubConfigArrayOutput() GetRepositoryPubsubConfigArrayOutput

func (GetRepositoryPubsubConfigArrayOutput) ToGetRepositoryPubsubConfigArrayOutputWithContext

func (o GetRepositoryPubsubConfigArrayOutput) ToGetRepositoryPubsubConfigArrayOutputWithContext(ctx context.Context) GetRepositoryPubsubConfigArrayOutput

func (GetRepositoryPubsubConfigArrayOutput) ToOutput added in v6.65.1

type GetRepositoryPubsubConfigInput

type GetRepositoryPubsubConfigInput interface {
	pulumi.Input

	ToGetRepositoryPubsubConfigOutput() GetRepositoryPubsubConfigOutput
	ToGetRepositoryPubsubConfigOutputWithContext(context.Context) GetRepositoryPubsubConfigOutput
}

GetRepositoryPubsubConfigInput is an input type that accepts GetRepositoryPubsubConfigArgs and GetRepositoryPubsubConfigOutput values. You can construct a concrete instance of `GetRepositoryPubsubConfigInput` via:

GetRepositoryPubsubConfigArgs{...}

type GetRepositoryPubsubConfigOutput

type GetRepositoryPubsubConfigOutput struct{ *pulumi.OutputState }

func (GetRepositoryPubsubConfigOutput) ElementType

func (GetRepositoryPubsubConfigOutput) MessageFormat

func (GetRepositoryPubsubConfigOutput) ServiceAccountEmail

func (o GetRepositoryPubsubConfigOutput) ServiceAccountEmail() pulumi.StringOutput

func (GetRepositoryPubsubConfigOutput) ToGetRepositoryPubsubConfigOutput

func (o GetRepositoryPubsubConfigOutput) ToGetRepositoryPubsubConfigOutput() GetRepositoryPubsubConfigOutput

func (GetRepositoryPubsubConfigOutput) ToGetRepositoryPubsubConfigOutputWithContext

func (o GetRepositoryPubsubConfigOutput) ToGetRepositoryPubsubConfigOutputWithContext(ctx context.Context) GetRepositoryPubsubConfigOutput

func (GetRepositoryPubsubConfigOutput) ToOutput added in v6.65.1

func (GetRepositoryPubsubConfigOutput) Topic

type LookupRepositoryArgs

type LookupRepositoryArgs struct {
	// Resource name of the repository. The repo name may contain slashes. eg, `name/with/slash`
	Name string `pulumi:"name"`
	// The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
	Project *string `pulumi:"project"`
}

A collection of arguments for invoking getRepository.

type LookupRepositoryIamPolicyArgs added in v6.59.0

type LookupRepositoryIamPolicyArgs struct {
	// The ID of the project in which the resource belongs.
	// If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used.
	Project *string `pulumi:"project"`
	// Used to find the parent resource to bind the IAM policy to
	Repository string `pulumi:"repository"`
}

A collection of arguments for invoking getRepositoryIamPolicy.

type LookupRepositoryIamPolicyOutputArgs added in v6.59.0

type LookupRepositoryIamPolicyOutputArgs struct {
	// The ID of the project in which the resource belongs.
	// If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used.
	Project pulumi.StringPtrInput `pulumi:"project"`
	// Used to find the parent resource to bind the IAM policy to
	Repository pulumi.StringInput `pulumi:"repository"`
}

A collection of arguments for invoking getRepositoryIamPolicy.

func (LookupRepositoryIamPolicyOutputArgs) ElementType added in v6.59.0

type LookupRepositoryIamPolicyResult added in v6.59.0

type LookupRepositoryIamPolicyResult struct {
	// (Computed) The etag of the IAM policy.
	Etag string `pulumi:"etag"`
	// The provider-assigned unique ID for this managed resource.
	Id string `pulumi:"id"`
	// (Required only by `sourcerepo.RepositoryIamPolicy`) The policy data generated by
	// a `organizations.getIAMPolicy` data source.
	PolicyData string `pulumi:"policyData"`
	Project    string `pulumi:"project"`
	Repository string `pulumi:"repository"`
}

A collection of values returned by getRepositoryIamPolicy.

func LookupRepositoryIamPolicy added in v6.59.0

func LookupRepositoryIamPolicy(ctx *pulumi.Context, args *LookupRepositoryIamPolicyArgs, opts ...pulumi.InvokeOption) (*LookupRepositoryIamPolicyResult, error)

Retrieves the current IAM policy data for repository

## example

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/sourcerepo"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := sourcerepo.LookupRepositoryIamPolicy(ctx, &sourcerepo.LookupRepositoryIamPolicyArgs{
			Project:    pulumi.StringRef(google_sourcerepo_repository.MyRepo.Project),
			Repository: google_sourcerepo_repository.MyRepo.Name,
		}, nil)
		if err != nil {
			return err
		}
		return nil
	})
}

```

type LookupRepositoryIamPolicyResultOutput added in v6.59.0

type LookupRepositoryIamPolicyResultOutput struct{ *pulumi.OutputState }

A collection of values returned by getRepositoryIamPolicy.

func (LookupRepositoryIamPolicyResultOutput) ElementType added in v6.59.0

func (LookupRepositoryIamPolicyResultOutput) Etag added in v6.59.0

(Computed) The etag of the IAM policy.

func (LookupRepositoryIamPolicyResultOutput) Id added in v6.59.0

The provider-assigned unique ID for this managed resource.

func (LookupRepositoryIamPolicyResultOutput) PolicyData added in v6.59.0

(Required only by `sourcerepo.RepositoryIamPolicy`) The policy data generated by a `organizations.getIAMPolicy` data source.

func (LookupRepositoryIamPolicyResultOutput) Project added in v6.59.0

func (LookupRepositoryIamPolicyResultOutput) Repository added in v6.59.0

func (LookupRepositoryIamPolicyResultOutput) ToLookupRepositoryIamPolicyResultOutput added in v6.59.0

func (o LookupRepositoryIamPolicyResultOutput) ToLookupRepositoryIamPolicyResultOutput() LookupRepositoryIamPolicyResultOutput

func (LookupRepositoryIamPolicyResultOutput) ToLookupRepositoryIamPolicyResultOutputWithContext added in v6.59.0

func (o LookupRepositoryIamPolicyResultOutput) ToLookupRepositoryIamPolicyResultOutputWithContext(ctx context.Context) LookupRepositoryIamPolicyResultOutput

func (LookupRepositoryIamPolicyResultOutput) ToOutput added in v6.65.1

type LookupRepositoryOutputArgs

type LookupRepositoryOutputArgs struct {
	// Resource name of the repository. The repo name may contain slashes. eg, `name/with/slash`
	Name pulumi.StringInput `pulumi:"name"`
	// The ID of the project in which the resource belongs. If it is not provided, the provider project is used.
	Project pulumi.StringPtrInput `pulumi:"project"`
}

A collection of arguments for invoking getRepository.

func (LookupRepositoryOutputArgs) ElementType

func (LookupRepositoryOutputArgs) ElementType() reflect.Type

type LookupRepositoryResult

type LookupRepositoryResult struct {
	// The provider-assigned unique ID for this managed resource.
	Id            string                      `pulumi:"id"`
	Name          string                      `pulumi:"name"`
	Project       *string                     `pulumi:"project"`
	PubsubConfigs []GetRepositoryPubsubConfig `pulumi:"pubsubConfigs"`
	Size          int                         `pulumi:"size"`
	Url           string                      `pulumi:"url"`
}

A collection of values returned by getRepository.

func LookupRepository

func LookupRepository(ctx *pulumi.Context, args *LookupRepositoryArgs, opts ...pulumi.InvokeOption) (*LookupRepositoryResult, error)

Get infomation about an existing Google Cloud Source Repository. For more information see [the official documentation](https://cloud.google.com/source-repositories) and [API](https://cloud.google.com/source-repositories/docs/reference/rest/v1/projects.repos).

## Example Usage

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/sourcerepo"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := sourcerepo.LookupRepository(ctx, &sourcerepo.LookupRepositoryArgs{
			Name: "my-repository",
		}, nil)
		if err != nil {
			return err
		}
		return nil
	})
}

```

type LookupRepositoryResultOutput

type LookupRepositoryResultOutput struct{ *pulumi.OutputState }

A collection of values returned by getRepository.

func (LookupRepositoryResultOutput) ElementType

func (LookupRepositoryResultOutput) Id

The provider-assigned unique ID for this managed resource.

func (LookupRepositoryResultOutput) Name

func (LookupRepositoryResultOutput) Project

func (LookupRepositoryResultOutput) PubsubConfigs

func (LookupRepositoryResultOutput) Size

func (LookupRepositoryResultOutput) ToLookupRepositoryResultOutput

func (o LookupRepositoryResultOutput) ToLookupRepositoryResultOutput() LookupRepositoryResultOutput

func (LookupRepositoryResultOutput) ToLookupRepositoryResultOutputWithContext

func (o LookupRepositoryResultOutput) ToLookupRepositoryResultOutputWithContext(ctx context.Context) LookupRepositoryResultOutput

func (LookupRepositoryResultOutput) ToOutput added in v6.65.1

func (LookupRepositoryResultOutput) Url

type Repository

type Repository struct {
	pulumi.CustomResourceState

	// Resource name of the repository, of the form `{{repo}}`.
	// The repo name may contain slashes. eg, `name/with/slash`
	//
	// ***
	Name pulumi.StringOutput `pulumi:"name"`
	// The ID of the project in which the resource belongs.
	// If it is not provided, the provider project is used.
	Project pulumi.StringOutput `pulumi:"project"`
	// How this repository publishes a change in the repository through Cloud Pub/Sub.
	// Keyed by the topic names.
	// Structure is documented below.
	PubsubConfigs RepositoryPubsubConfigArrayOutput `pulumi:"pubsubConfigs"`
	// The disk usage of the repo, in bytes.
	Size pulumi.IntOutput `pulumi:"size"`
	// URL to clone the repository from Google Cloud Source Repositories.
	Url pulumi.StringOutput `pulumi:"url"`
}

A repository (or repo) is a Git repository storing versioned source content.

To get more information about Repository, see:

* [API documentation](https://cloud.google.com/source-repositories/docs/reference/rest/v1/projects.repos) * How-to Guides

## Example Usage ### Sourcerepo Repository Basic

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/sourcerepo"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := sourcerepo.NewRepository(ctx, "my-repo", nil)
		if err != nil {
			return err
		}
		return nil
	})
}

``` ### Sourcerepo Repository Full

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/pubsub"
"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/serviceAccount"
"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/sourcerepo"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		testAccount, err := serviceAccount.NewAccount(ctx, "testAccount", &serviceAccount.AccountArgs{
			AccountId:   pulumi.String("my-account"),
			DisplayName: pulumi.String("Test Service Account"),
		})
		if err != nil {
			return err
		}
		topic, err := pubsub.NewTopic(ctx, "topic", nil)
		if err != nil {
			return err
		}
		_, err = sourcerepo.NewRepository(ctx, "my-repo", &sourcerepo.RepositoryArgs{
			PubsubConfigs: sourcerepo.RepositoryPubsubConfigArray{
				&sourcerepo.RepositoryPubsubConfigArgs{
					Topic:               topic.ID(),
					MessageFormat:       pulumi.String("JSON"),
					ServiceAccountEmail: testAccount.Email,
				},
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## Import

Repository can be imported using any of these accepted formats

```sh

$ pulumi import gcp:sourcerepo/repository:Repository default projects/{{project}}/repos/{{name}}

```

```sh

$ pulumi import gcp:sourcerepo/repository:Repository default {{name}}

```

func GetRepository

func GetRepository(ctx *pulumi.Context,
	name string, id pulumi.IDInput, state *RepositoryState, opts ...pulumi.ResourceOption) (*Repository, error)

GetRepository gets an existing Repository resource's state with the given name, ID, and optional state properties that are used to uniquely qualify the lookup (nil if not required).

func NewRepository

func NewRepository(ctx *pulumi.Context,
	name string, args *RepositoryArgs, opts ...pulumi.ResourceOption) (*Repository, error)

NewRepository registers a new resource with the given unique name, arguments, and options.

func (*Repository) ElementType

func (*Repository) ElementType() reflect.Type

func (*Repository) ToOutput added in v6.65.1

func (i *Repository) ToOutput(ctx context.Context) pulumix.Output[*Repository]

func (*Repository) ToRepositoryOutput

func (i *Repository) ToRepositoryOutput() RepositoryOutput

func (*Repository) ToRepositoryOutputWithContext

func (i *Repository) ToRepositoryOutputWithContext(ctx context.Context) RepositoryOutput

type RepositoryArgs

type RepositoryArgs struct {
	// Resource name of the repository, of the form `{{repo}}`.
	// The repo name may contain slashes. eg, `name/with/slash`
	//
	// ***
	Name pulumi.StringPtrInput
	// The ID of the project in which the resource belongs.
	// If it is not provided, the provider project is used.
	Project pulumi.StringPtrInput
	// How this repository publishes a change in the repository through Cloud Pub/Sub.
	// Keyed by the topic names.
	// Structure is documented below.
	PubsubConfigs RepositoryPubsubConfigArrayInput
}

The set of arguments for constructing a Repository resource.

func (RepositoryArgs) ElementType

func (RepositoryArgs) ElementType() reflect.Type

type RepositoryArray

type RepositoryArray []RepositoryInput

func (RepositoryArray) ElementType

func (RepositoryArray) ElementType() reflect.Type

func (RepositoryArray) ToOutput added in v6.65.1

func (RepositoryArray) ToRepositoryArrayOutput

func (i RepositoryArray) ToRepositoryArrayOutput() RepositoryArrayOutput

func (RepositoryArray) ToRepositoryArrayOutputWithContext

func (i RepositoryArray) ToRepositoryArrayOutputWithContext(ctx context.Context) RepositoryArrayOutput

type RepositoryArrayInput

type RepositoryArrayInput interface {
	pulumi.Input

	ToRepositoryArrayOutput() RepositoryArrayOutput
	ToRepositoryArrayOutputWithContext(context.Context) RepositoryArrayOutput
}

RepositoryArrayInput is an input type that accepts RepositoryArray and RepositoryArrayOutput values. You can construct a concrete instance of `RepositoryArrayInput` via:

RepositoryArray{ RepositoryArgs{...} }

type RepositoryArrayOutput

type RepositoryArrayOutput struct{ *pulumi.OutputState }

func (RepositoryArrayOutput) ElementType

func (RepositoryArrayOutput) ElementType() reflect.Type

func (RepositoryArrayOutput) Index

func (RepositoryArrayOutput) ToOutput added in v6.65.1

func (RepositoryArrayOutput) ToRepositoryArrayOutput

func (o RepositoryArrayOutput) ToRepositoryArrayOutput() RepositoryArrayOutput

func (RepositoryArrayOutput) ToRepositoryArrayOutputWithContext

func (o RepositoryArrayOutput) ToRepositoryArrayOutputWithContext(ctx context.Context) RepositoryArrayOutput

type RepositoryIamBinding

type RepositoryIamBinding struct {
	pulumi.CustomResourceState

	Condition RepositoryIamBindingConditionPtrOutput `pulumi:"condition"`
	// (Computed) The etag of the IAM policy.
	Etag    pulumi.StringOutput      `pulumi:"etag"`
	Members pulumi.StringArrayOutput `pulumi:"members"`
	// The ID of the project in which the resource belongs.
	// If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used.
	//
	// * `member/members` - (Required) Identities that will be granted the privilege in `role`.
	//   Each entry can have one of the following values:
	// * **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.
	// * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
	// * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.
	// * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
	// * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
	// * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.
	// * **projectOwner:projectid**: Owners of the given project. For example, "projectOwner:my-example-project"
	// * **projectEditor:projectid**: Editors of the given project. For example, "projectEditor:my-example-project"
	// * **projectViewer:projectid**: Viewers of the given project. For example, "projectViewer:my-example-project"
	Project    pulumi.StringOutput `pulumi:"project"`
	Repository pulumi.StringOutput `pulumi:"repository"`
	// The role that should be applied. Only one
	// `pubsub.TopicIAMBinding` can be used per role. Note that custom roles must be of the format
	// `[projects|organizations]/{parent-name}/roles/{role-name}`.
	Role pulumi.StringOutput `pulumi:"role"`
}

Three different resources help you manage your IAM policy for Cloud Pub/Sub Topic. Each of these resources serves a different use case:

* `pubsub.TopicIAMPolicy`: Authoritative. Sets the IAM policy for the topic and replaces any existing policy already attached. * `pubsub.TopicIAMBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the topic are preserved. * `pubsub.TopicIAMMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the topic are preserved.

A data source can be used to retrieve policy data in advent you do not need creation

* `pubsub.TopicIAMPolicy`: Retrieves the IAM policy for the topic

> **Note:** `pubsub.TopicIAMPolicy` **cannot** be used in conjunction with `pubsub.TopicIAMBinding` and `pubsub.TopicIAMMember` or they will fight over what your policy should be.

> **Note:** `pubsub.TopicIAMBinding` resources **can be** used in conjunction with `pubsub.TopicIAMMember` resources **only if** they do not grant privilege to the same role.

## google\_pubsub\_topic\_iam\_policy

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/organizations"
"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/pubsub"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		admin, err := organizations.LookupIAMPolicy(ctx, &organizations.LookupIAMPolicyArgs{
			Bindings: []organizations.GetIAMPolicyBinding{
				{
					Role: "roles/viewer",
					Members: []string{
						"user:jane@example.com",
					},
				},
			},
		}, nil)
		if err != nil {
			return err
		}
		_, err = pubsub.NewTopicIAMPolicy(ctx, "policy", &pubsub.TopicIAMPolicyArgs{
			Project:    pulumi.Any(google_pubsub_topic.Example.Project),
			Topic:      pulumi.Any(google_pubsub_topic.Example.Name),
			PolicyData: *pulumi.String(admin.PolicyData),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## google\_pubsub\_topic\_iam\_binding

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/pubsub"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := pubsub.NewTopicIAMBinding(ctx, "binding", &pubsub.TopicIAMBindingArgs{
			Project: pulumi.Any(google_pubsub_topic.Example.Project),
			Topic:   pulumi.Any(google_pubsub_topic.Example.Name),
			Role:    pulumi.String("roles/viewer"),
			Members: pulumi.StringArray{
				pulumi.String("user:jane@example.com"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## google\_pubsub\_topic\_iam\_member

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/pubsub"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := pubsub.NewTopicIAMMember(ctx, "member", &pubsub.TopicIAMMemberArgs{
			Project: pulumi.Any(google_pubsub_topic.Example.Project),
			Topic:   pulumi.Any(google_pubsub_topic.Example.Name),
			Role:    pulumi.String("roles/viewer"),
			Member:  pulumi.String("user:jane@example.com"),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## Import

For all import syntaxes, the "resource in question" can take any of the following forms* projects/{{project}}/topics/{{name}} * {{project}}/{{name}} * {{name}} Any variables not passed in the import command will be taken from the provider configuration. Cloud Pub/Sub topic IAM resources can be imported using the resource identifiers, role, and member. IAM member imports use space-delimited identifiersthe resource in question, the role, and the member identity, e.g.

```sh

$ pulumi import gcp:sourcerepo/repositoryIamBinding:RepositoryIamBinding editor "projects/{{project}}/topics/{{topic}} roles/viewer user:jane@example.com"

```

IAM binding imports use space-delimited identifiersthe resource in question and the role, e.g.

```sh

$ pulumi import gcp:sourcerepo/repositoryIamBinding:RepositoryIamBinding editor "projects/{{project}}/topics/{{topic}} roles/viewer"

```

IAM policy imports use the identifier of the resource in question, e.g.

```sh

$ pulumi import gcp:sourcerepo/repositoryIamBinding:RepositoryIamBinding editor projects/{{project}}/topics/{{topic}}

```

-> **Custom Roles**If you're importing a IAM resource with a custom role, make sure to use the

full name of the custom role, e.g. `[projects/my-project|organizations/my-org]/roles/my-custom-role`.

func GetRepositoryIamBinding

func GetRepositoryIamBinding(ctx *pulumi.Context,
	name string, id pulumi.IDInput, state *RepositoryIamBindingState, opts ...pulumi.ResourceOption) (*RepositoryIamBinding, error)

GetRepositoryIamBinding gets an existing RepositoryIamBinding resource's state with the given name, ID, and optional state properties that are used to uniquely qualify the lookup (nil if not required).

func NewRepositoryIamBinding

func NewRepositoryIamBinding(ctx *pulumi.Context,
	name string, args *RepositoryIamBindingArgs, opts ...pulumi.ResourceOption) (*RepositoryIamBinding, error)

NewRepositoryIamBinding registers a new resource with the given unique name, arguments, and options.

func (*RepositoryIamBinding) ElementType

func (*RepositoryIamBinding) ElementType() reflect.Type

func (*RepositoryIamBinding) ToOutput added in v6.65.1

func (*RepositoryIamBinding) ToRepositoryIamBindingOutput

func (i *RepositoryIamBinding) ToRepositoryIamBindingOutput() RepositoryIamBindingOutput

func (*RepositoryIamBinding) ToRepositoryIamBindingOutputWithContext

func (i *RepositoryIamBinding) ToRepositoryIamBindingOutputWithContext(ctx context.Context) RepositoryIamBindingOutput

type RepositoryIamBindingArgs

type RepositoryIamBindingArgs struct {
	Condition RepositoryIamBindingConditionPtrInput
	Members   pulumi.StringArrayInput
	// The ID of the project in which the resource belongs.
	// If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used.
	//
	// * `member/members` - (Required) Identities that will be granted the privilege in `role`.
	//   Each entry can have one of the following values:
	// * **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.
	// * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
	// * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.
	// * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
	// * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
	// * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.
	// * **projectOwner:projectid**: Owners of the given project. For example, "projectOwner:my-example-project"
	// * **projectEditor:projectid**: Editors of the given project. For example, "projectEditor:my-example-project"
	// * **projectViewer:projectid**: Viewers of the given project. For example, "projectViewer:my-example-project"
	Project    pulumi.StringPtrInput
	Repository pulumi.StringInput
	// The role that should be applied. Only one
	// `pubsub.TopicIAMBinding` can be used per role. Note that custom roles must be of the format
	// `[projects|organizations]/{parent-name}/roles/{role-name}`.
	Role pulumi.StringInput
}

The set of arguments for constructing a RepositoryIamBinding resource.

func (RepositoryIamBindingArgs) ElementType

func (RepositoryIamBindingArgs) ElementType() reflect.Type

type RepositoryIamBindingArray

type RepositoryIamBindingArray []RepositoryIamBindingInput

func (RepositoryIamBindingArray) ElementType

func (RepositoryIamBindingArray) ElementType() reflect.Type

func (RepositoryIamBindingArray) ToOutput added in v6.65.1

func (RepositoryIamBindingArray) ToRepositoryIamBindingArrayOutput

func (i RepositoryIamBindingArray) ToRepositoryIamBindingArrayOutput() RepositoryIamBindingArrayOutput

func (RepositoryIamBindingArray) ToRepositoryIamBindingArrayOutputWithContext

func (i RepositoryIamBindingArray) ToRepositoryIamBindingArrayOutputWithContext(ctx context.Context) RepositoryIamBindingArrayOutput

type RepositoryIamBindingArrayInput

type RepositoryIamBindingArrayInput interface {
	pulumi.Input

	ToRepositoryIamBindingArrayOutput() RepositoryIamBindingArrayOutput
	ToRepositoryIamBindingArrayOutputWithContext(context.Context) RepositoryIamBindingArrayOutput
}

RepositoryIamBindingArrayInput is an input type that accepts RepositoryIamBindingArray and RepositoryIamBindingArrayOutput values. You can construct a concrete instance of `RepositoryIamBindingArrayInput` via:

RepositoryIamBindingArray{ RepositoryIamBindingArgs{...} }

type RepositoryIamBindingArrayOutput

type RepositoryIamBindingArrayOutput struct{ *pulumi.OutputState }

func (RepositoryIamBindingArrayOutput) ElementType

func (RepositoryIamBindingArrayOutput) Index

func (RepositoryIamBindingArrayOutput) ToOutput added in v6.65.1

func (RepositoryIamBindingArrayOutput) ToRepositoryIamBindingArrayOutput

func (o RepositoryIamBindingArrayOutput) ToRepositoryIamBindingArrayOutput() RepositoryIamBindingArrayOutput

func (RepositoryIamBindingArrayOutput) ToRepositoryIamBindingArrayOutputWithContext

func (o RepositoryIamBindingArrayOutput) ToRepositoryIamBindingArrayOutputWithContext(ctx context.Context) RepositoryIamBindingArrayOutput

type RepositoryIamBindingCondition

type RepositoryIamBindingCondition struct {
	Description *string `pulumi:"description"`
	Expression  string  `pulumi:"expression"`
	Title       string  `pulumi:"title"`
}

type RepositoryIamBindingConditionArgs

type RepositoryIamBindingConditionArgs struct {
	Description pulumi.StringPtrInput `pulumi:"description"`
	Expression  pulumi.StringInput    `pulumi:"expression"`
	Title       pulumi.StringInput    `pulumi:"title"`
}

func (RepositoryIamBindingConditionArgs) ElementType

func (RepositoryIamBindingConditionArgs) ToOutput added in v6.65.1

func (RepositoryIamBindingConditionArgs) ToRepositoryIamBindingConditionOutput

func (i RepositoryIamBindingConditionArgs) ToRepositoryIamBindingConditionOutput() RepositoryIamBindingConditionOutput

func (RepositoryIamBindingConditionArgs) ToRepositoryIamBindingConditionOutputWithContext

func (i RepositoryIamBindingConditionArgs) ToRepositoryIamBindingConditionOutputWithContext(ctx context.Context) RepositoryIamBindingConditionOutput

func (RepositoryIamBindingConditionArgs) ToRepositoryIamBindingConditionPtrOutput

func (i RepositoryIamBindingConditionArgs) ToRepositoryIamBindingConditionPtrOutput() RepositoryIamBindingConditionPtrOutput

func (RepositoryIamBindingConditionArgs) ToRepositoryIamBindingConditionPtrOutputWithContext

func (i RepositoryIamBindingConditionArgs) ToRepositoryIamBindingConditionPtrOutputWithContext(ctx context.Context) RepositoryIamBindingConditionPtrOutput

type RepositoryIamBindingConditionInput

type RepositoryIamBindingConditionInput interface {
	pulumi.Input

	ToRepositoryIamBindingConditionOutput() RepositoryIamBindingConditionOutput
	ToRepositoryIamBindingConditionOutputWithContext(context.Context) RepositoryIamBindingConditionOutput
}

RepositoryIamBindingConditionInput is an input type that accepts RepositoryIamBindingConditionArgs and RepositoryIamBindingConditionOutput values. You can construct a concrete instance of `RepositoryIamBindingConditionInput` via:

RepositoryIamBindingConditionArgs{...}

type RepositoryIamBindingConditionOutput

type RepositoryIamBindingConditionOutput struct{ *pulumi.OutputState }

func (RepositoryIamBindingConditionOutput) Description

func (RepositoryIamBindingConditionOutput) ElementType

func (RepositoryIamBindingConditionOutput) Expression

func (RepositoryIamBindingConditionOutput) Title

func (RepositoryIamBindingConditionOutput) ToOutput added in v6.65.1

func (RepositoryIamBindingConditionOutput) ToRepositoryIamBindingConditionOutput

func (o RepositoryIamBindingConditionOutput) ToRepositoryIamBindingConditionOutput() RepositoryIamBindingConditionOutput

func (RepositoryIamBindingConditionOutput) ToRepositoryIamBindingConditionOutputWithContext

func (o RepositoryIamBindingConditionOutput) ToRepositoryIamBindingConditionOutputWithContext(ctx context.Context) RepositoryIamBindingConditionOutput

func (RepositoryIamBindingConditionOutput) ToRepositoryIamBindingConditionPtrOutput

func (o RepositoryIamBindingConditionOutput) ToRepositoryIamBindingConditionPtrOutput() RepositoryIamBindingConditionPtrOutput

func (RepositoryIamBindingConditionOutput) ToRepositoryIamBindingConditionPtrOutputWithContext

func (o RepositoryIamBindingConditionOutput) ToRepositoryIamBindingConditionPtrOutputWithContext(ctx context.Context) RepositoryIamBindingConditionPtrOutput

type RepositoryIamBindingConditionPtrInput

type RepositoryIamBindingConditionPtrInput interface {
	pulumi.Input

	ToRepositoryIamBindingConditionPtrOutput() RepositoryIamBindingConditionPtrOutput
	ToRepositoryIamBindingConditionPtrOutputWithContext(context.Context) RepositoryIamBindingConditionPtrOutput
}

RepositoryIamBindingConditionPtrInput is an input type that accepts RepositoryIamBindingConditionArgs, RepositoryIamBindingConditionPtr and RepositoryIamBindingConditionPtrOutput values. You can construct a concrete instance of `RepositoryIamBindingConditionPtrInput` via:

        RepositoryIamBindingConditionArgs{...}

or:

        nil

type RepositoryIamBindingConditionPtrOutput

type RepositoryIamBindingConditionPtrOutput struct{ *pulumi.OutputState }

func (RepositoryIamBindingConditionPtrOutput) Description

func (RepositoryIamBindingConditionPtrOutput) Elem

func (RepositoryIamBindingConditionPtrOutput) ElementType

func (RepositoryIamBindingConditionPtrOutput) Expression

func (RepositoryIamBindingConditionPtrOutput) Title

func (RepositoryIamBindingConditionPtrOutput) ToOutput added in v6.65.1

func (RepositoryIamBindingConditionPtrOutput) ToRepositoryIamBindingConditionPtrOutput

func (o RepositoryIamBindingConditionPtrOutput) ToRepositoryIamBindingConditionPtrOutput() RepositoryIamBindingConditionPtrOutput

func (RepositoryIamBindingConditionPtrOutput) ToRepositoryIamBindingConditionPtrOutputWithContext

func (o RepositoryIamBindingConditionPtrOutput) ToRepositoryIamBindingConditionPtrOutputWithContext(ctx context.Context) RepositoryIamBindingConditionPtrOutput

type RepositoryIamBindingInput

type RepositoryIamBindingInput interface {
	pulumi.Input

	ToRepositoryIamBindingOutput() RepositoryIamBindingOutput
	ToRepositoryIamBindingOutputWithContext(ctx context.Context) RepositoryIamBindingOutput
}

type RepositoryIamBindingMap

type RepositoryIamBindingMap map[string]RepositoryIamBindingInput

func (RepositoryIamBindingMap) ElementType

func (RepositoryIamBindingMap) ElementType() reflect.Type

func (RepositoryIamBindingMap) ToOutput added in v6.65.1

func (RepositoryIamBindingMap) ToRepositoryIamBindingMapOutput

func (i RepositoryIamBindingMap) ToRepositoryIamBindingMapOutput() RepositoryIamBindingMapOutput

func (RepositoryIamBindingMap) ToRepositoryIamBindingMapOutputWithContext

func (i RepositoryIamBindingMap) ToRepositoryIamBindingMapOutputWithContext(ctx context.Context) RepositoryIamBindingMapOutput

type RepositoryIamBindingMapInput

type RepositoryIamBindingMapInput interface {
	pulumi.Input

	ToRepositoryIamBindingMapOutput() RepositoryIamBindingMapOutput
	ToRepositoryIamBindingMapOutputWithContext(context.Context) RepositoryIamBindingMapOutput
}

RepositoryIamBindingMapInput is an input type that accepts RepositoryIamBindingMap and RepositoryIamBindingMapOutput values. You can construct a concrete instance of `RepositoryIamBindingMapInput` via:

RepositoryIamBindingMap{ "key": RepositoryIamBindingArgs{...} }

type RepositoryIamBindingMapOutput

type RepositoryIamBindingMapOutput struct{ *pulumi.OutputState }

func (RepositoryIamBindingMapOutput) ElementType

func (RepositoryIamBindingMapOutput) MapIndex

func (RepositoryIamBindingMapOutput) ToOutput added in v6.65.1

func (RepositoryIamBindingMapOutput) ToRepositoryIamBindingMapOutput

func (o RepositoryIamBindingMapOutput) ToRepositoryIamBindingMapOutput() RepositoryIamBindingMapOutput

func (RepositoryIamBindingMapOutput) ToRepositoryIamBindingMapOutputWithContext

func (o RepositoryIamBindingMapOutput) ToRepositoryIamBindingMapOutputWithContext(ctx context.Context) RepositoryIamBindingMapOutput

type RepositoryIamBindingOutput

type RepositoryIamBindingOutput struct{ *pulumi.OutputState }

func (RepositoryIamBindingOutput) Condition added in v6.23.0

func (RepositoryIamBindingOutput) ElementType

func (RepositoryIamBindingOutput) ElementType() reflect.Type

func (RepositoryIamBindingOutput) Etag added in v6.23.0

(Computed) The etag of the IAM policy.

func (RepositoryIamBindingOutput) Members added in v6.23.0

func (RepositoryIamBindingOutput) Project added in v6.23.0

The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used.

  • `member/members` - (Required) Identities that will be granted the privilege in `role`. Each entry can have one of the following values:
  • **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.
  • **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
  • **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.
  • **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
  • **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
  • **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.
  • **projectOwner:projectid**: Owners of the given project. For example, "projectOwner:my-example-project"
  • **projectEditor:projectid**: Editors of the given project. For example, "projectEditor:my-example-project"
  • **projectViewer:projectid**: Viewers of the given project. For example, "projectViewer:my-example-project"

func (RepositoryIamBindingOutput) Repository added in v6.23.0

func (RepositoryIamBindingOutput) Role added in v6.23.0

The role that should be applied. Only one `pubsub.TopicIAMBinding` can be used per role. Note that custom roles must be of the format `[projects|organizations]/{parent-name}/roles/{role-name}`.

func (RepositoryIamBindingOutput) ToOutput added in v6.65.1

func (RepositoryIamBindingOutput) ToRepositoryIamBindingOutput

func (o RepositoryIamBindingOutput) ToRepositoryIamBindingOutput() RepositoryIamBindingOutput

func (RepositoryIamBindingOutput) ToRepositoryIamBindingOutputWithContext

func (o RepositoryIamBindingOutput) ToRepositoryIamBindingOutputWithContext(ctx context.Context) RepositoryIamBindingOutput

type RepositoryIamBindingState

type RepositoryIamBindingState struct {
	Condition RepositoryIamBindingConditionPtrInput
	// (Computed) The etag of the IAM policy.
	Etag    pulumi.StringPtrInput
	Members pulumi.StringArrayInput
	// The ID of the project in which the resource belongs.
	// If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used.
	//
	// * `member/members` - (Required) Identities that will be granted the privilege in `role`.
	//   Each entry can have one of the following values:
	// * **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.
	// * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
	// * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.
	// * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
	// * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
	// * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.
	// * **projectOwner:projectid**: Owners of the given project. For example, "projectOwner:my-example-project"
	// * **projectEditor:projectid**: Editors of the given project. For example, "projectEditor:my-example-project"
	// * **projectViewer:projectid**: Viewers of the given project. For example, "projectViewer:my-example-project"
	Project    pulumi.StringPtrInput
	Repository pulumi.StringPtrInput
	// The role that should be applied. Only one
	// `pubsub.TopicIAMBinding` can be used per role. Note that custom roles must be of the format
	// `[projects|organizations]/{parent-name}/roles/{role-name}`.
	Role pulumi.StringPtrInput
}

func (RepositoryIamBindingState) ElementType

func (RepositoryIamBindingState) ElementType() reflect.Type

type RepositoryIamMember

type RepositoryIamMember struct {
	pulumi.CustomResourceState

	Condition RepositoryIamMemberConditionPtrOutput `pulumi:"condition"`
	// (Computed) The etag of the IAM policy.
	Etag   pulumi.StringOutput `pulumi:"etag"`
	Member pulumi.StringOutput `pulumi:"member"`
	// The ID of the project in which the resource belongs.
	// If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used.
	//
	// * `member/members` - (Required) Identities that will be granted the privilege in `role`.
	//   Each entry can have one of the following values:
	// * **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.
	// * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
	// * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.
	// * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
	// * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
	// * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.
	// * **projectOwner:projectid**: Owners of the given project. For example, "projectOwner:my-example-project"
	// * **projectEditor:projectid**: Editors of the given project. For example, "projectEditor:my-example-project"
	// * **projectViewer:projectid**: Viewers of the given project. For example, "projectViewer:my-example-project"
	Project    pulumi.StringOutput `pulumi:"project"`
	Repository pulumi.StringOutput `pulumi:"repository"`
	// The role that should be applied. Only one
	// `pubsub.TopicIAMBinding` can be used per role. Note that custom roles must be of the format
	// `[projects|organizations]/{parent-name}/roles/{role-name}`.
	Role pulumi.StringOutput `pulumi:"role"`
}

Three different resources help you manage your IAM policy for Cloud Pub/Sub Topic. Each of these resources serves a different use case:

* `pubsub.TopicIAMPolicy`: Authoritative. Sets the IAM policy for the topic and replaces any existing policy already attached. * `pubsub.TopicIAMBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the topic are preserved. * `pubsub.TopicIAMMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the topic are preserved.

A data source can be used to retrieve policy data in advent you do not need creation

* `pubsub.TopicIAMPolicy`: Retrieves the IAM policy for the topic

> **Note:** `pubsub.TopicIAMPolicy` **cannot** be used in conjunction with `pubsub.TopicIAMBinding` and `pubsub.TopicIAMMember` or they will fight over what your policy should be.

> **Note:** `pubsub.TopicIAMBinding` resources **can be** used in conjunction with `pubsub.TopicIAMMember` resources **only if** they do not grant privilege to the same role.

## google\_pubsub\_topic\_iam\_policy

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/organizations"
"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/pubsub"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		admin, err := organizations.LookupIAMPolicy(ctx, &organizations.LookupIAMPolicyArgs{
			Bindings: []organizations.GetIAMPolicyBinding{
				{
					Role: "roles/viewer",
					Members: []string{
						"user:jane@example.com",
					},
				},
			},
		}, nil)
		if err != nil {
			return err
		}
		_, err = pubsub.NewTopicIAMPolicy(ctx, "policy", &pubsub.TopicIAMPolicyArgs{
			Project:    pulumi.Any(google_pubsub_topic.Example.Project),
			Topic:      pulumi.Any(google_pubsub_topic.Example.Name),
			PolicyData: *pulumi.String(admin.PolicyData),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## google\_pubsub\_topic\_iam\_binding

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/pubsub"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := pubsub.NewTopicIAMBinding(ctx, "binding", &pubsub.TopicIAMBindingArgs{
			Project: pulumi.Any(google_pubsub_topic.Example.Project),
			Topic:   pulumi.Any(google_pubsub_topic.Example.Name),
			Role:    pulumi.String("roles/viewer"),
			Members: pulumi.StringArray{
				pulumi.String("user:jane@example.com"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## google\_pubsub\_topic\_iam\_member

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/pubsub"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := pubsub.NewTopicIAMMember(ctx, "member", &pubsub.TopicIAMMemberArgs{
			Project: pulumi.Any(google_pubsub_topic.Example.Project),
			Topic:   pulumi.Any(google_pubsub_topic.Example.Name),
			Role:    pulumi.String("roles/viewer"),
			Member:  pulumi.String("user:jane@example.com"),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## Import

For all import syntaxes, the "resource in question" can take any of the following forms* projects/{{project}}/topics/{{name}} * {{project}}/{{name}} * {{name}} Any variables not passed in the import command will be taken from the provider configuration. Cloud Pub/Sub topic IAM resources can be imported using the resource identifiers, role, and member. IAM member imports use space-delimited identifiersthe resource in question, the role, and the member identity, e.g.

```sh

$ pulumi import gcp:sourcerepo/repositoryIamMember:RepositoryIamMember editor "projects/{{project}}/topics/{{topic}} roles/viewer user:jane@example.com"

```

IAM binding imports use space-delimited identifiersthe resource in question and the role, e.g.

```sh

$ pulumi import gcp:sourcerepo/repositoryIamMember:RepositoryIamMember editor "projects/{{project}}/topics/{{topic}} roles/viewer"

```

IAM policy imports use the identifier of the resource in question, e.g.

```sh

$ pulumi import gcp:sourcerepo/repositoryIamMember:RepositoryIamMember editor projects/{{project}}/topics/{{topic}}

```

-> **Custom Roles**If you're importing a IAM resource with a custom role, make sure to use the

full name of the custom role, e.g. `[projects/my-project|organizations/my-org]/roles/my-custom-role`.

func GetRepositoryIamMember

func GetRepositoryIamMember(ctx *pulumi.Context,
	name string, id pulumi.IDInput, state *RepositoryIamMemberState, opts ...pulumi.ResourceOption) (*RepositoryIamMember, error)

GetRepositoryIamMember gets an existing RepositoryIamMember resource's state with the given name, ID, and optional state properties that are used to uniquely qualify the lookup (nil if not required).

func NewRepositoryIamMember

func NewRepositoryIamMember(ctx *pulumi.Context,
	name string, args *RepositoryIamMemberArgs, opts ...pulumi.ResourceOption) (*RepositoryIamMember, error)

NewRepositoryIamMember registers a new resource with the given unique name, arguments, and options.

func (*RepositoryIamMember) ElementType

func (*RepositoryIamMember) ElementType() reflect.Type

func (*RepositoryIamMember) ToOutput added in v6.65.1

func (*RepositoryIamMember) ToRepositoryIamMemberOutput

func (i *RepositoryIamMember) ToRepositoryIamMemberOutput() RepositoryIamMemberOutput

func (*RepositoryIamMember) ToRepositoryIamMemberOutputWithContext

func (i *RepositoryIamMember) ToRepositoryIamMemberOutputWithContext(ctx context.Context) RepositoryIamMemberOutput

type RepositoryIamMemberArgs

type RepositoryIamMemberArgs struct {
	Condition RepositoryIamMemberConditionPtrInput
	Member    pulumi.StringInput
	// The ID of the project in which the resource belongs.
	// If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used.
	//
	// * `member/members` - (Required) Identities that will be granted the privilege in `role`.
	//   Each entry can have one of the following values:
	// * **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.
	// * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
	// * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.
	// * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
	// * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
	// * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.
	// * **projectOwner:projectid**: Owners of the given project. For example, "projectOwner:my-example-project"
	// * **projectEditor:projectid**: Editors of the given project. For example, "projectEditor:my-example-project"
	// * **projectViewer:projectid**: Viewers of the given project. For example, "projectViewer:my-example-project"
	Project    pulumi.StringPtrInput
	Repository pulumi.StringInput
	// The role that should be applied. Only one
	// `pubsub.TopicIAMBinding` can be used per role. Note that custom roles must be of the format
	// `[projects|organizations]/{parent-name}/roles/{role-name}`.
	Role pulumi.StringInput
}

The set of arguments for constructing a RepositoryIamMember resource.

func (RepositoryIamMemberArgs) ElementType

func (RepositoryIamMemberArgs) ElementType() reflect.Type

type RepositoryIamMemberArray

type RepositoryIamMemberArray []RepositoryIamMemberInput

func (RepositoryIamMemberArray) ElementType

func (RepositoryIamMemberArray) ElementType() reflect.Type

func (RepositoryIamMemberArray) ToOutput added in v6.65.1

func (RepositoryIamMemberArray) ToRepositoryIamMemberArrayOutput

func (i RepositoryIamMemberArray) ToRepositoryIamMemberArrayOutput() RepositoryIamMemberArrayOutput

func (RepositoryIamMemberArray) ToRepositoryIamMemberArrayOutputWithContext

func (i RepositoryIamMemberArray) ToRepositoryIamMemberArrayOutputWithContext(ctx context.Context) RepositoryIamMemberArrayOutput

type RepositoryIamMemberArrayInput

type RepositoryIamMemberArrayInput interface {
	pulumi.Input

	ToRepositoryIamMemberArrayOutput() RepositoryIamMemberArrayOutput
	ToRepositoryIamMemberArrayOutputWithContext(context.Context) RepositoryIamMemberArrayOutput
}

RepositoryIamMemberArrayInput is an input type that accepts RepositoryIamMemberArray and RepositoryIamMemberArrayOutput values. You can construct a concrete instance of `RepositoryIamMemberArrayInput` via:

RepositoryIamMemberArray{ RepositoryIamMemberArgs{...} }

type RepositoryIamMemberArrayOutput

type RepositoryIamMemberArrayOutput struct{ *pulumi.OutputState }

func (RepositoryIamMemberArrayOutput) ElementType

func (RepositoryIamMemberArrayOutput) Index

func (RepositoryIamMemberArrayOutput) ToOutput added in v6.65.1

func (RepositoryIamMemberArrayOutput) ToRepositoryIamMemberArrayOutput

func (o RepositoryIamMemberArrayOutput) ToRepositoryIamMemberArrayOutput() RepositoryIamMemberArrayOutput

func (RepositoryIamMemberArrayOutput) ToRepositoryIamMemberArrayOutputWithContext

func (o RepositoryIamMemberArrayOutput) ToRepositoryIamMemberArrayOutputWithContext(ctx context.Context) RepositoryIamMemberArrayOutput

type RepositoryIamMemberCondition

type RepositoryIamMemberCondition struct {
	Description *string `pulumi:"description"`
	Expression  string  `pulumi:"expression"`
	Title       string  `pulumi:"title"`
}

type RepositoryIamMemberConditionArgs

type RepositoryIamMemberConditionArgs struct {
	Description pulumi.StringPtrInput `pulumi:"description"`
	Expression  pulumi.StringInput    `pulumi:"expression"`
	Title       pulumi.StringInput    `pulumi:"title"`
}

func (RepositoryIamMemberConditionArgs) ElementType

func (RepositoryIamMemberConditionArgs) ToOutput added in v6.65.1

func (RepositoryIamMemberConditionArgs) ToRepositoryIamMemberConditionOutput

func (i RepositoryIamMemberConditionArgs) ToRepositoryIamMemberConditionOutput() RepositoryIamMemberConditionOutput

func (RepositoryIamMemberConditionArgs) ToRepositoryIamMemberConditionOutputWithContext

func (i RepositoryIamMemberConditionArgs) ToRepositoryIamMemberConditionOutputWithContext(ctx context.Context) RepositoryIamMemberConditionOutput

func (RepositoryIamMemberConditionArgs) ToRepositoryIamMemberConditionPtrOutput

func (i RepositoryIamMemberConditionArgs) ToRepositoryIamMemberConditionPtrOutput() RepositoryIamMemberConditionPtrOutput

func (RepositoryIamMemberConditionArgs) ToRepositoryIamMemberConditionPtrOutputWithContext

func (i RepositoryIamMemberConditionArgs) ToRepositoryIamMemberConditionPtrOutputWithContext(ctx context.Context) RepositoryIamMemberConditionPtrOutput

type RepositoryIamMemberConditionInput

type RepositoryIamMemberConditionInput interface {
	pulumi.Input

	ToRepositoryIamMemberConditionOutput() RepositoryIamMemberConditionOutput
	ToRepositoryIamMemberConditionOutputWithContext(context.Context) RepositoryIamMemberConditionOutput
}

RepositoryIamMemberConditionInput is an input type that accepts RepositoryIamMemberConditionArgs and RepositoryIamMemberConditionOutput values. You can construct a concrete instance of `RepositoryIamMemberConditionInput` via:

RepositoryIamMemberConditionArgs{...}

type RepositoryIamMemberConditionOutput

type RepositoryIamMemberConditionOutput struct{ *pulumi.OutputState }

func (RepositoryIamMemberConditionOutput) Description

func (RepositoryIamMemberConditionOutput) ElementType

func (RepositoryIamMemberConditionOutput) Expression

func (RepositoryIamMemberConditionOutput) Title

func (RepositoryIamMemberConditionOutput) ToOutput added in v6.65.1

func (RepositoryIamMemberConditionOutput) ToRepositoryIamMemberConditionOutput

func (o RepositoryIamMemberConditionOutput) ToRepositoryIamMemberConditionOutput() RepositoryIamMemberConditionOutput

func (RepositoryIamMemberConditionOutput) ToRepositoryIamMemberConditionOutputWithContext

func (o RepositoryIamMemberConditionOutput) ToRepositoryIamMemberConditionOutputWithContext(ctx context.Context) RepositoryIamMemberConditionOutput

func (RepositoryIamMemberConditionOutput) ToRepositoryIamMemberConditionPtrOutput

func (o RepositoryIamMemberConditionOutput) ToRepositoryIamMemberConditionPtrOutput() RepositoryIamMemberConditionPtrOutput

func (RepositoryIamMemberConditionOutput) ToRepositoryIamMemberConditionPtrOutputWithContext

func (o RepositoryIamMemberConditionOutput) ToRepositoryIamMemberConditionPtrOutputWithContext(ctx context.Context) RepositoryIamMemberConditionPtrOutput

type RepositoryIamMemberConditionPtrInput

type RepositoryIamMemberConditionPtrInput interface {
	pulumi.Input

	ToRepositoryIamMemberConditionPtrOutput() RepositoryIamMemberConditionPtrOutput
	ToRepositoryIamMemberConditionPtrOutputWithContext(context.Context) RepositoryIamMemberConditionPtrOutput
}

RepositoryIamMemberConditionPtrInput is an input type that accepts RepositoryIamMemberConditionArgs, RepositoryIamMemberConditionPtr and RepositoryIamMemberConditionPtrOutput values. You can construct a concrete instance of `RepositoryIamMemberConditionPtrInput` via:

        RepositoryIamMemberConditionArgs{...}

or:

        nil

type RepositoryIamMemberConditionPtrOutput

type RepositoryIamMemberConditionPtrOutput struct{ *pulumi.OutputState }

func (RepositoryIamMemberConditionPtrOutput) Description

func (RepositoryIamMemberConditionPtrOutput) Elem

func (RepositoryIamMemberConditionPtrOutput) ElementType

func (RepositoryIamMemberConditionPtrOutput) Expression

func (RepositoryIamMemberConditionPtrOutput) Title

func (RepositoryIamMemberConditionPtrOutput) ToOutput added in v6.65.1

func (RepositoryIamMemberConditionPtrOutput) ToRepositoryIamMemberConditionPtrOutput

func (o RepositoryIamMemberConditionPtrOutput) ToRepositoryIamMemberConditionPtrOutput() RepositoryIamMemberConditionPtrOutput

func (RepositoryIamMemberConditionPtrOutput) ToRepositoryIamMemberConditionPtrOutputWithContext

func (o RepositoryIamMemberConditionPtrOutput) ToRepositoryIamMemberConditionPtrOutputWithContext(ctx context.Context) RepositoryIamMemberConditionPtrOutput

type RepositoryIamMemberInput

type RepositoryIamMemberInput interface {
	pulumi.Input

	ToRepositoryIamMemberOutput() RepositoryIamMemberOutput
	ToRepositoryIamMemberOutputWithContext(ctx context.Context) RepositoryIamMemberOutput
}

type RepositoryIamMemberMap

type RepositoryIamMemberMap map[string]RepositoryIamMemberInput

func (RepositoryIamMemberMap) ElementType

func (RepositoryIamMemberMap) ElementType() reflect.Type

func (RepositoryIamMemberMap) ToOutput added in v6.65.1

func (RepositoryIamMemberMap) ToRepositoryIamMemberMapOutput

func (i RepositoryIamMemberMap) ToRepositoryIamMemberMapOutput() RepositoryIamMemberMapOutput

func (RepositoryIamMemberMap) ToRepositoryIamMemberMapOutputWithContext

func (i RepositoryIamMemberMap) ToRepositoryIamMemberMapOutputWithContext(ctx context.Context) RepositoryIamMemberMapOutput

type RepositoryIamMemberMapInput

type RepositoryIamMemberMapInput interface {
	pulumi.Input

	ToRepositoryIamMemberMapOutput() RepositoryIamMemberMapOutput
	ToRepositoryIamMemberMapOutputWithContext(context.Context) RepositoryIamMemberMapOutput
}

RepositoryIamMemberMapInput is an input type that accepts RepositoryIamMemberMap and RepositoryIamMemberMapOutput values. You can construct a concrete instance of `RepositoryIamMemberMapInput` via:

RepositoryIamMemberMap{ "key": RepositoryIamMemberArgs{...} }

type RepositoryIamMemberMapOutput

type RepositoryIamMemberMapOutput struct{ *pulumi.OutputState }

func (RepositoryIamMemberMapOutput) ElementType

func (RepositoryIamMemberMapOutput) MapIndex

func (RepositoryIamMemberMapOutput) ToOutput added in v6.65.1

func (RepositoryIamMemberMapOutput) ToRepositoryIamMemberMapOutput

func (o RepositoryIamMemberMapOutput) ToRepositoryIamMemberMapOutput() RepositoryIamMemberMapOutput

func (RepositoryIamMemberMapOutput) ToRepositoryIamMemberMapOutputWithContext

func (o RepositoryIamMemberMapOutput) ToRepositoryIamMemberMapOutputWithContext(ctx context.Context) RepositoryIamMemberMapOutput

type RepositoryIamMemberOutput

type RepositoryIamMemberOutput struct{ *pulumi.OutputState }

func (RepositoryIamMemberOutput) Condition added in v6.23.0

func (RepositoryIamMemberOutput) ElementType

func (RepositoryIamMemberOutput) ElementType() reflect.Type

func (RepositoryIamMemberOutput) Etag added in v6.23.0

(Computed) The etag of the IAM policy.

func (RepositoryIamMemberOutput) Member added in v6.23.0

func (RepositoryIamMemberOutput) Project added in v6.23.0

The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used.

  • `member/members` - (Required) Identities that will be granted the privilege in `role`. Each entry can have one of the following values:
  • **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.
  • **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
  • **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.
  • **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
  • **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
  • **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.
  • **projectOwner:projectid**: Owners of the given project. For example, "projectOwner:my-example-project"
  • **projectEditor:projectid**: Editors of the given project. For example, "projectEditor:my-example-project"
  • **projectViewer:projectid**: Viewers of the given project. For example, "projectViewer:my-example-project"

func (RepositoryIamMemberOutput) Repository added in v6.23.0

func (RepositoryIamMemberOutput) Role added in v6.23.0

The role that should be applied. Only one `pubsub.TopicIAMBinding` can be used per role. Note that custom roles must be of the format `[projects|organizations]/{parent-name}/roles/{role-name}`.

func (RepositoryIamMemberOutput) ToOutput added in v6.65.1

func (RepositoryIamMemberOutput) ToRepositoryIamMemberOutput

func (o RepositoryIamMemberOutput) ToRepositoryIamMemberOutput() RepositoryIamMemberOutput

func (RepositoryIamMemberOutput) ToRepositoryIamMemberOutputWithContext

func (o RepositoryIamMemberOutput) ToRepositoryIamMemberOutputWithContext(ctx context.Context) RepositoryIamMemberOutput

type RepositoryIamMemberState

type RepositoryIamMemberState struct {
	Condition RepositoryIamMemberConditionPtrInput
	// (Computed) The etag of the IAM policy.
	Etag   pulumi.StringPtrInput
	Member pulumi.StringPtrInput
	// The ID of the project in which the resource belongs.
	// If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used.
	//
	// * `member/members` - (Required) Identities that will be granted the privilege in `role`.
	//   Each entry can have one of the following values:
	// * **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.
	// * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
	// * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.
	// * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
	// * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
	// * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.
	// * **projectOwner:projectid**: Owners of the given project. For example, "projectOwner:my-example-project"
	// * **projectEditor:projectid**: Editors of the given project. For example, "projectEditor:my-example-project"
	// * **projectViewer:projectid**: Viewers of the given project. For example, "projectViewer:my-example-project"
	Project    pulumi.StringPtrInput
	Repository pulumi.StringPtrInput
	// The role that should be applied. Only one
	// `pubsub.TopicIAMBinding` can be used per role. Note that custom roles must be of the format
	// `[projects|organizations]/{parent-name}/roles/{role-name}`.
	Role pulumi.StringPtrInput
}

func (RepositoryIamMemberState) ElementType

func (RepositoryIamMemberState) ElementType() reflect.Type

type RepositoryIamPolicy

type RepositoryIamPolicy struct {
	pulumi.CustomResourceState

	// (Computed) The etag of the IAM policy.
	Etag pulumi.StringOutput `pulumi:"etag"`
	// The policy data generated by
	// a `organizations.getIAMPolicy` data source.
	PolicyData pulumi.StringOutput `pulumi:"policyData"`
	// The ID of the project in which the resource belongs.
	// If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used.
	//
	// * `member/members` - (Required) Identities that will be granted the privilege in `role`.
	//   Each entry can have one of the following values:
	// * **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.
	// * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
	// * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.
	// * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
	// * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
	// * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.
	// * **projectOwner:projectid**: Owners of the given project. For example, "projectOwner:my-example-project"
	// * **projectEditor:projectid**: Editors of the given project. For example, "projectEditor:my-example-project"
	// * **projectViewer:projectid**: Viewers of the given project. For example, "projectViewer:my-example-project"
	Project    pulumi.StringOutput `pulumi:"project"`
	Repository pulumi.StringOutput `pulumi:"repository"`
}

Three different resources help you manage your IAM policy for Cloud Pub/Sub Topic. Each of these resources serves a different use case:

* `pubsub.TopicIAMPolicy`: Authoritative. Sets the IAM policy for the topic and replaces any existing policy already attached. * `pubsub.TopicIAMBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the topic are preserved. * `pubsub.TopicIAMMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the topic are preserved.

A data source can be used to retrieve policy data in advent you do not need creation

* `pubsub.TopicIAMPolicy`: Retrieves the IAM policy for the topic

> **Note:** `pubsub.TopicIAMPolicy` **cannot** be used in conjunction with `pubsub.TopicIAMBinding` and `pubsub.TopicIAMMember` or they will fight over what your policy should be.

> **Note:** `pubsub.TopicIAMBinding` resources **can be** used in conjunction with `pubsub.TopicIAMMember` resources **only if** they do not grant privilege to the same role.

## google\_pubsub\_topic\_iam\_policy

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/organizations"
"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/pubsub"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		admin, err := organizations.LookupIAMPolicy(ctx, &organizations.LookupIAMPolicyArgs{
			Bindings: []organizations.GetIAMPolicyBinding{
				{
					Role: "roles/viewer",
					Members: []string{
						"user:jane@example.com",
					},
				},
			},
		}, nil)
		if err != nil {
			return err
		}
		_, err = pubsub.NewTopicIAMPolicy(ctx, "policy", &pubsub.TopicIAMPolicyArgs{
			Project:    pulumi.Any(google_pubsub_topic.Example.Project),
			Topic:      pulumi.Any(google_pubsub_topic.Example.Name),
			PolicyData: *pulumi.String(admin.PolicyData),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## google\_pubsub\_topic\_iam\_binding

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/pubsub"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := pubsub.NewTopicIAMBinding(ctx, "binding", &pubsub.TopicIAMBindingArgs{
			Project: pulumi.Any(google_pubsub_topic.Example.Project),
			Topic:   pulumi.Any(google_pubsub_topic.Example.Name),
			Role:    pulumi.String("roles/viewer"),
			Members: pulumi.StringArray{
				pulumi.String("user:jane@example.com"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## google\_pubsub\_topic\_iam\_member

```go package main

import (

"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/pubsub"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"

)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := pubsub.NewTopicIAMMember(ctx, "member", &pubsub.TopicIAMMemberArgs{
			Project: pulumi.Any(google_pubsub_topic.Example.Project),
			Topic:   pulumi.Any(google_pubsub_topic.Example.Name),
			Role:    pulumi.String("roles/viewer"),
			Member:  pulumi.String("user:jane@example.com"),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

```

## Import

For all import syntaxes, the "resource in question" can take any of the following forms* projects/{{project}}/topics/{{name}} * {{project}}/{{name}} * {{name}} Any variables not passed in the import command will be taken from the provider configuration. Cloud Pub/Sub topic IAM resources can be imported using the resource identifiers, role, and member. IAM member imports use space-delimited identifiersthe resource in question, the role, and the member identity, e.g.

```sh

$ pulumi import gcp:sourcerepo/repositoryIamPolicy:RepositoryIamPolicy editor "projects/{{project}}/topics/{{topic}} roles/viewer user:jane@example.com"

```

IAM binding imports use space-delimited identifiersthe resource in question and the role, e.g.

```sh

$ pulumi import gcp:sourcerepo/repositoryIamPolicy:RepositoryIamPolicy editor "projects/{{project}}/topics/{{topic}} roles/viewer"

```

IAM policy imports use the identifier of the resource in question, e.g.

```sh

$ pulumi import gcp:sourcerepo/repositoryIamPolicy:RepositoryIamPolicy editor projects/{{project}}/topics/{{topic}}

```

-> **Custom Roles**If you're importing a IAM resource with a custom role, make sure to use the

full name of the custom role, e.g. `[projects/my-project|organizations/my-org]/roles/my-custom-role`.

func GetRepositoryIamPolicy

func GetRepositoryIamPolicy(ctx *pulumi.Context,
	name string, id pulumi.IDInput, state *RepositoryIamPolicyState, opts ...pulumi.ResourceOption) (*RepositoryIamPolicy, error)

GetRepositoryIamPolicy gets an existing RepositoryIamPolicy resource's state with the given name, ID, and optional state properties that are used to uniquely qualify the lookup (nil if not required).

func NewRepositoryIamPolicy

func NewRepositoryIamPolicy(ctx *pulumi.Context,
	name string, args *RepositoryIamPolicyArgs, opts ...pulumi.ResourceOption) (*RepositoryIamPolicy, error)

NewRepositoryIamPolicy registers a new resource with the given unique name, arguments, and options.

func (*RepositoryIamPolicy) ElementType

func (*RepositoryIamPolicy) ElementType() reflect.Type

func (*RepositoryIamPolicy) ToOutput added in v6.65.1

func (*RepositoryIamPolicy) ToRepositoryIamPolicyOutput

func (i *RepositoryIamPolicy) ToRepositoryIamPolicyOutput() RepositoryIamPolicyOutput

func (*RepositoryIamPolicy) ToRepositoryIamPolicyOutputWithContext

func (i *RepositoryIamPolicy) ToRepositoryIamPolicyOutputWithContext(ctx context.Context) RepositoryIamPolicyOutput

type RepositoryIamPolicyArgs

type RepositoryIamPolicyArgs struct {
	// The policy data generated by
	// a `organizations.getIAMPolicy` data source.
	PolicyData pulumi.StringInput
	// The ID of the project in which the resource belongs.
	// If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used.
	//
	// * `member/members` - (Required) Identities that will be granted the privilege in `role`.
	//   Each entry can have one of the following values:
	// * **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.
	// * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
	// * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.
	// * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
	// * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
	// * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.
	// * **projectOwner:projectid**: Owners of the given project. For example, "projectOwner:my-example-project"
	// * **projectEditor:projectid**: Editors of the given project. For example, "projectEditor:my-example-project"
	// * **projectViewer:projectid**: Viewers of the given project. For example, "projectViewer:my-example-project"
	Project    pulumi.StringPtrInput
	Repository pulumi.StringInput
}

The set of arguments for constructing a RepositoryIamPolicy resource.

func (RepositoryIamPolicyArgs) ElementType

func (RepositoryIamPolicyArgs) ElementType() reflect.Type

type RepositoryIamPolicyArray

type RepositoryIamPolicyArray []RepositoryIamPolicyInput

func (RepositoryIamPolicyArray) ElementType

func (RepositoryIamPolicyArray) ElementType() reflect.Type

func (RepositoryIamPolicyArray) ToOutput added in v6.65.1

func (RepositoryIamPolicyArray) ToRepositoryIamPolicyArrayOutput

func (i RepositoryIamPolicyArray) ToRepositoryIamPolicyArrayOutput() RepositoryIamPolicyArrayOutput

func (RepositoryIamPolicyArray) ToRepositoryIamPolicyArrayOutputWithContext

func (i RepositoryIamPolicyArray) ToRepositoryIamPolicyArrayOutputWithContext(ctx context.Context) RepositoryIamPolicyArrayOutput

type RepositoryIamPolicyArrayInput

type RepositoryIamPolicyArrayInput interface {
	pulumi.Input

	ToRepositoryIamPolicyArrayOutput() RepositoryIamPolicyArrayOutput
	ToRepositoryIamPolicyArrayOutputWithContext(context.Context) RepositoryIamPolicyArrayOutput
}

RepositoryIamPolicyArrayInput is an input type that accepts RepositoryIamPolicyArray and RepositoryIamPolicyArrayOutput values. You can construct a concrete instance of `RepositoryIamPolicyArrayInput` via:

RepositoryIamPolicyArray{ RepositoryIamPolicyArgs{...} }

type RepositoryIamPolicyArrayOutput

type RepositoryIamPolicyArrayOutput struct{ *pulumi.OutputState }

func (RepositoryIamPolicyArrayOutput) ElementType

func (RepositoryIamPolicyArrayOutput) Index

func (RepositoryIamPolicyArrayOutput) ToOutput added in v6.65.1

func (RepositoryIamPolicyArrayOutput) ToRepositoryIamPolicyArrayOutput

func (o RepositoryIamPolicyArrayOutput) ToRepositoryIamPolicyArrayOutput() RepositoryIamPolicyArrayOutput

func (RepositoryIamPolicyArrayOutput) ToRepositoryIamPolicyArrayOutputWithContext

func (o RepositoryIamPolicyArrayOutput) ToRepositoryIamPolicyArrayOutputWithContext(ctx context.Context) RepositoryIamPolicyArrayOutput

type RepositoryIamPolicyInput

type RepositoryIamPolicyInput interface {
	pulumi.Input

	ToRepositoryIamPolicyOutput() RepositoryIamPolicyOutput
	ToRepositoryIamPolicyOutputWithContext(ctx context.Context) RepositoryIamPolicyOutput
}

type RepositoryIamPolicyMap

type RepositoryIamPolicyMap map[string]RepositoryIamPolicyInput

func (RepositoryIamPolicyMap) ElementType

func (RepositoryIamPolicyMap) ElementType() reflect.Type

func (RepositoryIamPolicyMap) ToOutput added in v6.65.1

func (RepositoryIamPolicyMap) ToRepositoryIamPolicyMapOutput

func (i RepositoryIamPolicyMap) ToRepositoryIamPolicyMapOutput() RepositoryIamPolicyMapOutput

func (RepositoryIamPolicyMap) ToRepositoryIamPolicyMapOutputWithContext

func (i RepositoryIamPolicyMap) ToRepositoryIamPolicyMapOutputWithContext(ctx context.Context) RepositoryIamPolicyMapOutput

type RepositoryIamPolicyMapInput

type RepositoryIamPolicyMapInput interface {
	pulumi.Input

	ToRepositoryIamPolicyMapOutput() RepositoryIamPolicyMapOutput
	ToRepositoryIamPolicyMapOutputWithContext(context.Context) RepositoryIamPolicyMapOutput
}

RepositoryIamPolicyMapInput is an input type that accepts RepositoryIamPolicyMap and RepositoryIamPolicyMapOutput values. You can construct a concrete instance of `RepositoryIamPolicyMapInput` via:

RepositoryIamPolicyMap{ "key": RepositoryIamPolicyArgs{...} }

type RepositoryIamPolicyMapOutput

type RepositoryIamPolicyMapOutput struct{ *pulumi.OutputState }

func (RepositoryIamPolicyMapOutput) ElementType

func (RepositoryIamPolicyMapOutput) MapIndex

func (RepositoryIamPolicyMapOutput) ToOutput added in v6.65.1

func (RepositoryIamPolicyMapOutput) ToRepositoryIamPolicyMapOutput

func (o RepositoryIamPolicyMapOutput) ToRepositoryIamPolicyMapOutput() RepositoryIamPolicyMapOutput

func (RepositoryIamPolicyMapOutput) ToRepositoryIamPolicyMapOutputWithContext

func (o RepositoryIamPolicyMapOutput) ToRepositoryIamPolicyMapOutputWithContext(ctx context.Context) RepositoryIamPolicyMapOutput

type RepositoryIamPolicyOutput

type RepositoryIamPolicyOutput struct{ *pulumi.OutputState }

func (RepositoryIamPolicyOutput) ElementType

func (RepositoryIamPolicyOutput) ElementType() reflect.Type

func (RepositoryIamPolicyOutput) Etag added in v6.23.0

(Computed) The etag of the IAM policy.

func (RepositoryIamPolicyOutput) PolicyData added in v6.23.0

The policy data generated by a `organizations.getIAMPolicy` data source.

func (RepositoryIamPolicyOutput) Project added in v6.23.0

The ID of the project in which the resource belongs. If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used.

  • `member/members` - (Required) Identities that will be granted the privilege in `role`. Each entry can have one of the following values:
  • **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.
  • **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
  • **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.
  • **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
  • **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
  • **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.
  • **projectOwner:projectid**: Owners of the given project. For example, "projectOwner:my-example-project"
  • **projectEditor:projectid**: Editors of the given project. For example, "projectEditor:my-example-project"
  • **projectViewer:projectid**: Viewers of the given project. For example, "projectViewer:my-example-project"

func (RepositoryIamPolicyOutput) Repository added in v6.23.0

func (RepositoryIamPolicyOutput) ToOutput added in v6.65.1

func (RepositoryIamPolicyOutput) ToRepositoryIamPolicyOutput

func (o RepositoryIamPolicyOutput) ToRepositoryIamPolicyOutput() RepositoryIamPolicyOutput

func (RepositoryIamPolicyOutput) ToRepositoryIamPolicyOutputWithContext

func (o RepositoryIamPolicyOutput) ToRepositoryIamPolicyOutputWithContext(ctx context.Context) RepositoryIamPolicyOutput

type RepositoryIamPolicyState

type RepositoryIamPolicyState struct {
	// (Computed) The etag of the IAM policy.
	Etag pulumi.StringPtrInput
	// The policy data generated by
	// a `organizations.getIAMPolicy` data source.
	PolicyData pulumi.StringPtrInput
	// The ID of the project in which the resource belongs.
	// If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used.
	//
	// * `member/members` - (Required) Identities that will be granted the privilege in `role`.
	//   Each entry can have one of the following values:
	// * **allUsers**: A special identifier that represents anyone who is on the internet; with or without a Google account.
	// * **allAuthenticatedUsers**: A special identifier that represents anyone who is authenticated with a Google account or a service account.
	// * **user:{emailid}**: An email address that represents a specific Google account. For example, alice@gmail.com or joe@example.com.
	// * **serviceAccount:{emailid}**: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com.
	// * **group:{emailid}**: An email address that represents a Google group. For example, admins@example.com.
	// * **domain:{domain}**: A G Suite domain (primary, instead of alias) name that represents all the users of that domain. For example, google.com or example.com.
	// * **projectOwner:projectid**: Owners of the given project. For example, "projectOwner:my-example-project"
	// * **projectEditor:projectid**: Editors of the given project. For example, "projectEditor:my-example-project"
	// * **projectViewer:projectid**: Viewers of the given project. For example, "projectViewer:my-example-project"
	Project    pulumi.StringPtrInput
	Repository pulumi.StringPtrInput
}

func (RepositoryIamPolicyState) ElementType

func (RepositoryIamPolicyState) ElementType() reflect.Type

type RepositoryInput

type RepositoryInput interface {
	pulumi.Input

	ToRepositoryOutput() RepositoryOutput
	ToRepositoryOutputWithContext(ctx context.Context) RepositoryOutput
}

type RepositoryMap

type RepositoryMap map[string]RepositoryInput

func (RepositoryMap) ElementType

func (RepositoryMap) ElementType() reflect.Type

func (RepositoryMap) ToOutput added in v6.65.1

func (RepositoryMap) ToRepositoryMapOutput

func (i RepositoryMap) ToRepositoryMapOutput() RepositoryMapOutput

func (RepositoryMap) ToRepositoryMapOutputWithContext

func (i RepositoryMap) ToRepositoryMapOutputWithContext(ctx context.Context) RepositoryMapOutput

type RepositoryMapInput

type RepositoryMapInput interface {
	pulumi.Input

	ToRepositoryMapOutput() RepositoryMapOutput
	ToRepositoryMapOutputWithContext(context.Context) RepositoryMapOutput
}

RepositoryMapInput is an input type that accepts RepositoryMap and RepositoryMapOutput values. You can construct a concrete instance of `RepositoryMapInput` via:

RepositoryMap{ "key": RepositoryArgs{...} }

type RepositoryMapOutput

type RepositoryMapOutput struct{ *pulumi.OutputState }

func (RepositoryMapOutput) ElementType

func (RepositoryMapOutput) ElementType() reflect.Type

func (RepositoryMapOutput) MapIndex

func (RepositoryMapOutput) ToOutput added in v6.65.1

func (RepositoryMapOutput) ToRepositoryMapOutput

func (o RepositoryMapOutput) ToRepositoryMapOutput() RepositoryMapOutput

func (RepositoryMapOutput) ToRepositoryMapOutputWithContext

func (o RepositoryMapOutput) ToRepositoryMapOutputWithContext(ctx context.Context) RepositoryMapOutput

type RepositoryOutput

type RepositoryOutput struct{ *pulumi.OutputState }

func (RepositoryOutput) ElementType

func (RepositoryOutput) ElementType() reflect.Type

func (RepositoryOutput) Name added in v6.23.0

Resource name of the repository, of the form `{{repo}}`. The repo name may contain slashes. eg, `name/with/slash`

***

func (RepositoryOutput) Project added in v6.23.0

func (o RepositoryOutput) Project() pulumi.StringOutput

The ID of the project in which the resource belongs. If it is not provided, the provider project is used.

func (RepositoryOutput) PubsubConfigs added in v6.23.0

How this repository publishes a change in the repository through Cloud Pub/Sub. Keyed by the topic names. Structure is documented below.

func (RepositoryOutput) Size added in v6.23.0

The disk usage of the repo, in bytes.

func (RepositoryOutput) ToOutput added in v6.65.1

func (RepositoryOutput) ToRepositoryOutput

func (o RepositoryOutput) ToRepositoryOutput() RepositoryOutput

func (RepositoryOutput) ToRepositoryOutputWithContext

func (o RepositoryOutput) ToRepositoryOutputWithContext(ctx context.Context) RepositoryOutput

func (RepositoryOutput) Url added in v6.23.0

URL to clone the repository from Google Cloud Source Repositories.

type RepositoryPubsubConfig

type RepositoryPubsubConfig struct {
	// The format of the Cloud Pub/Sub messages.
	// - PROTOBUF: The message payload is a serialized protocol buffer of SourceRepoEvent.
	// - JSON: The message payload is a JSON string of SourceRepoEvent.
	//   Possible values are: `PROTOBUF`, `JSON`.
	MessageFormat string `pulumi:"messageFormat"`
	// Email address of the service account used for publishing Cloud Pub/Sub messages.
	// This service account needs to be in the same project as the PubsubConfig. When added,
	// the caller needs to have iam.serviceAccounts.actAs permission on this service account.
	// If unspecified, it defaults to the compute engine default service account.
	ServiceAccountEmail *string `pulumi:"serviceAccountEmail"`
	// The identifier for this object. Format specified above.
	Topic string `pulumi:"topic"`
}

type RepositoryPubsubConfigArgs

type RepositoryPubsubConfigArgs struct {
	// The format of the Cloud Pub/Sub messages.
	// - PROTOBUF: The message payload is a serialized protocol buffer of SourceRepoEvent.
	// - JSON: The message payload is a JSON string of SourceRepoEvent.
	//   Possible values are: `PROTOBUF`, `JSON`.
	MessageFormat pulumi.StringInput `pulumi:"messageFormat"`
	// Email address of the service account used for publishing Cloud Pub/Sub messages.
	// This service account needs to be in the same project as the PubsubConfig. When added,
	// the caller needs to have iam.serviceAccounts.actAs permission on this service account.
	// If unspecified, it defaults to the compute engine default service account.
	ServiceAccountEmail pulumi.StringPtrInput `pulumi:"serviceAccountEmail"`
	// The identifier for this object. Format specified above.
	Topic pulumi.StringInput `pulumi:"topic"`
}

func (RepositoryPubsubConfigArgs) ElementType

func (RepositoryPubsubConfigArgs) ElementType() reflect.Type

func (RepositoryPubsubConfigArgs) ToOutput added in v6.65.1

func (RepositoryPubsubConfigArgs) ToRepositoryPubsubConfigOutput

func (i RepositoryPubsubConfigArgs) ToRepositoryPubsubConfigOutput() RepositoryPubsubConfigOutput

func (RepositoryPubsubConfigArgs) ToRepositoryPubsubConfigOutputWithContext

func (i RepositoryPubsubConfigArgs) ToRepositoryPubsubConfigOutputWithContext(ctx context.Context) RepositoryPubsubConfigOutput

type RepositoryPubsubConfigArray

type RepositoryPubsubConfigArray []RepositoryPubsubConfigInput

func (RepositoryPubsubConfigArray) ElementType

func (RepositoryPubsubConfigArray) ToOutput added in v6.65.1

func (RepositoryPubsubConfigArray) ToRepositoryPubsubConfigArrayOutput

func (i RepositoryPubsubConfigArray) ToRepositoryPubsubConfigArrayOutput() RepositoryPubsubConfigArrayOutput

func (RepositoryPubsubConfigArray) ToRepositoryPubsubConfigArrayOutputWithContext

func (i RepositoryPubsubConfigArray) ToRepositoryPubsubConfigArrayOutputWithContext(ctx context.Context) RepositoryPubsubConfigArrayOutput

type RepositoryPubsubConfigArrayInput

type RepositoryPubsubConfigArrayInput interface {
	pulumi.Input

	ToRepositoryPubsubConfigArrayOutput() RepositoryPubsubConfigArrayOutput
	ToRepositoryPubsubConfigArrayOutputWithContext(context.Context) RepositoryPubsubConfigArrayOutput
}

RepositoryPubsubConfigArrayInput is an input type that accepts RepositoryPubsubConfigArray and RepositoryPubsubConfigArrayOutput values. You can construct a concrete instance of `RepositoryPubsubConfigArrayInput` via:

RepositoryPubsubConfigArray{ RepositoryPubsubConfigArgs{...} }

type RepositoryPubsubConfigArrayOutput

type RepositoryPubsubConfigArrayOutput struct{ *pulumi.OutputState }

func (RepositoryPubsubConfigArrayOutput) ElementType

func (RepositoryPubsubConfigArrayOutput) Index

func (RepositoryPubsubConfigArrayOutput) ToOutput added in v6.65.1

func (RepositoryPubsubConfigArrayOutput) ToRepositoryPubsubConfigArrayOutput

func (o RepositoryPubsubConfigArrayOutput) ToRepositoryPubsubConfigArrayOutput() RepositoryPubsubConfigArrayOutput

func (RepositoryPubsubConfigArrayOutput) ToRepositoryPubsubConfigArrayOutputWithContext

func (o RepositoryPubsubConfigArrayOutput) ToRepositoryPubsubConfigArrayOutputWithContext(ctx context.Context) RepositoryPubsubConfigArrayOutput

type RepositoryPubsubConfigInput

type RepositoryPubsubConfigInput interface {
	pulumi.Input

	ToRepositoryPubsubConfigOutput() RepositoryPubsubConfigOutput
	ToRepositoryPubsubConfigOutputWithContext(context.Context) RepositoryPubsubConfigOutput
}

RepositoryPubsubConfigInput is an input type that accepts RepositoryPubsubConfigArgs and RepositoryPubsubConfigOutput values. You can construct a concrete instance of `RepositoryPubsubConfigInput` via:

RepositoryPubsubConfigArgs{...}

type RepositoryPubsubConfigOutput

type RepositoryPubsubConfigOutput struct{ *pulumi.OutputState }

func (RepositoryPubsubConfigOutput) ElementType

func (RepositoryPubsubConfigOutput) MessageFormat

The format of the Cloud Pub/Sub messages.

  • PROTOBUF: The message payload is a serialized protocol buffer of SourceRepoEvent.
  • JSON: The message payload is a JSON string of SourceRepoEvent. Possible values are: `PROTOBUF`, `JSON`.

func (RepositoryPubsubConfigOutput) ServiceAccountEmail

func (o RepositoryPubsubConfigOutput) ServiceAccountEmail() pulumi.StringPtrOutput

Email address of the service account used for publishing Cloud Pub/Sub messages. This service account needs to be in the same project as the PubsubConfig. When added, the caller needs to have iam.serviceAccounts.actAs permission on this service account. If unspecified, it defaults to the compute engine default service account.

func (RepositoryPubsubConfigOutput) ToOutput added in v6.65.1

func (RepositoryPubsubConfigOutput) ToRepositoryPubsubConfigOutput

func (o RepositoryPubsubConfigOutput) ToRepositoryPubsubConfigOutput() RepositoryPubsubConfigOutput

func (RepositoryPubsubConfigOutput) ToRepositoryPubsubConfigOutputWithContext

func (o RepositoryPubsubConfigOutput) ToRepositoryPubsubConfigOutputWithContext(ctx context.Context) RepositoryPubsubConfigOutput

func (RepositoryPubsubConfigOutput) Topic

The identifier for this object. Format specified above.

type RepositoryState

type RepositoryState struct {
	// Resource name of the repository, of the form `{{repo}}`.
	// The repo name may contain slashes. eg, `name/with/slash`
	//
	// ***
	Name pulumi.StringPtrInput
	// The ID of the project in which the resource belongs.
	// If it is not provided, the provider project is used.
	Project pulumi.StringPtrInput
	// How this repository publishes a change in the repository through Cloud Pub/Sub.
	// Keyed by the topic names.
	// Structure is documented below.
	PubsubConfigs RepositoryPubsubConfigArrayInput
	// The disk usage of the repo, in bytes.
	Size pulumi.IntPtrInput
	// URL to clone the repository from Google Cloud Source Repositories.
	Url pulumi.StringPtrInput
}

func (RepositoryState) ElementType

func (RepositoryState) ElementType() reflect.Type

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL