|
|
|
@ -20,7 +20,6 @@ import (
|
|
|
|
"slices"
|
|
|
|
"slices"
|
|
|
|
"strconv"
|
|
|
|
"strconv"
|
|
|
|
"strings"
|
|
|
|
"strings"
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
"github.com/Masterminds/semver/v3"
|
|
|
|
"github.com/Masterminds/semver/v3"
|
|
|
|
"k8s.io/client-go/kubernetes/scheme"
|
|
|
|
"k8s.io/client-go/kubernetes/scheme"
|
|
|
|
@ -41,15 +40,17 @@ var (
|
|
|
|
// DefaultVersionSet is the default version set, which includes only Core V1 ("v1").
|
|
|
|
// DefaultVersionSet is the default version set, which includes only Core V1 ("v1").
|
|
|
|
DefaultVersionSet = allKnownVersions()
|
|
|
|
DefaultVersionSet = allKnownVersions()
|
|
|
|
|
|
|
|
|
|
|
|
DefaultCapabilities = func() *Capabilities {
|
|
|
|
// DefaultCapabilities is initialized during init().
|
|
|
|
caps, err := makeDefaultCapabilities()
|
|
|
|
DefaultCapabilities *Capabilities
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func init() {
|
|
|
|
|
|
|
|
var err error
|
|
|
|
|
|
|
|
DefaultCapabilities, err = makeDefaultCapabilities()
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
panic(fmt.Sprintf("failed to create default capabilities: %v", err))
|
|
|
|
panic(fmt.Sprintf("failed to create default capabilities: %v", err))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return caps
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}()
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Capabilities describes the capabilities of the Kubernetes cluster.
|
|
|
|
// Capabilities describes the capabilities of the Kubernetes cluster.
|
|
|
|
type Capabilities struct {
|
|
|
|
type Capabilities struct {
|
|
|
|
@ -143,16 +144,11 @@ func allKnownVersions() VersionSet {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func makeDefaultCapabilities() (*Capabilities, error) {
|
|
|
|
func makeDefaultCapabilities() (*Capabilities, error) {
|
|
|
|
// Test builds don't include debug info / module info
|
|
|
|
|
|
|
|
// (And even if they did, we probably want stable capabilities for tests anyway)
|
|
|
|
|
|
|
|
// Return a default value for test builds
|
|
|
|
|
|
|
|
if testing.Testing() {
|
|
|
|
|
|
|
|
return newCapabilities(kubeVersionMajorTesting, kubeVersionMinorTesting)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vstr, err := helmversion.K8sIOClientGoModVersion()
|
|
|
|
vstr, err := helmversion.K8sIOClientGoModVersion()
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
return nil, fmt.Errorf("failed to retrieve k8s.io/client-go version: %w", err)
|
|
|
|
// Test builds and environments without k8s.io/client-go build info
|
|
|
|
|
|
|
|
// fall back to a stable default version.
|
|
|
|
|
|
|
|
return newCapabilities(kubeVersionMajorTesting, kubeVersionMinorTesting)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
v, err := semver.NewVersion(vstr)
|
|
|
|
v, err := semver.NewVersion(vstr)
|
|
|
|
|