Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
aba725a3
Commit
aba725a3
authored
Nov 15, 2017
by
dhilipkumars
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Promote SS to apps/v1
parent
ae96999b
Hide whitespace changes
Inline
Side-by-side
Showing
36 changed files
with
200 additions
and
152 deletions
+200
-152
apps.go
cmd/kube-controller-manager/app/apps.go
+2
-2
BUILD
pkg/controller/history/BUILD
+4
-4
controller_history.go
pkg/controller/history/controller_history.go
+8
-8
controller_history_test.go
pkg/controller/history/controller_history_test.go
+14
-14
BUILD
pkg/controller/statefulset/BUILD
+6
-6
stateful_pod_control.go
pkg/controller/statefulset/stateful_pod_control.go
+2
-2
stateful_set.go
pkg/controller/statefulset/stateful_set.go
+5
-5
stateful_set_control.go
pkg/controller/statefulset/stateful_set_control.go
+2
-3
stateful_set_control_test.go
pkg/controller/statefulset/stateful_set_control_test.go
+13
-13
stateful_set_status_updater.go
pkg/controller/statefulset/stateful_set_status_updater.go
+3
-3
stateful_set_status_updater_test.go
...ontroller/statefulset/stateful_set_status_updater_test.go
+8
-23
stateful_set_test.go
pkg/controller/statefulset/stateful_set_test.go
+6
-6
stateful_set_utils.go
pkg/controller/statefulset/stateful_set_utils.go
+2
-3
stateful_set_utils_test.go
pkg/controller/statefulset/stateful_set_utils_test.go
+2
-2
BUILD
pkg/kubectl/BUILD
+2
-0
history.go
pkg/kubectl/history.go
+28
-4
rollback.go
pkg/kubectl/rollback.go
+41
-3
BUILD
test/e2e/apps/BUILD
+1
-1
network_partition.go
test/e2e/apps/network_partition.go
+2
-2
statefulset.go
test/e2e/apps/statefulset.go
+13
-12
BUILD
test/e2e/framework/BUILD
+1
-1
statefulset_utils.go
test/e2e/framework/statefulset_utils.go
+15
-15
influxdb.go
test/e2e/instrumentation/monitoring/influxdb.go
+1
-1
BUILD
test/e2e/manifest/BUILD
+1
-1
manifest.go
test/e2e/manifest/manifest.go
+1
-1
BUILD
test/e2e/storage/BUILD
+1
-1
persistent_volumes-local.go
test/e2e/storage/persistent_volumes-local.go
+6
-6
statefulset.yaml
.../testing-manifests/statefulset/cassandra/statefulset.yaml
+1
-1
statefulset.yaml
...esting-manifests/statefulset/cockroachdb/statefulset.yaml
+1
-1
statefulset.yaml
test/e2e/testing-manifests/statefulset/etcd/statefulset.yaml
+1
-1
statefulset.yaml
...sting-manifests/statefulset/mysql-galera/statefulset.yaml
+1
-1
statefulset.yaml
...ting-manifests/statefulset/mysql-upgrade/statefulset.yaml
+1
-1
statefulset.yaml
.../e2e/testing-manifests/statefulset/redis/statefulset.yaml
+1
-1
statefulset.yaml
.../testing-manifests/statefulset/zookeeper/statefulset.yaml
+1
-1
BUILD
test/e2e/upgrades/apps/BUILD
+1
-1
statefulset.go
test/e2e/upgrades/apps/statefulset.go
+2
-2
No files found.
cmd/kube-controller-manager/app/apps.go
View file @
aba725a3
...
@@ -31,9 +31,9 @@ func startStatefulSetController(ctx ControllerContext) (bool, error) {
...
@@ -31,9 +31,9 @@ func startStatefulSetController(ctx ControllerContext) (bool, error) {
}
}
go
statefulset
.
NewStatefulSetController
(
go
statefulset
.
NewStatefulSetController
(
ctx
.
InformerFactory
.
Core
()
.
V1
()
.
Pods
(),
ctx
.
InformerFactory
.
Core
()
.
V1
()
.
Pods
(),
ctx
.
InformerFactory
.
Apps
()
.
V1
beta1
()
.
StatefulSets
(),
ctx
.
InformerFactory
.
Apps
()
.
V1
()
.
StatefulSets
(),
ctx
.
InformerFactory
.
Core
()
.
V1
()
.
PersistentVolumeClaims
(),
ctx
.
InformerFactory
.
Core
()
.
V1
()
.
PersistentVolumeClaims
(),
ctx
.
InformerFactory
.
Apps
()
.
V1
beta1
()
.
ControllerRevisions
(),
ctx
.
InformerFactory
.
Apps
()
.
V1
()
.
ControllerRevisions
(),
ctx
.
ClientBuilder
.
ClientOrDie
(
"statefulset-controller"
),
ctx
.
ClientBuilder
.
ClientOrDie
(
"statefulset-controller"
),
)
.
Run
(
1
,
ctx
.
Stop
)
)
.
Run
(
1
,
ctx
.
Stop
)
return
true
,
nil
return
true
,
nil
...
...
pkg/controller/history/BUILD
View file @
aba725a3
...
@@ -14,7 +14,7 @@ go_test(
...
@@ -14,7 +14,7 @@ go_test(
deps = [
deps = [
"//pkg/api/testapi:go_default_library",
"//pkg/api/testapi:go_default_library",
"//pkg/controller:go_default_library",
"//pkg/controller:go_default_library",
"//vendor/k8s.io/api/apps/v1
beta1
: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/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
...
@@ -35,7 +35,7 @@ go_library(
...
@@ -35,7 +35,7 @@ go_library(
importpath = "k8s.io/kubernetes/pkg/controller/history",
importpath = "k8s.io/kubernetes/pkg/controller/history",
deps = [
deps = [
"//pkg/util/hash:go_default_library",
"//pkg/util/hash:go_default_library",
"//vendor/k8s.io/api/apps/v1
beta1
: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/equality:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
...
@@ -44,9 +44,9 @@ go_library(
...
@@ -44,9 +44,9 @@ go_library(
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_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/types:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/rand:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/rand:go_default_library",
"//vendor/k8s.io/client-go/informers/apps/v1
beta1
: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/kubernetes:go_default_library",
"//vendor/k8s.io/client-go/listers/apps/v1
beta1
: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/tools/cache:go_default_library",
"//vendor/k8s.io/client-go/util/retry:go_default_library",
"//vendor/k8s.io/client-go/util/retry:go_default_library",
],
],
...
...
pkg/controller/history/controller_history.go
View file @
aba725a3
...
@@ -23,10 +23,10 @@ import (
...
@@ -23,10 +23,10 @@ import (
"sort"
"sort"
"strconv"
"strconv"
apps
"k8s.io/api/apps/v1
beta1
"
apps
"k8s.io/api/apps/v1"
appsinformers
"k8s.io/client-go/informers/apps/v1
beta1
"
appsinformers
"k8s.io/client-go/informers/apps/v1"
clientset
"k8s.io/client-go/kubernetes"
clientset
"k8s.io/client-go/kubernetes"
appslisters
"k8s.io/client-go/listers/apps/v1
beta1
"
appslisters
"k8s.io/client-go/listers/apps/v1"
hashutil
"k8s.io/kubernetes/pkg/util/hash"
hashutil
"k8s.io/kubernetes/pkg/util/hash"
apiequality
"k8s.io/apimachinery/pkg/api/equality"
apiequality
"k8s.io/apimachinery/pkg/api/equality"
...
@@ -251,7 +251,7 @@ func (rh *realHistory) CreateControllerRevision(parent metav1.Object, revision *
...
@@ -251,7 +251,7 @@ func (rh *realHistory) CreateControllerRevision(parent metav1.Object, revision *
hash
:=
HashControllerRevision
(
revision
,
collisionCount
)
hash
:=
HashControllerRevision
(
revision
,
collisionCount
)
// Update the revisions name and labels
// Update the revisions name and labels
clone
.
Name
=
ControllerRevisionName
(
parent
.
GetName
(),
hash
)
clone
.
Name
=
ControllerRevisionName
(
parent
.
GetName
(),
hash
)
created
,
err
:=
rh
.
client
.
AppsV1
beta1
()
.
ControllerRevisions
(
parent
.
GetNamespace
())
.
Create
(
clone
)
created
,
err
:=
rh
.
client
.
AppsV1
()
.
ControllerRevisions
(
parent
.
GetNamespace
())
.
Create
(
clone
)
if
errors
.
IsAlreadyExists
(
err
)
{
if
errors
.
IsAlreadyExists
(
err
)
{
*
collisionCount
++
*
collisionCount
++
continue
continue
...
@@ -267,7 +267,7 @@ func (rh *realHistory) UpdateControllerRevision(revision *apps.ControllerRevisio
...
@@ -267,7 +267,7 @@ func (rh *realHistory) UpdateControllerRevision(revision *apps.ControllerRevisio
return
nil
return
nil
}
}
clone
.
Revision
=
newRevision
clone
.
Revision
=
newRevision
updated
,
updateErr
:=
rh
.
client
.
AppsV1
beta1
()
.
ControllerRevisions
(
clone
.
Namespace
)
.
Update
(
clone
)
updated
,
updateErr
:=
rh
.
client
.
AppsV1
()
.
ControllerRevisions
(
clone
.
Namespace
)
.
Update
(
clone
)
if
updateErr
==
nil
{
if
updateErr
==
nil
{
return
nil
return
nil
}
}
...
@@ -284,7 +284,7 @@ func (rh *realHistory) UpdateControllerRevision(revision *apps.ControllerRevisio
...
@@ -284,7 +284,7 @@ func (rh *realHistory) UpdateControllerRevision(revision *apps.ControllerRevisio
}
}
func
(
rh
*
realHistory
)
DeleteControllerRevision
(
revision
*
apps
.
ControllerRevision
)
error
{
func
(
rh
*
realHistory
)
DeleteControllerRevision
(
revision
*
apps
.
ControllerRevision
)
error
{
return
rh
.
client
.
AppsV1
beta1
()
.
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
)
{
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
...
@@ -293,7 +293,7 @@ func (rh *realHistory) AdoptControllerRevision(parent metav1.Object, parentKind
return
nil
,
fmt
.
Errorf
(
"attempt to adopt revision owned by %v"
,
owner
)
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
// Use strategic merge patch to add an owner reference indicating a controller ref
return
rh
.
client
.
AppsV1
beta1
()
.
ControllerRevisions
(
parent
.
GetNamespace
())
.
Patch
(
revision
.
GetName
(),
return
rh
.
client
.
AppsV1
()
.
ControllerRevisions
(
parent
.
GetNamespace
())
.
Patch
(
revision
.
GetName
(),
types
.
StrategicMergePatchType
,
[]
byte
(
fmt
.
Sprintf
(
types
.
StrategicMergePatchType
,
[]
byte
(
fmt
.
Sprintf
(
`{"metadata":{"ownerReferences":[{"apiVersion":"%s","kind":"%s","name":"%s","uid":"%s","controller":true,"blockOwnerDeletion":true}],"uid":"%s"}}`
,
`{"metadata":{"ownerReferences":[{"apiVersion":"%s","kind":"%s","name":"%s","uid":"%s","controller":true,"blockOwnerDeletion":true}],"uid":"%s"}}`
,
parentKind
.
GroupVersion
()
.
String
(),
parentKind
.
Kind
,
parentKind
.
GroupVersion
()
.
String
(),
parentKind
.
Kind
,
...
@@ -302,7 +302,7 @@ func (rh *realHistory) AdoptControllerRevision(parent metav1.Object, parentKind
...
@@ -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
)
{
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
// Use strategic merge patch to add an owner reference indicating a controller ref
released
,
err
:=
rh
.
client
.
AppsV1
beta1
()
.
ControllerRevisions
(
revision
.
GetNamespace
())
.
Patch
(
revision
.
GetName
(),
released
,
err
:=
rh
.
client
.
AppsV1
()
.
ControllerRevisions
(
revision
.
GetNamespace
())
.
Patch
(
revision
.
GetName
(),
types
.
StrategicMergePatchType
,
types
.
StrategicMergePatchType
,
[]
byte
(
fmt
.
Sprintf
(
`{"metadata":{"ownerReferences":[{"$patch":"delete","uid":"%s"}],"uid":"%s"}}`
,
parent
.
GetUID
(),
revision
.
UID
)))
[]
byte
(
fmt
.
Sprintf
(
`{"metadata":{"ownerReferences":[{"$patch":"delete","uid":"%s"}],"uid":"%s"}}`
,
parent
.
GetUID
(),
revision
.
UID
)))
...
...
pkg/controller/history/controller_history_test.go
View file @
aba725a3
...
@@ -23,7 +23,7 @@ import (
...
@@ -23,7 +23,7 @@ import (
"reflect"
"reflect"
"testing"
"testing"
apps
"k8s.io/api/apps/v1
beta1
"
apps
"k8s.io/api/apps/v1"
"k8s.io/api/core/v1"
"k8s.io/api/core/v1"
"k8s.io/client-go/informers"
"k8s.io/client-go/informers"
"k8s.io/client-go/kubernetes/fake"
"k8s.io/client-go/kubernetes/fake"
...
@@ -56,7 +56,7 @@ func TestRealHistory_ListControllerRevisions(t *testing.T) {
...
@@ -56,7 +56,7 @@ func TestRealHistory_ListControllerRevisions(t *testing.T) {
stop
:=
make
(
chan
struct
{})
stop
:=
make
(
chan
struct
{})
defer
close
(
stop
)
defer
close
(
stop
)
informerFactory
.
Start
(
stop
)
informerFactory
.
Start
(
stop
)
informer
:=
informerFactory
.
Apps
()
.
V1
beta1
()
.
ControllerRevisions
()
informer
:=
informerFactory
.
Apps
()
.
V1
()
.
ControllerRevisions
()
informerFactory
.
WaitForCacheSync
(
stop
)
informerFactory
.
WaitForCacheSync
(
stop
)
for
i
:=
range
test
.
revisions
{
for
i
:=
range
test
.
revisions
{
informer
.
Informer
()
.
GetIndexer
()
.
Add
(
test
.
revisions
[
i
])
informer
.
Informer
()
.
GetIndexer
()
.
Add
(
test
.
revisions
[
i
])
...
@@ -157,7 +157,7 @@ func TestFakeHistory_ListControllerRevisions(t *testing.T) {
...
@@ -157,7 +157,7 @@ func TestFakeHistory_ListControllerRevisions(t *testing.T) {
stop
:=
make
(
chan
struct
{})
stop
:=
make
(
chan
struct
{})
defer
close
(
stop
)
defer
close
(
stop
)
informerFactory
.
Start
(
stop
)
informerFactory
.
Start
(
stop
)
informer
:=
informerFactory
.
Apps
()
.
V1
beta1
()
.
ControllerRevisions
()
informer
:=
informerFactory
.
Apps
()
.
V1
()
.
ControllerRevisions
()
informerFactory
.
WaitForCacheSync
(
stop
)
informerFactory
.
WaitForCacheSync
(
stop
)
for
i
:=
range
test
.
revisions
{
for
i
:=
range
test
.
revisions
{
informer
.
Informer
()
.
GetIndexer
()
.
Add
(
test
.
revisions
[
i
])
informer
.
Informer
()
.
GetIndexer
()
.
Add
(
test
.
revisions
[
i
])
...
@@ -260,7 +260,7 @@ func TestRealHistory_CreateControllerRevision(t *testing.T) {
...
@@ -260,7 +260,7 @@ func TestRealHistory_CreateControllerRevision(t *testing.T) {
stop
:=
make
(
chan
struct
{})
stop
:=
make
(
chan
struct
{})
defer
close
(
stop
)
defer
close
(
stop
)
informerFactory
.
Start
(
stop
)
informerFactory
.
Start
(
stop
)
informer
:=
informerFactory
.
Apps
()
.
V1
beta1
()
.
ControllerRevisions
()
informer
:=
informerFactory
.
Apps
()
.
V1
()
.
ControllerRevisions
()
informerFactory
.
WaitForCacheSync
(
stop
)
informerFactory
.
WaitForCacheSync
(
stop
)
history
:=
NewHistory
(
client
,
informer
.
Lister
())
history
:=
NewHistory
(
client
,
informer
.
Lister
())
...
@@ -391,7 +391,7 @@ func TestFakeHistory_CreateControllerRevision(t *testing.T) {
...
@@ -391,7 +391,7 @@ func TestFakeHistory_CreateControllerRevision(t *testing.T) {
stop
:=
make
(
chan
struct
{})
stop
:=
make
(
chan
struct
{})
defer
close
(
stop
)
defer
close
(
stop
)
informerFactory
.
Start
(
stop
)
informerFactory
.
Start
(
stop
)
informer
:=
informerFactory
.
Apps
()
.
V1
beta1
()
.
ControllerRevisions
()
informer
:=
informerFactory
.
Apps
()
.
V1
()
.
ControllerRevisions
()
informerFactory
.
WaitForCacheSync
(
stop
)
informerFactory
.
WaitForCacheSync
(
stop
)
history
:=
NewFakeHistory
(
informer
)
history
:=
NewFakeHistory
(
informer
)
...
@@ -549,7 +549,7 @@ func TestRealHistory_UpdateControllerRevision(t *testing.T) {
...
@@ -549,7 +549,7 @@ func TestRealHistory_UpdateControllerRevision(t *testing.T) {
stop
:=
make
(
chan
struct
{})
stop
:=
make
(
chan
struct
{})
defer
close
(
stop
)
defer
close
(
stop
)
informerFactory
.
Start
(
stop
)
informerFactory
.
Start
(
stop
)
informer
:=
informerFactory
.
Apps
()
.
V1
beta1
()
.
ControllerRevisions
()
informer
:=
informerFactory
.
Apps
()
.
V1
()
.
ControllerRevisions
()
informerFactory
.
WaitForCacheSync
(
stop
)
informerFactory
.
WaitForCacheSync
(
stop
)
history
:=
NewHistory
(
client
,
informer
.
Lister
())
history
:=
NewHistory
(
client
,
informer
.
Lister
())
var
collisionCount
int32
var
collisionCount
int32
...
@@ -681,7 +681,7 @@ func TestFakeHistory_UpdateControllerRevision(t *testing.T) {
...
@@ -681,7 +681,7 @@ func TestFakeHistory_UpdateControllerRevision(t *testing.T) {
stop
:=
make
(
chan
struct
{})
stop
:=
make
(
chan
struct
{})
defer
close
(
stop
)
defer
close
(
stop
)
informerFactory
.
Start
(
stop
)
informerFactory
.
Start
(
stop
)
informer
:=
informerFactory
.
Apps
()
.
V1
beta1
()
.
ControllerRevisions
()
informer
:=
informerFactory
.
Apps
()
.
V1
()
.
ControllerRevisions
()
informerFactory
.
WaitForCacheSync
(
stop
)
informerFactory
.
WaitForCacheSync
(
stop
)
history
:=
NewFakeHistory
(
informer
)
history
:=
NewFakeHistory
(
informer
)
var
collisionCount
int32
var
collisionCount
int32
...
@@ -773,7 +773,7 @@ func TestRealHistory_DeleteControllerRevision(t *testing.T) {
...
@@ -773,7 +773,7 @@ func TestRealHistory_DeleteControllerRevision(t *testing.T) {
stop
:=
make
(
chan
struct
{})
stop
:=
make
(
chan
struct
{})
defer
close
(
stop
)
defer
close
(
stop
)
informerFactory
.
Start
(
stop
)
informerFactory
.
Start
(
stop
)
informer
:=
informerFactory
.
Apps
()
.
V1
beta1
()
.
ControllerRevisions
()
informer
:=
informerFactory
.
Apps
()
.
V1
()
.
ControllerRevisions
()
informerFactory
.
WaitForCacheSync
(
stop
)
informerFactory
.
WaitForCacheSync
(
stop
)
history
:=
NewHistory
(
client
,
informer
.
Lister
())
history
:=
NewHistory
(
client
,
informer
.
Lister
())
var
collisionCount
int32
var
collisionCount
int32
...
@@ -884,7 +884,7 @@ func TestFakeHistory_DeleteControllerRevision(t *testing.T) {
...
@@ -884,7 +884,7 @@ func TestFakeHistory_DeleteControllerRevision(t *testing.T) {
stop
:=
make
(
chan
struct
{})
stop
:=
make
(
chan
struct
{})
defer
close
(
stop
)
defer
close
(
stop
)
informerFactory
.
Start
(
stop
)
informerFactory
.
Start
(
stop
)
informer
:=
informerFactory
.
Apps
()
.
V1
beta1
()
.
ControllerRevisions
()
informer
:=
informerFactory
.
Apps
()
.
V1
()
.
ControllerRevisions
()
informerFactory
.
WaitForCacheSync
(
stop
)
informerFactory
.
WaitForCacheSync
(
stop
)
history
:=
NewFakeHistory
(
informer
)
history
:=
NewFakeHistory
(
informer
)
var
collisionCount
int32
var
collisionCount
int32
...
@@ -1029,7 +1029,7 @@ func TestRealHistory_AdoptControllerRevision(t *testing.T) {
...
@@ -1029,7 +1029,7 @@ func TestRealHistory_AdoptControllerRevision(t *testing.T) {
stop
:=
make
(
chan
struct
{})
stop
:=
make
(
chan
struct
{})
defer
close
(
stop
)
defer
close
(
stop
)
informerFactory
.
Start
(
stop
)
informerFactory
.
Start
(
stop
)
informer
:=
informerFactory
.
Apps
()
.
V1
beta1
()
.
ControllerRevisions
()
informer
:=
informerFactory
.
Apps
()
.
V1
()
.
ControllerRevisions
()
informerFactory
.
WaitForCacheSync
(
stop
)
informerFactory
.
WaitForCacheSync
(
stop
)
history
:=
NewHistory
(
client
,
informer
.
Lister
())
history
:=
NewHistory
(
client
,
informer
.
Lister
())
...
@@ -1143,7 +1143,7 @@ func TestFakeHistory_AdoptControllerRevision(t *testing.T) {
...
@@ -1143,7 +1143,7 @@ func TestFakeHistory_AdoptControllerRevision(t *testing.T) {
stop
:=
make
(
chan
struct
{})
stop
:=
make
(
chan
struct
{})
defer
close
(
stop
)
defer
close
(
stop
)
informerFactory
.
Start
(
stop
)
informerFactory
.
Start
(
stop
)
informer
:=
informerFactory
.
Apps
()
.
V1
beta1
()
.
ControllerRevisions
()
informer
:=
informerFactory
.
Apps
()
.
V1
()
.
ControllerRevisions
()
informerFactory
.
WaitForCacheSync
(
stop
)
informerFactory
.
WaitForCacheSync
(
stop
)
history
:=
NewFakeHistory
(
informer
)
history
:=
NewFakeHistory
(
informer
)
...
@@ -1296,7 +1296,7 @@ func TestRealHistory_ReleaseControllerRevision(t *testing.T) {
...
@@ -1296,7 +1296,7 @@ func TestRealHistory_ReleaseControllerRevision(t *testing.T) {
stop
:=
make
(
chan
struct
{})
stop
:=
make
(
chan
struct
{})
defer
close
(
stop
)
defer
close
(
stop
)
informerFactory
.
Start
(
stop
)
informerFactory
.
Start
(
stop
)
informer
:=
informerFactory
.
Apps
()
.
V1
beta1
()
.
ControllerRevisions
()
informer
:=
informerFactory
.
Apps
()
.
V1
()
.
ControllerRevisions
()
informerFactory
.
WaitForCacheSync
(
stop
)
informerFactory
.
WaitForCacheSync
(
stop
)
history
:=
NewHistory
(
client
,
informer
.
Lister
())
history
:=
NewHistory
(
client
,
informer
.
Lister
())
...
@@ -1426,7 +1426,7 @@ func TestFakeHistory_ReleaseControllerRevision(t *testing.T) {
...
@@ -1426,7 +1426,7 @@ func TestFakeHistory_ReleaseControllerRevision(t *testing.T) {
stop
:=
make
(
chan
struct
{})
stop
:=
make
(
chan
struct
{})
defer
close
(
stop
)
defer
close
(
stop
)
informerFactory
.
Start
(
stop
)
informerFactory
.
Start
(
stop
)
informer
:=
informerFactory
.
Apps
()
.
V1
beta1
()
.
ControllerRevisions
()
informer
:=
informerFactory
.
Apps
()
.
V1
()
.
ControllerRevisions
()
informerFactory
.
WaitForCacheSync
(
stop
)
informerFactory
.
WaitForCacheSync
(
stop
)
history
:=
NewFakeHistory
(
informer
)
history
:=
NewFakeHistory
(
informer
)
var
collisionCount
int32
var
collisionCount
int32
...
@@ -1685,7 +1685,7 @@ func newStatefulSet(replicas int, name string, uid types.UID, labels map[string]
...
@@ -1685,7 +1685,7 @@ func newStatefulSet(replicas int, name string, uid types.UID, labels map[string]
return
&
apps
.
StatefulSet
{
return
&
apps
.
StatefulSet
{
TypeMeta
:
metav1
.
TypeMeta
{
TypeMeta
:
metav1
.
TypeMeta
{
Kind
:
"StatefulSet"
,
Kind
:
"StatefulSet"
,
APIVersion
:
"apps/v1
beta1
"
,
APIVersion
:
"apps/v1"
,
},
},
ObjectMeta
:
metav1
.
ObjectMeta
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Name
:
name
,
Name
:
name
,
...
...
pkg/controller/statefulset/BUILD
View file @
aba725a3
...
@@ -21,7 +21,7 @@ go_library(
...
@@ -21,7 +21,7 @@ go_library(
"//pkg/controller:go_default_library",
"//pkg/controller:go_default_library",
"//pkg/controller/history:go_default_library",
"//pkg/controller/history:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/k8s.io/api/apps/v1
beta1
: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/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
...
@@ -31,12 +31,12 @@ go_library(
...
@@ -31,12 +31,12 @@ go_library(
"//vendor/k8s.io/apimachinery/pkg/util/runtime:go_default_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/strategicpatch:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library",
"//vendor/k8s.io/client-go/informers/apps/v1
beta1
: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/informers/core/v1:go_default_library",
"//vendor/k8s.io/client-go/kubernetes: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/scheme:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library",
"//vendor/k8s.io/client-go/listers/apps/v1
beta1
: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/listers/core/v1:go_default_library",
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
"//vendor/k8s.io/client-go/tools/record:go_default_library",
"//vendor/k8s.io/client-go/tools/record:go_default_library",
...
@@ -62,7 +62,7 @@ go_test(
...
@@ -62,7 +62,7 @@ go_test(
"//pkg/apis/core/install:go_default_library",
"//pkg/apis/core/install:go_default_library",
"//pkg/controller:go_default_library",
"//pkg/controller:go_default_library",
"//pkg/controller/history:go_default_library",
"//pkg/controller/history:go_default_library",
"//vendor/k8s.io/api/apps/v1
beta1
: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/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
...
@@ -72,11 +72,11 @@ go_test(
...
@@ -72,11 +72,11 @@ go_test(
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/sets: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:go_default_library",
"//vendor/k8s.io/client-go/informers/apps/v1
beta1
: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/informers/core/v1:go_default_library",
"//vendor/k8s.io/client-go/kubernetes: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/kubernetes/fake:go_default_library",
"//vendor/k8s.io/client-go/listers/apps/v1
beta1
: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/listers/core/v1:go_default_library",
"//vendor/k8s.io/client-go/testing:go_default_library",
"//vendor/k8s.io/client-go/testing:go_default_library",
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
"//vendor/k8s.io/client-go/tools/cache:go_default_library",
...
...
pkg/controller/statefulset/stateful_pod_control.go
View file @
aba725a3
...
@@ -20,13 +20,13 @@ import (
...
@@ -20,13 +20,13 @@ import (
"fmt"
"fmt"
"strings"
"strings"
apps
"k8s.io/api/apps/v1
beta1
"
apps
"k8s.io/api/apps/v1"
"k8s.io/api/core/v1"
"k8s.io/api/core/v1"
apierrors
"k8s.io/apimachinery/pkg/api/errors"
apierrors
"k8s.io/apimachinery/pkg/api/errors"
errorutils
"k8s.io/apimachinery/pkg/util/errors"
errorutils
"k8s.io/apimachinery/pkg/util/errors"
utilruntime
"k8s.io/apimachinery/pkg/util/runtime"
utilruntime
"k8s.io/apimachinery/pkg/util/runtime"
clientset
"k8s.io/client-go/kubernetes"
clientset
"k8s.io/client-go/kubernetes"
appslisters
"k8s.io/client-go/listers/apps/v1
beta1
"
appslisters
"k8s.io/client-go/listers/apps/v1"
corelisters
"k8s.io/client-go/listers/core/v1"
corelisters
"k8s.io/client-go/listers/core/v1"
"k8s.io/client-go/tools/record"
"k8s.io/client-go/tools/record"
"k8s.io/client-go/util/retry"
"k8s.io/client-go/util/retry"
...
...
pkg/controller/statefulset/stateful_set.go
View file @
aba725a3
...
@@ -21,19 +21,19 @@ import (
...
@@ -21,19 +21,19 @@ import (
"reflect"
"reflect"
"time"
"time"
apps
"k8s.io/api/apps/v1
beta1
"
apps
"k8s.io/api/apps/v1"
"k8s.io/api/core/v1"
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/api/errors"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/labels"
utilruntime
"k8s.io/apimachinery/pkg/util/runtime"
utilruntime
"k8s.io/apimachinery/pkg/util/runtime"
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/apimachinery/pkg/util/wait"
appsinformers
"k8s.io/client-go/informers/apps/v1
beta1
"
appsinformers
"k8s.io/client-go/informers/apps/v1"
coreinformers
"k8s.io/client-go/informers/core/v1"
coreinformers
"k8s.io/client-go/informers/core/v1"
clientset
"k8s.io/client-go/kubernetes"
clientset
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/kubernetes/scheme"
"k8s.io/client-go/kubernetes/scheme"
v1core
"k8s.io/client-go/kubernetes/typed/core/v1"
v1core
"k8s.io/client-go/kubernetes/typed/core/v1"
appslisters
"k8s.io/client-go/listers/apps/v1
beta1
"
appslisters
"k8s.io/client-go/listers/apps/v1"
corelisters
"k8s.io/client-go/listers/core/v1"
corelisters
"k8s.io/client-go/listers/core/v1"
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/tools/record"
"k8s.io/client-go/tools/record"
...
@@ -298,7 +298,7 @@ func (ssc *StatefulSetController) getPodsForStatefulSet(set *apps.StatefulSet, s
...
@@ -298,7 +298,7 @@ func (ssc *StatefulSetController) getPodsForStatefulSet(set *apps.StatefulSet, s
// If any adoptions are attempted, we should first recheck for deletion with
// If any adoptions are attempted, we should first recheck for deletion with
// an uncached quorum read sometime after listing Pods (see #42639).
// an uncached quorum read sometime after listing Pods (see #42639).
canAdoptFunc
:=
controller
.
RecheckDeletionTimestamp
(
func
()
(
metav1
.
Object
,
error
)
{
canAdoptFunc
:=
controller
.
RecheckDeletionTimestamp
(
func
()
(
metav1
.
Object
,
error
)
{
fresh
,
err
:=
ssc
.
kubeClient
.
AppsV1
beta1
()
.
StatefulSets
(
set
.
Namespace
)
.
Get
(
set
.
Name
,
metav1
.
GetOptions
{})
fresh
,
err
:=
ssc
.
kubeClient
.
AppsV1
()
.
StatefulSets
(
set
.
Namespace
)
.
Get
(
set
.
Name
,
metav1
.
GetOptions
{})
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
...
@@ -326,7 +326,7 @@ func (ssc *StatefulSetController) adoptOrphanRevisions(set *apps.StatefulSet) er
...
@@ -326,7 +326,7 @@ func (ssc *StatefulSetController) adoptOrphanRevisions(set *apps.StatefulSet) er
}
}
}
}
if
hasOrphans
{
if
hasOrphans
{
fresh
,
err
:=
ssc
.
kubeClient
.
AppsV1
beta1
()
.
StatefulSets
(
set
.
Namespace
)
.
Get
(
set
.
Name
,
metav1
.
GetOptions
{})
fresh
,
err
:=
ssc
.
kubeClient
.
AppsV1
()
.
StatefulSets
(
set
.
Namespace
)
.
Get
(
set
.
Name
,
metav1
.
GetOptions
{})
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
err
}
}
...
...
pkg/controller/statefulset/stateful_set_control.go
View file @
aba725a3
...
@@ -22,7 +22,7 @@ import (
...
@@ -22,7 +22,7 @@ import (
"github.com/golang/glog"
"github.com/golang/glog"
apps
"k8s.io/api/apps/v1
beta1
"
apps
"k8s.io/api/apps/v1"
"k8s.io/api/core/v1"
"k8s.io/api/core/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/tools/record"
"k8s.io/client-go/tools/record"
...
@@ -269,8 +269,7 @@ func (ssc *defaultStatefulSetControl) updateStatefulSet(
...
@@ -269,8 +269,7 @@ func (ssc *defaultStatefulSetControl) updateStatefulSet(
// set the generation, and revisions in the returned status
// set the generation, and revisions in the returned status
status
:=
apps
.
StatefulSetStatus
{}
status
:=
apps
.
StatefulSetStatus
{}
status
.
ObservedGeneration
=
new
(
int64
)
status
.
ObservedGeneration
=
set
.
Generation
*
status
.
ObservedGeneration
=
set
.
Generation
status
.
CurrentRevision
=
currentRevision
.
Name
status
.
CurrentRevision
=
currentRevision
.
Name
status
.
UpdateRevision
=
updateRevision
.
Name
status
.
UpdateRevision
=
updateRevision
.
Name
status
.
CollisionCount
=
new
(
int32
)
status
.
CollisionCount
=
new
(
int32
)
...
...
pkg/controller/statefulset/stateful_set_control_test.go
View file @
aba725a3
...
@@ -28,17 +28,17 @@ import (
...
@@ -28,17 +28,17 @@ import (
"testing"
"testing"
"time"
"time"
apps
"k8s.io/api/apps/v1
beta1
"
apps
"k8s.io/api/apps/v1"
"k8s.io/api/core/v1"
"k8s.io/api/core/v1"
apierrors
"k8s.io/apimachinery/pkg/api/errors"
apierrors
"k8s.io/apimachinery/pkg/api/errors"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/client-go/informers"
"k8s.io/client-go/informers"
appsinformers
"k8s.io/client-go/informers/apps/v1
beta1
"
appsinformers
"k8s.io/client-go/informers/apps/v1"
coreinformers
"k8s.io/client-go/informers/core/v1"
coreinformers
"k8s.io/client-go/informers/core/v1"
clientset
"k8s.io/client-go/kubernetes"
clientset
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/kubernetes/fake"
"k8s.io/client-go/kubernetes/fake"
appslisters
"k8s.io/client-go/listers/apps/v1
beta1
"
appslisters
"k8s.io/client-go/listers/apps/v1"
corelisters
"k8s.io/client-go/listers/core/v1"
corelisters
"k8s.io/client-go/listers/core/v1"
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/tools/record"
"k8s.io/client-go/tools/record"
...
@@ -51,18 +51,18 @@ type invariantFunc func(set *apps.StatefulSet, spc *fakeStatefulPodControl) erro
...
@@ -51,18 +51,18 @@ type invariantFunc func(set *apps.StatefulSet, spc *fakeStatefulPodControl) erro
func
setupController
(
client
clientset
.
Interface
)
(
*
fakeStatefulPodControl
,
*
fakeStatefulSetStatusUpdater
,
StatefulSetControlInterface
,
chan
struct
{})
{
func
setupController
(
client
clientset
.
Interface
)
(
*
fakeStatefulPodControl
,
*
fakeStatefulSetStatusUpdater
,
StatefulSetControlInterface
,
chan
struct
{})
{
informerFactory
:=
informers
.
NewSharedInformerFactory
(
client
,
controller
.
NoResyncPeriodFunc
())
informerFactory
:=
informers
.
NewSharedInformerFactory
(
client
,
controller
.
NoResyncPeriodFunc
())
spc
:=
newFakeStatefulPodControl
(
informerFactory
.
Core
()
.
V1
()
.
Pods
(),
informerFactory
.
Apps
()
.
V1
beta1
()
.
StatefulSets
())
spc
:=
newFakeStatefulPodControl
(
informerFactory
.
Core
()
.
V1
()
.
Pods
(),
informerFactory
.
Apps
()
.
V1
()
.
StatefulSets
())
ssu
:=
newFakeStatefulSetStatusUpdater
(
informerFactory
.
Apps
()
.
V1
beta1
()
.
StatefulSets
())
ssu
:=
newFakeStatefulSetStatusUpdater
(
informerFactory
.
Apps
()
.
V1
()
.
StatefulSets
())
recorder
:=
record
.
NewFakeRecorder
(
10
)
recorder
:=
record
.
NewFakeRecorder
(
10
)
ssc
:=
NewDefaultStatefulSetControl
(
spc
,
ssu
,
history
.
NewFakeHistory
(
informerFactory
.
Apps
()
.
V1
beta1
()
.
ControllerRevisions
()),
recorder
)
ssc
:=
NewDefaultStatefulSetControl
(
spc
,
ssu
,
history
.
NewFakeHistory
(
informerFactory
.
Apps
()
.
V1
()
.
ControllerRevisions
()),
recorder
)
stop
:=
make
(
chan
struct
{})
stop
:=
make
(
chan
struct
{})
informerFactory
.
Start
(
stop
)
informerFactory
.
Start
(
stop
)
cache
.
WaitForCacheSync
(
cache
.
WaitForCacheSync
(
stop
,
stop
,
informerFactory
.
Apps
()
.
V1
beta1
()
.
StatefulSets
()
.
Informer
()
.
HasSynced
,
informerFactory
.
Apps
()
.
V1
()
.
StatefulSets
()
.
Informer
()
.
HasSynced
,
informerFactory
.
Core
()
.
V1
()
.
Pods
()
.
Informer
()
.
HasSynced
,
informerFactory
.
Core
()
.
V1
()
.
Pods
()
.
Informer
()
.
HasSynced
,
informerFactory
.
Apps
()
.
V1
beta1
()
.
ControllerRevisions
()
.
Informer
()
.
HasSynced
,
informerFactory
.
Apps
()
.
V1
()
.
ControllerRevisions
()
.
Informer
()
.
HasSynced
,
)
)
return
spc
,
ssu
,
ssc
,
stop
return
spc
,
ssu
,
ssc
,
stop
}
}
...
@@ -452,19 +452,19 @@ func TestStatefulSetControl_getSetRevisions(t *testing.T) {
...
@@ -452,19 +452,19 @@ func TestStatefulSetControl_getSetRevisions(t *testing.T) {
testFn
:=
func
(
test
*
testcase
,
t
*
testing
.
T
)
{
testFn
:=
func
(
test
*
testcase
,
t
*
testing
.
T
)
{
client
:=
fake
.
NewSimpleClientset
()
client
:=
fake
.
NewSimpleClientset
()
informerFactory
:=
informers
.
NewSharedInformerFactory
(
client
,
controller
.
NoResyncPeriodFunc
())
informerFactory
:=
informers
.
NewSharedInformerFactory
(
client
,
controller
.
NoResyncPeriodFunc
())
spc
:=
newFakeStatefulPodControl
(
informerFactory
.
Core
()
.
V1
()
.
Pods
(),
informerFactory
.
Apps
()
.
V1
beta1
()
.
StatefulSets
())
spc
:=
newFakeStatefulPodControl
(
informerFactory
.
Core
()
.
V1
()
.
Pods
(),
informerFactory
.
Apps
()
.
V1
()
.
StatefulSets
())
ssu
:=
newFakeStatefulSetStatusUpdater
(
informerFactory
.
Apps
()
.
V1
beta1
()
.
StatefulSets
())
ssu
:=
newFakeStatefulSetStatusUpdater
(
informerFactory
.
Apps
()
.
V1
()
.
StatefulSets
())
recorder
:=
record
.
NewFakeRecorder
(
10
)
recorder
:=
record
.
NewFakeRecorder
(
10
)
ssc
:=
defaultStatefulSetControl
{
spc
,
ssu
,
history
.
NewFakeHistory
(
informerFactory
.
Apps
()
.
V1
beta1
()
.
ControllerRevisions
()),
recorder
}
ssc
:=
defaultStatefulSetControl
{
spc
,
ssu
,
history
.
NewFakeHistory
(
informerFactory
.
Apps
()
.
V1
()
.
ControllerRevisions
()),
recorder
}
stop
:=
make
(
chan
struct
{})
stop
:=
make
(
chan
struct
{})
defer
close
(
stop
)
defer
close
(
stop
)
informerFactory
.
Start
(
stop
)
informerFactory
.
Start
(
stop
)
cache
.
WaitForCacheSync
(
cache
.
WaitForCacheSync
(
stop
,
stop
,
informerFactory
.
Apps
()
.
V1
beta1
()
.
StatefulSets
()
.
Informer
()
.
HasSynced
,
informerFactory
.
Apps
()
.
V1
()
.
StatefulSets
()
.
Informer
()
.
HasSynced
,
informerFactory
.
Core
()
.
V1
()
.
Pods
()
.
Informer
()
.
HasSynced
,
informerFactory
.
Core
()
.
V1
()
.
Pods
()
.
Informer
()
.
HasSynced
,
informerFactory
.
Apps
()
.
V1
beta1
()
.
ControllerRevisions
()
.
Informer
()
.
HasSynced
,
informerFactory
.
Apps
()
.
V1
()
.
ControllerRevisions
()
.
Informer
()
.
HasSynced
,
)
)
test
.
set
.
Status
.
CollisionCount
=
new
(
int32
)
test
.
set
.
Status
.
CollisionCount
=
new
(
int32
)
for
i
:=
range
test
.
existing
{
for
i
:=
range
test
.
existing
{
...
...
pkg/controller/statefulset/stateful_set_status_updater.go
View file @
aba725a3
...
@@ -19,10 +19,10 @@ package statefulset
...
@@ -19,10 +19,10 @@ package statefulset
import
(
import
(
"fmt"
"fmt"
apps
"k8s.io/api/apps/v1
beta1
"
apps
"k8s.io/api/apps/v1"
utilruntime
"k8s.io/apimachinery/pkg/util/runtime"
utilruntime
"k8s.io/apimachinery/pkg/util/runtime"
clientset
"k8s.io/client-go/kubernetes"
clientset
"k8s.io/client-go/kubernetes"
appslisters
"k8s.io/client-go/listers/apps/v1
beta1
"
appslisters
"k8s.io/client-go/listers/apps/v1"
"k8s.io/client-go/util/retry"
"k8s.io/client-go/util/retry"
)
)
...
@@ -53,7 +53,7 @@ func (ssu *realStatefulSetStatusUpdater) UpdateStatefulSetStatus(
...
@@ -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
// don't wait due to limited number of clients, but backoff after the default number of steps
return
retry
.
RetryOnConflict
(
retry
.
DefaultRetry
,
func
()
error
{
return
retry
.
RetryOnConflict
(
retry
.
DefaultRetry
,
func
()
error
{
set
.
Status
=
*
status
set
.
Status
=
*
status
_
,
updateErr
:=
ssu
.
client
.
AppsV1
beta1
()
.
StatefulSets
(
set
.
Namespace
)
.
UpdateStatus
(
set
)
_
,
updateErr
:=
ssu
.
client
.
AppsV1
()
.
StatefulSets
(
set
.
Namespace
)
.
UpdateStatus
(
set
)
if
updateErr
==
nil
{
if
updateErr
==
nil
{
return
nil
return
nil
}
}
...
...
pkg/controller/statefulset/stateful_set_status_updater_test.go
View file @
aba725a3
...
@@ -26,17 +26,14 @@ import (
...
@@ -26,17 +26,14 @@ import (
core
"k8s.io/client-go/testing"
core
"k8s.io/client-go/testing"
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/tools/cache"
apps
"k8s.io/api/apps/v1
beta1
"
apps
"k8s.io/api/apps/v1"
"k8s.io/client-go/kubernetes/fake"
"k8s.io/client-go/kubernetes/fake"
appslisters
"k8s.io/client-go/listers/apps/v1
beta1
"
appslisters
"k8s.io/client-go/listers/apps/v1"
)
)
func
TestStatefulSetUpdaterUpdatesSetStatus
(
t
*
testing
.
T
)
{
func
TestStatefulSetUpdaterUpdatesSetStatus
(
t
*
testing
.
T
)
{
set
:=
newStatefulSet
(
3
)
set
:=
newStatefulSet
(
3
)
status
:=
apps
.
StatefulSetStatus
{
ObservedGeneration
:
func
()
*
int64
{
status
:=
apps
.
StatefulSetStatus
{
ObservedGeneration
:
1
,
Replicas
:
2
}
i
:=
int64
(
1
)
return
&
i
}(),
Replicas
:
2
}
fakeClient
:=
&
fake
.
Clientset
{}
fakeClient
:=
&
fake
.
Clientset
{}
updater
:=
NewRealStatefulSetStatusUpdater
(
fakeClient
,
nil
)
updater
:=
NewRealStatefulSetStatusUpdater
(
fakeClient
,
nil
)
fakeClient
.
AddReactor
(
"update"
,
"statefulsets"
,
func
(
action
core
.
Action
)
(
bool
,
runtime
.
Object
,
error
)
{
fakeClient
.
AddReactor
(
"update"
,
"statefulsets"
,
func
(
action
core
.
Action
)
(
bool
,
runtime
.
Object
,
error
)
{
...
@@ -53,16 +50,13 @@ func TestStatefulSetUpdaterUpdatesSetStatus(t *testing.T) {
...
@@ -53,16 +50,13 @@ func TestStatefulSetUpdaterUpdatesSetStatus(t *testing.T) {
func
TestStatefulSetStatusUpdaterUpdatesObservedGeneration
(
t
*
testing
.
T
)
{
func
TestStatefulSetStatusUpdaterUpdatesObservedGeneration
(
t
*
testing
.
T
)
{
set
:=
newStatefulSet
(
3
)
set
:=
newStatefulSet
(
3
)
status
:=
apps
.
StatefulSetStatus
{
ObservedGeneration
:
func
()
*
int64
{
status
:=
apps
.
StatefulSetStatus
{
ObservedGeneration
:
3
,
Replicas
:
2
}
i
:=
int64
(
3
)
return
&
i
}(),
Replicas
:
2
}
fakeClient
:=
&
fake
.
Clientset
{}
fakeClient
:=
&
fake
.
Clientset
{}
updater
:=
NewRealStatefulSetStatusUpdater
(
fakeClient
,
nil
)
updater
:=
NewRealStatefulSetStatusUpdater
(
fakeClient
,
nil
)
fakeClient
.
AddReactor
(
"update"
,
"statefulsets"
,
func
(
action
core
.
Action
)
(
bool
,
runtime
.
Object
,
error
)
{
fakeClient
.
AddReactor
(
"update"
,
"statefulsets"
,
func
(
action
core
.
Action
)
(
bool
,
runtime
.
Object
,
error
)
{
update
:=
action
.
(
core
.
UpdateAction
)
update
:=
action
.
(
core
.
UpdateAction
)
sts
:=
update
.
GetObject
()
.
(
*
apps
.
StatefulSet
)
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
)
t
.
Errorf
(
"expected observedGeneration to be synced with generation for statefulset %q"
,
sts
.
Name
)
}
}
return
true
,
sts
,
nil
return
true
,
sts
,
nil
...
@@ -74,10 +68,7 @@ func TestStatefulSetStatusUpdaterUpdatesObservedGeneration(t *testing.T) {
...
@@ -74,10 +68,7 @@ func TestStatefulSetStatusUpdaterUpdatesObservedGeneration(t *testing.T) {
func
TestStatefulSetStatusUpdaterUpdateReplicasFailure
(
t
*
testing
.
T
)
{
func
TestStatefulSetStatusUpdaterUpdateReplicasFailure
(
t
*
testing
.
T
)
{
set
:=
newStatefulSet
(
3
)
set
:=
newStatefulSet
(
3
)
status
:=
apps
.
StatefulSetStatus
{
ObservedGeneration
:
func
()
*
int64
{
status
:=
apps
.
StatefulSetStatus
{
ObservedGeneration
:
3
,
Replicas
:
2
}
i
:=
int64
(
3
)
return
&
i
}(),
Replicas
:
2
}
fakeClient
:=
&
fake
.
Clientset
{}
fakeClient
:=
&
fake
.
Clientset
{}
indexer
:=
cache
.
NewIndexer
(
cache
.
MetaNamespaceKeyFunc
,
cache
.
Indexers
{
cache
.
NamespaceIndex
:
cache
.
MetaNamespaceIndexFunc
})
indexer
:=
cache
.
NewIndexer
(
cache
.
MetaNamespaceKeyFunc
,
cache
.
Indexers
{
cache
.
NamespaceIndex
:
cache
.
MetaNamespaceIndexFunc
})
indexer
.
Add
(
set
)
indexer
.
Add
(
set
)
...
@@ -93,10 +84,7 @@ func TestStatefulSetStatusUpdaterUpdateReplicasFailure(t *testing.T) {
...
@@ -93,10 +84,7 @@ func TestStatefulSetStatusUpdaterUpdateReplicasFailure(t *testing.T) {
func
TestStatefulSetStatusUpdaterUpdateReplicasConflict
(
t
*
testing
.
T
)
{
func
TestStatefulSetStatusUpdaterUpdateReplicasConflict
(
t
*
testing
.
T
)
{
set
:=
newStatefulSet
(
3
)
set
:=
newStatefulSet
(
3
)
status
:=
apps
.
StatefulSetStatus
{
ObservedGeneration
:
func
()
*
int64
{
status
:=
apps
.
StatefulSetStatus
{
ObservedGeneration
:
3
,
Replicas
:
2
}
i
:=
int64
(
3
)
return
&
i
}(),
Replicas
:
2
}
conflict
:=
false
conflict
:=
false
fakeClient
:=
&
fake
.
Clientset
{}
fakeClient
:=
&
fake
.
Clientset
{}
indexer
:=
cache
.
NewIndexer
(
cache
.
MetaNamespaceKeyFunc
,
cache
.
Indexers
{
cache
.
NamespaceIndex
:
cache
.
MetaNamespaceIndexFunc
})
indexer
:=
cache
.
NewIndexer
(
cache
.
MetaNamespaceKeyFunc
,
cache
.
Indexers
{
cache
.
NamespaceIndex
:
cache
.
MetaNamespaceIndexFunc
})
...
@@ -122,10 +110,7 @@ func TestStatefulSetStatusUpdaterUpdateReplicasConflict(t *testing.T) {
...
@@ -122,10 +110,7 @@ func TestStatefulSetStatusUpdaterUpdateReplicasConflict(t *testing.T) {
func
TestStatefulSetStatusUpdaterUpdateReplicasConflictFailure
(
t
*
testing
.
T
)
{
func
TestStatefulSetStatusUpdaterUpdateReplicasConflictFailure
(
t
*
testing
.
T
)
{
set
:=
newStatefulSet
(
3
)
set
:=
newStatefulSet
(
3
)
status
:=
apps
.
StatefulSetStatus
{
ObservedGeneration
:
func
()
*
int64
{
status
:=
apps
.
StatefulSetStatus
{
ObservedGeneration
:
3
,
Replicas
:
2
}
i
:=
int64
(
3
)
return
&
i
}(),
Replicas
:
2
}
fakeClient
:=
&
fake
.
Clientset
{}
fakeClient
:=
&
fake
.
Clientset
{}
indexer
:=
cache
.
NewIndexer
(
cache
.
MetaNamespaceKeyFunc
,
cache
.
Indexers
{
cache
.
NamespaceIndex
:
cache
.
MetaNamespaceIndexFunc
})
indexer
:=
cache
.
NewIndexer
(
cache
.
MetaNamespaceKeyFunc
,
cache
.
Indexers
{
cache
.
NamespaceIndex
:
cache
.
MetaNamespaceIndexFunc
})
indexer
.
Add
(
set
)
indexer
.
Add
(
set
)
...
...
pkg/controller/statefulset/stateful_set_test.go
View file @
aba725a3
...
@@ -20,7 +20,7 @@ import (
...
@@ -20,7 +20,7 @@ import (
"sort"
"sort"
"testing"
"testing"
apps
"k8s.io/api/apps/v1
beta1
"
apps
"k8s.io/api/apps/v1"
"k8s.io/api/core/v1"
"k8s.io/api/core/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime"
...
@@ -574,16 +574,16 @@ func TestGetPodsForStatefulSetRelease(t *testing.T) {
...
@@ -574,16 +574,16 @@ func TestGetPodsForStatefulSetRelease(t *testing.T) {
func
newFakeStatefulSetController
(
initialObjects
...
runtime
.
Object
)
(
*
StatefulSetController
,
*
fakeStatefulPodControl
)
{
func
newFakeStatefulSetController
(
initialObjects
...
runtime
.
Object
)
(
*
StatefulSetController
,
*
fakeStatefulPodControl
)
{
client
:=
fake
.
NewSimpleClientset
(
initialObjects
...
)
client
:=
fake
.
NewSimpleClientset
(
initialObjects
...
)
informerFactory
:=
informers
.
NewSharedInformerFactory
(
client
,
controller
.
NoResyncPeriodFunc
())
informerFactory
:=
informers
.
NewSharedInformerFactory
(
client
,
controller
.
NoResyncPeriodFunc
())
fpc
:=
newFakeStatefulPodControl
(
informerFactory
.
Core
()
.
V1
()
.
Pods
(),
informerFactory
.
Apps
()
.
V1
beta1
()
.
StatefulSets
())
fpc
:=
newFakeStatefulPodControl
(
informerFactory
.
Core
()
.
V1
()
.
Pods
(),
informerFactory
.
Apps
()
.
V1
()
.
StatefulSets
())
ssu
:=
newFakeStatefulSetStatusUpdater
(
informerFactory
.
Apps
()
.
V1
beta1
()
.
StatefulSets
())
ssu
:=
newFakeStatefulSetStatusUpdater
(
informerFactory
.
Apps
()
.
V1
()
.
StatefulSets
())
ssc
:=
NewStatefulSetController
(
ssc
:=
NewStatefulSetController
(
informerFactory
.
Core
()
.
V1
()
.
Pods
(),
informerFactory
.
Core
()
.
V1
()
.
Pods
(),
informerFactory
.
Apps
()
.
V1
beta1
()
.
StatefulSets
(),
informerFactory
.
Apps
()
.
V1
()
.
StatefulSets
(),
informerFactory
.
Core
()
.
V1
()
.
PersistentVolumeClaims
(),
informerFactory
.
Core
()
.
V1
()
.
PersistentVolumeClaims
(),
informerFactory
.
Apps
()
.
V1
beta1
()
.
ControllerRevisions
(),
informerFactory
.
Apps
()
.
V1
()
.
ControllerRevisions
(),
client
,
client
,
)
)
ssh
:=
history
.
NewFakeHistory
(
informerFactory
.
Apps
()
.
V1
beta1
()
.
ControllerRevisions
())
ssh
:=
history
.
NewFakeHistory
(
informerFactory
.
Apps
()
.
V1
()
.
ControllerRevisions
())
ssc
.
podListerSynced
=
alwaysReady
ssc
.
podListerSynced
=
alwaysReady
ssc
.
setListerSynced
=
alwaysReady
ssc
.
setListerSynced
=
alwaysReady
recorder
:=
record
.
NewFakeRecorder
(
10
)
recorder
:=
record
.
NewFakeRecorder
(
10
)
...
...
pkg/controller/statefulset/stateful_set_utils.go
View file @
aba725a3
...
@@ -23,7 +23,7 @@ import (
...
@@ -23,7 +23,7 @@ import (
"regexp"
"regexp"
"strconv"
"strconv"
apps
"k8s.io/api/apps/v1
beta1
"
apps
"k8s.io/api/apps/v1"
"k8s.io/api/core/v1"
"k8s.io/api/core/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime"
...
@@ -363,8 +363,7 @@ func nextRevision(revisions []*apps.ControllerRevision) int64 {
...
@@ -363,8 +363,7 @@ func nextRevision(revisions []*apps.ControllerRevision) int64 {
// inconsistentStatus returns true if the ObservedGeneration of status is greater than set's
// 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.
// 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
{
func
inconsistentStatus
(
set
*
apps
.
StatefulSet
,
status
*
apps
.
StatefulSetStatus
)
bool
{
return
set
.
Status
.
ObservedGeneration
==
nil
||
return
status
.
ObservedGeneration
>
set
.
Status
.
ObservedGeneration
||
*
status
.
ObservedGeneration
>
*
set
.
Status
.
ObservedGeneration
||
status
.
Replicas
!=
set
.
Status
.
Replicas
||
status
.
Replicas
!=
set
.
Status
.
Replicas
||
status
.
CurrentReplicas
!=
set
.
Status
.
CurrentReplicas
||
status
.
CurrentReplicas
!=
set
.
Status
.
CurrentReplicas
||
status
.
ReadyReplicas
!=
set
.
Status
.
ReadyReplicas
||
status
.
ReadyReplicas
!=
set
.
Status
.
ReadyReplicas
||
...
...
pkg/controller/statefulset/stateful_set_utils_test.go
View file @
aba725a3
...
@@ -28,7 +28,7 @@ import (
...
@@ -28,7 +28,7 @@ import (
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/types"
apps
"k8s.io/api/apps/v1
beta1
"
apps
"k8s.io/api/apps/v1"
"k8s.io/api/core/v1"
"k8s.io/api/core/v1"
podutil
"k8s.io/kubernetes/pkg/api/v1/pod"
podutil
"k8s.io/kubernetes/pkg/api/v1/pod"
"k8s.io/kubernetes/pkg/controller/history"
"k8s.io/kubernetes/pkg/controller/history"
...
@@ -340,7 +340,7 @@ func newStatefulSetWithVolumes(replicas int, name string, petMounts []v1.VolumeM
...
@@ -340,7 +340,7 @@ func newStatefulSetWithVolumes(replicas int, name string, petMounts []v1.VolumeM
return
&
apps
.
StatefulSet
{
return
&
apps
.
StatefulSet
{
TypeMeta
:
metav1
.
TypeMeta
{
TypeMeta
:
metav1
.
TypeMeta
{
Kind
:
"StatefulSet"
,
Kind
:
"StatefulSet"
,
APIVersion
:
"apps/v1
beta1
"
,
APIVersion
:
"apps/v1"
,
},
},
ObjectMeta
:
metav1
.
ObjectMeta
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Name
:
name
,
Name
:
name
,
...
...
pkg/kubectl/BUILD
View file @
aba725a3
...
@@ -156,6 +156,7 @@ go_library(
...
@@ -156,6 +156,7 @@ go_library(
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/github.com/golang/glog:go_default_library",
"//vendor/github.com/spf13/cobra:go_default_library",
"//vendor/github.com/spf13/cobra:go_default_library",
"//vendor/github.com/spf13/pflag: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/apps/v1beta1:go_default_library",
"//vendor/k8s.io/api/autoscaling/v1:go_default_library",
"//vendor/k8s.io/api/autoscaling/v1:go_default_library",
"//vendor/k8s.io/api/batch/v1:go_default_library",
"//vendor/k8s.io/api/batch/v1:go_default_library",
...
@@ -187,6 +188,7 @@ go_library(
...
@@ -187,6 +188,7 @@ go_library(
"//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/wait:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/watch: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: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/apps/v1beta1:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/typed/extensions/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",
"//vendor/k8s.io/client-go/rest:go_default_library",
...
...
pkg/kubectl/history.go
View file @
aba725a3
...
@@ -22,6 +22,7 @@ import (
...
@@ -22,6 +22,7 @@ import (
"io"
"io"
"text/tabwriter"
"text/tabwriter"
appsv1
"k8s.io/api/apps/v1"
appsv1beta1
"k8s.io/api/apps/v1beta1"
appsv1beta1
"k8s.io/api/apps/v1beta1"
"k8s.io/api/core/v1"
"k8s.io/api/core/v1"
extensionsv1beta1
"k8s.io/api/extensions/v1beta1"
extensionsv1beta1
"k8s.io/api/extensions/v1beta1"
...
@@ -33,6 +34,7 @@ import (
...
@@ -33,6 +34,7 @@ import (
"k8s.io/apimachinery/pkg/util/json"
"k8s.io/apimachinery/pkg/util/json"
"k8s.io/apimachinery/pkg/util/strategicpatch"
"k8s.io/apimachinery/pkg/util/strategicpatch"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/kubernetes"
clientappsv1
"k8s.io/client-go/kubernetes/typed/apps/v1"
clientappsv1beta1
"k8s.io/client-go/kubernetes/typed/apps/v1beta1"
clientappsv1beta1
"k8s.io/client-go/kubernetes/typed/apps/v1beta1"
clientextv1beta1
"k8s.io/client-go/kubernetes/typed/extensions/v1beta1"
clientextv1beta1
"k8s.io/client-go/kubernetes/typed/extensions/v1beta1"
api
"k8s.io/kubernetes/pkg/apis/core"
api
"k8s.io/kubernetes/pkg/apis/core"
...
@@ -241,7 +243,7 @@ type StatefulSetHistoryViewer struct {
...
@@ -241,7 +243,7 @@ type StatefulSetHistoryViewer struct {
// TODO: this should be a describer
// TODO: this should be a describer
// TODO: needs to implement detailed revision view
// TODO: needs to implement detailed revision view
func
(
h
*
StatefulSetHistoryViewer
)
ViewHistory
(
namespace
,
name
string
,
revision
int64
)
(
string
,
error
)
{
func
(
h
*
StatefulSetHistoryViewer
)
ViewHistory
(
namespace
,
name
string
,
revision
int64
)
(
string
,
error
)
{
_
,
history
,
err
:=
statefulSetHistory
(
h
.
c
.
AppsV1
beta1
(),
namespace
,
name
)
_
,
history
,
err
:=
statefulSetHistory
(
h
.
c
.
AppsV1
(),
namespace
,
name
)
if
err
!=
nil
{
if
err
!=
nil
{
return
""
,
err
return
""
,
err
}
}
...
@@ -265,6 +267,28 @@ func (h *StatefulSetHistoryViewer) ViewHistory(namespace, name string, revision
...
@@ -265,6 +267,28 @@ func (h *StatefulSetHistoryViewer) ViewHistory(namespace, name string, revision
}
}
// controlledHistories returns all ControllerRevisions in namespace that selected by selector and owned by accessor
// 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
(
func
controlledHistory
(
apps
clientappsv1beta1
.
AppsV1beta1Interface
,
apps
clientappsv1beta1
.
AppsV1beta1Interface
,
namespace
string
,
namespace
string
,
...
@@ -311,8 +335,8 @@ func daemonSetHistory(
...
@@ -311,8 +335,8 @@ func daemonSetHistory(
// statefulSetHistory returns the StatefulSet named name in namespace and all ControllerRevisions in its history.
// statefulSetHistory returns the StatefulSet named name in namespace and all ControllerRevisions in its history.
func
statefulSetHistory
(
func
statefulSetHistory
(
apps
clientappsv1
beta1
.
AppsV1beta
1Interface
,
apps
clientappsv1
.
AppsV
1Interface
,
namespace
,
name
string
)
(
*
appsv1
beta1
.
StatefulSet
,
[]
*
appsv1beta
1
.
ControllerRevision
,
error
)
{
namespace
,
name
string
)
(
*
appsv1
.
StatefulSet
,
[]
*
appsv
1
.
ControllerRevision
,
error
)
{
sts
,
err
:=
apps
.
StatefulSets
(
namespace
)
.
Get
(
name
,
metav1
.
GetOptions
{})
sts
,
err
:=
apps
.
StatefulSets
(
namespace
)
.
Get
(
name
,
metav1
.
GetOptions
{})
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
nil
,
fmt
.
Errorf
(
"failed to retrieve Statefulset %s: %s"
,
name
,
err
.
Error
())
return
nil
,
nil
,
fmt
.
Errorf
(
"failed to retrieve Statefulset %s: %s"
,
name
,
err
.
Error
())
...
@@ -325,7 +349,7 @@ func statefulSetHistory(
...
@@ -325,7 +349,7 @@ func statefulSetHistory(
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
nil
,
fmt
.
Errorf
(
"failed to obtain accessor for StatefulSet %s: %s"
,
name
,
err
.
Error
())
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
:=
controlledHistory
V1
(
apps
,
namespace
,
selector
,
accessor
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
nil
,
fmt
.
Errorf
(
"unable to find history controlled by StatefulSet %s: %v"
,
name
,
err
)
return
nil
,
nil
,
fmt
.
Errorf
(
"unable to find history controlled by StatefulSet %s: %v"
,
name
,
err
)
}
}
...
...
pkg/kubectl/rollback.go
View file @
aba725a3
...
@@ -24,6 +24,7 @@ import (
...
@@ -24,6 +24,7 @@ import (
"sort"
"sort"
"syscall"
"syscall"
appsv1
"k8s.io/api/apps/v1"
appsv1beta1
"k8s.io/api/apps/v1beta1"
appsv1beta1
"k8s.io/api/apps/v1beta1"
"k8s.io/api/core/v1"
"k8s.io/api/core/v1"
extv1beta1
"k8s.io/api/extensions/v1beta1"
extv1beta1
"k8s.io/api/extensions/v1beta1"
...
@@ -307,7 +308,7 @@ func (r *StatefulSetRollbacker) Rollback(obj runtime.Object, updatedAnnotations
...
@@ -307,7 +308,7 @@ func (r *StatefulSetRollbacker) Rollback(obj runtime.Object, updatedAnnotations
if
err
!=
nil
{
if
err
!=
nil
{
return
""
,
fmt
.
Errorf
(
"failed to create accessor for kind %v: %s"
,
obj
.
GetObjectKind
(),
err
.
Error
())
return
""
,
fmt
.
Errorf
(
"failed to create accessor for kind %v: %s"
,
obj
.
GetObjectKind
(),
err
.
Error
())
}
}
sts
,
history
,
err
:=
statefulSetHistory
(
r
.
c
.
AppsV1
beta1
(),
accessor
.
GetNamespace
(),
accessor
.
GetName
())
sts
,
history
,
err
:=
statefulSetHistory
(
r
.
c
.
AppsV1
(),
accessor
.
GetNamespace
(),
accessor
.
GetName
())
if
err
!=
nil
{
if
err
!=
nil
{
return
""
,
err
return
""
,
err
}
}
...
@@ -315,7 +316,7 @@ func (r *StatefulSetRollbacker) Rollback(obj runtime.Object, updatedAnnotations
...
@@ -315,7 +316,7 @@ func (r *StatefulSetRollbacker) Rollback(obj runtime.Object, updatedAnnotations
return
""
,
fmt
.
Errorf
(
"no last revision to roll back to"
)
return
""
,
fmt
.
Errorf
(
"no last revision to roll back to"
)
}
}
toHistory
:=
findHistory
(
toRevision
,
history
)
toHistory
:=
findHistory
V1
(
toRevision
,
history
)
if
toHistory
==
nil
{
if
toHistory
==
nil
{
return
""
,
revisionNotFoundErr
(
toRevision
)
return
""
,
revisionNotFoundErr
(
toRevision
)
}
}
...
@@ -338,13 +339,41 @@ func (r *StatefulSetRollbacker) Rollback(obj runtime.Object, updatedAnnotations
...
@@ -338,13 +339,41 @@ func (r *StatefulSetRollbacker) Rollback(obj runtime.Object, updatedAnnotations
}
}
// Restore revision
// Restore revision
if
_
,
err
=
r
.
c
.
AppsV1
beta1
()
.
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
""
,
fmt
.
Errorf
(
"failed restoring revision %d: %v"
,
toRevision
,
err
)
}
}
return
rollbackSuccess
,
nil
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.
// findHistory returns a controllerrevision of a specific revision from the given controllerrevisions.
// It returns nil if no such controllerrevision exists.
// It returns nil if no such controllerrevision exists.
// If toRevision is 0, the last previously used history is returned.
// 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] }
...
@@ -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
{
func
(
h
historiesByRevision
)
Less
(
i
,
j
int
)
bool
{
return
h
[
i
]
.
Revision
<
h
[
j
]
.
Revision
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
}
test/e2e/apps/BUILD
View file @
aba725a3
...
@@ -47,8 +47,8 @@ go_library(
...
@@ -47,8 +47,8 @@ go_library(
"//vendor/github.com/davecgh/go-spew/spew:go_default_library",
"//vendor/github.com/davecgh/go-spew/spew:go_default_library",
"//vendor/github.com/onsi/ginkgo:go_default_library",
"//vendor/github.com/onsi/ginkgo:go_default_library",
"//vendor/github.com/onsi/gomega: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/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/v1:go_default_library",
"//vendor/k8s.io/api/batch/v1beta1:go_default_library",
"//vendor/k8s.io/api/batch/v1beta1:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
...
...
test/e2e/apps/network_partition.go
View file @
aba725a3
...
@@ -371,7 +371,7 @@ var _ = SIGDescribe("Network Partition [Disruptive] [Slow]", func() {
...
@@ -371,7 +371,7 @@ var _ = SIGDescribe("Network Partition [Disruptive] [Slow]", func() {
petMounts
:=
[]
v1
.
VolumeMount
{{
Name
:
"datadir"
,
MountPath
:
"/data/"
}}
petMounts
:=
[]
v1
.
VolumeMount
{{
Name
:
"datadir"
,
MountPath
:
"/data/"
}}
podMounts
:=
[]
v1
.
VolumeMount
{{
Name
:
"home"
,
MountPath
:
"/home"
}}
podMounts
:=
[]
v1
.
VolumeMount
{{
Name
:
"home"
,
MountPath
:
"/home"
}}
ps
:=
framework
.
NewStatefulSet
(
psName
,
ns
,
headlessSvcName
,
3
,
petMounts
,
podMounts
,
labels
)
ps
:=
framework
.
NewStatefulSet
(
psName
,
ns
,
headlessSvcName
,
3
,
petMounts
,
podMounts
,
labels
)
_
,
err
:=
c
.
AppsV1
beta1
()
.
StatefulSets
(
ns
)
.
Create
(
ps
)
_
,
err
:=
c
.
AppsV1
()
.
StatefulSets
(
ns
)
.
Create
(
ps
)
Expect
(
err
)
.
NotTo
(
HaveOccurred
())
Expect
(
err
)
.
NotTo
(
HaveOccurred
())
pst
:=
framework
.
NewStatefulSetTester
(
c
)
pst
:=
framework
.
NewStatefulSetTester
(
c
)
...
@@ -387,7 +387,7 @@ var _ = SIGDescribe("Network Partition [Disruptive] [Slow]", func() {
...
@@ -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
()
{
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
)
ps
:=
framework
.
NewStatefulSet
(
psName
,
ns
,
headlessSvcName
,
3
,
[]
v1
.
VolumeMount
{},
[]
v1
.
VolumeMount
{},
labels
)
_
,
err
:=
c
.
AppsV1
beta1
()
.
StatefulSets
(
ns
)
.
Create
(
ps
)
_
,
err
:=
c
.
AppsV1
()
.
StatefulSets
(
ns
)
.
Create
(
ps
)
Expect
(
err
)
.
NotTo
(
HaveOccurred
())
Expect
(
err
)
.
NotTo
(
HaveOccurred
())
pst
:=
framework
.
NewStatefulSetTester
(
c
)
pst
:=
framework
.
NewStatefulSetTester
(
c
)
...
...
test/e2e/apps/statefulset.go
View file @
aba725a3
...
@@ -23,8 +23,7 @@ import (
...
@@ -23,8 +23,7 @@ import (
.
"github.com/onsi/ginkgo"
.
"github.com/onsi/ginkgo"
.
"github.com/onsi/gomega"
.
"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"
"k8s.io/api/core/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
klabels
"k8s.io/apimachinery/pkg/labels"
klabels
"k8s.io/apimachinery/pkg/labels"
...
@@ -95,7 +94,7 @@ var _ = SIGDescribe("StatefulSet", func() {
...
@@ -95,7 +94,7 @@ var _ = SIGDescribe("StatefulSet", func() {
sst
:=
framework
.
NewStatefulSetTester
(
c
)
sst
:=
framework
.
NewStatefulSetTester
(
c
)
sst
.
PauseNewPods
(
ss
)
sst
.
PauseNewPods
(
ss
)
_
,
err
:=
c
.
AppsV1
beta1
()
.
StatefulSets
(
ns
)
.
Create
(
ss
)
_
,
err
:=
c
.
AppsV1
()
.
StatefulSets
(
ns
)
.
Create
(
ss
)
Expect
(
err
)
.
NotTo
(
HaveOccurred
())
Expect
(
err
)
.
NotTo
(
HaveOccurred
())
By
(
"Saturating stateful set "
+
ss
.
Name
)
By
(
"Saturating stateful set "
+
ss
.
Name
)
...
@@ -135,7 +134,7 @@ var _ = SIGDescribe("StatefulSet", func() {
...
@@ -135,7 +134,7 @@ var _ = SIGDescribe("StatefulSet", func() {
// Replace ss with the one returned from Create() so it has the UID.
// 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.
// Save Kind since it won't be populated in the returned ss.
kind
:=
ss
.
Kind
kind
:=
ss
.
Kind
ss
,
err
:=
c
.
AppsV1
beta1
()
.
StatefulSets
(
ns
)
.
Create
(
ss
)
ss
,
err
:=
c
.
AppsV1
()
.
StatefulSets
(
ns
)
.
Create
(
ss
)
Expect
(
err
)
.
NotTo
(
HaveOccurred
())
Expect
(
err
)
.
NotTo
(
HaveOccurred
())
ss
.
Kind
=
kind
ss
.
Kind
=
kind
...
@@ -215,7 +214,7 @@ var _ = SIGDescribe("StatefulSet", func() {
...
@@ -215,7 +214,7 @@ var _ = SIGDescribe("StatefulSet", func() {
sst
:=
framework
.
NewStatefulSetTester
(
c
)
sst
:=
framework
.
NewStatefulSetTester
(
c
)
sst
.
PauseNewPods
(
ss
)
sst
.
PauseNewPods
(
ss
)
_
,
err
:=
c
.
AppsV1
beta1
()
.
StatefulSets
(
ns
)
.
Create
(
ss
)
_
,
err
:=
c
.
AppsV1
()
.
StatefulSets
(
ns
)
.
Create
(
ss
)
Expect
(
err
)
.
NotTo
(
HaveOccurred
())
Expect
(
err
)
.
NotTo
(
HaveOccurred
())
sst
.
WaitForRunning
(
1
,
0
,
ss
)
sst
.
WaitForRunning
(
1
,
0
,
ss
)
...
@@ -248,7 +247,7 @@ var _ = SIGDescribe("StatefulSet", func() {
...
@@ -248,7 +247,7 @@ var _ = SIGDescribe("StatefulSet", func() {
ss
:=
framework
.
NewStatefulSet
(
"ss2"
,
ns
,
headlessSvcName
,
3
,
nil
,
nil
,
labels
)
ss
:=
framework
.
NewStatefulSet
(
"ss2"
,
ns
,
headlessSvcName
,
3
,
nil
,
nil
,
labels
)
sst
:=
framework
.
NewStatefulSetTester
(
c
)
sst
:=
framework
.
NewStatefulSetTester
(
c
)
sst
.
SetHttpProbe
(
ss
)
sst
.
SetHttpProbe
(
ss
)
ss
,
err
:=
c
.
AppsV1
beta1
()
.
StatefulSets
(
ns
)
.
Create
(
ss
)
ss
,
err
:=
c
.
AppsV1
()
.
StatefulSets
(
ns
)
.
Create
(
ss
)
Expect
(
err
)
.
NotTo
(
HaveOccurred
())
Expect
(
err
)
.
NotTo
(
HaveOccurred
())
sst
.
WaitForRunningAndReady
(
*
ss
.
Spec
.
Replicas
,
ss
)
sst
.
WaitForRunningAndReady
(
*
ss
.
Spec
.
Replicas
,
ss
)
ss
=
sst
.
WaitForStatus
(
ss
)
ss
=
sst
.
WaitForStatus
(
ss
)
...
@@ -373,7 +372,7 @@ var _ = SIGDescribe("StatefulSet", func() {
...
@@ -373,7 +372,7 @@ var _ = SIGDescribe("StatefulSet", func() {
}()}
}()}
}(),
}(),
}
}
ss
,
err
:=
c
.
AppsV1
beta1
()
.
StatefulSets
(
ns
)
.
Create
(
ss
)
ss
,
err
:=
c
.
AppsV1
()
.
StatefulSets
(
ns
)
.
Create
(
ss
)
Expect
(
err
)
.
NotTo
(
HaveOccurred
())
Expect
(
err
)
.
NotTo
(
HaveOccurred
())
sst
.
WaitForRunningAndReady
(
*
ss
.
Spec
.
Replicas
,
ss
)
sst
.
WaitForRunningAndReady
(
*
ss
.
Spec
.
Replicas
,
ss
)
ss
=
sst
.
WaitForStatus
(
ss
)
ss
=
sst
.
WaitForStatus
(
ss
)
...
@@ -575,7 +574,7 @@ var _ = SIGDescribe("StatefulSet", func() {
...
@@ -575,7 +574,7 @@ var _ = SIGDescribe("StatefulSet", func() {
ss
.
Spec
.
UpdateStrategy
=
apps
.
StatefulSetUpdateStrategy
{
ss
.
Spec
.
UpdateStrategy
=
apps
.
StatefulSetUpdateStrategy
{
Type
:
apps
.
OnDeleteStatefulSetStrategyType
,
Type
:
apps
.
OnDeleteStatefulSetStrategyType
,
}
}
ss
,
err
:=
c
.
AppsV1
beta1
()
.
StatefulSets
(
ns
)
.
Create
(
ss
)
ss
,
err
:=
c
.
AppsV1
()
.
StatefulSets
(
ns
)
.
Create
(
ss
)
Expect
(
err
)
.
NotTo
(
HaveOccurred
())
Expect
(
err
)
.
NotTo
(
HaveOccurred
())
sst
.
WaitForRunningAndReady
(
*
ss
.
Spec
.
Replicas
,
ss
)
sst
.
WaitForRunningAndReady
(
*
ss
.
Spec
.
Replicas
,
ss
)
ss
=
sst
.
WaitForStatus
(
ss
)
ss
=
sst
.
WaitForStatus
(
ss
)
...
@@ -659,7 +658,7 @@ var _ = SIGDescribe("StatefulSet", func() {
...
@@ -659,7 +658,7 @@ var _ = SIGDescribe("StatefulSet", func() {
ss
:=
framework
.
NewStatefulSet
(
ssName
,
ns
,
headlessSvcName
,
1
,
nil
,
nil
,
psLabels
)
ss
:=
framework
.
NewStatefulSet
(
ssName
,
ns
,
headlessSvcName
,
1
,
nil
,
nil
,
psLabels
)
sst
:=
framework
.
NewStatefulSetTester
(
c
)
sst
:=
framework
.
NewStatefulSetTester
(
c
)
sst
.
SetHttpProbe
(
ss
)
sst
.
SetHttpProbe
(
ss
)
ss
,
err
=
c
.
AppsV1
beta1
()
.
StatefulSets
(
ns
)
.
Create
(
ss
)
ss
,
err
=
c
.
AppsV1
()
.
StatefulSets
(
ns
)
.
Create
(
ss
)
Expect
(
err
)
.
NotTo
(
HaveOccurred
())
Expect
(
err
)
.
NotTo
(
HaveOccurred
())
By
(
"Waiting until all stateful set "
+
ssName
+
" replicas will be running in namespace "
+
ns
)
By
(
"Waiting until all stateful set "
+
ssName
+
" replicas will be running in namespace "
+
ns
)
...
@@ -731,7 +730,7 @@ var _ = SIGDescribe("StatefulSet", func() {
...
@@ -731,7 +730,7 @@ var _ = SIGDescribe("StatefulSet", func() {
ss
.
Spec
.
PodManagementPolicy
=
apps
.
ParallelPodManagement
ss
.
Spec
.
PodManagementPolicy
=
apps
.
ParallelPodManagement
sst
:=
framework
.
NewStatefulSetTester
(
c
)
sst
:=
framework
.
NewStatefulSetTester
(
c
)
sst
.
SetHttpProbe
(
ss
)
sst
.
SetHttpProbe
(
ss
)
ss
,
err
:=
c
.
AppsV1
beta1
()
.
StatefulSets
(
ns
)
.
Create
(
ss
)
ss
,
err
:=
c
.
AppsV1
()
.
StatefulSets
(
ns
)
.
Create
(
ss
)
Expect
(
err
)
.
NotTo
(
HaveOccurred
())
Expect
(
err
)
.
NotTo
(
HaveOccurred
())
By
(
"Waiting until all stateful set "
+
ssName
+
" replicas will be running in namespace "
+
ns
)
By
(
"Waiting until all stateful set "
+
ssName
+
" replicas will be running in namespace "
+
ns
)
...
@@ -793,7 +792,7 @@ var _ = SIGDescribe("StatefulSet", func() {
...
@@ -793,7 +792,7 @@ var _ = SIGDescribe("StatefulSet", func() {
statefulPodContainer
:=
&
ss
.
Spec
.
Template
.
Spec
.
Containers
[
0
]
statefulPodContainer
:=
&
ss
.
Spec
.
Template
.
Spec
.
Containers
[
0
]
statefulPodContainer
.
Ports
=
append
(
statefulPodContainer
.
Ports
,
conflictingPort
)
statefulPodContainer
.
Ports
=
append
(
statefulPodContainer
.
Ports
,
conflictingPort
)
ss
.
Spec
.
Template
.
Spec
.
NodeName
=
node
.
Name
ss
.
Spec
.
Template
.
Spec
.
NodeName
=
node
.
Name
_
,
err
=
f
.
ClientSet
.
AppsV1
beta1
()
.
StatefulSets
(
f
.
Namespace
.
Name
)
.
Create
(
ss
)
_
,
err
=
f
.
ClientSet
.
AppsV1
()
.
StatefulSets
(
f
.
Namespace
.
Name
)
.
Create
(
ss
)
framework
.
ExpectNoError
(
err
)
framework
.
ExpectNoError
(
err
)
By
(
"Waiting until pod "
+
podName
+
" will start running in namespace "
+
f
.
Namespace
.
Name
)
By
(
"Waiting until pod "
+
podName
+
" will start running in namespace "
+
f
.
Namespace
.
Name
)
...
@@ -844,7 +843,7 @@ var _ = SIGDescribe("StatefulSet", func() {
...
@@ -844,7 +843,7 @@ var _ = SIGDescribe("StatefulSet", func() {
return
nil
return
nil
},
framework
.
StatefulPodTimeout
,
2
*
time
.
Second
)
.
Should
(
BeNil
())
},
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() {
It("should have a working scale subresource", func() {
By("Creating statefulset " + ssName + " in namespace " + ns)
By("Creating statefulset " + ssName + " in namespace " + ns)
ss := framework.NewStatefulSet(ssName, ns, headlessSvcName, 1, nil, nil, labels)
ss := framework.NewStatefulSet(ssName, ns, headlessSvcName, 1, nil, nil, labels)
...
@@ -858,6 +857,7 @@ var _ = SIGDescribe("StatefulSet", func() {
...
@@ -858,6 +857,7 @@ var _ = SIGDescribe("StatefulSet", func() {
By("getting scale subresource")
By("getting scale subresource")
scale := framework.NewStatefulSetScale(ss)
scale := framework.NewStatefulSetScale(ss)
scaleResult := &appsv1beta2.Scale{}
scaleResult := &appsv1beta2.Scale{}
err = c.AppsV1beta2().RESTClient().Get().AbsPath("/apis/apps/v1beta2").Namespace(ns).Resource("statefulsets").Name(ssName).SubResource("scale").Do().Into(scale)
err = c.AppsV1beta2().RESTClient().Get().AbsPath("/apis/apps/v1beta2").Namespace(ns).Resource("statefulsets").Name(ssName).SubResource("scale").Do().Into(scale)
if err != nil {
if err != nil {
framework.Failf("Failed to get scale subresource: %v", err)
framework.Failf("Failed to get scale subresource: %v", err)
...
@@ -881,6 +881,7 @@ var _ = SIGDescribe("StatefulSet", func() {
...
@@ -881,6 +881,7 @@ var _ = SIGDescribe("StatefulSet", func() {
}
}
Expect(*(ss.Spec.Replicas)).To(Equal(int32(2)))
Expect(*(ss.Spec.Replicas)).To(Equal(int32(2)))
})
})
*/
})
})
framework
.
KubeDescribe
(
"Deploy clustered applications [Feature:StatefulSet] [Slow]"
,
func
()
{
framework
.
KubeDescribe
(
"Deploy clustered applications [Feature:StatefulSet] [Slow]"
,
func
()
{
...
...
test/e2e/framework/BUILD
View file @
aba725a3
...
@@ -101,7 +101,7 @@ go_library(
...
@@ -101,7 +101,7 @@ go_library(
"//vendor/golang.org/x/net/websocket:go_default_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/compute/v1:go_default_library",
"//vendor/google.golang.org/api/googleapi:go_default_library",
"//vendor/google.golang.org/api/googleapi:go_default_library",
"//vendor/k8s.io/api/apps/v1
beta1
: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/apps/v1beta2:go_default_library",
"//vendor/k8s.io/api/authorization/v1beta1:go_default_library",
"//vendor/k8s.io/api/authorization/v1beta1:go_default_library",
"//vendor/k8s.io/api/batch/v1:go_default_library",
"//vendor/k8s.io/api/batch/v1:go_default_library",
...
...
test/e2e/framework/statefulset_utils.go
View file @
aba725a3
...
@@ -28,7 +28,7 @@ import (
...
@@ -28,7 +28,7 @@ import (
.
"github.com/onsi/gomega"
.
"github.com/onsi/gomega"
apps
"k8s.io/api/apps/v1
beta1
"
apps
"k8s.io/api/apps/v1"
appsV1beta2
"k8s.io/api/apps/v1beta2"
appsV1beta2
"k8s.io/api/apps/v1beta2"
"k8s.io/api/core/v1"
"k8s.io/api/core/v1"
apierrs
"k8s.io/apimachinery/pkg/api/errors"
apierrs
"k8s.io/apimachinery/pkg/api/errors"
...
@@ -83,7 +83,7 @@ func NewStatefulSetTester(c clientset.Interface) *StatefulSetTester {
...
@@ -83,7 +83,7 @@ func NewStatefulSetTester(c clientset.Interface) *StatefulSetTester {
// GetStatefulSet gets the StatefulSet named name in namespace.
// GetStatefulSet gets the StatefulSet named name in namespace.
func
(
s
*
StatefulSetTester
)
GetStatefulSet
(
namespace
,
name
string
)
*
apps
.
StatefulSet
{
func
(
s
*
StatefulSetTester
)
GetStatefulSet
(
namespace
,
name
string
)
*
apps
.
StatefulSet
{
ss
,
err
:=
s
.
c
.
AppsV1
beta1
()
.
StatefulSets
(
namespace
)
.
Get
(
name
,
metav1
.
GetOptions
{})
ss
,
err
:=
s
.
c
.
AppsV1
()
.
StatefulSets
(
namespace
)
.
Get
(
name
,
metav1
.
GetOptions
{})
if
err
!=
nil
{
if
err
!=
nil
{
Failf
(
"Failed to get StatefulSet %s/%s: %v"
,
namespace
,
name
,
err
)
Failf
(
"Failed to get StatefulSet %s/%s: %v"
,
namespace
,
name
,
err
)
}
}
...
@@ -108,7 +108,7 @@ func (s *StatefulSetTester) CreateStatefulSet(manifestPath, ns string) *apps.Sta
...
@@ -108,7 +108,7 @@ func (s *StatefulSetTester) CreateStatefulSet(manifestPath, ns string) *apps.Sta
Expect
(
err
)
.
NotTo
(
HaveOccurred
())
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
))
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
.
AppsV1
beta1
()
.
StatefulSets
(
ns
)
.
Create
(
ss
)
_
,
err
=
s
.
c
.
AppsV1
()
.
StatefulSets
(
ns
)
.
Create
(
ss
)
Expect
(
err
)
.
NotTo
(
HaveOccurred
())
Expect
(
err
)
.
NotTo
(
HaveOccurred
())
s
.
WaitForRunningAndReady
(
*
ss
.
Spec
.
Replicas
,
ss
)
s
.
WaitForRunningAndReady
(
*
ss
.
Spec
.
Replicas
,
ss
)
return
ss
return
ss
...
@@ -245,12 +245,12 @@ func (s *StatefulSetTester) Restart(ss *apps.StatefulSet) {
...
@@ -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
{
func
(
s
*
StatefulSetTester
)
update
(
ns
,
name
string
,
update
func
(
ss
*
apps
.
StatefulSet
))
*
apps
.
StatefulSet
{
for
i
:=
0
;
i
<
3
;
i
++
{
for
i
:=
0
;
i
<
3
;
i
++
{
ss
,
err
:=
s
.
c
.
AppsV1
beta1
()
.
StatefulSets
(
ns
)
.
Get
(
name
,
metav1
.
GetOptions
{})
ss
,
err
:=
s
.
c
.
AppsV1
()
.
StatefulSets
(
ns
)
.
Get
(
name
,
metav1
.
GetOptions
{})
if
err
!=
nil
{
if
err
!=
nil
{
Failf
(
"failed to get statefulset %q: %v"
,
name
,
err
)
Failf
(
"failed to get statefulset %q: %v"
,
name
,
err
)
}
}
update
(
ss
)
update
(
ss
)
ss
,
err
=
s
.
c
.
AppsV1
beta1
()
.
StatefulSets
(
ns
)
.
Update
(
ss
)
ss
,
err
=
s
.
c
.
AppsV1
()
.
StatefulSets
(
ns
)
.
Update
(
ss
)
if
err
==
nil
{
if
err
==
nil
{
return
ss
return
ss
}
}
...
@@ -328,7 +328,7 @@ func (s *StatefulSetTester) WaitForRunning(numPodsRunning, numPodsReady int32, s
...
@@ -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
))
{
func
(
s
*
StatefulSetTester
)
WaitForState
(
ss
*
apps
.
StatefulSet
,
until
func
(
*
apps
.
StatefulSet
,
*
v1
.
PodList
)
(
bool
,
error
))
{
pollErr
:=
wait
.
PollImmediate
(
StatefulSetPoll
,
StatefulSetTimeout
,
pollErr
:=
wait
.
PollImmediate
(
StatefulSetPoll
,
StatefulSetTimeout
,
func
()
(
bool
,
error
)
{
func
()
(
bool
,
error
)
{
ssGet
,
err
:=
s
.
c
.
AppsV1
beta1
()
.
StatefulSets
(
ss
.
Namespace
)
.
Get
(
ss
.
Name
,
metav1
.
GetOptions
{})
ssGet
,
err
:=
s
.
c
.
AppsV1
()
.
StatefulSets
(
ss
.
Namespace
)
.
Get
(
ss
.
Name
,
metav1
.
GetOptions
{})
if
err
!=
nil
{
if
err
!=
nil
{
return
false
,
err
return
false
,
err
}
}
...
@@ -344,7 +344,7 @@ func (s *StatefulSetTester) WaitForState(ss *apps.StatefulSet, until func(*apps.
...
@@ -344,7 +344,7 @@ func (s *StatefulSetTester) WaitForState(ss *apps.StatefulSet, until func(*apps.
// The returned StatefulSet contains such a StatefulSetStatus
// The returned StatefulSet contains such a StatefulSetStatus
func
(
s
*
StatefulSetTester
)
WaitForStatus
(
set
*
apps
.
StatefulSet
)
*
apps
.
StatefulSet
{
func
(
s
*
StatefulSetTester
)
WaitForStatus
(
set
*
apps
.
StatefulSet
)
*
apps
.
StatefulSet
{
s
.
WaitForState
(
set
,
func
(
set2
*
apps
.
StatefulSet
,
pods
*
v1
.
PodList
)
(
bool
,
error
)
{
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
set
=
set2
return
true
,
nil
return
true
,
nil
}
}
...
@@ -613,11 +613,11 @@ func (s *StatefulSetTester) WaitForStatusReadyReplicas(ss *apps.StatefulSet, exp
...
@@ -613,11 +613,11 @@ func (s *StatefulSetTester) WaitForStatusReadyReplicas(ss *apps.StatefulSet, exp
ns
,
name
:=
ss
.
Namespace
,
ss
.
Name
ns
,
name
:=
ss
.
Namespace
,
ss
.
Name
pollErr
:=
wait
.
PollImmediate
(
StatefulSetPoll
,
StatefulSetTimeout
,
pollErr
:=
wait
.
PollImmediate
(
StatefulSetPoll
,
StatefulSetTimeout
,
func
()
(
bool
,
error
)
{
func
()
(
bool
,
error
)
{
ssGet
,
err
:=
s
.
c
.
AppsV1
beta1
()
.
StatefulSets
(
ns
)
.
Get
(
name
,
metav1
.
GetOptions
{})
ssGet
,
err
:=
s
.
c
.
AppsV1
()
.
StatefulSets
(
ns
)
.
Get
(
name
,
metav1
.
GetOptions
{})
if
err
!=
nil
{
if
err
!=
nil
{
return
false
,
err
return
false
,
err
}
}
if
*
ssGet
.
Status
.
ObservedGeneration
<
ss
.
Generation
{
if
ssGet
.
Status
.
ObservedGeneration
<
ss
.
Generation
{
return
false
,
nil
return
false
,
nil
}
}
if
ssGet
.
Status
.
ReadyReplicas
!=
expectedReplicas
{
if
ssGet
.
Status
.
ReadyReplicas
!=
expectedReplicas
{
...
@@ -638,11 +638,11 @@ func (s *StatefulSetTester) WaitForStatusReplicas(ss *apps.StatefulSet, expected
...
@@ -638,11 +638,11 @@ func (s *StatefulSetTester) WaitForStatusReplicas(ss *apps.StatefulSet, expected
ns
,
name
:=
ss
.
Namespace
,
ss
.
Name
ns
,
name
:=
ss
.
Namespace
,
ss
.
Name
pollErr
:=
wait
.
PollImmediate
(
StatefulSetPoll
,
StatefulSetTimeout
,
pollErr
:=
wait
.
PollImmediate
(
StatefulSetPoll
,
StatefulSetTimeout
,
func
()
(
bool
,
error
)
{
func
()
(
bool
,
error
)
{
ssGet
,
err
:=
s
.
c
.
AppsV1
beta1
()
.
StatefulSets
(
ns
)
.
Get
(
name
,
metav1
.
GetOptions
{})
ssGet
,
err
:=
s
.
c
.
AppsV1
()
.
StatefulSets
(
ns
)
.
Get
(
name
,
metav1
.
GetOptions
{})
if
err
!=
nil
{
if
err
!=
nil
{
return
false
,
err
return
false
,
err
}
}
if
*
ssGet
.
Status
.
ObservedGeneration
<
ss
.
Generation
{
if
ssGet
.
Status
.
ObservedGeneration
<
ss
.
Generation
{
return
false
,
nil
return
false
,
nil
}
}
if
ssGet
.
Status
.
Replicas
!=
expectedReplicas
{
if
ssGet
.
Status
.
Replicas
!=
expectedReplicas
{
...
@@ -676,7 +676,7 @@ func (s *StatefulSetTester) SortStatefulPods(pods *v1.PodList) {
...
@@ -676,7 +676,7 @@ func (s *StatefulSetTester) SortStatefulPods(pods *v1.PodList) {
// DeleteAllStatefulSets deletes all StatefulSet API Objects in Namespace ns.
// DeleteAllStatefulSets deletes all StatefulSet API Objects in Namespace ns.
func
DeleteAllStatefulSets
(
c
clientset
.
Interface
,
ns
string
)
{
func
DeleteAllStatefulSets
(
c
clientset
.
Interface
,
ns
string
)
{
sst
:=
&
StatefulSetTester
{
c
:
c
}
sst
:=
&
StatefulSetTester
{
c
:
c
}
ssList
,
err
:=
c
.
AppsV1
beta1
()
.
StatefulSets
(
ns
)
.
List
(
metav1
.
ListOptions
{
LabelSelector
:
labels
.
Everything
()
.
String
()})
ssList
,
err
:=
c
.
AppsV1
()
.
StatefulSets
(
ns
)
.
List
(
metav1
.
ListOptions
{
LabelSelector
:
labels
.
Everything
()
.
String
()})
ExpectNoError
(
err
)
ExpectNoError
(
err
)
// Scale down each statefulset, then delete it completely.
// Scale down each statefulset, then delete it completely.
...
@@ -692,7 +692,7 @@ func DeleteAllStatefulSets(c clientset.Interface, ns string) {
...
@@ -692,7 +692,7 @@ func DeleteAllStatefulSets(c clientset.Interface, ns string) {
Logf
(
"Deleting statefulset %v"
,
ss
.
Name
)
Logf
(
"Deleting statefulset %v"
,
ss
.
Name
)
// Use OrphanDependents=false so it's deleted synchronously.
// Use OrphanDependents=false so it's deleted synchronously.
// We already made sure the Pods are gone inside Scale().
// We already made sure the Pods are gone inside Scale().
if
err
:=
c
.
AppsV1
beta1
()
.
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
))
errList
=
append
(
errList
,
fmt
.
Sprintf
(
"%v"
,
err
))
}
}
}
}
...
@@ -790,7 +790,7 @@ func NewStatefulSet(name, ns, governingSvcName string, replicas int32, statefulP
...
@@ -790,7 +790,7 @@ func NewStatefulSet(name, ns, governingSvcName string, replicas int32, statefulP
return
&
apps
.
StatefulSet
{
return
&
apps
.
StatefulSet
{
TypeMeta
:
metav1
.
TypeMeta
{
TypeMeta
:
metav1
.
TypeMeta
{
Kind
:
"StatefulSet"
,
Kind
:
"StatefulSet"
,
APIVersion
:
"apps/v1
beta1
"
,
APIVersion
:
"apps/v1"
,
},
},
ObjectMeta
:
metav1
.
ObjectMeta
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Name
:
name
,
Name
:
name
,
...
@@ -872,7 +872,7 @@ func (sp statefulPodsByOrdinal) Less(i, j int) bool {
...
@@ -872,7 +872,7 @@ func (sp statefulPodsByOrdinal) Less(i, j int) bool {
type
updateStatefulSetFunc
func
(
*
apps
.
StatefulSet
)
type
updateStatefulSetFunc
func
(
*
apps
.
StatefulSet
)
func
UpdateStatefulSetWithRetries
(
c
clientset
.
Interface
,
namespace
,
name
string
,
applyUpdate
updateStatefulSetFunc
)
(
statefulSet
*
apps
.
StatefulSet
,
err
error
)
{
func
UpdateStatefulSetWithRetries
(
c
clientset
.
Interface
,
namespace
,
name
string
,
applyUpdate
updateStatefulSetFunc
)
(
statefulSet
*
apps
.
StatefulSet
,
err
error
)
{
statefulSets
:=
c
.
AppsV1
beta1
()
.
StatefulSets
(
namespace
)
statefulSets
:=
c
.
AppsV1
()
.
StatefulSets
(
namespace
)
var
updateErr
error
var
updateErr
error
pollErr
:=
wait
.
Poll
(
10
*
time
.
Millisecond
,
1
*
time
.
Minute
,
func
()
(
bool
,
error
)
{
pollErr
:=
wait
.
Poll
(
10
*
time
.
Millisecond
,
1
*
time
.
Minute
,
func
()
(
bool
,
error
)
{
if
statefulSet
,
err
=
statefulSets
.
Get
(
name
,
metav1
.
GetOptions
{});
err
!=
nil
{
if
statefulSet
,
err
=
statefulSets
.
Get
(
name
,
metav1
.
GetOptions
{});
err
!=
nil
{
...
...
test/e2e/instrumentation/monitoring/influxdb.go
View file @
aba725a3
...
@@ -122,7 +122,7 @@ func verifyExpectedRcsExistAndGetExpectedPods(c clientset.Interface) ([]string,
...
@@ -122,7 +122,7 @@ func verifyExpectedRcsExistAndGetExpectedPods(c clientset.Interface) ([]string,
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
psList
,
err
:=
c
.
AppsV1
beta1
()
.
StatefulSets
(
metav1
.
NamespaceSystem
)
.
List
(
options
)
psList
,
err
:=
c
.
AppsV1
()
.
StatefulSets
(
metav1
.
NamespaceSystem
)
.
List
(
options
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
...
...
test/e2e/manifest/BUILD
View file @
aba725a3
...
@@ -12,7 +12,7 @@ go_library(
...
@@ -12,7 +12,7 @@ go_library(
deps = [
deps = [
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//test/e2e/generated:go_default_library",
"//test/e2e/generated:go_default_library",
"//vendor/k8s.io/api/apps/v1
beta1
: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/core/v1:go_default_library",
"//vendor/k8s.io/api/extensions/v1beta1:go_default_library",
"//vendor/k8s.io/api/extensions/v1beta1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
...
...
test/e2e/manifest/manifest.go
View file @
aba725a3
...
@@ -17,7 +17,7 @@ limitations under the License.
...
@@ -17,7 +17,7 @@ limitations under the License.
package
manifest
package
manifest
import
(
import
(
apps
"k8s.io/api/apps/v1
beta1
"
apps
"k8s.io/api/apps/v1"
"k8s.io/api/core/v1"
"k8s.io/api/core/v1"
extensions
"k8s.io/api/extensions/v1beta1"
extensions
"k8s.io/api/extensions/v1beta1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
...
...
test/e2e/storage/BUILD
View file @
aba725a3
...
@@ -44,7 +44,7 @@ go_library(
...
@@ -44,7 +44,7 @@ go_library(
"//vendor/github.com/onsi/ginkgo:go_default_library",
"//vendor/github.com/onsi/ginkgo:go_default_library",
"//vendor/github.com/onsi/gomega:go_default_library",
"//vendor/github.com/onsi/gomega:go_default_library",
"//vendor/google.golang.org/api/googleapi:go_default_library",
"//vendor/google.golang.org/api/googleapi:go_default_library",
"//vendor/k8s.io/api/apps/v1
beta1
: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/core/v1:go_default_library",
"//vendor/k8s.io/api/extensions/v1beta1:go_default_library",
"//vendor/k8s.io/api/extensions/v1beta1:go_default_library",
"//vendor/k8s.io/api/policy/v1beta1:go_default_library",
"//vendor/k8s.io/api/policy/v1beta1:go_default_library",
...
...
test/e2e/storage/persistent_volumes-local.go
View file @
aba725a3
...
@@ -29,7 +29,7 @@ import (
...
@@ -29,7 +29,7 @@ import (
.
"github.com/onsi/ginkgo"
.
"github.com/onsi/ginkgo"
.
"github.com/onsi/gomega"
.
"github.com/onsi/gomega"
appsv1
beta1
"k8s.io/api/apps/v1beta
1"
appsv1
"k8s.io/api/apps/v
1"
"k8s.io/api/core/v1"
"k8s.io/api/core/v1"
extv1beta1
"k8s.io/api/extensions/v1beta1"
extv1beta1
"k8s.io/api/extensions/v1beta1"
rbacv1beta1
"k8s.io/api/rbac/v1beta1"
rbacv1beta1
"k8s.io/api/rbac/v1beta1"
...
@@ -1193,7 +1193,7 @@ func findLocalPersistentVolume(c clientset.Interface, volumePath string) (*v1.Pe
...
@@ -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
)
return
nil
,
fmt
.
Errorf
(
"Unable to find local persistent volume with path %v"
,
volumePath
)
}
}
func
createStatefulSet
(
config
*
localTestConfig
,
ssReplicas
int32
,
volumeCount
int
)
*
appsv1
beta1
.
StatefulSet
{
func
createStatefulSet
(
config
*
localTestConfig
,
ssReplicas
int32
,
volumeCount
int
)
*
appsv1
.
StatefulSet
{
mounts
:=
[]
v1
.
VolumeMount
{}
mounts
:=
[]
v1
.
VolumeMount
{}
claims
:=
[]
v1
.
PersistentVolumeClaim
{}
claims
:=
[]
v1
.
PersistentVolumeClaim
{}
for
i
:=
0
;
i
<
volumeCount
;
i
++
{
for
i
:=
0
;
i
<
volumeCount
;
i
++
{
...
@@ -1223,12 +1223,12 @@ func createStatefulSet(config *localTestConfig, ssReplicas int32, volumeCount in
...
@@ -1223,12 +1223,12 @@ func createStatefulSet(config *localTestConfig, ssReplicas int32, volumeCount in
}
}
labels
:=
map
[
string
]
string
{
"app"
:
"local-volume-test"
}
labels
:=
map
[
string
]
string
{
"app"
:
"local-volume-test"
}
spec
:=
&
appsv1
beta1
.
StatefulSet
{
spec
:=
&
appsv1
.
StatefulSet
{
ObjectMeta
:
metav1
.
ObjectMeta
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Name
:
"local-volume-statefulset"
,
Name
:
"local-volume-statefulset"
,
Namespace
:
config
.
ns
,
Namespace
:
config
.
ns
,
},
},
Spec
:
appsv1
beta1
.
StatefulSetSpec
{
Spec
:
appsv1
.
StatefulSetSpec
{
Selector
:
&
metav1
.
LabelSelector
{
Selector
:
&
metav1
.
LabelSelector
{
MatchLabels
:
map
[
string
]
string
{
"app"
:
"local-volume-test"
},
MatchLabels
:
map
[
string
]
string
{
"app"
:
"local-volume-test"
},
},
},
...
@@ -1253,14 +1253,14 @@ func createStatefulSet(config *localTestConfig, ssReplicas int32, volumeCount in
...
@@ -1253,14 +1253,14 @@ func createStatefulSet(config *localTestConfig, ssReplicas int32, volumeCount in
},
},
}
}
ss
,
err
:=
config
.
client
.
AppsV1
beta1
()
.
StatefulSets
(
config
.
ns
)
.
Create
(
spec
)
ss
,
err
:=
config
.
client
.
AppsV1
()
.
StatefulSets
(
config
.
ns
)
.
Create
(
spec
)
Expect
(
err
)
.
NotTo
(
HaveOccurred
())
Expect
(
err
)
.
NotTo
(
HaveOccurred
())
config
.
ssTester
.
WaitForRunningAndReady
(
ssReplicas
,
ss
)
config
.
ssTester
.
WaitForRunningAndReady
(
ssReplicas
,
ss
)
return
ss
return
ss
}
}
func
validateStatefulSet
(
config
*
localTestConfig
,
ss
*
appsv1
beta1
.
StatefulSet
)
{
func
validateStatefulSet
(
config
*
localTestConfig
,
ss
*
appsv1
.
StatefulSet
)
{
pods
:=
config
.
ssTester
.
GetPodList
(
ss
)
pods
:=
config
.
ssTester
.
GetPodList
(
ss
)
// Verify that each pod is on a different node
// Verify that each pod is on a different node
...
...
test/e2e/testing-manifests/statefulset/cassandra/statefulset.yaml
View file @
aba725a3
apiVersion
:
"
apps/v1
beta1
"
apiVersion
:
"
apps/v1"
kind
:
StatefulSet
kind
:
StatefulSet
metadata
:
metadata
:
name
:
cassandra
name
:
cassandra
...
...
test/e2e/testing-manifests/statefulset/cockroachdb/statefulset.yaml
View file @
aba725a3
apiVersion
:
apps/v1
beta1
apiVersion
:
apps/v1
kind
:
StatefulSet
kind
:
StatefulSet
metadata
:
metadata
:
name
:
cockroachdb
name
:
cockroachdb
...
...
test/e2e/testing-manifests/statefulset/etcd/statefulset.yaml
View file @
aba725a3
apiVersion
:
apps/v1
beta1
apiVersion
:
apps/v1
kind
:
StatefulSet
kind
:
StatefulSet
metadata
:
metadata
:
name
:
etcd
name
:
etcd
...
...
test/e2e/testing-manifests/statefulset/mysql-galera/statefulset.yaml
View file @
aba725a3
apiVersion
:
apps/v1
beta1
apiVersion
:
apps/v1
kind
:
StatefulSet
kind
:
StatefulSet
metadata
:
metadata
:
name
:
mysql
name
:
mysql
...
...
test/e2e/testing-manifests/statefulset/mysql-upgrade/statefulset.yaml
View file @
aba725a3
apiVersion
:
apps/v1
beta1
apiVersion
:
apps/v1
kind
:
StatefulSet
kind
:
StatefulSet
metadata
:
metadata
:
name
:
mysql
name
:
mysql
...
...
test/e2e/testing-manifests/statefulset/redis/statefulset.yaml
View file @
aba725a3
apiVersion
:
apps/v1
beta1
apiVersion
:
apps/v1
kind
:
StatefulSet
kind
:
StatefulSet
metadata
:
metadata
:
name
:
rd
name
:
rd
...
...
test/e2e/testing-manifests/statefulset/zookeeper/statefulset.yaml
View file @
aba725a3
apiVersion
:
apps/v1
beta1
apiVersion
:
apps/v1
kind
:
StatefulSet
kind
:
StatefulSet
metadata
:
metadata
:
name
:
zoo
name
:
zoo
...
...
test/e2e/upgrades/apps/BUILD
View file @
aba725a3
...
@@ -24,7 +24,7 @@ go_library(
...
@@ -24,7 +24,7 @@ go_library(
"//test/utils/image:go_default_library",
"//test/utils/image:go_default_library",
"//vendor/github.com/onsi/ginkgo:go_default_library",
"//vendor/github.com/onsi/ginkgo:go_default_library",
"//vendor/github.com/onsi/gomega:go_default_library",
"//vendor/github.com/onsi/gomega:go_default_library",
"//vendor/k8s.io/api/apps/v1
beta1
: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/batch/v1:go_default_library",
"//vendor/k8s.io/api/core/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/extensions/v1beta1:go_default_library",
...
...
test/e2e/upgrades/apps/statefulset.go
View file @
aba725a3
...
@@ -20,7 +20,7 @@ import (
...
@@ -20,7 +20,7 @@ import (
.
"github.com/onsi/ginkgo"
.
"github.com/onsi/ginkgo"
.
"github.com/onsi/gomega"
.
"github.com/onsi/gomega"
apps
"k8s.io/api/apps/v1
beta1
"
apps
"k8s.io/api/apps/v1"
"k8s.io/api/core/v1"
"k8s.io/api/core/v1"
"k8s.io/kubernetes/pkg/util/version"
"k8s.io/kubernetes/pkg/util/version"
...
@@ -71,7 +71,7 @@ func (t *StatefulSetUpgradeTest) Setup(f *framework.Framework) {
...
@@ -71,7 +71,7 @@ func (t *StatefulSetUpgradeTest) Setup(f *framework.Framework) {
By
(
"Creating statefulset "
+
ssName
+
" in namespace "
+
ns
)
By
(
"Creating statefulset "
+
ssName
+
" in namespace "
+
ns
)
*
(
t
.
set
.
Spec
.
Replicas
)
=
3
*
(
t
.
set
.
Spec
.
Replicas
)
=
3
_
,
err
=
f
.
ClientSet
.
AppsV1
beta1
()
.
StatefulSets
(
ns
)
.
Create
(
t
.
set
)
_
,
err
=
f
.
ClientSet
.
AppsV1
()
.
StatefulSets
(
ns
)
.
Create
(
t
.
set
)
Expect
(
err
)
.
NotTo
(
HaveOccurred
())
Expect
(
err
)
.
NotTo
(
HaveOccurred
())
By
(
"Saturating stateful set "
+
t
.
set
.
Name
)
By
(
"Saturating stateful set "
+
t
.
set
.
Name
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment