mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-30 06:54:01 +00:00
manual changes to let client-gen use versioned options
This commit is contained in:
parent
d26b4ca285
commit
75cc05de82
@ -88,6 +88,7 @@ func packageForGroup(gv unversioned.GroupVersion, typeList []*types.Type, packag
|
||||
},
|
||||
outputPackage: outputPackagePath,
|
||||
group: normalization.BeforeFirstDot(gv.Group),
|
||||
version: gv.Version,
|
||||
typeToMatch: t,
|
||||
imports: generator.NewImportTracker(),
|
||||
})
|
||||
|
@ -110,8 +110,6 @@ func (g *genFakeForType) GenerateType(c *generator.Context, t *types.Type, w io.
|
||||
"groupName": groupName,
|
||||
"version": canonicalVersion,
|
||||
"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"}),
|
||||
"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"}),
|
||||
@ -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"}),
|
||||
"NewRootPatchSubresourceAction": c.Universe.Function(types.Name{Package: pkgTestingCore, Name: "NewRootPatchSubresourceAction"}),
|
||||
"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
|
||||
@ -191,7 +198,7 @@ var $.type|allLowercasePlural$Resource = $.GroupVersionResource|raw${Group: "$.g
|
||||
`
|
||||
|
||||
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.
|
||||
$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$
|
||||
@ -203,7 +210,7 @@ func (c *Fake$.type|publicPlural$) List(opts $.apiListOptions|raw$) (result *$.t
|
||||
`
|
||||
|
||||
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.
|
||||
$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$
|
||||
@ -211,7 +218,7 @@ func (c *Fake$.type|publicPlural$) List(opts $.apiListOptions|raw$) (result *$.t
|
||||
return nil, err
|
||||
}
|
||||
|
||||
label := opts.LabelSelector
|
||||
label, _, _ := $.ExtractFromListOptions|raw$(opts)
|
||||
if label == nil {
|
||||
label = $.Everything|raw$()
|
||||
}
|
||||
@ -238,7 +245,7 @@ func (c *Fake$.type|publicPlural$) Get(name string) (result *$.type|raw$, err er
|
||||
`
|
||||
|
||||
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.
|
||||
$if .namespaced$Invokes($.NewDeleteAction|raw$($.type|allLowercasePlural$Resource, c.ns, name), &$.type|raw${})
|
||||
$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 = `
|
||||
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)
|
||||
$else$action := $.NewRootDeleteCollectionAction|raw$($.type|allLowercasePlural$Resource, listOptions)
|
||||
$end$
|
||||
@ -294,7 +301,7 @@ func (c *Fake$.type|publicPlural$) UpdateStatus($.type|private$ *$.type|raw$) (*
|
||||
|
||||
var watchTemplate = `
|
||||
// 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.
|
||||
$if .namespaced$InvokesWatch($.NewWatchAction|raw$($.type|allLowercasePlural$Resource, c.ns, opts))
|
||||
$else$InvokesWatch($.NewRootWatchAction|raw$($.type|allLowercasePlural$Resource, opts))$end$
|
||||
|
@ -31,6 +31,7 @@ type genClientForType struct {
|
||||
generator.DefaultGen
|
||||
outputPackage string
|
||||
group string
|
||||
version string
|
||||
typeToMatch *types.Type
|
||||
imports namer.ImportTracker
|
||||
}
|
||||
@ -73,13 +74,19 @@ func (g *genClientForType) GenerateType(c *generator.Context, t *types.Type, w i
|
||||
"Package": namer.IC(pkg),
|
||||
"Group": namer.IC(g.group),
|
||||
"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"}),
|
||||
"PatchType": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "PatchType"}),
|
||||
"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)
|
||||
if namespaced {
|
||||
sw.Do(getterNamesapced, m)
|
||||
@ -156,11 +163,11 @@ var interfaceUpdateStatusTemplate = `
|
||||
|
||||
// template for the Interface
|
||||
var interfaceTemplate3 = `
|
||||
Delete(name string, options *$.apiDeleteOptions|raw$) error
|
||||
DeleteCollection(options *$.apiDeleteOptions|raw$, listOptions $.apiListOptions|raw$) error
|
||||
Delete(name string, options *$.DeleteOptions|raw$) error
|
||||
DeleteCollection(options *$.DeleteOptions|raw$, listOptions $.ListOptions|raw$) error
|
||||
Get(name string) (*$.type|raw$, error)
|
||||
List(opts $.apiListOptions|raw$) (*$.type|raw$List, error)
|
||||
Watch(opts $.apiListOptions|raw$) ($.watchInterface|raw$, error)
|
||||
List(opts $.ListOptions|raw$) (*$.type|raw$List, error)
|
||||
Watch(opts $.ListOptions|raw$) ($.watchInterface|raw$, error)
|
||||
Patch(name string, pt $.PatchType|raw$, data []byte, subresources ...string) (result *$.type|raw$, err error)`
|
||||
|
||||
var interfaceTemplate4 = `
|
||||
@ -206,7 +213,7 @@ func new$.type|publicPlural$(c *$.Group$Client) *$.type|privatePlural$ {
|
||||
|
||||
var listTemplate = `
|
||||
// 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{}
|
||||
err = c.client.Get().
|
||||
$if .namespaced$Namespace(c.ns).$end$
|
||||
@ -233,7 +240,7 @@ func (c *$.type|privatePlural$) Get(name string) (result *$.type|raw$, err error
|
||||
|
||||
var deleteTemplate = `
|
||||
// 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().
|
||||
$if .namespaced$Namespace(c.ns).$end$
|
||||
Resource("$.type|allLowercasePlural$").
|
||||
@ -246,7 +253,7 @@ func (c *$.type|privatePlural$) Delete(name string, options *$.apiDeleteOptions|
|
||||
|
||||
var deleteCollectionTemplate = `
|
||||
// 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().
|
||||
$if .namespaced$Namespace(c.ns).$end$
|
||||
Resource("$.type|allLowercasePlural$").
|
||||
@ -303,7 +310,7 @@ func (c *$.type|privatePlural$) UpdateStatus($.type|private$ *$.type|raw$) (resu
|
||||
|
||||
var watchTemplate = `
|
||||
// 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().
|
||||
Prefix("watch").
|
||||
$if .namespaced$Namespace(c.ns).$end$
|
||||
|
@ -95,7 +95,7 @@ func (c *FakeTestTypes) List(opts api.ListOptions) (result *testgroup_k8s_io.Tes
|
||||
return nil, err
|
||||
}
|
||||
|
||||
label := opts.LabelSelector
|
||||
label, _, _ := core.ExtractFromListOptions(opts)
|
||||
if label == nil {
|
||||
label = labels.Everything()
|
||||
}
|
||||
|
@ -24,7 +24,9 @@ import (
|
||||
federation_v1beta1 "k8s.io/kubernetes/federation/apis/federation/v1beta1"
|
||||
cluster_cache "k8s.io/kubernetes/federation/client/cache"
|
||||
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/v1"
|
||||
"k8s.io/kubernetes/pkg/client/cache"
|
||||
"k8s.io/kubernetes/pkg/controller"
|
||||
"k8s.io/kubernetes/pkg/runtime"
|
||||
@ -65,10 +67,12 @@ func NewclusterController(federationClient federationclientset.Interface, cluste
|
||||
cc.clusterStore.Store, cc.clusterController = cache.NewInformer(
|
||||
&cache.ListWatch{
|
||||
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) {
|
||||
return cc.federationClient.Federation().Clusters().Watch(options)
|
||||
versionedOptions := util.VersionizeV1ListOptions(options)
|
||||
return cc.federationClient.Federation().Clusters().Watch(versionedOptions)
|
||||
},
|
||||
},
|
||||
&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
|
||||
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 {
|
||||
return err
|
||||
}
|
||||
|
@ -127,10 +127,12 @@ func NewIngressController(client federationclientset.Interface) *IngressControll
|
||||
ic.ingressInformerStore, ic.ingressInformerController = cache.NewInformer(
|
||||
&cache.ListWatch{
|
||||
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) {
|
||||
return client.Extensions().Ingresses(api.NamespaceAll).Watch(options)
|
||||
versionedOptions := util.VersionizeV1ListOptions(options)
|
||||
return client.Extensions().Ingresses(api.NamespaceAll).Watch(versionedOptions)
|
||||
},
|
||||
},
|
||||
&extensions_v1beta1.Ingress{},
|
||||
@ -148,10 +150,12 @@ func NewIngressController(client federationclientset.Interface) *IngressControll
|
||||
return cache.NewInformer(
|
||||
&cache.ListWatch{
|
||||
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) {
|
||||
return targetClient.Extensions().Ingresses(api.NamespaceAll).Watch(options)
|
||||
versionedOptions := util.VersionizeV1ListOptions(options)
|
||||
return targetClient.Extensions().Ingresses(api.NamespaceAll).Watch(versionedOptions)
|
||||
},
|
||||
},
|
||||
&extensions_v1beta1.Ingress{},
|
||||
@ -184,13 +188,15 @@ func NewIngressController(client federationclientset.Interface) *IngressControll
|
||||
if targetClient == 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) {
|
||||
if targetClient == 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{},
|
||||
@ -238,7 +244,7 @@ func NewIngressController(client federationclientset.Interface) *IngressControll
|
||||
func(client kubeclientset.Interface, obj pkg_runtime.Object) error {
|
||||
ingress := obj.(*extensions_v1beta1.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
|
||||
})
|
||||
|
||||
@ -267,7 +273,7 @@ func NewIngressController(client federationclientset.Interface) *IngressControll
|
||||
configMap := obj.(*v1.ConfigMap)
|
||||
configMapName := types.NamespacedName{Name: configMap.Name, Namespace: configMap.Namespace}
|
||||
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 ic
|
||||
|
@ -102,10 +102,12 @@ func NewNamespaceController(client federationclientset.Interface) *NamespaceCont
|
||||
nc.namespaceInformerStore, nc.namespaceInformerController = cache.NewInformer(
|
||||
&cache.ListWatch{
|
||||
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) {
|
||||
return client.Core().Namespaces().Watch(options)
|
||||
versionedOptions := util.VersionizeV1ListOptions(options)
|
||||
return client.Core().Namespaces().Watch(versionedOptions)
|
||||
},
|
||||
},
|
||||
&api_v1.Namespace{},
|
||||
@ -119,10 +121,12 @@ func NewNamespaceController(client federationclientset.Interface) *NamespaceCont
|
||||
return cache.NewInformer(
|
||||
&cache.ListWatch{
|
||||
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) {
|
||||
return targetClient.Core().Namespaces().Watch(options)
|
||||
versionedOptions := util.VersionizeV1ListOptions(options)
|
||||
return targetClient.Core().Namespaces().Watch(versionedOptions)
|
||||
},
|
||||
},
|
||||
&api_v1.Namespace{},
|
||||
@ -156,7 +160,7 @@ func NewNamespaceController(client federationclientset.Interface) *NamespaceCont
|
||||
},
|
||||
func(client kubeclientset.Interface, obj pkg_runtime.Object) error {
|
||||
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 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.
|
||||
// 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.
|
||||
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 {
|
||||
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 {
|
||||
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 {
|
||||
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 {
|
||||
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 {
|
||||
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 ???
|
||||
err = nc.federatedApiClient.Core().Namespaces().Delete(updatedNamespace.Name, &api.DeleteOptions{})
|
||||
err = nc.federatedApiClient.Core().Namespaces().Delete(updatedNamespace.Name, &api_v1.DeleteOptions{})
|
||||
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.
|
||||
// This is expected when we are processing an update as a result of namespace finalizer deletion.
|
||||
|
@ -121,10 +121,12 @@ func NewReplicaSetController(federationClient fedclientset.Interface) *ReplicaSe
|
||||
return cache.NewInformer(
|
||||
&cache.ListWatch{
|
||||
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) {
|
||||
return clientset.Extensions().ReplicaSets(apiv1.NamespaceAll).Watch(options)
|
||||
versionedOptions := fedutil.VersionizeV1ListOptions(options)
|
||||
return clientset.Extensions().ReplicaSets(apiv1.NamespaceAll).Watch(versionedOptions)
|
||||
},
|
||||
},
|
||||
&extensionsv1.ReplicaSet{},
|
||||
@ -148,10 +150,12 @@ func NewReplicaSetController(federationClient fedclientset.Interface) *ReplicaSe
|
||||
return cache.NewInformer(
|
||||
&cache.ListWatch{
|
||||
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) {
|
||||
return clientset.Core().Pods(apiv1.NamespaceAll).Watch(options)
|
||||
versionedOptions := fedutil.VersionizeV1ListOptions(options)
|
||||
return clientset.Core().Pods(apiv1.NamespaceAll).Watch(versionedOptions)
|
||||
},
|
||||
},
|
||||
&apiv1.Pod{},
|
||||
@ -168,10 +172,12 @@ func NewReplicaSetController(federationClient fedclientset.Interface) *ReplicaSe
|
||||
frsc.replicaSetStore.Store, frsc.replicaSetController = cache.NewInformer(
|
||||
&cache.ListWatch{
|
||||
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) {
|
||||
return frsc.fedClient.Extensions().ReplicaSets(apiv1.NamespaceAll).Watch(options)
|
||||
versionedOptions := fedutil.VersionizeV1ListOptions(options)
|
||||
return frsc.fedClient.Extensions().ReplicaSets(apiv1.NamespaceAll).Watch(versionedOptions)
|
||||
},
|
||||
},
|
||||
&extensionsv1.ReplicaSet{},
|
||||
@ -194,7 +200,7 @@ func NewReplicaSetController(federationClient fedclientset.Interface) *ReplicaSe
|
||||
},
|
||||
func(client kubeclientset.Interface, obj runtime.Object) error {
|
||||
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
|
||||
})
|
||||
|
||||
|
@ -99,10 +99,12 @@ func NewSecretController(client federationclientset.Interface) *SecretController
|
||||
secretcontroller.secretInformerStore, secretcontroller.secretInformerController = cache.NewInformer(
|
||||
&cache.ListWatch{
|
||||
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) {
|
||||
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{},
|
||||
@ -116,10 +118,12 @@ func NewSecretController(client federationclientset.Interface) *SecretController
|
||||
return cache.NewInformer(
|
||||
&cache.ListWatch{
|
||||
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) {
|
||||
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{},
|
||||
@ -155,7 +159,7 @@ func NewSecretController(client federationclientset.Interface) *SecretController
|
||||
},
|
||||
func(client kubeclientset.Interface, obj pkg_runtime.Object) error {
|
||||
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 secretcontroller
|
||||
|
@ -93,10 +93,12 @@ func (cc *clusterClientCache) startClusterLW(cluster *v1beta1.Cluster, clusterNa
|
||||
cachedClusterClient.endpointStore.Store, cachedClusterClient.endpointController = cache.NewInformer(
|
||||
&cache.ListWatch{
|
||||
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) {
|
||||
return clientset.Core().Endpoints(v1.NamespaceAll).Watch(options)
|
||||
versionedOptions := util.VersionizeV1ListOptions(options)
|
||||
return clientset.Core().Endpoints(v1.NamespaceAll).Watch(versionedOptions)
|
||||
},
|
||||
},
|
||||
&v1.Endpoints{},
|
||||
@ -117,10 +119,12 @@ func (cc *clusterClientCache) startClusterLW(cluster *v1beta1.Cluster, clusterNa
|
||||
cachedClusterClient.serviceStore.Indexer, cachedClusterClient.serviceController = cache.NewIndexerInformer(
|
||||
&cache.ListWatch{
|
||||
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) {
|
||||
return clientset.Core().Services(v1.NamespaceAll).Watch(options)
|
||||
versionedOptions := util.VersionizeV1ListOptions(options)
|
||||
return clientset.Core().Services(v1.NamespaceAll).Watch(versionedOptions)
|
||||
},
|
||||
},
|
||||
&v1.Service{},
|
||||
|
@ -28,6 +28,7 @@ import (
|
||||
federationcache "k8s.io/kubernetes/federation/client/cache"
|
||||
fedclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5"
|
||||
"k8s.io/kubernetes/federation/pkg/dnsprovider"
|
||||
"k8s.io/kubernetes/federation/pkg/federation-controller/util"
|
||||
"k8s.io/kubernetes/pkg/api"
|
||||
"k8s.io/kubernetes/pkg/api/errors"
|
||||
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(
|
||||
&cache.ListWatch{
|
||||
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) {
|
||||
return s.federationClient.Core().Services(v1.NamespaceAll).Watch(options)
|
||||
versionedOptions := util.VersionizeV1ListOptions(options)
|
||||
return s.federationClient.Core().Services(v1.NamespaceAll).Watch(versionedOptions)
|
||||
},
|
||||
},
|
||||
&v1.Service{},
|
||||
@ -182,10 +185,12 @@ func New(federationClient fedclientset.Interface, dns dnsprovider.Interface, fed
|
||||
s.clusterStore.Store, s.clusterController = cache.NewInformer(
|
||||
&cache.ListWatch{
|
||||
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) {
|
||||
return s.federationClient.Federation().Clusters().Watch(options)
|
||||
versionedOptions := util.VersionizeV1ListOptions(options)
|
||||
return s.federationClient.Federation().Clusters().Watch(versionedOptions)
|
||||
},
|
||||
},
|
||||
&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)
|
||||
var err error
|
||||
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) {
|
||||
glog.V(4).Infof("Service %s/%s deleted from cluster %s", service.Namespace, service.Name, clusterName)
|
||||
delete(cachedService.endpointMap, clusterName)
|
||||
|
@ -156,10 +156,12 @@ func NewFederatedInformer(
|
||||
federatedInformer.clusterInformer.store, federatedInformer.clusterInformer.controller = cache.NewInformer(
|
||||
&cache.ListWatch{
|
||||
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) {
|
||||
return federationClient.Federation().Clusters().Watch(options)
|
||||
versionedOptions := VersionizeV1ListOptions(options)
|
||||
return federationClient.Federation().Clusters().Watch(versionedOptions)
|
||||
},
|
||||
},
|
||||
&federation_api.Cluster{},
|
||||
|
@ -82,10 +82,12 @@ func TestFederatedInformer(t *testing.T) {
|
||||
return cache.NewInformer(
|
||||
&cache.ListWatch{
|
||||
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) {
|
||||
return clientset.Core().Services(api_v1.NamespaceAll).Watch(options)
|
||||
versionedOptions := VersionizeV1ListOptions(options)
|
||||
return clientset.Core().Services(api_v1.NamespaceAll).Watch(versionedOptions)
|
||||
},
|
||||
},
|
||||
&api_v1.Service{},
|
||||
|
@ -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
33
pkg/api/v1/helpers.go
Normal 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}
|
||||
}
|
@ -54,7 +54,7 @@ func addKnownTypes(scheme *runtime.Scheme) error {
|
||||
&ThirdPartyResourceDataList{},
|
||||
&Ingress{},
|
||||
&IngressList{},
|
||||
&ListOptions{},
|
||||
&v1.ListOptions{},
|
||||
&v1.DeleteOptions{},
|
||||
&ReplicaSet{},
|
||||
&ReplicaSetList{},
|
||||
|
@ -787,26 +787,6 @@ type ExportOptions struct {
|
||||
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
|
||||
// matchExpressions are ANDed. An empty label selector matches all objects. A null
|
||||
// label selector matches no objects.
|
||||
|
@ -116,7 +116,7 @@ func (e *events) Search(objOrRef runtime.Object) (*v1.EventList, error) {
|
||||
refUID = &stringRefUID
|
||||
}
|
||||
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.
|
||||
|
@ -17,11 +17,13 @@ limitations under the License.
|
||||
package core
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"path"
|
||||
"strings"
|
||||
|
||||
"k8s.io/kubernetes/pkg/api"
|
||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||
"k8s.io/kubernetes/pkg/api/v1"
|
||||
"k8s.io/kubernetes/pkg/fields"
|
||||
"k8s.io/kubernetes/pkg/labels"
|
||||
"k8s.io/kubernetes/pkg/runtime"
|
||||
@ -46,36 +48,22 @@ func NewGetAction(resource unversioned.GroupVersionResource, namespace, name str
|
||||
return action
|
||||
}
|
||||
|
||||
func NewRootListAction(resource unversioned.GroupVersionResource, opts api.ListOptions) ListActionImpl {
|
||||
func NewRootListAction(resource unversioned.GroupVersionResource, opts interface{}) ListActionImpl {
|
||||
action := ListActionImpl{}
|
||||
action.Verb = "list"
|
||||
action.Resource = resource
|
||||
labelSelector := opts.LabelSelector
|
||||
if labelSelector == nil {
|
||||
labelSelector = labels.Everything()
|
||||
}
|
||||
fieldSelector := opts.FieldSelector
|
||||
if fieldSelector == nil {
|
||||
fieldSelector = fields.Everything()
|
||||
}
|
||||
labelSelector, fieldSelector, _ := ExtractFromListOptions(opts)
|
||||
action.ListRestrictions = ListRestrictions{labelSelector, fieldSelector}
|
||||
|
||||
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.Verb = "list"
|
||||
action.Resource = resource
|
||||
action.Namespace = namespace
|
||||
labelSelector := opts.LabelSelector
|
||||
if labelSelector == nil {
|
||||
labelSelector = labels.Everything()
|
||||
}
|
||||
fieldSelector := opts.FieldSelector
|
||||
if fieldSelector == nil {
|
||||
fieldSelector = fields.Everything()
|
||||
}
|
||||
labelSelector, fieldSelector, _ := ExtractFromListOptions(opts)
|
||||
action.ListRestrictions = ListRestrictions{labelSelector, fieldSelector}
|
||||
|
||||
return action
|
||||
@ -202,72 +190,73 @@ func NewDeleteAction(resource unversioned.GroupVersionResource, namespace, name
|
||||
return action
|
||||
}
|
||||
|
||||
func NewRootDeleteCollectionAction(resource unversioned.GroupVersionResource, opts api.ListOptions) DeleteCollectionActionImpl {
|
||||
func NewRootDeleteCollectionAction(resource unversioned.GroupVersionResource, opts interface{}) DeleteCollectionActionImpl {
|
||||
action := DeleteCollectionActionImpl{}
|
||||
action.Verb = "delete-collection"
|
||||
action.Resource = resource
|
||||
labelSelector := opts.LabelSelector
|
||||
if labelSelector == nil {
|
||||
labelSelector = labels.Everything()
|
||||
}
|
||||
fieldSelector := opts.FieldSelector
|
||||
if fieldSelector == nil {
|
||||
fieldSelector = fields.Everything()
|
||||
}
|
||||
labelSelector, fieldSelector, _ := ExtractFromListOptions(opts)
|
||||
action.ListRestrictions = ListRestrictions{labelSelector, fieldSelector}
|
||||
|
||||
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.Verb = "delete-collection"
|
||||
action.Resource = resource
|
||||
action.Namespace = namespace
|
||||
labelSelector := opts.LabelSelector
|
||||
if labelSelector == nil {
|
||||
labelSelector = labels.Everything()
|
||||
}
|
||||
fieldSelector := opts.FieldSelector
|
||||
if fieldSelector == nil {
|
||||
fieldSelector = fields.Everything()
|
||||
}
|
||||
labelSelector, fieldSelector, _ := ExtractFromListOptions(opts)
|
||||
action.ListRestrictions = ListRestrictions{labelSelector, fieldSelector}
|
||||
|
||||
return action
|
||||
}
|
||||
|
||||
func NewRootWatchAction(resource unversioned.GroupVersionResource, opts api.ListOptions) WatchActionImpl {
|
||||
func NewRootWatchAction(resource unversioned.GroupVersionResource, opts interface{}) WatchActionImpl {
|
||||
action := WatchActionImpl{}
|
||||
action.Verb = "watch"
|
||||
action.Resource = resource
|
||||
labelSelector := opts.LabelSelector
|
||||
if labelSelector == nil {
|
||||
labelSelector = labels.Everything()
|
||||
}
|
||||
fieldSelector := opts.FieldSelector
|
||||
if fieldSelector == nil {
|
||||
fieldSelector = fields.Everything()
|
||||
}
|
||||
action.WatchRestrictions = WatchRestrictions{labelSelector, fieldSelector, opts.ResourceVersion}
|
||||
labelSelector, fieldSelector, resourceVersion := ExtractFromListOptions(opts)
|
||||
action.WatchRestrictions = WatchRestrictions{labelSelector, fieldSelector, resourceVersion}
|
||||
|
||||
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.Verb = "watch"
|
||||
action.Resource = resource
|
||||
action.Namespace = namespace
|
||||
labelSelector := opts.LabelSelector
|
||||
if labelSelector == nil {
|
||||
labelSelector = labels.Everything()
|
||||
}
|
||||
fieldSelector := opts.FieldSelector
|
||||
if fieldSelector == nil {
|
||||
fieldSelector = fields.Everything()
|
||||
}
|
||||
action.WatchRestrictions = WatchRestrictions{labelSelector, fieldSelector, opts.ResourceVersion}
|
||||
labelSelector, fieldSelector, resourceVersion := ExtractFromListOptions(opts)
|
||||
action.WatchRestrictions = WatchRestrictions{labelSelector, fieldSelector, resourceVersion}
|
||||
|
||||
return action
|
||||
}
|
||||
|
@ -24,12 +24,11 @@ import (
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_4"
|
||||
"k8s.io/kubernetes/pkg/api"
|
||||
fedclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5"
|
||||
"k8s.io/kubernetes/pkg/api/errors"
|
||||
"k8s.io/kubernetes/pkg/api/v1"
|
||||
"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/wait"
|
||||
"k8s.io/kubernetes/test/e2e/framework"
|
||||
@ -55,10 +54,10 @@ var _ = framework.KubeDescribe("Federated ingresses [Feature:Federation]", func(
|
||||
AfterEach(func() {
|
||||
nsName := f.FederationNamespace.Name
|
||||
// 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())
|
||||
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())
|
||||
}
|
||||
})
|
||||
@ -67,10 +66,10 @@ var _ = framework.KubeDescribe("Federated ingresses [Feature:Federation]", func(
|
||||
framework.SkipUnlessFederated(f.Client)
|
||||
|
||||
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))
|
||||
// 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)
|
||||
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 == "" {
|
||||
federationName = DefaultFederationName
|
||||
}
|
||||
jig = newFederationTestJig(f.FederationClientset_1_4)
|
||||
jig = newFederationTestJig(f.FederationClientset_1_5)
|
||||
clusters = map[string]*cluster{}
|
||||
primaryClusterName = registerClusters(clusters, UserAgentName, federationName, f)
|
||||
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() {
|
||||
ingress := createIngressOrFail(f.FederationClientset_1_4, ns)
|
||||
ingress := createIngressOrFail(f.FederationClientset_1_5, ns)
|
||||
defer func() { // Cleanup
|
||||
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)
|
||||
}()
|
||||
// wait for ingress shards being created
|
||||
waitForIngressShardsOrFail(ns, ingress, clusters)
|
||||
ingress = updateIngressOrFail(f.FederationClientset_1_4, ns)
|
||||
ingress = updateIngressOrFail(f.FederationClientset_1_5, ns)
|
||||
waitForIngressShardsUpdatedOrFail(ns, ingress, clusters)
|
||||
})
|
||||
|
||||
@ -124,9 +123,9 @@ var _ = framework.KubeDescribe("Federated ingresses [Feature:Federation]", func(
|
||||
// create backend pod
|
||||
createBackendPodsOrFail(clusters, ns, FederatedIngressServicePodName)
|
||||
// create backend service
|
||||
service = createServiceOrFail(f.FederationClientset_1_4, ns, FederatedIngressServiceName)
|
||||
service = createServiceOrFail(f.FederationClientset_1_5, ns, FederatedIngressServiceName)
|
||||
// create ingress object
|
||||
jig.ing = createIngressOrFail(f.FederationClientset_1_4, ns)
|
||||
jig.ing = createIngressOrFail(f.FederationClientset_1_5, ns)
|
||||
// wait for services objects sync
|
||||
waitForServiceShardsOrFail(ns, service, clusters)
|
||||
// wait for ingress objects sync
|
||||
@ -136,14 +135,14 @@ var _ = framework.KubeDescribe("Federated ingresses [Feature:Federation]", func(
|
||||
AfterEach(func() {
|
||||
deleteBackendPodsOrFail(clusters, ns)
|
||||
if service != nil {
|
||||
deleteServiceOrFail(f.FederationClientset_1_4, ns, service.Name)
|
||||
deleteServiceOrFail(f.FederationClientset_1_5, ns, service.Name)
|
||||
cleanupServiceShardsAndProviderResources(ns, service, clusters)
|
||||
service = nil
|
||||
} else {
|
||||
By("No service to delete. Service is 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
|
||||
} else {
|
||||
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.
|
||||
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))
|
||||
var clusterIngress *v1beta1.Ingress
|
||||
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.
|
||||
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))
|
||||
err := wait.PollImmediate(framework.Poll, timeout, func() (bool, error) {
|
||||
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 {
|
||||
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)
|
||||
}
|
||||
|
||||
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 {
|
||||
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
|
||||
}
|
||||
|
||||
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
|
||||
if clientset == nil || len(namespace) == 0 {
|
||||
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
|
||||
address string
|
||||
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{}}
|
||||
}
|
||||
|
||||
// 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
|
||||
err := wait.PollImmediate(10*time.Second, timeout, func() (bool, error) {
|
||||
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.
|
||||
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 := c.Extensions().Ingresses(ns).Get(ingName)
|
||||
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.
|
||||
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)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@ -58,8 +58,8 @@ var _ = framework.KubeDescribe("Federation namespace [Feature:Federation]", func
|
||||
AfterEach(func() {
|
||||
framework.SkipUnlessFederated(f.Client)
|
||||
deleteAllTestNamespaces(
|
||||
f.FederationClientset_1_4.Core().Namespaces().List,
|
||||
f.FederationClientset_1_4.Core().Namespaces().Delete)
|
||||
f.FederationClientset_1_5.Core().Namespaces().List,
|
||||
f.FederationClientset_1_5.Core().Namespaces().Delete)
|
||||
for _, cluster := range clusters {
|
||||
deleteAllTestNamespaces(
|
||||
cluster.Core().Namespaces().List,
|
||||
@ -77,7 +77,7 @@ var _ = framework.KubeDescribe("Federation namespace [Feature:Federation]", func
|
||||
},
|
||||
}
|
||||
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)
|
||||
|
||||
// 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")
|
||||
|
||||
deleteAllTestNamespaces(
|
||||
f.FederationClientset_1_4.Core().Namespaces().List,
|
||||
f.FederationClientset_1_4.Core().Namespaces().Delete)
|
||||
f.FederationClientset_1_5.Core().Namespaces().List,
|
||||
f.FederationClientset_1_5.Core().Namespaces().Delete)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
func deleteAllTestNamespaces(lister func(api.ListOptions) (*api_v1.NamespaceList, error), deleter func(string, *api.DeleteOptions) error) {
|
||||
list, err := lister(api.ListOptions{})
|
||||
func deleteAllTestNamespaces(lister func(api_v1.ListOptions) (*api_v1.NamespaceList, error), deleter func(string, *api_v1.DeleteOptions) error) {
|
||||
list, err := lister(api_v1.ListOptions{})
|
||||
if err != nil {
|
||||
framework.Failf("Failed to get all namespaes: %v", err)
|
||||
return
|
||||
}
|
||||
for _, namespace := range list.Items {
|
||||
if strings.HasPrefix(namespace.Name, namespacePrefix) {
|
||||
err := deleter(namespace.Name, &api.DeleteOptions{})
|
||||
err := deleter(namespace.Name, &api_v1.DeleteOptions{})
|
||||
if err != nil {
|
||||
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)
|
||||
}
|
||||
|
||||
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) {
|
||||
list, err := lister(api.ListOptions{})
|
||||
list, err := lister(api_v1.ListOptions{})
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
|
@ -22,12 +22,11 @@ import (
|
||||
|
||||
. "github.com/onsi/ginkgo"
|
||||
. "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/pkg/api"
|
||||
"k8s.io/kubernetes/pkg/api/errors"
|
||||
"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/test/e2e/framework"
|
||||
)
|
||||
@ -60,22 +59,21 @@ var _ = framework.KubeDescribe("Federation secrets [Feature:Federation12]", func
|
||||
It("should be created and deleted successfully", func() {
|
||||
framework.SkipUnlessFederated(f.Client)
|
||||
nsName := f.FederationNamespace.Name
|
||||
secret := createSecretOrFail(f.FederationClientset_1_4, nsName)
|
||||
|
||||
secret := createSecretOrFail(f.FederationClientset_1_5, nsName)
|
||||
defer func() { // Cleanup
|
||||
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)
|
||||
}()
|
||||
// wait for secret shards being created
|
||||
waitForSecretShardsOrFail(nsName, secret, clusters)
|
||||
secret = updateSecretOrFail(f.FederationClientset_1_4, nsName)
|
||||
secret = updateSecretOrFail(f.FederationClientset_1_5, nsName)
|
||||
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 {
|
||||
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
|
||||
}
|
||||
|
||||
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 {
|
||||
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))
|
||||
var clusterSecret *v1.Secret
|
||||
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))
|
||||
err := wait.PollImmediate(framework.Poll, timeout, func() (bool, error) {
|
||||
clusterSecret, err := clientset.Core().Secrets(namespace).Get(secret.Name)
|
||||
|
@ -23,7 +23,6 @@ import (
|
||||
"strconv"
|
||||
"time"
|
||||
|
||||
"k8s.io/kubernetes/pkg/api"
|
||||
"k8s.io/kubernetes/pkg/api/v1"
|
||||
"k8s.io/kubernetes/test/e2e/framework"
|
||||
|
||||
@ -90,11 +89,11 @@ var _ = framework.KubeDescribe("[Feature:Federation]", func() {
|
||||
framework.SkipUnlessFederated(f.Client)
|
||||
|
||||
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))
|
||||
|
||||
// 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)
|
||||
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)
|
||||
|
||||
nsName = f.FederationNamespace.Name
|
||||
service = createServiceOrFail(f.FederationClientset_1_4, nsName, FederatedServiceName)
|
||||
service = createServiceOrFail(f.FederationClientset_1_5, nsName, FederatedServiceName)
|
||||
defer func() { // Cleanup
|
||||
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)
|
||||
}()
|
||||
waitForServiceShardsOrFail(nsName, service, clusters)
|
||||
@ -124,7 +123,7 @@ var _ = framework.KubeDescribe("[Feature:Federation]", func() {
|
||||
|
||||
nsName := f.FederationNamespace.Name
|
||||
createBackendPodsOrFail(clusters, nsName, FederatedServicePodName)
|
||||
service = createServiceOrFail(f.FederationClientset_1_4, nsName, FederatedServiceName)
|
||||
service = createServiceOrFail(f.FederationClientset_1_5, nsName, FederatedServiceName)
|
||||
waitForServiceShardsOrFail(nsName, service, clusters)
|
||||
})
|
||||
|
||||
@ -135,7 +134,7 @@ var _ = framework.KubeDescribe("[Feature:Federation]", func() {
|
||||
deleteBackendPodsOrFail(clusters, nsName)
|
||||
|
||||
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))
|
||||
cleanupServiceShardsAndProviderResources(nsName, service, clusters)
|
||||
|
@ -22,8 +22,7 @@ import (
|
||||
|
||||
. "github.com/onsi/ginkgo"
|
||||
federationapi "k8s.io/kubernetes/federation/apis/federation/v1beta1"
|
||||
"k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_4"
|
||||
"k8s.io/kubernetes/pkg/api"
|
||||
"k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5"
|
||||
"k8s.io/kubernetes/pkg/api/v1"
|
||||
"k8s.io/kubernetes/pkg/util/wait"
|
||||
"k8s.io/kubernetes/test/e2e/framework"
|
||||
@ -41,10 +40,10 @@ var _ = framework.KubeDescribe("Federation apiserver [Feature:Federation]", func
|
||||
|
||||
// Delete registered clusters.
|
||||
// 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())
|
||||
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())
|
||||
}
|
||||
})
|
||||
@ -69,14 +68,14 @@ var _ = framework.KubeDescribe("Federation apiserver [Feature:Federation]", func
|
||||
framework.Logf("Deleting %d clusters", len(contexts))
|
||||
for _, context := range contexts {
|
||||
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.Logf("Successfully deleted cluster object: %s (%s, secret: %s)", context.Name, context.Cluster.Cluster.Server, context.Name)
|
||||
}
|
||||
|
||||
// There should not be any remaining cluster.
|
||||
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())
|
||||
if len(clusterList.Items) != 0 {
|
||||
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.
|
||||
svcNamespace := "federation-admission-test-ns"
|
||||
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)
|
||||
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")
|
||||
@ -123,7 +122,7 @@ func newService(name, namespace string) *v1.Service {
|
||||
}
|
||||
|
||||
// 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) {
|
||||
c, err := clientset.Federation().Clusters().Get(clusterName)
|
||||
if err != nil {
|
||||
|
@ -19,7 +19,7 @@ package e2e
|
||||
import (
|
||||
"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/client/unversioned/clientcmd"
|
||||
clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
|
||||
@ -41,8 +41,8 @@ var _ = framework.KubeDescribe("[Feature:Federation]", func() {
|
||||
framework.SkipUnlessFederated(f.Client)
|
||||
|
||||
nsName := f.FederationNamespace.Name
|
||||
svc := createServiceOrFail(f.FederationClientset_1_4, nsName, FederatedServiceName)
|
||||
deleteServiceOrFail(f.FederationClientset_1_4, nsName, svc.Name)
|
||||
svc := createServiceOrFail(f.FederationClientset_1_5, nsName, FederatedServiceName)
|
||||
deleteServiceOrFail(f.FederationClientset_1_5, nsName, svc.Name)
|
||||
})
|
||||
|
||||
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{}
|
||||
if user != nil {
|
||||
overrides = &clientcmd.ConfigOverrides{
|
||||
@ -105,7 +105,7 @@ func invalidAuthFederationClientSet(user *framework.KubeUser) (*federation_relea
|
||||
config.Username = ""
|
||||
}
|
||||
|
||||
c, err := federation_release_1_4.NewForConfig(config)
|
||||
c, err := federation_release_1_5.NewForConfig(config)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error creating federation clientset: %v", err)
|
||||
}
|
||||
|
@ -20,8 +20,7 @@ import (
|
||||
"fmt"
|
||||
|
||||
. "github.com/onsi/ginkgo"
|
||||
"k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_4"
|
||||
"k8s.io/kubernetes/pkg/api"
|
||||
"k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5"
|
||||
"k8s.io/kubernetes/pkg/api/v1"
|
||||
"k8s.io/kubernetes/test/e2e/framework"
|
||||
|
||||
@ -42,10 +41,10 @@ var _ = framework.KubeDescribe("Federation events [Feature:Federation]", func()
|
||||
|
||||
nsName := f.FederationNamespace.Name
|
||||
// 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())
|
||||
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())
|
||||
}
|
||||
})
|
||||
@ -54,10 +53,10 @@ var _ = framework.KubeDescribe("Federation events [Feature:Federation]", func()
|
||||
framework.SkipUnlessFederated(f.Client)
|
||||
|
||||
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))
|
||||
// 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)
|
||||
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 {
|
||||
Fail(fmt.Sprintf("Internal error: invalid parameters passed to createEventOrFail: clientset: %v, namespace: %v", clientset, namespace))
|
||||
}
|
||||
|
@ -21,9 +21,8 @@ import (
|
||||
"os"
|
||||
"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"
|
||||
"k8s.io/kubernetes/pkg/api"
|
||||
"k8s.io/kubernetes/pkg/api/v1"
|
||||
"k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
|
||||
"k8s.io/kubernetes/pkg/util/wait"
|
||||
@ -51,10 +50,10 @@ var _ = framework.KubeDescribe("Federation replicasets [Feature:Federation]", fu
|
||||
|
||||
// Delete registered replicasets.
|
||||
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())
|
||||
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())
|
||||
}
|
||||
})
|
||||
@ -63,10 +62,10 @@ var _ = framework.KubeDescribe("Federation replicasets [Feature:Federation]", fu
|
||||
framework.SkipUnlessFederated(f.Client)
|
||||
|
||||
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))
|
||||
// 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)
|
||||
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() {
|
||||
nsName := f.FederationNamespace.Name
|
||||
rs := createReplicaSetOrFail(f.FederationClientset_1_4, nsName)
|
||||
rs := createReplicaSetOrFail(f.FederationClientset_1_5, nsName)
|
||||
defer func() {
|
||||
// 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))
|
||||
replicas := int32(0)
|
||||
rs.Spec.Replicas = &replicas
|
||||
f.FederationClientset_1_4.ReplicaSets(nsName).Update(rs)
|
||||
waitForReplicaSetOrFail(f.FederationClientset_1_4, nsName, rs.Name, clusters)
|
||||
f.FederationClientset_1_4.ReplicaSets(nsName).Delete(rs.Name, &api.DeleteOptions{})
|
||||
f.FederationClientset_1_5.ReplicaSets(nsName).Update(rs)
|
||||
waitForReplicaSetOrFail(f.FederationClientset_1_5, nsName, rs.Name, clusters)
|
||||
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))
|
||||
updateReplicaSetOrFail(f.FederationClientset_1_4, nsName)
|
||||
waitForReplicaSetOrFail(f.FederationClientset_1_4, nsName, rs.Name, clusters)
|
||||
updateReplicaSetOrFail(f.FederationClientset_1_5, nsName)
|
||||
waitForReplicaSetOrFail(f.FederationClientset_1_5, nsName, rs.Name, clusters)
|
||||
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)
|
||||
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) {
|
||||
frs, err := c.ReplicaSets(namespace).Get(replicaSetName)
|
||||
if err != nil {
|
||||
@ -158,7 +157,7 @@ func equivalentReplicaSet(fedReplicaSet, localReplicaSet *v1beta1.ReplicaSet) bo
|
||||
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 {
|
||||
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
|
||||
}
|
||||
|
||||
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 {
|
||||
Fail(fmt.Sprintf("Internal error: invalid parameters passed to updateReplicaSetOrFail: clientset: %v, namespace: %v", clientset, namespace))
|
||||
}
|
||||
|
@ -21,7 +21,6 @@ import (
|
||||
"time"
|
||||
|
||||
federation_api "k8s.io/kubernetes/federation/apis/federation/v1beta1"
|
||||
api "k8s.io/kubernetes/pkg/api"
|
||||
api_v1 "k8s.io/kubernetes/pkg/api/v1"
|
||||
"k8s.io/kubernetes/pkg/util/wait"
|
||||
"k8s.io/kubernetes/test/e2e/framework"
|
||||
@ -29,7 +28,7 @@ import (
|
||||
|
||||
func createClusterObjectOrFail_14(f *framework.Framework, context *framework.E2EContext) {
|
||||
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 {
|
||||
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.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.
|
||||
if err := wait.PollImmediate(5*time.Second, 5*time.Minute, func() (bool, error) {
|
||||
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 {
|
||||
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)
|
||||
}
|
||||
|
||||
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 {
|
||||
framework.Failf("Error in get clusters: %v", err)
|
||||
}
|
||||
|
@ -23,11 +23,11 @@ import (
|
||||
"k8s.io/kubernetes/pkg/util/intstr"
|
||||
|
||||
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/errors"
|
||||
"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/unversioned/clientcmd"
|
||||
clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
|
||||
@ -53,7 +53,7 @@ in the federation
|
||||
*/
|
||||
type cluster struct {
|
||||
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.
|
||||
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.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) {
|
||||
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))
|
||||
if c.ObjectMeta.Name != context.Name {
|
||||
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.Logf("Cluster %s is Ready", context.Name)
|
||||
}
|
||||
@ -101,7 +101,7 @@ func waitForAllClustersReady(f *framework.Framework, clusterCount int) *federati
|
||||
var clusterList *federationapi.ClusterList
|
||||
if err := wait.PollImmediate(framework.Poll, FederatedServiceTimeout, func() (bool, 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 {
|
||||
return false, err
|
||||
}
|
||||
@ -116,7 +116,7 @@ func waitForAllClustersReady(f *framework.Framework, clusterCount int) *federati
|
||||
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)
|
||||
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.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.
|
||||
@ -165,7 +165,7 @@ func unregisterClusters(clusters map[string]*cluster, f *framework.Framework) {
|
||||
for name, c := range clusters {
|
||||
if c.namespaceCreated {
|
||||
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.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.
|
||||
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")
|
||||
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)
|
||||
}
|
||||
}
|
||||
@ -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.
|
||||
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))
|
||||
var clusterService *v1.Service
|
||||
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 {
|
||||
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)
|
||||
}
|
||||
|
||||
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)
|
||||
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))
|
||||
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 {
|
||||
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)
|
||||
}
|
||||
|
||||
@ -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 := clientset.Services(namespace).Delete(service.Name, &api.DeleteOptions{})
|
||||
err := clientset.Services(namespace).Delete(service.Name, &v1.DeleteOptions{})
|
||||
if err != nil && !errors.IsNotFound(err) {
|
||||
// Deletion failed with an error, try again.
|
||||
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) {
|
||||
pod := c.backendPod
|
||||
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) {
|
||||
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 {
|
||||
|
@ -29,7 +29,7 @@ import (
|
||||
staging "k8s.io/client-go/1.5/kubernetes"
|
||||
"k8s.io/client-go/1.5/pkg/util/sets"
|
||||
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"
|
||||
apierrs "k8s.io/kubernetes/pkg/api/errors"
|
||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||
@ -96,7 +96,7 @@ type Framework struct {
|
||||
federated bool
|
||||
|
||||
// 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
|
||||
}
|
||||
|
||||
@ -210,14 +210,14 @@ func (f *Framework) BeforeEach() {
|
||||
}
|
||||
|
||||
if f.federated {
|
||||
if f.FederationClientset_1_4 == nil {
|
||||
if f.FederationClientset_1_5 == nil {
|
||||
By("Creating a release 1.4 federation Clientset")
|
||||
var err error
|
||||
f.FederationClientset_1_4, err = LoadFederationClientset_1_4()
|
||||
f.FederationClientset_1_5, err = LoadFederationClientset_1_5()
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
}
|
||||
By("Waiting for federation-apiserver to be ready")
|
||||
err := WaitForFederationApiserverReady(f.FederationClientset_1_4)
|
||||
err := WaitForFederationApiserverReady(f.FederationClientset_1_5)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
By("federation-apiserver is ready")
|
||||
|
||||
@ -276,9 +276,9 @@ func (f *Framework) deleteFederationNs() {
|
||||
timeout = f.NamespaceDeletionTimeout
|
||||
}
|
||||
|
||||
clientset := f.FederationClientset_1_4
|
||||
clientset := f.FederationClientset_1_5
|
||||
// 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)
|
||||
}
|
||||
// Verify that it got deleted.
|
||||
@ -353,11 +353,11 @@ func (f *Framework) AfterEach() {
|
||||
|
||||
if f.federated {
|
||||
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")
|
||||
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)
|
||||
}
|
||||
}()
|
||||
@ -371,8 +371,8 @@ func (f *Framework) AfterEach() {
|
||||
LogContainersInPodsWithLabels(f.Client, api.NamespaceSystem, ImagePullerLabels, "image-puller")
|
||||
if f.federated {
|
||||
// Dump federation events in federation namespace.
|
||||
DumpEventsInNamespace(func(opts api.ListOptions, ns string) (*v1.EventList, error) {
|
||||
return f.FederationClientset_1_4.Core().Events(ns).List(opts)
|
||||
DumpEventsInNamespace(func(opts v1.ListOptions, ns string) (*v1.EventList, error) {
|
||||
return f.FederationClientset_1_5.Core().Events(ns).List(opts)
|
||||
}, f.FederationNamespace.Name)
|
||||
// Print logs of federation control plane pods (federation-apiserver and federation-controller-manager)
|
||||
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) {
|
||||
clientset := f.FederationClientset_1_4
|
||||
clientset := f.FederationClientset_1_5
|
||||
namespaceObj := &v1.Namespace{
|
||||
ObjectMeta: v1.ObjectMeta{
|
||||
GenerateName: fmt.Sprintf("e2e-tests-%v-", baseName),
|
||||
|
@ -43,7 +43,7 @@ import (
|
||||
"time"
|
||||
|
||||
"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"
|
||||
apierrs "k8s.io/kubernetes/pkg/api/errors"
|
||||
"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.
|
||||
// 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) {
|
||||
_, err := c.Federation().Clusters().List(api.ListOptions{})
|
||||
_, err := c.Federation().Clusters().List(v1.ListOptions{})
|
||||
if err != 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{})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
c, err := federation_release_1_4.NewForConfig(config)
|
||||
c, err := federation_release_1_5.NewForConfig(config)
|
||||
if err != nil {
|
||||
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())
|
||||
}
|
||||
|
||||
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) {
|
||||
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())
|
||||
|
||||
// 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) {
|
||||
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)
|
||||
}, namespace)
|
||||
|
||||
|
@ -20,7 +20,6 @@ import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"k8s.io/kubernetes/pkg/api"
|
||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||
"k8s.io/kubernetes/pkg/api/v1"
|
||||
clientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
|
||||
@ -31,14 +30,14 @@ import (
|
||||
. "github.com/onsi/ginkgo"
|
||||
)
|
||||
|
||||
func getOrphanOptions() *api.DeleteOptions {
|
||||
func getOrphanOptions() *v1.DeleteOptions {
|
||||
var trueVar = true
|
||||
return &api.DeleteOptions{OrphanDependents: &trueVar}
|
||||
return &v1.DeleteOptions{OrphanDependents: &trueVar}
|
||||
}
|
||||
|
||||
func getNonOrphanOptions() *api.DeleteOptions {
|
||||
func getNonOrphanOptions() *v1.DeleteOptions {
|
||||
var falseVar = false
|
||||
return &api.DeleteOptions{OrphanDependents: &falseVar}
|
||||
return &v1.DeleteOptions{OrphanDependents: &falseVar}
|
||||
}
|
||||
|
||||
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.
|
||||
func verifyRemainingObjects(f *framework.Framework, clientSet clientset.Interface, rcNum, podNum int) (bool, error) {
|
||||
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 {
|
||||
return false, fmt.Errorf("Failed to list pods: %v", err)
|
||||
}
|
||||
@ -87,7 +86,7 @@ func verifyRemainingObjects(f *framework.Framework, clientSet clientset.Interfac
|
||||
ret = false
|
||||
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 {
|
||||
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
|
||||
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 {
|
||||
return false, fmt.Errorf("Failed to list pods: %v", err)
|
||||
}
|
||||
@ -148,7 +147,7 @@ var _ = framework.KubeDescribe("Garbage collector", func() {
|
||||
}
|
||||
By("delete the rc")
|
||||
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 {
|
||||
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)
|
||||
}); err != nil {
|
||||
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 {
|
||||
framework.Failf("failed to list pods post mortem: %v", err)
|
||||
} else {
|
||||
@ -197,13 +196,13 @@ var _ = framework.KubeDescribe("Garbage collector", func() {
|
||||
}
|
||||
By("delete the rc")
|
||||
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 {
|
||||
framework.Failf("failed to delete the rc: %v", err)
|
||||
}
|
||||
By("wait for the rc to be deleted")
|
||||
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 {
|
||||
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")
|
||||
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 {
|
||||
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)
|
||||
}
|
||||
By("delete the rc")
|
||||
deleteOptions := &api.DeleteOptions{}
|
||||
deleteOptions.Preconditions = api.NewUIDPreconditions(string(rc.UID))
|
||||
deleteOptions := &v1.DeleteOptions{}
|
||||
deleteOptions.Preconditions = v1.NewUIDPreconditions(string(rc.UID))
|
||||
if err := rcClient.Delete(rc.ObjectMeta.Name, deleteOptions); err != nil {
|
||||
framework.Failf("failed to delete the rc: %v", err)
|
||||
}
|
||||
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) {
|
||||
pods, err := podClient.List(api.ListOptions{})
|
||||
pods, err := podClient.List(v1.ListOptions{})
|
||||
if err != nil {
|
||||
return false, fmt.Errorf("Failed to list pods: %v", err)
|
||||
}
|
||||
|
@ -22,7 +22,6 @@ import (
|
||||
|
||||
clientapi "k8s.io/client-go/1.5/pkg/api"
|
||||
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/labels"
|
||||
"k8s.io/kubernetes/pkg/runtime"
|
||||
@ -129,14 +128,14 @@ var _ = framework.KubeDescribe("Generated release_1_5 clientset", func() {
|
||||
podCopy := testingPod(name, value)
|
||||
pod := &podCopy
|
||||
By("setting up watch")
|
||||
selector := labels.SelectorFromSet(labels.Set(map[string]string{"time": value}))
|
||||
options := api.ListOptions{LabelSelector: selector}
|
||||
selector := labels.SelectorFromSet(labels.Set(map[string]string{"time": value})).String()
|
||||
options := v1.ListOptions{LabelSelector: selector}
|
||||
pods, err := podClient.List(options)
|
||||
if err != nil {
|
||||
framework.Failf("Failed to query for pods: %v", err)
|
||||
}
|
||||
Expect(len(pods.Items)).To(Equal(0))
|
||||
options = api.ListOptions{
|
||||
options = v1.ListOptions{
|
||||
LabelSelector: selector,
|
||||
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
|
||||
// the test so we can ensure that we clean up after
|
||||
// ourselves
|
||||
defer podClient.Delete(pod.Name, api.NewDeleteOptions(0))
|
||||
defer podClient.Delete(pod.Name, v1.NewDeleteOptions(0))
|
||||
|
||||
By("verifying the pod is in kubernetes")
|
||||
options = api.ListOptions{
|
||||
options = v1.ListOptions{
|
||||
LabelSelector: selector,
|
||||
ResourceVersion: pod.ResourceVersion,
|
||||
}
|
||||
@ -174,7 +173,7 @@ var _ = framework.KubeDescribe("Generated release_1_5 clientset", func() {
|
||||
framework.ExpectNoError(f.WaitForPodRunning(pod.Name))
|
||||
|
||||
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)
|
||||
}
|
||||
|
||||
@ -184,7 +183,7 @@ var _ = framework.KubeDescribe("Generated release_1_5 clientset", func() {
|
||||
Expect(lastPod.DeletionTimestamp).ToNot(BeNil())
|
||||
Expect(lastPod.Spec.TerminationGracePeriodSeconds).ToNot(BeZero())
|
||||
|
||||
options = api.ListOptions{LabelSelector: selector}
|
||||
options = v1.ListOptions{LabelSelector: selector}
|
||||
pods, err = podClient.List(options)
|
||||
if err != nil {
|
||||
framework.Failf("Failed to list pods to verify deletion: %v", err)
|
||||
|
@ -45,14 +45,14 @@ import (
|
||||
"k8s.io/kubernetes/test/integration/framework"
|
||||
)
|
||||
|
||||
func getOrphanOptions() *api.DeleteOptions {
|
||||
func getOrphanOptions() *v1.DeleteOptions {
|
||||
var trueVar = true
|
||||
return &api.DeleteOptions{OrphanDependents: &trueVar}
|
||||
return &v1.DeleteOptions{OrphanDependents: &trueVar}
|
||||
}
|
||||
|
||||
func getNonOrphanOptions() *api.DeleteOptions {
|
||||
func getNonOrphanOptions() *v1.DeleteOptions {
|
||||
var falseVar = false
|
||||
return &api.DeleteOptions{OrphanDependents: &falseVar}
|
||||
return &v1.DeleteOptions{OrphanDependents: &falseVar}
|
||||
}
|
||||
|
||||
const garbageCollectedPodName = "test.pod.1"
|
||||
@ -166,7 +166,7 @@ func TestCascadingDeletion(t *testing.T) {
|
||||
t.Fatalf("Failed to create replication controller: %v", err)
|
||||
}
|
||||
|
||||
rcs, err := rcClient.List(api.ListOptions{})
|
||||
rcs, err := rcClient.List(v1.ListOptions{})
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to list replication controllers: %v", err)
|
||||
}
|
||||
@ -199,7 +199,7 @@ func TestCascadingDeletion(t *testing.T) {
|
||||
}
|
||||
|
||||
// set up watch
|
||||
pods, err := podClient.List(api.ListOptions{})
|
||||
pods, err := podClient.List(v1.ListOptions{})
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to list pods: %v", err)
|
||||
}
|
||||
@ -251,7 +251,7 @@ func TestCreateWithNonExistentOwner(t *testing.T) {
|
||||
}
|
||||
|
||||
// set up watch
|
||||
pods, err := podClient.List(api.ListOptions{})
|
||||
pods, err := podClient.List(v1.ListOptions{})
|
||||
if err != nil {
|
||||
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()
|
||||
rcClient := clientSet.Core().ReplicationControllers(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) {
|
||||
rcClient := clientSet.Core().ReplicationControllers(namespace)
|
||||
podClient := clientSet.Core().Pods(namespace)
|
||||
pods, err := podClient.List(api.ListOptions{})
|
||||
pods, err := podClient.List(v1.ListOptions{})
|
||||
if err != nil {
|
||||
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
|
||||
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 {
|
||||
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.
|
||||
podClient := clientSet.Core().Pods(ns.Name)
|
||||
pods, err := podClient.List(api.ListOptions{})
|
||||
pods, err := podClient.List(v1.ListOptions{})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
@ -448,7 +448,7 @@ func TestOrphaning(t *testing.T) {
|
||||
}
|
||||
// verify the toBeDeleteRC is deleted
|
||||
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 {
|
||||
return false, err
|
||||
}
|
||||
@ -462,7 +462,7 @@ func TestOrphaning(t *testing.T) {
|
||||
}
|
||||
|
||||
// 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 {
|
||||
t.Fatalf("Failed to list pods: %v", err)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user