diff --git a/staging/src/k8s.io/client-go/rest/request.go b/staging/src/k8s.io/client-go/rest/request.go index 0c2c5abe2b7..acf31136153 100644 --- a/staging/src/k8s.io/client-go/rest/request.go +++ b/staging/src/k8s.io/client-go/rest/request.go @@ -519,14 +519,17 @@ func (r Request) finalURLTemplate() url.URL { newParams[k] = v } r.params = newParams - url := r.URL() + u := r.URL() + if u == nil { + return url.URL{} + } - segments := strings.Split(url.Path, "/") + segments := strings.Split(u.Path, "/") groupIndex := 0 index := 0 trimmedBasePath := "" - if url != nil && r.c.base != nil && strings.Contains(url.Path, r.c.base.Path) { - p := strings.TrimPrefix(url.Path, r.c.base.Path) + if r.c.base != nil && strings.Contains(u.Path, r.c.base.Path) { + p := strings.TrimPrefix(u.Path, r.c.base.Path) if !strings.HasPrefix(p, "/") { p = "/" + p } @@ -537,7 +540,7 @@ func (r Request) finalURLTemplate() url.URL { groupIndex = 1 } if len(segments) <= 2 { - return *url + return *u } const CoreGroupPrefix = "api" @@ -555,11 +558,11 @@ func (r Request) finalURLTemplate() url.URL { // outlet here in case more API groups are added in future if ever possible: // https://kubernetes.io/docs/concepts/overview/kubernetes-api/#api-groups // if a wrong API groups name is encountered, return the {prefix} for url.Path - url.Path = "/{prefix}" - url.RawQuery = "" - return *url + u.Path = "/{prefix}" + u.RawQuery = "" + return *u } - //switch segLength := len(segments) - index; segLength { + // switch segLength := len(segments) - index; segLength { switch { // case len(segments) - index == 1: // resource (with no name) do nothing @@ -582,8 +585,8 @@ func (r Request) finalURLTemplate() url.URL { segments[index+3] = "{name}" } } - url.Path = path.Join(trimmedBasePath, path.Join(segments...)) - return *url + u.Path = path.Join(trimmedBasePath, path.Join(segments...)) + return *u } func (r *Request) tryThrottleWithInfo(ctx context.Context, retryInfo string) error {