forked from openshift/library-go
-
Notifications
You must be signed in to change notification settings - Fork 0
/
longrunning.go
26 lines (21 loc) · 897 Bytes
/
longrunning.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package apiserverconfig
import (
"net/http"
"regexp"
"k8s.io/apimachinery/pkg/util/sets"
apirequest "k8s.io/apiserver/pkg/endpoints/request"
genericfilters "k8s.io/apiserver/pkg/server/filters"
)
// request paths that match this regular expression will be treated as long running
// and not subjected to the default server timeout.
const originLongRunningEndpointsRE = "(/|^)(buildconfigs/.*/instantiatebinary|imagestreamimports)$"
var (
originLongRunningRequestRE = regexp.MustCompile(originLongRunningEndpointsRE)
kubeLongRunningFunc = genericfilters.BasicLongRunningRequestCheck(
sets.NewString("watch", "proxy"),
sets.NewString("attach", "exec", "proxy", "log", "portforward"),
)
)
func IsLongRunningRequest(r *http.Request, requestInfo *apirequest.RequestInfo) bool {
return originLongRunningRequestRE.MatchString(r.URL.Path) || kubeLongRunningFunc(r, requestInfo)
}