Skip to content

Commit 7a16eb7

Browse files
authored
Merge branch 'main' into types_tests
2 parents 3812281 + c4bc912 commit 7a16eb7

20 files changed

+3939
-52910
lines changed

databases.go

Lines changed: 102 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ type (
1313
DatabaseDayOfWeek int
1414
DatabaseMaintenanceFrequency string
1515
DatabaseStatus string
16+
DatabasePlatform string
17+
DatabaseMemberType string
1618
)
1719

1820
const (
@@ -50,24 +52,45 @@ const (
5052
DatabaseStatusBackingUp DatabaseStatus = "backing_up"
5153
)
5254

55+
const (
56+
DatabasePlatformRDBMSLegacy DatabasePlatform = "rdbms-legacy"
57+
DatabasePlatformRDBMSDefault DatabasePlatform = "rdbms-default"
58+
)
59+
60+
const (
61+
DatabaseMemberTypePrimary DatabaseMemberType = "primary"
62+
DatabaseMemberTypeFailover DatabaseMemberType = "failover"
63+
)
64+
5365
// A Database is a instance of Linode Managed Databases
5466
type Database struct {
55-
ID int `json:"id"`
56-
Status DatabaseStatus `json:"status"`
57-
Label string `json:"label"`
58-
Hosts DatabaseHost `json:"hosts"`
59-
Region string `json:"region"`
60-
Type string `json:"type"`
61-
Engine string `json:"engine"`
62-
Version string `json:"version"`
63-
ClusterSize int `json:"cluster_size"`
64-
ReplicationType string `json:"replication_type"`
65-
SSLConnection bool `json:"ssl_connection"`
66-
Encrypted bool `json:"encrypted"`
67-
AllowList []string `json:"allow_list"`
68-
InstanceURI string `json:"instance_uri"`
69-
Created *time.Time `json:"-"`
70-
Updated *time.Time `json:"-"`
67+
ID int `json:"id"`
68+
Status DatabaseStatus `json:"status"`
69+
Label string `json:"label"`
70+
Hosts DatabaseHost `json:"hosts"`
71+
Region string `json:"region"`
72+
Type string `json:"type"`
73+
Engine string `json:"engine"`
74+
Version string `json:"version"`
75+
ClusterSize int `json:"cluster_size"`
76+
Platform DatabasePlatform `json:"platform"`
77+
Fork *DatabaseFork `json:"fork"`
78+
79+
// Members has dynamic keys so it is a map
80+
Members map[string]DatabaseMemberType `json:"members"`
81+
82+
// Deprecated: ReplicationType is a deprecated property, as it is no longer supported in DBaaS V2.
83+
ReplicationType string `json:"replication_type"`
84+
// Deprecated: SSLConnection is a deprecated property, as it is no longer supported in DBaaS V2.
85+
SSLConnection bool `json:"ssl_connection"`
86+
// Deprecated: Encrypted is a deprecated property, as it is no longer supported in DBaaS V2.
87+
Encrypted bool `json:"encrypted"`
88+
89+
AllowList []string `json:"allow_list"`
90+
InstanceURI string `json:"instance_uri"`
91+
Created *time.Time `json:"-"`
92+
Updated *time.Time `json:"-"`
93+
OldestRestoreTime *time.Time `json:"-"`
7194
}
7295

7396
// DatabaseHost for Primary/Secondary of Database
@@ -85,11 +108,21 @@ type DatabaseEngine struct {
85108

86109
// DatabaseMaintenanceWindow stores information about a MySQL cluster's maintenance window
87110
type DatabaseMaintenanceWindow struct {
88-
DayOfWeek DatabaseDayOfWeek `json:"day_of_week"`
89-
Duration int `json:"duration"`
90-
Frequency DatabaseMaintenanceFrequency `json:"frequency"`
91-
HourOfDay int `json:"hour_of_day"`
92-
WeekOfMonth *int `json:"week_of_month"`
111+
DayOfWeek DatabaseDayOfWeek `json:"day_of_week"`
112+
Duration int `json:"duration"`
113+
Frequency DatabaseMaintenanceFrequency `json:"frequency"`
114+
HourOfDay int `json:"hour_of_day"`
115+
116+
Pending []DatabaseMaintenanceWindowPending `json:"pending,omitempty"`
117+
118+
// Deprecated: WeekOfMonth is a deprecated property, as it is no longer supported in DBaaS V2.
119+
WeekOfMonth *int `json:"week_of_month,omitempty"`
120+
}
121+
122+
type DatabaseMaintenanceWindowPending struct {
123+
Deadline *time.Time `json:"-"`
124+
Description string `json:"description"`
125+
PlannedFor *time.Time `json:"-"`
93126
}
94127

95128
// DatabaseType is information about the supported Database Types by Linode Managed Databases
@@ -120,13 +153,20 @@ type ClusterPrice struct {
120153
Monthly float32 `json:"monthly"`
121154
}
122155

156+
// DatabaseFork describes the source and restore time for the fork for forked DBs
157+
type DatabaseFork struct {
158+
Source int `json:"source"`
159+
RestoreTime *time.Time `json:"-,omitempty"`
160+
}
161+
123162
func (d *Database) UnmarshalJSON(b []byte) error {
124163
type Mask Database
125164

126165
p := struct {
127166
*Mask
128-
Created *parseabletime.ParseableTime `json:"created"`
129-
Updated *parseabletime.ParseableTime `json:"updated"`
167+
Created *parseabletime.ParseableTime `json:"created"`
168+
Updated *parseabletime.ParseableTime `json:"updated"`
169+
OldestRestoreTime *parseabletime.ParseableTime `json:"oldest_restore_time"`
130170
}{
131171
Mask: (*Mask)(d),
132172
}
@@ -137,6 +177,45 @@ func (d *Database) UnmarshalJSON(b []byte) error {
137177

138178
d.Created = (*time.Time)(p.Created)
139179
d.Updated = (*time.Time)(p.Updated)
180+
d.OldestRestoreTime = (*time.Time)(p.OldestRestoreTime)
181+
return nil
182+
}
183+
184+
func (d *DatabaseFork) UnmarshalJSON(b []byte) error {
185+
type Mask DatabaseFork
186+
187+
p := struct {
188+
*Mask
189+
RestoreTime *parseabletime.ParseableTime `json:"restore_time"`
190+
}{
191+
Mask: (*Mask)(d),
192+
}
193+
194+
if err := json.Unmarshal(b, &p); err != nil {
195+
return err
196+
}
197+
198+
d.RestoreTime = (*time.Time)(p.RestoreTime)
199+
return nil
200+
}
201+
202+
func (d *DatabaseMaintenanceWindowPending) UnmarshalJSON(b []byte) error {
203+
type Mask DatabaseMaintenanceWindowPending
204+
205+
p := struct {
206+
*Mask
207+
Deadline *parseabletime.ParseableTime `json:"deadline"`
208+
PlannedFor *parseabletime.ParseableTime `json:"planned_for"`
209+
}{
210+
Mask: (*Mask)(d),
211+
}
212+
213+
if err := json.Unmarshal(b, &p); err != nil {
214+
return err
215+
}
216+
217+
d.Deadline = (*time.Time)(p.Deadline)
218+
d.PlannedFor = (*time.Time)(p.PlannedFor)
140219
return nil
141220
}
142221

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ require (
55
github.com/google/go-cmp v0.6.0
66
github.com/google/go-querystring v1.1.0
77
github.com/jarcoal/httpmock v1.3.1
8-
golang.org/x/net v0.33.0
9-
golang.org/x/oauth2 v0.24.0
8+
golang.org/x/net v0.34.0
9+
golang.org/x/oauth2 v0.25.0
1010
golang.org/x/text v0.21.0
1111
gopkg.in/ini.v1 v1.66.6
1212
)

go.sum

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb
1515
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
1616
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
1717
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
18-
golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
19-
golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
20-
golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE=
21-
golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
18+
golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0=
19+
golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k=
20+
golang.org/x/oauth2 v0.25.0 h1:CY4y7XT9v0cRI9oupztF8AgiIu99L/ksR/Xp/6jrZ70=
21+
golang.org/x/oauth2 v0.25.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
2222
golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
2323
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
2424
golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U=

go.work.sum

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,9 @@ golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7
4545
golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg=
4646
golang.org/x/crypto v0.30.0 h1:RwoQn3GkWiMkzlX562cLB7OxWvjH1L8xutO2WoJcRoY=
4747
golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
48+
golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
4849
golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
50+
golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc=
4951
golang.org/x/mod v0.17.0 h1:zY54UmvipHiNd+pm+m0x9KhZ9hl1/7QNMyxXbc6ICqA=
5052
golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
5153
golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE=
@@ -58,9 +60,11 @@ golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
5860
golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
5961
golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
6062
golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
63+
golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
6164
golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2 h1:IRJeR9r1pYWsHKTRe/IInb7lYvbBVIqOgsX/u0mbOWY=
6265
golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE=
6366
golang.org/x/term v0.24.0/go.mod h1:lOBK/LVxemqiMij05LGJ0tzNr8xlmwBRJ81PX6wVLH8=
67+
golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek=
6468
golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
6569
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk=
6670
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8=

k8s/go.mod

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,10 @@ require (
2929
github.com/modern-go/reflect2 v1.0.2 // indirect
3030
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
3131
github.com/spf13/pflag v1.0.5 // indirect
32-
golang.org/x/net v0.33.0 // indirect
33-
golang.org/x/oauth2 v0.24.0 // indirect
34-
golang.org/x/sys v0.28.0 // indirect
35-
golang.org/x/term v0.27.0 // indirect
32+
golang.org/x/net v0.34.0 // indirect
33+
golang.org/x/oauth2 v0.25.0 // indirect
34+
golang.org/x/sys v0.29.0 // indirect
35+
golang.org/x/term v0.28.0 // indirect
3636
golang.org/x/text v0.21.0 // indirect
3737
golang.org/x/time v0.6.0 // indirect
3838
google.golang.org/protobuf v1.33.0 // indirect

k8s/go.sum

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -91,20 +91,20 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn
9191
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
9292
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
9393
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
94-
golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
95-
golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
96-
golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE=
97-
golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
94+
golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0=
95+
golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k=
96+
golang.org/x/oauth2 v0.25.0 h1:CY4y7XT9v0cRI9oupztF8AgiIu99L/ksR/Xp/6jrZ70=
97+
golang.org/x/oauth2 v0.25.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
9898
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
9999
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
100100
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
101101
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
102102
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
103103
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
104-
golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
105-
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
106-
golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
107-
golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
104+
golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU=
105+
golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
106+
golang.org/x/term v0.28.0 h1:/Ts8HFuMR2E6IP/jlo7QVLZHggjKQbhu/7H0LJFr3Gg=
107+
golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek=
108108
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
109109
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
110110
golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=

0 commit comments

Comments
 (0)