Skip to content

Commit 32bfbc8

Browse files
authored
Merge pull request #11971 from sbueringer/pr-ipaddressclaimv1beta2conditions
🌱 Add v1beta2 conditions to IPAddressClaim
2 parents c330599 + 16e3e02 commit 32bfbc8

File tree

5 files changed

+151
-10
lines changed

5 files changed

+151
-10
lines changed

config/crd/bases/ipam.cluster.x-k8s.io_ipaddressclaims.yaml

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

exp/ipam/api/v1alpha1/conversion.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222

2323
clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
2424
ipamv1 "sigs.k8s.io/cluster-api/exp/ipam/api/v1beta1"
25+
utilconversion "sigs.k8s.io/cluster-api/util/conversion"
2526
)
2627

2728
func (src *IPAddress) ConvertTo(dstRaw conversion.Hub) error {
@@ -67,6 +68,14 @@ func (src *IPAddressClaim) ConvertTo(dstRaw conversion.Hub) error {
6768
}
6869
}
6970

71+
// Manually restore data.
72+
restored := &ipamv1.IPAddressClaim{}
73+
if ok, err := utilconversion.UnmarshalData(src, restored); err != nil || !ok {
74+
return err
75+
}
76+
77+
dst.Status.V1Beta2 = restored.Status.V1Beta2
78+
7079
return nil
7180
}
7281

@@ -90,6 +99,11 @@ func (dst *IPAddressClaim) ConvertFrom(srcRaw conversion.Hub) error {
9099
dst.ObjectMeta.Labels[clusterv1.ClusterNameLabel] = src.Spec.ClusterName
91100
}
92101

102+
// Preserve Hub data on down-conversion except for metadata
103+
if err := utilconversion.MarshalData(src, dst); err != nil {
104+
return err
105+
}
106+
93107
return nil
94108
}
95109

@@ -108,3 +122,7 @@ func (dst *IPAddressClaimList) ConvertFrom(srcRaw conversion.Hub) error {
108122
func Convert_v1beta1_IPAddressClaimSpec_To_v1alpha1_IPAddressClaimSpec(from *ipamv1.IPAddressClaimSpec, to *IPAddressClaimSpec, scope apiconversion.Scope) error {
109123
return autoConvert_v1beta1_IPAddressClaimSpec_To_v1alpha1_IPAddressClaimSpec(from, to, scope)
110124
}
125+
126+
func Convert_v1beta1_IPAddressClaimStatus_To_v1alpha1_IPAddressClaimStatus(from *ipamv1.IPAddressClaimStatus, to *IPAddressClaimStatus, scope apiconversion.Scope) error {
127+
return autoConvert_v1beta1_IPAddressClaimStatus_To_v1alpha1_IPAddressClaimStatus(from, to, scope)
128+
}

exp/ipam/api/v1alpha1/zz_generated.conversion.go

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

exp/ipam/api/v1beta1/ipaddressclaim_types.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,21 @@ type IPAddressClaimStatus struct {
4545
// conditions summarises the current state of the IPAddressClaim
4646
// +optional
4747
Conditions clusterv1.Conditions `json:"conditions,omitempty"`
48+
49+
// v1beta2 groups all the fields that will be added or modified in IPAddressClaim's status with the V1Beta2 version.
50+
// +optional
51+
V1Beta2 *IPAddressClaimV1Beta2Status `json:"v1beta2,omitempty"`
52+
}
53+
54+
// IPAddressClaimV1Beta2Status groups all the fields that will be added or modified in IPAddressClaimStatus with the V1Beta2 version.
55+
// See https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more context.
56+
type IPAddressClaimV1Beta2Status struct {
57+
// conditions represents the observations of a IPAddressClaim's current state.
58+
// +optional
59+
// +listType=map
60+
// +listMapKey=type
61+
// +kubebuilder:validation:MaxItems=32
62+
Conditions []metav1.Condition `json:"conditions,omitempty"`
4863
}
4964

5065
// +kubebuilder:object:root=true
@@ -81,6 +96,22 @@ func (m *IPAddressClaim) SetConditions(conditions clusterv1.Conditions) {
8196
m.Status.Conditions = conditions
8297
}
8398

99+
// GetV1Beta2Conditions returns the set of conditions for this object.
100+
func (m *IPAddressClaim) GetV1Beta2Conditions() []metav1.Condition {
101+
if m.Status.V1Beta2 == nil {
102+
return nil
103+
}
104+
return m.Status.V1Beta2.Conditions
105+
}
106+
107+
// SetV1Beta2Conditions sets conditions for an API object.
108+
func (m *IPAddressClaim) SetV1Beta2Conditions(conditions []metav1.Condition) {
109+
if m.Status.V1Beta2 == nil {
110+
m.Status.V1Beta2 = &IPAddressClaimV1Beta2Status{}
111+
}
112+
m.Status.V1Beta2.Conditions = conditions
113+
}
114+
84115
// +kubebuilder:object:root=true
85116

86117
// IPAddressClaimList is a list of IPAddressClaims.

exp/ipam/api/v1beta1/zz_generated.deepcopy.go

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

0 commit comments

Comments
 (0)