mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-02 08:17:26 +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,
|
outputPackage: outputPackagePath,
|
||||||
group: normalization.BeforeFirstDot(gv.Group),
|
group: normalization.BeforeFirstDot(gv.Group),
|
||||||
|
version: gv.Version,
|
||||||
typeToMatch: t,
|
typeToMatch: t,
|
||||||
imports: generator.NewImportTracker(),
|
imports: generator.NewImportTracker(),
|
||||||
})
|
})
|
||||||
|
@ -110,8 +110,6 @@ func (g *genFakeForType) GenerateType(c *generator.Context, t *types.Type, w io.
|
|||||||
"groupName": groupName,
|
"groupName": groupName,
|
||||||
"version": canonicalVersion,
|
"version": canonicalVersion,
|
||||||
"watchInterface": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/watch", Name: "Interface"}),
|
"watchInterface": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/watch", Name: "Interface"}),
|
||||||
"apiDeleteOptions": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "DeleteOptions"}),
|
|
||||||
"apiListOptions": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "ListOptions"}),
|
|
||||||
"GroupVersionResource": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api/unversioned", Name: "GroupVersionResource"}),
|
"GroupVersionResource": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api/unversioned", Name: "GroupVersionResource"}),
|
||||||
"PatchType": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "PatchType"}),
|
"PatchType": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "PatchType"}),
|
||||||
"Everything": c.Universe.Function(types.Name{Package: "k8s.io/kubernetes/pkg/labels", Name: "Everything"}),
|
"Everything": c.Universe.Function(types.Name{Package: "k8s.io/kubernetes/pkg/labels", Name: "Everything"}),
|
||||||
@ -136,6 +134,15 @@ func (g *genFakeForType) GenerateType(c *generator.Context, t *types.Type, w io.
|
|||||||
"NewPatchAction": c.Universe.Function(types.Name{Package: pkgTestingCore, Name: "NewPatchAction"}),
|
"NewPatchAction": c.Universe.Function(types.Name{Package: pkgTestingCore, Name: "NewPatchAction"}),
|
||||||
"NewRootPatchSubresourceAction": c.Universe.Function(types.Name{Package: pkgTestingCore, Name: "NewRootPatchSubresourceAction"}),
|
"NewRootPatchSubresourceAction": c.Universe.Function(types.Name{Package: pkgTestingCore, Name: "NewRootPatchSubresourceAction"}),
|
||||||
"NewPatchSubresourceAction": c.Universe.Function(types.Name{Package: pkgTestingCore, Name: "NewPatchSubresourceAction"}),
|
"NewPatchSubresourceAction": c.Universe.Function(types.Name{Package: pkgTestingCore, Name: "NewPatchSubresourceAction"}),
|
||||||
|
"ExtractFromListOptions": c.Universe.Function(types.Name{Package: pkgTestingCore, Name: "ExtractFromListOptions"}),
|
||||||
|
}
|
||||||
|
|
||||||
|
if g.version == "unversioned" {
|
||||||
|
m["DeleteOptions"] = c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "DeleteOptions"})
|
||||||
|
m["ListOptions"] = c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "ListOptions"})
|
||||||
|
} else {
|
||||||
|
m["DeleteOptions"] = c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api/v1", Name: "DeleteOptions"})
|
||||||
|
m["ListOptions"] = c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api/v1", Name: "ListOptions"})
|
||||||
}
|
}
|
||||||
|
|
||||||
noMethods := extractBoolTagOrDie("noMethods", t.SecondClosestCommentLines) == true
|
noMethods := extractBoolTagOrDie("noMethods", t.SecondClosestCommentLines) == true
|
||||||
@ -191,7 +198,7 @@ var $.type|allLowercasePlural$Resource = $.GroupVersionResource|raw${Group: "$.g
|
|||||||
`
|
`
|
||||||
|
|
||||||
var listTemplate = `
|
var listTemplate = `
|
||||||
func (c *Fake$.type|publicPlural$) List(opts $.apiListOptions|raw$) (result *$.type|raw$List, err error) {
|
func (c *Fake$.type|publicPlural$) List(opts $.ListOptions|raw$) (result *$.type|raw$List, err error) {
|
||||||
obj, err := c.Fake.
|
obj, err := c.Fake.
|
||||||
$if .namespaced$Invokes($.NewListAction|raw$($.type|allLowercasePlural$Resource, c.ns, opts), &$.type|raw$List{})
|
$if .namespaced$Invokes($.NewListAction|raw$($.type|allLowercasePlural$Resource, c.ns, opts), &$.type|raw$List{})
|
||||||
$else$Invokes($.NewRootListAction|raw$($.type|allLowercasePlural$Resource, opts), &$.type|raw$List{})$end$
|
$else$Invokes($.NewRootListAction|raw$($.type|allLowercasePlural$Resource, opts), &$.type|raw$List{})$end$
|
||||||
@ -203,7 +210,7 @@ func (c *Fake$.type|publicPlural$) List(opts $.apiListOptions|raw$) (result *$.t
|
|||||||
`
|
`
|
||||||
|
|
||||||
var listUsingOptionsTemplate = `
|
var listUsingOptionsTemplate = `
|
||||||
func (c *Fake$.type|publicPlural$) List(opts $.apiListOptions|raw$) (result *$.type|raw$List, err error) {
|
func (c *Fake$.type|publicPlural$) List(opts $.ListOptions|raw$) (result *$.type|raw$List, err error) {
|
||||||
obj, err := c.Fake.
|
obj, err := c.Fake.
|
||||||
$if .namespaced$Invokes($.NewListAction|raw$($.type|allLowercasePlural$Resource, c.ns, opts), &$.type|raw$List{})
|
$if .namespaced$Invokes($.NewListAction|raw$($.type|allLowercasePlural$Resource, c.ns, opts), &$.type|raw$List{})
|
||||||
$else$Invokes($.NewRootListAction|raw$($.type|allLowercasePlural$Resource, opts), &$.type|raw$List{})$end$
|
$else$Invokes($.NewRootListAction|raw$($.type|allLowercasePlural$Resource, opts), &$.type|raw$List{})$end$
|
||||||
@ -211,7 +218,7 @@ func (c *Fake$.type|publicPlural$) List(opts $.apiListOptions|raw$) (result *$.t
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
label := opts.LabelSelector
|
label, _, _ := $.ExtractFromListOptions|raw$(opts)
|
||||||
if label == nil {
|
if label == nil {
|
||||||
label = $.Everything|raw$()
|
label = $.Everything|raw$()
|
||||||
}
|
}
|
||||||
@ -238,7 +245,7 @@ func (c *Fake$.type|publicPlural$) Get(name string) (result *$.type|raw$, err er
|
|||||||
`
|
`
|
||||||
|
|
||||||
var deleteTemplate = `
|
var deleteTemplate = `
|
||||||
func (c *Fake$.type|publicPlural$) Delete(name string, options *$.apiDeleteOptions|raw$) error {
|
func (c *Fake$.type|publicPlural$) Delete(name string, options *$.DeleteOptions|raw$) error {
|
||||||
_, err := c.Fake.
|
_, err := c.Fake.
|
||||||
$if .namespaced$Invokes($.NewDeleteAction|raw$($.type|allLowercasePlural$Resource, c.ns, name), &$.type|raw${})
|
$if .namespaced$Invokes($.NewDeleteAction|raw$($.type|allLowercasePlural$Resource, c.ns, name), &$.type|raw${})
|
||||||
$else$Invokes($.NewRootDeleteAction|raw$($.type|allLowercasePlural$Resource, name), &$.type|raw${})$end$
|
$else$Invokes($.NewRootDeleteAction|raw$($.type|allLowercasePlural$Resource, name), &$.type|raw${})$end$
|
||||||
@ -247,7 +254,7 @@ func (c *Fake$.type|publicPlural$) Delete(name string, options *$.apiDeleteOptio
|
|||||||
`
|
`
|
||||||
|
|
||||||
var deleteCollectionTemplate = `
|
var deleteCollectionTemplate = `
|
||||||
func (c *Fake$.type|publicPlural$) DeleteCollection(options *$.apiDeleteOptions|raw$, listOptions $.apiListOptions|raw$) error {
|
func (c *Fake$.type|publicPlural$) DeleteCollection(options *$.DeleteOptions|raw$, listOptions $.ListOptions|raw$) error {
|
||||||
$if .namespaced$action := $.NewDeleteCollectionAction|raw$($.type|allLowercasePlural$Resource, c.ns, listOptions)
|
$if .namespaced$action := $.NewDeleteCollectionAction|raw$($.type|allLowercasePlural$Resource, c.ns, listOptions)
|
||||||
$else$action := $.NewRootDeleteCollectionAction|raw$($.type|allLowercasePlural$Resource, listOptions)
|
$else$action := $.NewRootDeleteCollectionAction|raw$($.type|allLowercasePlural$Resource, listOptions)
|
||||||
$end$
|
$end$
|
||||||
@ -294,7 +301,7 @@ func (c *Fake$.type|publicPlural$) UpdateStatus($.type|private$ *$.type|raw$) (*
|
|||||||
|
|
||||||
var watchTemplate = `
|
var watchTemplate = `
|
||||||
// Watch returns a $.watchInterface|raw$ that watches the requested $.type|privatePlural$.
|
// Watch returns a $.watchInterface|raw$ that watches the requested $.type|privatePlural$.
|
||||||
func (c *Fake$.type|publicPlural$) Watch(opts $.apiListOptions|raw$) ($.watchInterface|raw$, error) {
|
func (c *Fake$.type|publicPlural$) Watch(opts $.ListOptions|raw$) ($.watchInterface|raw$, error) {
|
||||||
return c.Fake.
|
return c.Fake.
|
||||||
$if .namespaced$InvokesWatch($.NewWatchAction|raw$($.type|allLowercasePlural$Resource, c.ns, opts))
|
$if .namespaced$InvokesWatch($.NewWatchAction|raw$($.type|allLowercasePlural$Resource, c.ns, opts))
|
||||||
$else$InvokesWatch($.NewRootWatchAction|raw$($.type|allLowercasePlural$Resource, opts))$end$
|
$else$InvokesWatch($.NewRootWatchAction|raw$($.type|allLowercasePlural$Resource, opts))$end$
|
||||||
|
@ -31,6 +31,7 @@ type genClientForType struct {
|
|||||||
generator.DefaultGen
|
generator.DefaultGen
|
||||||
outputPackage string
|
outputPackage string
|
||||||
group string
|
group string
|
||||||
|
version string
|
||||||
typeToMatch *types.Type
|
typeToMatch *types.Type
|
||||||
imports namer.ImportTracker
|
imports namer.ImportTracker
|
||||||
}
|
}
|
||||||
@ -73,13 +74,19 @@ func (g *genClientForType) GenerateType(c *generator.Context, t *types.Type, w i
|
|||||||
"Package": namer.IC(pkg),
|
"Package": namer.IC(pkg),
|
||||||
"Group": namer.IC(g.group),
|
"Group": namer.IC(g.group),
|
||||||
"watchInterface": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/watch", Name: "Interface"}),
|
"watchInterface": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/watch", Name: "Interface"}),
|
||||||
"apiDeleteOptions": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "DeleteOptions"}),
|
|
||||||
"apiListOptions": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "ListOptions"}),
|
|
||||||
"apiParameterCodec": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "ParameterCodec"}),
|
"apiParameterCodec": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "ParameterCodec"}),
|
||||||
"PatchType": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "PatchType"}),
|
"PatchType": c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "PatchType"}),
|
||||||
"namespaced": namespaced,
|
"namespaced": namespaced,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if g.version == "unversioned" {
|
||||||
|
m["DeleteOptions"] = c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "DeleteOptions"})
|
||||||
|
m["ListOptions"] = c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api", Name: "ListOptions"})
|
||||||
|
} else {
|
||||||
|
m["DeleteOptions"] = c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api/v1", Name: "DeleteOptions"})
|
||||||
|
m["ListOptions"] = c.Universe.Type(types.Name{Package: "k8s.io/kubernetes/pkg/api/v1", Name: "ListOptions"})
|
||||||
|
}
|
||||||
|
|
||||||
sw.Do(getterComment, m)
|
sw.Do(getterComment, m)
|
||||||
if namespaced {
|
if namespaced {
|
||||||
sw.Do(getterNamesapced, m)
|
sw.Do(getterNamesapced, m)
|
||||||
@ -156,11 +163,11 @@ var interfaceUpdateStatusTemplate = `
|
|||||||
|
|
||||||
// template for the Interface
|
// template for the Interface
|
||||||
var interfaceTemplate3 = `
|
var interfaceTemplate3 = `
|
||||||
Delete(name string, options *$.apiDeleteOptions|raw$) error
|
Delete(name string, options *$.DeleteOptions|raw$) error
|
||||||
DeleteCollection(options *$.apiDeleteOptions|raw$, listOptions $.apiListOptions|raw$) error
|
DeleteCollection(options *$.DeleteOptions|raw$, listOptions $.ListOptions|raw$) error
|
||||||
Get(name string) (*$.type|raw$, error)
|
Get(name string) (*$.type|raw$, error)
|
||||||
List(opts $.apiListOptions|raw$) (*$.type|raw$List, error)
|
List(opts $.ListOptions|raw$) (*$.type|raw$List, error)
|
||||||
Watch(opts $.apiListOptions|raw$) ($.watchInterface|raw$, error)
|
Watch(opts $.ListOptions|raw$) ($.watchInterface|raw$, error)
|
||||||
Patch(name string, pt $.PatchType|raw$, data []byte, subresources ...string) (result *$.type|raw$, err error)`
|
Patch(name string, pt $.PatchType|raw$, data []byte, subresources ...string) (result *$.type|raw$, err error)`
|
||||||
|
|
||||||
var interfaceTemplate4 = `
|
var interfaceTemplate4 = `
|
||||||
@ -206,7 +213,7 @@ func new$.type|publicPlural$(c *$.Group$Client) *$.type|privatePlural$ {
|
|||||||
|
|
||||||
var listTemplate = `
|
var listTemplate = `
|
||||||
// List takes label and field selectors, and returns the list of $.type|publicPlural$ that match those selectors.
|
// List takes label and field selectors, and returns the list of $.type|publicPlural$ that match those selectors.
|
||||||
func (c *$.type|privatePlural$) List(opts $.apiListOptions|raw$) (result *$.type|raw$List, err error) {
|
func (c *$.type|privatePlural$) List(opts $.ListOptions|raw$) (result *$.type|raw$List, err error) {
|
||||||
result = &$.type|raw$List{}
|
result = &$.type|raw$List{}
|
||||||
err = c.client.Get().
|
err = c.client.Get().
|
||||||
$if .namespaced$Namespace(c.ns).$end$
|
$if .namespaced$Namespace(c.ns).$end$
|
||||||
@ -233,7 +240,7 @@ func (c *$.type|privatePlural$) Get(name string) (result *$.type|raw$, err error
|
|||||||
|
|
||||||
var deleteTemplate = `
|
var deleteTemplate = `
|
||||||
// Delete takes name of the $.type|private$ and deletes it. Returns an error if one occurs.
|
// Delete takes name of the $.type|private$ and deletes it. Returns an error if one occurs.
|
||||||
func (c *$.type|privatePlural$) Delete(name string, options *$.apiDeleteOptions|raw$) error {
|
func (c *$.type|privatePlural$) Delete(name string, options *$.DeleteOptions|raw$) error {
|
||||||
return c.client.Delete().
|
return c.client.Delete().
|
||||||
$if .namespaced$Namespace(c.ns).$end$
|
$if .namespaced$Namespace(c.ns).$end$
|
||||||
Resource("$.type|allLowercasePlural$").
|
Resource("$.type|allLowercasePlural$").
|
||||||
@ -246,7 +253,7 @@ func (c *$.type|privatePlural$) Delete(name string, options *$.apiDeleteOptions|
|
|||||||
|
|
||||||
var deleteCollectionTemplate = `
|
var deleteCollectionTemplate = `
|
||||||
// DeleteCollection deletes a collection of objects.
|
// DeleteCollection deletes a collection of objects.
|
||||||
func (c *$.type|privatePlural$) DeleteCollection(options *$.apiDeleteOptions|raw$, listOptions $.apiListOptions|raw$) error {
|
func (c *$.type|privatePlural$) DeleteCollection(options *$.DeleteOptions|raw$, listOptions $.ListOptions|raw$) error {
|
||||||
return c.client.Delete().
|
return c.client.Delete().
|
||||||
$if .namespaced$Namespace(c.ns).$end$
|
$if .namespaced$Namespace(c.ns).$end$
|
||||||
Resource("$.type|allLowercasePlural$").
|
Resource("$.type|allLowercasePlural$").
|
||||||
@ -303,7 +310,7 @@ func (c *$.type|privatePlural$) UpdateStatus($.type|private$ *$.type|raw$) (resu
|
|||||||
|
|
||||||
var watchTemplate = `
|
var watchTemplate = `
|
||||||
// Watch returns a $.watchInterface|raw$ that watches the requested $.type|privatePlural$.
|
// Watch returns a $.watchInterface|raw$ that watches the requested $.type|privatePlural$.
|
||||||
func (c *$.type|privatePlural$) Watch(opts $.apiListOptions|raw$) ($.watchInterface|raw$, error) {
|
func (c *$.type|privatePlural$) Watch(opts $.ListOptions|raw$) ($.watchInterface|raw$, error) {
|
||||||
return c.client.Get().
|
return c.client.Get().
|
||||||
Prefix("watch").
|
Prefix("watch").
|
||||||
$if .namespaced$Namespace(c.ns).$end$
|
$if .namespaced$Namespace(c.ns).$end$
|
||||||
|
@ -95,7 +95,7 @@ func (c *FakeTestTypes) List(opts api.ListOptions) (result *testgroup_k8s_io.Tes
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
label := opts.LabelSelector
|
label, _, _ := core.ExtractFromListOptions(opts)
|
||||||
if label == nil {
|
if label == nil {
|
||||||
label = labels.Everything()
|
label = labels.Everything()
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,9 @@ import (
|
|||||||
federation_v1beta1 "k8s.io/kubernetes/federation/apis/federation/v1beta1"
|
federation_v1beta1 "k8s.io/kubernetes/federation/apis/federation/v1beta1"
|
||||||
cluster_cache "k8s.io/kubernetes/federation/client/cache"
|
cluster_cache "k8s.io/kubernetes/federation/client/cache"
|
||||||
federationclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5"
|
federationclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5"
|
||||||
|
"k8s.io/kubernetes/federation/pkg/federation-controller/util"
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
"k8s.io/kubernetes/pkg/client/cache"
|
"k8s.io/kubernetes/pkg/client/cache"
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
@ -65,10 +67,12 @@ func NewclusterController(federationClient federationclientset.Interface, cluste
|
|||||||
cc.clusterStore.Store, cc.clusterController = cache.NewInformer(
|
cc.clusterStore.Store, cc.clusterController = cache.NewInformer(
|
||||||
&cache.ListWatch{
|
&cache.ListWatch{
|
||||||
ListFunc: func(options api.ListOptions) (runtime.Object, error) {
|
ListFunc: func(options api.ListOptions) (runtime.Object, error) {
|
||||||
return cc.federationClient.Federation().Clusters().List(options)
|
versionedOptions := util.VersionizeV1ListOptions(options)
|
||||||
|
return cc.federationClient.Federation().Clusters().List(versionedOptions)
|
||||||
},
|
},
|
||||||
WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
|
WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
|
||||||
return cc.federationClient.Federation().Clusters().Watch(options)
|
versionedOptions := util.VersionizeV1ListOptions(options)
|
||||||
|
return cc.federationClient.Federation().Clusters().Watch(versionedOptions)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
&federation_v1beta1.Cluster{},
|
&federation_v1beta1.Cluster{},
|
||||||
@ -134,7 +138,7 @@ func (cc *ClusterController) GetClusterStatus(cluster *federation_v1beta1.Cluste
|
|||||||
|
|
||||||
// UpdateClusterStatus checks cluster status and get the metrics from cluster's restapi
|
// UpdateClusterStatus checks cluster status and get the metrics from cluster's restapi
|
||||||
func (cc *ClusterController) UpdateClusterStatus() error {
|
func (cc *ClusterController) UpdateClusterStatus() error {
|
||||||
clusters, err := cc.federationClient.Federation().Clusters().List(api.ListOptions{})
|
clusters, err := cc.federationClient.Federation().Clusters().List(v1.ListOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -127,10 +127,12 @@ func NewIngressController(client federationclientset.Interface) *IngressControll
|
|||||||
ic.ingressInformerStore, ic.ingressInformerController = cache.NewInformer(
|
ic.ingressInformerStore, ic.ingressInformerController = cache.NewInformer(
|
||||||
&cache.ListWatch{
|
&cache.ListWatch{
|
||||||
ListFunc: func(options api.ListOptions) (pkg_runtime.Object, error) {
|
ListFunc: func(options api.ListOptions) (pkg_runtime.Object, error) {
|
||||||
return client.Extensions().Ingresses(api.NamespaceAll).List(options)
|
versionedOptions := util.VersionizeV1ListOptions(options)
|
||||||
|
return client.Extensions().Ingresses(api.NamespaceAll).List(versionedOptions)
|
||||||
},
|
},
|
||||||
WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
|
WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
|
||||||
return client.Extensions().Ingresses(api.NamespaceAll).Watch(options)
|
versionedOptions := util.VersionizeV1ListOptions(options)
|
||||||
|
return client.Extensions().Ingresses(api.NamespaceAll).Watch(versionedOptions)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
&extensions_v1beta1.Ingress{},
|
&extensions_v1beta1.Ingress{},
|
||||||
@ -148,10 +150,12 @@ func NewIngressController(client federationclientset.Interface) *IngressControll
|
|||||||
return cache.NewInformer(
|
return cache.NewInformer(
|
||||||
&cache.ListWatch{
|
&cache.ListWatch{
|
||||||
ListFunc: func(options api.ListOptions) (pkg_runtime.Object, error) {
|
ListFunc: func(options api.ListOptions) (pkg_runtime.Object, error) {
|
||||||
return targetClient.Extensions().Ingresses(api.NamespaceAll).List(options)
|
versionedOptions := util.VersionizeV1ListOptions(options)
|
||||||
|
return targetClient.Extensions().Ingresses(api.NamespaceAll).List(versionedOptions)
|
||||||
},
|
},
|
||||||
WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
|
WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
|
||||||
return targetClient.Extensions().Ingresses(api.NamespaceAll).Watch(options)
|
versionedOptions := util.VersionizeV1ListOptions(options)
|
||||||
|
return targetClient.Extensions().Ingresses(api.NamespaceAll).Watch(versionedOptions)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
&extensions_v1beta1.Ingress{},
|
&extensions_v1beta1.Ingress{},
|
||||||
@ -184,13 +188,15 @@ func NewIngressController(client federationclientset.Interface) *IngressControll
|
|||||||
if targetClient == nil {
|
if targetClient == nil {
|
||||||
glog.Errorf("Internal error: targetClient is nil")
|
glog.Errorf("Internal error: targetClient is nil")
|
||||||
}
|
}
|
||||||
return targetClient.Core().ConfigMaps(uidConfigMapNamespace).List(options) // we only want to list one by name - unfortunately Kubernetes don't have a selector for that.
|
versionedOptions := util.VersionizeV1ListOptions(options)
|
||||||
|
return targetClient.Core().ConfigMaps(uidConfigMapNamespace).List(versionedOptions) // we only want to list one by name - unfortunately Kubernetes don't have a selector for that.
|
||||||
},
|
},
|
||||||
WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
|
WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
|
||||||
if targetClient == nil {
|
if targetClient == nil {
|
||||||
glog.Errorf("Internal error: targetClient is nil")
|
glog.Errorf("Internal error: targetClient is nil")
|
||||||
}
|
}
|
||||||
return targetClient.Core().ConfigMaps(uidConfigMapNamespace).Watch(options) // as above
|
versionedOptions := util.VersionizeV1ListOptions(options)
|
||||||
|
return targetClient.Core().ConfigMaps(uidConfigMapNamespace).Watch(versionedOptions) // as above
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
&v1.ConfigMap{},
|
&v1.ConfigMap{},
|
||||||
@ -238,7 +244,7 @@ func NewIngressController(client federationclientset.Interface) *IngressControll
|
|||||||
func(client kubeclientset.Interface, obj pkg_runtime.Object) error {
|
func(client kubeclientset.Interface, obj pkg_runtime.Object) error {
|
||||||
ingress := obj.(*extensions_v1beta1.Ingress)
|
ingress := obj.(*extensions_v1beta1.Ingress)
|
||||||
glog.V(4).Infof("Attempting to delete Ingress: %v", ingress)
|
glog.V(4).Infof("Attempting to delete Ingress: %v", ingress)
|
||||||
err := client.Extensions().Ingresses(ingress.Namespace).Delete(ingress.Name, &api.DeleteOptions{})
|
err := client.Extensions().Ingresses(ingress.Namespace).Delete(ingress.Name, &v1.DeleteOptions{})
|
||||||
return err
|
return err
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -267,7 +273,7 @@ func NewIngressController(client federationclientset.Interface) *IngressControll
|
|||||||
configMap := obj.(*v1.ConfigMap)
|
configMap := obj.(*v1.ConfigMap)
|
||||||
configMapName := types.NamespacedName{Name: configMap.Name, Namespace: configMap.Namespace}
|
configMapName := types.NamespacedName{Name: configMap.Name, Namespace: configMap.Namespace}
|
||||||
glog.Errorf("Internal error: Incorrectly attempting to delete ConfigMap: %q", configMapName)
|
glog.Errorf("Internal error: Incorrectly attempting to delete ConfigMap: %q", configMapName)
|
||||||
err := client.Core().ConfigMaps(configMap.Namespace).Delete(configMap.Name, &api.DeleteOptions{})
|
err := client.Core().ConfigMaps(configMap.Namespace).Delete(configMap.Name, &v1.DeleteOptions{})
|
||||||
return err
|
return err
|
||||||
})
|
})
|
||||||
return ic
|
return ic
|
||||||
|
@ -102,10 +102,12 @@ func NewNamespaceController(client federationclientset.Interface) *NamespaceCont
|
|||||||
nc.namespaceInformerStore, nc.namespaceInformerController = cache.NewInformer(
|
nc.namespaceInformerStore, nc.namespaceInformerController = cache.NewInformer(
|
||||||
&cache.ListWatch{
|
&cache.ListWatch{
|
||||||
ListFunc: func(options api.ListOptions) (pkg_runtime.Object, error) {
|
ListFunc: func(options api.ListOptions) (pkg_runtime.Object, error) {
|
||||||
return client.Core().Namespaces().List(options)
|
versionedOptions := util.VersionizeV1ListOptions(options)
|
||||||
|
return client.Core().Namespaces().List(versionedOptions)
|
||||||
},
|
},
|
||||||
WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
|
WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
|
||||||
return client.Core().Namespaces().Watch(options)
|
versionedOptions := util.VersionizeV1ListOptions(options)
|
||||||
|
return client.Core().Namespaces().Watch(versionedOptions)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
&api_v1.Namespace{},
|
&api_v1.Namespace{},
|
||||||
@ -119,10 +121,12 @@ func NewNamespaceController(client federationclientset.Interface) *NamespaceCont
|
|||||||
return cache.NewInformer(
|
return cache.NewInformer(
|
||||||
&cache.ListWatch{
|
&cache.ListWatch{
|
||||||
ListFunc: func(options api.ListOptions) (pkg_runtime.Object, error) {
|
ListFunc: func(options api.ListOptions) (pkg_runtime.Object, error) {
|
||||||
return targetClient.Core().Namespaces().List(options)
|
versionedOptions := util.VersionizeV1ListOptions(options)
|
||||||
|
return targetClient.Core().Namespaces().List(versionedOptions)
|
||||||
},
|
},
|
||||||
WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
|
WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
|
||||||
return targetClient.Core().Namespaces().Watch(options)
|
versionedOptions := util.VersionizeV1ListOptions(options)
|
||||||
|
return targetClient.Core().Namespaces().Watch(versionedOptions)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
&api_v1.Namespace{},
|
&api_v1.Namespace{},
|
||||||
@ -156,7 +160,7 @@ func NewNamespaceController(client federationclientset.Interface) *NamespaceCont
|
|||||||
},
|
},
|
||||||
func(client kubeclientset.Interface, obj pkg_runtime.Object) error {
|
func(client kubeclientset.Interface, obj pkg_runtime.Object) error {
|
||||||
namespace := obj.(*api_v1.Namespace)
|
namespace := obj.(*api_v1.Namespace)
|
||||||
err := client.Core().Namespaces().Delete(namespace.Name, &api.DeleteOptions{})
|
err := client.Core().Namespaces().Delete(namespace.Name, &api_v1.DeleteOptions{})
|
||||||
return err
|
return err
|
||||||
})
|
})
|
||||||
return nc
|
return nc
|
||||||
@ -345,23 +349,23 @@ func (nc *NamespaceController) delete(namespace *api_v1.Namespace) error {
|
|||||||
// Right now there is just 5 types of objects: ReplicaSet, Secret, Ingress, Events and Service.
|
// Right now there is just 5 types of objects: ReplicaSet, Secret, Ingress, Events and Service.
|
||||||
// Temporarly these items are simply deleted one by one to squeeze this code into 1.4.
|
// Temporarly these items are simply deleted one by one to squeeze this code into 1.4.
|
||||||
// TODO: Make it generic (like in the regular namespace controller) and parallel.
|
// TODO: Make it generic (like in the regular namespace controller) and parallel.
|
||||||
err := nc.federatedApiClient.Core().Services(namespace.Name).DeleteCollection(&api.DeleteOptions{}, api.ListOptions{})
|
err := nc.federatedApiClient.Core().Services(namespace.Name).DeleteCollection(&api_v1.DeleteOptions{}, api_v1.ListOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed to delete service list: %v", err)
|
return fmt.Errorf("failed to delete service list: %v", err)
|
||||||
}
|
}
|
||||||
err = nc.federatedApiClient.Extensions().ReplicaSets(namespace.Name).DeleteCollection(&api.DeleteOptions{}, api.ListOptions{})
|
err = nc.federatedApiClient.Extensions().ReplicaSets(namespace.Name).DeleteCollection(&api_v1.DeleteOptions{}, api_v1.ListOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed to delete replicaset list from namespace: %v", err)
|
return fmt.Errorf("failed to delete replicaset list from namespace: %v", err)
|
||||||
}
|
}
|
||||||
err = nc.federatedApiClient.Core().Secrets(namespace.Name).DeleteCollection(&api.DeleteOptions{}, api.ListOptions{})
|
err = nc.federatedApiClient.Core().Secrets(namespace.Name).DeleteCollection(&api_v1.DeleteOptions{}, api_v1.ListOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed to delete secret list from namespace: %v", err)
|
return fmt.Errorf("failed to delete secret list from namespace: %v", err)
|
||||||
}
|
}
|
||||||
err = nc.federatedApiClient.Extensions().Ingresses(namespace.Name).DeleteCollection(&api.DeleteOptions{}, api.ListOptions{})
|
err = nc.federatedApiClient.Extensions().Ingresses(namespace.Name).DeleteCollection(&api_v1.DeleteOptions{}, api_v1.ListOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed to delete ingresses list from namespace: %v", err)
|
return fmt.Errorf("failed to delete ingresses list from namespace: %v", err)
|
||||||
}
|
}
|
||||||
err = nc.federatedApiClient.Core().Events(namespace.Name).DeleteCollection(&api.DeleteOptions{}, api.ListOptions{})
|
err = nc.federatedApiClient.Core().Events(namespace.Name).DeleteCollection(&api_v1.DeleteOptions{}, api_v1.ListOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("failed to delete events list from namespace: %v", err)
|
return fmt.Errorf("failed to delete events list from namespace: %v", err)
|
||||||
}
|
}
|
||||||
@ -385,7 +389,7 @@ func (nc *NamespaceController) delete(namespace *api_v1.Namespace) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TODO: What about namespaces in subclusters ???
|
// TODO: What about namespaces in subclusters ???
|
||||||
err = nc.federatedApiClient.Core().Namespaces().Delete(updatedNamespace.Name, &api.DeleteOptions{})
|
err = nc.federatedApiClient.Core().Namespaces().Delete(updatedNamespace.Name, &api_v1.DeleteOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// Its all good if the error is not found error. That means it is deleted already and we do not have to do anything.
|
// Its all good if the error is not found error. That means it is deleted already and we do not have to do anything.
|
||||||
// This is expected when we are processing an update as a result of namespace finalizer deletion.
|
// This is expected when we are processing an update as a result of namespace finalizer deletion.
|
||||||
|
@ -121,10 +121,12 @@ func NewReplicaSetController(federationClient fedclientset.Interface) *ReplicaSe
|
|||||||
return cache.NewInformer(
|
return cache.NewInformer(
|
||||||
&cache.ListWatch{
|
&cache.ListWatch{
|
||||||
ListFunc: func(options api.ListOptions) (runtime.Object, error) {
|
ListFunc: func(options api.ListOptions) (runtime.Object, error) {
|
||||||
return clientset.Extensions().ReplicaSets(apiv1.NamespaceAll).List(options)
|
versionedOptions := fedutil.VersionizeV1ListOptions(options)
|
||||||
|
return clientset.Extensions().ReplicaSets(apiv1.NamespaceAll).List(versionedOptions)
|
||||||
},
|
},
|
||||||
WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
|
WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
|
||||||
return clientset.Extensions().ReplicaSets(apiv1.NamespaceAll).Watch(options)
|
versionedOptions := fedutil.VersionizeV1ListOptions(options)
|
||||||
|
return clientset.Extensions().ReplicaSets(apiv1.NamespaceAll).Watch(versionedOptions)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
&extensionsv1.ReplicaSet{},
|
&extensionsv1.ReplicaSet{},
|
||||||
@ -148,10 +150,12 @@ func NewReplicaSetController(federationClient fedclientset.Interface) *ReplicaSe
|
|||||||
return cache.NewInformer(
|
return cache.NewInformer(
|
||||||
&cache.ListWatch{
|
&cache.ListWatch{
|
||||||
ListFunc: func(options api.ListOptions) (runtime.Object, error) {
|
ListFunc: func(options api.ListOptions) (runtime.Object, error) {
|
||||||
return clientset.Core().Pods(apiv1.NamespaceAll).List(options)
|
versionedOptions := fedutil.VersionizeV1ListOptions(options)
|
||||||
|
return clientset.Core().Pods(apiv1.NamespaceAll).List(versionedOptions)
|
||||||
},
|
},
|
||||||
WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
|
WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
|
||||||
return clientset.Core().Pods(apiv1.NamespaceAll).Watch(options)
|
versionedOptions := fedutil.VersionizeV1ListOptions(options)
|
||||||
|
return clientset.Core().Pods(apiv1.NamespaceAll).Watch(versionedOptions)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
&apiv1.Pod{},
|
&apiv1.Pod{},
|
||||||
@ -168,10 +172,12 @@ func NewReplicaSetController(federationClient fedclientset.Interface) *ReplicaSe
|
|||||||
frsc.replicaSetStore.Store, frsc.replicaSetController = cache.NewInformer(
|
frsc.replicaSetStore.Store, frsc.replicaSetController = cache.NewInformer(
|
||||||
&cache.ListWatch{
|
&cache.ListWatch{
|
||||||
ListFunc: func(options api.ListOptions) (runtime.Object, error) {
|
ListFunc: func(options api.ListOptions) (runtime.Object, error) {
|
||||||
return frsc.fedClient.Extensions().ReplicaSets(apiv1.NamespaceAll).List(options)
|
versionedOptions := fedutil.VersionizeV1ListOptions(options)
|
||||||
|
return frsc.fedClient.Extensions().ReplicaSets(apiv1.NamespaceAll).List(versionedOptions)
|
||||||
},
|
},
|
||||||
WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
|
WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
|
||||||
return frsc.fedClient.Extensions().ReplicaSets(apiv1.NamespaceAll).Watch(options)
|
versionedOptions := fedutil.VersionizeV1ListOptions(options)
|
||||||
|
return frsc.fedClient.Extensions().ReplicaSets(apiv1.NamespaceAll).Watch(versionedOptions)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
&extensionsv1.ReplicaSet{},
|
&extensionsv1.ReplicaSet{},
|
||||||
@ -194,7 +200,7 @@ func NewReplicaSetController(federationClient fedclientset.Interface) *ReplicaSe
|
|||||||
},
|
},
|
||||||
func(client kubeclientset.Interface, obj runtime.Object) error {
|
func(client kubeclientset.Interface, obj runtime.Object) error {
|
||||||
rs := obj.(*extensionsv1.ReplicaSet)
|
rs := obj.(*extensionsv1.ReplicaSet)
|
||||||
err := client.Extensions().ReplicaSets(rs.Namespace).Delete(rs.Name, &api.DeleteOptions{})
|
err := client.Extensions().ReplicaSets(rs.Namespace).Delete(rs.Name, &apiv1.DeleteOptions{})
|
||||||
return err
|
return err
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -99,10 +99,12 @@ func NewSecretController(client federationclientset.Interface) *SecretController
|
|||||||
secretcontroller.secretInformerStore, secretcontroller.secretInformerController = cache.NewInformer(
|
secretcontroller.secretInformerStore, secretcontroller.secretInformerController = cache.NewInformer(
|
||||||
&cache.ListWatch{
|
&cache.ListWatch{
|
||||||
ListFunc: func(options api.ListOptions) (pkg_runtime.Object, error) {
|
ListFunc: func(options api.ListOptions) (pkg_runtime.Object, error) {
|
||||||
return client.Core().Secrets(api_v1.NamespaceAll).List(options)
|
versionedOptions := util.VersionizeV1ListOptions(options)
|
||||||
|
return client.Core().Secrets(api_v1.NamespaceAll).List(versionedOptions)
|
||||||
},
|
},
|
||||||
WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
|
WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
|
||||||
return client.Core().Secrets(api_v1.NamespaceAll).Watch(options)
|
versionedOptions := util.VersionizeV1ListOptions(options)
|
||||||
|
return client.Core().Secrets(api_v1.NamespaceAll).Watch(versionedOptions)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
&api_v1.Secret{},
|
&api_v1.Secret{},
|
||||||
@ -116,10 +118,12 @@ func NewSecretController(client federationclientset.Interface) *SecretController
|
|||||||
return cache.NewInformer(
|
return cache.NewInformer(
|
||||||
&cache.ListWatch{
|
&cache.ListWatch{
|
||||||
ListFunc: func(options api.ListOptions) (pkg_runtime.Object, error) {
|
ListFunc: func(options api.ListOptions) (pkg_runtime.Object, error) {
|
||||||
return targetClient.Core().Secrets(api_v1.NamespaceAll).List(options)
|
versionedOptions := util.VersionizeV1ListOptions(options)
|
||||||
|
return targetClient.Core().Secrets(api_v1.NamespaceAll).List(versionedOptions)
|
||||||
},
|
},
|
||||||
WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
|
WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
|
||||||
return targetClient.Core().Secrets(api_v1.NamespaceAll).Watch(options)
|
versionedOptions := util.VersionizeV1ListOptions(options)
|
||||||
|
return targetClient.Core().Secrets(api_v1.NamespaceAll).Watch(versionedOptions)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
&api_v1.Secret{},
|
&api_v1.Secret{},
|
||||||
@ -155,7 +159,7 @@ func NewSecretController(client federationclientset.Interface) *SecretController
|
|||||||
},
|
},
|
||||||
func(client kubeclientset.Interface, obj pkg_runtime.Object) error {
|
func(client kubeclientset.Interface, obj pkg_runtime.Object) error {
|
||||||
secret := obj.(*api_v1.Secret)
|
secret := obj.(*api_v1.Secret)
|
||||||
err := client.Core().Secrets(secret.Namespace).Delete(secret.Name, &api.DeleteOptions{})
|
err := client.Core().Secrets(secret.Namespace).Delete(secret.Name, &api_v1.DeleteOptions{})
|
||||||
return err
|
return err
|
||||||
})
|
})
|
||||||
return secretcontroller
|
return secretcontroller
|
||||||
|
@ -93,10 +93,12 @@ func (cc *clusterClientCache) startClusterLW(cluster *v1beta1.Cluster, clusterNa
|
|||||||
cachedClusterClient.endpointStore.Store, cachedClusterClient.endpointController = cache.NewInformer(
|
cachedClusterClient.endpointStore.Store, cachedClusterClient.endpointController = cache.NewInformer(
|
||||||
&cache.ListWatch{
|
&cache.ListWatch{
|
||||||
ListFunc: func(options api.ListOptions) (pkg_runtime.Object, error) {
|
ListFunc: func(options api.ListOptions) (pkg_runtime.Object, error) {
|
||||||
return clientset.Core().Endpoints(v1.NamespaceAll).List(options)
|
versionedOptions := util.VersionizeV1ListOptions(options)
|
||||||
|
return clientset.Core().Endpoints(v1.NamespaceAll).List(versionedOptions)
|
||||||
},
|
},
|
||||||
WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
|
WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
|
||||||
return clientset.Core().Endpoints(v1.NamespaceAll).Watch(options)
|
versionedOptions := util.VersionizeV1ListOptions(options)
|
||||||
|
return clientset.Core().Endpoints(v1.NamespaceAll).Watch(versionedOptions)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
&v1.Endpoints{},
|
&v1.Endpoints{},
|
||||||
@ -117,10 +119,12 @@ func (cc *clusterClientCache) startClusterLW(cluster *v1beta1.Cluster, clusterNa
|
|||||||
cachedClusterClient.serviceStore.Indexer, cachedClusterClient.serviceController = cache.NewIndexerInformer(
|
cachedClusterClient.serviceStore.Indexer, cachedClusterClient.serviceController = cache.NewIndexerInformer(
|
||||||
&cache.ListWatch{
|
&cache.ListWatch{
|
||||||
ListFunc: func(options api.ListOptions) (pkg_runtime.Object, error) {
|
ListFunc: func(options api.ListOptions) (pkg_runtime.Object, error) {
|
||||||
return clientset.Core().Services(v1.NamespaceAll).List(options)
|
versionedOptions := util.VersionizeV1ListOptions(options)
|
||||||
|
return clientset.Core().Services(v1.NamespaceAll).List(versionedOptions)
|
||||||
},
|
},
|
||||||
WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
|
WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
|
||||||
return clientset.Core().Services(v1.NamespaceAll).Watch(options)
|
versionedOptions := util.VersionizeV1ListOptions(options)
|
||||||
|
return clientset.Core().Services(v1.NamespaceAll).Watch(versionedOptions)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
&v1.Service{},
|
&v1.Service{},
|
||||||
|
@ -28,6 +28,7 @@ import (
|
|||||||
federationcache "k8s.io/kubernetes/federation/client/cache"
|
federationcache "k8s.io/kubernetes/federation/client/cache"
|
||||||
fedclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5"
|
fedclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5"
|
||||||
"k8s.io/kubernetes/federation/pkg/dnsprovider"
|
"k8s.io/kubernetes/federation/pkg/dnsprovider"
|
||||||
|
"k8s.io/kubernetes/federation/pkg/federation-controller/util"
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/errors"
|
"k8s.io/kubernetes/pkg/api/errors"
|
||||||
v1 "k8s.io/kubernetes/pkg/api/v1"
|
v1 "k8s.io/kubernetes/pkg/api/v1"
|
||||||
@ -159,10 +160,12 @@ func New(federationClient fedclientset.Interface, dns dnsprovider.Interface, fed
|
|||||||
s.serviceStore.Indexer, s.serviceController = cache.NewIndexerInformer(
|
s.serviceStore.Indexer, s.serviceController = cache.NewIndexerInformer(
|
||||||
&cache.ListWatch{
|
&cache.ListWatch{
|
||||||
ListFunc: func(options api.ListOptions) (pkg_runtime.Object, error) {
|
ListFunc: func(options api.ListOptions) (pkg_runtime.Object, error) {
|
||||||
return s.federationClient.Core().Services(v1.NamespaceAll).List(options)
|
versionedOptions := util.VersionizeV1ListOptions(options)
|
||||||
|
return s.federationClient.Core().Services(v1.NamespaceAll).List(versionedOptions)
|
||||||
},
|
},
|
||||||
WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
|
WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
|
||||||
return s.federationClient.Core().Services(v1.NamespaceAll).Watch(options)
|
versionedOptions := util.VersionizeV1ListOptions(options)
|
||||||
|
return s.federationClient.Core().Services(v1.NamespaceAll).Watch(versionedOptions)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
&v1.Service{},
|
&v1.Service{},
|
||||||
@ -182,10 +185,12 @@ func New(federationClient fedclientset.Interface, dns dnsprovider.Interface, fed
|
|||||||
s.clusterStore.Store, s.clusterController = cache.NewInformer(
|
s.clusterStore.Store, s.clusterController = cache.NewInformer(
|
||||||
&cache.ListWatch{
|
&cache.ListWatch{
|
||||||
ListFunc: func(options api.ListOptions) (pkg_runtime.Object, error) {
|
ListFunc: func(options api.ListOptions) (pkg_runtime.Object, error) {
|
||||||
return s.federationClient.Federation().Clusters().List(options)
|
versionedOptions := util.VersionizeV1ListOptions(options)
|
||||||
|
return s.federationClient.Federation().Clusters().List(versionedOptions)
|
||||||
},
|
},
|
||||||
WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
|
WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
|
||||||
return s.federationClient.Federation().Clusters().Watch(options)
|
versionedOptions := util.VersionizeV1ListOptions(options)
|
||||||
|
return s.federationClient.Federation().Clusters().Watch(versionedOptions)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
&v1beta1.Cluster{},
|
&v1beta1.Cluster{},
|
||||||
@ -387,7 +392,7 @@ func (s *ServiceController) deleteClusterService(clusterName string, cachedServi
|
|||||||
glog.V(4).Infof("Deleting service %s/%s from cluster %s", service.Namespace, service.Name, clusterName)
|
glog.V(4).Infof("Deleting service %s/%s from cluster %s", service.Namespace, service.Name, clusterName)
|
||||||
var err error
|
var err error
|
||||||
for i := 0; i < clientRetryCount; i++ {
|
for i := 0; i < clientRetryCount; i++ {
|
||||||
err = clientset.Core().Services(service.Namespace).Delete(service.Name, &api.DeleteOptions{})
|
err = clientset.Core().Services(service.Namespace).Delete(service.Name, &v1.DeleteOptions{})
|
||||||
if err == nil || errors.IsNotFound(err) {
|
if err == nil || errors.IsNotFound(err) {
|
||||||
glog.V(4).Infof("Service %s/%s deleted from cluster %s", service.Namespace, service.Name, clusterName)
|
glog.V(4).Infof("Service %s/%s deleted from cluster %s", service.Namespace, service.Name, clusterName)
|
||||||
delete(cachedService.endpointMap, clusterName)
|
delete(cachedService.endpointMap, clusterName)
|
||||||
|
@ -156,10 +156,12 @@ func NewFederatedInformer(
|
|||||||
federatedInformer.clusterInformer.store, federatedInformer.clusterInformer.controller = cache.NewInformer(
|
federatedInformer.clusterInformer.store, federatedInformer.clusterInformer.controller = cache.NewInformer(
|
||||||
&cache.ListWatch{
|
&cache.ListWatch{
|
||||||
ListFunc: func(options api.ListOptions) (pkg_runtime.Object, error) {
|
ListFunc: func(options api.ListOptions) (pkg_runtime.Object, error) {
|
||||||
return federationClient.Federation().Clusters().List(options)
|
versionedOptions := VersionizeV1ListOptions(options)
|
||||||
|
return federationClient.Federation().Clusters().List(versionedOptions)
|
||||||
},
|
},
|
||||||
WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
|
WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
|
||||||
return federationClient.Federation().Clusters().Watch(options)
|
versionedOptions := VersionizeV1ListOptions(options)
|
||||||
|
return federationClient.Federation().Clusters().Watch(versionedOptions)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
&federation_api.Cluster{},
|
&federation_api.Cluster{},
|
||||||
|
@ -82,10 +82,12 @@ func TestFederatedInformer(t *testing.T) {
|
|||||||
return cache.NewInformer(
|
return cache.NewInformer(
|
||||||
&cache.ListWatch{
|
&cache.ListWatch{
|
||||||
ListFunc: func(options api.ListOptions) (runtime.Object, error) {
|
ListFunc: func(options api.ListOptions) (runtime.Object, error) {
|
||||||
return clientset.Core().Services(api_v1.NamespaceAll).List(options)
|
versionedOptions := VersionizeV1ListOptions(options)
|
||||||
|
return clientset.Core().Services(api_v1.NamespaceAll).List(versionedOptions)
|
||||||
},
|
},
|
||||||
WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
|
WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
|
||||||
return clientset.Core().Services(api_v1.NamespaceAll).Watch(options)
|
versionedOptions := VersionizeV1ListOptions(options)
|
||||||
|
return clientset.Core().Services(api_v1.NamespaceAll).Watch(versionedOptions)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
&api_v1.Service{},
|
&api_v1.Service{},
|
||||||
|
@ -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{},
|
&ThirdPartyResourceDataList{},
|
||||||
&Ingress{},
|
&Ingress{},
|
||||||
&IngressList{},
|
&IngressList{},
|
||||||
&ListOptions{},
|
&v1.ListOptions{},
|
||||||
&v1.DeleteOptions{},
|
&v1.DeleteOptions{},
|
||||||
&ReplicaSet{},
|
&ReplicaSet{},
|
||||||
&ReplicaSetList{},
|
&ReplicaSetList{},
|
||||||
|
@ -787,26 +787,6 @@ type ExportOptions struct {
|
|||||||
Exact bool `json:"exact" protobuf:"varint,2,opt,name=exact"`
|
Exact bool `json:"exact" protobuf:"varint,2,opt,name=exact"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ListOptions is the query options to a standard REST list call.
|
|
||||||
type ListOptions struct {
|
|
||||||
unversioned.TypeMeta `json:",inline"`
|
|
||||||
|
|
||||||
// A selector to restrict the list of returned objects by their labels.
|
|
||||||
// Defaults to everything.
|
|
||||||
LabelSelector string `json:"labelSelector,omitempty" protobuf:"bytes,1,opt,name=labelSelector"`
|
|
||||||
// A selector to restrict the list of returned objects by their fields.
|
|
||||||
// Defaults to everything.
|
|
||||||
FieldSelector string `json:"fieldSelector,omitempty" protobuf:"bytes,2,opt,name=fieldSelector"`
|
|
||||||
// Watch for changes to the described resources and return them as a stream of
|
|
||||||
// add, update, and remove notifications. Specify resourceVersion.
|
|
||||||
Watch bool `json:"watch,omitempty" protobuf:"varint,3,opt,name=watch"`
|
|
||||||
// When specified with a watch call, shows changes that occur after that particular version of a resource.
|
|
||||||
// Defaults to changes from the beginning of history.
|
|
||||||
ResourceVersion string `json:"resourceVersion,omitempty" protobuf:"bytes,4,opt,name=resourceVersion"`
|
|
||||||
// Timeout for the list/watch call.
|
|
||||||
TimeoutSeconds *int64 `json:"timeoutSeconds,omitempty" protobuf:"varint,5,opt,name=timeoutSeconds"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// A label selector is a label query over a set of resources. The result of matchLabels and
|
// A label selector is a label query over a set of resources. The result of matchLabels and
|
||||||
// matchExpressions are ANDed. An empty label selector matches all objects. A null
|
// matchExpressions are ANDed. An empty label selector matches all objects. A null
|
||||||
// label selector matches no objects.
|
// label selector matches no objects.
|
||||||
|
@ -116,7 +116,7 @@ func (e *events) Search(objOrRef runtime.Object) (*v1.EventList, error) {
|
|||||||
refUID = &stringRefUID
|
refUID = &stringRefUID
|
||||||
}
|
}
|
||||||
fieldSelector := e.GetFieldSelector(&ref.Name, &ref.Namespace, refKind, refUID)
|
fieldSelector := e.GetFieldSelector(&ref.Name, &ref.Namespace, refKind, refUID)
|
||||||
return e.List(api.ListOptions{FieldSelector: fieldSelector})
|
return e.List(v1.ListOptions{FieldSelector: fieldSelector.String()})
|
||||||
}
|
}
|
||||||
|
|
||||||
// Returns the appropriate field selector based on the API version being used to communicate with the server.
|
// Returns the appropriate field selector based on the API version being used to communicate with the server.
|
||||||
|
@ -17,11 +17,13 @@ limitations under the License.
|
|||||||
package core
|
package core
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"path"
|
"path"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
"k8s.io/kubernetes/pkg/fields"
|
"k8s.io/kubernetes/pkg/fields"
|
||||||
"k8s.io/kubernetes/pkg/labels"
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
@ -46,36 +48,22 @@ func NewGetAction(resource unversioned.GroupVersionResource, namespace, name str
|
|||||||
return action
|
return action
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewRootListAction(resource unversioned.GroupVersionResource, opts api.ListOptions) ListActionImpl {
|
func NewRootListAction(resource unversioned.GroupVersionResource, opts interface{}) ListActionImpl {
|
||||||
action := ListActionImpl{}
|
action := ListActionImpl{}
|
||||||
action.Verb = "list"
|
action.Verb = "list"
|
||||||
action.Resource = resource
|
action.Resource = resource
|
||||||
labelSelector := opts.LabelSelector
|
labelSelector, fieldSelector, _ := ExtractFromListOptions(opts)
|
||||||
if labelSelector == nil {
|
|
||||||
labelSelector = labels.Everything()
|
|
||||||
}
|
|
||||||
fieldSelector := opts.FieldSelector
|
|
||||||
if fieldSelector == nil {
|
|
||||||
fieldSelector = fields.Everything()
|
|
||||||
}
|
|
||||||
action.ListRestrictions = ListRestrictions{labelSelector, fieldSelector}
|
action.ListRestrictions = ListRestrictions{labelSelector, fieldSelector}
|
||||||
|
|
||||||
return action
|
return action
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewListAction(resource unversioned.GroupVersionResource, namespace string, opts api.ListOptions) ListActionImpl {
|
func NewListAction(resource unversioned.GroupVersionResource, namespace string, opts interface{}) ListActionImpl {
|
||||||
action := ListActionImpl{}
|
action := ListActionImpl{}
|
||||||
action.Verb = "list"
|
action.Verb = "list"
|
||||||
action.Resource = resource
|
action.Resource = resource
|
||||||
action.Namespace = namespace
|
action.Namespace = namespace
|
||||||
labelSelector := opts.LabelSelector
|
labelSelector, fieldSelector, _ := ExtractFromListOptions(opts)
|
||||||
if labelSelector == nil {
|
|
||||||
labelSelector = labels.Everything()
|
|
||||||
}
|
|
||||||
fieldSelector := opts.FieldSelector
|
|
||||||
if fieldSelector == nil {
|
|
||||||
fieldSelector = fields.Everything()
|
|
||||||
}
|
|
||||||
action.ListRestrictions = ListRestrictions{labelSelector, fieldSelector}
|
action.ListRestrictions = ListRestrictions{labelSelector, fieldSelector}
|
||||||
|
|
||||||
return action
|
return action
|
||||||
@ -202,72 +190,73 @@ func NewDeleteAction(resource unversioned.GroupVersionResource, namespace, name
|
|||||||
return action
|
return action
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewRootDeleteCollectionAction(resource unversioned.GroupVersionResource, opts api.ListOptions) DeleteCollectionActionImpl {
|
func NewRootDeleteCollectionAction(resource unversioned.GroupVersionResource, opts interface{}) DeleteCollectionActionImpl {
|
||||||
action := DeleteCollectionActionImpl{}
|
action := DeleteCollectionActionImpl{}
|
||||||
action.Verb = "delete-collection"
|
action.Verb = "delete-collection"
|
||||||
action.Resource = resource
|
action.Resource = resource
|
||||||
labelSelector := opts.LabelSelector
|
labelSelector, fieldSelector, _ := ExtractFromListOptions(opts)
|
||||||
if labelSelector == nil {
|
|
||||||
labelSelector = labels.Everything()
|
|
||||||
}
|
|
||||||
fieldSelector := opts.FieldSelector
|
|
||||||
if fieldSelector == nil {
|
|
||||||
fieldSelector = fields.Everything()
|
|
||||||
}
|
|
||||||
action.ListRestrictions = ListRestrictions{labelSelector, fieldSelector}
|
action.ListRestrictions = ListRestrictions{labelSelector, fieldSelector}
|
||||||
|
|
||||||
return action
|
return action
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewDeleteCollectionAction(resource unversioned.GroupVersionResource, namespace string, opts api.ListOptions) DeleteCollectionActionImpl {
|
func NewDeleteCollectionAction(resource unversioned.GroupVersionResource, namespace string, opts interface{}) DeleteCollectionActionImpl {
|
||||||
action := DeleteCollectionActionImpl{}
|
action := DeleteCollectionActionImpl{}
|
||||||
action.Verb = "delete-collection"
|
action.Verb = "delete-collection"
|
||||||
action.Resource = resource
|
action.Resource = resource
|
||||||
action.Namespace = namespace
|
action.Namespace = namespace
|
||||||
labelSelector := opts.LabelSelector
|
labelSelector, fieldSelector, _ := ExtractFromListOptions(opts)
|
||||||
if labelSelector == nil {
|
|
||||||
labelSelector = labels.Everything()
|
|
||||||
}
|
|
||||||
fieldSelector := opts.FieldSelector
|
|
||||||
if fieldSelector == nil {
|
|
||||||
fieldSelector = fields.Everything()
|
|
||||||
}
|
|
||||||
action.ListRestrictions = ListRestrictions{labelSelector, fieldSelector}
|
action.ListRestrictions = ListRestrictions{labelSelector, fieldSelector}
|
||||||
|
|
||||||
return action
|
return action
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewRootWatchAction(resource unversioned.GroupVersionResource, opts api.ListOptions) WatchActionImpl {
|
func NewRootWatchAction(resource unversioned.GroupVersionResource, opts interface{}) WatchActionImpl {
|
||||||
action := WatchActionImpl{}
|
action := WatchActionImpl{}
|
||||||
action.Verb = "watch"
|
action.Verb = "watch"
|
||||||
action.Resource = resource
|
action.Resource = resource
|
||||||
labelSelector := opts.LabelSelector
|
labelSelector, fieldSelector, resourceVersion := ExtractFromListOptions(opts)
|
||||||
if labelSelector == nil {
|
action.WatchRestrictions = WatchRestrictions{labelSelector, fieldSelector, resourceVersion}
|
||||||
labelSelector = labels.Everything()
|
|
||||||
}
|
|
||||||
fieldSelector := opts.FieldSelector
|
|
||||||
if fieldSelector == nil {
|
|
||||||
fieldSelector = fields.Everything()
|
|
||||||
}
|
|
||||||
action.WatchRestrictions = WatchRestrictions{labelSelector, fieldSelector, opts.ResourceVersion}
|
|
||||||
|
|
||||||
return action
|
return action
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewWatchAction(resource unversioned.GroupVersionResource, namespace string, opts api.ListOptions) WatchActionImpl {
|
func ExtractFromListOptions(opts interface{}) (labelSelector labels.Selector, fieldSelector fields.Selector, resourceVersion string) {
|
||||||
|
var err error
|
||||||
|
switch t := opts.(type) {
|
||||||
|
case api.ListOptions:
|
||||||
|
labelSelector = t.LabelSelector
|
||||||
|
fieldSelector = t.FieldSelector
|
||||||
|
resourceVersion = t.ResourceVersion
|
||||||
|
case v1.ListOptions:
|
||||||
|
labelSelector, err = labels.Parse(t.LabelSelector)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
fieldSelector, err = fields.ParseSelector(t.FieldSelector)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
resourceVersion = t.ResourceVersion
|
||||||
|
default:
|
||||||
|
panic(fmt.Errorf("expect a ListOptions"))
|
||||||
|
}
|
||||||
|
if labelSelector == nil {
|
||||||
|
labelSelector = labels.Everything()
|
||||||
|
}
|
||||||
|
if fieldSelector == nil {
|
||||||
|
fieldSelector = fields.Everything()
|
||||||
|
}
|
||||||
|
return labelSelector, fieldSelector, resourceVersion
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewWatchAction(resource unversioned.GroupVersionResource, namespace string, opts interface{}) WatchActionImpl {
|
||||||
action := WatchActionImpl{}
|
action := WatchActionImpl{}
|
||||||
action.Verb = "watch"
|
action.Verb = "watch"
|
||||||
action.Resource = resource
|
action.Resource = resource
|
||||||
action.Namespace = namespace
|
action.Namespace = namespace
|
||||||
labelSelector := opts.LabelSelector
|
labelSelector, fieldSelector, resourceVersion := ExtractFromListOptions(opts)
|
||||||
if labelSelector == nil {
|
action.WatchRestrictions = WatchRestrictions{labelSelector, fieldSelector, resourceVersion}
|
||||||
labelSelector = labels.Everything()
|
|
||||||
}
|
|
||||||
fieldSelector := opts.FieldSelector
|
|
||||||
if fieldSelector == nil {
|
|
||||||
fieldSelector = fields.Everything()
|
|
||||||
}
|
|
||||||
action.WatchRestrictions = WatchRestrictions{labelSelector, fieldSelector, opts.ResourceVersion}
|
|
||||||
|
|
||||||
return action
|
return action
|
||||||
}
|
}
|
||||||
|
@ -24,12 +24,11 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_4"
|
fedclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5"
|
||||||
"k8s.io/kubernetes/pkg/api"
|
|
||||||
"k8s.io/kubernetes/pkg/api/errors"
|
"k8s.io/kubernetes/pkg/api/errors"
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
"k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
|
"k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
|
||||||
"k8s.io/kubernetes/pkg/client/clientset_generated/release_1_3"
|
kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
|
||||||
"k8s.io/kubernetes/pkg/util/intstr"
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
"k8s.io/kubernetes/pkg/util/wait"
|
"k8s.io/kubernetes/pkg/util/wait"
|
||||||
"k8s.io/kubernetes/test/e2e/framework"
|
"k8s.io/kubernetes/test/e2e/framework"
|
||||||
@ -55,10 +54,10 @@ var _ = framework.KubeDescribe("Federated ingresses [Feature:Federation]", func(
|
|||||||
AfterEach(func() {
|
AfterEach(func() {
|
||||||
nsName := f.FederationNamespace.Name
|
nsName := f.FederationNamespace.Name
|
||||||
// Delete registered ingresses.
|
// Delete registered ingresses.
|
||||||
ingressList, err := f.FederationClientset_1_4.Extensions().Ingresses(nsName).List(api.ListOptions{})
|
ingressList, err := f.FederationClientset_1_5.Extensions().Ingresses(nsName).List(v1.ListOptions{})
|
||||||
Expect(err).NotTo(HaveOccurred())
|
Expect(err).NotTo(HaveOccurred())
|
||||||
for _, ingress := range ingressList.Items {
|
for _, ingress := range ingressList.Items {
|
||||||
err := f.FederationClientset_1_4.Extensions().Ingresses(nsName).Delete(ingress.Name, &api.DeleteOptions{})
|
err := f.FederationClientset_1_5.Extensions().Ingresses(nsName).Delete(ingress.Name, &v1.DeleteOptions{})
|
||||||
Expect(err).NotTo(HaveOccurred())
|
Expect(err).NotTo(HaveOccurred())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -67,10 +66,10 @@ var _ = framework.KubeDescribe("Federated ingresses [Feature:Federation]", func(
|
|||||||
framework.SkipUnlessFederated(f.Client)
|
framework.SkipUnlessFederated(f.Client)
|
||||||
|
|
||||||
nsName := f.FederationNamespace.Name
|
nsName := f.FederationNamespace.Name
|
||||||
ingress := createIngressOrFail(f.FederationClientset_1_4, nsName)
|
ingress := createIngressOrFail(f.FederationClientset_1_5, nsName)
|
||||||
By(fmt.Sprintf("Creation of ingress %q in namespace %q succeeded. Deleting ingress.", ingress.Name, nsName))
|
By(fmt.Sprintf("Creation of ingress %q in namespace %q succeeded. Deleting ingress.", ingress.Name, nsName))
|
||||||
// Cleanup
|
// Cleanup
|
||||||
err := f.FederationClientset_1_4.Extensions().Ingresses(nsName).Delete(ingress.Name, &api.DeleteOptions{})
|
err := f.FederationClientset_1_5.Extensions().Ingresses(nsName).Delete(ingress.Name, &v1.DeleteOptions{})
|
||||||
framework.ExpectNoError(err, "Error deleting ingress %q in namespace %q", ingress.Name, ingress.Namespace)
|
framework.ExpectNoError(err, "Error deleting ingress %q in namespace %q", ingress.Name, ingress.Namespace)
|
||||||
By(fmt.Sprintf("Deletion of ingress %q in namespace %q succeeded.", ingress.Name, nsName))
|
By(fmt.Sprintf("Deletion of ingress %q in namespace %q succeeded.", ingress.Name, nsName))
|
||||||
})
|
})
|
||||||
@ -90,7 +89,7 @@ var _ = framework.KubeDescribe("Federated ingresses [Feature:Federation]", func(
|
|||||||
if federationName = os.Getenv("FEDERATION_NAME"); federationName == "" {
|
if federationName = os.Getenv("FEDERATION_NAME"); federationName == "" {
|
||||||
federationName = DefaultFederationName
|
federationName = DefaultFederationName
|
||||||
}
|
}
|
||||||
jig = newFederationTestJig(f.FederationClientset_1_4)
|
jig = newFederationTestJig(f.FederationClientset_1_5)
|
||||||
clusters = map[string]*cluster{}
|
clusters = map[string]*cluster{}
|
||||||
primaryClusterName = registerClusters(clusters, UserAgentName, federationName, f)
|
primaryClusterName = registerClusters(clusters, UserAgentName, federationName, f)
|
||||||
ns = f.FederationNamespace.Name
|
ns = f.FederationNamespace.Name
|
||||||
@ -101,15 +100,15 @@ var _ = framework.KubeDescribe("Federated ingresses [Feature:Federation]", func(
|
|||||||
})
|
})
|
||||||
|
|
||||||
It("should create and update matching ingresses in underlying clusters", func() {
|
It("should create and update matching ingresses in underlying clusters", func() {
|
||||||
ingress := createIngressOrFail(f.FederationClientset_1_4, ns)
|
ingress := createIngressOrFail(f.FederationClientset_1_5, ns)
|
||||||
defer func() { // Cleanup
|
defer func() { // Cleanup
|
||||||
By(fmt.Sprintf("Deleting ingress %q in namespace %q", ingress.Name, ns))
|
By(fmt.Sprintf("Deleting ingress %q in namespace %q", ingress.Name, ns))
|
||||||
err := f.FederationClientset_1_4.Ingresses(ns).Delete(ingress.Name, &api.DeleteOptions{})
|
err := f.FederationClientset_1_5.Ingresses(ns).Delete(ingress.Name, &v1.DeleteOptions{})
|
||||||
framework.ExpectNoError(err, "Error deleting ingress %q in namespace %q", ingress.Name, ns)
|
framework.ExpectNoError(err, "Error deleting ingress %q in namespace %q", ingress.Name, ns)
|
||||||
}()
|
}()
|
||||||
// wait for ingress shards being created
|
// wait for ingress shards being created
|
||||||
waitForIngressShardsOrFail(ns, ingress, clusters)
|
waitForIngressShardsOrFail(ns, ingress, clusters)
|
||||||
ingress = updateIngressOrFail(f.FederationClientset_1_4, ns)
|
ingress = updateIngressOrFail(f.FederationClientset_1_5, ns)
|
||||||
waitForIngressShardsUpdatedOrFail(ns, ingress, clusters)
|
waitForIngressShardsUpdatedOrFail(ns, ingress, clusters)
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -124,9 +123,9 @@ var _ = framework.KubeDescribe("Federated ingresses [Feature:Federation]", func(
|
|||||||
// create backend pod
|
// create backend pod
|
||||||
createBackendPodsOrFail(clusters, ns, FederatedIngressServicePodName)
|
createBackendPodsOrFail(clusters, ns, FederatedIngressServicePodName)
|
||||||
// create backend service
|
// create backend service
|
||||||
service = createServiceOrFail(f.FederationClientset_1_4, ns, FederatedIngressServiceName)
|
service = createServiceOrFail(f.FederationClientset_1_5, ns, FederatedIngressServiceName)
|
||||||
// create ingress object
|
// create ingress object
|
||||||
jig.ing = createIngressOrFail(f.FederationClientset_1_4, ns)
|
jig.ing = createIngressOrFail(f.FederationClientset_1_5, ns)
|
||||||
// wait for services objects sync
|
// wait for services objects sync
|
||||||
waitForServiceShardsOrFail(ns, service, clusters)
|
waitForServiceShardsOrFail(ns, service, clusters)
|
||||||
// wait for ingress objects sync
|
// wait for ingress objects sync
|
||||||
@ -136,14 +135,14 @@ var _ = framework.KubeDescribe("Federated ingresses [Feature:Federation]", func(
|
|||||||
AfterEach(func() {
|
AfterEach(func() {
|
||||||
deleteBackendPodsOrFail(clusters, ns)
|
deleteBackendPodsOrFail(clusters, ns)
|
||||||
if service != nil {
|
if service != nil {
|
||||||
deleteServiceOrFail(f.FederationClientset_1_4, ns, service.Name)
|
deleteServiceOrFail(f.FederationClientset_1_5, ns, service.Name)
|
||||||
cleanupServiceShardsAndProviderResources(ns, service, clusters)
|
cleanupServiceShardsAndProviderResources(ns, service, clusters)
|
||||||
service = nil
|
service = nil
|
||||||
} else {
|
} else {
|
||||||
By("No service to delete. Service is nil")
|
By("No service to delete. Service is nil")
|
||||||
}
|
}
|
||||||
if jig.ing != nil {
|
if jig.ing != nil {
|
||||||
deleteIngressOrFail(f.FederationClientset_1_4, ns, jig.ing.Name)
|
deleteIngressOrFail(f.FederationClientset_1_5, ns, jig.ing.Name)
|
||||||
jig.ing = nil
|
jig.ing = nil
|
||||||
} else {
|
} else {
|
||||||
By("No ingress to delete. Ingress is nil")
|
By("No ingress to delete. Ingress is nil")
|
||||||
@ -186,7 +185,7 @@ func equivalentIngress(federatedIngress, clusterIngress v1beta1.Ingress) bool {
|
|||||||
waitForIngressOrFail waits until a ingress is either present or absent in the cluster specified by clientset.
|
waitForIngressOrFail waits until a ingress is either present or absent in the cluster specified by clientset.
|
||||||
If the condition is not met within timout, it fails the calling test.
|
If the condition is not met within timout, it fails the calling test.
|
||||||
*/
|
*/
|
||||||
func waitForIngressOrFail(clientset *release_1_3.Clientset, namespace string, ingress *v1beta1.Ingress, present bool, timeout time.Duration) {
|
func waitForIngressOrFail(clientset *kubeclientset.Clientset, namespace string, ingress *v1beta1.Ingress, present bool, timeout time.Duration) {
|
||||||
By(fmt.Sprintf("Fetching a federated ingress shard of ingress %q in namespace %q from cluster", ingress.Name, namespace))
|
By(fmt.Sprintf("Fetching a federated ingress shard of ingress %q in namespace %q from cluster", ingress.Name, namespace))
|
||||||
var clusterIngress *v1beta1.Ingress
|
var clusterIngress *v1beta1.Ingress
|
||||||
err := wait.PollImmediate(framework.Poll, timeout, func() (bool, error) {
|
err := wait.PollImmediate(framework.Poll, timeout, func() (bool, error) {
|
||||||
@ -233,7 +232,7 @@ func waitForIngressShardsUpdatedOrFail(namespace string, ingress *v1beta1.Ingres
|
|||||||
waitForIngressUpdateOrFail waits until a ingress is updated in the specified cluster with same spec of federated ingress.
|
waitForIngressUpdateOrFail waits until a ingress is updated in the specified cluster with same spec of federated ingress.
|
||||||
If the condition is not met within timeout, it fails the calling test.
|
If the condition is not met within timeout, it fails the calling test.
|
||||||
*/
|
*/
|
||||||
func waitForIngressUpdateOrFail(clientset *release_1_3.Clientset, namespace string, ingress *v1beta1.Ingress, timeout time.Duration) {
|
func waitForIngressUpdateOrFail(clientset *kubeclientset.Clientset, namespace string, ingress *v1beta1.Ingress, timeout time.Duration) {
|
||||||
By(fmt.Sprintf("Fetching a federated ingress shard of ingress %q in namespace %q from cluster", ingress.Name, namespace))
|
By(fmt.Sprintf("Fetching a federated ingress shard of ingress %q in namespace %q from cluster", ingress.Name, namespace))
|
||||||
err := wait.PollImmediate(framework.Poll, timeout, func() (bool, error) {
|
err := wait.PollImmediate(framework.Poll, timeout, func() (bool, error) {
|
||||||
clusterIngress, err := clientset.Ingresses(namespace).Get(ingress.Name)
|
clusterIngress, err := clientset.Ingresses(namespace).Get(ingress.Name)
|
||||||
@ -261,15 +260,15 @@ func waitForIngressShardsGoneOrFail(namespace string, ingress *v1beta1.Ingress,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func deleteIngressOrFail(clientset *federation_release_1_4.Clientset, namespace string, ingressName string) {
|
func deleteIngressOrFail(clientset *fedclientset.Clientset, namespace string, ingressName string) {
|
||||||
if clientset == nil || len(namespace) == 0 || len(ingressName) == 0 {
|
if clientset == nil || len(namespace) == 0 || len(ingressName) == 0 {
|
||||||
Fail(fmt.Sprintf("Internal error: invalid parameters passed to deleteIngressOrFail: clientset: %v, namespace: %v, ingress: %v", clientset, namespace, ingressName))
|
Fail(fmt.Sprintf("Internal error: invalid parameters passed to deleteIngressOrFail: clientset: %v, namespace: %v, ingress: %v", clientset, namespace, ingressName))
|
||||||
}
|
}
|
||||||
err := clientset.Ingresses(namespace).Delete(ingressName, api.NewDeleteOptions(0))
|
err := clientset.Ingresses(namespace).Delete(ingressName, v1.NewDeleteOptions(0))
|
||||||
framework.ExpectNoError(err, "Error deleting ingress %q from namespace %q", ingressName, namespace)
|
framework.ExpectNoError(err, "Error deleting ingress %q from namespace %q", ingressName, namespace)
|
||||||
}
|
}
|
||||||
|
|
||||||
func createIngressOrFail(clientset *federation_release_1_4.Clientset, namespace string) *v1beta1.Ingress {
|
func createIngressOrFail(clientset *fedclientset.Clientset, namespace string) *v1beta1.Ingress {
|
||||||
if clientset == nil || len(namespace) == 0 {
|
if clientset == nil || len(namespace) == 0 {
|
||||||
Fail(fmt.Sprintf("Internal error: invalid parameters passed to createIngressOrFail: clientset: %v, namespace: %v", clientset, namespace))
|
Fail(fmt.Sprintf("Internal error: invalid parameters passed to createIngressOrFail: clientset: %v, namespace: %v", clientset, namespace))
|
||||||
}
|
}
|
||||||
@ -293,7 +292,7 @@ func createIngressOrFail(clientset *federation_release_1_4.Clientset, namespace
|
|||||||
return newIng
|
return newIng
|
||||||
}
|
}
|
||||||
|
|
||||||
func updateIngressOrFail(clientset *federation_release_1_4.Clientset, namespace string) (newIng *v1beta1.Ingress) {
|
func updateIngressOrFail(clientset *fedclientset.Clientset, namespace string) (newIng *v1beta1.Ingress) {
|
||||||
var err error
|
var err error
|
||||||
if clientset == nil || len(namespace) == 0 {
|
if clientset == nil || len(namespace) == 0 {
|
||||||
Fail(fmt.Sprintf("Internal error: invalid parameters passed to createIngressOrFail: clientset: %v, namespace: %v", clientset, namespace))
|
Fail(fmt.Sprintf("Internal error: invalid parameters passed to createIngressOrFail: clientset: %v, namespace: %v", clientset, namespace))
|
||||||
@ -354,15 +353,15 @@ type federationTestJig struct {
|
|||||||
rootCAs map[string][]byte
|
rootCAs map[string][]byte
|
||||||
address string
|
address string
|
||||||
ing *v1beta1.Ingress
|
ing *v1beta1.Ingress
|
||||||
client *federation_release_1_4.Clientset
|
client *fedclientset.Clientset
|
||||||
}
|
}
|
||||||
|
|
||||||
func newFederationTestJig(c *federation_release_1_4.Clientset) *federationTestJig {
|
func newFederationTestJig(c *fedclientset.Clientset) *federationTestJig {
|
||||||
return &federationTestJig{client: c, rootCAs: map[string][]byte{}}
|
return &federationTestJig{client: c, rootCAs: map[string][]byte{}}
|
||||||
}
|
}
|
||||||
|
|
||||||
// WaitForFederatedIngressAddress waits for the Ingress to acquire an address.
|
// WaitForFederatedIngressAddress waits for the Ingress to acquire an address.
|
||||||
func waitForFederatedIngressAddress(c *federation_release_1_4.Clientset, ns, ingName string, timeout time.Duration) (string, error) {
|
func waitForFederatedIngressAddress(c *fedclientset.Clientset, ns, ingName string, timeout time.Duration) (string, error) {
|
||||||
var address string
|
var address string
|
||||||
err := wait.PollImmediate(10*time.Second, timeout, func() (bool, error) {
|
err := wait.PollImmediate(10*time.Second, timeout, func() (bool, error) {
|
||||||
ipOrNameList, err := getFederatedIngressAddress(c, ns, ingName)
|
ipOrNameList, err := getFederatedIngressAddress(c, ns, ingName)
|
||||||
@ -377,7 +376,7 @@ func waitForFederatedIngressAddress(c *federation_release_1_4.Clientset, ns, ing
|
|||||||
}
|
}
|
||||||
|
|
||||||
// waitForFederatedIngressExists waits for the Ingress object exists.
|
// waitForFederatedIngressExists waits for the Ingress object exists.
|
||||||
func waitForFederatedIngressExists(c *federation_release_1_4.Clientset, ns, ingName string, timeout time.Duration) error {
|
func waitForFederatedIngressExists(c *fedclientset.Clientset, ns, ingName string, timeout time.Duration) error {
|
||||||
err := wait.PollImmediate(10*time.Second, timeout, func() (bool, error) {
|
err := wait.PollImmediate(10*time.Second, timeout, func() (bool, error) {
|
||||||
_, err := c.Extensions().Ingresses(ns).Get(ingName)
|
_, err := c.Extensions().Ingresses(ns).Get(ingName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -390,7 +389,7 @@ func waitForFederatedIngressExists(c *federation_release_1_4.Clientset, ns, ingN
|
|||||||
}
|
}
|
||||||
|
|
||||||
// getFederatedIngressAddress returns the ips/hostnames associated with the Ingress.
|
// getFederatedIngressAddress returns the ips/hostnames associated with the Ingress.
|
||||||
func getFederatedIngressAddress(client *federation_release_1_4.Clientset, ns, name string) ([]string, error) {
|
func getFederatedIngressAddress(client *fedclientset.Clientset, ns, name string) ([]string, error) {
|
||||||
ing, err := client.Extensions().Ingresses(ns).Get(name)
|
ing, err := client.Extensions().Ingresses(ns).Get(name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
@ -58,8 +58,8 @@ var _ = framework.KubeDescribe("Federation namespace [Feature:Federation]", func
|
|||||||
AfterEach(func() {
|
AfterEach(func() {
|
||||||
framework.SkipUnlessFederated(f.Client)
|
framework.SkipUnlessFederated(f.Client)
|
||||||
deleteAllTestNamespaces(
|
deleteAllTestNamespaces(
|
||||||
f.FederationClientset_1_4.Core().Namespaces().List,
|
f.FederationClientset_1_5.Core().Namespaces().List,
|
||||||
f.FederationClientset_1_4.Core().Namespaces().Delete)
|
f.FederationClientset_1_5.Core().Namespaces().Delete)
|
||||||
for _, cluster := range clusters {
|
for _, cluster := range clusters {
|
||||||
deleteAllTestNamespaces(
|
deleteAllTestNamespaces(
|
||||||
cluster.Core().Namespaces().List,
|
cluster.Core().Namespaces().List,
|
||||||
@ -77,7 +77,7 @@ var _ = framework.KubeDescribe("Federation namespace [Feature:Federation]", func
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
By(fmt.Sprintf("Creating namespace %s", ns.Name))
|
By(fmt.Sprintf("Creating namespace %s", ns.Name))
|
||||||
_, err := f.FederationClientset_1_4.Core().Namespaces().Create(&ns)
|
_, err := f.FederationClientset_1_5.Core().Namespaces().Create(&ns)
|
||||||
framework.ExpectNoError(err, "Failed to create namespace %s", ns.Name)
|
framework.ExpectNoError(err, "Failed to create namespace %s", ns.Name)
|
||||||
|
|
||||||
// Check subclusters if the namespace was created there.
|
// Check subclusters if the namespace was created there.
|
||||||
@ -96,21 +96,21 @@ var _ = framework.KubeDescribe("Federation namespace [Feature:Federation]", func
|
|||||||
framework.ExpectNoError(err, "Not all namespaces created")
|
framework.ExpectNoError(err, "Not all namespaces created")
|
||||||
|
|
||||||
deleteAllTestNamespaces(
|
deleteAllTestNamespaces(
|
||||||
f.FederationClientset_1_4.Core().Namespaces().List,
|
f.FederationClientset_1_5.Core().Namespaces().List,
|
||||||
f.FederationClientset_1_4.Core().Namespaces().Delete)
|
f.FederationClientset_1_5.Core().Namespaces().Delete)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
func deleteAllTestNamespaces(lister func(api.ListOptions) (*api_v1.NamespaceList, error), deleter func(string, *api.DeleteOptions) error) {
|
func deleteAllTestNamespaces(lister func(api_v1.ListOptions) (*api_v1.NamespaceList, error), deleter func(string, *api_v1.DeleteOptions) error) {
|
||||||
list, err := lister(api.ListOptions{})
|
list, err := lister(api_v1.ListOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
framework.Failf("Failed to get all namespaes: %v", err)
|
framework.Failf("Failed to get all namespaes: %v", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
for _, namespace := range list.Items {
|
for _, namespace := range list.Items {
|
||||||
if strings.HasPrefix(namespace.Name, namespacePrefix) {
|
if strings.HasPrefix(namespace.Name, namespacePrefix) {
|
||||||
err := deleter(namespace.Name, &api.DeleteOptions{})
|
err := deleter(namespace.Name, &api_v1.DeleteOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
framework.Failf("Failed to set %s for deletion: %v", namespace.Name, err)
|
framework.Failf("Failed to set %s for deletion: %v", namespace.Name, err)
|
||||||
}
|
}
|
||||||
@ -119,9 +119,9 @@ func deleteAllTestNamespaces(lister func(api.ListOptions) (*api_v1.NamespaceList
|
|||||||
waitForNoTestNamespaces(lister)
|
waitForNoTestNamespaces(lister)
|
||||||
}
|
}
|
||||||
|
|
||||||
func waitForNoTestNamespaces(lister func(api.ListOptions) (*api_v1.NamespaceList, error)) {
|
func waitForNoTestNamespaces(lister func(api_v1.ListOptions) (*api_v1.NamespaceList, error)) {
|
||||||
err := wait.Poll(5*time.Second, 2*time.Minute, func() (bool, error) {
|
err := wait.Poll(5*time.Second, 2*time.Minute, func() (bool, error) {
|
||||||
list, err := lister(api.ListOptions{})
|
list, err := lister(api_v1.ListOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
|
@ -22,12 +22,11 @@ import (
|
|||||||
|
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
"k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_4"
|
fedclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5"
|
||||||
"k8s.io/kubernetes/federation/pkg/federation-controller/util"
|
"k8s.io/kubernetes/federation/pkg/federation-controller/util"
|
||||||
"k8s.io/kubernetes/pkg/api"
|
|
||||||
"k8s.io/kubernetes/pkg/api/errors"
|
"k8s.io/kubernetes/pkg/api/errors"
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
"k8s.io/kubernetes/pkg/client/clientset_generated/release_1_3"
|
kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
|
||||||
"k8s.io/kubernetes/pkg/util/wait"
|
"k8s.io/kubernetes/pkg/util/wait"
|
||||||
"k8s.io/kubernetes/test/e2e/framework"
|
"k8s.io/kubernetes/test/e2e/framework"
|
||||||
)
|
)
|
||||||
@ -60,22 +59,21 @@ var _ = framework.KubeDescribe("Federation secrets [Feature:Federation12]", func
|
|||||||
It("should be created and deleted successfully", func() {
|
It("should be created and deleted successfully", func() {
|
||||||
framework.SkipUnlessFederated(f.Client)
|
framework.SkipUnlessFederated(f.Client)
|
||||||
nsName := f.FederationNamespace.Name
|
nsName := f.FederationNamespace.Name
|
||||||
secret := createSecretOrFail(f.FederationClientset_1_4, nsName)
|
secret := createSecretOrFail(f.FederationClientset_1_5, nsName)
|
||||||
|
|
||||||
defer func() { // Cleanup
|
defer func() { // Cleanup
|
||||||
By(fmt.Sprintf("Deleting secret %q in namespace %q", secret.Name, nsName))
|
By(fmt.Sprintf("Deleting secret %q in namespace %q", secret.Name, nsName))
|
||||||
err := f.FederationClientset_1_4.Core().Secrets(nsName).Delete(secret.Name, &api.DeleteOptions{})
|
err := f.FederationClientset_1_5.Core().Secrets(nsName).Delete(secret.Name, &v1.DeleteOptions{})
|
||||||
framework.ExpectNoError(err, "Error deleting secret %q in namespace %q", secret.Name, nsName)
|
framework.ExpectNoError(err, "Error deleting secret %q in namespace %q", secret.Name, nsName)
|
||||||
}()
|
}()
|
||||||
// wait for secret shards being created
|
// wait for secret shards being created
|
||||||
waitForSecretShardsOrFail(nsName, secret, clusters)
|
waitForSecretShardsOrFail(nsName, secret, clusters)
|
||||||
secret = updateSecretOrFail(f.FederationClientset_1_4, nsName)
|
secret = updateSecretOrFail(f.FederationClientset_1_5, nsName)
|
||||||
waitForSecretShardsUpdatedOrFail(nsName, secret, clusters)
|
waitForSecretShardsUpdatedOrFail(nsName, secret, clusters)
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
func createSecretOrFail(clientset *federation_release_1_4.Clientset, namespace string) *v1.Secret {
|
func createSecretOrFail(clientset *fedclientset.Clientset, namespace string) *v1.Secret {
|
||||||
if clientset == nil || len(namespace) == 0 {
|
if clientset == nil || len(namespace) == 0 {
|
||||||
Fail(fmt.Sprintf("Internal error: invalid parameters passed to createSecretOrFail: clientset: %v, namespace: %v", clientset, namespace))
|
Fail(fmt.Sprintf("Internal error: invalid parameters passed to createSecretOrFail: clientset: %v, namespace: %v", clientset, namespace))
|
||||||
}
|
}
|
||||||
@ -92,7 +90,7 @@ func createSecretOrFail(clientset *federation_release_1_4.Clientset, namespace s
|
|||||||
return secret
|
return secret
|
||||||
}
|
}
|
||||||
|
|
||||||
func updateSecretOrFail(clientset *federation_release_1_4.Clientset, namespace string) *v1.Secret {
|
func updateSecretOrFail(clientset *fedclientset.Clientset, namespace string) *v1.Secret {
|
||||||
if clientset == nil || len(namespace) == 0 {
|
if clientset == nil || len(namespace) == 0 {
|
||||||
Fail(fmt.Sprintf("Internal error: invalid parameters passed to updateSecretOrFail: clientset: %v, namespace: %v", clientset, namespace))
|
Fail(fmt.Sprintf("Internal error: invalid parameters passed to updateSecretOrFail: clientset: %v, namespace: %v", clientset, namespace))
|
||||||
}
|
}
|
||||||
@ -127,7 +125,7 @@ func waitForSecretShardsOrFail(namespace string, secret *v1.Secret, clusters map
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func waitForSecretOrFail(clientset *release_1_3.Clientset, namespace string, secret *v1.Secret, present bool, timeout time.Duration) {
|
func waitForSecretOrFail(clientset *kubeclientset.Clientset, namespace string, secret *v1.Secret, present bool, timeout time.Duration) {
|
||||||
By(fmt.Sprintf("Fetching a federated secret shard of secret %q in namespace %q from cluster", secret.Name, namespace))
|
By(fmt.Sprintf("Fetching a federated secret shard of secret %q in namespace %q from cluster", secret.Name, namespace))
|
||||||
var clusterSecret *v1.Secret
|
var clusterSecret *v1.Secret
|
||||||
err := wait.PollImmediate(framework.Poll, timeout, func() (bool, error) {
|
err := wait.PollImmediate(framework.Poll, timeout, func() (bool, error) {
|
||||||
@ -157,7 +155,7 @@ func waitForSecretShardsUpdatedOrFail(namespace string, secret *v1.Secret, clust
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func waitForSecretUpdateOrFail(clientset *release_1_3.Clientset, namespace string, secret *v1.Secret, timeout time.Duration) {
|
func waitForSecretUpdateOrFail(clientset *kubeclientset.Clientset, namespace string, secret *v1.Secret, timeout time.Duration) {
|
||||||
By(fmt.Sprintf("Fetching a federated secret shard of secret %q in namespace %q from cluster", secret.Name, namespace))
|
By(fmt.Sprintf("Fetching a federated secret shard of secret %q in namespace %q from cluster", secret.Name, namespace))
|
||||||
err := wait.PollImmediate(framework.Poll, timeout, func() (bool, error) {
|
err := wait.PollImmediate(framework.Poll, timeout, func() (bool, error) {
|
||||||
clusterSecret, err := clientset.Core().Secrets(namespace).Get(secret.Name)
|
clusterSecret, err := clientset.Core().Secrets(namespace).Get(secret.Name)
|
||||||
|
@ -23,7 +23,6 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
"k8s.io/kubernetes/test/e2e/framework"
|
"k8s.io/kubernetes/test/e2e/framework"
|
||||||
|
|
||||||
@ -90,11 +89,11 @@ var _ = framework.KubeDescribe("[Feature:Federation]", func() {
|
|||||||
framework.SkipUnlessFederated(f.Client)
|
framework.SkipUnlessFederated(f.Client)
|
||||||
|
|
||||||
nsName = f.FederationNamespace.Name
|
nsName = f.FederationNamespace.Name
|
||||||
service = createServiceOrFail(f.FederationClientset_1_4, nsName, FederatedServiceName)
|
service = createServiceOrFail(f.FederationClientset_1_5, nsName, FederatedServiceName)
|
||||||
By(fmt.Sprintf("Creation of service %q in namespace %q succeeded. Deleting service.", service.Name, nsName))
|
By(fmt.Sprintf("Creation of service %q in namespace %q succeeded. Deleting service.", service.Name, nsName))
|
||||||
|
|
||||||
// Cleanup
|
// Cleanup
|
||||||
err := f.FederationClientset_1_4.Services(nsName).Delete(service.Name, &api.DeleteOptions{})
|
err := f.FederationClientset_1_5.Services(nsName).Delete(service.Name, &v1.DeleteOptions{})
|
||||||
framework.ExpectNoError(err, "Error deleting service %q in namespace %q", service.Name, service.Namespace)
|
framework.ExpectNoError(err, "Error deleting service %q in namespace %q", service.Name, service.Namespace)
|
||||||
By(fmt.Sprintf("Deletion of service %q in namespace %q succeeded.", service.Name, nsName))
|
By(fmt.Sprintf("Deletion of service %q in namespace %q succeeded.", service.Name, nsName))
|
||||||
})
|
})
|
||||||
@ -103,10 +102,10 @@ var _ = framework.KubeDescribe("[Feature:Federation]", func() {
|
|||||||
framework.SkipUnlessFederated(f.Client)
|
framework.SkipUnlessFederated(f.Client)
|
||||||
|
|
||||||
nsName = f.FederationNamespace.Name
|
nsName = f.FederationNamespace.Name
|
||||||
service = createServiceOrFail(f.FederationClientset_1_4, nsName, FederatedServiceName)
|
service = createServiceOrFail(f.FederationClientset_1_5, nsName, FederatedServiceName)
|
||||||
defer func() { // Cleanup
|
defer func() { // Cleanup
|
||||||
By(fmt.Sprintf("Deleting service %q in namespace %q", service.Name, nsName))
|
By(fmt.Sprintf("Deleting service %q in namespace %q", service.Name, nsName))
|
||||||
err := f.FederationClientset_1_4.Services(nsName).Delete(service.Name, &api.DeleteOptions{})
|
err := f.FederationClientset_1_5.Services(nsName).Delete(service.Name, &v1.DeleteOptions{})
|
||||||
framework.ExpectNoError(err, "Error deleting service %q in namespace %q", service.Name, nsName)
|
framework.ExpectNoError(err, "Error deleting service %q in namespace %q", service.Name, nsName)
|
||||||
}()
|
}()
|
||||||
waitForServiceShardsOrFail(nsName, service, clusters)
|
waitForServiceShardsOrFail(nsName, service, clusters)
|
||||||
@ -124,7 +123,7 @@ var _ = framework.KubeDescribe("[Feature:Federation]", func() {
|
|||||||
|
|
||||||
nsName := f.FederationNamespace.Name
|
nsName := f.FederationNamespace.Name
|
||||||
createBackendPodsOrFail(clusters, nsName, FederatedServicePodName)
|
createBackendPodsOrFail(clusters, nsName, FederatedServicePodName)
|
||||||
service = createServiceOrFail(f.FederationClientset_1_4, nsName, FederatedServiceName)
|
service = createServiceOrFail(f.FederationClientset_1_5, nsName, FederatedServiceName)
|
||||||
waitForServiceShardsOrFail(nsName, service, clusters)
|
waitForServiceShardsOrFail(nsName, service, clusters)
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -135,7 +134,7 @@ var _ = framework.KubeDescribe("[Feature:Federation]", func() {
|
|||||||
deleteBackendPodsOrFail(clusters, nsName)
|
deleteBackendPodsOrFail(clusters, nsName)
|
||||||
|
|
||||||
if service != nil {
|
if service != nil {
|
||||||
deleteServiceOrFail(f.FederationClientset_1_4, nsName, service.Name)
|
deleteServiceOrFail(f.FederationClientset_1_5, nsName, service.Name)
|
||||||
|
|
||||||
By(fmt.Sprintf("Deleting service shards and their provider resources in underlying clusters for service %q in namespace %q", service.Name, nsName))
|
By(fmt.Sprintf("Deleting service shards and their provider resources in underlying clusters for service %q in namespace %q", service.Name, nsName))
|
||||||
cleanupServiceShardsAndProviderResources(nsName, service, clusters)
|
cleanupServiceShardsAndProviderResources(nsName, service, clusters)
|
||||||
|
@ -22,8 +22,7 @@ import (
|
|||||||
|
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
federationapi "k8s.io/kubernetes/federation/apis/federation/v1beta1"
|
federationapi "k8s.io/kubernetes/federation/apis/federation/v1beta1"
|
||||||
"k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_4"
|
"k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5"
|
||||||
"k8s.io/kubernetes/pkg/api"
|
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
"k8s.io/kubernetes/pkg/util/wait"
|
"k8s.io/kubernetes/pkg/util/wait"
|
||||||
"k8s.io/kubernetes/test/e2e/framework"
|
"k8s.io/kubernetes/test/e2e/framework"
|
||||||
@ -41,10 +40,10 @@ var _ = framework.KubeDescribe("Federation apiserver [Feature:Federation]", func
|
|||||||
|
|
||||||
// Delete registered clusters.
|
// Delete registered clusters.
|
||||||
// This is if a test failed, it should not affect other tests.
|
// This is if a test failed, it should not affect other tests.
|
||||||
clusterList, err := f.FederationClientset_1_4.Federation().Clusters().List(api.ListOptions{})
|
clusterList, err := f.FederationClientset_1_5.Federation().Clusters().List(v1.ListOptions{})
|
||||||
Expect(err).NotTo(HaveOccurred())
|
Expect(err).NotTo(HaveOccurred())
|
||||||
for _, cluster := range clusterList.Items {
|
for _, cluster := range clusterList.Items {
|
||||||
err := f.FederationClientset_1_4.Federation().Clusters().Delete(cluster.Name, &api.DeleteOptions{})
|
err := f.FederationClientset_1_5.Federation().Clusters().Delete(cluster.Name, &v1.DeleteOptions{})
|
||||||
Expect(err).NotTo(HaveOccurred())
|
Expect(err).NotTo(HaveOccurred())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -69,14 +68,14 @@ var _ = framework.KubeDescribe("Federation apiserver [Feature:Federation]", func
|
|||||||
framework.Logf("Deleting %d clusters", len(contexts))
|
framework.Logf("Deleting %d clusters", len(contexts))
|
||||||
for _, context := range contexts {
|
for _, context := range contexts {
|
||||||
framework.Logf("Deleting cluster object: %s (%s, secret: %s)", context.Name, context.Cluster.Cluster.Server, context.Name)
|
framework.Logf("Deleting cluster object: %s (%s, secret: %s)", context.Name, context.Cluster.Cluster.Server, context.Name)
|
||||||
err := f.FederationClientset_1_4.Federation().Clusters().Delete(context.Name, &api.DeleteOptions{})
|
err := f.FederationClientset_1_5.Federation().Clusters().Delete(context.Name, &v1.DeleteOptions{})
|
||||||
framework.ExpectNoError(err, fmt.Sprintf("unexpected error in deleting cluster %s: %+v", context.Name, err))
|
framework.ExpectNoError(err, fmt.Sprintf("unexpected error in deleting cluster %s: %+v", context.Name, err))
|
||||||
framework.Logf("Successfully deleted cluster object: %s (%s, secret: %s)", context.Name, context.Cluster.Cluster.Server, context.Name)
|
framework.Logf("Successfully deleted cluster object: %s (%s, secret: %s)", context.Name, context.Cluster.Cluster.Server, context.Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
// There should not be any remaining cluster.
|
// There should not be any remaining cluster.
|
||||||
framework.Logf("Verifying that zero clusters remain")
|
framework.Logf("Verifying that zero clusters remain")
|
||||||
clusterList, err := f.FederationClientset_1_4.Federation().Clusters().List(api.ListOptions{})
|
clusterList, err := f.FederationClientset_1_5.Federation().Clusters().List(v1.ListOptions{})
|
||||||
Expect(err).NotTo(HaveOccurred())
|
Expect(err).NotTo(HaveOccurred())
|
||||||
if len(clusterList.Items) != 0 {
|
if len(clusterList.Items) != 0 {
|
||||||
framework.Failf("there should not have been any remaining clusters. Found: %+v", clusterList)
|
framework.Failf("there should not have been any remaining clusters. Found: %+v", clusterList)
|
||||||
@ -95,7 +94,7 @@ var _ = framework.KubeDescribe("Federation apiserver [Feature:Federation]", func
|
|||||||
// Creating a service in a non-existing namespace should fail.
|
// Creating a service in a non-existing namespace should fail.
|
||||||
svcNamespace := "federation-admission-test-ns"
|
svcNamespace := "federation-admission-test-ns"
|
||||||
svcName := "myns"
|
svcName := "myns"
|
||||||
clientset := f.FederationClientset_1_4
|
clientset := f.FederationClientset_1_5
|
||||||
framework.Logf("Trying to create service %s in namespace %s, expect to get error", svcName, svcNamespace)
|
framework.Logf("Trying to create service %s in namespace %s, expect to get error", svcName, svcNamespace)
|
||||||
if _, err := clientset.Core().Services(svcNamespace).Create(newService(svcName, svcNamespace)); err == nil {
|
if _, err := clientset.Core().Services(svcNamespace).Create(newService(svcName, svcNamespace)); err == nil {
|
||||||
framework.Failf("Expected to get an error while creating a service in a non-existing namespace")
|
framework.Failf("Expected to get an error while creating a service in a non-existing namespace")
|
||||||
@ -123,7 +122,7 @@ func newService(name, namespace string) *v1.Service {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Verify that the cluster is marked ready.
|
// Verify that the cluster is marked ready.
|
||||||
func isReady(clusterName string, clientset *federation_release_1_4.Clientset) error {
|
func isReady(clusterName string, clientset *federation_release_1_5.Clientset) error {
|
||||||
return wait.PollImmediate(time.Second, 5*time.Minute, func() (bool, error) {
|
return wait.PollImmediate(time.Second, 5*time.Minute, func() (bool, error) {
|
||||||
c, err := clientset.Federation().Clusters().Get(clusterName)
|
c, err := clientset.Federation().Clusters().Get(clusterName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -19,7 +19,7 @@ package e2e
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_4"
|
"k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5"
|
||||||
"k8s.io/kubernetes/pkg/api/errors"
|
"k8s.io/kubernetes/pkg/api/errors"
|
||||||
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
|
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
|
||||||
clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
|
clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
|
||||||
@ -41,8 +41,8 @@ var _ = framework.KubeDescribe("[Feature:Federation]", func() {
|
|||||||
framework.SkipUnlessFederated(f.Client)
|
framework.SkipUnlessFederated(f.Client)
|
||||||
|
|
||||||
nsName := f.FederationNamespace.Name
|
nsName := f.FederationNamespace.Name
|
||||||
svc := createServiceOrFail(f.FederationClientset_1_4, nsName, FederatedServiceName)
|
svc := createServiceOrFail(f.FederationClientset_1_5, nsName, FederatedServiceName)
|
||||||
deleteServiceOrFail(f.FederationClientset_1_4, nsName, svc.Name)
|
deleteServiceOrFail(f.FederationClientset_1_5, nsName, svc.Name)
|
||||||
})
|
})
|
||||||
|
|
||||||
It("should not accept cluster resources when the client has invalid authentication credentials", func() {
|
It("should not accept cluster resources when the client has invalid authentication credentials", func() {
|
||||||
@ -82,7 +82,7 @@ var _ = framework.KubeDescribe("[Feature:Federation]", func() {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
func invalidAuthFederationClientSet(user *framework.KubeUser) (*federation_release_1_4.Clientset, error) {
|
func invalidAuthFederationClientSet(user *framework.KubeUser) (*federation_release_1_5.Clientset, error) {
|
||||||
overrides := &clientcmd.ConfigOverrides{}
|
overrides := &clientcmd.ConfigOverrides{}
|
||||||
if user != nil {
|
if user != nil {
|
||||||
overrides = &clientcmd.ConfigOverrides{
|
overrides = &clientcmd.ConfigOverrides{
|
||||||
@ -105,7 +105,7 @@ func invalidAuthFederationClientSet(user *framework.KubeUser) (*federation_relea
|
|||||||
config.Username = ""
|
config.Username = ""
|
||||||
}
|
}
|
||||||
|
|
||||||
c, err := federation_release_1_4.NewForConfig(config)
|
c, err := federation_release_1_5.NewForConfig(config)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error creating federation clientset: %v", err)
|
return nil, fmt.Errorf("error creating federation clientset: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -20,8 +20,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
"k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_4"
|
"k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5"
|
||||||
"k8s.io/kubernetes/pkg/api"
|
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
"k8s.io/kubernetes/test/e2e/framework"
|
"k8s.io/kubernetes/test/e2e/framework"
|
||||||
|
|
||||||
@ -42,10 +41,10 @@ var _ = framework.KubeDescribe("Federation events [Feature:Federation]", func()
|
|||||||
|
|
||||||
nsName := f.FederationNamespace.Name
|
nsName := f.FederationNamespace.Name
|
||||||
// Delete registered events.
|
// Delete registered events.
|
||||||
eventList, err := f.FederationClientset_1_4.Core().Events(nsName).List(api.ListOptions{})
|
eventList, err := f.FederationClientset_1_5.Core().Events(nsName).List(v1.ListOptions{})
|
||||||
Expect(err).NotTo(HaveOccurred())
|
Expect(err).NotTo(HaveOccurred())
|
||||||
for _, event := range eventList.Items {
|
for _, event := range eventList.Items {
|
||||||
err := f.FederationClientset_1_4.Core().Events(nsName).Delete(event.Name, &api.DeleteOptions{})
|
err := f.FederationClientset_1_5.Core().Events(nsName).Delete(event.Name, &v1.DeleteOptions{})
|
||||||
Expect(err).NotTo(HaveOccurred())
|
Expect(err).NotTo(HaveOccurred())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -54,10 +53,10 @@ var _ = framework.KubeDescribe("Federation events [Feature:Federation]", func()
|
|||||||
framework.SkipUnlessFederated(f.Client)
|
framework.SkipUnlessFederated(f.Client)
|
||||||
|
|
||||||
nsName := f.FederationNamespace.Name
|
nsName := f.FederationNamespace.Name
|
||||||
event := createEventOrFail(f.FederationClientset_1_4, nsName)
|
event := createEventOrFail(f.FederationClientset_1_5, nsName)
|
||||||
By(fmt.Sprintf("Creation of event %q in namespace %q succeeded. Deleting event.", event.Name, nsName))
|
By(fmt.Sprintf("Creation of event %q in namespace %q succeeded. Deleting event.", event.Name, nsName))
|
||||||
// Cleanup
|
// Cleanup
|
||||||
err := f.FederationClientset_1_4.Core().Events(nsName).Delete(event.Name, &api.DeleteOptions{})
|
err := f.FederationClientset_1_5.Core().Events(nsName).Delete(event.Name, &v1.DeleteOptions{})
|
||||||
framework.ExpectNoError(err, "Error deleting event %q in namespace %q", event.Name, event.Namespace)
|
framework.ExpectNoError(err, "Error deleting event %q in namespace %q", event.Name, event.Namespace)
|
||||||
By(fmt.Sprintf("Deletion of event %q in namespace %q succeeded.", event.Name, nsName))
|
By(fmt.Sprintf("Deletion of event %q in namespace %q succeeded.", event.Name, nsName))
|
||||||
})
|
})
|
||||||
@ -65,7 +64,7 @@ var _ = framework.KubeDescribe("Federation events [Feature:Federation]", func()
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
func createEventOrFail(clientset *federation_release_1_4.Clientset, namespace string) *v1.Event {
|
func createEventOrFail(clientset *federation_release_1_5.Clientset, namespace string) *v1.Event {
|
||||||
if clientset == nil || len(namespace) == 0 {
|
if clientset == nil || len(namespace) == 0 {
|
||||||
Fail(fmt.Sprintf("Internal error: invalid parameters passed to createEventOrFail: clientset: %v, namespace: %v", clientset, namespace))
|
Fail(fmt.Sprintf("Internal error: invalid parameters passed to createEventOrFail: clientset: %v, namespace: %v", clientset, namespace))
|
||||||
}
|
}
|
||||||
|
@ -21,9 +21,8 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_4"
|
"k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5"
|
||||||
fedutil "k8s.io/kubernetes/federation/pkg/federation-controller/util"
|
fedutil "k8s.io/kubernetes/federation/pkg/federation-controller/util"
|
||||||
"k8s.io/kubernetes/pkg/api"
|
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
"k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
|
"k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
|
||||||
"k8s.io/kubernetes/pkg/util/wait"
|
"k8s.io/kubernetes/pkg/util/wait"
|
||||||
@ -51,10 +50,10 @@ var _ = framework.KubeDescribe("Federation replicasets [Feature:Federation]", fu
|
|||||||
|
|
||||||
// Delete registered replicasets.
|
// Delete registered replicasets.
|
||||||
nsName := f.FederationNamespace.Name
|
nsName := f.FederationNamespace.Name
|
||||||
replicasetList, err := f.FederationClientset_1_4.Extensions().ReplicaSets(nsName).List(api.ListOptions{})
|
replicasetList, err := f.FederationClientset_1_5.Extensions().ReplicaSets(nsName).List(v1.ListOptions{})
|
||||||
Expect(err).NotTo(HaveOccurred())
|
Expect(err).NotTo(HaveOccurred())
|
||||||
for _, replicaset := range replicasetList.Items {
|
for _, replicaset := range replicasetList.Items {
|
||||||
err := f.FederationClientset_1_4.Extensions().ReplicaSets(nsName).Delete(replicaset.Name, &api.DeleteOptions{})
|
err := f.FederationClientset_1_5.Extensions().ReplicaSets(nsName).Delete(replicaset.Name, &v1.DeleteOptions{})
|
||||||
Expect(err).NotTo(HaveOccurred())
|
Expect(err).NotTo(HaveOccurred())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -63,10 +62,10 @@ var _ = framework.KubeDescribe("Federation replicasets [Feature:Federation]", fu
|
|||||||
framework.SkipUnlessFederated(f.Client)
|
framework.SkipUnlessFederated(f.Client)
|
||||||
|
|
||||||
nsName := f.FederationNamespace.Name
|
nsName := f.FederationNamespace.Name
|
||||||
replicaset := createReplicaSetOrFail(f.FederationClientset_1_4, nsName)
|
replicaset := createReplicaSetOrFail(f.FederationClientset_1_5, nsName)
|
||||||
By(fmt.Sprintf("Creation of replicaset %q in namespace %q succeeded. Deleting replicaset.", replicaset.Name, nsName))
|
By(fmt.Sprintf("Creation of replicaset %q in namespace %q succeeded. Deleting replicaset.", replicaset.Name, nsName))
|
||||||
// Cleanup
|
// Cleanup
|
||||||
err := f.FederationClientset_1_4.Extensions().ReplicaSets(nsName).Delete(replicaset.Name, &api.DeleteOptions{})
|
err := f.FederationClientset_1_5.Extensions().ReplicaSets(nsName).Delete(replicaset.Name, &v1.DeleteOptions{})
|
||||||
framework.ExpectNoError(err, "Error deleting replicaset %q in namespace %q", replicaset.Name, replicaset.Namespace)
|
framework.ExpectNoError(err, "Error deleting replicaset %q in namespace %q", replicaset.Name, replicaset.Namespace)
|
||||||
By(fmt.Sprintf("Deletion of replicaset %q in namespace %q succeeded.", replicaset.Name, nsName))
|
By(fmt.Sprintf("Deletion of replicaset %q in namespace %q succeeded.", replicaset.Name, nsName))
|
||||||
})
|
})
|
||||||
@ -94,32 +93,32 @@ var _ = framework.KubeDescribe("Federation replicasets [Feature:Federation]", fu
|
|||||||
|
|
||||||
It("should create and update matching replicasets in underling clusters", func() {
|
It("should create and update matching replicasets in underling clusters", func() {
|
||||||
nsName := f.FederationNamespace.Name
|
nsName := f.FederationNamespace.Name
|
||||||
rs := createReplicaSetOrFail(f.FederationClientset_1_4, nsName)
|
rs := createReplicaSetOrFail(f.FederationClientset_1_5, nsName)
|
||||||
defer func() {
|
defer func() {
|
||||||
// cleanup. deletion of replicasets is not supported for underlying clusters
|
// cleanup. deletion of replicasets is not supported for underlying clusters
|
||||||
By(fmt.Sprintf("Preparing replicaset %q/%q for deletion by setting replicas to zero", nsName, rs.Name))
|
By(fmt.Sprintf("Preparing replicaset %q/%q for deletion by setting replicas to zero", nsName, rs.Name))
|
||||||
replicas := int32(0)
|
replicas := int32(0)
|
||||||
rs.Spec.Replicas = &replicas
|
rs.Spec.Replicas = &replicas
|
||||||
f.FederationClientset_1_4.ReplicaSets(nsName).Update(rs)
|
f.FederationClientset_1_5.ReplicaSets(nsName).Update(rs)
|
||||||
waitForReplicaSetOrFail(f.FederationClientset_1_4, nsName, rs.Name, clusters)
|
waitForReplicaSetOrFail(f.FederationClientset_1_5, nsName, rs.Name, clusters)
|
||||||
f.FederationClientset_1_4.ReplicaSets(nsName).Delete(rs.Name, &api.DeleteOptions{})
|
f.FederationClientset_1_5.ReplicaSets(nsName).Delete(rs.Name, &v1.DeleteOptions{})
|
||||||
}()
|
}()
|
||||||
|
|
||||||
waitForReplicaSetOrFail(f.FederationClientset_1_4, nsName, rs.Name, clusters)
|
waitForReplicaSetOrFail(f.FederationClientset_1_5, nsName, rs.Name, clusters)
|
||||||
By(fmt.Sprintf("Successfuly created and synced replicaset %q/%q to clusters", nsName, rs.Name))
|
By(fmt.Sprintf("Successfuly created and synced replicaset %q/%q to clusters", nsName, rs.Name))
|
||||||
updateReplicaSetOrFail(f.FederationClientset_1_4, nsName)
|
updateReplicaSetOrFail(f.FederationClientset_1_5, nsName)
|
||||||
waitForReplicaSetOrFail(f.FederationClientset_1_4, nsName, rs.Name, clusters)
|
waitForReplicaSetOrFail(f.FederationClientset_1_5, nsName, rs.Name, clusters)
|
||||||
By(fmt.Sprintf("Successfuly updated and synced replicaset %q/%q to clusters", nsName, rs.Name))
|
By(fmt.Sprintf("Successfuly updated and synced replicaset %q/%q to clusters", nsName, rs.Name))
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
func waitForReplicaSetOrFail(c *federation_release_1_4.Clientset, namespace string, replicaSetName string, clusters map[string]*cluster) {
|
func waitForReplicaSetOrFail(c *federation_release_1_5.Clientset, namespace string, replicaSetName string, clusters map[string]*cluster) {
|
||||||
err := waitForReplicaSet(c, namespace, replicaSetName, clusters)
|
err := waitForReplicaSet(c, namespace, replicaSetName, clusters)
|
||||||
framework.ExpectNoError(err, "Failed to verify replicaset %q/%q, err: %v", namespace, replicaSetName, err)
|
framework.ExpectNoError(err, "Failed to verify replicaset %q/%q, err: %v", namespace, replicaSetName, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func waitForReplicaSet(c *federation_release_1_4.Clientset, namespace string, replicaSetName string, clusters map[string]*cluster) error {
|
func waitForReplicaSet(c *federation_release_1_5.Clientset, namespace string, replicaSetName string, clusters map[string]*cluster) error {
|
||||||
err := wait.Poll(10*time.Second, FederatedReplicaSetTimeout, func() (bool, error) {
|
err := wait.Poll(10*time.Second, FederatedReplicaSetTimeout, func() (bool, error) {
|
||||||
frs, err := c.ReplicaSets(namespace).Get(replicaSetName)
|
frs, err := c.ReplicaSets(namespace).Get(replicaSetName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -158,7 +157,7 @@ func equivalentReplicaSet(fedReplicaSet, localReplicaSet *v1beta1.ReplicaSet) bo
|
|||||||
reflect.DeepEqual(fedReplicaSet.Spec, localReplicaSetSpec)
|
reflect.DeepEqual(fedReplicaSet.Spec, localReplicaSetSpec)
|
||||||
}
|
}
|
||||||
|
|
||||||
func createReplicaSetOrFail(clientset *federation_release_1_4.Clientset, namespace string) *v1beta1.ReplicaSet {
|
func createReplicaSetOrFail(clientset *federation_release_1_5.Clientset, namespace string) *v1beta1.ReplicaSet {
|
||||||
if clientset == nil || len(namespace) == 0 {
|
if clientset == nil || len(namespace) == 0 {
|
||||||
Fail(fmt.Sprintf("Internal error: invalid parameters passed to createReplicaSetOrFail: clientset: %v, namespace: %v", clientset, namespace))
|
Fail(fmt.Sprintf("Internal error: invalid parameters passed to createReplicaSetOrFail: clientset: %v, namespace: %v", clientset, namespace))
|
||||||
}
|
}
|
||||||
@ -172,7 +171,7 @@ func createReplicaSetOrFail(clientset *federation_release_1_4.Clientset, namespa
|
|||||||
return replicaset
|
return replicaset
|
||||||
}
|
}
|
||||||
|
|
||||||
func updateReplicaSetOrFail(clientset *federation_release_1_4.Clientset, namespace string) *v1beta1.ReplicaSet {
|
func updateReplicaSetOrFail(clientset *federation_release_1_5.Clientset, namespace string) *v1beta1.ReplicaSet {
|
||||||
if clientset == nil || len(namespace) == 0 {
|
if clientset == nil || len(namespace) == 0 {
|
||||||
Fail(fmt.Sprintf("Internal error: invalid parameters passed to updateReplicaSetOrFail: clientset: %v, namespace: %v", clientset, namespace))
|
Fail(fmt.Sprintf("Internal error: invalid parameters passed to updateReplicaSetOrFail: clientset: %v, namespace: %v", clientset, namespace))
|
||||||
}
|
}
|
||||||
|
@ -21,7 +21,6 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
federation_api "k8s.io/kubernetes/federation/apis/federation/v1beta1"
|
federation_api "k8s.io/kubernetes/federation/apis/federation/v1beta1"
|
||||||
api "k8s.io/kubernetes/pkg/api"
|
|
||||||
api_v1 "k8s.io/kubernetes/pkg/api/v1"
|
api_v1 "k8s.io/kubernetes/pkg/api/v1"
|
||||||
"k8s.io/kubernetes/pkg/util/wait"
|
"k8s.io/kubernetes/pkg/util/wait"
|
||||||
"k8s.io/kubernetes/test/e2e/framework"
|
"k8s.io/kubernetes/test/e2e/framework"
|
||||||
@ -29,7 +28,7 @@ import (
|
|||||||
|
|
||||||
func createClusterObjectOrFail_14(f *framework.Framework, context *framework.E2EContext) {
|
func createClusterObjectOrFail_14(f *framework.Framework, context *framework.E2EContext) {
|
||||||
framework.Logf("Looking up cluster: %s", context.Name)
|
framework.Logf("Looking up cluster: %s", context.Name)
|
||||||
foundCluster, err := f.FederationClientset_1_4.Federation().Clusters().Get(context.Name)
|
foundCluster, err := f.FederationClientset_1_5.Federation().Clusters().Get(context.Name)
|
||||||
if err == nil && foundCluster != nil {
|
if err == nil && foundCluster != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -54,7 +53,7 @@ func createClusterObjectOrFail_14(f *framework.Framework, context *framework.E2E
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
_, err = f.FederationClientset_1_4.Federation().Clusters().Create(&cluster)
|
_, err = f.FederationClientset_1_5.Federation().Clusters().Create(&cluster)
|
||||||
framework.ExpectNoError(err, fmt.Sprintf("creating cluster: %+v", err))
|
framework.ExpectNoError(err, fmt.Sprintf("creating cluster: %+v", err))
|
||||||
framework.Logf("Successfully created cluster object: %s (%s, secret: %s)", context.Name, context.Cluster.Cluster.Server, context.Name)
|
framework.Logf("Successfully created cluster object: %s (%s, secret: %s)", context.Name, context.Cluster.Cluster.Server, context.Name)
|
||||||
}
|
}
|
||||||
@ -69,7 +68,7 @@ func buildClustersOrFail_14(f *framework.Framework) []*federation_api.Cluster {
|
|||||||
// Wait for all clusters to become ready for up to 5 min.
|
// Wait for all clusters to become ready for up to 5 min.
|
||||||
if err := wait.PollImmediate(5*time.Second, 5*time.Minute, func() (bool, error) {
|
if err := wait.PollImmediate(5*time.Second, 5*time.Minute, func() (bool, error) {
|
||||||
for _, context := range contexts {
|
for _, context := range contexts {
|
||||||
cluster, err := f.FederationClientset_1_4.Federation().Clusters().Get(context.Name)
|
cluster, err := f.FederationClientset_1_5.Federation().Clusters().Get(context.Name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
@ -88,7 +87,7 @@ func buildClustersOrFail_14(f *framework.Framework) []*federation_api.Cluster {
|
|||||||
framework.Failf("Not all clusters are ready: %v", err)
|
framework.Failf("Not all clusters are ready: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
clusterList, err := f.FederationClientset_1_4.Federation().Clusters().List(api.ListOptions{})
|
clusterList, err := f.FederationClientset_1_5.Federation().Clusters().List(api_v1.ListOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
framework.Failf("Error in get clusters: %v", err)
|
framework.Failf("Error in get clusters: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -23,11 +23,11 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/util/intstr"
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
|
|
||||||
federationapi "k8s.io/kubernetes/federation/apis/federation/v1beta1"
|
federationapi "k8s.io/kubernetes/federation/apis/federation/v1beta1"
|
||||||
"k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_4"
|
fedclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5"
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/errors"
|
"k8s.io/kubernetes/pkg/api/errors"
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
"k8s.io/kubernetes/pkg/client/clientset_generated/release_1_3"
|
kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
|
||||||
"k8s.io/kubernetes/pkg/client/restclient"
|
"k8s.io/kubernetes/pkg/client/restclient"
|
||||||
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
|
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
|
||||||
clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
|
clientcmdapi "k8s.io/kubernetes/pkg/client/unversioned/clientcmd/api"
|
||||||
@ -53,7 +53,7 @@ in the federation
|
|||||||
*/
|
*/
|
||||||
type cluster struct {
|
type cluster struct {
|
||||||
name string
|
name string
|
||||||
*release_1_3.Clientset
|
*kubeclientset.Clientset
|
||||||
namespaceCreated bool // Did we need to create a new namespace in this cluster? If so, we should delete it.
|
namespaceCreated bool // Did we need to create a new namespace in this cluster? If so, we should delete it.
|
||||||
backendPod *v1.Pod // The backend pod, if one's been created.
|
backendPod *v1.Pod // The backend pod, if one's been created.
|
||||||
}
|
}
|
||||||
@ -79,18 +79,18 @@ func createClusterObjectOrFail(f *framework.Framework, context *framework.E2ECon
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
_, err := f.FederationClientset_1_4.Federation().Clusters().Create(&cluster)
|
_, err := f.FederationClientset_1_5.Federation().Clusters().Create(&cluster)
|
||||||
framework.ExpectNoError(err, fmt.Sprintf("creating cluster: %+v", err))
|
framework.ExpectNoError(err, fmt.Sprintf("creating cluster: %+v", err))
|
||||||
framework.Logf("Successfully created cluster object: %s (%s, secret: %s)", context.Name, context.Cluster.Cluster.Server, context.Name)
|
framework.Logf("Successfully created cluster object: %s (%s, secret: %s)", context.Name, context.Cluster.Cluster.Server, context.Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
func clusterIsReadyOrFail(f *framework.Framework, context *framework.E2EContext) {
|
func clusterIsReadyOrFail(f *framework.Framework, context *framework.E2EContext) {
|
||||||
c, err := f.FederationClientset_1_4.Federation().Clusters().Get(context.Name)
|
c, err := f.FederationClientset_1_5.Federation().Clusters().Get(context.Name)
|
||||||
framework.ExpectNoError(err, fmt.Sprintf("get cluster: %+v", err))
|
framework.ExpectNoError(err, fmt.Sprintf("get cluster: %+v", err))
|
||||||
if c.ObjectMeta.Name != context.Name {
|
if c.ObjectMeta.Name != context.Name {
|
||||||
framework.Failf("cluster name does not match input context: actual=%+v, expected=%+v", c, context)
|
framework.Failf("cluster name does not match input context: actual=%+v, expected=%+v", c, context)
|
||||||
}
|
}
|
||||||
err = isReady(context.Name, f.FederationClientset_1_4)
|
err = isReady(context.Name, f.FederationClientset_1_5)
|
||||||
framework.ExpectNoError(err, fmt.Sprintf("unexpected error in verifying if cluster %s is ready: %+v", context.Name, err))
|
framework.ExpectNoError(err, fmt.Sprintf("unexpected error in verifying if cluster %s is ready: %+v", context.Name, err))
|
||||||
framework.Logf("Cluster %s is Ready", context.Name)
|
framework.Logf("Cluster %s is Ready", context.Name)
|
||||||
}
|
}
|
||||||
@ -101,7 +101,7 @@ func waitForAllClustersReady(f *framework.Framework, clusterCount int) *federati
|
|||||||
var clusterList *federationapi.ClusterList
|
var clusterList *federationapi.ClusterList
|
||||||
if err := wait.PollImmediate(framework.Poll, FederatedServiceTimeout, func() (bool, error) {
|
if err := wait.PollImmediate(framework.Poll, FederatedServiceTimeout, func() (bool, error) {
|
||||||
var err error
|
var err error
|
||||||
clusterList, err = f.FederationClientset_1_4.Federation().Clusters().List(api.ListOptions{})
|
clusterList, err = f.FederationClientset_1_5.Federation().Clusters().List(v1.ListOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
@ -116,7 +116,7 @@ func waitForAllClustersReady(f *framework.Framework, clusterCount int) *federati
|
|||||||
return clusterList
|
return clusterList
|
||||||
}
|
}
|
||||||
|
|
||||||
func createClientsetForCluster(c federationapi.Cluster, i int, userAgentName string) *release_1_3.Clientset {
|
func createClientsetForCluster(c federationapi.Cluster, i int, userAgentName string) *kubeclientset.Clientset {
|
||||||
kubecfg, err := clientcmd.LoadFromFile(framework.TestContext.KubeConfig)
|
kubecfg, err := clientcmd.LoadFromFile(framework.TestContext.KubeConfig)
|
||||||
framework.ExpectNoError(err, "error loading KubeConfig: %v", err)
|
framework.ExpectNoError(err, "error loading KubeConfig: %v", err)
|
||||||
|
|
||||||
@ -131,7 +131,7 @@ func createClientsetForCluster(c federationapi.Cluster, i int, userAgentName str
|
|||||||
|
|
||||||
cfg.QPS = KubeAPIQPS
|
cfg.QPS = KubeAPIQPS
|
||||||
cfg.Burst = KubeAPIBurst
|
cfg.Burst = KubeAPIBurst
|
||||||
return release_1_3.NewForConfigOrDie(restclient.AddUserAgent(cfg, userAgentName))
|
return kubeclientset.NewForConfigOrDie(restclient.AddUserAgent(cfg, userAgentName))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Creates the federation namespace in all underlying clusters.
|
// Creates the federation namespace in all underlying clusters.
|
||||||
@ -165,7 +165,7 @@ func unregisterClusters(clusters map[string]*cluster, f *framework.Framework) {
|
|||||||
for name, c := range clusters {
|
for name, c := range clusters {
|
||||||
if c.namespaceCreated {
|
if c.namespaceCreated {
|
||||||
if _, err := c.Clientset.Core().Namespaces().Get(nsName); !errors.IsNotFound(err) {
|
if _, err := c.Clientset.Core().Namespaces().Get(nsName); !errors.IsNotFound(err) {
|
||||||
err := c.Clientset.Core().Namespaces().Delete(nsName, &api.DeleteOptions{})
|
err := c.Clientset.Core().Namespaces().Delete(nsName, &v1.DeleteOptions{})
|
||||||
framework.ExpectNoError(err, "Couldn't delete the namespace %s in cluster %q: %v", nsName, name, err)
|
framework.ExpectNoError(err, "Couldn't delete the namespace %s in cluster %q: %v", nsName, name, err)
|
||||||
}
|
}
|
||||||
framework.Logf("Namespace %s deleted in cluster %q", nsName, name)
|
framework.Logf("Namespace %s deleted in cluster %q", nsName, name)
|
||||||
@ -173,10 +173,10 @@ func unregisterClusters(clusters map[string]*cluster, f *framework.Framework) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Delete the registered clusters in the federation API server.
|
// Delete the registered clusters in the federation API server.
|
||||||
clusterList, err := f.FederationClientset_1_4.Federation().Clusters().List(api.ListOptions{})
|
clusterList, err := f.FederationClientset_1_5.Federation().Clusters().List(v1.ListOptions{})
|
||||||
framework.ExpectNoError(err, "Error listing clusters")
|
framework.ExpectNoError(err, "Error listing clusters")
|
||||||
for _, cluster := range clusterList.Items {
|
for _, cluster := range clusterList.Items {
|
||||||
err := f.FederationClientset_1_4.Federation().Clusters().Delete(cluster.Name, &api.DeleteOptions{})
|
err := f.FederationClientset_1_5.Federation().Clusters().Delete(cluster.Name, &v1.DeleteOptions{})
|
||||||
framework.ExpectNoError(err, "Error deleting cluster %q", cluster.Name)
|
framework.ExpectNoError(err, "Error deleting cluster %q", cluster.Name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -213,7 +213,7 @@ func registerClusters(clusters map[string]*cluster, userAgentName, federationNam
|
|||||||
waitForServiceOrFail waits until a service is either present or absent in the cluster specified by clientset.
|
waitForServiceOrFail waits until a service is either present or absent in the cluster specified by clientset.
|
||||||
If the condition is not met within timout, it fails the calling test.
|
If the condition is not met within timout, it fails the calling test.
|
||||||
*/
|
*/
|
||||||
func waitForServiceOrFail(clientset *release_1_3.Clientset, namespace string, service *v1.Service, present bool, timeout time.Duration) {
|
func waitForServiceOrFail(clientset *kubeclientset.Clientset, namespace string, service *v1.Service, present bool, timeout time.Duration) {
|
||||||
By(fmt.Sprintf("Fetching a federated service shard of service %q in namespace %q from cluster", service.Name, namespace))
|
By(fmt.Sprintf("Fetching a federated service shard of service %q in namespace %q from cluster", service.Name, namespace))
|
||||||
var clusterService *v1.Service
|
var clusterService *v1.Service
|
||||||
err := wait.PollImmediate(framework.Poll, timeout, func() (bool, error) {
|
err := wait.PollImmediate(framework.Poll, timeout, func() (bool, error) {
|
||||||
@ -246,7 +246,7 @@ func waitForServiceShardsOrFail(namespace string, service *v1.Service, clusters
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func createService(clientset *federation_release_1_4.Clientset, namespace, name string) (*v1.Service, error) {
|
func createService(clientset *fedclientset.Clientset, namespace, name string) (*v1.Service, error) {
|
||||||
if clientset == nil || len(namespace) == 0 {
|
if clientset == nil || len(namespace) == 0 {
|
||||||
return nil, fmt.Errorf("Internal error: invalid parameters passed to createService: clientset: %v, namespace: %v", clientset, namespace)
|
return nil, fmt.Errorf("Internal error: invalid parameters passed to createService: clientset: %v, namespace: %v", clientset, namespace)
|
||||||
}
|
}
|
||||||
@ -273,18 +273,18 @@ func createService(clientset *federation_release_1_4.Clientset, namespace, name
|
|||||||
return clientset.Services(namespace).Create(service)
|
return clientset.Services(namespace).Create(service)
|
||||||
}
|
}
|
||||||
|
|
||||||
func createServiceOrFail(clientset *federation_release_1_4.Clientset, namespace, name string) *v1.Service {
|
func createServiceOrFail(clientset *fedclientset.Clientset, namespace, name string) *v1.Service {
|
||||||
service, err := createService(clientset, namespace, name)
|
service, err := createService(clientset, namespace, name)
|
||||||
framework.ExpectNoError(err, "Creating service %q in namespace %q", service.Name, namespace)
|
framework.ExpectNoError(err, "Creating service %q in namespace %q", service.Name, namespace)
|
||||||
By(fmt.Sprintf("Successfully created federated service %q in namespace %q", name, namespace))
|
By(fmt.Sprintf("Successfully created federated service %q in namespace %q", name, namespace))
|
||||||
return service
|
return service
|
||||||
}
|
}
|
||||||
|
|
||||||
func deleteServiceOrFail(clientset *federation_release_1_4.Clientset, namespace string, serviceName string) {
|
func deleteServiceOrFail(clientset *fedclientset.Clientset, namespace string, serviceName string) {
|
||||||
if clientset == nil || len(namespace) == 0 || len(serviceName) == 0 {
|
if clientset == nil || len(namespace) == 0 || len(serviceName) == 0 {
|
||||||
Fail(fmt.Sprintf("Internal error: invalid parameters passed to deleteServiceOrFail: clientset: %v, namespace: %v, service: %v", clientset, namespace, serviceName))
|
Fail(fmt.Sprintf("Internal error: invalid parameters passed to deleteServiceOrFail: clientset: %v, namespace: %v, service: %v", clientset, namespace, serviceName))
|
||||||
}
|
}
|
||||||
err := clientset.Services(namespace).Delete(serviceName, api.NewDeleteOptions(0))
|
err := clientset.Services(namespace).Delete(serviceName, v1.NewDeleteOptions(0))
|
||||||
framework.ExpectNoError(err, "Error deleting service %q from namespace %q", serviceName, namespace)
|
framework.ExpectNoError(err, "Error deleting service %q from namespace %q", serviceName, namespace)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -325,9 +325,9 @@ func cleanupServiceShardsAndProviderResources(namespace string, service *v1.Serv
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func cleanupServiceShard(clientset *release_1_3.Clientset, clusterName, namespace string, service *v1.Service, timeout time.Duration) error {
|
func cleanupServiceShard(clientset *kubeclientset.Clientset, clusterName, namespace string, service *v1.Service, timeout time.Duration) error {
|
||||||
err := wait.PollImmediate(framework.Poll, timeout, func() (bool, error) {
|
err := wait.PollImmediate(framework.Poll, timeout, func() (bool, error) {
|
||||||
err := clientset.Services(namespace).Delete(service.Name, &api.DeleteOptions{})
|
err := clientset.Services(namespace).Delete(service.Name, &v1.DeleteOptions{})
|
||||||
if err != nil && !errors.IsNotFound(err) {
|
if err != nil && !errors.IsNotFound(err) {
|
||||||
// Deletion failed with an error, try again.
|
// Deletion failed with an error, try again.
|
||||||
framework.Logf("Failed to delete service %q in namespace %q, in cluster %q", service.Name, namespace, clusterName)
|
framework.Logf("Failed to delete service %q in namespace %q, in cluster %q", service.Name, namespace, clusterName)
|
||||||
@ -488,7 +488,7 @@ The test fails if there are any errors.
|
|||||||
func deleteOneBackendPodOrFail(c *cluster) {
|
func deleteOneBackendPodOrFail(c *cluster) {
|
||||||
pod := c.backendPod
|
pod := c.backendPod
|
||||||
Expect(pod).ToNot(BeNil())
|
Expect(pod).ToNot(BeNil())
|
||||||
err := c.Clientset.Core().Pods(pod.Namespace).Delete(pod.Name, api.NewDeleteOptions(0))
|
err := c.Clientset.Core().Pods(pod.Namespace).Delete(pod.Name, v1.NewDeleteOptions(0))
|
||||||
if errors.IsNotFound(err) {
|
if errors.IsNotFound(err) {
|
||||||
By(fmt.Sprintf("Pod %q in namespace %q in cluster %q does not exist. No need to delete it.", pod.Name, pod.Namespace, c.name))
|
By(fmt.Sprintf("Pod %q in namespace %q in cluster %q does not exist. No need to delete it.", pod.Name, pod.Namespace, c.name))
|
||||||
} else {
|
} else {
|
||||||
|
@ -29,7 +29,7 @@ import (
|
|||||||
staging "k8s.io/client-go/1.5/kubernetes"
|
staging "k8s.io/client-go/1.5/kubernetes"
|
||||||
"k8s.io/client-go/1.5/pkg/util/sets"
|
"k8s.io/client-go/1.5/pkg/util/sets"
|
||||||
clientreporestclient "k8s.io/client-go/1.5/rest"
|
clientreporestclient "k8s.io/client-go/1.5/rest"
|
||||||
"k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_4"
|
"k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5"
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
apierrs "k8s.io/kubernetes/pkg/api/errors"
|
apierrs "k8s.io/kubernetes/pkg/api/errors"
|
||||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
@ -96,7 +96,7 @@ type Framework struct {
|
|||||||
federated bool
|
federated bool
|
||||||
|
|
||||||
// Federation specific params. These are set only if federated = true.
|
// Federation specific params. These are set only if federated = true.
|
||||||
FederationClientset_1_4 *federation_release_1_4.Clientset
|
FederationClientset_1_5 *federation_release_1_5.Clientset
|
||||||
FederationNamespace *v1.Namespace
|
FederationNamespace *v1.Namespace
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -210,14 +210,14 @@ func (f *Framework) BeforeEach() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if f.federated {
|
if f.federated {
|
||||||
if f.FederationClientset_1_4 == nil {
|
if f.FederationClientset_1_5 == nil {
|
||||||
By("Creating a release 1.4 federation Clientset")
|
By("Creating a release 1.4 federation Clientset")
|
||||||
var err error
|
var err error
|
||||||
f.FederationClientset_1_4, err = LoadFederationClientset_1_4()
|
f.FederationClientset_1_5, err = LoadFederationClientset_1_5()
|
||||||
Expect(err).NotTo(HaveOccurred())
|
Expect(err).NotTo(HaveOccurred())
|
||||||
}
|
}
|
||||||
By("Waiting for federation-apiserver to be ready")
|
By("Waiting for federation-apiserver to be ready")
|
||||||
err := WaitForFederationApiserverReady(f.FederationClientset_1_4)
|
err := WaitForFederationApiserverReady(f.FederationClientset_1_5)
|
||||||
Expect(err).NotTo(HaveOccurred())
|
Expect(err).NotTo(HaveOccurred())
|
||||||
By("federation-apiserver is ready")
|
By("federation-apiserver is ready")
|
||||||
|
|
||||||
@ -276,9 +276,9 @@ func (f *Framework) deleteFederationNs() {
|
|||||||
timeout = f.NamespaceDeletionTimeout
|
timeout = f.NamespaceDeletionTimeout
|
||||||
}
|
}
|
||||||
|
|
||||||
clientset := f.FederationClientset_1_4
|
clientset := f.FederationClientset_1_5
|
||||||
// First delete the namespace from federation apiserver.
|
// First delete the namespace from federation apiserver.
|
||||||
if err := clientset.Core().Namespaces().Delete(ns.Name, &api.DeleteOptions{}); err != nil {
|
if err := clientset.Core().Namespaces().Delete(ns.Name, &v1.DeleteOptions{}); err != nil {
|
||||||
Failf("Error while deleting federation namespace %s: %s", ns.Name, err)
|
Failf("Error while deleting federation namespace %s: %s", ns.Name, err)
|
||||||
}
|
}
|
||||||
// Verify that it got deleted.
|
// Verify that it got deleted.
|
||||||
@ -353,11 +353,11 @@ func (f *Framework) AfterEach() {
|
|||||||
|
|
||||||
if f.federated {
|
if f.federated {
|
||||||
defer func() {
|
defer func() {
|
||||||
if f.FederationClientset_1_4 == nil {
|
if f.FederationClientset_1_5 == nil {
|
||||||
Logf("Warning: framework is marked federated, but has no federation 1.4 clientset")
|
Logf("Warning: framework is marked federated, but has no federation 1.4 clientset")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if err := f.FederationClientset_1_4.Federation().Clusters().DeleteCollection(nil, api.ListOptions{}); err != nil {
|
if err := f.FederationClientset_1_5.Federation().Clusters().DeleteCollection(nil, v1.ListOptions{}); err != nil {
|
||||||
Logf("Error: failed to delete Clusters: %+v", err)
|
Logf("Error: failed to delete Clusters: %+v", err)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
@ -371,8 +371,8 @@ func (f *Framework) AfterEach() {
|
|||||||
LogContainersInPodsWithLabels(f.Client, api.NamespaceSystem, ImagePullerLabels, "image-puller")
|
LogContainersInPodsWithLabels(f.Client, api.NamespaceSystem, ImagePullerLabels, "image-puller")
|
||||||
if f.federated {
|
if f.federated {
|
||||||
// Dump federation events in federation namespace.
|
// Dump federation events in federation namespace.
|
||||||
DumpEventsInNamespace(func(opts api.ListOptions, ns string) (*v1.EventList, error) {
|
DumpEventsInNamespace(func(opts v1.ListOptions, ns string) (*v1.EventList, error) {
|
||||||
return f.FederationClientset_1_4.Core().Events(ns).List(opts)
|
return f.FederationClientset_1_5.Core().Events(ns).List(opts)
|
||||||
}, f.FederationNamespace.Name)
|
}, f.FederationNamespace.Name)
|
||||||
// Print logs of federation control plane pods (federation-apiserver and federation-controller-manager)
|
// Print logs of federation control plane pods (federation-apiserver and federation-controller-manager)
|
||||||
LogPodsWithLabels(f.Client, "federation", map[string]string{"app": "federated-cluster"})
|
LogPodsWithLabels(f.Client, "federation", map[string]string{"app": "federated-cluster"})
|
||||||
@ -449,7 +449,7 @@ func (f *Framework) CreateNamespace(baseName string, labels map[string]string) (
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (f *Framework) createFederationNamespace(baseName string) (*v1.Namespace, error) {
|
func (f *Framework) createFederationNamespace(baseName string) (*v1.Namespace, error) {
|
||||||
clientset := f.FederationClientset_1_4
|
clientset := f.FederationClientset_1_5
|
||||||
namespaceObj := &v1.Namespace{
|
namespaceObj := &v1.Namespace{
|
||||||
ObjectMeta: v1.ObjectMeta{
|
ObjectMeta: v1.ObjectMeta{
|
||||||
GenerateName: fmt.Sprintf("e2e-tests-%v-", baseName),
|
GenerateName: fmt.Sprintf("e2e-tests-%v-", baseName),
|
||||||
|
@ -43,7 +43,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
"k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_4"
|
"k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5"
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
apierrs "k8s.io/kubernetes/pkg/api/errors"
|
apierrs "k8s.io/kubernetes/pkg/api/errors"
|
||||||
"k8s.io/kubernetes/pkg/api/resource"
|
"k8s.io/kubernetes/pkg/api/resource"
|
||||||
@ -941,9 +941,9 @@ func WaitForDefaultServiceAccountInNamespace(c *client.Client, namespace string)
|
|||||||
|
|
||||||
// WaitForFederationApiserverReady waits for the federation apiserver to be ready.
|
// WaitForFederationApiserverReady waits for the federation apiserver to be ready.
|
||||||
// It tests the readiness by sending a GET request and expecting a non error response.
|
// It tests the readiness by sending a GET request and expecting a non error response.
|
||||||
func WaitForFederationApiserverReady(c *federation_release_1_4.Clientset) error {
|
func WaitForFederationApiserverReady(c *federation_release_1_5.Clientset) error {
|
||||||
return wait.PollImmediate(time.Second, 1*time.Minute, func() (bool, error) {
|
return wait.PollImmediate(time.Second, 1*time.Minute, func() (bool, error) {
|
||||||
_, err := c.Federation().Clusters().List(api.ListOptions{})
|
_, err := c.Federation().Clusters().List(v1.ListOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, nil
|
return false, nil
|
||||||
}
|
}
|
||||||
@ -1959,13 +1959,13 @@ func setTimeouts(cs ...*http.Client) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func LoadFederationClientset_1_4() (*federation_release_1_4.Clientset, error) {
|
func LoadFederationClientset_1_5() (*federation_release_1_5.Clientset, error) {
|
||||||
config, err := LoadFederatedConfig(&clientcmd.ConfigOverrides{})
|
config, err := LoadFederatedConfig(&clientcmd.ConfigOverrides{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
c, err := federation_release_1_4.NewForConfig(config)
|
c, err := federation_release_1_5.NewForConfig(config)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error creating federation clientset: %v", err.Error())
|
return nil, fmt.Errorf("error creating federation clientset: %v", err.Error())
|
||||||
}
|
}
|
||||||
@ -2827,11 +2827,11 @@ func dumpPodDebugInfo(c *client.Client, pods []*api.Pod) {
|
|||||||
DumpNodeDebugInfo(c, badNodes.List())
|
DumpNodeDebugInfo(c, badNodes.List())
|
||||||
}
|
}
|
||||||
|
|
||||||
type EventsLister func(opts api.ListOptions, ns string) (*v1.EventList, error)
|
type EventsLister func(opts v1.ListOptions, ns string) (*v1.EventList, error)
|
||||||
|
|
||||||
func DumpEventsInNamespace(eventsLister EventsLister, namespace string) {
|
func DumpEventsInNamespace(eventsLister EventsLister, namespace string) {
|
||||||
By(fmt.Sprintf("Collecting events from namespace %q.", namespace))
|
By(fmt.Sprintf("Collecting events from namespace %q.", namespace))
|
||||||
events, err := eventsLister(api.ListOptions{}, namespace)
|
events, err := eventsLister(v1.ListOptions{}, namespace)
|
||||||
Expect(err).NotTo(HaveOccurred())
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
|
||||||
// Sort events by their first timestamp
|
// Sort events by their first timestamp
|
||||||
@ -2848,7 +2848,7 @@ func DumpEventsInNamespace(eventsLister EventsLister, namespace string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func DumpAllNamespaceInfo(c *client.Client, cs *release_1_5.Clientset, namespace string) {
|
func DumpAllNamespaceInfo(c *client.Client, cs *release_1_5.Clientset, namespace string) {
|
||||||
DumpEventsInNamespace(func(opts api.ListOptions, ns string) (*v1.EventList, error) {
|
DumpEventsInNamespace(func(opts v1.ListOptions, ns string) (*v1.EventList, error) {
|
||||||
return cs.Core().Events(ns).List(opts)
|
return cs.Core().Events(ns).List(opts)
|
||||||
}, namespace)
|
}, namespace)
|
||||||
|
|
||||||
|
@ -20,7 +20,6 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
|
||||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
clientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
|
clientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
|
||||||
@ -31,14 +30,14 @@ import (
|
|||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
)
|
)
|
||||||
|
|
||||||
func getOrphanOptions() *api.DeleteOptions {
|
func getOrphanOptions() *v1.DeleteOptions {
|
||||||
var trueVar = true
|
var trueVar = true
|
||||||
return &api.DeleteOptions{OrphanDependents: &trueVar}
|
return &v1.DeleteOptions{OrphanDependents: &trueVar}
|
||||||
}
|
}
|
||||||
|
|
||||||
func getNonOrphanOptions() *api.DeleteOptions {
|
func getNonOrphanOptions() *v1.DeleteOptions {
|
||||||
var falseVar = false
|
var falseVar = false
|
||||||
return &api.DeleteOptions{OrphanDependents: &falseVar}
|
return &v1.DeleteOptions{OrphanDependents: &falseVar}
|
||||||
}
|
}
|
||||||
|
|
||||||
func newOwnerRC(f *framework.Framework, name string) *v1.ReplicationController {
|
func newOwnerRC(f *framework.Framework, name string) *v1.ReplicationController {
|
||||||
@ -78,7 +77,7 @@ func newOwnerRC(f *framework.Framework, name string) *v1.ReplicationController {
|
|||||||
// communication with the API server fails.
|
// communication with the API server fails.
|
||||||
func verifyRemainingObjects(f *framework.Framework, clientSet clientset.Interface, rcNum, podNum int) (bool, error) {
|
func verifyRemainingObjects(f *framework.Framework, clientSet clientset.Interface, rcNum, podNum int) (bool, error) {
|
||||||
rcClient := clientSet.Core().ReplicationControllers(f.Namespace.Name)
|
rcClient := clientSet.Core().ReplicationControllers(f.Namespace.Name)
|
||||||
pods, err := clientSet.Core().Pods(f.Namespace.Name).List(api.ListOptions{})
|
pods, err := clientSet.Core().Pods(f.Namespace.Name).List(v1.ListOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, fmt.Errorf("Failed to list pods: %v", err)
|
return false, fmt.Errorf("Failed to list pods: %v", err)
|
||||||
}
|
}
|
||||||
@ -87,7 +86,7 @@ func verifyRemainingObjects(f *framework.Framework, clientSet clientset.Interfac
|
|||||||
ret = false
|
ret = false
|
||||||
By(fmt.Sprintf("expected %d pods, got %d pods", podNum, len(pods.Items)))
|
By(fmt.Sprintf("expected %d pods, got %d pods", podNum, len(pods.Items)))
|
||||||
}
|
}
|
||||||
rcs, err := rcClient.List(api.ListOptions{})
|
rcs, err := rcClient.List(v1.ListOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, fmt.Errorf("Failed to list replication controllers: %v", err)
|
return false, fmt.Errorf("Failed to list replication controllers: %v", err)
|
||||||
}
|
}
|
||||||
@ -130,7 +129,7 @@ var _ = framework.KubeDescribe("Garbage collector", func() {
|
|||||||
}
|
}
|
||||||
// wait for rc to create some pods
|
// wait for rc to create some pods
|
||||||
if err := wait.Poll(5*time.Second, 30*time.Second, func() (bool, error) {
|
if err := wait.Poll(5*time.Second, 30*time.Second, func() (bool, error) {
|
||||||
pods, err := podClient.List(api.ListOptions{})
|
pods, err := podClient.List(v1.ListOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, fmt.Errorf("Failed to list pods: %v", err)
|
return false, fmt.Errorf("Failed to list pods: %v", err)
|
||||||
}
|
}
|
||||||
@ -148,7 +147,7 @@ var _ = framework.KubeDescribe("Garbage collector", func() {
|
|||||||
}
|
}
|
||||||
By("delete the rc")
|
By("delete the rc")
|
||||||
deleteOptions := getNonOrphanOptions()
|
deleteOptions := getNonOrphanOptions()
|
||||||
deleteOptions.Preconditions = api.NewUIDPreconditions(string(rc.UID))
|
deleteOptions.Preconditions = v1.NewUIDPreconditions(string(rc.UID))
|
||||||
if err := rcClient.Delete(rc.ObjectMeta.Name, deleteOptions); err != nil {
|
if err := rcClient.Delete(rc.ObjectMeta.Name, deleteOptions); err != nil {
|
||||||
framework.Failf("failed to delete the rc: %v", err)
|
framework.Failf("failed to delete the rc: %v", err)
|
||||||
}
|
}
|
||||||
@ -158,7 +157,7 @@ var _ = framework.KubeDescribe("Garbage collector", func() {
|
|||||||
return verifyRemainingObjects(f, clientSet, 0, 0)
|
return verifyRemainingObjects(f, clientSet, 0, 0)
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
framework.Failf("failed to wait for all pods to be deleted: %v", err)
|
framework.Failf("failed to wait for all pods to be deleted: %v", err)
|
||||||
remainingPods, err := podClient.List(api.ListOptions{})
|
remainingPods, err := podClient.List(v1.ListOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
framework.Failf("failed to list pods post mortem: %v", err)
|
framework.Failf("failed to list pods post mortem: %v", err)
|
||||||
} else {
|
} else {
|
||||||
@ -197,13 +196,13 @@ var _ = framework.KubeDescribe("Garbage collector", func() {
|
|||||||
}
|
}
|
||||||
By("delete the rc")
|
By("delete the rc")
|
||||||
deleteOptions := getOrphanOptions()
|
deleteOptions := getOrphanOptions()
|
||||||
deleteOptions.Preconditions = api.NewUIDPreconditions(string(rc.UID))
|
deleteOptions.Preconditions = v1.NewUIDPreconditions(string(rc.UID))
|
||||||
if err := rcClient.Delete(rc.ObjectMeta.Name, deleteOptions); err != nil {
|
if err := rcClient.Delete(rc.ObjectMeta.Name, deleteOptions); err != nil {
|
||||||
framework.Failf("failed to delete the rc: %v", err)
|
framework.Failf("failed to delete the rc: %v", err)
|
||||||
}
|
}
|
||||||
By("wait for the rc to be deleted")
|
By("wait for the rc to be deleted")
|
||||||
if err := wait.Poll(5*time.Second, 30*time.Second, func() (bool, error) {
|
if err := wait.Poll(5*time.Second, 30*time.Second, func() (bool, error) {
|
||||||
rcs, err := rcClient.List(api.ListOptions{})
|
rcs, err := rcClient.List(v1.ListOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, fmt.Errorf("Failed to list rcs: %v", err)
|
return false, fmt.Errorf("Failed to list rcs: %v", err)
|
||||||
}
|
}
|
||||||
@ -216,7 +215,7 @@ var _ = framework.KubeDescribe("Garbage collector", func() {
|
|||||||
}
|
}
|
||||||
By("wait for 30 seconds to see if the garbage collector mistakenly deletes the pods")
|
By("wait for 30 seconds to see if the garbage collector mistakenly deletes the pods")
|
||||||
if err := wait.Poll(5*time.Second, 30*time.Second, func() (bool, error) {
|
if err := wait.Poll(5*time.Second, 30*time.Second, func() (bool, error) {
|
||||||
pods, err := podClient.List(api.ListOptions{})
|
pods, err := podClient.List(v1.ListOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, fmt.Errorf("Failed to list pods: %v", err)
|
return false, fmt.Errorf("Failed to list pods: %v", err)
|
||||||
}
|
}
|
||||||
@ -256,14 +255,14 @@ var _ = framework.KubeDescribe("Garbage collector", func() {
|
|||||||
framework.Failf("failed to wait for the rc.Status.Replicas to reach rc.Spec.Replicas: %v", err)
|
framework.Failf("failed to wait for the rc.Status.Replicas to reach rc.Spec.Replicas: %v", err)
|
||||||
}
|
}
|
||||||
By("delete the rc")
|
By("delete the rc")
|
||||||
deleteOptions := &api.DeleteOptions{}
|
deleteOptions := &v1.DeleteOptions{}
|
||||||
deleteOptions.Preconditions = api.NewUIDPreconditions(string(rc.UID))
|
deleteOptions.Preconditions = v1.NewUIDPreconditions(string(rc.UID))
|
||||||
if err := rcClient.Delete(rc.ObjectMeta.Name, deleteOptions); err != nil {
|
if err := rcClient.Delete(rc.ObjectMeta.Name, deleteOptions); err != nil {
|
||||||
framework.Failf("failed to delete the rc: %v", err)
|
framework.Failf("failed to delete the rc: %v", err)
|
||||||
}
|
}
|
||||||
By("wait for 30 seconds to see if the garbage collector mistakenly deletes the pods")
|
By("wait for 30 seconds to see if the garbage collector mistakenly deletes the pods")
|
||||||
if err := wait.Poll(5*time.Second, 30*time.Second, func() (bool, error) {
|
if err := wait.Poll(5*time.Second, 30*time.Second, func() (bool, error) {
|
||||||
pods, err := podClient.List(api.ListOptions{})
|
pods, err := podClient.List(v1.ListOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, fmt.Errorf("Failed to list pods: %v", err)
|
return false, fmt.Errorf("Failed to list pods: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -22,7 +22,6 @@ import (
|
|||||||
|
|
||||||
clientapi "k8s.io/client-go/1.5/pkg/api"
|
clientapi "k8s.io/client-go/1.5/pkg/api"
|
||||||
clientv1 "k8s.io/client-go/1.5/pkg/api/v1"
|
clientv1 "k8s.io/client-go/1.5/pkg/api/v1"
|
||||||
"k8s.io/kubernetes/pkg/api"
|
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
"k8s.io/kubernetes/pkg/labels"
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
@ -129,14 +128,14 @@ var _ = framework.KubeDescribe("Generated release_1_5 clientset", func() {
|
|||||||
podCopy := testingPod(name, value)
|
podCopy := testingPod(name, value)
|
||||||
pod := &podCopy
|
pod := &podCopy
|
||||||
By("setting up watch")
|
By("setting up watch")
|
||||||
selector := labels.SelectorFromSet(labels.Set(map[string]string{"time": value}))
|
selector := labels.SelectorFromSet(labels.Set(map[string]string{"time": value})).String()
|
||||||
options := api.ListOptions{LabelSelector: selector}
|
options := v1.ListOptions{LabelSelector: selector}
|
||||||
pods, err := podClient.List(options)
|
pods, err := podClient.List(options)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
framework.Failf("Failed to query for pods: %v", err)
|
framework.Failf("Failed to query for pods: %v", err)
|
||||||
}
|
}
|
||||||
Expect(len(pods.Items)).To(Equal(0))
|
Expect(len(pods.Items)).To(Equal(0))
|
||||||
options = api.ListOptions{
|
options = v1.ListOptions{
|
||||||
LabelSelector: selector,
|
LabelSelector: selector,
|
||||||
ResourceVersion: pods.ListMeta.ResourceVersion,
|
ResourceVersion: pods.ListMeta.ResourceVersion,
|
||||||
}
|
}
|
||||||
@ -153,10 +152,10 @@ var _ = framework.KubeDescribe("Generated release_1_5 clientset", func() {
|
|||||||
// We call defer here in case there is a problem with
|
// We call defer here in case there is a problem with
|
||||||
// the test so we can ensure that we clean up after
|
// the test so we can ensure that we clean up after
|
||||||
// ourselves
|
// ourselves
|
||||||
defer podClient.Delete(pod.Name, api.NewDeleteOptions(0))
|
defer podClient.Delete(pod.Name, v1.NewDeleteOptions(0))
|
||||||
|
|
||||||
By("verifying the pod is in kubernetes")
|
By("verifying the pod is in kubernetes")
|
||||||
options = api.ListOptions{
|
options = v1.ListOptions{
|
||||||
LabelSelector: selector,
|
LabelSelector: selector,
|
||||||
ResourceVersion: pod.ResourceVersion,
|
ResourceVersion: pod.ResourceVersion,
|
||||||
}
|
}
|
||||||
@ -174,7 +173,7 @@ var _ = framework.KubeDescribe("Generated release_1_5 clientset", func() {
|
|||||||
framework.ExpectNoError(f.WaitForPodRunning(pod.Name))
|
framework.ExpectNoError(f.WaitForPodRunning(pod.Name))
|
||||||
|
|
||||||
By("deleting the pod gracefully")
|
By("deleting the pod gracefully")
|
||||||
if err := podClient.Delete(pod.Name, api.NewDeleteOptions(30)); err != nil {
|
if err := podClient.Delete(pod.Name, v1.NewDeleteOptions(30)); err != nil {
|
||||||
framework.Failf("Failed to delete pod: %v", err)
|
framework.Failf("Failed to delete pod: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -184,7 +183,7 @@ var _ = framework.KubeDescribe("Generated release_1_5 clientset", func() {
|
|||||||
Expect(lastPod.DeletionTimestamp).ToNot(BeNil())
|
Expect(lastPod.DeletionTimestamp).ToNot(BeNil())
|
||||||
Expect(lastPod.Spec.TerminationGracePeriodSeconds).ToNot(BeZero())
|
Expect(lastPod.Spec.TerminationGracePeriodSeconds).ToNot(BeZero())
|
||||||
|
|
||||||
options = api.ListOptions{LabelSelector: selector}
|
options = v1.ListOptions{LabelSelector: selector}
|
||||||
pods, err = podClient.List(options)
|
pods, err = podClient.List(options)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
framework.Failf("Failed to list pods to verify deletion: %v", err)
|
framework.Failf("Failed to list pods to verify deletion: %v", err)
|
||||||
|
@ -45,14 +45,14 @@ import (
|
|||||||
"k8s.io/kubernetes/test/integration/framework"
|
"k8s.io/kubernetes/test/integration/framework"
|
||||||
)
|
)
|
||||||
|
|
||||||
func getOrphanOptions() *api.DeleteOptions {
|
func getOrphanOptions() *v1.DeleteOptions {
|
||||||
var trueVar = true
|
var trueVar = true
|
||||||
return &api.DeleteOptions{OrphanDependents: &trueVar}
|
return &v1.DeleteOptions{OrphanDependents: &trueVar}
|
||||||
}
|
}
|
||||||
|
|
||||||
func getNonOrphanOptions() *api.DeleteOptions {
|
func getNonOrphanOptions() *v1.DeleteOptions {
|
||||||
var falseVar = false
|
var falseVar = false
|
||||||
return &api.DeleteOptions{OrphanDependents: &falseVar}
|
return &v1.DeleteOptions{OrphanDependents: &falseVar}
|
||||||
}
|
}
|
||||||
|
|
||||||
const garbageCollectedPodName = "test.pod.1"
|
const garbageCollectedPodName = "test.pod.1"
|
||||||
@ -166,7 +166,7 @@ func TestCascadingDeletion(t *testing.T) {
|
|||||||
t.Fatalf("Failed to create replication controller: %v", err)
|
t.Fatalf("Failed to create replication controller: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
rcs, err := rcClient.List(api.ListOptions{})
|
rcs, err := rcClient.List(v1.ListOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Failed to list replication controllers: %v", err)
|
t.Fatalf("Failed to list replication controllers: %v", err)
|
||||||
}
|
}
|
||||||
@ -199,7 +199,7 @@ func TestCascadingDeletion(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// set up watch
|
// set up watch
|
||||||
pods, err := podClient.List(api.ListOptions{})
|
pods, err := podClient.List(v1.ListOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Failed to list pods: %v", err)
|
t.Fatalf("Failed to list pods: %v", err)
|
||||||
}
|
}
|
||||||
@ -251,7 +251,7 @@ func TestCreateWithNonExistentOwner(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// set up watch
|
// set up watch
|
||||||
pods, err := podClient.List(api.ListOptions{})
|
pods, err := podClient.List(v1.ListOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Failed to list pods: %v", err)
|
t.Fatalf("Failed to list pods: %v", err)
|
||||||
}
|
}
|
||||||
@ -267,7 +267,7 @@ func TestCreateWithNonExistentOwner(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func setupRCsPods(t *testing.T, gc *garbagecollector.GarbageCollector, clientSet clientset.Interface, nameSuffix, namespace string, initialFinalizers []string, options *api.DeleteOptions, wg *sync.WaitGroup, rcUIDs chan types.UID) {
|
func setupRCsPods(t *testing.T, gc *garbagecollector.GarbageCollector, clientSet clientset.Interface, nameSuffix, namespace string, initialFinalizers []string, options *v1.DeleteOptions, wg *sync.WaitGroup, rcUIDs chan types.UID) {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
rcClient := clientSet.Core().ReplicationControllers(namespace)
|
rcClient := clientSet.Core().ReplicationControllers(namespace)
|
||||||
podClient := clientSet.Core().Pods(namespace)
|
podClient := clientSet.Core().Pods(namespace)
|
||||||
@ -307,7 +307,7 @@ func setupRCsPods(t *testing.T, gc *garbagecollector.GarbageCollector, clientSet
|
|||||||
func verifyRemainingObjects(t *testing.T, clientSet clientset.Interface, namespace string, rcNum, podNum int) (bool, error) {
|
func verifyRemainingObjects(t *testing.T, clientSet clientset.Interface, namespace string, rcNum, podNum int) (bool, error) {
|
||||||
rcClient := clientSet.Core().ReplicationControllers(namespace)
|
rcClient := clientSet.Core().ReplicationControllers(namespace)
|
||||||
podClient := clientSet.Core().Pods(namespace)
|
podClient := clientSet.Core().Pods(namespace)
|
||||||
pods, err := podClient.List(api.ListOptions{})
|
pods, err := podClient.List(v1.ListOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, fmt.Errorf("Failed to list pods: %v", err)
|
return false, fmt.Errorf("Failed to list pods: %v", err)
|
||||||
}
|
}
|
||||||
@ -316,7 +316,7 @@ func verifyRemainingObjects(t *testing.T, clientSet clientset.Interface, namespa
|
|||||||
ret = false
|
ret = false
|
||||||
t.Logf("expect %d pods, got %d pods", podNum, len(pods.Items))
|
t.Logf("expect %d pods, got %d pods", podNum, len(pods.Items))
|
||||||
}
|
}
|
||||||
rcs, err := rcClient.List(api.ListOptions{})
|
rcs, err := rcClient.List(v1.ListOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, fmt.Errorf("Failed to list replication controllers: %v", err)
|
return false, fmt.Errorf("Failed to list replication controllers: %v", err)
|
||||||
}
|
}
|
||||||
@ -371,7 +371,7 @@ func TestStressingCascadingDeletion(t *testing.T) {
|
|||||||
|
|
||||||
// verify the remaining pods all have "orphan" in their names.
|
// verify the remaining pods all have "orphan" in their names.
|
||||||
podClient := clientSet.Core().Pods(ns.Name)
|
podClient := clientSet.Core().Pods(ns.Name)
|
||||||
pods, err := podClient.List(api.ListOptions{})
|
pods, err := podClient.List(v1.ListOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
@ -448,7 +448,7 @@ func TestOrphaning(t *testing.T) {
|
|||||||
}
|
}
|
||||||
// verify the toBeDeleteRC is deleted
|
// verify the toBeDeleteRC is deleted
|
||||||
if err := wait.PollImmediate(5*time.Second, 30*time.Second, func() (bool, error) {
|
if err := wait.PollImmediate(5*time.Second, 30*time.Second, func() (bool, error) {
|
||||||
rcs, err := rcClient.List(api.ListOptions{})
|
rcs, err := rcClient.List(v1.ListOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
@ -462,7 +462,7 @@ func TestOrphaning(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// verify pods don't have the ownerPod as an owner anymore
|
// verify pods don't have the ownerPod as an owner anymore
|
||||||
pods, err := podClient.List(api.ListOptions{})
|
pods, err := podClient.List(v1.ListOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Failed to list pods: %v", err)
|
t.Fatalf("Failed to list pods: %v", err)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user