generated from pulumi/pulumi-tf-provider-boilerplate
/
provider.go
334 lines (303 loc) · 17.6 KB
/
provider.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
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
// 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 grafana
import (
"context"
"reflect"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
// The provider type for the grafana package. By default, resources use package-wide configuration
// settings, however an explicit `Provider` instance may be created and passed during resource
// construction to achieve fine-grained programmatic control over provider settings. See the
// [documentation](https://www.pulumi.com/docs/reference/programming-model/#providers) for more information.
type Provider struct {
pulumi.ProviderResourceState
// API token, basic auth in the `username:password` format or `anonymous` (string literal). May alternatively be set via
// the `GRAFANA_AUTH` environment variable.
Auth pulumi.StringPtrOutput `pulumi:"auth"`
// Certificate CA bundle to use to verify the Grafana server's certificate. May alternatively be set via the
// `GRAFANA_CA_CERT` environment variable.
CaCert pulumi.StringPtrOutput `pulumi:"caCert"`
// API key for Grafana Cloud. May alternatively be set via the `GRAFANA_CLOUD_API_KEY` environment variable.
CloudApiKey pulumi.StringPtrOutput `pulumi:"cloudApiKey"`
// Grafana Cloud's API URL. May alternatively be set via the `GRAFANA_CLOUD_API_URL` environment variable.
CloudApiUrl pulumi.StringPtrOutput `pulumi:"cloudApiUrl"`
// A Grafana OnCall access token. May alternatively be set via the `GRAFANA_ONCALL_ACCESS_TOKEN` environment variable.
OncallAccessToken pulumi.StringPtrOutput `pulumi:"oncallAccessToken"`
// An Grafana OnCall backend address. May alternatively be set via the `GRAFANA_ONCALL_URL` environment variable.
OncallUrl pulumi.StringPtrOutput `pulumi:"oncallUrl"`
// A Synthetic Monitoring access token. May alternatively be set via the `GRAFANA_SM_ACCESS_TOKEN` environment variable.
SmAccessToken pulumi.StringPtrOutput `pulumi:"smAccessToken"`
// Synthetic monitoring backend address. May alternatively be set via the `GRAFANA_SM_URL` environment variable. The
// correct value for each service region is cited in the [Synthetic Monitoring
// documentation](https://grafana.com/docs/grafana-cloud/synthetic-monitoring/private-probes/#probe-api-server-url). Note
// the `sm_url` value is optional, but it must correspond with the value specified as the `region_slug` in the
// `grafana_cloud_stack` resource. Also note that when a Terraform configuration contains multiple provider instances
// managing SM resources associated with the same Grafana stack, specifying an explicit `sm_url` set to the same value for
// each provider ensures all providers interact with the same SM API.
SmUrl pulumi.StringPtrOutput `pulumi:"smUrl"`
// Client TLS certificate file to use to authenticate to the Grafana server. May alternatively be set via the
// `GRAFANA_TLS_CERT` environment variable.
TlsCert pulumi.StringPtrOutput `pulumi:"tlsCert"`
// Client TLS key file to use to authenticate to the Grafana server. May alternatively be set via the `GRAFANA_TLS_KEY`
// environment variable.
TlsKey pulumi.StringPtrOutput `pulumi:"tlsKey"`
// The root URL of a Grafana server. May alternatively be set via the `GRAFANA_URL` environment variable.
Url pulumi.StringPtrOutput `pulumi:"url"`
}
// NewProvider registers a new resource with the given unique name, arguments, and options.
func NewProvider(ctx *pulumi.Context,
name string, args *ProviderArgs, opts ...pulumi.ResourceOption) (*Provider, error) {
if args == nil {
args = &ProviderArgs{}
}
if args.Auth == nil {
args.Auth = pulumi.StringPtr(getEnvOrDefault("", nil, "GRAFANA_AUTH").(string))
}
if args.CaCert == nil {
args.CaCert = pulumi.StringPtr(getEnvOrDefault("", nil, "GRAFANA_CA_CERT").(string))
}
if args.CloudApiKey == nil {
args.CloudApiKey = pulumi.StringPtr(getEnvOrDefault("", nil, "GRAFANA_CLOUD_API_KEY").(string))
}
if args.CloudApiUrl == nil {
args.CloudApiUrl = pulumi.StringPtr(getEnvOrDefault("", nil, "GRAFANA_CLOUD_API_URL").(string))
}
if args.InsecureSkipVerify == nil {
args.InsecureSkipVerify = pulumi.BoolPtr(getEnvOrDefault(false, parseEnvBool, "GRAFANA_INSECURE_SKIP_VERIFY").(bool))
}
if args.OncallAccessToken == nil {
args.OncallAccessToken = pulumi.StringPtr(getEnvOrDefault("", nil, "GRAFANA_ONCALL_ACCESS_TOKEN").(string))
}
if args.OncallUrl == nil {
args.OncallUrl = pulumi.StringPtr(getEnvOrDefault("", nil, "GRAFANA_ONCALL_URL").(string))
}
if args.OrgId == nil {
args.OrgId = pulumi.IntPtr(getEnvOrDefault(0, parseEnvInt, "GRAFANA_ORG_ID").(int))
}
if args.Retries == nil {
args.Retries = pulumi.IntPtr(getEnvOrDefault(0, parseEnvInt, "GRAFANA_RETRIES").(int))
}
if args.SmAccessToken == nil {
args.SmAccessToken = pulumi.StringPtr(getEnvOrDefault("", nil, "GRAFANA_SM_ACCESS_TOKEN").(string))
}
if args.SmUrl == nil {
args.SmUrl = pulumi.StringPtr(getEnvOrDefault("", nil, "GRAFANA_SM_URL").(string))
}
if args.StoreDashboardSha256 == nil {
args.StoreDashboardSha256 = pulumi.BoolPtr(getEnvOrDefault(false, parseEnvBool, "GRAFANA_STORE_DASHBOARD_SHA256").(bool))
}
if args.TlsCert == nil {
args.TlsCert = pulumi.StringPtr(getEnvOrDefault("", nil, "GRAFANA_TLS_CERT").(string))
}
if args.TlsKey == nil {
args.TlsKey = pulumi.StringPtr(getEnvOrDefault("", nil, "GRAFANA_TLS_KEY").(string))
}
if args.Url == nil {
args.Url = pulumi.StringPtr(getEnvOrDefault("", nil, "GRAFANA_URL").(string))
}
if args.Auth != nil {
args.Auth = pulumi.ToSecret(args.Auth).(pulumi.StringPtrInput)
}
if args.CloudApiKey != nil {
args.CloudApiKey = pulumi.ToSecret(args.CloudApiKey).(pulumi.StringPtrInput)
}
if args.OncallAccessToken != nil {
args.OncallAccessToken = pulumi.ToSecret(args.OncallAccessToken).(pulumi.StringPtrInput)
}
if args.SmAccessToken != nil {
args.SmAccessToken = pulumi.ToSecret(args.SmAccessToken).(pulumi.StringPtrInput)
}
if args.TlsKey != nil {
args.TlsKey = pulumi.ToSecret(args.TlsKey).(pulumi.StringPtrInput)
}
secrets := pulumi.AdditionalSecretOutputs([]string{
"auth",
"cloudApiKey",
"oncallAccessToken",
"smAccessToken",
"tlsKey",
})
opts = append(opts, secrets)
opts = pkgResourceDefaultOpts(opts)
var resource Provider
err := ctx.RegisterResource("pulumi:providers:grafana", name, args, &resource, opts...)
if err != nil {
return nil, err
}
return &resource, nil
}
type providerArgs struct {
// API token, basic auth in the `username:password` format or `anonymous` (string literal). May alternatively be set via
// the `GRAFANA_AUTH` environment variable.
Auth *string `pulumi:"auth"`
// Certificate CA bundle to use to verify the Grafana server's certificate. May alternatively be set via the
// `GRAFANA_CA_CERT` environment variable.
CaCert *string `pulumi:"caCert"`
// API key for Grafana Cloud. May alternatively be set via the `GRAFANA_CLOUD_API_KEY` environment variable.
CloudApiKey *string `pulumi:"cloudApiKey"`
// Grafana Cloud's API URL. May alternatively be set via the `GRAFANA_CLOUD_API_URL` environment variable.
CloudApiUrl *string `pulumi:"cloudApiUrl"`
// Skip TLS certificate verification. May alternatively be set via the `GRAFANA_INSECURE_SKIP_VERIFY` environment variable.
InsecureSkipVerify *bool `pulumi:"insecureSkipVerify"`
// A Grafana OnCall access token. May alternatively be set via the `GRAFANA_ONCALL_ACCESS_TOKEN` environment variable.
OncallAccessToken *string `pulumi:"oncallAccessToken"`
// An Grafana OnCall backend address. May alternatively be set via the `GRAFANA_ONCALL_URL` environment variable.
OncallUrl *string `pulumi:"oncallUrl"`
// The default organization id to operate on within grafana. For resources that have an `org_id` attribute, the
// resource-level attribute has priority. May alternatively be set via the `GRAFANA_ORG_ID` environment variable.
OrgId *int `pulumi:"orgId"`
// The amount of retries to use for Grafana API and Grafana Cloud API calls. May alternatively be set via the
// `GRAFANA_RETRIES` environment variable.
Retries *int `pulumi:"retries"`
// A Synthetic Monitoring access token. May alternatively be set via the `GRAFANA_SM_ACCESS_TOKEN` environment variable.
SmAccessToken *string `pulumi:"smAccessToken"`
// Synthetic monitoring backend address. May alternatively be set via the `GRAFANA_SM_URL` environment variable. The
// correct value for each service region is cited in the [Synthetic Monitoring
// documentation](https://grafana.com/docs/grafana-cloud/synthetic-monitoring/private-probes/#probe-api-server-url). Note
// the `sm_url` value is optional, but it must correspond with the value specified as the `region_slug` in the
// `grafana_cloud_stack` resource. Also note that when a Terraform configuration contains multiple provider instances
// managing SM resources associated with the same Grafana stack, specifying an explicit `sm_url` set to the same value for
// each provider ensures all providers interact with the same SM API.
SmUrl *string `pulumi:"smUrl"`
// Set to true if you want to save only the sha256sum instead of complete dashboard model JSON in the tfstate.
StoreDashboardSha256 *bool `pulumi:"storeDashboardSha256"`
// Client TLS certificate file to use to authenticate to the Grafana server. May alternatively be set via the
// `GRAFANA_TLS_CERT` environment variable.
TlsCert *string `pulumi:"tlsCert"`
// Client TLS key file to use to authenticate to the Grafana server. May alternatively be set via the `GRAFANA_TLS_KEY`
// environment variable.
TlsKey *string `pulumi:"tlsKey"`
// The root URL of a Grafana server. May alternatively be set via the `GRAFANA_URL` environment variable.
Url *string `pulumi:"url"`
}
// The set of arguments for constructing a Provider resource.
type ProviderArgs struct {
// API token, basic auth in the `username:password` format or `anonymous` (string literal). May alternatively be set via
// the `GRAFANA_AUTH` environment variable.
Auth pulumi.StringPtrInput
// Certificate CA bundle to use to verify the Grafana server's certificate. May alternatively be set via the
// `GRAFANA_CA_CERT` environment variable.
CaCert pulumi.StringPtrInput
// API key for Grafana Cloud. May alternatively be set via the `GRAFANA_CLOUD_API_KEY` environment variable.
CloudApiKey pulumi.StringPtrInput
// Grafana Cloud's API URL. May alternatively be set via the `GRAFANA_CLOUD_API_URL` environment variable.
CloudApiUrl pulumi.StringPtrInput
// Skip TLS certificate verification. May alternatively be set via the `GRAFANA_INSECURE_SKIP_VERIFY` environment variable.
InsecureSkipVerify pulumi.BoolPtrInput
// A Grafana OnCall access token. May alternatively be set via the `GRAFANA_ONCALL_ACCESS_TOKEN` environment variable.
OncallAccessToken pulumi.StringPtrInput
// An Grafana OnCall backend address. May alternatively be set via the `GRAFANA_ONCALL_URL` environment variable.
OncallUrl pulumi.StringPtrInput
// The default organization id to operate on within grafana. For resources that have an `org_id` attribute, the
// resource-level attribute has priority. May alternatively be set via the `GRAFANA_ORG_ID` environment variable.
OrgId pulumi.IntPtrInput
// The amount of retries to use for Grafana API and Grafana Cloud API calls. May alternatively be set via the
// `GRAFANA_RETRIES` environment variable.
Retries pulumi.IntPtrInput
// A Synthetic Monitoring access token. May alternatively be set via the `GRAFANA_SM_ACCESS_TOKEN` environment variable.
SmAccessToken pulumi.StringPtrInput
// Synthetic monitoring backend address. May alternatively be set via the `GRAFANA_SM_URL` environment variable. The
// correct value for each service region is cited in the [Synthetic Monitoring
// documentation](https://grafana.com/docs/grafana-cloud/synthetic-monitoring/private-probes/#probe-api-server-url). Note
// the `sm_url` value is optional, but it must correspond with the value specified as the `region_slug` in the
// `grafana_cloud_stack` resource. Also note that when a Terraform configuration contains multiple provider instances
// managing SM resources associated with the same Grafana stack, specifying an explicit `sm_url` set to the same value for
// each provider ensures all providers interact with the same SM API.
SmUrl pulumi.StringPtrInput
// Set to true if you want to save only the sha256sum instead of complete dashboard model JSON in the tfstate.
StoreDashboardSha256 pulumi.BoolPtrInput
// Client TLS certificate file to use to authenticate to the Grafana server. May alternatively be set via the
// `GRAFANA_TLS_CERT` environment variable.
TlsCert pulumi.StringPtrInput
// Client TLS key file to use to authenticate to the Grafana server. May alternatively be set via the `GRAFANA_TLS_KEY`
// environment variable.
TlsKey pulumi.StringPtrInput
// The root URL of a Grafana server. May alternatively be set via the `GRAFANA_URL` environment variable.
Url pulumi.StringPtrInput
}
func (ProviderArgs) ElementType() reflect.Type {
return reflect.TypeOf((*providerArgs)(nil)).Elem()
}
type ProviderInput interface {
pulumi.Input
ToProviderOutput() ProviderOutput
ToProviderOutputWithContext(ctx context.Context) ProviderOutput
}
func (*Provider) ElementType() reflect.Type {
return reflect.TypeOf((**Provider)(nil)).Elem()
}
func (i *Provider) ToProviderOutput() ProviderOutput {
return i.ToProviderOutputWithContext(context.Background())
}
func (i *Provider) ToProviderOutputWithContext(ctx context.Context) ProviderOutput {
return pulumi.ToOutputWithContext(ctx, i).(ProviderOutput)
}
type ProviderOutput struct{ *pulumi.OutputState }
func (ProviderOutput) ElementType() reflect.Type {
return reflect.TypeOf((**Provider)(nil)).Elem()
}
func (o ProviderOutput) ToProviderOutput() ProviderOutput {
return o
}
func (o ProviderOutput) ToProviderOutputWithContext(ctx context.Context) ProviderOutput {
return o
}
// API token, basic auth in the `username:password` format or `anonymous` (string literal). May alternatively be set via
// the `GRAFANA_AUTH` environment variable.
func (o ProviderOutput) Auth() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Provider) pulumi.StringPtrOutput { return v.Auth }).(pulumi.StringPtrOutput)
}
// Certificate CA bundle to use to verify the Grafana server's certificate. May alternatively be set via the
// `GRAFANA_CA_CERT` environment variable.
func (o ProviderOutput) CaCert() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Provider) pulumi.StringPtrOutput { return v.CaCert }).(pulumi.StringPtrOutput)
}
// API key for Grafana Cloud. May alternatively be set via the `GRAFANA_CLOUD_API_KEY` environment variable.
func (o ProviderOutput) CloudApiKey() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Provider) pulumi.StringPtrOutput { return v.CloudApiKey }).(pulumi.StringPtrOutput)
}
// Grafana Cloud's API URL. May alternatively be set via the `GRAFANA_CLOUD_API_URL` environment variable.
func (o ProviderOutput) CloudApiUrl() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Provider) pulumi.StringPtrOutput { return v.CloudApiUrl }).(pulumi.StringPtrOutput)
}
// A Grafana OnCall access token. May alternatively be set via the `GRAFANA_ONCALL_ACCESS_TOKEN` environment variable.
func (o ProviderOutput) OncallAccessToken() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Provider) pulumi.StringPtrOutput { return v.OncallAccessToken }).(pulumi.StringPtrOutput)
}
// An Grafana OnCall backend address. May alternatively be set via the `GRAFANA_ONCALL_URL` environment variable.
func (o ProviderOutput) OncallUrl() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Provider) pulumi.StringPtrOutput { return v.OncallUrl }).(pulumi.StringPtrOutput)
}
// A Synthetic Monitoring access token. May alternatively be set via the `GRAFANA_SM_ACCESS_TOKEN` environment variable.
func (o ProviderOutput) SmAccessToken() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Provider) pulumi.StringPtrOutput { return v.SmAccessToken }).(pulumi.StringPtrOutput)
}
// Synthetic monitoring backend address. May alternatively be set via the `GRAFANA_SM_URL` environment variable. The
// correct value for each service region is cited in the [Synthetic Monitoring
// documentation](https://grafana.com/docs/grafana-cloud/synthetic-monitoring/private-probes/#probe-api-server-url). Note
// the `sm_url` value is optional, but it must correspond with the value specified as the `region_slug` in the
// `grafana_cloud_stack` resource. Also note that when a Terraform configuration contains multiple provider instances
// managing SM resources associated with the same Grafana stack, specifying an explicit `sm_url` set to the same value for
// each provider ensures all providers interact with the same SM API.
func (o ProviderOutput) SmUrl() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Provider) pulumi.StringPtrOutput { return v.SmUrl }).(pulumi.StringPtrOutput)
}
// Client TLS certificate file to use to authenticate to the Grafana server. May alternatively be set via the
// `GRAFANA_TLS_CERT` environment variable.
func (o ProviderOutput) TlsCert() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Provider) pulumi.StringPtrOutput { return v.TlsCert }).(pulumi.StringPtrOutput)
}
// Client TLS key file to use to authenticate to the Grafana server. May alternatively be set via the `GRAFANA_TLS_KEY`
// environment variable.
func (o ProviderOutput) TlsKey() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Provider) pulumi.StringPtrOutput { return v.TlsKey }).(pulumi.StringPtrOutput)
}
// The root URL of a Grafana server. May alternatively be set via the `GRAFANA_URL` environment variable.
func (o ProviderOutput) Url() pulumi.StringPtrOutput {
return o.ApplyT(func(v *Provider) pulumi.StringPtrOutput { return v.Url }).(pulumi.StringPtrOutput)
}
func init() {
pulumi.RegisterInputType(reflect.TypeOf((*ProviderInput)(nil)).Elem(), &Provider{})
pulumi.RegisterOutputType(ProviderOutput{})
}