diff --git a/docs/data-sources/workspace.md b/docs/data-sources/workspace.md index b570d939..665fef2b 100644 --- a/docs/data-sources/workspace.md +++ b/docs/data-sources/workspace.md @@ -26,6 +26,7 @@ resource "kubernetes_pod" "dev" { ### Read-Only +- `access_port` (Number) The access port of the Coder deployment provisioning this workspace. - `access_url` (String) The access URL of the Coder deployment provisioning this workspace. - `id` (String) UUID of the workspace. - `name` (String) Name of the workspace. diff --git a/docs/index.md b/docs/index.md index 75a81e52..859964d4 100644 --- a/docs/index.md +++ b/docs/index.md @@ -8,8 +8,6 @@ description: |- # Coder Provider --> This works with a closed-alpha of [Coder](https://coder.com). For access, contact [support@coder.com](mailto:support@coder.com). - ## Example ```terraform @@ -64,5 +62,4 @@ resource "google_compute_instance" "dev" { ### Optional -- `host` (String) This overrides the host in the "url" property, but preserve the port. - `url` (String) The URL to access Coder. \ No newline at end of file diff --git a/internal/provider/provider.go b/internal/provider/provider.go index 49640456..20a4818d 100644 --- a/internal/provider/provider.go +++ b/internal/provider/provider.go @@ -8,6 +8,7 @@ import ( "os" "reflect" "runtime" + "strconv" "strings" "github.com/google/uuid" @@ -40,11 +41,6 @@ func New() *schema.Provider { return nil, nil }, }, - "host": { - Type: schema.TypeString, - Description: "This overrides the host in the \"url\" property, but preserve the port.", - Optional: true, - }, }, ConfigureContextFunc: func(c context.Context, resourceData *schema.ResourceData) (interface{}, diag.Diagnostics) { rawURL, ok := resourceData.Get("url").(string) @@ -58,14 +54,6 @@ func New() *schema.Provider { if err != nil { return nil, diag.FromErr(err) } - rawHost, ok := resourceData.Get("host").(string) - if ok { - rawPort := parsed.Port() - if rawPort != "" && !strings.Contains(rawHost, ":") { - rawHost += ":" + rawPort - } - parsed.Host = rawHost - } return config{ URL: parsed, }, nil @@ -119,6 +107,19 @@ func New() *schema.Provider { } rd.Set("access_url", config.URL.String()) + rawPort := config.URL.Port() + if rawPort == "" { + rawPort = "80" + if config.URL.Scheme == "https" { + rawPort = "443" + } + } + port, err := strconv.Atoi(rawPort) + if err != nil { + return diag.Errorf("couldn't parse port %q", port) + } + rd.Set("access_port", port) + return nil }, Schema: map[string]*schema.Schema{ @@ -127,6 +128,11 @@ func New() *schema.Provider { Computed: true, Description: "The access URL of the Coder deployment provisioning this workspace.", }, + "access_port": { + Type: schema.TypeInt, + Computed: true, + Description: "The access port of the Coder deployment provisioning this workspace.", + }, "start_count": { Type: schema.TypeInt, Computed: true, diff --git a/internal/provider/provider_test.go b/internal/provider/provider_test.go index a55de3e4..7707b0ff 100644 --- a/internal/provider/provider_test.go +++ b/internal/provider/provider_test.go @@ -32,7 +32,6 @@ func TestWorkspace(t *testing.T) { Config: ` provider "coder" { url = "https://example.com:8080" - host = "localhost:4334" } data "coder_workspace" "me" { }`, @@ -46,7 +45,7 @@ func TestWorkspace(t *testing.T) { value := attribs["transition"] require.NotNil(t, value) t.Log(value) - require.Equal(t, "https://localhost:4334", attribs["access_url"]) + require.Equal(t, "8080", attribs["access_port"]) require.Equal(t, "owner123", attribs["owner"]) require.Equal(t, "owner123@example.com", attribs["owner_email"]) return nil