Created autoscaling API group and copied HPA there
This commit is contained in:
parent
bc04759560
commit
2fbc5bb767
@ -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"
|
||||||
)
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user