mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	Created autoscaling API group and copied HPA there
This commit is contained in:
		@@ -27,6 +27,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	_ "k8s.io/kubernetes/pkg/api/install"
 | 
						_ "k8s.io/kubernetes/pkg/api/install"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/unversioned"
 | 
						"k8s.io/kubernetes/pkg/api/unversioned"
 | 
				
			||||||
 | 
						_ "k8s.io/kubernetes/pkg/apis/autoscaling/install"
 | 
				
			||||||
	_ "k8s.io/kubernetes/pkg/apis/componentconfig/install"
 | 
						_ "k8s.io/kubernetes/pkg/apis/componentconfig/install"
 | 
				
			||||||
	_ "k8s.io/kubernetes/pkg/apis/extensions/install"
 | 
						_ "k8s.io/kubernetes/pkg/apis/extensions/install"
 | 
				
			||||||
	_ "k8s.io/kubernetes/pkg/apis/metrics/install"
 | 
						_ "k8s.io/kubernetes/pkg/apis/metrics/install"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,6 +28,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	_ "k8s.io/kubernetes/pkg/api/install"
 | 
						_ "k8s.io/kubernetes/pkg/api/install"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/unversioned"
 | 
						"k8s.io/kubernetes/pkg/api/unversioned"
 | 
				
			||||||
 | 
						_ "k8s.io/kubernetes/pkg/apis/autoscaling/install"
 | 
				
			||||||
	_ "k8s.io/kubernetes/pkg/apis/componentconfig/install"
 | 
						_ "k8s.io/kubernetes/pkg/apis/componentconfig/install"
 | 
				
			||||||
	_ "k8s.io/kubernetes/pkg/apis/extensions/install"
 | 
						_ "k8s.io/kubernetes/pkg/apis/extensions/install"
 | 
				
			||||||
	_ "k8s.io/kubernetes/pkg/apis/metrics/install"
 | 
						_ "k8s.io/kubernetes/pkg/apis/metrics/install"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -43,7 +43,7 @@ EOF
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# TODO(lavalamp): get this list by listing the pkg/apis/ directory?
 | 
					# TODO(lavalamp): get this list by listing the pkg/apis/ directory?
 | 
				
			||||||
DEFAULT_GROUP_VERSIONS="v1 authorization/v1beta1 extensions/v1beta1 componentconfig/v1alpha1 metrics/v1alpha1"
 | 
					DEFAULT_GROUP_VERSIONS="v1 authorization/v1beta1 autoscaling/v1 extensions/v1beta1 componentconfig/v1alpha1 metrics/v1alpha1"
 | 
				
			||||||
VERSIONS=${VERSIONS:-$DEFAULT_GROUP_VERSIONS}
 | 
					VERSIONS=${VERSIONS:-$DEFAULT_GROUP_VERSIONS}
 | 
				
			||||||
for ver in $VERSIONS; do
 | 
					for ver in $VERSIONS; do
 | 
				
			||||||
  # Ensure that the version being processed is registered by setting
 | 
					  # Ensure that the version being processed is registered by setting
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -62,6 +62,6 @@ function generate_deep_copies() {
 | 
				
			|||||||
# Currently pkg/api/deep_copy_generated.go is generated by the new go2idl generator.
 | 
					# Currently pkg/api/deep_copy_generated.go is generated by the new go2idl generator.
 | 
				
			||||||
# All others (mentioned above) are still generated by the old reflection-based generator.
 | 
					# All others (mentioned above) are still generated by the old reflection-based generator.
 | 
				
			||||||
# TODO: Migrate these to the new generator.
 | 
					# TODO: Migrate these to the new generator.
 | 
				
			||||||
DEFAULT_VERSIONS="v1 authorization/__internal authorization/v1beta1 extensions/__internal extensions/v1beta1 componentconfig/__internal componentconfig/v1alpha1 metrics/__internal metrics/v1alpha1"
 | 
					DEFAULT_VERSIONS="v1 authorization/__internal authorization/v1beta1 autoscaling/__internal autoscaling/v1 extensions/__internal extensions/v1beta1 componentconfig/__internal componentconfig/v1alpha1 metrics/__internal metrics/v1alpha1"
 | 
				
			||||||
VERSIONS=${VERSIONS:-$DEFAULT_VERSIONS}
 | 
					VERSIONS=${VERSIONS:-$DEFAULT_VERSIONS}
 | 
				
			||||||
generate_deep_copies "$VERSIONS"
 | 
					generate_deep_copies "$VERSIONS"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -50,7 +50,7 @@ kube::etcd::start
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# Start kube-apiserver
 | 
					# Start kube-apiserver
 | 
				
			||||||
kube::log::status "Starting kube-apiserver"
 | 
					kube::log::status "Starting kube-apiserver"
 | 
				
			||||||
KUBE_API_VERSIONS="v1,extensions/v1beta1" "${KUBE_OUTPUT_HOSTBIN}/kube-apiserver" \
 | 
					KUBE_API_VERSIONS="v1,autoscaling/v1,extensions/v1beta1" "${KUBE_OUTPUT_HOSTBIN}/kube-apiserver" \
 | 
				
			||||||
  --address="127.0.0.1" \
 | 
					  --address="127.0.0.1" \
 | 
				
			||||||
  --public-address-override="127.0.0.1" \
 | 
					  --public-address-override="127.0.0.1" \
 | 
				
			||||||
  --port="${API_PORT}" \
 | 
					  --port="${API_PORT}" \
 | 
				
			||||||
@@ -64,7 +64,7 @@ APISERVER_PID=$!
 | 
				
			|||||||
kube::util::wait_for_url "http://127.0.0.1:${API_PORT}/healthz" "apiserver: "
 | 
					kube::util::wait_for_url "http://127.0.0.1:${API_PORT}/healthz" "apiserver: "
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SWAGGER_API_PATH="http://127.0.0.1:${API_PORT}/swaggerapi/"
 | 
					SWAGGER_API_PATH="http://127.0.0.1:${API_PORT}/swaggerapi/"
 | 
				
			||||||
DEFAULT_GROUP_VERSIONS="v1 extensions/v1beta1"
 | 
					DEFAULT_GROUP_VERSIONS="v1 autoscaling/v1 extensions/v1beta1"
 | 
				
			||||||
VERSIONS=${VERSIONS:-$DEFAULT_GROUP_VERSIONS}
 | 
					VERSIONS=${VERSIONS:-$DEFAULT_GROUP_VERSIONS}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
kube::log::status "Updating " ${SWAGGER_ROOT_DIR}
 | 
					kube::log::status "Updating " ${SWAGGER_ROOT_DIR}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,7 +23,7 @@ source "${KUBE_ROOT}/hack/lib/init.sh"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
kube::golang::setup_env
 | 
					kube::golang::setup_env
 | 
				
			||||||
 | 
					
 | 
				
			||||||
APIROOTS=${APIROOTS:-pkg/api pkg/apis/authorization pkg/apis/extensions pkg/apis/metrics}
 | 
					APIROOTS=${APIROOTS:-pkg/api pkg/apis/authorization pkg/apis/autoscaling pkg/apis/extensions pkg/apis/metrics}
 | 
				
			||||||
_tmp="${KUBE_ROOT}/_tmp"
 | 
					_tmp="${KUBE_ROOT}/_tmp"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
cleanup() {
 | 
					cleanup() {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -25,7 +25,7 @@ kube::golang::setup_env
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
gendeepcopy=$(kube::util::find-binary "gendeepcopy")
 | 
					gendeepcopy=$(kube::util::find-binary "gendeepcopy")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
APIROOTS=${APIROOTS:-pkg/api pkg/apis/authorization pkg/apis/extensions pkg/apis/metrics}
 | 
					APIROOTS=${APIROOTS:-pkg/api pkg/apis/authorization pkg/apis/autoscaling pkg/apis/extensions pkg/apis/metrics}
 | 
				
			||||||
_tmp="${KUBE_ROOT}/_tmp"
 | 
					_tmp="${KUBE_ROOT}/_tmp"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
cleanup() {
 | 
					cleanup() {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -56,7 +56,7 @@ EOF
 | 
				
			|||||||
  mv "$TMPFILE" "pkg/$(kube::util::group-version-to-pkg-path "${group_version}")/types_swagger_doc_generated.go"
 | 
					  mv "$TMPFILE" "pkg/$(kube::util::group-version-to-pkg-path "${group_version}")/types_swagger_doc_generated.go"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
GROUP_VERSIONS=(unversioned v1 authorization/v1beta1 extensions/v1beta1)
 | 
					GROUP_VERSIONS=(unversioned v1 authorization/v1beta1 autoscaling/v1 extensions/v1beta1)
 | 
				
			||||||
# To avoid compile errors, remove the currently existing files.
 | 
					# To avoid compile errors, remove the currently existing files.
 | 
				
			||||||
for group_version in "${GROUP_VERSIONS[@]}"; do
 | 
					for group_version in "${GROUP_VERSIONS[@]}"; do
 | 
				
			||||||
  rm -f "pkg/$(kube::util::group-version-to-pkg-path "${group_version}")/types_swagger_doc_generated.go"
 | 
					  rm -f "pkg/$(kube::util::group-version-to-pkg-path "${group_version}")/types_swagger_doc_generated.go"
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										129
									
								
								pkg/apis/autoscaling/install/install.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										129
									
								
								pkg/apis/autoscaling/install/install.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,129 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					Copyright 2016 The Kubernetes Authors All rights reserved.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					You may obtain a copy of the License at
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					limitations under the License.
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Package install installs the experimental API group, making it available as
 | 
				
			||||||
 | 
					// an option to all of the API encoding/decoding machinery.
 | 
				
			||||||
 | 
					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/apis/autoscaling"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/apis/autoscaling/v1"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/runtime"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/util/sets"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const importPrefix = "k8s.io/kubernetes/pkg/apis/autoscaling"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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", autoscaling.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
 | 
				
			||||||
 | 
						default:
 | 
				
			||||||
 | 
							g, _ := registered.Group(autoscaling.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
 | 
				
			||||||
 | 
						autoscaling.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)
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										54
									
								
								pkg/apis/autoscaling/register.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								pkg/apis/autoscaling/register.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,54 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					Copyright 2016 The Kubernetes Authors All rights reserved.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					You may obtain a copy of the License at
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					limitations under the License.
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package autoscaling
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/api/unversioned"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/apis/extensions"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/runtime"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// GroupName is the group name use in this package
 | 
				
			||||||
 | 
					const GroupName = "autoscaling"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// SchemeGroupVersion is group version used to register these objects
 | 
				
			||||||
 | 
					var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Kind takes an unqualified kind and returns back a Group qualified GroupKind
 | 
				
			||||||
 | 
					func Kind(kind string) unversioned.GroupKind {
 | 
				
			||||||
 | 
						return SchemeGroupVersion.WithKind(kind).GroupKind()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Resource takes an unqualified resource and returns back a Group qualified GroupResource
 | 
				
			||||||
 | 
					func Resource(resource string) unversioned.GroupResource {
 | 
				
			||||||
 | 
						return SchemeGroupVersion.WithResource(resource).GroupResource()
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func AddToScheme(scheme *runtime.Scheme) {
 | 
				
			||||||
 | 
						// Add the API to Scheme.
 | 
				
			||||||
 | 
						addKnownTypes(scheme)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Adds the list of known types to api.Scheme.
 | 
				
			||||||
 | 
					func addKnownTypes(scheme *runtime.Scheme) {
 | 
				
			||||||
 | 
						scheme.AddKnownTypes(SchemeGroupVersion,
 | 
				
			||||||
 | 
							&extensions.HorizontalPodAutoscaler{},
 | 
				
			||||||
 | 
							&extensions.HorizontalPodAutoscalerList{},
 | 
				
			||||||
 | 
							&api.ListOptions{},
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										35
									
								
								pkg/apis/autoscaling/v1/defaults.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								pkg/apis/autoscaling/v1/defaults.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,35 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					Copyright 2016 The Kubernetes Authors All rights reserved.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					You may obtain a copy of the License at
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					limitations under the License.
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package v1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/runtime"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func addDefaultingFuncs(scheme *runtime.Scheme) {
 | 
				
			||||||
 | 
						scheme.AddDefaultingFuncs(
 | 
				
			||||||
 | 
							func(obj *HorizontalPodAutoscaler) {
 | 
				
			||||||
 | 
								if obj.Spec.MinReplicas == nil {
 | 
				
			||||||
 | 
									minReplicas := int32(1)
 | 
				
			||||||
 | 
									obj.Spec.MinReplicas = &minReplicas
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								if obj.Spec.CPUUtilization == nil {
 | 
				
			||||||
 | 
									obj.Spec.CPUUtilization = &CPUTargetUtilization{TargetPercentage: 80}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										46
									
								
								pkg/apis/autoscaling/v1/register.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								pkg/apis/autoscaling/v1/register.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,46 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					Copyright 2016 The Kubernetes Authors All rights reserved.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					You may obtain a copy of the License at
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					limitations under the License.
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package v1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/api/unversioned"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/api/v1"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/runtime"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// GroupName is the group name use in this package
 | 
				
			||||||
 | 
					const GroupName = "autoscaling"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// SchemeGroupVersion is group version used to register these objects
 | 
				
			||||||
 | 
					var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: "v1"}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func AddToScheme(scheme *runtime.Scheme) {
 | 
				
			||||||
 | 
						addKnownTypes(scheme)
 | 
				
			||||||
 | 
						addDefaultingFuncs(scheme)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Adds the list of known types to api.Scheme.
 | 
				
			||||||
 | 
					func addKnownTypes(scheme *runtime.Scheme) {
 | 
				
			||||||
 | 
						scheme.AddKnownTypes(SchemeGroupVersion,
 | 
				
			||||||
 | 
							&HorizontalPodAutoscaler{},
 | 
				
			||||||
 | 
							&HorizontalPodAutoscalerList{},
 | 
				
			||||||
 | 
							&v1.ListOptions{},
 | 
				
			||||||
 | 
						)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (obj *HorizontalPodAutoscaler) GetObjectKind() unversioned.ObjectKind     { return &obj.TypeMeta }
 | 
				
			||||||
 | 
					func (obj *HorizontalPodAutoscalerList) GetObjectKind() unversioned.ObjectKind { return &obj.TypeMeta }
 | 
				
			||||||
							
								
								
									
										97
									
								
								pkg/apis/autoscaling/v1/types.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										97
									
								
								pkg/apis/autoscaling/v1/types.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,97 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					Copyright 2016 The Kubernetes Authors All rights reserved.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					You may obtain a copy of the License at
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					limitations under the License.
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package v1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import (
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/api/unversioned"
 | 
				
			||||||
 | 
						"k8s.io/kubernetes/pkg/api/v1"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// SubresourceReference contains enough information to let you inspect or modify the referred subresource.
 | 
				
			||||||
 | 
					type SubresourceReference struct {
 | 
				
			||||||
 | 
						// Kind of the referent; More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#types-kinds"
 | 
				
			||||||
 | 
						Kind string `json:"kind,omitempty"`
 | 
				
			||||||
 | 
						// Name of the referent; More info: http://releases.k8s.io/HEAD/docs/user-guide/identifiers.md#names
 | 
				
			||||||
 | 
						Name string `json:"name,omitempty"`
 | 
				
			||||||
 | 
						// API version of the referent
 | 
				
			||||||
 | 
						APIVersion string `json:"apiVersion,omitempty"`
 | 
				
			||||||
 | 
						// Subresource name of the referent
 | 
				
			||||||
 | 
						Subresource string `json:"subresource,omitempty"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					type CPUTargetUtilization struct {
 | 
				
			||||||
 | 
						// fraction of the requested CPU that should be utilized/used,
 | 
				
			||||||
 | 
						// e.g. 70 means that 70% of the requested CPU should be in use.
 | 
				
			||||||
 | 
						TargetPercentage int32 `json:"targetPercentage"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// specification of a horizontal pod autoscaler.
 | 
				
			||||||
 | 
					type HorizontalPodAutoscalerSpec struct {
 | 
				
			||||||
 | 
						// reference to Scale subresource; horizontal pod autoscaler will learn the current resource consumption from its status,
 | 
				
			||||||
 | 
						// and will set the desired number of pods by modifying its spec.
 | 
				
			||||||
 | 
						ScaleRef SubresourceReference `json:"scaleRef"`
 | 
				
			||||||
 | 
						// lower limit for the number of pods that can be set by the autoscaler, default 1.
 | 
				
			||||||
 | 
						MinReplicas *int32 `json:"minReplicas,omitempty"`
 | 
				
			||||||
 | 
						// upper limit for the number of pods that can be set by the autoscaler; cannot be smaller than MinReplicas.
 | 
				
			||||||
 | 
						MaxReplicas int32 `json:"maxReplicas"`
 | 
				
			||||||
 | 
						// target average CPU utilization (represented as a percentage of requested CPU) over all the pods;
 | 
				
			||||||
 | 
						// if not specified it defaults to the target CPU utilization at 80% of the requested resources.
 | 
				
			||||||
 | 
						CPUUtilization *CPUTargetUtilization `json:"cpuUtilization,omitempty"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// current status of a horizontal pod autoscaler
 | 
				
			||||||
 | 
					type HorizontalPodAutoscalerStatus struct {
 | 
				
			||||||
 | 
						// most recent generation observed by this autoscaler.
 | 
				
			||||||
 | 
						ObservedGeneration *int64 `json:"observedGeneration,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// last time the HorizontalPodAutoscaler scaled the number of pods;
 | 
				
			||||||
 | 
						// used by the autoscaler to control how often the number of pods is changed.
 | 
				
			||||||
 | 
						LastScaleTime *unversioned.Time `json:"lastScaleTime,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// current number of replicas of pods managed by this autoscaler.
 | 
				
			||||||
 | 
						CurrentReplicas int32 `json:"currentReplicas"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// desired number of replicas of pods managed by this autoscaler.
 | 
				
			||||||
 | 
						DesiredReplicas int32 `json:"desiredReplicas"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// current average CPU utilization over all pods, represented as a percentage of requested CPU,
 | 
				
			||||||
 | 
						// e.g. 70 means that an average pod is using now 70% of its requested CPU.
 | 
				
			||||||
 | 
						CurrentCPUUtilizationPercentage *int32 `json:"currentCPUUtilizationPercentage,omitempty"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// configuration of a horizontal pod autoscaler.
 | 
				
			||||||
 | 
					type HorizontalPodAutoscaler struct {
 | 
				
			||||||
 | 
						unversioned.TypeMeta `json:",inline"`
 | 
				
			||||||
 | 
						// Standard object metadata. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#metadata
 | 
				
			||||||
 | 
						v1.ObjectMeta `json:"metadata,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// behaviour of autoscaler. More info: http://releases.k8s.io/HEAD/docs/devel/api-conventions.md#spec-and-status.
 | 
				
			||||||
 | 
						Spec HorizontalPodAutoscalerSpec `json:"spec,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// current information about the autoscaler.
 | 
				
			||||||
 | 
						Status HorizontalPodAutoscalerStatus `json:"status,omitempty"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// list of horizontal pod autoscaler objects.
 | 
				
			||||||
 | 
					type HorizontalPodAutoscalerList struct {
 | 
				
			||||||
 | 
						unversioned.TypeMeta `json:",inline"`
 | 
				
			||||||
 | 
						// Standard list metadata.
 | 
				
			||||||
 | 
						unversioned.ListMeta `json:"metadata,omitempty"`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						// list of horizontal pod autoscaler objects.
 | 
				
			||||||
 | 
						Items []HorizontalPodAutoscaler `json:"items"`
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -23,6 +23,7 @@ import (
 | 
				
			|||||||
	_ "k8s.io/kubernetes/pkg/api/install"
 | 
						_ "k8s.io/kubernetes/pkg/api/install"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/apimachinery/registered"
 | 
						"k8s.io/kubernetes/pkg/apimachinery/registered"
 | 
				
			||||||
	_ "k8s.io/kubernetes/pkg/apis/authorization/install"
 | 
						_ "k8s.io/kubernetes/pkg/apis/authorization/install"
 | 
				
			||||||
 | 
						_ "k8s.io/kubernetes/pkg/apis/autoscaling/install"
 | 
				
			||||||
	_ "k8s.io/kubernetes/pkg/apis/componentconfig/install"
 | 
						_ "k8s.io/kubernetes/pkg/apis/componentconfig/install"
 | 
				
			||||||
	_ "k8s.io/kubernetes/pkg/apis/extensions/install"
 | 
						_ "k8s.io/kubernetes/pkg/apis/extensions/install"
 | 
				
			||||||
	_ "k8s.io/kubernetes/pkg/apis/metrics/install"
 | 
						_ "k8s.io/kubernetes/pkg/apis/metrics/install"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,6 +23,7 @@ import (
 | 
				
			|||||||
	_ "k8s.io/kubernetes/pkg/api/install"
 | 
						_ "k8s.io/kubernetes/pkg/api/install"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/apimachinery/registered"
 | 
						"k8s.io/kubernetes/pkg/apimachinery/registered"
 | 
				
			||||||
	_ "k8s.io/kubernetes/pkg/apis/authorization/install"
 | 
						_ "k8s.io/kubernetes/pkg/apis/authorization/install"
 | 
				
			||||||
 | 
						_ "k8s.io/kubernetes/pkg/apis/autoscaling/install"
 | 
				
			||||||
	_ "k8s.io/kubernetes/pkg/apis/componentconfig/install"
 | 
						_ "k8s.io/kubernetes/pkg/apis/componentconfig/install"
 | 
				
			||||||
	_ "k8s.io/kubernetes/pkg/apis/extensions/install"
 | 
						_ "k8s.io/kubernetes/pkg/apis/extensions/install"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user