Improve serviceaccount e2e setup

This commit is contained in:
Jordan Liggitt 2016-02-03 14:15:37 -05:00
parent 9441721fee
commit 1a92b8d11d

View File

@ -21,8 +21,7 @@ import (
"time" "time"
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
client "k8s.io/kubernetes/pkg/client/unversioned" apierrors "k8s.io/kubernetes/pkg/api/errors"
"k8s.io/kubernetes/pkg/fields"
"k8s.io/kubernetes/pkg/util" "k8s.io/kubernetes/pkg/util"
"k8s.io/kubernetes/pkg/util/wait" "k8s.io/kubernetes/pkg/util/wait"
"k8s.io/kubernetes/plugin/pkg/admission/serviceaccount" "k8s.io/kubernetes/plugin/pkg/admission/serviceaccount"
@ -40,21 +39,34 @@ var _ = Describe("ServiceAccounts", func() {
// Standard get, update retry loop // Standard get, update retry loop
expectNoError(wait.Poll(time.Millisecond*500, time.Second*10, func() (bool, error) { expectNoError(wait.Poll(time.Millisecond*500, time.Second*10, func() (bool, error) {
By("getting the auto-created API token") By("getting the auto-created API token")
tokenSelector := fields.SelectorFromSet(map[string]string{client.SecretType: string(api.SecretTypeServiceAccountToken)}) sa, err := f.Client.ServiceAccounts(f.Namespace.Name).Get("default")
options := api.ListOptions{FieldSelector: tokenSelector} if apierrors.IsNotFound(err) {
secrets, err := f.Client.Secrets(f.Namespace.Name).List(options) Logf("default service account was not found")
if err != nil {
return false, err
}
if len(secrets.Items) == 0 {
return false, nil return false, nil
} }
if len(secrets.Items) > 1 { if err != nil {
return false, fmt.Errorf("Expected 1 token secret, got %d", len(secrets.Items)) Logf("error getting default service account: %v", err)
return false, err
} }
tokenContent = string(secrets.Items[0].Data[api.ServiceAccountTokenKey]) if len(sa.Secrets) == 0 {
rootCAContent = string(secrets.Items[0].Data[api.ServiceAccountRootCAKey]) Logf("default service account has no secret references")
return true, nil return false, nil
}
for _, secretRef := range sa.Secrets {
secret, err := f.Client.Secrets(f.Namespace.Name).Get(secretRef.Name)
if err != nil {
Logf("Error getting secret %s: %v", secretRef.Name, err)
continue
}
if secret.Type == api.SecretTypeServiceAccountToken {
tokenContent = string(secret.Data[api.ServiceAccountTokenKey])
rootCAContent = string(secret.Data[api.ServiceAccountRootCAKey])
return true, nil
}
}
Logf("default service account has no secret references to valid service account tokens")
return false, nil
})) }))
pod := &api.Pod{ pod := &api.Pod{