conversion.go 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509
  1. /*
  2. Copyright 2017 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 v1
  14. import (
  15. "fmt"
  16. "strconv"
  17. appsv1 "k8s.io/api/apps/v1"
  18. "k8s.io/api/core/v1"
  19. metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
  20. "k8s.io/apimachinery/pkg/conversion"
  21. "k8s.io/apimachinery/pkg/runtime"
  22. "k8s.io/apimachinery/pkg/util/intstr"
  23. "k8s.io/kubernetes/pkg/apis/apps"
  24. api "k8s.io/kubernetes/pkg/apis/core"
  25. k8s_api_v1 "k8s.io/kubernetes/pkg/apis/core/v1"
  26. )
  27. func addConversionFuncs(scheme *runtime.Scheme) error {
  28. // Add non-generated conversion functions to handle the *int32 -> int32
  29. // conversion. A pointer is useful in the versioned type so we can default
  30. // it, but a plain int32 is more convenient in the internal type. These
  31. // functions are the same as the autogenerated ones in every other way.
  32. err := scheme.AddConversionFuncs(
  33. Convert_v1_StatefulSetSpec_To_apps_StatefulSetSpec,
  34. Convert_apps_StatefulSetSpec_To_v1_StatefulSetSpec,
  35. Convert_v1_StatefulSetUpdateStrategy_To_apps_StatefulSetUpdateStrategy,
  36. Convert_apps_StatefulSetUpdateStrategy_To_v1_StatefulSetUpdateStrategy,
  37. Convert_apps_RollingUpdateDaemonSet_To_v1_RollingUpdateDaemonSet,
  38. Convert_v1_RollingUpdateDaemonSet_To_apps_RollingUpdateDaemonSet,
  39. Convert_v1_StatefulSetStatus_To_apps_StatefulSetStatus,
  40. Convert_apps_StatefulSetStatus_To_v1_StatefulSetStatus,
  41. Convert_v1_Deployment_To_apps_Deployment,
  42. Convert_apps_Deployment_To_v1_Deployment,
  43. Convert_apps_DaemonSet_To_v1_DaemonSet,
  44. Convert_v1_DaemonSet_To_apps_DaemonSet,
  45. Convert_apps_DaemonSetSpec_To_v1_DaemonSetSpec,
  46. Convert_v1_DaemonSetSpec_To_apps_DaemonSetSpec,
  47. Convert_apps_DaemonSetUpdateStrategy_To_v1_DaemonSetUpdateStrategy,
  48. Convert_v1_DaemonSetUpdateStrategy_To_apps_DaemonSetUpdateStrategy,
  49. // extensions
  50. // TODO: below conversions should be dropped in favor of auto-generated
  51. // ones, see https://github.com/kubernetes/kubernetes/issues/39865
  52. Convert_v1_DeploymentSpec_To_apps_DeploymentSpec,
  53. Convert_apps_DeploymentSpec_To_v1_DeploymentSpec,
  54. Convert_v1_DeploymentStrategy_To_apps_DeploymentStrategy,
  55. Convert_apps_DeploymentStrategy_To_v1_DeploymentStrategy,
  56. Convert_v1_RollingUpdateDeployment_To_apps_RollingUpdateDeployment,
  57. Convert_apps_RollingUpdateDeployment_To_v1_RollingUpdateDeployment,
  58. Convert_apps_ReplicaSetSpec_To_v1_ReplicaSetSpec,
  59. Convert_v1_ReplicaSetSpec_To_apps_ReplicaSetSpec,
  60. )
  61. if err != nil {
  62. return err
  63. }
  64. return nil
  65. }
  66. func Convert_v1_DeploymentSpec_To_apps_DeploymentSpec(in *appsv1.DeploymentSpec, out *apps.DeploymentSpec, s conversion.Scope) error {
  67. if in.Replicas != nil {
  68. out.Replicas = *in.Replicas
  69. }
  70. out.Selector = in.Selector
  71. if err := k8s_api_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
  72. return err
  73. }
  74. if err := Convert_v1_DeploymentStrategy_To_apps_DeploymentStrategy(&in.Strategy, &out.Strategy, s); err != nil {
  75. return err
  76. }
  77. out.RevisionHistoryLimit = in.RevisionHistoryLimit
  78. out.MinReadySeconds = in.MinReadySeconds
  79. out.Paused = in.Paused
  80. if in.ProgressDeadlineSeconds != nil {
  81. out.ProgressDeadlineSeconds = new(int32)
  82. *out.ProgressDeadlineSeconds = *in.ProgressDeadlineSeconds
  83. }
  84. return nil
  85. }
  86. func Convert_apps_DeploymentSpec_To_v1_DeploymentSpec(in *apps.DeploymentSpec, out *appsv1.DeploymentSpec, s conversion.Scope) error {
  87. out.Replicas = &in.Replicas
  88. out.Selector = in.Selector
  89. if err := k8s_api_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
  90. return err
  91. }
  92. if err := Convert_apps_DeploymentStrategy_To_v1_DeploymentStrategy(&in.Strategy, &out.Strategy, s); err != nil {
  93. return err
  94. }
  95. if in.RevisionHistoryLimit != nil {
  96. out.RevisionHistoryLimit = new(int32)
  97. *out.RevisionHistoryLimit = int32(*in.RevisionHistoryLimit)
  98. }
  99. out.MinReadySeconds = int32(in.MinReadySeconds)
  100. out.Paused = in.Paused
  101. if in.ProgressDeadlineSeconds != nil {
  102. out.ProgressDeadlineSeconds = new(int32)
  103. *out.ProgressDeadlineSeconds = *in.ProgressDeadlineSeconds
  104. }
  105. return nil
  106. }
  107. func Convert_apps_DeploymentStrategy_To_v1_DeploymentStrategy(in *apps.DeploymentStrategy, out *appsv1.DeploymentStrategy, s conversion.Scope) error {
  108. out.Type = appsv1.DeploymentStrategyType(in.Type)
  109. if in.RollingUpdate != nil {
  110. out.RollingUpdate = new(appsv1.RollingUpdateDeployment)
  111. if err := Convert_apps_RollingUpdateDeployment_To_v1_RollingUpdateDeployment(in.RollingUpdate, out.RollingUpdate, s); err != nil {
  112. return err
  113. }
  114. } else {
  115. out.RollingUpdate = nil
  116. }
  117. return nil
  118. }
  119. func Convert_v1_DeploymentStrategy_To_apps_DeploymentStrategy(in *appsv1.DeploymentStrategy, out *apps.DeploymentStrategy, s conversion.Scope) error {
  120. out.Type = apps.DeploymentStrategyType(in.Type)
  121. if in.RollingUpdate != nil {
  122. out.RollingUpdate = new(apps.RollingUpdateDeployment)
  123. if err := Convert_v1_RollingUpdateDeployment_To_apps_RollingUpdateDeployment(in.RollingUpdate, out.RollingUpdate, s); err != nil {
  124. return err
  125. }
  126. } else {
  127. out.RollingUpdate = nil
  128. }
  129. return nil
  130. }
  131. func Convert_v1_RollingUpdateDeployment_To_apps_RollingUpdateDeployment(in *appsv1.RollingUpdateDeployment, out *apps.RollingUpdateDeployment, s conversion.Scope) error {
  132. if err := s.Convert(in.MaxUnavailable, &out.MaxUnavailable, 0); err != nil {
  133. return err
  134. }
  135. if err := s.Convert(in.MaxSurge, &out.MaxSurge, 0); err != nil {
  136. return err
  137. }
  138. return nil
  139. }
  140. func Convert_apps_RollingUpdateDeployment_To_v1_RollingUpdateDeployment(in *apps.RollingUpdateDeployment, out *appsv1.RollingUpdateDeployment, s conversion.Scope) error {
  141. if out.MaxUnavailable == nil {
  142. out.MaxUnavailable = &intstr.IntOrString{}
  143. }
  144. if err := s.Convert(&in.MaxUnavailable, out.MaxUnavailable, 0); err != nil {
  145. return err
  146. }
  147. if out.MaxSurge == nil {
  148. out.MaxSurge = &intstr.IntOrString{}
  149. }
  150. if err := s.Convert(&in.MaxSurge, out.MaxSurge, 0); err != nil {
  151. return err
  152. }
  153. return nil
  154. }
  155. func Convert_v1_Deployment_To_apps_Deployment(in *appsv1.Deployment, out *apps.Deployment, s conversion.Scope) error {
  156. out.ObjectMeta = in.ObjectMeta
  157. if err := Convert_v1_DeploymentSpec_To_apps_DeploymentSpec(&in.Spec, &out.Spec, s); err != nil {
  158. return err
  159. }
  160. // Copy annotation to deprecated rollbackTo field for roundtrip
  161. // TODO: remove this conversion after we delete extensions/v1beta1 and apps/v1beta1 Deployment
  162. if revision := in.Annotations[appsv1.DeprecatedRollbackTo]; revision != "" {
  163. if revision64, err := strconv.ParseInt(revision, 10, 64); err != nil {
  164. return fmt.Errorf("failed to parse annotation[%s]=%s as int64: %v", appsv1.DeprecatedRollbackTo, revision, err)
  165. } else {
  166. out.Spec.RollbackTo = new(apps.RollbackConfig)
  167. out.Spec.RollbackTo.Revision = revision64
  168. }
  169. out.Annotations = deepCopyStringMap(out.Annotations)
  170. delete(out.Annotations, appsv1.DeprecatedRollbackTo)
  171. } else {
  172. out.Spec.RollbackTo = nil
  173. }
  174. if err := Convert_v1_DeploymentStatus_To_apps_DeploymentStatus(&in.Status, &out.Status, s); err != nil {
  175. return err
  176. }
  177. return nil
  178. }
  179. func Convert_apps_Deployment_To_v1_Deployment(in *apps.Deployment, out *appsv1.Deployment, s conversion.Scope) error {
  180. out.ObjectMeta = in.ObjectMeta
  181. out.Annotations = deepCopyStringMap(out.Annotations) // deep copy because we modify it below
  182. if err := Convert_apps_DeploymentSpec_To_v1_DeploymentSpec(&in.Spec, &out.Spec, s); err != nil {
  183. return err
  184. }
  185. // Copy deprecated rollbackTo field to annotation for roundtrip
  186. // TODO: remove this conversion after we delete extensions/v1beta1 and apps/v1beta1 Deployment
  187. if in.Spec.RollbackTo != nil {
  188. if out.Annotations == nil {
  189. out.Annotations = make(map[string]string)
  190. }
  191. out.Annotations[appsv1.DeprecatedRollbackTo] = strconv.FormatInt(in.Spec.RollbackTo.Revision, 10)
  192. } else {
  193. delete(out.Annotations, appsv1.DeprecatedRollbackTo)
  194. }
  195. if err := Convert_apps_DeploymentStatus_To_v1_DeploymentStatus(&in.Status, &out.Status, s); err != nil {
  196. return err
  197. }
  198. return nil
  199. }
  200. func Convert_apps_RollingUpdateDaemonSet_To_v1_RollingUpdateDaemonSet(in *apps.RollingUpdateDaemonSet, out *appsv1.RollingUpdateDaemonSet, s conversion.Scope) error {
  201. if out.MaxUnavailable == nil {
  202. out.MaxUnavailable = &intstr.IntOrString{}
  203. }
  204. if err := s.Convert(&in.MaxUnavailable, out.MaxUnavailable, 0); err != nil {
  205. return err
  206. }
  207. return nil
  208. }
  209. func Convert_v1_RollingUpdateDaemonSet_To_apps_RollingUpdateDaemonSet(in *appsv1.RollingUpdateDaemonSet, out *apps.RollingUpdateDaemonSet, s conversion.Scope) error {
  210. if err := s.Convert(in.MaxUnavailable, &out.MaxUnavailable, 0); err != nil {
  211. return err
  212. }
  213. return nil
  214. }
  215. func Convert_apps_DaemonSet_To_v1_DaemonSet(in *apps.DaemonSet, out *appsv1.DaemonSet, s conversion.Scope) error {
  216. out.ObjectMeta = in.ObjectMeta
  217. out.Annotations = deepCopyStringMap(out.Annotations) // deep copy annotations because we change them below
  218. out.Annotations[appsv1.DeprecatedTemplateGeneration] = strconv.FormatInt(in.Spec.TemplateGeneration, 10)
  219. if err := Convert_apps_DaemonSetSpec_To_v1_DaemonSetSpec(&in.Spec, &out.Spec, s); err != nil {
  220. return err
  221. }
  222. if err := s.Convert(&in.Status, &out.Status, 0); err != nil {
  223. return err
  224. }
  225. return nil
  226. }
  227. func Convert_apps_DaemonSetSpec_To_v1_DaemonSetSpec(in *apps.DaemonSetSpec, out *appsv1.DaemonSetSpec, s conversion.Scope) error {
  228. out.Selector = in.Selector
  229. if err := k8s_api_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
  230. return err
  231. }
  232. if err := Convert_apps_DaemonSetUpdateStrategy_To_v1_DaemonSetUpdateStrategy(&in.UpdateStrategy, &out.UpdateStrategy, s); err != nil {
  233. return err
  234. }
  235. out.MinReadySeconds = int32(in.MinReadySeconds)
  236. if in.RevisionHistoryLimit != nil {
  237. out.RevisionHistoryLimit = new(int32)
  238. *out.RevisionHistoryLimit = *in.RevisionHistoryLimit
  239. } else {
  240. out.RevisionHistoryLimit = nil
  241. }
  242. return nil
  243. }
  244. func Convert_apps_DaemonSetUpdateStrategy_To_v1_DaemonSetUpdateStrategy(in *apps.DaemonSetUpdateStrategy, out *appsv1.DaemonSetUpdateStrategy, s conversion.Scope) error {
  245. out.Type = appsv1.DaemonSetUpdateStrategyType(in.Type)
  246. if in.RollingUpdate != nil {
  247. out.RollingUpdate = &appsv1.RollingUpdateDaemonSet{}
  248. if err := Convert_apps_RollingUpdateDaemonSet_To_v1_RollingUpdateDaemonSet(in.RollingUpdate, out.RollingUpdate, s); err != nil {
  249. return err
  250. }
  251. }
  252. return nil
  253. }
  254. func Convert_v1_DaemonSet_To_apps_DaemonSet(in *appsv1.DaemonSet, out *apps.DaemonSet, s conversion.Scope) error {
  255. out.ObjectMeta = in.ObjectMeta
  256. if err := Convert_v1_DaemonSetSpec_To_apps_DaemonSetSpec(&in.Spec, &out.Spec, s); err != nil {
  257. return err
  258. }
  259. if value, ok := in.Annotations[appsv1.DeprecatedTemplateGeneration]; ok {
  260. if value64, err := strconv.ParseInt(value, 10, 64); err != nil {
  261. return err
  262. } else {
  263. out.Spec.TemplateGeneration = value64
  264. out.Annotations = deepCopyStringMap(out.Annotations)
  265. delete(out.Annotations, appsv1.DeprecatedTemplateGeneration)
  266. }
  267. }
  268. if err := s.Convert(&in.Status, &out.Status, 0); err != nil {
  269. return err
  270. }
  271. return nil
  272. }
  273. func Convert_v1_DaemonSetSpec_To_apps_DaemonSetSpec(in *appsv1.DaemonSetSpec, out *apps.DaemonSetSpec, s conversion.Scope) error {
  274. out.Selector = in.Selector
  275. if err := k8s_api_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
  276. return err
  277. }
  278. if err := Convert_v1_DaemonSetUpdateStrategy_To_apps_DaemonSetUpdateStrategy(&in.UpdateStrategy, &out.UpdateStrategy, s); err != nil {
  279. return err
  280. }
  281. if in.RevisionHistoryLimit != nil {
  282. out.RevisionHistoryLimit = new(int32)
  283. *out.RevisionHistoryLimit = *in.RevisionHistoryLimit
  284. } else {
  285. out.RevisionHistoryLimit = nil
  286. }
  287. out.MinReadySeconds = in.MinReadySeconds
  288. return nil
  289. }
  290. func Convert_v1_DaemonSetUpdateStrategy_To_apps_DaemonSetUpdateStrategy(in *appsv1.DaemonSetUpdateStrategy, out *apps.DaemonSetUpdateStrategy, s conversion.Scope) error {
  291. out.Type = apps.DaemonSetUpdateStrategyType(in.Type)
  292. if in.RollingUpdate != nil {
  293. out.RollingUpdate = &apps.RollingUpdateDaemonSet{}
  294. if err := Convert_v1_RollingUpdateDaemonSet_To_apps_RollingUpdateDaemonSet(in.RollingUpdate, out.RollingUpdate, s); err != nil {
  295. return err
  296. }
  297. }
  298. return nil
  299. }
  300. func Convert_apps_ReplicaSetSpec_To_v1_ReplicaSetSpec(in *apps.ReplicaSetSpec, out *appsv1.ReplicaSetSpec, s conversion.Scope) error {
  301. out.Replicas = new(int32)
  302. *out.Replicas = int32(in.Replicas)
  303. out.MinReadySeconds = in.MinReadySeconds
  304. out.Selector = in.Selector
  305. if err := k8s_api_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
  306. return err
  307. }
  308. return nil
  309. }
  310. func Convert_v1_ReplicaSetSpec_To_apps_ReplicaSetSpec(in *appsv1.ReplicaSetSpec, out *apps.ReplicaSetSpec, s conversion.Scope) error {
  311. if in.Replicas != nil {
  312. out.Replicas = *in.Replicas
  313. }
  314. out.MinReadySeconds = in.MinReadySeconds
  315. out.Selector = in.Selector
  316. if err := k8s_api_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
  317. return err
  318. }
  319. return nil
  320. }
  321. func Convert_v1_StatefulSetSpec_To_apps_StatefulSetSpec(in *appsv1.StatefulSetSpec, out *apps.StatefulSetSpec, s conversion.Scope) error {
  322. if in.Replicas != nil {
  323. out.Replicas = *in.Replicas
  324. }
  325. if in.Selector != nil {
  326. in, out := &in.Selector, &out.Selector
  327. *out = new(metav1.LabelSelector)
  328. if err := s.Convert(*in, *out, 0); err != nil {
  329. return err
  330. }
  331. } else {
  332. out.Selector = nil
  333. }
  334. if err := k8s_api_v1.Convert_v1_PodTemplateSpec_To_core_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
  335. return err
  336. }
  337. if in.VolumeClaimTemplates != nil {
  338. in, out := &in.VolumeClaimTemplates, &out.VolumeClaimTemplates
  339. *out = make([]api.PersistentVolumeClaim, len(*in))
  340. for i := range *in {
  341. if err := s.Convert(&(*in)[i], &(*out)[i], 0); err != nil {
  342. return err
  343. }
  344. }
  345. } else {
  346. out.VolumeClaimTemplates = nil
  347. }
  348. if err := Convert_v1_StatefulSetUpdateStrategy_To_apps_StatefulSetUpdateStrategy(&in.UpdateStrategy, &out.UpdateStrategy, s); err != nil {
  349. return err
  350. }
  351. if in.RevisionHistoryLimit != nil {
  352. out.RevisionHistoryLimit = new(int32)
  353. *out.RevisionHistoryLimit = *in.RevisionHistoryLimit
  354. } else {
  355. out.RevisionHistoryLimit = nil
  356. }
  357. out.ServiceName = in.ServiceName
  358. out.PodManagementPolicy = apps.PodManagementPolicyType(in.PodManagementPolicy)
  359. return nil
  360. }
  361. func Convert_apps_StatefulSetSpec_To_v1_StatefulSetSpec(in *apps.StatefulSetSpec, out *appsv1.StatefulSetSpec, s conversion.Scope) error {
  362. out.Replicas = new(int32)
  363. *out.Replicas = in.Replicas
  364. if in.Selector != nil {
  365. in, out := &in.Selector, &out.Selector
  366. *out = new(metav1.LabelSelector)
  367. if err := s.Convert(*in, *out, 0); err != nil {
  368. return err
  369. }
  370. } else {
  371. out.Selector = nil
  372. }
  373. if err := k8s_api_v1.Convert_core_PodTemplateSpec_To_v1_PodTemplateSpec(&in.Template, &out.Template, s); err != nil {
  374. return err
  375. }
  376. if in.VolumeClaimTemplates != nil {
  377. in, out := &in.VolumeClaimTemplates, &out.VolumeClaimTemplates
  378. *out = make([]v1.PersistentVolumeClaim, len(*in))
  379. for i := range *in {
  380. if err := s.Convert(&(*in)[i], &(*out)[i], 0); err != nil {
  381. return err
  382. }
  383. }
  384. } else {
  385. out.VolumeClaimTemplates = nil
  386. }
  387. if in.RevisionHistoryLimit != nil {
  388. out.RevisionHistoryLimit = new(int32)
  389. *out.RevisionHistoryLimit = *in.RevisionHistoryLimit
  390. } else {
  391. out.RevisionHistoryLimit = nil
  392. }
  393. out.ServiceName = in.ServiceName
  394. out.PodManagementPolicy = appsv1.PodManagementPolicyType(in.PodManagementPolicy)
  395. if err := Convert_apps_StatefulSetUpdateStrategy_To_v1_StatefulSetUpdateStrategy(&in.UpdateStrategy, &out.UpdateStrategy, s); err != nil {
  396. return err
  397. }
  398. return nil
  399. }
  400. func Convert_v1_StatefulSetUpdateStrategy_To_apps_StatefulSetUpdateStrategy(in *appsv1.StatefulSetUpdateStrategy, out *apps.StatefulSetUpdateStrategy, s conversion.Scope) error {
  401. out.Type = apps.StatefulSetUpdateStrategyType(in.Type)
  402. if in.RollingUpdate != nil {
  403. out.RollingUpdate = new(apps.RollingUpdateStatefulSetStrategy)
  404. out.RollingUpdate.Partition = *in.RollingUpdate.Partition
  405. } else {
  406. out.RollingUpdate = nil
  407. }
  408. return nil
  409. }
  410. func Convert_apps_StatefulSetUpdateStrategy_To_v1_StatefulSetUpdateStrategy(in *apps.StatefulSetUpdateStrategy, out *appsv1.StatefulSetUpdateStrategy, s conversion.Scope) error {
  411. out.Type = appsv1.StatefulSetUpdateStrategyType(in.Type)
  412. if in.RollingUpdate != nil {
  413. out.RollingUpdate = new(appsv1.RollingUpdateStatefulSetStrategy)
  414. out.RollingUpdate.Partition = new(int32)
  415. *out.RollingUpdate.Partition = in.RollingUpdate.Partition
  416. } else {
  417. out.RollingUpdate = nil
  418. }
  419. return nil
  420. }
  421. func Convert_v1_StatefulSetStatus_To_apps_StatefulSetStatus(in *appsv1.StatefulSetStatus, out *apps.StatefulSetStatus, s conversion.Scope) error {
  422. out.ObservedGeneration = new(int64)
  423. *out.ObservedGeneration = in.ObservedGeneration
  424. out.Replicas = in.Replicas
  425. out.ReadyReplicas = in.ReadyReplicas
  426. out.CurrentReplicas = in.CurrentReplicas
  427. out.UpdatedReplicas = in.UpdatedReplicas
  428. out.CurrentRevision = in.CurrentRevision
  429. out.UpdateRevision = in.UpdateRevision
  430. if in.CollisionCount != nil {
  431. out.CollisionCount = new(int32)
  432. *out.CollisionCount = *in.CollisionCount
  433. }
  434. out.Conditions = make([]apps.StatefulSetCondition, len(in.Conditions))
  435. for i := range in.Conditions {
  436. if err := Convert_v1_StatefulSetCondition_To_apps_StatefulSetCondition(&in.Conditions[i], &out.Conditions[i], s); err != nil {
  437. return err
  438. }
  439. }
  440. return nil
  441. }
  442. func Convert_apps_StatefulSetStatus_To_v1_StatefulSetStatus(in *apps.StatefulSetStatus, out *appsv1.StatefulSetStatus, s conversion.Scope) error {
  443. if in.ObservedGeneration != nil {
  444. out.ObservedGeneration = *in.ObservedGeneration
  445. }
  446. out.Replicas = in.Replicas
  447. out.ReadyReplicas = in.ReadyReplicas
  448. out.CurrentReplicas = in.CurrentReplicas
  449. out.UpdatedReplicas = in.UpdatedReplicas
  450. out.CurrentRevision = in.CurrentRevision
  451. out.UpdateRevision = in.UpdateRevision
  452. if in.CollisionCount != nil {
  453. out.CollisionCount = new(int32)
  454. *out.CollisionCount = *in.CollisionCount
  455. }
  456. out.Conditions = make([]appsv1.StatefulSetCondition, len(in.Conditions))
  457. for i := range in.Conditions {
  458. if err := Convert_apps_StatefulSetCondition_To_v1_StatefulSetCondition(&in.Conditions[i], &out.Conditions[i], s); err != nil {
  459. return err
  460. }
  461. }
  462. return nil
  463. }
  464. func deepCopyStringMap(m map[string]string) map[string]string {
  465. ret := make(map[string]string, len(m))
  466. for k, v := range m {
  467. ret[k] = v
  468. }
  469. return ret
  470. }