From aba725a391d5c885354535d3cd5c01ae92d53ce1 Mon Sep 17 00:00:00 2001 From: dhilipkumars Date: Wed, 15 Nov 2017 17:21:34 +0530 Subject: [PATCH] Promote SS to apps/v1 --- cmd/kube-controller-manager/app/apps.go | 4 +- pkg/controller/history/BUILD | 8 ++-- pkg/controller/history/controller_history.go | 16 +++---- .../history/controller_history_test.go | 28 ++++++------ pkg/controller/statefulset/BUILD | 12 ++--- .../statefulset/stateful_pod_control.go | 4 +- pkg/controller/statefulset/stateful_set.go | 10 ++--- .../statefulset/stateful_set_control.go | 5 +-- .../statefulset/stateful_set_control_test.go | 26 +++++------ .../stateful_set_status_updater.go | 6 +-- .../stateful_set_status_updater_test.go | 31 ++++--------- .../statefulset/stateful_set_test.go | 12 ++--- .../statefulset/stateful_set_utils.go | 5 +-- .../statefulset/stateful_set_utils_test.go | 4 +- pkg/kubectl/BUILD | 2 + pkg/kubectl/history.go | 32 ++++++++++++-- pkg/kubectl/rollback.go | 44 +++++++++++++++++-- test/e2e/apps/BUILD | 2 +- test/e2e/apps/network_partition.go | 4 +- test/e2e/apps/statefulset.go | 25 ++++++----- test/e2e/framework/BUILD | 2 +- test/e2e/framework/statefulset_utils.go | 30 ++++++------- .../instrumentation/monitoring/influxdb.go | 2 +- test/e2e/manifest/BUILD | 2 +- test/e2e/manifest/manifest.go | 2 +- test/e2e/storage/BUILD | 2 +- test/e2e/storage/persistent_volumes-local.go | 12 ++--- .../statefulset/cassandra/statefulset.yaml | 2 +- .../statefulset/cockroachdb/statefulset.yaml | 2 +- .../statefulset/etcd/statefulset.yaml | 2 +- .../statefulset/mysql-galera/statefulset.yaml | 2 +- .../mysql-upgrade/statefulset.yaml | 2 +- .../statefulset/redis/statefulset.yaml | 2 +- .../statefulset/zookeeper/statefulset.yaml | 2 +- test/e2e/upgrades/apps/BUILD | 2 +- test/e2e/upgrades/apps/statefulset.go | 4 +- 36 files changed, 200 insertions(+), 152 deletions(-) diff --git a/cmd/kube-controller-manager/app/apps.go b/cmd/kube-controller-manager/app/apps.go index c3e475d940..c70a608cbc 100644 --- a/cmd/kube-controller-manager/app/apps.go +++ b/cmd/kube-controller-manager/app/apps.go @@ -31,9 +31,9 @@ func startStatefulSetController(ctx ControllerContext) (bool, error) { } go statefulset.NewStatefulSetController( ctx.InformerFactory.Core().V1().Pods(), - ctx.InformerFactory.Apps().V1beta1().StatefulSets(), + ctx.InformerFactory.Apps().V1().StatefulSets(), ctx.InformerFactory.Core().V1().PersistentVolumeClaims(), - ctx.InformerFactory.Apps().V1beta1().ControllerRevisions(), + ctx.InformerFactory.Apps().V1().ControllerRevisions(), ctx.ClientBuilder.ClientOrDie("statefulset-controller"), ).Run(1, ctx.Stop) return true, nil diff --git a/pkg/controller/history/BUILD b/pkg/controller/history/BUILD index fa3fe327bc..5064857e08 100644 --- a/pkg/controller/history/BUILD +++ b/pkg/controller/history/BUILD @@ -14,7 +14,7 @@ go_test( deps = [ "//pkg/api/testapi:go_default_library", "//pkg/controller:go_default_library", - "//vendor/k8s.io/api/apps/v1beta1:go_default_library", + "//vendor/k8s.io/api/apps/v1:go_default_library", "//vendor/k8s.io/api/core/v1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", @@ -35,7 +35,7 @@ go_library( importpath = "k8s.io/kubernetes/pkg/controller/history", deps = [ "//pkg/util/hash:go_default_library", - "//vendor/k8s.io/api/apps/v1beta1:go_default_library", + "//vendor/k8s.io/api/apps/v1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", @@ -44,9 +44,9 @@ go_library( "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/rand:go_default_library", - "//vendor/k8s.io/client-go/informers/apps/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/informers/apps/v1:go_default_library", "//vendor/k8s.io/client-go/kubernetes:go_default_library", - "//vendor/k8s.io/client-go/listers/apps/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/listers/apps/v1:go_default_library", "//vendor/k8s.io/client-go/tools/cache:go_default_library", "//vendor/k8s.io/client-go/util/retry:go_default_library", ], diff --git a/pkg/controller/history/controller_history.go b/pkg/controller/history/controller_history.go index 40281adcf1..bf88063ef9 100644 --- a/pkg/controller/history/controller_history.go +++ b/pkg/controller/history/controller_history.go @@ -23,10 +23,10 @@ import ( "sort" "strconv" - apps "k8s.io/api/apps/v1beta1" - appsinformers "k8s.io/client-go/informers/apps/v1beta1" + apps "k8s.io/api/apps/v1" + appsinformers "k8s.io/client-go/informers/apps/v1" clientset "k8s.io/client-go/kubernetes" - appslisters "k8s.io/client-go/listers/apps/v1beta1" + appslisters "k8s.io/client-go/listers/apps/v1" hashutil "k8s.io/kubernetes/pkg/util/hash" apiequality "k8s.io/apimachinery/pkg/api/equality" @@ -251,7 +251,7 @@ func (rh *realHistory) CreateControllerRevision(parent metav1.Object, revision * hash := HashControllerRevision(revision, collisionCount) // Update the revisions name and labels clone.Name = ControllerRevisionName(parent.GetName(), hash) - created, err := rh.client.AppsV1beta1().ControllerRevisions(parent.GetNamespace()).Create(clone) + created, err := rh.client.AppsV1().ControllerRevisions(parent.GetNamespace()).Create(clone) if errors.IsAlreadyExists(err) { *collisionCount++ continue @@ -267,7 +267,7 @@ func (rh *realHistory) UpdateControllerRevision(revision *apps.ControllerRevisio return nil } clone.Revision = newRevision - updated, updateErr := rh.client.AppsV1beta1().ControllerRevisions(clone.Namespace).Update(clone) + updated, updateErr := rh.client.AppsV1().ControllerRevisions(clone.Namespace).Update(clone) if updateErr == nil { return nil } @@ -284,7 +284,7 @@ func (rh *realHistory) UpdateControllerRevision(revision *apps.ControllerRevisio } func (rh *realHistory) DeleteControllerRevision(revision *apps.ControllerRevision) error { - return rh.client.AppsV1beta1().ControllerRevisions(revision.Namespace).Delete(revision.Name, nil) + return rh.client.AppsV1().ControllerRevisions(revision.Namespace).Delete(revision.Name, nil) } func (rh *realHistory) AdoptControllerRevision(parent metav1.Object, parentKind schema.GroupVersionKind, revision *apps.ControllerRevision) (*apps.ControllerRevision, error) { @@ -293,7 +293,7 @@ func (rh *realHistory) AdoptControllerRevision(parent metav1.Object, parentKind return nil, fmt.Errorf("attempt to adopt revision owned by %v", owner) } // Use strategic merge patch to add an owner reference indicating a controller ref - return rh.client.AppsV1beta1().ControllerRevisions(parent.GetNamespace()).Patch(revision.GetName(), + return rh.client.AppsV1().ControllerRevisions(parent.GetNamespace()).Patch(revision.GetName(), types.StrategicMergePatchType, []byte(fmt.Sprintf( `{"metadata":{"ownerReferences":[{"apiVersion":"%s","kind":"%s","name":"%s","uid":"%s","controller":true,"blockOwnerDeletion":true}],"uid":"%s"}}`, parentKind.GroupVersion().String(), parentKind.Kind, @@ -302,7 +302,7 @@ func (rh *realHistory) AdoptControllerRevision(parent metav1.Object, parentKind func (rh *realHistory) ReleaseControllerRevision(parent metav1.Object, revision *apps.ControllerRevision) (*apps.ControllerRevision, error) { // Use strategic merge patch to add an owner reference indicating a controller ref - released, err := rh.client.AppsV1beta1().ControllerRevisions(revision.GetNamespace()).Patch(revision.GetName(), + released, err := rh.client.AppsV1().ControllerRevisions(revision.GetNamespace()).Patch(revision.GetName(), types.StrategicMergePatchType, []byte(fmt.Sprintf(`{"metadata":{"ownerReferences":[{"$patch":"delete","uid":"%s"}],"uid":"%s"}}`, parent.GetUID(), revision.UID))) diff --git a/pkg/controller/history/controller_history_test.go b/pkg/controller/history/controller_history_test.go index 5e9c1eadf1..e55cbd966a 100644 --- a/pkg/controller/history/controller_history_test.go +++ b/pkg/controller/history/controller_history_test.go @@ -23,7 +23,7 @@ import ( "reflect" "testing" - apps "k8s.io/api/apps/v1beta1" + apps "k8s.io/api/apps/v1" "k8s.io/api/core/v1" "k8s.io/client-go/informers" "k8s.io/client-go/kubernetes/fake" @@ -56,7 +56,7 @@ func TestRealHistory_ListControllerRevisions(t *testing.T) { stop := make(chan struct{}) defer close(stop) informerFactory.Start(stop) - informer := informerFactory.Apps().V1beta1().ControllerRevisions() + informer := informerFactory.Apps().V1().ControllerRevisions() informerFactory.WaitForCacheSync(stop) for i := range test.revisions { informer.Informer().GetIndexer().Add(test.revisions[i]) @@ -157,7 +157,7 @@ func TestFakeHistory_ListControllerRevisions(t *testing.T) { stop := make(chan struct{}) defer close(stop) informerFactory.Start(stop) - informer := informerFactory.Apps().V1beta1().ControllerRevisions() + informer := informerFactory.Apps().V1().ControllerRevisions() informerFactory.WaitForCacheSync(stop) for i := range test.revisions { informer.Informer().GetIndexer().Add(test.revisions[i]) @@ -260,7 +260,7 @@ func TestRealHistory_CreateControllerRevision(t *testing.T) { stop := make(chan struct{}) defer close(stop) informerFactory.Start(stop) - informer := informerFactory.Apps().V1beta1().ControllerRevisions() + informer := informerFactory.Apps().V1().ControllerRevisions() informerFactory.WaitForCacheSync(stop) history := NewHistory(client, informer.Lister()) @@ -391,7 +391,7 @@ func TestFakeHistory_CreateControllerRevision(t *testing.T) { stop := make(chan struct{}) defer close(stop) informerFactory.Start(stop) - informer := informerFactory.Apps().V1beta1().ControllerRevisions() + informer := informerFactory.Apps().V1().ControllerRevisions() informerFactory.WaitForCacheSync(stop) history := NewFakeHistory(informer) @@ -549,7 +549,7 @@ func TestRealHistory_UpdateControllerRevision(t *testing.T) { stop := make(chan struct{}) defer close(stop) informerFactory.Start(stop) - informer := informerFactory.Apps().V1beta1().ControllerRevisions() + informer := informerFactory.Apps().V1().ControllerRevisions() informerFactory.WaitForCacheSync(stop) history := NewHistory(client, informer.Lister()) var collisionCount int32 @@ -681,7 +681,7 @@ func TestFakeHistory_UpdateControllerRevision(t *testing.T) { stop := make(chan struct{}) defer close(stop) informerFactory.Start(stop) - informer := informerFactory.Apps().V1beta1().ControllerRevisions() + informer := informerFactory.Apps().V1().ControllerRevisions() informerFactory.WaitForCacheSync(stop) history := NewFakeHistory(informer) var collisionCount int32 @@ -773,7 +773,7 @@ func TestRealHistory_DeleteControllerRevision(t *testing.T) { stop := make(chan struct{}) defer close(stop) informerFactory.Start(stop) - informer := informerFactory.Apps().V1beta1().ControllerRevisions() + informer := informerFactory.Apps().V1().ControllerRevisions() informerFactory.WaitForCacheSync(stop) history := NewHistory(client, informer.Lister()) var collisionCount int32 @@ -884,7 +884,7 @@ func TestFakeHistory_DeleteControllerRevision(t *testing.T) { stop := make(chan struct{}) defer close(stop) informerFactory.Start(stop) - informer := informerFactory.Apps().V1beta1().ControllerRevisions() + informer := informerFactory.Apps().V1().ControllerRevisions() informerFactory.WaitForCacheSync(stop) history := NewFakeHistory(informer) var collisionCount int32 @@ -1029,7 +1029,7 @@ func TestRealHistory_AdoptControllerRevision(t *testing.T) { stop := make(chan struct{}) defer close(stop) informerFactory.Start(stop) - informer := informerFactory.Apps().V1beta1().ControllerRevisions() + informer := informerFactory.Apps().V1().ControllerRevisions() informerFactory.WaitForCacheSync(stop) history := NewHistory(client, informer.Lister()) @@ -1143,7 +1143,7 @@ func TestFakeHistory_AdoptControllerRevision(t *testing.T) { stop := make(chan struct{}) defer close(stop) informerFactory.Start(stop) - informer := informerFactory.Apps().V1beta1().ControllerRevisions() + informer := informerFactory.Apps().V1().ControllerRevisions() informerFactory.WaitForCacheSync(stop) history := NewFakeHistory(informer) @@ -1296,7 +1296,7 @@ func TestRealHistory_ReleaseControllerRevision(t *testing.T) { stop := make(chan struct{}) defer close(stop) informerFactory.Start(stop) - informer := informerFactory.Apps().V1beta1().ControllerRevisions() + informer := informerFactory.Apps().V1().ControllerRevisions() informerFactory.WaitForCacheSync(stop) history := NewHistory(client, informer.Lister()) @@ -1426,7 +1426,7 @@ func TestFakeHistory_ReleaseControllerRevision(t *testing.T) { stop := make(chan struct{}) defer close(stop) informerFactory.Start(stop) - informer := informerFactory.Apps().V1beta1().ControllerRevisions() + informer := informerFactory.Apps().V1().ControllerRevisions() informerFactory.WaitForCacheSync(stop) history := NewFakeHistory(informer) var collisionCount int32 @@ -1685,7 +1685,7 @@ func newStatefulSet(replicas int, name string, uid types.UID, labels map[string] return &apps.StatefulSet{ TypeMeta: metav1.TypeMeta{ Kind: "StatefulSet", - APIVersion: "apps/v1beta1", + APIVersion: "apps/v1", }, ObjectMeta: metav1.ObjectMeta{ Name: name, diff --git a/pkg/controller/statefulset/BUILD b/pkg/controller/statefulset/BUILD index b38f1119d9..2ff7579399 100644 --- a/pkg/controller/statefulset/BUILD +++ b/pkg/controller/statefulset/BUILD @@ -21,7 +21,7 @@ go_library( "//pkg/controller:go_default_library", "//pkg/controller/history:go_default_library", "//vendor/github.com/golang/glog:go_default_library", - "//vendor/k8s.io/api/apps/v1beta1:go_default_library", + "//vendor/k8s.io/api/apps/v1:go_default_library", "//vendor/k8s.io/api/core/v1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", @@ -31,12 +31,12 @@ go_library( "//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/strategicpatch:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", - "//vendor/k8s.io/client-go/informers/apps/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/informers/apps/v1:go_default_library", "//vendor/k8s.io/client-go/informers/core/v1:go_default_library", "//vendor/k8s.io/client-go/kubernetes:go_default_library", "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", "//vendor/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", - "//vendor/k8s.io/client-go/listers/apps/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/listers/apps/v1:go_default_library", "//vendor/k8s.io/client-go/listers/core/v1:go_default_library", "//vendor/k8s.io/client-go/tools/cache:go_default_library", "//vendor/k8s.io/client-go/tools/record:go_default_library", @@ -62,7 +62,7 @@ go_test( "//pkg/apis/core/install:go_default_library", "//pkg/controller:go_default_library", "//pkg/controller/history:go_default_library", - "//vendor/k8s.io/api/apps/v1beta1:go_default_library", + "//vendor/k8s.io/api/apps/v1:go_default_library", "//vendor/k8s.io/api/core/v1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", @@ -72,11 +72,11 @@ go_test( "//vendor/k8s.io/apimachinery/pkg/types:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//vendor/k8s.io/client-go/informers:go_default_library", - "//vendor/k8s.io/client-go/informers/apps/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/informers/apps/v1:go_default_library", "//vendor/k8s.io/client-go/informers/core/v1:go_default_library", "//vendor/k8s.io/client-go/kubernetes:go_default_library", "//vendor/k8s.io/client-go/kubernetes/fake:go_default_library", - "//vendor/k8s.io/client-go/listers/apps/v1beta1:go_default_library", + "//vendor/k8s.io/client-go/listers/apps/v1:go_default_library", "//vendor/k8s.io/client-go/listers/core/v1:go_default_library", "//vendor/k8s.io/client-go/testing:go_default_library", "//vendor/k8s.io/client-go/tools/cache:go_default_library", diff --git a/pkg/controller/statefulset/stateful_pod_control.go b/pkg/controller/statefulset/stateful_pod_control.go index fff0804629..a86b0d000e 100644 --- a/pkg/controller/statefulset/stateful_pod_control.go +++ b/pkg/controller/statefulset/stateful_pod_control.go @@ -20,13 +20,13 @@ import ( "fmt" "strings" - apps "k8s.io/api/apps/v1beta1" + apps "k8s.io/api/apps/v1" "k8s.io/api/core/v1" apierrors "k8s.io/apimachinery/pkg/api/errors" errorutils "k8s.io/apimachinery/pkg/util/errors" utilruntime "k8s.io/apimachinery/pkg/util/runtime" clientset "k8s.io/client-go/kubernetes" - appslisters "k8s.io/client-go/listers/apps/v1beta1" + appslisters "k8s.io/client-go/listers/apps/v1" corelisters "k8s.io/client-go/listers/core/v1" "k8s.io/client-go/tools/record" "k8s.io/client-go/util/retry" diff --git a/pkg/controller/statefulset/stateful_set.go b/pkg/controller/statefulset/stateful_set.go index 279492c89d..1890fb271c 100644 --- a/pkg/controller/statefulset/stateful_set.go +++ b/pkg/controller/statefulset/stateful_set.go @@ -21,19 +21,19 @@ import ( "reflect" "time" - apps "k8s.io/api/apps/v1beta1" + apps "k8s.io/api/apps/v1" "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" utilruntime "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/apimachinery/pkg/util/wait" - appsinformers "k8s.io/client-go/informers/apps/v1beta1" + appsinformers "k8s.io/client-go/informers/apps/v1" coreinformers "k8s.io/client-go/informers/core/v1" clientset "k8s.io/client-go/kubernetes" "k8s.io/client-go/kubernetes/scheme" v1core "k8s.io/client-go/kubernetes/typed/core/v1" - appslisters "k8s.io/client-go/listers/apps/v1beta1" + appslisters "k8s.io/client-go/listers/apps/v1" corelisters "k8s.io/client-go/listers/core/v1" "k8s.io/client-go/tools/cache" "k8s.io/client-go/tools/record" @@ -298,7 +298,7 @@ func (ssc *StatefulSetController) getPodsForStatefulSet(set *apps.StatefulSet, s // If any adoptions are attempted, we should first recheck for deletion with // an uncached quorum read sometime after listing Pods (see #42639). canAdoptFunc := controller.RecheckDeletionTimestamp(func() (metav1.Object, error) { - fresh, err := ssc.kubeClient.AppsV1beta1().StatefulSets(set.Namespace).Get(set.Name, metav1.GetOptions{}) + fresh, err := ssc.kubeClient.AppsV1().StatefulSets(set.Namespace).Get(set.Name, metav1.GetOptions{}) if err != nil { return nil, err } @@ -326,7 +326,7 @@ func (ssc *StatefulSetController) adoptOrphanRevisions(set *apps.StatefulSet) er } } if hasOrphans { - fresh, err := ssc.kubeClient.AppsV1beta1().StatefulSets(set.Namespace).Get(set.Name, metav1.GetOptions{}) + fresh, err := ssc.kubeClient.AppsV1().StatefulSets(set.Namespace).Get(set.Name, metav1.GetOptions{}) if err != nil { return err } diff --git a/pkg/controller/statefulset/stateful_set_control.go b/pkg/controller/statefulset/stateful_set_control.go index bddf1d6e55..6f0c55fa92 100644 --- a/pkg/controller/statefulset/stateful_set_control.go +++ b/pkg/controller/statefulset/stateful_set_control.go @@ -22,7 +22,7 @@ import ( "github.com/golang/glog" - apps "k8s.io/api/apps/v1beta1" + apps "k8s.io/api/apps/v1" "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/tools/record" @@ -269,8 +269,7 @@ func (ssc *defaultStatefulSetControl) updateStatefulSet( // set the generation, and revisions in the returned status status := apps.StatefulSetStatus{} - status.ObservedGeneration = new(int64) - *status.ObservedGeneration = set.Generation + status.ObservedGeneration = set.Generation status.CurrentRevision = currentRevision.Name status.UpdateRevision = updateRevision.Name status.CollisionCount = new(int32) diff --git a/pkg/controller/statefulset/stateful_set_control_test.go b/pkg/controller/statefulset/stateful_set_control_test.go index 12d926b15e..d3a21577c2 100644 --- a/pkg/controller/statefulset/stateful_set_control_test.go +++ b/pkg/controller/statefulset/stateful_set_control_test.go @@ -28,17 +28,17 @@ import ( "testing" "time" - apps "k8s.io/api/apps/v1beta1" + apps "k8s.io/api/apps/v1" "k8s.io/api/core/v1" apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/labels" "k8s.io/client-go/informers" - appsinformers "k8s.io/client-go/informers/apps/v1beta1" + appsinformers "k8s.io/client-go/informers/apps/v1" coreinformers "k8s.io/client-go/informers/core/v1" clientset "k8s.io/client-go/kubernetes" "k8s.io/client-go/kubernetes/fake" - appslisters "k8s.io/client-go/listers/apps/v1beta1" + appslisters "k8s.io/client-go/listers/apps/v1" corelisters "k8s.io/client-go/listers/core/v1" "k8s.io/client-go/tools/cache" "k8s.io/client-go/tools/record" @@ -51,18 +51,18 @@ type invariantFunc func(set *apps.StatefulSet, spc *fakeStatefulPodControl) erro func setupController(client clientset.Interface) (*fakeStatefulPodControl, *fakeStatefulSetStatusUpdater, StatefulSetControlInterface, chan struct{}) { informerFactory := informers.NewSharedInformerFactory(client, controller.NoResyncPeriodFunc()) - spc := newFakeStatefulPodControl(informerFactory.Core().V1().Pods(), informerFactory.Apps().V1beta1().StatefulSets()) - ssu := newFakeStatefulSetStatusUpdater(informerFactory.Apps().V1beta1().StatefulSets()) + spc := newFakeStatefulPodControl(informerFactory.Core().V1().Pods(), informerFactory.Apps().V1().StatefulSets()) + ssu := newFakeStatefulSetStatusUpdater(informerFactory.Apps().V1().StatefulSets()) recorder := record.NewFakeRecorder(10) - ssc := NewDefaultStatefulSetControl(spc, ssu, history.NewFakeHistory(informerFactory.Apps().V1beta1().ControllerRevisions()), recorder) + ssc := NewDefaultStatefulSetControl(spc, ssu, history.NewFakeHistory(informerFactory.Apps().V1().ControllerRevisions()), recorder) stop := make(chan struct{}) informerFactory.Start(stop) cache.WaitForCacheSync( stop, - informerFactory.Apps().V1beta1().StatefulSets().Informer().HasSynced, + informerFactory.Apps().V1().StatefulSets().Informer().HasSynced, informerFactory.Core().V1().Pods().Informer().HasSynced, - informerFactory.Apps().V1beta1().ControllerRevisions().Informer().HasSynced, + informerFactory.Apps().V1().ControllerRevisions().Informer().HasSynced, ) return spc, ssu, ssc, stop } @@ -452,19 +452,19 @@ func TestStatefulSetControl_getSetRevisions(t *testing.T) { testFn := func(test *testcase, t *testing.T) { client := fake.NewSimpleClientset() informerFactory := informers.NewSharedInformerFactory(client, controller.NoResyncPeriodFunc()) - spc := newFakeStatefulPodControl(informerFactory.Core().V1().Pods(), informerFactory.Apps().V1beta1().StatefulSets()) - ssu := newFakeStatefulSetStatusUpdater(informerFactory.Apps().V1beta1().StatefulSets()) + spc := newFakeStatefulPodControl(informerFactory.Core().V1().Pods(), informerFactory.Apps().V1().StatefulSets()) + ssu := newFakeStatefulSetStatusUpdater(informerFactory.Apps().V1().StatefulSets()) recorder := record.NewFakeRecorder(10) - ssc := defaultStatefulSetControl{spc, ssu, history.NewFakeHistory(informerFactory.Apps().V1beta1().ControllerRevisions()), recorder} + ssc := defaultStatefulSetControl{spc, ssu, history.NewFakeHistory(informerFactory.Apps().V1().ControllerRevisions()), recorder} stop := make(chan struct{}) defer close(stop) informerFactory.Start(stop) cache.WaitForCacheSync( stop, - informerFactory.Apps().V1beta1().StatefulSets().Informer().HasSynced, + informerFactory.Apps().V1().StatefulSets().Informer().HasSynced, informerFactory.Core().V1().Pods().Informer().HasSynced, - informerFactory.Apps().V1beta1().ControllerRevisions().Informer().HasSynced, + informerFactory.Apps().V1().ControllerRevisions().Informer().HasSynced, ) test.set.Status.CollisionCount = new(int32) for i := range test.existing { diff --git a/pkg/controller/statefulset/stateful_set_status_updater.go b/pkg/controller/statefulset/stateful_set_status_updater.go index d56e01469a..78b22dbbb5 100644 --- a/pkg/controller/statefulset/stateful_set_status_updater.go +++ b/pkg/controller/statefulset/stateful_set_status_updater.go @@ -19,10 +19,10 @@ package statefulset import ( "fmt" - apps "k8s.io/api/apps/v1beta1" + apps "k8s.io/api/apps/v1" utilruntime "k8s.io/apimachinery/pkg/util/runtime" clientset "k8s.io/client-go/kubernetes" - appslisters "k8s.io/client-go/listers/apps/v1beta1" + appslisters "k8s.io/client-go/listers/apps/v1" "k8s.io/client-go/util/retry" ) @@ -53,7 +53,7 @@ func (ssu *realStatefulSetStatusUpdater) UpdateStatefulSetStatus( // don't wait due to limited number of clients, but backoff after the default number of steps return retry.RetryOnConflict(retry.DefaultRetry, func() error { set.Status = *status - _, updateErr := ssu.client.AppsV1beta1().StatefulSets(set.Namespace).UpdateStatus(set) + _, updateErr := ssu.client.AppsV1().StatefulSets(set.Namespace).UpdateStatus(set) if updateErr == nil { return nil } diff --git a/pkg/controller/statefulset/stateful_set_status_updater_test.go b/pkg/controller/statefulset/stateful_set_status_updater_test.go index 5055bb49e4..1f4ab9c5b8 100644 --- a/pkg/controller/statefulset/stateful_set_status_updater_test.go +++ b/pkg/controller/statefulset/stateful_set_status_updater_test.go @@ -26,17 +26,14 @@ import ( core "k8s.io/client-go/testing" "k8s.io/client-go/tools/cache" - apps "k8s.io/api/apps/v1beta1" + apps "k8s.io/api/apps/v1" "k8s.io/client-go/kubernetes/fake" - appslisters "k8s.io/client-go/listers/apps/v1beta1" + appslisters "k8s.io/client-go/listers/apps/v1" ) func TestStatefulSetUpdaterUpdatesSetStatus(t *testing.T) { set := newStatefulSet(3) - status := apps.StatefulSetStatus{ObservedGeneration: func() *int64 { - i := int64(1) - return &i - }(), Replicas: 2} + status := apps.StatefulSetStatus{ObservedGeneration: 1, Replicas: 2} fakeClient := &fake.Clientset{} updater := NewRealStatefulSetStatusUpdater(fakeClient, nil) fakeClient.AddReactor("update", "statefulsets", func(action core.Action) (bool, runtime.Object, error) { @@ -53,16 +50,13 @@ func TestStatefulSetUpdaterUpdatesSetStatus(t *testing.T) { func TestStatefulSetStatusUpdaterUpdatesObservedGeneration(t *testing.T) { set := newStatefulSet(3) - status := apps.StatefulSetStatus{ObservedGeneration: func() *int64 { - i := int64(3) - return &i - }(), Replicas: 2} + status := apps.StatefulSetStatus{ObservedGeneration: 3, Replicas: 2} fakeClient := &fake.Clientset{} updater := NewRealStatefulSetStatusUpdater(fakeClient, nil) fakeClient.AddReactor("update", "statefulsets", func(action core.Action) (bool, runtime.Object, error) { update := action.(core.UpdateAction) sts := update.GetObject().(*apps.StatefulSet) - if sts.Status.ObservedGeneration == nil || *sts.Status.ObservedGeneration != int64(3) { + if sts.Status.ObservedGeneration != 3 { t.Errorf("expected observedGeneration to be synced with generation for statefulset %q", sts.Name) } return true, sts, nil @@ -74,10 +68,7 @@ func TestStatefulSetStatusUpdaterUpdatesObservedGeneration(t *testing.T) { func TestStatefulSetStatusUpdaterUpdateReplicasFailure(t *testing.T) { set := newStatefulSet(3) - status := apps.StatefulSetStatus{ObservedGeneration: func() *int64 { - i := int64(3) - return &i - }(), Replicas: 2} + status := apps.StatefulSetStatus{ObservedGeneration: 3, Replicas: 2} fakeClient := &fake.Clientset{} indexer := cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}) indexer.Add(set) @@ -93,10 +84,7 @@ func TestStatefulSetStatusUpdaterUpdateReplicasFailure(t *testing.T) { func TestStatefulSetStatusUpdaterUpdateReplicasConflict(t *testing.T) { set := newStatefulSet(3) - status := apps.StatefulSetStatus{ObservedGeneration: func() *int64 { - i := int64(3) - return &i - }(), Replicas: 2} + status := apps.StatefulSetStatus{ObservedGeneration: 3, Replicas: 2} conflict := false fakeClient := &fake.Clientset{} indexer := cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}) @@ -122,10 +110,7 @@ func TestStatefulSetStatusUpdaterUpdateReplicasConflict(t *testing.T) { func TestStatefulSetStatusUpdaterUpdateReplicasConflictFailure(t *testing.T) { set := newStatefulSet(3) - status := apps.StatefulSetStatus{ObservedGeneration: func() *int64 { - i := int64(3) - return &i - }(), Replicas: 2} + status := apps.StatefulSetStatus{ObservedGeneration: 3, Replicas: 2} fakeClient := &fake.Clientset{} indexer := cache.NewIndexer(cache.MetaNamespaceKeyFunc, cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc}) indexer.Add(set) diff --git a/pkg/controller/statefulset/stateful_set_test.go b/pkg/controller/statefulset/stateful_set_test.go index 632f799c53..3893753d1d 100644 --- a/pkg/controller/statefulset/stateful_set_test.go +++ b/pkg/controller/statefulset/stateful_set_test.go @@ -20,7 +20,7 @@ import ( "sort" "testing" - apps "k8s.io/api/apps/v1beta1" + apps "k8s.io/api/apps/v1" "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" @@ -574,16 +574,16 @@ func TestGetPodsForStatefulSetRelease(t *testing.T) { func newFakeStatefulSetController(initialObjects ...runtime.Object) (*StatefulSetController, *fakeStatefulPodControl) { client := fake.NewSimpleClientset(initialObjects...) informerFactory := informers.NewSharedInformerFactory(client, controller.NoResyncPeriodFunc()) - fpc := newFakeStatefulPodControl(informerFactory.Core().V1().Pods(), informerFactory.Apps().V1beta1().StatefulSets()) - ssu := newFakeStatefulSetStatusUpdater(informerFactory.Apps().V1beta1().StatefulSets()) + fpc := newFakeStatefulPodControl(informerFactory.Core().V1().Pods(), informerFactory.Apps().V1().StatefulSets()) + ssu := newFakeStatefulSetStatusUpdater(informerFactory.Apps().V1().StatefulSets()) ssc := NewStatefulSetController( informerFactory.Core().V1().Pods(), - informerFactory.Apps().V1beta1().StatefulSets(), + informerFactory.Apps().V1().StatefulSets(), informerFactory.Core().V1().PersistentVolumeClaims(), - informerFactory.Apps().V1beta1().ControllerRevisions(), + informerFactory.Apps().V1().ControllerRevisions(), client, ) - ssh := history.NewFakeHistory(informerFactory.Apps().V1beta1().ControllerRevisions()) + ssh := history.NewFakeHistory(informerFactory.Apps().V1().ControllerRevisions()) ssc.podListerSynced = alwaysReady ssc.setListerSynced = alwaysReady recorder := record.NewFakeRecorder(10) diff --git a/pkg/controller/statefulset/stateful_set_utils.go b/pkg/controller/statefulset/stateful_set_utils.go index 4e23784ac3..d6b4189f11 100644 --- a/pkg/controller/statefulset/stateful_set_utils.go +++ b/pkg/controller/statefulset/stateful_set_utils.go @@ -23,7 +23,7 @@ import ( "regexp" "strconv" - apps "k8s.io/api/apps/v1beta1" + apps "k8s.io/api/apps/v1" "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" @@ -363,8 +363,7 @@ func nextRevision(revisions []*apps.ControllerRevision) int64 { // inconsistentStatus returns true if the ObservedGeneration of status is greater than set's // Generation or if any of the status's fields do not match those of set's status. func inconsistentStatus(set *apps.StatefulSet, status *apps.StatefulSetStatus) bool { - return set.Status.ObservedGeneration == nil || - *status.ObservedGeneration > *set.Status.ObservedGeneration || + return status.ObservedGeneration > set.Status.ObservedGeneration || status.Replicas != set.Status.Replicas || status.CurrentReplicas != set.Status.CurrentReplicas || status.ReadyReplicas != set.Status.ReadyReplicas || diff --git a/pkg/controller/statefulset/stateful_set_utils_test.go b/pkg/controller/statefulset/stateful_set_utils_test.go index af5b71c02e..cba555d9cb 100644 --- a/pkg/controller/statefulset/stateful_set_utils_test.go +++ b/pkg/controller/statefulset/stateful_set_utils_test.go @@ -28,7 +28,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" - apps "k8s.io/api/apps/v1beta1" + apps "k8s.io/api/apps/v1" "k8s.io/api/core/v1" podutil "k8s.io/kubernetes/pkg/api/v1/pod" "k8s.io/kubernetes/pkg/controller/history" @@ -340,7 +340,7 @@ func newStatefulSetWithVolumes(replicas int, name string, petMounts []v1.VolumeM return &apps.StatefulSet{ TypeMeta: metav1.TypeMeta{ Kind: "StatefulSet", - APIVersion: "apps/v1beta1", + APIVersion: "apps/v1", }, ObjectMeta: metav1.ObjectMeta{ Name: name, diff --git a/pkg/kubectl/BUILD b/pkg/kubectl/BUILD index a67266440b..d0694ddd15 100644 --- a/pkg/kubectl/BUILD +++ b/pkg/kubectl/BUILD @@ -156,6 +156,7 @@ go_library( "//vendor/github.com/golang/glog:go_default_library", "//vendor/github.com/spf13/cobra:go_default_library", "//vendor/github.com/spf13/pflag:go_default_library", + "//vendor/k8s.io/api/apps/v1:go_default_library", "//vendor/k8s.io/api/apps/v1beta1:go_default_library", "//vendor/k8s.io/api/autoscaling/v1:go_default_library", "//vendor/k8s.io/api/batch/v1:go_default_library", @@ -187,6 +188,7 @@ go_library( "//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library", "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", "//vendor/k8s.io/client-go/kubernetes:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/typed/apps/v1:go_default_library", "//vendor/k8s.io/client-go/kubernetes/typed/apps/v1beta1:go_default_library", "//vendor/k8s.io/client-go/kubernetes/typed/extensions/v1beta1:go_default_library", "//vendor/k8s.io/client-go/rest:go_default_library", diff --git a/pkg/kubectl/history.go b/pkg/kubectl/history.go index 36f95776d2..3e4a02ac99 100644 --- a/pkg/kubectl/history.go +++ b/pkg/kubectl/history.go @@ -22,6 +22,7 @@ import ( "io" "text/tabwriter" + appsv1 "k8s.io/api/apps/v1" appsv1beta1 "k8s.io/api/apps/v1beta1" "k8s.io/api/core/v1" extensionsv1beta1 "k8s.io/api/extensions/v1beta1" @@ -33,6 +34,7 @@ import ( "k8s.io/apimachinery/pkg/util/json" "k8s.io/apimachinery/pkg/util/strategicpatch" "k8s.io/client-go/kubernetes" + clientappsv1 "k8s.io/client-go/kubernetes/typed/apps/v1" clientappsv1beta1 "k8s.io/client-go/kubernetes/typed/apps/v1beta1" clientextv1beta1 "k8s.io/client-go/kubernetes/typed/extensions/v1beta1" api "k8s.io/kubernetes/pkg/apis/core" @@ -241,7 +243,7 @@ type StatefulSetHistoryViewer struct { // TODO: this should be a describer // TODO: needs to implement detailed revision view func (h *StatefulSetHistoryViewer) ViewHistory(namespace, name string, revision int64) (string, error) { - _, history, err := statefulSetHistory(h.c.AppsV1beta1(), namespace, name) + _, history, err := statefulSetHistory(h.c.AppsV1(), namespace, name) if err != nil { return "", err } @@ -264,6 +266,28 @@ func (h *StatefulSetHistoryViewer) ViewHistory(namespace, name string, revision }) } +// controlledHistories returns all ControllerRevisions in namespace that selected by selector and owned by accessor +// TODO: Rename this to controllerHistory when other controllers have been upgraded +func controlledHistoryV1( + apps clientappsv1.AppsV1Interface, + namespace string, + selector labels.Selector, + accessor metav1.Object) ([]*appsv1.ControllerRevision, error) { + var result []*appsv1.ControllerRevision + historyList, err := apps.ControllerRevisions(namespace).List(metav1.ListOptions{LabelSelector: selector.String()}) + if err != nil { + return nil, err + } + for i := range historyList.Items { + history := historyList.Items[i] + // Only add history that belongs to the API object + if metav1.IsControlledBy(&history, accessor) { + result = append(result, &history) + } + } + return result, nil +} + // controlledHistories returns all ControllerRevisions in namespace that selected by selector and owned by accessor func controlledHistory( apps clientappsv1beta1.AppsV1beta1Interface, @@ -311,8 +335,8 @@ func daemonSetHistory( // statefulSetHistory returns the StatefulSet named name in namespace and all ControllerRevisions in its history. func statefulSetHistory( - apps clientappsv1beta1.AppsV1beta1Interface, - namespace, name string) (*appsv1beta1.StatefulSet, []*appsv1beta1.ControllerRevision, error) { + apps clientappsv1.AppsV1Interface, + namespace, name string) (*appsv1.StatefulSet, []*appsv1.ControllerRevision, error) { sts, err := apps.StatefulSets(namespace).Get(name, metav1.GetOptions{}) if err != nil { return nil, nil, fmt.Errorf("failed to retrieve Statefulset %s: %s", name, err.Error()) @@ -325,7 +349,7 @@ func statefulSetHistory( if err != nil { return nil, nil, fmt.Errorf("failed to obtain accessor for StatefulSet %s: %s", name, err.Error()) } - history, err := controlledHistory(apps, namespace, selector, accessor) + history, err := controlledHistoryV1(apps, namespace, selector, accessor) if err != nil { return nil, nil, fmt.Errorf("unable to find history controlled by StatefulSet %s: %v", name, err) } diff --git a/pkg/kubectl/rollback.go b/pkg/kubectl/rollback.go index 864d5a290d..ab91163c7f 100644 --- a/pkg/kubectl/rollback.go +++ b/pkg/kubectl/rollback.go @@ -24,6 +24,7 @@ import ( "sort" "syscall" + appsv1 "k8s.io/api/apps/v1" appsv1beta1 "k8s.io/api/apps/v1beta1" "k8s.io/api/core/v1" extv1beta1 "k8s.io/api/extensions/v1beta1" @@ -307,7 +308,7 @@ func (r *StatefulSetRollbacker) Rollback(obj runtime.Object, updatedAnnotations if err != nil { return "", fmt.Errorf("failed to create accessor for kind %v: %s", obj.GetObjectKind(), err.Error()) } - sts, history, err := statefulSetHistory(r.c.AppsV1beta1(), accessor.GetNamespace(), accessor.GetName()) + sts, history, err := statefulSetHistory(r.c.AppsV1(), accessor.GetNamespace(), accessor.GetName()) if err != nil { return "", err } @@ -315,7 +316,7 @@ func (r *StatefulSetRollbacker) Rollback(obj runtime.Object, updatedAnnotations return "", fmt.Errorf("no last revision to roll back to") } - toHistory := findHistory(toRevision, history) + toHistory := findHistoryV1(toRevision, history) if toHistory == nil { return "", revisionNotFoundErr(toRevision) } @@ -338,13 +339,41 @@ func (r *StatefulSetRollbacker) Rollback(obj runtime.Object, updatedAnnotations } // Restore revision - if _, err = r.c.AppsV1beta1().StatefulSets(sts.Namespace).Patch(sts.Name, types.StrategicMergePatchType, toHistory.Data.Raw); err != nil { + if _, err = r.c.AppsV1().StatefulSets(sts.Namespace).Patch(sts.Name, types.StrategicMergePatchType, toHistory.Data.Raw); err != nil { return "", fmt.Errorf("failed restoring revision %d: %v", toRevision, err) } return rollbackSuccess, nil } +// TODO: When all the controllers have been updated to use v1, rename this function findHistoryV1()->findHistory() and +// TODO: remove the original findHistory() +// findHistoryV1 returns a controllerrevision of a specific revision from the given controllerrevisions. +// It returns nil if no such controllerrevision exists. +// If toRevision is 0, the last previously used history is returned. +func findHistoryV1(toRevision int64, allHistory []*appsv1.ControllerRevision) *appsv1.ControllerRevision { + if toRevision == 0 && len(allHistory) <= 1 { + return nil + } + + // Find the history to rollback to + var toHistory *appsv1.ControllerRevision + if toRevision == 0 { + // If toRevision == 0, find the latest revision (2nd max) + sort.Sort(historiesByRevisionV1(allHistory)) + toHistory = allHistory[len(allHistory)-2] + } else { + for _, h := range allHistory { + if h.Revision == toRevision { + // If toRevision != 0, find the history with matching revision + return h + } + } + } + + return toHistory +} + // findHistory returns a controllerrevision of a specific revision from the given controllerrevisions. // It returns nil if no such controllerrevision exists. // If toRevision is 0, the last previously used history is returned. @@ -395,3 +424,12 @@ func (h historiesByRevision) Swap(i, j int) { h[i], h[j] = h[j], h[i] } func (h historiesByRevision) Less(i, j int) bool { return h[i].Revision < h[j].Revision } + +// TODO: copied from daemon controller, should extract to a library +type historiesByRevisionV1 []*appsv1.ControllerRevision + +func (h historiesByRevisionV1) Len() int { return len(h) } +func (h historiesByRevisionV1) Swap(i, j int) { h[i], h[j] = h[j], h[i] } +func (h historiesByRevisionV1) Less(i, j int) bool { + return h[i].Revision < h[j].Revision +} diff --git a/test/e2e/apps/BUILD b/test/e2e/apps/BUILD index 6780918d0f..7f6b8f67c6 100644 --- a/test/e2e/apps/BUILD +++ b/test/e2e/apps/BUILD @@ -47,8 +47,8 @@ go_library( "//vendor/github.com/davecgh/go-spew/spew:go_default_library", "//vendor/github.com/onsi/ginkgo:go_default_library", "//vendor/github.com/onsi/gomega:go_default_library", + "//vendor/k8s.io/api/apps/v1:go_default_library", "//vendor/k8s.io/api/apps/v1beta1:go_default_library", - "//vendor/k8s.io/api/apps/v1beta2:go_default_library", "//vendor/k8s.io/api/batch/v1:go_default_library", "//vendor/k8s.io/api/batch/v1beta1:go_default_library", "//vendor/k8s.io/api/core/v1:go_default_library", diff --git a/test/e2e/apps/network_partition.go b/test/e2e/apps/network_partition.go index b9a22afc48..f2885b30eb 100644 --- a/test/e2e/apps/network_partition.go +++ b/test/e2e/apps/network_partition.go @@ -371,7 +371,7 @@ var _ = SIGDescribe("Network Partition [Disruptive] [Slow]", func() { petMounts := []v1.VolumeMount{{Name: "datadir", MountPath: "/data/"}} podMounts := []v1.VolumeMount{{Name: "home", MountPath: "/home"}} ps := framework.NewStatefulSet(psName, ns, headlessSvcName, 3, petMounts, podMounts, labels) - _, err := c.AppsV1beta1().StatefulSets(ns).Create(ps) + _, err := c.AppsV1().StatefulSets(ns).Create(ps) Expect(err).NotTo(HaveOccurred()) pst := framework.NewStatefulSetTester(c) @@ -387,7 +387,7 @@ var _ = SIGDescribe("Network Partition [Disruptive] [Slow]", func() { It("should not reschedule stateful pods if there is a network partition [Slow] [Disruptive]", func() { ps := framework.NewStatefulSet(psName, ns, headlessSvcName, 3, []v1.VolumeMount{}, []v1.VolumeMount{}, labels) - _, err := c.AppsV1beta1().StatefulSets(ns).Create(ps) + _, err := c.AppsV1().StatefulSets(ns).Create(ps) Expect(err).NotTo(HaveOccurred()) pst := framework.NewStatefulSetTester(c) diff --git a/test/e2e/apps/statefulset.go b/test/e2e/apps/statefulset.go index da91816996..16b20b9834 100644 --- a/test/e2e/apps/statefulset.go +++ b/test/e2e/apps/statefulset.go @@ -23,8 +23,7 @@ import ( . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" - apps "k8s.io/api/apps/v1beta1" - appsv1beta2 "k8s.io/api/apps/v1beta2" + apps "k8s.io/api/apps/v1" "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" klabels "k8s.io/apimachinery/pkg/labels" @@ -95,7 +94,7 @@ var _ = SIGDescribe("StatefulSet", func() { sst := framework.NewStatefulSetTester(c) sst.PauseNewPods(ss) - _, err := c.AppsV1beta1().StatefulSets(ns).Create(ss) + _, err := c.AppsV1().StatefulSets(ns).Create(ss) Expect(err).NotTo(HaveOccurred()) By("Saturating stateful set " + ss.Name) @@ -135,7 +134,7 @@ var _ = SIGDescribe("StatefulSet", func() { // Replace ss with the one returned from Create() so it has the UID. // Save Kind since it won't be populated in the returned ss. kind := ss.Kind - ss, err := c.AppsV1beta1().StatefulSets(ns).Create(ss) + ss, err := c.AppsV1().StatefulSets(ns).Create(ss) Expect(err).NotTo(HaveOccurred()) ss.Kind = kind @@ -215,7 +214,7 @@ var _ = SIGDescribe("StatefulSet", func() { sst := framework.NewStatefulSetTester(c) sst.PauseNewPods(ss) - _, err := c.AppsV1beta1().StatefulSets(ns).Create(ss) + _, err := c.AppsV1().StatefulSets(ns).Create(ss) Expect(err).NotTo(HaveOccurred()) sst.WaitForRunning(1, 0, ss) @@ -248,7 +247,7 @@ var _ = SIGDescribe("StatefulSet", func() { ss := framework.NewStatefulSet("ss2", ns, headlessSvcName, 3, nil, nil, labels) sst := framework.NewStatefulSetTester(c) sst.SetHttpProbe(ss) - ss, err := c.AppsV1beta1().StatefulSets(ns).Create(ss) + ss, err := c.AppsV1().StatefulSets(ns).Create(ss) Expect(err).NotTo(HaveOccurred()) sst.WaitForRunningAndReady(*ss.Spec.Replicas, ss) ss = sst.WaitForStatus(ss) @@ -373,7 +372,7 @@ var _ = SIGDescribe("StatefulSet", func() { }()} }(), } - ss, err := c.AppsV1beta1().StatefulSets(ns).Create(ss) + ss, err := c.AppsV1().StatefulSets(ns).Create(ss) Expect(err).NotTo(HaveOccurred()) sst.WaitForRunningAndReady(*ss.Spec.Replicas, ss) ss = sst.WaitForStatus(ss) @@ -575,7 +574,7 @@ var _ = SIGDescribe("StatefulSet", func() { ss.Spec.UpdateStrategy = apps.StatefulSetUpdateStrategy{ Type: apps.OnDeleteStatefulSetStrategyType, } - ss, err := c.AppsV1beta1().StatefulSets(ns).Create(ss) + ss, err := c.AppsV1().StatefulSets(ns).Create(ss) Expect(err).NotTo(HaveOccurred()) sst.WaitForRunningAndReady(*ss.Spec.Replicas, ss) ss = sst.WaitForStatus(ss) @@ -659,7 +658,7 @@ var _ = SIGDescribe("StatefulSet", func() { ss := framework.NewStatefulSet(ssName, ns, headlessSvcName, 1, nil, nil, psLabels) sst := framework.NewStatefulSetTester(c) sst.SetHttpProbe(ss) - ss, err = c.AppsV1beta1().StatefulSets(ns).Create(ss) + ss, err = c.AppsV1().StatefulSets(ns).Create(ss) Expect(err).NotTo(HaveOccurred()) By("Waiting until all stateful set " + ssName + " replicas will be running in namespace " + ns) @@ -731,7 +730,7 @@ var _ = SIGDescribe("StatefulSet", func() { ss.Spec.PodManagementPolicy = apps.ParallelPodManagement sst := framework.NewStatefulSetTester(c) sst.SetHttpProbe(ss) - ss, err := c.AppsV1beta1().StatefulSets(ns).Create(ss) + ss, err := c.AppsV1().StatefulSets(ns).Create(ss) Expect(err).NotTo(HaveOccurred()) By("Waiting until all stateful set " + ssName + " replicas will be running in namespace " + ns) @@ -793,7 +792,7 @@ var _ = SIGDescribe("StatefulSet", func() { statefulPodContainer := &ss.Spec.Template.Spec.Containers[0] statefulPodContainer.Ports = append(statefulPodContainer.Ports, conflictingPort) ss.Spec.Template.Spec.NodeName = node.Name - _, err = f.ClientSet.AppsV1beta1().StatefulSets(f.Namespace.Name).Create(ss) + _, err = f.ClientSet.AppsV1().StatefulSets(f.Namespace.Name).Create(ss) framework.ExpectNoError(err) By("Waiting until pod " + podName + " will start running in namespace " + f.Namespace.Name) @@ -844,7 +843,7 @@ var _ = SIGDescribe("StatefulSet", func() { return nil }, framework.StatefulPodTimeout, 2*time.Second).Should(BeNil()) }) - + /* Comment it for now until scale sub-resource is finalized in ref:pull/53679 for scale-sub resource specific comment. It("should have a working scale subresource", func() { By("Creating statefulset " + ssName + " in namespace " + ns) ss := framework.NewStatefulSet(ssName, ns, headlessSvcName, 1, nil, nil, labels) @@ -858,6 +857,7 @@ var _ = SIGDescribe("StatefulSet", func() { By("getting scale subresource") scale := framework.NewStatefulSetScale(ss) scaleResult := &appsv1beta2.Scale{} + err = c.AppsV1beta2().RESTClient().Get().AbsPath("/apis/apps/v1beta2").Namespace(ns).Resource("statefulsets").Name(ssName).SubResource("scale").Do().Into(scale) if err != nil { framework.Failf("Failed to get scale subresource: %v", err) @@ -881,6 +881,7 @@ var _ = SIGDescribe("StatefulSet", func() { } Expect(*(ss.Spec.Replicas)).To(Equal(int32(2))) }) + */ }) framework.KubeDescribe("Deploy clustered applications [Feature:StatefulSet] [Slow]", func() { diff --git a/test/e2e/framework/BUILD b/test/e2e/framework/BUILD index 0ecad57686..bb6385c097 100644 --- a/test/e2e/framework/BUILD +++ b/test/e2e/framework/BUILD @@ -101,7 +101,7 @@ go_library( "//vendor/golang.org/x/net/websocket:go_default_library", "//vendor/google.golang.org/api/compute/v1:go_default_library", "//vendor/google.golang.org/api/googleapi:go_default_library", - "//vendor/k8s.io/api/apps/v1beta1:go_default_library", + "//vendor/k8s.io/api/apps/v1:go_default_library", "//vendor/k8s.io/api/apps/v1beta2:go_default_library", "//vendor/k8s.io/api/authorization/v1beta1:go_default_library", "//vendor/k8s.io/api/batch/v1:go_default_library", diff --git a/test/e2e/framework/statefulset_utils.go b/test/e2e/framework/statefulset_utils.go index 86ca9ae7e0..918c703304 100644 --- a/test/e2e/framework/statefulset_utils.go +++ b/test/e2e/framework/statefulset_utils.go @@ -28,7 +28,7 @@ import ( . "github.com/onsi/gomega" - apps "k8s.io/api/apps/v1beta1" + apps "k8s.io/api/apps/v1" appsV1beta2 "k8s.io/api/apps/v1beta2" "k8s.io/api/core/v1" apierrs "k8s.io/apimachinery/pkg/api/errors" @@ -83,7 +83,7 @@ func NewStatefulSetTester(c clientset.Interface) *StatefulSetTester { // GetStatefulSet gets the StatefulSet named name in namespace. func (s *StatefulSetTester) GetStatefulSet(namespace, name string) *apps.StatefulSet { - ss, err := s.c.AppsV1beta1().StatefulSets(namespace).Get(name, metav1.GetOptions{}) + ss, err := s.c.AppsV1().StatefulSets(namespace).Get(name, metav1.GetOptions{}) if err != nil { Failf("Failed to get StatefulSet %s/%s: %v", namespace, name, err) } @@ -108,7 +108,7 @@ func (s *StatefulSetTester) CreateStatefulSet(manifestPath, ns string) *apps.Sta Expect(err).NotTo(HaveOccurred()) Logf(fmt.Sprintf("creating statefulset %v/%v with %d replicas and selector %+v", ss.Namespace, ss.Name, *(ss.Spec.Replicas), ss.Spec.Selector)) - _, err = s.c.AppsV1beta1().StatefulSets(ns).Create(ss) + _, err = s.c.AppsV1().StatefulSets(ns).Create(ss) Expect(err).NotTo(HaveOccurred()) s.WaitForRunningAndReady(*ss.Spec.Replicas, ss) return ss @@ -245,12 +245,12 @@ func (s *StatefulSetTester) Restart(ss *apps.StatefulSet) { func (s *StatefulSetTester) update(ns, name string, update func(ss *apps.StatefulSet)) *apps.StatefulSet { for i := 0; i < 3; i++ { - ss, err := s.c.AppsV1beta1().StatefulSets(ns).Get(name, metav1.GetOptions{}) + ss, err := s.c.AppsV1().StatefulSets(ns).Get(name, metav1.GetOptions{}) if err != nil { Failf("failed to get statefulset %q: %v", name, err) } update(ss) - ss, err = s.c.AppsV1beta1().StatefulSets(ns).Update(ss) + ss, err = s.c.AppsV1().StatefulSets(ns).Update(ss) if err == nil { return ss } @@ -328,7 +328,7 @@ func (s *StatefulSetTester) WaitForRunning(numPodsRunning, numPodsReady int32, s func (s *StatefulSetTester) WaitForState(ss *apps.StatefulSet, until func(*apps.StatefulSet, *v1.PodList) (bool, error)) { pollErr := wait.PollImmediate(StatefulSetPoll, StatefulSetTimeout, func() (bool, error) { - ssGet, err := s.c.AppsV1beta1().StatefulSets(ss.Namespace).Get(ss.Name, metav1.GetOptions{}) + ssGet, err := s.c.AppsV1().StatefulSets(ss.Namespace).Get(ss.Name, metav1.GetOptions{}) if err != nil { return false, err } @@ -344,7 +344,7 @@ func (s *StatefulSetTester) WaitForState(ss *apps.StatefulSet, until func(*apps. // The returned StatefulSet contains such a StatefulSetStatus func (s *StatefulSetTester) WaitForStatus(set *apps.StatefulSet) *apps.StatefulSet { s.WaitForState(set, func(set2 *apps.StatefulSet, pods *v1.PodList) (bool, error) { - if set2.Status.ObservedGeneration != nil && *set2.Status.ObservedGeneration >= set.Generation { + if set2.Status.ObservedGeneration >= set.Generation { set = set2 return true, nil } @@ -613,11 +613,11 @@ func (s *StatefulSetTester) WaitForStatusReadyReplicas(ss *apps.StatefulSet, exp ns, name := ss.Namespace, ss.Name pollErr := wait.PollImmediate(StatefulSetPoll, StatefulSetTimeout, func() (bool, error) { - ssGet, err := s.c.AppsV1beta1().StatefulSets(ns).Get(name, metav1.GetOptions{}) + ssGet, err := s.c.AppsV1().StatefulSets(ns).Get(name, metav1.GetOptions{}) if err != nil { return false, err } - if *ssGet.Status.ObservedGeneration < ss.Generation { + if ssGet.Status.ObservedGeneration < ss.Generation { return false, nil } if ssGet.Status.ReadyReplicas != expectedReplicas { @@ -638,11 +638,11 @@ func (s *StatefulSetTester) WaitForStatusReplicas(ss *apps.StatefulSet, expected ns, name := ss.Namespace, ss.Name pollErr := wait.PollImmediate(StatefulSetPoll, StatefulSetTimeout, func() (bool, error) { - ssGet, err := s.c.AppsV1beta1().StatefulSets(ns).Get(name, metav1.GetOptions{}) + ssGet, err := s.c.AppsV1().StatefulSets(ns).Get(name, metav1.GetOptions{}) if err != nil { return false, err } - if *ssGet.Status.ObservedGeneration < ss.Generation { + if ssGet.Status.ObservedGeneration < ss.Generation { return false, nil } if ssGet.Status.Replicas != expectedReplicas { @@ -676,7 +676,7 @@ func (s *StatefulSetTester) SortStatefulPods(pods *v1.PodList) { // DeleteAllStatefulSets deletes all StatefulSet API Objects in Namespace ns. func DeleteAllStatefulSets(c clientset.Interface, ns string) { sst := &StatefulSetTester{c: c} - ssList, err := c.AppsV1beta1().StatefulSets(ns).List(metav1.ListOptions{LabelSelector: labels.Everything().String()}) + ssList, err := c.AppsV1().StatefulSets(ns).List(metav1.ListOptions{LabelSelector: labels.Everything().String()}) ExpectNoError(err) // Scale down each statefulset, then delete it completely. @@ -692,7 +692,7 @@ func DeleteAllStatefulSets(c clientset.Interface, ns string) { Logf("Deleting statefulset %v", ss.Name) // Use OrphanDependents=false so it's deleted synchronously. // We already made sure the Pods are gone inside Scale(). - if err := c.AppsV1beta1().StatefulSets(ss.Namespace).Delete(ss.Name, &metav1.DeleteOptions{OrphanDependents: new(bool)}); err != nil { + if err := c.AppsV1().StatefulSets(ss.Namespace).Delete(ss.Name, &metav1.DeleteOptions{OrphanDependents: new(bool)}); err != nil { errList = append(errList, fmt.Sprintf("%v", err)) } } @@ -790,7 +790,7 @@ func NewStatefulSet(name, ns, governingSvcName string, replicas int32, statefulP return &apps.StatefulSet{ TypeMeta: metav1.TypeMeta{ Kind: "StatefulSet", - APIVersion: "apps/v1beta1", + APIVersion: "apps/v1", }, ObjectMeta: metav1.ObjectMeta{ Name: name, @@ -872,7 +872,7 @@ func (sp statefulPodsByOrdinal) Less(i, j int) bool { type updateStatefulSetFunc func(*apps.StatefulSet) func UpdateStatefulSetWithRetries(c clientset.Interface, namespace, name string, applyUpdate updateStatefulSetFunc) (statefulSet *apps.StatefulSet, err error) { - statefulSets := c.AppsV1beta1().StatefulSets(namespace) + statefulSets := c.AppsV1().StatefulSets(namespace) var updateErr error pollErr := wait.Poll(10*time.Millisecond, 1*time.Minute, func() (bool, error) { if statefulSet, err = statefulSets.Get(name, metav1.GetOptions{}); err != nil { diff --git a/test/e2e/instrumentation/monitoring/influxdb.go b/test/e2e/instrumentation/monitoring/influxdb.go index f73a3b757e..5434a9c397 100644 --- a/test/e2e/instrumentation/monitoring/influxdb.go +++ b/test/e2e/instrumentation/monitoring/influxdb.go @@ -122,7 +122,7 @@ func verifyExpectedRcsExistAndGetExpectedPods(c clientset.Interface) ([]string, if err != nil { return nil, err } - psList, err := c.AppsV1beta1().StatefulSets(metav1.NamespaceSystem).List(options) + psList, err := c.AppsV1().StatefulSets(metav1.NamespaceSystem).List(options) if err != nil { return nil, err } diff --git a/test/e2e/manifest/BUILD b/test/e2e/manifest/BUILD index 87195021ef..bbc30054ee 100644 --- a/test/e2e/manifest/BUILD +++ b/test/e2e/manifest/BUILD @@ -12,7 +12,7 @@ go_library( deps = [ "//pkg/api/legacyscheme:go_default_library", "//test/e2e/generated:go_default_library", - "//vendor/k8s.io/api/apps/v1beta1:go_default_library", + "//vendor/k8s.io/api/apps/v1:go_default_library", "//vendor/k8s.io/api/core/v1:go_default_library", "//vendor/k8s.io/api/extensions/v1beta1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", diff --git a/test/e2e/manifest/manifest.go b/test/e2e/manifest/manifest.go index 75d89aaccf..b5e7786078 100644 --- a/test/e2e/manifest/manifest.go +++ b/test/e2e/manifest/manifest.go @@ -17,7 +17,7 @@ limitations under the License. package manifest import ( - apps "k8s.io/api/apps/v1beta1" + apps "k8s.io/api/apps/v1" "k8s.io/api/core/v1" extensions "k8s.io/api/extensions/v1beta1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" diff --git a/test/e2e/storage/BUILD b/test/e2e/storage/BUILD index fa9b93b43b..6b022916ab 100644 --- a/test/e2e/storage/BUILD +++ b/test/e2e/storage/BUILD @@ -44,7 +44,7 @@ go_library( "//vendor/github.com/onsi/ginkgo:go_default_library", "//vendor/github.com/onsi/gomega:go_default_library", "//vendor/google.golang.org/api/googleapi:go_default_library", - "//vendor/k8s.io/api/apps/v1beta1:go_default_library", + "//vendor/k8s.io/api/apps/v1:go_default_library", "//vendor/k8s.io/api/core/v1:go_default_library", "//vendor/k8s.io/api/extensions/v1beta1:go_default_library", "//vendor/k8s.io/api/policy/v1beta1:go_default_library", diff --git a/test/e2e/storage/persistent_volumes-local.go b/test/e2e/storage/persistent_volumes-local.go index 59def78cb6..9e293e2ce7 100644 --- a/test/e2e/storage/persistent_volumes-local.go +++ b/test/e2e/storage/persistent_volumes-local.go @@ -29,7 +29,7 @@ import ( . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" - appsv1beta1 "k8s.io/api/apps/v1beta1" + appsv1 "k8s.io/api/apps/v1" "k8s.io/api/core/v1" extv1beta1 "k8s.io/api/extensions/v1beta1" rbacv1beta1 "k8s.io/api/rbac/v1beta1" @@ -1193,7 +1193,7 @@ func findLocalPersistentVolume(c clientset.Interface, volumePath string) (*v1.Pe return nil, fmt.Errorf("Unable to find local persistent volume with path %v", volumePath) } -func createStatefulSet(config *localTestConfig, ssReplicas int32, volumeCount int) *appsv1beta1.StatefulSet { +func createStatefulSet(config *localTestConfig, ssReplicas int32, volumeCount int) *appsv1.StatefulSet { mounts := []v1.VolumeMount{} claims := []v1.PersistentVolumeClaim{} for i := 0; i < volumeCount; i++ { @@ -1223,12 +1223,12 @@ func createStatefulSet(config *localTestConfig, ssReplicas int32, volumeCount in } labels := map[string]string{"app": "local-volume-test"} - spec := &appsv1beta1.StatefulSet{ + spec := &appsv1.StatefulSet{ ObjectMeta: metav1.ObjectMeta{ Name: "local-volume-statefulset", Namespace: config.ns, }, - Spec: appsv1beta1.StatefulSetSpec{ + Spec: appsv1.StatefulSetSpec{ Selector: &metav1.LabelSelector{ MatchLabels: map[string]string{"app": "local-volume-test"}, }, @@ -1253,14 +1253,14 @@ func createStatefulSet(config *localTestConfig, ssReplicas int32, volumeCount in }, } - ss, err := config.client.AppsV1beta1().StatefulSets(config.ns).Create(spec) + ss, err := config.client.AppsV1().StatefulSets(config.ns).Create(spec) Expect(err).NotTo(HaveOccurred()) config.ssTester.WaitForRunningAndReady(ssReplicas, ss) return ss } -func validateStatefulSet(config *localTestConfig, ss *appsv1beta1.StatefulSet) { +func validateStatefulSet(config *localTestConfig, ss *appsv1.StatefulSet) { pods := config.ssTester.GetPodList(ss) // Verify that each pod is on a different node diff --git a/test/e2e/testing-manifests/statefulset/cassandra/statefulset.yaml b/test/e2e/testing-manifests/statefulset/cassandra/statefulset.yaml index 269d0a18f6..e0455d6d1a 100644 --- a/test/e2e/testing-manifests/statefulset/cassandra/statefulset.yaml +++ b/test/e2e/testing-manifests/statefulset/cassandra/statefulset.yaml @@ -1,4 +1,4 @@ -apiVersion: "apps/v1beta1" +apiVersion: "apps/v1" kind: StatefulSet metadata: name: cassandra diff --git a/test/e2e/testing-manifests/statefulset/cockroachdb/statefulset.yaml b/test/e2e/testing-manifests/statefulset/cockroachdb/statefulset.yaml index 1404ccadb9..276b481af9 100644 --- a/test/e2e/testing-manifests/statefulset/cockroachdb/statefulset.yaml +++ b/test/e2e/testing-manifests/statefulset/cockroachdb/statefulset.yaml @@ -1,4 +1,4 @@ -apiVersion: apps/v1beta1 +apiVersion: apps/v1 kind: StatefulSet metadata: name: cockroachdb diff --git a/test/e2e/testing-manifests/statefulset/etcd/statefulset.yaml b/test/e2e/testing-manifests/statefulset/etcd/statefulset.yaml index 4ddeb8be39..f1be16ff7c 100644 --- a/test/e2e/testing-manifests/statefulset/etcd/statefulset.yaml +++ b/test/e2e/testing-manifests/statefulset/etcd/statefulset.yaml @@ -1,4 +1,4 @@ -apiVersion: apps/v1beta1 +apiVersion: apps/v1 kind: StatefulSet metadata: name: etcd diff --git a/test/e2e/testing-manifests/statefulset/mysql-galera/statefulset.yaml b/test/e2e/testing-manifests/statefulset/mysql-galera/statefulset.yaml index 4d982ba218..85f4c080c6 100644 --- a/test/e2e/testing-manifests/statefulset/mysql-galera/statefulset.yaml +++ b/test/e2e/testing-manifests/statefulset/mysql-galera/statefulset.yaml @@ -1,4 +1,4 @@ -apiVersion: apps/v1beta1 +apiVersion: apps/v1 kind: StatefulSet metadata: name: mysql diff --git a/test/e2e/testing-manifests/statefulset/mysql-upgrade/statefulset.yaml b/test/e2e/testing-manifests/statefulset/mysql-upgrade/statefulset.yaml index d0e115e5d4..0604aa5f61 100644 --- a/test/e2e/testing-manifests/statefulset/mysql-upgrade/statefulset.yaml +++ b/test/e2e/testing-manifests/statefulset/mysql-upgrade/statefulset.yaml @@ -1,4 +1,4 @@ -apiVersion: apps/v1beta1 +apiVersion: apps/v1 kind: StatefulSet metadata: name: mysql diff --git a/test/e2e/testing-manifests/statefulset/redis/statefulset.yaml b/test/e2e/testing-manifests/statefulset/redis/statefulset.yaml index e324ef5613..e5ed3a798b 100644 --- a/test/e2e/testing-manifests/statefulset/redis/statefulset.yaml +++ b/test/e2e/testing-manifests/statefulset/redis/statefulset.yaml @@ -1,4 +1,4 @@ -apiVersion: apps/v1beta1 +apiVersion: apps/v1 kind: StatefulSet metadata: name: rd diff --git a/test/e2e/testing-manifests/statefulset/zookeeper/statefulset.yaml b/test/e2e/testing-manifests/statefulset/zookeeper/statefulset.yaml index 4160bdff42..62c534cddc 100644 --- a/test/e2e/testing-manifests/statefulset/zookeeper/statefulset.yaml +++ b/test/e2e/testing-manifests/statefulset/zookeeper/statefulset.yaml @@ -1,4 +1,4 @@ -apiVersion: apps/v1beta1 +apiVersion: apps/v1 kind: StatefulSet metadata: name: zoo diff --git a/test/e2e/upgrades/apps/BUILD b/test/e2e/upgrades/apps/BUILD index 1334f0e15d..551b98512c 100644 --- a/test/e2e/upgrades/apps/BUILD +++ b/test/e2e/upgrades/apps/BUILD @@ -24,7 +24,7 @@ go_library( "//test/utils/image:go_default_library", "//vendor/github.com/onsi/ginkgo:go_default_library", "//vendor/github.com/onsi/gomega:go_default_library", - "//vendor/k8s.io/api/apps/v1beta1:go_default_library", + "//vendor/k8s.io/api/apps/v1:go_default_library", "//vendor/k8s.io/api/batch/v1:go_default_library", "//vendor/k8s.io/api/core/v1:go_default_library", "//vendor/k8s.io/api/extensions/v1beta1:go_default_library", diff --git a/test/e2e/upgrades/apps/statefulset.go b/test/e2e/upgrades/apps/statefulset.go index e5075f6d0e..83884e3566 100644 --- a/test/e2e/upgrades/apps/statefulset.go +++ b/test/e2e/upgrades/apps/statefulset.go @@ -20,7 +20,7 @@ import ( . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" - apps "k8s.io/api/apps/v1beta1" + apps "k8s.io/api/apps/v1" "k8s.io/api/core/v1" "k8s.io/kubernetes/pkg/util/version" @@ -71,7 +71,7 @@ func (t *StatefulSetUpgradeTest) Setup(f *framework.Framework) { By("Creating statefulset " + ssName + " in namespace " + ns) *(t.set.Spec.Replicas) = 3 - _, err = f.ClientSet.AppsV1beta1().StatefulSets(ns).Create(t.set) + _, err = f.ClientSet.AppsV1().StatefulSets(ns).Create(t.set) Expect(err).NotTo(HaveOccurred()) By("Saturating stateful set " + t.set.Name)