Validate usage strings when creating bootstrap tokens via kubeadm

This commit is contained in:
wackxu
2017-10-14 20:44:57 +08:00
parent 338ee7f5d5
commit 0e1a74731d
6 changed files with 70 additions and 7 deletions

View File

@@ -18,7 +18,9 @@ package api
import (
"fmt"
"k8s.io/apimachinery/pkg/util/sets"
"regexp"
"strings"
)
var bootstrapGroupRegexp = regexp.MustCompile(`\A` + BootstrapGroupPattern + `\z`)
@@ -32,3 +34,19 @@ func ValidateBootstrapGroupName(name string) error {
}
return fmt.Errorf("bootstrap group %q is invalid (must match %s)", name, BootstrapGroupPattern)
}
// ValidateUsages validates that the passed in string are valid usage strings for bootstrap tokens.
func ValidateUsages(usages []string) error {
usageAuthentication := strings.TrimPrefix(BootstrapTokenUsageAuthentication, BootstrapTokenUsagePrefix)
usageSigning := strings.TrimPrefix(BootstrapTokenUsageSigningKey, BootstrapTokenUsagePrefix)
invalidUsages := sets.NewString()
for _, usage := range usages {
if usage != usageAuthentication && usage != usageSigning {
invalidUsages.Insert(usage)
}
}
if len(invalidUsages) > 0 {
return fmt.Errorf("invalide bootstrap token usage string: %s, valid usage option: %s, %s", strings.Join(invalidUsages.List(), ","), usageAuthentication, usageSigning)
}
return nil
}