...
1
16
17 package v1beta1
18
19 import (
20 "fmt"
21
22 appsv1beta1 "k8s.io/api/apps/v1beta1"
23 corev1 "k8s.io/api/core/v1"
24 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
25 "k8s.io/apimachinery/pkg/conversion"
26 "k8s.io/apimachinery/pkg/labels"
27 "k8s.io/apimachinery/pkg/runtime"
28 apps "k8s.io/kubernetes/pkg/apis/apps"
29 "k8s.io/kubernetes/pkg/apis/autoscaling"
30 "k8s.io/kubernetes/pkg/apis/core"
31 )
32
33 func addConversionFuncs(scheme *runtime.Scheme) error {
34
35 if err := scheme.AddFieldLabelConversionFunc(SchemeGroupVersion.WithKind("StatefulSet"),
36 func(label, value string) (string, string, error) {
37 switch label {
38 case "metadata.name", "metadata.namespace", "status.successful":
39 return label, value, nil
40 default:
41 return "", "", fmt.Errorf("field label not supported for appsv1beta1.StatefulSet: %s", label)
42 }
43 }); err != nil {
44 return err
45 }
46
47 return nil
48 }
49
50 func Convert_autoscaling_ScaleStatus_To_v1beta1_ScaleStatus(in *autoscaling.ScaleStatus, out *appsv1beta1.ScaleStatus, s conversion.Scope) error {
51 out.Replicas = int32(in.Replicas)
52 out.TargetSelector = in.Selector
53
54 out.Selector = nil
55 selector, err := metav1.ParseToLabelSelector(in.Selector)
56 if err != nil {
57 return fmt.Errorf("failed to parse selector: %v", err)
58 }
59 if len(selector.MatchExpressions) == 0 {
60 out.Selector = selector.MatchLabels
61 }
62
63 return nil
64 }
65
66 func Convert_v1beta1_ScaleStatus_To_autoscaling_ScaleStatus(in *appsv1beta1.ScaleStatus, out *autoscaling.ScaleStatus, s conversion.Scope) error {
67 out.Replicas = in.Replicas
68
69 if in.TargetSelector != "" {
70 out.Selector = in.TargetSelector
71 } else if in.Selector != nil {
72 set := labels.Set{}
73 for key, val := range in.Selector {
74 set[key] = val
75 }
76 out.Selector = labels.SelectorFromSet(set).String()
77 } else {
78 out.Selector = ""
79 }
80 return nil
81 }
82
83
84
85 func Convert_v1beta1_StatefulSetSpec_To_apps_StatefulSetSpec(in *appsv1beta1.StatefulSetSpec, out *apps.StatefulSetSpec, s conversion.Scope) error {
86 if err := autoConvert_v1beta1_StatefulSetSpec_To_apps_StatefulSetSpec(in, out, s); err != nil {
87 return err
88 }
89
90
91 if out.VolumeClaimTemplates != nil {
92
93 templatesCopy := make([]core.PersistentVolumeClaim, len(out.VolumeClaimTemplates))
94 copy(templatesCopy, out.VolumeClaimTemplates)
95 out.VolumeClaimTemplates = templatesCopy
96 for i := range out.VolumeClaimTemplates {
97 out.VolumeClaimTemplates[i].APIVersion = ""
98 out.VolumeClaimTemplates[i].Kind = ""
99 }
100 }
101 return nil
102 }
103
104
105
106 func Convert_apps_StatefulSetSpec_To_v1beta1_StatefulSetSpec(in *apps.StatefulSetSpec, out *appsv1beta1.StatefulSetSpec, s conversion.Scope) error {
107 if err := autoConvert_apps_StatefulSetSpec_To_v1beta1_StatefulSetSpec(in, out, s); err != nil {
108 return err
109 }
110
111
112 if out.VolumeClaimTemplates != nil {
113
114 templatesCopy := make([]corev1.PersistentVolumeClaim, len(out.VolumeClaimTemplates))
115 copy(templatesCopy, out.VolumeClaimTemplates)
116 out.VolumeClaimTemplates = templatesCopy
117 for i := range out.VolumeClaimTemplates {
118 out.VolumeClaimTemplates[i].APIVersion = "v1"
119 out.VolumeClaimTemplates[i].Kind = "PersistentVolumeClaim"
120 }
121 }
122 return nil
123 }
124
View as plain text