mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-03 19:58:17 +00:00 
			
		
		
		
	Update batch to use new install code
This commit is contained in:
		@@ -19,128 +19,25 @@ limitations under the License.
 | 
			
		||||
package install
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"fmt"
 | 
			
		||||
 | 
			
		||||
	"github.com/golang/glog"
 | 
			
		||||
 | 
			
		||||
	"k8s.io/kubernetes/pkg/api"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/api/meta"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/api/unversioned"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/apimachinery"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/apimachinery/registered"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/apimachinery/announced"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/apis/batch"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/apis/batch/v1"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/apis/batch/v2alpha1"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/runtime"
 | 
			
		||||
	"k8s.io/kubernetes/pkg/util/sets"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const importPrefix = "k8s.io/kubernetes/pkg/apis/batch"
 | 
			
		||||
 | 
			
		||||
var accessor = meta.NewAccessor()
 | 
			
		||||
 | 
			
		||||
// availableVersions lists all known external versions for this group from most preferred to least preferred
 | 
			
		||||
var availableVersions = []unversioned.GroupVersion{v1.SchemeGroupVersion, v2alpha1.SchemeGroupVersion}
 | 
			
		||||
 | 
			
		||||
func init() {
 | 
			
		||||
	registered.RegisterVersions(availableVersions)
 | 
			
		||||
	externalVersions := []unversioned.GroupVersion{}
 | 
			
		||||
	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", batch.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.
 | 
			
		||||
// We can combine registered.RegisterVersions, registered.EnableVersions and
 | 
			
		||||
// registered.RegisterGroup once we have moved enableVersions there.
 | 
			
		||||
func enableVersions(externalVersions []unversioned.GroupVersion) error {
 | 
			
		||||
	addVersionsToScheme(externalVersions...)
 | 
			
		||||
	preferredExternalVersion := externalVersions[0]
 | 
			
		||||
 | 
			
		||||
	groupMeta := apimachinery.GroupMeta{
 | 
			
		||||
		GroupVersion:  preferredExternalVersion,
 | 
			
		||||
		GroupVersions: externalVersions,
 | 
			
		||||
		RESTMapper:    newRESTMapper(externalVersions),
 | 
			
		||||
		SelfLinker:    runtime.SelfLinker(accessor),
 | 
			
		||||
		InterfacesFor: interfacesFor,
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if err := registered.RegisterGroup(groupMeta); err != nil {
 | 
			
		||||
		return err
 | 
			
		||||
	}
 | 
			
		||||
	api.RegisterRESTMapper(groupMeta.RESTMapper)
 | 
			
		||||
	return nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func newRESTMapper(externalVersions []unversioned.GroupVersion) meta.RESTMapper {
 | 
			
		||||
	// the list of kinds that are scoped at the root of the api hierarchy
 | 
			
		||||
	// if a kind is not enumerated here, it is assumed to have a namespace scope
 | 
			
		||||
	rootScoped := sets.NewString()
 | 
			
		||||
 | 
			
		||||
	ignoredKinds := sets.NewString()
 | 
			
		||||
 | 
			
		||||
	return api.NewDefaultRESTMapper(externalVersions, interfacesFor, importPrefix, ignoredKinds, rootScoped)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// interfacesFor returns the default Codec and ResourceVersioner for a given version
 | 
			
		||||
// string, or an error if the version is not known.
 | 
			
		||||
func interfacesFor(version unversioned.GroupVersion) (*meta.VersionInterfaces, error) {
 | 
			
		||||
	switch version {
 | 
			
		||||
	case v1.SchemeGroupVersion:
 | 
			
		||||
		return &meta.VersionInterfaces{
 | 
			
		||||
			ObjectConvertor:  api.Scheme,
 | 
			
		||||
			MetadataAccessor: accessor,
 | 
			
		||||
		}, nil
 | 
			
		||||
	case v2alpha1.SchemeGroupVersion:
 | 
			
		||||
		return &meta.VersionInterfaces{
 | 
			
		||||
			ObjectConvertor:  api.Scheme,
 | 
			
		||||
			MetadataAccessor: accessor,
 | 
			
		||||
		}, nil
 | 
			
		||||
	default:
 | 
			
		||||
		g, _ := registered.Group(batch.GroupName)
 | 
			
		||||
		return nil, fmt.Errorf("unsupported storage version: %s (valid: %v)", version, g.GroupVersions)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func addVersionsToScheme(externalVersions ...unversioned.GroupVersion) {
 | 
			
		||||
	// add the internal version to Scheme
 | 
			
		||||
	if err := batch.AddToScheme(api.Scheme); err != nil {
 | 
			
		||||
		// Programmer error, detect immediately
 | 
			
		||||
	if err := announced.NewGroupMetaFactory(
 | 
			
		||||
		&announced.GroupMetaFactoryArgs{
 | 
			
		||||
			GroupName:                  "batch",
 | 
			
		||||
			VersionPreferenceOrder:     []string{"v1", "v2alpha1"},
 | 
			
		||||
			ImportPrefix:               "k8s.io/kubernetes/pkg/apis/batch",
 | 
			
		||||
			AddInternalObjectsToScheme: batch.AddToScheme,
 | 
			
		||||
		},
 | 
			
		||||
		announced.VersionToSchemeFunc{
 | 
			
		||||
			"v1":       v1.AddToScheme,
 | 
			
		||||
			"v2alpha1": v2alpha1.AddToScheme,
 | 
			
		||||
		},
 | 
			
		||||
	).Announce().RegisterAndEnable(); err != nil {
 | 
			
		||||
		panic(err)
 | 
			
		||||
	}
 | 
			
		||||
	// 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:
 | 
			
		||||
			if err := v1.AddToScheme(api.Scheme); err != nil {
 | 
			
		||||
				// Programmer error, detect immediately
 | 
			
		||||
				panic(err)
 | 
			
		||||
			}
 | 
			
		||||
		case v2alpha1.SchemeGroupVersion:
 | 
			
		||||
			if err := v2alpha1.AddToScheme(api.Scheme); err != nil {
 | 
			
		||||
				// Programmer error, detect immediately
 | 
			
		||||
				panic(err)
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user