make register.GroupVersion use GroupVersion

This commit is contained in:
deads2k
2015-11-16 11:42:09 -05:00
parent 4fd6b6df06
commit 5077e9b644
13 changed files with 99 additions and 78 deletions

View File

@@ -30,7 +30,6 @@ import (
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/meta"
"k8s.io/kubernetes/pkg/api/registered"
apiutil "k8s.io/kubernetes/pkg/api/util"
"k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/runtime"
)
@@ -52,16 +51,16 @@ func init() {
registeredGroupVersions := registered.GroupVersionsForGroup("")
groupVersion := registeredGroupVersions[0]
*groupMeta = latest.GroupMeta{
GroupVersion: groupVersion,
Group: apiutil.GetGroup(groupVersion),
Version: apiutil.GetVersion(groupVersion),
Codec: runtime.CodecFor(api.Scheme, groupVersion),
GroupVersion: groupVersion.String(),
Group: groupVersion.Group,
Version: groupVersion.Version,
Codec: runtime.CodecFor(api.Scheme, groupVersion.String()),
}
var versions []string
var groupVersions []string
for i := len(registeredGroupVersions) - 1; i >= 0; i-- {
versions = append(versions, apiutil.GetVersion(registeredGroupVersions[i]))
groupVersions = append(groupVersions, registeredGroupVersions[i])
versions = append(versions, registeredGroupVersions[i].Version)
groupVersions = append(groupVersions, registeredGroupVersions[i].String())
}
groupMeta.Versions = versions
groupMeta.GroupVersions = groupVersions

View File

@@ -22,46 +22,60 @@ import (
"strings"
"github.com/golang/glog"
apiutil "k8s.io/kubernetes/pkg/api/util"
"k8s.io/kubernetes/pkg/api/unversioned"
)
// List of registered API versions.
// The list is in the order of most preferred to the least.
var RegisteredVersions []string
var RegisteredGroupVersions []unversioned.GroupVersion
func init() {
validGroupVersions := map[string]bool{
"v1": true,
"extensions/v1beta1": true,
"componentconfig/v1alpha1": true,
"metrics/v1alpha1": true,
validGroupVersions := map[unversioned.GroupVersion]bool{
unversioned.GroupVersion{Group: "", Version: "v1"}: true,
unversioned.GroupVersion{Group: "extensions", Version: "v1beta1"}: true,
unversioned.GroupVersion{Group: "componentconfig", Version: "v1alpha1"}: true,
unversioned.GroupVersion{Group: "metrics", Version: "v1alpha1"}: true,
}
// The default list of supported api versions, in order of most preferred to the least.
defaultSupportedVersions := "v1,extensions/v1beta1,componentconfig/v1alpha1"
supportedVersions := []unversioned.GroupVersion{
{Group: "", Version: "v1"},
{Group: "extensions", Version: "v1beta1"},
{Group: "componentconfig", Version: "v1alpha1"},
}
// Env var KUBE_API_VERSIONS is a comma separated list of API versions that should be registered in the scheme.
// The versions should be in the order of most preferred to the least.
supportedVersions := os.Getenv("KUBE_API_VERSIONS")
if supportedVersions == "" {
supportedVersions = defaultSupportedVersions
}
versions := strings.Split(supportedVersions, ",")
for _, version := range versions {
// Verify that the version is valid.
valid, ok := validGroupVersions[version]
if !ok || !valid {
// Not a valid API version.
glog.Fatalf("invalid api version: %s in KUBE_API_VERSIONS: %s. List of valid API versions: %v",
version, os.Getenv("KUBE_API_VERSIONS"), validGroupVersions)
userRequestedVersions := os.Getenv("KUBE_API_VERSIONS")
if len(userRequestedVersions) != 0 {
// reset the supported versions
supportedVersions = []unversioned.GroupVersion{}
for _, version := range strings.Split(userRequestedVersions, ",") {
gv, err := unversioned.ParseGroupVersion(version)
if err != nil {
glog.Fatalf("invalid api version: %s in KUBE_API_VERSIONS: %s. List of valid API versions: %v",
version, os.Getenv("KUBE_API_VERSIONS"), validGroupVersions)
}
// Verify that the version is valid.
valid, ok := validGroupVersions[gv]
if !ok || !valid {
// Not a valid API version.
glog.Fatalf("invalid api version: %s in KUBE_API_VERSIONS: %s. List of valid API versions: %v",
version, os.Getenv("KUBE_API_VERSIONS"), validGroupVersions)
}
supportedVersions = append(supportedVersions, gv)
}
RegisteredVersions = append(RegisteredVersions, version)
}
RegisteredGroupVersions = supportedVersions
}
// Returns true if the given api version is one of the registered api versions.
func IsRegisteredAPIVersion(version string) bool {
for _, apiVersion := range RegisteredVersions {
if apiVersion == version {
func IsRegisteredAPIGroupVersion(gv unversioned.GroupVersion) bool {
for _, currGV := range RegisteredGroupVersions {
if currGV == gv {
return true
}
}
@@ -70,10 +84,10 @@ func IsRegisteredAPIVersion(version string) bool {
// GroupVersionsForGroup returns the registered versions of a group in the form
// of "group/version".
func GroupVersionsForGroup(group string) []string {
ret := []string{}
for _, v := range RegisteredVersions {
if apiutil.GetGroup(v) == group {
func GroupVersionsForGroup(group string) []unversioned.GroupVersion {
ret := []unversioned.GroupVersion{}
for _, v := range RegisteredGroupVersions {
if v.Group == group {
ret = append(ret, v)
}
}

View File

@@ -284,9 +284,9 @@ func FuzzerFor(t *testing.T, version string, src rand.Source) *fuzz.Fuzzer {
ev.ValueFrom = &api.EnvVarSource{}
ev.ValueFrom.FieldRef = &api.ObjectFieldSelector{}
versions := registered.RegisteredVersions
versions := registered.RegisteredGroupVersions
ev.ValueFrom.FieldRef.APIVersion = versions[c.Rand.Intn(len(versions))]
ev.ValueFrom.FieldRef.APIVersion = versions[c.Rand.Intn(len(versions))].String()
ev.ValueFrom.FieldRef.FieldPath = c.RandString()
}
},

View File

@@ -28,7 +28,7 @@ var Codec = runtime.CodecFor(api.Scheme, "v1")
func init() {
// Check if v1 is in the list of supported API versions.
if !registered.IsRegisteredAPIVersion("v1") {
if !registered.IsRegisteredAPIGroupVersion(unversioned.GroupVersion{Group: "", Version: "v1"}) {
return
}