mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-29 14:37:00 +00:00
fed: Provide client config to adapter factory
This will allow the namespace adapter to initialize a namespaced resource deleter.
This commit is contained in:
parent
5ed095b401
commit
7e772ee3eb
@ -38,8 +38,8 @@ go_library(
|
||||
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
|
||||
"//vendor/k8s.io/apimachinery/pkg/watch:go_default_library",
|
||||
"//vendor/k8s.io/client-go/rest:go_default_library",
|
||||
],
|
||||
)
|
||||
|
||||
|
@ -20,6 +20,7 @@ import (
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
pkgruntime "k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/watch"
|
||||
restclient "k8s.io/client-go/rest"
|
||||
federationclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset"
|
||||
kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
||||
)
|
||||
@ -61,7 +62,7 @@ type FederatedTypeAdapter interface {
|
||||
// that create instances of FederatedTypeAdapter. Such methods should
|
||||
// be registered with RegisterAdapterFactory to ensure the type
|
||||
// adapter is discoverable.
|
||||
type AdapterFactory func(client federationclientset.Interface) FederatedTypeAdapter
|
||||
type AdapterFactory func(client federationclientset.Interface, config *restclient.Config) FederatedTypeAdapter
|
||||
|
||||
// SetAnnotation sets the given key and value in the given object's ObjectMeta.Annotations map
|
||||
func SetAnnotation(adapter FederatedTypeAdapter, obj pkgruntime.Object, key, value string) {
|
||||
|
@ -22,6 +22,7 @@ import (
|
||||
pkgruntime "k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
"k8s.io/apimachinery/pkg/watch"
|
||||
restclient "k8s.io/client-go/rest"
|
||||
federationclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset"
|
||||
"k8s.io/kubernetes/federation/pkg/federation-controller/util"
|
||||
kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
||||
@ -40,7 +41,7 @@ type ConfigMapAdapter struct {
|
||||
client federationclientset.Interface
|
||||
}
|
||||
|
||||
func NewConfigMapAdapter(client federationclientset.Interface) FederatedTypeAdapter {
|
||||
func NewConfigMapAdapter(client federationclientset.Interface, config *restclient.Config) FederatedTypeAdapter {
|
||||
return &ConfigMapAdapter{client: client}
|
||||
}
|
||||
|
||||
|
@ -25,6 +25,7 @@ import (
|
||||
pkgruntime "k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
"k8s.io/apimachinery/pkg/watch"
|
||||
restclient "k8s.io/client-go/rest"
|
||||
federationclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset"
|
||||
"k8s.io/kubernetes/federation/pkg/federation-controller/util"
|
||||
kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
||||
@ -43,7 +44,7 @@ type DaemonSetAdapter struct {
|
||||
client federationclientset.Interface
|
||||
}
|
||||
|
||||
func NewDaemonSetAdapter(client federationclientset.Interface) FederatedTypeAdapter {
|
||||
func NewDaemonSetAdapter(client federationclientset.Interface, config *restclient.Config) FederatedTypeAdapter {
|
||||
return &DaemonSetAdapter{client: client}
|
||||
}
|
||||
|
||||
|
@ -22,8 +22,8 @@ import (
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
pkgruntime "k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
"k8s.io/apimachinery/pkg/types"
|
||||
"k8s.io/apimachinery/pkg/watch"
|
||||
restclient "k8s.io/client-go/rest"
|
||||
federationclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset"
|
||||
fedutil "k8s.io/kubernetes/federation/pkg/federation-controller/util"
|
||||
kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
||||
@ -44,7 +44,7 @@ type DeploymentAdapter struct {
|
||||
client federationclientset.Interface
|
||||
}
|
||||
|
||||
func NewDeploymentAdapter(client federationclientset.Interface) FederatedTypeAdapter {
|
||||
func NewDeploymentAdapter(client federationclientset.Interface, config *restclient.Config) FederatedTypeAdapter {
|
||||
schedulingAdapter := schedulingAdapter{
|
||||
preferencesAnnotationName: FedDeploymentPreferencesAnnotation,
|
||||
updateStatusFunc: func(obj pkgruntime.Object, status SchedulingStatus) error {
|
||||
@ -91,9 +91,9 @@ func (a *DeploymentAdapter) Equivalent(obj1, obj2 pkgruntime.Object) bool {
|
||||
return fedutil.DeploymentEquivalent(deployment1, deployment2)
|
||||
}
|
||||
|
||||
func (a *DeploymentAdapter) NamespacedName(obj pkgruntime.Object) types.NamespacedName {
|
||||
func (a *DeploymentAdapter) QualifiedName(obj pkgruntime.Object) QualifiedName {
|
||||
deployment := obj.(*extensionsv1.Deployment)
|
||||
return types.NamespacedName{Namespace: deployment.Namespace, Name: deployment.Name}
|
||||
return QualifiedName{Namespace: deployment.Namespace, Name: deployment.Name}
|
||||
}
|
||||
|
||||
func (a *DeploymentAdapter) ObjectMeta(obj pkgruntime.Object) *metav1.ObjectMeta {
|
||||
@ -105,12 +105,12 @@ func (a *DeploymentAdapter) FedCreate(obj pkgruntime.Object) (pkgruntime.Object,
|
||||
return a.client.Extensions().Deployments(deployment.Namespace).Create(deployment)
|
||||
}
|
||||
|
||||
func (a *DeploymentAdapter) FedDelete(namespacedName types.NamespacedName, options *metav1.DeleteOptions) error {
|
||||
return a.client.Extensions().Deployments(namespacedName.Namespace).Delete(namespacedName.Name, options)
|
||||
func (a *DeploymentAdapter) FedDelete(qualifiedName QualifiedName, options *metav1.DeleteOptions) error {
|
||||
return a.client.Extensions().Deployments(qualifiedName.Namespace).Delete(qualifiedName.Name, options)
|
||||
}
|
||||
|
||||
func (a *DeploymentAdapter) FedGet(namespacedName types.NamespacedName) (pkgruntime.Object, error) {
|
||||
return a.client.Extensions().Deployments(namespacedName.Namespace).Get(namespacedName.Name, metav1.GetOptions{})
|
||||
func (a *DeploymentAdapter) FedGet(qualifiedName QualifiedName) (pkgruntime.Object, error) {
|
||||
return a.client.Extensions().Deployments(qualifiedName.Namespace).Get(qualifiedName.Name, metav1.GetOptions{})
|
||||
}
|
||||
|
||||
func (a *DeploymentAdapter) FedList(namespace string, options metav1.ListOptions) (pkgruntime.Object, error) {
|
||||
@ -131,12 +131,12 @@ func (a *DeploymentAdapter) ClusterCreate(client kubeclientset.Interface, obj pk
|
||||
return client.Extensions().Deployments(deployment.Namespace).Create(deployment)
|
||||
}
|
||||
|
||||
func (a *DeploymentAdapter) ClusterDelete(client kubeclientset.Interface, nsName types.NamespacedName, options *metav1.DeleteOptions) error {
|
||||
return client.Extensions().Deployments(nsName.Namespace).Delete(nsName.Name, options)
|
||||
func (a *DeploymentAdapter) ClusterDelete(client kubeclientset.Interface, qualifiedName QualifiedName, options *metav1.DeleteOptions) error {
|
||||
return client.Extensions().Deployments(qualifiedName.Namespace).Delete(qualifiedName.Name, options)
|
||||
}
|
||||
|
||||
func (a *DeploymentAdapter) ClusterGet(client kubeclientset.Interface, namespacedName types.NamespacedName) (pkgruntime.Object, error) {
|
||||
return client.Extensions().Deployments(namespacedName.Namespace).Get(namespacedName.Name, metav1.GetOptions{})
|
||||
func (a *DeploymentAdapter) ClusterGet(client kubeclientset.Interface, qualifiedName QualifiedName) (pkgruntime.Object, error) {
|
||||
return client.Extensions().Deployments(qualifiedName.Namespace).Get(qualifiedName.Name, metav1.GetOptions{})
|
||||
}
|
||||
|
||||
func (a *DeploymentAdapter) ClusterList(client kubeclientset.Interface, namespace string, options metav1.ListOptions) (pkgruntime.Object, error) {
|
||||
|
@ -23,6 +23,7 @@ import (
|
||||
pkgruntime "k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
"k8s.io/apimachinery/pkg/watch"
|
||||
restclient "k8s.io/client-go/rest"
|
||||
federationclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset"
|
||||
fedutil "k8s.io/kubernetes/federation/pkg/federation-controller/util"
|
||||
kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
||||
@ -43,7 +44,7 @@ type ReplicaSetAdapter struct {
|
||||
client federationclientset.Interface
|
||||
}
|
||||
|
||||
func NewReplicaSetAdapter(client federationclientset.Interface) FederatedTypeAdapter {
|
||||
func NewReplicaSetAdapter(client federationclientset.Interface, config *restclient.Config) FederatedTypeAdapter {
|
||||
schedulingAdapter := schedulingAdapter{
|
||||
preferencesAnnotationName: FedReplicaSetPreferencesAnnotation,
|
||||
updateStatusFunc: func(obj pkgruntime.Object, status SchedulingStatus) error {
|
||||
|
@ -22,6 +22,7 @@ import (
|
||||
pkgruntime "k8s.io/apimachinery/pkg/runtime"
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
"k8s.io/apimachinery/pkg/watch"
|
||||
restclient "k8s.io/client-go/rest"
|
||||
federationclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset"
|
||||
"k8s.io/kubernetes/federation/pkg/federation-controller/util"
|
||||
kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
||||
@ -40,7 +41,7 @@ type SecretAdapter struct {
|
||||
client federationclientset.Interface
|
||||
}
|
||||
|
||||
func NewSecretAdapter(client federationclientset.Interface) FederatedTypeAdapter {
|
||||
func NewSecretAdapter(client federationclientset.Interface, config *restclient.Config) FederatedTypeAdapter {
|
||||
return &SecretAdapter{client: client}
|
||||
}
|
||||
|
||||
|
@ -96,7 +96,7 @@ type FederationSyncController struct {
|
||||
func StartFederationSyncController(kind string, adapterFactory federatedtypes.AdapterFactory, config *restclient.Config, stopChan <-chan struct{}, minimizeLatency bool) {
|
||||
restclient.AddUserAgent(config, fmt.Sprintf("federation-%s-controller", kind))
|
||||
client := federationclientset.NewForConfigOrDie(config)
|
||||
adapter := adapterFactory(client)
|
||||
adapter := adapterFactory(client, config)
|
||||
controller := newFederationSyncController(client, adapter)
|
||||
if minimizeLatency {
|
||||
controller.minimizeLatency()
|
||||
|
@ -45,7 +45,7 @@ var _ = framework.KubeDescribe("Federated types [Feature:Federation][Experimenta
|
||||
if clusterClients == nil {
|
||||
clusterClients = f.GetClusterClients()
|
||||
}
|
||||
adapter := fedType.AdapterFactory(f.FederationClientset)
|
||||
adapter := fedType.AdapterFactory(f.FederationClientset, f.FederationConfig)
|
||||
crudTester := fedframework.NewFederatedTypeCRUDTester(adapter, clusterClients)
|
||||
obj := adapter.NewTestObject(f.FederationNamespace.Name)
|
||||
crudTester.CheckLifecycle(obj)
|
||||
|
@ -26,6 +26,8 @@ import (
|
||||
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/util/wait"
|
||||
restclient "k8s.io/client-go/rest"
|
||||
"k8s.io/client-go/tools/clientcmd"
|
||||
"k8s.io/kubernetes/federation/client/clientset_generated/federation_clientset"
|
||||
kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
||||
"k8s.io/kubernetes/test/e2e/framework"
|
||||
@ -44,7 +46,10 @@ type Framework struct {
|
||||
// should abort, the AfterSuite hook should run all Cleanup actions.
|
||||
cleanupHandle framework.CleanupActionHandle
|
||||
|
||||
FederationConfig *restclient.Config
|
||||
|
||||
FederationClientset *federation_clientset.Clientset
|
||||
|
||||
FederationNamespace *v1.Namespace
|
||||
}
|
||||
|
||||
@ -73,10 +78,16 @@ func (f *Framework) FederationBeforeEach() {
|
||||
// https://github.com/onsi/ginkgo/issues/222
|
||||
f.cleanupHandle = framework.AddCleanupAction(f.FederationAfterEach)
|
||||
|
||||
if f.FederationConfig == nil {
|
||||
By("Reading the federation configuration")
|
||||
var err error
|
||||
f.FederationConfig, err = LoadFederatedConfig(&clientcmd.ConfigOverrides{})
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
}
|
||||
if f.FederationClientset == nil {
|
||||
By("Creating a release 1.5 federation Clientset")
|
||||
var err error
|
||||
f.FederationClientset, err = LoadFederationClientset()
|
||||
f.FederationClientset, err = LoadFederationClientset(f.FederationConfig)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
}
|
||||
By("Waiting for federation-apiserver to be ready")
|
||||
|
@ -65,12 +65,7 @@ func WaitForFederationApiserverReady(c *federation_clientset.Clientset) error {
|
||||
})
|
||||
}
|
||||
|
||||
func LoadFederationClientset() (*federation_clientset.Clientset, error) {
|
||||
config, err := LoadFederatedConfig(&clientcmd.ConfigOverrides{})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
func LoadFederationClientset(config *restclient.Config) (*federation_clientset.Clientset, error) {
|
||||
c, err := federation_clientset.NewForConfig(config)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error creating federation clientset: %v", err.Error())
|
||||
@ -83,7 +78,7 @@ func LoadFederatedConfig(overrides *clientcmd.ConfigOverrides) (*restclient.Conf
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error creating federation client config: %v", err.Error())
|
||||
}
|
||||
cfg, err := clientcmd.NewDefaultClientConfig(*c, overrides).ClientConfig()
|
||||
cfg, err := clientcmd.NewDefaultClientConfig(*c, &clientcmd.ConfigOverrides{}).ClientConfig()
|
||||
if cfg != nil {
|
||||
//TODO(colhom): this is only here because https://github.com/kubernetes/kubernetes/issues/25422
|
||||
cfg.NegotiatedSerializer = api.Codecs
|
||||
|
@ -38,7 +38,7 @@ type SimpleUpgradeTest struct {
|
||||
|
||||
// Setup creates a resource and validates its propagation to member clusters
|
||||
func (ut *SimpleUpgradeTest) Setup(f *fedframework.Framework) {
|
||||
adapter := ut.adapterFactory(f.FederationClientset)
|
||||
adapter := ut.adapterFactory(f.FederationClientset, f.FederationConfig)
|
||||
clients := f.GetClusterClients()
|
||||
ut.crudTester = fedframework.NewFederatedTypeCRUDTester(adapter, clients)
|
||||
|
||||
|
@ -104,7 +104,7 @@ func initCRUDTest(t *testing.T, fedFixture *framework.FederationFixture, adapter
|
||||
fixture := framework.NewControllerFixture(t, kind, adapterFactory, config)
|
||||
|
||||
client := fedFixture.APIFixture.NewClient(fmt.Sprintf("crud-test-%s", kind))
|
||||
adapter := adapterFactory(client)
|
||||
adapter := adapterFactory(client, config)
|
||||
|
||||
crudTester := framework.NewFederatedTypeCRUDTester(t, adapter, fedFixture.ClusterClients)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user