Switch to github.com/golang/dep for vendoring
Signed-off-by: Mrunal Patel <mrunalp@gmail.com>
This commit is contained in:
parent
d6ab91be27
commit
8e5b17cf13
15431 changed files with 3971413 additions and 8881 deletions
119
vendor/github.com/containers/image/openshift/openshift-copies.go
generated
vendored
119
vendor/github.com/containers/image/openshift/openshift-copies.go
generated
vendored
|
@ -13,14 +13,14 @@ import (
|
|||
"path"
|
||||
"path/filepath"
|
||||
"reflect"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/ghodss/yaml"
|
||||
"github.com/imdario/mergo"
|
||||
"github.com/pkg/errors"
|
||||
utilerrors "k8s.io/kubernetes/pkg/util/errors"
|
||||
"k8s.io/kubernetes/pkg/util/homedir"
|
||||
utilnet "k8s.io/kubernetes/pkg/util/net"
|
||||
"golang.org/x/net/http2"
|
||||
"k8s.io/client-go/util/homedir"
|
||||
)
|
||||
|
||||
// restTLSClientConfig is a modified copy of k8s.io/kubernets/pkg/client/restclient.TLSClientConfig.
|
||||
|
@ -450,6 +450,55 @@ func (config *directClientConfig) getCluster() clientcmdCluster {
|
|||
return mergedClusterInfo
|
||||
}
|
||||
|
||||
// aggregateErr is a modified copy of k8s.io/apimachinery/pkg/util/errors.aggregate.
|
||||
// This helper implements the error and Errors interfaces. Keeping it private
|
||||
// prevents people from making an aggregate of 0 errors, which is not
|
||||
// an error, but does satisfy the error interface.
|
||||
type aggregateErr []error
|
||||
|
||||
// newAggregate is a modified copy of k8s.io/apimachinery/pkg/util/errors.NewAggregate.
|
||||
// NewAggregate converts a slice of errors into an Aggregate interface, which
|
||||
// is itself an implementation of the error interface. If the slice is empty,
|
||||
// this returns nil.
|
||||
// It will check if any of the element of input error list is nil, to avoid
|
||||
// nil pointer panic when call Error().
|
||||
func newAggregate(errlist []error) error {
|
||||
if len(errlist) == 0 {
|
||||
return nil
|
||||
}
|
||||
// In case of input error list contains nil
|
||||
var errs []error
|
||||
for _, e := range errlist {
|
||||
if e != nil {
|
||||
errs = append(errs, e)
|
||||
}
|
||||
}
|
||||
if len(errs) == 0 {
|
||||
return nil
|
||||
}
|
||||
return aggregateErr(errs)
|
||||
}
|
||||
|
||||
// Error is a modified copy of k8s.io/apimachinery/pkg/util/errors.aggregate.Error.
|
||||
// Error is part of the error interface.
|
||||
func (agg aggregateErr) Error() string {
|
||||
if len(agg) == 0 {
|
||||
// This should never happen, really.
|
||||
return ""
|
||||
}
|
||||
if len(agg) == 1 {
|
||||
return agg[0].Error()
|
||||
}
|
||||
result := fmt.Sprintf("[%s", agg[0].Error())
|
||||
for i := 1; i < len(agg); i++ {
|
||||
result += fmt.Sprintf(", %s", agg[i].Error())
|
||||
}
|
||||
result += "]"
|
||||
return result
|
||||
}
|
||||
|
||||
// REMOVED: aggregateErr.Errors
|
||||
|
||||
// errConfigurationInvalid is a modified? copy of k8s.io/kubernetes/pkg/client/unversioned/clientcmd.errConfigurationInvalid.
|
||||
// errConfigurationInvalid is a set of errors indicating the configuration is invalid.
|
||||
type errConfigurationInvalid []error
|
||||
|
@ -470,7 +519,7 @@ func newErrConfigurationInvalid(errs []error) error {
|
|||
|
||||
// Error implements the error interface
|
||||
func (e errConfigurationInvalid) Error() string {
|
||||
return fmt.Sprintf("invalid configuration: %v", utilerrors.NewAggregate(e).Error())
|
||||
return fmt.Sprintf("invalid configuration: %v", newAggregate(e).Error())
|
||||
}
|
||||
|
||||
// clientConfigLoadingRules is a modified copy of k8s.io/kubernetes/pkg/client/unversioned/clientcmd.ClientConfigLoadingRules
|
||||
|
@ -550,7 +599,7 @@ func (rules *clientConfigLoadingRules) Load() (*clientcmdConfig, error) {
|
|||
errlist = append(errlist, err)
|
||||
}
|
||||
|
||||
return config, utilerrors.NewAggregate(errlist)
|
||||
return config, newAggregate(errlist)
|
||||
}
|
||||
|
||||
// loadFromFile is a modified copy of k8s.io/kubernetes/pkg/client/unversioned/clientcmd.LoadFromFile
|
||||
|
@ -799,6 +848,52 @@ func transportNew(config *restConfig) (http.RoundTripper, error) {
|
|||
return rt, nil
|
||||
}
|
||||
|
||||
// newProxierWithNoProxyCIDR is a modified copy of k8s.io/apimachinery/pkg/util/net.NewProxierWithNoProxyCIDR.
|
||||
// NewProxierWithNoProxyCIDR constructs a Proxier function that respects CIDRs in NO_PROXY and delegates if
|
||||
// no matching CIDRs are found
|
||||
func newProxierWithNoProxyCIDR(delegate func(req *http.Request) (*url.URL, error)) func(req *http.Request) (*url.URL, error) {
|
||||
// we wrap the default method, so we only need to perform our check if the NO_PROXY envvar has a CIDR in it
|
||||
noProxyEnv := os.Getenv("NO_PROXY")
|
||||
noProxyRules := strings.Split(noProxyEnv, ",")
|
||||
|
||||
cidrs := []*net.IPNet{}
|
||||
for _, noProxyRule := range noProxyRules {
|
||||
_, cidr, _ := net.ParseCIDR(noProxyRule)
|
||||
if cidr != nil {
|
||||
cidrs = append(cidrs, cidr)
|
||||
}
|
||||
}
|
||||
|
||||
if len(cidrs) == 0 {
|
||||
return delegate
|
||||
}
|
||||
|
||||
return func(req *http.Request) (*url.URL, error) {
|
||||
host := req.URL.Host
|
||||
// for some urls, the Host is already the host, not the host:port
|
||||
if net.ParseIP(host) == nil {
|
||||
var err error
|
||||
host, _, err = net.SplitHostPort(req.URL.Host)
|
||||
if err != nil {
|
||||
return delegate(req)
|
||||
}
|
||||
}
|
||||
|
||||
ip := net.ParseIP(host)
|
||||
if ip == nil {
|
||||
return delegate(req)
|
||||
}
|
||||
|
||||
for _, cidr := range cidrs {
|
||||
if cidr.Contains(ip) {
|
||||
return nil, nil
|
||||
}
|
||||
}
|
||||
|
||||
return delegate(req)
|
||||
}
|
||||
}
|
||||
|
||||
// tlsCacheGet is a modified copy of k8s.io/kubernetes/pkg/client/transport.tlsTransportCache.get.
|
||||
func tlsCacheGet(config *restConfig) (http.RoundTripper, error) {
|
||||
// REMOVED: any actual caching
|
||||
|
@ -813,15 +908,23 @@ func tlsCacheGet(config *restConfig) (http.RoundTripper, error) {
|
|||
return http.DefaultTransport, nil
|
||||
}
|
||||
|
||||
return utilnet.SetTransportDefaults(&http.Transport{ // FIXME??
|
||||
Proxy: http.ProxyFromEnvironment,
|
||||
// REMOVED: Call to k8s.io/apimachinery/pkg/util/net.SetTransportDefaults; instead of the generic machinery and conditionals, hard-coded the result here.
|
||||
t := &http.Transport{
|
||||
// http.ProxyFromEnvironment doesn't respect CIDRs and that makes it impossible to exclude things like pod and service IPs from proxy settings
|
||||
// ProxierWithNoProxyCIDR allows CIDR rules in NO_PROXY
|
||||
Proxy: newProxierWithNoProxyCIDR(http.ProxyFromEnvironment),
|
||||
TLSHandshakeTimeout: 10 * time.Second,
|
||||
TLSClientConfig: tlsConfig,
|
||||
Dial: (&net.Dialer{
|
||||
Timeout: 30 * time.Second,
|
||||
KeepAlive: 30 * time.Second,
|
||||
}).Dial,
|
||||
}), nil
|
||||
}
|
||||
// Allow clients to disable http2 if needed.
|
||||
if s := os.Getenv("DISABLE_HTTP2"); len(s) == 0 {
|
||||
_ = http2.ConfigureTransport(t)
|
||||
}
|
||||
return t, nil
|
||||
}
|
||||
|
||||
// tlsConfigFor is a modified copy of k8s.io/kubernetes/pkg/client/transport.TLSConfigFor.
|
||||
|
|
125
vendor/github.com/containers/image/openshift/openshift_transport_test.go
generated
vendored
Normal file
125
vendor/github.com/containers/image/openshift/openshift_transport_test.go
generated
vendored
Normal file
|
@ -0,0 +1,125 @@
|
|||
package openshift
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/containers/image/docker/reference"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
const (
|
||||
sha256digestHex = "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"
|
||||
sha256digest = "@sha256:" + sha256digestHex
|
||||
)
|
||||
|
||||
func TestTransportName(t *testing.T) {
|
||||
assert.Equal(t, "atomic", Transport.Name())
|
||||
}
|
||||
|
||||
func TestTransportValidatePolicyConfigurationScope(t *testing.T) {
|
||||
for _, scope := range []string{
|
||||
"registry.example.com/ns/stream" + sha256digest,
|
||||
"registry.example.com/ns/stream:notlatest",
|
||||
"registry.example.com/ns/stream",
|
||||
"registry.example.com/ns",
|
||||
"registry.example.com",
|
||||
} {
|
||||
err := Transport.ValidatePolicyConfigurationScope(scope)
|
||||
assert.NoError(t, err, scope)
|
||||
}
|
||||
|
||||
for _, scope := range []string{
|
||||
"registry.example.com/too/deep/hierarchy",
|
||||
"registry.example.com/ns/stream:tag1:tag2",
|
||||
} {
|
||||
err := Transport.ValidatePolicyConfigurationScope(scope)
|
||||
assert.Error(t, err, scope)
|
||||
}
|
||||
}
|
||||
|
||||
func TestNewReference(t *testing.T) {
|
||||
// too many ns
|
||||
r, err := reference.ParseNamed("registry.example.com/ns1/ns2/ns3/stream:tag")
|
||||
require.NoError(t, err)
|
||||
tagged, ok := r.(reference.NamedTagged)
|
||||
require.True(t, ok)
|
||||
_, err = NewReference(tagged)
|
||||
assert.Error(t, err)
|
||||
|
||||
r, err = reference.ParseNamed("registry.example.com/ns/stream:tag")
|
||||
require.NoError(t, err)
|
||||
tagged, ok = r.(reference.NamedTagged)
|
||||
require.True(t, ok)
|
||||
_, err = NewReference(tagged)
|
||||
assert.NoError(t, err)
|
||||
}
|
||||
|
||||
func TestParseReference(t *testing.T) {
|
||||
// Success
|
||||
ref, err := ParseReference("registry.example.com:8443/ns/stream:notlatest")
|
||||
require.NoError(t, err)
|
||||
osRef, ok := ref.(openshiftReference)
|
||||
require.True(t, ok)
|
||||
assert.Equal(t, "ns", osRef.namespace)
|
||||
assert.Equal(t, "stream", osRef.stream)
|
||||
assert.Equal(t, "notlatest", osRef.dockerReference.Tag())
|
||||
assert.Equal(t, "registry.example.com:8443", osRef.dockerReference.Hostname())
|
||||
|
||||
// Components creating an invalid Docker Reference name
|
||||
_, err = ParseReference("registry.example.com/ns/UPPERCASEISINVALID:notlatest")
|
||||
assert.Error(t, err)
|
||||
|
||||
_, err = ParseReference("registry.example.com/ns/stream:invalid!tag@value=")
|
||||
assert.Error(t, err)
|
||||
}
|
||||
|
||||
func TestReferenceDockerReference(t *testing.T) {
|
||||
ref, err := ParseReference("registry.example.com:8443/ns/stream:notlatest")
|
||||
require.NoError(t, err)
|
||||
dockerRef := ref.DockerReference()
|
||||
require.NotNil(t, dockerRef)
|
||||
assert.Equal(t, "registry.example.com:8443/ns/stream:notlatest", dockerRef.String())
|
||||
}
|
||||
|
||||
func TestReferenceTransport(t *testing.T) {
|
||||
ref, err := ParseReference("registry.example.com:8443/ns/stream:notlatest")
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, Transport, ref.Transport())
|
||||
}
|
||||
|
||||
func TestReferenceStringWithinTransport(t *testing.T) {
|
||||
ref, err := ParseReference("registry.example.com:8443/ns/stream:notlatest")
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, "registry.example.com:8443/ns/stream:notlatest", ref.StringWithinTransport())
|
||||
// We should do one more round to verify that the output can be parsed, to an equal value,
|
||||
// but that is untested because it depends on per-user configuration.
|
||||
}
|
||||
|
||||
func TestReferencePolicyConfigurationIdentity(t *testing.T) {
|
||||
// Just a smoke test, the substance is tested in policyconfiguration.TestDockerReference.
|
||||
ref, err := ParseReference("registry.example.com:8443/ns/stream:notlatest")
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, "registry.example.com:8443/ns/stream:notlatest", ref.PolicyConfigurationIdentity())
|
||||
}
|
||||
|
||||
func TestReferencePolicyConfigurationNamespaces(t *testing.T) {
|
||||
// Just a smoke test, the substance is tested in policyconfiguration.TestDockerReference.
|
||||
ref, err := ParseReference("registry.example.com:8443/ns/stream:notlatest")
|
||||
require.NoError(t, err)
|
||||
assert.Equal(t, []string{
|
||||
"registry.example.com:8443/ns/stream",
|
||||
"registry.example.com:8443/ns",
|
||||
"registry.example.com:8443",
|
||||
}, ref.PolicyConfigurationNamespaces())
|
||||
}
|
||||
|
||||
// openshiftReference.NewImage, openshiftReference.NewImageSource, openshiftReference.NewImageDestination untested because they depend
|
||||
// on per-user configuration when initializing httpClient.
|
||||
|
||||
func TestReferenceDeleteImage(t *testing.T) {
|
||||
ref, err := ParseReference("registry.example.com:8443/ns/stream:notlatest")
|
||||
require.NoError(t, err)
|
||||
err = ref.DeleteImage(nil)
|
||||
assert.Error(t, err)
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue