mirror of
https://github.com/optim-enterprises-bv/kubernetes.git
synced 2025-11-03 03:38:15 +00:00
added a e2e test that uses the staged client; made necessary changes to gcp auth plugin to pass the gke tests
This commit is contained in:
@@ -18,6 +18,7 @@ package framework
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"reflect"
|
||||
@@ -25,6 +26,9 @@ import (
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
release_1_4 "k8s.io/client-go/1.4/kubernetes"
|
||||
"k8s.io/client-go/1.4/pkg/util/sets"
|
||||
clientreporestclient "k8s.io/client-go/1.4/rest"
|
||||
"k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset"
|
||||
unversionedfederation "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/federation/unversioned"
|
||||
"k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_3"
|
||||
@@ -33,6 +37,7 @@ import (
|
||||
apierrs "k8s.io/kubernetes/pkg/api/errors"
|
||||
"k8s.io/kubernetes/pkg/client/clientset_generated/release_1_2"
|
||||
"k8s.io/kubernetes/pkg/client/clientset_generated/release_1_3"
|
||||
"k8s.io/kubernetes/pkg/client/restclient"
|
||||
client "k8s.io/kubernetes/pkg/client/unversioned"
|
||||
"k8s.io/kubernetes/pkg/fields"
|
||||
"k8s.io/kubernetes/pkg/labels"
|
||||
@@ -57,6 +62,7 @@ type Framework struct {
|
||||
Client *client.Client
|
||||
Clientset_1_2 *release_1_2.Clientset
|
||||
Clientset_1_3 *release_1_3.Clientset
|
||||
StagingClient *release_1_4.Clientset
|
||||
|
||||
// TODO(mml): Remove this. We should generally use the versioned clientset.
|
||||
FederationClientset *federation_internalclientset.Clientset
|
||||
@@ -131,6 +137,38 @@ func NewFramework(baseName string, options FrameworkOptions, client *client.Clie
|
||||
return f
|
||||
}
|
||||
|
||||
// getClientRepoConfig copies k8s.io/kubernetes/pkg/client/restclient.Config to
|
||||
// a k8s.io/client-go/pkg/client/restclient.Config. It's not a deep copy. Two
|
||||
// configs may share some common struct.
|
||||
func getClientRepoConfig(src *restclient.Config) (dst *clientreporestclient.Config) {
|
||||
skippedFields := sets.NewString("Transport", "WrapTransport", "RateLimiter", "AuthConfigPersister")
|
||||
dst = &clientreporestclient.Config{}
|
||||
dst.Transport = src.Transport
|
||||
dst.WrapTransport = src.WrapTransport
|
||||
dst.RateLimiter = src.RateLimiter
|
||||
dst.AuthConfigPersister = src.AuthConfigPersister
|
||||
sv := reflect.ValueOf(src).Elem()
|
||||
dv := reflect.ValueOf(dst).Elem()
|
||||
for i := 0; i < sv.NumField(); i++ {
|
||||
if skippedFields.Has(sv.Type().Field(i).Name) {
|
||||
continue
|
||||
}
|
||||
sf := sv.Field(i).Interface()
|
||||
data, err := json.Marshal(sf)
|
||||
if err != nil {
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
}
|
||||
if !dv.Field(i).CanAddr() {
|
||||
Failf("unaddressable field: %v", dv.Type().Field(i).Name)
|
||||
} else {
|
||||
if err := json.Unmarshal(data, dv.Field(i).Addr().Interface()); err != nil {
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
}
|
||||
}
|
||||
}
|
||||
return dst
|
||||
}
|
||||
|
||||
// BeforeEach gets a client and makes a namespace.
|
||||
func (f *Framework) BeforeEach() {
|
||||
// The fact that we need this feels like a bug in ginkgo.
|
||||
@@ -149,9 +187,11 @@ func (f *Framework) BeforeEach() {
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
f.Client = c
|
||||
f.Clientset_1_2, err = release_1_2.NewForConfig(config)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
f.Clientset_1_3, err = release_1_3.NewForConfig(config)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
clientRepoConfig := getClientRepoConfig(config)
|
||||
f.StagingClient, err = release_1_4.NewForConfig(clientRepoConfig)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
}
|
||||
|
||||
if f.federated {
|
||||
|
||||
Reference in New Issue
Block a user