Skip to content

Commit 07de4ce

Browse files
emontyjtopjian
authored andcommitted
LBaaSv2 / Octavia: Add client and member data timeouts (#1393) (#1394)
Signed-off-by: Monty Taylor <mordred@inaugust.com>
1 parent 6c87d5c commit 07de4ce

File tree

5 files changed

+60
-20
lines changed

5 files changed

+60
-20
lines changed

openstack/loadbalancer/v2/listeners/doc.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,11 @@ Example to Update a Listener
4343
listenerID := "d67d56a6-4a86-4688-a282-f46444705c64"
4444
4545
i1001 := 1001
46+
i181000 := 181000
4647
updateOpts := listeners.UpdateOpts{
4748
ConnLimit: &i1001,
49+
TimeoutClientData: &i181000,
50+
TimeoutMemberData: &i181000,
4851
}
4952
5053
listener, err := listeners.Update(networkClient, listenerID, updateOpts).Extract()

openstack/loadbalancer/v2/listeners/requests.go

Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -28,19 +28,21 @@ type ListOptsBuilder interface {
2828
// sort by a particular listener attribute. SortDir sets the direction, and is
2929
// either `asc' or `desc'. Marker and Limit are used for pagination.
3030
type ListOpts struct {
31-
ID string `q:"id"`
32-
Name string `q:"name"`
33-
AdminStateUp *bool `q:"admin_state_up"`
34-
ProjectID string `q:"project_id"`
35-
LoadbalancerID string `q:"loadbalancer_id"`
36-
DefaultPoolID string `q:"default_pool_id"`
37-
Protocol string `q:"protocol"`
38-
ProtocolPort int `q:"protocol_port"`
39-
ConnectionLimit int `q:"connection_limit"`
40-
Limit int `q:"limit"`
41-
Marker string `q:"marker"`
42-
SortKey string `q:"sort_key"`
43-
SortDir string `q:"sort_dir"`
31+
ID string `q:"id"`
32+
Name string `q:"name"`
33+
AdminStateUp *bool `q:"admin_state_up"`
34+
ProjectID string `q:"project_id"`
35+
LoadbalancerID string `q:"loadbalancer_id"`
36+
DefaultPoolID string `q:"default_pool_id"`
37+
Protocol string `q:"protocol"`
38+
ProtocolPort int `q:"protocol_port"`
39+
ConnectionLimit int `q:"connection_limit"`
40+
Limit int `q:"limit"`
41+
Marker string `q:"marker"`
42+
SortKey string `q:"sort_key"`
43+
SortDir string `q:"sort_dir"`
44+
TimeoutClientData *int `q:"timeout_client_data"`
45+
TimeoutMemberData *int `q:"timeout_member_data"`
4446
}
4547

4648
// ToListenerListQuery formats a ListOpts into a query string.
@@ -111,6 +113,12 @@ type CreateOpts struct {
111113
// The administrative state of the Listener. A valid value is true (UP)
112114
// or false (DOWN).
113115
AdminStateUp *bool `json:"admin_state_up,omitempty"`
116+
117+
// Frontend client inactivity timeout in milliseconds
118+
TimeoutClientData *int `json:"timeout_client_data,omitempty"`
119+
120+
// Backend member inactivity timeout in milliseconds
121+
TimeoutMemberData *int `json:"timeout_member_data,omitempty"`
114122
}
115123

116124
// ToListenerCreateMap builds a request body from CreateOpts.
@@ -170,6 +178,12 @@ type UpdateOpts struct {
170178
// The administrative state of the Listener. A valid value is true (UP)
171179
// or false (DOWN).
172180
AdminStateUp *bool `json:"admin_state_up,omitempty"`
181+
182+
// Frontend client inactivity timeout in milliseconds
183+
TimeoutClientData *int `json:"timeout_client_data,omitempty"`
184+
185+
// Backend member inactivity timeout in milliseconds
186+
TimeoutMemberData *int `json:"timeout_member_data,omitempty"`
173187
}
174188

175189
// ToListenerUpdateMap builds a request body from UpdateOpts.

openstack/loadbalancer/v2/listeners/results.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,12 @@ type Listener struct {
6262
// The provisioning status of the Listener.
6363
// This value is ACTIVE, PENDING_* or ERROR.
6464
ProvisioningStatus string `json:"provisioning_status"`
65+
66+
// Frontend client inactivity timeout in milliseconds
67+
TimeoutClientData int `json:"timeout_client_data"`
68+
69+
// Backend member inactivity timeout in milliseconds
70+
TimeoutMemberData int `json:"timeout_member_data"`
6571
}
6672

6773
type Stats struct {

openstack/loadbalancer/v2/listeners/testing/fixtures.go

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,9 @@ const ListenersListBody = `
3939
"connection_limit": 2000,
4040
"admin_state_up": true,
4141
"default_tls_container_ref": "2c433435-20de-4411-84ae-9cc8917def76",
42-
"sni_container_refs": ["3d328d82-2547-4921-ac2f-61c3b452b5ff", "b3cfd7e3-8c19-455c-8ebb-d78dfd8f7e7d"]
42+
"sni_container_refs": ["3d328d82-2547-4921-ac2f-61c3b452b5ff", "b3cfd7e3-8c19-455c-8ebb-d78dfd8f7e7d"],
43+
"timeout_client_data": 50000,
44+
"timeout_member_data": 50000
4345
}
4446
]
4547
}
@@ -60,7 +62,10 @@ const SingleListenerBody = `
6062
"connection_limit": 2000,
6163
"admin_state_up": true,
6264
"default_tls_container_ref": "2c433435-20de-4411-84ae-9cc8917def76",
63-
"sni_container_refs": ["3d328d82-2547-4921-ac2f-61c3b452b5ff", "b3cfd7e3-8c19-455c-8ebb-d78dfd8f7e7d"]
65+
"sni_container_refs": ["3d328d82-2547-4921-ac2f-61c3b452b5ff", "b3cfd7e3-8c19-455c-8ebb-d78dfd8f7e7d"],
66+
"timeout_client_data": 50000,
67+
"timeout_member_data": 50000
68+
6469
}
6570
}
6671
`
@@ -80,7 +85,10 @@ const PostUpdateListenerBody = `
8085
"connection_limit": 1000,
8186
"admin_state_up": true,
8287
"default_tls_container_ref": "2c433435-20de-4411-84ae-9cc8917def76",
83-
"sni_container_refs": ["3d328d82-2547-4921-ac2f-61c3b452b5ff", "b3cfd7e3-8c19-455c-8ebb-d78dfd8f7e7d"]
88+
"sni_container_refs": ["3d328d82-2547-4921-ac2f-61c3b452b5ff", "b3cfd7e3-8c19-455c-8ebb-d78dfd8f7e7d"],
89+
"timeout_client_data": 181000,
90+
"timeout_member_data": 181000
91+
8492
}
8593
}
8694
`
@@ -125,6 +133,8 @@ var (
125133
AdminStateUp: true,
126134
DefaultTlsContainerRef: "2c433435-20de-4411-84ae-9cc8917def76",
127135
SniContainerRefs: []string{"3d328d82-2547-4921-ac2f-61c3b452b5ff", "b3cfd7e3-8c19-455c-8ebb-d78dfd8f7e7d"},
136+
TimeoutClientData: 50000,
137+
TimeoutMemberData: 50000,
128138
}
129139
ListenerUpdated = listeners.Listener{
130140
ID: "36e08a3e-a78f-4b40-a229-1e7e23eee1ab",
@@ -139,6 +149,8 @@ var (
139149
AdminStateUp: true,
140150
DefaultTlsContainerRef: "2c433435-20de-4411-84ae-9cc8917def76",
141151
SniContainerRefs: []string{"3d328d82-2547-4921-ac2f-61c3b452b5ff", "b3cfd7e3-8c19-455c-8ebb-d78dfd8f7e7d"},
152+
TimeoutClientData: 181000,
153+
TimeoutMemberData: 181000,
142154
}
143155
ListenerStatsTree = listeners.Stats{
144156
ActiveConnections: 0,
@@ -225,7 +237,9 @@ func HandleListenerUpdateSuccessfully(t *testing.T) {
225237
"listener": {
226238
"name": "NewListenerName",
227239
"default_pool_id": null,
228-
"connection_limit": 1001
240+
"connection_limit": 1001,
241+
"timeout_client_data": 181000,
242+
"timeout_member_data": 181000
229243
}
230244
}`)
231245

openstack/loadbalancer/v2/listeners/testing/requests_test.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -125,12 +125,15 @@ func TestUpdateListener(t *testing.T) {
125125

126126
client := fake.ServiceClient()
127127
i1001 := 1001
128+
i181000 := 181000
128129
name := "NewListenerName"
129130
defaultPoolID := ""
130131
actual, err := listeners.Update(client, "4ec89087-d057-4e2c-911f-60a3b47ee304", listeners.UpdateOpts{
131-
Name: &name,
132-
ConnLimit: &i1001,
133-
DefaultPoolID: &defaultPoolID,
132+
Name: &name,
133+
ConnLimit: &i1001,
134+
DefaultPoolID: &defaultPoolID,
135+
TimeoutMemberData: &i181000,
136+
TimeoutClientData: &i181000,
134137
}).Extract()
135138
if err != nil {
136139
t.Fatalf("Unexpected Update error: %v", err)

0 commit comments

Comments
 (0)