Skip to content

Commit 8b3969c

Browse files
authored
api: Add webhook check for sidecar image (#731)
1 parent b6c191f commit 8b3969c

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

api/v1alpha1/mysqlcluster_webhook.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,9 @@ func (r *MysqlCluster) ValidateCreate() error {
6565
if err := r.ValidMySQLTemplate(); err != nil {
6666
return err
6767
}
68+
if err := r.validateMysqlVersion(); err != nil {
69+
return err
70+
}
6871
return nil
6972
}
7073

@@ -89,6 +92,12 @@ func (r *MysqlCluster) ValidateUpdate(old runtime.Object) error {
8992
if err := r.ValidMySQLTemplate(); err != nil {
9093
return err
9194
}
95+
if err := r.validateMysqlVersion(); err != nil {
96+
return err
97+
}
98+
if err := r.validateNFSServerAddress(oldCluster); err != nil {
99+
return err
100+
}
92101
return nil
93102
}
94103

@@ -183,3 +192,21 @@ func (r *MysqlCluster) validateMysqlVersionAndImage() error {
183192
}
184193
return nil
185194
}
195+
196+
// Validate MySQL version and related image.
197+
func (r *MysqlCluster) validateMysqlVersion() error {
198+
switch r.Spec.MysqlVersion {
199+
case "5.7":
200+
if !strings.Contains(r.Spec.PodPolicy.SidecarImage, "57") {
201+
return apierrors.NewForbidden(schema.GroupResource{}, "", fmt.Errorf("spec.MysqlVersion is 5.7, but spec.PodPolicy.SidecarImage is not 5.7"))
202+
}
203+
case "8.0":
204+
if !strings.Contains(r.Spec.PodPolicy.SidecarImage, "80") {
205+
return apierrors.NewForbidden(schema.GroupResource{}, "", fmt.Errorf("spec.MysqlVersion is 8.0, but spec.PodPolicy.SidecarImage is not 8.0"))
206+
}
207+
default:
208+
return apierrors.NewForbidden(schema.GroupResource{}, "", fmt.Errorf("spec.MysqlVersion is not provided"))
209+
210+
}
211+
return nil
212+
}

0 commit comments

Comments
 (0)