Merge pull request #27390 from mml/fed-service-type

Automatic merge from submit-queue

Compare v1.Service to v1.Service.
This commit is contained in:
k8s-merge-robot 2016-06-16 12:45:00 -07:00 committed by GitHub
commit 0856e1dd43
3 changed files with 59 additions and 33 deletions

View File

@ -22,7 +22,7 @@ import (
"time" "time"
"k8s.io/kubernetes/federation/apis/federation" "k8s.io/kubernetes/federation/apis/federation"
"k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset" "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_3"
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/v1" "k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/client/clientset_generated/release_1_3" "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_3"
@ -151,7 +151,7 @@ var _ = framework.KubeDescribe("Service [Feature:Federation]", func() {
It("should be able to discover a federated service", func() { It("should be able to discover a federated service", func() {
framework.SkipUnlessFederated(f.Client) framework.SkipUnlessFederated(f.Client)
createService(f.FederationClientset, clusterClientSets, f.Namespace.Name) createService(f.FederationClientset_1_3, clusterClientSets, f.Namespace.Name)
svcDNSNames := []string{ svcDNSNames := []string{
FederatedServiceName, FederatedServiceName,
@ -168,7 +168,7 @@ var _ = framework.KubeDescribe("Service [Feature:Federation]", func() {
It("should be able to discover a non-local federated service", func() { It("should be able to discover a non-local federated service", func() {
framework.SkipUnlessFederated(f.Client) framework.SkipUnlessFederated(f.Client)
createService(f.FederationClientset, clusterClientSets, f.Namespace.Name) createService(f.FederationClientset_1_3, clusterClientSets, f.Namespace.Name)
// Delete a federated service shard in the default e2e Kubernetes cluster. // Delete a federated service shard in the default e2e Kubernetes cluster.
err := f.Clientset_1_3.Core().Services(f.Namespace.Name).Delete(FederatedServiceName, &api.DeleteOptions{}) err := f.Clientset_1_3.Core().Services(f.Namespace.Name).Delete(FederatedServiceName, &api.DeleteOptions{})
@ -198,7 +198,7 @@ var _ = framework.KubeDescribe("Service [Feature:Federation]", func() {
// service reaches the expected value, i.e. numSvcs in the given individual Kubernetes // service reaches the expected value, i.e. numSvcs in the given individual Kubernetes
// cluster. If the shard count, i.e. numSvcs is expected to be at least one, then // cluster. If the shard count, i.e. numSvcs is expected to be at least one, then
// it also checks if the first shard's name and spec matches that of the given service. // it also checks if the first shard's name and spec matches that of the given service.
func waitForFederatedServiceShard(cs *release_1_3.Clientset, namespace string, service *api.Service, numSvcs int) { func waitForFederatedServiceShard(cs *release_1_3.Clientset, namespace string, service *v1.Service, numSvcs int) {
By("Fetching a federated service shard") By("Fetching a federated service shard")
var clSvcList *v1.ServiceList var clSvcList *v1.ServiceList
if err := wait.PollImmediate(framework.Poll, FederatedServiceTimeout, func() (bool, error) { if err := wait.PollImmediate(framework.Poll, FederatedServiceTimeout, func() (bool, error) {
@ -225,7 +225,7 @@ func waitForFederatedServiceShard(cs *release_1_3.Clientset, namespace string, s
} }
} }
func createService(fcs *federation_internalclientset.Clientset, clusterClientSets []*release_1_3.Clientset, namespace string) { func createService(fcs *federation_release_1_3.Clientset, clusterClientSets []*release_1_3.Clientset, namespace string) {
By("Creating a federated service") By("Creating a federated service")
labels := map[string]string{ labels := map[string]string{
"foo": "bar", "foo": "bar",
@ -234,13 +234,13 @@ func createService(fcs *federation_internalclientset.Clientset, clusterClientSet
svc1port := "svc1" svc1port := "svc1"
svc2port := "svc2" svc2port := "svc2"
service := &api.Service{ service := &v1.Service{
ObjectMeta: api.ObjectMeta{ ObjectMeta: v1.ObjectMeta{
Name: FederatedServiceName, Name: FederatedServiceName,
}, },
Spec: api.ServiceSpec{ Spec: v1.ServiceSpec{
Selector: labels, Selector: labels,
Ports: []api.ServicePort{ Ports: []v1.ServicePort{
{ {
Name: "portname1", Name: "portname1",
Port: 80, Port: 80,
@ -254,10 +254,11 @@ func createService(fcs *federation_internalclientset.Clientset, clusterClientSet
}, },
}, },
} }
_, err := fcs.Core().Services(namespace).Create(service) nservice, err := fcs.Core().Services(namespace).Create(service)
framework.Logf("Trying to create service %q in namespace %q", service.ObjectMeta.Name, service.ObjectMeta.Namespace)
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
for _, cs := range clusterClientSets { for _, cs := range clusterClientSets {
waitForFederatedServiceShard(cs, namespace, service, 1) waitForFederatedServiceShard(cs, namespace, nservice, 1)
} }
} }

View File

@ -27,6 +27,7 @@ import (
"k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset" "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset"
unversionedfederation "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/federation/unversioned" unversionedfederation "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/federation/unversioned"
"k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_3"
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
apierrs "k8s.io/kubernetes/pkg/api/errors" 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_2"
@ -57,7 +58,9 @@ type Framework struct {
Clientset_1_2 *release_1_2.Clientset Clientset_1_2 *release_1_2.Clientset
Clientset_1_3 *release_1_3.Clientset Clientset_1_3 *release_1_3.Clientset
FederationClientset *federation_internalclientset.Clientset // TODO(mml): Remove this. We should generally use the versioned clientset.
FederationClientset *federation_internalclientset.Clientset
FederationClientset_1_3 *federation_release_1_3.Clientset
// TODO: remove FederationClient, all the client access must be through FederationClientset // TODO: remove FederationClient, all the client access must be through FederationClientset
FederationClient *unversionedfederation.FederationClient FederationClient *unversionedfederation.FederationClient
@ -163,11 +166,17 @@ func (f *Framework) BeforeEach() {
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
} }
if f.FederationClientset == nil { if f.FederationClientset == nil {
By("Creating a federation Clientset") By("Creating an unversioned federation Clientset")
var err error var err error
f.FederationClientset, err = LoadFederationClientset() f.FederationClientset, err = LoadFederationClientset()
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
} }
if f.FederationClientset_1_3 == nil {
By("Creating a release 1.3 federation Clientset")
var err error
f.FederationClientset_1_3, err = LoadFederationClientset_1_3()
Expect(err).NotTo(HaveOccurred())
}
} }
By("Building a namespace api object") By("Building a namespace api object")

View File

@ -40,6 +40,7 @@ import (
"k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset" "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset"
unversionedfederation "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/federation/unversioned" unversionedfederation "k8s.io/kubernetes/federation/client/clientset_generated/federation_internalclientset/typed/federation/unversioned"
"k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_3"
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
apierrs "k8s.io/kubernetes/pkg/api/errors" apierrs "k8s.io/kubernetes/pkg/api/errors"
"k8s.io/kubernetes/pkg/api/resource" "k8s.io/kubernetes/pkg/api/resource"
@ -1641,14 +1642,17 @@ func LoadConfig() (*restclient.Config, error) {
func LoadFederatedConfig() (*restclient.Config, error) { func LoadFederatedConfig() (*restclient.Config, error) {
c, err := restclientConfig(federatedKubeContext) c, err := restclientConfig(federatedKubeContext)
if err != nil { if err != nil {
return nil, err return nil, fmt.Errorf("error creating federation client config: %v", err.Error())
} }
cfg, err := clientcmd.NewDefaultClientConfig(*c, &clientcmd.ConfigOverrides{}).ClientConfig() cfg, err := clientcmd.NewDefaultClientConfig(*c, &clientcmd.ConfigOverrides{}).ClientConfig()
if cfg != nil { if cfg != nil {
//TODO(colhom): this is only here because https://github.com/kubernetes/kubernetes/issues/25422 //TODO(colhom): this is only here because https://github.com/kubernetes/kubernetes/issues/25422
cfg.NegotiatedSerializer = api.Codecs cfg.NegotiatedSerializer = api.Codecs
} }
return cfg, err if err != nil {
return cfg, fmt.Errorf("error creating federation client config: %v", err.Error())
}
return cfg, nil
} }
func loadClientFromConfig(config *restclient.Config) (*client.Client, error) { func loadClientFromConfig(config *restclient.Config) (*client.Client, error) {
@ -1662,30 +1666,42 @@ func loadClientFromConfig(config *restclient.Config) (*client.Client, error) {
return c, nil return c, nil
} }
func loadFederationClientsetFromConfig(config *restclient.Config) (*federation_internalclientset.Clientset, error) { func setTimeouts(cs ...*http.Client) {
c, err := federation_internalclientset.NewForConfig(config) for _, client := range cs {
if err != nil { if client.Timeout == 0 {
return nil, fmt.Errorf("error creating federation clientset: %v", err.Error()) client.Timeout = SingleCallTimeout
}
} }
// Set timeout for each client in the set.
if c.DiscoveryClient.Client.Timeout == 0 {
c.DiscoveryClient.Client.Timeout = SingleCallTimeout
}
if c.FederationClient.Client.Timeout == 0 {
c.FederationClient.Client.Timeout = SingleCallTimeout
}
if c.CoreClient.Client.Timeout == 0 {
c.CoreClient.Client.Timeout = SingleCallTimeout
}
return c, nil
} }
func LoadFederationClientset() (*federation_internalclientset.Clientset, error) { func LoadFederationClientset() (*federation_internalclientset.Clientset, error) {
config, err := LoadFederatedConfig() config, err := LoadFederatedConfig()
if err != nil { if err != nil {
return nil, fmt.Errorf("error creating federated client config: %v", err.Error()) return nil, err
} }
return loadFederationClientsetFromConfig(config)
c, err := federation_internalclientset.NewForConfig(config)
if err != nil {
return nil, fmt.Errorf("error creating federation clientset: %v", err.Error())
}
// Set timeout for each client in the set.
setTimeouts(c.DiscoveryClient.Client, c.FederationClient.Client, c.CoreClient.Client)
return c, nil
}
func LoadFederationClientset_1_3() (*federation_release_1_3.Clientset, error) {
config, err := LoadFederatedConfig()
if err != nil {
return nil, err
}
c, err := federation_release_1_3.NewForConfig(config)
if err != nil {
return nil, fmt.Errorf("error creating federation clientset: %v", err.Error())
}
// Set timeout for each client in the set.
setTimeouts(c.DiscoveryClient.Client, c.FederationClient.Client, c.CoreClient.Client)
return c, nil
} }
func loadFederationClientFromConfig(config *restclient.Config) (*unversionedfederation.FederationClient, error) { func loadFederationClientFromConfig(config *restclient.Config) (*unversionedfederation.FederationClient, error) {
@ -1702,7 +1718,7 @@ func loadFederationClientFromConfig(config *restclient.Config) (*unversionedfede
func LoadFederationClient() (*unversionedfederation.FederationClient, error) { func LoadFederationClient() (*unversionedfederation.FederationClient, error) {
config, err := LoadFederatedConfig() config, err := LoadFederatedConfig()
if err != nil { if err != nil {
return nil, fmt.Errorf("error creating client: %v", err.Error()) return nil, err
} }
return loadFederationClientFromConfig(config) return loadFederationClientFromConfig(config)
} }