mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-29 14:37:00 +00:00
Merge pull request #94481 from wojtek-t/fix_custom_metrics
Cleanup custom metrics conversion functions
This commit is contained in:
commit
3fc1bc76a9
@ -8,6 +8,7 @@ load(
|
||||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = [
|
||||
"conversion.go",
|
||||
"doc.go",
|
||||
"register.go",
|
||||
"types.go",
|
||||
@ -16,8 +17,10 @@ go_library(
|
||||
importmap = "k8s.io/kubernetes/vendor/k8s.io/metrics/pkg/apis/custom_metrics",
|
||||
importpath = "k8s.io/metrics/pkg/apis/custom_metrics",
|
||||
deps = [
|
||||
"//staging/src/k8s.io/api/core/v1:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/api/resource:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
|
||||
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
|
||||
|
@ -0,0 +1,46 @@
|
||||
/*
|
||||
Copyright 2020 The Kubernetes Authors.
|
||||
|
||||
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 custom_metrics
|
||||
|
||||
import (
|
||||
"k8s.io/api/core/v1"
|
||||
"k8s.io/apimachinery/pkg/conversion"
|
||||
)
|
||||
|
||||
func Convert_v1_ObjectReference_To_custom_metrics_ObjectReference(in *v1.ObjectReference, out *ObjectReference, s conversion.Scope) error {
|
||||
out.APIVersion = in.APIVersion
|
||||
|
||||
out.Kind = in.Kind
|
||||
out.Namespace = in.Namespace
|
||||
out.Name = in.Name
|
||||
out.UID = in.UID
|
||||
out.ResourceVersion = in.ResourceVersion
|
||||
out.FieldPath = in.FieldPath
|
||||
return nil
|
||||
}
|
||||
|
||||
func Convert_custom_metrics_ObjectReference_To_v1_ObjectReference(in *ObjectReference, out *v1.ObjectReference, s conversion.Scope) error {
|
||||
out.APIVersion = in.APIVersion
|
||||
|
||||
out.Kind = in.Kind
|
||||
out.Namespace = in.Namespace
|
||||
out.Name = in.Name
|
||||
out.UID = in.UID
|
||||
out.ResourceVersion = in.ResourceVersion
|
||||
out.FieldPath = in.FieldPath
|
||||
return nil
|
||||
}
|
@ -47,24 +47,24 @@ type MetricValueList struct {
|
||||
|
||||
// a metric value for some object
|
||||
type MetricValue struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.TypeMeta
|
||||
|
||||
// a reference to the described object
|
||||
DescribedObject ObjectReference `json:"describedObject"`
|
||||
DescribedObject ObjectReference
|
||||
|
||||
Metric MetricIdentifier
|
||||
|
||||
// indicates the time at which the metrics were produced
|
||||
Timestamp metav1.Time `json:"timestamp"`
|
||||
Timestamp metav1.Time
|
||||
|
||||
// indicates the window ([Timestamp-Window, Timestamp]) from
|
||||
// which these metrics were calculated, when returning rate
|
||||
// metrics calculated from cumulative metrics (or zero for
|
||||
// non-calculated instantaneous metrics).
|
||||
WindowSeconds *int64 `json:"window,omitempty"`
|
||||
WindowSeconds *int64
|
||||
|
||||
// the value of the metric for this
|
||||
Value resource.Quantity `json:"value"`
|
||||
Value resource.Quantity
|
||||
}
|
||||
|
||||
// allObjects is a wildcard used to select metrics
|
||||
@ -75,16 +75,16 @@ const AllObjects = "*"
|
||||
|
||||
// MetricListOptions is used to select metrics by their label selectors
|
||||
type MetricListOptions struct {
|
||||
metav1.TypeMeta `json:",inline"`
|
||||
metav1.TypeMeta
|
||||
|
||||
// A selector to restrict the list of returned objects by their labels.
|
||||
// Defaults to everything.
|
||||
// +optional
|
||||
LabelSelector string `json:"labelSelector,omitempty" protobuf:"bytes,1,opt,name=labelSelector"`
|
||||
LabelSelector string
|
||||
|
||||
// A selector to restrict the list of returned metrics by their labels
|
||||
// +optional
|
||||
MetricLabelSelector string `json:"metricLabelSelector,omitempty" protobuf:"bytes,2,opt,name=metricLabelSelector"`
|
||||
MetricLabelSelector string
|
||||
}
|
||||
|
||||
// NOTE: ObjectReference is copied from k8s.io/kubernetes/pkg/api/types.go. We
|
||||
|
@ -17,44 +17,23 @@ limitations under the License.
|
||||
package v1beta1
|
||||
|
||||
import (
|
||||
"k8s.io/api/core/v1"
|
||||
"k8s.io/apimachinery/pkg/conversion"
|
||||
"k8s.io/metrics/pkg/apis/custom_metrics"
|
||||
)
|
||||
|
||||
func Convert_v1beta1_MetricValue_To_custom_metrics_MetricValue(in *MetricValue, out *custom_metrics.MetricValue, s conversion.Scope) error {
|
||||
out.TypeMeta = in.TypeMeta
|
||||
out.DescribedObject = custom_metrics.ObjectReference{
|
||||
Kind: in.DescribedObject.Kind,
|
||||
Namespace: in.DescribedObject.Namespace,
|
||||
Name: in.DescribedObject.Name,
|
||||
UID: in.DescribedObject.UID,
|
||||
APIVersion: in.DescribedObject.APIVersion,
|
||||
ResourceVersion: in.DescribedObject.ResourceVersion,
|
||||
FieldPath: in.DescribedObject.FieldPath,
|
||||
if err := autoConvert_v1beta1_MetricValue_To_custom_metrics_MetricValue(in, out, s); err != nil {
|
||||
return err
|
||||
}
|
||||
out.Timestamp = in.Timestamp
|
||||
out.WindowSeconds = in.WindowSeconds
|
||||
out.Value = in.Value
|
||||
out.Metric.Name = in.MetricName
|
||||
out.Metric.Selector = in.Selector
|
||||
return nil
|
||||
}
|
||||
|
||||
func Convert_custom_metrics_MetricValue_To_v1beta1_MetricValue(in *custom_metrics.MetricValue, out *MetricValue, s conversion.Scope) error {
|
||||
out.TypeMeta = in.TypeMeta
|
||||
out.DescribedObject = v1.ObjectReference{
|
||||
Kind: in.DescribedObject.Kind,
|
||||
Namespace: in.DescribedObject.Namespace,
|
||||
Name: in.DescribedObject.Name,
|
||||
UID: in.DescribedObject.UID,
|
||||
APIVersion: in.DescribedObject.APIVersion,
|
||||
ResourceVersion: in.DescribedObject.ResourceVersion,
|
||||
FieldPath: in.DescribedObject.FieldPath,
|
||||
if err := autoConvert_custom_metrics_MetricValue_To_v1beta1_MetricValue(in, out, s); err != nil {
|
||||
return err
|
||||
}
|
||||
out.Timestamp = in.Timestamp
|
||||
out.WindowSeconds = in.WindowSeconds
|
||||
out.Value = in.Value
|
||||
out.MetricName = in.Metric.Name
|
||||
out.Selector = in.Metric.Selector
|
||||
return nil
|
||||
|
@ -91,8 +91,7 @@ func Convert_custom_metrics_MetricListOptions_To_v1beta1_MetricListOptions(in *c
|
||||
}
|
||||
|
||||
func autoConvert_v1beta1_MetricValue_To_custom_metrics_MetricValue(in *MetricValue, out *custommetrics.MetricValue, s conversion.Scope) error {
|
||||
// TODO: Inefficient conversion - can we improve it?
|
||||
if err := s.Convert(&in.DescribedObject, &out.DescribedObject, 0); err != nil {
|
||||
if err := custommetrics.Convert_v1_ObjectReference_To_custom_metrics_ObjectReference(&in.DescribedObject, &out.DescribedObject, s); err != nil {
|
||||
return err
|
||||
}
|
||||
// WARNING: in.MetricName requires manual conversion: does not exist in peer-type
|
||||
@ -104,8 +103,7 @@ func autoConvert_v1beta1_MetricValue_To_custom_metrics_MetricValue(in *MetricVal
|
||||
}
|
||||
|
||||
func autoConvert_custom_metrics_MetricValue_To_v1beta1_MetricValue(in *custommetrics.MetricValue, out *MetricValue, s conversion.Scope) error {
|
||||
// TODO: Inefficient conversion - can we improve it?
|
||||
if err := s.Convert(&in.DescribedObject, &out.DescribedObject, 0); err != nil {
|
||||
if err := custommetrics.Convert_custom_metrics_ObjectReference_To_v1_ObjectReference(&in.DescribedObject, &out.DescribedObject, s); err != nil {
|
||||
return err
|
||||
}
|
||||
// WARNING: in.Metric requires manual conversion: does not exist in peer-type
|
||||
|
@ -124,8 +124,7 @@ func Convert_custom_metrics_MetricListOptions_To_v1beta2_MetricListOptions(in *c
|
||||
}
|
||||
|
||||
func autoConvert_v1beta2_MetricValue_To_custom_metrics_MetricValue(in *MetricValue, out *custommetrics.MetricValue, s conversion.Scope) error {
|
||||
// TODO: Inefficient conversion - can we improve it?
|
||||
if err := s.Convert(&in.DescribedObject, &out.DescribedObject, 0); err != nil {
|
||||
if err := custommetrics.Convert_v1_ObjectReference_To_custom_metrics_ObjectReference(&in.DescribedObject, &out.DescribedObject, s); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := Convert_v1beta2_MetricIdentifier_To_custom_metrics_MetricIdentifier(&in.Metric, &out.Metric, s); err != nil {
|
||||
@ -143,8 +142,7 @@ func Convert_v1beta2_MetricValue_To_custom_metrics_MetricValue(in *MetricValue,
|
||||
}
|
||||
|
||||
func autoConvert_custom_metrics_MetricValue_To_v1beta2_MetricValue(in *custommetrics.MetricValue, out *MetricValue, s conversion.Scope) error {
|
||||
// TODO: Inefficient conversion - can we improve it?
|
||||
if err := s.Convert(&in.DescribedObject, &out.DescribedObject, 0); err != nil {
|
||||
if err := custommetrics.Convert_custom_metrics_ObjectReference_To_v1_ObjectReference(&in.DescribedObject, &out.DescribedObject, s); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := Convert_custom_metrics_MetricIdentifier_To_v1beta2_MetricIdentifier(&in.Metric, &out.Metric, s); err != nil {
|
||||
@ -163,7 +161,17 @@ func Convert_custom_metrics_MetricValue_To_v1beta2_MetricValue(in *custommetrics
|
||||
|
||||
func autoConvert_v1beta2_MetricValueList_To_custom_metrics_MetricValueList(in *MetricValueList, out *custommetrics.MetricValueList, s conversion.Scope) error {
|
||||
out.ListMeta = in.ListMeta
|
||||
out.Items = *(*[]custommetrics.MetricValue)(unsafe.Pointer(&in.Items))
|
||||
if in.Items != nil {
|
||||
in, out := &in.Items, &out.Items
|
||||
*out = make([]custommetrics.MetricValue, len(*in))
|
||||
for i := range *in {
|
||||
if err := Convert_v1beta2_MetricValue_To_custom_metrics_MetricValue(&(*in)[i], &(*out)[i], s); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
} else {
|
||||
out.Items = nil
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -174,7 +182,17 @@ func Convert_v1beta2_MetricValueList_To_custom_metrics_MetricValueList(in *Metri
|
||||
|
||||
func autoConvert_custom_metrics_MetricValueList_To_v1beta2_MetricValueList(in *custommetrics.MetricValueList, out *MetricValueList, s conversion.Scope) error {
|
||||
out.ListMeta = in.ListMeta
|
||||
out.Items = *(*[]MetricValue)(unsafe.Pointer(&in.Items))
|
||||
if in.Items != nil {
|
||||
in, out := &in.Items, &out.Items
|
||||
*out = make([]MetricValue, len(*in))
|
||||
for i := range *in {
|
||||
if err := Convert_custom_metrics_MetricValue_To_v1beta2_MetricValue(&(*in)[i], &(*out)[i], s); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
} else {
|
||||
out.Items = nil
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user