mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	Merge pull request #21408 from krousey/unversioned_breakup
Move restclient to it's own package
This commit is contained in:
		@@ -37,6 +37,7 @@ import (
 | 
				
			|||||||
	kapi "k8s.io/kubernetes/pkg/api"
 | 
						kapi "k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/unversioned"
 | 
						"k8s.io/kubernetes/pkg/api/unversioned"
 | 
				
			||||||
	kcache "k8s.io/kubernetes/pkg/client/cache"
 | 
						kcache "k8s.io/kubernetes/pkg/client/cache"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	kclient "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						kclient "k8s.io/kubernetes/pkg/client/unversioned"
 | 
				
			||||||
	kclientcmd "k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
 | 
						kclientcmd "k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
 | 
				
			||||||
	kframework "k8s.io/kubernetes/pkg/controller/framework"
 | 
						kframework "k8s.io/kubernetes/pkg/controller/framework"
 | 
				
			||||||
@@ -466,7 +467,7 @@ func expandKubeMasterURL() (string, error) {
 | 
				
			|||||||
// TODO: evaluate using pkg/client/clientcmd
 | 
					// TODO: evaluate using pkg/client/clientcmd
 | 
				
			||||||
func newKubeClient() (*kclient.Client, error) {
 | 
					func newKubeClient() (*kclient.Client, error) {
 | 
				
			||||||
	var (
 | 
						var (
 | 
				
			||||||
		config    *kclient.Config
 | 
							config    *restclient.Config
 | 
				
			||||||
		err       error
 | 
							err       error
 | 
				
			||||||
		masterURL string
 | 
							masterURL string
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
@@ -480,9 +481,9 @@ func newKubeClient() (*kclient.Client, error) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	if masterURL != "" && *argKubecfgFile == "" {
 | 
						if masterURL != "" && *argKubecfgFile == "" {
 | 
				
			||||||
		// Only --kube-master-url was provided.
 | 
							// Only --kube-master-url was provided.
 | 
				
			||||||
		config = &kclient.Config{
 | 
							config = &restclient.Config{
 | 
				
			||||||
			Host:          masterURL,
 | 
								Host:          masterURL,
 | 
				
			||||||
			ContentConfig: kclient.ContentConfig{GroupVersion: &unversioned.GroupVersion{Version: "v1"}},
 | 
								ContentConfig: restclient.ContentConfig{GroupVersion: &unversioned.GroupVersion{Version: "v1"}},
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		// We either have:
 | 
							// We either have:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -40,6 +40,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/api/v1"
 | 
						"k8s.io/kubernetes/pkg/api/v1"
 | 
				
			||||||
	clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
 | 
						clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/record"
 | 
						"k8s.io/kubernetes/pkg/client/record"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/controller"
 | 
						"k8s.io/kubernetes/pkg/controller"
 | 
				
			||||||
	endpointcontroller "k8s.io/kubernetes/pkg/controller/endpoint"
 | 
						endpointcontroller "k8s.io/kubernetes/pkg/controller/endpoint"
 | 
				
			||||||
@@ -135,12 +136,12 @@ func startComponents(firstManifestURL, secondManifestURL string) (string, string
 | 
				
			|||||||
		glog.Fatalf("Failed to connect to etcd")
 | 
							glog.Fatalf("Failed to connect to etcd")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	cl := client.NewOrDie(&client.Config{Host: apiServer.URL, ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
						cl := client.NewOrDie(&restclient.Config{Host: apiServer.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
				
			||||||
	clientset := clientset.NewForConfigOrDie(&client.Config{Host: apiServer.URL, ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
						clientset := clientset.NewForConfigOrDie(&restclient.Config{Host: apiServer.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// TODO: caesarxuchao: hacky way to specify version of Experimental client.
 | 
						// TODO: caesarxuchao: hacky way to specify version of Experimental client.
 | 
				
			||||||
	// We will fix this by supporting multiple group versions in Config
 | 
						// We will fix this by supporting multiple group versions in Config
 | 
				
			||||||
	cl.ExtensionsClient = client.NewExtensionsOrDie(&client.Config{Host: apiServer.URL, ContentConfig: client.ContentConfig{GroupVersion: testapi.Extensions.GroupVersion()}})
 | 
						cl.ExtensionsClient = client.NewExtensionsOrDie(&restclient.Config{Host: apiServer.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Extensions.GroupVersion()}})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Master
 | 
						// Master
 | 
				
			||||||
	host, port, err := net.SplitHostPort(strings.TrimLeft(apiServer.URL, "http://"))
 | 
						host, port, err := net.SplitHostPort(strings.TrimLeft(apiServer.URL, "http://"))
 | 
				
			||||||
@@ -993,10 +994,10 @@ func main() {
 | 
				
			|||||||
	// Wait for the synchronization threads to come up.
 | 
						// Wait for the synchronization threads to come up.
 | 
				
			||||||
	time.Sleep(time.Second * 10)
 | 
						time.Sleep(time.Second * 10)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	kubeClient := client.NewOrDie(&client.Config{Host: apiServerURL, ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
						kubeClient := client.NewOrDie(&restclient.Config{Host: apiServerURL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
				
			||||||
	// TODO: caesarxuchao: hacky way to specify version of Experimental client.
 | 
						// TODO: caesarxuchao: hacky way to specify version of Experimental client.
 | 
				
			||||||
	// We will fix this by supporting multiple group versions in Config
 | 
						// We will fix this by supporting multiple group versions in Config
 | 
				
			||||||
	kubeClient.ExtensionsClient = client.NewExtensionsOrDie(&client.Config{Host: apiServerURL, ContentConfig: client.ContentConfig{GroupVersion: testapi.Extensions.GroupVersion()}})
 | 
						kubeClient.ExtensionsClient = client.NewExtensionsOrDie(&restclient.Config{Host: apiServerURL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Extensions.GroupVersion()}})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Run tests in parallel
 | 
						// Run tests in parallel
 | 
				
			||||||
	testFuncs := []testFunc{
 | 
						testFuncs := []testFunc{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -44,7 +44,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/apiserver/authenticator"
 | 
						"k8s.io/kubernetes/pkg/apiserver/authenticator"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/capabilities"
 | 
						"k8s.io/kubernetes/pkg/capabilities"
 | 
				
			||||||
	clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
 | 
						clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/cloudprovider"
 | 
						"k8s.io/kubernetes/pkg/cloudprovider"
 | 
				
			||||||
	serviceaccountcontroller "k8s.io/kubernetes/pkg/controller/serviceaccount"
 | 
						serviceaccountcontroller "k8s.io/kubernetes/pkg/controller/serviceaccount"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/genericapiserver"
 | 
						"k8s.io/kubernetes/pkg/genericapiserver"
 | 
				
			||||||
@@ -254,7 +254,7 @@ func Run(s *options.APIServer) error {
 | 
				
			|||||||
		glog.Fatalf("error in parsing runtime-config: %s", err)
 | 
							glog.Fatalf("error in parsing runtime-config: %s", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	clientConfig := &client.Config{
 | 
						clientConfig := &restclient.Config{
 | 
				
			||||||
		Host: net.JoinHostPort(s.InsecureBindAddress.String(), strconv.Itoa(s.InsecurePort)),
 | 
							Host: net.JoinHostPort(s.InsecureBindAddress.String(), strconv.Itoa(s.InsecurePort)),
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if len(s.DeprecatedStorageVersion) != 0 {
 | 
						if len(s.DeprecatedStorageVersion) != 0 {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -39,6 +39,7 @@ import (
 | 
				
			|||||||
	clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
 | 
						clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/leaderelection"
 | 
						"k8s.io/kubernetes/pkg/client/leaderelection"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/record"
 | 
						"k8s.io/kubernetes/pkg/client/record"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
 | 
						"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/cloudprovider"
 | 
						"k8s.io/kubernetes/pkg/cloudprovider"
 | 
				
			||||||
@@ -180,19 +181,19 @@ func Run(s *options.CMServer) error {
 | 
				
			|||||||
	panic("unreachable")
 | 
						panic("unreachable")
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func StartControllers(s *options.CMServer, kubeClient *client.Client, kubeconfig *client.Config, stop <-chan struct{}) error {
 | 
					func StartControllers(s *options.CMServer, kubeClient *client.Client, kubeconfig *restclient.Config, stop <-chan struct{}) error {
 | 
				
			||||||
	go endpointcontroller.NewEndpointController(clientset.NewForConfigOrDie(client.AddUserAgent(kubeconfig, "endpoint-controller")), ResyncPeriod(s)).
 | 
						go endpointcontroller.NewEndpointController(clientset.NewForConfigOrDie(restclient.AddUserAgent(kubeconfig, "endpoint-controller")), ResyncPeriod(s)).
 | 
				
			||||||
		Run(s.ConcurrentEndpointSyncs, wait.NeverStop)
 | 
							Run(s.ConcurrentEndpointSyncs, wait.NeverStop)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	go replicationcontroller.NewReplicationManager(
 | 
						go replicationcontroller.NewReplicationManager(
 | 
				
			||||||
		clientset.NewForConfigOrDie(client.AddUserAgent(kubeconfig, "replication-controller")),
 | 
							clientset.NewForConfigOrDie(restclient.AddUserAgent(kubeconfig, "replication-controller")),
 | 
				
			||||||
		ResyncPeriod(s),
 | 
							ResyncPeriod(s),
 | 
				
			||||||
		replicationcontroller.BurstReplicas,
 | 
							replicationcontroller.BurstReplicas,
 | 
				
			||||||
		s.LookupCacheSizeForRC,
 | 
							s.LookupCacheSizeForRC,
 | 
				
			||||||
	).Run(s.ConcurrentRCSyncs, wait.NeverStop)
 | 
						).Run(s.ConcurrentRCSyncs, wait.NeverStop)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if s.TerminatedPodGCThreshold > 0 {
 | 
						if s.TerminatedPodGCThreshold > 0 {
 | 
				
			||||||
		go gc.New(clientset.NewForConfigOrDie(client.AddUserAgent(kubeconfig, "garbage-collector")), ResyncPeriod(s), s.TerminatedPodGCThreshold).
 | 
							go gc.New(clientset.NewForConfigOrDie(restclient.AddUserAgent(kubeconfig, "garbage-collector")), ResyncPeriod(s), s.TerminatedPodGCThreshold).
 | 
				
			||||||
			Run(wait.NeverStop)
 | 
								Run(wait.NeverStop)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -203,13 +204,13 @@ func StartControllers(s *options.CMServer, kubeClient *client.Client, kubeconfig
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	// this cidr has been validated already
 | 
						// this cidr has been validated already
 | 
				
			||||||
	_, clusterCIDR, _ := net.ParseCIDR(s.ClusterCIDR)
 | 
						_, clusterCIDR, _ := net.ParseCIDR(s.ClusterCIDR)
 | 
				
			||||||
	nodeController := nodecontroller.NewNodeController(cloud, clientset.NewForConfigOrDie(client.AddUserAgent(kubeconfig, "node-controller")),
 | 
						nodeController := nodecontroller.NewNodeController(cloud, clientset.NewForConfigOrDie(restclient.AddUserAgent(kubeconfig, "node-controller")),
 | 
				
			||||||
		s.PodEvictionTimeout.Duration, util.NewTokenBucketRateLimiter(s.DeletingPodsQps, s.DeletingPodsBurst),
 | 
							s.PodEvictionTimeout.Duration, util.NewTokenBucketRateLimiter(s.DeletingPodsQps, s.DeletingPodsBurst),
 | 
				
			||||||
		util.NewTokenBucketRateLimiter(s.DeletingPodsQps, s.DeletingPodsBurst),
 | 
							util.NewTokenBucketRateLimiter(s.DeletingPodsQps, s.DeletingPodsBurst),
 | 
				
			||||||
		s.NodeMonitorGracePeriod.Duration, s.NodeStartupGracePeriod.Duration, s.NodeMonitorPeriod.Duration, clusterCIDR, s.AllocateNodeCIDRs)
 | 
							s.NodeMonitorGracePeriod.Duration, s.NodeStartupGracePeriod.Duration, s.NodeMonitorPeriod.Duration, clusterCIDR, s.AllocateNodeCIDRs)
 | 
				
			||||||
	nodeController.Run(s.NodeSyncPeriod.Duration)
 | 
						nodeController.Run(s.NodeSyncPeriod.Duration)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	serviceController := servicecontroller.New(cloud, clientset.NewForConfigOrDie(client.AddUserAgent(kubeconfig, "service-controller")), s.ClusterName)
 | 
						serviceController := servicecontroller.New(cloud, clientset.NewForConfigOrDie(restclient.AddUserAgent(kubeconfig, "service-controller")), s.ClusterName)
 | 
				
			||||||
	if err := serviceController.Run(s.ServiceSyncPeriod.Duration, s.NodeSyncPeriod.Duration); err != nil {
 | 
						if err := serviceController.Run(s.ServiceSyncPeriod.Duration, s.NodeSyncPeriod.Duration); err != nil {
 | 
				
			||||||
		glog.Errorf("Failed to start service controller: %v", err)
 | 
							glog.Errorf("Failed to start service controller: %v", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -220,14 +221,14 @@ func StartControllers(s *options.CMServer, kubeClient *client.Client, kubeconfig
 | 
				
			|||||||
		} else if routes, ok := cloud.Routes(); !ok {
 | 
							} else if routes, ok := cloud.Routes(); !ok {
 | 
				
			||||||
			glog.Warning("allocate-node-cidrs is set, but cloud provider does not support routes. Will not manage routes.")
 | 
								glog.Warning("allocate-node-cidrs is set, but cloud provider does not support routes. Will not manage routes.")
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			routeController := routecontroller.New(routes, clientset.NewForConfigOrDie(client.AddUserAgent(kubeconfig, "route-controller")), s.ClusterName, clusterCIDR)
 | 
								routeController := routecontroller.New(routes, clientset.NewForConfigOrDie(restclient.AddUserAgent(kubeconfig, "route-controller")), s.ClusterName, clusterCIDR)
 | 
				
			||||||
			routeController.Run(s.NodeSyncPeriod.Duration)
 | 
								routeController.Run(s.NodeSyncPeriod.Duration)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		glog.Infof("allocate-node-cidrs set to %v, node controller not creating routes", s.AllocateNodeCIDRs)
 | 
							glog.Infof("allocate-node-cidrs set to %v, node controller not creating routes", s.AllocateNodeCIDRs)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	resourceQuotaControllerClient := clientset.NewForConfigOrDie(client.AddUserAgent(kubeconfig, "resourcequota-controller"))
 | 
						resourceQuotaControllerClient := clientset.NewForConfigOrDie(restclient.AddUserAgent(kubeconfig, "resourcequota-controller"))
 | 
				
			||||||
	resourceQuotaRegistry := quotainstall.NewRegistry(resourceQuotaControllerClient)
 | 
						resourceQuotaRegistry := quotainstall.NewRegistry(resourceQuotaControllerClient)
 | 
				
			||||||
	groupKindsToReplenish := []unversioned.GroupKind{
 | 
						groupKindsToReplenish := []unversioned.GroupKind{
 | 
				
			||||||
		api.Kind("Pod"),
 | 
							api.Kind("Pod"),
 | 
				
			||||||
@@ -249,7 +250,7 @@ func StartControllers(s *options.CMServer, kubeClient *client.Client, kubeconfig
 | 
				
			|||||||
	// important when we start apiserver and controller manager at the same time.
 | 
						// important when we start apiserver and controller manager at the same time.
 | 
				
			||||||
	var versionStrings []string
 | 
						var versionStrings []string
 | 
				
			||||||
	err = wait.PollImmediate(time.Second, 10*time.Second, func() (bool, error) {
 | 
						err = wait.PollImmediate(time.Second, 10*time.Second, func() (bool, error) {
 | 
				
			||||||
		if versionStrings, err = client.ServerAPIVersions(kubeconfig); err == nil {
 | 
							if versionStrings, err = restclient.ServerAPIVersions(kubeconfig); err == nil {
 | 
				
			||||||
			return true, nil
 | 
								return true, nil
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		glog.Errorf("Failed to get api versions from server: %v", err)
 | 
							glog.Errorf("Failed to get api versions from server: %v", err)
 | 
				
			||||||
@@ -265,7 +266,7 @@ func StartControllers(s *options.CMServer, kubeClient *client.Client, kubeconfig
 | 
				
			|||||||
		glog.Fatalf("Failed to get supported resources from server: %v", err)
 | 
							glog.Fatalf("Failed to get supported resources from server: %v", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	namespaceController := namespacecontroller.NewNamespaceController(clientset.NewForConfigOrDie(client.AddUserAgent(kubeconfig, "namespace-controller")), versions, s.NamespaceSyncPeriod.Duration)
 | 
						namespaceController := namespacecontroller.NewNamespaceController(clientset.NewForConfigOrDie(restclient.AddUserAgent(kubeconfig, "namespace-controller")), versions, s.NamespaceSyncPeriod.Duration)
 | 
				
			||||||
	go namespaceController.Run(s.ConcurrentNamespaceSyncs, wait.NeverStop)
 | 
						go namespaceController.Run(s.ConcurrentNamespaceSyncs, wait.NeverStop)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	groupVersion := "extensions/v1beta1"
 | 
						groupVersion := "extensions/v1beta1"
 | 
				
			||||||
@@ -275,7 +276,7 @@ func StartControllers(s *options.CMServer, kubeClient *client.Client, kubeconfig
 | 
				
			|||||||
		glog.Infof("Starting %s apis", groupVersion)
 | 
							glog.Infof("Starting %s apis", groupVersion)
 | 
				
			||||||
		if containsResource(resources, "horizontalpodautoscalers") {
 | 
							if containsResource(resources, "horizontalpodautoscalers") {
 | 
				
			||||||
			glog.Infof("Starting horizontal pod controller.")
 | 
								glog.Infof("Starting horizontal pod controller.")
 | 
				
			||||||
			hpaClient := clientset.NewForConfigOrDie(client.AddUserAgent(kubeconfig, "horizontal-pod-autoscaler"))
 | 
								hpaClient := clientset.NewForConfigOrDie(restclient.AddUserAgent(kubeconfig, "horizontal-pod-autoscaler"))
 | 
				
			||||||
			metricsClient := metrics.NewHeapsterMetricsClient(
 | 
								metricsClient := metrics.NewHeapsterMetricsClient(
 | 
				
			||||||
				hpaClient,
 | 
									hpaClient,
 | 
				
			||||||
				metrics.DefaultHeapsterNamespace,
 | 
									metrics.DefaultHeapsterNamespace,
 | 
				
			||||||
@@ -289,25 +290,25 @@ func StartControllers(s *options.CMServer, kubeClient *client.Client, kubeconfig
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		if containsResource(resources, "daemonsets") {
 | 
							if containsResource(resources, "daemonsets") {
 | 
				
			||||||
			glog.Infof("Starting daemon set controller")
 | 
								glog.Infof("Starting daemon set controller")
 | 
				
			||||||
			go daemon.NewDaemonSetsController(clientset.NewForConfigOrDie(client.AddUserAgent(kubeconfig, "daemon-set-controller")), ResyncPeriod(s)).
 | 
								go daemon.NewDaemonSetsController(clientset.NewForConfigOrDie(restclient.AddUserAgent(kubeconfig, "daemon-set-controller")), ResyncPeriod(s)).
 | 
				
			||||||
				Run(s.ConcurrentDaemonSetSyncs, wait.NeverStop)
 | 
									Run(s.ConcurrentDaemonSetSyncs, wait.NeverStop)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if containsResource(resources, "jobs") {
 | 
							if containsResource(resources, "jobs") {
 | 
				
			||||||
			glog.Infof("Starting job controller")
 | 
								glog.Infof("Starting job controller")
 | 
				
			||||||
			go job.NewJobController(clientset.NewForConfigOrDie(client.AddUserAgent(kubeconfig, "job-controller")), ResyncPeriod(s)).
 | 
								go job.NewJobController(clientset.NewForConfigOrDie(restclient.AddUserAgent(kubeconfig, "job-controller")), ResyncPeriod(s)).
 | 
				
			||||||
				Run(s.ConcurrentJobSyncs, wait.NeverStop)
 | 
									Run(s.ConcurrentJobSyncs, wait.NeverStop)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if containsResource(resources, "deployments") {
 | 
							if containsResource(resources, "deployments") {
 | 
				
			||||||
			glog.Infof("Starting deployment controller")
 | 
								glog.Infof("Starting deployment controller")
 | 
				
			||||||
			go deployment.NewDeploymentController(clientset.NewForConfigOrDie(client.AddUserAgent(kubeconfig, "deployment-controller")), ResyncPeriod(s)).
 | 
								go deployment.NewDeploymentController(clientset.NewForConfigOrDie(restclient.AddUserAgent(kubeconfig, "deployment-controller")), ResyncPeriod(s)).
 | 
				
			||||||
				Run(s.ConcurrentDeploymentSyncs, wait.NeverStop)
 | 
									Run(s.ConcurrentDeploymentSyncs, wait.NeverStop)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if containsResource(resources, "replicasets") {
 | 
							if containsResource(resources, "replicasets") {
 | 
				
			||||||
			glog.Infof("Starting ReplicaSet controller")
 | 
								glog.Infof("Starting ReplicaSet controller")
 | 
				
			||||||
			go replicaset.NewReplicaSetController(clientset.NewForConfigOrDie(client.AddUserAgent(kubeconfig, "replicaset-controller")), ResyncPeriod(s), replicaset.BurstReplicas, s.LookupCacheSizeForRS).
 | 
								go replicaset.NewReplicaSetController(clientset.NewForConfigOrDie(restclient.AddUserAgent(kubeconfig, "replicaset-controller")), ResyncPeriod(s), replicaset.BurstReplicas, s.LookupCacheSizeForRS).
 | 
				
			||||||
				Run(s.ConcurrentRSSyncs, wait.NeverStop)
 | 
									Run(s.ConcurrentRSSyncs, wait.NeverStop)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -318,11 +319,11 @@ func StartControllers(s *options.CMServer, kubeClient *client.Client, kubeconfig
 | 
				
			|||||||
		glog.Fatal("A Provisioner could not be created, but one was expected. Provisioning will not work. This functionality is considered an early Alpha version.")
 | 
							glog.Fatal("A Provisioner could not be created, but one was expected. Provisioning will not work. This functionality is considered an early Alpha version.")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	pvclaimBinder := persistentvolumecontroller.NewPersistentVolumeClaimBinder(clientset.NewForConfigOrDie(client.AddUserAgent(kubeconfig, "persistent-volume-binder")), s.PVClaimBinderSyncPeriod.Duration)
 | 
						pvclaimBinder := persistentvolumecontroller.NewPersistentVolumeClaimBinder(clientset.NewForConfigOrDie(restclient.AddUserAgent(kubeconfig, "persistent-volume-binder")), s.PVClaimBinderSyncPeriod.Duration)
 | 
				
			||||||
	pvclaimBinder.Run()
 | 
						pvclaimBinder.Run()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	pvRecycler, err := persistentvolumecontroller.NewPersistentVolumeRecycler(
 | 
						pvRecycler, err := persistentvolumecontroller.NewPersistentVolumeRecycler(
 | 
				
			||||||
		clientset.NewForConfigOrDie(client.AddUserAgent(kubeconfig, "persistent-volume-recycler")),
 | 
							clientset.NewForConfigOrDie(restclient.AddUserAgent(kubeconfig, "persistent-volume-recycler")),
 | 
				
			||||||
		s.PVClaimBinderSyncPeriod.Duration,
 | 
							s.PVClaimBinderSyncPeriod.Duration,
 | 
				
			||||||
		s.VolumeConfiguration.PersistentVolumeRecyclerConfiguration.MaximumRetry,
 | 
							s.VolumeConfiguration.PersistentVolumeRecyclerConfiguration.MaximumRetry,
 | 
				
			||||||
		ProbeRecyclableVolumePlugins(s.VolumeConfiguration),
 | 
							ProbeRecyclableVolumePlugins(s.VolumeConfiguration),
 | 
				
			||||||
@@ -334,7 +335,7 @@ func StartControllers(s *options.CMServer, kubeClient *client.Client, kubeconfig
 | 
				
			|||||||
	pvRecycler.Run()
 | 
						pvRecycler.Run()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if provisioner != nil {
 | 
						if provisioner != nil {
 | 
				
			||||||
		pvController, err := persistentvolumecontroller.NewPersistentVolumeProvisionerController(persistentvolumecontroller.NewControllerClient(clientset.NewForConfigOrDie(client.AddUserAgent(kubeconfig, "persistent-volume-provisioner"))), s.PVClaimBinderSyncPeriod.Duration, s.ClusterName, volumePlugins, provisioner, cloud)
 | 
							pvController, err := persistentvolumecontroller.NewPersistentVolumeProvisionerController(persistentvolumecontroller.NewControllerClient(clientset.NewForConfigOrDie(restclient.AddUserAgent(kubeconfig, "persistent-volume-provisioner"))), s.PVClaimBinderSyncPeriod.Duration, s.ClusterName, volumePlugins, provisioner, cloud)
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			glog.Fatalf("Failed to start persistent volume provisioner controller: %+v", err)
 | 
								glog.Fatalf("Failed to start persistent volume provisioner controller: %+v", err)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -361,7 +362,7 @@ func StartControllers(s *options.CMServer, kubeClient *client.Client, kubeconfig
 | 
				
			|||||||
			glog.Errorf("Error reading key for service account token controller: %v", err)
 | 
								glog.Errorf("Error reading key for service account token controller: %v", err)
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			serviceaccountcontroller.NewTokensController(
 | 
								serviceaccountcontroller.NewTokensController(
 | 
				
			||||||
				clientset.NewForConfigOrDie(client.AddUserAgent(kubeconfig, "tokens-controller")),
 | 
									clientset.NewForConfigOrDie(restclient.AddUserAgent(kubeconfig, "tokens-controller")),
 | 
				
			||||||
				serviceaccountcontroller.TokensControllerOptions{
 | 
									serviceaccountcontroller.TokensControllerOptions{
 | 
				
			||||||
					TokenGenerator: serviceaccount.JWTTokenGenerator(privateKey),
 | 
										TokenGenerator: serviceaccount.JWTTokenGenerator(privateKey),
 | 
				
			||||||
					RootCA:         rootCA,
 | 
										RootCA:         rootCA,
 | 
				
			||||||
@@ -371,7 +372,7 @@ func StartControllers(s *options.CMServer, kubeClient *client.Client, kubeconfig
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	serviceaccountcontroller.NewServiceAccountsController(
 | 
						serviceaccountcontroller.NewServiceAccountsController(
 | 
				
			||||||
		clientset.NewForConfigOrDie(client.AddUserAgent(kubeconfig, "service-account-controller")),
 | 
							clientset.NewForConfigOrDie(restclient.AddUserAgent(kubeconfig, "service-account-controller")),
 | 
				
			||||||
		serviceaccountcontroller.DefaultServiceAccountsControllerOptions(),
 | 
							serviceaccountcontroller.DefaultServiceAccountsControllerOptions(),
 | 
				
			||||||
	).Run()
 | 
						).Run()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -40,8 +40,8 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/client/chaosclient"
 | 
						"k8s.io/kubernetes/pkg/client/chaosclient"
 | 
				
			||||||
	clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
 | 
						clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/record"
 | 
						"k8s.io/kubernetes/pkg/client/record"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	unversionedcore "k8s.io/kubernetes/pkg/client/typed/generated/core/unversioned"
 | 
						unversionedcore "k8s.io/kubernetes/pkg/client/typed/generated/core/unversioned"
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
					 | 
				
			||||||
	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"
 | 
						clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
 | 
				
			||||||
@@ -394,7 +394,7 @@ func InitializeTLS(s *options.KubeletServer) (*server.TLSOptions, error) {
 | 
				
			|||||||
	return tlsOptions, nil
 | 
						return tlsOptions, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func authPathClientConfig(s *options.KubeletServer, useDefaults bool) (*client.Config, error) {
 | 
					func authPathClientConfig(s *options.KubeletServer, useDefaults bool) (*restclient.Config, error) {
 | 
				
			||||||
	authInfo, err := clientauth.LoadFromFile(s.AuthPath.Value())
 | 
						authInfo, err := clientauth.LoadFromFile(s.AuthPath.Value())
 | 
				
			||||||
	if err != nil && !useDefaults {
 | 
						if err != nil && !useDefaults {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
@@ -408,7 +408,7 @@ func authPathClientConfig(s *options.KubeletServer, useDefaults bool) (*client.C
 | 
				
			|||||||
		// authInfo didn't load correctly - continue with defaults.
 | 
							// authInfo didn't load correctly - continue with defaults.
 | 
				
			||||||
		authInfo = &clientauth.Info{}
 | 
							authInfo = &clientauth.Info{}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	authConfig, err := authInfo.MergeWithConfig(client.Config{})
 | 
						authConfig, err := authInfo.MergeWithConfig(restclient.Config{})
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -416,7 +416,7 @@ func authPathClientConfig(s *options.KubeletServer, useDefaults bool) (*client.C
 | 
				
			|||||||
	return &authConfig, nil
 | 
						return &authConfig, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func kubeconfigClientConfig(s *options.KubeletServer) (*client.Config, error) {
 | 
					func kubeconfigClientConfig(s *options.KubeletServer) (*restclient.Config, error) {
 | 
				
			||||||
	return clientcmd.NewNonInteractiveDeferredLoadingClientConfig(
 | 
						return clientcmd.NewNonInteractiveDeferredLoadingClientConfig(
 | 
				
			||||||
		&clientcmd.ClientConfigLoadingRules{ExplicitPath: s.KubeConfig.Value()},
 | 
							&clientcmd.ClientConfigLoadingRules{ExplicitPath: s.KubeConfig.Value()},
 | 
				
			||||||
		&clientcmd.ConfigOverrides{ClusterInfo: clientcmdapi.Cluster{Server: s.APIServerList[0]}}).ClientConfig()
 | 
							&clientcmd.ConfigOverrides{ClusterInfo: clientcmdapi.Cluster{Server: s.APIServerList[0]}}).ClientConfig()
 | 
				
			||||||
@@ -428,7 +428,7 @@ func kubeconfigClientConfig(s *options.KubeletServer) (*client.Config, error) {
 | 
				
			|||||||
// to load the default kubeconfig file, then the default auth path file, and
 | 
					// to load the default kubeconfig file, then the default auth path file, and
 | 
				
			||||||
// fall back to the default auth (none) without an error.
 | 
					// fall back to the default auth (none) without an error.
 | 
				
			||||||
// TODO(roberthbailey): Remove support for --auth-path
 | 
					// TODO(roberthbailey): Remove support for --auth-path
 | 
				
			||||||
func createClientConfig(s *options.KubeletServer) (*client.Config, error) {
 | 
					func createClientConfig(s *options.KubeletServer) (*restclient.Config, error) {
 | 
				
			||||||
	if s.KubeConfig.Provided() && s.AuthPath.Provided() {
 | 
						if s.KubeConfig.Provided() && s.AuthPath.Provided() {
 | 
				
			||||||
		return nil, fmt.Errorf("cannot specify both --kubeconfig and --auth-path")
 | 
							return nil, fmt.Errorf("cannot specify both --kubeconfig and --auth-path")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -451,7 +451,7 @@ func createClientConfig(s *options.KubeletServer) (*client.Config, error) {
 | 
				
			|||||||
// including api-server-list, via createClientConfig and then injects chaos into
 | 
					// including api-server-list, via createClientConfig and then injects chaos into
 | 
				
			||||||
// the configuration via addChaosToClientConfig. This func is exported to support
 | 
					// the configuration via addChaosToClientConfig. This func is exported to support
 | 
				
			||||||
// integration with third party kubelet extensions (e.g. kubernetes-mesos).
 | 
					// integration with third party kubelet extensions (e.g. kubernetes-mesos).
 | 
				
			||||||
func CreateAPIServerClientConfig(s *options.KubeletServer) (*client.Config, error) {
 | 
					func CreateAPIServerClientConfig(s *options.KubeletServer) (*restclient.Config, error) {
 | 
				
			||||||
	if len(s.APIServerList) < 1 {
 | 
						if len(s.APIServerList) < 1 {
 | 
				
			||||||
		return nil, fmt.Errorf("no api servers specified")
 | 
							return nil, fmt.Errorf("no api servers specified")
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -474,7 +474,7 @@ func CreateAPIServerClientConfig(s *options.KubeletServer) (*client.Config, erro
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// addChaosToClientConfig injects random errors into client connections if configured.
 | 
					// addChaosToClientConfig injects random errors into client connections if configured.
 | 
				
			||||||
func addChaosToClientConfig(s *options.KubeletServer, config *client.Config) {
 | 
					func addChaosToClientConfig(s *options.KubeletServer, config *restclient.Config) {
 | 
				
			||||||
	if s.ChaosChance != 0.0 {
 | 
						if s.ChaosChance != 0.0 {
 | 
				
			||||||
		config.WrapTransport = func(rt http.RoundTripper) http.RoundTripper {
 | 
							config.WrapTransport = func(rt http.RoundTripper) http.RoundTripper {
 | 
				
			||||||
			seed := chaosclient.NewSeed(1)
 | 
								seed := chaosclient.NewSeed(1)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -70,6 +70,7 @@ func (g *genClientset) GenerateType(c *generator.Context, t *types.Type, w io.Wr
 | 
				
			|||||||
	// perhaps we can adapt the go2ild framework to this kind of usage.
 | 
						// perhaps we can adapt the go2ild framework to this kind of usage.
 | 
				
			||||||
	sw := generator.NewSnippetWriter(w, c, "$", "$")
 | 
						sw := generator.NewSnippetWriter(w, c, "$", "$")
 | 
				
			||||||
	const pkgUnversioned = "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						const pkgUnversioned = "k8s.io/kubernetes/pkg/client/unversioned"
 | 
				
			||||||
 | 
						const pkgRESTClient = "k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	type arg struct {
 | 
						type arg struct {
 | 
				
			||||||
		Group       string
 | 
							Group       string
 | 
				
			||||||
@@ -85,9 +86,9 @@ func (g *genClientset) GenerateType(c *generator.Context, t *types.Type, w io.Wr
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	m := map[string]interface{}{
 | 
						m := map[string]interface{}{
 | 
				
			||||||
		"allGroups":                        allGroups,
 | 
							"allGroups":                        allGroups,
 | 
				
			||||||
		"Config":                           c.Universe.Type(types.Name{Package: pkgUnversioned, Name: "Config"}),
 | 
							"Config":                           c.Universe.Type(types.Name{Package: pkgRESTClient, Name: "Config"}),
 | 
				
			||||||
		"DefaultKubernetesUserAgent":       c.Universe.Function(types.Name{Package: pkgUnversioned, Name: "DefaultKubernetesUserAgent"}),
 | 
							"DefaultKubernetesUserAgent":       c.Universe.Function(types.Name{Package: pkgRESTClient, Name: "DefaultKubernetesUserAgent"}),
 | 
				
			||||||
		"RESTClient":                       c.Universe.Type(types.Name{Package: pkgUnversioned, Name: "RESTClient"}),
 | 
							"RESTClient":                       c.Universe.Type(types.Name{Package: pkgRESTClient, Name: "RESTClient"}),
 | 
				
			||||||
		"DiscoveryInterface":               c.Universe.Type(types.Name{Package: pkgUnversioned, Name: "DiscoveryInterface"}),
 | 
							"DiscoveryInterface":               c.Universe.Type(types.Name{Package: pkgUnversioned, Name: "DiscoveryInterface"}),
 | 
				
			||||||
		"DiscoveryClient":                  c.Universe.Type(types.Name{Package: pkgUnversioned, Name: "DiscoveryClient"}),
 | 
							"DiscoveryClient":                  c.Universe.Type(types.Name{Package: pkgUnversioned, Name: "DiscoveryClient"}),
 | 
				
			||||||
		"NewDiscoveryClientForConfig":      c.Universe.Function(types.Name{Package: pkgUnversioned, Name: "NewDiscoveryClientForConfig"}),
 | 
							"NewDiscoveryClientForConfig":      c.Universe.Function(types.Name{Package: pkgUnversioned, Name: "NewDiscoveryClientForConfig"}),
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -53,7 +53,7 @@ func (g *genGroup) Imports(c *generator.Context) (imports []string) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func (g *genGroup) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error {
 | 
					func (g *genGroup) GenerateType(c *generator.Context, t *types.Type, w io.Writer) error {
 | 
				
			||||||
	sw := generator.NewSnippetWriter(w, c, "$", "$")
 | 
						sw := generator.NewSnippetWriter(w, c, "$", "$")
 | 
				
			||||||
	const pkgUnversioned = "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						const pkgRESTClient = "k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	const pkgRegistered = "k8s.io/kubernetes/pkg/apimachinery/registered"
 | 
						const pkgRegistered = "k8s.io/kubernetes/pkg/apimachinery/registered"
 | 
				
			||||||
	const pkgAPI = "k8s.io/kubernetes/pkg/api"
 | 
						const pkgAPI = "k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	apiPath := func(group string) string {
 | 
						apiPath := func(group string) string {
 | 
				
			||||||
@@ -75,10 +75,10 @@ func (g *genGroup) GenerateType(c *generator.Context, t *types.Type, w io.Writer
 | 
				
			|||||||
		"Group":                      namer.IC(g.group),
 | 
							"Group":                      namer.IC(g.group),
 | 
				
			||||||
		"canonicalGroup":             canonize(g.group),
 | 
							"canonicalGroup":             canonize(g.group),
 | 
				
			||||||
		"types":                      g.types,
 | 
							"types":                      g.types,
 | 
				
			||||||
		"Config":                     c.Universe.Type(types.Name{Package: pkgUnversioned, Name: "Config"}),
 | 
							"Config":                     c.Universe.Type(types.Name{Package: pkgRESTClient, Name: "Config"}),
 | 
				
			||||||
		"DefaultKubernetesUserAgent": c.Universe.Function(types.Name{Package: pkgUnversioned, Name: "DefaultKubernetesUserAgent"}),
 | 
							"DefaultKubernetesUserAgent": c.Universe.Function(types.Name{Package: pkgRESTClient, Name: "DefaultKubernetesUserAgent"}),
 | 
				
			||||||
		"RESTClient":                 c.Universe.Type(types.Name{Package: pkgUnversioned, Name: "RESTClient"}),
 | 
							"RESTClient":                 c.Universe.Type(types.Name{Package: pkgRESTClient, Name: "RESTClient"}),
 | 
				
			||||||
		"RESTClientFor":              c.Universe.Function(types.Name{Package: pkgUnversioned, Name: "RESTClientFor"}),
 | 
							"RESTClientFor":              c.Universe.Function(types.Name{Package: pkgRESTClient, Name: "RESTClientFor"}),
 | 
				
			||||||
		"latestGroup":                c.Universe.Variable(types.Name{Package: pkgRegistered, Name: "Group"}),
 | 
							"latestGroup":                c.Universe.Variable(types.Name{Package: pkgRegistered, Name: "Group"}),
 | 
				
			||||||
		"GroupOrDie":                 c.Universe.Variable(types.Name{Package: pkgRegistered, Name: "GroupOrDie"}),
 | 
							"GroupOrDie":                 c.Universe.Variable(types.Name{Package: pkgRegistered, Name: "GroupOrDie"}),
 | 
				
			||||||
		"apiPath":                    apiPath(g.group),
 | 
							"apiPath":                    apiPath(g.group),
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,6 +19,7 @@ package test_internalclientset
 | 
				
			|||||||
import (
 | 
					import (
 | 
				
			||||||
	"github.com/golang/glog"
 | 
						"github.com/golang/glog"
 | 
				
			||||||
	unversionedtestgroup "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testoutput/testgroup/unversioned"
 | 
						unversionedtestgroup "k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testoutput/testgroup/unversioned"
 | 
				
			||||||
 | 
						restclient "k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	unversioned "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						unversioned "k8s.io/kubernetes/pkg/client/unversioned"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -45,7 +46,7 @@ func (c *Clientset) Discovery() unversioned.DiscoveryInterface {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewForConfig creates a new Clientset for the given config.
 | 
					// NewForConfig creates a new Clientset for the given config.
 | 
				
			||||||
func NewForConfig(c *unversioned.Config) (*Clientset, error) {
 | 
					func NewForConfig(c *restclient.Config) (*Clientset, error) {
 | 
				
			||||||
	var clientset Clientset
 | 
						var clientset Clientset
 | 
				
			||||||
	var err error
 | 
						var err error
 | 
				
			||||||
	clientset.TestgroupClient, err = unversionedtestgroup.NewForConfig(c)
 | 
						clientset.TestgroupClient, err = unversionedtestgroup.NewForConfig(c)
 | 
				
			||||||
@@ -62,7 +63,7 @@ func NewForConfig(c *unversioned.Config) (*Clientset, error) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// NewForConfigOrDie creates a new Clientset for the given config and
 | 
					// NewForConfigOrDie creates a new Clientset for the given config and
 | 
				
			||||||
// panics if there is an error in the config.
 | 
					// panics if there is an error in the config.
 | 
				
			||||||
func NewForConfigOrDie(c *unversioned.Config) *Clientset {
 | 
					func NewForConfigOrDie(c *restclient.Config) *Clientset {
 | 
				
			||||||
	var clientset Clientset
 | 
						var clientset Clientset
 | 
				
			||||||
	clientset.TestgroupClient = unversionedtestgroup.NewForConfigOrDie(c)
 | 
						clientset.TestgroupClient = unversionedtestgroup.NewForConfigOrDie(c)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -71,7 +72,7 @@ func NewForConfigOrDie(c *unversioned.Config) *Clientset {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// New creates a new Clientset for the given RESTClient.
 | 
					// New creates a new Clientset for the given RESTClient.
 | 
				
			||||||
func New(c *unversioned.RESTClient) *Clientset {
 | 
					func New(c *restclient.RESTClient) *Clientset {
 | 
				
			||||||
	var clientset Clientset
 | 
						var clientset Clientset
 | 
				
			||||||
	clientset.TestgroupClient = unversionedtestgroup.New(c)
 | 
						clientset.TestgroupClient = unversionedtestgroup.New(c)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,7 +19,7 @@ package unversioned
 | 
				
			|||||||
import (
 | 
					import (
 | 
				
			||||||
	api "k8s.io/kubernetes/pkg/api"
 | 
						api "k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	registered "k8s.io/kubernetes/pkg/apimachinery/registered"
 | 
						registered "k8s.io/kubernetes/pkg/apimachinery/registered"
 | 
				
			||||||
	unversioned "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						restclient "k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type TestgroupInterface interface {
 | 
					type TestgroupInterface interface {
 | 
				
			||||||
@@ -28,7 +28,7 @@ type TestgroupInterface interface {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// TestgroupClient is used to interact with features provided by the Testgroup group.
 | 
					// TestgroupClient is used to interact with features provided by the Testgroup group.
 | 
				
			||||||
type TestgroupClient struct {
 | 
					type TestgroupClient struct {
 | 
				
			||||||
	*unversioned.RESTClient
 | 
						*restclient.RESTClient
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (c *TestgroupClient) TestTypes(namespace string) TestTypeInterface {
 | 
					func (c *TestgroupClient) TestTypes(namespace string) TestTypeInterface {
 | 
				
			||||||
@@ -36,12 +36,12 @@ func (c *TestgroupClient) TestTypes(namespace string) TestTypeInterface {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewForConfig creates a new TestgroupClient for the given config.
 | 
					// NewForConfig creates a new TestgroupClient for the given config.
 | 
				
			||||||
func NewForConfig(c *unversioned.Config) (*TestgroupClient, error) {
 | 
					func NewForConfig(c *restclient.Config) (*TestgroupClient, error) {
 | 
				
			||||||
	config := *c
 | 
						config := *c
 | 
				
			||||||
	if err := setConfigDefaults(&config); err != nil {
 | 
						if err := setConfigDefaults(&config); err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	client, err := unversioned.RESTClientFor(&config)
 | 
						client, err := restclient.RESTClientFor(&config)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -50,7 +50,7 @@ func NewForConfig(c *unversioned.Config) (*TestgroupClient, error) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// NewForConfigOrDie creates a new TestgroupClient for the given config and
 | 
					// NewForConfigOrDie creates a new TestgroupClient for the given config and
 | 
				
			||||||
// panics if there is an error in the config.
 | 
					// panics if there is an error in the config.
 | 
				
			||||||
func NewForConfigOrDie(c *unversioned.Config) *TestgroupClient {
 | 
					func NewForConfigOrDie(c *restclient.Config) *TestgroupClient {
 | 
				
			||||||
	client, err := NewForConfig(c)
 | 
						client, err := NewForConfig(c)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		panic(err)
 | 
							panic(err)
 | 
				
			||||||
@@ -59,11 +59,11 @@ func NewForConfigOrDie(c *unversioned.Config) *TestgroupClient {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// New creates a new TestgroupClient for the given RESTClient.
 | 
					// New creates a new TestgroupClient for the given RESTClient.
 | 
				
			||||||
func New(c *unversioned.RESTClient) *TestgroupClient {
 | 
					func New(c *restclient.RESTClient) *TestgroupClient {
 | 
				
			||||||
	return &TestgroupClient{c}
 | 
						return &TestgroupClient{c}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func setConfigDefaults(config *unversioned.Config) error {
 | 
					func setConfigDefaults(config *restclient.Config) error {
 | 
				
			||||||
	// if testgroup group is not registered, return an error
 | 
						// if testgroup group is not registered, return an error
 | 
				
			||||||
	g, err := registered.Group("testgroup")
 | 
						g, err := registered.Group("testgroup")
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
@@ -71,7 +71,7 @@ func setConfigDefaults(config *unversioned.Config) error {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	config.APIPath = "/apis"
 | 
						config.APIPath = "/apis"
 | 
				
			||||||
	if config.UserAgent == "" {
 | 
						if config.UserAgent == "" {
 | 
				
			||||||
		config.UserAgent = unversioned.DefaultKubernetesUserAgent()
 | 
							config.UserAgent = restclient.DefaultKubernetesUserAgent()
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	// TODO: Unconditionally set the config.Version, until we fix the config.
 | 
						// TODO: Unconditionally set the config.Version, until we fix the config.
 | 
				
			||||||
	//if config.Version == "" {
 | 
						//if config.Version == "" {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,7 +28,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/api/testapi"
 | 
						"k8s.io/kubernetes/pkg/api/testapi"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/unversioned"
 | 
						"k8s.io/kubernetes/pkg/api/unversioned"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/apimachinery/registered"
 | 
						"k8s.io/kubernetes/pkg/apimachinery/registered"
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/unversioned/testclient/simple"
 | 
						"k8s.io/kubernetes/pkg/client/unversioned/testclient/simple"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/labels"
 | 
						"k8s.io/kubernetes/pkg/labels"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@@ -54,7 +54,7 @@ type DecoratedSimpleClient struct {
 | 
				
			|||||||
func (c *DecoratedSimpleClient) Setup(t *testing.T) *DecoratedSimpleClient {
 | 
					func (c *DecoratedSimpleClient) Setup(t *testing.T) *DecoratedSimpleClient {
 | 
				
			||||||
	c.simpleClient.Setup(t)
 | 
						c.simpleClient.Setup(t)
 | 
				
			||||||
	url := c.simpleClient.ServerURL()
 | 
						url := c.simpleClient.ServerURL()
 | 
				
			||||||
	c.TestgroupClient = NewForConfigOrDie(&client.Config{
 | 
						c.TestgroupClient = NewForConfigOrDie(&restclient.Config{
 | 
				
			||||||
		Host: url,
 | 
							Host: url,
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
	return c
 | 
						return c
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -31,6 +31,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/unversioned"
 | 
						"k8s.io/kubernetes/pkg/api/unversioned"
 | 
				
			||||||
	clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
 | 
						clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
 | 
						"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
 | 
				
			||||||
	clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
 | 
						clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
 | 
				
			||||||
@@ -130,14 +131,14 @@ func (s *CMServer) Run(_ []string) error {
 | 
				
			|||||||
		glog.Fatal(server.ListenAndServe())
 | 
							glog.Fatal(server.ListenAndServe())
 | 
				
			||||||
	}()
 | 
						}()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	endpoints := s.createEndpointController(clientset.NewForConfigOrDie(client.AddUserAgent(kubeconfig, "endpoint-controller")))
 | 
						endpoints := s.createEndpointController(clientset.NewForConfigOrDie(restclient.AddUserAgent(kubeconfig, "endpoint-controller")))
 | 
				
			||||||
	go endpoints.Run(s.ConcurrentEndpointSyncs, wait.NeverStop)
 | 
						go endpoints.Run(s.ConcurrentEndpointSyncs, wait.NeverStop)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	go replicationcontroller.NewReplicationManager(clientset.NewForConfigOrDie(client.AddUserAgent(kubeconfig, "replication-controller")), s.resyncPeriod, replicationcontroller.BurstReplicas, s.LookupCacheSizeForRC).
 | 
						go replicationcontroller.NewReplicationManager(clientset.NewForConfigOrDie(restclient.AddUserAgent(kubeconfig, "replication-controller")), s.resyncPeriod, replicationcontroller.BurstReplicas, s.LookupCacheSizeForRC).
 | 
				
			||||||
		Run(s.ConcurrentRCSyncs, wait.NeverStop)
 | 
							Run(s.ConcurrentRCSyncs, wait.NeverStop)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if s.TerminatedPodGCThreshold > 0 {
 | 
						if s.TerminatedPodGCThreshold > 0 {
 | 
				
			||||||
		go gc.New(clientset.NewForConfigOrDie(client.AddUserAgent(kubeconfig, "garbage-collector")), s.resyncPeriod, s.TerminatedPodGCThreshold).
 | 
							go gc.New(clientset.NewForConfigOrDie(restclient.AddUserAgent(kubeconfig, "garbage-collector")), s.resyncPeriod, s.TerminatedPodGCThreshold).
 | 
				
			||||||
			Run(wait.NeverStop)
 | 
								Run(wait.NeverStop)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -150,18 +151,18 @@ func (s *CMServer) Run(_ []string) error {
 | 
				
			|||||||
		glog.Fatalf("Cloud provider could not be initialized: %v", err)
 | 
							glog.Fatalf("Cloud provider could not be initialized: %v", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	_, clusterCIDR, _ := net.ParseCIDR(s.ClusterCIDR)
 | 
						_, clusterCIDR, _ := net.ParseCIDR(s.ClusterCIDR)
 | 
				
			||||||
	nodeController := nodecontroller.NewNodeController(cloud, clientset.NewForConfigOrDie(client.AddUserAgent(kubeconfig, "node-controller")),
 | 
						nodeController := nodecontroller.NewNodeController(cloud, clientset.NewForConfigOrDie(restclient.AddUserAgent(kubeconfig, "node-controller")),
 | 
				
			||||||
		s.PodEvictionTimeout.Duration, util.NewTokenBucketRateLimiter(s.DeletingPodsQps, s.DeletingPodsBurst),
 | 
							s.PodEvictionTimeout.Duration, util.NewTokenBucketRateLimiter(s.DeletingPodsQps, s.DeletingPodsBurst),
 | 
				
			||||||
		util.NewTokenBucketRateLimiter(s.DeletingPodsQps, s.DeletingPodsBurst),
 | 
							util.NewTokenBucketRateLimiter(s.DeletingPodsQps, s.DeletingPodsBurst),
 | 
				
			||||||
		s.NodeMonitorGracePeriod.Duration, s.NodeStartupGracePeriod.Duration, s.NodeMonitorPeriod.Duration, clusterCIDR, s.AllocateNodeCIDRs)
 | 
							s.NodeMonitorGracePeriod.Duration, s.NodeStartupGracePeriod.Duration, s.NodeMonitorPeriod.Duration, clusterCIDR, s.AllocateNodeCIDRs)
 | 
				
			||||||
	nodeController.Run(s.NodeSyncPeriod.Duration)
 | 
						nodeController.Run(s.NodeSyncPeriod.Duration)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	nodeStatusUpdaterController := node.NewStatusUpdater(clientset.NewForConfigOrDie(client.AddUserAgent(kubeconfig, "node-status-controller")), s.NodeMonitorPeriod.Duration, time.Now)
 | 
						nodeStatusUpdaterController := node.NewStatusUpdater(clientset.NewForConfigOrDie(restclient.AddUserAgent(kubeconfig, "node-status-controller")), s.NodeMonitorPeriod.Duration, time.Now)
 | 
				
			||||||
	if err := nodeStatusUpdaterController.Run(wait.NeverStop); err != nil {
 | 
						if err := nodeStatusUpdaterController.Run(wait.NeverStop); err != nil {
 | 
				
			||||||
		glog.Fatalf("Failed to start node status update controller: %v", err)
 | 
							glog.Fatalf("Failed to start node status update controller: %v", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	serviceController := servicecontroller.New(cloud, clientset.NewForConfigOrDie(client.AddUserAgent(kubeconfig, "service-controller")), s.ClusterName)
 | 
						serviceController := servicecontroller.New(cloud, clientset.NewForConfigOrDie(restclient.AddUserAgent(kubeconfig, "service-controller")), s.ClusterName)
 | 
				
			||||||
	if err := serviceController.Run(s.ServiceSyncPeriod.Duration, s.NodeSyncPeriod.Duration); err != nil {
 | 
						if err := serviceController.Run(s.ServiceSyncPeriod.Duration, s.NodeSyncPeriod.Duration); err != nil {
 | 
				
			||||||
		glog.Errorf("Failed to start service controller: %v", err)
 | 
							glog.Errorf("Failed to start service controller: %v", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -171,11 +172,11 @@ func (s *CMServer) Run(_ []string) error {
 | 
				
			|||||||
		if !ok {
 | 
							if !ok {
 | 
				
			||||||
			glog.Fatal("Cloud provider must support routes if allocate-node-cidrs is set")
 | 
								glog.Fatal("Cloud provider must support routes if allocate-node-cidrs is set")
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		routeController := routecontroller.New(routes, clientset.NewForConfigOrDie(client.AddUserAgent(kubeconfig, "route-controller")), s.ClusterName, clusterCIDR)
 | 
							routeController := routecontroller.New(routes, clientset.NewForConfigOrDie(restclient.AddUserAgent(kubeconfig, "route-controller")), s.ClusterName, clusterCIDR)
 | 
				
			||||||
		routeController.Run(s.NodeSyncPeriod.Duration)
 | 
							routeController.Run(s.NodeSyncPeriod.Duration)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	resourceQuotaControllerClient := clientset.NewForConfigOrDie(client.AddUserAgent(kubeconfig, "resource-quota-controller"))
 | 
						resourceQuotaControllerClient := clientset.NewForConfigOrDie(restclient.AddUserAgent(kubeconfig, "resource-quota-controller"))
 | 
				
			||||||
	resourceQuotaRegistry := quotainstall.NewRegistry(resourceQuotaControllerClient)
 | 
						resourceQuotaRegistry := quotainstall.NewRegistry(resourceQuotaControllerClient)
 | 
				
			||||||
	groupKindsToReplenish := []unversioned.GroupKind{
 | 
						groupKindsToReplenish := []unversioned.GroupKind{
 | 
				
			||||||
		api.Kind("Pod"),
 | 
							api.Kind("Pod"),
 | 
				
			||||||
@@ -197,7 +198,7 @@ func (s *CMServer) Run(_ []string) error {
 | 
				
			|||||||
	// important when we start apiserver and controller manager at the same time.
 | 
						// important when we start apiserver and controller manager at the same time.
 | 
				
			||||||
	var versionStrings []string
 | 
						var versionStrings []string
 | 
				
			||||||
	err = wait.PollImmediate(time.Second, 10*time.Second, func() (bool, error) {
 | 
						err = wait.PollImmediate(time.Second, 10*time.Second, func() (bool, error) {
 | 
				
			||||||
		if versionStrings, err = client.ServerAPIVersions(kubeconfig); err == nil {
 | 
							if versionStrings, err = restclient.ServerAPIVersions(kubeconfig); err == nil {
 | 
				
			||||||
			return true, nil
 | 
								return true, nil
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		glog.Errorf("Failed to get api versions from server: %v", err)
 | 
							glog.Errorf("Failed to get api versions from server: %v", err)
 | 
				
			||||||
@@ -213,7 +214,7 @@ func (s *CMServer) Run(_ []string) error {
 | 
				
			|||||||
		glog.Fatalf("Failed to get supported resources from server: %v", err)
 | 
							glog.Fatalf("Failed to get supported resources from server: %v", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	namespaceController := namespacecontroller.NewNamespaceController(clientset.NewForConfigOrDie(client.AddUserAgent(kubeconfig, "namespace-controller")), versions, s.NamespaceSyncPeriod.Duration)
 | 
						namespaceController := namespacecontroller.NewNamespaceController(clientset.NewForConfigOrDie(restclient.AddUserAgent(kubeconfig, "namespace-controller")), versions, s.NamespaceSyncPeriod.Duration)
 | 
				
			||||||
	go namespaceController.Run(s.ConcurrentNamespaceSyncs, wait.NeverStop)
 | 
						go namespaceController.Run(s.ConcurrentNamespaceSyncs, wait.NeverStop)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	groupVersion := "extensions/v1beta1"
 | 
						groupVersion := "extensions/v1beta1"
 | 
				
			||||||
@@ -223,7 +224,7 @@ func (s *CMServer) Run(_ []string) error {
 | 
				
			|||||||
		glog.Infof("Starting %s apis", groupVersion)
 | 
							glog.Infof("Starting %s apis", groupVersion)
 | 
				
			||||||
		if containsResource(resources, "horizontalpodautoscalers") {
 | 
							if containsResource(resources, "horizontalpodautoscalers") {
 | 
				
			||||||
			glog.Infof("Starting horizontal pod controller.")
 | 
								glog.Infof("Starting horizontal pod controller.")
 | 
				
			||||||
			hpaClient := clientset.NewForConfigOrDie(client.AddUserAgent(kubeconfig, "horizontal-pod-autoscaler"))
 | 
								hpaClient := clientset.NewForConfigOrDie(restclient.AddUserAgent(kubeconfig, "horizontal-pod-autoscaler"))
 | 
				
			||||||
			metricsClient := metrics.NewHeapsterMetricsClient(
 | 
								metricsClient := metrics.NewHeapsterMetricsClient(
 | 
				
			||||||
				hpaClient,
 | 
									hpaClient,
 | 
				
			||||||
				metrics.DefaultHeapsterNamespace,
 | 
									metrics.DefaultHeapsterNamespace,
 | 
				
			||||||
@@ -237,25 +238,25 @@ func (s *CMServer) Run(_ []string) error {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		if containsResource(resources, "daemonsets") {
 | 
							if containsResource(resources, "daemonsets") {
 | 
				
			||||||
			glog.Infof("Starting daemon set controller")
 | 
								glog.Infof("Starting daemon set controller")
 | 
				
			||||||
			go daemon.NewDaemonSetsController(clientset.NewForConfigOrDie(client.AddUserAgent(kubeconfig, "daemon-set-controller")), s.resyncPeriod).
 | 
								go daemon.NewDaemonSetsController(clientset.NewForConfigOrDie(restclient.AddUserAgent(kubeconfig, "daemon-set-controller")), s.resyncPeriod).
 | 
				
			||||||
				Run(s.ConcurrentDaemonSetSyncs, wait.NeverStop)
 | 
									Run(s.ConcurrentDaemonSetSyncs, wait.NeverStop)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if containsResource(resources, "jobs") {
 | 
							if containsResource(resources, "jobs") {
 | 
				
			||||||
			glog.Infof("Starting job controller")
 | 
								glog.Infof("Starting job controller")
 | 
				
			||||||
			go job.NewJobController(clientset.NewForConfigOrDie(client.AddUserAgent(kubeconfig, "job-controller")), s.resyncPeriod).
 | 
								go job.NewJobController(clientset.NewForConfigOrDie(restclient.AddUserAgent(kubeconfig, "job-controller")), s.resyncPeriod).
 | 
				
			||||||
				Run(s.ConcurrentJobSyncs, wait.NeverStop)
 | 
									Run(s.ConcurrentJobSyncs, wait.NeverStop)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if containsResource(resources, "deployments") {
 | 
							if containsResource(resources, "deployments") {
 | 
				
			||||||
			glog.Infof("Starting deployment controller")
 | 
								glog.Infof("Starting deployment controller")
 | 
				
			||||||
			go deployment.NewDeploymentController(clientset.NewForConfigOrDie(client.AddUserAgent(kubeconfig, "deployment-controller")), s.resyncPeriod).
 | 
								go deployment.NewDeploymentController(clientset.NewForConfigOrDie(restclient.AddUserAgent(kubeconfig, "deployment-controller")), s.resyncPeriod).
 | 
				
			||||||
				Run(s.ConcurrentDeploymentSyncs, wait.NeverStop)
 | 
									Run(s.ConcurrentDeploymentSyncs, wait.NeverStop)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if containsResource(resources, "replicasets") {
 | 
							if containsResource(resources, "replicasets") {
 | 
				
			||||||
			glog.Infof("Starting ReplicaSet controller")
 | 
								glog.Infof("Starting ReplicaSet controller")
 | 
				
			||||||
			go replicaset.NewReplicaSetController(clientset.NewForConfigOrDie(client.AddUserAgent(kubeconfig, "replicaset-controller")), s.resyncPeriod, replicaset.BurstReplicas, s.LookupCacheSizeForRS).
 | 
								go replicaset.NewReplicaSetController(clientset.NewForConfigOrDie(restclient.AddUserAgent(kubeconfig, "replicaset-controller")), s.resyncPeriod, replicaset.BurstReplicas, s.LookupCacheSizeForRS).
 | 
				
			||||||
				Run(s.ConcurrentRSSyncs, wait.NeverStop)
 | 
									Run(s.ConcurrentRSSyncs, wait.NeverStop)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -267,13 +268,13 @@ func (s *CMServer) Run(_ []string) error {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	pvclaimBinder := persistentvolumecontroller.NewPersistentVolumeClaimBinder(
 | 
						pvclaimBinder := persistentvolumecontroller.NewPersistentVolumeClaimBinder(
 | 
				
			||||||
		clientset.NewForConfigOrDie(client.AddUserAgent(kubeconfig, "persistent-volume-binder")),
 | 
							clientset.NewForConfigOrDie(restclient.AddUserAgent(kubeconfig, "persistent-volume-binder")),
 | 
				
			||||||
		s.PVClaimBinderSyncPeriod.Duration,
 | 
							s.PVClaimBinderSyncPeriod.Duration,
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
	pvclaimBinder.Run()
 | 
						pvclaimBinder.Run()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	pvRecycler, err := persistentvolumecontroller.NewPersistentVolumeRecycler(
 | 
						pvRecycler, err := persistentvolumecontroller.NewPersistentVolumeRecycler(
 | 
				
			||||||
		clientset.NewForConfigOrDie(client.AddUserAgent(kubeconfig, "persistent-volume-recycler")),
 | 
							clientset.NewForConfigOrDie(restclient.AddUserAgent(kubeconfig, "persistent-volume-recycler")),
 | 
				
			||||||
		s.PVClaimBinderSyncPeriod.Duration,
 | 
							s.PVClaimBinderSyncPeriod.Duration,
 | 
				
			||||||
		s.VolumeConfiguration.PersistentVolumeRecyclerConfiguration.MaximumRetry,
 | 
							s.VolumeConfiguration.PersistentVolumeRecyclerConfiguration.MaximumRetry,
 | 
				
			||||||
		kubecontrollermanager.ProbeRecyclableVolumePlugins(s.VolumeConfiguration),
 | 
							kubecontrollermanager.ProbeRecyclableVolumePlugins(s.VolumeConfiguration),
 | 
				
			||||||
@@ -285,7 +286,7 @@ func (s *CMServer) Run(_ []string) error {
 | 
				
			|||||||
	pvRecycler.Run()
 | 
						pvRecycler.Run()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if provisioner != nil {
 | 
						if provisioner != nil {
 | 
				
			||||||
		pvController, err := persistentvolumecontroller.NewPersistentVolumeProvisionerController(persistentvolumecontroller.NewControllerClient(clientset.NewForConfigOrDie(client.AddUserAgent(kubeconfig, "persistent-volume-controller"))), s.PVClaimBinderSyncPeriod.Duration, s.ClusterName, volumePlugins, provisioner, cloud)
 | 
							pvController, err := persistentvolumecontroller.NewPersistentVolumeProvisionerController(persistentvolumecontroller.NewControllerClient(clientset.NewForConfigOrDie(restclient.AddUserAgent(kubeconfig, "persistent-volume-controller"))), s.PVClaimBinderSyncPeriod.Duration, s.ClusterName, volumePlugins, provisioner, cloud)
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			glog.Fatalf("Failed to start persistent volume provisioner controller: %+v", err)
 | 
								glog.Fatalf("Failed to start persistent volume provisioner controller: %+v", err)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -312,7 +313,7 @@ func (s *CMServer) Run(_ []string) error {
 | 
				
			|||||||
			glog.Errorf("Error reading key for service account token controller: %v", err)
 | 
								glog.Errorf("Error reading key for service account token controller: %v", err)
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			serviceaccountcontroller.NewTokensController(
 | 
								serviceaccountcontroller.NewTokensController(
 | 
				
			||||||
				clientset.NewForConfigOrDie(client.AddUserAgent(kubeconfig, "tokens-controller")),
 | 
									clientset.NewForConfigOrDie(restclient.AddUserAgent(kubeconfig, "tokens-controller")),
 | 
				
			||||||
				serviceaccountcontroller.TokensControllerOptions{
 | 
									serviceaccountcontroller.TokensControllerOptions{
 | 
				
			||||||
					TokenGenerator: serviceaccount.JWTTokenGenerator(privateKey),
 | 
										TokenGenerator: serviceaccount.JWTTokenGenerator(privateKey),
 | 
				
			||||||
					RootCA:         rootCA,
 | 
										RootCA:         rootCA,
 | 
				
			||||||
@@ -322,7 +323,7 @@ func (s *CMServer) Run(_ []string) error {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	serviceaccountcontroller.NewServiceAccountsController(
 | 
						serviceaccountcontroller.NewServiceAccountsController(
 | 
				
			||||||
		clientset.NewForConfigOrDie(client.AddUserAgent(kubeconfig, "service-account-controller")),
 | 
							clientset.NewForConfigOrDie(restclient.AddUserAgent(kubeconfig, "service-account-controller")),
 | 
				
			||||||
		serviceaccountcontroller.DefaultServiceAccountsControllerOptions(),
 | 
							serviceaccountcontroller.DefaultServiceAccountsControllerOptions(),
 | 
				
			||||||
	).Run()
 | 
						).Run()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -37,7 +37,6 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/cache"
 | 
						"k8s.io/kubernetes/pkg/client/cache"
 | 
				
			||||||
	clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
 | 
						clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/fields"
 | 
						"k8s.io/kubernetes/pkg/fields"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/kubelet"
 | 
						"k8s.io/kubernetes/pkg/kubelet"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/kubelet/cm"
 | 
						"k8s.io/kubernetes/pkg/kubelet/cm"
 | 
				
			||||||
@@ -295,7 +294,7 @@ func (s *KubeletExecutorServer) Run(hks hyperkube.Interface, _ []string) error {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	var (
 | 
						var (
 | 
				
			||||||
		pw = cache.NewListWatchFromClient(apiclient.CoreClient, "pods", api.NamespaceAll,
 | 
							pw = cache.NewListWatchFromClient(apiclient.CoreClient, "pods", api.NamespaceAll,
 | 
				
			||||||
			fields.OneTermEqualSelector(client.PodHost, s.HostnameOverride),
 | 
								fields.OneTermEqualSelector(api.PodHostField, s.HostnameOverride),
 | 
				
			||||||
		)
 | 
							)
 | 
				
			||||||
		reg = executor.NewRegistry(apiclient)
 | 
							reg = executor.NewRegistry(apiclient)
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -27,18 +27,17 @@ import (
 | 
				
			|||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
	"syscall"
 | 
						"syscall"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						log "github.com/golang/glog"
 | 
				
			||||||
 | 
						"github.com/kardianos/osext"
 | 
				
			||||||
 | 
						"github.com/spf13/pflag"
 | 
				
			||||||
 | 
						"gopkg.in/natefinch/lumberjack.v2"
 | 
				
			||||||
	kubeletapp "k8s.io/kubernetes/cmd/kubelet/app"
 | 
						kubeletapp "k8s.io/kubernetes/cmd/kubelet/app"
 | 
				
			||||||
	exservice "k8s.io/kubernetes/contrib/mesos/pkg/executor/service"
 | 
						exservice "k8s.io/kubernetes/contrib/mesos/pkg/executor/service"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/hyperkube"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/hyperkube"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/minion/config"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/minion/config"
 | 
				
			||||||
	"k8s.io/kubernetes/contrib/mesos/pkg/minion/tasks"
 | 
						"k8s.io/kubernetes/contrib/mesos/pkg/minion/tasks"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/resource"
 | 
						"k8s.io/kubernetes/pkg/api/resource"
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
 | 
					 | 
				
			||||||
	log "github.com/golang/glog"
 | 
					 | 
				
			||||||
	"github.com/kardianos/osext"
 | 
					 | 
				
			||||||
	"github.com/spf13/pflag"
 | 
					 | 
				
			||||||
	"gopkg.in/natefinch/lumberjack.v2"
 | 
					 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const (
 | 
					const (
 | 
				
			||||||
@@ -53,7 +52,7 @@ type MinionServer struct {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	privateMountNS bool
 | 
						privateMountNS bool
 | 
				
			||||||
	hks            hyperkube.Interface
 | 
						hks            hyperkube.Interface
 | 
				
			||||||
	clientConfig   *client.Config
 | 
						clientConfig   *restclient.Config
 | 
				
			||||||
	kmBinary       string
 | 
						kmBinary       string
 | 
				
			||||||
	tasks          []*tasks.Task
 | 
						tasks          []*tasks.Task
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -50,7 +50,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/api/unversioned"
 | 
						"k8s.io/kubernetes/pkg/api/unversioned"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/cache"
 | 
						"k8s.io/kubernetes/pkg/client/cache"
 | 
				
			||||||
	clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
 | 
						clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/runtime"
 | 
						"k8s.io/kubernetes/pkg/runtime"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/util/wait"
 | 
						"k8s.io/kubernetes/pkg/util/wait"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/watch"
 | 
						"k8s.io/kubernetes/pkg/watch"
 | 
				
			||||||
@@ -490,9 +490,9 @@ func newLifecycleTest(t *testing.T) lifecycleTest {
 | 
				
			|||||||
	ei.Data = []byte{0, 1, 2}
 | 
						ei.Data = []byte{0, 1, 2}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// create framework
 | 
						// create framework
 | 
				
			||||||
	client := clientset.NewForConfigOrDie(&client.Config{
 | 
						client := clientset.NewForConfigOrDie(&restclient.Config{
 | 
				
			||||||
		Host:          apiServer.server.URL,
 | 
							Host:          apiServer.server.URL,
 | 
				
			||||||
		ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()},
 | 
							ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()},
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
	c := *schedcfg.CreateDefaultConfig()
 | 
						c := *schedcfg.CreateDefaultConfig()
 | 
				
			||||||
	fw := framework.New(framework.Config{
 | 
						fw := framework.New(framework.Config{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -74,8 +74,8 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/client/cache"
 | 
						"k8s.io/kubernetes/pkg/client/cache"
 | 
				
			||||||
	clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
 | 
						clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/record"
 | 
						"k8s.io/kubernetes/pkg/client/record"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	unversionedcore "k8s.io/kubernetes/pkg/client/typed/generated/core/unversioned"
 | 
						unversionedcore "k8s.io/kubernetes/pkg/client/typed/generated/core/unversioned"
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
 | 
						"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
 | 
				
			||||||
	cloud "k8s.io/kubernetes/pkg/cloudprovider/providers/mesos"
 | 
						cloud "k8s.io/kubernetes/pkg/cloudprovider/providers/mesos"
 | 
				
			||||||
	controllerfw "k8s.io/kubernetes/pkg/controller/framework"
 | 
						controllerfw "k8s.io/kubernetes/pkg/controller/framework"
 | 
				
			||||||
@@ -534,7 +534,7 @@ func (s *SchedulerServer) prepareStaticPods() (data []byte, staticPodCPUs, stati
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// TODO(jdef): hacked from plugin/cmd/kube-scheduler/app/server.go
 | 
					// TODO(jdef): hacked from plugin/cmd/kube-scheduler/app/server.go
 | 
				
			||||||
func (s *SchedulerServer) createAPIServerClientConfig() (*client.Config, error) {
 | 
					func (s *SchedulerServer) createAPIServerClientConfig() (*restclient.Config, error) {
 | 
				
			||||||
	kubeconfig, err := clientcmd.BuildConfigFromFlags(s.apiServerList[0], s.kubeconfig)
 | 
						kubeconfig, err := clientcmd.BuildConfigFromFlags(s.apiServerList[0], s.kubeconfig)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										38
									
								
								pkg/api/field_constants.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								pkg/api/field_constants.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,38 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					Copyright 2016 The Kubernetes Authors All rights reserved.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Field path constants that are specific to the internal API
 | 
				
			||||||
 | 
					// representation.
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						NodeUnschedulableField = "spec.unschedulable"
 | 
				
			||||||
 | 
						ObjectNameField        = "metadata.name"
 | 
				
			||||||
 | 
						PodHostField           = "spec.nodeName"
 | 
				
			||||||
 | 
						PodStatusField         = "status.phase"
 | 
				
			||||||
 | 
						SecretTypeField        = "type"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						EventReasonField                  = "reason"
 | 
				
			||||||
 | 
						EventSourceField                  = "source"
 | 
				
			||||||
 | 
						EventTypeField                    = "type"
 | 
				
			||||||
 | 
						EventInvolvedKindField            = "involvedObject.kind"
 | 
				
			||||||
 | 
						EventInvolvedNamespaceField       = "involvedObject.namespace"
 | 
				
			||||||
 | 
						EventInvolvedNameField            = "involvedObject.name"
 | 
				
			||||||
 | 
						EventInvolvedUIDField             = "involvedObject.uid"
 | 
				
			||||||
 | 
						EventInvolvedAPIVersionField      = "involvedObject.apiVersion"
 | 
				
			||||||
 | 
						EventInvolvedResourceVersionField = "involvedObject.resourceVersion"
 | 
				
			||||||
 | 
						EventInvolvedFieldPathField       = "involvedObject.fieldPath"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
							
								
								
									
										4
									
								
								pkg/client/cache/listwatch.go
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								pkg/client/cache/listwatch.go
									
									
									
									
										vendored
									
									
								
							@@ -20,7 +20,7 @@ import (
 | 
				
			|||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/fields"
 | 
						"k8s.io/kubernetes/pkg/fields"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/runtime"
 | 
						"k8s.io/kubernetes/pkg/runtime"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/watch"
 | 
						"k8s.io/kubernetes/pkg/watch"
 | 
				
			||||||
@@ -42,7 +42,7 @@ type ListWatch struct {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Getter interface knows how to access Get method from RESTClient.
 | 
					// Getter interface knows how to access Get method from RESTClient.
 | 
				
			||||||
type Getter interface {
 | 
					type Getter interface {
 | 
				
			||||||
	Get() *client.Request
 | 
						Get() *restclient.Request
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewListWatchFromClient creates a new ListWatch from the specified client, resource, namespace and field selector.
 | 
					// NewListWatchFromClient creates a new ListWatch from the specified client, resource, namespace and field selector.
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										5
									
								
								pkg/client/cache/listwatch_test.go
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								pkg/client/cache/listwatch_test.go
									
									
									
									
										vendored
									
									
								
							@@ -24,6 +24,7 @@ import (
 | 
				
			|||||||
	"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/unversioned"
 | 
						"k8s.io/kubernetes/pkg/api/unversioned"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/fields"
 | 
						"k8s.io/kubernetes/pkg/fields"
 | 
				
			||||||
	utiltesting "k8s.io/kubernetes/pkg/util/testing"
 | 
						utiltesting "k8s.io/kubernetes/pkg/util/testing"
 | 
				
			||||||
@@ -97,7 +98,7 @@ func TestListWatchesCanList(t *testing.T) {
 | 
				
			|||||||
		server := httptest.NewServer(&handler)
 | 
							server := httptest.NewServer(&handler)
 | 
				
			||||||
		// TODO: Uncomment when fix #19254
 | 
							// TODO: Uncomment when fix #19254
 | 
				
			||||||
		// defer server.Close()
 | 
							// defer server.Close()
 | 
				
			||||||
		client := client.NewOrDie(&client.Config{Host: server.URL, ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
							client := client.NewOrDie(&restclient.Config{Host: server.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
				
			||||||
		lw := NewListWatchFromClient(client, item.resource, item.namespace, item.fieldSelector)
 | 
							lw := NewListWatchFromClient(client, item.resource, item.namespace, item.fieldSelector)
 | 
				
			||||||
		// This test merely tests that the correct request is made.
 | 
							// This test merely tests that the correct request is made.
 | 
				
			||||||
		lw.List(api.ListOptions{})
 | 
							lw.List(api.ListOptions{})
 | 
				
			||||||
@@ -164,7 +165,7 @@ func TestListWatchesCanWatch(t *testing.T) {
 | 
				
			|||||||
		server := httptest.NewServer(&handler)
 | 
							server := httptest.NewServer(&handler)
 | 
				
			||||||
		// TODO: Uncomment when fix #19254
 | 
							// TODO: Uncomment when fix #19254
 | 
				
			||||||
		// defer server.Close()
 | 
							// defer server.Close()
 | 
				
			||||||
		client := client.NewOrDie(&client.Config{Host: server.URL, ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
							client := client.NewOrDie(&restclient.Config{Host: server.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
				
			||||||
		lw := NewListWatchFromClient(client, item.resource, item.namespace, item.fieldSelector)
 | 
							lw := NewListWatchFromClient(client, item.resource, item.namespace, item.fieldSelector)
 | 
				
			||||||
		// This test merely tests that the correct request is made.
 | 
							// This test merely tests that the correct request is made.
 | 
				
			||||||
		lw.Watch(api.ListOptions{ResourceVersion: item.rv})
 | 
							lw.Watch(api.ListOptions{ResourceVersion: item.rv})
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,6 +18,7 @@ package internalclientset
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"github.com/golang/glog"
 | 
						"github.com/golang/glog"
 | 
				
			||||||
 | 
						restclient "k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	unversionedcore "k8s.io/kubernetes/pkg/client/typed/generated/core/unversioned"
 | 
						unversionedcore "k8s.io/kubernetes/pkg/client/typed/generated/core/unversioned"
 | 
				
			||||||
	unversionedextensions "k8s.io/kubernetes/pkg/client/typed/generated/extensions/unversioned"
 | 
						unversionedextensions "k8s.io/kubernetes/pkg/client/typed/generated/extensions/unversioned"
 | 
				
			||||||
	unversioned "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						unversioned "k8s.io/kubernetes/pkg/client/unversioned"
 | 
				
			||||||
@@ -53,7 +54,7 @@ func (c *Clientset) Discovery() unversioned.DiscoveryInterface {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewForConfig creates a new Clientset for the given config.
 | 
					// NewForConfig creates a new Clientset for the given config.
 | 
				
			||||||
func NewForConfig(c *unversioned.Config) (*Clientset, error) {
 | 
					func NewForConfig(c *restclient.Config) (*Clientset, error) {
 | 
				
			||||||
	var clientset Clientset
 | 
						var clientset Clientset
 | 
				
			||||||
	var err error
 | 
						var err error
 | 
				
			||||||
	clientset.CoreClient, err = unversionedcore.NewForConfig(c)
 | 
						clientset.CoreClient, err = unversionedcore.NewForConfig(c)
 | 
				
			||||||
@@ -74,7 +75,7 @@ func NewForConfig(c *unversioned.Config) (*Clientset, error) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// NewForConfigOrDie creates a new Clientset for the given config and
 | 
					// NewForConfigOrDie creates a new Clientset for the given config and
 | 
				
			||||||
// panics if there is an error in the config.
 | 
					// panics if there is an error in the config.
 | 
				
			||||||
func NewForConfigOrDie(c *unversioned.Config) *Clientset {
 | 
					func NewForConfigOrDie(c *restclient.Config) *Clientset {
 | 
				
			||||||
	var clientset Clientset
 | 
						var clientset Clientset
 | 
				
			||||||
	clientset.CoreClient = unversionedcore.NewForConfigOrDie(c)
 | 
						clientset.CoreClient = unversionedcore.NewForConfigOrDie(c)
 | 
				
			||||||
	clientset.ExtensionsClient = unversionedextensions.NewForConfigOrDie(c)
 | 
						clientset.ExtensionsClient = unversionedextensions.NewForConfigOrDie(c)
 | 
				
			||||||
@@ -84,7 +85,7 @@ func NewForConfigOrDie(c *unversioned.Config) *Clientset {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// New creates a new Clientset for the given RESTClient.
 | 
					// New creates a new Clientset for the given RESTClient.
 | 
				
			||||||
func New(c *unversioned.RESTClient) *Clientset {
 | 
					func New(c *restclient.RESTClient) *Clientset {
 | 
				
			||||||
	var clientset Clientset
 | 
						var clientset Clientset
 | 
				
			||||||
	clientset.CoreClient = unversionedcore.New(c)
 | 
						clientset.CoreClient = unversionedcore.New(c)
 | 
				
			||||||
	clientset.ExtensionsClient = unversionedextensions.New(c)
 | 
						clientset.ExtensionsClient = unversionedextensions.New(c)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,6 +18,7 @@ package release_1_2
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"github.com/golang/glog"
 | 
						"github.com/golang/glog"
 | 
				
			||||||
 | 
						restclient "k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	v1core "k8s.io/kubernetes/pkg/client/typed/generated/core/v1"
 | 
						v1core "k8s.io/kubernetes/pkg/client/typed/generated/core/v1"
 | 
				
			||||||
	v1beta1extensions "k8s.io/kubernetes/pkg/client/typed/generated/extensions/v1beta1"
 | 
						v1beta1extensions "k8s.io/kubernetes/pkg/client/typed/generated/extensions/v1beta1"
 | 
				
			||||||
	unversioned "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						unversioned "k8s.io/kubernetes/pkg/client/unversioned"
 | 
				
			||||||
@@ -53,7 +54,7 @@ func (c *Clientset) Discovery() unversioned.DiscoveryInterface {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewForConfig creates a new Clientset for the given config.
 | 
					// NewForConfig creates a new Clientset for the given config.
 | 
				
			||||||
func NewForConfig(c *unversioned.Config) (*Clientset, error) {
 | 
					func NewForConfig(c *restclient.Config) (*Clientset, error) {
 | 
				
			||||||
	var clientset Clientset
 | 
						var clientset Clientset
 | 
				
			||||||
	var err error
 | 
						var err error
 | 
				
			||||||
	clientset.CoreClient, err = v1core.NewForConfig(c)
 | 
						clientset.CoreClient, err = v1core.NewForConfig(c)
 | 
				
			||||||
@@ -74,7 +75,7 @@ func NewForConfig(c *unversioned.Config) (*Clientset, error) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// NewForConfigOrDie creates a new Clientset for the given config and
 | 
					// NewForConfigOrDie creates a new Clientset for the given config and
 | 
				
			||||||
// panics if there is an error in the config.
 | 
					// panics if there is an error in the config.
 | 
				
			||||||
func NewForConfigOrDie(c *unversioned.Config) *Clientset {
 | 
					func NewForConfigOrDie(c *restclient.Config) *Clientset {
 | 
				
			||||||
	var clientset Clientset
 | 
						var clientset Clientset
 | 
				
			||||||
	clientset.CoreClient = v1core.NewForConfigOrDie(c)
 | 
						clientset.CoreClient = v1core.NewForConfigOrDie(c)
 | 
				
			||||||
	clientset.ExtensionsClient = v1beta1extensions.NewForConfigOrDie(c)
 | 
						clientset.ExtensionsClient = v1beta1extensions.NewForConfigOrDie(c)
 | 
				
			||||||
@@ -84,7 +85,7 @@ func NewForConfigOrDie(c *unversioned.Config) *Clientset {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// New creates a new Clientset for the given RESTClient.
 | 
					// New creates a new Clientset for the given RESTClient.
 | 
				
			||||||
func New(c *unversioned.RESTClient) *Clientset {
 | 
					func New(c *restclient.RESTClient) *Clientset {
 | 
				
			||||||
	var clientset Clientset
 | 
						var clientset Clientset
 | 
				
			||||||
	clientset.CoreClient = v1core.New(c)
 | 
						clientset.CoreClient = v1core.New(c)
 | 
				
			||||||
	clientset.ExtensionsClient = v1beta1extensions.New(c)
 | 
						clientset.ExtensionsClient = v1beta1extensions.New(c)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,7 +24,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/errors"
 | 
						"k8s.io/kubernetes/pkg/api/errors"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/unversioned"
 | 
						"k8s.io/kubernetes/pkg/api/unversioned"
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/runtime"
 | 
						"k8s.io/kubernetes/pkg/runtime"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/util"
 | 
						"k8s.io/kubernetes/pkg/util"
 | 
				
			||||||
	utilruntime "k8s.io/kubernetes/pkg/util/runtime"
 | 
						utilruntime "k8s.io/kubernetes/pkg/util/runtime"
 | 
				
			||||||
@@ -182,7 +182,7 @@ func recordEvent(sink EventSink, event *api.Event, patch []byte, updateExistingE
 | 
				
			|||||||
	// If we can't contact the server, then hold everything while we keep trying.
 | 
						// If we can't contact the server, then hold everything while we keep trying.
 | 
				
			||||||
	// Otherwise, something about the event is malformed and we should abandon it.
 | 
						// Otherwise, something about the event is malformed and we should abandon it.
 | 
				
			||||||
	switch err.(type) {
 | 
						switch err.(type) {
 | 
				
			||||||
	case *client.RequestConstructionError:
 | 
						case *restclient.RequestConstructionError:
 | 
				
			||||||
		// We will construct the request the same next time, so don't keep trying.
 | 
							// We will construct the request the same next time, so don't keep trying.
 | 
				
			||||||
		glog.Errorf("Unable to construct event '%#v': '%v' (will not retry!)", event, err)
 | 
							glog.Errorf("Unable to construct event '%#v': '%v' (will not retry!)", event, err)
 | 
				
			||||||
		return true
 | 
							return true
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -26,7 +26,8 @@ import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/errors"
 | 
						"k8s.io/kubernetes/pkg/api/errors"
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						_ "k8s.io/kubernetes/pkg/api/install" // To register api.Pod used in tests below
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	k8sruntime "k8s.io/kubernetes/pkg/runtime"
 | 
						k8sruntime "k8s.io/kubernetes/pkg/runtime"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/util"
 | 
						"k8s.io/kubernetes/pkg/util"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/util/strategicpatch"
 | 
						"k8s.io/kubernetes/pkg/util/strategicpatch"
 | 
				
			||||||
@@ -391,7 +392,7 @@ func TestWriteEventError(t *testing.T) {
 | 
				
			|||||||
		"giveUp1": {
 | 
							"giveUp1": {
 | 
				
			||||||
			timesToSendError: 1000,
 | 
								timesToSendError: 1000,
 | 
				
			||||||
			attemptsWanted:   1,
 | 
								attemptsWanted:   1,
 | 
				
			||||||
			err:              &client.RequestConstructionError{},
 | 
								err:              &restclient.RequestConstructionError{},
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		"giveUp2": {
 | 
							"giveUp2": {
 | 
				
			||||||
			timesToSendError: 1000,
 | 
								timesToSendError: 1000,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
 | 
				
			|||||||
limitations under the License.
 | 
					limitations under the License.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package unversioned
 | 
					package restclient
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"net/http"
 | 
						"net/http"
 | 
				
			||||||
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
 | 
				
			|||||||
limitations under the License.
 | 
					limitations under the License.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package unversioned
 | 
					package restclient
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"net/http"
 | 
						"net/http"
 | 
				
			||||||
							
								
								
									
										309
									
								
								pkg/client/restclient/config.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										309
									
								
								pkg/client/restclient/config.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,309 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					Copyright 2016 The Kubernetes Authors All rights reserved.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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 restclient
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
						"io/ioutil"
 | 
				
			||||||
 | 
						"net"
 | 
				
			||||||
 | 
						"net/http"
 | 
				
			||||||
 | 
						"os"
 | 
				
			||||||
 | 
						"path"
 | 
				
			||||||
 | 
						gruntime "runtime"
 | 
				
			||||||
 | 
						"strings"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"github.com/golang/glog"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/api/unversioned"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/runtime"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/util"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/version"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Config holds the common attributes that can be passed to a Kubernetes client on
 | 
				
			||||||
 | 
					// initialization.
 | 
				
			||||||
 | 
					type Config struct {
 | 
				
			||||||
 | 
						// Host must be a host string, a host:port pair, or a URL to the base of the apiserver.
 | 
				
			||||||
 | 
						// If a URL is given then the (optional) Path of that URL represents a prefix that must
 | 
				
			||||||
 | 
						// be appended to all request URIs used to access the apiserver. This allows a frontend
 | 
				
			||||||
 | 
						// proxy to easily relocate all of the apiserver endpoints.
 | 
				
			||||||
 | 
						Host string
 | 
				
			||||||
 | 
						// APIPath is a sub-path that points to an API root.
 | 
				
			||||||
 | 
						APIPath string
 | 
				
			||||||
 | 
						// Prefix is the sub path of the server. If not specified, the client will set
 | 
				
			||||||
 | 
						// a default value.  Use "/" to indicate the server root should be used
 | 
				
			||||||
 | 
						Prefix string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// ContentConfig contains settings that affect how objects are transformed when
 | 
				
			||||||
 | 
						// sent to the server.
 | 
				
			||||||
 | 
						ContentConfig
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Server requires Basic authentication
 | 
				
			||||||
 | 
						Username string
 | 
				
			||||||
 | 
						Password string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Server requires Bearer authentication. This client will not attempt to use
 | 
				
			||||||
 | 
						// refresh tokens for an OAuth2 flow.
 | 
				
			||||||
 | 
						// TODO: demonstrate an OAuth2 compatible client.
 | 
				
			||||||
 | 
						BearerToken string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// TLSClientConfig contains settings to enable transport layer security
 | 
				
			||||||
 | 
						TLSClientConfig
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Server should be accessed without verifying the TLS
 | 
				
			||||||
 | 
						// certificate. For testing only.
 | 
				
			||||||
 | 
						Insecure bool
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// UserAgent is an optional field that specifies the caller of this request.
 | 
				
			||||||
 | 
						UserAgent string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Transport may be used for custom HTTP behavior. This attribute may not
 | 
				
			||||||
 | 
						// be specified with the TLS client certificate options. Use WrapTransport
 | 
				
			||||||
 | 
						// for most client level operations.
 | 
				
			||||||
 | 
						Transport http.RoundTripper
 | 
				
			||||||
 | 
						// WrapTransport will be invoked for custom HTTP behavior after the underlying
 | 
				
			||||||
 | 
						// transport is initialized (either the transport created from TLSClientConfig,
 | 
				
			||||||
 | 
						// Transport, or http.DefaultTransport). The config may layer other RoundTrippers
 | 
				
			||||||
 | 
						// on top of the returned RoundTripper.
 | 
				
			||||||
 | 
						WrapTransport func(rt http.RoundTripper) http.RoundTripper
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// QPS indicates the maximum QPS to the master from this client.  If zero, QPS is unlimited.
 | 
				
			||||||
 | 
						QPS float32
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Maximum burst for throttle
 | 
				
			||||||
 | 
						Burst int
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// TLSClientConfig contains settings to enable transport layer security
 | 
				
			||||||
 | 
					type TLSClientConfig struct {
 | 
				
			||||||
 | 
						// Server requires TLS client certificate authentication
 | 
				
			||||||
 | 
						CertFile string
 | 
				
			||||||
 | 
						// Server requires TLS client certificate authentication
 | 
				
			||||||
 | 
						KeyFile string
 | 
				
			||||||
 | 
						// Trusted root certificates for server
 | 
				
			||||||
 | 
						CAFile string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// CertData holds PEM-encoded bytes (typically read from a client certificate file).
 | 
				
			||||||
 | 
						// CertData takes precedence over CertFile
 | 
				
			||||||
 | 
						CertData []byte
 | 
				
			||||||
 | 
						// KeyData holds PEM-encoded bytes (typically read from a client certificate key file).
 | 
				
			||||||
 | 
						// KeyData takes precedence over KeyFile
 | 
				
			||||||
 | 
						KeyData []byte
 | 
				
			||||||
 | 
						// CAData holds PEM-encoded bytes (typically read from a root certificates bundle).
 | 
				
			||||||
 | 
						// CAData takes precedence over CAFile
 | 
				
			||||||
 | 
						CAData []byte
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type ContentConfig struct {
 | 
				
			||||||
 | 
						// ContentType specifies the wire format used to communicate with the server.
 | 
				
			||||||
 | 
						// This value will be set as the Accept header on requests made to the server, and
 | 
				
			||||||
 | 
						// as the default content type on any object sent to the server. If not set,
 | 
				
			||||||
 | 
						// "application/json" is used.
 | 
				
			||||||
 | 
						ContentType string
 | 
				
			||||||
 | 
						// GroupVersion is the API version to talk to. Must be provided when initializing
 | 
				
			||||||
 | 
						// a RESTClient directly. When initializing a Client, will be set with the default
 | 
				
			||||||
 | 
						// code version.
 | 
				
			||||||
 | 
						GroupVersion *unversioned.GroupVersion
 | 
				
			||||||
 | 
						// Codec specifies the encoding and decoding behavior for runtime.Objects passed
 | 
				
			||||||
 | 
						// to a RESTClient or Client. Required when initializing a RESTClient, optional
 | 
				
			||||||
 | 
						// when initializing a Client.
 | 
				
			||||||
 | 
						Codec runtime.Codec
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// RESTClientFor returns a RESTClient that satisfies the requested attributes on a client Config
 | 
				
			||||||
 | 
					// object. Note that a RESTClient may require fields that are optional when initializing a Client.
 | 
				
			||||||
 | 
					// A RESTClient created by this method is generic - it expects to operate on an API that follows
 | 
				
			||||||
 | 
					// the Kubernetes conventions, but may not be the Kubernetes API.
 | 
				
			||||||
 | 
					func RESTClientFor(config *Config) (*RESTClient, error) {
 | 
				
			||||||
 | 
						if config.GroupVersion == nil {
 | 
				
			||||||
 | 
							return nil, fmt.Errorf("GroupVersion is required when initializing a RESTClient")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if config.Codec == nil {
 | 
				
			||||||
 | 
							return nil, fmt.Errorf("Codec is required when initializing a RESTClient")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						baseURL, versionedAPIPath, err := defaultServerUrlFor(config)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						transport, err := TransportFor(config)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var httpClient *http.Client
 | 
				
			||||||
 | 
						if transport != http.DefaultTransport {
 | 
				
			||||||
 | 
							httpClient = &http.Client{Transport: transport}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						client := NewRESTClient(baseURL, versionedAPIPath, config.ContentConfig, config.QPS, config.Burst, httpClient)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return client, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// UnversionedRESTClientFor is the same as RESTClientFor, except that it allows
 | 
				
			||||||
 | 
					// the config.Version to be empty.
 | 
				
			||||||
 | 
					func UnversionedRESTClientFor(config *Config) (*RESTClient, error) {
 | 
				
			||||||
 | 
						if config.Codec == nil {
 | 
				
			||||||
 | 
							return nil, fmt.Errorf("Codec is required when initializing a RESTClient")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						baseURL, versionedAPIPath, err := defaultServerUrlFor(config)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						transport, err := TransportFor(config)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						var httpClient *http.Client
 | 
				
			||||||
 | 
						if transport != http.DefaultTransport {
 | 
				
			||||||
 | 
							httpClient = &http.Client{Transport: transport}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						versionConfig := config.ContentConfig
 | 
				
			||||||
 | 
						if versionConfig.GroupVersion == nil {
 | 
				
			||||||
 | 
							v := unversioned.SchemeGroupVersion
 | 
				
			||||||
 | 
							versionConfig.GroupVersion = &v
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						client := NewRESTClient(baseURL, versionedAPIPath, versionConfig, config.QPS, config.Burst, httpClient)
 | 
				
			||||||
 | 
						return client, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// SetKubernetesDefaults sets default values on the provided client config for accessing the
 | 
				
			||||||
 | 
					// Kubernetes API or returns an error if any of the defaults are impossible or invalid.
 | 
				
			||||||
 | 
					func SetKubernetesDefaults(config *Config) error {
 | 
				
			||||||
 | 
						if len(config.UserAgent) == 0 {
 | 
				
			||||||
 | 
							config.UserAgent = DefaultKubernetesUserAgent()
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if config.QPS == 0.0 {
 | 
				
			||||||
 | 
							config.QPS = 5.0
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if config.Burst == 0 {
 | 
				
			||||||
 | 
							config.Burst = 10
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// DefaultKubernetesUserAgent returns the default user agent that clients can use.
 | 
				
			||||||
 | 
					func DefaultKubernetesUserAgent() string {
 | 
				
			||||||
 | 
						commit := version.Get().GitCommit
 | 
				
			||||||
 | 
						if len(commit) > 7 {
 | 
				
			||||||
 | 
							commit = commit[:7]
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if len(commit) == 0 {
 | 
				
			||||||
 | 
							commit = "unknown"
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						version := version.Get().GitVersion
 | 
				
			||||||
 | 
						seg := strings.SplitN(version, "-", 2)
 | 
				
			||||||
 | 
						version = seg[0]
 | 
				
			||||||
 | 
						return fmt.Sprintf("%s/%s (%s/%s) kubernetes/%s", path.Base(os.Args[0]), version, gruntime.GOOS, gruntime.GOARCH, commit)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// InClusterConfig returns a config object which uses the service account
 | 
				
			||||||
 | 
					// kubernetes gives to pods. It's intended for clients that expect to be
 | 
				
			||||||
 | 
					// running inside a pod running on kuberenetes. It will return an error if
 | 
				
			||||||
 | 
					// called from a process not running in a kubernetes environment.
 | 
				
			||||||
 | 
					func InClusterConfig() (*Config, error) {
 | 
				
			||||||
 | 
						host, port := os.Getenv("KUBERNETES_SERVICE_HOST"), os.Getenv("KUBERNETES_SERVICE_PORT")
 | 
				
			||||||
 | 
						if len(host) == 0 || len(port) == 0 {
 | 
				
			||||||
 | 
							return nil, fmt.Errorf("unable to load in-cluster configuration, KUBERNETES_SERVICE_HOST and KUBERNETES_SERVICE_PORT must be defined")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						token, err := ioutil.ReadFile("/var/run/secrets/kubernetes.io/serviceaccount/" + api.ServiceAccountTokenKey)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						tlsClientConfig := TLSClientConfig{}
 | 
				
			||||||
 | 
						rootCAFile := "/var/run/secrets/kubernetes.io/serviceaccount/" + api.ServiceAccountRootCAKey
 | 
				
			||||||
 | 
						if _, err := util.CertPoolFromFile(rootCAFile); err != nil {
 | 
				
			||||||
 | 
							glog.Errorf("Expected to load root CA config from %s, but got err: %v", rootCAFile, err)
 | 
				
			||||||
 | 
						} else {
 | 
				
			||||||
 | 
							tlsClientConfig.CAFile = rootCAFile
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return &Config{
 | 
				
			||||||
 | 
							// TODO: switch to using cluster DNS.
 | 
				
			||||||
 | 
							Host:            "https://" + net.JoinHostPort(host, port),
 | 
				
			||||||
 | 
							BearerToken:     string(token),
 | 
				
			||||||
 | 
							TLSClientConfig: tlsClientConfig,
 | 
				
			||||||
 | 
						}, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// IsConfigTransportTLS returns true if and only if the provided
 | 
				
			||||||
 | 
					// config will result in a protected connection to the server when it
 | 
				
			||||||
 | 
					// is passed to restclient.RESTClientFor().  Use to determine when to
 | 
				
			||||||
 | 
					// send credentials over the wire.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					// Note: the Insecure flag is ignored when testing for this value, so MITM attacks are
 | 
				
			||||||
 | 
					// still possible.
 | 
				
			||||||
 | 
					func IsConfigTransportTLS(config Config) bool {
 | 
				
			||||||
 | 
						baseURL, _, err := defaultServerUrlFor(&config)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return false
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return baseURL.Scheme == "https"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// LoadTLSFiles copies the data from the CertFile, KeyFile, and CAFile fields into the CertData,
 | 
				
			||||||
 | 
					// KeyData, and CAFile fields, or returns an error. If no error is returned, all three fields are
 | 
				
			||||||
 | 
					// either populated or were empty to start.
 | 
				
			||||||
 | 
					func LoadTLSFiles(c *Config) error {
 | 
				
			||||||
 | 
						var err error
 | 
				
			||||||
 | 
						c.CAData, err = dataFromSliceOrFile(c.CAData, c.CAFile)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						c.CertData, err = dataFromSliceOrFile(c.CertData, c.CertFile)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						c.KeyData, err = dataFromSliceOrFile(c.KeyData, c.KeyFile)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// dataFromSliceOrFile returns data from the slice (if non-empty), or from the file,
 | 
				
			||||||
 | 
					// or an error if an error occurred reading the file
 | 
				
			||||||
 | 
					func dataFromSliceOrFile(data []byte, file string) ([]byte, error) {
 | 
				
			||||||
 | 
						if len(data) > 0 {
 | 
				
			||||||
 | 
							return data, nil
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if len(file) > 0 {
 | 
				
			||||||
 | 
							fileData, err := ioutil.ReadFile(file)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return []byte{}, err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return fileData, nil
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return nil, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func AddUserAgent(config *Config, userAgent string) *Config {
 | 
				
			||||||
 | 
						fullUserAgent := DefaultKubernetesUserAgent() + "/" + userAgent
 | 
				
			||||||
 | 
						config.UserAgent = fullUserAgent
 | 
				
			||||||
 | 
						return config
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										99
									
								
								pkg/client/restclient/config_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										99
									
								
								pkg/client/restclient/config_test.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,99 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					Copyright 2016 The Kubernetes Authors All rights reserved.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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 restclient
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"strings"
 | 
				
			||||||
 | 
						"testing"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/api/testapi"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func TestIsConfigTransportTLS(t *testing.T) {
 | 
				
			||||||
 | 
						testCases := []struct {
 | 
				
			||||||
 | 
							Config       *Config
 | 
				
			||||||
 | 
							TransportTLS bool
 | 
				
			||||||
 | 
						}{
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								Config:       &Config{},
 | 
				
			||||||
 | 
								TransportTLS: false,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								Config: &Config{
 | 
				
			||||||
 | 
									Host: "https://localhost",
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								TransportTLS: true,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								Config: &Config{
 | 
				
			||||||
 | 
									Host: "localhost",
 | 
				
			||||||
 | 
									TLSClientConfig: TLSClientConfig{
 | 
				
			||||||
 | 
										CertFile: "foo",
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								TransportTLS: true,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								Config: &Config{
 | 
				
			||||||
 | 
									Host: "///:://localhost",
 | 
				
			||||||
 | 
									TLSClientConfig: TLSClientConfig{
 | 
				
			||||||
 | 
										CertFile: "foo",
 | 
				
			||||||
 | 
									},
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								TransportTLS: false,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								Config: &Config{
 | 
				
			||||||
 | 
									Host:     "1.2.3.4:567",
 | 
				
			||||||
 | 
									Insecure: true,
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
								TransportTLS: true,
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						for _, testCase := range testCases {
 | 
				
			||||||
 | 
							if err := SetKubernetesDefaults(testCase.Config); err != nil {
 | 
				
			||||||
 | 
								t.Errorf("setting defaults failed for %#v: %v", testCase.Config, err)
 | 
				
			||||||
 | 
								continue
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							useTLS := IsConfigTransportTLS(*testCase.Config)
 | 
				
			||||||
 | 
							if testCase.TransportTLS != useTLS {
 | 
				
			||||||
 | 
								t.Errorf("expected %v for %#v", testCase.TransportTLS, testCase.Config)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func TestSetKubernetesDefaultsUserAgent(t *testing.T) {
 | 
				
			||||||
 | 
						config := &Config{}
 | 
				
			||||||
 | 
						if err := SetKubernetesDefaults(config); err != nil {
 | 
				
			||||||
 | 
							t.Errorf("unexpected error: %v", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if !strings.Contains(config.UserAgent, "kubernetes/") {
 | 
				
			||||||
 | 
							t.Errorf("no user agent set: %#v", config)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func TestRESTClientRequires(t *testing.T) {
 | 
				
			||||||
 | 
						if _, err := RESTClientFor(&Config{Host: "127.0.0.1", ContentConfig: ContentConfig{Codec: testapi.Default.Codec()}}); err == nil {
 | 
				
			||||||
 | 
							t.Errorf("unexpected non-error")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if _, err := RESTClientFor(&Config{Host: "127.0.0.1", ContentConfig: ContentConfig{GroupVersion: testapi.Default.GroupVersion()}}); err == nil {
 | 
				
			||||||
 | 
							t.Errorf("unexpected non-error")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if _, err := RESTClientFor(&Config{Host: "127.0.0.1", ContentConfig: ContentConfig{GroupVersion: testapi.Default.GroupVersion(), Codec: testapi.Default.Codec()}}); err != nil {
 | 
				
			||||||
 | 
							t.Errorf("unexpected error: %v", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
 | 
				
			|||||||
limitations under the License.
 | 
					limitations under the License.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package unversioned
 | 
					package restclient
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"bytes"
 | 
						"bytes"
 | 
				
			||||||
@@ -292,22 +292,22 @@ func (r *Request) RequestURI(uri string) *Request {
 | 
				
			|||||||
const (
 | 
					const (
 | 
				
			||||||
	// A constant that clients can use to refer in a field selector to the object name field.
 | 
						// A constant that clients can use to refer in a field selector to the object name field.
 | 
				
			||||||
	// Will be automatically emitted as the correct name for the API version.
 | 
						// Will be automatically emitted as the correct name for the API version.
 | 
				
			||||||
	NodeUnschedulable = "spec.unschedulable"
 | 
						nodeUnschedulable = "spec.unschedulable"
 | 
				
			||||||
	ObjectNameField   = "metadata.name"
 | 
						objectNameField   = "metadata.name"
 | 
				
			||||||
	PodHost           = "spec.nodeName"
 | 
						podHost           = "spec.nodeName"
 | 
				
			||||||
	PodStatus         = "status.phase"
 | 
						podStatus         = "status.phase"
 | 
				
			||||||
	SecretType        = "type"
 | 
						secretType        = "type"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	EventReason                  = "reason"
 | 
						eventReason                  = "reason"
 | 
				
			||||||
	EventSource                  = "source"
 | 
						eventSource                  = "source"
 | 
				
			||||||
	EventType                    = "type"
 | 
						eventType                    = "type"
 | 
				
			||||||
	EventInvolvedKind            = "involvedObject.kind"
 | 
						eventInvolvedKind            = "involvedObject.kind"
 | 
				
			||||||
	EventInvolvedNamespace       = "involvedObject.namespace"
 | 
						eventInvolvedNamespace       = "involvedObject.namespace"
 | 
				
			||||||
	EventInvolvedName            = "involvedObject.name"
 | 
						eventInvolvedName            = "involvedObject.name"
 | 
				
			||||||
	EventInvolvedUID             = "involvedObject.uid"
 | 
						eventInvolvedUID             = "involvedObject.uid"
 | 
				
			||||||
	EventInvolvedAPIVersion      = "involvedObject.apiVersion"
 | 
						eventInvolvedAPIVersion      = "involvedObject.apiVersion"
 | 
				
			||||||
	EventInvolvedResourceVersion = "involvedObject.resourceVersion"
 | 
						eventInvolvedResourceVersion = "involvedObject.resourceVersion"
 | 
				
			||||||
	EventInvolvedFieldPath       = "involvedObject.fieldPath"
 | 
						eventInvolvedFieldPath       = "involvedObject.fieldPath"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type clientFieldNameToAPIVersionFieldName map[string]string
 | 
					type clientFieldNameToAPIVersionFieldName map[string]string
 | 
				
			||||||
@@ -350,34 +350,34 @@ func (v versionToResourceToFieldMapping) filterField(groupVersion *unversioned.G
 | 
				
			|||||||
var fieldMappings = versionToResourceToFieldMapping{
 | 
					var fieldMappings = versionToResourceToFieldMapping{
 | 
				
			||||||
	v1.SchemeGroupVersion: resourceTypeToFieldMapping{
 | 
						v1.SchemeGroupVersion: resourceTypeToFieldMapping{
 | 
				
			||||||
		"nodes": clientFieldNameToAPIVersionFieldName{
 | 
							"nodes": clientFieldNameToAPIVersionFieldName{
 | 
				
			||||||
			ObjectNameField:   ObjectNameField,
 | 
								objectNameField:   objectNameField,
 | 
				
			||||||
			NodeUnschedulable: NodeUnschedulable,
 | 
								nodeUnschedulable: nodeUnschedulable,
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		"pods": clientFieldNameToAPIVersionFieldName{
 | 
							"pods": clientFieldNameToAPIVersionFieldName{
 | 
				
			||||||
			PodHost:   PodHost,
 | 
								podHost:   podHost,
 | 
				
			||||||
			PodStatus: PodStatus,
 | 
								podStatus: podStatus,
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		"secrets": clientFieldNameToAPIVersionFieldName{
 | 
							"secrets": clientFieldNameToAPIVersionFieldName{
 | 
				
			||||||
			SecretType: SecretType,
 | 
								secretType: secretType,
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		"serviceAccounts": clientFieldNameToAPIVersionFieldName{
 | 
							"serviceAccounts": clientFieldNameToAPIVersionFieldName{
 | 
				
			||||||
			ObjectNameField: ObjectNameField,
 | 
								objectNameField: objectNameField,
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		"endpoints": clientFieldNameToAPIVersionFieldName{
 | 
							"endpoints": clientFieldNameToAPIVersionFieldName{
 | 
				
			||||||
			ObjectNameField: ObjectNameField,
 | 
								objectNameField: objectNameField,
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		"events": clientFieldNameToAPIVersionFieldName{
 | 
							"events": clientFieldNameToAPIVersionFieldName{
 | 
				
			||||||
			ObjectNameField:              ObjectNameField,
 | 
								objectNameField:              objectNameField,
 | 
				
			||||||
			EventReason:                  EventReason,
 | 
								eventReason:                  eventReason,
 | 
				
			||||||
			EventSource:                  EventSource,
 | 
								eventSource:                  eventSource,
 | 
				
			||||||
			EventType:                    EventType,
 | 
								eventType:                    eventType,
 | 
				
			||||||
			EventInvolvedKind:            EventInvolvedKind,
 | 
								eventInvolvedKind:            eventInvolvedKind,
 | 
				
			||||||
			EventInvolvedNamespace:       EventInvolvedNamespace,
 | 
								eventInvolvedNamespace:       eventInvolvedNamespace,
 | 
				
			||||||
			EventInvolvedName:            EventInvolvedName,
 | 
								eventInvolvedName:            eventInvolvedName,
 | 
				
			||||||
			EventInvolvedUID:             EventInvolvedUID,
 | 
								eventInvolvedUID:             eventInvolvedUID,
 | 
				
			||||||
			EventInvolvedAPIVersion:      EventInvolvedAPIVersion,
 | 
								eventInvolvedAPIVersion:      eventInvolvedAPIVersion,
 | 
				
			||||||
			EventInvolvedResourceVersion: EventInvolvedResourceVersion,
 | 
								eventInvolvedResourceVersion: eventInvolvedResourceVersion,
 | 
				
			||||||
			EventInvolvedFieldPath:       EventInvolvedFieldPath,
 | 
								eventInvolvedFieldPath:       eventInvolvedFieldPath,
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
 | 
				
			|||||||
limitations under the License.
 | 
					limitations under the License.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package unversioned
 | 
					package restclient
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"bytes"
 | 
						"bytes"
 | 
				
			||||||
@@ -1094,7 +1094,7 @@ func TestAbsPath(t *testing.T) {
 | 
				
			|||||||
		absPath        string
 | 
							absPath        string
 | 
				
			||||||
		wantsAbsPath   string
 | 
							wantsAbsPath   string
 | 
				
			||||||
	}{
 | 
						}{
 | 
				
			||||||
		{"", "", "", "/"},
 | 
							{"/", "", "", "/"},
 | 
				
			||||||
		{"", "", "/", "/"},
 | 
							{"", "", "/", "/"},
 | 
				
			||||||
		{"", "", "/api", "/api"},
 | 
							{"", "", "/api", "/api"},
 | 
				
			||||||
		{"", "", "/api/", "/api/"},
 | 
							{"", "", "/api/", "/api/"},
 | 
				
			||||||
@@ -1114,8 +1114,8 @@ func TestAbsPath(t *testing.T) {
 | 
				
			|||||||
		{"/p1/api/p2", "/r1", "/api/", "/p1/api/p2/api/"},
 | 
							{"/p1/api/p2", "/r1", "/api/", "/p1/api/p2/api/"},
 | 
				
			||||||
		{"/p1/api/p2", "/api/r1", "/api/", "/p1/api/p2/api/"},
 | 
							{"/p1/api/p2", "/api/r1", "/api/", "/p1/api/p2/api/"},
 | 
				
			||||||
	} {
 | 
						} {
 | 
				
			||||||
		c := NewOrDie(&Config{Host: "http://localhost:123" + tc.configPrefix})
 | 
							u, _ := url.Parse("http://localhost:123" + tc.configPrefix)
 | 
				
			||||||
		r := c.Post().Prefix(tc.resourcePrefix).AbsPath(tc.absPath)
 | 
							r := NewRequest(nil, "POST", u, "", ContentConfig{GroupVersion: &unversioned.GroupVersion{Group: "test"}}, nil, nil).Prefix(tc.resourcePrefix).AbsPath(tc.absPath)
 | 
				
			||||||
		if r.pathPrefix != tc.wantsAbsPath {
 | 
							if r.pathPrefix != tc.wantsAbsPath {
 | 
				
			||||||
			t.Errorf("test case %d failed, unexpected path: %q, expected %q", i, r.pathPrefix, tc.wantsAbsPath)
 | 
								t.Errorf("test case %d failed, unexpected path: %q, expected %q", i, r.pathPrefix, tc.wantsAbsPath)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
 | 
				
			|||||||
limitations under the License.
 | 
					limitations under the License.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package unversioned
 | 
					package restclient
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"crypto/tls"
 | 
						"crypto/tls"
 | 
				
			||||||
							
								
								
									
										93
									
								
								pkg/client/restclient/url_utils.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										93
									
								
								pkg/client/restclient/url_utils.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,93 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					Copyright 2016 The Kubernetes Authors All rights reserved.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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 restclient
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
						"net/url"
 | 
				
			||||||
 | 
						"path"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/api/unversioned"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// DefaultServerURL converts a host, host:port, or URL string to the default base server API path
 | 
				
			||||||
 | 
					// to use with a Client at a given API version following the standard conventions for a
 | 
				
			||||||
 | 
					// Kubernetes API.
 | 
				
			||||||
 | 
					func DefaultServerURL(host, apiPath string, groupVersion unversioned.GroupVersion, defaultTLS bool) (*url.URL, string, error) {
 | 
				
			||||||
 | 
						if host == "" {
 | 
				
			||||||
 | 
							return nil, "", fmt.Errorf("host must be a URL or a host:port pair")
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						base := host
 | 
				
			||||||
 | 
						hostURL, err := url.Parse(base)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, "", err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						if hostURL.Scheme == "" {
 | 
				
			||||||
 | 
							scheme := "http://"
 | 
				
			||||||
 | 
							if defaultTLS {
 | 
				
			||||||
 | 
								scheme = "https://"
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							hostURL, err = url.Parse(scheme + base)
 | 
				
			||||||
 | 
							if err != nil {
 | 
				
			||||||
 | 
								return nil, "", err
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if hostURL.Path != "" && hostURL.Path != "/" {
 | 
				
			||||||
 | 
								return nil, "", fmt.Errorf("host must be a URL or a host:port pair: %q", base)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// hostURL.Path is optional; a non-empty Path is treated as a prefix that is to be applied to
 | 
				
			||||||
 | 
						// all URIs used to access the host. this is useful when there's a proxy in front of the
 | 
				
			||||||
 | 
						// apiserver that has relocated the apiserver endpoints, forwarding all requests from, for
 | 
				
			||||||
 | 
						// example, /a/b/c to the apiserver. in this case the Path should be /a/b/c.
 | 
				
			||||||
 | 
						//
 | 
				
			||||||
 | 
						// if running without a frontend proxy (that changes the location of the apiserver), then
 | 
				
			||||||
 | 
						// hostURL.Path should be blank.
 | 
				
			||||||
 | 
						//
 | 
				
			||||||
 | 
						// versionedAPIPath, a path relative to baseURL.Path, points to a versioned API base
 | 
				
			||||||
 | 
						versionedAPIPath := path.Join("/", apiPath)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// Add the version to the end of the path
 | 
				
			||||||
 | 
						if len(groupVersion.Group) > 0 {
 | 
				
			||||||
 | 
							versionedAPIPath = path.Join(versionedAPIPath, groupVersion.Group, groupVersion.Version)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						} else {
 | 
				
			||||||
 | 
							versionedAPIPath = path.Join(versionedAPIPath, groupVersion.Version)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return hostURL, versionedAPIPath, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// defaultServerUrlFor is shared between IsConfigTransportTLS and RESTClientFor. It
 | 
				
			||||||
 | 
					// requires Host and Version to be set prior to being called.
 | 
				
			||||||
 | 
					func defaultServerUrlFor(config *Config) (*url.URL, string, error) {
 | 
				
			||||||
 | 
						// TODO: move the default to secure when the apiserver supports TLS by default
 | 
				
			||||||
 | 
						// config.Insecure is taken to mean "I want HTTPS but don't bother checking the certs against a CA."
 | 
				
			||||||
 | 
						hasCA := len(config.CAFile) != 0 || len(config.CAData) != 0
 | 
				
			||||||
 | 
						hasCert := len(config.CertFile) != 0 || len(config.CertData) != 0
 | 
				
			||||||
 | 
						defaultTLS := hasCA || hasCert || config.Insecure
 | 
				
			||||||
 | 
						host := config.Host
 | 
				
			||||||
 | 
						if host == "" {
 | 
				
			||||||
 | 
							host = "localhost"
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if config.GroupVersion != nil {
 | 
				
			||||||
 | 
							return DefaultServerURL(host, config.APIPath, *config.GroupVersion, defaultTLS)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return DefaultServerURL(host, config.APIPath, unversioned.GroupVersion{}, defaultTLS)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										61
									
								
								pkg/client/restclient/url_utils_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								pkg/client/restclient/url_utils_test.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,61 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					Copyright 2016 The Kubernetes Authors All rights reserved.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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 restclient
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"path"
 | 
				
			||||||
 | 
						"testing"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/api/testapi"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func TestValidatesHostParameter(t *testing.T) {
 | 
				
			||||||
 | 
						testCases := []struct {
 | 
				
			||||||
 | 
							Host    string
 | 
				
			||||||
 | 
							APIPath string
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							URL string
 | 
				
			||||||
 | 
							Err bool
 | 
				
			||||||
 | 
						}{
 | 
				
			||||||
 | 
							{"127.0.0.1", "", "http://127.0.0.1/" + testapi.Default.GroupVersion().Version, false},
 | 
				
			||||||
 | 
							{"127.0.0.1:8080", "", "http://127.0.0.1:8080/" + testapi.Default.GroupVersion().Version, false},
 | 
				
			||||||
 | 
							{"foo.bar.com", "", "http://foo.bar.com/" + testapi.Default.GroupVersion().Version, false},
 | 
				
			||||||
 | 
							{"http://host/prefix", "", "http://host/prefix/" + testapi.Default.GroupVersion().Version, false},
 | 
				
			||||||
 | 
							{"http://host", "", "http://host/" + testapi.Default.GroupVersion().Version, false},
 | 
				
			||||||
 | 
							{"http://host", "/", "http://host/" + testapi.Default.GroupVersion().Version, false},
 | 
				
			||||||
 | 
							{"http://host", "/other", "http://host/other/" + testapi.Default.GroupVersion().Version, false},
 | 
				
			||||||
 | 
							{"host/server", "", "", true},
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						for i, testCase := range testCases {
 | 
				
			||||||
 | 
							u, versionedAPIPath, err := DefaultServerURL(testCase.Host, testCase.APIPath, *testapi.Default.GroupVersion(), false)
 | 
				
			||||||
 | 
							switch {
 | 
				
			||||||
 | 
							case err == nil && testCase.Err:
 | 
				
			||||||
 | 
								t.Errorf("expected error but was nil")
 | 
				
			||||||
 | 
								continue
 | 
				
			||||||
 | 
							case err != nil && !testCase.Err:
 | 
				
			||||||
 | 
								t.Errorf("unexpected error %v", err)
 | 
				
			||||||
 | 
								continue
 | 
				
			||||||
 | 
							case err != nil:
 | 
				
			||||||
 | 
								continue
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							u.Path = path.Join(u.Path, versionedAPIPath)
 | 
				
			||||||
 | 
							if e, a := testCase.URL, u.String(); e != a {
 | 
				
			||||||
 | 
								t.Errorf("%d: expected host %s, got %s", i, e, a)
 | 
				
			||||||
 | 
								continue
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
 | 
				
			|||||||
limitations under the License.
 | 
					limitations under the License.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package unversioned
 | 
					package restclient
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"net/url"
 | 
						"net/url"
 | 
				
			||||||
@@ -14,13 +14,14 @@ See the License for the specific language governing permissions and
 | 
				
			|||||||
limitations under the License.
 | 
					limitations under the License.
 | 
				
			||||||
*/
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package unversioned
 | 
					package restclient
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/util"
 | 
					 | 
				
			||||||
	"net/url"
 | 
						"net/url"
 | 
				
			||||||
	"testing"
 | 
						"testing"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/util"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func parse(raw string) *url.URL {
 | 
					func parse(raw string) *url.URL {
 | 
				
			||||||
							
								
								
									
										88
									
								
								pkg/client/restclient/versions.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										88
									
								
								pkg/client/restclient/versions.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,88 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					Copyright 2014 The Kubernetes Authors All rights reserved.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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 restclient
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"encoding/json"
 | 
				
			||||||
 | 
						"fmt"
 | 
				
			||||||
 | 
						"net/http"
 | 
				
			||||||
 | 
						"path"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/api/unversioned"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const (
 | 
				
			||||||
 | 
						legacyAPIPath  = "/api"
 | 
				
			||||||
 | 
						defaultAPIPath = "/apis"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// TODO: Is this obsoleted by the discovery client?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ServerAPIVersions returns the GroupVersions supported by the API server.
 | 
				
			||||||
 | 
					// It creates a RESTClient based on the passed in config, but it doesn't rely
 | 
				
			||||||
 | 
					// on the Version and Codec of the config, because it uses AbsPath and
 | 
				
			||||||
 | 
					// takes the raw response.
 | 
				
			||||||
 | 
					func ServerAPIVersions(c *Config) (groupVersions []string, err error) {
 | 
				
			||||||
 | 
						transport, err := TransportFor(c)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						client := http.Client{Transport: transport}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						configCopy := *c
 | 
				
			||||||
 | 
						configCopy.GroupVersion = nil
 | 
				
			||||||
 | 
						configCopy.APIPath = ""
 | 
				
			||||||
 | 
						baseURL, _, err := defaultServerUrlFor(&configCopy)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						// Get the groupVersions exposed at /api
 | 
				
			||||||
 | 
						originalPath := baseURL.Path
 | 
				
			||||||
 | 
						baseURL.Path = path.Join(originalPath, legacyAPIPath)
 | 
				
			||||||
 | 
						resp, err := client.Get(baseURL.String())
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						var v unversioned.APIVersions
 | 
				
			||||||
 | 
						defer resp.Body.Close()
 | 
				
			||||||
 | 
						err = json.NewDecoder(resp.Body).Decode(&v)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, fmt.Errorf("unexpected error: %v", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						groupVersions = append(groupVersions, v.Versions...)
 | 
				
			||||||
 | 
						// Get the groupVersions exposed at /apis
 | 
				
			||||||
 | 
						baseURL.Path = path.Join(originalPath, defaultAPIPath)
 | 
				
			||||||
 | 
						resp2, err := client.Get(baseURL.String())
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, err
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						var apiGroupList unversioned.APIGroupList
 | 
				
			||||||
 | 
						defer resp2.Body.Close()
 | 
				
			||||||
 | 
						err = json.NewDecoder(resp2.Body).Decode(&apiGroupList)
 | 
				
			||||||
 | 
						if err != nil {
 | 
				
			||||||
 | 
							return nil, fmt.Errorf("unexpected error: %v", err)
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						for _, g := range apiGroupList.Groups {
 | 
				
			||||||
 | 
							for _, gv := range g.Versions {
 | 
				
			||||||
 | 
								groupVersions = append(groupVersions, gv.GroupVersion)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return groupVersions, nil
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -21,7 +21,7 @@ import (
 | 
				
			|||||||
	"sync"
 | 
						"sync"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/unversioned"
 | 
						"k8s.io/kubernetes/pkg/api/unversioned"
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/runtime"
 | 
						"k8s.io/kubernetes/pkg/runtime"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/version"
 | 
						"k8s.io/kubernetes/pkg/version"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/watch"
 | 
						"k8s.io/kubernetes/pkg/watch"
 | 
				
			||||||
@@ -64,7 +64,7 @@ type ProxyReactor interface {
 | 
				
			|||||||
	// Handles indicates whether or not this Reactor deals with a given action
 | 
						// Handles indicates whether or not this Reactor deals with a given action
 | 
				
			||||||
	Handles(action Action) bool
 | 
						Handles(action Action) bool
 | 
				
			||||||
	// React handles a watch action and returns results.  It may choose to delegate by indicated handled=false
 | 
						// React handles a watch action and returns results.  It may choose to delegate by indicated handled=false
 | 
				
			||||||
	React(action Action) (handled bool, ret client.ResponseWrapper, err error)
 | 
						React(action Action) (handled bool, ret restclient.ResponseWrapper, err error)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ReactionFunc is a function that returns an object or error for a given Action.  If "handled" is false,
 | 
					// ReactionFunc is a function that returns an object or error for a given Action.  If "handled" is false,
 | 
				
			||||||
@@ -77,7 +77,7 @@ type WatchReactionFunc func(action Action) (handled bool, ret watch.Interface, e
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// ProxyReactionFunc is a function that returns a ResponseWrapper interface for a given Action.  If "handled" is false,
 | 
					// ProxyReactionFunc is a function that returns a ResponseWrapper interface for a given Action.  If "handled" is false,
 | 
				
			||||||
// then the test client will continue ignore the results and continue to the next ProxyReactionFunc
 | 
					// then the test client will continue ignore the results and continue to the next ProxyReactionFunc
 | 
				
			||||||
type ProxyReactionFunc func(action Action) (handled bool, ret client.ResponseWrapper, err error)
 | 
					type ProxyReactionFunc func(action Action) (handled bool, ret restclient.ResponseWrapper, err error)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// AddReactor appends a reactor to the end of the chain
 | 
					// AddReactor appends a reactor to the end of the chain
 | 
				
			||||||
func (c *Fake) AddReactor(verb, resource string, reaction ReactionFunc) {
 | 
					func (c *Fake) AddReactor(verb, resource string, reaction ReactionFunc) {
 | 
				
			||||||
@@ -155,7 +155,7 @@ func (c *Fake) InvokesWatch(action Action) (watch.Interface, error) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// InvokesProxy records the provided Action and then invokes the ReactFn (if provided).
 | 
					// InvokesProxy records the provided Action and then invokes the ReactFn (if provided).
 | 
				
			||||||
func (c *Fake) InvokesProxy(action Action) client.ResponseWrapper {
 | 
					func (c *Fake) InvokesProxy(action Action) restclient.ResponseWrapper {
 | 
				
			||||||
	c.Lock()
 | 
						c.Lock()
 | 
				
			||||||
	defer c.Unlock()
 | 
						defer c.Unlock()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -26,7 +26,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/api/errors"
 | 
						"k8s.io/kubernetes/pkg/api/errors"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/meta"
 | 
						"k8s.io/kubernetes/pkg/api/meta"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/unversioned"
 | 
						"k8s.io/kubernetes/pkg/api/unversioned"
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/runtime"
 | 
						"k8s.io/kubernetes/pkg/runtime"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/util/yaml"
 | 
						"k8s.io/kubernetes/pkg/util/yaml"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/watch"
 | 
						"k8s.io/kubernetes/pkg/watch"
 | 
				
			||||||
@@ -309,6 +309,6 @@ func (r *SimpleProxyReactor) Handles(action Action) bool {
 | 
				
			|||||||
	return true
 | 
						return true
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (r *SimpleProxyReactor) React(action Action) (bool, client.ResponseWrapper, error) {
 | 
					func (r *SimpleProxyReactor) React(action Action) (bool, restclient.ResponseWrapper, error) {
 | 
				
			||||||
	return r.Reaction(action)
 | 
						return r.Reaction(action)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,7 +28,7 @@ import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/unversioned"
 | 
						"k8s.io/kubernetes/pkg/api/unversioned"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/v1"
 | 
						"k8s.io/kubernetes/pkg/api/v1"
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/conversion/queryparams"
 | 
						"k8s.io/kubernetes/pkg/conversion/queryparams"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/runtime"
 | 
						"k8s.io/kubernetes/pkg/runtime"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/watch"
 | 
						"k8s.io/kubernetes/pkg/watch"
 | 
				
			||||||
@@ -37,12 +37,12 @@ import (
 | 
				
			|||||||
// Client is a Kubernetes client that allows you to access metadata
 | 
					// Client is a Kubernetes client that allows you to access metadata
 | 
				
			||||||
// and manipulate metadata of a Kubernetes API group.
 | 
					// and manipulate metadata of a Kubernetes API group.
 | 
				
			||||||
type Client struct {
 | 
					type Client struct {
 | 
				
			||||||
	cl *client.RESTClient
 | 
						cl *restclient.RESTClient
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewClient returns a new client based on the passed in config. The
 | 
					// NewClient returns a new client based on the passed in config. The
 | 
				
			||||||
// codec is ignored, as the dynamic client uses it's own codec.
 | 
					// codec is ignored, as the dynamic client uses it's own codec.
 | 
				
			||||||
func NewClient(conf *client.Config) (*Client, error) {
 | 
					func NewClient(conf *restclient.Config) (*Client, error) {
 | 
				
			||||||
	// avoid changing the original config
 | 
						// avoid changing the original config
 | 
				
			||||||
	confCopy := *conf
 | 
						confCopy := *conf
 | 
				
			||||||
	conf = &confCopy
 | 
						conf = &confCopy
 | 
				
			||||||
@@ -54,7 +54,7 @@ func NewClient(conf *client.Config) (*Client, error) {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if len(conf.UserAgent) == 0 {
 | 
						if len(conf.UserAgent) == 0 {
 | 
				
			||||||
		conf.UserAgent = client.DefaultKubernetesUserAgent()
 | 
							conf.UserAgent = restclient.DefaultKubernetesUserAgent()
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if conf.QPS == 0.0 {
 | 
						if conf.QPS == 0.0 {
 | 
				
			||||||
@@ -64,7 +64,7 @@ func NewClient(conf *client.Config) (*Client, error) {
 | 
				
			|||||||
		conf.Burst = 10
 | 
							conf.Burst = 10
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	cl, err := client.RESTClientFor(conf)
 | 
						cl, err := restclient.RESTClientFor(conf)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -86,7 +86,7 @@ func (c *Client) Resource(resource *unversioned.APIResource, namespace string) *
 | 
				
			|||||||
// ResourceClient is an API interface to a specific resource under a
 | 
					// ResourceClient is an API interface to a specific resource under a
 | 
				
			||||||
// dynamic client.
 | 
					// dynamic client.
 | 
				
			||||||
type ResourceClient struct {
 | 
					type ResourceClient struct {
 | 
				
			||||||
	cl       *client.RESTClient
 | 
						cl       *restclient.RESTClient
 | 
				
			||||||
	resource *unversioned.APIResource
 | 
						resource *unversioned.APIResource
 | 
				
			||||||
	ns       string
 | 
						ns       string
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -94,7 +94,7 @@ type ResourceClient struct {
 | 
				
			|||||||
// namespace applies a namespace to the request if the configured
 | 
					// namespace applies a namespace to the request if the configured
 | 
				
			||||||
// resource is a namespaced resource. Otherwise, it just returns the
 | 
					// resource is a namespaced resource. Otherwise, it just returns the
 | 
				
			||||||
// passed in request.
 | 
					// passed in request.
 | 
				
			||||||
func (rc *ResourceClient) namespace(req *client.Request) *client.Request {
 | 
					func (rc *ResourceClient) namespace(req *restclient.Request) *restclient.Request {
 | 
				
			||||||
	if rc.resource.Namespaced {
 | 
						if rc.resource.Namespaced {
 | 
				
			||||||
		return req.Namespace(rc.ns)
 | 
							return req.Namespace(rc.ns)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -27,7 +27,7 @@ import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/unversioned"
 | 
						"k8s.io/kubernetes/pkg/api/unversioned"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/v1"
 | 
						"k8s.io/kubernetes/pkg/api/v1"
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/runtime"
 | 
						"k8s.io/kubernetes/pkg/runtime"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/watch"
 | 
						"k8s.io/kubernetes/pkg/watch"
 | 
				
			||||||
	watchjson "k8s.io/kubernetes/pkg/watch/json"
 | 
						watchjson "k8s.io/kubernetes/pkg/watch/json"
 | 
				
			||||||
@@ -62,9 +62,9 @@ func getObject(version, kind, name string) *runtime.Unstructured {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func getClientServer(gv *unversioned.GroupVersion, h func(http.ResponseWriter, *http.Request)) (*Client, *httptest.Server, error) {
 | 
					func getClientServer(gv *unversioned.GroupVersion, h func(http.ResponseWriter, *http.Request)) (*Client, *httptest.Server, error) {
 | 
				
			||||||
	srv := httptest.NewServer(http.HandlerFunc(h))
 | 
						srv := httptest.NewServer(http.HandlerFunc(h))
 | 
				
			||||||
	cl, err := NewClient(&client.Config{
 | 
						cl, err := NewClient(&restclient.Config{
 | 
				
			||||||
		Host:          srv.URL,
 | 
							Host:          srv.URL,
 | 
				
			||||||
		ContentConfig: client.ContentConfig{GroupVersion: gv},
 | 
							ContentConfig: restclient.ContentConfig{GroupVersion: gv},
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		srv.Close()
 | 
							srv.Close()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,7 +19,7 @@ package unversioned
 | 
				
			|||||||
import (
 | 
					import (
 | 
				
			||||||
	api "k8s.io/kubernetes/pkg/api"
 | 
						api "k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	registered "k8s.io/kubernetes/pkg/apimachinery/registered"
 | 
						registered "k8s.io/kubernetes/pkg/apimachinery/registered"
 | 
				
			||||||
	unversioned "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						restclient "k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type CoreInterface interface {
 | 
					type CoreInterface interface {
 | 
				
			||||||
@@ -43,7 +43,7 @@ type CoreInterface interface {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// CoreClient is used to interact with features provided by the Core group.
 | 
					// CoreClient is used to interact with features provided by the Core group.
 | 
				
			||||||
type CoreClient struct {
 | 
					type CoreClient struct {
 | 
				
			||||||
	*unversioned.RESTClient
 | 
						*restclient.RESTClient
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (c *CoreClient) ComponentStatuses() ComponentStatusInterface {
 | 
					func (c *CoreClient) ComponentStatuses() ComponentStatusInterface {
 | 
				
			||||||
@@ -111,12 +111,12 @@ func (c *CoreClient) ServiceAccounts(namespace string) ServiceAccountInterface {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewForConfig creates a new CoreClient for the given config.
 | 
					// NewForConfig creates a new CoreClient for the given config.
 | 
				
			||||||
func NewForConfig(c *unversioned.Config) (*CoreClient, error) {
 | 
					func NewForConfig(c *restclient.Config) (*CoreClient, error) {
 | 
				
			||||||
	config := *c
 | 
						config := *c
 | 
				
			||||||
	if err := setConfigDefaults(&config); err != nil {
 | 
						if err := setConfigDefaults(&config); err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	client, err := unversioned.RESTClientFor(&config)
 | 
						client, err := restclient.RESTClientFor(&config)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -125,7 +125,7 @@ func NewForConfig(c *unversioned.Config) (*CoreClient, error) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// NewForConfigOrDie creates a new CoreClient for the given config and
 | 
					// NewForConfigOrDie creates a new CoreClient for the given config and
 | 
				
			||||||
// panics if there is an error in the config.
 | 
					// panics if there is an error in the config.
 | 
				
			||||||
func NewForConfigOrDie(c *unversioned.Config) *CoreClient {
 | 
					func NewForConfigOrDie(c *restclient.Config) *CoreClient {
 | 
				
			||||||
	client, err := NewForConfig(c)
 | 
						client, err := NewForConfig(c)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		panic(err)
 | 
							panic(err)
 | 
				
			||||||
@@ -134,11 +134,11 @@ func NewForConfigOrDie(c *unversioned.Config) *CoreClient {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// New creates a new CoreClient for the given RESTClient.
 | 
					// New creates a new CoreClient for the given RESTClient.
 | 
				
			||||||
func New(c *unversioned.RESTClient) *CoreClient {
 | 
					func New(c *restclient.RESTClient) *CoreClient {
 | 
				
			||||||
	return &CoreClient{c}
 | 
						return &CoreClient{c}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func setConfigDefaults(config *unversioned.Config) error {
 | 
					func setConfigDefaults(config *restclient.Config) error {
 | 
				
			||||||
	// if core group is not registered, return an error
 | 
						// if core group is not registered, return an error
 | 
				
			||||||
	g, err := registered.Group("")
 | 
						g, err := registered.Group("")
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
@@ -146,7 +146,7 @@ func setConfigDefaults(config *unversioned.Config) error {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	config.APIPath = "/api"
 | 
						config.APIPath = "/api"
 | 
				
			||||||
	if config.UserAgent == "" {
 | 
						if config.UserAgent == "" {
 | 
				
			||||||
		config.UserAgent = unversioned.DefaultKubernetesUserAgent()
 | 
							config.UserAgent = restclient.DefaultKubernetesUserAgent()
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	// TODO: Unconditionally set the config.Version, until we fix the config.
 | 
						// TODO: Unconditionally set the config.Version, until we fix the config.
 | 
				
			||||||
	//if config.Version == "" {
 | 
						//if config.Version == "" {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,8 +18,8 @@ package fake
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/testing/core"
 | 
						"k8s.io/kubernetes/pkg/client/testing/core"
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
					 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (c *FakePods) Bind(binding *api.Binding) error {
 | 
					func (c *FakePods) Bind(binding *api.Binding) error {
 | 
				
			||||||
@@ -33,7 +33,7 @@ func (c *FakePods) Bind(binding *api.Binding) error {
 | 
				
			|||||||
	return err
 | 
						return err
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (c *FakePods) GetLogs(name string, opts *api.PodLogOptions) *client.Request {
 | 
					func (c *FakePods) GetLogs(name string, opts *api.PodLogOptions) *restclient.Request {
 | 
				
			||||||
	action := core.GenericActionImpl{}
 | 
						action := core.GenericActionImpl{}
 | 
				
			||||||
	action.Verb = "get"
 | 
						action.Verb = "get"
 | 
				
			||||||
	action.Namespace = c.ns
 | 
						action.Namespace = c.ns
 | 
				
			||||||
@@ -42,5 +42,5 @@ func (c *FakePods) GetLogs(name string, opts *api.PodLogOptions) *client.Request
 | 
				
			|||||||
	action.Value = opts
 | 
						action.Value = opts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	_, _ = c.Fake.Invokes(action, &api.Pod{})
 | 
						_, _ = c.Fake.Invokes(action, &api.Pod{})
 | 
				
			||||||
	return &client.Request{}
 | 
						return &restclient.Request{}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,10 +17,10 @@ limitations under the License.
 | 
				
			|||||||
package fake
 | 
					package fake
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/testing/core"
 | 
						"k8s.io/kubernetes/pkg/client/testing/core"
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
					 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (c *FakeServices) ProxyGet(scheme, name, port, path string, params map[string]string) client.ResponseWrapper {
 | 
					func (c *FakeServices) ProxyGet(scheme, name, port, path string, params map[string]string) restclient.ResponseWrapper {
 | 
				
			||||||
	return c.Fake.InvokesProxy(core.NewProxyGetAction("services", c.ns, scheme, name, port, path, params))
 | 
						return c.Fake.InvokesProxy(core.NewProxyGetAction("services", c.ns, scheme, name, port, path, params))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,13 +18,13 @@ package unversioned
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	unversioned "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// The PodExpansion interface allows manually adding extra methods to the PodInterface.
 | 
					// The PodExpansion interface allows manually adding extra methods to the PodInterface.
 | 
				
			||||||
type PodExpansion interface {
 | 
					type PodExpansion interface {
 | 
				
			||||||
	Bind(binding *api.Binding) error
 | 
						Bind(binding *api.Binding) error
 | 
				
			||||||
	GetLogs(name string, opts *api.PodLogOptions) *unversioned.Request
 | 
						GetLogs(name string, opts *api.PodLogOptions) *restclient.Request
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Bind applies the provided binding to the named pod in the current namespace (binding.Namespace is ignored).
 | 
					// Bind applies the provided binding to the named pod in the current namespace (binding.Namespace is ignored).
 | 
				
			||||||
@@ -33,6 +33,6 @@ func (c *pods) Bind(binding *api.Binding) error {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Get constructs a request for getting the logs for a pod
 | 
					// Get constructs a request for getting the logs for a pod
 | 
				
			||||||
func (c *pods) GetLogs(name string, opts *api.PodLogOptions) *unversioned.Request {
 | 
					func (c *pods) GetLogs(name string, opts *api.PodLogOptions) *restclient.Request {
 | 
				
			||||||
	return c.client.Get().Namespace(c.ns).Name(name).Resource("pods").SubResource("log").VersionedParams(opts, api.ParameterCodec)
 | 
						return c.client.Get().Namespace(c.ns).Name(name).Resource("pods").SubResource("log").VersionedParams(opts, api.ParameterCodec)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,17 +17,17 @@ limitations under the License.
 | 
				
			|||||||
package unversioned
 | 
					package unversioned
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/unversioned"
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/util/net"
 | 
						"k8s.io/kubernetes/pkg/util/net"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// The ServiceExpansion interface allows manually adding extra methods to the ServiceInterface.
 | 
					// The ServiceExpansion interface allows manually adding extra methods to the ServiceInterface.
 | 
				
			||||||
type ServiceExpansion interface {
 | 
					type ServiceExpansion interface {
 | 
				
			||||||
	ProxyGet(scheme, name, port, path string, params map[string]string) unversioned.ResponseWrapper
 | 
						ProxyGet(scheme, name, port, path string, params map[string]string) restclient.ResponseWrapper
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ProxyGet returns a response of the service by calling it through the proxy.
 | 
					// ProxyGet returns a response of the service by calling it through the proxy.
 | 
				
			||||||
func (c *services) ProxyGet(scheme, name, port, path string, params map[string]string) unversioned.ResponseWrapper {
 | 
					func (c *services) ProxyGet(scheme, name, port, path string, params map[string]string) restclient.ResponseWrapper {
 | 
				
			||||||
	request := c.client.Get().
 | 
						request := c.client.Get().
 | 
				
			||||||
		Prefix("proxy").
 | 
							Prefix("proxy").
 | 
				
			||||||
		Namespace(c.ns).
 | 
							Namespace(c.ns).
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,7 +19,7 @@ package v1
 | 
				
			|||||||
import (
 | 
					import (
 | 
				
			||||||
	api "k8s.io/kubernetes/pkg/api"
 | 
						api "k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	registered "k8s.io/kubernetes/pkg/apimachinery/registered"
 | 
						registered "k8s.io/kubernetes/pkg/apimachinery/registered"
 | 
				
			||||||
	unversioned "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						restclient "k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type CoreInterface interface {
 | 
					type CoreInterface interface {
 | 
				
			||||||
@@ -42,7 +42,7 @@ type CoreInterface interface {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// CoreClient is used to interact with features provided by the Core group.
 | 
					// CoreClient is used to interact with features provided by the Core group.
 | 
				
			||||||
type CoreClient struct {
 | 
					type CoreClient struct {
 | 
				
			||||||
	*unversioned.RESTClient
 | 
						*restclient.RESTClient
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (c *CoreClient) ComponentStatuses() ComponentStatusInterface {
 | 
					func (c *CoreClient) ComponentStatuses() ComponentStatusInterface {
 | 
				
			||||||
@@ -106,12 +106,12 @@ func (c *CoreClient) ServiceAccounts(namespace string) ServiceAccountInterface {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewForConfig creates a new CoreClient for the given config.
 | 
					// NewForConfig creates a new CoreClient for the given config.
 | 
				
			||||||
func NewForConfig(c *unversioned.Config) (*CoreClient, error) {
 | 
					func NewForConfig(c *restclient.Config) (*CoreClient, error) {
 | 
				
			||||||
	config := *c
 | 
						config := *c
 | 
				
			||||||
	if err := setConfigDefaults(&config); err != nil {
 | 
						if err := setConfigDefaults(&config); err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	client, err := unversioned.RESTClientFor(&config)
 | 
						client, err := restclient.RESTClientFor(&config)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -120,7 +120,7 @@ func NewForConfig(c *unversioned.Config) (*CoreClient, error) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// NewForConfigOrDie creates a new CoreClient for the given config and
 | 
					// NewForConfigOrDie creates a new CoreClient for the given config and
 | 
				
			||||||
// panics if there is an error in the config.
 | 
					// panics if there is an error in the config.
 | 
				
			||||||
func NewForConfigOrDie(c *unversioned.Config) *CoreClient {
 | 
					func NewForConfigOrDie(c *restclient.Config) *CoreClient {
 | 
				
			||||||
	client, err := NewForConfig(c)
 | 
						client, err := NewForConfig(c)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		panic(err)
 | 
							panic(err)
 | 
				
			||||||
@@ -129,11 +129,11 @@ func NewForConfigOrDie(c *unversioned.Config) *CoreClient {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// New creates a new CoreClient for the given RESTClient.
 | 
					// New creates a new CoreClient for the given RESTClient.
 | 
				
			||||||
func New(c *unversioned.RESTClient) *CoreClient {
 | 
					func New(c *restclient.RESTClient) *CoreClient {
 | 
				
			||||||
	return &CoreClient{c}
 | 
						return &CoreClient{c}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func setConfigDefaults(config *unversioned.Config) error {
 | 
					func setConfigDefaults(config *restclient.Config) error {
 | 
				
			||||||
	// if core group is not registered, return an error
 | 
						// if core group is not registered, return an error
 | 
				
			||||||
	g, err := registered.Group("")
 | 
						g, err := registered.Group("")
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
@@ -141,7 +141,7 @@ func setConfigDefaults(config *unversioned.Config) error {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	config.APIPath = "/api"
 | 
						config.APIPath = "/api"
 | 
				
			||||||
	if config.UserAgent == "" {
 | 
						if config.UserAgent == "" {
 | 
				
			||||||
		config.UserAgent = unversioned.DefaultKubernetesUserAgent()
 | 
							config.UserAgent = restclient.DefaultKubernetesUserAgent()
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	// TODO: Unconditionally set the config.Version, until we fix the config.
 | 
						// TODO: Unconditionally set the config.Version, until we fix the config.
 | 
				
			||||||
	//if config.Version == "" {
 | 
						//if config.Version == "" {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,8 +18,8 @@ package fake
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/v1"
 | 
						"k8s.io/kubernetes/pkg/api/v1"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/testing/core"
 | 
						"k8s.io/kubernetes/pkg/client/testing/core"
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
					 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (c *FakePods) Bind(binding *v1.Binding) error {
 | 
					func (c *FakePods) Bind(binding *v1.Binding) error {
 | 
				
			||||||
@@ -33,7 +33,7 @@ func (c *FakePods) Bind(binding *v1.Binding) error {
 | 
				
			|||||||
	return err
 | 
						return err
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (c *FakePods) GetLogs(name string, opts *v1.PodLogOptions) *client.Request {
 | 
					func (c *FakePods) GetLogs(name string, opts *v1.PodLogOptions) *restclient.Request {
 | 
				
			||||||
	action := core.GenericActionImpl{}
 | 
						action := core.GenericActionImpl{}
 | 
				
			||||||
	action.Verb = "get"
 | 
						action.Verb = "get"
 | 
				
			||||||
	action.Namespace = c.ns
 | 
						action.Namespace = c.ns
 | 
				
			||||||
@@ -42,5 +42,5 @@ func (c *FakePods) GetLogs(name string, opts *v1.PodLogOptions) *client.Request
 | 
				
			|||||||
	action.Value = opts
 | 
						action.Value = opts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	_, _ = c.Fake.Invokes(action, &v1.Pod{})
 | 
						_, _ = c.Fake.Invokes(action, &v1.Pod{})
 | 
				
			||||||
	return &client.Request{}
 | 
						return &restclient.Request{}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,10 +17,10 @@ limitations under the License.
 | 
				
			|||||||
package fake
 | 
					package fake
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/testing/core"
 | 
						"k8s.io/kubernetes/pkg/client/testing/core"
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
					 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (c *FakeServices) ProxyGet(scheme, name, port, path string, params map[string]string) client.ResponseWrapper {
 | 
					func (c *FakeServices) ProxyGet(scheme, name, port, path string, params map[string]string) restclient.ResponseWrapper {
 | 
				
			||||||
	return c.Fake.InvokesProxy(core.NewProxyGetAction("services", c.ns, scheme, name, port, path, params))
 | 
						return c.Fake.InvokesProxy(core.NewProxyGetAction("services", c.ns, scheme, name, port, path, params))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,13 +19,13 @@ package v1
 | 
				
			|||||||
import (
 | 
					import (
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/v1"
 | 
						"k8s.io/kubernetes/pkg/api/v1"
 | 
				
			||||||
	unversioned "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// The PodExpansion interface allows manually adding extra methods to the PodInterface.
 | 
					// The PodExpansion interface allows manually adding extra methods to the PodInterface.
 | 
				
			||||||
type PodExpansion interface {
 | 
					type PodExpansion interface {
 | 
				
			||||||
	Bind(binding *v1.Binding) error
 | 
						Bind(binding *v1.Binding) error
 | 
				
			||||||
	GetLogs(name string, opts *v1.PodLogOptions) *unversioned.Request
 | 
						GetLogs(name string, opts *v1.PodLogOptions) *restclient.Request
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Bind applies the provided binding to the named pod in the current namespace (binding.Namespace is ignored).
 | 
					// Bind applies the provided binding to the named pod in the current namespace (binding.Namespace is ignored).
 | 
				
			||||||
@@ -34,6 +34,6 @@ func (c *pods) Bind(binding *v1.Binding) error {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Get constructs a request for getting the logs for a pod
 | 
					// Get constructs a request for getting the logs for a pod
 | 
				
			||||||
func (c *pods) GetLogs(name string, opts *v1.PodLogOptions) *unversioned.Request {
 | 
					func (c *pods) GetLogs(name string, opts *v1.PodLogOptions) *restclient.Request {
 | 
				
			||||||
	return c.client.Get().Namespace(c.ns).Name(name).Resource("pods").SubResource("log").VersionedParams(opts, api.ParameterCodec)
 | 
						return c.client.Get().Namespace(c.ns).Name(name).Resource("pods").SubResource("log").VersionedParams(opts, api.ParameterCodec)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,17 +17,17 @@ limitations under the License.
 | 
				
			|||||||
package v1
 | 
					package v1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/unversioned"
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/util/net"
 | 
						"k8s.io/kubernetes/pkg/util/net"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// The ServiceExpansion interface allows manually adding extra methods to the ServiceInterface.
 | 
					// The ServiceExpansion interface allows manually adding extra methods to the ServiceInterface.
 | 
				
			||||||
type ServiceExpansion interface {
 | 
					type ServiceExpansion interface {
 | 
				
			||||||
	ProxyGet(scheme, name, port, path string, params map[string]string) unversioned.ResponseWrapper
 | 
						ProxyGet(scheme, name, port, path string, params map[string]string) restclient.ResponseWrapper
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ProxyGet returns a response of the service by calling it through the proxy.
 | 
					// ProxyGet returns a response of the service by calling it through the proxy.
 | 
				
			||||||
func (c *services) ProxyGet(scheme, name, port, path string, params map[string]string) unversioned.ResponseWrapper {
 | 
					func (c *services) ProxyGet(scheme, name, port, path string, params map[string]string) restclient.ResponseWrapper {
 | 
				
			||||||
	request := c.client.Get().
 | 
						request := c.client.Get().
 | 
				
			||||||
		Prefix("proxy").
 | 
							Prefix("proxy").
 | 
				
			||||||
		Namespace(c.ns).
 | 
							Namespace(c.ns).
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,7 +19,7 @@ package unversioned
 | 
				
			|||||||
import (
 | 
					import (
 | 
				
			||||||
	api "k8s.io/kubernetes/pkg/api"
 | 
						api "k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	registered "k8s.io/kubernetes/pkg/apimachinery/registered"
 | 
						registered "k8s.io/kubernetes/pkg/apimachinery/registered"
 | 
				
			||||||
	unversioned "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						restclient "k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ExtensionsInterface interface {
 | 
					type ExtensionsInterface interface {
 | 
				
			||||||
@@ -35,7 +35,7 @@ type ExtensionsInterface interface {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// ExtensionsClient is used to interact with features provided by the Extensions group.
 | 
					// ExtensionsClient is used to interact with features provided by the Extensions group.
 | 
				
			||||||
type ExtensionsClient struct {
 | 
					type ExtensionsClient struct {
 | 
				
			||||||
	*unversioned.RESTClient
 | 
						*restclient.RESTClient
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (c *ExtensionsClient) DaemonSets(namespace string) DaemonSetInterface {
 | 
					func (c *ExtensionsClient) DaemonSets(namespace string) DaemonSetInterface {
 | 
				
			||||||
@@ -71,12 +71,12 @@ func (c *ExtensionsClient) ThirdPartyResources(namespace string) ThirdPartyResou
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewForConfig creates a new ExtensionsClient for the given config.
 | 
					// NewForConfig creates a new ExtensionsClient for the given config.
 | 
				
			||||||
func NewForConfig(c *unversioned.Config) (*ExtensionsClient, error) {
 | 
					func NewForConfig(c *restclient.Config) (*ExtensionsClient, error) {
 | 
				
			||||||
	config := *c
 | 
						config := *c
 | 
				
			||||||
	if err := setConfigDefaults(&config); err != nil {
 | 
						if err := setConfigDefaults(&config); err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	client, err := unversioned.RESTClientFor(&config)
 | 
						client, err := restclient.RESTClientFor(&config)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -85,7 +85,7 @@ func NewForConfig(c *unversioned.Config) (*ExtensionsClient, error) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// NewForConfigOrDie creates a new ExtensionsClient for the given config and
 | 
					// NewForConfigOrDie creates a new ExtensionsClient for the given config and
 | 
				
			||||||
// panics if there is an error in the config.
 | 
					// panics if there is an error in the config.
 | 
				
			||||||
func NewForConfigOrDie(c *unversioned.Config) *ExtensionsClient {
 | 
					func NewForConfigOrDie(c *restclient.Config) *ExtensionsClient {
 | 
				
			||||||
	client, err := NewForConfig(c)
 | 
						client, err := NewForConfig(c)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		panic(err)
 | 
							panic(err)
 | 
				
			||||||
@@ -94,11 +94,11 @@ func NewForConfigOrDie(c *unversioned.Config) *ExtensionsClient {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// New creates a new ExtensionsClient for the given RESTClient.
 | 
					// New creates a new ExtensionsClient for the given RESTClient.
 | 
				
			||||||
func New(c *unversioned.RESTClient) *ExtensionsClient {
 | 
					func New(c *restclient.RESTClient) *ExtensionsClient {
 | 
				
			||||||
	return &ExtensionsClient{c}
 | 
						return &ExtensionsClient{c}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func setConfigDefaults(config *unversioned.Config) error {
 | 
					func setConfigDefaults(config *restclient.Config) error {
 | 
				
			||||||
	// if extensions group is not registered, return an error
 | 
						// if extensions group is not registered, return an error
 | 
				
			||||||
	g, err := registered.Group("extensions")
 | 
						g, err := registered.Group("extensions")
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
@@ -106,7 +106,7 @@ func setConfigDefaults(config *unversioned.Config) error {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	config.APIPath = "/apis"
 | 
						config.APIPath = "/apis"
 | 
				
			||||||
	if config.UserAgent == "" {
 | 
						if config.UserAgent == "" {
 | 
				
			||||||
		config.UserAgent = unversioned.DefaultKubernetesUserAgent()
 | 
							config.UserAgent = restclient.DefaultKubernetesUserAgent()
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	// TODO: Unconditionally set the config.Version, until we fix the config.
 | 
						// TODO: Unconditionally set the config.Version, until we fix the config.
 | 
				
			||||||
	//if config.Version == "" {
 | 
						//if config.Version == "" {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,7 +19,7 @@ package v1beta1
 | 
				
			|||||||
import (
 | 
					import (
 | 
				
			||||||
	api "k8s.io/kubernetes/pkg/api"
 | 
						api "k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	registered "k8s.io/kubernetes/pkg/apimachinery/registered"
 | 
						registered "k8s.io/kubernetes/pkg/apimachinery/registered"
 | 
				
			||||||
	unversioned "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						restclient "k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type ExtensionsInterface interface {
 | 
					type ExtensionsInterface interface {
 | 
				
			||||||
@@ -35,7 +35,7 @@ type ExtensionsInterface interface {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// ExtensionsClient is used to interact with features provided by the Extensions group.
 | 
					// ExtensionsClient is used to interact with features provided by the Extensions group.
 | 
				
			||||||
type ExtensionsClient struct {
 | 
					type ExtensionsClient struct {
 | 
				
			||||||
	*unversioned.RESTClient
 | 
						*restclient.RESTClient
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (c *ExtensionsClient) DaemonSets(namespace string) DaemonSetInterface {
 | 
					func (c *ExtensionsClient) DaemonSets(namespace string) DaemonSetInterface {
 | 
				
			||||||
@@ -71,12 +71,12 @@ func (c *ExtensionsClient) ThirdPartyResources(namespace string) ThirdPartyResou
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewForConfig creates a new ExtensionsClient for the given config.
 | 
					// NewForConfig creates a new ExtensionsClient for the given config.
 | 
				
			||||||
func NewForConfig(c *unversioned.Config) (*ExtensionsClient, error) {
 | 
					func NewForConfig(c *restclient.Config) (*ExtensionsClient, error) {
 | 
				
			||||||
	config := *c
 | 
						config := *c
 | 
				
			||||||
	if err := setConfigDefaults(&config); err != nil {
 | 
						if err := setConfigDefaults(&config); err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	client, err := unversioned.RESTClientFor(&config)
 | 
						client, err := restclient.RESTClientFor(&config)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -85,7 +85,7 @@ func NewForConfig(c *unversioned.Config) (*ExtensionsClient, error) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// NewForConfigOrDie creates a new ExtensionsClient for the given config and
 | 
					// NewForConfigOrDie creates a new ExtensionsClient for the given config and
 | 
				
			||||||
// panics if there is an error in the config.
 | 
					// panics if there is an error in the config.
 | 
				
			||||||
func NewForConfigOrDie(c *unversioned.Config) *ExtensionsClient {
 | 
					func NewForConfigOrDie(c *restclient.Config) *ExtensionsClient {
 | 
				
			||||||
	client, err := NewForConfig(c)
 | 
						client, err := NewForConfig(c)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		panic(err)
 | 
							panic(err)
 | 
				
			||||||
@@ -94,11 +94,11 @@ func NewForConfigOrDie(c *unversioned.Config) *ExtensionsClient {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// New creates a new ExtensionsClient for the given RESTClient.
 | 
					// New creates a new ExtensionsClient for the given RESTClient.
 | 
				
			||||||
func New(c *unversioned.RESTClient) *ExtensionsClient {
 | 
					func New(c *restclient.RESTClient) *ExtensionsClient {
 | 
				
			||||||
	return &ExtensionsClient{c}
 | 
						return &ExtensionsClient{c}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func setConfigDefaults(config *unversioned.Config) error {
 | 
					func setConfigDefaults(config *restclient.Config) error {
 | 
				
			||||||
	// if extensions group is not registered, return an error
 | 
						// if extensions group is not registered, return an error
 | 
				
			||||||
	g, err := registered.Group("extensions")
 | 
						g, err := registered.Group("extensions")
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
@@ -106,7 +106,7 @@ func setConfigDefaults(config *unversioned.Config) error {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	config.APIPath = "/apis"
 | 
						config.APIPath = "/apis"
 | 
				
			||||||
	if config.UserAgent == "" {
 | 
						if config.UserAgent == "" {
 | 
				
			||||||
		config.UserAgent = unversioned.DefaultKubernetesUserAgent()
 | 
							config.UserAgent = restclient.DefaultKubernetesUserAgent()
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	// TODO: Unconditionally set the config.Version, until we fix the config.
 | 
						// TODO: Unconditionally set the config.Version, until we fix the config.
 | 
				
			||||||
	//if config.Version == "" {
 | 
						//if config.Version == "" {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -68,7 +68,7 @@ import (
 | 
				
			|||||||
	"io/ioutil"
 | 
						"io/ioutil"
 | 
				
			||||||
	"os"
 | 
						"os"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Info holds Kubernetes API authorization config.  It is intended
 | 
					// Info holds Kubernetes API authorization config.  It is intended
 | 
				
			||||||
@@ -104,8 +104,8 @@ func LoadFromFile(path string) (*Info, error) {
 | 
				
			|||||||
// MergeWithConfig returns a copy of a client.Config with values from the Info.
 | 
					// MergeWithConfig returns a copy of a client.Config with values from the Info.
 | 
				
			||||||
// The fields of client.Config with a corresponding field in the Info are set
 | 
					// The fields of client.Config with a corresponding field in the Info are set
 | 
				
			||||||
// with the value from the Info.
 | 
					// with the value from the Info.
 | 
				
			||||||
func (info Info) MergeWithConfig(c client.Config) (client.Config, error) {
 | 
					func (info Info) MergeWithConfig(c restclient.Config) (restclient.Config, error) {
 | 
				
			||||||
	var config client.Config = c
 | 
						var config restclient.Config = c
 | 
				
			||||||
	config.Username = info.User
 | 
						config.Username = info.User
 | 
				
			||||||
	config.Password = info.Password
 | 
						config.Password = info.Password
 | 
				
			||||||
	config.CAFile = info.CAFile
 | 
						config.CAFile = info.CAFile
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,6 +20,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/apimachinery/registered"
 | 
						"k8s.io/kubernetes/pkg/apimachinery/registered"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/apis/autoscaling"
 | 
						"k8s.io/kubernetes/pkg/apis/autoscaling"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type AutoscalingInterface interface {
 | 
					type AutoscalingInterface interface {
 | 
				
			||||||
@@ -28,26 +29,26 @@ type AutoscalingInterface interface {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// AutoscalingClient is used to interact with Kubernetes autoscaling features.
 | 
					// AutoscalingClient is used to interact with Kubernetes autoscaling features.
 | 
				
			||||||
type AutoscalingClient struct {
 | 
					type AutoscalingClient struct {
 | 
				
			||||||
	*RESTClient
 | 
						*restclient.RESTClient
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (c *AutoscalingClient) HorizontalPodAutoscalers(namespace string) HorizontalPodAutoscalerInterface {
 | 
					func (c *AutoscalingClient) HorizontalPodAutoscalers(namespace string) HorizontalPodAutoscalerInterface {
 | 
				
			||||||
	return newHorizontalPodAutoscalersV1(c, namespace)
 | 
						return newHorizontalPodAutoscalersV1(c, namespace)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func NewAutoscaling(c *Config) (*AutoscalingClient, error) {
 | 
					func NewAutoscaling(c *restclient.Config) (*AutoscalingClient, error) {
 | 
				
			||||||
	config := *c
 | 
						config := *c
 | 
				
			||||||
	if err := setAutoscalingDefaults(&config); err != nil {
 | 
						if err := setAutoscalingDefaults(&config); err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	client, err := RESTClientFor(&config)
 | 
						client, err := restclient.RESTClientFor(&config)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return &AutoscalingClient{client}, nil
 | 
						return &AutoscalingClient{client}, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func NewAutoscalingOrDie(c *Config) *AutoscalingClient {
 | 
					func NewAutoscalingOrDie(c *restclient.Config) *AutoscalingClient {
 | 
				
			||||||
	client, err := NewAutoscaling(c)
 | 
						client, err := NewAutoscaling(c)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		panic(err)
 | 
							panic(err)
 | 
				
			||||||
@@ -55,7 +56,7 @@ func NewAutoscalingOrDie(c *Config) *AutoscalingClient {
 | 
				
			|||||||
	return client
 | 
						return client
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func setAutoscalingDefaults(config *Config) error {
 | 
					func setAutoscalingDefaults(config *restclient.Config) error {
 | 
				
			||||||
	// if autoscaling group is not registered, return an error
 | 
						// if autoscaling group is not registered, return an error
 | 
				
			||||||
	g, err := registered.Group(autoscaling.GroupName)
 | 
						g, err := registered.Group(autoscaling.GroupName)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
@@ -63,7 +64,7 @@ func setAutoscalingDefaults(config *Config) error {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	config.APIPath = defaultAPIPath
 | 
						config.APIPath = defaultAPIPath
 | 
				
			||||||
	if config.UserAgent == "" {
 | 
						if config.UserAgent == "" {
 | 
				
			||||||
		config.UserAgent = DefaultKubernetesUserAgent()
 | 
							config.UserAgent = restclient.DefaultKubernetesUserAgent()
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	// TODO: Unconditionally set the config.Version, until we fix the config.
 | 
						// TODO: Unconditionally set the config.Version, until we fix the config.
 | 
				
			||||||
	//if config.Version == "" {
 | 
						//if config.Version == "" {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,6 +20,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/apimachinery/registered"
 | 
						"k8s.io/kubernetes/pkg/apimachinery/registered"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/apis/batch"
 | 
						"k8s.io/kubernetes/pkg/apis/batch"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type BatchInterface interface {
 | 
					type BatchInterface interface {
 | 
				
			||||||
@@ -28,26 +29,26 @@ type BatchInterface interface {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// BatchClient is used to interact with Kubernetes batch features.
 | 
					// BatchClient is used to interact with Kubernetes batch features.
 | 
				
			||||||
type BatchClient struct {
 | 
					type BatchClient struct {
 | 
				
			||||||
	*RESTClient
 | 
						*restclient.RESTClient
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (c *BatchClient) Jobs(namespace string) JobInterface {
 | 
					func (c *BatchClient) Jobs(namespace string) JobInterface {
 | 
				
			||||||
	return newJobsV1(c, namespace)
 | 
						return newJobsV1(c, namespace)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func NewBatch(c *Config) (*BatchClient, error) {
 | 
					func NewBatch(c *restclient.Config) (*BatchClient, error) {
 | 
				
			||||||
	config := *c
 | 
						config := *c
 | 
				
			||||||
	if err := setBatchDefaults(&config); err != nil {
 | 
						if err := setBatchDefaults(&config); err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	client, err := RESTClientFor(&config)
 | 
						client, err := restclient.RESTClientFor(&config)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return &BatchClient{client}, nil
 | 
						return &BatchClient{client}, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func NewBatchOrDie(c *Config) *BatchClient {
 | 
					func NewBatchOrDie(c *restclient.Config) *BatchClient {
 | 
				
			||||||
	client, err := NewBatch(c)
 | 
						client, err := NewBatch(c)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		panic(err)
 | 
							panic(err)
 | 
				
			||||||
@@ -55,7 +56,7 @@ func NewBatchOrDie(c *Config) *BatchClient {
 | 
				
			|||||||
	return client
 | 
						return client
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func setBatchDefaults(config *Config) error {
 | 
					func setBatchDefaults(config *restclient.Config) error {
 | 
				
			||||||
	// if batch group is not registered, return an error
 | 
						// if batch group is not registered, return an error
 | 
				
			||||||
	g, err := registered.Group(batch.GroupName)
 | 
						g, err := registered.Group(batch.GroupName)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
@@ -63,7 +64,7 @@ func setBatchDefaults(config *Config) error {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	config.APIPath = defaultAPIPath
 | 
						config.APIPath = defaultAPIPath
 | 
				
			||||||
	if config.UserAgent == "" {
 | 
						if config.UserAgent == "" {
 | 
				
			||||||
		config.UserAgent = DefaultKubernetesUserAgent()
 | 
							config.UserAgent = restclient.DefaultKubernetesUserAgent()
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	// TODO: Unconditionally set the config.Version, until we fix the config.
 | 
						// TODO: Unconditionally set the config.Version, until we fix the config.
 | 
				
			||||||
	//if config.Version == "" {
 | 
						//if config.Version == "" {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,6 +20,8 @@ import (
 | 
				
			|||||||
	"net"
 | 
						"net"
 | 
				
			||||||
	"net/url"
 | 
						"net/url"
 | 
				
			||||||
	"strings"
 | 
						"strings"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Interface holds the methods for clients of Kubernetes,
 | 
					// Interface holds the methods for clients of Kubernetes,
 | 
				
			||||||
@@ -112,7 +114,7 @@ func (c *Client) ConfigMaps(namespace string) ConfigMapsInterface {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Client is the implementation of a Kubernetes client.
 | 
					// Client is the implementation of a Kubernetes client.
 | 
				
			||||||
type Client struct {
 | 
					type Client struct {
 | 
				
			||||||
	*RESTClient
 | 
						*restclient.RESTClient
 | 
				
			||||||
	*AutoscalingClient
 | 
						*AutoscalingClient
 | 
				
			||||||
	*BatchClient
 | 
						*BatchClient
 | 
				
			||||||
	*ExtensionsClient
 | 
						*ExtensionsClient
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -27,6 +27,7 @@ import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/unversioned"
 | 
						"k8s.io/kubernetes/pkg/api/unversioned"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/v1"
 | 
						"k8s.io/kubernetes/pkg/api/v1"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/version"
 | 
						"k8s.io/kubernetes/pkg/version"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -48,7 +49,7 @@ func TestGetServerVersion(t *testing.T) {
 | 
				
			|||||||
	}))
 | 
						}))
 | 
				
			||||||
	// TODO: Uncomment when fix #19254
 | 
						// TODO: Uncomment when fix #19254
 | 
				
			||||||
	// defer server.Close()
 | 
						// defer server.Close()
 | 
				
			||||||
	client := NewOrDie(&Config{Host: server.URL})
 | 
						client := NewOrDie(&restclient.Config{Host: server.URL})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	got, err := client.Discovery().ServerVersion()
 | 
						got, err := client.Discovery().ServerVersion()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
@@ -84,7 +85,7 @@ func TestGetServerGroupsWithV1Server(t *testing.T) {
 | 
				
			|||||||
	}))
 | 
						}))
 | 
				
			||||||
	// TODO: Uncomment when fix #19254
 | 
						// TODO: Uncomment when fix #19254
 | 
				
			||||||
	// defer server.Close()
 | 
						// defer server.Close()
 | 
				
			||||||
	client := NewOrDie(&Config{Host: server.URL})
 | 
						client := NewOrDie(&restclient.Config{Host: server.URL})
 | 
				
			||||||
	// ServerGroups should not return an error even if server returns error at /api and /apis
 | 
						// ServerGroups should not return an error even if server returns error at /api and /apis
 | 
				
			||||||
	apiGroupList, err := client.Discovery().ServerGroups()
 | 
						apiGroupList, err := client.Discovery().ServerGroups()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
@@ -121,7 +122,7 @@ func TestGetServerResourcesWithV1Server(t *testing.T) {
 | 
				
			|||||||
	}))
 | 
						}))
 | 
				
			||||||
	// TODO: Uncomment when fix #19254
 | 
						// TODO: Uncomment when fix #19254
 | 
				
			||||||
	// defer server.Close()
 | 
						// defer server.Close()
 | 
				
			||||||
	client := NewOrDie(&Config{Host: server.URL})
 | 
						client := NewOrDie(&restclient.Config{Host: server.URL})
 | 
				
			||||||
	// ServerResources should not return an error even if server returns error at /api/v1.
 | 
						// ServerResources should not return an error even if server returns error at /api/v1.
 | 
				
			||||||
	resourceMap, err := client.Discovery().ServerResources()
 | 
						resourceMap, err := client.Discovery().ServerResources()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
@@ -214,7 +215,7 @@ func TestGetServerResources(t *testing.T) {
 | 
				
			|||||||
	}))
 | 
						}))
 | 
				
			||||||
	// TODO: Uncomment when fix #19254
 | 
						// TODO: Uncomment when fix #19254
 | 
				
			||||||
	// defer server.Close()
 | 
						// defer server.Close()
 | 
				
			||||||
	client := NewOrDie(&Config{Host: server.URL})
 | 
						client := NewOrDie(&restclient.Config{Host: server.URL})
 | 
				
			||||||
	for _, test := range tests {
 | 
						for _, test := range tests {
 | 
				
			||||||
		got, err := client.Discovery().ServerResourcesForGroupVersion(test.request)
 | 
							got, err := client.Discovery().ServerResourcesForGroupVersion(test.request)
 | 
				
			||||||
		if test.expectErr {
 | 
							if test.expectErr {
 | 
				
			||||||
@@ -277,7 +278,7 @@ func TestGetSwaggerSchema(t *testing.T) {
 | 
				
			|||||||
	// TODO: Uncomment when fix #19254
 | 
						// TODO: Uncomment when fix #19254
 | 
				
			||||||
	// defer server.Close()
 | 
						// defer server.Close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	client := NewOrDie(&Config{Host: server.URL})
 | 
						client := NewOrDie(&restclient.Config{Host: server.URL})
 | 
				
			||||||
	got, err := client.Discovery().SwaggerSchema(v1.SchemeGroupVersion)
 | 
						got, err := client.Discovery().SwaggerSchema(v1.SchemeGroupVersion)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		t.Fatalf("unexpected encoding error: %v", err)
 | 
							t.Fatalf("unexpected encoding error: %v", err)
 | 
				
			||||||
@@ -297,7 +298,7 @@ func TestGetSwaggerSchemaFail(t *testing.T) {
 | 
				
			|||||||
	// TODO: Uncomment when fix #19254
 | 
						// TODO: Uncomment when fix #19254
 | 
				
			||||||
	// defer server.Close()
 | 
						// defer server.Close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	client := NewOrDie(&Config{Host: server.URL})
 | 
						client := NewOrDie(&restclient.Config{Host: server.URL})
 | 
				
			||||||
	got, err := client.Discovery().SwaggerSchema(unversioned.GroupVersion{Group: "api.group", Version: "v4"})
 | 
						got, err := client.Discovery().SwaggerSchema(unversioned.GroupVersion{Group: "api.group", Version: "v4"})
 | 
				
			||||||
	if got != nil {
 | 
						if got != nil {
 | 
				
			||||||
		t.Fatalf("unexpected response: %v", got)
 | 
							t.Fatalf("unexpected response: %v", got)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -29,7 +29,7 @@ import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/unversioned"
 | 
						"k8s.io/kubernetes/pkg/api/unversioned"
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	clientauth "k8s.io/kubernetes/pkg/client/unversioned/auth"
 | 
						clientauth "k8s.io/kubernetes/pkg/client/unversioned/auth"
 | 
				
			||||||
	clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
 | 
						clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@@ -50,7 +50,7 @@ type ClientConfig interface {
 | 
				
			|||||||
	// RawConfig returns the merged result of all overrides
 | 
						// RawConfig returns the merged result of all overrides
 | 
				
			||||||
	RawConfig() (clientcmdapi.Config, error)
 | 
						RawConfig() (clientcmdapi.Config, error)
 | 
				
			||||||
	// ClientConfig returns a complete client config
 | 
						// ClientConfig returns a complete client config
 | 
				
			||||||
	ClientConfig() (*client.Config, error)
 | 
						ClientConfig() (*restclient.Config, error)
 | 
				
			||||||
	// Namespace returns the namespace resulting from the merged
 | 
						// Namespace returns the namespace resulting from the merged
 | 
				
			||||||
	// result of all overrides and a boolean indicating if it was
 | 
						// result of all overrides and a boolean indicating if it was
 | 
				
			||||||
	// overridden
 | 
						// overridden
 | 
				
			||||||
@@ -85,7 +85,7 @@ func (config *DirectClientConfig) RawConfig() (clientcmdapi.Config, error) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ClientConfig implements ClientConfig
 | 
					// ClientConfig implements ClientConfig
 | 
				
			||||||
func (config *DirectClientConfig) ClientConfig() (*client.Config, error) {
 | 
					func (config *DirectClientConfig) ClientConfig() (*restclient.Config, error) {
 | 
				
			||||||
	if err := config.ConfirmUsable(); err != nil {
 | 
						if err := config.ConfirmUsable(); err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -93,7 +93,7 @@ func (config *DirectClientConfig) ClientConfig() (*client.Config, error) {
 | 
				
			|||||||
	configAuthInfo := config.getAuthInfo()
 | 
						configAuthInfo := config.getAuthInfo()
 | 
				
			||||||
	configClusterInfo := config.getCluster()
 | 
						configClusterInfo := config.getCluster()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	clientConfig := &client.Config{}
 | 
						clientConfig := &restclient.Config{}
 | 
				
			||||||
	clientConfig.Host = configClusterInfo.Server
 | 
						clientConfig.Host = configClusterInfo.Server
 | 
				
			||||||
	if u, err := url.ParseRequestURI(clientConfig.Host); err == nil && u.Opaque == "" && len(u.Path) > 1 {
 | 
						if u, err := url.ParseRequestURI(clientConfig.Host); err == nil && u.Opaque == "" && len(u.Path) > 1 {
 | 
				
			||||||
		u.RawQuery = ""
 | 
							u.RawQuery = ""
 | 
				
			||||||
@@ -109,7 +109,7 @@ func (config *DirectClientConfig) ClientConfig() (*client.Config, error) {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// only try to read the auth information if we are secure
 | 
						// only try to read the auth information if we are secure
 | 
				
			||||||
	if client.IsConfigTransportTLS(*clientConfig) {
 | 
						if restclient.IsConfigTransportTLS(*clientConfig) {
 | 
				
			||||||
		var err error
 | 
							var err error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// mergo is a first write wins for map value and a last writing wins for interface values
 | 
							// mergo is a first write wins for map value and a last writing wins for interface values
 | 
				
			||||||
@@ -137,11 +137,11 @@ func (config *DirectClientConfig) ClientConfig() (*client.Config, error) {
 | 
				
			|||||||
// 1.  configClusterInfo (the final result of command line flags and merged .kubeconfig files)
 | 
					// 1.  configClusterInfo (the final result of command line flags and merged .kubeconfig files)
 | 
				
			||||||
// 2.  configAuthInfo.auth-path (this file can contain information that conflicts with #1, and we want #1 to win the priority)
 | 
					// 2.  configAuthInfo.auth-path (this file can contain information that conflicts with #1, and we want #1 to win the priority)
 | 
				
			||||||
// 3.  load the ~/.kubernetes_auth file as a default
 | 
					// 3.  load the ~/.kubernetes_auth file as a default
 | 
				
			||||||
func getServerIdentificationPartialConfig(configAuthInfo clientcmdapi.AuthInfo, configClusterInfo clientcmdapi.Cluster) (*client.Config, error) {
 | 
					func getServerIdentificationPartialConfig(configAuthInfo clientcmdapi.AuthInfo, configClusterInfo clientcmdapi.Cluster) (*restclient.Config, error) {
 | 
				
			||||||
	mergedConfig := &client.Config{}
 | 
						mergedConfig := &restclient.Config{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// configClusterInfo holds the information identify the server provided by .kubeconfig
 | 
						// configClusterInfo holds the information identify the server provided by .kubeconfig
 | 
				
			||||||
	configClientConfig := &client.Config{}
 | 
						configClientConfig := &restclient.Config{}
 | 
				
			||||||
	configClientConfig.CAFile = configClusterInfo.CertificateAuthority
 | 
						configClientConfig.CAFile = configClusterInfo.CertificateAuthority
 | 
				
			||||||
	configClientConfig.CAData = configClusterInfo.CertificateAuthorityData
 | 
						configClientConfig.CAData = configClusterInfo.CertificateAuthorityData
 | 
				
			||||||
	configClientConfig.Insecure = configClusterInfo.InsecureSkipTLSVerify
 | 
						configClientConfig.Insecure = configClusterInfo.InsecureSkipTLSVerify
 | 
				
			||||||
@@ -157,8 +157,8 @@ func getServerIdentificationPartialConfig(configAuthInfo clientcmdapi.AuthInfo,
 | 
				
			|||||||
// 2.  configAuthInfo.auth-path (this file can contain information that conflicts with #1, and we want #1 to win the priority)
 | 
					// 2.  configAuthInfo.auth-path (this file can contain information that conflicts with #1, and we want #1 to win the priority)
 | 
				
			||||||
// 3.  if there is not enough information to idenfity the user, load try the ~/.kubernetes_auth file
 | 
					// 3.  if there is not enough information to idenfity the user, load try the ~/.kubernetes_auth file
 | 
				
			||||||
// 4.  if there is not enough information to identify the user, prompt if possible
 | 
					// 4.  if there is not enough information to identify the user, prompt if possible
 | 
				
			||||||
func getUserIdentificationPartialConfig(configAuthInfo clientcmdapi.AuthInfo, fallbackReader io.Reader) (*client.Config, error) {
 | 
					func getUserIdentificationPartialConfig(configAuthInfo clientcmdapi.AuthInfo, fallbackReader io.Reader) (*restclient.Config, error) {
 | 
				
			||||||
	mergedConfig := &client.Config{}
 | 
						mergedConfig := &restclient.Config{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// blindly overwrite existing values based on precedence
 | 
						// blindly overwrite existing values based on precedence
 | 
				
			||||||
	if len(configAuthInfo.Token) > 0 {
 | 
						if len(configAuthInfo.Token) > 0 {
 | 
				
			||||||
@@ -182,7 +182,7 @@ func getUserIdentificationPartialConfig(configAuthInfo clientcmdapi.AuthInfo, fa
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		promptedConfig := makeUserIdentificationConfig(*promptedAuthInfo)
 | 
							promptedConfig := makeUserIdentificationConfig(*promptedAuthInfo)
 | 
				
			||||||
		previouslyMergedConfig := mergedConfig
 | 
							previouslyMergedConfig := mergedConfig
 | 
				
			||||||
		mergedConfig = &client.Config{}
 | 
							mergedConfig = &restclient.Config{}
 | 
				
			||||||
		mergo.Merge(mergedConfig, promptedConfig)
 | 
							mergo.Merge(mergedConfig, promptedConfig)
 | 
				
			||||||
		mergo.Merge(mergedConfig, previouslyMergedConfig)
 | 
							mergo.Merge(mergedConfig, previouslyMergedConfig)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -191,8 +191,8 @@ func getUserIdentificationPartialConfig(configAuthInfo clientcmdapi.AuthInfo, fa
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// makeUserIdentificationFieldsConfig returns a client.Config capable of being merged using mergo for only user identification information
 | 
					// makeUserIdentificationFieldsConfig returns a client.Config capable of being merged using mergo for only user identification information
 | 
				
			||||||
func makeUserIdentificationConfig(info clientauth.Info) *client.Config {
 | 
					func makeUserIdentificationConfig(info clientauth.Info) *restclient.Config {
 | 
				
			||||||
	config := &client.Config{}
 | 
						config := &restclient.Config{}
 | 
				
			||||||
	config.Username = info.User
 | 
						config.Username = info.User
 | 
				
			||||||
	config.Password = info.Password
 | 
						config.Password = info.Password
 | 
				
			||||||
	config.CertFile = info.CertFile
 | 
						config.CertFile = info.CertFile
 | 
				
			||||||
@@ -202,8 +202,8 @@ func makeUserIdentificationConfig(info clientauth.Info) *client.Config {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// makeUserIdentificationFieldsConfig returns a client.Config capable of being merged using mergo for only server identification information
 | 
					// makeUserIdentificationFieldsConfig returns a client.Config capable of being merged using mergo for only server identification information
 | 
				
			||||||
func makeServerIdentificationConfig(info clientauth.Info) client.Config {
 | 
					func makeServerIdentificationConfig(info clientauth.Info) restclient.Config {
 | 
				
			||||||
	config := client.Config{}
 | 
						config := restclient.Config{}
 | 
				
			||||||
	config.CAFile = info.CAFile
 | 
						config.CAFile = info.CAFile
 | 
				
			||||||
	if info.Insecure != nil {
 | 
						if info.Insecure != nil {
 | 
				
			||||||
		config.Insecure = *info.Insecure
 | 
							config.Insecure = *info.Insecure
 | 
				
			||||||
@@ -211,7 +211,7 @@ func makeServerIdentificationConfig(info clientauth.Info) client.Config {
 | 
				
			|||||||
	return config
 | 
						return config
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func canIdentifyUser(config client.Config) bool {
 | 
					func canIdentifyUser(config restclient.Config) bool {
 | 
				
			||||||
	return len(config.Username) > 0 ||
 | 
						return len(config.Username) > 0 ||
 | 
				
			||||||
		(len(config.CertFile) > 0 || len(config.CertData) > 0) ||
 | 
							(len(config.CertFile) > 0 || len(config.CertData) > 0) ||
 | 
				
			||||||
		len(config.BearerToken) > 0
 | 
							len(config.BearerToken) > 0
 | 
				
			||||||
@@ -324,8 +324,8 @@ func (inClusterClientConfig) RawConfig() (clientcmdapi.Config, error) {
 | 
				
			|||||||
	return clientcmdapi.Config{}, fmt.Errorf("inCluster environment config doesn't support multiple clusters")
 | 
						return clientcmdapi.Config{}, fmt.Errorf("inCluster environment config doesn't support multiple clusters")
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (inClusterClientConfig) ClientConfig() (*client.Config, error) {
 | 
					func (inClusterClientConfig) ClientConfig() (*restclient.Config, error) {
 | 
				
			||||||
	return client.InClusterConfig()
 | 
						return restclient.InClusterConfig()
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (inClusterClientConfig) Namespace() (string, error) {
 | 
					func (inClusterClientConfig) Namespace() (string, error) {
 | 
				
			||||||
@@ -358,10 +358,10 @@ func (inClusterClientConfig) Possible() bool {
 | 
				
			|||||||
// components. Warnings should reflect this usage. If neither masterUrl or kubeconfigPath
 | 
					// components. Warnings should reflect this usage. If neither masterUrl or kubeconfigPath
 | 
				
			||||||
// are passed in we fallback to inClusterConfig. If inClusterConfig fails, we fallback
 | 
					// are passed in we fallback to inClusterConfig. If inClusterConfig fails, we fallback
 | 
				
			||||||
// to the default config.
 | 
					// to the default config.
 | 
				
			||||||
func BuildConfigFromFlags(masterUrl, kubeconfigPath string) (*client.Config, error) {
 | 
					func BuildConfigFromFlags(masterUrl, kubeconfigPath string) (*restclient.Config, error) {
 | 
				
			||||||
	if kubeconfigPath == "" && masterUrl == "" {
 | 
						if kubeconfigPath == "" && masterUrl == "" {
 | 
				
			||||||
		glog.Warningf("Neither --kubeconfig nor --master was specified.  Using the inClusterConfig.  This might not work.")
 | 
							glog.Warningf("Neither --kubeconfig nor --master was specified.  Using the inClusterConfig.  This might not work.")
 | 
				
			||||||
		kubeconfig, err := client.InClusterConfig()
 | 
							kubeconfig, err := restclient.InClusterConfig()
 | 
				
			||||||
		if err == nil {
 | 
							if err == nil {
 | 
				
			||||||
			return kubeconfig, nil
 | 
								return kubeconfig, nil
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -22,7 +22,7 @@ import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	"github.com/imdario/mergo"
 | 
						"github.com/imdario/mergo"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/testapi"
 | 
						"k8s.io/kubernetes/pkg/api/testapi"
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
 | 
						clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -244,7 +244,7 @@ func TestCreateMissingContext(t *testing.T) {
 | 
				
			|||||||
		t.Errorf("Unexpected error: %v", err)
 | 
							t.Errorf("Unexpected error: %v", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	expectedConfig := &client.Config{Host: clientConfig.Host}
 | 
						expectedConfig := &restclient.Config{Host: clientConfig.Host}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if !reflect.DeepEqual(expectedConfig, clientConfig) {
 | 
						if !reflect.DeepEqual(expectedConfig, clientConfig) {
 | 
				
			||||||
		t.Errorf("Expected %#v, got %#v", expectedConfig, clientConfig)
 | 
							t.Errorf("Expected %#v, got %#v", expectedConfig, clientConfig)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,7 +23,7 @@ import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	"github.com/golang/glog"
 | 
						"github.com/golang/glog"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
 | 
						clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -86,7 +86,7 @@ func (config *DeferredLoadingClientConfig) RawConfig() (clientcmdapi.Config, err
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ClientConfig implements ClientConfig
 | 
					// ClientConfig implements ClientConfig
 | 
				
			||||||
func (config *DeferredLoadingClientConfig) ClientConfig() (*client.Config, error) {
 | 
					func (config *DeferredLoadingClientConfig) ClientConfig() (*restclient.Config, error) {
 | 
				
			||||||
	mergedClientConfig, err := config.createClientConfig()
 | 
						mergedClientConfig, err := config.createClientConfig()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,11 +16,6 @@ limitations under the License.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
package unversioned_test
 | 
					package unversioned_test
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	. "k8s.io/kubernetes/pkg/client/unversioned"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/unversioned/testclient/simple"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"net/http"
 | 
						"net/http"
 | 
				
			||||||
	"net/url"
 | 
						"net/url"
 | 
				
			||||||
@@ -30,6 +25,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/api/testapi"
 | 
						"k8s.io/kubernetes/pkg/api/testapi"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/unversioned"
 | 
						"k8s.io/kubernetes/pkg/api/unversioned"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/apis/extensions"
 | 
						"k8s.io/kubernetes/pkg/apis/extensions"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/client/unversioned/testclient/simple"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/labels"
 | 
						"k8s.io/kubernetes/pkg/labels"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -27,6 +27,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/api/errors"
 | 
						"k8s.io/kubernetes/pkg/api/errors"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/unversioned"
 | 
						"k8s.io/kubernetes/pkg/api/unversioned"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/v1"
 | 
						"k8s.io/kubernetes/pkg/api/v1"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/runtime"
 | 
						"k8s.io/kubernetes/pkg/runtime"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/version"
 | 
						"k8s.io/kubernetes/pkg/version"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@@ -70,7 +71,7 @@ type SwaggerSchemaInterface interface {
 | 
				
			|||||||
// DiscoveryClient implements the functions that discover server-supported API groups,
 | 
					// DiscoveryClient implements the functions that discover server-supported API groups,
 | 
				
			||||||
// versions and resources.
 | 
					// versions and resources.
 | 
				
			||||||
type DiscoveryClient struct {
 | 
					type DiscoveryClient struct {
 | 
				
			||||||
	*RESTClient
 | 
						*restclient.RESTClient
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Convert unversioned.APIVersions to unversioned.APIGroup. APIVersions is used by legacy v1, so
 | 
					// Convert unversioned.APIVersions to unversioned.APIGroup. APIVersions is used by legacy v1, so
 | 
				
			||||||
@@ -207,7 +208,7 @@ func (d *DiscoveryClient) SwaggerSchema(version unversioned.GroupVersion) (*swag
 | 
				
			|||||||
	return &schema, nil
 | 
						return &schema, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func setDiscoveryDefaults(config *Config) error {
 | 
					func setDiscoveryDefaults(config *restclient.Config) error {
 | 
				
			||||||
	config.APIPath = ""
 | 
						config.APIPath = ""
 | 
				
			||||||
	config.GroupVersion = nil
 | 
						config.GroupVersion = nil
 | 
				
			||||||
	config.Codec = runtime.NoopEncoder{api.Codecs.UniversalDecoder()}
 | 
						config.Codec = runtime.NoopEncoder{api.Codecs.UniversalDecoder()}
 | 
				
			||||||
@@ -216,18 +217,18 @@ func setDiscoveryDefaults(config *Config) error {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// NewDiscoveryClientForConfig creates a new DiscoveryClient for the given config. This client
 | 
					// NewDiscoveryClientForConfig creates a new DiscoveryClient for the given config. This client
 | 
				
			||||||
// can be used to discover supported resources in the API server.
 | 
					// can be used to discover supported resources in the API server.
 | 
				
			||||||
func NewDiscoveryClientForConfig(c *Config) (*DiscoveryClient, error) {
 | 
					func NewDiscoveryClientForConfig(c *restclient.Config) (*DiscoveryClient, error) {
 | 
				
			||||||
	config := *c
 | 
						config := *c
 | 
				
			||||||
	if err := setDiscoveryDefaults(&config); err != nil {
 | 
						if err := setDiscoveryDefaults(&config); err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	client, err := UnversionedRESTClientFor(&config)
 | 
						client, err := restclient.UnversionedRESTClientFor(&config)
 | 
				
			||||||
	return &DiscoveryClient{client}, err
 | 
						return &DiscoveryClient{client}, err
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewDiscoveryClientForConfig creates a new DiscoveryClient for the given config. If
 | 
					// NewDiscoveryClientForConfig creates a new DiscoveryClient for the given config. If
 | 
				
			||||||
// there is an error, it panics.
 | 
					// there is an error, it panics.
 | 
				
			||||||
func NewDiscoveryClientForConfigOrDie(c *Config) *DiscoveryClient {
 | 
					func NewDiscoveryClientForConfigOrDie(c *restclient.Config) *DiscoveryClient {
 | 
				
			||||||
	client, err := NewDiscoveryClientForConfig(c)
 | 
						client, err := NewDiscoveryClientForConfig(c)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		panic(err)
 | 
							panic(err)
 | 
				
			||||||
@@ -237,6 +238,6 @@ func NewDiscoveryClientForConfigOrDie(c *Config) *DiscoveryClient {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// New creates a new DiscoveryClient for the given RESTClient.
 | 
					// New creates a new DiscoveryClient for the given RESTClient.
 | 
				
			||||||
func NewDiscoveryClient(c *RESTClient) *DiscoveryClient {
 | 
					func NewDiscoveryClient(c *restclient.RESTClient) *DiscoveryClient {
 | 
				
			||||||
	return &DiscoveryClient{c}
 | 
						return &DiscoveryClient{c}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,16 +16,12 @@ limitations under the License.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
package unversioned_test
 | 
					package unversioned_test
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	. "k8s.io/kubernetes/pkg/client/unversioned"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/unversioned/testclient/simple"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"testing"
 | 
						"testing"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"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/unversioned/testclient/simple"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestListEndpoints(t *testing.T) {
 | 
					func TestListEndpoints(t *testing.T) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,6 +20,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/apimachinery/registered"
 | 
						"k8s.io/kubernetes/pkg/apimachinery/registered"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/apis/extensions"
 | 
						"k8s.io/kubernetes/pkg/apis/extensions"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Interface holds the experimental methods for clients of Kubernetes
 | 
					// Interface holds the experimental methods for clients of Kubernetes
 | 
				
			||||||
@@ -42,7 +43,7 @@ type ExtensionsInterface interface {
 | 
				
			|||||||
// Features of Extensions group are not supported and may be changed or removed in
 | 
					// Features of Extensions group are not supported and may be changed or removed in
 | 
				
			||||||
// incompatible ways at any time.
 | 
					// incompatible ways at any time.
 | 
				
			||||||
type ExtensionsClient struct {
 | 
					type ExtensionsClient struct {
 | 
				
			||||||
	*RESTClient
 | 
						*restclient.RESTClient
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (c *ExtensionsClient) PodSecurityPolicies() PodSecurityPolicyInterface {
 | 
					func (c *ExtensionsClient) PodSecurityPolicies() PodSecurityPolicyInterface {
 | 
				
			||||||
@@ -85,12 +86,12 @@ func (c *ExtensionsClient) ReplicaSets(namespace string) ReplicaSetInterface {
 | 
				
			|||||||
// provides access to experimental Kubernetes features.
 | 
					// provides access to experimental Kubernetes features.
 | 
				
			||||||
// Features of Extensions group are not supported and may be changed or removed in
 | 
					// Features of Extensions group are not supported and may be changed or removed in
 | 
				
			||||||
// incompatible ways at any time.
 | 
					// incompatible ways at any time.
 | 
				
			||||||
func NewExtensions(c *Config) (*ExtensionsClient, error) {
 | 
					func NewExtensions(c *restclient.Config) (*ExtensionsClient, error) {
 | 
				
			||||||
	config := *c
 | 
						config := *c
 | 
				
			||||||
	if err := setExtensionsDefaults(&config); err != nil {
 | 
						if err := setExtensionsDefaults(&config); err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	client, err := RESTClientFor(&config)
 | 
						client, err := restclient.RESTClientFor(&config)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -101,7 +102,7 @@ func NewExtensions(c *Config) (*ExtensionsClient, error) {
 | 
				
			|||||||
// panics if there is an error in the config.
 | 
					// panics if there is an error in the config.
 | 
				
			||||||
// Features of Extensions group are not supported and may be changed or removed in
 | 
					// Features of Extensions group are not supported and may be changed or removed in
 | 
				
			||||||
// incompatible ways at any time.
 | 
					// incompatible ways at any time.
 | 
				
			||||||
func NewExtensionsOrDie(c *Config) *ExtensionsClient {
 | 
					func NewExtensionsOrDie(c *restclient.Config) *ExtensionsClient {
 | 
				
			||||||
	client, err := NewExtensions(c)
 | 
						client, err := NewExtensions(c)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		panic(err)
 | 
							panic(err)
 | 
				
			||||||
@@ -109,7 +110,7 @@ func NewExtensionsOrDie(c *Config) *ExtensionsClient {
 | 
				
			|||||||
	return client
 | 
						return client
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func setExtensionsDefaults(config *Config) error {
 | 
					func setExtensionsDefaults(config *restclient.Config) error {
 | 
				
			||||||
	// if experimental group is not registered, return an error
 | 
						// if experimental group is not registered, return an error
 | 
				
			||||||
	g, err := registered.Group(extensions.GroupName)
 | 
						g, err := registered.Group(extensions.GroupName)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
@@ -117,7 +118,7 @@ func setExtensionsDefaults(config *Config) error {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	config.APIPath = defaultAPIPath
 | 
						config.APIPath = defaultAPIPath
 | 
				
			||||||
	if config.UserAgent == "" {
 | 
						if config.UserAgent == "" {
 | 
				
			||||||
		config.UserAgent = DefaultKubernetesUserAgent()
 | 
							config.UserAgent = restclient.DefaultKubernetesUserAgent()
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	// TODO: Unconditionally set the config.Version, until we fix the config.
 | 
						// TODO: Unconditionally set the config.Version, until we fix the config.
 | 
				
			||||||
	//if config.Version == "" {
 | 
						//if config.Version == "" {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,7 +24,7 @@ import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	"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/unversioned"
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/runtime"
 | 
						"k8s.io/kubernetes/pkg/runtime"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -49,28 +49,28 @@ type RESTClient struct {
 | 
				
			|||||||
	Err    error
 | 
						Err    error
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (c *RESTClient) Get() *unversioned.Request {
 | 
					func (c *RESTClient) Get() *restclient.Request {
 | 
				
			||||||
	return c.request("GET")
 | 
						return c.request("GET")
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (c *RESTClient) Put() *unversioned.Request {
 | 
					func (c *RESTClient) Put() *restclient.Request {
 | 
				
			||||||
	return c.request("PUT")
 | 
						return c.request("PUT")
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (c *RESTClient) Patch(_ api.PatchType) *unversioned.Request {
 | 
					func (c *RESTClient) Patch(_ api.PatchType) *restclient.Request {
 | 
				
			||||||
	return c.request("PATCH")
 | 
						return c.request("PATCH")
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (c *RESTClient) Post() *unversioned.Request {
 | 
					func (c *RESTClient) Post() *restclient.Request {
 | 
				
			||||||
	return c.request("POST")
 | 
						return c.request("POST")
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (c *RESTClient) Delete() *unversioned.Request {
 | 
					func (c *RESTClient) Delete() *restclient.Request {
 | 
				
			||||||
	return c.request("DELETE")
 | 
						return c.request("DELETE")
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (c *RESTClient) request(verb string) *unversioned.Request {
 | 
					func (c *RESTClient) request(verb string) *restclient.Request {
 | 
				
			||||||
	return unversioned.NewRequest(c, verb, &url.URL{Host: "localhost"}, "", unversioned.ContentConfig{GroupVersion: testapi.Default.GroupVersion(), Codec: c.Codec}, nil, nil)
 | 
						return restclient.NewRequest(c, verb, &url.URL{Host: "localhost"}, "", restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion(), Codec: c.Codec}, nil, nil)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (c *RESTClient) Do(req *http.Request) (*http.Response, error) {
 | 
					func (c *RESTClient) Do(req *http.Request) (*http.Response, error) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,27 +17,16 @@ limitations under the License.
 | 
				
			|||||||
package unversioned
 | 
					package unversioned
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"encoding/json"
 | 
					 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"io/ioutil"
 | 
					 | 
				
			||||||
	"net"
 | 
					 | 
				
			||||||
	"net/http"
 | 
					 | 
				
			||||||
	"net/url"
 | 
					 | 
				
			||||||
	"os"
 | 
					 | 
				
			||||||
	"path"
 | 
					 | 
				
			||||||
	"reflect"
 | 
						"reflect"
 | 
				
			||||||
	gruntime "runtime"
 | 
					 | 
				
			||||||
	"strings"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/golang/glog"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/unversioned"
 | 
						"k8s.io/kubernetes/pkg/api/unversioned"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/apimachinery/registered"
 | 
						"k8s.io/kubernetes/pkg/apimachinery/registered"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/apis/autoscaling"
 | 
						"k8s.io/kubernetes/pkg/apis/autoscaling"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/apis/batch"
 | 
						"k8s.io/kubernetes/pkg/apis/batch"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/apis/extensions"
 | 
						"k8s.io/kubernetes/pkg/apis/extensions"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/runtime"
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/util"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/util/sets"
 | 
						"k8s.io/kubernetes/pkg/util/sets"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/version"
 | 
						"k8s.io/kubernetes/pkg/version"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@@ -47,106 +36,16 @@ const (
 | 
				
			|||||||
	defaultAPIPath = "/apis"
 | 
						defaultAPIPath = "/apis"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Config holds the common attributes that can be passed to a Kubernetes client on
 | 
					 | 
				
			||||||
// initialization.
 | 
					 | 
				
			||||||
type Config struct {
 | 
					 | 
				
			||||||
	// Host must be a host string, a host:port pair, or a URL to the base of the apiserver.
 | 
					 | 
				
			||||||
	// If a URL is given then the (optional) Path of that URL represents a prefix that must
 | 
					 | 
				
			||||||
	// be appended to all request URIs used to access the apiserver. This allows a frontend
 | 
					 | 
				
			||||||
	// proxy to easily relocate all of the apiserver endpoints.
 | 
					 | 
				
			||||||
	Host string
 | 
					 | 
				
			||||||
	// APIPath is a sub-path that points to an API root.
 | 
					 | 
				
			||||||
	APIPath string
 | 
					 | 
				
			||||||
	// Prefix is the sub path of the server. If not specified, the client will set
 | 
					 | 
				
			||||||
	// a default value.  Use "/" to indicate the server root should be used
 | 
					 | 
				
			||||||
	Prefix string
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// ContentConfig contains settings that affect how objects are transformed when
 | 
					 | 
				
			||||||
	// sent to the server.
 | 
					 | 
				
			||||||
	ContentConfig
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Server requires Basic authentication
 | 
					 | 
				
			||||||
	Username string
 | 
					 | 
				
			||||||
	Password string
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Server requires Bearer authentication. This client will not attempt to use
 | 
					 | 
				
			||||||
	// refresh tokens for an OAuth2 flow.
 | 
					 | 
				
			||||||
	// TODO: demonstrate an OAuth2 compatible client.
 | 
					 | 
				
			||||||
	BearerToken string
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// TLSClientConfig contains settings to enable transport layer security
 | 
					 | 
				
			||||||
	TLSClientConfig
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Server should be accessed without verifying the TLS
 | 
					 | 
				
			||||||
	// certificate. For testing only.
 | 
					 | 
				
			||||||
	Insecure bool
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// UserAgent is an optional field that specifies the caller of this request.
 | 
					 | 
				
			||||||
	UserAgent string
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Transport may be used for custom HTTP behavior. This attribute may not
 | 
					 | 
				
			||||||
	// be specified with the TLS client certificate options. Use WrapTransport
 | 
					 | 
				
			||||||
	// for most client level operations.
 | 
					 | 
				
			||||||
	Transport http.RoundTripper
 | 
					 | 
				
			||||||
	// WrapTransport will be invoked for custom HTTP behavior after the underlying
 | 
					 | 
				
			||||||
	// transport is initialized (either the transport created from TLSClientConfig,
 | 
					 | 
				
			||||||
	// Transport, or http.DefaultTransport). The config may layer other RoundTrippers
 | 
					 | 
				
			||||||
	// on top of the returned RoundTripper.
 | 
					 | 
				
			||||||
	WrapTransport func(rt http.RoundTripper) http.RoundTripper
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// QPS indicates the maximum QPS to the master from this client.  If zero, QPS is unlimited.
 | 
					 | 
				
			||||||
	QPS float32
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Maximum burst for throttle
 | 
					 | 
				
			||||||
	Burst int
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// TLSClientConfig contains settings to enable transport layer security
 | 
					 | 
				
			||||||
type TLSClientConfig struct {
 | 
					 | 
				
			||||||
	// Server requires TLS client certificate authentication
 | 
					 | 
				
			||||||
	CertFile string
 | 
					 | 
				
			||||||
	// Server requires TLS client certificate authentication
 | 
					 | 
				
			||||||
	KeyFile string
 | 
					 | 
				
			||||||
	// Trusted root certificates for server
 | 
					 | 
				
			||||||
	CAFile string
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// CertData holds PEM-encoded bytes (typically read from a client certificate file).
 | 
					 | 
				
			||||||
	// CertData takes precedence over CertFile
 | 
					 | 
				
			||||||
	CertData []byte
 | 
					 | 
				
			||||||
	// KeyData holds PEM-encoded bytes (typically read from a client certificate key file).
 | 
					 | 
				
			||||||
	// KeyData takes precedence over KeyFile
 | 
					 | 
				
			||||||
	KeyData []byte
 | 
					 | 
				
			||||||
	// CAData holds PEM-encoded bytes (typically read from a root certificates bundle).
 | 
					 | 
				
			||||||
	// CAData takes precedence over CAFile
 | 
					 | 
				
			||||||
	CAData []byte
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
type ContentConfig struct {
 | 
					 | 
				
			||||||
	// ContentType specifies the wire format used to communicate with the server.
 | 
					 | 
				
			||||||
	// This value will be set as the Accept header on requests made to the server, and
 | 
					 | 
				
			||||||
	// as the default content type on any object sent to the server. If not set,
 | 
					 | 
				
			||||||
	// "application/json" is used.
 | 
					 | 
				
			||||||
	ContentType string
 | 
					 | 
				
			||||||
	// GroupVersion is the API version to talk to. Must be provided when initializing
 | 
					 | 
				
			||||||
	// a RESTClient directly. When initializing a Client, will be set with the default
 | 
					 | 
				
			||||||
	// code version.
 | 
					 | 
				
			||||||
	GroupVersion *unversioned.GroupVersion
 | 
					 | 
				
			||||||
	// Codec specifies the encoding and decoding behavior for runtime.Objects passed
 | 
					 | 
				
			||||||
	// to a RESTClient or Client. Required when initializing a RESTClient, optional
 | 
					 | 
				
			||||||
	// when initializing a Client.
 | 
					 | 
				
			||||||
	Codec runtime.Codec
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// New creates a Kubernetes client for the given config. This client works with pods,
 | 
					// New creates a Kubernetes client for the given config. This client works with pods,
 | 
				
			||||||
// replication controllers, daemons, and services. It allows operations such as list, get, update
 | 
					// replication controllers, daemons, and services. It allows operations such as list, get, update
 | 
				
			||||||
// and delete on these objects. An error is returned if the provided configuration
 | 
					// and delete on these objects. An error is returned if the provided configuration
 | 
				
			||||||
// is not valid.
 | 
					// is not valid.
 | 
				
			||||||
func New(c *Config) (*Client, error) {
 | 
					func New(c *restclient.Config) (*Client, error) {
 | 
				
			||||||
	config := *c
 | 
						config := *c
 | 
				
			||||||
	if err := SetKubernetesDefaults(&config); err != nil {
 | 
						if err := SetKubernetesDefaults(&config); err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	client, err := RESTClientFor(&config)
 | 
						client, err := restclient.RESTClientFor(&config)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -190,7 +89,7 @@ func New(c *Config) (*Client, error) {
 | 
				
			|||||||
// MatchesServerVersion queries the server to compares the build version
 | 
					// MatchesServerVersion queries the server to compares the build version
 | 
				
			||||||
// (git hash) of the client with the server's build version. It returns an error
 | 
					// (git hash) of the client with the server's build version. It returns an error
 | 
				
			||||||
// if it failed to contact the server or if the versions are not an exact match.
 | 
					// if it failed to contact the server or if the versions are not an exact match.
 | 
				
			||||||
func MatchesServerVersion(client *Client, c *Config) error {
 | 
					func MatchesServerVersion(client *Client, c *restclient.Config) error {
 | 
				
			||||||
	var err error
 | 
						var err error
 | 
				
			||||||
	if client == nil {
 | 
						if client == nil {
 | 
				
			||||||
		client, err = New(c)
 | 
							client, err = New(c)
 | 
				
			||||||
@@ -220,56 +119,6 @@ func ExtractGroupVersions(l *unversioned.APIGroupList) []string {
 | 
				
			|||||||
	return groupVersions
 | 
						return groupVersions
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ServerAPIVersions returns the GroupVersions supported by the API server.
 | 
					 | 
				
			||||||
// It creates a RESTClient based on the passed in config, but it doesn't rely
 | 
					 | 
				
			||||||
// on the Version and Codec of the config, because it uses AbsPath and
 | 
					 | 
				
			||||||
// takes the raw response.
 | 
					 | 
				
			||||||
func ServerAPIVersions(c *Config) (groupVersions []string, err error) {
 | 
					 | 
				
			||||||
	transport, err := TransportFor(c)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	client := http.Client{Transport: transport}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	configCopy := *c
 | 
					 | 
				
			||||||
	configCopy.GroupVersion = nil
 | 
					 | 
				
			||||||
	configCopy.APIPath = ""
 | 
					 | 
				
			||||||
	baseURL, _, err := defaultServerUrlFor(&configCopy)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	// Get the groupVersions exposed at /api
 | 
					 | 
				
			||||||
	originalPath := baseURL.Path
 | 
					 | 
				
			||||||
	baseURL.Path = path.Join(originalPath, legacyAPIPath)
 | 
					 | 
				
			||||||
	resp, err := client.Get(baseURL.String())
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	var v unversioned.APIVersions
 | 
					 | 
				
			||||||
	defer resp.Body.Close()
 | 
					 | 
				
			||||||
	err = json.NewDecoder(resp.Body).Decode(&v)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, fmt.Errorf("unexpected error: %v", err)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	groupVersions = append(groupVersions, v.Versions...)
 | 
					 | 
				
			||||||
	// Get the groupVersions exposed at /apis
 | 
					 | 
				
			||||||
	baseURL.Path = path.Join(originalPath, defaultAPIPath)
 | 
					 | 
				
			||||||
	resp2, err := client.Get(baseURL.String())
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	var apiGroupList unversioned.APIGroupList
 | 
					 | 
				
			||||||
	defer resp2.Body.Close()
 | 
					 | 
				
			||||||
	err = json.NewDecoder(resp2.Body).Decode(&apiGroupList)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, fmt.Errorf("unexpected error: %v", err)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	groupVersions = append(groupVersions, ExtractGroupVersions(&apiGroupList)...)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return groupVersions, nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// NegotiateVersion queries the server's supported api versions to find
 | 
					// NegotiateVersion queries the server's supported api versions to find
 | 
				
			||||||
// a version that both client and server support.
 | 
					// a version that both client and server support.
 | 
				
			||||||
// - If no version is provided, try registered client versions in order of
 | 
					// - If no version is provided, try registered client versions in order of
 | 
				
			||||||
@@ -279,7 +128,7 @@ func ServerAPIVersions(c *Config) (groupVersions []string, err error) {
 | 
				
			|||||||
//   stderr and try client's registered versions in order of preference.
 | 
					//   stderr and try client's registered versions in order of preference.
 | 
				
			||||||
// - If version is config default, and the server does not support it,
 | 
					// - If version is config default, and the server does not support it,
 | 
				
			||||||
//   return an error.
 | 
					//   return an error.
 | 
				
			||||||
func NegotiateVersion(client *Client, c *Config, requestedGV *unversioned.GroupVersion, clientRegisteredGVs []unversioned.GroupVersion) (*unversioned.GroupVersion, error) {
 | 
					func NegotiateVersion(client *Client, c *restclient.Config, requestedGV *unversioned.GroupVersion, clientRegisteredGVs []unversioned.GroupVersion) (*unversioned.GroupVersion, error) {
 | 
				
			||||||
	var err error
 | 
						var err error
 | 
				
			||||||
	if client == nil {
 | 
						if client == nil {
 | 
				
			||||||
		client, err = New(c)
 | 
							client, err = New(c)
 | 
				
			||||||
@@ -349,7 +198,7 @@ func NegotiateVersion(client *Client, c *Config, requestedGV *unversioned.GroupV
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewOrDie creates a Kubernetes client and panics if the provided API version is not recognized.
 | 
					// NewOrDie creates a Kubernetes client and panics if the provided API version is not recognized.
 | 
				
			||||||
func NewOrDie(c *Config) *Client {
 | 
					func NewOrDie(c *restclient.Config) *Client {
 | 
				
			||||||
	client, err := New(c)
 | 
						client, err := New(c)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		panic(err)
 | 
							panic(err)
 | 
				
			||||||
@@ -357,39 +206,9 @@ func NewOrDie(c *Config) *Client {
 | 
				
			|||||||
	return client
 | 
						return client
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// InClusterConfig returns a config object which uses the service account
 | 
					 | 
				
			||||||
// kubernetes gives to pods. It's intended for clients that expect to be
 | 
					 | 
				
			||||||
// running inside a pod running on kuberenetes. It will return an error if
 | 
					 | 
				
			||||||
// called from a process not running in a kubernetes environment.
 | 
					 | 
				
			||||||
func InClusterConfig() (*Config, error) {
 | 
					 | 
				
			||||||
	host, port := os.Getenv("KUBERNETES_SERVICE_HOST"), os.Getenv("KUBERNETES_SERVICE_PORT")
 | 
					 | 
				
			||||||
	if len(host) == 0 || len(port) == 0 {
 | 
					 | 
				
			||||||
		return nil, fmt.Errorf("unable to load in-cluster configuration, KUBERNETES_SERVICE_HOST and KUBERNETES_SERVICE_PORT must be defined")
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	token, err := ioutil.ReadFile("/var/run/secrets/kubernetes.io/serviceaccount/" + api.ServiceAccountTokenKey)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	tlsClientConfig := TLSClientConfig{}
 | 
					 | 
				
			||||||
	rootCAFile := "/var/run/secrets/kubernetes.io/serviceaccount/" + api.ServiceAccountRootCAKey
 | 
					 | 
				
			||||||
	if _, err := util.CertPoolFromFile(rootCAFile); err != nil {
 | 
					 | 
				
			||||||
		glog.Errorf("Expected to load root CA config from %s, but got err: %v", rootCAFile, err)
 | 
					 | 
				
			||||||
	} else {
 | 
					 | 
				
			||||||
		tlsClientConfig.CAFile = rootCAFile
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return &Config{
 | 
					 | 
				
			||||||
		// TODO: switch to using cluster DNS.
 | 
					 | 
				
			||||||
		Host:            "https://" + net.JoinHostPort(host, port),
 | 
					 | 
				
			||||||
		BearerToken:     string(token),
 | 
					 | 
				
			||||||
		TLSClientConfig: tlsClientConfig,
 | 
					 | 
				
			||||||
	}, nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// NewInCluster is a shortcut for calling InClusterConfig() and then New().
 | 
					// NewInCluster is a shortcut for calling InClusterConfig() and then New().
 | 
				
			||||||
func NewInCluster() (*Client, error) {
 | 
					func NewInCluster() (*Client, error) {
 | 
				
			||||||
	cc, err := InClusterConfig()
 | 
						cc, err := restclient.InClusterConfig()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -399,13 +218,10 @@ func NewInCluster() (*Client, error) {
 | 
				
			|||||||
// SetKubernetesDefaults sets default values on the provided client config for accessing the
 | 
					// SetKubernetesDefaults sets default values on the provided client config for accessing the
 | 
				
			||||||
// Kubernetes API or returns an error if any of the defaults are impossible or invalid.
 | 
					// Kubernetes API or returns an error if any of the defaults are impossible or invalid.
 | 
				
			||||||
// TODO: this method needs to be split into one that sets defaults per group, expected to be fix in PR "Refactoring clientcache.go and helper.go #14592"
 | 
					// TODO: this method needs to be split into one that sets defaults per group, expected to be fix in PR "Refactoring clientcache.go and helper.go #14592"
 | 
				
			||||||
func SetKubernetesDefaults(config *Config) error {
 | 
					func SetKubernetesDefaults(config *restclient.Config) error {
 | 
				
			||||||
	if config.APIPath == "" {
 | 
						if config.APIPath == "" {
 | 
				
			||||||
		config.APIPath = legacyAPIPath
 | 
							config.APIPath = legacyAPIPath
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if len(config.UserAgent) == 0 {
 | 
					 | 
				
			||||||
		config.UserAgent = DefaultKubernetesUserAgent()
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	g, err := registered.Group(api.GroupName)
 | 
						g, err := registered.Group(api.GroupName)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
@@ -416,233 +232,6 @@ func SetKubernetesDefaults(config *Config) error {
 | 
				
			|||||||
	if config.Codec == nil {
 | 
						if config.Codec == nil {
 | 
				
			||||||
		config.Codec = api.Codecs.LegacyCodec(*config.GroupVersion)
 | 
							config.Codec = api.Codecs.LegacyCodec(*config.GroupVersion)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if config.QPS == 0.0 {
 | 
					
 | 
				
			||||||
		config.QPS = 5.0
 | 
						return restclient.SetKubernetesDefaults(config)
 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if config.Burst == 0 {
 | 
					 | 
				
			||||||
		config.Burst = 10
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// RESTClientFor returns a RESTClient that satisfies the requested attributes on a client Config
 | 
					 | 
				
			||||||
// object. Note that a RESTClient may require fields that are optional when initializing a Client.
 | 
					 | 
				
			||||||
// A RESTClient created by this method is generic - it expects to operate on an API that follows
 | 
					 | 
				
			||||||
// the Kubernetes conventions, but may not be the Kubernetes API.
 | 
					 | 
				
			||||||
func RESTClientFor(config *Config) (*RESTClient, error) {
 | 
					 | 
				
			||||||
	if config.GroupVersion == nil {
 | 
					 | 
				
			||||||
		return nil, fmt.Errorf("GroupVersion is required when initializing a RESTClient")
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if config.Codec == nil {
 | 
					 | 
				
			||||||
		return nil, fmt.Errorf("Codec is required when initializing a RESTClient")
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	baseURL, versionedAPIPath, err := defaultServerUrlFor(config)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	transport, err := TransportFor(config)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	var httpClient *http.Client
 | 
					 | 
				
			||||||
	if transport != http.DefaultTransport {
 | 
					 | 
				
			||||||
		httpClient = &http.Client{Transport: transport}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	client := NewRESTClient(baseURL, versionedAPIPath, config.ContentConfig, config.QPS, config.Burst, httpClient)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return client, nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// UnversionedRESTClientFor is the same as RESTClientFor, except that it allows
 | 
					 | 
				
			||||||
// the config.Version to be empty.
 | 
					 | 
				
			||||||
func UnversionedRESTClientFor(config *Config) (*RESTClient, error) {
 | 
					 | 
				
			||||||
	if config.Codec == nil {
 | 
					 | 
				
			||||||
		return nil, fmt.Errorf("Codec is required when initializing a RESTClient")
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	baseURL, versionedAPIPath, err := defaultServerUrlFor(config)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	transport, err := TransportFor(config)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	var httpClient *http.Client
 | 
					 | 
				
			||||||
	if transport != http.DefaultTransport {
 | 
					 | 
				
			||||||
		httpClient = &http.Client{Transport: transport}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	versionConfig := config.ContentConfig
 | 
					 | 
				
			||||||
	if versionConfig.GroupVersion == nil {
 | 
					 | 
				
			||||||
		v := unversioned.SchemeGroupVersion
 | 
					 | 
				
			||||||
		versionConfig.GroupVersion = &v
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	client := NewRESTClient(baseURL, versionedAPIPath, versionConfig, config.QPS, config.Burst, httpClient)
 | 
					 | 
				
			||||||
	return client, nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// DefaultServerURL converts a host, host:port, or URL string to the default base server API path
 | 
					 | 
				
			||||||
// to use with a Client at a given API version following the standard conventions for a
 | 
					 | 
				
			||||||
// Kubernetes API.
 | 
					 | 
				
			||||||
func DefaultServerURL(host, apiPath string, groupVersion unversioned.GroupVersion, defaultTLS bool) (*url.URL, string, error) {
 | 
					 | 
				
			||||||
	if host == "" {
 | 
					 | 
				
			||||||
		return nil, "", fmt.Errorf("host must be a URL or a host:port pair")
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	base := host
 | 
					 | 
				
			||||||
	hostURL, err := url.Parse(base)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, "", err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if hostURL.Scheme == "" {
 | 
					 | 
				
			||||||
		scheme := "http://"
 | 
					 | 
				
			||||||
		if defaultTLS {
 | 
					 | 
				
			||||||
			scheme = "https://"
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		hostURL, err = url.Parse(scheme + base)
 | 
					 | 
				
			||||||
		if err != nil {
 | 
					 | 
				
			||||||
			return nil, "", err
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		if hostURL.Path != "" && hostURL.Path != "/" {
 | 
					 | 
				
			||||||
			return nil, "", fmt.Errorf("host must be a URL or a host:port pair: %q", base)
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// hostURL.Path is optional; a non-empty Path is treated as a prefix that is to be applied to
 | 
					 | 
				
			||||||
	// all URIs used to access the host. this is useful when there's a proxy in front of the
 | 
					 | 
				
			||||||
	// apiserver that has relocated the apiserver endpoints, forwarding all requests from, for
 | 
					 | 
				
			||||||
	// example, /a/b/c to the apiserver. in this case the Path should be /a/b/c.
 | 
					 | 
				
			||||||
	//
 | 
					 | 
				
			||||||
	// if running without a frontend proxy (that changes the location of the apiserver), then
 | 
					 | 
				
			||||||
	// hostURL.Path should be blank.
 | 
					 | 
				
			||||||
	//
 | 
					 | 
				
			||||||
	// versionedAPIPath, a path relative to baseURL.Path, points to a versioned API base
 | 
					 | 
				
			||||||
	versionedAPIPath := path.Join("/", apiPath)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Add the version to the end of the path
 | 
					 | 
				
			||||||
	if len(groupVersion.Group) > 0 {
 | 
					 | 
				
			||||||
		versionedAPIPath = path.Join(versionedAPIPath, groupVersion.Group, groupVersion.Version)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	} else {
 | 
					 | 
				
			||||||
		versionedAPIPath = path.Join(versionedAPIPath, groupVersion.Version)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return hostURL, versionedAPIPath, nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// IsConfigTransportTLS returns true if and only if the provided config will result in a protected
 | 
					 | 
				
			||||||
// connection to the server when it is passed to client.New() or client.RESTClientFor().
 | 
					 | 
				
			||||||
// Use to determine when to send credentials over the wire.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Note: the Insecure flag is ignored when testing for this value, so MITM attacks are
 | 
					 | 
				
			||||||
// still possible.
 | 
					 | 
				
			||||||
func IsConfigTransportTLS(config Config) bool {
 | 
					 | 
				
			||||||
	// determination of TLS transport does not logically require a version to be specified
 | 
					 | 
				
			||||||
	// modify the copy of the config we got to satisfy preconditions for defaultServerUrlFor
 | 
					 | 
				
			||||||
	config.GroupVersion = defaultVersionFor(&config)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	baseURL, _, err := defaultServerUrlFor(&config)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return false
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return baseURL.Scheme == "https"
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// defaultServerUrlFor is shared between IsConfigTransportTLS and RESTClientFor. It
 | 
					 | 
				
			||||||
// requires Host and Version to be set prior to being called.
 | 
					 | 
				
			||||||
func defaultServerUrlFor(config *Config) (*url.URL, string, error) {
 | 
					 | 
				
			||||||
	// TODO: move the default to secure when the apiserver supports TLS by default
 | 
					 | 
				
			||||||
	// config.Insecure is taken to mean "I want HTTPS but don't bother checking the certs against a CA."
 | 
					 | 
				
			||||||
	hasCA := len(config.CAFile) != 0 || len(config.CAData) != 0
 | 
					 | 
				
			||||||
	hasCert := len(config.CertFile) != 0 || len(config.CertData) != 0
 | 
					 | 
				
			||||||
	defaultTLS := hasCA || hasCert || config.Insecure
 | 
					 | 
				
			||||||
	host := config.Host
 | 
					 | 
				
			||||||
	if host == "" {
 | 
					 | 
				
			||||||
		host = "localhost"
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if config.GroupVersion != nil {
 | 
					 | 
				
			||||||
		return DefaultServerURL(host, config.APIPath, *config.GroupVersion, defaultTLS)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return DefaultServerURL(host, config.APIPath, unversioned.GroupVersion{}, defaultTLS)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// defaultVersionFor is shared between IsConfigTransportTLS and RESTClientFor
 | 
					 | 
				
			||||||
func defaultVersionFor(config *Config) *unversioned.GroupVersion {
 | 
					 | 
				
			||||||
	if config.GroupVersion == nil {
 | 
					 | 
				
			||||||
		// Clients default to the preferred code API version
 | 
					 | 
				
			||||||
		// TODO: implement version negotiation (highest version supported by server)
 | 
					 | 
				
			||||||
		// TODO this drops out when groupmeta is refactored
 | 
					 | 
				
			||||||
		copyGroupVersion := registered.GroupOrDie(api.GroupName).GroupVersion
 | 
					 | 
				
			||||||
		return ©GroupVersion
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return config.GroupVersion
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// DefaultKubernetesUserAgent returns the default user agent that clients can use.
 | 
					 | 
				
			||||||
func DefaultKubernetesUserAgent() string {
 | 
					 | 
				
			||||||
	commit := version.Get().GitCommit
 | 
					 | 
				
			||||||
	if len(commit) > 7 {
 | 
					 | 
				
			||||||
		commit = commit[:7]
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if len(commit) == 0 {
 | 
					 | 
				
			||||||
		commit = "unknown"
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	version := version.Get().GitVersion
 | 
					 | 
				
			||||||
	seg := strings.SplitN(version, "-", 2)
 | 
					 | 
				
			||||||
	version = seg[0]
 | 
					 | 
				
			||||||
	return fmt.Sprintf("%s/%s (%s/%s) kubernetes/%s", path.Base(os.Args[0]), version, gruntime.GOOS, gruntime.GOARCH, commit)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// LoadTLSFiles copies the data from the CertFile, KeyFile, and CAFile fields into the CertData,
 | 
					 | 
				
			||||||
// KeyData, and CAFile fields, or returns an error. If no error is returned, all three fields are
 | 
					 | 
				
			||||||
// either populated or were empty to start.
 | 
					 | 
				
			||||||
func LoadTLSFiles(c *Config) error {
 | 
					 | 
				
			||||||
	var err error
 | 
					 | 
				
			||||||
	c.CAData, err = dataFromSliceOrFile(c.CAData, c.CAFile)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	c.CertData, err = dataFromSliceOrFile(c.CertData, c.CertFile)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	c.KeyData, err = dataFromSliceOrFile(c.KeyData, c.KeyFile)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// dataFromSliceOrFile returns data from the slice (if non-empty), or from the file,
 | 
					 | 
				
			||||||
// or an error if an error occurred reading the file
 | 
					 | 
				
			||||||
func dataFromSliceOrFile(data []byte, file string) ([]byte, error) {
 | 
					 | 
				
			||||||
	if len(data) > 0 {
 | 
					 | 
				
			||||||
		return data, nil
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if len(file) > 0 {
 | 
					 | 
				
			||||||
		fileData, err := ioutil.ReadFile(file)
 | 
					 | 
				
			||||||
		if err != nil {
 | 
					 | 
				
			||||||
			return []byte{}, err
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		return fileData, nil
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return nil, nil
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func AddUserAgent(config *Config, userAgent string) *Config {
 | 
					 | 
				
			||||||
	fullUserAgent := DefaultKubernetesUserAgent() + "/" + userAgent
 | 
					 | 
				
			||||||
	config.UserAgent = fullUserAgent
 | 
					 | 
				
			||||||
	return config
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,7 +28,7 @@ import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/testapi"
 | 
						"k8s.io/kubernetes/pkg/api/testapi"
 | 
				
			||||||
	uapi "k8s.io/kubernetes/pkg/api/unversioned"
 | 
						uapi "k8s.io/kubernetes/pkg/api/unversioned"
 | 
				
			||||||
	unversionedapi "k8s.io/kubernetes/pkg/api/unversioned"
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/unversioned"
 | 
						"k8s.io/kubernetes/pkg/client/unversioned"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/unversioned/fake"
 | 
						"k8s.io/kubernetes/pkg/client/unversioned/fake"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@@ -48,14 +48,14 @@ func TestNegotiateVersion(t *testing.T) {
 | 
				
			|||||||
		expectedVersion *uapi.GroupVersion
 | 
							expectedVersion *uapi.GroupVersion
 | 
				
			||||||
		serverVersions  []string
 | 
							serverVersions  []string
 | 
				
			||||||
		clientVersions  []uapi.GroupVersion
 | 
							clientVersions  []uapi.GroupVersion
 | 
				
			||||||
		config          *unversioned.Config
 | 
							config          *restclient.Config
 | 
				
			||||||
		expectErr       func(err error) bool
 | 
							expectErr       func(err error) bool
 | 
				
			||||||
		sendErr         error
 | 
							sendErr         error
 | 
				
			||||||
	}{
 | 
						}{
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			name:            "server supports client default",
 | 
								name:            "server supports client default",
 | 
				
			||||||
			version:         &uapi.GroupVersion{Version: "version1"},
 | 
								version:         &uapi.GroupVersion{Version: "version1"},
 | 
				
			||||||
			config:          &unversioned.Config{},
 | 
								config:          &restclient.Config{},
 | 
				
			||||||
			serverVersions:  []string{"version1", testapi.Default.GroupVersion().String()},
 | 
								serverVersions:  []string{"version1", testapi.Default.GroupVersion().String()},
 | 
				
			||||||
			clientVersions:  []uapi.GroupVersion{{Version: "version1"}, *testapi.Default.GroupVersion()},
 | 
								clientVersions:  []uapi.GroupVersion{{Version: "version1"}, *testapi.Default.GroupVersion()},
 | 
				
			||||||
			expectedVersion: &uapi.GroupVersion{Version: "version1"},
 | 
								expectedVersion: &uapi.GroupVersion{Version: "version1"},
 | 
				
			||||||
@@ -63,28 +63,28 @@ func TestNegotiateVersion(t *testing.T) {
 | 
				
			|||||||
		{
 | 
							{
 | 
				
			||||||
			name:            "server falls back to client supported",
 | 
								name:            "server falls back to client supported",
 | 
				
			||||||
			version:         testapi.Default.GroupVersion(),
 | 
								version:         testapi.Default.GroupVersion(),
 | 
				
			||||||
			config:          &unversioned.Config{},
 | 
								config:          &restclient.Config{},
 | 
				
			||||||
			serverVersions:  []string{"version1"},
 | 
								serverVersions:  []string{"version1"},
 | 
				
			||||||
			clientVersions:  []uapi.GroupVersion{{Version: "version1"}, *testapi.Default.GroupVersion()},
 | 
								clientVersions:  []uapi.GroupVersion{{Version: "version1"}, *testapi.Default.GroupVersion()},
 | 
				
			||||||
			expectedVersion: &uapi.GroupVersion{Version: "version1"},
 | 
								expectedVersion: &uapi.GroupVersion{Version: "version1"},
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			name:            "explicit version supported",
 | 
								name:            "explicit version supported",
 | 
				
			||||||
			config:          &unversioned.Config{ContentConfig: unversioned.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}},
 | 
								config:          &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}},
 | 
				
			||||||
			serverVersions:  []string{"/version1", testapi.Default.GroupVersion().String()},
 | 
								serverVersions:  []string{"/version1", testapi.Default.GroupVersion().String()},
 | 
				
			||||||
			clientVersions:  []uapi.GroupVersion{{Version: "version1"}, *testapi.Default.GroupVersion()},
 | 
								clientVersions:  []uapi.GroupVersion{{Version: "version1"}, *testapi.Default.GroupVersion()},
 | 
				
			||||||
			expectedVersion: testapi.Default.GroupVersion(),
 | 
								expectedVersion: testapi.Default.GroupVersion(),
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			name:           "explicit version not supported",
 | 
								name:           "explicit version not supported",
 | 
				
			||||||
			config:         &unversioned.Config{ContentConfig: unversioned.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}},
 | 
								config:         &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}},
 | 
				
			||||||
			serverVersions: []string{"version1"},
 | 
								serverVersions: []string{"version1"},
 | 
				
			||||||
			clientVersions: []uapi.GroupVersion{{Version: "version1"}, *testapi.Default.GroupVersion()},
 | 
								clientVersions: []uapi.GroupVersion{{Version: "version1"}, *testapi.Default.GroupVersion()},
 | 
				
			||||||
			expectErr:      func(err error) bool { return strings.Contains(err.Error(), `server does not support API version "v1"`) },
 | 
								expectErr:      func(err error) bool { return strings.Contains(err.Error(), `server does not support API version "v1"`) },
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			name:           "connection refused error",
 | 
								name:           "connection refused error",
 | 
				
			||||||
			config:         &unversioned.Config{ContentConfig: unversioned.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}},
 | 
								config:         &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}},
 | 
				
			||||||
			serverVersions: []string{"version1"},
 | 
								serverVersions: []string{"version1"},
 | 
				
			||||||
			clientVersions: []uapi.GroupVersion{{Version: "version1"}, *testapi.Default.GroupVersion()},
 | 
								clientVersions: []uapi.GroupVersion{{Version: "version1"}, *testapi.Default.GroupVersion()},
 | 
				
			||||||
			sendErr:        errors.New("connection refused"),
 | 
								sendErr:        errors.New("connection refused"),
 | 
				
			||||||
@@ -98,13 +98,13 @@ func TestNegotiateVersion(t *testing.T) {
 | 
				
			|||||||
			Codec: codec,
 | 
								Codec: codec,
 | 
				
			||||||
			Resp: &http.Response{
 | 
								Resp: &http.Response{
 | 
				
			||||||
				StatusCode: 200,
 | 
									StatusCode: 200,
 | 
				
			||||||
				Body:       objBody(&unversionedapi.APIVersions{Versions: test.serverVersions}),
 | 
									Body:       objBody(&uapi.APIVersions{Versions: test.serverVersions}),
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
			Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
 | 
								Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
 | 
				
			||||||
				if test.sendErr != nil {
 | 
									if test.sendErr != nil {
 | 
				
			||||||
					return nil, test.sendErr
 | 
										return nil, test.sendErr
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				return &http.Response{StatusCode: 200, Body: objBody(&unversionedapi.APIVersions{Versions: test.serverVersions})}, nil
 | 
									return &http.Response{StatusCode: 200, Body: objBody(&uapi.APIVersions{Versions: test.serverVersions})}, nil
 | 
				
			||||||
			}),
 | 
								}),
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		c := unversioned.NewOrDie(test.config)
 | 
							c := unversioned.NewOrDie(test.config)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,80 +20,26 @@ import (
 | 
				
			|||||||
	"encoding/json"
 | 
						"encoding/json"
 | 
				
			||||||
	"net/http"
 | 
						"net/http"
 | 
				
			||||||
	"net/http/httptest"
 | 
						"net/http/httptest"
 | 
				
			||||||
	"path"
 | 
					 | 
				
			||||||
	"reflect"
 | 
						"reflect"
 | 
				
			||||||
	"strings"
 | 
					 | 
				
			||||||
	"testing"
 | 
						"testing"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/testapi"
 | 
						"k8s.io/kubernetes/pkg/api/testapi"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/unversioned"
 | 
						"k8s.io/kubernetes/pkg/api/unversioned"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/runtime"
 | 
						"k8s.io/kubernetes/pkg/runtime"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestIsConfigTransportTLS(t *testing.T) {
 | 
					 | 
				
			||||||
	testCases := []struct {
 | 
					 | 
				
			||||||
		Config       *Config
 | 
					 | 
				
			||||||
		TransportTLS bool
 | 
					 | 
				
			||||||
	}{
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			Config:       &Config{},
 | 
					 | 
				
			||||||
			TransportTLS: false,
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			Config: &Config{
 | 
					 | 
				
			||||||
				Host: "https://localhost",
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			TransportTLS: true,
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			Config: &Config{
 | 
					 | 
				
			||||||
				Host: "localhost",
 | 
					 | 
				
			||||||
				TLSClientConfig: TLSClientConfig{
 | 
					 | 
				
			||||||
					CertFile: "foo",
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			TransportTLS: true,
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			Config: &Config{
 | 
					 | 
				
			||||||
				Host: "///:://localhost",
 | 
					 | 
				
			||||||
				TLSClientConfig: TLSClientConfig{
 | 
					 | 
				
			||||||
					CertFile: "foo",
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			TransportTLS: false,
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			Config: &Config{
 | 
					 | 
				
			||||||
				Host:     "1.2.3.4:567",
 | 
					 | 
				
			||||||
				Insecure: true,
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			TransportTLS: true,
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	for _, testCase := range testCases {
 | 
					 | 
				
			||||||
		if err := SetKubernetesDefaults(testCase.Config); err != nil {
 | 
					 | 
				
			||||||
			t.Errorf("setting defaults failed for %#v: %v", testCase.Config, err)
 | 
					 | 
				
			||||||
			continue
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		useTLS := IsConfigTransportTLS(*testCase.Config)
 | 
					 | 
				
			||||||
		if testCase.TransportTLS != useTLS {
 | 
					 | 
				
			||||||
			t.Errorf("expected %v for %#v", testCase.TransportTLS, testCase.Config)
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func TestSetKubernetesDefaults(t *testing.T) {
 | 
					func TestSetKubernetesDefaults(t *testing.T) {
 | 
				
			||||||
	testCases := []struct {
 | 
						testCases := []struct {
 | 
				
			||||||
		Config Config
 | 
							Config restclient.Config
 | 
				
			||||||
		After  Config
 | 
							After  restclient.Config
 | 
				
			||||||
		Err    bool
 | 
							Err    bool
 | 
				
			||||||
	}{
 | 
						}{
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			Config{},
 | 
								restclient.Config{},
 | 
				
			||||||
			Config{
 | 
								restclient.Config{
 | 
				
			||||||
				APIPath: "/api",
 | 
									APIPath: "/api",
 | 
				
			||||||
				ContentConfig: ContentConfig{
 | 
									ContentConfig: restclient.ContentConfig{
 | 
				
			||||||
					GroupVersion: testapi.Default.GroupVersion(),
 | 
										GroupVersion: testapi.Default.GroupVersion(),
 | 
				
			||||||
					Codec:        testapi.Default.Codec(),
 | 
										Codec:        testapi.Default.Codec(),
 | 
				
			||||||
				},
 | 
									},
 | 
				
			||||||
@@ -104,10 +50,10 @@ func TestSetKubernetesDefaults(t *testing.T) {
 | 
				
			|||||||
		},
 | 
							},
 | 
				
			||||||
		// Add this test back when we fixed config and SetKubernetesDefaults
 | 
							// Add this test back when we fixed config and SetKubernetesDefaults
 | 
				
			||||||
		// {
 | 
							// {
 | 
				
			||||||
		// 	Config{
 | 
							// 	restclient.Config{
 | 
				
			||||||
		// 		GroupVersion: &unversioned.GroupVersion{Group: "not.a.group", Version: "not_an_api"},
 | 
							// 		GroupVersion: &unversioned.GroupVersion{Group: "not.a.group", Version: "not_an_api"},
 | 
				
			||||||
		// 	},
 | 
							// 	},
 | 
				
			||||||
		// 	Config{},
 | 
							// 	restclient.Config{},
 | 
				
			||||||
		// 	true,
 | 
							// 	true,
 | 
				
			||||||
		// },
 | 
							// },
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -131,16 +77,6 @@ func TestSetKubernetesDefaults(t *testing.T) {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestSetKubernetesDefaultsUserAgent(t *testing.T) {
 | 
					 | 
				
			||||||
	config := &Config{}
 | 
					 | 
				
			||||||
	if err := SetKubernetesDefaults(config); err != nil {
 | 
					 | 
				
			||||||
		t.Errorf("unexpected error: %v", err)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if !strings.Contains(config.UserAgent, "kubernetes/") {
 | 
					 | 
				
			||||||
		t.Errorf("no user agent set: %#v", config)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func TestHelperGetServerAPIVersions(t *testing.T) {
 | 
					func TestHelperGetServerAPIVersions(t *testing.T) {
 | 
				
			||||||
	expect := []string{"v1", "v2", "v3"}
 | 
						expect := []string{"v1", "v2", "v3"}
 | 
				
			||||||
	APIVersions := unversioned.APIVersions{Versions: expect}
 | 
						APIVersions := unversioned.APIVersions{Versions: expect}
 | 
				
			||||||
@@ -190,7 +126,7 @@ func TestHelperGetServerAPIVersions(t *testing.T) {
 | 
				
			|||||||
	}))
 | 
						}))
 | 
				
			||||||
	// TODO: Uncomment when fix #19254
 | 
						// TODO: Uncomment when fix #19254
 | 
				
			||||||
	// defer server.Close()
 | 
						// defer server.Close()
 | 
				
			||||||
	got, err := ServerAPIVersions(&Config{Host: server.URL, ContentConfig: ContentConfig{GroupVersion: &unversioned.GroupVersion{Group: "invalid version", Version: "one"}, Codec: testapi.Default.Codec()}})
 | 
						got, err := restclient.ServerAPIVersions(&restclient.Config{Host: server.URL, ContentConfig: restclient.ContentConfig{GroupVersion: &unversioned.GroupVersion{Group: "invalid version", Version: "one"}, Codec: testapi.Default.Codec()}})
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		t.Fatalf("unexpected encoding error: %v", err)
 | 
							t.Fatalf("unexpected encoding error: %v", err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
@@ -210,7 +146,19 @@ func TestSetsCodec(t *testing.T) {
 | 
				
			|||||||
		// "invalidVersion":                       {true, "", nil},
 | 
							// "invalidVersion":                       {true, "", nil},
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	for version, expected := range testCases {
 | 
						for version, expected := range testCases {
 | 
				
			||||||
		client, err := New(&Config{Host: "127.0.0.1", ContentConfig: ContentConfig{GroupVersion: &unversioned.GroupVersion{Version: version}}})
 | 
							conf := &restclient.Config{
 | 
				
			||||||
 | 
								Host: "127.0.0.1",
 | 
				
			||||||
 | 
								ContentConfig: restclient.ContentConfig{
 | 
				
			||||||
 | 
									GroupVersion: &unversioned.GroupVersion{Version: version},
 | 
				
			||||||
 | 
								},
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							var versionedPath string
 | 
				
			||||||
 | 
							err := SetKubernetesDefaults(conf)
 | 
				
			||||||
 | 
							if err == nil {
 | 
				
			||||||
 | 
								_, versionedPath, err = restclient.DefaultServerURL(conf.Host, conf.APIPath, *conf.GroupVersion, false)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		switch {
 | 
							switch {
 | 
				
			||||||
		case err == nil && expected.Err:
 | 
							case err == nil && expected.Err:
 | 
				
			||||||
			t.Errorf("expected error but was nil")
 | 
								t.Errorf("expected error but was nil")
 | 
				
			||||||
@@ -221,60 +169,11 @@ func TestSetsCodec(t *testing.T) {
 | 
				
			|||||||
		case err != nil:
 | 
							case err != nil:
 | 
				
			||||||
			continue
 | 
								continue
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if e, a := expected.Prefix, client.RESTClient.versionedAPIPath; e != a {
 | 
							if e, a := expected.Prefix, versionedPath; e != a {
 | 
				
			||||||
			t.Errorf("expected %#v, got %#v", e, a)
 | 
								t.Errorf("expected %#v, got %#v", e, a)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		if e, a := expected.Codec, client.RESTClient.contentConfig.Codec; !reflect.DeepEqual(e, a) {
 | 
							if e, a := expected.Codec, conf.Codec; !reflect.DeepEqual(e, a) {
 | 
				
			||||||
			t.Errorf("expected %#v, got %#v", e, a)
 | 
								t.Errorf("expected %#v, got %#v", e, a)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
func TestRESTClientRequires(t *testing.T) {
 | 
					 | 
				
			||||||
	if _, err := RESTClientFor(&Config{Host: "127.0.0.1", ContentConfig: ContentConfig{Codec: testapi.Default.Codec()}}); err == nil {
 | 
					 | 
				
			||||||
		t.Errorf("unexpected non-error")
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if _, err := RESTClientFor(&Config{Host: "127.0.0.1", ContentConfig: ContentConfig{GroupVersion: testapi.Default.GroupVersion()}}); err == nil {
 | 
					 | 
				
			||||||
		t.Errorf("unexpected non-error")
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if _, err := RESTClientFor(&Config{Host: "127.0.0.1", ContentConfig: ContentConfig{GroupVersion: testapi.Default.GroupVersion(), Codec: testapi.Default.Codec()}}); err != nil {
 | 
					 | 
				
			||||||
		t.Errorf("unexpected error: %v", err)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func TestValidatesHostParameter(t *testing.T) {
 | 
					 | 
				
			||||||
	testCases := []struct {
 | 
					 | 
				
			||||||
		Host    string
 | 
					 | 
				
			||||||
		APIPath string
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		URL string
 | 
					 | 
				
			||||||
		Err bool
 | 
					 | 
				
			||||||
	}{
 | 
					 | 
				
			||||||
		{"127.0.0.1", "", "http://127.0.0.1/" + testapi.Default.GroupVersion().Version, false},
 | 
					 | 
				
			||||||
		{"127.0.0.1:8080", "", "http://127.0.0.1:8080/" + testapi.Default.GroupVersion().Version, false},
 | 
					 | 
				
			||||||
		{"foo.bar.com", "", "http://foo.bar.com/" + testapi.Default.GroupVersion().Version, false},
 | 
					 | 
				
			||||||
		{"http://host/prefix", "", "http://host/prefix/" + testapi.Default.GroupVersion().Version, false},
 | 
					 | 
				
			||||||
		{"http://host", "", "http://host/" + testapi.Default.GroupVersion().Version, false},
 | 
					 | 
				
			||||||
		{"http://host", "/", "http://host/" + testapi.Default.GroupVersion().Version, false},
 | 
					 | 
				
			||||||
		{"http://host", "/other", "http://host/other/" + testapi.Default.GroupVersion().Version, false},
 | 
					 | 
				
			||||||
		{"host/server", "", "", true},
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	for i, testCase := range testCases {
 | 
					 | 
				
			||||||
		u, versionedAPIPath, err := DefaultServerURL(testCase.Host, testCase.APIPath, *testapi.Default.GroupVersion(), false)
 | 
					 | 
				
			||||||
		switch {
 | 
					 | 
				
			||||||
		case err == nil && testCase.Err:
 | 
					 | 
				
			||||||
			t.Errorf("expected error but was nil")
 | 
					 | 
				
			||||||
			continue
 | 
					 | 
				
			||||||
		case err != nil && !testCase.Err:
 | 
					 | 
				
			||||||
			t.Errorf("unexpected error %v", err)
 | 
					 | 
				
			||||||
			continue
 | 
					 | 
				
			||||||
		case err != nil:
 | 
					 | 
				
			||||||
			continue
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		u.Path = path.Join(u.Path, versionedAPIPath)
 | 
					 | 
				
			||||||
		if e, a := testCase.URL, u.String(); e != a {
 | 
					 | 
				
			||||||
			t.Errorf("%d: expected host %s, got %s", i, e, a)
 | 
					 | 
				
			||||||
			continue
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,11 +16,6 @@ limitations under the License.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
package unversioned_test
 | 
					package unversioned_test
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	. "k8s.io/kubernetes/pkg/client/unversioned"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/unversioned/testclient/simple"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"net/url"
 | 
						"net/url"
 | 
				
			||||||
	"testing"
 | 
						"testing"
 | 
				
			||||||
@@ -29,13 +24,15 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/api/testapi"
 | 
						"k8s.io/kubernetes/pkg/api/testapi"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/apis/autoscaling"
 | 
						"k8s.io/kubernetes/pkg/apis/autoscaling"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/apis/extensions"
 | 
						"k8s.io/kubernetes/pkg/apis/extensions"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/client/unversioned"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/client/unversioned/testclient/simple"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func getHorizontalPodAutoscalersResoureName() string {
 | 
					func getHorizontalPodAutoscalersResoureName() string {
 | 
				
			||||||
	return "horizontalpodautoscalers"
 | 
						return "horizontalpodautoscalers"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func getHPAClient(t *testing.T, c *simple.Client, ns, resourceGroup string) HorizontalPodAutoscalerInterface {
 | 
					func getHPAClient(t *testing.T, c *simple.Client, ns, resourceGroup string) unversioned.HorizontalPodAutoscalerInterface {
 | 
				
			||||||
	switch resourceGroup {
 | 
						switch resourceGroup {
 | 
				
			||||||
	case autoscaling.GroupName:
 | 
						case autoscaling.GroupName:
 | 
				
			||||||
		return c.Setup(t).Autoscaling().HorizontalPodAutoscalers(ns)
 | 
							return c.Setup(t).Autoscaling().HorizontalPodAutoscalers(ns)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,17 +16,13 @@ limitations under the License.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
package unversioned_test
 | 
					package unversioned_test
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	. "k8s.io/kubernetes/pkg/client/unversioned"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/unversioned/testclient/simple"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"testing"
 | 
						"testing"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"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/apis/extensions"
 | 
						"k8s.io/kubernetes/pkg/apis/extensions"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/client/unversioned/testclient/simple"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func getIngressResourceName() string {
 | 
					func getIngressResourceName() string {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,11 +16,6 @@ limitations under the License.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
package unversioned_test
 | 
					package unversioned_test
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	. "k8s.io/kubernetes/pkg/client/unversioned"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/unversioned/testclient/simple"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"testing"
 | 
						"testing"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -28,13 +23,15 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/api/testapi"
 | 
						"k8s.io/kubernetes/pkg/api/testapi"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/apis/batch"
 | 
						"k8s.io/kubernetes/pkg/apis/batch"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/apis/extensions"
 | 
						"k8s.io/kubernetes/pkg/apis/extensions"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/client/unversioned"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/client/unversioned/testclient/simple"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func getJobsResourceName() string {
 | 
					func getJobsResourceName() string {
 | 
				
			||||||
	return "jobs"
 | 
						return "jobs"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func getJobClient(t *testing.T, c *simple.Client, ns, resourceGroup string) JobInterface {
 | 
					func getJobClient(t *testing.T, c *simple.Client, ns, resourceGroup string) unversioned.JobInterface {
 | 
				
			||||||
	switch resourceGroup {
 | 
						switch resourceGroup {
 | 
				
			||||||
	case batch.GroupName:
 | 
						case batch.GroupName:
 | 
				
			||||||
		return c.Setup(t).Batch().Jobs(ns)
 | 
							return c.Setup(t).Batch().Jobs(ns)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,11 +16,6 @@ limitations under the License.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
package unversioned_test
 | 
					package unversioned_test
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	. "k8s.io/kubernetes/pkg/client/unversioned"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/unversioned/testclient/simple"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"net/url"
 | 
						"net/url"
 | 
				
			||||||
	"testing"
 | 
						"testing"
 | 
				
			||||||
@@ -28,6 +23,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/resource"
 | 
						"k8s.io/kubernetes/pkg/api/resource"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/testapi"
 | 
						"k8s.io/kubernetes/pkg/api/testapi"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/client/unversioned/testclient/simple"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func getLimitRangesResourceName() string {
 | 
					func getLimitRangesResourceName() string {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,17 +16,13 @@ limitations under the License.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
package unversioned_test
 | 
					package unversioned_test
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	. "k8s.io/kubernetes/pkg/client/unversioned"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/unversioned/testclient/simple"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"net/url"
 | 
						"net/url"
 | 
				
			||||||
	"testing"
 | 
						"testing"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"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/unversioned/testclient/simple"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestNamespaceCreate(t *testing.T) {
 | 
					func TestNamespaceCreate(t *testing.T) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,11 +16,6 @@ limitations under the License.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
package unversioned_test
 | 
					package unversioned_test
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	. "k8s.io/kubernetes/pkg/client/unversioned"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/unversioned/testclient/simple"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"net/url"
 | 
						"net/url"
 | 
				
			||||||
	"testing"
 | 
						"testing"
 | 
				
			||||||
@@ -29,6 +24,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/api/resource"
 | 
						"k8s.io/kubernetes/pkg/api/resource"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/testapi"
 | 
						"k8s.io/kubernetes/pkg/api/testapi"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/unversioned"
 | 
						"k8s.io/kubernetes/pkg/api/unversioned"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/client/unversioned/testclient/simple"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/labels"
 | 
						"k8s.io/kubernetes/pkg/labels"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,11 +16,6 @@ limitations under the License.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
package unversioned_test
 | 
					package unversioned_test
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	. "k8s.io/kubernetes/pkg/client/unversioned"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/unversioned/testclient/simple"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"net/url"
 | 
						"net/url"
 | 
				
			||||||
	"testing"
 | 
						"testing"
 | 
				
			||||||
@@ -28,6 +23,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/resource"
 | 
						"k8s.io/kubernetes/pkg/api/resource"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/testapi"
 | 
						"k8s.io/kubernetes/pkg/api/testapi"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/client/unversioned/testclient/simple"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func getPersistentVolumesResoureName() string {
 | 
					func getPersistentVolumesResoureName() string {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,11 +16,6 @@ limitations under the License.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
package unversioned_test
 | 
					package unversioned_test
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	. "k8s.io/kubernetes/pkg/client/unversioned"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/unversioned/testclient/simple"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"net/url"
 | 
						"net/url"
 | 
				
			||||||
	"testing"
 | 
						"testing"
 | 
				
			||||||
@@ -28,6 +23,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/resource"
 | 
						"k8s.io/kubernetes/pkg/api/resource"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/testapi"
 | 
						"k8s.io/kubernetes/pkg/api/testapi"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/client/unversioned/testclient/simple"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func getPersistentVolumeClaimsResoureName() string {
 | 
					func getPersistentVolumeClaimsResoureName() string {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,17 +16,13 @@ limitations under the License.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
package unversioned_test
 | 
					package unversioned_test
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	. "k8s.io/kubernetes/pkg/client/unversioned"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/unversioned/testclient/simple"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"net/url"
 | 
						"net/url"
 | 
				
			||||||
	"testing"
 | 
						"testing"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"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/unversioned/testclient/simple"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func getPodTemplatesResoureName() string {
 | 
					func getPodTemplatesResoureName() string {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,6 +18,7 @@ package unversioned
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/watch"
 | 
						"k8s.io/kubernetes/pkg/watch"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -36,7 +37,7 @@ type PodInterface interface {
 | 
				
			|||||||
	Watch(opts api.ListOptions) (watch.Interface, error)
 | 
						Watch(opts api.ListOptions) (watch.Interface, error)
 | 
				
			||||||
	Bind(binding *api.Binding) error
 | 
						Bind(binding *api.Binding) error
 | 
				
			||||||
	UpdateStatus(pod *api.Pod) (*api.Pod, error)
 | 
						UpdateStatus(pod *api.Pod) (*api.Pod, error)
 | 
				
			||||||
	GetLogs(name string, opts *api.PodLogOptions) *Request
 | 
						GetLogs(name string, opts *api.PodLogOptions) *restclient.Request
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// pods implements PodsNamespacer interface
 | 
					// pods implements PodsNamespacer interface
 | 
				
			||||||
@@ -109,6 +110,6 @@ func (c *pods) UpdateStatus(pod *api.Pod) (result *api.Pod, err error) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Get constructs a request for getting the logs for a pod
 | 
					// Get constructs a request for getting the logs for a pod
 | 
				
			||||||
func (c *pods) GetLogs(name string, opts *api.PodLogOptions) *Request {
 | 
					func (c *pods) GetLogs(name string, opts *api.PodLogOptions) *restclient.Request {
 | 
				
			||||||
	return c.r.Get().Namespace(c.ns).Name(name).Resource("pods").SubResource("log").VersionedParams(opts, api.ParameterCodec)
 | 
						return c.r.Get().Namespace(c.ns).Name(name).Resource("pods").SubResource("log").VersionedParams(opts, api.ParameterCodec)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,8 +16,6 @@ limitations under the License.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
package unversioned_test
 | 
					package unversioned_test
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import . "k8s.io/kubernetes/pkg/client/unversioned"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"net/http"
 | 
						"net/http"
 | 
				
			||||||
	"net/url"
 | 
						"net/url"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,7 +24,6 @@ import (
 | 
				
			|||||||
	"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/apis/extensions"
 | 
						"k8s.io/kubernetes/pkg/apis/extensions"
 | 
				
			||||||
	. "k8s.io/kubernetes/pkg/client/unversioned"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/unversioned/testclient/simple"
 | 
						"k8s.io/kubernetes/pkg/client/unversioned/testclient/simple"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -30,7 +30,7 @@ import (
 | 
				
			|||||||
	"testing"
 | 
						"testing"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/unversioned/remotecommand"
 | 
						"k8s.io/kubernetes/pkg/client/unversioned/remotecommand"
 | 
				
			||||||
	kubeletserver "k8s.io/kubernetes/pkg/kubelet/server"
 | 
						kubeletserver "k8s.io/kubernetes/pkg/kubelet/server"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/types"
 | 
						"k8s.io/kubernetes/pkg/types"
 | 
				
			||||||
@@ -298,7 +298,7 @@ func TestForwardPorts(t *testing.T) {
 | 
				
			|||||||
		server := httptest.NewServer(fakePortForwardServer(t, testName, test.serverSends, test.clientSends))
 | 
							server := httptest.NewServer(fakePortForwardServer(t, testName, test.serverSends, test.clientSends))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		url, _ := url.Parse(server.URL)
 | 
							url, _ := url.Parse(server.URL)
 | 
				
			||||||
		exec, err := remotecommand.NewExecutor(&client.Config{}, "POST", url)
 | 
							exec, err := remotecommand.NewExecutor(&restclient.Config{}, "POST", url)
 | 
				
			||||||
		if err != nil {
 | 
							if err != nil {
 | 
				
			||||||
			t.Fatal(err)
 | 
								t.Fatal(err)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
@@ -374,7 +374,7 @@ func TestForwardPortsReturnsErrorWhenAllBindsFailed(t *testing.T) {
 | 
				
			|||||||
	// defer server.Close()
 | 
						// defer server.Close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	url, _ := url.Parse(server.URL)
 | 
						url, _ := url.Parse(server.URL)
 | 
				
			||||||
	exec, err := remotecommand.NewExecutor(&client.Config{}, "POST", url)
 | 
						exec, err := remotecommand.NewExecutor(&restclient.Config{}, "POST", url)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		t.Fatal(err)
 | 
							t.Fatal(err)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,8 +24,8 @@ import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	"github.com/golang/glog"
 | 
						"github.com/golang/glog"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/transport"
 | 
						"k8s.io/kubernetes/pkg/client/transport"
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/util/httpstream"
 | 
						"k8s.io/kubernetes/pkg/util/httpstream"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/util/httpstream/spdy"
 | 
						"k8s.io/kubernetes/pkg/util/httpstream/spdy"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@@ -59,14 +59,14 @@ type streamExecutor struct {
 | 
				
			|||||||
// multiplexed bidirectional streams. The current implementation uses SPDY,
 | 
					// multiplexed bidirectional streams. The current implementation uses SPDY,
 | 
				
			||||||
// but this could be replaced with HTTP/2 once it's available, or something else.
 | 
					// but this could be replaced with HTTP/2 once it's available, or something else.
 | 
				
			||||||
// TODO: the common code between this and portforward could be abstracted.
 | 
					// TODO: the common code between this and portforward could be abstracted.
 | 
				
			||||||
func NewExecutor(config *client.Config, method string, url *url.URL) (StreamExecutor, error) {
 | 
					func NewExecutor(config *restclient.Config, method string, url *url.URL) (StreamExecutor, error) {
 | 
				
			||||||
	tlsConfig, err := client.TLSConfigFor(config)
 | 
						tlsConfig, err := restclient.TLSConfigFor(config)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	upgradeRoundTripper := spdy.NewRoundTripper(tlsConfig)
 | 
						upgradeRoundTripper := spdy.NewRoundTripper(tlsConfig)
 | 
				
			||||||
	wrapper, err := client.HTTPWrappersForConfig(config, upgradeRoundTripper)
 | 
						wrapper, err := restclient.HTTPWrappersForConfig(config, upgradeRoundTripper)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -29,7 +29,7 @@ import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/unversioned"
 | 
						"k8s.io/kubernetes/pkg/api/unversioned"
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/util/httpstream"
 | 
						"k8s.io/kubernetes/pkg/util/httpstream"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/util/httpstream/spdy"
 | 
						"k8s.io/kubernetes/pkg/util/httpstream/spdy"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@@ -211,12 +211,12 @@ func TestRequestExecuteRemoteCommand(t *testing.T) {
 | 
				
			|||||||
		server := httptest.NewServer(fakeExecServer(t, i, testCase.Stdin, testCase.Stdout, testCase.Stderr, testCase.Error, testCase.Tty, testCase.MessageCount))
 | 
							server := httptest.NewServer(fakeExecServer(t, i, testCase.Stdin, testCase.Stdout, testCase.Stderr, testCase.Error, testCase.Tty, testCase.MessageCount))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		url, _ := url.ParseRequestURI(server.URL)
 | 
							url, _ := url.ParseRequestURI(server.URL)
 | 
				
			||||||
		c := client.NewRESTClient(url, "", client.ContentConfig{GroupVersion: &unversioned.GroupVersion{Group: "x"}}, -1, -1, nil)
 | 
							c := restclient.NewRESTClient(url, "", restclient.ContentConfig{GroupVersion: &unversioned.GroupVersion{Group: "x"}}, -1, -1, nil)
 | 
				
			||||||
		req := c.Post().Resource("testing")
 | 
							req := c.Post().Resource("testing")
 | 
				
			||||||
		req.SetHeader(httpstream.HeaderProtocolVersion, StreamProtocolV2Name)
 | 
							req.SetHeader(httpstream.HeaderProtocolVersion, StreamProtocolV2Name)
 | 
				
			||||||
		req.Param("command", "ls")
 | 
							req.Param("command", "ls")
 | 
				
			||||||
		req.Param("command", "/")
 | 
							req.Param("command", "/")
 | 
				
			||||||
		conf := &client.Config{
 | 
							conf := &restclient.Config{
 | 
				
			||||||
			Host: server.URL,
 | 
								Host: server.URL,
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		e, err := NewExecutor(conf, "POST", req.URL())
 | 
							e, err := NewExecutor(conf, "POST", req.URL())
 | 
				
			||||||
@@ -296,10 +296,10 @@ func TestRequestAttachRemoteCommand(t *testing.T) {
 | 
				
			|||||||
		server := httptest.NewServer(fakeExecServer(t, i, testCase.Stdin, testCase.Stdout, testCase.Stderr, testCase.Error, testCase.Tty, 1))
 | 
							server := httptest.NewServer(fakeExecServer(t, i, testCase.Stdin, testCase.Stdout, testCase.Stderr, testCase.Error, testCase.Tty, 1))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		url, _ := url.ParseRequestURI(server.URL)
 | 
							url, _ := url.ParseRequestURI(server.URL)
 | 
				
			||||||
		c := client.NewRESTClient(url, "", client.ContentConfig{GroupVersion: &unversioned.GroupVersion{Group: "x"}}, -1, -1, nil)
 | 
							c := restclient.NewRESTClient(url, "", restclient.ContentConfig{GroupVersion: &unversioned.GroupVersion{Group: "x"}}, -1, -1, nil)
 | 
				
			||||||
		req := c.Post().Resource("testing")
 | 
							req := c.Post().Resource("testing")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		conf := &client.Config{
 | 
							conf := &restclient.Config{
 | 
				
			||||||
			Host: server.URL,
 | 
								Host: server.URL,
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		e, err := NewExecutor(conf, "POST", req.URL())
 | 
							e, err := NewExecutor(conf, "POST", req.URL())
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,17 +16,13 @@ limitations under the License.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
package unversioned_test
 | 
					package unversioned_test
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	. "k8s.io/kubernetes/pkg/client/unversioned"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/unversioned/testclient/simple"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"testing"
 | 
						"testing"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"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/apis/extensions"
 | 
						"k8s.io/kubernetes/pkg/apis/extensions"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/client/unversioned/testclient/simple"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func getReplicaSetResourceName() string {
 | 
					func getReplicaSetResourceName() string {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,16 +16,12 @@ limitations under the License.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
package unversioned_test
 | 
					package unversioned_test
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	. "k8s.io/kubernetes/pkg/client/unversioned"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/unversioned/testclient/simple"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"testing"
 | 
						"testing"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"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/unversioned/testclient/simple"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func getRCResourceName() string {
 | 
					func getRCResourceName() string {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,11 +16,6 @@ limitations under the License.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
package unversioned_test
 | 
					package unversioned_test
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	. "k8s.io/kubernetes/pkg/client/unversioned"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/unversioned/testclient/simple"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"net/url"
 | 
						"net/url"
 | 
				
			||||||
	"testing"
 | 
						"testing"
 | 
				
			||||||
@@ -28,6 +23,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/resource"
 | 
						"k8s.io/kubernetes/pkg/api/resource"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/testapi"
 | 
						"k8s.io/kubernetes/pkg/api/testapi"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/client/unversioned/testclient/simple"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func getResourceQuotasResoureName() string {
 | 
					func getResourceQuotasResoureName() string {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,6 +18,7 @@ package unversioned
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/util/net"
 | 
						"k8s.io/kubernetes/pkg/util/net"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/watch"
 | 
						"k8s.io/kubernetes/pkg/watch"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@@ -36,7 +37,7 @@ type ServiceInterface interface {
 | 
				
			|||||||
	UpdateStatus(srv *api.Service) (*api.Service, error)
 | 
						UpdateStatus(srv *api.Service) (*api.Service, error)
 | 
				
			||||||
	Delete(name string) error
 | 
						Delete(name string) error
 | 
				
			||||||
	Watch(opts api.ListOptions) (watch.Interface, error)
 | 
						Watch(opts api.ListOptions) (watch.Interface, error)
 | 
				
			||||||
	ProxyGet(scheme, name, port, path string, params map[string]string) ResponseWrapper
 | 
						ProxyGet(scheme, name, port, path string, params map[string]string) restclient.ResponseWrapper
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// services implements ServicesNamespacer interface
 | 
					// services implements ServicesNamespacer interface
 | 
				
			||||||
@@ -106,7 +107,7 @@ func (c *services) Watch(opts api.ListOptions) (watch.Interface, error) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ProxyGet returns a response of the service by calling it through the proxy.
 | 
					// ProxyGet returns a response of the service by calling it through the proxy.
 | 
				
			||||||
func (c *services) ProxyGet(scheme, name, port, path string, params map[string]string) ResponseWrapper {
 | 
					func (c *services) ProxyGet(scheme, name, port, path string, params map[string]string) restclient.ResponseWrapper {
 | 
				
			||||||
	request := c.r.Get().
 | 
						request := c.r.Get().
 | 
				
			||||||
		Namespace(c.ns).
 | 
							Namespace(c.ns).
 | 
				
			||||||
		Resource("services").
 | 
							Resource("services").
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,11 +16,6 @@ limitations under the License.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
package unversioned_test
 | 
					package unversioned_test
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					 | 
				
			||||||
	. "k8s.io/kubernetes/pkg/client/unversioned"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/unversioned/testclient/simple"
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"net/url"
 | 
						"net/url"
 | 
				
			||||||
	"testing"
 | 
						"testing"
 | 
				
			||||||
@@ -28,6 +23,7 @@ import (
 | 
				
			|||||||
	"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/unversioned"
 | 
						"k8s.io/kubernetes/pkg/api/unversioned"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/client/unversioned/testclient/simple"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/labels"
 | 
						"k8s.io/kubernetes/pkg/labels"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,7 +18,7 @@ package testclient
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/labels"
 | 
						"k8s.io/kubernetes/pkg/labels"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/watch"
 | 
						"k8s.io/kubernetes/pkg/watch"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@@ -104,7 +104,7 @@ func (c *FakePods) UpdateStatus(pod *api.Pod) (*api.Pod, error) {
 | 
				
			|||||||
	return obj.(*api.Pod), err
 | 
						return obj.(*api.Pod), err
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (c *FakePods) GetLogs(name string, opts *api.PodLogOptions) *client.Request {
 | 
					func (c *FakePods) GetLogs(name string, opts *api.PodLogOptions) *restclient.Request {
 | 
				
			||||||
	action := GenericActionImpl{}
 | 
						action := GenericActionImpl{}
 | 
				
			||||||
	action.Verb = "get"
 | 
						action.Verb = "get"
 | 
				
			||||||
	action.Namespace = c.Namespace
 | 
						action.Namespace = c.Namespace
 | 
				
			||||||
@@ -113,5 +113,5 @@ func (c *FakePods) GetLogs(name string, opts *api.PodLogOptions) *client.Request
 | 
				
			|||||||
	action.Value = opts
 | 
						action.Value = opts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	_, _ = c.Fake.Invokes(action, &api.Pod{})
 | 
						_, _ = c.Fake.Invokes(action, &api.Pod{})
 | 
				
			||||||
	return &client.Request{}
 | 
						return &restclient.Request{}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,7 +18,7 @@ package testclient
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/watch"
 | 
						"k8s.io/kubernetes/pkg/watch"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -83,6 +83,6 @@ func (c *FakeServices) Watch(opts api.ListOptions) (watch.Interface, error) {
 | 
				
			|||||||
	return c.Fake.InvokesWatch(NewWatchAction("services", c.Namespace, opts))
 | 
						return c.Fake.InvokesWatch(NewWatchAction("services", c.Namespace, opts))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (c *FakeServices) ProxyGet(scheme, name, port, path string, params map[string]string) client.ResponseWrapper {
 | 
					func (c *FakeServices) ProxyGet(scheme, name, port, path string, params map[string]string) restclient.ResponseWrapper {
 | 
				
			||||||
	return c.Fake.InvokesProxy(NewProxyGetAction("services", c.Namespace, scheme, name, port, path, params))
 | 
						return c.Fake.InvokesProxy(NewProxyGetAction("services", c.Namespace, scheme, name, port, path, params))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -26,7 +26,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/api/errors"
 | 
						"k8s.io/kubernetes/pkg/api/errors"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/meta"
 | 
						"k8s.io/kubernetes/pkg/api/meta"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/unversioned"
 | 
						"k8s.io/kubernetes/pkg/api/unversioned"
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/runtime"
 | 
						"k8s.io/kubernetes/pkg/runtime"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/util/yaml"
 | 
						"k8s.io/kubernetes/pkg/util/yaml"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/watch"
 | 
						"k8s.io/kubernetes/pkg/watch"
 | 
				
			||||||
@@ -311,6 +311,6 @@ func (r *SimpleProxyReactor) Handles(action Action) bool {
 | 
				
			|||||||
	return true
 | 
						return true
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (r *SimpleProxyReactor) React(action Action) (bool, client.ResponseWrapper, error) {
 | 
					func (r *SimpleProxyReactor) React(action Action) (bool, restclient.ResponseWrapper, error) {
 | 
				
			||||||
	return r.Reaction(action)
 | 
						return r.Reaction(action)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,6 +28,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/api/testapi"
 | 
						"k8s.io/kubernetes/pkg/api/testapi"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/unversioned"
 | 
						"k8s.io/kubernetes/pkg/api/unversioned"
 | 
				
			||||||
	clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
 | 
						clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/fields"
 | 
						"k8s.io/kubernetes/pkg/fields"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/labels"
 | 
						"k8s.io/kubernetes/pkg/labels"
 | 
				
			||||||
@@ -81,27 +82,27 @@ func (c *Client) Setup(t *testing.T) *Client {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	c.server = httptest.NewServer(c.handler)
 | 
						c.server = httptest.NewServer(c.handler)
 | 
				
			||||||
	if c.Client == nil {
 | 
						if c.Client == nil {
 | 
				
			||||||
		c.Client = client.NewOrDie(&client.Config{
 | 
							c.Client = client.NewOrDie(&restclient.Config{
 | 
				
			||||||
			Host:          c.server.URL,
 | 
								Host:          c.server.URL,
 | 
				
			||||||
			ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()},
 | 
								ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()},
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// TODO: caesarxuchao: hacky way to specify version of Experimental client.
 | 
							// TODO: caesarxuchao: hacky way to specify version of Experimental client.
 | 
				
			||||||
		// We will fix this by supporting multiple group versions in Config
 | 
							// We will fix this by supporting multiple group versions in Config
 | 
				
			||||||
		c.AutoscalingClient = client.NewAutoscalingOrDie(&client.Config{
 | 
							c.AutoscalingClient = client.NewAutoscalingOrDie(&restclient.Config{
 | 
				
			||||||
			Host:          c.server.URL,
 | 
								Host:          c.server.URL,
 | 
				
			||||||
			ContentConfig: client.ContentConfig{GroupVersion: testapi.Autoscaling.GroupVersion()},
 | 
								ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Autoscaling.GroupVersion()},
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
		c.BatchClient = client.NewBatchOrDie(&client.Config{
 | 
							c.BatchClient = client.NewBatchOrDie(&restclient.Config{
 | 
				
			||||||
			Host:          c.server.URL,
 | 
								Host:          c.server.URL,
 | 
				
			||||||
			ContentConfig: client.ContentConfig{GroupVersion: testapi.Batch.GroupVersion()},
 | 
								ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Batch.GroupVersion()},
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
		c.ExtensionsClient = client.NewExtensionsOrDie(&client.Config{
 | 
							c.ExtensionsClient = client.NewExtensionsOrDie(&restclient.Config{
 | 
				
			||||||
			Host:          c.server.URL,
 | 
								Host:          c.server.URL,
 | 
				
			||||||
			ContentConfig: client.ContentConfig{GroupVersion: testapi.Extensions.GroupVersion()},
 | 
								ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Extensions.GroupVersion()},
 | 
				
			||||||
		})
 | 
							})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		c.Clientset = clientset.NewForConfigOrDie(&client.Config{Host: c.server.URL})
 | 
							c.Clientset = clientset.NewForConfigOrDie(&restclient.Config{Host: c.server.URL})
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	c.QueryValidator = map[string]func(string, string) bool{}
 | 
						c.QueryValidator = map[string]func(string, string) bool{}
 | 
				
			||||||
	return c
 | 
						return c
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -26,6 +26,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/api/unversioned"
 | 
						"k8s.io/kubernetes/pkg/api/unversioned"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/v1"
 | 
						"k8s.io/kubernetes/pkg/api/v1"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/apimachinery/registered"
 | 
						"k8s.io/kubernetes/pkg/apimachinery/registered"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/runtime"
 | 
						"k8s.io/kubernetes/pkg/runtime"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/version"
 | 
						"k8s.io/kubernetes/pkg/version"
 | 
				
			||||||
@@ -86,7 +87,7 @@ type ProxyReactor interface {
 | 
				
			|||||||
	// Handles indicates whether or not this Reactor deals with a given action
 | 
						// Handles indicates whether or not this Reactor deals with a given action
 | 
				
			||||||
	Handles(action Action) bool
 | 
						Handles(action Action) bool
 | 
				
			||||||
	// React handles a watch action and returns results.  It may choose to delegate by indicated handled=false
 | 
						// React handles a watch action and returns results.  It may choose to delegate by indicated handled=false
 | 
				
			||||||
	React(action Action) (handled bool, ret client.ResponseWrapper, err error)
 | 
						React(action Action) (handled bool, ret restclient.ResponseWrapper, err error)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ReactionFunc is a function that returns an object or error for a given Action.  If "handled" is false,
 | 
					// ReactionFunc is a function that returns an object or error for a given Action.  If "handled" is false,
 | 
				
			||||||
@@ -99,7 +100,7 @@ type WatchReactionFunc func(action Action) (handled bool, ret watch.Interface, e
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// ProxyReactionFunc is a function that returns a ResponseWrapper interface for a given Action.  If "handled" is false,
 | 
					// ProxyReactionFunc is a function that returns a ResponseWrapper interface for a given Action.  If "handled" is false,
 | 
				
			||||||
// then the test client will continue ignore the results and continue to the next ProxyReactionFunc
 | 
					// then the test client will continue ignore the results and continue to the next ProxyReactionFunc
 | 
				
			||||||
type ProxyReactionFunc func(action Action) (handled bool, ret client.ResponseWrapper, err error)
 | 
					type ProxyReactionFunc func(action Action) (handled bool, ret restclient.ResponseWrapper, err error)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// AddReactor appends a reactor to the end of the chain
 | 
					// AddReactor appends a reactor to the end of the chain
 | 
				
			||||||
func (c *Fake) AddReactor(verb, resource string, reaction ReactionFunc) {
 | 
					func (c *Fake) AddReactor(verb, resource string, reaction ReactionFunc) {
 | 
				
			||||||
@@ -177,7 +178,7 @@ func (c *Fake) InvokesWatch(action Action) (watch.Interface, error) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// InvokesProxy records the provided Action and then invokes the ReactFn (if provided).
 | 
					// InvokesProxy records the provided Action and then invokes the ReactFn (if provided).
 | 
				
			||||||
func (c *Fake) InvokesProxy(action Action) client.ResponseWrapper {
 | 
					func (c *Fake) InvokesProxy(action Action) restclient.ResponseWrapper {
 | 
				
			||||||
	c.Lock()
 | 
						c.Lock()
 | 
				
			||||||
	defer c.Unlock()
 | 
						defer c.Unlock()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -22,7 +22,6 @@ import (
 | 
				
			|||||||
	"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/apis/extensions"
 | 
						"k8s.io/kubernetes/pkg/apis/extensions"
 | 
				
			||||||
	. "k8s.io/kubernetes/pkg/client/unversioned"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/unversioned/testclient/simple"
 | 
						"k8s.io/kubernetes/pkg/client/unversioned/testclient/simple"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -32,7 +32,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/client/cache"
 | 
						"k8s.io/kubernetes/pkg/client/cache"
 | 
				
			||||||
	clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
 | 
						clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/record"
 | 
						"k8s.io/kubernetes/pkg/client/record"
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/runtime"
 | 
						"k8s.io/kubernetes/pkg/runtime"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/securitycontext"
 | 
						"k8s.io/kubernetes/pkg/securitycontext"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/util"
 | 
						"k8s.io/kubernetes/pkg/util"
 | 
				
			||||||
@@ -193,7 +193,7 @@ func TestCreatePods(t *testing.T) {
 | 
				
			|||||||
	testServer := httptest.NewServer(&fakeHandler)
 | 
						testServer := httptest.NewServer(&fakeHandler)
 | 
				
			||||||
	// TODO: Uncomment when fix #19254
 | 
						// TODO: Uncomment when fix #19254
 | 
				
			||||||
	// defer testServer.Close()
 | 
						// defer testServer.Close()
 | 
				
			||||||
	clientset := clientset.NewForConfigOrDie(&client.Config{Host: testServer.URL, ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
						clientset := clientset.NewForConfigOrDie(&restclient.Config{Host: testServer.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	podControl := RealPodControl{
 | 
						podControl := RealPodControl{
 | 
				
			||||||
		KubeClient: clientset,
 | 
							KubeClient: clientset,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -27,7 +27,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/apis/extensions"
 | 
						"k8s.io/kubernetes/pkg/apis/extensions"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/cache"
 | 
						"k8s.io/kubernetes/pkg/client/cache"
 | 
				
			||||||
	clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
 | 
						clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/controller"
 | 
						"k8s.io/kubernetes/pkg/controller"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/securitycontext"
 | 
						"k8s.io/kubernetes/pkg/securitycontext"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@@ -132,7 +132,7 @@ func addPods(podStore cache.Store, nodeName string, label map[string]string, num
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func newTestController() (*DaemonSetsController, *controller.FakePodControl) {
 | 
					func newTestController() (*DaemonSetsController, *controller.FakePodControl) {
 | 
				
			||||||
	clientset := clientset.NewForConfigOrDie(&client.Config{Host: "", ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
						clientset := clientset.NewForConfigOrDie(&restclient.Config{Host: "", ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
				
			||||||
	manager := NewDaemonSetsController(clientset, controller.NoResyncPeriodFunc)
 | 
						manager := NewDaemonSetsController(clientset, controller.NoResyncPeriodFunc)
 | 
				
			||||||
	manager.podStoreSynced = alwaysReady
 | 
						manager.podStoreSynced = alwaysReady
 | 
				
			||||||
	podControl := &controller.FakePodControl{}
 | 
						podControl := &controller.FakePodControl{}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -29,7 +29,7 @@ import (
 | 
				
			|||||||
	_ "k8s.io/kubernetes/pkg/apimachinery/registered"
 | 
						_ "k8s.io/kubernetes/pkg/apimachinery/registered"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/cache"
 | 
						"k8s.io/kubernetes/pkg/client/cache"
 | 
				
			||||||
	clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
 | 
						clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/controller"
 | 
						"k8s.io/kubernetes/pkg/controller"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/runtime"
 | 
						"k8s.io/kubernetes/pkg/runtime"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/util/intstr"
 | 
						"k8s.io/kubernetes/pkg/util/intstr"
 | 
				
			||||||
@@ -105,7 +105,7 @@ func TestSyncEndpointsItemsPreserveNoSelector(t *testing.T) {
 | 
				
			|||||||
		}})
 | 
							}})
 | 
				
			||||||
	// TODO: Uncomment when fix #19254
 | 
						// TODO: Uncomment when fix #19254
 | 
				
			||||||
	// defer testServer.Close()
 | 
						// defer testServer.Close()
 | 
				
			||||||
	client := clientset.NewForConfigOrDie(&client.Config{Host: testServer.URL, ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
						client := clientset.NewForConfigOrDie(&restclient.Config{Host: testServer.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
				
			||||||
	endpoints := NewEndpointController(client, controller.NoResyncPeriodFunc)
 | 
						endpoints := NewEndpointController(client, controller.NoResyncPeriodFunc)
 | 
				
			||||||
	endpoints.serviceStore.Store.Add(&api.Service{
 | 
						endpoints.serviceStore.Store.Add(&api.Service{
 | 
				
			||||||
		ObjectMeta: api.ObjectMeta{Name: "foo", Namespace: ns},
 | 
							ObjectMeta: api.ObjectMeta{Name: "foo", Namespace: ns},
 | 
				
			||||||
@@ -138,7 +138,7 @@ func TestCheckLeftoverEndpoints(t *testing.T) {
 | 
				
			|||||||
		}})
 | 
							}})
 | 
				
			||||||
	// TODO: Uncomment when fix #19254
 | 
						// TODO: Uncomment when fix #19254
 | 
				
			||||||
	// defer testServer.Close()
 | 
						// defer testServer.Close()
 | 
				
			||||||
	client := clientset.NewForConfigOrDie(&client.Config{Host: testServer.URL, ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
						client := clientset.NewForConfigOrDie(&restclient.Config{Host: testServer.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
				
			||||||
	endpoints := NewEndpointController(client, controller.NoResyncPeriodFunc)
 | 
						endpoints := NewEndpointController(client, controller.NoResyncPeriodFunc)
 | 
				
			||||||
	endpoints.checkLeftoverEndpoints()
 | 
						endpoints.checkLeftoverEndpoints()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -167,7 +167,7 @@ func TestSyncEndpointsProtocolTCP(t *testing.T) {
 | 
				
			|||||||
		}})
 | 
							}})
 | 
				
			||||||
	// TODO: Uncomment when fix #19254
 | 
						// TODO: Uncomment when fix #19254
 | 
				
			||||||
	// defer testServer.Close()
 | 
						// defer testServer.Close()
 | 
				
			||||||
	client := clientset.NewForConfigOrDie(&client.Config{Host: testServer.URL, ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
						client := clientset.NewForConfigOrDie(&restclient.Config{Host: testServer.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
				
			||||||
	endpoints := NewEndpointController(client, controller.NoResyncPeriodFunc)
 | 
						endpoints := NewEndpointController(client, controller.NoResyncPeriodFunc)
 | 
				
			||||||
	addPods(endpoints.podStore.Store, ns, 1, 1, 0)
 | 
						addPods(endpoints.podStore.Store, ns, 1, 1, 0)
 | 
				
			||||||
	endpoints.serviceStore.Store.Add(&api.Service{
 | 
						endpoints.serviceStore.Store.Add(&api.Service{
 | 
				
			||||||
@@ -209,7 +209,7 @@ func TestSyncEndpointsProtocolUDP(t *testing.T) {
 | 
				
			|||||||
		}})
 | 
							}})
 | 
				
			||||||
	// TODO: Uncomment when fix #19254
 | 
						// TODO: Uncomment when fix #19254
 | 
				
			||||||
	// defer testServer.Close()
 | 
						// defer testServer.Close()
 | 
				
			||||||
	client := clientset.NewForConfigOrDie(&client.Config{Host: testServer.URL, ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
						client := clientset.NewForConfigOrDie(&restclient.Config{Host: testServer.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
				
			||||||
	endpoints := NewEndpointController(client, controller.NoResyncPeriodFunc)
 | 
						endpoints := NewEndpointController(client, controller.NoResyncPeriodFunc)
 | 
				
			||||||
	addPods(endpoints.podStore.Store, ns, 1, 1, 0)
 | 
						addPods(endpoints.podStore.Store, ns, 1, 1, 0)
 | 
				
			||||||
	endpoints.serviceStore.Store.Add(&api.Service{
 | 
						endpoints.serviceStore.Store.Add(&api.Service{
 | 
				
			||||||
@@ -248,7 +248,7 @@ func TestSyncEndpointsItemsEmptySelectorSelectsAll(t *testing.T) {
 | 
				
			|||||||
		}})
 | 
							}})
 | 
				
			||||||
	// TODO: Uncomment when fix #19254
 | 
						// TODO: Uncomment when fix #19254
 | 
				
			||||||
	// defer testServer.Close()
 | 
						// defer testServer.Close()
 | 
				
			||||||
	client := clientset.NewForConfigOrDie(&client.Config{Host: testServer.URL, ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
						client := clientset.NewForConfigOrDie(&restclient.Config{Host: testServer.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
				
			||||||
	endpoints := NewEndpointController(client, controller.NoResyncPeriodFunc)
 | 
						endpoints := NewEndpointController(client, controller.NoResyncPeriodFunc)
 | 
				
			||||||
	addPods(endpoints.podStore.Store, ns, 1, 1, 0)
 | 
						addPods(endpoints.podStore.Store, ns, 1, 1, 0)
 | 
				
			||||||
	endpoints.serviceStore.Store.Add(&api.Service{
 | 
						endpoints.serviceStore.Store.Add(&api.Service{
 | 
				
			||||||
@@ -286,7 +286,7 @@ func TestSyncEndpointsItemsEmptySelectorSelectsAllNotReady(t *testing.T) {
 | 
				
			|||||||
		}})
 | 
							}})
 | 
				
			||||||
	// TODO: Uncomment when fix #19254
 | 
						// TODO: Uncomment when fix #19254
 | 
				
			||||||
	// defer testServer.Close()
 | 
						// defer testServer.Close()
 | 
				
			||||||
	client := clientset.NewForConfigOrDie(&client.Config{Host: testServer.URL, ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
						client := clientset.NewForConfigOrDie(&restclient.Config{Host: testServer.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
				
			||||||
	endpoints := NewEndpointController(client, controller.NoResyncPeriodFunc)
 | 
						endpoints := NewEndpointController(client, controller.NoResyncPeriodFunc)
 | 
				
			||||||
	addPods(endpoints.podStore.Store, ns, 0, 1, 1)
 | 
						addPods(endpoints.podStore.Store, ns, 0, 1, 1)
 | 
				
			||||||
	endpoints.serviceStore.Store.Add(&api.Service{
 | 
						endpoints.serviceStore.Store.Add(&api.Service{
 | 
				
			||||||
@@ -324,7 +324,7 @@ func TestSyncEndpointsItemsEmptySelectorSelectsAllMixed(t *testing.T) {
 | 
				
			|||||||
		}})
 | 
							}})
 | 
				
			||||||
	// TODO: Uncomment when fix #19254
 | 
						// TODO: Uncomment when fix #19254
 | 
				
			||||||
	// defer testServer.Close()
 | 
						// defer testServer.Close()
 | 
				
			||||||
	client := clientset.NewForConfigOrDie(&client.Config{Host: testServer.URL, ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
						client := clientset.NewForConfigOrDie(&restclient.Config{Host: testServer.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
				
			||||||
	endpoints := NewEndpointController(client, controller.NoResyncPeriodFunc)
 | 
						endpoints := NewEndpointController(client, controller.NoResyncPeriodFunc)
 | 
				
			||||||
	addPods(endpoints.podStore.Store, ns, 1, 1, 1)
 | 
						addPods(endpoints.podStore.Store, ns, 1, 1, 1)
 | 
				
			||||||
	endpoints.serviceStore.Store.Add(&api.Service{
 | 
						endpoints.serviceStore.Store.Add(&api.Service{
 | 
				
			||||||
@@ -366,7 +366,7 @@ func TestSyncEndpointsItemsPreexisting(t *testing.T) {
 | 
				
			|||||||
		}})
 | 
							}})
 | 
				
			||||||
	// TODO: Uncomment when fix #19254
 | 
						// TODO: Uncomment when fix #19254
 | 
				
			||||||
	// defer testServer.Close()
 | 
						// defer testServer.Close()
 | 
				
			||||||
	client := clientset.NewForConfigOrDie(&client.Config{Host: testServer.URL, ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
						client := clientset.NewForConfigOrDie(&restclient.Config{Host: testServer.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
				
			||||||
	endpoints := NewEndpointController(client, controller.NoResyncPeriodFunc)
 | 
						endpoints := NewEndpointController(client, controller.NoResyncPeriodFunc)
 | 
				
			||||||
	addPods(endpoints.podStore.Store, ns, 1, 1, 0)
 | 
						addPods(endpoints.podStore.Store, ns, 1, 1, 0)
 | 
				
			||||||
	endpoints.serviceStore.Store.Add(&api.Service{
 | 
						endpoints.serviceStore.Store.Add(&api.Service{
 | 
				
			||||||
@@ -407,7 +407,7 @@ func TestSyncEndpointsItemsPreexistingIdentical(t *testing.T) {
 | 
				
			|||||||
		}})
 | 
							}})
 | 
				
			||||||
	// TODO: Uncomment when fix #19254
 | 
						// TODO: Uncomment when fix #19254
 | 
				
			||||||
	// defer testServer.Close()
 | 
						// defer testServer.Close()
 | 
				
			||||||
	client := clientset.NewForConfigOrDie(&client.Config{Host: testServer.URL, ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
						client := clientset.NewForConfigOrDie(&restclient.Config{Host: testServer.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
				
			||||||
	endpoints := NewEndpointController(client, controller.NoResyncPeriodFunc)
 | 
						endpoints := NewEndpointController(client, controller.NoResyncPeriodFunc)
 | 
				
			||||||
	addPods(endpoints.podStore.Store, api.NamespaceDefault, 1, 1, 0)
 | 
						addPods(endpoints.podStore.Store, api.NamespaceDefault, 1, 1, 0)
 | 
				
			||||||
	endpoints.serviceStore.Store.Add(&api.Service{
 | 
						endpoints.serviceStore.Store.Add(&api.Service{
 | 
				
			||||||
@@ -427,7 +427,7 @@ func TestSyncEndpointsItems(t *testing.T) {
 | 
				
			|||||||
		serverResponse{http.StatusOK, &api.Endpoints{}})
 | 
							serverResponse{http.StatusOK, &api.Endpoints{}})
 | 
				
			||||||
	// TODO: Uncomment when fix #19254
 | 
						// TODO: Uncomment when fix #19254
 | 
				
			||||||
	// defer testServer.Close()
 | 
						// defer testServer.Close()
 | 
				
			||||||
	client := clientset.NewForConfigOrDie(&client.Config{Host: testServer.URL, ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
						client := clientset.NewForConfigOrDie(&restclient.Config{Host: testServer.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
				
			||||||
	endpoints := NewEndpointController(client, controller.NoResyncPeriodFunc)
 | 
						endpoints := NewEndpointController(client, controller.NoResyncPeriodFunc)
 | 
				
			||||||
	addPods(endpoints.podStore.Store, ns, 3, 2, 0)
 | 
						addPods(endpoints.podStore.Store, ns, 3, 2, 0)
 | 
				
			||||||
	addPods(endpoints.podStore.Store, "blah", 5, 2, 0) // make sure these aren't found!
 | 
						addPods(endpoints.podStore.Store, "blah", 5, 2, 0) // make sure these aren't found!
 | 
				
			||||||
@@ -470,7 +470,7 @@ func TestSyncEndpointsItemsWithLabels(t *testing.T) {
 | 
				
			|||||||
		serverResponse{http.StatusOK, &api.Endpoints{}})
 | 
							serverResponse{http.StatusOK, &api.Endpoints{}})
 | 
				
			||||||
	// TODO: Uncomment when fix #19254
 | 
						// TODO: Uncomment when fix #19254
 | 
				
			||||||
	// defer testServer.Close()
 | 
						// defer testServer.Close()
 | 
				
			||||||
	client := clientset.NewForConfigOrDie(&client.Config{Host: testServer.URL, ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
						client := clientset.NewForConfigOrDie(&restclient.Config{Host: testServer.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
				
			||||||
	endpoints := NewEndpointController(client, controller.NoResyncPeriodFunc)
 | 
						endpoints := NewEndpointController(client, controller.NoResyncPeriodFunc)
 | 
				
			||||||
	addPods(endpoints.podStore.Store, ns, 3, 2, 0)
 | 
						addPods(endpoints.podStore.Store, ns, 3, 2, 0)
 | 
				
			||||||
	serviceLabels := map[string]string{"foo": "bar"}
 | 
						serviceLabels := map[string]string{"foo": "bar"}
 | 
				
			||||||
@@ -531,7 +531,7 @@ func TestSyncEndpointsItemsPreexistingLabelsChange(t *testing.T) {
 | 
				
			|||||||
		}})
 | 
							}})
 | 
				
			||||||
	// TODO: Uncomment when fix #19254
 | 
						// TODO: Uncomment when fix #19254
 | 
				
			||||||
	// defer testServer.Close()
 | 
						// defer testServer.Close()
 | 
				
			||||||
	client := clientset.NewForConfigOrDie(&client.Config{Host: testServer.URL, ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
						client := clientset.NewForConfigOrDie(&restclient.Config{Host: testServer.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
				
			||||||
	endpoints := NewEndpointController(client, controller.NoResyncPeriodFunc)
 | 
						endpoints := NewEndpointController(client, controller.NoResyncPeriodFunc)
 | 
				
			||||||
	addPods(endpoints.podStore.Store, ns, 1, 1, 0)
 | 
						addPods(endpoints.podStore.Store, ns, 1, 1, 0)
 | 
				
			||||||
	serviceLabels := map[string]string{"baz": "blah"}
 | 
						serviceLabels := map[string]string{"baz": "blah"}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -27,8 +27,8 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/apis/extensions"
 | 
						"k8s.io/kubernetes/pkg/apis/extensions"
 | 
				
			||||||
	clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
 | 
						clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake"
 | 
						"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/testing/core"
 | 
						"k8s.io/kubernetes/pkg/client/testing/core"
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/unversioned/testclient"
 | 
						"k8s.io/kubernetes/pkg/client/unversioned/testclient"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/controller"
 | 
						"k8s.io/kubernetes/pkg/controller"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/util/rand"
 | 
						"k8s.io/kubernetes/pkg/util/rand"
 | 
				
			||||||
@@ -207,7 +207,7 @@ func TestControllerSyncJob(t *testing.T) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	for name, tc := range testCases {
 | 
						for name, tc := range testCases {
 | 
				
			||||||
		// job manager setup
 | 
							// job manager setup
 | 
				
			||||||
		clientset := clientset.NewForConfigOrDie(&client.Config{Host: "", ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
							clientset := clientset.NewForConfigOrDie(&restclient.Config{Host: "", ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
				
			||||||
		manager := NewJobController(clientset, controller.NoResyncPeriodFunc)
 | 
							manager := NewJobController(clientset, controller.NoResyncPeriodFunc)
 | 
				
			||||||
		fakePodControl := controller.FakePodControl{Err: tc.podControllerError}
 | 
							fakePodControl := controller.FakePodControl{Err: tc.podControllerError}
 | 
				
			||||||
		manager.podControl = &fakePodControl
 | 
							manager.podControl = &fakePodControl
 | 
				
			||||||
@@ -302,7 +302,7 @@ func TestSyncJobPastDeadline(t *testing.T) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	for name, tc := range testCases {
 | 
						for name, tc := range testCases {
 | 
				
			||||||
		// job manager setup
 | 
							// job manager setup
 | 
				
			||||||
		clientset := clientset.NewForConfigOrDie(&client.Config{Host: "", ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
							clientset := clientset.NewForConfigOrDie(&restclient.Config{Host: "", ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
				
			||||||
		manager := NewJobController(clientset, controller.NoResyncPeriodFunc)
 | 
							manager := NewJobController(clientset, controller.NoResyncPeriodFunc)
 | 
				
			||||||
		fakePodControl := controller.FakePodControl{}
 | 
							fakePodControl := controller.FakePodControl{}
 | 
				
			||||||
		manager.podControl = &fakePodControl
 | 
							manager.podControl = &fakePodControl
 | 
				
			||||||
@@ -372,7 +372,7 @@ func getCondition(job *extensions.Job, condition extensions.JobConditionType) bo
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestSyncPastDeadlineJobFinished(t *testing.T) {
 | 
					func TestSyncPastDeadlineJobFinished(t *testing.T) {
 | 
				
			||||||
	clientset := clientset.NewForConfigOrDie(&client.Config{Host: "", ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
						clientset := clientset.NewForConfigOrDie(&restclient.Config{Host: "", ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
				
			||||||
	manager := NewJobController(clientset, controller.NoResyncPeriodFunc)
 | 
						manager := NewJobController(clientset, controller.NoResyncPeriodFunc)
 | 
				
			||||||
	fakePodControl := controller.FakePodControl{}
 | 
						fakePodControl := controller.FakePodControl{}
 | 
				
			||||||
	manager.podControl = &fakePodControl
 | 
						manager.podControl = &fakePodControl
 | 
				
			||||||
@@ -406,7 +406,7 @@ func TestSyncPastDeadlineJobFinished(t *testing.T) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestSyncJobComplete(t *testing.T) {
 | 
					func TestSyncJobComplete(t *testing.T) {
 | 
				
			||||||
	clientset := clientset.NewForConfigOrDie(&client.Config{Host: "", ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
						clientset := clientset.NewForConfigOrDie(&restclient.Config{Host: "", ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
				
			||||||
	manager := NewJobController(clientset, controller.NoResyncPeriodFunc)
 | 
						manager := NewJobController(clientset, controller.NoResyncPeriodFunc)
 | 
				
			||||||
	fakePodControl := controller.FakePodControl{}
 | 
						fakePodControl := controller.FakePodControl{}
 | 
				
			||||||
	manager.podControl = &fakePodControl
 | 
						manager.podControl = &fakePodControl
 | 
				
			||||||
@@ -431,7 +431,7 @@ func TestSyncJobComplete(t *testing.T) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestSyncJobDeleted(t *testing.T) {
 | 
					func TestSyncJobDeleted(t *testing.T) {
 | 
				
			||||||
	clientset := clientset.NewForConfigOrDie(&client.Config{Host: "", ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
						clientset := clientset.NewForConfigOrDie(&restclient.Config{Host: "", ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
				
			||||||
	manager := NewJobController(clientset, controller.NoResyncPeriodFunc)
 | 
						manager := NewJobController(clientset, controller.NoResyncPeriodFunc)
 | 
				
			||||||
	fakePodControl := controller.FakePodControl{}
 | 
						fakePodControl := controller.FakePodControl{}
 | 
				
			||||||
	manager.podControl = &fakePodControl
 | 
						manager.podControl = &fakePodControl
 | 
				
			||||||
@@ -451,7 +451,7 @@ func TestSyncJobDeleted(t *testing.T) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestSyncJobUpdateRequeue(t *testing.T) {
 | 
					func TestSyncJobUpdateRequeue(t *testing.T) {
 | 
				
			||||||
	clientset := clientset.NewForConfigOrDie(&client.Config{Host: "", ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
						clientset := clientset.NewForConfigOrDie(&restclient.Config{Host: "", ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
				
			||||||
	manager := NewJobController(clientset, controller.NoResyncPeriodFunc)
 | 
						manager := NewJobController(clientset, controller.NoResyncPeriodFunc)
 | 
				
			||||||
	fakePodControl := controller.FakePodControl{}
 | 
						fakePodControl := controller.FakePodControl{}
 | 
				
			||||||
	manager.podControl = &fakePodControl
 | 
						manager.podControl = &fakePodControl
 | 
				
			||||||
@@ -472,7 +472,7 @@ func TestSyncJobUpdateRequeue(t *testing.T) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestJobPodLookup(t *testing.T) {
 | 
					func TestJobPodLookup(t *testing.T) {
 | 
				
			||||||
	clientset := clientset.NewForConfigOrDie(&client.Config{Host: "", ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
						clientset := clientset.NewForConfigOrDie(&restclient.Config{Host: "", ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
				
			||||||
	manager := NewJobController(clientset, controller.NoResyncPeriodFunc)
 | 
						manager := NewJobController(clientset, controller.NoResyncPeriodFunc)
 | 
				
			||||||
	manager.podStoreSynced = alwaysReady
 | 
						manager.podStoreSynced = alwaysReady
 | 
				
			||||||
	testCases := []struct {
 | 
						testCases := []struct {
 | 
				
			||||||
@@ -562,7 +562,7 @@ func (fe FakeJobExpectations) SatisfiedExpectations(controllerKey string) bool {
 | 
				
			|||||||
// TestSyncJobExpectations tests that a pod cannot sneak in between counting active pods
 | 
					// TestSyncJobExpectations tests that a pod cannot sneak in between counting active pods
 | 
				
			||||||
// and checking expectations.
 | 
					// and checking expectations.
 | 
				
			||||||
func TestSyncJobExpectations(t *testing.T) {
 | 
					func TestSyncJobExpectations(t *testing.T) {
 | 
				
			||||||
	clientset := clientset.NewForConfigOrDie(&client.Config{Host: "", ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
						clientset := clientset.NewForConfigOrDie(&restclient.Config{Host: "", ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
				
			||||||
	manager := NewJobController(clientset, controller.NoResyncPeriodFunc)
 | 
						manager := NewJobController(clientset, controller.NoResyncPeriodFunc)
 | 
				
			||||||
	fakePodControl := controller.FakePodControl{}
 | 
						fakePodControl := controller.FakePodControl{}
 | 
				
			||||||
	manager.podControl = &fakePodControl
 | 
						manager.podControl = &fakePodControl
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -32,7 +32,6 @@ import (
 | 
				
			|||||||
	clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
 | 
						clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/record"
 | 
						"k8s.io/kubernetes/pkg/client/record"
 | 
				
			||||||
	unversionedcore "k8s.io/kubernetes/pkg/client/typed/generated/core/unversioned"
 | 
						unversionedcore "k8s.io/kubernetes/pkg/client/typed/generated/core/unversioned"
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/cloudprovider"
 | 
						"k8s.io/kubernetes/pkg/cloudprovider"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/controller"
 | 
						"k8s.io/kubernetes/pkg/controller"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/controller/framework"
 | 
						"k8s.io/kubernetes/pkg/controller/framework"
 | 
				
			||||||
@@ -727,7 +726,7 @@ func (nc *NodeController) tryUpdateNodeStatus(node *api.Node) (time.Duration, ap
 | 
				
			|||||||
// returns true if the provided node still has pods scheduled to it, or an error if
 | 
					// returns true if the provided node still has pods scheduled to it, or an error if
 | 
				
			||||||
// the server could not be contacted.
 | 
					// the server could not be contacted.
 | 
				
			||||||
func (nc *NodeController) hasPods(nodeName string) (bool, error) {
 | 
					func (nc *NodeController) hasPods(nodeName string) (bool, error) {
 | 
				
			||||||
	selector := fields.OneTermEqualSelector(client.PodHost, nodeName)
 | 
						selector := fields.OneTermEqualSelector(api.PodHostField, nodeName)
 | 
				
			||||||
	options := api.ListOptions{FieldSelector: selector}
 | 
						options := api.ListOptions{FieldSelector: selector}
 | 
				
			||||||
	pods, err := nc.kubeClient.Core().Pods(api.NamespaceAll).List(options)
 | 
						pods, err := nc.kubeClient.Core().Pods(api.NamespaceAll).List(options)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
@@ -762,7 +761,7 @@ func (nc *NodeController) cancelPodEviction(nodeName string) bool {
 | 
				
			|||||||
// if any pods were deleted.
 | 
					// if any pods were deleted.
 | 
				
			||||||
func (nc *NodeController) deletePods(nodeName string) (bool, error) {
 | 
					func (nc *NodeController) deletePods(nodeName string) (bool, error) {
 | 
				
			||||||
	remaining := false
 | 
						remaining := false
 | 
				
			||||||
	selector := fields.OneTermEqualSelector(client.PodHost, nodeName)
 | 
						selector := fields.OneTermEqualSelector(api.PodHostField, nodeName)
 | 
				
			||||||
	options := api.ListOptions{FieldSelector: selector}
 | 
						options := api.ListOptions{FieldSelector: selector}
 | 
				
			||||||
	pods, err := nc.kubeClient.Core().Pods(api.NamespaceAll).List(options)
 | 
						pods, err := nc.kubeClient.Core().Pods(api.NamespaceAll).List(options)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
@@ -802,7 +801,7 @@ func (nc *NodeController) deletePods(nodeName string) (bool, error) {
 | 
				
			|||||||
// return true if success
 | 
					// return true if success
 | 
				
			||||||
func (nc *NodeController) markAllPodsNotReady(nodeName string) error {
 | 
					func (nc *NodeController) markAllPodsNotReady(nodeName string) error {
 | 
				
			||||||
	glog.V(2).Infof("Update ready status of pods on node [%v]", nodeName)
 | 
						glog.V(2).Infof("Update ready status of pods on node [%v]", nodeName)
 | 
				
			||||||
	opts := api.ListOptions{FieldSelector: fields.OneTermEqualSelector(client.PodHost, nodeName)}
 | 
						opts := api.ListOptions{FieldSelector: fields.OneTermEqualSelector(api.PodHostField, nodeName)}
 | 
				
			||||||
	pods, err := nc.kubeClient.Core().Pods(api.NamespaceAll).List(opts)
 | 
						pods, err := nc.kubeClient.Core().Pods(api.NamespaceAll).List(opts)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return err
 | 
							return err
 | 
				
			||||||
@@ -843,7 +842,7 @@ func (nc *NodeController) terminatePods(nodeName string, since time.Time) (bool,
 | 
				
			|||||||
	// have we deleted all pods
 | 
						// have we deleted all pods
 | 
				
			||||||
	complete := true
 | 
						complete := true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	selector := fields.OneTermEqualSelector(client.PodHost, nodeName)
 | 
						selector := fields.OneTermEqualSelector(api.PodHostField, nodeName)
 | 
				
			||||||
	options := api.ListOptions{FieldSelector: selector}
 | 
						options := api.ListOptions{FieldSelector: selector}
 | 
				
			||||||
	pods, err := nc.kubeClient.Core().Pods(api.NamespaceAll).List(options)
 | 
						pods, err := nc.kubeClient.Core().Pods(api.NamespaceAll).List(options)
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,8 +28,8 @@ import (
 | 
				
			|||||||
	_ "k8s.io/kubernetes/pkg/apimachinery/registered"
 | 
						_ "k8s.io/kubernetes/pkg/apimachinery/registered"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/apis/extensions"
 | 
						"k8s.io/kubernetes/pkg/apis/extensions"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake"
 | 
						"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/testing/core"
 | 
						"k8s.io/kubernetes/pkg/client/testing/core"
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/unversioned/testclient"
 | 
						"k8s.io/kubernetes/pkg/client/unversioned/testclient"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/controller/podautoscaler/metrics"
 | 
						"k8s.io/kubernetes/pkg/controller/podautoscaler/metrics"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/runtime"
 | 
						"k8s.io/kubernetes/pkg/runtime"
 | 
				
			||||||
@@ -188,7 +188,7 @@ func (tc *testCase) prepareTestClient(t *testing.T) *fake.Clientset {
 | 
				
			|||||||
		return true, obj, nil
 | 
							return true, obj, nil
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	fakeClient.AddProxyReactor("services", func(action core.Action) (handled bool, ret client.ResponseWrapper, err error) {
 | 
						fakeClient.AddProxyReactor("services", func(action core.Action) (handled bool, ret restclient.ResponseWrapper, err error) {
 | 
				
			||||||
		timestamp := time.Now()
 | 
							timestamp := time.Now()
 | 
				
			||||||
		metrics := heapster.MetricResultList{}
 | 
							metrics := heapster.MetricResultList{}
 | 
				
			||||||
		for _, level := range tc.reportedLevels {
 | 
							for _, level := range tc.reportedLevels {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -27,8 +27,8 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/api/resource"
 | 
						"k8s.io/kubernetes/pkg/api/resource"
 | 
				
			||||||
	_ "k8s.io/kubernetes/pkg/apimachinery/registered"
 | 
						_ "k8s.io/kubernetes/pkg/apimachinery/registered"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake"
 | 
						"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/testing/core"
 | 
						"k8s.io/kubernetes/pkg/client/testing/core"
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/runtime"
 | 
						"k8s.io/kubernetes/pkg/runtime"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	heapster "k8s.io/heapster/api/v1/types"
 | 
						heapster "k8s.io/heapster/api/v1/types"
 | 
				
			||||||
@@ -94,7 +94,7 @@ func (tc *testCase) prepareTestClient(t *testing.T) *fake.Clientset {
 | 
				
			|||||||
		return true, obj, nil
 | 
							return true, obj, nil
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	fakeClient.AddProxyReactor("services", func(action core.Action) (handled bool, ret client.ResponseWrapper, err error) {
 | 
						fakeClient.AddProxyReactor("services", func(action core.Action) (handled bool, ret restclient.ResponseWrapper, err error) {
 | 
				
			||||||
		metrics := heapster.MetricResultList{}
 | 
							metrics := heapster.MetricResultList{}
 | 
				
			||||||
		var latestTimestamp time.Time
 | 
							var latestTimestamp time.Time
 | 
				
			||||||
		for _, reportedMetricPoints := range tc.reportedMetricsPoints {
 | 
							for _, reportedMetricPoints := range tc.reportedMetricsPoints {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -32,8 +32,8 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/client/cache"
 | 
						"k8s.io/kubernetes/pkg/client/cache"
 | 
				
			||||||
	clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
 | 
						clientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake"
 | 
						"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/testing/core"
 | 
						"k8s.io/kubernetes/pkg/client/testing/core"
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/unversioned/testclient"
 | 
						"k8s.io/kubernetes/pkg/client/unversioned/testclient"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/controller"
 | 
						"k8s.io/kubernetes/pkg/controller"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/runtime"
 | 
						"k8s.io/kubernetes/pkg/runtime"
 | 
				
			||||||
@@ -137,7 +137,7 @@ type serverResponse struct {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestSyncReplicaSetDoesNothing(t *testing.T) {
 | 
					func TestSyncReplicaSetDoesNothing(t *testing.T) {
 | 
				
			||||||
	client := clientset.NewForConfigOrDie(&client.Config{Host: "", ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
						client := clientset.NewForConfigOrDie(&restclient.Config{Host: "", ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
				
			||||||
	fakePodControl := controller.FakePodControl{}
 | 
						fakePodControl := controller.FakePodControl{}
 | 
				
			||||||
	manager := NewReplicaSetController(client, controller.NoResyncPeriodFunc, BurstReplicas, 0)
 | 
						manager := NewReplicaSetController(client, controller.NoResyncPeriodFunc, BurstReplicas, 0)
 | 
				
			||||||
	manager.podStoreSynced = alwaysReady
 | 
						manager.podStoreSynced = alwaysReady
 | 
				
			||||||
@@ -154,7 +154,7 @@ func TestSyncReplicaSetDoesNothing(t *testing.T) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestSyncReplicaSetDeletes(t *testing.T) {
 | 
					func TestSyncReplicaSetDeletes(t *testing.T) {
 | 
				
			||||||
	client := clientset.NewForConfigOrDie(&client.Config{Host: "", ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
						client := clientset.NewForConfigOrDie(&restclient.Config{Host: "", ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
				
			||||||
	fakePodControl := controller.FakePodControl{}
 | 
						fakePodControl := controller.FakePodControl{}
 | 
				
			||||||
	manager := NewReplicaSetController(client, controller.NoResyncPeriodFunc, BurstReplicas, 0)
 | 
						manager := NewReplicaSetController(client, controller.NoResyncPeriodFunc, BurstReplicas, 0)
 | 
				
			||||||
	manager.podStoreSynced = alwaysReady
 | 
						manager.podStoreSynced = alwaysReady
 | 
				
			||||||
@@ -171,7 +171,7 @@ func TestSyncReplicaSetDeletes(t *testing.T) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestDeleteFinalStateUnknown(t *testing.T) {
 | 
					func TestDeleteFinalStateUnknown(t *testing.T) {
 | 
				
			||||||
	client := clientset.NewForConfigOrDie(&client.Config{Host: "", ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
						client := clientset.NewForConfigOrDie(&restclient.Config{Host: "", ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
				
			||||||
	fakePodControl := controller.FakePodControl{}
 | 
						fakePodControl := controller.FakePodControl{}
 | 
				
			||||||
	manager := NewReplicaSetController(client, controller.NoResyncPeriodFunc, BurstReplicas, 0)
 | 
						manager := NewReplicaSetController(client, controller.NoResyncPeriodFunc, BurstReplicas, 0)
 | 
				
			||||||
	manager.podStoreSynced = alwaysReady
 | 
						manager.podStoreSynced = alwaysReady
 | 
				
			||||||
@@ -205,7 +205,7 @@ func TestDeleteFinalStateUnknown(t *testing.T) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestSyncReplicaSetCreates(t *testing.T) {
 | 
					func TestSyncReplicaSetCreates(t *testing.T) {
 | 
				
			||||||
	client := clientset.NewForConfigOrDie(&client.Config{Host: "", ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
						client := clientset.NewForConfigOrDie(&restclient.Config{Host: "", ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
				
			||||||
	manager := NewReplicaSetController(client, controller.NoResyncPeriodFunc, BurstReplicas, 0)
 | 
						manager := NewReplicaSetController(client, controller.NoResyncPeriodFunc, BurstReplicas, 0)
 | 
				
			||||||
	manager.podStoreSynced = alwaysReady
 | 
						manager.podStoreSynced = alwaysReady
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -228,7 +228,7 @@ func TestStatusUpdatesWithoutReplicasChange(t *testing.T) {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	testServer := httptest.NewServer(&fakeHandler)
 | 
						testServer := httptest.NewServer(&fakeHandler)
 | 
				
			||||||
	defer testServer.Close()
 | 
						defer testServer.Close()
 | 
				
			||||||
	client := clientset.NewForConfigOrDie(&client.Config{Host: testServer.URL, ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
						client := clientset.NewForConfigOrDie(&restclient.Config{Host: testServer.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
				
			||||||
	manager := NewReplicaSetController(client, controller.NoResyncPeriodFunc, BurstReplicas, 0)
 | 
						manager := NewReplicaSetController(client, controller.NoResyncPeriodFunc, BurstReplicas, 0)
 | 
				
			||||||
	manager.podStoreSynced = alwaysReady
 | 
						manager.podStoreSynced = alwaysReady
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -271,7 +271,7 @@ func TestControllerUpdateReplicas(t *testing.T) {
 | 
				
			|||||||
	testServer := httptest.NewServer(&fakeHandler)
 | 
						testServer := httptest.NewServer(&fakeHandler)
 | 
				
			||||||
	defer testServer.Close()
 | 
						defer testServer.Close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	client := clientset.NewForConfigOrDie(&client.Config{Host: testServer.URL, ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
						client := clientset.NewForConfigOrDie(&restclient.Config{Host: testServer.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
				
			||||||
	manager := NewReplicaSetController(client, controller.NoResyncPeriodFunc, BurstReplicas, 0)
 | 
						manager := NewReplicaSetController(client, controller.NoResyncPeriodFunc, BurstReplicas, 0)
 | 
				
			||||||
	manager.podStoreSynced = alwaysReady
 | 
						manager.podStoreSynced = alwaysReady
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -310,7 +310,7 @@ func TestSyncReplicaSetDormancy(t *testing.T) {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	testServer := httptest.NewServer(&fakeHandler)
 | 
						testServer := httptest.NewServer(&fakeHandler)
 | 
				
			||||||
	defer testServer.Close()
 | 
						defer testServer.Close()
 | 
				
			||||||
	client := clientset.NewForConfigOrDie(&client.Config{Host: testServer.URL, ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
						client := clientset.NewForConfigOrDie(&restclient.Config{Host: testServer.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	fakePodControl := controller.FakePodControl{}
 | 
						fakePodControl := controller.FakePodControl{}
 | 
				
			||||||
	manager := NewReplicaSetController(client, controller.NoResyncPeriodFunc, BurstReplicas, 0)
 | 
						manager := NewReplicaSetController(client, controller.NoResyncPeriodFunc, BurstReplicas, 0)
 | 
				
			||||||
@@ -360,7 +360,7 @@ func TestSyncReplicaSetDormancy(t *testing.T) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestPodControllerLookup(t *testing.T) {
 | 
					func TestPodControllerLookup(t *testing.T) {
 | 
				
			||||||
	manager := NewReplicaSetController(clientset.NewForConfigOrDie(&client.Config{Host: "", ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}}), controller.NoResyncPeriodFunc, BurstReplicas, 0)
 | 
						manager := NewReplicaSetController(clientset.NewForConfigOrDie(&restclient.Config{Host: "", ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}}), controller.NoResyncPeriodFunc, BurstReplicas, 0)
 | 
				
			||||||
	manager.podStoreSynced = alwaysReady
 | 
						manager.podStoreSynced = alwaysReady
 | 
				
			||||||
	testCases := []struct {
 | 
						testCases := []struct {
 | 
				
			||||||
		inRSs     []*extensions.ReplicaSet
 | 
							inRSs     []*extensions.ReplicaSet
 | 
				
			||||||
@@ -574,7 +574,7 @@ func TestControllerUpdateRequeue(t *testing.T) {
 | 
				
			|||||||
	testServer := httptest.NewServer(&fakeHandler)
 | 
						testServer := httptest.NewServer(&fakeHandler)
 | 
				
			||||||
	defer testServer.Close()
 | 
						defer testServer.Close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	client := clientset.NewForConfigOrDie(&client.Config{Host: testServer.URL, ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
						client := clientset.NewForConfigOrDie(&restclient.Config{Host: testServer.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
				
			||||||
	manager := NewReplicaSetController(client, controller.NoResyncPeriodFunc, BurstReplicas, 0)
 | 
						manager := NewReplicaSetController(client, controller.NoResyncPeriodFunc, BurstReplicas, 0)
 | 
				
			||||||
	manager.podStoreSynced = alwaysReady
 | 
						manager.podStoreSynced = alwaysReady
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -653,7 +653,7 @@ func TestControllerUpdateStatusWithFailure(t *testing.T) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func doTestControllerBurstReplicas(t *testing.T, burstReplicas, numReplicas int) {
 | 
					func doTestControllerBurstReplicas(t *testing.T, burstReplicas, numReplicas int) {
 | 
				
			||||||
	client := clientset.NewForConfigOrDie(&client.Config{Host: "", ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
						client := clientset.NewForConfigOrDie(&restclient.Config{Host: "", ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
				
			||||||
	fakePodControl := controller.FakePodControl{}
 | 
						fakePodControl := controller.FakePodControl{}
 | 
				
			||||||
	manager := NewReplicaSetController(client, controller.NoResyncPeriodFunc, burstReplicas, 0)
 | 
						manager := NewReplicaSetController(client, controller.NoResyncPeriodFunc, burstReplicas, 0)
 | 
				
			||||||
	manager.podStoreSynced = alwaysReady
 | 
						manager.podStoreSynced = alwaysReady
 | 
				
			||||||
@@ -775,7 +775,7 @@ func (fe FakeRSExpectations) SatisfiedExpectations(controllerKey string) bool {
 | 
				
			|||||||
// TestRSSyncExpectations tests that a pod cannot sneak in between counting active pods
 | 
					// TestRSSyncExpectations tests that a pod cannot sneak in between counting active pods
 | 
				
			||||||
// and checking expectations.
 | 
					// and checking expectations.
 | 
				
			||||||
func TestRSSyncExpectations(t *testing.T) {
 | 
					func TestRSSyncExpectations(t *testing.T) {
 | 
				
			||||||
	client := clientset.NewForConfigOrDie(&client.Config{Host: "", ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
						client := clientset.NewForConfigOrDie(&restclient.Config{Host: "", ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
				
			||||||
	fakePodControl := controller.FakePodControl{}
 | 
						fakePodControl := controller.FakePodControl{}
 | 
				
			||||||
	manager := NewReplicaSetController(client, controller.NoResyncPeriodFunc, 2, 0)
 | 
						manager := NewReplicaSetController(client, controller.NoResyncPeriodFunc, 2, 0)
 | 
				
			||||||
	manager.podStoreSynced = alwaysReady
 | 
						manager.podStoreSynced = alwaysReady
 | 
				
			||||||
@@ -801,7 +801,7 @@ func TestRSSyncExpectations(t *testing.T) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestDeleteControllerAndExpectations(t *testing.T) {
 | 
					func TestDeleteControllerAndExpectations(t *testing.T) {
 | 
				
			||||||
	client := clientset.NewForConfigOrDie(&client.Config{Host: "", ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
						client := clientset.NewForConfigOrDie(&restclient.Config{Host: "", ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
				
			||||||
	manager := NewReplicaSetController(client, controller.NoResyncPeriodFunc, 10, 0)
 | 
						manager := NewReplicaSetController(client, controller.NoResyncPeriodFunc, 10, 0)
 | 
				
			||||||
	manager.podStoreSynced = alwaysReady
 | 
						manager.podStoreSynced = alwaysReady
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -843,7 +843,7 @@ func TestDeleteControllerAndExpectations(t *testing.T) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestRSManagerNotReady(t *testing.T) {
 | 
					func TestRSManagerNotReady(t *testing.T) {
 | 
				
			||||||
	client := clientset.NewForConfigOrDie(&client.Config{Host: "", ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
						client := clientset.NewForConfigOrDie(&restclient.Config{Host: "", ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
				
			||||||
	fakePodControl := controller.FakePodControl{}
 | 
						fakePodControl := controller.FakePodControl{}
 | 
				
			||||||
	manager := NewReplicaSetController(client, controller.NoResyncPeriodFunc, 2, 0)
 | 
						manager := NewReplicaSetController(client, controller.NoResyncPeriodFunc, 2, 0)
 | 
				
			||||||
	manager.podControl = &fakePodControl
 | 
						manager.podControl = &fakePodControl
 | 
				
			||||||
@@ -880,7 +880,7 @@ func shuffle(controllers []*extensions.ReplicaSet) []*extensions.ReplicaSet {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestOverlappingRSs(t *testing.T) {
 | 
					func TestOverlappingRSs(t *testing.T) {
 | 
				
			||||||
	client := clientset.NewForConfigOrDie(&client.Config{Host: "", ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
						client := clientset.NewForConfigOrDie(&restclient.Config{Host: "", ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
				
			||||||
	labelMap := map[string]string{"foo": "bar"}
 | 
						labelMap := map[string]string{"foo": "bar"}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for i := 0; i < 5; i++ {
 | 
						for i := 0; i < 5; i++ {
 | 
				
			||||||
@@ -912,7 +912,7 @@ func TestOverlappingRSs(t *testing.T) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestDeletionTimestamp(t *testing.T) {
 | 
					func TestDeletionTimestamp(t *testing.T) {
 | 
				
			||||||
	c := clientset.NewForConfigOrDie(&client.Config{Host: "", ContentConfig: client.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
						c := clientset.NewForConfigOrDie(&restclient.Config{Host: "", ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}})
 | 
				
			||||||
	labelMap := map[string]string{"foo": "bar"}
 | 
						labelMap := map[string]string{"foo": "bar"}
 | 
				
			||||||
	manager := NewReplicaSetController(c, controller.NoResyncPeriodFunc, 10, 0)
 | 
						manager := NewReplicaSetController(c, controller.NoResyncPeriodFunc, 10, 0)
 | 
				
			||||||
	manager.podStoreSynced = alwaysReady
 | 
						manager.podStoreSynced = alwaysReady
 | 
				
			||||||
 
 | 
				
			|||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user