conversion.go 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294
  1. /*
  2. Copyright 2018 The Kubernetes Authors.
  3. Licensed under the Apache License, Version 2.0 (the "License");
  4. you may not use this file except in compliance with the License.
  5. You may obtain a copy of the License at
  6. http://www.apache.org/licenses/LICENSE-2.0
  7. Unless required by applicable law or agreed to in writing, software
  8. distributed under the License is distributed on an "AS IS" BASIS,
  9. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  10. See the License for the specific language governing permissions and
  11. limitations under the License.
  12. */
  13. package v2beta1
  14. import (
  15. autoscalingv2beta1 "k8s.io/api/autoscaling/v2beta1"
  16. v1 "k8s.io/api/core/v1"
  17. "k8s.io/apimachinery/pkg/conversion"
  18. "k8s.io/apimachinery/pkg/runtime"
  19. "k8s.io/kubernetes/pkg/apis/autoscaling"
  20. core "k8s.io/kubernetes/pkg/apis/core"
  21. )
  22. func addConversionFuncs(scheme *runtime.Scheme) error {
  23. // Add non-generated conversion functions
  24. err := scheme.AddConversionFuncs(
  25. Convert_autoscaling_ExternalMetricSource_To_v2beta1_ExternalMetricSource,
  26. Convert_v2beta1_ExternalMetricSource_To_autoscaling_ExternalMetricSource,
  27. Convert_autoscaling_ObjectMetricSource_To_v2beta1_ObjectMetricSource,
  28. Convert_v2beta1_ObjectMetricSource_To_autoscaling_ObjectMetricSource,
  29. Convert_autoscaling_PodsMetricSource_To_v2beta1_PodsMetricSource,
  30. Convert_v2beta1_PodsMetricSource_To_autoscaling_PodsMetricSource,
  31. Convert_autoscaling_ExternalMetricStatus_To_v2beta1_ExternalMetricStatus,
  32. Convert_v2beta1_ExternalMetricStatus_To_autoscaling_ExternalMetricStatus,
  33. Convert_autoscaling_ObjectMetricStatus_To_v2beta1_ObjectMetricStatus,
  34. Convert_v2beta1_ObjectMetricStatus_To_autoscaling_ObjectMetricStatus,
  35. Convert_autoscaling_PodsMetricStatus_To_v2beta1_PodsMetricStatus,
  36. Convert_v2beta1_PodsMetricStatus_To_autoscaling_PodsMetricStatus,
  37. Convert_autoscaling_ResourceMetricSource_To_v2beta1_ResourceMetricSource,
  38. Convert_v2beta1_ResourceMetricSource_To_autoscaling_ResourceMetricSource,
  39. Convert_autoscaling_MetricTarget_To_v2beta1_CrossVersionObjectReference,
  40. Convert_v2beta1_CrossVersionObjectReference_To_autoscaling_MetricTarget,
  41. Convert_autoscaling_ResourceMetricStatus_To_v2beta1_ResourceMetricStatus,
  42. Convert_v2beta1_ResourceMetricStatus_To_autoscaling_ResourceMetricStatus,
  43. Convert_autoscaling_HorizontalPodAutoscaler_To_v2beta1_HorizontalPodAutoscaler,
  44. Convert_v2beta1_HorizontalPodAutoscaler_To_autoscaling_HorizontalPodAutoscaler,
  45. )
  46. if err != nil {
  47. return err
  48. }
  49. return nil
  50. }
  51. func Convert_autoscaling_MetricTarget_To_v2beta1_CrossVersionObjectReference(in *autoscaling.MetricTarget, out *autoscalingv2beta1.CrossVersionObjectReference, s conversion.Scope) error {
  52. return nil
  53. }
  54. func Convert_v2beta1_CrossVersionObjectReference_To_autoscaling_MetricTarget(in *autoscalingv2beta1.CrossVersionObjectReference, out *autoscaling.MetricTarget, s conversion.Scope) error {
  55. return nil
  56. }
  57. func Convert_v2beta1_ResourceMetricStatus_To_autoscaling_ResourceMetricStatus(in *autoscalingv2beta1.ResourceMetricStatus, out *autoscaling.ResourceMetricStatus, s conversion.Scope) error {
  58. out.Name = core.ResourceName(in.Name)
  59. utilization := in.CurrentAverageUtilization
  60. averageValue := in.CurrentAverageValue
  61. out.Current = autoscaling.MetricValueStatus{
  62. AverageValue: &averageValue,
  63. AverageUtilization: utilization,
  64. }
  65. return nil
  66. }
  67. func Convert_autoscaling_ResourceMetricStatus_To_v2beta1_ResourceMetricStatus(in *autoscaling.ResourceMetricStatus, out *autoscalingv2beta1.ResourceMetricStatus, s conversion.Scope) error {
  68. out.Name = v1.ResourceName(in.Name)
  69. out.CurrentAverageUtilization = in.Current.AverageUtilization
  70. if in.Current.AverageValue != nil {
  71. out.CurrentAverageValue = *in.Current.AverageValue
  72. }
  73. return nil
  74. }
  75. func Convert_v2beta1_ResourceMetricSource_To_autoscaling_ResourceMetricSource(in *autoscalingv2beta1.ResourceMetricSource, out *autoscaling.ResourceMetricSource, s conversion.Scope) error {
  76. out.Name = core.ResourceName(in.Name)
  77. utilization := in.TargetAverageUtilization
  78. averageValue := in.TargetAverageValue
  79. var metricType autoscaling.MetricTargetType
  80. if utilization == nil {
  81. metricType = autoscaling.AverageValueMetricType
  82. } else {
  83. metricType = autoscaling.UtilizationMetricType
  84. }
  85. out.Target = autoscaling.MetricTarget{
  86. Type: metricType,
  87. AverageValue: averageValue,
  88. AverageUtilization: utilization,
  89. }
  90. return nil
  91. }
  92. func Convert_autoscaling_ResourceMetricSource_To_v2beta1_ResourceMetricSource(in *autoscaling.ResourceMetricSource, out *autoscalingv2beta1.ResourceMetricSource, s conversion.Scope) error {
  93. out.Name = v1.ResourceName(in.Name)
  94. out.TargetAverageUtilization = in.Target.AverageUtilization
  95. out.TargetAverageValue = in.Target.AverageValue
  96. return nil
  97. }
  98. func Convert_autoscaling_ExternalMetricSource_To_v2beta1_ExternalMetricSource(in *autoscaling.ExternalMetricSource, out *autoscalingv2beta1.ExternalMetricSource, s conversion.Scope) error {
  99. out.MetricName = in.Metric.Name
  100. out.TargetValue = in.Target.Value
  101. out.TargetAverageValue = in.Target.AverageValue
  102. out.MetricSelector = in.Metric.Selector
  103. return nil
  104. }
  105. func Convert_v2beta1_ExternalMetricSource_To_autoscaling_ExternalMetricSource(in *autoscalingv2beta1.ExternalMetricSource, out *autoscaling.ExternalMetricSource, s conversion.Scope) error {
  106. value := in.TargetValue
  107. averageValue := in.TargetAverageValue
  108. var metricType autoscaling.MetricTargetType
  109. if value == nil {
  110. metricType = autoscaling.AverageValueMetricType
  111. } else {
  112. metricType = autoscaling.ValueMetricType
  113. }
  114. out.Target = autoscaling.MetricTarget{
  115. Type: metricType,
  116. Value: value,
  117. AverageValue: averageValue,
  118. }
  119. out.Metric = autoscaling.MetricIdentifier{
  120. Name: in.MetricName,
  121. Selector: in.MetricSelector,
  122. }
  123. return nil
  124. }
  125. func Convert_autoscaling_ObjectMetricSource_To_v2beta1_ObjectMetricSource(in *autoscaling.ObjectMetricSource, out *autoscalingv2beta1.ObjectMetricSource, s conversion.Scope) error {
  126. if in.Target.Value != nil {
  127. out.TargetValue = *in.Target.Value
  128. }
  129. out.AverageValue = in.Target.AverageValue
  130. out.Target = autoscalingv2beta1.CrossVersionObjectReference{
  131. Kind: in.DescribedObject.Kind,
  132. Name: in.DescribedObject.Name,
  133. APIVersion: in.DescribedObject.APIVersion,
  134. }
  135. out.MetricName = in.Metric.Name
  136. out.Selector = in.Metric.Selector
  137. return nil
  138. }
  139. func Convert_v2beta1_ObjectMetricSource_To_autoscaling_ObjectMetricSource(in *autoscalingv2beta1.ObjectMetricSource, out *autoscaling.ObjectMetricSource, s conversion.Scope) error {
  140. var metricType autoscaling.MetricTargetType
  141. if in.AverageValue == nil {
  142. metricType = autoscaling.ValueMetricType
  143. } else {
  144. metricType = autoscaling.AverageValueMetricType
  145. }
  146. out.Target = autoscaling.MetricTarget{
  147. Type: metricType,
  148. Value: &in.TargetValue,
  149. AverageValue: in.AverageValue,
  150. }
  151. out.DescribedObject = autoscaling.CrossVersionObjectReference{
  152. Kind: in.Target.Kind,
  153. Name: in.Target.Name,
  154. APIVersion: in.Target.APIVersion,
  155. }
  156. out.Metric = autoscaling.MetricIdentifier{
  157. Name: in.MetricName,
  158. Selector: in.Selector,
  159. }
  160. return nil
  161. }
  162. func Convert_autoscaling_PodsMetricSource_To_v2beta1_PodsMetricSource(in *autoscaling.PodsMetricSource, out *autoscalingv2beta1.PodsMetricSource, s conversion.Scope) error {
  163. if in.Target.AverageValue != nil {
  164. targetAverageValue := *in.Target.AverageValue
  165. out.TargetAverageValue = targetAverageValue
  166. }
  167. out.MetricName = in.Metric.Name
  168. out.Selector = in.Metric.Selector
  169. return nil
  170. }
  171. func Convert_v2beta1_PodsMetricSource_To_autoscaling_PodsMetricSource(in *autoscalingv2beta1.PodsMetricSource, out *autoscaling.PodsMetricSource, s conversion.Scope) error {
  172. targetAverageValue := &in.TargetAverageValue
  173. metricType := autoscaling.AverageValueMetricType
  174. out.Target = autoscaling.MetricTarget{
  175. Type: metricType,
  176. AverageValue: targetAverageValue,
  177. }
  178. out.Metric = autoscaling.MetricIdentifier{
  179. Name: in.MetricName,
  180. Selector: in.Selector,
  181. }
  182. return nil
  183. }
  184. func Convert_autoscaling_ExternalMetricStatus_To_v2beta1_ExternalMetricStatus(in *autoscaling.ExternalMetricStatus, out *autoscalingv2beta1.ExternalMetricStatus, s conversion.Scope) error {
  185. if &in.Current.AverageValue != nil {
  186. out.CurrentAverageValue = in.Current.AverageValue
  187. }
  188. out.MetricName = in.Metric.Name
  189. if in.Current.Value != nil {
  190. out.CurrentValue = *in.Current.Value
  191. }
  192. out.MetricSelector = in.Metric.Selector
  193. return nil
  194. }
  195. func Convert_v2beta1_ExternalMetricStatus_To_autoscaling_ExternalMetricStatus(in *autoscalingv2beta1.ExternalMetricStatus, out *autoscaling.ExternalMetricStatus, s conversion.Scope) error {
  196. value := in.CurrentValue
  197. averageValue := in.CurrentAverageValue
  198. out.Current = autoscaling.MetricValueStatus{
  199. Value: &value,
  200. AverageValue: averageValue,
  201. }
  202. out.Metric = autoscaling.MetricIdentifier{
  203. Name: in.MetricName,
  204. Selector: in.MetricSelector,
  205. }
  206. return nil
  207. }
  208. func Convert_autoscaling_ObjectMetricStatus_To_v2beta1_ObjectMetricStatus(in *autoscaling.ObjectMetricStatus, out *autoscalingv2beta1.ObjectMetricStatus, s conversion.Scope) error {
  209. if in.Current.Value != nil {
  210. out.CurrentValue = *in.Current.Value
  211. }
  212. out.Target = autoscalingv2beta1.CrossVersionObjectReference{
  213. Kind: in.DescribedObject.Kind,
  214. Name: in.DescribedObject.Name,
  215. APIVersion: in.DescribedObject.APIVersion,
  216. }
  217. out.MetricName = in.Metric.Name
  218. out.Selector = in.Metric.Selector
  219. if in.Current.AverageValue != nil {
  220. currentAverageValue := *in.Current.AverageValue
  221. out.AverageValue = &currentAverageValue
  222. }
  223. return nil
  224. }
  225. func Convert_v2beta1_ObjectMetricStatus_To_autoscaling_ObjectMetricStatus(in *autoscalingv2beta1.ObjectMetricStatus, out *autoscaling.ObjectMetricStatus, s conversion.Scope) error {
  226. out.Current = autoscaling.MetricValueStatus{
  227. Value: &in.CurrentValue,
  228. AverageValue: in.AverageValue,
  229. }
  230. out.DescribedObject = autoscaling.CrossVersionObjectReference{
  231. Kind: in.Target.Kind,
  232. Name: in.Target.Name,
  233. APIVersion: in.Target.APIVersion,
  234. }
  235. out.Metric = autoscaling.MetricIdentifier{
  236. Name: in.MetricName,
  237. Selector: in.Selector,
  238. }
  239. return nil
  240. }
  241. func Convert_autoscaling_PodsMetricStatus_To_v2beta1_PodsMetricStatus(in *autoscaling.PodsMetricStatus, out *autoscalingv2beta1.PodsMetricStatus, s conversion.Scope) error {
  242. if in.Current.AverageValue != nil {
  243. out.CurrentAverageValue = *in.Current.AverageValue
  244. }
  245. out.MetricName = in.Metric.Name
  246. out.Selector = in.Metric.Selector
  247. return nil
  248. }
  249. func Convert_v2beta1_PodsMetricStatus_To_autoscaling_PodsMetricStatus(in *autoscalingv2beta1.PodsMetricStatus, out *autoscaling.PodsMetricStatus, s conversion.Scope) error {
  250. out.Current = autoscaling.MetricValueStatus{
  251. AverageValue: &in.CurrentAverageValue,
  252. }
  253. out.Metric = autoscaling.MetricIdentifier{
  254. Name: in.MetricName,
  255. Selector: in.Selector,
  256. }
  257. return nil
  258. }