@@ -17,19 +17,57 @@ limitations under the License.
1717package v1
1818
1919import (
20+ corev1 "k8s.io/api/core/v1"
2021 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2122)
2223
23- // EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN!
24- // NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized.
25-
2624// MetabaseSpec defines the desired state of Metabase
2725type MetabaseSpec struct {
2826 // INSERT ADDITIONAL SPEC FIELDS - desired state of cluster
2927 // Important: Run "make" to regenerate code after modifying this file
3028
31- // Foo is an example field of Metabase. Edit metabase_types.go to remove/update
32- Foo string `json:"foo,omitempty"`
29+ // +kubebuilder:default="postgres:latest"
30+ // +kubebuilder:validation:Optional
31+ Test string `json:"test"`
32+
33+ // +kubebuilder:validation:Required
34+ DB DBSpec `json:"db"`
35+ }
36+
37+ type DBSpec struct {
38+ // The image name to use for PostgreSQL containers.
39+ // +kubebuilder:default="postgres:latest"
40+ // +kubebuilder:validation:Optional
41+ Image string `json:"image,omitempty"`
42+
43+ // ImagePullPolicy is used to determine when Kubernetes will attempt to
44+ // pull (download) container images.
45+ // +kubebuilder:validation:Enum={Always,Never,IfNotPresent}
46+ // +kubebuilder:default="IfNotPresent"
47+ // +kubebuilder:validation:Optional
48+ ImagePullPolicy corev1.PullPolicy `json:"imagePullPolicy,omitempty"`
49+
50+ // Number of desired PostgreSQL pods.
51+ // +kubebuilder:validation:Minimum=1
52+ // +kubebuilder:default=1
53+ // +kubebuilder:validation:Optional
54+ Replicas * int32 `json:"replicas,omitempty"`
55+
56+ // +kubebuilder:validation:Required
57+ Volume VolumeSpec `json:"volume"`
58+ }
59+
60+ type VolumeSpec struct {
61+ // StorageClassName defined for the volume.
62+ // +kubebuilder:validation:Optional
63+ StorageClassName * string `json:"storageClassName,omitempty"`
64+
65+ // Size of the volume.
66+ // +kubebuilder:validation:default=10Gi
67+ // +kubebuilder:validation:Pattern=`^\d+(Gi|Gb|Ki|)$`
68+ // +kubebuilder:validation:Pattern=`^\d+(Ki|Mi|Gi|Ti|Pi|Ei|m|k|M|G|T|P|E)$`
69+ // +kubebuilder:validation:Required
70+ Size string `json:"size"`
3371}
3472
3573// MetabaseStatus defines the observed state of Metabase
@@ -46,7 +84,8 @@ type Metabase struct {
4684 metav1.TypeMeta `json:",inline"`
4785 metav1.ObjectMeta `json:"metadata,omitempty"`
4886
49- Spec MetabaseSpec `json:"spec,omitempty"`
87+ // +kubebuilder:validation:Required
88+ Spec MetabaseSpec `json:"spec"`
5089 Status MetabaseStatus `json:"status,omitempty"`
5190}
5291
0 commit comments