Skip to content

Commit 42d62ee

Browse files
authored
Migrated databricks_ip_access_list resource to Go SDK (#2306)
1 parent 0ad69a8 commit 42d62ee

File tree

5 files changed

+178
-208
lines changed

5 files changed

+178
-208
lines changed

access/resource_ip_access_list.go

Lines changed: 29 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -3,92 +3,18 @@ package access
33
import (
44
"context"
55

6+
"github.com/databricks/databricks-sdk-go/service/settings"
67
"github.com/databricks/terraform-provider-databricks/common"
78

89
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
910
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
1011
)
1112

12-
type ListIPAccessListsResponse struct {
13-
ListIPAccessListsResponse []IpAccessListStatus `json:"ip_access_lists,omitempty"`
14-
}
15-
16-
type createIPAccessListRequest struct {
17-
Label string `json:"label"`
18-
ListType string `json:"list_type"`
19-
IPAddresses []string `json:"ip_addresses"`
20-
}
21-
22-
type IpAccessListStatus struct {
23-
ListID string `json:"list_id"`
24-
Label string `json:"label"`
25-
ListType string `json:"list_type"`
26-
IPAddresses []string `json:"ip_addresses"`
27-
AddressCount int `json:"address_count,omitempty"`
28-
CreatedAt int64 `json:"created_at,omitempty"`
29-
CreatorUserID int64 `json:"creator_user_id,omitempty"`
30-
UpdatedAt int64 `json:"updated_at,omitempty"`
31-
UpdatorUserID int64 `json:"updator_user_id,omitempty"`
32-
Enabled bool `json:"enabled,omitempty"`
33-
}
34-
35-
type IpAccessListStatusWrapper struct {
36-
IPAccessList IpAccessListStatus `json:"ip_access_list,omitempty"`
37-
}
38-
3913
type ipAccessListUpdateRequest struct {
40-
Label string `json:"label"`
41-
ListType string `json:"list_type"`
42-
IPAddresses []string `json:"ip_addresses"`
43-
Enabled bool `json:"enabled,omitempty" tf:"default:true"`
44-
}
45-
46-
// Preview feature: https://docs.databricks.com/security/network/ip-access-list.html
47-
// REST API: https://docs.databricks.com/dev-tools/api/latest/ip-access-list.html#operation/create-list
48-
type ipAccessListsAPI struct {
49-
client *common.DatabricksClient
50-
context context.Context
51-
}
52-
53-
// NewIPAccessListsAPI ...
54-
func NewIPAccessListsAPI(ctx context.Context, m any) ipAccessListsAPI {
55-
return ipAccessListsAPI{
56-
client: m.(*common.DatabricksClient),
57-
context: ctx,
58-
}
59-
}
60-
61-
// Create creates the IP Access List to given the instance pool configuration
62-
func (a ipAccessListsAPI) Create(cr createIPAccessListRequest) (status IpAccessListStatus, err error) {
63-
wrapper := IpAccessListStatusWrapper{}
64-
err = a.client.Post(a.context, "/ip-access-lists", cr, &wrapper)
65-
if err != nil {
66-
return
67-
}
68-
status = wrapper.IPAccessList
69-
return
70-
}
71-
72-
func (a ipAccessListsAPI) Update(objectID string, ur ipAccessListUpdateRequest) error {
73-
return a.client.Put(a.context, "/ip-access-lists/"+objectID, ur)
74-
}
75-
76-
func (a ipAccessListsAPI) Delete(objectID string) (err error) {
77-
err = a.client.Delete(a.context, "/ip-access-lists/"+objectID, map[string]any{})
78-
return
79-
}
80-
81-
func (a ipAccessListsAPI) Read(objectID string) (status IpAccessListStatus, err error) {
82-
wrapper := IpAccessListStatusWrapper{}
83-
err = a.client.Get(a.context, "/ip-access-lists/"+objectID, nil, &wrapper)
84-
status = wrapper.IPAccessList
85-
return
86-
}
87-
88-
func (a ipAccessListsAPI) List() (listResponse ListIPAccessListsResponse, err error) {
89-
listResponse = ListIPAccessListsResponse{}
90-
err = a.client.Get(a.context, "/ip-access-lists", nil, &listResponse)
91-
return
14+
Label string `json:"label"`
15+
ListType settings.ListType `json:"list_type"`
16+
IpAddresses []string `json:"ip_addresses"`
17+
Enabled bool `json:"enabled,omitempty" tf:"default:true"`
9218
}
9319

9420
// ResourceIPAccessList manages IP access lists
@@ -105,30 +31,47 @@ func ResourceIPAccessList() *schema.Resource {
10531
return common.Resource{
10632
Schema: s,
10733
Create: func(ctx context.Context, d *schema.ResourceData, c *common.DatabricksClient) error {
108-
var iacl createIPAccessListRequest
34+
w, err := c.WorkspaceClient()
35+
if err != nil {
36+
return err
37+
}
38+
var iacl settings.CreateIpAccessList
10939
common.DataToStructPointer(d, s, &iacl)
110-
status, err := NewIPAccessListsAPI(ctx, c).Create(iacl)
40+
status, err := w.IpAccessLists.Create(ctx, iacl)
11141
if err != nil {
11242
return err
11343
}
114-
d.SetId(status.ListID)
44+
d.SetId(status.IpAccessList.ListId)
11545
return nil
11646
},
11747
Read: func(ctx context.Context, d *schema.ResourceData, c *common.DatabricksClient) error {
118-
status, err := NewIPAccessListsAPI(ctx, c).Read(d.Id())
48+
w, err := c.WorkspaceClient()
49+
if err != nil {
50+
return err
51+
}
52+
status, err := w.IpAccessLists.GetByIpAccessListId(ctx, d.Id())
11953
if err != nil {
12054
return err
12155
}
12256
common.StructToData(status, s, d)
12357
return nil
12458
},
12559
Update: func(ctx context.Context, d *schema.ResourceData, c *common.DatabricksClient) error {
126-
var iacl ipAccessListUpdateRequest
60+
w, err := c.WorkspaceClient()
61+
if err != nil {
62+
return err
63+
}
64+
var iacl settings.UpdateIpAccessList
12765
common.DataToStructPointer(d, s, &iacl)
128-
return NewIPAccessListsAPI(ctx, c).Update(d.Id(), iacl)
66+
iacl.IpAccessListId = d.Id()
67+
return w.IpAccessLists.Update(ctx, iacl)
12968
},
13069
Delete: func(ctx context.Context, d *schema.ResourceData, c *common.DatabricksClient) error {
131-
return NewIPAccessListsAPI(ctx, c).Delete(d.Id())
70+
w, err := c.WorkspaceClient()
71+
if err != nil {
72+
return err
73+
}
74+
return w.IpAccessLists.DeleteByIpAccessListId(ctx, d.Id())
13275
},
13376
}.ToResource()
13477
}

0 commit comments

Comments
 (0)