1
16
17 package v1beta2
18
19 import (
20 "fmt"
21 "strconv"
22
23 appsv1beta2 "k8s.io/api/apps/v1beta2"
24 corev1 "k8s.io/api/core/v1"
25 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
26 "k8s.io/apimachinery/pkg/conversion"
27 "k8s.io/apimachinery/pkg/labels"
28 "k8s.io/apimachinery/pkg/runtime"
29 "k8s.io/kubernetes/pkg/apis/apps"
30 autoscaling "k8s.io/kubernetes/pkg/apis/autoscaling"
31 "k8s.io/kubernetes/pkg/apis/core"
32 )
33
34 func addConversionFuncs(scheme *runtime.Scheme) error {
35
36 if err := scheme.AddFieldLabelConversionFunc(SchemeGroupVersion.WithKind("StatefulSet"),
37 func(label, value string) (string, string, error) {
38 switch label {
39 case "metadata.name", "metadata.namespace", "status.successful":
40 return label, value, nil
41 default:
42 return "", "", fmt.Errorf("field label not supported for appsv1beta2.StatefulSet: %s", label)
43 }
44 }); err != nil {
45 return err
46 }
47
48 return nil
49 }
50
51 func Convert_autoscaling_ScaleStatus_To_v1beta2_ScaleStatus(in *autoscaling.ScaleStatus, out *appsv1beta2.ScaleStatus, s conversion.Scope) error {
52 out.Replicas = int32(in.Replicas)
53 out.TargetSelector = in.Selector
54
55 out.Selector = nil
56 selector, err := metav1.ParseToLabelSelector(in.Selector)
57 if err != nil {
58 return fmt.Errorf("failed to parse selector: %v", err)
59 }
60 if len(selector.MatchExpressions) == 0 {
61 out.Selector = selector.MatchLabels
62 }
63
64 return nil
65 }
66
67 func Convert_v1beta2_ScaleStatus_To_autoscaling_ScaleStatus(in *appsv1beta2.ScaleStatus, out *autoscaling.ScaleStatus, s conversion.Scope) error {
68 out.Replicas = in.Replicas
69
70
71
72
73
74 if in.TargetSelector != "" {
75 out.Selector = in.TargetSelector
76 } else if in.Selector != nil {
77 set := labels.Set{}
78 for key, val := range in.Selector {
79 set[key] = val
80 }
81 out.Selector = labels.SelectorFromSet(set).String()
82 } else {
83 out.Selector = ""
84 }
85 return nil
86 }
87
88
89
90 func Convert_apps_DeploymentSpec_To_v1beta2_DeploymentSpec(in *apps.DeploymentSpec, out *appsv1beta2.DeploymentSpec, s conversion.Scope) error {
91 if err := autoConvert_apps_DeploymentSpec_To_v1beta2_DeploymentSpec(in, out, s); err != nil {
92 return err
93 }
94 return nil
95 }
96
97 func Convert_v1beta2_Deployment_To_apps_Deployment(in *appsv1beta2.Deployment, out *apps.Deployment, s conversion.Scope) error {
98 if err := autoConvert_v1beta2_Deployment_To_apps_Deployment(in, out, s); err != nil {
99 return err
100 }
101
102
103
104 if revision := in.Annotations[appsv1beta2.DeprecatedRollbackTo]; revision != "" {
105 if revision64, err := strconv.ParseInt(revision, 10, 64); err != nil {
106 return fmt.Errorf("failed to parse annotation[%s]=%s as int64: %v", appsv1beta2.DeprecatedRollbackTo, revision, err)
107 } else {
108 out.Spec.RollbackTo = new(apps.RollbackConfig)
109 out.Spec.RollbackTo.Revision = revision64
110 }
111 out.Annotations = deepCopyStringMap(out.Annotations)
112 delete(out.Annotations, appsv1beta2.DeprecatedRollbackTo)
113 } else {
114 out.Spec.RollbackTo = nil
115 }
116
117 return nil
118 }
119
120 func Convert_apps_Deployment_To_v1beta2_Deployment(in *apps.Deployment, out *appsv1beta2.Deployment, s conversion.Scope) error {
121 if err := autoConvert_apps_Deployment_To_v1beta2_Deployment(in, out, s); err != nil {
122 return err
123 }
124
125 out.Annotations = deepCopyStringMap(out.Annotations)
126
127
128 if in.Spec.RollbackTo != nil {
129 if out.Annotations == nil {
130 out.Annotations = make(map[string]string)
131 }
132 out.Annotations[appsv1beta2.DeprecatedRollbackTo] = strconv.FormatInt(in.Spec.RollbackTo.Revision, 10)
133 } else {
134 delete(out.Annotations, appsv1beta2.DeprecatedRollbackTo)
135 }
136
137 return nil
138 }
139
140 func Convert_apps_DaemonSet_To_v1beta2_DaemonSet(in *apps.DaemonSet, out *appsv1beta2.DaemonSet, s conversion.Scope) error {
141 if err := autoConvert_apps_DaemonSet_To_v1beta2_DaemonSet(in, out, s); err != nil {
142 return err
143 }
144
145 out.Annotations = deepCopyStringMap(out.Annotations)
146 out.Annotations[appsv1beta2.DeprecatedTemplateGeneration] = strconv.FormatInt(in.Spec.TemplateGeneration, 10)
147 return nil
148 }
149
150
151
152 func Convert_apps_DaemonSetSpec_To_v1beta2_DaemonSetSpec(in *apps.DaemonSetSpec, out *appsv1beta2.DaemonSetSpec, s conversion.Scope) error {
153 if err := autoConvert_apps_DaemonSetSpec_To_v1beta2_DaemonSetSpec(in, out, s); err != nil {
154 return err
155 }
156 return nil
157 }
158
159 func Convert_v1beta2_DaemonSet_To_apps_DaemonSet(in *appsv1beta2.DaemonSet, out *apps.DaemonSet, s conversion.Scope) error {
160 if err := autoConvert_v1beta2_DaemonSet_To_apps_DaemonSet(in, out, s); err != nil {
161 return err
162 }
163
164 if value, ok := in.Annotations[appsv1beta2.DeprecatedTemplateGeneration]; ok {
165 if value64, err := strconv.ParseInt(value, 10, 64); err != nil {
166 return err
167 } else {
168 out.Spec.TemplateGeneration = value64
169 out.Annotations = deepCopyStringMap(out.Annotations)
170 delete(out.Annotations, appsv1beta2.DeprecatedTemplateGeneration)
171 }
172 }
173
174 return nil
175 }
176
177 func deepCopyStringMap(m map[string]string) map[string]string {
178 ret := make(map[string]string, len(m))
179 for k, v := range m {
180 ret[k] = v
181 }
182 return ret
183 }
184
185
186
187 func Convert_v1beta2_StatefulSetSpec_To_apps_StatefulSetSpec(in *appsv1beta2.StatefulSetSpec, out *apps.StatefulSetSpec, s conversion.Scope) error {
188 if err := autoConvert_v1beta2_StatefulSetSpec_To_apps_StatefulSetSpec(in, out, s); err != nil {
189 return err
190 }
191
192
193 if out.VolumeClaimTemplates != nil {
194
195 templatesCopy := make([]core.PersistentVolumeClaim, len(out.VolumeClaimTemplates))
196 copy(templatesCopy, out.VolumeClaimTemplates)
197 out.VolumeClaimTemplates = templatesCopy
198 for i := range out.VolumeClaimTemplates {
199 out.VolumeClaimTemplates[i].APIVersion = ""
200 out.VolumeClaimTemplates[i].Kind = ""
201 }
202 }
203 return nil
204 }
205
206
207
208 func Convert_apps_StatefulSetSpec_To_v1beta2_StatefulSetSpec(in *apps.StatefulSetSpec, out *appsv1beta2.StatefulSetSpec, s conversion.Scope) error {
209 if err := autoConvert_apps_StatefulSetSpec_To_v1beta2_StatefulSetSpec(in, out, s); err != nil {
210 return err
211 }
212
213
214 if out.VolumeClaimTemplates != nil {
215
216 templatesCopy := make([]corev1.PersistentVolumeClaim, len(out.VolumeClaimTemplates))
217 copy(templatesCopy, out.VolumeClaimTemplates)
218 out.VolumeClaimTemplates = templatesCopy
219 for i := range out.VolumeClaimTemplates {
220 out.VolumeClaimTemplates[i].APIVersion = "v1"
221 out.VolumeClaimTemplates[i].Kind = "PersistentVolumeClaim"
222 }
223 }
224 return nil
225 }
226
View as plain text