generated from hashicorp/terraform-provider-scaffolding
/
provider.go
207 lines (203 loc) · 13.1 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
package provider
import (
"context"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/ssl_bypass_rule"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/client"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/aac_rule"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/access_control"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/alert"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/app"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/catalog_app"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/certificate"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/cloud_app"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/common"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/content_category"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/device"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/device_alias"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/device_settings"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/easylink"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/egress_route"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/enterprise_dns"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/group"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/group_roles_attachment"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/group_users_attachment"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/idp"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/ip_network"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/location"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/log_streaming_access_bridge"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/mapped_domain"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/mapped_host"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/metaport"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/metaport_cluster"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/metaport_cluster_mapped_elements_attachment"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/metaport_failover"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/metaport_mapped_elements_attachment"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/network_element"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/network_element_alias"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/notification_channel"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/pac_file"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/policy"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/posture_check"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/protocol_group"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/proxy_port_range"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/role"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/routing_group"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/routing_group_mapped_elements_attachment"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/scan_rule"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/tenant_restriction"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/threat_category"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/time_frame"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/trusted_network"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/tunnel"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/url_filtering_rule"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/user"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/user_roles_attachment"
"github.com/nsofnetworks/terraform-provider-pfptmeta/internal/provider/user_settings"
)
func New(version string) func() *schema.Provider {
return func() *schema.Provider {
p := &schema.Provider{
Schema: map[string]*schema.Schema{
"api_key": {
Description: "Alternatively, use the `PFPTMETA_API_KEY` env variable",
Type: schema.TypeString,
DefaultFunc: schema.EnvDefaultFunc("PFPTMETA_API_KEY", nil),
Optional: true,
ValidateDiagFunc: common.ValidateID(false, "key"),
},
"api_secret": {
Description: "Alternatively, use the `PFPTMETA_API_SECRET` env variable",
Type: schema.TypeString,
DefaultFunc: schema.EnvDefaultFunc("PFPTMETA_API_SECRET", nil),
Optional: true,
Sensitive: true,
},
"org_shortname": {
Description: "Alternatively, use the `PFPTMETA_ORG_SHORTNAME` env variable",
Type: schema.TypeString,
DefaultFunc: schema.EnvDefaultFunc("PFPTMETA_ORG_SHORTNAME", nil),
Optional: true,
},
"realm": {
Description: "GDPR data location, ENUM: `us`, `eu`. defaults to `us`",
Type: schema.TypeString,
DefaultFunc: schema.EnvDefaultFunc("PFPTMETA_REALM", nil),
Optional: true,
ValidateDiagFunc: common.ValidateStringENUM("eu", "us"),
},
},
DataSourcesMap: map[string]*schema.Resource{
"pfptmeta_network_element_alias": network_element_alias.DataSource(),
"pfptmeta_device_alias": device_alias.DataSource(),
"pfptmeta_mapped_domain": mapped_domain.DataSource(),
"pfptmeta_mapped_host": mapped_host.DataSource(),
"pfptmeta_network_element": network_element.DataSource(),
"pfptmeta_device": device.DataSource(),
"pfptmeta_metaport": metaport.DataSource(),
"pfptmeta_metaport_cluster": metaport_cluster.DataSource(),
"pfptmeta_metaport_failover": metaport_failover.DataSource(),
"pfptmeta_enterprise_dns": enterprise_dns.DataSource(),
"pfptmeta_protocol_group": protocol_group.DataSource(),
"pfptmeta_role": role.DataSource(),
"pfptmeta_group": group.DataSource(),
"pfptmeta_user": user.DataSource(),
"pfptmeta_notification_channel": notification_channel.DataSource(),
"pfptmeta_routing_group": routing_group.DataSource(),
"pfptmeta_policy": policy.DataSource(),
"pfptmeta_location": location.DataSource(),
"pfptmeta_egress_route": egress_route.DataSource(),
"pfptmeta_alert": alert.DataSource(),
"pfptmeta_certificate": certificate.DataSource(),
"pfptmeta_easylink": easylink.DataSource(),
"pfptmeta_posture_check": posture_check.DataSource(),
"pfptmeta_access_control": access_control.DataSource(),
"pfptmeta_device_settings": device_settings.DataSource(),
"pfptmeta_trusted_network": trusted_network.DataSource(),
"pfptmeta_user_settings": user_settings.DataSource(),
"pfptmeta_log_streaming_access_bridge": log_streaming_access_bridge.DataSource(),
"pfptmeta_aac_rule": aac_rule.DataSource(),
"pfptmeta_app": app.DataSource(),
"pfptmeta_idp": idp.DataSource(),
// SWG
"pfptmeta_content_category": content_category.DataSource(),
"pfptmeta_ip_network": ip_network.DataSource(),
"pfptmeta_threat_category": threat_category.DataSource(),
"pfptmeta_time_frame": time_frame.DataSource(),
"pfptmeta_catalog_app": catalog_app.DataSource(),
"pfptmeta_tenant_restriction": tenant_restriction.DataSource(),
"pfptmeta_cloud_app": cloud_app.DataSource(),
"pfptmeta_url_filtering_rule": url_filtering_rule.DataSource(),
"pfptmeta_proxy_port_range": proxy_port_range.DataSource(),
"pfptmeta_pac_file": pac_file.DataSource(),
"pfptmeta_ssl_bypass_rule": ssl_bypass_rule.DataSource(),
"pfptmeta_tunnel": tunnel.DataSource(),
"pfptmeta_scan_rule": scan_rule.DataSource(),
},
ResourcesMap: map[string]*schema.Resource{
"pfptmeta_network_element": network_element.Resource(),
"pfptmeta_device": device.Resource(),
"pfptmeta_network_element_alias": network_element_alias.Resource(),
"pfptmeta_device_alias": device_alias.Resource(),
"pfptmeta_mapped_domain": mapped_domain.Resource(),
"pfptmeta_mapped_host": mapped_host.Resource(),
"pfptmeta_metaport": metaport.Resource(),
"pfptmeta_metaport_mapped_elements_attachment": metaport_mapped_elements_attachment.Resource(),
"pfptmeta_metaport_cluster_mapped_elements_attachment": metaport_cluster_mapped_elements_attachment.Resource(),
"pfptmeta_metaport_cluster": metaport_cluster.Resource(),
"pfptmeta_metaport_failover": metaport_failover.Resource(),
"pfptmeta_enterprise_dns": enterprise_dns.Resource(),
"pfptmeta_protocol_group": protocol_group.Resource(),
"pfptmeta_role": role.Resource(),
"pfptmeta_group": group.Resource(),
"pfptmeta_user": user.Resource(),
"pfptmeta_routing_group": routing_group.Resource(),
"pfptmeta_routing_group_mapped_elements_attachment": routing_group_mapped_elements_attachment.Resource(),
"pfptmeta_policy": policy.Resource(),
"pfptmeta_group_roles_attachment": group_roles_attachment.Resource(),
"pfptmeta_group_users_attachment": group_users_attachment.Resource(),
"pfptmeta_notification_channel": notification_channel.Resource(),
"pfptmeta_egress_route": egress_route.Resource(),
"pfptmeta_alert": alert.Resource(),
"pfptmeta_certificate": certificate.Resource(),
"pfptmeta_easylink": easylink.Resource(),
"pfptmeta_posture_check": posture_check.Resource(),
"pfptmeta_access_control": access_control.Resource(),
"pfptmeta_device_settings": device_settings.Resource(),
"pfptmeta_trusted_network": trusted_network.Resource(),
"pfptmeta_user_roles_attachment": user_roles_attachment.Resource(),
"pfptmeta_user_settings": user_settings.Resource(),
"pfptmeta_log_streaming_access_bridge": log_streaming_access_bridge.Resource(),
"pfptmeta_aac_rule": aac_rule.Resource(),
"pfptmeta_app": app.Resource(),
"pfptmeta_idp": idp.Resource(),
// SWG
"pfptmeta_content_category": content_category.Resource(),
"pfptmeta_ip_network": ip_network.Resource(),
"pfptmeta_threat_category": threat_category.Resource(),
"pfptmeta_time_frame": time_frame.Resource(),
"pfptmeta_tenant_restriction": tenant_restriction.Resource(),
"pfptmeta_cloud_app": cloud_app.Resource(),
"pfptmeta_url_filtering_rule": url_filtering_rule.Resource(),
"pfptmeta_proxy_port_range": proxy_port_range.Resource(),
"pfptmeta_pac_file": pac_file.Resource(),
"pfptmeta_ssl_bypass_rule": ssl_bypass_rule.Resource(),
"pfptmeta_tunnel": tunnel.Resource(),
"pfptmeta_scan_rule": scan_rule.Resource(),
},
}
p.ConfigureContextFunc = configure(version, p)
return p
}
}
func configure(version string, p *schema.Provider) func(context.Context, *schema.ResourceData) (interface{}, diag.Diagnostics) {
return func(ctx context.Context, d *schema.ResourceData) (interface{}, diag.Diagnostics) {
userAgent := p.UserAgent("terraform-provider-pfptmeta", version)
c, err := client.NewClient(ctx, d, userAgent)
if err != nil {
return nil, diag.FromErr(err)
}
return c, nil
}
}