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