mirror of https://github.com/k3s-io/k3s
Merge pull request #40106 from deads2k/client-09-switch
Automatic merge from submit-queue make client-go more authoritative Builds on https://github.com/kubernetes/kubernetes/pull/40103 This moves a few more support package to client-go for origination. 1. restclient/watch - nodep 1. util/flowcontrol - used interface 1. util/integer, util/clock - used in controllers and in support of util/flowcontrolpull/6/head
commit
ac857a5ade
|
@ -18,9 +18,9 @@ go_library(
|
||||||
"//cmd/kube-aggregator/pkg/client/clientset_generated/clientset/typed/apiregistration/v1alpha1:go_default_library",
|
"//cmd/kube-aggregator/pkg/client/clientset_generated/clientset/typed/apiregistration/v1alpha1:go_default_library",
|
||||||
"//pkg/client/restclient:go_default_library",
|
"//pkg/client/restclient:go_default_library",
|
||||||
"//pkg/client/typed/discovery:go_default_library",
|
"//pkg/client/typed/discovery:go_default_library",
|
||||||
"//pkg/util/flowcontrol:go_default_library",
|
|
||||||
"//plugin/pkg/client/auth:go_default_library",
|
"//plugin/pkg/client/auth:go_default_library",
|
||||||
"//vendor:github.com/golang/glog",
|
"//vendor:github.com/golang/glog",
|
||||||
|
"//vendor:k8s.io/client-go/pkg/util/flowcontrol",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -18,10 +18,10 @@ package clientset
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
|
"k8s.io/client-go/pkg/util/flowcontrol"
|
||||||
v1alpha1apiregistration "k8s.io/kubernetes/cmd/kube-aggregator/pkg/client/clientset_generated/clientset/typed/apiregistration/v1alpha1"
|
v1alpha1apiregistration "k8s.io/kubernetes/cmd/kube-aggregator/pkg/client/clientset_generated/clientset/typed/apiregistration/v1alpha1"
|
||||||
restclient "k8s.io/kubernetes/pkg/client/restclient"
|
restclient "k8s.io/kubernetes/pkg/client/restclient"
|
||||||
discovery "k8s.io/kubernetes/pkg/client/typed/discovery"
|
discovery "k8s.io/kubernetes/pkg/client/typed/discovery"
|
||||||
"k8s.io/kubernetes/pkg/util/flowcontrol"
|
|
||||||
_ "k8s.io/kubernetes/plugin/pkg/client/auth"
|
_ "k8s.io/kubernetes/plugin/pkg/client/auth"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -18,9 +18,9 @@ go_library(
|
||||||
"//cmd/kube-aggregator/pkg/client/clientset_generated/internalclientset/typed/apiregistration/internalversion:go_default_library",
|
"//cmd/kube-aggregator/pkg/client/clientset_generated/internalclientset/typed/apiregistration/internalversion:go_default_library",
|
||||||
"//pkg/client/restclient:go_default_library",
|
"//pkg/client/restclient:go_default_library",
|
||||||
"//pkg/client/typed/discovery:go_default_library",
|
"//pkg/client/typed/discovery:go_default_library",
|
||||||
"//pkg/util/flowcontrol:go_default_library",
|
|
||||||
"//plugin/pkg/client/auth:go_default_library",
|
"//plugin/pkg/client/auth:go_default_library",
|
||||||
"//vendor:github.com/golang/glog",
|
"//vendor:github.com/golang/glog",
|
||||||
|
"//vendor:k8s.io/client-go/pkg/util/flowcontrol",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -18,10 +18,10 @@ package internalclientset
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
|
"k8s.io/client-go/pkg/util/flowcontrol"
|
||||||
internalversionapiregistration "k8s.io/kubernetes/cmd/kube-aggregator/pkg/client/clientset_generated/internalclientset/typed/apiregistration/internalversion"
|
internalversionapiregistration "k8s.io/kubernetes/cmd/kube-aggregator/pkg/client/clientset_generated/internalclientset/typed/apiregistration/internalversion"
|
||||||
restclient "k8s.io/kubernetes/pkg/client/restclient"
|
restclient "k8s.io/kubernetes/pkg/client/restclient"
|
||||||
discovery "k8s.io/kubernetes/pkg/client/typed/discovery"
|
discovery "k8s.io/kubernetes/pkg/client/typed/discovery"
|
||||||
"k8s.io/kubernetes/pkg/util/flowcontrol"
|
|
||||||
_ "k8s.io/kubernetes/plugin/pkg/client/auth"
|
_ "k8s.io/kubernetes/plugin/pkg/client/auth"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,6 @@ go_library(
|
||||||
"//pkg/client/clientset_generated/internalclientset/typed/core/internalversion:go_default_library",
|
"//pkg/client/clientset_generated/internalclientset/typed/core/internalversion:go_default_library",
|
||||||
"//pkg/client/record:go_default_library",
|
"//pkg/client/record:go_default_library",
|
||||||
"//pkg/client/unversioned/clientcmd:go_default_library",
|
"//pkg/client/unversioned/clientcmd:go_default_library",
|
||||||
"//pkg/client/unversioned/clientcmd/api:go_default_library",
|
|
||||||
"//pkg/proxy:go_default_library",
|
"//pkg/proxy:go_default_library",
|
||||||
"//pkg/proxy/config:go_default_library",
|
"//pkg/proxy/config:go_default_library",
|
||||||
"//pkg/proxy/iptables:go_default_library",
|
"//pkg/proxy/iptables:go_default_library",
|
||||||
|
@ -46,6 +45,7 @@ go_library(
|
||||||
"//vendor:k8s.io/apimachinery/pkg/types",
|
"//vendor:k8s.io/apimachinery/pkg/types",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/util/net",
|
"//vendor:k8s.io/apimachinery/pkg/util/net",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/util/wait",
|
"//vendor:k8s.io/apimachinery/pkg/util/wait",
|
||||||
|
"//vendor:k8s.io/client-go/tools/clientcmd/api",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -32,6 +32,7 @@ import (
|
||||||
"k8s.io/apimachinery/pkg/types"
|
"k8s.io/apimachinery/pkg/types"
|
||||||
utilnet "k8s.io/apimachinery/pkg/util/net"
|
utilnet "k8s.io/apimachinery/pkg/util/net"
|
||||||
"k8s.io/apimachinery/pkg/util/wait"
|
"k8s.io/apimachinery/pkg/util/wait"
|
||||||
|
clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
|
||||||
"k8s.io/kubernetes/cmd/kube-proxy/app/options"
|
"k8s.io/kubernetes/cmd/kube-proxy/app/options"
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
|
@ -39,7 +40,6 @@ import (
|
||||||
unversionedcore "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion"
|
unversionedcore "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion"
|
||||||
"k8s.io/kubernetes/pkg/client/record"
|
"k8s.io/kubernetes/pkg/client/record"
|
||||||
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
|
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
|
||||||
clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
|
|
||||||
"k8s.io/kubernetes/pkg/proxy"
|
"k8s.io/kubernetes/pkg/proxy"
|
||||||
proxyconfig "k8s.io/kubernetes/pkg/proxy/config"
|
proxyconfig "k8s.io/kubernetes/pkg/proxy/config"
|
||||||
"k8s.io/kubernetes/pkg/proxy/iptables"
|
"k8s.io/kubernetes/pkg/proxy/iptables"
|
||||||
|
|
|
@ -23,8 +23,8 @@ go_library(
|
||||||
"//cmd/kubeadm/app/node:go_default_library",
|
"//cmd/kubeadm/app/node:go_default_library",
|
||||||
"//cmd/kubeadm/app/util:go_default_library",
|
"//cmd/kubeadm/app/util:go_default_library",
|
||||||
"//pkg/client/unversioned/clientcmd:go_default_library",
|
"//pkg/client/unversioned/clientcmd:go_default_library",
|
||||||
"//pkg/client/unversioned/clientcmd/api:go_default_library",
|
|
||||||
"//vendor:github.com/spf13/pflag",
|
"//vendor:github.com/spf13/pflag",
|
||||||
|
"//vendor:k8s.io/client-go/tools/clientcmd/api",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -21,11 +21,11 @@ import (
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
|
clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
|
||||||
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
|
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
|
||||||
kubenode "k8s.io/kubernetes/cmd/kubeadm/app/node"
|
kubenode "k8s.io/kubernetes/cmd/kubeadm/app/node"
|
||||||
kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util"
|
kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util"
|
||||||
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
|
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
|
||||||
clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// For identifies and executes the desired discovery mechanism.
|
// For identifies and executes the desired discovery mechanism.
|
||||||
|
|
|
@ -30,7 +30,6 @@ go_library(
|
||||||
"//pkg/apis/extensions/v1beta1:go_default_library",
|
"//pkg/apis/extensions/v1beta1:go_default_library",
|
||||||
"//pkg/client/clientset_generated/clientset:go_default_library",
|
"//pkg/client/clientset_generated/clientset:go_default_library",
|
||||||
"//pkg/client/unversioned/clientcmd:go_default_library",
|
"//pkg/client/unversioned/clientcmd:go_default_library",
|
||||||
"//pkg/client/unversioned/clientcmd/api:go_default_library",
|
|
||||||
"//pkg/kubeapiserver/authorizer:go_default_library",
|
"//pkg/kubeapiserver/authorizer:go_default_library",
|
||||||
"//pkg/kubectl/cmd/util:go_default_library",
|
"//pkg/kubectl/cmd/util:go_default_library",
|
||||||
"//pkg/registry/core/service/ipallocator:go_default_library",
|
"//pkg/registry/core/service/ipallocator:go_default_library",
|
||||||
|
@ -41,6 +40,7 @@ go_library(
|
||||||
"//vendor:k8s.io/apimachinery/pkg/api/errors",
|
"//vendor:k8s.io/apimachinery/pkg/api/errors",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
|
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/util/wait",
|
"//vendor:k8s.io/apimachinery/pkg/util/wait",
|
||||||
|
"//vendor:k8s.io/client-go/tools/clientcmd/api",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -25,13 +25,13 @@ import (
|
||||||
apierrs "k8s.io/apimachinery/pkg/api/errors"
|
apierrs "k8s.io/apimachinery/pkg/api/errors"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/util/wait"
|
"k8s.io/apimachinery/pkg/util/wait"
|
||||||
|
clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
|
||||||
"k8s.io/kubernetes/cmd/kubeadm/app/images"
|
"k8s.io/kubernetes/cmd/kubeadm/app/images"
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
extensions "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
|
extensions "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
|
||||||
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
||||||
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
|
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
|
||||||
clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const apiCallRetryInterval = 500 * time.Millisecond
|
const apiCallRetryInterval = 500 * time.Millisecond
|
||||||
|
|
|
@ -23,7 +23,6 @@ go_library(
|
||||||
"//pkg/apis/certificates:go_default_library",
|
"//pkg/apis/certificates:go_default_library",
|
||||||
"//pkg/client/clientset_generated/clientset:go_default_library",
|
"//pkg/client/clientset_generated/clientset:go_default_library",
|
||||||
"//pkg/client/unversioned/clientcmd:go_default_library",
|
"//pkg/client/unversioned/clientcmd:go_default_library",
|
||||||
"//pkg/client/unversioned/clientcmd/api:go_default_library",
|
|
||||||
"//pkg/kubelet/util/csr:go_default_library",
|
"//pkg/kubelet/util/csr:go_default_library",
|
||||||
"//pkg/util/cert:go_default_library",
|
"//pkg/util/cert:go_default_library",
|
||||||
"//vendor:github.com/square/go-jose",
|
"//vendor:github.com/square/go-jose",
|
||||||
|
@ -31,6 +30,7 @@ go_library(
|
||||||
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
|
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/types",
|
"//vendor:k8s.io/apimachinery/pkg/types",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/util/wait",
|
"//vendor:k8s.io/apimachinery/pkg/util/wait",
|
||||||
|
"//vendor:k8s.io/client-go/tools/clientcmd/api",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -26,13 +26,13 @@ import (
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/types"
|
"k8s.io/apimachinery/pkg/types"
|
||||||
"k8s.io/apimachinery/pkg/util/wait"
|
"k8s.io/apimachinery/pkg/util/wait"
|
||||||
|
clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
|
||||||
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
|
kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
|
||||||
kubeconfigphase "k8s.io/kubernetes/cmd/kubeadm/app/phases/kubeconfig"
|
kubeconfigphase "k8s.io/kubernetes/cmd/kubeadm/app/phases/kubeconfig"
|
||||||
kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util"
|
kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util"
|
||||||
"k8s.io/kubernetes/pkg/apis/certificates"
|
"k8s.io/kubernetes/pkg/apis/certificates"
|
||||||
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
||||||
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
|
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
|
||||||
clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// retryTimeout between the subsequent attempts to connect
|
// retryTimeout between the subsequent attempts to connect
|
||||||
|
|
|
@ -21,9 +21,9 @@ import (
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/types"
|
"k8s.io/apimachinery/pkg/types"
|
||||||
|
clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
|
||||||
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
||||||
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
|
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
|
||||||
clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
|
|
||||||
"k8s.io/kubernetes/pkg/kubelet/util/csr"
|
"k8s.io/kubernetes/pkg/kubelet/util/csr"
|
||||||
certutil "k8s.io/kubernetes/pkg/util/cert"
|
certutil "k8s.io/kubernetes/pkg/util/cert"
|
||||||
)
|
)
|
||||||
|
|
|
@ -26,8 +26,8 @@ go_library(
|
||||||
deps = [
|
deps = [
|
||||||
"//cmd/kubeadm/app/phases/certs:go_default_library",
|
"//cmd/kubeadm/app/phases/certs:go_default_library",
|
||||||
"//pkg/client/unversioned/clientcmd:go_default_library",
|
"//pkg/client/unversioned/clientcmd:go_default_library",
|
||||||
"//pkg/client/unversioned/clientcmd/api:go_default_library",
|
|
||||||
"//pkg/util/cert:go_default_library",
|
"//pkg/util/cert:go_default_library",
|
||||||
|
"//vendor:k8s.io/client-go/tools/clientcmd/api",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -24,9 +24,9 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"path"
|
"path"
|
||||||
|
|
||||||
|
clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
|
||||||
certphase "k8s.io/kubernetes/cmd/kubeadm/app/phases/certs"
|
certphase "k8s.io/kubernetes/cmd/kubeadm/app/phases/certs"
|
||||||
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
|
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
|
||||||
clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
|
|
||||||
certutil "k8s.io/kubernetes/pkg/util/cert"
|
certutil "k8s.io/kubernetes/pkg/util/cert"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -50,7 +50,6 @@ go_library(
|
||||||
"//pkg/client/restclient:go_default_library",
|
"//pkg/client/restclient:go_default_library",
|
||||||
"//pkg/client/unversioned/auth:go_default_library",
|
"//pkg/client/unversioned/auth:go_default_library",
|
||||||
"//pkg/client/unversioned/clientcmd:go_default_library",
|
"//pkg/client/unversioned/clientcmd:go_default_library",
|
||||||
"//pkg/client/unversioned/clientcmd/api:go_default_library",
|
|
||||||
"//pkg/cloudprovider:go_default_library",
|
"//pkg/cloudprovider:go_default_library",
|
||||||
"//pkg/cloudprovider/providers:go_default_library",
|
"//pkg/cloudprovider/providers:go_default_library",
|
||||||
"//pkg/credentialprovider:go_default_library",
|
"//pkg/credentialprovider:go_default_library",
|
||||||
|
|
|
@ -26,10 +26,10 @@ import (
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/types"
|
"k8s.io/apimachinery/pkg/types"
|
||||||
|
clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
|
||||||
unversionedcertificates "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/certificates/v1alpha1"
|
unversionedcertificates "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/certificates/v1alpha1"
|
||||||
"k8s.io/kubernetes/pkg/client/restclient"
|
"k8s.io/kubernetes/pkg/client/restclient"
|
||||||
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
|
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
|
||||||
clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
|
|
||||||
"k8s.io/kubernetes/pkg/kubelet/util/csr"
|
"k8s.io/kubernetes/pkg/kubelet/util/csr"
|
||||||
certutil "k8s.io/kubernetes/pkg/util/cert"
|
certutil "k8s.io/kubernetes/pkg/util/cert"
|
||||||
)
|
)
|
||||||
|
|
|
@ -44,6 +44,7 @@ import (
|
||||||
"k8s.io/apimachinery/pkg/types"
|
"k8s.io/apimachinery/pkg/types"
|
||||||
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
|
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
|
||||||
"k8s.io/apimachinery/pkg/util/wait"
|
"k8s.io/apimachinery/pkg/util/wait"
|
||||||
|
clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
|
||||||
"k8s.io/kubernetes/cmd/kubelet/app/options"
|
"k8s.io/kubernetes/cmd/kubelet/app/options"
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
|
@ -57,7 +58,6 @@ import (
|
||||||
"k8s.io/kubernetes/pkg/client/restclient"
|
"k8s.io/kubernetes/pkg/client/restclient"
|
||||||
clientauth "k8s.io/kubernetes/pkg/client/unversioned/auth"
|
clientauth "k8s.io/kubernetes/pkg/client/unversioned/auth"
|
||||||
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
|
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
|
||||||
clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
|
|
||||||
"k8s.io/kubernetes/pkg/cloudprovider"
|
"k8s.io/kubernetes/pkg/cloudprovider"
|
||||||
"k8s.io/kubernetes/pkg/credentialprovider"
|
"k8s.io/kubernetes/pkg/credentialprovider"
|
||||||
"k8s.io/kubernetes/pkg/kubelet"
|
"k8s.io/kubernetes/pkg/kubelet"
|
||||||
|
|
|
@ -62,7 +62,7 @@ func (g *genClientset) Imports(c *generator.Context) (imports []string) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
imports = append(imports, "github.com/golang/glog")
|
imports = append(imports, "github.com/golang/glog")
|
||||||
imports = append(imports, "k8s.io/kubernetes/pkg/util/flowcontrol")
|
imports = append(imports, "k8s.io/client-go/pkg/util/flowcontrol")
|
||||||
// import solely to initialize client auth plugins.
|
// import solely to initialize client auth plugins.
|
||||||
imports = append(imports, "_ \"k8s.io/kubernetes/plugin/pkg/client/auth\"")
|
imports = append(imports, "_ \"k8s.io/kubernetes/plugin/pkg/client/auth\"")
|
||||||
return
|
return
|
||||||
|
|
|
@ -19,9 +19,9 @@ go_library(
|
||||||
"//cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup/internalversion:go_default_library",
|
"//cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup/internalversion:go_default_library",
|
||||||
"//pkg/client/restclient:go_default_library",
|
"//pkg/client/restclient:go_default_library",
|
||||||
"//pkg/client/typed/discovery:go_default_library",
|
"//pkg/client/typed/discovery:go_default_library",
|
||||||
"//pkg/util/flowcontrol:go_default_library",
|
|
||||||
"//plugin/pkg/client/auth:go_default_library",
|
"//plugin/pkg/client/auth:go_default_library",
|
||||||
"//vendor:github.com/golang/glog",
|
"//vendor:github.com/golang/glog",
|
||||||
|
"//vendor:k8s.io/client-go/pkg/util/flowcontrol",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ go_test(
|
||||||
tags = ["automanaged"],
|
tags = ["automanaged"],
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/client/restclient:go_default_library",
|
"//pkg/client/restclient:go_default_library",
|
||||||
"//pkg/util/flowcontrol:go_default_library",
|
"//vendor:k8s.io/client-go/pkg/util/flowcontrol",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -18,10 +18,10 @@ package test_internalclientset
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
|
"k8s.io/client-go/pkg/util/flowcontrol"
|
||||||
internalversiontestgroup "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup/internalversion"
|
internalversiontestgroup "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup/internalversion"
|
||||||
restclient "k8s.io/kubernetes/pkg/client/restclient"
|
restclient "k8s.io/kubernetes/pkg/client/restclient"
|
||||||
discovery "k8s.io/kubernetes/pkg/client/typed/discovery"
|
discovery "k8s.io/kubernetes/pkg/client/typed/discovery"
|
||||||
"k8s.io/kubernetes/pkg/util/flowcontrol"
|
|
||||||
_ "k8s.io/kubernetes/plugin/pkg/client/auth"
|
_ "k8s.io/kubernetes/plugin/pkg/client/auth"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -19,8 +19,8 @@ package test_internalclientset
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"k8s.io/client-go/pkg/util/flowcontrol"
|
||||||
restclient "k8s.io/kubernetes/pkg/client/restclient"
|
restclient "k8s.io/kubernetes/pkg/client/restclient"
|
||||||
"k8s.io/kubernetes/pkg/util/flowcontrol"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func ClientSetRateLimiterTest(t *testing.T) {
|
func ClientSetRateLimiterTest(t *testing.T) {
|
||||||
|
|
|
@ -23,9 +23,9 @@ go_library(
|
||||||
"//federation/client/clientset_generated/federation_clientset/typed/federation/v1beta1:go_default_library",
|
"//federation/client/clientset_generated/federation_clientset/typed/federation/v1beta1:go_default_library",
|
||||||
"//pkg/client/restclient:go_default_library",
|
"//pkg/client/restclient:go_default_library",
|
||||||
"//pkg/client/typed/discovery:go_default_library",
|
"//pkg/client/typed/discovery:go_default_library",
|
||||||
"//pkg/util/flowcontrol:go_default_library",
|
|
||||||
"//plugin/pkg/client/auth:go_default_library",
|
"//plugin/pkg/client/auth:go_default_library",
|
||||||
"//vendor:github.com/golang/glog",
|
"//vendor:github.com/golang/glog",
|
||||||
|
"//vendor:k8s.io/client-go/pkg/util/flowcontrol",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -18,13 +18,13 @@ package federation_clientset
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
|
"k8s.io/client-go/pkg/util/flowcontrol"
|
||||||
v1batch "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset/typed/batch/v1"
|
v1batch "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset/typed/batch/v1"
|
||||||
v1core "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset/typed/core/v1"
|
v1core "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset/typed/core/v1"
|
||||||
v1beta1extensions "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset/typed/extensions/v1beta1"
|
v1beta1extensions "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset/typed/extensions/v1beta1"
|
||||||
v1beta1federation "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset/typed/federation/v1beta1"
|
v1beta1federation "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset/typed/federation/v1beta1"
|
||||||
restclient "k8s.io/kubernetes/pkg/client/restclient"
|
restclient "k8s.io/kubernetes/pkg/client/restclient"
|
||||||
discovery "k8s.io/kubernetes/pkg/client/typed/discovery"
|
discovery "k8s.io/kubernetes/pkg/client/typed/discovery"
|
||||||
"k8s.io/kubernetes/pkg/util/flowcontrol"
|
|
||||||
_ "k8s.io/kubernetes/plugin/pkg/client/auth"
|
_ "k8s.io/kubernetes/plugin/pkg/client/auth"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -23,9 +23,9 @@ go_library(
|
||||||
"//federation/client/clientset_generated/federation_internalclientset/typed/federation/internalversion:go_default_library",
|
"//federation/client/clientset_generated/federation_internalclientset/typed/federation/internalversion:go_default_library",
|
||||||
"//pkg/client/restclient:go_default_library",
|
"//pkg/client/restclient:go_default_library",
|
||||||
"//pkg/client/typed/discovery:go_default_library",
|
"//pkg/client/typed/discovery:go_default_library",
|
||||||
"//pkg/util/flowcontrol:go_default_library",
|
|
||||||
"//plugin/pkg/client/auth:go_default_library",
|
"//plugin/pkg/client/auth:go_default_library",
|
||||||
"//vendor:github.com/golang/glog",
|
"//vendor:github.com/golang/glog",
|
||||||
|
"//vendor:k8s.io/client-go/pkg/util/flowcontrol",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -18,13 +18,13 @@ package federation_internalclientset
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
|
"k8s.io/client-go/pkg/util/flowcontrol"
|
||||||
internalversionbatch "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/batch/internalversion"
|
internalversionbatch "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/batch/internalversion"
|
||||||
internalversioncore "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/core/internalversion"
|
internalversioncore "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/core/internalversion"
|
||||||
internalversionextensions "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/extensions/internalversion"
|
internalversionextensions "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/extensions/internalversion"
|
||||||
internalversionfederation "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/federation/internalversion"
|
internalversionfederation "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/federation/internalversion"
|
||||||
restclient "k8s.io/kubernetes/pkg/client/restclient"
|
restclient "k8s.io/kubernetes/pkg/client/restclient"
|
||||||
discovery "k8s.io/kubernetes/pkg/client/typed/discovery"
|
discovery "k8s.io/kubernetes/pkg/client/typed/discovery"
|
||||||
"k8s.io/kubernetes/pkg/util/flowcontrol"
|
|
||||||
_ "k8s.io/kubernetes/plugin/pkg/client/auth"
|
_ "k8s.io/kubernetes/plugin/pkg/client/auth"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -51,9 +51,9 @@ go_test(
|
||||||
"//pkg/api/v1:go_default_library",
|
"//pkg/api/v1:go_default_library",
|
||||||
"//pkg/client/restclient:go_default_library",
|
"//pkg/client/restclient:go_default_library",
|
||||||
"//pkg/client/unversioned/clientcmd:go_default_library",
|
"//pkg/client/unversioned/clientcmd:go_default_library",
|
||||||
"//pkg/client/unversioned/clientcmd/api:go_default_library",
|
|
||||||
"//pkg/util/uuid:go_default_library",
|
"//pkg/util/uuid:go_default_library",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
|
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
|
||||||
|
"//vendor:k8s.io/client-go/tools/clientcmd/api",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,7 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
|
||||||
federationv1beta1 "k8s.io/kubernetes/federation/apis/federation/v1beta1"
|
federationv1beta1 "k8s.io/kubernetes/federation/apis/federation/v1beta1"
|
||||||
federationclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset"
|
federationclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset"
|
||||||
controllerutil "k8s.io/kubernetes/federation/pkg/federation-controller/util"
|
controllerutil "k8s.io/kubernetes/federation/pkg/federation-controller/util"
|
||||||
|
@ -31,7 +32,6 @@ import (
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
"k8s.io/kubernetes/pkg/client/restclient"
|
"k8s.io/kubernetes/pkg/client/restclient"
|
||||||
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
|
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
|
||||||
clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
|
|
||||||
"k8s.io/kubernetes/pkg/util/uuid"
|
"k8s.io/kubernetes/pkg/util/uuid"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -23,11 +23,11 @@ go_library(
|
||||||
"//pkg/client/clientset_generated/clientset:go_default_library",
|
"//pkg/client/clientset_generated/clientset:go_default_library",
|
||||||
"//pkg/client/record:go_default_library",
|
"//pkg/client/record:go_default_library",
|
||||||
"//pkg/controller:go_default_library",
|
"//pkg/controller:go_default_library",
|
||||||
"//pkg/util/flowcontrol:go_default_library",
|
|
||||||
"//vendor:github.com/golang/glog",
|
"//vendor:github.com/golang/glog",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/runtime",
|
"//vendor:k8s.io/apimachinery/pkg/runtime",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/types",
|
"//vendor:k8s.io/apimachinery/pkg/types",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/watch",
|
"//vendor:k8s.io/apimachinery/pkg/watch",
|
||||||
|
"//vendor:k8s.io/client-go/pkg/util/flowcontrol",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,7 @@ import (
|
||||||
pkgruntime "k8s.io/apimachinery/pkg/runtime"
|
pkgruntime "k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/types"
|
"k8s.io/apimachinery/pkg/types"
|
||||||
"k8s.io/apimachinery/pkg/watch"
|
"k8s.io/apimachinery/pkg/watch"
|
||||||
|
"k8s.io/client-go/pkg/util/flowcontrol"
|
||||||
federationapi "k8s.io/kubernetes/federation/apis/federation/v1beta1"
|
federationapi "k8s.io/kubernetes/federation/apis/federation/v1beta1"
|
||||||
federationclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset"
|
federationclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset"
|
||||||
"k8s.io/kubernetes/federation/pkg/federation-controller/util"
|
"k8s.io/kubernetes/federation/pkg/federation-controller/util"
|
||||||
|
@ -32,7 +33,6 @@ import (
|
||||||
kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
||||||
"k8s.io/kubernetes/pkg/client/record"
|
"k8s.io/kubernetes/pkg/client/record"
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
"k8s.io/kubernetes/pkg/util/flowcontrol"
|
|
||||||
|
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
)
|
)
|
||||||
|
|
|
@ -25,12 +25,12 @@ go_library(
|
||||||
"//pkg/client/clientset_generated/clientset:go_default_library",
|
"//pkg/client/clientset_generated/clientset:go_default_library",
|
||||||
"//pkg/client/record:go_default_library",
|
"//pkg/client/record:go_default_library",
|
||||||
"//pkg/controller:go_default_library",
|
"//pkg/controller:go_default_library",
|
||||||
"//pkg/util/flowcontrol:go_default_library",
|
|
||||||
"//vendor:github.com/golang/glog",
|
"//vendor:github.com/golang/glog",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/api/errors",
|
"//vendor:k8s.io/apimachinery/pkg/api/errors",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/runtime",
|
"//vendor:k8s.io/apimachinery/pkg/runtime",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/types",
|
"//vendor:k8s.io/apimachinery/pkg/types",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/watch",
|
"//vendor:k8s.io/apimachinery/pkg/watch",
|
||||||
|
"//vendor:k8s.io/client-go/pkg/util/flowcontrol",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,7 @@ import (
|
||||||
pkgruntime "k8s.io/apimachinery/pkg/runtime"
|
pkgruntime "k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/types"
|
"k8s.io/apimachinery/pkg/types"
|
||||||
"k8s.io/apimachinery/pkg/watch"
|
"k8s.io/apimachinery/pkg/watch"
|
||||||
|
"k8s.io/client-go/pkg/util/flowcontrol"
|
||||||
federationapi "k8s.io/kubernetes/federation/apis/federation/v1beta1"
|
federationapi "k8s.io/kubernetes/federation/apis/federation/v1beta1"
|
||||||
federationclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset"
|
federationclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset"
|
||||||
"k8s.io/kubernetes/federation/pkg/federation-controller/util"
|
"k8s.io/kubernetes/federation/pkg/federation-controller/util"
|
||||||
|
@ -37,7 +38,6 @@ import (
|
||||||
kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
||||||
"k8s.io/kubernetes/pkg/client/record"
|
"k8s.io/kubernetes/pkg/client/record"
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
"k8s.io/kubernetes/pkg/util/flowcontrol"
|
|
||||||
|
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
)
|
)
|
||||||
|
|
|
@ -28,13 +28,13 @@ go_library(
|
||||||
"//pkg/client/clientset_generated/clientset:go_default_library",
|
"//pkg/client/clientset_generated/clientset:go_default_library",
|
||||||
"//pkg/client/record:go_default_library",
|
"//pkg/client/record:go_default_library",
|
||||||
"//pkg/controller:go_default_library",
|
"//pkg/controller:go_default_library",
|
||||||
"//pkg/util/flowcontrol:go_default_library",
|
|
||||||
"//pkg/util/workqueue:go_default_library",
|
"//pkg/util/workqueue:go_default_library",
|
||||||
"//vendor:github.com/golang/glog",
|
"//vendor:github.com/golang/glog",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/api/errors",
|
"//vendor:k8s.io/apimachinery/pkg/api/errors",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/runtime",
|
"//vendor:k8s.io/apimachinery/pkg/runtime",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/util/wait",
|
"//vendor:k8s.io/apimachinery/pkg/util/wait",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/watch",
|
"//vendor:k8s.io/apimachinery/pkg/watch",
|
||||||
|
"//vendor:k8s.io/client-go/pkg/util/flowcontrol",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -29,6 +29,7 @@ import (
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/util/wait"
|
"k8s.io/apimachinery/pkg/util/wait"
|
||||||
"k8s.io/apimachinery/pkg/watch"
|
"k8s.io/apimachinery/pkg/watch"
|
||||||
|
"k8s.io/client-go/pkg/util/flowcontrol"
|
||||||
fed "k8s.io/kubernetes/federation/apis/federation"
|
fed "k8s.io/kubernetes/federation/apis/federation"
|
||||||
fedv1 "k8s.io/kubernetes/federation/apis/federation/v1beta1"
|
fedv1 "k8s.io/kubernetes/federation/apis/federation/v1beta1"
|
||||||
fedclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset"
|
fedclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset"
|
||||||
|
@ -44,7 +45,6 @@ import (
|
||||||
kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
||||||
"k8s.io/kubernetes/pkg/client/record"
|
"k8s.io/kubernetes/pkg/client/record"
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
"k8s.io/kubernetes/pkg/util/flowcontrol"
|
|
||||||
"k8s.io/kubernetes/pkg/util/workqueue"
|
"k8s.io/kubernetes/pkg/util/workqueue"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,6 @@ go_library(
|
||||||
"//pkg/client/clientset_generated/clientset:go_default_library",
|
"//pkg/client/clientset_generated/clientset:go_default_library",
|
||||||
"//pkg/client/record:go_default_library",
|
"//pkg/client/record:go_default_library",
|
||||||
"//pkg/controller:go_default_library",
|
"//pkg/controller:go_default_library",
|
||||||
"//pkg/util/flowcontrol:go_default_library",
|
|
||||||
"//vendor:github.com/golang/glog",
|
"//vendor:github.com/golang/glog",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/api/errors",
|
"//vendor:k8s.io/apimachinery/pkg/api/errors",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
|
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
|
||||||
|
@ -33,6 +32,7 @@ go_library(
|
||||||
"//vendor:k8s.io/apimachinery/pkg/runtime/schema",
|
"//vendor:k8s.io/apimachinery/pkg/runtime/schema",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/types",
|
"//vendor:k8s.io/apimachinery/pkg/types",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/watch",
|
"//vendor:k8s.io/apimachinery/pkg/watch",
|
||||||
|
"//vendor:k8s.io/client-go/pkg/util/flowcontrol",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,7 @@ import (
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
"k8s.io/apimachinery/pkg/types"
|
"k8s.io/apimachinery/pkg/types"
|
||||||
"k8s.io/apimachinery/pkg/watch"
|
"k8s.io/apimachinery/pkg/watch"
|
||||||
|
"k8s.io/client-go/pkg/util/flowcontrol"
|
||||||
federationapi "k8s.io/kubernetes/federation/apis/federation/v1beta1"
|
federationapi "k8s.io/kubernetes/federation/apis/federation/v1beta1"
|
||||||
federationclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset"
|
federationclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset"
|
||||||
"k8s.io/kubernetes/federation/pkg/federation-controller/util"
|
"k8s.io/kubernetes/federation/pkg/federation-controller/util"
|
||||||
|
@ -39,7 +40,6 @@ import (
|
||||||
kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
||||||
"k8s.io/kubernetes/pkg/client/record"
|
"k8s.io/kubernetes/pkg/client/record"
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
"k8s.io/kubernetes/pkg/util/flowcontrol"
|
|
||||||
|
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
)
|
)
|
||||||
|
|
|
@ -24,11 +24,11 @@ go_library(
|
||||||
"//pkg/client/clientset_generated/clientset:go_default_library",
|
"//pkg/client/clientset_generated/clientset:go_default_library",
|
||||||
"//pkg/client/record:go_default_library",
|
"//pkg/client/record:go_default_library",
|
||||||
"//pkg/controller:go_default_library",
|
"//pkg/controller:go_default_library",
|
||||||
"//pkg/util/flowcontrol:go_default_library",
|
|
||||||
"//vendor:github.com/golang/glog",
|
"//vendor:github.com/golang/glog",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/api/errors",
|
"//vendor:k8s.io/apimachinery/pkg/api/errors",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/runtime",
|
"//vendor:k8s.io/apimachinery/pkg/runtime",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/watch",
|
"//vendor:k8s.io/apimachinery/pkg/watch",
|
||||||
|
"//vendor:k8s.io/client-go/pkg/util/flowcontrol",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,7 @@ import (
|
||||||
"k8s.io/apimachinery/pkg/api/errors"
|
"k8s.io/apimachinery/pkg/api/errors"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/watch"
|
"k8s.io/apimachinery/pkg/watch"
|
||||||
|
"k8s.io/client-go/pkg/util/flowcontrol"
|
||||||
federationapi "k8s.io/kubernetes/federation/apis/federation/v1beta1"
|
federationapi "k8s.io/kubernetes/federation/apis/federation/v1beta1"
|
||||||
federationclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset"
|
federationclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset"
|
||||||
"k8s.io/kubernetes/federation/pkg/federation-controller/util"
|
"k8s.io/kubernetes/federation/pkg/federation-controller/util"
|
||||||
|
@ -34,7 +35,6 @@ import (
|
||||||
kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
||||||
"k8s.io/kubernetes/pkg/client/record"
|
"k8s.io/kubernetes/pkg/client/record"
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
"k8s.io/kubernetes/pkg/util/flowcontrol"
|
|
||||||
|
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
)
|
)
|
||||||
|
|
|
@ -28,13 +28,13 @@ go_library(
|
||||||
"//pkg/client/clientset_generated/clientset:go_default_library",
|
"//pkg/client/clientset_generated/clientset:go_default_library",
|
||||||
"//pkg/client/record:go_default_library",
|
"//pkg/client/record:go_default_library",
|
||||||
"//pkg/controller:go_default_library",
|
"//pkg/controller:go_default_library",
|
||||||
"//pkg/util/flowcontrol:go_default_library",
|
|
||||||
"//pkg/util/workqueue:go_default_library",
|
"//pkg/util/workqueue:go_default_library",
|
||||||
"//vendor:github.com/golang/glog",
|
"//vendor:github.com/golang/glog",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/api/errors",
|
"//vendor:k8s.io/apimachinery/pkg/api/errors",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/runtime",
|
"//vendor:k8s.io/apimachinery/pkg/runtime",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/util/wait",
|
"//vendor:k8s.io/apimachinery/pkg/util/wait",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/watch",
|
"//vendor:k8s.io/apimachinery/pkg/watch",
|
||||||
|
"//vendor:k8s.io/client-go/pkg/util/flowcontrol",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -29,6 +29,7 @@ import (
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/util/wait"
|
"k8s.io/apimachinery/pkg/util/wait"
|
||||||
"k8s.io/apimachinery/pkg/watch"
|
"k8s.io/apimachinery/pkg/watch"
|
||||||
|
"k8s.io/client-go/pkg/util/flowcontrol"
|
||||||
fed "k8s.io/kubernetes/federation/apis/federation"
|
fed "k8s.io/kubernetes/federation/apis/federation"
|
||||||
fedv1 "k8s.io/kubernetes/federation/apis/federation/v1beta1"
|
fedv1 "k8s.io/kubernetes/federation/apis/federation/v1beta1"
|
||||||
fedclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset"
|
fedclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset"
|
||||||
|
@ -44,7 +45,6 @@ import (
|
||||||
kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
||||||
"k8s.io/kubernetes/pkg/client/record"
|
"k8s.io/kubernetes/pkg/client/record"
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
"k8s.io/kubernetes/pkg/util/flowcontrol"
|
|
||||||
"k8s.io/kubernetes/pkg/util/workqueue"
|
"k8s.io/kubernetes/pkg/util/workqueue"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -24,12 +24,12 @@ go_library(
|
||||||
"//pkg/client/clientset_generated/clientset:go_default_library",
|
"//pkg/client/clientset_generated/clientset:go_default_library",
|
||||||
"//pkg/client/record:go_default_library",
|
"//pkg/client/record:go_default_library",
|
||||||
"//pkg/controller:go_default_library",
|
"//pkg/controller:go_default_library",
|
||||||
"//pkg/util/flowcontrol:go_default_library",
|
|
||||||
"//vendor:github.com/golang/glog",
|
"//vendor:github.com/golang/glog",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/api/errors",
|
"//vendor:k8s.io/apimachinery/pkg/api/errors",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/runtime",
|
"//vendor:k8s.io/apimachinery/pkg/runtime",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/types",
|
"//vendor:k8s.io/apimachinery/pkg/types",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/watch",
|
"//vendor:k8s.io/apimachinery/pkg/watch",
|
||||||
|
"//vendor:k8s.io/client-go/pkg/util/flowcontrol",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,7 @@ import (
|
||||||
pkgruntime "k8s.io/apimachinery/pkg/runtime"
|
pkgruntime "k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/types"
|
"k8s.io/apimachinery/pkg/types"
|
||||||
"k8s.io/apimachinery/pkg/watch"
|
"k8s.io/apimachinery/pkg/watch"
|
||||||
|
"k8s.io/client-go/pkg/util/flowcontrol"
|
||||||
federationapi "k8s.io/kubernetes/federation/apis/federation/v1beta1"
|
federationapi "k8s.io/kubernetes/federation/apis/federation/v1beta1"
|
||||||
federationclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset"
|
federationclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset"
|
||||||
"k8s.io/kubernetes/federation/pkg/federation-controller/util"
|
"k8s.io/kubernetes/federation/pkg/federation-controller/util"
|
||||||
|
@ -35,7 +36,6 @@ import (
|
||||||
kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
||||||
"k8s.io/kubernetes/pkg/client/record"
|
"k8s.io/kubernetes/pkg/client/record"
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
"k8s.io/kubernetes/pkg/util/flowcontrol"
|
|
||||||
|
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
)
|
)
|
||||||
|
|
|
@ -35,15 +35,15 @@ go_library(
|
||||||
"//pkg/client/clientset_generated/internalclientset:go_default_library",
|
"//pkg/client/clientset_generated/internalclientset:go_default_library",
|
||||||
"//pkg/client/restclient:go_default_library",
|
"//pkg/client/restclient:go_default_library",
|
||||||
"//pkg/client/unversioned/clientcmd:go_default_library",
|
"//pkg/client/unversioned/clientcmd:go_default_library",
|
||||||
"//pkg/client/unversioned/clientcmd/api:go_default_library",
|
|
||||||
"//pkg/controller/deployment/util:go_default_library",
|
"//pkg/controller/deployment/util:go_default_library",
|
||||||
"//pkg/util/flowcontrol:go_default_library",
|
|
||||||
"//vendor:github.com/golang/glog",
|
"//vendor:github.com/golang/glog",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
|
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/runtime",
|
"//vendor:k8s.io/apimachinery/pkg/runtime",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/util/net",
|
"//vendor:k8s.io/apimachinery/pkg/util/net",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/util/wait",
|
"//vendor:k8s.io/apimachinery/pkg/util/wait",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/watch",
|
"//vendor:k8s.io/apimachinery/pkg/watch",
|
||||||
|
"//vendor:k8s.io/client-go/pkg/util/flowcontrol",
|
||||||
|
"//vendor:k8s.io/client-go/tools/clientcmd/api",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@ package util
|
||||||
import (
|
import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"k8s.io/kubernetes/pkg/util/flowcontrol"
|
"k8s.io/client-go/pkg/util/flowcontrol"
|
||||||
)
|
)
|
||||||
|
|
||||||
func StartBackoffGC(backoff *flowcontrol.Backoff, stopCh <-chan struct{}) {
|
func StartBackoffGC(backoff *flowcontrol.Backoff, stopCh <-chan struct{}) {
|
||||||
|
|
|
@ -26,13 +26,13 @@ import (
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
utilnet "k8s.io/apimachinery/pkg/util/net"
|
utilnet "k8s.io/apimachinery/pkg/util/net"
|
||||||
"k8s.io/apimachinery/pkg/util/wait"
|
"k8s.io/apimachinery/pkg/util/wait"
|
||||||
|
clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
|
||||||
federation_v1beta1 "k8s.io/kubernetes/federation/apis/federation/v1beta1"
|
federation_v1beta1 "k8s.io/kubernetes/federation/apis/federation/v1beta1"
|
||||||
fedclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset"
|
fedclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset"
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
|
clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
|
||||||
"k8s.io/kubernetes/pkg/client/restclient"
|
"k8s.io/kubernetes/pkg/client/restclient"
|
||||||
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
|
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
|
||||||
clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
|
@ -22,7 +22,6 @@ go_library(
|
||||||
"//federation/pkg/kubefed/util:go_default_library",
|
"//federation/pkg/kubefed/util:go_default_library",
|
||||||
"//pkg/api:go_default_library",
|
"//pkg/api:go_default_library",
|
||||||
"//pkg/client/unversioned/clientcmd:go_default_library",
|
"//pkg/client/unversioned/clientcmd:go_default_library",
|
||||||
"//pkg/client/unversioned/clientcmd/api:go_default_library",
|
|
||||||
"//pkg/kubectl:go_default_library",
|
"//pkg/kubectl:go_default_library",
|
||||||
"//pkg/kubectl/cmd:go_default_library",
|
"//pkg/kubectl/cmd:go_default_library",
|
||||||
"//pkg/kubectl/cmd/templates:go_default_library",
|
"//pkg/kubectl/cmd/templates:go_default_library",
|
||||||
|
@ -34,6 +33,7 @@ go_library(
|
||||||
"//vendor:k8s.io/apimachinery/pkg/api/errors",
|
"//vendor:k8s.io/apimachinery/pkg/api/errors",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/runtime",
|
"//vendor:k8s.io/apimachinery/pkg/runtime",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/runtime/schema",
|
"//vendor:k8s.io/apimachinery/pkg/runtime/schema",
|
||||||
|
"//vendor:k8s.io/client-go/tools/clientcmd/api",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -56,12 +56,12 @@ go_test(
|
||||||
"//pkg/client/restclient/fake:go_default_library",
|
"//pkg/client/restclient/fake:go_default_library",
|
||||||
"//pkg/client/typed/dynamic:go_default_library",
|
"//pkg/client/typed/dynamic:go_default_library",
|
||||||
"//pkg/client/unversioned/clientcmd:go_default_library",
|
"//pkg/client/unversioned/clientcmd:go_default_library",
|
||||||
"//pkg/client/unversioned/clientcmd/api:go_default_library",
|
|
||||||
"//pkg/kubectl/cmd/testing:go_default_library",
|
"//pkg/kubectl/cmd/testing:go_default_library",
|
||||||
"//pkg/kubectl/cmd/util:go_default_library",
|
"//pkg/kubectl/cmd/util:go_default_library",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/api/errors",
|
"//vendor:k8s.io/apimachinery/pkg/api/errors",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
|
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/util/diff",
|
"//vendor:k8s.io/apimachinery/pkg/util/diff",
|
||||||
|
"//vendor:k8s.io/client-go/tools/clientcmd/api",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,6 @@ go_library(
|
||||||
"//pkg/apis/extensions:go_default_library",
|
"//pkg/apis/extensions:go_default_library",
|
||||||
"//pkg/client/clientset_generated/internalclientset:go_default_library",
|
"//pkg/client/clientset_generated/internalclientset:go_default_library",
|
||||||
"//pkg/client/unversioned/clientcmd:go_default_library",
|
"//pkg/client/unversioned/clientcmd:go_default_library",
|
||||||
"//pkg/client/unversioned/clientcmd/api:go_default_library",
|
|
||||||
"//pkg/kubectl/cmd/templates:go_default_library",
|
"//pkg/kubectl/cmd/templates:go_default_library",
|
||||||
"//pkg/kubectl/cmd/util:go_default_library",
|
"//pkg/kubectl/cmd/util:go_default_library",
|
||||||
"//pkg/util/cert:go_default_library",
|
"//pkg/util/cert:go_default_library",
|
||||||
|
@ -30,6 +29,7 @@ go_library(
|
||||||
"//vendor:github.com/spf13/cobra",
|
"//vendor:github.com/spf13/cobra",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
|
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/util/wait",
|
"//vendor:k8s.io/apimachinery/pkg/util/wait",
|
||||||
|
"//vendor:k8s.io/client-go/tools/clientcmd/api",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -38,6 +38,7 @@ import (
|
||||||
|
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/util/wait"
|
"k8s.io/apimachinery/pkg/util/wait"
|
||||||
|
clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
|
||||||
kubeadmkubeconfigphase "k8s.io/kubernetes/cmd/kubeadm/app/phases/kubeconfig"
|
kubeadmkubeconfigphase "k8s.io/kubernetes/cmd/kubeadm/app/phases/kubeconfig"
|
||||||
"k8s.io/kubernetes/federation/pkg/kubefed/util"
|
"k8s.io/kubernetes/federation/pkg/kubefed/util"
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
|
@ -45,7 +46,6 @@ import (
|
||||||
"k8s.io/kubernetes/pkg/apis/extensions"
|
"k8s.io/kubernetes/pkg/apis/extensions"
|
||||||
client "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
|
client "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
|
||||||
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
|
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
|
||||||
clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
|
|
||||||
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
|
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
|
||||||
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||||
certutil "k8s.io/kubernetes/pkg/util/cert"
|
certutil "k8s.io/kubernetes/pkg/util/cert"
|
||||||
|
|
|
@ -22,8 +22,8 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
|
clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
|
||||||
"k8s.io/kubernetes/federation/pkg/kubefed/util"
|
"k8s.io/kubernetes/federation/pkg/kubefed/util"
|
||||||
clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
|
|
||||||
"k8s.io/kubernetes/pkg/kubectl"
|
"k8s.io/kubernetes/pkg/kubectl"
|
||||||
kubectlcmd "k8s.io/kubernetes/pkg/kubectl/cmd"
|
kubectlcmd "k8s.io/kubernetes/pkg/kubectl/cmd"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
|
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
|
||||||
|
|
|
@ -25,6 +25,7 @@ import (
|
||||||
|
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/util/diff"
|
"k8s.io/apimachinery/pkg/util/diff"
|
||||||
|
clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
|
||||||
federationapi "k8s.io/kubernetes/federation/apis/federation/v1beta1"
|
federationapi "k8s.io/kubernetes/federation/apis/federation/v1beta1"
|
||||||
kubefedtesting "k8s.io/kubernetes/federation/pkg/kubefed/testing"
|
kubefedtesting "k8s.io/kubernetes/federation/pkg/kubefed/testing"
|
||||||
"k8s.io/kubernetes/federation/pkg/kubefed/util"
|
"k8s.io/kubernetes/federation/pkg/kubefed/util"
|
||||||
|
@ -34,7 +35,6 @@ import (
|
||||||
"k8s.io/kubernetes/pkg/client/restclient/fake"
|
"k8s.io/kubernetes/pkg/client/restclient/fake"
|
||||||
"k8s.io/kubernetes/pkg/client/typed/dynamic"
|
"k8s.io/kubernetes/pkg/client/typed/dynamic"
|
||||||
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
|
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
|
||||||
clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
|
|
||||||
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
|
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
|
||||||
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||||
)
|
)
|
||||||
|
|
|
@ -17,9 +17,9 @@ go_library(
|
||||||
"//pkg/api:go_default_library",
|
"//pkg/api:go_default_library",
|
||||||
"//pkg/client/restclient:go_default_library",
|
"//pkg/client/restclient:go_default_library",
|
||||||
"//pkg/client/unversioned/clientcmd:go_default_library",
|
"//pkg/client/unversioned/clientcmd:go_default_library",
|
||||||
"//pkg/client/unversioned/clientcmd/api:go_default_library",
|
|
||||||
"//pkg/kubectl/cmd/util:go_default_library",
|
"//pkg/kubectl/cmd/util:go_default_library",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/runtime",
|
"//vendor:k8s.io/apimachinery/pkg/runtime",
|
||||||
|
"//vendor:k8s.io/client-go/tools/clientcmd/api",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -24,12 +24,12 @@ import (
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
|
clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
|
||||||
fedclient "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset"
|
fedclient "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset"
|
||||||
"k8s.io/kubernetes/federation/pkg/kubefed/util"
|
"k8s.io/kubernetes/federation/pkg/kubefed/util"
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/client/restclient"
|
"k8s.io/kubernetes/pkg/client/restclient"
|
||||||
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
|
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
|
||||||
clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
|
|
||||||
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -16,11 +16,11 @@ go_library(
|
||||||
"//pkg/api:go_default_library",
|
"//pkg/api:go_default_library",
|
||||||
"//pkg/client/clientset_generated/internalclientset:go_default_library",
|
"//pkg/client/clientset_generated/internalclientset:go_default_library",
|
||||||
"//pkg/client/unversioned/clientcmd:go_default_library",
|
"//pkg/client/unversioned/clientcmd:go_default_library",
|
||||||
"//pkg/client/unversioned/clientcmd/api:go_default_library",
|
|
||||||
"//pkg/kubectl/cmd:go_default_library",
|
"//pkg/kubectl/cmd:go_default_library",
|
||||||
"//pkg/kubectl/cmd/util:go_default_library",
|
"//pkg/kubectl/cmd/util:go_default_library",
|
||||||
"//vendor:github.com/spf13/cobra",
|
"//vendor:github.com/spf13/cobra",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
|
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
|
||||||
|
"//vendor:k8s.io/client-go/tools/clientcmd/api",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -18,11 +18,11 @@ package util
|
||||||
|
|
||||||
import (
|
import (
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
|
clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
|
||||||
fedclient "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset"
|
fedclient "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset"
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
client "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
|
client "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
|
||||||
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
|
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
|
||||||
clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
|
|
||||||
kubectlcmd "k8s.io/kubernetes/pkg/kubectl/cmd"
|
kubectlcmd "k8s.io/kubernetes/pkg/kubectl/cmd"
|
||||||
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||||
|
|
||||||
|
|
|
@ -45,7 +45,6 @@ go_library(
|
||||||
"//pkg/apis/storage/v1beta1:go_default_library",
|
"//pkg/apis/storage/v1beta1:go_default_library",
|
||||||
"//pkg/client/restclient:go_default_library",
|
"//pkg/client/restclient:go_default_library",
|
||||||
"//pkg/fields:go_default_library",
|
"//pkg/fields:go_default_library",
|
||||||
"//pkg/util/clock:go_default_library",
|
|
||||||
"//vendor:github.com/golang/glog",
|
"//vendor:github.com/golang/glog",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/api/errors",
|
"//vendor:k8s.io/apimachinery/pkg/api/errors",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/api/meta",
|
"//vendor:k8s.io/apimachinery/pkg/api/meta",
|
||||||
|
@ -58,6 +57,7 @@ go_library(
|
||||||
"//vendor:k8s.io/apimachinery/pkg/util/sets",
|
"//vendor:k8s.io/apimachinery/pkg/util/sets",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/util/wait",
|
"//vendor:k8s.io/apimachinery/pkg/util/wait",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/watch",
|
"//vendor:k8s.io/apimachinery/pkg/watch",
|
||||||
|
"//vendor:k8s.io/client-go/pkg/util/clock",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -88,7 +88,6 @@ go_test(
|
||||||
"//pkg/client/restclient:go_default_library",
|
"//pkg/client/restclient:go_default_library",
|
||||||
"//pkg/client/testing/cache:go_default_library",
|
"//pkg/client/testing/cache:go_default_library",
|
||||||
"//pkg/fields:go_default_library",
|
"//pkg/fields:go_default_library",
|
||||||
"//pkg/util/clock:go_default_library",
|
|
||||||
"//pkg/util/testing:go_default_library",
|
"//pkg/util/testing:go_default_library",
|
||||||
"//vendor:github.com/google/gofuzz",
|
"//vendor:github.com/google/gofuzz",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/api/errors",
|
"//vendor:k8s.io/apimachinery/pkg/api/errors",
|
||||||
|
@ -98,6 +97,7 @@ go_test(
|
||||||
"//vendor:k8s.io/apimachinery/pkg/util/sets",
|
"//vendor:k8s.io/apimachinery/pkg/util/sets",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/util/wait",
|
"//vendor:k8s.io/apimachinery/pkg/util/wait",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/watch",
|
"//vendor:k8s.io/apimachinery/pkg/watch",
|
||||||
|
"//vendor:k8s.io/client-go/pkg/util/clock",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
"k8s.io/kubernetes/pkg/util/clock"
|
"k8s.io/client-go/pkg/util/clock"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ExpirationCache implements the store interface
|
// ExpirationCache implements the store interface
|
||||||
|
|
|
@ -18,7 +18,7 @@ package cache
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"k8s.io/apimachinery/pkg/util/sets"
|
"k8s.io/apimachinery/pkg/util/sets"
|
||||||
"k8s.io/kubernetes/pkg/util/clock"
|
"k8s.io/client-go/pkg/util/clock"
|
||||||
)
|
)
|
||||||
|
|
||||||
type fakeThreadSafeMap struct {
|
type fakeThreadSafeMap struct {
|
||||||
|
|
|
@ -23,7 +23,7 @@ import (
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/util/sets"
|
"k8s.io/apimachinery/pkg/util/sets"
|
||||||
"k8s.io/apimachinery/pkg/util/wait"
|
"k8s.io/apimachinery/pkg/util/wait"
|
||||||
"k8s.io/kubernetes/pkg/util/clock"
|
"k8s.io/client-go/pkg/util/clock"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestTTLExpirationBasic(t *testing.T) {
|
func TestTTLExpirationBasic(t *testing.T) {
|
||||||
|
|
|
@ -43,9 +43,9 @@ go_library(
|
||||||
"//pkg/client/clientset_generated/clientset/typed/storage/v1beta1:go_default_library",
|
"//pkg/client/clientset_generated/clientset/typed/storage/v1beta1:go_default_library",
|
||||||
"//pkg/client/restclient:go_default_library",
|
"//pkg/client/restclient:go_default_library",
|
||||||
"//pkg/client/typed/discovery:go_default_library",
|
"//pkg/client/typed/discovery:go_default_library",
|
||||||
"//pkg/util/flowcontrol:go_default_library",
|
|
||||||
"//plugin/pkg/client/auth:go_default_library",
|
"//plugin/pkg/client/auth:go_default_library",
|
||||||
"//vendor:github.com/golang/glog",
|
"//vendor:github.com/golang/glog",
|
||||||
|
"//vendor:k8s.io/client-go/pkg/util/flowcontrol",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -18,6 +18,7 @@ package clientset
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
|
"k8s.io/client-go/pkg/util/flowcontrol"
|
||||||
v1beta1apps "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/apps/v1beta1"
|
v1beta1apps "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/apps/v1beta1"
|
||||||
v1beta1authentication "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/authentication/v1beta1"
|
v1beta1authentication "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/authentication/v1beta1"
|
||||||
v1beta1authorization "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/authorization/v1beta1"
|
v1beta1authorization "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/authorization/v1beta1"
|
||||||
|
@ -33,7 +34,6 @@ import (
|
||||||
v1beta1storage "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/storage/v1beta1"
|
v1beta1storage "k8s.io/kubernetes/pkg/client/clientset_generated/clientset/typed/storage/v1beta1"
|
||||||
restclient "k8s.io/kubernetes/pkg/client/restclient"
|
restclient "k8s.io/kubernetes/pkg/client/restclient"
|
||||||
discovery "k8s.io/kubernetes/pkg/client/typed/discovery"
|
discovery "k8s.io/kubernetes/pkg/client/typed/discovery"
|
||||||
"k8s.io/kubernetes/pkg/util/flowcontrol"
|
|
||||||
_ "k8s.io/kubernetes/plugin/pkg/client/auth"
|
_ "k8s.io/kubernetes/plugin/pkg/client/auth"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -42,9 +42,9 @@ go_library(
|
||||||
"//pkg/client/clientset_generated/internalclientset/typed/storage/internalversion:go_default_library",
|
"//pkg/client/clientset_generated/internalclientset/typed/storage/internalversion:go_default_library",
|
||||||
"//pkg/client/restclient:go_default_library",
|
"//pkg/client/restclient:go_default_library",
|
||||||
"//pkg/client/typed/discovery:go_default_library",
|
"//pkg/client/typed/discovery:go_default_library",
|
||||||
"//pkg/util/flowcontrol:go_default_library",
|
|
||||||
"//plugin/pkg/client/auth:go_default_library",
|
"//plugin/pkg/client/auth:go_default_library",
|
||||||
"//vendor:github.com/golang/glog",
|
"//vendor:github.com/golang/glog",
|
||||||
|
"//vendor:k8s.io/client-go/pkg/util/flowcontrol",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -18,6 +18,7 @@ package internalclientset
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
|
"k8s.io/client-go/pkg/util/flowcontrol"
|
||||||
internalversionapps "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/apps/internalversion"
|
internalversionapps "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/apps/internalversion"
|
||||||
internalversionauthentication "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/authentication/internalversion"
|
internalversionauthentication "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/authentication/internalversion"
|
||||||
internalversionauthorization "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/authorization/internalversion"
|
internalversionauthorization "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/authorization/internalversion"
|
||||||
|
@ -31,7 +32,6 @@ import (
|
||||||
internalversionstorage "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/storage/internalversion"
|
internalversionstorage "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/storage/internalversion"
|
||||||
restclient "k8s.io/kubernetes/pkg/client/restclient"
|
restclient "k8s.io/kubernetes/pkg/client/restclient"
|
||||||
discovery "k8s.io/kubernetes/pkg/client/typed/discovery"
|
discovery "k8s.io/kubernetes/pkg/client/typed/discovery"
|
||||||
"k8s.io/kubernetes/pkg/util/flowcontrol"
|
|
||||||
_ "k8s.io/kubernetes/plugin/pkg/client/auth"
|
_ "k8s.io/kubernetes/plugin/pkg/client/auth"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,6 @@ go_library(
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/api/v1:go_default_library",
|
"//pkg/api/v1:go_default_library",
|
||||||
"//pkg/client/restclient:go_default_library",
|
"//pkg/client/restclient:go_default_library",
|
||||||
"//pkg/util/clock:go_default_library",
|
|
||||||
"//pkg/util/strategicpatch:go_default_library",
|
"//pkg/util/strategicpatch:go_default_library",
|
||||||
"//vendor:github.com/golang/glog",
|
"//vendor:github.com/golang/glog",
|
||||||
"//vendor:github.com/golang/groupcache/lru",
|
"//vendor:github.com/golang/groupcache/lru",
|
||||||
|
@ -30,6 +29,7 @@ go_library(
|
||||||
"//vendor:k8s.io/apimachinery/pkg/util/runtime",
|
"//vendor:k8s.io/apimachinery/pkg/util/runtime",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/util/sets",
|
"//vendor:k8s.io/apimachinery/pkg/util/sets",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/watch",
|
"//vendor:k8s.io/apimachinery/pkg/watch",
|
||||||
|
"//vendor:k8s.io/client-go/pkg/util/clock",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -45,12 +45,12 @@ go_test(
|
||||||
"//pkg/api/install:go_default_library",
|
"//pkg/api/install:go_default_library",
|
||||||
"//pkg/api/v1:go_default_library",
|
"//pkg/api/v1:go_default_library",
|
||||||
"//pkg/client/restclient:go_default_library",
|
"//pkg/client/restclient:go_default_library",
|
||||||
"//pkg/util/clock:go_default_library",
|
|
||||||
"//pkg/util/strategicpatch:go_default_library",
|
"//pkg/util/strategicpatch:go_default_library",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/api/errors",
|
"//vendor:k8s.io/apimachinery/pkg/api/errors",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
|
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/runtime",
|
"//vendor:k8s.io/apimachinery/pkg/runtime",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/util/diff",
|
"//vendor:k8s.io/apimachinery/pkg/util/diff",
|
||||||
|
"//vendor:k8s.io/client-go/pkg/util/clock",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -26,9 +26,9 @@ import (
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
|
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
|
||||||
"k8s.io/apimachinery/pkg/watch"
|
"k8s.io/apimachinery/pkg/watch"
|
||||||
|
"k8s.io/client-go/pkg/util/clock"
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
"k8s.io/kubernetes/pkg/client/restclient"
|
"k8s.io/kubernetes/pkg/client/restclient"
|
||||||
"k8s.io/kubernetes/pkg/util/clock"
|
|
||||||
|
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
|
|
|
@ -28,10 +28,10 @@ import (
|
||||||
"k8s.io/apimachinery/pkg/api/errors"
|
"k8s.io/apimachinery/pkg/api/errors"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
k8sruntime "k8s.io/apimachinery/pkg/runtime"
|
k8sruntime "k8s.io/apimachinery/pkg/runtime"
|
||||||
|
"k8s.io/client-go/pkg/util/clock"
|
||||||
_ "k8s.io/kubernetes/pkg/api/install" // To register api.Pod used in tests below
|
_ "k8s.io/kubernetes/pkg/api/install" // To register api.Pod used in tests below
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
"k8s.io/kubernetes/pkg/client/restclient"
|
"k8s.io/kubernetes/pkg/client/restclient"
|
||||||
"k8s.io/kubernetes/pkg/util/clock"
|
|
||||||
"k8s.io/kubernetes/pkg/util/strategicpatch"
|
"k8s.io/kubernetes/pkg/util/strategicpatch"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -27,8 +27,8 @@ import (
|
||||||
|
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/util/sets"
|
"k8s.io/apimachinery/pkg/util/sets"
|
||||||
|
"k8s.io/client-go/pkg/util/clock"
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
"k8s.io/kubernetes/pkg/util/clock"
|
|
||||||
"k8s.io/kubernetes/pkg/util/strategicpatch"
|
"k8s.io/kubernetes/pkg/util/strategicpatch"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -24,8 +24,8 @@ import (
|
||||||
|
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/util/diff"
|
"k8s.io/apimachinery/pkg/util/diff"
|
||||||
|
"k8s.io/client-go/pkg/util/clock"
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
"k8s.io/kubernetes/pkg/util/clock"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func makeObjectReference(kind, name, namespace string) v1.ObjectReference {
|
func makeObjectReference(kind, name, namespace string) v1.ObjectReference {
|
||||||
|
|
|
@ -26,11 +26,8 @@ go_library(
|
||||||
"//pkg/api/v1:go_default_library",
|
"//pkg/api/v1:go_default_library",
|
||||||
"//pkg/api/validation/path:go_default_library",
|
"//pkg/api/validation/path:go_default_library",
|
||||||
"//pkg/client/metrics:go_default_library",
|
"//pkg/client/metrics:go_default_library",
|
||||||
"//pkg/client/restclient/watch:go_default_library",
|
|
||||||
"//pkg/client/unversioned/clientcmd/api:go_default_library",
|
|
||||||
"//pkg/fields:go_default_library",
|
"//pkg/fields:go_default_library",
|
||||||
"//pkg/util/cert:go_default_library",
|
"//pkg/util/cert:go_default_library",
|
||||||
"//pkg/util/flowcontrol:go_default_library",
|
|
||||||
"//pkg/version:go_default_library",
|
"//pkg/version:go_default_library",
|
||||||
"//vendor:github.com/golang/glog",
|
"//vendor:github.com/golang/glog",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/api/errors",
|
"//vendor:k8s.io/apimachinery/pkg/api/errors",
|
||||||
|
@ -43,6 +40,9 @@ go_library(
|
||||||
"//vendor:k8s.io/apimachinery/pkg/util/net",
|
"//vendor:k8s.io/apimachinery/pkg/util/net",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/util/sets",
|
"//vendor:k8s.io/apimachinery/pkg/util/sets",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/watch",
|
"//vendor:k8s.io/apimachinery/pkg/watch",
|
||||||
|
"//vendor:k8s.io/client-go/pkg/util/flowcontrol",
|
||||||
|
"//vendor:k8s.io/client-go/rest/watch",
|
||||||
|
"//vendor:k8s.io/client-go/tools/clientcmd/api",
|
||||||
"//vendor:k8s.io/client-go/transport",
|
"//vendor:k8s.io/client-go/transport",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
@ -63,10 +63,6 @@ go_test(
|
||||||
"//pkg/api:go_default_library",
|
"//pkg/api:go_default_library",
|
||||||
"//pkg/api/testapi:go_default_library",
|
"//pkg/api/testapi:go_default_library",
|
||||||
"//pkg/api/v1:go_default_library",
|
"//pkg/api/v1:go_default_library",
|
||||||
"//pkg/client/restclient/watch:go_default_library",
|
|
||||||
"//pkg/client/unversioned/clientcmd/api:go_default_library",
|
|
||||||
"//pkg/util/clock:go_default_library",
|
|
||||||
"//pkg/util/flowcontrol:go_default_library",
|
|
||||||
"//pkg/util/httpstream:go_default_library",
|
"//pkg/util/httpstream:go_default_library",
|
||||||
"//pkg/util/intstr:go_default_library",
|
"//pkg/util/intstr:go_default_library",
|
||||||
"//pkg/util/testing:go_default_library",
|
"//pkg/util/testing:go_default_library",
|
||||||
|
@ -80,6 +76,10 @@ go_test(
|
||||||
"//vendor:k8s.io/apimachinery/pkg/types",
|
"//vendor:k8s.io/apimachinery/pkg/types",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/util/diff",
|
"//vendor:k8s.io/apimachinery/pkg/util/diff",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/watch",
|
"//vendor:k8s.io/apimachinery/pkg/watch",
|
||||||
|
"//vendor:k8s.io/client-go/pkg/util/clock",
|
||||||
|
"//vendor:k8s.io/client-go/pkg/util/flowcontrol",
|
||||||
|
"//vendor:k8s.io/client-go/rest/watch",
|
||||||
|
"//vendor:k8s.io/client-go/tools/clientcmd/api",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -95,7 +95,6 @@ filegroup(
|
||||||
srcs = [
|
srcs = [
|
||||||
":package-srcs",
|
":package-srcs",
|
||||||
"//pkg/client/restclient/fake:all-srcs",
|
"//pkg/client/restclient/fake:all-srcs",
|
||||||
"//pkg/client/restclient/watch:all-srcs",
|
|
||||||
],
|
],
|
||||||
tags = ["automanaged"],
|
tags = ["automanaged"],
|
||||||
)
|
)
|
||||||
|
|
|
@ -29,7 +29,7 @@ import (
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
"k8s.io/apimachinery/pkg/types"
|
"k8s.io/apimachinery/pkg/types"
|
||||||
"k8s.io/kubernetes/pkg/util/flowcontrol"
|
"k8s.io/client-go/pkg/util/flowcontrol"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
|
@ -32,10 +32,10 @@ import (
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
|
"k8s.io/client-go/pkg/util/flowcontrol"
|
||||||
|
clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
|
|
||||||
certutil "k8s.io/kubernetes/pkg/util/cert"
|
certutil "k8s.io/kubernetes/pkg/util/cert"
|
||||||
"k8s.io/kubernetes/pkg/util/flowcontrol"
|
|
||||||
"k8s.io/kubernetes/pkg/version"
|
"k8s.io/kubernetes/pkg/version"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -28,10 +28,10 @@ import (
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
"k8s.io/apimachinery/pkg/util/diff"
|
"k8s.io/apimachinery/pkg/util/diff"
|
||||||
|
"k8s.io/client-go/pkg/util/flowcontrol"
|
||||||
|
clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/testapi"
|
"k8s.io/kubernetes/pkg/api/testapi"
|
||||||
clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
|
|
||||||
"k8s.io/kubernetes/pkg/util/flowcontrol"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestIsConfigTransportTLS(t *testing.T) {
|
func TestIsConfigTransportTLS(t *testing.T) {
|
||||||
|
|
|
@ -15,10 +15,10 @@ go_library(
|
||||||
"//pkg/api:go_default_library",
|
"//pkg/api:go_default_library",
|
||||||
"//pkg/api/testapi:go_default_library",
|
"//pkg/api/testapi:go_default_library",
|
||||||
"//pkg/client/restclient:go_default_library",
|
"//pkg/client/restclient:go_default_library",
|
||||||
"//pkg/util/flowcontrol:go_default_library",
|
|
||||||
"//vendor:k8s.io/apimachinery/pkg/runtime",
|
"//vendor:k8s.io/apimachinery/pkg/runtime",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/runtime/schema",
|
"//vendor:k8s.io/apimachinery/pkg/runtime/schema",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/types",
|
"//vendor:k8s.io/apimachinery/pkg/types",
|
||||||
|
"//vendor:k8s.io/client-go/pkg/util/flowcontrol",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -25,10 +25,10 @@ import (
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
"k8s.io/apimachinery/pkg/types"
|
"k8s.io/apimachinery/pkg/types"
|
||||||
|
"k8s.io/client-go/pkg/util/flowcontrol"
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/testapi"
|
"k8s.io/kubernetes/pkg/api/testapi"
|
||||||
"k8s.io/kubernetes/pkg/client/restclient"
|
"k8s.io/kubernetes/pkg/client/restclient"
|
||||||
"k8s.io/kubernetes/pkg/util/flowcontrol"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func CreateHTTPClient(roundTripper func(*http.Request) (*http.Response, error)) *http.Client {
|
func CreateHTTPClient(roundTripper func(*http.Request) (*http.Response, error)) *http.Client {
|
||||||
|
|
|
@ -23,7 +23,7 @@ import (
|
||||||
|
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
|
|
||||||
clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
|
clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
|
||||||
)
|
)
|
||||||
|
|
||||||
type AuthProvider interface {
|
type AuthProvider interface {
|
||||||
|
|
|
@ -23,7 +23,7 @@ import (
|
||||||
"strconv"
|
"strconv"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
|
clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestAuthPluginWrapTransport(t *testing.T) {
|
func TestAuthPluginWrapTransport(t *testing.T) {
|
||||||
|
|
|
@ -42,12 +42,12 @@ import (
|
||||||
"k8s.io/apimachinery/pkg/util/net"
|
"k8s.io/apimachinery/pkg/util/net"
|
||||||
"k8s.io/apimachinery/pkg/util/sets"
|
"k8s.io/apimachinery/pkg/util/sets"
|
||||||
"k8s.io/apimachinery/pkg/watch"
|
"k8s.io/apimachinery/pkg/watch"
|
||||||
|
"k8s.io/client-go/pkg/util/flowcontrol"
|
||||||
|
restclientwatch "k8s.io/client-go/rest/watch"
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
pathvalidation "k8s.io/kubernetes/pkg/api/validation/path"
|
pathvalidation "k8s.io/kubernetes/pkg/api/validation/path"
|
||||||
"k8s.io/kubernetes/pkg/client/metrics"
|
"k8s.io/kubernetes/pkg/client/metrics"
|
||||||
restclientwatch "k8s.io/kubernetes/pkg/client/restclient/watch"
|
|
||||||
"k8s.io/kubernetes/pkg/fields"
|
"k8s.io/kubernetes/pkg/fields"
|
||||||
"k8s.io/kubernetes/pkg/util/flowcontrol"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
|
|
@ -42,12 +42,12 @@ import (
|
||||||
"k8s.io/apimachinery/pkg/runtime/serializer/streaming"
|
"k8s.io/apimachinery/pkg/runtime/serializer/streaming"
|
||||||
"k8s.io/apimachinery/pkg/util/diff"
|
"k8s.io/apimachinery/pkg/util/diff"
|
||||||
"k8s.io/apimachinery/pkg/watch"
|
"k8s.io/apimachinery/pkg/watch"
|
||||||
|
"k8s.io/client-go/pkg/util/clock"
|
||||||
|
"k8s.io/client-go/pkg/util/flowcontrol"
|
||||||
|
restclientwatch "k8s.io/client-go/rest/watch"
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/testapi"
|
"k8s.io/kubernetes/pkg/api/testapi"
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
restclientwatch "k8s.io/kubernetes/pkg/client/restclient/watch"
|
|
||||||
"k8s.io/kubernetes/pkg/util/clock"
|
|
||||||
"k8s.io/kubernetes/pkg/util/flowcontrol"
|
|
||||||
"k8s.io/kubernetes/pkg/util/httpstream"
|
"k8s.io/kubernetes/pkg/util/httpstream"
|
||||||
"k8s.io/kubernetes/pkg/util/intstr"
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
utiltesting "k8s.io/kubernetes/pkg/util/testing"
|
utiltesting "k8s.io/kubernetes/pkg/util/testing"
|
||||||
|
|
|
@ -22,7 +22,7 @@ import (
|
||||||
|
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
"k8s.io/apimachinery/pkg/util/sets"
|
"k8s.io/apimachinery/pkg/util/sets"
|
||||||
"k8s.io/kubernetes/pkg/util/flowcontrol"
|
"k8s.io/client-go/pkg/util/flowcontrol"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Set of resp. Codes that we backoff for.
|
// Set of resp. Codes that we backoff for.
|
||||||
|
|
|
@ -21,7 +21,7 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"k8s.io/kubernetes/pkg/util/flowcontrol"
|
"k8s.io/client-go/pkg/util/flowcontrol"
|
||||||
)
|
)
|
||||||
|
|
||||||
func parse(raw string) *url.URL {
|
func parse(raw string) *url.URL {
|
||||||
|
|
|
@ -1,56 +0,0 @@
|
||||||
package(default_visibility = ["//visibility:public"])
|
|
||||||
|
|
||||||
licenses(["notice"])
|
|
||||||
|
|
||||||
load(
|
|
||||||
"@io_bazel_rules_go//go:def.bzl",
|
|
||||||
"go_library",
|
|
||||||
"go_test",
|
|
||||||
)
|
|
||||||
|
|
||||||
go_library(
|
|
||||||
name = "go_default_library",
|
|
||||||
srcs = [
|
|
||||||
"decoder.go",
|
|
||||||
"encoder.go",
|
|
||||||
],
|
|
||||||
tags = ["automanaged"],
|
|
||||||
deps = [
|
|
||||||
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
|
|
||||||
"//vendor:k8s.io/apimachinery/pkg/runtime",
|
|
||||||
"//vendor:k8s.io/apimachinery/pkg/runtime/serializer/streaming",
|
|
||||||
"//vendor:k8s.io/apimachinery/pkg/watch",
|
|
||||||
],
|
|
||||||
)
|
|
||||||
|
|
||||||
go_test(
|
|
||||||
name = "go_default_xtest",
|
|
||||||
srcs = [
|
|
||||||
"decoder_test.go",
|
|
||||||
"encoder_test.go",
|
|
||||||
],
|
|
||||||
tags = ["automanaged"],
|
|
||||||
deps = [
|
|
||||||
"//pkg/api:go_default_library",
|
|
||||||
"//pkg/api/testapi:go_default_library",
|
|
||||||
"//pkg/client/restclient/watch:go_default_library",
|
|
||||||
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
|
|
||||||
"//vendor:k8s.io/apimachinery/pkg/runtime",
|
|
||||||
"//vendor:k8s.io/apimachinery/pkg/runtime/serializer/streaming",
|
|
||||||
"//vendor:k8s.io/apimachinery/pkg/util/wait",
|
|
||||||
"//vendor:k8s.io/apimachinery/pkg/watch",
|
|
||||||
],
|
|
||||||
)
|
|
||||||
|
|
||||||
filegroup(
|
|
||||||
name = "package-srcs",
|
|
||||||
srcs = glob(["**"]),
|
|
||||||
tags = ["automanaged"],
|
|
||||||
visibility = ["//visibility:private"],
|
|
||||||
)
|
|
||||||
|
|
||||||
filegroup(
|
|
||||||
name = "all-srcs",
|
|
||||||
srcs = [":package-srcs"],
|
|
||||||
tags = ["automanaged"],
|
|
||||||
)
|
|
|
@ -1,72 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright 2014 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 versioned
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
|
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
|
||||||
"k8s.io/apimachinery/pkg/runtime/serializer/streaming"
|
|
||||||
"k8s.io/apimachinery/pkg/watch"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Decoder implements the watch.Decoder interface for io.ReadClosers that
|
|
||||||
// have contents which consist of a series of watchEvent objects encoded
|
|
||||||
// with the given streaming decoder. The internal objects will be then
|
|
||||||
// decoded by the embedded decoder.
|
|
||||||
type Decoder struct {
|
|
||||||
decoder streaming.Decoder
|
|
||||||
embeddedDecoder runtime.Decoder
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewDecoder creates an Decoder for the given writer and codec.
|
|
||||||
func NewDecoder(decoder streaming.Decoder, embeddedDecoder runtime.Decoder) *Decoder {
|
|
||||||
return &Decoder{
|
|
||||||
decoder: decoder,
|
|
||||||
embeddedDecoder: embeddedDecoder,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Decode blocks until it can return the next object in the reader. Returns an error
|
|
||||||
// if the reader is closed or an object can't be decoded.
|
|
||||||
func (d *Decoder) Decode() (watch.EventType, runtime.Object, error) {
|
|
||||||
var got metav1.WatchEvent
|
|
||||||
res, _, err := d.decoder.Decode(nil, &got)
|
|
||||||
if err != nil {
|
|
||||||
return "", nil, err
|
|
||||||
}
|
|
||||||
if res != &got {
|
|
||||||
return "", nil, fmt.Errorf("unable to decode to metav1.Event")
|
|
||||||
}
|
|
||||||
switch got.Type {
|
|
||||||
case string(watch.Added), string(watch.Modified), string(watch.Deleted), string(watch.Error):
|
|
||||||
default:
|
|
||||||
return "", nil, fmt.Errorf("got invalid watch event type: %v", got.Type)
|
|
||||||
}
|
|
||||||
|
|
||||||
obj, err := runtime.Decode(d.embeddedDecoder, got.Object.Raw)
|
|
||||||
if err != nil {
|
|
||||||
return "", nil, fmt.Errorf("unable to decode watch event: %v", err)
|
|
||||||
}
|
|
||||||
return watch.EventType(got.Type), obj, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Close closes the underlying r.
|
|
||||||
func (d *Decoder) Close() {
|
|
||||||
d.decoder.Close()
|
|
||||||
}
|
|
|
@ -1,114 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright 2014 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 versioned_test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"encoding/json"
|
|
||||||
"io"
|
|
||||||
"testing"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
|
||||||
"k8s.io/apimachinery/pkg/runtime/serializer/streaming"
|
|
||||||
"k8s.io/apimachinery/pkg/util/wait"
|
|
||||||
"k8s.io/apimachinery/pkg/watch"
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
|
||||||
"k8s.io/kubernetes/pkg/api/testapi"
|
|
||||||
restclientwatch "k8s.io/kubernetes/pkg/client/restclient/watch"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestDecoder(t *testing.T) {
|
|
||||||
table := []watch.EventType{watch.Added, watch.Deleted, watch.Modified, watch.Error}
|
|
||||||
|
|
||||||
for _, eventType := range table {
|
|
||||||
out, in := io.Pipe()
|
|
||||||
codec := testapi.Default.Codec()
|
|
||||||
decoder := restclientwatch.NewDecoder(streaming.NewDecoder(out, codec), codec)
|
|
||||||
|
|
||||||
expect := &api.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo"}}
|
|
||||||
encoder := json.NewEncoder(in)
|
|
||||||
go func() {
|
|
||||||
data, err := runtime.Encode(testapi.Default.Codec(), expect)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("Unexpected error %v", err)
|
|
||||||
}
|
|
||||||
event := metav1.WatchEvent{
|
|
||||||
Type: string(eventType),
|
|
||||||
Object: runtime.RawExtension{Raw: json.RawMessage(data)},
|
|
||||||
}
|
|
||||||
if err := encoder.Encode(&event); err != nil {
|
|
||||||
t.Errorf("Unexpected error %v", err)
|
|
||||||
}
|
|
||||||
in.Close()
|
|
||||||
}()
|
|
||||||
|
|
||||||
done := make(chan struct{})
|
|
||||||
go func() {
|
|
||||||
action, got, err := decoder.Decode()
|
|
||||||
if err != nil {
|
|
||||||
t.Fatalf("Unexpected error %v", err)
|
|
||||||
}
|
|
||||||
if e, a := eventType, action; e != a {
|
|
||||||
t.Errorf("Expected %v, got %v", e, a)
|
|
||||||
}
|
|
||||||
if e, a := expect, got; !api.Semantic.DeepDerivative(e, a) {
|
|
||||||
t.Errorf("Expected %v, got %v", e, a)
|
|
||||||
}
|
|
||||||
t.Logf("Exited read")
|
|
||||||
close(done)
|
|
||||||
}()
|
|
||||||
<-done
|
|
||||||
|
|
||||||
done = make(chan struct{})
|
|
||||||
go func() {
|
|
||||||
_, _, err := decoder.Decode()
|
|
||||||
if err == nil {
|
|
||||||
t.Errorf("Unexpected nil error")
|
|
||||||
}
|
|
||||||
close(done)
|
|
||||||
}()
|
|
||||||
<-done
|
|
||||||
|
|
||||||
decoder.Close()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestDecoder_SourceClose(t *testing.T) {
|
|
||||||
out, in := io.Pipe()
|
|
||||||
codec := testapi.Default.Codec()
|
|
||||||
decoder := restclientwatch.NewDecoder(streaming.NewDecoder(out, codec), codec)
|
|
||||||
|
|
||||||
done := make(chan struct{})
|
|
||||||
|
|
||||||
go func() {
|
|
||||||
_, _, err := decoder.Decode()
|
|
||||||
if err == nil {
|
|
||||||
t.Errorf("Unexpected nil error")
|
|
||||||
}
|
|
||||||
close(done)
|
|
||||||
}()
|
|
||||||
|
|
||||||
in.Close()
|
|
||||||
|
|
||||||
select {
|
|
||||||
case <-done:
|
|
||||||
break
|
|
||||||
case <-time.After(wait.ForeverTestTimeout):
|
|
||||||
t.Error("Timeout")
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,56 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright 2014 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 versioned
|
|
||||||
|
|
||||||
import (
|
|
||||||
"encoding/json"
|
|
||||||
|
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
|
||||||
"k8s.io/apimachinery/pkg/runtime/serializer/streaming"
|
|
||||||
"k8s.io/apimachinery/pkg/watch"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Encoder serializes watch.Events into io.Writer. The internal objects
|
|
||||||
// are encoded using embedded encoder, and the outer Event is serialized
|
|
||||||
// using encoder.
|
|
||||||
// TODO: this type is only used by tests
|
|
||||||
type Encoder struct {
|
|
||||||
encoder streaming.Encoder
|
|
||||||
embeddedEncoder runtime.Encoder
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewEncoder(encoder streaming.Encoder, embeddedEncoder runtime.Encoder) *Encoder {
|
|
||||||
return &Encoder{
|
|
||||||
encoder: encoder,
|
|
||||||
embeddedEncoder: embeddedEncoder,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Encode writes an event to the writer. Returns an error
|
|
||||||
// if the writer is closed or an object can't be encoded.
|
|
||||||
func (e *Encoder) Encode(event *watch.Event) error {
|
|
||||||
data, err := runtime.Encode(e.embeddedEncoder, event.Object)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
// FIXME: get rid of json.RawMessage.
|
|
||||||
return e.encoder.Encode(&metav1.WatchEvent{
|
|
||||||
Type: string(event.Type),
|
|
||||||
Object: runtime.RawExtension{Raw: json.RawMessage(data)},
|
|
||||||
})
|
|
||||||
}
|
|
|
@ -1,79 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright 2014 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 versioned_test
|
|
||||||
|
|
||||||
import (
|
|
||||||
"bytes"
|
|
||||||
"io/ioutil"
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
|
||||||
"k8s.io/apimachinery/pkg/runtime/serializer/streaming"
|
|
||||||
"k8s.io/apimachinery/pkg/watch"
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
|
||||||
"k8s.io/kubernetes/pkg/api/testapi"
|
|
||||||
restclientwatch "k8s.io/kubernetes/pkg/client/restclient/watch"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestEncodeDecodeRoundTrip(t *testing.T) {
|
|
||||||
testCases := []struct {
|
|
||||||
Type watch.EventType
|
|
||||||
Object runtime.Object
|
|
||||||
Codec runtime.Codec
|
|
||||||
}{
|
|
||||||
{
|
|
||||||
watch.Added,
|
|
||||||
&api.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo"}},
|
|
||||||
testapi.Default.Codec(),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
watch.Modified,
|
|
||||||
&api.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo"}},
|
|
||||||
testapi.Default.Codec(),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
watch.Deleted,
|
|
||||||
&api.Pod{ObjectMeta: metav1.ObjectMeta{Name: "foo"}},
|
|
||||||
testapi.Default.Codec(),
|
|
||||||
},
|
|
||||||
}
|
|
||||||
for i, testCase := range testCases {
|
|
||||||
buf := &bytes.Buffer{}
|
|
||||||
|
|
||||||
codec := testCase.Codec
|
|
||||||
encoder := restclientwatch.NewEncoder(streaming.NewEncoder(buf, codec), codec)
|
|
||||||
if err := encoder.Encode(&watch.Event{Type: testCase.Type, Object: testCase.Object}); err != nil {
|
|
||||||
t.Errorf("%d: unexpected error: %v", i, err)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
rc := ioutil.NopCloser(buf)
|
|
||||||
decoder := restclientwatch.NewDecoder(streaming.NewDecoder(rc, codec), codec)
|
|
||||||
event, obj, err := decoder.Decode()
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("%d: unexpected error: %v", i, err)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if !api.Semantic.DeepDerivative(testCase.Object, obj) {
|
|
||||||
t.Errorf("%d: expected %#v, got %#v", i, testCase.Object, obj)
|
|
||||||
}
|
|
||||||
if event != testCase.Type {
|
|
||||||
t.Errorf("%d: unexpected type: %#v", i, event)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -20,7 +20,6 @@ go_library(
|
||||||
"//pkg/api:go_default_library",
|
"//pkg/api:go_default_library",
|
||||||
"//pkg/api/v1:go_default_library",
|
"//pkg/api/v1:go_default_library",
|
||||||
"//pkg/client/restclient:go_default_library",
|
"//pkg/client/restclient:go_default_library",
|
||||||
"//pkg/util/flowcontrol:go_default_library",
|
|
||||||
"//vendor:k8s.io/apimachinery/pkg/api/meta",
|
"//vendor:k8s.io/apimachinery/pkg/api/meta",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
|
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1/unstructured",
|
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1/unstructured",
|
||||||
|
@ -30,6 +29,7 @@ go_library(
|
||||||
"//vendor:k8s.io/apimachinery/pkg/runtime/serializer",
|
"//vendor:k8s.io/apimachinery/pkg/runtime/serializer",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/types",
|
"//vendor:k8s.io/apimachinery/pkg/types",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/watch",
|
"//vendor:k8s.io/apimachinery/pkg/watch",
|
||||||
|
"//vendor:k8s.io/client-go/pkg/util/flowcontrol",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -44,7 +44,6 @@ go_test(
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/api/v1:go_default_library",
|
"//pkg/api/v1:go_default_library",
|
||||||
"//pkg/client/restclient:go_default_library",
|
"//pkg/client/restclient:go_default_library",
|
||||||
"//pkg/client/restclient/watch:go_default_library",
|
|
||||||
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
|
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1/unstructured",
|
"//vendor:k8s.io/apimachinery/pkg/apis/meta/v1/unstructured",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/runtime",
|
"//vendor:k8s.io/apimachinery/pkg/runtime",
|
||||||
|
@ -52,6 +51,7 @@ go_test(
|
||||||
"//vendor:k8s.io/apimachinery/pkg/runtime/serializer/streaming",
|
"//vendor:k8s.io/apimachinery/pkg/runtime/serializer/streaming",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/types",
|
"//vendor:k8s.io/apimachinery/pkg/types",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/watch",
|
"//vendor:k8s.io/apimachinery/pkg/watch",
|
||||||
|
"//vendor:k8s.io/client-go/rest/watch",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -34,10 +34,10 @@ import (
|
||||||
"k8s.io/apimachinery/pkg/runtime/serializer"
|
"k8s.io/apimachinery/pkg/runtime/serializer"
|
||||||
"k8s.io/apimachinery/pkg/types"
|
"k8s.io/apimachinery/pkg/types"
|
||||||
"k8s.io/apimachinery/pkg/watch"
|
"k8s.io/apimachinery/pkg/watch"
|
||||||
|
"k8s.io/client-go/pkg/util/flowcontrol"
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
"k8s.io/kubernetes/pkg/client/restclient"
|
"k8s.io/kubernetes/pkg/client/restclient"
|
||||||
"k8s.io/kubernetes/pkg/util/flowcontrol"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Client is a Kubernetes client that allows you to access metadata
|
// Client is a Kubernetes client that allows you to access metadata
|
||||||
|
|
|
@ -32,9 +32,9 @@ import (
|
||||||
"k8s.io/apimachinery/pkg/runtime/serializer/streaming"
|
"k8s.io/apimachinery/pkg/runtime/serializer/streaming"
|
||||||
"k8s.io/apimachinery/pkg/types"
|
"k8s.io/apimachinery/pkg/types"
|
||||||
"k8s.io/apimachinery/pkg/watch"
|
"k8s.io/apimachinery/pkg/watch"
|
||||||
|
restclientwatch "k8s.io/client-go/rest/watch"
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
"k8s.io/kubernetes/pkg/client/restclient"
|
"k8s.io/kubernetes/pkg/client/restclient"
|
||||||
restclientwatch "k8s.io/kubernetes/pkg/client/restclient/watch"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func getJSON(version, kind, name string) []byte {
|
func getJSON(version, kind, name string) []byte {
|
||||||
|
|
|
@ -26,8 +26,6 @@ go_library(
|
||||||
"//pkg/api:go_default_library",
|
"//pkg/api:go_default_library",
|
||||||
"//pkg/client/restclient:go_default_library",
|
"//pkg/client/restclient:go_default_library",
|
||||||
"//pkg/client/unversioned/auth:go_default_library",
|
"//pkg/client/unversioned/auth:go_default_library",
|
||||||
"//pkg/client/unversioned/clientcmd/api:go_default_library",
|
|
||||||
"//pkg/client/unversioned/clientcmd/api/latest:go_default_library",
|
|
||||||
"//pkg/util/homedir:go_default_library",
|
"//pkg/util/homedir:go_default_library",
|
||||||
"//vendor:github.com/golang/glog",
|
"//vendor:github.com/golang/glog",
|
||||||
"//vendor:github.com/howeyc/gopass",
|
"//vendor:github.com/howeyc/gopass",
|
||||||
|
@ -37,6 +35,8 @@ go_library(
|
||||||
"//vendor:k8s.io/apimachinery/pkg/runtime/schema",
|
"//vendor:k8s.io/apimachinery/pkg/runtime/schema",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/util/errors",
|
"//vendor:k8s.io/apimachinery/pkg/util/errors",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/util/validation",
|
"//vendor:k8s.io/apimachinery/pkg/util/validation",
|
||||||
|
"//vendor:k8s.io/client-go/tools/clientcmd/api",
|
||||||
|
"//vendor:k8s.io/client-go/tools/clientcmd/api/latest",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -52,12 +52,12 @@ go_test(
|
||||||
tags = ["automanaged"],
|
tags = ["automanaged"],
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/client/restclient:go_default_library",
|
"//pkg/client/restclient:go_default_library",
|
||||||
"//pkg/client/unversioned/clientcmd/api:go_default_library",
|
|
||||||
"//pkg/client/unversioned/clientcmd/api/latest:go_default_library",
|
|
||||||
"//vendor:github.com/ghodss/yaml",
|
"//vendor:github.com/ghodss/yaml",
|
||||||
"//vendor:github.com/imdario/mergo",
|
"//vendor:github.com/imdario/mergo",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/runtime",
|
"//vendor:k8s.io/apimachinery/pkg/runtime",
|
||||||
"//vendor:k8s.io/apimachinery/pkg/util/errors",
|
"//vendor:k8s.io/apimachinery/pkg/util/errors",
|
||||||
|
"//vendor:k8s.io/client-go/tools/clientcmd/api",
|
||||||
|
"//vendor:k8s.io/client-go/tools/clientcmd/api/latest",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -70,9 +70,6 @@ filegroup(
|
||||||
|
|
||||||
filegroup(
|
filegroup(
|
||||||
name = "all-srcs",
|
name = "all-srcs",
|
||||||
srcs = [
|
srcs = [":package-srcs"],
|
||||||
":package-srcs",
|
|
||||||
"//pkg/client/unversioned/clientcmd/api:all-srcs",
|
|
||||||
],
|
|
||||||
tags = ["automanaged"],
|
tags = ["automanaged"],
|
||||||
)
|
)
|
||||||
|
|
|
@ -1,51 +0,0 @@
|
||||||
package(default_visibility = ["//visibility:public"])
|
|
||||||
|
|
||||||
licenses(["notice"])
|
|
||||||
|
|
||||||
load(
|
|
||||||
"@io_bazel_rules_go//go:def.bzl",
|
|
||||||
"go_library",
|
|
||||||
"go_test",
|
|
||||||
)
|
|
||||||
|
|
||||||
go_library(
|
|
||||||
name = "go_default_library",
|
|
||||||
srcs = [
|
|
||||||
"helpers.go",
|
|
||||||
"register.go",
|
|
||||||
"types.go",
|
|
||||||
],
|
|
||||||
tags = ["automanaged"],
|
|
||||||
deps = [
|
|
||||||
"//vendor:k8s.io/apimachinery/pkg/runtime",
|
|
||||||
"//vendor:k8s.io/apimachinery/pkg/runtime/schema",
|
|
||||||
],
|
|
||||||
)
|
|
||||||
|
|
||||||
go_test(
|
|
||||||
name = "go_default_test",
|
|
||||||
srcs = [
|
|
||||||
"helpers_test.go",
|
|
||||||
"types_test.go",
|
|
||||||
],
|
|
||||||
library = ":go_default_library",
|
|
||||||
tags = ["automanaged"],
|
|
||||||
deps = ["//vendor:github.com/ghodss/yaml"],
|
|
||||||
)
|
|
||||||
|
|
||||||
filegroup(
|
|
||||||
name = "package-srcs",
|
|
||||||
srcs = glob(["**"]),
|
|
||||||
tags = ["automanaged"],
|
|
||||||
visibility = ["//visibility:private"],
|
|
||||||
)
|
|
||||||
|
|
||||||
filegroup(
|
|
||||||
name = "all-srcs",
|
|
||||||
srcs = [
|
|
||||||
":package-srcs",
|
|
||||||
"//pkg/client/unversioned/clientcmd/api/latest:all-srcs",
|
|
||||||
"//pkg/client/unversioned/clientcmd/api/v1:all-srcs",
|
|
||||||
],
|
|
||||||
tags = ["automanaged"],
|
|
||||||
)
|
|
|
@ -1,183 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright 2015 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 api
|
|
||||||
|
|
||||||
import (
|
|
||||||
"encoding/base64"
|
|
||||||
"errors"
|
|
||||||
"fmt"
|
|
||||||
"io/ioutil"
|
|
||||||
"os"
|
|
||||||
"path"
|
|
||||||
"path/filepath"
|
|
||||||
)
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
sDec, _ := base64.StdEncoding.DecodeString("REDACTED+")
|
|
||||||
redactedBytes = []byte(string(sDec))
|
|
||||||
}
|
|
||||||
|
|
||||||
// IsConfigEmpty returns true if the config is empty.
|
|
||||||
func IsConfigEmpty(config *Config) bool {
|
|
||||||
return len(config.AuthInfos) == 0 && len(config.Clusters) == 0 && len(config.Contexts) == 0 &&
|
|
||||||
len(config.CurrentContext) == 0 &&
|
|
||||||
len(config.Preferences.Extensions) == 0 && !config.Preferences.Colors &&
|
|
||||||
len(config.Extensions) == 0
|
|
||||||
}
|
|
||||||
|
|
||||||
// MinifyConfig read the current context and uses that to keep only the relevant pieces of config
|
|
||||||
// This is useful for making secrets based on kubeconfig files
|
|
||||||
func MinifyConfig(config *Config) error {
|
|
||||||
if len(config.CurrentContext) == 0 {
|
|
||||||
return errors.New("current-context must exist in order to minify")
|
|
||||||
}
|
|
||||||
|
|
||||||
currContext, exists := config.Contexts[config.CurrentContext]
|
|
||||||
if !exists {
|
|
||||||
return fmt.Errorf("cannot locate context %v", config.CurrentContext)
|
|
||||||
}
|
|
||||||
|
|
||||||
newContexts := map[string]*Context{}
|
|
||||||
newContexts[config.CurrentContext] = currContext
|
|
||||||
|
|
||||||
newClusters := map[string]*Cluster{}
|
|
||||||
if len(currContext.Cluster) > 0 {
|
|
||||||
if _, exists := config.Clusters[currContext.Cluster]; !exists {
|
|
||||||
return fmt.Errorf("cannot locate cluster %v", currContext.Cluster)
|
|
||||||
}
|
|
||||||
|
|
||||||
newClusters[currContext.Cluster] = config.Clusters[currContext.Cluster]
|
|
||||||
}
|
|
||||||
|
|
||||||
newAuthInfos := map[string]*AuthInfo{}
|
|
||||||
if len(currContext.AuthInfo) > 0 {
|
|
||||||
if _, exists := config.AuthInfos[currContext.AuthInfo]; !exists {
|
|
||||||
return fmt.Errorf("cannot locate user %v", currContext.AuthInfo)
|
|
||||||
}
|
|
||||||
|
|
||||||
newAuthInfos[currContext.AuthInfo] = config.AuthInfos[currContext.AuthInfo]
|
|
||||||
}
|
|
||||||
|
|
||||||
config.AuthInfos = newAuthInfos
|
|
||||||
config.Clusters = newClusters
|
|
||||||
config.Contexts = newContexts
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
var redactedBytes []byte
|
|
||||||
|
|
||||||
// Flatten redacts raw data entries from the config object for a human-readable view.
|
|
||||||
func ShortenConfig(config *Config) {
|
|
||||||
// trick json encoder into printing a human readable string in the raw data
|
|
||||||
// by base64 decoding what we want to print. Relies on implementation of
|
|
||||||
// http://golang.org/pkg/encoding/json/#Marshal using base64 to encode []byte
|
|
||||||
for key, authInfo := range config.AuthInfos {
|
|
||||||
if len(authInfo.ClientKeyData) > 0 {
|
|
||||||
authInfo.ClientKeyData = redactedBytes
|
|
||||||
}
|
|
||||||
if len(authInfo.ClientCertificateData) > 0 {
|
|
||||||
authInfo.ClientCertificateData = redactedBytes
|
|
||||||
}
|
|
||||||
config.AuthInfos[key] = authInfo
|
|
||||||
}
|
|
||||||
for key, cluster := range config.Clusters {
|
|
||||||
if len(cluster.CertificateAuthorityData) > 0 {
|
|
||||||
cluster.CertificateAuthorityData = redactedBytes
|
|
||||||
}
|
|
||||||
config.Clusters[key] = cluster
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Flatten changes the config object into a self contained config (useful for making secrets)
|
|
||||||
func FlattenConfig(config *Config) error {
|
|
||||||
for key, authInfo := range config.AuthInfos {
|
|
||||||
baseDir, err := MakeAbs(path.Dir(authInfo.LocationOfOrigin), "")
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := FlattenContent(&authInfo.ClientCertificate, &authInfo.ClientCertificateData, baseDir); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if err := FlattenContent(&authInfo.ClientKey, &authInfo.ClientKeyData, baseDir); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
config.AuthInfos[key] = authInfo
|
|
||||||
}
|
|
||||||
for key, cluster := range config.Clusters {
|
|
||||||
baseDir, err := MakeAbs(path.Dir(cluster.LocationOfOrigin), "")
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := FlattenContent(&cluster.CertificateAuthority, &cluster.CertificateAuthorityData, baseDir); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
config.Clusters[key] = cluster
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func FlattenContent(path *string, contents *[]byte, baseDir string) error {
|
|
||||||
if len(*path) != 0 {
|
|
||||||
if len(*contents) > 0 {
|
|
||||||
return errors.New("cannot have values for both path and contents")
|
|
||||||
}
|
|
||||||
|
|
||||||
var err error
|
|
||||||
absPath := ResolvePath(*path, baseDir)
|
|
||||||
*contents, err = ioutil.ReadFile(absPath)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
*path = ""
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// ResolvePath returns the path as an absolute paths, relative to the given base directory
|
|
||||||
func ResolvePath(path string, base string) string {
|
|
||||||
// Don't resolve empty paths
|
|
||||||
if len(path) > 0 {
|
|
||||||
// Don't resolve absolute paths
|
|
||||||
if !filepath.IsAbs(path) {
|
|
||||||
return filepath.Join(base, path)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return path
|
|
||||||
}
|
|
||||||
|
|
||||||
func MakeAbs(path, base string) (string, error) {
|
|
||||||
if filepath.IsAbs(path) {
|
|
||||||
return path, nil
|
|
||||||
}
|
|
||||||
if len(base) == 0 {
|
|
||||||
cwd, err := os.Getwd()
|
|
||||||
if err != nil {
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
base = cwd
|
|
||||||
}
|
|
||||||
return filepath.Join(base, path), nil
|
|
||||||
}
|
|
|
@ -1,301 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright 2015 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 api
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"io/ioutil"
|
|
||||||
"os"
|
|
||||||
"reflect"
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"github.com/ghodss/yaml"
|
|
||||||
)
|
|
||||||
|
|
||||||
func newMergedConfig(certFile, certContent, keyFile, keyContent, caFile, caContent string, t *testing.T) Config {
|
|
||||||
if err := ioutil.WriteFile(certFile, []byte(certContent), 0644); err != nil {
|
|
||||||
t.Errorf("unexpected error: %v", err)
|
|
||||||
}
|
|
||||||
if err := ioutil.WriteFile(keyFile, []byte(keyContent), 0600); err != nil {
|
|
||||||
t.Errorf("unexpected error: %v", err)
|
|
||||||
}
|
|
||||||
if err := ioutil.WriteFile(caFile, []byte(caContent), 0644); err != nil {
|
|
||||||
t.Errorf("unexpected error: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return Config{
|
|
||||||
AuthInfos: map[string]*AuthInfo{
|
|
||||||
"red-user": {Token: "red-token", ClientCertificateData: []byte(certContent), ClientKeyData: []byte(keyContent)},
|
|
||||||
"blue-user": {Token: "blue-token", ClientCertificate: certFile, ClientKey: keyFile}},
|
|
||||||
Clusters: map[string]*Cluster{
|
|
||||||
"cow-cluster": {Server: "http://cow.org:8080", CertificateAuthorityData: []byte(caContent)},
|
|
||||||
"chicken-cluster": {Server: "http://chicken.org:8080", CertificateAuthority: caFile}},
|
|
||||||
Contexts: map[string]*Context{
|
|
||||||
"federal-context": {AuthInfo: "red-user", Cluster: "cow-cluster"},
|
|
||||||
"shaker-context": {AuthInfo: "blue-user", Cluster: "chicken-cluster"}},
|
|
||||||
CurrentContext: "federal-context",
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestMinifySuccess(t *testing.T) {
|
|
||||||
certFile, _ := ioutil.TempFile("", "")
|
|
||||||
defer os.Remove(certFile.Name())
|
|
||||||
keyFile, _ := ioutil.TempFile("", "")
|
|
||||||
defer os.Remove(keyFile.Name())
|
|
||||||
caFile, _ := ioutil.TempFile("", "")
|
|
||||||
defer os.Remove(caFile.Name())
|
|
||||||
|
|
||||||
mutatingConfig := newMergedConfig(certFile.Name(), "cert", keyFile.Name(), "key", caFile.Name(), "ca", t)
|
|
||||||
|
|
||||||
if err := MinifyConfig(&mutatingConfig); err != nil {
|
|
||||||
t.Errorf("unexpected error: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(mutatingConfig.Contexts) > 1 {
|
|
||||||
t.Errorf("unexpected contexts: %v", mutatingConfig.Contexts)
|
|
||||||
}
|
|
||||||
if _, exists := mutatingConfig.Contexts["federal-context"]; !exists {
|
|
||||||
t.Errorf("missing context")
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(mutatingConfig.Clusters) > 1 {
|
|
||||||
t.Errorf("unexpected clusters: %v", mutatingConfig.Clusters)
|
|
||||||
}
|
|
||||||
if _, exists := mutatingConfig.Clusters["cow-cluster"]; !exists {
|
|
||||||
t.Errorf("missing cluster")
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(mutatingConfig.AuthInfos) > 1 {
|
|
||||||
t.Errorf("unexpected users: %v", mutatingConfig.AuthInfos)
|
|
||||||
}
|
|
||||||
if _, exists := mutatingConfig.AuthInfos["red-user"]; !exists {
|
|
||||||
t.Errorf("missing user")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestMinifyMissingContext(t *testing.T) {
|
|
||||||
certFile, _ := ioutil.TempFile("", "")
|
|
||||||
defer os.Remove(certFile.Name())
|
|
||||||
keyFile, _ := ioutil.TempFile("", "")
|
|
||||||
defer os.Remove(keyFile.Name())
|
|
||||||
caFile, _ := ioutil.TempFile("", "")
|
|
||||||
defer os.Remove(caFile.Name())
|
|
||||||
|
|
||||||
mutatingConfig := newMergedConfig(certFile.Name(), "cert", keyFile.Name(), "key", caFile.Name(), "ca", t)
|
|
||||||
mutatingConfig.CurrentContext = "missing"
|
|
||||||
|
|
||||||
errMsg := "cannot locate context missing"
|
|
||||||
|
|
||||||
if err := MinifyConfig(&mutatingConfig); err == nil || err.Error() != errMsg {
|
|
||||||
t.Errorf("expected %v, got %v", errMsg, err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestMinifyMissingCluster(t *testing.T) {
|
|
||||||
certFile, _ := ioutil.TempFile("", "")
|
|
||||||
defer os.Remove(certFile.Name())
|
|
||||||
keyFile, _ := ioutil.TempFile("", "")
|
|
||||||
defer os.Remove(keyFile.Name())
|
|
||||||
caFile, _ := ioutil.TempFile("", "")
|
|
||||||
defer os.Remove(caFile.Name())
|
|
||||||
|
|
||||||
mutatingConfig := newMergedConfig(certFile.Name(), "cert", keyFile.Name(), "key", caFile.Name(), "ca", t)
|
|
||||||
delete(mutatingConfig.Clusters, mutatingConfig.Contexts[mutatingConfig.CurrentContext].Cluster)
|
|
||||||
|
|
||||||
errMsg := "cannot locate cluster cow-cluster"
|
|
||||||
|
|
||||||
if err := MinifyConfig(&mutatingConfig); err == nil || err.Error() != errMsg {
|
|
||||||
t.Errorf("expected %v, got %v", errMsg, err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestMinifyMissingAuthInfo(t *testing.T) {
|
|
||||||
certFile, _ := ioutil.TempFile("", "")
|
|
||||||
defer os.Remove(certFile.Name())
|
|
||||||
keyFile, _ := ioutil.TempFile("", "")
|
|
||||||
defer os.Remove(keyFile.Name())
|
|
||||||
caFile, _ := ioutil.TempFile("", "")
|
|
||||||
defer os.Remove(caFile.Name())
|
|
||||||
|
|
||||||
mutatingConfig := newMergedConfig(certFile.Name(), "cert", keyFile.Name(), "key", caFile.Name(), "ca", t)
|
|
||||||
delete(mutatingConfig.AuthInfos, mutatingConfig.Contexts[mutatingConfig.CurrentContext].AuthInfo)
|
|
||||||
|
|
||||||
errMsg := "cannot locate user red-user"
|
|
||||||
|
|
||||||
if err := MinifyConfig(&mutatingConfig); err == nil || err.Error() != errMsg {
|
|
||||||
t.Errorf("expected %v, got %v", errMsg, err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestFlattenSuccess(t *testing.T) {
|
|
||||||
certFile, _ := ioutil.TempFile("", "")
|
|
||||||
defer os.Remove(certFile.Name())
|
|
||||||
keyFile, _ := ioutil.TempFile("", "")
|
|
||||||
defer os.Remove(keyFile.Name())
|
|
||||||
caFile, _ := ioutil.TempFile("", "")
|
|
||||||
defer os.Remove(caFile.Name())
|
|
||||||
|
|
||||||
certData := "cert"
|
|
||||||
keyData := "key"
|
|
||||||
caData := "ca"
|
|
||||||
|
|
||||||
unchangingCluster := "cow-cluster"
|
|
||||||
unchangingAuthInfo := "red-user"
|
|
||||||
changingCluster := "chicken-cluster"
|
|
||||||
changingAuthInfo := "blue-user"
|
|
||||||
|
|
||||||
startingConfig := newMergedConfig(certFile.Name(), certData, keyFile.Name(), keyData, caFile.Name(), caData, t)
|
|
||||||
mutatingConfig := startingConfig
|
|
||||||
|
|
||||||
if err := FlattenConfig(&mutatingConfig); err != nil {
|
|
||||||
t.Errorf("unexpected error: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(mutatingConfig.Contexts) != 2 {
|
|
||||||
t.Errorf("unexpected contexts: %v", mutatingConfig.Contexts)
|
|
||||||
}
|
|
||||||
if !reflect.DeepEqual(startingConfig.Contexts, mutatingConfig.Contexts) {
|
|
||||||
t.Errorf("expected %v, got %v", startingConfig.Contexts, mutatingConfig.Contexts)
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(mutatingConfig.Clusters) != 2 {
|
|
||||||
t.Errorf("unexpected clusters: %v", mutatingConfig.Clusters)
|
|
||||||
}
|
|
||||||
if !reflect.DeepEqual(startingConfig.Clusters[unchangingCluster], mutatingConfig.Clusters[unchangingCluster]) {
|
|
||||||
t.Errorf("expected %v, got %v", startingConfig.Clusters[unchangingCluster], mutatingConfig.Clusters[unchangingCluster])
|
|
||||||
}
|
|
||||||
if len(mutatingConfig.Clusters[changingCluster].CertificateAuthority) != 0 {
|
|
||||||
t.Errorf("unexpected caFile")
|
|
||||||
}
|
|
||||||
if string(mutatingConfig.Clusters[changingCluster].CertificateAuthorityData) != caData {
|
|
||||||
t.Errorf("expected %v, got %v", caData, string(mutatingConfig.Clusters[changingCluster].CertificateAuthorityData))
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(mutatingConfig.AuthInfos) != 2 {
|
|
||||||
t.Errorf("unexpected users: %v", mutatingConfig.AuthInfos)
|
|
||||||
}
|
|
||||||
if !reflect.DeepEqual(startingConfig.AuthInfos[unchangingAuthInfo], mutatingConfig.AuthInfos[unchangingAuthInfo]) {
|
|
||||||
t.Errorf("expected %v, got %v", startingConfig.AuthInfos[unchangingAuthInfo], mutatingConfig.AuthInfos[unchangingAuthInfo])
|
|
||||||
}
|
|
||||||
if len(mutatingConfig.AuthInfos[changingAuthInfo].ClientCertificate) != 0 {
|
|
||||||
t.Errorf("unexpected caFile")
|
|
||||||
}
|
|
||||||
if string(mutatingConfig.AuthInfos[changingAuthInfo].ClientCertificateData) != certData {
|
|
||||||
t.Errorf("expected %v, got %v", certData, string(mutatingConfig.AuthInfos[changingAuthInfo].ClientCertificateData))
|
|
||||||
}
|
|
||||||
if len(mutatingConfig.AuthInfos[changingAuthInfo].ClientKey) != 0 {
|
|
||||||
t.Errorf("unexpected caFile")
|
|
||||||
}
|
|
||||||
if string(mutatingConfig.AuthInfos[changingAuthInfo].ClientKeyData) != keyData {
|
|
||||||
t.Errorf("expected %v, got %v", keyData, string(mutatingConfig.AuthInfos[changingAuthInfo].ClientKeyData))
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func Example_minifyAndShorten() {
|
|
||||||
certFile, _ := ioutil.TempFile("", "")
|
|
||||||
defer os.Remove(certFile.Name())
|
|
||||||
keyFile, _ := ioutil.TempFile("", "")
|
|
||||||
defer os.Remove(keyFile.Name())
|
|
||||||
caFile, _ := ioutil.TempFile("", "")
|
|
||||||
defer os.Remove(caFile.Name())
|
|
||||||
|
|
||||||
certData := "cert"
|
|
||||||
keyData := "key"
|
|
||||||
caData := "ca"
|
|
||||||
|
|
||||||
config := newMergedConfig(certFile.Name(), certData, keyFile.Name(), keyData, caFile.Name(), caData, nil)
|
|
||||||
|
|
||||||
MinifyConfig(&config)
|
|
||||||
ShortenConfig(&config)
|
|
||||||
|
|
||||||
output, _ := yaml.Marshal(config)
|
|
||||||
fmt.Printf("%s", string(output))
|
|
||||||
// Output:
|
|
||||||
// clusters:
|
|
||||||
// cow-cluster:
|
|
||||||
// LocationOfOrigin: ""
|
|
||||||
// certificate-authority-data: REDACTED
|
|
||||||
// server: http://cow.org:8080
|
|
||||||
// contexts:
|
|
||||||
// federal-context:
|
|
||||||
// LocationOfOrigin: ""
|
|
||||||
// cluster: cow-cluster
|
|
||||||
// user: red-user
|
|
||||||
// current-context: federal-context
|
|
||||||
// preferences: {}
|
|
||||||
// users:
|
|
||||||
// red-user:
|
|
||||||
// LocationOfOrigin: ""
|
|
||||||
// client-certificate-data: REDACTED
|
|
||||||
// client-key-data: REDACTED
|
|
||||||
// token: red-token
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestShortenSuccess(t *testing.T) {
|
|
||||||
certFile, _ := ioutil.TempFile("", "")
|
|
||||||
defer os.Remove(certFile.Name())
|
|
||||||
keyFile, _ := ioutil.TempFile("", "")
|
|
||||||
defer os.Remove(keyFile.Name())
|
|
||||||
caFile, _ := ioutil.TempFile("", "")
|
|
||||||
defer os.Remove(caFile.Name())
|
|
||||||
|
|
||||||
certData := "cert"
|
|
||||||
keyData := "key"
|
|
||||||
caData := "ca"
|
|
||||||
|
|
||||||
unchangingCluster := "chicken-cluster"
|
|
||||||
unchangingAuthInfo := "blue-user"
|
|
||||||
changingCluster := "cow-cluster"
|
|
||||||
changingAuthInfo := "red-user"
|
|
||||||
|
|
||||||
startingConfig := newMergedConfig(certFile.Name(), certData, keyFile.Name(), keyData, caFile.Name(), caData, t)
|
|
||||||
mutatingConfig := startingConfig
|
|
||||||
|
|
||||||
ShortenConfig(&mutatingConfig)
|
|
||||||
|
|
||||||
if len(mutatingConfig.Contexts) != 2 {
|
|
||||||
t.Errorf("unexpected contexts: %v", mutatingConfig.Contexts)
|
|
||||||
}
|
|
||||||
if !reflect.DeepEqual(startingConfig.Contexts, mutatingConfig.Contexts) {
|
|
||||||
t.Errorf("expected %v, got %v", startingConfig.Contexts, mutatingConfig.Contexts)
|
|
||||||
}
|
|
||||||
|
|
||||||
redacted := string(redactedBytes)
|
|
||||||
if len(mutatingConfig.Clusters) != 2 {
|
|
||||||
t.Errorf("unexpected clusters: %v", mutatingConfig.Clusters)
|
|
||||||
}
|
|
||||||
if !reflect.DeepEqual(startingConfig.Clusters[unchangingCluster], mutatingConfig.Clusters[unchangingCluster]) {
|
|
||||||
t.Errorf("expected %v, got %v", startingConfig.Clusters[unchangingCluster], mutatingConfig.Clusters[unchangingCluster])
|
|
||||||
}
|
|
||||||
if string(mutatingConfig.Clusters[changingCluster].CertificateAuthorityData) != redacted {
|
|
||||||
t.Errorf("expected %v, got %v", redacted, string(mutatingConfig.Clusters[changingCluster].CertificateAuthorityData))
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(mutatingConfig.AuthInfos) != 2 {
|
|
||||||
t.Errorf("unexpected users: %v", mutatingConfig.AuthInfos)
|
|
||||||
}
|
|
||||||
if !reflect.DeepEqual(startingConfig.AuthInfos[unchangingAuthInfo], mutatingConfig.AuthInfos[unchangingAuthInfo]) {
|
|
||||||
t.Errorf("expected %v, got %v", startingConfig.AuthInfos[unchangingAuthInfo], mutatingConfig.AuthInfos[unchangingAuthInfo])
|
|
||||||
}
|
|
||||||
if string(mutatingConfig.AuthInfos[changingAuthInfo].ClientCertificateData) != redacted {
|
|
||||||
t.Errorf("expected %v, got %v", redacted, string(mutatingConfig.AuthInfos[changingAuthInfo].ClientCertificateData))
|
|
||||||
}
|
|
||||||
if string(mutatingConfig.AuthInfos[changingAuthInfo].ClientKeyData) != redacted {
|
|
||||||
t.Errorf("expected %v, got %v", redacted, string(mutatingConfig.AuthInfos[changingAuthInfo].ClientKeyData))
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,35 +0,0 @@
|
||||||
package(default_visibility = ["//visibility:public"])
|
|
||||||
|
|
||||||
licenses(["notice"])
|
|
||||||
|
|
||||||
load(
|
|
||||||
"@io_bazel_rules_go//go:def.bzl",
|
|
||||||
"go_library",
|
|
||||||
)
|
|
||||||
|
|
||||||
go_library(
|
|
||||||
name = "go_default_library",
|
|
||||||
srcs = ["latest.go"],
|
|
||||||
tags = ["automanaged"],
|
|
||||||
deps = [
|
|
||||||
"//pkg/client/unversioned/clientcmd/api:go_default_library",
|
|
||||||
"//pkg/client/unversioned/clientcmd/api/v1:go_default_library",
|
|
||||||
"//vendor:k8s.io/apimachinery/pkg/runtime",
|
|
||||||
"//vendor:k8s.io/apimachinery/pkg/runtime/schema",
|
|
||||||
"//vendor:k8s.io/apimachinery/pkg/runtime/serializer/json",
|
|
||||||
"//vendor:k8s.io/apimachinery/pkg/runtime/serializer/versioning",
|
|
||||||
],
|
|
||||||
)
|
|
||||||
|
|
||||||
filegroup(
|
|
||||||
name = "package-srcs",
|
|
||||||
srcs = glob(["**"]),
|
|
||||||
tags = ["automanaged"],
|
|
||||||
visibility = ["//visibility:private"],
|
|
||||||
)
|
|
||||||
|
|
||||||
filegroup(
|
|
||||||
name = "all-srcs",
|
|
||||||
srcs = [":package-srcs"],
|
|
||||||
tags = ["automanaged"],
|
|
||||||
)
|
|
|
@ -1,66 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright 2014 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 latest
|
|
||||||
|
|
||||||
import (
|
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
|
||||||
"k8s.io/apimachinery/pkg/runtime/serializer/json"
|
|
||||||
"k8s.io/apimachinery/pkg/runtime/serializer/versioning"
|
|
||||||
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
|
|
||||||
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api/v1"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Version is the string that represents the current external default version.
|
|
||||||
const Version = "v1"
|
|
||||||
|
|
||||||
var ExternalVersion = schema.GroupVersion{Group: "", Version: "v1"}
|
|
||||||
|
|
||||||
// OldestVersion is the string that represents the oldest server version supported,
|
|
||||||
// for client code that wants to hardcode the lowest common denominator.
|
|
||||||
const OldestVersion = "v1"
|
|
||||||
|
|
||||||
// Versions is the list of versions that are recognized in code. The order provided
|
|
||||||
// may be assumed to be least feature rich to most feature rich, and clients may
|
|
||||||
// choose to prefer the latter items in the list over the former items when presented
|
|
||||||
// with a set of versions to choose.
|
|
||||||
var Versions = []string{"v1"}
|
|
||||||
|
|
||||||
var (
|
|
||||||
Codec runtime.Codec
|
|
||||||
Scheme *runtime.Scheme
|
|
||||||
)
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
Scheme = runtime.NewScheme()
|
|
||||||
if err := api.AddToScheme(Scheme); err != nil {
|
|
||||||
// Programmer error, detect immediately
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
if err := v1.AddToScheme(Scheme); err != nil {
|
|
||||||
// Programmer error, detect immediately
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
yamlSerializer := json.NewYAMLSerializer(json.DefaultMetaFactory, Scheme, Scheme)
|
|
||||||
Codec = versioning.NewDefaultingCodecForScheme(
|
|
||||||
Scheme,
|
|
||||||
yamlSerializer,
|
|
||||||
yamlSerializer,
|
|
||||||
schema.GroupVersion{Version: Version},
|
|
||||||
runtime.InternalGroupVersioner,
|
|
||||||
)
|
|
||||||
}
|
|
|
@ -1,46 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright 2014 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 api
|
|
||||||
|
|
||||||
import (
|
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
|
||||||
)
|
|
||||||
|
|
||||||
// SchemeGroupVersion is group version used to register these objects
|
|
||||||
// TODO this should be in the "kubeconfig" group
|
|
||||||
var SchemeGroupVersion = schema.GroupVersion{Group: "", Version: runtime.APIVersionInternal}
|
|
||||||
|
|
||||||
var (
|
|
||||||
SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes)
|
|
||||||
AddToScheme = SchemeBuilder.AddToScheme
|
|
||||||
)
|
|
||||||
|
|
||||||
func addKnownTypes(scheme *runtime.Scheme) error {
|
|
||||||
scheme.AddKnownTypes(SchemeGroupVersion,
|
|
||||||
&Config{},
|
|
||||||
)
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (obj *Config) GetObjectKind() schema.ObjectKind { return obj }
|
|
||||||
func (obj *Config) SetGroupVersionKind(gvk schema.GroupVersionKind) {
|
|
||||||
obj.APIVersion, obj.Kind = gvk.ToAPIVersionAndKind()
|
|
||||||
}
|
|
||||||
func (obj *Config) GroupVersionKind() schema.GroupVersionKind {
|
|
||||||
return schema.FromAPIVersionAndKind(obj.APIVersion, obj.Kind)
|
|
||||||
}
|
|
|
@ -1,178 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright 2014 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 api
|
|
||||||
|
|
||||||
import (
|
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Where possible, json tags match the cli argument names.
|
|
||||||
// Top level config objects and all values required for proper functioning are not "omitempty". Any truly optional piece of config is allowed to be omitted.
|
|
||||||
|
|
||||||
// Config holds the information needed to build connect to remote kubernetes clusters as a given user
|
|
||||||
// IMPORTANT if you add fields to this struct, please update IsConfigEmpty()
|
|
||||||
type Config struct {
|
|
||||||
// Legacy field from pkg/api/types.go TypeMeta.
|
|
||||||
// TODO(jlowdermilk): remove this after eliminating downstream dependencies.
|
|
||||||
// +optional
|
|
||||||
Kind string `json:"kind,omitempty"`
|
|
||||||
// DEPRECATED: APIVersion is the preferred api version for communicating with the kubernetes cluster (v1, v2, etc).
|
|
||||||
// Because a cluster can run multiple API groups and potentially multiple versions of each, it no longer makes sense to specify
|
|
||||||
// a single value for the cluster version.
|
|
||||||
// This field isn't really needed anyway, so we are deprecating it without replacement.
|
|
||||||
// It will be ignored if it is present.
|
|
||||||
// +optional
|
|
||||||
APIVersion string `json:"apiVersion,omitempty"`
|
|
||||||
// Preferences holds general information to be use for cli interactions
|
|
||||||
Preferences Preferences `json:"preferences"`
|
|
||||||
// Clusters is a map of referencable names to cluster configs
|
|
||||||
Clusters map[string]*Cluster `json:"clusters"`
|
|
||||||
// AuthInfos is a map of referencable names to user configs
|
|
||||||
AuthInfos map[string]*AuthInfo `json:"users"`
|
|
||||||
// Contexts is a map of referencable names to context configs
|
|
||||||
Contexts map[string]*Context `json:"contexts"`
|
|
||||||
// CurrentContext is the name of the context that you would like to use by default
|
|
||||||
CurrentContext string `json:"current-context"`
|
|
||||||
// Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields
|
|
||||||
// +optional
|
|
||||||
Extensions map[string]runtime.Object `json:"extensions,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// IMPORTANT if you add fields to this struct, please update IsConfigEmpty()
|
|
||||||
type Preferences struct {
|
|
||||||
// +optional
|
|
||||||
Colors bool `json:"colors,omitempty"`
|
|
||||||
// Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields
|
|
||||||
// +optional
|
|
||||||
Extensions map[string]runtime.Object `json:"extensions,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// Cluster contains information about how to communicate with a kubernetes cluster
|
|
||||||
type Cluster struct {
|
|
||||||
// LocationOfOrigin indicates where this object came from. It is used for round tripping config post-merge, but never serialized.
|
|
||||||
LocationOfOrigin string
|
|
||||||
// Server is the address of the kubernetes cluster (https://hostname:port).
|
|
||||||
Server string `json:"server"`
|
|
||||||
// APIVersion is the preferred api version for communicating with the kubernetes cluster (v1, v2, etc).
|
|
||||||
// +optional
|
|
||||||
APIVersion string `json:"api-version,omitempty"`
|
|
||||||
// InsecureSkipTLSVerify skips the validity check for the server's certificate. This will make your HTTPS connections insecure.
|
|
||||||
// +optional
|
|
||||||
InsecureSkipTLSVerify bool `json:"insecure-skip-tls-verify,omitempty"`
|
|
||||||
// CertificateAuthority is the path to a cert file for the certificate authority.
|
|
||||||
// +optional
|
|
||||||
CertificateAuthority string `json:"certificate-authority,omitempty"`
|
|
||||||
// CertificateAuthorityData contains PEM-encoded certificate authority certificates. Overrides CertificateAuthority
|
|
||||||
// +optional
|
|
||||||
CertificateAuthorityData []byte `json:"certificate-authority-data,omitempty"`
|
|
||||||
// Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields
|
|
||||||
// +optional
|
|
||||||
Extensions map[string]runtime.Object `json:"extensions,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// AuthInfo contains information that describes identity information. This is use to tell the kubernetes cluster who you are.
|
|
||||||
type AuthInfo struct {
|
|
||||||
// LocationOfOrigin indicates where this object came from. It is used for round tripping config post-merge, but never serialized.
|
|
||||||
LocationOfOrigin string
|
|
||||||
// ClientCertificate is the path to a client cert file for TLS.
|
|
||||||
// +optional
|
|
||||||
ClientCertificate string `json:"client-certificate,omitempty"`
|
|
||||||
// ClientCertificateData contains PEM-encoded data from a client cert file for TLS. Overrides ClientCertificate
|
|
||||||
// +optional
|
|
||||||
ClientCertificateData []byte `json:"client-certificate-data,omitempty"`
|
|
||||||
// ClientKey is the path to a client key file for TLS.
|
|
||||||
// +optional
|
|
||||||
ClientKey string `json:"client-key,omitempty"`
|
|
||||||
// ClientKeyData contains PEM-encoded data from a client key file for TLS. Overrides ClientKey
|
|
||||||
// +optional
|
|
||||||
ClientKeyData []byte `json:"client-key-data,omitempty"`
|
|
||||||
// Token is the bearer token for authentication to the kubernetes cluster.
|
|
||||||
// +optional
|
|
||||||
Token string `json:"token,omitempty"`
|
|
||||||
// TokenFile is a pointer to a file that contains a bearer token (as described above). If both Token and TokenFile are present, Token takes precedence.
|
|
||||||
// +optional
|
|
||||||
TokenFile string `json:"tokenFile,omitempty"`
|
|
||||||
// Impersonate is the username to act-as.
|
|
||||||
// +optional
|
|
||||||
Impersonate string `json:"act-as,omitempty"`
|
|
||||||
// Username is the username for basic authentication to the kubernetes cluster.
|
|
||||||
// +optional
|
|
||||||
Username string `json:"username,omitempty"`
|
|
||||||
// Password is the password for basic authentication to the kubernetes cluster.
|
|
||||||
// +optional
|
|
||||||
Password string `json:"password,omitempty"`
|
|
||||||
// AuthProvider specifies a custom authentication plugin for the kubernetes cluster.
|
|
||||||
// +optional
|
|
||||||
AuthProvider *AuthProviderConfig `json:"auth-provider,omitempty"`
|
|
||||||
// Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields
|
|
||||||
// +optional
|
|
||||||
Extensions map[string]runtime.Object `json:"extensions,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// Context is a tuple of references to a cluster (how do I communicate with a kubernetes cluster), a user (how do I identify myself), and a namespace (what subset of resources do I want to work with)
|
|
||||||
type Context struct {
|
|
||||||
// LocationOfOrigin indicates where this object came from. It is used for round tripping config post-merge, but never serialized.
|
|
||||||
LocationOfOrigin string
|
|
||||||
// Cluster is the name of the cluster for this context
|
|
||||||
Cluster string `json:"cluster"`
|
|
||||||
// AuthInfo is the name of the authInfo for this context
|
|
||||||
AuthInfo string `json:"user"`
|
|
||||||
// Namespace is the default namespace to use on unspecified requests
|
|
||||||
// +optional
|
|
||||||
Namespace string `json:"namespace,omitempty"`
|
|
||||||
// Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields
|
|
||||||
// +optional
|
|
||||||
Extensions map[string]runtime.Object `json:"extensions,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// AuthProviderConfig holds the configuration for a specified auth provider.
|
|
||||||
type AuthProviderConfig struct {
|
|
||||||
Name string `json:"name"`
|
|
||||||
// +optional
|
|
||||||
Config map[string]string `json:"config,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewConfig is a convenience function that returns a new Config object with non-nil maps
|
|
||||||
func NewConfig() *Config {
|
|
||||||
return &Config{
|
|
||||||
Preferences: *NewPreferences(),
|
|
||||||
Clusters: make(map[string]*Cluster),
|
|
||||||
AuthInfos: make(map[string]*AuthInfo),
|
|
||||||
Contexts: make(map[string]*Context),
|
|
||||||
Extensions: make(map[string]runtime.Object),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewConfig is a convenience function that returns a new Config object with non-nil maps
|
|
||||||
func NewContext() *Context {
|
|
||||||
return &Context{Extensions: make(map[string]runtime.Object)}
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewConfig is a convenience function that returns a new Config object with non-nil maps
|
|
||||||
func NewCluster() *Cluster {
|
|
||||||
return &Cluster{Extensions: make(map[string]runtime.Object)}
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewConfig is a convenience function that returns a new Config object with non-nil maps
|
|
||||||
func NewAuthInfo() *AuthInfo {
|
|
||||||
return &AuthInfo{Extensions: make(map[string]runtime.Object)}
|
|
||||||
}
|
|
||||||
|
|
||||||
// NewConfig is a convenience function that returns a new Config object with non-nil maps
|
|
||||||
func NewPreferences() *Preferences {
|
|
||||||
return &Preferences{Extensions: make(map[string]runtime.Object)}
|
|
||||||
}
|
|
|
@ -1,135 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright 2014 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 api
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
|
|
||||||
"github.com/ghodss/yaml"
|
|
||||||
)
|
|
||||||
|
|
||||||
func Example_emptyConfig() {
|
|
||||||
defaultConfig := NewConfig()
|
|
||||||
|
|
||||||
output, err := yaml.Marshal(defaultConfig)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Printf("Unexpected error: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
fmt.Printf("%v", string(output))
|
|
||||||
// Output:
|
|
||||||
// clusters: {}
|
|
||||||
// contexts: {}
|
|
||||||
// current-context: ""
|
|
||||||
// preferences: {}
|
|
||||||
// users: {}
|
|
||||||
}
|
|
||||||
|
|
||||||
func Example_ofOptionsConfig() {
|
|
||||||
defaultConfig := NewConfig()
|
|
||||||
defaultConfig.Preferences.Colors = true
|
|
||||||
defaultConfig.Clusters["alfa"] = &Cluster{
|
|
||||||
Server: "https://alfa.org:8080",
|
|
||||||
InsecureSkipTLSVerify: true,
|
|
||||||
CertificateAuthority: "path/to/my/cert-ca-filename",
|
|
||||||
}
|
|
||||||
defaultConfig.Clusters["bravo"] = &Cluster{
|
|
||||||
Server: "https://bravo.org:8080",
|
|
||||||
InsecureSkipTLSVerify: false,
|
|
||||||
}
|
|
||||||
defaultConfig.AuthInfos["white-mage-via-cert"] = &AuthInfo{
|
|
||||||
ClientCertificate: "path/to/my/client-cert-filename",
|
|
||||||
ClientKey: "path/to/my/client-key-filename",
|
|
||||||
}
|
|
||||||
defaultConfig.AuthInfos["red-mage-via-token"] = &AuthInfo{
|
|
||||||
Token: "my-secret-token",
|
|
||||||
}
|
|
||||||
defaultConfig.AuthInfos["black-mage-via-auth-provider"] = &AuthInfo{
|
|
||||||
AuthProvider: &AuthProviderConfig{
|
|
||||||
Name: "gcp",
|
|
||||||
Config: map[string]string{
|
|
||||||
"foo": "bar",
|
|
||||||
"token": "s3cr3t-t0k3n",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
defaultConfig.Contexts["bravo-as-black-mage"] = &Context{
|
|
||||||
Cluster: "bravo",
|
|
||||||
AuthInfo: "black-mage-via-auth-provider",
|
|
||||||
Namespace: "yankee",
|
|
||||||
}
|
|
||||||
defaultConfig.Contexts["alfa-as-black-mage"] = &Context{
|
|
||||||
Cluster: "alfa",
|
|
||||||
AuthInfo: "black-mage-via-auth-provider",
|
|
||||||
Namespace: "zulu",
|
|
||||||
}
|
|
||||||
defaultConfig.Contexts["alfa-as-white-mage"] = &Context{
|
|
||||||
Cluster: "alfa",
|
|
||||||
AuthInfo: "white-mage-via-cert",
|
|
||||||
}
|
|
||||||
defaultConfig.CurrentContext = "alfa-as-white-mage"
|
|
||||||
|
|
||||||
output, err := yaml.Marshal(defaultConfig)
|
|
||||||
if err != nil {
|
|
||||||
fmt.Printf("Unexpected error: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
fmt.Printf("%v", string(output))
|
|
||||||
// Output:
|
|
||||||
// clusters:
|
|
||||||
// alfa:
|
|
||||||
// LocationOfOrigin: ""
|
|
||||||
// certificate-authority: path/to/my/cert-ca-filename
|
|
||||||
// insecure-skip-tls-verify: true
|
|
||||||
// server: https://alfa.org:8080
|
|
||||||
// bravo:
|
|
||||||
// LocationOfOrigin: ""
|
|
||||||
// server: https://bravo.org:8080
|
|
||||||
// contexts:
|
|
||||||
// alfa-as-black-mage:
|
|
||||||
// LocationOfOrigin: ""
|
|
||||||
// cluster: alfa
|
|
||||||
// namespace: zulu
|
|
||||||
// user: black-mage-via-auth-provider
|
|
||||||
// alfa-as-white-mage:
|
|
||||||
// LocationOfOrigin: ""
|
|
||||||
// cluster: alfa
|
|
||||||
// user: white-mage-via-cert
|
|
||||||
// bravo-as-black-mage:
|
|
||||||
// LocationOfOrigin: ""
|
|
||||||
// cluster: bravo
|
|
||||||
// namespace: yankee
|
|
||||||
// user: black-mage-via-auth-provider
|
|
||||||
// current-context: alfa-as-white-mage
|
|
||||||
// preferences:
|
|
||||||
// colors: true
|
|
||||||
// users:
|
|
||||||
// black-mage-via-auth-provider:
|
|
||||||
// LocationOfOrigin: ""
|
|
||||||
// auth-provider:
|
|
||||||
// config:
|
|
||||||
// foo: bar
|
|
||||||
// token: s3cr3t-t0k3n
|
|
||||||
// name: gcp
|
|
||||||
// red-mage-via-token:
|
|
||||||
// LocationOfOrigin: ""
|
|
||||||
// token: my-secret-token
|
|
||||||
// white-mage-via-cert:
|
|
||||||
// LocationOfOrigin: ""
|
|
||||||
// client-certificate: path/to/my/client-cert-filename
|
|
||||||
// client-key: path/to/my/client-key-filename
|
|
||||||
}
|
|
|
@ -1,37 +0,0 @@
|
||||||
package(default_visibility = ["//visibility:public"])
|
|
||||||
|
|
||||||
licenses(["notice"])
|
|
||||||
|
|
||||||
load(
|
|
||||||
"@io_bazel_rules_go//go:def.bzl",
|
|
||||||
"go_library",
|
|
||||||
)
|
|
||||||
|
|
||||||
go_library(
|
|
||||||
name = "go_default_library",
|
|
||||||
srcs = [
|
|
||||||
"conversion.go",
|
|
||||||
"register.go",
|
|
||||||
"types.go",
|
|
||||||
],
|
|
||||||
tags = ["automanaged"],
|
|
||||||
deps = [
|
|
||||||
"//pkg/client/unversioned/clientcmd/api:go_default_library",
|
|
||||||
"//vendor:k8s.io/apimachinery/pkg/conversion",
|
|
||||||
"//vendor:k8s.io/apimachinery/pkg/runtime",
|
|
||||||
"//vendor:k8s.io/apimachinery/pkg/runtime/schema",
|
|
||||||
],
|
|
||||||
)
|
|
||||||
|
|
||||||
filegroup(
|
|
||||||
name = "package-srcs",
|
|
||||||
srcs = glob(["**"]),
|
|
||||||
tags = ["automanaged"],
|
|
||||||
visibility = ["//visibility:private"],
|
|
||||||
)
|
|
||||||
|
|
||||||
filegroup(
|
|
||||||
name = "all-srcs",
|
|
||||||
srcs = [":package-srcs"],
|
|
||||||
tags = ["automanaged"],
|
|
||||||
)
|
|
|
@ -1,227 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright 2014 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 v1
|
|
||||||
|
|
||||||
import (
|
|
||||||
"sort"
|
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/conversion"
|
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
|
||||||
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
|
|
||||||
)
|
|
||||||
|
|
||||||
func addConversionFuncs(scheme *runtime.Scheme) error {
|
|
||||||
return scheme.AddConversionFuncs(
|
|
||||||
func(in *Cluster, out *api.Cluster, s conversion.Scope) error {
|
|
||||||
return s.DefaultConvert(in, out, conversion.IgnoreMissingFields)
|
|
||||||
},
|
|
||||||
func(in *api.Cluster, out *Cluster, s conversion.Scope) error {
|
|
||||||
return s.DefaultConvert(in, out, conversion.IgnoreMissingFields)
|
|
||||||
},
|
|
||||||
func(in *Preferences, out *api.Preferences, s conversion.Scope) error {
|
|
||||||
return s.DefaultConvert(in, out, conversion.IgnoreMissingFields)
|
|
||||||
},
|
|
||||||
func(in *api.Preferences, out *Preferences, s conversion.Scope) error {
|
|
||||||
return s.DefaultConvert(in, out, conversion.IgnoreMissingFields)
|
|
||||||
},
|
|
||||||
func(in *AuthInfo, out *api.AuthInfo, s conversion.Scope) error {
|
|
||||||
return s.DefaultConvert(in, out, conversion.IgnoreMissingFields)
|
|
||||||
},
|
|
||||||
func(in *api.AuthInfo, out *AuthInfo, s conversion.Scope) error {
|
|
||||||
return s.DefaultConvert(in, out, conversion.IgnoreMissingFields)
|
|
||||||
},
|
|
||||||
func(in *Context, out *api.Context, s conversion.Scope) error {
|
|
||||||
return s.DefaultConvert(in, out, conversion.IgnoreMissingFields)
|
|
||||||
},
|
|
||||||
func(in *api.Context, out *Context, s conversion.Scope) error {
|
|
||||||
return s.DefaultConvert(in, out, conversion.IgnoreMissingFields)
|
|
||||||
},
|
|
||||||
|
|
||||||
func(in *Config, out *api.Config, s conversion.Scope) error {
|
|
||||||
out.CurrentContext = in.CurrentContext
|
|
||||||
if err := s.Convert(&in.Preferences, &out.Preferences, 0); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
out.Clusters = make(map[string]*api.Cluster)
|
|
||||||
if err := s.Convert(&in.Clusters, &out.Clusters, 0); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
out.AuthInfos = make(map[string]*api.AuthInfo)
|
|
||||||
if err := s.Convert(&in.AuthInfos, &out.AuthInfos, 0); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
out.Contexts = make(map[string]*api.Context)
|
|
||||||
if err := s.Convert(&in.Contexts, &out.Contexts, 0); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
out.Extensions = make(map[string]runtime.Object)
|
|
||||||
if err := s.Convert(&in.Extensions, &out.Extensions, 0); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
},
|
|
||||||
func(in *api.Config, out *Config, s conversion.Scope) error {
|
|
||||||
out.CurrentContext = in.CurrentContext
|
|
||||||
if err := s.Convert(&in.Preferences, &out.Preferences, 0); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
out.Clusters = make([]NamedCluster, 0, 0)
|
|
||||||
if err := s.Convert(&in.Clusters, &out.Clusters, 0); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
out.AuthInfos = make([]NamedAuthInfo, 0, 0)
|
|
||||||
if err := s.Convert(&in.AuthInfos, &out.AuthInfos, 0); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
out.Contexts = make([]NamedContext, 0, 0)
|
|
||||||
if err := s.Convert(&in.Contexts, &out.Contexts, 0); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
out.Extensions = make([]NamedExtension, 0, 0)
|
|
||||||
if err := s.Convert(&in.Extensions, &out.Extensions, 0); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
},
|
|
||||||
func(in *[]NamedCluster, out *map[string]*api.Cluster, s conversion.Scope) error {
|
|
||||||
for _, curr := range *in {
|
|
||||||
newCluster := api.NewCluster()
|
|
||||||
if err := s.Convert(&curr.Cluster, newCluster, 0); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
(*out)[curr.Name] = newCluster
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
},
|
|
||||||
func(in *map[string]*api.Cluster, out *[]NamedCluster, s conversion.Scope) error {
|
|
||||||
allKeys := make([]string, 0, len(*in))
|
|
||||||
for key := range *in {
|
|
||||||
allKeys = append(allKeys, key)
|
|
||||||
}
|
|
||||||
sort.Strings(allKeys)
|
|
||||||
|
|
||||||
for _, key := range allKeys {
|
|
||||||
newCluster := (*in)[key]
|
|
||||||
oldCluster := &Cluster{}
|
|
||||||
if err := s.Convert(newCluster, oldCluster, 0); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
namedCluster := NamedCluster{key, *oldCluster}
|
|
||||||
*out = append(*out, namedCluster)
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
},
|
|
||||||
func(in *[]NamedAuthInfo, out *map[string]*api.AuthInfo, s conversion.Scope) error {
|
|
||||||
for _, curr := range *in {
|
|
||||||
newAuthInfo := api.NewAuthInfo()
|
|
||||||
if err := s.Convert(&curr.AuthInfo, newAuthInfo, 0); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
(*out)[curr.Name] = newAuthInfo
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
},
|
|
||||||
func(in *map[string]*api.AuthInfo, out *[]NamedAuthInfo, s conversion.Scope) error {
|
|
||||||
allKeys := make([]string, 0, len(*in))
|
|
||||||
for key := range *in {
|
|
||||||
allKeys = append(allKeys, key)
|
|
||||||
}
|
|
||||||
sort.Strings(allKeys)
|
|
||||||
|
|
||||||
for _, key := range allKeys {
|
|
||||||
newAuthInfo := (*in)[key]
|
|
||||||
oldAuthInfo := &AuthInfo{}
|
|
||||||
if err := s.Convert(newAuthInfo, oldAuthInfo, 0); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
namedAuthInfo := NamedAuthInfo{key, *oldAuthInfo}
|
|
||||||
*out = append(*out, namedAuthInfo)
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
},
|
|
||||||
func(in *[]NamedContext, out *map[string]*api.Context, s conversion.Scope) error {
|
|
||||||
for _, curr := range *in {
|
|
||||||
newContext := api.NewContext()
|
|
||||||
if err := s.Convert(&curr.Context, newContext, 0); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
(*out)[curr.Name] = newContext
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
},
|
|
||||||
func(in *map[string]*api.Context, out *[]NamedContext, s conversion.Scope) error {
|
|
||||||
allKeys := make([]string, 0, len(*in))
|
|
||||||
for key := range *in {
|
|
||||||
allKeys = append(allKeys, key)
|
|
||||||
}
|
|
||||||
sort.Strings(allKeys)
|
|
||||||
|
|
||||||
for _, key := range allKeys {
|
|
||||||
newContext := (*in)[key]
|
|
||||||
oldContext := &Context{}
|
|
||||||
if err := s.Convert(newContext, oldContext, 0); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
namedContext := NamedContext{key, *oldContext}
|
|
||||||
*out = append(*out, namedContext)
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
},
|
|
||||||
func(in *[]NamedExtension, out *map[string]runtime.Object, s conversion.Scope) error {
|
|
||||||
for _, curr := range *in {
|
|
||||||
var newExtension runtime.Object
|
|
||||||
if err := s.Convert(&curr.Extension, &newExtension, 0); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
(*out)[curr.Name] = newExtension
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
},
|
|
||||||
func(in *map[string]runtime.Object, out *[]NamedExtension, s conversion.Scope) error {
|
|
||||||
allKeys := make([]string, 0, len(*in))
|
|
||||||
for key := range *in {
|
|
||||||
allKeys = append(allKeys, key)
|
|
||||||
}
|
|
||||||
sort.Strings(allKeys)
|
|
||||||
|
|
||||||
for _, key := range allKeys {
|
|
||||||
newExtension := (*in)[key]
|
|
||||||
oldExtension := &runtime.RawExtension{}
|
|
||||||
if err := s.Convert(newExtension, oldExtension, 0); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
namedExtension := NamedExtension{key, *oldExtension}
|
|
||||||
*out = append(*out, namedExtension)
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
},
|
|
||||||
)
|
|
||||||
}
|
|
|
@ -1,46 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright 2014 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 v1
|
|
||||||
|
|
||||||
import (
|
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
|
||||||
)
|
|
||||||
|
|
||||||
// SchemeGroupVersion is group version used to register these objects
|
|
||||||
// TODO this should be in the "kubeconfig" group
|
|
||||||
var SchemeGroupVersion = schema.GroupVersion{Group: "", Version: "v1"}
|
|
||||||
|
|
||||||
var (
|
|
||||||
SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes, addConversionFuncs)
|
|
||||||
AddToScheme = SchemeBuilder.AddToScheme
|
|
||||||
)
|
|
||||||
|
|
||||||
func addKnownTypes(scheme *runtime.Scheme) error {
|
|
||||||
scheme.AddKnownTypes(SchemeGroupVersion,
|
|
||||||
&Config{},
|
|
||||||
)
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (obj *Config) GetObjectKind() schema.ObjectKind { return obj }
|
|
||||||
func (obj *Config) SetGroupVersionKind(gvk schema.GroupVersionKind) {
|
|
||||||
obj.APIVersion, obj.Kind = gvk.ToAPIVersionAndKind()
|
|
||||||
}
|
|
||||||
func (obj *Config) GroupVersionKind() schema.GroupVersionKind {
|
|
||||||
return schema.FromAPIVersionAndKind(obj.APIVersion, obj.Kind)
|
|
||||||
}
|
|
|
@ -1,170 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright 2014 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 v1
|
|
||||||
|
|
||||||
import (
|
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
|
||||||
)
|
|
||||||
|
|
||||||
// Where possible, json tags match the cli argument names.
|
|
||||||
// Top level config objects and all values required for proper functioning are not "omitempty". Any truly optional piece of config is allowed to be omitted.
|
|
||||||
|
|
||||||
// Config holds the information needed to build connect to remote kubernetes clusters as a given user
|
|
||||||
type Config struct {
|
|
||||||
// Legacy field from pkg/api/types.go TypeMeta.
|
|
||||||
// TODO(jlowdermilk): remove this after eliminating downstream dependencies.
|
|
||||||
// +optional
|
|
||||||
Kind string `json:"kind,omitempty"`
|
|
||||||
// DEPRECATED: APIVersion is the preferred api version for communicating with the kubernetes cluster (v1, v2, etc).
|
|
||||||
// Because a cluster can run multiple API groups and potentially multiple versions of each, it no longer makes sense to specify
|
|
||||||
// a single value for the cluster version.
|
|
||||||
// This field isn't really needed anyway, so we are deprecating it without replacement.
|
|
||||||
// It will be ignored if it is present.
|
|
||||||
// +optional
|
|
||||||
APIVersion string `json:"apiVersion,omitempty"`
|
|
||||||
// Preferences holds general information to be use for cli interactions
|
|
||||||
Preferences Preferences `json:"preferences"`
|
|
||||||
// Clusters is a map of referencable names to cluster configs
|
|
||||||
Clusters []NamedCluster `json:"clusters"`
|
|
||||||
// AuthInfos is a map of referencable names to user configs
|
|
||||||
AuthInfos []NamedAuthInfo `json:"users"`
|
|
||||||
// Contexts is a map of referencable names to context configs
|
|
||||||
Contexts []NamedContext `json:"contexts"`
|
|
||||||
// CurrentContext is the name of the context that you would like to use by default
|
|
||||||
CurrentContext string `json:"current-context"`
|
|
||||||
// Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields
|
|
||||||
// +optional
|
|
||||||
Extensions []NamedExtension `json:"extensions,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type Preferences struct {
|
|
||||||
// +optional
|
|
||||||
Colors bool `json:"colors,omitempty"`
|
|
||||||
// Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields
|
|
||||||
// +optional
|
|
||||||
Extensions []NamedExtension `json:"extensions,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// Cluster contains information about how to communicate with a kubernetes cluster
|
|
||||||
type Cluster struct {
|
|
||||||
// Server is the address of the kubernetes cluster (https://hostname:port).
|
|
||||||
Server string `json:"server"`
|
|
||||||
// APIVersion is the preferred api version for communicating with the kubernetes cluster (v1, v2, etc).
|
|
||||||
// +optional
|
|
||||||
APIVersion string `json:"api-version,omitempty"`
|
|
||||||
// InsecureSkipTLSVerify skips the validity check for the server's certificate. This will make your HTTPS connections insecure.
|
|
||||||
// +optional
|
|
||||||
InsecureSkipTLSVerify bool `json:"insecure-skip-tls-verify,omitempty"`
|
|
||||||
// CertificateAuthority is the path to a cert file for the certificate authority.
|
|
||||||
// +optional
|
|
||||||
CertificateAuthority string `json:"certificate-authority,omitempty"`
|
|
||||||
// CertificateAuthorityData contains PEM-encoded certificate authority certificates. Overrides CertificateAuthority
|
|
||||||
// +optional
|
|
||||||
CertificateAuthorityData []byte `json:"certificate-authority-data,omitempty"`
|
|
||||||
// Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields
|
|
||||||
// +optional
|
|
||||||
Extensions []NamedExtension `json:"extensions,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// AuthInfo contains information that describes identity information. This is use to tell the kubernetes cluster who you are.
|
|
||||||
type AuthInfo struct {
|
|
||||||
// ClientCertificate is the path to a client cert file for TLS.
|
|
||||||
// +optional
|
|
||||||
ClientCertificate string `json:"client-certificate,omitempty"`
|
|
||||||
// ClientCertificateData contains PEM-encoded data from a client cert file for TLS. Overrides ClientCertificate
|
|
||||||
// +optional
|
|
||||||
ClientCertificateData []byte `json:"client-certificate-data,omitempty"`
|
|
||||||
// ClientKey is the path to a client key file for TLS.
|
|
||||||
// +optional
|
|
||||||
ClientKey string `json:"client-key,omitempty"`
|
|
||||||
// ClientKeyData contains PEM-encoded data from a client key file for TLS. Overrides ClientKey
|
|
||||||
// +optional
|
|
||||||
ClientKeyData []byte `json:"client-key-data,omitempty"`
|
|
||||||
// Token is the bearer token for authentication to the kubernetes cluster.
|
|
||||||
// +optional
|
|
||||||
Token string `json:"token,omitempty"`
|
|
||||||
// TokenFile is a pointer to a file that contains a bearer token (as described above). If both Token and TokenFile are present, Token takes precedence.
|
|
||||||
// +optional
|
|
||||||
TokenFile string `json:"tokenFile,omitempty"`
|
|
||||||
// Impersonate is the username to imperonate. The name matches the flag.
|
|
||||||
// +optional
|
|
||||||
Impersonate string `json:"as,omitempty"`
|
|
||||||
// Username is the username for basic authentication to the kubernetes cluster.
|
|
||||||
// +optional
|
|
||||||
Username string `json:"username,omitempty"`
|
|
||||||
// Password is the password for basic authentication to the kubernetes cluster.
|
|
||||||
// +optional
|
|
||||||
Password string `json:"password,omitempty"`
|
|
||||||
// AuthProvider specifies a custom authentication plugin for the kubernetes cluster.
|
|
||||||
// +optional
|
|
||||||
AuthProvider *AuthProviderConfig `json:"auth-provider,omitempty"`
|
|
||||||
// Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields
|
|
||||||
// +optional
|
|
||||||
Extensions []NamedExtension `json:"extensions,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// Context is a tuple of references to a cluster (how do I communicate with a kubernetes cluster), a user (how do I identify myself), and a namespace (what subset of resources do I want to work with)
|
|
||||||
type Context struct {
|
|
||||||
// Cluster is the name of the cluster for this context
|
|
||||||
Cluster string `json:"cluster"`
|
|
||||||
// AuthInfo is the name of the authInfo for this context
|
|
||||||
AuthInfo string `json:"user"`
|
|
||||||
// Namespace is the default namespace to use on unspecified requests
|
|
||||||
// +optional
|
|
||||||
Namespace string `json:"namespace,omitempty"`
|
|
||||||
// Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields
|
|
||||||
// +optional
|
|
||||||
Extensions []NamedExtension `json:"extensions,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// NamedCluster relates nicknames to cluster information
|
|
||||||
type NamedCluster struct {
|
|
||||||
// Name is the nickname for this Cluster
|
|
||||||
Name string `json:"name"`
|
|
||||||
// Cluster holds the cluster information
|
|
||||||
Cluster Cluster `json:"cluster"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// NamedContext relates nicknames to context information
|
|
||||||
type NamedContext struct {
|
|
||||||
// Name is the nickname for this Context
|
|
||||||
Name string `json:"name"`
|
|
||||||
// Context holds the context information
|
|
||||||
Context Context `json:"context"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// NamedAuthInfo relates nicknames to auth information
|
|
||||||
type NamedAuthInfo struct {
|
|
||||||
// Name is the nickname for this AuthInfo
|
|
||||||
Name string `json:"name"`
|
|
||||||
// AuthInfo holds the auth information
|
|
||||||
AuthInfo AuthInfo `json:"user"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// NamedExtension relates nicknames to extension information
|
|
||||||
type NamedExtension struct {
|
|
||||||
// Name is the nickname for this Extension
|
|
||||||
Name string `json:"name"`
|
|
||||||
// Extension holds the extension information
|
|
||||||
Extension runtime.RawExtension `json:"extension"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// AuthProviderConfig holds the configuration for a specified auth provider.
|
|
||||||
type AuthProviderConfig struct {
|
|
||||||
Name string `json:"name"`
|
|
||||||
Config map[string]string `json:"config"`
|
|
||||||
}
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue