Skip to content

Commit eb75efb

Browse files
feat(lbaas): maintenance window (#295)
1 parent 7c7f6ca commit eb75efb

File tree

7 files changed

+191
-311
lines changed

7 files changed

+191
-311
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ See updating [Changelog example here](https://keepachangelog.com/en/1.0.0/)
55

66
## [Unreleased]
77

8+
### Added
9+
- Managed Load Balancer: `MaintenanceDOW` and `MaintenanceTime` fields for controlling maintenance window occurrence
10+
811
### Changed
912
- **Breaking**, Managed Database: `ManagedDatabaseUserOpernSearchAccessControl` fields changed to pointers
1013
- **Breaking**, Managed Database: `ManagedDatabaseUserPGAccessControl` fields changed to pointers

upcloud/load_balancer.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ type (
2222
LoadBalancerNetworkType string
2323
LoadBalancerAddressFamily string
2424
LoadBalancerNodeOperationalState string
25+
LoadBalancerMaintenanceDOW string
2526
)
2627

2728
const (
@@ -125,6 +126,14 @@ const (
125126
LoadBalancerNodeOperationalStateAgentUpgradeFinishing LoadBalancerNodeOperationalState = "agent-upgrade-finishing"
126127
LoadBalancerNodeOperationalStateStopped LoadBalancerNodeOperationalState = "stopped"
127128
LoadBalancerNodeOperationalStateNotResponding LoadBalancerNodeOperationalState = "not-responding"
129+
130+
LoadBalancerMaintenanceDOWMonday LoadBalancerMaintenanceDOW = "monday"
131+
LoadBalancerMaintenanceDOWTuesday LoadBalancerMaintenanceDOW = "tuesday"
132+
LoadBalancerMaintenanceDOWWednesday LoadBalancerMaintenanceDOW = "wednesday"
133+
LoadBalancerMaintenanceDOWThursday LoadBalancerMaintenanceDOW = "thursday"
134+
LoadBalancerMaintenanceDOWFriday LoadBalancerMaintenanceDOW = "friday"
135+
LoadBalancerMaintenanceOWSaturday LoadBalancerMaintenanceDOW = "saturday"
136+
LoadBalancerMaintenanceDOWSunday LoadBalancerMaintenanceDOW = "sunday"
128137
)
129138

130139
// LoadBalancerPlan represents load balancer plan details
@@ -255,6 +264,8 @@ type LoadBalancer struct {
255264
Nodes []LoadBalancerNode `json:"nodes,omitempty"`
256265
CreatedAt time.Time `json:"created_at,omitempty"`
257266
UpdatedAt time.Time `json:"updated_at,omitempty"`
267+
MaintenanceDOW LoadBalancerMaintenanceDOW `json:"maintenance_dow,omitempty"`
268+
MaintenanceTime string `json:"maintenance_time,omitempty"`
258269
}
259270

260271
// LoadBalancerMatcher represents rule matcher

upcloud/load_balancer_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ func TestMarshalLoadBalancer(t *testing.T) {
2222
"updated_at": "2022-02-11T17:33:59.898714Z",
2323
"uuid": "0aff6dac-143c-4300-9b33-ee2756f6592d",
2424
"zone": "fi-hel1",
25+
"maintenance_dow": "sunday",
26+
"maintenance_time": "20:01:01Z",
2527
"labels": [
2628
{
2729
"key": "managedby",
@@ -149,6 +151,8 @@ func TestMarshalLoadBalancer(t *testing.T) {
149151
OperationalState: LoadBalancerOperationalStateRunning,
150152
CreatedAt: timeParse("2021-12-07T13:58:30.817272Z"),
151153
UpdatedAt: timeParse("2022-02-11T17:33:59.898714Z"),
154+
MaintenanceDOW: LoadBalancerMaintenanceDOWSunday,
155+
MaintenanceTime: "20:01:01Z",
152156
Labels: []Label{
153157
{
154158
Key: "managedby",

upcloud/request/load_balancer.go

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ type CreateLoadBalancerRequest struct {
6060
Backends []LoadBalancerBackend `json:"backends"`
6161
Resolvers []LoadBalancerResolver `json:"resolvers"`
6262
Labels []upcloud.Label `json:"labels,omitempty"`
63+
MaintenanceDOW upcloud.LoadBalancerMaintenanceDOW `json:"maintenance_dow,omitempty"`
64+
MaintenanceTime string `json:"maintenance_time,omitempty"`
6365
}
6466

6567
func (r *CreateLoadBalancerRequest) RequestURL() string {
@@ -68,11 +70,13 @@ func (r *CreateLoadBalancerRequest) RequestURL() string {
6870

6971
// ModifyLoadBalancerRequest represents a request to modify load balancer
7072
type ModifyLoadBalancerRequest struct {
71-
UUID string `json:"-"`
72-
Name string `json:"name,omitempty"`
73-
Plan string `json:"plan,omitempty"`
74-
ConfiguredStatus string `json:"configured_status,omitempty"`
75-
Labels *[]upcloud.Label `json:"labels,omitempty"`
73+
UUID string `json:"-"`
74+
Name string `json:"name,omitempty"`
75+
Plan string `json:"plan,omitempty"`
76+
ConfiguredStatus string `json:"configured_status,omitempty"`
77+
Labels *[]upcloud.Label `json:"labels,omitempty"`
78+
MaintenanceDOW upcloud.LoadBalancerMaintenanceDOW `json:"maintenance_dow,omitempty"`
79+
MaintenanceTime string `json:"maintenance_time,omitempty"`
7680
}
7781

7882
func (r *ModifyLoadBalancerRequest) RequestURL() string {

upcloud/request/load_balancer_test.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,9 @@ func TestCreateLoadBalancerRequest(t *testing.T) {
9292
"cache_valid": 180,
9393
"cache_invalid": 10
9494
}
95-
]
95+
],
96+
"maintenance_dow": "sunday",
97+
"maintenance_time": "20:01:01Z"
9698
}
9799
`
98100
r := CreateLoadBalancerRequest{
@@ -128,6 +130,8 @@ func TestCreateLoadBalancerRequest(t *testing.T) {
128130
CacheValid: 180,
129131
CacheInvalid: 10,
130132
}},
133+
MaintenanceDOW: upcloud.LoadBalancerMaintenanceDOWSunday,
134+
MaintenanceTime: "20:01:01Z",
131135
}
132136
actual, err := json.Marshal(&r)
133137
assert.NoError(t, err)

0 commit comments

Comments
 (0)