/
getTestablePermissions.go
153 lines (133 loc) · 6.55 KB
/
getTestablePermissions.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
// Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT.
// *** WARNING: Do not edit by hand unless you're certain you know what you are doing! ***
package iam
import (
"context"
"reflect"
"github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/internal"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
"github.com/pulumi/pulumi/sdk/v3/go/pulumix"
)
// Retrieve a list of testable permissions for a resource. Testable permissions mean the permissions that user can add or remove in a role at a given resource. The resource can be referenced either via the full resource name or via a URI.
//
// ## Example Usage
//
// Retrieve all the supported permissions able to be set on `my-project` that are in either GA or BETA. This is useful for dynamically constructing custom roles.
//
// ```go
// package main
//
// import (
//
// "github.com/pulumi/pulumi-gcp/sdk/v6/go/gcp/iam"
// "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
//
// )
//
// func main() {
// pulumi.Run(func(ctx *pulumi.Context) error {
// _, err := iam.GetTestablePermissions(ctx, &iam.GetTestablePermissionsArgs{
// FullResourceName: "//cloudresourcemanager.googleapis.com/projects/my-project",
// Stages: []string{
// "GA",
// "BETA",
// },
// }, nil)
// if err != nil {
// return err
// }
// return nil
// })
// }
//
// ```
func GetTestablePermissions(ctx *pulumi.Context, args *GetTestablePermissionsArgs, opts ...pulumi.InvokeOption) (*GetTestablePermissionsResult, error) {
opts = internal.PkgInvokeDefaultOpts(opts)
var rv GetTestablePermissionsResult
err := ctx.Invoke("gcp:iam/getTestablePermissions:getTestablePermissions", args, &rv, opts...)
if err != nil {
return nil, err
}
return &rv, nil
}
// A collection of arguments for invoking getTestablePermissions.
type GetTestablePermissionsArgs struct {
// The level of support for custom roles. Can be one of `"NOT_SUPPORTED"`, `"SUPPORTED"`, `"TESTING"`. Default is `"SUPPORTED"`
CustomSupportLevel *string `pulumi:"customSupportLevel"`
// See [full resource name documentation](https://cloud.google.com/apis/design/resource_names#full_resource_name) for more detail.
FullResourceName string `pulumi:"fullResourceName"`
// The acceptable release stages of the permission in the output. Note that `BETA` does not include permissions in `GA`, but you can specify both with `["GA", "BETA"]` for example. Can be a list of `"ALPHA"`, `"BETA"`, `"GA"`, `"DEPRECATED"`. Default is `["GA"]`.
Stages []string `pulumi:"stages"`
}
// A collection of values returned by getTestablePermissions.
type GetTestablePermissionsResult struct {
// The the support level of this permission for custom roles.
CustomSupportLevel *string `pulumi:"customSupportLevel"`
FullResourceName string `pulumi:"fullResourceName"`
// The provider-assigned unique ID for this managed resource.
Id string `pulumi:"id"`
// A list of permissions matching the provided input. Structure is defined below.
Permissions []GetTestablePermissionsPermission `pulumi:"permissions"`
Stages []string `pulumi:"stages"`
}
func GetTestablePermissionsOutput(ctx *pulumi.Context, args GetTestablePermissionsOutputArgs, opts ...pulumi.InvokeOption) GetTestablePermissionsResultOutput {
return pulumi.ToOutputWithContext(context.Background(), args).
ApplyT(func(v interface{}) (GetTestablePermissionsResult, error) {
args := v.(GetTestablePermissionsArgs)
r, err := GetTestablePermissions(ctx, &args, opts...)
var s GetTestablePermissionsResult
if r != nil {
s = *r
}
return s, err
}).(GetTestablePermissionsResultOutput)
}
// A collection of arguments for invoking getTestablePermissions.
type GetTestablePermissionsOutputArgs struct {
// The level of support for custom roles. Can be one of `"NOT_SUPPORTED"`, `"SUPPORTED"`, `"TESTING"`. Default is `"SUPPORTED"`
CustomSupportLevel pulumi.StringPtrInput `pulumi:"customSupportLevel"`
// See [full resource name documentation](https://cloud.google.com/apis/design/resource_names#full_resource_name) for more detail.
FullResourceName pulumi.StringInput `pulumi:"fullResourceName"`
// The acceptable release stages of the permission in the output. Note that `BETA` does not include permissions in `GA`, but you can specify both with `["GA", "BETA"]` for example. Can be a list of `"ALPHA"`, `"BETA"`, `"GA"`, `"DEPRECATED"`. Default is `["GA"]`.
Stages pulumi.StringArrayInput `pulumi:"stages"`
}
func (GetTestablePermissionsOutputArgs) ElementType() reflect.Type {
return reflect.TypeOf((*GetTestablePermissionsArgs)(nil)).Elem()
}
// A collection of values returned by getTestablePermissions.
type GetTestablePermissionsResultOutput struct{ *pulumi.OutputState }
func (GetTestablePermissionsResultOutput) ElementType() reflect.Type {
return reflect.TypeOf((*GetTestablePermissionsResult)(nil)).Elem()
}
func (o GetTestablePermissionsResultOutput) ToGetTestablePermissionsResultOutput() GetTestablePermissionsResultOutput {
return o
}
func (o GetTestablePermissionsResultOutput) ToGetTestablePermissionsResultOutputWithContext(ctx context.Context) GetTestablePermissionsResultOutput {
return o
}
func (o GetTestablePermissionsResultOutput) ToOutput(ctx context.Context) pulumix.Output[GetTestablePermissionsResult] {
return pulumix.Output[GetTestablePermissionsResult]{
OutputState: o.OutputState,
}
}
// The the support level of this permission for custom roles.
func (o GetTestablePermissionsResultOutput) CustomSupportLevel() pulumi.StringPtrOutput {
return o.ApplyT(func(v GetTestablePermissionsResult) *string { return v.CustomSupportLevel }).(pulumi.StringPtrOutput)
}
func (o GetTestablePermissionsResultOutput) FullResourceName() pulumi.StringOutput {
return o.ApplyT(func(v GetTestablePermissionsResult) string { return v.FullResourceName }).(pulumi.StringOutput)
}
// The provider-assigned unique ID for this managed resource.
func (o GetTestablePermissionsResultOutput) Id() pulumi.StringOutput {
return o.ApplyT(func(v GetTestablePermissionsResult) string { return v.Id }).(pulumi.StringOutput)
}
// A list of permissions matching the provided input. Structure is defined below.
func (o GetTestablePermissionsResultOutput) Permissions() GetTestablePermissionsPermissionArrayOutput {
return o.ApplyT(func(v GetTestablePermissionsResult) []GetTestablePermissionsPermission { return v.Permissions }).(GetTestablePermissionsPermissionArrayOutput)
}
func (o GetTestablePermissionsResultOutput) Stages() pulumi.StringArrayOutput {
return o.ApplyT(func(v GetTestablePermissionsResult) []string { return v.Stages }).(pulumi.StringArrayOutput)
}
func init() {
pulumi.RegisterOutputType(GetTestablePermissionsResultOutput{})
}