@@ -3,23 +3,24 @@ package access
33import (
44 "context"
55
6- "github.com/databricks/databricks-sdk-go"
76 "github.com/databricks/databricks-sdk-go/service/settings"
87 "github.com/databricks/terraform-provider-databricks/common"
98
109 "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1110 "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
1211)
1312
13+ type ipAccessListUpdateRequest struct {
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"`
18+ }
19+
1420// ResourceIPAccessList manages IP access lists
1521func ResourceIPAccessList () * schema.Resource {
16- s := common .StructToSchema (settings. CreateIpAccessList {}, func (s map [string ]* schema.Schema ) map [string ]* schema.Schema {
22+ s := common .StructToSchema (ipAccessListUpdateRequest {}, func (s map [string ]* schema.Schema ) map [string ]* schema.Schema {
1723 // nolint
18- s ["enabled" ] = & schema.Schema {
19- Type : schema .TypeBool ,
20- Optional : true ,
21- Default : true ,
22- }
2324 s ["list_type" ].ValidateFunc = validation .StringInSlice ([]string {"ALLOW" , "BLOCK" }, false )
2425 s ["ip_addresses" ].Elem = & schema.Schema {
2526 Type : schema .TypeString ,
@@ -30,67 +31,47 @@ func ResourceIPAccessList() *schema.Resource {
3031 return common.Resource {
3132 Schema : s ,
3233 Create : func (ctx context.Context , d * schema.ResourceData , c * common.DatabricksClient ) error {
34+ w , err := c .WorkspaceClient ()
35+ if err != nil {
36+ return err
37+ }
3338 var iacl settings.CreateIpAccessList
34- var updateIacl settings.UpdateIpAccessList
3539 common .DataToStructPointer (d , s , & iacl )
36- common .DataToStructPointer (d , s , & updateIacl )
37- return c .AccountOrWorkspaceRequest (func (acc * databricks.AccountClient ) error {
38- status , err := acc .IpAccessLists .Create (ctx , iacl )
39- if err != nil {
40- return err
41- }
42- //need to enable the IP Access List with update
43- if d .Get ("enabled" ).(bool ) {
44- updateIacl .IpAccessListId = status .IpAccessList .ListId
45- err = acc .IpAccessLists .Update (ctx , updateIacl )
46- if err != nil {
47- return err
48- }
49- }
50- d .SetId (status .IpAccessList .ListId )
51- return nil
52- }, func (w * databricks.WorkspaceClient ) error {
53- status , err := w .IpAccessLists .Create (ctx , iacl )
54- if err != nil {
55- return err
56- }
57- d .SetId (status .IpAccessList .ListId )
58- return nil
59- })
40+ status , err := w .IpAccessLists .Create (ctx , iacl )
41+ if err != nil {
42+ return err
43+ }
44+ d .SetId (status .IpAccessList .ListId )
45+ return nil
6046 },
6147 Read : func (ctx context.Context , d * schema.ResourceData , c * common.DatabricksClient ) error {
62- return c .AccountOrWorkspaceRequest (func (acc * databricks.AccountClient ) error {
63- status , err := acc .IpAccessLists .GetByIpAccessListId (ctx , d .Id ())
64- if err != nil {
65- return err
66- }
67- common .StructToData (status .IpAccessList , s , d )
68- return nil
69- }, func (w * databricks.WorkspaceClient ) error {
70- status , err := w .IpAccessLists .GetByIpAccessListId (ctx , d .Id ())
71- if err != nil {
72- return err
73- }
74- common .StructToData (status .IpAccessList , s , d )
75- return nil
76- })
48+ w , err := c .WorkspaceClient ()
49+ if err != nil {
50+ return err
51+ }
52+ status , err := w .IpAccessLists .GetByIpAccessListId (ctx , d .Id ())
53+ if err != nil {
54+ return err
55+ }
56+ common .StructToData (status .IpAccessList , s , d )
57+ return nil
7758 },
7859 Update : func (ctx context.Context , d * schema.ResourceData , c * common.DatabricksClient ) error {
60+ w , err := c .WorkspaceClient ()
61+ if err != nil {
62+ return err
63+ }
7964 var iacl settings.UpdateIpAccessList
8065 common .DataToStructPointer (d , s , & iacl )
8166 iacl .IpAccessListId = d .Id ()
82- return c .AccountOrWorkspaceRequest (func (acc * databricks.AccountClient ) error {
83- return acc .IpAccessLists .Update (ctx , iacl )
84- }, func (w * databricks.WorkspaceClient ) error {
85- return w .IpAccessLists .Update (ctx , iacl )
86- })
67+ return w .IpAccessLists .Update (ctx , iacl )
8768 },
8869 Delete : func (ctx context.Context , d * schema.ResourceData , c * common.DatabricksClient ) error {
89- return c . AccountOrWorkspaceRequest ( func ( acc * databricks. AccountClient ) error {
90- return acc . IpAccessLists . DeleteByIpAccessListId ( ctx , d . Id ())
91- }, func ( w * databricks. WorkspaceClient ) error {
92- return w . IpAccessLists . DeleteByIpAccessListId ( ctx , d . Id ())
93- } )
70+ w , err := c . WorkspaceClient ()
71+ if err != nil {
72+ return err
73+ }
74+ return w . IpAccessLists . DeleteByIpAccessListId ( ctx , d . Id () )
9475 },
9576 }.ToResource ()
9677}
0 commit comments