Skip to content

Commit

Permalink
Migrated databricks_shares data source to Go SDK (#2072)
Browse files Browse the repository at this point in the history
  • Loading branch information
nkvuong authored Mar 7, 2023
1 parent 30188dd commit 0693e4c
Show file tree
Hide file tree
Showing 3 changed files with 103 additions and 12 deletions.
13 changes: 6 additions & 7 deletions catalog/data_shares.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,21 @@ package catalog
import (
"context"

"github.com/databricks/databricks-sdk-go"
"github.com/databricks/terraform-provider-databricks/common"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
)

func DataSourceShares() *schema.Resource {
type sharesData struct {
return common.WorkspaceData(func(ctx context.Context, data *struct {
Shares []string `json:"shares,omitempty" tf:"computed,slice_set"`
}
return common.DataResource(sharesData{}, func(ctx context.Context, e any, c *common.DatabricksClient) error {
data := e.(*sharesData)
sharesAPI := NewSharesAPI(ctx, c)
shares, err := sharesAPI.list()
}, w *databricks.WorkspaceClient) error {

shares, err := w.Shares.ListAll(ctx)
if err != nil {
return err
}
for _, share := range shares.Shares {
for _, share := range shares {
data.Shares = append(data.Shares, share.Name)
}
return nil
Expand Down
5 changes: 0 additions & 5 deletions catalog/resource_share.go
Original file line number Diff line number Diff line change
Expand Up @@ -84,11 +84,6 @@ func (si *ShareInfo) suppressCDFEnabledDiff() {
}
}

func (a SharesAPI) list() (shares Shares, err error) {
err = a.client.Get(a.context, "/unity-catalog/shares", nil, &shares)
return
}

func (a SharesAPI) create(si *ShareInfo) error {
si.sortSharesByName()
return a.client.Post(a.context, "/unity-catalog/shares", si, si)
Expand Down
97 changes: 97 additions & 0 deletions internal/acceptance/data_shares_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
package acceptance

import (
"strconv"
"testing"

"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)

func checkSharesDataSourcePopulated(t *testing.T) func(s *terraform.State) error {
return func(s *terraform.State) error {
_, ok := s.Modules[0].Resources["data.databricks_shares.this"]
require.True(t, ok, "data.databricks_shares.this has to be there")
num_shares, _ := strconv.Atoi(s.Modules[0].Outputs["shares"].Value.(string))
assert.GreaterOrEqual(t, num_shares, 1)
return nil
}
}
func TestUcAccDataSourceShares(t *testing.T) {
unityWorkspaceLevel(t, step{
Template: `
resource "databricks_catalog" "sandbox" {
name = "sandbox{var.RANDOM}"
comment = "this catalog is managed by terraform"
properties = {
purpose = "testing"
}
}
resource "databricks_schema" "things" {
catalog_name = databricks_catalog.sandbox.id
name = "things{var.RANDOM}"
comment = "this database is managed by terraform"
properties = {
kind = "various"
}
}
resource "databricks_table" "mytable" {
catalog_name = databricks_catalog.sandbox.id
schema_name = databricks_schema.things.name
name = "bar"
table_type = "MANAGED"
data_source_format = "DELTA"
column {
name = "id"
position = 0
type_name = "INT"
type_text = "int"
type_json = "{\"name\":\"id\",\"type\":\"integer\",\"nullable\":true,\"metadata\":{}}"
}
}
resource "databricks_table" "mytable_2" {
catalog_name = databricks_catalog.sandbox.id
schema_name = databricks_schema.things.name
name = "bar_2"
table_type = "MANAGED"
data_source_format = "DELTA"
column {
name = "id"
position = 0
type_name = "INT"
type_text = "int"
type_json = "{\"name\":\"id\",\"type\":\"integer\",\"nullable\":true,\"metadata\":{}}"
}
}
resource "databricks_share" "myshare" {
name = "{var.RANDOM}-terraform-delta-share"
object {
name = databricks_table.mytable.id
comment = "c"
data_object_type = "TABLE"
}
object {
name = databricks_table.mytable_2.id
cdf_enabled = false
comment = "c"
data_object_type = "TABLE"
}
}
data "databricks_shares" "this" {
depends_on = [databricks_share.myshare]
}
output "shares" {
value = length(data.databricks_shares.this.shares)
}
`,
Check: checkSharesDataSourcePopulated(t),
})
}

0 comments on commit 0693e4c

Please sign in to comment.