mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-03 19:58:17 +00:00 
			
		
		
		
	changes in federation controllers
This commit is contained in:
		@@ -26,7 +26,7 @@ import (
 | 
				
			|||||||
	"net/http/pprof"
 | 
						"net/http/pprof"
 | 
				
			||||||
	"strconv"
 | 
						"strconv"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	federationclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_4"
 | 
						federationclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5"
 | 
				
			||||||
	"k8s.io/kubernetes/federation/cmd/federation-controller-manager/app/options"
 | 
						"k8s.io/kubernetes/federation/cmd/federation-controller-manager/app/options"
 | 
				
			||||||
	"k8s.io/kubernetes/federation/pkg/dnsprovider"
 | 
						"k8s.io/kubernetes/federation/pkg/dnsprovider"
 | 
				
			||||||
	clustercontroller "k8s.io/kubernetes/federation/pkg/federation-controller/cluster"
 | 
						clustercontroller "k8s.io/kubernetes/federation/pkg/federation-controller/cluster"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,7 +23,7 @@ import (
 | 
				
			|||||||
	"github.com/golang/glog"
 | 
						"github.com/golang/glog"
 | 
				
			||||||
	federation_v1beta1 "k8s.io/kubernetes/federation/apis/federation/v1beta1"
 | 
						federation_v1beta1 "k8s.io/kubernetes/federation/apis/federation/v1beta1"
 | 
				
			||||||
	cluster_cache "k8s.io/kubernetes/federation/client/cache"
 | 
						cluster_cache "k8s.io/kubernetes/federation/client/cache"
 | 
				
			||||||
	federationclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_4"
 | 
						federationclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/cache"
 | 
						"k8s.io/kubernetes/pkg/client/cache"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/controller"
 | 
						"k8s.io/kubernetes/pkg/controller"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,7 +24,7 @@ import (
 | 
				
			|||||||
	"testing"
 | 
						"testing"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	federation_v1beta1 "k8s.io/kubernetes/federation/apis/federation/v1beta1"
 | 
						federation_v1beta1 "k8s.io/kubernetes/federation/apis/federation/v1beta1"
 | 
				
			||||||
	federationclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_4"
 | 
						federationclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5"
 | 
				
			||||||
	controller_util "k8s.io/kubernetes/federation/pkg/federation-controller/util"
 | 
						controller_util "k8s.io/kubernetes/federation/pkg/federation-controller/util"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/testapi"
 | 
						"k8s.io/kubernetes/pkg/api/testapi"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/unversioned"
 | 
						"k8s.io/kubernetes/pkg/api/unversioned"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,14 +23,14 @@ import (
 | 
				
			|||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	federation_api "k8s.io/kubernetes/federation/apis/federation/v1beta1"
 | 
						federation_api "k8s.io/kubernetes/federation/apis/federation/v1beta1"
 | 
				
			||||||
	federation_release_1_4 "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_4"
 | 
						federationclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5"
 | 
				
			||||||
	"k8s.io/kubernetes/federation/pkg/federation-controller/util"
 | 
						"k8s.io/kubernetes/federation/pkg/federation-controller/util"
 | 
				
			||||||
	"k8s.io/kubernetes/federation/pkg/federation-controller/util/eventsink"
 | 
						"k8s.io/kubernetes/federation/pkg/federation-controller/util/eventsink"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/v1"
 | 
						"k8s.io/kubernetes/pkg/api/v1"
 | 
				
			||||||
	extensions_v1beta1 "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
 | 
						extensions_v1beta1 "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/cache"
 | 
						"k8s.io/kubernetes/pkg/client/cache"
 | 
				
			||||||
	kube_release_1_4 "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_4"
 | 
						kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/record"
 | 
						"k8s.io/kubernetes/pkg/client/record"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/controller"
 | 
						"k8s.io/kubernetes/pkg/controller"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/conversion"
 | 
						"k8s.io/kubernetes/pkg/conversion"
 | 
				
			||||||
@@ -83,7 +83,7 @@ type IngressController struct {
 | 
				
			|||||||
	ingressInformerController cache.ControllerInterface
 | 
						ingressInformerController cache.ControllerInterface
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Client to federated api server.
 | 
						// Client to federated api server.
 | 
				
			||||||
	federatedApiClient federation_release_1_4.Interface
 | 
						federatedApiClient federationclientset.Interface
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Backoff manager for ingresses
 | 
						// Backoff manager for ingresses
 | 
				
			||||||
	ingressBackoff *flowcontrol.Backoff
 | 
						ingressBackoff *flowcontrol.Backoff
 | 
				
			||||||
@@ -101,7 +101,7 @@ type IngressController struct {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewIngressController returns a new ingress controller
 | 
					// NewIngressController returns a new ingress controller
 | 
				
			||||||
func NewIngressController(client federation_release_1_4.Interface) *IngressController {
 | 
					func NewIngressController(client federationclientset.Interface) *IngressController {
 | 
				
			||||||
	glog.V(4).Infof("->NewIngressController V(4)")
 | 
						glog.V(4).Infof("->NewIngressController V(4)")
 | 
				
			||||||
	broadcaster := record.NewBroadcaster()
 | 
						broadcaster := record.NewBroadcaster()
 | 
				
			||||||
	broadcaster.StartRecordingToSink(eventsink.NewFederatedEventSink(client))
 | 
						broadcaster.StartRecordingToSink(eventsink.NewFederatedEventSink(client))
 | 
				
			||||||
@@ -144,7 +144,7 @@ func NewIngressController(client federation_release_1_4.Interface) *IngressContr
 | 
				
			|||||||
	// Federated informer on ingresses in members of federation.
 | 
						// Federated informer on ingresses in members of federation.
 | 
				
			||||||
	ic.ingressFederatedInformer = util.NewFederatedInformer(
 | 
						ic.ingressFederatedInformer = util.NewFederatedInformer(
 | 
				
			||||||
		client,
 | 
							client,
 | 
				
			||||||
		func(cluster *federation_api.Cluster, targetClient kube_release_1_4.Interface) (cache.Store, cache.ControllerInterface) {
 | 
							func(cluster *federation_api.Cluster, targetClient kubeclientset.Interface) (cache.Store, cache.ControllerInterface) {
 | 
				
			||||||
			return cache.NewInformer(
 | 
								return cache.NewInformer(
 | 
				
			||||||
				&cache.ListWatch{
 | 
									&cache.ListWatch{
 | 
				
			||||||
					ListFunc: func(options api.ListOptions) (pkg_runtime.Object, error) {
 | 
										ListFunc: func(options api.ListOptions) (pkg_runtime.Object, error) {
 | 
				
			||||||
@@ -176,7 +176,7 @@ func NewIngressController(client federation_release_1_4.Interface) *IngressContr
 | 
				
			|||||||
	// Federated informer on configmaps for ingress controllers in members of the federation.
 | 
						// Federated informer on configmaps for ingress controllers in members of the federation.
 | 
				
			||||||
	ic.configMapFederatedInformer = util.NewFederatedInformer(
 | 
						ic.configMapFederatedInformer = util.NewFederatedInformer(
 | 
				
			||||||
		client,
 | 
							client,
 | 
				
			||||||
		func(cluster *federation_api.Cluster, targetClient kube_release_1_4.Interface) (cache.Store, cache.ControllerInterface) {
 | 
							func(cluster *federation_api.Cluster, targetClient kubeclientset.Interface) (cache.Store, cache.ControllerInterface) {
 | 
				
			||||||
			glog.V(4).Infof("Returning new informer for cluster %q", cluster.Name)
 | 
								glog.V(4).Infof("Returning new informer for cluster %q", cluster.Name)
 | 
				
			||||||
			return cache.NewInformer(
 | 
								return cache.NewInformer(
 | 
				
			||||||
				&cache.ListWatch{
 | 
									&cache.ListWatch{
 | 
				
			||||||
@@ -213,7 +213,7 @@ func NewIngressController(client federation_release_1_4.Interface) *IngressContr
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	// Federated ingress updater along with Create/Update/Delete operations.
 | 
						// Federated ingress updater along with Create/Update/Delete operations.
 | 
				
			||||||
	ic.federatedIngressUpdater = util.NewFederatedUpdater(ic.ingressFederatedInformer,
 | 
						ic.federatedIngressUpdater = util.NewFederatedUpdater(ic.ingressFederatedInformer,
 | 
				
			||||||
		func(client kube_release_1_4.Interface, obj pkg_runtime.Object) error {
 | 
							func(client kubeclientset.Interface, obj pkg_runtime.Object) error {
 | 
				
			||||||
			ingress := obj.(*extensions_v1beta1.Ingress)
 | 
								ingress := obj.(*extensions_v1beta1.Ingress)
 | 
				
			||||||
			glog.V(4).Infof("Attempting to create Ingress: %v", ingress)
 | 
								glog.V(4).Infof("Attempting to create Ingress: %v", ingress)
 | 
				
			||||||
			_, err := client.Extensions().Ingresses(ingress.Namespace).Create(ingress)
 | 
								_, err := client.Extensions().Ingresses(ingress.Namespace).Create(ingress)
 | 
				
			||||||
@@ -224,7 +224,7 @@ func NewIngressController(client federation_release_1_4.Interface) *IngressContr
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
			return err
 | 
								return err
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		func(client kube_release_1_4.Interface, obj pkg_runtime.Object) error {
 | 
							func(client kubeclientset.Interface, obj pkg_runtime.Object) error {
 | 
				
			||||||
			ingress := obj.(*extensions_v1beta1.Ingress)
 | 
								ingress := obj.(*extensions_v1beta1.Ingress)
 | 
				
			||||||
			glog.V(4).Infof("Attempting to update Ingress: %v", ingress)
 | 
								glog.V(4).Infof("Attempting to update Ingress: %v", ingress)
 | 
				
			||||||
			_, err := client.Extensions().Ingresses(ingress.Namespace).Update(ingress)
 | 
								_, err := client.Extensions().Ingresses(ingress.Namespace).Update(ingress)
 | 
				
			||||||
@@ -235,7 +235,7 @@ func NewIngressController(client federation_release_1_4.Interface) *IngressContr
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
			return err
 | 
								return err
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		func(client kube_release_1_4.Interface, obj pkg_runtime.Object) error {
 | 
							func(client kubeclientset.Interface, obj pkg_runtime.Object) error {
 | 
				
			||||||
			ingress := obj.(*extensions_v1beta1.Ingress)
 | 
								ingress := obj.(*extensions_v1beta1.Ingress)
 | 
				
			||||||
			glog.V(4).Infof("Attempting to delete Ingress: %v", ingress)
 | 
								glog.V(4).Infof("Attempting to delete Ingress: %v", ingress)
 | 
				
			||||||
			err := client.Extensions().Ingresses(ingress.Namespace).Delete(ingress.Name, &api.DeleteOptions{})
 | 
								err := client.Extensions().Ingresses(ingress.Namespace).Delete(ingress.Name, &api.DeleteOptions{})
 | 
				
			||||||
@@ -244,14 +244,14 @@ func NewIngressController(client federation_release_1_4.Interface) *IngressContr
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	// Federated configmap updater along with Create/Update/Delete operations.  Only Update should ever be called.
 | 
						// Federated configmap updater along with Create/Update/Delete operations.  Only Update should ever be called.
 | 
				
			||||||
	ic.federatedConfigMapUpdater = util.NewFederatedUpdater(ic.configMapFederatedInformer,
 | 
						ic.federatedConfigMapUpdater = util.NewFederatedUpdater(ic.configMapFederatedInformer,
 | 
				
			||||||
		func(client kube_release_1_4.Interface, obj pkg_runtime.Object) error {
 | 
							func(client kubeclientset.Interface, obj pkg_runtime.Object) error {
 | 
				
			||||||
			configMap := obj.(*v1.ConfigMap)
 | 
								configMap := obj.(*v1.ConfigMap)
 | 
				
			||||||
			configMapName := types.NamespacedName{Name: configMap.Name, Namespace: configMap.Namespace}
 | 
								configMapName := types.NamespacedName{Name: configMap.Name, Namespace: configMap.Namespace}
 | 
				
			||||||
			glog.Errorf("Internal error: Incorrectly attempting to create ConfigMap: %q", configMapName)
 | 
								glog.Errorf("Internal error: Incorrectly attempting to create ConfigMap: %q", configMapName)
 | 
				
			||||||
			_, err := client.Core().ConfigMaps(configMap.Namespace).Create(configMap)
 | 
								_, err := client.Core().ConfigMaps(configMap.Namespace).Create(configMap)
 | 
				
			||||||
			return err
 | 
								return err
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		func(client kube_release_1_4.Interface, obj pkg_runtime.Object) error {
 | 
							func(client kubeclientset.Interface, obj pkg_runtime.Object) error {
 | 
				
			||||||
			configMap := obj.(*v1.ConfigMap)
 | 
								configMap := obj.(*v1.ConfigMap)
 | 
				
			||||||
			configMapName := types.NamespacedName{Name: configMap.Name, Namespace: configMap.Namespace}
 | 
								configMapName := types.NamespacedName{Name: configMap.Name, Namespace: configMap.Namespace}
 | 
				
			||||||
			glog.V(4).Infof("Attempting to update ConfigMap: %v", configMap)
 | 
								glog.V(4).Infof("Attempting to update ConfigMap: %v", configMap)
 | 
				
			||||||
@@ -263,7 +263,7 @@ func NewIngressController(client federation_release_1_4.Interface) *IngressContr
 | 
				
			|||||||
			}
 | 
								}
 | 
				
			||||||
			return err
 | 
								return err
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		func(client kube_release_1_4.Interface, obj pkg_runtime.Object) error {
 | 
							func(client kubeclientset.Interface, obj pkg_runtime.Object) error {
 | 
				
			||||||
			configMap := obj.(*v1.ConfigMap)
 | 
								configMap := obj.(*v1.ConfigMap)
 | 
				
			||||||
			configMapName := types.NamespacedName{Name: configMap.Name, Namespace: configMap.Namespace}
 | 
								configMapName := types.NamespacedName{Name: configMap.Name, Namespace: configMap.Namespace}
 | 
				
			||||||
			glog.Errorf("Internal error: Incorrectly attempting to delete ConfigMap: %q", configMapName)
 | 
								glog.Errorf("Internal error: Incorrectly attempting to delete ConfigMap: %q", configMapName)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,13 +23,13 @@ import (
 | 
				
			|||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	federation_api "k8s.io/kubernetes/federation/apis/federation/v1beta1"
 | 
						federation_api "k8s.io/kubernetes/federation/apis/federation/v1beta1"
 | 
				
			||||||
	fake_federation_release_1_4 "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_4/fake"
 | 
						fake_fedclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5/fake"
 | 
				
			||||||
	"k8s.io/kubernetes/federation/pkg/federation-controller/util"
 | 
						"k8s.io/kubernetes/federation/pkg/federation-controller/util"
 | 
				
			||||||
	. "k8s.io/kubernetes/federation/pkg/federation-controller/util/test"
 | 
						. "k8s.io/kubernetes/federation/pkg/federation-controller/util/test"
 | 
				
			||||||
	api_v1 "k8s.io/kubernetes/pkg/api/v1"
 | 
						api_v1 "k8s.io/kubernetes/pkg/api/v1"
 | 
				
			||||||
	extensions_v1beta1 "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
 | 
						extensions_v1beta1 "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
 | 
				
			||||||
	kube_release_1_4 "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_4"
 | 
						kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
 | 
				
			||||||
	fake_kube_release_1_4 "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_4/fake"
 | 
						fake_kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5/fake"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/runtime"
 | 
						"k8s.io/kubernetes/pkg/runtime"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/stretchr/testify/assert"
 | 
						"github.com/stretchr/testify/assert"
 | 
				
			||||||
@@ -45,7 +45,7 @@ func TestIngressController(t *testing.T) {
 | 
				
			|||||||
	cfg2 := NewConfigMap("bar") // Different UID from cfg1, so that we can check that they get reconciled.
 | 
						cfg2 := NewConfigMap("bar") // Different UID from cfg1, so that we can check that they get reconciled.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	t.Log("Creating fake infrastructure")
 | 
						t.Log("Creating fake infrastructure")
 | 
				
			||||||
	fedClient := &fake_federation_release_1_4.Clientset{}
 | 
						fedClient := &fake_fedclientset.Clientset{}
 | 
				
			||||||
	RegisterFakeList("clusters", &fedClient.Fake, &fakeClusterList)
 | 
						RegisterFakeList("clusters", &fedClient.Fake, &fakeClusterList)
 | 
				
			||||||
	RegisterFakeList("ingresses", &fedClient.Fake, &extensions_v1beta1.IngressList{Items: []extensions_v1beta1.Ingress{}})
 | 
						RegisterFakeList("ingresses", &fedClient.Fake, &extensions_v1beta1.IngressList{Items: []extensions_v1beta1.Ingress{}})
 | 
				
			||||||
	fedIngressWatch := RegisterFakeWatch("ingresses", &fedClient.Fake)
 | 
						fedIngressWatch := RegisterFakeWatch("ingresses", &fedClient.Fake)
 | 
				
			||||||
@@ -53,7 +53,7 @@ func TestIngressController(t *testing.T) {
 | 
				
			|||||||
	fedClusterUpdateChan := RegisterFakeCopyOnUpdate("clusters", &fedClient.Fake, clusterWatch)
 | 
						fedClusterUpdateChan := RegisterFakeCopyOnUpdate("clusters", &fedClient.Fake, clusterWatch)
 | 
				
			||||||
	fedIngressUpdateChan := RegisterFakeCopyOnUpdate("ingresses", &fedClient.Fake, fedIngressWatch)
 | 
						fedIngressUpdateChan := RegisterFakeCopyOnUpdate("ingresses", &fedClient.Fake, fedIngressWatch)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	cluster1Client := &fake_kube_release_1_4.Clientset{}
 | 
						cluster1Client := &fake_kubeclientset.Clientset{}
 | 
				
			||||||
	RegisterFakeList("ingresses", &cluster1Client.Fake, &extensions_v1beta1.IngressList{Items: []extensions_v1beta1.Ingress{}})
 | 
						RegisterFakeList("ingresses", &cluster1Client.Fake, &extensions_v1beta1.IngressList{Items: []extensions_v1beta1.Ingress{}})
 | 
				
			||||||
	RegisterFakeList("configmaps", &cluster1Client.Fake, &fakeConfigMapList1)
 | 
						RegisterFakeList("configmaps", &cluster1Client.Fake, &fakeConfigMapList1)
 | 
				
			||||||
	cluster1IngressWatch := RegisterFakeWatch("ingresses", &cluster1Client.Fake)
 | 
						cluster1IngressWatch := RegisterFakeWatch("ingresses", &cluster1Client.Fake)
 | 
				
			||||||
@@ -61,7 +61,7 @@ func TestIngressController(t *testing.T) {
 | 
				
			|||||||
	cluster1IngressCreateChan := RegisterFakeCopyOnCreate("ingresses", &cluster1Client.Fake, cluster1IngressWatch)
 | 
						cluster1IngressCreateChan := RegisterFakeCopyOnCreate("ingresses", &cluster1Client.Fake, cluster1IngressWatch)
 | 
				
			||||||
	cluster1IngressUpdateChan := RegisterFakeCopyOnUpdate("ingresses", &cluster1Client.Fake, cluster1IngressWatch)
 | 
						cluster1IngressUpdateChan := RegisterFakeCopyOnUpdate("ingresses", &cluster1Client.Fake, cluster1IngressWatch)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	cluster2Client := &fake_kube_release_1_4.Clientset{}
 | 
						cluster2Client := &fake_kubeclientset.Clientset{}
 | 
				
			||||||
	RegisterFakeList("ingresses", &cluster2Client.Fake, &extensions_v1beta1.IngressList{Items: []extensions_v1beta1.Ingress{}})
 | 
						RegisterFakeList("ingresses", &cluster2Client.Fake, &extensions_v1beta1.IngressList{Items: []extensions_v1beta1.Ingress{}})
 | 
				
			||||||
	RegisterFakeList("configmaps", &cluster2Client.Fake, &fakeConfigMapList2)
 | 
						RegisterFakeList("configmaps", &cluster2Client.Fake, &fakeConfigMapList2)
 | 
				
			||||||
	cluster2IngressWatch := RegisterFakeWatch("ingresses", &cluster2Client.Fake)
 | 
						cluster2IngressWatch := RegisterFakeWatch("ingresses", &cluster2Client.Fake)
 | 
				
			||||||
@@ -69,7 +69,7 @@ func TestIngressController(t *testing.T) {
 | 
				
			|||||||
	cluster2IngressCreateChan := RegisterFakeCopyOnCreate("ingresses", &cluster2Client.Fake, cluster2IngressWatch)
 | 
						cluster2IngressCreateChan := RegisterFakeCopyOnCreate("ingresses", &cluster2Client.Fake, cluster2IngressWatch)
 | 
				
			||||||
	cluster2ConfigMapUpdateChan := RegisterFakeCopyOnUpdate("configmaps", &cluster2Client.Fake, cluster2ConfigMapWatch)
 | 
						cluster2ConfigMapUpdateChan := RegisterFakeCopyOnUpdate("configmaps", &cluster2Client.Fake, cluster2ConfigMapWatch)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	clientFactoryFunc := func(cluster *federation_api.Cluster) (kube_release_1_4.Interface, error) {
 | 
						clientFactoryFunc := func(cluster *federation_api.Cluster) (kubeclientset.Interface, error) {
 | 
				
			||||||
		switch cluster.Name {
 | 
							switch cluster.Name {
 | 
				
			||||||
		case cluster1.Name:
 | 
							case cluster1.Name:
 | 
				
			||||||
			return cluster1Client, nil
 | 
								return cluster1Client, nil
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -22,14 +22,14 @@ import (
 | 
				
			|||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	federation_api "k8s.io/kubernetes/federation/apis/federation/v1beta1"
 | 
						federation_api "k8s.io/kubernetes/federation/apis/federation/v1beta1"
 | 
				
			||||||
	federation_release_1_4 "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_4"
 | 
						federationclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5"
 | 
				
			||||||
	"k8s.io/kubernetes/federation/pkg/federation-controller/util"
 | 
						"k8s.io/kubernetes/federation/pkg/federation-controller/util"
 | 
				
			||||||
	"k8s.io/kubernetes/federation/pkg/federation-controller/util/eventsink"
 | 
						"k8s.io/kubernetes/federation/pkg/federation-controller/util/eventsink"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/errors"
 | 
						"k8s.io/kubernetes/pkg/api/errors"
 | 
				
			||||||
	api_v1 "k8s.io/kubernetes/pkg/api/v1"
 | 
						api_v1 "k8s.io/kubernetes/pkg/api/v1"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/cache"
 | 
						"k8s.io/kubernetes/pkg/client/cache"
 | 
				
			||||||
	kube_release_1_4 "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_4"
 | 
						kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/record"
 | 
						"k8s.io/kubernetes/pkg/client/record"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/controller"
 | 
						"k8s.io/kubernetes/pkg/controller"
 | 
				
			||||||
	pkg_runtime "k8s.io/kubernetes/pkg/runtime"
 | 
						pkg_runtime "k8s.io/kubernetes/pkg/runtime"
 | 
				
			||||||
@@ -64,7 +64,7 @@ type NamespaceController struct {
 | 
				
			|||||||
	namespaceInformerController cache.ControllerInterface
 | 
						namespaceInformerController cache.ControllerInterface
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Client to federated api server.
 | 
						// Client to federated api server.
 | 
				
			||||||
	federatedApiClient federation_release_1_4.Interface
 | 
						federatedApiClient federationclientset.Interface
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Backoff manager for namespaces
 | 
						// Backoff manager for namespaces
 | 
				
			||||||
	namespaceBackoff *flowcontrol.Backoff
 | 
						namespaceBackoff *flowcontrol.Backoff
 | 
				
			||||||
@@ -79,7 +79,7 @@ type NamespaceController struct {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewNamespaceController returns a new namespace controller
 | 
					// NewNamespaceController returns a new namespace controller
 | 
				
			||||||
func NewNamespaceController(client federation_release_1_4.Interface) *NamespaceController {
 | 
					func NewNamespaceController(client federationclientset.Interface) *NamespaceController {
 | 
				
			||||||
	broadcaster := record.NewBroadcaster()
 | 
						broadcaster := record.NewBroadcaster()
 | 
				
			||||||
	broadcaster.StartRecordingToSink(eventsink.NewFederatedEventSink(client))
 | 
						broadcaster.StartRecordingToSink(eventsink.NewFederatedEventSink(client))
 | 
				
			||||||
	recorder := broadcaster.NewRecorder(api.EventSource{Component: "federated-namespace-controller"})
 | 
						recorder := broadcaster.NewRecorder(api.EventSource{Component: "federated-namespace-controller"})
 | 
				
			||||||
@@ -115,7 +115,7 @@ func NewNamespaceController(client federation_release_1_4.Interface) *NamespaceC
 | 
				
			|||||||
	// Federated informer on namespaces in members of federation.
 | 
						// Federated informer on namespaces in members of federation.
 | 
				
			||||||
	nc.namespaceFederatedInformer = util.NewFederatedInformer(
 | 
						nc.namespaceFederatedInformer = util.NewFederatedInformer(
 | 
				
			||||||
		client,
 | 
							client,
 | 
				
			||||||
		func(cluster *federation_api.Cluster, targetClient kube_release_1_4.Interface) (cache.Store, cache.ControllerInterface) {
 | 
							func(cluster *federation_api.Cluster, targetClient kubeclientset.Interface) (cache.Store, cache.ControllerInterface) {
 | 
				
			||||||
			return cache.NewInformer(
 | 
								return cache.NewInformer(
 | 
				
			||||||
				&cache.ListWatch{
 | 
									&cache.ListWatch{
 | 
				
			||||||
					ListFunc: func(options api.ListOptions) (pkg_runtime.Object, error) {
 | 
										ListFunc: func(options api.ListOptions) (pkg_runtime.Object, error) {
 | 
				
			||||||
@@ -144,17 +144,17 @@ func NewNamespaceController(client federation_release_1_4.Interface) *NamespaceC
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	// Federated updeater along with Create/Update/Delete operations.
 | 
						// Federated updeater along with Create/Update/Delete operations.
 | 
				
			||||||
	nc.federatedUpdater = util.NewFederatedUpdater(nc.namespaceFederatedInformer,
 | 
						nc.federatedUpdater = util.NewFederatedUpdater(nc.namespaceFederatedInformer,
 | 
				
			||||||
		func(client kube_release_1_4.Interface, obj pkg_runtime.Object) error {
 | 
							func(client kubeclientset.Interface, obj pkg_runtime.Object) error {
 | 
				
			||||||
			namespace := obj.(*api_v1.Namespace)
 | 
								namespace := obj.(*api_v1.Namespace)
 | 
				
			||||||
			_, err := client.Core().Namespaces().Create(namespace)
 | 
								_, err := client.Core().Namespaces().Create(namespace)
 | 
				
			||||||
			return err
 | 
								return err
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		func(client kube_release_1_4.Interface, obj pkg_runtime.Object) error {
 | 
							func(client kubeclientset.Interface, obj pkg_runtime.Object) error {
 | 
				
			||||||
			namespace := obj.(*api_v1.Namespace)
 | 
								namespace := obj.(*api_v1.Namespace)
 | 
				
			||||||
			_, err := client.Core().Namespaces().Update(namespace)
 | 
								_, err := client.Core().Namespaces().Update(namespace)
 | 
				
			||||||
			return err
 | 
								return err
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		func(client kube_release_1_4.Interface, obj pkg_runtime.Object) error {
 | 
							func(client kubeclientset.Interface, obj pkg_runtime.Object) error {
 | 
				
			||||||
			namespace := obj.(*api_v1.Namespace)
 | 
								namespace := obj.(*api_v1.Namespace)
 | 
				
			||||||
			err := client.Core().Namespaces().Delete(namespace.Name, &api.DeleteOptions{})
 | 
								err := client.Core().Namespaces().Delete(namespace.Name, &api.DeleteOptions{})
 | 
				
			||||||
			return err
 | 
								return err
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -22,13 +22,13 @@ import (
 | 
				
			|||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	federation_api "k8s.io/kubernetes/federation/apis/federation/v1beta1"
 | 
						federation_api "k8s.io/kubernetes/federation/apis/federation/v1beta1"
 | 
				
			||||||
	fake_federation_release_1_4 "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_4/fake"
 | 
						fake_fedclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5/fake"
 | 
				
			||||||
	. "k8s.io/kubernetes/federation/pkg/federation-controller/util/test"
 | 
						. "k8s.io/kubernetes/federation/pkg/federation-controller/util/test"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/unversioned"
 | 
						"k8s.io/kubernetes/pkg/api/unversioned"
 | 
				
			||||||
	api_v1 "k8s.io/kubernetes/pkg/api/v1"
 | 
						api_v1 "k8s.io/kubernetes/pkg/api/v1"
 | 
				
			||||||
	extensionsv1 "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
 | 
						extensionsv1 "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
 | 
				
			||||||
	kube_release_1_4 "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_4"
 | 
						kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
 | 
				
			||||||
	fake_kube_release_1_4 "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_4/fake"
 | 
						fake_kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5/fake"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/testing/core"
 | 
						"k8s.io/kubernetes/pkg/client/testing/core"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/runtime"
 | 
						"k8s.io/kubernetes/pkg/runtime"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -45,19 +45,19 @@ func TestNamespaceController(t *testing.T) {
 | 
				
			|||||||
		},
 | 
							},
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	fakeClient := &fake_federation_release_1_4.Clientset{}
 | 
						fakeClient := &fake_fedclientset.Clientset{}
 | 
				
			||||||
	RegisterFakeList("clusters", &fakeClient.Fake, &federation_api.ClusterList{Items: []federation_api.Cluster{*cluster1}})
 | 
						RegisterFakeList("clusters", &fakeClient.Fake, &federation_api.ClusterList{Items: []federation_api.Cluster{*cluster1}})
 | 
				
			||||||
	RegisterFakeList("namespaces", &fakeClient.Fake, &api_v1.NamespaceList{Items: []api_v1.Namespace{}})
 | 
						RegisterFakeList("namespaces", &fakeClient.Fake, &api_v1.NamespaceList{Items: []api_v1.Namespace{}})
 | 
				
			||||||
	namespaceWatch := RegisterFakeWatch("namespaces", &fakeClient.Fake)
 | 
						namespaceWatch := RegisterFakeWatch("namespaces", &fakeClient.Fake)
 | 
				
			||||||
	clusterWatch := RegisterFakeWatch("clusters", &fakeClient.Fake)
 | 
						clusterWatch := RegisterFakeWatch("clusters", &fakeClient.Fake)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	cluster1Client := &fake_kube_release_1_4.Clientset{}
 | 
						cluster1Client := &fake_kubeclientset.Clientset{}
 | 
				
			||||||
	cluster1Watch := RegisterFakeWatch("namespaces", &cluster1Client.Fake)
 | 
						cluster1Watch := RegisterFakeWatch("namespaces", &cluster1Client.Fake)
 | 
				
			||||||
	RegisterFakeList("namespaces", &cluster1Client.Fake, &api_v1.NamespaceList{Items: []api_v1.Namespace{}})
 | 
						RegisterFakeList("namespaces", &cluster1Client.Fake, &api_v1.NamespaceList{Items: []api_v1.Namespace{}})
 | 
				
			||||||
	cluster1CreateChan := RegisterFakeCopyOnCreate("namespaces", &cluster1Client.Fake, cluster1Watch)
 | 
						cluster1CreateChan := RegisterFakeCopyOnCreate("namespaces", &cluster1Client.Fake, cluster1Watch)
 | 
				
			||||||
	cluster1UpdateChan := RegisterFakeCopyOnUpdate("namespaces", &cluster1Client.Fake, cluster1Watch)
 | 
						cluster1UpdateChan := RegisterFakeCopyOnUpdate("namespaces", &cluster1Client.Fake, cluster1Watch)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	cluster2Client := &fake_kube_release_1_4.Clientset{}
 | 
						cluster2Client := &fake_kubeclientset.Clientset{}
 | 
				
			||||||
	cluster2Watch := RegisterFakeWatch("namespaces", &cluster2Client.Fake)
 | 
						cluster2Watch := RegisterFakeWatch("namespaces", &cluster2Client.Fake)
 | 
				
			||||||
	RegisterFakeList("namespaces", &cluster2Client.Fake, &api_v1.NamespaceList{Items: []api_v1.Namespace{}})
 | 
						RegisterFakeList("namespaces", &cluster2Client.Fake, &api_v1.NamespaceList{Items: []api_v1.Namespace{}})
 | 
				
			||||||
	cluster2CreateChan := RegisterFakeCopyOnCreate("namespaces", &cluster2Client.Fake, cluster2Watch)
 | 
						cluster2CreateChan := RegisterFakeCopyOnCreate("namespaces", &cluster2Client.Fake, cluster2Watch)
 | 
				
			||||||
@@ -87,7 +87,7 @@ func TestNamespaceController(t *testing.T) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	namespaceController := NewNamespaceController(fakeClient)
 | 
						namespaceController := NewNamespaceController(fakeClient)
 | 
				
			||||||
	informer := ToFederatedInformerForTestOnly(namespaceController.namespaceFederatedInformer)
 | 
						informer := ToFederatedInformerForTestOnly(namespaceController.namespaceFederatedInformer)
 | 
				
			||||||
	informer.SetClientFactory(func(cluster *federation_api.Cluster) (kube_release_1_4.Interface, error) {
 | 
						informer.SetClientFactory(func(cluster *federation_api.Cluster) (kubeclientset.Interface, error) {
 | 
				
			||||||
		switch cluster.Name {
 | 
							switch cluster.Name {
 | 
				
			||||||
		case cluster1.Name:
 | 
							case cluster1.Name:
 | 
				
			||||||
			return cluster1Client, nil
 | 
								return cluster1Client, nil
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,7 +28,7 @@ import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	fed "k8s.io/kubernetes/federation/apis/federation"
 | 
						fed "k8s.io/kubernetes/federation/apis/federation"
 | 
				
			||||||
	fedv1 "k8s.io/kubernetes/federation/apis/federation/v1beta1"
 | 
						fedv1 "k8s.io/kubernetes/federation/apis/federation/v1beta1"
 | 
				
			||||||
	fedclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_4"
 | 
						fedclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5"
 | 
				
			||||||
	planner "k8s.io/kubernetes/federation/pkg/federation-controller/replicaset/planner"
 | 
						planner "k8s.io/kubernetes/federation/pkg/federation-controller/replicaset/planner"
 | 
				
			||||||
	fedutil "k8s.io/kubernetes/federation/pkg/federation-controller/util"
 | 
						fedutil "k8s.io/kubernetes/federation/pkg/federation-controller/util"
 | 
				
			||||||
	"k8s.io/kubernetes/federation/pkg/federation-controller/util/eventsink"
 | 
						"k8s.io/kubernetes/federation/pkg/federation-controller/util/eventsink"
 | 
				
			||||||
@@ -36,7 +36,7 @@ import (
 | 
				
			|||||||
	apiv1 "k8s.io/kubernetes/pkg/api/v1"
 | 
						apiv1 "k8s.io/kubernetes/pkg/api/v1"
 | 
				
			||||||
	extensionsv1 "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
 | 
						extensionsv1 "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/cache"
 | 
						"k8s.io/kubernetes/pkg/client/cache"
 | 
				
			||||||
	kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_4"
 | 
						kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/record"
 | 
						"k8s.io/kubernetes/pkg/client/record"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/controller"
 | 
						"k8s.io/kubernetes/pkg/controller"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/runtime"
 | 
						"k8s.io/kubernetes/pkg/runtime"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,13 +23,13 @@ import (
 | 
				
			|||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	fedv1 "k8s.io/kubernetes/federation/apis/federation/v1beta1"
 | 
						fedv1 "k8s.io/kubernetes/federation/apis/federation/v1beta1"
 | 
				
			||||||
	fedclientfake "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_4/fake"
 | 
						fedclientfake "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5/fake"
 | 
				
			||||||
	"k8s.io/kubernetes/federation/pkg/federation-controller/util/test"
 | 
						"k8s.io/kubernetes/federation/pkg/federation-controller/util/test"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/meta"
 | 
						"k8s.io/kubernetes/pkg/api/meta"
 | 
				
			||||||
	apiv1 "k8s.io/kubernetes/pkg/api/v1"
 | 
						apiv1 "k8s.io/kubernetes/pkg/api/v1"
 | 
				
			||||||
	extensionsv1 "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
 | 
						extensionsv1 "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
 | 
				
			||||||
	kube_release_1_4 "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_4"
 | 
						kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
 | 
				
			||||||
	kubeclientfake "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_4/fake"
 | 
						kubeclientfake "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5/fake"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/testing/core"
 | 
						"k8s.io/kubernetes/pkg/client/testing/core"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/watch"
 | 
						"k8s.io/kubernetes/pkg/watch"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -97,7 +97,7 @@ func TestReplicaSetController(t *testing.T) {
 | 
				
			|||||||
	kube2Podwatch := watch.NewFake()
 | 
						kube2Podwatch := watch.NewFake()
 | 
				
			||||||
	kube2clientset.PrependWatchReactor("pods", core.DefaultWatchReactor(kube2Podwatch, nil))
 | 
						kube2clientset.PrependWatchReactor("pods", core.DefaultWatchReactor(kube2Podwatch, nil))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	fedInformerClientFactory := func(cluster *fedv1.Cluster) (kube_release_1_4.Interface, error) {
 | 
						fedInformerClientFactory := func(cluster *fedv1.Cluster) (kubeclientset.Interface, error) {
 | 
				
			||||||
		switch cluster.Name {
 | 
							switch cluster.Name {
 | 
				
			||||||
		case "k8s-1":
 | 
							case "k8s-1":
 | 
				
			||||||
			return kube1clientset, nil
 | 
								return kube1clientset, nil
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,13 +21,13 @@ import (
 | 
				
			|||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	federation_api "k8s.io/kubernetes/federation/apis/federation/v1beta1"
 | 
						federation_api "k8s.io/kubernetes/federation/apis/federation/v1beta1"
 | 
				
			||||||
	federation_release_1_4 "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_4"
 | 
						federationclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5"
 | 
				
			||||||
	"k8s.io/kubernetes/federation/pkg/federation-controller/util"
 | 
						"k8s.io/kubernetes/federation/pkg/federation-controller/util"
 | 
				
			||||||
	"k8s.io/kubernetes/federation/pkg/federation-controller/util/eventsink"
 | 
						"k8s.io/kubernetes/federation/pkg/federation-controller/util/eventsink"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	api_v1 "k8s.io/kubernetes/pkg/api/v1"
 | 
						api_v1 "k8s.io/kubernetes/pkg/api/v1"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/cache"
 | 
						"k8s.io/kubernetes/pkg/client/cache"
 | 
				
			||||||
	kube_release_1_4 "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_4"
 | 
						kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/record"
 | 
						"k8s.io/kubernetes/pkg/client/record"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/controller"
 | 
						"k8s.io/kubernetes/pkg/controller"
 | 
				
			||||||
	pkg_runtime "k8s.io/kubernetes/pkg/runtime"
 | 
						pkg_runtime "k8s.io/kubernetes/pkg/runtime"
 | 
				
			||||||
@@ -61,7 +61,7 @@ type SecretController struct {
 | 
				
			|||||||
	secretInformerController cache.ControllerInterface
 | 
						secretInformerController cache.ControllerInterface
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Client to federated api server.
 | 
						// Client to federated api server.
 | 
				
			||||||
	federatedApiClient federation_release_1_4.Interface
 | 
						federatedApiClient federationclientset.Interface
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Backoff manager for secrets
 | 
						// Backoff manager for secrets
 | 
				
			||||||
	secretBackoff *flowcontrol.Backoff
 | 
						secretBackoff *flowcontrol.Backoff
 | 
				
			||||||
@@ -76,7 +76,7 @@ type SecretController struct {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// NewSecretController returns a new secret controller
 | 
					// NewSecretController returns a new secret controller
 | 
				
			||||||
func NewSecretController(client federation_release_1_4.Interface) *SecretController {
 | 
					func NewSecretController(client federationclientset.Interface) *SecretController {
 | 
				
			||||||
	broadcaster := record.NewBroadcaster()
 | 
						broadcaster := record.NewBroadcaster()
 | 
				
			||||||
	broadcaster.StartRecordingToSink(eventsink.NewFederatedEventSink(client))
 | 
						broadcaster.StartRecordingToSink(eventsink.NewFederatedEventSink(client))
 | 
				
			||||||
	recorder := broadcaster.NewRecorder(api.EventSource{Component: "federated-secrets-controller"})
 | 
						recorder := broadcaster.NewRecorder(api.EventSource{Component: "federated-secrets-controller"})
 | 
				
			||||||
@@ -112,7 +112,7 @@ func NewSecretController(client federation_release_1_4.Interface) *SecretControl
 | 
				
			|||||||
	// Federated informer on secrets in members of federation.
 | 
						// Federated informer on secrets in members of federation.
 | 
				
			||||||
	secretcontroller.secretFederatedInformer = util.NewFederatedInformer(
 | 
						secretcontroller.secretFederatedInformer = util.NewFederatedInformer(
 | 
				
			||||||
		client,
 | 
							client,
 | 
				
			||||||
		func(cluster *federation_api.Cluster, targetClient kube_release_1_4.Interface) (cache.Store, cache.ControllerInterface) {
 | 
							func(cluster *federation_api.Cluster, targetClient kubeclientset.Interface) (cache.Store, cache.ControllerInterface) {
 | 
				
			||||||
			return cache.NewInformer(
 | 
								return cache.NewInformer(
 | 
				
			||||||
				&cache.ListWatch{
 | 
									&cache.ListWatch{
 | 
				
			||||||
					ListFunc: func(options api.ListOptions) (pkg_runtime.Object, error) {
 | 
										ListFunc: func(options api.ListOptions) (pkg_runtime.Object, error) {
 | 
				
			||||||
@@ -143,17 +143,17 @@ func NewSecretController(client federation_release_1_4.Interface) *SecretControl
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	// Federated updeater along with Create/Update/Delete operations.
 | 
						// Federated updeater along with Create/Update/Delete operations.
 | 
				
			||||||
	secretcontroller.federatedUpdater = util.NewFederatedUpdater(secretcontroller.secretFederatedInformer,
 | 
						secretcontroller.federatedUpdater = util.NewFederatedUpdater(secretcontroller.secretFederatedInformer,
 | 
				
			||||||
		func(client kube_release_1_4.Interface, obj pkg_runtime.Object) error {
 | 
							func(client kubeclientset.Interface, obj pkg_runtime.Object) error {
 | 
				
			||||||
			secret := obj.(*api_v1.Secret)
 | 
								secret := obj.(*api_v1.Secret)
 | 
				
			||||||
			_, err := client.Core().Secrets(secret.Namespace).Create(secret)
 | 
								_, err := client.Core().Secrets(secret.Namespace).Create(secret)
 | 
				
			||||||
			return err
 | 
								return err
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		func(client kube_release_1_4.Interface, obj pkg_runtime.Object) error {
 | 
							func(client kubeclientset.Interface, obj pkg_runtime.Object) error {
 | 
				
			||||||
			secret := obj.(*api_v1.Secret)
 | 
								secret := obj.(*api_v1.Secret)
 | 
				
			||||||
			_, err := client.Core().Secrets(secret.Namespace).Update(secret)
 | 
								_, err := client.Core().Secrets(secret.Namespace).Update(secret)
 | 
				
			||||||
			return err
 | 
								return err
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		func(client kube_release_1_4.Interface, obj pkg_runtime.Object) error {
 | 
							func(client kubeclientset.Interface, obj pkg_runtime.Object) error {
 | 
				
			||||||
			secret := obj.(*api_v1.Secret)
 | 
								secret := obj.(*api_v1.Secret)
 | 
				
			||||||
			err := client.Core().Secrets(secret.Namespace).Delete(secret.Name, &api.DeleteOptions{})
 | 
								err := client.Core().Secrets(secret.Namespace).Delete(secret.Name, &api.DeleteOptions{})
 | 
				
			||||||
			return err
 | 
								return err
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,11 +23,11 @@ import (
 | 
				
			|||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	federation_api "k8s.io/kubernetes/federation/apis/federation/v1beta1"
 | 
						federation_api "k8s.io/kubernetes/federation/apis/federation/v1beta1"
 | 
				
			||||||
	fake_federation_release_1_4 "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_4/fake"
 | 
						fake_fedclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5/fake"
 | 
				
			||||||
	. "k8s.io/kubernetes/federation/pkg/federation-controller/util/test"
 | 
						. "k8s.io/kubernetes/federation/pkg/federation-controller/util/test"
 | 
				
			||||||
	api_v1 "k8s.io/kubernetes/pkg/api/v1"
 | 
						api_v1 "k8s.io/kubernetes/pkg/api/v1"
 | 
				
			||||||
	kube_release_1_4 "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_4"
 | 
						kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
 | 
				
			||||||
	fake_kube_release_1_4 "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_4/fake"
 | 
						fake_kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5/fake"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/runtime"
 | 
						"k8s.io/kubernetes/pkg/runtime"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/stretchr/testify/assert"
 | 
						"github.com/stretchr/testify/assert"
 | 
				
			||||||
@@ -37,26 +37,26 @@ func TestSecretController(t *testing.T) {
 | 
				
			|||||||
	cluster1 := NewCluster("cluster1", api_v1.ConditionTrue)
 | 
						cluster1 := NewCluster("cluster1", api_v1.ConditionTrue)
 | 
				
			||||||
	cluster2 := NewCluster("cluster2", api_v1.ConditionTrue)
 | 
						cluster2 := NewCluster("cluster2", api_v1.ConditionTrue)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	fakeClient := &fake_federation_release_1_4.Clientset{}
 | 
						fakeClient := &fake_fedclientset.Clientset{}
 | 
				
			||||||
	RegisterFakeList("clusters", &fakeClient.Fake, &federation_api.ClusterList{Items: []federation_api.Cluster{*cluster1}})
 | 
						RegisterFakeList("clusters", &fakeClient.Fake, &federation_api.ClusterList{Items: []federation_api.Cluster{*cluster1}})
 | 
				
			||||||
	RegisterFakeList("secrets", &fakeClient.Fake, &api_v1.SecretList{Items: []api_v1.Secret{}})
 | 
						RegisterFakeList("secrets", &fakeClient.Fake, &api_v1.SecretList{Items: []api_v1.Secret{}})
 | 
				
			||||||
	secretWatch := RegisterFakeWatch("secrets", &fakeClient.Fake)
 | 
						secretWatch := RegisterFakeWatch("secrets", &fakeClient.Fake)
 | 
				
			||||||
	clusterWatch := RegisterFakeWatch("clusters", &fakeClient.Fake)
 | 
						clusterWatch := RegisterFakeWatch("clusters", &fakeClient.Fake)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	cluster1Client := &fake_kube_release_1_4.Clientset{}
 | 
						cluster1Client := &fake_kubeclientset.Clientset{}
 | 
				
			||||||
	cluster1Watch := RegisterFakeWatch("secrets", &cluster1Client.Fake)
 | 
						cluster1Watch := RegisterFakeWatch("secrets", &cluster1Client.Fake)
 | 
				
			||||||
	RegisterFakeList("secrets", &cluster1Client.Fake, &api_v1.SecretList{Items: []api_v1.Secret{}})
 | 
						RegisterFakeList("secrets", &cluster1Client.Fake, &api_v1.SecretList{Items: []api_v1.Secret{}})
 | 
				
			||||||
	cluster1CreateChan := RegisterFakeCopyOnCreate("secrets", &cluster1Client.Fake, cluster1Watch)
 | 
						cluster1CreateChan := RegisterFakeCopyOnCreate("secrets", &cluster1Client.Fake, cluster1Watch)
 | 
				
			||||||
	cluster1UpdateChan := RegisterFakeCopyOnUpdate("secrets", &cluster1Client.Fake, cluster1Watch)
 | 
						cluster1UpdateChan := RegisterFakeCopyOnUpdate("secrets", &cluster1Client.Fake, cluster1Watch)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	cluster2Client := &fake_kube_release_1_4.Clientset{}
 | 
						cluster2Client := &fake_kubeclientset.Clientset{}
 | 
				
			||||||
	cluster2Watch := RegisterFakeWatch("secrets", &cluster2Client.Fake)
 | 
						cluster2Watch := RegisterFakeWatch("secrets", &cluster2Client.Fake)
 | 
				
			||||||
	RegisterFakeList("secrets", &cluster2Client.Fake, &api_v1.SecretList{Items: []api_v1.Secret{}})
 | 
						RegisterFakeList("secrets", &cluster2Client.Fake, &api_v1.SecretList{Items: []api_v1.Secret{}})
 | 
				
			||||||
	cluster2CreateChan := RegisterFakeCopyOnCreate("secrets", &cluster2Client.Fake, cluster2Watch)
 | 
						cluster2CreateChan := RegisterFakeCopyOnCreate("secrets", &cluster2Client.Fake, cluster2Watch)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	secretController := NewSecretController(fakeClient)
 | 
						secretController := NewSecretController(fakeClient)
 | 
				
			||||||
	informer := ToFederatedInformerForTestOnly(secretController.secretFederatedInformer)
 | 
						informer := ToFederatedInformerForTestOnly(secretController.secretFederatedInformer)
 | 
				
			||||||
	informer.SetClientFactory(func(cluster *federation_api.Cluster) (kube_release_1_4.Interface, error) {
 | 
						informer.SetClientFactory(func(cluster *federation_api.Cluster) (kubeclientset.Interface, error) {
 | 
				
			||||||
		switch cluster.Name {
 | 
							switch cluster.Name {
 | 
				
			||||||
		case cluster1.Name:
 | 
							case cluster1.Name:
 | 
				
			||||||
			return cluster1Client, nil
 | 
								return cluster1Client, nil
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,7 +23,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	v1 "k8s.io/kubernetes/pkg/api/v1"
 | 
						v1 "k8s.io/kubernetes/pkg/api/v1"
 | 
				
			||||||
	cache "k8s.io/kubernetes/pkg/client/cache"
 | 
						cache "k8s.io/kubernetes/pkg/client/cache"
 | 
				
			||||||
	release_1_4 "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_4"
 | 
						kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/restclient"
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	pkg_runtime "k8s.io/kubernetes/pkg/runtime"
 | 
						pkg_runtime "k8s.io/kubernetes/pkg/runtime"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/util/wait"
 | 
						"k8s.io/kubernetes/pkg/util/wait"
 | 
				
			||||||
@@ -37,7 +37,7 @@ import (
 | 
				
			|||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type clusterCache struct {
 | 
					type clusterCache struct {
 | 
				
			||||||
	clientset *release_1_4.Clientset
 | 
						clientset *kubeclientset.Clientset
 | 
				
			||||||
	cluster   *v1beta1.Cluster
 | 
						cluster   *v1beta1.Cluster
 | 
				
			||||||
	// A store of services, populated by the serviceController
 | 
						// A store of services, populated by the serviceController
 | 
				
			||||||
	serviceStore cache.StoreToServiceLister
 | 
						serviceStore cache.StoreToServiceLister
 | 
				
			||||||
@@ -196,10 +196,10 @@ func (cc *clusterClientCache) addToClientMap(obj interface{}) {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func newClusterClientset(c *v1beta1.Cluster) (*release_1_4.Clientset, error) {
 | 
					func newClusterClientset(c *v1beta1.Cluster) (*kubeclientset.Clientset, error) {
 | 
				
			||||||
	clusterConfig, err := util.BuildClusterConfig(c)
 | 
						clusterConfig, err := util.BuildClusterConfig(c)
 | 
				
			||||||
	if clusterConfig != nil {
 | 
						if clusterConfig != nil {
 | 
				
			||||||
		clientset := release_1_4.NewForConfigOrDie(restclient.AddUserAgent(clusterConfig, UserAgentName))
 | 
							clientset := kubeclientset.NewForConfigOrDie(restclient.AddUserAgent(clusterConfig, UserAgentName))
 | 
				
			||||||
		return clientset, nil
 | 
							return clientset, nil
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return nil, err
 | 
						return nil, err
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,7 +20,7 @@ import (
 | 
				
			|||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	federation_release_1_4 "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_4"
 | 
						fedclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5"
 | 
				
			||||||
	v1 "k8s.io/kubernetes/pkg/api/v1"
 | 
						v1 "k8s.io/kubernetes/pkg/api/v1"
 | 
				
			||||||
	cache "k8s.io/kubernetes/pkg/client/cache"
 | 
						cache "k8s.io/kubernetes/pkg/client/cache"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/controller"
 | 
						"k8s.io/kubernetes/pkg/controller"
 | 
				
			||||||
@@ -75,7 +75,7 @@ ForLoop:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Whenever there is change on endpoint, the federation service should be updated
 | 
					// Whenever there is change on endpoint, the federation service should be updated
 | 
				
			||||||
// key is the namespaced name of endpoint
 | 
					// key is the namespaced name of endpoint
 | 
				
			||||||
func (cc *clusterClientCache) syncEndpoint(key, clusterName string, clusterCache *clusterCache, serviceCache *serviceCache, fedClient federation_release_1_4.Interface, serviceController *ServiceController) error {
 | 
					func (cc *clusterClientCache) syncEndpoint(key, clusterName string, clusterCache *clusterCache, serviceCache *serviceCache, fedClient fedclientset.Interface, serviceController *ServiceController) error {
 | 
				
			||||||
	cachedService, ok := serviceCache.get(key)
 | 
						cachedService, ok := serviceCache.get(key)
 | 
				
			||||||
	if !ok {
 | 
						if !ok {
 | 
				
			||||||
		// here we filtered all non-federation services
 | 
							// here we filtered all non-federation services
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,7 +20,7 @@ import (
 | 
				
			|||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	federation_release_1_4 "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_4"
 | 
						fedclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/errors"
 | 
						"k8s.io/kubernetes/pkg/api/errors"
 | 
				
			||||||
	v1 "k8s.io/kubernetes/pkg/api/v1"
 | 
						v1 "k8s.io/kubernetes/pkg/api/v1"
 | 
				
			||||||
	cache "k8s.io/kubernetes/pkg/client/cache"
 | 
						cache "k8s.io/kubernetes/pkg/client/cache"
 | 
				
			||||||
@@ -77,7 +77,7 @@ ForLoop:
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Whenever there is change on service, the federation service should be updated
 | 
					// Whenever there is change on service, the federation service should be updated
 | 
				
			||||||
func (cc *clusterClientCache) syncService(key, clusterName string, clusterCache *clusterCache, serviceCache *serviceCache, fedClient federation_release_1_4.Interface, sc *ServiceController) error {
 | 
					func (cc *clusterClientCache) syncService(key, clusterName string, clusterCache *clusterCache, serviceCache *serviceCache, fedClient fedclientset.Interface, sc *ServiceController) error {
 | 
				
			||||||
	// obj holds the latest service info from apiserver, return if there is no federation cache for the service
 | 
						// obj holds the latest service info from apiserver, return if there is no federation cache for the service
 | 
				
			||||||
	cachedService, ok := serviceCache.get(key)
 | 
						cachedService, ok := serviceCache.get(key)
 | 
				
			||||||
	if !ok {
 | 
						if !ok {
 | 
				
			||||||
@@ -257,7 +257,7 @@ func (cc *clusterClientCache) processServiceUpdate(cachedService *cachedService,
 | 
				
			|||||||
	return needUpdate
 | 
						return needUpdate
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (cc *clusterClientCache) persistFedServiceUpdate(cachedService *cachedService, fedClient federation_release_1_4.Interface) error {
 | 
					func (cc *clusterClientCache) persistFedServiceUpdate(cachedService *cachedService, fedClient fedclientset.Interface) error {
 | 
				
			||||||
	service := cachedService.lastState
 | 
						service := cachedService.lastState
 | 
				
			||||||
	glog.V(5).Infof("Persist federation service status %s/%s", service.Namespace, service.Name)
 | 
						glog.V(5).Infof("Persist federation service status %s/%s", service.Namespace, service.Name)
 | 
				
			||||||
	var err error
 | 
						var err error
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -26,13 +26,13 @@ import (
 | 
				
			|||||||
	"github.com/golang/glog"
 | 
						"github.com/golang/glog"
 | 
				
			||||||
	v1beta1 "k8s.io/kubernetes/federation/apis/federation/v1beta1"
 | 
						v1beta1 "k8s.io/kubernetes/federation/apis/federation/v1beta1"
 | 
				
			||||||
	federationcache "k8s.io/kubernetes/federation/client/cache"
 | 
						federationcache "k8s.io/kubernetes/federation/client/cache"
 | 
				
			||||||
	federation_release_1_4 "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_4"
 | 
						fedclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5"
 | 
				
			||||||
	"k8s.io/kubernetes/federation/pkg/dnsprovider"
 | 
						"k8s.io/kubernetes/federation/pkg/dnsprovider"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/errors"
 | 
						"k8s.io/kubernetes/pkg/api/errors"
 | 
				
			||||||
	v1 "k8s.io/kubernetes/pkg/api/v1"
 | 
						v1 "k8s.io/kubernetes/pkg/api/v1"
 | 
				
			||||||
	cache "k8s.io/kubernetes/pkg/client/cache"
 | 
						cache "k8s.io/kubernetes/pkg/client/cache"
 | 
				
			||||||
	release_1_4 "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_4"
 | 
						kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/record"
 | 
						"k8s.io/kubernetes/pkg/client/record"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/controller"
 | 
						"k8s.io/kubernetes/pkg/controller"
 | 
				
			||||||
	pkg_runtime "k8s.io/kubernetes/pkg/runtime"
 | 
						pkg_runtime "k8s.io/kubernetes/pkg/runtime"
 | 
				
			||||||
@@ -100,7 +100,7 @@ type serviceCache struct {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
type ServiceController struct {
 | 
					type ServiceController struct {
 | 
				
			||||||
	dns              dnsprovider.Interface
 | 
						dns              dnsprovider.Interface
 | 
				
			||||||
	federationClient federation_release_1_4.Interface
 | 
						federationClient fedclientset.Interface
 | 
				
			||||||
	federationName   string
 | 
						federationName   string
 | 
				
			||||||
	zoneName         string
 | 
						zoneName         string
 | 
				
			||||||
	// each federation should be configured with a single zone (e.g. "mycompany.com")
 | 
						// each federation should be configured with a single zone (e.g. "mycompany.com")
 | 
				
			||||||
@@ -135,7 +135,7 @@ type ServiceController struct {
 | 
				
			|||||||
// New returns a new service controller to keep DNS provider service resources
 | 
					// New returns a new service controller to keep DNS provider service resources
 | 
				
			||||||
// (like Kubernetes Services and DNS server records for service discovery) in sync with the registry.
 | 
					// (like Kubernetes Services and DNS server records for service discovery) in sync with the registry.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func New(federationClient federation_release_1_4.Interface, dns dnsprovider.Interface, federationName, zoneName string) *ServiceController {
 | 
					func New(federationClient fedclientset.Interface, dns dnsprovider.Interface, federationName, zoneName string) *ServiceController {
 | 
				
			||||||
	broadcaster := record.NewBroadcaster()
 | 
						broadcaster := record.NewBroadcaster()
 | 
				
			||||||
	// federationClient event is not supported yet
 | 
						// federationClient event is not supported yet
 | 
				
			||||||
	// broadcaster.StartRecordingToSink(&unversioned_core.EventSinkImpl{Interface: kubeClient.Core().Events("")})
 | 
						// broadcaster.StartRecordingToSink(&unversioned_core.EventSinkImpl{Interface: kubeClient.Core().Events("")})
 | 
				
			||||||
@@ -322,7 +322,7 @@ func wantsDNSRecords(service *v1.Service) bool {
 | 
				
			|||||||
// processServiceForCluster creates or updates service to all registered running clusters,
 | 
					// processServiceForCluster creates or updates service to all registered running clusters,
 | 
				
			||||||
// update DNS records and update the service info with DNS entries to federation apiserver.
 | 
					// update DNS records and update the service info with DNS entries to federation apiserver.
 | 
				
			||||||
// the function returns any error caught
 | 
					// the function returns any error caught
 | 
				
			||||||
func (s *ServiceController) processServiceForCluster(cachedService *cachedService, clusterName string, service *v1.Service, client *release_1_4.Clientset) error {
 | 
					func (s *ServiceController) processServiceForCluster(cachedService *cachedService, clusterName string, service *v1.Service, client *kubeclientset.Clientset) error {
 | 
				
			||||||
	glog.V(4).Infof("Process service %s/%s for cluster %s", service.Namespace, service.Name, clusterName)
 | 
						glog.V(4).Infof("Process service %s/%s for cluster %s", service.Namespace, service.Name, clusterName)
 | 
				
			||||||
	// Create or Update k8s Service
 | 
						// Create or Update k8s Service
 | 
				
			||||||
	err := s.ensureClusterService(cachedService, clusterName, service, client)
 | 
						err := s.ensureClusterService(cachedService, clusterName, service, client)
 | 
				
			||||||
@@ -382,7 +382,7 @@ func (s *ServiceController) deleteFederationService(cachedService *cachedService
 | 
				
			|||||||
	return nil, !retryable
 | 
						return nil, !retryable
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (s *ServiceController) deleteClusterService(clusterName string, cachedService *cachedService, clientset *release_1_4.Clientset) error {
 | 
					func (s *ServiceController) deleteClusterService(clusterName string, cachedService *cachedService, clientset *kubeclientset.Clientset) error {
 | 
				
			||||||
	service := cachedService.lastState
 | 
						service := cachedService.lastState
 | 
				
			||||||
	glog.V(4).Infof("Deleting service %s/%s from cluster %s", service.Namespace, service.Name, clusterName)
 | 
						glog.V(4).Infof("Deleting service %s/%s from cluster %s", service.Namespace, service.Name, clusterName)
 | 
				
			||||||
	var err error
 | 
						var err error
 | 
				
			||||||
@@ -399,7 +399,7 @@ func (s *ServiceController) deleteClusterService(clusterName string, cachedServi
 | 
				
			|||||||
	return err
 | 
						return err
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (s *ServiceController) ensureClusterService(cachedService *cachedService, clusterName string, service *v1.Service, client *release_1_4.Clientset) error {
 | 
					func (s *ServiceController) ensureClusterService(cachedService *cachedService, clusterName string, service *v1.Service, client *kubeclientset.Clientset) error {
 | 
				
			||||||
	var err error
 | 
						var err error
 | 
				
			||||||
	var needUpdate bool
 | 
						var needUpdate bool
 | 
				
			||||||
	for i := 0; i < clientRetryCount; i++ {
 | 
						for i := 0; i < clientRetryCount; i++ {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,7 +24,7 @@ import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	"github.com/golang/glog"
 | 
						"github.com/golang/glog"
 | 
				
			||||||
	federation_v1beta1 "k8s.io/kubernetes/federation/apis/federation/v1beta1"
 | 
						federation_v1beta1 "k8s.io/kubernetes/federation/apis/federation/v1beta1"
 | 
				
			||||||
	federation_release_1_4 "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_4"
 | 
						fedclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/restclient"
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
						client "k8s.io/kubernetes/pkg/client/unversioned"
 | 
				
			||||||
@@ -133,10 +133,10 @@ var KubeconfigGetterForSecret = func(secretName string) clientcmd.KubeconfigGett
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Retruns Clientset for the given cluster.
 | 
					// Retruns Clientset for the given cluster.
 | 
				
			||||||
func GetClientsetForCluster(cluster *federation_v1beta1.Cluster) (*federation_release_1_4.Clientset, error) {
 | 
					func GetClientsetForCluster(cluster *federation_v1beta1.Cluster) (*fedclientset.Clientset, error) {
 | 
				
			||||||
	clusterConfig, err := BuildClusterConfig(cluster)
 | 
						clusterConfig, err := BuildClusterConfig(cluster)
 | 
				
			||||||
	if err != nil && clusterConfig != nil {
 | 
						if err != nil && clusterConfig != nil {
 | 
				
			||||||
		clientset := federation_release_1_4.NewForConfigOrDie(restclient.AddUserAgent(clusterConfig, userAgentName))
 | 
							clientset := fedclientset.NewForConfigOrDie(restclient.AddUserAgent(clusterConfig, userAgentName))
 | 
				
			||||||
		return clientset, nil
 | 
							return clientset, nil
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return nil, err
 | 
						return nil, err
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -17,7 +17,7 @@ limitations under the License.
 | 
				
			|||||||
package eventsink
 | 
					package eventsink
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	federation_release_1_4 "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_4"
 | 
						fedclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5"
 | 
				
			||||||
	api "k8s.io/kubernetes/pkg/api"
 | 
						api "k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	api_v1 "k8s.io/kubernetes/pkg/api/v1"
 | 
						api_v1 "k8s.io/kubernetes/pkg/api/v1"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/record"
 | 
						"k8s.io/kubernetes/pkg/client/record"
 | 
				
			||||||
@@ -25,13 +25,13 @@ import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Implemnts k8s.io/kubernetes/pkg/client/record.EventSink.
 | 
					// Implemnts k8s.io/kubernetes/pkg/client/record.EventSink.
 | 
				
			||||||
type FederatedEventSink struct {
 | 
					type FederatedEventSink struct {
 | 
				
			||||||
	clientset federation_release_1_4.Interface
 | 
						clientset fedclientset.Interface
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// To check if all required functions are implemented.
 | 
					// To check if all required functions are implemented.
 | 
				
			||||||
var _ record.EventSink = &FederatedEventSink{}
 | 
					var _ record.EventSink = &FederatedEventSink{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func NewFederatedEventSink(clientset federation_release_1_4.Interface) *FederatedEventSink {
 | 
					func NewFederatedEventSink(clientset fedclientset.Interface) *FederatedEventSink {
 | 
				
			||||||
	return &FederatedEventSink{
 | 
						return &FederatedEventSink{
 | 
				
			||||||
		clientset: clientset,
 | 
							clientset: clientset,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,7 +19,7 @@ package eventsink
 | 
				
			|||||||
import (
 | 
					import (
 | 
				
			||||||
	"testing"
 | 
						"testing"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	fake_federation_release_1_4 "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_4/fake"
 | 
						fake_fedclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5/fake"
 | 
				
			||||||
	. "k8s.io/kubernetes/federation/pkg/federation-controller/util/test"
 | 
						. "k8s.io/kubernetes/federation/pkg/federation-controller/util/test"
 | 
				
			||||||
	api "k8s.io/kubernetes/pkg/api"
 | 
						api "k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	api_v1 "k8s.io/kubernetes/pkg/api/v1"
 | 
						api_v1 "k8s.io/kubernetes/pkg/api/v1"
 | 
				
			||||||
@@ -30,7 +30,7 @@ import (
 | 
				
			|||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func TestEventSink(t *testing.T) {
 | 
					func TestEventSink(t *testing.T) {
 | 
				
			||||||
	fakeFederationClient := &fake_federation_release_1_4.Clientset{}
 | 
						fakeFederationClient := &fake_fedclientset.Clientset{}
 | 
				
			||||||
	createdChan := make(chan runtime.Object, 100)
 | 
						createdChan := make(chan runtime.Object, 100)
 | 
				
			||||||
	fakeFederationClient.AddReactor("create", "events", func(action core.Action) (bool, runtime.Object, error) {
 | 
						fakeFederationClient.AddReactor("create", "events", func(action core.Action) (bool, runtime.Object, error) {
 | 
				
			||||||
		createAction := action.(core.CreateAction)
 | 
							createAction := action.(core.CreateAction)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,11 +23,11 @@ import (
 | 
				
			|||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	federation_api "k8s.io/kubernetes/federation/apis/federation/v1beta1"
 | 
						federation_api "k8s.io/kubernetes/federation/apis/federation/v1beta1"
 | 
				
			||||||
	federation_release_1_4 "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_4"
 | 
						federationclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5"
 | 
				
			||||||
	api "k8s.io/kubernetes/pkg/api"
 | 
						api "k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	api_v1 "k8s.io/kubernetes/pkg/api/v1"
 | 
						api_v1 "k8s.io/kubernetes/pkg/api/v1"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/cache"
 | 
						"k8s.io/kubernetes/pkg/client/cache"
 | 
				
			||||||
	kube_release_1_4 "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_4"
 | 
						kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/restclient"
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	pkg_runtime "k8s.io/kubernetes/pkg/runtime"
 | 
						pkg_runtime "k8s.io/kubernetes/pkg/runtime"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/watch"
 | 
						"k8s.io/kubernetes/pkg/watch"
 | 
				
			||||||
@@ -72,7 +72,7 @@ type FederatedReadOnlyStore interface {
 | 
				
			|||||||
// An interface to access federation members and clients.
 | 
					// An interface to access federation members and clients.
 | 
				
			||||||
type FederationView interface {
 | 
					type FederationView interface {
 | 
				
			||||||
	// GetClientsetForCluster returns a clientset for the cluster, if present.
 | 
						// GetClientsetForCluster returns a clientset for the cluster, if present.
 | 
				
			||||||
	GetClientsetForCluster(clusterName string) (kube_release_1_4.Interface, error)
 | 
						GetClientsetForCluster(clusterName string) (kubeclientset.Interface, error)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// GetReadyClusers returns all clusters for which the sub-informers are run.
 | 
						// GetReadyClusers returns all clusters for which the sub-informers are run.
 | 
				
			||||||
	GetReadyClusters() ([]*federation_api.Cluster, error)
 | 
						GetReadyClusters() ([]*federation_api.Cluster, error)
 | 
				
			||||||
@@ -106,12 +106,12 @@ type FederatedInformer interface {
 | 
				
			|||||||
type FederatedInformerForTestOnly interface {
 | 
					type FederatedInformerForTestOnly interface {
 | 
				
			||||||
	FederatedInformer
 | 
						FederatedInformer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	SetClientFactory(func(*federation_api.Cluster) (kube_release_1_4.Interface, error))
 | 
						SetClientFactory(func(*federation_api.Cluster) (kubeclientset.Interface, error))
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// A function that should be used to create an informer on the target object. Store should use
 | 
					// A function that should be used to create an informer on the target object. Store should use
 | 
				
			||||||
// cache.DeletionHandlingMetaNamespaceKeyFunc as a keying function.
 | 
					// cache.DeletionHandlingMetaNamespaceKeyFunc as a keying function.
 | 
				
			||||||
type TargetInformerFactory func(*federation_api.Cluster, kube_release_1_4.Interface) (cache.Store, cache.ControllerInterface)
 | 
					type TargetInformerFactory func(*federation_api.Cluster, kubeclientset.Interface) (cache.Store, cache.ControllerInterface)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// A structure with cluster lifecycle handler functions. Cluster is available (and ClusterAvailable is fired)
 | 
					// A structure with cluster lifecycle handler functions. Cluster is available (and ClusterAvailable is fired)
 | 
				
			||||||
// when it is created in federated etcd and ready. Cluster becomes unavailable (and ClusterUnavailable is fired)
 | 
					// when it is created in federated etcd and ready. Cluster becomes unavailable (and ClusterUnavailable is fired)
 | 
				
			||||||
@@ -127,16 +127,16 @@ type ClusterLifecycleHandlerFuncs struct {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// Builds a FederatedInformer for the given federation client and factory.
 | 
					// Builds a FederatedInformer for the given federation client and factory.
 | 
				
			||||||
func NewFederatedInformer(
 | 
					func NewFederatedInformer(
 | 
				
			||||||
	federationClient federation_release_1_4.Interface,
 | 
						federationClient federationclientset.Interface,
 | 
				
			||||||
	targetInformerFactory TargetInformerFactory,
 | 
						targetInformerFactory TargetInformerFactory,
 | 
				
			||||||
	clusterLifecycle *ClusterLifecycleHandlerFuncs) FederatedInformer {
 | 
						clusterLifecycle *ClusterLifecycleHandlerFuncs) FederatedInformer {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	federatedInformer := &federatedInformerImpl{
 | 
						federatedInformer := &federatedInformerImpl{
 | 
				
			||||||
		targetInformerFactory: targetInformerFactory,
 | 
							targetInformerFactory: targetInformerFactory,
 | 
				
			||||||
		clientFactory: func(cluster *federation_api.Cluster) (kube_release_1_4.Interface, error) {
 | 
							clientFactory: func(cluster *federation_api.Cluster) (kubeclientset.Interface, error) {
 | 
				
			||||||
			clusterConfig, err := BuildClusterConfig(cluster)
 | 
								clusterConfig, err := BuildClusterConfig(cluster)
 | 
				
			||||||
			if err == nil && clusterConfig != nil {
 | 
								if err == nil && clusterConfig != nil {
 | 
				
			||||||
				clientset := kube_release_1_4.NewForConfigOrDie(restclient.AddUserAgent(clusterConfig, userAgentName))
 | 
									clientset := kubeclientset.NewForConfigOrDie(restclient.AddUserAgent(clusterConfig, userAgentName))
 | 
				
			||||||
				return clientset, nil
 | 
									return clientset, nil
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			return nil, err
 | 
								return nil, err
 | 
				
			||||||
@@ -255,7 +255,7 @@ type federatedInformerImpl struct {
 | 
				
			|||||||
	targetInformers map[string]informer
 | 
						targetInformers map[string]informer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// A function to build clients.
 | 
						// A function to build clients.
 | 
				
			||||||
	clientFactory func(*federation_api.Cluster) (kube_release_1_4.Interface, error)
 | 
						clientFactory func(*federation_api.Cluster) (kubeclientset.Interface, error)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type federatedStoreImpl struct {
 | 
					type federatedStoreImpl struct {
 | 
				
			||||||
@@ -283,7 +283,7 @@ func (f *federatedInformerImpl) Start() {
 | 
				
			|||||||
	go f.clusterInformer.controller.Run(f.clusterInformer.stopChan)
 | 
						go f.clusterInformer.controller.Run(f.clusterInformer.stopChan)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (f *federatedInformerImpl) SetClientFactory(clientFactory func(*federation_api.Cluster) (kube_release_1_4.Interface, error)) {
 | 
					func (f *federatedInformerImpl) SetClientFactory(clientFactory func(*federation_api.Cluster) (kubeclientset.Interface, error)) {
 | 
				
			||||||
	f.Lock()
 | 
						f.Lock()
 | 
				
			||||||
	defer f.Unlock()
 | 
						defer f.Unlock()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -291,13 +291,13 @@ func (f *federatedInformerImpl) SetClientFactory(clientFactory func(*federation_
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// GetClientsetForCluster returns a clientset for the cluster, if present.
 | 
					// GetClientsetForCluster returns a clientset for the cluster, if present.
 | 
				
			||||||
func (f *federatedInformerImpl) GetClientsetForCluster(clusterName string) (kube_release_1_4.Interface, error) {
 | 
					func (f *federatedInformerImpl) GetClientsetForCluster(clusterName string) (kubeclientset.Interface, error) {
 | 
				
			||||||
	f.Lock()
 | 
						f.Lock()
 | 
				
			||||||
	defer f.Unlock()
 | 
						defer f.Unlock()
 | 
				
			||||||
	return f.getClientsetForClusterUnlocked(clusterName)
 | 
						return f.getClientsetForClusterUnlocked(clusterName)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (f *federatedInformerImpl) getClientsetForClusterUnlocked(clusterName string) (kube_release_1_4.Interface, error) {
 | 
					func (f *federatedInformerImpl) getClientsetForClusterUnlocked(clusterName string) (kubeclientset.Interface, error) {
 | 
				
			||||||
	// No locking needed. Will happen in f.GetCluster.
 | 
						// No locking needed. Will happen in f.GetCluster.
 | 
				
			||||||
	glog.V(4).Infof("Getting clientset for cluster %q", clusterName)
 | 
						glog.V(4).Infof("Getting clientset for cluster %q", clusterName)
 | 
				
			||||||
	if cluster, found, err := f.getReadyClusterUnlocked(clusterName); found && err == nil {
 | 
						if cluster, found, err := f.getReadyClusterUnlocked(clusterName); found && err == nil {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,12 +21,12 @@ import (
 | 
				
			|||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	federation_api "k8s.io/kubernetes/federation/apis/federation/v1beta1"
 | 
						federation_api "k8s.io/kubernetes/federation/apis/federation/v1beta1"
 | 
				
			||||||
	fake_federation_release_1_4 "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_4/fake"
 | 
						fakefederationclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5/fake"
 | 
				
			||||||
	api "k8s.io/kubernetes/pkg/api"
 | 
						api "k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	api_v1 "k8s.io/kubernetes/pkg/api/v1"
 | 
						api_v1 "k8s.io/kubernetes/pkg/api/v1"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/cache"
 | 
						"k8s.io/kubernetes/pkg/client/cache"
 | 
				
			||||||
	kube_release_1_4 "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_4"
 | 
						kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
 | 
				
			||||||
	fake_kube_release_1_4 "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_4/fake"
 | 
						fake_kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5/fake"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/testing/core"
 | 
						"k8s.io/kubernetes/pkg/client/testing/core"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/runtime"
 | 
						"k8s.io/kubernetes/pkg/runtime"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/watch"
 | 
						"k8s.io/kubernetes/pkg/watch"
 | 
				
			||||||
@@ -37,7 +37,7 @@ import (
 | 
				
			|||||||
// Basic test for Federated Informer. Checks whether the subinformer are added and deleted
 | 
					// Basic test for Federated Informer. Checks whether the subinformer are added and deleted
 | 
				
			||||||
// when the corresponding cluster entries appear and disappear from etcd.
 | 
					// when the corresponding cluster entries appear and disappear from etcd.
 | 
				
			||||||
func TestFederatedInformer(t *testing.T) {
 | 
					func TestFederatedInformer(t *testing.T) {
 | 
				
			||||||
	fakeFederationClient := &fake_federation_release_1_4.Clientset{}
 | 
						fakeFederationClient := &fakefederationclientset.Clientset{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Add a single cluster to federation and remove it when needed.
 | 
						// Add a single cluster to federation and remove it when needed.
 | 
				
			||||||
	cluster := federation_api.Cluster{
 | 
						cluster := federation_api.Cluster{
 | 
				
			||||||
@@ -63,7 +63,7 @@ func TestFederatedInformer(t *testing.T) {
 | 
				
			|||||||
		return true, fakeWatch, nil
 | 
							return true, fakeWatch, nil
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	fakeKubeClient := &fake_kube_release_1_4.Clientset{}
 | 
						fakeKubeClient := &fake_kubeclientset.Clientset{}
 | 
				
			||||||
	// There is a single service ns1/s1 in cluster mycluster.
 | 
						// There is a single service ns1/s1 in cluster mycluster.
 | 
				
			||||||
	service := api_v1.Service{
 | 
						service := api_v1.Service{
 | 
				
			||||||
		ObjectMeta: api_v1.ObjectMeta{
 | 
							ObjectMeta: api_v1.ObjectMeta{
 | 
				
			||||||
@@ -78,7 +78,7 @@ func TestFederatedInformer(t *testing.T) {
 | 
				
			|||||||
		return true, watch.NewFake(), nil
 | 
							return true, watch.NewFake(), nil
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	targetInformerFactory := func(cluster *federation_api.Cluster, clientset kube_release_1_4.Interface) (cache.Store, cache.ControllerInterface) {
 | 
						targetInformerFactory := func(cluster *federation_api.Cluster, clientset kubeclientset.Interface) (cache.Store, cache.ControllerInterface) {
 | 
				
			||||||
		return cache.NewInformer(
 | 
							return cache.NewInformer(
 | 
				
			||||||
			&cache.ListWatch{
 | 
								&cache.ListWatch{
 | 
				
			||||||
				ListFunc: func(options api.ListOptions) (runtime.Object, error) {
 | 
									ListFunc: func(options api.ListOptions) (runtime.Object, error) {
 | 
				
			||||||
@@ -107,7 +107,7 @@ func TestFederatedInformer(t *testing.T) {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	informer := NewFederatedInformer(fakeFederationClient, targetInformerFactory, &lifecycle).(*federatedInformerImpl)
 | 
						informer := NewFederatedInformer(fakeFederationClient, targetInformerFactory, &lifecycle).(*federatedInformerImpl)
 | 
				
			||||||
	informer.clientFactory = func(cluster *federation_api.Cluster) (kube_release_1_4.Interface, error) {
 | 
						informer.clientFactory = func(cluster *federation_api.Cluster) (kubeclientset.Interface, error) {
 | 
				
			||||||
		return fakeKubeClient, nil
 | 
							return fakeKubeClient, nil
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	assert.NotNil(t, informer)
 | 
						assert.NotNil(t, informer)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,7 +20,7 @@ import (
 | 
				
			|||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	kube_release_1_4 "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_4"
 | 
						kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
 | 
				
			||||||
	pkg_runtime "k8s.io/kubernetes/pkg/runtime"
 | 
						pkg_runtime "k8s.io/kubernetes/pkg/runtime"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -52,7 +52,7 @@ type FederatedUpdater interface {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// A function that executes some operation using the passed client and object.
 | 
					// A function that executes some operation using the passed client and object.
 | 
				
			||||||
type FederatedOperationHandler func(kube_release_1_4.Interface, pkg_runtime.Object) error
 | 
					type FederatedOperationHandler func(kubeclientset.Interface, pkg_runtime.Object) error
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type federatedUpdaterImpl struct {
 | 
					type federatedUpdaterImpl struct {
 | 
				
			||||||
	federation FederationView
 | 
						federation FederationView
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,8 +23,8 @@ import (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	federation_api "k8s.io/kubernetes/federation/apis/federation/v1beta1"
 | 
						federation_api "k8s.io/kubernetes/federation/apis/federation/v1beta1"
 | 
				
			||||||
	api_v1 "k8s.io/kubernetes/pkg/api/v1"
 | 
						api_v1 "k8s.io/kubernetes/pkg/api/v1"
 | 
				
			||||||
	kube_release_1_4 "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_4"
 | 
						kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
 | 
				
			||||||
	fake_kube_release_1_4 "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_4/fake"
 | 
						fake_kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5/fake"
 | 
				
			||||||
	pkg_runtime "k8s.io/kubernetes/pkg/runtime"
 | 
						pkg_runtime "k8s.io/kubernetes/pkg/runtime"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/stretchr/testify/assert"
 | 
						"github.com/stretchr/testify/assert"
 | 
				
			||||||
@@ -34,8 +34,8 @@ import (
 | 
				
			|||||||
type fakeFederationView struct {
 | 
					type fakeFederationView struct {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (f fakeFederationView) GetClientsetForCluster(clusterName string) (kube_release_1_4.Interface, error) {
 | 
					func (f fakeFederationView) GetClientsetForCluster(clusterName string) (kubeclientset.Interface, error) {
 | 
				
			||||||
	return &fake_kube_release_1_4.Clientset{}, nil
 | 
						return &fake_kubeclientset.Clientset{}, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (f *fakeFederationView) GetReadyClusters() ([]*federation_api.Cluster, error) {
 | 
					func (f *fakeFederationView) GetReadyClusters() ([]*federation_api.Cluster, error) {
 | 
				
			||||||
@@ -55,12 +55,12 @@ func TestFederatedUpdaterOK(t *testing.T) {
 | 
				
			|||||||
	updateChan := make(chan string, 5)
 | 
						updateChan := make(chan string, 5)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	updater := NewFederatedUpdater(&fakeFederationView{},
 | 
						updater := NewFederatedUpdater(&fakeFederationView{},
 | 
				
			||||||
		func(_ kube_release_1_4.Interface, obj pkg_runtime.Object) error {
 | 
							func(_ kubeclientset.Interface, obj pkg_runtime.Object) error {
 | 
				
			||||||
			service := obj.(*api_v1.Service)
 | 
								service := obj.(*api_v1.Service)
 | 
				
			||||||
			addChan <- service.Name
 | 
								addChan <- service.Name
 | 
				
			||||||
			return nil
 | 
								return nil
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		func(_ kube_release_1_4.Interface, obj pkg_runtime.Object) error {
 | 
							func(_ kubeclientset.Interface, obj pkg_runtime.Object) error {
 | 
				
			||||||
			service := obj.(*api_v1.Service)
 | 
								service := obj.(*api_v1.Service)
 | 
				
			||||||
			updateChan <- service.Name
 | 
								updateChan <- service.Name
 | 
				
			||||||
			return nil
 | 
								return nil
 | 
				
			||||||
@@ -86,7 +86,7 @@ func TestFederatedUpdaterOK(t *testing.T) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
func TestFederatedUpdaterError(t *testing.T) {
 | 
					func TestFederatedUpdaterError(t *testing.T) {
 | 
				
			||||||
	updater := NewFederatedUpdater(&fakeFederationView{},
 | 
						updater := NewFederatedUpdater(&fakeFederationView{},
 | 
				
			||||||
		func(_ kube_release_1_4.Interface, obj pkg_runtime.Object) error {
 | 
							func(_ kubeclientset.Interface, obj pkg_runtime.Object) error {
 | 
				
			||||||
			return fmt.Errorf("boom")
 | 
								return fmt.Errorf("boom")
 | 
				
			||||||
		}, noop, noop)
 | 
							}, noop, noop)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -106,7 +106,7 @@ func TestFederatedUpdaterError(t *testing.T) {
 | 
				
			|||||||
func TestFederatedUpdaterTimeout(t *testing.T) {
 | 
					func TestFederatedUpdaterTimeout(t *testing.T) {
 | 
				
			||||||
	start := time.Now()
 | 
						start := time.Now()
 | 
				
			||||||
	updater := NewFederatedUpdater(&fakeFederationView{},
 | 
						updater := NewFederatedUpdater(&fakeFederationView{},
 | 
				
			||||||
		func(_ kube_release_1_4.Interface, obj pkg_runtime.Object) error {
 | 
							func(_ kubeclientset.Interface, obj pkg_runtime.Object) error {
 | 
				
			||||||
			time.Sleep(time.Minute)
 | 
								time.Sleep(time.Minute)
 | 
				
			||||||
			return nil
 | 
								return nil
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
@@ -136,6 +136,6 @@ func makeService(cluster, name string) *api_v1.Service {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func noop(_ kube_release_1_4.Interface, _ pkg_runtime.Object) error {
 | 
					func noop(_ kubeclientset.Interface, _ pkg_runtime.Object) error {
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,6 +18,7 @@ package fake
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/v1"
 | 
						"k8s.io/kubernetes/pkg/api/v1"
 | 
				
			||||||
 | 
						policy "k8s.io/kubernetes/pkg/apis/policy/v1alpha1"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/restclient"
 | 
						"k8s.io/kubernetes/pkg/client/restclient"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/client/testing/core"
 | 
						"k8s.io/kubernetes/pkg/client/testing/core"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@@ -44,3 +45,14 @@ func (c *FakePods) GetLogs(name string, opts *v1.PodLogOptions) *restclient.Requ
 | 
				
			|||||||
	_, _ = c.Fake.Invokes(action, &v1.Pod{})
 | 
						_, _ = c.Fake.Invokes(action, &v1.Pod{})
 | 
				
			||||||
	return &restclient.Request{}
 | 
						return &restclient.Request{}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (c *FakePods) Evict(eviction *policy.Eviction) error {
 | 
				
			||||||
 | 
						action := core.CreateActionImpl{}
 | 
				
			||||||
 | 
						action.Verb = "create"
 | 
				
			||||||
 | 
						action.Resource = podsResource
 | 
				
			||||||
 | 
						action.Subresource = "eviction"
 | 
				
			||||||
 | 
						action.Object = eviction
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						_, err := c.Fake.Invokes(action, eviction)
 | 
				
			||||||
 | 
						return err
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user