diff --git a/.changelog/1590.txt b/.changelog/1590.txt new file mode 100644 index 0000000000..83e4a8d79d --- /dev/null +++ b/.changelog/1590.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +resource/cloudflare_argo_tunnel: add `tunnel_token` support +``` diff --git a/internal/provider/resource_cloudflare_argo_tunnel.go b/internal/provider/resource_cloudflare_argo_tunnel.go index 204e4e0259..07764fd74c 100644 --- a/internal/provider/resource_cloudflare_argo_tunnel.go +++ b/internal/provider/resource_cloudflare_argo_tunnel.go @@ -6,6 +6,7 @@ import ( "strings" "github.com/cloudflare/cloudflare-go" + "github.com/hashicorp/terraform-plugin-log/tflog" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/pkg/errors" @@ -50,7 +51,19 @@ func resourceCloudflareArgoTunnelRead(ctx context.Context, d *schema.ResourceDat return diag.FromErr(fmt.Errorf("failed to fetch Argo Tunnel: %w", err)) } + token, err := client.TunnelToken(ctx, cloudflare.TunnelTokenParams{ + AccountID: accID, + ID: tunnel.ID, + }) + + if err != nil { + tflog.Warn(ctx, "unable to set the tunnel_token in state because it's not found in API") + d.Set("tunnel_token", "") + return nil + } + d.Set("cname", fmt.Sprintf("%s.%s", tunnel.ID, argoTunnelCNAME)) + d.Set("tunnel_token", token) return nil } diff --git a/internal/provider/schema_cloudflare_argo_tunnel.go b/internal/provider/schema_cloudflare_argo_tunnel.go index 8b3581b9aa..f5c7ca99d0 100644 --- a/internal/provider/schema_cloudflare_argo_tunnel.go +++ b/internal/provider/schema_cloudflare_argo_tunnel.go @@ -24,5 +24,9 @@ func resourceCloudflareArgoTunnelSchema() map[string]*schema.Schema { Type: schema.TypeString, Computed: true, }, + "tunnel_token": { + Type: schema.TypeString, + Computed: true, + }, } } diff --git a/website/docs/r/argo_tunnel.html.markdown b/website/docs/r/argo_tunnel.html.markdown index b1260b34b6..8675d03e7f 100644 --- a/website/docs/r/argo_tunnel.html.markdown +++ b/website/docs/r/argo_tunnel.html.markdown @@ -33,6 +33,7 @@ The following arguments are supported: The following additional attributes are exported: * `cname` - Usable CNAME for accessing the Argo Tunnel. +* `tunnel_token` - Token used by a connector to authenticate and run the tunnel. ## Import