@@ -3,92 +3,18 @@ package access
33import (
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-
3913type 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