Merge pull request #37225 from thockin/no-bad-word-in-names

Automatic merge from submit-queue

Remove vowels from rand.String, to avoid 'bad words'

As reported by users via email.

@aronchick
This commit is contained in:
Kubernetes Submit Queue 2016-11-29 15:11:14 -08:00 committed by GitHub
commit 356170fee6
3 changed files with 18 additions and 14 deletions

View File

@ -70,6 +70,7 @@ go_test(
"//pkg/runtime/schema:go_default_library", "//pkg/runtime/schema:go_default_library",
"//pkg/util/rand:go_default_library", "//pkg/util/rand:go_default_library",
"//pkg/util/sets:go_default_library", "//pkg/util/sets:go_default_library",
"//vendor:github.com/davecgh/go-spew/spew",
"//vendor:github.com/golang/glog", "//vendor:github.com/golang/glog",
], ],
) )

View File

@ -22,6 +22,7 @@ import (
"testing" "testing"
"time" "time"
"github.com/davecgh/go-spew/spew"
"github.com/golang/glog" "github.com/golang/glog"
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
@ -69,7 +70,7 @@ func tokenSecretReferences() []v1.ObjectReference {
// addTokenSecretReference adds a reference to the ServiceAccountToken that will be created // addTokenSecretReference adds a reference to the ServiceAccountToken that will be created
func addTokenSecretReference(refs []v1.ObjectReference) []v1.ObjectReference { func addTokenSecretReference(refs []v1.ObjectReference) []v1.ObjectReference {
return addNamedTokenSecretReference(refs, "default-token-fplln") return addNamedTokenSecretReference(refs, "default-token-p7w9c")
} }
// addNamedTokenSecretReference adds a reference to the named ServiceAccountToken // addNamedTokenSecretReference adds a reference to the named ServiceAccountToken
@ -114,9 +115,9 @@ func opaqueSecret() *v1.Secret {
} }
// createdTokenSecret returns the ServiceAccountToken secret posted when creating a new token secret. // createdTokenSecret returns the ServiceAccountToken secret posted when creating a new token secret.
// Named "default-token-fplln", since that is the first generated name after rand.Seed(1) // Named "default-token-p7w9c", since that is the first generated name after rand.Seed(1)
func createdTokenSecret(overrideName ...string) *v1.Secret { func createdTokenSecret(overrideName ...string) *v1.Secret {
return namedCreatedTokenSecret("default-token-fplln") return namedCreatedTokenSecret("default-token-p7w9c")
} }
// namedTokenSecret returns the ServiceAccountToken secret posted when creating a new token secret with the given name. // namedTokenSecret returns the ServiceAccountToken secret posted when creating a new token secret with the given name.
@ -259,12 +260,12 @@ func TestTokenCreation(t *testing.T) {
// Attempt 2 // Attempt 2
core.NewGetAction(schema.GroupVersionResource{Version: "v1", Resource: "serviceaccounts"}, v1.NamespaceDefault, "default"), core.NewGetAction(schema.GroupVersionResource{Version: "v1", Resource: "serviceaccounts"}, v1.NamespaceDefault, "default"),
core.NewCreateAction(schema.GroupVersionResource{Version: "v1", Resource: "secrets"}, v1.NamespaceDefault, namedCreatedTokenSecret("default-token-gziey")), core.NewCreateAction(schema.GroupVersionResource{Version: "v1", Resource: "secrets"}, v1.NamespaceDefault, namedCreatedTokenSecret("default-token-x50vb")),
// Attempt 3 // Attempt 3
core.NewGetAction(schema.GroupVersionResource{Version: "v1", Resource: "serviceaccounts"}, v1.NamespaceDefault, "default"), core.NewGetAction(schema.GroupVersionResource{Version: "v1", Resource: "serviceaccounts"}, v1.NamespaceDefault, "default"),
core.NewCreateAction(schema.GroupVersionResource{Version: "v1", Resource: "secrets"}, v1.NamespaceDefault, namedCreatedTokenSecret("default-token-oh43e")), core.NewCreateAction(schema.GroupVersionResource{Version: "v1", Resource: "secrets"}, v1.NamespaceDefault, namedCreatedTokenSecret("default-token-scq98")),
core.NewUpdateAction(schema.GroupVersionResource{Version: "v1", Resource: "serviceaccounts"}, v1.NamespaceDefault, serviceAccount(addNamedTokenSecretReference(emptySecretReferences(), "default-token-oh43e"))), core.NewUpdateAction(schema.GroupVersionResource{Version: "v1", Resource: "serviceaccounts"}, v1.NamespaceDefault, serviceAccount(addNamedTokenSecretReference(emptySecretReferences(), "default-token-scq98"))),
}, },
}, },
"new serviceaccount with no secrets encountering unending create error": { "new serviceaccount with no secrets encountering unending create error": {
@ -288,10 +289,10 @@ func TestTokenCreation(t *testing.T) {
core.NewCreateAction(schema.GroupVersionResource{Version: "v1", Resource: "secrets"}, v1.NamespaceDefault, createdTokenSecret()), core.NewCreateAction(schema.GroupVersionResource{Version: "v1", Resource: "secrets"}, v1.NamespaceDefault, createdTokenSecret()),
// Retry 1 // Retry 1
core.NewGetAction(schema.GroupVersionResource{Version: "v1", Resource: "serviceaccounts"}, v1.NamespaceDefault, "default"), core.NewGetAction(schema.GroupVersionResource{Version: "v1", Resource: "serviceaccounts"}, v1.NamespaceDefault, "default"),
core.NewCreateAction(schema.GroupVersionResource{Version: "v1", Resource: "secrets"}, v1.NamespaceDefault, namedCreatedTokenSecret("default-token-gziey")), core.NewCreateAction(schema.GroupVersionResource{Version: "v1", Resource: "secrets"}, v1.NamespaceDefault, namedCreatedTokenSecret("default-token-x50vb")),
// Retry 2 // Retry 2
core.NewGetAction(schema.GroupVersionResource{Version: "v1", Resource: "serviceaccounts"}, v1.NamespaceDefault, "default"), core.NewGetAction(schema.GroupVersionResource{Version: "v1", Resource: "serviceaccounts"}, v1.NamespaceDefault, "default"),
core.NewCreateAction(schema.GroupVersionResource{Version: "v1", Resource: "secrets"}, v1.NamespaceDefault, namedCreatedTokenSecret("default-token-oh43e")), core.NewCreateAction(schema.GroupVersionResource{Version: "v1", Resource: "secrets"}, v1.NamespaceDefault, namedCreatedTokenSecret("default-token-scq98")),
}, },
}, },
"new serviceaccount with missing secrets": { "new serviceaccount with missing secrets": {
@ -652,7 +653,7 @@ func TestTokenCreation(t *testing.T) {
expectedAction := tc.ExpectedActions[i] expectedAction := tc.ExpectedActions[i]
if !reflect.DeepEqual(expectedAction, action) { if !reflect.DeepEqual(expectedAction, action) {
t.Errorf("%s: Expected\n\t%#v\ngot\n\t%#v", k, expectedAction, action) t.Errorf("%s:\nExpected:\n%s\ngot:\n%s", k, spew.Sdump(expectedAction), spew.Sdump(action))
continue continue
} }
} }

View File

@ -23,8 +23,6 @@ import (
"time" "time"
) )
var letters = []rune("abcdefghijklmnopqrstuvwxyz0123456789")
var numLetters = len(letters)
var rng = struct { var rng = struct {
sync.Mutex sync.Mutex
rand *rand.Rand rand *rand.Rand
@ -72,12 +70,16 @@ func Perm(n int) []int {
return rng.rand.Perm(n) return rng.rand.Perm(n)
} }
// String generates a random alphanumeric string n characters long. This will // We omit vowels from the set of available characters to reduce the chances
// panic if n is less than zero. // of "bad words" being formed.
var alphanums = []rune("bcdfghjklmnpqrstvwxz0123456789")
// String generates a random alphanumeric string, without vowels, which is n
// characters long. This will panic if n is less than zero.
func String(length int) string { func String(length int) string {
b := make([]rune, length) b := make([]rune, length)
for i := range b { for i := range b {
b[i] = letters[Intn(numLetters)] b[i] = alphanums[Intn(len(alphanums))]
} }
return string(b) return string(b)
} }