Skip to content

Commit 1bd200e

Browse files
committedFeb 13, 2025·
feat(api): enable zero_trust_tunnel_cloudflared_token (#5127)
1 parent bbf53bf commit 1bd200e

File tree

6 files changed

+177
-0
lines changed

6 files changed

+177
-0
lines changed
 
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
data "cloudflare_zero_trust_tunnel_warp_connector_token" "example_zero_trust_tunnel_warp_connector_token" {
2+
account_id = "699d98642c564d2e855e9661899b7252"
3+
tunnel_id = "f70ff985-a4ef-4643-bbbc-4a0ed4fc8415"
4+
}

‎internal/provider.go

+2
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,7 @@ import (
201201
"github.com/cloudflare/terraform-provider-cloudflare/internal/services/zero_trust_tunnel_cloudflared_route"
202202
"github.com/cloudflare/terraform-provider-cloudflare/internal/services/zero_trust_tunnel_cloudflared_token"
203203
"github.com/cloudflare/terraform-provider-cloudflare/internal/services/zero_trust_tunnel_cloudflared_virtual_network"
204+
"github.com/cloudflare/terraform-provider-cloudflare/internal/services/zero_trust_tunnel_warp_connector_token"
204205
"github.com/cloudflare/terraform-provider-cloudflare/internal/services/zone"
205206
"github.com/cloudflare/terraform-provider-cloudflare/internal/services/zone_cache_reserve"
206207
"github.com/cloudflare/terraform-provider-cloudflare/internal/services/zone_cache_variants"
@@ -806,6 +807,7 @@ func (p *CloudflareProvider) DataSources(ctx context.Context) []func() datasourc
806807
zero_trust_access_policy.NewZeroTrustAccessPoliciesDataSource,
807808
zero_trust_tunnel_cloudflared.NewZeroTrustTunnelCloudflaredDataSource,
808809
zero_trust_tunnel_cloudflared.NewZeroTrustTunnelCloudflaredsDataSource,
810+
zero_trust_tunnel_warp_connector_token.NewZeroTrustTunnelWARPConnectorTokenDataSource,
809811
zero_trust_tunnel_cloudflared_config.NewZeroTrustTunnelCloudflaredConfigDataSource,
810812
zero_trust_tunnel_cloudflared_token.NewZeroTrustTunnelCloudflaredTokenDataSource,
811813
zero_trust_dlp_dataset.NewZeroTrustDLPDatasetDataSource,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2+
3+
package zero_trust_tunnel_warp_connector_token
4+
5+
import (
6+
"context"
7+
"fmt"
8+
"io"
9+
"net/http"
10+
11+
"github.com/cloudflare/cloudflare-go/v4"
12+
"github.com/cloudflare/cloudflare-go/v4/option"
13+
"github.com/cloudflare/terraform-provider-cloudflare/internal/apijson"
14+
"github.com/cloudflare/terraform-provider-cloudflare/internal/logging"
15+
"github.com/hashicorp/terraform-plugin-framework/datasource"
16+
)
17+
18+
type ZeroTrustTunnelWARPConnectorTokenDataSource struct {
19+
client *cloudflare.Client
20+
}
21+
22+
var _ datasource.DataSourceWithConfigure = (*ZeroTrustTunnelWARPConnectorTokenDataSource)(nil)
23+
24+
func NewZeroTrustTunnelWARPConnectorTokenDataSource() datasource.DataSource {
25+
return &ZeroTrustTunnelWARPConnectorTokenDataSource{}
26+
}
27+
28+
func (d *ZeroTrustTunnelWARPConnectorTokenDataSource) Metadata(ctx context.Context, req datasource.MetadataRequest, resp *datasource.MetadataResponse) {
29+
resp.TypeName = req.ProviderTypeName + "_zero_trust_tunnel_warp_connector_token"
30+
}
31+
32+
func (d *ZeroTrustTunnelWARPConnectorTokenDataSource) Configure(ctx context.Context, req datasource.ConfigureRequest, resp *datasource.ConfigureResponse) {
33+
if req.ProviderData == nil {
34+
return
35+
}
36+
37+
client, ok := req.ProviderData.(*cloudflare.Client)
38+
39+
if !ok {
40+
resp.Diagnostics.AddError(
41+
"unexpected resource configure type",
42+
fmt.Sprintf("Expected *cloudflare.Client, got: %T. Please report this issue to the provider developers.", req.ProviderData),
43+
)
44+
45+
return
46+
}
47+
48+
d.client = client
49+
}
50+
51+
func (d *ZeroTrustTunnelWARPConnectorTokenDataSource) Read(ctx context.Context, req datasource.ReadRequest, resp *datasource.ReadResponse) {
52+
var data *ZeroTrustTunnelWARPConnectorTokenDataSourceModel
53+
54+
resp.Diagnostics.Append(req.Config.Get(ctx, &data)...)
55+
56+
if resp.Diagnostics.HasError() {
57+
return
58+
}
59+
60+
params, diags := data.toReadParams(ctx)
61+
resp.Diagnostics.Append(diags...)
62+
if resp.Diagnostics.HasError() {
63+
return
64+
}
65+
66+
res := new(http.Response)
67+
env := ZeroTrustTunnelWARPConnectorTokenResultDataSourceEnvelope{*data}
68+
_, err := d.client.ZeroTrust.Tunnels.WARPConnector.Token.Get(
69+
ctx,
70+
data.TunnelID.ValueString(),
71+
params,
72+
option.WithResponseBodyInto(&res),
73+
option.WithMiddleware(logging.Middleware(ctx)),
74+
)
75+
if err != nil {
76+
resp.Diagnostics.AddError("failed to make http request", err.Error())
77+
return
78+
}
79+
bytes, _ := io.ReadAll(res.Body)
80+
err = apijson.UnmarshalComputed(bytes, &env)
81+
if err != nil {
82+
resp.Diagnostics.AddError("failed to deserialize http request", err.Error())
83+
return
84+
}
85+
data = &env.Result
86+
87+
resp.Diagnostics.Append(resp.State.Set(ctx, &data)...)
88+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2+
3+
package zero_trust_tunnel_warp_connector_token
4+
5+
import (
6+
"context"
7+
8+
"github.com/cloudflare/cloudflare-go/v4"
9+
"github.com/cloudflare/cloudflare-go/v4/zero_trust"
10+
"github.com/hashicorp/terraform-plugin-framework/diag"
11+
"github.com/hashicorp/terraform-plugin-framework/types"
12+
)
13+
14+
type ZeroTrustTunnelWARPConnectorTokenResultDataSourceEnvelope struct {
15+
Result ZeroTrustTunnelWARPConnectorTokenDataSourceModel `json:"result,computed"`
16+
}
17+
18+
type ZeroTrustTunnelWARPConnectorTokenDataSourceModel struct {
19+
AccountID types.String `tfsdk:"account_id" path:"account_id,required"`
20+
TunnelID types.String `tfsdk:"tunnel_id" path:"tunnel_id,required"`
21+
}
22+
23+
func (m *ZeroTrustTunnelWARPConnectorTokenDataSourceModel) toReadParams(_ context.Context) (params zero_trust.TunnelWARPConnectorTokenGetParams, diags diag.Diagnostics) {
24+
params = zero_trust.TunnelWARPConnectorTokenGetParams{
25+
AccountID: cloudflare.F(m.AccountID.ValueString()),
26+
}
27+
28+
return
29+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2+
3+
package zero_trust_tunnel_warp_connector_token
4+
5+
import (
6+
"context"
7+
8+
"github.com/hashicorp/terraform-plugin-framework/datasource"
9+
"github.com/hashicorp/terraform-plugin-framework/datasource/schema"
10+
)
11+
12+
var _ datasource.DataSourceWithConfigValidators = (*ZeroTrustTunnelWARPConnectorTokenDataSource)(nil)
13+
14+
func DataSourceSchema(ctx context.Context) schema.Schema {
15+
return schema.Schema{
16+
Attributes: map[string]schema.Attribute{
17+
"account_id": schema.StringAttribute{
18+
Description: "Cloudflare account ID",
19+
Required: true,
20+
},
21+
"tunnel_id": schema.StringAttribute{
22+
Description: "UUID of the tunnel.",
23+
Required: true,
24+
},
25+
},
26+
}
27+
}
28+
29+
func (d *ZeroTrustTunnelWARPConnectorTokenDataSource) Schema(ctx context.Context, req datasource.SchemaRequest, resp *datasource.SchemaResponse) {
30+
resp.Schema = DataSourceSchema(ctx)
31+
}
32+
33+
func (d *ZeroTrustTunnelWARPConnectorTokenDataSource) ConfigValidators(_ context.Context) []datasource.ConfigValidator {
34+
return []datasource.ConfigValidator{}
35+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2+
3+
package zero_trust_tunnel_warp_connector_token_test
4+
5+
import (
6+
"context"
7+
"testing"
8+
9+
"github.com/cloudflare/terraform-provider-cloudflare/internal/services/zero_trust_tunnel_warp_connector_token"
10+
"github.com/cloudflare/terraform-provider-cloudflare/internal/test_helpers"
11+
)
12+
13+
func TestZeroTrustTunnelWARPConnectorTokenDataSourceModelSchemaParity(t *testing.T) {
14+
t.Parallel()
15+
model := (*zero_trust_tunnel_warp_connector_token.ZeroTrustTunnelWARPConnectorTokenDataSourceModel)(nil)
16+
schema := zero_trust_tunnel_warp_connector_token.DataSourceSchema(context.TODO())
17+
errs := test_helpers.ValidateDataSourceModelSchemaIntegrity(model, schema)
18+
errs.Report(t)
19+
}

0 commit comments

Comments
 (0)
Please sign in to comment.