Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
649 changes: 520 additions & 129 deletions apis/placement/v1/clusterresourceplacement_types.go

Large diffs are not rendered by default.

9 changes: 5 additions & 4 deletions apis/placement/v1/commons.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,18 +17,19 @@ limitations under the License.
package v1

const (
// fleetPrefix is the prefix used for official fleet labels/annotations.
// FleetPrefix is the prefix used for official fleet labels/annotations.
// Unprefixed labels/annotations are reserved for end-users
// See https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#label-selector-and-annotation-conventions
fleetPrefix = "kubernetes-fleet.io/"
FleetPrefix = "kubernetes-fleet.io/"
)

// NamespacedName comprises a resource name, with a mandatory namespace.
type NamespacedName struct {
// Name is the name of the namespaced scope resource.
// +required
// +kubebuilder:validation:Required
Name string `json:"name"`

// Namespace is namespace of the namespaced scope resource.
// +required
// +kubebuilder:validation:Required
Namespace string `json:"namespace"`
}
6 changes: 3 additions & 3 deletions apis/placement/v1/override_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import (
// +genclient:nonNamespaced
// +kubebuilder:object:root=true
// +kubebuilder:resource:scope="Cluster",categories={fleet,fleet-placement}
// +kubebuilder:validation:XValidation:rule="!has(self.spec.placement) || self.spec.placement.scope != 'Namespaced'",message="clusterResourceOverride placement reference cannot be Namespaced scope"
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object

// ClusterResourceOverride defines a group of override policies about how to override the selected cluster scope resources
Expand All @@ -48,7 +49,6 @@ type ClusterResourceOverrideSpec struct {
// If set, the override will trigger the placement rollout immediately when the rollout strategy type is RollingUpdate.
// Otherwise, it will be applied to the next rollout.
// The recommended way is to set the placement so that the override can be rolled out immediately.
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="The placement field is immutable"
// +optional
Placement *PlacementRef `json:"placement,omitempty"`

Expand All @@ -61,7 +61,7 @@ type ClusterResourceOverrideSpec struct {
// +kubebuilder:validation:MinItems=1
// +kubebuilder:validation:MaxItems=20
// +required
ClusterResourceSelectors []ClusterResourceSelector `json:"clusterResourceSelectors"`
ClusterResourceSelectors []ResourceSelectorTerm `json:"clusterResourceSelectors"`

// Policy defines how to override the selected resources on the target clusters.
// +required
Expand All @@ -84,8 +84,8 @@ const (
type PlacementRef struct {
// Name is the reference to the name of placement.
// +required

Name string `json:"name"`

// Scope defines the scope of the placement.
// A clusterResourceOverride can only reference a clusterResourcePlacement (cluster-scoped),
// and a resourceOverride can reference either a clusterResourcePlacement or resourcePlacement (namespaced).
Expand Down
8 changes: 4 additions & 4 deletions apis/placement/v1/overridesnapshot_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,18 +20,18 @@ import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"

const (

// OverrideIndexLabel is the label that indicate the policy snapshot index of a cluster policy.
OverrideIndexLabel = fleetPrefix + "override-index"
// OverrideIndexLabel is the label that indicates the override snapshot index of an override.
OverrideIndexLabel = FleetPrefix + "override-index"

// OverrideSnapshotNameFmt is clusterResourceOverrideSnapshot name format: {CROName}-{OverrideSnapshotIndex}.
OverrideSnapshotNameFmt = "%s-%d"

// OverrideTrackingLabel is the label that points to the cluster resource override that creates a resource snapshot.
OverrideTrackingLabel = fleetPrefix + "parent-resource-override"
OverrideTrackingLabel = FleetPrefix + "parent-resource-override"

// OverrideFinalizer is a finalizer added by the override controllers to all override, to make sure
// that the override controller can react to override deletions if necessary.
OverrideFinalizer = fleetPrefix + "override-cleanup"
OverrideFinalizer = FleetPrefix + "override-cleanup"
)

// +genclient
Expand Down
Loading
Loading