Merge pull request #45384 from caesarxuchao/copy-metrics-interanl

Automatic merge from submit-queue (batch tested with PRs 45382, 45384, 44781, 45333, 45543)

Copy internal types to metrics

Supersedes #45306. 

#45306 removed the internal types and suggested whoever needs the internal types should define their own copy, and use the code-gen tools to generated the conversion functions. Per offline discussion with @DirectXMan12, we wanted to go that direction but it's not clear where to put the internal types yet. Hence, as a temporary solution, we decided copy the referred client-go/pkg/api types into metrics api to avoid the dependency.

The commit "remove need of registry from custom_metrics/client.go" is similar to what I did to the fake client in an earlier PR. Let me know if you want to put the commit in another PR.
This commit is contained in:
Kubernetes Submit Queue 2017-05-10 17:47:41 -07:00 committed by GitHub
commit a48cfe9fe5
21 changed files with 7792 additions and 121 deletions

View File

@ -109,8 +109,6 @@ go_library(
"//vendor/k8s.io/client-go/tools/clientcmd:go_default_library",
"//vendor/k8s.io/client-go/tools/record:go_default_library",
"//vendor/k8s.io/client-go/util/cert:go_default_library",
"//vendor/k8s.io/metrics/pkg/apis/custom_metrics/install:go_default_library",
"//vendor/k8s.io/metrics/pkg/apis/metrics/install:go_default_library",
"//vendor/k8s.io/metrics/pkg/client/clientset_generated/clientset/typed/metrics/v1alpha1:go_default_library",
"//vendor/k8s.io/metrics/pkg/client/custom_metrics:go_default_library",
],

View File

@ -26,10 +26,6 @@ import (
"k8s.io/kubernetes/pkg/controller/podautoscaler/metrics"
resourceclient "k8s.io/metrics/pkg/client/clientset_generated/clientset/typed/metrics/v1alpha1"
"k8s.io/metrics/pkg/client/custom_metrics"
// install the APIs so that they're registered with the scheme for the clients
_ "k8s.io/metrics/pkg/apis/custom_metrics/install"
_ "k8s.io/metrics/pkg/apis/metrics/install"
)
func startHPAController(ctx ControllerContext) (bool, error) {

View File

@ -51,6 +51,9 @@ generated_files=($(
-o -wholename '*/codecgen-*-1234.generated.go' \
\) -prune \
\) -name '*.generated.go' | LC_ALL=C sort -r
find ./vendor/k8s.io/metrics/ \
-name '*.generated.go' | LC_ALL=C sort -r
))
# We only work for deps within this prefix.

View File

@ -27,8 +27,7 @@ go_library(
"//vendor/k8s.io/client-go/pkg/api:__subpackages__",
"//vendor/k8s.io/client-go/pkg/apis:__subpackages__",
"//vendor/k8s.io/kube-apiextensions-server/pkg/apis/apiextensions/install:__subpackages__",
"//vendor/k8s.io/metrics/pkg/apis:__subpackages__",
"//vendor/k8s.io/metrics/pkg/client:__subpackages__",
"//vendor/k8s.io/metrics/pkg/client/clientset_generated/clientset/fake:__subpackages__",
],
deps = [
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",

View File

@ -25,6 +25,5 @@ go_library(
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
"//vendor/k8s.io/client-go/pkg/api:go_default_library",
],
)

View File

@ -15,7 +15,6 @@ go_library(
"//vendor/k8s.io/apimachinery/pkg/apimachinery/announced:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apimachinery/registered:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/client-go/pkg/api:go_default_library",
"//vendor/k8s.io/metrics/pkg/apis/custom_metrics:go_default_library",
"//vendor/k8s.io/metrics/pkg/apis/custom_metrics/v1alpha1:go_default_library",
],

View File

@ -22,15 +22,10 @@ import (
"k8s.io/apimachinery/pkg/apimachinery/announced"
"k8s.io/apimachinery/pkg/apimachinery/registered"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/client-go/pkg/api"
"k8s.io/metrics/pkg/apis/custom_metrics"
"k8s.io/metrics/pkg/apis/custom_metrics/v1alpha1"
)
func init() {
Install(api.GroupFactoryRegistry, api.Registry, api.Scheme)
}
// Install registers the API group and adds types to a scheme
func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
if err := announced.NewGroupMetaFactory(

View File

@ -25,10 +25,9 @@ import (
"errors"
"fmt"
codec1978 "github.com/ugorji/go/codec"
pkg4_resource "k8s.io/apimachinery/pkg/api/resource"
pkg3_resource "k8s.io/apimachinery/pkg/api/resource"
pkg1_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
pkg3_types "k8s.io/apimachinery/pkg/types"
pkg2_api "k8s.io/client-go/pkg/api"
pkg2_types "k8s.io/apimachinery/pkg/types"
"reflect"
"runtime"
time "time"
@ -64,12 +63,11 @@ func init() {
panic(err)
}
if false { // reference the types, but skip this branch at build/run time
var v0 pkg4_resource.Quantity
var v0 pkg3_resource.Quantity
var v1 pkg1_v1.TypeMeta
var v2 pkg3_types.UID
var v3 pkg2_api.ObjectReference
var v4 time.Time
_, _, _, _, _ = v0, v1, v2, v3, v4
var v2 pkg2_types.UID
var v3 time.Time
_, _, _, _ = v0, v1, v2, v3
}
}
@ -527,25 +525,13 @@ func (x *MetricValue) CodecEncodeSelf(e *codec1978.Encoder) {
if yyr2 || yy2arr2 {
z.EncSendContainerState(codecSelfer_containerArrayElem1234)
yy10 := &x.DescribedObject
yym11 := z.EncBinary()
_ = yym11
if false {
} else if z.HasExtensions() && z.EncExt(yy10) {
} else {
z.EncFallback(yy10)
}
yy10.CodecEncodeSelf(e)
} else {
z.EncSendContainerState(codecSelfer_containerMapKey1234)
r.EncodeString(codecSelferC_UTF81234, string("describedObject"))
z.EncSendContainerState(codecSelfer_containerMapValue1234)
yy12 := &x.DescribedObject
yym13 := z.EncBinary()
_ = yym13
if false {
} else if z.HasExtensions() && z.EncExt(yy12) {
} else {
z.EncFallback(yy12)
}
yy12.CodecEncodeSelf(e)
}
if yyr2 || yy2arr2 {
z.EncSendContainerState(codecSelfer_containerArrayElem1234)
@ -746,44 +732,38 @@ func (x *MetricValue) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) {
}
case "describedObject":
if r.TryDecodeAsNil() {
x.DescribedObject = pkg2_api.ObjectReference{}
x.DescribedObject = ObjectReference{}
} else {
yyv8 := &x.DescribedObject
yym9 := z.DecBinary()
_ = yym9
if false {
} else if z.HasExtensions() && z.DecExt(yyv8) {
} else {
z.DecFallback(yyv8, false)
}
yyv8.CodecDecodeSelf(d)
}
case "metricName":
if r.TryDecodeAsNil() {
x.MetricName = ""
} else {
yyv10 := &x.MetricName
yym11 := z.DecBinary()
_ = yym11
yyv9 := &x.MetricName
yym10 := z.DecBinary()
_ = yym10
if false {
} else {
*((*string)(yyv10)) = r.DecodeString()
*((*string)(yyv9)) = r.DecodeString()
}
}
case "timestamp":
if r.TryDecodeAsNil() {
x.Timestamp = pkg1_v1.Time{}
} else {
yyv12 := &x.Timestamp
yym13 := z.DecBinary()
_ = yym13
yyv11 := &x.Timestamp
yym12 := z.DecBinary()
_ = yym12
if false {
} else if z.HasExtensions() && z.DecExt(yyv12) {
} else if yym13 {
z.DecBinaryUnmarshal(yyv12)
} else if !yym13 && z.IsJSONHandle() {
z.DecJSONUnmarshal(yyv12)
} else if z.HasExtensions() && z.DecExt(yyv11) {
} else if yym12 {
z.DecBinaryUnmarshal(yyv11)
} else if !yym12 && z.IsJSONHandle() {
z.DecJSONUnmarshal(yyv11)
} else {
z.DecFallback(yyv12, false)
z.DecFallback(yyv11, false)
}
}
case "window":
@ -795,8 +775,8 @@ func (x *MetricValue) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) {
if x.WindowSeconds == nil {
x.WindowSeconds = new(int64)
}
yym15 := z.DecBinary()
_ = yym15
yym14 := z.DecBinary()
_ = yym14
if false {
} else {
*((*int64)(x.WindowSeconds)) = int64(r.DecodeInt(64))
@ -804,17 +784,17 @@ func (x *MetricValue) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) {
}
case "value":
if r.TryDecodeAsNil() {
x.Value = pkg4_resource.Quantity{}
x.Value = pkg3_resource.Quantity{}
} else {
yyv16 := &x.Value
yym17 := z.DecBinary()
_ = yym17
yyv15 := &x.Value
yym16 := z.DecBinary()
_ = yym16
if false {
} else if z.HasExtensions() && z.DecExt(yyv16) {
} else if !yym17 && z.IsJSONHandle() {
z.DecJSONUnmarshal(yyv16)
} else if z.HasExtensions() && z.DecExt(yyv15) {
} else if !yym16 && z.IsJSONHandle() {
z.DecJSONUnmarshal(yyv15)
} else {
z.DecFallback(yyv16, false)
z.DecFallback(yyv15, false)
}
}
default:
@ -825,6 +805,508 @@ func (x *MetricValue) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) {
}
func (x *MetricValue) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
var h codecSelfer1234
z, r := codec1978.GenHelperDecoder(d)
_, _, _ = h, z, r
var yyj17 int
var yyb17 bool
var yyhl17 bool = l >= 0
yyj17++
if yyhl17 {
yyb17 = yyj17 > l
} else {
yyb17 = r.CheckBreak()
}
if yyb17 {
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
return
}
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
if r.TryDecodeAsNil() {
x.Kind = ""
} else {
yyv18 := &x.Kind
yym19 := z.DecBinary()
_ = yym19
if false {
} else {
*((*string)(yyv18)) = r.DecodeString()
}
}
yyj17++
if yyhl17 {
yyb17 = yyj17 > l
} else {
yyb17 = r.CheckBreak()
}
if yyb17 {
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
return
}
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
if r.TryDecodeAsNil() {
x.APIVersion = ""
} else {
yyv20 := &x.APIVersion
yym21 := z.DecBinary()
_ = yym21
if false {
} else {
*((*string)(yyv20)) = r.DecodeString()
}
}
yyj17++
if yyhl17 {
yyb17 = yyj17 > l
} else {
yyb17 = r.CheckBreak()
}
if yyb17 {
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
return
}
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
if r.TryDecodeAsNil() {
x.DescribedObject = ObjectReference{}
} else {
yyv22 := &x.DescribedObject
yyv22.CodecDecodeSelf(d)
}
yyj17++
if yyhl17 {
yyb17 = yyj17 > l
} else {
yyb17 = r.CheckBreak()
}
if yyb17 {
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
return
}
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
if r.TryDecodeAsNil() {
x.MetricName = ""
} else {
yyv23 := &x.MetricName
yym24 := z.DecBinary()
_ = yym24
if false {
} else {
*((*string)(yyv23)) = r.DecodeString()
}
}
yyj17++
if yyhl17 {
yyb17 = yyj17 > l
} else {
yyb17 = r.CheckBreak()
}
if yyb17 {
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
return
}
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
if r.TryDecodeAsNil() {
x.Timestamp = pkg1_v1.Time{}
} else {
yyv25 := &x.Timestamp
yym26 := z.DecBinary()
_ = yym26
if false {
} else if z.HasExtensions() && z.DecExt(yyv25) {
} else if yym26 {
z.DecBinaryUnmarshal(yyv25)
} else if !yym26 && z.IsJSONHandle() {
z.DecJSONUnmarshal(yyv25)
} else {
z.DecFallback(yyv25, false)
}
}
yyj17++
if yyhl17 {
yyb17 = yyj17 > l
} else {
yyb17 = r.CheckBreak()
}
if yyb17 {
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
return
}
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
if r.TryDecodeAsNil() {
if x.WindowSeconds != nil {
x.WindowSeconds = nil
}
} else {
if x.WindowSeconds == nil {
x.WindowSeconds = new(int64)
}
yym28 := z.DecBinary()
_ = yym28
if false {
} else {
*((*int64)(x.WindowSeconds)) = int64(r.DecodeInt(64))
}
}
yyj17++
if yyhl17 {
yyb17 = yyj17 > l
} else {
yyb17 = r.CheckBreak()
}
if yyb17 {
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
return
}
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
if r.TryDecodeAsNil() {
x.Value = pkg3_resource.Quantity{}
} else {
yyv29 := &x.Value
yym30 := z.DecBinary()
_ = yym30
if false {
} else if z.HasExtensions() && z.DecExt(yyv29) {
} else if !yym30 && z.IsJSONHandle() {
z.DecJSONUnmarshal(yyv29)
} else {
z.DecFallback(yyv29, false)
}
}
for {
yyj17++
if yyhl17 {
yyb17 = yyj17 > l
} else {
yyb17 = r.CheckBreak()
}
if yyb17 {
break
}
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
z.DecStructFieldNotFound(yyj17-1, "")
}
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
}
func (x *ObjectReference) CodecEncodeSelf(e *codec1978.Encoder) {
var h codecSelfer1234
z, r := codec1978.GenHelperEncoder(e)
_, _, _ = h, z, r
if x == nil {
r.EncodeNil()
} else {
yym1 := z.EncBinary()
_ = yym1
if false {
} else if z.HasExtensions() && z.EncExt(x) {
} else {
yysep2 := !z.EncBinary()
yy2arr2 := z.EncBasicHandle().StructToArray
var yyq2 [7]bool
_, _, _ = yysep2, yyq2, yy2arr2
const yyr2 bool = false
var yynn2 int
if yyr2 || yy2arr2 {
r.EncodeArrayStart(7)
} else {
yynn2 = 7
for _, b := range yyq2 {
if b {
yynn2++
}
}
r.EncodeMapStart(yynn2)
yynn2 = 0
}
if yyr2 || yy2arr2 {
z.EncSendContainerState(codecSelfer_containerArrayElem1234)
yym4 := z.EncBinary()
_ = yym4
if false {
} else {
r.EncodeString(codecSelferC_UTF81234, string(x.Kind))
}
} else {
z.EncSendContainerState(codecSelfer_containerMapKey1234)
r.EncodeString(codecSelferC_UTF81234, string("Kind"))
z.EncSendContainerState(codecSelfer_containerMapValue1234)
yym5 := z.EncBinary()
_ = yym5
if false {
} else {
r.EncodeString(codecSelferC_UTF81234, string(x.Kind))
}
}
if yyr2 || yy2arr2 {
z.EncSendContainerState(codecSelfer_containerArrayElem1234)
yym7 := z.EncBinary()
_ = yym7
if false {
} else {
r.EncodeString(codecSelferC_UTF81234, string(x.Namespace))
}
} else {
z.EncSendContainerState(codecSelfer_containerMapKey1234)
r.EncodeString(codecSelferC_UTF81234, string("Namespace"))
z.EncSendContainerState(codecSelfer_containerMapValue1234)
yym8 := z.EncBinary()
_ = yym8
if false {
} else {
r.EncodeString(codecSelferC_UTF81234, string(x.Namespace))
}
}
if yyr2 || yy2arr2 {
z.EncSendContainerState(codecSelfer_containerArrayElem1234)
yym10 := z.EncBinary()
_ = yym10
if false {
} else {
r.EncodeString(codecSelferC_UTF81234, string(x.Name))
}
} else {
z.EncSendContainerState(codecSelfer_containerMapKey1234)
r.EncodeString(codecSelferC_UTF81234, string("Name"))
z.EncSendContainerState(codecSelfer_containerMapValue1234)
yym11 := z.EncBinary()
_ = yym11
if false {
} else {
r.EncodeString(codecSelferC_UTF81234, string(x.Name))
}
}
if yyr2 || yy2arr2 {
z.EncSendContainerState(codecSelfer_containerArrayElem1234)
yym13 := z.EncBinary()
_ = yym13
if false {
} else if z.HasExtensions() && z.EncExt(x.UID) {
} else {
r.EncodeString(codecSelferC_UTF81234, string(x.UID))
}
} else {
z.EncSendContainerState(codecSelfer_containerMapKey1234)
r.EncodeString(codecSelferC_UTF81234, string("UID"))
z.EncSendContainerState(codecSelfer_containerMapValue1234)
yym14 := z.EncBinary()
_ = yym14
if false {
} else if z.HasExtensions() && z.EncExt(x.UID) {
} else {
r.EncodeString(codecSelferC_UTF81234, string(x.UID))
}
}
if yyr2 || yy2arr2 {
z.EncSendContainerState(codecSelfer_containerArrayElem1234)
yym16 := z.EncBinary()
_ = yym16
if false {
} else {
r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion))
}
} else {
z.EncSendContainerState(codecSelfer_containerMapKey1234)
r.EncodeString(codecSelferC_UTF81234, string("APIVersion"))
z.EncSendContainerState(codecSelfer_containerMapValue1234)
yym17 := z.EncBinary()
_ = yym17
if false {
} else {
r.EncodeString(codecSelferC_UTF81234, string(x.APIVersion))
}
}
if yyr2 || yy2arr2 {
z.EncSendContainerState(codecSelfer_containerArrayElem1234)
yym19 := z.EncBinary()
_ = yym19
if false {
} else {
r.EncodeString(codecSelferC_UTF81234, string(x.ResourceVersion))
}
} else {
z.EncSendContainerState(codecSelfer_containerMapKey1234)
r.EncodeString(codecSelferC_UTF81234, string("ResourceVersion"))
z.EncSendContainerState(codecSelfer_containerMapValue1234)
yym20 := z.EncBinary()
_ = yym20
if false {
} else {
r.EncodeString(codecSelferC_UTF81234, string(x.ResourceVersion))
}
}
if yyr2 || yy2arr2 {
z.EncSendContainerState(codecSelfer_containerArrayElem1234)
yym22 := z.EncBinary()
_ = yym22
if false {
} else {
r.EncodeString(codecSelferC_UTF81234, string(x.FieldPath))
}
} else {
z.EncSendContainerState(codecSelfer_containerMapKey1234)
r.EncodeString(codecSelferC_UTF81234, string("FieldPath"))
z.EncSendContainerState(codecSelfer_containerMapValue1234)
yym23 := z.EncBinary()
_ = yym23
if false {
} else {
r.EncodeString(codecSelferC_UTF81234, string(x.FieldPath))
}
}
if yyr2 || yy2arr2 {
z.EncSendContainerState(codecSelfer_containerArrayEnd1234)
} else {
z.EncSendContainerState(codecSelfer_containerMapEnd1234)
}
}
}
}
func (x *ObjectReference) CodecDecodeSelf(d *codec1978.Decoder) {
var h codecSelfer1234
z, r := codec1978.GenHelperDecoder(d)
_, _, _ = h, z, r
yym1 := z.DecBinary()
_ = yym1
if false {
} else if z.HasExtensions() && z.DecExt(x) {
} else {
yyct2 := r.ContainerType()
if yyct2 == codecSelferValueTypeMap1234 {
yyl2 := r.ReadMapStart()
if yyl2 == 0 {
z.DecSendContainerState(codecSelfer_containerMapEnd1234)
} else {
x.codecDecodeSelfFromMap(yyl2, d)
}
} else if yyct2 == codecSelferValueTypeArray1234 {
yyl2 := r.ReadArrayStart()
if yyl2 == 0 {
z.DecSendContainerState(codecSelfer_containerArrayEnd1234)
} else {
x.codecDecodeSelfFromArray(yyl2, d)
}
} else {
panic(codecSelferOnlyMapOrArrayEncodeToStructErr1234)
}
}
}
func (x *ObjectReference) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) {
var h codecSelfer1234
z, r := codec1978.GenHelperDecoder(d)
_, _, _ = h, z, r
var yys3Slc = z.DecScratchBuffer() // default slice to decode into
_ = yys3Slc
var yyhl3 bool = l >= 0
for yyj3 := 0; ; yyj3++ {
if yyhl3 {
if yyj3 >= l {
break
}
} else {
if r.CheckBreak() {
break
}
}
z.DecSendContainerState(codecSelfer_containerMapKey1234)
yys3Slc = r.DecodeBytes(yys3Slc, true, true)
yys3 := string(yys3Slc)
z.DecSendContainerState(codecSelfer_containerMapValue1234)
switch yys3 {
case "Kind":
if r.TryDecodeAsNil() {
x.Kind = ""
} else {
yyv4 := &x.Kind
yym5 := z.DecBinary()
_ = yym5
if false {
} else {
*((*string)(yyv4)) = r.DecodeString()
}
}
case "Namespace":
if r.TryDecodeAsNil() {
x.Namespace = ""
} else {
yyv6 := &x.Namespace
yym7 := z.DecBinary()
_ = yym7
if false {
} else {
*((*string)(yyv6)) = r.DecodeString()
}
}
case "Name":
if r.TryDecodeAsNil() {
x.Name = ""
} else {
yyv8 := &x.Name
yym9 := z.DecBinary()
_ = yym9
if false {
} else {
*((*string)(yyv8)) = r.DecodeString()
}
}
case "UID":
if r.TryDecodeAsNil() {
x.UID = ""
} else {
yyv10 := &x.UID
yym11 := z.DecBinary()
_ = yym11
if false {
} else if z.HasExtensions() && z.DecExt(yyv10) {
} else {
*((*string)(yyv10)) = r.DecodeString()
}
}
case "APIVersion":
if r.TryDecodeAsNil() {
x.APIVersion = ""
} else {
yyv12 := &x.APIVersion
yym13 := z.DecBinary()
_ = yym13
if false {
} else {
*((*string)(yyv12)) = r.DecodeString()
}
}
case "ResourceVersion":
if r.TryDecodeAsNil() {
x.ResourceVersion = ""
} else {
yyv14 := &x.ResourceVersion
yym15 := z.DecBinary()
_ = yym15
if false {
} else {
*((*string)(yyv14)) = r.DecodeString()
}
}
case "FieldPath":
if r.TryDecodeAsNil() {
x.FieldPath = ""
} else {
yyv16 := &x.FieldPath
yym17 := z.DecBinary()
_ = yym17
if false {
} else {
*((*string)(yyv16)) = r.DecodeString()
}
}
default:
z.DecStructFieldNotFound(-1, yys3)
} // end switch yys3
} // end for yyj3
z.DecSendContainerState(codecSelfer_containerMapEnd1234)
}
func (x *ObjectReference) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
var h codecSelfer1234
z, r := codec1978.GenHelperDecoder(d)
_, _, _ = h, z, r
@ -865,9 +1347,9 @@ func (x *MetricValue) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
}
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
if r.TryDecodeAsNil() {
x.APIVersion = ""
x.Namespace = ""
} else {
yyv21 := &x.APIVersion
yyv21 := &x.Namespace
yym22 := z.DecBinary()
_ = yym22
if false {
@ -887,15 +1369,14 @@ func (x *MetricValue) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
}
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
if r.TryDecodeAsNil() {
x.DescribedObject = pkg2_api.ObjectReference{}
x.Name = ""
} else {
yyv23 := &x.DescribedObject
yyv23 := &x.Name
yym24 := z.DecBinary()
_ = yym24
if false {
} else if z.HasExtensions() && z.DecExt(yyv23) {
} else {
z.DecFallback(yyv23, false)
*((*string)(yyv23)) = r.DecodeString()
}
}
yyj18++
@ -910,12 +1391,13 @@ func (x *MetricValue) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
}
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
if r.TryDecodeAsNil() {
x.MetricName = ""
x.UID = ""
} else {
yyv25 := &x.MetricName
yyv25 := &x.UID
yym26 := z.DecBinary()
_ = yym26
if false {
} else if z.HasExtensions() && z.DecExt(yyv25) {
} else {
*((*string)(yyv25)) = r.DecodeString()
}
@ -932,19 +1414,14 @@ func (x *MetricValue) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
}
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
if r.TryDecodeAsNil() {
x.Timestamp = pkg1_v1.Time{}
x.APIVersion = ""
} else {
yyv27 := &x.Timestamp
yyv27 := &x.APIVersion
yym28 := z.DecBinary()
_ = yym28
if false {
} else if z.HasExtensions() && z.DecExt(yyv27) {
} else if yym28 {
z.DecBinaryUnmarshal(yyv27)
} else if !yym28 && z.IsJSONHandle() {
z.DecJSONUnmarshal(yyv27)
} else {
z.DecFallback(yyv27, false)
*((*string)(yyv27)) = r.DecodeString()
}
}
yyj18++
@ -959,18 +1436,14 @@ func (x *MetricValue) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
}
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
if r.TryDecodeAsNil() {
if x.WindowSeconds != nil {
x.WindowSeconds = nil
}
x.ResourceVersion = ""
} else {
if x.WindowSeconds == nil {
x.WindowSeconds = new(int64)
}
yyv29 := &x.ResourceVersion
yym30 := z.DecBinary()
_ = yym30
if false {
} else {
*((*int64)(x.WindowSeconds)) = int64(r.DecodeInt(64))
*((*string)(yyv29)) = r.DecodeString()
}
}
yyj18++
@ -985,17 +1458,14 @@ func (x *MetricValue) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
}
z.DecSendContainerState(codecSelfer_containerArrayElem1234)
if r.TryDecodeAsNil() {
x.Value = pkg4_resource.Quantity{}
x.FieldPath = ""
} else {
yyv31 := &x.Value
yyv31 := &x.FieldPath
yym32 := z.DecBinary()
_ = yym32
if false {
} else if z.HasExtensions() && z.DecExt(yyv31) {
} else if !yym32 && z.IsJSONHandle() {
z.DecJSONUnmarshal(yyv31)
} else {
z.DecFallback(yyv31, false)
*((*string)(yyv31)) = r.DecodeString()
}
}
for {

View File

@ -19,7 +19,7 @@ package custom_metrics
import (
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/pkg/api"
"k8s.io/apimachinery/pkg/types"
)
// a list of values for a given metric for some set of objects
@ -36,7 +36,7 @@ type MetricValue struct {
metav1.TypeMeta `json:",inline"`
// a reference to the described object
DescribedObject api.ObjectReference `json:"describedObject"`
DescribedObject ObjectReference `json:"describedObject"`
// the name of the metric
MetricName string `json:"metricName"`
@ -57,3 +57,21 @@ type MetricValue struct {
// allObjects is a wildcard used to select metrics
// for all objects matching the given label selector
const AllObjects = "*"
// NOTE: ObjectReference is copied from k8s.io/kubernetes/pkg/api/types.go. We
// cannot depend on k8s.io/kubernetes/pkg/api because that creates cyclic
// dependency between k8s.io/metrics and k8s.io/kubernetes. We cannot depend on
// k8s.io/client-go/pkg/api because the package is going to be deprecated soon.
// There is no need to keep it an exact copy. Each repo can define its own
// internal objects.
// ObjectReference contains enough information to let you inspect or modify the referred object.
type ObjectReference struct {
Kind string
Namespace string
Name string
UID types.UID
APIVersion string
ResourceVersion string
FieldPath string
}

View File

@ -36,6 +36,7 @@ func RegisterDeepCopies(scheme *runtime.Scheme) error {
return scheme.AddGeneratedDeepCopyFuncs(
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_custom_metrics_MetricValue, InType: reflect.TypeOf(&MetricValue{})},
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_custom_metrics_MetricValueList, InType: reflect.TypeOf(&MetricValueList{})},
conversion.GeneratedDeepCopyFunc{Fn: DeepCopy_custom_metrics_ObjectReference, InType: reflect.TypeOf(&ObjectReference{})},
)
}
@ -74,3 +75,12 @@ func DeepCopy_custom_metrics_MetricValueList(in interface{}, out interface{}, c
return nil
}
}
func DeepCopy_custom_metrics_ObjectReference(in interface{}, out interface{}, c *conversion.Cloner) error {
{
in := in.(*ObjectReference)
out := out.(*ObjectReference)
*out = *in
return nil
}
}

View File

@ -12,15 +12,18 @@ go_library(
srcs = [
"doc.go",
"register.go",
"types.generated.go",
"types.go",
"zz_generated.deepcopy.go",
],
tags = ["automanaged"],
deps = [
"//vendor/github.com/ugorji/go/codec:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/client-go/pkg/api:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
],
)

View File

@ -16,7 +16,6 @@ go_library(
"//vendor/k8s.io/apimachinery/pkg/apimachinery/registered:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
"//vendor/k8s.io/client-go/pkg/api:go_default_library",
"//vendor/k8s.io/metrics/pkg/apis/metrics:go_default_library",
"//vendor/k8s.io/metrics/pkg/apis/metrics/v1alpha1:go_default_library",
],

View File

@ -23,15 +23,10 @@ import (
"k8s.io/apimachinery/pkg/apimachinery/registered"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/client-go/pkg/api"
"k8s.io/metrics/pkg/apis/metrics"
"k8s.io/metrics/pkg/apis/metrics/v1alpha1"
)
func init() {
Install(api.GroupFactoryRegistry, api.Registry, api.Scheme)
}
// Install registers the API group and adds types to a scheme
func Install(groupFactoryRegistry announced.APIGroupFactoryRegistry, registry *registered.APIRegistrationManager, scheme *runtime.Scheme) {
if err := announced.NewGroupMetaFactory(

File diff suppressed because it is too large Load Diff

View File

@ -17,8 +17,8 @@ limitations under the License.
package metrics
import (
"k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/pkg/api"
)
// +genclient=true
@ -37,7 +37,7 @@ type NodeMetrics struct {
Window metav1.Duration
// The memory usage is the memory working set.
Usage api.ResourceList
Usage ResourceList
}
// NodeMetricsList is a list of NodeMetrics.
@ -85,5 +85,19 @@ type ContainerMetrics struct {
// Container name corresponding to the one from pod.spec.containers.
Name string
// The memory usage is the memory working set.
Usage api.ResourceList
Usage ResourceList
}
// NOTE: ResourceName and ResourceList are copied from
// k8s.io/kubernetes/pkg/api/types.go. We cannot depend on
// k8s.io/kubernetes/pkg/api because that creates cyclic dependency between
// k8s.io/metrics and k8s.io/kubernetes. We cannot depend on
// k8s.io/client-go/pkg/api because the package is going to be deprecated soon.
// There is no need to keep them exact copies. Each repo can define its own
// internal objects.
// ResourceList is a set of (resource name, quantity) pairs.
type ResourceList map[ResourceName]resource.Quantity
// ResourceName is the name identifying various resources in a ResourceList.
type ResourceName string

View File

@ -13,6 +13,7 @@ go_library(
"doc.go",
"generated.pb.go",
"register.go",
"types.generated.go",
"types.go",
"zz_generated.conversion.go",
"zz_generated.deepcopy.go",
@ -21,12 +22,13 @@ go_library(
deps = [
"//vendor/github.com/gogo/protobuf/proto:go_default_library",
"//vendor/github.com/gogo/protobuf/sortkeys:go_default_library",
"//vendor/github.com/ugorji/go/codec:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/conversion:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/client-go/pkg/api:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/types:go_default_library",
"//vendor/k8s.io/client-go/pkg/api/v1:go_default_library",
"//vendor/k8s.io/metrics/pkg/apis/metrics:go_default_library",
],

File diff suppressed because it is too large Load Diff

View File

@ -23,7 +23,6 @@ package v1alpha1
import (
conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
api "k8s.io/client-go/pkg/api"
v1 "k8s.io/client-go/pkg/api/v1"
metrics "k8s.io/metrics/pkg/apis/metrics"
unsafe "unsafe"
@ -52,7 +51,7 @@ func RegisterConversions(scheme *runtime.Scheme) error {
func autoConvert_v1alpha1_ContainerMetrics_To_metrics_ContainerMetrics(in *ContainerMetrics, out *metrics.ContainerMetrics, s conversion.Scope) error {
out.Name = in.Name
out.Usage = *(*api.ResourceList)(unsafe.Pointer(&in.Usage))
out.Usage = *(*metrics.ResourceList)(unsafe.Pointer(&in.Usage))
return nil
}
@ -76,7 +75,7 @@ func autoConvert_v1alpha1_NodeMetrics_To_metrics_NodeMetrics(in *NodeMetrics, ou
out.ObjectMeta = in.ObjectMeta
out.Timestamp = in.Timestamp
out.Window = in.Window
out.Usage = *(*api.ResourceList)(unsafe.Pointer(&in.Usage))
out.Usage = *(*metrics.ResourceList)(unsafe.Pointer(&in.Usage))
return nil
}

View File

@ -24,7 +24,6 @@ import (
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime"
api "k8s.io/client-go/pkg/api"
reflect "reflect"
)
@ -51,7 +50,7 @@ func DeepCopy_metrics_ContainerMetrics(in interface{}, out interface{}, c *conve
*out = *in
if in.Usage != nil {
in, out := &in.Usage, &out.Usage
*out = make(api.ResourceList)
*out = make(ResourceList)
for key, val := range *in {
(*out)[key] = val.DeepCopy()
}
@ -73,7 +72,7 @@ func DeepCopy_metrics_NodeMetrics(in interface{}, out interface{}, c *conversion
out.Timestamp = in.Timestamp.DeepCopy()
if in.Usage != nil {
in, out := &in.Usage, &out.Usage
*out = make(api.ResourceList)
*out = make(ResourceList)
for key, val := range *in {
(*out)[key] = val.DeepCopy()
}

View File

@ -19,7 +19,7 @@ go_library(
"//vendor/k8s.io/apimachinery/pkg/labels:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library",
"//vendor/k8s.io/client-go/pkg/api:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library",
"//vendor/k8s.io/client-go/rest:go_default_library",
"//vendor/k8s.io/client-go/util/flowcontrol:go_default_library",
"//vendor/k8s.io/metrics/pkg/apis/custom_metrics/v1alpha1:go_default_library",

View File

@ -23,7 +23,7 @@ import (
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/runtime/schema"
serializer "k8s.io/apimachinery/pkg/runtime/serializer"
"k8s.io/client-go/pkg/api"
"k8s.io/client-go/kubernetes/scheme"
"k8s.io/client-go/rest"
"k8s.io/client-go/util/flowcontrol"
"k8s.io/metrics/pkg/apis/custom_metrics/v1alpha1"
@ -35,7 +35,9 @@ type customMetricsClient struct {
}
func New(client rest.Interface) CustomMetricsClient {
return NewForMapper(client, api.Registry.RESTMapper())
return &customMetricsClient{
client: client,
}
}
func NewForConfig(c *rest.Config) (CustomMetricsClient, error) {
@ -48,7 +50,7 @@ func NewForConfig(c *rest.Config) (CustomMetricsClient, error) {
configShallowCopy.UserAgent = rest.DefaultKubernetesUserAgent()
}
configShallowCopy.GroupVersion = &v1alpha1.SchemeGroupVersion
configShallowCopy.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: api.Codecs}
configShallowCopy.NegotiatedSerializer = serializer.DirectCodecFactory{CodecFactory: scheme.Codecs}
client, err := rest.RESTClientFor(&configShallowCopy)
if err != nil {
@ -66,6 +68,8 @@ func NewForConfigOrDie(c *rest.Config) CustomMetricsClient {
return client
}
// NewForMapper constucts the client with a RESTMapper, which allows more
// accurate translation from GroupVersionKind to GroupVersionResource.
func NewForMapper(client rest.Interface, mapper meta.RESTMapper) CustomMetricsClient {
return &customMetricsClient{
client: client,
@ -85,6 +89,15 @@ func (c *customMetricsClient) NamespacedMetrics(namespace string) MetricsInterfa
}
func (c *customMetricsClient) qualResourceForKind(groupKind schema.GroupKind) (string, error) {
if c.mapper == nil {
// the version doesn't matter
gvk := groupKind.WithVersion("")
gvr, _ := meta.UnsafeGuessKindToResource(gvk)
gr := gvr.GroupResource()
return gr.String(), nil
}
// use the mapper if it's available
mapping, err := c.mapper.RESTMapping(groupKind)
if err != nil {
return "", fmt.Errorf("unable to map kind %s to resource: %v", groupKind.String(), err)
@ -94,7 +107,6 @@ func (c *customMetricsClient) qualResourceForKind(groupKind schema.GroupKind) (s
Group: mapping.GroupVersionKind.Group,
Resource: mapping.Resource,
}
return groupResource.String(), nil
}