Skip to content

Commit 8fcb371

Browse files
authored
api: add webhook for nfs backup #667 (#683)
1 parent 0beb941 commit 8fcb371

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

api/v1alpha1/mysqlcluster_webhook.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package v1alpha1
1818

1919
import (
2020
"fmt"
21+
"net"
2122

2223
apierrors "k8s.io/apimachinery/pkg/api/errors"
2324
"k8s.io/apimachinery/pkg/api/resource"
@@ -49,6 +50,9 @@ func (r *MysqlCluster) ValidateCreate() error {
4950
mysqlclusterlog.Info("validate create", "name", r.Name)
5051

5152
// TODO(user): fill in your validation logic upon object creation.
53+
if err := r.validateNFSServerAddress(r); err != nil {
54+
return err
55+
}
5256
return nil
5357
}
5458

@@ -66,6 +70,9 @@ func (r *MysqlCluster) ValidateUpdate(old runtime.Object) error {
6670
if err := r.validateLowTableCase(oldCluster); err != nil {
6771
return err
6872
}
73+
if err := r.validateNFSServerAddress(oldCluster); err != nil {
74+
return err
75+
}
6976
return nil
7077
}
7178

@@ -77,6 +84,18 @@ func (r *MysqlCluster) ValidateDelete() error {
7784
return nil
7885
}
7986

87+
// TODO: Add NFSServerAddress webhook & backup schedule.
88+
func (r *MysqlCluster) validateNFSServerAddress(oldCluster *MysqlCluster) error {
89+
isIP := net.ParseIP(r.Spec.NFSServerAddress) != nil
90+
if len(r.Spec.NFSServerAddress) != 0 && !isIP {
91+
return apierrors.NewForbidden(schema.GroupResource{}, "", fmt.Errorf("nfsServerAddress should be set as IP"))
92+
}
93+
if len(r.Spec.BackupSchedule) != 0 && len(r.Spec.BackupSecretName) == 0 && !isIP {
94+
return apierrors.NewForbidden(schema.GroupResource{}, "", fmt.Errorf("backupSchedule is set without any backupSecretName or nfsServerAddress"))
95+
}
96+
return nil
97+
}
98+
8099
// Validate volume size, forbidden shrink storage size.
81100
func (r *MysqlCluster) validateVolumeSize(oldCluster *MysqlCluster) error {
82101
oldStorageSize, err := resource.ParseQuantity(oldCluster.Spec.Persistence.Size)

0 commit comments

Comments
 (0)