Skip to content

Commit bf4bc4d

Browse files
authored
Merge pull request kubernetes#89283 from SataQiu/staging-e2e-framework-20200320
e2e/framework: remove direct imports to /pkg/client/conditions
2 parents 739d01a + 86fe8f6 commit bf4bc4d

File tree

4 files changed

+24
-7
lines changed

4 files changed

+24
-7
lines changed

test/e2e/framework/BUILD

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ go_library(
2525
visibility = ["//visibility:public"],
2626
deps = [
2727
"//pkg/api/v1/pod:go_default_library",
28-
"//pkg/client/conditions:go_default_library",
2928
"//pkg/controller:go_default_library",
3029
"//pkg/kubelet/apis/config:go_default_library",
3130
"//pkg/kubelet/apis/stats/v1alpha1:go_default_library",
@@ -48,6 +47,7 @@ go_library(
4847
"//staging/src/k8s.io/apimachinery/pkg/util/uuid:go_default_library",
4948
"//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library",
5049
"//staging/src/k8s.io/apimachinery/pkg/util/yaml:go_default_library",
50+
"//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library",
5151
"//staging/src/k8s.io/apiserver/pkg/authentication/serviceaccount:go_default_library",
5252
"//staging/src/k8s.io/client-go/discovery:go_default_library",
5353
"//staging/src/k8s.io/client-go/discovery/cached/memory:go_default_library",

test/e2e/framework/pod/BUILD

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ go_library(
1212
importpath = "k8s.io/kubernetes/test/e2e/framework/pod",
1313
visibility = ["//visibility:public"],
1414
deps = [
15-
"//pkg/client/conditions:go_default_library",
1615
"//pkg/kubelet/types:go_default_library",
1716
"//pkg/kubelet/util/format:go_default_library",
1817
"//staging/src/k8s.io/api/core/v1:go_default_library",

test/e2e/framework/pod/resource.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,16 @@ import (
3333
"k8s.io/apimachinery/pkg/util/wait"
3434
clientset "k8s.io/client-go/kubernetes"
3535
"k8s.io/kubectl/pkg/util/podutils"
36-
"k8s.io/kubernetes/pkg/client/conditions"
3736
kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
3837
e2elog "k8s.io/kubernetes/test/e2e/framework/log"
3938
testutils "k8s.io/kubernetes/test/utils"
4039
imageutils "k8s.io/kubernetes/test/utils/image"
4140
)
4241

42+
// errPodCompleted is returned by PodRunning or PodContainerRunning to indicate that
43+
// the pod has already reached completed state.
44+
var errPodCompleted = fmt.Errorf("pod ran to completion")
45+
4346
// TODO: Move to its own subpkg.
4447
// expectNoError checks if "err" is set, and if so, fails assertion while logging the error.
4548
func expectNoError(err error, explain ...interface{}) {
@@ -155,7 +158,7 @@ func podRunning(c clientset.Interface, podName, namespace string) wait.Condition
155158
case v1.PodRunning:
156159
return true, nil
157160
case v1.PodFailed, v1.PodSucceeded:
158-
return false, conditions.ErrPodCompleted
161+
return false, errPodCompleted
159162
}
160163
return false, nil
161164
}
@@ -184,7 +187,7 @@ func podRunningAndReady(c clientset.Interface, podName, namespace string) wait.C
184187
switch pod.Status.Phase {
185188
case v1.PodFailed, v1.PodSucceeded:
186189
e2elog.Logf("The status of Pod %s is %s which is unexpected", podName, pod.Status.Phase)
187-
return false, conditions.ErrPodCompleted
190+
return false, errPodCompleted
188191
case v1.PodRunning:
189192
e2elog.Logf("The status of Pod %s is %s (Ready = %v)", podName, pod.Status.Phase, podutils.IsPodReady(pod))
190193
return podutils.IsPodReady(pod), nil

test/e2e/framework/util.go

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,12 @@ import (
5050
"k8s.io/apimachinery/pkg/fields"
5151
"k8s.io/apimachinery/pkg/labels"
5252
"k8s.io/apimachinery/pkg/runtime"
53+
"k8s.io/apimachinery/pkg/runtime/schema"
5354
"k8s.io/apimachinery/pkg/util/sets"
5455
"k8s.io/apimachinery/pkg/util/uuid"
5556
"k8s.io/apimachinery/pkg/util/wait"
5657
utilyaml "k8s.io/apimachinery/pkg/util/yaml"
58+
"k8s.io/apimachinery/pkg/watch"
5759
clientset "k8s.io/client-go/kubernetes"
5860
"k8s.io/client-go/kubernetes/scheme"
5961
"k8s.io/client-go/rest"
@@ -62,7 +64,6 @@ import (
6264
clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
6365
watchtools "k8s.io/client-go/tools/watch"
6466
podutil "k8s.io/kubernetes/pkg/api/v1/pod"
65-
"k8s.io/kubernetes/pkg/client/conditions"
6667
"k8s.io/kubernetes/pkg/controller"
6768
taintutils "k8s.io/kubernetes/pkg/util/taints"
6869
testutils "k8s.io/kubernetes/test/utils"
@@ -281,10 +282,24 @@ func waitForServiceAccountInNamespace(c clientset.Interface, ns, serviceAccountN
281282
}
282283
ctx, cancel := watchtools.ContextWithOptionalTimeout(context.Background(), timeout)
283284
defer cancel()
284-
_, err = watchtools.UntilWithoutRetry(ctx, w, conditions.ServiceAccountHasSecrets)
285+
_, err = watchtools.UntilWithoutRetry(ctx, w, serviceAccountHasSecrets)
285286
return err
286287
}
287288

289+
// serviceAccountHasSecrets returns true if the service account has at least one secret,
290+
// false if it does not, or an error.
291+
func serviceAccountHasSecrets(event watch.Event) (bool, error) {
292+
switch event.Type {
293+
case watch.Deleted:
294+
return false, apierrors.NewNotFound(schema.GroupResource{Resource: "serviceaccounts"}, "")
295+
}
296+
switch t := event.Object.(type) {
297+
case *v1.ServiceAccount:
298+
return len(t.Secrets) > 0, nil
299+
}
300+
return false, nil
301+
}
302+
288303
// WaitForDefaultServiceAccountInNamespace waits for the default service account to be provisioned
289304
// the default service account is what is associated with pods when they do not specify a service account
290305
// as a result, pods are not able to be provisioned in a namespace until the service account is provisioned

0 commit comments

Comments
 (0)