From a22939b41f35a8308158d65e697ccbf7f8f9bf91 Mon Sep 17 00:00:00 2001 From: David Wahler Date: Mon, 18 Jul 2022 20:31:46 +0000 Subject: [PATCH 1/3] Add data source attributes for owner name and email address --- docs/data-sources/workspace.md | 2 ++ internal/provider/provider.go | 25 +++++++++++++++++++++++++ internal/provider/provider_test.go | 12 ++++++++++-- 3 files changed, 37 insertions(+), 2 deletions(-) diff --git a/docs/data-sources/workspace.md b/docs/data-sources/workspace.md index 84422697..80e57baa 100644 --- a/docs/data-sources/workspace.md +++ b/docs/data-sources/workspace.md @@ -30,6 +30,8 @@ resource "kubernetes_pod" "dev" { - `id` (String) UUID of the workspace. - `name` (String) Name of the workspace. - `owner` (String) Username of the workspace owner. +- `owner_name` (String) Display-friendly name of the workspace owner (or their username, if a name is not known). +- `owner_email` (String) Email address of the workspace owner. - `owner_id` (String) UUID of the workspace owner. - `start_count` (Number) A computed count based on "transition" state. If "start", count will equal 1. - `transition` (String) Either "start" or "stop". Use this to start/stop resources with "count". diff --git a/internal/provider/provider.go b/internal/provider/provider.go index 6cd986b0..0c9db947 100644 --- a/internal/provider/provider.go +++ b/internal/provider/provider.go @@ -69,31 +69,46 @@ func New() *schema.Provider { count = 1 } _ = rd.Set("start_count", count) + owner := os.Getenv("CODER_WORKSPACE_OWNER") if owner == "" { owner = "default" } _ = rd.Set("owner", owner) + + /*ownerName := os.Getenv("CODER_WORKSPACE_OWNER_NAME") + if ownerName == "" { + ownerName = owner + } + _ = rd.Set("owner_name", ownerName)*/ + + ownerEmail := os.Getenv("CODER_WORKSPACE_OWNER_EMAIL") + _ = rd.Set("owner_email", ownerEmail) + ownerID := os.Getenv("CODER_WORKSPACE_OWNER_ID") if ownerID == "" { ownerID = uuid.Nil.String() } _ = rd.Set("owner_id", ownerID) + name := os.Getenv("CODER_WORKSPACE_NAME") if name == "" { name = "default" } rd.Set("name", name) + id := os.Getenv("CODER_WORKSPACE_ID") if id == "" { id = uuid.NewString() } rd.SetId(id) + config, valid := i.(config) if !valid { return diag.Errorf("config was unexpected type %q", reflect.TypeOf(i).String()) } rd.Set("access_url", config.URL.String()) + return nil }, Schema: map[string]*schema.Schema{ @@ -117,6 +132,16 @@ func New() *schema.Provider { Computed: true, Description: "Username of the workspace owner.", }, + "owner_name": { + Type: schema.TypeString, + Computed: true, + Description: "Name of the workspace owner (e.g. for Git commits) if known, otherwise their username.", + }, + "owner_email": { + Type: schema.TypeString, + Computed: true, + Description: "Email address of the workspace owner.", + }, "owner_id": { Type: schema.TypeString, Computed: true, diff --git a/internal/provider/provider_test.go b/internal/provider/provider_test.go index 6a345d23..df4c3a47 100644 --- a/internal/provider/provider_test.go +++ b/internal/provider/provider_test.go @@ -19,7 +19,10 @@ func TestProvider(t *testing.T) { } func TestWorkspace(t *testing.T) { - t.Parallel() + t.Setenv("CODER_WORKSPACE_OWNER", "owner123") + t.Setenv("CODER_WORKSPACE_OWNER_NAME", "Workspace Owner Jr.") + t.Setenv("CODER_WORKSPACE_OWNER_EMAIL", "owner123@example.com") + resource.Test(t, resource.TestCase{ Providers: map[string]*schema.Provider{ "coder": provider.New(), @@ -37,9 +40,14 @@ func TestWorkspace(t *testing.T) { require.Len(t, state.Modules[0].Resources, 1) resource := state.Modules[0].Resources["data.coder_workspace.me"] require.NotNil(t, resource) - value := resource.Primary.Attributes["transition"] + + attribs := resource.Primary.Attributes + value := attribs["transition"] require.NotNil(t, value) t.Log(value) + require.Equal(t, "owner123", attribs["owner"]) + require.Equal(t, "Workspace Owner Jr.", attribs["owner_name"]) + require.Equal(t, "owner123@example.com", attribs["owner_email"]) return nil }, }}, From 29897035e802e12f2a66bfacad0fa189c67a992f Mon Sep 17 00:00:00 2001 From: David Wahler Date: Mon, 18 Jul 2022 21:05:25 +0000 Subject: [PATCH 2/3] Fix incorrectly commented-out block --- internal/provider/provider.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/provider/provider.go b/internal/provider/provider.go index 0c9db947..be448301 100644 --- a/internal/provider/provider.go +++ b/internal/provider/provider.go @@ -76,11 +76,11 @@ func New() *schema.Provider { } _ = rd.Set("owner", owner) - /*ownerName := os.Getenv("CODER_WORKSPACE_OWNER_NAME") + ownerName := os.Getenv("CODER_WORKSPACE_OWNER_NAME") if ownerName == "" { ownerName = owner } - _ = rd.Set("owner_name", ownerName)*/ + _ = rd.Set("owner_name", ownerName) ownerEmail := os.Getenv("CODER_WORKSPACE_OWNER_EMAIL") _ = rd.Set("owner_email", ownerEmail) From 64ead2572e3d8382d16c8bbaf8f18836ed50a58d Mon Sep 17 00:00:00 2001 From: David Wahler Date: Mon, 18 Jul 2022 21:38:36 +0000 Subject: [PATCH 3/3] Remove "owner_name" field --- docs/data-sources/workspace.md | 1 - internal/provider/provider.go | 11 ----------- internal/provider/provider_test.go | 2 -- 3 files changed, 14 deletions(-) diff --git a/docs/data-sources/workspace.md b/docs/data-sources/workspace.md index 80e57baa..b570d939 100644 --- a/docs/data-sources/workspace.md +++ b/docs/data-sources/workspace.md @@ -30,7 +30,6 @@ resource "kubernetes_pod" "dev" { - `id` (String) UUID of the workspace. - `name` (String) Name of the workspace. - `owner` (String) Username of the workspace owner. -- `owner_name` (String) Display-friendly name of the workspace owner (or their username, if a name is not known). - `owner_email` (String) Email address of the workspace owner. - `owner_id` (String) UUID of the workspace owner. - `start_count` (Number) A computed count based on "transition" state. If "start", count will equal 1. diff --git a/internal/provider/provider.go b/internal/provider/provider.go index be448301..ac8b67f0 100644 --- a/internal/provider/provider.go +++ b/internal/provider/provider.go @@ -76,12 +76,6 @@ func New() *schema.Provider { } _ = rd.Set("owner", owner) - ownerName := os.Getenv("CODER_WORKSPACE_OWNER_NAME") - if ownerName == "" { - ownerName = owner - } - _ = rd.Set("owner_name", ownerName) - ownerEmail := os.Getenv("CODER_WORKSPACE_OWNER_EMAIL") _ = rd.Set("owner_email", ownerEmail) @@ -132,11 +126,6 @@ func New() *schema.Provider { Computed: true, Description: "Username of the workspace owner.", }, - "owner_name": { - Type: schema.TypeString, - Computed: true, - Description: "Name of the workspace owner (e.g. for Git commits) if known, otherwise their username.", - }, "owner_email": { Type: schema.TypeString, Computed: true, diff --git a/internal/provider/provider_test.go b/internal/provider/provider_test.go index df4c3a47..0f2d45e0 100644 --- a/internal/provider/provider_test.go +++ b/internal/provider/provider_test.go @@ -20,7 +20,6 @@ func TestProvider(t *testing.T) { func TestWorkspace(t *testing.T) { t.Setenv("CODER_WORKSPACE_OWNER", "owner123") - t.Setenv("CODER_WORKSPACE_OWNER_NAME", "Workspace Owner Jr.") t.Setenv("CODER_WORKSPACE_OWNER_EMAIL", "owner123@example.com") resource.Test(t, resource.TestCase{ @@ -46,7 +45,6 @@ func TestWorkspace(t *testing.T) { require.NotNil(t, value) t.Log(value) require.Equal(t, "owner123", attribs["owner"]) - require.Equal(t, "Workspace Owner Jr.", attribs["owner_name"]) require.Equal(t, "owner123@example.com", attribs["owner_email"]) return nil },