Skip to content

Commit

Permalink
refactor(api): unify the go structs for (Cluster)?FederatedObject
Browse files Browse the repository at this point in the history
  • Loading branch information
gary-lgy committed Jul 14, 2023
1 parent f34f287 commit e91a2fb
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 24 deletions.
3 changes: 3 additions & 0 deletions hack/generate-groups.sh
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,9 @@ for patch_file in config/crds/patches/*.sh; do

PATH="$GOBIN:$PATH" bash $patch_file $crd_file
done
# remove the CRD for GenericFederatedObject.
# It's not needed and there's no way to suppress its generation.
rm -v config/crds/core.kubeadmiral.io_genericfederatedobjects.yaml || true

# generate deepcopy
echo "Generating deepcopy funcs"
Expand Down
38 changes: 14 additions & 24 deletions pkg/apis/core/v1alpha1/types_federatedobject.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,16 +22,8 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

// +genclient
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// +kubebuilder:validation:Required
// +kubebuilder:resource:path=federatedobjects,shortName=fo,singular=federatedobject
// +kubebuilder:subresource:status
// +kubebuilder:object:root=true

// FederatedObject describes a namespace-scoped Kubernetes object and how it should be propagated to different member
// clusters.
type FederatedObject struct {
// Schema shared by both FederatedObject and ClusterFederatedObject.
type GenericFederatedObject struct {
metav1.TypeMeta `json:",inline"`
// Standard object's metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
Expand All @@ -46,6 +38,17 @@ type FederatedObject struct {
Status GenericFederatedObjectStatus `json:"status,omitempty"`
}

// +genclient
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// +kubebuilder:validation:Required
// +kubebuilder:resource:path=federatedobjects,shortName=fo,singular=federatedobject
// +kubebuilder:subresource:status
// +kubebuilder:object:root=true

// FederatedObject describes a namespace-scoped Kubernetes object and how it should be propagated to different member
// clusters.
type FederatedObject GenericFederatedObject

// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
// +kubebuilder:object:root=true

Expand All @@ -66,20 +69,7 @@ type FederatedObjectList struct {

// ClusterFederatedObject describes a cluster-scoped Kubernetes object and how it should be propagated to different
// member clusters.
type ClusterFederatedObject struct {
metav1.TypeMeta `json:",inline"`
// Standard object's metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
// +optional
metav1.ObjectMeta `json:"metadata,omitempty"`

// Spec defines the desired behavior of the ClusterFederatedObject.
Spec GenericFederatedObjectSpec `json:"spec"`

// Status describes the most recently observed status of the ClusterFederatedObject.
// +optional
Status GenericFederatedObjectStatus `json:"status,omitempty"`
}
type ClusterFederatedObject GenericFederatedObject

// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object

Expand Down
20 changes: 20 additions & 0 deletions pkg/apis/core/v1alpha1/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit e91a2fb

Please sign in to comment.