Update ingress godeps
This commit is contained in:
parent
d43021b3f1
commit
28db8fb16d
1068 changed files with 461467 additions and 117300 deletions
9
vendor/k8s.io/kubernetes/pkg/client/restclient/config.go
generated
vendored
9
vendor/k8s.io/kubernetes/pkg/client/restclient/config.go
generated
vendored
|
|
@ -108,6 +108,10 @@ type Config struct {
|
|||
|
||||
// Rate limiter for limiting connections to the master from this client. If present overwrites QPS/Burst
|
||||
RateLimiter flowcontrol.RateLimiter
|
||||
|
||||
// Version forces a specific version to be used (if registered)
|
||||
// Do we need this?
|
||||
// Version string
|
||||
}
|
||||
|
||||
// TLSClientConfig contains settings to enable transport layer security
|
||||
|
|
@ -131,6 +135,9 @@ type TLSClientConfig struct {
|
|||
}
|
||||
|
||||
type ContentConfig struct {
|
||||
// AcceptContentTypes specifies the types the client will accept and is optional.
|
||||
// If not set, ContentType will be used to define the Accept header
|
||||
AcceptContentTypes string
|
||||
// ContentType specifies the wire format used to communicate with the server.
|
||||
// This value will be set as the Accept header on requests made to the server, and
|
||||
// as the default content type on any object sent to the server. If not set,
|
||||
|
|
@ -240,7 +247,7 @@ func DefaultKubernetesUserAgent() string {
|
|||
|
||||
// InClusterConfig returns a config object which uses the service account
|
||||
// kubernetes gives to pods. It's intended for clients that expect to be
|
||||
// running inside a pod running on kuberenetes. It will return an error if
|
||||
// running inside a pod running on kubernetes. It will return an error if
|
||||
// called from a process not running in a kubernetes environment.
|
||||
func InClusterConfig() (*Config, error) {
|
||||
host, port := os.Getenv("KUBERNETES_SERVICE_HOST"), os.Getenv("KUBERNETES_SERVICE_PORT")
|
||||
|
|
|
|||
109
vendor/k8s.io/kubernetes/pkg/client/restclient/request.go
generated
vendored
109
vendor/k8s.io/kubernetes/pkg/client/restclient/request.go
generated
vendored
|
|
@ -18,6 +18,7 @@ package restclient
|
|||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/hex"
|
||||
"fmt"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
|
|
@ -57,10 +58,6 @@ var (
|
|||
longThrottleLatency = 50 * time.Millisecond
|
||||
)
|
||||
|
||||
func init() {
|
||||
metrics.Register()
|
||||
}
|
||||
|
||||
// HTTPClient is an interface for testing a request object.
|
||||
type HTTPClient interface {
|
||||
Do(req *http.Request) (*http.Response, error)
|
||||
|
|
@ -143,7 +140,10 @@ func NewRequest(client HTTPClient, verb string, baseURL *url.URL, versionedAPIPa
|
|||
backoffMgr: backoff,
|
||||
throttle: throttle,
|
||||
}
|
||||
if len(content.ContentType) > 0 {
|
||||
switch {
|
||||
case len(content.AcceptContentTypes) > 0:
|
||||
r.SetHeader("Accept", content.AcceptContentTypes)
|
||||
case len(content.ContentType) > 0:
|
||||
r.SetHeader("Accept", content.ContentType+", */*")
|
||||
}
|
||||
return r
|
||||
|
|
@ -335,16 +335,16 @@ func (r resourceTypeToFieldMapping) filterField(resourceType, field, value strin
|
|||
|
||||
type versionToResourceToFieldMapping map[unversioned.GroupVersion]resourceTypeToFieldMapping
|
||||
|
||||
// filterField transforms the given field/value selector for the given groupVersion and resource
|
||||
func (v versionToResourceToFieldMapping) filterField(groupVersion *unversioned.GroupVersion, resourceType, field, value string) (newField, newValue string, err error) {
|
||||
rMapping, ok := v[*groupVersion]
|
||||
if !ok {
|
||||
glog.Warningf("Field selector: %v - %v - %v - %v: need to check if this is versioned correctly.", groupVersion, resourceType, field, value)
|
||||
// no groupVersion overrides registered, default to identity mapping
|
||||
return field, value, nil
|
||||
}
|
||||
newField, newValue, err = rMapping.filterField(resourceType, field, value)
|
||||
if err != nil {
|
||||
// This is only a warning until we find and fix all of the client's usages.
|
||||
glog.Warningf("Field selector: %v - %v - %v - %v: need to check if this is versioned correctly.", groupVersion, resourceType, field, value)
|
||||
// no groupVersionResource overrides registered, default to identity mapping
|
||||
return field, value, nil
|
||||
}
|
||||
return newField, newValue, nil
|
||||
|
|
@ -538,10 +538,10 @@ func (r *Request) Body(obj interface{}) *Request {
|
|||
r.err = err
|
||||
return r
|
||||
}
|
||||
glog.V(8).Infof("Request Body: %s", string(data))
|
||||
glog.V(8).Infof("Request Body: %#v", string(data))
|
||||
r.body = bytes.NewReader(data)
|
||||
case []byte:
|
||||
glog.V(8).Infof("Request Body: %s", string(t))
|
||||
glog.V(8).Infof("Request Body: %#v", string(t))
|
||||
r.body = bytes.NewReader(t)
|
||||
case io.Reader:
|
||||
r.body = t
|
||||
|
|
@ -555,7 +555,7 @@ func (r *Request) Body(obj interface{}) *Request {
|
|||
r.err = err
|
||||
return r
|
||||
}
|
||||
glog.V(8).Infof("Request Body: %s", string(data))
|
||||
glog.V(8).Infof("Request Body: %#v", string(data))
|
||||
r.body = bytes.NewReader(data)
|
||||
r.SetHeader("Content-Type", r.content.ContentType)
|
||||
default:
|
||||
|
|
@ -605,7 +605,7 @@ func (r *Request) URL() *url.URL {
|
|||
// underyling object. This means some useful request info (like the types of field
|
||||
// selectors in use) will be lost.
|
||||
// TODO: preserve field selector keys
|
||||
func (r Request) finalURLTemplate() string {
|
||||
func (r Request) finalURLTemplate() url.URL {
|
||||
if len(r.resourceName) != 0 {
|
||||
r.resourceName = "{name}"
|
||||
}
|
||||
|
|
@ -618,7 +618,8 @@ func (r Request) finalURLTemplate() string {
|
|||
newParams[k] = v
|
||||
}
|
||||
r.params = newParams
|
||||
return r.URL().String()
|
||||
url := r.URL()
|
||||
return *url
|
||||
}
|
||||
|
||||
func (r *Request) tryThrottle() {
|
||||
|
|
@ -693,10 +694,10 @@ func updateURLMetrics(req *Request, resp *http.Response, err error) {
|
|||
|
||||
// If we have an error (i.e. apiserver down) we report that as a metric label.
|
||||
if err != nil {
|
||||
metrics.RequestResult.WithLabelValues(err.Error(), req.verb, url).Inc()
|
||||
metrics.RequestResult.Increment(err.Error(), req.verb, url)
|
||||
} else {
|
||||
//Metrics for failure codes
|
||||
metrics.RequestResult.WithLabelValues(strconv.Itoa(resp.StatusCode), req.verb, url).Inc()
|
||||
metrics.RequestResult.Increment(strconv.Itoa(resp.StatusCode), req.verb, url)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -771,7 +772,7 @@ func (r *Request) request(fn func(*http.Request, *http.Response)) error {
|
|||
//Metrics for total request latency
|
||||
start := time.Now()
|
||||
defer func() {
|
||||
metrics.RequestLatency.WithLabelValues(r.verb, r.finalURLTemplate()).Observe(metrics.SinceInMicroseconds(start))
|
||||
metrics.RequestLatency.Observe(r.verb, r.finalURLTemplate(), time.Since(start))
|
||||
}()
|
||||
|
||||
if r.err != nil {
|
||||
|
|
@ -817,9 +818,16 @@ func (r *Request) request(fn func(*http.Request, *http.Response)) error {
|
|||
}
|
||||
|
||||
done := func() bool {
|
||||
// ensure the response body is closed before we reconnect, so that we reuse the same
|
||||
// TCP connection
|
||||
defer resp.Body.Close()
|
||||
// Ensure the response body is fully read and closed
|
||||
// before we reconnect, so that we reuse the same TCP
|
||||
// connection.
|
||||
defer func() {
|
||||
const maxBodySlurpSize = 2 << 10
|
||||
if resp.ContentLength <= maxBodySlurpSize {
|
||||
io.Copy(ioutil.Discard, &io.LimitedReader{R: resp.Body, N: maxBodySlurpSize})
|
||||
}
|
||||
resp.Body.Close()
|
||||
}()
|
||||
|
||||
retries++
|
||||
if seconds, wait := checkWait(resp); wait && retries < maxRetries {
|
||||
|
|
@ -873,6 +881,9 @@ func (r *Request) DoRaw() ([]byte, error) {
|
|||
var result Result
|
||||
err := r.request(func(req *http.Request, resp *http.Response) {
|
||||
result.body, result.err = ioutil.ReadAll(resp.Body)
|
||||
if resp.StatusCode < http.StatusOK || resp.StatusCode > http.StatusPartialContent {
|
||||
result.err = r.transformUnstructuredResponseError(resp, req, result.body)
|
||||
}
|
||||
})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
|
@ -888,16 +899,49 @@ func (r *Request) transformResponse(resp *http.Response, req *http.Request) Resu
|
|||
body = data
|
||||
}
|
||||
}
|
||||
glog.V(8).Infof("Response Body: %s", string(body))
|
||||
|
||||
if glog.V(8) {
|
||||
switch {
|
||||
case bytes.IndexFunc(body, func(r rune) bool { return r < 0x0a }) != -1:
|
||||
glog.Infof("Response Body:\n%s", hex.Dump(body))
|
||||
default:
|
||||
glog.Infof("Response Body: %s", string(body))
|
||||
}
|
||||
}
|
||||
|
||||
// verify the content type is accurate
|
||||
contentType := resp.Header.Get("Content-Type")
|
||||
decoder := r.serializers.Decoder
|
||||
if len(contentType) > 0 && (decoder == nil || (len(r.content.ContentType) > 0 && contentType != r.content.ContentType)) {
|
||||
mediaType, params, err := mime.ParseMediaType(contentType)
|
||||
if err != nil {
|
||||
return Result{err: errors.NewInternalError(err)}
|
||||
}
|
||||
decoder, err = r.serializers.RenegotiatedDecoder(mediaType, params)
|
||||
if err != nil {
|
||||
// if we fail to negotiate a decoder, treat this as an unstructured error
|
||||
switch {
|
||||
case resp.StatusCode == http.StatusSwitchingProtocols:
|
||||
// no-op, we've been upgraded
|
||||
case resp.StatusCode < http.StatusOK || resp.StatusCode > http.StatusPartialContent:
|
||||
return Result{err: r.transformUnstructuredResponseError(resp, req, body)}
|
||||
}
|
||||
return Result{
|
||||
body: body,
|
||||
contentType: contentType,
|
||||
statusCode: resp.StatusCode,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Did the server give us a status response?
|
||||
isStatusResponse := false
|
||||
status := &unversioned.Status{}
|
||||
// Because release-1.1 server returns Status with empty APIVersion at paths
|
||||
// to the Extensions resources, we need to use DecodeInto here to provide
|
||||
// default groupVersion, otherwise a status response won't be correctly
|
||||
// decoded.
|
||||
status := &unversioned.Status{}
|
||||
err := runtime.DecodeInto(r.serializers.Decoder, body, status)
|
||||
err := runtime.DecodeInto(decoder, body, status)
|
||||
if err == nil && len(status.Status) > 0 {
|
||||
isStatusResponse = true
|
||||
}
|
||||
|
|
@ -919,25 +963,6 @@ func (r *Request) transformResponse(resp *http.Response, req *http.Request) Resu
|
|||
return Result{err: errors.FromObject(status)}
|
||||
}
|
||||
|
||||
contentType := resp.Header.Get("Content-Type")
|
||||
var decoder runtime.Decoder
|
||||
if contentType == r.content.ContentType {
|
||||
decoder = r.serializers.Decoder
|
||||
} else {
|
||||
mediaType, params, err := mime.ParseMediaType(contentType)
|
||||
if err != nil {
|
||||
return Result{err: errors.NewInternalError(err)}
|
||||
}
|
||||
decoder, err = r.serializers.RenegotiatedDecoder(mediaType, params)
|
||||
if err != nil {
|
||||
return Result{
|
||||
body: body,
|
||||
contentType: contentType,
|
||||
statusCode: resp.StatusCode,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return Result{
|
||||
body: body,
|
||||
contentType: contentType,
|
||||
|
|
@ -970,7 +995,7 @@ func (r *Request) transformUnstructuredResponseError(resp *http.Response, req *h
|
|||
body = data
|
||||
}
|
||||
}
|
||||
glog.V(8).Infof("Response Body: %s", string(body))
|
||||
glog.V(8).Infof("Response Body: %#v", string(body))
|
||||
|
||||
message := "unknown"
|
||||
if isTextResponse(resp) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue