mirror of
https://gitea.com/Lydanne/buildx.git
synced 2025-07-09 21:17:09 +08:00
driver/kubernetes/util: remove k8s.io/apiserver dependency
Use a simplified local implementation that follow the same semantics, so that we don't need k8s.io/apiserver as dependency. Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
@ -1,12 +1,13 @@
|
||||
package util
|
||||
|
||||
import (
|
||||
"crypto/rand"
|
||||
"encoding/hex"
|
||||
"fmt"
|
||||
|
||||
"github.com/docker/buildx/store"
|
||||
"github.com/google/uuid"
|
||||
"github.com/pkg/errors"
|
||||
"k8s.io/apiserver/pkg/storage/names"
|
||||
)
|
||||
|
||||
func GenerateNodeName(builderName string, txn *store.Txn) (string, error) {
|
||||
@ -15,7 +16,7 @@ func GenerateNodeName(builderName string, txn *store.Txn) (string, error) {
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return names.SimpleNameGenerator.GenerateName(fmt.Sprintf("buildkit-%s-", u)), nil
|
||||
return generateName(fmt.Sprintf("buildkit-%s-", u)), nil
|
||||
}
|
||||
|
||||
ng, err := txn.NodeGroupByName(builderName)
|
||||
@ -45,3 +46,30 @@ func GenerateNodeName(builderName string, txn *store.Txn) (string, error) {
|
||||
|
||||
return "", errors.Errorf("failed to generate random node name")
|
||||
}
|
||||
|
||||
const (
|
||||
maxNameLength = 63
|
||||
randomLength = 5
|
||||
maxGeneratedNameLength = maxNameLength - randomLength
|
||||
)
|
||||
|
||||
// generateName generates the name plus a random suffix of five alphanumerics
|
||||
// when a name is requested. The string is guaranteed to not exceed the length
|
||||
// of a standard Kubernetes name (63 characters).
|
||||
//
|
||||
// It's a simplified implementation of k8s.io/apiserver/pkg/storage/names:
|
||||
// https://github.com/kubernetes/apiserver/blob/v0.29.2/pkg/storage/names/generate.go#L34-L54
|
||||
func generateName(base string) string {
|
||||
if len(base) > maxGeneratedNameLength {
|
||||
base = base[:maxGeneratedNameLength]
|
||||
}
|
||||
return base + randomSuffix()
|
||||
}
|
||||
|
||||
func randomSuffix() string {
|
||||
b := make([]byte, 32)
|
||||
if _, err := rand.Read(b); err != nil {
|
||||
panic(err) // This shouldn't happen
|
||||
}
|
||||
return hex.EncodeToString(b)[:randomLength]
|
||||
}
|
||||
|
Reference in New Issue
Block a user