@@ -32,26 +32,20 @@ type FeatureFlagSpec struct {
3232
3333type FlagSpec struct {
3434 Flags `json:",inline"`
35- // Metadata holds optional flag-level metadata such as flag set identifiers.
36- // Additional metadata keys are preserved to support flagd metadata inheritance.
3735 // +optional
36+ // +kubebuilder:validation:Schemaless
3837 // +kubebuilder:pruning:PreserveUnknownFields
39- Metadata * FlagMetadata `json:"metadata,omitempty"`
38+ // +kubebuilder:validation:Type=object
39+ // Metadata holds optional flag-set level metadata.
40+ // Additional metadata keys are preserved to support flagd metadata inheritance.
41+ Metadata json.RawMessage `json:"metadata,omitempty"`
4042 // +optional
4143 // +kubebuilder:validation:Schemaless
4244 // +kubebuilder:pruning:PreserveUnknownFields
4345 // +kubebuilder:validation:Type=object
4446 Evaluators json.RawMessage `json:"$evaluators,omitempty"`
4547}
4648
47- // FlagMetadata captures optional metadata for a flag specification.
48- // PreserveUnknownFields keeps compatibility with flagd's metadata inheritance model.
49- // +kubebuilder:pruning:PreserveUnknownFields
50- type FlagMetadata struct {
51- // +optional
52- FlagSetID string `json:"flagSetId,omitempty"`
53- }
54-
5549// Flags represent the flags specification
5650type Flags struct {
5751 FlagsMap map [string ]Flag `json:"flags"`
@@ -60,20 +54,24 @@ type Flags struct {
6054type Flag struct {
6155 // +kubebuilder:validation:Enum=ENABLED;DISABLED
6256 State string `json:"state"`
63- // +optional
64- // +kubebuilder:pruning:PreserveUnknownFields
65- Metadata * FlagMetadata `json:"metadata,omitempty"`
6657 // +kubebuilder:validation:Schemaless
6758 // +kubebuilder:pruning:PreserveUnknownFields
6859 // +kubebuilder:validation:Type=object
69- Variants json.RawMessage `json:"variants"`
70- DefaultVariant string `json:"defaultVariant"`
60+ Variants json.RawMessage `json:"variants"`
61+ DefaultVariant string `json:"defaultVariant"`
7162 // +optional
7263 // +kubebuilder:validation:Schemaless
7364 // +kubebuilder:pruning:PreserveUnknownFields
7465 // +kubebuilder:validation:Type=object
7566 // Targeting is the json targeting rule
7667 Targeting json.RawMessage `json:"targeting,omitempty"`
68+ // +optional
69+ // +kubebuilder:validation:Schemaless
70+ // +kubebuilder:pruning:PreserveUnknownFields
71+ // +kubebuilder:validation:Type=object
72+ // Metadata holds optional per-flag metadata.
73+ // Additional metadata keys are preserved to support flagd metadata inheritance.
74+ Metadata json.RawMessage `json:"metadata,omitempty"`
7775}
7876
7977// FeatureFlagStatus defines the observed state of FeatureFlag
@@ -135,4 +133,4 @@ func (ff *FeatureFlag) GenerateConfigMap(name string, namespace string, referenc
135133 common .FeatureFlagConfigMapKey (namespace , name ): string (b ),
136134 },
137135 }, nil
138- }
136+ }
0 commit comments