manual changes to let client-gen use versioned options

This commit is contained in:
Chao Xu 2016-09-02 11:57:44 -07:00
parent d26b4ca285
commit 75cc05de82
34 changed files with 401 additions and 317 deletions

View File

@ -88,6 +88,7 @@ func packageForGroup(gv unversioned.GroupVersion, typeList []*types.Type, packag
}, },
outputPackage: outputPackagePath, outputPackage: outputPackagePath,
group: normalization.BeforeFirstDot(gv.Group), group: normalization.BeforeFirstDot(gv.Group),
version: gv.Version,
typeToMatch: t, typeToMatch: t,
imports: generator.NewImportTracker(), imports: generator.NewImportTracker(),
}) })

View File

@ -110,8 +110,6 @@ func (g *genFakeForType) GenerateType(c *generator.Context, t *types.Type, w io.
"groupName": groupName, "groupName": groupName,
"version": canonicalVersion, "version": canonicalVersion,
"watchInterface": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/watch", Name: "Interface"}), "watchInterface": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/watch", Name: "Interface"}),
"apiDeleteOptions": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "DeleteOptions"}),
"apiListOptions": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "ListOptions"}),
"GroupVersionResource": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api/unversioned", Name: "GroupVersionResource"}), "GroupVersionResource": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api/unversioned", Name: "GroupVersionResource"}),
"PatchType": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "PatchType"}), "PatchType": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "PatchType"}),
"Everything": c.Universe.Function(types.Name{Package: "k8s.io/kubernetes/pkg/labels", Name: "Everything"}), "Everything": c.Universe.Function(types.Name{Package: "k8s.io/kubernetes/pkg/labels", Name: "Everything"}),
@ -136,6 +134,15 @@ func (g *genFakeForType) GenerateType(c *generator.Context, t *types.Type, w io.
"NewPatchAction": c.Universe.Function(types.Name{Package: pkgTestingCore, Name: "NewPatchAction"}), "NewPatchAction": c.Universe.Function(types.Name{Package: pkgTestingCore, Name: "NewPatchAction"}),
"NewRootPatchSubresourceAction": c.Universe.Function(types.Name{Package: pkgTestingCore, Name: "NewRootPatchSubresourceAction"}), "NewRootPatchSubresourceAction": c.Universe.Function(types.Name{Package: pkgTestingCore, Name: "NewRootPatchSubresourceAction"}),
"NewPatchSubresourceAction": c.Universe.Function(types.Name{Package: pkgTestingCore, Name: "NewPatchSubresourceAction"}), "NewPatchSubresourceAction": c.Universe.Function(types.Name{Package: pkgTestingCore, Name: "NewPatchSubresourceAction"}),
"ExtractFromListOptions": c.Universe.Function(types.Name{Package: pkgTestingCore, Name: "ExtractFromListOptions"}),
}
if g.version == "unversioned" {
m["DeleteOptions"] = c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "DeleteOptions"})
m["ListOptions"] = c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "ListOptions"})
} else {
m["DeleteOptions"] = c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api/v1", Name: "DeleteOptions"})
m["ListOptions"] = c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api/v1", Name: "ListOptions"})
} }
noMethods := extractBoolTagOrDie("noMethods", t.SecondClosestCommentLines) == true noMethods := extractBoolTagOrDie("noMethods", t.SecondClosestCommentLines) == true
@ -191,7 +198,7 @@ var $.type|allLowercasePlural$Resource = $.GroupVersionResource|raw${Group: "$.g
` `
var listTemplate = ` var listTemplate = `
func (c *Fake$.type|publicPlural$) List(opts $.apiListOptions|raw$) (result *$.type|raw$List, err error) { func (c *Fake$.type|publicPlural$) List(opts $.ListOptions|raw$) (result *$.type|raw$List, err error) {
obj, err := c.Fake. obj, err := c.Fake.
$if .namespaced$Invokes($.NewListAction|raw$($.type|allLowercasePlural$Resource, c.ns, opts), &$.type|raw$List{}) $if .namespaced$Invokes($.NewListAction|raw$($.type|allLowercasePlural$Resource, c.ns, opts), &$.type|raw$List{})
$else$Invokes($.NewRootListAction|raw$($.type|allLowercasePlural$Resource, opts), &$.type|raw$List{})$end$ $else$Invokes($.NewRootListAction|raw$($.type|allLowercasePlural$Resource, opts), &$.type|raw$List{})$end$
@ -203,7 +210,7 @@ func (c *Fake$.type|publicPlural$) List(opts $.apiListOptions|raw$) (result *$.t
` `
var listUsingOptionsTemplate = ` var listUsingOptionsTemplate = `
func (c *Fake$.type|publicPlural$) List(opts $.apiListOptions|raw$) (result *$.type|raw$List, err error) { func (c *Fake$.type|publicPlural$) List(opts $.ListOptions|raw$) (result *$.type|raw$List, err error) {
obj, err := c.Fake. obj, err := c.Fake.
$if .namespaced$Invokes($.NewListAction|raw$($.type|allLowercasePlural$Resource, c.ns, opts), &$.type|raw$List{}) $if .namespaced$Invokes($.NewListAction|raw$($.type|allLowercasePlural$Resource, c.ns, opts), &$.type|raw$List{})
$else$Invokes($.NewRootListAction|raw$($.type|allLowercasePlural$Resource, opts), &$.type|raw$List{})$end$ $else$Invokes($.NewRootListAction|raw$($.type|allLowercasePlural$Resource, opts), &$.type|raw$List{})$end$
@ -211,7 +218,7 @@ func (c *Fake$.type|publicPlural$) List(opts $.apiListOptions|raw$) (result *$.t
return nil, err return nil, err
} }
label := opts.LabelSelector label, _, _ := $.ExtractFromListOptions|raw$(opts)
if label == nil { if label == nil {
label = $.Everything|raw$() label = $.Everything|raw$()
} }
@ -238,7 +245,7 @@ func (c *Fake$.type|publicPlural$) Get(name string) (result *$.type|raw$, err er
` `
var deleteTemplate = ` var deleteTemplate = `
func (c *Fake$.type|publicPlural$) Delete(name string, options *$.apiDeleteOptions|raw$) error { func (c *Fake$.type|publicPlural$) Delete(name string, options *$.DeleteOptions|raw$) error {
_, err := c.Fake. _, err := c.Fake.
$if .namespaced$Invokes($.NewDeleteAction|raw$($.type|allLowercasePlural$Resource, c.ns, name), &$.type|raw${}) $if .namespaced$Invokes($.NewDeleteAction|raw$($.type|allLowercasePlural$Resource, c.ns, name), &$.type|raw${})
$else$Invokes($.NewRootDeleteAction|raw$($.type|allLowercasePlural$Resource, name), &$.type|raw${})$end$ $else$Invokes($.NewRootDeleteAction|raw$($.type|allLowercasePlural$Resource, name), &$.type|raw${})$end$
@ -247,7 +254,7 @@ func (c *Fake$.type|publicPlural$) Delete(name string, options *$.apiDeleteOptio
` `
var deleteCollectionTemplate = ` var deleteCollectionTemplate = `
func (c *Fake$.type|publicPlural$) DeleteCollection(options *$.apiDeleteOptions|raw$, listOptions $.apiListOptions|raw$) error { func (c *Fake$.type|publicPlural$) DeleteCollection(options *$.DeleteOptions|raw$, listOptions $.ListOptions|raw$) error {
$if .namespaced$action := $.NewDeleteCollectionAction|raw$($.type|allLowercasePlural$Resource, c.ns, listOptions) $if .namespaced$action := $.NewDeleteCollectionAction|raw$($.type|allLowercasePlural$Resource, c.ns, listOptions)
$else$action := $.NewRootDeleteCollectionAction|raw$($.type|allLowercasePlural$Resource, listOptions) $else$action := $.NewRootDeleteCollectionAction|raw$($.type|allLowercasePlural$Resource, listOptions)
$end$ $end$
@ -294,7 +301,7 @@ func (c *Fake$.type|publicPlural$) UpdateStatus($.type|private$ *$.type|raw$) (*
var watchTemplate = ` var watchTemplate = `
// Watch returns a $.watchInterface|raw$ that watches the requested $.type|privatePlural$. // Watch returns a $.watchInterface|raw$ that watches the requested $.type|privatePlural$.
func (c *Fake$.type|publicPlural$) Watch(opts $.apiListOptions|raw$) ($.watchInterface|raw$, error) { func (c *Fake$.type|publicPlural$) Watch(opts $.ListOptions|raw$) ($.watchInterface|raw$, error) {
return c.Fake. return c.Fake.
$if .namespaced$InvokesWatch($.NewWatchAction|raw$($.type|allLowercasePlural$Resource, c.ns, opts)) $if .namespaced$InvokesWatch($.NewWatchAction|raw$($.type|allLowercasePlural$Resource, c.ns, opts))
$else$InvokesWatch($.NewRootWatchAction|raw$($.type|allLowercasePlural$Resource, opts))$end$ $else$InvokesWatch($.NewRootWatchAction|raw$($.type|allLowercasePlural$Resource, opts))$end$

View File

@ -31,6 +31,7 @@ type genClientForType struct {
generator.DefaultGen generator.DefaultGen
outputPackage string outputPackage string
group string group string
version string
typeToMatch *types.Type typeToMatch *types.Type
imports namer.ImportTracker imports namer.ImportTracker
} }
@ -73,13 +74,19 @@ func (g *genClientForType) GenerateType(c *generator.Context, t *types.Type, w i
"Package": namer.IC(pkg), "Package": namer.IC(pkg),
"Group": namer.IC(g.group), "Group": namer.IC(g.group),
"watchInterface": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/watch", Name: "Interface"}), "watchInterface": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/watch", Name: "Interface"}),
"apiDeleteOptions": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "DeleteOptions"}),
"apiListOptions": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "ListOptions"}),
"apiParameterCodec": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "ParameterCodec"}), "apiParameterCodec": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "ParameterCodec"}),
"PatchType": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "PatchType"}), "PatchType": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "PatchType"}),
"namespaced": namespaced, "namespaced": namespaced,
} }
if g.version == "unversioned" {
m["DeleteOptions"] = c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "DeleteOptions"})
m["ListOptions"] = c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "ListOptions"})
} else {
m["DeleteOptions"] = c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api/v1", Name: "DeleteOptions"})
m["ListOptions"] = c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api/v1", Name: "ListOptions"})
}
sw.Do(getterComment, m) sw.Do(getterComment, m)
if namespaced { if namespaced {
sw.Do(getterNamesapced, m) sw.Do(getterNamesapced, m)
@ -156,11 +163,11 @@ var interfaceUpdateStatusTemplate = `
// template for the Interface // template for the Interface
var interfaceTemplate3 = ` var interfaceTemplate3 = `
Delete(name string, options *$.apiDeleteOptions|raw$) error Delete(name string, options *$.DeleteOptions|raw$) error
DeleteCollection(options *$.apiDeleteOptions|raw$, listOptions $.apiListOptions|raw$) error DeleteCollection(options *$.DeleteOptions|raw$, listOptions $.ListOptions|raw$) error
Get(name string) (*$.type|raw$, error) Get(name string) (*$.type|raw$, error)
List(opts $.apiListOptions|raw$) (*$.type|raw$List, error) List(opts $.ListOptions|raw$) (*$.type|raw$List, error)
Watch(opts $.apiListOptions|raw$) ($.watchInterface|raw$, error) Watch(opts $.ListOptions|raw$) ($.watchInterface|raw$, error)
Patch(name string, pt $.PatchType|raw$, data []byte, subresources ...string) (result *$.type|raw$, err error)` Patch(name string, pt $.PatchType|raw$, data []byte, subresources ...string) (result *$.type|raw$, err error)`
var interfaceTemplate4 = ` var interfaceTemplate4 = `
@ -206,7 +213,7 @@ func new$.type|publicPlural$(c *$.Group$Client) *$.type|privatePlural$ {
var listTemplate = ` var listTemplate = `
// List takes label and field selectors, and returns the list of $.type|publicPlural$ that match those selectors. // List takes label and field selectors, and returns the list of $.type|publicPlural$ that match those selectors.
func (c *$.type|privatePlural$) List(opts $.apiListOptions|raw$) (result *$.type|raw$List, err error) { func (c *$.type|privatePlural$) List(opts $.ListOptions|raw$) (result *$.type|raw$List, err error) {
result = &$.type|raw$List{} result = &$.type|raw$List{}
err = c.client.Get(). err = c.client.Get().
$if .namespaced$Namespace(c.ns).$end$ $if .namespaced$Namespace(c.ns).$end$
@ -233,7 +240,7 @@ func (c *$.type|privatePlural$) Get(name string) (result *$.type|raw$, err error
var deleteTemplate = ` var deleteTemplate = `
// Delete takes name of the $.type|private$ and deletes it. Returns an error if one occurs. // Delete takes name of the $.type|private$ and deletes it. Returns an error if one occurs.
func (c *$.type|privatePlural$) Delete(name string, options *$.apiDeleteOptions|raw$) error { func (c *$.type|privatePlural$) Delete(name string, options *$.DeleteOptions|raw$) error {
return c.client.Delete(). return c.client.Delete().
$if .namespaced$Namespace(c.ns).$end$ $if .namespaced$Namespace(c.ns).$end$
Resource("$.type|allLowercasePlural$"). Resource("$.type|allLowercasePlural$").
@ -246,7 +253,7 @@ func (c *$.type|privatePlural$) Delete(name string, options *$.apiDeleteOptions|
var deleteCollectionTemplate = ` var deleteCollectionTemplate = `
// DeleteCollection deletes a collection of objects. // DeleteCollection deletes a collection of objects.
func (c *$.type|privatePlural$) DeleteCollection(options *$.apiDeleteOptions|raw$, listOptions $.apiListOptions|raw$) error { func (c *$.type|privatePlural$) DeleteCollection(options *$.DeleteOptions|raw$, listOptions $.ListOptions|raw$) error {
return c.client.Delete(). return c.client.Delete().
$if .namespaced$Namespace(c.ns).$end$ $if .namespaced$Namespace(c.ns).$end$
Resource("$.type|allLowercasePlural$"). Resource("$.type|allLowercasePlural$").
@ -303,7 +310,7 @@ func (c *$.type|privatePlural$) UpdateStatus($.type|private$ *$.type|raw$) (resu
var watchTemplate = ` var watchTemplate = `
// Watch returns a $.watchInterface|raw$ that watches the requested $.type|privatePlural$. // Watch returns a $.watchInterface|raw$ that watches the requested $.type|privatePlural$.
func (c *$.type|privatePlural$) Watch(opts $.apiListOptions|raw$) ($.watchInterface|raw$, error) { func (c *$.type|privatePlural$) Watch(opts $.ListOptions|raw$) ($.watchInterface|raw$, error) {
return c.client.Get(). return c.client.Get().
Prefix("watch"). Prefix("watch").
$if .namespaced$Namespace(c.ns).$end$ $if .namespaced$Namespace(c.ns).$end$

View File

@ -95,7 +95,7 @@ func (c *FakeTestTypes) List(opts api.ListOptions) (result *testgroup_k8s_io.Tes
return nil, err return nil, err
} }
label := opts.LabelSelector label, _, _ := core.ExtractFromListOptions(opts)
if label == nil { if label == nil {
label = labels.Everything() label = labels.Everything()
} }

View File

@ -24,7 +24,9 @@ import (
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_5" federationclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5"
"k8s.io/kubernetes/federation/pkg/federation-controller/util"
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/client/cache" "k8s.io/kubernetes/pkg/client/cache"
"k8s.io/kubernetes/pkg/controller" "k8s.io/kubernetes/pkg/controller"
"k8s.io/kubernetes/pkg/runtime" "k8s.io/kubernetes/pkg/runtime"
@ -65,10 +67,12 @@ func NewclusterController(federationClient federationclientset.Interface, cluste
cc.clusterStore.Store, cc.clusterController = cache.NewInformer( cc.clusterStore.Store, cc.clusterController = cache.NewInformer(
&cache.ListWatch{ &cache.ListWatch{
ListFunc: func(options api.ListOptions) (runtime.Object, error) { ListFunc: func(options api.ListOptions) (runtime.Object, error) {
return cc.federationClient.Federation().Clusters().List(options) versionedOptions := util.VersionizeV1ListOptions(options)
return cc.federationClient.Federation().Clusters().List(versionedOptions)
}, },
WatchFunc: func(options api.ListOptions) (watch.Interface, error) { WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
return cc.federationClient.Federation().Clusters().Watch(options) versionedOptions := util.VersionizeV1ListOptions(options)
return cc.federationClient.Federation().Clusters().Watch(versionedOptions)
}, },
}, },
&federation_v1beta1.Cluster{}, &federation_v1beta1.Cluster{},
@ -134,7 +138,7 @@ func (cc *ClusterController) GetClusterStatus(cluster *federation_v1beta1.Cluste
// UpdateClusterStatus checks cluster status and get the metrics from cluster's restapi // UpdateClusterStatus checks cluster status and get the metrics from cluster's restapi
func (cc *ClusterController) UpdateClusterStatus() error { func (cc *ClusterController) UpdateClusterStatus() error {
clusters, err := cc.federationClient.Federation().Clusters().List(api.ListOptions{}) clusters, err := cc.federationClient.Federation().Clusters().List(v1.ListOptions{})
if err != nil { if err != nil {
return err return err
} }

View File

@ -127,10 +127,12 @@ func NewIngressController(client federationclientset.Interface) *IngressControll
ic.ingressInformerStore, ic.ingressInformerController = cache.NewInformer( ic.ingressInformerStore, ic.ingressInformerController = cache.NewInformer(
&cache.ListWatch{ &cache.ListWatch{
ListFunc: func(options api.ListOptions) (pkg_runtime.Object, error) { ListFunc: func(options api.ListOptions) (pkg_runtime.Object, error) {
return client.Extensions().Ingresses(api.NamespaceAll).List(options) versionedOptions := util.VersionizeV1ListOptions(options)
return client.Extensions().Ingresses(api.NamespaceAll).List(versionedOptions)
}, },
WatchFunc: func(options api.ListOptions) (watch.Interface, error) { WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
return client.Extensions().Ingresses(api.NamespaceAll).Watch(options) versionedOptions := util.VersionizeV1ListOptions(options)
return client.Extensions().Ingresses(api.NamespaceAll).Watch(versionedOptions)
}, },
}, },
&extensions_v1beta1.Ingress{}, &extensions_v1beta1.Ingress{},
@ -148,10 +150,12 @@ func NewIngressController(client federationclientset.Interface) *IngressControll
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) {
return targetClient.Extensions().Ingresses(api.NamespaceAll).List(options) versionedOptions := util.VersionizeV1ListOptions(options)
return targetClient.Extensions().Ingresses(api.NamespaceAll).List(versionedOptions)
}, },
WatchFunc: func(options api.ListOptions) (watch.Interface, error) { WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
return targetClient.Extensions().Ingresses(api.NamespaceAll).Watch(options) versionedOptions := util.VersionizeV1ListOptions(options)
return targetClient.Extensions().Ingresses(api.NamespaceAll).Watch(versionedOptions)
}, },
}, },
&extensions_v1beta1.Ingress{}, &extensions_v1beta1.Ingress{},
@ -184,13 +188,15 @@ func NewIngressController(client federationclientset.Interface) *IngressControll
if targetClient == nil { if targetClient == nil {
glog.Errorf("Internal error: targetClient is nil") glog.Errorf("Internal error: targetClient is nil")
} }
return targetClient.Core().ConfigMaps(uidConfigMapNamespace).List(options) // we only want to list one by name - unfortunately Kubernetes don't have a selector for that. versionedOptions := util.VersionizeV1ListOptions(options)
return targetClient.Core().ConfigMaps(uidConfigMapNamespace).List(versionedOptions) // we only want to list one by name - unfortunately Kubernetes don't have a selector for that.
}, },
WatchFunc: func(options api.ListOptions) (watch.Interface, error) { WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
if targetClient == nil { if targetClient == nil {
glog.Errorf("Internal error: targetClient is nil") glog.Errorf("Internal error: targetClient is nil")
} }
return targetClient.Core().ConfigMaps(uidConfigMapNamespace).Watch(options) // as above versionedOptions := util.VersionizeV1ListOptions(options)
return targetClient.Core().ConfigMaps(uidConfigMapNamespace).Watch(versionedOptions) // as above
}, },
}, },
&v1.ConfigMap{}, &v1.ConfigMap{},
@ -238,7 +244,7 @@ func NewIngressController(client federationclientset.Interface) *IngressControll
func(client kubeclientset.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, &v1.DeleteOptions{})
return err return err
}) })
@ -267,7 +273,7 @@ func NewIngressController(client federationclientset.Interface) *IngressControll
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)
err := client.Core().ConfigMaps(configMap.Namespace).Delete(configMap.Name, &api.DeleteOptions{}) err := client.Core().ConfigMaps(configMap.Namespace).Delete(configMap.Name, &v1.DeleteOptions{})
return err return err
}) })
return ic return ic

View File

@ -102,10 +102,12 @@ func NewNamespaceController(client federationclientset.Interface) *NamespaceCont
nc.namespaceInformerStore, nc.namespaceInformerController = cache.NewInformer( nc.namespaceInformerStore, nc.namespaceInformerController = cache.NewInformer(
&cache.ListWatch{ &cache.ListWatch{
ListFunc: func(options api.ListOptions) (pkg_runtime.Object, error) { ListFunc: func(options api.ListOptions) (pkg_runtime.Object, error) {
return client.Core().Namespaces().List(options) versionedOptions := util.VersionizeV1ListOptions(options)
return client.Core().Namespaces().List(versionedOptions)
}, },
WatchFunc: func(options api.ListOptions) (watch.Interface, error) { WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
return client.Core().Namespaces().Watch(options) versionedOptions := util.VersionizeV1ListOptions(options)
return client.Core().Namespaces().Watch(versionedOptions)
}, },
}, },
&api_v1.Namespace{}, &api_v1.Namespace{},
@ -119,10 +121,12 @@ func NewNamespaceController(client federationclientset.Interface) *NamespaceCont
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) {
return targetClient.Core().Namespaces().List(options) versionedOptions := util.VersionizeV1ListOptions(options)
return targetClient.Core().Namespaces().List(versionedOptions)
}, },
WatchFunc: func(options api.ListOptions) (watch.Interface, error) { WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
return targetClient.Core().Namespaces().Watch(options) versionedOptions := util.VersionizeV1ListOptions(options)
return targetClient.Core().Namespaces().Watch(versionedOptions)
}, },
}, },
&api_v1.Namespace{}, &api_v1.Namespace{},
@ -156,7 +160,7 @@ func NewNamespaceController(client federationclientset.Interface) *NamespaceCont
}, },
func(client kubeclientset.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_v1.DeleteOptions{})
return err return err
}) })
return nc return nc
@ -345,23 +349,23 @@ func (nc *NamespaceController) delete(namespace *api_v1.Namespace) error {
// Right now there is just 5 types of objects: ReplicaSet, Secret, Ingress, Events and Service. // Right now there is just 5 types of objects: ReplicaSet, Secret, Ingress, Events and Service.
// Temporarly these items are simply deleted one by one to squeeze this code into 1.4. // Temporarly these items are simply deleted one by one to squeeze this code into 1.4.
// TODO: Make it generic (like in the regular namespace controller) and parallel. // TODO: Make it generic (like in the regular namespace controller) and parallel.
err := nc.federatedApiClient.Core().Services(namespace.Name).DeleteCollection(&api.DeleteOptions{}, api.ListOptions{}) err := nc.federatedApiClient.Core().Services(namespace.Name).DeleteCollection(&api_v1.DeleteOptions{}, api_v1.ListOptions{})
if err != nil { if err != nil {
return fmt.Errorf("failed to delete service list: %v", err) return fmt.Errorf("failed to delete service list: %v", err)
} }
err = nc.federatedApiClient.Extensions().ReplicaSets(namespace.Name).DeleteCollection(&api.DeleteOptions{}, api.ListOptions{}) err = nc.federatedApiClient.Extensions().ReplicaSets(namespace.Name).DeleteCollection(&api_v1.DeleteOptions{}, api_v1.ListOptions{})
if err != nil { if err != nil {
return fmt.Errorf("failed to delete replicaset list from namespace: %v", err) return fmt.Errorf("failed to delete replicaset list from namespace: %v", err)
} }
err = nc.federatedApiClient.Core().Secrets(namespace.Name).DeleteCollection(&api.DeleteOptions{}, api.ListOptions{}) err = nc.federatedApiClient.Core().Secrets(namespace.Name).DeleteCollection(&api_v1.DeleteOptions{}, api_v1.ListOptions{})
if err != nil { if err != nil {
return fmt.Errorf("failed to delete secret list from namespace: %v", err) return fmt.Errorf("failed to delete secret list from namespace: %v", err)
} }
err = nc.federatedApiClient.Extensions().Ingresses(namespace.Name).DeleteCollection(&api.DeleteOptions{}, api.ListOptions{}) err = nc.federatedApiClient.Extensions().Ingresses(namespace.Name).DeleteCollection(&api_v1.DeleteOptions{}, api_v1.ListOptions{})
if err != nil { if err != nil {
return fmt.Errorf("failed to delete ingresses list from namespace: %v", err) return fmt.Errorf("failed to delete ingresses list from namespace: %v", err)
} }
err = nc.federatedApiClient.Core().Events(namespace.Name).DeleteCollection(&api.DeleteOptions{}, api.ListOptions{}) err = nc.federatedApiClient.Core().Events(namespace.Name).DeleteCollection(&api_v1.DeleteOptions{}, api_v1.ListOptions{})
if err != nil { if err != nil {
return fmt.Errorf("failed to delete events list from namespace: %v", err) return fmt.Errorf("failed to delete events list from namespace: %v", err)
} }
@ -385,7 +389,7 @@ func (nc *NamespaceController) delete(namespace *api_v1.Namespace) error {
} }
// TODO: What about namespaces in subclusters ??? // TODO: What about namespaces in subclusters ???
err = nc.federatedApiClient.Core().Namespaces().Delete(updatedNamespace.Name, &api.DeleteOptions{}) err = nc.federatedApiClient.Core().Namespaces().Delete(updatedNamespace.Name, &api_v1.DeleteOptions{})
if err != nil { if err != nil {
// Its all good if the error is not found error. That means it is deleted already and we do not have to do anything. // Its all good if the error is not found error. That means it is deleted already and we do not have to do anything.
// This is expected when we are processing an update as a result of namespace finalizer deletion. // This is expected when we are processing an update as a result of namespace finalizer deletion.

View File

@ -121,10 +121,12 @@ func NewReplicaSetController(federationClient fedclientset.Interface) *ReplicaSe
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) {
return clientset.Extensions().ReplicaSets(apiv1.NamespaceAll).List(options) versionedOptions := fedutil.VersionizeV1ListOptions(options)
return clientset.Extensions().ReplicaSets(apiv1.NamespaceAll).List(versionedOptions)
}, },
WatchFunc: func(options api.ListOptions) (watch.Interface, error) { WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
return clientset.Extensions().ReplicaSets(apiv1.NamespaceAll).Watch(options) versionedOptions := fedutil.VersionizeV1ListOptions(options)
return clientset.Extensions().ReplicaSets(apiv1.NamespaceAll).Watch(versionedOptions)
}, },
}, },
&extensionsv1.ReplicaSet{}, &extensionsv1.ReplicaSet{},
@ -148,10 +150,12 @@ func NewReplicaSetController(federationClient fedclientset.Interface) *ReplicaSe
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) {
return clientset.Core().Pods(apiv1.NamespaceAll).List(options) versionedOptions := fedutil.VersionizeV1ListOptions(options)
return clientset.Core().Pods(apiv1.NamespaceAll).List(versionedOptions)
}, },
WatchFunc: func(options api.ListOptions) (watch.Interface, error) { WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
return clientset.Core().Pods(apiv1.NamespaceAll).Watch(options) versionedOptions := fedutil.VersionizeV1ListOptions(options)
return clientset.Core().Pods(apiv1.NamespaceAll).Watch(versionedOptions)
}, },
}, },
&apiv1.Pod{}, &apiv1.Pod{},
@ -168,10 +172,12 @@ func NewReplicaSetController(federationClient fedclientset.Interface) *ReplicaSe
frsc.replicaSetStore.Store, frsc.replicaSetController = cache.NewInformer( frsc.replicaSetStore.Store, frsc.replicaSetController = cache.NewInformer(
&cache.ListWatch{ &cache.ListWatch{
ListFunc: func(options api.ListOptions) (runtime.Object, error) { ListFunc: func(options api.ListOptions) (runtime.Object, error) {
return frsc.fedClient.Extensions().ReplicaSets(apiv1.NamespaceAll).List(options) versionedOptions := fedutil.VersionizeV1ListOptions(options)
return frsc.fedClient.Extensions().ReplicaSets(apiv1.NamespaceAll).List(versionedOptions)
}, },
WatchFunc: func(options api.ListOptions) (watch.Interface, error) { WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
return frsc.fedClient.Extensions().ReplicaSets(apiv1.NamespaceAll).Watch(options) versionedOptions := fedutil.VersionizeV1ListOptions(options)
return frsc.fedClient.Extensions().ReplicaSets(apiv1.NamespaceAll).Watch(versionedOptions)
}, },
}, },
&extensionsv1.ReplicaSet{}, &extensionsv1.ReplicaSet{},
@ -194,7 +200,7 @@ func NewReplicaSetController(federationClient fedclientset.Interface) *ReplicaSe
}, },
func(client kubeclientset.Interface, obj runtime.Object) error { func(client kubeclientset.Interface, obj runtime.Object) error {
rs := obj.(*extensionsv1.ReplicaSet) rs := obj.(*extensionsv1.ReplicaSet)
err := client.Extensions().ReplicaSets(rs.Namespace).Delete(rs.Name, &api.DeleteOptions{}) err := client.Extensions().ReplicaSets(rs.Namespace).Delete(rs.Name, &apiv1.DeleteOptions{})
return err return err
}) })

View File

@ -99,10 +99,12 @@ func NewSecretController(client federationclientset.Interface) *SecretController
secretcontroller.secretInformerStore, secretcontroller.secretInformerController = cache.NewInformer( secretcontroller.secretInformerStore, secretcontroller.secretInformerController = cache.NewInformer(
&cache.ListWatch{ &cache.ListWatch{
ListFunc: func(options api.ListOptions) (pkg_runtime.Object, error) { ListFunc: func(options api.ListOptions) (pkg_runtime.Object, error) {
return client.Core().Secrets(api_v1.NamespaceAll).List(options) versionedOptions := util.VersionizeV1ListOptions(options)
return client.Core().Secrets(api_v1.NamespaceAll).List(versionedOptions)
}, },
WatchFunc: func(options api.ListOptions) (watch.Interface, error) { WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
return client.Core().Secrets(api_v1.NamespaceAll).Watch(options) versionedOptions := util.VersionizeV1ListOptions(options)
return client.Core().Secrets(api_v1.NamespaceAll).Watch(versionedOptions)
}, },
}, },
&api_v1.Secret{}, &api_v1.Secret{},
@ -116,10 +118,12 @@ func NewSecretController(client federationclientset.Interface) *SecretController
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) {
return targetClient.Core().Secrets(api_v1.NamespaceAll).List(options) versionedOptions := util.VersionizeV1ListOptions(options)
return targetClient.Core().Secrets(api_v1.NamespaceAll).List(versionedOptions)
}, },
WatchFunc: func(options api.ListOptions) (watch.Interface, error) { WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
return targetClient.Core().Secrets(api_v1.NamespaceAll).Watch(options) versionedOptions := util.VersionizeV1ListOptions(options)
return targetClient.Core().Secrets(api_v1.NamespaceAll).Watch(versionedOptions)
}, },
}, },
&api_v1.Secret{}, &api_v1.Secret{},
@ -155,7 +159,7 @@ func NewSecretController(client federationclientset.Interface) *SecretController
}, },
func(client kubeclientset.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_v1.DeleteOptions{})
return err return err
}) })
return secretcontroller return secretcontroller

View File

@ -93,10 +93,12 @@ func (cc *clusterClientCache) startClusterLW(cluster *v1beta1.Cluster, clusterNa
cachedClusterClient.endpointStore.Store, cachedClusterClient.endpointController = cache.NewInformer( cachedClusterClient.endpointStore.Store, cachedClusterClient.endpointController = cache.NewInformer(
&cache.ListWatch{ &cache.ListWatch{
ListFunc: func(options api.ListOptions) (pkg_runtime.Object, error) { ListFunc: func(options api.ListOptions) (pkg_runtime.Object, error) {
return clientset.Core().Endpoints(v1.NamespaceAll).List(options) versionedOptions := util.VersionizeV1ListOptions(options)
return clientset.Core().Endpoints(v1.NamespaceAll).List(versionedOptions)
}, },
WatchFunc: func(options api.ListOptions) (watch.Interface, error) { WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
return clientset.Core().Endpoints(v1.NamespaceAll).Watch(options) versionedOptions := util.VersionizeV1ListOptions(options)
return clientset.Core().Endpoints(v1.NamespaceAll).Watch(versionedOptions)
}, },
}, },
&v1.Endpoints{}, &v1.Endpoints{},
@ -117,10 +119,12 @@ func (cc *clusterClientCache) startClusterLW(cluster *v1beta1.Cluster, clusterNa
cachedClusterClient.serviceStore.Indexer, cachedClusterClient.serviceController = cache.NewIndexerInformer( cachedClusterClient.serviceStore.Indexer, cachedClusterClient.serviceController = cache.NewIndexerInformer(
&cache.ListWatch{ &cache.ListWatch{
ListFunc: func(options api.ListOptions) (pkg_runtime.Object, error) { ListFunc: func(options api.ListOptions) (pkg_runtime.Object, error) {
return clientset.Core().Services(v1.NamespaceAll).List(options) versionedOptions := util.VersionizeV1ListOptions(options)
return clientset.Core().Services(v1.NamespaceAll).List(versionedOptions)
}, },
WatchFunc: func(options api.ListOptions) (watch.Interface, error) { WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
return clientset.Core().Services(v1.NamespaceAll).Watch(options) versionedOptions := util.VersionizeV1ListOptions(options)
return clientset.Core().Services(v1.NamespaceAll).Watch(versionedOptions)
}, },
}, },
&v1.Service{}, &v1.Service{},

View File

@ -28,6 +28,7 @@ import (
federationcache "k8s.io/kubernetes/federation/client/cache" federationcache "k8s.io/kubernetes/federation/client/cache"
fedclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5" 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/federation/pkg/federation-controller/util"
"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"
@ -159,10 +160,12 @@ func New(federationClient fedclientset.Interface, dns dnsprovider.Interface, fed
s.serviceStore.Indexer, s.serviceController = cache.NewIndexerInformer( s.serviceStore.Indexer, s.serviceController = cache.NewIndexerInformer(
&cache.ListWatch{ &cache.ListWatch{
ListFunc: func(options api.ListOptions) (pkg_runtime.Object, error) { ListFunc: func(options api.ListOptions) (pkg_runtime.Object, error) {
return s.federationClient.Core().Services(v1.NamespaceAll).List(options) versionedOptions := util.VersionizeV1ListOptions(options)
return s.federationClient.Core().Services(v1.NamespaceAll).List(versionedOptions)
}, },
WatchFunc: func(options api.ListOptions) (watch.Interface, error) { WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
return s.federationClient.Core().Services(v1.NamespaceAll).Watch(options) versionedOptions := util.VersionizeV1ListOptions(options)
return s.federationClient.Core().Services(v1.NamespaceAll).Watch(versionedOptions)
}, },
}, },
&v1.Service{}, &v1.Service{},
@ -182,10 +185,12 @@ func New(federationClient fedclientset.Interface, dns dnsprovider.Interface, fed
s.clusterStore.Store, s.clusterController = cache.NewInformer( s.clusterStore.Store, s.clusterController = cache.NewInformer(
&cache.ListWatch{ &cache.ListWatch{
ListFunc: func(options api.ListOptions) (pkg_runtime.Object, error) { ListFunc: func(options api.ListOptions) (pkg_runtime.Object, error) {
return s.federationClient.Federation().Clusters().List(options) versionedOptions := util.VersionizeV1ListOptions(options)
return s.federationClient.Federation().Clusters().List(versionedOptions)
}, },
WatchFunc: func(options api.ListOptions) (watch.Interface, error) { WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
return s.federationClient.Federation().Clusters().Watch(options) versionedOptions := util.VersionizeV1ListOptions(options)
return s.federationClient.Federation().Clusters().Watch(versionedOptions)
}, },
}, },
&v1beta1.Cluster{}, &v1beta1.Cluster{},
@ -387,7 +392,7 @@ func (s *ServiceController) deleteClusterService(clusterName string, cachedServi
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
for i := 0; i < clientRetryCount; i++ { for i := 0; i < clientRetryCount; i++ {
err = clientset.Core().Services(service.Namespace).Delete(service.Name, &api.DeleteOptions{}) err = clientset.Core().Services(service.Namespace).Delete(service.Name, &v1.DeleteOptions{})
if err == nil || errors.IsNotFound(err) { if err == nil || errors.IsNotFound(err) {
glog.V(4).Infof("Service %s/%s deleted from cluster %s", service.Namespace, service.Name, clusterName) glog.V(4).Infof("Service %s/%s deleted from cluster %s", service.Namespace, service.Name, clusterName)
delete(cachedService.endpointMap, clusterName) delete(cachedService.endpointMap, clusterName)

View File

@ -156,10 +156,12 @@ func NewFederatedInformer(
federatedInformer.clusterInformer.store, federatedInformer.clusterInformer.controller = cache.NewInformer( federatedInformer.clusterInformer.store, federatedInformer.clusterInformer.controller = cache.NewInformer(
&cache.ListWatch{ &cache.ListWatch{
ListFunc: func(options api.ListOptions) (pkg_runtime.Object, error) { ListFunc: func(options api.ListOptions) (pkg_runtime.Object, error) {
return federationClient.Federation().Clusters().List(options) versionedOptions := VersionizeV1ListOptions(options)
return federationClient.Federation().Clusters().List(versionedOptions)
}, },
WatchFunc: func(options api.ListOptions) (watch.Interface, error) { WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
return federationClient.Federation().Clusters().Watch(options) versionedOptions := VersionizeV1ListOptions(options)
return federationClient.Federation().Clusters().Watch(versionedOptions)
}, },
}, },
&federation_api.Cluster{}, &federation_api.Cluster{},

View File

@ -82,10 +82,12 @@ func TestFederatedInformer(t *testing.T) {
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) {
return clientset.Core().Services(api_v1.NamespaceAll).List(options) versionedOptions := VersionizeV1ListOptions(options)
return clientset.Core().Services(api_v1.NamespaceAll).List(versionedOptions)
}, },
WatchFunc: func(options api.ListOptions) (watch.Interface, error) { WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
return clientset.Core().Services(api_v1.NamespaceAll).Watch(options) versionedOptions := VersionizeV1ListOptions(options)
return clientset.Core().Services(api_v1.NamespaceAll).Watch(versionedOptions)
}, },
}, },
&api_v1.Service{}, &api_v1.Service{},

View File

@ -0,0 +1,40 @@
/*
Copyright 2016 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package util
import (
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/v1"
)
// TODO: remove this when Reflector takes an interface rather than a particular ListOptions as input parameter.
func VersionizeV1ListOptions(in api.ListOptions) (out v1.ListOptions) {
if in.LabelSelector != nil {
out.LabelSelector = in.LabelSelector.String()
} else {
out.LabelSelector = ""
}
if in.FieldSelector != nil {
out.FieldSelector = in.FieldSelector.String()
} else {
out.FieldSelector = ""
}
out.Watch = in.Watch
out.ResourceVersion = in.ResourceVersion
out.TimeoutSeconds = in.TimeoutSeconds
return out
}

33
pkg/api/v1/helpers.go Normal file
View File

@ -0,0 +1,33 @@
/*
Copyright 2016 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package v1
import "k8s.io/kubernetes/pkg/types"
// NewDeleteOptions returns a DeleteOptions indicating the resource should
// be deleted within the specified grace period. Use zero to indicate
// immediate deletion. If you would prefer to use the default grace period,
// use &v1.DeleteOptions{} directly.
func NewDeleteOptions(grace int64) *DeleteOptions {
return &DeleteOptions{GracePeriodSeconds: &grace}
}
// NewUIDPreconditions returns a Preconditions with UID set.
func NewUIDPreconditions(uid string) *Preconditions {
u := types.UID(uid)
return &Preconditions{UID: &u}
}

View File

@ -54,7 +54,7 @@ func addKnownTypes(scheme *runtime.Scheme) error {
&ThirdPartyResourceDataList{}, &ThirdPartyResourceDataList{},
&Ingress{}, &Ingress{},
&IngressList{}, &IngressList{},
&ListOptions{}, &v1.ListOptions{},
&v1.DeleteOptions{}, &v1.DeleteOptions{},
&ReplicaSet{}, &ReplicaSet{},
&ReplicaSetList{}, &ReplicaSetList{},

View File

@ -787,26 +787,6 @@ type ExportOptions struct {
Exact bool `json:"exact" protobuf:"varint,2,opt,name=exact"` Exact bool `json:"exact" protobuf:"varint,2,opt,name=exact"`
} }
// ListOptions is the query options to a standard REST list call.
type ListOptions struct {
unversioned.TypeMeta `json:",inline"`
// A selector to restrict the list of returned objects by their labels.
// Defaults to everything.
LabelSelector string `json:"labelSelector,omitempty" protobuf:"bytes,1,opt,name=labelSelector"`
// A selector to restrict the list of returned objects by their fields.
// Defaults to everything.
FieldSelector string `json:"fieldSelector,omitempty" protobuf:"bytes,2,opt,name=fieldSelector"`
// Watch for changes to the described resources and return them as a stream of
// add, update, and remove notifications. Specify resourceVersion.
Watch bool `json:"watch,omitempty" protobuf:"varint,3,opt,name=watch"`
// When specified with a watch call, shows changes that occur after that particular version of a resource.
// Defaults to changes from the beginning of history.
ResourceVersion string `json:"resourceVersion,omitempty" protobuf:"bytes,4,opt,name=resourceVersion"`
// Timeout for the list/watch call.
TimeoutSeconds *int64 `json:"timeoutSeconds,omitempty" protobuf:"varint,5,opt,name=timeoutSeconds"`
}
// A label selector is a label query over a set of resources. The result of matchLabels and // A label selector is a label query over a set of resources. The result of matchLabels and
// matchExpressions are ANDed. An empty label selector matches all objects. A null // matchExpressions are ANDed. An empty label selector matches all objects. A null
// label selector matches no objects. // label selector matches no objects.

View File

@ -116,7 +116,7 @@ func (e *events) Search(objOrRef runtime.Object) (*v1.EventList, error) {
refUID = &stringRefUID refUID = &stringRefUID
} }
fieldSelector := e.GetFieldSelector(&ref.Name, &ref.Namespace, refKind, refUID) fieldSelector := e.GetFieldSelector(&ref.Name, &ref.Namespace, refKind, refUID)
return e.List(api.ListOptions{FieldSelector: fieldSelector}) return e.List(v1.ListOptions{FieldSelector: fieldSelector.String()})
} }
// Returns the appropriate field selector based on the API version being used to communicate with the server. // Returns the appropriate field selector based on the API version being used to communicate with the server.

View File

@ -17,11 +17,13 @@ limitations under the License.
package core package core
import ( import (
"fmt"
"path" "path"
"strings" "strings"
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/unversioned" "k8s.io/kubernetes/pkg/api/unversioned"
"k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/fields" "k8s.io/kubernetes/pkg/fields"
"k8s.io/kubernetes/pkg/labels" "k8s.io/kubernetes/pkg/labels"
"k8s.io/kubernetes/pkg/runtime" "k8s.io/kubernetes/pkg/runtime"
@ -46,36 +48,22 @@ func NewGetAction(resource unversioned.GroupVersionResource, namespace, name str
return action return action
} }
func NewRootListAction(resource unversioned.GroupVersionResource, opts api.ListOptions) ListActionImpl { func NewRootListAction(resource unversioned.GroupVersionResource, opts interface{}) ListActionImpl {
action := ListActionImpl{} action := ListActionImpl{}
action.Verb = "list" action.Verb = "list"
action.Resource = resource action.Resource = resource
labelSelector := opts.LabelSelector labelSelector, fieldSelector, _ := ExtractFromListOptions(opts)
if labelSelector == nil {
labelSelector = labels.Everything()
}
fieldSelector := opts.FieldSelector
if fieldSelector == nil {
fieldSelector = fields.Everything()
}
action.ListRestrictions = ListRestrictions{labelSelector, fieldSelector} action.ListRestrictions = ListRestrictions{labelSelector, fieldSelector}
return action return action
} }
func NewListAction(resource unversioned.GroupVersionResource, namespace string, opts api.ListOptions) ListActionImpl { func NewListAction(resource unversioned.GroupVersionResource, namespace string, opts interface{}) ListActionImpl {
action := ListActionImpl{} action := ListActionImpl{}
action.Verb = "list" action.Verb = "list"
action.Resource = resource action.Resource = resource
action.Namespace = namespace action.Namespace = namespace
labelSelector := opts.LabelSelector labelSelector, fieldSelector, _ := ExtractFromListOptions(opts)
if labelSelector == nil {
labelSelector = labels.Everything()
}
fieldSelector := opts.FieldSelector
if fieldSelector == nil {
fieldSelector = fields.Everything()
}
action.ListRestrictions = ListRestrictions{labelSelector, fieldSelector} action.ListRestrictions = ListRestrictions{labelSelector, fieldSelector}
return action return action
@ -202,72 +190,73 @@ func NewDeleteAction(resource unversioned.GroupVersionResource, namespace, name
return action return action
} }
func NewRootDeleteCollectionAction(resource unversioned.GroupVersionResource, opts api.ListOptions) DeleteCollectionActionImpl { func NewRootDeleteCollectionAction(resource unversioned.GroupVersionResource, opts interface{}) DeleteCollectionActionImpl {
action := DeleteCollectionActionImpl{} action := DeleteCollectionActionImpl{}
action.Verb = "delete-collection" action.Verb = "delete-collection"
action.Resource = resource action.Resource = resource
labelSelector := opts.LabelSelector labelSelector, fieldSelector, _ := ExtractFromListOptions(opts)
if labelSelector == nil {
labelSelector = labels.Everything()
}
fieldSelector := opts.FieldSelector
if fieldSelector == nil {
fieldSelector = fields.Everything()
}
action.ListRestrictions = ListRestrictions{labelSelector, fieldSelector} action.ListRestrictions = ListRestrictions{labelSelector, fieldSelector}
return action return action
} }
func NewDeleteCollectionAction(resource unversioned.GroupVersionResource, namespace string, opts api.ListOptions) DeleteCollectionActionImpl { func NewDeleteCollectionAction(resource unversioned.GroupVersionResource, namespace string, opts interface{}) DeleteCollectionActionImpl {
action := DeleteCollectionActionImpl{} action := DeleteCollectionActionImpl{}
action.Verb = "delete-collection" action.Verb = "delete-collection"
action.Resource = resource action.Resource = resource
action.Namespace = namespace action.Namespace = namespace
labelSelector := opts.LabelSelector labelSelector, fieldSelector, _ := ExtractFromListOptions(opts)
if labelSelector == nil {
labelSelector = labels.Everything()
}
fieldSelector := opts.FieldSelector
if fieldSelector == nil {
fieldSelector = fields.Everything()
}
action.ListRestrictions = ListRestrictions{labelSelector, fieldSelector} action.ListRestrictions = ListRestrictions{labelSelector, fieldSelector}
return action return action
} }
func NewRootWatchAction(resource unversioned.GroupVersionResource, opts api.ListOptions) WatchActionImpl { func NewRootWatchAction(resource unversioned.GroupVersionResource, opts interface{}) WatchActionImpl {
action := WatchActionImpl{} action := WatchActionImpl{}
action.Verb = "watch" action.Verb = "watch"
action.Resource = resource action.Resource = resource
labelSelector := opts.LabelSelector labelSelector, fieldSelector, resourceVersion := ExtractFromListOptions(opts)
if labelSelector == nil { action.WatchRestrictions = WatchRestrictions{labelSelector, fieldSelector, resourceVersion}
labelSelector = labels.Everything()
}
fieldSelector := opts.FieldSelector
if fieldSelector == nil {
fieldSelector = fields.Everything()
}
action.WatchRestrictions = WatchRestrictions{labelSelector, fieldSelector, opts.ResourceVersion}
return action return action
} }
func NewWatchAction(resource unversioned.GroupVersionResource, namespace string, opts api.ListOptions) WatchActionImpl { func ExtractFromListOptions(opts interface{}) (labelSelector labels.Selector, fieldSelector fields.Selector, resourceVersion string) {
var err error
switch t := opts.(type) {
case api.ListOptions:
labelSelector = t.LabelSelector
fieldSelector = t.FieldSelector
resourceVersion = t.ResourceVersion
case v1.ListOptions:
labelSelector, err = labels.Parse(t.LabelSelector)
if err != nil {
panic(err)
}
fieldSelector, err = fields.ParseSelector(t.FieldSelector)
if err != nil {
panic(err)
}
resourceVersion = t.ResourceVersion
default:
panic(fmt.Errorf("expect a ListOptions"))
}
if labelSelector == nil {
labelSelector = labels.Everything()
}
if fieldSelector == nil {
fieldSelector = fields.Everything()
}
return labelSelector, fieldSelector, resourceVersion
}
func NewWatchAction(resource unversioned.GroupVersionResource, namespace string, opts interface{}) WatchActionImpl {
action := WatchActionImpl{} action := WatchActionImpl{}
action.Verb = "watch" action.Verb = "watch"
action.Resource = resource action.Resource = resource
action.Namespace = namespace action.Namespace = namespace
labelSelector := opts.LabelSelector labelSelector, fieldSelector, resourceVersion := ExtractFromListOptions(opts)
if labelSelector == nil { action.WatchRestrictions = WatchRestrictions{labelSelector, fieldSelector, resourceVersion}
labelSelector = labels.Everything()
}
fieldSelector := opts.FieldSelector
if fieldSelector == nil {
fieldSelector = fields.Everything()
}
action.WatchRestrictions = WatchRestrictions{labelSelector, fieldSelector, opts.ResourceVersion}
return action return action
} }

View File

@ -24,12 +24,11 @@ import (
"strconv" "strconv"
"time" "time"
"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/errors" "k8s.io/kubernetes/pkg/api/errors"
"k8s.io/kubernetes/pkg/api/v1" "k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/apis/extensions/v1beta1" "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
"k8s.io/kubernetes/pkg/client/clientset_generated/release_1_3" kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
"k8s.io/kubernetes/pkg/util/intstr" "k8s.io/kubernetes/pkg/util/intstr"
"k8s.io/kubernetes/pkg/util/wait" "k8s.io/kubernetes/pkg/util/wait"
"k8s.io/kubernetes/test/e2e/framework" "k8s.io/kubernetes/test/e2e/framework"
@ -55,10 +54,10 @@ var _ = framework.KubeDescribe("Federated ingresses [Feature:Federation]", func(
AfterEach(func() { AfterEach(func() {
nsName := f.FederationNamespace.Name nsName := f.FederationNamespace.Name
// Delete registered ingresses. // Delete registered ingresses.
ingressList, err := f.FederationClientset_1_4.Extensions().Ingresses(nsName).List(api.ListOptions{}) ingressList, err := f.FederationClientset_1_5.Extensions().Ingresses(nsName).List(v1.ListOptions{})
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
for _, ingress := range ingressList.Items { for _, ingress := range ingressList.Items {
err := f.FederationClientset_1_4.Extensions().Ingresses(nsName).Delete(ingress.Name, &api.DeleteOptions{}) err := f.FederationClientset_1_5.Extensions().Ingresses(nsName).Delete(ingress.Name, &v1.DeleteOptions{})
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
} }
}) })
@ -67,10 +66,10 @@ var _ = framework.KubeDescribe("Federated ingresses [Feature:Federation]", func(
framework.SkipUnlessFederated(f.Client) framework.SkipUnlessFederated(f.Client)
nsName := f.FederationNamespace.Name nsName := f.FederationNamespace.Name
ingress := createIngressOrFail(f.FederationClientset_1_4, nsName) ingress := createIngressOrFail(f.FederationClientset_1_5, nsName)
By(fmt.Sprintf("Creation of ingress %q in namespace %q succeeded. Deleting ingress.", ingress.Name, nsName)) By(fmt.Sprintf("Creation of ingress %q in namespace %q succeeded. Deleting ingress.", ingress.Name, nsName))
// Cleanup // Cleanup
err := f.FederationClientset_1_4.Extensions().Ingresses(nsName).Delete(ingress.Name, &api.DeleteOptions{}) err := f.FederationClientset_1_5.Extensions().Ingresses(nsName).Delete(ingress.Name, &v1.DeleteOptions{})
framework.ExpectNoError(err, "Error deleting ingress %q in namespace %q", ingress.Name, ingress.Namespace) framework.ExpectNoError(err, "Error deleting ingress %q in namespace %q", ingress.Name, ingress.Namespace)
By(fmt.Sprintf("Deletion of ingress %q in namespace %q succeeded.", ingress.Name, nsName)) By(fmt.Sprintf("Deletion of ingress %q in namespace %q succeeded.", ingress.Name, nsName))
}) })
@ -90,7 +89,7 @@ var _ = framework.KubeDescribe("Federated ingresses [Feature:Federation]", func(
if federationName = os.Getenv("FEDERATION_NAME"); federationName == "" { if federationName = os.Getenv("FEDERATION_NAME"); federationName == "" {
federationName = DefaultFederationName federationName = DefaultFederationName
} }
jig = newFederationTestJig(f.FederationClientset_1_4) jig = newFederationTestJig(f.FederationClientset_1_5)
clusters = map[string]*cluster{} clusters = map[string]*cluster{}
primaryClusterName = registerClusters(clusters, UserAgentName, federationName, f) primaryClusterName = registerClusters(clusters, UserAgentName, federationName, f)
ns = f.FederationNamespace.Name ns = f.FederationNamespace.Name
@ -101,15 +100,15 @@ var _ = framework.KubeDescribe("Federated ingresses [Feature:Federation]", func(
}) })
It("should create and update matching ingresses in underlying clusters", func() { It("should create and update matching ingresses in underlying clusters", func() {
ingress := createIngressOrFail(f.FederationClientset_1_4, ns) ingress := createIngressOrFail(f.FederationClientset_1_5, ns)
defer func() { // Cleanup defer func() { // Cleanup
By(fmt.Sprintf("Deleting ingress %q in namespace %q", ingress.Name, ns)) By(fmt.Sprintf("Deleting ingress %q in namespace %q", ingress.Name, ns))
err := f.FederationClientset_1_4.Ingresses(ns).Delete(ingress.Name, &api.DeleteOptions{}) err := f.FederationClientset_1_5.Ingresses(ns).Delete(ingress.Name, &v1.DeleteOptions{})
framework.ExpectNoError(err, "Error deleting ingress %q in namespace %q", ingress.Name, ns) framework.ExpectNoError(err, "Error deleting ingress %q in namespace %q", ingress.Name, ns)
}() }()
// wait for ingress shards being created // wait for ingress shards being created
waitForIngressShardsOrFail(ns, ingress, clusters) waitForIngressShardsOrFail(ns, ingress, clusters)
ingress = updateIngressOrFail(f.FederationClientset_1_4, ns) ingress = updateIngressOrFail(f.FederationClientset_1_5, ns)
waitForIngressShardsUpdatedOrFail(ns, ingress, clusters) waitForIngressShardsUpdatedOrFail(ns, ingress, clusters)
}) })
@ -124,9 +123,9 @@ var _ = framework.KubeDescribe("Federated ingresses [Feature:Federation]", func(
// create backend pod // create backend pod
createBackendPodsOrFail(clusters, ns, FederatedIngressServicePodName) createBackendPodsOrFail(clusters, ns, FederatedIngressServicePodName)
// create backend service // create backend service
service = createServiceOrFail(f.FederationClientset_1_4, ns, FederatedIngressServiceName) service = createServiceOrFail(f.FederationClientset_1_5, ns, FederatedIngressServiceName)
// create ingress object // create ingress object
jig.ing = createIngressOrFail(f.FederationClientset_1_4, ns) jig.ing = createIngressOrFail(f.FederationClientset_1_5, ns)
// wait for services objects sync // wait for services objects sync
waitForServiceShardsOrFail(ns, service, clusters) waitForServiceShardsOrFail(ns, service, clusters)
// wait for ingress objects sync // wait for ingress objects sync
@ -136,14 +135,14 @@ var _ = framework.KubeDescribe("Federated ingresses [Feature:Federation]", func(
AfterEach(func() { AfterEach(func() {
deleteBackendPodsOrFail(clusters, ns) deleteBackendPodsOrFail(clusters, ns)
if service != nil { if service != nil {
deleteServiceOrFail(f.FederationClientset_1_4, ns, service.Name) deleteServiceOrFail(f.FederationClientset_1_5, ns, service.Name)
cleanupServiceShardsAndProviderResources(ns, service, clusters) cleanupServiceShardsAndProviderResources(ns, service, clusters)
service = nil service = nil
} else { } else {
By("No service to delete. Service is nil") By("No service to delete. Service is nil")
} }
if jig.ing != nil { if jig.ing != nil {
deleteIngressOrFail(f.FederationClientset_1_4, ns, jig.ing.Name) deleteIngressOrFail(f.FederationClientset_1_5, ns, jig.ing.Name)
jig.ing = nil jig.ing = nil
} else { } else {
By("No ingress to delete. Ingress is nil") By("No ingress to delete. Ingress is nil")
@ -186,7 +185,7 @@ func equivalentIngress(federatedIngress, clusterIngress v1beta1.Ingress) bool {
waitForIngressOrFail waits until a ingress is either present or absent in the cluster specified by clientset. waitForIngressOrFail waits until a ingress is either present or absent in the cluster specified by clientset.
If the condition is not met within timout, it fails the calling test. If the condition is not met within timout, it fails the calling test.
*/ */
func waitForIngressOrFail(clientset *release_1_3.Clientset, namespace string, ingress *v1beta1.Ingress, present bool, timeout time.Duration) { func waitForIngressOrFail(clientset *kubeclientset.Clientset, namespace string, ingress *v1beta1.Ingress, present bool, timeout time.Duration) {
By(fmt.Sprintf("Fetching a federated ingress shard of ingress %q in namespace %q from cluster", ingress.Name, namespace)) By(fmt.Sprintf("Fetching a federated ingress shard of ingress %q in namespace %q from cluster", ingress.Name, namespace))
var clusterIngress *v1beta1.Ingress var clusterIngress *v1beta1.Ingress
err := wait.PollImmediate(framework.Poll, timeout, func() (bool, error) { err := wait.PollImmediate(framework.Poll, timeout, func() (bool, error) {
@ -233,7 +232,7 @@ func waitForIngressShardsUpdatedOrFail(namespace string, ingress *v1beta1.Ingres
waitForIngressUpdateOrFail waits until a ingress is updated in the specified cluster with same spec of federated ingress. waitForIngressUpdateOrFail waits until a ingress is updated in the specified cluster with same spec of federated ingress.
If the condition is not met within timeout, it fails the calling test. If the condition is not met within timeout, it fails the calling test.
*/ */
func waitForIngressUpdateOrFail(clientset *release_1_3.Clientset, namespace string, ingress *v1beta1.Ingress, timeout time.Duration) { func waitForIngressUpdateOrFail(clientset *kubeclientset.Clientset, namespace string, ingress *v1beta1.Ingress, timeout time.Duration) {
By(fmt.Sprintf("Fetching a federated ingress shard of ingress %q in namespace %q from cluster", ingress.Name, namespace)) By(fmt.Sprintf("Fetching a federated ingress shard of ingress %q in namespace %q from cluster", ingress.Name, namespace))
err := wait.PollImmediate(framework.Poll, timeout, func() (bool, error) { err := wait.PollImmediate(framework.Poll, timeout, func() (bool, error) {
clusterIngress, err := clientset.Ingresses(namespace).Get(ingress.Name) clusterIngress, err := clientset.Ingresses(namespace).Get(ingress.Name)
@ -261,15 +260,15 @@ func waitForIngressShardsGoneOrFail(namespace string, ingress *v1beta1.Ingress,
} }
} }
func deleteIngressOrFail(clientset *federation_release_1_4.Clientset, namespace string, ingressName string) { func deleteIngressOrFail(clientset *fedclientset.Clientset, namespace string, ingressName string) {
if clientset == nil || len(namespace) == 0 || len(ingressName) == 0 { if clientset == nil || len(namespace) == 0 || len(ingressName) == 0 {
Fail(fmt.Sprintf("Internal error: invalid parameters passed to deleteIngressOrFail: clientset: %v, namespace: %v, ingress: %v", clientset, namespace, ingressName)) Fail(fmt.Sprintf("Internal error: invalid parameters passed to deleteIngressOrFail: clientset: %v, namespace: %v, ingress: %v", clientset, namespace, ingressName))
} }
err := clientset.Ingresses(namespace).Delete(ingressName, api.NewDeleteOptions(0)) err := clientset.Ingresses(namespace).Delete(ingressName, v1.NewDeleteOptions(0))
framework.ExpectNoError(err, "Error deleting ingress %q from namespace %q", ingressName, namespace) framework.ExpectNoError(err, "Error deleting ingress %q from namespace %q", ingressName, namespace)
} }
func createIngressOrFail(clientset *federation_release_1_4.Clientset, namespace string) *v1beta1.Ingress { func createIngressOrFail(clientset *fedclientset.Clientset, namespace string) *v1beta1.Ingress {
if clientset == nil || len(namespace) == 0 { if clientset == nil || len(namespace) == 0 {
Fail(fmt.Sprintf("Internal error: invalid parameters passed to createIngressOrFail: clientset: %v, namespace: %v", clientset, namespace)) Fail(fmt.Sprintf("Internal error: invalid parameters passed to createIngressOrFail: clientset: %v, namespace: %v", clientset, namespace))
} }
@ -293,7 +292,7 @@ func createIngressOrFail(clientset *federation_release_1_4.Clientset, namespace
return newIng return newIng
} }
func updateIngressOrFail(clientset *federation_release_1_4.Clientset, namespace string) (newIng *v1beta1.Ingress) { func updateIngressOrFail(clientset *fedclientset.Clientset, namespace string) (newIng *v1beta1.Ingress) {
var err error var err error
if clientset == nil || len(namespace) == 0 { if clientset == nil || len(namespace) == 0 {
Fail(fmt.Sprintf("Internal error: invalid parameters passed to createIngressOrFail: clientset: %v, namespace: %v", clientset, namespace)) Fail(fmt.Sprintf("Internal error: invalid parameters passed to createIngressOrFail: clientset: %v, namespace: %v", clientset, namespace))
@ -354,15 +353,15 @@ type federationTestJig struct {
rootCAs map[string][]byte rootCAs map[string][]byte
address string address string
ing *v1beta1.Ingress ing *v1beta1.Ingress
client *federation_release_1_4.Clientset client *fedclientset.Clientset
} }
func newFederationTestJig(c *federation_release_1_4.Clientset) *federationTestJig { func newFederationTestJig(c *fedclientset.Clientset) *federationTestJig {
return &federationTestJig{client: c, rootCAs: map[string][]byte{}} return &federationTestJig{client: c, rootCAs: map[string][]byte{}}
} }
// WaitForFederatedIngressAddress waits for the Ingress to acquire an address. // WaitForFederatedIngressAddress waits for the Ingress to acquire an address.
func waitForFederatedIngressAddress(c *federation_release_1_4.Clientset, ns, ingName string, timeout time.Duration) (string, error) { func waitForFederatedIngressAddress(c *fedclientset.Clientset, ns, ingName string, timeout time.Duration) (string, error) {
var address string var address string
err := wait.PollImmediate(10*time.Second, timeout, func() (bool, error) { err := wait.PollImmediate(10*time.Second, timeout, func() (bool, error) {
ipOrNameList, err := getFederatedIngressAddress(c, ns, ingName) ipOrNameList, err := getFederatedIngressAddress(c, ns, ingName)
@ -377,7 +376,7 @@ func waitForFederatedIngressAddress(c *federation_release_1_4.Clientset, ns, ing
} }
// waitForFederatedIngressExists waits for the Ingress object exists. // waitForFederatedIngressExists waits for the Ingress object exists.
func waitForFederatedIngressExists(c *federation_release_1_4.Clientset, ns, ingName string, timeout time.Duration) error { func waitForFederatedIngressExists(c *fedclientset.Clientset, ns, ingName string, timeout time.Duration) error {
err := wait.PollImmediate(10*time.Second, timeout, func() (bool, error) { err := wait.PollImmediate(10*time.Second, timeout, func() (bool, error) {
_, err := c.Extensions().Ingresses(ns).Get(ingName) _, err := c.Extensions().Ingresses(ns).Get(ingName)
if err != nil { if err != nil {
@ -390,7 +389,7 @@ func waitForFederatedIngressExists(c *federation_release_1_4.Clientset, ns, ingN
} }
// getFederatedIngressAddress returns the ips/hostnames associated with the Ingress. // getFederatedIngressAddress returns the ips/hostnames associated with the Ingress.
func getFederatedIngressAddress(client *federation_release_1_4.Clientset, ns, name string) ([]string, error) { func getFederatedIngressAddress(client *fedclientset.Clientset, ns, name string) ([]string, error) {
ing, err := client.Extensions().Ingresses(ns).Get(name) ing, err := client.Extensions().Ingresses(ns).Get(name)
if err != nil { if err != nil {
return nil, err return nil, err

View File

@ -58,8 +58,8 @@ var _ = framework.KubeDescribe("Federation namespace [Feature:Federation]", func
AfterEach(func() { AfterEach(func() {
framework.SkipUnlessFederated(f.Client) framework.SkipUnlessFederated(f.Client)
deleteAllTestNamespaces( deleteAllTestNamespaces(
f.FederationClientset_1_4.Core().Namespaces().List, f.FederationClientset_1_5.Core().Namespaces().List,
f.FederationClientset_1_4.Core().Namespaces().Delete) f.FederationClientset_1_5.Core().Namespaces().Delete)
for _, cluster := range clusters { for _, cluster := range clusters {
deleteAllTestNamespaces( deleteAllTestNamespaces(
cluster.Core().Namespaces().List, cluster.Core().Namespaces().List,
@ -77,7 +77,7 @@ var _ = framework.KubeDescribe("Federation namespace [Feature:Federation]", func
}, },
} }
By(fmt.Sprintf("Creating namespace %s", ns.Name)) By(fmt.Sprintf("Creating namespace %s", ns.Name))
_, err := f.FederationClientset_1_4.Core().Namespaces().Create(&ns) _, err := f.FederationClientset_1_5.Core().Namespaces().Create(&ns)
framework.ExpectNoError(err, "Failed to create namespace %s", ns.Name) framework.ExpectNoError(err, "Failed to create namespace %s", ns.Name)
// Check subclusters if the namespace was created there. // Check subclusters if the namespace was created there.
@ -96,21 +96,21 @@ var _ = framework.KubeDescribe("Federation namespace [Feature:Federation]", func
framework.ExpectNoError(err, "Not all namespaces created") framework.ExpectNoError(err, "Not all namespaces created")
deleteAllTestNamespaces( deleteAllTestNamespaces(
f.FederationClientset_1_4.Core().Namespaces().List, f.FederationClientset_1_5.Core().Namespaces().List,
f.FederationClientset_1_4.Core().Namespaces().Delete) f.FederationClientset_1_5.Core().Namespaces().Delete)
}) })
}) })
}) })
func deleteAllTestNamespaces(lister func(api.ListOptions) (*api_v1.NamespaceList, error), deleter func(string, *api.DeleteOptions) error) { func deleteAllTestNamespaces(lister func(api_v1.ListOptions) (*api_v1.NamespaceList, error), deleter func(string, *api_v1.DeleteOptions) error) {
list, err := lister(api.ListOptions{}) list, err := lister(api_v1.ListOptions{})
if err != nil { if err != nil {
framework.Failf("Failed to get all namespaes: %v", err) framework.Failf("Failed to get all namespaes: %v", err)
return return
} }
for _, namespace := range list.Items { for _, namespace := range list.Items {
if strings.HasPrefix(namespace.Name, namespacePrefix) { if strings.HasPrefix(namespace.Name, namespacePrefix) {
err := deleter(namespace.Name, &api.DeleteOptions{}) err := deleter(namespace.Name, &api_v1.DeleteOptions{})
if err != nil { if err != nil {
framework.Failf("Failed to set %s for deletion: %v", namespace.Name, err) framework.Failf("Failed to set %s for deletion: %v", namespace.Name, err)
} }
@ -119,9 +119,9 @@ func deleteAllTestNamespaces(lister func(api.ListOptions) (*api_v1.NamespaceList
waitForNoTestNamespaces(lister) waitForNoTestNamespaces(lister)
} }
func waitForNoTestNamespaces(lister func(api.ListOptions) (*api_v1.NamespaceList, error)) { func waitForNoTestNamespaces(lister func(api_v1.ListOptions) (*api_v1.NamespaceList, error)) {
err := wait.Poll(5*time.Second, 2*time.Minute, func() (bool, error) { err := wait.Poll(5*time.Second, 2*time.Minute, func() (bool, error) {
list, err := lister(api.ListOptions{}) list, err := lister(api_v1.ListOptions{})
if err != nil { if err != nil {
return false, err return false, err
} }

View File

@ -22,12 +22,11 @@ import (
. "github.com/onsi/ginkgo" . "github.com/onsi/ginkgo"
. "github.com/onsi/gomega" . "github.com/onsi/gomega"
"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/federation-controller/util" "k8s.io/kubernetes/federation/pkg/federation-controller/util"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/errors" "k8s.io/kubernetes/pkg/api/errors"
"k8s.io/kubernetes/pkg/api/v1" "k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/client/clientset_generated/release_1_3" kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
"k8s.io/kubernetes/pkg/util/wait" "k8s.io/kubernetes/pkg/util/wait"
"k8s.io/kubernetes/test/e2e/framework" "k8s.io/kubernetes/test/e2e/framework"
) )
@ -60,22 +59,21 @@ var _ = framework.KubeDescribe("Federation secrets [Feature:Federation12]", func
It("should be created and deleted successfully", func() { It("should be created and deleted successfully", func() {
framework.SkipUnlessFederated(f.Client) framework.SkipUnlessFederated(f.Client)
nsName := f.FederationNamespace.Name nsName := f.FederationNamespace.Name
secret := createSecretOrFail(f.FederationClientset_1_4, nsName) secret := createSecretOrFail(f.FederationClientset_1_5, nsName)
defer func() { // Cleanup defer func() { // Cleanup
By(fmt.Sprintf("Deleting secret %q in namespace %q", secret.Name, nsName)) By(fmt.Sprintf("Deleting secret %q in namespace %q", secret.Name, nsName))
err := f.FederationClientset_1_4.Core().Secrets(nsName).Delete(secret.Name, &api.DeleteOptions{}) err := f.FederationClientset_1_5.Core().Secrets(nsName).Delete(secret.Name, &v1.DeleteOptions{})
framework.ExpectNoError(err, "Error deleting secret %q in namespace %q", secret.Name, nsName) framework.ExpectNoError(err, "Error deleting secret %q in namespace %q", secret.Name, nsName)
}() }()
// wait for secret shards being created // wait for secret shards being created
waitForSecretShardsOrFail(nsName, secret, clusters) waitForSecretShardsOrFail(nsName, secret, clusters)
secret = updateSecretOrFail(f.FederationClientset_1_4, nsName) secret = updateSecretOrFail(f.FederationClientset_1_5, nsName)
waitForSecretShardsUpdatedOrFail(nsName, secret, clusters) waitForSecretShardsUpdatedOrFail(nsName, secret, clusters)
}) })
}) })
}) })
func createSecretOrFail(clientset *federation_release_1_4.Clientset, namespace string) *v1.Secret { func createSecretOrFail(clientset *fedclientset.Clientset, namespace string) *v1.Secret {
if clientset == nil || len(namespace) == 0 { if clientset == nil || len(namespace) == 0 {
Fail(fmt.Sprintf("Internal error: invalid parameters passed to createSecretOrFail: clientset: %v, namespace: %v", clientset, namespace)) Fail(fmt.Sprintf("Internal error: invalid parameters passed to createSecretOrFail: clientset: %v, namespace: %v", clientset, namespace))
} }
@ -92,7 +90,7 @@ func createSecretOrFail(clientset *federation_release_1_4.Clientset, namespace s
return secret return secret
} }
func updateSecretOrFail(clientset *federation_release_1_4.Clientset, namespace string) *v1.Secret { func updateSecretOrFail(clientset *fedclientset.Clientset, namespace string) *v1.Secret {
if clientset == nil || len(namespace) == 0 { if clientset == nil || len(namespace) == 0 {
Fail(fmt.Sprintf("Internal error: invalid parameters passed to updateSecretOrFail: clientset: %v, namespace: %v", clientset, namespace)) Fail(fmt.Sprintf("Internal error: invalid parameters passed to updateSecretOrFail: clientset: %v, namespace: %v", clientset, namespace))
} }
@ -127,7 +125,7 @@ func waitForSecretShardsOrFail(namespace string, secret *v1.Secret, clusters map
} }
} }
func waitForSecretOrFail(clientset *release_1_3.Clientset, namespace string, secret *v1.Secret, present bool, timeout time.Duration) { func waitForSecretOrFail(clientset *kubeclientset.Clientset, namespace string, secret *v1.Secret, present bool, timeout time.Duration) {
By(fmt.Sprintf("Fetching a federated secret shard of secret %q in namespace %q from cluster", secret.Name, namespace)) By(fmt.Sprintf("Fetching a federated secret shard of secret %q in namespace %q from cluster", secret.Name, namespace))
var clusterSecret *v1.Secret var clusterSecret *v1.Secret
err := wait.PollImmediate(framework.Poll, timeout, func() (bool, error) { err := wait.PollImmediate(framework.Poll, timeout, func() (bool, error) {
@ -157,7 +155,7 @@ func waitForSecretShardsUpdatedOrFail(namespace string, secret *v1.Secret, clust
} }
} }
func waitForSecretUpdateOrFail(clientset *release_1_3.Clientset, namespace string, secret *v1.Secret, timeout time.Duration) { func waitForSecretUpdateOrFail(clientset *kubeclientset.Clientset, namespace string, secret *v1.Secret, timeout time.Duration) {
By(fmt.Sprintf("Fetching a federated secret shard of secret %q in namespace %q from cluster", secret.Name, namespace)) By(fmt.Sprintf("Fetching a federated secret shard of secret %q in namespace %q from cluster", secret.Name, namespace))
err := wait.PollImmediate(framework.Poll, timeout, func() (bool, error) { err := wait.PollImmediate(framework.Poll, timeout, func() (bool, error) {
clusterSecret, err := clientset.Core().Secrets(namespace).Get(secret.Name) clusterSecret, err := clientset.Core().Secrets(namespace).Get(secret.Name)

View File

@ -23,7 +23,6 @@ import (
"strconv" "strconv"
"time" "time"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/v1" "k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/test/e2e/framework" "k8s.io/kubernetes/test/e2e/framework"
@ -90,11 +89,11 @@ var _ = framework.KubeDescribe("[Feature:Federation]", func() {
framework.SkipUnlessFederated(f.Client) framework.SkipUnlessFederated(f.Client)
nsName = f.FederationNamespace.Name nsName = f.FederationNamespace.Name
service = createServiceOrFail(f.FederationClientset_1_4, nsName, FederatedServiceName) service = createServiceOrFail(f.FederationClientset_1_5, nsName, FederatedServiceName)
By(fmt.Sprintf("Creation of service %q in namespace %q succeeded. Deleting service.", service.Name, nsName)) By(fmt.Sprintf("Creation of service %q in namespace %q succeeded. Deleting service.", service.Name, nsName))
// Cleanup // Cleanup
err := f.FederationClientset_1_4.Services(nsName).Delete(service.Name, &api.DeleteOptions{}) err := f.FederationClientset_1_5.Services(nsName).Delete(service.Name, &v1.DeleteOptions{})
framework.ExpectNoError(err, "Error deleting service %q in namespace %q", service.Name, service.Namespace) framework.ExpectNoError(err, "Error deleting service %q in namespace %q", service.Name, service.Namespace)
By(fmt.Sprintf("Deletion of service %q in namespace %q succeeded.", service.Name, nsName)) By(fmt.Sprintf("Deletion of service %q in namespace %q succeeded.", service.Name, nsName))
}) })
@ -103,10 +102,10 @@ var _ = framework.KubeDescribe("[Feature:Federation]", func() {
framework.SkipUnlessFederated(f.Client) framework.SkipUnlessFederated(f.Client)
nsName = f.FederationNamespace.Name nsName = f.FederationNamespace.Name
service = createServiceOrFail(f.FederationClientset_1_4, nsName, FederatedServiceName) service = createServiceOrFail(f.FederationClientset_1_5, nsName, FederatedServiceName)
defer func() { // Cleanup defer func() { // Cleanup
By(fmt.Sprintf("Deleting service %q in namespace %q", service.Name, nsName)) By(fmt.Sprintf("Deleting service %q in namespace %q", service.Name, nsName))
err := f.FederationClientset_1_4.Services(nsName).Delete(service.Name, &api.DeleteOptions{}) err := f.FederationClientset_1_5.Services(nsName).Delete(service.Name, &v1.DeleteOptions{})
framework.ExpectNoError(err, "Error deleting service %q in namespace %q", service.Name, nsName) framework.ExpectNoError(err, "Error deleting service %q in namespace %q", service.Name, nsName)
}() }()
waitForServiceShardsOrFail(nsName, service, clusters) waitForServiceShardsOrFail(nsName, service, clusters)
@ -124,7 +123,7 @@ var _ = framework.KubeDescribe("[Feature:Federation]", func() {
nsName := f.FederationNamespace.Name nsName := f.FederationNamespace.Name
createBackendPodsOrFail(clusters, nsName, FederatedServicePodName) createBackendPodsOrFail(clusters, nsName, FederatedServicePodName)
service = createServiceOrFail(f.FederationClientset_1_4, nsName, FederatedServiceName) service = createServiceOrFail(f.FederationClientset_1_5, nsName, FederatedServiceName)
waitForServiceShardsOrFail(nsName, service, clusters) waitForServiceShardsOrFail(nsName, service, clusters)
}) })
@ -135,7 +134,7 @@ var _ = framework.KubeDescribe("[Feature:Federation]", func() {
deleteBackendPodsOrFail(clusters, nsName) deleteBackendPodsOrFail(clusters, nsName)
if service != nil { if service != nil {
deleteServiceOrFail(f.FederationClientset_1_4, nsName, service.Name) deleteServiceOrFail(f.FederationClientset_1_5, nsName, service.Name)
By(fmt.Sprintf("Deleting service shards and their provider resources in underlying clusters for service %q in namespace %q", service.Name, nsName)) By(fmt.Sprintf("Deleting service shards and their provider resources in underlying clusters for service %q in namespace %q", service.Name, nsName))
cleanupServiceShardsAndProviderResources(nsName, service, clusters) cleanupServiceShardsAndProviderResources(nsName, service, clusters)

View File

@ -22,8 +22,7 @@ import (
. "github.com/onsi/ginkgo" . "github.com/onsi/ginkgo"
federationapi "k8s.io/kubernetes/federation/apis/federation/v1beta1" federationapi "k8s.io/kubernetes/federation/apis/federation/v1beta1"
"k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_4" "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/v1" "k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/util/wait" "k8s.io/kubernetes/pkg/util/wait"
"k8s.io/kubernetes/test/e2e/framework" "k8s.io/kubernetes/test/e2e/framework"
@ -41,10 +40,10 @@ var _ = framework.KubeDescribe("Federation apiserver [Feature:Federation]", func
// Delete registered clusters. // Delete registered clusters.
// This is if a test failed, it should not affect other tests. // This is if a test failed, it should not affect other tests.
clusterList, err := f.FederationClientset_1_4.Federation().Clusters().List(api.ListOptions{}) clusterList, err := f.FederationClientset_1_5.Federation().Clusters().List(v1.ListOptions{})
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
for _, cluster := range clusterList.Items { for _, cluster := range clusterList.Items {
err := f.FederationClientset_1_4.Federation().Clusters().Delete(cluster.Name, &api.DeleteOptions{}) err := f.FederationClientset_1_5.Federation().Clusters().Delete(cluster.Name, &v1.DeleteOptions{})
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
} }
}) })
@ -69,14 +68,14 @@ var _ = framework.KubeDescribe("Federation apiserver [Feature:Federation]", func
framework.Logf("Deleting %d clusters", len(contexts)) framework.Logf("Deleting %d clusters", len(contexts))
for _, context := range contexts { for _, context := range contexts {
framework.Logf("Deleting cluster object: %s (%s, secret: %s)", context.Name, context.Cluster.Cluster.Server, context.Name) framework.Logf("Deleting cluster object: %s (%s, secret: %s)", context.Name, context.Cluster.Cluster.Server, context.Name)
err := f.FederationClientset_1_4.Federation().Clusters().Delete(context.Name, &api.DeleteOptions{}) err := f.FederationClientset_1_5.Federation().Clusters().Delete(context.Name, &v1.DeleteOptions{})
framework.ExpectNoError(err, fmt.Sprintf("unexpected error in deleting cluster %s: %+v", context.Name, err)) framework.ExpectNoError(err, fmt.Sprintf("unexpected error in deleting cluster %s: %+v", context.Name, err))
framework.Logf("Successfully deleted cluster object: %s (%s, secret: %s)", context.Name, context.Cluster.Cluster.Server, context.Name) framework.Logf("Successfully deleted cluster object: %s (%s, secret: %s)", context.Name, context.Cluster.Cluster.Server, context.Name)
} }
// There should not be any remaining cluster. // There should not be any remaining cluster.
framework.Logf("Verifying that zero clusters remain") framework.Logf("Verifying that zero clusters remain")
clusterList, err := f.FederationClientset_1_4.Federation().Clusters().List(api.ListOptions{}) clusterList, err := f.FederationClientset_1_5.Federation().Clusters().List(v1.ListOptions{})
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
if len(clusterList.Items) != 0 { if len(clusterList.Items) != 0 {
framework.Failf("there should not have been any remaining clusters. Found: %+v", clusterList) framework.Failf("there should not have been any remaining clusters. Found: %+v", clusterList)
@ -95,7 +94,7 @@ var _ = framework.KubeDescribe("Federation apiserver [Feature:Federation]", func
// Creating a service in a non-existing namespace should fail. // Creating a service in a non-existing namespace should fail.
svcNamespace := "federation-admission-test-ns" svcNamespace := "federation-admission-test-ns"
svcName := "myns" svcName := "myns"
clientset := f.FederationClientset_1_4 clientset := f.FederationClientset_1_5
framework.Logf("Trying to create service %s in namespace %s, expect to get error", svcName, svcNamespace) framework.Logf("Trying to create service %s in namespace %s, expect to get error", svcName, svcNamespace)
if _, err := clientset.Core().Services(svcNamespace).Create(newService(svcName, svcNamespace)); err == nil { if _, err := clientset.Core().Services(svcNamespace).Create(newService(svcName, svcNamespace)); err == nil {
framework.Failf("Expected to get an error while creating a service in a non-existing namespace") framework.Failf("Expected to get an error while creating a service in a non-existing namespace")
@ -123,7 +122,7 @@ func newService(name, namespace string) *v1.Service {
} }
// Verify that the cluster is marked ready. // Verify that the cluster is marked ready.
func isReady(clusterName string, clientset *federation_release_1_4.Clientset) error { func isReady(clusterName string, clientset *federation_release_1_5.Clientset) error {
return wait.PollImmediate(time.Second, 5*time.Minute, func() (bool, error) { return wait.PollImmediate(time.Second, 5*time.Minute, func() (bool, error) {
c, err := clientset.Federation().Clusters().Get(clusterName) c, err := clientset.Federation().Clusters().Get(clusterName)
if err != nil { if err != nil {

View File

@ -19,7 +19,7 @@ package e2e
import ( import (
"fmt" "fmt"
"k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_4" "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5"
"k8s.io/kubernetes/pkg/api/errors" "k8s.io/kubernetes/pkg/api/errors"
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd" "k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api" clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
@ -41,8 +41,8 @@ var _ = framework.KubeDescribe("[Feature:Federation]", func() {
framework.SkipUnlessFederated(f.Client) framework.SkipUnlessFederated(f.Client)
nsName := f.FederationNamespace.Name nsName := f.FederationNamespace.Name
svc := createServiceOrFail(f.FederationClientset_1_4, nsName, FederatedServiceName) svc := createServiceOrFail(f.FederationClientset_1_5, nsName, FederatedServiceName)
deleteServiceOrFail(f.FederationClientset_1_4, nsName, svc.Name) deleteServiceOrFail(f.FederationClientset_1_5, nsName, svc.Name)
}) })
It("should not accept cluster resources when the client has invalid authentication credentials", func() { It("should not accept cluster resources when the client has invalid authentication credentials", func() {
@ -82,7 +82,7 @@ var _ = framework.KubeDescribe("[Feature:Federation]", func() {
}) })
}) })
func invalidAuthFederationClientSet(user *framework.KubeUser) (*federation_release_1_4.Clientset, error) { func invalidAuthFederationClientSet(user *framework.KubeUser) (*federation_release_1_5.Clientset, error) {
overrides := &clientcmd.ConfigOverrides{} overrides := &clientcmd.ConfigOverrides{}
if user != nil { if user != nil {
overrides = &clientcmd.ConfigOverrides{ overrides = &clientcmd.ConfigOverrides{
@ -105,7 +105,7 @@ func invalidAuthFederationClientSet(user *framework.KubeUser) (*federation_relea
config.Username = "" config.Username = ""
} }
c, err := federation_release_1_4.NewForConfig(config) c, err := federation_release_1_5.NewForConfig(config)
if err != nil { if err != nil {
return nil, fmt.Errorf("error creating federation clientset: %v", err) return nil, fmt.Errorf("error creating federation clientset: %v", err)
} }

View File

@ -20,8 +20,7 @@ import (
"fmt" "fmt"
. "github.com/onsi/ginkgo" . "github.com/onsi/ginkgo"
"k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_4" "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/v1" "k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/test/e2e/framework" "k8s.io/kubernetes/test/e2e/framework"
@ -42,10 +41,10 @@ var _ = framework.KubeDescribe("Federation events [Feature:Federation]", func()
nsName := f.FederationNamespace.Name nsName := f.FederationNamespace.Name
// Delete registered events. // Delete registered events.
eventList, err := f.FederationClientset_1_4.Core().Events(nsName).List(api.ListOptions{}) eventList, err := f.FederationClientset_1_5.Core().Events(nsName).List(v1.ListOptions{})
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
for _, event := range eventList.Items { for _, event := range eventList.Items {
err := f.FederationClientset_1_4.Core().Events(nsName).Delete(event.Name, &api.DeleteOptions{}) err := f.FederationClientset_1_5.Core().Events(nsName).Delete(event.Name, &v1.DeleteOptions{})
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
} }
}) })
@ -54,10 +53,10 @@ var _ = framework.KubeDescribe("Federation events [Feature:Federation]", func()
framework.SkipUnlessFederated(f.Client) framework.SkipUnlessFederated(f.Client)
nsName := f.FederationNamespace.Name nsName := f.FederationNamespace.Name
event := createEventOrFail(f.FederationClientset_1_4, nsName) event := createEventOrFail(f.FederationClientset_1_5, nsName)
By(fmt.Sprintf("Creation of event %q in namespace %q succeeded. Deleting event.", event.Name, nsName)) By(fmt.Sprintf("Creation of event %q in namespace %q succeeded. Deleting event.", event.Name, nsName))
// Cleanup // Cleanup
err := f.FederationClientset_1_4.Core().Events(nsName).Delete(event.Name, &api.DeleteOptions{}) err := f.FederationClientset_1_5.Core().Events(nsName).Delete(event.Name, &v1.DeleteOptions{})
framework.ExpectNoError(err, "Error deleting event %q in namespace %q", event.Name, event.Namespace) framework.ExpectNoError(err, "Error deleting event %q in namespace %q", event.Name, event.Namespace)
By(fmt.Sprintf("Deletion of event %q in namespace %q succeeded.", event.Name, nsName)) By(fmt.Sprintf("Deletion of event %q in namespace %q succeeded.", event.Name, nsName))
}) })
@ -65,7 +64,7 @@ var _ = framework.KubeDescribe("Federation events [Feature:Federation]", func()
}) })
}) })
func createEventOrFail(clientset *federation_release_1_4.Clientset, namespace string) *v1.Event { func createEventOrFail(clientset *federation_release_1_5.Clientset, namespace string) *v1.Event {
if clientset == nil || len(namespace) == 0 { if clientset == nil || len(namespace) == 0 {
Fail(fmt.Sprintf("Internal error: invalid parameters passed to createEventOrFail: clientset: %v, namespace: %v", clientset, namespace)) Fail(fmt.Sprintf("Internal error: invalid parameters passed to createEventOrFail: clientset: %v, namespace: %v", clientset, namespace))
} }

View File

@ -21,9 +21,8 @@ import (
"os" "os"
"time" "time"
"k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_4" "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5"
fedutil "k8s.io/kubernetes/federation/pkg/federation-controller/util" fedutil "k8s.io/kubernetes/federation/pkg/federation-controller/util"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/v1" "k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/apis/extensions/v1beta1" "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
"k8s.io/kubernetes/pkg/util/wait" "k8s.io/kubernetes/pkg/util/wait"
@ -51,10 +50,10 @@ var _ = framework.KubeDescribe("Federation replicasets [Feature:Federation]", fu
// Delete registered replicasets. // Delete registered replicasets.
nsName := f.FederationNamespace.Name nsName := f.FederationNamespace.Name
replicasetList, err := f.FederationClientset_1_4.Extensions().ReplicaSets(nsName).List(api.ListOptions{}) replicasetList, err := f.FederationClientset_1_5.Extensions().ReplicaSets(nsName).List(v1.ListOptions{})
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
for _, replicaset := range replicasetList.Items { for _, replicaset := range replicasetList.Items {
err := f.FederationClientset_1_4.Extensions().ReplicaSets(nsName).Delete(replicaset.Name, &api.DeleteOptions{}) err := f.FederationClientset_1_5.Extensions().ReplicaSets(nsName).Delete(replicaset.Name, &v1.DeleteOptions{})
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
} }
}) })
@ -63,10 +62,10 @@ var _ = framework.KubeDescribe("Federation replicasets [Feature:Federation]", fu
framework.SkipUnlessFederated(f.Client) framework.SkipUnlessFederated(f.Client)
nsName := f.FederationNamespace.Name nsName := f.FederationNamespace.Name
replicaset := createReplicaSetOrFail(f.FederationClientset_1_4, nsName) replicaset := createReplicaSetOrFail(f.FederationClientset_1_5, nsName)
By(fmt.Sprintf("Creation of replicaset %q in namespace %q succeeded. Deleting replicaset.", replicaset.Name, nsName)) By(fmt.Sprintf("Creation of replicaset %q in namespace %q succeeded. Deleting replicaset.", replicaset.Name, nsName))
// Cleanup // Cleanup
err := f.FederationClientset_1_4.Extensions().ReplicaSets(nsName).Delete(replicaset.Name, &api.DeleteOptions{}) err := f.FederationClientset_1_5.Extensions().ReplicaSets(nsName).Delete(replicaset.Name, &v1.DeleteOptions{})
framework.ExpectNoError(err, "Error deleting replicaset %q in namespace %q", replicaset.Name, replicaset.Namespace) framework.ExpectNoError(err, "Error deleting replicaset %q in namespace %q", replicaset.Name, replicaset.Namespace)
By(fmt.Sprintf("Deletion of replicaset %q in namespace %q succeeded.", replicaset.Name, nsName)) By(fmt.Sprintf("Deletion of replicaset %q in namespace %q succeeded.", replicaset.Name, nsName))
}) })
@ -94,32 +93,32 @@ var _ = framework.KubeDescribe("Federation replicasets [Feature:Federation]", fu
It("should create and update matching replicasets in underling clusters", func() { It("should create and update matching replicasets in underling clusters", func() {
nsName := f.FederationNamespace.Name nsName := f.FederationNamespace.Name
rs := createReplicaSetOrFail(f.FederationClientset_1_4, nsName) rs := createReplicaSetOrFail(f.FederationClientset_1_5, nsName)
defer func() { defer func() {
// cleanup. deletion of replicasets is not supported for underlying clusters // cleanup. deletion of replicasets is not supported for underlying clusters
By(fmt.Sprintf("Preparing replicaset %q/%q for deletion by setting replicas to zero", nsName, rs.Name)) By(fmt.Sprintf("Preparing replicaset %q/%q for deletion by setting replicas to zero", nsName, rs.Name))
replicas := int32(0) replicas := int32(0)
rs.Spec.Replicas = &replicas rs.Spec.Replicas = &replicas
f.FederationClientset_1_4.ReplicaSets(nsName).Update(rs) f.FederationClientset_1_5.ReplicaSets(nsName).Update(rs)
waitForReplicaSetOrFail(f.FederationClientset_1_4, nsName, rs.Name, clusters) waitForReplicaSetOrFail(f.FederationClientset_1_5, nsName, rs.Name, clusters)
f.FederationClientset_1_4.ReplicaSets(nsName).Delete(rs.Name, &api.DeleteOptions{}) f.FederationClientset_1_5.ReplicaSets(nsName).Delete(rs.Name, &v1.DeleteOptions{})
}() }()
waitForReplicaSetOrFail(f.FederationClientset_1_4, nsName, rs.Name, clusters) waitForReplicaSetOrFail(f.FederationClientset_1_5, nsName, rs.Name, clusters)
By(fmt.Sprintf("Successfuly created and synced replicaset %q/%q to clusters", nsName, rs.Name)) By(fmt.Sprintf("Successfuly created and synced replicaset %q/%q to clusters", nsName, rs.Name))
updateReplicaSetOrFail(f.FederationClientset_1_4, nsName) updateReplicaSetOrFail(f.FederationClientset_1_5, nsName)
waitForReplicaSetOrFail(f.FederationClientset_1_4, nsName, rs.Name, clusters) waitForReplicaSetOrFail(f.FederationClientset_1_5, nsName, rs.Name, clusters)
By(fmt.Sprintf("Successfuly updated and synced replicaset %q/%q to clusters", nsName, rs.Name)) By(fmt.Sprintf("Successfuly updated and synced replicaset %q/%q to clusters", nsName, rs.Name))
}) })
}) })
}) })
func waitForReplicaSetOrFail(c *federation_release_1_4.Clientset, namespace string, replicaSetName string, clusters map[string]*cluster) { func waitForReplicaSetOrFail(c *federation_release_1_5.Clientset, namespace string, replicaSetName string, clusters map[string]*cluster) {
err := waitForReplicaSet(c, namespace, replicaSetName, clusters) err := waitForReplicaSet(c, namespace, replicaSetName, clusters)
framework.ExpectNoError(err, "Failed to verify replicaset %q/%q, err: %v", namespace, replicaSetName, err) framework.ExpectNoError(err, "Failed to verify replicaset %q/%q, err: %v", namespace, replicaSetName, err)
} }
func waitForReplicaSet(c *federation_release_1_4.Clientset, namespace string, replicaSetName string, clusters map[string]*cluster) error { func waitForReplicaSet(c *federation_release_1_5.Clientset, namespace string, replicaSetName string, clusters map[string]*cluster) error {
err := wait.Poll(10*time.Second, FederatedReplicaSetTimeout, func() (bool, error) { err := wait.Poll(10*time.Second, FederatedReplicaSetTimeout, func() (bool, error) {
frs, err := c.ReplicaSets(namespace).Get(replicaSetName) frs, err := c.ReplicaSets(namespace).Get(replicaSetName)
if err != nil { if err != nil {
@ -158,7 +157,7 @@ func equivalentReplicaSet(fedReplicaSet, localReplicaSet *v1beta1.ReplicaSet) bo
reflect.DeepEqual(fedReplicaSet.Spec, localReplicaSetSpec) reflect.DeepEqual(fedReplicaSet.Spec, localReplicaSetSpec)
} }
func createReplicaSetOrFail(clientset *federation_release_1_4.Clientset, namespace string) *v1beta1.ReplicaSet { func createReplicaSetOrFail(clientset *federation_release_1_5.Clientset, namespace string) *v1beta1.ReplicaSet {
if clientset == nil || len(namespace) == 0 { if clientset == nil || len(namespace) == 0 {
Fail(fmt.Sprintf("Internal error: invalid parameters passed to createReplicaSetOrFail: clientset: %v, namespace: %v", clientset, namespace)) Fail(fmt.Sprintf("Internal error: invalid parameters passed to createReplicaSetOrFail: clientset: %v, namespace: %v", clientset, namespace))
} }
@ -172,7 +171,7 @@ func createReplicaSetOrFail(clientset *federation_release_1_4.Clientset, namespa
return replicaset return replicaset
} }
func updateReplicaSetOrFail(clientset *federation_release_1_4.Clientset, namespace string) *v1beta1.ReplicaSet { func updateReplicaSetOrFail(clientset *federation_release_1_5.Clientset, namespace string) *v1beta1.ReplicaSet {
if clientset == nil || len(namespace) == 0 { if clientset == nil || len(namespace) == 0 {
Fail(fmt.Sprintf("Internal error: invalid parameters passed to updateReplicaSetOrFail: clientset: %v, namespace: %v", clientset, namespace)) Fail(fmt.Sprintf("Internal error: invalid parameters passed to updateReplicaSetOrFail: clientset: %v, namespace: %v", clientset, namespace))
} }

View File

@ -21,7 +21,6 @@ import (
"time" "time"
federation_api "k8s.io/kubernetes/federation/apis/federation/v1beta1" federation_api "k8s.io/kubernetes/federation/apis/federation/v1beta1"
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/util/wait" "k8s.io/kubernetes/pkg/util/wait"
"k8s.io/kubernetes/test/e2e/framework" "k8s.io/kubernetes/test/e2e/framework"
@ -29,7 +28,7 @@ import (
func createClusterObjectOrFail_14(f *framework.Framework, context *framework.E2EContext) { func createClusterObjectOrFail_14(f *framework.Framework, context *framework.E2EContext) {
framework.Logf("Looking up cluster: %s", context.Name) framework.Logf("Looking up cluster: %s", context.Name)
foundCluster, err := f.FederationClientset_1_4.Federation().Clusters().Get(context.Name) foundCluster, err := f.FederationClientset_1_5.Federation().Clusters().Get(context.Name)
if err == nil && foundCluster != nil { if err == nil && foundCluster != nil {
return return
} }
@ -54,7 +53,7 @@ func createClusterObjectOrFail_14(f *framework.Framework, context *framework.E2E
}, },
}, },
} }
_, err = f.FederationClientset_1_4.Federation().Clusters().Create(&cluster) _, err = f.FederationClientset_1_5.Federation().Clusters().Create(&cluster)
framework.ExpectNoError(err, fmt.Sprintf("creating cluster: %+v", err)) framework.ExpectNoError(err, fmt.Sprintf("creating cluster: %+v", err))
framework.Logf("Successfully created cluster object: %s (%s, secret: %s)", context.Name, context.Cluster.Cluster.Server, context.Name) framework.Logf("Successfully created cluster object: %s (%s, secret: %s)", context.Name, context.Cluster.Cluster.Server, context.Name)
} }
@ -69,7 +68,7 @@ func buildClustersOrFail_14(f *framework.Framework) []*federation_api.Cluster {
// Wait for all clusters to become ready for up to 5 min. // Wait for all clusters to become ready for up to 5 min.
if err := wait.PollImmediate(5*time.Second, 5*time.Minute, func() (bool, error) { if err := wait.PollImmediate(5*time.Second, 5*time.Minute, func() (bool, error) {
for _, context := range contexts { for _, context := range contexts {
cluster, err := f.FederationClientset_1_4.Federation().Clusters().Get(context.Name) cluster, err := f.FederationClientset_1_5.Federation().Clusters().Get(context.Name)
if err != nil { if err != nil {
return false, err return false, err
} }
@ -88,7 +87,7 @@ func buildClustersOrFail_14(f *framework.Framework) []*federation_api.Cluster {
framework.Failf("Not all clusters are ready: %v", err) framework.Failf("Not all clusters are ready: %v", err)
} }
clusterList, err := f.FederationClientset_1_4.Federation().Clusters().List(api.ListOptions{}) clusterList, err := f.FederationClientset_1_5.Federation().Clusters().List(api_v1.ListOptions{})
if err != nil { if err != nil {
framework.Failf("Error in get clusters: %v", err) framework.Failf("Error in get clusters: %v", err)
} }

View File

@ -23,11 +23,11 @@ import (
"k8s.io/kubernetes/pkg/util/intstr" "k8s.io/kubernetes/pkg/util/intstr"
federationapi "k8s.io/kubernetes/federation/apis/federation/v1beta1" federationapi "k8s.io/kubernetes/federation/apis/federation/v1beta1"
"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/api/errors" "k8s.io/kubernetes/pkg/api/errors"
"k8s.io/kubernetes/pkg/api/v1" "k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/client/clientset_generated/release_1_3" kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
"k8s.io/kubernetes/pkg/client/restclient" "k8s.io/kubernetes/pkg/client/restclient"
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd" "k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api" clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
@ -53,7 +53,7 @@ in the federation
*/ */
type cluster struct { type cluster struct {
name string name string
*release_1_3.Clientset *kubeclientset.Clientset
namespaceCreated bool // Did we need to create a new namespace in this cluster? If so, we should delete it. namespaceCreated bool // Did we need to create a new namespace in this cluster? If so, we should delete it.
backendPod *v1.Pod // The backend pod, if one's been created. backendPod *v1.Pod // The backend pod, if one's been created.
} }
@ -79,18 +79,18 @@ func createClusterObjectOrFail(f *framework.Framework, context *framework.E2ECon
}, },
}, },
} }
_, err := f.FederationClientset_1_4.Federation().Clusters().Create(&cluster) _, err := f.FederationClientset_1_5.Federation().Clusters().Create(&cluster)
framework.ExpectNoError(err, fmt.Sprintf("creating cluster: %+v", err)) framework.ExpectNoError(err, fmt.Sprintf("creating cluster: %+v", err))
framework.Logf("Successfully created cluster object: %s (%s, secret: %s)", context.Name, context.Cluster.Cluster.Server, context.Name) framework.Logf("Successfully created cluster object: %s (%s, secret: %s)", context.Name, context.Cluster.Cluster.Server, context.Name)
} }
func clusterIsReadyOrFail(f *framework.Framework, context *framework.E2EContext) { func clusterIsReadyOrFail(f *framework.Framework, context *framework.E2EContext) {
c, err := f.FederationClientset_1_4.Federation().Clusters().Get(context.Name) c, err := f.FederationClientset_1_5.Federation().Clusters().Get(context.Name)
framework.ExpectNoError(err, fmt.Sprintf("get cluster: %+v", err)) framework.ExpectNoError(err, fmt.Sprintf("get cluster: %+v", err))
if c.ObjectMeta.Name != context.Name { if c.ObjectMeta.Name != context.Name {
framework.Failf("cluster name does not match input context: actual=%+v, expected=%+v", c, context) framework.Failf("cluster name does not match input context: actual=%+v, expected=%+v", c, context)
} }
err = isReady(context.Name, f.FederationClientset_1_4) err = isReady(context.Name, f.FederationClientset_1_5)
framework.ExpectNoError(err, fmt.Sprintf("unexpected error in verifying if cluster %s is ready: %+v", context.Name, err)) framework.ExpectNoError(err, fmt.Sprintf("unexpected error in verifying if cluster %s is ready: %+v", context.Name, err))
framework.Logf("Cluster %s is Ready", context.Name) framework.Logf("Cluster %s is Ready", context.Name)
} }
@ -101,7 +101,7 @@ func waitForAllClustersReady(f *framework.Framework, clusterCount int) *federati
var clusterList *federationapi.ClusterList var clusterList *federationapi.ClusterList
if err := wait.PollImmediate(framework.Poll, FederatedServiceTimeout, func() (bool, error) { if err := wait.PollImmediate(framework.Poll, FederatedServiceTimeout, func() (bool, error) {
var err error var err error
clusterList, err = f.FederationClientset_1_4.Federation().Clusters().List(api.ListOptions{}) clusterList, err = f.FederationClientset_1_5.Federation().Clusters().List(v1.ListOptions{})
if err != nil { if err != nil {
return false, err return false, err
} }
@ -116,7 +116,7 @@ func waitForAllClustersReady(f *framework.Framework, clusterCount int) *federati
return clusterList return clusterList
} }
func createClientsetForCluster(c federationapi.Cluster, i int, userAgentName string) *release_1_3.Clientset { func createClientsetForCluster(c federationapi.Cluster, i int, userAgentName string) *kubeclientset.Clientset {
kubecfg, err := clientcmd.LoadFromFile(framework.TestContext.KubeConfig) kubecfg, err := clientcmd.LoadFromFile(framework.TestContext.KubeConfig)
framework.ExpectNoError(err, "error loading KubeConfig: %v", err) framework.ExpectNoError(err, "error loading KubeConfig: %v", err)
@ -131,7 +131,7 @@ func createClientsetForCluster(c federationapi.Cluster, i int, userAgentName str
cfg.QPS = KubeAPIQPS cfg.QPS = KubeAPIQPS
cfg.Burst = KubeAPIBurst cfg.Burst = KubeAPIBurst
return release_1_3.NewForConfigOrDie(restclient.AddUserAgent(cfg, userAgentName)) return kubeclientset.NewForConfigOrDie(restclient.AddUserAgent(cfg, userAgentName))
} }
// Creates the federation namespace in all underlying clusters. // Creates the federation namespace in all underlying clusters.
@ -165,7 +165,7 @@ func unregisterClusters(clusters map[string]*cluster, f *framework.Framework) {
for name, c := range clusters { for name, c := range clusters {
if c.namespaceCreated { if c.namespaceCreated {
if _, err := c.Clientset.Core().Namespaces().Get(nsName); !errors.IsNotFound(err) { if _, err := c.Clientset.Core().Namespaces().Get(nsName); !errors.IsNotFound(err) {
err := c.Clientset.Core().Namespaces().Delete(nsName, &api.DeleteOptions{}) err := c.Clientset.Core().Namespaces().Delete(nsName, &v1.DeleteOptions{})
framework.ExpectNoError(err, "Couldn't delete the namespace %s in cluster %q: %v", nsName, name, err) framework.ExpectNoError(err, "Couldn't delete the namespace %s in cluster %q: %v", nsName, name, err)
} }
framework.Logf("Namespace %s deleted in cluster %q", nsName, name) framework.Logf("Namespace %s deleted in cluster %q", nsName, name)
@ -173,10 +173,10 @@ func unregisterClusters(clusters map[string]*cluster, f *framework.Framework) {
} }
// Delete the registered clusters in the federation API server. // Delete the registered clusters in the federation API server.
clusterList, err := f.FederationClientset_1_4.Federation().Clusters().List(api.ListOptions{}) clusterList, err := f.FederationClientset_1_5.Federation().Clusters().List(v1.ListOptions{})
framework.ExpectNoError(err, "Error listing clusters") framework.ExpectNoError(err, "Error listing clusters")
for _, cluster := range clusterList.Items { for _, cluster := range clusterList.Items {
err := f.FederationClientset_1_4.Federation().Clusters().Delete(cluster.Name, &api.DeleteOptions{}) err := f.FederationClientset_1_5.Federation().Clusters().Delete(cluster.Name, &v1.DeleteOptions{})
framework.ExpectNoError(err, "Error deleting cluster %q", cluster.Name) framework.ExpectNoError(err, "Error deleting cluster %q", cluster.Name)
} }
} }
@ -213,7 +213,7 @@ func registerClusters(clusters map[string]*cluster, userAgentName, federationNam
waitForServiceOrFail waits until a service is either present or absent in the cluster specified by clientset. waitForServiceOrFail waits until a service is either present or absent in the cluster specified by clientset.
If the condition is not met within timout, it fails the calling test. If the condition is not met within timout, it fails the calling test.
*/ */
func waitForServiceOrFail(clientset *release_1_3.Clientset, namespace string, service *v1.Service, present bool, timeout time.Duration) { func waitForServiceOrFail(clientset *kubeclientset.Clientset, namespace string, service *v1.Service, present bool, timeout time.Duration) {
By(fmt.Sprintf("Fetching a federated service shard of service %q in namespace %q from cluster", service.Name, namespace)) By(fmt.Sprintf("Fetching a federated service shard of service %q in namespace %q from cluster", service.Name, namespace))
var clusterService *v1.Service var clusterService *v1.Service
err := wait.PollImmediate(framework.Poll, timeout, func() (bool, error) { err := wait.PollImmediate(framework.Poll, timeout, func() (bool, error) {
@ -246,7 +246,7 @@ func waitForServiceShardsOrFail(namespace string, service *v1.Service, clusters
} }
} }
func createService(clientset *federation_release_1_4.Clientset, namespace, name string) (*v1.Service, error) { func createService(clientset *fedclientset.Clientset, namespace, name string) (*v1.Service, error) {
if clientset == nil || len(namespace) == 0 { if clientset == nil || len(namespace) == 0 {
return nil, fmt.Errorf("Internal error: invalid parameters passed to createService: clientset: %v, namespace: %v", clientset, namespace) return nil, fmt.Errorf("Internal error: invalid parameters passed to createService: clientset: %v, namespace: %v", clientset, namespace)
} }
@ -273,18 +273,18 @@ func createService(clientset *federation_release_1_4.Clientset, namespace, name
return clientset.Services(namespace).Create(service) return clientset.Services(namespace).Create(service)
} }
func createServiceOrFail(clientset *federation_release_1_4.Clientset, namespace, name string) *v1.Service { func createServiceOrFail(clientset *fedclientset.Clientset, namespace, name string) *v1.Service {
service, err := createService(clientset, namespace, name) service, err := createService(clientset, namespace, name)
framework.ExpectNoError(err, "Creating service %q in namespace %q", service.Name, namespace) framework.ExpectNoError(err, "Creating service %q in namespace %q", service.Name, namespace)
By(fmt.Sprintf("Successfully created federated service %q in namespace %q", name, namespace)) By(fmt.Sprintf("Successfully created federated service %q in namespace %q", name, namespace))
return service return service
} }
func deleteServiceOrFail(clientset *federation_release_1_4.Clientset, namespace string, serviceName string) { func deleteServiceOrFail(clientset *fedclientset.Clientset, namespace string, serviceName string) {
if clientset == nil || len(namespace) == 0 || len(serviceName) == 0 { if clientset == nil || len(namespace) == 0 || len(serviceName) == 0 {
Fail(fmt.Sprintf("Internal error: invalid parameters passed to deleteServiceOrFail: clientset: %v, namespace: %v, service: %v", clientset, namespace, serviceName)) Fail(fmt.Sprintf("Internal error: invalid parameters passed to deleteServiceOrFail: clientset: %v, namespace: %v, service: %v", clientset, namespace, serviceName))
} }
err := clientset.Services(namespace).Delete(serviceName, api.NewDeleteOptions(0)) err := clientset.Services(namespace).Delete(serviceName, v1.NewDeleteOptions(0))
framework.ExpectNoError(err, "Error deleting service %q from namespace %q", serviceName, namespace) framework.ExpectNoError(err, "Error deleting service %q from namespace %q", serviceName, namespace)
} }
@ -325,9 +325,9 @@ func cleanupServiceShardsAndProviderResources(namespace string, service *v1.Serv
} }
} }
func cleanupServiceShard(clientset *release_1_3.Clientset, clusterName, namespace string, service *v1.Service, timeout time.Duration) error { func cleanupServiceShard(clientset *kubeclientset.Clientset, clusterName, namespace string, service *v1.Service, timeout time.Duration) error {
err := wait.PollImmediate(framework.Poll, timeout, func() (bool, error) { err := wait.PollImmediate(framework.Poll, timeout, func() (bool, error) {
err := clientset.Services(namespace).Delete(service.Name, &api.DeleteOptions{}) err := clientset.Services(namespace).Delete(service.Name, &v1.DeleteOptions{})
if err != nil && !errors.IsNotFound(err) { if err != nil && !errors.IsNotFound(err) {
// Deletion failed with an error, try again. // Deletion failed with an error, try again.
framework.Logf("Failed to delete service %q in namespace %q, in cluster %q", service.Name, namespace, clusterName) framework.Logf("Failed to delete service %q in namespace %q, in cluster %q", service.Name, namespace, clusterName)
@ -488,7 +488,7 @@ The test fails if there are any errors.
func deleteOneBackendPodOrFail(c *cluster) { func deleteOneBackendPodOrFail(c *cluster) {
pod := c.backendPod pod := c.backendPod
Expect(pod).ToNot(BeNil()) Expect(pod).ToNot(BeNil())
err := c.Clientset.Core().Pods(pod.Namespace).Delete(pod.Name, api.NewDeleteOptions(0)) err := c.Clientset.Core().Pods(pod.Namespace).Delete(pod.Name, v1.NewDeleteOptions(0))
if errors.IsNotFound(err) { if errors.IsNotFound(err) {
By(fmt.Sprintf("Pod %q in namespace %q in cluster %q does not exist. No need to delete it.", pod.Name, pod.Namespace, c.name)) By(fmt.Sprintf("Pod %q in namespace %q in cluster %q does not exist. No need to delete it.", pod.Name, pod.Namespace, c.name))
} else { } else {

View File

@ -29,7 +29,7 @@ import (
staging "k8s.io/client-go/1.5/kubernetes" staging "k8s.io/client-go/1.5/kubernetes"
"k8s.io/client-go/1.5/pkg/util/sets" "k8s.io/client-go/1.5/pkg/util/sets"
clientreporestclient "k8s.io/client-go/1.5/rest" clientreporestclient "k8s.io/client-go/1.5/rest"
"k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_4" "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5"
"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/unversioned" "k8s.io/kubernetes/pkg/api/unversioned"
@ -96,7 +96,7 @@ type Framework struct {
federated bool federated bool
// Federation specific params. These are set only if federated = true. // Federation specific params. These are set only if federated = true.
FederationClientset_1_4 *federation_release_1_4.Clientset FederationClientset_1_5 *federation_release_1_5.Clientset
FederationNamespace *v1.Namespace FederationNamespace *v1.Namespace
} }
@ -210,14 +210,14 @@ func (f *Framework) BeforeEach() {
} }
if f.federated { if f.federated {
if f.FederationClientset_1_4 == nil { if f.FederationClientset_1_5 == nil {
By("Creating a release 1.4 federation Clientset") By("Creating a release 1.4 federation Clientset")
var err error var err error
f.FederationClientset_1_4, err = LoadFederationClientset_1_4() f.FederationClientset_1_5, err = LoadFederationClientset_1_5()
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
} }
By("Waiting for federation-apiserver to be ready") By("Waiting for federation-apiserver to be ready")
err := WaitForFederationApiserverReady(f.FederationClientset_1_4) err := WaitForFederationApiserverReady(f.FederationClientset_1_5)
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
By("federation-apiserver is ready") By("federation-apiserver is ready")
@ -276,9 +276,9 @@ func (f *Framework) deleteFederationNs() {
timeout = f.NamespaceDeletionTimeout timeout = f.NamespaceDeletionTimeout
} }
clientset := f.FederationClientset_1_4 clientset := f.FederationClientset_1_5
// First delete the namespace from federation apiserver. // First delete the namespace from federation apiserver.
if err := clientset.Core().Namespaces().Delete(ns.Name, &api.DeleteOptions{}); err != nil { if err := clientset.Core().Namespaces().Delete(ns.Name, &v1.DeleteOptions{}); err != nil {
Failf("Error while deleting federation namespace %s: %s", ns.Name, err) Failf("Error while deleting federation namespace %s: %s", ns.Name, err)
} }
// Verify that it got deleted. // Verify that it got deleted.
@ -353,11 +353,11 @@ func (f *Framework) AfterEach() {
if f.federated { if f.federated {
defer func() { defer func() {
if f.FederationClientset_1_4 == nil { if f.FederationClientset_1_5 == nil {
Logf("Warning: framework is marked federated, but has no federation 1.4 clientset") Logf("Warning: framework is marked federated, but has no federation 1.4 clientset")
return return
} }
if err := f.FederationClientset_1_4.Federation().Clusters().DeleteCollection(nil, api.ListOptions{}); err != nil { if err := f.FederationClientset_1_5.Federation().Clusters().DeleteCollection(nil, v1.ListOptions{}); err != nil {
Logf("Error: failed to delete Clusters: %+v", err) Logf("Error: failed to delete Clusters: %+v", err)
} }
}() }()
@ -371,8 +371,8 @@ func (f *Framework) AfterEach() {
LogContainersInPodsWithLabels(f.Client, api.NamespaceSystem, ImagePullerLabels, "image-puller") LogContainersInPodsWithLabels(f.Client, api.NamespaceSystem, ImagePullerLabels, "image-puller")
if f.federated { if f.federated {
// Dump federation events in federation namespace. // Dump federation events in federation namespace.
DumpEventsInNamespace(func(opts api.ListOptions, ns string) (*v1.EventList, error) { DumpEventsInNamespace(func(opts v1.ListOptions, ns string) (*v1.EventList, error) {
return f.FederationClientset_1_4.Core().Events(ns).List(opts) return f.FederationClientset_1_5.Core().Events(ns).List(opts)
}, f.FederationNamespace.Name) }, f.FederationNamespace.Name)
// Print logs of federation control plane pods (federation-apiserver and federation-controller-manager) // Print logs of federation control plane pods (federation-apiserver and federation-controller-manager)
LogPodsWithLabels(f.Client, "federation", map[string]string{"app": "federated-cluster"}) LogPodsWithLabels(f.Client, "federation", map[string]string{"app": "federated-cluster"})
@ -449,7 +449,7 @@ func (f *Framework) CreateNamespace(baseName string, labels map[string]string) (
} }
func (f *Framework) createFederationNamespace(baseName string) (*v1.Namespace, error) { func (f *Framework) createFederationNamespace(baseName string) (*v1.Namespace, error) {
clientset := f.FederationClientset_1_4 clientset := f.FederationClientset_1_5
namespaceObj := &v1.Namespace{ namespaceObj := &v1.Namespace{
ObjectMeta: v1.ObjectMeta{ ObjectMeta: v1.ObjectMeta{
GenerateName: fmt.Sprintf("e2e-tests-%v-", baseName), GenerateName: fmt.Sprintf("e2e-tests-%v-", baseName),

View File

@ -43,7 +43,7 @@ import (
"time" "time"
"github.com/golang/glog" "github.com/golang/glog"
"k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_4" "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5"
"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"
@ -941,9 +941,9 @@ func WaitForDefaultServiceAccountInNamespace(c *client.Client, namespace string)
// WaitForFederationApiserverReady waits for the federation apiserver to be ready. // WaitForFederationApiserverReady waits for the federation apiserver to be ready.
// It tests the readiness by sending a GET request and expecting a non error response. // It tests the readiness by sending a GET request and expecting a non error response.
func WaitForFederationApiserverReady(c *federation_release_1_4.Clientset) error { func WaitForFederationApiserverReady(c *federation_release_1_5.Clientset) error {
return wait.PollImmediate(time.Second, 1*time.Minute, func() (bool, error) { return wait.PollImmediate(time.Second, 1*time.Minute, func() (bool, error) {
_, err := c.Federation().Clusters().List(api.ListOptions{}) _, err := c.Federation().Clusters().List(v1.ListOptions{})
if err != nil { if err != nil {
return false, nil return false, nil
} }
@ -1959,13 +1959,13 @@ func setTimeouts(cs ...*http.Client) {
} }
} }
func LoadFederationClientset_1_4() (*federation_release_1_4.Clientset, error) { func LoadFederationClientset_1_5() (*federation_release_1_5.Clientset, error) {
config, err := LoadFederatedConfig(&clientcmd.ConfigOverrides{}) config, err := LoadFederatedConfig(&clientcmd.ConfigOverrides{})
if err != nil { if err != nil {
return nil, err return nil, err
} }
c, err := federation_release_1_4.NewForConfig(config) c, err := federation_release_1_5.NewForConfig(config)
if err != nil { if err != nil {
return nil, fmt.Errorf("error creating federation clientset: %v", err.Error()) return nil, fmt.Errorf("error creating federation clientset: %v", err.Error())
} }
@ -2827,11 +2827,11 @@ func dumpPodDebugInfo(c *client.Client, pods []*api.Pod) {
DumpNodeDebugInfo(c, badNodes.List()) DumpNodeDebugInfo(c, badNodes.List())
} }
type EventsLister func(opts api.ListOptions, ns string) (*v1.EventList, error) type EventsLister func(opts v1.ListOptions, ns string) (*v1.EventList, error)
func DumpEventsInNamespace(eventsLister EventsLister, namespace string) { func DumpEventsInNamespace(eventsLister EventsLister, namespace string) {
By(fmt.Sprintf("Collecting events from namespace %q.", namespace)) By(fmt.Sprintf("Collecting events from namespace %q.", namespace))
events, err := eventsLister(api.ListOptions{}, namespace) events, err := eventsLister(v1.ListOptions{}, namespace)
Expect(err).NotTo(HaveOccurred()) Expect(err).NotTo(HaveOccurred())
// Sort events by their first timestamp // Sort events by their first timestamp
@ -2848,7 +2848,7 @@ func DumpEventsInNamespace(eventsLister EventsLister, namespace string) {
} }
func DumpAllNamespaceInfo(c *client.Client, cs *release_1_5.Clientset, namespace string) { func DumpAllNamespaceInfo(c *client.Client, cs *release_1_5.Clientset, namespace string) {
DumpEventsInNamespace(func(opts api.ListOptions, ns string) (*v1.EventList, error) { DumpEventsInNamespace(func(opts v1.ListOptions, ns string) (*v1.EventList, error) {
return cs.Core().Events(ns).List(opts) return cs.Core().Events(ns).List(opts)
}, namespace) }, namespace)

View File

@ -20,7 +20,6 @@ import (
"fmt" "fmt"
"time" "time"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/unversioned" "k8s.io/kubernetes/pkg/api/unversioned"
"k8s.io/kubernetes/pkg/api/v1" "k8s.io/kubernetes/pkg/api/v1"
clientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5" clientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
@ -31,14 +30,14 @@ import (
. "github.com/onsi/ginkgo" . "github.com/onsi/ginkgo"
) )
func getOrphanOptions() *api.DeleteOptions { func getOrphanOptions() *v1.DeleteOptions {
var trueVar = true var trueVar = true
return &api.DeleteOptions{OrphanDependents: &trueVar} return &v1.DeleteOptions{OrphanDependents: &trueVar}
} }
func getNonOrphanOptions() *api.DeleteOptions { func getNonOrphanOptions() *v1.DeleteOptions {
var falseVar = false var falseVar = false
return &api.DeleteOptions{OrphanDependents: &falseVar} return &v1.DeleteOptions{OrphanDependents: &falseVar}
} }
func newOwnerRC(f *framework.Framework, name string) *v1.ReplicationController { func newOwnerRC(f *framework.Framework, name string) *v1.ReplicationController {
@ -78,7 +77,7 @@ func newOwnerRC(f *framework.Framework, name string) *v1.ReplicationController {
// communication with the API server fails. // communication with the API server fails.
func verifyRemainingObjects(f *framework.Framework, clientSet clientset.Interface, rcNum, podNum int) (bool, error) { func verifyRemainingObjects(f *framework.Framework, clientSet clientset.Interface, rcNum, podNum int) (bool, error) {
rcClient := clientSet.Core().ReplicationControllers(f.Namespace.Name) rcClient := clientSet.Core().ReplicationControllers(f.Namespace.Name)
pods, err := clientSet.Core().Pods(f.Namespace.Name).List(api.ListOptions{}) pods, err := clientSet.Core().Pods(f.Namespace.Name).List(v1.ListOptions{})
if err != nil { if err != nil {
return false, fmt.Errorf("Failed to list pods: %v", err) return false, fmt.Errorf("Failed to list pods: %v", err)
} }
@ -87,7 +86,7 @@ func verifyRemainingObjects(f *framework.Framework, clientSet clientset.Interfac
ret = false ret = false
By(fmt.Sprintf("expected %d pods, got %d pods", podNum, len(pods.Items))) By(fmt.Sprintf("expected %d pods, got %d pods", podNum, len(pods.Items)))
} }
rcs, err := rcClient.List(api.ListOptions{}) rcs, err := rcClient.List(v1.ListOptions{})
if err != nil { if err != nil {
return false, fmt.Errorf("Failed to list replication controllers: %v", err) return false, fmt.Errorf("Failed to list replication controllers: %v", err)
} }
@ -130,7 +129,7 @@ var _ = framework.KubeDescribe("Garbage collector", func() {
} }
// wait for rc to create some pods // wait for rc to create some pods
if err := wait.Poll(5*time.Second, 30*time.Second, func() (bool, error) { if err := wait.Poll(5*time.Second, 30*time.Second, func() (bool, error) {
pods, err := podClient.List(api.ListOptions{}) pods, err := podClient.List(v1.ListOptions{})
if err != nil { if err != nil {
return false, fmt.Errorf("Failed to list pods: %v", err) return false, fmt.Errorf("Failed to list pods: %v", err)
} }
@ -148,7 +147,7 @@ var _ = framework.KubeDescribe("Garbage collector", func() {
} }
By("delete the rc") By("delete the rc")
deleteOptions := getNonOrphanOptions() deleteOptions := getNonOrphanOptions()
deleteOptions.Preconditions = api.NewUIDPreconditions(string(rc.UID)) deleteOptions.Preconditions = v1.NewUIDPreconditions(string(rc.UID))
if err := rcClient.Delete(rc.ObjectMeta.Name, deleteOptions); err != nil { if err := rcClient.Delete(rc.ObjectMeta.Name, deleteOptions); err != nil {
framework.Failf("failed to delete the rc: %v", err) framework.Failf("failed to delete the rc: %v", err)
} }
@ -158,7 +157,7 @@ var _ = framework.KubeDescribe("Garbage collector", func() {
return verifyRemainingObjects(f, clientSet, 0, 0) return verifyRemainingObjects(f, clientSet, 0, 0)
}); err != nil { }); err != nil {
framework.Failf("failed to wait for all pods to be deleted: %v", err) framework.Failf("failed to wait for all pods to be deleted: %v", err)
remainingPods, err := podClient.List(api.ListOptions{}) remainingPods, err := podClient.List(v1.ListOptions{})
if err != nil { if err != nil {
framework.Failf("failed to list pods post mortem: %v", err) framework.Failf("failed to list pods post mortem: %v", err)
} else { } else {
@ -197,13 +196,13 @@ var _ = framework.KubeDescribe("Garbage collector", func() {
} }
By("delete the rc") By("delete the rc")
deleteOptions := getOrphanOptions() deleteOptions := getOrphanOptions()
deleteOptions.Preconditions = api.NewUIDPreconditions(string(rc.UID)) deleteOptions.Preconditions = v1.NewUIDPreconditions(string(rc.UID))
if err := rcClient.Delete(rc.ObjectMeta.Name, deleteOptions); err != nil { if err := rcClient.Delete(rc.ObjectMeta.Name, deleteOptions); err != nil {
framework.Failf("failed to delete the rc: %v", err) framework.Failf("failed to delete the rc: %v", err)
} }
By("wait for the rc to be deleted") By("wait for the rc to be deleted")
if err := wait.Poll(5*time.Second, 30*time.Second, func() (bool, error) { if err := wait.Poll(5*time.Second, 30*time.Second, func() (bool, error) {
rcs, err := rcClient.List(api.ListOptions{}) rcs, err := rcClient.List(v1.ListOptions{})
if err != nil { if err != nil {
return false, fmt.Errorf("Failed to list rcs: %v", err) return false, fmt.Errorf("Failed to list rcs: %v", err)
} }
@ -216,7 +215,7 @@ var _ = framework.KubeDescribe("Garbage collector", func() {
} }
By("wait for 30 seconds to see if the garbage collector mistakenly deletes the pods") By("wait for 30 seconds to see if the garbage collector mistakenly deletes the pods")
if err := wait.Poll(5*time.Second, 30*time.Second, func() (bool, error) { if err := wait.Poll(5*time.Second, 30*time.Second, func() (bool, error) {
pods, err := podClient.List(api.ListOptions{}) pods, err := podClient.List(v1.ListOptions{})
if err != nil { if err != nil {
return false, fmt.Errorf("Failed to list pods: %v", err) return false, fmt.Errorf("Failed to list pods: %v", err)
} }
@ -256,14 +255,14 @@ var _ = framework.KubeDescribe("Garbage collector", func() {
framework.Failf("failed to wait for the rc.Status.Replicas to reach rc.Spec.Replicas: %v", err) framework.Failf("failed to wait for the rc.Status.Replicas to reach rc.Spec.Replicas: %v", err)
} }
By("delete the rc") By("delete the rc")
deleteOptions := &api.DeleteOptions{} deleteOptions := &v1.DeleteOptions{}
deleteOptions.Preconditions = api.NewUIDPreconditions(string(rc.UID)) deleteOptions.Preconditions = v1.NewUIDPreconditions(string(rc.UID))
if err := rcClient.Delete(rc.ObjectMeta.Name, deleteOptions); err != nil { if err := rcClient.Delete(rc.ObjectMeta.Name, deleteOptions); err != nil {
framework.Failf("failed to delete the rc: %v", err) framework.Failf("failed to delete the rc: %v", err)
} }
By("wait for 30 seconds to see if the garbage collector mistakenly deletes the pods") By("wait for 30 seconds to see if the garbage collector mistakenly deletes the pods")
if err := wait.Poll(5*time.Second, 30*time.Second, func() (bool, error) { if err := wait.Poll(5*time.Second, 30*time.Second, func() (bool, error) {
pods, err := podClient.List(api.ListOptions{}) pods, err := podClient.List(v1.ListOptions{})
if err != nil { if err != nil {
return false, fmt.Errorf("Failed to list pods: %v", err) return false, fmt.Errorf("Failed to list pods: %v", err)
} }

View File

@ -22,7 +22,6 @@ import (
clientapi "k8s.io/client-go/1.5/pkg/api" clientapi "k8s.io/client-go/1.5/pkg/api"
clientv1 "k8s.io/client-go/1.5/pkg/api/v1" clientv1 "k8s.io/client-go/1.5/pkg/api/v1"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/v1" "k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/labels" "k8s.io/kubernetes/pkg/labels"
"k8s.io/kubernetes/pkg/runtime" "k8s.io/kubernetes/pkg/runtime"
@ -129,14 +128,14 @@ var _ = framework.KubeDescribe("Generated release_1_5 clientset", func() {
podCopy := testingPod(name, value) podCopy := testingPod(name, value)
pod := &podCopy pod := &podCopy
By("setting up watch") By("setting up watch")
selector := labels.SelectorFromSet(labels.Set(map[string]string{"time": value})) selector := labels.SelectorFromSet(labels.Set(map[string]string{"time": value})).String()
options := api.ListOptions{LabelSelector: selector} options := v1.ListOptions{LabelSelector: selector}
pods, err := podClient.List(options) pods, err := podClient.List(options)
if err != nil { if err != nil {
framework.Failf("Failed to query for pods: %v", err) framework.Failf("Failed to query for pods: %v", err)
} }
Expect(len(pods.Items)).To(Equal(0)) Expect(len(pods.Items)).To(Equal(0))
options = api.ListOptions{ options = v1.ListOptions{
LabelSelector: selector, LabelSelector: selector,
ResourceVersion: pods.ListMeta.ResourceVersion, ResourceVersion: pods.ListMeta.ResourceVersion,
} }
@ -153,10 +152,10 @@ var _ = framework.KubeDescribe("Generated release_1_5 clientset", func() {
// We call defer here in case there is a problem with // We call defer here in case there is a problem with
// the test so we can ensure that we clean up after // the test so we can ensure that we clean up after
// ourselves // ourselves
defer podClient.Delete(pod.Name, api.NewDeleteOptions(0)) defer podClient.Delete(pod.Name, v1.NewDeleteOptions(0))
By("verifying the pod is in kubernetes") By("verifying the pod is in kubernetes")
options = api.ListOptions{ options = v1.ListOptions{
LabelSelector: selector, LabelSelector: selector,
ResourceVersion: pod.ResourceVersion, ResourceVersion: pod.ResourceVersion,
} }
@ -174,7 +173,7 @@ var _ = framework.KubeDescribe("Generated release_1_5 clientset", func() {
framework.ExpectNoError(f.WaitForPodRunning(pod.Name)) framework.ExpectNoError(f.WaitForPodRunning(pod.Name))
By("deleting the pod gracefully") By("deleting the pod gracefully")
if err := podClient.Delete(pod.Name, api.NewDeleteOptions(30)); err != nil { if err := podClient.Delete(pod.Name, v1.NewDeleteOptions(30)); err != nil {
framework.Failf("Failed to delete pod: %v", err) framework.Failf("Failed to delete pod: %v", err)
} }
@ -184,7 +183,7 @@ var _ = framework.KubeDescribe("Generated release_1_5 clientset", func() {
Expect(lastPod.DeletionTimestamp).ToNot(BeNil()) Expect(lastPod.DeletionTimestamp).ToNot(BeNil())
Expect(lastPod.Spec.TerminationGracePeriodSeconds).ToNot(BeZero()) Expect(lastPod.Spec.TerminationGracePeriodSeconds).ToNot(BeZero())
options = api.ListOptions{LabelSelector: selector} options = v1.ListOptions{LabelSelector: selector}
pods, err = podClient.List(options) pods, err = podClient.List(options)
if err != nil { if err != nil {
framework.Failf("Failed to list pods to verify deletion: %v", err) framework.Failf("Failed to list pods to verify deletion: %v", err)

View File

@ -45,14 +45,14 @@ import (
"k8s.io/kubernetes/test/integration/framework" "k8s.io/kubernetes/test/integration/framework"
) )
func getOrphanOptions() *api.DeleteOptions { func getOrphanOptions() *v1.DeleteOptions {
var trueVar = true var trueVar = true
return &api.DeleteOptions{OrphanDependents: &trueVar} return &v1.DeleteOptions{OrphanDependents: &trueVar}
} }
func getNonOrphanOptions() *api.DeleteOptions { func getNonOrphanOptions() *v1.DeleteOptions {
var falseVar = false var falseVar = false
return &api.DeleteOptions{OrphanDependents: &falseVar} return &v1.DeleteOptions{OrphanDependents: &falseVar}
} }
const garbageCollectedPodName = "test.pod.1" const garbageCollectedPodName = "test.pod.1"
@ -166,7 +166,7 @@ func TestCascadingDeletion(t *testing.T) {
t.Fatalf("Failed to create replication controller: %v", err) t.Fatalf("Failed to create replication controller: %v", err)
} }
rcs, err := rcClient.List(api.ListOptions{}) rcs, err := rcClient.List(v1.ListOptions{})
if err != nil { if err != nil {
t.Fatalf("Failed to list replication controllers: %v", err) t.Fatalf("Failed to list replication controllers: %v", err)
} }
@ -199,7 +199,7 @@ func TestCascadingDeletion(t *testing.T) {
} }
// set up watch // set up watch
pods, err := podClient.List(api.ListOptions{}) pods, err := podClient.List(v1.ListOptions{})
if err != nil { if err != nil {
t.Fatalf("Failed to list pods: %v", err) t.Fatalf("Failed to list pods: %v", err)
} }
@ -251,7 +251,7 @@ func TestCreateWithNonExistentOwner(t *testing.T) {
} }
// set up watch // set up watch
pods, err := podClient.List(api.ListOptions{}) pods, err := podClient.List(v1.ListOptions{})
if err != nil { if err != nil {
t.Fatalf("Failed to list pods: %v", err) t.Fatalf("Failed to list pods: %v", err)
} }
@ -267,7 +267,7 @@ func TestCreateWithNonExistentOwner(t *testing.T) {
} }
} }
func setupRCsPods(t *testing.T, gc *garbagecollector.GarbageCollector, clientSet clientset.Interface, nameSuffix, namespace string, initialFinalizers []string, options *api.DeleteOptions, wg *sync.WaitGroup, rcUIDs chan types.UID) { func setupRCsPods(t *testing.T, gc *garbagecollector.GarbageCollector, clientSet clientset.Interface, nameSuffix, namespace string, initialFinalizers []string, options *v1.DeleteOptions, wg *sync.WaitGroup, rcUIDs chan types.UID) {
defer wg.Done() defer wg.Done()
rcClient := clientSet.Core().ReplicationControllers(namespace) rcClient := clientSet.Core().ReplicationControllers(namespace)
podClient := clientSet.Core().Pods(namespace) podClient := clientSet.Core().Pods(namespace)
@ -307,7 +307,7 @@ func setupRCsPods(t *testing.T, gc *garbagecollector.GarbageCollector, clientSet
func verifyRemainingObjects(t *testing.T, clientSet clientset.Interface, namespace string, rcNum, podNum int) (bool, error) { func verifyRemainingObjects(t *testing.T, clientSet clientset.Interface, namespace string, rcNum, podNum int) (bool, error) {
rcClient := clientSet.Core().ReplicationControllers(namespace) rcClient := clientSet.Core().ReplicationControllers(namespace)
podClient := clientSet.Core().Pods(namespace) podClient := clientSet.Core().Pods(namespace)
pods, err := podClient.List(api.ListOptions{}) pods, err := podClient.List(v1.ListOptions{})
if err != nil { if err != nil {
return false, fmt.Errorf("Failed to list pods: %v", err) return false, fmt.Errorf("Failed to list pods: %v", err)
} }
@ -316,7 +316,7 @@ func verifyRemainingObjects(t *testing.T, clientSet clientset.Interface, namespa
ret = false ret = false
t.Logf("expect %d pods, got %d pods", podNum, len(pods.Items)) t.Logf("expect %d pods, got %d pods", podNum, len(pods.Items))
} }
rcs, err := rcClient.List(api.ListOptions{}) rcs, err := rcClient.List(v1.ListOptions{})
if err != nil { if err != nil {
return false, fmt.Errorf("Failed to list replication controllers: %v", err) return false, fmt.Errorf("Failed to list replication controllers: %v", err)
} }
@ -371,7 +371,7 @@ func TestStressingCascadingDeletion(t *testing.T) {
// verify the remaining pods all have "orphan" in their names. // verify the remaining pods all have "orphan" in their names.
podClient := clientSet.Core().Pods(ns.Name) podClient := clientSet.Core().Pods(ns.Name)
pods, err := podClient.List(api.ListOptions{}) pods, err := podClient.List(v1.ListOptions{})
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -448,7 +448,7 @@ func TestOrphaning(t *testing.T) {
} }
// verify the toBeDeleteRC is deleted // verify the toBeDeleteRC is deleted
if err := wait.PollImmediate(5*time.Second, 30*time.Second, func() (bool, error) { if err := wait.PollImmediate(5*time.Second, 30*time.Second, func() (bool, error) {
rcs, err := rcClient.List(api.ListOptions{}) rcs, err := rcClient.List(v1.ListOptions{})
if err != nil { if err != nil {
return false, err return false, err
} }
@ -462,7 +462,7 @@ func TestOrphaning(t *testing.T) {
} }
// verify pods don't have the ownerPod as an owner anymore // verify pods don't have the ownerPod as an owner anymore
pods, err := podClient.List(api.ListOptions{}) pods, err := podClient.List(v1.ListOptions{})
if err != nil { if err != nil {
t.Fatalf("Failed to list pods: %v", err) t.Fatalf("Failed to list pods: %v", err)
} }