From 2c6fe07e60585f1b6a23e53b7a348e3e15b13fbd Mon Sep 17 00:00:00 2001 From: Bradley Glover Date: Fri, 29 Apr 2022 17:37:05 -0700 Subject: [PATCH 1/6] cloudflare_argo_tunnel: add tunnel token to state --- cloudflare/resource_cloudflare_argo_tunnel.go | 5 +++++ cloudflare/schema_cloudflare_argo_tunnel.go | 4 ++++ website/docs/r/argo_tunnel.html.markdown | 1 + 3 files changed, 10 insertions(+) diff --git a/cloudflare/resource_cloudflare_argo_tunnel.go b/cloudflare/resource_cloudflare_argo_tunnel.go index 929f249346..acdb3b3fdf 100644 --- a/cloudflare/resource_cloudflare_argo_tunnel.go +++ b/cloudflare/resource_cloudflare_argo_tunnel.go @@ -2,6 +2,7 @@ package cloudflare import ( "context" + "encoding/base64" "fmt" "strings" @@ -49,7 +50,11 @@ func resourceCloudflareArgoTunnelRead(d *schema.ResourceData, meta interface{}) return fmt.Errorf("failed to fetch Argo Tunnel: %w", err) } + token := fmt.Sprintf("{\"a\":\"%s\",\"t\":\"%s\",\"s\":\"%s\"}", accID, tunnel.ID, tunnel.Secret) + d.Set("cname", fmt.Sprintf("%s.%s", tunnel.ID, argoTunnelCNAME)) + d.Set("tunnel_token", base64.RawStdEncoding.EncodeToString([]byte(token))) + return nil } diff --git a/cloudflare/schema_cloudflare_argo_tunnel.go b/cloudflare/schema_cloudflare_argo_tunnel.go index 8f80d226bc..e44d27e681 100644 --- a/cloudflare/schema_cloudflare_argo_tunnel.go +++ b/cloudflare/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 From a746c653a37e1093ddbe5649c99562277343b37e Mon Sep 17 00:00:00 2001 From: Bradley Glover Date: Fri, 29 Apr 2022 18:06:42 -0700 Subject: [PATCH 2/6] add changelog --- .changelog/1590.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .changelog/1590.txt diff --git a/.changelog/1590.txt b/.changelog/1590.txt new file mode 100644 index 0000000000..9cfe93d575 --- /dev/null +++ b/.changelog/1590.txt @@ -0,0 +1,3 @@ +```release-note:enhancement +resource/cloudflare_argo_tunnel: Add computed `tunnel_token` to schema +``` From a83182fb49422beff26249b5618dc454d2efdaf2 Mon Sep 17 00:00:00 2001 From: Bradley Glover Date: Thu, 12 May 2022 11:39:57 -0700 Subject: [PATCH 3/6] cloudflare_argo_tunnel: use TunnelToken to fetch the token --- cloudflare/resource_cloudflare_argo_tunnel.go | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/cloudflare/resource_cloudflare_argo_tunnel.go b/cloudflare/resource_cloudflare_argo_tunnel.go index acdb3b3fdf..967ffbeab4 100644 --- a/cloudflare/resource_cloudflare_argo_tunnel.go +++ b/cloudflare/resource_cloudflare_argo_tunnel.go @@ -2,7 +2,6 @@ package cloudflare import ( "context" - "encoding/base64" "fmt" "strings" @@ -50,10 +49,18 @@ func resourceCloudflareArgoTunnelRead(d *schema.ResourceData, meta interface{}) return fmt.Errorf("failed to fetch Argo Tunnel: %w", err) } - token := fmt.Sprintf("{\"a\":\"%s\",\"t\":\"%s\",\"s\":\"%s\"}", accID, tunnel.ID, tunnel.Secret) + token, err := client.TunnelToken(context.Background(), cloudflare.TunnelTokenParams{ + AccountID: accID, + ID: tunnel.ID, + }) + if err != nil { + fmt.Sprintf("[WARN] 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", base64.RawStdEncoding.EncodeToString([]byte(token))) + d.Set("tunnel_token", token) return nil From bef80475fce1443d5cbc382bc8148bcf1aaac088 Mon Sep 17 00:00:00 2001 From: Jacob Bednarz Date: Sun, 22 May 2022 14:48:37 +1000 Subject: [PATCH 4/6] update changelog --- .changelog/1590.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changelog/1590.txt b/.changelog/1590.txt index 9cfe93d575..83e4a8d79d 100644 --- a/.changelog/1590.txt +++ b/.changelog/1590.txt @@ -1,3 +1,3 @@ ```release-note:enhancement -resource/cloudflare_argo_tunnel: Add computed `tunnel_token` to schema +resource/cloudflare_argo_tunnel: add `tunnel_token` support ``` From 920675eaab5bc5d628617ca6000245b4f2b58432 Mon Sep 17 00:00:00 2001 From: Bradley Glover Date: Fri, 27 May 2022 12:01:14 -0700 Subject: [PATCH 5/6] readd tunnel_token set --- internal/provider/resource_cloudflare_argo_tunnel.go | 1 + 1 file changed, 1 insertion(+) diff --git a/internal/provider/resource_cloudflare_argo_tunnel.go b/internal/provider/resource_cloudflare_argo_tunnel.go index 08f167e65d..c1396ee196 100644 --- a/internal/provider/resource_cloudflare_argo_tunnel.go +++ b/internal/provider/resource_cloudflare_argo_tunnel.go @@ -61,6 +61,7 @@ func resourceCloudflareArgoTunnelRead(ctx context.Context, d *schema.ResourceDat } d.Set("cname", fmt.Sprintf("%s.%s", tunnel.ID, argoTunnelCNAME)) + d.Set("tunnel_token", token) return nil } From edd8b617516afdd2707738187e4ec4433200162d Mon Sep 17 00:00:00 2001 From: Jacob Bednarz Date: Mon, 30 May 2022 09:24:35 +1000 Subject: [PATCH 6/6] fix lint failures --- internal/provider/resource_cloudflare_argo_tunnel.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/internal/provider/resource_cloudflare_argo_tunnel.go b/internal/provider/resource_cloudflare_argo_tunnel.go index c1396ee196..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,12 +51,13 @@ func resourceCloudflareArgoTunnelRead(ctx context.Context, d *schema.ResourceDat return diag.FromErr(fmt.Errorf("failed to fetch Argo Tunnel: %w", err)) } - token, err := client.TunnelToken(context.Background(), cloudflare.TunnelTokenParams{ + token, err := client.TunnelToken(ctx, cloudflare.TunnelTokenParams{ AccountID: accID, ID: tunnel.ID, }) + if err != nil { - fmt.Sprintf("[WARN] Unable to set the tunnel_token in state because it's not found in API") + tflog.Warn(ctx, "unable to set the tunnel_token in state because it's not found in API") d.Set("tunnel_token", "") return nil }