Skip to content

Commit 065e847

Browse files
committed
Prototyping Quicksight sharing
1 parent 167833e commit 065e847

15 files changed

+1323
-82
lines changed
Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
package quicksight
2+
3+
import (
4+
"github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfbridge"
5+
"github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfbridge/info"
6+
"github.com/pulumi/pulumi/sdk/v3/go/common/tokens"
7+
)
8+
9+
const (
10+
quicksightMod = "Quicksight" // Quicksight
11+
)
12+
13+
func ConfigureQuicksight(
14+
providerInfo *info.Provider,
15+
awsResource func(mod string, name string) tokens.Type,
16+
awsDataSource func(mod string, name string) tokens.ModuleMember,
17+
) {
18+
st := &state{defined: map[tokens.Type]struct{}{}}
19+
quickSightResources := map[string]*info.Resource{
20+
"aws_quicksight_account_subscription": {Tok: awsResource(quicksightMod, "AccountSubscription")},
21+
"aws_quicksight_data_set": {Tok: awsResource(quicksightMod, "DataSet")},
22+
"aws_quicksight_group": {Tok: awsResource(quicksightMod, "Group")},
23+
"aws_quicksight_user": {Tok: awsResource(quicksightMod, "User")},
24+
"aws_quicksight_group_membership": {Tok: awsResource(quicksightMod, "GroupMembership")},
25+
"aws_quicksight_data_source": {Tok: awsResource(quicksightMod, "DataSource")},
26+
"aws_quicksight_folder": {Tok: awsResource(quicksightMod, "Folder")},
27+
"aws_quicksight_template": resourceTemplate(st, awsResource(quicksightMod, "Template")),
28+
"aws_quicksight_analysis": resourceAnalysis(st, awsResource(quicksightMod, "Analysis")),
29+
"aws_quicksight_dashboard": resourceDashboard(st, awsResource(quicksightMod, "Dashboard")),
30+
}
31+
32+
for k, v := range quickSightResources {
33+
providerInfo.Resources[k] = v
34+
}
35+
36+
quickSightDataSources := map[string]*info.DataSource{
37+
"aws_quicksight_data_set": {Tok: awsDataSource(quicksightMod, "getDataSet")},
38+
"aws_quicksight_group": {Tok: awsDataSource(quicksightMod, "getQuicksightGroup")},
39+
"aws_quicksight_user": {Tok: awsDataSource(quicksightMod, "getQuicksightUser")},
40+
}
41+
42+
for k, v := range quickSightDataSources {
43+
providerInfo.DataSources[k] = v
44+
}
45+
}
46+
47+
func resourceAnalysis(st *state, token tokens.Type) *info.Resource {
48+
columnConfigs := &info.Schema{
49+
Elem: &info.Schema{
50+
Fields: map[string]*info.Schema{
51+
"format_configuration": formatConfigurationSchema(st),
52+
},
53+
},
54+
}
55+
return &info.Resource{
56+
Tok: token,
57+
Fields: map[string]*info.Schema{
58+
"definition": {
59+
Elem: &info.Schema{
60+
Fields: map[string]*info.Schema{
61+
"analysis_defaults": analysisDefaultSchema(st),
62+
"column_configurations": columnConfigs,
63+
"sheets": {
64+
Elem: &info.Schema{
65+
Fields: map[string]*info.Schema{
66+
"visuals": visualsSchema(st),
67+
},
68+
},
69+
},
70+
},
71+
},
72+
},
73+
},
74+
}
75+
}
76+
77+
func resourceDashboard(st *state, token tokens.Type) *info.Resource {
78+
columnConfigs := &info.Schema{
79+
Elem: &info.Schema{
80+
Fields: map[string]*info.Schema{
81+
"format_configuration": formatConfigurationSchema(st),
82+
},
83+
},
84+
}
85+
return &info.Resource{
86+
Tok: token,
87+
Fields: map[string]*info.Schema{
88+
"definition": {
89+
Elem: &info.Schema{
90+
Fields: map[string]*info.Schema{
91+
"analysis_defaults": analysisDefaultSchema(st),
92+
"column_configurations": columnConfigs,
93+
"sheets": {
94+
Elem: &info.Schema{
95+
Fields: map[string]*info.Schema{
96+
"visuals": visualsSchema(st),
97+
},
98+
},
99+
},
100+
},
101+
},
102+
},
103+
},
104+
}
105+
}
106+
107+
func resourceTemplate(st *state, token tokens.Type) *info.Resource {
108+
columnConfigs := &info.Schema{
109+
Elem: &info.Schema{
110+
Fields: map[string]*info.Schema{
111+
"format_configuration": formatConfigurationSchema(st),
112+
},
113+
},
114+
}
115+
return &info.Resource{
116+
Tok: token,
117+
Fields: map[string]*info.Schema{
118+
"definition": {
119+
Elem: &info.Schema{
120+
Fields: map[string]*info.Schema{
121+
"analysis_defaults": analysisDefaultSchema(st),
122+
"column_configurations": columnConfigs,
123+
"sheets": {
124+
Elem: &info.Schema{
125+
Fields: map[string]*info.Schema{
126+
"visuals": visualsSchema(st),
127+
},
128+
},
129+
},
130+
},
131+
},
132+
},
133+
},
134+
}
135+
}
136+
137+
type state struct {
138+
defined map[tokens.Type]struct{}
139+
}
140+
141+
func (st *state) define(tok tokens.Type, schema *info.Schema) *info.Schema {
142+
copy := *schema
143+
if schema.Elem == nil {
144+
copy.Elem = &info.Schema{}
145+
} else {
146+
elem := *schema.Elem
147+
copy.Elem = &elem
148+
}
149+
if _, ok := st.defined[tok]; !ok {
150+
st.defined[tok] = struct{}{}
151+
copy.Elem.TypePrefixOverride = tfbridge.StringRef("")
152+
return &copy
153+
}
154+
copy.Elem.Type = tok
155+
copy.Elem.OmitType = true
156+
return &copy
157+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package quicksight
2+
3+
import (
4+
"github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfbridge/info"
5+
)
6+
7+
func columnSchema(st *state) *info.Schema {
8+
return st.define("aws:quicksight/Column:Column", &info.Schema{})
9+
}
10+
11+
func aggregationFunctionSchema(st *state) *info.Schema {
12+
return st.define("aws:quicksight/Aggregation:Aggregation", &info.Schema{
13+
Elem: &info.Schema{
14+
Fields: map[string]*info.Schema{
15+
"numerical_aggregation_function": numericalAggregationFunctionSchema(st),
16+
},
17+
},
18+
})
19+
}
20+
21+
func numericalAggregationFunctionSchema(st *state) *info.Schema {
22+
return st.define("aws:quicksight/NumericalAggregation:NumericalAggregation", &info.Schema{})
23+
}
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
package quicksight
2+
3+
import (
4+
"github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfbridge/info"
5+
)
6+
7+
func numericFormatConfigurationSchema(st *state) *info.Schema {
8+
return st.define("aws:quicksight/NumericFormatConfiguration:NumericFormatConfiguration", &info.Schema{
9+
Elem: &info.Schema{
10+
Fields: map[string]*info.Schema{
11+
"currency_display_format_configuration": currencyDisplayFormatConfiguration(st),
12+
"number_display_format_configuration": numberDisplayFormatConfigurationSchema(st),
13+
"percentage_display_format_configuration": percentageDisplayFormatConfiguration(st),
14+
},
15+
},
16+
})
17+
}
18+
19+
func dateTimeFormatConfigurationSchema(st *state) *info.Schema {
20+
return st.define("aws:quicksight/DateTimeFormatConfiguration:DateTimeFormatConfiguration", &info.Schema{
21+
Elem: &info.Schema{
22+
Fields: map[string]*info.Schema{
23+
"null_value_format_configuration": nullValueConfigurationSchema(st),
24+
},
25+
},
26+
})
27+
}
28+
29+
func numberDisplayFormatConfigurationSchema(st *state) *info.Schema {
30+
return st.define("aws:quicksight/NumberDisplayFormatConfiguration:NumberDisplayFormatConfiguration",
31+
&info.Schema{
32+
Elem: &info.Schema{
33+
Fields: map[string]*info.Schema{
34+
"null_value_format_configuration": nullValueConfigurationSchema(st),
35+
"decimal_places_configuration": {},
36+
"negative_value_configuration": {},
37+
"separator_configuration": {},
38+
},
39+
},
40+
})
41+
}
42+
43+
func percentageDisplayFormatConfiguration(st *state) *info.Schema {
44+
return st.define("aws:quicksight/PercentageDisplayFormatConfiguration:PercentageDisplayFormatConfiguration",
45+
&info.Schema{
46+
Elem: &info.Schema{
47+
Fields: map[string]*info.Schema{
48+
"null_value_format_configuration": nullValueConfigurationSchema(st),
49+
},
50+
},
51+
})
52+
}
53+
54+
func numberFormatConfigurationSchema(st *state) *info.Schema {
55+
return st.define("aws:quicksight/NumberFormatConfiguration:NumberFormatConfiguration", &info.Schema{
56+
Elem: &info.Schema{
57+
Fields: map[string]*info.Schema{
58+
"numeric_format_configuration": numericFormatConfigurationSchema(st),
59+
},
60+
},
61+
})
62+
}
63+
64+
func stringFormatConfigurationSchema(st *state) *info.Schema {
65+
return st.define("aws:quicksight/StringFormatConfiguration:StringFormatConfiguration", &info.Schema{
66+
Elem: &info.Schema{
67+
Fields: map[string]*info.Schema{
68+
"null_value_format_configuration": nullValueConfigurationSchema(st),
69+
},
70+
},
71+
})
72+
}
73+
74+
func nullValueConfigurationSchema(st *state) *info.Schema {
75+
return st.define("aws:quicksight/NullValueFormatConfiguration:NullValueFormatConfiguration", &info.Schema{})
76+
}
77+
78+
func formatConfigurationSchema(st *state) *info.Schema {
79+
return st.define("aws:quicksight/FormatConfiguration:FormatConfiguration", &info.Schema{
80+
Elem: &info.Schema{
81+
Fields: map[string]*info.Schema{
82+
"date_time_format_configuration": dateTimeFormatConfigurationSchema(st),
83+
"number_format_configuration": numberFormatConfigurationSchema(st),
84+
"string_format_configuration": stringFormatConfigurationSchema(st),
85+
},
86+
},
87+
})
88+
}
89+
90+
func currencyDisplayFormatConfiguration(st *state) *info.Schema {
91+
return st.define("aws:quicksight/CurrencyDisplayFormatConfiguration:CurrencyDisplayFormatConfiguration",
92+
&info.Schema{
93+
Elem: &info.Schema{
94+
Fields: map[string]*info.Schema{
95+
"null_value_format_configuration": nullValueConfigurationSchema(st),
96+
},
97+
},
98+
})
99+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package quicksight
2+
3+
import (
4+
"github.com/pulumi/pulumi-terraform-bridge/v3/pkg/tfbridge/info"
5+
)
6+
7+
func analysisDefaultSchema(st *state) *info.Schema {
8+
return st.define("aws:quicksight/AnalysisDefaults:AnalysisDefaults", &info.Schema{})
9+
}

0 commit comments

Comments
 (0)