mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-25 12:43:23 +00:00
Merge pull request #32246 from caesarxuchao/fed-1.5
Automatic merge from submit-queue Update federation controllers to use release 1.5 clientset This PR is based on #32243, we won't merge it until next week, to make cherry-picks easier.
This commit is contained in:
commit
dc06ceb87d
@ -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 {
|
||||||
@ -258,7 +258,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
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user