mirror of https://github.com/k3s-io/k3s
Merge pull request #18925 from caesarxuchao/refactor-registration
Auto commit by PR queue botpull/6/head
commit
500493a3ac
|
@ -25,14 +25,11 @@ import (
|
|||
"runtime"
|
||||
|
||||
"k8s.io/kubernetes/pkg/api"
|
||||
_ "k8s.io/kubernetes/pkg/api/install"
|
||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||
_ "k8s.io/kubernetes/pkg/api/v1"
|
||||
_ "k8s.io/kubernetes/pkg/apis/componentconfig"
|
||||
_ "k8s.io/kubernetes/pkg/apis/componentconfig/v1alpha1"
|
||||
_ "k8s.io/kubernetes/pkg/apis/extensions"
|
||||
_ "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
|
||||
_ "k8s.io/kubernetes/pkg/apis/metrics"
|
||||
_ "k8s.io/kubernetes/pkg/apis/metrics/v1alpha1"
|
||||
_ "k8s.io/kubernetes/pkg/apis/componentconfig/install"
|
||||
_ "k8s.io/kubernetes/pkg/apis/extensions/install"
|
||||
_ "k8s.io/kubernetes/pkg/apis/metrics/install"
|
||||
kruntime "k8s.io/kubernetes/pkg/runtime"
|
||||
"k8s.io/kubernetes/pkg/util/sets"
|
||||
|
||||
|
|
|
@ -26,14 +26,11 @@ import (
|
|||
"strings"
|
||||
|
||||
"k8s.io/kubernetes/pkg/api"
|
||||
_ "k8s.io/kubernetes/pkg/api/install"
|
||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||
_ "k8s.io/kubernetes/pkg/api/v1"
|
||||
_ "k8s.io/kubernetes/pkg/apis/componentconfig"
|
||||
_ "k8s.io/kubernetes/pkg/apis/componentconfig/v1alpha1"
|
||||
_ "k8s.io/kubernetes/pkg/apis/extensions"
|
||||
_ "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
|
||||
_ "k8s.io/kubernetes/pkg/apis/metrics"
|
||||
_ "k8s.io/kubernetes/pkg/apis/metrics/v1alpha1"
|
||||
_ "k8s.io/kubernetes/pkg/apis/componentconfig/install"
|
||||
_ "k8s.io/kubernetes/pkg/apis/extensions/install"
|
||||
_ "k8s.io/kubernetes/pkg/apis/metrics/install"
|
||||
kruntime "k8s.io/kubernetes/pkg/runtime"
|
||||
"k8s.io/kubernetes/pkg/util/sets"
|
||||
|
||||
|
|
|
@ -23,11 +23,11 @@ import (
|
|||
|
||||
"github.com/golang/glog"
|
||||
|
||||
"k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testdata/apis/testgroup"
|
||||
"k8s.io/kubernetes/cmd/libs/go2idl/client-gen/testdata/apis/testgroup/v1"
|
||||
"k8s.io/kubernetes/pkg/api"
|
||||
"k8s.io/kubernetes/pkg/api/latest"
|
||||
"k8s.io/kubernetes/pkg/api/meta"
|
||||
"k8s.io/kubernetes/pkg/api/registered"
|
||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||
"k8s.io/kubernetes/pkg/runtime"
|
||||
"k8s.io/kubernetes/pkg/util/sets"
|
||||
|
@ -43,10 +43,9 @@ const groupName = "testgroup"
|
|||
var availableVersions = []unversioned.GroupVersion{{Group: groupName, Version: "v1"}}
|
||||
|
||||
func init() {
|
||||
registered.RegisteredGroupVersions = append(registered.RegisteredGroupVersions, v1.SchemeGroupVersion)
|
||||
|
||||
externalVersions := availableVersions
|
||||
preferredExternalVersion := externalVersions[0]
|
||||
addVersionsToScheme(externalVersions...)
|
||||
|
||||
groupMeta := latest.GroupMeta{
|
||||
GroupVersion: preferredExternalVersion,
|
||||
|
@ -95,3 +94,15 @@ func interfacesFor(version unversioned.GroupVersion) (*meta.VersionInterfaces, e
|
|||
return nil, fmt.Errorf("unsupported storage version: %s (valid: %v)", version, g.GroupVersions)
|
||||
}
|
||||
}
|
||||
|
||||
func addVersionsToScheme(externalVersions ...unversioned.GroupVersion) {
|
||||
// add the internal version to Scheme
|
||||
testgroup.AddToScheme(api.Scheme)
|
||||
// add the enabled external versions to Scheme
|
||||
for _, v := range externalVersions {
|
||||
switch v {
|
||||
case v1.SchemeGroupVersion:
|
||||
v1.AddToScheme(api.Scheme)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,23 +19,24 @@ package testgroup
|
|||
import (
|
||||
"k8s.io/kubernetes/pkg/api"
|
||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||
"k8s.io/kubernetes/pkg/runtime"
|
||||
)
|
||||
|
||||
var SchemeGroupVersion = unversioned.GroupVersion{Group: "testgroup", Version: ""}
|
||||
|
||||
func init() {
|
||||
// Register the API.
|
||||
addKnownTypes()
|
||||
func AddToScheme(scheme *runtime.Scheme) {
|
||||
// Add the API to Scheme.
|
||||
addKnownTypes(scheme)
|
||||
}
|
||||
|
||||
// Adds the list of known types to api.Scheme.
|
||||
func addKnownTypes() {
|
||||
api.Scheme.AddKnownTypes(SchemeGroupVersion,
|
||||
func addKnownTypes(scheme *runtime.Scheme) {
|
||||
scheme.AddKnownTypes(SchemeGroupVersion,
|
||||
&TestType{},
|
||||
&TestTypeList{},
|
||||
)
|
||||
|
||||
api.Scheme.AddKnownTypes(SchemeGroupVersion,
|
||||
scheme.AddKnownTypes(SchemeGroupVersion,
|
||||
&api.ListOptions{})
|
||||
}
|
||||
|
||||
|
|
|
@ -27,19 +27,19 @@ var SchemeGroupVersion = unversioned.GroupVersion{Group: "testgroup", Version: "
|
|||
|
||||
var Codec = runtime.CodecFor(api.Scheme, SchemeGroupVersion)
|
||||
|
||||
func init() {
|
||||
// Register the API.
|
||||
addKnownTypes()
|
||||
func AddToScheme(scheme *runtime.Scheme) {
|
||||
// Add the API to Scheme.
|
||||
addKnownTypes(scheme)
|
||||
}
|
||||
|
||||
// Adds the list of known types to api.Scheme.
|
||||
func addKnownTypes() {
|
||||
api.Scheme.AddKnownTypes(SchemeGroupVersion,
|
||||
func addKnownTypes(scheme *runtime.Scheme) {
|
||||
scheme.AddKnownTypes(SchemeGroupVersion,
|
||||
&TestType{},
|
||||
&TestTypeList{},
|
||||
)
|
||||
|
||||
api.Scheme.AddKnownTypes(SchemeGroupVersion,
|
||||
scheme.AddKnownTypes(SchemeGroupVersion,
|
||||
&v1.ListOptions{})
|
||||
}
|
||||
|
||||
|
|
|
@ -23,6 +23,7 @@ import (
|
|||
"io/ioutil"
|
||||
|
||||
"k8s.io/kubernetes/pkg/api"
|
||||
_ "k8s.io/kubernetes/pkg/api/install"
|
||||
"k8s.io/kubernetes/pkg/api/v1"
|
||||
)
|
||||
|
||||
|
|
|
@ -100,7 +100,7 @@ kube-apiserver
|
|||
--service-node-port-range=: A port range to reserve for services with NodePort visibility. Example: '30000-32767'. Inclusive at both ends of the range.
|
||||
--ssh-keyfile="": If non-empty, use secure SSH proxy to the nodes, using this user keyfile
|
||||
--ssh-user="": If non-empty, use secure SSH proxy to the nodes, using this user name
|
||||
--storage-versions="componentconfig/v1alpha1,extensions/v1beta1,v1": The versions to store resources with. Different groups may be stored in different versions. Specified in the format "group1/version1,group2/version2...". This flag expects a complete list of storage versions of ALL groups registered in the server. It defaults to a list of preferred versions of all registered groups, which is derived from the KUBE_API_VERSIONS environment variable.
|
||||
--storage-versions="componentconfig/v1alpha1,extensions/v1beta1,metrics/v1alpha1,v1": The versions to store resources with. Different groups may be stored in different versions. Specified in the format "group1/version1,group2/version2...". This flag expects a complete list of storage versions of ALL groups registered in the server. It defaults to a list of preferred versions of all registered groups, which is derived from the KUBE_API_VERSIONS environment variable.
|
||||
--tls-cert-file="": File containing x509 Certificate for HTTPS. (CA cert, if any, concatenated after server cert). If HTTPS serving is enabled, and --tls-cert-file and --tls-private-key-file are not provided, a self-signed certificate and key are generated for the public address and saved to /var/run/kubernetes.
|
||||
--tls-private-key-file="": File containing x509 private key matching --tls-cert-file.
|
||||
--token-auth-file="": If set, the file that will be used to secure the secure port of the API server via token authentication.
|
||||
|
|
|
@ -25,10 +25,10 @@ import (
|
|||
|
||||
"k8s.io/kubernetes/pkg/api"
|
||||
"k8s.io/kubernetes/pkg/api/latest"
|
||||
"k8s.io/kubernetes/pkg/api/registered"
|
||||
"k8s.io/kubernetes/pkg/util/sets"
|
||||
|
||||
"k8s.io/kubernetes/pkg/api/meta"
|
||||
"k8s.io/kubernetes/pkg/api/registered"
|
||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||
"k8s.io/kubernetes/pkg/api/v1"
|
||||
"k8s.io/kubernetes/pkg/runtime"
|
||||
|
@ -42,20 +42,32 @@ var accessor = meta.NewAccessor()
|
|||
var availableVersions = []unversioned.GroupVersion{v1.SchemeGroupVersion}
|
||||
|
||||
func init() {
|
||||
registered.RegisterVersions(availableVersions...)
|
||||
|
||||
externalVersions := []unversioned.GroupVersion{}
|
||||
for _, allowedVersion := range registered.GroupVersionsForGroup(api.GroupName) {
|
||||
for _, externalVersion := range availableVersions {
|
||||
if externalVersion == allowedVersion {
|
||||
externalVersions = append(externalVersions, externalVersion)
|
||||
}
|
||||
for _, v := range availableVersions {
|
||||
if registered.IsAllowedVersion(v) {
|
||||
externalVersions = append(externalVersions, v)
|
||||
}
|
||||
}
|
||||
|
||||
if len(externalVersions) == 0 {
|
||||
glog.V(4).Infof("No version is registered for group %v", api.GroupName)
|
||||
return
|
||||
}
|
||||
if err := registered.EnableVersions(externalVersions...); err != nil {
|
||||
glog.V(4).Infof("%v", err)
|
||||
return
|
||||
}
|
||||
if err := enableVersions(externalVersions); err != nil {
|
||||
glog.V(4).Infof("%v", err)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: enableVersions should be centralized rather than spread in each API
|
||||
// group.
|
||||
func enableVersions(externalVersions []unversioned.GroupVersion) error {
|
||||
addVersionsToScheme(externalVersions...)
|
||||
preferredExternalVersion := externalVersions[0]
|
||||
|
||||
groupMeta := latest.GroupMeta{
|
||||
|
@ -68,11 +80,10 @@ func init() {
|
|||
}
|
||||
|
||||
if err := latest.RegisterGroup(groupMeta); err != nil {
|
||||
glog.V(4).Infof("%v", err)
|
||||
return
|
||||
return err
|
||||
}
|
||||
|
||||
api.RegisterRESTMapper(groupMeta.RESTMapper)
|
||||
return nil
|
||||
}
|
||||
|
||||
// userResources is a group of resources mostly used by a kubectl user
|
||||
|
@ -128,3 +139,19 @@ func interfacesFor(version unversioned.GroupVersion) (*meta.VersionInterfaces, e
|
|||
return nil, fmt.Errorf("unsupported storage version: %s (valid: %v)", version, g.GroupVersions)
|
||||
}
|
||||
}
|
||||
|
||||
func addVersionsToScheme(externalVersions ...unversioned.GroupVersion) {
|
||||
// add the internal version to Scheme
|
||||
api.AddToScheme(api.Scheme)
|
||||
// add the enabled external versions to Scheme
|
||||
for _, v := range externalVersions {
|
||||
if !registered.IsEnabledVersion(v) {
|
||||
glog.Errorf("Version %s is not enabled, so it will not be added to the Scheme.", v)
|
||||
continue
|
||||
}
|
||||
switch v {
|
||||
case v1.SchemeGroupVersion:
|
||||
v1.AddToScheme(api.Scheme)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -41,8 +41,8 @@ func Resource(resource string) unversioned.GroupResource {
|
|||
return SchemeGroupVersion.WithResource(resource).GroupResource()
|
||||
}
|
||||
|
||||
func init() {
|
||||
Scheme.AddKnownTypes(SchemeGroupVersion,
|
||||
func AddToScheme(scheme *runtime.Scheme) {
|
||||
scheme.AddKnownTypes(SchemeGroupVersion,
|
||||
&Pod{},
|
||||
&PodList{},
|
||||
&PodStatusResult{},
|
||||
|
@ -86,14 +86,14 @@ func init() {
|
|||
&RangeAllocation{},
|
||||
)
|
||||
|
||||
// Register Unversioned types
|
||||
// Add the Unversioned types to scheme.
|
||||
// TODO this should not be done here
|
||||
Scheme.AddKnownTypes(SchemeGroupVersion, &unversioned.ExportOptions{})
|
||||
Scheme.AddKnownTypes(SchemeGroupVersion, &unversioned.Status{})
|
||||
Scheme.AddKnownTypes(SchemeGroupVersion, &unversioned.APIVersions{})
|
||||
Scheme.AddKnownTypes(SchemeGroupVersion, &unversioned.APIGroupList{})
|
||||
Scheme.AddKnownTypes(SchemeGroupVersion, &unversioned.APIGroup{})
|
||||
Scheme.AddKnownTypes(SchemeGroupVersion, &unversioned.APIResourceList{})
|
||||
scheme.AddKnownTypes(SchemeGroupVersion, &unversioned.ExportOptions{})
|
||||
scheme.AddKnownTypes(SchemeGroupVersion, &unversioned.Status{})
|
||||
scheme.AddKnownTypes(SchemeGroupVersion, &unversioned.APIVersions{})
|
||||
scheme.AddKnownTypes(SchemeGroupVersion, &unversioned.APIGroupList{})
|
||||
scheme.AddKnownTypes(SchemeGroupVersion, &unversioned.APIGroup{})
|
||||
scheme.AddKnownTypes(SchemeGroupVersion, &unversioned.APIResourceList{})
|
||||
}
|
||||
|
||||
func (obj *Pod) GetObjectMeta() meta.Object { return &obj.ObjectMeta }
|
||||
|
|
|
@ -18,6 +18,7 @@ limitations under the License.
|
|||
package registered
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
|
@ -25,71 +26,129 @@ import (
|
|||
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||
)
|
||||
|
||||
// List of registered API versions.
|
||||
// The list is in the order of most preferred to the least.
|
||||
var RegisteredGroupVersions []unversioned.GroupVersion
|
||||
var (
|
||||
// registeredVersions represents all registered API versions. Please call
|
||||
// RegisterVersions() to add registered versions.
|
||||
registeredVersions = map[unversioned.GroupVersion]struct{}{}
|
||||
|
||||
// enabledVersions represents all enabled API versions. It should be a
|
||||
// subset of registeredVersions. Please call EnableVersions() to add
|
||||
// enabled versions.
|
||||
enabledVersions = map[unversioned.GroupVersion]struct{}{}
|
||||
|
||||
// envRequestedVersions represents the versions requested via the
|
||||
// KUBE_API_VERSIONS environment variable. The install package of each group
|
||||
// checks this list before add their versions to the latest package and
|
||||
// Scheme.
|
||||
envRequestedVersions = map[unversioned.GroupVersion]struct{}{}
|
||||
)
|
||||
|
||||
func init() {
|
||||
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.
|
||||
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.
|
||||
userRequestedVersions := os.Getenv("KUBE_API_VERSIONS")
|
||||
if len(userRequestedVersions) != 0 {
|
||||
// reset the supported versions
|
||||
supportedVersions = []unversioned.GroupVersion{}
|
||||
for _, version := range strings.Split(userRequestedVersions, ",") {
|
||||
// Env var KUBE_API_VERSIONS is a comma separated list of API versions that
|
||||
// should be registered in the scheme.
|
||||
kubeAPIVersions := os.Getenv("KUBE_API_VERSIONS")
|
||||
if len(kubeAPIVersions) != 0 {
|
||||
for _, version := range strings.Split(kubeAPIVersions, ",") {
|
||||
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)
|
||||
glog.Fatalf("invalid api version: %s in KUBE_API_VERSIONS: %s.",
|
||||
version, os.Getenv("KUBE_API_VERSIONS"))
|
||||
}
|
||||
|
||||
// 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)
|
||||
envRequestedVersions[gv] = struct{}{}
|
||||
}
|
||||
}
|
||||
|
||||
RegisteredGroupVersions = supportedVersions
|
||||
}
|
||||
|
||||
// Returns true if the given api version is one of the registered api versions.
|
||||
func IsRegisteredAPIGroupVersion(gv unversioned.GroupVersion) bool {
|
||||
for _, currGV := range RegisteredGroupVersions {
|
||||
if currGV == gv {
|
||||
return true
|
||||
}
|
||||
// RegisterVersions add the versions the registeredVersions.
|
||||
func RegisterVersions(versions ...unversioned.GroupVersion) {
|
||||
for _, v := range versions {
|
||||
registeredVersions[v] = struct{}{}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// GroupVersionsForGroup returns the registered versions of a group in the form
|
||||
// of "group/version".
|
||||
func GroupVersionsForGroup(group string) []unversioned.GroupVersion {
|
||||
ret := []unversioned.GroupVersion{}
|
||||
for _, v := range RegisteredGroupVersions {
|
||||
// EnableVersions add the versions to the enabledVersions. The caller of this
|
||||
// function is responsible to add the version to 'latest' and 'Scheme'.
|
||||
func EnableVersions(versions ...unversioned.GroupVersion) error {
|
||||
var unregisteredVersions []unversioned.GroupVersion
|
||||
for _, v := range versions {
|
||||
if _, found := registeredVersions[v]; !found {
|
||||
unregisteredVersions = append(unregisteredVersions, v)
|
||||
}
|
||||
enabledVersions[v] = struct{}{}
|
||||
}
|
||||
if len(unregisteredVersions) != 0 {
|
||||
return fmt.Errorf("Please register versions before enabling them: %v", unregisteredVersions)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// IsAllowedVersion returns if the version is allowed by the KUBE_API_VERSIONS
|
||||
// environment variable. If the environment variable is empty, then it always
|
||||
// returns true.
|
||||
func IsAllowedVersion(v unversioned.GroupVersion) bool {
|
||||
if len(envRequestedVersions) == 0 {
|
||||
return true
|
||||
}
|
||||
_, found := envRequestedVersions[v]
|
||||
return found
|
||||
}
|
||||
|
||||
// IsEnabledVersion returns if a version is enabled.
|
||||
func IsEnabledVersion(v unversioned.GroupVersion) bool {
|
||||
_, found := enabledVersions[v]
|
||||
return found
|
||||
}
|
||||
|
||||
// IsRegisteredVersion returns if a version is registered.
|
||||
func IsRegisteredVersion(v unversioned.GroupVersion) bool {
|
||||
_, found := registeredVersions[v]
|
||||
return found
|
||||
}
|
||||
|
||||
// EnabledVersions returns all enabled versions.
|
||||
func EnabledVersions() (ret []unversioned.GroupVersion) {
|
||||
for v := range enabledVersions {
|
||||
ret = append(ret, v)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// RegisteredVersions returns all registered versions.
|
||||
func RegisteredVersions() (ret []unversioned.GroupVersion) {
|
||||
for v := range registeredVersions {
|
||||
ret = append(ret, v)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// EnabledVersionsForGroup returns all enabled versions for a group.
|
||||
func EnabledVersionsForGroup(group string) (ret []unversioned.GroupVersion) {
|
||||
for v := range enabledVersions {
|
||||
if v.Group == group {
|
||||
ret = append(ret, v)
|
||||
}
|
||||
}
|
||||
return ret
|
||||
return
|
||||
}
|
||||
|
||||
// RegisteredVersionsForGroup returns all registered versions for a group.
|
||||
func RegisteredVersionsForGroup(group string) (ret []unversioned.GroupVersion) {
|
||||
for v := range registeredVersions {
|
||||
if v.Group == group {
|
||||
ret = append(ret, v)
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// ValidateEnvRequestedVersions returns a list of versions that are requested in
|
||||
// the KUBE_API_VERSIONS environment variable, but not enabled.
|
||||
func ValidateEnvRequestedVersions() []unversioned.GroupVersion {
|
||||
var missingVersions []unversioned.GroupVersion
|
||||
for v := range envRequestedVersions {
|
||||
if _, found := enabledVersions[v]; !found {
|
||||
missingVersions = append(missingVersions, v)
|
||||
}
|
||||
}
|
||||
return missingVersions
|
||||
}
|
||||
|
|
|
@ -25,8 +25,8 @@ import (
|
|||
|
||||
docker "github.com/fsouza/go-dockerclient"
|
||||
"k8s.io/kubernetes/pkg/api"
|
||||
"k8s.io/kubernetes/pkg/api/registered"
|
||||
"k8s.io/kubernetes/pkg/api/resource"
|
||||
"k8s.io/kubernetes/pkg/api/testapi"
|
||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||
"k8s.io/kubernetes/pkg/apis/extensions"
|
||||
"k8s.io/kubernetes/pkg/fields"
|
||||
|
@ -311,7 +311,10 @@ func FuzzerFor(t *testing.T, version unversioned.GroupVersion, src rand.Source)
|
|||
ev.ValueFrom = &api.EnvVarSource{}
|
||||
ev.ValueFrom.FieldRef = &api.ObjectFieldSelector{}
|
||||
|
||||
versions := registered.RegisteredGroupVersions
|
||||
var versions []unversioned.GroupVersion
|
||||
for _, testGroup := range testapi.Groups {
|
||||
versions = append(versions, *testGroup.GroupVersion())
|
||||
}
|
||||
|
||||
ev.ValueFrom.FieldRef.APIVersion = versions[c.Rand.Intn(len(versions))].String()
|
||||
ev.ValueFrom.FieldRef.FieldPath = c.RandString()
|
||||
|
|
|
@ -22,6 +22,7 @@ import (
|
|||
|
||||
"k8s.io/kubernetes/pkg/api"
|
||||
"k8s.io/kubernetes/pkg/conversion"
|
||||
"k8s.io/kubernetes/pkg/runtime"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -32,9 +33,9 @@ const (
|
|||
mirrorAnnotationValue_1_0 = "mirror"
|
||||
)
|
||||
|
||||
func addConversionFuncs() {
|
||||
func addConversionFuncs(scheme *runtime.Scheme) {
|
||||
// Add non-generated conversion functions
|
||||
err := api.Scheme.AddConversionFuncs(
|
||||
err := scheme.AddConversionFuncs(
|
||||
convert_api_Pod_To_v1_Pod,
|
||||
convert_api_PodSpec_To_v1_PodSpec,
|
||||
convert_api_ReplicationControllerSpec_To_v1_ReplicationControllerSpec,
|
||||
|
|
|
@ -17,14 +17,14 @@ limitations under the License.
|
|||
package v1
|
||||
|
||||
import (
|
||||
"k8s.io/kubernetes/pkg/api"
|
||||
"k8s.io/kubernetes/pkg/runtime"
|
||||
"k8s.io/kubernetes/pkg/util"
|
||||
"k8s.io/kubernetes/pkg/util/intstr"
|
||||
"k8s.io/kubernetes/pkg/util/parsers"
|
||||
)
|
||||
|
||||
func addDefaultingFuncs() {
|
||||
api.Scheme.AddDefaultingFuncs(
|
||||
func addDefaultingFuncs(scheme *runtime.Scheme) {
|
||||
scheme.AddDefaultingFuncs(
|
||||
func(obj *PodExecOptions) {
|
||||
obj.Stdout = true
|
||||
obj.Stderr = true
|
||||
|
|
|
@ -18,7 +18,6 @@ package v1
|
|||
|
||||
import (
|
||||
"k8s.io/kubernetes/pkg/api"
|
||||
"k8s.io/kubernetes/pkg/api/registered"
|
||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||
"k8s.io/kubernetes/pkg/runtime"
|
||||
)
|
||||
|
@ -32,21 +31,16 @@ var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: "v1
|
|||
// Codec encodes internal objects to the v1 scheme
|
||||
var Codec = runtime.CodecFor(api.Scheme, SchemeGroupVersion)
|
||||
|
||||
func init() {
|
||||
// Check if v1 is in the list of supported API versions.
|
||||
if !registered.IsRegisteredAPIGroupVersion(SchemeGroupVersion) {
|
||||
return
|
||||
}
|
||||
|
||||
// Register the API.
|
||||
addKnownTypes()
|
||||
addConversionFuncs()
|
||||
addDefaultingFuncs()
|
||||
func AddToScheme(scheme *runtime.Scheme) {
|
||||
// Add the API to Scheme.
|
||||
addKnownTypes(scheme)
|
||||
addConversionFuncs(scheme)
|
||||
addDefaultingFuncs(scheme)
|
||||
}
|
||||
|
||||
// Adds the list of known types to api.Scheme.
|
||||
func addKnownTypes() {
|
||||
api.Scheme.AddKnownTypes(SchemeGroupVersion,
|
||||
func addKnownTypes(scheme *runtime.Scheme) {
|
||||
scheme.AddKnownTypes(SchemeGroupVersion,
|
||||
&Pod{},
|
||||
&PodList{},
|
||||
&PodStatusResult{},
|
||||
|
@ -92,7 +86,7 @@ func addKnownTypes() {
|
|||
)
|
||||
|
||||
// Add common types
|
||||
api.Scheme.AddKnownTypes(SchemeGroupVersion, &unversioned.Status{})
|
||||
scheme.AddKnownTypes(SchemeGroupVersion, &unversioned.Status{})
|
||||
}
|
||||
|
||||
func (obj *Pod) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta }
|
||||
|
|
|
@ -42,20 +42,32 @@ var accessor = meta.NewAccessor()
|
|||
var availableVersions = []unversioned.GroupVersion{v1alpha1.SchemeGroupVersion}
|
||||
|
||||
func init() {
|
||||
registered.RegisterVersions(availableVersions...)
|
||||
|
||||
externalVersions := []unversioned.GroupVersion{}
|
||||
for _, allowedVersion := range registered.GroupVersionsForGroup(componentconfig.GroupName) {
|
||||
for _, externalVersion := range availableVersions {
|
||||
if externalVersion == allowedVersion {
|
||||
externalVersions = append(externalVersions, externalVersion)
|
||||
}
|
||||
for _, v := range availableVersions {
|
||||
if registered.IsAllowedVersion(v) {
|
||||
externalVersions = append(externalVersions, v)
|
||||
}
|
||||
}
|
||||
|
||||
if len(externalVersions) == 0 {
|
||||
glog.V(4).Infof("No version is registered for group %v", componentconfig.GroupName)
|
||||
return
|
||||
}
|
||||
if err := registered.EnableVersions(externalVersions...); err != nil {
|
||||
glog.V(4).Infof("%v", err)
|
||||
return
|
||||
}
|
||||
if err := enableVersions(externalVersions); err != nil {
|
||||
glog.V(4).Infof("%v", err)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: enableVersions should be centralized rather than spread in each API
|
||||
// group.
|
||||
func enableVersions(externalVersions []unversioned.GroupVersion) error {
|
||||
addVersionsToScheme(externalVersions...)
|
||||
preferredExternalVersion := externalVersions[0]
|
||||
|
||||
groupMeta := latest.GroupMeta{
|
||||
|
@ -68,11 +80,10 @@ func init() {
|
|||
}
|
||||
|
||||
if err := latest.RegisterGroup(groupMeta); err != nil {
|
||||
glog.V(4).Infof("%v", err)
|
||||
return
|
||||
return err
|
||||
}
|
||||
|
||||
api.RegisterRESTMapper(groupMeta.RESTMapper)
|
||||
return nil
|
||||
}
|
||||
|
||||
func newRESTMapper(externalVersions []unversioned.GroupVersion) meta.RESTMapper {
|
||||
|
@ -105,3 +116,19 @@ func interfacesFor(version unversioned.GroupVersion) (*meta.VersionInterfaces, e
|
|||
return nil, fmt.Errorf("unsupported storage version: %s (valid: %v)", version, g.GroupVersions)
|
||||
}
|
||||
}
|
||||
|
||||
func addVersionsToScheme(externalVersions ...unversioned.GroupVersion) {
|
||||
// add the internal version to Scheme
|
||||
componentconfig.AddToScheme(api.Scheme)
|
||||
// add the enabled external versions to Scheme
|
||||
for _, v := range externalVersions {
|
||||
if !registered.IsEnabledVersion(v) {
|
||||
glog.Errorf("Version %s is not enabled, so it will not be added to the Scheme.", v)
|
||||
continue
|
||||
}
|
||||
switch v {
|
||||
case v1alpha1.SchemeGroupVersion:
|
||||
v1alpha1.AddToScheme(api.Scheme)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,12 +17,12 @@ limitations under the License.
|
|||
package componentconfig
|
||||
|
||||
import (
|
||||
"k8s.io/kubernetes/pkg/api"
|
||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||
"k8s.io/kubernetes/pkg/runtime"
|
||||
)
|
||||
|
||||
func init() {
|
||||
addKnownTypes()
|
||||
func AddToScheme(scheme *runtime.Scheme) {
|
||||
addKnownTypes(scheme)
|
||||
}
|
||||
|
||||
// GroupName is the group name use in this package
|
||||
|
@ -41,9 +41,9 @@ func Resource(resource string) unversioned.GroupResource {
|
|||
return SchemeGroupVersion.WithResource(resource).GroupResource()
|
||||
}
|
||||
|
||||
func addKnownTypes() {
|
||||
func addKnownTypes(scheme *runtime.Scheme) {
|
||||
// TODO this will get cleaned up with the scheme types are fixed
|
||||
api.Scheme.AddKnownTypes(SchemeGroupVersion,
|
||||
scheme.AddKnownTypes(SchemeGroupVersion,
|
||||
&KubeProxyConfiguration{},
|
||||
)
|
||||
}
|
||||
|
|
|
@ -17,12 +17,12 @@ limitations under the License.
|
|||
package v1alpha1
|
||||
|
||||
import (
|
||||
"k8s.io/kubernetes/pkg/api"
|
||||
"k8s.io/kubernetes/pkg/kubelet/qos"
|
||||
"k8s.io/kubernetes/pkg/runtime"
|
||||
)
|
||||
|
||||
func addDefaultingFuncs() {
|
||||
api.Scheme.AddDefaultingFuncs(
|
||||
func addDefaultingFuncs(scheme *runtime.Scheme) {
|
||||
scheme.AddDefaultingFuncs(
|
||||
func(obj *KubeProxyConfiguration) {
|
||||
if obj.BindAddress == "" {
|
||||
obj.BindAddress = "0.0.0.0"
|
||||
|
|
|
@ -30,13 +30,13 @@ var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: "v1
|
|||
|
||||
var Codec = runtime.CodecFor(api.Scheme, SchemeGroupVersion)
|
||||
|
||||
func init() {
|
||||
addKnownTypes()
|
||||
addDefaultingFuncs()
|
||||
func AddToScheme(scheme *runtime.Scheme) {
|
||||
addKnownTypes(scheme)
|
||||
addDefaultingFuncs(scheme)
|
||||
}
|
||||
|
||||
func addKnownTypes() {
|
||||
api.Scheme.AddKnownTypes(SchemeGroupVersion,
|
||||
func addKnownTypes(scheme *runtime.Scheme) {
|
||||
scheme.AddKnownTypes(SchemeGroupVersion,
|
||||
&KubeProxyConfiguration{},
|
||||
)
|
||||
}
|
||||
|
|
|
@ -42,20 +42,32 @@ var accessor = meta.NewAccessor()
|
|||
var availableVersions = []unversioned.GroupVersion{v1beta1.SchemeGroupVersion}
|
||||
|
||||
func init() {
|
||||
registered.RegisterVersions(availableVersions...)
|
||||
|
||||
externalVersions := []unversioned.GroupVersion{}
|
||||
for _, allowedVersion := range registered.GroupVersionsForGroup(extensions.GroupName) {
|
||||
for _, externalVersion := range availableVersions {
|
||||
if externalVersion == allowedVersion {
|
||||
externalVersions = append(externalVersions, externalVersion)
|
||||
}
|
||||
for _, v := range availableVersions {
|
||||
if registered.IsAllowedVersion(v) {
|
||||
externalVersions = append(externalVersions, v)
|
||||
}
|
||||
}
|
||||
|
||||
if len(externalVersions) == 0 {
|
||||
glog.V(4).Infof("No version is registered for group %v", extensions.GroupName)
|
||||
return
|
||||
}
|
||||
if err := registered.EnableVersions(externalVersions...); err != nil {
|
||||
glog.V(4).Infof("%v", err)
|
||||
return
|
||||
}
|
||||
if err := enableVersions(externalVersions); err != nil {
|
||||
glog.V(4).Infof("%v", err)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: enableVersions should be centralized rather than spread in each API
|
||||
// group.
|
||||
func enableVersions(externalVersions []unversioned.GroupVersion) error {
|
||||
addVersionsToScheme(externalVersions...)
|
||||
preferredExternalVersion := externalVersions[0]
|
||||
|
||||
groupMeta := latest.GroupMeta{
|
||||
|
@ -68,11 +80,10 @@ func init() {
|
|||
}
|
||||
|
||||
if err := latest.RegisterGroup(groupMeta); err != nil {
|
||||
glog.V(4).Infof("%v", err)
|
||||
return
|
||||
return err
|
||||
}
|
||||
|
||||
api.RegisterRESTMapper(groupMeta.RESTMapper)
|
||||
return nil
|
||||
}
|
||||
|
||||
func newRESTMapper(externalVersions []unversioned.GroupVersion) meta.RESTMapper {
|
||||
|
@ -105,3 +116,19 @@ func interfacesFor(version unversioned.GroupVersion) (*meta.VersionInterfaces, e
|
|||
return nil, fmt.Errorf("unsupported storage version: %s (valid: %v)", version, g.GroupVersions)
|
||||
}
|
||||
}
|
||||
|
||||
func addVersionsToScheme(externalVersions ...unversioned.GroupVersion) {
|
||||
// add the internal version to Scheme
|
||||
extensions.AddToScheme(api.Scheme)
|
||||
// add the enabled external versions to Scheme
|
||||
for _, v := range externalVersions {
|
||||
if !registered.IsEnabledVersion(v) {
|
||||
glog.Errorf("Version %s is not enabled, so it will not be added to the Scheme.", v)
|
||||
continue
|
||||
}
|
||||
switch v {
|
||||
case v1beta1.SchemeGroupVersion:
|
||||
v1beta1.AddToScheme(api.Scheme)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@ package extensions
|
|||
import (
|
||||
"k8s.io/kubernetes/pkg/api"
|
||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||
"k8s.io/kubernetes/pkg/runtime"
|
||||
)
|
||||
|
||||
// GroupName is the group name use in this package
|
||||
|
@ -37,15 +38,15 @@ func Resource(resource string) unversioned.GroupResource {
|
|||
return SchemeGroupVersion.WithResource(resource).GroupResource()
|
||||
}
|
||||
|
||||
func init() {
|
||||
// Register the API.
|
||||
addKnownTypes()
|
||||
func AddToScheme(scheme *runtime.Scheme) {
|
||||
// Add the API to Scheme.
|
||||
addKnownTypes(scheme)
|
||||
}
|
||||
|
||||
// Adds the list of known types to api.Scheme.
|
||||
func addKnownTypes() {
|
||||
func addKnownTypes(scheme *runtime.Scheme) {
|
||||
// TODO this gets cleaned up when the types are fixed
|
||||
api.Scheme.AddKnownTypes(SchemeGroupVersion,
|
||||
scheme.AddKnownTypes(SchemeGroupVersion,
|
||||
&ClusterAutoscaler{},
|
||||
&ClusterAutoscalerList{},
|
||||
&Deployment{},
|
||||
|
|
|
@ -23,12 +23,13 @@ import (
|
|||
v1 "k8s.io/kubernetes/pkg/api/v1"
|
||||
"k8s.io/kubernetes/pkg/apis/extensions"
|
||||
"k8s.io/kubernetes/pkg/conversion"
|
||||
"k8s.io/kubernetes/pkg/runtime"
|
||||
"k8s.io/kubernetes/pkg/util/intstr"
|
||||
)
|
||||
|
||||
func addConversionFuncs() {
|
||||
func addConversionFuncs(scheme *runtime.Scheme) {
|
||||
// Add non-generated conversion functions
|
||||
err := api.Scheme.AddConversionFuncs(
|
||||
err := scheme.AddConversionFuncs(
|
||||
convert_api_PodSpec_To_v1_PodSpec,
|
||||
convert_v1_PodSpec_To_api_PodSpec,
|
||||
convert_extensions_DeploymentSpec_To_v1beta1_DeploymentSpec,
|
||||
|
|
|
@ -17,12 +17,12 @@ limitations under the License.
|
|||
package v1beta1
|
||||
|
||||
import (
|
||||
"k8s.io/kubernetes/pkg/api"
|
||||
"k8s.io/kubernetes/pkg/runtime"
|
||||
"k8s.io/kubernetes/pkg/util/intstr"
|
||||
)
|
||||
|
||||
func addDefaultingFuncs() {
|
||||
api.Scheme.AddDefaultingFuncs(
|
||||
func addDefaultingFuncs(scheme *runtime.Scheme) {
|
||||
scheme.AddDefaultingFuncs(
|
||||
func(obj *APIVersion) {
|
||||
if len(obj.APIGroup) == 0 {
|
||||
obj.APIGroup = GroupName
|
||||
|
|
|
@ -14,14 +14,17 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
*/
|
||||
|
||||
package v1beta1
|
||||
package v1beta1_test
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"k8s.io/kubernetes/pkg/api"
|
||||
_ "k8s.io/kubernetes/pkg/api/install"
|
||||
"k8s.io/kubernetes/pkg/api/v1"
|
||||
_ "k8s.io/kubernetes/pkg/apis/extensions/install"
|
||||
. "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
|
||||
"k8s.io/kubernetes/pkg/runtime"
|
||||
"k8s.io/kubernetes/pkg/util/intstr"
|
||||
)
|
||||
|
|
|
@ -31,15 +31,15 @@ var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: "v1
|
|||
|
||||
var Codec = runtime.CodecFor(api.Scheme, SchemeGroupVersion)
|
||||
|
||||
func init() {
|
||||
addKnownTypes()
|
||||
addDefaultingFuncs()
|
||||
addConversionFuncs()
|
||||
func AddToScheme(scheme *runtime.Scheme) {
|
||||
addKnownTypes(scheme)
|
||||
addDefaultingFuncs(scheme)
|
||||
addConversionFuncs(scheme)
|
||||
}
|
||||
|
||||
// Adds the list of known types to api.Scheme.
|
||||
func addKnownTypes() {
|
||||
api.Scheme.AddKnownTypes(SchemeGroupVersion,
|
||||
func addKnownTypes(scheme *runtime.Scheme) {
|
||||
scheme.AddKnownTypes(SchemeGroupVersion,
|
||||
&ClusterAutoscaler{},
|
||||
&ClusterAutoscalerList{},
|
||||
&Deployment{},
|
||||
|
|
|
@ -42,20 +42,32 @@ var accessor = meta.NewAccessor()
|
|||
var availableVersions = []unversioned.GroupVersion{v1alpha1.SchemeGroupVersion}
|
||||
|
||||
func init() {
|
||||
registered.RegisterVersions(availableVersions...)
|
||||
|
||||
externalVersions := []unversioned.GroupVersion{}
|
||||
for _, allowedVersion := range registered.GroupVersionsForGroup(metrics.GroupName) {
|
||||
for _, externalVersion := range availableVersions {
|
||||
if externalVersion == allowedVersion {
|
||||
externalVersions = append(externalVersions, externalVersion)
|
||||
}
|
||||
for _, v := range availableVersions {
|
||||
if registered.IsAllowedVersion(v) {
|
||||
externalVersions = append(externalVersions, v)
|
||||
}
|
||||
}
|
||||
|
||||
if len(externalVersions) == 0 {
|
||||
glog.V(4).Infof("No version is registered for group %v", metrics.GroupName)
|
||||
return
|
||||
}
|
||||
if err := registered.EnableVersions(externalVersions...); err != nil {
|
||||
glog.V(4).Infof("%v", err)
|
||||
return
|
||||
}
|
||||
if err := enableVersions(externalVersions); err != nil {
|
||||
glog.V(4).Infof("%v", err)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: enableVersions should be centralized rather than spread in each API
|
||||
// group.
|
||||
func enableVersions(externalVersions []unversioned.GroupVersion) error {
|
||||
addVersionsToScheme(externalVersions...)
|
||||
preferredExternalVersion := externalVersions[0]
|
||||
|
||||
groupMeta := latest.GroupMeta{
|
||||
|
@ -68,11 +80,10 @@ func init() {
|
|||
}
|
||||
|
||||
if err := latest.RegisterGroup(groupMeta); err != nil {
|
||||
glog.V(4).Infof("%v", err)
|
||||
return
|
||||
return err
|
||||
}
|
||||
|
||||
api.RegisterRESTMapper(groupMeta.RESTMapper)
|
||||
return nil
|
||||
}
|
||||
|
||||
func newRESTMapper(externalVersions []unversioned.GroupVersion) meta.RESTMapper {
|
||||
|
@ -105,3 +116,19 @@ func interfacesFor(version unversioned.GroupVersion) (*meta.VersionInterfaces, e
|
|||
return nil, fmt.Errorf("unsupported storage version: %s (valid: %v)", version, g.GroupVersions)
|
||||
}
|
||||
}
|
||||
|
||||
func addVersionsToScheme(externalVersions ...unversioned.GroupVersion) {
|
||||
// add the internal version to Scheme
|
||||
metrics.AddToScheme(api.Scheme)
|
||||
// add the enabled external versions to Scheme
|
||||
for _, v := range externalVersions {
|
||||
if !registered.IsEnabledVersion(v) {
|
||||
glog.Errorf("Version %s is not enabled, so it will not be added to the Scheme.", v)
|
||||
continue
|
||||
}
|
||||
switch v {
|
||||
case v1alpha1.SchemeGroupVersion:
|
||||
v1alpha1.AddToScheme(api.Scheme)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,13 +17,13 @@ limitations under the License.
|
|||
package metrics
|
||||
|
||||
import (
|
||||
"k8s.io/kubernetes/pkg/api"
|
||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||
"k8s.io/kubernetes/pkg/runtime"
|
||||
)
|
||||
|
||||
func init() {
|
||||
// Register the API.
|
||||
addKnownTypes()
|
||||
func AddToScheme(scheme *runtime.Scheme) {
|
||||
// Add the API to Scheme.
|
||||
addKnownTypes(scheme)
|
||||
}
|
||||
|
||||
// GroupName is the group name use in this package
|
||||
|
@ -43,9 +43,9 @@ func Resource(resource string) unversioned.GroupResource {
|
|||
}
|
||||
|
||||
// Adds the list of known types to api.Scheme.
|
||||
func addKnownTypes() {
|
||||
func addKnownTypes(scheme *runtime.Scheme) {
|
||||
// TODO this will get cleaned up with the scheme types are fixed
|
||||
api.Scheme.AddKnownTypes(SchemeGroupVersion,
|
||||
scheme.AddKnownTypes(SchemeGroupVersion,
|
||||
&RawNode{},
|
||||
&RawPod{},
|
||||
)
|
||||
|
|
|
@ -31,14 +31,14 @@ var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: "v1
|
|||
|
||||
var Codec = runtime.CodecFor(api.Scheme, SchemeGroupVersion)
|
||||
|
||||
func init() {
|
||||
// Register the API.
|
||||
addKnownTypes()
|
||||
func AddToScheme(scheme *runtime.Scheme) {
|
||||
// Add the API to Scheme.
|
||||
addKnownTypes(scheme)
|
||||
}
|
||||
|
||||
// Adds the list of known types to api.Scheme.
|
||||
func addKnownTypes() {
|
||||
api.Scheme.AddKnownTypes(SchemeGroupVersion,
|
||||
func addKnownTypes(scheme *runtime.Scheme) {
|
||||
scheme.AddKnownTypes(SchemeGroupVersion,
|
||||
&RawNode{},
|
||||
&RawPod{},
|
||||
&v1.DeleteOptions{},
|
||||
|
|
|
@ -18,8 +18,17 @@ package unversioned
|
|||
|
||||
// These imports are the API groups the client will support.
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
_ "k8s.io/kubernetes/pkg/api/install"
|
||||
"k8s.io/kubernetes/pkg/api/registered"
|
||||
_ "k8s.io/kubernetes/pkg/apis/componentconfig/install"
|
||||
_ "k8s.io/kubernetes/pkg/apis/extensions/install"
|
||||
_ "k8s.io/kubernetes/pkg/apis/metrics/install"
|
||||
)
|
||||
|
||||
func init() {
|
||||
if missingVersions := registered.ValidateEnvRequestedVersions(); len(missingVersions) != 0 {
|
||||
panic(fmt.Sprintf("KUBE_API_VERSIONS contains versions that are not installed: %q.", missingVersions))
|
||||
}
|
||||
}
|
||||
|
|
|
@ -296,7 +296,7 @@ func (c *Fake) ServerAPIVersions() (*unversioned.APIVersions, error) {
|
|||
|
||||
c.Invokes(action, nil)
|
||||
gvStrings := []string{}
|
||||
for _, gv := range registered.RegisteredGroupVersions {
|
||||
for _, gv := range registered.EnabledVersions() {
|
||||
gvStrings = append(gvStrings, gv.String())
|
||||
}
|
||||
return &unversioned.APIVersions{Versions: gvStrings}, nil
|
||||
|
|
|
@ -99,7 +99,7 @@ func (o *ConvertOptions) Complete(f *cmdutil.Factory, out io.Writer, cmd *cobra.
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if !registered.IsRegisteredAPIGroupVersion(o.outputVersion) {
|
||||
if !registered.IsEnabledVersion(o.outputVersion) {
|
||||
cmdutil.UsageError(cmd, "'%s' is not a registered version.", o.outputVersion)
|
||||
}
|
||||
|
||||
|
|
|
@ -72,7 +72,7 @@ func (c *ClientCache) ClientConfigForVersion(version *unversioned.GroupVersion)
|
|||
preferredGV = &versionCopy
|
||||
}
|
||||
|
||||
negotiatedVersion, err := client.NegotiateVersion(c.defaultClient, &config, preferredGV, registered.RegisteredGroupVersions)
|
||||
negotiatedVersion, err := client.NegotiateVersion(c.defaultClient, &config, preferredGV, registered.EnabledVersions())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
|
@ -531,8 +531,8 @@ func (c *clientSwaggerSchema) ValidateBytes(data []byte) error {
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if ok := registered.IsRegisteredAPIGroupVersion(gvk.GroupVersion()); !ok {
|
||||
return fmt.Errorf("API version %q isn't supported, only supports API versions %q", gvk.GroupVersion().String(), registered.RegisteredGroupVersions)
|
||||
if ok := registered.IsEnabledVersion(gvk.GroupVersion()); !ok {
|
||||
return fmt.Errorf("API version %q isn't supported, only supports API versions %q", gvk.GroupVersion().String(), registered.EnabledVersions())
|
||||
}
|
||||
if gvk.Group == extensions.GroupName {
|
||||
if c.c.ExtensionsClient == nil {
|
||||
|
|
|
@ -48,8 +48,8 @@ func (m *Mapper) InfoForData(data []byte, source string) (*Info, error) {
|
|||
if err != nil {
|
||||
return nil, fmt.Errorf("unable to get type info from %q: %v", source, err)
|
||||
}
|
||||
if ok := registered.IsRegisteredAPIGroupVersion(gvk.GroupVersion()); !ok {
|
||||
return nil, fmt.Errorf("API version %q in %q isn't supported, only supports API versions %q", gvk.GroupVersion().String(), source, registered.RegisteredGroupVersions)
|
||||
if ok := registered.IsEnabledVersion(gvk.GroupVersion()); !ok {
|
||||
return nil, fmt.Errorf("API version %q in %q isn't supported, only supports API versions %q", gvk.GroupVersion().String(), source, registered.EnabledVersions())
|
||||
}
|
||||
if gvk.Kind == "" {
|
||||
return nil, fmt.Errorf("kind not set in %q", source)
|
||||
|
|
|
@ -71,7 +71,7 @@ func TestDecodeSinglePod(t *testing.T) {
|
|||
t.Errorf("expected:\n%#v\ngot:\n%#v\n%s", pod, podOut, string(json))
|
||||
}
|
||||
|
||||
for _, gv := range registered.GroupVersionsForGroup("") {
|
||||
for _, gv := range registered.EnabledVersionsForGroup(api.GroupName) {
|
||||
externalPod, err := testapi.Default.Converter().ConvertToVersion(pod, gv.String())
|
||||
if err != nil {
|
||||
t.Errorf("unexpected error: %v", err)
|
||||
|
@ -137,7 +137,7 @@ func TestDecodePodList(t *testing.T) {
|
|||
t.Errorf("expected:\n%#v\ngot:\n%#v\n%s", podList, &podListOut, string(json))
|
||||
}
|
||||
|
||||
for _, gv := range registered.GroupVersionsForGroup("") {
|
||||
for _, gv := range registered.EnabledVersionsForGroup(api.GroupName) {
|
||||
externalPodList, err := testapi.Default.Converter().ConvertToVersion(podList, gv.String())
|
||||
if err != nil {
|
||||
t.Errorf("unexpected error: %v", err)
|
||||
|
|
|
@ -18,7 +18,16 @@ package master
|
|||
|
||||
// These imports are the API groups the API server will support.
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
_ "k8s.io/kubernetes/pkg/api/install"
|
||||
"k8s.io/kubernetes/pkg/api/registered"
|
||||
_ "k8s.io/kubernetes/pkg/apis/componentconfig/install"
|
||||
_ "k8s.io/kubernetes/pkg/apis/extensions/install"
|
||||
)
|
||||
|
||||
func init() {
|
||||
if missingVersions := registered.ValidateEnvRequestedVersions(); len(missingVersions) != 0 {
|
||||
panic(fmt.Sprintf("KUBE_API_VERSIONS contains versions that are not installed: %q.", missingVersions))
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue