Skip to content

Commit ab0083c

Browse files
committed
Introduce ClusterName field to ClusterResourceSetBinding
Signed-off-by: chaunceyjiang <[email protected]>
1 parent 40b6090 commit ab0083c

File tree

6 files changed

+110
-18
lines changed

6 files changed

+110
-18
lines changed

config/crd/bases/addons.cluster.x-k8s.io_clusterresourcesetbindings.yaml

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

exp/addons/api/v1alpha3/conversion.go

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ limitations under the License.
1717
package v1alpha3
1818

1919
import (
20+
apiconversion "k8s.io/apimachinery/pkg/conversion"
21+
utilconversion "sigs.k8s.io/cluster-api/util/conversion"
2022
"sigs.k8s.io/controller-runtime/pkg/conversion"
2123

2224
addonsv1 "sigs.k8s.io/cluster-api/exp/addons/api/v1beta1"
@@ -49,13 +51,31 @@ func (dst *ClusterResourceSetList) ConvertFrom(srcRaw conversion.Hub) error {
4951
func (src *ClusterResourceSetBinding) ConvertTo(dstRaw conversion.Hub) error {
5052
dst := dstRaw.(*addonsv1.ClusterResourceSetBinding)
5153

52-
return Convert_v1alpha3_ClusterResourceSetBinding_To_v1beta1_ClusterResourceSetBinding(src, dst, nil)
54+
if err := Convert_v1alpha3_ClusterResourceSetBinding_To_v1beta1_ClusterResourceSetBinding(src, dst, nil); err != nil {
55+
return err
56+
}
57+
// Manually restore data.
58+
restored := &addonsv1.ClusterResourceSetBinding{}
59+
if ok, err := utilconversion.UnmarshalData(src, restored); err != nil || !ok {
60+
return err
61+
}
62+
dst.Spec.ClusterName = restored.Spec.ClusterName
63+
return nil
5364
}
5465

5566
func (dst *ClusterResourceSetBinding) ConvertFrom(srcRaw conversion.Hub) error {
5667
src := srcRaw.(*addonsv1.ClusterResourceSetBinding)
5768

58-
return Convert_v1beta1_ClusterResourceSetBinding_To_v1alpha3_ClusterResourceSetBinding(src, dst, nil)
69+
if err := Convert_v1beta1_ClusterResourceSetBinding_To_v1alpha3_ClusterResourceSetBinding(src, dst, nil); err != nil {
70+
return err
71+
}
72+
73+
// Preserve Hub data on down-conversion except for metadata
74+
if err := utilconversion.MarshalData(src, dst); err != nil {
75+
return err
76+
}
77+
78+
return nil
5979
}
6080

6181
func (src *ClusterResourceSetBindingList) ConvertTo(dstRaw conversion.Hub) error {
@@ -69,3 +89,9 @@ func (dst *ClusterResourceSetBindingList) ConvertFrom(srcRaw conversion.Hub) err
6989

7090
return Convert_v1beta1_ClusterResourceSetBindingList_To_v1alpha3_ClusterResourceSetBindingList(src, dst, nil)
7191
}
92+
93+
// Convert_v1beta1_ClusterResourceSetBindingSpec_To_v1alpha3_ClusterResourceSetBindingSpec is a conversion function.
94+
func Convert_v1beta1_ClusterResourceSetBindingSpec_To_v1alpha3_ClusterResourceSetBindingSpec(in *addonsv1.ClusterResourceSetBindingSpec, out *ClusterResourceSetBindingSpec, s apiconversion.Scope) error {
95+
// Spec.ClusterName does not exist in ClusterResourceSetBinding v1alpha3 API.
96+
return autoConvert_v1beta1_ClusterResourceSetBindingSpec_To_v1alpha3_ClusterResourceSetBindingSpec(in, out, s)
97+
}

exp/addons/api/v1alpha3/zz_generated.conversion.go

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

exp/addons/api/v1alpha4/conversion.go

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ limitations under the License.
1717
package v1alpha4
1818

1919
import (
20+
apiconversion "k8s.io/apimachinery/pkg/conversion"
21+
utilconversion "sigs.k8s.io/cluster-api/util/conversion"
2022
"sigs.k8s.io/controller-runtime/pkg/conversion"
2123

2224
addonsv1 "sigs.k8s.io/cluster-api/exp/addons/api/v1beta1"
@@ -49,13 +51,31 @@ func (dst *ClusterResourceSetList) ConvertFrom(srcRaw conversion.Hub) error {
4951
func (src *ClusterResourceSetBinding) ConvertTo(dstRaw conversion.Hub) error {
5052
dst := dstRaw.(*addonsv1.ClusterResourceSetBinding)
5153

52-
return Convert_v1alpha4_ClusterResourceSetBinding_To_v1beta1_ClusterResourceSetBinding(src, dst, nil)
54+
if err := Convert_v1alpha4_ClusterResourceSetBinding_To_v1beta1_ClusterResourceSetBinding(src, dst, nil); err != nil {
55+
return err
56+
}
57+
// Manually restore data.
58+
restored := &addonsv1.ClusterResourceSetBinding{}
59+
if ok, err := utilconversion.UnmarshalData(src, restored); err != nil || !ok {
60+
return err
61+
}
62+
dst.Spec.ClusterName = restored.Spec.ClusterName
63+
return nil
5364
}
5465

5566
func (dst *ClusterResourceSetBinding) ConvertFrom(srcRaw conversion.Hub) error {
5667
src := srcRaw.(*addonsv1.ClusterResourceSetBinding)
5768

58-
return Convert_v1beta1_ClusterResourceSetBinding_To_v1alpha4_ClusterResourceSetBinding(src, dst, nil)
69+
if err := Convert_v1beta1_ClusterResourceSetBinding_To_v1alpha4_ClusterResourceSetBinding(src, dst, nil); err != nil {
70+
return err
71+
}
72+
73+
// Preserve Hub data on down-conversion except for metadata
74+
if err := utilconversion.MarshalData(src, dst); err != nil {
75+
return err
76+
}
77+
78+
return nil
5979
}
6080

6181
func (src *ClusterResourceSetBindingList) ConvertTo(dstRaw conversion.Hub) error {
@@ -69,3 +89,9 @@ func (dst *ClusterResourceSetBindingList) ConvertFrom(srcRaw conversion.Hub) err
6989

7090
return Convert_v1beta1_ClusterResourceSetBindingList_To_v1alpha4_ClusterResourceSetBindingList(src, dst, nil)
7191
}
92+
93+
// Convert_v1beta1_ClusterResourceSetBindingSpec_To_v1alpha4_ClusterResourceSetBindingSpec is a conversion function.
94+
func Convert_v1beta1_ClusterResourceSetBindingSpec_To_v1alpha4_ClusterResourceSetBindingSpec(in *addonsv1.ClusterResourceSetBindingSpec, out *ClusterResourceSetBindingSpec, s apiconversion.Scope) error {
95+
// Spec.ClusterName does not exist in ClusterResourceSetBinding v1alpha4 API.
96+
return autoConvert_v1beta1_ClusterResourceSetBindingSpec_To_v1alpha4_ClusterResourceSetBindingSpec(in, out, s)
97+
}

exp/addons/api/v1alpha4/zz_generated.conversion.go

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

exp/addons/api/v1beta1/clusterresourcesetbinding_types.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,10 @@ type ClusterResourceSetBindingSpec struct {
129129
// Bindings is a list of ClusterResourceSets and their resources.
130130
// +optional
131131
Bindings []*ResourceSetBinding `json:"bindings,omitempty"`
132+
133+
// ClusterName use the cluster name to determine which cluster the resource binding applies to.
134+
// +optional
135+
ClusterName string `json:"clusterName,omitempty"`
132136
}
133137

134138
// ANCHOR_END: ClusterResourceSetBindingSpec

0 commit comments

Comments
 (0)