Skip to content

Commit ebdd0e2

Browse files
committed
validate storageClaims in tiflash
1 parent 35f941e commit ebdd0e2

2 files changed

Lines changed: 72 additions & 0 deletions

File tree

pkg/apis/pingcap/v1alpha1/validation/validation.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,14 @@ func validateTiFlashSpec(spec *v1alpha1.TiFlashSpec, fldPath *field.Path) field.
199199
spec.StorageClaims, "storageClaims should be configured at least one item."))
200200
}
201201
allErrs = append(allErrs, validateScalePolicy(&spec.ScalePolicy, fldPath.Child("scalePolicy"))...)
202+
203+
// fix storageClaim
204+
for _, storageClaim := range spec.StorageClaims {
205+
if _, ok := storageClaim.Resources.Requests["storage"]; !ok {
206+
allErrs = append(allErrs, field.Invalid(fldPath.Child("spec.StorageClaims.Resources.Requests"),
207+
spec.StorageClaims, "spec.tiflash.storageClaims.resources[storage]: Required value."))
208+
}
209+
}
202210
return allErrs
203211
}
204212

pkg/apis/pingcap/v1alpha1/validation/validation_test.go

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -375,6 +375,62 @@ func TestValidatePumpSpec(t *testing.T) {
375375
}
376376
}
377377

378+
func TestValidateTiFlashSpec(t *testing.T) {
379+
g := NewGomegaWithT(t)
380+
tests := []struct {
381+
name string
382+
replicas int32
383+
expectedErrors int
384+
storageClaims []v1alpha1.StorageClaim
385+
}{
386+
{
387+
name: "has storage request",
388+
replicas: 1,
389+
expectedErrors: 0,
390+
storageClaims: []v1alpha1.StorageClaim{
391+
{
392+
Resources: corev1.ResourceRequirements{
393+
Requests: corev1.ResourceList{
394+
corev1.ResourceStorage: resource.MustParse("10G"),
395+
},
396+
},
397+
},
398+
},
399+
},
400+
{
401+
name: "no storage request",
402+
replicas: 1,
403+
expectedErrors: 3,
404+
storageClaims: []v1alpha1.StorageClaim{
405+
{
406+
Resources: corev1.ResourceRequirements{
407+
Requests: corev1.ResourceList{},
408+
},
409+
},
410+
{
411+
Resources: corev1.ResourceRequirements{
412+
Requests: corev1.ResourceList{},
413+
},
414+
},
415+
{
416+
Resources: corev1.ResourceRequirements{
417+
Requests: corev1.ResourceList{},
418+
},
419+
},
420+
},
421+
},
422+
}
423+
for _, tt := range tests {
424+
t.Run(tt.name, func(t *testing.T) {
425+
tc := newTidbClusterWithTiflash()
426+
tc.Spec.TiFlash.StorageClaims = tt.storageClaims
427+
err := validateTiFlashSpec(tc.Spec.TiFlash, field.NewPath("spec", "tiflash"))
428+
r := len(err)
429+
g.Expect(r).Should(Equal(tt.expectedErrors))
430+
})
431+
}
432+
}
433+
378434
func TestValidateRequestsStorage(t *testing.T) {
379435
g := NewGomegaWithT(t)
380436
tests := []struct {
@@ -542,6 +598,14 @@ func newTidbCluster() *v1alpha1.TidbCluster {
542598
return tc
543599
}
544600

601+
func newTidbClusterWithTiflash() *v1alpha1.TidbCluster {
602+
tc := newTidbCluster()
603+
tc.Spec.TiFlash = &v1alpha1.TiFlashSpec{
604+
Replicas: 1,
605+
}
606+
return tc
607+
}
608+
545609
func newService() *v1alpha1.ServiceSpec {
546610
svc := &v1alpha1.ServiceSpec{}
547611
return svc

0 commit comments

Comments
 (0)