Skip to content

Commit b43482e

Browse files
modular-magicianKevin Wangmelinath
authored
Adding support for SQL Server Timezones (#6635) (#12760)
* Adding timezone field to Terraform * Change timezone name and add to tests * adding timezone field * Revert "adding timezone field" This reverts commit 0b0dcf6bea0c613aad044f5014b3014fb6805850. * renamed TimeZone field * removing output log * updated api version * adding update * Update mmv1/third_party/terraform/resources/resource_sql_database_instance.go.erb Co-authored-by: Stephen Lewis (Burrows) <[email protected]> * update storage version * use storage 1.27 * fixed requirements * changing into to pointer for storage_bucket.go * remove update test and add ForceNew tag Co-authored-by: Kevin Wang <[email protected]> Co-authored-by: Stephen Lewis (Burrows) <[email protected]> Signed-off-by: Modular Magician <[email protected]> Signed-off-by: Modular Magician <[email protected]> Co-authored-by: Kevin Wang <[email protected]> Co-authored-by: Stephen Lewis (Burrows) <[email protected]>
1 parent d96d88e commit b43482e

7 files changed

+112
-11
lines changed

.changelog/6635.txt

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:enhancement
2+
sql: added `time_zone` field in `google_sql_database_instance`
3+
```

go.mod

+9-9
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,16 @@ require (
1919
github.com/mitchellh/go-homedir v1.1.0
2020
github.com/mitchellh/hashstructure v1.1.0
2121
github.com/sirupsen/logrus v1.8.1
22-
golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e
23-
golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2
24-
google.golang.org/api v0.92.0
25-
google.golang.org/grpc v1.48.0
22+
golang.org/x/net v0.0.0-20220909164309-bea034e7d591
23+
golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1
24+
google.golang.org/api v0.97.0
25+
google.golang.org/grpc v1.49.0
2626
)
2727

2828
require (
2929
4d63.com/gochecknoglobals v0.0.0-20201008074935-acfc0b28355a // indirect
3030
bitbucket.org/creachadair/stringset v0.0.8 // indirect
31-
cloud.google.com/go v0.102.1 // indirect
31+
cloud.google.com/go v0.104.0 // indirect
3232
cloud.google.com/go/compute v1.7.0 // indirect
3333
cloud.google.com/go/iam v0.3.0 // indirect
3434
github.com/BurntSushi/toml v0.3.1 // indirect
@@ -88,7 +88,7 @@ require (
8888
github.com/google/go-cpy v0.0.0-20211218193943-a9c933c06932 // indirect
8989
github.com/google/uuid v1.3.0 // indirect
9090
github.com/googleapis/enterprise-certificate-proxy v0.1.0 // indirect
91-
github.com/googleapis/gax-go/v2 v2.4.0 // indirect
91+
github.com/googleapis/gax-go/v2 v2.5.1 // indirect
9292
github.com/gordonklaus/ineffassign v0.0.0-20210225214923-2e10b2664254 // indirect
9393
github.com/gostaticanalysis/analysisutil v0.4.1 // indirect
9494
github.com/gostaticanalysis/comment v1.4.1 // indirect
@@ -189,13 +189,13 @@ require (
189189
go.opencensus.io v0.23.0 // indirect
190190
golang.org/x/crypto v0.0.0-20220517005047-85d78b3ac167 // indirect
191191
golang.org/x/mod v0.5.0 // indirect
192-
golang.org/x/sys v0.0.0-20220624220833-87e55d714810 // indirect
192+
golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10 // indirect
193193
golang.org/x/text v0.3.7 // indirect
194194
golang.org/x/tools v0.1.5 // indirect
195195
golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f // indirect
196196
google.golang.org/appengine v1.6.7 // indirect
197-
google.golang.org/genproto v0.0.0-20220725144611-272f38e5d71b // indirect
198-
google.golang.org/protobuf v1.28.0 // indirect
197+
google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006 // indirect
198+
google.golang.org/protobuf v1.28.1 // indirect
199199
gopkg.in/ini.v1 v1.51.0 // indirect
200200
gopkg.in/yaml.v2 v2.4.0 // indirect
201201
gopkg.in/yaml.v3 v3.0.1 // indirect

go.sum

+23
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w9
3737
cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc=
3838
cloud.google.com/go v0.102.1 h1:vpK6iQWv/2uUeFJth4/cBHsQAGjn1iIE6AAlxipRaA0=
3939
cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU=
40+
cloud.google.com/go v0.104.0 h1:gSmWO7DY1vOm0MVU6DNXM11BWHHsTUmsC5cv1fuW5X8=
41+
cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA=
4042
cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
4143
cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
4244
cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc=
@@ -69,6 +71,7 @@ cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohl
6971
cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs=
7072
cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0=
7173
cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y=
74+
cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s=
7275
contrib.go.opencensus.io/exporter/stackdriver v0.13.4/go.mod h1:aXENhDJ1Y4lIg4EUaVTwzvYETVNZk10Pu26tevFKLUc=
7376
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
7477
github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
@@ -406,6 +409,8 @@ github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/Oth
406409
github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM=
407410
github.com/googleapis/gax-go/v2 v2.4.0 h1:dS9eYAjhrE2RjmzYw2XAPvcXfmcQLtFEQWn0CR82awk=
408411
github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c=
412+
github.com/googleapis/gax-go/v2 v2.5.1 h1:kBRZU0PSuI7PspsSb/ChWoVResUcwNVIdpB049pKTiw=
413+
github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo=
409414
github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4=
410415
github.com/gookit/color v1.3.8/go.mod h1:R3ogXq2B9rTbXoSHJ1HyUVAZ3poOJHpd9nQmyGZsfvQ=
411416
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8=
@@ -1016,6 +1021,8 @@ golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su
10161021
golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
10171022
golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e h1:TsQ7F31D3bUCLeqPT0u+yjp1guoArKaNKmCr22PYgTQ=
10181023
golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
1024+
golang.org/x/net v0.0.0-20220909164309-bea034e7d591 h1:D0B/7al0LLrVC8aWF4+oxpv/m8bc7ViFfVS8/gXGdqI=
1025+
golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
10191026
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
10201027
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
10211028
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -1038,6 +1045,10 @@ golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j
10381045
golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE=
10391046
golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2 h1:+jnHzr9VPj32ykQVai5DNahi9+NSp7yYuCsl5eAQtL0=
10401047
golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE=
1048+
golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094 h1:2o1E+E8TpNLklK9nHiPiK1uzIYrIHt+cQx3ynCwq9V8=
1049+
golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg=
1050+
golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1 h1:lxqLZaMad/dJHMFZH0NiNpiEZI/nhgWhe4wgzpE+MuA=
1051+
golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg=
10411052
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
10421053
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
10431054
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -1139,6 +1150,8 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc
11391150
golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
11401151
golang.org/x/sys v0.0.0-20220624220833-87e55d714810 h1:rHZQSjJdAI4Xf5Qzeh2bBc5YJIkPFVM6oDtMFYmgws0=
11411152
golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
1153+
golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10 h1:WIoqL4EROvwiPdUtaip4VcDdpZ4kha7wBWZrbVKCIZg=
1154+
golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
11421155
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
11431156
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
11441157
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY=
@@ -1308,6 +1321,10 @@ google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3
13081321
google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o=
13091322
google.golang.org/api v0.92.0 h1:8JHk7q/+rJla+iRsWj9FQ9/wjv2M1SKtpKSdmLhxPT0=
13101323
google.golang.org/api v0.92.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw=
1324+
google.golang.org/api v0.97.0 h1:x/vEL1XDF/2V4xzdNgFPaKHluRESo2aTsL7QzHnBtGQ=
1325+
google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s=
1326+
google.golang.org/api v0.98.0 h1:yxZrcxXESimy6r6mdL5Q6EnZwmewDJK2dVg3g75s5Dg=
1327+
google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s=
13111328
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
13121329
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
13131330
google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
@@ -1406,6 +1423,8 @@ google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljW
14061423
google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA=
14071424
google.golang.org/genproto v0.0.0-20220725144611-272f38e5d71b h1:SfSkJugek6xm7lWywqth4r2iTrYLpD8lOj1nMIIhMNM=
14081425
google.golang.org/genproto v0.0.0-20220725144611-272f38e5d71b/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc=
1426+
google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006 h1:mmbq5q8M1t7dhkLw320YK4PsOXm6jdnUAkErImaIqOg=
1427+
google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw=
14091428
google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
14101429
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
14111430
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
@@ -1444,6 +1463,8 @@ google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu
14441463
google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
14451464
google.golang.org/grpc v1.48.0 h1:rQOsyJ/8+ufEDJd/Gdsz7HG220Mh9HAhFHRGnIjda0w=
14461465
google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk=
1466+
google.golang.org/grpc v1.49.0 h1:WTLtQzmQori5FUH25Pq4WT22oCsv8USpQ+F6rqtsmxw=
1467+
google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI=
14471468
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw=
14481469
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
14491470
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
@@ -1460,6 +1481,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ
14601481
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
14611482
google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw=
14621483
google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
1484+
google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w=
1485+
google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
14631486
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
14641487
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
14651488
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=

google/resource_sql_database_instance.go

+8
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,12 @@ func resourceSqlDatabaseInstance() *schema.Resource {
182182
},
183183
},
184184
},
185+
"time_zone": {
186+
Type: schema.TypeString,
187+
ForceNew: true,
188+
Optional: true,
189+
Description: `The timezone to be used by the database engine (supported only for SQL Server), in SQL Server timezone format.`,
190+
},
185191
"availability_type": {
186192
Type: schema.TypeString,
187193
Optional: true,
@@ -1045,6 +1051,7 @@ func expandSqlDatabaseInstanceSettings(configured []interface{}) *sqladmin.Setti
10451051
ActivationPolicy: _settings["activation_policy"].(string),
10461052
ActiveDirectoryConfig: expandActiveDirectoryConfig(_settings["active_directory_config"].([]interface{})),
10471053
SqlServerAuditConfig: expandSqlServerAuditConfig(_settings["sql_server_audit_config"].([]interface{})),
1054+
TimeZone: _settings["time_zone"].(string),
10481055
AvailabilityType: _settings["availability_type"].(string),
10491056
Collation: _settings["collation"].(string),
10501057
DataDiskSizeGb: int64(_settings["disk_size"].(int)),
@@ -1564,6 +1571,7 @@ func flattenSettings(settings *sqladmin.Settings) []map[string]interface{} {
15641571
"pricing_plan": settings.PricingPlan,
15651572
"user_labels": settings.UserLabels,
15661573
"password_validation_policy": settings.PasswordValidationPolicy,
1574+
"time_zone": settings.TimeZone,
15671575
}
15681576

15691577
if settings.ActiveDirectoryConfig != nil {

google/resource_sql_database_instance_test.go

+64
Original file line numberDiff line numberDiff line change
@@ -1272,6 +1272,32 @@ func TestAccSqlDatabaseInstance_SqlServerAuditConfig(t *testing.T) {
12721272
})
12731273
}
12741274

1275+
func TestAccSqlDatabaseInstance_Timezone(t *testing.T) {
1276+
t.Parallel()
1277+
1278+
databaseName := "tf-test-" + randString(t, 10)
1279+
rootPassword := randString(t, 15)
1280+
addressName := "tf-test-" + randString(t, 10)
1281+
networkName := BootstrapSharedTestNetwork(t, "sql-instance-sqlserver-audit")
1282+
1283+
vcrTest(t, resource.TestCase{
1284+
PreCheck: func() { testAccPreCheck(t) },
1285+
Providers: testAccProviders,
1286+
CheckDestroy: testAccSqlDatabaseInstanceDestroyProducer(t),
1287+
Steps: []resource.TestStep{
1288+
{
1289+
Config: testGoogleSqlDatabaseInstance_Timezone(networkName, addressName, databaseName, rootPassword, "Pacific Standard Time"),
1290+
},
1291+
{
1292+
ResourceName: "google_sql_database_instance.instance",
1293+
ImportState: true,
1294+
ImportStateVerify: true,
1295+
ImportStateVerifyIgnore: []string{"root_password", "deletion_protection"},
1296+
},
1297+
},
1298+
})
1299+
}
1300+
12751301
func TestAccSqlDatabaseInstance_mysqlMajorVersionUpgrade(t *testing.T) {
12761302
t.Parallel()
12771303

@@ -1508,6 +1534,44 @@ resource "google_sql_database_instance" "instance" {
15081534
`, bucketName, networkName, addressName, databaseName, rootPassword, bucketName, retentionInterval, uploadInterval)
15091535
}
15101536

1537+
func testGoogleSqlDatabaseInstance_Timezone(networkName, addressName, databaseName, rootPassword, timezone string) string {
1538+
return fmt.Sprintf(`
1539+
data "google_compute_network" "servicenet" {
1540+
name = "%s"
1541+
}
1542+
1543+
resource "google_compute_global_address" "foobar" {
1544+
name = "%s"
1545+
purpose = "VPC_PEERING"
1546+
address_type = "INTERNAL"
1547+
prefix_length = 16
1548+
network = data.google_compute_network.servicenet.self_link
1549+
}
1550+
1551+
resource "google_service_networking_connection" "foobar" {
1552+
network = data.google_compute_network.servicenet.self_link
1553+
service = "servicenetworking.googleapis.com"
1554+
reserved_peering_ranges = [google_compute_global_address.foobar.name]
1555+
}
1556+
resource "google_sql_database_instance" "instance" {
1557+
depends_on = [google_service_networking_connection.foobar]
1558+
name = "%s"
1559+
region = "us-central1"
1560+
database_version = "SQLSERVER_2017_STANDARD"
1561+
root_password = "%s"
1562+
deletion_protection = false
1563+
settings {
1564+
tier = "db-custom-1-3840"
1565+
ip_configuration {
1566+
ipv4_enabled = "false"
1567+
private_network = data.google_compute_network.servicenet.self_link
1568+
}
1569+
time_zone = "%s"
1570+
}
1571+
}
1572+
`, networkName, addressName, databaseName, rootPassword, timezone)
1573+
}
1574+
15111575
func testGoogleSqlDatabaseInstanceConfig_withoutReplica(instanceName string) string {
15121576
return fmt.Sprintf(`
15131577
resource "google_sql_database_instance" "instance" {

google/resource_storage_bucket.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -1074,7 +1074,7 @@ func flattenBucketLifecycleRuleAction(action *storage.BucketLifecycleRuleAction)
10741074

10751075
func flattenBucketLifecycleRuleCondition(condition *storage.BucketLifecycleRuleCondition) map[string]interface{} {
10761076
ruleCondition := map[string]interface{}{
1077-
"age": int(condition.Age),
1077+
"age": int(*condition.Age),
10781078
"created_before": condition.CreatedBefore,
10791079
"matches_storage_class": convertStringArrToInterface(condition.MatchesStorageClass),
10801080
"num_newer_versions": int(condition.NumNewerVersions),
@@ -1239,7 +1239,8 @@ func expandStorageBucketLifecycleRuleCondition(v interface{}) (*storage.BucketLi
12391239
transformed := &storage.BucketLifecycleRuleCondition{}
12401240

12411241
if v, ok := condition["age"]; ok {
1242-
transformed.Age = int64(v.(int))
1242+
age := int64(v.(int))
1243+
transformed.Age = &age
12431244
transformed.ForceSendFields = append(transformed.ForceSendFields, "Age")
12441245
}
12451246

website/docs/r/sql_database_instance.html.markdown

+2
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,8 @@ The optional `settings.sql_server_audit_config` subblock supports:
269269

270270
* `retention_interval` - (Optional) How long to keep generated audit files. A duration in seconds with up to nine fractional digits, terminated by 's'. Example: "3.5s".
271271

272+
* `timezone` - (Optional) The timezone to be used by the database engine (supported only for SQL Server), in SQL Server timezone format.
273+
272274
The optional `settings.backup_configuration` subblock supports:
273275

274276
* `binary_log_enabled` - (Optional) True if binary logging is enabled.

0 commit comments

Comments
 (0)