mirror of
https://github.com/kubernetes/sample-controller.git
synced 2025-02-08 06:52:56 +08:00
![Kubernetes Publisher](/assets/img/avatar_default.png)
Automatic merge from submit-queue (batch tested with PRs 66602, 67178, 67207, 67125, 66332). If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>.
Vendor cfssl/cfssljson utilities
**What this PR does / why we need it**:
Vendors the `cfssl` and `cfssljson` tools. Updates `kube::util::ensure-cfssl` to use them.
**Which issue(s) this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close the issue(s) when PR gets merged)*:
fixes #66995, fixes #60070
**Special notes for your reviewer**:
1. Add cfssl/cfssljson ot the required bins for saving
2. Manually cloned/checked out the new dependencies to my gopath. `godep restore` doesn't pull them down because they aren't required or already in the `Godeps.json`. Used @BenTheElder's list here: https://github.com/kubernetes/kubernetes/issues/66995#issuecomment-410594532
3. `hack/godep-save.sh` to add the packages and dependencies to godep
4. Fixed two bugs when building:
a. `golang.org/x/crypto` needed to be updated
b. `github.com/cloudflare/cfssl` needed to be updated to 56268a613a
so we can vendor their fork of `crypto/tls`, as we discard their modified vendored stdlib.
5. Update staging godeps
6. Update the `kube::util::ensure-cfssl` to install from vendor
**Release note**:
```release-note
NONE
```
Kubernetes-commit: 818e632c1fde5fb01bc8ccf9b9ee6201f33a28b4
63 lines
1.8 KiB
Go
63 lines
1.8 KiB
Go
/*
|
|
Copyright 2017 The Kubernetes Authors.
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
*/
|
|
|
|
package discovery
|
|
|
|
import (
|
|
"net/http"
|
|
"path/filepath"
|
|
|
|
"github.com/golang/glog"
|
|
"github.com/gregjones/httpcache"
|
|
"github.com/gregjones/httpcache/diskcache"
|
|
"github.com/peterbourgon/diskv"
|
|
)
|
|
|
|
type cacheRoundTripper struct {
|
|
rt *httpcache.Transport
|
|
}
|
|
|
|
// newCacheRoundTripper creates a roundtripper that reads the ETag on
|
|
// response headers and send the If-None-Match header on subsequent
|
|
// corresponding requests.
|
|
func newCacheRoundTripper(cacheDir string, rt http.RoundTripper) http.RoundTripper {
|
|
d := diskv.New(diskv.Options{
|
|
BasePath: cacheDir,
|
|
TempDir: filepath.Join(cacheDir, ".diskv-temp"),
|
|
})
|
|
t := httpcache.NewTransport(diskcache.NewWithDiskv(d))
|
|
t.Transport = rt
|
|
|
|
return &cacheRoundTripper{rt: t}
|
|
}
|
|
|
|
func (rt *cacheRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) {
|
|
return rt.rt.RoundTrip(req)
|
|
}
|
|
|
|
func (rt *cacheRoundTripper) CancelRequest(req *http.Request) {
|
|
type canceler interface {
|
|
CancelRequest(*http.Request)
|
|
}
|
|
if cr, ok := rt.rt.Transport.(canceler); ok {
|
|
cr.CancelRequest(req)
|
|
} else {
|
|
glog.Errorf("CancelRequest not implemented by %T", rt.rt.Transport)
|
|
}
|
|
}
|
|
|
|
func (rt *cacheRoundTripper) WrappedRoundTripper() http.RoundTripper { return rt.rt.Transport }
|