Skip to content

Commit e3c936e

Browse files
⚠️ Refactor reference types for IPAM (#12365)
* Refactor reference types for IPAM * Address comments * More comments
1 parent 64864e4 commit e3c936e

16 files changed

+330
-109
lines changed

api/ipam/v1alpha1/conversion.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ limitations under the License.
1717
package v1alpha1
1818

1919
import (
20-
apiconversion "k8s.io/apimachinery/pkg/conversion"
20+
apimachineryconversion "k8s.io/apimachinery/pkg/conversion"
2121
"sigs.k8s.io/controller-runtime/pkg/conversion"
2222

2323
clusterv1beta1 "sigs.k8s.io/cluster-api/api/core/v1beta1"
@@ -118,10 +118,10 @@ func (dst *IPAddressClaim) ConvertFrom(srcRaw conversion.Hub) error {
118118
return nil
119119
}
120120

121-
func Convert_v1beta2_IPAddressClaimSpec_To_v1alpha1_IPAddressClaimSpec(from *ipamv1.IPAddressClaimSpec, to *IPAddressClaimSpec, scope apiconversion.Scope) error {
121+
func Convert_v1beta2_IPAddressClaimSpec_To_v1alpha1_IPAddressClaimSpec(from *ipamv1.IPAddressClaimSpec, to *IPAddressClaimSpec, scope apimachineryconversion.Scope) error {
122122
return autoConvert_v1beta2_IPAddressClaimSpec_To_v1alpha1_IPAddressClaimSpec(from, to, scope)
123123
}
124124

125-
func Convert_v1beta2_IPAddressClaimStatus_To_v1alpha1_IPAddressClaimStatus(from *ipamv1.IPAddressClaimStatus, to *IPAddressClaimStatus, scope apiconversion.Scope) error {
125+
func Convert_v1beta2_IPAddressClaimStatus_To_v1alpha1_IPAddressClaimStatus(from *ipamv1.IPAddressClaimStatus, to *IPAddressClaimStatus, scope apimachineryconversion.Scope) error {
126126
return autoConvert_v1beta2_IPAddressClaimStatus_To_v1alpha1_IPAddressClaimStatus(from, to, scope)
127127
}

api/ipam/v1alpha1/conversion_test.go

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"reflect"
2323
"testing"
2424

25+
corev1 "k8s.io/api/core/v1"
2526
"k8s.io/apimachinery/pkg/api/apitesting/fuzzer"
2627
runtimeserializer "k8s.io/apimachinery/pkg/runtime/serializer"
2728
"sigs.k8s.io/randfill"
@@ -34,8 +35,9 @@ import (
3435

3536
func TestFuzzyConversion(t *testing.T) {
3637
t.Run("for IPAddress", utilconversion.FuzzTestFunc(utilconversion.FuzzTestFuncInput{
37-
Hub: &ipamv1.IPAddress{},
38-
Spoke: &IPAddress{},
38+
Hub: &ipamv1.IPAddress{},
39+
Spoke: &IPAddress{},
40+
FuzzerFuncs: []fuzzer.FuzzerFuncs{IPAddressFuzzFuncs},
3941
}))
4042
t.Run("for IPAddressClaim", utilconversion.FuzzTestFunc(utilconversion.FuzzTestFuncInput{
4143
Hub: &ipamv1.IPAddressClaim{},
@@ -44,9 +46,23 @@ func TestFuzzyConversion(t *testing.T) {
4446
}))
4547
}
4648

49+
func IPAddressFuzzFuncs(_ runtimeserializer.CodecFactory) []interface{} {
50+
return []interface{}{
51+
spokeTypedLocalObjectReference,
52+
}
53+
}
54+
55+
func spokeTypedLocalObjectReference(in *corev1.TypedLocalObjectReference, c randfill.Continue) {
56+
c.FillNoCustom(in)
57+
if in.APIGroup != nil && *in.APIGroup == "" {
58+
in.APIGroup = nil
59+
}
60+
}
61+
4762
func IPAddressClaimFuzzFuncs(_ runtimeserializer.CodecFactory) []interface{} {
4863
return []interface{}{
4964
hubIPAddressClaimStatus,
65+
spokeTypedLocalObjectReference,
5066
}
5167
}
5268

api/ipam/v1alpha1/zz_generated.conversion.go

Lines changed: 24 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/ipam/v1beta1/conversion.go

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,10 @@ limitations under the License.
1717
package v1beta1
1818

1919
import (
20+
corev1 "k8s.io/api/core/v1"
2021
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2122
apimachineryconversion "k8s.io/apimachinery/pkg/conversion"
23+
"k8s.io/utils/ptr"
2224
"sigs.k8s.io/controller-runtime/pkg/conversion"
2325

2426
clusterv1beta1 "sigs.k8s.io/cluster-api/api/core/v1beta1"
@@ -104,6 +106,42 @@ func Convert_v1beta1_IPAddressClaimStatus_To_v1beta2_IPAddressClaimStatus(in *IP
104106
return nil
105107
}
106108

109+
func Convert_v1_TypedLocalObjectReference_To_v1beta2_IPPoolReference(in *corev1.TypedLocalObjectReference, out *ipamv1.IPPoolReference, _ apimachineryconversion.Scope) error {
110+
out.Kind = in.Kind
111+
out.Name = in.Name
112+
out.APIGroup = ptr.Deref(in.APIGroup, "")
113+
return nil
114+
}
115+
116+
func Convert_v1beta2_IPPoolReference_To_v1_TypedLocalObjectReference(in *ipamv1.IPPoolReference, out *corev1.TypedLocalObjectReference, _ apimachineryconversion.Scope) error {
117+
out.Kind = in.Kind
118+
out.Name = in.Name
119+
if in.APIGroup != "" {
120+
out.APIGroup = ptr.To(in.APIGroup)
121+
}
122+
return nil
123+
}
124+
125+
func Convert_v1_LocalObjectReference_To_v1beta2_IPAddressReference(in *corev1.LocalObjectReference, out *ipamv1.IPAddressReference, _ apimachineryconversion.Scope) error {
126+
out.Name = in.Name
127+
return nil
128+
}
129+
130+
func Convert_v1beta2_IPAddressReference_To_v1_LocalObjectReference(in *ipamv1.IPAddressReference, out *corev1.LocalObjectReference, _ apimachineryconversion.Scope) error {
131+
out.Name = in.Name
132+
return nil
133+
}
134+
135+
func Convert_v1_LocalObjectReference_To_v1beta2_IPAddressClaimReference(in *corev1.LocalObjectReference, out *ipamv1.IPAddressClaimReference, _ apimachineryconversion.Scope) error {
136+
out.Name = in.Name
137+
return nil
138+
}
139+
140+
func Convert_v1beta2_IPAddressClaimReference_To_v1_LocalObjectReference(in *ipamv1.IPAddressClaimReference, out *corev1.LocalObjectReference, _ apimachineryconversion.Scope) error {
141+
out.Name = in.Name
142+
return nil
143+
}
144+
107145
// Implement local conversion func because conversion-gen is not aware of conversion func in other packages (see https://github.com/kubernetes/code-generator/issues/94)
108146

109147
func Convert_v1_Condition_To_v1beta1_Condition(in *metav1.Condition, out *clusterv1beta1.Condition, s apimachineryconversion.Scope) error {

api/ipam/v1beta1/conversion_test.go

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"reflect"
2323
"testing"
2424

25+
corev1 "k8s.io/api/core/v1"
2526
"k8s.io/apimachinery/pkg/api/apitesting/fuzzer"
2627
runtimeserializer "k8s.io/apimachinery/pkg/runtime/serializer"
2728
"sigs.k8s.io/randfill"
@@ -34,8 +35,9 @@ import (
3435

3536
func TestFuzzyConversion(t *testing.T) {
3637
t.Run("for IPAddress", utilconversion.FuzzTestFunc(utilconversion.FuzzTestFuncInput{
37-
Hub: &ipamv1.IPAddress{},
38-
Spoke: &IPAddress{},
38+
Hub: &ipamv1.IPAddress{},
39+
Spoke: &IPAddress{},
40+
FuzzerFuncs: []fuzzer.FuzzerFuncs{IPAddressFuzzFuncs},
3941
}))
4042
t.Run("for IPAddressClaim", utilconversion.FuzzTestFunc(utilconversion.FuzzTestFuncInput{
4143
Hub: &ipamv1.IPAddressClaim{},
@@ -44,10 +46,24 @@ func TestFuzzyConversion(t *testing.T) {
4446
}))
4547
}
4648

49+
func IPAddressFuzzFuncs(_ runtimeserializer.CodecFactory) []interface{} {
50+
return []interface{}{
51+
spokeTypedLocalObjectReference,
52+
}
53+
}
54+
55+
func spokeTypedLocalObjectReference(in *corev1.TypedLocalObjectReference, c randfill.Continue) {
56+
c.FillNoCustom(in)
57+
if in.APIGroup != nil && *in.APIGroup == "" {
58+
in.APIGroup = nil
59+
}
60+
}
61+
4762
func IPAddressClaimFuzzFuncs(_ runtimeserializer.CodecFactory) []interface{} {
4863
return []interface{}{
4964
hubIPAddressClaimStatus,
5065
spokeIPAddressClaimStatus,
66+
spokeTypedLocalObjectReference,
5167
}
5268
}
5369

api/ipam/v1beta1/zz_generated.conversion.go

Lines changed: 55 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)